From 8d55048f7bd7eae64a38a72ed6df816f1bbfa08c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=B8=85=E9=94=9F?= <811096647@qq.com> Date: Wed, 9 Oct 2024 14:40:18 +0800 Subject: [PATCH] git init --- .gitignore | 7 + CMakeLists.txt | 20 + Hikvision.go | 107 + go.mod | 5 + go.sum | 2 + include/library.h | 32 + library.cpp | 86 + main.go | 25 + openLibary_unix.go | 12 + openLibrary_windows.go | 13 + src/DataTime.h | 123 + src/DecisionPlatform.h | 43 + src/FormatTrans.cpp | 178 + src/FormatTrans.h | 26 + src/HIKBallCamera.cpp | 377 + src/HIKBallCamera.h | 65 + src/HIKBase.cpp | 37 + src/HIKBase.h | 33 + src/HIKNvr.cpp | 292 + src/HIKNvr.h | 59 + src/date/chrono_io.h | 34 + src/date/date.h | 8234 ++++ src/date/islamic.h | 3031 ++ src/date/iso_week.h | 1761 + src/date/julian.h | 3052 ++ src/date/ptz.h | 950 + src/date/solar_hijri.h | 3151 ++ src/date/tz.cpp | 4073 ++ src/date/tz.h | 2792 ++ src/date/tz_private.h | 316 + src/include/Hik/amd64/DataType.h | 111 + src/include/Hik/amd64/DecodeCardSdk.h | 451 + src/include/Hik/amd64/HCNetSDK.h | 52612 ++++++++++++++++++++++++ src/include/Hik/amd64/plaympeg4.h | 760 + src/include/Hik/arm64/DataType.h | 111 + src/include/Hik/arm64/DecodeCardSdk.h | 451 + src/include/Hik/arm64/HCNetSDK.h | 52608 +++++++++++++++++++++++ src/include/Hik/arm64/LinuxPlayM4.h | 955 + src/json.hpp | 23761 +++++++++++ 39 files changed, 160756 insertions(+) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 Hikvision.go create mode 100644 go.mod create mode 100644 go.sum create mode 100644 include/library.h create mode 100644 library.cpp create mode 100644 main.go create mode 100644 openLibary_unix.go create mode 100644 openLibrary_windows.go create mode 100644 src/DataTime.h create mode 100644 src/DecisionPlatform.h create mode 100644 src/FormatTrans.cpp create mode 100644 src/FormatTrans.h create mode 100644 src/HIKBallCamera.cpp create mode 100644 src/HIKBallCamera.h create mode 100644 src/HIKBase.cpp create mode 100644 src/HIKBase.h create mode 100644 src/HIKNvr.cpp create mode 100644 src/HIKNvr.h create mode 100644 src/date/chrono_io.h create mode 100644 src/date/date.h create mode 100644 src/date/islamic.h create mode 100644 src/date/iso_week.h create mode 100644 src/date/julian.h create mode 100644 src/date/ptz.h create mode 100644 src/date/solar_hijri.h create mode 100644 src/date/tz.cpp create mode 100644 src/date/tz.h create mode 100644 src/date/tz_private.h create mode 100644 src/include/Hik/amd64/DataType.h create mode 100644 src/include/Hik/amd64/DecodeCardSdk.h create mode 100644 src/include/Hik/amd64/HCNetSDK.h create mode 100644 src/include/Hik/amd64/plaympeg4.h create mode 100644 src/include/Hik/arm64/DataType.h create mode 100644 src/include/Hik/arm64/DecodeCardSdk.h create mode 100644 src/include/Hik/arm64/HCNetSDK.h create mode 100644 src/include/Hik/arm64/LinuxPlayM4.h create mode 100644 src/json.hpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..37f9834 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +/.idea +/cmake-build-debug-visual-studio +*.lib +*.dll +*.so +*.a +*.zip \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..5b48cec --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,20 @@ +cmake_minimum_required(VERSION 3.29) +project(HikNetSDKPkg) + +set(CMAKE_CXX_STANDARD 11) +include_directories("./src/include/Hik/amd64") +add_compile_definitions(Export) + +add_library(HikNetSDKPkg SHARED + library.cpp + src/HIKBallCamera.cpp + src/HIKBase.cpp + src/HIKNvr.cpp + src/FormatTrans.cpp +) + + +target_link_directories(HikNetSDKPkg PUBLIC ./HCNetSDKamd64/lib) +target_link_libraries(HikNetSDKPkg "HCNetSDK.lib") +target_link_libraries(HikNetSDKPkg "HCCore.lib") +target_link_libraries(HikNetSDKPkg "GdiPlus.lib") diff --git a/Hikvision.go b/Hikvision.go new file mode 100644 index 0000000..6089c5a --- /dev/null +++ b/Hikvision.go @@ -0,0 +1,107 @@ +package main + +import ( + "fmt" + "github.com/ebitengine/purego" + "runtime" + "unsafe" +) + +var libc uintptr + +var ( + DVR_Init func() bool + + newHIKBallCamera func() unsafe.Pointer + initBallCamera func(core unsafe.Pointer, ip string, port string, username string, password string, BallMachineType string) bool + ptzTo func(core unsafe.Pointer, Action int, P float32, T float32, Z float32) bool + ptzGet func(unsafe.Pointer, unsafe.Pointer, unsafe.Pointer, unsafe.Pointer) bool + stopBus func(unsafe.Pointer, int) bool + startBus func(unsafe.Pointer, int, int) bool + + newHIKNvr func() unsafe.Pointer + initNvr func(unsafe.Pointer, string, string, string, string, int) bool + checkTimeRegionWithMonth func(core unsafe.Pointer, year int, month int) string + checkTimeRegionWithDay func(core unsafe.Pointer, year int, month int, day int) string +) + +func init() { + var err error + libc, err = openLibrary(getSystemLibrary()) + if err != nil { + panic(err) + } + + purego.RegisterLibFunc(&DVR_Init, libc, "DVR_Init") + + purego.RegisterLibFunc(&newHIKBallCamera, libc, "NewHIKBallCamera") + purego.RegisterLibFunc(&initBallCamera, libc, "InitBallCamera") + purego.RegisterLibFunc(&ptzTo, libc, "PtzGotoPut") + purego.RegisterLibFunc(&ptzGet, libc, "PtzGet") + purego.RegisterLibFunc(&stopBus, libc, "StopBus") + purego.RegisterLibFunc(&startBus, libc, "StartBus") + + purego.RegisterLibFunc(&newHIKNvr, libc, "NewHIKNvr") + purego.RegisterLibFunc(&initNvr, libc, "InitNvr") + purego.RegisterLibFunc(&checkTimeRegionWithMonth, libc, "CheckTimeRegionWithMonth") + purego.RegisterLibFunc(&checkTimeRegionWithDay, libc, "CheckTimeRegionWithDay") + +} + +func getSystemLibrary() string { + switch runtime.GOOS { + case "linux": + return "libc.so.6" + case "windows": + return "Hikvision_Network_SDK_Packaging_Library.dll" + default: + panic(fmt.Errorf("GOOS=%s is not supported", runtime.GOOS)) + } +} + +type HIKBallCamera struct { + core unsafe.Pointer +} + +func NewHIKBallCamera() *HIKBallCamera { + return &HIKBallCamera{ + core: newHIKBallCamera(), + } +} + +func (h *HIKBallCamera) Login(ip string, port string, username string, password string, BallMachineType string) bool { + return initBallCamera(h.core, ip, port, username, password, BallMachineType) +} +func (h *HIKBallCamera) PtzTo(Action int, P, T, Z float32) bool { + return ptzTo(h.core, Action, P, T, Z) +} +func (h *HIKBallCamera) PTZGet(P, T, Z *float32) bool { + return ptzGet(h.core, unsafe.Pointer(P), unsafe.Pointer(T), unsafe.Pointer(Z)) +} +func (h *HIKBallCamera) StopBus(Direction int) bool { + return stopBus(h.core, Direction) +} +func (h *HIKBallCamera) StartBus(Direction, Speed int) bool { + return startBus(h.core, Direction, Speed) +} + +type HIKNvr struct { + core unsafe.Pointer +} + +func NewHIKNvr() *HIKNvr { + return &HIKNvr{ + core: newHIKNvr(), + } +} + +func (h *HIKNvr) Login(ip string, port string, username string, password string, nvrType int) bool { + return initNvr(h.core, ip, port, username, password, nvrType) +} + +func (h *HIKNvr) CheckTimeRegionWithMonth(year int, month int) string { + return checkTimeRegionWithMonth(h.core, year, month) +} +func (h *HIKNvr) CheckTimeRegionWithDay(year int, month int, day int) string { + return checkTimeRegionWithDay(h.core, year, month, day) +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..f2afef3 --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module Hik_GoC + +go 1.23.1 + +require github.com/ebitengine/purego v0.8.0 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..263a2f5 --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +github.com/ebitengine/purego v0.8.0 h1:JbqvnEzRvPpxhCJzJJ2y0RbiZ8nyjccVUrSM3q+GvvE= +github.com/ebitengine/purego v0.8.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= diff --git a/include/library.h b/include/library.h new file mode 100644 index 0000000..37ea326 --- /dev/null +++ b/include/library.h @@ -0,0 +1,32 @@ +#ifndef HIKVISION_NETWORK_SDK_PACKAGING_LIBRARY_LIBRARY_H +#define HIKVISION_NETWORK_SDK_PACKAGING_LIBRARY_LIBRARY_H + +#ifdef Export +#define Omnimatrix __declspec(dllexport) +#else +#define Omnimatrix __declspec(dllimport) +#endif + + +#ifdef __cplusplus +extern "C" { +#endif + Omnimatrix bool DVR_Init(); + + Omnimatrix void* NewHIKBallCamera(); + Omnimatrix bool InitBallCamera(void* PtrHIKBallCamera,const char* ip, const char* port,const char* username,const char* password,const char* BallMachineType); + Omnimatrix bool PtzGotoPut(void* PtrHIKBallCamera,int Action, float P, float T, float Z); + Omnimatrix bool PtzGet(void* PtrHIKBallCamera,void *P, void *T, void *Z); + Omnimatrix bool StopBus(void* PtrHIKBallCamera,int direction); + Omnimatrix bool StartBus(void* PtrHIKBallCamera,int direction,int speed); + + Omnimatrix void* NewHIKNvr(); + Omnimatrix bool InitNvr(void* PtrHIKNvr,char* ip, char* port, char* username, char* password, int channel); + Omnimatrix char* CheckTimeRegionWithMonth(void* PtrHIKNvr,int year,int month); + Omnimatrix char* CheckTimeRegionWithDay(void* PtrHIKNvr,int year,int month,int day); + +#ifdef __cplusplus +} +#endif + +#endif //HIKVISION_NETWORK_SDK_PACKAGING_LIBRARY_LIBRARY_H diff --git a/library.cpp b/library.cpp new file mode 100644 index 0000000..df023de --- /dev/null +++ b/library.cpp @@ -0,0 +1,86 @@ +#include "include/library.h" +#include "./src/HIKBallCamera.h" +#include "src/HIKNvr.h" +#include + +bool DVR_Init(){ + return HK_DVR_Init(); +} + +void* NewHIKBallCamera() { + return new HIKBallCamera(); +} + +bool InitBallCamera(void* PtrHIKBallCamera,const char* ip, const char* port,const char* username,const char* password,const char* BallMachineType){ + auto* HIKBallCameraObj = (HIKBallCamera*)PtrHIKBallCamera; + return HIKBallCameraObj->InitBallCamera(ip,port,username,password,BallMachineType); +} + +bool PtzGotoPut(void* PtrHIKBallCamera,int Action, float P, float T, float Z){ + auto* HIKBallCameraObj = (HIKBallCamera*)PtrHIKBallCamera; + return HIKBallCameraObj->PtzGotoPut(Action,P,T,Z); +} + +bool PtzGet(void* PtrHIKBallCamera,void *P, void *T, void *Z){ + auto* HIKBallCameraObj = (HIKBallCamera*)PtrHIKBallCamera; + return HIKBallCameraObj->PtzGet((float*)P,(float*)T,(float*)Z); +} + +bool StopBus(void* PtrHIKBallCamera,int direction){ + auto* HIKBallCameraObj = (HIKBallCamera*)PtrHIKBallCamera; + return HIKBallCameraObj->StopBus(direction); +} + +bool StartBus(void* PtrHIKBallCamera,int direction,int speed){ + auto* HIKBallCameraObj = (HIKBallCamera*)PtrHIKBallCamera; + return HIKBallCameraObj->StartBus(direction,speed); +} + +void* NewHIKNvr(){ + return new HIKNvr(); +} + +bool InitNvr(void* PtrHIKNvr,char* ip, char* port, char* username, char* password, int channel){ + auto* HIKNvrObj = (HIKNvr*)PtrHIKNvr; + return HIKNvrObj->InitNvr(ip,port,username,password,channel); +} + +char* CheckTimeRegionWithMonth(void* PtrHIKNvr,int year,int month){ + auto* HIKNvrObj = (HIKNvr*)PtrHIKNvr; + + DateTime select_time; + select_time.year() = year; + select_time.month() = month; + std::string res; + + //check the time region with month + int nRet = 0; + std::vector available_date_vec; + nRet = HIKNvrObj->CheckTimeRegionWithMonth(select_time, available_date_vec); + + if (nRet == 0) + { + res = HIKNvrObj->TimeToJson(select_time, &available_date_vec).dump(); + } + char* cString = new char[res.size() + 1]; + strcpy_s(cString, res.size()+1,res.c_str()); + return cString; +} + +char* CheckTimeRegionWithDay(void* PtrHIKNvr,int year,int month,int day){ + auto* HIKNvrObj = (HIKNvr*)PtrHIKNvr; + DateTime select_time; + select_time.year() = year; + select_time.month() = month; + select_time.day() = day; + std::string res; + std::vector available_time_vec; + int nRet = HIKNvrObj->CheckTimeRegionWithDay(select_time, available_time_vec); + if (nRet == 0) + { + res = HIKNvrObj->TimeToJsonInDay(select_time, &available_time_vec).dump(); + } + char* cString = new char[res.size() + 1]; + strcpy_s(cString, res.size()+1,res.c_str()); + return cString; +} \ No newline at end of file diff --git a/main.go b/main.go new file mode 100644 index 0000000..d3b4462 --- /dev/null +++ b/main.go @@ -0,0 +1,25 @@ +package main + +import "fmt" + +func main() { + SdkInitState := DVR_Init() + println(SdkInitState) + //BallCamera := NewHIKBallCamera() + //res := BallCamera.Login("192.168.211.49", "8000", "admin", "Max123456", "BuKongQiu") + //if !res { + // fmt.Println("Login Failed") + // //return + //} + //var P, T, Z float32 + //println(BallCamera.PTZGet(&P, &T, &Z)) + Nvr := NewHIKNvr() + res := Nvr.Login("192.168.211.124", "8000", "admin", "guanyaokeji8520", 1) + if !res { + fmt.Println("Login Failed") + return + } + fmt.Println(Nvr.CheckTimeRegionWithMonth(2024, 10)) + fmt.Println(Nvr.CheckTimeRegionWithDay(2024, 10, 8)) + +} diff --git a/openLibary_unix.go b/openLibary_unix.go new file mode 100644 index 0000000..9be1fd1 --- /dev/null +++ b/openLibary_unix.go @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: 2023 The Ebitengine Authors + +//go:build darwin || freebsd || linux + +package main + +import "github.com/ebitengine/purego" + +func openLibrary(name string) (uintptr, error) { + return purego.Dlopen(name, purego.RTLD_NOW|purego.RTLD_GLOBAL) +} diff --git a/openLibrary_windows.go b/openLibrary_windows.go new file mode 100644 index 0000000..3f3270a --- /dev/null +++ b/openLibrary_windows.go @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: 2023 The Ebitengine Authors + +package main + +import "syscall" + +func openLibrary(name string) (uintptr, error) { + // Use [syscall.LoadLibrary] here to avoid external dependencies (#270). + // For actual use cases, [golang.org/x/sys/windows.NewLazySystemDLL] is recommended. + handle, err := syscall.LoadLibrary(name) + return uintptr(handle), err +} diff --git a/src/DataTime.h b/src/DataTime.h new file mode 100644 index 0000000..c27cfef --- /dev/null +++ b/src/DataTime.h @@ -0,0 +1,123 @@ +#pragma once +#include +#include + +// +class DateTime +{ +public: + DateTime(int year, int month, int day, int hour, int minute, int second) + { + SetDateTime(year, month, day, hour, minute, second); + } + + DateTime() + { + SetDateTime(0, 0, 0, 0, 0, 0); + } + + ~DateTime() {} + + // Set date and time + void SetDateTime(int year, int month, int day, int hour, int minute, int second) + { + m_year = year; + m_month = month; + m_day = day; + m_hour = hour; + m_minute = minute; + m_second = second; + } + + //copy constructor + DateTime(const DateTime& other) + { + m_year = other.m_year; + m_month = other.m_month; + m_day = other.m_day; + m_hour = other.m_hour; + m_minute = other.m_minute; + m_second = other.m_second; + } + + DateTime& operator=(const DateTime& other) + { + m_year = other.m_year; + m_month = other.m_month; + m_day = other.m_day; + m_hour = other.m_hour; + m_minute = other.m_minute; + m_second = other.m_second; + return *this; + } + + // Get date and time + std::string GetDateTime() + { + return std::to_string(m_year) + "-" + std::to_string(m_month) + "-" + std::to_string(m_day) + " " + std::to_string(m_hour) + ":" + std::to_string(m_minute) + ":" + std::to_string(m_second); + } + + // 比较两个对象 + int CompareTo(DateTime other) + { + if (m_year != other.m_year) + { + return m_year < other.m_year ? -1 : 1; + } + if (m_month != other.m_month) + { + return m_month < other.m_month ? -1 : 1; + } + if (m_day != other.m_day) + { + return m_day < other.m_day ? -1 : 1; + } + if (m_hour != other.m_hour) + { + return m_hour < other.m_hour ? -1 : 1; + } + if (m_minute != other.m_minute) + { + return m_minute < other.m_minute ? -1 : 1; + } + if (m_second != other.m_second) + { + return m_second < other.m_second ? -1 : 1; + } + return 0; + } + + // < Operator overwrite + bool operator<(const DateTime& other) + { + return CompareTo(other) < 0; + } + + // > Operator overwrite + bool operator>(const DateTime& other) + { + return CompareTo(other) > 0; + } + + // == Operator overwrite + bool operator==(const DateTime& other) + { + return CompareTo(other) == 0; + } + + // 访问私有成员 + int& year() { return m_year; } + int& month() { return m_month; } + int& day() { return m_day; } + int& hour() { return m_hour; } + int& minute() { return m_minute; } + int& second() { return m_second; } + +private: + int m_year; + int m_month; + int m_day; + int m_hour; + int m_minute; + int m_second; +}; \ No newline at end of file diff --git a/src/DecisionPlatform.h b/src/DecisionPlatform.h new file mode 100644 index 0000000..b561fc2 --- /dev/null +++ b/src/DecisionPlatform.h @@ -0,0 +1,43 @@ +#pragma once + +#include +#include + +#define SLEEP(x) std::this_thread::sleep_for(std::chrono::seconds(x)); + +#ifdef _WIN32_ + +#include + + +#ifdef OmnimatrixExport +#define Omnimatrix __declspec(dllexport) +#else +#define Omnimatrix __declspec(dllimport) +#endif + +#define STRCPY(Dst, Len, Src) strcpy_s(Dst, Len, Src) + +#define LOCAL_TIME(in, out) localtime_s(in,out); + +#define LOCAL_MIN MIN(a,b) +#define LOCAL_MAX MAX(a,b) + +#endif +#ifdef _LINUX_ + +#include "unistd.h" +#include + + +#ifdef Omnimatrix +#define Omnimatrix __attribute__((visibility("default"))) +#else +#define Omnimatrix __attribute__((visibility("default"))) +#endif + +#define LOCAL_TIME(in, out) localtime_r(out,in ) + +#define STRCPY(Dst,Len ,Src ) strcpy(Dst, Src) + +#endif diff --git a/src/FormatTrans.cpp b/src/FormatTrans.cpp new file mode 100644 index 0000000..890eb2f --- /dev/null +++ b/src/FormatTrans.cpp @@ -0,0 +1,178 @@ +#include +#include +#include +#include "FormatTrans.h" + + +float HEX2DEC(WORD Hex) +{ + BYTE bai = Hex >> 12; + Hex = Hex - bai * std::pow(16, 3); + BYTE shi = Hex >> 8; + Hex = Hex - shi * pow(16, 2); + BYTE ge = Hex >> 4; + Hex = Hex - ge * pow(16, 1); + BYTE xiao = Hex; + + return bai * pow(10, 2) + shi * pow(10, 1) + ge * pow(10, 0) + xiao * pow(10, -1); +} + + +WORD DEC2HEX(float Dec) +{ + BYTE bai = Dec / pow(10, 2); + Dec = Dec - bai * pow(10, 2); + BYTE shi = Dec / pow(10, 1); + Dec = Dec - shi * pow(10, 1); + BYTE ge = Dec / pow(10, 0); + Dec = Dec - ge * pow(10, 0); + BYTE xiao = Dec / pow(10, -1); + + return bai * pow(16, 3) + shi * pow(16, 2) + ge * pow(16, 1) + xiao * pow(16, 0); +} + +/*********************************** +function: IsHexChar +desc: 判断字符是否在0-9,a-f之间 +input: char-字符 +Output: +return: 字符索引,如8-8,a-10,如果 + 不是,返回-1 +***********************************/ +int IsHexChar(char hc) +{ + if('0'<=hc && hc<='9') + return (int(hc)-int('0')); + else if('a'<=hc && hc<='f') + return (int(hc)-int('a')+10); + else if('A'<=hc && hc<='F') + return (int(hc)-int('A')+10); + return -1; +} + +/************************************** +function: Hex2Char +desc: 16进制数转化为字符 +Input: hex-16进制,字符串形式,2字符 +Output: +return: ascii字符 +**************************************/ +unsigned char Hex2Char(const std::string &hex) +{ + assert(hex.length() == 2); + int high = IsHexChar(hex[0]); + int low = IsHexChar(hex[1]); + if(high == -1 || low == -1) + return '\0'; + int asc = high*16+low; + // char b = toascii(asc); + return asc; +} + +/**************************** +function: Hex2String +desc: 16进制字符串转化为ascii字符串 +Input: hex-16进制字符串 +Output: +return: ascii字符串 +*****************************/ +std::string Hex2String(const std::string &hex) +{ + assert(hex.length()%2 == 0); + std::string hstr; + for(int i=0; i(value); + if (intValue < 0) { + intValue = 256 + intValue; + } + std::stringstream ss; + ss << std::setw(2) << std::setfill('0') << std::hex << std::uppercase << intValue; + return ss.str(); +} + + +std::string verify(const std::string& hexStr){ + // 准备字符串,去掉空格和0x + std::string preparedStr = PrepareHexString(hexStr); + + // 计算校验码 + int sum = 0; + for (size_t i = 1; i < 6; i += 1) { + int temp = int(static_cast(preparedStr[i])); + sum += temp; + } + + // 取模并转换为16进制 + int checksum = sum % 0x100; + std::string hex = decimalToHexadecimal(checksum); + if (hex.length() == 1){ + hex = "0" + hex; + } + return hex; +} \ No newline at end of file diff --git a/src/FormatTrans.h b/src/FormatTrans.h new file mode 100644 index 0000000..2b2fa4b --- /dev/null +++ b/src/FormatTrans.h @@ -0,0 +1,26 @@ +// 用于为海康球机PTZ值转换的函数 +#pragma once +#include "DecisionPlatform.h" +#include +#include + +typedef unsigned char BYTE; +typedef unsigned short WORD; + +float HEX2DEC(WORD Hex); + + +WORD DEC2HEX(float Dec); + +std::string Hex2String(const std::string &hex); + +std::string PrepareHexString(std::string str); + +// 十进制转十六进制 +std::string decimalToHexadecimal(int decimal); +// 十六进制转十进制 +int hexadecimalToDecimal(const std::string& hexadecimal); + +std::string charToHex(char value); + +std::string verify(const std::string& hexStr); \ No newline at end of file diff --git a/src/HIKBallCamera.cpp b/src/HIKBallCamera.cpp new file mode 100644 index 0000000..bfa98a2 --- /dev/null +++ b/src/HIKBallCamera.cpp @@ -0,0 +1,377 @@ +#include "HIKBallCamera.h" +#include "FormatTrans.h" +#include +#include + +HIKBallCamera::HIKBallCamera(){ + +}; + +struct PTZ{ + float P; + float T; + float Z; +}; + +PTZ PTZDATA; + +std::vector velocity = {"0a","14","1e","28","32","3c","ff"}; + +bool HIKBallCamera::InitBallCamera(std::string ip, std::string port, std::string username, std::string password, std::string BallMachineType) +{ + int res = Login(ip, port, username, password); + if (res != 0){ + std::cout << "Incorrect Login" << std::endl; + return false; + } + + m_Channel = DeviceInfo.byStartChan; + this->BallMachineType = BallMachineType; + + //建立透明通道 + NET_DVR_SERIALSTART_V40 struSerialParam = { 0 }; + struSerialParam.dwSize = sizeof(struSerialParam); + struSerialParam.dwSerialType = 2;//1:232串口;2:485串口 + struSerialParam.bySerialNum = 1;//串口编号(设备支持多个RS232串口时有效) + lTranHandle = NET_DVR_SerialStart_V40(LoginID, &struSerialParam, sizeof(struSerialParam), g_fSerialDataCallBack, NULL);//设置回调函数获取透传数据 + if (lTranHandle < 0) + { + printf("NET_DVR_SerialStart error, %d\n", NET_DVR_GetLastError()); + NET_DVR_Logout(LoginID); + NET_DVR_Cleanup(); + return false; + } + + return true; +} + +//回调透传数据函数的外部实现 +void CALLBACK HIKBallCamera::g_fSerialDataCallBack(LONG lSerialHandle, LONG lChannel, char *pRecvDataBuffer, DWORD dwBufSize, void *pUser) +{ + std::string type = charToHex(pRecvDataBuffer[3]); + if (type=="59"){ + PTZDATA.P = float(hexadecimalToDecimal(charToHex(pRecvDataBuffer[4])+charToHex(pRecvDataBuffer[5])))/100.0; + }else if (type == "5B"){ + PTZDATA.T = float(hexadecimalToDecimal(charToHex(pRecvDataBuffer[4])+charToHex(pRecvDataBuffer[5])))/100.0; + }else if (type == "5D"){ + PTZDATA.Z = float(hexadecimalToDecimal(charToHex(pRecvDataBuffer[4])+charToHex(pRecvDataBuffer[5])))/100.0; + } +} + +bool HIKBallCamera::PtzControl(int command, int stop, int speed) +{ + bool Ret = false; + //use HIK SDK to control the ball camera + Ret = NET_DVR_PTZControlWithSpeed_Other(LoginID,m_Channel, command, stop, speed); + + //get the error code + if(!Ret) + { + std::cout << "PTZ control failed! Error code: " << NET_DVR_GetLastError() << std::endl; + return false; + } + return true; +} + +bool HIKBallCamera::PtzControlLeft(int speed,int state) +{ + if (BallMachineType=="BuKongQiu") { + std::string buf = "ff 01 00 04 "+velocity[speed - 1]+" 00"; + buf = buf +" "+ verify(buf); + SerialSend(PrepareHexString(buf)); + return true; + }else{ + return PtzControl(PAN_LEFT, state, speed); + } +} + +bool HIKBallCamera::PtzControlRight(int speed,int state) +{ + if (BallMachineType=="BuKongQiu") { + std::string buf = "ff 01 00 02 "+velocity[speed - 1]+" 00"; + buf = buf +" "+ verify(buf); + SerialSend(PrepareHexString(buf)); + return true; + }else{ + return PtzControl(PAN_RIGHT, 0, speed); + } +} + +bool HIKBallCamera::PtzControlUp(int speed,int state) +{ + if (BallMachineType=="BuKongQiu") { + std::string buf = "ff 01 00 08 00 "+velocity[speed - 1]; + buf = buf +" "+ verify(buf); + SerialSend(PrepareHexString(buf)); + return true; + }else{ + return PtzControl(TILT_UP, 0, speed); + } +} + +bool HIKBallCamera::PtzControlDown(int speed,int state) +{ + if (BallMachineType=="BuKongQiu") { + std::string buf = "ff 01 00 10 00 "+velocity[speed - 1]; + buf = buf +" "+ verify(buf); + SerialSend(PrepareHexString(buf)); + return true; + }else{ + return PtzControl(TILT_DOWN, 0, speed); + } +} + +bool HIKBallCamera::PtzControlZoomIn(int speed,int state) +{ + if (BallMachineType=="BuKongQiu") { + SerialSend(PrepareHexString("ff 01 00 20 00 00 21")); + return true; + }else{ + return PtzControl(ZOOM_IN, 0, speed); + } +} + +bool HIKBallCamera::PtzControlZoomOut(int speed,int state) +{ + if (BallMachineType=="BuKongQiu") { + SerialSend(PrepareHexString("ff 01 00 40 00 00 41")); + return true; + }else{ + return PtzControl(ZOOM_OUT, 0, speed); + } +} + + +bool HIKBallCamera::PtzControlFocusAdd(int speed,int state){ + if (BallMachineType=="BuKongQiu") { + std::cout << "ff 01 01 00 00 00 02" << std::endl; + SerialSend(PrepareHexString("ff 01 01 00 00 00 02")); + return true; + }else{ + return PtzControl(ZOOM_OUT, 1, speed); + } +} + +bool HIKBallCamera::PtzControlFocusSub(int speed,int state){ + if (BallMachineType=="BuKongQiu") { + std::cout << "ff 01 00 80 00 00 81" << std::endl; + SerialSend(PrepareHexString("ff 01 00 80 00 00 81")); + return true; + }else{ + return PtzControl(ZOOM_OUT, 1, speed); + } +} + +bool HIKBallCamera::PtzControlStop(){ + SerialSend(PrepareHexString("ff 01 00 00 00 00 01")); + return true; +} + + +bool HIKBallCamera::PtzControlUpLeft(int speed,int state) +{ + if (BallMachineType=="BuKongQiu") { + std::string buf = "ff 01 00 0c "+velocity[speed - 1]+" " + velocity[speed - 1]; + buf = buf +" "+ verify(buf); + SerialSend(PrepareHexString(buf)); + return true; + }else{ + return PtzControl(UP_LEFT, state, speed); + } +} + +bool HIKBallCamera::PtzControlUpRight(int speed,int state) +{ + if (BallMachineType=="BuKongQiu") { + std::string buf = "ff 01 00 0a "+velocity[speed - 1]+" " + velocity[speed - 1]; + buf = buf +" "+ verify(buf); + SerialSend(PrepareHexString(buf)); + return true; + }else{ + return PtzControl(UP_RIGHT, 0, speed); + } +} + +bool HIKBallCamera::PtzControlDownLeft(int speed,int state) +{ + if (BallMachineType=="BuKongQiu") { + std::string buf = "ff 01 00 14 "+velocity[speed - 1]+" " + velocity[speed - 1]; + buf = buf +" "+ verify(buf); + SerialSend(PrepareHexString(buf)); + return true; + }else{ + return PtzControl(DOWN_LEFT, 0, speed); + } +} + +bool HIKBallCamera::PtzControlDownRight(int speed,int state) +{ + if (BallMachineType=="BuKongQiu") { + std::string buf = "ff 01 00 12 "+velocity[speed - 1]+" " + velocity[speed - 1]; + buf = buf +" "+ verify(buf); + SerialSend(PrepareHexString(buf)); + return true; + }else{ + return PtzControl(DOWN_RIGHT, 0, speed); + } +} + +std::string addSpacesEveryTwoWords(const std::string& hex) { + std::ostringstream result; + + int len = hex.length(); + // 如果十六进制字符串的长度是奇数,则在前面添加一个 0 + std::string paddedHex = (len % 2 == 1) ? "0" + hex : hex; + // 遍历字符串,每两个字符分割一次 + for (size_t i = 0; i < paddedHex.length(); i += 2) { + if (i != 0) { + result << " "; + } + result << paddedHex.substr(i, 2); + } + return result.str(); +} +std::string padding(const std::string& hex){ + if (hex.length()==2){ + return "00 "+hex; + } else{ + return hex; + } +} + + +// PTZ 跳转到指定位置 +bool HIKBallCamera::PtzGotoPut(int Action, float P, float T, float Z) +{ + if (BallMachineType=="BuKongQiu"){ + std::string pHex = decimalToHexadecimal(P * 100); + pHex = padding(addSpacesEveryTwoWords(pHex)); + std::string tHex = decimalToHexadecimal(T * 100); + tHex = padding(addSpacesEveryTwoWords(tHex)); + std::string zHex = decimalToHexadecimal(Z * 100); + zHex = padding(addSpacesEveryTwoWords(zHex)); + std::string pBuf = "ff 01 00 4b "+ pHex; + std::string tBuf = "ff 01 00 4d "+ tHex; + std::string zBuf = "ff 01 00 4f "+ zHex; + pBuf = pBuf+" "+verify(pBuf); + tBuf = tBuf+" "+verify(tBuf); + zBuf = zBuf+" "+verify(zBuf); + switch (Action) { + case 1: + SerialSend(PrepareHexString(pBuf)); // 设置 P + SerialSend(PrepareHexString(tBuf)); // 设置 T + SerialSend(PrepareHexString(zBuf)); // 设置 Z + break; + case 2: + SerialSend(PrepareHexString(pBuf)); // 设置 P + break; + case 3: + SerialSend(PrepareHexString(tBuf)); // 设置 T + break; + case 4: + SerialSend(PrepareHexString(zBuf)); // 设置 Z + break; + case 5: + SerialSend(PrepareHexString(pBuf)); // 设置 P + SerialSend(PrepareHexString(tBuf)); // 设置 T + break; + default: + break; + } + return true; + }else{ + NET_DVR_PTZPOS ptzPosCurrent; + ptzPosCurrent.wPanPos = DEC2HEX(P); + ptzPosCurrent.wTiltPos = DEC2HEX(T); + ptzPosCurrent.wAction = 5; + + bool b = NET_DVR_SetDVRConfig(LoginID, NET_DVR_SET_PTZPOS, m_Channel, &ptzPosCurrent, sizeof(NET_DVR_PTZPOS)); + return b; + } +} +bool HIKBallCamera::SerialSend(const std::string& hex){ + char m_DataBuf[50]; + int m_DataLen; + int len = hex.length(); + m_DataLen = len<1024 ? len : 1024; + memcpy(m_DataBuf,hex.c_str(),m_DataLen); + return NET_DVR_SerialSend(lTranHandle,1, m_DataBuf, m_DataLen); +} + +bool HIKBallCamera::PtzGet(float* posP, float* posT, float* posZ) { + if (BallMachineType=="BuKongQiu"){ + SerialSend(PrepareHexString("ff 01 00 51 00 00 52")); + SerialSend(PrepareHexString("ff 01 00 53 00 00 54")); + SerialSend(PrepareHexString("ff 01 00 55 00 00 56")); + SLEEP(1); + *posP = PTZDATA.P; + *posT = PTZDATA.T; + *posZ = PTZDATA.Z; + return true; + }else{ + NET_DVR_PTZPOS ptzPosCurrent; + DWORD dwtmp; + bool b = NET_DVR_GetDVRConfig(LoginID, NET_DVR_GET_PTZPOS, m_Channel, &ptzPosCurrent, sizeof(NET_DVR_PTZPOS),&dwtmp); + float P = HEX2DEC(ptzPosCurrent.wPanPos); + float T = HEX2DEC(ptzPosCurrent.wTiltPos); + float Z = HEX2DEC(ptzPosCurrent.wZoomPos); + posP = &P; + posT = &T; + posZ = &Z; + return b; + } +} + +bool HIKBallCamera::CmdSwitch(int direction,int speed,int state){ + bool Res = false; + switch (direction) { + case PTZ_LEFT: + Res = PtzControlLeft(speed,state); + break; + case PTZ_RIGHT: + Res = PtzControlRight(speed,state); + break; + case PTZ_UP: + Res = PtzControlUp(speed,state); + break; + case PTZ_DOWN: + Res = PtzControlDown(speed,state); + break; + case PTZ_UP_LEFT: + Res = PtzControlUpLeft(speed,state); + break; + case PTZ_UP_RIGHT: + Res = PtzControlUpRight(speed,state); + break; + case PTZ_DOWN_LEFT: + Res = PtzControlDownLeft(speed,state); + break; + case PTZ_DOWN_RIGHT: + Res = PtzControlDownRight(speed,state); + break; + case PTZ_ZOOM_IN: + Res = PtzControlZoomIn(speed,state); + break; + case PTZ_ZOOM_OUT: + Res = PtzControlZoomOut(speed,state); + break; + case PTZ_Focus_Far: + Res = PtzControlFocusSub(speed,state); + break; + case PTZ_Focus_Near: + Res = PtzControlFocusAdd(speed,state); + break; + } + return Res; +} + +bool HIKBallCamera::StopBus(int direction) { + if (BallMachineType=="BuKongQiu"){ + return PtzControlStop(); + } + return CmdSwitch(direction,0,1); +} + +bool HIKBallCamera::StartBus(int direction, int speed) { + return CmdSwitch(direction,speed,0); +} diff --git a/src/HIKBallCamera.h b/src/HIKBallCamera.h new file mode 100644 index 0000000..16c44a7 --- /dev/null +++ b/src/HIKBallCamera.h @@ -0,0 +1,65 @@ +#pragma once +#include "HIKBase.h" + +#define PTZ_LEFT 1 // 云台向左 +#define PTZ_RIGHT 2 // 云台向右 +#define PTZ_UP 3 // 云台向上 +#define PTZ_DOWN 4 // 云台向下 +#define PTZ_UP_LEFT 5 // 云台左上 +#define PTZ_UP_RIGHT 6 // 云台右上 +#define PTZ_DOWN_LEFT 7 // 云台左下 +#define PTZ_DOWN_RIGHT 8 // 云台右下 +#define PTZ_ZOOM_IN 9 // 云台放大 +#define PTZ_ZOOM_OUT 10 // 云台缩小 +#define PTZ_Focus_Far 11 // 云台聚焦+ +#define PTZ_Focus_Near 12 // 云台聚焦- + +class HIKBallCamera : public HIKBase +{ +public: + HIKBallCamera(); + bool InitBallCamera(std::string ip, std::string port, std::string username, std::string password, std::string BallMachineType); + bool PtzGotoPut(int Action, float P, float T, float Z = 0); + bool PtzGet(float *posP, float *posT, float *posZ); + bool StopBus(int direction); + bool StartBus(int direction,int speed); + +private: + LONG lTranHandle; + std::string BallMachineType; + int m_Channel; + +private: + bool PtzControlUp(int speed,int state); + bool PtzControlDown(int speed,int state); + bool PtzControlLeft(int speed,int state); + bool PtzControlRight(int speed,int state); + bool PtzControlUpLeft(int speed,int state); + bool PtzControlUpRight(int speed,int state); + bool PtzControlDownLeft(int speed,int state); + bool PtzControlDownRight(int speed,int state); + bool PtzControlZoomIn(int speed,int state); + bool PtzControlZoomOut(int speed,int state); + bool PtzControlFocusAdd(int speed,int state); + bool PtzControlFocusSub(int speed,int state); +private: + /** + * @brief 使用海康485透传接口发送透传数据 + * + * @param hex 十六进制透传数据字符串 + **/ + bool SerialSend(const std::string& hex); +private: + /** + * @brief PTZ 控制相关的 Switch 集合 + * + * @param direction PTZ 方向 + * @param speed PTZ 速度 + * @param state PTZ 启停状态 + **/ + bool CmdSwitch(int direction,int speed,int state); + bool PtzControl(int command, int stop, int speed); + bool PtzControlStop(); + void static CALLBACK g_fSerialDataCallBack(LONG lSerialHandle, LONG lChannel, char *pRecvDataBuffer, DWORD dwBufSize, void *pUser); + +}; diff --git a/src/HIKBase.cpp b/src/HIKBase.cpp new file mode 100644 index 0000000..025a4a2 --- /dev/null +++ b/src/HIKBase.cpp @@ -0,0 +1,37 @@ +#include "HIKBase.h" +#include +#include +#include + +HIKBase::HIKBase() +{ + memset(&DeviceInfo, 0, sizeof(DeviceInfo)); +} + + +HIKBase::~HIKBase() = default; + +int HIKBase::Login(std::string ip, std::string port, std::string username, std::string password) +{ + Ip = ip; + Port = port; + Username = username; + Password = password; + + LoginID = NET_DVR_Login_V30((char *)Ip.c_str(), atoi(Port.c_str()), (char *)Username.c_str(), (char *)Password.c_str(), &DeviceInfo); + std::cout << LoginID <= 0) + { + NET_DVR_Logout(LoginID); + LoginID = -1; + } +} + +bool HK_DVR_Init(){ + return NET_DVR_Init(); +} \ No newline at end of file diff --git a/src/HIKBase.h b/src/HIKBase.h new file mode 100644 index 0000000..490e97a --- /dev/null +++ b/src/HIKBase.h @@ -0,0 +1,33 @@ +#pragma once +#include +#include +#include +#include + +class HIKBase +{ +public: + HIKBase(); + ~HIKBase(); + + + int Login(std::string ip, std::string port, std::string username, std::string password); + void Logout(); + +protected: + LONG LoginID; + NET_DVR_DEVICEINFO_V30 DeviceInfo; + +private: + //Hik login info + std::string Ip;//Hik Device IP + std::string Port;//Hik Device Port + std::string Username;//Hik Device Username + std::string Password;//Hik Device Password + + //after login, Hik Device ID + int DeviceID; + +}; + +bool HK_DVR_Init(); \ No newline at end of file diff --git a/src/HIKNvr.cpp b/src/HIKNvr.cpp new file mode 100644 index 0000000..50746a2 --- /dev/null +++ b/src/HIKNvr.cpp @@ -0,0 +1,292 @@ +#define NOMINMAX +#include "./date/date.h" +#include "HIKNvr.h" +#include +#include +#include + +HIKNvr::HIKNvr(){ + +} + +/** + * @brief Initializes the NVR with the given login information and channel. + * + * @param ip The IP address of the NVR. + * @param port The port number of the NVR. + * @param username The username for logging into the NVR. + * @param password The password for logging into the NVR. + * @param channel The channel number to set for the NVR. + */ +bool HIKNvr::InitNvr(std::string ip, std::string port, std::string username, std::string password, int channel) +{ + if (Login(ip, port, username, password) == 0){ + m_Channel = channel + 32; + return true; + } + return false; +} + +bool HIKNvr::GetNvrUTCDiff(){ + NET_DVR_NETAPPCFG struNAC = {0}; + DWORD ZoneSize = 0; + NET_DVR_GetDVRConfig(LoginID, NET_DVR_GET_NETAPPCFG, 0, &struNAC, sizeof(NET_DVR_NETAPPCFG), &ZoneSize); + int nDiffHour = struNAC.struNtpClientParam.cTimeDifferenceH; + int nDiffMin = struNAC.struNtpClientParam.cTimeDifferenceM; + + nDiffTotalMin = (nDiffHour < 0 ? -1 : 1) * (abs(nDiffHour) * 60 + nDiffMin); + return true; +} + +/** + * @brief 用年和月查询日 + * + * @param select_time The selected time. + * @param available_date_vec The available date vector. + * @return true if the time region is found, false otherwise. + */ +int HIKNvr::CheckTimeRegionWithMonth(DateTime select_time,std::vector& available_date_vec) +{ + DateTime DateNow(select_time); + + // 查当月 + NET_DVR_MRD_SEARCH_PARAM struSearchParam = {0}; + NET_DVR_MRD_SEARCH_RESULT struSearchResult = {0}; + struSearchParam.dwSize = sizeof(NET_DVR_MRD_SEARCH_PARAM); + struSearchParam.wYear = DateNow.year(); + struSearchParam.byMonth = DateNow.month(); + struSearchParam.struStreamInfo.dwChannel = m_Channel; // channel + + struSearchParam.byLocalOrUTC = true; // 0:local time, 1:UTC time (时区) + struSearchParam.byDrawFrame = 0; // 0:不抽帧,1:抽帧 + struSearchParam.byStreamType = 0;// 0:主码流,1:子码流 + // 查记录 + if (!NET_DVR_GetDeviceConfig(this->LoginID, NET_DVR_GET_MONTHLY_RECORD_DISTRIBUTION, 0, &struSearchParam, sizeof(struSearchParam), NULL, &struSearchResult, sizeof(struSearchResult))) + { + int n = NET_DVR_GetLastError(); + return n == NET_DVR_NETWORK_FAIL_CONNECT ? NVR_ERR_CONNECT_7 : NVR_ERR_HIK; + } + + for (int i = 0; i < 32; i++) + { + if (struSearchResult.byRecordDistribution[i]) + { + available_date_vec.push_back(i + 1); + } + } + return NVR_SUC; +} + + +/** + * @brief Check if a given time falls within the available time range for the current day. + * + * @param select_time The time to check. + * @param available_time_vec A vector of available time ranges for the current day. + * @return true if the given time falls within the available time range, false otherwise. + */ +int HIKNvr::CheckTimeRegionWithDay(DateTime select_time, std::vector &available_time_vec) +{ + int nRet = NVR_SUC; + GetNvrUTCDiff(); + + DateTime DateNow(select_time); + + int nYear = DateNow.year(); + int nMonth = DateNow.month(); + int nDay = DateNow.day(); + + NET_DVR_FILECOND FileCond; + + FileCond.dwFileType = 0xff;// 0xff:所有文件 + FileCond.dwIsLocked = 0xff;// 0xff:所有文件 + FileCond.dwUseCardNo = 0; //不使用卡号 + + FileCond.lChannel = m_Channel;//通道号 + + FileCond.struStartTime.dwYear = DateNow.year(); + FileCond.struStartTime.dwMonth = DateNow.month(); + FileCond.struStartTime.dwDay = DateNow.day(); + FileCond.struStartTime.dwHour = 0; + FileCond.struStartTime.dwMinute = 0; + FileCond.struStartTime.dwSecond = 0; + + FileCond.struStopTime.dwYear = DateNow.year(); + FileCond.struStopTime.dwMonth = DateNow.month(); + FileCond.struStopTime.dwDay = DateNow.day(); + FileCond.struStopTime.dwHour = 23; + FileCond.struStopTime.dwMinute = 59; + FileCond.struStopTime.dwSecond = 59; + + available_time_vec.clear(); + LONG hFindHandle = NET_DVR_FindFile_V30(LoginID, &FileCond); + if (-1 == hFindHandle) + { + nRet = NET_DVR_GetLastError(); + return nRet == NET_DVR_NETWORK_FAIL_CONNECT?NVR_ERR_CONNECT_7:NVR_ERR_HIK; + } + else + { + NET_DVR_FINDDATA_V30 FindData; // 查找到的文件信息 + nRet = NET_DVR_FindNextFile_V30(hFindHandle, &FindData); + int ItemIndex = 0; + while (nRet > 0) + { + if (NET_DVR_FILE_EXCEPTION == nRet)//查找文件时异常 + { + break; + } + else if (NET_DVR_FILE_NOFIND == nRet)//没有文件 + { + break; + } + else if (NET_DVR_NOMOREFILE == nRet) // 查找结束 + { + break; + } + else if (NET_DVR_ISFINDING == nRet) // 正在查找 + { + nRet = NET_DVR_FindNextFile_V30(hFindHandle, &FindData); + //请求过快,会出读错误。同时也是参考海康sdk写法。 + std::this_thread::sleep_for(std::chrono::milliseconds(5)); + } + else if (NET_DVR_FILE_SUCCESS == nRet) // 获取文件信息成功 + { + // 保存文件信息 + TimeRecord tR; + + if (nDay != FindData.struStartTime.dwDay)//起始不在今日 + { + tR.TimeStart.SetDateTime(FindData.struStartTime.dwYear, FindData.struStartTime.dwMonth, nDay, 0, 0, 0); + } + else//起始在今日 + { + tR.TimeStart.SetDateTime(FindData.struStartTime.dwYear, FindData.struStartTime.dwMonth, FindData.struStartTime.dwDay, FindData.struStartTime.dwHour, FindData.struStartTime.dwMinute, FindData.struStartTime.dwSecond); + } + if (nDay != FindData.struStopTime.dwDay)//结束不在今日 + { + tR.TimeEnd.SetDateTime(FindData.struStartTime.dwYear, FindData.struStartTime.dwMonth, FindData.struStartTime.dwDay, 23, 59, 59); + } + else//结束在今日 + { + tR.TimeEnd.SetDateTime(FindData.struStopTime.dwYear, FindData.struStopTime.dwMonth, FindData.struStopTime.dwDay, + FindData.struStopTime.dwHour, FindData.struStopTime.dwMinute, FindData.struStopTime.dwSecond); + } + + date::sys_days original_date_start{date::year{tR.TimeStart.year()} / date::month{static_cast(tR.TimeStart.month())} / date::day{static_cast(tR.TimeStart.day())}}; + date::sys_time original_time_start{date::sys_days{original_date_start} + std::chrono::hours{tR.TimeStart.hour()} + std::chrono::minutes{tR.TimeStart.minute()} + std::chrono::seconds{tR.TimeStart.minute()}}; + date::sys_time utc_plus_8_time_start = original_time_start - std::chrono::minutes{nDiffTotalMin}; + + date::sys_days original_date_end{date::year{tR.TimeEnd.year()} / date::month{static_cast(tR.TimeEnd.month())} / date::day{static_cast(tR.TimeEnd.day())}}; + date::sys_time original_time_end{date::sys_days{original_date_end} + std::chrono::hours{tR.TimeEnd.hour()} + std::chrono::minutes{tR.TimeEnd.minute()} + std::chrono::seconds{tR.TimeEnd.minute()}}; + date::sys_time utc_plus_8_time_end = original_time_end - std::chrono::minutes{nDiffTotalMin}; + + // 计算时间点到1970-01-01 00:00:00 UTC的时间间隔,即时间戳 + std::chrono::seconds timestamp = std::chrono::duration_cast(utc_plus_8_time_start.time_since_epoch()); + tR.tmTimeStart = timestamp.count(); + timestamp = std::chrono::duration_cast(utc_plus_8_time_end.time_since_epoch()); + tR.tmTimeEnd = timestamp.count(); + + available_time_vec.emplace_back(tR); + nRet = NET_DVR_FindNextFile_V30(hFindHandle, &FindData); + } + } + // 关闭查找,释放句柄 + NET_DVR_FindClose_V30(hFindHandle); + } + + return NVR_SUC; +} + +/** + * @brief Get the time region based on the selected time and value. + * + * @param SelectTime The selected time. + * @param Value The value used to calculate the time region. + * @param TimeStart The start time of the time region. + * @param TimeEnd The end time of the time region. + * @return true if the time region is found, false otherwise. + */ +bool HIKNvr::GetTimeRegion(DateTime SelectTime, int Value, DateTime &TimeStart, DateTime &TimeEnd) +{ + int nYear = SelectTime.year(); + int nMonth = SelectTime.month(); + int nDay = SelectTime.day(); + + // 时间格式 转换,找时间区间 + int nHour = Value / 3600; + int nMinute = Value / 60 - 60 * nHour; + int nSecond = Value - (nMinute + 60 * nHour) * 60; + + TimeStart = SelectTime; + TimeStart.hour() = nHour; + TimeStart.minute() = nMinute; + TimeStart.second() = nSecond; + + bool bHave = false; + for (auto it : m_TimeRecords) + { + if (it.IsInRecord(TimeStart)) + { + bHave = true; + TimeEnd = it.TimeEnd; + break; + } + } + + return bHave; +} + +/** + * @brief Turn the time to json. + * + * @param Time The time to be turned to json. + * @param pAvailableDateVec The available date vector. + * @return nlohmann::json& The json object. + */ +nlohmann::json HIKNvr::TimeToJson(DateTime Time, std::vector *pAvailableDateVec) +{ + nlohmann::json Message; + + //year and month + Message["year"] = Time.year(); + Message["month"] = Time.month(); + + //date + if (pAvailableDateVec != nullptr) + { + nlohmann::json data; + for (auto date : *pAvailableDateVec) + { + data.push_back(date); + } + Message["day"] = data; + } + return Message; +} + +/** + * @brief Converts available time slots in a day to JSON format. + * + * @param Time The date and time of the day. + * @param pAvailableTimeVec A pointer to a vector of available time slots. + * @return nlohmann::json& A reference to the JSON object containing the converted time slots. + */ +nlohmann::json HIKNvr::TimeToJsonInDay(DateTime Time, std::vector *pAvailableTimeVec) +{ + nlohmann::json Message; + if(pAvailableTimeVec != nullptr) + { + for(auto time : *pAvailableTimeVec) + { + nlohmann::json data; + data["begin"] = time.tmTimeStart; + data["end"] = time.tmTimeEnd; + Message.push_back(data); + } + } + return Message; +} + + + diff --git a/src/HIKNvr.h b/src/HIKNvr.h new file mode 100644 index 0000000..99d23a9 --- /dev/null +++ b/src/HIKNvr.h @@ -0,0 +1,59 @@ +#pragma once +#include "json.hpp" +#include "HIKBase.h" +#include "DecisionPlatform.h" +#include "DataTime.h" +#include + +#define NVR_SUC 0 +#define NVR_ERR_HIK 6 +#define NVR_ERR_CONNECT_7 7 + +struct TimeRecord +{ + DateTime TimeStart; + DateTime TimeEnd; + long long tmTimeStart; + long long tmTimeEnd; + // 目前是针对每天记录比对,所以只比对time即可。 + bool IsInRecord(DateTime time_in) + { + if (TimeStart < time_in && TimeEnd > time_in) + { + return true; + } + return false; + } +}; + +class HIKNvr : public HIKBase +{ +public: + HIKNvr(); + //初始化 Nvr + bool InitNvr(std::string ip, std::string port, std::string username, std::string password, int channel); + + //按月查询 + int CheckTimeRegionWithMonth(DateTime select_time, std::vector &available_date_vec); + + //按日查询 + int CheckTimeRegionWithDay(DateTime select_time, std::vector &available_time_vec); + + //though input SelectTime get the time region + bool GetTimeRegion(DateTime select_time,int value ,DateTime &time_start,DateTime &time_end); + + bool GetNvrUTCDiff(); + int nDiffTotalMin; + +public: + // 将时间转换成json + nlohmann::json TimeToJson(DateTime Time,std::vector *pAvailableDateVec); + nlohmann::json TimeToJsonInDay(DateTime Time,std::vector *pAvailableTimeVec); + +private: + //record the time in the Nvr + std::vector m_TimeRecords; + //Nvr channel + int m_Channel; + +}; \ No newline at end of file diff --git a/src/date/chrono_io.h b/src/date/chrono_io.h new file mode 100644 index 0000000..21be404 --- /dev/null +++ b/src/date/chrono_io.h @@ -0,0 +1,34 @@ +#ifndef CHRONO_IO_H +#define CHRONO_IO_H + +// The MIT License (MIT) +// +// Copyright (c) 2016, 2017 Howard Hinnant +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// Our apologies. When the previous paragraph was written, lowercase had not yet +// been invented (that would involve another several millennia of evolution). +// We did not mean to shout. + +// This functionality has moved to "date.h" + +#include "date.h" + +#endif // CHRONO_IO_H diff --git a/src/date/date.h b/src/date/date.h new file mode 100644 index 0000000..6960e8c --- /dev/null +++ b/src/date/date.h @@ -0,0 +1,8234 @@ +#ifndef DATE_H +#define DATE_H + +// The MIT License (MIT) +// +// Copyright (c) 2015, 2016, 2017 Howard Hinnant +// Copyright (c) 2016 Adrian Colomitchi +// Copyright (c) 2017 Florian Dang +// Copyright (c) 2017 Paul Thompson +// Copyright (c) 2018, 2019 Tomasz Kamiński +// Copyright (c) 2019 Jiangang Zhuang +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// Our apologies. When the previous paragraph was written, lowercase had not yet +// been invented (that would involve another several millennia of evolution). +// We did not mean to shout. + +#ifndef HAS_STRING_VIEW +# if __cplusplus >= 201703 || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) +# define HAS_STRING_VIEW 1 +# else +# define HAS_STRING_VIEW 0 +# endif +#endif // HAS_STRING_VIEW + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if HAS_STRING_VIEW +# include +#endif +#include +#include + +#ifdef __GNUC__ +# pragma GCC diagnostic push +# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 7) +# pragma GCC diagnostic ignored "-Wpedantic" +# endif +# if __GNUC__ < 5 + // GCC 4.9 Bug 61489 Wrong warning with -Wmissing-field-initializers +# pragma GCC diagnostic ignored "-Wmissing-field-initializers" +# endif +#endif + +#ifdef _MSC_VER +# pragma warning(push) +// warning C4127: conditional expression is constant +# pragma warning(disable : 4127) +#endif + +namespace date +{ + +//---------------+ +// Configuration | +//---------------+ + +#ifndef ONLY_C_LOCALE +# define ONLY_C_LOCALE 0 +#endif + +#if defined(_MSC_VER) && (!defined(__clang__) || (_MSC_VER < 1910)) +// MSVC +# ifndef _SILENCE_CXX17_UNCAUGHT_EXCEPTION_DEPRECATION_WARNING +# define _SILENCE_CXX17_UNCAUGHT_EXCEPTION_DEPRECATION_WARNING +# endif +# if _MSC_VER < 1910 +// before VS2017 +# define CONSTDATA const +# define CONSTCD11 +# define CONSTCD14 +# define NOEXCEPT _NOEXCEPT +# else +// VS2017 and later +# define CONSTDATA constexpr const +# define CONSTCD11 constexpr +# define CONSTCD14 constexpr +# define NOEXCEPT noexcept +# endif + +#elif defined(__SUNPRO_CC) && __SUNPRO_CC <= 0x5150 +// Oracle Developer Studio 12.6 and earlier +# define CONSTDATA constexpr const +# define CONSTCD11 constexpr +# define CONSTCD14 +# define NOEXCEPT noexcept + +#elif __cplusplus >= 201402 +// C++14 +# define CONSTDATA constexpr const +# define CONSTCD11 constexpr +# define CONSTCD14 constexpr +# define NOEXCEPT noexcept +#else +// C++11 +# define CONSTDATA constexpr const +# define CONSTCD11 constexpr +# define CONSTCD14 +# define NOEXCEPT noexcept +#endif + +#ifndef HAS_UNCAUGHT_EXCEPTIONS +# if __cplusplus >= 201703 || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) +# define HAS_UNCAUGHT_EXCEPTIONS 1 +# else +# define HAS_UNCAUGHT_EXCEPTIONS 0 +# endif +#endif // HAS_UNCAUGHT_EXCEPTIONS + +#ifndef HAS_VOID_T +# if __cplusplus >= 201703 || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) +# define HAS_VOID_T 1 +# else +# define HAS_VOID_T 0 +# endif +#endif // HAS_VOID_T + +// Protect from Oracle sun macro +#ifdef sun +# undef sun +#endif + +// Work around for a NVCC compiler bug which causes it to fail +// to compile std::ratio_{multiply,divide} when used directly +// in the std::chrono::duration template instantiations below +namespace detail { +template +using ratio_multiply = decltype(std::ratio_multiply{}); + +template +using ratio_divide = decltype(std::ratio_divide{}); +} // namespace detail + +//-----------+ +// Interface | +//-----------+ + +// durations + +using days = std::chrono::duration + , std::chrono::hours::period>>; + +using weeks = std::chrono::duration + , days::period>>; + +using years = std::chrono::duration + , days::period>>; + +using months = std::chrono::duration + >>; + +// time_point + +template + using sys_time = std::chrono::time_point; + +using sys_days = sys_time; +using sys_seconds = sys_time; + +struct local_t {}; + +template + using local_time = std::chrono::time_point; + +using local_seconds = local_time; +using local_days = local_time; + +// types + +struct last_spec +{ + explicit last_spec() = default; +}; + +class day; +class month; +class year; + +class weekday; +class weekday_indexed; +class weekday_last; + +class month_day; +class month_day_last; +class month_weekday; +class month_weekday_last; + +class year_month; + +class year_month_day; +class year_month_day_last; +class year_month_weekday; +class year_month_weekday_last; + +// date composition operators + +CONSTCD11 year_month operator/(const year& y, const month& m) NOEXCEPT; +CONSTCD11 year_month operator/(const year& y, int m) NOEXCEPT; + +CONSTCD11 month_day operator/(const day& d, const month& m) NOEXCEPT; +CONSTCD11 month_day operator/(const day& d, int m) NOEXCEPT; +CONSTCD11 month_day operator/(const month& m, const day& d) NOEXCEPT; +CONSTCD11 month_day operator/(const month& m, int d) NOEXCEPT; +CONSTCD11 month_day operator/(int m, const day& d) NOEXCEPT; + +CONSTCD11 month_day_last operator/(const month& m, last_spec) NOEXCEPT; +CONSTCD11 month_day_last operator/(int m, last_spec) NOEXCEPT; +CONSTCD11 month_day_last operator/(last_spec, const month& m) NOEXCEPT; +CONSTCD11 month_day_last operator/(last_spec, int m) NOEXCEPT; + +CONSTCD11 month_weekday operator/(const month& m, const weekday_indexed& wdi) NOEXCEPT; +CONSTCD11 month_weekday operator/(int m, const weekday_indexed& wdi) NOEXCEPT; +CONSTCD11 month_weekday operator/(const weekday_indexed& wdi, const month& m) NOEXCEPT; +CONSTCD11 month_weekday operator/(const weekday_indexed& wdi, int m) NOEXCEPT; + +CONSTCD11 month_weekday_last operator/(const month& m, const weekday_last& wdl) NOEXCEPT; +CONSTCD11 month_weekday_last operator/(int m, const weekday_last& wdl) NOEXCEPT; +CONSTCD11 month_weekday_last operator/(const weekday_last& wdl, const month& m) NOEXCEPT; +CONSTCD11 month_weekday_last operator/(const weekday_last& wdl, int m) NOEXCEPT; + +CONSTCD11 year_month_day operator/(const year_month& ym, const day& d) NOEXCEPT; +CONSTCD11 year_month_day operator/(const year_month& ym, int d) NOEXCEPT; +CONSTCD11 year_month_day operator/(const year& y, const month_day& md) NOEXCEPT; +CONSTCD11 year_month_day operator/(int y, const month_day& md) NOEXCEPT; +CONSTCD11 year_month_day operator/(const month_day& md, const year& y) NOEXCEPT; +CONSTCD11 year_month_day operator/(const month_day& md, int y) NOEXCEPT; + +CONSTCD11 + year_month_day_last operator/(const year_month& ym, last_spec) NOEXCEPT; +CONSTCD11 + year_month_day_last operator/(const year& y, const month_day_last& mdl) NOEXCEPT; +CONSTCD11 + year_month_day_last operator/(int y, const month_day_last& mdl) NOEXCEPT; +CONSTCD11 + year_month_day_last operator/(const month_day_last& mdl, const year& y) NOEXCEPT; +CONSTCD11 + year_month_day_last operator/(const month_day_last& mdl, int y) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator/(const year_month& ym, const weekday_indexed& wdi) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator/(const year& y, const month_weekday& mwd) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator/(int y, const month_weekday& mwd) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator/(const month_weekday& mwd, const year& y) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator/(const month_weekday& mwd, int y) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator/(const year_month& ym, const weekday_last& wdl) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator/(const year& y, const month_weekday_last& mwdl) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator/(int y, const month_weekday_last& mwdl) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator/(const month_weekday_last& mwdl, const year& y) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator/(const month_weekday_last& mwdl, int y) NOEXCEPT; + +// Detailed interface + +// day + +class day +{ + unsigned char d_; + +public: + day() = default; + explicit CONSTCD11 day(unsigned d) NOEXCEPT; + + CONSTCD14 day& operator++() NOEXCEPT; + CONSTCD14 day operator++(int) NOEXCEPT; + CONSTCD14 day& operator--() NOEXCEPT; + CONSTCD14 day operator--(int) NOEXCEPT; + + CONSTCD14 day& operator+=(const days& d) NOEXCEPT; + CONSTCD14 day& operator-=(const days& d) NOEXCEPT; + + CONSTCD11 explicit operator unsigned() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const day& x, const day& y) NOEXCEPT; +CONSTCD11 bool operator!=(const day& x, const day& y) NOEXCEPT; +CONSTCD11 bool operator< (const day& x, const day& y) NOEXCEPT; +CONSTCD11 bool operator> (const day& x, const day& y) NOEXCEPT; +CONSTCD11 bool operator<=(const day& x, const day& y) NOEXCEPT; +CONSTCD11 bool operator>=(const day& x, const day& y) NOEXCEPT; + +CONSTCD11 day operator+(const day& x, const days& y) NOEXCEPT; +CONSTCD11 day operator+(const days& x, const day& y) NOEXCEPT; +CONSTCD11 day operator-(const day& x, const days& y) NOEXCEPT; +CONSTCD11 days operator-(const day& x, const day& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const day& d); + +// month + +class month +{ + unsigned char m_; + +public: + month() = default; + explicit CONSTCD11 month(unsigned m) NOEXCEPT; + + CONSTCD14 month& operator++() NOEXCEPT; + CONSTCD14 month operator++(int) NOEXCEPT; + CONSTCD14 month& operator--() NOEXCEPT; + CONSTCD14 month operator--(int) NOEXCEPT; + + CONSTCD14 month& operator+=(const months& m) NOEXCEPT; + CONSTCD14 month& operator-=(const months& m) NOEXCEPT; + + CONSTCD11 explicit operator unsigned() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const month& x, const month& y) NOEXCEPT; +CONSTCD11 bool operator!=(const month& x, const month& y) NOEXCEPT; +CONSTCD11 bool operator< (const month& x, const month& y) NOEXCEPT; +CONSTCD11 bool operator> (const month& x, const month& y) NOEXCEPT; +CONSTCD11 bool operator<=(const month& x, const month& y) NOEXCEPT; +CONSTCD11 bool operator>=(const month& x, const month& y) NOEXCEPT; + +CONSTCD14 month operator+(const month& x, const months& y) NOEXCEPT; +CONSTCD14 month operator+(const months& x, const month& y) NOEXCEPT; +CONSTCD14 month operator-(const month& x, const months& y) NOEXCEPT; +CONSTCD14 months operator-(const month& x, const month& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const month& m); + +// year + +class year +{ + short y_; + +public: + year() = default; + explicit CONSTCD11 year(int y) NOEXCEPT; + + CONSTCD14 year& operator++() NOEXCEPT; + CONSTCD14 year operator++(int) NOEXCEPT; + CONSTCD14 year& operator--() NOEXCEPT; + CONSTCD14 year operator--(int) NOEXCEPT; + + CONSTCD14 year& operator+=(const years& y) NOEXCEPT; + CONSTCD14 year& operator-=(const years& y) NOEXCEPT; + + CONSTCD11 year operator-() const NOEXCEPT; + CONSTCD11 year operator+() const NOEXCEPT; + + CONSTCD11 bool is_leap() const NOEXCEPT; + + CONSTCD11 explicit operator int() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; + + static CONSTCD11 year min() NOEXCEPT { return year{-32767}; } + static CONSTCD11 year max() NOEXCEPT { return year{32767}; } +}; + +CONSTCD11 bool operator==(const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator!=(const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator< (const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator> (const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator<=(const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator>=(const year& x, const year& y) NOEXCEPT; + +CONSTCD11 year operator+(const year& x, const years& y) NOEXCEPT; +CONSTCD11 year operator+(const years& x, const year& y) NOEXCEPT; +CONSTCD11 year operator-(const year& x, const years& y) NOEXCEPT; +CONSTCD11 years operator-(const year& x, const year& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year& y); + +// weekday + +class weekday +{ + unsigned char wd_; +public: + weekday() = default; + explicit CONSTCD11 weekday(unsigned wd) NOEXCEPT; + CONSTCD14 weekday(const sys_days& dp) NOEXCEPT; + CONSTCD14 explicit weekday(const local_days& dp) NOEXCEPT; + + CONSTCD14 weekday& operator++() NOEXCEPT; + CONSTCD14 weekday operator++(int) NOEXCEPT; + CONSTCD14 weekday& operator--() NOEXCEPT; + CONSTCD14 weekday operator--(int) NOEXCEPT; + + CONSTCD14 weekday& operator+=(const days& d) NOEXCEPT; + CONSTCD14 weekday& operator-=(const days& d) NOEXCEPT; + + CONSTCD11 bool ok() const NOEXCEPT; + + CONSTCD11 unsigned c_encoding() const NOEXCEPT; + CONSTCD11 unsigned iso_encoding() const NOEXCEPT; + + CONSTCD11 weekday_indexed operator[](unsigned index) const NOEXCEPT; + CONSTCD11 weekday_last operator[](last_spec) const NOEXCEPT; + +private: + static CONSTCD14 unsigned char weekday_from_days(int z) NOEXCEPT; + + friend CONSTCD11 bool operator==(const weekday& x, const weekday& y) NOEXCEPT; + friend CONSTCD14 days operator-(const weekday& x, const weekday& y) NOEXCEPT; + friend CONSTCD14 weekday operator+(const weekday& x, const days& y) NOEXCEPT; + template + friend std::basic_ostream& + operator<<(std::basic_ostream& os, const weekday& wd); + friend class weekday_indexed; +}; + +CONSTCD11 bool operator==(const weekday& x, const weekday& y) NOEXCEPT; +CONSTCD11 bool operator!=(const weekday& x, const weekday& y) NOEXCEPT; + +CONSTCD14 weekday operator+(const weekday& x, const days& y) NOEXCEPT; +CONSTCD14 weekday operator+(const days& x, const weekday& y) NOEXCEPT; +CONSTCD14 weekday operator-(const weekday& x, const days& y) NOEXCEPT; +CONSTCD14 days operator-(const weekday& x, const weekday& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday& wd); + +// weekday_indexed + +class weekday_indexed +{ + unsigned char wd_ : 4; + unsigned char index_ : 4; + +public: + weekday_indexed() = default; + CONSTCD11 weekday_indexed(const date::weekday& wd, unsigned index) NOEXCEPT; + + CONSTCD11 date::weekday weekday() const NOEXCEPT; + CONSTCD11 unsigned index() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const weekday_indexed& x, const weekday_indexed& y) NOEXCEPT; +CONSTCD11 bool operator!=(const weekday_indexed& x, const weekday_indexed& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday_indexed& wdi); + +// weekday_last + +class weekday_last +{ + date::weekday wd_; + +public: + explicit CONSTCD11 weekday_last(const date::weekday& wd) NOEXCEPT; + + CONSTCD11 date::weekday weekday() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const weekday_last& x, const weekday_last& y) NOEXCEPT; +CONSTCD11 bool operator!=(const weekday_last& x, const weekday_last& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday_last& wdl); + +namespace detail +{ + +struct unspecified_month_disambiguator {}; + +} // namespace detail + +// year_month + +class year_month +{ + date::year y_; + date::month m_; + +public: + year_month() = default; + CONSTCD11 year_month(const date::year& y, const date::month& m) NOEXCEPT; + + CONSTCD11 date::year year() const NOEXCEPT; + CONSTCD11 date::month month() const NOEXCEPT; + + template + CONSTCD14 year_month& operator+=(const months& dm) NOEXCEPT; + template + CONSTCD14 year_month& operator-=(const months& dm) NOEXCEPT; + CONSTCD14 year_month& operator+=(const years& dy) NOEXCEPT; + CONSTCD14 year_month& operator-=(const years& dy) NOEXCEPT; + + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 bool operator!=(const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 bool operator< (const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 bool operator> (const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 bool operator<=(const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 bool operator>=(const year_month& x, const year_month& y) NOEXCEPT; + +template +CONSTCD14 year_month operator+(const year_month& ym, const months& dm) NOEXCEPT; +template +CONSTCD14 year_month operator+(const months& dm, const year_month& ym) NOEXCEPT; +template +CONSTCD14 year_month operator-(const year_month& ym, const months& dm) NOEXCEPT; + +CONSTCD11 months operator-(const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 year_month operator+(const year_month& ym, const years& dy) NOEXCEPT; +CONSTCD11 year_month operator+(const years& dy, const year_month& ym) NOEXCEPT; +CONSTCD11 year_month operator-(const year_month& ym, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month& ym); + +// month_day + +class month_day +{ + date::month m_; + date::day d_; + +public: + month_day() = default; + CONSTCD11 month_day(const date::month& m, const date::day& d) NOEXCEPT; + + CONSTCD11 date::month month() const NOEXCEPT; + CONSTCD11 date::day day() const NOEXCEPT; + + CONSTCD14 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const month_day& x, const month_day& y) NOEXCEPT; +CONSTCD11 bool operator!=(const month_day& x, const month_day& y) NOEXCEPT; +CONSTCD11 bool operator< (const month_day& x, const month_day& y) NOEXCEPT; +CONSTCD11 bool operator> (const month_day& x, const month_day& y) NOEXCEPT; +CONSTCD11 bool operator<=(const month_day& x, const month_day& y) NOEXCEPT; +CONSTCD11 bool operator>=(const month_day& x, const month_day& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_day& md); + +// month_day_last + +class month_day_last +{ + date::month m_; + +public: + CONSTCD11 explicit month_day_last(const date::month& m) NOEXCEPT; + + CONSTCD11 date::month month() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const month_day_last& x, const month_day_last& y) NOEXCEPT; +CONSTCD11 bool operator!=(const month_day_last& x, const month_day_last& y) NOEXCEPT; +CONSTCD11 bool operator< (const month_day_last& x, const month_day_last& y) NOEXCEPT; +CONSTCD11 bool operator> (const month_day_last& x, const month_day_last& y) NOEXCEPT; +CONSTCD11 bool operator<=(const month_day_last& x, const month_day_last& y) NOEXCEPT; +CONSTCD11 bool operator>=(const month_day_last& x, const month_day_last& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_day_last& mdl); + +// month_weekday + +class month_weekday +{ + date::month m_; + date::weekday_indexed wdi_; +public: + CONSTCD11 month_weekday(const date::month& m, + const date::weekday_indexed& wdi) NOEXCEPT; + + CONSTCD11 date::month month() const NOEXCEPT; + CONSTCD11 date::weekday_indexed weekday_indexed() const NOEXCEPT; + + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const month_weekday& x, const month_weekday& y) NOEXCEPT; +CONSTCD11 bool operator!=(const month_weekday& x, const month_weekday& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_weekday& mwd); + +// month_weekday_last + +class month_weekday_last +{ + date::month m_; + date::weekday_last wdl_; + +public: + CONSTCD11 month_weekday_last(const date::month& m, + const date::weekday_last& wd) NOEXCEPT; + + CONSTCD11 date::month month() const NOEXCEPT; + CONSTCD11 date::weekday_last weekday_last() const NOEXCEPT; + + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 + bool operator==(const month_weekday_last& x, const month_weekday_last& y) NOEXCEPT; +CONSTCD11 + bool operator!=(const month_weekday_last& x, const month_weekday_last& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_weekday_last& mwdl); + +// class year_month_day + +class year_month_day +{ + date::year y_; + date::month m_; + date::day d_; + +public: + year_month_day() = default; + CONSTCD11 year_month_day(const date::year& y, const date::month& m, + const date::day& d) NOEXCEPT; + CONSTCD14 year_month_day(const year_month_day_last& ymdl) NOEXCEPT; + + CONSTCD14 year_month_day(sys_days dp) NOEXCEPT; + CONSTCD14 explicit year_month_day(local_days dp) NOEXCEPT; + + template + CONSTCD14 year_month_day& operator+=(const months& m) NOEXCEPT; + template + CONSTCD14 year_month_day& operator-=(const months& m) NOEXCEPT; + CONSTCD14 year_month_day& operator+=(const years& y) NOEXCEPT; + CONSTCD14 year_month_day& operator-=(const years& y) NOEXCEPT; + + CONSTCD11 date::year year() const NOEXCEPT; + CONSTCD11 date::month month() const NOEXCEPT; + CONSTCD11 date::day day() const NOEXCEPT; + + CONSTCD14 operator sys_days() const NOEXCEPT; + CONSTCD14 explicit operator local_days() const NOEXCEPT; + CONSTCD14 bool ok() const NOEXCEPT; + +private: + static CONSTCD14 year_month_day from_days(days dp) NOEXCEPT; + CONSTCD14 days to_days() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const year_month_day& x, const year_month_day& y) NOEXCEPT; +CONSTCD11 bool operator!=(const year_month_day& x, const year_month_day& y) NOEXCEPT; +CONSTCD11 bool operator< (const year_month_day& x, const year_month_day& y) NOEXCEPT; +CONSTCD11 bool operator> (const year_month_day& x, const year_month_day& y) NOEXCEPT; +CONSTCD11 bool operator<=(const year_month_day& x, const year_month_day& y) NOEXCEPT; +CONSTCD11 bool operator>=(const year_month_day& x, const year_month_day& y) NOEXCEPT; + +template +CONSTCD14 year_month_day operator+(const year_month_day& ymd, const months& dm) NOEXCEPT; +template +CONSTCD14 year_month_day operator+(const months& dm, const year_month_day& ymd) NOEXCEPT; +template +CONSTCD14 year_month_day operator-(const year_month_day& ymd, const months& dm) NOEXCEPT; +CONSTCD11 year_month_day operator+(const year_month_day& ymd, const years& dy) NOEXCEPT; +CONSTCD11 year_month_day operator+(const years& dy, const year_month_day& ymd) NOEXCEPT; +CONSTCD11 year_month_day operator-(const year_month_day& ymd, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_day& ymd); + +// year_month_day_last + +class year_month_day_last +{ + date::year y_; + date::month_day_last mdl_; + +public: + CONSTCD11 year_month_day_last(const date::year& y, + const date::month_day_last& mdl) NOEXCEPT; + + template + CONSTCD14 year_month_day_last& operator+=(const months& m) NOEXCEPT; + template + CONSTCD14 year_month_day_last& operator-=(const months& m) NOEXCEPT; + CONSTCD14 year_month_day_last& operator+=(const years& y) NOEXCEPT; + CONSTCD14 year_month_day_last& operator-=(const years& y) NOEXCEPT; + + CONSTCD11 date::year year() const NOEXCEPT; + CONSTCD11 date::month month() const NOEXCEPT; + CONSTCD11 date::month_day_last month_day_last() const NOEXCEPT; + CONSTCD14 date::day day() const NOEXCEPT; + + CONSTCD14 operator sys_days() const NOEXCEPT; + CONSTCD14 explicit operator local_days() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 + bool operator==(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; +CONSTCD11 + bool operator!=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; +CONSTCD11 + bool operator< (const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; +CONSTCD11 + bool operator> (const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; +CONSTCD11 + bool operator<=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; +CONSTCD11 + bool operator>=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; + +template +CONSTCD14 +year_month_day_last +operator+(const year_month_day_last& ymdl, const months& dm) NOEXCEPT; + +template +CONSTCD14 +year_month_day_last +operator+(const months& dm, const year_month_day_last& ymdl) NOEXCEPT; + +CONSTCD11 +year_month_day_last +operator+(const year_month_day_last& ymdl, const years& dy) NOEXCEPT; + +CONSTCD11 +year_month_day_last +operator+(const years& dy, const year_month_day_last& ymdl) NOEXCEPT; + +template +CONSTCD14 +year_month_day_last +operator-(const year_month_day_last& ymdl, const months& dm) NOEXCEPT; + +CONSTCD11 +year_month_day_last +operator-(const year_month_day_last& ymdl, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_day_last& ymdl); + +// year_month_weekday + +class year_month_weekday +{ + date::year y_; + date::month m_; + date::weekday_indexed wdi_; + +public: + year_month_weekday() = default; + CONSTCD11 year_month_weekday(const date::year& y, const date::month& m, + const date::weekday_indexed& wdi) NOEXCEPT; + CONSTCD14 year_month_weekday(const sys_days& dp) NOEXCEPT; + CONSTCD14 explicit year_month_weekday(const local_days& dp) NOEXCEPT; + + template + CONSTCD14 year_month_weekday& operator+=(const months& m) NOEXCEPT; + template + CONSTCD14 year_month_weekday& operator-=(const months& m) NOEXCEPT; + CONSTCD14 year_month_weekday& operator+=(const years& y) NOEXCEPT; + CONSTCD14 year_month_weekday& operator-=(const years& y) NOEXCEPT; + + CONSTCD11 date::year year() const NOEXCEPT; + CONSTCD11 date::month month() const NOEXCEPT; + CONSTCD11 date::weekday weekday() const NOEXCEPT; + CONSTCD11 unsigned index() const NOEXCEPT; + CONSTCD11 date::weekday_indexed weekday_indexed() const NOEXCEPT; + + CONSTCD14 operator sys_days() const NOEXCEPT; + CONSTCD14 explicit operator local_days() const NOEXCEPT; + CONSTCD14 bool ok() const NOEXCEPT; + +private: + static CONSTCD14 year_month_weekday from_days(days dp) NOEXCEPT; + CONSTCD14 days to_days() const NOEXCEPT; +}; + +CONSTCD11 + bool operator==(const year_month_weekday& x, const year_month_weekday& y) NOEXCEPT; +CONSTCD11 + bool operator!=(const year_month_weekday& x, const year_month_weekday& y) NOEXCEPT; + +template +CONSTCD14 +year_month_weekday +operator+(const year_month_weekday& ymwd, const months& dm) NOEXCEPT; + +template +CONSTCD14 +year_month_weekday +operator+(const months& dm, const year_month_weekday& ymwd) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator+(const year_month_weekday& ymwd, const years& dy) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator+(const years& dy, const year_month_weekday& ymwd) NOEXCEPT; + +template +CONSTCD14 +year_month_weekday +operator-(const year_month_weekday& ymwd, const months& dm) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator-(const year_month_weekday& ymwd, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_weekday& ymwdi); + +// year_month_weekday_last + +class year_month_weekday_last +{ + date::year y_; + date::month m_; + date::weekday_last wdl_; + +public: + CONSTCD11 year_month_weekday_last(const date::year& y, const date::month& m, + const date::weekday_last& wdl) NOEXCEPT; + + template + CONSTCD14 year_month_weekday_last& operator+=(const months& m) NOEXCEPT; + template + CONSTCD14 year_month_weekday_last& operator-=(const months& m) NOEXCEPT; + CONSTCD14 year_month_weekday_last& operator+=(const years& y) NOEXCEPT; + CONSTCD14 year_month_weekday_last& operator-=(const years& y) NOEXCEPT; + + CONSTCD11 date::year year() const NOEXCEPT; + CONSTCD11 date::month month() const NOEXCEPT; + CONSTCD11 date::weekday weekday() const NOEXCEPT; + CONSTCD11 date::weekday_last weekday_last() const NOEXCEPT; + + CONSTCD14 operator sys_days() const NOEXCEPT; + CONSTCD14 explicit operator local_days() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; + +private: + CONSTCD14 days to_days() const NOEXCEPT; +}; + +CONSTCD11 +bool +operator==(const year_month_weekday_last& x, const year_month_weekday_last& y) NOEXCEPT; + +CONSTCD11 +bool +operator!=(const year_month_weekday_last& x, const year_month_weekday_last& y) NOEXCEPT; + +template +CONSTCD14 +year_month_weekday_last +operator+(const year_month_weekday_last& ymwdl, const months& dm) NOEXCEPT; + +template +CONSTCD14 +year_month_weekday_last +operator+(const months& dm, const year_month_weekday_last& ymwdl) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator+(const year_month_weekday_last& ymwdl, const years& dy) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator+(const years& dy, const year_month_weekday_last& ymwdl) NOEXCEPT; + +template +CONSTCD14 +year_month_weekday_last +operator-(const year_month_weekday_last& ymwdl, const months& dm) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator-(const year_month_weekday_last& ymwdl, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_weekday_last& ymwdl); + +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) +inline namespace literals +{ + +CONSTCD11 date::day operator "" _d(unsigned long long d) NOEXCEPT; +CONSTCD11 date::year operator "" _y(unsigned long long y) NOEXCEPT; + +} // inline namespace literals +#endif // !defined(_MSC_VER) || (_MSC_VER >= 1900) + +// CONSTDATA date::month January{1}; +// CONSTDATA date::month February{2}; +// CONSTDATA date::month March{3}; +// CONSTDATA date::month April{4}; +// CONSTDATA date::month May{5}; +// CONSTDATA date::month June{6}; +// CONSTDATA date::month July{7}; +// CONSTDATA date::month August{8}; +// CONSTDATA date::month September{9}; +// CONSTDATA date::month October{10}; +// CONSTDATA date::month November{11}; +// CONSTDATA date::month December{12}; +// +// CONSTDATA date::weekday Sunday{0u}; +// CONSTDATA date::weekday Monday{1u}; +// CONSTDATA date::weekday Tuesday{2u}; +// CONSTDATA date::weekday Wednesday{3u}; +// CONSTDATA date::weekday Thursday{4u}; +// CONSTDATA date::weekday Friday{5u}; +// CONSTDATA date::weekday Saturday{6u}; + +#if HAS_VOID_T + +template > +struct is_clock + : std::false_type +{}; + +template +struct is_clock> + : std::true_type +{}; + +template inline constexpr bool is_clock_v = is_clock::value; + +#endif // HAS_VOID_T + +//----------------+ +// Implementation | +//----------------+ + +// utilities +namespace detail { + +template> +class save_istream +{ +protected: + std::basic_ios& is_; + CharT fill_; + std::ios::fmtflags flags_; + std::streamsize precision_; + std::streamsize width_; + std::basic_ostream* tie_; + std::locale loc_; + +public: + ~save_istream() + { + is_.fill(fill_); + is_.flags(flags_); + is_.precision(precision_); + is_.width(width_); + is_.imbue(loc_); + is_.tie(tie_); + } + + save_istream(const save_istream&) = delete; + save_istream& operator=(const save_istream&) = delete; + + explicit save_istream(std::basic_ios& is) + : is_(is) + , fill_(is.fill()) + , flags_(is.flags()) + , precision_(is.precision()) + , width_(is.width(0)) + , tie_(is.tie(nullptr)) + , loc_(is.getloc()) + { + if (tie_ != nullptr) + tie_->flush(); + } +}; + +template> +class save_ostream + : private save_istream +{ +public: + ~save_ostream() + { + if ((this->flags_ & std::ios::unitbuf) && +#if HAS_UNCAUGHT_EXCEPTIONS + std::uncaught_exceptions() == 0 && +#else + !std::uncaught_exception() && +#endif + this->is_.good()) + this->is_.rdbuf()->pubsync(); + } + + save_ostream(const save_ostream&) = delete; + save_ostream& operator=(const save_ostream&) = delete; + + explicit save_ostream(std::basic_ios& os) + : save_istream(os) + { + } +}; + +template +struct choose_trunc_type +{ + static const int digits = std::numeric_limits::digits; + using type = typename std::conditional + < + digits < 32, + std::int32_t, + typename std::conditional + < + digits < 64, + std::int64_t, +#ifdef __SIZEOF_INT128__ + __int128 +#else + std::int64_t +#endif + >::type + >::type; +}; + +template +CONSTCD11 +inline +typename std::enable_if +< + !std::chrono::treat_as_floating_point::value, + T +>::type +trunc(T t) NOEXCEPT +{ + return t; +} + +template +CONSTCD14 +inline +typename std::enable_if +< + std::chrono::treat_as_floating_point::value, + T +>::type +trunc(T t) NOEXCEPT +{ + using std::numeric_limits; + using I = typename choose_trunc_type::type; + CONSTDATA auto digits = numeric_limits::digits; + static_assert(digits < numeric_limits::digits, ""); + CONSTDATA auto max = I{1} << (digits-1); + CONSTDATA auto min = -max; + const auto negative = t < T{0}; + if (min <= t && t <= max && t != 0 && t == t) + { + t = static_cast(static_cast(t)); + if (t == 0 && negative) + t = -t; + } + return t; +} + +template +struct static_gcd +{ + static const std::intmax_t value = static_gcd::value; +}; + +template +struct static_gcd +{ + static const std::intmax_t value = Xp; +}; + +template <> +struct static_gcd<0, 0> +{ + static const std::intmax_t value = 1; +}; + +template +struct no_overflow +{ +private: + static const std::intmax_t gcd_n1_n2 = static_gcd::value; + static const std::intmax_t gcd_d1_d2 = static_gcd::value; + static const std::intmax_t n1 = R1::num / gcd_n1_n2; + static const std::intmax_t d1 = R1::den / gcd_d1_d2; + static const std::intmax_t n2 = R2::num / gcd_n1_n2; + static const std::intmax_t d2 = R2::den / gcd_d1_d2; +#ifdef __cpp_constexpr + static const std::intmax_t max = std::numeric_limits::max(); +#else + static const std::intmax_t max = LLONG_MAX; +#endif + + template + struct mul // overflow == false + { + static const std::intmax_t value = Xp * Yp; + }; + + template + struct mul + { + static const std::intmax_t value = 1; + }; + +public: + static const bool value = (n1 <= max / d2) && (n2 <= max / d1); + typedef std::ratio::value, + mul::value> type; +}; + +} // detail + +// trunc towards zero +template +CONSTCD11 +inline +typename std::enable_if +< + detail::no_overflow::value, + To +>::type +trunc(const std::chrono::duration& d) +{ + return To{detail::trunc(std::chrono::duration_cast(d).count())}; +} + +template +CONSTCD11 +inline +typename std::enable_if +< + !detail::no_overflow::value, + To +>::type +trunc(const std::chrono::duration& d) +{ + using std::chrono::duration_cast; + using std::chrono::duration; + using rep = typename std::common_type::type; + return To{detail::trunc(duration_cast(duration_cast>(d)).count())}; +} + +#ifndef HAS_CHRONO_ROUNDING +# if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 190023918 || (_MSC_FULL_VER >= 190000000 && defined (__clang__))) +# define HAS_CHRONO_ROUNDING 1 +# elif defined(__cpp_lib_chrono) && __cplusplus > 201402 && __cpp_lib_chrono >= 201510 +# define HAS_CHRONO_ROUNDING 1 +# elif defined(_LIBCPP_VERSION) && __cplusplus > 201402 && _LIBCPP_VERSION >= 3800 +# define HAS_CHRONO_ROUNDING 1 +# else +# define HAS_CHRONO_ROUNDING 0 +# endif +#endif // HAS_CHRONO_ROUNDING + +#if HAS_CHRONO_ROUNDING == 0 + +// round down +template +CONSTCD14 +inline +typename std::enable_if +< + detail::no_overflow::value, + To +>::type +floor(const std::chrono::duration& d) +{ + auto t = trunc(d); + if (t > d) + return t - To{1}; + return t; +} + +template +CONSTCD14 +inline +typename std::enable_if +< + !detail::no_overflow::value, + To +>::type +floor(const std::chrono::duration& d) +{ + using rep = typename std::common_type::type; + return floor(floor>(d)); +} + +// round to nearest, to even on tie +template +CONSTCD14 +inline +To +round(const std::chrono::duration& d) +{ + auto t0 = floor(d); + auto t1 = t0 + To{1}; + if (t1 == To{0} && t0 < To{0}) + t1 = -t1; + auto diff0 = d - t0; + auto diff1 = t1 - d; + if (diff0 == diff1) + { + if (t0 - trunc(t0/2)*2 == To{0}) + return t0; + return t1; + } + if (diff0 < diff1) + return t0; + return t1; +} + +// round up +template +CONSTCD14 +inline +To +ceil(const std::chrono::duration& d) +{ + auto t = trunc(d); + if (t < d) + return t + To{1}; + return t; +} + +template ::is_signed + >::type> +CONSTCD11 +std::chrono::duration +abs(std::chrono::duration d) +{ + return d >= d.zero() ? d : static_cast(-d); +} + +// round down +template +CONSTCD11 +inline +std::chrono::time_point +floor(const std::chrono::time_point& tp) +{ + using std::chrono::time_point; + return time_point{date::floor(tp.time_since_epoch())}; +} + +// round to nearest, to even on tie +template +CONSTCD11 +inline +std::chrono::time_point +round(const std::chrono::time_point& tp) +{ + using std::chrono::time_point; + return time_point{round(tp.time_since_epoch())}; +} + +// round up +template +CONSTCD11 +inline +std::chrono::time_point +ceil(const std::chrono::time_point& tp) +{ + using std::chrono::time_point; + return time_point{ceil(tp.time_since_epoch())}; +} + +#else // HAS_CHRONO_ROUNDING == 1 + +using std::chrono::floor; +using std::chrono::ceil; +using std::chrono::round; +using std::chrono::abs; + +#endif // HAS_CHRONO_ROUNDING + +namespace detail +{ + +template +CONSTCD14 +inline +typename std::enable_if +< + !std::chrono::treat_as_floating_point::value, + To +>::type +round_i(const std::chrono::duration& d) +{ + return round(d); +} + +template +CONSTCD14 +inline +typename std::enable_if +< + std::chrono::treat_as_floating_point::value, + To +>::type +round_i(const std::chrono::duration& d) +{ + return d; +} + +template +CONSTCD11 +inline +std::chrono::time_point +round_i(const std::chrono::time_point& tp) +{ + using std::chrono::time_point; + return time_point{round_i(tp.time_since_epoch())}; +} + +} // detail + +// trunc towards zero +template +CONSTCD11 +inline +std::chrono::time_point +trunc(const std::chrono::time_point& tp) +{ + using std::chrono::time_point; + return time_point{trunc(tp.time_since_epoch())}; +} + +// day + +CONSTCD11 inline day::day(unsigned d) NOEXCEPT : d_(static_cast(d)) {} +CONSTCD14 inline day& day::operator++() NOEXCEPT {++d_; return *this;} +CONSTCD14 inline day day::operator++(int) NOEXCEPT {auto tmp(*this); ++(*this); return tmp;} +CONSTCD14 inline day& day::operator--() NOEXCEPT {--d_; return *this;} +CONSTCD14 inline day day::operator--(int) NOEXCEPT {auto tmp(*this); --(*this); return tmp;} +CONSTCD14 inline day& day::operator+=(const days& d) NOEXCEPT {*this = *this + d; return *this;} +CONSTCD14 inline day& day::operator-=(const days& d) NOEXCEPT {*this = *this - d; return *this;} +CONSTCD11 inline day::operator unsigned() const NOEXCEPT {return d_;} +CONSTCD11 inline bool day::ok() const NOEXCEPT {return 1 <= d_ && d_ <= 31;} + +CONSTCD11 +inline +bool +operator==(const day& x, const day& y) NOEXCEPT +{ + return static_cast(x) == static_cast(y); +} + +CONSTCD11 +inline +bool +operator!=(const day& x, const day& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const day& x, const day& y) NOEXCEPT +{ + return static_cast(x) < static_cast(y); +} + +CONSTCD11 +inline +bool +operator>(const day& x, const day& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const day& x, const day& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const day& x, const day& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD11 +inline +days +operator-(const day& x, const day& y) NOEXCEPT +{ + return days{static_cast(static_cast(x) + - static_cast(y))}; +} + +CONSTCD11 +inline +day +operator+(const day& x, const days& y) NOEXCEPT +{ + return day{static_cast(x) + static_cast(y.count())}; +} + +CONSTCD11 +inline +day +operator+(const days& x, const day& y) NOEXCEPT +{ + return y + x; +} + +CONSTCD11 +inline +day +operator-(const day& x, const days& y) NOEXCEPT +{ + return x + -y; +} + +namespace detail +{ + +template +std::basic_ostream& +low_level_fmt(std::basic_ostream& os, const day& d) +{ + detail::save_ostream _(os); + os.fill('0'); + os.flags(std::ios::dec | std::ios::right); + os.width(2); + os << static_cast(d); + return os; +} + +} // namespace detail + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const day& d) +{ + detail::low_level_fmt(os, d); + if (!d.ok()) + os << " is not a valid day"; + return os; +} + +// month + +CONSTCD11 inline month::month(unsigned m) NOEXCEPT : m_(static_cast(m)) {} +CONSTCD14 inline month& month::operator++() NOEXCEPT {*this += months{1}; return *this;} +CONSTCD14 inline month month::operator++(int) NOEXCEPT {auto tmp(*this); ++(*this); return tmp;} +CONSTCD14 inline month& month::operator--() NOEXCEPT {*this -= months{1}; return *this;} +CONSTCD14 inline month month::operator--(int) NOEXCEPT {auto tmp(*this); --(*this); return tmp;} + +CONSTCD14 +inline +month& +month::operator+=(const months& m) NOEXCEPT +{ + *this = *this + m; + return *this; +} + +CONSTCD14 +inline +month& +month::operator-=(const months& m) NOEXCEPT +{ + *this = *this - m; + return *this; +} + +CONSTCD11 inline month::operator unsigned() const NOEXCEPT {return m_;} +CONSTCD11 inline bool month::ok() const NOEXCEPT {return 1 <= m_ && m_ <= 12;} + +CONSTCD11 +inline +bool +operator==(const month& x, const month& y) NOEXCEPT +{ + return static_cast(x) == static_cast(y); +} + +CONSTCD11 +inline +bool +operator!=(const month& x, const month& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const month& x, const month& y) NOEXCEPT +{ + return static_cast(x) < static_cast(y); +} + +CONSTCD11 +inline +bool +operator>(const month& x, const month& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const month& x, const month& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const month& x, const month& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD14 +inline +months +operator-(const month& x, const month& y) NOEXCEPT +{ + auto const d = static_cast(x) - static_cast(y); + return months(d <= 11 ? d : d + 12); +} + +CONSTCD14 +inline +month +operator+(const month& x, const months& y) NOEXCEPT +{ + auto const mu = static_cast(static_cast(x)) + y.count() - 1; + auto const yr = (mu >= 0 ? mu : mu-11) / 12; + return month{static_cast(mu - yr * 12 + 1)}; +} + +CONSTCD14 +inline +month +operator+(const months& x, const month& y) NOEXCEPT +{ + return y + x; +} + +CONSTCD14 +inline +month +operator-(const month& x, const months& y) NOEXCEPT +{ + return x + -y; +} + +namespace detail +{ + +template +std::basic_ostream& +low_level_fmt(std::basic_ostream& os, const month& m) +{ + if (m.ok()) + { + CharT fmt[] = {'%', 'b', 0}; + os << format(os.getloc(), fmt, m); + } + else + os << static_cast(m); + return os; +} + +} // namespace detail + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const month& m) +{ + detail::low_level_fmt(os, m); + if (!m.ok()) + os << " is not a valid month"; + return os; +} + +// year + +CONSTCD11 inline year::year(int y) NOEXCEPT : y_(static_cast(y)) {} +CONSTCD14 inline year& year::operator++() NOEXCEPT {++y_; return *this;} +CONSTCD14 inline year year::operator++(int) NOEXCEPT {auto tmp(*this); ++(*this); return tmp;} +CONSTCD14 inline year& year::operator--() NOEXCEPT {--y_; return *this;} +CONSTCD14 inline year year::operator--(int) NOEXCEPT {auto tmp(*this); --(*this); return tmp;} +CONSTCD14 inline year& year::operator+=(const years& y) NOEXCEPT {*this = *this + y; return *this;} +CONSTCD14 inline year& year::operator-=(const years& y) NOEXCEPT {*this = *this - y; return *this;} +CONSTCD11 inline year year::operator-() const NOEXCEPT {return year{-y_};} +CONSTCD11 inline year year::operator+() const NOEXCEPT {return *this;} + +CONSTCD11 +inline +bool +year::is_leap() const NOEXCEPT +{ + return y_ % 4 == 0 && (y_ % 100 != 0 || y_ % 400 == 0); +} + +CONSTCD11 inline year::operator int() const NOEXCEPT {return y_;} + +CONSTCD11 +inline +bool +year::ok() const NOEXCEPT +{ + return y_ != std::numeric_limits::min(); +} + +CONSTCD11 +inline +bool +operator==(const year& x, const year& y) NOEXCEPT +{ + return static_cast(x) == static_cast(y); +} + +CONSTCD11 +inline +bool +operator!=(const year& x, const year& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year& x, const year& y) NOEXCEPT +{ + return static_cast(x) < static_cast(y); +} + +CONSTCD11 +inline +bool +operator>(const year& x, const year& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year& x, const year& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year& x, const year& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD11 +inline +years +operator-(const year& x, const year& y) NOEXCEPT +{ + return years{static_cast(x) - static_cast(y)}; +} + +CONSTCD11 +inline +year +operator+(const year& x, const years& y) NOEXCEPT +{ + return year{static_cast(x) + y.count()}; +} + +CONSTCD11 +inline +year +operator+(const years& x, const year& y) NOEXCEPT +{ + return y + x; +} + +CONSTCD11 +inline +year +operator-(const year& x, const years& y) NOEXCEPT +{ + return year{static_cast(x) - y.count()}; +} + +namespace detail +{ + +template +std::basic_ostream& +low_level_fmt(std::basic_ostream& os, const year& y) +{ + detail::save_ostream _(os); + os.fill('0'); + os.flags(std::ios::dec | std::ios::internal); + os.width(4 + (y < year{0})); + os.imbue(std::locale::classic()); + os << static_cast(y); + return os; +} + +} // namespace detail + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year& y) +{ + detail::low_level_fmt(os, y); + if (!y.ok()) + os << " is not a valid year"; + return os; +} + +// weekday + +CONSTCD14 +inline +unsigned char +weekday::weekday_from_days(int z) NOEXCEPT +{ + auto u = static_cast(z); + return static_cast(z >= -4 ? (u+4) % 7 : u % 7); +} + +CONSTCD11 +inline +weekday::weekday(unsigned wd) NOEXCEPT + : wd_(static_cast(wd != 7 ? wd : 0)) + {} + +CONSTCD14 +inline +weekday::weekday(const sys_days& dp) NOEXCEPT + : wd_(weekday_from_days(dp.time_since_epoch().count())) + {} + +CONSTCD14 +inline +weekday::weekday(const local_days& dp) NOEXCEPT + : wd_(weekday_from_days(dp.time_since_epoch().count())) + {} + +CONSTCD14 inline weekday& weekday::operator++() NOEXCEPT {*this += days{1}; return *this;} +CONSTCD14 inline weekday weekday::operator++(int) NOEXCEPT {auto tmp(*this); ++(*this); return tmp;} +CONSTCD14 inline weekday& weekday::operator--() NOEXCEPT {*this -= days{1}; return *this;} +CONSTCD14 inline weekday weekday::operator--(int) NOEXCEPT {auto tmp(*this); --(*this); return tmp;} + +CONSTCD14 +inline +weekday& +weekday::operator+=(const days& d) NOEXCEPT +{ + *this = *this + d; + return *this; +} + +CONSTCD14 +inline +weekday& +weekday::operator-=(const days& d) NOEXCEPT +{ + *this = *this - d; + return *this; +} + +CONSTCD11 inline bool weekday::ok() const NOEXCEPT {return wd_ <= 6;} + +CONSTCD11 +inline +unsigned weekday::c_encoding() const NOEXCEPT +{ + return unsigned{wd_}; +} + +CONSTCD11 +inline +unsigned weekday::iso_encoding() const NOEXCEPT +{ + return unsigned{((wd_ == 0u) ? 7u : wd_)}; +} + +CONSTCD11 +inline +bool +operator==(const weekday& x, const weekday& y) NOEXCEPT +{ + return x.wd_ == y.wd_; +} + +CONSTCD11 +inline +bool +operator!=(const weekday& x, const weekday& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD14 +inline +days +operator-(const weekday& x, const weekday& y) NOEXCEPT +{ + auto const wdu = x.wd_ - y.wd_; + auto const wk = (wdu >= 0 ? wdu : wdu-6) / 7; + return days{wdu - wk * 7}; +} + +CONSTCD14 +inline +weekday +operator+(const weekday& x, const days& y) NOEXCEPT +{ + auto const wdu = static_cast(static_cast(x.wd_)) + y.count(); + auto const wk = (wdu >= 0 ? wdu : wdu-6) / 7; + return weekday{static_cast(wdu - wk * 7)}; +} + +CONSTCD14 +inline +weekday +operator+(const days& x, const weekday& y) NOEXCEPT +{ + return y + x; +} + +CONSTCD14 +inline +weekday +operator-(const weekday& x, const days& y) NOEXCEPT +{ + return x + -y; +} + +namespace detail +{ + +template +std::basic_ostream& +low_level_fmt(std::basic_ostream& os, const weekday& wd) +{ + if (wd.ok()) + { + CharT fmt[] = {'%', 'a', 0}; + os << format(fmt, wd); + } + else + os << wd.c_encoding(); + return os; +} + +} // namespace detail + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday& wd) +{ + detail::low_level_fmt(os, wd); + if (!wd.ok()) + os << " is not a valid weekday"; + return os; +} + +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) +inline namespace literals +{ + +CONSTCD11 +inline +date::day +operator "" _d(unsigned long long d) NOEXCEPT +{ + return date::day{static_cast(d)}; +} + +CONSTCD11 +inline +date::year +operator "" _y(unsigned long long y) NOEXCEPT +{ + return date::year(static_cast(y)); +} +#endif // !defined(_MSC_VER) || (_MSC_VER >= 1900) + +CONSTDATA date::last_spec last{}; + +CONSTDATA date::month jan{1}; +CONSTDATA date::month feb{2}; +CONSTDATA date::month mar{3}; +CONSTDATA date::month apr{4}; +CONSTDATA date::month may{5}; +CONSTDATA date::month jun{6}; +CONSTDATA date::month jul{7}; +CONSTDATA date::month aug{8}; +CONSTDATA date::month sep{9}; +CONSTDATA date::month oct{10}; +CONSTDATA date::month nov{11}; +CONSTDATA date::month dec{12}; + +CONSTDATA date::weekday sun{0u}; +CONSTDATA date::weekday mon{1u}; +CONSTDATA date::weekday tue{2u}; +CONSTDATA date::weekday wed{3u}; +CONSTDATA date::weekday thu{4u}; +CONSTDATA date::weekday fri{5u}; +CONSTDATA date::weekday sat{6u}; + +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) +} // inline namespace literals +#endif + +CONSTDATA date::month January{1}; +CONSTDATA date::month February{2}; +CONSTDATA date::month March{3}; +CONSTDATA date::month April{4}; +CONSTDATA date::month May{5}; +CONSTDATA date::month June{6}; +CONSTDATA date::month July{7}; +CONSTDATA date::month August{8}; +CONSTDATA date::month September{9}; +CONSTDATA date::month October{10}; +CONSTDATA date::month November{11}; +CONSTDATA date::month December{12}; + +CONSTDATA date::weekday Monday{1}; +CONSTDATA date::weekday Tuesday{2}; +CONSTDATA date::weekday Wednesday{3}; +CONSTDATA date::weekday Thursday{4}; +CONSTDATA date::weekday Friday{5}; +CONSTDATA date::weekday Saturday{6}; +CONSTDATA date::weekday Sunday{7}; + +// weekday_indexed + +CONSTCD11 +inline +weekday +weekday_indexed::weekday() const NOEXCEPT +{ + return date::weekday{static_cast(wd_)}; +} + +CONSTCD11 inline unsigned weekday_indexed::index() const NOEXCEPT {return index_;} + +CONSTCD11 +inline +bool +weekday_indexed::ok() const NOEXCEPT +{ + return weekday().ok() && 1 <= index_ && index_ <= 5; +} + +#ifdef __GNUC__ +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wconversion" +#endif // __GNUC__ + +CONSTCD11 +inline +weekday_indexed::weekday_indexed(const date::weekday& wd, unsigned index) NOEXCEPT + : wd_(static_cast(static_cast(wd.wd_))) + , index_(static_cast(index)) + {} + +#ifdef __GNUC__ +# pragma GCC diagnostic pop +#endif // __GNUC__ + +namespace detail +{ + +template +std::basic_ostream& +low_level_fmt(std::basic_ostream& os, const weekday_indexed& wdi) +{ + return low_level_fmt(os, wdi.weekday()) << '[' << wdi.index() << ']'; +} + +} // namespace detail + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday_indexed& wdi) +{ + detail::low_level_fmt(os, wdi); + if (!wdi.ok()) + os << " is not a valid weekday_indexed"; + return os; +} + +CONSTCD11 +inline +weekday_indexed +weekday::operator[](unsigned index) const NOEXCEPT +{ + return {*this, index}; +} + +CONSTCD11 +inline +bool +operator==(const weekday_indexed& x, const weekday_indexed& y) NOEXCEPT +{ + return x.weekday() == y.weekday() && x.index() == y.index(); +} + +CONSTCD11 +inline +bool +operator!=(const weekday_indexed& x, const weekday_indexed& y) NOEXCEPT +{ + return !(x == y); +} + +// weekday_last + +CONSTCD11 inline date::weekday weekday_last::weekday() const NOEXCEPT {return wd_;} +CONSTCD11 inline bool weekday_last::ok() const NOEXCEPT {return wd_.ok();} +CONSTCD11 inline weekday_last::weekday_last(const date::weekday& wd) NOEXCEPT : wd_(wd) {} + +CONSTCD11 +inline +bool +operator==(const weekday_last& x, const weekday_last& y) NOEXCEPT +{ + return x.weekday() == y.weekday(); +} + +CONSTCD11 +inline +bool +operator!=(const weekday_last& x, const weekday_last& y) NOEXCEPT +{ + return !(x == y); +} + +namespace detail +{ + +template +std::basic_ostream& +low_level_fmt(std::basic_ostream& os, const weekday_last& wdl) +{ + return low_level_fmt(os, wdl.weekday()) << "[last]"; +} + +} // namespace detail + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday_last& wdl) +{ + detail::low_level_fmt(os, wdl); + if (!wdl.ok()) + os << " is not a valid weekday_last"; + return os; +} + +CONSTCD11 +inline +weekday_last +weekday::operator[](last_spec) const NOEXCEPT +{ + return weekday_last{*this}; +} + +// year_month + +CONSTCD11 +inline +year_month::year_month(const date::year& y, const date::month& m) NOEXCEPT + : y_(y) + , m_(m) + {} + +CONSTCD11 inline year year_month::year() const NOEXCEPT {return y_;} +CONSTCD11 inline month year_month::month() const NOEXCEPT {return m_;} +CONSTCD11 inline bool year_month::ok() const NOEXCEPT {return y_.ok() && m_.ok();} + +template +CONSTCD14 +inline +year_month& +year_month::operator+=(const months& dm) NOEXCEPT +{ + *this = *this + dm; + return *this; +} + +template +CONSTCD14 +inline +year_month& +year_month::operator-=(const months& dm) NOEXCEPT +{ + *this = *this - dm; + return *this; +} + +CONSTCD14 +inline +year_month& +year_month::operator+=(const years& dy) NOEXCEPT +{ + *this = *this + dy; + return *this; +} + +CONSTCD14 +inline +year_month& +year_month::operator-=(const years& dy) NOEXCEPT +{ + *this = *this - dy; + return *this; +} + +CONSTCD11 +inline +bool +operator==(const year_month& x, const year_month& y) NOEXCEPT +{ + return x.year() == y.year() && x.month() == y.month(); +} + +CONSTCD11 +inline +bool +operator!=(const year_month& x, const year_month& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year_month& x, const year_month& y) NOEXCEPT +{ + return x.year() < y.year() ? true + : (x.year() > y.year() ? false + : (x.month() < y.month())); +} + +CONSTCD11 +inline +bool +operator>(const year_month& x, const year_month& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year_month& x, const year_month& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year_month& x, const year_month& y) NOEXCEPT +{ + return !(x < y); +} + +template +CONSTCD14 +inline +year_month +operator+(const year_month& ym, const months& dm) NOEXCEPT +{ + auto dmi = static_cast(static_cast(ym.month())) - 1 + dm.count(); + auto dy = (dmi >= 0 ? dmi : dmi-11) / 12; + dmi = dmi - dy * 12 + 1; + return (ym.year() + years(dy)) / month(static_cast(dmi)); +} + +template +CONSTCD14 +inline +year_month +operator+(const months& dm, const year_month& ym) NOEXCEPT +{ + return ym + dm; +} + +template +CONSTCD14 +inline +year_month +operator-(const year_month& ym, const months& dm) NOEXCEPT +{ + return ym + -dm; +} + +CONSTCD11 +inline +months +operator-(const year_month& x, const year_month& y) NOEXCEPT +{ + return (x.year() - y.year()) + + months(static_cast(x.month()) - static_cast(y.month())); +} + +CONSTCD11 +inline +year_month +operator+(const year_month& ym, const years& dy) NOEXCEPT +{ + return (ym.year() + dy) / ym.month(); +} + +CONSTCD11 +inline +year_month +operator+(const years& dy, const year_month& ym) NOEXCEPT +{ + return ym + dy; +} + +CONSTCD11 +inline +year_month +operator-(const year_month& ym, const years& dy) NOEXCEPT +{ + return ym + -dy; +} + +namespace detail +{ + +template +std::basic_ostream& +low_level_fmt(std::basic_ostream& os, const year_month& ym) +{ + low_level_fmt(os, ym.year()) << '/'; + return low_level_fmt(os, ym.month()); +} + +} // namespace detail + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month& ym) +{ + detail::low_level_fmt(os, ym); + if (!ym.ok()) + os << " is not a valid year_month"; + return os; +} + +// month_day + +CONSTCD11 +inline +month_day::month_day(const date::month& m, const date::day& d) NOEXCEPT + : m_(m) + , d_(d) + {} + +CONSTCD11 inline date::month month_day::month() const NOEXCEPT {return m_;} +CONSTCD11 inline date::day month_day::day() const NOEXCEPT {return d_;} + +CONSTCD14 +inline +bool +month_day::ok() const NOEXCEPT +{ + CONSTDATA date::day d[] = + { + date::day(31), date::day(29), date::day(31), + date::day(30), date::day(31), date::day(30), + date::day(31), date::day(31), date::day(30), + date::day(31), date::day(30), date::day(31) + }; + return m_.ok() && date::day{1} <= d_ && d_ <= d[static_cast(m_)-1]; +} + +CONSTCD11 +inline +bool +operator==(const month_day& x, const month_day& y) NOEXCEPT +{ + return x.month() == y.month() && x.day() == y.day(); +} + +CONSTCD11 +inline +bool +operator!=(const month_day& x, const month_day& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const month_day& x, const month_day& y) NOEXCEPT +{ + return x.month() < y.month() ? true + : (x.month() > y.month() ? false + : (x.day() < y.day())); +} + +CONSTCD11 +inline +bool +operator>(const month_day& x, const month_day& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const month_day& x, const month_day& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const month_day& x, const month_day& y) NOEXCEPT +{ + return !(x < y); +} + +namespace detail +{ + +template +std::basic_ostream& +low_level_fmt(std::basic_ostream& os, const month_day& md) +{ + low_level_fmt(os, md.month()) << '/'; + return low_level_fmt(os, md.day()); +} + +} // namespace detail + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_day& md) +{ + detail::low_level_fmt(os, md); + if (!md.ok()) + os << " is not a valid month_day"; + return os; +} + +// month_day_last + +CONSTCD11 inline month month_day_last::month() const NOEXCEPT {return m_;} +CONSTCD11 inline bool month_day_last::ok() const NOEXCEPT {return m_.ok();} +CONSTCD11 inline month_day_last::month_day_last(const date::month& m) NOEXCEPT : m_(m) {} + +CONSTCD11 +inline +bool +operator==(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return x.month() == y.month(); +} + +CONSTCD11 +inline +bool +operator!=(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return x.month() < y.month(); +} + +CONSTCD11 +inline +bool +operator>(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return !(x < y); +} + +namespace detail +{ + +template +std::basic_ostream& +low_level_fmt(std::basic_ostream& os, const month_day_last& mdl) +{ + return low_level_fmt(os, mdl.month()) << "/last"; +} + +} // namespace detail + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_day_last& mdl) +{ + detail::low_level_fmt(os, mdl); + if (!mdl.ok()) + os << " is not a valid month_day_last"; + return os; +} + +// month_weekday + +CONSTCD11 +inline +month_weekday::month_weekday(const date::month& m, + const date::weekday_indexed& wdi) NOEXCEPT + : m_(m) + , wdi_(wdi) + {} + +CONSTCD11 inline month month_weekday::month() const NOEXCEPT {return m_;} + +CONSTCD11 +inline +weekday_indexed +month_weekday::weekday_indexed() const NOEXCEPT +{ + return wdi_; +} + +CONSTCD11 +inline +bool +month_weekday::ok() const NOEXCEPT +{ + return m_.ok() && wdi_.ok(); +} + +CONSTCD11 +inline +bool +operator==(const month_weekday& x, const month_weekday& y) NOEXCEPT +{ + return x.month() == y.month() && x.weekday_indexed() == y.weekday_indexed(); +} + +CONSTCD11 +inline +bool +operator!=(const month_weekday& x, const month_weekday& y) NOEXCEPT +{ + return !(x == y); +} + +namespace detail +{ + +template +std::basic_ostream& +low_level_fmt(std::basic_ostream& os, const month_weekday& mwd) +{ + low_level_fmt(os, mwd.month()) << '/'; + return low_level_fmt(os, mwd.weekday_indexed()); +} + +} // namespace detail + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_weekday& mwd) +{ + detail::low_level_fmt(os, mwd); + if (!mwd.ok()) + os << " is not a valid month_weekday"; + return os; +} + +// month_weekday_last + +CONSTCD11 +inline +month_weekday_last::month_weekday_last(const date::month& m, + const date::weekday_last& wdl) NOEXCEPT + : m_(m) + , wdl_(wdl) + {} + +CONSTCD11 inline month month_weekday_last::month() const NOEXCEPT {return m_;} + +CONSTCD11 +inline +weekday_last +month_weekday_last::weekday_last() const NOEXCEPT +{ + return wdl_; +} + +CONSTCD11 +inline +bool +month_weekday_last::ok() const NOEXCEPT +{ + return m_.ok() && wdl_.ok(); +} + +CONSTCD11 +inline +bool +operator==(const month_weekday_last& x, const month_weekday_last& y) NOEXCEPT +{ + return x.month() == y.month() && x.weekday_last() == y.weekday_last(); +} + +CONSTCD11 +inline +bool +operator!=(const month_weekday_last& x, const month_weekday_last& y) NOEXCEPT +{ + return !(x == y); +} + +namespace detail +{ + +template +std::basic_ostream& +low_level_fmt(std::basic_ostream& os, const month_weekday_last& mwdl) +{ + low_level_fmt(os, mwdl.month()) << '/'; + return low_level_fmt(os, mwdl.weekday_last()); +} + +} // namespace detail + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_weekday_last& mwdl) +{ + detail::low_level_fmt(os, mwdl); + if (!mwdl.ok()) + os << " is not a valid month_weekday_last"; + return os; +} + +// year_month_day_last + +CONSTCD11 +inline +year_month_day_last::year_month_day_last(const date::year& y, + const date::month_day_last& mdl) NOEXCEPT + : y_(y) + , mdl_(mdl) + {} + +template +CONSTCD14 +inline +year_month_day_last& +year_month_day_last::operator+=(const months& m) NOEXCEPT +{ + *this = *this + m; + return *this; +} + +template +CONSTCD14 +inline +year_month_day_last& +year_month_day_last::operator-=(const months& m) NOEXCEPT +{ + *this = *this - m; + return *this; +} + +CONSTCD14 +inline +year_month_day_last& +year_month_day_last::operator+=(const years& y) NOEXCEPT +{ + *this = *this + y; + return *this; +} + +CONSTCD14 +inline +year_month_day_last& +year_month_day_last::operator-=(const years& y) NOEXCEPT +{ + *this = *this - y; + return *this; +} + +CONSTCD11 inline year year_month_day_last::year() const NOEXCEPT {return y_;} +CONSTCD11 inline month year_month_day_last::month() const NOEXCEPT {return mdl_.month();} + +CONSTCD11 +inline +month_day_last +year_month_day_last::month_day_last() const NOEXCEPT +{ + return mdl_; +} + +CONSTCD14 +inline +day +year_month_day_last::day() const NOEXCEPT +{ + CONSTDATA date::day d[] = + { + date::day(31), date::day(28), date::day(31), + date::day(30), date::day(31), date::day(30), + date::day(31), date::day(31), date::day(30), + date::day(31), date::day(30), date::day(31) + }; + return (month() != February || !y_.is_leap()) && mdl_.ok() ? + d[static_cast(month()) - 1] : date::day{29}; +} + +CONSTCD14 +inline +year_month_day_last::operator sys_days() const NOEXCEPT +{ + return sys_days(year()/month()/day()); +} + +CONSTCD14 +inline +year_month_day_last::operator local_days() const NOEXCEPT +{ + return local_days(year()/month()/day()); +} + +CONSTCD11 +inline +bool +year_month_day_last::ok() const NOEXCEPT +{ + return y_.ok() && mdl_.ok(); +} + +CONSTCD11 +inline +bool +operator==(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return x.year() == y.year() && x.month_day_last() == y.month_day_last(); +} + +CONSTCD11 +inline +bool +operator!=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return x.year() < y.year() ? true + : (x.year() > y.year() ? false + : (x.month_day_last() < y.month_day_last())); +} + +CONSTCD11 +inline +bool +operator>(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return !(x < y); +} + +namespace detail +{ + +template +std::basic_ostream& +low_level_fmt(std::basic_ostream& os, const year_month_day_last& ymdl) +{ + low_level_fmt(os, ymdl.year()) << '/'; + return low_level_fmt(os, ymdl.month_day_last()); +} + +} // namespace detail + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_day_last& ymdl) +{ + detail::low_level_fmt(os, ymdl); + if (!ymdl.ok()) + os << " is not a valid year_month_day_last"; + return os; +} + +template +CONSTCD14 +inline +year_month_day_last +operator+(const year_month_day_last& ymdl, const months& dm) NOEXCEPT +{ + return (ymdl.year() / ymdl.month() + dm) / last; +} + +template +CONSTCD14 +inline +year_month_day_last +operator+(const months& dm, const year_month_day_last& ymdl) NOEXCEPT +{ + return ymdl + dm; +} + +template +CONSTCD14 +inline +year_month_day_last +operator-(const year_month_day_last& ymdl, const months& dm) NOEXCEPT +{ + return ymdl + (-dm); +} + +CONSTCD11 +inline +year_month_day_last +operator+(const year_month_day_last& ymdl, const years& dy) NOEXCEPT +{ + return {ymdl.year()+dy, ymdl.month_day_last()}; +} + +CONSTCD11 +inline +year_month_day_last +operator+(const years& dy, const year_month_day_last& ymdl) NOEXCEPT +{ + return ymdl + dy; +} + +CONSTCD11 +inline +year_month_day_last +operator-(const year_month_day_last& ymdl, const years& dy) NOEXCEPT +{ + return ymdl + (-dy); +} + +// year_month_day + +CONSTCD11 +inline +year_month_day::year_month_day(const date::year& y, const date::month& m, + const date::day& d) NOEXCEPT + : y_(y) + , m_(m) + , d_(d) + {} + +CONSTCD14 +inline +year_month_day::year_month_day(const year_month_day_last& ymdl) NOEXCEPT + : y_(ymdl.year()) + , m_(ymdl.month()) + , d_(ymdl.day()) + {} + +CONSTCD14 +inline +year_month_day::year_month_day(sys_days dp) NOEXCEPT + : year_month_day(from_days(dp.time_since_epoch())) + {} + +CONSTCD14 +inline +year_month_day::year_month_day(local_days dp) NOEXCEPT + : year_month_day(from_days(dp.time_since_epoch())) + {} + +CONSTCD11 inline year year_month_day::year() const NOEXCEPT {return y_;} +CONSTCD11 inline month year_month_day::month() const NOEXCEPT {return m_;} +CONSTCD11 inline day year_month_day::day() const NOEXCEPT {return d_;} + +template +CONSTCD14 +inline +year_month_day& +year_month_day::operator+=(const months& m) NOEXCEPT +{ + *this = *this + m; + return *this; +} + +template +CONSTCD14 +inline +year_month_day& +year_month_day::operator-=(const months& m) NOEXCEPT +{ + *this = *this - m; + return *this; +} + +CONSTCD14 +inline +year_month_day& +year_month_day::operator+=(const years& y) NOEXCEPT +{ + *this = *this + y; + return *this; +} + +CONSTCD14 +inline +year_month_day& +year_month_day::operator-=(const years& y) NOEXCEPT +{ + *this = *this - y; + return *this; +} + +CONSTCD14 +inline +days +year_month_day::to_days() const NOEXCEPT +{ + static_assert(std::numeric_limits::digits >= 18, + "This algorithm has not been ported to a 16 bit unsigned integer"); + static_assert(std::numeric_limits::digits >= 20, + "This algorithm has not been ported to a 16 bit signed integer"); + auto const y = static_cast(y_) - (m_ <= February); + auto const m = static_cast(m_); + auto const d = static_cast(d_); + auto const era = (y >= 0 ? y : y-399) / 400; + auto const yoe = static_cast(y - era * 400); // [0, 399] + auto const doy = (153*(m > 2 ? m-3 : m+9) + 2)/5 + d-1; // [0, 365] + auto const doe = yoe * 365 + yoe/4 - yoe/100 + doy; // [0, 146096] + return days{era * 146097 + static_cast(doe) - 719468}; +} + +CONSTCD14 +inline +year_month_day::operator sys_days() const NOEXCEPT +{ + return sys_days{to_days()}; +} + +CONSTCD14 +inline +year_month_day::operator local_days() const NOEXCEPT +{ + return local_days{to_days()}; +} + +CONSTCD14 +inline +bool +year_month_day::ok() const NOEXCEPT +{ + if (!(y_.ok() && m_.ok())) + return false; + return date::day{1} <= d_ && d_ <= (y_ / m_ / last).day(); +} + +CONSTCD11 +inline +bool +operator==(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return x.year() == y.year() && x.month() == y.month() && x.day() == y.day(); +} + +CONSTCD11 +inline +bool +operator!=(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return x.year() < y.year() ? true + : (x.year() > y.year() ? false + : (x.month() < y.month() ? true + : (x.month() > y.month() ? false + : (x.day() < y.day())))); +} + +CONSTCD11 +inline +bool +operator>(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return !(x < y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_day& ymd) +{ + detail::save_ostream _(os); + os.fill('0'); + os.flags(std::ios::dec | std::ios::right); + os.imbue(std::locale::classic()); + os << static_cast(ymd.year()) << '-'; + os.width(2); + os << static_cast(ymd.month()) << '-'; + os.width(2); + os << static_cast(ymd.day()); + if (!ymd.ok()) + os << " is not a valid year_month_day"; + return os; +} + +CONSTCD14 +inline +year_month_day +year_month_day::from_days(days dp) NOEXCEPT +{ + static_assert(std::numeric_limits::digits >= 18, + "This algorithm has not been ported to a 16 bit unsigned integer"); + static_assert(std::numeric_limits::digits >= 20, + "This algorithm has not been ported to a 16 bit signed integer"); + auto const z = dp.count() + 719468; + auto const era = (z >= 0 ? z : z - 146096) / 146097; + auto const doe = static_cast(z - era * 146097); // [0, 146096] + auto const yoe = (doe - doe/1460 + doe/36524 - doe/146096) / 365; // [0, 399] + auto const y = static_cast(yoe) + era * 400; + auto const doy = doe - (365*yoe + yoe/4 - yoe/100); // [0, 365] + auto const mp = (5*doy + 2)/153; // [0, 11] + auto const d = doy - (153*mp+2)/5 + 1; // [1, 31] + auto const m = mp < 10 ? mp+3 : mp-9; // [1, 12] + return year_month_day{date::year{y + (m <= 2)}, date::month(m), date::day(d)}; +} + +template +CONSTCD14 +inline +year_month_day +operator+(const year_month_day& ymd, const months& dm) NOEXCEPT +{ + return (ymd.year() / ymd.month() + dm) / ymd.day(); +} + +template +CONSTCD14 +inline +year_month_day +operator+(const months& dm, const year_month_day& ymd) NOEXCEPT +{ + return ymd + dm; +} + +template +CONSTCD14 +inline +year_month_day +operator-(const year_month_day& ymd, const months& dm) NOEXCEPT +{ + return ymd + (-dm); +} + +CONSTCD11 +inline +year_month_day +operator+(const year_month_day& ymd, const years& dy) NOEXCEPT +{ + return (ymd.year() + dy) / ymd.month() / ymd.day(); +} + +CONSTCD11 +inline +year_month_day +operator+(const years& dy, const year_month_day& ymd) NOEXCEPT +{ + return ymd + dy; +} + +CONSTCD11 +inline +year_month_day +operator-(const year_month_day& ymd, const years& dy) NOEXCEPT +{ + return ymd + (-dy); +} + +// year_month_weekday + +CONSTCD11 +inline +year_month_weekday::year_month_weekday(const date::year& y, const date::month& m, + const date::weekday_indexed& wdi) + NOEXCEPT + : y_(y) + , m_(m) + , wdi_(wdi) + {} + +CONSTCD14 +inline +year_month_weekday::year_month_weekday(const sys_days& dp) NOEXCEPT + : year_month_weekday(from_days(dp.time_since_epoch())) + {} + +CONSTCD14 +inline +year_month_weekday::year_month_weekday(const local_days& dp) NOEXCEPT + : year_month_weekday(from_days(dp.time_since_epoch())) + {} + +template +CONSTCD14 +inline +year_month_weekday& +year_month_weekday::operator+=(const months& m) NOEXCEPT +{ + *this = *this + m; + return *this; +} + +template +CONSTCD14 +inline +year_month_weekday& +year_month_weekday::operator-=(const months& m) NOEXCEPT +{ + *this = *this - m; + return *this; +} + +CONSTCD14 +inline +year_month_weekday& +year_month_weekday::operator+=(const years& y) NOEXCEPT +{ + *this = *this + y; + return *this; +} + +CONSTCD14 +inline +year_month_weekday& +year_month_weekday::operator-=(const years& y) NOEXCEPT +{ + *this = *this - y; + return *this; +} + +CONSTCD11 inline year year_month_weekday::year() const NOEXCEPT {return y_;} +CONSTCD11 inline month year_month_weekday::month() const NOEXCEPT {return m_;} + +CONSTCD11 +inline +weekday +year_month_weekday::weekday() const NOEXCEPT +{ + return wdi_.weekday(); +} + +CONSTCD11 +inline +unsigned +year_month_weekday::index() const NOEXCEPT +{ + return wdi_.index(); +} + +CONSTCD11 +inline +weekday_indexed +year_month_weekday::weekday_indexed() const NOEXCEPT +{ + return wdi_; +} + +CONSTCD14 +inline +year_month_weekday::operator sys_days() const NOEXCEPT +{ + return sys_days{to_days()}; +} + +CONSTCD14 +inline +year_month_weekday::operator local_days() const NOEXCEPT +{ + return local_days{to_days()}; +} + +CONSTCD14 +inline +bool +year_month_weekday::ok() const NOEXCEPT +{ + if (!y_.ok() || !m_.ok() || !wdi_.weekday().ok() || wdi_.index() < 1) + return false; + if (wdi_.index() <= 4) + return true; + auto d2 = wdi_.weekday() - date::weekday(static_cast(y_/m_/1)) + + days((wdi_.index()-1)*7 + 1); + return static_cast(d2.count()) <= static_cast((y_/m_/last).day()); +} + +CONSTCD14 +inline +year_month_weekday +year_month_weekday::from_days(days d) NOEXCEPT +{ + sys_days dp{d}; + auto const wd = date::weekday(dp); + auto const ymd = year_month_day(dp); + return {ymd.year(), ymd.month(), wd[(static_cast(ymd.day())-1)/7+1]}; +} + +CONSTCD14 +inline +days +year_month_weekday::to_days() const NOEXCEPT +{ + auto d = sys_days(y_/m_/1); + return (d + (wdi_.weekday() - date::weekday(d) + days{(wdi_.index()-1)*7}) + ).time_since_epoch(); +} + +CONSTCD11 +inline +bool +operator==(const year_month_weekday& x, const year_month_weekday& y) NOEXCEPT +{ + return x.year() == y.year() && x.month() == y.month() && + x.weekday_indexed() == y.weekday_indexed(); +} + +CONSTCD11 +inline +bool +operator!=(const year_month_weekday& x, const year_month_weekday& y) NOEXCEPT +{ + return !(x == y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_weekday& ymwdi) +{ + detail::low_level_fmt(os, ymwdi.year()) << '/'; + detail::low_level_fmt(os, ymwdi.month()) << '/'; + detail::low_level_fmt(os, ymwdi.weekday_indexed()); + if (!ymwdi.ok()) + os << " is not a valid year_month_weekday"; + return os; +} + +template +CONSTCD14 +inline +year_month_weekday +operator+(const year_month_weekday& ymwd, const months& dm) NOEXCEPT +{ + return (ymwd.year() / ymwd.month() + dm) / ymwd.weekday_indexed(); +} + +template +CONSTCD14 +inline +year_month_weekday +operator+(const months& dm, const year_month_weekday& ymwd) NOEXCEPT +{ + return ymwd + dm; +} + +template +CONSTCD14 +inline +year_month_weekday +operator-(const year_month_weekday& ymwd, const months& dm) NOEXCEPT +{ + return ymwd + (-dm); +} + +CONSTCD11 +inline +year_month_weekday +operator+(const year_month_weekday& ymwd, const years& dy) NOEXCEPT +{ + return {ymwd.year()+dy, ymwd.month(), ymwd.weekday_indexed()}; +} + +CONSTCD11 +inline +year_month_weekday +operator+(const years& dy, const year_month_weekday& ymwd) NOEXCEPT +{ + return ymwd + dy; +} + +CONSTCD11 +inline +year_month_weekday +operator-(const year_month_weekday& ymwd, const years& dy) NOEXCEPT +{ + return ymwd + (-dy); +} + +// year_month_weekday_last + +CONSTCD11 +inline +year_month_weekday_last::year_month_weekday_last(const date::year& y, + const date::month& m, + const date::weekday_last& wdl) NOEXCEPT + : y_(y) + , m_(m) + , wdl_(wdl) + {} + +template +CONSTCD14 +inline +year_month_weekday_last& +year_month_weekday_last::operator+=(const months& m) NOEXCEPT +{ + *this = *this + m; + return *this; +} + +template +CONSTCD14 +inline +year_month_weekday_last& +year_month_weekday_last::operator-=(const months& m) NOEXCEPT +{ + *this = *this - m; + return *this; +} + +CONSTCD14 +inline +year_month_weekday_last& +year_month_weekday_last::operator+=(const years& y) NOEXCEPT +{ + *this = *this + y; + return *this; +} + +CONSTCD14 +inline +year_month_weekday_last& +year_month_weekday_last::operator-=(const years& y) NOEXCEPT +{ + *this = *this - y; + return *this; +} + +CONSTCD11 inline year year_month_weekday_last::year() const NOEXCEPT {return y_;} +CONSTCD11 inline month year_month_weekday_last::month() const NOEXCEPT {return m_;} + +CONSTCD11 +inline +weekday +year_month_weekday_last::weekday() const NOEXCEPT +{ + return wdl_.weekday(); +} + +CONSTCD11 +inline +weekday_last +year_month_weekday_last::weekday_last() const NOEXCEPT +{ + return wdl_; +} + +CONSTCD14 +inline +year_month_weekday_last::operator sys_days() const NOEXCEPT +{ + return sys_days{to_days()}; +} + +CONSTCD14 +inline +year_month_weekday_last::operator local_days() const NOEXCEPT +{ + return local_days{to_days()}; +} + +CONSTCD11 +inline +bool +year_month_weekday_last::ok() const NOEXCEPT +{ + return y_.ok() && m_.ok() && wdl_.ok(); +} + +CONSTCD14 +inline +days +year_month_weekday_last::to_days() const NOEXCEPT +{ + auto const d = sys_days(y_/m_/last); + return (d - (date::weekday{d} - wdl_.weekday())).time_since_epoch(); +} + +CONSTCD11 +inline +bool +operator==(const year_month_weekday_last& x, const year_month_weekday_last& y) NOEXCEPT +{ + return x.year() == y.year() && x.month() == y.month() && + x.weekday_last() == y.weekday_last(); +} + +CONSTCD11 +inline +bool +operator!=(const year_month_weekday_last& x, const year_month_weekday_last& y) NOEXCEPT +{ + return !(x == y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_weekday_last& ymwdl) +{ + detail::low_level_fmt(os, ymwdl.year()) << '/'; + detail::low_level_fmt(os, ymwdl.month()) << '/'; + detail::low_level_fmt(os, ymwdl.weekday_last()); + if (!ymwdl.ok()) + os << " is not a valid year_month_weekday_last"; + return os; +} + +template +CONSTCD14 +inline +year_month_weekday_last +operator+(const year_month_weekday_last& ymwdl, const months& dm) NOEXCEPT +{ + return (ymwdl.year() / ymwdl.month() + dm) / ymwdl.weekday_last(); +} + +template +CONSTCD14 +inline +year_month_weekday_last +operator+(const months& dm, const year_month_weekday_last& ymwdl) NOEXCEPT +{ + return ymwdl + dm; +} + +template +CONSTCD14 +inline +year_month_weekday_last +operator-(const year_month_weekday_last& ymwdl, const months& dm) NOEXCEPT +{ + return ymwdl + (-dm); +} + +CONSTCD11 +inline +year_month_weekday_last +operator+(const year_month_weekday_last& ymwdl, const years& dy) NOEXCEPT +{ + return {ymwdl.year()+dy, ymwdl.month(), ymwdl.weekday_last()}; +} + +CONSTCD11 +inline +year_month_weekday_last +operator+(const years& dy, const year_month_weekday_last& ymwdl) NOEXCEPT +{ + return ymwdl + dy; +} + +CONSTCD11 +inline +year_month_weekday_last +operator-(const year_month_weekday_last& ymwdl, const years& dy) NOEXCEPT +{ + return ymwdl + (-dy); +} + +// year_month from operator/() + +CONSTCD11 +inline +year_month +operator/(const year& y, const month& m) NOEXCEPT +{ + return {y, m}; +} + +CONSTCD11 +inline +year_month +operator/(const year& y, int m) NOEXCEPT +{ + return y / month(static_cast(m)); +} + +// month_day from operator/() + +CONSTCD11 +inline +month_day +operator/(const month& m, const day& d) NOEXCEPT +{ + return {m, d}; +} + +CONSTCD11 +inline +month_day +operator/(const day& d, const month& m) NOEXCEPT +{ + return m / d; +} + +CONSTCD11 +inline +month_day +operator/(const month& m, int d) NOEXCEPT +{ + return m / day(static_cast(d)); +} + +CONSTCD11 +inline +month_day +operator/(int m, const day& d) NOEXCEPT +{ + return month(static_cast(m)) / d; +} + +CONSTCD11 inline month_day operator/(const day& d, int m) NOEXCEPT {return m / d;} + +// month_day_last from operator/() + +CONSTCD11 +inline +month_day_last +operator/(const month& m, last_spec) NOEXCEPT +{ + return month_day_last{m}; +} + +CONSTCD11 +inline +month_day_last +operator/(last_spec, const month& m) NOEXCEPT +{ + return m/last; +} + +CONSTCD11 +inline +month_day_last +operator/(int m, last_spec) NOEXCEPT +{ + return month(static_cast(m))/last; +} + +CONSTCD11 +inline +month_day_last +operator/(last_spec, int m) NOEXCEPT +{ + return m/last; +} + +// month_weekday from operator/() + +CONSTCD11 +inline +month_weekday +operator/(const month& m, const weekday_indexed& wdi) NOEXCEPT +{ + return {m, wdi}; +} + +CONSTCD11 +inline +month_weekday +operator/(const weekday_indexed& wdi, const month& m) NOEXCEPT +{ + return m / wdi; +} + +CONSTCD11 +inline +month_weekday +operator/(int m, const weekday_indexed& wdi) NOEXCEPT +{ + return month(static_cast(m)) / wdi; +} + +CONSTCD11 +inline +month_weekday +operator/(const weekday_indexed& wdi, int m) NOEXCEPT +{ + return m / wdi; +} + +// month_weekday_last from operator/() + +CONSTCD11 +inline +month_weekday_last +operator/(const month& m, const weekday_last& wdl) NOEXCEPT +{ + return {m, wdl}; +} + +CONSTCD11 +inline +month_weekday_last +operator/(const weekday_last& wdl, const month& m) NOEXCEPT +{ + return m / wdl; +} + +CONSTCD11 +inline +month_weekday_last +operator/(int m, const weekday_last& wdl) NOEXCEPT +{ + return month(static_cast(m)) / wdl; +} + +CONSTCD11 +inline +month_weekday_last +operator/(const weekday_last& wdl, int m) NOEXCEPT +{ + return m / wdl; +} + +// year_month_day from operator/() + +CONSTCD11 +inline +year_month_day +operator/(const year_month& ym, const day& d) NOEXCEPT +{ + return {ym.year(), ym.month(), d}; +} + +CONSTCD11 +inline +year_month_day +operator/(const year_month& ym, int d) NOEXCEPT +{ + return ym / day(static_cast(d)); +} + +CONSTCD11 +inline +year_month_day +operator/(const year& y, const month_day& md) NOEXCEPT +{ + return y / md.month() / md.day(); +} + +CONSTCD11 +inline +year_month_day +operator/(int y, const month_day& md) NOEXCEPT +{ + return year(y) / md; +} + +CONSTCD11 +inline +year_month_day +operator/(const month_day& md, const year& y) NOEXCEPT +{ + return y / md; +} + +CONSTCD11 +inline +year_month_day +operator/(const month_day& md, int y) NOEXCEPT +{ + return year(y) / md; +} + +// year_month_day_last from operator/() + +CONSTCD11 +inline +year_month_day_last +operator/(const year_month& ym, last_spec) NOEXCEPT +{ + return {ym.year(), month_day_last{ym.month()}}; +} + +CONSTCD11 +inline +year_month_day_last +operator/(const year& y, const month_day_last& mdl) NOEXCEPT +{ + return {y, mdl}; +} + +CONSTCD11 +inline +year_month_day_last +operator/(int y, const month_day_last& mdl) NOEXCEPT +{ + return year(y) / mdl; +} + +CONSTCD11 +inline +year_month_day_last +operator/(const month_day_last& mdl, const year& y) NOEXCEPT +{ + return y / mdl; +} + +CONSTCD11 +inline +year_month_day_last +operator/(const month_day_last& mdl, int y) NOEXCEPT +{ + return year(y) / mdl; +} + +// year_month_weekday from operator/() + +CONSTCD11 +inline +year_month_weekday +operator/(const year_month& ym, const weekday_indexed& wdi) NOEXCEPT +{ + return {ym.year(), ym.month(), wdi}; +} + +CONSTCD11 +inline +year_month_weekday +operator/(const year& y, const month_weekday& mwd) NOEXCEPT +{ + return {y, mwd.month(), mwd.weekday_indexed()}; +} + +CONSTCD11 +inline +year_month_weekday +operator/(int y, const month_weekday& mwd) NOEXCEPT +{ + return year(y) / mwd; +} + +CONSTCD11 +inline +year_month_weekday +operator/(const month_weekday& mwd, const year& y) NOEXCEPT +{ + return y / mwd; +} + +CONSTCD11 +inline +year_month_weekday +operator/(const month_weekday& mwd, int y) NOEXCEPT +{ + return year(y) / mwd; +} + +// year_month_weekday_last from operator/() + +CONSTCD11 +inline +year_month_weekday_last +operator/(const year_month& ym, const weekday_last& wdl) NOEXCEPT +{ + return {ym.year(), ym.month(), wdl}; +} + +CONSTCD11 +inline +year_month_weekday_last +operator/(const year& y, const month_weekday_last& mwdl) NOEXCEPT +{ + return {y, mwdl.month(), mwdl.weekday_last()}; +} + +CONSTCD11 +inline +year_month_weekday_last +operator/(int y, const month_weekday_last& mwdl) NOEXCEPT +{ + return year(y) / mwdl; +} + +CONSTCD11 +inline +year_month_weekday_last +operator/(const month_weekday_last& mwdl, const year& y) NOEXCEPT +{ + return y / mwdl; +} + +CONSTCD11 +inline +year_month_weekday_last +operator/(const month_weekday_last& mwdl, int y) NOEXCEPT +{ + return year(y) / mwdl; +} + +template +struct fields; + +template +std::basic_ostream& +to_stream(std::basic_ostream& os, const CharT* fmt, + const fields& fds, const std::string* abbrev = nullptr, + const std::chrono::seconds* offset_sec = nullptr); + +template +std::basic_istream& +from_stream(std::basic_istream& is, const CharT* fmt, + fields& fds, std::basic_string* abbrev = nullptr, + std::chrono::minutes* offset = nullptr); + +// hh_mm_ss + +namespace detail +{ + +struct undocumented {explicit undocumented() = default;}; + +// width::value is the number of fractional decimal digits in 1/n +// width<0>::value and width<1>::value are defined to be 0 +// If 1/n takes more than 18 fractional decimal digits, +// the result is truncated to 19. +// Example: width<2>::value == 1 +// Example: width<3>::value == 19 +// Example: width<4>::value == 2 +// Example: width<10>::value == 1 +// Example: width<1000>::value == 3 +template +struct width +{ + static_assert(d > 0, "width called with zero denominator"); + static CONSTDATA unsigned value = 1 + width::value; +}; + +template +struct width +{ + static CONSTDATA unsigned value = 0; +}; + +template +struct static_pow10 +{ +private: + static CONSTDATA std::uint64_t h = static_pow10::value; +public: + static CONSTDATA std::uint64_t value = h * h * (exp % 2 ? 10 : 1); +}; + +template <> +struct static_pow10<0> +{ + static CONSTDATA std::uint64_t value = 1; +}; + +template +class decimal_format_seconds +{ + using CT = typename std::common_type::type; + using rep = typename CT::rep; + static unsigned CONSTDATA trial_width = + detail::width::value; +public: + static unsigned CONSTDATA width = trial_width < 19 ? trial_width : 6u; + using precision = std::chrono::duration::value>>; + +private: + std::chrono::seconds s_; + precision sub_s_; + +public: + CONSTCD11 decimal_format_seconds() + : s_() + , sub_s_() + {} + + CONSTCD11 explicit decimal_format_seconds(const Duration& d) NOEXCEPT + : s_(std::chrono::duration_cast(d)) + , sub_s_(std::chrono::duration_cast(d - s_)) + {} + + CONSTCD14 std::chrono::seconds& seconds() NOEXCEPT {return s_;} + CONSTCD11 std::chrono::seconds seconds() const NOEXCEPT {return s_;} + CONSTCD11 precision subseconds() const NOEXCEPT {return sub_s_;} + + CONSTCD14 precision to_duration() const NOEXCEPT + { + return s_ + sub_s_; + } + + CONSTCD11 bool in_conventional_range() const NOEXCEPT + { + return sub_s_ < std::chrono::seconds{1} && s_ < std::chrono::minutes{1}; + } + + template + friend + std::basic_ostream& + operator<<(std::basic_ostream& os, const decimal_format_seconds& x) + { + return x.print(os, std::chrono::treat_as_floating_point{}); + } + + template + std::basic_ostream& + print(std::basic_ostream& os, std::true_type) const + { + date::detail::save_ostream _(os); + std::chrono::duration d = s_ + sub_s_; + if (d < std::chrono::seconds{10}) + os << '0'; + os.precision(width+6); + os << std::fixed << d.count(); + return os; + } + + template + std::basic_ostream& + print(std::basic_ostream& os, std::false_type) const + { + date::detail::save_ostream _(os); + os.fill('0'); + os.flags(std::ios::dec | std::ios::right); + os.width(2); + os << s_.count(); + if (width > 0) + { +#if !ONLY_C_LOCALE + os << std::use_facet>(os.getloc()).decimal_point(); +#else + os << '.'; +#endif + date::detail::save_ostream _s(os); + os.imbue(std::locale::classic()); + os.width(width); + os << sub_s_.count(); + } + return os; + } +}; + +template +inline +CONSTCD11 +typename std::enable_if + < + std::numeric_limits::is_signed, + std::chrono::duration + >::type +abs(std::chrono::duration d) +{ + return d >= d.zero() ? +d : -d; +} + +template +inline +CONSTCD11 +typename std::enable_if + < + !std::numeric_limits::is_signed, + std::chrono::duration + >::type +abs(std::chrono::duration d) +{ + return d; +} + +} // namespace detail + +template +class hh_mm_ss +{ + using dfs = detail::decimal_format_seconds::type>; + + std::chrono::hours h_; + std::chrono::minutes m_; + dfs s_; + bool neg_; + +public: + static unsigned CONSTDATA fractional_width = dfs::width; + using precision = typename dfs::precision; + + CONSTCD11 hh_mm_ss() NOEXCEPT + : hh_mm_ss(Duration::zero()) + {} + + CONSTCD11 explicit hh_mm_ss(Duration d) NOEXCEPT + : h_(std::chrono::duration_cast(detail::abs(d))) + , m_(std::chrono::duration_cast(detail::abs(d)) - h_) + , s_(detail::abs(d) - h_ - m_) + , neg_(d < Duration::zero()) + {} + + CONSTCD11 std::chrono::hours hours() const NOEXCEPT {return h_;} + CONSTCD11 std::chrono::minutes minutes() const NOEXCEPT {return m_;} + CONSTCD11 std::chrono::seconds seconds() const NOEXCEPT {return s_.seconds();} + CONSTCD14 std::chrono::seconds& + seconds(detail::undocumented) NOEXCEPT {return s_.seconds();} + CONSTCD11 precision subseconds() const NOEXCEPT {return s_.subseconds();} + CONSTCD11 bool is_negative() const NOEXCEPT {return neg_;} + + CONSTCD11 explicit operator precision() const NOEXCEPT {return to_duration();} + CONSTCD11 precision to_duration() const NOEXCEPT + {return (s_.to_duration() + m_ + h_) * (1-2*neg_);} + + CONSTCD11 bool in_conventional_range() const NOEXCEPT + { + return !neg_ && h_ < days{1} && m_ < std::chrono::hours{1} && + s_.in_conventional_range(); + } + +private: + + template + friend + std::basic_ostream& + operator<<(std::basic_ostream& os, hh_mm_ss const& tod) + { + if (tod.is_negative()) + os << '-'; + if (tod.h_ < std::chrono::hours{10}) + os << '0'; + os << tod.h_.count() << ':'; + if (tod.m_ < std::chrono::minutes{10}) + os << '0'; + os << tod.m_.count() << ':' << tod.s_; + return os; + } + + template + friend + std::basic_ostream& + date::to_stream(std::basic_ostream& os, const CharT* fmt, + const fields& fds, const std::string* abbrev, + const std::chrono::seconds* offset_sec); + + template + friend + std::basic_istream& + date::from_stream(std::basic_istream& is, const CharT* fmt, + fields& fds, + std::basic_string* abbrev, std::chrono::minutes* offset); +}; + +inline +CONSTCD14 +bool +is_am(std::chrono::hours const& h) NOEXCEPT +{ + using std::chrono::hours; + return hours{0} <= h && h < hours{12}; +} + +inline +CONSTCD14 +bool +is_pm(std::chrono::hours const& h) NOEXCEPT +{ + using std::chrono::hours; + return hours{12} <= h && h < hours{24}; +} + +inline +CONSTCD14 +std::chrono::hours +make12(std::chrono::hours h) NOEXCEPT +{ + using std::chrono::hours; + if (h < hours{12}) + { + if (h == hours{0}) + h = hours{12}; + } + else + { + if (h != hours{12}) + h = h - hours{12}; + } + return h; +} + +inline +CONSTCD14 +std::chrono::hours +make24(std::chrono::hours h, bool is_pm) NOEXCEPT +{ + using std::chrono::hours; + if (is_pm) + { + if (h != hours{12}) + h = h + hours{12}; + } + else if (h == hours{12}) + h = hours{0}; + return h; +} + +template +using time_of_day = hh_mm_ss; + +template +CONSTCD11 +inline +hh_mm_ss> +make_time(const std::chrono::duration& d) +{ + return hh_mm_ss>(d); +} + +template +inline +typename std::enable_if +< + !std::is_convertible::value, + std::basic_ostream& +>::type +operator<<(std::basic_ostream& os, const sys_time& tp) +{ + auto const dp = date::floor(tp); + return os << year_month_day(dp) << ' ' << make_time(tp-dp); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const sys_days& dp) +{ + return os << year_month_day(dp); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const local_time& ut) +{ + return (os << sys_time{ut.time_since_epoch()}); +} + +namespace detail +{ + +template +class string_literal; + +template +inline +CONSTCD14 +string_literal::type, + N1 + N2 - 1> +operator+(const string_literal& x, const string_literal& y) NOEXCEPT; + +template +class string_literal +{ + CharT p_[N]; + + CONSTCD11 string_literal() NOEXCEPT + : p_{} + {} + +public: + using const_iterator = const CharT*; + + string_literal(string_literal const&) = default; + string_literal& operator=(string_literal const&) = delete; + + template ::type> + CONSTCD11 string_literal(CharT c) NOEXCEPT + : p_{c} + { + } + + template ::type> + CONSTCD11 string_literal(CharT c1, CharT c2) NOEXCEPT + : p_{c1, c2} + { + } + + template ::type> + CONSTCD11 string_literal(CharT c1, CharT c2, CharT c3) NOEXCEPT + : p_{c1, c2, c3} + { + } + + CONSTCD14 string_literal(const CharT(&a)[N]) NOEXCEPT + : p_{} + { + for (std::size_t i = 0; i < N; ++i) + p_[i] = a[i]; + } + + template ::type> + CONSTCD14 string_literal(const char(&a)[N]) NOEXCEPT + : p_{} + { + for (std::size_t i = 0; i < N; ++i) + p_[i] = a[i]; + } + + template ::value>::type> + CONSTCD14 string_literal(string_literal const& a) NOEXCEPT + : p_{} + { + for (std::size_t i = 0; i < N; ++i) + p_[i] = a[i]; + } + + CONSTCD11 const CharT* data() const NOEXCEPT {return p_;} + CONSTCD11 std::size_t size() const NOEXCEPT {return N-1;} + + CONSTCD11 const_iterator begin() const NOEXCEPT {return p_;} + CONSTCD11 const_iterator end() const NOEXCEPT {return p_ + N-1;} + + CONSTCD11 CharT const& operator[](std::size_t n) const NOEXCEPT + { + return p_[n]; + } + + template + friend + std::basic_ostream& + operator<<(std::basic_ostream& os, const string_literal& s) + { + return os << s.p_; + } + + template + friend + CONSTCD14 + string_literal::type, + N1 + N2 - 1> + operator+(const string_literal& x, const string_literal& y) NOEXCEPT; +}; + +template +CONSTCD11 +inline +string_literal +operator+(const string_literal& x, const string_literal& y) NOEXCEPT +{ + return string_literal(x[0], y[0]); +} + +template +CONSTCD11 +inline +string_literal +operator+(const string_literal& x, const string_literal& y) NOEXCEPT +{ + return string_literal(x[0], x[1], y[0]); +} + +template +CONSTCD14 +inline +string_literal::type, + N1 + N2 - 1> +operator+(const string_literal& x, const string_literal& y) NOEXCEPT +{ + using CT = typename std::conditional::type; + + string_literal r; + std::size_t i = 0; + for (; i < N1-1; ++i) + r.p_[i] = CT(x.p_[i]); + for (std::size_t j = 0; j < N2; ++j, ++i) + r.p_[i] = CT(y.p_[j]); + + return r; +} + + +template +inline +std::basic_string +operator+(std::basic_string x, const string_literal& y) +{ + x.append(y.data(), y.size()); + return x; +} + +#if __cplusplus >= 201402 && (!defined(__EDG_VERSION__) || __EDG_VERSION__ > 411) \ + && (!defined(__SUNPRO_CC) || __SUNPRO_CC > 0x5150) + +template ::value || + std::is_same::value || + std::is_same::value || + std::is_same::value>> +CONSTCD14 +inline +string_literal +msl(CharT c) NOEXCEPT +{ + return string_literal{c}; +} + +CONSTCD14 +inline +std::size_t +to_string_len(std::intmax_t i) +{ + std::size_t r = 0; + do + { + i /= 10; + ++r; + } while (i > 0); + return r; +} + +template +CONSTCD14 +inline +std::enable_if_t +< + N < 10, + string_literal +> +msl() NOEXCEPT +{ + return msl(char(N % 10 + '0')); +} + +template +CONSTCD14 +inline +std::enable_if_t +< + 10 <= N, + string_literal +> +msl() NOEXCEPT +{ + return msl() + msl(char(N % 10 + '0')); +} + +template +CONSTCD14 +inline +std::enable_if_t +< + std::ratio::type::den != 1, + string_literal::type::num) + + to_string_len(std::ratio::type::den) + 4> +> +msl(std::ratio) NOEXCEPT +{ + using R = typename std::ratio::type; + return msl(CharT{'['}) + msl() + msl(CharT{'/'}) + + msl() + msl(CharT{']'}); +} + +template +CONSTCD14 +inline +std::enable_if_t +< + std::ratio::type::den == 1, + string_literal::type::num) + 3> +> +msl(std::ratio) NOEXCEPT +{ + using R = typename std::ratio::type; + return msl(CharT{'['}) + msl() + msl(CharT{']'}); +} + + +#else // __cplusplus < 201402 || (defined(__EDG_VERSION__) && __EDG_VERSION__ <= 411) + +inline +std::string +to_string(std::uint64_t x) +{ + return std::to_string(x); +} + +template +inline +std::basic_string +to_string(std::uint64_t x) +{ + auto y = std::to_string(x); + return std::basic_string(y.begin(), y.end()); +} + +template +inline +typename std::enable_if +< + std::ratio::type::den != 1, + std::basic_string +>::type +msl(std::ratio) +{ + using R = typename std::ratio::type; + return std::basic_string(1, '[') + to_string(R::num) + CharT{'/'} + + to_string(R::den) + CharT{']'}; +} + +template +inline +typename std::enable_if +< + std::ratio::type::den == 1, + std::basic_string +>::type +msl(std::ratio) +{ + using R = typename std::ratio::type; + return std::basic_string(1, '[') + to_string(R::num) + CharT{']'}; +} + +#endif // __cplusplus < 201402 || (defined(__EDG_VERSION__) && __EDG_VERSION__ <= 411) + +template +CONSTCD11 +inline +string_literal +msl(std::atto) NOEXCEPT +{ + return string_literal{'a'}; +} + +template +CONSTCD11 +inline +string_literal +msl(std::femto) NOEXCEPT +{ + return string_literal{'f'}; +} + +template +CONSTCD11 +inline +string_literal +msl(std::pico) NOEXCEPT +{ + return string_literal{'p'}; +} + +template +CONSTCD11 +inline +string_literal +msl(std::nano) NOEXCEPT +{ + return string_literal{'n'}; +} + +template +CONSTCD11 +inline +typename std::enable_if +< + std::is_same::value, + string_literal +>::type +msl(std::micro) NOEXCEPT +{ + return string_literal{'\xC2', '\xB5'}; +} + +template +CONSTCD11 +inline +typename std::enable_if +< + !std::is_same::value, + string_literal +>::type +msl(std::micro) NOEXCEPT +{ + return string_literal{CharT{static_cast('\xB5')}}; +} + +template +CONSTCD11 +inline +string_literal +msl(std::milli) NOEXCEPT +{ + return string_literal{'m'}; +} + +template +CONSTCD11 +inline +string_literal +msl(std::centi) NOEXCEPT +{ + return string_literal{'c'}; +} + +template +CONSTCD11 +inline +string_literal +msl(std::deca) NOEXCEPT +{ + return string_literal{'d', 'a'}; +} + +template +CONSTCD11 +inline +string_literal +msl(std::deci) NOEXCEPT +{ + return string_literal{'d'}; +} + +template +CONSTCD11 +inline +string_literal +msl(std::hecto) NOEXCEPT +{ + return string_literal{'h'}; +} + +template +CONSTCD11 +inline +string_literal +msl(std::kilo) NOEXCEPT +{ + return string_literal{'k'}; +} + +template +CONSTCD11 +inline +string_literal +msl(std::mega) NOEXCEPT +{ + return string_literal{'M'}; +} + +template +CONSTCD11 +inline +string_literal +msl(std::giga) NOEXCEPT +{ + return string_literal{'G'}; +} + +template +CONSTCD11 +inline +string_literal +msl(std::tera) NOEXCEPT +{ + return string_literal{'T'}; +} + +template +CONSTCD11 +inline +string_literal +msl(std::peta) NOEXCEPT +{ + return string_literal{'P'}; +} + +template +CONSTCD11 +inline +string_literal +msl(std::exa) NOEXCEPT +{ + return string_literal{'E'}; +} + +template +CONSTCD11 +inline +auto +get_units(Period p) + -> decltype(msl(p) + string_literal{'s'}) +{ + return msl(p) + string_literal{'s'}; +} + +template +CONSTCD11 +inline +string_literal +get_units(std::ratio<1>) +{ + return string_literal{'s'}; +} + +template +CONSTCD11 +inline +string_literal +get_units(std::ratio<3600>) +{ + return string_literal{'h'}; +} + +template +CONSTCD11 +inline +string_literal +get_units(std::ratio<60>) +{ + return string_literal{'m', 'i', 'n'}; +} + +template +CONSTCD11 +inline +string_literal +get_units(std::ratio<86400>) +{ + return string_literal{'d'}; +} + +template > +struct make_string; + +template <> +struct make_string +{ + template + static + std::string + from(Rep n) + { + return std::to_string(n); + } +}; + +template +struct make_string +{ + template + static + std::basic_string + from(Rep n) + { + auto s = std::to_string(n); + return std::basic_string(s.begin(), s.end()); + } +}; + +template <> +struct make_string +{ + template + static + std::wstring + from(Rep n) + { + return std::to_wstring(n); + } +}; + +template +struct make_string +{ + template + static + std::basic_string + from(Rep n) + { + auto s = std::to_wstring(n); + return std::basic_string(s.begin(), s.end()); + } +}; + +} // namespace detail + +// to_stream + +CONSTDATA year nanyear{-32768}; + +template +struct fields +{ + year_month_day ymd{nanyear/0/0}; + weekday wd{8u}; + hh_mm_ss tod{}; + bool has_tod = false; + +#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ <= 409) + fields() : ymd{nanyear/0/0}, wd{8u}, tod{}, has_tod{false} {} +#else + fields() = default; +#endif + + fields(year_month_day ymd_) : ymd(ymd_) {} + fields(weekday wd_) : wd(wd_) {} + fields(hh_mm_ss tod_) : tod(tod_), has_tod(true) {} + + fields(year_month_day ymd_, weekday wd_) : ymd(ymd_), wd(wd_) {} + fields(year_month_day ymd_, hh_mm_ss tod_) : ymd(ymd_), tod(tod_), + has_tod(true) {} + + fields(weekday wd_, hh_mm_ss tod_) : wd(wd_), tod(tod_), has_tod(true) {} + + fields(year_month_day ymd_, weekday wd_, hh_mm_ss tod_) + : ymd(ymd_) + , wd(wd_) + , tod(tod_) + , has_tod(true) + {} +}; + +namespace detail +{ + +template +unsigned +extract_weekday(std::basic_ostream& os, const fields& fds) +{ + if (!fds.ymd.ok() && !fds.wd.ok()) + { + // fds does not contain a valid weekday + os.setstate(std::ios::failbit); + return 8; + } + weekday wd; + if (fds.ymd.ok()) + { + wd = weekday{sys_days(fds.ymd)}; + if (fds.wd.ok() && wd != fds.wd) + { + // fds.ymd and fds.wd are inconsistent + os.setstate(std::ios::failbit); + return 8; + } + } + else + wd = fds.wd; + return static_cast((wd - Sunday).count()); +} + +template +unsigned +extract_month(std::basic_ostream& os, const fields& fds) +{ + if (!fds.ymd.month().ok()) + { + // fds does not contain a valid month + os.setstate(std::ios::failbit); + return 0; + } + return static_cast(fds.ymd.month()); +} + +} // namespace detail + +#if ONLY_C_LOCALE + +namespace detail +{ + +inline +std::pair +weekday_names() +{ + static const std::string nm[] = + { + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + }; + return std::make_pair(nm, nm+sizeof(nm)/sizeof(nm[0])); +} + +inline +std::pair +month_names() +{ + static const std::string nm[] = + { + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December", + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + }; + return std::make_pair(nm, nm+sizeof(nm)/sizeof(nm[0])); +} + +inline +std::pair +ampm_names() +{ + static const std::string nm[] = + { + "AM", + "PM" + }; + return std::make_pair(nm, nm+sizeof(nm)/sizeof(nm[0])); +} + +template +FwdIter +scan_keyword(std::basic_istream& is, FwdIter kb, FwdIter ke) +{ + size_t nkw = static_cast(std::distance(kb, ke)); + const unsigned char doesnt_match = '\0'; + const unsigned char might_match = '\1'; + const unsigned char does_match = '\2'; + unsigned char statbuf[100]; + unsigned char* status = statbuf; + std::unique_ptr stat_hold(0, free); + if (nkw > sizeof(statbuf)) + { + status = (unsigned char*)std::malloc(nkw); + if (status == nullptr) + throw std::bad_alloc(); + stat_hold.reset(status); + } + size_t n_might_match = nkw; // At this point, any keyword might match + size_t n_does_match = 0; // but none of them definitely do + // Initialize all statuses to might_match, except for "" keywords are does_match + unsigned char* st = status; + for (auto ky = kb; ky != ke; ++ky, ++st) + { + if (!ky->empty()) + *st = might_match; + else + { + *st = does_match; + --n_might_match; + ++n_does_match; + } + } + // While there might be a match, test keywords against the next CharT + for (size_t indx = 0; is && n_might_match > 0; ++indx) + { + // Peek at the next CharT but don't consume it + auto ic = is.peek(); + if (ic == EOF) + { + is.setstate(std::ios::eofbit); + break; + } + auto c = static_cast(toupper(static_cast(ic))); + bool consume = false; + // For each keyword which might match, see if the indx character is c + // If a match if found, consume c + // If a match is found, and that is the last character in the keyword, + // then that keyword matches. + // If the keyword doesn't match this character, then change the keyword + // to doesn't match + st = status; + for (auto ky = kb; ky != ke; ++ky, ++st) + { + if (*st == might_match) + { + if (c == static_cast(toupper(static_cast((*ky)[indx])))) + { + consume = true; + if (ky->size() == indx+1) + { + *st = does_match; + --n_might_match; + ++n_does_match; + } + } + else + { + *st = doesnt_match; + --n_might_match; + } + } + } + // consume if we matched a character + if (consume) + { + (void)is.get(); + // If we consumed a character and there might be a matched keyword that + // was marked matched on a previous iteration, then such keywords + // are now marked as not matching. + if (n_might_match + n_does_match > 1) + { + st = status; + for (auto ky = kb; ky != ke; ++ky, ++st) + { + if (*st == does_match && ky->size() != indx+1) + { + *st = doesnt_match; + --n_does_match; + } + } + } + } + } + // We've exited the loop because we hit eof and/or we have no more "might matches". + // Return the first matching result + for (st = status; kb != ke; ++kb, ++st) + if (*st == does_match) + break; + if (kb == ke) + is.setstate(std::ios::failbit); + return kb; +} + +} // namespace detail + +#endif // ONLY_C_LOCALE + +template +std::basic_ostream& +to_stream(std::basic_ostream& os, const CharT* fmt, + const fields& fds, const std::string* abbrev, + const std::chrono::seconds* offset_sec) +{ +#if ONLY_C_LOCALE + using detail::weekday_names; + using detail::month_names; + using detail::ampm_names; +#endif + using detail::save_ostream; + using detail::get_units; + using detail::extract_weekday; + using detail::extract_month; + using std::ios; + using std::chrono::duration_cast; + using std::chrono::seconds; + using std::chrono::minutes; + using std::chrono::hours; + date::detail::save_ostream ss(os); + os.fill(' '); + os.flags(std::ios::skipws | std::ios::dec); + os.width(0); + tm tm{}; + bool insert_negative = fds.has_tod && fds.tod.to_duration() < Duration::zero(); +#if !ONLY_C_LOCALE + auto& facet = std::use_facet>(os.getloc()); +#endif + const CharT* command = nullptr; + CharT modified = CharT{}; + for (; *fmt; ++fmt) + { + switch (*fmt) + { + case 'a': + case 'A': + if (command) + { + if (modified == CharT{}) + { + tm.tm_wday = static_cast(extract_weekday(os, fds)); + if (os.fail()) + return os; +#if !ONLY_C_LOCALE + const CharT f[] = {'%', *fmt}; + facet.put(os, os, os.fill(), &tm, std::begin(f), std::end(f)); +#else // ONLY_C_LOCALE + os << weekday_names().first[tm.tm_wday+7*(*fmt == 'a')]; +#endif // ONLY_C_LOCALE + } + else + { + os << CharT{'%'} << modified << *fmt; + modified = CharT{}; + } + command = nullptr; + } + else + os << *fmt; + break; + case 'b': + case 'B': + case 'h': + if (command) + { + if (modified == CharT{}) + { + tm.tm_mon = static_cast(extract_month(os, fds)) - 1; +#if !ONLY_C_LOCALE + const CharT f[] = {'%', *fmt}; + facet.put(os, os, os.fill(), &tm, std::begin(f), std::end(f)); +#else // ONLY_C_LOCALE + os << month_names().first[tm.tm_mon+12*(*fmt != 'B')]; +#endif // ONLY_C_LOCALE + } + else + { + os << CharT{'%'} << modified << *fmt; + modified = CharT{}; + } + command = nullptr; + } + else + os << *fmt; + break; + case 'c': + case 'x': + if (command) + { + if (modified == CharT{'O'}) + os << CharT{'%'} << modified << *fmt; + else + { + if (!fds.ymd.ok()) + os.setstate(std::ios::failbit); + if (*fmt == 'c' && !fds.has_tod) + os.setstate(std::ios::failbit); +#if !ONLY_C_LOCALE + tm = std::tm{}; + auto const& ymd = fds.ymd; + auto ld = local_days(ymd); + if (*fmt == 'c') + { + tm.tm_sec = static_cast(fds.tod.seconds().count()); + tm.tm_min = static_cast(fds.tod.minutes().count()); + tm.tm_hour = static_cast(fds.tod.hours().count()); + } + tm.tm_mday = static_cast(static_cast(ymd.day())); + tm.tm_mon = static_cast(extract_month(os, fds) - 1); + tm.tm_year = static_cast(ymd.year()) - 1900; + tm.tm_wday = static_cast(extract_weekday(os, fds)); + if (os.fail()) + return os; + tm.tm_yday = static_cast((ld - local_days(ymd.year()/1/1)).count()); + CharT f[3] = {'%'}; + auto fe = std::begin(f) + 1; + if (modified == CharT{'E'}) + *fe++ = modified; + *fe++ = *fmt; + facet.put(os, os, os.fill(), &tm, std::begin(f), fe); +#else // ONLY_C_LOCALE + if (*fmt == 'c') + { + auto wd = static_cast(extract_weekday(os, fds)); + os << weekday_names().first[static_cast(wd)+7] + << ' '; + os << month_names().first[extract_month(os, fds)-1+12] << ' '; + auto d = static_cast(static_cast(fds.ymd.day())); + if (d < 10) + os << ' '; + os << d << ' ' + << make_time(duration_cast(fds.tod.to_duration())) + << ' ' << fds.ymd.year(); + + } + else // *fmt == 'x' + { + auto const& ymd = fds.ymd; + save_ostream _(os); + os.fill('0'); + os.flags(std::ios::dec | std::ios::right); + os.width(2); + os << static_cast(ymd.month()) << CharT{'/'}; + os.width(2); + os << static_cast(ymd.day()) << CharT{'/'}; + os.width(2); + os << static_cast(ymd.year()) % 100; + } +#endif // ONLY_C_LOCALE + } + command = nullptr; + modified = CharT{}; + } + else + os << *fmt; + break; + case 'C': + if (command) + { + if (modified == CharT{'O'}) + os << CharT{'%'} << modified << *fmt; + else + { + if (!fds.ymd.year().ok()) + os.setstate(std::ios::failbit); + auto y = static_cast(fds.ymd.year()); +#if !ONLY_C_LOCALE + if (modified == CharT{}) +#endif + { + save_ostream _(os); + os.fill('0'); + os.flags(std::ios::dec | std::ios::right); + if (y >= 0) + { + os.width(2); + os << y/100; + } + else + { + os << CharT{'-'}; + os.width(2); + os << -(y-99)/100; + } + } +#if !ONLY_C_LOCALE + else if (modified == CharT{'E'}) + { + tm.tm_year = y - 1900; + CharT f[3] = {'%', 'E', 'C'}; + facet.put(os, os, os.fill(), &tm, std::begin(f), std::end(f)); + } +#endif + } + command = nullptr; + modified = CharT{}; + } + else + os << *fmt; + break; + case 'd': + case 'e': + if (command) + { + if (modified == CharT{'E'}) + os << CharT{'%'} << modified << *fmt; + else + { + if (!fds.ymd.day().ok()) + os.setstate(std::ios::failbit); + auto d = static_cast(static_cast(fds.ymd.day())); +#if !ONLY_C_LOCALE + if (modified == CharT{}) +#endif + { + save_ostream _(os); + if (*fmt == CharT{'d'}) + os.fill('0'); + else + os.fill(' '); + os.flags(std::ios::dec | std::ios::right); + os.width(2); + os << d; + } +#if !ONLY_C_LOCALE + else if (modified == CharT{'O'}) + { + tm.tm_mday = d; + CharT f[3] = {'%', 'O', *fmt}; + facet.put(os, os, os.fill(), &tm, std::begin(f), std::end(f)); + } +#endif + } + command = nullptr; + modified = CharT{}; + } + else + os << *fmt; + break; + case 'D': + if (command) + { + if (modified == CharT{}) + { + if (!fds.ymd.ok()) + os.setstate(std::ios::failbit); + auto const& ymd = fds.ymd; + save_ostream _(os); + os.fill('0'); + os.flags(std::ios::dec | std::ios::right); + os.width(2); + os << static_cast(ymd.month()) << CharT{'/'}; + os.width(2); + os << static_cast(ymd.day()) << CharT{'/'}; + os.width(2); + os << static_cast(ymd.year()) % 100; + } + else + { + os << CharT{'%'} << modified << *fmt; + modified = CharT{}; + } + command = nullptr; + } + else + os << *fmt; + break; + case 'F': + if (command) + { + if (modified == CharT{}) + { + if (!fds.ymd.ok()) + os.setstate(std::ios::failbit); + auto const& ymd = fds.ymd; + save_ostream _(os); + os.imbue(std::locale::classic()); + os.fill('0'); + os.flags(std::ios::dec | std::ios::right); + os.width(4); + os << static_cast(ymd.year()) << CharT{'-'}; + os.width(2); + os << static_cast(ymd.month()) << CharT{'-'}; + os.width(2); + os << static_cast(ymd.day()); + } + else + { + os << CharT{'%'} << modified << *fmt; + modified = CharT{}; + } + command = nullptr; + } + else + os << *fmt; + break; + case 'g': + case 'G': + if (command) + { + if (modified == CharT{}) + { + if (!fds.ymd.ok()) + os.setstate(std::ios::failbit); + auto ld = local_days(fds.ymd); + auto y = year_month_day{ld + days{3}}.year(); + auto start = local_days((y-years{1})/December/Thursday[last]) + + (Monday-Thursday); + if (ld < start) + --y; + if (*fmt == CharT{'G'}) + os << y; + else + { + save_ostream _(os); + os.fill('0'); + os.flags(std::ios::dec | std::ios::right); + os.width(2); + os << std::abs(static_cast(y)) % 100; + } + } + else + { + os << CharT{'%'} << modified << *fmt; + modified = CharT{}; + } + command = nullptr; + } + else + os << *fmt; + break; + case 'H': + case 'I': + if (command) + { + if (modified == CharT{'E'}) + os << CharT{'%'} << modified << *fmt; + else + { + if (!fds.has_tod) + os.setstate(std::ios::failbit); + if (insert_negative) + { + os << '-'; + insert_negative = false; + } + auto hms = fds.tod; +#if !ONLY_C_LOCALE + if (modified == CharT{}) +#endif + { + auto h = *fmt == CharT{'I'} ? date::make12(hms.hours()) : hms.hours(); + if (h < hours{10}) + os << CharT{'0'}; + os << h.count(); + } +#if !ONLY_C_LOCALE + else if (modified == CharT{'O'}) + { + const CharT f[] = {'%', modified, *fmt}; + tm.tm_hour = static_cast(hms.hours().count()); + facet.put(os, os, os.fill(), &tm, std::begin(f), std::end(f)); + } +#endif + } + modified = CharT{}; + command = nullptr; + } + else + os << *fmt; + break; + case 'j': + if (command) + { + if (modified == CharT{}) + { + if (fds.ymd.ok() || fds.has_tod) + { + days doy; + if (fds.ymd.ok()) + { + auto ld = local_days(fds.ymd); + auto y = fds.ymd.year(); + doy = ld - local_days(y/January/1) + days{1}; + } + else + { + doy = duration_cast(fds.tod.to_duration()); + } + save_ostream _(os); + os.fill('0'); + os.flags(std::ios::dec | std::ios::right); + os.width(3); + os << doy.count(); + } + else + { + os.setstate(std::ios::failbit); + } + } + else + { + os << CharT{'%'} << modified << *fmt; + modified = CharT{}; + } + command = nullptr; + } + else + os << *fmt; + break; + case 'm': + if (command) + { + if (modified == CharT{'E'}) + os << CharT{'%'} << modified << *fmt; + else + { + if (!fds.ymd.month().ok()) + os.setstate(std::ios::failbit); + auto m = static_cast(fds.ymd.month()); +#if !ONLY_C_LOCALE + if (modified == CharT{}) +#endif + { + if (m < 10) + os << CharT{'0'}; + os << m; + } +#if !ONLY_C_LOCALE + else if (modified == CharT{'O'}) + { + const CharT f[] = {'%', modified, *fmt}; + tm.tm_mon = static_cast(m-1); + facet.put(os, os, os.fill(), &tm, std::begin(f), std::end(f)); + } +#endif + } + modified = CharT{}; + command = nullptr; + } + else + os << *fmt; + break; + case 'M': + if (command) + { + if (modified == CharT{'E'}) + os << CharT{'%'} << modified << *fmt; + else + { + if (!fds.has_tod) + os.setstate(std::ios::failbit); + if (insert_negative) + { + os << '-'; + insert_negative = false; + } +#if !ONLY_C_LOCALE + if (modified == CharT{}) +#endif + { + if (fds.tod.minutes() < minutes{10}) + os << CharT{'0'}; + os << fds.tod.minutes().count(); + } +#if !ONLY_C_LOCALE + else if (modified == CharT{'O'}) + { + const CharT f[] = {'%', modified, *fmt}; + tm.tm_min = static_cast(fds.tod.minutes().count()); + facet.put(os, os, os.fill(), &tm, std::begin(f), std::end(f)); + } +#endif + } + modified = CharT{}; + command = nullptr; + } + else + os << *fmt; + break; + case 'n': + if (command) + { + if (modified == CharT{}) + os << CharT{'\n'}; + else + { + os << CharT{'%'} << modified << *fmt; + modified = CharT{}; + } + command = nullptr; + } + else + os << *fmt; + break; + case 'p': + if (command) + { + if (modified == CharT{}) + { + if (!fds.has_tod) + os.setstate(std::ios::failbit); +#if !ONLY_C_LOCALE + const CharT f[] = {'%', *fmt}; + tm.tm_hour = static_cast(fds.tod.hours().count()); + facet.put(os, os, os.fill(), &tm, std::begin(f), std::end(f)); +#else + if (date::is_am(fds.tod.hours())) + os << ampm_names().first[0]; + else + os << ampm_names().first[1]; +#endif + } + else + { + os << CharT{'%'} << modified << *fmt; + } + modified = CharT{}; + command = nullptr; + } + else + os << *fmt; + break; + case 'Q': + case 'q': + if (command) + { + if (modified == CharT{}) + { + if (!fds.has_tod) + os.setstate(std::ios::failbit); + auto d = fds.tod.to_duration(); + if (*fmt == 'q') + os << get_units(typename decltype(d)::period::type{}); + else + os << d.count(); + } + else + { + os << CharT{'%'} << modified << *fmt; + } + modified = CharT{}; + command = nullptr; + } + else + os << *fmt; + break; + case 'r': + if (command) + { + if (modified == CharT{}) + { + if (!fds.has_tod) + os.setstate(std::ios::failbit); +#if !ONLY_C_LOCALE + const CharT f[] = {'%', *fmt}; + tm.tm_hour = static_cast(fds.tod.hours().count()); + tm.tm_min = static_cast(fds.tod.minutes().count()); + tm.tm_sec = static_cast(fds.tod.seconds().count()); + facet.put(os, os, os.fill(), &tm, std::begin(f), std::end(f)); +#else + hh_mm_ss tod(duration_cast(fds.tod.to_duration())); + save_ostream _(os); + os.fill('0'); + os.width(2); + os << date::make12(tod.hours()).count() << CharT{':'}; + os.width(2); + os << tod.minutes().count() << CharT{':'}; + os.width(2); + os << tod.seconds().count() << CharT{' '}; + if (date::is_am(tod.hours())) + os << ampm_names().first[0]; + else + os << ampm_names().first[1]; +#endif + } + else + { + os << CharT{'%'} << modified << *fmt; + } + modified = CharT{}; + command = nullptr; + } + else + os << *fmt; + break; + case 'R': + if (command) + { + if (modified == CharT{}) + { + if (!fds.has_tod) + os.setstate(std::ios::failbit); + if (fds.tod.hours() < hours{10}) + os << CharT{'0'}; + os << fds.tod.hours().count() << CharT{':'}; + if (fds.tod.minutes() < minutes{10}) + os << CharT{'0'}; + os << fds.tod.minutes().count(); + } + else + { + os << CharT{'%'} << modified << *fmt; + modified = CharT{}; + } + command = nullptr; + } + else + os << *fmt; + break; + case 'S': + if (command) + { + if (modified == CharT{'E'}) + os << CharT{'%'} << modified << *fmt; + else + { + if (!fds.has_tod) + os.setstate(std::ios::failbit); + if (insert_negative) + { + os << '-'; + insert_negative = false; + } +#if !ONLY_C_LOCALE + if (modified == CharT{}) +#endif + { + os << fds.tod.s_; + } +#if !ONLY_C_LOCALE + else if (modified == CharT{'O'}) + { + const CharT f[] = {'%', modified, *fmt}; + tm.tm_sec = static_cast(fds.tod.s_.seconds().count()); + facet.put(os, os, os.fill(), &tm, std::begin(f), std::end(f)); + } +#endif + } + modified = CharT{}; + command = nullptr; + } + else + os << *fmt; + break; + case 't': + if (command) + { + if (modified == CharT{}) + os << CharT{'\t'}; + else + { + os << CharT{'%'} << modified << *fmt; + modified = CharT{}; + } + command = nullptr; + } + else + os << *fmt; + break; + case 'T': + if (command) + { + if (modified == CharT{}) + { + if (!fds.has_tod) + os.setstate(std::ios::failbit); + os << fds.tod; + } + else + { + os << CharT{'%'} << modified << *fmt; + modified = CharT{}; + } + command = nullptr; + } + else + os << *fmt; + break; + case 'u': + if (command) + { + if (modified == CharT{'E'}) + os << CharT{'%'} << modified << *fmt; + else + { + auto wd = extract_weekday(os, fds); +#if !ONLY_C_LOCALE + if (modified == CharT{}) +#endif + { + os << (wd != 0 ? wd : 7u); + } +#if !ONLY_C_LOCALE + else if (modified == CharT{'O'}) + { + const CharT f[] = {'%', modified, *fmt}; + tm.tm_wday = static_cast(wd); + facet.put(os, os, os.fill(), &tm, std::begin(f), std::end(f)); + } +#endif + } + modified = CharT{}; + command = nullptr; + } + else + os << *fmt; + break; + case 'U': + if (command) + { + if (modified == CharT{'E'}) + os << CharT{'%'} << modified << *fmt; + else + { + auto const& ymd = fds.ymd; + if (!ymd.ok()) + os.setstate(std::ios::failbit); + auto ld = local_days(ymd); +#if !ONLY_C_LOCALE + if (modified == CharT{}) +#endif + { + auto st = local_days(Sunday[1]/January/ymd.year()); + if (ld < st) + os << CharT{'0'} << CharT{'0'}; + else + { + auto wn = duration_cast(ld - st).count() + 1; + if (wn < 10) + os << CharT{'0'}; + os << wn; + } + } + #if !ONLY_C_LOCALE + else if (modified == CharT{'O'}) + { + const CharT f[] = {'%', modified, *fmt}; + tm.tm_year = static_cast(ymd.year()) - 1900; + tm.tm_wday = static_cast(extract_weekday(os, fds)); + if (os.fail()) + return os; + tm.tm_yday = static_cast((ld - local_days(ymd.year()/1/1)).count()); + facet.put(os, os, os.fill(), &tm, std::begin(f), std::end(f)); + } +#endif + } + modified = CharT{}; + command = nullptr; + } + else + os << *fmt; + break; + case 'V': + if (command) + { + if (modified == CharT{'E'}) + os << CharT{'%'} << modified << *fmt; + else + { + if (!fds.ymd.ok()) + os.setstate(std::ios::failbit); + auto ld = local_days(fds.ymd); +#if !ONLY_C_LOCALE + if (modified == CharT{}) +#endif + { + auto y = year_month_day{ld + days{3}}.year(); + auto st = local_days((y-years{1})/12/Thursday[last]) + + (Monday-Thursday); + if (ld < st) + { + --y; + st = local_days((y - years{1})/12/Thursday[last]) + + (Monday-Thursday); + } + auto wn = duration_cast(ld - st).count() + 1; + if (wn < 10) + os << CharT{'0'}; + os << wn; + } +#if !ONLY_C_LOCALE + else if (modified == CharT{'O'}) + { + const CharT f[] = {'%', modified, *fmt}; + auto const& ymd = fds.ymd; + tm.tm_year = static_cast(ymd.year()) - 1900; + tm.tm_wday = static_cast(extract_weekday(os, fds)); + if (os.fail()) + return os; + tm.tm_yday = static_cast((ld - local_days(ymd.year()/1/1)).count()); + facet.put(os, os, os.fill(), &tm, std::begin(f), std::end(f)); + } +#endif + } + modified = CharT{}; + command = nullptr; + } + else + os << *fmt; + break; + case 'w': + if (command) + { + auto wd = extract_weekday(os, fds); + if (os.fail()) + return os; +#if !ONLY_C_LOCALE + if (modified == CharT{}) +#else + if (modified != CharT{'E'}) +#endif + { + os << wd; + } +#if !ONLY_C_LOCALE + else if (modified == CharT{'O'}) + { + const CharT f[] = {'%', modified, *fmt}; + tm.tm_wday = static_cast(wd); + facet.put(os, os, os.fill(), &tm, std::begin(f), std::end(f)); + } +#endif + else + { + os << CharT{'%'} << modified << *fmt; + } + modified = CharT{}; + command = nullptr; + } + else + os << *fmt; + break; + case 'W': + if (command) + { + if (modified == CharT{'E'}) + os << CharT{'%'} << modified << *fmt; + else + { + auto const& ymd = fds.ymd; + if (!ymd.ok()) + os.setstate(std::ios::failbit); + auto ld = local_days(ymd); +#if !ONLY_C_LOCALE + if (modified == CharT{}) +#endif + { + auto st = local_days(Monday[1]/January/ymd.year()); + if (ld < st) + os << CharT{'0'} << CharT{'0'}; + else + { + auto wn = duration_cast(ld - st).count() + 1; + if (wn < 10) + os << CharT{'0'}; + os << wn; + } + } +#if !ONLY_C_LOCALE + else if (modified == CharT{'O'}) + { + const CharT f[] = {'%', modified, *fmt}; + tm.tm_year = static_cast(ymd.year()) - 1900; + tm.tm_wday = static_cast(extract_weekday(os, fds)); + if (os.fail()) + return os; + tm.tm_yday = static_cast((ld - local_days(ymd.year()/1/1)).count()); + facet.put(os, os, os.fill(), &tm, std::begin(f), std::end(f)); + } +#endif + } + modified = CharT{}; + command = nullptr; + } + else + os << *fmt; + break; + case 'X': + if (command) + { + if (modified == CharT{'O'}) + os << CharT{'%'} << modified << *fmt; + else + { + if (!fds.has_tod) + os.setstate(std::ios::failbit); +#if !ONLY_C_LOCALE + tm = std::tm{}; + tm.tm_sec = static_cast(fds.tod.seconds().count()); + tm.tm_min = static_cast(fds.tod.minutes().count()); + tm.tm_hour = static_cast(fds.tod.hours().count()); + CharT f[3] = {'%'}; + auto fe = std::begin(f) + 1; + if (modified == CharT{'E'}) + *fe++ = modified; + *fe++ = *fmt; + facet.put(os, os, os.fill(), &tm, std::begin(f), fe); +#else + os << fds.tod; +#endif + } + command = nullptr; + modified = CharT{}; + } + else + os << *fmt; + break; + case 'y': + if (command) + { + if (!fds.ymd.year().ok()) + os.setstate(std::ios::failbit); + auto y = static_cast(fds.ymd.year()); +#if !ONLY_C_LOCALE + if (modified == CharT{}) + { +#endif + y = std::abs(y) % 100; + if (y < 10) + os << CharT{'0'}; + os << y; +#if !ONLY_C_LOCALE + } + else + { + const CharT f[] = {'%', modified, *fmt}; + tm.tm_year = y - 1900; + facet.put(os, os, os.fill(), &tm, std::begin(f), std::end(f)); + } +#endif + modified = CharT{}; + command = nullptr; + } + else + os << *fmt; + break; + case 'Y': + if (command) + { + if (modified == CharT{'O'}) + os << CharT{'%'} << modified << *fmt; + else + { + if (!fds.ymd.year().ok()) + os.setstate(std::ios::failbit); + auto y = fds.ymd.year(); +#if !ONLY_C_LOCALE + if (modified == CharT{}) +#endif + { + save_ostream _(os); + os.imbue(std::locale::classic()); + os << y; + } +#if !ONLY_C_LOCALE + else if (modified == CharT{'E'}) + { + const CharT f[] = {'%', modified, *fmt}; + tm.tm_year = static_cast(y) - 1900; + facet.put(os, os, os.fill(), &tm, std::begin(f), std::end(f)); + } +#endif + } + modified = CharT{}; + command = nullptr; + } + else + os << *fmt; + break; + case 'z': + if (command) + { + if (offset_sec == nullptr) + { + // Can not format %z with unknown offset + os.setstate(ios::failbit); + return os; + } + auto m = duration_cast(*offset_sec); + auto neg = m < minutes{0}; + m = date::abs(m); + auto h = duration_cast(m); + m -= h; + if (neg) + os << CharT{'-'}; + else + os << CharT{'+'}; + if (h < hours{10}) + os << CharT{'0'}; + os << h.count(); + if (modified != CharT{}) + os << CharT{':'}; + if (m < minutes{10}) + os << CharT{'0'}; + os << m.count(); + command = nullptr; + modified = CharT{}; + } + else + os << *fmt; + break; + case 'Z': + if (command) + { + if (modified == CharT{}) + { + if (abbrev == nullptr) + { + // Can not format %Z with unknown time_zone + os.setstate(ios::failbit); + return os; + } + for (auto c : *abbrev) + os << CharT(c); + } + else + { + os << CharT{'%'} << modified << *fmt; + modified = CharT{}; + } + command = nullptr; + } + else + os << *fmt; + break; + case 'E': + case 'O': + if (command) + { + if (modified == CharT{}) + { + modified = *fmt; + } + else + { + os << CharT{'%'} << modified << *fmt; + command = nullptr; + modified = CharT{}; + } + } + else + os << *fmt; + break; + case '%': + if (command) + { + if (modified == CharT{}) + { + os << CharT{'%'}; + command = nullptr; + } + else + { + os << CharT{'%'} << modified << CharT{'%'}; + command = nullptr; + modified = CharT{}; + } + } + else + command = fmt; + break; + default: + if (command) + { + os << CharT{'%'}; + command = nullptr; + } + if (modified != CharT{}) + { + os << modified; + modified = CharT{}; + } + os << *fmt; + break; + } + } + if (command) + os << CharT{'%'}; + if (modified != CharT{}) + os << modified; + return os; +} + +template +inline +std::basic_ostream& +to_stream(std::basic_ostream& os, const CharT* fmt, const year& y) +{ + using CT = std::chrono::seconds; + fields fds{y/0/0}; + return to_stream(os, fmt, fds); +} + +template +inline +std::basic_ostream& +to_stream(std::basic_ostream& os, const CharT* fmt, const month& m) +{ + using CT = std::chrono::seconds; + fields fds{m/0/nanyear}; + return to_stream(os, fmt, fds); +} + +template +inline +std::basic_ostream& +to_stream(std::basic_ostream& os, const CharT* fmt, const day& d) +{ + using CT = std::chrono::seconds; + fields fds{d/0/nanyear}; + return to_stream(os, fmt, fds); +} + +template +inline +std::basic_ostream& +to_stream(std::basic_ostream& os, const CharT* fmt, const weekday& wd) +{ + using CT = std::chrono::seconds; + fields fds{wd}; + return to_stream(os, fmt, fds); +} + +template +inline +std::basic_ostream& +to_stream(std::basic_ostream& os, const CharT* fmt, const year_month& ym) +{ + using CT = std::chrono::seconds; + fields fds{ym/0}; + return to_stream(os, fmt, fds); +} + +template +inline +std::basic_ostream& +to_stream(std::basic_ostream& os, const CharT* fmt, const month_day& md) +{ + using CT = std::chrono::seconds; + fields fds{md/nanyear}; + return to_stream(os, fmt, fds); +} + +template +inline +std::basic_ostream& +to_stream(std::basic_ostream& os, const CharT* fmt, + const year_month_day& ymd) +{ + using CT = std::chrono::seconds; + fields fds{ymd}; + return to_stream(os, fmt, fds); +} + +template +inline +std::basic_ostream& +to_stream(std::basic_ostream& os, const CharT* fmt, + const std::chrono::duration& d) +{ + using Duration = std::chrono::duration; + using CT = typename std::common_type::type; + fields fds{hh_mm_ss{d}}; + return to_stream(os, fmt, fds); +} + +template +std::basic_ostream& +to_stream(std::basic_ostream& os, const CharT* fmt, + const local_time& tp, const std::string* abbrev = nullptr, + const std::chrono::seconds* offset_sec = nullptr) +{ + using CT = typename std::common_type::type; + auto ld = std::chrono::time_point_cast(tp); + fields fds; + if (ld <= tp) + fds = fields{year_month_day{ld}, hh_mm_ss{tp-local_seconds{ld}}}; + else + fds = fields{year_month_day{ld - days{1}}, + hh_mm_ss{days{1} - (local_seconds{ld} - tp)}}; + return to_stream(os, fmt, fds, abbrev, offset_sec); +} + +template +std::basic_ostream& +to_stream(std::basic_ostream& os, const CharT* fmt, + const sys_time& tp) +{ + using std::chrono::seconds; + using CT = typename std::common_type::type; + const std::string abbrev("UTC"); + CONSTDATA seconds offset{0}; + auto sd = std::chrono::time_point_cast(tp); + fields fds; + if (sd <= tp) + fds = fields{year_month_day{sd}, hh_mm_ss{tp-sys_seconds{sd}}}; + else + fds = fields{year_month_day{sd - days{1}}, + hh_mm_ss{days{1} - (sys_seconds{sd} - tp)}}; + return to_stream(os, fmt, fds, &abbrev, &offset); +} + +// format + +template +auto +format(const std::locale& loc, const CharT* fmt, const Streamable& tp) + -> decltype(to_stream(std::declval&>(), fmt, tp), + std::basic_string{}) +{ + std::basic_ostringstream os; + os.exceptions(std::ios::failbit | std::ios::badbit); + os.imbue(loc); + to_stream(os, fmt, tp); + return os.str(); +} + +template +auto +format(const CharT* fmt, const Streamable& tp) + -> decltype(to_stream(std::declval&>(), fmt, tp), + std::basic_string{}) +{ + std::basic_ostringstream os; + os.exceptions(std::ios::failbit | std::ios::badbit); + to_stream(os, fmt, tp); + return os.str(); +} + +template +auto +format(const std::locale& loc, const std::basic_string& fmt, + const Streamable& tp) + -> decltype(to_stream(std::declval&>(), fmt.c_str(), tp), + std::basic_string{}) +{ + std::basic_ostringstream os; + os.exceptions(std::ios::failbit | std::ios::badbit); + os.imbue(loc); + to_stream(os, fmt.c_str(), tp); + return os.str(); +} + +template +auto +format(const std::basic_string& fmt, const Streamable& tp) + -> decltype(to_stream(std::declval&>(), fmt.c_str(), tp), + std::basic_string{}) +{ + std::basic_ostringstream os; + os.exceptions(std::ios::failbit | std::ios::badbit); + to_stream(os, fmt.c_str(), tp); + return os.str(); +} + +// parse + +namespace detail +{ + +template +bool +read_char(std::basic_istream& is, CharT fmt, std::ios::iostate& err) +{ + auto ic = is.get(); + if (Traits::eq_int_type(ic, Traits::eof()) || + !Traits::eq(Traits::to_char_type(ic), fmt)) + { + err |= std::ios::failbit; + is.setstate(std::ios::failbit); + return false; + } + return true; +} + +template +unsigned +read_unsigned(std::basic_istream& is, unsigned m = 1, unsigned M = 10) +{ + unsigned x = 0; + unsigned count = 0; + while (true) + { + auto ic = is.peek(); + if (Traits::eq_int_type(ic, Traits::eof())) + break; + auto c = static_cast(Traits::to_char_type(ic)); + if (!('0' <= c && c <= '9')) + break; + (void)is.get(); + ++count; + x = 10*x + static_cast(c - '0'); + if (count == M) + break; + } + if (count < m) + is.setstate(std::ios::failbit); + return x; +} + +template +int +read_signed(std::basic_istream& is, unsigned m = 1, unsigned M = 10) +{ + auto ic = is.peek(); + if (!Traits::eq_int_type(ic, Traits::eof())) + { + auto c = static_cast(Traits::to_char_type(ic)); + if (('0' <= c && c <= '9') || c == '-' || c == '+') + { + if (c == '-' || c == '+') + (void)is.get(); + auto x = static_cast(read_unsigned(is, std::max(m, 1u), M)); + if (!is.fail()) + { + if (c == '-') + x = -x; + return x; + } + } + } + if (m > 0) + is.setstate(std::ios::failbit); + return 0; +} + +template +long double +read_long_double(std::basic_istream& is, unsigned m = 1, unsigned M = 10) +{ + unsigned count = 0; + unsigned fcount = 0; + unsigned long long i = 0; + unsigned long long f = 0; + bool parsing_fraction = false; +#if ONLY_C_LOCALE + typename Traits::int_type decimal_point = '.'; +#else + auto decimal_point = Traits::to_int_type( + std::use_facet>(is.getloc()).decimal_point()); +#endif + while (true) + { + auto ic = is.peek(); + if (Traits::eq_int_type(ic, Traits::eof())) + break; + if (Traits::eq_int_type(ic, decimal_point)) + { + decimal_point = Traits::eof(); + parsing_fraction = true; + } + else + { + auto c = static_cast(Traits::to_char_type(ic)); + if (!('0' <= c && c <= '9')) + break; + if (!parsing_fraction) + { + i = 10*i + static_cast(c - '0'); + } + else + { + f = 10*f + static_cast(c - '0'); + ++fcount; + } + } + (void)is.get(); + if (++count == M) + break; + } + if (count < m) + { + is.setstate(std::ios::failbit); + return 0; + } + return static_cast(i) + static_cast(f)/std::pow(10.L, fcount); +} + +struct rs +{ + int& i; + unsigned m; + unsigned M; +}; + +struct ru +{ + int& i; + unsigned m; + unsigned M; +}; + +struct rld +{ + long double& i; + unsigned m; + unsigned M; +}; + +template +void +read(std::basic_istream&) +{ +} + +template +void +read(std::basic_istream& is, CharT a0, Args&& ...args); + +template +void +read(std::basic_istream& is, rs a0, Args&& ...args); + +template +void +read(std::basic_istream& is, ru a0, Args&& ...args); + +template +void +read(std::basic_istream& is, int a0, Args&& ...args); + +template +void +read(std::basic_istream& is, rld a0, Args&& ...args); + +template +void +read(std::basic_istream& is, CharT a0, Args&& ...args) +{ + // No-op if a0 == CharT{} + if (a0 != CharT{}) + { + auto ic = is.peek(); + if (Traits::eq_int_type(ic, Traits::eof())) + { + is.setstate(std::ios::failbit | std::ios::eofbit); + return; + } + if (!Traits::eq(Traits::to_char_type(ic), a0)) + { + is.setstate(std::ios::failbit); + return; + } + (void)is.get(); + } + read(is, std::forward(args)...); +} + +template +void +read(std::basic_istream& is, rs a0, Args&& ...args) +{ + auto x = read_signed(is, a0.m, a0.M); + if (is.fail()) + return; + a0.i = x; + read(is, std::forward(args)...); +} + +template +void +read(std::basic_istream& is, ru a0, Args&& ...args) +{ + auto x = read_unsigned(is, a0.m, a0.M); + if (is.fail()) + return; + a0.i = static_cast(x); + read(is, std::forward(args)...); +} + +template +void +read(std::basic_istream& is, int a0, Args&& ...args) +{ + if (a0 != -1) + { + auto u = static_cast(a0); + CharT buf[std::numeric_limits::digits10+2u] = {}; + auto e = buf; + do + { + *e++ = static_cast(CharT(u % 10) + CharT{'0'}); + u /= 10; + } while (u > 0); + std::reverse(buf, e); + for (auto p = buf; p != e && is.rdstate() == std::ios::goodbit; ++p) + read(is, *p); + } + if (is.rdstate() == std::ios::goodbit) + read(is, std::forward(args)...); +} + +template +void +read(std::basic_istream& is, rld a0, Args&& ...args) +{ + auto x = read_long_double(is, a0.m, a0.M); + if (is.fail()) + return; + a0.i = x; + read(is, std::forward(args)...); +} + +template +inline +void +checked_set(T& value, T from, T not_a_value, std::basic_ios& is) +{ + if (!is.fail()) + { + if (value == not_a_value) + value = std::move(from); + else if (value != from) + is.setstate(std::ios::failbit); + } +} + +} // namespace detail; + +template > +std::basic_istream& +from_stream(std::basic_istream& is, const CharT* fmt, + fields& fds, std::basic_string* abbrev, + std::chrono::minutes* offset) +{ + using std::numeric_limits; + using std::ios; + using std::chrono::duration; + using std::chrono::duration_cast; + using std::chrono::seconds; + using std::chrono::minutes; + using std::chrono::hours; + using detail::round_i; + typename std::basic_istream::sentry ok{is, true}; + if (ok) + { + date::detail::save_istream ss(is); + is.fill(' '); + is.flags(std::ios::skipws | std::ios::dec); + is.width(0); +#if !ONLY_C_LOCALE + auto& f = std::use_facet>(is.getloc()); + std::tm tm{}; +#endif + const CharT* command = nullptr; + auto modified = CharT{}; + auto width = -1; + + CONSTDATA int not_a_year = numeric_limits::min(); + CONSTDATA int not_a_2digit_year = 100; + CONSTDATA int not_a_century = not_a_year / 100; + CONSTDATA int not_a_month = 0; + CONSTDATA int not_a_day = 0; + CONSTDATA int not_a_hour = numeric_limits::min(); + CONSTDATA int not_a_hour_12_value = 0; + CONSTDATA int not_a_minute = not_a_hour; + CONSTDATA Duration not_a_second = Duration::min(); + CONSTDATA int not_a_doy = -1; + CONSTDATA int not_a_weekday = 8; + CONSTDATA int not_a_week_num = 100; + CONSTDATA int not_a_ampm = -1; + CONSTDATA minutes not_a_offset = minutes::min(); + + int Y = not_a_year; // c, F, Y * + int y = not_a_2digit_year; // D, x, y * + int g = not_a_2digit_year; // g * + int G = not_a_year; // G * + int C = not_a_century; // C * + int m = not_a_month; // b, B, h, m, c, D, F, x * + int d = not_a_day; // c, d, D, e, F, x * + int j = not_a_doy; // j * + int wd = not_a_weekday; // a, A, u, w * + int H = not_a_hour; // c, H, R, T, X * + int I = not_a_hour_12_value; // I, r * + int p = not_a_ampm; // p, r * + int M = not_a_minute; // c, M, r, R, T, X * + Duration s = not_a_second; // c, r, S, T, X * + int U = not_a_week_num; // U * + int V = not_a_week_num; // V * + int W = not_a_week_num; // W * + std::basic_string temp_abbrev; // Z * + minutes temp_offset = not_a_offset; // z * + + using detail::read; + using detail::rs; + using detail::ru; + using detail::rld; + using detail::checked_set; + for (; *fmt != CharT{} && !is.fail(); ++fmt) + { + switch (*fmt) + { + case 'a': + case 'A': + case 'u': + case 'w': // wd: a, A, u, w + if (command) + { + int trial_wd = not_a_weekday; + if (*fmt == 'a' || *fmt == 'A') + { + if (modified == CharT{}) + { +#if !ONLY_C_LOCALE + ios::iostate err = ios::goodbit; + f.get(is, nullptr, is, err, &tm, command, fmt+1); + is.setstate(err); + if (!is.fail()) + trial_wd = tm.tm_wday; +#else + auto nm = detail::weekday_names(); + auto i = detail::scan_keyword(is, nm.first, nm.second) - nm.first; + if (!is.fail()) + trial_wd = i % 7; +#endif + } + else + read(is, CharT{'%'}, width, modified, *fmt); + } + else // *fmt == 'u' || *fmt == 'w' + { +#if !ONLY_C_LOCALE + if (modified == CharT{}) +#else + if (modified != CharT{'E'}) +#endif + { + read(is, ru{trial_wd, 1, width == -1 ? + 1u : static_cast(width)}); + if (!is.fail()) + { + if (*fmt == 'u') + { + if (!(1 <= trial_wd && trial_wd <= 7)) + { + trial_wd = not_a_weekday; + is.setstate(ios::failbit); + } + else if (trial_wd == 7) + trial_wd = 0; + } + else // *fmt == 'w' + { + if (!(0 <= trial_wd && trial_wd <= 6)) + { + trial_wd = not_a_weekday; + is.setstate(ios::failbit); + } + } + } + } +#if !ONLY_C_LOCALE + else if (modified == CharT{'O'}) + { + ios::iostate err = ios::goodbit; + f.get(is, nullptr, is, err, &tm, command, fmt+1); + is.setstate(err); + if (!is.fail()) + trial_wd = tm.tm_wday; + } +#endif + else + read(is, CharT{'%'}, width, modified, *fmt); + } + if (trial_wd != not_a_weekday) + checked_set(wd, trial_wd, not_a_weekday, is); + } + else // !command + read(is, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + break; + case 'b': + case 'B': + case 'h': + if (command) + { + if (modified == CharT{}) + { + int ttm = not_a_month; +#if !ONLY_C_LOCALE + ios::iostate err = ios::goodbit; + f.get(is, nullptr, is, err, &tm, command, fmt+1); + if ((err & ios::failbit) == 0) + ttm = tm.tm_mon + 1; + is.setstate(err); +#else + auto nm = detail::month_names(); + auto i = detail::scan_keyword(is, nm.first, nm.second) - nm.first; + if (!is.fail()) + ttm = i % 12 + 1; +#endif + checked_set(m, ttm, not_a_month, is); + } + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'c': + if (command) + { + if (modified != CharT{'O'}) + { +#if !ONLY_C_LOCALE + ios::iostate err = ios::goodbit; + f.get(is, nullptr, is, err, &tm, command, fmt+1); + if ((err & ios::failbit) == 0) + { + checked_set(Y, tm.tm_year + 1900, not_a_year, is); + checked_set(m, tm.tm_mon + 1, not_a_month, is); + checked_set(d, tm.tm_mday, not_a_day, is); + checked_set(H, tm.tm_hour, not_a_hour, is); + checked_set(M, tm.tm_min, not_a_minute, is); + checked_set(s, duration_cast(seconds{tm.tm_sec}), + not_a_second, is); + } + is.setstate(err); +#else + // "%a %b %e %T %Y" + auto nm = detail::weekday_names(); + auto i = detail::scan_keyword(is, nm.first, nm.second) - nm.first; + checked_set(wd, static_cast(i % 7), not_a_weekday, is); + ws(is); + nm = detail::month_names(); + i = detail::scan_keyword(is, nm.first, nm.second) - nm.first; + checked_set(m, static_cast(i % 12 + 1), not_a_month, is); + ws(is); + int td = not_a_day; + read(is, rs{td, 1, 2}); + checked_set(d, td, not_a_day, is); + ws(is); + using dfs = detail::decimal_format_seconds; + CONSTDATA auto w = Duration::period::den == 1 ? 2 : 3 + dfs::width; + int tH; + int tM; + long double S{}; + read(is, ru{tH, 1, 2}, CharT{':'}, ru{tM, 1, 2}, + CharT{':'}, rld{S, 1, w}); + checked_set(H, tH, not_a_hour, is); + checked_set(M, tM, not_a_minute, is); + checked_set(s, round_i(duration{S}), + not_a_second, is); + ws(is); + int tY = not_a_year; + read(is, rs{tY, 1, 4u}); + checked_set(Y, tY, not_a_year, is); +#endif + } + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'x': + if (command) + { + if (modified != CharT{'O'}) + { +#if !ONLY_C_LOCALE + ios::iostate err = ios::goodbit; + f.get(is, nullptr, is, err, &tm, command, fmt+1); + if ((err & ios::failbit) == 0) + { + checked_set(Y, tm.tm_year + 1900, not_a_year, is); + checked_set(m, tm.tm_mon + 1, not_a_month, is); + checked_set(d, tm.tm_mday, not_a_day, is); + } + is.setstate(err); +#else + // "%m/%d/%y" + int ty = not_a_2digit_year; + int tm = not_a_month; + int td = not_a_day; + read(is, ru{tm, 1, 2}, CharT{'/'}, ru{td, 1, 2}, CharT{'/'}, + rs{ty, 1, 2}); + checked_set(y, ty, not_a_2digit_year, is); + checked_set(m, tm, not_a_month, is); + checked_set(d, td, not_a_day, is); +#endif + } + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'X': + if (command) + { + if (modified != CharT{'O'}) + { +#if !ONLY_C_LOCALE + ios::iostate err = ios::goodbit; + f.get(is, nullptr, is, err, &tm, command, fmt+1); + if ((err & ios::failbit) == 0) + { + checked_set(H, tm.tm_hour, not_a_hour, is); + checked_set(M, tm.tm_min, not_a_minute, is); + checked_set(s, duration_cast(seconds{tm.tm_sec}), + not_a_second, is); + } + is.setstate(err); +#else + // "%T" + using dfs = detail::decimal_format_seconds; + CONSTDATA auto w = Duration::period::den == 1 ? 2 : 3 + dfs::width; + int tH = not_a_hour; + int tM = not_a_minute; + long double S{}; + read(is, ru{tH, 1, 2}, CharT{':'}, ru{tM, 1, 2}, + CharT{':'}, rld{S, 1, w}); + checked_set(H, tH, not_a_hour, is); + checked_set(M, tM, not_a_minute, is); + checked_set(s, round_i(duration{S}), + not_a_second, is); +#endif + } + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'C': + if (command) + { + int tC = not_a_century; +#if !ONLY_C_LOCALE + if (modified == CharT{}) + { +#endif + read(is, rs{tC, 1, width == -1 ? 2u : static_cast(width)}); +#if !ONLY_C_LOCALE + } + else + { + ios::iostate err = ios::goodbit; + f.get(is, nullptr, is, err, &tm, command, fmt+1); + if ((err & ios::failbit) == 0) + { + auto tY = tm.tm_year + 1900; + tC = (tY >= 0 ? tY : tY-99) / 100; + } + is.setstate(err); + } +#endif + checked_set(C, tC, not_a_century, is); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'D': + if (command) + { + if (modified == CharT{}) + { + int tn = not_a_month; + int td = not_a_day; + int ty = not_a_2digit_year; + read(is, ru{tn, 1, 2}, CharT{'\0'}, CharT{'/'}, CharT{'\0'}, + ru{td, 1, 2}, CharT{'\0'}, CharT{'/'}, CharT{'\0'}, + rs{ty, 1, 2}); + checked_set(y, ty, not_a_2digit_year, is); + checked_set(m, tn, not_a_month, is); + checked_set(d, td, not_a_day, is); + } + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'F': + if (command) + { + if (modified == CharT{}) + { + int tY = not_a_year; + int tn = not_a_month; + int td = not_a_day; + read(is, rs{tY, 1, width == -1 ? 4u : static_cast(width)}, + CharT{'-'}, ru{tn, 1, 2}, CharT{'-'}, ru{td, 1, 2}); + checked_set(Y, tY, not_a_year, is); + checked_set(m, tn, not_a_month, is); + checked_set(d, td, not_a_day, is); + } + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'd': + case 'e': + if (command) + { +#if !ONLY_C_LOCALE + if (modified == CharT{}) +#else + if (modified != CharT{'E'}) +#endif + { + int td = not_a_day; + read(is, rs{td, 1, width == -1 ? 2u : static_cast(width)}); + checked_set(d, td, not_a_day, is); + } +#if !ONLY_C_LOCALE + else if (modified == CharT{'O'}) + { + ios::iostate err = ios::goodbit; + f.get(is, nullptr, is, err, &tm, command, fmt+1); + command = nullptr; + width = -1; + modified = CharT{}; + if ((err & ios::failbit) == 0) + checked_set(d, tm.tm_mday, not_a_day, is); + is.setstate(err); + } +#endif + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'H': + if (command) + { +#if !ONLY_C_LOCALE + if (modified == CharT{}) +#else + if (modified != CharT{'E'}) +#endif + { + int tH = not_a_hour; + read(is, ru{tH, 1, width == -1 ? 2u : static_cast(width)}); + checked_set(H, tH, not_a_hour, is); + } +#if !ONLY_C_LOCALE + else if (modified == CharT{'O'}) + { + ios::iostate err = ios::goodbit; + f.get(is, nullptr, is, err, &tm, command, fmt+1); + if ((err & ios::failbit) == 0) + checked_set(H, tm.tm_hour, not_a_hour, is); + is.setstate(err); + } +#endif + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'I': + if (command) + { + if (modified == CharT{}) + { + int tI = not_a_hour_12_value; + // reads in an hour into I, but most be in [1, 12] + read(is, rs{tI, 1, width == -1 ? 2u : static_cast(width)}); + if (!(1 <= tI && tI <= 12)) + is.setstate(ios::failbit); + checked_set(I, tI, not_a_hour_12_value, is); + } + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'j': + if (command) + { + if (modified == CharT{}) + { + int tj = not_a_doy; + read(is, ru{tj, 1, width == -1 ? 3u : static_cast(width)}); + checked_set(j, tj, not_a_doy, is); + } + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'M': + if (command) + { +#if !ONLY_C_LOCALE + if (modified == CharT{}) +#else + if (modified != CharT{'E'}) +#endif + { + int tM = not_a_minute; + read(is, ru{tM, 1, width == -1 ? 2u : static_cast(width)}); + checked_set(M, tM, not_a_minute, is); + } +#if !ONLY_C_LOCALE + else if (modified == CharT{'O'}) + { + ios::iostate err = ios::goodbit; + f.get(is, nullptr, is, err, &tm, command, fmt+1); + if ((err & ios::failbit) == 0) + checked_set(M, tm.tm_min, not_a_minute, is); + is.setstate(err); + } +#endif + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'm': + if (command) + { +#if !ONLY_C_LOCALE + if (modified == CharT{}) +#else + if (modified != CharT{'E'}) +#endif + { + int tn = not_a_month; + read(is, rs{tn, 1, width == -1 ? 2u : static_cast(width)}); + checked_set(m, tn, not_a_month, is); + } +#if !ONLY_C_LOCALE + else if (modified == CharT{'O'}) + { + ios::iostate err = ios::goodbit; + f.get(is, nullptr, is, err, &tm, command, fmt+1); + if ((err & ios::failbit) == 0) + checked_set(m, tm.tm_mon + 1, not_a_month, is); + is.setstate(err); + } +#endif + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'n': + case 't': + if (command) + { + if (modified == CharT{}) + { + // %n matches a single white space character + // %t matches 0 or 1 white space characters + auto ic = is.peek(); + if (Traits::eq_int_type(ic, Traits::eof())) + { + ios::iostate err = ios::eofbit; + if (*fmt == 'n') + err |= ios::failbit; + is.setstate(err); + break; + } + if (isspace(ic)) + { + (void)is.get(); + } + else if (*fmt == 'n') + is.setstate(ios::failbit); + } + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'p': + if (command) + { + if (modified == CharT{}) + { + int tp = not_a_ampm; +#if !ONLY_C_LOCALE + tm = std::tm{}; + tm.tm_hour = 1; + ios::iostate err = ios::goodbit; + f.get(is, nullptr, is, err, &tm, command, fmt+1); + is.setstate(err); + if (tm.tm_hour == 1) + tp = 0; + else if (tm.tm_hour == 13) + tp = 1; + else + is.setstate(err); +#else + auto nm = detail::ampm_names(); + auto i = detail::scan_keyword(is, nm.first, nm.second) - nm.first; + tp = static_cast(i); +#endif + checked_set(p, tp, not_a_ampm, is); + } + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + + break; + case 'r': + if (command) + { + if (modified == CharT{}) + { +#if !ONLY_C_LOCALE + ios::iostate err = ios::goodbit; + f.get(is, nullptr, is, err, &tm, command, fmt+1); + if ((err & ios::failbit) == 0) + { + checked_set(H, tm.tm_hour, not_a_hour, is); + checked_set(M, tm.tm_min, not_a_hour, is); + checked_set(s, duration_cast(seconds{tm.tm_sec}), + not_a_second, is); + } + is.setstate(err); +#else + // "%I:%M:%S %p" + using dfs = detail::decimal_format_seconds; + CONSTDATA auto w = Duration::period::den == 1 ? 2 : 3 + dfs::width; + long double S{}; + int tI = not_a_hour_12_value; + int tM = not_a_minute; + read(is, ru{tI, 1, 2}, CharT{':'}, ru{tM, 1, 2}, + CharT{':'}, rld{S, 1, w}); + checked_set(I, tI, not_a_hour_12_value, is); + checked_set(M, tM, not_a_minute, is); + checked_set(s, round_i(duration{S}), + not_a_second, is); + ws(is); + auto nm = detail::ampm_names(); + auto i = detail::scan_keyword(is, nm.first, nm.second) - nm.first; + checked_set(p, static_cast(i), not_a_ampm, is); +#endif + } + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'R': + if (command) + { + if (modified == CharT{}) + { + int tH = not_a_hour; + int tM = not_a_minute; + read(is, ru{tH, 1, 2}, CharT{'\0'}, CharT{':'}, CharT{'\0'}, + ru{tM, 1, 2}, CharT{'\0'}); + checked_set(H, tH, not_a_hour, is); + checked_set(M, tM, not_a_minute, is); + } + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'S': + if (command) + { + #if !ONLY_C_LOCALE + if (modified == CharT{}) +#else + if (modified != CharT{'E'}) +#endif + { + using dfs = detail::decimal_format_seconds; + CONSTDATA auto w = Duration::period::den == 1 ? 2 : 3 + dfs::width; + long double S{}; + read(is, rld{S, 1, width == -1 ? w : static_cast(width)}); + checked_set(s, round_i(duration{S}), + not_a_second, is); + } +#if !ONLY_C_LOCALE + else if (modified == CharT{'O'}) + { + ios::iostate err = ios::goodbit; + f.get(is, nullptr, is, err, &tm, command, fmt+1); + if ((err & ios::failbit) == 0) + checked_set(s, duration_cast(seconds{tm.tm_sec}), + not_a_second, is); + is.setstate(err); + } +#endif + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'T': + if (command) + { + if (modified == CharT{}) + { + using dfs = detail::decimal_format_seconds; + CONSTDATA auto w = Duration::period::den == 1 ? 2 : 3 + dfs::width; + int tH = not_a_hour; + int tM = not_a_minute; + long double S{}; + read(is, ru{tH, 1, 2}, CharT{':'}, ru{tM, 1, 2}, + CharT{':'}, rld{S, 1, w}); + checked_set(H, tH, not_a_hour, is); + checked_set(M, tM, not_a_minute, is); + checked_set(s, round_i(duration{S}), + not_a_second, is); + } + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'Y': + if (command) + { +#if !ONLY_C_LOCALE + if (modified == CharT{}) +#else + if (modified != CharT{'O'}) +#endif + { + int tY = not_a_year; + read(is, rs{tY, 1, width == -1 ? 4u : static_cast(width)}); + checked_set(Y, tY, not_a_year, is); + } +#if !ONLY_C_LOCALE + else if (modified == CharT{'E'}) + { + ios::iostate err = ios::goodbit; + f.get(is, nullptr, is, err, &tm, command, fmt+1); + if ((err & ios::failbit) == 0) + checked_set(Y, tm.tm_year + 1900, not_a_year, is); + is.setstate(err); + } +#endif + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'y': + if (command) + { +#if !ONLY_C_LOCALE + if (modified == CharT{}) +#endif + { + int ty = not_a_2digit_year; + read(is, ru{ty, 1, width == -1 ? 2u : static_cast(width)}); + checked_set(y, ty, not_a_2digit_year, is); + } +#if !ONLY_C_LOCALE + else + { + ios::iostate err = ios::goodbit; + f.get(is, nullptr, is, err, &tm, command, fmt+1); + if ((err & ios::failbit) == 0) + checked_set(Y, tm.tm_year + 1900, not_a_year, is); + is.setstate(err); + } +#endif + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'g': + if (command) + { + if (modified == CharT{}) + { + int tg = not_a_2digit_year; + read(is, ru{tg, 1, width == -1 ? 2u : static_cast(width)}); + checked_set(g, tg, not_a_2digit_year, is); + } + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'G': + if (command) + { + if (modified == CharT{}) + { + int tG = not_a_year; + read(is, rs{tG, 1, width == -1 ? 4u : static_cast(width)}); + checked_set(G, tG, not_a_year, is); + } + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'U': + if (command) + { + if (modified == CharT{}) + { + int tU = not_a_week_num; + read(is, ru{tU, 1, width == -1 ? 2u : static_cast(width)}); + checked_set(U, tU, not_a_week_num, is); + } + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'V': + if (command) + { + if (modified == CharT{}) + { + int tV = not_a_week_num; + read(is, ru{tV, 1, width == -1 ? 2u : static_cast(width)}); + checked_set(V, tV, not_a_week_num, is); + } + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'W': + if (command) + { + if (modified == CharT{}) + { + int tW = not_a_week_num; + read(is, ru{tW, 1, width == -1 ? 2u : static_cast(width)}); + checked_set(W, tW, not_a_week_num, is); + } + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'E': + case 'O': + if (command) + { + if (modified == CharT{}) + { + modified = *fmt; + } + else + { + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + } + else + read(is, *fmt); + break; + case '%': + if (command) + { + if (modified == CharT{}) + read(is, *fmt); + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + command = fmt; + break; + case 'z': + if (command) + { + int tH, tM; + minutes toff = not_a_offset; + bool neg = false; + auto ic = is.peek(); + if (!Traits::eq_int_type(ic, Traits::eof())) + { + auto c = static_cast(Traits::to_char_type(ic)); + if (c == '-') + neg = true; + } + if (modified == CharT{}) + { + read(is, rs{tH, 2, 2}); + if (!is.fail()) + toff = hours{std::abs(tH)}; + if (is.good()) + { + ic = is.peek(); + if (!Traits::eq_int_type(ic, Traits::eof())) + { + auto c = static_cast(Traits::to_char_type(ic)); + if ('0' <= c && c <= '9') + { + read(is, ru{tM, 2, 2}); + if (!is.fail()) + toff += minutes{tM}; + } + } + } + } + else + { + read(is, rs{tH, 1, 2}); + if (!is.fail()) + toff = hours{std::abs(tH)}; + if (is.good()) + { + ic = is.peek(); + if (!Traits::eq_int_type(ic, Traits::eof())) + { + auto c = static_cast(Traits::to_char_type(ic)); + if (c == ':') + { + (void)is.get(); + read(is, ru{tM, 2, 2}); + if (!is.fail()) + toff += minutes{tM}; + } + } + } + } + if (neg) + toff = -toff; + checked_set(temp_offset, toff, not_a_offset, is); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + case 'Z': + if (command) + { + if (modified == CharT{}) + { + std::basic_string buf; + while (is.rdstate() == std::ios::goodbit) + { + auto i = is.rdbuf()->sgetc(); + if (Traits::eq_int_type(i, Traits::eof())) + { + is.setstate(ios::eofbit); + break; + } + auto wc = Traits::to_char_type(i); + auto c = static_cast(wc); + // is c a valid time zone name or abbreviation character? + if (!(CharT{1} < wc && wc < CharT{127}) || !(isalnum(c) || + c == '_' || c == '/' || c == '-' || c == '+')) + break; + buf.push_back(c); + is.rdbuf()->sbumpc(); + } + if (buf.empty()) + is.setstate(ios::failbit); + checked_set(temp_abbrev, buf, {}, is); + } + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + else + read(is, *fmt); + break; + default: + if (command) + { + if (width == -1 && modified == CharT{} && '0' <= *fmt && *fmt <= '9') + { + width = static_cast(*fmt) - '0'; + while ('0' <= fmt[1] && fmt[1] <= '9') + width = 10*width + static_cast(*++fmt) - '0'; + } + else + { + if (modified == CharT{}) + read(is, CharT{'%'}, width, *fmt); + else + read(is, CharT{'%'}, width, modified, *fmt); + command = nullptr; + width = -1; + modified = CharT{}; + } + } + else // !command + { + if (isspace(static_cast(*fmt))) + { + // space matches 0 or more white space characters + if (is.good()) + ws(is); + } + else + read(is, *fmt); + } + break; + } + } + // is.fail() || *fmt == CharT{} + if (is.rdstate() == ios::goodbit && command) + { + if (modified == CharT{}) + read(is, CharT{'%'}, width); + else + read(is, CharT{'%'}, width, modified); + } + if (!is.fail()) + { + if (y != not_a_2digit_year) + { + // Convert y and an optional C to Y + if (!(0 <= y && y <= 99)) + goto broken; + if (C == not_a_century) + { + if (Y == not_a_year) + { + if (y >= 69) + C = 19; + else + C = 20; + } + else + { + C = (Y >= 0 ? Y : Y-100) / 100; + } + } + int tY; + if (C >= 0) + tY = 100*C + y; + else + tY = 100*(C+1) - (y == 0 ? 100 : y); + if (Y != not_a_year && Y != tY) + goto broken; + Y = tY; + } + if (g != not_a_2digit_year) + { + // Convert g and an optional C to G + if (!(0 <= g && g <= 99)) + goto broken; + if (C == not_a_century) + { + if (G == not_a_year) + { + if (g >= 69) + C = 19; + else + C = 20; + } + else + { + C = (G >= 0 ? G : G-100) / 100; + } + } + int tG; + if (C >= 0) + tG = 100*C + g; + else + tG = 100*(C+1) - (g == 0 ? 100 : g); + if (G != not_a_year && G != tG) + goto broken; + G = tG; + } + if (Y < static_cast(year::min()) || Y > static_cast(year::max())) + Y = not_a_year; + bool computed = false; + if (G != not_a_year && V != not_a_week_num && wd != not_a_weekday) + { + year_month_day ymd_trial = sys_days(year{G-1}/December/Thursday[last]) + + (Monday-Thursday) + weeks{V-1} + + (weekday{static_cast(wd)}-Monday); + if (Y == not_a_year) + Y = static_cast(ymd_trial.year()); + else if (year{Y} != ymd_trial.year()) + goto broken; + if (m == not_a_month) + m = static_cast(static_cast(ymd_trial.month())); + else if (month(static_cast(m)) != ymd_trial.month()) + goto broken; + if (d == not_a_day) + d = static_cast(static_cast(ymd_trial.day())); + else if (day(static_cast(d)) != ymd_trial.day()) + goto broken; + computed = true; + } + if (Y != not_a_year && U != not_a_week_num && wd != not_a_weekday) + { + year_month_day ymd_trial = sys_days(year{Y}/January/Sunday[1]) + + weeks{U-1} + + (weekday{static_cast(wd)} - Sunday); + if (Y == not_a_year) + Y = static_cast(ymd_trial.year()); + else if (year{Y} != ymd_trial.year()) + goto broken; + if (m == not_a_month) + m = static_cast(static_cast(ymd_trial.month())); + else if (month(static_cast(m)) != ymd_trial.month()) + goto broken; + if (d == not_a_day) + d = static_cast(static_cast(ymd_trial.day())); + else if (day(static_cast(d)) != ymd_trial.day()) + goto broken; + computed = true; + } + if (Y != not_a_year && W != not_a_week_num && wd != not_a_weekday) + { + year_month_day ymd_trial = sys_days(year{Y}/January/Monday[1]) + + weeks{W-1} + + (weekday{static_cast(wd)} - Monday); + if (Y == not_a_year) + Y = static_cast(ymd_trial.year()); + else if (year{Y} != ymd_trial.year()) + goto broken; + if (m == not_a_month) + m = static_cast(static_cast(ymd_trial.month())); + else if (month(static_cast(m)) != ymd_trial.month()) + goto broken; + if (d == not_a_day) + d = static_cast(static_cast(ymd_trial.day())); + else if (day(static_cast(d)) != ymd_trial.day()) + goto broken; + computed = true; + } + if (j != not_a_doy && Y != not_a_year) + { + auto ymd_trial = year_month_day{local_days(year{Y}/1/1) + days{j-1}}; + if (m == not_a_month) + m = static_cast(static_cast(ymd_trial.month())); + else if (month(static_cast(m)) != ymd_trial.month()) + goto broken; + if (d == not_a_day) + d = static_cast(static_cast(ymd_trial.day())); + else if (day(static_cast(d)) != ymd_trial.day()) + goto broken; + j = not_a_doy; + } + auto ymd = year{Y}/m/d; + if (ymd.ok()) + { + if (wd == not_a_weekday) + wd = static_cast((weekday(sys_days(ymd)) - Sunday).count()); + else if (wd != static_cast((weekday(sys_days(ymd)) - Sunday).count())) + goto broken; + if (!computed) + { + if (G != not_a_year || V != not_a_week_num) + { + sys_days sd = ymd; + auto G_trial = year_month_day{sd + days{3}}.year(); + auto start = sys_days((G_trial - years{1})/December/Thursday[last]) + + (Monday - Thursday); + if (sd < start) + { + --G_trial; + if (V != not_a_week_num) + start = sys_days((G_trial - years{1})/December/Thursday[last]) + + (Monday - Thursday); + } + if (G != not_a_year && G != static_cast(G_trial)) + goto broken; + if (V != not_a_week_num) + { + auto V_trial = duration_cast(sd - start).count() + 1; + if (V != V_trial) + goto broken; + } + } + if (U != not_a_week_num) + { + auto start = sys_days(Sunday[1]/January/ymd.year()); + auto U_trial = floor(sys_days(ymd) - start).count() + 1; + if (U != U_trial) + goto broken; + } + if (W != not_a_week_num) + { + auto start = sys_days(Monday[1]/January/ymd.year()); + auto W_trial = floor(sys_days(ymd) - start).count() + 1; + if (W != W_trial) + goto broken; + } + } + } + fds.ymd = ymd; + if (I != not_a_hour_12_value) + { + if (!(1 <= I && I <= 12)) + goto broken; + if (p != not_a_ampm) + { + // p is in [0, 1] == [AM, PM] + // Store trial H in I + if (I == 12) + --p; + I += p*12; + // Either set H from I or make sure H and I are consistent + if (H == not_a_hour) + H = I; + else if (I != H) + goto broken; + } + else // p == not_a_ampm + { + // if H, make sure H and I could be consistent + if (H != not_a_hour) + { + if (I == 12) + { + if (H != 0 && H != 12) + goto broken; + } + else if (!(I == H || I == H+12)) + { + goto broken; + } + } + else // I is ambiguous, AM or PM? + goto broken; + } + } + if (H != not_a_hour) + { + fds.has_tod = true; + fds.tod = hh_mm_ss{hours{H}}; + } + if (M != not_a_minute) + { + fds.has_tod = true; + fds.tod.m_ = minutes{M}; + } + if (s != not_a_second) + { + fds.has_tod = true; + fds.tod.s_ = detail::decimal_format_seconds{s}; + } + if (j != not_a_doy) + { + fds.has_tod = true; + fds.tod.h_ += hours{days{j}}; + } + if (wd != not_a_weekday) + fds.wd = weekday{static_cast(wd)}; + if (abbrev != nullptr) + *abbrev = std::move(temp_abbrev); + if (offset != nullptr && temp_offset != not_a_offset) + *offset = temp_offset; + } + return is; + } +broken: + is.setstate(ios::failbit); + return is; +} + +template > +std::basic_istream& +from_stream(std::basic_istream& is, const CharT* fmt, year& y, + std::basic_string* abbrev = nullptr, + std::chrono::minutes* offset = nullptr) +{ + using CT = std::chrono::seconds; + fields fds{}; + date::from_stream(is, fmt, fds, abbrev, offset); + if (!fds.ymd.year().ok()) + is.setstate(std::ios::failbit); + if (!is.fail()) + y = fds.ymd.year(); + return is; +} + +template > +std::basic_istream& +from_stream(std::basic_istream& is, const CharT* fmt, month& m, + std::basic_string* abbrev = nullptr, + std::chrono::minutes* offset = nullptr) +{ + using CT = std::chrono::seconds; + fields fds{}; + date::from_stream(is, fmt, fds, abbrev, offset); + if (!fds.ymd.month().ok()) + is.setstate(std::ios::failbit); + if (!is.fail()) + m = fds.ymd.month(); + return is; +} + +template > +std::basic_istream& +from_stream(std::basic_istream& is, const CharT* fmt, day& d, + std::basic_string* abbrev = nullptr, + std::chrono::minutes* offset = nullptr) +{ + using CT = std::chrono::seconds; + fields fds{}; + date::from_stream(is, fmt, fds, abbrev, offset); + if (!fds.ymd.day().ok()) + is.setstate(std::ios::failbit); + if (!is.fail()) + d = fds.ymd.day(); + return is; +} + +template > +std::basic_istream& +from_stream(std::basic_istream& is, const CharT* fmt, weekday& wd, + std::basic_string* abbrev = nullptr, + std::chrono::minutes* offset = nullptr) +{ + using CT = std::chrono::seconds; + fields fds{}; + date::from_stream(is, fmt, fds, abbrev, offset); + if (!fds.wd.ok()) + is.setstate(std::ios::failbit); + if (!is.fail()) + wd = fds.wd; + return is; +} + +template > +std::basic_istream& +from_stream(std::basic_istream& is, const CharT* fmt, year_month& ym, + std::basic_string* abbrev = nullptr, + std::chrono::minutes* offset = nullptr) +{ + using CT = std::chrono::seconds; + fields fds{}; + date::from_stream(is, fmt, fds, abbrev, offset); + if (!fds.ymd.month().ok()) + is.setstate(std::ios::failbit); + if (!is.fail()) + ym = fds.ymd.year()/fds.ymd.month(); + return is; +} + +template > +std::basic_istream& +from_stream(std::basic_istream& is, const CharT* fmt, month_day& md, + std::basic_string* abbrev = nullptr, + std::chrono::minutes* offset = nullptr) +{ + using CT = std::chrono::seconds; + fields fds{}; + date::from_stream(is, fmt, fds, abbrev, offset); + if (!fds.ymd.month().ok() || !fds.ymd.day().ok()) + is.setstate(std::ios::failbit); + if (!is.fail()) + md = fds.ymd.month()/fds.ymd.day(); + return is; +} + +template > +std::basic_istream& +from_stream(std::basic_istream& is, const CharT* fmt, + year_month_day& ymd, std::basic_string* abbrev = nullptr, + std::chrono::minutes* offset = nullptr) +{ + using CT = std::chrono::seconds; + fields fds{}; + date::from_stream(is, fmt, fds, abbrev, offset); + if (!fds.ymd.ok()) + is.setstate(std::ios::failbit); + if (!is.fail()) + ymd = fds.ymd; + return is; +} + +template > +std::basic_istream& +from_stream(std::basic_istream& is, const CharT* fmt, + sys_time& tp, std::basic_string* abbrev = nullptr, + std::chrono::minutes* offset = nullptr) +{ + using CT = typename std::common_type::type; + using detail::round_i; + std::chrono::minutes offset_local{}; + auto offptr = offset ? offset : &offset_local; + fields fds{}; + fds.has_tod = true; + date::from_stream(is, fmt, fds, abbrev, offptr); + if (!fds.ymd.ok() || !fds.tod.in_conventional_range()) + is.setstate(std::ios::failbit); + if (!is.fail()) + tp = round_i(sys_days(fds.ymd) - *offptr + fds.tod.to_duration()); + return is; +} + +template > +std::basic_istream& +from_stream(std::basic_istream& is, const CharT* fmt, + local_time& tp, std::basic_string* abbrev = nullptr, + std::chrono::minutes* offset = nullptr) +{ + using CT = typename std::common_type::type; + using detail::round_i; + fields fds{}; + fds.has_tod = true; + date::from_stream(is, fmt, fds, abbrev, offset); + if (!fds.ymd.ok() || !fds.tod.in_conventional_range()) + is.setstate(std::ios::failbit); + if (!is.fail()) + tp = round_i(local_seconds{local_days(fds.ymd)} + fds.tod.to_duration()); + return is; +} + +template > +std::basic_istream& +from_stream(std::basic_istream& is, const CharT* fmt, + std::chrono::duration& d, + std::basic_string* abbrev = nullptr, + std::chrono::minutes* offset = nullptr) +{ + using Duration = std::chrono::duration; + using CT = typename std::common_type::type; + using detail::round_i; + fields fds{}; + date::from_stream(is, fmt, fds, abbrev, offset); + if (!fds.has_tod) + is.setstate(std::ios::failbit); + if (!is.fail()) + d = round_i(fds.tod.to_duration()); + return is; +} + +template , + class Alloc = std::allocator> +struct parse_manip +{ + const std::basic_string format_; + Parsable& tp_; + std::basic_string* abbrev_; + std::chrono::minutes* offset_; + +public: + parse_manip(std::basic_string format, Parsable& tp, + std::basic_string* abbrev = nullptr, + std::chrono::minutes* offset = nullptr) + : format_(std::move(format)) + , tp_(tp) + , abbrev_(abbrev) + , offset_(offset) + {} + +#if HAS_STRING_VIEW + parse_manip(const CharT* format, Parsable& tp, + std::basic_string* abbrev = nullptr, + std::chrono::minutes* offset = nullptr) + : format_(format) + , tp_(tp) + , abbrev_(abbrev) + , offset_(offset) + {} + + parse_manip(std::basic_string_view format, Parsable& tp, + std::basic_string* abbrev = nullptr, + std::chrono::minutes* offset = nullptr) + : format_(format) + , tp_(tp) + , abbrev_(abbrev) + , offset_(offset) + {} +#endif // HAS_STRING_VIEW +}; + +template +std::basic_istream& +operator>>(std::basic_istream& is, + const parse_manip& x) +{ + return date::from_stream(is, x.format_.c_str(), x.tp_, x.abbrev_, x.offset_); +} + +template +inline +auto +parse(const std::basic_string& format, Parsable& tp) + -> decltype(date::from_stream(std::declval&>(), + format.c_str(), tp), + parse_manip{format, tp}) +{ + return {format, tp}; +} + +template +inline +auto +parse(const std::basic_string& format, Parsable& tp, + std::basic_string& abbrev) + -> decltype(date::from_stream(std::declval&>(), + format.c_str(), tp, &abbrev), + parse_manip{format, tp, &abbrev}) +{ + return {format, tp, &abbrev}; +} + +template +inline +auto +parse(const std::basic_string& format, Parsable& tp, + std::chrono::minutes& offset) + -> decltype(date::from_stream(std::declval&>(), + format.c_str(), tp, + std::declval*>(), + &offset), + parse_manip{format, tp, nullptr, &offset}) +{ + return {format, tp, nullptr, &offset}; +} + +template +inline +auto +parse(const std::basic_string& format, Parsable& tp, + std::basic_string& abbrev, std::chrono::minutes& offset) + -> decltype(date::from_stream(std::declval&>(), + format.c_str(), tp, &abbrev, &offset), + parse_manip{format, tp, &abbrev, &offset}) +{ + return {format, tp, &abbrev, &offset}; +} + +// const CharT* formats + +template +inline +auto +parse(const CharT* format, Parsable& tp) + -> decltype(date::from_stream(std::declval&>(), format, tp), + parse_manip{format, tp}) +{ + return {format, tp}; +} + +template +inline +auto +parse(const CharT* format, Parsable& tp, std::basic_string& abbrev) + -> decltype(date::from_stream(std::declval&>(), format, + tp, &abbrev), + parse_manip{format, tp, &abbrev}) +{ + return {format, tp, &abbrev}; +} + +template +inline +auto +parse(const CharT* format, Parsable& tp, std::chrono::minutes& offset) + -> decltype(date::from_stream(std::declval&>(), format, + tp, std::declval*>(), &offset), + parse_manip{format, tp, nullptr, &offset}) +{ + return {format, tp, nullptr, &offset}; +} + +template +inline +auto +parse(const CharT* format, Parsable& tp, + std::basic_string& abbrev, std::chrono::minutes& offset) + -> decltype(date::from_stream(std::declval&>(), format, + tp, &abbrev, &offset), + parse_manip{format, tp, &abbrev, &offset}) +{ + return {format, tp, &abbrev, &offset}; +} + +// duration streaming + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, + const std::chrono::duration& d) +{ + return os << detail::make_string::from(d.count()) + + detail::get_units(typename Period::type{}); +} + +} // namespace date + +#ifdef _MSC_VER +# pragma warning(pop) +#endif + +#ifdef __GNUC__ +# pragma GCC diagnostic pop +#endif + +#endif // DATE_H diff --git a/src/date/islamic.h b/src/date/islamic.h new file mode 100644 index 0000000..82ed659 --- /dev/null +++ b/src/date/islamic.h @@ -0,0 +1,3031 @@ +#ifndef ISLAMIC_H +#define ISLAMIC_H + +// The MIT License (MIT) +// +// Copyright (c) 2016 Howard Hinnant +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// Our apologies. When the previous paragraph was written, lowercase had not yet +// been invented (that would involve another several millennia of evolution). +// We did not mean to shout. + +#include "date.h" + +namespace islamic +{ + +// durations + +using days = date::days; + +using weeks = date::weeks; + +using years = std::chrono::duration + , days::period>>; + +using months = std::chrono::duration + >>; + +// time_point + +using sys_days = date::sys_days; +using local_days = date::local_days; + +// types + +struct last_spec +{ + explicit last_spec() = default; +}; + +class day; +class month; +class year; + +class weekday; +class weekday_indexed; +class weekday_last; + +class month_day; +class month_day_last; +class month_weekday; +class month_weekday_last; + +class year_month; + +class year_month_day; +class year_month_day_last; +class year_month_weekday; +class year_month_weekday_last; + +// date composition operators + +CONSTCD11 year_month operator/(const year& y, const month& m) NOEXCEPT; +CONSTCD11 year_month operator/(const year& y, int m) NOEXCEPT; + +CONSTCD11 month_day operator/(const day& d, const month& m) NOEXCEPT; +CONSTCD11 month_day operator/(const day& d, int m) NOEXCEPT; +CONSTCD11 month_day operator/(const month& m, const day& d) NOEXCEPT; +CONSTCD11 month_day operator/(const month& m, int d) NOEXCEPT; +CONSTCD11 month_day operator/(int m, const day& d) NOEXCEPT; + +CONSTCD11 month_day_last operator/(const month& m, last_spec) NOEXCEPT; +CONSTCD11 month_day_last operator/(int m, last_spec) NOEXCEPT; +CONSTCD11 month_day_last operator/(last_spec, const month& m) NOEXCEPT; +CONSTCD11 month_day_last operator/(last_spec, int m) NOEXCEPT; + +CONSTCD11 month_weekday operator/(const month& m, const weekday_indexed& wdi) NOEXCEPT; +CONSTCD11 month_weekday operator/(int m, const weekday_indexed& wdi) NOEXCEPT; +CONSTCD11 month_weekday operator/(const weekday_indexed& wdi, const month& m) NOEXCEPT; +CONSTCD11 month_weekday operator/(const weekday_indexed& wdi, int m) NOEXCEPT; + +CONSTCD11 month_weekday_last operator/(const month& m, const weekday_last& wdl) NOEXCEPT; +CONSTCD11 month_weekday_last operator/(int m, const weekday_last& wdl) NOEXCEPT; +CONSTCD11 month_weekday_last operator/(const weekday_last& wdl, const month& m) NOEXCEPT; +CONSTCD11 month_weekday_last operator/(const weekday_last& wdl, int m) NOEXCEPT; + +CONSTCD11 year_month_day operator/(const year_month& ym, const day& d) NOEXCEPT; +CONSTCD11 year_month_day operator/(const year_month& ym, int d) NOEXCEPT; +CONSTCD11 year_month_day operator/(const year& y, const month_day& md) NOEXCEPT; +CONSTCD11 year_month_day operator/(int y, const month_day& md) NOEXCEPT; +CONSTCD11 year_month_day operator/(const month_day& md, const year& y) NOEXCEPT; +CONSTCD11 year_month_day operator/(const month_day& md, int y) NOEXCEPT; + +CONSTCD11 + year_month_day_last operator/(const year_month& ym, last_spec) NOEXCEPT; +CONSTCD11 + year_month_day_last operator/(const year& y, const month_day_last& mdl) NOEXCEPT; +CONSTCD11 + year_month_day_last operator/(int y, const month_day_last& mdl) NOEXCEPT; +CONSTCD11 + year_month_day_last operator/(const month_day_last& mdl, const year& y) NOEXCEPT; +CONSTCD11 + year_month_day_last operator/(const month_day_last& mdl, int y) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator/(const year_month& ym, const weekday_indexed& wdi) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator/(const year& y, const month_weekday& mwd) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator/(int y, const month_weekday& mwd) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator/(const month_weekday& mwd, const year& y) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator/(const month_weekday& mwd, int y) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator/(const year_month& ym, const weekday_last& wdl) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator/(const year& y, const month_weekday_last& mwdl) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator/(int y, const month_weekday_last& mwdl) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator/(const month_weekday_last& mwdl, const year& y) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator/(const month_weekday_last& mwdl, int y) NOEXCEPT; + +// Detailed interface + +// day + +class day +{ + unsigned char d_; + +public: + explicit CONSTCD11 day(unsigned d) NOEXCEPT; + + CONSTCD14 day& operator++() NOEXCEPT; + CONSTCD14 day operator++(int) NOEXCEPT; + CONSTCD14 day& operator--() NOEXCEPT; + CONSTCD14 day operator--(int) NOEXCEPT; + + CONSTCD14 day& operator+=(const days& d) NOEXCEPT; + CONSTCD14 day& operator-=(const days& d) NOEXCEPT; + + CONSTCD11 explicit operator unsigned() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const day& x, const day& y) NOEXCEPT; +CONSTCD11 bool operator!=(const day& x, const day& y) NOEXCEPT; +CONSTCD11 bool operator< (const day& x, const day& y) NOEXCEPT; +CONSTCD11 bool operator> (const day& x, const day& y) NOEXCEPT; +CONSTCD11 bool operator<=(const day& x, const day& y) NOEXCEPT; +CONSTCD11 bool operator>=(const day& x, const day& y) NOEXCEPT; + +CONSTCD11 day operator+(const day& x, const days& y) NOEXCEPT; +CONSTCD11 day operator+(const days& x, const day& y) NOEXCEPT; +CONSTCD11 day operator-(const day& x, const days& y) NOEXCEPT; +CONSTCD11 days operator-(const day& x, const day& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const day& d); + +// month + +class month +{ + unsigned char m_; + +public: + explicit CONSTCD11 month(unsigned m) NOEXCEPT; + + CONSTCD14 month& operator++() NOEXCEPT; + CONSTCD14 month operator++(int) NOEXCEPT; + CONSTCD14 month& operator--() NOEXCEPT; + CONSTCD14 month operator--(int) NOEXCEPT; + + CONSTCD14 month& operator+=(const months& m) NOEXCEPT; + CONSTCD14 month& operator-=(const months& m) NOEXCEPT; + + CONSTCD11 explicit operator unsigned() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const month& x, const month& y) NOEXCEPT; +CONSTCD11 bool operator!=(const month& x, const month& y) NOEXCEPT; +CONSTCD11 bool operator< (const month& x, const month& y) NOEXCEPT; +CONSTCD11 bool operator> (const month& x, const month& y) NOEXCEPT; +CONSTCD11 bool operator<=(const month& x, const month& y) NOEXCEPT; +CONSTCD11 bool operator>=(const month& x, const month& y) NOEXCEPT; + +CONSTCD14 month operator+(const month& x, const months& y) NOEXCEPT; +CONSTCD14 month operator+(const months& x, const month& y) NOEXCEPT; +CONSTCD14 month operator-(const month& x, const months& y) NOEXCEPT; +CONSTCD14 months operator-(const month& x, const month& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const month& m); + +// year + +class year +{ + short y_; + +public: + explicit CONSTCD11 year(int y) NOEXCEPT; + + CONSTCD14 year& operator++() NOEXCEPT; + CONSTCD14 year operator++(int) NOEXCEPT; + CONSTCD14 year& operator--() NOEXCEPT; + CONSTCD14 year operator--(int) NOEXCEPT; + + CONSTCD14 year& operator+=(const years& y) NOEXCEPT; + CONSTCD14 year& operator-=(const years& y) NOEXCEPT; + + CONSTCD14 bool is_leap() const NOEXCEPT; + + CONSTCD11 explicit operator int() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; + + static CONSTCD11 year min() NOEXCEPT; + static CONSTCD11 year max() NOEXCEPT; +}; + +CONSTCD11 bool operator==(const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator!=(const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator< (const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator> (const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator<=(const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator>=(const year& x, const year& y) NOEXCEPT; + +CONSTCD11 year operator+(const year& x, const years& y) NOEXCEPT; +CONSTCD11 year operator+(const years& x, const year& y) NOEXCEPT; +CONSTCD11 year operator-(const year& x, const years& y) NOEXCEPT; +CONSTCD11 years operator-(const year& x, const year& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year& y); + +// weekday + +class weekday +{ + unsigned char wd_; +public: + explicit CONSTCD11 weekday(unsigned wd) NOEXCEPT; + explicit weekday(int) = delete; + CONSTCD11 weekday(const sys_days& dp) NOEXCEPT; + CONSTCD11 explicit weekday(const local_days& dp) NOEXCEPT; + + CONSTCD14 weekday& operator++() NOEXCEPT; + CONSTCD14 weekday operator++(int) NOEXCEPT; + CONSTCD14 weekday& operator--() NOEXCEPT; + CONSTCD14 weekday operator--(int) NOEXCEPT; + + CONSTCD14 weekday& operator+=(const days& d) NOEXCEPT; + CONSTCD14 weekday& operator-=(const days& d) NOEXCEPT; + + CONSTCD11 explicit operator unsigned() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; + + CONSTCD11 weekday_indexed operator[](unsigned index) const NOEXCEPT; + CONSTCD11 weekday_last operator[](last_spec) const NOEXCEPT; + +private: + static CONSTCD11 unsigned char weekday_from_days(int z) NOEXCEPT; +}; + +CONSTCD11 bool operator==(const weekday& x, const weekday& y) NOEXCEPT; +CONSTCD11 bool operator!=(const weekday& x, const weekday& y) NOEXCEPT; + +CONSTCD14 weekday operator+(const weekday& x, const days& y) NOEXCEPT; +CONSTCD14 weekday operator+(const days& x, const weekday& y) NOEXCEPT; +CONSTCD14 weekday operator-(const weekday& x, const days& y) NOEXCEPT; +CONSTCD14 days operator-(const weekday& x, const weekday& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday& wd); + +// weekday_indexed + +class weekday_indexed +{ + unsigned char wd_ : 4; + unsigned char index_ : 4; + +public: + CONSTCD11 weekday_indexed(const islamic::weekday& wd, unsigned index) NOEXCEPT; + + CONSTCD11 islamic::weekday weekday() const NOEXCEPT; + CONSTCD11 unsigned index() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const weekday_indexed& x, const weekday_indexed& y) NOEXCEPT; +CONSTCD11 bool operator!=(const weekday_indexed& x, const weekday_indexed& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday_indexed& wdi); + +// weekday_last + +class weekday_last +{ + islamic::weekday wd_; + +public: + explicit CONSTCD11 weekday_last(const islamic::weekday& wd) NOEXCEPT; + + CONSTCD11 islamic::weekday weekday() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const weekday_last& x, const weekday_last& y) NOEXCEPT; +CONSTCD11 bool operator!=(const weekday_last& x, const weekday_last& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday_last& wdl); + +// year_month + +class year_month +{ + islamic::year y_; + islamic::month m_; + +public: + CONSTCD11 year_month(const islamic::year& y, const islamic::month& m) NOEXCEPT; + + CONSTCD11 islamic::year year() const NOEXCEPT; + CONSTCD11 islamic::month month() const NOEXCEPT; + + CONSTCD14 year_month& operator+=(const months& dm) NOEXCEPT; + CONSTCD14 year_month& operator-=(const months& dm) NOEXCEPT; + CONSTCD14 year_month& operator+=(const years& dy) NOEXCEPT; + CONSTCD14 year_month& operator-=(const years& dy) NOEXCEPT; + + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 bool operator!=(const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 bool operator< (const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 bool operator> (const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 bool operator<=(const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 bool operator>=(const year_month& x, const year_month& y) NOEXCEPT; + +CONSTCD14 year_month operator+(const year_month& ym, const months& dm) NOEXCEPT; +CONSTCD14 year_month operator+(const months& dm, const year_month& ym) NOEXCEPT; +CONSTCD14 year_month operator-(const year_month& ym, const months& dm) NOEXCEPT; + +CONSTCD11 months operator-(const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 year_month operator+(const year_month& ym, const years& dy) NOEXCEPT; +CONSTCD11 year_month operator+(const years& dy, const year_month& ym) NOEXCEPT; +CONSTCD11 year_month operator-(const year_month& ym, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month& ym); + +// month_day + +class month_day +{ + islamic::month m_; + islamic::day d_; + +public: + CONSTCD11 month_day(const islamic::month& m, const islamic::day& d) NOEXCEPT; + + CONSTCD11 islamic::month month() const NOEXCEPT; + CONSTCD11 islamic::day day() const NOEXCEPT; + + CONSTCD14 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const month_day& x, const month_day& y) NOEXCEPT; +CONSTCD11 bool operator!=(const month_day& x, const month_day& y) NOEXCEPT; +CONSTCD11 bool operator< (const month_day& x, const month_day& y) NOEXCEPT; +CONSTCD11 bool operator> (const month_day& x, const month_day& y) NOEXCEPT; +CONSTCD11 bool operator<=(const month_day& x, const month_day& y) NOEXCEPT; +CONSTCD11 bool operator>=(const month_day& x, const month_day& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_day& md); + +// month_day_last + +class month_day_last +{ + islamic::month m_; + +public: + CONSTCD11 explicit month_day_last(const islamic::month& m) NOEXCEPT; + + CONSTCD11 islamic::month month() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const month_day_last& x, const month_day_last& y) NOEXCEPT; +CONSTCD11 bool operator!=(const month_day_last& x, const month_day_last& y) NOEXCEPT; +CONSTCD11 bool operator< (const month_day_last& x, const month_day_last& y) NOEXCEPT; +CONSTCD11 bool operator> (const month_day_last& x, const month_day_last& y) NOEXCEPT; +CONSTCD11 bool operator<=(const month_day_last& x, const month_day_last& y) NOEXCEPT; +CONSTCD11 bool operator>=(const month_day_last& x, const month_day_last& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_day_last& mdl); + +// month_weekday + +class month_weekday +{ + islamic::month m_; + islamic::weekday_indexed wdi_; +public: + CONSTCD11 month_weekday(const islamic::month& m, + const islamic::weekday_indexed& wdi) NOEXCEPT; + + CONSTCD11 islamic::month month() const NOEXCEPT; + CONSTCD11 islamic::weekday_indexed weekday_indexed() const NOEXCEPT; + + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const month_weekday& x, const month_weekday& y) NOEXCEPT; +CONSTCD11 bool operator!=(const month_weekday& x, const month_weekday& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_weekday& mwd); + +// month_weekday_last + +class month_weekday_last +{ + islamic::month m_; + islamic::weekday_last wdl_; + +public: + CONSTCD11 month_weekday_last(const islamic::month& m, + const islamic::weekday_last& wd) NOEXCEPT; + + CONSTCD11 islamic::month month() const NOEXCEPT; + CONSTCD11 islamic::weekday_last weekday_last() const NOEXCEPT; + + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 + bool operator==(const month_weekday_last& x, const month_weekday_last& y) NOEXCEPT; +CONSTCD11 + bool operator!=(const month_weekday_last& x, const month_weekday_last& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_weekday_last& mwdl); + +// class year_month_day + +class year_month_day +{ + islamic::year y_; + islamic::month m_; + islamic::day d_; + +public: + CONSTCD11 year_month_day(const islamic::year& y, const islamic::month& m, + const islamic::day& d) NOEXCEPT; + CONSTCD14 year_month_day(const year_month_day_last& ymdl) NOEXCEPT; + + CONSTCD14 year_month_day(sys_days dp) NOEXCEPT; + CONSTCD14 explicit year_month_day(local_days dp) NOEXCEPT; + + CONSTCD14 year_month_day& operator+=(const months& m) NOEXCEPT; + CONSTCD14 year_month_day& operator-=(const months& m) NOEXCEPT; + CONSTCD14 year_month_day& operator+=(const years& y) NOEXCEPT; + CONSTCD14 year_month_day& operator-=(const years& y) NOEXCEPT; + + CONSTCD11 islamic::year year() const NOEXCEPT; + CONSTCD11 islamic::month month() const NOEXCEPT; + CONSTCD11 islamic::day day() const NOEXCEPT; + + CONSTCD14 operator sys_days() const NOEXCEPT; + CONSTCD14 explicit operator local_days() const NOEXCEPT; + CONSTCD14 bool ok() const NOEXCEPT; + +private: + static CONSTCD14 year_month_day from_days(days dp) NOEXCEPT; + CONSTCD14 days to_days() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const year_month_day& x, const year_month_day& y) NOEXCEPT; +CONSTCD11 bool operator!=(const year_month_day& x, const year_month_day& y) NOEXCEPT; +CONSTCD11 bool operator< (const year_month_day& x, const year_month_day& y) NOEXCEPT; +CONSTCD11 bool operator> (const year_month_day& x, const year_month_day& y) NOEXCEPT; +CONSTCD11 bool operator<=(const year_month_day& x, const year_month_day& y) NOEXCEPT; +CONSTCD11 bool operator>=(const year_month_day& x, const year_month_day& y) NOEXCEPT; + +CONSTCD14 year_month_day operator+(const year_month_day& ymd, const months& dm) NOEXCEPT; +CONSTCD14 year_month_day operator+(const months& dm, const year_month_day& ymd) NOEXCEPT; +CONSTCD14 year_month_day operator-(const year_month_day& ymd, const months& dm) NOEXCEPT; +CONSTCD11 year_month_day operator+(const year_month_day& ymd, const years& dy) NOEXCEPT; +CONSTCD11 year_month_day operator+(const years& dy, const year_month_day& ymd) NOEXCEPT; +CONSTCD11 year_month_day operator-(const year_month_day& ymd, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_day& ymd); + +// year_month_day_last + +class year_month_day_last +{ + islamic::year y_; + islamic::month_day_last mdl_; + +public: + CONSTCD11 year_month_day_last(const islamic::year& y, + const islamic::month_day_last& mdl) NOEXCEPT; + + CONSTCD14 year_month_day_last& operator+=(const months& m) NOEXCEPT; + CONSTCD14 year_month_day_last& operator-=(const months& m) NOEXCEPT; + CONSTCD14 year_month_day_last& operator+=(const years& y) NOEXCEPT; + CONSTCD14 year_month_day_last& operator-=(const years& y) NOEXCEPT; + + CONSTCD11 islamic::year year() const NOEXCEPT; + CONSTCD11 islamic::month month() const NOEXCEPT; + CONSTCD11 islamic::month_day_last month_day_last() const NOEXCEPT; + CONSTCD14 islamic::day day() const NOEXCEPT; + + CONSTCD14 operator sys_days() const NOEXCEPT; + CONSTCD14 explicit operator local_days() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 + bool operator==(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; +CONSTCD11 + bool operator!=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; +CONSTCD11 + bool operator< (const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; +CONSTCD11 + bool operator> (const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; +CONSTCD11 + bool operator<=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; +CONSTCD11 + bool operator>=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; + +CONSTCD14 +year_month_day_last +operator+(const year_month_day_last& ymdl, const months& dm) NOEXCEPT; + +CONSTCD14 +year_month_day_last +operator+(const months& dm, const year_month_day_last& ymdl) NOEXCEPT; + +CONSTCD11 +year_month_day_last +operator+(const year_month_day_last& ymdl, const years& dy) NOEXCEPT; + +CONSTCD11 +year_month_day_last +operator+(const years& dy, const year_month_day_last& ymdl) NOEXCEPT; + +CONSTCD14 +year_month_day_last +operator-(const year_month_day_last& ymdl, const months& dm) NOEXCEPT; + +CONSTCD11 +year_month_day_last +operator-(const year_month_day_last& ymdl, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_day_last& ymdl); + +// year_month_weekday + +class year_month_weekday +{ + islamic::year y_; + islamic::month m_; + islamic::weekday_indexed wdi_; + +public: + CONSTCD11 year_month_weekday(const islamic::year& y, const islamic::month& m, + const islamic::weekday_indexed& wdi) NOEXCEPT; + CONSTCD14 year_month_weekday(const sys_days& dp) NOEXCEPT; + CONSTCD14 explicit year_month_weekday(const local_days& dp) NOEXCEPT; + + CONSTCD14 year_month_weekday& operator+=(const months& m) NOEXCEPT; + CONSTCD14 year_month_weekday& operator-=(const months& m) NOEXCEPT; + CONSTCD14 year_month_weekday& operator+=(const years& y) NOEXCEPT; + CONSTCD14 year_month_weekday& operator-=(const years& y) NOEXCEPT; + + CONSTCD11 islamic::year year() const NOEXCEPT; + CONSTCD11 islamic::month month() const NOEXCEPT; + CONSTCD11 islamic::weekday weekday() const NOEXCEPT; + CONSTCD11 unsigned index() const NOEXCEPT; + CONSTCD11 islamic::weekday_indexed weekday_indexed() const NOEXCEPT; + + CONSTCD14 operator sys_days() const NOEXCEPT; + CONSTCD14 explicit operator local_days() const NOEXCEPT; + CONSTCD14 bool ok() const NOEXCEPT; + +private: + static CONSTCD14 year_month_weekday from_days(days dp) NOEXCEPT; + CONSTCD14 days to_days() const NOEXCEPT; +}; + +CONSTCD11 + bool operator==(const year_month_weekday& x, const year_month_weekday& y) NOEXCEPT; +CONSTCD11 + bool operator!=(const year_month_weekday& x, const year_month_weekday& y) NOEXCEPT; + +CONSTCD14 +year_month_weekday +operator+(const year_month_weekday& ymwd, const months& dm) NOEXCEPT; + +CONSTCD14 +year_month_weekday +operator+(const months& dm, const year_month_weekday& ymwd) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator+(const year_month_weekday& ymwd, const years& dy) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator+(const years& dy, const year_month_weekday& ymwd) NOEXCEPT; + +CONSTCD14 +year_month_weekday +operator-(const year_month_weekday& ymwd, const months& dm) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator-(const year_month_weekday& ymwd, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_weekday& ymwdi); + +// year_month_weekday_last + +class year_month_weekday_last +{ + islamic::year y_; + islamic::month m_; + islamic::weekday_last wdl_; + +public: + CONSTCD11 year_month_weekday_last(const islamic::year& y, const islamic::month& m, + const islamic::weekday_last& wdl) NOEXCEPT; + + CONSTCD14 year_month_weekday_last& operator+=(const months& m) NOEXCEPT; + CONSTCD14 year_month_weekday_last& operator-=(const months& m) NOEXCEPT; + CONSTCD14 year_month_weekday_last& operator+=(const years& y) NOEXCEPT; + CONSTCD14 year_month_weekday_last& operator-=(const years& y) NOEXCEPT; + + CONSTCD11 islamic::year year() const NOEXCEPT; + CONSTCD11 islamic::month month() const NOEXCEPT; + CONSTCD11 islamic::weekday weekday() const NOEXCEPT; + CONSTCD11 islamic::weekday_last weekday_last() const NOEXCEPT; + + CONSTCD14 operator sys_days() const NOEXCEPT; + CONSTCD14 explicit operator local_days() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; + +private: + CONSTCD14 days to_days() const NOEXCEPT; +}; + +CONSTCD11 +bool +operator==(const year_month_weekday_last& x, const year_month_weekday_last& y) NOEXCEPT; + +CONSTCD11 +bool +operator!=(const year_month_weekday_last& x, const year_month_weekday_last& y) NOEXCEPT; + +CONSTCD14 +year_month_weekday_last +operator+(const year_month_weekday_last& ymwdl, const months& dm) NOEXCEPT; + +CONSTCD14 +year_month_weekday_last +operator+(const months& dm, const year_month_weekday_last& ymwdl) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator+(const year_month_weekday_last& ymwdl, const years& dy) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator+(const years& dy, const year_month_weekday_last& ymwdl) NOEXCEPT; + +CONSTCD14 +year_month_weekday_last +operator-(const year_month_weekday_last& ymwdl, const months& dm) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator-(const year_month_weekday_last& ymwdl, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_weekday_last& ymwdl); + +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) +inline namespace literals +{ + +CONSTCD11 islamic::day operator "" _d(unsigned long long d) NOEXCEPT; +CONSTCD11 islamic::year operator "" _y(unsigned long long y) NOEXCEPT; + +} // inline namespace literals +#endif // !defined(_MSC_VER) || (_MSC_VER >= 1900) + +//----------------+ +// Implementation | +//----------------+ + +// day + +CONSTCD11 inline day::day(unsigned d) NOEXCEPT : d_(static_cast(d)) {} +CONSTCD14 inline day& day::operator++() NOEXCEPT {++d_; return *this;} +CONSTCD14 inline day day::operator++(int) NOEXCEPT {auto tmp(*this); ++(*this); return tmp;} +CONSTCD14 inline day& day::operator--() NOEXCEPT {--d_; return *this;} +CONSTCD14 inline day day::operator--(int) NOEXCEPT {auto tmp(*this); --(*this); return tmp;} +CONSTCD14 inline day& day::operator+=(const days& d) NOEXCEPT {*this = *this + d; return *this;} +CONSTCD14 inline day& day::operator-=(const days& d) NOEXCEPT {*this = *this - d; return *this;} +CONSTCD11 inline day::operator unsigned() const NOEXCEPT {return d_;} +CONSTCD11 inline bool day::ok() const NOEXCEPT {return 1 <= d_ && d_ <= 30;} + +CONSTCD11 +inline +bool +operator==(const day& x, const day& y) NOEXCEPT +{ + return static_cast(x) == static_cast(y); +} + +CONSTCD11 +inline +bool +operator!=(const day& x, const day& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const day& x, const day& y) NOEXCEPT +{ + return static_cast(x) < static_cast(y); +} + +CONSTCD11 +inline +bool +operator>(const day& x, const day& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const day& x, const day& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const day& x, const day& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD11 +inline +days +operator-(const day& x, const day& y) NOEXCEPT +{ + return days{static_cast(static_cast(x) + - static_cast(y))}; +} + +CONSTCD11 +inline +day +operator+(const day& x, const days& y) NOEXCEPT +{ + return day{static_cast(x) + static_cast(y.count())}; +} + +CONSTCD11 +inline +day +operator+(const days& x, const day& y) NOEXCEPT +{ + return y + x; +} + +CONSTCD11 +inline +day +operator-(const day& x, const days& y) NOEXCEPT +{ + return x + -y; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const day& d) +{ + date::detail::save_ostream _(os); + os.fill('0'); + os.flags(std::ios::dec | std::ios::right); + os.width(2); + os << static_cast(d); + return os; +} + +// month + +CONSTCD11 inline month::month(unsigned m) NOEXCEPT : m_(static_cast(m)) {} +CONSTCD14 inline month& month::operator++() NOEXCEPT {if (++m_ == 13) m_ = 1; return *this;} +CONSTCD14 inline month month::operator++(int) NOEXCEPT {auto tmp(*this); ++(*this); return tmp;} +CONSTCD14 inline month& month::operator--() NOEXCEPT {if (--m_ == 0) m_ = 12; return *this;} +CONSTCD14 inline month month::operator--(int) NOEXCEPT {auto tmp(*this); --(*this); return tmp;} + +CONSTCD14 +inline +month& +month::operator+=(const months& m) NOEXCEPT +{ + *this = *this + m; + return *this; +} + +CONSTCD14 +inline +month& +month::operator-=(const months& m) NOEXCEPT +{ + *this = *this - m; + return *this; +} + +CONSTCD11 inline month::operator unsigned() const NOEXCEPT {return m_;} +CONSTCD11 inline bool month::ok() const NOEXCEPT {return 1 <= m_ && m_ <= 12;} + +CONSTCD11 +inline +bool +operator==(const month& x, const month& y) NOEXCEPT +{ + return static_cast(x) == static_cast(y); +} + +CONSTCD11 +inline +bool +operator!=(const month& x, const month& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const month& x, const month& y) NOEXCEPT +{ + return static_cast(x) < static_cast(y); +} + +CONSTCD11 +inline +bool +operator>(const month& x, const month& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const month& x, const month& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const month& x, const month& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD14 +inline +months +operator-(const month& x, const month& y) NOEXCEPT +{ + auto const d = static_cast(x) - static_cast(y); + return months(d <= 11 ? d : d + 12); +} + +CONSTCD14 +inline +month +operator+(const month& x, const months& y) NOEXCEPT +{ + auto const mu = static_cast(static_cast(x)) - 1 + y.count(); + auto const yr = (mu >= 0 ? mu : mu-11) / 12; + return month{static_cast(mu - yr * 12 + 1)}; +} + +CONSTCD14 +inline +month +operator+(const months& x, const month& y) NOEXCEPT +{ + return y + x; +} + +CONSTCD14 +inline +month +operator-(const month& x, const months& y) NOEXCEPT +{ + return x + -y; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const month& m) +{ + switch (static_cast(m)) + { + case 1: + os << "Muharram"; + break; + case 2: + os << "Safar"; + break; + case 3: + os << "Rabi' al-awwal"; + break; + case 4: + os << "Rabi' al-thani"; + break; + case 5: + os << "Jumada al-awwal"; + break; + case 6: + os << "Jumada al-Thani"; + break; + case 7: + os << "Rajab"; + break; + case 8: + os << "Sha'ban"; + break; + case 9: + os << "Ramadan"; + break; + case 10: + os << "Shawwal"; + break; + case 11: + os << "Dhu al-Qi'dah"; + break; + case 12: + os << "Dhu al-Hijjah"; + break; + default: + os << static_cast(m) << " is not a valid month"; + break; + } + return os; +} + +// year + +CONSTCD11 inline year::year(int y) NOEXCEPT : y_(static_cast(y)) {} +CONSTCD14 inline year& year::operator++() NOEXCEPT {++y_; return *this;} +CONSTCD14 inline year year::operator++(int) NOEXCEPT {auto tmp(*this); ++(*this); return tmp;} +CONSTCD14 inline year& year::operator--() NOEXCEPT {--y_; return *this;} +CONSTCD14 inline year year::operator--(int) NOEXCEPT {auto tmp(*this); --(*this); return tmp;} +CONSTCD14 inline year& year::operator+=(const years& y) NOEXCEPT {*this = *this + y; return *this;} +CONSTCD14 inline year& year::operator-=(const years& y) NOEXCEPT {*this = *this - y; return *this;} + +CONSTCD14 +inline +bool +year::is_leap() const NOEXCEPT +{ + int y = y_ - 1; + const int era = (y >= 0 ? y : y-29) / 30; + const unsigned yoe = static_cast(y - era * 30); + switch (yoe) + { + case 1: + case 4: + case 6: + case 9: + case 12: + case 15: + case 17: + case 20: + case 23: + case 25: + case 28: + return true; + default: + return false; + } +} + +CONSTCD11 inline year::operator int() const NOEXCEPT {return y_;} +CONSTCD11 inline bool year::ok() const NOEXCEPT {return true;} + +CONSTCD11 +inline +year +year::min() NOEXCEPT +{ + return year{std::numeric_limits::min()}; +} + +CONSTCD11 +inline +year +year::max() NOEXCEPT +{ + return year{std::numeric_limits::max()}; +} + +CONSTCD11 +inline +bool +operator==(const year& x, const year& y) NOEXCEPT +{ + return static_cast(x) == static_cast(y); +} + +CONSTCD11 +inline +bool +operator!=(const year& x, const year& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year& x, const year& y) NOEXCEPT +{ + return static_cast(x) < static_cast(y); +} + +CONSTCD11 +inline +bool +operator>(const year& x, const year& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year& x, const year& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year& x, const year& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD11 +inline +years +operator-(const year& x, const year& y) NOEXCEPT +{ + return years{static_cast(x) - static_cast(y)}; +} + +CONSTCD11 +inline +year +operator+(const year& x, const years& y) NOEXCEPT +{ + return year{static_cast(x) + y.count()}; +} + +CONSTCD11 +inline +year +operator+(const years& x, const year& y) NOEXCEPT +{ + return y + x; +} + +CONSTCD11 +inline +year +operator-(const year& x, const years& y) NOEXCEPT +{ + return year{static_cast(x) - y.count()}; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year& y) +{ + date::detail::save_ostream _(os); + os.fill('0'); + os.flags(std::ios::dec | std::ios::internal); + os.width(4 + (y < year{0})); + os << static_cast(y); + return os; +} + +// weekday + +CONSTCD11 +inline +unsigned char +weekday::weekday_from_days(int z) NOEXCEPT +{ + return static_cast(static_cast( + z >= -4 ? (z+4) % 7 : (z+5) % 7 + 6)); +} + +CONSTCD11 +inline +weekday::weekday(unsigned wd) NOEXCEPT + : wd_(static_cast(wd)) + {} + +CONSTCD11 +inline +weekday::weekday(const sys_days& dp) NOEXCEPT + : wd_(weekday_from_days(dp.time_since_epoch().count())) + {} + +CONSTCD11 +inline +weekday::weekday(const local_days& dp) NOEXCEPT + : wd_(weekday_from_days(dp.time_since_epoch().count())) + {} + +CONSTCD14 inline weekday& weekday::operator++() NOEXCEPT {if (++wd_ == 7) wd_ = 0; return *this;} +CONSTCD14 inline weekday weekday::operator++(int) NOEXCEPT {auto tmp(*this); ++(*this); return tmp;} +CONSTCD14 inline weekday& weekday::operator--() NOEXCEPT {if (wd_-- == 0) wd_ = 6; return *this;} +CONSTCD14 inline weekday weekday::operator--(int) NOEXCEPT {auto tmp(*this); --(*this); return tmp;} + +CONSTCD14 +inline +weekday& +weekday::operator+=(const days& d) NOEXCEPT +{ + *this = *this + d; + return *this; +} + +CONSTCD14 +inline +weekday& +weekday::operator-=(const days& d) NOEXCEPT +{ + *this = *this - d; + return *this; +} + +CONSTCD11 +inline +weekday::operator unsigned() const NOEXCEPT +{ + return static_cast(wd_); +} + +CONSTCD11 inline bool weekday::ok() const NOEXCEPT {return wd_ <= 6;} + +CONSTCD11 +inline +bool +operator==(const weekday& x, const weekday& y) NOEXCEPT +{ + return static_cast(x) == static_cast(y); +} + +CONSTCD11 +inline +bool +operator!=(const weekday& x, const weekday& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD14 +inline +days +operator-(const weekday& x, const weekday& y) NOEXCEPT +{ + auto const diff = static_cast(x) - static_cast(y); + return days{diff <= 6 ? diff : diff + 7}; +} + +CONSTCD14 +inline +weekday +operator+(const weekday& x, const days& y) NOEXCEPT +{ + auto const wdu = static_cast(static_cast(x)) + y.count(); + auto const wk = (wdu >= 0 ? wdu : wdu-6) / 7; + return weekday{static_cast(wdu - wk * 7)}; +} + +CONSTCD14 +inline +weekday +operator+(const days& x, const weekday& y) NOEXCEPT +{ + return y + x; +} + +CONSTCD14 +inline +weekday +operator-(const weekday& x, const days& y) NOEXCEPT +{ + return x + -y; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday& wd) +{ + switch (static_cast(wd)) + { + case 0: + os << "al-Aḥad"; + break; + case 1: + os << "al-Ithnayn"; + break; + case 2: + os << "ath-Thulāthā’"; + break; + case 3: + os << "al-Arba‘ā’"; + break; + case 4: + os << "al-Khamīs"; + break; + case 5: + os << "al-Jum‘ah"; + break; + case 6: + os << "as-Sabt"; + break; + default: + os << static_cast(wd) << " is not a valid weekday"; + break; + } + return os; +} + +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) +inline namespace literals +{ + +CONSTCD11 +inline +islamic::day +operator "" _d(unsigned long long d) NOEXCEPT +{ + return islamic::day{static_cast(d)}; +} + +CONSTCD11 +inline +islamic::year +operator "" _y(unsigned long long y) NOEXCEPT +{ + return islamic::year(static_cast(y)); +} +#endif // !defined(_MSC_VER) || (_MSC_VER >= 1900) + +CONSTDATA islamic::last_spec last{}; + +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) +} // inline namespace literals +#endif + +// weekday_indexed + +CONSTCD11 +inline +weekday +weekday_indexed::weekday() const NOEXCEPT +{ + return islamic::weekday{static_cast(wd_)}; +} + +CONSTCD11 inline unsigned weekday_indexed::index() const NOEXCEPT {return index_;} + +CONSTCD11 +inline +bool +weekday_indexed::ok() const NOEXCEPT +{ + return weekday().ok() && 1 <= index_ && index_ <= 5; +} + +CONSTCD11 +inline +weekday_indexed::weekday_indexed(const islamic::weekday& wd, unsigned index) NOEXCEPT + : wd_(static_cast(static_cast(wd))) + , index_(static_cast(index)) + {} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday_indexed& wdi) +{ + return os << wdi.weekday() << '[' << wdi.index() << ']'; +} + +CONSTCD11 +inline +weekday_indexed +weekday::operator[](unsigned index) const NOEXCEPT +{ + return {*this, index}; +} + +CONSTCD11 +inline +bool +operator==(const weekday_indexed& x, const weekday_indexed& y) NOEXCEPT +{ + return x.weekday() == y.weekday() && x.index() == y.index(); +} + +CONSTCD11 +inline +bool +operator!=(const weekday_indexed& x, const weekday_indexed& y) NOEXCEPT +{ + return !(x == y); +} + +// weekday_last + +CONSTCD11 inline islamic::weekday weekday_last::weekday() const NOEXCEPT {return wd_;} +CONSTCD11 inline bool weekday_last::ok() const NOEXCEPT {return wd_.ok();} +CONSTCD11 inline weekday_last::weekday_last(const islamic::weekday& wd) NOEXCEPT : wd_(wd) {} + +CONSTCD11 +inline +bool +operator==(const weekday_last& x, const weekday_last& y) NOEXCEPT +{ + return x.weekday() == y.weekday(); +} + +CONSTCD11 +inline +bool +operator!=(const weekday_last& x, const weekday_last& y) NOEXCEPT +{ + return !(x == y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday_last& wdl) +{ + return os << wdl.weekday() << "[last]"; +} + +CONSTCD11 +inline +weekday_last +weekday::operator[](last_spec) const NOEXCEPT +{ + return weekday_last{*this}; +} + +// year_month + +CONSTCD11 +inline +year_month::year_month(const islamic::year& y, const islamic::month& m) NOEXCEPT + : y_(y) + , m_(m) + {} + +CONSTCD11 inline year year_month::year() const NOEXCEPT {return y_;} +CONSTCD11 inline month year_month::month() const NOEXCEPT {return m_;} +CONSTCD11 inline bool year_month::ok() const NOEXCEPT {return y_.ok() && m_.ok();} + +CONSTCD14 +inline +year_month& +year_month::operator+=(const months& dm) NOEXCEPT +{ + *this = *this + dm; + return *this; +} + +CONSTCD14 +inline +year_month& +year_month::operator-=(const months& dm) NOEXCEPT +{ + *this = *this - dm; + return *this; +} + +CONSTCD14 +inline +year_month& +year_month::operator+=(const years& dy) NOEXCEPT +{ + *this = *this + dy; + return *this; +} + +CONSTCD14 +inline +year_month& +year_month::operator-=(const years& dy) NOEXCEPT +{ + *this = *this - dy; + return *this; +} + +CONSTCD11 +inline +bool +operator==(const year_month& x, const year_month& y) NOEXCEPT +{ + return x.year() == y.year() && x.month() == y.month(); +} + +CONSTCD11 +inline +bool +operator!=(const year_month& x, const year_month& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year_month& x, const year_month& y) NOEXCEPT +{ + return x.year() < y.year() ? true + : (x.year() > y.year() ? false + : (x.month() < y.month())); +} + +CONSTCD11 +inline +bool +operator>(const year_month& x, const year_month& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year_month& x, const year_month& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year_month& x, const year_month& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD14 +inline +year_month +operator+(const year_month& ym, const months& dm) NOEXCEPT +{ + auto dmi = static_cast(static_cast(ym.month())) - 1 + dm.count(); + auto dy = (dmi >= 0 ? dmi : dmi-11) / 12; + dmi = dmi - dy * 12 + 1; + return (ym.year() + years(dy)) / month(static_cast(dmi)); +} + +CONSTCD14 +inline +year_month +operator+(const months& dm, const year_month& ym) NOEXCEPT +{ + return ym + dm; +} + +CONSTCD14 +inline +year_month +operator-(const year_month& ym, const months& dm) NOEXCEPT +{ + return ym + -dm; +} + +CONSTCD11 +inline +months +operator-(const year_month& x, const year_month& y) NOEXCEPT +{ + return (x.year() - y.year()) + + months(static_cast(x.month()) - static_cast(y.month())); +} + +CONSTCD11 +inline +year_month +operator+(const year_month& ym, const years& dy) NOEXCEPT +{ + return (ym.year() + dy) / ym.month(); +} + +CONSTCD11 +inline +year_month +operator+(const years& dy, const year_month& ym) NOEXCEPT +{ + return ym + dy; +} + +CONSTCD11 +inline +year_month +operator-(const year_month& ym, const years& dy) NOEXCEPT +{ + return ym + -dy; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month& ym) +{ + return os << ym.year() << '/' << ym.month(); +} + +// month_day + +CONSTCD11 +inline +month_day::month_day(const islamic::month& m, const islamic::day& d) NOEXCEPT + : m_(m) + , d_(d) + {} + +CONSTCD11 inline islamic::month month_day::month() const NOEXCEPT {return m_;} +CONSTCD11 inline islamic::day month_day::day() const NOEXCEPT {return d_;} + +CONSTCD14 +inline +bool +month_day::ok() const NOEXCEPT +{ + CONSTDATA islamic::day d[] = + {30_d, 29_d, 30_d, 29_d, 30_d, 29_d, 30_d, 29_d, 30_d, 29_d, 30_d, 30_d}; + return m_.ok() && 1_d <= d_ && d_ <= d[static_cast(m_)-1]; +} + +CONSTCD11 +inline +bool +operator==(const month_day& x, const month_day& y) NOEXCEPT +{ + return x.month() == y.month() && x.day() == y.day(); +} + +CONSTCD11 +inline +bool +operator!=(const month_day& x, const month_day& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const month_day& x, const month_day& y) NOEXCEPT +{ + return x.month() < y.month() ? true + : (x.month() > y.month() ? false + : (x.day() < y.day())); +} + +CONSTCD11 +inline +bool +operator>(const month_day& x, const month_day& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const month_day& x, const month_day& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const month_day& x, const month_day& y) NOEXCEPT +{ + return !(x < y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_day& md) +{ + return os << md.month() << '/' << md.day(); +} + +// month_day_last + +CONSTCD11 inline month month_day_last::month() const NOEXCEPT {return m_;} +CONSTCD11 inline bool month_day_last::ok() const NOEXCEPT {return m_.ok();} +CONSTCD11 inline month_day_last::month_day_last(const islamic::month& m) NOEXCEPT : m_(m) {} + +CONSTCD11 +inline +bool +operator==(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return x.month() == y.month(); +} + +CONSTCD11 +inline +bool +operator!=(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return x.month() < y.month(); +} + +CONSTCD11 +inline +bool +operator>(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return !(x < y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_day_last& mdl) +{ + return os << mdl.month() << "/last"; +} + +// month_weekday + +CONSTCD11 +inline +month_weekday::month_weekday(const islamic::month& m, + const islamic::weekday_indexed& wdi) NOEXCEPT + : m_(m) + , wdi_(wdi) + {} + +CONSTCD11 inline month month_weekday::month() const NOEXCEPT {return m_;} + +CONSTCD11 +inline +weekday_indexed +month_weekday::weekday_indexed() const NOEXCEPT +{ + return wdi_; +} + +CONSTCD11 +inline +bool +month_weekday::ok() const NOEXCEPT +{ + return m_.ok() && wdi_.ok(); +} + +CONSTCD11 +inline +bool +operator==(const month_weekday& x, const month_weekday& y) NOEXCEPT +{ + return x.month() == y.month() && x.weekday_indexed() == y.weekday_indexed(); +} + +CONSTCD11 +inline +bool +operator!=(const month_weekday& x, const month_weekday& y) NOEXCEPT +{ + return !(x == y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_weekday& mwd) +{ + return os << mwd.month() << '/' << mwd.weekday_indexed(); +} + +// month_weekday_last + +CONSTCD11 +inline +month_weekday_last::month_weekday_last(const islamic::month& m, + const islamic::weekday_last& wdl) NOEXCEPT + : m_(m) + , wdl_(wdl) + {} + +CONSTCD11 inline month month_weekday_last::month() const NOEXCEPT {return m_;} + +CONSTCD11 +inline +weekday_last +month_weekday_last::weekday_last() const NOEXCEPT +{ + return wdl_; +} + +CONSTCD11 +inline +bool +month_weekday_last::ok() const NOEXCEPT +{ + return m_.ok() && wdl_.ok(); +} + +CONSTCD11 +inline +bool +operator==(const month_weekday_last& x, const month_weekday_last& y) NOEXCEPT +{ + return x.month() == y.month() && x.weekday_last() == y.weekday_last(); +} + +CONSTCD11 +inline +bool +operator!=(const month_weekday_last& x, const month_weekday_last& y) NOEXCEPT +{ + return !(x == y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_weekday_last& mwdl) +{ + return os << mwdl.month() << '/' << mwdl.weekday_last(); +} + +// year_month_day_last + +CONSTCD11 +inline +year_month_day_last::year_month_day_last(const islamic::year& y, + const islamic::month_day_last& mdl) NOEXCEPT + : y_(y) + , mdl_(mdl) + {} + +CONSTCD14 +inline +year_month_day_last& +year_month_day_last::operator+=(const months& m) NOEXCEPT +{ + *this = *this + m; + return *this; +} + +CONSTCD14 +inline +year_month_day_last& +year_month_day_last::operator-=(const months& m) NOEXCEPT +{ + *this = *this - m; + return *this; +} + +CONSTCD14 +inline +year_month_day_last& +year_month_day_last::operator+=(const years& y) NOEXCEPT +{ + *this = *this + y; + return *this; +} + +CONSTCD14 +inline +year_month_day_last& +year_month_day_last::operator-=(const years& y) NOEXCEPT +{ + *this = *this - y; + return *this; +} + +CONSTCD11 inline year year_month_day_last::year() const NOEXCEPT {return y_;} +CONSTCD11 inline month year_month_day_last::month() const NOEXCEPT {return mdl_.month();} + +CONSTCD11 +inline +month_day_last +year_month_day_last::month_day_last() const NOEXCEPT +{ + return mdl_; +} + +CONSTCD14 +inline +day +year_month_day_last::day() const NOEXCEPT +{ + CONSTDATA islamic::day d[] = + {30_d, 29_d, 30_d, 29_d, 30_d, 29_d, 30_d, 29_d, 30_d, 29_d, 30_d, 29_d}; + return month() != islamic::month(12) || !y_.is_leap() ? + d[static_cast(month())-1] : 30_d; +} + +CONSTCD14 +inline +year_month_day_last::operator sys_days() const NOEXCEPT +{ + return sys_days(year()/month()/day()); +} + +CONSTCD14 +inline +year_month_day_last::operator local_days() const NOEXCEPT +{ + return local_days(year()/month()/day()); +} + +CONSTCD11 +inline +bool +year_month_day_last::ok() const NOEXCEPT +{ + return y_.ok() && mdl_.ok(); +} + +CONSTCD11 +inline +bool +operator==(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return x.year() == y.year() && x.month_day_last() == y.month_day_last(); +} + +CONSTCD11 +inline +bool +operator!=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return x.year() < y.year() ? true + : (x.year() > y.year() ? false + : (x.month_day_last() < y.month_day_last())); +} + +CONSTCD11 +inline +bool +operator>(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return !(x < y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_day_last& ymdl) +{ + return os << ymdl.year() << '/' << ymdl.month_day_last(); +} + +CONSTCD14 +inline +year_month_day_last +operator+(const year_month_day_last& ymdl, const months& dm) NOEXCEPT +{ + return (ymdl.year() / ymdl.month() + dm) / last; +} + +CONSTCD14 +inline +year_month_day_last +operator+(const months& dm, const year_month_day_last& ymdl) NOEXCEPT +{ + return ymdl + dm; +} + +CONSTCD14 +inline +year_month_day_last +operator-(const year_month_day_last& ymdl, const months& dm) NOEXCEPT +{ + return ymdl + (-dm); +} + +CONSTCD11 +inline +year_month_day_last +operator+(const year_month_day_last& ymdl, const years& dy) NOEXCEPT +{ + return {ymdl.year()+dy, ymdl.month_day_last()}; +} + +CONSTCD11 +inline +year_month_day_last +operator+(const years& dy, const year_month_day_last& ymdl) NOEXCEPT +{ + return ymdl + dy; +} + +CONSTCD11 +inline +year_month_day_last +operator-(const year_month_day_last& ymdl, const years& dy) NOEXCEPT +{ + return ymdl + (-dy); +} + +// year_month_day + +CONSTCD11 +inline +year_month_day::year_month_day(const islamic::year& y, const islamic::month& m, + const islamic::day& d) NOEXCEPT + : y_(y) + , m_(m) + , d_(d) + {} + +CONSTCD14 +inline +year_month_day::year_month_day(const year_month_day_last& ymdl) NOEXCEPT + : y_(ymdl.year()) + , m_(ymdl.month()) + , d_(ymdl.day()) + {} + +CONSTCD14 +inline +year_month_day::year_month_day(sys_days dp) NOEXCEPT + : year_month_day(from_days(dp.time_since_epoch())) + {} + +CONSTCD14 +inline +year_month_day::year_month_day(local_days dp) NOEXCEPT + : year_month_day(from_days(dp.time_since_epoch())) + {} + +CONSTCD11 inline year year_month_day::year() const NOEXCEPT {return y_;} +CONSTCD11 inline month year_month_day::month() const NOEXCEPT {return m_;} +CONSTCD11 inline day year_month_day::day() const NOEXCEPT {return d_;} + +CONSTCD14 +inline +year_month_day& +year_month_day::operator+=(const months& m) NOEXCEPT +{ + *this = *this + m; + return *this; +} + +CONSTCD14 +inline +year_month_day& +year_month_day::operator-=(const months& m) NOEXCEPT +{ + *this = *this - m; + return *this; +} + +CONSTCD14 +inline +year_month_day& +year_month_day::operator+=(const years& y) NOEXCEPT +{ + *this = *this + y; + return *this; +} + +CONSTCD14 +inline +year_month_day& +year_month_day::operator-=(const years& y) NOEXCEPT +{ + *this = *this - y; + return *this; +} + +CONSTCD14 +inline +days +year_month_day::to_days() const NOEXCEPT +{ + static_assert(std::numeric_limits::digits >= 18, + "This algorithm has not been ported to a 16 bit unsigned integer"); + static_assert(std::numeric_limits::digits >= 20, + "This algorithm has not been ported to a 16 bit signed integer"); + auto const y = static_cast(y_) - 1; + auto const m = static_cast(m_); + auto const d = static_cast(d_); + auto const era = (y >= 0 ? y : y-29) / 30; + auto const yoe = static_cast(y - era * 30); // [0, 29] + auto const doy = 29*(m-1) + m/2 + d-1; // [0, 354] + auto const doe = yoe * 354 + (11*(yoe+1)+3)/30 + doy; // [0, 10630] + return days{era * 10631 + static_cast(doe) - 492148}; +} + +CONSTCD14 +inline +year_month_day::operator sys_days() const NOEXCEPT +{ + return sys_days{to_days()}; +} + +CONSTCD14 +inline +year_month_day::operator local_days() const NOEXCEPT +{ + return local_days{to_days()}; +} + +CONSTCD14 +inline +bool +year_month_day::ok() const NOEXCEPT +{ + if (!(y_.ok() && m_.ok())) + return false; + return 1_d <= d_ && d_ <= (y_/m_/last).day(); +} + +CONSTCD11 +inline +bool +operator==(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return x.year() == y.year() && x.month() == y.month() && x.day() == y.day(); +} + +CONSTCD11 +inline +bool +operator!=(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return x.year() < y.year() ? true + : (x.year() > y.year() ? false + : (x.month() < y.month() ? true + : (x.month() > y.month() ? false + : (x.day() < y.day())))); +} + +CONSTCD11 +inline +bool +operator>(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return !(x < y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_day& ymd) +{ + date::detail::save_ostream _(os); + os.fill('0'); + os.flags(std::ios::dec | std::ios::right); + os << ymd.year() << '-'; + os.width(2); + os << static_cast(ymd.month()) << '-'; + os << ymd.day(); + return os; +} + +CONSTCD14 +inline +year_month_day +year_month_day::from_days(days dp) NOEXCEPT +{ + static_assert(std::numeric_limits::digits >= 18, + "This algorithm has not been ported to a 16 bit unsigned integer"); + static_assert(std::numeric_limits::digits >= 20, + "This algorithm has not been ported to a 16 bit signed integer"); + auto const z = dp.count() + 492148; + auto const era = (z >= 0 ? z : z - 10630) / 10631; + auto const doe = static_cast(z - era * 10631); // [0, 10630] + auto const yoe = (30*doe + 10646)/10631 - 1; // [0, 29] + auto const y = static_cast(yoe) + era * 30 + 1; + auto const doy = doe - (yoe * 354 + (11*(yoe+1)+3)/30); // [0, 354] + auto const m = (11*doy + 330) / 325; // [1, 12] + auto const d = doy - (29*(m-1) + m/2) + 1; // [1, 30] + return year_month_day{islamic::year{y}, islamic::month(m), islamic::day(d)}; +} + +CONSTCD14 +inline +year_month_day +operator+(const year_month_day& ymd, const months& dm) NOEXCEPT +{ + return (ymd.year() / ymd.month() + dm) / ymd.day(); +} + +CONSTCD14 +inline +year_month_day +operator+(const months& dm, const year_month_day& ymd) NOEXCEPT +{ + return ymd + dm; +} + +CONSTCD14 +inline +year_month_day +operator-(const year_month_day& ymd, const months& dm) NOEXCEPT +{ + return ymd + (-dm); +} + +CONSTCD11 +inline +year_month_day +operator+(const year_month_day& ymd, const years& dy) NOEXCEPT +{ + return (ymd.year() + dy) / ymd.month() / ymd.day(); +} + +CONSTCD11 +inline +year_month_day +operator+(const years& dy, const year_month_day& ymd) NOEXCEPT +{ + return ymd + dy; +} + +CONSTCD11 +inline +year_month_day +operator-(const year_month_day& ymd, const years& dy) NOEXCEPT +{ + return ymd + (-dy); +} + +// year_month_weekday + +CONSTCD11 +inline +year_month_weekday::year_month_weekday(const islamic::year& y, const islamic::month& m, + const islamic::weekday_indexed& wdi) + NOEXCEPT + : y_(y) + , m_(m) + , wdi_(wdi) + {} + +CONSTCD14 +inline +year_month_weekday::year_month_weekday(const sys_days& dp) NOEXCEPT + : year_month_weekday(from_days(dp.time_since_epoch())) + {} + +CONSTCD14 +inline +year_month_weekday::year_month_weekday(const local_days& dp) NOEXCEPT + : year_month_weekday(from_days(dp.time_since_epoch())) + {} + +CONSTCD14 +inline +year_month_weekday& +year_month_weekday::operator+=(const months& m) NOEXCEPT +{ + *this = *this + m; + return *this; +} + +CONSTCD14 +inline +year_month_weekday& +year_month_weekday::operator-=(const months& m) NOEXCEPT +{ + *this = *this - m; + return *this; +} + +CONSTCD14 +inline +year_month_weekday& +year_month_weekday::operator+=(const years& y) NOEXCEPT +{ + *this = *this + y; + return *this; +} + +CONSTCD14 +inline +year_month_weekday& +year_month_weekday::operator-=(const years& y) NOEXCEPT +{ + *this = *this - y; + return *this; +} + +CONSTCD11 inline year year_month_weekday::year() const NOEXCEPT {return y_;} +CONSTCD11 inline month year_month_weekday::month() const NOEXCEPT {return m_;} + +CONSTCD11 +inline +weekday +year_month_weekday::weekday() const NOEXCEPT +{ + return wdi_.weekday(); +} + +CONSTCD11 +inline +unsigned +year_month_weekday::index() const NOEXCEPT +{ + return wdi_.index(); +} + +CONSTCD11 +inline +weekday_indexed +year_month_weekday::weekday_indexed() const NOEXCEPT +{ + return wdi_; +} + +CONSTCD14 +inline +year_month_weekday::operator sys_days() const NOEXCEPT +{ + return sys_days{to_days()}; +} + +CONSTCD14 +inline +year_month_weekday::operator local_days() const NOEXCEPT +{ + return local_days{to_days()}; +} + +CONSTCD14 +inline +bool +year_month_weekday::ok() const NOEXCEPT +{ + if (!y_.ok() || !m_.ok() || !wdi_.weekday().ok() || wdi_.index() < 1) + return false; + if (wdi_.index() <= 4) + return true; + auto d2 = wdi_.weekday() - islamic::weekday(y_/m_/1) + days((wdi_.index()-1)*7 + 1); + return static_cast(d2.count()) <= static_cast((y_/m_/last).day()); +} + +CONSTCD14 +inline +year_month_weekday +year_month_weekday::from_days(days d) NOEXCEPT +{ + sys_days dp{d}; + auto const wd = islamic::weekday(dp); + auto const ymd = year_month_day(dp); + return {ymd.year(), ymd.month(), wd[(static_cast(ymd.day())-1)/7+1]}; +} + +CONSTCD14 +inline +days +year_month_weekday::to_days() const NOEXCEPT +{ + auto d = sys_days(y_/m_/1); + return (d + (wdi_.weekday() - islamic::weekday(d) + days{(wdi_.index()-1)*7}) + ).time_since_epoch(); +} + +CONSTCD11 +inline +bool +operator==(const year_month_weekday& x, const year_month_weekday& y) NOEXCEPT +{ + return x.year() == y.year() && x.month() == y.month() && + x.weekday_indexed() == y.weekday_indexed(); +} + +CONSTCD11 +inline +bool +operator!=(const year_month_weekday& x, const year_month_weekday& y) NOEXCEPT +{ + return !(x == y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_weekday& ymwdi) +{ + return os << ymwdi.year() << '/' << ymwdi.month() + << '/' << ymwdi.weekday_indexed(); +} + +CONSTCD14 +inline +year_month_weekday +operator+(const year_month_weekday& ymwd, const months& dm) NOEXCEPT +{ + return (ymwd.year() / ymwd.month() + dm) / ymwd.weekday_indexed(); +} + +CONSTCD14 +inline +year_month_weekday +operator+(const months& dm, const year_month_weekday& ymwd) NOEXCEPT +{ + return ymwd + dm; +} + +CONSTCD14 +inline +year_month_weekday +operator-(const year_month_weekday& ymwd, const months& dm) NOEXCEPT +{ + return ymwd + (-dm); +} + +CONSTCD11 +inline +year_month_weekday +operator+(const year_month_weekday& ymwd, const years& dy) NOEXCEPT +{ + return {ymwd.year()+dy, ymwd.month(), ymwd.weekday_indexed()}; +} + +CONSTCD11 +inline +year_month_weekday +operator+(const years& dy, const year_month_weekday& ymwd) NOEXCEPT +{ + return ymwd + dy; +} + +CONSTCD11 +inline +year_month_weekday +operator-(const year_month_weekday& ymwd, const years& dy) NOEXCEPT +{ + return ymwd + (-dy); +} + +// year_month_weekday_last + +CONSTCD11 +inline +year_month_weekday_last::year_month_weekday_last(const islamic::year& y, + const islamic::month& m, + const islamic::weekday_last& wdl) NOEXCEPT + : y_(y) + , m_(m) + , wdl_(wdl) + {} + +CONSTCD14 +inline +year_month_weekday_last& +year_month_weekday_last::operator+=(const months& m) NOEXCEPT +{ + *this = *this + m; + return *this; +} + +CONSTCD14 +inline +year_month_weekday_last& +year_month_weekday_last::operator-=(const months& m) NOEXCEPT +{ + *this = *this - m; + return *this; +} + +CONSTCD14 +inline +year_month_weekday_last& +year_month_weekday_last::operator+=(const years& y) NOEXCEPT +{ + *this = *this + y; + return *this; +} + +CONSTCD14 +inline +year_month_weekday_last& +year_month_weekday_last::operator-=(const years& y) NOEXCEPT +{ + *this = *this - y; + return *this; +} + +CONSTCD11 inline year year_month_weekday_last::year() const NOEXCEPT {return y_;} +CONSTCD11 inline month year_month_weekday_last::month() const NOEXCEPT {return m_;} + +CONSTCD11 +inline +weekday +year_month_weekday_last::weekday() const NOEXCEPT +{ + return wdl_.weekday(); +} + +CONSTCD11 +inline +weekday_last +year_month_weekday_last::weekday_last() const NOEXCEPT +{ + return wdl_; +} + +CONSTCD14 +inline +year_month_weekday_last::operator sys_days() const NOEXCEPT +{ + return sys_days{to_days()}; +} + +CONSTCD14 +inline +year_month_weekday_last::operator local_days() const NOEXCEPT +{ + return local_days{to_days()}; +} + +CONSTCD11 +inline +bool +year_month_weekday_last::ok() const NOEXCEPT +{ + return y_.ok() && m_.ok() && wdl_.ok(); +} + +CONSTCD14 +inline +days +year_month_weekday_last::to_days() const NOEXCEPT +{ + auto const d = sys_days(y_/m_/last); + return (d - (islamic::weekday{d} - wdl_.weekday())).time_since_epoch(); +} + +CONSTCD11 +inline +bool +operator==(const year_month_weekday_last& x, const year_month_weekday_last& y) NOEXCEPT +{ + return x.year() == y.year() && x.month() == y.month() && + x.weekday_last() == y.weekday_last(); +} + +CONSTCD11 +inline +bool +operator!=(const year_month_weekday_last& x, const year_month_weekday_last& y) NOEXCEPT +{ + return !(x == y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_weekday_last& ymwdl) +{ + return os << ymwdl.year() << '/' << ymwdl.month() << '/' << ymwdl.weekday_last(); +} + +CONSTCD14 +inline +year_month_weekday_last +operator+(const year_month_weekday_last& ymwdl, const months& dm) NOEXCEPT +{ + return (ymwdl.year() / ymwdl.month() + dm) / ymwdl.weekday_last(); +} + +CONSTCD14 +inline +year_month_weekday_last +operator+(const months& dm, const year_month_weekday_last& ymwdl) NOEXCEPT +{ + return ymwdl + dm; +} + +CONSTCD14 +inline +year_month_weekday_last +operator-(const year_month_weekday_last& ymwdl, const months& dm) NOEXCEPT +{ + return ymwdl + (-dm); +} + +CONSTCD11 +inline +year_month_weekday_last +operator+(const year_month_weekday_last& ymwdl, const years& dy) NOEXCEPT +{ + return {ymwdl.year()+dy, ymwdl.month(), ymwdl.weekday_last()}; +} + +CONSTCD11 +inline +year_month_weekday_last +operator+(const years& dy, const year_month_weekday_last& ymwdl) NOEXCEPT +{ + return ymwdl + dy; +} + +CONSTCD11 +inline +year_month_weekday_last +operator-(const year_month_weekday_last& ymwdl, const years& dy) NOEXCEPT +{ + return ymwdl + (-dy); +} + +// year_month from operator/() + +CONSTCD11 +inline +year_month +operator/(const year& y, const month& m) NOEXCEPT +{ + return {y, m}; +} + +CONSTCD11 +inline +year_month +operator/(const year& y, int m) NOEXCEPT +{ + return y / month(static_cast(m)); +} + +// month_day from operator/() + +CONSTCD11 +inline +month_day +operator/(const month& m, const day& d) NOEXCEPT +{ + return {m, d}; +} + +CONSTCD11 +inline +month_day +operator/(const day& d, const month& m) NOEXCEPT +{ + return m / d; +} + +CONSTCD11 +inline +month_day +operator/(const month& m, int d) NOEXCEPT +{ + return m / day(static_cast(d)); +} + +CONSTCD11 +inline +month_day +operator/(int m, const day& d) NOEXCEPT +{ + return month(static_cast(m)) / d; +} + +CONSTCD11 inline month_day operator/(const day& d, int m) NOEXCEPT {return m / d;} + +// month_day_last from operator/() + +CONSTCD11 +inline +month_day_last +operator/(const month& m, last_spec) NOEXCEPT +{ + return month_day_last{m}; +} + +CONSTCD11 +inline +month_day_last +operator/(last_spec, const month& m) NOEXCEPT +{ + return m/last; +} + +CONSTCD11 +inline +month_day_last +operator/(int m, last_spec) NOEXCEPT +{ + return month(static_cast(m))/last; +} + +CONSTCD11 +inline +month_day_last +operator/(last_spec, int m) NOEXCEPT +{ + return m/last; +} + +// month_weekday from operator/() + +CONSTCD11 +inline +month_weekday +operator/(const month& m, const weekday_indexed& wdi) NOEXCEPT +{ + return {m, wdi}; +} + +CONSTCD11 +inline +month_weekday +operator/(const weekday_indexed& wdi, const month& m) NOEXCEPT +{ + return m / wdi; +} + +CONSTCD11 +inline +month_weekday +operator/(int m, const weekday_indexed& wdi) NOEXCEPT +{ + return month(static_cast(m)) / wdi; +} + +CONSTCD11 +inline +month_weekday +operator/(const weekday_indexed& wdi, int m) NOEXCEPT +{ + return m / wdi; +} + +// month_weekday_last from operator/() + +CONSTCD11 +inline +month_weekday_last +operator/(const month& m, const weekday_last& wdl) NOEXCEPT +{ + return {m, wdl}; +} + +CONSTCD11 +inline +month_weekday_last +operator/(const weekday_last& wdl, const month& m) NOEXCEPT +{ + return m / wdl; +} + +CONSTCD11 +inline +month_weekday_last +operator/(int m, const weekday_last& wdl) NOEXCEPT +{ + return month(static_cast(m)) / wdl; +} + +CONSTCD11 +inline +month_weekday_last +operator/(const weekday_last& wdl, int m) NOEXCEPT +{ + return m / wdl; +} + +// year_month_day from operator/() + +CONSTCD11 +inline +year_month_day +operator/(const year_month& ym, const day& d) NOEXCEPT +{ + return {ym.year(), ym.month(), d}; +} + +CONSTCD11 +inline +year_month_day +operator/(const year_month& ym, int d) NOEXCEPT +{ + return ym / day(static_cast(d)); +} + +CONSTCD11 +inline +year_month_day +operator/(const year& y, const month_day& md) NOEXCEPT +{ + return y / md.month() / md.day(); +} + +CONSTCD11 +inline +year_month_day +operator/(int y, const month_day& md) NOEXCEPT +{ + return year(y) / md; +} + +CONSTCD11 +inline +year_month_day +operator/(const month_day& md, const year& y) NOEXCEPT +{ + return y / md; +} + +CONSTCD11 +inline +year_month_day +operator/(const month_day& md, int y) NOEXCEPT +{ + return year(y) / md; +} + +// year_month_day_last from operator/() + +CONSTCD11 +inline +year_month_day_last +operator/(const year_month& ym, last_spec) NOEXCEPT +{ + return {ym.year(), month_day_last{ym.month()}}; +} + +CONSTCD11 +inline +year_month_day_last +operator/(const year& y, const month_day_last& mdl) NOEXCEPT +{ + return {y, mdl}; +} + +CONSTCD11 +inline +year_month_day_last +operator/(int y, const month_day_last& mdl) NOEXCEPT +{ + return year(y) / mdl; +} + +CONSTCD11 +inline +year_month_day_last +operator/(const month_day_last& mdl, const year& y) NOEXCEPT +{ + return y / mdl; +} + +CONSTCD11 +inline +year_month_day_last +operator/(const month_day_last& mdl, int y) NOEXCEPT +{ + return year(y) / mdl; +} + +// year_month_weekday from operator/() + +CONSTCD11 +inline +year_month_weekday +operator/(const year_month& ym, const weekday_indexed& wdi) NOEXCEPT +{ + return {ym.year(), ym.month(), wdi}; +} + +CONSTCD11 +inline +year_month_weekday +operator/(const year& y, const month_weekday& mwd) NOEXCEPT +{ + return {y, mwd.month(), mwd.weekday_indexed()}; +} + +CONSTCD11 +inline +year_month_weekday +operator/(int y, const month_weekday& mwd) NOEXCEPT +{ + return year(y) / mwd; +} + +CONSTCD11 +inline +year_month_weekday +operator/(const month_weekday& mwd, const year& y) NOEXCEPT +{ + return y / mwd; +} + +CONSTCD11 +inline +year_month_weekday +operator/(const month_weekday& mwd, int y) NOEXCEPT +{ + return year(y) / mwd; +} + +// year_month_weekday_last from operator/() + +CONSTCD11 +inline +year_month_weekday_last +operator/(const year_month& ym, const weekday_last& wdl) NOEXCEPT +{ + return {ym.year(), ym.month(), wdl}; +} + +CONSTCD11 +inline +year_month_weekday_last +operator/(const year& y, const month_weekday_last& mwdl) NOEXCEPT +{ + return {y, mwdl.month(), mwdl.weekday_last()}; +} + +CONSTCD11 +inline +year_month_weekday_last +operator/(int y, const month_weekday_last& mwdl) NOEXCEPT +{ + return year(y) / mwdl; +} + +CONSTCD11 +inline +year_month_weekday_last +operator/(const month_weekday_last& mwdl, const year& y) NOEXCEPT +{ + return y / mwdl; +} + +CONSTCD11 +inline +year_month_weekday_last +operator/(const month_weekday_last& mwdl, int y) NOEXCEPT +{ + return year(y) / mwdl; +} + +} // namespace islamic + +#endif // ISLAMIC_H diff --git a/src/date/iso_week.h b/src/date/iso_week.h new file mode 100644 index 0000000..90dfcc1 --- /dev/null +++ b/src/date/iso_week.h @@ -0,0 +1,1761 @@ +#ifndef ISO_WEEK_H +#define ISO_WEEK_H + +// The MIT License (MIT) +// +// Copyright (c) 2015, 2016, 2017 Howard Hinnant +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +#include "date.h" + +#include + +namespace iso_week +{ + +// y/wn/wd +// wn/wd/y +// wd/wn/y + +using days = date::days; +using weeks = date::weeks; +using years = date::years; + +// time_point + +using sys_days = date::sys_days; +using local_days = date::local_days; + +// types + +struct last_week +{ + explicit last_week() = default; +}; + +class weekday; +class weeknum; +class year; + +class year_weeknum; +class year_lastweek; +class weeknum_weekday; +class lastweek_weekday; + +class year_weeknum_weekday; +class year_lastweek_weekday; + +// date composition operators + +CONSTCD11 year_weeknum operator/(const year& y, const weeknum& wn) NOEXCEPT; +CONSTCD11 year_weeknum operator/(const year& y, int wn) NOEXCEPT; + +CONSTCD11 year_lastweek operator/(const year& y, last_week wn) NOEXCEPT; + +CONSTCD11 weeknum_weekday operator/(const weeknum& wn, const weekday& wd) NOEXCEPT; +CONSTCD11 weeknum_weekday operator/(const weeknum& wn, int wd) NOEXCEPT; +CONSTCD11 weeknum_weekday operator/(const weekday& wd, const weeknum& wn) NOEXCEPT; +CONSTCD11 weeknum_weekday operator/(const weekday& wd, int wn) NOEXCEPT; + +CONSTCD11 lastweek_weekday operator/(const last_week& wn, const weekday& wd) NOEXCEPT; +CONSTCD11 lastweek_weekday operator/(const last_week& wn, int wd) NOEXCEPT; +CONSTCD11 lastweek_weekday operator/(const weekday& wd, const last_week& wn) NOEXCEPT; + +CONSTCD11 year_weeknum_weekday operator/(const year_weeknum& ywn, const weekday& wd) NOEXCEPT; +CONSTCD11 year_weeknum_weekday operator/(const year_weeknum& ywn, int wd) NOEXCEPT; +CONSTCD11 year_weeknum_weekday operator/(const weeknum_weekday& wnwd, const year& y) NOEXCEPT; +CONSTCD11 year_weeknum_weekday operator/(const weeknum_weekday& wnwd, int y) NOEXCEPT; + +CONSTCD11 year_lastweek_weekday operator/(const year_lastweek& ylw, const weekday& wd) NOEXCEPT; +CONSTCD11 year_lastweek_weekday operator/(const year_lastweek& ylw, int wd) NOEXCEPT; + +CONSTCD11 year_lastweek_weekday operator/(const lastweek_weekday& lwwd, const year& y) NOEXCEPT; +CONSTCD11 year_lastweek_weekday operator/(const lastweek_weekday& lwwd, int y) NOEXCEPT; + +// weekday + +class weekday +{ + unsigned char wd_; +public: + explicit CONSTCD11 weekday(unsigned wd) NOEXCEPT; + CONSTCD11 weekday(date::weekday wd) NOEXCEPT; + explicit weekday(int) = delete; + CONSTCD11 weekday(const sys_days& dp) NOEXCEPT; + CONSTCD11 explicit weekday(const local_days& dp) NOEXCEPT; + + weekday& operator++() NOEXCEPT; + weekday operator++(int) NOEXCEPT; + weekday& operator--() NOEXCEPT; + weekday operator--(int) NOEXCEPT; + + weekday& operator+=(const days& d) NOEXCEPT; + weekday& operator-=(const days& d) NOEXCEPT; + + CONSTCD11 explicit operator unsigned() const NOEXCEPT; + CONSTCD11 operator date::weekday() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; + +private: + static CONSTCD11 unsigned char weekday_from_days(int z) NOEXCEPT; + static CONSTCD11 unsigned char to_iso_encoding(unsigned char) NOEXCEPT; + static CONSTCD11 unsigned from_iso_encoding(unsigned) NOEXCEPT; +}; + +CONSTCD11 bool operator==(const weekday& x, const weekday& y) NOEXCEPT; +CONSTCD11 bool operator!=(const weekday& x, const weekday& y) NOEXCEPT; + +CONSTCD14 weekday operator+(const weekday& x, const days& y) NOEXCEPT; +CONSTCD14 weekday operator+(const days& x, const weekday& y) NOEXCEPT; +CONSTCD14 weekday operator-(const weekday& x, const days& y) NOEXCEPT; +CONSTCD14 days operator-(const weekday& x, const weekday& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday& wd); + +// year + +class year +{ + short y_; + +public: + explicit CONSTCD11 year(int y) NOEXCEPT; + + year& operator++() NOEXCEPT; + year operator++(int) NOEXCEPT; + year& operator--() NOEXCEPT; + year operator--(int) NOEXCEPT; + + year& operator+=(const years& y) NOEXCEPT; + year& operator-=(const years& y) NOEXCEPT; + + CONSTCD14 bool is_leap() const NOEXCEPT; + + CONSTCD11 explicit operator int() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; + + static CONSTCD11 year min() NOEXCEPT; + static CONSTCD11 year max() NOEXCEPT; +}; + +CONSTCD11 bool operator==(const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator!=(const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator< (const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator> (const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator<=(const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator>=(const year& x, const year& y) NOEXCEPT; + +CONSTCD11 year operator+(const year& x, const years& y) NOEXCEPT; +CONSTCD11 year operator+(const years& x, const year& y) NOEXCEPT; +CONSTCD11 year operator-(const year& x, const years& y) NOEXCEPT; +CONSTCD11 years operator-(const year& x, const year& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year& y); + +// weeknum + +class weeknum +{ + unsigned char wn_; + +public: + explicit CONSTCD11 weeknum(unsigned wn) NOEXCEPT; + + weeknum& operator++() NOEXCEPT; + weeknum operator++(int) NOEXCEPT; + weeknum& operator--() NOEXCEPT; + weeknum operator--(int) NOEXCEPT; + + weeknum& operator+=(const weeks& y) NOEXCEPT; + weeknum& operator-=(const weeks& y) NOEXCEPT; + + CONSTCD11 explicit operator unsigned() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const weeknum& x, const weeknum& y) NOEXCEPT; +CONSTCD11 bool operator!=(const weeknum& x, const weeknum& y) NOEXCEPT; +CONSTCD11 bool operator< (const weeknum& x, const weeknum& y) NOEXCEPT; +CONSTCD11 bool operator> (const weeknum& x, const weeknum& y) NOEXCEPT; +CONSTCD11 bool operator<=(const weeknum& x, const weeknum& y) NOEXCEPT; +CONSTCD11 bool operator>=(const weeknum& x, const weeknum& y) NOEXCEPT; + +CONSTCD11 weeknum operator+(const weeknum& x, const weeks& y) NOEXCEPT; +CONSTCD11 weeknum operator+(const weeks& x, const weeknum& y) NOEXCEPT; +CONSTCD11 weeknum operator-(const weeknum& x, const weeks& y) NOEXCEPT; +CONSTCD11 weeks operator-(const weeknum& x, const weeknum& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const weeknum& wn); + +// year_weeknum + +class year_weeknum +{ + iso_week::year y_; + iso_week::weeknum wn_; + +public: + CONSTCD11 year_weeknum(const iso_week::year& y, const iso_week::weeknum& wn) NOEXCEPT; + + CONSTCD11 iso_week::year year() const NOEXCEPT; + CONSTCD11 iso_week::weeknum weeknum() const NOEXCEPT; + + year_weeknum& operator+=(const years& dy) NOEXCEPT; + year_weeknum& operator-=(const years& dy) NOEXCEPT; + + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const year_weeknum& x, const year_weeknum& y) NOEXCEPT; +CONSTCD11 bool operator!=(const year_weeknum& x, const year_weeknum& y) NOEXCEPT; +CONSTCD11 bool operator< (const year_weeknum& x, const year_weeknum& y) NOEXCEPT; +CONSTCD11 bool operator> (const year_weeknum& x, const year_weeknum& y) NOEXCEPT; +CONSTCD11 bool operator<=(const year_weeknum& x, const year_weeknum& y) NOEXCEPT; +CONSTCD11 bool operator>=(const year_weeknum& x, const year_weeknum& y) NOEXCEPT; + +CONSTCD11 year_weeknum operator+(const year_weeknum& ym, const years& dy) NOEXCEPT; +CONSTCD11 year_weeknum operator+(const years& dy, const year_weeknum& ym) NOEXCEPT; +CONSTCD11 year_weeknum operator-(const year_weeknum& ym, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_weeknum& ym); + +// year_lastweek + +class year_lastweek +{ + iso_week::year y_; + +public: + CONSTCD11 explicit year_lastweek(const iso_week::year& y) NOEXCEPT; + + CONSTCD11 iso_week::year year() const NOEXCEPT; + CONSTCD14 iso_week::weeknum weeknum() const NOEXCEPT; + + year_lastweek& operator+=(const years& dy) NOEXCEPT; + year_lastweek& operator-=(const years& dy) NOEXCEPT; + + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const year_lastweek& x, const year_lastweek& y) NOEXCEPT; +CONSTCD11 bool operator!=(const year_lastweek& x, const year_lastweek& y) NOEXCEPT; +CONSTCD11 bool operator< (const year_lastweek& x, const year_lastweek& y) NOEXCEPT; +CONSTCD11 bool operator> (const year_lastweek& x, const year_lastweek& y) NOEXCEPT; +CONSTCD11 bool operator<=(const year_lastweek& x, const year_lastweek& y) NOEXCEPT; +CONSTCD11 bool operator>=(const year_lastweek& x, const year_lastweek& y) NOEXCEPT; + +CONSTCD11 year_lastweek operator+(const year_lastweek& ym, const years& dy) NOEXCEPT; +CONSTCD11 year_lastweek operator+(const years& dy, const year_lastweek& ym) NOEXCEPT; +CONSTCD11 year_lastweek operator-(const year_lastweek& ym, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_lastweek& ym); + +// weeknum_weekday + +class weeknum_weekday +{ + iso_week::weeknum wn_; + iso_week::weekday wd_; + +public: + CONSTCD11 weeknum_weekday(const iso_week::weeknum& wn, + const iso_week::weekday& wd) NOEXCEPT; + + CONSTCD11 iso_week::weeknum weeknum() const NOEXCEPT; + CONSTCD11 iso_week::weekday weekday() const NOEXCEPT; + + CONSTCD14 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const weeknum_weekday& x, const weeknum_weekday& y) NOEXCEPT; +CONSTCD11 bool operator!=(const weeknum_weekday& x, const weeknum_weekday& y) NOEXCEPT; +CONSTCD11 bool operator< (const weeknum_weekday& x, const weeknum_weekday& y) NOEXCEPT; +CONSTCD11 bool operator> (const weeknum_weekday& x, const weeknum_weekday& y) NOEXCEPT; +CONSTCD11 bool operator<=(const weeknum_weekday& x, const weeknum_weekday& y) NOEXCEPT; +CONSTCD11 bool operator>=(const weeknum_weekday& x, const weeknum_weekday& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const weeknum_weekday& md); + +// lastweek_weekday + +class lastweek_weekday +{ + iso_week::weekday wd_; + +public: + CONSTCD11 explicit lastweek_weekday(const iso_week::weekday& wd) NOEXCEPT; + + CONSTCD11 iso_week::weekday weekday() const NOEXCEPT; + + CONSTCD14 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const lastweek_weekday& x, const lastweek_weekday& y) NOEXCEPT; +CONSTCD11 bool operator!=(const lastweek_weekday& x, const lastweek_weekday& y) NOEXCEPT; +CONSTCD11 bool operator< (const lastweek_weekday& x, const lastweek_weekday& y) NOEXCEPT; +CONSTCD11 bool operator> (const lastweek_weekday& x, const lastweek_weekday& y) NOEXCEPT; +CONSTCD11 bool operator<=(const lastweek_weekday& x, const lastweek_weekday& y) NOEXCEPT; +CONSTCD11 bool operator>=(const lastweek_weekday& x, const lastweek_weekday& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const lastweek_weekday& md); + +// year_lastweek_weekday + +class year_lastweek_weekday +{ + iso_week::year y_; + iso_week::weekday wd_; + +public: + CONSTCD11 year_lastweek_weekday(const iso_week::year& y, + const iso_week::weekday& wd) NOEXCEPT; + + year_lastweek_weekday& operator+=(const years& y) NOEXCEPT; + year_lastweek_weekday& operator-=(const years& y) NOEXCEPT; + + CONSTCD11 iso_week::year year() const NOEXCEPT; + CONSTCD14 iso_week::weeknum weeknum() const NOEXCEPT; + CONSTCD11 iso_week::weekday weekday() const NOEXCEPT; + + CONSTCD14 operator sys_days() const NOEXCEPT; + CONSTCD14 explicit operator local_days() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const year_lastweek_weekday& x, const year_lastweek_weekday& y) NOEXCEPT; +CONSTCD11 bool operator!=(const year_lastweek_weekday& x, const year_lastweek_weekday& y) NOEXCEPT; +CONSTCD11 bool operator< (const year_lastweek_weekday& x, const year_lastweek_weekday& y) NOEXCEPT; +CONSTCD11 bool operator> (const year_lastweek_weekday& x, const year_lastweek_weekday& y) NOEXCEPT; +CONSTCD11 bool operator<=(const year_lastweek_weekday& x, const year_lastweek_weekday& y) NOEXCEPT; +CONSTCD11 bool operator>=(const year_lastweek_weekday& x, const year_lastweek_weekday& y) NOEXCEPT; + +CONSTCD11 year_lastweek_weekday operator+(const year_lastweek_weekday& ywnwd, const years& y) NOEXCEPT; +CONSTCD11 year_lastweek_weekday operator+(const years& y, const year_lastweek_weekday& ywnwd) NOEXCEPT; +CONSTCD11 year_lastweek_weekday operator-(const year_lastweek_weekday& ywnwd, const years& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_lastweek_weekday& ywnwd); + +// class year_weeknum_weekday + +class year_weeknum_weekday +{ + iso_week::year y_; + iso_week::weeknum wn_; + iso_week::weekday wd_; + +public: + CONSTCD11 year_weeknum_weekday(const iso_week::year& y, const iso_week::weeknum& wn, + const iso_week::weekday& wd) NOEXCEPT; + CONSTCD14 year_weeknum_weekday(const year_lastweek_weekday& ylwwd) NOEXCEPT; + CONSTCD14 year_weeknum_weekday(const sys_days& dp) NOEXCEPT; + CONSTCD14 explicit year_weeknum_weekday(const local_days& dp) NOEXCEPT; + + year_weeknum_weekday& operator+=(const years& y) NOEXCEPT; + year_weeknum_weekday& operator-=(const years& y) NOEXCEPT; + + CONSTCD11 iso_week::year year() const NOEXCEPT; + CONSTCD11 iso_week::weeknum weeknum() const NOEXCEPT; + CONSTCD11 iso_week::weekday weekday() const NOEXCEPT; + + CONSTCD14 operator sys_days() const NOEXCEPT; + CONSTCD14 explicit operator local_days() const NOEXCEPT; + CONSTCD14 bool ok() const NOEXCEPT; + +private: + static CONSTCD14 year_weeknum_weekday from_days(days dp) NOEXCEPT; +}; + +CONSTCD11 bool operator==(const year_weeknum_weekday& x, const year_weeknum_weekday& y) NOEXCEPT; +CONSTCD11 bool operator!=(const year_weeknum_weekday& x, const year_weeknum_weekday& y) NOEXCEPT; +CONSTCD11 bool operator< (const year_weeknum_weekday& x, const year_weeknum_weekday& y) NOEXCEPT; +CONSTCD11 bool operator> (const year_weeknum_weekday& x, const year_weeknum_weekday& y) NOEXCEPT; +CONSTCD11 bool operator<=(const year_weeknum_weekday& x, const year_weeknum_weekday& y) NOEXCEPT; +CONSTCD11 bool operator>=(const year_weeknum_weekday& x, const year_weeknum_weekday& y) NOEXCEPT; + +CONSTCD11 year_weeknum_weekday operator+(const year_weeknum_weekday& ywnwd, const years& y) NOEXCEPT; +CONSTCD11 year_weeknum_weekday operator+(const years& y, const year_weeknum_weekday& ywnwd) NOEXCEPT; +CONSTCD11 year_weeknum_weekday operator-(const year_weeknum_weekday& ywnwd, const years& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_weeknum_weekday& ywnwd); + +//----------------+ +// Implementation | +//----------------+ + +// weekday + +CONSTCD11 +inline +unsigned char +weekday::to_iso_encoding(unsigned char z) NOEXCEPT +{ + return z != 0 ? z : (unsigned char)7; +} + +CONSTCD11 +inline +unsigned +weekday::from_iso_encoding(unsigned z) NOEXCEPT +{ + return z != 7 ? z : 0u; +} + +CONSTCD11 +inline +unsigned char +weekday::weekday_from_days(int z) NOEXCEPT +{ + return to_iso_encoding(static_cast(static_cast( + z >= -4 ? (z+4) % 7 : (z+5) % 7 + 6))); +} + +CONSTCD11 +inline +weekday::weekday(unsigned wd) NOEXCEPT + : wd_(static_cast(wd)) + {} + +CONSTCD11 +inline +weekday::weekday(date::weekday wd) NOEXCEPT + : wd_(wd.iso_encoding()) + {} + +CONSTCD11 +inline +weekday::weekday(const sys_days& dp) NOEXCEPT + : wd_(weekday_from_days(dp.time_since_epoch().count())) + {} + +CONSTCD11 +inline +weekday::weekday(const local_days& dp) NOEXCEPT + : wd_(weekday_from_days(dp.time_since_epoch().count())) + {} + +inline weekday& weekday::operator++() NOEXCEPT {if (++wd_ == 8) wd_ = 1; return *this;} +inline weekday weekday::operator++(int) NOEXCEPT {auto tmp(*this); ++(*this); return tmp;} +inline weekday& weekday::operator--() NOEXCEPT {if (wd_-- == 1) wd_ = 7; return *this;} +inline weekday weekday::operator--(int) NOEXCEPT {auto tmp(*this); --(*this); return tmp;} + +inline +weekday& +weekday::operator+=(const days& d) NOEXCEPT +{ + *this = *this + d; + return *this; +} + +inline +weekday& +weekday::operator-=(const days& d) NOEXCEPT +{ + *this = *this - d; + return *this; +} + +CONSTCD11 +inline +weekday::operator unsigned() const NOEXCEPT +{ + return wd_; +} + +CONSTCD11 +inline +weekday::operator date::weekday() const NOEXCEPT +{ + return date::weekday{from_iso_encoding(unsigned{wd_})}; +} + +CONSTCD11 inline bool weekday::ok() const NOEXCEPT {return 1 <= wd_ && wd_ <= 7;} + +CONSTCD11 +inline +bool +operator==(const weekday& x, const weekday& y) NOEXCEPT +{ + return static_cast(x) == static_cast(y); +} + +CONSTCD11 +inline +bool +operator!=(const weekday& x, const weekday& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD14 +inline +days +operator-(const weekday& x, const weekday& y) NOEXCEPT +{ + auto const diff = static_cast(x) - static_cast(y); + return days{diff <= 6 ? diff : diff + 7}; +} + +CONSTCD14 +inline +weekday +operator+(const weekday& x, const days& y) NOEXCEPT +{ + auto const wdu = static_cast(static_cast(x) - 1u) + y.count(); + auto const wk = (wdu >= 0 ? wdu : wdu-6) / 7; + return weekday{static_cast(wdu - wk * 7) + 1u}; +} + +CONSTCD14 +inline +weekday +operator+(const days& x, const weekday& y) NOEXCEPT +{ + return y + x; +} + +CONSTCD14 +inline +weekday +operator-(const weekday& x, const days& y) NOEXCEPT +{ + return x + -y; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday& wd) +{ + switch (static_cast(wd)) + { + case 7: + os << "Sun"; + break; + case 1: + os << "Mon"; + break; + case 2: + os << "Tue"; + break; + case 3: + os << "Wed"; + break; + case 4: + os << "Thu"; + break; + case 5: + os << "Fri"; + break; + case 6: + os << "Sat"; + break; + default: + os << static_cast(wd) << " is not a valid weekday"; + break; + } + return os; +} + +// year + +CONSTCD11 inline year::year(int y) NOEXCEPT : y_(static_cast(y)) {} +inline year& year::operator++() NOEXCEPT {++y_; return *this;} +inline year year::operator++(int) NOEXCEPT {auto tmp(*this); ++(*this); return tmp;} +inline year& year::operator--() NOEXCEPT {--y_; return *this;} +inline year year::operator--(int) NOEXCEPT {auto tmp(*this); --(*this); return tmp;} +inline year& year::operator+=(const years& y) NOEXCEPT {*this = *this + y; return *this;} +inline year& year::operator-=(const years& y) NOEXCEPT {*this = *this - y; return *this;} + +CONSTCD14 +inline +bool +year::is_leap() const NOEXCEPT +{ + const auto y = date::year{static_cast(y_)}; + const auto s0 = sys_days((y-years{1})/12/date::thu[date::last]); + const auto s1 = sys_days(y/12/date::thu[date::last]); + return s1-s0 != days{7*52}; +} + +CONSTCD11 inline year::operator int() const NOEXCEPT {return y_;} +CONSTCD11 inline bool year::ok() const NOEXCEPT {return min() <= *this && *this <= max();} + +CONSTCD11 +inline +year +year::min() NOEXCEPT +{ + using std::chrono::seconds; + using std::chrono::minutes; + using std::chrono::hours; + using std::chrono::duration_cast; + static_assert(sizeof(seconds)*CHAR_BIT >= 41, "seconds may overflow"); + static_assert(sizeof(hours)*CHAR_BIT >= 30, "hours may overflow"); + return sizeof(minutes)*CHAR_BIT < 34 ? + year{1970} + duration_cast(minutes::min()) : + year{std::numeric_limits::min()}; +} + +CONSTCD11 +inline +year +year::max() NOEXCEPT +{ + using std::chrono::seconds; + using std::chrono::minutes; + using std::chrono::hours; + using std::chrono::duration_cast; + static_assert(sizeof(seconds)*CHAR_BIT >= 41, "seconds may overflow"); + static_assert(sizeof(hours)*CHAR_BIT >= 30, "hours may overflow"); + return sizeof(minutes)*CHAR_BIT < 34 ? + year{1969} + duration_cast(minutes::max()) : + year{std::numeric_limits::max()}; +} + +CONSTCD11 +inline +bool +operator==(const year& x, const year& y) NOEXCEPT +{ + return static_cast(x) == static_cast(y); +} + +CONSTCD11 +inline +bool +operator!=(const year& x, const year& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year& x, const year& y) NOEXCEPT +{ + return static_cast(x) < static_cast(y); +} + +CONSTCD11 +inline +bool +operator>(const year& x, const year& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year& x, const year& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year& x, const year& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD11 +inline +years +operator-(const year& x, const year& y) NOEXCEPT +{ + return years{static_cast(x) - static_cast(y)}; +} + +CONSTCD11 +inline +year +operator+(const year& x, const years& y) NOEXCEPT +{ + return year{static_cast(x) + y.count()}; +} + +CONSTCD11 +inline +year +operator+(const years& x, const year& y) NOEXCEPT +{ + return y + x; +} + +CONSTCD11 +inline +year +operator-(const year& x, const years& y) NOEXCEPT +{ + return year{static_cast(x) - y.count()}; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year& y) +{ + date::detail::save_ostream _(os); + os.fill('0'); + os.flags(std::ios::dec | std::ios::internal); + os.width(4 + (y < year{0})); + os << static_cast(y); + return os; +} + +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) +inline namespace literals +{ + +CONSTCD11 +inline +iso_week::year +operator "" _y(unsigned long long y) NOEXCEPT +{ + return iso_week::year(static_cast(y)); +} + +CONSTCD11 +inline +iso_week::weeknum +operator "" _w(unsigned long long wn) NOEXCEPT +{ + return iso_week::weeknum(static_cast(wn)); +} + +#endif // !defined(_MSC_VER) || (_MSC_VER >= 1900) + +CONSTDATA iso_week::last_week last{}; + +CONSTDATA iso_week::weekday sun{7u}; +CONSTDATA iso_week::weekday mon{1u}; +CONSTDATA iso_week::weekday tue{2u}; +CONSTDATA iso_week::weekday wed{3u}; +CONSTDATA iso_week::weekday thu{4u}; +CONSTDATA iso_week::weekday fri{5u}; +CONSTDATA iso_week::weekday sat{6u}; + +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) +} // inline namespace literals +#endif + +// weeknum + +CONSTCD11 +inline +weeknum::weeknum(unsigned wn) NOEXCEPT + : wn_(static_cast(wn)) + {} + +inline weeknum& weeknum::operator++() NOEXCEPT {++wn_; return *this;} +inline weeknum weeknum::operator++(int) NOEXCEPT {auto tmp(*this); ++(*this); return tmp;} +inline weeknum& weeknum::operator--() NOEXCEPT {--wn_; return *this;} +inline weeknum weeknum::operator--(int) NOEXCEPT {auto tmp(*this); --(*this); return tmp;} + +inline +weeknum& +weeknum::operator+=(const weeks& y) NOEXCEPT +{ + *this = *this + y; + return *this; +} + +inline +weeknum& +weeknum::operator-=(const weeks& y) NOEXCEPT +{ + *this = *this - y; + return *this; +} + +CONSTCD11 inline weeknum::operator unsigned() const NOEXCEPT {return wn_;} +CONSTCD11 inline bool weeknum::ok() const NOEXCEPT {return 1 <= wn_ && wn_ <= 53;} + +CONSTCD11 +inline +bool +operator==(const weeknum& x, const weeknum& y) NOEXCEPT +{ + return static_cast(x) == static_cast(y); +} + +CONSTCD11 +inline +bool +operator!=(const weeknum& x, const weeknum& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const weeknum& x, const weeknum& y) NOEXCEPT +{ + return static_cast(x) < static_cast(y); +} + +CONSTCD11 +inline +bool +operator>(const weeknum& x, const weeknum& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const weeknum& x, const weeknum& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const weeknum& x, const weeknum& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD11 +inline +weeks +operator-(const weeknum& x, const weeknum& y) NOEXCEPT +{ + return weeks{static_cast(static_cast(x)) - + static_cast(static_cast(y))}; +} + +CONSTCD11 +inline +weeknum +operator+(const weeknum& x, const weeks& y) NOEXCEPT +{ + return weeknum{static_cast(x) + static_cast(y.count())}; +} + +CONSTCD11 +inline +weeknum +operator+(const weeks& x, const weeknum& y) NOEXCEPT +{ + return y + x; +} + +CONSTCD11 +inline +weeknum +operator-(const weeknum& x, const weeks& y) NOEXCEPT +{ + return x + -y; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const weeknum& wn) +{ + date::detail::save_ostream _(os); + os << 'W'; + os.fill('0'); + os.flags(std::ios::dec | std::ios::right); + os.width(2); + os << static_cast(wn); + return os; +} + +// year_weeknum + +CONSTCD11 +inline +year_weeknum::year_weeknum(const iso_week::year& y, const iso_week::weeknum& wn) NOEXCEPT + : y_(y) + , wn_(wn) + {} + +CONSTCD11 inline year year_weeknum::year() const NOEXCEPT {return y_;} +CONSTCD11 inline weeknum year_weeknum::weeknum() const NOEXCEPT {return wn_;} +CONSTCD11 inline bool year_weeknum::ok() const NOEXCEPT +{ + return y_.ok() && 1u <= static_cast(wn_) && wn_ <= (y_/last).weeknum(); +} + +inline +year_weeknum& +year_weeknum::operator+=(const years& dy) NOEXCEPT +{ + *this = *this + dy; + return *this; +} + +inline +year_weeknum& +year_weeknum::operator-=(const years& dy) NOEXCEPT +{ + *this = *this - dy; + return *this; +} + +CONSTCD11 +inline +bool +operator==(const year_weeknum& x, const year_weeknum& y) NOEXCEPT +{ + return x.year() == y.year() && x.weeknum() == y.weeknum(); +} + +CONSTCD11 +inline +bool +operator!=(const year_weeknum& x, const year_weeknum& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year_weeknum& x, const year_weeknum& y) NOEXCEPT +{ + return x.year() < y.year() ? true + : (x.year() > y.year() ? false + : (x.weeknum() < y.weeknum())); +} + +CONSTCD11 +inline +bool +operator>(const year_weeknum& x, const year_weeknum& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year_weeknum& x, const year_weeknum& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year_weeknum& x, const year_weeknum& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD11 +inline +year_weeknum +operator+(const year_weeknum& ym, const years& dy) NOEXCEPT +{ + return (ym.year() + dy) / ym.weeknum(); +} + +CONSTCD11 +inline +year_weeknum +operator+(const years& dy, const year_weeknum& ym) NOEXCEPT +{ + return ym + dy; +} + +CONSTCD11 +inline +year_weeknum +operator-(const year_weeknum& ym, const years& dy) NOEXCEPT +{ + return ym + -dy; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_weeknum& ywn) +{ + return os << ywn.year() << '-' << ywn.weeknum(); +} + + +// year_lastweek + +CONSTCD11 +inline +year_lastweek::year_lastweek(const iso_week::year& y) NOEXCEPT + : y_(y) + {} + +CONSTCD11 inline year year_lastweek::year() const NOEXCEPT {return y_;} + +CONSTCD14 +inline +weeknum +year_lastweek::weeknum() const NOEXCEPT +{ + return iso_week::weeknum(y_.is_leap() ? 53u : 52u); +} + +CONSTCD11 inline bool year_lastweek::ok() const NOEXCEPT {return y_.ok();} + +inline +year_lastweek& +year_lastweek::operator+=(const years& dy) NOEXCEPT +{ + *this = *this + dy; + return *this; +} + +inline +year_lastweek& +year_lastweek::operator-=(const years& dy) NOEXCEPT +{ + *this = *this - dy; + return *this; +} + +CONSTCD11 +inline +bool +operator==(const year_lastweek& x, const year_lastweek& y) NOEXCEPT +{ + return x.year() == y.year(); +} + +CONSTCD11 +inline +bool +operator!=(const year_lastweek& x, const year_lastweek& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year_lastweek& x, const year_lastweek& y) NOEXCEPT +{ + return x.year() < y.year(); +} + +CONSTCD11 +inline +bool +operator>(const year_lastweek& x, const year_lastweek& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year_lastweek& x, const year_lastweek& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year_lastweek& x, const year_lastweek& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD11 +inline +year_lastweek +operator+(const year_lastweek& ym, const years& dy) NOEXCEPT +{ + return year_lastweek{ym.year() + dy}; +} + +CONSTCD11 +inline +year_lastweek +operator+(const years& dy, const year_lastweek& ym) NOEXCEPT +{ + return ym + dy; +} + +CONSTCD11 +inline +year_lastweek +operator-(const year_lastweek& ym, const years& dy) NOEXCEPT +{ + return ym + -dy; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_lastweek& ywn) +{ + return os << ywn.year() << "-W last"; +} + +// weeknum_weekday + +CONSTCD11 +inline +weeknum_weekday::weeknum_weekday(const iso_week::weeknum& wn, + const iso_week::weekday& wd) NOEXCEPT + : wn_(wn) + , wd_(wd) + {} + +CONSTCD11 inline weeknum weeknum_weekday::weeknum() const NOEXCEPT {return wn_;} +CONSTCD11 inline weekday weeknum_weekday::weekday() const NOEXCEPT {return wd_;} + +CONSTCD14 +inline +bool +weeknum_weekday::ok() const NOEXCEPT +{ + return wn_.ok() && wd_.ok(); +} + +CONSTCD11 +inline +bool +operator==(const weeknum_weekday& x, const weeknum_weekday& y) NOEXCEPT +{ + return x.weeknum() == y.weeknum() && x.weekday() == y.weekday(); +} + +CONSTCD11 +inline +bool +operator!=(const weeknum_weekday& x, const weeknum_weekday& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const weeknum_weekday& x, const weeknum_weekday& y) NOEXCEPT +{ + return x.weeknum() < y.weeknum() ? true + : (x.weeknum() > y.weeknum() ? false + : (static_cast(x.weekday()) < static_cast(y.weekday()))); +} + +CONSTCD11 +inline +bool +operator>(const weeknum_weekday& x, const weeknum_weekday& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const weeknum_weekday& x, const weeknum_weekday& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const weeknum_weekday& x, const weeknum_weekday& y) NOEXCEPT +{ + return !(x < y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const weeknum_weekday& md) +{ + return os << md.weeknum() << '-' << md.weekday(); +} + +// lastweek_weekday + +CONSTCD11 +inline +lastweek_weekday::lastweek_weekday(const iso_week::weekday& wd) NOEXCEPT + : wd_(wd) + {} + +CONSTCD11 inline weekday lastweek_weekday::weekday() const NOEXCEPT {return wd_;} + +CONSTCD14 +inline +bool +lastweek_weekday::ok() const NOEXCEPT +{ + return wd_.ok(); +} + +CONSTCD11 +inline +bool +operator==(const lastweek_weekday& x, const lastweek_weekday& y) NOEXCEPT +{ + return x.weekday() == y.weekday(); +} + +CONSTCD11 +inline +bool +operator!=(const lastweek_weekday& x, const lastweek_weekday& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const lastweek_weekday& x, const lastweek_weekday& y) NOEXCEPT +{ + return static_cast(x.weekday()) < static_cast(y.weekday()); +} + +CONSTCD11 +inline +bool +operator>(const lastweek_weekday& x, const lastweek_weekday& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const lastweek_weekday& x, const lastweek_weekday& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const lastweek_weekday& x, const lastweek_weekday& y) NOEXCEPT +{ + return !(x < y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const lastweek_weekday& md) +{ + return os << "W last-" << md.weekday(); +} + +// year_lastweek_weekday + +CONSTCD11 +inline +year_lastweek_weekday::year_lastweek_weekday(const iso_week::year& y, + const iso_week::weekday& wd) NOEXCEPT + : y_(y) + , wd_(wd) + {} + +inline +year_lastweek_weekday& +year_lastweek_weekday::operator+=(const years& y) NOEXCEPT +{ + *this = *this + y; + return *this; +} + +inline +year_lastweek_weekday& +year_lastweek_weekday::operator-=(const years& y) NOEXCEPT +{ + *this = *this - y; + return *this; +} + +CONSTCD11 inline year year_lastweek_weekday::year() const NOEXCEPT {return y_;} + +CONSTCD14 +inline +weeknum +year_lastweek_weekday::weeknum() const NOEXCEPT +{ + return (y_ / last).weeknum(); +} + +CONSTCD11 inline weekday year_lastweek_weekday::weekday() const NOEXCEPT {return wd_;} + +CONSTCD14 +inline +year_lastweek_weekday::operator sys_days() const NOEXCEPT +{ + return sys_days(date::year{static_cast(y_)}/date::dec/date::thu[date::last]) + + (sun - thu) - (sun - wd_); +} + +CONSTCD14 +inline +year_lastweek_weekday::operator local_days() const NOEXCEPT +{ + return local_days(date::year{static_cast(y_)}/date::dec/date::thu[date::last]) + + (sun - thu) - (sun - wd_); +} + +CONSTCD11 +inline +bool +year_lastweek_weekday::ok() const NOEXCEPT +{ + return y_.ok() && wd_.ok(); +} + +CONSTCD11 +inline +bool +operator==(const year_lastweek_weekday& x, const year_lastweek_weekday& y) NOEXCEPT +{ + return x.year() == y.year() && x.weekday() == y.weekday(); +} + +CONSTCD11 +inline +bool +operator!=(const year_lastweek_weekday& x, const year_lastweek_weekday& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year_lastweek_weekday& x, const year_lastweek_weekday& y) NOEXCEPT +{ + return x.year() < y.year() ? true + : (x.year() > y.year() ? false + : (static_cast(x.weekday()) < static_cast(y.weekday()))); +} + +CONSTCD11 +inline +bool +operator>(const year_lastweek_weekday& x, const year_lastweek_weekday& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year_lastweek_weekday& x, const year_lastweek_weekday& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year_lastweek_weekday& x, const year_lastweek_weekday& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD11 +inline +year_lastweek_weekday +operator+(const year_lastweek_weekday& ywnwd, const years& y) NOEXCEPT +{ + return (ywnwd.year() + y) / last / ywnwd.weekday(); +} + +CONSTCD11 +inline +year_lastweek_weekday +operator+(const years& y, const year_lastweek_weekday& ywnwd) NOEXCEPT +{ + return ywnwd + y; +} + +CONSTCD11 +inline +year_lastweek_weekday +operator-(const year_lastweek_weekday& ywnwd, const years& y) NOEXCEPT +{ + return ywnwd + -y; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_lastweek_weekday& ywnwd) +{ + return os << ywnwd.year() << "-W last-" << ywnwd.weekday(); +} + +// year_weeknum_weekday + +CONSTCD11 +inline +year_weeknum_weekday::year_weeknum_weekday(const iso_week::year& y, + const iso_week::weeknum& wn, + const iso_week::weekday& wd) NOEXCEPT + : y_(y) + , wn_(wn) + , wd_(wd) + {} + +CONSTCD14 +inline +year_weeknum_weekday::year_weeknum_weekday(const year_lastweek_weekday& ylwwd) NOEXCEPT + : y_(ylwwd.year()) + , wn_(ylwwd.weeknum()) + , wd_(ylwwd.weekday()) + {} + +CONSTCD14 +inline +year_weeknum_weekday::year_weeknum_weekday(const sys_days& dp) NOEXCEPT + : year_weeknum_weekday(from_days(dp.time_since_epoch())) + {} + +CONSTCD14 +inline +year_weeknum_weekday::year_weeknum_weekday(const local_days& dp) NOEXCEPT + : year_weeknum_weekday(from_days(dp.time_since_epoch())) + {} + +inline +year_weeknum_weekday& +year_weeknum_weekday::operator+=(const years& y) NOEXCEPT +{ + *this = *this + y; + return *this; +} + +inline +year_weeknum_weekday& +year_weeknum_weekday::operator-=(const years& y) NOEXCEPT +{ + *this = *this - y; + return *this; +} + +CONSTCD11 inline year year_weeknum_weekday::year() const NOEXCEPT {return y_;} +CONSTCD11 inline weeknum year_weeknum_weekday::weeknum() const NOEXCEPT {return wn_;} +CONSTCD11 inline weekday year_weeknum_weekday::weekday() const NOEXCEPT {return wd_;} + +CONSTCD14 +inline +year_weeknum_weekday::operator sys_days() const NOEXCEPT +{ + return sys_days(date::year{static_cast(y_)-1}/date::dec/date::thu[date::last]) + + (date::mon - date::thu) + weeks{static_cast(wn_)-1} + (wd_ - mon); +} + +CONSTCD14 +inline +year_weeknum_weekday::operator local_days() const NOEXCEPT +{ + return local_days(date::year{static_cast(y_)-1}/date::dec/date::thu[date::last]) + + (date::mon - date::thu) + weeks{static_cast(wn_)-1} + (wd_ - mon); +} + +CONSTCD14 +inline +bool +year_weeknum_weekday::ok() const NOEXCEPT +{ + return y_.ok() && wd_.ok() && iso_week::weeknum{1u} <= wn_ && wn_ <= year_lastweek{y_}.weeknum(); +} + +CONSTCD14 +inline +year_weeknum_weekday +year_weeknum_weekday::from_days(days d) NOEXCEPT +{ + const auto dp = sys_days{d}; + const auto wd = iso_week::weekday{dp}; + auto y = date::year_month_day{dp + days{3}}.year(); + auto start = sys_days((y - date::years{1})/date::dec/date::thu[date::last]) + (mon-thu); + if (dp < start) + { + --y; + start = sys_days((y - date::years{1})/date::dec/date::thu[date::last]) + (mon-thu); + } + const auto wn = iso_week::weeknum( + static_cast(date::trunc(dp - start).count() + 1)); + return {iso_week::year(static_cast(y)), wn, wd}; +} + +CONSTCD11 +inline +bool +operator==(const year_weeknum_weekday& x, const year_weeknum_weekday& y) NOEXCEPT +{ + return x.year() == y.year() && x.weeknum() == y.weeknum() && x.weekday() == y.weekday(); +} + +CONSTCD11 +inline +bool +operator!=(const year_weeknum_weekday& x, const year_weeknum_weekday& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year_weeknum_weekday& x, const year_weeknum_weekday& y) NOEXCEPT +{ + return x.year() < y.year() ? true + : (x.year() > y.year() ? false + : (x.weeknum() < y.weeknum() ? true + : (x.weeknum() > y.weeknum() ? false + : (static_cast(x.weekday()) < static_cast(y.weekday()))))); +} + +CONSTCD11 +inline +bool +operator>(const year_weeknum_weekday& x, const year_weeknum_weekday& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year_weeknum_weekday& x, const year_weeknum_weekday& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year_weeknum_weekday& x, const year_weeknum_weekday& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD11 +inline +year_weeknum_weekday +operator+(const year_weeknum_weekday& ywnwd, const years& y) NOEXCEPT +{ + return (ywnwd.year() + y) / ywnwd.weeknum() / ywnwd.weekday(); +} + +CONSTCD11 +inline +year_weeknum_weekday +operator+(const years& y, const year_weeknum_weekday& ywnwd) NOEXCEPT +{ + return ywnwd + y; +} + +CONSTCD11 +inline +year_weeknum_weekday +operator-(const year_weeknum_weekday& ywnwd, const years& y) NOEXCEPT +{ + return ywnwd + -y; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_weeknum_weekday& ywnwd) +{ + return os << ywnwd.year() << '-' << ywnwd.weeknum() << '-' << ywnwd.weekday(); +} + +// date composition operators + +CONSTCD11 +inline +year_weeknum +operator/(const year& y, const weeknum& wn) NOEXCEPT +{ + return {y, wn}; +} + +CONSTCD11 +inline +year_weeknum +operator/(const year& y, int wn) NOEXCEPT +{ + return y/weeknum(static_cast(wn)); +} + +CONSTCD11 +inline +year_lastweek +operator/(const year& y, last_week) NOEXCEPT +{ + return year_lastweek{y}; +} + +CONSTCD11 +inline +weeknum_weekday +operator/(const weeknum& wn, const weekday& wd) NOEXCEPT +{ + return {wn, wd}; +} + +CONSTCD11 +inline +weeknum_weekday +operator/(const weeknum& wn, int wd) NOEXCEPT +{ + return wn/weekday{static_cast(wd)}; +} + +CONSTCD11 +inline +weeknum_weekday +operator/(const weekday& wd, const weeknum& wn) NOEXCEPT +{ + return wn/wd; +} + +CONSTCD11 +inline +weeknum_weekday +operator/(const weekday& wd, int wn) NOEXCEPT +{ + return weeknum{static_cast(wn)}/wd; +} + +CONSTCD11 +inline +lastweek_weekday +operator/(const last_week&, const weekday& wd) NOEXCEPT +{ + return lastweek_weekday{wd}; +} + +CONSTCD11 +inline +lastweek_weekday +operator/(const last_week& wn, int wd) NOEXCEPT +{ + return wn / weekday{static_cast(wd)}; +} + +CONSTCD11 +inline +lastweek_weekday +operator/(const weekday& wd, const last_week& wn) NOEXCEPT +{ + return wn / wd; +} + +CONSTCD11 +inline +year_weeknum_weekday +operator/(const year_weeknum& ywn, const weekday& wd) NOEXCEPT +{ + return {ywn.year(), ywn.weeknum(), wd}; +} + +CONSTCD11 +inline +year_weeknum_weekday +operator/(const year_weeknum& ywn, int wd) NOEXCEPT +{ + return ywn / weekday(static_cast(wd)); +} + +CONSTCD11 +inline +year_weeknum_weekday +operator/(const weeknum_weekday& wnwd, const year& y) NOEXCEPT +{ + return {y, wnwd.weeknum(), wnwd.weekday()}; +} + +CONSTCD11 +inline +year_weeknum_weekday +operator/(const weeknum_weekday& wnwd, int y) NOEXCEPT +{ + return wnwd / year{y}; +} + +CONSTCD11 +inline +year_lastweek_weekday +operator/(const year_lastweek& ylw, const weekday& wd) NOEXCEPT +{ + return {ylw.year(), wd}; +} + +CONSTCD11 +inline +year_lastweek_weekday +operator/(const year_lastweek& ylw, int wd) NOEXCEPT +{ + return ylw / weekday(static_cast(wd)); +} + +CONSTCD11 +inline +year_lastweek_weekday +operator/(const lastweek_weekday& lwwd, const year& y) NOEXCEPT +{ + return {y, lwwd.weekday()}; +} + +CONSTCD11 +inline +year_lastweek_weekday +operator/(const lastweek_weekday& lwwd, int y) NOEXCEPT +{ + return lwwd / year{y}; +} + +} // namespace iso_week + +#endif // ISO_WEEK_H diff --git a/src/date/julian.h b/src/date/julian.h new file mode 100644 index 0000000..da692a4 --- /dev/null +++ b/src/date/julian.h @@ -0,0 +1,3052 @@ +#ifndef JULIAN_H +#define JULIAN_H + +// The MIT License (MIT) +// +// Copyright (c) 2016 Howard Hinnant +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// Our apologies. When the previous paragraph was written, lowercase had not yet +// been invented (that would involve another several millennia of evolution). +// We did not mean to shout. + +#include "date.h" + +namespace julian +{ + +// durations + +using days = date::days; + +using weeks = date::weeks; + +using years = std::chrono::duration + , days::period>>; + +using months = std::chrono::duration + >>; + +// time_point + +using sys_days = date::sys_days; +using local_days = date::local_days; + +// types + +struct last_spec +{ + explicit last_spec() = default; +}; + +class day; +class month; +class year; + +class weekday; +class weekday_indexed; +class weekday_last; + +class month_day; +class month_day_last; +class month_weekday; +class month_weekday_last; + +class year_month; + +class year_month_day; +class year_month_day_last; +class year_month_weekday; +class year_month_weekday_last; + +// date composition operators + +CONSTCD11 year_month operator/(const year& y, const month& m) NOEXCEPT; +CONSTCD11 year_month operator/(const year& y, int m) NOEXCEPT; + +CONSTCD11 month_day operator/(const day& d, const month& m) NOEXCEPT; +CONSTCD11 month_day operator/(const day& d, int m) NOEXCEPT; +CONSTCD11 month_day operator/(const month& m, const day& d) NOEXCEPT; +CONSTCD11 month_day operator/(const month& m, int d) NOEXCEPT; +CONSTCD11 month_day operator/(int m, const day& d) NOEXCEPT; + +CONSTCD11 month_day_last operator/(const month& m, last_spec) NOEXCEPT; +CONSTCD11 month_day_last operator/(int m, last_spec) NOEXCEPT; +CONSTCD11 month_day_last operator/(last_spec, const month& m) NOEXCEPT; +CONSTCD11 month_day_last operator/(last_spec, int m) NOEXCEPT; + +CONSTCD11 month_weekday operator/(const month& m, const weekday_indexed& wdi) NOEXCEPT; +CONSTCD11 month_weekday operator/(int m, const weekday_indexed& wdi) NOEXCEPT; +CONSTCD11 month_weekday operator/(const weekday_indexed& wdi, const month& m) NOEXCEPT; +CONSTCD11 month_weekday operator/(const weekday_indexed& wdi, int m) NOEXCEPT; + +CONSTCD11 month_weekday_last operator/(const month& m, const weekday_last& wdl) NOEXCEPT; +CONSTCD11 month_weekday_last operator/(int m, const weekday_last& wdl) NOEXCEPT; +CONSTCD11 month_weekday_last operator/(const weekday_last& wdl, const month& m) NOEXCEPT; +CONSTCD11 month_weekday_last operator/(const weekday_last& wdl, int m) NOEXCEPT; + +CONSTCD11 year_month_day operator/(const year_month& ym, const day& d) NOEXCEPT; +CONSTCD11 year_month_day operator/(const year_month& ym, int d) NOEXCEPT; +CONSTCD11 year_month_day operator/(const year& y, const month_day& md) NOEXCEPT; +CONSTCD11 year_month_day operator/(int y, const month_day& md) NOEXCEPT; +CONSTCD11 year_month_day operator/(const month_day& md, const year& y) NOEXCEPT; +CONSTCD11 year_month_day operator/(const month_day& md, int y) NOEXCEPT; + +CONSTCD11 + year_month_day_last operator/(const year_month& ym, last_spec) NOEXCEPT; +CONSTCD11 + year_month_day_last operator/(const year& y, const month_day_last& mdl) NOEXCEPT; +CONSTCD11 + year_month_day_last operator/(int y, const month_day_last& mdl) NOEXCEPT; +CONSTCD11 + year_month_day_last operator/(const month_day_last& mdl, const year& y) NOEXCEPT; +CONSTCD11 + year_month_day_last operator/(const month_day_last& mdl, int y) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator/(const year_month& ym, const weekday_indexed& wdi) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator/(const year& y, const month_weekday& mwd) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator/(int y, const month_weekday& mwd) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator/(const month_weekday& mwd, const year& y) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator/(const month_weekday& mwd, int y) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator/(const year_month& ym, const weekday_last& wdl) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator/(const year& y, const month_weekday_last& mwdl) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator/(int y, const month_weekday_last& mwdl) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator/(const month_weekday_last& mwdl, const year& y) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator/(const month_weekday_last& mwdl, int y) NOEXCEPT; + +// Detailed interface + +// day + +class day +{ + unsigned char d_; + +public: + explicit CONSTCD11 day(unsigned d) NOEXCEPT; + + CONSTCD14 day& operator++() NOEXCEPT; + CONSTCD14 day operator++(int) NOEXCEPT; + CONSTCD14 day& operator--() NOEXCEPT; + CONSTCD14 day operator--(int) NOEXCEPT; + + CONSTCD14 day& operator+=(const days& d) NOEXCEPT; + CONSTCD14 day& operator-=(const days& d) NOEXCEPT; + + CONSTCD11 explicit operator unsigned() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const day& x, const day& y) NOEXCEPT; +CONSTCD11 bool operator!=(const day& x, const day& y) NOEXCEPT; +CONSTCD11 bool operator< (const day& x, const day& y) NOEXCEPT; +CONSTCD11 bool operator> (const day& x, const day& y) NOEXCEPT; +CONSTCD11 bool operator<=(const day& x, const day& y) NOEXCEPT; +CONSTCD11 bool operator>=(const day& x, const day& y) NOEXCEPT; + +CONSTCD11 day operator+(const day& x, const days& y) NOEXCEPT; +CONSTCD11 day operator+(const days& x, const day& y) NOEXCEPT; +CONSTCD11 day operator-(const day& x, const days& y) NOEXCEPT; +CONSTCD11 days operator-(const day& x, const day& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const day& d); + +// month + +class month +{ + unsigned char m_; + +public: + explicit CONSTCD11 month(unsigned m) NOEXCEPT; + + CONSTCD14 month& operator++() NOEXCEPT; + CONSTCD14 month operator++(int) NOEXCEPT; + CONSTCD14 month& operator--() NOEXCEPT; + CONSTCD14 month operator--(int) NOEXCEPT; + + CONSTCD14 month& operator+=(const months& m) NOEXCEPT; + CONSTCD14 month& operator-=(const months& m) NOEXCEPT; + + CONSTCD11 explicit operator unsigned() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const month& x, const month& y) NOEXCEPT; +CONSTCD11 bool operator!=(const month& x, const month& y) NOEXCEPT; +CONSTCD11 bool operator< (const month& x, const month& y) NOEXCEPT; +CONSTCD11 bool operator> (const month& x, const month& y) NOEXCEPT; +CONSTCD11 bool operator<=(const month& x, const month& y) NOEXCEPT; +CONSTCD11 bool operator>=(const month& x, const month& y) NOEXCEPT; + +CONSTCD14 month operator+(const month& x, const months& y) NOEXCEPT; +CONSTCD14 month operator+(const months& x, const month& y) NOEXCEPT; +CONSTCD14 month operator-(const month& x, const months& y) NOEXCEPT; +CONSTCD14 months operator-(const month& x, const month& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const month& m); + +// year + +class year +{ + short y_; + +public: + explicit CONSTCD11 year(int y) NOEXCEPT; + + CONSTCD14 year& operator++() NOEXCEPT; + CONSTCD14 year operator++(int) NOEXCEPT; + CONSTCD14 year& operator--() NOEXCEPT; + CONSTCD14 year operator--(int) NOEXCEPT; + + CONSTCD14 year& operator+=(const years& y) NOEXCEPT; + CONSTCD14 year& operator-=(const years& y) NOEXCEPT; + + CONSTCD11 bool is_leap() const NOEXCEPT; + + CONSTCD11 explicit operator int() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; + + static CONSTCD11 year min() NOEXCEPT; + static CONSTCD11 year max() NOEXCEPT; +}; + +CONSTCD11 bool operator==(const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator!=(const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator< (const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator> (const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator<=(const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator>=(const year& x, const year& y) NOEXCEPT; + +CONSTCD11 year operator+(const year& x, const years& y) NOEXCEPT; +CONSTCD11 year operator+(const years& x, const year& y) NOEXCEPT; +CONSTCD11 year operator-(const year& x, const years& y) NOEXCEPT; +CONSTCD11 years operator-(const year& x, const year& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year& y); + +// weekday + +class weekday +{ + unsigned char wd_; +public: + explicit CONSTCD11 weekday(unsigned wd) NOEXCEPT; + explicit weekday(int) = delete; + CONSTCD11 weekday(const sys_days& dp) NOEXCEPT; + CONSTCD11 explicit weekday(const local_days& dp) NOEXCEPT; + + CONSTCD14 weekday& operator++() NOEXCEPT; + CONSTCD14 weekday operator++(int) NOEXCEPT; + CONSTCD14 weekday& operator--() NOEXCEPT; + CONSTCD14 weekday operator--(int) NOEXCEPT; + + CONSTCD14 weekday& operator+=(const days& d) NOEXCEPT; + CONSTCD14 weekday& operator-=(const days& d) NOEXCEPT; + + CONSTCD11 explicit operator unsigned() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; + + CONSTCD11 weekday_indexed operator[](unsigned index) const NOEXCEPT; + CONSTCD11 weekday_last operator[](last_spec) const NOEXCEPT; + +private: + static CONSTCD11 unsigned char weekday_from_days(int z) NOEXCEPT; +}; + +CONSTCD11 bool operator==(const weekday& x, const weekday& y) NOEXCEPT; +CONSTCD11 bool operator!=(const weekday& x, const weekday& y) NOEXCEPT; + +CONSTCD14 weekday operator+(const weekday& x, const days& y) NOEXCEPT; +CONSTCD14 weekday operator+(const days& x, const weekday& y) NOEXCEPT; +CONSTCD14 weekday operator-(const weekday& x, const days& y) NOEXCEPT; +CONSTCD14 days operator-(const weekday& x, const weekday& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday& wd); + +// weekday_indexed + +class weekday_indexed +{ + unsigned char wd_ : 4; + unsigned char index_ : 4; + +public: + CONSTCD11 weekday_indexed(const julian::weekday& wd, unsigned index) NOEXCEPT; + + CONSTCD11 julian::weekday weekday() const NOEXCEPT; + CONSTCD11 unsigned index() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const weekday_indexed& x, const weekday_indexed& y) NOEXCEPT; +CONSTCD11 bool operator!=(const weekday_indexed& x, const weekday_indexed& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday_indexed& wdi); + +// weekday_last + +class weekday_last +{ + julian::weekday wd_; + +public: + explicit CONSTCD11 weekday_last(const julian::weekday& wd) NOEXCEPT; + + CONSTCD11 julian::weekday weekday() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const weekday_last& x, const weekday_last& y) NOEXCEPT; +CONSTCD11 bool operator!=(const weekday_last& x, const weekday_last& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday_last& wdl); + +// year_month + +class year_month +{ + julian::year y_; + julian::month m_; + +public: + CONSTCD11 year_month(const julian::year& y, const julian::month& m) NOEXCEPT; + + CONSTCD11 julian::year year() const NOEXCEPT; + CONSTCD11 julian::month month() const NOEXCEPT; + + CONSTCD14 year_month& operator+=(const months& dm) NOEXCEPT; + CONSTCD14 year_month& operator-=(const months& dm) NOEXCEPT; + CONSTCD14 year_month& operator+=(const years& dy) NOEXCEPT; + CONSTCD14 year_month& operator-=(const years& dy) NOEXCEPT; + + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 bool operator!=(const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 bool operator< (const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 bool operator> (const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 bool operator<=(const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 bool operator>=(const year_month& x, const year_month& y) NOEXCEPT; + +CONSTCD14 year_month operator+(const year_month& ym, const months& dm) NOEXCEPT; +CONSTCD14 year_month operator+(const months& dm, const year_month& ym) NOEXCEPT; +CONSTCD14 year_month operator-(const year_month& ym, const months& dm) NOEXCEPT; + +CONSTCD11 months operator-(const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 year_month operator+(const year_month& ym, const years& dy) NOEXCEPT; +CONSTCD11 year_month operator+(const years& dy, const year_month& ym) NOEXCEPT; +CONSTCD11 year_month operator-(const year_month& ym, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month& ym); + +// month_day + +class month_day +{ + julian::month m_; + julian::day d_; + +public: + CONSTCD11 month_day(const julian::month& m, const julian::day& d) NOEXCEPT; + + CONSTCD11 julian::month month() const NOEXCEPT; + CONSTCD11 julian::day day() const NOEXCEPT; + + CONSTCD14 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const month_day& x, const month_day& y) NOEXCEPT; +CONSTCD11 bool operator!=(const month_day& x, const month_day& y) NOEXCEPT; +CONSTCD11 bool operator< (const month_day& x, const month_day& y) NOEXCEPT; +CONSTCD11 bool operator> (const month_day& x, const month_day& y) NOEXCEPT; +CONSTCD11 bool operator<=(const month_day& x, const month_day& y) NOEXCEPT; +CONSTCD11 bool operator>=(const month_day& x, const month_day& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_day& md); + +// month_day_last + +class month_day_last +{ + julian::month m_; + +public: + CONSTCD11 explicit month_day_last(const julian::month& m) NOEXCEPT; + + CONSTCD11 julian::month month() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const month_day_last& x, const month_day_last& y) NOEXCEPT; +CONSTCD11 bool operator!=(const month_day_last& x, const month_day_last& y) NOEXCEPT; +CONSTCD11 bool operator< (const month_day_last& x, const month_day_last& y) NOEXCEPT; +CONSTCD11 bool operator> (const month_day_last& x, const month_day_last& y) NOEXCEPT; +CONSTCD11 bool operator<=(const month_day_last& x, const month_day_last& y) NOEXCEPT; +CONSTCD11 bool operator>=(const month_day_last& x, const month_day_last& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_day_last& mdl); + +// month_weekday + +class month_weekday +{ + julian::month m_; + julian::weekday_indexed wdi_; +public: + CONSTCD11 month_weekday(const julian::month& m, + const julian::weekday_indexed& wdi) NOEXCEPT; + + CONSTCD11 julian::month month() const NOEXCEPT; + CONSTCD11 julian::weekday_indexed weekday_indexed() const NOEXCEPT; + + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const month_weekday& x, const month_weekday& y) NOEXCEPT; +CONSTCD11 bool operator!=(const month_weekday& x, const month_weekday& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_weekday& mwd); + +// month_weekday_last + +class month_weekday_last +{ + julian::month m_; + julian::weekday_last wdl_; + +public: + CONSTCD11 month_weekday_last(const julian::month& m, + const julian::weekday_last& wd) NOEXCEPT; + + CONSTCD11 julian::month month() const NOEXCEPT; + CONSTCD11 julian::weekday_last weekday_last() const NOEXCEPT; + + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 + bool operator==(const month_weekday_last& x, const month_weekday_last& y) NOEXCEPT; +CONSTCD11 + bool operator!=(const month_weekday_last& x, const month_weekday_last& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_weekday_last& mwdl); + +// class year_month_day + +class year_month_day +{ + julian::year y_; + julian::month m_; + julian::day d_; + +public: + CONSTCD11 year_month_day(const julian::year& y, const julian::month& m, + const julian::day& d) NOEXCEPT; + CONSTCD14 year_month_day(const year_month_day_last& ymdl) NOEXCEPT; + + CONSTCD14 year_month_day(sys_days dp) NOEXCEPT; + CONSTCD14 explicit year_month_day(local_days dp) NOEXCEPT; + + CONSTCD14 year_month_day& operator+=(const months& m) NOEXCEPT; + CONSTCD14 year_month_day& operator-=(const months& m) NOEXCEPT; + CONSTCD14 year_month_day& operator+=(const years& y) NOEXCEPT; + CONSTCD14 year_month_day& operator-=(const years& y) NOEXCEPT; + + CONSTCD11 julian::year year() const NOEXCEPT; + CONSTCD11 julian::month month() const NOEXCEPT; + CONSTCD11 julian::day day() const NOEXCEPT; + + CONSTCD14 operator sys_days() const NOEXCEPT; + CONSTCD14 explicit operator local_days() const NOEXCEPT; + CONSTCD14 bool ok() const NOEXCEPT; + +private: + static CONSTCD14 year_month_day from_days(days dp) NOEXCEPT; + CONSTCD14 days to_days() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const year_month_day& x, const year_month_day& y) NOEXCEPT; +CONSTCD11 bool operator!=(const year_month_day& x, const year_month_day& y) NOEXCEPT; +CONSTCD11 bool operator< (const year_month_day& x, const year_month_day& y) NOEXCEPT; +CONSTCD11 bool operator> (const year_month_day& x, const year_month_day& y) NOEXCEPT; +CONSTCD11 bool operator<=(const year_month_day& x, const year_month_day& y) NOEXCEPT; +CONSTCD11 bool operator>=(const year_month_day& x, const year_month_day& y) NOEXCEPT; + +CONSTCD14 year_month_day operator+(const year_month_day& ymd, const months& dm) NOEXCEPT; +CONSTCD14 year_month_day operator+(const months& dm, const year_month_day& ymd) NOEXCEPT; +CONSTCD14 year_month_day operator-(const year_month_day& ymd, const months& dm) NOEXCEPT; +CONSTCD11 year_month_day operator+(const year_month_day& ymd, const years& dy) NOEXCEPT; +CONSTCD11 year_month_day operator+(const years& dy, const year_month_day& ymd) NOEXCEPT; +CONSTCD11 year_month_day operator-(const year_month_day& ymd, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_day& ymd); + +// year_month_day_last + +class year_month_day_last +{ + julian::year y_; + julian::month_day_last mdl_; + +public: + CONSTCD11 year_month_day_last(const julian::year& y, + const julian::month_day_last& mdl) NOEXCEPT; + + CONSTCD14 year_month_day_last& operator+=(const months& m) NOEXCEPT; + CONSTCD14 year_month_day_last& operator-=(const months& m) NOEXCEPT; + CONSTCD14 year_month_day_last& operator+=(const years& y) NOEXCEPT; + CONSTCD14 year_month_day_last& operator-=(const years& y) NOEXCEPT; + + CONSTCD11 julian::year year() const NOEXCEPT; + CONSTCD11 julian::month month() const NOEXCEPT; + CONSTCD11 julian::month_day_last month_day_last() const NOEXCEPT; + CONSTCD14 julian::day day() const NOEXCEPT; + + CONSTCD14 operator sys_days() const NOEXCEPT; + CONSTCD14 explicit operator local_days() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 + bool operator==(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; +CONSTCD11 + bool operator!=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; +CONSTCD11 + bool operator< (const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; +CONSTCD11 + bool operator> (const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; +CONSTCD11 + bool operator<=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; +CONSTCD11 + bool operator>=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; + +CONSTCD14 +year_month_day_last +operator+(const year_month_day_last& ymdl, const months& dm) NOEXCEPT; + +CONSTCD14 +year_month_day_last +operator+(const months& dm, const year_month_day_last& ymdl) NOEXCEPT; + +CONSTCD11 +year_month_day_last +operator+(const year_month_day_last& ymdl, const years& dy) NOEXCEPT; + +CONSTCD11 +year_month_day_last +operator+(const years& dy, const year_month_day_last& ymdl) NOEXCEPT; + +CONSTCD14 +year_month_day_last +operator-(const year_month_day_last& ymdl, const months& dm) NOEXCEPT; + +CONSTCD11 +year_month_day_last +operator-(const year_month_day_last& ymdl, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_day_last& ymdl); + +// year_month_weekday + +class year_month_weekday +{ + julian::year y_; + julian::month m_; + julian::weekday_indexed wdi_; + +public: + CONSTCD11 year_month_weekday(const julian::year& y, const julian::month& m, + const julian::weekday_indexed& wdi) NOEXCEPT; + CONSTCD14 year_month_weekday(const sys_days& dp) NOEXCEPT; + CONSTCD14 explicit year_month_weekday(const local_days& dp) NOEXCEPT; + + CONSTCD14 year_month_weekday& operator+=(const months& m) NOEXCEPT; + CONSTCD14 year_month_weekday& operator-=(const months& m) NOEXCEPT; + CONSTCD14 year_month_weekday& operator+=(const years& y) NOEXCEPT; + CONSTCD14 year_month_weekday& operator-=(const years& y) NOEXCEPT; + + CONSTCD11 julian::year year() const NOEXCEPT; + CONSTCD11 julian::month month() const NOEXCEPT; + CONSTCD11 julian::weekday weekday() const NOEXCEPT; + CONSTCD11 unsigned index() const NOEXCEPT; + CONSTCD11 julian::weekday_indexed weekday_indexed() const NOEXCEPT; + + CONSTCD14 operator sys_days() const NOEXCEPT; + CONSTCD14 explicit operator local_days() const NOEXCEPT; + CONSTCD14 bool ok() const NOEXCEPT; + +private: + static CONSTCD14 year_month_weekday from_days(days dp) NOEXCEPT; + CONSTCD14 days to_days() const NOEXCEPT; +}; + +CONSTCD11 + bool operator==(const year_month_weekday& x, const year_month_weekday& y) NOEXCEPT; +CONSTCD11 + bool operator!=(const year_month_weekday& x, const year_month_weekday& y) NOEXCEPT; + +CONSTCD14 +year_month_weekday +operator+(const year_month_weekday& ymwd, const months& dm) NOEXCEPT; + +CONSTCD14 +year_month_weekday +operator+(const months& dm, const year_month_weekday& ymwd) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator+(const year_month_weekday& ymwd, const years& dy) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator+(const years& dy, const year_month_weekday& ymwd) NOEXCEPT; + +CONSTCD14 +year_month_weekday +operator-(const year_month_weekday& ymwd, const months& dm) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator-(const year_month_weekday& ymwd, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_weekday& ymwdi); + +// year_month_weekday_last + +class year_month_weekday_last +{ + julian::year y_; + julian::month m_; + julian::weekday_last wdl_; + +public: + CONSTCD11 year_month_weekday_last(const julian::year& y, const julian::month& m, + const julian::weekday_last& wdl) NOEXCEPT; + + CONSTCD14 year_month_weekday_last& operator+=(const months& m) NOEXCEPT; + CONSTCD14 year_month_weekday_last& operator-=(const months& m) NOEXCEPT; + CONSTCD14 year_month_weekday_last& operator+=(const years& y) NOEXCEPT; + CONSTCD14 year_month_weekday_last& operator-=(const years& y) NOEXCEPT; + + CONSTCD11 julian::year year() const NOEXCEPT; + CONSTCD11 julian::month month() const NOEXCEPT; + CONSTCD11 julian::weekday weekday() const NOEXCEPT; + CONSTCD11 julian::weekday_last weekday_last() const NOEXCEPT; + + CONSTCD14 operator sys_days() const NOEXCEPT; + CONSTCD14 explicit operator local_days() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; + +private: + CONSTCD14 days to_days() const NOEXCEPT; +}; + +CONSTCD11 +bool +operator==(const year_month_weekday_last& x, const year_month_weekday_last& y) NOEXCEPT; + +CONSTCD11 +bool +operator!=(const year_month_weekday_last& x, const year_month_weekday_last& y) NOEXCEPT; + +CONSTCD14 +year_month_weekday_last +operator+(const year_month_weekday_last& ymwdl, const months& dm) NOEXCEPT; + +CONSTCD14 +year_month_weekday_last +operator+(const months& dm, const year_month_weekday_last& ymwdl) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator+(const year_month_weekday_last& ymwdl, const years& dy) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator+(const years& dy, const year_month_weekday_last& ymwdl) NOEXCEPT; + +CONSTCD14 +year_month_weekday_last +operator-(const year_month_weekday_last& ymwdl, const months& dm) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator-(const year_month_weekday_last& ymwdl, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_weekday_last& ymwdl); + +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) +inline namespace literals +{ + +CONSTCD11 julian::day operator "" _d(unsigned long long d) NOEXCEPT; +CONSTCD11 julian::year operator "" _y(unsigned long long y) NOEXCEPT; + +// CONSTDATA julian::month jan{1}; +// CONSTDATA julian::month feb{2}; +// CONSTDATA julian::month mar{3}; +// CONSTDATA julian::month apr{4}; +// CONSTDATA julian::month may{5}; +// CONSTDATA julian::month jun{6}; +// CONSTDATA julian::month jul{7}; +// CONSTDATA julian::month aug{8}; +// CONSTDATA julian::month sep{9}; +// CONSTDATA julian::month oct{10}; +// CONSTDATA julian::month nov{11}; +// CONSTDATA julian::month dec{12}; + +} // inline namespace literals +#endif // !defined(_MSC_VER) || (_MSC_VER >= 1900) + +//----------------+ +// Implementation | +//----------------+ + +// day + +CONSTCD11 inline day::day(unsigned d) NOEXCEPT : d_(static_cast(d)) {} +CONSTCD14 inline day& day::operator++() NOEXCEPT {++d_; return *this;} +CONSTCD14 inline day day::operator++(int) NOEXCEPT {auto tmp(*this); ++(*this); return tmp;} +CONSTCD14 inline day& day::operator--() NOEXCEPT {--d_; return *this;} +CONSTCD14 inline day day::operator--(int) NOEXCEPT {auto tmp(*this); --(*this); return tmp;} +CONSTCD14 inline day& day::operator+=(const days& d) NOEXCEPT {*this = *this + d; return *this;} +CONSTCD14 inline day& day::operator-=(const days& d) NOEXCEPT {*this = *this - d; return *this;} +CONSTCD11 inline day::operator unsigned() const NOEXCEPT {return d_;} +CONSTCD11 inline bool day::ok() const NOEXCEPT {return 1 <= d_ && d_ <= 31;} + +CONSTCD11 +inline +bool +operator==(const day& x, const day& y) NOEXCEPT +{ + return static_cast(x) == static_cast(y); +} + +CONSTCD11 +inline +bool +operator!=(const day& x, const day& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const day& x, const day& y) NOEXCEPT +{ + return static_cast(x) < static_cast(y); +} + +CONSTCD11 +inline +bool +operator>(const day& x, const day& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const day& x, const day& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const day& x, const day& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD11 +inline +days +operator-(const day& x, const day& y) NOEXCEPT +{ + return days{static_cast(static_cast(x) + - static_cast(y))}; +} + +CONSTCD11 +inline +day +operator+(const day& x, const days& y) NOEXCEPT +{ + return day{static_cast(x) + static_cast(y.count())}; +} + +CONSTCD11 +inline +day +operator+(const days& x, const day& y) NOEXCEPT +{ + return y + x; +} + +CONSTCD11 +inline +day +operator-(const day& x, const days& y) NOEXCEPT +{ + return x + -y; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const day& d) +{ + date::detail::save_ostream _(os); + os.fill('0'); + os.flags(std::ios::dec | std::ios::right); + os.width(2); + os << static_cast(d); + return os; +} + +// month + +CONSTCD11 inline month::month(unsigned m) NOEXCEPT : m_(static_cast(m)) {} +CONSTCD14 inline month& month::operator++() NOEXCEPT {if (++m_ == 13) m_ = 1; return *this;} +CONSTCD14 inline month month::operator++(int) NOEXCEPT {auto tmp(*this); ++(*this); return tmp;} +CONSTCD14 inline month& month::operator--() NOEXCEPT {if (--m_ == 0) m_ = 12; return *this;} +CONSTCD14 inline month month::operator--(int) NOEXCEPT {auto tmp(*this); --(*this); return tmp;} + +CONSTCD14 +inline +month& +month::operator+=(const months& m) NOEXCEPT +{ + *this = *this + m; + return *this; +} + +CONSTCD14 +inline +month& +month::operator-=(const months& m) NOEXCEPT +{ + *this = *this - m; + return *this; +} + +CONSTCD11 inline month::operator unsigned() const NOEXCEPT {return m_;} +CONSTCD11 inline bool month::ok() const NOEXCEPT {return 1 <= m_ && m_ <= 12;} + +CONSTCD11 +inline +bool +operator==(const month& x, const month& y) NOEXCEPT +{ + return static_cast(x) == static_cast(y); +} + +CONSTCD11 +inline +bool +operator!=(const month& x, const month& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const month& x, const month& y) NOEXCEPT +{ + return static_cast(x) < static_cast(y); +} + +CONSTCD11 +inline +bool +operator>(const month& x, const month& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const month& x, const month& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const month& x, const month& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD14 +inline +months +operator-(const month& x, const month& y) NOEXCEPT +{ + auto const d = static_cast(x) - static_cast(y); + return months(d <= 11 ? d : d + 12); +} + +CONSTCD14 +inline +month +operator+(const month& x, const months& y) NOEXCEPT +{ + auto const mu = static_cast(static_cast(x)) - 1 + y.count(); + auto const yr = (mu >= 0 ? mu : mu-11) / 12; + return month{static_cast(mu - yr * 12 + 1)}; +} + +CONSTCD14 +inline +month +operator+(const months& x, const month& y) NOEXCEPT +{ + return y + x; +} + +CONSTCD14 +inline +month +operator-(const month& x, const months& y) NOEXCEPT +{ + return x + -y; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const month& m) +{ + switch (static_cast(m)) + { + case 1: + os << "Jan"; + break; + case 2: + os << "Feb"; + break; + case 3: + os << "Mar"; + break; + case 4: + os << "Apr"; + break; + case 5: + os << "May"; + break; + case 6: + os << "Jun"; + break; + case 7: + os << "Jul"; + break; + case 8: + os << "Aug"; + break; + case 9: + os << "Sep"; + break; + case 10: + os << "Oct"; + break; + case 11: + os << "Nov"; + break; + case 12: + os << "Dec"; + break; + default: + os << static_cast(m) << " is not a valid month"; + break; + } + return os; +} + +// year + +CONSTCD11 inline year::year(int y) NOEXCEPT : y_(static_cast(y)) {} +CONSTCD14 inline year& year::operator++() NOEXCEPT {++y_; return *this;} +CONSTCD14 inline year year::operator++(int) NOEXCEPT {auto tmp(*this); ++(*this); return tmp;} +CONSTCD14 inline year& year::operator--() NOEXCEPT {--y_; return *this;} +CONSTCD14 inline year year::operator--(int) NOEXCEPT {auto tmp(*this); --(*this); return tmp;} +CONSTCD14 inline year& year::operator+=(const years& y) NOEXCEPT {*this = *this + y; return *this;} +CONSTCD14 inline year& year::operator-=(const years& y) NOEXCEPT {*this = *this - y; return *this;} + +CONSTCD11 +inline +bool +year::is_leap() const NOEXCEPT +{ + return y_ % 4 == 0; +} + +CONSTCD11 inline year::operator int() const NOEXCEPT {return y_;} +CONSTCD11 inline bool year::ok() const NOEXCEPT {return true;} + +CONSTCD11 +inline +year +year::min() NOEXCEPT +{ + return year{std::numeric_limits::min()}; +} + +CONSTCD11 +inline +year +year::max() NOEXCEPT +{ + return year{std::numeric_limits::max()}; +} + +CONSTCD11 +inline +bool +operator==(const year& x, const year& y) NOEXCEPT +{ + return static_cast(x) == static_cast(y); +} + +CONSTCD11 +inline +bool +operator!=(const year& x, const year& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year& x, const year& y) NOEXCEPT +{ + return static_cast(x) < static_cast(y); +} + +CONSTCD11 +inline +bool +operator>(const year& x, const year& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year& x, const year& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year& x, const year& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD11 +inline +years +operator-(const year& x, const year& y) NOEXCEPT +{ + return years{static_cast(x) - static_cast(y)}; +} + +CONSTCD11 +inline +year +operator+(const year& x, const years& y) NOEXCEPT +{ + return year{static_cast(x) + y.count()}; +} + +CONSTCD11 +inline +year +operator+(const years& x, const year& y) NOEXCEPT +{ + return y + x; +} + +CONSTCD11 +inline +year +operator-(const year& x, const years& y) NOEXCEPT +{ + return year{static_cast(x) - y.count()}; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year& y) +{ + date::detail::save_ostream _(os); + os.fill('0'); + os.flags(std::ios::dec | std::ios::internal); + os.width(4 + (y < year{0})); + os << static_cast(y); + return os; +} + +// weekday + +CONSTCD11 +inline +unsigned char +weekday::weekday_from_days(int z) NOEXCEPT +{ + return static_cast(static_cast( + z >= -4 ? (z+4) % 7 : (z+5) % 7 + 6)); +} + +CONSTCD11 +inline +weekday::weekday(unsigned wd) NOEXCEPT + : wd_(static_cast(wd)) + {} + +CONSTCD11 +inline +weekday::weekday(const sys_days& dp) NOEXCEPT + : wd_(weekday_from_days(dp.time_since_epoch().count())) + {} + +CONSTCD11 +inline +weekday::weekday(const local_days& dp) NOEXCEPT + : wd_(weekday_from_days(dp.time_since_epoch().count())) + {} + +CONSTCD14 inline weekday& weekday::operator++() NOEXCEPT {if (++wd_ == 7) wd_ = 0; return *this;} +CONSTCD14 inline weekday weekday::operator++(int) NOEXCEPT {auto tmp(*this); ++(*this); return tmp;} +CONSTCD14 inline weekday& weekday::operator--() NOEXCEPT {if (wd_-- == 0) wd_ = 6; return *this;} +CONSTCD14 inline weekday weekday::operator--(int) NOEXCEPT {auto tmp(*this); --(*this); return tmp;} + +CONSTCD14 +inline +weekday& +weekday::operator+=(const days& d) NOEXCEPT +{ + *this = *this + d; + return *this; +} + +CONSTCD14 +inline +weekday& +weekday::operator-=(const days& d) NOEXCEPT +{ + *this = *this - d; + return *this; +} + +CONSTCD11 +inline +weekday::operator unsigned() const NOEXCEPT +{ + return static_cast(wd_); +} + +CONSTCD11 inline bool weekday::ok() const NOEXCEPT {return wd_ <= 6;} + +CONSTCD11 +inline +bool +operator==(const weekday& x, const weekday& y) NOEXCEPT +{ + return static_cast(x) == static_cast(y); +} + +CONSTCD11 +inline +bool +operator!=(const weekday& x, const weekday& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD14 +inline +days +operator-(const weekday& x, const weekday& y) NOEXCEPT +{ + auto const diff = static_cast(x) - static_cast(y); + return days{diff <= 6 ? diff : diff + 7}; +} + +CONSTCD14 +inline +weekday +operator+(const weekday& x, const days& y) NOEXCEPT +{ + auto const wdu = static_cast(static_cast(x)) + y.count(); + auto const wk = (wdu >= 0 ? wdu : wdu-6) / 7; + return weekday{static_cast(wdu - wk * 7)}; +} + +CONSTCD14 +inline +weekday +operator+(const days& x, const weekday& y) NOEXCEPT +{ + return y + x; +} + +CONSTCD14 +inline +weekday +operator-(const weekday& x, const days& y) NOEXCEPT +{ + return x + -y; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday& wd) +{ + switch (static_cast(wd)) + { + case 0: + os << "Sun"; + break; + case 1: + os << "Mon"; + break; + case 2: + os << "Tue"; + break; + case 3: + os << "Wed"; + break; + case 4: + os << "Thu"; + break; + case 5: + os << "Fri"; + break; + case 6: + os << "Sat"; + break; + default: + os << static_cast(wd) << " is not a valid weekday"; + break; + } + return os; +} + +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) +inline namespace literals +{ + +CONSTCD11 +inline +julian::day +operator "" _d(unsigned long long d) NOEXCEPT +{ + return julian::day{static_cast(d)}; +} + +CONSTCD11 +inline +julian::year +operator "" _y(unsigned long long y) NOEXCEPT +{ + return julian::year(static_cast(y)); +} +#endif // !defined(_MSC_VER) || (_MSC_VER >= 1900) + +CONSTDATA julian::last_spec last{}; + +CONSTDATA julian::month jan{1}; +CONSTDATA julian::month feb{2}; +CONSTDATA julian::month mar{3}; +CONSTDATA julian::month apr{4}; +CONSTDATA julian::month may{5}; +CONSTDATA julian::month jun{6}; +CONSTDATA julian::month jul{7}; +CONSTDATA julian::month aug{8}; +CONSTDATA julian::month sep{9}; +CONSTDATA julian::month oct{10}; +CONSTDATA julian::month nov{11}; +CONSTDATA julian::month dec{12}; + +CONSTDATA julian::weekday sun{0u}; +CONSTDATA julian::weekday mon{1u}; +CONSTDATA julian::weekday tue{2u}; +CONSTDATA julian::weekday wed{3u}; +CONSTDATA julian::weekday thu{4u}; +CONSTDATA julian::weekday fri{5u}; +CONSTDATA julian::weekday sat{6u}; + +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) +} // inline namespace literals +#endif + +// weekday_indexed + +CONSTCD11 +inline +weekday +weekday_indexed::weekday() const NOEXCEPT +{ + return julian::weekday{static_cast(wd_)}; +} + +CONSTCD11 inline unsigned weekday_indexed::index() const NOEXCEPT {return index_;} + +CONSTCD11 +inline +bool +weekday_indexed::ok() const NOEXCEPT +{ + return weekday().ok() && 1 <= index_ && index_ <= 5; +} + +CONSTCD11 +inline +weekday_indexed::weekday_indexed(const julian::weekday& wd, unsigned index) NOEXCEPT + : wd_(static_cast(static_cast(wd))) + , index_(static_cast(index)) + {} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday_indexed& wdi) +{ + return os << wdi.weekday() << '[' << wdi.index() << ']'; +} + +CONSTCD11 +inline +weekday_indexed +weekday::operator[](unsigned index) const NOEXCEPT +{ + return {*this, index}; +} + +CONSTCD11 +inline +bool +operator==(const weekday_indexed& x, const weekday_indexed& y) NOEXCEPT +{ + return x.weekday() == y.weekday() && x.index() == y.index(); +} + +CONSTCD11 +inline +bool +operator!=(const weekday_indexed& x, const weekday_indexed& y) NOEXCEPT +{ + return !(x == y); +} + +// weekday_last + +CONSTCD11 inline julian::weekday weekday_last::weekday() const NOEXCEPT {return wd_;} +CONSTCD11 inline bool weekday_last::ok() const NOEXCEPT {return wd_.ok();} +CONSTCD11 inline weekday_last::weekday_last(const julian::weekday& wd) NOEXCEPT : wd_(wd) {} + +CONSTCD11 +inline +bool +operator==(const weekday_last& x, const weekday_last& y) NOEXCEPT +{ + return x.weekday() == y.weekday(); +} + +CONSTCD11 +inline +bool +operator!=(const weekday_last& x, const weekday_last& y) NOEXCEPT +{ + return !(x == y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday_last& wdl) +{ + return os << wdl.weekday() << "[last]"; +} + +CONSTCD11 +inline +weekday_last +weekday::operator[](last_spec) const NOEXCEPT +{ + return weekday_last{*this}; +} + +// year_month + +CONSTCD11 +inline +year_month::year_month(const julian::year& y, const julian::month& m) NOEXCEPT + : y_(y) + , m_(m) + {} + +CONSTCD11 inline year year_month::year() const NOEXCEPT {return y_;} +CONSTCD11 inline month year_month::month() const NOEXCEPT {return m_;} +CONSTCD11 inline bool year_month::ok() const NOEXCEPT {return y_.ok() && m_.ok();} + +CONSTCD14 +inline +year_month& +year_month::operator+=(const months& dm) NOEXCEPT +{ + *this = *this + dm; + return *this; +} + +CONSTCD14 +inline +year_month& +year_month::operator-=(const months& dm) NOEXCEPT +{ + *this = *this - dm; + return *this; +} + +CONSTCD14 +inline +year_month& +year_month::operator+=(const years& dy) NOEXCEPT +{ + *this = *this + dy; + return *this; +} + +CONSTCD14 +inline +year_month& +year_month::operator-=(const years& dy) NOEXCEPT +{ + *this = *this - dy; + return *this; +} + +CONSTCD11 +inline +bool +operator==(const year_month& x, const year_month& y) NOEXCEPT +{ + return x.year() == y.year() && x.month() == y.month(); +} + +CONSTCD11 +inline +bool +operator!=(const year_month& x, const year_month& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year_month& x, const year_month& y) NOEXCEPT +{ + return x.year() < y.year() ? true + : (x.year() > y.year() ? false + : (x.month() < y.month())); +} + +CONSTCD11 +inline +bool +operator>(const year_month& x, const year_month& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year_month& x, const year_month& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year_month& x, const year_month& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD14 +inline +year_month +operator+(const year_month& ym, const months& dm) NOEXCEPT +{ + auto dmi = static_cast(static_cast(ym.month())) - 1 + dm.count(); + auto dy = (dmi >= 0 ? dmi : dmi-11) / 12; + dmi = dmi - dy * 12 + 1; + return (ym.year() + years(dy)) / month(static_cast(dmi)); +} + +CONSTCD14 +inline +year_month +operator+(const months& dm, const year_month& ym) NOEXCEPT +{ + return ym + dm; +} + +CONSTCD14 +inline +year_month +operator-(const year_month& ym, const months& dm) NOEXCEPT +{ + return ym + -dm; +} + +CONSTCD11 +inline +months +operator-(const year_month& x, const year_month& y) NOEXCEPT +{ + return (x.year() - y.year()) + + months(static_cast(x.month()) - static_cast(y.month())); +} + +CONSTCD11 +inline +year_month +operator+(const year_month& ym, const years& dy) NOEXCEPT +{ + return (ym.year() + dy) / ym.month(); +} + +CONSTCD11 +inline +year_month +operator+(const years& dy, const year_month& ym) NOEXCEPT +{ + return ym + dy; +} + +CONSTCD11 +inline +year_month +operator-(const year_month& ym, const years& dy) NOEXCEPT +{ + return ym + -dy; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month& ym) +{ + return os << ym.year() << '/' << ym.month(); +} + +// month_day + +CONSTCD11 +inline +month_day::month_day(const julian::month& m, const julian::day& d) NOEXCEPT + : m_(m) + , d_(d) + {} + +CONSTCD11 inline julian::month month_day::month() const NOEXCEPT {return m_;} +CONSTCD11 inline julian::day month_day::day() const NOEXCEPT {return d_;} + +CONSTCD14 +inline +bool +month_day::ok() const NOEXCEPT +{ + CONSTDATA julian::day d[] = { + julian::day(31), julian::day(29), julian::day(31), julian::day(30), + julian::day(31), julian::day(30), julian::day(31), julian::day(31), + julian::day(30), julian::day(31), julian::day(30), julian::day(31) + }; + return m_.ok() && julian::day(1) <= d_ && d_ <= d[static_cast(m_)-1]; +} + +CONSTCD11 +inline +bool +operator==(const month_day& x, const month_day& y) NOEXCEPT +{ + return x.month() == y.month() && x.day() == y.day(); +} + +CONSTCD11 +inline +bool +operator!=(const month_day& x, const month_day& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const month_day& x, const month_day& y) NOEXCEPT +{ + return x.month() < y.month() ? true + : (x.month() > y.month() ? false + : (x.day() < y.day())); +} + +CONSTCD11 +inline +bool +operator>(const month_day& x, const month_day& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const month_day& x, const month_day& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const month_day& x, const month_day& y) NOEXCEPT +{ + return !(x < y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_day& md) +{ + return os << md.month() << '/' << md.day(); +} + +// month_day_last + +CONSTCD11 inline month month_day_last::month() const NOEXCEPT {return m_;} +CONSTCD11 inline bool month_day_last::ok() const NOEXCEPT {return m_.ok();} +CONSTCD11 inline month_day_last::month_day_last(const julian::month& m) NOEXCEPT : m_(m) {} + +CONSTCD11 +inline +bool +operator==(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return x.month() == y.month(); +} + +CONSTCD11 +inline +bool +operator!=(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return x.month() < y.month(); +} + +CONSTCD11 +inline +bool +operator>(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return !(x < y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_day_last& mdl) +{ + return os << mdl.month() << "/last"; +} + +// month_weekday + +CONSTCD11 +inline +month_weekday::month_weekday(const julian::month& m, + const julian::weekday_indexed& wdi) NOEXCEPT + : m_(m) + , wdi_(wdi) + {} + +CONSTCD11 inline month month_weekday::month() const NOEXCEPT {return m_;} + +CONSTCD11 +inline +weekday_indexed +month_weekday::weekday_indexed() const NOEXCEPT +{ + return wdi_; +} + +CONSTCD11 +inline +bool +month_weekday::ok() const NOEXCEPT +{ + return m_.ok() && wdi_.ok(); +} + +CONSTCD11 +inline +bool +operator==(const month_weekday& x, const month_weekday& y) NOEXCEPT +{ + return x.month() == y.month() && x.weekday_indexed() == y.weekday_indexed(); +} + +CONSTCD11 +inline +bool +operator!=(const month_weekday& x, const month_weekday& y) NOEXCEPT +{ + return !(x == y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_weekday& mwd) +{ + return os << mwd.month() << '/' << mwd.weekday_indexed(); +} + +// month_weekday_last + +CONSTCD11 +inline +month_weekday_last::month_weekday_last(const julian::month& m, + const julian::weekday_last& wdl) NOEXCEPT + : m_(m) + , wdl_(wdl) + {} + +CONSTCD11 inline month month_weekday_last::month() const NOEXCEPT {return m_;} + +CONSTCD11 +inline +weekday_last +month_weekday_last::weekday_last() const NOEXCEPT +{ + return wdl_; +} + +CONSTCD11 +inline +bool +month_weekday_last::ok() const NOEXCEPT +{ + return m_.ok() && wdl_.ok(); +} + +CONSTCD11 +inline +bool +operator==(const month_weekday_last& x, const month_weekday_last& y) NOEXCEPT +{ + return x.month() == y.month() && x.weekday_last() == y.weekday_last(); +} + +CONSTCD11 +inline +bool +operator!=(const month_weekday_last& x, const month_weekday_last& y) NOEXCEPT +{ + return !(x == y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_weekday_last& mwdl) +{ + return os << mwdl.month() << '/' << mwdl.weekday_last(); +} + +// year_month_day_last + +CONSTCD11 +inline +year_month_day_last::year_month_day_last(const julian::year& y, + const julian::month_day_last& mdl) NOEXCEPT + : y_(y) + , mdl_(mdl) + {} + +CONSTCD14 +inline +year_month_day_last& +year_month_day_last::operator+=(const months& m) NOEXCEPT +{ + *this = *this + m; + return *this; +} + +CONSTCD14 +inline +year_month_day_last& +year_month_day_last::operator-=(const months& m) NOEXCEPT +{ + *this = *this - m; + return *this; +} + +CONSTCD14 +inline +year_month_day_last& +year_month_day_last::operator+=(const years& y) NOEXCEPT +{ + *this = *this + y; + return *this; +} + +CONSTCD14 +inline +year_month_day_last& +year_month_day_last::operator-=(const years& y) NOEXCEPT +{ + *this = *this - y; + return *this; +} + +CONSTCD11 inline year year_month_day_last::year() const NOEXCEPT {return y_;} +CONSTCD11 inline month year_month_day_last::month() const NOEXCEPT {return mdl_.month();} + +CONSTCD11 +inline +month_day_last +year_month_day_last::month_day_last() const NOEXCEPT +{ + return mdl_; +} + +CONSTCD14 +inline +day +year_month_day_last::day() const NOEXCEPT +{ + CONSTDATA julian::day d[] = { + julian::day(31), julian::day(28), julian::day(31), julian::day(30), + julian::day(31), julian::day(30), julian::day(31), julian::day(31), + julian::day(30), julian::day(31), julian::day(30), julian::day(31) + }; + return month() != feb || !y_.is_leap() ? d[static_cast(month())-1] : julian::day(29); +} + +CONSTCD14 +inline +year_month_day_last::operator sys_days() const NOEXCEPT +{ + return sys_days(year()/month()/day()); +} + +CONSTCD14 +inline +year_month_day_last::operator local_days() const NOEXCEPT +{ + return local_days(year()/month()/day()); +} + +CONSTCD11 +inline +bool +year_month_day_last::ok() const NOEXCEPT +{ + return y_.ok() && mdl_.ok(); +} + +CONSTCD11 +inline +bool +operator==(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return x.year() == y.year() && x.month_day_last() == y.month_day_last(); +} + +CONSTCD11 +inline +bool +operator!=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return x.year() < y.year() ? true + : (x.year() > y.year() ? false + : (x.month_day_last() < y.month_day_last())); +} + +CONSTCD11 +inline +bool +operator>(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return !(x < y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_day_last& ymdl) +{ + return os << ymdl.year() << '/' << ymdl.month_day_last(); +} + +CONSTCD14 +inline +year_month_day_last +operator+(const year_month_day_last& ymdl, const months& dm) NOEXCEPT +{ + return (ymdl.year() / ymdl.month() + dm) / last; +} + +CONSTCD14 +inline +year_month_day_last +operator+(const months& dm, const year_month_day_last& ymdl) NOEXCEPT +{ + return ymdl + dm; +} + +CONSTCD14 +inline +year_month_day_last +operator-(const year_month_day_last& ymdl, const months& dm) NOEXCEPT +{ + return ymdl + (-dm); +} + +CONSTCD11 +inline +year_month_day_last +operator+(const year_month_day_last& ymdl, const years& dy) NOEXCEPT +{ + return {ymdl.year()+dy, ymdl.month_day_last()}; +} + +CONSTCD11 +inline +year_month_day_last +operator+(const years& dy, const year_month_day_last& ymdl) NOEXCEPT +{ + return ymdl + dy; +} + +CONSTCD11 +inline +year_month_day_last +operator-(const year_month_day_last& ymdl, const years& dy) NOEXCEPT +{ + return ymdl + (-dy); +} + +// year_month_day + +CONSTCD11 +inline +year_month_day::year_month_day(const julian::year& y, const julian::month& m, + const julian::day& d) NOEXCEPT + : y_(y) + , m_(m) + , d_(d) + {} + +CONSTCD14 +inline +year_month_day::year_month_day(const year_month_day_last& ymdl) NOEXCEPT + : y_(ymdl.year()) + , m_(ymdl.month()) + , d_(ymdl.day()) + {} + +CONSTCD14 +inline +year_month_day::year_month_day(sys_days dp) NOEXCEPT + : year_month_day(from_days(dp.time_since_epoch())) + {} + +CONSTCD14 +inline +year_month_day::year_month_day(local_days dp) NOEXCEPT + : year_month_day(from_days(dp.time_since_epoch())) + {} + +CONSTCD11 inline year year_month_day::year() const NOEXCEPT {return y_;} +CONSTCD11 inline month year_month_day::month() const NOEXCEPT {return m_;} +CONSTCD11 inline day year_month_day::day() const NOEXCEPT {return d_;} + +CONSTCD14 +inline +year_month_day& +year_month_day::operator+=(const months& m) NOEXCEPT +{ + *this = *this + m; + return *this; +} + +CONSTCD14 +inline +year_month_day& +year_month_day::operator-=(const months& m) NOEXCEPT +{ + *this = *this - m; + return *this; +} + +CONSTCD14 +inline +year_month_day& +year_month_day::operator+=(const years& y) NOEXCEPT +{ + *this = *this + y; + return *this; +} + +CONSTCD14 +inline +year_month_day& +year_month_day::operator-=(const years& y) NOEXCEPT +{ + *this = *this - y; + return *this; +} + +CONSTCD14 +inline +days +year_month_day::to_days() const NOEXCEPT +{ + static_assert(std::numeric_limits::digits >= 18, + "This algorithm has not been ported to a 16 bit unsigned integer"); + static_assert(std::numeric_limits::digits >= 20, + "This algorithm has not been ported to a 16 bit signed integer"); + auto const y = static_cast(y_) - (m_ <= feb); + auto const m = static_cast(m_); + auto const d = static_cast(d_); + auto const era = (y >= 0 ? y : y-3) / 4; + auto const yoe = static_cast(y - era * 4); // [0, 3] + auto const doy = (153*(m > 2 ? m-3 : m+9) + 2)/5 + d-1; // [0, 365] + auto const doe = yoe * 365 + doy; // [0, 1460] + return days{era * 1461 + static_cast(doe) - 719470}; +} + +CONSTCD14 +inline +year_month_day::operator sys_days() const NOEXCEPT +{ + return sys_days{to_days()}; +} + +CONSTCD14 +inline +year_month_day::operator local_days() const NOEXCEPT +{ + return local_days{to_days()}; +} + +CONSTCD14 +inline +bool +year_month_day::ok() const NOEXCEPT +{ + if (!(y_.ok() && m_.ok())) + return false; + return julian::day(1) <= d_ && d_ <= (y_/m_/last).day(); +} + +CONSTCD11 +inline +bool +operator==(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return x.year() == y.year() && x.month() == y.month() && x.day() == y.day(); +} + +CONSTCD11 +inline +bool +operator!=(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return x.year() < y.year() ? true + : (x.year() > y.year() ? false + : (x.month() < y.month() ? true + : (x.month() > y.month() ? false + : (x.day() < y.day())))); +} + +CONSTCD11 +inline +bool +operator>(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return !(x < y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_day& ymd) +{ + date::detail::save_ostream _(os); + os.fill('0'); + os.flags(std::ios::dec | std::ios::right); + os << ymd.year() << '-'; + os.width(2); + os << static_cast(ymd.month()) << '-'; + os << ymd.day(); + return os; +} + +CONSTCD14 +inline +year_month_day +year_month_day::from_days(days dp) NOEXCEPT +{ + static_assert(std::numeric_limits::digits >= 18, + "This algorithm has not been ported to a 16 bit unsigned integer"); + static_assert(std::numeric_limits::digits >= 20, + "This algorithm has not been ported to a 16 bit signed integer"); + auto const z = dp.count() + 719470; + auto const era = (z >= 0 ? z : z - 1460) / 1461; + auto const doe = static_cast(z - era * 1461); // [0, 1460] + auto const yoe = (doe - doe/1460) / 365; // [0, 3] + auto const y = static_cast(yoe) + era * 4; + auto const doy = doe - 365*yoe; // [0, 365] + auto const mp = (5*doy + 2)/153; // [0, 11] + auto const d = doy - (153*mp+2)/5 + 1; // [1, 31] + auto const m = mp < 10 ? mp+3 : mp-9; // [1, 12] + return year_month_day{julian::year{y + (m <= 2)}, julian::month(m), julian::day(d)}; +} + +CONSTCD14 +inline +year_month_day +operator+(const year_month_day& ymd, const months& dm) NOEXCEPT +{ + return (ymd.year() / ymd.month() + dm) / ymd.day(); +} + +CONSTCD14 +inline +year_month_day +operator+(const months& dm, const year_month_day& ymd) NOEXCEPT +{ + return ymd + dm; +} + +CONSTCD14 +inline +year_month_day +operator-(const year_month_day& ymd, const months& dm) NOEXCEPT +{ + return ymd + (-dm); +} + +CONSTCD11 +inline +year_month_day +operator+(const year_month_day& ymd, const years& dy) NOEXCEPT +{ + return (ymd.year() + dy) / ymd.month() / ymd.day(); +} + +CONSTCD11 +inline +year_month_day +operator+(const years& dy, const year_month_day& ymd) NOEXCEPT +{ + return ymd + dy; +} + +CONSTCD11 +inline +year_month_day +operator-(const year_month_day& ymd, const years& dy) NOEXCEPT +{ + return ymd + (-dy); +} + +// year_month_weekday + +CONSTCD11 +inline +year_month_weekday::year_month_weekday(const julian::year& y, const julian::month& m, + const julian::weekday_indexed& wdi) + NOEXCEPT + : y_(y) + , m_(m) + , wdi_(wdi) + {} + +CONSTCD14 +inline +year_month_weekday::year_month_weekday(const sys_days& dp) NOEXCEPT + : year_month_weekday(from_days(dp.time_since_epoch())) + {} + +CONSTCD14 +inline +year_month_weekday::year_month_weekday(const local_days& dp) NOEXCEPT + : year_month_weekday(from_days(dp.time_since_epoch())) + {} + +CONSTCD14 +inline +year_month_weekday& +year_month_weekday::operator+=(const months& m) NOEXCEPT +{ + *this = *this + m; + return *this; +} + +CONSTCD14 +inline +year_month_weekday& +year_month_weekday::operator-=(const months& m) NOEXCEPT +{ + *this = *this - m; + return *this; +} + +CONSTCD14 +inline +year_month_weekday& +year_month_weekday::operator+=(const years& y) NOEXCEPT +{ + *this = *this + y; + return *this; +} + +CONSTCD14 +inline +year_month_weekday& +year_month_weekday::operator-=(const years& y) NOEXCEPT +{ + *this = *this - y; + return *this; +} + +CONSTCD11 inline year year_month_weekday::year() const NOEXCEPT {return y_;} +CONSTCD11 inline month year_month_weekday::month() const NOEXCEPT {return m_;} + +CONSTCD11 +inline +weekday +year_month_weekday::weekday() const NOEXCEPT +{ + return wdi_.weekday(); +} + +CONSTCD11 +inline +unsigned +year_month_weekday::index() const NOEXCEPT +{ + return wdi_.index(); +} + +CONSTCD11 +inline +weekday_indexed +year_month_weekday::weekday_indexed() const NOEXCEPT +{ + return wdi_; +} + +CONSTCD14 +inline +year_month_weekday::operator sys_days() const NOEXCEPT +{ + return sys_days{to_days()}; +} + +CONSTCD14 +inline +year_month_weekday::operator local_days() const NOEXCEPT +{ + return local_days{to_days()}; +} + +CONSTCD14 +inline +bool +year_month_weekday::ok() const NOEXCEPT +{ + if (!y_.ok() || !m_.ok() || !wdi_.weekday().ok() || wdi_.index() < 1) + return false; + if (wdi_.index() <= 4) + return true; + auto d2 = wdi_.weekday() - julian::weekday(y_/m_/1) + days((wdi_.index()-1)*7 + 1); + return static_cast(d2.count()) <= static_cast((y_/m_/last).day()); +} + +CONSTCD14 +inline +year_month_weekday +year_month_weekday::from_days(days d) NOEXCEPT +{ + sys_days dp{d}; + auto const wd = julian::weekday(dp); + auto const ymd = year_month_day(dp); + return {ymd.year(), ymd.month(), wd[(static_cast(ymd.day())-1)/7+1]}; +} + +CONSTCD14 +inline +days +year_month_weekday::to_days() const NOEXCEPT +{ + auto d = sys_days(y_/m_/1); + return (d + (wdi_.weekday() - julian::weekday(d) + days{(wdi_.index()-1)*7}) + ).time_since_epoch(); +} + +CONSTCD11 +inline +bool +operator==(const year_month_weekday& x, const year_month_weekday& y) NOEXCEPT +{ + return x.year() == y.year() && x.month() == y.month() && + x.weekday_indexed() == y.weekday_indexed(); +} + +CONSTCD11 +inline +bool +operator!=(const year_month_weekday& x, const year_month_weekday& y) NOEXCEPT +{ + return !(x == y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_weekday& ymwdi) +{ + return os << ymwdi.year() << '/' << ymwdi.month() + << '/' << ymwdi.weekday_indexed(); +} + +CONSTCD14 +inline +year_month_weekday +operator+(const year_month_weekday& ymwd, const months& dm) NOEXCEPT +{ + return (ymwd.year() / ymwd.month() + dm) / ymwd.weekday_indexed(); +} + +CONSTCD14 +inline +year_month_weekday +operator+(const months& dm, const year_month_weekday& ymwd) NOEXCEPT +{ + return ymwd + dm; +} + +CONSTCD14 +inline +year_month_weekday +operator-(const year_month_weekday& ymwd, const months& dm) NOEXCEPT +{ + return ymwd + (-dm); +} + +CONSTCD11 +inline +year_month_weekday +operator+(const year_month_weekday& ymwd, const years& dy) NOEXCEPT +{ + return {ymwd.year()+dy, ymwd.month(), ymwd.weekday_indexed()}; +} + +CONSTCD11 +inline +year_month_weekday +operator+(const years& dy, const year_month_weekday& ymwd) NOEXCEPT +{ + return ymwd + dy; +} + +CONSTCD11 +inline +year_month_weekday +operator-(const year_month_weekday& ymwd, const years& dy) NOEXCEPT +{ + return ymwd + (-dy); +} + +// year_month_weekday_last + +CONSTCD11 +inline +year_month_weekday_last::year_month_weekday_last(const julian::year& y, + const julian::month& m, + const julian::weekday_last& wdl) NOEXCEPT + : y_(y) + , m_(m) + , wdl_(wdl) + {} + +CONSTCD14 +inline +year_month_weekday_last& +year_month_weekday_last::operator+=(const months& m) NOEXCEPT +{ + *this = *this + m; + return *this; +} + +CONSTCD14 +inline +year_month_weekday_last& +year_month_weekday_last::operator-=(const months& m) NOEXCEPT +{ + *this = *this - m; + return *this; +} + +CONSTCD14 +inline +year_month_weekday_last& +year_month_weekday_last::operator+=(const years& y) NOEXCEPT +{ + *this = *this + y; + return *this; +} + +CONSTCD14 +inline +year_month_weekday_last& +year_month_weekday_last::operator-=(const years& y) NOEXCEPT +{ + *this = *this - y; + return *this; +} + +CONSTCD11 inline year year_month_weekday_last::year() const NOEXCEPT {return y_;} +CONSTCD11 inline month year_month_weekday_last::month() const NOEXCEPT {return m_;} + +CONSTCD11 +inline +weekday +year_month_weekday_last::weekday() const NOEXCEPT +{ + return wdl_.weekday(); +} + +CONSTCD11 +inline +weekday_last +year_month_weekday_last::weekday_last() const NOEXCEPT +{ + return wdl_; +} + +CONSTCD14 +inline +year_month_weekday_last::operator sys_days() const NOEXCEPT +{ + return sys_days{to_days()}; +} + +CONSTCD14 +inline +year_month_weekday_last::operator local_days() const NOEXCEPT +{ + return local_days{to_days()}; +} + +CONSTCD11 +inline +bool +year_month_weekday_last::ok() const NOEXCEPT +{ + return y_.ok() && m_.ok() && wdl_.ok(); +} + +CONSTCD14 +inline +days +year_month_weekday_last::to_days() const NOEXCEPT +{ + auto const d = sys_days(y_/m_/last); + return (d - (julian::weekday{d} - wdl_.weekday())).time_since_epoch(); +} + +CONSTCD11 +inline +bool +operator==(const year_month_weekday_last& x, const year_month_weekday_last& y) NOEXCEPT +{ + return x.year() == y.year() && x.month() == y.month() && + x.weekday_last() == y.weekday_last(); +} + +CONSTCD11 +inline +bool +operator!=(const year_month_weekday_last& x, const year_month_weekday_last& y) NOEXCEPT +{ + return !(x == y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_weekday_last& ymwdl) +{ + return os << ymwdl.year() << '/' << ymwdl.month() << '/' << ymwdl.weekday_last(); +} + +CONSTCD14 +inline +year_month_weekday_last +operator+(const year_month_weekday_last& ymwdl, const months& dm) NOEXCEPT +{ + return (ymwdl.year() / ymwdl.month() + dm) / ymwdl.weekday_last(); +} + +CONSTCD14 +inline +year_month_weekday_last +operator+(const months& dm, const year_month_weekday_last& ymwdl) NOEXCEPT +{ + return ymwdl + dm; +} + +CONSTCD14 +inline +year_month_weekday_last +operator-(const year_month_weekday_last& ymwdl, const months& dm) NOEXCEPT +{ + return ymwdl + (-dm); +} + +CONSTCD11 +inline +year_month_weekday_last +operator+(const year_month_weekday_last& ymwdl, const years& dy) NOEXCEPT +{ + return {ymwdl.year()+dy, ymwdl.month(), ymwdl.weekday_last()}; +} + +CONSTCD11 +inline +year_month_weekday_last +operator+(const years& dy, const year_month_weekday_last& ymwdl) NOEXCEPT +{ + return ymwdl + dy; +} + +CONSTCD11 +inline +year_month_weekday_last +operator-(const year_month_weekday_last& ymwdl, const years& dy) NOEXCEPT +{ + return ymwdl + (-dy); +} + +// year_month from operator/() + +CONSTCD11 +inline +year_month +operator/(const year& y, const month& m) NOEXCEPT +{ + return {y, m}; +} + +CONSTCD11 +inline +year_month +operator/(const year& y, int m) NOEXCEPT +{ + return y / month(static_cast(m)); +} + +// month_day from operator/() + +CONSTCD11 +inline +month_day +operator/(const month& m, const day& d) NOEXCEPT +{ + return {m, d}; +} + +CONSTCD11 +inline +month_day +operator/(const day& d, const month& m) NOEXCEPT +{ + return m / d; +} + +CONSTCD11 +inline +month_day +operator/(const month& m, int d) NOEXCEPT +{ + return m / day(static_cast(d)); +} + +CONSTCD11 +inline +month_day +operator/(int m, const day& d) NOEXCEPT +{ + return month(static_cast(m)) / d; +} + +CONSTCD11 inline month_day operator/(const day& d, int m) NOEXCEPT {return m / d;} + +// month_day_last from operator/() + +CONSTCD11 +inline +month_day_last +operator/(const month& m, last_spec) NOEXCEPT +{ + return month_day_last{m}; +} + +CONSTCD11 +inline +month_day_last +operator/(last_spec, const month& m) NOEXCEPT +{ + return m/last; +} + +CONSTCD11 +inline +month_day_last +operator/(int m, last_spec) NOEXCEPT +{ + return month(static_cast(m))/last; +} + +CONSTCD11 +inline +month_day_last +operator/(last_spec, int m) NOEXCEPT +{ + return m/last; +} + +// month_weekday from operator/() + +CONSTCD11 +inline +month_weekday +operator/(const month& m, const weekday_indexed& wdi) NOEXCEPT +{ + return {m, wdi}; +} + +CONSTCD11 +inline +month_weekday +operator/(const weekday_indexed& wdi, const month& m) NOEXCEPT +{ + return m / wdi; +} + +CONSTCD11 +inline +month_weekday +operator/(int m, const weekday_indexed& wdi) NOEXCEPT +{ + return month(static_cast(m)) / wdi; +} + +CONSTCD11 +inline +month_weekday +operator/(const weekday_indexed& wdi, int m) NOEXCEPT +{ + return m / wdi; +} + +// month_weekday_last from operator/() + +CONSTCD11 +inline +month_weekday_last +operator/(const month& m, const weekday_last& wdl) NOEXCEPT +{ + return {m, wdl}; +} + +CONSTCD11 +inline +month_weekday_last +operator/(const weekday_last& wdl, const month& m) NOEXCEPT +{ + return m / wdl; +} + +CONSTCD11 +inline +month_weekday_last +operator/(int m, const weekday_last& wdl) NOEXCEPT +{ + return month(static_cast(m)) / wdl; +} + +CONSTCD11 +inline +month_weekday_last +operator/(const weekday_last& wdl, int m) NOEXCEPT +{ + return m / wdl; +} + +// year_month_day from operator/() + +CONSTCD11 +inline +year_month_day +operator/(const year_month& ym, const day& d) NOEXCEPT +{ + return {ym.year(), ym.month(), d}; +} + +CONSTCD11 +inline +year_month_day +operator/(const year_month& ym, int d) NOEXCEPT +{ + return ym / day(static_cast(d)); +} + +CONSTCD11 +inline +year_month_day +operator/(const year& y, const month_day& md) NOEXCEPT +{ + return y / md.month() / md.day(); +} + +CONSTCD11 +inline +year_month_day +operator/(int y, const month_day& md) NOEXCEPT +{ + return year(y) / md; +} + +CONSTCD11 +inline +year_month_day +operator/(const month_day& md, const year& y) NOEXCEPT +{ + return y / md; +} + +CONSTCD11 +inline +year_month_day +operator/(const month_day& md, int y) NOEXCEPT +{ + return year(y) / md; +} + +// year_month_day_last from operator/() + +CONSTCD11 +inline +year_month_day_last +operator/(const year_month& ym, last_spec) NOEXCEPT +{ + return {ym.year(), month_day_last{ym.month()}}; +} + +CONSTCD11 +inline +year_month_day_last +operator/(const year& y, const month_day_last& mdl) NOEXCEPT +{ + return {y, mdl}; +} + +CONSTCD11 +inline +year_month_day_last +operator/(int y, const month_day_last& mdl) NOEXCEPT +{ + return year(y) / mdl; +} + +CONSTCD11 +inline +year_month_day_last +operator/(const month_day_last& mdl, const year& y) NOEXCEPT +{ + return y / mdl; +} + +CONSTCD11 +inline +year_month_day_last +operator/(const month_day_last& mdl, int y) NOEXCEPT +{ + return year(y) / mdl; +} + +// year_month_weekday from operator/() + +CONSTCD11 +inline +year_month_weekday +operator/(const year_month& ym, const weekday_indexed& wdi) NOEXCEPT +{ + return {ym.year(), ym.month(), wdi}; +} + +CONSTCD11 +inline +year_month_weekday +operator/(const year& y, const month_weekday& mwd) NOEXCEPT +{ + return {y, mwd.month(), mwd.weekday_indexed()}; +} + +CONSTCD11 +inline +year_month_weekday +operator/(int y, const month_weekday& mwd) NOEXCEPT +{ + return year(y) / mwd; +} + +CONSTCD11 +inline +year_month_weekday +operator/(const month_weekday& mwd, const year& y) NOEXCEPT +{ + return y / mwd; +} + +CONSTCD11 +inline +year_month_weekday +operator/(const month_weekday& mwd, int y) NOEXCEPT +{ + return year(y) / mwd; +} + +// year_month_weekday_last from operator/() + +CONSTCD11 +inline +year_month_weekday_last +operator/(const year_month& ym, const weekday_last& wdl) NOEXCEPT +{ + return {ym.year(), ym.month(), wdl}; +} + +CONSTCD11 +inline +year_month_weekday_last +operator/(const year& y, const month_weekday_last& mwdl) NOEXCEPT +{ + return {y, mwdl.month(), mwdl.weekday_last()}; +} + +CONSTCD11 +inline +year_month_weekday_last +operator/(int y, const month_weekday_last& mwdl) NOEXCEPT +{ + return year(y) / mwdl; +} + +CONSTCD11 +inline +year_month_weekday_last +operator/(const month_weekday_last& mwdl, const year& y) NOEXCEPT +{ + return y / mwdl; +} + +CONSTCD11 +inline +year_month_weekday_last +operator/(const month_weekday_last& mwdl, int y) NOEXCEPT +{ + return year(y) / mwdl; +} + +} // namespace julian + +#endif // JULIAN_H diff --git a/src/date/ptz.h b/src/date/ptz.h new file mode 100644 index 0000000..3dca4f0 --- /dev/null +++ b/src/date/ptz.h @@ -0,0 +1,950 @@ +#ifndef PTZ_H +#define PTZ_H + +// The MIT License (MIT) +// +// Copyright (c) 2017 Howard Hinnant +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +// This header allows Posix-style time zones as specified for TZ here: +// http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_03 +// +// Posix::time_zone can be constructed with a posix-style string and then used in +// a zoned_time like so: +// +// zoned_time zt{"EST5EDT,M3.2.0,M11.1.0", +// system_clock::now()}; +// or: +// +// Posix::time_zone tz{"EST5EDT,M3.2.0,M11.1.0"}; +// zoned_time zt{tz, system_clock::now()}; +// +// In C++17 CTAD simplifies this to: +// +// Posix::time_zone tz{"EST5EDT,M3.2.0,M11.1.0"}; +// zoned_time zt{tz, system_clock::now()}; +// +// Extension to the Posix rules to allow a constant daylight saving offset: +// +// If the rule set is missing (everything starting with ','), then +// there must be exactly one abbreviation (std or daylight) with +// length 3 or greater, and that will be used as the constant offset. If +// there are two, the std abbreviation is silently set to "", and the +// result is constant daylight saving. If there are zero abbreviations +// with no rule set, an exception is thrown. +// +// Example: +// "EST5" yields a constant offset of -5h with 0h save and "EST abbreviation. +// "5EDT" yields a constant offset of -4h with 1h save and "EDT" abbreviation. +// "EST5EDT" and "5EDT4" are both equal to "5EDT". +// +// Note, Posix-style time zones are not recommended for all of the reasons described here: +// https://stackoverflow.com/tags/timezone/info +// +// They are provided here as a non-trivial custom time zone example, and if you really +// have to have Posix time zones, you're welcome to use this one. + +#include "date/tz.h" +#include +#include +#include +#include + +namespace Posix +{ + +namespace detail +{ + +#if HAS_STRING_VIEW + +using string_t = std::string_view; + +#else // !HAS_STRING_VIEW + +using string_t = std::string; + +#endif // !HAS_STRING_VIEW + +class rule; + +void throw_invalid(const string_t& s, unsigned i, const string_t& message); +unsigned read_date(const string_t& s, unsigned i, rule& r); +unsigned read_name(const string_t& s, unsigned i, std::string& name); +unsigned read_signed_time(const string_t& s, unsigned i, std::chrono::seconds& t); +unsigned read_unsigned_time(const string_t& s, unsigned i, std::chrono::seconds& t); +unsigned read_unsigned(const string_t& s, unsigned i, unsigned limit, unsigned& u, + const string_t& message = string_t{}); + +class rule +{ + enum {off, J, M, N}; + + date::month m_; + date::weekday wd_; + unsigned short n_ : 14; + unsigned short mode_ : 2; + std::chrono::duration time_ = std::chrono::hours{2}; + +public: + rule() : mode_(off) {} + + bool ok() const {return mode_ != off;} + date::local_seconds operator()(date::year y) const; + std::string to_string() const; + + friend std::ostream& operator<<(std::ostream& os, const rule& r); + friend unsigned read_date(const string_t& s, unsigned i, rule& r); + friend bool operator==(const rule& x, const rule& y); +}; + +inline +bool +operator==(const rule& x, const rule& y) +{ + if (x.mode_ != y.mode_) + return false; + switch (x.mode_) + { + case rule::J: + case rule::N: + return x.n_ == y.n_; + case rule::M: + return x.m_ == y.m_ && x.n_ == y.n_ && x.wd_ == y.wd_; + default: + return true; + } +} + +inline +bool +operator!=(const rule& x, const rule& y) +{ + return !(x == y); +} + +inline +date::local_seconds +rule::operator()(date::year y) const +{ + using date::local_days; + using date::January; + using date::days; + using date::last; + using sec = std::chrono::seconds; + date::local_seconds t; + switch (mode_) + { + case J: + t = local_days{y/January/0} + days{n_ + (y.is_leap() && n_ > 59)} + sec{time_}; + break; + case M: + t = (n_ == 5 ? local_days{y/m_/wd_[last]} : local_days{y/m_/wd_[n_]}) + sec{time_}; + break; + case N: + t = local_days{y/January/1} + days{n_} + sec{time_}; + break; + default: + assert(!"rule called with bad mode"); + } + return t; +} + +inline +std::string +rule::to_string() const +{ + using namespace std::chrono; + auto print_offset = [](seconds off) + { + std::string nm; + if (off != hours{2}) + { + date::hh_mm_ss offset{off}; + nm = '/'; + nm += std::to_string(offset.hours().count()); + if (offset.minutes() != minutes{0} || offset.seconds() != seconds{0}) + { + nm += ':'; + if (offset.minutes() < minutes{10}) + nm += '0'; + nm += std::to_string(offset.minutes().count()); + if (offset.seconds() != seconds{0}) + { + nm += ':'; + if (offset.seconds() < seconds{10}) + nm += '0'; + nm += std::to_string(offset.seconds().count()); + } + } + } + return nm; + }; + + std::string nm; + switch (mode_) + { + case rule::J: + nm = 'J'; + nm += std::to_string(n_); + break; + case rule::M: + nm = 'M'; + nm += std::to_string(static_cast(m_)); + nm += '.'; + nm += std::to_string(n_); + nm += '.'; + nm += std::to_string(wd_.c_encoding()); + break; + case rule::N: + nm = std::to_string(n_); + break; + default: + break; + } + nm += print_offset(time_); + return nm; +} + +inline +std::ostream& +operator<<(std::ostream& os, const rule& r) +{ + switch (r.mode_) + { + case rule::J: + os << 'J' << r.n_ << date::format(" %T", r.time_); + break; + case rule::M: + if (r.n_ == 5) + os << r.m_/r.wd_[date::last]; + else + os << r.m_/r.wd_[r.n_]; + os << date::format(" %T", r.time_); + break; + case rule::N: + os << r.n_ << date::format(" %T", r.time_); + break; + default: + break; + } + return os; +} + +} // namespace detail + +class time_zone +{ + std::string std_abbrev_; + std::string dst_abbrev_ = {}; + std::chrono::seconds offset_; + std::chrono::seconds save_ = std::chrono::hours{1}; + detail::rule start_rule_; + detail::rule end_rule_; + +public: + explicit time_zone(const detail::string_t& name); + + template + date::sys_info get_info(date::sys_time st) const; + template + date::local_info get_info(date::local_time tp) const; + + template + date::sys_time::type> + to_sys(date::local_time tp) const; + + template + date::sys_time::type> + to_sys(date::local_time tp, date::choose z) const; + + template + date::local_time::type> + to_local(date::sys_time tp) const; + + friend std::ostream& operator<<(std::ostream& os, const time_zone& z); + + const time_zone* operator->() const {return this;} + + std::string name() const; + + friend bool operator==(const time_zone& x, const time_zone& y); + +private: + date::sys_seconds get_start(date::year y) const; + date::sys_seconds get_prev_start(date::year y) const; + date::sys_seconds get_next_start(date::year y) const; + date::sys_seconds get_end(date::year y) const; + date::sys_seconds get_prev_end(date::year y) const; + date::sys_seconds get_next_end(date::year y) const; + date::sys_info contant_offset() const; +}; + +inline +date::sys_seconds +time_zone::get_start(date::year y) const +{ + return date::sys_seconds{(start_rule_(y) - offset_).time_since_epoch()}; +} + +inline +date::sys_seconds +time_zone::get_prev_start(date::year y) const +{ + return date::sys_seconds{(start_rule_(--y) - offset_).time_since_epoch()}; +} + +inline +date::sys_seconds +time_zone::get_next_start(date::year y) const +{ + return date::sys_seconds{(start_rule_(++y) - offset_).time_since_epoch()}; +} + +inline +date::sys_seconds +time_zone::get_end(date::year y) const +{ + return date::sys_seconds{(end_rule_(y) - (offset_ + save_)).time_since_epoch()}; +} + +inline +date::sys_seconds +time_zone::get_prev_end(date::year y) const +{ + return date::sys_seconds{(end_rule_(--y) - (offset_ + save_)).time_since_epoch()}; +} + +inline +date::sys_seconds +time_zone::get_next_end(date::year y) const +{ + return date::sys_seconds{(end_rule_(++y) - (offset_ + save_)).time_since_epoch()}; +} + +inline +date::sys_info +time_zone::contant_offset() const +{ + using date::year; + using date::sys_info; + using date::sys_days; + using date::January; + using date::December; + using date::last; + using std::chrono::minutes; + sys_info r; + r.begin = sys_days{year::min()/January/1}; + r.end = sys_days{year::max()/December/last}; + if (std_abbrev_.size() > 0) + { + r.abbrev = std_abbrev_; + r.offset = offset_; + r.save = {}; + } + else + { + r.abbrev = dst_abbrev_; + r.offset = offset_ + save_; + r.save = date::ceil(save_); + } + return r; +} + +inline +time_zone::time_zone(const detail::string_t& s) +{ + using detail::read_name; + using detail::read_signed_time; + using detail::throw_invalid; + auto i = read_name(s, 0, std_abbrev_); + auto std_name_i = i; + auto abbrev_name_i = i; + i = read_signed_time(s, i, offset_); + offset_ = -offset_; + if (i != s.size()) + { + i = read_name(s, i, dst_abbrev_); + abbrev_name_i = i; + if (i != s.size()) + { + if (s[i] != ',') + { + i = read_signed_time(s, i, save_); + save_ = -save_ - offset_; + } + if (i != s.size()) + { + if (s[i] != ',') + throw_invalid(s, i, "Expecting end of string or ',' to start rule"); + ++i; + i = read_date(s, i, start_rule_); + if (i == s.size() || s[i] != ',') + throw_invalid(s, i, "Expecting ',' and then the ending rule"); + ++i; + i = read_date(s, i, end_rule_); + if (i != s.size()) + throw_invalid(s, i, "Found unexpected trailing characters"); + } + } + } + if (start_rule_.ok()) + { + if (std_abbrev_.size() < 3) + throw_invalid(s, std_name_i, "Zone with rules must have a std" + " abbreviation of length 3 or greater"); + if (dst_abbrev_.size() < 3) + throw_invalid(s, abbrev_name_i, "Zone with rules must have a daylight" + " abbreviation of length 3 or greater"); + } + else + { + if (dst_abbrev_.size() >= 3) + { + std_abbrev_.clear(); + } + else if (std_abbrev_.size() < 3) + { + throw_invalid(s, std_name_i, "Zone must have at least one abbreviation" + " of length 3 or greater"); + } + else + { + dst_abbrev_.clear(); + save_ = {}; + } + } +} + +template +date::sys_info +time_zone::get_info(date::sys_time st) const +{ + using date::sys_info; + using date::year_month_day; + using date::sys_days; + using date::floor; + using date::ceil; + using date::days; + using date::year; + using date::January; + using date::December; + using date::last; + using std::chrono::minutes; + sys_info r{}; + r.offset = offset_; + if (start_rule_.ok()) + { + auto y = year_month_day{floor(st)}.year(); + if (st >= get_next_start(y)) + ++y; + else if (st < get_prev_end(y)) + --y; + auto start = get_start(y); + auto end = get_end(y); + if (start <= end) // (northern hemisphere) + { + if (start <= st && st < end) + { + r.begin = start; + r.end = end; + r.offset += save_; + r.save = ceil(save_); + r.abbrev = dst_abbrev_; + } + else if (st < start) + { + r.begin = get_prev_end(y); + r.end = start; + r.abbrev = std_abbrev_; + } + else // st >= end + { + r.begin = end; + r.end = get_next_start(y); + r.abbrev = std_abbrev_; + } + } + else // end < start (southern hemisphere) + { + if (end <= st && st < start) + { + r.begin = end; + r.end = start; + r.abbrev = std_abbrev_; + } + else if (st < end) + { + r.begin = get_prev_start(y); + r.end = end; + r.offset += save_; + r.save = ceil(save_); + r.abbrev = dst_abbrev_; + } + else // st >= start + { + r.begin = start; + r.end = get_next_end(y); + r.offset += save_; + r.save = ceil(save_); + r.abbrev = dst_abbrev_; + } + } + } + else + r = contant_offset(); + assert(r.begin <= st && st < r.end); + return r; +} + +template +date::local_info +time_zone::get_info(date::local_time tp) const +{ + using date::local_info; + using date::year_month_day; + using date::days; + using date::sys_days; + using date::sys_seconds; + using date::year; + using date::ceil; + using date::January; + using date::December; + using date::last; + using std::chrono::seconds; + using std::chrono::minutes; + local_info r{}; + using date::floor; + if (start_rule_.ok()) + { + auto y = year_month_day{floor(tp)}.year(); + auto start = get_start(y); + auto end = get_end(y); + auto utcs = sys_seconds{floor(tp - offset_).time_since_epoch()}; + auto utcd = sys_seconds{floor(tp - (offset_ + save_)).time_since_epoch()}; + auto northern = start <= end; + if ((utcs < start) != (utcd < start)) + { + if (northern) + r.first.begin = get_prev_end(y); + else + r.first.begin = end; + r.first.end = start; + r.first.offset = offset_; + r.first.abbrev = std_abbrev_; + r.second.begin = start; + if (northern) + r.second.end = end; + else + r.second.end = get_next_end(y); + r.second.abbrev = dst_abbrev_; + r.second.offset = offset_ + save_; + r.second.save = ceil(save_); + r.result = save_ > seconds{0} ? local_info::nonexistent + : local_info::ambiguous; + } + else if ((utcs < end) != (utcd < end)) + { + if (northern) + r.first.begin = start; + else + r.first.begin = get_prev_start(y); + r.first.end = end; + r.first.offset = offset_ + save_; + r.first.save = ceil(save_); + r.first.abbrev = dst_abbrev_; + r.second.begin = end; + if (northern) + r.second.end = get_next_start(y); + else + r.second.end = start; + r.second.abbrev = std_abbrev_; + r.second.offset = offset_; + r.result = save_ > seconds{0} ? local_info::ambiguous + : local_info::nonexistent; + } + else + r.first = get_info(utcs); + } + else + r.first = contant_offset(); + return r; +} + +template +date::sys_time::type> +time_zone::to_sys(date::local_time tp) const +{ + using date::local_info; + using date::sys_time; + using date::ambiguous_local_time; + using date::nonexistent_local_time; + auto i = get_info(tp); + if (i.result == local_info::nonexistent) + throw nonexistent_local_time(tp, i); + else if (i.result == local_info::ambiguous) + throw ambiguous_local_time(tp, i); + return sys_time{tp.time_since_epoch()} - i.first.offset; +} + +template +date::sys_time::type> +time_zone::to_sys(date::local_time tp, date::choose z) const +{ + using date::local_info; + using date::sys_time; + using date::choose; + auto i = get_info(tp); + if (i.result == local_info::nonexistent) + { + return i.first.end; + } + else if (i.result == local_info::ambiguous) + { + if (z == choose::latest) + return sys_time{tp.time_since_epoch()} - i.second.offset; + } + return sys_time{tp.time_since_epoch()} - i.first.offset; +} + +template +date::local_time::type> +time_zone::to_local(date::sys_time tp) const +{ + using date::local_time; + using std::chrono::seconds; + using LT = local_time::type>; + auto i = get_info(tp); + return LT{(tp + i.offset).time_since_epoch()}; +} + +inline +std::ostream& +operator<<(std::ostream& os, const time_zone& z) +{ + using date::operator<<; + os << '{'; + os << z.std_abbrev_ << ", " << z.dst_abbrev_ << date::format(", %T, ", z.offset_) + << date::format("%T, [", z.save_) << z.start_rule_ << ", " << z.end_rule_ << ")}"; + return os; +} + +inline +std::string +time_zone::name() const +{ + using namespace date; + using namespace std::chrono; + auto print_abbrev = [](std::string const& nm) + { + if (std::any_of(nm.begin(), nm.end(), + [](char c) + { + return !std::isalpha(c); + })) + { + return '<' + nm + '>'; + } + return nm; + }; + auto print_offset = [](seconds off) + { + std::string nm; + hh_mm_ss offset{-off}; + if (offset.is_negative()) + nm += '-'; + nm += std::to_string(offset.hours().count()); + if (offset.minutes() != minutes{0} || offset.seconds() != seconds{0}) + { + nm += ':'; + if (offset.minutes() < minutes{10}) + nm += '0'; + nm += std::to_string(offset.minutes().count()); + if (offset.seconds() != seconds{0}) + { + nm += ':'; + if (offset.seconds() < seconds{10}) + nm += '0'; + nm += std::to_string(offset.seconds().count()); + } + } + return nm; + }; + auto nm = print_abbrev(std_abbrev_); + nm += print_offset(offset_); + if (!dst_abbrev_.empty()) + { + nm += print_abbrev(dst_abbrev_); + if (save_ != hours{1}) + nm += print_offset(offset_+save_); + if (start_rule_.ok()) + { + nm += ','; + nm += start_rule_.to_string(); + nm += ','; + nm += end_rule_.to_string(); + } + } + return nm; +} + +inline +bool +operator==(const time_zone& x, const time_zone& y) +{ + return x.std_abbrev_ == y.std_abbrev_ && + x.dst_abbrev_ == y. dst_abbrev_ && + x.offset_ == y.offset_ && + x.save_ == y.save_ && + x.start_rule_ == y.start_rule_ && + x.end_rule_ == y.end_rule_; +} + +inline +bool +operator!=(const time_zone& x, const time_zone& y) +{ + return !(x == y); +} + +namespace detail +{ + +inline +void +throw_invalid(const string_t& s, unsigned i, const string_t& message) +{ + throw std::runtime_error(std::string("Invalid time_zone initializer.\n") + + std::string(message) + ":\n" + + std::string(s) + '\n' + + "\x1b[1;32m" + + std::string(i, '~') + '^' + + std::string(i < s.size() ? s.size()-i-1 : 0, '~') + + "\x1b[0m"); +} + +inline +unsigned +read_date(const string_t& s, unsigned i, rule& r) +{ + using date::month; + using date::weekday; + if (i == s.size()) + throw_invalid(s, i, "Expected rule but found end of string"); + if (s[i] == 'J') + { + ++i; + unsigned n; + i = read_unsigned(s, i, 3, n, "Expected to find the Julian day [1, 365]"); + if (!(1 <= n && n <= 365)) + throw_invalid(s, i-1, "Expected Julian day to be in the range [1, 365]"); + r.mode_ = rule::J; + r.n_ = n; + } + else if (s[i] == 'M') + { + ++i; + unsigned m; + i = read_unsigned(s, i, 2, m, "Expected to find month [1, 12]"); + if (!(1 <= m && m <= 12)) + throw_invalid(s, i-1, "Expected month to be in the range [1, 12]"); + if (i == s.size() || s[i] != '.') + throw_invalid(s, i, "Expected '.' after month"); + ++i; + unsigned n; + i = read_unsigned(s, i, 1, n, "Expected to find week number [1, 5]"); + if (!(1 <= n && n <= 5)) + throw_invalid(s, i-1, "Expected week number to be in the range [1, 5]"); + if (i == s.size() || s[i] != '.') + throw_invalid(s, i, "Expected '.' after weekday index"); + ++i; + unsigned wd; + i = read_unsigned(s, i, 1, wd, "Expected to find day of week [0, 6]"); + if (wd > 6) + throw_invalid(s, i-1, "Expected day of week to be in the range [0, 6]"); + r.mode_ = rule::M; + r.m_ = month{m}; + r.wd_ = weekday{wd}; + r.n_ = n; + } + else if (std::isdigit(s[i])) + { + unsigned n; + i = read_unsigned(s, i, 3, n); + if (n > 365) + throw_invalid(s, i-1, "Expected Julian day to be in the range [0, 365]"); + r.mode_ = rule::N; + r.n_ = n; + } + else + throw_invalid(s, i, "Expected 'J', 'M', or a digit to start rule"); + if (i != s.size() && s[i] == '/') + { + ++i; + std::chrono::seconds t; + i = read_unsigned_time(s, i, t); + r.time_ = t; + } + return i; +} + +inline +unsigned +read_name(const string_t& s, unsigned i, std::string& name) +{ + if (i == s.size()) + throw_invalid(s, i, "Expected a name but found end of string"); + if (s[i] == '<') + { + ++i; + while (true) + { + if (i == s.size()) + throw_invalid(s, i, + "Expected to find closing '>', but found end of string"); + if (s[i] == '>') + break; + name.push_back(s[i]); + ++i; + } + ++i; + } + else + { + while (i != s.size() && std::isalpha(s[i])) + { + name.push_back(s[i]); + ++i; + } + } + return i; +} + +inline +unsigned +read_signed_time(const string_t& s, unsigned i, + std::chrono::seconds& t) +{ + if (i == s.size()) + throw_invalid(s, i, "Expected to read signed time, but found end of string"); + bool negative = false; + if (s[i] == '-') + { + negative = true; + ++i; + } + else if (s[i] == '+') + ++i; + i = read_unsigned_time(s, i, t); + if (negative) + t = -t; + return i; +} + +inline +unsigned +read_unsigned_time(const string_t& s, unsigned i, std::chrono::seconds& t) +{ + using std::chrono::seconds; + using std::chrono::minutes; + using std::chrono::hours; + if (i == s.size()) + throw_invalid(s, i, "Expected to read unsigned time, but found end of string"); + unsigned x; + i = read_unsigned(s, i, 2, x, "Expected to find hours [0, 24]"); + if (x > 24) + throw_invalid(s, i-1, "Expected hours to be in the range [0, 24]"); + t = hours{x}; + if (i != s.size() && s[i] == ':') + { + ++i; + i = read_unsigned(s, i, 2, x, "Expected to find minutes [0, 59]"); + if (x > 59) + throw_invalid(s, i-1, "Expected minutes to be in the range [0, 59]"); + t += minutes{x}; + if (i != s.size() && s[i] == ':') + { + ++i; + i = read_unsigned(s, i, 2, x, "Expected to find seconds [0, 59]"); + if (x > 59) + throw_invalid(s, i-1, "Expected seconds to be in the range [0, 59]"); + t += seconds{x}; + } + } + return i; +} + +inline +unsigned +read_unsigned(const string_t& s, unsigned i, unsigned limit, unsigned& u, + const string_t& message) +{ + if (i == s.size() || !std::isdigit(s[i])) + throw_invalid(s, i, message); + u = static_cast(s[i] - '0'); + unsigned count = 1; + for (++i; count < limit && i != s.size() && std::isdigit(s[i]); ++i, ++count) + u = u * 10 + static_cast(s[i] - '0'); + return i; +} + +} // namespace detail + +} // namespace Posix + +namespace date +{ + +template <> +struct zoned_traits +{ + +#if HAS_STRING_VIEW + + static + Posix::time_zone + locate_zone(std::string_view name) + { + return Posix::time_zone{name}; + } + +#else // !HAS_STRING_VIEW + + static + Posix::time_zone + locate_zone(const std::string& name) + { + return Posix::time_zone{name}; + } + + static + Posix::time_zone + locate_zone(const char* name) + { + return Posix::time_zone{name}; + } + +#endif // !HAS_STRING_VIEW + +}; + +} // namespace date + +#endif // PTZ_H diff --git a/src/date/solar_hijri.h b/src/date/solar_hijri.h new file mode 100644 index 0000000..8de9cb5 --- /dev/null +++ b/src/date/solar_hijri.h @@ -0,0 +1,3151 @@ +#ifndef SOLAR_HIJRI_H +#define SOLAR_HIJRI_H + +// The MIT License (MIT) +// +// Copyright (c) 2016 Howard Hinnant +// Copyright (c) 2019 Asad. Gharighi +// +// Calculations are based on: +// https://www.timeanddate.com/calendar/persian-calendar.html +// and follow style +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// Our apologies. When the previous paragraph was written, lowercase had not yet +// been invented (that would involve another several millennia of evolution). +// We did not mean to shout. + +#include "date.h" + +namespace solar_hijri +{ + +namespace internal +{ +static const auto epoch = static_cast(2121446); +static const auto days_in_era = static_cast(1029983); +static const auto years_in_era = static_cast(2820); +static const auto unix_time_shift = static_cast(2440588); +auto const years_in_first_cycle = static_cast(29); +auto const years_in_other_cycles = static_cast(33); +auto const years_in_period = static_cast(128); // 29 + 3*33 +auto const days_in_first_cycle = static_cast(10592); // 28/4 + 29*365 +auto const days_in_other_cycles = static_cast(12053); // 32/4 + 33*365 +auto const days_in_period = static_cast(46751); // days_in_first_cycle + 3*days_in_other_cycles; +} + +// durations + +using days = date::days; + +using weeks = date::weeks; + +using years = std::chrono::duration + , days::period>>; + +using months = std::chrono::duration + >>; + +// time_point + +using sys_days = date::sys_days; +using local_days = date::local_days; + +// types + +struct last_spec +{ + explicit last_spec() = default; +}; + +class day; +class month; +class year; + +class weekday; +class weekday_indexed; +class weekday_last; + +class month_day; +class month_day_last; +class month_weekday; +class month_weekday_last; + +class year_month; + +class year_month_day; +class year_month_day_last; +class year_month_weekday; +class year_month_weekday_last; + +// date composition operators + +CONSTCD11 year_month operator/(const year& y, const month& m) NOEXCEPT; +CONSTCD11 year_month operator/(const year& y, int m) NOEXCEPT; + +CONSTCD11 month_day operator/(const day& d, const month& m) NOEXCEPT; +CONSTCD11 month_day operator/(const day& d, int m) NOEXCEPT; +CONSTCD11 month_day operator/(const month& m, const day& d) NOEXCEPT; +CONSTCD11 month_day operator/(const month& m, int d) NOEXCEPT; +CONSTCD11 month_day operator/(int m, const day& d) NOEXCEPT; + +CONSTCD11 month_day_last operator/(const month& m, last_spec) NOEXCEPT; +CONSTCD11 month_day_last operator/(int m, last_spec) NOEXCEPT; +CONSTCD11 month_day_last operator/(last_spec, const month& m) NOEXCEPT; +CONSTCD11 month_day_last operator/(last_spec, int m) NOEXCEPT; + +CONSTCD11 month_weekday operator/(const month& m, const weekday_indexed& wdi) NOEXCEPT; +CONSTCD11 month_weekday operator/(int m, const weekday_indexed& wdi) NOEXCEPT; +CONSTCD11 month_weekday operator/(const weekday_indexed& wdi, const month& m) NOEXCEPT; +CONSTCD11 month_weekday operator/(const weekday_indexed& wdi, int m) NOEXCEPT; + +CONSTCD11 month_weekday_last operator/(const month& m, const weekday_last& wdl) NOEXCEPT; +CONSTCD11 month_weekday_last operator/(int m, const weekday_last& wdl) NOEXCEPT; +CONSTCD11 month_weekday_last operator/(const weekday_last& wdl, const month& m) NOEXCEPT; +CONSTCD11 month_weekday_last operator/(const weekday_last& wdl, int m) NOEXCEPT; + +CONSTCD11 year_month_day operator/(const year_month& ym, const day& d) NOEXCEPT; +CONSTCD11 year_month_day operator/(const year_month& ym, int d) NOEXCEPT; +CONSTCD11 year_month_day operator/(const year& y, const month_day& md) NOEXCEPT; +CONSTCD11 year_month_day operator/(int y, const month_day& md) NOEXCEPT; +CONSTCD11 year_month_day operator/(const month_day& md, const year& y) NOEXCEPT; +CONSTCD11 year_month_day operator/(const month_day& md, int y) NOEXCEPT; + +CONSTCD11 + year_month_day_last operator/(const year_month& ym, last_spec) NOEXCEPT; +CONSTCD11 + year_month_day_last operator/(const year& y, const month_day_last& mdl) NOEXCEPT; +CONSTCD11 + year_month_day_last operator/(int y, const month_day_last& mdl) NOEXCEPT; +CONSTCD11 + year_month_day_last operator/(const month_day_last& mdl, const year& y) NOEXCEPT; +CONSTCD11 + year_month_day_last operator/(const month_day_last& mdl, int y) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator/(const year_month& ym, const weekday_indexed& wdi) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator/(const year& y, const month_weekday& mwd) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator/(int y, const month_weekday& mwd) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator/(const month_weekday& mwd, const year& y) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator/(const month_weekday& mwd, int y) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator/(const year_month& ym, const weekday_last& wdl) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator/(const year& y, const month_weekday_last& mwdl) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator/(int y, const month_weekday_last& mwdl) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator/(const month_weekday_last& mwdl, const year& y) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator/(const month_weekday_last& mwdl, int y) NOEXCEPT; + +// Detailed interface + +// day + +class day +{ + unsigned char d_; + +public: + day() = default; + explicit CONSTCD11 day(unsigned d) NOEXCEPT; + + CONSTCD14 day& operator++() NOEXCEPT; + CONSTCD14 day operator++(int) NOEXCEPT; + CONSTCD14 day& operator--() NOEXCEPT; + CONSTCD14 day operator--(int) NOEXCEPT; + + CONSTCD14 day& operator+=(const days& d) NOEXCEPT; + CONSTCD14 day& operator-=(const days& d) NOEXCEPT; + + CONSTCD11 explicit operator unsigned() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const day& x, const day& y) NOEXCEPT; +CONSTCD11 bool operator!=(const day& x, const day& y) NOEXCEPT; +CONSTCD11 bool operator< (const day& x, const day& y) NOEXCEPT; +CONSTCD11 bool operator> (const day& x, const day& y) NOEXCEPT; +CONSTCD11 bool operator<=(const day& x, const day& y) NOEXCEPT; +CONSTCD11 bool operator>=(const day& x, const day& y) NOEXCEPT; + +CONSTCD11 day operator+(const day& x, const days& y) NOEXCEPT; +CONSTCD11 day operator+(const days& x, const day& y) NOEXCEPT; +CONSTCD11 day operator-(const day& x, const days& y) NOEXCEPT; +CONSTCD11 days operator-(const day& x, const day& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const day& d); + +// month + +class month +{ + unsigned char m_; + +public: + month() = default; + explicit CONSTCD11 month(unsigned m) NOEXCEPT; + + CONSTCD14 month& operator++() NOEXCEPT; + CONSTCD14 month operator++(int) NOEXCEPT; + CONSTCD14 month& operator--() NOEXCEPT; + CONSTCD14 month operator--(int) NOEXCEPT; + + CONSTCD14 month& operator+=(const months& m) NOEXCEPT; + CONSTCD14 month& operator-=(const months& m) NOEXCEPT; + + CONSTCD11 explicit operator unsigned() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const month& x, const month& y) NOEXCEPT; +CONSTCD11 bool operator!=(const month& x, const month& y) NOEXCEPT; +CONSTCD11 bool operator< (const month& x, const month& y) NOEXCEPT; +CONSTCD11 bool operator> (const month& x, const month& y) NOEXCEPT; +CONSTCD11 bool operator<=(const month& x, const month& y) NOEXCEPT; +CONSTCD11 bool operator>=(const month& x, const month& y) NOEXCEPT; + +CONSTCD14 month operator+(const month& x, const months& y) NOEXCEPT; +CONSTCD14 month operator+(const months& x, const month& y) NOEXCEPT; +CONSTCD14 month operator-(const month& x, const months& y) NOEXCEPT; +CONSTCD14 months operator-(const month& x, const month& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const month& m); + +// year + +class year +{ + short y_; + +public: + year() = default; + explicit CONSTCD11 year(int y) NOEXCEPT; + + CONSTCD14 year& operator++() NOEXCEPT; + CONSTCD14 year operator++(int) NOEXCEPT; + CONSTCD14 year& operator--() NOEXCEPT; + CONSTCD14 year operator--(int) NOEXCEPT; + + CONSTCD14 year& operator+=(const years& y) NOEXCEPT; + CONSTCD14 year& operator-=(const years& y) NOEXCEPT; + + CONSTCD14 bool is_leap() const NOEXCEPT; + + CONSTCD11 explicit operator int() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; + + static CONSTCD11 year min() NOEXCEPT; + static CONSTCD11 year max() NOEXCEPT; +}; + +CONSTCD11 bool operator==(const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator!=(const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator< (const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator> (const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator<=(const year& x, const year& y) NOEXCEPT; +CONSTCD11 bool operator>=(const year& x, const year& y) NOEXCEPT; + +CONSTCD11 year operator+(const year& x, const years& y) NOEXCEPT; +CONSTCD11 year operator+(const years& x, const year& y) NOEXCEPT; +CONSTCD11 year operator-(const year& x, const years& y) NOEXCEPT; +CONSTCD11 years operator-(const year& x, const year& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year& y); + +// weekday + +class weekday +{ + unsigned char wd_; +public: + weekday() = default; + explicit CONSTCD11 weekday(unsigned wd) NOEXCEPT; + explicit weekday(int) = delete; + CONSTCD11 weekday(const sys_days& dp) NOEXCEPT; + CONSTCD11 explicit weekday(const local_days& dp) NOEXCEPT; + + CONSTCD14 weekday& operator++() NOEXCEPT; + CONSTCD14 weekday operator++(int) NOEXCEPT; + CONSTCD14 weekday& operator--() NOEXCEPT; + CONSTCD14 weekday operator--(int) NOEXCEPT; + + CONSTCD14 weekday& operator+=(const days& d) NOEXCEPT; + CONSTCD14 weekday& operator-=(const days& d) NOEXCEPT; + + CONSTCD11 explicit operator unsigned() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; + + CONSTCD11 weekday_indexed operator[](unsigned index) const NOEXCEPT; + CONSTCD11 weekday_last operator[](last_spec) const NOEXCEPT; + +private: + static CONSTCD11 unsigned char weekday_from_days(int z) NOEXCEPT; +}; + +CONSTCD11 bool operator==(const weekday& x, const weekday& y) NOEXCEPT; +CONSTCD11 bool operator!=(const weekday& x, const weekday& y) NOEXCEPT; + +CONSTCD14 weekday operator+(const weekday& x, const days& y) NOEXCEPT; +CONSTCD14 weekday operator+(const days& x, const weekday& y) NOEXCEPT; +CONSTCD14 weekday operator-(const weekday& x, const days& y) NOEXCEPT; +CONSTCD14 days operator-(const weekday& x, const weekday& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday& wd); + +// weekday_indexed + +class weekday_indexed +{ + unsigned char wd_ : 4; + unsigned char index_ : 4; + +public: + weekday_indexed() = default; + CONSTCD11 weekday_indexed(const solar_hijri::weekday& wd, unsigned index) NOEXCEPT; + + CONSTCD11 solar_hijri::weekday weekday() const NOEXCEPT; + CONSTCD11 unsigned index() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const weekday_indexed& x, const weekday_indexed& y) NOEXCEPT; +CONSTCD11 bool operator!=(const weekday_indexed& x, const weekday_indexed& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday_indexed& wdi); + +// weekday_last + +class weekday_last +{ + solar_hijri::weekday wd_; + +public: + weekday_last() = default; + explicit CONSTCD11 weekday_last(const solar_hijri::weekday& wd) NOEXCEPT; + + CONSTCD11 solar_hijri::weekday weekday() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const weekday_last& x, const weekday_last& y) NOEXCEPT; +CONSTCD11 bool operator!=(const weekday_last& x, const weekday_last& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday_last& wdl); + +// year_month + +class year_month +{ + solar_hijri::year y_; + solar_hijri::month m_; + +public: + year_month() = default; + CONSTCD11 year_month(const solar_hijri::year& y, const solar_hijri::month& m) NOEXCEPT; + + CONSTCD11 solar_hijri::year year() const NOEXCEPT; + CONSTCD11 solar_hijri::month month() const NOEXCEPT; + + CONSTCD14 year_month& operator+=(const months& dm) NOEXCEPT; + CONSTCD14 year_month& operator-=(const months& dm) NOEXCEPT; + CONSTCD14 year_month& operator+=(const years& dy) NOEXCEPT; + CONSTCD14 year_month& operator-=(const years& dy) NOEXCEPT; + + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 bool operator!=(const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 bool operator< (const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 bool operator> (const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 bool operator<=(const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 bool operator>=(const year_month& x, const year_month& y) NOEXCEPT; + +CONSTCD14 year_month operator+(const year_month& ym, const months& dm) NOEXCEPT; +CONSTCD14 year_month operator+(const months& dm, const year_month& ym) NOEXCEPT; +CONSTCD14 year_month operator-(const year_month& ym, const months& dm) NOEXCEPT; + +CONSTCD11 months operator-(const year_month& x, const year_month& y) NOEXCEPT; +CONSTCD11 year_month operator+(const year_month& ym, const years& dy) NOEXCEPT; +CONSTCD11 year_month operator+(const years& dy, const year_month& ym) NOEXCEPT; +CONSTCD11 year_month operator-(const year_month& ym, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month& ym); + +// month_day + +class month_day +{ + solar_hijri::month m_; + solar_hijri::day d_; + +public: + month_day() = default; + CONSTCD11 month_day(const solar_hijri::month& m, const solar_hijri::day& d) NOEXCEPT; + + CONSTCD11 solar_hijri::month month() const NOEXCEPT; + CONSTCD11 solar_hijri::day day() const NOEXCEPT; + + CONSTCD14 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const month_day& x, const month_day& y) NOEXCEPT; +CONSTCD11 bool operator!=(const month_day& x, const month_day& y) NOEXCEPT; +CONSTCD11 bool operator< (const month_day& x, const month_day& y) NOEXCEPT; +CONSTCD11 bool operator> (const month_day& x, const month_day& y) NOEXCEPT; +CONSTCD11 bool operator<=(const month_day& x, const month_day& y) NOEXCEPT; +CONSTCD11 bool operator>=(const month_day& x, const month_day& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_day& md); + +// month_day_last + +class month_day_last +{ + solar_hijri::month m_; + +public: + month_day_last() = default; + CONSTCD11 explicit month_day_last(const solar_hijri::month& m) NOEXCEPT; + + CONSTCD11 solar_hijri::month month() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const month_day_last& x, const month_day_last& y) NOEXCEPT; +CONSTCD11 bool operator!=(const month_day_last& x, const month_day_last& y) NOEXCEPT; +CONSTCD11 bool operator< (const month_day_last& x, const month_day_last& y) NOEXCEPT; +CONSTCD11 bool operator> (const month_day_last& x, const month_day_last& y) NOEXCEPT; +CONSTCD11 bool operator<=(const month_day_last& x, const month_day_last& y) NOEXCEPT; +CONSTCD11 bool operator>=(const month_day_last& x, const month_day_last& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_day_last& mdl); + +// month_weekday + +class month_weekday +{ + solar_hijri::month m_; + solar_hijri::weekday_indexed wdi_; +public: + month_weekday() = default; + CONSTCD11 month_weekday(const solar_hijri::month& m, + const solar_hijri::weekday_indexed& wdi) NOEXCEPT; + + CONSTCD11 solar_hijri::month month() const NOEXCEPT; + CONSTCD11 solar_hijri::weekday_indexed weekday_indexed() const NOEXCEPT; + + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const month_weekday& x, const month_weekday& y) NOEXCEPT; +CONSTCD11 bool operator!=(const month_weekday& x, const month_weekday& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_weekday& mwd); + +// month_weekday_last + +class month_weekday_last +{ + solar_hijri::month m_; + solar_hijri::weekday_last wdl_; + +public: + month_weekday_last() = default; + CONSTCD11 month_weekday_last(const solar_hijri::month& m, + const solar_hijri::weekday_last& wd) NOEXCEPT; + + CONSTCD11 solar_hijri::month month() const NOEXCEPT; + CONSTCD11 solar_hijri::weekday_last weekday_last() const NOEXCEPT; + + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 + bool operator==(const month_weekday_last& x, const month_weekday_last& y) NOEXCEPT; +CONSTCD11 + bool operator!=(const month_weekday_last& x, const month_weekday_last& y) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_weekday_last& mwdl); + +// class year_month_day + +class year_month_day +{ + solar_hijri::year y_; + solar_hijri::month m_; + solar_hijri::day d_; + +public: + year_month_day() = default; + CONSTCD11 year_month_day(const solar_hijri::year& y, const solar_hijri::month& m, + const solar_hijri::day& d) NOEXCEPT; + CONSTCD14 year_month_day(const year_month_day_last& ymdl) NOEXCEPT; + + CONSTCD14 year_month_day(sys_days dp) NOEXCEPT; + CONSTCD14 explicit year_month_day(local_days dp) NOEXCEPT; + + CONSTCD14 year_month_day& operator+=(const months& m) NOEXCEPT; + CONSTCD14 year_month_day& operator-=(const months& m) NOEXCEPT; + CONSTCD14 year_month_day& operator+=(const years& y) NOEXCEPT; + CONSTCD14 year_month_day& operator-=(const years& y) NOEXCEPT; + + CONSTCD11 solar_hijri::year year() const NOEXCEPT; + CONSTCD11 solar_hijri::month month() const NOEXCEPT; + CONSTCD11 solar_hijri::day day() const NOEXCEPT; + + CONSTCD14 operator sys_days() const NOEXCEPT; + CONSTCD14 explicit operator local_days() const NOEXCEPT; + CONSTCD14 bool ok() const NOEXCEPT; + +private: + static CONSTCD14 year_month_day from_days(days dp) NOEXCEPT; + CONSTCD14 days to_days() const NOEXCEPT; +}; + +CONSTCD11 bool operator==(const year_month_day& x, const year_month_day& y) NOEXCEPT; +CONSTCD11 bool operator!=(const year_month_day& x, const year_month_day& y) NOEXCEPT; +CONSTCD11 bool operator< (const year_month_day& x, const year_month_day& y) NOEXCEPT; +CONSTCD11 bool operator> (const year_month_day& x, const year_month_day& y) NOEXCEPT; +CONSTCD11 bool operator<=(const year_month_day& x, const year_month_day& y) NOEXCEPT; +CONSTCD11 bool operator>=(const year_month_day& x, const year_month_day& y) NOEXCEPT; + +CONSTCD14 year_month_day operator+(const year_month_day& ymd, const months& dm) NOEXCEPT; +CONSTCD14 year_month_day operator+(const months& dm, const year_month_day& ymd) NOEXCEPT; +CONSTCD14 year_month_day operator-(const year_month_day& ymd, const months& dm) NOEXCEPT; +CONSTCD11 year_month_day operator+(const year_month_day& ymd, const years& dy) NOEXCEPT; +CONSTCD11 year_month_day operator+(const years& dy, const year_month_day& ymd) NOEXCEPT; +CONSTCD11 year_month_day operator-(const year_month_day& ymd, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_day& ymd); + +// year_month_day_last + +class year_month_day_last +{ + solar_hijri::year y_; + solar_hijri::month_day_last mdl_; + +public: + year_month_day_last() = default; + CONSTCD11 year_month_day_last(const solar_hijri::year& y, + const solar_hijri::month_day_last& mdl) NOEXCEPT; + + CONSTCD14 year_month_day_last& operator+=(const months& m) NOEXCEPT; + CONSTCD14 year_month_day_last& operator-=(const months& m) NOEXCEPT; + CONSTCD14 year_month_day_last& operator+=(const years& y) NOEXCEPT; + CONSTCD14 year_month_day_last& operator-=(const years& y) NOEXCEPT; + + CONSTCD11 solar_hijri::year year() const NOEXCEPT; + CONSTCD11 solar_hijri::month month() const NOEXCEPT; + CONSTCD11 solar_hijri::month_day_last month_day_last() const NOEXCEPT; + CONSTCD14 solar_hijri::day day() const NOEXCEPT; + + CONSTCD14 operator sys_days() const NOEXCEPT; + CONSTCD14 explicit operator local_days() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; +}; + +CONSTCD11 + bool operator==(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; +CONSTCD11 + bool operator!=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; +CONSTCD11 + bool operator< (const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; +CONSTCD11 + bool operator> (const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; +CONSTCD11 + bool operator<=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; +CONSTCD11 + bool operator>=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT; + +CONSTCD14 +year_month_day_last +operator+(const year_month_day_last& ymdl, const months& dm) NOEXCEPT; + +CONSTCD14 +year_month_day_last +operator+(const months& dm, const year_month_day_last& ymdl) NOEXCEPT; + +CONSTCD11 +year_month_day_last +operator+(const year_month_day_last& ymdl, const years& dy) NOEXCEPT; + +CONSTCD11 +year_month_day_last +operator+(const years& dy, const year_month_day_last& ymdl) NOEXCEPT; + +CONSTCD14 +year_month_day_last +operator-(const year_month_day_last& ymdl, const months& dm) NOEXCEPT; + +CONSTCD11 +year_month_day_last +operator-(const year_month_day_last& ymdl, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_day_last& ymdl); + +// year_month_weekday + +class year_month_weekday +{ + solar_hijri::year y_; + solar_hijri::month m_; + solar_hijri::weekday_indexed wdi_; + +public: + year_month_weekday() = default; + CONSTCD11 year_month_weekday(const solar_hijri::year& y, const solar_hijri::month& m, + const solar_hijri::weekday_indexed& wdi) NOEXCEPT; + CONSTCD14 year_month_weekday(const sys_days& dp) NOEXCEPT; + CONSTCD14 explicit year_month_weekday(const local_days& dp) NOEXCEPT; + + CONSTCD14 year_month_weekday& operator+=(const months& m) NOEXCEPT; + CONSTCD14 year_month_weekday& operator-=(const months& m) NOEXCEPT; + CONSTCD14 year_month_weekday& operator+=(const years& y) NOEXCEPT; + CONSTCD14 year_month_weekday& operator-=(const years& y) NOEXCEPT; + + CONSTCD11 solar_hijri::year year() const NOEXCEPT; + CONSTCD11 solar_hijri::month month() const NOEXCEPT; + CONSTCD11 solar_hijri::weekday weekday() const NOEXCEPT; + CONSTCD11 unsigned index() const NOEXCEPT; + CONSTCD11 solar_hijri::weekday_indexed weekday_indexed() const NOEXCEPT; + + CONSTCD14 operator sys_days() const NOEXCEPT; + CONSTCD14 explicit operator local_days() const NOEXCEPT; + CONSTCD14 bool ok() const NOEXCEPT; + +private: + static CONSTCD14 year_month_weekday from_days(days dp) NOEXCEPT; + CONSTCD14 days to_days() const NOEXCEPT; +}; + +CONSTCD11 + bool operator==(const year_month_weekday& x, const year_month_weekday& y) NOEXCEPT; +CONSTCD11 + bool operator!=(const year_month_weekday& x, const year_month_weekday& y) NOEXCEPT; + +CONSTCD14 +year_month_weekday +operator+(const year_month_weekday& ymwd, const months& dm) NOEXCEPT; + +CONSTCD14 +year_month_weekday +operator+(const months& dm, const year_month_weekday& ymwd) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator+(const year_month_weekday& ymwd, const years& dy) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator+(const years& dy, const year_month_weekday& ymwd) NOEXCEPT; + +CONSTCD14 +year_month_weekday +operator-(const year_month_weekday& ymwd, const months& dm) NOEXCEPT; + +CONSTCD11 +year_month_weekday +operator-(const year_month_weekday& ymwd, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_weekday& ymwdi); + +// year_month_weekday_last + +class year_month_weekday_last +{ + solar_hijri::year y_; + solar_hijri::month m_; + solar_hijri::weekday_last wdl_; + +public: + year_month_weekday_last() = default; + CONSTCD11 year_month_weekday_last(const solar_hijri::year& y, const solar_hijri::month& m, + const solar_hijri::weekday_last& wdl) NOEXCEPT; + + CONSTCD14 year_month_weekday_last& operator+=(const months& m) NOEXCEPT; + CONSTCD14 year_month_weekday_last& operator-=(const months& m) NOEXCEPT; + CONSTCD14 year_month_weekday_last& operator+=(const years& y) NOEXCEPT; + CONSTCD14 year_month_weekday_last& operator-=(const years& y) NOEXCEPT; + + CONSTCD11 solar_hijri::year year() const NOEXCEPT; + CONSTCD11 solar_hijri::month month() const NOEXCEPT; + CONSTCD11 solar_hijri::weekday weekday() const NOEXCEPT; + CONSTCD11 solar_hijri::weekday_last weekday_last() const NOEXCEPT; + + CONSTCD14 operator sys_days() const NOEXCEPT; + CONSTCD14 explicit operator local_days() const NOEXCEPT; + CONSTCD11 bool ok() const NOEXCEPT; + +private: + CONSTCD14 days to_days() const NOEXCEPT; +}; + +CONSTCD11 +bool +operator==(const year_month_weekday_last& x, const year_month_weekday_last& y) NOEXCEPT; + +CONSTCD11 +bool +operator!=(const year_month_weekday_last& x, const year_month_weekday_last& y) NOEXCEPT; + +CONSTCD14 +year_month_weekday_last +operator+(const year_month_weekday_last& ymwdl, const months& dm) NOEXCEPT; + +CONSTCD14 +year_month_weekday_last +operator+(const months& dm, const year_month_weekday_last& ymwdl) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator+(const year_month_weekday_last& ymwdl, const years& dy) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator+(const years& dy, const year_month_weekday_last& ymwdl) NOEXCEPT; + +CONSTCD14 +year_month_weekday_last +operator-(const year_month_weekday_last& ymwdl, const months& dm) NOEXCEPT; + +CONSTCD11 +year_month_weekday_last +operator-(const year_month_weekday_last& ymwdl, const years& dy) NOEXCEPT; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_weekday_last& ymwdl); + +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) +inline namespace literals +{ + +CONSTCD11 solar_hijri::day operator "" _d(unsigned long long d) NOEXCEPT; +CONSTCD11 solar_hijri::year operator "" _y(unsigned long long y) NOEXCEPT; + +} // inline namespace literals +#endif // !defined(_MSC_VER) || (_MSC_VER >= 1900) + +//----------------+ +// Implementation | +//----------------+ + +// day + +CONSTCD11 inline day::day(unsigned d) NOEXCEPT : d_(static_cast(d)) {} +CONSTCD14 inline day& day::operator++() NOEXCEPT {++d_; return *this;} +CONSTCD14 inline day day::operator++(int) NOEXCEPT {auto tmp(*this); ++(*this); return tmp;} +CONSTCD14 inline day& day::operator--() NOEXCEPT {--d_; return *this;} +CONSTCD14 inline day day::operator--(int) NOEXCEPT {auto tmp(*this); --(*this); return tmp;} +CONSTCD14 inline day& day::operator+=(const days& d) NOEXCEPT {*this = *this + d; return *this;} +CONSTCD14 inline day& day::operator-=(const days& d) NOEXCEPT {*this = *this - d; return *this;} +CONSTCD11 inline day::operator unsigned() const NOEXCEPT {return d_;} +CONSTCD11 inline bool day::ok() const NOEXCEPT {return 1 <= d_ && d_ <= 30;} + +CONSTCD11 +inline +bool +operator==(const day& x, const day& y) NOEXCEPT +{ + return static_cast(x) == static_cast(y); +} + +CONSTCD11 +inline +bool +operator!=(const day& x, const day& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const day& x, const day& y) NOEXCEPT +{ + return static_cast(x) < static_cast(y); +} + +CONSTCD11 +inline +bool +operator>(const day& x, const day& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const day& x, const day& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const day& x, const day& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD11 +inline +days +operator-(const day& x, const day& y) NOEXCEPT +{ + return days{static_cast(static_cast(x) + - static_cast(y))}; +} + +CONSTCD11 +inline +day +operator+(const day& x, const days& y) NOEXCEPT +{ + return day{static_cast(x) + static_cast(y.count())}; +} + +CONSTCD11 +inline +day +operator+(const days& x, const day& y) NOEXCEPT +{ + return y + x; +} + +CONSTCD11 +inline +day +operator-(const day& x, const days& y) NOEXCEPT +{ + return x + -y; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const day& d) +{ + date::detail::save_ostream _(os); + os.fill('0'); + os.flags(std::ios::dec | std::ios::right); + os.width(2); + os << static_cast(d); + return os; +} + +// month + +CONSTCD11 inline month::month(unsigned m) NOEXCEPT : m_(static_cast(m)) {} +CONSTCD14 inline month& month::operator++() NOEXCEPT {if (++m_ == 13) m_ = 1; return *this;} +CONSTCD14 inline month month::operator++(int) NOEXCEPT {auto tmp(*this); ++(*this); return tmp;} +CONSTCD14 inline month& month::operator--() NOEXCEPT {if (--m_ == 0) m_ = 12; return *this;} +CONSTCD14 inline month month::operator--(int) NOEXCEPT {auto tmp(*this); --(*this); return tmp;} + +CONSTCD14 +inline +month& +month::operator+=(const months& m) NOEXCEPT +{ + *this = *this + m; + return *this; +} + +CONSTCD14 +inline +month& +month::operator-=(const months& m) NOEXCEPT +{ + *this = *this - m; + return *this; +} + +CONSTCD11 inline month::operator unsigned() const NOEXCEPT {return m_;} +CONSTCD11 inline bool month::ok() const NOEXCEPT {return 1 <= m_ && m_ <= 12;} + +CONSTCD11 +inline +bool +operator==(const month& x, const month& y) NOEXCEPT +{ + return static_cast(x) == static_cast(y); +} + +CONSTCD11 +inline +bool +operator!=(const month& x, const month& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const month& x, const month& y) NOEXCEPT +{ + return static_cast(x) < static_cast(y); +} + +CONSTCD11 +inline +bool +operator>(const month& x, const month& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const month& x, const month& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const month& x, const month& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD14 +inline +months +operator-(const month& x, const month& y) NOEXCEPT +{ + auto const d = static_cast(x) - static_cast(y); + return months(d <= 11 ? d : d + 12); +} + +CONSTCD14 +inline +month +operator+(const month& x, const months& y) NOEXCEPT +{ + auto const mu = static_cast(static_cast(x)) - 1 + y.count(); + auto const yr = (mu >= 0 ? mu : mu-11) / 12; + return month{static_cast(mu - yr * 12 + 1)}; +} + +CONSTCD14 +inline +month +operator+(const months& x, const month& y) NOEXCEPT +{ + return y + x; +} + +CONSTCD14 +inline +month +operator-(const month& x, const months& y) NOEXCEPT +{ + return x + -y; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const month& m) +{ + switch (static_cast(m)) + { + case 1: + os << "Farvardin"; + break; + case 2: + os << "Ordibehesht"; + break; + case 3: + os << "Khordad"; + break; + case 4: + os << "Tir"; + break; + case 5: + os << "Mordad"; + break; + case 6: + os << "Shahrivar"; + break; + case 7: + os << "Mehr"; + break; + case 8: + os << "Aban"; + break; + case 9: + os << "Azar"; + break; + case 10: + os << "Dey"; + break; + case 11: + os << "Bahman"; + break; + case 12: + os << "Esfand"; + break; + default: + os << static_cast(m) << " is not a valid month"; + break; + } + return os; +} + +// year + +CONSTCD11 inline year::year(int y) NOEXCEPT : y_(static_cast(y)) {} +CONSTCD14 inline year& year::operator++() NOEXCEPT {++y_; return *this;} +CONSTCD14 inline year year::operator++(int) NOEXCEPT {auto tmp(*this); ++(*this); return tmp;} +CONSTCD14 inline year& year::operator--() NOEXCEPT {--y_; return *this;} +CONSTCD14 inline year year::operator--(int) NOEXCEPT {auto tmp(*this); --(*this); return tmp;} +CONSTCD14 inline year& year::operator+=(const years& y) NOEXCEPT {*this = *this + y; return *this;} +CONSTCD14 inline year& year::operator-=(const years& y) NOEXCEPT {*this = *this - y; return *this;} + +CONSTCD14 +inline +bool +year::is_leap() const NOEXCEPT +{ + using namespace internal; + auto const y = static_cast(y_)-475; + auto const era_d = static_cast(y >= 0 ? y : y-years_in_era+1) / static_cast(years_in_era); + auto const era = static_cast(era_d); + auto const yoe = static_cast(y - era * years_in_era); + + // Reference: https://www.timeanddate.com/date/iran-leap-year.html + // 29 + 33 + 33 + 33 = 128 + // 22 * 128 + 4 + auto const yoc = (yoe < (22 * 128)) ? ((yoe%128) < 29 ? yoe%128 : (yoe%128 - 29)%33) : yoe - (22 * 128) + 33; + return (yoc != 0 && (yoc%4)==0); +} + +CONSTCD11 inline year::operator int() const NOEXCEPT {return y_;} +CONSTCD11 inline bool year::ok() const NOEXCEPT {return true;} + +CONSTCD11 +inline +year +year::min() NOEXCEPT +{ + return year{std::numeric_limits::min()}; +} + +CONSTCD11 +inline +year +year::max() NOEXCEPT +{ + return year{std::numeric_limits::max()}; +} + +CONSTCD11 +inline +bool +operator==(const year& x, const year& y) NOEXCEPT +{ + return static_cast(x) == static_cast(y); +} + +CONSTCD11 +inline +bool +operator!=(const year& x, const year& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year& x, const year& y) NOEXCEPT +{ + return static_cast(x) < static_cast(y); +} + +CONSTCD11 +inline +bool +operator>(const year& x, const year& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year& x, const year& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year& x, const year& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD11 +inline +years +operator-(const year& x, const year& y) NOEXCEPT +{ + return years{static_cast(x) - static_cast(y)}; +} + +CONSTCD11 +inline +year +operator+(const year& x, const years& y) NOEXCEPT +{ + return year{static_cast(x) + y.count()}; +} + +CONSTCD11 +inline +year +operator+(const years& x, const year& y) NOEXCEPT +{ + return y + x; +} + +CONSTCD11 +inline +year +operator-(const year& x, const years& y) NOEXCEPT +{ + return year{static_cast(x) - y.count()}; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year& y) +{ + date::detail::save_ostream _(os); + os.fill('0'); + os.flags(std::ios::dec | std::ios::internal); + os.width(4 + (y < year{0})); + os << static_cast(y); + return os; +} + +// weekday + +CONSTCD11 +inline +unsigned char +weekday::weekday_from_days(int z) NOEXCEPT +{ + auto u = static_cast(z); + return static_cast(z >= -4 ? (u+4) % 7 : u % 7); +} + +CONSTCD11 +inline +weekday::weekday(unsigned wd) NOEXCEPT + : wd_(static_cast(wd != 7 ? wd : 0)) + {} + +CONSTCD11 +inline +weekday::weekday(const sys_days& dp) NOEXCEPT + : wd_(weekday_from_days(dp.time_since_epoch().count())) + {} + +CONSTCD11 +inline +weekday::weekday(const local_days& dp) NOEXCEPT + : wd_(weekday_from_days(dp.time_since_epoch().count())) + {} + +CONSTCD14 inline weekday& weekday::operator++() NOEXCEPT {if (++wd_ == 7) wd_ = 0; return *this;} +CONSTCD14 inline weekday weekday::operator++(int) NOEXCEPT {auto tmp(*this); ++(*this); return tmp;} +CONSTCD14 inline weekday& weekday::operator--() NOEXCEPT {if (wd_-- == 0) wd_ = 6; return *this;} +CONSTCD14 inline weekday weekday::operator--(int) NOEXCEPT {auto tmp(*this); --(*this); return tmp;} + +CONSTCD14 +inline +weekday& +weekday::operator+=(const days& d) NOEXCEPT +{ + *this = *this + d; + return *this; +} + +CONSTCD14 +inline +weekday& +weekday::operator-=(const days& d) NOEXCEPT +{ + *this = *this - d; + return *this; +} + +CONSTCD11 +inline +weekday::operator unsigned() const NOEXCEPT +{ + return static_cast(wd_); +} + +CONSTCD11 inline bool weekday::ok() const NOEXCEPT {return wd_ <= 6;} + +CONSTCD11 +inline +bool +operator==(const weekday& x, const weekday& y) NOEXCEPT +{ + return static_cast(x) == static_cast(y); +} + +CONSTCD11 +inline +bool +operator!=(const weekday& x, const weekday& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD14 +inline +days +operator-(const weekday& x, const weekday& y) NOEXCEPT +{ + auto const diff = static_cast(x) - static_cast(y); + return days{diff <= 6 ? diff : diff + 7}; +} + +CONSTCD14 +inline +weekday +operator+(const weekday& x, const days& y) NOEXCEPT +{ + auto const wdu = static_cast(static_cast(x)) + y.count(); + auto const wk = (wdu >= 0 ? wdu : wdu-6) / 7; + return weekday{static_cast(wdu - wk * 7)}; +} + +CONSTCD14 +inline +weekday +operator+(const days& x, const weekday& y) NOEXCEPT +{ + return y + x; +} + +CONSTCD14 +inline +weekday +operator-(const weekday& x, const days& y) NOEXCEPT +{ + return x + -y; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday& wd) +{ + switch (static_cast(wd)) + { + case 0: + os << "Yekshanbe"; + break; + case 1: + os << "Doshanbe"; + break; + case 2: + os << "Seshanbe"; + break; + case 3: + os << "Chaharshanbe"; + break; + case 4: + os << "Panjshanbe"; + break; + case 5: + os << "Adine"; + break; + case 6: + os << "Shanbe"; + break; + default: + os << static_cast(wd) << " is not a valid weekday"; + break; + } + return os; +} + +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) +inline namespace literals +{ + +CONSTCD11 +inline +solar_hijri::day +operator "" _d(unsigned long long d) NOEXCEPT +{ + return solar_hijri::day{static_cast(d)}; +} + +CONSTCD11 +inline +solar_hijri::year +operator "" _y(unsigned long long y) NOEXCEPT +{ + return solar_hijri::year(static_cast(y)); +} +#endif // !defined(_MSC_VER) || (_MSC_VER >= 1900) + +CONSTDATA solar_hijri::last_spec last{}; + +CONSTDATA solar_hijri::month far {1}; +CONSTDATA solar_hijri::month ord {2}; +CONSTDATA solar_hijri::month kho {3}; +CONSTDATA solar_hijri::month tir {4}; +CONSTDATA solar_hijri::month mor {5}; +CONSTDATA solar_hijri::month sha {6}; +CONSTDATA solar_hijri::month meh {7}; +CONSTDATA solar_hijri::month aba {8}; +CONSTDATA solar_hijri::month aza {9}; +CONSTDATA solar_hijri::month dey {10}; +CONSTDATA solar_hijri::month bah {11}; +CONSTDATA solar_hijri::month esf {12}; + +CONSTDATA solar_hijri::month Farvardin {1}; +CONSTDATA solar_hijri::month Ordibehesht {2}; +CONSTDATA solar_hijri::month Khordad {3}; +CONSTDATA solar_hijri::month Tir {4}; +CONSTDATA solar_hijri::month Mordad {5}; +CONSTDATA solar_hijri::month Shahrivar {6}; +CONSTDATA solar_hijri::month Mehr {7}; +CONSTDATA solar_hijri::month Aban {8}; +CONSTDATA solar_hijri::month Azar {9}; +CONSTDATA solar_hijri::month Dey {10}; +CONSTDATA solar_hijri::month Bahman {11}; +CONSTDATA solar_hijri::month Esfand {12}; + +CONSTDATA solar_hijri::weekday yek {0u}; +CONSTDATA solar_hijri::weekday dos {1u}; +CONSTDATA solar_hijri::weekday ses {2u}; +CONSTDATA solar_hijri::weekday cha {3u}; +CONSTDATA solar_hijri::weekday pan {4u}; +CONSTDATA solar_hijri::weekday adi {5u}; +CONSTDATA solar_hijri::weekday shn {6u}; + +CONSTDATA solar_hijri::weekday Yekshanbe {0u}; +CONSTDATA solar_hijri::weekday Doshanbe {1u}; +CONSTDATA solar_hijri::weekday Seshanbe {2u}; +CONSTDATA solar_hijri::weekday Chaharshanbe {3u}; +CONSTDATA solar_hijri::weekday Panjshanbe {4u}; +CONSTDATA solar_hijri::weekday Adine {5u}; +CONSTDATA solar_hijri::weekday Shanbe {6u}; + +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) +} // inline namespace literals +#endif + +// weekday_indexed + +CONSTCD11 +inline +weekday +weekday_indexed::weekday() const NOEXCEPT +{ + return solar_hijri::weekday{static_cast(wd_)}; +} + +CONSTCD11 inline unsigned weekday_indexed::index() const NOEXCEPT {return index_;} + +CONSTCD11 +inline +bool +weekday_indexed::ok() const NOEXCEPT +{ + return weekday().ok() && 1 <= index_ && index_ <= 5; +} + +CONSTCD11 +inline +weekday_indexed::weekday_indexed(const solar_hijri::weekday& wd, unsigned index) NOEXCEPT + : wd_(static_cast(static_cast(wd))) + , index_(static_cast(index)) + {} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday_indexed& wdi) +{ + return os << wdi.weekday() << '[' << wdi.index() << ']'; +} + +CONSTCD11 +inline +weekday_indexed +weekday::operator[](unsigned index) const NOEXCEPT +{ + return {*this, index}; +} + +CONSTCD11 +inline +bool +operator==(const weekday_indexed& x, const weekday_indexed& y) NOEXCEPT +{ + return x.weekday() == y.weekday() && x.index() == y.index(); +} + +CONSTCD11 +inline +bool +operator!=(const weekday_indexed& x, const weekday_indexed& y) NOEXCEPT +{ + return !(x == y); +} + +// weekday_last + +CONSTCD11 inline solar_hijri::weekday weekday_last::weekday() const NOEXCEPT {return wd_;} +CONSTCD11 inline bool weekday_last::ok() const NOEXCEPT {return wd_.ok();} +CONSTCD11 inline weekday_last::weekday_last(const solar_hijri::weekday& wd) NOEXCEPT : wd_(wd) {} + +CONSTCD11 +inline +bool +operator==(const weekday_last& x, const weekday_last& y) NOEXCEPT +{ + return x.weekday() == y.weekday(); +} + +CONSTCD11 +inline +bool +operator!=(const weekday_last& x, const weekday_last& y) NOEXCEPT +{ + return !(x == y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const weekday_last& wdl) +{ + return os << wdl.weekday() << "[last]"; +} + +CONSTCD11 +inline +weekday_last +weekday::operator[](last_spec) const NOEXCEPT +{ + return weekday_last{*this}; +} + +// year_month + +CONSTCD11 +inline +year_month::year_month(const solar_hijri::year& y, const solar_hijri::month& m) NOEXCEPT + : y_(y) + , m_(m) + {} + +CONSTCD11 inline year year_month::year() const NOEXCEPT {return y_;} +CONSTCD11 inline month year_month::month() const NOEXCEPT {return m_;} +CONSTCD11 inline bool year_month::ok() const NOEXCEPT {return y_.ok() && m_.ok();} + +CONSTCD14 +inline +year_month& +year_month::operator+=(const months& dm) NOEXCEPT +{ + *this = *this + dm; + return *this; +} + +CONSTCD14 +inline +year_month& +year_month::operator-=(const months& dm) NOEXCEPT +{ + *this = *this - dm; + return *this; +} + +CONSTCD14 +inline +year_month& +year_month::operator+=(const years& dy) NOEXCEPT +{ + *this = *this + dy; + return *this; +} + +CONSTCD14 +inline +year_month& +year_month::operator-=(const years& dy) NOEXCEPT +{ + *this = *this - dy; + return *this; +} + +CONSTCD11 +inline +bool +operator==(const year_month& x, const year_month& y) NOEXCEPT +{ + return x.year() == y.year() && x.month() == y.month(); +} + +CONSTCD11 +inline +bool +operator!=(const year_month& x, const year_month& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year_month& x, const year_month& y) NOEXCEPT +{ + return x.year() < y.year() ? true + : (x.year() > y.year() ? false + : (x.month() < y.month())); +} + +CONSTCD11 +inline +bool +operator>(const year_month& x, const year_month& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year_month& x, const year_month& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year_month& x, const year_month& y) NOEXCEPT +{ + return !(x < y); +} + +CONSTCD14 +inline +year_month +operator+(const year_month& ym, const months& dm) NOEXCEPT +{ + auto dmi = static_cast(static_cast(ym.month())) - 1 + dm.count(); + auto dy = (dmi >= 0 ? dmi : dmi-11) / 12; + dmi = dmi - dy * 12 + 1; + return (ym.year() + years(dy)) / month(static_cast(dmi)); +} + +CONSTCD14 +inline +year_month +operator+(const months& dm, const year_month& ym) NOEXCEPT +{ + return ym + dm; +} + +CONSTCD14 +inline +year_month +operator-(const year_month& ym, const months& dm) NOEXCEPT +{ + return ym + -dm; +} + +CONSTCD11 +inline +months +operator-(const year_month& x, const year_month& y) NOEXCEPT +{ + return (x.year() - y.year()) + + months(static_cast(x.month()) - static_cast(y.month())); +} + +CONSTCD11 +inline +year_month +operator+(const year_month& ym, const years& dy) NOEXCEPT +{ + return (ym.year() + dy) / ym.month(); +} + +CONSTCD11 +inline +year_month +operator+(const years& dy, const year_month& ym) NOEXCEPT +{ + return ym + dy; +} + +CONSTCD11 +inline +year_month +operator-(const year_month& ym, const years& dy) NOEXCEPT +{ + return ym + -dy; +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month& ym) +{ + return os << ym.year() << '/' << ym.month(); +} + +// month_day + +CONSTCD11 +inline +month_day::month_day(const solar_hijri::month& m, const solar_hijri::day& d) NOEXCEPT + : m_(m) + , d_(d) + {} + +CONSTCD11 inline solar_hijri::month month_day::month() const NOEXCEPT {return m_;} +CONSTCD11 inline solar_hijri::day month_day::day() const NOEXCEPT {return d_;} + +CONSTCD14 +inline +bool +month_day::ok() const NOEXCEPT +{ + CONSTDATA solar_hijri::day d[] = { + solar_hijri::day(31), solar_hijri::day(31), solar_hijri::day(31), + solar_hijri::day(31), solar_hijri::day(31), solar_hijri::day(31), + solar_hijri::day(30), solar_hijri::day(30), solar_hijri::day(30), + solar_hijri::day(30), solar_hijri::day(30), solar_hijri::day(30) + }; + return m_.ok() && solar_hijri::day(1) <= d_ && d_ <= d[static_cast(m_)-1]; +} + +CONSTCD11 +inline +bool +operator==(const month_day& x, const month_day& y) NOEXCEPT +{ + return x.month() == y.month() && x.day() == y.day(); +} + +CONSTCD11 +inline +bool +operator!=(const month_day& x, const month_day& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const month_day& x, const month_day& y) NOEXCEPT +{ + return x.month() < y.month() ? true + : (x.month() > y.month() ? false + : (x.day() < y.day())); +} + +CONSTCD11 +inline +bool +operator>(const month_day& x, const month_day& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const month_day& x, const month_day& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const month_day& x, const month_day& y) NOEXCEPT +{ + return !(x < y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_day& md) +{ + return os << md.month() << '/' << md.day(); +} + +// month_day_last + +CONSTCD11 inline month month_day_last::month() const NOEXCEPT {return m_;} +CONSTCD11 inline bool month_day_last::ok() const NOEXCEPT {return m_.ok();} +CONSTCD11 inline month_day_last::month_day_last(const solar_hijri::month& m) NOEXCEPT : m_(m) {} + +CONSTCD11 +inline +bool +operator==(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return x.month() == y.month(); +} + +CONSTCD11 +inline +bool +operator!=(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return x.month() < y.month(); +} + +CONSTCD11 +inline +bool +operator>(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const month_day_last& x, const month_day_last& y) NOEXCEPT +{ + return !(x < y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_day_last& mdl) +{ + return os << mdl.month() << "/last"; +} + +// month_weekday + +CONSTCD11 +inline +month_weekday::month_weekday(const solar_hijri::month& m, + const solar_hijri::weekday_indexed& wdi) NOEXCEPT + : m_(m) + , wdi_(wdi) + {} + +CONSTCD11 inline month month_weekday::month() const NOEXCEPT {return m_;} + +CONSTCD11 +inline +weekday_indexed +month_weekday::weekday_indexed() const NOEXCEPT +{ + return wdi_; +} + +CONSTCD11 +inline +bool +month_weekday::ok() const NOEXCEPT +{ + return m_.ok() && wdi_.ok(); +} + +CONSTCD11 +inline +bool +operator==(const month_weekday& x, const month_weekday& y) NOEXCEPT +{ + return x.month() == y.month() && x.weekday_indexed() == y.weekday_indexed(); +} + +CONSTCD11 +inline +bool +operator!=(const month_weekday& x, const month_weekday& y) NOEXCEPT +{ + return !(x == y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_weekday& mwd) +{ + return os << mwd.month() << '/' << mwd.weekday_indexed(); +} + +// month_weekday_last + +CONSTCD11 +inline +month_weekday_last::month_weekday_last(const solar_hijri::month& m, + const solar_hijri::weekday_last& wdl) NOEXCEPT + : m_(m) + , wdl_(wdl) + {} + +CONSTCD11 inline month month_weekday_last::month() const NOEXCEPT {return m_;} + +CONSTCD11 +inline +weekday_last +month_weekday_last::weekday_last() const NOEXCEPT +{ + return wdl_; +} + +CONSTCD11 +inline +bool +month_weekday_last::ok() const NOEXCEPT +{ + return m_.ok() && wdl_.ok(); +} + +CONSTCD11 +inline +bool +operator==(const month_weekday_last& x, const month_weekday_last& y) NOEXCEPT +{ + return x.month() == y.month() && x.weekday_last() == y.weekday_last(); +} + +CONSTCD11 +inline +bool +operator!=(const month_weekday_last& x, const month_weekday_last& y) NOEXCEPT +{ + return !(x == y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const month_weekday_last& mwdl) +{ + return os << mwdl.month() << '/' << mwdl.weekday_last(); +} + +// year_month_day_last + +CONSTCD11 +inline +year_month_day_last::year_month_day_last(const solar_hijri::year& y, + const solar_hijri::month_day_last& mdl) NOEXCEPT + : y_(y) + , mdl_(mdl) + {} + +CONSTCD14 +inline +year_month_day_last& +year_month_day_last::operator+=(const months& m) NOEXCEPT +{ + *this = *this + m; + return *this; +} + +CONSTCD14 +inline +year_month_day_last& +year_month_day_last::operator-=(const months& m) NOEXCEPT +{ + *this = *this - m; + return *this; +} + +CONSTCD14 +inline +year_month_day_last& +year_month_day_last::operator+=(const years& y) NOEXCEPT +{ + *this = *this + y; + return *this; +} + +CONSTCD14 +inline +year_month_day_last& +year_month_day_last::operator-=(const years& y) NOEXCEPT +{ + *this = *this - y; + return *this; +} + +CONSTCD11 inline year year_month_day_last::year() const NOEXCEPT {return y_;} +CONSTCD11 inline month year_month_day_last::month() const NOEXCEPT {return mdl_.month();} + +CONSTCD11 +inline +month_day_last +year_month_day_last::month_day_last() const NOEXCEPT +{ + return mdl_; +} + +CONSTCD14 +inline +day +year_month_day_last::day() const NOEXCEPT +{ + CONSTDATA solar_hijri::day d[] = { + solar_hijri::day(31), solar_hijri::day(31), solar_hijri::day(31), + solar_hijri::day(31), solar_hijri::day(31), solar_hijri::day(31), + solar_hijri::day(30), solar_hijri::day(30), solar_hijri::day(30), + solar_hijri::day(30), solar_hijri::day(30), solar_hijri::day(29) + }; + return month() != esf || !y_.is_leap() ? + d[static_cast(month()) - 1] : solar_hijri::day(30); +} + +CONSTCD14 +inline +year_month_day_last::operator sys_days() const NOEXCEPT +{ + return sys_days(year()/month()/day()); +} + +CONSTCD14 +inline +year_month_day_last::operator local_days() const NOEXCEPT +{ + return local_days(year()/month()/day()); +} + +CONSTCD11 +inline +bool +year_month_day_last::ok() const NOEXCEPT +{ + return y_.ok() && mdl_.ok(); +} + +CONSTCD11 +inline +bool +operator==(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return x.year() == y.year() && x.month_day_last() == y.month_day_last(); +} + +CONSTCD11 +inline +bool +operator!=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return x.year() < y.year() ? true + : (x.year() > y.year() ? false + : (x.month_day_last() < y.month_day_last())); +} + +CONSTCD11 +inline +bool +operator>(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year_month_day_last& x, const year_month_day_last& y) NOEXCEPT +{ + return !(x < y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_day_last& ymdl) +{ + return os << ymdl.year() << '/' << ymdl.month_day_last(); +} + +CONSTCD14 +inline +year_month_day_last +operator+(const year_month_day_last& ymdl, const months& dm) NOEXCEPT +{ + return (ymdl.year() / ymdl.month() + dm) / last; +} + +CONSTCD14 +inline +year_month_day_last +operator+(const months& dm, const year_month_day_last& ymdl) NOEXCEPT +{ + return ymdl + dm; +} + +CONSTCD14 +inline +year_month_day_last +operator-(const year_month_day_last& ymdl, const months& dm) NOEXCEPT +{ + return ymdl + (-dm); +} + +CONSTCD11 +inline +year_month_day_last +operator+(const year_month_day_last& ymdl, const years& dy) NOEXCEPT +{ + return {ymdl.year()+dy, ymdl.month_day_last()}; +} + +CONSTCD11 +inline +year_month_day_last +operator+(const years& dy, const year_month_day_last& ymdl) NOEXCEPT +{ + return ymdl + dy; +} + +CONSTCD11 +inline +year_month_day_last +operator-(const year_month_day_last& ymdl, const years& dy) NOEXCEPT +{ + return ymdl + (-dy); +} + +// year_month_day + +CONSTCD11 +inline +year_month_day::year_month_day(const solar_hijri::year& y, const solar_hijri::month& m, + const solar_hijri::day& d) NOEXCEPT + : y_(y) + , m_(m) + , d_(d) + {} + +CONSTCD14 +inline +year_month_day::year_month_day(const year_month_day_last& ymdl) NOEXCEPT + : y_(ymdl.year()) + , m_(ymdl.month()) + , d_(ymdl.day()) + {} + +CONSTCD14 +inline +year_month_day::year_month_day(sys_days dp) NOEXCEPT + : year_month_day(from_days(dp.time_since_epoch())) + {} + +CONSTCD14 +inline +year_month_day::year_month_day(local_days dp) NOEXCEPT + : year_month_day(from_days(dp.time_since_epoch())) + {} + +CONSTCD11 inline year year_month_day::year() const NOEXCEPT {return y_;} +CONSTCD11 inline month year_month_day::month() const NOEXCEPT {return m_;} +CONSTCD11 inline day year_month_day::day() const NOEXCEPT {return d_;} + +CONSTCD14 +inline +year_month_day& +year_month_day::operator+=(const months& m) NOEXCEPT +{ + *this = *this + m; + return *this; +} + +CONSTCD14 +inline +year_month_day& +year_month_day::operator-=(const months& m) NOEXCEPT +{ + *this = *this - m; + return *this; +} + +CONSTCD14 +inline +year_month_day& +year_month_day::operator+=(const years& y) NOEXCEPT +{ + *this = *this + y; + return *this; +} + +CONSTCD14 +inline +year_month_day& +year_month_day::operator-=(const years& y) NOEXCEPT +{ + *this = *this - y; + return *this; +} + +CONSTCD14 +inline +days +year_month_day::to_days() const NOEXCEPT +{ + static_assert(std::numeric_limits::digits >= 18, + "This algorithm has not been ported to a 16 bit unsigned integer"); + static_assert(std::numeric_limits::digits >= 20, + "This algorithm has not been ported to a 16 bit signed integer"); + + using namespace internal; + auto const y = static_cast(y_) - 475; + auto const m = static_cast(m_); + auto const d = static_cast(d_); + auto const era_d = static_cast(y >= 0 ? y : y-years_in_era+1) / static_cast(years_in_era); + auto const era = static_cast(era_d); + auto const fdoe = static_cast(epoch + era * days_in_era); + auto const yoe = static_cast(y - era * years_in_era); + + auto const period_d = static_cast(yoe/years_in_period); + auto const period = static_cast(period_d); + auto const yop = yoe%years_in_period; + auto const fdop = period*days_in_period; + auto const cycle = yop < 29 ? 0 : static_cast((yop-29)/years_in_other_cycles + 1); + auto const yoc = yop < 29 ? yop : (yop-29)%years_in_other_cycles; + auto const fdoc = cycle > 0 ? days_in_first_cycle + (cycle-1)*days_in_other_cycles : 0; + auto const group = yoc < 1 ? 0 : static_cast((yoc-1) / 4); + auto const yog = static_cast(yoc < 1 ? -1 : (yoc-1) % 4); + auto const fdoyog = group*1461 + (yog+1)*365; + auto const fdoyoe = fdop + fdoc + fdoyog; + + auto const doy = 30*(m-1) + ((m > 6) ? 6 : m-1) + d-1; // [0, 365] + auto const doe = fdoe + fdoyoe + doy; + return days{doe - unix_time_shift}; +} + +CONSTCD14 +inline +year_month_day::operator sys_days() const NOEXCEPT +{ + return sys_days{to_days()}; +} + +CONSTCD14 +inline +year_month_day::operator local_days() const NOEXCEPT +{ + return local_days{to_days()}; +} + +CONSTCD14 +inline +bool +year_month_day::ok() const NOEXCEPT +{ + if (!(y_.ok() && m_.ok())) + return false; + return solar_hijri::day(1) <= d_ && d_ <= (y_/m_/last).day(); +} + +CONSTCD11 +inline +bool +operator==(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return x.year() == y.year() && x.month() == y.month() && x.day() == y.day(); +} + +CONSTCD11 +inline +bool +operator!=(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return !(x == y); +} + +CONSTCD11 +inline +bool +operator<(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return x.year() < y.year() ? true + : (x.year() > y.year() ? false + : (x.month() < y.month() ? true + : (x.month() > y.month() ? false + : (x.day() < y.day())))); +} + +CONSTCD11 +inline +bool +operator>(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return y < x; +} + +CONSTCD11 +inline +bool +operator<=(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return !(y < x); +} + +CONSTCD11 +inline +bool +operator>=(const year_month_day& x, const year_month_day& y) NOEXCEPT +{ + return !(x < y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_day& ymd) +{ + date::detail::save_ostream _(os); + os.fill('0'); + os.flags(std::ios::dec | std::ios::right); + os << ymd.year() << '-'; + os.width(2); + os << static_cast(ymd.month()) << '-'; + os << ymd.day(); + return os; +} + +CONSTCD14 +inline +year_month_day +year_month_day::from_days(days dp) NOEXCEPT +{ + static_assert(std::numeric_limits::digits >= 18, + "This algorithm has not been ported to a 16 bit unsigned integer"); + static_assert(std::numeric_limits::digits >= 20, + "This algorithm has not been ported to a 16 bit signed integer"); + + using namespace internal; + auto const z = dp.count() + unix_time_shift; + auto const delta = static_cast(z - epoch); + auto const era = static_cast(delta >= 0 ? delta : delta-days_in_era+1) / static_cast(days_in_era); + auto const era_i = static_cast(era); + auto const fdoe = static_cast(epoch + static_cast(era_i * days_in_era)); + + auto const doe_fdoe = z - fdoe; + auto const period = static_cast(doe_fdoe < 22*days_in_period ? doe_fdoe / days_in_period : 22); + auto const dop = doe_fdoe % days_in_period; + auto const cycle = dop < days_in_first_cycle ? 0 : (dop-days_in_first_cycle) / days_in_other_cycles + 1; + auto const doc = dop < days_in_first_cycle ? dop : (dop-days_in_first_cycle) % days_in_other_cycles; + auto const group = doc < 365 && period != 22 ? -1 : static_cast(((doc < 365 ? 365 : doc)-365)/1461); + auto const yog = doc < 365 && period != 22 ? -1 : static_cast( (period != 22 ? ((doc-365 )%1461) : doc)/365); + auto const yoc = group == -1 ? 0 : (period != 22 ? 1 : 0) + group*4 + (yog == 4 ? 3 : yog); + auto const doy = group == -1 ? doc : (period != 22 ? ((yoc-1)%4 == 0 ? (group >= 0 ? (doe_fdoe - + (period*days_in_period) - + (cycle > 0 ? days_in_first_cycle + (cycle-1)*days_in_other_cycles : 0) - + (group*1461 + ((yog == 4 ? 3 : yog)+1)*365)) + : 365) + : doe_fdoe - + (period*days_in_period) - + (cycle > 0 ? days_in_first_cycle + (cycle-1)*days_in_other_cycles : 0) - + (group*1461 + ((yog == 4 ? 3 : yog)+1)*365)) + : (yog == 4 ? 365 : doe_fdoe - (period*days_in_period) - yog*365)); + auto const yoe = period != 22 ? period*years_in_period + + (cycle > 0 ? years_in_first_cycle + + (cycle-1)*years_in_other_cycles + : 0) + + yoc + : 22*years_in_period + ((yog == 4) ? 3 : yog); + auto const y = static_cast(static_cast(yoe) + 475 + era_i * years_in_era); + auto const m = doy < 186 ? doy/31 + 1 : (doy-186)/30 + 7; // [1, 12] + auto const d = doy - (30*(m-1) + ((m > 6) ? 6 : m-1) - 1); // [1, 31] + + return year_month_day{solar_hijri::year(y), solar_hijri::month(m), solar_hijri::day(d)}; +} + +CONSTCD14 +inline +year_month_day +operator+(const year_month_day& ymd, const months& dm) NOEXCEPT +{ + return (ymd.year() / ymd.month() + dm) / ymd.day(); +} + +CONSTCD14 +inline +year_month_day +operator+(const months& dm, const year_month_day& ymd) NOEXCEPT +{ + return ymd + dm; +} + +CONSTCD14 +inline +year_month_day +operator-(const year_month_day& ymd, const months& dm) NOEXCEPT +{ + return ymd + (-dm); +} + +CONSTCD11 +inline +year_month_day +operator+(const year_month_day& ymd, const years& dy) NOEXCEPT +{ + return (ymd.year() + dy) / ymd.month() / ymd.day(); +} + +CONSTCD11 +inline +year_month_day +operator+(const years& dy, const year_month_day& ymd) NOEXCEPT +{ + return ymd + dy; +} + +CONSTCD11 +inline +year_month_day +operator-(const year_month_day& ymd, const years& dy) NOEXCEPT +{ + return ymd + (-dy); +} + +// year_month_weekday + +CONSTCD11 +inline +year_month_weekday::year_month_weekday(const solar_hijri::year& y, const solar_hijri::month& m, + const solar_hijri::weekday_indexed& wdi) + NOEXCEPT + : y_(y) + , m_(m) + , wdi_(wdi) + {} + +CONSTCD14 +inline +year_month_weekday::year_month_weekday(const sys_days& dp) NOEXCEPT + : year_month_weekday(from_days(dp.time_since_epoch())) + {} + +CONSTCD14 +inline +year_month_weekday::year_month_weekday(const local_days& dp) NOEXCEPT + : year_month_weekday(from_days(dp.time_since_epoch())) + {} + +CONSTCD14 +inline +year_month_weekday& +year_month_weekday::operator+=(const months& m) NOEXCEPT +{ + *this = *this + m; + return *this; +} + +CONSTCD14 +inline +year_month_weekday& +year_month_weekday::operator-=(const months& m) NOEXCEPT +{ + *this = *this - m; + return *this; +} + +CONSTCD14 +inline +year_month_weekday& +year_month_weekday::operator+=(const years& y) NOEXCEPT +{ + *this = *this + y; + return *this; +} + +CONSTCD14 +inline +year_month_weekday& +year_month_weekday::operator-=(const years& y) NOEXCEPT +{ + *this = *this - y; + return *this; +} + +CONSTCD11 inline year year_month_weekday::year() const NOEXCEPT {return y_;} +CONSTCD11 inline month year_month_weekday::month() const NOEXCEPT {return m_;} + +CONSTCD11 +inline +weekday +year_month_weekday::weekday() const NOEXCEPT +{ + return wdi_.weekday(); +} + +CONSTCD11 +inline +unsigned +year_month_weekday::index() const NOEXCEPT +{ + return wdi_.index(); +} + +CONSTCD11 +inline +weekday_indexed +year_month_weekday::weekday_indexed() const NOEXCEPT +{ + return wdi_; +} + +CONSTCD14 +inline +year_month_weekday::operator sys_days() const NOEXCEPT +{ + return sys_days{to_days()}; +} + +CONSTCD14 +inline +year_month_weekday::operator local_days() const NOEXCEPT +{ + return local_days{to_days()}; +} + +CONSTCD14 +inline +bool +year_month_weekday::ok() const NOEXCEPT +{ + if (!y_.ok() || !m_.ok() || !wdi_.weekday().ok() || wdi_.index() < 1) + return false; + if (wdi_.index() <= 4) + return true; + auto d2 = wdi_.weekday() - solar_hijri::weekday(y_/m_/1) + days((wdi_.index()-1)*7 + 1); + return static_cast(d2.count()) <= static_cast((y_/m_/last).day()); +} + +CONSTCD14 +inline +year_month_weekday +year_month_weekday::from_days(days d) NOEXCEPT +{ + sys_days dp{d}; + auto const wd = solar_hijri::weekday(dp); + auto const ymd = year_month_day(dp); + return {ymd.year(), ymd.month(), wd[(static_cast(ymd.day())-1)/7+1]}; +} + +CONSTCD14 +inline +days +year_month_weekday::to_days() const NOEXCEPT +{ + auto d = sys_days(y_/m_/1); + return (d + (wdi_.weekday() - solar_hijri::weekday(d) + days{(wdi_.index()-1)*7}) + ).time_since_epoch(); +} + +CONSTCD11 +inline +bool +operator==(const year_month_weekday& x, const year_month_weekday& y) NOEXCEPT +{ + return x.year() == y.year() && x.month() == y.month() && + x.weekday_indexed() == y.weekday_indexed(); +} + +CONSTCD11 +inline +bool +operator!=(const year_month_weekday& x, const year_month_weekday& y) NOEXCEPT +{ + return !(x == y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_weekday& ymwdi) +{ + return os << ymwdi.year() << '/' << ymwdi.month() + << '/' << ymwdi.weekday_indexed(); +} + +CONSTCD14 +inline +year_month_weekday +operator+(const year_month_weekday& ymwd, const months& dm) NOEXCEPT +{ + return (ymwd.year() / ymwd.month() + dm) / ymwd.weekday_indexed(); +} + +CONSTCD14 +inline +year_month_weekday +operator+(const months& dm, const year_month_weekday& ymwd) NOEXCEPT +{ + return ymwd + dm; +} + +CONSTCD14 +inline +year_month_weekday +operator-(const year_month_weekday& ymwd, const months& dm) NOEXCEPT +{ + return ymwd + (-dm); +} + +CONSTCD11 +inline +year_month_weekday +operator+(const year_month_weekday& ymwd, const years& dy) NOEXCEPT +{ + return {ymwd.year()+dy, ymwd.month(), ymwd.weekday_indexed()}; +} + +CONSTCD11 +inline +year_month_weekday +operator+(const years& dy, const year_month_weekday& ymwd) NOEXCEPT +{ + return ymwd + dy; +} + +CONSTCD11 +inline +year_month_weekday +operator-(const year_month_weekday& ymwd, const years& dy) NOEXCEPT +{ + return ymwd + (-dy); +} + +// year_month_weekday_last + +CONSTCD11 +inline +year_month_weekday_last::year_month_weekday_last(const solar_hijri::year& y, + const solar_hijri::month& m, + const solar_hijri::weekday_last& wdl) NOEXCEPT + : y_(y) + , m_(m) + , wdl_(wdl) + {} + +CONSTCD14 +inline +year_month_weekday_last& +year_month_weekday_last::operator+=(const months& m) NOEXCEPT +{ + *this = *this + m; + return *this; +} + +CONSTCD14 +inline +year_month_weekday_last& +year_month_weekday_last::operator-=(const months& m) NOEXCEPT +{ + *this = *this - m; + return *this; +} + +CONSTCD14 +inline +year_month_weekday_last& +year_month_weekday_last::operator+=(const years& y) NOEXCEPT +{ + *this = *this + y; + return *this; +} + +CONSTCD14 +inline +year_month_weekday_last& +year_month_weekday_last::operator-=(const years& y) NOEXCEPT +{ + *this = *this - y; + return *this; +} + +CONSTCD11 inline year year_month_weekday_last::year() const NOEXCEPT {return y_;} +CONSTCD11 inline month year_month_weekday_last::month() const NOEXCEPT {return m_;} + +CONSTCD11 +inline +weekday +year_month_weekday_last::weekday() const NOEXCEPT +{ + return wdl_.weekday(); +} + +CONSTCD11 +inline +weekday_last +year_month_weekday_last::weekday_last() const NOEXCEPT +{ + return wdl_; +} + +CONSTCD14 +inline +year_month_weekday_last::operator sys_days() const NOEXCEPT +{ + return sys_days{to_days()}; +} + +CONSTCD14 +inline +year_month_weekday_last::operator local_days() const NOEXCEPT +{ + return local_days{to_days()}; +} + +CONSTCD11 +inline +bool +year_month_weekday_last::ok() const NOEXCEPT +{ + return y_.ok() && m_.ok() && wdl_.ok(); +} + +CONSTCD14 +inline +days +year_month_weekday_last::to_days() const NOEXCEPT +{ + auto const d = sys_days(y_/m_/last); + return (d - (solar_hijri::weekday{d} - wdl_.weekday())).time_since_epoch(); +} + +CONSTCD11 +inline +bool +operator==(const year_month_weekday_last& x, const year_month_weekday_last& y) NOEXCEPT +{ + return x.year() == y.year() && x.month() == y.month() && + x.weekday_last() == y.weekday_last(); +} + +CONSTCD11 +inline +bool +operator!=(const year_month_weekday_last& x, const year_month_weekday_last& y) NOEXCEPT +{ + return !(x == y); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const year_month_weekday_last& ymwdl) +{ + return os << ymwdl.year() << '/' << ymwdl.month() << '/' << ymwdl.weekday_last(); +} + +CONSTCD14 +inline +year_month_weekday_last +operator+(const year_month_weekday_last& ymwdl, const months& dm) NOEXCEPT +{ + return (ymwdl.year() / ymwdl.month() + dm) / ymwdl.weekday_last(); +} + +CONSTCD14 +inline +year_month_weekday_last +operator+(const months& dm, const year_month_weekday_last& ymwdl) NOEXCEPT +{ + return ymwdl + dm; +} + +CONSTCD14 +inline +year_month_weekday_last +operator-(const year_month_weekday_last& ymwdl, const months& dm) NOEXCEPT +{ + return ymwdl + (-dm); +} + +CONSTCD11 +inline +year_month_weekday_last +operator+(const year_month_weekday_last& ymwdl, const years& dy) NOEXCEPT +{ + return {ymwdl.year()+dy, ymwdl.month(), ymwdl.weekday_last()}; +} + +CONSTCD11 +inline +year_month_weekday_last +operator+(const years& dy, const year_month_weekday_last& ymwdl) NOEXCEPT +{ + return ymwdl + dy; +} + +CONSTCD11 +inline +year_month_weekday_last +operator-(const year_month_weekday_last& ymwdl, const years& dy) NOEXCEPT +{ + return ymwdl + (-dy); +} + +// year_month from operator/() + +CONSTCD11 +inline +year_month +operator/(const year& y, const month& m) NOEXCEPT +{ + return {y, m}; +} + +CONSTCD11 +inline +year_month +operator/(const year& y, int m) NOEXCEPT +{ + return y / month(static_cast(m)); +} + +// month_day from operator/() + +CONSTCD11 +inline +month_day +operator/(const month& m, const day& d) NOEXCEPT +{ + return {m, d}; +} + +CONSTCD11 +inline +month_day +operator/(const day& d, const month& m) NOEXCEPT +{ + return m / d; +} + +CONSTCD11 +inline +month_day +operator/(const month& m, int d) NOEXCEPT +{ + return m / day(static_cast(d)); +} + +CONSTCD11 +inline +month_day +operator/(int m, const day& d) NOEXCEPT +{ + return month(static_cast(m)) / d; +} + +CONSTCD11 inline month_day operator/(const day& d, int m) NOEXCEPT {return m / d;} + +// month_day_last from operator/() + +CONSTCD11 +inline +month_day_last +operator/(const month& m, last_spec) NOEXCEPT +{ + return month_day_last{m}; +} + +CONSTCD11 +inline +month_day_last +operator/(last_spec, const month& m) NOEXCEPT +{ + return m/last; +} + +CONSTCD11 +inline +month_day_last +operator/(int m, last_spec) NOEXCEPT +{ + return month(static_cast(m))/last; +} + +CONSTCD11 +inline +month_day_last +operator/(last_spec, int m) NOEXCEPT +{ + return m/last; +} + +// month_weekday from operator/() + +CONSTCD11 +inline +month_weekday +operator/(const month& m, const weekday_indexed& wdi) NOEXCEPT +{ + return {m, wdi}; +} + +CONSTCD11 +inline +month_weekday +operator/(const weekday_indexed& wdi, const month& m) NOEXCEPT +{ + return m / wdi; +} + +CONSTCD11 +inline +month_weekday +operator/(int m, const weekday_indexed& wdi) NOEXCEPT +{ + return month(static_cast(m)) / wdi; +} + +CONSTCD11 +inline +month_weekday +operator/(const weekday_indexed& wdi, int m) NOEXCEPT +{ + return m / wdi; +} + +// month_weekday_last from operator/() + +CONSTCD11 +inline +month_weekday_last +operator/(const month& m, const weekday_last& wdl) NOEXCEPT +{ + return {m, wdl}; +} + +CONSTCD11 +inline +month_weekday_last +operator/(const weekday_last& wdl, const month& m) NOEXCEPT +{ + return m / wdl; +} + +CONSTCD11 +inline +month_weekday_last +operator/(int m, const weekday_last& wdl) NOEXCEPT +{ + return month(static_cast(m)) / wdl; +} + +CONSTCD11 +inline +month_weekday_last +operator/(const weekday_last& wdl, int m) NOEXCEPT +{ + return m / wdl; +} + +// year_month_day from operator/() + +CONSTCD11 +inline +year_month_day +operator/(const year_month& ym, const day& d) NOEXCEPT +{ + return {ym.year(), ym.month(), d}; +} + +CONSTCD11 +inline +year_month_day +operator/(const year_month& ym, int d) NOEXCEPT +{ + return ym / day(static_cast(d)); +} + +CONSTCD11 +inline +year_month_day +operator/(const year& y, const month_day& md) NOEXCEPT +{ + return y / md.month() / md.day(); +} + +CONSTCD11 +inline +year_month_day +operator/(int y, const month_day& md) NOEXCEPT +{ + return year(y) / md; +} + +CONSTCD11 +inline +year_month_day +operator/(const month_day& md, const year& y) NOEXCEPT +{ + return y / md; +} + +CONSTCD11 +inline +year_month_day +operator/(const month_day& md, int y) NOEXCEPT +{ + return year(y) / md; +} + +// year_month_day_last from operator/() + +CONSTCD11 +inline +year_month_day_last +operator/(const year_month& ym, last_spec) NOEXCEPT +{ + return {ym.year(), month_day_last{ym.month()}}; +} + +CONSTCD11 +inline +year_month_day_last +operator/(const year& y, const month_day_last& mdl) NOEXCEPT +{ + return {y, mdl}; +} + +CONSTCD11 +inline +year_month_day_last +operator/(int y, const month_day_last& mdl) NOEXCEPT +{ + return year(y) / mdl; +} + +CONSTCD11 +inline +year_month_day_last +operator/(const month_day_last& mdl, const year& y) NOEXCEPT +{ + return y / mdl; +} + +CONSTCD11 +inline +year_month_day_last +operator/(const month_day_last& mdl, int y) NOEXCEPT +{ + return year(y) / mdl; +} + +// year_month_weekday from operator/() + +CONSTCD11 +inline +year_month_weekday +operator/(const year_month& ym, const weekday_indexed& wdi) NOEXCEPT +{ + return {ym.year(), ym.month(), wdi}; +} + +CONSTCD11 +inline +year_month_weekday +operator/(const year& y, const month_weekday& mwd) NOEXCEPT +{ + return {y, mwd.month(), mwd.weekday_indexed()}; +} + +CONSTCD11 +inline +year_month_weekday +operator/(int y, const month_weekday& mwd) NOEXCEPT +{ + return year(y) / mwd; +} + +CONSTCD11 +inline +year_month_weekday +operator/(const month_weekday& mwd, const year& y) NOEXCEPT +{ + return y / mwd; +} + +CONSTCD11 +inline +year_month_weekday +operator/(const month_weekday& mwd, int y) NOEXCEPT +{ + return year(y) / mwd; +} + +// year_month_weekday_last from operator/() + +CONSTCD11 +inline +year_month_weekday_last +operator/(const year_month& ym, const weekday_last& wdl) NOEXCEPT +{ + return {ym.year(), ym.month(), wdl}; +} + +CONSTCD11 +inline +year_month_weekday_last +operator/(const year& y, const month_weekday_last& mwdl) NOEXCEPT +{ + return {y, mwdl.month(), mwdl.weekday_last()}; +} + +CONSTCD11 +inline +year_month_weekday_last +operator/(int y, const month_weekday_last& mwdl) NOEXCEPT +{ + return year(y) / mwdl; +} + +CONSTCD11 +inline +year_month_weekday_last +operator/(const month_weekday_last& mwdl, const year& y) NOEXCEPT +{ + return y / mwdl; +} + +CONSTCD11 +inline +year_month_weekday_last +operator/(const month_weekday_last& mwdl, int y) NOEXCEPT +{ + return year(y) / mwdl; +} + +} // namespace solar_hijri + +#endif // SOLAR_HIJRI_H diff --git a/src/date/tz.cpp b/src/date/tz.cpp new file mode 100644 index 0000000..999403e --- /dev/null +++ b/src/date/tz.cpp @@ -0,0 +1,4073 @@ +// The MIT License (MIT) +// +// Copyright (c) 2015, 2016, 2017 Howard Hinnant +// Copyright (c) 2015 Ville Voutilainen +// Copyright (c) 2016 Alexander Kormanovsky +// Copyright (c) 2016, 2017 Jiangang Zhuang +// Copyright (c) 2017 Nicolas Veloz Savino +// Copyright (c) 2017 Florian Dang +// Copyright (c) 2017 Aaron Bishop +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// Our apologies. When the previous paragraph was written, lowercase had not yet +// been invented (that would involve another several millennia of evolution). +// We did not mean to shout. + +#ifdef _WIN32 + // windows.h will be included directly and indirectly (e.g. by curl). + // We need to define these macros to prevent windows.h bringing in + // more than we need and do it early so windows.h doesn't get included + // without these macros having been defined. + // min/max macros interfere with the C++ versions. +# ifndef NOMINMAX +# define NOMINMAX +# endif + // We don't need all that Windows has to offer. +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +# endif + + // for wcstombs +# ifndef _CRT_SECURE_NO_WARNINGS +# define _CRT_SECURE_NO_WARNINGS +# endif + + // None of this happens with the MS SDK (at least VS14 which I tested), but: + // Compiling with mingw, we get "error: 'KF_FLAG_DEFAULT' was not declared in this scope." + // and error: 'SHGetKnownFolderPath' was not declared in this scope.". + // It seems when using mingw NTDDI_VERSION is undefined and that + // causes KNOWN_FOLDER_FLAG and the KF_ flags to not get defined. + // So we must define NTDDI_VERSION to get those flags on mingw. + // The docs say though here: + // https://msdn.microsoft.com/en-nz/library/windows/desktop/aa383745(v=vs.85).aspx + // that "If you define NTDDI_VERSION, you must also define _WIN32_WINNT." + // So we declare we require Vista or greater. +# ifdef __MINGW32__ + +# ifndef NTDDI_VERSION +# define NTDDI_VERSION 0x06000000 +# define _WIN32_WINNT _WIN32_WINNT_VISTA +# elif NTDDI_VERSION < 0x06000000 +# warning "If this fails to compile NTDDI_VERSION may be to low. See comments above." +# endif + // But once we define the values above we then get this linker error: + // "tz.cpp:(.rdata$.refptr.FOLDERID_Downloads[.refptr.FOLDERID_Downloads]+0x0): " + // "undefined reference to `FOLDERID_Downloads'" + // which #include cures see: + // https://support.microsoft.com/en-us/kb/130869 +# include + // But with included, the error moves on to: + // error: 'FOLDERID_Downloads' was not declared in this scope + // Which #include cures. +# include + +# endif // __MINGW32__ + +# include +#endif // _WIN32 + +#include "date/tz_private.h" + +#ifdef __APPLE__ +# include "date/ios.h" +#else +# define TARGET_OS_IPHONE 0 +# define TARGET_OS_SIMULATOR 0 +#endif + +#if USE_OS_TZDB +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if USE_OS_TZDB +# include +#endif +#include +#include +#include +#include +#include + +// unistd.h is used on some platforms as part of the the means to get +// the current time zone. On Win32 windows.h provides a means to do it. +// gcc/mingw supports unistd.h on Win32 but MSVC does not. + +#ifdef _WIN32 +# ifdef WINAPI_FAMILY +# include +# if WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP +# define WINRT +# define INSTALL . +# endif +# endif + +# include // _unlink etc. + +# if defined(__clang__) + struct IUnknown; // fix for issue with static_cast<> in objbase.h + // (see https://github.com/philsquared/Catch/issues/690) +# endif + +# include // CoTaskFree, ShGetKnownFolderPath etc. +# if HAS_REMOTE_API +# include // _mkdir +# include // ShFileOperation etc. +# endif // HAS_REMOTE_API +#else // !_WIN32 +# include +# if !USE_OS_TZDB && !defined(INSTALL) +# include +# endif +# include +# include +# if !USE_SHELL_API +# include +# include +# include +# include +# include +# include +# endif //!USE_SHELL_API +#endif // !_WIN32 + + +#if HAS_REMOTE_API + // Note curl includes windows.h so we must include curl AFTER definitions of things + // that affect windows.h such as NOMINMAX. +#if defined(_MSC_VER) && defined(SHORTENED_CURL_INCLUDE) + // For rmt_curl nuget package +# include +#else +# include +#endif +#endif + +#ifdef _WIN32 +static CONSTDATA char folder_delimiter = '\\'; +#else // !_WIN32 +static CONSTDATA char folder_delimiter = '/'; +#endif // !_WIN32 + +#if defined(__GNUC__) && __GNUC__ < 5 + // GCC 4.9 Bug 61489 Wrong warning with -Wmissing-field-initializers +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#endif // defined(__GNUC__) && __GNUC__ < 5 + +#if !USE_OS_TZDB + +# ifdef _WIN32 +# ifndef WINRT + +namespace +{ + struct task_mem_deleter + { + void operator()(wchar_t buf[]) + { + if (buf != nullptr) + CoTaskMemFree(buf); + } + }; + using co_task_mem_ptr = std::unique_ptr; +} + +static +std::wstring +convert_utf8_to_utf16(const std::string& s) +{ + std::wstring out; + const int size = MultiByteToWideChar(CP_UTF8, 0, s.c_str(), -1, NULL, 0); + + if (size == 0) + { + std::string msg = "Failed to determine required size when converting \""; + msg += s; + msg += "\" to UTF-16."; + throw std::runtime_error(msg); + } + + out.resize(size); + const int check = MultiByteToWideChar(CP_UTF8, 0, s.c_str(), -1, &out[0], size); + + if (size != check) + { + std::string msg = "Failed to convert \""; + msg += s; + msg += "\" to UTF-16."; + throw std::runtime_error(msg); + } + + return out; +} + +// We might need to know certain locations even if not using the remote API, +// so keep these routines out of that block for now. +static +std::string +get_known_folder(const GUID& folderid) +{ + std::string folder; + PWSTR pfolder = nullptr; + HRESULT hr = SHGetKnownFolderPath(folderid, KF_FLAG_DEFAULT, nullptr, &pfolder); + if (SUCCEEDED(hr)) + { + co_task_mem_ptr folder_ptr(pfolder); + const wchar_t* fptr = folder_ptr.get(); + auto state = std::mbstate_t(); + const auto required = std::wcsrtombs(nullptr, &fptr, 0, &state); + if (required != 0 && required != std::size_t(-1)) + { + folder.resize(required); + std::wcsrtombs(&folder[0], &fptr, folder.size(), &state); + } + } + return folder; +} + +# ifndef INSTALL + +// Usually something like "c:\Users\username\Downloads". +static +std::string +get_download_folder() +{ + return get_known_folder(FOLDERID_Downloads); +} + +# endif // !INSTALL + +# endif // WINRT +# else // !_WIN32 + +# if !defined(INSTALL) + +static +std::string +expand_path(std::string path) +{ +# if TARGET_OS_IPHONE + return date::iOSUtils::get_tzdata_path(); +# else // !TARGET_OS_IPHONE + ::wordexp_t w{}; + std::unique_ptr<::wordexp_t, void(*)(::wordexp_t*)> hold{&w, ::wordfree}; + ::wordexp(path.c_str(), &w, 0); + if (w.we_wordc != 1) + throw std::runtime_error("Cannot expand path: " + path); + path = w.we_wordv[0]; + return path; +# endif // !TARGET_OS_IPHONE +} + +static +std::string +get_download_folder() +{ + return expand_path("~/Downloads"); +} + +# endif // !defined(INSTALL) + +# endif // !_WIN32 + +/* + * This class is provided to mimic the following usage of `ifstream`: + * + * std::ifstream is(filename); + * + * file_streambuf ibuf(filename); + * std::istream is(&ibuf); + * + * This is required because `ifstream` does not support opening files + * containing wide characters on Windows. On Windows, `file_streambuf` uses + * `file_open()` to convert the file name to UTF-16 before opening it with + * `_wfopen()`. + * + * Note that this is not an exact re-implementation of `ifstream`, + * but is enough for usage here. + * + * It is partially based on these two implementations: + * - fdinbuf from http://www.josuttis.com/cppcode/fdstream.html + * - stdiobuf https://stackoverflow.com/questions/12342542/convert-file-to-ifstream-c-android-ndk + * + * Apparently MSVC provides non-standard overloads of `ifstream` that support + * a `const wchar_t*` file name, but MinGW does not https://stackoverflow.com/a/822032 + */ +class file_streambuf + : public std::streambuf +{ +private: + FILE* file_; + static const int buffer_size_ = 1024; + char buffer_[buffer_size_]; + +public: + ~file_streambuf() + { + if (file_) + { + ::fclose(file_); + } + } + file_streambuf(const file_streambuf&) = delete; + file_streambuf& operator=(const file_streambuf&) = delete; + + file_streambuf(const std::string& filename) + : file_(file_open(filename)) + { + } + +protected: + virtual + int_type + underflow() + { + if (gptr() == egptr() && file_) + { + const size_t size = ::fread(buffer_, 1, buffer_size_, file_); + setg(buffer_, buffer_, buffer_ + size); + } + return (gptr() == egptr()) + ? traits_type::eof() + : traits_type::to_int_type(*gptr()); + } + +private: + FILE* + file_open(const std::string& filename) + { +# ifdef _WIN32 + std::wstring wfilename = convert_utf8_to_utf16(filename); + FILE* file = ::_wfopen(wfilename.c_str(), L"rb"); +# else // !_WIN32 + FILE* file = ::fopen(filename.c_str(), "rb"); +# endif // _WIN32 + if (file == NULL) + { + std::string msg = "Error opening file \""; + msg += filename; + msg += "\"."; + throw std::runtime_error(msg); + } + return file; + } +}; + +#endif // !USE_OS_TZDB + +namespace date +{ +// +---------------------+ +// | Begin Configuration | +// +---------------------+ + +using namespace detail; + +#if !USE_OS_TZDB + +static +std::string& +access_install() +{ + static std::string install +#ifndef INSTALL + + = get_download_folder() + folder_delimiter + "tzdata"; + +#else // !INSTALL + +# define STRINGIZEIMP(x) #x +# define STRINGIZE(x) STRINGIZEIMP(x) + + = STRINGIZE(INSTALL) + std::string(1, folder_delimiter) + "tzdata"; + + #undef STRINGIZEIMP + #undef STRINGIZE +#endif // !INSTALL + + return install; +} + +void +set_install(const std::string& install) +{ + access_install() = install; +} + +static +const std::string& +get_install() +{ + static const std::string& ref = access_install(); + return ref; +} + +#if HAS_REMOTE_API +static +std::string +get_download_gz_file(const std::string& version) +{ + auto file = get_install() + version + ".tar.gz"; + return file; +} +#endif // HAS_REMOTE_API + +#endif // !USE_OS_TZDB + +// These can be used to reduce the range of the database to save memory +CONSTDATA auto min_year = date::year::min(); +CONSTDATA auto max_year = date::year::max(); + +CONSTDATA auto min_day = date::January/1; +CONSTDATA auto max_day = date::December/31; + +#if USE_OS_TZDB + +CONSTCD14 const sys_seconds min_seconds = sys_days(min_year/min_day); + +#endif // USE_OS_TZDB + +#ifndef _WIN32 + +static +std::string +discover_tz_dir() +{ + struct stat sb; + using namespace std; +# ifndef __APPLE__ + CONSTDATA auto tz_dir_default = "/usr/share/zoneinfo"; + CONSTDATA auto tz_dir_buildroot = "/usr/share/zoneinfo/uclibc"; + + // Check special path which is valid for buildroot with uclibc builds + if(stat(tz_dir_buildroot, &sb) == 0 && S_ISDIR(sb.st_mode)) + return tz_dir_buildroot; + else if(stat(tz_dir_default, &sb) == 0 && S_ISDIR(sb.st_mode)) + return tz_dir_default; + else + throw runtime_error("discover_tz_dir failed to find zoneinfo\n"); +# else // __APPLE__ +# if TARGET_OS_IPHONE +# if TARGET_OS_SIMULATOR + return "/usr/share/zoneinfo"; +# else + return "/var/db/timezone/zoneinfo"; +# endif +# else + CONSTDATA auto timezone = "/etc/localtime"; + if (!(lstat(timezone, &sb) == 0 && S_ISLNK(sb.st_mode) && sb.st_size > 0)) + throw runtime_error("discover_tz_dir failed\n"); + string result; + char rp[PATH_MAX+1] = {}; + if (readlink(timezone, rp, sizeof(rp)-1) > 0) + result = string(rp); + else + throw system_error(errno, system_category(), "readlink() failed"); + auto i = result.find("zoneinfo"); + if (i == string::npos) + throw runtime_error("discover_tz_dir failed to find zoneinfo\n"); + i = result.find('/', i); + if (i == string::npos) + throw runtime_error("discover_tz_dir failed to find '/'\n"); + return result.substr(0, i); +# endif +# endif // __APPLE__ +} + +static +const std::string& +get_tz_dir() +{ + static const std::string tz_dir = discover_tz_dir(); + return tz_dir; +} + +#endif + +// +-------------------+ +// | End Configuration | +// +-------------------+ + +#ifndef _MSC_VER +static_assert(min_year <= max_year, "Configuration error"); +#endif + +static std::unique_ptr init_tzdb(); + +tzdb_list::~tzdb_list() +{ + const tzdb* ptr = head_; + head_ = nullptr; + while (ptr != nullptr) + { + auto next = ptr->next; + delete ptr; + ptr = next; + } +} + +tzdb_list::tzdb_list(tzdb_list&& x) NOEXCEPT + : head_{x.head_.exchange(nullptr)} +{ +} + +void +tzdb_list::push_front(tzdb* tzdb) NOEXCEPT +{ + tzdb->next = head_; + head_ = tzdb; +} + +tzdb_list::const_iterator +tzdb_list::erase_after(const_iterator p) NOEXCEPT +{ + auto t = p.p_->next; + p.p_->next = p.p_->next->next; + delete t; + return ++p; +} + +struct tzdb_list::undocumented_helper +{ + static void push_front(tzdb_list& db_list, tzdb* tzdb) NOEXCEPT + { + db_list.push_front(tzdb); + } +}; + +static +tzdb_list +create_tzdb() +{ + tzdb_list tz_db; + tzdb_list::undocumented_helper::push_front(tz_db, init_tzdb().release()); + return tz_db; +} + +tzdb_list& +get_tzdb_list() +{ + static tzdb_list tz_db = create_tzdb(); + return tz_db; +} + +static +std::string +parse3(std::istream& in) +{ + std::string r(3, ' '); + ws(in); + r[0] = static_cast(in.get()); + r[1] = static_cast(in.get()); + r[2] = static_cast(in.get()); + return r; +} + +static +unsigned +parse_month(std::istream& in) +{ + CONSTDATA char*const month_names[] = + {"Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; + auto s = parse3(in); + auto m = std::find(std::begin(month_names), std::end(month_names), s) - month_names; + if (m >= std::end(month_names) - std::begin(month_names)) + throw std::runtime_error("oops: bad month name: " + s); + return static_cast(++m); +} + +#if !USE_OS_TZDB + +#ifdef _WIN32 + +static +void +sort_zone_mappings(std::vector& mappings) +{ + std::sort(mappings.begin(), mappings.end(), + [](const date::detail::timezone_mapping& lhs, + const date::detail::timezone_mapping& rhs)->bool + { + auto other_result = lhs.other.compare(rhs.other); + if (other_result < 0) + return true; + else if (other_result == 0) + { + auto territory_result = lhs.territory.compare(rhs.territory); + if (territory_result < 0) + return true; + else if (territory_result == 0) + { + if (lhs.type < rhs.type) + return true; + } + } + return false; + }); +} + +static +bool +native_to_standard_timezone_name(const std::string& native_tz_name, + std::string& standard_tz_name) +{ + // TOOD! Need be a case insensitive compare? + if (native_tz_name == "UTC") + { + standard_tz_name = "Etc/UTC"; + return true; + } + standard_tz_name.clear(); + // TODO! we can improve on linear search. + const auto& mappings = date::get_tzdb().mappings; + for (const auto& tzm : mappings) + { + if (tzm.other == native_tz_name) + { + standard_tz_name = tzm.type; + return true; + } + } + return false; +} + +// Parse this XML file: +// https://raw.githubusercontent.com/unicode-org/cldr/master/common/supplemental/windowsZones.xml +// The parsing method is designed to be simple and quick. It is not overly +// forgiving of change but it should diagnose basic format issues. +// See timezone_mapping structure for more info. +static +std::vector +load_timezone_mappings_from_xml_file(const std::string& input_path) +{ + std::size_t line_num = 0; + std::vector mappings; + std::string line; + + file_streambuf ibuf(input_path); + std::istream is(&ibuf); + + auto error = [&input_path, &line_num](const char* info) + { + std::string msg = "Error loading time zone mapping file \""; + msg += input_path; + msg += "\" at line "; + msg += std::to_string(line_num); + msg += ": "; + msg += info; + throw std::runtime_error(msg); + }; + // [optional space]a="b" + auto read_attribute = [&line, &error] + (const char* name, std::string& value, std::size_t startPos) + ->std::size_t + { + value.clear(); + // Skip leading space before attribute name. + std::size_t spos = line.find_first_not_of(' ', startPos); + if (spos == std::string::npos) + spos = startPos; + // Assume everything up to next = is the attribute name + // and that an = will always delimit that. + std::size_t epos = line.find('=', spos); + if (epos == std::string::npos) + error("Expected \'=\' right after attribute name."); + std::size_t name_len = epos - spos; + // Expect the name we find matches the name we expect. + if (line.compare(spos, name_len, name) != 0) + { + std::string msg; + msg = "Expected attribute name \'"; + msg += name; + msg += "\' around position "; + msg += std::to_string(spos); + msg += " but found something else."; + error(msg.c_str()); + } + ++epos; // Skip the '=' that is after the attribute name. + spos = epos; + if (spos < line.length() && line[spos] == '\"') + ++spos; // Skip the quote that is before the attribute value. + else + { + std::string msg = "Expected '\"' to begin value of attribute \'"; + msg += name; + msg += "\'."; + error(msg.c_str()); + } + epos = line.find('\"', spos); + if (epos == std::string::npos) + { + std::string msg = "Expected '\"' to end value of attribute \'"; + msg += name; + msg += "\'."; + error(msg.c_str()); + } + // Extract everything in between the quotes. Note no escaping is done. + std::size_t value_len = epos - spos; + value.assign(line, spos, value_len); + ++epos; // Skip the quote that is after the attribute value; + return epos; + }; + + // Quick but not overly forgiving XML mapping file processing. + bool mapTimezonesOpenTagFound = false; + bool mapTimezonesCloseTagFound = false; + std::size_t mapZonePos = std::string::npos; + std::size_t mapTimezonesPos = std::string::npos; + CONSTDATA char mapTimeZonesOpeningTag[] = { ""); + mapTimezonesCloseTagFound = (mapTimezonesPos != std::string::npos); + if (!mapTimezonesCloseTagFound) + { + std::size_t commentPos = line.find(" " << x.target_; +} + +// leap_second + +leap_second::leap_second(const std::string& s, detail::undocumented) +{ + using namespace date; + std::istringstream in(s); + in.exceptions(std::ios::failbit | std::ios::badbit); + std::string word; + int y; + MonthDayTime date; + in >> word >> y >> date; + date_ = date.to_time_point(year(y)); +} + +static +bool +file_exists(const std::string& filename) +{ +#ifdef _WIN32 + std::wstring wfilename = convert_utf8_to_utf16(filename); + return ::_waccess(wfilename.c_str(), 0) == 0; +#else + return ::access(filename.c_str(), F_OK) == 0; +#endif +} + +#if HAS_REMOTE_API + +// CURL tools + +namespace +{ + +struct curl_global_init_and_cleanup +{ + ~curl_global_init_and_cleanup() + { + ::curl_global_cleanup(); + } + curl_global_init_and_cleanup() + { + if (::curl_global_init(CURL_GLOBAL_DEFAULT) != 0) + throw std::runtime_error("CURL global initialization failed"); + } + curl_global_init_and_cleanup(curl_global_init_and_cleanup const&) = delete; + curl_global_init_and_cleanup& operator=(curl_global_init_and_cleanup const&) = delete; +}; + +struct curl_deleter +{ + void operator()(CURL* p) const + { + ::curl_easy_cleanup(p); + } +}; + +} // unnamed namespace + +static +std::unique_ptr +curl_init() +{ + static const curl_global_init_and_cleanup _{}; + return std::unique_ptr{::curl_easy_init()}; +} + +static +bool +download_to_string(const std::string& url, std::string& str) +{ + str.clear(); + auto curl = curl_init(); + if (!curl) + return false; + std::string version; + curl_easy_setopt(curl.get(), CURLOPT_USERAGENT, "curl"); + curl_easy_setopt(curl.get(), CURLOPT_URL, url.c_str()); + curl_write_callback write_cb = [](char* contents, std::size_t size, std::size_t nmemb, + void* userp) -> std::size_t + { + auto& userstr = *static_cast(userp); + auto realsize = size * nmemb; + userstr.append(contents, realsize); + return realsize; + }; + curl_easy_setopt(curl.get(), CURLOPT_WRITEFUNCTION, write_cb); + curl_easy_setopt(curl.get(), CURLOPT_WRITEDATA, &str); + curl_easy_setopt(curl.get(), CURLOPT_SSL_VERIFYPEER, false); + auto res = curl_easy_perform(curl.get()); + return (res == CURLE_OK); +} + +namespace +{ + enum class download_file_options { binary, text }; +} + +static +bool +download_to_file(const std::string& url, const std::string& local_filename, + download_file_options opts, char* error_buffer) +{ + auto curl = curl_init(); + if (!curl) + return false; + curl_easy_setopt(curl.get(), CURLOPT_URL, url.c_str()); + curl_easy_setopt(curl.get(), CURLOPT_SSL_VERIFYPEER, false); + if (error_buffer) + curl_easy_setopt(curl.get(), CURLOPT_ERRORBUFFER, error_buffer); + curl_write_callback write_cb = [](char* contents, std::size_t size, std::size_t nmemb, + void* userp) -> std::size_t + { + auto& of = *static_cast(userp); + auto realsize = size * nmemb; + of.write(contents, static_cast(realsize)); + return realsize; + }; + curl_easy_setopt(curl.get(), CURLOPT_WRITEFUNCTION, write_cb); + decltype(curl_easy_perform(curl.get())) res; + { + std::ofstream of(local_filename, + opts == download_file_options::binary ? + std::ofstream::out | std::ofstream::binary : + std::ofstream::out); + of.exceptions(std::ios::badbit); + curl_easy_setopt(curl.get(), CURLOPT_WRITEDATA, &of); + res = curl_easy_perform(curl.get()); + } + return res == CURLE_OK; +} + +std::string +remote_version() +{ + std::string version; + std::string str; + if (download_to_string("https://www.iana.org/time-zones", str)) + { + CONSTDATA char db[] = "/time-zones/releases/tzdata"; + CONSTDATA auto db_size = sizeof(db) - 1; + auto p = str.find(db, 0, db_size); + const int ver_str_len = 5; + if (p != std::string::npos && p + (db_size + ver_str_len) <= str.size()) + version = str.substr(p + db_size, ver_str_len); + } + return version; +} + + +// TODO! Using system() create a process and a console window. +// This is useful to see what errors may occur but is slow and distracting. +// Consider implementing this functionality more directly, such as +// using _mkdir and CreateProcess etc. +// But use the current means now as matches Unix implementations and while +// in proof of concept / testing phase. +// TODO! Use eventually. +static +bool +remove_folder_and_subfolders(const std::string& folder) +{ +# ifdef _WIN32 +# if USE_SHELL_API + // Delete the folder contents by deleting the folder. + std::string cmd = "rd /s /q \""; + cmd += folder; + cmd += '\"'; + return std::system(cmd.c_str()) == EXIT_SUCCESS; +# else // !USE_SHELL_API + // Create a buffer containing the path to delete. It must be terminated + // by two nuls. Who designs these API's... + std::vector from; + from.assign(folder.begin(), folder.end()); + from.push_back('\0'); + from.push_back('\0'); + SHFILEOPSTRUCT fo{}; // Zero initialize. + fo.wFunc = FO_DELETE; + fo.pFrom = from.data(); + fo.fFlags = FOF_NO_UI; + int ret = SHFileOperation(&fo); + if (ret == 0 && !fo.fAnyOperationsAborted) + return true; + return false; +# endif // !USE_SHELL_API +# else // !_WIN32 +# if USE_SHELL_API + return std::system(("rm -R " + folder).c_str()) == EXIT_SUCCESS; +# else // !USE_SHELL_API + struct dir_deleter { + dir_deleter() {} + void operator()(DIR* d) const + { + if (d != nullptr) + { + int result = closedir(d); + assert(result == 0); + } + } + }; + using closedir_ptr = std::unique_ptr; + + std::string filename; + struct stat statbuf; + std::size_t folder_len = folder.length(); + struct dirent* p = nullptr; + + closedir_ptr d(opendir(folder.c_str())); + bool r = d.get() != nullptr; + while (r && (p=readdir(d.get())) != nullptr) + { + if (strcmp(p->d_name, ".") == 0 || strcmp(p->d_name, "..") == 0) + continue; + + // + 2 for path delimiter and nul terminator. + std::size_t buf_len = folder_len + strlen(p->d_name) + 2; + filename.resize(buf_len); + std::size_t path_len = static_cast( + snprintf(&filename[0], buf_len, "%s/%s", folder.c_str(), p->d_name)); + assert(path_len == buf_len - 1); + filename.resize(path_len); + + if (stat(filename.c_str(), &statbuf) == 0) + r = S_ISDIR(statbuf.st_mode) + ? remove_folder_and_subfolders(filename) + : unlink(filename.c_str()) == 0; + } + d.reset(); + + if (r) + r = rmdir(folder.c_str()) == 0; + + return r; +# endif // !USE_SHELL_API +# endif // !_WIN32 +} + +static +bool +make_directory(const std::string& folder) +{ +# ifdef _WIN32 +# if USE_SHELL_API + // Re-create the folder. + std::string cmd = "mkdir \""; + cmd += folder; + cmd += '\"'; + return std::system(cmd.c_str()) == EXIT_SUCCESS; +# else // !USE_SHELL_API + return _mkdir(folder.c_str()) == 0; +# endif // !USE_SHELL_API +# else // !_WIN32 +# if USE_SHELL_API + return std::system(("mkdir -p " + folder).c_str()) == EXIT_SUCCESS; +# else // !USE_SHELL_API + return mkdir(folder.c_str(), 0777) == 0; +# endif // !USE_SHELL_API +# endif // !_WIN32 +} + +static +bool +delete_file(const std::string& file) +{ +# ifdef _WIN32 +# if USE_SHELL_API + std::string cmd = "del \""; + cmd += file; + cmd += '\"'; + return std::system(cmd.c_str()) == 0; +# else // !USE_SHELL_API + return _unlink(file.c_str()) == 0; +# endif // !USE_SHELL_API +# else // !_WIN32 +# if USE_SHELL_API + return std::system(("rm " + file).c_str()) == EXIT_SUCCESS; +# else // !USE_SHELL_API + return unlink(file.c_str()) == 0; +# endif // !USE_SHELL_API +# endif // !_WIN32 +} + +# ifdef _WIN32 + +static +bool +move_file(const std::string& from, const std::string& to) +{ +# if USE_SHELL_API + std::string cmd = "move \""; + cmd += from; + cmd += "\" \""; + cmd += to; + cmd += '\"'; + return std::system(cmd.c_str()) == EXIT_SUCCESS; +# else // !USE_SHELL_API + return !!::MoveFile(from.c_str(), to.c_str()); +# endif // !USE_SHELL_API +} + +// Usually something like "c:\Program Files". +static +std::string +get_program_folder() +{ + return get_known_folder(FOLDERID_ProgramFiles); +} + +// Note folder can and usually does contain spaces. +static +std::string +get_unzip_program() +{ + std::string path; + + // 7-Zip appears to note its location in the registry. + // If that doesn't work, fall through and take a guess, but it will likely be wrong. + HKEY hKey = nullptr; + if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE\\7-Zip", 0, KEY_READ, &hKey) == ERROR_SUCCESS) + { + char value_buffer[MAX_PATH + 1]; // fyi 260 at time of writing. + // in/out parameter. Documentation say that size is a count of bytes not chars. + DWORD size = sizeof(value_buffer) - sizeof(value_buffer[0]); + DWORD tzi_type = REG_SZ; + // Testing shows Path key value is "C:\Program Files\7-Zip\" i.e. always with trailing \. + bool got_value = (RegQueryValueExA(hKey, "Path", nullptr, &tzi_type, + reinterpret_cast(value_buffer), &size) == ERROR_SUCCESS); + RegCloseKey(hKey); // Close now incase of throw later. + if (got_value) + { + // Function does not guarantee to null terminate. + value_buffer[size / sizeof(value_buffer[0])] = '\0'; + path = value_buffer; + if (!path.empty()) + { + path += "7z.exe"; + return path; + } + } + } + path += get_program_folder(); + path += folder_delimiter; + path += "7-Zip\\7z.exe"; + return path; +} + +# if !USE_SHELL_API +static +int +run_program(const std::string& command) +{ + STARTUPINFO si{}; + si.cb = sizeof(si); + PROCESS_INFORMATION pi{}; + + // Allegedly CreateProcess overwrites the command line. Ugh. + std::string mutable_command(command); + if (CreateProcess(nullptr, &mutable_command[0], + nullptr, nullptr, FALSE, CREATE_NO_WINDOW, nullptr, nullptr, &si, &pi)) + { + WaitForSingleObject(pi.hProcess, INFINITE); + DWORD exit_code; + bool got_exit_code = !!GetExitCodeProcess(pi.hProcess, &exit_code); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); + // Not 100% sure about this still active thing is correct, + // but I'm going with it because I *think* WaitForSingleObject might + // return in some cases without INFINITE-ly waiting. + // But why/wouldn't GetExitCodeProcess return false in that case? + if (got_exit_code && exit_code != STILL_ACTIVE) + return static_cast(exit_code); + } + return EXIT_FAILURE; +} +# endif // !USE_SHELL_API + +static +std::string +get_download_tar_file(const std::string& version) +{ + auto file = get_install(); + file += folder_delimiter; + file += "tzdata"; + file += version; + file += ".tar"; + return file; +} + +static +bool +extract_gz_file(const std::string& version, const std::string& gz_file, + const std::string& dest_folder) +{ + auto unzip_prog = get_unzip_program(); + bool unzip_result = false; + // Use the unzip program to extract the tar file from the archive. + + // Aim to create a string like: + // "C:\Program Files\7-Zip\7z.exe" x "C:\Users\SomeUser\Downloads\tzdata2016d.tar.gz" + // -o"C:\Users\SomeUser\Downloads\tzdata" + std::string cmd; + cmd = '\"'; + cmd += unzip_prog; + cmd += "\" x \""; + cmd += gz_file; + cmd += "\" -o\""; + cmd += dest_folder; + cmd += '\"'; + +# if USE_SHELL_API + // When using shelling out with std::system() extra quotes are required around the + // whole command. It's weird but necessary it seems, see: + // http://stackoverflow.com/q/27975969/576911 + + cmd = "\"" + cmd + "\""; + if (std::system(cmd.c_str()) == EXIT_SUCCESS) + unzip_result = true; +# else // !USE_SHELL_API + if (run_program(cmd) == EXIT_SUCCESS) + unzip_result = true; +# endif // !USE_SHELL_API + if (unzip_result) + delete_file(gz_file); + + // Use the unzip program extract the data from the tar file that was + // just extracted from the archive. + auto tar_file = get_download_tar_file(version); + cmd = '\"'; + cmd += unzip_prog; + cmd += "\" x \""; + cmd += tar_file; + cmd += "\" -o\""; + cmd += get_install(); + cmd += '\"'; +# if USE_SHELL_API + cmd = "\"" + cmd + "\""; + if (std::system(cmd.c_str()) == EXIT_SUCCESS) + unzip_result = true; +# else // !USE_SHELL_API + if (run_program(cmd) == EXIT_SUCCESS) + unzip_result = true; +# endif // !USE_SHELL_API + + if (unzip_result) + delete_file(tar_file); + + return unzip_result; +} + +static +std::string +get_download_mapping_file(const std::string& version) +{ + auto file = get_install() + version + "windowsZones.xml"; + return file; +} + +# else // !_WIN32 + +# if !USE_SHELL_API +static +int +run_program(const char* prog, const char*const args[]) +{ + pid_t pid = fork(); + if (pid == -1) // Child failed to start. + return EXIT_FAILURE; + + if (pid != 0) + { + // We are in the parent. Child started. Wait for it. + pid_t ret; + int status; + while ((ret = waitpid(pid, &status, 0)) == -1) + { + if (errno != EINTR) + break; + } + if (ret != -1) + { + if (WIFEXITED(status)) + return WEXITSTATUS(status); + } + printf("Child issues!\n"); + + return EXIT_FAILURE; // Not sure what status of child is. + } + else // We are in the child process. Start the program the parent wants to run. + { + + if (execv(prog, const_cast(args)) == -1) // Does not return. + { + perror("unreachable 0\n"); + _Exit(127); + } + printf("unreachable 2\n"); + } + printf("unreachable 2\n"); + // Unreachable. + assert(false); + exit(EXIT_FAILURE); + return EXIT_FAILURE; +} +# endif // !USE_SHELL_API + +static +bool +extract_gz_file(const std::string&, const std::string& gz_file, const std::string&) +{ +# if USE_SHELL_API + bool unzipped = std::system(("tar -xzf " + gz_file + " -C " + get_install()).c_str()) == EXIT_SUCCESS; +# else // !USE_SHELL_API + const char prog[] = {"/usr/bin/tar"}; + const char*const args[] = + { + prog, "-xzf", gz_file.c_str(), "-C", get_install().c_str(), nullptr + }; + bool unzipped = (run_program(prog, args) == EXIT_SUCCESS); +# endif // !USE_SHELL_API + if (unzipped) + { + delete_file(gz_file); + return true; + } + return false; +} + +# endif // !_WIN32 + +bool +remote_download(const std::string& version, char* error_buffer) +{ + assert(!version.empty()); + +# ifdef _WIN32 + // Download folder should be always available for Windows +# else // !_WIN32 + // Create download folder if it does not exist on UNIX system + auto download_folder = get_install(); + if (!file_exists(download_folder)) + { + if (!make_directory(download_folder)) + return false; + } +# endif // _WIN32 + + auto url = "https://data.iana.org/time-zones/releases/tzdata" + version + + ".tar.gz"; + bool result = download_to_file(url, get_download_gz_file(version), + download_file_options::binary, error_buffer); +# ifdef _WIN32 + if (result) + { + auto mapping_file = get_download_mapping_file(version); + result = download_to_file( + "https://raw.githubusercontent.com/unicode-org/cldr/master/" + "common/supplemental/windowsZones.xml", + mapping_file, download_file_options::text, error_buffer); + } +# endif // _WIN32 + return result; +} + +bool +remote_install(const std::string& version) +{ + auto success = false; + assert(!version.empty()); + + std::string install = get_install(); + auto gz_file = get_download_gz_file(version); + if (file_exists(gz_file)) + { + if (file_exists(install)) + remove_folder_and_subfolders(install); + if (make_directory(install)) + { + if (extract_gz_file(version, gz_file, install)) + success = true; +# ifdef _WIN32 + auto mapping_file_source = get_download_mapping_file(version); + auto mapping_file_dest = get_install(); + mapping_file_dest += folder_delimiter; + mapping_file_dest += "windowsZones.xml"; + if (!move_file(mapping_file_source, mapping_file_dest)) + success = false; +# endif // _WIN32 + } + } + return success; +} + +#endif // HAS_REMOTE_API + +static +std::string +get_version(const std::string& path) +{ + std::string version; + + std::string path_version = path + "version"; + + if (file_exists(path_version)) + { + file_streambuf inbuf(path_version); + std::istream infile(&inbuf); + + infile >> version; + + if (!infile.fail()) + return version; + } + + std::string path_news = path + "NEWS"; + + if (file_exists(path_news)) + { + file_streambuf inbuf(path_news); + std::istream infile(&inbuf); + + while (infile) + { + infile >> version; + if (version == "Release") + { + infile >> version; + return version; + } + } + } + + throw std::runtime_error("Unable to get Timezone database version from " + path); +} + +static +std::unique_ptr +init_tzdb() +{ + using namespace date; + const std::string install = get_install(); + const std::string path = install + folder_delimiter; + std::string line; + bool continue_zone = false; + std::unique_ptr db(new tzdb); + +#if AUTO_DOWNLOAD + if (!file_exists(install)) + { + auto rv = remote_version(); + if (!rv.empty() && remote_download(rv)) + { + if (!remote_install(rv)) + { + std::string msg = "Timezone database version \""; + msg += rv; + msg += "\" did not install correctly to \""; + msg += install; + msg += "\""; + throw std::runtime_error(msg); + } + } + if (!file_exists(install)) + { + std::string msg = "Timezone database not found at \""; + msg += install; + msg += "\""; + throw std::runtime_error(msg); + } + db->version = get_version(path); + } + else + { + db->version = get_version(path); + auto rv = remote_version(); + if (!rv.empty() && db->version != rv) + { + if (remote_download(rv)) + { + remote_install(rv); + db->version = get_version(path); + } + } + } +#else // !AUTO_DOWNLOAD + if (!file_exists(install)) + { + std::string msg = "Timezone database not found at \""; + msg += install; + msg += "\""; + throw std::runtime_error(msg); + } + db->version = get_version(path); +#endif // !AUTO_DOWNLOAD + + CONSTDATA char*const files[] = + { + "africa", "antarctica", "asia", "australasia", "backward", "etcetera", "europe", + "pacificnew", "northamerica", "southamerica", "systemv", "leapseconds" + }; + + for (const auto& filename : files) + { + std::string file_path = path + filename; + if (!file_exists(file_path)) + { + continue; + } + file_streambuf inbuf(file_path); + std::istream infile(&inbuf); + while (infile) + { + std::getline(infile, line); + if (!line.empty() && line[0] != '#') + { + std::istringstream in(line); + std::string word; + in >> word; + if (word == "Rule") + { + db->rules.push_back(Rule(line)); + continue_zone = false; + } + else if (word == "Link") + { + db->links.push_back(time_zone_link(line)); + continue_zone = false; + } + else if (word == "Leap") + { + db->leap_seconds.push_back(leap_second(line, detail::undocumented{})); + continue_zone = false; + } + else if (word == "Zone") + { + db->zones.push_back(time_zone(line, detail::undocumented{})); + continue_zone = true; + } + else if (line[0] == '\t' && continue_zone) + { + db->zones.back().add(line); + } + else if (word.size() > 0 && word[0] == '#') + { + continue; + } + else + { + std::cerr << line << '\n'; + } + } + } + } + std::sort(db->rules.begin(), db->rules.end()); + Rule::split_overlaps(db->rules); + std::sort(db->zones.begin(), db->zones.end()); + db->zones.shrink_to_fit(); + std::sort(db->links.begin(), db->links.end()); + db->links.shrink_to_fit(); + std::sort(db->leap_seconds.begin(), db->leap_seconds.end()); + db->leap_seconds.shrink_to_fit(); + +#ifdef _WIN32 + std::string mapping_file = get_install() + folder_delimiter + "windowsZones.xml"; + db->mappings = load_timezone_mappings_from_xml_file(mapping_file); + sort_zone_mappings(db->mappings); +#endif // _WIN32 + + return db; +} + +const tzdb& +reload_tzdb() +{ +#if AUTO_DOWNLOAD + auto const& v = get_tzdb_list().front().version; + if (!v.empty() && v == remote_version()) + return get_tzdb_list().front(); +#endif // AUTO_DOWNLOAD + tzdb_list::undocumented_helper::push_front(get_tzdb_list(), init_tzdb().release()); + return get_tzdb_list().front(); +} + +#endif // !USE_OS_TZDB + +const tzdb& +get_tzdb() +{ + return get_tzdb_list().front(); +} + +const time_zone* +#if HAS_STRING_VIEW +tzdb::locate_zone(std::string_view tz_name) const +#else +tzdb::locate_zone(const std::string& tz_name) const +#endif +{ + auto zi = std::lower_bound(zones.begin(), zones.end(), tz_name, +#if HAS_STRING_VIEW + [](const time_zone& z, const std::string_view& nm) +#else + [](const time_zone& z, const std::string& nm) +#endif + { + return z.name() < nm; + }); + if (zi == zones.end() || zi->name() != tz_name) + { +#if !USE_OS_TZDB + auto li = std::lower_bound(links.begin(), links.end(), tz_name, +#if HAS_STRING_VIEW + [](const time_zone_link& z, const std::string_view& nm) +#else + [](const time_zone_link& z, const std::string& nm) +#endif + { + return z.name() < nm; + }); + if (li != links.end() && li->name() == tz_name) + { + zi = std::lower_bound(zones.begin(), zones.end(), li->target(), + [](const time_zone& z, const std::string& nm) + { + return z.name() < nm; + }); + if (zi != zones.end() && zi->name() == li->target()) + return &*zi; + } +#endif // !USE_OS_TZDB + throw std::runtime_error(std::string(tz_name) + " not found in timezone database"); + } + return &*zi; +} + +const time_zone* +#if HAS_STRING_VIEW +locate_zone(std::string_view tz_name) +#else +locate_zone(const std::string& tz_name) +#endif +{ + return get_tzdb().locate_zone(tz_name); +} + +#if USE_OS_TZDB + +std::ostream& +operator<<(std::ostream& os, const tzdb& db) +{ + os << "Version: " << db.version << "\n\n"; + for (const auto& x : db.zones) + os << x << '\n'; + os << '\n'; + for (const auto& x : db.leap_seconds) + os << x << '\n'; + return os; +} + +#else // !USE_OS_TZDB + +std::ostream& +operator<<(std::ostream& os, const tzdb& db) +{ + os << "Version: " << db.version << '\n'; + std::string title("--------------------------------------------" + "--------------------------------------------\n" + "Name ""Start Y ""End Y " + "Beginning ""Offset " + "Designator\n" + "--------------------------------------------" + "--------------------------------------------\n"); + int count = 0; + for (const auto& x : db.rules) + { + if (count++ % 50 == 0) + os << title; + os << x << '\n'; + } + os << '\n'; + title = std::string("---------------------------------------------------------" + "--------------------------------------------------------\n" + "Name ""Offset " + "Rule ""Abrev ""Until\n" + "---------------------------------------------------------" + "--------------------------------------------------------\n"); + count = 0; + for (const auto& x : db.zones) + { + if (count++ % 10 == 0) + os << title; + os << x << '\n'; + } + os << '\n'; + title = std::string("---------------------------------------------------------" + "--------------------------------------------------------\n" + "Alias ""To\n" + "---------------------------------------------------------" + "--------------------------------------------------------\n"); + count = 0; + for (const auto& x : db.links) + { + if (count++ % 45 == 0) + os << title; + os << x << '\n'; + } + os << '\n'; + title = std::string("---------------------------------------------------------" + "--------------------------------------------------------\n" + "Leap second on\n" + "---------------------------------------------------------" + "--------------------------------------------------------\n"); + os << title; + for (const auto& x : db.leap_seconds) + os << x << '\n'; + return os; +} + +#endif // !USE_OS_TZDB + +// ----------------------- + +#ifdef _WIN32 + +static +std::string +getTimeZoneKeyName() +{ + DYNAMIC_TIME_ZONE_INFORMATION dtzi{}; + auto result = GetDynamicTimeZoneInformation(&dtzi); + if (result == TIME_ZONE_ID_INVALID) + throw std::runtime_error("current_zone(): GetDynamicTimeZoneInformation()" + " reported TIME_ZONE_ID_INVALID."); + auto wlen = wcslen(dtzi.TimeZoneKeyName); + char buf[128] = {}; + assert(sizeof(buf) >= wlen+1); + wcstombs(buf, dtzi.TimeZoneKeyName, wlen); + if (strcmp(buf, "Coordinated Universal Time") == 0) + return "UTC"; + return buf; +} + +const time_zone* +tzdb::current_zone() const +{ + std::string win_tzid = getTimeZoneKeyName(); + std::string standard_tzid; + if (!native_to_standard_timezone_name(win_tzid, standard_tzid)) + { + std::string msg; + msg = "current_zone() failed: A mapping from the Windows Time Zone id \""; + msg += win_tzid; + msg += "\" was not found in the time zone mapping database."; + throw std::runtime_error(msg); + } + return locate_zone(standard_tzid); +} + +#else // !_WIN32 + +#if HAS_STRING_VIEW + +static +std::string_view +extract_tz_name(char const* rp) +{ + using namespace std; + string_view result = rp; + CONSTDATA string_view zoneinfo = "zoneinfo"; + size_t pos = result.rfind(zoneinfo); + if (pos == result.npos) + throw runtime_error( + "current_zone() failed to find \"zoneinfo\" in " + string(result)); + pos = result.find('/', pos); + result.remove_prefix(pos + 1); + return result; +} + +#else // !HAS_STRING_VIEW + +static +std::string +extract_tz_name(char const* rp) +{ + using namespace std; + string result = rp; + CONSTDATA char zoneinfo[] = "zoneinfo"; + size_t pos = result.rfind(zoneinfo); + if (pos == result.npos) + throw runtime_error( + "current_zone() failed to find \"zoneinfo\" in " + result); + pos = result.find('/', pos); + result.erase(0, pos + 1); + return result; +} + +#endif // HAS_STRING_VIEW + +static +bool +sniff_realpath(const char* timezone) +{ + using namespace std; + char rp[PATH_MAX+1] = {}; + if (realpath(timezone, rp) == nullptr) + throw system_error(errno, system_category(), "realpath() failed"); + auto result = extract_tz_name(rp); + return result != "posixrules"; +} + +const time_zone* +tzdb::current_zone() const +{ + // On some OS's a file called /etc/localtime may + // exist and it may be either a real file + // containing time zone details or a symlink to such a file. + // On MacOS and BSD Unix if this file is a symlink it + // might resolve to a path like this: + // "/usr/share/zoneinfo/America/Los_Angeles" + // If it does, we try to determine the current + // timezone from the remainder of the path by removing the prefix + // and hoping the rest resolves to a valid timezone. + // It may not always work though. If it doesn't then an + // exception will be thrown by local_timezone. + // The path may also take a relative form: + // "../usr/share/zoneinfo/America/Los_Angeles". + { + struct stat sb; + CONSTDATA auto timezone = "/etc/localtime"; + if (lstat(timezone, &sb) == 0 && S_ISLNK(sb.st_mode) && sb.st_size > 0) + { + using namespace std; + static const bool use_realpath = sniff_realpath(timezone); + char rp[PATH_MAX+1] = {}; + if (use_realpath) + { + if (realpath(timezone, rp) == nullptr) + throw system_error(errno, system_category(), "realpath() failed"); + } + else + { + if (readlink(timezone, rp, sizeof(rp)-1) <= 0) + throw system_error(errno, system_category(), "readlink() failed"); + } + return locate_zone(extract_tz_name(rp)); + } + } + // On embedded systems e.g. buildroot with uclibc the timezone is linked + // into /etc/TZ which is a symlink to path like this: + // "/usr/share/zoneinfo/uclibc/America/Los_Angeles" + // If it does, we try to determine the current + // timezone from the remainder of the path by removing the prefix + // and hoping the rest resolves to valid timezone. + // It may not always work though. If it doesn't then an + // exception will be thrown by local_timezone. + // The path may also take a relative form: + // "../usr/share/zoneinfo/uclibc/America/Los_Angeles". + { + struct stat sb; + CONSTDATA auto timezone = "/etc/TZ"; + if (lstat(timezone, &sb) == 0 && S_ISLNK(sb.st_mode) && sb.st_size > 0) { + using namespace std; + string result; + char rp[PATH_MAX+1] = {}; + if (readlink(timezone, rp, sizeof(rp)-1) > 0) + result = string(rp); + else + throw system_error(errno, system_category(), "readlink() failed"); + + const size_t pos = result.find(get_tz_dir()); + if (pos != result.npos) + result.erase(0, get_tz_dir().size() + 1 + pos); + return locate_zone(result); + } + } + { + // On some versions of some linux distro's (e.g. Ubuntu), + // the current timezone might be in the first line of + // the /etc/timezone file. + std::ifstream timezone_file("/etc/timezone"); + if (timezone_file.is_open()) + { + std::string result; + std::getline(timezone_file, result); + if (!result.empty()) + return locate_zone(result); + } + // Fall through to try other means. + } + { + // On some versions of some bsd distro's (e.g. FreeBSD), + // the current timezone might be in the first line of + // the /var/db/zoneinfo file. + std::ifstream timezone_file("/var/db/zoneinfo"); + if (timezone_file.is_open()) + { + std::string result; + std::getline(timezone_file, result); + if (!result.empty()) + return locate_zone(result); + } + // Fall through to try other means. + } + { + // On some versions of some bsd distro's (e.g. iOS), + // it is not possible to use file based approach, + // we switch to system API, calling functions in + // CoreFoundation framework. +#if TARGET_OS_IPHONE + std::string result = date::iOSUtils::get_current_timezone(); + if (!result.empty()) + return locate_zone(result); +#endif + // Fall through to try other means. + } + { + // On some versions of some linux distro's (e.g. Red Hat), + // the current timezone might be in the first line of + // the /etc/sysconfig/clock file as: + // ZONE="US/Eastern" + std::ifstream timezone_file("/etc/sysconfig/clock"); + std::string result; + while (timezone_file) + { + std::getline(timezone_file, result); + auto p = result.find("ZONE=\""); + if (p != std::string::npos) + { + result.erase(0, p+6); + result.erase(result.rfind('"')); + return locate_zone(result); + } + } + // Fall through to try other means. + } + throw std::runtime_error("Could not get current timezone"); +} + +#endif // !_WIN32 + +const time_zone* +current_zone() +{ + return get_tzdb().current_zone(); +} + +} // namespace date + +#if defined(__GNUC__) && __GNUC__ < 5 +# pragma GCC diagnostic pop +#endif diff --git a/src/date/tz.h b/src/date/tz.h new file mode 100644 index 0000000..61dde29 --- /dev/null +++ b/src/date/tz.h @@ -0,0 +1,2792 @@ +#ifndef TZ_H +#define TZ_H + +// The MIT License (MIT) +// +// Copyright (c) 2015, 2016, 2017 Howard Hinnant +// Copyright (c) 2017 Jiangang Zhuang +// Copyright (c) 2017 Aaron Bishop +// Copyright (c) 2017 Tomasz Kamiński +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// Our apologies. When the previous paragraph was written, lowercase had not yet +// been invented (that would involve another several millennia of evolution). +// We did not mean to shout. + +// Get more recent database at http://www.iana.org/time-zones + +// The notion of "current timezone" is something the operating system is expected to "just +// know". How it knows this is system specific. It's often a value set by the user at OS +// installation time and recorded by the OS somewhere. On Linux and Mac systems the current +// timezone name is obtained by looking at the name or contents of a particular file on +// disk. On Windows the current timezone name comes from the registry. In either method, +// there is no guarantee that the "native" current timezone name obtained will match any +// of the "Standard" names in this library's "database". On Linux, the names usually do +// seem to match so mapping functions to map from native to "Standard" are typically not +// required. On Windows, the names are never "Standard" so mapping is always required. +// Technically any OS may use the mapping process but currently only Windows does use it. + +#ifndef USE_OS_TZDB +# define USE_OS_TZDB 0 +#endif + +#ifndef HAS_REMOTE_API +# if USE_OS_TZDB == 0 +# ifdef _WIN32 +# define HAS_REMOTE_API 0 +# else +# define HAS_REMOTE_API 1 +# endif +# else // HAS_REMOTE_API makes no sense when using the OS timezone database +# define HAS_REMOTE_API 0 +# endif +#endif + +#ifdef __clang__ +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wconstant-logical-operand" +#endif + +static_assert(!(USE_OS_TZDB && HAS_REMOTE_API), + "USE_OS_TZDB and HAS_REMOTE_API can not be used together"); + +#ifdef __clang__ +# pragma clang diagnostic pop +#endif + +#ifndef AUTO_DOWNLOAD +# define AUTO_DOWNLOAD HAS_REMOTE_API +#endif + +static_assert(HAS_REMOTE_API == 0 ? AUTO_DOWNLOAD == 0 : true, + "AUTO_DOWNLOAD can not be turned on without HAS_REMOTE_API"); + +#ifndef USE_SHELL_API +# define USE_SHELL_API 1 +#endif + +#if USE_OS_TZDB +# ifdef _WIN32 +# error "USE_OS_TZDB can not be used on Windows" +# endif +#endif + +#ifndef HAS_DEDUCTION_GUIDES +# if __cplusplus >= 201703 +# define HAS_DEDUCTION_GUIDES 1 +# else +# define HAS_DEDUCTION_GUIDES 0 +# endif +#endif // HAS_DEDUCTION_GUIDES + +#include "date.h" + +#if defined(_MSC_VER) && (_MSC_VER < 1900) +#include "tz_private.h" +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _WIN32 +# ifdef DATE_BUILD_DLL +# define DATE_API __declspec(dllexport) +# elif defined(DATE_USE_DLL) +# define DATE_API __declspec(dllimport) +# else +# define DATE_API +# endif +#else +# ifdef DATE_BUILD_DLL +# define DATE_API __attribute__ ((visibility ("default"))) +# else +# define DATE_API +# endif +#endif + +namespace date +{ + +enum class choose {earliest, latest}; + +namespace detail +{ + struct undocumented; + + template + struct nodeduct + { + using type = T; + }; + + template + using nodeduct_t = typename nodeduct::type; +} + +struct sys_info +{ + sys_seconds begin; + sys_seconds end; + std::chrono::seconds offset; + std::chrono::minutes save; + std::string abbrev; +}; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const sys_info& r) +{ + os << r.begin << '\n'; + os << r.end << '\n'; + os << make_time(r.offset) << "\n"; + os << make_time(r.save) << "\n"; + os << r.abbrev << '\n'; + return os; +} + +struct local_info +{ + enum {unique, nonexistent, ambiguous} result; + sys_info first; + sys_info second; +}; + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const local_info& r) +{ + if (r.result == local_info::nonexistent) + os << "nonexistent between\n"; + else if (r.result == local_info::ambiguous) + os << "ambiguous between\n"; + os << r.first; + if (r.result != local_info::unique) + { + os << "and\n"; + os << r.second; + } + return os; +} + +class nonexistent_local_time + : public std::runtime_error +{ +public: + template + nonexistent_local_time(local_time tp, const local_info& i); + +private: + template + static + std::string + make_msg(local_time tp, const local_info& i); +}; + +template +inline +nonexistent_local_time::nonexistent_local_time(local_time tp, + const local_info& i) + : std::runtime_error(make_msg(tp, i)) +{ +} + +template +std::string +nonexistent_local_time::make_msg(local_time tp, const local_info& i) +{ + assert(i.result == local_info::nonexistent); + std::ostringstream os; + os << tp << " is in a gap between\n" + << local_seconds{i.first.end.time_since_epoch()} + i.first.offset << ' ' + << i.first.abbrev << " and\n" + << local_seconds{i.second.begin.time_since_epoch()} + i.second.offset << ' ' + << i.second.abbrev + << " which are both equivalent to\n" + << i.first.end << " UTC"; + return os.str(); +} + +class ambiguous_local_time + : public std::runtime_error +{ +public: + template + ambiguous_local_time(local_time tp, const local_info& i); + +private: + template + static + std::string + make_msg(local_time tp, const local_info& i); +}; + +template +inline +ambiguous_local_time::ambiguous_local_time(local_time tp, const local_info& i) + : std::runtime_error(make_msg(tp, i)) +{ +} + +template +std::string +ambiguous_local_time::make_msg(local_time tp, const local_info& i) +{ + assert(i.result == local_info::ambiguous); + std::ostringstream os; + os << tp << " is ambiguous. It could be\n" + << tp << ' ' << i.first.abbrev << " == " + << tp - i.first.offset << " UTC or\n" + << tp << ' ' << i.second.abbrev << " == " + << tp - i.second.offset << " UTC"; + return os.str(); +} + +class time_zone; + +#if HAS_STRING_VIEW +DATE_API const time_zone* locate_zone(std::string_view tz_name); +#else +DATE_API const time_zone* locate_zone(const std::string& tz_name); +#endif + +DATE_API const time_zone* current_zone(); + +template +struct zoned_traits +{ +}; + +template <> +struct zoned_traits +{ + static + const time_zone* + default_zone() + { + return date::locate_zone("Etc/UTC"); + } + +#if HAS_STRING_VIEW + + static + const time_zone* + locate_zone(std::string_view name) + { + return date::locate_zone(name); + } + +#else // !HAS_STRING_VIEW + + static + const time_zone* + locate_zone(const std::string& name) + { + return date::locate_zone(name); + } + + static + const time_zone* + locate_zone(const char* name) + { + return date::locate_zone(name); + } + +#endif // !HAS_STRING_VIEW +}; + +template +class zoned_time; + +template +bool +operator==(const zoned_time& x, + const zoned_time& y); + +template +class zoned_time +{ +public: + using duration = typename std::common_type::type; + +private: + TimeZonePtr zone_; + sys_time tp_; + +public: +#if !defined(_MSC_VER) || (_MSC_VER > 1916) + template ::default_zone())> +#endif + zoned_time(); + +#if !defined(_MSC_VER) || (_MSC_VER > 1916) + template ::default_zone())> +#endif + zoned_time(const sys_time& st); + explicit zoned_time(TimeZonePtr z); + +#if HAS_STRING_VIEW + template ::locate_zone(std::string_view())) + >::value + >::type> + explicit zoned_time(std::string_view name); +#else +# if !defined(_MSC_VER) || (_MSC_VER > 1916) + template ::locate_zone(std::string())) + >::value + >::type> +# endif + explicit zoned_time(const std::string& name); +#endif + + template , + sys_time>::value + >::type> + zoned_time(const zoned_time& zt) NOEXCEPT; + + zoned_time(TimeZonePtr z, const sys_time& st); + +#if !defined(_MSC_VER) || (_MSC_VER > 1916) + template ()->to_sys(local_time{})), + sys_time + >::value + >::type> +#endif + zoned_time(TimeZonePtr z, const local_time& tp); + +#if !defined(_MSC_VER) || (_MSC_VER > 1916) + template ()->to_sys(local_time{}, + choose::earliest)), + sys_time + >::value + >::type> +#endif + zoned_time(TimeZonePtr z, const local_time& tp, choose c); + + template , + sys_time>::value + >::type> + zoned_time(TimeZonePtr z, const zoned_time& zt); + + template , + sys_time>::value + >::type> + zoned_time(TimeZonePtr z, const zoned_time& zt, choose); + +#if HAS_STRING_VIEW + + template ::locate_zone(std::string_view())), + sys_time + >::value + >::type> + zoned_time(std::string_view name, detail::nodeduct_t&> st); + + template ::locate_zone(std::string_view())), + local_time + >::value + >::type> + zoned_time(std::string_view name, detail::nodeduct_t&> tp); + + template ::locate_zone(std::string_view())), + local_time, + choose + >::value + >::type> + zoned_time(std::string_view name, detail::nodeduct_t&> tp, choose c); + + template , + sys_time>::value && + std::is_constructible + < + zoned_time, + decltype(zoned_traits::locate_zone(std::string_view())), + zoned_time + >::value + >::type> + zoned_time(std::string_view name, const zoned_time& zt); + + template , + sys_time>::value && + std::is_constructible + < + zoned_time, + decltype(zoned_traits::locate_zone(std::string_view())), + zoned_time, + choose + >::value + >::type> + zoned_time(std::string_view name, const zoned_time& zt, choose); + +#else // !HAS_STRING_VIEW + +#if !defined(_MSC_VER) || (_MSC_VER > 1916) + template ::locate_zone(std::string())), + sys_time + >::value + >::type> +#endif + zoned_time(const std::string& name, const sys_time& st); + +#if !defined(_MSC_VER) || (_MSC_VER > 1916) + template ::locate_zone(std::string())), + sys_time + >::value + >::type> +#endif + zoned_time(const char* name, const sys_time& st); + +#if !defined(_MSC_VER) || (_MSC_VER > 1916) + template ::locate_zone(std::string())), + local_time + >::value + >::type> +#endif + zoned_time(const std::string& name, const local_time& tp); + +#if !defined(_MSC_VER) || (_MSC_VER > 1916) + template ::locate_zone(std::string())), + local_time + >::value + >::type> +#endif + zoned_time(const char* name, const local_time& tp); + +#if !defined(_MSC_VER) || (_MSC_VER > 1916) + template ::locate_zone(std::string())), + local_time, + choose + >::value + >::type> +#endif + zoned_time(const std::string& name, const local_time& tp, choose c); + +#if !defined(_MSC_VER) || (_MSC_VER > 1916) + template ::locate_zone(std::string())), + local_time, + choose + >::value + >::type> +#endif + zoned_time(const char* name, const local_time& tp, choose c); + +#if !defined(_MSC_VER) || (_MSC_VER > 1916) + template , + sys_time>::value && + std::is_constructible + < + zoned_time, + decltype(zoned_traits::locate_zone(std::string())), + zoned_time + >::value + >::type> +#else + template +#endif + zoned_time(const std::string& name, const zoned_time& zt); + +#if !defined(_MSC_VER) || (_MSC_VER > 1916) + template , + sys_time>::value && + std::is_constructible + < + zoned_time, + decltype(zoned_traits::locate_zone(std::string())), + zoned_time + >::value + >::type> +#else + template +#endif + zoned_time(const char* name, const zoned_time& zt); + +#if !defined(_MSC_VER) || (_MSC_VER > 1916) + template , + sys_time>::value && + std::is_constructible + < + zoned_time, + decltype(zoned_traits::locate_zone(std::string())), + zoned_time, + choose + >::value + >::type> +#else + template +#endif + zoned_time(const std::string& name, const zoned_time& zt, + choose); + +#if !defined(_MSC_VER) || (_MSC_VER > 1916) + template , + sys_time>::value && + std::is_constructible + < + zoned_time, + decltype(zoned_traits::locate_zone(std::string())), + zoned_time, + choose + >::value + >::type> +#else + template +#endif + zoned_time(const char* name, const zoned_time& zt, + choose); + +#endif // !HAS_STRING_VIEW + + zoned_time& operator=(const sys_time& st); + zoned_time& operator=(const local_time& ut); + + explicit operator sys_time() const; + explicit operator local_time() const; + + TimeZonePtr get_time_zone() const; + local_time get_local_time() const; + sys_time get_sys_time() const; + sys_info get_info() const; + + template + friend + bool + operator==(const zoned_time& x, + const zoned_time& y); + + template + friend + std::basic_ostream& + operator<<(std::basic_ostream& os, + const zoned_time& t); + +private: + template friend class zoned_time; + + template + static + TimeZonePtr2&& + check(TimeZonePtr2&& p); +}; + +using zoned_seconds = zoned_time; + +#if HAS_DEDUCTION_GUIDES + +namespace detail +{ + template + using time_zone_representation = + std::conditional_t + < + std::is_convertible::value, + time_zone const*, + std::remove_cv_t> + >; +} + +zoned_time() + -> zoned_time; + +template +zoned_time(sys_time) + -> zoned_time>; + +template +zoned_time(TimeZonePtrOrName&&) + -> zoned_time>; + +template +zoned_time(TimeZonePtrOrName&&, sys_time) + -> zoned_time, detail::time_zone_representation>; + +template +zoned_time(TimeZonePtrOrName&&, local_time, choose = choose::earliest) + -> zoned_time, detail::time_zone_representation>; + +template +zoned_time(TimeZonePtrOrName&&, zoned_time, choose = choose::earliest) + -> zoned_time, detail::time_zone_representation>; + +#endif // HAS_DEDUCTION_GUIDES + +template +inline +bool +operator==(const zoned_time& x, + const zoned_time& y) +{ + return x.zone_ == y.zone_ && x.tp_ == y.tp_; +} + +template +inline +bool +operator!=(const zoned_time& x, + const zoned_time& y) +{ + return !(x == y); +} + +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) + +namespace detail +{ +# if USE_OS_TZDB + struct transition; + struct expanded_ttinfo; +# else // !USE_OS_TZDB + struct zonelet; + class Rule; +# endif // !USE_OS_TZDB +} + +#endif // !defined(_MSC_VER) || (_MSC_VER >= 1900) + +class time_zone +{ +private: + std::string name_; +#if USE_OS_TZDB + std::vector transitions_; + std::vector ttinfos_; +#else // !USE_OS_TZDB + std::vector zonelets_; +#endif // !USE_OS_TZDB + std::unique_ptr adjusted_; + +public: +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) + time_zone(time_zone&&) = default; + time_zone& operator=(time_zone&&) = default; +#else // defined(_MSC_VER) && (_MSC_VER < 1900) + time_zone(time_zone&& src); + time_zone& operator=(time_zone&& src); +#endif // defined(_MSC_VER) && (_MSC_VER < 1900) + + DATE_API explicit time_zone(const std::string& s, detail::undocumented); + + const std::string& name() const NOEXCEPT; + + template sys_info get_info(sys_time st) const; + template local_info get_info(local_time tp) const; + + template + sys_time::type> + to_sys(local_time tp) const; + + template + sys_time::type> + to_sys(local_time tp, choose z) const; + + template + local_time::type> + to_local(sys_time tp) const; + + friend bool operator==(const time_zone& x, const time_zone& y) NOEXCEPT; + friend bool operator< (const time_zone& x, const time_zone& y) NOEXCEPT; + friend DATE_API std::ostream& operator<<(std::ostream& os, const time_zone& z); + +#if !USE_OS_TZDB + DATE_API void add(const std::string& s); +#endif // !USE_OS_TZDB + +private: + DATE_API sys_info get_info_impl(sys_seconds tp) const; + DATE_API local_info get_info_impl(local_seconds tp) const; + + template + sys_time::type> + to_sys_impl(local_time tp, choose z, std::false_type) const; + template + sys_time::type> + to_sys_impl(local_time tp, choose, std::true_type) const; + +#if USE_OS_TZDB + DATE_API void init() const; + DATE_API void init_impl(); + DATE_API sys_info + load_sys_info(std::vector::const_iterator i) const; + + template + DATE_API void + load_data(std::istream& inf, std::int32_t tzh_leapcnt, std::int32_t tzh_timecnt, + std::int32_t tzh_typecnt, std::int32_t tzh_charcnt); +#else // !USE_OS_TZDB + DATE_API sys_info get_info_impl(sys_seconds tp, int tz_int) const; + DATE_API void adjust_infos(const std::vector& rules); + DATE_API void parse_info(std::istream& in); +#endif // !USE_OS_TZDB +}; + +#if defined(_MSC_VER) && (_MSC_VER < 1900) + +inline +time_zone::time_zone(time_zone&& src) + : name_(std::move(src.name_)) + , zonelets_(std::move(src.zonelets_)) + , adjusted_(std::move(src.adjusted_)) + {} + +inline +time_zone& +time_zone::operator=(time_zone&& src) +{ + name_ = std::move(src.name_); + zonelets_ = std::move(src.zonelets_); + adjusted_ = std::move(src.adjusted_); + return *this; +} + +#endif // defined(_MSC_VER) && (_MSC_VER < 1900) + +inline +const std::string& +time_zone::name() const NOEXCEPT +{ + return name_; +} + +template +inline +sys_info +time_zone::get_info(sys_time st) const +{ + return get_info_impl(date::floor(st)); +} + +template +inline +local_info +time_zone::get_info(local_time tp) const +{ + return get_info_impl(date::floor(tp)); +} + +template +inline +sys_time::type> +time_zone::to_sys(local_time tp) const +{ + return to_sys_impl(tp, choose{}, std::true_type{}); +} + +template +inline +sys_time::type> +time_zone::to_sys(local_time tp, choose z) const +{ + return to_sys_impl(tp, z, std::false_type{}); +} + +template +inline +local_time::type> +time_zone::to_local(sys_time tp) const +{ + using LT = local_time::type>; + auto i = get_info(tp); + return LT{(tp + i.offset).time_since_epoch()}; +} + +inline bool operator==(const time_zone& x, const time_zone& y) NOEXCEPT {return x.name_ == y.name_;} +inline bool operator< (const time_zone& x, const time_zone& y) NOEXCEPT {return x.name_ < y.name_;} + +inline bool operator!=(const time_zone& x, const time_zone& y) NOEXCEPT {return !(x == y);} +inline bool operator> (const time_zone& x, const time_zone& y) NOEXCEPT {return y < x;} +inline bool operator<=(const time_zone& x, const time_zone& y) NOEXCEPT {return !(y < x);} +inline bool operator>=(const time_zone& x, const time_zone& y) NOEXCEPT {return !(x < y);} + +template +sys_time::type> +time_zone::to_sys_impl(local_time tp, choose z, std::false_type) const +{ + auto i = get_info(tp); + if (i.result == local_info::nonexistent) + { + return i.first.end; + } + else if (i.result == local_info::ambiguous) + { + if (z == choose::latest) + return sys_time{tp.time_since_epoch()} - i.second.offset; + } + return sys_time{tp.time_since_epoch()} - i.first.offset; +} + +template +sys_time::type> +time_zone::to_sys_impl(local_time tp, choose, std::true_type) const +{ + auto i = get_info(tp); + if (i.result == local_info::nonexistent) + throw nonexistent_local_time(tp, i); + else if (i.result == local_info::ambiguous) + throw ambiguous_local_time(tp, i); + return sys_time{tp.time_since_epoch()} - i.first.offset; +} + +#if !USE_OS_TZDB + +class time_zone_link +{ +private: + std::string name_; + std::string target_; +public: + DATE_API explicit time_zone_link(const std::string& s); + + const std::string& name() const {return name_;} + const std::string& target() const {return target_;} + + friend bool operator==(const time_zone_link& x, const time_zone_link& y) {return x.name_ == y.name_;} + friend bool operator< (const time_zone_link& x, const time_zone_link& y) {return x.name_ < y.name_;} + + friend DATE_API std::ostream& operator<<(std::ostream& os, const time_zone_link& x); +}; + +using link = time_zone_link; + +inline bool operator!=(const time_zone_link& x, const time_zone_link& y) {return !(x == y);} +inline bool operator> (const time_zone_link& x, const time_zone_link& y) {return y < x;} +inline bool operator<=(const time_zone_link& x, const time_zone_link& y) {return !(y < x);} +inline bool operator>=(const time_zone_link& x, const time_zone_link& y) {return !(x < y);} + +#endif // !USE_OS_TZDB + +class leap_second +{ +private: + sys_seconds date_; + +public: +#if USE_OS_TZDB + DATE_API explicit leap_second(const sys_seconds& s, detail::undocumented); +#else + DATE_API explicit leap_second(const std::string& s, detail::undocumented); +#endif + + sys_seconds date() const {return date_;} + + friend bool operator==(const leap_second& x, const leap_second& y) {return x.date_ == y.date_;} + friend bool operator< (const leap_second& x, const leap_second& y) {return x.date_ < y.date_;} + + template + friend + bool + operator==(const leap_second& x, const sys_time& y) + { + return x.date_ == y; + } + + template + friend + bool + operator< (const leap_second& x, const sys_time& y) + { + return x.date_ < y; + } + + template + friend + bool + operator< (const sys_time& x, const leap_second& y) + { + return x < y.date_; + } + + friend DATE_API std::ostream& operator<<(std::ostream& os, const leap_second& x); +}; + +inline bool operator!=(const leap_second& x, const leap_second& y) {return !(x == y);} +inline bool operator> (const leap_second& x, const leap_second& y) {return y < x;} +inline bool operator<=(const leap_second& x, const leap_second& y) {return !(y < x);} +inline bool operator>=(const leap_second& x, const leap_second& y) {return !(x < y);} + +template +inline +bool +operator==(const sys_time& x, const leap_second& y) +{ + return y == x; +} + +template +inline +bool +operator!=(const leap_second& x, const sys_time& y) +{ + return !(x == y); +} + +template +inline +bool +operator!=(const sys_time& x, const leap_second& y) +{ + return !(x == y); +} + +template +inline +bool +operator> (const leap_second& x, const sys_time& y) +{ + return y < x; +} + +template +inline +bool +operator> (const sys_time& x, const leap_second& y) +{ + return y < x; +} + +template +inline +bool +operator<=(const leap_second& x, const sys_time& y) +{ + return !(y < x); +} + +template +inline +bool +operator<=(const sys_time& x, const leap_second& y) +{ + return !(y < x); +} + +template +inline +bool +operator>=(const leap_second& x, const sys_time& y) +{ + return !(x < y); +} + +template +inline +bool +operator>=(const sys_time& x, const leap_second& y) +{ + return !(x < y); +} + +using leap = leap_second; + +#ifdef _WIN32 + +namespace detail +{ + +// The time zone mapping is modelled after this data file: +// http://unicode.org/repos/cldr/trunk/common/supplemental/windowsZones.xml +// and the field names match the element names from the mapZone element +// of windowsZones.xml. +// The website displays this file here: +// http://www.unicode.org/cldr/charts/latest/supplemental/zone_tzid.html +// The html view is sorted before being displayed but is otherwise the same +// There is a mapping between the os centric view (in this case windows) +// the html displays uses and the generic view the xml file. +// That mapping is this: +// display column "windows" -> xml field "other". +// display column "region" -> xml field "territory". +// display column "tzid" -> xml field "type". +// This structure uses the generic terminology because it could be +// used to to support other os/native name conversions, not just windows, +// and using the same generic names helps retain the connection to the +// origin of the data that we are using. +struct timezone_mapping +{ + timezone_mapping(const char* other, const char* territory, const char* type) + : other(other), territory(territory), type(type) + { + } + timezone_mapping() = default; + std::string other; + std::string territory; + std::string type; +}; + +} // detail + +#endif // _WIN32 + +struct tzdb +{ + std::string version = "unknown"; + std::vector zones; +#if !USE_OS_TZDB + std::vector links; +#endif + std::vector leap_seconds; +#if !USE_OS_TZDB + std::vector rules; +#endif +#ifdef _WIN32 + std::vector mappings; +#endif + tzdb* next = nullptr; + + tzdb() = default; +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) + tzdb(tzdb&&) = default; + tzdb& operator=(tzdb&&) = default; +#else // defined(_MSC_VER) && (_MSC_VER < 1900) + tzdb(tzdb&& src) + : version(std::move(src.version)) + , zones(std::move(src.zones)) + , links(std::move(src.links)) + , leap_seconds(std::move(src.leap_seconds)) + , rules(std::move(src.rules)) + , mappings(std::move(src.mappings)) + {} + + tzdb& operator=(tzdb&& src) + { + version = std::move(src.version); + zones = std::move(src.zones); + links = std::move(src.links); + leap_seconds = std::move(src.leap_seconds); + rules = std::move(src.rules); + mappings = std::move(src.mappings); + return *this; + } +#endif // defined(_MSC_VER) && (_MSC_VER < 1900) + +#if HAS_STRING_VIEW + const time_zone* locate_zone(std::string_view tz_name) const; +#else + const time_zone* locate_zone(const std::string& tz_name) const; +#endif + const time_zone* current_zone() const; +}; + +using TZ_DB = tzdb; + +DATE_API std::ostream& +operator<<(std::ostream& os, const tzdb& db); + +DATE_API const tzdb& get_tzdb(); + +class tzdb_list +{ + std::atomic head_{nullptr}; + +public: + ~tzdb_list(); + tzdb_list() = default; + tzdb_list(tzdb_list&& x) NOEXCEPT; + + const tzdb& front() const NOEXCEPT {return *head_;} + tzdb& front() NOEXCEPT {return *head_;} + + class const_iterator; + + const_iterator begin() const NOEXCEPT; + const_iterator end() const NOEXCEPT; + + const_iterator cbegin() const NOEXCEPT; + const_iterator cend() const NOEXCEPT; + + const_iterator erase_after(const_iterator p) NOEXCEPT; + + struct undocumented_helper; +private: + void push_front(tzdb* tzdb) NOEXCEPT; +}; + +class tzdb_list::const_iterator +{ + tzdb* p_ = nullptr; + + explicit const_iterator(tzdb* p) NOEXCEPT : p_{p} {} +public: + const_iterator() = default; + + using iterator_category = std::forward_iterator_tag; + using value_type = tzdb; + using reference = const value_type&; + using pointer = const value_type*; + using difference_type = std::ptrdiff_t; + + reference operator*() const NOEXCEPT {return *p_;} + pointer operator->() const NOEXCEPT {return p_;} + + const_iterator& operator++() NOEXCEPT {p_ = p_->next; return *this;} + const_iterator operator++(int) NOEXCEPT {auto t = *this; ++(*this); return t;} + + friend + bool + operator==(const const_iterator& x, const const_iterator& y) NOEXCEPT + {return x.p_ == y.p_;} + + friend + bool + operator!=(const const_iterator& x, const const_iterator& y) NOEXCEPT + {return !(x == y);} + + friend class tzdb_list; +}; + +inline +tzdb_list::const_iterator +tzdb_list::begin() const NOEXCEPT +{ + return const_iterator{head_}; +} + +inline +tzdb_list::const_iterator +tzdb_list::end() const NOEXCEPT +{ + return const_iterator{nullptr}; +} + +inline +tzdb_list::const_iterator +tzdb_list::cbegin() const NOEXCEPT +{ + return begin(); +} + +inline +tzdb_list::const_iterator +tzdb_list::cend() const NOEXCEPT +{ + return end(); +} + +DATE_API tzdb_list& get_tzdb_list(); + +#if !USE_OS_TZDB + +DATE_API const tzdb& reload_tzdb(); +DATE_API void set_install(const std::string& install); + +#endif // !USE_OS_TZDB + +#if HAS_REMOTE_API + +DATE_API std::string remote_version(); +// if provided error_buffer size should be at least CURL_ERROR_SIZE +DATE_API bool remote_download(const std::string& version, char* error_buffer = nullptr); +DATE_API bool remote_install(const std::string& version); + +#endif + +// zoned_time + +namespace detail +{ + +template +inline +T* +to_raw_pointer(T* p) NOEXCEPT +{ + return p; +} + +template +inline +auto +to_raw_pointer(Pointer p) NOEXCEPT + -> decltype(detail::to_raw_pointer(p.operator->())) +{ + return detail::to_raw_pointer(p.operator->()); +} + +} // namespace detail + +template +template +inline +TimeZonePtr2&& +zoned_time::check(TimeZonePtr2&& p) +{ + if (detail::to_raw_pointer(p) == nullptr) + throw std::runtime_error( + "zoned_time constructed with a time zone pointer == nullptr"); + return std::forward(p); +} + +template +#if !defined(_MSC_VER) || (_MSC_VER > 1916) +template +#endif +inline +zoned_time::zoned_time() + : zone_(check(zoned_traits::default_zone())) + {} + +template +#if !defined(_MSC_VER) || (_MSC_VER > 1916) +template +#endif +inline +zoned_time::zoned_time(const sys_time& st) + : zone_(check(zoned_traits::default_zone())) + , tp_(st) + {} + +template +inline +zoned_time::zoned_time(TimeZonePtr z) + : zone_(check(std::move(z))) + {} + +#if HAS_STRING_VIEW + +template +template +inline +zoned_time::zoned_time(std::string_view name) + : zoned_time(zoned_traits::locate_zone(name)) + {} + +#else // !HAS_STRING_VIEW + +template +#if !defined(_MSC_VER) || (_MSC_VER > 1916) +template +#endif +inline +zoned_time::zoned_time(const std::string& name) + : zoned_time(zoned_traits::locate_zone(name)) + {} + +#endif // !HAS_STRING_VIEW + +template +template +inline +zoned_time::zoned_time(const zoned_time& zt) NOEXCEPT + : zone_(zt.zone_) + , tp_(zt.tp_) + {} + +template +inline +zoned_time::zoned_time(TimeZonePtr z, const sys_time& st) + : zone_(check(std::move(z))) + , tp_(st) + {} + +template +#if !defined(_MSC_VER) || (_MSC_VER > 1916) +template +#endif +inline +zoned_time::zoned_time(TimeZonePtr z, const local_time& t) + : zone_(check(std::move(z))) + , tp_(zone_->to_sys(t)) + {} + +template +#if !defined(_MSC_VER) || (_MSC_VER > 1916) +template +#endif +inline +zoned_time::zoned_time(TimeZonePtr z, const local_time& t, + choose c) + : zone_(check(std::move(z))) + , tp_(zone_->to_sys(t, c)) + {} + +template +template +inline +zoned_time::zoned_time(TimeZonePtr z, + const zoned_time& zt) + : zone_(check(std::move(z))) + , tp_(zt.tp_) + {} + +template +template +inline +zoned_time::zoned_time(TimeZonePtr z, + const zoned_time& zt, choose) + : zoned_time(std::move(z), zt) + {} + +#if HAS_STRING_VIEW + +template +template +inline +zoned_time::zoned_time(std::string_view name, + detail::nodeduct_t&> st) + : zoned_time(zoned_traits::locate_zone(name), st) + {} + +template +template +inline +zoned_time::zoned_time(std::string_view name, + detail::nodeduct_t&> t) + : zoned_time(zoned_traits::locate_zone(name), t) + {} + +template +template +inline +zoned_time::zoned_time(std::string_view name, + detail::nodeduct_t&> t, choose c) + : zoned_time(zoned_traits::locate_zone(name), t, c) + {} + +template +template +inline +zoned_time::zoned_time(std::string_view name, + const zoned_time& zt) + : zoned_time(zoned_traits::locate_zone(name), zt) + {} + +template +template +inline +zoned_time::zoned_time(std::string_view name, + const zoned_time& zt, + choose c) + : zoned_time(zoned_traits::locate_zone(name), zt, c) + {} + +#else // !HAS_STRING_VIEW + +template +#if !defined(_MSC_VER) || (_MSC_VER > 1916) +template +#endif +inline +zoned_time::zoned_time(const std::string& name, + const sys_time& st) + : zoned_time(zoned_traits::locate_zone(name), st) + {} + +template +#if !defined(_MSC_VER) || (_MSC_VER > 1916) +template +#endif +inline +zoned_time::zoned_time(const char* name, + const sys_time& st) + : zoned_time(zoned_traits::locate_zone(name), st) + {} + +template +#if !defined(_MSC_VER) || (_MSC_VER > 1916) +template +#endif +inline +zoned_time::zoned_time(const std::string& name, + const local_time& t) + : zoned_time(zoned_traits::locate_zone(name), t) + {} + +template +#if !defined(_MSC_VER) || (_MSC_VER > 1916) +template +#endif +inline +zoned_time::zoned_time(const char* name, + const local_time& t) + : zoned_time(zoned_traits::locate_zone(name), t) + {} + +template +#if !defined(_MSC_VER) || (_MSC_VER > 1916) +template +#endif +inline +zoned_time::zoned_time(const std::string& name, + const local_time& t, choose c) + : zoned_time(zoned_traits::locate_zone(name), t, c) + {} + +template +#if !defined(_MSC_VER) || (_MSC_VER > 1916) +template +#endif +inline +zoned_time::zoned_time(const char* name, + const local_time& t, choose c) + : zoned_time(zoned_traits::locate_zone(name), t, c) + {} + +template +#if !defined(_MSC_VER) || (_MSC_VER > 1916) +template +#else +template +#endif +inline +zoned_time::zoned_time(const std::string& name, + const zoned_time& zt) + : zoned_time(zoned_traits::locate_zone(name), zt) + {} + +template +#if !defined(_MSC_VER) || (_MSC_VER > 1916) +template +#else +template +#endif +inline +zoned_time::zoned_time(const char* name, + const zoned_time& zt) + : zoned_time(zoned_traits::locate_zone(name), zt) + {} + +template +#if !defined(_MSC_VER) || (_MSC_VER > 1916) +template +#else +template +#endif +inline +zoned_time::zoned_time(const std::string& name, + const zoned_time& zt, + choose c) + : zoned_time(zoned_traits::locate_zone(name), zt, c) + {} + +template +#if !defined(_MSC_VER) || (_MSC_VER > 1916) +template +#else +template +#endif +inline +zoned_time::zoned_time(const char* name, + const zoned_time& zt, + choose c) + : zoned_time(zoned_traits::locate_zone(name), zt, c) + {} + +#endif // HAS_STRING_VIEW + +template +inline +zoned_time& +zoned_time::operator=(const sys_time& st) +{ + tp_ = st; + return *this; +} + +template +inline +zoned_time& +zoned_time::operator=(const local_time& ut) +{ + tp_ = zone_->to_sys(ut); + return *this; +} + +template +inline +zoned_time::operator local_time::duration>() const +{ + return get_local_time(); +} + +template +inline +zoned_time::operator sys_time::duration>() const +{ + return get_sys_time(); +} + +template +inline +TimeZonePtr +zoned_time::get_time_zone() const +{ + return zone_; +} + +template +inline +local_time::duration> +zoned_time::get_local_time() const +{ + return zone_->to_local(tp_); +} + +template +inline +sys_time::duration> +zoned_time::get_sys_time() const +{ + return tp_; +} + +template +inline +sys_info +zoned_time::get_info() const +{ + return zone_->get_info(tp_); +} + +// make_zoned_time + +inline +zoned_time +make_zoned() +{ + return zoned_time(); +} + +template +inline +zoned_time::type> +make_zoned(const sys_time& tp) +{ + return zoned_time::type>(tp); +} + +template 1916) +#if !defined(__INTEL_COMPILER) || (__INTEL_COMPILER > 1600) + , class = typename std::enable_if + < + std::is_class + < + typename std::decay + < + decltype(*detail::to_raw_pointer(std::declval())) + >::type + >{} + >::type +#endif +#endif + > +inline +zoned_time +make_zoned(TimeZonePtr z) +{ + return zoned_time(std::move(z)); +} + +inline +zoned_seconds +make_zoned(const std::string& name) +{ + return zoned_seconds(name); +} + +template 1916) +#if !defined(__INTEL_COMPILER) || (__INTEL_COMPILER > 1600) + , class = typename std::enable_if + < + std::is_class())>::type>{} + >::type +#endif +#endif + > +inline +zoned_time::type, TimeZonePtr> +make_zoned(TimeZonePtr zone, const local_time& tp) +{ + return zoned_time::type, + TimeZonePtr>(std::move(zone), tp); +} + +template 1916) +#if !defined(__INTEL_COMPILER) || (__INTEL_COMPILER > 1600) + , class = typename std::enable_if + < + std::is_class())>::type>{} + >::type +#endif +#endif + > +inline +zoned_time::type, TimeZonePtr> +make_zoned(TimeZonePtr zone, const local_time& tp, choose c) +{ + return zoned_time::type, + TimeZonePtr>(std::move(zone), tp, c); +} + +template +inline +zoned_time::type> +make_zoned(const std::string& name, const local_time& tp) +{ + return zoned_time::type>(name, tp); +} + +template +inline +zoned_time::type> +make_zoned(const std::string& name, const local_time& tp, choose c) +{ + return zoned_time::type>(name, tp, c); +} + +template +inline +zoned_time +make_zoned(TimeZonePtr zone, const zoned_time& zt) +{ + return zoned_time(std::move(zone), zt); +} + +template +inline +zoned_time +make_zoned(const std::string& name, const zoned_time& zt) +{ + return zoned_time(name, zt); +} + +template +inline +zoned_time +make_zoned(TimeZonePtr zone, const zoned_time& zt, choose c) +{ + return zoned_time(std::move(zone), zt, c); +} + +template +inline +zoned_time +make_zoned(const std::string& name, const zoned_time& zt, choose c) +{ + return zoned_time(name, zt, c); +} + +template 1916) +#if !defined(__INTEL_COMPILER) || (__INTEL_COMPILER > 1600) + , class = typename std::enable_if + < + std::is_class())>::type>{} + >::type +#endif +#endif + > +inline +zoned_time::type, TimeZonePtr> +make_zoned(TimeZonePtr zone, const sys_time& st) +{ + return zoned_time::type, + TimeZonePtr>(std::move(zone), st); +} + +template +inline +zoned_time::type> +make_zoned(const std::string& name, const sys_time& st) +{ + return zoned_time::type>(name, st); +} + +template +std::basic_ostream& +to_stream(std::basic_ostream& os, const CharT* fmt, + const zoned_time& tp) +{ + using duration = typename zoned_time::duration; + using LT = local_time; + auto const st = tp.get_sys_time(); + auto const info = tp.get_time_zone()->get_info(st); + return to_stream(os, fmt, LT{(st+info.offset).time_since_epoch()}, + &info.abbrev, &info.offset); +} + +template +inline +std::basic_ostream& +operator<<(std::basic_ostream& os, const zoned_time& t) +{ + const CharT fmt[] = {'%', 'F', ' ', '%', 'T', ' ', '%', 'Z', CharT{}}; + return to_stream(os, fmt, t); +} + +class utc_clock +{ +public: + using duration = std::chrono::system_clock::duration; + using rep = duration::rep; + using period = duration::period; + using time_point = std::chrono::time_point; + static CONSTDATA bool is_steady = false; + + static time_point now(); + + template + static + std::chrono::time_point::type> + to_sys(const std::chrono::time_point&); + + template + static + std::chrono::time_point::type> + from_sys(const std::chrono::time_point&); + + template + static + std::chrono::time_point::type> + to_local(const std::chrono::time_point&); + + template + static + std::chrono::time_point::type> + from_local(const std::chrono::time_point&); +}; + +template + using utc_time = std::chrono::time_point; + +using utc_seconds = utc_time; + +template +utc_time::type> +utc_clock::from_sys(const sys_time& st) +{ + using std::chrono::seconds; + using CD = typename std::common_type::type; + auto const& leaps = get_tzdb().leap_seconds; + auto const lt = std::upper_bound(leaps.begin(), leaps.end(), st); + return utc_time{st.time_since_epoch() + seconds{lt-leaps.begin()}}; +} + +// Return pair +// first is true if ut is during a leap second insertion, otherwise false. +// If ut is during a leap second insertion, that leap second is included in the count +template +std::pair +is_leap_second(date::utc_time const& ut) +{ + using std::chrono::seconds; + using duration = typename std::common_type::type; + auto const& leaps = get_tzdb().leap_seconds; + auto tp = sys_time{ut.time_since_epoch()}; + auto const lt = std::upper_bound(leaps.begin(), leaps.end(), tp); + auto ds = seconds{lt-leaps.begin()}; + tp -= ds; + auto ls = false; + if (lt > leaps.begin()) + { + if (tp < lt[-1]) + { + if (tp >= lt[-1].date() - seconds{1}) + ls = true; + else + --ds; + } + } + return {ls, ds}; +} + +struct leap_second_info +{ + bool is_leap_second; + std::chrono::seconds elapsed; +}; + +template +leap_second_info +get_leap_second_info(date::utc_time const& ut) +{ + auto p = is_leap_second(ut); + return {p.first, p.second}; +} + +template +sys_time::type> +utc_clock::to_sys(const utc_time& ut) +{ + using std::chrono::seconds; + using CD = typename std::common_type::type; + auto ls = is_leap_second(ut); + auto tp = sys_time{ut.time_since_epoch() - ls.second}; + if (ls.first) + tp = floor(tp) + seconds{1} - CD{1}; + return tp; +} + +inline +utc_clock::time_point +utc_clock::now() +{ + return from_sys(std::chrono::system_clock::now()); +} + +template +utc_time::type> +utc_clock::from_local(const local_time& st) +{ + return from_sys(sys_time{st.time_since_epoch()}); +} + +template +local_time::type> +utc_clock::to_local(const utc_time& ut) +{ + using CD = typename std::common_type::type; + return local_time{to_sys(ut).time_since_epoch()}; +} + +template +std::basic_ostream& +to_stream(std::basic_ostream& os, const CharT* fmt, + const utc_time& t) +{ + using std::chrono::seconds; + using CT = typename std::common_type::type; + const std::string abbrev("UTC"); + CONSTDATA seconds offset{0}; + auto ls = is_leap_second(t); + auto tp = sys_time{t.time_since_epoch() - ls.second}; + auto const sd = floor(tp); + year_month_day ymd = sd; + auto time = make_time(tp - sys_seconds{sd}); + time.seconds(detail::undocumented{}) += seconds{ls.first}; + fields fds{ymd, time}; + return to_stream(os, fmt, fds, &abbrev, &offset); +} + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const utc_time& t) +{ + const CharT fmt[] = {'%', 'F', ' ', '%', 'T', CharT{}}; + return to_stream(os, fmt, t); +} + +template > +std::basic_istream& +from_stream(std::basic_istream& is, const CharT* fmt, + utc_time& tp, std::basic_string* abbrev = nullptr, + std::chrono::minutes* offset = nullptr) +{ + using std::chrono::seconds; + using std::chrono::minutes; + using CT = typename std::common_type::type; + minutes offset_local{}; + auto offptr = offset ? offset : &offset_local; + fields fds{}; + fds.has_tod = true; + from_stream(is, fmt, fds, abbrev, offptr); + if (!fds.ymd.ok()) + is.setstate(std::ios::failbit); + if (!is.fail()) + { + bool is_60_sec = fds.tod.seconds() == seconds{60}; + if (is_60_sec) + fds.tod.seconds(detail::undocumented{}) -= seconds{1}; + auto tmp = utc_clock::from_sys(sys_days(fds.ymd) - *offptr + fds.tod.to_duration()); + if (is_60_sec) + tmp += seconds{1}; + if (is_60_sec != is_leap_second(tmp).first || !fds.tod.in_conventional_range()) + { + is.setstate(std::ios::failbit); + return is; + } + tp = std::chrono::time_point_cast(tmp); + } + return is; +} + +// tai_clock + +class tai_clock +{ +public: + using duration = std::chrono::system_clock::duration; + using rep = duration::rep; + using period = duration::period; + using time_point = std::chrono::time_point; + static const bool is_steady = false; + + static time_point now(); + + template + static + std::chrono::time_point::type> + to_utc(const std::chrono::time_point&) NOEXCEPT; + + template + static + std::chrono::time_point::type> + from_utc(const std::chrono::time_point&) NOEXCEPT; + + template + static + std::chrono::time_point::type> + to_local(const std::chrono::time_point&) NOEXCEPT; + + template + static + std::chrono::time_point::type> + from_local(const std::chrono::time_point&) NOEXCEPT; +}; + +template + using tai_time = std::chrono::time_point; + +using tai_seconds = tai_time; + +template +inline +utc_time::type> +tai_clock::to_utc(const tai_time& t) NOEXCEPT +{ + using std::chrono::seconds; + using CD = typename std::common_type::type; + return utc_time{t.time_since_epoch()} - + (sys_days(year{1970}/January/1) - sys_days(year{1958}/January/1) + seconds{10}); +} + +template +inline +tai_time::type> +tai_clock::from_utc(const utc_time& t) NOEXCEPT +{ + using std::chrono::seconds; + using CD = typename std::common_type::type; + return tai_time{t.time_since_epoch()} + + (sys_days(year{1970}/January/1) - sys_days(year{1958}/January/1) + seconds{10}); +} + +inline +tai_clock::time_point +tai_clock::now() +{ + return from_utc(utc_clock::now()); +} + +template +inline +local_time::type> +tai_clock::to_local(const tai_time& t) NOEXCEPT +{ + using CD = typename std::common_type::type; + return local_time{t.time_since_epoch()} - + (local_days(year{1970}/January/1) - local_days(year{1958}/January/1)); +} + +template +inline +tai_time::type> +tai_clock::from_local(const local_time& t) NOEXCEPT +{ + using CD = typename std::common_type::type; + return tai_time{t.time_since_epoch()} + + (local_days(year{1970}/January/1) - local_days(year{1958}/January/1)); +} + +template +std::basic_ostream& +to_stream(std::basic_ostream& os, const CharT* fmt, + const tai_time& t) +{ + const std::string abbrev("TAI"); + CONSTDATA std::chrono::seconds offset{0}; + return to_stream(os, fmt, tai_clock::to_local(t), &abbrev, &offset); +} + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const tai_time& t) +{ + const CharT fmt[] = {'%', 'F', ' ', '%', 'T', CharT{}}; + return to_stream(os, fmt, t); +} + +template > +std::basic_istream& +from_stream(std::basic_istream& is, const CharT* fmt, + tai_time& tp, + std::basic_string* abbrev = nullptr, + std::chrono::minutes* offset = nullptr) +{ + local_time lp; + from_stream(is, fmt, lp, abbrev, offset); + if (!is.fail()) + tp = tai_clock::from_local(lp); + return is; +} + +// gps_clock + +class gps_clock +{ +public: + using duration = std::chrono::system_clock::duration; + using rep = duration::rep; + using period = duration::period; + using time_point = std::chrono::time_point; + static const bool is_steady = false; + + static time_point now(); + + template + static + std::chrono::time_point::type> + to_utc(const std::chrono::time_point&) NOEXCEPT; + + template + static + std::chrono::time_point::type> + from_utc(const std::chrono::time_point&) NOEXCEPT; + + template + static + std::chrono::time_point::type> + to_local(const std::chrono::time_point&) NOEXCEPT; + + template + static + std::chrono::time_point::type> + from_local(const std::chrono::time_point&) NOEXCEPT; +}; + +template + using gps_time = std::chrono::time_point; + +using gps_seconds = gps_time; + +template +inline +utc_time::type> +gps_clock::to_utc(const gps_time& t) NOEXCEPT +{ + using std::chrono::seconds; + using CD = typename std::common_type::type; + return utc_time{t.time_since_epoch()} + + (sys_days(year{1980}/January/Sunday[1]) - sys_days(year{1970}/January/1) + + seconds{9}); +} + +template +inline +gps_time::type> +gps_clock::from_utc(const utc_time& t) NOEXCEPT +{ + using std::chrono::seconds; + using CD = typename std::common_type::type; + return gps_time{t.time_since_epoch()} - + (sys_days(year{1980}/January/Sunday[1]) - sys_days(year{1970}/January/1) + + seconds{9}); +} + +inline +gps_clock::time_point +gps_clock::now() +{ + return from_utc(utc_clock::now()); +} + +template +inline +local_time::type> +gps_clock::to_local(const gps_time& t) NOEXCEPT +{ + using CD = typename std::common_type::type; + return local_time{t.time_since_epoch()} + + (local_days(year{1980}/January/Sunday[1]) - local_days(year{1970}/January/1)); +} + +template +inline +gps_time::type> +gps_clock::from_local(const local_time& t) NOEXCEPT +{ + using CD = typename std::common_type::type; + return gps_time{t.time_since_epoch()} - + (local_days(year{1980}/January/Sunday[1]) - local_days(year{1970}/January/1)); +} + + +template +std::basic_ostream& +to_stream(std::basic_ostream& os, const CharT* fmt, + const gps_time& t) +{ + const std::string abbrev("GPS"); + CONSTDATA std::chrono::seconds offset{0}; + return to_stream(os, fmt, gps_clock::to_local(t), &abbrev, &offset); +} + +template +std::basic_ostream& +operator<<(std::basic_ostream& os, const gps_time& t) +{ + const CharT fmt[] = {'%', 'F', ' ', '%', 'T', CharT{}}; + return to_stream(os, fmt, t); +} + +template > +std::basic_istream& +from_stream(std::basic_istream& is, const CharT* fmt, + gps_time& tp, + std::basic_string* abbrev = nullptr, + std::chrono::minutes* offset = nullptr) +{ + local_time lp; + from_stream(is, fmt, lp, abbrev, offset); + if (!is.fail()) + tp = gps_clock::from_local(lp); + return is; +} + +// clock_time_conversion + +template +struct clock_time_conversion +{}; + +template <> +struct clock_time_conversion +{ + template + CONSTCD14 + sys_time + operator()(const sys_time& st) const + { + return st; + } +}; + +template <> +struct clock_time_conversion +{ + template + CONSTCD14 + utc_time + operator()(const utc_time& ut) const + { + return ut; + } +}; + +template<> +struct clock_time_conversion +{ + template + CONSTCD14 + local_time + operator()(const local_time& lt) const + { + return lt; + } +}; + +template <> +struct clock_time_conversion +{ + template + utc_time::type> + operator()(const sys_time& st) const + { + return utc_clock::from_sys(st); + } +}; + +template <> +struct clock_time_conversion +{ + template + sys_time::type> + operator()(const utc_time& ut) const + { + return utc_clock::to_sys(ut); + } +}; + +template<> +struct clock_time_conversion +{ + template + CONSTCD14 + local_time + operator()(const sys_time& st) const + { + return local_time{st.time_since_epoch()}; + } +}; + +template<> +struct clock_time_conversion +{ + template + CONSTCD14 + sys_time + operator()(const local_time& lt) const + { + return sys_time{lt.time_since_epoch()}; + } +}; + +template<> +struct clock_time_conversion +{ + template + utc_time::type> + operator()(const local_time& lt) const + { + return utc_clock::from_local(lt); + } +}; + +template<> +struct clock_time_conversion +{ + template + local_time::type> + operator()(const utc_time& ut) const + { + return utc_clock::to_local(ut); + } +}; + +template +struct clock_time_conversion +{ + template + CONSTCD14 + std::chrono::time_point + operator()(const std::chrono::time_point& tp) const + { + return tp; + } +}; + +namespace ctc_detail +{ + +template + using time_point = std::chrono::time_point; + +using std::declval; +using std::chrono::system_clock; + +//Check if TimePoint is time for given clock, +//if not emits hard error +template +struct return_clock_time +{ + using clock_time_point = time_point; + using type = TimePoint; + + static_assert(std::is_same::value, + "time point with appropariate clock shall be returned"); +}; + +// Check if Clock has to_sys method accepting TimePoint with given duration const& and +// returning sys_time. If so has nested type member equal to return type to_sys. +template +struct return_to_sys +{}; + +template +struct return_to_sys + < + Clock, Duration, + decltype(Clock::to_sys(declval const&>()), void()) + > + : return_clock_time + < + system_clock, + decltype(Clock::to_sys(declval const&>())) + > +{}; + +// Similiar to above +template +struct return_from_sys +{}; + +template +struct return_from_sys + < + Clock, Duration, + decltype(Clock::from_sys(declval const&>()), + void()) + > + : return_clock_time + < + Clock, + decltype(Clock::from_sys(declval const&>())) + > +{}; + +// Similiar to above +template +struct return_to_utc +{}; + +template +struct return_to_utc + < + Clock, Duration, + decltype(Clock::to_utc(declval const&>()), void()) + > + : return_clock_time + < + utc_clock, + decltype(Clock::to_utc(declval const&>()))> +{}; + +// Similiar to above +template +struct return_from_utc +{}; + +template +struct return_from_utc + < + Clock, Duration, + decltype(Clock::from_utc(declval const&>()), + void()) + > + : return_clock_time + < + Clock, + decltype(Clock::from_utc(declval const&>())) + > +{}; + +// Similiar to above +template +struct return_to_local +{}; + +template +struct return_to_local + < + Clock, Duration, + decltype(Clock::to_local(declval const&>()), + void()) + > + : return_clock_time + < + local_t, + decltype(Clock::to_local(declval const&>())) + > +{}; + +// Similiar to above +template +struct return_from_local +{}; + +template +struct return_from_local + < + Clock, Duration, + decltype(Clock::from_local(declval const&>()), + void()) + > + : return_clock_time + < + Clock, + decltype(Clock::from_local(declval const&>())) + > +{}; + +} // namespace ctc_detail + +template +struct clock_time_conversion +{ + template + CONSTCD14 + typename ctc_detail::return_to_sys::type + operator()(const std::chrono::time_point& tp) const + { + return SrcClock::to_sys(tp); + } +}; + +template +struct clock_time_conversion +{ + template + CONSTCD14 + typename ctc_detail::return_from_sys::type + operator()(const sys_time& st) const + { + return DstClock::from_sys(st); + } +}; + +template +struct clock_time_conversion +{ + template + CONSTCD14 + typename ctc_detail::return_to_utc::type + operator()(const std::chrono::time_point& tp) const + { + return SrcClock::to_utc(tp); + } +}; + +template +struct clock_time_conversion +{ + template + CONSTCD14 + typename ctc_detail::return_from_utc::type + operator()(const utc_time& ut) const + { + return DstClock::from_utc(ut); + } +}; + +template +struct clock_time_conversion +{ + template + CONSTCD14 + typename ctc_detail::return_to_local::type + operator()(const std::chrono::time_point& tp) const + { + return SrcClock::to_local(tp); + } +}; + +template +struct clock_time_conversion +{ + template + CONSTCD14 + typename ctc_detail::return_from_local::type + operator()(const local_time& lt) const + { + return DstClock::from_local(lt); + } +}; + +namespace clock_cast_detail +{ + +template + using time_point = std::chrono::time_point; +using std::chrono::system_clock; + +template +CONSTCD14 +auto +conv_clock(const time_point& t) + -> decltype(std::declval>()(t)) +{ + return clock_time_conversion{}(t); +} + +//direct trait conversion, 1st candidate +template +CONSTCD14 +auto +cc_impl(const time_point& t, const time_point*) + -> decltype(conv_clock(t)) +{ + return conv_clock(t); +} + +//conversion through sys, 2nd candidate +template +CONSTCD14 +auto +cc_impl(const time_point& t, const void*) + -> decltype(conv_clock(conv_clock(t))) +{ + return conv_clock(conv_clock(t)); +} + +//conversion through utc, 2nd candidate +template +CONSTCD14 +auto +cc_impl(const time_point& t, const void*) + -> decltype(0, // MSVC_WORKAROUND + conv_clock(conv_clock(t))) +{ + return conv_clock(conv_clock(t)); +} + +//conversion through sys and utc, 3rd candidate +template +CONSTCD14 +auto +cc_impl(const time_point& t, ...) + -> decltype(conv_clock(conv_clock(conv_clock(t)))) +{ + return conv_clock(conv_clock(conv_clock(t))); +} + +//conversion through utc and sys, 3rd candidate +template +CONSTCD14 +auto +cc_impl(const time_point& t, ...) + -> decltype(0, // MSVC_WORKAROUND + conv_clock(conv_clock(conv_clock(t)))) +{ + return conv_clock(conv_clock(conv_clock(t))); +} + +} // namespace clock_cast_detail + +template +CONSTCD14 +auto +clock_cast(const std::chrono::time_point& tp) + -> decltype(clock_cast_detail::cc_impl(tp, &tp)) +{ + return clock_cast_detail::cc_impl(tp, &tp); +} + +// Deprecated API + +template +inline +sys_time::type> +to_sys_time(const utc_time& t) +{ + return utc_clock::to_sys(t); +} + +template +inline +sys_time::type> +to_sys_time(const tai_time& t) +{ + return utc_clock::to_sys(tai_clock::to_utc(t)); +} + +template +inline +sys_time::type> +to_sys_time(const gps_time& t) +{ + return utc_clock::to_sys(gps_clock::to_utc(t)); +} + + +template +inline +utc_time::type> +to_utc_time(const sys_time& t) +{ + return utc_clock::from_sys(t); +} + +template +inline +utc_time::type> +to_utc_time(const tai_time& t) +{ + return tai_clock::to_utc(t); +} + +template +inline +utc_time::type> +to_utc_time(const gps_time& t) +{ + return gps_clock::to_utc(t); +} + + +template +inline +tai_time::type> +to_tai_time(const sys_time& t) +{ + return tai_clock::from_utc(utc_clock::from_sys(t)); +} + +template +inline +tai_time::type> +to_tai_time(const utc_time& t) +{ + return tai_clock::from_utc(t); +} + +template +inline +tai_time::type> +to_tai_time(const gps_time& t) +{ + return tai_clock::from_utc(gps_clock::to_utc(t)); +} + + +template +inline +gps_time::type> +to_gps_time(const sys_time& t) +{ + return gps_clock::from_utc(utc_clock::from_sys(t)); +} + +template +inline +gps_time::type> +to_gps_time(const utc_time& t) +{ + return gps_clock::from_utc(t); +} + +template +inline +gps_time::type> +to_gps_time(const tai_time& t) +{ + return gps_clock::from_utc(tai_clock::to_utc(t)); +} + +} // namespace date + +#endif // TZ_H diff --git a/src/date/tz_private.h b/src/date/tz_private.h new file mode 100644 index 0000000..aec01d0 --- /dev/null +++ b/src/date/tz_private.h @@ -0,0 +1,316 @@ +#ifndef TZ_PRIVATE_H +#define TZ_PRIVATE_H + +// The MIT License (MIT) +// +// Copyright (c) 2015, 2016 Howard Hinnant +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. +// +// Our apologies. When the previous paragraph was written, lowercase had not yet +// been invented (that would involve another several millennia of evolution). +// We did not mean to shout. + +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) +#include "tz.h" +#else +#include "date.h" +#include +#endif + +namespace date +{ + +namespace detail +{ + +#if !USE_OS_TZDB + +enum class tz {utc, local, standard}; + +//forward declare to avoid warnings in gcc 6.2 +class MonthDayTime; +std::istream& operator>>(std::istream& is, MonthDayTime& x); +std::ostream& operator<<(std::ostream& os, const MonthDayTime& x); + + +class MonthDayTime +{ +private: + struct pair + { +#if defined(_MSC_VER) && (_MSC_VER < 1900) + pair() : month_day_(date::jan / 1), weekday_(0U) {} + + pair(const date::month_day& month_day, const date::weekday& weekday) + : month_day_(month_day), weekday_(weekday) {} +#endif + + date::month_day month_day_; + date::weekday weekday_; + }; + + enum Type {month_day, month_last_dow, lteq, gteq}; + + Type type_{month_day}; + +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) + union U +#else + struct U +#endif + { + date::month_day month_day_; + date::month_weekday_last month_weekday_last_; + pair month_day_weekday_; + +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) + U() : month_day_{date::jan/1} {} +#else + U() : + month_day_(date::jan/1), + month_weekday_last_(date::month(0U), date::weekday_last(date::weekday(0U))) + {} + +#endif // !defined(_MSC_VER) || (_MSC_VER >= 1900) + + U& operator=(const date::month_day& x); + U& operator=(const date::month_weekday_last& x); + U& operator=(const pair& x); + } u; + + std::chrono::hours h_{0}; + std::chrono::minutes m_{0}; + std::chrono::seconds s_{0}; + tz zone_{tz::local}; + +public: + MonthDayTime() = default; + MonthDayTime(local_seconds tp, tz timezone); + MonthDayTime(const date::month_day& md, tz timezone); + + date::day day() const; + date::month month() const; + tz zone() const {return zone_;} + + void canonicalize(date::year y); + + sys_seconds + to_sys(date::year y, std::chrono::seconds offset, std::chrono::seconds save) const; + sys_days to_sys_days(date::year y) const; + + sys_seconds to_time_point(date::year y) const; + int compare(date::year y, const MonthDayTime& x, date::year yx, + std::chrono::seconds offset, std::chrono::minutes prev_save) const; + + friend std::istream& operator>>(std::istream& is, MonthDayTime& x); + friend std::ostream& operator<<(std::ostream& os, const MonthDayTime& x); +}; + +// A Rule specifies one or more set of datetimes without using an offset. +// Multiple dates are specified with multiple years. The years in effect +// go from starting_year_ to ending_year_, inclusive. starting_year_ <= +// ending_year_. save_ is in effect for times from the specified time +// onward, including the specified time. When the specified time is +// local, it uses the save_ from the chronologically previous Rule, or if +// there is none, 0. + +//forward declare to avoid warnings in gcc 6.2 +class Rule; +bool operator==(const Rule& x, const Rule& y); +bool operator<(const Rule& x, const Rule& y); +bool operator==(const Rule& x, const date::year& y); +bool operator<(const Rule& x, const date::year& y); +bool operator==(const date::year& x, const Rule& y); +bool operator<(const date::year& x, const Rule& y); +bool operator==(const Rule& x, const std::string& y); +bool operator<(const Rule& x, const std::string& y); +bool operator==(const std::string& x, const Rule& y); +bool operator<(const std::string& x, const Rule& y); +std::ostream& operator<<(std::ostream& os, const Rule& r); + +class Rule +{ +private: + std::string name_; + date::year starting_year_{0}; + date::year ending_year_{0}; + MonthDayTime starting_at_; + std::chrono::minutes save_{0}; + std::string abbrev_; + +public: + Rule() = default; + explicit Rule(const std::string& s); + Rule(const Rule& r, date::year starting_year, date::year ending_year); + + const std::string& name() const {return name_;} + const std::string& abbrev() const {return abbrev_;} + + const MonthDayTime& mdt() const {return starting_at_;} + const date::year& starting_year() const {return starting_year_;} + const date::year& ending_year() const {return ending_year_;} + const std::chrono::minutes& save() const {return save_;} + + static void split_overlaps(std::vector& rules); + + friend bool operator==(const Rule& x, const Rule& y); + friend bool operator<(const Rule& x, const Rule& y); + friend bool operator==(const Rule& x, const date::year& y); + friend bool operator<(const Rule& x, const date::year& y); + friend bool operator==(const date::year& x, const Rule& y); + friend bool operator<(const date::year& x, const Rule& y); + friend bool operator==(const Rule& x, const std::string& y); + friend bool operator<(const Rule& x, const std::string& y); + friend bool operator==(const std::string& x, const Rule& y); + friend bool operator<(const std::string& x, const Rule& y); + + friend std::ostream& operator<<(std::ostream& os, const Rule& r); + +private: + date::day day() const; + date::month month() const; + static void split_overlaps(std::vector& rules, std::size_t i, std::size_t& e); + static bool overlaps(const Rule& x, const Rule& y); + static void split(std::vector& rules, std::size_t i, std::size_t k, + std::size_t& e); +}; + +inline bool operator!=(const Rule& x, const Rule& y) {return !(x == y);} +inline bool operator> (const Rule& x, const Rule& y) {return y < x;} +inline bool operator<=(const Rule& x, const Rule& y) {return !(y < x);} +inline bool operator>=(const Rule& x, const Rule& y) {return !(x < y);} + +inline bool operator!=(const Rule& x, const date::year& y) {return !(x == y);} +inline bool operator> (const Rule& x, const date::year& y) {return y < x;} +inline bool operator<=(const Rule& x, const date::year& y) {return !(y < x);} +inline bool operator>=(const Rule& x, const date::year& y) {return !(x < y);} + +inline bool operator!=(const date::year& x, const Rule& y) {return !(x == y);} +inline bool operator> (const date::year& x, const Rule& y) {return y < x;} +inline bool operator<=(const date::year& x, const Rule& y) {return !(y < x);} +inline bool operator>=(const date::year& x, const Rule& y) {return !(x < y);} + +inline bool operator!=(const Rule& x, const std::string& y) {return !(x == y);} +inline bool operator> (const Rule& x, const std::string& y) {return y < x;} +inline bool operator<=(const Rule& x, const std::string& y) {return !(y < x);} +inline bool operator>=(const Rule& x, const std::string& y) {return !(x < y);} + +inline bool operator!=(const std::string& x, const Rule& y) {return !(x == y);} +inline bool operator> (const std::string& x, const Rule& y) {return y < x;} +inline bool operator<=(const std::string& x, const Rule& y) {return !(y < x);} +inline bool operator>=(const std::string& x, const Rule& y) {return !(x < y);} + +struct zonelet +{ + enum tag {has_rule, has_save, is_empty}; + + std::chrono::seconds gmtoff_; + tag tag_ = has_rule; + +#if !defined(_MSC_VER) || (_MSC_VER >= 1900) + union U +#else + struct U +#endif + { + std::string rule_; + std::chrono::minutes save_; + + ~U() {} + U() {} + U(const U&) {} + U& operator=(const U&) = delete; + } u; + + std::string format_; + date::year until_year_{0}; + MonthDayTime until_date_; + sys_seconds until_utc_; + local_seconds until_std_; + local_seconds until_loc_; + std::chrono::minutes initial_save_{0}; + std::string initial_abbrev_; + std::pair first_rule_{nullptr, date::year::min()}; + std::pair last_rule_{nullptr, date::year::max()}; + + ~zonelet(); + zonelet(); + zonelet(const zonelet& i); + zonelet& operator=(const zonelet&) = delete; +}; + +#else // USE_OS_TZDB + +struct ttinfo +{ + std::int32_t tt_gmtoff; + unsigned char tt_isdst; + unsigned char tt_abbrind; + unsigned char pad[2]; +}; + +static_assert(sizeof(ttinfo) == 8, ""); + +struct expanded_ttinfo +{ + std::chrono::seconds offset; + std::string abbrev; + bool is_dst; +}; + +struct transition +{ + sys_seconds timepoint; + const expanded_ttinfo* info; + + transition(sys_seconds tp, const expanded_ttinfo* i = nullptr) + : timepoint(tp) + , info(i) + {} + + friend + std::ostream& + operator<<(std::ostream& os, const transition& t) + { + using date::operator<<; + os << t.timepoint << "Z "; + if (t.info->offset >= std::chrono::seconds{0}) + os << '+'; + os << make_time(t.info->offset); + if (t.info->is_dst > 0) + os << " daylight "; + else + os << " standard "; + os << t.info->abbrev; + return os; + } +}; + +#endif // USE_OS_TZDB + +} // namespace detail + +} // namespace date + +#if defined(_MSC_VER) && (_MSC_VER < 1900) +#include "tz.h" +#endif + +#endif // TZ_PRIVATE_H diff --git a/src/include/Hik/amd64/DataType.h b/src/include/Hik/amd64/DataType.h new file mode 100644 index 0000000..5b75bd1 --- /dev/null +++ b/src/include/Hik/amd64/DataType.h @@ -0,0 +1,111 @@ +#ifndef DATA_TYPE_H +#define DATA_TYPE_H +#define FRAME_HEAD_MAGIC 0x03211546 +#define SYSTEM_SYNC_ID 2 + +#ifdef __LINUX__ +typedef unsigned char UCHAR; +typedef unsigned char* PBYTE; +typedef char* LPTSTR; +typedef unsigned short USHORT; +typedef int HANDLE; +typedef unsigned long ULONG; +typedef unsigned long DWORD; +#endif //#ifdef __LINUX__ + +typedef struct tagFrameInfo{ + ULONG SyncId; /* 00000000000000000000000000010b */ + ULONG Magic; + USHORT FrameType; /* I frames , P frames or BBP frames Audio frames or dsp status etc */ + ULONG Length; /*lenth include this header */ + ULONG FrameNumber; /* serial number of this frame */ + UCHAR Breakable; /* indicate if stream breakable, you could restart new file(with PktSysHeader) if true */ + /*ULONG Ack;*/ + ULONG PTS; /* system clock when this frames is processed */ +}TMFRAME_HEADER, *PTMFRAME_HEADER; + +typedef enum { + StandardNone = 0x80000000, + StandardNTSC = 0x00000001, + StandardPAL = 0x00000002, + StandardSECAM = 0x00000004, +} VideoStandard_t; + + +typedef enum { + PktError = 0, + PktIFrames = 0x0001, + PktPFrames = 0x0002, + PktBBPFrames = 0x0004, + PktAudioFrames = 0x0008, + PktMotionDetection = 0x00010, + PktDspStatus = 0x00020, + PktOrigImage = 0x00040, + PktSysHeader = 0x00080, + PktBPFrames = 0x00100, + PktSFrames = 0x00200, + PktSubIFrames = 0x00400, + PktSubPFrames = 0x00800, + PktSubBBPFrames = 0x01000, + PktSubSysHeader = 0x02000 +}FrameType_t; + +typedef struct tagVersion{ + ULONG DspVersion, DspBuildNum; + ULONG DriverVersion, DriverBuildNum; + ULONG SDKVersion, SDKBuildNum; +}VERSION_INFO, *PVERSION_INFO; + +typedef enum { + ENC_CIF_FORMAT = 0, + ENC_QCIF_FORMAT = 1, + ENC_2CIF_FORMAT = 2, + ENC_4CIF_FORMAT = 3, + ENC_QQCIF_FORMAT = 4, + ENC_CIFQCIF_FORMAT =5, + ENC_CIFQQCIF_FORMAT =6, + ENC_DCIF_FORMAT =7, + ENC_VGA_FORMAT=8 +}PictureFormat_t; + +typedef struct tagMotionData{ + PictureFormat_t PicFormat; + ULONG HorizeBlocks; + ULONG VerticalBlocks; + ULONG BlockSize; +}MOTION_DATA_HEADER, *PMOTION_DATA_HEADER; + + +#define _OSD_BASE 0x9000 /*base address of special character*/ +#define _OSD_YEAR4 (_OSD_BASE+0) /*show year time by length of 4 , for example: 2005*/ +#define _OSD_YEAR2 (_OSD_BASE+1) /*show year time by length of 2, for example: 05 */ +#define _OSD_MONTH3 (_OSD_BASE+2) /*show month time in English, for example: Jan*/ +#define _OSD_MONTH2 (_OSD_BASE+3) /*show month time by two Arabic numerals, for example: 07*/ +#define _OSD_DAY (_OSD_BASE+4) /*show day time by two Arabic numerals, for example: 31*/ +#define _OSD_WEEK3 (_OSD_BASE+5) /*show week time in English: MONSUN*/ +#define _OSD_CWEEK1 (_OSD_BASE+6) /*show week time in Chinese GB code*/ +#define _OSD_HOUR24 (_OSD_BASE+7) /*show 24 hours clock: 0023 */ +#define _OSD_HOUR12 (_OSD_BASE+8) /*show 12 hours clock: 0012*/ +#define _OSD_MINUTE (_OSD_BASE+9) /*show minute time by length of 2: 0059*/ +#define _OSD_SECOND (_OSD_BASE+10) /*show second time by length of 2: 0059*/ +#define _OSD_MILISECOND (_OSD_BASE+11) /*show millisecond time by length of 3: 000~999*/ +#define _OSD_APM (_OSD_BASE+14) /*show a.m. or p.m. by length of 2 bit, AM or PM*/ + +//For new added APIs to set OSD: SetEncoderOsdDisplayMode, SetDecoderOsdDisplayMode and SetDisplayOsdDisplayMode in v6.0 SDK, we use new basic address of special character. +#define _OSD_BASE_EX 0x90000 /*base address of special character*/ +#define _OSD_YEAR4_EX (_OSD_BASE_EX+0) /*the same as _OSD_YEAR4*/ +#define _OSD_YEAR2_EX (_OSD_BASE_EX+1) /*the same as _OSD_YEAR2*/ +#define _OSD_MONTH3_EX (_OSD_BASE_EX+2) /*the same as _OSD_MONTH3*/ +#define _OSD_MONTH2_EX (_OSD_BASE_EX+3) /*the same as _OSD_MONTH2*/ +#define _OSD_DAY_EX (_OSD_BASE_EX+4) /*the same as _OSD_DAY*/ +#define _OSD_WEEK3_EX (_OSD_BASE_EX+5) /*the same as _OSD_WEEK3*/ +#define _OSD_CWEEK1_EX (_OSD_BASE_EX+6) /*the same as _OSD_CWEEK1*/ +#define _OSD_HOUR24_EX (_OSD_BASE_EX+7) /*the same as _OSD_HOUR24*/ +#define _OSD_HOUR12_EX (_OSD_BASE_EX+8) /*the same as _OSD_HOUR12*/ +#define _OSD_MINUTE_EX (_OSD_BASE_EX+9) /*the same as _OSD_MINUTE*/ +#define _OSD_SECOND_EX (_OSD_BASE_EX+10) /*the same as _OSD_SECOND*/ +#define _OSD_MILISECOND_EX (_OSD_BASE_EX+11) /*the same as _OSD_MILISECOND*/ +#define _OSD_APM_EX (_OSD_BASE_EX+14) /*the same as _OSD_APM*/ + + +#endif diff --git a/src/include/Hik/amd64/DecodeCardSdk.h b/src/include/Hik/amd64/DecodeCardSdk.h new file mode 100644 index 0000000..9ede7d4 --- /dev/null +++ b/src/include/Hik/amd64/DecodeCardSdk.h @@ -0,0 +1,451 @@ +/////////////////////////////////////////////////////////////////////////// +// DS-40xxHC/HF BOARD SYSTEM SDK // +/////////////////////////////////////////////////////////////////////////// + +#ifndef DECODECARD_SDK_H +#define DECODECARD_SDK_H + +#include "datatype.h" + +#define DLLEXPORT_API extern "C" __declspec(dllexport) +#define ERR_WAIT_TIMEOUT 0xc0000001 +#define ERR_INVALID_HANDLE 0xc0000002 +#define ERR_INVALID_ARGUMENT 0xc0000003 +#define ERR_DDRAW_CREATE_FAILED 0xc0000004 +#define ERR_DDRAW_CAPS_FAULT 0xc0000005 +#define ERR_SET_COOPERATIVELEVEL_FAILED 0xc0000006 +#define ERR_PRIMARY_SURFACE_CREATE_FAILED 0xc0000007 +#define ERR_GET_OVERLAY_ADDRESS_FAILED 0xc0000008 +#define ERR_OVERLAY_SURFACE_CREATE_FAILED 0xc0000009 +#define ERR_OVERLAY_UPDATE_FAILED 0xc000000a +#define ERR_TMMAN_FAILURE 0xc000000b +#define ERR_CHANNELMAGIC_MISMATCH 0xc000000c +#define ERR_CALLBACK_REGISTERED 0xc000000d +#define ERR_QUEUE_OVERFLOW 0xc000000e +#define ERR_STREAM_THREAD_FAILURE 0xc000000f +#define ERR_THREAD_STOP_ERROR 0xc0000010 +#define ERR_NOT_SUPPORT 0xc0000011 +#define ERR_OUTOF_MEMORY 0xc0000012 +#define ERR_DSP_BUSY 0xc0000013 +#define ERR_DATA_ERROR 0xc0000014 +#define ERR_KERNEL 0xc0000016 +#define ERR_OFFSCREEN_CREATE_FAILED 0xc0000017 +#define ERR_MULTICLOCK_FAILURE 0xc0000018 +#define ERR_INVALID_DEVICE 0xc0000019 +#define ERR_INVALID_DRIVER 0xc000001a +//error code for MD card +#define HWERR_SUCCESS 0 +#define HWERR_ALLOCATE_MEMORY 0xc1000001 +#define HWERR_INVALID_HANDLE 0xc1000002 +#define HWERR_DDRAW_CREATE_FAILED 0xc1000003 +#define HWERR_DDRAW_CAPS_FAULT 0xc1000004 +#define HWERR_SET_COOPERATIVELEVEL_FAILED 0xc1000005 +#define HWERR_PRIMARY_SURFACE_CREATE_FAILED 0xc1000006 +#define HWERR_OVERLAY_CREATE_FAILED 0xc1000007 +#define HWERR_GET_OVERLAY_ADDRESS_FAILED 0xc1000008 +#define HWERR_OVERLAY_UPDATE_FAILED 0xc1000009 +#define HWERR_SURFACE_NULL 0xc100000a +#define HWERR_FILEHEADER_UNKNOWN 0xc100000b +#define HWERR_CREATE_FILE_FAILED 0xc100000c +#define HWERR_FILE_SIZE_ZERO 0xc100000d +#define HWERR_FILE_SIZE_INVALID 0xc100000d +#define HWERR_CREATE_OBJ_FAILED 0xc100000e +#define HWERR_CHANNELMAGIC_MISMATCH 0xc100000f +#define HWERR_PARA_OVER 0xc1000010 +#define HWERR_ORDER 0xc1000011 +#define HWERR_COMMAND 0xc1000012 +#define HWERR_UNSUPPORTED 0xc1000013 +#define HWERR_DSPOPEN 0xc1000014 +#define HWERR_DSPLOAD 0xc1000015 +#define HWERR_ALLOCATE_DSPMEMORY 0xc1000016 +#define HWERR_DSPCHECHER 0xc1000017 +#define HWERR_IMGFILE_UNKNOWN 0xc1000018 +#define HWERR_INVALID_FILE 0xc1000019 +//standart +#define HW_PAL 2 +#define HW_NTSC 1 +//jump direction +#define HW_JUMP_FORWARD 309 +#define HW_JUMP_BACKWARD 310 + + +typedef enum tagTypeVideoFormat +{ + vdfRGB8A_233 = 0x00000001, + vdfRGB8R_332 = 0x00000002, + vdfRGB15Alpha = 0x00000004, + vdfRGB16 = 0x00000008, + vdfRGB24 = 0x00000010, + vdfRGB24Alpha = 0x00000020, + + vdfYUV420Planar = 0x00000040, + vdfYUV422Planar = 0x00000080, + vdfYUV411Planar = 0x00000100, + vdfYUV420Interspersed = 0x00000200, + vdfYUV422Interspersed = 0x00000400, + vdfYUV411Interspersed = 0x00000800, + vdfYUV422Sequence = 0x00001000, /* U0, Y0, V0, Y1: For VO overlay */ + vdfYUV422SequenceAlpha = 0x00002000, + /* U0, Y0, V0, Y1: For VO overlay, with low bit for alpha blending */ + vdfMono = 0x00004000, /* 8 bit monochrome */ + + vdfYUV444Planar = 0x00008000, +}TypeVideoFormat; + + +typedef enum _BitrateControlType_t +{ + brCBR = 0, + brVBR = 1, +}BitrateControlType_t; + +typedef enum _BOARD_TYPE_DS +{ + DS400XM =0, + DS400XH =1, + DS4004HC =2, + DS4008HC =3, + DS4016HC =4, + DS4001HF =5, + DS4004HF =6, + DS4002MD =7, + DS4004MD =8, //4004MD + DS4016HCS =9, //4016HCS + DS4002HT =10, //4002HT + DS4004HT =11, //4004HT + DS4008HT =12, //4008HT + DS4004HC_PLUS =13, //4004HC+ + DS4008HC_PLUS =14, //4008HC+ + DS4016HC_PLUS =15, //4016HC+ + DS4008HF =16, //4008HF + DS4008MD =17, //4008MD + DS4008HS =18, //4008HS + DS4016HS =19, //4016HS + INVALID_BOARD_TYPE =0xffffffff, +}BOARD_TYPE_DS; + +#define STREAM_TYPE_VIDEO 1 +#define STREAM_TYPE_AUDIO 2 +#define STREAM_TYPE_AVSYNC 3 +#define DRAWFUN(x) void (CALLBACK* x)(long nPort,HDC hDc,LONG nUser) + + +typedef void (*LOGRECORD_CALLBACK)(char *str, void *context); +typedef int (*STREAM_READ_CALLBACK)(ULONG channelNumber, void *context); +typedef int (*STREAM_DIRECT_READ_CALLBACK)(ULONG channelNumber,void *DataBuf,DWORD Length,int FrameType,void *context); + +typedef struct tagChannelCapability{ + UCHAR bAudioPreview; + UCHAR bAlarmIO; + UCHAR bWatchDog; +}CHANNEL_CAPABILITY, *PCHANNEL_CAPABILITY; + +typedef struct tagFramsStatistics{ + ULONG VideoFrames; + ULONG AudioFrames; + ULONG FramesLost; + ULONG QueueOverflow; + ULONG CurBps; +}FRAMES_STATISTICS, *PFRAMES_STATISTICS; + +DLLEXPORT_API int __stdcall InitDSPs(); +DLLEXPORT_API int __stdcall DeInitDSPs(); +DLLEXPORT_API HANDLE __stdcall ChannelOpen(int ChannelNum); +DLLEXPORT_API int __stdcall ChannelClose(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall GetTotalChannels(); +DLLEXPORT_API int __stdcall GetTotalDSPs(); +DLLEXPORT_API int __stdcall StartVideoPreview(HANDLE hChannelHandle,HWND WndHandle, RECT *rect, BOOLEAN bOverlay, int VideoFormat, int FrameRate); +DLLEXPORT_API int __stdcall StopVideoPreview(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall SetVideoPara(HANDLE hChannelHandle, int Brightness, int Contrast, int Saturation, int Hue); +DLLEXPORT_API int __stdcall GetVideoPara(HANDLE hChannelHandle, VideoStandard_t *VideoStandard, int *Brightness, int *Contrast, int *Saturation, int *Hue); +DLLEXPORT_API int __stdcall GetVideoSignal(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall GetSDKVersion(PVERSION_INFO VersionInfo); +DLLEXPORT_API int __stdcall GetCapability(HANDLE hChannelHandle, CHANNEL_CAPABILITY *Capability); +DLLEXPORT_API int __stdcall GetLastErrorNum(HANDLE hChannelHandle, ULONG *DspError, ULONG *SdkError); +DLLEXPORT_API int __stdcall SetStreamType(HANDLE hChannelHandle, USHORT Type); +DLLEXPORT_API int __stdcall GetStreamType(HANDLE hChannelHandle, USHORT *StreamType); +DLLEXPORT_API int __stdcall GetFramesStatistics(HANDLE hChannelHandle, PFRAMES_STATISTICS framesStatistics); +DLLEXPORT_API int __stdcall StartMotionDetection(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall GetBoardInfo(HANDLE hChannelHandle, ULONG *BoardType, UCHAR *SerialNo); +DLLEXPORT_API int __stdcall StopMotionDetection(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall GetOriginalImage(HANDLE hChannelHandle, UCHAR *ImageBuf, ULONG *Size); +DLLEXPORT_API int __stdcall RegisterLogRecordCallback(LOGRECORD_CALLBACK LogRecordFunc, void *Context); +DLLEXPORT_API int __stdcall SetAudioPreview(HANDLE hChannelHandle, BOOL bEnable); +DLLEXPORT_API int __stdcall ReadStreamData(HANDLE hChannelHandle, void *DataBuf, DWORD *Length, int *FrameType); +DLLEXPORT_API int __stdcall RegisterMessageNotifyHandle(HWND hWnd, UINT MessageId); +DLLEXPORT_API int __stdcall StartVideoCapture(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall StopVideoCapture(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall SetIBPMode(HANDLE hChannelHandle, int KeyFrameIntervals, int BFrames, int PFrames, int FrameRate); +DLLEXPORT_API int __stdcall SetDefaultQuant(HANDLE hChannelHandle, int IQuantVal, int PQuantVal, int BQuantVal); +DLLEXPORT_API int __stdcall SetOsd(HANDLE hChannelHandle, BOOL Enable); + +DLLEXPORT_API int __stdcall SetLogo(HANDLE hChannelHandle, int x, int y, int w, int h, unsigned char *yuv); +DLLEXPORT_API int __stdcall StopLogo(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall SetupMotionDetection(HANDLE hChannelHandle, RECT *RectList, int iAreas); +DLLEXPORT_API int __stdcall MotionAnalyzer(HANDLE hChannelHandle, char *MotionData, int iThreshold, int *iResult); +DLLEXPORT_API int __stdcall LoadYUVFromBmpFile(char *FileName, unsigned char *yuv, int BufLen, int *Width, int *Height); +DLLEXPORT_API int __stdcall SaveYUVToBmpFile(char *FileName, unsigned char *yuv, int Width, int Height); +DLLEXPORT_API int __stdcall CaptureIFrame(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall RegisterStreamReadCallback(STREAM_READ_CALLBACK StreamReadCallback, void *Context); +DLLEXPORT_API int __stdcall AdjustMotionDetectPrecision(HANDLE hChannelHandle, + int iGrade, int iFastMotionDetectFps, + int iSlowMotionDetectFps); +DLLEXPORT_API int __stdcall SetupBitrateControl(HANDLE hChannelHandle, ULONG MaxBps); +DLLEXPORT_API int __stdcall SetOverlayColorKey(COLORREF DestColorKey); +DLLEXPORT_API int __stdcall SetOsdDisplayMode(HANDLE hChannelHandle, int Brightness, BOOL Translucent, int parameter, USHORT *Format1, USHORT *Format2); +DLLEXPORT_API int __stdcall SetLogoDisplayMode(HANDLE hChannelHandle, COLORREF ColorKey, BOOL Translucent, int TwinkleInterval); +DLLEXPORT_API int __stdcall SetEncoderPictureFormat(HANDLE hChannelHandle, PictureFormat_t PictureFormat); +DLLEXPORT_API int __stdcall SetVideoStandard(HANDLE hChannelHandle, VideoStandard_t VideoStandard); +DLLEXPORT_API int __stdcall RestoreOverlay(); +DLLEXPORT_API int __stdcall ResetDSP(int DspNumber); +DLLEXPORT_API int __stdcall GetSoundLevel(HANDLE hChannelHandle); + + +DLLEXPORT_API int __stdcall SetBitrateControlMode(HANDLE hChannelHandle, BitrateControlType_t brc); +DLLEXPORT_API int __stdcall SetupNotifyThreshold(HANDLE hChannelHandle, int iFramesThreshold); + +DLLEXPORT_API int __stdcall SetupSubChannel(HANDLE hChannelHandle, int iSubChannel); +DLLEXPORT_API int __stdcall GetSubChannelStreamType(void *DataBuf, int FrameType); +//add for HC/HF +DLLEXPORT_API int __stdcall RegisterStreamDirectReadCallback(STREAM_DIRECT_READ_CALLBACK StreamDirectReadCallback,void *Context); +DLLEXPORT_API int __stdcall RegisterDrawFun(DWORD nport, DRAWFUN(DrawFun),LONG nUser); +DLLEXPORT_API int __stdcall SetupMask(HANDLE hChannelHandle, RECT *rectList, int iAreas); +DLLEXPORT_API int __stdcall StopMask(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall SetSubEncoderPictureFormat(HANDLE hChannelHandle, PictureFormat_t PictureFormat); +DLLEXPORT_API int __stdcall StartSubVideoCapture(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall StopSubVideoCapture(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall SetupDateTime(HANDLE hChannelHandle, SYSTEMTIME *now); +/* + Ϊ1.7汾Ĺܡ + Ժܻûķ޸ĺơ +*/ +//ԭʼͼ +typedef void (*IMAGE_STREAM_CALLBACK)(UINT channelNumber,void *context ); +DLLEXPORT_API int __stdcall SetImageStream(HANDLE hChannel,BOOL bStart,UINT fps,UINT width,UINT height,unsigned char *imageBuffer); +DLLEXPORT_API int __stdcall RegisterImageStreamCallback(IMAGE_STREAM_CALLBACK,void *context); +/* + Ƶλã + (x,y)ΪϵͳͼϽԭʼͼеꡣ + xΪ2 + (x,y)IJΧͺйأֵָ벻ƥ䣬 + ܻᵼͼֹˮƽֱ +*/ +DLLEXPORT_API int __stdcall SetInputVideoPosition(HANDLE hChannel,UINT x,UINT y); +DLLEXPORT_API int __stdcall StopRegisterDrawFun(DWORD nport); + +/* + 3.0 +*/ +#define SERIAL_NUMBER_LENGTH 12 //忨кų +typedef struct tagDS_BOARD_DETAIL +{ + BOARD_TYPE_DS type; //忨 + BYTE sn[16]; //к + UINT dspCount; //忨DSP + UINT firstDspIndex; //忨ϵһDSP + UINT encodeChannelCount; //忨ıͨ + UINT firstEncodeChannelIndex; //忨ϵһͨ + UINT decodeChannelCount; //忨Ľͨ + UINT firstDecodeChannelIndex; //忨ϵһͨ + UINT displayChannelCount; //忨Ƶͨ + UINT firstDisplayChannelIndex; //忨ϵһƵͨ + UINT reserved1; + UINT reserved2; + UINT reserved3; + UINT reserved4; +}DS_BOARD_DETAIL; +typedef struct tagDSP_DETAIL +{ + UINT encodeChannelCount; //忨ıͨ + UINT firstEncodeChannelIndex; //忨ϵһͨ + UINT decodeChannelCount; //忨Ľͨ + UINT firstDecodeChannelIndex; //忨ϵһͨ + UINT displayChannelCount; //忨Ƶͨ + UINT firstDisplayChannelIndex; //忨ϵһƵͨ + UINT reserved1; + UINT reserved2; + UINT reserved3; + UINT reserved4; +}DSP_DETAIL; +DLLEXPORT_API unsigned int __stdcall GetBoardCount(); +DLLEXPORT_API int __stdcall GetBoardDetail(UINT boardNum,DS_BOARD_DETAIL *pBoardDetail); +DLLEXPORT_API unsigned int __stdcall GetDspCount(); +DLLEXPORT_API int __stdcall GetDspDetail(UINT dspNum,DSP_DETAIL *pDspDetail); +DLLEXPORT_API unsigned int __stdcall GetEncodeChannelCount(); +DLLEXPORT_API unsigned int __stdcall GetDecodeChannelCount(); +DLLEXPORT_API unsigned int __stdcall GetDisplayChannelCount(); +DLLEXPORT_API int __stdcall SetDefaultVideoStandard(VideoStandard_t VideoStandard); +DLLEXPORT_API int __stdcall SetVideoDetectPrecision(HANDLE hChannel,unsigned int value); +DLLEXPORT_API int __stdcall SetSubStreamType(HANDLE hChannelHandle, USHORT Type); +DLLEXPORT_API int __stdcall GetSubStreamType(HANDLE hChannelHandle, USHORT *StreamType); + +#define MAX_DISPLAY_REGION 16 +typedef struct tagREGION_PARAM +{ + UINT left; + UINT top; + UINT width; + UINT height; + COLORREF color; + UINT param; +}REGION_PARAM; +DLLEXPORT_API int __stdcall SetDisplayStandard(UINT nDisplayChannel,VideoStandard_t VideoStandard); +DLLEXPORT_API int __stdcall SetDisplayRegion(UINT nDisplayChannel,UINT nRegionCount,REGION_PARAM *pParam,UINT nReserved); +DLLEXPORT_API int __stdcall ClearDisplayRegion(UINT nDisplayChannel,UINT nRegionFlag); +DLLEXPORT_API int __stdcall SetDisplayRegionPosition(UINT nDisplayChannel,UINT nRegion,UINT nLeft,UINT nTop); +DLLEXPORT_API int __stdcall FillDisplayRegion(UINT nDisplayChannel,UINT nRegion,unsigned char *pImage); +DLLEXPORT_API int __stdcall SetEncoderVideoExtOutput(UINT nEncodeChannel,UINT nPort,BOOL bOpen,UINT nDisplayChannel,UINT nDisplayRegion,UINT nReserved); +DLLEXPORT_API int __stdcall SetDecoderVideoExtOutput(UINT nDecodeChannel,UINT nPort,BOOL bOpen,UINT nDisplayChannel,UINT nDisplayRegion,UINT nReserved); +DLLEXPORT_API int __stdcall SetDecoderVideoOutput(UINT nDecodeChannel,UINT nPort,BOOL bOpen,UINT nDisplayChannel,UINT nDisplayRegion,UINT nReserved); +DLLEXPORT_API int __stdcall SetDecoderAudioOutput(UINT nDecodeChannel,BOOL bOpen,UINT nOutputChannel); +//3.1 +DLLEXPORT_API int __stdcall SetDeInterlace(HANDLE hChannelHandle,UINT mode,UINT level); +DLLEXPORT_API int __stdcall SetPreviewOverlayMode(BOOL bTrue); + +//DECODE functions for DS4002MD +#if defined( _WINDLL) + #define PLAYER_API extern "C"__declspec(dllexport) +#else + #define PLAYER_API extern "C" __declspec(dllimport) +#endif +typedef struct tagDISPLAY_PARA +{ + long bToScreen; + long bToVideoOut; + long nLeft; + long nTop; + long nWidth; + long nHeight; + long nReserved; +}DISPLAY_PARA,*PDISPLAY_PARA; +//Version info +typedef struct tagVERSION{ + ULONG DspVersion, DspBuildNum; + ULONG DriverVersion, DriverBuildNum; + ULONG SDKVersion, SDKBuildNum; +}HW_VERSION, *PHW_VERSION; + +//init part +PLAYER_API int __stdcall HW_InitDirectDraw(HWND hParent,COLORREF colorKey); +PLAYER_API int __stdcall HW_ReleaseDirectDraw(); +PLAYER_API int __stdcall HW_InitDecDevice(long *pDeviceTotal); +PLAYER_API int __stdcall HW_ReleaseDecDevice(); +PLAYER_API int __stdcall HW_ChannelOpen(long nChannelNum,HANDLE* phChannel); +PLAYER_API int __stdcall HW_ChannelClose(HANDLE hChannel); +//open part + +PLAYER_API int __stdcall HW_OpenStream(HANDLE hChannel,PBYTE pFileHeadBuf,DWORD nSize); +DLLEXPORT_API int __stdcall HW_ResetStream(HANDLE hChannel); +PLAYER_API int __stdcall HW_CloseStream(HANDLE hChannel); +PLAYER_API int __stdcall HW_InputData(HANDLE hChannel,PBYTE pBuf,DWORD nSize); +PLAYER_API int __stdcall HW_OpenFile(HANDLE hChannel,LPTSTR sFileName); +PLAYER_API int __stdcall HW_CloseFile(HANDLE hChannel); + +//play part +PLAYER_API int __stdcall HW_SetDisplayPara(HANDLE hChannel,DISPLAY_PARA *pPara); +PLAYER_API int __stdcall HW_Play(HANDLE hChannel); +PLAYER_API int __stdcall HW_Stop(HANDLE hChannel); +PLAYER_API int __stdcall HW_Pause(HANDLE hChannel,ULONG bPause); + +//sound part +PLAYER_API int __stdcall HW_PlaySound(HANDLE hChannel); +PLAYER_API int __stdcall HW_StopSound(HANDLE hChannel); +PLAYER_API int __stdcall HW_SetVolume(HANDLE hChannel,ULONG nVolume); +//overlay part +PLAYER_API int __stdcall HW_RefreshSurface(); +PLAYER_API int __stdcall HW_RestoreSurface(); +PLAYER_API int __stdcall HW_ClearSurface(); +PLAYER_API int __stdcall HW_ZoomOverlay(RECT* pSrcClientRect, RECT* pDecScreenRect); +//cut file +PLAYER_API int __stdcall HW_StartCapFile(HANDLE hChannel,LPTSTR sFileName); +PLAYER_API int __stdcall HW_StopCapFile(HANDLE hChannel); +//capture picture +PLAYER_API int __stdcall HW_GetYV12Image(HANDLE hChannel, PBYTE pBuffer, ULONG nSize); +PLAYER_API int __stdcall HW_GetPictureSize(HANDLE hChannel,ULONG* pWidth, ULONG* pHeight); +PLAYER_API int __stdcall HW_ConvertToBmpFile(BYTE * pBuf,ULONG nSize,ULONG nWidth,ULONG nHeight,char *sFileName,ULONG nReserved); +//setting and getting part +PLAYER_API int __stdcall HW_Jump(HANDLE hChannel,ULONG nDirection); +PLAYER_API int __stdcall HW_SetJumpInterval(HANDLE hChannel,ULONG nSecond); +PLAYER_API int __stdcall HW_GetSpeed(HANDLE hChannel,long *pSpeed); +PLAYER_API int __stdcall HW_SetSpeed(HANDLE hChannel,long nSpeed); +PLAYER_API int __stdcall HW_SetPlayPos(HANDLE hChannel,ULONG nPos); +PLAYER_API int __stdcall HW_GetPlayPos(HANDLE hChannel,ULONG* pPos); +PLAYER_API int __stdcall HW_GetVersion(PHW_VERSION pVersion); +PLAYER_API int __stdcall HW_GetCurrentFrameRate(HANDLE hChannel,ULONG* pFrameRate); +PLAYER_API int __stdcall HW_GetCurrentFrameNum(HANDLE hChannel,ULONG* pFrameNum); +PLAYER_API int __stdcall HW_GetFileTotalFrames(HANDLE hChannel,ULONG* pTotalFrames); +PLAYER_API int __stdcall HW_GetFileTime(HANDLE hChannel, ULONG* pFileTime); +PLAYER_API int __stdcall HW_GetCurrentFrameTime(HANDLE hChannel,ULONG* pFrameTime); +PLAYER_API int __stdcall HW_GetPlayedFrames(HANDLE hChannel,ULONG *pDecVFrames); +PLAYER_API int __stdcall HW_GetDeviceSerialNo(HANDLE hChannel,ULONG *pDeviceSerialNo); +PLAYER_API int __stdcall HW_SetFileEndMsg(HANDLE hChannel,HWND hWnd,UINT nMsg); +PLAYER_API int __stdcall HW_SetStreamOpenMode(HANDLE hChannel,ULONG nMode); +PLAYER_API int __stdcall HW_GetStreamOpenMode(HANDLE hChannel,ULONG *pMode); +PLAYER_API int __stdcall HW_SetVideoOutStandard(HANDLE hChannel,ULONG nStandard); +PLAYER_API int __stdcall HW_SetDspDeadlockMsg(HWND hWnd,UINT nMsg); +PLAYER_API int __stdcall HW_GetChannelNum(long nDspNum,long *pChannelNum,ULONG nNumsToGet,ULONG * pNumsGotten); +PLAYER_API int __stdcall HW_ResetDsp(long nDspNum); +PLAYER_API int __stdcall HW_SetAudioPreview(HANDLE hChannel, BOOL bEnable); +////////////////////////////////////////////// + +PLAYER_API int __stdcall HW_OpenStreamEx(HANDLE hChannel,PBYTE pFileHeadBuf,DWORD nSize); +PLAYER_API int __stdcall HW_CloseStreamEx(HANDLE hChannel); +PLAYER_API int __stdcall HW_InputVideoData(HANDLE hChannel,PBYTE pBuf,DWORD nSize); +PLAYER_API int __stdcall HW_InputAudioData(HANDLE hChannel,PBYTE pBuf,DWORD nSize); + +//4.0 +PLAYER_API int __stdcall SetOsdDisplayModeEx(HANDLE hChannelHandle,int color,BOOL Translucent,int param,int nLineCount,USHORT **Format); +typedef void (*MOTION_DETECTION_CALLBACK)(ULONG channelNumber,BOOL bMotionDetected,void *context); +PLAYER_API int __stdcall SetupMotionDetectionEx(HANDLE hChannelHandle,int iGrade,int iFastMotionDetectFps, + int iSlowMotionDetectFps,UINT delay,RECT *RectList, int iAreas, + MOTION_DETECTION_CALLBACK MotionDetectionCallback,int reserved); +PLAYER_API int __stdcall GetJpegImage(HANDLE hChannelHandle,UCHAR *ImageBuf,ULONG *Size,UINT nQuality); +//WatchDog +PLAYER_API int __stdcall SetWatchDog(UINT boardNumber,BOOL bEnable); +//4.1 +typedef void (*FILE_REF_DONE_CALLBACK)(UINT nChannel,UINT nSize); +PLAYER_API int __stdcall HW_SetFileRef(HANDLE hChannel,BOOL bEnable,FILE_REF_DONE_CALLBACK FileRefDoneCallback); +PLAYER_API int __stdcall HW_LocateByAbsoluteTime(HANDLE hChannel,SYSTEMTIME time); +PLAYER_API int __stdcall HW_LocateByFrameNumber(HANDLE hChannel,UINT frmNum); +PLAYER_API int __stdcall HW_GetCurrentAbsoluteTime(HANDLE hChannel,SYSTEMTIME *pTime); +PLAYER_API int __stdcall HW_GetFileAbsoluteTime(HANDLE hChannel,SYSTEMTIME *pStartTime,SYSTEMTIME *pEndTime); +//4.2 +DLLEXPORT_API int __stdcall HW_ImportFileRef(HANDLE hChannel,char *pBuffer,UINT nSize); +DLLEXPORT_API int __stdcall HW_ExportFileRef(HANDLE hChannel,char *pBuffer,UINT nSize); +DLLEXPORT_API int __stdcall SetDisplayVideoCapture(UINT nDisplayChannel,BOOL bStart,UINT fps,UINT width,UINT height,unsigned char *imageBuffer); +DLLEXPORT_API int __stdcall RegisterDisplayVideoCaptureCallback(IMAGE_STREAM_CALLBACK DisplayVideoCaptureCallback,void *context); +DLLEXPORT_API int __stdcall SetDisplayVideoBrightness(UINT chan,int Brightness); +DLLEXPORT_API int __stdcall SetChannelStreamCRC(HANDLE hChannel,BOOL bEnable); +DLLEXPORT_API int __stdcall SetSubChannelStreamCRC(HANDLE hChannel,BOOL bEnable); +DLLEXPORT_API int __stdcall HW_SetDecoderPostProcess(HANDLE hChannel,UINT param); +// +typedef void (*DECODER_VIDEO_CAPTURE_CALLBACK)(UINT nChannelNumber,void *DataBuf,UINT width,UINT height,UINT nFrameNum,UINT nFrameTime,SYSTEMTIME *pFrameAbsoluteTime,void *context); +DLLEXPORT_API int __stdcall RegisterDecoderVideoCaptureCallback(DECODER_VIDEO_CAPTURE_CALLBACK DecoderVideoCaptureCallback,void *context); +DLLEXPORT_API int __stdcall HW_SetDecoderVideoCapture(HANDLE hChannel,BOOL bStart,UINT param); +DLLEXPORT_API int __stdcall HW_InputDataByFrame(HANDLE hChannel,PBYTE pBuf,DWORD nSize); +/* +ץĽӿ:ԡԺܻ޸ġ +*/ +typedef struct +{ + short x,y,width,height; +}FACE_AREA_DEMO; +typedef struct +{ + FACE_AREA_DEMO faceArea; + FACE_AREA_DEMO leftEyeArea; + FACE_AREA_DEMO rightEyeArea; + FACE_AREA_DEMO leftPupilArea; + FACE_AREA_DEMO rightPupilArea; + FACE_AREA_DEMO noseArea; + FACE_AREA_DEMO mouthArea; +}FACE_INFO_DEMO; +typedef void (*FACE_DETECTION_DEMO_CALLBACK)(UINT nChannel,UINT nFaceCount,FACE_INFO_DEMO *pFaceInfo, + char *pData,UINT nDataSize,UINT nImageWidth,UINT nImageHeight); + +DLLEXPORT_API int __stdcall SetFaceDetectionDemo(HANDLE hChannelHandle,BOOL bEnable, + UINT nFrameInterval,FACE_DETECTION_DEMO_CALLBACK pFunc, + BOOL bCompress,UINT nCompressQuality,BOOL bLocateEyePos); + +#endif + diff --git a/src/include/Hik/amd64/HCNetSDK.h b/src/include/Hik/amd64/HCNetSDK.h new file mode 100644 index 0000000..cda31c6 --- /dev/null +++ b/src/include/Hik/amd64/HCNetSDK.h @@ -0,0 +1,52612 @@ +#ifndef _HC_NET_SDK_H_ +#define _HC_NET_SDK_H_ + +#ifndef _WINDOWS_ + #if (defined(_WIN32) || defined(_WIN64)) + #include + #include + #endif +#endif + +#if defined(_WIN64) + #define OS_WINDOWS64 1 +#endif + +#if defined(__LP64__) + #define OS_POSIX64 1 +#endif + +#ifndef __PLAYRECT_defined + #define __PLAYRECT_defined + typedef struct __PLAYRECT + { + int x; + int y; + int uWidth; + int uHeight; + }PLAYRECT; +#endif + +#if (defined(_WIN32)) //windows + #define NET_DVR_API extern "C" __declspec(dllimport) + typedef unsigned __int64 UINT64; + typedef signed __int64 INT64; +#elif defined(__linux__) || defined(__APPLE__) //linux + #define BOOL int + typedef unsigned int DWORD; + typedef unsigned short WORD; + typedef unsigned short USHORT; + typedef short SHORT; + typedef int LONG; + typedef unsigned char BYTE; + typedef unsigned int UINT; + typedef void* LPVOID; + typedef void* HANDLE; + typedef unsigned int* LPDWORD; + typedef unsigned long long UINT64; + typedef signed long long INT64; + + #ifndef TRUE + #define TRUE 1 + #endif + #ifndef FALSE + #define FALSE 0 + #endif + #ifndef NULL + #define NULL 0 + #endif + + #define __stdcall + #define CALLBACK + + #define NET_DVR_API extern "C" + typedef unsigned int COLORKEY; + typedef unsigned int COLORREF; + + #ifndef __HWND_defined + #define __HWND_defined + #if defined(__APPLE__) || defined(ANDROID) + typedef void* HWND; + #elif defined(__linux__) + typedef unsigned int HWND; + #else + typedef void* HWND; + #endif + #endif + + #ifndef __HDC_defined + #define __HDC_defined + #if defined(__linux__) + typedef struct __DC + { + void* surface; //SDL Surface + HWND hWnd; //HDC window handle + }DC; + typedef DC* HDC; + #else + typedef void* HDC; + #endif + #endif + + typedef struct tagInitInfo + { + int uWidth; + int uHeight; + }INITINFO; +#endif + +//궨 +#define MAX_NAMELEN 16 //DVRص½ +#define MAX_RIGHT 32 //豸ֵ֧Ȩޣ1-12ʾȨޣ13-32ʾԶȨޣ +#define NAME_LEN 32 //û +#define MIN_PASSWD_LEN 8 //С볤 +#define PASSWD_LEN 16 //볤 +#define STREAM_PASSWD_LEN 12 //Կ󳤶 +#define MAX_PASSWD_LEN_EX 64 //볤64λ +#define GUID_LEN 16 //GUID +#define DEV_TYPE_NAME_LEN 24 //豸Ƴ +#define SERIALNO_LEN 48 //кų +#define MACADDR_LEN 6 //macַ +#define MAC_ADDRESS_NUM 48 //Macַ +#define MAX_SENCE_NUM 16 // +#define RULE_REGION_MAX 128 // +#define MAX_ETHERNET 2 //豸̫ +#define MAX_NETWORK_CARD 4 //豸Ŀ +#define MAX_NETWORK_CARD_EX 12 //豸Ŀչ +#define PATHNAME_LEN 128 //· +#define MAX_PRESET_V13 16 //Ԥõ +#define MAX_TEST_COMMAND_NUM 32 //߲Աֶγ +#define MAX_NUMBER_LEN 32 //󳤶 +#define MAX_NAME_LEN 128 //豸󳤶 +#define MAX_INDEX_LED 8 //LEDֵ 2013-11-19 +#define MAX_CUSTOM_DIR 64 //ԶĿ¼󳤶 +#define URL_LEN_V40 256 //URL +#define CLOUD_NAME_LEN 48 //ƴ洢û +#define CLOUD_PASSWD_LEN 48 //ƴ洢볤 +#define MAX_SENSORNAME_LEN 64 //Ƴ +#define MAX_SENSORCHAN_LEN 32 //ͨ +#define MAX_DESCRIPTION_LEN 32 // +#define MAX_DEVNAME_LEN_EX 64 //豸Ƴչ +#define NET_SDK_MAX_FILE_PATH 256 //ļ· +#define MAX_TMEVOICE_LEN 64 //TMEݳ +#define ISO_8601_LEN 32 //ISO_8601ʱ䳤 +#define MODULE_INFO_LEN 32 //ģϢ +#define VERSION_INFO_LEN 32 //汾Ϣ + +#define MAX_NUM_INPUT_BOARD 512 // +#define MAX_SHIPSDETE_REGION_NUM 8 // ֻбĿ + +#define MAX_RES_NUM_ONE_VS_INPUT_CHAN 8 //һֵ֧ͨķֱʵ +#define MAX_VS_INPUT_CHAN_NUM 16 //ͨ + +#define NET_SDK_MAX_FDID_LEN 256//ID󳤶 +#define NET_SDK_MAX_PICID_LEN 256 //ID󳤶 +#define NET_SDK_FDPIC_CUSTOM_INFO_LEN 96 //ͼƬԶϢ +#define NET_DVR_MAX_FACE_ANALYSIS_NUM 32 //ֵ֧ͼƬʶ +#define NET_DVR_MAX_FACE_SEARCH_NUM 5 //֧ +#define NET_SDK_SECRETKEY_LEN 128 //ļԿ +#define NET_SDK_CUSTOM_LEN 512 //ԶϢ󳤶 +#define NET_SDK_CHECK_CODE_LEN 128//У볤 +#define RELATIVE_CHANNEL_LEN 2//ͨŵ +#define NET_SDK_MAX_CALLEDTARGET_NAME 32 //ºĿû +#define NET_SDK_MAX_HBDID_LEN 256 /*256 ID󳤶*/ +//СLED +#define MAX_LEN_TEXT_CONTENT 128 //ַݳ +#define MAX_NUM_INPUT_SOURCE_TEXT 32 //źԴɵӵı +#define MAX_NUM_OUTPUT_CHANNEL 512 //LEDڸ + +//ӴڽOSD +#define MAX_LEN_OSD_CONTENT 256 //OSDϢ󳤶 +#define MAX_NUM_OSD_ONE_SUBWND 8 //Ӵֵ֧OSD +#define MAX_NUM_SPLIT_WND 64 //ֵ֧Ӵ +#define MAX_NUM_OSD 8 + +//2013-11-19 +#define MAX_DEVNAME_LEN 32 //豸󳤶 +#define MAX_LED_INFO 256 //ĻʾϢ󳤶 +#define MAX_TIME_LEN 32 //ʱ󳤶 +#define MAX_CARD_LEN 24 //󳤶 +#define MAX_OPERATORNAME_LEN 32 //Ա󳤶 + +#define THERMOMETRY_ALARMRULE_NUM 40 //ȳ񱨾 +#define MAX_THERMOMETRY_REGION_NUM 40 //ȶͼ֧ +#define MAX_THERMOMETRY_DIFFCOMPARISON_NUM 40 //ȳ² +#define MAX_SHIPS_NUM 20 //ֻֻ +#define MAX_SHIPIMAGE_NUM 6 //ֻץͼ +#define KEY_WORD_NUM 3 //ؼָ +#define KEY_WORD_LEN 128 //ؼֳ +//첽¼ص״̬궨 +#define ASYN_LOGIN_SUCC 1 //첽¼ɹ +#define ASYN_LOGIN_FAILED 0 //첽¼ʧ + +#define NET_SDK_MAX_VERIFICATION_CODE_LEN 32 //өʯ֤볤 +#define NET_SDK_MAX_OPERATE_CODE_LEN 64 //өʯƲ볤 +#define MAX_TIMESEGMENT_V30 8 //9000豸ʱ +#define MAX_TIMESEGMENT 4 //8000豸ʱ +#define MAX_ICR_NUM 8 //ץĻ˹ƬԤõ2013-07-09 +#define MAX_VEHICLEFLOW_INFO 24 //Ϣ +#define MAX_SHELTERNUM 4 //8000豸ڵ +#define MAX_DAYS 7 //ÿ +#define PHONENUMBER_LEN 32 //pppoeź󳤶 +#define MAX_ACCESSORY_CARD 256 //Ϣ󳤶 +#define MAX_DISKNUM_V30 33 //9000豸Ӳ/* 33Ӳ(16SATAӲ̡1eSATAӲ̺16NFS) */ +#define NET_SDK_MAX_NET_USER_NUM 64 //û + +#define NET_SDK_DISK_LOCATION_LEN 16 //Ӳλó +#define NET_SDK_SUPPLIER_NAME_LEN 32 //ӦƳ +#define NET_SDK_DISK_MODEL_LEN 64 //Ӳͺų +#define NET_SDK_MAX_DISK_VOLUME 33 //Ӳ̾ +#define NET_SDK_DISK_VOLUME_LEN 36 //Ӳ̾Ƴ + +#define MAX_DISKNUM 16 //8000豸Ӳ +#define MAX_DISKNUM_V10 8 //1.2汾֮ǰ汾 +#define CARD_READER_DESCRIPTION 32 // +#define MAX_FACE_NUM 2 // + +#define MAX_WINDOW_V30 32 //9000豸ʾ󲥷Ŵ +#define MAX_WINDOW_V40 64 //Netra 2.3.1չ +#define MAX_WINDOW 16 //8000豸Ӳ +#define MAX_VGA_V30 4 //9000豸ɽVGA +#define MAX_VGA 1 //8000豸ɽVGA + +#define MAX_USERNUM_V30 32 //9000豸û +#define MAX_USERNUM 16 //8000豸û +#define MAX_EXCEPTIONNUM_V30 32 //9000豸쳣 +#define MAX_EXCEPTIONNUM 16 //8000豸쳣 +#define MAX_LINK 6 //8000豸ͨƵ +#define MAX_ITC_EXCEPTIONOUT 32 //ץĻ󱨾 +#define MAX_SCREEN_DISPLAY_LEN 512 //Ļʾַ + +#define MAX_DECPOOLNUM 4 //·ÿͨѭ +#define MAX_DECNUM 4 //·ͨʵֻһ +#define MAX_TRANSPARENTNUM 2 //·͸ͨ +#define MAX_CYCLE_CHAN 16 //·Ѳͨ +#define MAX_CYCLE_CHAN_V30 64 //Ѳͨչ +#define MAX_DIRNAME_LENGTH 80 //Ŀ¼ +#define MAX_WINDOWS 16 //󴰿 + + +#define MAX_STRINGNUM_V30 8 //9000豸OSDַ +#define MAX_STRINGNUM 4 //8000豸OSDַ +#define MAX_STRINGNUM_EX 8 //8000չ +#define MAX_AUXOUT_V30 16 //9000豸 +#define MAX_AUXOUT 4 //8000豸 +#define MAX_HD_GROUP 16 //9000豸Ӳ +#define MAX_HD_GROUP_V40 32 //豸Ӳ +#define MAX_NFS_DISK 8 //8000豸NFSӲ +#define NET_SDK_VERSION_LIST_LEN 64 //㷨汾ֵ +#define IW_ESSID_MAX_SIZE 32 //WIFISSIDų +#define IW_ENCODING_TOKEN_MAX 32 //WIFIֽ +#define MAX_SERIAL_NUM 64 //ֵ֧͸ͨ· +#define MAX_DDNS_NUMS 10 //9000豸ddns +#define MAX_DOMAIN_NAME 64 /* */ +#define MAX_EMAIL_ADDR_LEN 48 //emailַ +#define MAX_EMAIL_PWD_LEN 32 //email볤 +#define MAX_SLAVECAMERA_NUM 8 // +#define MAX_CALIB_NUM 6 //궨ĸ +#define MAX_CALIB_NUM_EX 20 //չ궨ĸ +#define MAX_LEDDISPLAYINFO_LEN 1024 //LEDʾ +#define MAX_PEOPLE_DETECTION_NUM 8 //Ա +#define MAXPROGRESS 100 //طʱٷ +#define MAX_SERIALNUM 2 //8000豸ֵ֧Ĵ 1-232 2-485 +#define CARDNUM_LEN 20 //ų +#define PATIENTID_LEN 64 +#define CARDNUM_LEN_OUT 32 //ⲿṹ忨ų +#define MAX_VIDEOOUT_V30 4 //9000豸Ƶ +#define MAX_VIDEOOUT 2 //8000豸Ƶ + +#define MAX_PRESET_V30 256 /* 9000豸ֵ̨֧Ԥõ */ +#define MAX_TRACK_V30 256 /* 9000豸ֵ̨֧ */ +#define MAX_CRUISE_V30 256 /* 9000豸ֵ̨֧Ѳ */ +#define MAX_PRESET 128 /* 8000豸ֵ̨֧Ԥõ */ +#define MAX_TRACK 128 /* 8000豸ֵ̨֧ */ +#define MAX_CRUISE 128 /* 8000豸ֵ̨֧Ѳ */ + +#define MAX_PRESET_V40 300 /* ֵ̨֧Ԥõ */ +#define MAX_CRUISE_POINT_NUM 128 /* ֵ֧Ѳĸ */ +#define MAX_CRUISEPOINT_NUM_V50 256 //ֵ֧Ѳĸչ + +#define CRUISE_MAX_PRESET_NUMS 32 /* һѲѲ */ +#define MAX_FACE_PIC_NUM 30 /*ͼ*/ +#define LOCKGATE_TIME_NUM 4 //բʱθ + +#define MAX_SERIAL_PORT 8 //9000豸֧232 +#define MAX_PREVIEW_MODE 8 /* 豸֧ԤģʽĿ 1,4,9,16.... */ +#define MAX_MATRIXOUT 16 /* ģ */ +#define LOG_INFO_LEN 11840 /* ־Ϣ */ +#define DESC_LEN 16 /* ַ̨ */ +#define PTZ_PROTOCOL_NUM 200 /* 9000ֵ̨֧Э */ +#define IPC_PROTOCOL_NUM 50 //ipc Э + +#define MAX_AUDIO 1 //8000Խͨ +#define MAX_AUDIO_V30 2 //9000Խͨ +#define MAX_CHANNUM 16 //8000豸ͨ +#define MAX_ALARMIN 16 //8000豸󱨾 +#define MAX_ALARMOUT 4 //8000豸󱨾 +#define MAX_AUDIOCAST_CFG_TYPE 3 //ֹ֧㲥õ MP3MPEG2AAC +//9000 IPC +#define MAX_ANALOG_CHANNUM 32 //32ģͨ +#define MAX_ANALOG_ALARMOUT 32 //32·ģⱨ +#define MAX_ANALOG_ALARMIN 32 //32·ģⱨ + +#define MAX_IP_DEVICE 32 //IP豸 +#define MAX_IP_DEVICE_V40 64 // IP豸 64 IVMS 2000豸 +#define MAX_IP_CHANNEL 32 //IPͨ +#define MAX_IP_ALARMIN 128 //౨ +#define MAX_IP_ALARMOUT 64 //౨ +#define MAX_IP_ALARMIN_V40 4096 //౨ +#define MAX_IP_ALARMOUT_V40 4096 //౨ + +#define MAX_RECORD_FILE_NUM 20 // ÿɾ߿¼ļ +//SDK_V31 ATM +#define MAX_ACTION_TYPE 12 //ԶЭӽΪΪ +#define MAX_ATM_PROTOCOL_NUM 256 //ÿ뷽ʽӦATMЭ +#define ATM_CUSTOM_PROTO 1025 //ԶЭ ֵΪ1025 +#define ATM_PROTOCOL_SORT 4 //ATMЭ +#define ATM_DESC_LEN 32 //ATMַ +// SDK_V31 ATM + + +#define MAX_IPV6_LEN 64 //IPv6ַ󳤶 +#define MAX_EVENTID_LEN 64 //¼ID + +#define INVALID_VALUE_UINT32 0xffffffff //Чֵ +#define MAX_CHANNUM_V40 512 +#define MAX_MULTI_AREA_NUM 24 + +//SDK ¼ +#define COURSE_NAME_LEN 32 //γ +#define INSTRUCTOR_NAME_LEN 16 //ڿνʦ +#define COURSE_DESCRIPTION_LEN 256 //γϢ + +#define MAX_TIMESEGMENT_V40 16 //ÿڿϢ + + +#define MAX_MIX_CHAN_NUM 16 /*Ŀǰֵ֧ͨͨ + MIC + LINE IN + 4С*/ +#define MAX_LINE_IN_CHAN_NUM 16 //line inͨ +#define MAX_MIC_CHAN_NUM 16 //MICͨ +#define INQUEST_CASE_NO_LEN 64 //Ѷų +#define INQUEST_CASE_NAME_LEN 64 //ѶƳ +#define CUSTOM_INFO_LEN 64 //ԶϢ +#define INQUEST_CASE_LEN 64 //ѶϢ + + +#define MAX_FILE_ID_LEN 128 //ͼĿļID󳤶 +#define MAX_PIC_NAME_LEN 128 //ͼƬƳ + +/* ֵ֧ͨ ģIP֧ */ +#define MAX_CHANNUM_V30 ( MAX_ANALOG_CHANNUM + MAX_IP_CHANNEL )//64 +#define MAX_ALARMOUT_V40 (MAX_IP_ALARMOUT_V40 +MAX_ANALOG_ALARMOUT) //4128 +#define MAX_ALARMOUT_V30 ( MAX_ANALOG_ALARMOUT + MAX_IP_ALARMOUT )//96 +#define MAX_ALARMIN_V30 ( MAX_ANALOG_ALARMIN + MAX_IP_ALARMIN )//160 +#define MAX_ALARMIN_V40 (MAX_IP_ALARMIN_V40 +MAX_ANALOG_ALARMOUT) //4128 +#define MAX_ANALOG_ALARM_WITH_VOLT_LIMIT 16 //ܵѹ޶ģⱨ + +#define MAX_ROIDETECT_NUM 8 //ֵ֧ROI +#define MAX_LANERECT_NUM 5 //ʶ +#define MAX_FORTIFY_NUM 10 //󲼷 +#define MAX_INTERVAL_NUM 4 //ʱ +#define MAX_CHJC_NUM 3 //ʡݼַ +#define MAX_VL_NUM 5 //Ȧ +#define MAX_DRIVECHAN_NUM 16 //󳵵 +#define MAX_COIL_NUM 3 //Ȧ +#define MAX_SIGNALLIGHT_NUM 6 //źŵƸ +#define LEN_16 16 +#define LEN_32 32 +#define LEN_64 64 +#define LEN_31 31 +#define MAX_LINKAGE_CHAN_NUM 16 //ͨ +#define MAX_CABINET_COUNT 8 //ֻ֧ +#define MAX_ID_LEN 48 +#define MAX_PARKNO_LEN 16 +#define MAX_ALARMREASON_LEN 32 +#define MAX_UPGRADE_INFO_LEN 48 //ȡļƥϢ(ģ) +#define MAX_CUSTOMDIR_LEN 32 //ԶĿ¼ +#define MAX_LED_INFO_LEN 512//LEDݳ +#define MAX_VOICE_INFO_LEN 128//ݳ +#define MAX_LITLE_INFO_LEN 64 //ֽƱݳ +#define MAX_CUSTOM_INFO_LEN 64 //ֽƱԶϢݳ +#define MAX_PHONE_NUM_LEN 16 //ϵ绰ݳ +#define MAX_APP_SERIALNUM_LEN 32 //Ӧкų + +#define AUDIOTALKTYPE_G722 0 +#define AUDIOTALKTYPE_G711_MU 1 +#define AUDIOTALKTYPE_G711_A 2 +#define AUDIOTALKTYPE_MP2L2 5 +#define AUDIOTALKTYPE_G726 6 +#define AUDIOTALKTYPE_AAC 7 +#define AUDIOTALKTYPE_PCM 8 +#define AUDIOTALKTYPE_G722C 9 +#define AUDIOTALKTYPE_MP3 15 + +//packet type +#define FILE_HEAD 0 //file head +#define VIDEO_I_FRAME 1 //video I frame +#define VIDEO_B_FRAME 2 //video B frame +#define VIDEO_P_FRAME 3 //video P frame +#define AUDIO_PACKET 10 //audio packet +#define PRIVT_PACKET 11 //private packet +//E frame +#define HIK_H264_E_FRAME (1 << 6) // ǰE֡,P֡Ҳûõ +#define MAX_TRANSPARENT_CHAN_NUM 4 //ÿ͸ͨ +#define MAX_TRANSPARENT_ACCESS_NUM 4 //ÿ˿ + +//ITS +#define MAX_PARKING_STATUS 8 //λ״̬ 0޳1г2ѹ(ȼ), 3⳵λ +#define MAX_PARKING_NUM 4 //һͨ4λ (ҳλ 03) + +#define MAX_ITS_SCENE_NUM 16 //󳡾 +#define MAX_SCENE_TIMESEG_NUM 16 //󳡾ʱ +#define MAX_IVMS_IP_CHANNEL 128 //IPͨ +#define DEVICE_ID_LEN 48 //豸ų +#define MONITORSITE_ID_LEN 48 //ʾų +#define MAX_AUXAREA_NUM 16 //Ŀ +#define MAX_SLAVE_CHANNEL_NUM 16 //ͨ +#define MAX_DEVDESC_LEN 64 //豸Ϣ󳤶 +#define ILLEGAL_LEN 32 //Υ볤 +#define MAX_TRUCK_AXLE_NUM 10 // +#define MAX_CATEGORY_LEN 8 //ƸϢַ +#define SERIAL_NO_LEN 16 //λ + + +#define MAX_SECRETKEY_LEN 512 //Կ +#define MAX_INDEX_CODE_LEN 64 //ų +#define MAX_ILLEGAL_LEN 64 //Υַ +#define CODE_LEN 64 //Ȩ +#define ALIAS_LEN 32 //ֻ +#define MAX_SCH_TASKS_NUM 10 + +#define MAX_SERVERID_LEN 64 //IDij +#define MAX_SERVERDOMAIN_LEN 128 //󳤶 +#define MAX_AUTHENTICATEID_LEN 64 //֤ID󳤶 +#define MAX_AUTHENTICATEPASSWD_LEN 32 //֤󳤶 +#define MAX_SERVERNAME_LEN 64 //û +#define MAX_COMPRESSIONID_LEN 64 //ID󳤶 +#define MAX_SIPSERVER_ADDRESS_LEN 128 //SIPַ֧IPַ +//ѹ߱ +#define MAX_PlATE_NO_LEN 32 //ƺ󳤶 2013-09-27 +#define UPNP_PORT_NUM 12 //upnp˿ӳ˿Ŀ + +#define MAX_PEOPLE_DETECTION_NUM 8 //Ա + +#define MAX_NOTICE_NUMBER_LEN 32 //󳤶 +#define MAX_NOTICE_THEME_LEN 64 //󳤶 +#define MAX_NOTICE_DETAIL_LEN 1024 //󳤶 +#define MAX_NOTICE_PIC_NUM 6 //ϢͼƬ +#define MAX_DEV_NUMBER_LEN 32 //豸󳤶 +#define LOCK_NAME_LEN 32 // + + +#define HOLIDAY_GROUP_NAME_LEN 32 //Ƴ +#define MAX_HOLIDAY_PLAN_NUM 16 //ռƻ +#define TEMPLATE_NAME_LEN 32 //ƻģƳ +#define MAX_HOLIDAY_GROUP_NUM 16 //ƻģ +#define DOOR_NAME_LEN 32 // +#define STRESS_PASSWORD_LEN 8 //в볤 +#define SUPER_PASSWORD_LEN 8 //в볤 +#define GROUP_NAME_LEN 32 //ȺƳ +#define GROUP_COMBINATION_NUM 8 //Ⱥ +#define MULTI_CARD_GROUP_NUM 4 //ؿ +#define ACS_CARD_NO_LEN 32 //Žų +#define NET_SDK_EMPLOYEE_NO_LEN 32 //ų +#define NET_SDK_UUID_LEN 36 //UUID +#define NET_SDK_EHOME_KEY_LEN 32 //EHome Key +#define CARD_PASSWORD_LEN 8 //볤 +#define MAX_DOOR_NUM 32 // +#define MAX_CARD_RIGHT_PLAN_NUM 4 //Ȩƻ +#define MAX_GROUP_NUM_128 128 //Ⱥ +#define MAX_CARD_READER_NUM 64 // +#define MAX_SNEAK_PATH_NODE 8 // +#define MAX_MULTI_DOOR_INTERLOCK_GROUP 8 //Ż +#define MAX_INTER_LOCK_DOOR_NUM 8 //һŻ +#define MAX_CASE_SENSOR_NUM 8 //case sensor +#define MAX_DOOR_NUM_256 256 // +#define MAX_READER_ROUTE_NUM 16 //ˢѭ· +#define MAX_FINGER_PRINT_NUM 10 //ָƸ +#define MAX_CARD_READER_NUM_512 512 // +#define NET_SDK_MULTI_CARD_GROUP_NUM_20 20 //ؿ + +#define ERROR_MSG_LEN 32 //·Ϣ +#define MAX_DOOR_CODE_LEN 8 //볤 +#define MAX_LOCK_CODE_LEN 8 //볤 +#define PER_RING_PORT_NUM 2 //ÿĶ˿ +#define SENSORNAME_LEN 32 //Ƴ +#define MAX_SENSORDESCR_LEN 64 // +#define MAX_DNS_SERVER_NUM 2 //DNS +#define SENSORUNIT_LEN 32 //λ + +#define WEP_KEY_MAX_SIZE 32 //WEPԿ +#define WEP_KEY_MAX_NUM 4 //WEPԿ +#define WPA_KEY_MAX_SIZE 64 //WPAԿ + +#define MAX_SINGLE_FTPPICNAME_LEN 20 //󵥸FTPͨ +#define MAX_CAMNAME_LEN 32 //ͨ +#define MAX_FTPNAME_NUM 12 //TFP + + +#define MAX_IDCODE_LEN 128 // ʶ󳤶 +#define MAX_VERSIIN_LEN 64 //汾󳤶 +#define MAX_IDCODE_NUM 32 // ʶ +#define SDK_LEN_2048 2048 +#define SDK_MAX_IP_LEN 48 + +#define RECT_POINT_NUM 4 //ν + +#define MAX_PUBLIC_KEY_LEN 512 // Կ +#define CHIP_SERIALNO_LEN 32 //оƬкų +#define ENCRYPT_DEV_ID_LEN 20 //豸ID + +//MCUص +#define MAX_SEARCH_ID_LEN 36 //ʶ󳤶 +#define TERMINAL_NAME_LEN 64 //նƳ +#define MAX_URL_LEN 512 //URL +#define REGISTER_NAME_LEN 64 //նעGK󳤶 + +// +#define MAX_PORT_NUM 64 //˿ +#define MAX_SINGLE_CARD_PORT_NO 4 //շ˿ +#define MAX_FUNC_CARD_NUM 32 //շܿ +#define MAX_FC_CARD_NUM 33 //շ +#define MAX_REMARKS_LEN 128 //ע󳤶 +#define MAX_OUTPUT_PORT_NUM 32 //·˿ +#define MAX_SINGLE_PORT_RECVCARD_NUM 64 //˿ӵտ +#define MAX_GAMMA_X_VALUE 256 //GAMMAXȡֵ +#define NET_DEV_NAME_LEN 64 //豸Ƴ +#define NET_DEV_TYPE_NAME_LEN 64 //豸Ƴ +#define ABNORMAL_INFO_NUM 4 //쳣ʱθ + +#define PLAYLIST_NAME_LEN 64 //űƳ +#define PLAYLIST_ITEM_NUM 64 //Ŀ + +// +#define NET_SDK_MAX_LOGIN_PASSWORD_LEN 128 //û¼󳤶 +#define NET_SDK_MAX_ANSWER_LEN 256 //ȫ󳤶 +#define NET_SDK_MAX_QUESTION_LIST_LEN 32//ȫб󳤶 + +#define MAX_SCREEN_AREA_NUM 128 //Ļ +#define NET_SDK_MAX_THERMOMETRYALGNAME 128//㷨汾󳤶 +#define NET_SDK_MAX_SHIPSALGNAME 128//ֻ㷨汾󳤶 +#define NET_SDK_MAX_FIRESALGNAME 128//㷨汾󳤶 + +#define MAX_PASSPORT_NUM_LEN 16 //֤ų +#define MAX_PASSPORT_INFO_LEN 128 //ͨϢ +#define MAX_PASSPORT_NAME_LEN 64 // +#define MAX_PASSPORT_MONITOR_LEN 1024 //ռ໤Ϣ +#define MAX_NATIONALITY_LEN 16 //չ +#define MAX_PASSPORT_TYPE_LEN 4 //֤ͳ + +/*******************ȫִ begin**********************/ +#define NET_DVR_NOERROR 0 //ûд +#define NET_DVR_PASSWORD_ERROR 1 //û +#define NET_DVR_NOENOUGHPRI 2 //Ȩ޲ +#define NET_DVR_NOINIT 3 //ûгʼ +#define NET_DVR_CHANNEL_ERROR 4 //ͨŴ +#define NET_DVR_OVER_MAXLINK 5 //ӵDVRĿͻ˸ +#define NET_DVR_VERSIONNOMATCH 6 //汾ƥ +#define NET_DVR_NETWORK_FAIL_CONNECT 7 //ӷʧ +#define NET_DVR_NETWORK_SEND_ERROR 8 //ʧ +#define NET_DVR_NETWORK_RECV_ERROR 9 //ӷʧ +#define NET_DVR_NETWORK_RECV_TIMEOUT 10 //ӷݳʱ +#define NET_DVR_NETWORK_ERRORDATA 11 //͵ +#define NET_DVR_ORDER_ERROR 12 //ô +#define NET_DVR_OPERNOPERMIT 13 //޴Ȩ +#define NET_DVR_COMMANDTIMEOUT 14 //DVRִгʱ +#define NET_DVR_ERRORSERIALPORT 15 //ںŴ +#define NET_DVR_ERRORALARMPORT 16 //˿ڴ +#define NET_DVR_PARAMETER_ERROR 17 // +#define NET_DVR_CHAN_EXCEPTION 18 //ͨڴ״̬ +#define NET_DVR_NODISK 19 //ûӲ +#define NET_DVR_ERRORDISKNUM 20 //Ӳ̺Ŵ +#define NET_DVR_DISK_FULL 21 //Ӳ +#define NET_DVR_DISK_ERROR 22 //Ӳ̳ +#define NET_DVR_NOSUPPORT 23 //֧ +#define NET_DVR_BUSY 24 //æ +#define NET_DVR_MODIFY_FAIL 25 //޸IJɹ +#define NET_DVR_PASSWORD_FORMAT_ERROR 26 //ʽȷ +#define NET_DVR_DISK_FORMATING 27 //Ӳڸʽ +#define NET_DVR_DVRNORESOURCE 28 //DVRԴ +#define NET_DVR_DVROPRATEFAILED 29 //DVRʧ +#define NET_DVR_OPENHOSTSOUND_FAIL 30 //PCʧ +#define NET_DVR_DVRVOICEOPENED 31 //Խռ +#define NET_DVR_TIMEINPUTERROR 32 //ʱ벻ȷ +#define NET_DVR_NOSPECFILE 33 //طʱûָļ +#define NET_DVR_CREATEFILE_ERROR 34 //ļ +#define NET_DVR_FILEOPENFAIL 35 //ļ +#define NET_DVR_OPERNOTFINISH 36 //ϴεIJû +#define NET_DVR_GETPLAYTIMEFAIL 37 //ȡǰŵʱ +#define NET_DVR_PLAYFAIL 38 //ų +#define NET_DVR_FILEFORMAT_ERROR 39 //ļʽȷ +#define NET_DVR_DIR_ERROR 40 //· +#define NET_DVR_ALLOC_RESOURCE_ERROR 41 //Դ +#define NET_DVR_AUDIO_MODE_ERROR 42 //ģʽ +#define NET_DVR_NOENOUGH_BUF 43 //̫С +#define NET_DVR_CREATESOCKET_ERROR 44 //SOCKET +#define NET_DVR_SETSOCKET_ERROR 45 //SOCKET +#define NET_DVR_MAX_NUM 46 //ﵽ +#define NET_DVR_USERNOTEXIST 47 //û +#define NET_DVR_WRITEFLASHERROR 48 //дFLASH +#define NET_DVR_UPGRADEFAIL 49 //DVRʧ +#define NET_DVR_CARDHAVEINIT 50 //뿨Ѿʼ +#define NET_DVR_PLAYERFAILED 51 //òſijʧ +#define NET_DVR_MAX_USERNUM 52 //豸ûﵽ +#define NET_DVR_GETLOCALIPANDMACFAIL 53 //ÿͻ˵IPַַʧ +#define NET_DVR_NOENCODEING 54 //ͨûб +#define NET_DVR_IPMISMATCH 55 //IPַƥ +#define NET_DVR_MACMISMATCH 56 //MACַƥ +#define NET_DVR_UPGRADELANGMISMATCH 57 //ļԲƥ +#define NET_DVR_MAX_PLAYERPORT 58 //·ﵽ +#define NET_DVR_NOSPACEBACKUP 59 //豸û㹻ռб +#define NET_DVR_NODEVICEBACKUP 60 //ûҵָı豸 +#define NET_DVR_PICTURE_BITS_ERROR 61 //ͼλ24ɫ +#define NET_DVR_PICTURE_DIMENSION_ERROR 62 //ͼƬ*ޣ 128*256 +#define NET_DVR_PICTURE_SIZ_ERROR 63 //ͼƬСޣ100K +#define NET_DVR_LOADPLAYERSDKFAILED 64 //뵱ǰĿ¼Player Sdk +#define NET_DVR_LOADPLAYERSDKPROC_ERROR 65 //ҲPlayer Sdkij +#define NET_DVR_LOADDSSDKFAILED 66 //뵱ǰĿ¼DSsdk +#define NET_DVR_LOADDSSDKPROC_ERROR 67 //ҲDsSdkij +#define NET_DVR_DSSDK_ERROR 68 //ӲDsSdkijʧ +#define NET_DVR_VOICEMONOPOLIZE 69 //ռ +#define NET_DVR_JOINMULTICASTFAILED 70 //ಥʧ +#define NET_DVR_CREATEDIR_ERROR 71 //־ļĿ¼ʧ +#define NET_DVR_BINDSOCKET_ERROR 72 //׽ʧ +#define NET_DVR_SOCKETCLOSE_ERROR 73 //socketжϣ˴ͨжϻĿĵزɴ +#define NET_DVR_USERID_ISUSING 74 //עʱûIDڽij +#define NET_DVR_SOCKETLISTEN_ERROR 75 //ʧ +#define NET_DVR_PROGRAM_EXCEPTION 76 //쳣 +#define NET_DVR_WRITEFILE_FAILED 77 //дļʧ +#define NET_DVR_FORMAT_READONLY 78 //ֹʽֻӲ +#define NET_DVR_WITHSAMEUSERNAME 79 //ûýṹдͬû +#define NET_DVR_DEVICETYPE_ERROR 80 /*ʱ豸ͺŲƥ*/ +#define NET_DVR_LANGUAGE_ERROR 81 /*ʱԲƥ*/ +#define NET_DVR_PARAVERSION_ERROR 82 /*ʱ汾ƥ*/ +#define NET_DVR_IPCHAN_NOTALIVE 83 /*ԤʱIPͨ*/ +#define NET_DVR_RTSP_SDK_ERROR 84 /*ظIPCͨѶStreamTransClient.dllʧ*/ +#define NET_DVR_CONVERT_SDK_ERROR 85 /*תʧ*/ +#define NET_DVR_IPC_COUNT_OVERFLOW 86 /*ipͨ*/ +#define NET_DVR_MAX_ADD_NUM 87 /*ӱǩ(һļƬ64)ȸﵽ*/ +#define NET_DVR_PARAMMODE_ERROR 88 //ͼǿǣģʽӲʱͻ˽ʱֵ +#define NET_DVR_CODESPITTER_OFFLINE 89 //Ƶۺƽ̨ +#define NET_DVR_BACKUP_COPYING 90 //豸ڱ +#define NET_DVR_CHAN_NOTSUPPORT 91 // ָ֧ͨò +#define NET_DVR_CALLINEINVALID 92 // ߶λ̫л򳤶߲б +#define NET_DVR_CALCANCELCONFLICT 93 // ȡ궨ͻ˹ȫֵʵʴСߴ +#define NET_DVR_CALPOINTOUTRANGE 94 // 궨㳬Χ +#define NET_DVR_FILTERRECTINVALID 95 // ߴҪ +#define NET_DVR_DDNS_DEVOFFLINE 96 //豸ûעᵽddns +#define NET_DVR_DDNS_INTER_ERROR 97 //DDNS ڲ +#define NET_DVR_FUNCTION_NOT_SUPPORT_OS 98 //˹ָ֧ܲòϵͳ +#define NET_DVR_DEC_CHAN_REBIND 99 //ͨʾ +#define NET_DVR_INTERCOM_SDK_ERROR 100 //صǰĿ¼µԽʧ +#define NET_DVR_NO_CURRENT_UPDATEFILE 101 //ûȷ +#define NET_DVR_USER_NOT_SUCC_LOGIN 102 //ûû½ɹ +#define NET_DVR_USE_LOG_SWITCH_FILE 103 //ʹ־ļ +#define NET_DVR_POOL_PORT_EXHAUST 104 //˿ڳڰ󶨵Ķ˿Ѻľ +#define NET_DVR_PACKET_TYPE_NOT_SUPPORT 105 //װʽ +#define NET_DVR_IPPARA_IPID_ERROR 106 //IPʱIPID + +#define NET_DVR_LOAD_HCPREVIEW_SDK_ERROR 107 //Ԥʧ +#define NET_DVR_LOAD_HCVOICETALK_SDK_ERROR 108 //ʧ +#define NET_DVR_LOAD_HCALARM_SDK_ERROR 109 //ʧ +#define NET_DVR_LOAD_HCPLAYBACK_SDK_ERROR 110 //طʧ +#define NET_DVR_LOAD_HCDISPLAY_SDK_ERROR 111 //ʾʧ +#define NET_DVR_LOAD_HCINDUSTRY_SDK_ERROR 112 //ҵӦʧ +#define NET_DVR_LOAD_HCGENERALCFGMGR_SDK_ERROR 113 //ͨùʧ +#define NET_DVR_LOAD_HCCOREDEVCFG_SDK_ERROR 114 //豸úʧ +#define NET_DVR_LOAD_HCNETUTILS_SDK_ERROR 115 //HCNetUtilsʧ + +#define NET_DVR_CORE_VER_MISMATCH 121 //ʱcore汾ƥ +#define NET_DVR_CORE_VER_MISMATCH_HCPREVIEW 122 //Ԥcore汾ƥ +#define NET_DVR_CORE_VER_MISMATCH_HCVOICETALK 123 //core汾ƥ +#define NET_DVR_CORE_VER_MISMATCH_HCALARM 124 //core汾ƥ +#define NET_DVR_CORE_VER_MISMATCH_HCPLAYBACK 125 //طcore汾ƥ +#define NET_DVR_CORE_VER_MISMATCH_HCDISPLAY 126 //ʾcore汾ƥ +#define NET_DVR_CORE_VER_MISMATCH_HCINDUSTRY 127 //ҵӦcore汾ƥ +#define NET_DVR_CORE_VER_MISMATCH_HCGENERALCFGMGR 128 //ͨùcore汾ƥ + +#define NET_DVR_COM_VER_MISMATCH_HCPREVIEW 136 //ԤHCNetSDK汾ƥ +#define NET_DVR_COM_VER_MISMATCH_HCVOICETALK 137 //HCNetSDK汾ƥ +#define NET_DVR_COM_VER_MISMATCH_HCALARM 138 //HCNetSDK汾ƥ +#define NET_DVR_COM_VER_MISMATCH_HCPLAYBACK 139 //طHCNetSDK汾ƥ +#define NET_DVR_COM_VER_MISMATCH_HCDISPLAY 140 //ʾHCNetSDK汾ƥ +#define NET_DVR_COM_VER_MISMATCH_HCINDUSTRY 141 //ҵӦHCNetSDK汾ƥ +#define NET_DVR_COM_VER_MISMATCH_HCGENERALCFGMGR 142 //ͨùHCNetSDK汾ƥ + +#define NET_ERR_CONFIG_FILE_IMPORT_FAILED 145 //ļʧ +#define NET_ERR_CONFIG_FILE_EXPORT_FAILED 146 //ļʧ +#define NET_DVR_CERTIFICATE_FILE_ERROR 147 //֤ +#define NET_DVR_LOAD_SSL_LIB_ERROR 148 //SSLʧܣǰ汾ƥ䣬ҲDzڣ +#define NET_DVR_SSL_VERSION_NOT_MATCH 149 //SSL汾ƥ + +#define NET_DVR_ALIAS_DUPLICATE 150 //ظ //2011-08-31 ͨк豸°汾ddns +#define NET_DVR_INVALID_COMMUNICATION 151 //Чͨ +#define NET_DVR_USERNAME_NOT_EXIST 152 //ûڣûڣIPC5.1.7зȥˣɾIJƷòϣ +#define NET_DVR_USER_LOCKED 153 //û +#define NET_DVR_INVALID_USERID 154 //ЧûID +#define NET_DVR_LOW_LOGIN_VERSION 155 //¼汾 +#define NET_DVR_LOAD_LIBEAY32_DLL_ERROR 156 //libeay32.dllʧ +#define NET_DVR_LOAD_SSLEAY32_DLL_ERROR 157 //ssleay32.dllʧ +#define NET_ERR_LOAD_LIBICONV 158 //libiconvʧ +#define NET_ERR_SSL_CONNECT_FAILED 159 //SSLʧ +#define NET_ERR_MCAST_ADDRESS_ERROR 160 //ȡಥַ +#define NET_ERR_LOAD_ZLIB 161 //zlib.dllʧ +#define NET_ERR_OPENSSL_NO_INIT 162 //Opensslδʼ + +#define NET_DVR_SERVER_NOT_EXIST 164 //ӦķҲ,ʱĹұŻ߷ʹ +#define NET_DVR_TEST_SERVER_FAIL_CONNECT 165 //ӲԷʧ +#define NET_DVR_NAS_SERVER_INVALID_DIR 166 //NASĿ¼ʧܣĿ¼Ч +#define NET_DVR_NAS_SERVER_NOENOUGH_PRI 167 //NASĿ¼ʧܣûȨ +#define NET_DVR_EMAIL_SERVER_NOT_CONFIG_DNS 168 //ʹûDNSЧ +#define NET_DVR_EMAIL_SERVER_NOT_CONFIG_GATEWAY 169 //ûأɷʼʧܡ +#define NET_DVR_TEST_SERVER_PASSWORD_ERROR 170 //û벻ȷԷû +#define NET_DVR_EMAIL_SERVER_CONNECT_EXCEPTION_WITH_SMTP 171 //豸smtp쳣 +#define NET_DVR_FTP_SERVER_FAIL_CREATE_DIR 172 //FTPĿ¼ʧ +#define NET_DVR_FTP_SERVER_NO_WRITE_PIR 173 //FTPûдȨ +#define NET_DVR_IP_CONFLICT 174 //IPͻ +#define NET_DVR_INSUFFICIENT_STORAGEPOOL_SPACE 175 //洢ؿռ +#define NET_DVR_STORAGEPOOL_INVALID 176 //Ʒ洢Ч,ûô洢ػߴ洢ID +#define NET_DVR_EFFECTIVENESS_REBOOT 177 //ЧҪ +#define NET_ERR_ANR_ARMING_EXIST 178 //Ѿ(ô˽вӽ£ظĶʱء) +#define NET_ERR_UPLOADLINK_EXIST 179 //ϴѾ(EHOMEЭSDKЭDzͬʱֶ֧ģһЭڵʱһӽ롣) +#define NET_ERR_INCORRECT_FILE_FORMAT 180 //ļʽȷ +#define NET_ERR_INCORRECT_FILE_CONTENT 181 //ļݲȷ +#define NET_ERR_MAX_HRUDP_LINK 182 //HRUDP 豸 +#define NET_SDK_ERR_ACCESSKEY_SECRETKEY 183 // ԿԿȷ +#define NET_SDK_ERR_CREATE_PORT_MULTIPLEX 184 //˿ڸʧ +#define NET_DVR_NONBLOCKING_CAPTURE_NOTSUPPORT 185 //֧ץͼ +#define NET_SDK_ERR_FUNCTION_INVALID 186 //ѿ첽ùЧ +#define NET_SDK_ERR_MAX_PORT_MULTIPLEX 187 //Ѵﵽ˿ڸĿ +#define NET_DVR_INVALID_LINK 188 //δЧ +#define NET_DVR_ISAPI_NOT_SUPPORT 189 //ӿڲ֧ISAPIЭ + +// 2010-5-28 +// д +#define RAID_ERROR_INDEX 200 +#define NET_DVR_NAME_NOT_ONLY (RAID_ERROR_INDEX + 0) // Ѵ +#define NET_DVR_OVER_MAX_ARRAY (RAID_ERROR_INDEX + 1 ) // дﵽ +#define NET_DVR_OVER_MAX_VD (RAID_ERROR_INDEX + 2 ) // ̴ﵽ +#define NET_DVR_VD_SLOT_EXCEED (RAID_ERROR_INDEX + 3 ) // ̲λ +#define NET_DVR_PD_STATUS_INVALID (RAID_ERROR_INDEX + 4 ) // ؽ״̬ +#define NET_DVR_PD_BE_DEDICATE_SPARE (RAID_ERROR_INDEX + 5 ) // ؽΪָȱ +#define NET_DVR_PD_NOT_FREE (RAID_ERROR_INDEX + 6 ) // ؽ̷ǿ +#define NET_DVR_CANNOT_MIG2NEWMODE (RAID_ERROR_INDEX + 7 ) // ܴӵǰǨƵµ +#define NET_DVR_MIG_PAUSE (RAID_ERROR_INDEX + 8 ) // ǨƲͣ +#define NET_DVR_MIG_CANCEL (RAID_ERROR_INDEX + 9 ) // ִеǨƲȡ +#define NET_DVR_EXIST_VD (RAID_ERROR_INDEX + 10) // ϴ̣޷ɾ +#define NET_DVR_TARGET_IN_LD_FUNCTIONAL (RAID_ERROR_INDEX + 11) // Ϊɲҹ +#define NET_DVR_HD_IS_ASSIGNED_ALREADY (RAID_ERROR_INDEX + 12) // ָ̱Ϊ +#define NET_DVR_INVALID_HD_COUNT (RAID_ERROR_INDEX + 13) // ָRAIDȼƥ +#define NET_DVR_LD_IS_FUNCTIONAL (RAID_ERROR_INDEX + 14) // ޷ؽ +#define NET_DVR_BGA_RUNNING (RAID_ERROR_INDEX + 15) // ִеĺ̨ +#define NET_DVR_LD_NO_ATAPI (RAID_ERROR_INDEX + 16) // ޷ATAPI̴ +#define NET_DVR_MIGRATION_NOT_NEED (RAID_ERROR_INDEX + 17) // Ǩ +#define NET_DVR_HD_TYPE_MISMATCH (RAID_ERROR_INDEX + 18) // ̲ͬ +#define NET_DVR_NO_LD_IN_DG (RAID_ERROR_INDEX + 19) // ̣޷д +#define NET_DVR_NO_ROOM_FOR_SPARE (RAID_ERROR_INDEX + 20) // ̿ռС޷ָΪȱ +#define NET_DVR_SPARE_IS_IN_MULTI_DG (RAID_ERROR_INDEX + 21) // ѱΪijȱ +#define NET_DVR_DG_HAS_MISSING_PD (RAID_ERROR_INDEX + 22) // ȱ + +// x86 64bit nvr 2012-02-04 +#define NET_DVR_NAME_EMPTY (RAID_ERROR_INDEX + 23) /*Ϊ*/ +#define NET_DVR_INPUT_PARAM (RAID_ERROR_INDEX + 24) /**/ +#define NET_DVR_PD_NOT_AVAILABLE (RAID_ERROR_INDEX + 25) /*̲*/ +#define NET_DVR_ARRAY_NOT_AVAILABLE (RAID_ERROR_INDEX + 26) /*в*/ +#define NET_DVR_PD_COUNT (RAID_ERROR_INDEX + 27) /*ȷ*/ +#define NET_DVR_VD_SMALL (RAID_ERROR_INDEX + 28) /*̫С*/ +#define NET_DVR_NO_EXIST (RAID_ERROR_INDEX + 29) /**/ +#define NET_DVR_NOT_SUPPORT (RAID_ERROR_INDEX + 30) /*ָ֧ò*/ +#define NET_DVR_NOT_FUNCTIONAL (RAID_ERROR_INDEX + 31) /*״̬״̬*/ +#define NET_DVR_DEV_NODE_NOT_FOUND (RAID_ERROR_INDEX + 32) /*豸ڵ㲻*/ +#define NET_DVR_SLOT_EXCEED (RAID_ERROR_INDEX + 33) /*λﵽ*/ +#define NET_DVR_NO_VD_IN_ARRAY (RAID_ERROR_INDEX + 34) /*ϲ*/ +#define NET_DVR_VD_SLOT_INVALID (RAID_ERROR_INDEX + 35) /*̲λЧ*/ +#define NET_DVR_PD_NO_ENOUGH_SPACE (RAID_ERROR_INDEX + 36) /*̿ռ䲻*/ +#define NET_DVR_ARRAY_NONFUNCTION (RAID_ERROR_INDEX + 37) /*ֻд״̬вܽǨ*/ +#define NET_DVR_ARRAY_NO_ENOUGH_SPACE (RAID_ERROR_INDEX + 38) /*пռ䲻*/ +#define NET_DVR_STOPPING_SCANNING_ARRAY (RAID_ERROR_INDEX + 39) /*ִаȫ̻ɨ*/ +#define NET_DVR_NOT_SUPPORT_16T (RAID_ERROR_INDEX + 40) /*ִ֧16T*/ +#define NET_DVR_ARRAY_FORMATING (RAID_ERROR_INDEX + 41) /*ִиʽ޷ɾ*/ +#define NET_DVR_QUICK_SETUP_PD_COUNT (RAID_ERROR_INDEX + 42) /*һҪ*/ + +//豸δʱ¼ʧܣش +#define NET_DVR_ERROR_DEVICE_NOT_ACTIVATED 250//豸δ +//SDK豸û߼ʱΪʱ +#define NET_DVR_ERROR_RISK_PASSWORD 251 //зյ +//Ѽ豸ٴμʱش +#define NET_DVR_ERROR_DEVICE_HAS_ACTIVATED 252//豸Ѽ + + +// ܴ +#define VCA_ERROR_INDEX 300 // ܴ +#define NET_DVR_ID_ERROR (VCA_ERROR_INDEX + 0) // ID +#define NET_DVR_POLYGON_ERROR (VCA_ERROR_INDEX + 1) // βҪ +#define NET_DVR_RULE_PARAM_ERROR (VCA_ERROR_INDEX + 2) // +#define NET_DVR_RULE_CFG_CONFLICT (VCA_ERROR_INDEX + 3) // Ϣͻ +#define NET_DVR_CALIBRATE_NOT_READY (VCA_ERROR_INDEX + 4) // ǰûб궨Ϣ +#define NET_DVR_CAMERA_DATA_ERROR (VCA_ERROR_INDEX + 5) // +#define NET_DVR_CALIBRATE_DATA_UNFIT (VCA_ERROR_INDEX + 6) // Ȳбڱ궨 +#define NET_DVR_CALIBRATE_DATA_CONFLICT (VCA_ERROR_INDEX + 7) // 궨Ϊе㹲߻λ̫ +#define NET_DVR_CALIBRATE_CALC_FAIL (VCA_ERROR_INDEX + 8) // 궨ֵʧ +#define NET_DVR_CALIBRATE_LINE_OUT_RECT (VCA_ERROR_INDEX + 9) // 궨߳Ӿο +#define NET_DVR_ENTER_RULE_NOT_READY (VCA_ERROR_INDEX + 10) // ûý +#define NET_DVR_AID_RULE_NO_INCLUDE_LANE (VCA_ERROR_INDEX + 11) // ͨ¼ûаֵӵºУ +#define NET_DVR_LANE_NOT_READY (VCA_ERROR_INDEX + 12) // ǰûó +#define NET_DVR_RULE_INCLUDE_TWO_WAY (VCA_ERROR_INDEX + 13) // ¼а2ֲͬ +#define NET_DVR_LANE_TPS_RULE_CONFLICT (VCA_ERROR_INDEX + 14) // ݹͻ +#define NET_DVR_NOT_SUPPORT_EVENT_TYPE (VCA_ERROR_INDEX + 15) // ֵ֧¼ +#define NET_DVR_LANE_NO_WAY (VCA_ERROR_INDEX + 16) // ûз +#define NET_DVR_SIZE_FILTER_ERROR (VCA_ERROR_INDEX + 17) // ߴ˿򲻺 +#define NET_DVR_LIB_FFL_NO_FACE (VCA_ERROR_INDEX + 18) // 㶨λʱͼû +#define NET_DVR_LIB_FFL_IMG_TOO_SMALL (VCA_ERROR_INDEX + 19) // 㶨λʱͼ̫С +#define NET_DVR_LIB_FD_IMG_NO_FACE (VCA_ERROR_INDEX + 20) // ͼʱͼû +#define NET_DVR_LIB_FACE_TOO_SMALL (VCA_ERROR_INDEX + 21) // ģʱ̫С +#define NET_DVR_LIB_FACE_QUALITY_TOO_BAD (VCA_ERROR_INDEX + 22) // ģʱͼ̫ +#define NET_DVR_KEY_PARAM_ERR (VCA_ERROR_INDEX + 23) //߼ô +#define NET_DVR_CALIBRATE_DATA_ERR (VCA_ERROR_INDEX + 24) //궨Ŀ󣬻ֵ󣬻㳬ƽ +#define NET_DVR_CALIBRATE_DISABLE_FAIL (VCA_ERROR_INDEX + 25) //ùȡ궨 +#define NET_DVR_VCA_LIB_FD_SCALE_OUTRANGE (VCA_ERROR_INDEX + 26) //˿ĿСֵС˿Ŀֵ +#define NET_DVR_LIB_FD_REGION_TOO_LARGE (VCA_ERROR_INDEX + 27) //ǰΧ󡣼Ϊͼ2/3 +#define NET_DVR_TRIAL_OVERDUE (VCA_ERROR_INDEX + 28) //ðѽ +#define NET_DVR_CONFIG_FILE_CONFLICT (VCA_ERROR_INDEX + 29) //豸ļͻܹзòʾ +//㷨ش +#define NET_DVR_FR_FPL_FAIL (VCA_ERROR_INDEX + 30) // 㶨λʧ +#define NET_DVR_FR_IQA_FAIL (VCA_ERROR_INDEX + 31) // ʧ +#define NET_DVR_FR_FEM_FAIL (VCA_ERROR_INDEX + 32) // ȡʧ +#define NET_DVR_FPL_DT_CONF_TOO_LOW (VCA_ERROR_INDEX + 33) // 㶨λʱŶȹ +#define NET_DVR_FPL_CONF_TOO_LOW (VCA_ERROR_INDEX + 34) // 㶨λŶȹ +#define NET_DVR_E_DATA_SIZE (VCA_ERROR_INDEX + 35) // ݳȲƥ +#define NET_DVR_FR_MODEL_VERSION_ERR (VCA_ERROR_INDEX + 36) // ģеģͰ汾 +#define NET_DVR_FR_FD_FAIL (VCA_ERROR_INDEX + 37) // ʶʧ +#define NET_DVR_FA_NORMALIZE_ERR (VCA_ERROR_INDEX + 38) // һ +// +#define NET_DVR_DOG_PUSTREAM_NOT_MATCH (VCA_ERROR_INDEX + 39) // ܹǰȡ豸Ͳƥ +#define NET_DVR_DEV_PUSTREAM_NOT_MATCH (VCA_ERROR_INDEX + 40) // ǰȡ豸汾ƥ +#define NET_DVR_PUSTREAM_ALREADY_EXISTS (VCA_ERROR_INDEX + 41) // 豸ͨѾӹǰ豸 +#define NET_DVR_SEARCH_CONNECT_FAILED (VCA_ERROR_INDEX + 42) // Ӽʧ +#define NET_DVR_INSUFFICIENT_DISK_SPACE (VCA_ERROR_INDEX + 43) // ɴ洢Ӳ̿ռ䲻 +#define NET_DVR_DATABASE_CONNECTION_FAILED (VCA_ERROR_INDEX + 44) // ݿʧ +#define NET_DVR_DATABASE_ADM_PW_ERROR (VCA_ERROR_INDEX + 45) // ݿû +#define NET_DVR_DECODE_YUV (VCA_ERROR_INDEX + 46) // ʧ +#define NET_DVR_IMAGE_RESOLUTION_ERROR (VCA_ERROR_INDEX + 47) // +#define NET_DVR_CHAN_WORKMODE_ERROR (VCA_ERROR_INDEX + 48) // + +#define NET_DVR_RTSP_ERROR_NOENOUGHPRI 401 //Ȩޣ401ʱת +#define NET_DVR_RTSP_ERROR_ALLOC_RESOURCE 402 //Դʧ +#define NET_DVR_RTSP_ERROR_PARAMETER 403 // +#define NET_DVR_RTSP_ERROR_NO_URL 404 //ָURLַڣ404ʱת +#define NET_DVR_RTSP_ERROR_FORCE_STOP 406 //û;ǿ˳ + +#define NET_DVR_RTSP_GETPORTFAILED 407 //rtsp õ˿ڴ +#define NET_DVR_RTSP_DESCRIBERROR 410 //rtsp decribe +#define NET_DVR_RTSP_DESCRIBESENDTIMEOUT 411 //rtsp decribe ͳʱ +#define NET_DVR_RTSP_DESCRIBESENDERROR 412 //rtsp decribe ʧ +#define NET_DVR_RTSP_DESCRIBERECVTIMEOUT 413 //rtsp decribe ճʱ +#define NET_DVR_RTSP_DESCRIBERECVDATALOST 414 //rtsp decribe ݴ +#define NET_DVR_RTSP_DESCRIBERECVERROR 415 //rtsp decribe ʧ +#define NET_DVR_RTSP_DESCRIBESERVERERR 416 //rtsp decribe ش״̬ + +#define NET_DVR_RTSP_SETUPERROR 420 //rtsp setup +#define NET_DVR_RTSP_SETUPSENDTIMEOUT 421 //rtsp setup ͳʱ +#define NET_DVR_RTSP_SETUPSENDERROR 422 //rtsp setup ʹ +#define NET_DVR_RTSP_SETUPRECVTIMEOUT 423 //rtsp setup ճʱ +#define NET_DVR_RTSP_SETUPRECVDATALOST 424 //rtsp setup ݴ +#define NET_DVR_RTSP_SETUPRECVERROR 425 //rtsp setup ʧ +#define NET_DVR_RTSP_OVER_MAX_CHAN 426 //߷Դ㣬453ʱת롣 +#define NET_DVR_RTSP_SETUPSERVERERR 427 //rtsp setup ش״̬ + +#define NET_DVR_RTSP_PLAYERROR 430 //rtsp play +#define NET_DVR_RTSP_PLAYSENDTIMEOUT 431 //rtsp play ͳʱ +#define NET_DVR_RTSP_PLAYSENDERROR 432 //rtsp play ʹ +#define NET_DVR_RTSP_PLAYRECVTIMEOUT 433 //rtsp play ճʱ +#define NET_DVR_RTSP_PLAYRECVDATALOST 434 //rtsp play ݴ +#define NET_DVR_RTSP_PLAYRECVERROR 435 //rtsp play ʧ +#define NET_DVR_RTSP_PLAYSERVERERR 436 //rtsp play ش״̬ + +#define NET_DVR_RTSP_TEARDOWNERROR 440 //rtsp teardown +#define NET_DVR_RTSP_TEARDOWNSENDTIMEOUT 441 //rtsp teardown ͳʱ +#define NET_DVR_RTSP_TEARDOWNSENDERROR 442 //rtsp teardown ʹ +#define NET_DVR_RTSP_TEARDOWNRECVTIMEOUT 443 //rtsp teardown ճʱ +#define NET_DVR_RTSP_TEARDOWNRECVDATALOST 444 //rtsp teardown ݴ +#define NET_DVR_RTSP_TEARDOWNRECVERROR 445 //rtsp teardown ʧ +#define NET_DVR_RTSP_TEARDOWNSERVERERR 446 //rtsp teardown ش״̬ + +#define NET_PLAYM4_NOERROR 500 //no error +#define NET_PLAYM4_PARA_OVER 501 //input parameter is invalid; +#define NET_PLAYM4_ORDER_ERROR 502 //The order of the function to be called is error. +#define NET_PLAYM4_TIMER_ERROR 503 //Create multimedia clock failed; +#define NET_PLAYM4_DEC_VIDEO_ERROR 504 //Decode video data failed. +#define NET_PLAYM4_DEC_AUDIO_ERROR 505 //Decode audio data failed. +#define NET_PLAYM4_ALLOC_MEMORY_ERROR 506 //Allocate memory failed. +#define NET_PLAYM4_OPEN_FILE_ERROR 507 //Open the file failed. +#define NET_PLAYM4_CREATE_OBJ_ERROR 508 //Create thread or event failed +#define NET_PLAYM4_CREATE_DDRAW_ERROR 509 //Create DirectDraw object failed. +#define NET_PLAYM4_CREATE_OFFSCREEN_ERROR 510 //failed when creating off-screen surface. +#define NET_PLAYM4_BUF_OVER 511 //buffer is overflow +#define NET_PLAYM4_CREATE_SOUND_ERROR 512 //failed when creating audio device. +#define NET_PLAYM4_SET_VOLUME_ERROR 513 //Set volume failed +#define NET_PLAYM4_SUPPORT_FILE_ONLY 514 //The function only support play file. +#define NET_PLAYM4_SUPPORT_STREAM_ONLY 515 //The function only support play stream. +#define NET_PLAYM4_SYS_NOT_SUPPORT 516 //System not support. +#define NET_PLAYM4_FILEHEADER_UNKNOWN 517 //No file header. +#define NET_PLAYM4_VERSION_INCORRECT 518 //The version of decoder and encoder is not adapted. +#define NET_PALYM4_INIT_DECODER_ERROR 519 //Initialize decoder failed. +#define NET_PLAYM4_CHECK_FILE_ERROR 520 //The file data is unknown. +#define NET_PLAYM4_INIT_TIMER_ERROR 521 //Initialize multimedia clock failed. +#define NET_PLAYM4_BLT_ERROR 522 //Blt failed. +#define NET_PLAYM4_UPDATE_ERROR 523 //Update failed. +#define NET_PLAYM4_OPEN_FILE_ERROR_MULTI 524 //openfile error, streamtype is multi +#define NET_PLAYM4_OPEN_FILE_ERROR_VIDEO 525 //openfile error, streamtype is video +#define NET_PLAYM4_JPEG_COMPRESS_ERROR 526 //JPEG compress error +#define NET_PLAYM4_EXTRACT_NOT_SUPPORT 527 //Don't support the version of this file. +#define NET_PLAYM4_EXTRACT_DATA_ERROR 528 //extract video data failed. + +//תװ +#define NET_CONVERT_ERROR_NOT_SUPPORT 581 //convert not support + +//Խ +#define NET_AUDIOINTERCOM_OK 600 //޴ +#define NET_AUDIOINTECOM_ERR_NOTSUPORT 601 //֧ +#define NET_AUDIOINTECOM_ERR_ALLOC_MEMERY 602 //ڴ +#define NET_AUDIOINTECOM_ERR_PARAMETER 603 // +#define NET_AUDIOINTECOM_ERR_CALL_ORDER 604 //ô +#define NET_AUDIOINTECOM_ERR_FIND_DEVICE 605 //δ豸 +#define NET_AUDIOINTECOM_ERR_OPEN_DEVICE 606 //ܴ豸 +#define NET_AUDIOINTECOM_ERR_NO_CONTEXT 607 //豸ij +#define NET_AUDIOINTECOM_ERR_NO_WAVFILE 608 //WAVļ +#define NET_AUDIOINTECOM_ERR_INVALID_TYPE 609 //ЧWAV +#define NET_AUDIOINTECOM_ERR_ENCODE_FAIL 610 //ʧ +#define NET_AUDIOINTECOM_ERR_DECODE_FAIL 611 //ʧ +#define NET_AUDIOINTECOM_ERR_NO_PLAYBACK 612 //ʧ +#define NET_AUDIOINTECOM_ERR_DENOISE_FAIL 613 //ʧ +#define NET_AUDIOINTECOM_ERR_UNKOWN 619 //δ֪ + +#define NET_QOS_OK 700 //no error +#define NET_QOS_ERROR (NET_QOS_OK - 1) //qos error +#define NET_QOS_ERR_INVALID_ARGUMENTS (NET_QOS_OK - 2) //invalid arguments +#define NET_QOS_ERR_SESSION_NOT_FOUND (NET_QOS_OK - 3) //session net found +#define NET_QOS_ERR_LIB_NOT_INITIALIZED (NET_QOS_OK - 4) //lib not initialized +#define NET_QOS_ERR_OUTOFMEM (NET_QOS_OK - 5) //outtofmem +#define NET_QOS_ERR_PACKET_UNKNOW (NET_QOS_OK - 10) //packet unknow +#define NET_QOS_ERR_PACKET_VERSION (NET_QOS_OK - 11) //packet version error +#define NET_QOS_ERR_PACKET_LENGTH (NET_QOS_OK - 12) //packet length error +#define NET_QOS_ERR_PACKET_TOO_BIG (NET_QOS_OK - 13) //packet too big +#define NET_QOS_ERR_SCHEDPARAMS_INVALID_BANDWIDTH (NET_QOS_OK - 20) //schedparams invalid bandwidth +#define NET_QOS_ERR_SCHEDPARAMS_BAD_FRACTION (NET_QOS_OK - 21) //schedparams bad fraction +#define NET_QOS_ERR_SCHEDPARAMS_BAD_MINIMUM_INTERVAL (NET_QOS_OK - 22) //schedparams bad minimum interval + +#define NET_ERROR_TRUNK_LINE 711 //ϵͳѱɸ +#define NET_ERROR_MIXED_JOINT 712 //ܽлƴ +#define NET_ERROR_DISPLAY_SWITCH 713 //ܽʾͨл +#define NET_ERROR_USED_BY_BIG_SCREEN 714 //Դռ +#define NET_ERROR_USE_OTHER_DEC_RESOURCE 715 //ʹϵͳԴ +#define NET_ERROR_DISP_MODE_SWITCH 716 //ʾͨʾ״̬л +#define NET_ERROR_SCENE_USING 717 //ʹ +#define NET_ERR_NO_ENOUGH_DEC_RESOURCE 718 //Դ +#define NET_ERR_NO_ENOUGH_FREE_SHOW_RESOURCE 719 //Դ +#define NET_ERR_NO_ENOUGH_VIDEO_MEMORY 720 //ԴԴ +#define NET_ERR_MAX_VIDEO_NUM 721 //һ϶Դ +#define NET_ERR_WIN_COVER_FREE_SHOW_AND_NORMAL 722 //ڿԽ˳ںͷdz +#define NET_ERR_FREE_SHOW_WIN_SPLIT 723 //Դڲַ֧ +#define NET_ERR_INAPPROPRIATE_WIN_FREE_SHOW 724 //Ĵڲֿ֧ +#define NET_DVR_TRANSPARENT_WIN_NOT_SUPPORT_SPLIT 725 //͸ȵĴڲַ֧ +#define NET_DVR_SPLIT_WIN_NOT_SUPPORT_TRANSPARENT 726 //Ĵڲ֧͸ +#define NET_ERR_MAX_LOGO_NUM 727 //logoﵽ +#define NET_ERR_MAX_WIN_LOOP_NUM 728 //Ѳﵽ +#define NET_ERR_VIRTUAL_LED_VERTICAL_CROSS 729 //LED +#define NET_ERR_MAX_VIRTUAL_LED_HEIGHT 730 //LED߶ȳ +#define NET_ERR_VIRTUAL_LED_ILLEGAL_CHARACTER 731 //LEDݰǷַ +#define NET_ERR_BASEMAP_NOT_EXIST 732 //ͼͼƬ +#define NET_ERR_LED_NOT_SUPPORT_VIRTUAL_LED 733 //LEDĻ֧LED +#define NET_ERR_LED_RESOLUTION_NOT_SUPPORT 734 //LEDֱʲ֧ +#define NET_ERR_PLAN_OVERDUE 735 //Ԥڣٵ +#define NET_ERR_PROCESSER_MAX_SCREEN_BLK 736 //źſԽĻ +#define NET_ERR_WND_SIZE_TOO_SMALL 737 //ڿ̫С +#define NET_ERR_WND_SPLIT_NOT_SUPPORT_ROAM 738 //ڲ֧ +#define NET_ERR_OUTPUT_ONE_BOARD_ONE_WALL 739 //ͬһӰֻܰ󶨵ͬһǽ +#define NET_ERR_WND_CANNOT_LCD_AND_LED_OUTPUT 740 //ڲͬʱLCDLED +#define NET_ERR_MAX_OSD_NUM 741 //OSDﵽ + +#define NET_SDK_CANCEL_WND_TOPKEEP_ATTR_FIRST 751 //ȡöִڵöԲܽõײ +#define NET_SDK_ERR_LED_SCREEN_CHECKING 752 //УLEDĻ +#define NET_SDK_ERR_NOT_SUPPORT_SINGLE_RESOLUTION 753 //LCD/LEDڰֵ֧֮ڵķֱ +#define NET_SDK_ERR_LED_RESOLUTION_MISMATCHED 754 //ڵLEDֱʺڵLEDֱʲƥ䣬Ҫͬеȸߡͬеȿ + + +#define NET_SDK_ERR_MAX_VIRTUAL_LED_WIDTH 755 //LEDȳޣֵСֵ +#define NET_SDK_ERR_MAX_VIRTUAL_LED_IN_SCREEN 756 //LED +#define NET_SDK_ERR_MAX_VIRTUAL_LED_IN_WALL 757 //ǽLED +#define NET_SDK_ERR_VIRTUAL_LED_OVERLAP 758 //LEDص +#define NET_SDK_ERR_VIRTUAL_LED_TYPE 759 //ʹ +#define NET_SDK_ERR_VIRTUAL_LED_COLOUR 760 //ɫ +#define NET_SDK_ERR_VIRTUAL_LED_MOVE_DIRECTION 761 //ƶ +#define NET_SDK_ERR_VIRTUAL_LED_MOVE_MODE 762 //ƶģʽ +#define NET_SDK_ERR_VIRTUAL_LED_MOVE_SPEED 763 //ƶٶȴ +#define NET_SDK_ERR_VIRTUAL_LED_DISP_MODE 764 //ʾģʽ +#define NET_SDK_ERR_VIRTUAL_LED_NO 765 //LEDŴ +#define NET_SDK_ERR_VIRTUAL_LED_PARA 766 //LEDô󣬰ṹ +#define NET_SDK_ERR_BASEMAP_POSITION 767 //ͼڿ߲ +#define NET_SDK_ERR_BASEMAP_PICTURE_LEN 768 //ͼͼƬȳ +#define NET_SDK_ERR_BASEMAP_PICTURE_RESOLUTION 769 //ͼͼƬֱʴ +#define NET_SDK_ERR_BASEMAP_PICTURE_FORMAT 770 //ͼͼƬʽ +#define NET_SDK_ERR_MAX_VIRTUAL_LED_NUM 771 //豸ֵ֧LED +#define NET_SDK_ERR_MAX_TIME_VIRTUAL_LED_IN_WALL 772 //ǽֵ֧ʱLED + +#define NET_ERR_TERMINAL_BUSY 780 //նæն˴ڻ + +#define NET_ERR_DATA_RETURNED_ILLEGAL 790 //豸صݲϷ +#define NET_DVR_FUNCTION_RESOURCE_USAGE_ERROR 791 //豸ռԴ¸ù޷ + +#define NET_DVR_ERR_IMPORT_EMPTY_FILE 792 //ļΪ +#define NET_DVR_ERR_IMPORT_TOO_LARGE_FILE 793 //ļ +#define NET_DVR_ERR_BAD_IPV4_ADDRESS 794 //IPV4ַЧ +#define NET_DVR_ERR_BAD_NET_MASK 795 //ַЧ +#define NET_DVR_ERR_INVALID_NET_GATE_ADDRESS 796 //صַЧ +#define NET_DVR_ERR_BAD_DNS 797 //DNSַЧ +#define NET_DVR_ERR_ILLEGAL_PASSWORD 798 //벻ܰû + +#define NET_DVR_DEV_NET_OVERFLOW 800 //豸 +#define NET_DVR_STATUS_RECORDFILE_WRITING_NOT_LOCK 801 //¼ļ¼޷ +#define NET_DVR_STATUS_CANT_FORMAT_LITTLE_DISK 802 //Ӳ̫С޷ʽ + +//N+1 +#define NET_SDK_ERR_REMOTE_DISCONNECT 803 //Զ޷ +#define NET_SDK_ERR_RD_ADD_RD 804 //ӱ +#define NET_SDK_ERR_BACKUP_DISK_EXCEPT 805 //쳣 +#define NET_SDK_ERR_RD_LIMIT 806 //Ѵ +#define NET_SDK_ERR_ADDED_RD_IS_WD 807 //ӵıǹ +#define NET_SDK_ERR_ADD_ORDER_WRONG 808 //˳ûбΪӹ +#define NET_SDK_ERR_WD_ADD_WD 809 //ӹ +#define NET_SDK_ERR_WD_SERVICE_EXCETP 810 //CVR쳣 +#define NET_SDK_ERR_RD_SERVICE_EXCETP 811 //CVR쳣 +#define NET_SDK_ERR_ADDED_WD_IS_RD 812 //ӵĹDZ +#define NET_SDK_ERR_PERFORMANCE_LIMIT 813 //ܴﵽ +#define NET_SDK_ERR_ADDED_DEVICE_EXIST 814 //ӵ豸Ѿ + +//Ѷ +#define NET_SDK_ERR_INQUEST_RESUMING 815 //Ѷָ +#define NET_SDK_ERR_RECORD_BACKUPING 816 //Ѷ +#define NET_SDK_ERR_DISK_PLAYING 817 //̻ط +#define NET_SDK_ERR_INQUEST_STARTED 818 //Ѷѿ +#define NET_SDK_ERR_LOCAL_OPERATING 819 //ز +#define NET_SDK_ERR_INQUEST_NOT_START 820 //Ѷδ +//Netra3.1.0 +#define NET_SDK_ERR_CHAN_AUDIO_BIND 821 //ͨδ󶨻Խʧ +//ƴ洢 +#define NET_DVR_N_PLUS_ONE_MODE 822 //豸ǰN+1ģʽ +#define NET_DVR_CLOUD_STORAGE_OPENED 823 //ƴ洢ģʽѿ + +#define NET_DVR_ERR_OPER_NOT_ALLOWED 824 //豸N+0ӹ״̬ò +#define NET_DVR_ERR_NEED_RELOCATE 825 //豸N+0ӹ״̬ҪȡضϢ² + +//ͥ +#define NET_SDK_ERR_IR_PORT_ERROR 830 //ڴ +#define NET_SDK_ERR_IR_CMD_ERROR 831 //ڵŴ +#define NET_SDK_ERR_NOT_INQUESTING 832 //豸ڷѶ״̬ +#define NET_SDK_ERR_INQUEST_NOT_PAUSED 833 //豸ڷͣ״̬ +#define NET_DVR_CHECK_PASSWORD_MISTAKE_ERROR 834 //У +#define NET_DVR_CHECK_PASSWORD_NULL_ERROR 835 //У벻Ϊ +#define NET_DVR_UNABLE_CALIB_ERROR 836 // ǰ޷궨 +#define NET_DVR_PLEASE_CALIB_ERROR 837 //ɱ궨 +#define NET_DVR_ERR_PANORAMIC_CAL_EMPTY 838 //Flashȫ궨Ϊ +#define NET_DVR_ERR_CALIB_FAIL_PLEASEAGAIN 839 //궨ʧܣ±궨(Calibration failed. Please calibrate again.) +#define NET_DVR_ERR_DETECTION_LINE 840 //ôùߣȷλںɫ(Please set detection line again. The detection line should be within the red count area.) +#define NET_DVR_ERR_TURN_OFF_IMAGE_PARA 841 //ȹرͼл(Please turn off the image parameters switch first.) +#define NET_DVR_EXCEED_FACE_IMAGES_ERROR 843 //ͼƬ +#define NET_DVR_ANALYSIS_FACE_IMAGES_ERROR 844 //ͼƬʶʧ +#define NET_ERR_ALARM_INPUT_OCCUPIED 845 //A<-1ڴץAlarm Input No. A<-1 is used to trigger vehicle capture. +#define NET_DVR_FACELIB_DATABASE_ERROR 846 //ݿ汾ƥ +#define NET_DVR_FACELIB_DATA_ERROR 847 //ݴ +#define NET_DVR_FACE_DATA_ID_ERROR 848 //PIDЧ +#define NET_DVR_FACELIB_ID_ERROR 849 //IDЧ +#define NET_DVR_EXCEED_FACE_LIBARY_ERROR 850 // +#define NET_DVR_PIC_ANALYSIS_NO_TARGET_ERROR 851 //ͼƬδʶĿ +#define NET_DVR_SUBPIC_ANALYSIS_MODELING_ERROR 852 //ͼģʧ +#define NET_DVR_PIC_ANALYSIS_NO_RESOURCE_ERROR 853 //޶Ӧܷ֧ͼƬʶ +#define NET_DVR_ANALYSIS_ENGINES_NO_RESOURCE_ERROR 854//޷Դ +#define NET_DVR_ANALYSIS_ENGINES_USAGE_EXCEED_ERROR 855//ʹʳɣѴ100% +#define NET_DVR_EXCEED_HUMANMISINFO_FILTER_ENABLED_ERROR 856 //ȥͨ +#define NET_DVR_NAME_ERROR 857 //ƴ +#define NET_DVR_NAME_EXIST_ERROR 858 //Ѵ +#define NET_DVR_FACELIB_PIC_IMPORTING_ERROR 859 //⵼ͼƬ +#define NET_DVR_ERR_CALIB_POSITION 860 //궨λó˶Χ +#define NET_DVR_ERR_DELETE 861 //޷ɾ +#define NET_DVR_ERR_SCENE_ID 862 //IDЧ +#define NET_DVR_ERR_CALIBING 863 //궨 +#define NET_DVR_PIC_FORMAT_ERROR 864 //ͼƬʽ +#define NET_DVR_PIC_RESOLUTION_INVALID_ERROR 865 //ͼƬֱЧ +#define NET_DVR_PIC_SIZE_EXCEED_ERROR 866 //ͼƬ +#define NET_DVR_PIC_ANALYSIS_TARGRT_NUM_EXCEED_ERROR 867 //ͼƬĿ +#define NET_DVR_ANALYSIS_ENGINES_LOADING_ERROR 868//ʼ +#define NET_DVR_ANALYSIS_ENGINES_ABNORMA_ERROR 869//쳣 +#define NET_DVR_ANALYSIS_ENGINES_FACELIB_IMPORTING 870//ڵ +#define NET_DVR_NO_DATA_FOR_MODELING_ERROR 871 //޴ģ +#define NET_DVR_FACE_DATA_MODELING_ERROR 872 //豸ڽͼƬģֲ֧ +#define NET_ERR_FACELIBDATA_OVERLIMIT 873 //豸ֵ֧ƣݣ +#define NET_DVR_ANALYSIS_ENGINES_ASSOCIATED_CHANNEL 874//ѹͨ +#define NET_DVR_ERR_CUSTOMID_LEN 875 //ϲԶIDijС32ַ +#define NET_DVR_ERR_CUSTOMFACELIBID_REPEAT 876 //ϲ·ظԶID +#define NET_DVR_ERR_CUSTOMHUMANID_REPEAT 877 //ϲ·ظԶԱID +#define NET_DVR_ERR_URL_DOWNLOAD_FAIL 878 //urlʧ +#define NET_DVR_ERR_URL_DOWNLOAD_NOTSTART 879 //urlδʼ + +#define NET_DVR_CFG_FILE_SECRETKEY_ERROR 880 //ļȫУԿ +#define NET_DVR_WDR_NOTDISABLE_ERROR 881 //ȹرͨǰҹתģʽµĿ̬ +#define NET_DVR_HLC_NOTDISABLE_ERROR 882 //ȹرͨǰҹתģʽµǿ + +#define NET_DVR_THERMOMETRY_REGION_OVERSTEP_ERROR 883 //Խ + + +#define NET_DVR_ERR_MODELING_DEVICEINTERNAL 884 //ģʧܣ豸ڲ +#define NET_DVR_ERR_MODELING_FACE 885 //ģʧܣģ +#define NET_DVR_ERR_MODELING_FACEGRADING 886 //ģʧܣִ +#define NET_DVR_ERR_MODELING_FACEGFEATURE 887 //ģʧܣȡ +#define NET_DVR_ERR_MODELING_FACEGANALYZING 888 //ģʧܣȡ + +#define NET_DVR_ERR_STREAM_LIMIT 889 //ܳޣȡ· +#define NET_DVR_ERR_STREAM_DESCRIPTION 890 // +#define NET_DVR_ERR_STREAM_DELETE 891 //ʹ޷ɾ +#define NET_DVR_ERR_CUSTOMSTREAM_NAME 892 //ԶΪջ򲻺Ϸ +#define NET_DVR_ERR_CUSTOMSTREAM_NOTEXISTED 893 //Զ + +#define NET_DVR_ERR_TOO_SHORT_CALIBRATING_TIME 894 //궨ʱ̫ +#define NET_DVR_ERR_AUTO_CALIBRATE_FAILED 895 //Զ궨ʧ +#define NET_DVR_ERR_VERIFICATION_FAILED 896 //Уʧ + +#define NET_DVR_NO_TEMP_SENSOR_ERROR 897 //¶ȴ +#define NET_DVR_PUPIL_DISTANCE_OVERSIZE_ERROR 898 //ͫ +#define NET_DVR_ERR_UNOPENED_FACE_SNAP 899 //Чȿץ +//2011-10-25루900-950 +#define NET_ERR_CUT_INPUTSTREAM_OVERLIMIT 900 //źԴüֵ +#define NET_ERR_WINCHAN_IDX 901 // ͨŴ +#define NET_ERR_WIN_LAYER 902 // ڲ󣬵ĻาǵĴڲ +#define NET_ERR_WIN_BLK_NUM 903 // ڵĿ󣬵ڿɸǵĻ +#define NET_ERR_OUTPUT_RESOLUTION 904 // ֱʴ +#define NET_ERR_LAYOUT 905 // ֺŴ +#define NET_ERR_INPUT_RESOLUTION 906 // ֱʲ֧ +#define NET_ERR_SUBDEVICE_OFFLINE 907 // 豸 +#define NET_ERR_NO_DECODE_CHAN 908 // ûпнͨ +#define NET_ERR_MAX_WINDOW_ABILITY 909 // , ֲʽн豸޻ʾ޵ +#define NET_ERR_ORDER_ERROR 910 // ˳ +#define NET_ERR_PLAYING_PLAN 911 // ִԤ +#define NET_ERR_DECODER_USED 912 // ʹ +#define NET_ERR_OUTPUT_BOARD_DATA_OVERFLOW 913 // +#define NET_ERR_SAME_USER_NAME 914 // ûͬ +#define NET_ERR_INVALID_USER_NAME 915 // Чû +#define NET_ERR_MATRIX_USING 916 // ʹ +#define NET_ERR_DIFFERENT_CHAN_TYPE 917 // ͨͲͬͨͿΪͬͣ +#define NET_ERR_INPUT_CHAN_BINDED 918 // ͨѾ +#define NET_ERR_BINDED_OUTPUT_CHAN_OVERFLOW 919 // ʹõľͨ󶨵ͨ +#define NET_ERR_MAX_SIGNAL_NUM 920 // źԴﵽ +#define NET_ERR_INPUT_CHAN_USING 921 // ͨʹ +#define NET_ERR_MANAGER_LOGON 922 // ԱѾ½ʧ +#define NET_ERR_USERALREADY_LOGON 923 // ûѾ½ʧ +#define NET_ERR_LAYOUT_INIT 924 // ڳʼʧ +#define NET_ERR_BASEMAP_SIZE_NOT_MATCH 925 // ͼС +#define NET_ERR_WINDOW_OPERATING 926 // ִβʧ +#define NET_ERR_SIGNAL_UPLIMIT 927 // źԴﵽ +#define NET_ERR_SIGNAL_MAX_ENLARGE_TIMES 928 // źԴŴ +#define NET_ERR_ONE_SIGNAL_MULTI_CROSS 929 // źԴܶο +#define NET_ERR_ULTRA_HD_SIGNAL_MULTI_WIN 930 // źԴظ +#define NET_ERR_MAX_VIRTUAL_LED_WIDTH 931 //LEDȴֵ +#define NET_ERR_MAX_VIRTUAL_LED_WORD_LEN 932 //LEDֵַ +#define NET_ERR_SINGLE_OUTPUTPARAM_CONFIG 933//ֵ֧ʾ +#define NET_ERR_MULTI_WIN_BE_COVER 934//ڱ +#define NET_ERR_WIN_NOT_EXIST 935 //ڲ +#define NET_ERR_WIN_MAX_SIGNALSOURCE 936//źԴֵ +#define NET_ERR_MULTI_WIN_MOVE 937//Զƶ +#define NET_ERR_MULTI_WIN_YPBPR_SDI 938 // YPBPR SDIźԴ֧9/16 +#define NET_ERR_DIFF_TYPE_OUTPUT_MIXUSE 939 //ͬ +#define NET_ERR_SPLIT_WIN_CROSS 940//Կڷ +#define NET_ERR_SPLIT_WIN_NOT_FULL_SCREEN 941 //δڷ +#define NET_ERR_SPLIT_WIN_MANY_WIN 942 //ԵжڵĴڷ +#define NET_ERR_WINDOW_SIZE_OVERLIMIT 943 //ڴС +#define NET_ERR_INPUTSTREAM_ALREADY_JOINT 944 //źԴѼƴ +#define NET_ERR_JOINT_INPUTSTREAM_OVERLIMIT 945 //ƴźԴ + +#define NET_ERR_LED_RESOLUTION 946 //LED ֱʴֱ +#define NET_ERR_JOINT_SCALE_OVERLIMIT 947 //ƴźԴĹģ +#define NET_ERR_INPUTSTREAM_ALREADY_DECODE 948 //źԴǽ +#define NET_ERR_INPUTSTREAM_NOTSUPPORT_CAPTURE 949 //źԴ֧ץͼ +#define NET_ERR_JOINT_NOTSUPPORT_SPLITWIN 950 //źԴַ֧ + +//루951-999 +#define NET_ERR_MAX_WIN_OVERLAP 951 //ﵽ󴰿ص +#define NET_ERR_STREAMID_CHAN_BOTH_VALID 952 //stream IDͨͬʱЧ +#define NET_ERR_NO_ZERO_CHAN 953 //豸ͨ +#define NEED_RECONNECT 955 //Ҫضתϵͳʹã +#define NET_ERR_NO_STREAM_ID 956 //ID +#define NET_DVR_TRANS_NOT_START 957 //תδ +#define NET_ERR_MAXNUM_STREAM_ID 958 //IDﵽ +#define NET_ERR_WORKMODE_MISMATCH 959 //ģʽƥ +#define NET_ERR_MODE_IS_USING 960 //ѹڵǰģʽ +#define NET_ERR_DEV_PROGRESSING 961 //豸ڴ +#define NET_ERR_PASSIVE_TRANSCODING 962 //ڱת + +#define NET_ERR_RING_NOT_CONFIGURE 964 //δ + +#define NET_ERR_CLOSE_WINDOW_FIRST 971 //лȫ֡ʳʱȹرնӦǽĴ +#define NET_ERR_SPLIT_WINDOW_NUM_NOT_SUPPORT 972 //VGA/DVI/DP/HDMI/HDBase_TԴȫ֡ʳ²֧9/16 +#define NET_ERR_REACH_ONE_SIGNAL_PREVIEW_MAX_LINK 973 //źԴ +#define NET_ERR_ONLY_SPLITWND_SUPPORT_AMPLIFICATION 974 //ֻз֧ӴڷŴ +#define NET_DVR_ERR_WINDOW_SIZE_PLACE 975 //λô +#define NET_DVR_ERR_RGIONAL_RESTRICTIONS 976 //Ļ볬 +#define NET_ERR_WNDZOOM_NOT_SUPPORT 977 //ڲ֧Ӵȫ +#define NET_ERR_LED_SCREEN_SIZE 978 //LED߲ȷ +#define NET_ERR_OPEN_WIN_IN_ERROR_AREA 979 //ڷǷ򿪴(LCD/LED) +#define NET_ERR_TITLE_WIN_NOT_SUPPORT_MOVE 980 //ƽģʽ֧ +#define NET_ERR_TITLE_WIN_NOT_SUPPORT_COVER 981 //ƽģʽ֧ͼ㸲 +#define NET_ERR_TITLE_WIN_NOT_SUPPORT_SPLIT 982 //ƽģʽַ֧ +#define NET_DVR_LED_WINDOWS_ALREADY_CLOSED 983 //LEDڵķֱʷ仯豸ѹرոڵLED +#define NET_DVR_ERR_CLOSE_WINDOWS 984 //ʧܣȹرմ +#define NET_DVR_ERR_MATRIX_LOOP_ABILITY 985 //Ѳ +#define NET_DVR_ERR_MATRIX_LOOP_TIME 986 //Ѳʱ䲻֧ +#define NET_DVR_ERR_LINKED_OUT_ABILITY 987 //ͨ +#define NET_ERR_REACH_SCENE_MAX_NUM 988 //ﵽ +#define NET_ERR_SCENE_MEM_NOT_ENOUGH 989 //ڴ治㣬޷½ +#define NET_ERR_RESOLUTION_NOT_SUPPORT_ODD_VOUT 990 //ڲָ֧÷ֱ +#define NET_ERR_RESOLUTION_NOT_SUPPORT_EVEN_VOUT 991 //żڲָ֧÷ֱ + +#define NET_DVR_CANCEL_WND_OPENKEEP_ATTR_FIRST 992 //ҪȡԲܱر +#define NET_SDK_LED_MODE_NOT_SUPPORT_SPLIT 993 //LEDģʽ²ִ֧ڷ +#define NET_ERR_VOICETALK_ONLY_SUPPORT_ONE_TALK 994 //ͬʱֻ֧һ·Խ +#define NET_ERR_WND_POSITION_ADJUSTED 995 //λñ豸ϲҪ»ȡ´λ +#define NET_SDK_ERR_STARTTIME_CANNOT_LESSTHAN_CURTIME 996 //ʼʱ䲻Сڵǰʱ +#define NET_SDK_ERR_NEED_ADJUST_PLAN 997 //ѱԤȽóԤɾ +#define NET_ERR_UnitConfig_Failed 998 //õλͳһѡʱõĵλϵͳµĵλͬصλô + +// +#define XML_ABILITY_NOTSUPPORT 1000 //֧ڵȡ +#define XML_ANALYZE_NOENOUGH_BUF 1001 //ڴ治 +#define XML_ANALYZE_FIND_LOCALXML_ERROR 1002 //޷ҵӦıxml +#define XML_ANALYZE_LOAD_LOCALXML_ERROR 1003 //رxml +#define XML_NANLYZE_DVR_DATA_FORMAT_ERROR 1004 //豸ݸʽ +#define XML_ANALYZE_TYPE_ERROR 1005 //ʹ +#define XML_ANALYZE_XML_NODE_ERROR 1006 //XMLڵʽ +#define XML_INPUT_PARAM_ERROR 1007 //XMLڵֵ + +#define NET_DVR_ERR_RETURNED_XML_DATA 1008 //豸صXML + +//Դ +#define NET_ERR_LEDAREA_EXIST_WINDOW 1051 //LEDдڴ(LEDѾдڴڣ޸LED +#define NET_ERR_AUDIO_EXIST 1052 //ϴƵ +#define NET_ERR_MATERIAL_NAME_EXIST 1053 //زѴ +#define NET_ERR_MATERIAL_APPROVE_STATE 1054 //ز״̬ +#define NET_ERR_DATAHD_SIGNAL_FORMAT 1055 //ʹõӲ̲ʽ + +#define NET_ERR_SCENE_SWITCHING 1056 //л +#define NER_ERR_DATA_TRANSFER 1057 //豸ת +#define NET_ERR_DATA_RESTORE 1058 //豸ݻԭ +#define NET_ERR_CHECK_NOT_ENABLE 1059 //Уʹδ +#define NET_ERR_AREA_OFFLINE 1060 // +#define NET_ERR_SCREEN_TYPE 1061 //ĻͲƥ +#define NET_ERR_MIN_OPERATE_UNIT 1062 //СԪƥ +#define NET_ERR_MAINHD_NOT_BACKUP 1063 //һλϵֹ̣̣ͨóɱ +#define NET_ERR_ONE_BACKUP_HD 1064 //ñʱ豸һͨ +#define NET_ERR_CONNECT_SUB_SYSTEM_ABNORMAL 1065 //ϵͳ쳣 +#define NET_ERR_SERIAL_PORT_VEST 1066 //Ĵڹ +#define NET_ERR_BLOCKLIST_FULL 1067 //б +#define NET_ERR_NOT_MATCH_SOURCE 1068 //ƥźԴ +#define NET_ERR_CLOCK_VIRTUAL_LED_FULL 1069 //ʱӹܵLED +#define NET_ERR_MAX_WIN_SIGNAL_LOOP_NUM 1070 //ѲźԴѴ +#define NET_ERR_RESOLUTION_NO_MATCH_FRAME 1071 //ֱ뵱ǰ֡ƥ +#define NET_ERR_NOT_UPDATE_LOW_VERSION 1072 //֧Ͱ汾 +#define NET_ERR_NO_CUSTOM_TO_UPDATE 1073 //ǶƳ޷ +#define NET_ERR_CHAN_RESOLUTION_NOT_SUPPORT_SPLIT 1074 //ڷֱʲַ֧ +#define NET_ERR_HIGH_DEFINITION_NOT_SUPPORT_SPLIT 1075 //岻֧9/16ָ +#define NET_ERR_MIRROR_IMAGE_BY_VIDEO_WALL 1076 //ǽ +#define NET_ERR_MAX_OSD_FONT_SIZE 1077 //OSDַ֧ +#define NET_ERR_HIGH_DEFINITION_NOT_SUPPORT_VIDEO_SET 1078 //岻֧Ƶ +#define NET_ERR_TILE_MODE_NOT_SUPPORT_JOINT 1079 //ƽģʽ֧ƴӴ +#define NET_ERR_ADD_AUDIO_MATRIX_FAILED 1080 //Ƶʧ +#define NET_ERR_ONE_VIRTUAL_LED_AREA_BIND_ONE_AUDIO_AREA 1081 //һLEDֻܰһƵ +#define NET_ERR_NAT_NOT_MODIFY_SERVER_NETWORK_PARAM 1082 //NAT޷޸ķ +#define NET_ERR_ORIGINAL_CHECH_DATA_ERROR 1083 //ԭʼУݴ +#define NET_ERR_INPUT_BOARD_SPLICED_IN_DIFFERENT_NETWORKAREAS 1084 //ͬ岻ƴ +#define NET_ERR_SPLICINGSOURCE_ONWALL_IN_DIFFERENT_NETWORKAREAS 1085 //ͬƴԴǽ +#define NET_ERR_ONWALL_OUTPUTBOARD_MODIFY_NETWORKAREAS 1086 //Ѱڵǽϵ岻޸ +#define NET_ERR_LAN_AND_WAN_CANNOT_SAME_NET_SEGMENT 1087 //LANIPWANIPܴͬһ +#define NET_ERR_USERNAME_REPETITIVE 1088 //ûظ +#define NET_ERR_ASSOCIATED_SAMEWALL_IN_DIFFERENT_NETWORKAREAS 1089 //ͬڲܹͬһǽ +#define NET_ERR_BASEMAP_ROAM_IN_LED_AREA 1090 //LEDͼ +#define NET_ERR_VIRTUAL_LED_NOT_SUPPORT_4K_OUTPUT 1091 //LED֧4Kʾ +#define NET_ERR_BASEMAP_NOT_SUPPORT_4K_OUTPUT 1092 //ͼ֧4Kʾ +#define NET_ERR_MIN_BLOCK_IN_VIRTUAL_LED_AND_OUTPUT 1093 //LEDཻС +#define NET_ERR_485FIlE_VERSION_INVALID 1094 //485ļ汾Ч +#define NET_ERR_485FIlE_CHECK_ERROR 1095 //485ļУ +#define NET_ERR_485FIlE_ABNORMAL_SIZE 1096 //485ļС쳣Ч +#define NET_ERR_MODIFY_SUBBOARD_NETCFG_IN_NAT 1097 //NAT޷޸Ӱ +#define NET_ERR_OSD_CONTENT_WITH_ILLEGAL_CHARACTERS 1098 //OSDݰǷַ +#define NET_ERR_NON_SLAVE_DEVICE_INSERT_SYNC_LINE 1099 //Ǵ豸ֹͬ +//ô루11001200 +#define NET_ERR_PLT_USERID 1100 //֤ƽ̨userid +#define NET_ERR_TRANS_CHAN_START 1101 //͸ͨѴ򿪣ǰ޷ +#define NET_ERR_DEV_UPGRADING 1102 //豸 +#define NET_ERR_MISMATCH_UPGRADE_PACK_TYPE 1103 //Ͳƥ +#define NET_ERR_DEV_FORMATTING 1104 //豸ڸʽ +#define NET_ERR_MISMATCH_UPGRADE_PACK_VERSION 1105 //汾ƥ +#define NET_ERR_PT_LOCKED 1106 //PT + +#define NET_DVR_LOGO_OVERLAY_WITHOUT_UPLOAD_PIC 1110 //logoʧܣûϴlogoͼƬ +#define NET_DVR_ERR_ILLEGAL_VERIFICATION_CODE 1111 //Ϸ֤ +#define NET_DVR_ERR_LACK_VERIFICATION_CODE 1112 //ȱ֤ +#define NET_DVR_ERR_FORBIDDEN_IP 1113 //IPַѱֹ(豸ֵ֧IPַ˹) +#define NET_DVR_ERR_UNLOCKPTZ 1114 //Ч̨ +#define NET_DVR_ERR_COUNTAREA_LARGE 1116 //ƴ豸ֵ +#define NET_DVR_ERR_LABEL_ID_EXCEED 1117//ǩID +#define NET_DVR_ERR_LABEL_TYPE 1118//ǩʹ +#define NET_DVR_ERR_LABEL_FULL 1119//ǩ +#define NET_DVR_ERR_LABEL_DISABLED 1120//ǩδʹ +#define NET_DVR_ERR_DOME_PT_TRANS_TO_DOME_XY 1121//PTתXYʧ +#define NET_DVR_ERR_DOME_PT_TRANS_TO_PANORAMA_XY 1122//PTתȫXYʧ +#define NET_DVR_ERR_PANORAMA_XY_TRANS_TO_DOME_PT 1123//ȫXYתPT +#define NET_DVR_ERR_SCENE_DUR_TIME_LESS_THAN_INTERV_TIME 1124//ͣʱҪڼ +#define NET_DVR_ERR_HTTP_BKN_EXCEED_ONE 1125//ֻ֧һ· +#define NET_DVR_ERR_DELETING_FAILED_TURN_OFF_HTTPS_ESDK_WEBSOCKETS_FIRST 1126//ɾʧܣȹرHTTPSеǿSDKWebSockets +#define NET_DVR_ERR_DELETING_FAILED_TURN_OFF_HTTPS_ESDK_FIRST 1127//ɾʧܣȹرHTTPSеǿSDK +#define NET_DVR_ERR_PTZ_OCCUPIED_PRIORITY 1128// иȼ̨Ȩû +#define NET_DVR_ERR_INCORRECT_VIDEOAUDIO_ID 1129// ƵͨIDͨID +#define NET_DVR_ERR_REPETITIONTIME_OVER_MAXIMUM 1130// ȥʱ󲻳ֵ +#define NET_DVR_ERR_FORMATTING_FAILED 1131// ʽ +#define NET_DVR_ERR_ENCRYPTED_FORMATTING_FAILED 1132// ܸʽʧܣ +#define NET_DVR_ERR_WRONG_PASSWORD 1133// ,ȷ루SD Уʧܣ +#define NET_DVR_ERR_EXPOSURE_SYNC 1134// ͷعͬѿֶRGB + +//2012-10-16 豸루1200~1300 +#define NET_ERR_SEARCHING_MODULE 1201 // ģ +#define NET_ERR_REGISTERING_MODULE 1202 // עģ +#define NET_ERR_GETTING_ZONES 1203 // ڻȡ +#define NET_ERR_GETTING_TRIGGERS 1204 // ڻȡ +#define NET_ERR_ARMED_STATUS 1205 // ϵͳڲ״̬ +#define NET_ERR_PROGRAM_MODE_STATUS 1206 // ϵͳڱģʽ +#define NET_ERR_WALK_TEST_MODE_STATUS 1207 // ϵͳڲģʽ +#define NET_ERR_BYPASS_STATUS 1208 // ·״̬ +#define NET_ERR_DISABLED_MODULE_STATUS 1209 // δʹ +#define NET_ERR_NOT_SUPPORT_OPERATE_ZONE 1210 // ָ֧ò +#define NET_ERR_NOT_SUPPORT_MOD_MODULE_ADDR 1211 // ģַܱ޸ +#define NET_ERR_UNREGISTERED_MODULE 1212 // ģδע +#define NET_ERR_PUBLIC_SUBSYSTEM_ASSOCIATE_SELF 1213 // ϵͳ +#define NET_ERR_EXCEEDS_ASSOCIATE_SUBSYSTEM_NUM 1214 // ϵͳ +#define NET_ERR_BE_ASSOCIATED_BY_PUBLIC_SUBSYSTEM 1215 // ϵͳϵͳ +#define NET_ERR_ZONE_FAULT_STATUS 1216 // ڹ״̬ +#define NET_ERR_SAME_EVENT_TYPE 1217 // ¼¼رͬ¼ +#define NET_ERR_ZONE_ALARM_STATUS 1218 // ڱ״̬ +#define NET_ERR_EXPANSION_BUS_SHORT_CIRCUIT 1219 //չ߶· +#define NET_ERR_PWD_CONFLICT 1220 //ͻ +#define NET_ERR_DETECTOR_GISTERED_BY_OTHER_ZONE 1221 //̽ѱע +#define NET_ERR_DETECTOR_GISTERED_BY_OTHER_PU 1222 //̽ѱע +#define NET_ERR_DETECTOR_DISCONNECT 1223 //̽ +#define NET_ERR_CALL_BUSY 1224 //豸ͨ +#define NET_DVR_ERR_ZONE_TAMPER_STAUS 1225 //ڷ״̬ +#define NET_DVR_ERR_WIRELESS_DEV_REGISTER 1226 //ѱע +#define NET_DVR_ERR_WIRELESS_DEV_ADDED 1227 //ѱ +#define NET_DVR_ERR_WIRELESS_DEV_OFFLINE 1228 //費 +#define NET_DVR_ERR_WIRELESS_DEV_TAMPER_STATUS 1229 //账ڷ״̬ +#define NET_DVR_ERR_GPRS_PHONE_CONFLICT 1230 //绰߱ijͻ +#define NET_ERR_INIT_PASSWORD_NOT_MODIFY 1231 //ʼδ޸ģ޷װ/Աûڳʼδ޸ʱ޸û⣬ظô +#define NET_ERR_USER_DISABLED 1232 //ûδ +#define NET_ERR_DEVICE_DEBUGGING 1233 //ǰ豸ڵģʽ +//Ϣ +#define NET_ERR_GET_ALL_RETURN_OVER 1300 //ȡзĿ +#define NET_ERR_RESOURCE_USING 1301 //ϢԴʹã޸ +#define NET_ERR_FILE_SIZE_OVERLIMIT 1302 //ļС + +//Ϣ +#define NET_ERR_MATERIAL_NAME 1303 //زƷǷ +#define NET_ERR_MATERIAL_NAME_LEN 1304 //زƳȷǷ +#define NET_ERR_MATERIAL_REMARK 1305 //زǷ +#define NET_ERR_MATERIAL_REMARK_LEN 1306 //زȷǷ +#define NET_ERR_MATERIAL_SHARE_PROPERTY 1307 //زĹԷǷ +#define NET_ERR_UNSUPPORT_MATERIAL_TYPE 1308 //زͲ֧ +#define NET_ERR_MATERIAL_NOT_EXIST 1309 //زIJ +#define NET_ERR_READ_FROM_DISK 1310 //Ӳ̶ȡزļʧ +#define NET_ERR_WRITE_TO_DISK 1311 //Ӳдزļʧ +#define NET_ERR_WRITE_DATA_BASE 1312 //زдݿʧ +#define NET_ERR_NO_APPROVED_NOT_EXPORT 1313 //δݽֹ +#define NET_ERR_MATERIAL_EXCEPTION 1314 //ز쳣 +#define NET_ERR_NO_MISINFO 1315 //Ϣ +#define NET_ERR_LAN_NOT_SUP_DHCP_CLIENT_CONFIGURATION 1316 //·ģʽ£DHCPͻ˷ش +#define NET_ERR_VIDEOWALL_OPTPORT_RESOLUTION_INCONSISTENT 1317 //ǽϸڷֱʲһ(ҪֱΪ4K쳣ʱ) +#define NET_ERR_VIDEOWALL_OPTPORT_RESOLUTION_INCONSISTENT_UNBIND_OPTPORT_FIRST 1318 //ǽϸڷֱʲһ£Ƚ(Ҫڰڳ쳣ʱ) +#define NET_ERR_FOUR_K_OUTPUT_RESOLUTION_UNSUPPORT_NINE_TO_SIXTEEN_SPLIT_SCREEN 1319 //4Kֱʲ֧9/16 +#define NET_ERR_SIGNAL_SOURCE_UNSUPPORT_CUSTOM_RESOLUTION 1320 //źԴָ֧Զֱ +#define NET_ERR_DVI_UNSUPPORT_FOURK_OUTPUT_RESOLUTION 1321 //DVI֧4Kֱ +#define NET_ERR_BNC_UNSUPPORT_SOURCE_CROPPING 1322 //BNC֧źԴü +#define NET_ERR_OUTPUT_NOT_SUPPORT_VIDEOWALL_RESOLUTION 1323 //ڲֵ֧ǽֱ + +// +#define NET_ERR_MAX_SCREEN_CTRL_NUM 1351 //Ļﵽ +#define NET_ERR_FILE_NOT_EXIST 1352 //ļ +#define NET_ERR_THUMBNAIL_NOT_EXIST 1353 //ͼ +#define NET_ERR_DEV_OPEN_FILE_FAIL 1354 //豸˴ļʧ +#define NET_ERR_SERVER_READ_FILE_FAIL 1355 //豸˶ȡļʧ +#define NET_ERR_FILE_SIZE 1356 //ļС +#define NET_ERR_FILE_NAME 1357 //ļƴΪջ򲻺Ϸ + +//ֶδ루1351-1400 +#define NET_ERR_BROADCAST_BUSY 1358 //豸ڹ㲥 + +//2012-12-20ץĻ루1400-1499 +#define NET_DVR_ERR_LANENUM_EXCEED 1400 // +#define NET_DVR_ERR_PRAREA_EXCEED 1401 //ʶ +#define NET_DVR_ERR_LIGHT_PARAM 1402 //źŵƽ +#define NET_DVR_ERR_LANE_LINE_INVALID 1403 //ô +#define NET_DVR_ERR_STOP_LINE_INVALID 1404 //ֹͣô +#define NET_DVR_ERR_LEFTORRIGHT_LINE_INVALID 1405 ///תֽô +#define NET_DVR_ERR_LANE_NO_REPEAT 1406 //ӳظ +#define NET_DVR_ERR_PRAREA_INVALID 1407 //ʶβҪ +#define NET_DVR_ERR_LIGHT_NUM_EXCEED 1408 //Ƶ⽻ͨźŵĿֵ +#define NET_DVR_ERR_SUBLIGHT_NUM_INVALID 1409 //Ƶ⽻ͨźŵӵĿϷ +#define NET_DVR_ERR_LIGHT_AREASIZE_INVALID 1410 //Ƶ⽻ͨźŵƿСϷ +#define NET_DVR_ERR_LIGHT_COLOR_INVALID 1411 //Ƶ⽻ͨźŵɫϷ +#define NET_DVR_ERR_LIGHT_DIRECTION_INVALID 1412 //Ƶ⽻ͨƷԲϷ +#define NET_DVR_ERR_LACK_IOABLITY 1413 //IOʵֵ֧ + +#define NET_DVR_ERR_FTP_PORT 1414 //FTP˿ںŷǷ˿ںظ쳣 +#define NET_DVR_ERR_FTP_CATALOGUE 1415 //FTPĿ¼Ƿö༶Ŀ¼༶Ŀ¼ֵΪգ +#define NET_DVR_ERR_FTP_UPLOAD_TYPE 1416 //FTPϴͷǷftpֻ֧ȫ/˫ftpֻֿ֧ںΥ£ +#define NET_DVR_ERR_FLASH_PARAM_WRITE 1417 //òʱдFLASHʧ +#define NET_DVR_ERR_FLASH_PARAM_READ 1418 //òʱFLASHʧ +#define NET_DVR_ERR_PICNAME_DELIMITER 1419 //FTPͼƬָǷ +#define NET_DVR_ERR_PICNAME_ITEM 1420 //FTPͼƬǷ ָ +#define NET_DVR_ERR_PLATE_RECOGNIZE_TYPE 1421 //ʶͷǷ κͶЧУ飩 +#define NET_DVR_ERR_CAPTURE_TIMES 1422 //ץĴǷ Чֵ05 +#define NET_DVR_ERR_LOOP_DISTANCE 1423 //ȦǷ Чֵ02000ms +#define NET_DVR_ERR_LOOP_INPUT_STATUS 1424 //Ȧ״̬Ƿ Чֵ +#define NET_DVR_ERR_RELATE_IO_CONFLICT 1425 //IOͻ +#define NET_DVR_ERR_INTERVAL_TIME 1426 //ļʱǷ 06000ms +#define NET_DVR_ERR_SIGN_SPEED 1427 //־ֵǷ󳵱־ٲܴС־ +#define NET_DVR_ERR_PIC_FLIP 1428 //ͼ÷ת ýӰ죩 +#define NET_DVR_ERR_RELATE_LANE_NUMBER 1429 // (ظ ЧֵУ199) +#define NET_DVR_ERR_TRIGGER_MODE 1430 //ץĻģʽǷ +#define NET_DVR_ERR_DELAY_TIME 1431 //ʱʱ(2000ms) +#define NET_DVR_ERR_EXCEED_RS485_COUNT 1432 //485 +#define NET_DVR_ERR_RADAR_TYPE 1433 //״ʹ +#define NET_DVR_ERR_RADAR_ANGLE 1434 //״Ƕȴ +#define NET_DVR_ERR_RADAR_SPEED_VALID_TIME 1435 //״Чʱ +#define NET_DVR_ERR_RADAR_LINE_CORRECT 1436 //״Խ +#define NET_DVR_ERR_RADAR_CONST_CORRECT 1437 //״ﳣ +#define NET_DVR_ERR_RECORD_PARAM 1438 //¼ЧԤ¼ʱ䲻10s +#define NET_DVR_ERR_LIGHT_WITHOUT_COLOR_AND_DIRECTION 1439 //ƵźŵźŵƸûйѡźŵƷɫ +#define NET_DVR_ERR_LIGHT_WITHOUT_DETECTION_REGION 1440 //ƵźŵźŵƸûл +#define NET_DVR_ERR_RECOGNIZE_PROVINCE_PARAM 1441 //ʶʡݲĺϷ + +#define NET_DVR_ERR_SPEED_TIMEOUT 1442 //IOٳʱʱǷЧֵ0 +#define NET_DVR_ERR_NTP_TIMEZONE 1443 //ntpʱ +#define NET_DVR_ERR_NTP_INTERVAL_TIME 1444 //ntpУʱ +#define NET_DVR_ERR_NETWORK_CARD_NUM 1445 //Ŀ +#define NET_DVR_ERR_DEFAULT_ROUTE 1446 //Ĭ·ɴ +#define NET_DVR_ERR_BONDING_WORK_MODE 1447 //bondingģʽ +#define NET_DVR_ERR_SLAVE_CARD 1448 //slave +#define NET_DVR_ERR_PRIMARY_CARD 1449 //Primary +#define NET_DVR_ERR_DHCP_PPOE_WORK 1450 //dhcppppoEͬʱ +#define NET_DVR_ERR_NET_INTERFACE 1451 //ӿڴ +#define NET_DVR_ERR_MTU 1452 //MTU +#define NET_DVR_ERR_NETMASK 1453 // +#define NET_DVR_ERR_IP_INVALID 1454 //IPַϷ +#define NET_DVR_ERR_MULTICAST_IP_INVALID 1455 //ಥַϷ +#define NET_DVR_ERR_GATEWAY_INVALID 1456 //زϷ +#define NET_DVR_ERR_DNS_INVALID 1457 //DNSϷ +#define NET_DVR_ERR_ALARMHOST_IP_INVALID 1458 //澯ַϷ +#define NET_DVR_ERR_IP_CONFLICT 1459 //IPͻ +#define NET_DVR_ERR_NETWORK_SEGMENT 1460 //IP֧ͬ +#define NET_DVR_ERR_NETPORT 1461 //˿ڴ + +#define NET_DVR_ERR_PPPOE_NOSUPPORT 1462 //PPPOE֧ +#define NET_DVR_ERR_DOMAINNAME_NOSUPPORT 1463 //֧ +#define NET_DVR_ERR_NO_SPEED 1464 //δòٹ +#define NET_DVR_ERR_IOSTATUS_INVALID 1465 //IO״̬ +#define NET_DVR_ERR_BURST_INTERVAL_INVALID 1466 //ļǷ +#define NET_DVR_ERR_RESERVE_MODE 1467 //ģʽ + +#define NET_DVR_ERR_LANE_NO 1468 //ӳŴ +#define NET_DVR_ERR_COIL_AREA_TYPE 1469 //Ȧʹ +#define NET_DVR_ERR_TRIGGER_AREA_PARAM 1470 // +#define NET_DVR_ERR_SPEED_LIMIT_PARAM 1471 //Υٲ +#define NET_DVR_ERR_LANE_PROTOCOL_TYPE 1472 //Эʹ + +#define NET_DVR_ERR_INTERVAL_TYPE 1473 //ļͷǷ +#define NET_DVR_ERR_INTERVAL_DISTANCE 1474 //ļǷ +#define NET_DVR_ERR_RS485_ASSOCIATE_DEVTYPE 1475 //RS485ͷǷ +#define NET_DVR_ERR_RS485_ASSOCIATE_LANENO 1476 //RS485ŷǷ +#define NET_DVR_ERR_LANENO_ASSOCIATE_MULTIRS485 1477 //ŹRS485 +#define NET_DVR_ERR_LIGHT_DETECTION_REGION 1478 //ƵźŵźŵƸǼΪ0 + +#define NET_DVR_ERR_DN2D_NOSUPPORT 1479 //֧ץ֡2D +#define NET_DVR_ERR_IRISMODE_NOSUPPORT 1480 //ֵ֧ľͷ +#define NET_DVR_ERR_WB_NOSUPPORT 1481 //ֵ֧İƽģʽ +#define NET_DVR_ERR_IO_EFFECTIVENESS 1482 //IOڵЧ +#define NET_DVR_ERR_LIGHTNO_MAX 1483 //źŵƼ/ƵƳ(16) +#define NET_DVR_ERR_LIGHTNO_CONFLICT 1484 //źŵƼ/ƵƳͻ + +#define NET_DVR_ERR_CANCEL_LINE 1485 //ֱд +#define NET_DVR_ERR_STOP_LINE 1486 //ֹͣ +#define NET_DVR_ERR_RUSH_REDLIGHT_LINE 1487 //ƴ +#define NET_DVR_ERR_IOOUTNO_MAX 1488 //IOڱԽ + +#define NET_DVR_ERR_IOOUTNO_AHEADTIME_MAX 1489 //IOǰʱ䳬 +#define NET_DVR_ERR_IOOUTNO_IOWORKTIME 1490 //IOЧʱ䳬 +#define NET_DVR_ERR_IOOUTNO_FREQMULTI 1491 //IOģʽ±Ƶ +#define NET_DVR_ERR_IOOUTNO_DUTYRATE 1492 //IOģʽռձȳ +#define NET_DVR_ERR_VIDEO_WITH_EXPOSURE 1493 //Чʽ֧Ƶ +#define NET_DVR_ERR_PLATE_BRIGHTNESS_WITHOUT_FLASHDET 1494 //ԶʹƽڳȲģʽЧ + +#define NET_DVR_ERR_RECOGNIZE_TYPE_PARAM 1495 //ʶͷǷ ʶ󳵡С򡢳ʶȣ +#define NET_DVR_ERR_PALTE_RECOGNIZE_AREA_PARAM 1496 //ʶǷ ʶʱжϳ +#define NET_DVR_ERR_PORT_CONFLICT 1497 //˿гͻ +#define NET_DVR_ERR_LOOP_IP 1498 //IPΪػַ +#define NET_DVR_ERR_DRIVELINE_SENSITIVE 1499 //ѹȳ(Ƶ羯ģʽ) + + +//2013-3-6VQD루15001550 +#define NET_ERR_VQD_TIME_CONFLICT 1500 //VQDʱγͻ +#define NET_ERR_VQD_PLAN_NO_EXIST 1501 //VQDϼƻ +#define NET_ERR_VQD_CHAN_NO_EXIST 1502 //VQD㲻 +#define NET_ERR_VQD_CHAN_MAX 1503 //VQDƻѴ +#define NET_ERR_VQD_TASK_MAX 1504 //VQDѴ + +#define NET_SDK_GET_INPUTSTREAMCFG 1551 //ȡźԴ +#define NET_SDK_AUDIO_SWITCH_CONTROL 1552 //ӴƵؿ +#define NET_SDK_GET_VIDEOWALLDISPLAYNO 1553 //ȡ豸ʾ +#define NET_SDK_GET_ALLSUBSYSTEM_BASIC_INFO 1554//ȡϵͳϢ +#define NET_SDK_SET_ALLSUBSYSTEM_BASIC_INFO 1555 //ϵͳϢ +#define NET_SDK_GET_AUDIO_INFO 1556//ȡƵϢ +#define NET_SDK_GET_MATRIX_STATUS_V50 1557 // ȡƵۺƽ̨״̬_V50 +#define NET_SDK_DELETE_MONITOR_INFO 1558//ɾMonitorϢ +#define NET_SDK_DELETE_CAMERA_INFO 1559//ɾCamaeraϢ + + +//ץĻչ(1600~1900) +#define NET_DVR_ERR_EXCEED_MAX_CAPTURE_TIMES 1600 //ץģʽΪƵʱץΪ2(IVTģʽ) +#define NET_DVR_ERR_REDAR_TYPE_CONFLICT 1601 //ͬ485ڹ״ͳͻ +#define NET_DVR_ERR_LICENSE_PLATE_NULL 1602 //ƺΪ +#define NET_DVR_ERR_WRITE_DATABASE 1603 //дݿʧ +#define NET_DVR_ERR_LICENSE_EFFECTIVE_TIME 1604 //Чʱ +//Ƶ羯 +#define NET_DVR_ERR_PRERECORDED_STARTTIME_LONG 1605 //Ԥ¼ʼʱΥץ +//Ͽ +#define NET_DVR_ERR_TRIGGER_RULE_LINE 1606 //ߴ +#define NET_DVR_ERR_LEFTRIGHT_TRIGGERLINE_NOTVERTICAL 1607 ///Ҵֱ߲ +#define NET_DVR_ERR_FLASH_LAMP_MODE 1608 //˸ģʽ +#define NET_DVR_ERR_ILLEGAL_SNAPSHOT_NUM 1609 //Υץ +#define NET_DVR_ERR_ILLEGAL_DETECTION_TYPE 1610 //Υ¼ʹ +#define NET_DVR_ERR_POSITIVEBACK_TRIGGERLINE_HIGH 1611 //򴥷߸߶ȴ +#define NET_DVR_ERR_MIXEDMODE_CAPTYPE_ALLTARGETS 1612 //ģʽֻֻ֧ץ + +#define NET_DVR_ERR_CARSIGNSPEED_GREATERTHAN_LIMITSPEED 1613//С־ٴֵ +#define NET_DVR_ERR_BIGCARSIGNSPEED_GREATERTHAN_LIMITSPEED 1614//󳵱־ٴֵ +#define NET_DVR_ERR_BIGCARSIGNSPEED_GREATERTHAN_CARSIGNSPEED 1615//󳵱־ٴС־ֵ +#define NET_DVR_ERR_BIGCARLIMITSPEED_GREATERTHAN_CARLIMITSPEED 1616//ֵСֵ +#define NET_DVR_ERR_BIGCARLOWSPEEDLIMIT_GREATERTHAN_CARLOWSPEEDLIMIT 1617//󳵵ֵСֵ +#define NET_DVR_ERR_CARLIMITSPEED_GREATERTHAN_EXCEPHIGHSPEED 1618//Сٴ쳣ֵ +#define NET_DVR_ERR_BIGCARLIMITSPEED_GREATERTHAN_EXCEPHIGHSPEED 1619//ٴ쳣ֵ +#define NET_DVR_ERR_STOPLINE_MORETHAN_TRIGGERLINE 1620//ֱֹͣ߳д +#define NET_DVR_ERR_YELLOWLIGHTTIME_INVALID 1621/*ƵƵƳʱ䲻Ϸ*/ +#define NET_DVR_ERR_TRIGGERLINE1_FOR_NOT_YIELD_TO_PEDESTRIAN_CANNOT_EXCEED_TRIGGERLINE2 1622//һ˴ߵλó˵ڶ˴ +#define NET_DVR_ERR_TRIGGERLINE2_FOR_NOT_YIELD_TO_PEDESTRIAN_CANNOT_EXCEED_TRIGGERLINE1 1623//ڶ˴ߵλó˵һ˴ + +//Ž +#define NET_ERR_TIME_OVERLAP 1900 //ʱص +#define NET_ERR_HOLIDAY_PLAN_OVERLAP 1901 //ռƻص +#define NET_ERR_CARDNO_NOT_SORT 1902 //δ +#define NET_ERR_CARDNO_NOT_EXIST 1903 //Ų +#define NET_ERR_ILLEGAL_CARDNO 1904 //Ŵ +#define NET_ERR_ZONE_ALARM 1905 //ڲ״̬(޸IJ) +#define NET_ERR_ZONE_OPERATION_NOT_SUPPORT 1906 //ָ֧ò +#define NET_ERR_INTERLOCK_ANTI_CONFLICT 1907 //ŻͷDZͬʱô +#define NET_ERR_DEVICE_CARD_FULL 1908 //ﵽ10W󷵻أ +#define NET_ERR_HOLIDAY_GROUP_DOWNLOAD 1909 //ʧ +#define NET_ERR_LOCAL_CONTROL_OFF 1910 //͵ؿ +#define NET_ERR_LOCAL_CONTROL_DISADD 1911 //͵ؿδ +#define NET_ERR_LOCAL_CONTROL_HASADD 1912 //͵ؿ +#define NET_ERR_LOCAL_CONTROL_DOORNO_CONFLICT 1913 //ӵľ͵ؿűųͻ +#define NET_ERR_LOCAL_CONTROL_COMMUNICATION_FAIL 1914 //͵ؿͨʧ +#define NET_ERR_OPERAND_INEXISTENCE 1915 //󲻴ڣšزδʱأ +#define NET_ERR_LOCAL_CONTROL_OVER_LIMIT 1916 //͵ؿ豸ضԾ͵ƣ +#define NET_ERR_DOOR_OVER_LIMIT 1917 //ų豸 +#define NET_ERR_ALARM_OVER_LIMIT 1918 //豸 +#define NET_ERR_LOCAL_CONTROL_ADDRESS_INCONFORMITY_TYPE 1919 //͵ؿַͲ +#define NET_ERR_NOT_SUPPORT_ONE_MORE_CARD 1920 //֧һ˶࿨ +#define NET_ERR_DELETE_NO_EXISTENCE_FACE 1921 //ɾ +#define NET_ERR_DOOR_SPECIAL_PASSWORD_REPEAT 1922 //豸ظ +#define NET_ERR_AUTH_CODE_REPEAT 1923 //豸֤ظ +#define NET_ERR_DEPLOY_EXCEED_MAX 1924 // +#define NET_ERR_NOT_SUPPORT_DEL_FP_BY_ID 1925 //ְָ֧IDɾָ +#define NET_ERR_TIME_RANGE 1926 //Чڲ÷Χ +#define NET_ERR_CAPTURE_TIMEOUT 1927 //ɼʱ +#define NET_ERR_LOW_SCORE 1928 //ɼ +#define NET_ERR_OFFLINE_CAPTURING 1929 //߲ɼУ޷Ӧ + +//ӶԽ +#define NET_DVR_ERR_OUTDOOR_COMMUNICATION 1950 //ſڻͨ쳣 +#define NET_DVR_ERR_ROOMNO_UNDEFINED 1951 //δ÷ +#define NET_DVR_ERR_NO_CALLING 1952 //޺ +#define NET_DVR_ERR_RINGING 1953 // +#define NET_DVR_ERR_IS_CALLING_NOW 1954 //ͨ +#define NET_DVR_ERR_LOCK_PASSWORD_WRONG 1955// +#define NET_DVR_ERR_CONTROL_LOCK_FAILURE 1956//ʧ +#define NET_DVR_ERR_CONTROL_LOCK_OVERTIME 1957//ʱ +#define NET_DVR_ERR_LOCK_DEVICE_BUSY 1958//豸æ +#define NET_DVR_ERR_UNOPEN_REMOTE_LOCK_FUNCTION 1959//Զ̿δ + + +//˴ 2100 - 3000 +#define NET_DVR_ERR_FILE_NOT_COMPLETE 2100 //صļ +#define NET_DVR_ERR_IPC_EXIST 2101 //IPCѾ +#define NET_DVR_ERR_ADD_IPC 2102 //ͨIPC +#define NET_DVR_ERR_OUT_OF_RES 2103 // +#define NET_DVR_ERR_CONFLICT_TO_LOCALIP 2104 //IPCipַDVRipַͻ +#define NET_DVR_ERR_IP_SET 2105 //Ƿipַ +#define NET_DVR_ERR_PORT_SET 2106 //ǷĶ˿ں + +#define NET_ERR_WAN_NOTSUPPORT 2107 //ͬһ޷ðȫ򵼳GUIDļ +#define NET_ERR_MUTEX_FUNCTION 2108 //ܻ +#define NET_ERR_QUESTION_CONFIGNUM 2109 //ȫ +#define NET_ERR_FACECHAN_NORESOURCE 2110 //ͨԴ +#define NET_ERR_DATA_CALLBACK 2111 //ݻǨ +#define NET_ERR_ATM_VCA_CHAN_IS_RELATED 2112 //ATMͨѱ +#define NET_ERR_ATM_VCA_CHAN_IS_OVERLAPED 2113 //ATMͨѱ +#define NET_ERR_FACE_CHAN_UNOVERLAP_EACH_OTHER 2114 //ܻͨ +#define NET_ERR_ACHIEVE_MAX_CHANNLE_LIMIT 2115 //ﵽ· +#define NET_DVR_SMD_ENCODING_NORESOURSE 2116 //SMDԴ +#define NET_DVR_SMD_DECODING_NORESOURSE 2117 //SMDԴ +#define NET_DVR_FACELIB_DATA_PROCESSING 2118 //ڴ +#define NET_DVR_ERR_LARGE_TIME_DIFFRENCE 2119 //豸ͷ֮ʱ̫ +#define NET_DVR_NO_SUPPORT_WITH_PLAYBACK 2120 //ѿطţֱ֧ +#define NET_DVR_CHANNEL_NO_SUPPORT_WITH_SMD 2121 //ͨѿSMDֱ֧ +#define NET_DVR_CHANNEL_NO_SUPPORT_WITH_FD 2122 //ͨѿץģֱ֧ +#define NET_DVR_ILLEGAL_PHONE_NUMBER 2123 //Ƿĵ绰 +#define NET_DVR_ILLEGAL_CERITIFICATE_NUMBER 2124 //Ƿ֤ +#define NET_DVR_ERR_CHANNEL_RESOLUTION_NO_SUPPORT 2125 //ֱͨʲ֧ +#define NET_DVR_ERR_CHANNEL_COMPRESSION_NO_SUPPORT 2126 //ͨʽ֧ + +#define NET_DVR_ERR_CLUSTER_DEVICE_TOO_LESS 2127 //豸٣ɾ +#define NET_DVR_ERR_CLUSTER_DEL_DEVICE_CM_PLAYLOAD 2128 //豸ǼȺɾ +#define NET_DVR_ERR_CLUSTER_DEVNUM_OVER_UPPER_LIMIT 2129 //豸ﵽޣ +#define NET_DVR_ERR_CLUSTER_DEVICE_TYPE_INCONFORMITY 2130 //豸Ͳһ +#define NET_DVR_ERR_CLUSTER_DEVICE_VERSION_INCONFORMITY 2131 //豸汾һ +#define NET_DVR_ERR_CLUSTER_IP_CONFLICT 2132 //ȺϵͳIPַͻipv4ַͻipv6ַͻ +#define NET_DVR_ERR_CLUSTER_IP_INVALID 2133 //ȺϵͳIPַЧipv4Ƿipv6Ƿ +#define NET_DVR_ERR_CLUSTER_PORT_CONFLICT 2134 //Ⱥϵͳ˿ڳͻ +#define NET_DVR_ERR_CLUSTER_PORT_INVALID 2135 //Ⱥϵͳ˿ڷǷ +#define NET_DVR_ERR_CLUSTER_USERNAEM_OR_PASSWORD_INVALID 2136 //ûǷ +#define NET_DVR_ERR_CLUSTER_DEVICE_ALREADY_EXIST 2137 //ͬ豸 +#define NET_DVR_ERR_CLUSTER_DEVICE_NOT_EXIST 2138 //豸(ʱ·csбе豸Ϣκһ̨cs϶Ҳɾʱ·id) +#define NET_DVR_ERR_CLUSTER_NON_CLUSTER_MODE 2139 //豸ڷǼȺģʽ +#define NET_DVR_ERR_CLUSTER_IP_NOT_SAME_LAN 2140 //IPַͬһͬ/ + +#define NET_DVR_ERR_CAPTURE_PACKAGE_FAILED 2141 //ץʧ +#define NET_DVR_ERR_CAPTURE_PACKAGE_PROCESSING 2142 //ץ +#define NET_DVR_ERR_SAFETY_HELMET_NO_RESOURCE 2143 //ȫñԴ +#define NET_DVR_NO_SUPPORT_WITH_ABSTRACT 2144 //ѿƵժҪֱ֧ +#define NET_DVR_ERR_TAPE_LIB_NEED_STOP_ARCHIVE 2145 //Ŵ鵵Ҫֹͣ +#define NET_DVR_INSUFFICIENT_DEEP_LEARNING_RESOURCES 2146 //ѧϰԴ +#define NET_DVR_ERR_IDENTITY_KEY 2147 // +#define NET_DVR_MISSING_IDENTITY_KEY 2148 //ȱʧ +#define NET_DVR_NO_SUPPORT_WITH_PERSON_DENSITY_DETECT 2149 //ѿԱܶȼ⣬ֱ֧ +#define NET_DVR_IPC_RESOLUTION_OVERFLOW 2150 //IPCֱʳ +#define NET_DVR_IPC_BITRATE_OVERFLOW 2151 //IPCʳ +#define NET_DVR_ERR_INVALID_TASKID 2152 //ЧtaskID +#define NET_DVR_PANEL_MODE_NOT_CONFIG 2153 //û· +#define NET_DVR_NO_HUMAN_ENGINES_RESOURCE 2154 //Դ +#define NET_DVR_ERR_TASK_NUMBER_OVERFLOW 2155 //ݳ +#define NET_DVR_ERR_COLLISION_TIME_OVERFLOW 2156 //ײʱ䳬 +#define NET_DVR_ERR_CAPTURE_PACKAGE_NO_USB 2157 //δʶỤU̻² +#define NET_DVR_ERR_NO_SET_SECURITY_EMAIL 2158 //δðȫ +#define NET_DVR_ERR_EVENT_NOTSUPPORT 2159 //¼֧ +#define NET_DVR_ERR_PASSWORD_FORMAT 2160 //ʽ +#define NET_DVR_ACCESS_FRONT_DEVICE_PARAM_FAILURE 2161 //ȡǰ豸ʧ +#define NET_DVR_ACCESS_FRONT_DEVICE_STREAM_FAILURE 2162 //ǰ豸ȡʧ +#define NET_DVR_ERR_USERNAME_FORMAT 2163 //ûʽ +#define NET_DVR_ERR_UNOPENED_HIGH_RESOLUTION_MODE 2164 //߷ֱģʽδ +#define NET_DVR_ERR_TOO_SMALL_QUATO 2165 //̫С +#define NET_DVR_ERR_EMAIL_FORMAT 2166 //ʽ +#define NET_DVR_ERR_SECURITY_CODE_FORMAT 2167 //ȫʽ +#define NET_DVR_PD_SPACE_TOO_SMALL 2168 //Ӳ̫С +#define NET_DVR_PD_NUM_TOO_BIG 2169 //ӲĶ֮һ +#define NET_DVR_ERR_USB_IS_FULL 2170 //U +#define NET_DVR_EXCEED_MAX_SMD_TYPE 2171 //ﵽSMD¼ +#define NET_DVR_CHANNEL_NO_SUPPORT_WITH_BEHAVIOR 2172 //ͨѿ쳣Ϊ⣬ֱ֧ +#define NET_DVR_NO_BEHAVIOR_ENGINES_RESOURCE 2173 //쳣ΪԴ +#define NET_DVR_NO_RETENTION_ENGINES_RESOURCE 2174 //ԱԴ +#define NET_DVR_NO_LEAVE_POSITION_ENGINES_RESOURCE 2175 //ڼԴ +#define NET_DVR_NO_PEOPLE_NUM_CHANGE_ENGINES_RESOURCE 2176 //쳣Դ +#define NET_DVR_PANEL_MODE_NUM_OVER_LIMIT 2177 //·· +#define NET_DVR_SURROUND_MODE_NUM_OVER_LIMIT 2178 //·· +#define NET_DVR_FACE_MODE_NUM_OVER_LIMIT 2179 //·· +#define NET_DVR_SAFETYCABIN_MODE_NUM_OVER_LIMIT 2180 //·· +#define NET_DVR_DETECT_REGION_RANGE_INVALID 2181 //ΧǷ +#define NET_DVR_CHANNEL_CAPTURE_PICTURE_FAILURE 2182 //ͨץͼʧ +#define NET_DVR_VCACHAN_IS_NORESOURCE 2183 //ͨԴ +#define NET_DVR_IPC_NUM_REACHES_LIMIT 2184 // IpcͨĿﵽ +#define NET_DVR_IOT_NUM_REACHES_LIMIT 2185 // IOTͨĿﵽ +#define NET_DVR_IOT_CHANNEL_DEVICE_EXIST 2186 //ǰIOTͨѾ豸 +#define NET_DVR_IOT_CHANNEL_DEVICE_NOT_EXIST 2187 //ǰIOTͨ豸 +#define NET_DVR_INVALID_IOT_PROTOCOL_TYPE 2188 //ǷIOTЭ +#define NET_DVR_INVALID_EZVIZ_SECRET_KEY 2189 //Ƿөʯע֤ +#define NET_DVR_DUPLICATE_IOT_DEVICE 2190 //ظIOT豸 +#define NET_DVR_SADP_MODIFY_FALIURE 2191 // SADP޸ʧ +#define NET_DVR_IPC_NETWORK_ABNORMAL 2192 // IPC쳣 +#define NET_DVR_IPC_PASSWORD_ERROR 2193 // IPCû +#define NET_DVR_ERROR_IPC_TYPE 2194 //IPCͲ +#define NET_DVR_ERROR_IPC_LIST_NOT_EMPTY 2195 //IPCбΪգ֧һ +#define NET_DVR_ERROR_IPC_LIST_NOT_MATCH_PAIRING 2196 //IPCб䵥ƥ +#define NET_DVR_ERROR_IPC_BAD_LANGUAGE 2197 //IPCԺ豸ƥ +#define NET_DVR_ERROR_IPC_IS_LOCKING 2198 //IPCѱ +#define NET_DVR_ERROR_IPC_NOT_ACTIVATED 2199 //IPCδ +#define NET_DVR_FIELD_CODING_NOT_SUPPORT 2200 //벻֧ +#define NET_DVR_ERROR_H323_NOT_SUPPORT_H265 2201 //H323ƵͲ֧H265 +#define NET_DVR_ERROR_EXPOSURE_TIME_TOO_BIG_IN_MODE_P 2202 //Pʽ£عʱ +#define NET_DVR_ERROR_EXPOSURE_TIME_TOO_BIG_IN_MODE_N 2203 //Nʽ£عʱ +#define NET_DVR_ERROR_PING_PROCESSING 2204 //PING +#define NET_DVR_ERROR_PING_NOT_START 2205 //Pingδʼ +#define NET_DVR_ERROR_NEED_DOUBLE_VERIFICATION 2206 //Ҫ֤ +#define NET_DVR_NO_DOUBLE_VERIFICATION_USER 2207 //޶֤û +#define NET_DVR_CHANNEL_OFFLINE 2208 //ͨ +#define NET_DVR_TIMESPAN_NUM_OVER_LIMIT 2209 //ʱγ֧Ŀ +#define NET_DVR_CHANNEL_NUM_OVER_LIMIT 2210 //ͨĿ֧Ŀ +#define NET_DVR_NO_SEARCH_ID_RESOURCE 2211 //ҳѯsearchIDԴ +#define NET_DVR_ERROR_ONEKEY_EXPORT 2212 //ڽеԺ +#define NET_DVR_NO_CITY_MANAGEMENT_ENGINES_RESOURCE 2213 //ǹ㷨Դ +#define NET_DVR_NO_SITUATION_ANALYSIS_ENGINES_RESOURCE 2214 //̬ƷԴ +#define NET_DVR_INTELLIGENT_ANALYSIS_IPC_CANNT_DELETE 2215 //ڽܷIPC޷ɾ +#define NET_DVR_NOSUPPORT_RESET_PASSWORD 2216 //NVRֶ֧IPC +#define NET_DVR_ERROR_IPC_NEED_ON_LAN 2217 // IPCҪھ +#define NET_DVR_CHANNEL_NO_SUPPORT_WITH_SAFETY_HELMET 2218 //ͨѿȫñ⣬ֱ֧ +#define NET_DVR_ERROR_GET_RESETPASSWORDTYPE_IS_ABNORMAL 2219 /*IPCʱȡIPC쳣*/ +#define NET_DVR_ERROR_IPC_NOSUPPORT_RESET_PASSWORD 2220 /* IPC֧*/ +#define NET_DVR_ERROR_IP_IS_NOT_ONLY_ONE 2221 /*IPCIPΨһظ*/ +#define NET_DVR_NO_SUPPORT_WITH_SMD_OR_SCD 2222 //ѿSMD/SCDֱ֧ܣSCDΪ +#define NET_DVR_NO_SUPPORT_WITH_FD 2223 //ѿץģֱ֧ +#define NET_DVR_NO_FD_ENGINES_RESOURCE 2224 //ץԴ +#define NET_DVR_ERROR_ONEKEY_REMOVE 2225 //ڽɾԺ +#define NET_DVR_FACE_PIP_BACKGROUND_CHANNEL_OVERFLOW 2226 //лͨ +#define NET_DVR_MICIN_CHANNEL_OCCUPIED 2227 //micinͨռ +#define NET_DVR_IPC_CHANNEL_IS_IN_PIP 2228 //ʧܣͨѹѶͨȡлù + +#define NET_DVR_CHANNEL_NO_SUPPORT_WITH_FACE_CONTRAST 2229 //ͨѿȶԣֱ֧ + +#define NET_DVR_INVALID_RECHARGE_CARD 2230 //Чijֵ +#define NET_DVR_CLOUD_PLATFORM_SERVER_EXCEPTION 2231 //ƽ̨쳣 +#define NET_DVR_OPERATION_FAILURE_WITHOUT_LOGIN 2232 //δ¼ʧ +#define NET_DVR_INVALID_ASSOCIATED_SERIAL_NUMBER 2233 //кŷǷ +#define NET_DVR_CLOUD_PLATFORM_ACCOUNT_NOT_EXIST 2234 //ƽ̨ʺŲ +#define NET_DVR_DEVICE_SERIAL_NUMBER_REGISTERED 2235 //豸кע +#define NET_DVR_CONFERENCE_ROOM_NOT_EXIST 2236 //Ҳ +#define NET_DVR_NEED_DISABLED_ANALOG_CHANNEL 2237//ģͨ +#define NET_DVR_STUDENT_ROLL_CALL_FAILURE 2238//ѧʧ +#define NET_DVR_SUB_DEVICE_NOT_ENABLE_INDIVIDUAL_BEHAVIOR 2239//豸δøΪģʽ +#define NET_DVR_SUB_DEVICE_CHANNEL_CONTROL_FAILED 2240//豸ͨʧ +#define NET_DVR_DEVICE_NOT_IN_CONFERENCE 2241//豸ڻ +#define NET_DVR_ALREADY_EXIST_CONFERENCE 2242//ǰѾڻ +#define NET_DVR_NO_SUPPORT_WITH_VIDEO_CONFERENCE 2243//ǰƵУֱ֧ +#define NET_DVR_START_INTERACTION_FAILURE 2244//ʼʧ +#define NET_DVR_ASK_QUESTION_STARTED 2245//ѿʼ +#define NET_DVR_ASK_QUESTION_CLOSED 2246//ѽ +#define NET_DVR_UNABLE_OPERATE_BY_HOST 2247//ѱ˽ã޷ +#define NET_DVR_REPEATED_ASK_QUESTION 2248//ظ +#define NET_DVR_SWITCH_TIMEDIFF_LESS_LIMIT 2249/*ػʱСֵ(10)*/ +#define NET_DVR_CHANNEL_DEVICE_EXIST 2250 //ǰͨѾ豸 +#define NET_DVR_CHANNEL_DEVICE_NOT_EXIST 2251 //ǰͨ豸 +#define NET_DVR_ERROR_ADJUSTING_RESOLUTION 2252 //ȹرIJüٵֱ +#define NET_DVR_SSD_FILE_SYSTEM_IS_UPGRADING 2253 //SSDļϵͳ +#define NET_DVR_SSD_FILE_SYSTEM_IS_FORMAT 2254 //SSDڸʽ +#define NET_DVR_CHANNEL_IS_CONNECTING 2255 //ǰͨ + +#define NET_DVR_CHANNEL_STREAM_TYPE_NOT_SUPPORT 2257 //ǰͨͲ֧ +#define NET_DVR_CHANNEL_USERNAME_NOT_EXIST 2258 //ǰͨû +#define NET_DVR_CHANNEL_ACCESS_PARAM_FAILURE 2259 //ǰͨȡʧ +#define NET_DVR_CHANNEL_GET_STREAM_FAILURE 2260 //ǰͨȡʧ +#define NET_DVR_CHANNEL_RISK_PASSWORD 2261 //ǰͨΪ + +#define NET_DVR_NO_SUPPORT_DELETE_STRANGER_LIB 2262 //֧ɾİ˿ +#define NET_DVR_NO_SUPPORT_CREATE_STRANGER_LIB 2263 //ִ֧İ˿ + +#define NET_DVR_NETWORK_PORT_CONFLICT 2264 //ö˿ڳͻ +#define NET_DVR_TRANSCODE_NO_RESOURCES 2265 //תԴ +#define NET_DVR_SSD_FILE_SYSTEM_ERROR 2266 //SSDļϵͳ +#define NET_DVR_INSUFFICIENT_SSD__FOR_FPD 2267 //ԱƵҵSSD +#define NET_DVR_ASSOCIATED_FACELIB_OVER_LIMIT 2268 //Ѵ +#define NET_DVR_NEED_DELETE_DIGITAL_CHANNEL 2269 //ɾͨ +#define NET_DVR_ERR_FALL_DOWN_RULENUM_LIMIT 2270 //Աع +#define NET_DVR_ERR_VIOLENT_MOTION_RULENUM_LIMIT 2271 //˶ +#define NET_DVR_UPGRADE_ENGINE_VERSION_MISMATCH 2272 //汾ƥ(з) +#define NET_ERR_SLEEP_STREAM_UNSUPPORT 2273 //УԤʧܣȻѺٽг + +//ȳش루3001 - 3500 +#define NET_DVR_ERR_NOTSUPPORT_DEICING 3001 //豸ǰ״ֳ̬֧ܣֻPOE+AC24VDC12Vֳ֧ܣ +#define NET_DVR_ERR_THERMENABLE_CLOSE 3002 //¹ʹδ(NET_DVR_THERMOMETRY_BASICPARAMʹδ) +#define NET_DVR_ERR_NOTMEET_DEICING 3003 //ǰǻ¶Ȳֶǻ¶С30Ȳſɿ +#define NET_DVR_ERR_PANORAMIC_LIMIT_OPERATED 3004 //ȫͼλͬʱ +#define NET_DVR_ERR_SMARTH264_ROI_OPERATED 3005 //SmartH264ROIͬʱ +#define NET_DVR_ERR_RULENUM_LIMIT 3006 // +#define NET_DVR_ERR_LASER_DEICING_OPERATED 3007 //Լܲͬʱ +#define NET_DVR_ERR_OFFDIGITALZOOM_OR_MINZOOMLIMIT 3008 //ȹرݱ䱶ܻ䱶ΪСִֵ̻⡢쳣Ϊ⡢ֻ⡢¡̻ιʱûйرݱ䱶߱䱶ûΪСֵʱʾô롣 +#define NET_DVR_ERR_FIREWAITING 3009 //豸̨ڻȴ +#define NET_DVR_SYNCHRONIZEFOV_ERROR 3010 //ͬӳǴ +#define NET_DVR_CERTIFICATE_VALIDATION_ERROR 3011 //֤֤ͨ +#define NET_DVR_CERTIFICATES_NUM_EXCEED_ERROR 3012 //֤ +#define NET_DVR_RULE_SHIELDMASK_CONFLICT_ERROR 3013 //ͻ +#define NET_DVR_MOTOR_PREHEATING_ERROR 3014 //Ԥ +#define NET_DVR_PT_DEICING_ERROR 3015 //̨ + +//ǰ˲Ʒߴ루3501-4000 +#define NET_DVR_ERR_NO_SAFETY_HELMET_REGION 3501 //δðȫñ +#define NET_DVR_ERR_UNCLOSED_SAFETY_HELMET 3502 //δرհȫñʹ +#define NET_DVR_ERR_MUX_RECV_STATE 3503 //·ý״̬쳣 +#define NET_DVR_UPLOAD_HBDLIBID_ERROR 3504 // ϴIDHBDID or customHBDID +#define NET_DVR_NOTSUPPORT_SMALLER_RATIOS 3505 // С1ʱֹ֧,߱ +#define NET_ERR_ACCOUNT_NOT_ACTIVED 3506// û˻δŲ齨飺ȵ¼˻޸ijʼ룬ٳԲ + +#define NET_ERR_NPQ_BASE_INDEX 8000 //NPQ +#define NET_ERR_NPQ_PARAM (NET_ERR_NPQ_BASE_INDEX + 1) //NPQ +#define NET_ERR_NPQ_SYSTEM (NET_ERR_NPQ_BASE_INDEX + 2) //NPQϵͳô(Դʧܻڲȣ +#define NET_ERR_NPQ_GENRAL (NET_ERR_NPQ_BASE_INDEX + 3) //NPQڲͨô +#define NET_ERR_NPQ_PRECONDITION (NET_ERR_NPQ_BASE_INDEX + 4) //NPQ˳ +#define NET_ERR_NPQ_NOTSUPPORT (NET_ERR_NPQ_BASE_INDEX + 5) //NPQ⹦֧ܲ + +#define NET_ERR_NPQ_NOTCALLBACK (NET_ERR_NPQ_BASE_INDEX + 100) //ûлص +#define NET_ERR_NPQ_LOADLIB (NET_ERR_NPQ_BASE_INDEX + 101) //NPQʧ +#define NET_ERR_NPQ_STEAM_CLOSE (NET_ERR_NPQ_BASE_INDEX + 104) //·NPQδ +#define NET_ERR_NPQ_MAX_LINK (NET_ERR_NPQ_BASE_INDEX + 110) //NPQȡ·ﵽ +#define NET_ERR_NPQ_STREAM_CFG (NET_ERR_NPQ_BASE_INDEX + 111) //ڳͻ +#define NET_ERR_NPQ_PLAYBACK_OVERSPEED (NET_ERR_NPQ_BASE_INDEX + 112) //NPQطűʴﵽ +#define NET_ERR_NPQ_PLAYBACK_BELOWSPEED (NET_ERR_NPQ_BASE_INDEX + 113) //NPQطűʴﵽ + +#define NET_EZVIZ_P2P_BASE_INDEX 8300 //өʯP2P +#define NET_DVR_EZVIZ_P2P_REGISTER_ERROR (NET_EZVIZ_P2P_BASE_INDEX + 1) +#define NET_DVR_EZVIZ_P2P_LOGIN_2C_ERROR (NET_EZVIZ_P2P_BASE_INDEX + 2) +#define NET_DVR_EZVIZ_P2P_LOGIN_2B_ERROR (NET_EZVIZ_P2P_BASE_INDEX + 3) +#define NET_DVR_EZVIZ_P2P_BUILDLINK_ERROR (NET_EZVIZ_P2P_BASE_INDEX + 4) +#define NET_DVR_EZVIZ_P2P_PORTMAPPING_ERROR (NET_EZVIZ_P2P_BASE_INDEX + 5) +#define NET_DVR_EZVIZ_P2P_COULDNT_RESOLVE_HOST (NET_EZVIZ_P2P_BASE_INDEX + 6) //P2PCLOUD_ER_COULDNT_RESOLVE_HOST 1006 +#define NET_DVR_EZVIZ_P2P_COULDNT_CONNECT (NET_EZVIZ_P2P_BASE_INDEX + 7) //P2PCLOUD_ER_COULDNT_CONNECT 1007 +#define NET_DVR_EZVIZ_P2P_OPERATION_TIMEOUT (NET_EZVIZ_P2P_BASE_INDEX + 8) //P2PCLOUD_ER_OPERATION_TIMEOUT 1028 +#define NET_DVR_EZVIZ_P2P_NOT_INITIALIZED (NET_EZVIZ_P2P_BASE_INDEX + 9) //P2PCLOUD_ER_NOT_INITIALIZED 2001 +#define NET_DVR_EZVIZ_P2P_INVALID_ARG (NET_EZVIZ_P2P_BASE_INDEX + 10) //P2PCLOUD_ER_INVALID_ARG 2002 +#define NET_DVR_EZVIZ_P2P_EXCEED_MAX_SERVICE (NET_EZVIZ_P2P_BASE_INDEX + 11) //P2PCLOUD_ER_EXCEED_MAX_SERVICE 2003 +#define NET_DVR_EZVIZ_P2P_TOKEN_NOT_EXIST (NET_EZVIZ_P2P_BASE_INDEX + 12) //P2PCLOUD_ER_TOKEN_NOT_EXIST 2004 +#define NET_DVR_EZVIZ_P2P_DISCONNECTED (NET_EZVIZ_P2P_BASE_INDEX + 13) //P2PCLOUD_ER_DISCONNECTED 2005 +#define NET_DVR_EZVIZ_P2P_RELAY_ADDR_NOT_EXIST (NET_EZVIZ_P2P_BASE_INDEX + 14) //P2PCLOUD_ER_RELAY_ADDR_NOT_EXIST 2006 +#define NET_DVR_EZVIZ_P2P_DEV_NOT_ONLINE (NET_EZVIZ_P2P_BASE_INDEX + 15) //P2PCLOUD_ER_DEV_NOT_ONLINE 3121 +#define NET_DVR_EZVIZ_P2P_DEV_CONNECT_EXCEED (NET_EZVIZ_P2P_BASE_INDEX + 16) //P2PCLOUD_ER_DEV_CONNECT_EXCEED 3123 +#define NET_DVR_EZVIZ_P2P_DEV_CONNECT_FAILED (NET_EZVIZ_P2P_BASE_INDEX + 17) //P2PCLOUD_ER_DEV_CONNECT_FAILED 3209 +#define NET_DVR_EZVIZ_P2P_DEV_RECV_TIMEOUT (NET_EZVIZ_P2P_BASE_INDEX + 18) //P2PCLOUD_ER_DEV_RECV_TIMEOUT 3213 +#define NET_DVR_EZVIZ_P2P_USER_FORCE_STOP (NET_EZVIZ_P2P_BASE_INDEX + 19) //P2PCLOUD_ER_USER_FORCE_STOP 3216 +#define NET_DVR_EZVIZ_P2P_NO_PERMISSION (NET_EZVIZ_P2P_BASE_INDEX + 20) //P2PCLOUD_ER_NO_PERMISSION 3255 +#define NET_DVR_EZVIZ_P2P_DEV_PU_NOT_FOUND (NET_EZVIZ_P2P_BASE_INDEX + 21) //P2PCLOUD_ER_DEV_PU_NOT_FOUND 3297 +#define NET_DVR_EZVIZ_P2P_DEV_CONN_NOLONGER_AVAIL (NET_EZVIZ_P2P_BASE_INDEX + 22) //P2PCLOUD_ER_DEV_CONN_NOLONGER_AVAIL 3351 +#define NET_DVR_EZVIZ_P2P_DEV_NOT_LISTENING (NET_EZVIZ_P2P_BASE_INDEX + 23) //P2PCLOUD_ER_DEV_NOT_LISTENING 3610 +#define NET_DVR_EZVIZ_P2P_DEV_TUNNEL_SOCKET_LIMITED (NET_EZVIZ_P2P_BASE_INDEX + 24) //P2PCLOUD_ER_DEV_TUNNEL_SOCKET_LIMITED 3612 +#define NET_DVR_EZVIZ_P2P_FAIL_CREATE_THREAD (NET_EZVIZ_P2P_BASE_INDEX + 25) //TUNNEL_ER_FAIL_CREATE_THREAD 4001 +#define NET_DVR_EZVIZ_P2P_FAIL_ALLOC_BUFFERS (NET_EZVIZ_P2P_BASE_INDEX + 26) //P2PCLOUD_ER_FAIL_ALLOC_BUFFERS 4002 +#define NET_DVR_EZVIZ_P2P_FAIL_CREATE_SOCKET (NET_EZVIZ_P2P_BASE_INDEX + 27) //P2PCLOUD_ER_FAIL_CREATE_SOCKET 4003 +#define NET_DVR_EZVIZ_P2P_BIND_LOCAL_SERVICE (NET_EZVIZ_P2P_BASE_INDEX + 28) //P2PCLOUD_ER_BIND_LOCAL_SERVICE 4004 +#define NET_DVR_EZVIZ_P2P_LISTEN_LOCAL_SERVICE (NET_EZVIZ_P2P_BASE_INDEX + 29) //P2PCLOUD_ER_LISTEN_LOCAL_SERVICE 4005 +#define NET_DVR_EZVIZ_P2P_SVR_RSP_BAD (NET_EZVIZ_P2P_BASE_INDEX + 30) //P2PCLOUD_ER_SVR_RSP_BAD 5001 +#define NET_DVR_EZVIZ_P2P_SVR_RSP_INVALID (NET_EZVIZ_P2P_BASE_INDEX + 31) //P2PCLOUD_ER_SVR_RSP_INVALID 5002 +#define NET_DVR_EZVIZ_P2P_SVR_LOGIN_FAILED (NET_EZVIZ_P2P_BASE_INDEX + 32) //P2PCLOUD_ER_SVR_LOGIN_FAILED 5003 +#define NET_DVR_EZVIZ_P2P_SVR_TOKEN_EXPIRED (NET_EZVIZ_P2P_BASE_INDEX + 33) //P2PCLOUD_ER_SVR_TOKEN_EXPIRED 5004 +#define NET_DVR_EZVIZ_P2P_SVR_DEV_NOT_BELONG_TO_USER (NET_EZVIZ_P2P_BASE_INDEX + 34) //P2PCLOUD_ER_SVR_DEV_NOT_BELONG_TO_USER 5005 + + +//Դ 8501~9500 +#define NET_ERR_UPGRADE_PROG_ERR 8501 //ִг +#define NET_ERR_UPGRADE_NO_DEVICE 8502 //û豸(ָLEDûнӽտ) +#define NET_ERR_UPGRADE_NO_FILE 8503 //ûҵļ +#define NET_ERR_UPGRADE_DATA_ERROR 8504 //ļݲ +#define NET_ERR_UPGRADE_LINK_SERVER_ERR 8505 //ʧ +#define NET_ERR_UPGRADE_OEMCODE_NOMATCH 8506 //oemCodeƥ +#define NET_ERR_UPGRADE_FLASH_NOENOUGH 8507 //flash +#define NET_ERR_UPGRADE_RAM_NOENOUGH 8508 //RAM +#define NET_ERR_UPGRADE_DSPRAM_NOENOUGH 8509 //DSP RAM +#define NET_ERR_NOT_SUPPORT_CHECK 8510 //ĻͺŲ֧У +#define NET_ERR_LED_DEVICE_BUSY_CHECK 8511 //LED豸æУ +#define NET_ERR_DEVICE_MEM_NOT_ENOUGH 8512 //豸ڴ治 +#define NET_ERR_CHECK_PARAM 8513 //У +#define NET_ERR_RESOLUTION_OVER_LIMIT 8514 //ֱʳ +#define NET_ERR_NO_CUSTOM_BASE 8515 //Զͼ +#define NET_ERR_PRIORITY_LOWER 8516 //ȼڵǰģʽ +#define NET_ERR_SEND_MESSAGE_EXCEPT 8517 //Ϣ쳣 +#define NET_ERR_SENDCARD_UPGRADING 8518 //Ϳ +#define NET_ERR_NO_WIRELESS_NETCARD 8519 //δ +#define NET_ERR_LOAD_FS_FAIL 8520 //Ļʧ +#define NET_ERR_FLASH_UNSTORAGE_RECCARD 8521 //Flashδ洢տ +#define NET_ERR_NOT_SUPPORT_SINGLE_NETWORKCARD_AGGREGA 8522 //ֵ֧ۺ +#define NET_ERR_DISPLAYRESOLUTION_LESSTHAN_SMALLESTRESOLUTION 8523 //ʾֱССֱ +#define NET_ERR_NOT_SUPPORT_LOCAL_SOURCE_DRAG_MORE 8524 //ֱ֧Դһ϶ +#define NET_ERR_CANCEL_CURRENT_LED_AREA 8525 //ȡLED +#define NET_ERR_LED_OUT_ASSOCIATED_AREA 8526 //LEDδڹ +#define NET_ERR_MAX_VIRTUAL_LED_PICTURE_SIZE 8527 //LEDͼƬС +#define NET_ERR_DEVICE_CTRLED_BY_REMOTER 8528 //豸ǰң +/*******************ȫִ end**********************/ + +/************************************************* +NET_DVR_IsSupport()ֵ +19λֱʾϢλTRUE)ʾ֧֣ +**************************************************/ +#define NET_DVR_SUPPORT_DDRAW 0x01//֧DIRECTDRAW֧֣򲥷ܹ +#define NET_DVR_SUPPORT_BLT 0x02//Կ֧BLT֧֣򲥷ܹ +#define NET_DVR_SUPPORT_BLTFOURCC 0x04//ԿBLT֧ɫת֧֣RGBת +#define NET_DVR_SUPPORT_BLTSHRINKX 0x08//ԿBLT֧XС֧֣ϵͳת +#define NET_DVR_SUPPORT_BLTSHRINKY 0x10//ԿBLT֧YС֧֣ϵͳת +#define NET_DVR_SUPPORT_BLTSTRETCHX 0x20//ԿBLT֧XŴ֧֣ϵͳת +#define NET_DVR_SUPPORT_BLTSTRETCHY 0x40//ԿBLT֧YŴ֧֣ϵͳת +#define NET_DVR_SUPPORT_SSE 0x80//CPU֧SSEָIntel Pentium3֧SSEָ +#define NET_DVR_SUPPORT_MMX 0x100//CPU֧MMXָIntel Pentium3֧SSEָ + +/**********************̨ begin*************************/ +#define LIGHT_PWRON 2 /* ͨƹԴ */ +#define WIPER_PWRON 3 /* ͨˢ */ +#define FAN_PWRON 4 /* ͨȿ */ +#define HEATER_PWRON 5 /* ͨ */ +#define AUX_PWRON1 6 /* ͨ豸 */ +#define AUX_PWRON2 7 /* ͨ豸 */ +#define SET_PRESET 8 /* Ԥõ */ +#define CLE_PRESET 9 /* Ԥõ */ + +#define ZOOM_IN 11 /* ٶSS(ʱ) */ +#define ZOOM_OUT 12 /* ٶSSС(ʱС) */ +#define FOCUS_NEAR 13 /* ٶSSǰ */ +#define FOCUS_FAR 14 /* ٶSS */ +#define IRIS_OPEN 15 /* ȦٶSS */ +#define IRIS_CLOSE 16 /* ȦٶSSС */ + +#define TILT_UP 21 /* ̨SSٶ */ +#define TILT_DOWN 22 /* ̨SSٶ¸ */ +#define PAN_LEFT 23 /* ̨SSٶת */ +#define PAN_RIGHT 24 /* ̨SSٶת */ +#define UP_LEFT 25 /* ̨SSٶת */ +#define UP_RIGHT 26 /* ̨SSٶת */ +#define DOWN_LEFT 27 /* ̨SSٶ¸ת */ +#define DOWN_RIGHT 28 /* ̨SSٶ¸ת */ +#define PAN_AUTO 29 /* ̨SSٶԶɨ */ + +#define FILL_PRE_SEQ 30 /* ԤõѲ */ +#define SET_SEQ_DWELL 31 /* Ѳͣʱ */ +#define SET_SEQ_SPEED 32 /* Ѳٶ */ +#define CLE_PRE_SEQ 33 /* ԤõѲɾ */ +#define STA_MEM_CRUISE 34 /* ʼ¼ */ +#define STO_MEM_CRUISE 35 /* ֹͣ¼ */ +#define RUN_CRUISE 36 /* ʼ */ +#define RUN_SEQ 37 /* ʼѲ */ +#define STOP_SEQ 38 /* ֹͣѲ */ +#define GOTO_PRESET 39 /* תԤõ */ +//dacͨ˽ЭNVRNVRͨOnvifЭʱ˽ЭѲλ·ٶȡʱΪ +//OnvifΪ·еλ˽ЭѲλ·ĿʼͽNVR޷жϺʱOnvifĸǰ豸 +#define SET_SEQ_START 41 /* IP򣬿ʼѲ*/ +#define SET_SEQ_END 42 /* IP򣬽Ѳ*/ + +#define DEL_SEQ 43 /* ɾѲ· */ +#define STOP_CRUISE 44 /* ֹͣ */ +#define DELETE_CRUISE 45 /* ɾ */ +#define DELETE_ALL_CRUISE 46/* ɾ */ + +#define PAN_CIRCLE 50 /* ̨SSٶԶԲɨ */ +#define DRAG_PTZ 51 /* ϶PTZ */ +#define LINEAR_SCAN 52 /* ɨ */ //2014-03-15 +#define CLE_ALL_PRESET 53 /* Ԥõȫ */ +#define CLE_ALL_SEQ 54 /* Ѳȫ */ +#define CLE_ALL_CRUISE 55 /* ȫ */ + +#define POPUP_MENU 56 /* ʾ˵ */ + +#define TILT_DOWN_ZOOM_IN 58 /* ̨SSٶ¸&&ٶSS(ʱ) */ +#define TILT_DOWN_ZOOM_OUT 59 /* ̨SSٶ¸&&ٶSSС(ʱС) */ +#define PAN_LEFT_ZOOM_IN 60 /* ̨SSٶת&&ٶSS(ʱ)*/ +#define PAN_LEFT_ZOOM_OUT 61 /* ̨SSٶת&&ٶSSС(ʱС)*/ +#define PAN_RIGHT_ZOOM_IN 62 /* ̨SSٶת&&ٶSS(ʱ) */ +#define PAN_RIGHT_ZOOM_OUT 63 /* ̨SSٶת&&ٶSSС(ʱС) */ +#define UP_LEFT_ZOOM_IN 64 /* ̨SSٶת&&ٶSS(ʱ)*/ +#define UP_LEFT_ZOOM_OUT 65 /* ̨SSٶת&&ٶSSС(ʱС)*/ +#define UP_RIGHT_ZOOM_IN 66 /* ̨SSٶת&&ٶSS(ʱ)*/ +#define UP_RIGHT_ZOOM_OUT 67 /* ̨SSٶת&&ٶSSС(ʱС)*/ +#define DOWN_LEFT_ZOOM_IN 68 /* ̨SSٶ¸ת&&ٶSS(ʱ) */ +#define DOWN_LEFT_ZOOM_OUT 69 /* ̨SSٶ¸ת&&ٶSSС(ʱС) */ +#define DOWN_RIGHT_ZOOM_IN 70 /* ̨SSٶ¸ת&&ٶSS(ʱ) */ +#define DOWN_RIGHT_ZOOM_OUT 71 /* ̨SSٶ¸ת&&ٶSSС(ʱС) */ +#define TILT_UP_ZOOM_IN 72 /* ̨SSٶ&&ٶSS(ʱ) */ +#define TILT_UP_ZOOM_OUT 73 /* ̨SSٶ&&ٶSSС(ʱС) */ +/**********************̨ end*************************/ + +#define DVR_VEHICLE_CONTROL_LIST 0x1 //(͵)2013-11-04 + + +/************************************************* +طʱſ궨 +NET_DVR_PlayBackControl +NET_DVR_PlayControlLocDisplay +NET_DVR_DecPlayBackCtrlĺ궨 +ֲ֧鿴˵ʹ +**************************************************/ +#define NET_DVR_PLAYSTART 1//ʼ +#define NET_DVR_PLAYSTOP 2//ֹͣ +#define NET_DVR_PLAYPAUSE 3//ͣ +#define NET_DVR_PLAYRESTART 4//ָ +#define NET_DVR_PLAYFAST 5// +#define NET_DVR_PLAYSLOW 6// +#define NET_DVR_PLAYNORMAL 7//ٶ +#define NET_DVR_PLAYFRAME 8//֡ +#define NET_DVR_PLAYSTARTAUDIO 9// +#define NET_DVR_PLAYSTOPAUDIO 10//ر +#define NET_DVR_PLAYAUDIOVOLUME 11// +#define NET_DVR_PLAYSETPOS 12//ıļطŵĽ +#define NET_DVR_PLAYGETPOS 13//ȡļطŵĽ +#define NET_DVR_PLAYGETTIME 14//ȡǰѾŵʱ(ļطŵʱЧ) +#define NET_DVR_PLAYGETFRAME 15//ȡǰѾŵ֡(ļطŵʱЧ) +#define NET_DVR_GETTOTALFRAMES 16//ȡǰļܵ֡(ļطŵʱЧ) +#define NET_DVR_GETTOTALTIME 17//ȡǰļܵʱ(ļطŵʱЧ) +#define NET_DVR_THROWBFRAME 20//B֡ +#define NET_DVR_SETSPEED 24//ٶ +#define NET_DVR_KEEPALIVE 25//豸(ص2뷢һ) +#define NET_DVR_PLAYSETTIME 26//ʱ䶨λ +#define NET_DVR_PLAYGETTOTALLEN 27//ȡʱطŶӦʱڵļܳ +#define NET_DVR_PLAYSETTIME_V50 28//ʱ䶨λ(֧ʱչ) +#define NET_DVR_PLAY_FORWARD 29 //лΪ +#define NET_DVR_PLAY_REVERSE 30 //лΪ +#define NET_DVR_SET_DECODEFFRAMETYPE 31 +#define NET_DVR_SET_TRANS_TYPE 32 //תʽ +#define NET_DVR_PLAY_CONVERT 33 //طת +#define NET_DVR_START_DRAWFRAME 34 //ʼ֡ط +#define NET_DVR_STOP_DRAWFRAME 35 //ֹͣ֡ط +#define NET_DVR_CHANGEWNDRESOLUTION 36 //ڴСı䣬֪ͨſ +#define NET_DVR_RESETBUFFER 37 //վ뻺Զ̻طļ +#define NET_DVR_VOD_DRAG_ING 38 //ط϶ +#define NET_DVR_VOD_DRAG_END 39 //ط϶ +#define NET_DVR_VOD_RESET_PLAYTIME 40 //貥ʱ + + +#define PLAYM4_DECODE_NORMAIL 0 // +#define PLAYM4_DECODE_KEY_FRAME 1 //ֻI֡ +#define PLAYM4_DECODE_NONE 2 //ȫ +#define PLAYM4_DECODE_TEMPORAL_LAYER_0 3 //1/2 +#define PLAYM4_DECODE_TEMPORAL_LAYER_1 4 //1/4 + + +//Զ̰£ +/* key value send to CONFIG program */ +#define KEY_CODE_1 1 +#define KEY_CODE_2 2 +#define KEY_CODE_3 3 +#define KEY_CODE_4 4 +#define KEY_CODE_5 5 +#define KEY_CODE_6 6 +#define KEY_CODE_7 7 +#define KEY_CODE_8 8 +#define KEY_CODE_9 9 +#define KEY_CODE_0 10 +#define KEY_CODE_POWER 11 +#define KEY_CODE_MENU 12 +#define KEY_CODE_ENTER 13 +#define KEY_CODE_CANCEL 14 +#define KEY_CODE_UP 15 +#define KEY_CODE_DOWN 16 +#define KEY_CODE_LEFT 17 +#define KEY_CODE_RIGHT 18 +#define KEY_CODE_EDIT 19 +#define KEY_CODE_ADD 20 +#define KEY_CODE_MINUS 21 +#define KEY_CODE_PLAY 22 +#define KEY_CODE_REC 23 +#define KEY_CODE_PAN 24 +#define KEY_CODE_M 25 +#define KEY_CODE_A 26 +#define KEY_CODE_F1 27 +#define KEY_CODE_F2 28 + +/* for PTZ control */ +#define KEY_PTZ_UP_START KEY_CODE_UP +#define KEY_PTZ_UP_STOP 32 + +#define KEY_PTZ_DOWN_START KEY_CODE_DOWN +#define KEY_PTZ_DOWN_STOP 33 + +#define KEY_PTZ_LEFT_START KEY_CODE_LEFT +#define KEY_PTZ_LEFT_STOP 34 + +#define KEY_PTZ_RIGHT_START KEY_CODE_RIGHT +#define KEY_PTZ_RIGHT_STOP 35 + +#define KEY_PTZ_AP1_START KEY_CODE_EDIT /*Ȧ+*/ +#define KEY_PTZ_AP1_STOP 36 + +#define KEY_PTZ_AP2_START KEY_CODE_PAN /*Ȧ-*/ +#define KEY_PTZ_AP2_STOP 37 + +#define KEY_PTZ_FOCUS1_START KEY_CODE_A /*۽+*/ +#define KEY_PTZ_FOCUS1_STOP 38 + +#define KEY_PTZ_FOCUS2_START KEY_CODE_M /*۽-*/ +#define KEY_PTZ_FOCUS2_STOP 39 + +#define KEY_PTZ_B1_START 40 /*䱶+*/ +#define KEY_PTZ_B1_STOP 41 + +#define KEY_PTZ_B2_START 42 /*䱶-*/ +#define KEY_PTZ_B2_STOP 43 + +//9000 +#define KEY_CODE_11 44 +#define KEY_CODE_12 45 +#define KEY_CODE_13 46 +#define KEY_CODE_14 47 +#define KEY_CODE_15 48 +#define KEY_CODE_16 49 + + + +/************************* begin*******************************/ +//NET_DVR_SetDVRConfigNET_DVR_GetDVRConfig,עӦýṹ + +#define NET_DVR_GET_DEVICECFG 100 //ȡ豸 +#define NET_DVR_SET_DEVICECFG 101 //豸 +#define NET_DVR_GET_NETCFG 102 //ȡ +#define NET_DVR_SET_NETCFG 103 // +#define NET_DVR_GET_PICCFG 104 //ȡͼ +#define NET_DVR_SET_PICCFG 105 //ͼ +#define NET_DVR_GET_COMPRESSCFG 106 //ȡѹ +#define NET_DVR_SET_COMPRESSCFG 107 //ѹ +#define NET_DVR_GET_RECORDCFG 108 //ȡ¼ʱ +#define NET_DVR_SET_RECORDCFG 109 //¼ʱ +#define NET_DVR_GET_DECODERCFG 110 //ȡ +#define NET_DVR_SET_DECODERCFG 111 //ý +#define NET_DVR_GET_RS232CFG 112 //ȡ232ڲ +#define NET_DVR_SET_RS232CFG 113 //232ڲ +#define NET_DVR_GET_ALARMINCFG 114 //ȡ +#define NET_DVR_SET_ALARMINCFG 115 //ñ +#define NET_DVR_GET_ALARMOUTCFG 116 //ȡ +#define NET_DVR_SET_ALARMOUTCFG 117 //ñ +#define NET_DVR_GET_TIMECFG 118 //ȡDVRʱ +#define NET_DVR_SET_TIMECFG 119 //DVRʱ +#define NET_DVR_GET_PREVIEWCFG 120 //ȡԤ +#define NET_DVR_SET_PREVIEWCFG 121 //Ԥ +#define NET_DVR_GET_VIDEOOUTCFG 122 //ȡƵ +#define NET_DVR_SET_VIDEOOUTCFG 123 //Ƶ +#define NET_DVR_GET_USERCFG 124 //ȡû +#define NET_DVR_SET_USERCFG 125 //û +#define NET_DVR_GET_EXCEPTIONCFG 126 //ȡ쳣 +#define NET_DVR_SET_EXCEPTIONCFG 127 //쳣 +#define NET_DVR_GET_ZONEANDDST 128 //ȡʱʱƲ +#define NET_DVR_SET_ZONEANDDST 129 //ʱʱƲ + +//עֻ֧4OSDͣͨV30µ豸汾 +#define NET_DVR_GET_SHOWSTRING 130 //ȡַ +#define NET_DVR_SET_SHOWSTRING 131 //õַ + +#define NET_DVR_GET_EVENTCOMPCFG 132 //ȡ¼¼ +#define NET_DVR_SET_EVENTCOMPCFG 133 //¼¼ +#define NET_DVR_GET_FTPCFG 134 //ȡץͼFTP() +#define NET_DVR_SET_FTPCFG 135 //ץͼFTP() +#define NET_DVR_GET_AUXOUTCFG 140 //ȡ(HS豸2006-02-28) +#define NET_DVR_SET_AUXOUTCFG 141 //ñ(HS豸2006-02-28) +#define NET_DVR_GET_PREVIEWCFG_AUX 142 //ȡ-sϵ˫Ԥ(-sϵ˫2006-04-13) +#define NET_DVR_SET_PREVIEWCFG_AUX 143 //-sϵ˫Ԥ(-sϵ˫2006-04-13) + +#define NET_DVR_GET_PASSWORD_MANAGE_CFG 144 //ȡ +#define NET_DVR_SET_PASSWORD_MANAGE_CFG 145 // +#define NET_DVR_UNLOCK_USER 146 //û +#define NET_DVR_GET_SECURITY_CFG 147 //ȡȫ֤ +#define NET_DVR_SET_SECURITY_CFG 148 //ðȫ֤ +#define NET_DVR_GET_LOCKED_INFO_LIST 149 //ȡбϢ + + +/*********************************ֽܲӿ begin***************************************/ +//ΪӦNET_VCA_RULECFG +#define NET_DVR_SET_RULECFG 152 //쳣Ϊ +#define NET_DVR_GET_RULECFG 153 //ȡ쳣Ϊ +//궨NET_DVR_TRACK_CFG +#define NET_DVR_SET_TRACK_CFG 160//ò +#define NET_DVR_GET_TRACK_CFG 161//ȡò + +//ܷȡýṹ +#define NET_DVR_SET_IVMS_STREAMCFG 162 //ܷȡ +#define NET_DVR_GET_IVMS_STREAMCFG 163 //ȡܷȡ +//ܿƲṹ +#define NET_DVR_SET_VCA_CTRLCFG 164 //ܿƲ +#define NET_DVR_GET_VCA_CTRLCFG 165 //ȡܿƲ +//NET_VCA_MASK_REGION_LIST +#define NET_DVR_SET_VCA_MASK_REGION 166 // +#define NET_DVR_GET_VCA_MASK_REGION 167 //ȡ + +//ATM NET_VCA_ENTER_REGION +#define NET_DVR_SET_VCA_ENTER_REGION 168 //ý +#define NET_DVR_GET_VCA_ENTER_REGION 169 //ȡ + +//궨NET_VCA_LINE_SEGMENT_LIST +#define NET_DVR_SET_VCA_LINE_SEGMENT 170 //ñ궨 +#define NET_DVR_GET_VCA_LINE_SEGMENT 171 //ȡ궨 + +// ivmsNET_IVMS_MASK_REGION_LIST +#define NET_DVR_SET_IVMS_MASK_REGION 172 //IVMS +#define NET_DVR_GET_IVMS_MASK_REGION 173 //ȡIVMS +// ivmsNET_IVMS_ENTER_REGION +#define NET_DVR_SET_IVMS_ENTER_REGION 174 //IVMS +#define NET_DVR_GET_IVMS_ENTER_REGION 175 //ȡIVMS + +#define NET_DVR_SET_IVMS_BEHAVIORCFG 176 //ܷΪ +#define NET_DVR_GET_IVMS_BEHAVIORCFG 177 //ȡܷΪ + +// IVMS طż +#define NET_DVR_IVMS_SET_SEARCHCFG 178 //IVMSطż +#define NET_DVR_IVMS_GET_SEARCHCFG 179 //ȡIVMSطż + +#define NET_DVR_SET_POSITION_TRACK 180 // óϢ +#define NET_DVR_GET_POSITION_TRACK 181 // ȡϢ + +#define NET_DVR_SET_CALIBRATION 182 // ñ궨Ϣ +#define NET_DVR_GET_CALIBRATION 183 // ȡ궨Ϣ + +#define NET_DVR_SET_PDC_RULECFG 184 // ͳƹ +#define NET_DVR_GET_PDC_RULECFG 185 // ȡͳƹ + +#define NET_DVR_SET_PU_STREAMCFG 186 // ǰȡ豸Ϣ +#define NET_DVR_GET_PU_STREAMCFG 187 // ȡǰȡ豸Ϣ + +#define NET_VCA_SET_IVMS_BEHAVIOR_CFG 192 // IVMSΪ ʱ +#define NET_VCA_GET_IVMS_BEHAVIOR_CFG 193 // ȡIVMSΪ ʱ + +#define NET_VCA_SET_SIZE_FILTER 194 // ȫֳߴ +#define NET_VCA_GET_SIZE_FILTER 195 // ȡȫֳߴ + +#define NET_DVR_SET_TRACK_PARAMCFG 196 // ز˵ +#define NET_DVR_GET_TRACK_PARAMCFG 197 // ȡز˵ + +#define NET_DVR_SET_DOME_MOVEMENT_PARAM 198 // о +#define NET_DVR_GET_DOME_MOVEMENT_PARAM 199 // ȡо + +#define NET_DVR_GET_PICCFG_EX 200 //ȡͼ(SDK_V14չ) +#define NET_DVR_SET_PICCFG_EX 201 //ͼ(SDK_V14չ) +#define NET_DVR_GET_USERCFG_EX 202 //ȡû(SDK_V15չ) +#define NET_DVR_SET_USERCFG_EX 203 //û(SDK_V15չ) +#define NET_DVR_GET_COMPRESSCFG_EX 204 //ȡѹ(SDK_V15չ2006-05-15) +#define NET_DVR_SET_COMPRESSCFG_EX 205 //ѹ(SDK_V15չ2006-05-15) + + +#define NET_DVR_GET_NETAPPCFG 222 //ȡӦò NTP/DDNS/EMAIL +#define NET_DVR_SET_NETAPPCFG 223 //Ӧò NTP/DDNS/EMAIL +#define NET_DVR_GET_NTPCFG 224 //ȡӦò NTP +#define NET_DVR_SET_NTPCFG 225 //Ӧò NTP +#define NET_DVR_GET_DDNSCFG 226 //ȡӦò DDNS +#define NET_DVR_SET_DDNSCFG 227 //Ӧò DDNS +//ӦNET_DVR_EMAILPARA +#define NET_DVR_GET_EMAILCFG 228 //ȡӦò EMAIL +#define NET_DVR_SET_EMAILCFG 229 //Ӧò EMAIL + +#define NET_DVR_GET_NFSCFG 230 /* NFS disk config */ +#define NET_DVR_SET_NFSCFG 231 /* NFS disk config */ + +/*עΪƣֻ֧8OSDͣV30豸汾֮ǰ +NET_DVR_GET_SHOWSTRING NET_DVR_SET_SHOWSTRING ʹã*/ +#define NET_DVR_GET_SHOWSTRING_EX 238 //ȡַչ(֧8ַ) +#define NET_DVR_SET_SHOWSTRING_EX 239 //õַչ(֧8ַ) +#define NET_DVR_GET_NETCFG_OTHER 244 //ȡ +#define NET_DVR_SET_NETCFG_OTHER 245 // + +//ӦNET_DVR_EMAILCFGṹ +#define NET_DVR_GET_EMAILPARACFG 250 //Get EMAIL parameters +#define NET_DVR_SET_EMAILPARACFG 251 //Setup EMAIL parameters + + +#define NET_DVR_GET_DDNSCFG_EX 274 //ȡչDDNS +#define NET_DVR_SET_DDNSCFG_EX 275 //չDDNS + +#define NET_DVR_SET_PTZPOS 292 //̨PTZλ +#define NET_DVR_GET_PTZPOS 293 //̨ȡPTZλ +#define NET_DVR_GET_PTZSCOPE 294 //̨ȡPTZΧ + +#define NET_DVR_GET_AP_INFO_LIST 305//ȡԴ +#define NET_DVR_SET_WIFI_CFG 306 //IP豸߲ +#define NET_DVR_GET_WIFI_CFG 307 //ȡIP豸߲ +#define NET_DVR_SET_WIFI_WORKMODE 308 //IP豸ڹģʽ +#define NET_DVR_GET_WIFI_WORKMODE 309 //ȡIP豸ڹģʽ +#define NET_DVR_GET_WIFI_STATUS 310 //ȡ豸ǰwifi״̬ +/*********************************ܽͨ¼begin***************************************/ +#define NET_DVR_GET_REFERENCE_REGION 400 //ȡο +#define NET_DVR_SET_REFERENCE_REGION 401 //òο + +#define NET_DVR_GET_TRAFFIC_MASK_REGION 402 //ȡͨ¼ +#define NET_DVR_SET_TRAFFIC_MASK_REGION 403 //ýͨ¼ +#define NET_DVR_SET_AID_RULECFG 404 //ýͨ¼ +#define NET_DVR_GET_AID_RULECFG 405 //ȡͨ¼ + +#define NET_DVR_SET_TPS_RULECFG 406 //ýͨͳƹ +#define NET_DVR_GET_TPS_RULECFG 407 //ȡͨͳƹ + +#define NET_DVR_SET_LANECFG 408 //ó +#define NET_DVR_GET_LANECFG 409 //ȡ +#define NET_DVR_GET_VCA_RULE_COLOR_CFG 410 //ȡܹɫ +#define NET_DVR_SET_VCA_RULE_COLOR_CFG 411 //ܹɫ +#define NET_DVR_GET_SWITCH_LAMP_CFG 412 //ȡصƼò +#define NET_DVR_SET_SWITCH_LAMP_CFG 413 //ÿصƼò + + +/*********************************ܽͨ¼end***************************************/ +#define NET_DVR_SET_FACEDETECT_RULECFG 420 // +#define NET_DVR_GET_FACEDETECT_RULECFG 421 // ȡ + +#define NET_DVR_SET_VEHICLE_RECOG_TASK 422 //ʶύ +#define NET_DVR_GET_VEHICLE_RECOG_TASK 423 //ʶȡ + +#define NET_DVR_SET_TIMECORRECT 432 //УʱãֻУʱ¼Уʱ eg.NET_DVR_SET_TIMECFG ޸豸УʱãNTPУʱᱻ޸ΪֶУʱ +#define NET_DVR_GET_CONNECT_LIST 433 //ȡ豸бϢ + +/***************************DS9000(_V30) begin *****************************/ +//(NET_DVR_NETCFG_V30ṹ) +#define NET_DVR_GET_NETCFG_V30 1000 //ȡ +#define NET_DVR_SET_NETCFG_V30 1001 // + +//ͼ(NET_DVR_PICCFG_V30ṹ) +#define NET_DVR_GET_PICCFG_V30 1002 //ȡͼ +#define NET_DVR_SET_PICCFG_V30 1003 //ͼ + +//¼ʱ(NET_DVR_RECORD_V30ṹ) +#define NET_DVR_GET_RECORDCFG_V30 1004 //ȡ¼ +#define NET_DVR_SET_RECORDCFG_V30 1005 //¼ + +//û(NET_DVR_USER_V30ṹ) +#define NET_DVR_GET_USERCFG_V30 1006 //ȡû +#define NET_DVR_SET_USERCFG_V30 1007 //û + +//¼ʱ(NET_DVR_RECORD_V40ṹ) +#define NET_DVR_GET_RECORDCFG_V40 1008 //ȡ¼(չ) +#define NET_DVR_SET_RECORDCFG_V40 1009 //¼(չ) + +//9000DDNS(NET_DVR_DDNSPARA_V30ṹ) +#define NET_DVR_GET_DDNSCFG_V30 1010 //ȡDDNS(9000չ) +#define NET_DVR_SET_DDNSCFG_V30 1011 //DDNS(9000չ) + +//EMAIL(NET_DVR_EMAILCFG_V30ṹ) +#define NET_DVR_GET_EMAILCFG_V30 1012 //ȡEMAIL +#define NET_DVR_SET_EMAILCFG_V30 1013 //EMAIL + +#define NET_DVR_GET_NETCFG_V50 1015 //ȡ(V50) +#define NET_DVR_SET_NETCFG_V50 1016 //(V50) + +#define NET_GET_CRUISEPOINT_V40 1018 //ȡѲ· + +//Ѳ (NET_DVR_CRUISE_PARAṹ) +#define NET_DVR_GET_CRUISE 1020 +#define NET_DVR_SET_CRUISE 1021 + + +//ṹ (NET_DVR_ALARMINCFG_V30ṹ) +#define NET_DVR_GET_ALARMINCFG_V30 1024 +#define NET_DVR_SET_ALARMINCFG_V30 1025 + +//ṹ (NET_DVR_ALARMOUTCFG_V30ṹ) +#define NET_DVR_GET_ALARMOUTCFG_V30 1026 +#define NET_DVR_SET_ALARMOUTCFG_V30 1027 + +//Ƶṹ (NET_DVR_VIDEOOUT_V30ṹ) +#define NET_DVR_GET_VIDEOOUTCFG_V30 1028 +#define NET_DVR_SET_VIDEOOUTCFG_V30 1029 + + +/*֧8OSDͣ豸汾ΪV30ʱͨ豸汾ƥ䣬 +ͬʱ֮ǰNET_DVR_GET_SHOWSTRING NET_DVR_SET_SHOWSTRING ʹã*/ +//ַṹ (NET_DVR_SHOWSTRING_V30ṹ) +#define NET_DVR_GET_SHOWSTRING_V30 1030 +#define NET_DVR_SET_SHOWSTRING_V30 1031 + +//쳣ṹ (NET_DVR_EXCEPTION_V30ṹ) +#define NET_DVR_GET_EXCEPTIONCFG_V30 1034 +#define NET_DVR_SET_EXCEPTIONCFG_V30 1035 + +//232ṹ (NET_DVR_RS232CFG_V30ṹ) +#define NET_DVR_GET_RS232CFG_V30 1036 +#define NET_DVR_SET_RS232CFG_V30 1037 + +//Ӳ̽ṹ (NET_DVR_NET_DISKCFGṹ) +#define NET_DVR_GET_NET_DISKCFG 1038 //Ӳ̽ȡ +#define NET_DVR_SET_NET_DISKCFG 1039 //Ӳ̽ +//ѹ (NET_DVR_COMPRESSIONCFG_V30ṹ) +#define NET_DVR_GET_COMPRESSCFG_V30 1040 +#define NET_DVR_SET_COMPRESSCFG_V30 1041 + +//ȡ485 (NET_DVR_DECODERCFG_V30ṹ) +#define NET_DVR_GET_DECODERCFG_V30 1042 //ȡ +#define NET_DVR_SET_DECODERCFG_V30 1043 //ý + +//ȡԤ (NET_DVR_PREVIEWCFG_V30ṹ) +#define NET_DVR_GET_PREVIEWCFG_V30 1044 //ȡԤ +#define NET_DVR_SET_PREVIEWCFG_V30 1045 //Ԥ + +//Ԥ (NET_DVR_PREVIEWCFG_AUX_V30ṹ) +#define NET_DVR_GET_PREVIEWCFG_AUX_V30 1046 //ȡԤ +#define NET_DVR_SET_PREVIEWCFG_AUX_V30 1047 //øԤ + +//IPò NET_DVR_IPPARACFGṹ +#define NET_DVR_GET_IPPARACFG 1048 //ȡIPϢ +#define NET_DVR_SET_IPPARACFG 1049 //IPϢ + +//IPò NET_DVR_IPALARMINCFGṹ +#define NET_DVR_GET_IPALARMINCFG 1050 //ȡIPϢ +#define NET_DVR_SET_IPALARMINCFG 1051 //IPϢ + +//IPò NET_DVR_IPALARMOUTCFGṹ +#define NET_DVR_GET_IPALARMOUTCFG 1052 //ȡIPϢ +#define NET_DVR_SET_IPALARMOUTCFG 1053 //IPϢ + +//Ӳ̹IJȡ (NET_DVR_HDCFGṹ) +#define NET_DVR_GET_HDCFG 1054 //ȡӲ̹ò +#define NET_DVR_SET_HDCFG 1055 //Ӳ̹ò +//IJȡ (NET_DVR_HDGROUP_CFGṹ) +#define NET_DVR_GET_HDGROUP_CFG 1056 //ȡò +#define NET_DVR_SET_HDGROUP_CFG 1057 //ò + +//豸(NET_DVR_COMPRESSION_AUDIOṹ) +#define NET_DVR_GET_COMPRESSCFG_AUD 1058 //ȡ豸Խ +#define NET_DVR_SET_COMPRESSCFG_AUD 1059 //豸Խ + +//IPò NET_DVR_IPPARACFG_V31ṹ +#define NET_DVR_GET_IPPARACFG_V31 1060 //ȡIPϢ +#define NET_DVR_SET_IPPARACFG_V31 1061 //IPϢ + +// ͨԴ (NET_DVR_IPPARACFG_V40ṹ) +#define NET_DVR_GET_IPPARACFG_V40 1062 // ȡIP +#define NET_DVR_SET_IPPARACFG_V40 1063 // IP + +#define NET_DVR_GET_CCDPARAMCFG 1067 //IPCȡCCD +#define NET_DVR_SET_CCDPARAMCFG 1068 //IPCCCD + +#define NET_DVR_GET_IOINCFG 1070 //ȡץĻIO +#define NET_DVR_SET_IOINCFG 1071 //ץĻIO + +#define NET_DVR_GET_IOOUTCFG 1072 //ȡץĻIO +#define NET_DVR_SET_IOOUTCFG 1073 //ץĻIO + +#define NET_DVR_GET_FLASHCFG 1074 //ȡIO +#define NET_DVR_SET_FLASHCFG 1075 //IO + +#define NET_DVR_GET_LIGHTSNAPCFG 1076 //ȡץĻ̵Ʋ +#define NET_DVR_SET_LIGHTSNAPCFG 1077 //ץĻ̵Ʋ + +#define NET_DVR_GET_MEASURESPEEDCFG 1078 //ȡץĻٲ +#define NET_DVR_SET_MEASURESPEEDCFG 1079 //ץĻٲ + +#define NET_DVR_GET_IMAGEOVERLAYCFG 1080//ȡץĻͼϢ +#define NET_DVR_SET_IMAGEOVERLAYCFG 1081//ץĻͼϢ + +#define NET_DVR_GET_SNAPCFG 1082//ȡIOץĹ +#define NET_DVR_SET_SNAPCFG 1083//õIOץĹ + +#define NET_DVR_GET_VTPPARAM 1084//ȡȦ +#define NET_DVR_SET_VTPPARAM 1085//Ȧ + +#define NET_DVR_GET_SNAPENABLECFG 1086//ȡץĻʹܲ +#define NET_DVR_SET_SNAPENABLECFG 1087//ץĻʹܲ + +#define NET_DVR_GET_POSTEPOLICECFG 1088//ȡڵ羯 +#define NET_DVR_SET_POSTEPOLICECFG 1089//ÿڵ羯 + +#define NET_DVR_GET_JPEGCFG_V30 1090//ȡץͼJPEG() +#define NET_DVR_SET_JPEGCFG_V30 1091//ץͼJPEG() + +#define NET_DVR_GET_SPRCFG 1092//ȡʶ +#define NET_DVR_SET_SPRCFG 1093//óʶ +#define NET_DVR_GET_PLCCFG 1094//ȡȲ +#define NET_DVR_SET_PLCCFG 1095//óȲ + +#define NET_DVR_GET_DEVICESTATECFG 1096//ȡ豸ǰ״̬ +#define NET_DVR_SET_CALIBRATE_TIME 1097//չʱУʱ +#define NET_DVR_GET_CALIBRATE_TIME 1098//ȡչʱУʱ + +#define NET_DVR_GET_DEVICECFG_V40 1100//ȡչ豸 +#define NET_DVR_SET_DEVICECFG_V40 1101//չ豸 + +#define NET_DVR_GET_ZEROCHANCFG 1102 //ȡͨѹ +#define NET_DVR_SET_ZEROCHANCFG 1103 //ͨѹ + +#define NET_DVR_GET_ZERO_PREVIEWCFG_V30 1104 // ȡͨԤ +#define NET_DVR_SET_ZERO_PREVIEWCFG_V30 1105 // ͨԤ + +#define NET_DVR_SET_ZERO_ZOOM 1106 //ͨ +#define NET_DVR_GET_ZERO_ZOOM 1107 //ȡͨ + +#define NET_DVR_NATASSOCIATECFG_GET 1110 //ȡNATϢ +#define NET_DVR_NATASSOCIATECFG_SET 1111 //NATϢ + +#define NET_DVR_GET_SNMPCFG 1112 //ȡSNMP +#define NET_DVR_SET_SNMPCFG 1113 //SNMP + +#define NET_DVR_GET_SNMPCFG_V30 1114 //ȡSNMPv30 +#define NET_DVR_SET_SNMPCFG_V30 1115 //SNMPv30 + +#define NET_DVR_VIDEOPLATFORMALARMCFG_GET 1130 //ȡƵۺƽ̨ +#define NET_DVR_VIDEOPLATFORMALARMCFG_SET 1131 //Ƶۺƽ̨ + +#define NET_DVR_GET_RAID_ADAPTER_INFO 1134 // ȡϢ +#define NET_DVR_SET_RAID_ADAPTER_INFO 1135 // Ϣ + +#define NET_DVR_MATRIX_BIGSCREENCFG_GET 1140//ȡƴӲ +#define NET_DVR_MATRIX_BIGSCREENCFG_SET 1141//ôƴӲ + +#define NET_DVR_GET_MB_PLATFORMPARA 1145 //ȡƽ̨¼ +#define NET_DVR_SET_MB_PLATFORMPARA 1146 //ƽ̨¼ +#define NET_DVR_GET_MB_DEVSTATUS 1147 //ȡƶ豸״̬ + +#define NET_DVR_GET_DECODER_JOINT_CHAN 1151//ȡͨ +#define NET_DVR_SET_DECODER_JOINT_CHAN 1152//ýͨ + +// +#define NET_DVR_GET_NETCFG_MULTI 1161 //ȡ +#define NET_DVR_SET_NETCFG_MULTI 1162 //ö +#define NET_DVR_GET_NETCFG_MULTI_V50 1163 //ȡ() +#define NET_DVR_SET_NETCFG_MULTI_V50 1164 //ö() + +#define NET_DVR_GET_CMSPARA 1170//ȡƽ̨ +#define NET_DVR_SET_CMSPARA 1171//ƽ̨ +#define NET_DVR_GET_DIALSTATUS 1172//ȡ״̬ +#define NET_DVR_GET_SMSRELATIVEPARA 1173//ȡز +#define NET_DVR_SET_SMSRELATIVEPARA 1174//öز +#define NET_DVR_GET_PINSTATUS 1175//ȡPin״̬ +#define NET_DVR_SET_PINCMD 1176//PIN +#define NET_DVR_SET_SENSOR_CFG 1180//ģ +#define NET_DVR_GET_SENSOR_CFG 1181//ȡģ +#define NET_DVR_SET_ALARMIN_PARAM 1182//ñ +#define NET_DVR_GET_ALARMIN_PARAM 1183//ȡ +#define NET_DVR_SET_ALARMOUT_PARAM 1184//ñ +#define NET_DVR_GET_ALARMOUT_PARAM 1185//ȡ +#define NET_DVR_SET_SIREN_PARAM 1186//þŲ +#define NET_DVR_GET_SIREN_PARAM 1187//ȡŲ +#define NET_DVR_SET_ALARM_RS485CFG 1188//ñ485 +#define NET_DVR_GET_ALARM_RS485CFG 1189//ȡ485 +#define NET_DVR_GET_ALARMHOST_MAIN_STATUS 1190//ȡҪ״̬ +#define NET_DVR_GET_ALARMHOST_OTHER_STATUS 1191//ȡ״̬ +#define NET_DVR_SET_ALARMHOST_ENABLECFG 1192//ȡʹ״̬ +#define NET_DVR_GET_ALARMHOST_ENABLECFG 1193//ñʹ״̬ +#define NET_DVR_SET_ALARM_CAMCFG 1194//Ƶۺƽ̨CAM +#define NET_DVR_GET_ALARM_CAMCFG 1195//Ƶۺƽ̨CAM +#define NET_DVR_GET_GATEWAY_CFG 1196//ȡŽ +#define NET_DVR_SET_GATEWAY_CFG 1197//Ž + +#define NET_DVR_GET_ALARMDIALMODECFG 1198//ȡŲ +#define NET_DVR_SET_ALARMDIALMODECFG 1199//ñŲ +#define NET_DVR_SET_ALARMIN_PARAM_V50 1200 // ÷V50 +#define NET_DVR_GET_ALARMIN_PARAM_V50 1201 // ȡV50 +#define NET_DVR_SET_WINCFG 1202//ڲ +#define NET_DVR_GET_ALARMHOSTDIALSETUPMODE 1204//ȡ÷ʽ +#define NET_DVR_SET_ALARMHOSTDIALSETUPMODE 1205//ñ÷ʽ + +//Ƶ(Ƶ V1.3) +#define NET_DVR_SET_SUBSYSTEM_ALARM 1210 //ϵͳ/ +#define NET_DVR_GET_SUBSYSTEM_ALARM 1211 //ȡϵͳ/ +#define NET_DVR_GET_ALLOWLIST_ALARM 1215 //ȡ +#define NET_DVR_SET_ALLOWLIST_ALARM 1216 // +#define NET_DVR_GET_ALARMHOST_MODULE_LIST 1222 //ȡģ +#define NET_DVR_SET_PRIOR_ALARM 1223 //ϵͳ/ +#define NET_DVR_GET_PRIOR_ALARM 1224 //ȡϵͳ/ +#define NET_DVR_SET_TAMPER_ALARMIN_PARAM 1225 // ÷ +#define NET_DVR_GET_TAMPER_ALARMIN_PARAM 1226 // ȡ + +#define NET_DVR_GET_HOLIDAY_PARAM_CFG 1240// ȡڼղ +#define NET_DVR_SET_HOLIDAY_PARAM_CFG 1241// ýڼղ + +#define NET_DVR_GET_MOTION_HOLIDAY_HANDLE 1242// ȡƶձʽ +#define NET_DVR_SET_MOTION_HOLIDAY_HANDLE 1243// ȡƶձʽ + +#define NET_DVR_GET_VILOST_HOLIDAY_HANDLE 1244// ȡƵźŶʧձʽ +#define NET_DVR_SET_VILOST_HOLIDAY_HANDLE 1245// ȡƵźŶʧձʽ + +#define NET_DVR_GET_HIDE_HOLIDAY_HANDLE 1246// ȡڸǼձʽ +#define NET_DVR_SET_HIDE_HOLIDAY_HANDLE 1247// ڸǼձʽ + +#define NET_DVR_GET_ALARMIN_HOLIDAY_HANDLE 1248// ȡձʽ +#define NET_DVR_SET_ALARMIN_HOLIDAY_HANDLE 1249// ñձʽ +#define NET_DVR_GET_ALARMOUT_HOLIDAY_HANDLE 1250// ȡձʽ +#define NET_DVR_SET_ALARMOUT_HOLIDAY_HANDLE 1251// ñձʽ +#define NET_DVR_GET_HOLIDAY_RECORD 1252// ȡ¼ +#define NET_DVR_SET_HOLIDAY_RECORD 1253// ü¼ +#define NET_DVR_GET_NETWORK_BONDING 1254// ȡBONDING +#define NET_DVR_SET_NETWORK_BONDING 1255// BONDING +#define NET_DVR_GET_LINK_STATUS 1256// ȡͨIP״̬ +#define NET_DVR_GET_DISK_QUOTA_CFG 1278// ȡϢ +#define NET_DVR_SET_DISK_QUOTA_CFG 1279// ôϢ +#define NET_DVR_GET_JPEG_CAPTURE_CFG 1280// ȡDVRץͼ +#define NET_DVR_SET_JPEG_CAPTURE_CFG 1281// DVRץͼ +#define NET_DVR_GET_SCHED_CAPTURECFG 1282// ȡץͼƻ +#define NET_DVR_SET_SCHED_CAPTURECFG 1283// ץͼƻ +#define NET_DVR_GET_VGA_PREVIEWCFG 1284// ȡVGAԤ +#define NET_DVR_SET_VGA_PREVIEWCFG 1285// VGAԤ +#define NET_DVR_GET_VIDEO_INPUT_EFFECT 1286// ȡͨƵͼ +#define NET_DVR_SET_VIDEO_INPUT_EFFECT 1287// ͨƵͼ + +#define NET_DVR_GET_STORAGE_SERVER_SWITCH 1290//ȡ洢״̬ +#define NET_DVR_SET_STORAGE_SERVER_SWITCH 1291//ô洢״̬ + +#define NET_DVR_GET_DISK_QUOTA_CFG_V60 1292//ȡϢV60 +#define NET_DVR_SET_DISK_QUOTA_CFG_V60 1293//ôϢV60 + +#define NET_DVR_GET_OPTICAL_CHANNEL 1300//ȡϵͳͨϢ +#define NET_DVR_SET_OPTICAL_CHANNEL 1301//ùϵͳͨϢ +#define NET_DVR_GET_FIBER_CASCADE 1302//ȡ˼ģʽ +#define NET_DVR_SET_FIBER_CASCADE 1303//ù˼ģʽ +#define NET_DVR_GET_SPARTAN_STATUS 1304//ȡ״̬ +#define NET_DVR_SET_SPARTAN_STATUS 1305//ó״̬ +#define NET_DVR_GET_ETHERNET_CHANNEL 1306//ȡ˿ھۺϲ +#define NET_DVR_SET_ETHERMET_CHANNEL 1307//ö˿ھۺϲ +#define NET_DVR_OPTICAL_REBOOT 1320//˻ +#define NET_DVR_SET_AUDIOCHAN_CFG 1321//Ƶл +#define NET_DVR_GET_AUDIOCHAN_CFG 1322//ȡƵл +//SDI1.0 +#define NET_DVR_SET_MATRIX_BASE_CFG 1332 //þ +#define NET_DVR_GET_MATRIX_BASE_CFG 1333 //ȡ +#define NET_DVR_SWITCH_MATRIX_IO 1334 //л +#define NET_DVR_GET_MATRIX_IO_RELATION 1335 //ȡϵ + +#define NET_DVR_V6PSUBSYSTEMARAM_GET 1501//ȡV6ϵͳ +#define NET_DVR_V6PSUBSYSTEMARAM_SET 1502//V6ϵͳ +#define NET_DVR_GET_ALLWINCFG 1503 //ڲȡ + +#define NET_DVR_BIGSCREENASSOCIATECFG_GET 1511 //ȡ +#define NET_DVR_BIGSCREENASSOCIATECFG_SET 1512 //ô + +//1200 +#define NET_DVR_GETSCREENINFO 1601 //ȡϢ +#define NET_DVR_SETSCREENINFO 1602 //ôϢ +#define NET_DVR_GET_SCREEN_WINCFG 1603//ڲȡ +#define NET_DVR_LAYOUTLIST_GET 1605//ȡб +#define NET_DVR_SET_LAYOUTCFG 1606 // +#define NET_DVR_LAYOUTCTRL 1607//ֿƣ1-open2-close +#define NET_DVR_INPUTLIST_GET 1608 //ȡźԴб +#define NET_DVR_SET_INPUTSTREAMCFG 1609 //źԴ +#define NET_DVR_OUTPUT_SET 1610 // +#define NET_DVR_OUTPUT_GET 1611 //ȡ +#define NET_DVR_SET_OSDCFG 1612 //OSD +#define NET_DVR_GET_OSDCFG 1613 //OSDȡ +#define NET_DVR_BIGSCREEN_GETSERIAL 1614//ȡϢ +#define NET_DVR_GET_PLANLIST 1615//ȡԤб +#define NET_DVR_SET_PLAN 1616//Ԥ +#define NET_DVR_CTRL_PLAN 1617//Ԥ +#define NET_DVR_GET_DEVICE_RUN_STATUS 1618//ȡ豸״̬ +#define NET_DVR_GET_EXTERNAL_MATRIX_CFG 1619//ȡϢ +#define NET_DVR_SET_EXTERNAL_MATRIX_CFG 1620//þϢ +#define NET_DVR_GET_OUTPUT_SCREEN_RELATION 1621//ȡĻİ󶨹ϵ +#define NET_DVR_SET_OUTPUT_SCREEN_RELATION 1622//Ļİ󶨹ϵ +#define NET_DVR_GET_VCS_USER_CFG 1623//ȡûϢ +#define NET_DVR_SET_VCS_USER_CFG 1624//ûϢ +#define NET_DVR_CONTROL_SCREEN 1625//Ļ +#define NET_DVR_GET_EXTERNAL_MATRIX_CFG_V50 1626 //ȡϢ +#define NET_DVR_SET_EXTERNAL_MATRIX_CFG_V50 1627 //þϢ + +#define NET_DVR_GET_DEV_BASEINFO 1650//ȡ豸Ϣ +#define NET_DVR_SET_DEV_BASEINFO 1651//õ豸Ϣ +#define NET_DVR_GET_DEV_NETINFO 1652//ȡ豸Ϣ +#define NET_DVR_SET_DEV_NETINFO 1653//豸Ϣ +#define NET_DVR_GET_SIGNAL_SOURCE_INFO 1654//ȡźԴϢ +#define NET_DVR_SET_SIGNAL_SOURCE_INFO 1655//źԴϢ +#define NET_DVR_ADJUST_PIC_V40 1656//ͼ΢ +#define NET_DVR_RESTORE_V40 1657//ָĬϲ +#define NET_DVR_SET_NET_SIGNAL 1658//źԴ +#define NET_DVR_REBOOT_V40 1659// +#define NET_DVR_CONTROL_PICTURE_V41 1660//ͼƬV41 + +#define NET_DVR_GET_AUTO_REBOOT_CFG 1710//ȡԶ +#define NET_DVR_SET_AUTO_REBOOT_CFG 1711//Զ +#define NET_DVR_GET_TRUNK_USE_STATE 1713//ȡָʹ״̬ +#define NET_DVR_SET_PTZ_CTRL_INFO 1714//PTZƲ +#define NET_DVR_GET_PTZ_CTRL_INFO 1715//ȡPTZƲ +#define NET_DVR_GET_PTZ_STATUS 1716//ȡPTZ״̬ +#define NET_DVR_GET_DISP_ROUTE_LIST 1717//ȡʾ·б + +#define NET_DVR_GET_DEC_RESOURCE_LIST 1720//ȡýԴб +#define NET_DVR_SET_DEC_RESOURCE_LIST 1721//ԤԴ +#define NET_DVR_GET_DEC_YUV 1722//ȡͨYUV +#define NET_DVR_SET_DEC_YUV 1723//ýͨYUV +#define NET_DVR_GET_DEC_RESOUCE 1724//Ƶۺƽ̨Դ +#define NET_DVR_FREE_DEC_RESOURCE 1725//ͷŽԴ + +#define NET_DVR_SET_VIDEOWALLDISPLAYMODE 1730//õǽƴģʽ +#define NET_DVR_GET_VIDEOWALLDISPLAYMODE 1731//ȡǽƴģʽ +#define NET_DVR_GET_VIDEOWALLDISPLAYNO 1732//ȡ豸ʾ +#define NET_DVR_SET_VIDEOWALLDISPLAYPOSITION 1733//ʾλò +#define NET_DVR_GET_VIDEOWALLDISPLAYPOSITION 1734//ȡʾλò +#define NET_DVR_GET_VIDEOWALLWINDOWPOSITION 1735//ȡǽڲ +#define NET_DVR_SET_VIDEOWALLWINDOWPOSITION 1736//õǽڲ +#define NET_DVR_VIDEOWALLWINDOW_CLOSEALL 1737//ǽرд +#define NET_DVR_SET_VIRTUALLED 1738//LED +#define NET_DVR_GET_VIRTUALLED 1739//LEDȡ +#define NET_DVR_GET_IMAGE_CUT_MODE 1740//ȡͼиģʽ +#define NET_DVR_SET_IMAGE_CUT_MODE 1741//ͼиģʽ +#define NET_DVR_GET_USING_SERIALPORT 1742//ȡǰʹô +#define NET_DVR_SET_USING_SERIALPORT 1743//õǰʹô +#define NET_DVR_SCENE_CONTROL 1744// +#define NET_DVR_GET_CURRENT_SCENE 1745//ȡǰ +#define NET_DVR_GET_VW_SCENE_PARAM 1746//ȡǽģʽ +#define NET_DVR_SET_VW_SCENE_PARAM 1747//õǽģʽ +#define NET_DVR_DISPLAY_CHANNO_CONTROL 1748//ǽʾſ +#define NET_DVR_GET_WIN_DEC_INFO 1749//ȡڽϢ +#define NET_DVR_RESET_VIDEOWALLDISPLAYPOSITION 1750 //ǽӿڰ +#define NET_DVR_SET_VW_AUDIO_CFG 1752 //Ƶл +#define NET_DVR_GET_VW_AUDIO_CFG 1753 //ȡƵл +#define NET_DVR_GET_GBT28181_DECCHANINFO_CFG 1754 //ȡGBT28181Э豸ĽͨϢ +#define NET_DVR_SET_GBT28181_DECCHANINFO_CFG 1755 //GBT28181Э豸ĽͨϢ +#define NET_DVR_SET_MAINBOARD_SERIAL 1756 //ذ崮ڲ +#define NET_DVR_GET_MAINBOARD_SERIAL 1757 //ȡذ崮ڲ +#define NET_DVR_GET_SUBBOARD_INFO 1758 //ȡӰϢ +#define NET_DVR_GET_SUBBOARD_EXCEPTION 1759 //ȡ쳣Ӱ쳣Ϣ + +#define NET_DVR_GET_CAMERACHAN_SERIALCFG 1760 //ȡCameraͨ󶨴 +#define NET_DVR_SET_CAMERACHAN_SERIALCFG 1761 //Cameraͨ󶨴 +#define NET_DVR_GET_MATRIX_STATUS 1762 //ȡƵۺƽ̨״̬ +#define NET_SET_MULTIFUNCTION_SERIALCFG 1763 //ö๦ܴ +#define NET_GET_MULTIFUNCTION_SERIALCFG 1764 //ȡ๦ܴ +#define NET_DVR_PTZ_3D_SPEED 1765 // 3άٶȵ̨ + +#define NET_DVR_GET_SIGNAL_JOINT 1766 //ȡźԴ +#define NET_DVR_SET_SIGNAL_JOINT 1767 //źԴ +#define NET_DVR_SIGNAL_CUT 1768 //źԴü +#define NET_DVR_DYNAMIC_DECODE_BATCH 1769 //̬ +#define NET_DVR_DECSWITCH_SET_BATCH 1770 //ýͨ +#define NET_DVR_DECSWITCH_GET_BATCH 1771 //ȡͨ +#define NET_DVR_GET_ALL_SIGNAL_JOINT 1772 //ȡźԴ +#define NET_DVR_GET_PLAYING_PLAN 1773 //ȡִԤ +#define NET_DVR_WALL_RELATION_GET 1774 //ȡ豸ǽǽĹ +#define NET_DVR_WALL_RELATION_SET 1775 //豸ǽǽĹ +#define NET_DVR_SET_INPUTSTREAMCFG_V40 1776 //źԴ +#define NET_DVR_PTZCFG_INPUTSTREAM_GET 1777 //ȡԴ̨ +#define NET_DVR_PTZCFG_INPUTSTREAM_SET 1778 //Դ̨ +#define NET_DVR_SIGNAL_CUTPARAM_GET 1779 //ȡźԴü + +#define NET_DVR_GET_SUBSYSTEM_NETCFG 1780 //ȡϵͳ +#define NET_DVR_SET_SUBSYSTEM_NETCFG 1781 //ϵͳ +#define NET_DVR_DEL_SIGNAL_JOINT 1782 //ɾƴźԴ + +#define NET_DVR_GET_PICTURE_INFO 1783 //ȡͼƬϢ +#define NET_DVR_SET_PICTURE_INFO 1784 //ͼƬϢ +#define NET_DVR_GET_VIDEO_INFO 1785 //ȡƵϢ +#define NET_DVR_SET_VIDEO_INFO 1786 //ƵϢ +#define NET_DVR_SET_PLAYLIST 1787 //òб +#define NET_DVR_GET_PLAYLIST 1788 //ȡб +#define NET_DVR_GET_ALL_PLAYLIST 1789 //ȡвб +#define NET_DVR_PLAYITEM_CONTROL 1790 // +#define NET_DVR_SET_PLAYPLAN_TEMPLATE 1791 //òżƻģ +#define NET_DVR_GET_PLAYPLAN_TEMPLATE 1792 //ȡżƻ +#define NET_DVR_GET_ALL_PLAYPLAN_TEMPLATE 1793 //ȡвżƻ +#define NET_DVR_SET_WINDOW_PLAYPLAN 1794 //ôڲżƻ +#define NET_DVR_GET_WINDOW_PLAYPLAN 1795 //ȡڲżƻ +#define NET_DVR_TOPLAY_ITEM 1796 //ָ +#define NET_DVR_DEVICE_PLAY_CONTROL 1797 //豸ſ +#define NET_DVR_GET_PLAY_INFO 1798 //ȡǰϢ +#define NET_DVR_GET_ALL_PICTURE_INFO 1799 //ȡͼƬϢ +#define NET_DVR_GET_ALL_VIDEO_INFO 1800 //ȡƵϢ +#define NET_DVR_DELETE_VIDEO_FILE 1801 //ɾƵ + + +#define NET_DVR_GET_ALARMHOSTSUBSYSTEM_CFG 2001//ȡϵͳ +#define NET_DVR_SET_ALARMHOSTSUBSYSTEM_CFG 2002//ϵͳ +#define NET_DVR_GETEXTENDALARMININFO 2003//ȡϢ +#define NET_DVR_MODIFYALARMINNO 2004//޸ķϢ +#define NET_DVR_GET_ALARMHOST_WIRELESS_NETWORK_CFG 2005//ȡ +#define NET_DVR_SET_ALARMHOST_WIRELESS_NETWORK_CFG 2006// +#define NET_DVR_GET_ALARMHOST_NETCFG 2007//ȡ +#define NET_DVR_SET_ALARMHOST_NETCFG 2008// +#define NET_DVR_GET_LED_SCREEN_CFG 2009// ȡLEDĻ +#define NET_DVR_SET_LED_SCREEN_CFG 2010// LEDĻ +#define NET_DVR_GET_LED_CONTENT_CFG 2011// ȡLED +#define NET_DVR_SET_LED_CONTENT_CFG 2012// LED +#define NET_DVR_TURNON_LED 2013// LED +#define NET_DVR_TURNOFF_LED 2014// رLED +#define NET_DVR_GET_LED_TIMER_SWITCH 2015// ȡLEDʱز +#define NET_DVR_SET_LED_TIMER_SWITCH 2016// LEDʱز +#define NET_DVR_SET_LED_BRIGHTNESS 2017// ֶLED +#define NET_DVR_GET_LED_TIMER_BRIGHTNESS 2018//÷ʱLED +#define NET_DVR_SET_LED_TIMER_BRIGHTNESS 2019//ȡʱLED +#define NET_DVR_LED_CHECKTIME 2020//LEDУʱ +#define NET_DVR_GET_ALARMHOST_AUDIO_ASSOCIATE_ALARM 2021//ȡƵ¼ +#define NET_DVR_SET_ALARMHOST_AUDIO_ASSOCIATE_ALARM 2022//Ƶ¼ +#define NET_DVR_GET_LED_STATUS 2023//ȡLED״̬ +#define NET_DVR_CLOSE_SUBSYSTEM_FAULT_ALARM 2027//رϵͳʾ +#define NET_DVR_SET_SUBSYSTEM_BYPASS 2028//ϵͳ· +#define NET_DVR_CANCEL_SUBSYSTEM_BYPASS 2029//ϵͳ·ָ + +#define NET_DVR_GET_ALARMHOST_SUBSYSTEM_CFG_EX 2030//ȡϵͳչ +#define NET_DVR_SET_ALARMHOST_SUBSYSTEM_CFG_EX 2031//ϵͳչ +#define NET_DVR_GET_ALARMHOST_PRINTER_CFG 2032//ȡӡӡʹ +#define NET_DVR_SET_ALARMHOST_PRINTER_CFG 2033//ôӡӡʹ +#define NET_DVR_GET_ALARMHOST_ZONE_LIST_IN_SUBSYSTEM 2034//ȡָϵͳڵз +#define NET_DVR_GET_ALARMHOST_TRIGGER_LIST 2035//ȡд +#define NET_DVR_ARM_ALARMHOST_SUBSYSTEM 2036//Ͷϵͳ +#define NET_DVR_GET_ALARMHOST_EVENT_TRIG_ALARMOUT_CFG 2037// ȡ¼ +#define NET_DVR_SET_ALARMHOST_EVENT_TRIG_ALARMOUT_CFG 2038// ¼ +#define NET_DVR_GET_ALARMHOST_FAULT_CFG 2039// ȡϴ +#define NET_DVR_SET_ALARMHOST_FAULT_CFG 2040// ùϴ +#define NET_DVR_SEARCH_ARMHOST_EXTERNAL_MODULE 2041//Զ +#define NET_DVR_REGISTER_ALARMHOST_EXTERNAL_MODULE 2042//Զע +#define NET_DVR_CLOSE_ALARMHOST_OVERALL_FAULT_ALARM 2043//رȫֹʾ + +#define NET_DVR_GET_SAFETYCABIN_WORK_MODE 2044 //ȡչģʽ +#define NET_DVR_SET_SAFETYCABIN_WORK_MODE 2045 //÷չģʽ +#define NET_DVR_GET_SAFETYCABIN_PERSON_SIGNAL_CFG 2046 //ȡź̽ +#define NET_DVR_SET_SAFETYCABIN_PERSON_SIGNAL_CFG 2047 //÷ź̽ + +#define NET_DVR_GET_ALARMHOST_MODULE_CFG 2048//ȡģϢ +//#define NET_DVR_SET_ALARMHOST_MODULE_CFG 2049//ģϢ(Ԥ) + +#define NET_DVR_GET_ALARMHOST_EXTERNAL_DEVICE_STATE 2050//ȡ485豸״̬ +#define NET_DVR_SET_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE 2051//豸ֵ +#define NET_DVR_GET_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE 2052//ȡ豸ֵ +#define NET_DVR_GET_ALARMHOST_SENSOR_JOINT_CFG 2053// ȡģ +#define NET_DVR_SET_ALARMHOST_SENSOR_JOINT_CFG 2054// ģ +#define NET_DVR_SET_ALARMHOST_RS485_SLOT_CFG 2055// ñ485λ +#define NET_DVR_GET_ALARMHOST_RS485_SLOT_CFG 2056// ȡ485λ + +#define NET_DVR_GET_ALL_VARIABLE_INFO 2057 // ȡбԪϢ +#define NET_DVR_GET_ALARM_POINT_CFG 2058 // ȡϢ +#define NET_DVR_SET_ALARM_POINT_CFG 2059 // õϢ +#define NET_DVR_GET_HISTORY_VALUE 2060 // ȡʷ +#define NET_DVR_GET_ALARMHOST_ALARM_MODE 2061 // ȡϴʽ +#define NET_DVR_SET_ALARMHOST_ALARM_MODE 2062 // ϴʽ +#define NET_DVR_GET_ALARMHOST_SENSOR_VALUE 2063 // ȡģʵʱ + +#define NET_DVR_GET_ALARMHOST_REPORT_CENTER_V40 2064 // ȡϴʽ +#define NET_DVR_SET_ALARMHOST_REPORT_CENTER_V40 2065 // ϴʽ +#define NET_DVR_GET_OUTPUT_SCHEDULE_RULECFG 2068 // ȡʱ +#define NET_DVR_SET_OUTPUT_SCHEDULE_RULECFG 2069 // ʱ +#define NET_DVR_GET_CMS_CFG 2070 +#define NET_DVR_SET_CMS_CFG 2071 + +#define NET_DVR_GET_PASSTHROUGH_CAP 2073 //ȡ豸͸ + +#define NET_DVR_GET_ALARMHOST_MAIN_STATUS_V40 2072 // ȡҪ״̬V40 +#define NET_DVR_GET_ALARMHOST_MAIN_STATUS_V51 2083 // ȡҪ״̬V51 + +/*************************************Ƶ1.3 begin*************************************/ +#define NET_DVR_GET_ALARM_CAPTRUE_CFG 2074 //ȡץͼ +#define NET_DVR_SET_ALARM_CAPTRUE_CFG 2075 //ñץͼ +#define NET_DVR_GET_ONE_OUTPUT_SCH_RULECFG_V40 2078 // ȡʱV40 +#define NET_DVR_SET_ONE_OUTPUT_SCH_RULECFG_V40 2079 // õʱV40 +#define NET_DVR_GET_OUTPUT_SCHEDULE_RULECFG_V40 2080 // ȡʱV40 +#define NET_DVR_SET_OUTPUT_SCHEDULE_RULECFG_V40 2081 // ʱV40 +#define NET_DVR_ALARMHOST_CLOSE_SUBSYSTEM 2082 //ϵͳ +/*************************************Ƶ1.3 end**************************************/ + + +#define NET_DVR_GET_WEEK_PLAN_CFG 2100 //ȡ״̬ܼƻ +#define NET_DVR_SET_WEEK_PLAN_CFG 2101 //״̬ܼƻ +#define NET_DVR_GET_DOOR_STATUS_HOLIDAY_PLAN 2102 //ȡ״̬ռƻ +#define NET_DVR_SET_DOOR_STATUS_HOLIDAY_PLAN 2103 //״̬ռƻ +#define NET_DVR_GET_DOOR_STATUS_HOLIDAY_GROUP 2104 //ȡ״̬ +#define NET_DVR_SET_DOOR_STATUS_HOLIDAY_GROUP 2105 //״̬ +#define NET_DVR_GET_DOOR_STATUS_PLAN_TEMPLATE 2106 //ȡ״̬ƻģ +#define NET_DVR_SET_DOOR_STATUS_PLAN_TEMPLATE 2107 //״̬ƻģ +#define NET_DVR_GET_DOOR_CFG 2108 //ȡŲ +#define NET_DVR_SET_DOOR_CFG 2109 //Ų +#define NET_DVR_GET_DOOR_STATUS_PLAN 2110 //ȡ״̬ƻ +#define NET_DVR_SET_DOOR_STATUS_PLAN 2111 //״̬ƻ +#define NET_DVR_GET_GROUP_CFG 2112 //ȡȺ +#define NET_DVR_SET_GROUP_CFG 2113 //Ⱥ +#define NET_DVR_GET_MULTI_CARD_CFG 2114 //ȡؿ +#define NET_DVR_SET_MULTI_CARD_CFG 2115 //öؿ +#define NET_DVR_GET_CARD_CFG 2116 //ȡ +#define NET_DVR_SET_CARD_CFG 2117 //ÿ +#define NET_DVR_CLEAR_ACS_PARAM 2118 //Ž +#define NET_DVR_GET_SNEAK_CFG 2119 //ȡDZز +#define NET_DVR_SET_SNEAK_CFG 2120 //÷DZز +#define NET_DVR_GET_MULTI_DOOR_INTERLOCK_CFG 2121 //ȡŻ +#define NET_DVR_SET_MULTI_DOOR_INTERLOCK_CFG 2122 //öŻ +#define NET_DVR_GET_ACS_WORK_STATUS 2123 //ȡŽ״̬ +#define NET_DVR_GET_VERIFY_WEEK_PLAN 2124 //ȡ֤ʽܼƻ +#define NET_DVR_SET_VERIFY_WEEK_PLAN 2125 //ö֤ʽܼƻ +#define NET_DVR_GET_CARD_RIGHT_WEEK_PLAN 2126 //ȡȨܼƻ +#define NET_DVR_SET_CARD_RIGHT_WEEK_PLAN 2127 //ÿȨܼƻ +#define NET_DVR_GET_VERIFY_HOLIDAY_PLAN 2128 //ȡ֤ʽռƻ +#define NET_DVR_SET_VERIFY_HOLIDAY_PLAN 2129 //ö֤ʽռƻ +#define NET_DVR_GET_CARD_RIGHT_HOLIDAY_PLAN 2130 //ȡȨ޼ռƻ +#define NET_DVR_SET_CARD_RIGHT_HOLIDAY_PLAN 2131 //ÿȨ޼ռƻ +#define NET_DVR_GET_VERIFY_HOLIDAY_GROUP 2132 //ȡ֤ʽ +#define NET_DVR_SET_VERIFY_HOLIDAY_GROUP 2133 //ö֤ʽ +#define NET_DVR_GET_CARD_RIGHT_HOLIDAY_GROUP 2134 //ȡȨ޼ +#define NET_DVR_SET_CARD_RIGHT_HOLIDAY_GROUP 2135 //ÿȨ޼ +#define NET_DVR_GET_VERIFY_PLAN_TEMPLATE 2136 //ȡ֤ʽƻģ +#define NET_DVR_SET_VERIFY_PLAN_TEMPLATE 2137 //ö֤ʽƻģ +#define NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE 2138 //ȡȨ޼ƻģ +#define NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE 2139 //ÿȨ޼ƻģ +#define NET_DVR_GET_CARD_READER_CFG 2140 //ȡ +#define NET_DVR_SET_CARD_READER_CFG 2141 //ö +#define NET_DVR_GET_CARD_READER_PLAN 2142 //ȡ֤ƻ +#define NET_DVR_SET_CARD_READER_PLAN 2143 //ö֤ƻ +#define NET_DVR_GET_CASE_SENSOR_CFG 2144 //ȡ¼ +#define NET_DVR_SET_CASE_SENSOR_CFG 2145 //¼ +#define NET_DVR_GET_CARD_READER_ANTI_SNEAK_CFG 2146 //ȡDZز +#define NET_DVR_SET_CARD_READER_ANTI_SNEAK_CFG 2147 //öDZز +#define NET_DVR_GET_PHONE_DOOR_RIGHT_CFG 2148 //ȡֻȨ޲ +#define NET_DVR_SET_PHONE_DOOR_RIGHT_CFG 2149 //ȡֻȨ޲ +#define NET_DVR_GET_FINGERPRINT_CFG 2150 //ȡָƲ +#define NET_DVR_SET_FINGERPRINT_CFG 2151 //ָƲ +#define NET_DVR_DEL_FINGERPRINT_CFG 2152 //ɾָƲ +#define NET_DVR_GET_EVENT_CARD_LINKAGE_CFG 2153 //ȡ¼ò +#define NET_DVR_SET_EVENT_CARD_LINKAGE_CFG 2154 //¼ò +#define NET_DVR_GET_ANTI_SNEAK_HOST_CFG 2155 //ȡ鷴DZز +#define NET_DVR_SET_ANTI_SNEAK_HOST_CFG 2156 //鷴DZز +#define NET_DVR_GET_READER_ANTI_SNEAK_HOST_CFG 2157 //ȡDZز +#define NET_DVR_SET_READER_ANTI_SNEAK_HOST_CFG 2158 //DZز +#define NET_DVR_GET_ACS_CFG 2159 //ȡŽ +#define NET_DVR_SET_ACS_CFG 2160 //Ž +#define NET_DVR_GET_CARD_PASSWD_CFG 2161 //ȡ뿪ʹ +#define NET_DVR_SET_CARD_PASSWD_CFG 2162 //ÿ뿪ʹ +#define NET_DVR_GET_CARD_USERINFO_CFG 2163 //ȡŹûϢ +#define NET_DVR_SET_CARD_USERINFO_CFG 2164 //ÿŹûϢ + +#define NET_DVR_GET_ACS_EXTERNAL_DEV_CFG 2165 //ȡŽ +#define NET_DVR_SET_ACS_EXTERNAL_DEV_CFG 2166 //Ž +#define NET_DVR_GET_PERSONNEL_CHANNEL_CFG 2167 //ȡԱͨ +#define NET_DVR_SET_PERSONNEL_CHANNEL_CFG 2168 //Աͨ +#define NET_DVR_SET_PLATFORM_VERIFY_CFG 2169 //·ƽ̨֤ +#define NET_DVR_GET_PERSON_STATISTICS_CFG 2170 //ȡͳƲ +#define NET_DVR_SET_PERSON_STATISTICS_CFG 2171 //ͳƲ +#define NET_DVR_GET_ACS_SCREEN_DISPLAY_CFG 2172 //ȡĻַʾ +#define NET_DVR_SET_ACS_SCREEN_DISPLAY_CFG 2173 //Ļַʾ +#define NET_DVR_GET_GATE_TIME_CFG 2174 //ȡԱͨբʱ +#define NET_DVR_SET_GATE_TIME_CFG 2175 //Աͨբʱ +#define NET_DVR_GET_LOCAL_CONTROLLER_STATUS 2176 //ȡ͵ؿ״̬ +#define NET_DVR_GET_ONLINE_LOCAL_CONTROLLER 2177 //߾͵ؿ +#define NET_DVR_GET_CARD_CFG_V50 2178 //ȡ¿(V50) +#define NET_DVR_SET_CARD_CFG_V50 2179 //¿(V50) +#define NET_DVR_GET_ACS_WORK_STATUS_V50 2180 //ȡŽ״̬(V50) +#define NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V50 2181 //ȡ¼ò(V50) +#define NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V50 2182 //¼ò(V50) +#define NET_DVR_GET_FINGERPRINT_CFG_V50 2183 //ȡָƲV50 +#define NET_DVR_SET_FINGERPRINT_CFG_V50 2184 //ָƲV50 + +#define NET_DVR_GET_SAFETYCABIN_STATE 2197 //ȡ״̬ +#define NET_DVR_GET_RS485_CASCADE_CFG 2198 //ȡRs485豸 +#define NET_DVR_SET_RS485_CASCADE_CFG 2199 //Rs485豸 + +/*************************************Ƶ2.0 begin*************************************/ +#define NET_DVR_GET_REMOTECONTROLLER_PERMISION_CFG 2200 //ȡңȨ޲ +#define NET_DVR_SET_REMOTECONTROLLER_PERMISION_CFG 2201 //ңȨ޲ +#define NET_DVR_GET_KEYBOARD_CFG 2202 //ȡ̲ +#define NET_DVR_SET_KEYBOARD_CFG 2203 //ü̲ +#define NET_DVR_GET_ALARMHOST_WIRELESS_BUSINNESS_INFO 2204 //ҵѯ +#define NET_DVR_GET_ALL_REMOTECONTROLLER_LIST 2205 //ȡң +#define NET_DVR_GET_PREVIEW_DELAY_CFG 2206 //ȡӳԤ +#define NET_DVR_SET_PREVIEW_DELAY_CFG 2207 //ӳԤ +#define NET_DVR_GET_ZONE_CHANNEL_LINKAGE_CFG 2208 //ȡƵͨ +#define NET_DVR_SET_ZONE_CHANNEL_LINKAGE_CFG 2209 //÷Ƶͨ +#define NET_DVR_GET_CENTER_SERVER_CFG 2210 //ȡķ +#define NET_DVR_SET_CENTER_SERVER_CFG 2211 //ñķ +/*************************************Ƶ2.0 end**************************************/ + +/********************************һʽƷV1.0.0 begin********************************/ +#define NET_DVR_GET_EMERGENCE_ALARM_PRODUCT_CAP 2212 //ȡһʽƷ +#define NET_DVR_GET_CALL_WAITTING_CFG_CAP 2213 //ȡеȴ +#define NET_DVR_GET_CALL_WAITTING_CFG 2214 //ȡеȴ +#define NET_DVR_SET_CALL_WAITTING_CFG 2215 //úеȴ +#define NET_DVR_GET_ALARM_LAMP_CFG_CAP 2216 //ȡƲ +#define NET_DVR_GET_ALARM_LAMP_CFG 2217 //ȡƲ +#define NET_DVR_SET_ALARM_LAMP_CFG 2218 //þƲ +#define NET_DVR_GET_VOICE_PROMPTION_CFG_CAP 2219 //ȡʾ +#define NET_DVR_GET_VOICE_PROMPTION_CFG 2220 //ȡʾ +#define NET_DVR_SET_VOICE_PROMPTION_CFG 2221 //ʾ +#define NET_DVR_GET_EMERGENCE_ALARM_RESPONSE_CAP 2222 //ȡ +#define NET_DVR_EMERGENCE_ALARM_RESPONSE_CTRL 2223 // +/********************************һʽƷV1.0.0 end**********************************/ + +//籨 V2.2 +#define NET_DVR_GET_ALARMHOST_NETCFG_V50 2224 //ȡV50 +#define NET_DVR_SET_ALARMHOST_NETCFG_V50 2225 //ñV50 +#define NET_DVR_REGISTER_ALARM_RS485 2226 //RS485ע +/**********************************V3.0****************************************/ + +#define NET_DVR_GET_ALARMIN_PARAM_LIST 2227 //ȡб +//߱1.0.0 +#define NET_DVR_GET_ALARMHOST_OTHER_STATUS_V50 2228 //ȡ״̬v50 +#define NET_DVR_GET_ALARMHOST_OTHER_STATUS_V51 2236 //ȡ״̬V51 +#define NET_DVR_GET_ALARMIN_ASSOCIATED_CHAN_LIST 2229 //ȡƵͨб +#define NET_DVR_GET_ALARMIN_TRIGGER 2230 //ȡ +#define NET_DVR_SET_ALARMIN_TRIGGER 2231 //ñ +#define NET_DVR_GET_EMERGENCY_CALL_HELP_TRIGGER 2232 //ȡ +#define NET_DVR_SET_EMERGENCY_CALL_HELP_TRIGGER 2233 //ñ +#define NET_DVR_GET_CONSULT_TRIGGER 2234 //ȡҵѯ +#define NET_DVR_SET_CONSULT_TRIGGER 2235 //ñҵѯ +#define NET_DVR_GET_ALARMIN_PARAM_LIST_V50 2237 //ȡбV50 + +#define NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50 2304 //ȡȨܼƻV50 +#define NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50 2305 //ÿȨܼƻV50 + +#define NET_DVR_GET_CARD_RIGHT_HOLIDAY_PLAN_V50 2310 //ȡȨ޼ռƻV50 +#define NET_DVR_SET_CARD_RIGHT_HOLIDAY_PLAN_V50 2311 //ÿȨ޼ռƻV50 + +#define NET_DVR_GET_CARD_RIGHT_HOLIDAY_GROUP_V50 2316 //Ȩ޼V50 +#define NET_DVR_SET_CARD_RIGHT_HOLIDAY_GROUP_V50 2317 //ÿȨ޼V50 + +#define NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE_V50 2322 //ȡȨ޼ƻģV50 +#define NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50 2323//ÿȨ޼ƻģV50 + +/**********************************ָŽƷV1.0 豸****************************************/ +#define NET_DVR_GET_SCHEDULE_INFO 2500 //ȡŰϢ +#define NET_DVR_GET_ATTENDANCE_SUMMARY_INFO 2501 //ȡڻϢ +#define NET_DVR_GET_ATTENDANCE_RECORD_INFO 2502 //ȡڼ¼Ϣ +#define NET_DVR_GET_ABNORMAL_INFO 2503 //ȡ쳣ͳϢ +/**********************************ָŽƷV1.0****************************************/ + +/*************************************ƵŽһ1.0 begin**************************************/ +#define NET_DVR_CAPTURE_FINGERPRINT_INFO 2504 //ɼָϢ +/*************************************ƵŽһ1.0 end**************************************/ + +/*************************************Ƕʽն1.0 begin**************************************/ +#define NET_DVR_BULK_UPLOAD_BLOCKLIST_PICTURE 2520 //ϴֹͼƬ +#define NET_DVR_BULK_UPLOAD_ID_BLOCKLIST 2521 //ϴֹ֤ +#define NET_DVR_GET_FAILED_FACE_INFO 2522 //ȡ豸ģʧܵ¼ +#define NET_DVR_GET_FACE_AND_TEMPLATE 2523 //ȡģ +#define NET_DVR_SET_FACE_AND_TEMPLATE 2524 //ģ +/*************************************Ƕʽն1.0 end**************************************/ + +/*************************************ʶŽһ1.0 begin**************************************/ +#define NET_DVR_GET_CARD_READER_CFG_V50 2505 //ȡ(V50) +#define NET_DVR_SET_CARD_READER_CFG_V50 2506 //ö(V50) +#define NET_DVR_GET_FACE_PARAM_CFG 2507 //ȡ +#define NET_DVR_SET_FACE_PARAM_CFG 2508 // +#define NET_DVR_DEL_FACE_PARAM_CFG 2509 //ɾ +#define NET_DVR_CAPTURE_FACE_INFO 2510 //ɼϢ +/*************************************ʶŽһ1.0 end**************************************/ +#define NET_DVR_GET_REGISTER_INFO 2511 //ǼϢȡ + +#define NET_DVR_GET_SMSRELATIVEPARA_V50 2512 //ȡز +#define NET_DVR_SET_SMSRELATIVEPARA_V50 2513 //öز +#define NET_DVR_GET_ACS_EVENT 2514 //豸¼ȡ +#define NET_DVR_GET_MULTI_CARD_CFG_V50 2515 //ȡؿV50 +#define NET_DVR_SET_MULTI_CARD_CFG_V50 2516 //öؿV50 +#define NET_DVR_DEL_FINGERPRINT_CFG_V50 2517 //ɾָƲV50 +#define NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V51 2518 //ȡ¼ò(V51) +#define NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V51 2519 //¼ò(V51) + +#define NET_DVR_SET_EXAM_INFO 2530 //Ϣ· +#define NET_DVR_SET_EXAMINEE_INFO 2531 //Ϣ· +#define NET_DVR_SEARCH_EXAM_COMPARE_RESULT 2532 //ԱȶԽѯ +#define NET_DVR_BULK_CHECK_FACE_PICTURE 2533 //УͼƬ +#define NET_DVR_JSON_CONFIG 2550 //JSON͸ +#define NET_DVR_FACE_DATA_RECORD 2551 //ݵ +#define NET_DVR_FACE_DATA_SEARCH 2552 //ѯе +#define NET_DVR_FACE_DATA_MODIFY 2553 //޸е +#define NET_DVR_CAPTURE_DATA_SEARCH 2554 //ѯ߲ɼݼ +#define NET_DVR_SET_FORM_DATA 2555 //ñ +#define NET_DVR_GET_FORM_DATA 2556 //ӻȡ + +#define NET_DVR_GET_CARD 2560 +#define NET_DVR_SET_CARD 2561 +#define NET_DVR_DEL_CARD 2562 +#define NET_DVR_GET_FINGERPRINT 2563 +#define NET_DVR_SET_FINGERPRINT 2564 +#define NET_DVR_DEL_FINGERPRINT 2565 +#define NET_DVR_GET_FACE 2566 +#define NET_DVR_SET_FACE 2567 + +#define NET_DVR_GET_ALL_ALARM_RS485CFG 2705 // ȡ485 +#define NET_DVR_GET_ALL_ALARMHOST_RS485_SLOT_CFG 2706 // ȡб485λ +#define NET_DVR_GET_DEVICE_SELF_CHECK_STATE 2707 //ȡ豸Լ칦 +#define NET_DVR_GET_ALL_ALARM_POINT_CFG 2708 // ȡеŲ +#define NET_DVR_GET_ALL_ALARM_SENSOR_CFG 2709 // ȡģ +#define NET_DVR_GET_ALL_ALARM_SENSOR_JOINT 2710 //ȡģ +#define NET_DVR_GET_AIR_CONDITION_PARAM 2711 //ȡյ +#define NET_DVR_GET_OUT_SCALE_CFG 2712 //ȡ +#define NET_DVR_SET_OUT_SCALE_CFG 2713 // +#define NET_DVR_GET_ALARM_CHAN_ABLITITY 2714 //ȡͨ +/**********************************V3.0****************************************/ + +//D2000 V1.0 +#define NET_DVR_GET_ALARMCENTER_NETCFG 2715 //ȡ +#define NET_DVR_SET_ALARMCENTER_NETCFG 2716 //ȡ + + +#define NET_ITC_GET_TRIGGERCFG 3003 //ȡ +#define NET_ITC_SET_TRIGGERCFG 3004 //ô +#define NET_ITC_GET_IOOUT_PARAM_CFG 3005 //ȡIO3.1֮汾 +#define NET_ITC_SET_IOOUT_PARAM_CFG 3006 //IO3.1֮汾 + +#define NET_DVR_GET_CAMERA_SETUPCFG 3007 //ȡ +#define NET_DVR_SET_CAMERA_SETUPCFG 3008 // + +#define NET_ITC_GET_TRIGGER_DEFAULTCFG 3013 //ȡģʽƼ +#define NET_DVR_GET_STATUS_DETECTCFG 3015 //ȡ״̬ʹܲ +#define NET_DVR_SET_STATUS_DETECTCFG 3016 //״̬ʹܲ +#define NET_ITC_GET_VIDEO_TRIGGERCFG 3017 //ȡƵ羯 +#define NET_ITC_SET_VIDEO_TRIGGERCFG 3018 //Ƶ羯 +#define NET_DVR_GET_TPS_ALARMCFG 3019 //ȡͨͳƱ +#define NET_DVR_SET_TPS_ALARMCFG 3020 //ýͨͳƱ + + +#define NET_DVR_GET_REDAREACFG 3100 //ȡ̵ +#define NET_DVR_SET_REDAREACFG 3101 //ú̵ +#define NET_DVR_GET_TEST_SPOT 3102 //ȡSPOTڲܲ͵ǰڼ +#define NET_DVR_SET_TEST_SPOT 3103 //SPOTڲܲ͵ǰڼ +#define NET_DVR_GET_CABINETCFG 3104 //ûȡ +#define NET_DVR_SET_CABINETCFG 3105 // +#define NET_DVR_VEHICLE_CHECK_START 3106 //ֹݻش +#define NET_DVR_SET_CAPTUREPIC_CFG 3107 //ץͼ +#define NET_DVR_GET_CAPTUREPIC_CFG 3108 //ץͼûȡ +#define NET_DVR_SET_MOBILEPLATE_RECOG_CFG 3109 //سʶ +#define NET_DVR_GET_MOBILEPLATE_RECOG_CFG 3110 //سʶûȡ +#define NET_DVR_SET_MOBILE_RADAR_CFG 3111 //״ +#define NET_DVR_GET_MOBILE_RADAR_CFG 3112 //״ûȡ +#define NET_DVR_SET_MOBILE_LOCALPLATECHK_CFG 3113 //ؽֹضԱ +#define NET_DVR_GET_MOBILE_LOCALPLATECHK_CFG 3114 //ؽֹضԱûȡ + +#define NET_ITC_GET_ICRCFG 3115 //ȡICRл +#define NET_ITC_SET_ICRCFG 3116 //ICRл +#define NET_ITC_GET_RS485_ACCESSINFO 3117 //ȡRs485豸Ϣ +#define NET_ITC_SET_RS485_ACCESSINFO 3118 //Rs485豸Ϣ +#define NET_ITC_GET_EXCEPTIONCFG 3119 //ȡ쳣 +#define NET_ITC_SET_EXCEPTIONCFG 3120 //쳣 +#define NET_ITC_GET_FTPCFG 3121 //ȡITC FTPò +#define NET_ITC_SET_FTPCFG 3122 //ITC FTPò + +#define NET_DVR_VEHICLE_CONTROL_LIST_START 3123 //óֹϢ +#define NET_DVR_GET_ALL_VEHICLE_CONTROL_LIST 3124 //ȡгֹϢ +#define NET_DVR_VEHICLE_DELINFO_CTRL 3125 //ɾ豸ڽֹݿϢ +#define NET_DVR_GET_ENTRANCE_PARAMCFG 3126 //ȡڿƲ +#define NET_DVR_SET_ENTRANCE_PARAMCFG 3127 //óڿƲ +#define NET_DVR_BARRIERGATE_CTRL 3128 //Զ̿Ƶբ +#define NET_DVR_GATELAMP_CTRL 3129 //ƹ +#define NET_DVR_GET_CURTRIGGERMODE 3130 //ȡ豸ǰģʽ +#define NET_DVR_GET_GPSDATACFG 3131 //ȡGPS +#define NET_DVR_SET_GPSDATACFG 3132 //GPS +#define NET_DVR_VEHICLELIST_CTRL_START 3133 //óֹϢ + +#define NET_DVR_GET_GUARDCFG 3134 //ȡʶƻ +#define NET_DVR_SET_GUARDCFG 3135 //óʶƻ +#define NET_DVR_GET_SNAPINFO_CFG 3136 //ȡץͼƬ +#define NET_DVR_SET_SNAPINFO_CFG 3137 //ץͼƬ +#define NET_DVR_GET_SNAPINFO_CFG_V40 3138 //ȡץͼƬչ +#define NET_DVR_SET_SNAPINFO_CFG_V40 3139 //ץͼƬչ +#define NET_DVR_SET_CURTRIGGERMODE 3140 //豸ǰģʽ(IPC/D֧) +#define NET_DVR_GET_TRAFFIC_DATA 3141 //ӻȡͨ +#define NET_DVR_GET_TRAFFIC_FLOW 3142 //ӻȡͨ +#define NET_DVR_PARKING_VEHICLE_SEND 3143 //ͣϢ· +#define NET_DVR_PARKING_CARD_SEND 3144 //ͣ· +#define NET_DVR_PARKING_CARD_CTRL 3145 //ͣͣƽӿ + +#define NET_DVR_GET_ALARMCTRL_CAPABILITIES 3146 //ȡ +#define NET_DVR_SET_ALARMCTRL_CFG 3147 //ñ +#define NET_DVR_GET_ALARMCTRL_CFG 3148 //ȡ + +#define NET_DVR_GET_AUDIO_INPUT 3201 //ȡƵ +#define NET_DVR_SET_AUDIO_INPUT 3202 //Ƶ +#define NET_DVR_GET_CAMERA_DEHAZE_CFG 3203 //ȡ͸ +#define NET_DVR_SET_CAMERA_DEHAZE_CFG 3204 //͸ +#define NET_DVR_REMOTECONTROL_ALARM 3205 //Զ̿ң +#define NET_DVR_REMOTECONTROL_DISALARM 3206 //Զ̿ң +#define NET_DVR_REMOTECONTROL_STUDY 3207 //Զ̿ңѧϰ +#define NET_DVR_WIRELESS_ALARM_STUDY 3208 //Զ̿߱ѧϰ +#define NET_IPC_GET_AUX_ALARMCFG 3209 //ȡ +#define NET_IPC_SET_AUX_ALARMCFG 3210 //ø +#define NET_DVR_GET_PREVIEW_DISPLAYCFG 3211 //ȡԤʾ +#define NET_DVR_SET_PREVIEW_DISPLAYCFG 3212 //Ԥʾ +#define NET_DVR_REMOTECONTROL_PTZ 3213 //Զ̿PTZ +#define NET_DVR_REMOTECONTROL_PRESETPOINT 3214 //Զ̿Ԥõ +#define NET_DVR_REMOTECONTROL_CRUISE 3215 //Զ̿Ѳ + +#define NET_DVR_GET_MULTI_STREAM_COMPRESSIONCFG 3216 //Զ̻ȡѹ +#define NET_DVR_SET_MULTI_STREAM_COMPRESSIONCFG 3217 //Զöѹ + +#define NET_DVR_GET_WPSCFG 3218 //ȡWPS +#define NET_DVR_SET_WPSCFG 3219 //WPS +#define NET_DVR_WPS_CONNECT 3220 //ԶWPS +#define NET_DVR_GET_DEVICE_PIN 3221 //ȡ豸PIN +#define NET_DVR_UPDATE_PIN 3223 //豸PIN +#define NET_DVR_GET_PRESETCFG 3224 //ȡԤõ +#define NET_DVR_GET_PTZCRUISECFG 3225 //ȡѲ· +#define NET_DVR_GET_PRESET_NUM 3226 //ȡԤõ +#define NET_DVR_GET_PTZCRUISE_NUM 3227 //ȡѲ· + +#define NET_DVR_GET_MOTION_TRACK_CFG 3228 //ȡ˶ +#define NET_DVR_SET_MOTION_TRACK_CFG 3229 //˶ +#define NET_DVR_CLEAR_IPC_PARAM 3230 //ǰ˲ +#define NET_DVR_GET_IPADDR_FILTERCFG 3232 //ȡIPַ˲ +#define NET_DVR_SET_IPADDR_FILTERCFG 3233 //IPַ˲ + +#define NET_DVR_GET_LOGO_OVERLAYCFG 3234 //ȡLOGOͼƬӲ +#define NET_DVR_SET_LOGO_OVERLAYCFG 3235 //LOGOͼƬӲ + +#define NET_DVR_GET_IPV6_LIST 3236 //ȡȫIPV6ַϢ +#define NET_DVR_GET_AUDIOOUT_VOLUME 3237 //ȡƵС +#define NET_DVR_SET_AUDIOOUT_VOLUME 3238 //ƵС +#define NET_DVR_GET_FUZZY_UPGRADE 3239 //ȡģƥϢ + +#define NET_DVR_GET_BV_CORRECT_PARAM 3240 //ȡУ +#define NET_DVR_SET_BV_CORRECT_PARAM 3241 //У +#define NET_DVR_GET_OUTPUT_VIDEO_TYPE 3242 //ȡƵ +#define NET_DVR_SET_OUTPUT_VIDEO_TYPE 3243 //Ƶ + +#define NET_DVR_FISHEYE_CFG 3244 //۳ +#define NET_DVR_GET_PTZ_POINT 3245 //ȡPTZ +#define NET_DVR_SET_PTZ_POINT 3246 //PTZ +#define NET_DVR_REMOTECONTROL_DEV_PARAM 3247 //豸¼ͻ˲ +#define NET_DVR_GET_FISHEYE_STREAM_STATUS 3248 //ȡ״̬ + +#define NET_DVR_GET_GBT28181_ACCESS_CFG 3249 //ȡGBT28181Э +#define NET_DVR_SET_GBT28181_ACCESS_CFG 3250 //GBT28181Э +#define NET_DVR_GET_GBT28181_CHANINFO_CFG 3251 //ȡGBT28181Э豸ͨϢ +#define NET_DVR_SET_GBT28181_CHANINFO_CFG 3252 //GBT28181Э豸ͨϢ +#define NET_DVR_GET_GBT28181_ALARMINCFG 3253 //ȡGBT28181Э豸ıϢ +#define NET_DVR_SET_GBT28181_ALARMINCFG 3254 //GBT28181Э豸ıϢ +#define NET_DVR_GET_ISP_CAMERAPARAMCFG 3255 //ȡISPǰ˲ +#define NET_DVR_SET_ISP_CAMERAPARAMCFG 3256 //ISPǰ˲ +#define NET_DVR_GET_DEVSERVER_CFG 3257 //ȡģ +#define NET_DVR_SET_DEVSERVER_CFG 3258 //ģ + +//2013-11-25 +#define NET_DVR_GET_WIPERINFO_CFG 3259 //ˢûȡ +#define NET_DVR_SET_WIPERINFO_CFG 3260 //ˢ +#define NET_DVR_GET_TRACK_DEV_PARAM 3261 //ȡ豸 +#define NET_DVR_SET_TRACK_DEV_PARAM 3262 //豸 +#define NET_DVR_GET_PTZ_TRACK_PARAM 3263 //ȡPTZ +#define NET_DVR_SET_PTZ_TRACK_PARAM 3264 //PTZ +#define NET_DVR_GET_CENTER_POINT_CFG 3265 //ȡĵ +#define NET_DVR_SET_CENTER_POINT_CFG 3266 //ĵ +#define NET_DVR_GET_CENTER_POINT_CFG_CAPABILITIES 3267 //ȡĵ +#define NET_DVR_GET_FISHEYE_CAPABILITIES 3268 //ȡ + +#define NET_DVR_GET_BASICPARAMCFG 3270 //ȡPTZûϢ +#define NET_DVR_SET_BASICPARAMCFG 3271 //PTZûϢ +#define NET_DVR_GET_PTZOSDCFG 3272 //ȡPTZ OSDòϢ +#define NET_DVR_SET_PTZOSDCFG 3273 //PTZ OSDòϢ +#define NET_DVR_GET_POWEROFFMEMCFG 3274 //ȡģʽϢ +#define NET_DVR_SET_POWEROFFMEMCFG 3275 //õģʽϢ +#define NET_DVR_GET_LIMITCFG 3276 //ȡλϢ +#define NET_DVR_SET_LIMITCFG 3277 //λϢ +#define NET_DVR_PTZLIMIT_CTRL 3278 //λ + +#define NET_DVR_PTZ_CLEARCTRL 3279 //Ϣƽӿ +#define NET_DVR_GET_PRIORITIZECFG 3281 //ȡ̨Ϣ +#define NET_DVR_SET_PRIORITIZECFG 3282 //̨Ϣ +#define NET_DVR_PTZ_INITIALPOSITIONCTRL 3283 //㷽λǿ +#define NET_DVR_GET_PRIVACY_MASKSCFG 3285 //ȡ˽ڱβ +#define NET_DVR_SET_PRIVACY_MASKSCFG 3286 //˽ڱβ +#define NET_DVR_GET_PTZLOCKCFG 3287 //ȡ̨Ϣ +#define NET_DVR_SET_PTZLOCKCFG 3288 //̨Ϣ +#define NET_DVR_PTZ_ZOOMRATIOCTRL 3289 //ñ +#define NET_DVR_GET_PTZLOCKINFO 3290 //ȡ̨ʣ +#define NET_DVR_GET_PRIVACY_MASKS_ENABLECFG 3291 //ȡȫʹ +#define NET_DVR_SET_PRIVACY_MASKS_ENABLECFG 3292 //ȫʹ +#define NET_DVR_GET_SMARTTRACKCFG 3293 //ȡ˶Ϣ +#define NET_DVR_SET_SMARTTRACKCFG 3294 //˶Ϣ +#define NET_DVR_GET_EPTZ_CFG 3295 //ȡEPTZ +#define NET_DVR_SET_EPTZ_CFG 3296 //EPTZ +#define NET_DVR_GET_EPTZ_CFG_CAPABILITIES 3297 //ȡEPTZ + +#define NET_DVR_GET_LOW_LIGHTCFG 3303//ȡնϢ +#define NET_DVR_SET_LOW_LIGHTCFG 3304//ÿնϢ +#define NET_DVR_GET_FOCUSMODECFG 3305//ȡ۽ģʽϢ +#define NET_DVR_SET_FOCUSMODECFG 3306//ÿ۽ģʽϢ +#define NET_DVR_GET_INFRARECFG 3307//ȡϢ +#define NET_DVR_SET_INFRARECFG 3308//ÿϢ +#define NET_DVR_GET_AEMODECFG 3309//ȡϢ +#define NET_DVR_SET_AEMODECFG 3310//ÿϢ +#define NET_DVR_CONTROL_RESTORE_SUPPORT 3311 //ָǰĬϲ(еǰ˲صĶָ) +#define NET_DVR_CONTROL_RESTART_SUPPORT 3312 //о +#define NET_DVR_CONTROL_PTZ_PATTERN 3313//̨ɨ +#define NET_DVR_GET_PTZ_PARKACTION_CFG 3314//ȡ̨ +#define NET_DVR_SET_PTZ_PARKACTION_CFG 3315//̨ +#define NET_DVR_CONTROL_PTZ_MANUALTRACE 3316//ֶλ +#define NET_DVR_GET_ROI_DETECT_NUM 3349 //ȡROIĿ +#define NET_DVR_GET_ROI_DETECT 3350 //ȡROI +#define NET_DVR_SET_ROI_DETECT 3351 //ROI +#define NET_DVR_GET_FACE_DETECT 3352 //ȡ +#define NET_DVR_SET_FACE_DETECT 3353 // +#define NET_DVR_GET_CORRIDOR_MODE 3354 //ȡģʽ +#define NET_DVR_SET_CORRIDOR_MODE 3355 //ģʽ +#define NET_DVR_GET_SCENECHANGE_DETECTIONCFG 3356 //ȡ +#define NET_DVR_SET_SCENECHANGE_DETECTIONCFG 3357 //ó +#define NET_DVR_GET_TRAVERSE_PLANE_DETECTION 3360 +#define NET_DVR_SET_TRAVERSE_PLANE_DETECTION 3361 +#define NET_DVR_GET_FIELD_DETECTION 3362 //ȡ +#define NET_DVR_SET_FIELD_DETECTION 3363 // +#define NET_DVR_GET_DEFOCUSPARAM 3364 //ȡ齹 +#define NET_DVR_SET_DEFOCUSPARAM 3365 //齹 +#define NET_DVR_GET_AUDIOEXCEPTIONPARAM 3366 //ȡƵ쳣 +#define NET_DVR_SET_AUDIOEXCEPTIONPARAM 3367 //Ƶ쳣 +#define NET_DVR_GET_CCDPARAMCFG_EX 3368 //ȡCCD +#define NET_DVR_SET_CCDPARAMCFG_EX 3369 //CCD +#define NET_DVR_START_GET_INPUTVOLUME 3370//ʼȡ +#define NET_DVR_SET_SCH_TASK 3380 //ʱ +#define NET_DVR_GET_SCH_TASK 3381 //ȡʱ +#define NET_DVR_SET_PRESET_NAME 3382 //Ԥõ +#define NET_DVR_GET_PRESET_NAME 3383 //ȡԤõ +#define NET_DVR_SET_AUDIO_NAME 3384 // +#define NET_DVR_GET_AUDIO_NAME 3385 //ȡ +#define NET_DVR_RESUME_INITRACKPOS 3386 //ָʼλ +#define NET_DVR_NTP_SERVER_TEST 3387 //NTP +#define NET_DVR_NAS_SERVER_TEST 3388 //NAS +#define NET_DVR_EMAIL_SERVER_TEST 3389 //Email +#define NET_DVR_FTP_SERVER_TEST 3390 //FTP +#define NET_DVR_IP_TEST 3391 //IP +#define NET_DVR_GET_NET_DISKCFG_V40 3392 //Ӳ̽ȡv40 +#define NET_DVR_SET_NET_DISKCFG_V40 3393 //Ӳ̽v40 +#define NET_DVR_GET_IOOUT_CFG 3394//ȡƲ +#define NET_DVR_SET_IOOUT_CFG 3395//òƲ +#define NET_DVR_GET_SIGNAL_SYNC 3396//ȡźŵͬò +#define NET_DVR_SET_SIGNAL_SYNC 3397//źŵͬò + +#define NET_DVR_GET_EZVIZ_ACCESS_CFG 3398//ȡEZVIZ +#define NET_DVR_SET_EZVIZ_ACCESS_CFG 3399//EZVIZ +#define NET_DVR_GET_SCHEDULE_AUTO_TRACK_CFG 3400//ȡʱܲ +#define NET_DVR_SET_SCHEDULE_AUTO_TRACK_CFG 3401//öʱܲ +#define NET_DVR_MAKE_I_FRAME 3402//ǿI֡ +#define NET_DVR_GET_ALARM_RELATE 3403//ȡͨܲ +#define NET_DVR_SET_ALARM_RELATE 3404//ñͨܲ +#define NET_DVR_GET_PDC_RULECFG_V42 3405 //ͳƹ(չ) +#define NET_DVR_SET_PDC_RULECFG_V42 3406 //ȡͳƹ(չ) +#define NET_DVR_GET_HEATMAP_CFG 3407 //ȶͼ +#define NET_DVR_SET_HEATMAP_CFG 3408 //ȡȶͼ +#define NET_DVR_REMOTECONTROL_LINEARSCAN 3409 //ұ߽ 2014-03-15 +#define NET_DVR_DPC_CTRL 3410//У +#define NET_DVR_FFC_MANUAL_CTRL 3411//ǾУ(FFC)ֶģʽ +#define NET_DVR_FFC_BACKCOMP_CTRL 3412//ǾУ(FFC) +#define NET_DVR_GET_FOCUSING_POSITION_STATE 3413//ȡ۽λ״̬ +#define NET_DVR_GET_PRIVATE_PROTOCOL_CFG 3414 //ȡ ˽йؼϢϴýӿ +#define NET_DVR_SET_PRIVATE_PROTOCOL_CFG 3415 // ˽йؼϢϴýӿ +#define NET_DVR_COMPLETE_RESTORE_CTRL 3420 //ȫֵָ + +#define NET_DVR_CLOUDSTORAGE_SERVER_TEST 3421 //ƴ洢 +#define NET_DVR_PHONE_NUM_TEST 3422 //绰 +#define NET_DVR_GET_REMOTECONTROL_STATUS 3423 //ȡ߲״̬ +#define NET_DVR_GET_MONITOR_LOCATION_INFO 3424 //ȡʾϢ +#define NET_DVR_SET_MONITOR_LOCATION_INFO 3425 //ʾϢ + + +#define NET_DVR_GET_SMART_CAPABILITIES 3500 //ȡSmart +#define NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES 3501 //ȡ¼ +#define NET_DVR_GET_REGION_ENTRANCE_CAPABILITIES 3502 //ȡ +#define NET_DVR_GET_REGION_ENTR_DETECTION 3503 //ȡ +#define NET_DVR_SET_REGION_ENTR_DETECTION 3504 //ý +#define NET_DVR_GET_REGION_ENTR_REGION 3505 //ȡĵ +#define NET_DVR_SET_REGION_ENTR_REGION 3506 //ýĵ +#define NET_DVR_GET_REGION_ENTR_TRIGGER 3507 //ȡ +#define NET_DVR_SET_REGION_ENTR_TRIGGER 3508 //ý +#define NET_DVR_GET_REGION_ENTR_SCHEDULE 3509 //ȡ򲼷ʱ +#define NET_DVR_SET_REGION_ENTR_SCHEDULE 3510 //ý򲼷ʱ +#define NET_DVR_GET_REGION_EXITINT_CAPABILITIES 3511 //ȡ뿪 +#define NET_DVR_GET_REGION_EXITING_DETECTION 3512 //ȡ뿪 +#define NET_DVR_SET_REGION_EXITING_DETECTION 3513 //뿪 +#define NET_DVR_GET_REGION_EXITING_REGION 3514 //ȡ뿪ĵ +#define NET_DVR_SET_REGION_EXITING_REGION 3515 //뿪ĵ +#define NET_DVR_GET_REGION_EXIT_TRIGGER 3516 //ȡ뿪 +#define NET_DVR_SET_REGION_EXIT_TRIGGER 3517 //뿪 +#define NET_DVR_GET_REGION_EXIT_SCHEDULE 3518 //ȡ뿪򲼷ʱ +#define NET_DVR_SET_REGION_EXIT_SCHEDULE 3519 //뿪򲼷ʱ +#define NET_DVR_GET_LOITERING_CAPABILITIES 3520 //ȡǻ +#define NET_DVR_GET_LOITERING_DETECTION 3521 //ȡǻ +#define NET_DVR_SET_LOITERING_DETECTION 3522 //ǻ +#define NET_DVR_GET_LOITERING_REGION 3523 //ȡǻĵ +#define NET_DVR_SET_LOITERING_REGION 3524 //ǻĵ +#define NET_DVR_GET_LOITERING_TRIGGER 3525 //ȡǻ +#define NET_DVR_SET_LOITERING_TRIGGER 3526 //ǻ +#define NET_DVR_GET_LOITERING_SCHEDULE 3527 //ȡǻʱ +#define NET_DVR_SET_LOITERING_SCHEDULE 3528 //ǻʱ +#define NET_DVR_GET_GROUPDETECTION_CAPABILITIES 3529 //ȡԱۼ +#define NET_DVR_GET_GROUP_DETECTION 3530 //ȡԱۼ +#define NET_DVR_SET_GROUP_DETECTION 3531 //Աۼ +#define NET_DVR_GET_GROUPDETECTION_REGION 3532 //ȡԱۼĵ +#define NET_DVR_SET_GROUPDETECTION_REGION 3533 //Աۼĵ +#define NET_DVR_GET_GROUPDETECTION_TRIGGER 3534 //ȡԱۼ +#define NET_DVR_SET_GROUPDETECTION_TRIGGER 3535 //Աۼ +#define NET_DVR_GET_GROUPDETECTION_SCHEDULE 3536 //ȡԱۼʱ +#define NET_DVR_SET_GROUPDETECTION_SCHEDULE 3537 //Աۼʱ +#define NET_DVR_GET_RAPIDMOVE_CAPABILITIES 3538 //ȡ˶ +#define NET_DVR_GET_RAPIDMOVE_DETECTION 3539 //ȡ˶ +#define NET_DVR_SET_RAPIDMOVE_DETECTION 3540 //ÿ˶ +#define NET_DVR_GET_RAPIDMOVE_REGION 3541 //ȡ˶ĵ +#define NET_DVR_SET_RAPIDMOVE_REGION 3542 //ÿ˶ĵ +#define NET_DVR_GET_RAPIDMOVE_TRIGGER 3543 //ȡ˶ +#define NET_DVR_SET_RAPIDMOVE_TRIGGER 3544 //ÿ˶ +#define NET_DVR_GET_RAPIDMOVE_SCHEDULE 3545 //ȡ˶IJʱ +#define NET_DVR_SET_RAPIDMOVE_SCHEDULE 3546 //ÿ˶IJʱ +#define NET_DVR_GET_PATKING_CAPABILITIES 3547 //ȡͣ +#define NET_DVR_GET_PARKING_DETECTION 3548 //ȡͣ +#define NET_DVR_SET_PARKING_DETECTION 3549 //ͣ +#define NET_DVR_GET_PARKING_REGION 3550 //ȡͣĵ +#define NET_DVR_SET_PARKING_REGION 3551 //ͣĵ +#define NET_DVR_GET_PARKING_TRIGGER 3552 //ȡͣ +#define NET_DVR_SET_PARKING_TRIGGER 3553 //ͣ +#define NET_DVR_GET_PARKING_SCHEDULE 3554 //ȡͣIJʱ +#define NET_DVR_SET_PARKING_SCHEDULE 3555 //ͣIJʱ +#define NET_DVR_GET_UNATTENDED_BAGGAGE_CAPABILITIES 3556 //ȡƷ +#define NET_DVR_GET_UNATTENDED_BAGGAGE_DETECTION 3557 //ȡƷ +#define NET_DVR_SET_UNATTENDED_BAGGAGE_DETECTION 3558 //Ʒ +#define NET_DVR_GET_UNATTENDED_BAGGAGE_REGION 3559 //ȡƷĵ +#define NET_DVR_SET_UNATTENDED_BAGGAGE_REGION 3560 //Ʒĵ +#define NET_DVR_GET_UNATTENDED_BAGGAGE_TRIGGER 3561 //ȡƷ +#define NET_DVR_SET_UNATTENDED_BAGGAGE_TRIGGER 3562 //Ʒ +#define NET_DVR_GET_UNATTENDED_BAGGAGE_SCHEDULE 3563 //ȡƷIJʱ +#define NET_DVR_SET_UNATTENDED_BAGGAGE_SCHEDULE 3564 //ƷIJʱ +#define NET_DVR_GET_ATTENDEDBAGGAGE_CAPABILITIES 3565 //ȡƷȡ +#define NET_DVR_GET_ATTENDEDBAGGAGE_DETECTION 3566 //ȡƷȡ +#define NET_DVR_SET_ATTENDEDBAGGAGE_DETECTION 3567 //Ʒȡ +#define NET_DVR_GET_ATTENDEDBAGGAGE_REGION 3568 //ȡƷȡĵ +#define NET_DVR_SET_ATTENDEDBAGGAGE_REGION 3569 //Ʒȡĵ +#define NET_DVR_GET_ATTENDEDBAGGAGE_TRIGGER 3570 //ȡƷȡ +#define NET_DVR_SET_ATTENDEDBAGGAGE_TRIGGER 3571 //Ʒȡ +#define NET_DVR_GET_ATTENDEDBAGGAGE_SCHEDULE 3572 //ȡƷIJʱ +#define NET_DVR_SET_ATTENDEDBAGGAGE_SCHEDULE 3573 //ƷȡIJʱ +#define NET_DVR_GET_REGIONCLIP_CAPABILITIES 3574 //ȡü +#define NET_DVR_GET_REGION_CLIP 3575 //ȡü +#define NET_DVR_SET_REGION_CLIP 3576 //ü +#define NET_DVR_GET_NETWORK_CAPABILITIES 3577 //ȡ +#define NET_DVR_GET_WIRELESS_DIAL 3578 //ȡ߲ +#define NET_DVR_SET_WIRELESS_DIAL 3579 //߲ +#define NET_DVR_GET_WIRELESSDIAL_CAPABILITIES 3580 //ȡ߲Ų +#define NET_DVR_GET_WIRELESSDIAL_SCHEDULE 3581 //ȡżƻ +#define NET_DVR_SET_WIRELESSDIAL_SCHEDULE 3582 //òżƻ +#define NET_DVR_GET_WIRELESSDIAL_STATUS 3583 //ȡ״̬ +#define NET_DVR_GET_REGION_ENTRANCE_SCHEDULE_CAPABILITIES 3584 //ȡⲼʱ +#define NET_DVR_GET_REGION_EXITING_SCHEDULE_CAPABILITIES 3585 //ȡ뿪Ⲽʱ +#define NET_DVR_GET_LOITERING_SCHEDULE_CAPABILITIES 3586 //ȡǻⲼʱ +#define NET_DVR_GET_GROUP_SCHEDULE_CAPABILITIES 3587 //ȡԱۼⲼʱ +#define NET_DVR_GET_RAPIDMOVE_SCHEDULE_CAPABILITIES 3588 //ȡ˶Ⲽʱ +#define NET_DVR_GET_PARKING_SCHEDULE_CAPABILITIES 3589 //ȡͣⲼʱ +#define NET_DVR_GET_UNATTENDEDBAGGAGE_SCHEDULE_CAPABILITIES 3590 //ȡƷⲼʱ +#define NET_DVR_GET_ATTENDEDBAGGAGE_SCHEDULE_CAPABILITIES 3591 //ȡƷȡⲼʱ +#define NET_DVR_GET_WIRELESSDIAL_SCHEDULE_CAPABILITIES 3592 //ȡżƻ +#define NET_DVR_WIRELESSDIAL_CONNECT 3593 // + +#define NET_DVR_GET_LITESTORAGE 3594 //ȡ洢 +#define NET_DVR_SET_LITESTORAGE 3595 //洢 +#define NET_DVR_GET_LITESTORAGE_CAPABILITIES 3596 //ȡ洢 + +#define NET_DVR_GET_VEHICLE_CAPABILITIES 3597 //ȡ궨 +#define NET_DVR_GET_VEHICLE_CALIBRATION 3598 //ȡ궨 + +#define NET_DVR_GET_SLAVECAMERA_CAPABILITIES 3599 //ȡIPϢ +#define NET_DVR_GET_SLAVECAMERA 3600 //ȡIPϢ +#define NET_DVR_SET_SLAVECAMERA 3601 //ôIPϢ +#define NET_DVR_GET_SLAVECAMERA_STATUS 3602 //ȡ״̬ +#define NET_DVR_GET_SLAVECAMERA_CALIB_CAPABILITIES 3603 //ȡ&&궨 +#define NET_DVR_GET_SLAVECAMERA_CALIB 3604 //ȡ궨 +#define NET_DVR_SET_SLAVECAMERA_CALIB 3605 //ô궨 +#define NET_DVR_GET_PHY_RATIO 3606 //ȡϢ +#define NET_DVR_SET_PHY_RATIO 3607 //Ϣ +#define NET_DVR_GET_MASTERSLAVETRACKING_CAPABILITIES 3608 //ȡ +#define NET_DVR_SET_TRACKINGRATIO 3610 //ô +#define NET_DVR_GET_TRACKING 3611 //ȡӹ +#define NET_DVR_SET_TRACKING 3612 //ӹ +#define NET_DVR_GET_TRACKING_CAPABILITIES 3613 //ȡӹ + +#define NET_DVR_GET_SLAVECAMERA_CALIB_V50 3614 //ȡ궨V50 +#define NET_DVR_SET_SLAVECAMERA_CALIB_V50 3615 //ô궨V50 +#define NET_DVR_SET_TRACKINGRATIO_MANUAL 3616 //ôֶ +#define NET_DVR_GET_TRACKINGRATIO_MANUAL 3617 //ȡֶ +#define NET_DVR_SET_TRACK_INITPOSTION 3618 //ôʼλ +#define NET_DVR_GET_PTZ_CAPABILITIES 3619 //ȡptz + +#define NET_DVR_GET_THERMOMETRY_BASICPARAM_CAPABILITIES 3620 //ȡ +#define NET_DVR_GET_THERMOMETRY_BASICPARAM 3621 //ȡò +#define NET_DVR_SET_THERMOMETRY_BASICPARAM 3622 //òò +#define NET_DVR_GET_THERMOMETRY_SCENE_CAPABILITIES 3623 //ȡԤõ +#define NET_DVR_GET_THERMOMETRY_PRESETINFO 3624 //ȡԤõò +#define NET_DVR_SET_THERMOMETRY_PRESETINFO 3625 //òԤõò +#define NET_DVR_GET_THERMOMETRY_ALARMRULE_CAPABILITIES 3626//ȡ±ʽ +#define NET_DVR_GET_THERMOMETRY_ALARMRULE 3627 //ȡԤõ㱨ò +#define NET_DVR_SET_THERMOMETRY_ALARMRULE 3628 //òԤõ㱨ò +#define NET_DVR_GET_REALTIME_THERMOMETRY 3629 //ʵʱ¶ȼ +#define NET_DVR_GET_THERMOMETRY_DIFFCOMPARISON 3630 //ȡԤõ²ò +#define NET_DVR_SET_THERMOMETRY_DIFFCOMPARISON 3631 //òԤõ²ò +#define NET_DVR_GET_THERMOMETRY_TRIGGER 3632 //ȡ +#define NET_DVR_SET_THERMOMETRY_TRIGGER 3633 //ò + +#define NET_DVR_GET_THERMAL_CAPABILITIES 3634 //ȡȳThermal +#define NET_DVR_GET_FIREDETECTION_CAPABILITIES 3635 //ȡ +#define NET_DVR_GET_FIREDETECTION 3636 //ȡ +#define NET_DVR_SET_FIREDETECTION 3637 //û +#define NET_DVR_GET_FIREDETECTION_TRIGGER 3638 //ȡ +#define NET_DVR_SET_FIREDETECTION_TRIGGER 3639 //û + +#define NET_DVR_GET_OIS_CAPABILITIES 3640 //ȡѧ +#define NET_DVR_GET_OIS_CFG 3641 //ȡѧ +#define NET_DVR_SET_OIS_CFG 3642 //ùѧ +#define NET_DVR_GET_MACFILTER_CAPABILITIES 3643 //ȡMACַ +#define NET_DVR_GET_MACFILTER_CFG 3644 //ȡMACַ +#define NET_DVR_SET_MACFILTER_CFG 3645 //MACַ +#define NET_DVR_GET_EAGLEFOCUS_CALCFG_CAPABILITIES 3646 //ӥӾ۽궨 +#define NET_DVR_GET_EAGLEFOCUSING_CALCFG 3647 //ȡӥӾ۽궨 +#define NET_DVR_SET_EAGLEFOCUSING_CALCFG 3648 //ӥӾ۽궨 +#define NET_DVR_GET_EAGLEFOCUSING_CFG_CAPABILITIES 3649 //ȡӥӾ۽ +#define NET_DVR_GET_EAGLEFOCUSING_CTRL 3650 //ȡӥӾ۽ +#define NET_DVR_SET_EAGLEFOCUSING_CTRL 3651 //ӥӾ۽ + +#define NET_DVR_GET_PXOFFLINE_CAPABILITIES 3652 //ȡͣƱѻ² +#define NET_DVR_SET_PXOFFLINE_CFG 3653 //ͣƱѻ²Ϣ +#define NET_DVR_GET_PXOFFLINE_CFG 3654 //ȡͣƱѻ²Ϣ +#define NET_DVR_GET_PAPERCHARGEINFO_CAPABILITIES 3655 //ȡֽͣƱϢ· +#define NET_DVR_SET_PAPERCHARGEINFO 3656 //ֽͣƱϢ· +#define NET_DVR_GET_PARKINGSAPCE_CAPABILITIES 3657 //ȡͣͣλϢ· +#define NET_DVR_SET_PARKINGSAPCE_INFO 3658 //ͣͣλϢ· +#define NET_DVR_GET_PXMULTICTRL_CAPABILITIES 3659 //ȡͣƱ豸ǶȲ +#define NET_DVR_GET_CHARGEACCOUNT_CAPABILITIES 3661 //ȡͣƱ +#define NET_DVR_SET_CHARGE_ACCOUNTINFO 3662 //ýɷѽϢ +#define NET_DVR_SET_PXMULTICTRL_CFG 3663 //ͣƱ豸ǶȲϢ +#define NET_DVR_GET_PXMULTICTRL_CFG 3664 //ȡͣƱ豸ǶȲϢ +#define NET_DVR_GET_TME_CHARGERULE 3665 //ȡͣڳշѹ +#define NET_DVR_SET_TME_CHARGERULE 3666 //ͣڳշѹ +#define NET_DVR_GET_TME_CHARGERULE_CAPABILITIES 3667 //ȡͣ շϢ +#define NET_DVR_GET_ILLEGALCARDFILTERING_CAPABILITIES 3668 //ȡͣƱ +#define NET_DVR_GET_ILLEGALCARDFILTERING_CFG 3669 //ȡͣƱ +#define NET_DVR_SET_ILLEGALCARDFILTERING_CFG 3670 //ͣƱ +#define NET_DVR_GET_LEDDISPLAY_CAPABILITIES 3671 //ȡLEDĻʾò +#define NET_DVR_SET_LEDDISPLAY_CFG 3672 //LEDĻʾ +#define NET_DVR_GET_LEDDISPLAY_CFG 3673 //ȡLEDĻʾ +#define NET_DVR_GET_VOICEBROADCAST_CAPABILITIES 3674 //ȡƲò +#define NET_DVR_SET_VOICEBROADCAST_CFG 3675 //Ʋ +#define NET_DVR_GET_PAPERPRINTFORMAT_CAPABILITIES 3676//ȡֽƱӡʽ +#define NET_DVR_GET_PAPERPRINTFORMAT_CFG 3677 //ȡֽƱӡʽ +#define NET_DVR_SET_PAPERPRINTFORMAT_CFG 3678 //ֽƱӡʽ +#define NET_DVR_GET_LOCkGATE_CAPABILITIES 3679 //ȡբ +#define NET_DVR_GET_LOCKGATE_CFG 3680 //ȡբ +#define NET_DVR_SET_LOCKGATE_CFG 3681 //բ +#define NET_DVR_GET_PARKING_DATASTATE 3682 //ȡͬ״̬ +#define NET_DVR_SET_PARKING_DATASTATE 3683 //ͬ״̬ +#define NET_DVR_GET_TME_CAPABILITIES 3684 //ȡͣ豸 + +#define NET_DVR_GET_TMEVOICE_CAPABILITIES 3686 //ȡϢ +#define NET_DVR_SET_TMEVOICE_CFG 3687 // +#define NET_DVR_GET_TMEVOICE_CFG 3688 //ȡ +#define NET_DVR_DEL_TMEVOICE_CFG 3689 //ɾ +#define NET_DVR_GET_POSITION 3698 // ȡλò +#define NET_DVR_SET_POSITION 3699 // ÷λò +#define NET_DVR_GET_CENTRALIZEDCTRL_CAPABILITIES 3700//ȡв +#define NET_DVR_GET_CENTRALIZEDCTRL 3701//ȡв +#define NET_DVR_SET_CENTRALIZEDCTRL 3702//üв +#define NET_DVR_GET_COMPASS_CAPABILITIES 3703//ȡ +#define NET_DVR_GET_VANDALPROOFALARM 3704//ȡƻ +#define NET_DVR_SET_VANDALPROOFALARM 3705//÷ƻ +#define NET_DVR_COMPASS_CALIBRATE_CTRL 3706//̽ƽӿ +#define NET_DVR_COMPASS_NORTH_CTRL 3707//ָƽӿ +#define NET_DVR_GET_AZIMUTHINFO 3708//ȡλǶȲ + + +#define NET_DVR_GET_SATELLITETIME 3709//ȡǶλ +#define NET_DVR_SET_SATELLITETIME 3710//Ƕλ +#define NET_DVR_GET_GISINFO 3711//ȡǰGISϢ +#define NET_DVR_GET_STREAMING_CAPABILITIES 3712//ȡƵ +#define NET_DVR_GET_REFRESHFRAME_CAPABILITIES 3713//ȡˢ֡ +#define NET_DVR_STREAMING_REFRESH_FRAME 3714//ȡԤǿˢ֡ +#define NET_DVR_FACECAPTURE_STATISTICS 3715//Աͳ +#define NET_DVR_GET_WIRELESSSERVER_CAPABILITIES 3716 //ȡȵ㹦Э +#define NET_DVR_GET_WIRELESSSERVER 3717 //ȡȵ㹦Э +#define NET_DVR_SET_WIRELESSSERVER 3718 //ȵ㹦Э +#define NET_DVR_GET_CONNECT_LIST_CAPABILITIES 3719 //ȡ豸бϢ +#define NET_DVR_GET_THSCREEN_CAPABILITIES 3720 //ȡʪЭ +#define NET_DVR_GET_THSCREEN 3721 //ȡʪЭ +#define NET_DVR_GET_EXTERNALDEVICE_CAPABILITIES 3722//ȡЭ +#define NET_DVR_GET_EXTERNALDEVICE 3723//ȡЭ +#define NET_DVR_SET_EXTERNALDEVICE 3724//Э +#define NET_DVR_GET_LEDDISPLAYINFO_CAPABILITIES 3725 //ȡLEDʾϢ +#define NET_DVR_SET_LEDDISPLAYINFO 3726 //LEDʾϢ +#define NET_DVR_GET_SUPPLEMENTLIGHT_CAPABILITIES 3727 //ȡòЭ (֧֣ʵ֣豸ڲ) +#define NET_DVR_GET_SUPPLEMENTLIGHT 3728 //ȡòЭ +#define NET_DVR_SET_SUPPLEMENTLIGHT 3729 //òЭ +#define NET_DVR_SET_THSCREEN 3730 //ʪЭ +#define NET_DVR_GET_LOWPOWER_CAPABILITIES 3731 //ȡ͹Э +#define NET_DVR_GET_LOWPOWER 3732 //ȡ͹Э +#define NET_DVR_SET_LOWPOWER 3733 //õ͹Э +#define NET_DVR_GET_ZOOMLINKAGE_CAPABILITIES 3734 //ȡ䱶Э +#define NET_DVR_GET_ZOOMLINKAGE 3735 //ȡ䱶Э +#define NET_DVR_SET_ZOOMLINKAGE 3736 //ñ䱶Э +#define NET_DVR_THSCREEN_TIMING 3737 //ʪ +#define NET_DVR_GET_OSD_BATTERY_POWER_CFG 3741 //ȡOSDصʾ +#define NET_DVR_SET_OSD_BATTERY_POWER_CFG 3742 //OSDصʾ +#define NET_DVR_GET_OSD_BATTERY_POWER_CFG_CAPABILITIES 3743//OSDصʾ +#define NET_DVR_GET_VANDALPROOFALARM_TRIGGER 3744 //ȡƻ +#define NET_DVR_SET_VANDALPROOFALARM_TRIGGER 3745 //÷ƻ +#define NET_DVR_GET_PANORAMAIMAGE_CAPABILITIES 3746 //ȡȫͼ +#define NET_DVR_GET_PANORAMAIMAGE 3747 //ȡȫͼЭ +#define NET_DVR_SET_PANORAMAIMAGE 3748 //ȫͼЭ +#define NET_DVR_GET_STREAMENCRYPTION 3749 //ȡ +#define NET_DVR_SET_STREAMENCRYPTION 3750 // +#define NET_DVR_GET_STREAMENCRYPTION_CAPABILITIES 3751 //ȡ +#define NET_DVR_GET_REVISE_GPS_CAPABILITIES 3752 //ȡУ׼GPSγ +#define NET_DVR_GET_REVISE_GPS 3753 //ȡУ׼GPSγ +#define NET_DVR_SET_REVISE_GPS 3754 //У׼GPSγ +#define NET_DVR_GET_PDC_RECOMMEND 3755 //ȡͳƱʾƼֵ +#define NET_DVR_REMOVE_FLASHSTORAGE 3756 // +#define NET_DVR_GET_COUNTING_CAPABILITIES 3757 //ȡͳ +#define NET_DVR_SET_SENSOR_ADJUSTMENT 3758 //Sensor ڲЭ +#define NET_DVR_GET_SENSOR_ADJUSTMENT_CAPABILITIES 3759 //ȡSensor ڲЭ +#define NET_DVR_GET_WIRELESSSERVER_FULLVERSION_CFG 3760 //ȡwifiȵ() +#define NET_DVR_SET_WIRELESSSERVER_FULLVERSION_CFG 3761 //wifiȵ() +#define NET_DVR_GET_ONLINEUSER_INFO 3762 //ӻȡûϢ +#define NET_DVR_GET_SENSOR_ADJUSTMENT_INFO 3763 //ȡָsensorڲ +#define NET_DVR_SENSOR_RESET_CTRL 3764 //Sensor ڸλ + +#define NET_DVR_GET_POSTRADAR_CAPABILITIES 3765 //ȡ״ +#define NET_DVR_GET_POSTRADARSPEED_CFG 3766 //ȡ״ +#define NET_DVR_SET_POSTRADARSPEED_CFG 3767 //״ +#define NET_DVR_GET_POSTRADARSPEED_RECOM_CFG 3768 //ȡ״Ƽֵ +#define NET_DVR_GET_POSTRADARPARAM_CFG 3769 //ȡ״ +#define NET_DVR_SET_POSTRADARPARAM_CFG 3770 //״ +#define NET_DVR_GET_POSTRADARPARAM_RECOM_CFG 3771 //ȡ״Ƽֵ + +#define NET_DVR_GET_ENCRYPT_DEVICE_INFO 3772 //ȡ豸Ϣ +#define NET_DVR_GET_ANR_ARMING_HOST 3773 //ȡϢ +#define NET_DVR_GET_FIRMWARE_VERSION 3776 //GET firmware version +/********************************IPCFF****************************/ +#define NET_DVR_GET_FTP_CAPABILITIES 3782 //ȡftp +#define NET_DVR_GET_FTPUPLOAD_CFG 3783 //ȡftpϴϢ +#define NET_DVR_SET_FTPUPLOAD_CFG 3784 //ftpϴϢ +#define NET_DVR_GET_VEHICLE_INFORMATION 3785 //ȡϢ +#define NET_DVR_GET_DDNS_COUNTRY_ABILITY 3800//ȡ豸ֵ֧DDNSб +#define NET_DVR_GET_DEVICECFG_V50 3801 //ȡ豸 +#define NET_DVR_SET_DEVICECFG_V50 3802 //豸 +#define NET_DVR_SET_VEHICLE_RECOG_TASK_V50 3851 //ʶύV50չ +#define NET_DVR_GET_SMARTCALIBRATION_CAPABILITIES 3900// SmartΪ궨˳ߴ繦 +#define NET_DVR_GET_TEMPERATURE_TRIGGER 3903 //ȡ² +#define NET_DVR_SET_TEMPERATURE_TRIGGER 3904 //ò² + +#define NET_DVR_GET_SMARTCALIBRATION_CFG 3910 //ȡSmartΪ궨˳ߴ繦 +#define NET_DVR_SET_SMARTCALIBRATION_CFG 3911 //SmartΪ궨˳ߴ繦 +#define NET_DVR_POST_SETUP_CALIB 3912 //궨 +#define NET_DVR_SET_POS_INFO_OVERLAY 3913//PosϢӿ +#define NET_DVR_GET_POS_INFO_OVERLAY 3914//ȡPosϢӿ +#define NET_DVR_GET_CAMERA_WORK_MODE 3915 //ģʽ +#define NET_DVR_SET_CAMERA_WORK_MODE 3916 //ȡģʽ +#define NET_DVR_GET_RESOLUTION_SWITCH_CAPABILITIES 3917 //ȡֱģʽл +#define NET_DVR_GET_RESOLUTION_SWITCH 3918 //ȡֱģʽл +#define NET_DVR_SET_RESOLUTION_SWITCH 3919 //÷ֱģʽл +#define NET_DVR_GET_CONFIRM_MECHANISM_CAPABILITIES 3920 //ϴȷϻƿ +#define NET_DVR_CONFIRM_MECHANISM_CTRL 3921 //ϴȷϻƿ +#define NET_DVR_GET_VEHICLLE_RESULT_CAPABILITIES 3951 //ȡȡϢ +#define NET_DVR_GET_CALIB_CAPABILITIES 3952//ȡ궨 +#define NET_DVR_GET_POSINFO_OVERLAY_CAPABILITIES 3953//ȡȡPos +#define NET_SDK_FINDMEDICALFILE 3954 //ӰƼǻҽƲ¼ļ +#define NET_SDK_FINDMEDICALPICTURE 3955 //ӰƼǻҽƲͼƬļ +#define NET_DVR_SET_POSINFO_OVERLAY 3960//Pos +#define NET_DVR_GET_POSINFO_OVERLAY 3961//ȡPos +#define NET_DVR_GET_FACELIB_TRIGGER 3962 //ȡȶԿ +#define NET_DVR_SET_FACELIB_TRIGGER 3963 //ȶԿ +#define NET_DVR_GET_FACECONTRAST_TRIGGER 3965//ȡȶ +#define NET_DVR_SET_FACECONTRAST_TRIGGER 3966//ȶ +#define NET_DVR_GET_FACECONTRAST_SCHEDULE_CAPABILITIES 3967 //ȡȶԲʱ +#define NET_DVR_GET_FACECONTRAST_SCHEDULE 3968//ȡȶԲʱ +#define NET_DVR_SET_FACECONTRAST_SCHEDULE 3969//ȶԲʱ +#define NET_DVR_GET_FACELIB_SCHEDULE_CAPABILITIES 3970 //ȡȶԿIJʱ +#define NET_DVR_GET_VCA_VERSION_LIST 3973//ȡ㷨汾 +#define NET_DVR_GET_SETUP_CALIB 3974//ȡ궨 +#define NET_DVR_GET_PANORAMA_LINKAGE 3975//ȡץͼϴʹ +#define NET_DVR_SET_PANORAMA_LINKAGE 3976//ץͼϴʹ +#define NET_DVR_GET_FACELIB_SCHEDULE 3977 //ȡȶԿIJʱ +#define NET_DVR_SET_FACELIB_SCHEDULE 3978 //ȶԿIJʱ +#define NET_DVR_GET_SOFTWARE_SERVICE_CAPABILITIES 3980//ȡ +#define NET_DVR_GET_SOFTWARE_SERVICE 3981//ȡ +#define NET_DVR_SET_SOFTWARE_SERVICE 3982// +#define NET_DVR_GET_PREVIEW_MODE_CAPABILITIES 3983//ȡԤģʽ +#define NET_DVR_SET_EAGLE_FOCUS_GOTOSCENE 3984//ӥʽ۽תָijID +#define NET_DVR_EAGLE_FOCUS_SCENE_DEL 3985//ɾӥʽ۽궨ij +#define NET_DVR_GET_SAFETY_HELMET_TRIGGER 3986 //ȡȫñ +#define NET_DVR_SET_SAFETY_HELMET_TRIGGER 3987 //ðȫñ +#define NET_DVR_GET_SAFETY_HELMET_SCHEDULE_CAPABILITIES 3988 //ȡȫñⲼʱ +#define NET_DVR_GET_SAFETY_HELMET_SCHEDULE 3989//ȡȫñⲼʱ +#define NET_DVR_SET_SAFETY_HELMET_SCHEDULE 3990//ðȫñⲼʱ + +#define NET_DVR_GET_SIGN_ABNORMAL_TRIGGER 4150 //ȡ쳣 +#define NET_DVR_SET_SIGN_ABNORMAL_TRIGGER 4151 //쳣 + +#define NET_DVR_ONE_KEY_CONFIG_SAN_V50 4152 //һSAN(V50) +#define NET_DVR_GET_HDCFG_V50 4153 //ȡӲϢV50 +#define NET_DVR_SET_HDCFG_V50 4154 //ӲϢV50 +#define NET_DVR_GET_HDVOLUME_CFG 4155 //ȡӲ̾Ϣ +#define NET_DVR_SET_HDVOLUME_CFG 4156 //Ӳ̾Ϣ +#define NET_DVR_GET_POWER_SUPPLY_CABINET_TRIGGER 4157 //ȡ񹩵 +#define NET_DVR_SET_POWER_SUPPLY_CABINET_TRIGGER 4158 //û񹩵 +#define NET_DVR_GET_SENSOR_TRIGGER 4159 //ȡ +#define NET_DVR_SET_SENSOR_TRIGGER 4160 //ô +#define NET_DVR_GET_FACESNAP_TRIGGER 4161 //ȡץ +#define NET_DVR_SET_FACESNAP_TRIGGER 4162 //ץ +#define NET_DVR_GET_FACESNAP_SCHEDULE_CAPABILITIES 4163 //ȡץIJʱ +#define NET_DVR_GET_FACESNAP_SCHEDULE 4164 //ȡץIJʱ +#define NET_DVR_SET_FACESNAP_SCHEDULE 4165 //ץIJʱ + +#define NET_DVR_SET_SCREEN_SWITCH 4171 //л +#define NET_DVR_GET_BV_CALIB_PIC 4172 //ȡ豸ץȡͼƬ͸Ϣ +#define NET_DVR_GET_BV_CALIB_RESULT 4173 //ȡ˫Ŀα궨 +#define NET_DVR_GET_BV_HCORRECTION 4174 //ȡ˫Ŀ߶Ƚ +#define NET_DVR_DEL_BV_CALIB_PIC 4175 //ɾͼƬ +#define NET_DVR_GET_TV_SCREEN_CFG 4176 //ȡͣʱ +#define NET_DVR_SET_TV_SCREEN_CFG 4177 //õͣʱ +#define NET_DVR_ADJUST_BV_CALIB 4178 //˫Ŀ궨΢ +#define NET_DVR_GET_HUMAN_CALIB 4179 //ȡ궨 +#define NET_DVR_SET_HUMAN_CALIB 4180 //궨 +#define NET_DVR_GET_USERCFG_V51 4181 //ȡû +#define NET_DVR_SET_USERCFG_V51 4182 //û +#define NET_DVR_GET_SOFTIO_TRIGGER 4183 //ȡSoftIO +#define NET_DVR_SET_SOFTIO_TRIGGER 4184 //SoftIO +#define NET_DVR_GET_SOFTIO_SCHEDULE_CAPABILITIES 4185 //ȡSoftIOʱ +#define NET_DVR_GET_SOFTIO_SCHEDULE 4186 //ȡSoftIOʱ +#define NET_DVR_SET_SOFTIO_SCHEDULE 4187 //SoftIOʱ +#define NET_DVR_GET_HFPD_TRIGGER 4188 //ȡƵԱ +#define NET_DVR_SET_HFPD_TRIGGER 4189 //øƵԱ +#define NET_DVR_GET_HFPD_SCHEDULE_CAPABILITIES 4190 //ȡƵԱⲼʱ +#define NET_DVR_GET_HFPD_SCHEDULE 4191 //ȡƵԱⲼʱ +#define NET_DVR_SET_HFPD_SCHEDULE 4192 //øƵԱⲼʱ +#define NET_DVR_GET_ALARM_INFO 4193 //ȡ¼Ϣ +#define NET_DVR_GET_USERCFG_V52 4194 //ȡû +#define NET_DVR_SET_USERCFG_V52 4195 //û + +/********************************NVR_˲Ʒ****************************/ +#define NET_DVR_GET_MUTEX_FUNCTION 4353 //ȡܻϢ + +#define NET_DVR_GET_SINGLE_CHANNELINFO 4360 //ȡͨ +#define NET_DVR_GET_CHANNELINFO 4361 //ȡͨ +#define NET_DVR_CHECK_LOGIN_PASSWORDCFG 4362 //û¼У +#define NET_DVR_GET_SINGLE_SECURITY_QUESTION_CFG 4363 //ȡ豸ȫ +#define NET_DVR_SET_SINGLE_SECURITY_QUESTION_CFG 4364 //õ豸ȫ +#define NET_DVR_GET_SECURITY_QUESTION_CFG 4365 //ȡ豸ȫ +#define NET_DVR_SET_SECURITY_QUESTION_CFG 4366 //豸ȫ +#define NET_DVR_GET_ONLINEUSERLIST_SC 4367 //Զ̻ȡ½ûϢӣ + +#define NET_DVR_GET_BLOCKLIST_FACECONTRAST_TRIGGER 4368 //ȡֹȶ +#define NET_DVR_SET_BLOCKLIST_FACECONTRAST_TRIGGER 4369 //ýֹȶ +#define NET_DVR_GET_ALLOWLIST_FACECONTRAST_TRIGGER 4370 //ȡȶ +#define NET_DVR_SET_ALLOWLIST_FACECONTRAST_TRIGGER 4371 //ȶ +#define NET_DVR_GET_BLOCKLIST_FACECONTRAST_SCHEDULE_CAPABILITIES 4372 //ȡֹȶԲʱ +#define NET_DVR_GET_BLOCKLIST_FACECONTRAST_SCHEDULE 4373 //ȡֹȶԲʱ +#define NET_DVR_SET_BLOCKLIST_FACECONTRAST_SCHEDULE 4374 //ýֹȶԲʱ +#define NET_DVR_GET_ALLOWLIST_FACECONTRAST_SCHEDULE_CAPABILITIES 4375 //ȡȶԲʱ +#define NET_DVR_GET_ALLOWLIST_FACECONTRAST_SCHEDULE 4376 //ȡȶԲʱ +#define NET_DVR_SET_ALLOWLIST_FACECONTRAST_SCHEDULE 4377 //ȶԲʱ + +#define NET_DVR_GET_HUMAN_RECOGNITION_SCHEDULE_CAPABILITIES 4378 //ȡʶ𲼷ʱ +#define NET_DVR_GET_HUMAN_RECOGNITION_SCHEDULE 4379 //ȡʶ𲼷ʱ +#define NET_DVR_SET_HUMAN_RECOGNITION_SCHEDULE 4380 //ʶ𲼷ʱ +#define NET_DVR_GET_HUMAN_RECOGNITION_TRIGGER 4381 //ȡʶ +#define NET_DVR_SET_HUMAN_RECOGNITION_TRIGGER 4382 //ʶ +#define NET_DVR_GET_GBT28181_AUDIO_OUTPUT_CFG 4383 //ȡGBT28181Э豸ԽϢ +#define NET_DVR_SET_GBT28181_AUDIO_OUTPUT_CFG 4384 //GBT28181Э豸ԽϢ + +#define NET_DVR_GET_STUDENTS_STOODUP_TRIGGER 4386 //ȡѧ +#define NET_DVR_SET_STUDENTS_STOODUP_TRIGGER 4387 //ѧ +#define NET_DVR_GET_FRAMES_PEOPLE_COUNTING_SCHEDULE_CAPABILITIES 4388 //ȡͳƲʱ +#define NET_DVR_GET_FRAMES_PEOPLE_COUNTING_SCHEDULE 4389 //ȡͳƲʱ +#define NET_DVR_SET_FRAMES_PEOPLE_COUNTING_SCHEDULE 4390 //ͳƲʱ +#define NET_DVR_GET_FRAMES_PEOPLE_COUNTING_TRIGGER 4391 //ȡͳ +#define NET_DVR_SET_FRAMES_PEOPLE_COUNTING_TRIGGER 4392 //ͳ + +#define NET_DVR_GET_PERSONDENSITY_TRIGGER 4393 //ȡԱܶȼ +#define NET_DVR_SET_PERSONDENSITY_TRIGGER 4394 //Աܶȼ +#define NET_DVR_GET_PERSONDENSITY_SCHEDULE_CAPABILITIES 4395 //ȡԱܶȼIJʱ +#define NET_DVR_GET_PERSONDENSITY_SCHEDULE 4396 //ȡԱܶȼIJʱ +#define NET_DVR_SET_PERSONDENSITY_SCHEDULE 4397 //ԱܶȼIJʱ + +#define NET_DVR_GET_STUDENTS_STOODUP_SCHEDULE_CAPABILITIES 4398 //ȡѧⲼʱ +#define NET_DVR_GET_STUDENTS_STOODUP_SCHEDULE 4399 //ȡѧⲼʱ +#define NET_DVR_SET_STUDENTS_STOODUP_SCHEDULE 4400 //ѧⲼʱ + +#define NET_DVR_SET_FACE_THERMOMETRY_TRIGGER 4401 // +#define NET_DVR_GET_FACE_THERMOMETRY_SCHEDULE_CAPABILITIES 4402 //ȡ²ʱ +#define NET_DVR_GET_FACE_THERMOMETRY_SCHEDULE 4403 //ȡ²ʱ +#define NET_DVR_SET_FACE_THERMOMETRY_SCHEDULE 4404 //²ʱ +#define NET_DVR_GET_FACE_THERMOMETRY_TRIGGER 4405 //ȡ +#define NET_DVR_GET_PERSONQUEUE_TRIGGER 4406 //ȡԱŶӼ +#define NET_DVR_SET_PERSONQUEUE_TRIGGER 4407 //ԱŶӼ +#define NET_DVR_GET_PERSONQUEUE_SCHEDULE_CAPABILITIES 4408 //ȡԱŶӼIJʱ +#define NET_DVR_GET_PERSONQUEUE_SCHEDULE 4409 //ȡԱŶӼIJʱ +#define NET_DVR_SET_PERSONQUEUE_SCHEDULE 4410 //ԱŶӼIJʱ +#define NET_DVR_SET_START_VIDEOAUDIO 4411 //NVRƵ(豸Բ⹦) + + +/********************************ʶ****************************/ +#define NET_DVR_GET_FACESNAPCFG 5001 //ȡץIJ +#define NET_DVR_SET_FACESNAPCFG 5002 //ץIJ +#define NET_DVR_GET_DEVACCESS_CFG 5005 //ȡ豸 +#define NET_DVR_SET_DEVACCESS_CFG 5006 //ý豸 +#define NET_DVR_GET_SAVE_PATH_CFG 5007 //ȡ洢Ϣ +#define NET_DVR_SET_SAVE_PATH_CFG 5008 //ô洢Ϣ +#define NET_VCA_GET_RULECFG_V41 5011 //ȡ쳣Ϊ(չ) +#define NET_VCA_SET_RULECFG_V41 5012 //쳣Ϊ(չ) +#define NET_DVR_GET_AID_RULECFG_V41 5013 //ȡͨ¼ +#define NET_DVR_SET_AID_RULECFG_V41 5014 //ýͨ¼ +#define NET_DVR_GET_TPS_RULECFG_V41 5015 //ȡͨͳƹ(չ) +#define NET_DVR_SET_TPS_RULECFG_V41 5016 //ýͨͳƹ(չ) +#define NET_VCA_GET_FACEDETECT_RULECFG_V41 5017 //ȡATM(չ) +#define NET_VCA_SET_FACEDETECT_RULECFG_V41 5018 //ATM(չ) +#define NET_DVR_GET_PDC_RULECFG_V41 5019 //ͳƹ(չ) +#define NET_DVR_SET_PDC_RULECFG_V41 5020 //ȡͳƹ(չ) +#define NET_DVR_GET_TRIAL_VERSION_CFG 5021 //ȡðϢ +#define NET_DVR_GET_VCA_CTRLINFO_CFG 5022 //ȡܿƲ +#define NET_DVR_SET_VCA_CTRLINFO_CFG 5023 //ܿƲ +#define NET_DVR_SYN_CHANNEL_NAME 5024 //ͬͨ +#define NET_DVR_GET_RESET_COUNTER 5025 //ȡͳͨͳƣ +#define NET_DVR_SET_RESET_COUNTER 5026 //ͳͨͳƣ +#define NET_DVR_GET_OBJECT_COLOR 5027 //ȡɫ +#define NET_DVR_SET_OBJECT_COLOR 5028 //ɫ +#define NET_DVR_GET_AUX_AREA 5029 //ȡ +#define NET_DVR_SET_AUX_AREA 5030 //ø +#define NET_DVR_GET_CHAN_WORKMODE 5031 //ȡͨģʽ +#define NET_DVR_SET_CHAN_WORKMODE 5032 //ͨģʽ +#define NET_DVR_GET_SLAVE_CHANNEL 5033 //ȡͨ +#define NET_DVR_SET_SLAVE_CHANNEL 5034 //ôͨ +#define NET_DVR_GET_VQD_EVENT_RULE 5035 //ȡƵ¼ +#define NET_DVR_SET_VQD_EVENT_RULE 5036 //Ƶ¼ +#define NET_DVR_GET_BASELINE_SCENE 5037 //ȡ׼ +#define NET_DVR_SET_BASELINE_SCENE 5038 //û׼ +#define NET_DVR_CONTROL_BASELINE_SCENE 5039 //׼ +#define NET_DVR_SET_VCA_DETION_CFG 5040 //ƶ +#define NET_DVR_GET_VCA_DETION_CFG 5041 //ȡƶ +#define NET_DVR_GET_STREAM_ATTACHINFO_CFG 5042 //ȡϢ +#define NET_DVR_SET_STREAM_ATTACHINFO_CFG 5043 //Ϣ + +#define NET_DVR_GET_BV_CALIB_TYPE 5044 //ȡ˫Ŀ궨 +#define NET_DVR_CONTROL_BV_SAMPLE_CALIB 5045 //˫Ŀ궨 +#define NET_DVR_GET_BV_SAMPLE_CALIB_CFG 5046 //ȡ˫Ŀ궨 +#define NET_DVR_GET_RULECFG_V42 5049 //ȡ쳣Ϊ(֧16չ) +#define NET_DVR_SET_RULECFG_V42 5050 //쳣Ϊ(֧16չ) +#define NET_DVR_SET_VCA_DETION_CFG_V40 5051 //ƶ +#define NET_DVR_GET_VCA_DETION_CFG_V40 5052 //ȡƶ +#define NET_DVR_SET_FLASH_CFG 5110 //дݵFlash ʹ +/********************************ʶ end****************************/ + +//2014-12-03 +#define NET_DVR_GET_T1TEST_CFG 5053 //߲ýӿڣȡ +#define NET_DVR_SET_T1TEST_CFG 5054 ////߲ýӿڣã + +/********************************ITS****************************/ +#define NET_ITS_GET_OVERLAP_CFG_V50 5055 //ȡַӲչ +#define NET_ITS_SET_OVERLAP_CFG_V50 5056 //ַӲչ + +#define NET_DVR_GET_PARKLAMP_STATE 5057 //ȡͣźŵ״̬Ϣ +#define NET_DVR_GET_CLOUDSTORAGE_CFG 5058 //ȡƴ洢ò +#define NET_DVR_SET_CLOUDSTORAGE_CFG 5059 //ƴ洢ò + +#define NET_ITS_GET_BASE_INFO 5060 //ȡն˻Ϣ +#define NET_DVR_GET_SENSOR_INFO 5061 //Ϣѯ +#define NET_DVR_SET_SENSOR_SWITCH 5062 //Զ̿ +#define NET_ITS_GET_IMGMERGE_CFG 5063 //ȡͼƬϳò +#define NET_ITS_SET_IMGMERGE_CFG 5064 //ͼƬϳò +#define NET_ITS_GET_UPLOAD_CFG 5065 //ȡϴ +#define NET_ITS_SET_UPLOAD_CFG 5066 //ϴ +#define NET_DVR_GET_SENSOR_PORT_CAPABILITIES 5067 //ȡ +#define NET_ITS_GET_WORKSTATE 5069 //ȡն˹״̬ +#define NET_ITS_GET_IPC_CHAN_CFG 5070 //ȡͨIPCϢ +#define NET_ITS_SET_IPC_CHAN_CFG 5071 //ͨIPCϢ +#define NET_ITS_GET_OVERLAP_CFG 5072 //ȡַӲ +#define NET_ITS_SET_OVERLAP_CFG 5073 //ַӲ +#define NET_DVR_GET_TRIGGEREX_CFG 5074 //ȡITCչ +#define NET_DVR_SET_TRIGGEREX_CFG 5075 //ITCչ +#define NET_ITS_GET_ROAD_INFO 5076 //ȡ·Ϣ + +#define NET_ITS_REMOTE_DEVICE_CONTROL 5077//Զ豸 +#define NET_ITS_GET_GATEIPC_CHAN_CFG 5078//ȡڲ +#define NET_ITS_SET_GATEIPC_CHAN_CFG 5079//óڲ +#define NET_ITS_TRANSCHAN_START 5080//ͬݷ +#define NET_ITS_GET_ECTWORKSTATE 5081//ȡն˹״̬ +#define NET_ITS_GET_ECT_CHAN_INFO 5082//ȡնͨ״̬ +#define NET_DVR_GET_HEATMAP_RESULT 5083//ȶͼݲ +#define NET_DVR_SET_ITS_EXDEVCFG 5084 //ITS豸Ϣ +#define NET_DVR_GET_ITS_EXDEVCFG 5085 //ȡITS豸Ϣ +#define NET_DVR_GET_ITS_EXDEVSTATUS 5086 //ȡITS豸Ϣ +#define NET_DVR_SET_ITS_ENDEVCMD 5087 //ITSն˳ڿ +#define NET_DVR_SET_ENISSUED_DATADEL 5088 //ITSն˳ڿ +#define NET_DVR_GET_PDC_RESULT 5089//ݲѯ 2014-03-21 +#define NET_ITS_GET_LAMP_CTRLCFG 5090 //ȡõƲ +#define NET_ITS_SET_LAMP_CTRLCFG 5091 //õƲ +#define NET_ITS_GET_PARKSPACE_ATTRIBUTE_CFG 5092 //ȡ⳵λ +#define NET_ITS_SET_PARKSPACE_ATTRIBUTE_CFG 5093 //⳵λ +#define NET_ITS_SET_LAMP_EXTERNAL_CFG 5095 //ò +#define NET_ITS_SET_COMPEL_CAPTURE 5096 //óλǿץͼ +#define NET_DVR_SET_TIMESIGN_CFG 5097 //չУʱԶ +#define NET_DVR_GET_TIMESIGN_CFG 5098 //ȡչУʱԶ +#define NET_DVR_GET_SIGNALLAMP_STATUS 5099 //źŵƼ +/********************************ITS end****************************/ + +#define NET_DVR_GET_MONITOR_PLAN_VQD 5100 //ӻȡϷƻ +#define NET_DVR_GET_MONITORID_VQD 5101 //ӻȡӦƻڵIJϢ +#define NET_DVR_SET_MONITOR_INFO 5102 //üƻڵIJϢ +#define NET_DVR_DEL_MONITOR_PLAN_VQD 5103 //ɾƻ +#define NET_DVR_GET_MONITOR_VQD_STATUS 5104 //ƽ̨ѯϷ״̬ +#define NET_DVR_GET_RECORD_INFO 5105 //ȡԴͼƬѯ +#define NET_DVR_GET_MONITOR_VQDCFG 5106 //ȡIJϢ +#define NET_DVR_SET_MONITOR_VQDCFG 5107 //÷IJϢ +#define NET_DVR_SET_MONITOR_PLAN_VQDCFG 5108 //ùƻ(ļƻ) + +#define NET_DVR_SCENE_CHANGE_UPDATE 5109 //ݸ + +#define NET_DVR_GET_CALIBRATE_POINT 5153 //һתǹ豸 ⲿ ߴ벻ʵֹ֣ͻύߣ/*************************ܶೡ********************************/ +#define NET_DVR_GET_SCENE_CFG 5201 //ȡϢ +#define NET_DVR_SET_SCENE_CFG 5202 //óϢ +#define NET_DVR_GET_SCENE_REFERENCE_REGION 5203 //ȡο +#define NET_DVR_SET_SCENE_REFERENCE_REGION 5204 //òο +#define NET_DVR_GET_SCENE_CALIBRATION 5205 //ȡ궨Ϣ +#define NET_DVR_SET_SCENE_CALIBRATION 5206 //ñ궨Ϣ +#define NET_DVR_GET_SCENE_MASK_REGION 5207 //ȡ +#define NET_DVR_SET_SCENE_MASK_REGION 5208 // +#define NET_DVR_GET_SCENE_LANECFG 5209 //ȡ +#define NET_DVR_SET_SCENE_LANECFG 5210 //ó +#define NET_DVR_GET_SCENE_AID_RULECFG 5211 //ȡͨ¼ +#define NET_DVR_SET_SCENE_AID_RULECFG 5212 //ýͨ¼ +#define NET_DVR_GET_SCENE_TPS_RULECFG 5213 //ȡͨͳƹ +#define NET_DVR_SET_SCENE_TPS_RULECFG 5214 //ýͨͳƹ +#define NET_DVR_GET_SCENE_TIME_CFG 5215 //ȡͨijʱ +#define NET_DVR_SET_SCENE_TIME_CFG 5216 //ͨijʱ +#define NET_DVR_GET_FORENSICS_MODE 5217 //ȡȡ֤ʽ +#define NET_DVR_SET_FORENSICS_MODE 5218 //ȡ֤ʽ +#define NET_DVR_FORCESTOP_FORENSICS_CTRL 5219 //ǿֹͣȡ֤ +#define NET_DVR_GET_ALARM_PROCESS_CFG 5220 //ȡ +#define NET_DVR_SET_ALARM_PROCESS_CFG 5221 //ñ +#define NET_DVR_GET_BLOCKLIST_ALARM_INFO 5222 //ȡ +#define NET_DVR_GET_STORAGE_RESOURCE_CFG 5225 //ȡ洢Դ +#define NET_DVR_SET_STORAGE_RESOURCE_CFG 5226 //ô洢Դ +#define NET_DVR_DEL_BLOCKLIST_ALARM_RECORD 5227 //Զɾ¼ +#define NET_DVR_SET_BLOCKLIST_GROUP_INFO 5229 //Զ̷б +#define NET_DVR_DEL_BLOCKLIST_GROUP_INFO 5230 //Զɾб +#define NET_DVR_GET_BLOCKLIST_GROUP_INFO 5231 //Զ̻ȡȫб +#define NET_DVR_SET_BLOCKLIST_GROUP_RECORD_CFG 5232 //¼ +#define NET_DVR_GET_BLOCKLIST_GROUP_RECORD_CFG 5234 //Զ̻ȡ¼ +#define NET_DVR_DEL_BLOCKLIST_GROUP_RECORD_CFG 5235 //Զɾ¼ +#define NET_DVR_GET_AREA_MONITOR_CFG 5236 //ȡ򲼷 +#define NET_DVR_SET_AREA_MONITOR_CFG 5237 //򲼷 +#define NET_DVR_DEL_AREA_MONITOR_CFG 5238 //ɾ򲼷 +#define NET_DVR_RETRIEVAL_SNAP_RECORD 5240 //ץĿ +#define NET_DVR_GET_ALARMLIST 5241 //ȡб +#define NET_DVR_DETECT_IMAGE 5242 //ͼƬ +#define NET_DVR_GET_SNAP_RECORD 5243 //ȡץļ¼ +#define NET_DVR_DEL_SNAP_RECORD 5244 //ɾץļ¼ +#define NET_DVR_GET_FACE_RECORD 5245 //Զ̻ȡ¼б +#define NET_DVR_SET_FACE_RECORD 5246 //¼ +#define NET_DVR_DEL_FACE_RECORD 5247 //ɾ¼ +#define NET_DVR_GET_FACE_DATABASE 5248 //ȡò +#define NET_DVR_SET_FACE_DATABASE 5249 //ò +#define NET_DVR_DEL_FACE_DATABASE 5250 //ɾ +#define NET_DVR_RETRIEVAL_FACE_DATABASE 5251 // +#define NET_DVR_SET_BLOCKLIST_REL_DEV_CFG 5252 //豸 +#define NET_DVR_DEL_BLOCKLIST_REL_DEV 5253 //ɾ 豸Ϣ +/*************************ܶೡend*****************************/ + +#define NET_DVR_GET_DISK_RAID_INFO 6001 //ȡRaidϢ +#define NET_DVR_SET_DISK_RAID_INFO 6002 //ôRaidϢ + +#define NET_DVR_GET_DVR_SYNCHRONOUS_IPC 6005 //ȡǷΪǰIPCͬ豸 +#define NET_DVR_SET_DVR_SYNCHRONOUS_IPC 6006 //ãǷΪǰIPCͬ豸 + +#define NET_DVR_SET_DVR_IPC_PASSWD 6008 //ãIPCû +#define NET_DVR_GET_DEVICE_NET_USING_INFO 6009 //ȡǰ豸Դʹ + +#define NET_DVR_SET_DVR_IPC_NET 6012 //ãǰIPCַ + +#define NET_DVR_GET_RECORD_CHANNEL_INFO 6013 //ȡ¼ͨϢ +#define NET_DVR_SET_RECORD_CHANNEL_INFO 6014 //ã¼ͨϢ + + +#define NET_DVR_MOUNT_DISK 6015 // ش +#define NET_DVR_UNMOUNT_DISK 6016 // жش + +// CVR +#define NET_DVR_GET_STREAM_SRC_INFO 6017 //ȡԴϢ +#define NET_DVR_SET_STREAM_SRC_INFO 6018 //ãԴϢ +#define NET_DVR_GET_STREAM_RECORD_INFO 6019 //ȡ¼Ϣ +#define NET_DVR_SET_STREAM_RECORD_INFO 6020 //ã¼Ϣ +#define NET_DVR_GET_STREAM_RECORD_STATUS 6021 //ȡ¼״̬ +#define NET_DVR_SET_STREAM_RECORD_STATUS 6022 //ã¼״̬ +#define NET_DVR_GET_STREAM_INFO 6023 //ȡӵIDϢ +#define NET_DVR_GET_STREAM_SRC_INFO_V40 6024 //ȡԴϢ +#define NET_DVR_SET_STREAM_SRC_INFO_V40 6025 //ãԴϢ +#define NET_DVR_GET_RELOCATE_INFO 6026 //ȡN+0ģʽضϢ +#define NET_DVR_START_GOP_INFO_PASSBACK 6032 //Ϣ +#define NET_DVR_GET_CHANS_RECORD_STATUS_CFG 6035 //ȡͨ¼״̬Ϣ +#define NET_DVR_SET_CHANS_RECORD_STATUS_CFG 6036 //ͨ¼״̬Ϣ +//NVR96xx +#define NET_DVR_GET_IP_ALARM_GROUP_NUM 6100 //ȡIPͨ +#define NET_DVR_GET_IP_ALARM_IN 6101 //ȡIPͨϢ +#define NET_DVR_GET_IP_ALARM_OUT 6102 //ȡIPͨϢ + +//9000 v2.2 +#define NET_DVR_GET_FTPCFG_SECOND 6103 //ȡͼƬϴFTP +#define NET_DVR_SET_FTPCFG_SECOND 6104 //ͼƬϴFTP + +#define NET_DVR_GET_DEFAULT_VIDEO_EFFECT 6105 // ȡƵЧĬֵ +#define NET_DVR_SET_VIDEO_EFFECT 6106 // ͨƵͼ +#define NET_DVR_DEL_INVALID_DISK 6107 // ɾЧ + +#define NET_DVR_GET_DRAWFRAME_DISK_QUOTA_CFG 6109 //ȡ֡ͨ +#define NET_DVR_SET_DRAWFRAME_DISK_QUOTA_CFG 6110 //ó֡ͨ + +#define NET_DVR_GET_NAT_CFG 6111 //ȡNATӳ +#define NET_DVR_SET_NAT_CFG 6112 //NATӳ +#define NET_DVR_GET_AES_KEY 6113 //ȡ豸AESԿ +#define NET_DVR_GET_POE_CFG 6114 //ȡPOE +#define NET_DVR_SET_POE_CFG 6115 //POE +#define NET_DVR_GET_CUSTOM_PRO_CFG 6116 //ȡԶЭ +#define NET_DVR_SET_CUSTOM_PRO_CFG 6117 //ԶЭ +#define NET_DVR_GET_STREAM_CABAC 6118 //ȡѹѡ +#define NET_DVR_SET_STREAM_CABAC 6119 //ѹѡ +#define NET_DVR_GET_ESATA_MINISAS_USAGE_CFG 6120 //ȡeSATAminiSAS; +#define NET_DVR_SET_ESATA_MINISAS_USAGE_CFG 6121 //eSATAminiSAS; + +#define NET_DVR_GET_HDCFG_V40 6122 //ȡӲϢ +#define NET_DVR_SET_HDCFG_V40 6123 //ӲϢ +#define NET_DVR_GET_POE_CHANNEL_ADD_MODE 6124 //ȡPOEͨӷʽ +#define NET_DVR_SET_POE_CHANNEL_ADD_MODE 6125 //POEͨӷʽ +#define NET_DVR_GET_DIGITAL_CHANNEL_STATE 6126 //ȡ豸ͨ״̬ +#define NET_DVR_GET_BONJOUR_CFG 6127 // ȡBonjourϢ +#define NET_DVR_SET_BONJOUR_CFG 6128 // BonjourϢ + + +#define NET_DVR_GET_SOCKS_CFG 6130//ȡSOCKSϢ +#define NET_DVR_SET_SOCKS_CFG 6131//SOCKSϢ + +#define NET_DVR_GET_QOS_CFG 6132//ȡQoSϢ +#define NET_DVR_SET_QOS_CFG 6133//QoSϢ + +#define NET_DVR_GET_HTTPS_CFG 6134//ȡHTTPSϢ +#define NET_DVR_SET_HTTPS_CFG 6135//HTTPSϢ + +#define NET_DVR_GET_WD1_CFG 6136//Զ̻ȡWD1ʹܿ +#define NET_DVR_SET_WD1_CFG 6137//ԶWD1ʹܿ + +#define NET_DVR_CREATE_CERT 6138//֤ +#define NET_DVR_DELETE_CERT 6139//ɾ֤ + + +#define NET_DVR_GET_RECORD_LOCK_PERCENTAGE 6140 //ȡ¼ +#define NET_DVR_SET_RECORD_LOCK_PERCENTAGE 6141 //¼ + +#define NET_DVR_CMD_TRIGGER_PERIOD_RECORD 6144 //ⲿָʱ¼ +#define NET_DVR_UPLOAD_CERT 6145 //ϴ֤ +#define NET_DVR_DOWNLOAD_CERT 6146 //֤ +#define NET_DVR_GET_CERT 6147 //ȡ֤ + +#define NET_DVR_GET_POS_FILTER_CFG 6148 //ȡPOS˹ +#define NET_DVR_SET_POS_FILTER_CFG 6149 //POS˹ +#define NET_DVR_GET_CONNECT_POS_CFG 6150 //ȡDVRPOSӷʽ +#define NET_DVR_SET_CONNECT_POS_CFG 6151 //DVRPOSӷʽ +#define NET_DVR_GET_CHAN_FILTER_CFG 6152 //ȡͨϢ +#define NET_DVR_SET_CHAN_FILTER_CFG 6153 //ùͨϢ + + +#define NET_DVR_GET_FTPCFG_V40 6162 //ȡFTPϢ +#define NET_DVR_SET_FTPCFG_V40 6163 //FTPϢ + +#define NET_DVR_GET_MONTHLY_RECORD_DISTRIBUTION 6164 //ȡ¼ֲ +#define NET_DVR_GET_ACCESS_DEVICE_CHANNEL_INFO 6165 //ȡ豸ͨϢ +#define NET_DVR_GET_PREVIEW_SWITCH_CFG 6166 //ȡ豸Ԥл +#define NET_DVR_SET_PREVIEW_SWITCH_CFG 6167 //豸Ԥл + +//Netra3.0.0 +#define NET_DVR_GET_N_PLUS_ONE_WORK_MODE 6168 //ȡN+1ģʽ +#define NET_DVR_SET_N_PLUS_ONE_WORK_MODE 6169 //N+1ģʽ + +#define NET_DVR_GET_HD_STATUS 6170 //ȡӲ״̬ +#define NET_DVR_SET_HD_STATUS 6171 //Ӳ״̬ + +#define NET_DVR_IMPORT_IPC_CFG_FILE 6172 //IPCļ +#define NET_DVR_EXPORT_IPC_CFG_FILE 6173 //IPCļ +#define NET_DVR_UPGRADE_IPC 6174 //IPͨ + +#define NET_DVR_GET_RAID_BACKGROUND_TASK_SPEED 6175 //ȡRAID̨ٶ +#define NET_DVR_SET_RAID_BACKGROUND_TASK_SPEED 6176 //RAID̨ٶ + +//marvell 256·NVR +#define NET_DVR_GET_EXCEPTIONCFG_V40 6177 //ȡ쳣 +#define NET_DVR_SET_EXCEPTIONCFG_V40 6178 //쳣 +#define NET_DVR_GET_PICCFG_V40 6179 //ȡͼ ֱ֧䳤 NetSDK_ +#define NET_DVR_SET_PICCFG_V40 6180 //ͼ ֱ֧䳤 +#define NET_DVR_GET_ALARMINCFG_V40 6181 //ȡֱ֧䳤 +#define NET_DVR_SET_ALARMINCFG_V40 6182 //ȡֱ֧䳤 +#define NET_DVR_GET_IPALARMINCFG_V40 6183 //ȡIPϢ +#define NET_DVR_GET_IPALARMOUTCFG_V40 6185 //ȡIPϢ +#define NET_DVR_GET_USERCFG_V40 6187 //ȡû +#define NET_DVR_SET_USERCFG_V40 6188 //û +#define NET_DVR_GET_WORK_STATUS 6189 //ȡ豸״̬ +#define NET_DVR_GET_JPEG_CAPTURE_CFG_V40 6190 //ȡDVRץͼ +#define NET_DVR_SET_JPEG_CAPTURE_CFG_V40 6191 //DVRץͼ +#define NET_DVR_GET_HDGROUP_CFG_V40 6192 //ȡò +#define NET_DVR_SET_HDGROUP_CFG_V40 6193 //ò +#define NET_DVR_GET_SMD_HOLIDAY_HANDLE 6194 //ȡܼռƻ +#define NET_DVR_SET_SMD_HOLIDAY_HANDLE 6195 //üܼռƻ +#define NET_DVR_GET_PIC_MODEL_CFG 6196 //ȡͼƬģò +#define NET_DVR_SET_PIC_MODEL_CFG 6197 //ͼƬģò +#define NET_DVR_START_LOCAL_MOUSE_EVENT 6198 //豸¼¼ +#define NET_DVR_START_SIMULARE_MOUSE_EVENT 6199 //Զģ¼ +#define NET_DVR_GET_WORK_STATUS_V50 6200 //ȡ豸״̬V50 + +//91ϵHD-SDIDVR +#define NET_DVR_GET_ACCESS_CAMERA_INFO 6201 // ȡǰϢ +#define NET_DVR_SET_ACCESS_CAMERA_INFO 6202 // ǰϢ +#define NET_DVR_PULL_DISK 6203 // ȫ +#define NET_DVR_SCAN_RAID 6204 // ɨ +// CVR 2.0.X +#define NET_DVR_GET_USER_RIGHT_CFG 6210 // ȡûȨ +#define NET_DVR_SET_USER_RIGHT_CFG 6211 // ûȨ + +#define NET_DVR_ONE_KEY_CONFIG 6212 // һCVR +#define NET_DVR_RESTART_SERVICE 6213 // CVR + +#define NET_DVR_GET_MAX_MACHINE_NUM_CFG 6214 // ȡ +#define NET_DVR_SET_MAX_MACHINE_NUM_CFG 6215 // ñ + +#define NET_DVR_ADD_DEVICE 6216 //N+1ģʽ豸 +#define NET_DVR_DEL_DEVICE 6217 //N+1ģʽɾ豸 + +#define NET_DVR_GET_DATA_CALLBACK_CFG 6218 // ȡݻǨ״̬ +#define NET_DVR_SET_DATA_CALLBACK_CFG 6219 // ݻǨ״̬ + +#define NET_DVR_CLONE_LUN 6220 //¡LUN +#define NET_DVR_EXPAND_LUN 6221 //չLUN + +#define NET_DVR_GET_N_PLUS_ONE_DEVICE_INFO 6222 //ȡN+1豸Ϣ +#define NET_DVR_MODIFY_DVR_NET_DISK 6223 //޸DVR +//#define NET_DVR_DEL_DVR_NET_DISK 6224 //ɾDVR + +#define NET_DVR_CREATE_NAS 6225 //NAS +#define NET_DVR_DELETE_NAS 6226 //ɾNAS + +#define NET_DVR_OPEN_ISCSI 6227 //iSCSI +#define NET_DVR_CLOSE_ISCSI 6228 //رiSCSI + +#define NET_DVR_GET_FC 6229 //ȡϢ +#define NET_DVR_OPEN_FC 6230 //FC +#define NET_DVR_CLOSE_FC 6231 //رFC +#define NET_DVR_ONE_KEY_CONFIG_SAN 6232 // һSAN, һCVR߼һ + +//CVR2.3.2 +#define NET_DVR_RECORD_CHECK 6233 //¼Լ +#define NET_DVR_ADD_RECORD_PASSBACK_TASK_MANUAL 6234 //ֶ¼ش +#define NET_DVR_GET_ALL_RECORD_PASSBACK_TASK_MANUAL 6235 //ȡֶ¼ش +#define NET_DVR_RECORD_PASSBACK_TASK_MANUAL_CTRL 6236 //ֶ¼ش +#define NET_DVR_DEL_RECORD_PASSBACK_TASK_MANUAL 6237 //ɾֶ¼ش +#define NET_DVR_GET_RECORD_PASSBACK_PLAN_CFG 6238 //ȡ¼شƻ +#define NET_DVR_SET_RECORD_PASSBACK_PLAN_CFG 6239 //¼شƻ +#define NET_DVR_GET_DEV_STORAGE_CFG 6240 //ȡ豸洢Ϣ +#define NET_DVR_GET_ONLINE_USER_CFG 6241 //ȡû +#define NET_DVR_GET_RECORD_SEGMENT_CFG 6242 //ȡ¼ + +#define NET_DVR_GET_REC_PASSBACK_TASK_EXECUTABLE 6243 //ѯֶ¼شִ +#define NET_DVR_GET_STREAM_MEDIA_CFG 6244 //ȡýش¼ãIDʽ +#define NET_DVR_SET_STREAM_MEDIA_CFG 6245 //ýش¼ãIDʽ +#define NET_DVR_GET_USERCFG_V50 6246 //ȡûV50 +#define NET_DVR_SET_USERCFG_V50 6247 //ûV50 + +#define NET_DVR_GET_RECORD_PASSBACK_BASIC_CFG_CAP 6248 //ȡCVRشܻ +#define NET_DVR_GET_RECORD_PASSBACK_BASIC_CFG 6249 //ȡCVRشܻ +#define NET_DVR_SET_RECORD_PASSBACK_BASIC_CFG 6250 //CVRشܻ +#define NET_DVR_ONE_KEY_CONFIG_V50 6251 // һCVR(V50) +#define NET_DVR_GET_RACM_CAP 6252 //ȡ洢RACM +#define NET_DVR_GET_THUMBNAILS 6253 //ȡͼĬ¼ͼ(֧ID) +#define NET_DVR_ADD_RECORD_PASSBACK_TASK_MANUAL_V50 6254 //ֶ¼شV50ID +#define NET_DVR_GET_RECORD_PASSBACK_HISTORY_PLAN_CFG_CAP 6255 //ȡCVRشʷ¼ƻ +#define NET_DVR_GET_RECORD_PASSBACK_HISTORY_PLAN_CFG 6256 //ȡCVRشʷ¼ƻ +#define NET_DVR_SET_RECORD_PASSBACK_HISTORY_PLAN_CFG 6257 //CVRشʷ¼ƻ +#define NET_DVR_ONE_KEY_CONFIG_V51 6258 // һCVR(V51) + + +#define NET_DVR_GET_RECORD_PACK 6301 //ȡ¼ +#define NET_DVR_SET_RECORD_PACK 6302 //¼ + +#define NET_DVR_GET_CLOUD_STORAGE_CFG 6303 //ȡƴ洢Ϣ +#define NET_DVR_SET_CLOUD_STORAGE_CFG 6304 //ƴ洢Ϣ +#define NET_DVR_GET_GOP_INFO 6305 //ȡGOPϢ +#define NET_DVR_GET_PHY_DISK_INFO 6306 //ȡϢ +//¼ⲿ +#define NET_DVR_GET_RECORDING_AUTO_TRACK_CFG 6307 //ȡSDIԶϢ +#define NET_DVR_SET_RECORDING_AUTO_TRACK_CFG 6308 //SDIԶϢ + +#define NET_DVR_GET_RECORDING_PUBLISH_CFG 6309 //ȡһϢ +#define NET_DVR_SET_RECORDING_PUBLISH_CFG 6310 //һϢ + + +#define NET_DVR_RECORDING_ONEKEY_CONTROL 6311 //¼ + +#define NET_DVR_GET_RECORDING_END_TIME 6312 //ȡ¼ʣʱ + +#define NET_DVR_RECORDING_PUBLISH 6313 //һ¼ + +#define NET_DVR_GET_CURRICULUM_CFG 6314 //ȡαϢ +#define NET_DVR_SET_CURRICULUM_CFG 6315 //ÿαϢ + +#define NET_DVR_GET_COURSE_INDEX_CFG 6316 //ȡγϢ +#define NET_DVR_SET_COURSE_INDEX_CFG 6317 //ÿγϢ + +#define NET_DVR_GET_PPT_CHANNEL 6318 //ȡPPT֧ͨ +#define NET_DVR_GET_PPT_DETECT_CFG 6319 //ȡPPT +#define NET_DVR_SET_PPT_DETECT_CFG 6320 //PPT + +#define NET_DVR_GET_RECORDINGHOST_CFG 6321 //ȡ¼Ϣ +#define NET_DVR_SET_RECORDINGHOST_CFG 6322 //¼Ϣ +#define NET_DVR_GET_BACKUP_RECORD_CFG 6323 //ȡһϢ +#define NET_DVR_SET_BACKUP_RECORD_CFG 6324 //һϢ + +//ͥ +#define NET_DVR_GET_AUDIO_ACTIVATION_CFG 6326 //ȡò +#define NET_DVR_SET_AUDIO_ACTIVATION_CFG 6327 //ò +#define NET_DVR_GET_DECODERCFG_V40 6328 //ȡϢ +#define NET_DVR_SET_DECODERCFG_V40 6329 //ýϢ + +#define NET_DVR_INFRARED_OUTPUT_CONTROL 6330 // +#define NET_DVR_GET_INFRARED_CMD_NAME_CFG 6331 //ȡƲ +#define NET_DVR_SET_INFRARED_CMD_NAME_CFG 6332 //úƲ +#define NET_DVR_START_INFRARED_LEARN 6333 //Զ̺ѧ + +#define NET_DVR_GET_TRIAL_SYSTEM_CFG 6334 //ȡͥϵͳϢ +#define NET_DVR_SET_CASE_INFO 6335 //Ϣ¼ +#define NET_DVR_GET_TRIAL_MICROPHONE_STATUS 6336 //ȡ˷״̬Ϣ +#define NET_DVR_SET_TRIAL_MICROPHONE_STATUS 6337 //ȡ˷״̬Ϣ +#define NET_DVR_GET_TRIAL_HOST_STATUS 6338 //ȡͥ״̬Ϣ +#define NET_DVR_GET_LAMP_OUT 6339 //ȡLAMPϢ +#define NET_DVR_SET_LAMP_OUT 6340 //LAMPϢ +#define NET_DVR_LAMP_REMOTE_CONTROL 6341 // LAMP +#define NET_DVR_REMOTE_CONTROL_PLAY 6342 //Զ̿Ʊػط +#define NET_DVR_GET_LOCAL_INPUT_CFG 6343 //ȡͥ״̬ϢͥϢ +#define NET_DVR_SET_LOCAL_INPUT_CFG 6344 //ͥϢ +#define NET_DVR_GET_CASE_INFO 6345 //ȡǰϢ + +//Ѷⲿ +#define NET_DVR_INQUEST_GET_CDW_STATUS 6350 //ȡѶ¼״̬- +#define NET_DVR_GET_MIX_AUDIOIN_CFG 6351 //ȡڲ +#define NET_DVR_SET_MIX_AUDIOIN_CFG 6352 //ûڲ +#define NET_DVR_GET_MIX_AUDIOOUT_CFG 6353 //ȡڲ +#define NET_DVR_SET_MIX_AUDIOOUT_CFG 6354 //ûڲ +#define NET_DVR_GET_AUDIOIN_VOLUME_CFG 6355 //ȡƵڲ +#define NET_DVR_SET_AUDIOIN_VOLUME_CFG 6356 //Ƶڲ +#define NET_DVR_GET_AREA_MASK_CFG 6357 //ȡ +#define NET_DVR_SET_AREA_MASK_CFG 6358 // +#define NET_DVR_GET_AUDIO_DIACRITICAL_CFG 6359 //ȡƵ +#define NET_DVR_SET_AUDIO_DIACRITICAL_CFG 6360 //Ƶ +#define NET_DVR_GET_WIFI_DHCP_ADDR_CFG 6361 //WIFI DHCP ַΧ +#define NET_DVR_SET_WIFI_DHCP_ADDR_CFG 6362 //WIFI DHCP ַΧ +#define NET_DVR_GET_WIFI_CLIENT_LIST_INFO 6363 //ȡwifiȵӵ豸Ϣ +#define NET_DVR_REMOTECONTROL_POWER_ON 6364 //Զ̿ +#define NET_DVR_GET_MULTISTREAM_RELATION_CHAN_CFG 6365 //ȡͨ +#define NET_DVR_SET_MULTISTREAM_RELATION_CHAN_CFG 6366 //öͨ +#define NET_DVR_GET_VIDEOOUT_RESOLUTION_CFG 6367 //ȡ豸Ƶڷֱ +#define NET_DVR_SET_VIDEOOUT_RESOLUTION_CFG 6368 //豸Ƶڷֱ +#define NET_DVR_GET_AUDIOOUT_VOLUME_CFG 6369 //ȡƵڲ +#define NET_DVR_SET_AUDIOOUT_VOLUME_CFG 6370 //Ƶڲ +#define NET_DVR_INQUEST_PAUSE_CDW 6371 //ͣ¼ +#define NET_DVR_INQUEST_RESUME_CDW 6372 //ָ¼ +#define NET_DVR_GET_INPUT_CHAN_CFG 6373 //ȡͨ +#define NET_DVR_SET_INPUT_CHAN_CFG 6374 //ͨ +#define NET_DVR_GET_INQUEST_MIX_AUDIOIN_CFG 6375 //ȡѶƵ +#define NET_DVR_SET_INQUEST_MIX_AUDIOIN_CFG 6376 //ѶƵ +#define NET_DVR_CASE_INFO_CTRL 6377 //Ϣʾ +#define NET_DVR_GET_INQUEST_USER_RIGHT 6378 //ȡѶûȨ +#define NET_DVR_SET_INQUEST_USER_RIGHT 6379 //ѶûȨ +#define NET_DVR_GET_INQUEST_CASE_INFO 6380 //ȡѶϢ +#define NET_DVR_SET_INQUEST_CASE_INFO 6381 //ѶϢ + +#define NET_DVR_GET_FILM_MODE_CFG 6387 //ȡӰģʽ +#define NET_DVR_SET_FILM_MODE_CFG 6388 //õӰģʽ +#define NET_DVR_GET_FILM_MODE_CFG_CAP 6389 //ȡӰģʽ + +#define NET_DVR_GET_DIRECTED_STRATEGY_CFG 6390 //ȡ +#define NET_DVR_SET_DIRECTED_STRATEGY_CFG 6391 //õ +#define NET_DVR_GET_DIRECTED_STRATEGY_CFG_CAP 6392 //ȡӰģʽ +#define NET_DVR_GET_FRAME_CFG 6393 //ȡ߿ +#define NET_DVR_SET_FRAME_CFG 6394 //û߿ +#define NET_DVR_GET_FRAME_CFG_CAP 6395 //ȡ߿ +#define NET_DVR_GET_AUDIO_EFFECTIVE_CFG 6396 //ȡƵŻ +#define NET_DVR_SET_AUDIO_EFFECTIVE_CFG 6397 //ƵЧ +#define NET_DVR_GET_AUDIO_EFFECTIVE_CFG_CAP 6398 //ȡƵЧŻ +#define NET_DVR_GET_RECORD_VIDEO_CFG 6399 //ȡ¼Ƶ +#define NET_DVR_SET_RECORD_VIDEO_CFG 6400 //¼Ƶ + + +#define NET_DVR_GET_OUTPUT_CFG 6401 //ȡʾ +#define NET_DVR_SET_OUTPUT_CFG 6402 //ʾ +#define NET_DVR_CODER_DISPLAY_START 6403 //ʼ +#define NET_DVR_CODER_DISPLAY_STOP 6404 //ֹͣ +#define NET_DVR_GET_WINDOW_STATUS 6405 //ȡʾ״̬ + +//VQDܽӿ +#define NET_DVR_GET_VQD_LOOP_DIAGNOSE_CFG 6406 //ȡVQDѭò +#define NET_DVR_SET_VQD_LOOP_DIAGNOSE_CFG 6407 //VQDѭò +#define NET_DVR_GET_VQD_DIAGNOSE_INFO 6408 //ֶȡVQDϢ + +#define NET_DVR_RECORDING_PUBLISH_FILE 6421 //ļ +#define NET_DVR_GET_RECORDING_PUBLISH_FILE_CAP 6422 //ȡļ +#define NET_DVR_GET_PUBLISH_PROGRESS 6423 //ȡ +#define NET_DVR_GET_RECORD_VIDEO_CFG_CAP 6424 //ȡ¼Ƶ +#define NET_DVR_GET_RTMP_CFG 6425 //ȡRTMP +#define NET_DVR_SET_RTMP_CFG 6426 //RTMP +#define NET_DVR_GET_RTMP_CFG_CAP 6427 //ȡRTMP +#define NET_DVR_DEL_BACKGROUND_PIC 6428 //ɾͼƬļ +#define NET_DVR_GET_BACKGROUND_PIC_CFG 6429 //ѯͼƬļ +#define NET_DVR_GET_BACKGROUND_PIC_INFO 6430 //ȡͼƬΪͼƬ +#define NET_DVR_SET_BACKGROUND_PIC_INFO 6431 //ͼƬΪͼƬ +#define NET_DVR_GET_BACKGROUND_PIC_INFO_CAP 6432 //ȡͼƬΪͼƬ +#define NET_DVR_GET_RECORD_HOST_CAP 6433 //ȡ¼ +#define NET_DVR_GET_COURSE_LIST 6434 //ȡγб +#define NET_DVR_GET_RECORD_STATUS 6435 //ѯ¼ǰ״̬ +#define NET_DVR_MANUAL_CURRICULUM_CONTROL 6436 //ֶα +#define NET_DVR_GET_IMAGE_DIFF_DETECTION_CFG 6437 //ȡͼּ +#define NET_DVR_SET_IMAGE_DIFF_DETECTION_CFG 6438 //ͼּ +#define NET_DVR_GET_IMAGE_DIFF_DETECTION_CFG_CAP 6439 //ȡͼּ +#define NET_DVR_GET_RECORDING_PUBLISH_FILE_INFO 6440 //ȡļϢ +#define NET_DVR_SET_RECORDING_PUBLISH_FILE_INFO 6441 //÷ļϢ +#define NET_DVR_GET_RECORDING_PUBLISH_FILE_INFO_CAP 6442 //ȡļϢ +#define NET_DVR_MANUAL_CURRICULUM_CONTROL_CAP 6443 //ȡֶγ¼ +#define NET_DVR_GET_STATISTIC_DATA_LIST 6444 //ȡͳб + +#define NET_DVR_GET_DEVICE_LAN_ENCODE 6501 //ȡ豸Ա +#define NET_DVR_GET_GBT28181_SERVICE_CFG 6503 //ȡGB28181 +#define NET_DVR_SET_GBT28181_SERVICE_CFG 6504 //GB28181 +#define NET_DVR_GET_GBT28181_SERVICE_CAPABILITIES 6505 //ȡGB28181 + +#define NET_DVR_GET_CLOUD_URL 6506 //ȡƴ洢URL +#define NET_DVR_GET_CLOUD_URL_CAP 6507 //ȡƴ洢URL- +#define NET_DVR_GET_CLOUD_CFG 6508 //ȡƴ洢ò +#define NET_DVR_SET_CLOUD_CFG 6509 //ƴ洢ò +#define NET_DVR_GET_CLOUD_CFG_CAP 6510 //ȡƴ洢- +#define NET_DVR_GET_CLOUD_UPLOADSTRATEGY 6511 //ȡƴ洢ϴ +#define NET_DVR_SET_CLOUD_UPLOADSTRATEGY 6512 //ƴ洢ϴ +#define NET_DVR_GET_CLOUDSTORAGE_UPLOADSTRATEGY_CAP 6513 //ƴ洢ϴ- + +#define NET_DVR_GET_VIDEO_IMAGE_DB_CFG 6601 //ȡͼϢ +#define NET_DVR_SET_VIDEO_IMAGE_DB_CFG 6602 //ͼϢ +#define NET_DVR_GET_VIDEO_IMAGE_DB_CFG_CAP 6603 //ȡͼ +#define NET_DVR_GET_FILE_INFO_BY_ID 6604 //ļIDȡͼļϢ +#define NET_DVR_QUERY_FILE_INFO_CAP 6605 //ļѯļϢ +#define NET_DVR_DEL_FILE_FROM_DB 6606 //ͼɾļ +#define NET_DVR_GET_VIDEO_IMAGE_DB_CAP 6607 //ȡͼ + +#define NET_DVR_GET_FIGURE 6610 //ȡͼ + +#define NET_DVR_SYNC_IPC_PASSWD 6621 //ͬIPCNVRһ +#define NET_DVR_GET_VEHICLE_BLOCKLIST_SCHEDULE 6622 //ȡֹʱ +#define NET_DVR_SET_VEHICLE_BLOCKLIST_SCHEDULE 6623 //ýֹʱ + +#define NET_DVR_GET_VEHICLE_ALLOWLIST_SCHEDULE 6624 //ȡʱ +#define NET_DVR_SET_VEHICLE_ALLOWLIST_SCHEDULE 6625 //ʱ + +#define NET_DVR_GET_VEHICLE_BLOCKLIST_EVENT_TRIGGER 6626 //ȡֹ +#define NET_DVR_SET_VEHICLE_BLOCKLIST_EVENT_TRIGGER 6627 //ýֹ + +#define NET_DVR_GET_VEHICLE_ALLOWLIST_EVENT_TRIGGER 6628 //ȡ +#define NET_DVR_SET_VEHICLE_ALLOWLIST_EVENT_TRIGGER 6629 // + +#define NET_DVR_GET_TRAFFIC_CAP 6630 //ȡץ +#define NET_DVR_GET_VEHICLE_ALLLIST_EVENT_TRIGGER 6631 //ȡȫⲼ +#define NET_DVR_SET_VEHICLE_ALLLIST_EVENT_TRIGGER 6632 //ȫⲼ +#define NET_DVR_GET_VEHICLE_OTHERLIST_EVENT_TRIGGER 6633 //ȡ +#define NET_DVR_SET_VEHICLE_OTHERLIST_EVENT_TRIGGER 6634 // + +#define NET_DVR_GET_STORAGEDETECTION_EVENT_TRIGGER 6635 //ȡ洢 +#define NET_DVR_SET_STORAGEDETECTION_EVENT_TRIGGER 6636 //ô洢 +#define NET_DVR_GET_STORAGEDETECTION_SCHEDULE_CAPABILITIES 6637 //ȡ洢Ⲽʱ +#define NET_DVR_GET_STORAGEDETECTION_SCHEDULE 6638 //ȡ洢ʱ +#define NET_DVR_SET_STORAGEDETECTION_SCHEDULE 6639 //ô洢ʱ +#define NET_DVR_GET_STORAGEDETECTION_STATE 6640 //ȡ洢״̬ + +#define NET_DVR_GET_STORAGEDETECTION_RWLOCK 6646 //ȡ洢Ķд +#define NET_DVR_GET_STORAGEDETECTION_RWLOCK_CAPABILITIES 6647 //ȡ洢Ķд +#define NET_DVR_SET_STORAGEDETECTION_RWLOCK 6648 //ô洢Ķд +#define NET_DVR_GET_PTZTRACKSTATUS 6649 //ȡ״̬ + +#define NET_DVR_SET_STORAGEDETECTION_UNLOCK 6653 //ô洢Ľ +#define NET_DVR_GET_STORAGEDETECTION_UNLOCK_CAPABILITIES 6654 //ȡ洢Ľ + +#define NET_DVR_SET_SHIPSDETECTION_CFG 6655 //ôֻ +#define NET_DVR_GET_SHIPSDETECTION_CFG 6656 //ȡֻ +#define NET_DVR_GET_SHIPSDETECTION_CAPABILITIES 6657 //ȡֻ +#define NET_DVR_GET_SHIPSDETECTION_COUNT 6658 //ȡֻϢ +#define NET_DVR_SHIPSCOUNT_DELETE_CTRL 6659 //մֻϢ + +#define NET_DVR_GET_BAREDATAOVERLAY_CAPABILITIES 6660 //ȡݵ +#define NET_DVR_SET_BAREDATAOVERLAY_CFG 6661 //ݵ +#define NET_DVR_GET_BAREDATAOVERLAY_CFG 6662 //ȡݵ +#define NET_DVR_GET_SHIPSDETECTION_SCHEDULE 6663 //ȡֻⲼʱ +#define NET_DVR_SET_SHIPSDETECTION_SCHEDULE 6664 //ôֻⲼʱ +#define NET_DVR_GET_SHIPSDETECTION_EVENT_TRIGGER 6665 //ȡֻ +#define NET_DVR_SET_SHIPSDETECTION_EVENT_TRIGGER 6666 //ôֻ +#define NET_DVR_GET_SHIPSDETECTION_SCHEDULE_CAPABILITIES 6667 //ȡֻⲼʱ + +#define NET_DVR_FIRE_FOCUSZOOM_CTRL 6670 //ɼ⾵ͷ۽䱶 + +#define NET_DVR_GET_FIREDETECTION_SCHEDULE_CAPABILITIES 6671 //ȡⲼʱ +#define NET_DVR_GET_FIREDETECTION_SCHEDULE 6672 //ȡⲼʱ +#define NET_DVR_SET_FIREDETECTION_SCHEDULE 6673 //ûⲼʱ +#define NET_DVR_GET_MANUALRANGING_CAPABILITIES 6675 //ȡֶ +#define NET_DVR_SET_MANUALRANGING 6677 //ֶ +#define NET_DVR_GET_MANUALDEICING_CAPABILITIES 6678//ȡֶ +#define NET_DVR_SET_MANUALDEICING 6679 //ֶ +#define NET_DVR_GET_MANUALDEICING 6680 //ȡֶ + +#define NET_DVR_GET_THERMALPOWER_CAPABILITIES 6689 //ȡԴ +#define NET_DVR_GET_THERMALPOWER 6690 //ȡԴò +#define NET_DVR_SET_THERMALPOWER 6691 //Դò +#define NET_DVR_GET_PTZABSOLUTEEX_CAPABILITIES 6695 //ȡ߾PTZλչ +#define NET_DVR_GET_PTZABSOLUTEEX 6696 //ȡ߾PTZλչ +#define NET_DVR_SET_PTZABSOLUTEEX 6697 //ø߾PTZλչ + +#define NET_DVR_GET_CRUISE_CAPABILITIES 6698 //ȡ豸Ѳģʽ +#define NET_DVR_GET_CRUISE_INFO 6699 //ȡ豸Ѳģʽ +#define NET_DVR_GET_TEMP_HUMI_CAPABILITIES 6700 //ʪʵʱȡ +#define NET_DVR_GET_TEMP_HUMI_INFO 6701 //ʪʵʱȡ + +#define NET_DVR_GET_MANUALTHERM_INFO 6706 //ֶʵʱȡ +#define NET_DVR_GET_MANUALTHERM_CAPABILITIES 6707 //ȡֶʵʱ +#define NET_DVR_SET_MANUALTHERM 6708 //ֶ + +//DVR96000 +#define NET_DVR_GET_ACCESSORY_CARD_INFO_CAPABILITIES 6709 //ȡϢ +#define NET_DVR_GET_ACCESSORY_CARD_INFO 6710 //ȡϢ + +#define NET_DVR_GET_THERMINTELL_CAPABILITIES 6711 //ȡȳܻ +#define NET_DVR_GET_THERMINTELL 6712 //ȡȳܻò +#define NET_DVR_SET_THERMINTELL 6713 //ȳܻò +#define NET_GET_CRUISEPOINT_V50 6714 //ȡѲ·չ +#define NET_DVR_GET_MANUALTHERM_BASIC_CAPABILITIES 6715 //ȡֶ» +#define NET_DVR_SET_MANUALTHERM_BASICPARAM 6716 //ֶ» +#define NET_DVR_GET_MANUALTHERM_BASICPARAM 6717 //ȡֶ» + +#define NET_DVR_GET_FIRESHIELDMASK_CAPABILITIES 6718 //ȡ + +#define NET_DVR_GET_HIDDEN_INFORMATION_CAPABILITIES 6720 //Ϣ +#define NET_DVR_GET_HIDDEN_INFORMATION 6721 //ȡϢ +#define NET_DVR_SET_HIDDEN_INFORMATION 6722 //Ϣ + +#define NET_DVR_SET_FIRESHIELDMASK_CFG 6723 //ûβ +#define NET_DVR_GET_FIRESHIELDMASK_CFG 6724 //ȡβ + +#define NET_DVR_GET_SMOKESHIELDMASK_CAPABILITIES 6725 //ȡ +#define NET_DVR_SET_SMOKESHIELDMASK_CFG 6726 //β +#define NET_DVR_GET_SMOKESHIELDMASK_CFG 6727 //ȡβ + +#define NET_DVR_GET_AREASCAN_CAPABILITIES 6728 //ȡɨ +#define NET_DVR_GET_AREASCAN_CFG 6730 //ȡɨ + +#define NET_DVR_DEL_AREASCAN_CFG 6731 //ɨɾ +#define NET_DVR_AREASCAN_INIT_CTRL 6732 //ɨ +#define NET_DVR_AREASCAN_CONFIRM_CTRL 6733 //ɨ +#define NET_DVR_AREASCAN_STOP_CTRL 6734 //ֹͣɨ +#define NET_DVR_SAVE_SCANZOOM_CTRL 6735 //ɨ豶ʣ浱ǰѧΪɨ豶 +#define NET_DVR_GET_SCANZOOM_CTRL 6736 //ȡɨ豶ʣԤеĹѧʷصǰɨ豶ʡ +#define NET_DVR_DEL_FIRESHIELDMASK_CTRL 6737 //ɾ +#define NET_DVR_DEL_SMOKESHIELDMASK_CTRL 6738 //ɾ + +#define NET_DVR_GET_DENSEFOG_EVENT_TRIGGER 6740 //ȡ +#define NET_DVR_SET_DENSEFOG_EVENT_TRIGGER 6741 //ô +#define NET_DVR_SET_DENSEFOGDETECTION_CFG 6742 //ô +#define NET_DVR_GET_DENSEFOGDETECTION_CFG 6743 //ȡ +#define NET_DVR_GET_DENSEFOGDETECTION_CAPABILITIES 6744 //ȡ + +#define NET_DVR_GET_THERMOMETRY_SCHEDULE_CAPABILITIES 6750 //ȡ¼Ⲽʱ +#define NET_DVR_GET_THERMOMETRY_SCHEDULE 6751 //ȡ¼Ⲽʱ +#define NET_DVR_SET_THERMOMETRY_SCHEDULE 6752 //ò¼Ⲽʱ +#define NET_DVR_GET_TEMPERTURE_SCHEDULE_CAPABILITIES 6753 //ȡ²ʱ +#define NET_DVR_GET_TEMPERTURE_SCHEDULE 6754 //ȡ²ʱ +#define NET_DVR_SET_TEMPERTURE_SCHEDULE 6755 //²ʱ +#define NET_DVR_GET_SEARCH_LOG_CAPABILITIES 6756 //־֧ +#define NET_DVR_GET_VEHICLEFLOW 6758 //ȡ +#define NET_DVR_GET_IPADDR_FILTERCFG_V50 6759 //ȡIPַ˲չ +#define NET_DVR_SET_IPADDR_FILTERCFG_V50 6760 //IPַ˲չ +#define NET_DVR_GET_TEMPHUMSENSOR_CAPABILITIES 6761 //ȡʪȴ +#define NET_DVR_GET_TEMPHUMSENSOR 6762 //ȡʪȴЭ +#define NET_DVR_SET_TEMPHUMSENSOR 6763 //ʪȴЭ + +#define NET_DVR_GET_THERMOMETRY_MODE_CAPABILITIES 6764 //ȡģʽ +#define NET_DVR_GET_THERMOMETRY_MODE 6765 //ȡģʽ +#define NET_DVR_SET_THERMOMETRY_MODE 6766 //òģʽ + +#define NET_DVR_GET_THERMAL_PIP_CAPABILITIES 6767 //ȡȳл +#define NET_DVR_GET_THERMAL_PIP 6768 //ȡȳлò +#define NET_DVR_SET_THERMAL_PIP 6769 //ȳлò +#define NET_DVR_GET_THERMAL_INTELRULEDISPLAY_CAPABILITIES 6770 //ȡȳܹʾ +#define NET_DVR_GET_THERMAL_INTELRULE_DISPLAY 6771 //ȡȳܹʾ +#define NET_DVR_SET_THERMAL_INTELRULE_DISPLAY 6772 //ȳܹʾ +#define NET_DVR_GET_THERMAL_ALGVERSION 6773 //ȡȳ㷨汾 +#define NET_DVR_GET_CURRENT_LOCK_CAPABILITIES 6774 //ȡ +#define NET_DVR_GET_CURRENT_LOCK 6775 //ȡò +#define NET_DVR_SET_CURRENT_LOCK 6776 //õò + +#define NET_DVR_DEL_MANUALTHERM_RULE 6778 //ɾֶ¹ + +#define NET_DVR_GET_UPGRADE_INFO 6779 //ȡϢ + +#define NET_DVR_SWITCH_TRANSFER 7000 + +#define NET_DVR_GET_MB_POWERCTRLPARA 8000//ȡƲ +#define NET_DVR_SET_MB_POWERCTRLPARA 8001 //Ʋ +#define NET_DVR_GET_AUTOBACKUPPARA 8002//ȡԶݲ +#define NET_DVR_SET_AUTOBACKUPPARA 8003 //Զݲ +#define NET_DVR_GET_MB_GPSPARA 8004//ȡGPS +#define NET_DVR_SET_MB_GPSPARA 8005 //GPS +#define NET_DVR_GET_MB_SENSORINPARA 8006//ȡSENSOR +#define NET_DVR_SET_MB_SENSORINPARA 8007 //SENSOR +#define NET_DVR_GET_GSENSORPARA 8008//ȡGSENSOR +#define NET_DVR_SET_GSENSORPARA 8009 //GSENSOR +#define NET_DVR_GET_MB_DOWNLOADSVRPARA 8010//ȡط +#define NET_DVR_SET_MB_DOWNLOADSVRPARA 8011//ط +#define NET_DVR_GET_PLATERECOG_PARA 8012//ȡʶ +#define NET_DVR_SET_PLATERECOG_PARA 8013//óʶ +#define NET_DVR_GET_ENFORCESYS_PARA 8014//ȡ +#define NET_DVR_SET_ENFORCESYS_PARA 8015//ó +#define NET_DVR_GET_GPS_DATA 8016 //ȡGPS +#define NET_DVR_GET_ANALOG_ALARMINCFG 8017//ȡģⱨ +#define NET_DVR_SET_ANALOG_ALARMINCFG 8018//ģⱨ + +#define NET_DVR_GET_SYSTEM_CAPABILITIES 8100 //ȡ豸ϵͳ +#define NET_DVR_GET_EAGLEEYE_CAPABILITIES 8101 //ȡ豸ӥ +#define NET_DVR_GET_SLAVECAMERA_CALIB_V51 8102 //ȡ궨V51 +#define NET_DVR_SET_SLAVECAMERA_CALIB_V51 8103 //ô궨V51 +#define NET_DVR_SET_GOTOSCENE 8105 //תָijID + +//IKEϵNVRƷ +#define NET_DVR_GET_PTZ_NOTIFICATION 8201//ȡͨ¼PTZ +#define NET_DVR_SET_PTZ_NOTIFICATION 8202//öͨ¼PTZ +/*****************************ǽ start****************************/ +#define NET_DVR_MATRIX_WALL_SET 9001 //õǽĻ +#define NET_DVR_MATRIX_WALL_GET 9002 //ȡǽĻ +#define NET_DVR_WALLWIN_GET 9003 //ǽлȡڲ +#define NET_DVR_WALLWIN_SET 9004 //ǽôڲ +#define NET_DVR_WALLWINPARAM_SET 9005 //õǽز +#define NET_DVR_WALLWINPARAM_GET 9006 //ȡǽز +#define NET_DVR_WALLSCENEPARAM_GET 9007 //óģʽ +#define NET_DVR_WALLSCENEPARAM_SET 9008 //ȡģʽ +#define NET_DVR_MATRIX_GETWINSTATUS 9009 //ȡڽ״̬ +#define NET_DVR_GET_WINASSOCIATEDDEVINFO 9010 //ǽлȡӦԴϢ +#define NET_DVR_WALLOUTPUT_GET 9011 //ǽлȡʾ +#define NET_DVR_WALLOUTPUT_SET 9012 //ǽʾ +#define NET_DVR_GET_UNITEDMATRIXSYSTEM 9013 //ǽлȡӦԴ +#define NET_DVR_GET_WALL_CFG 9014 //ȡǽȫֲ +#define NET_DVR_SET_WALL_CFG 9015 //õǽȫֲ +#define NET_DVR_CLOSE_ALL_WND 9016 //رд +#define NET_DVR_SWITCH_WIN_TOP 9017 //ö +#define NET_DVR_SWITCH_WIN_BOTTOM 9018 //õ + +#define NET_DVR_CLOSE_ALL_WND_V41 9019 //ǽرдv41жǽ +#define NET_DVR_GET_WALL_WINDOW_V41 9020 //ȡǽеĴv41 +#define NET_DVR_SET_WALL_WINDOW_V41 9021 //õǽеĴv41 +#define NET_DVR_GET_CURRENT_SCENE_V41 9022 //ȡǰǽʹõijv41 +#define NET_DVR_GET_WALL_SCENE_PARAM_V41 9023 //ȡǰǽʹõijv41 +#define NET_DVR_SET_WALL_SCENE_PARAM_V41 9024 //õǰǽʹõijv41 +#define NET_DVR_GET_MATRIX_LOGO_CFG 9025 //ȡlogo +#define NET_DVR_SET_MATRIX_LOGO_CFG 9026 //logo +#define NET_DVR_GET_WIN_LOGO_CFG 9027 //ȡlogo +#define NET_DVR_SET_WIN_LOGO_CFG 9028 //ôlogo +#define NET_DVR_DELETE_LOGO 9029 //ɾlogo +#define NET_DVR_SET_DISPLAY_EFFECT_CFG 9030 //ʾЧv41 +#define NET_DVR_GET_DISPLAY_EFFECT_CFG 9031 //ȡʾЧv41 +#define NET_DVR_DEC_PLAY_REMOTE_FILE 9032 //벥Զļ +#define NET_DVR_DEC_PLAY_REMOTE_FILE_V50 9314 //벥ԶļV50 +#define NET_DVR_GET_WIN_ZOOM_STATUS 9033 //ȡڵӷŴ״̬ +#define NET_DVR_GET_ALL_MATRIX_LOGOCFG 9034 //ȡlogo + +/*****************************ǽ end******************************/ + +/*******************************LCDƴ begin******************************************/ +#define NET_DVR_SIMULATE_REMOTE_CONTROL 9035 //ģңذ 2013-09-05 +#define NET_DVR_SET_SCREEN_SIGNAL_CFG 9036 //ĻźԴ +#define NET_DVR_GET_SCREEN_SIGNAL_CFG 9037 //ȡĻźԴ +#define NET_DVR_SET_SCREEN_SPLICE_CFG 9038 //Ļƴ +#define NET_DVR_GET_SCREEN_SPLICE_CFG 9039 //ȡĻƴ +#define NET_DVR_GET_SCREEN_FAN_WORK_MODE 9040 //ȡȹʽ +#define NET_DVR_SET_SCREEN_FAN_WORK_MODE 9041 //÷ȹʽ +#define NET_DVR_SHOW_SCREEN_WORK_STATUS 9044 //ʾĻ״̬ +#define NET_DVR_GET_VGA_CFG 9045 //ȡVGAź +#define NET_DVR_SET_VGA_CFG 9046 //VGAź +#define NET_DVR_GET_SCREEN_MENU_CFG 9048 //ȡĻ˵ +#define NET_DVR_SET_SCREEN_MENU_CFG 9049 //Ļ˵ +#define NET_DVR_SET_SCREEN_DISPLAY_CFG 9050 //ʾ 2013-08-28 +#define NET_DVR_GET_SCREEN_DISPLAY_CFG 9051 //ȡʾ 2013-08-28 + +#define NET_DVR_SET_FUSION_CFG 9052 //ͼںϲ +#define NET_DVR_GET_FUSION_CFG 9053 //ȡͼںϲ + +#define NET_DVR_SET_PIP_CFG 9060 //ûл +#define NET_DVR_GET_PIP_CFG 9061 //ȡл +#define NET_DVR_SET_DEFOG_LCD 9073 //͸ +#define NET_DVR_GET_DEFOG_LCD 9074 //ȡ͸ +#define NET_DVR_SHOW_IP 9075 //ʾIP +#define NET_DVR_SCREEN_MAINTENANCE_WALL 9076 //Ļάǽ +#define NET_DVR_SET_SCREEN_POS 9077 //Ļλò +#define NET_DVR_GET_SCREEN_POS 9078 //ȡĻλò +/*******************************LCDƴ end******************************************/ + +/*******************************LCDƴV1.2 begin******************************************/ +#define NET_DVR_SCREEN_INDEX_SET 9079 //Ļز +#define NET_DVR_SCREEN_INDEX_GET 9080 //Ļزȡ +#define NET_DVR_SCREEN_SPLICE_SET 9081 //ĻƴӲ +#define NET_DVR_SCREEN_SPLICE_GET 9082 //ȡĻƴӲ +#define NET_DVR_SET_SCREEN_PARAM 9083 //Ļز +#define NET_DVR_GET_SCREEN_PARAM 9084 //ȡĻز +#define NET_DVR_SET_SWITCH_CFG 9085 //öʱػ +#define NET_DVR_GET_SWITCH_CFG 9086 //ȡʱػ +#define NET_DVR_SET_POWERON_DELAY_CFG 9087 //ʱ +#define NET_DVR_GET_POWERON_DELAY_CFG 9088 //ȡʱ +#define NET_DVR_SET_SCREEN_POSITION 9089 //Ļλò +#define NET_DVR_GET_SCREEN_POSITION 9090 //ȡĻλò +#define NET_DVR_SCREEN_SCENE_CONTROL 9091 //Ļ +#define NET_DVR_GET_CURRENT_SCREEN_SCENE 9092 //ȡǰĻ +#define NET_DVR_GET_SCREEN_SCENE_PARAM 9093 //ȡĻģʽ +#define NET_DVR_SET_SCREEN_SCENE_PARAM 9094 //Ļģʽ +#define NET_DVR_GET_EXTERNAL_MATRIX_RELATION 9095 //ȡӾϵ +#define NET_DVR_GET_LCD_AUDIO_CFG 9096 //ȡLCDĻƵ +#define NET_DVR_SET_LCD_AUDIO_CFG 9097 //LCDĻƵ +#define NET_DVR_GET_LCD_WORK_STATE 9098 //ȡLCDĻ״̬ +#define NET_DVR_GET_BOOT_LOGO_CFG 9099 //ȡLCDĻlogoʾ +#define NET_DVR_SET_BOOT_LOGO_CFG 9100 //LCDĻlogoʾ + +/*******************************LCDƴV1.2 end ******************************************/ +#define NET_DVR_GET_STREAM_DST_COMPRESSIONINFO 9101 //ȡĿѹ +#define NET_DVR_SET_STREAM_DST_COMPRESSIONINFO 9102 //Ŀѹ +#define NET_DVR_GET_STREAM_TRANS_STATUS 9103 //ȡ״̬ +#define NET_DVR_GET_DEVICE_TRANS_STATUS 9104 //ȡ豸ת״̬ +#define NET_DVR_GET_ALLSTREAM_SRC_INFO 9105 //ȡϢ +#define NET_DVR_GET_BIG_SCREEN_AUDIO 9106 //ȡƵϢ +#define NET_DVR_SET_BIG_SCREEN_AUDIO 9107 //ôƵϢ +#define NET_DVR_GET_DEV_WORK_MODE 9108 //ȡת豸ģʽ +#define NET_DVR_SET_DEV_WORK_MODE 9109 //ת豸ģʽ +#define NET_DVR_APPLY_TRANS_CHAN 9110 //IDתͨ +#define NET_DVR_GET_DISPCHAN_CFG 9111 //ȡʾͨ +#define NET_DVR_SET_DISPCHAN_CFG 9112 //ʾͨ + +#define NET_DVR_GET_DEC_CHAN_STATUS 9113 //ȡͨ״̬ +#define NET_DVR_GET_DISP_CHAN_STATUS 9114 //ȡʾͨ״̬ +#define NET_DVR_GET_ALARMIN_STATUS 9115 //ȡ״̬ +#define NET_DVR_GET_ALARMOUT_STATUS 9116 //ȡ״̬ +#define NET_DVR_GET_AUDIO_CHAN_STATUS 9117 //ȡԽ״̬ + +#define NET_DVR_GET_VIDEO_AUDIOIN_CFG 9118 //ȡƵƵ +#define NET_DVR_SET_VIDEO_AUDIOIN_CFG 9119 //ƵƵ + +#define NET_DVR_SET_BASEMAP_CFG 9120 //õͼ +#define NET_DVR_GET_BASEMAP_CFG 9121 //ȡͼ +#define NET_DVR_GET_VIRTUAL_SCREEN_CFG 9122 //ȡϵͳ +#define NET_DVR_SET_VIRTUAL_SCREEN_CFG 9123 //óϵͳ +#define NET_DVR_GET_BASEMAP_WIN_CFG 9124 //ȡͼڲ +#define NET_DVR_SET_BASEMAP_WIN_CFG 9125 //õͼڲ +#define NET_DVR_DELETE_PICTURE 9126 //ɾͼ +#define NET_DVR_GET_BASEMAP_PIC_INFO 9127 //ȡͼͼƬϢ +#define NET_DVR_SET_BASEMAP_WIN_CFG_V40 9128 //õͼڲV40 +#define NET_DVR_GET_BASEMAP_WIN_CFG_V40 9129 //ȡͼڲV40 + +#define NET_DVR_GET_DEC_VCA_CFG 9130 //ȡܱ +#define NET_DVR_SET_DEC_VCA_CFG 9131 //ýܱ + +#define NET_DVR_SET_VS_INPUT_CHAN_INIT_ALL 9132 //ʼӰͨ +#define NET_DVR_GET_VS_INPUT_CHAN_INIT_ALL 9133 //ȡӰͨijʼ +#define NET_DVR_GET_VS_INPUT_CHAN_INIT 9134 //ȡͨijʼ +#define NET_DVR_GET_VS_INPUT_CHAN_CFG 9135 //ȡͨò + +#define NET_DVR_GET_TERMINAL_CONFERENCE_STATUS 9136 //ȡն˻״̬ +#define NET_DVR_GET_TERMINAL_INPUT_CFG_CAP 9137 //ȡն +#define NET_DVR_GET_TERMINAL_INPUT_CFG 9138 //ȡնƵ +#define NET_DVR_SET_TERMINAL_INPUT_CFG 9139 //նƵ + +#define NET_DVR_GET_CONFERENCE_REGION_CAP 9140 //ȡն˻ +#define NET_DVR_GET_CONFERENCE_REGION 9141 //ȡն˻ +#define NET_DVR_SET_CONFERENCE_REGION 9142 //ն˻ +#define NET_DVR_GET_TERMINAL_CALL_CFG_CAP 9143 //ȡն˺ +#define NET_DVR_GET_TERMINAL_CALL_CFG 9144 //ȡն˺в +#define NET_DVR_SET_TERMINAL_CALL_CFG 9145 //ն˺в +#define NET_DVR_GET_TERMINAL_CTRL_CAP 9146 //ȡն˺п +#define NET_DVR_TERMINAL_CTRL 9147 //ն˺п +#define NET_DVR_GET_CALL_QUERY_CAP 9148 //ȡ +#define NET_DVR_GET_CALLINFO_BY_COND 9149 //ѯм¼ + +#define NET_DVR_SET_FUSION_SCALE 9150 //ͼںϹģ +#define NET_DVR_GET_FUSION_SCALE 9151 //ȡͼںϹģ + +#define NET_DVR_GET_VCS_CAP 9152 //ȡMCU + + +#define NET_DVR_GET_TERMINAL_GK_CFG_CAP 9153 //ȡնעGK +#define NET_DVR_GET_TERMINAL_GK_CFG 9154 //ȡնעGK +#define NET_DVR_SET_TERMINAL_GK_CFG 9155 //նעGK +#define NET_DVR_GET_MCU_CONFERENCESEARCH_CAP 9156 //ȡMCU豸 +#define NET_DVR_SET_VS_INPUT_CHAN_CFG 9157 //ͨò +#define NET_DVR_GET_VS_NETSRC_CFG 9158 //Դ +#define NET_DVR_SET_VS_NETSRC_CFG 9159 //Դ + +#define NET_DVR_GET_LLDP_CFG 9160 //ȡLLDP +#define NET_DVR_SET_LLDP_CFG 9161 //LLDP +#define NET_DVR_GET_LLDP_CAP 9162 //ȡLLDP +#define NET_DVR_GET_FIBER_CONVERT_BASIC_INFO 9163 //ȡշϢ +#define NET_DVR_GET_FIBER_CONVERT_WORK_STATE 9164 //ȡշ״ +#define NET_DVR_GET_FIBER_CONVERT_TOPOLOGY 9165 //ȡշϢ +#define NET_DVR_GET_FC_PORT_REMARKS 9166 //ȡշ˿עͲ +#define NET_DVR_SET_FC_PORT_REMARKS 9167 //ùշ˿עͲ +#define NET_DVR_GET_PORT_REMARKS_CAP 9168 //ȡշ˿ע + +#define NET_DVR_GET_MCU_CONFERENCECONTROL_CAP 9169 //ȡ +#define NET_DVR_GET_MCU_TERMINALCONTROL_CAP 9170 //ȡն˿ +#define NET_DVR_GET_MCU_TERIMINALGROUP_CAP 9171 //ȡն˷ +#define NET_DVR_GET_MCU_TERMINAL_CAP 9174 //ȡն˹ +#define NET_DVR_GET_MCU_CONFERENCE_CAP 9175 //ȡ +#define NET_DVR_GET_MCU_GK_CFG_CAP 9176 //ȡMCUGK +#define NET_DVR_GET_MCU_GK_SERVER_CAP 9177 //ȡMCUGK + +#define NET_DVR_GET_EDID_CFG_FILE_INFO 9178 //ȡEDIDļϢ +#define NET_DVR_GET_EDID_CFG_FILE_INFO_LIST 9179 //ȡEDIDļϢ +#define NET_DVR_SET_EDID_CFG_FILE_INFO 9180 //EDIDļϢ +#define NET_DVR_DEL_EDID_CFG_FILE_INFO 9181 //ɾEDIDļϢļ +#define NET_DVR_GET_EDID_CFG_FILE_INFO_CAP 9182 //EDIDļϢ + +#define NET_DVR_GET_SUBWND_DECODE_OSD 9183 //ȡӴڽOSDϢ +#define NET_DVR_GET_SUBWND_DECODE_OSD_ALL 9184 //ȡӴڽOSDϢ +#define NET_DVR_SET_SUBWND_DECODE_OSD 9185 //ӴڽOSDϢ +#define NET_DVR_GET_SUBWND_DECODE_OSD_CAP 9186 //ȡӴڽOSDϢ +#define NET_DVR_GET_DECODE_CHANNEL_OSD 9187 //ȡͨOSDϢ +#define NET_DVR_SET_DECODE_CHANNEL_OSD 9188 //ýͨOSDϢ + + +#define NET_DVR_GET_OUTPUT_PIC_INFO 9200 //ȡͼƬ +#define NET_DVR_SET_OUTPUT_PIC_INFO 9201 //ͼƬ +#define NET_DVR_GET_OUTPUT_PIC_WIN_CFG 9202 //ȡͼƬڲ +#define NET_DVR_SET_OUTPUT_PIC_WIN_CFG 9203 //ͼƬڲ +#define NET_DVR_GET_OUTPUT_ALL_PIC_WIN_CFG 9204 //ȡͼƬڲ +#define NET_DVR_DELETE_OUPUT_PIC 9205 //ɾͼƬ +#define NET_DVR_GET_OUTPUT_OSD_CFG 9206 //ȡOSD +#define NET_DVR_SET_OUTPUT_OSD_CFG 9207 //OSD +#define NET_DVR_GET_OUTPUT_ALL_OSD_CFG 9208 //ȡOSD +#define NET_DVR_GET_CHAN_RELATION 9209 //ȡͨԴ +#define NET_DVR_SET_CHAN_RELATION 9210 //ñͨԴ +#define NET_DVR_GET_ALL_CHAN_RELATION 9211 //ȡбͨԴ +#define NET_DVR_GET_NS_RING_CFG 9212 //ȡ˰廷 +#define NET_DVR_SET_NS_RING_CFG 9213 //ù˰廷 +#define NET_DVR_GET_NS_RING_STATUS 9214 //ȡ˰廷״̬ +#define NET_DVR_GET_OPTICAL_PORT_INFO 9220 //ȡϢ +#define NET_DVR_SET_OPTICAL_PORT_INFO 9221 //ùϢ +#define NET_DVR_GET_OPTICAL_CHAN_RELATE_CFG 9222 //ȡͨԴ +#define NET_DVR_SET_OPTICAL_CHAN_RELATE_CFG 9223 //ñͨԴ +#define NET_DVR_GET_WIN_ROAM_SWITCH_CFG 9224 //ȡοز +#define NET_DVR_SET_WIN_ROAM_SWITCH_CFG 9225 //ýοز +#define NET_DVR_START_SCREEN_CRTL 9226 //ʼĻ +#define NET_DVR_GET_SCREEN_FLIE_LIST 9227 //ȡĻļб +#define NET_DVR_GET_SCREEN_FILEINFO 9228 //ȡĻļϢ +#define NET_DVR_SET_SCREEN_FILEINFO 9229 //ĻļϢ + +/*******************************СLEDʾ begin***************************************/ +#define NET_DVR_GET_LED_OUTPUT_CFG 9230 //ȡͿ +#define NET_DVR_SET_LED_OUTPUT_CFG 9231 //÷Ϳ +#define NET_DVR_GET_LED_OUTPUT_PORT_CFG 9232 //ȡLEDͿ˿ڲ +#define NET_DVR_SET_LED_OUTPUT_PORT_CFG 9233 //LEDͿ˿ڲ +#define NET_DVR_GET_LED_DISPLAY_AREA_CFG 9234 //ȡLEDͿʾ +#define NET_DVR_SET_LED_DISPLAY_AREA_CFG 9235 //LEDͿʾ +#define NET_DVR_GET_LED_PORT_CFG 9236 //ȡLEDͿ˿ڲ +#define NET_DVR_SET_LED_PORT_CFG 9237 //LEDͿ˿ڲ +#define NET_DVR_GET_LED_DISPLAY_CFG 9238 //ȡLEDͿʾ +#define NET_DVR_SET_LED_DISPLAY_CFG 9239 //LEDͿʾ +#define NET_DVR_GET_ALL_LED_PORT_CFG 9240 //ȡLEDͿijӦ +#define NET_DVR_SAVE_LED_CONFIGURATION 9241 //̻ +#define NET_DVR_GET_LED_TEST_SIGNAL_CFG 9242 //ȡLEDźŲ +#define NET_DVR_SET_LED_TEST_SIGNAL_CFG 9243 //LEDźŲ +#define NET_DVR_GET_LED_NOSIGNAL_CFG 9244 //ȡLEDźʾģʽ +#define NET_DVR_SET_LED_NOSIGNAL_CFG 9245 //LEDźʾģʽ +#define NET_DVR_GET_LED_INPUT_CFG 9246 //ȡLEDͿ +#define NET_DVR_SET_LED_INPUT_CFG 9247 //LEDͿ +#define NET_DVR_GET_LED_RECV_GAMMA_CFG 9248 //ȡտGAMMA +#define NET_DVR_SET_LED_RECV_GAMMA_CFG 9249 //ýտGAMMA +#define NET_DVR_GET_LED_RECV_CFG 9250 //ȡտ +#define NET_DVR_SET_LED_RECV_CFG 9251 //ýտ +#define NET_DVR_GET_LED_RECV_ADVANCED_CFG 9252 //ȡտ߼ +#define NET_DVR_SET_LED_RECV_ADVANCED_CFG 9253 //ýտ߼ +#define NET_DVR_GET_LED_SCREEN_DISPLAY_CFG 9254 //ȡLEDʾ +#define NET_DVR_SET_LED_SCREEN_DISPLAY_CFG 9255 //LEDʾ +/*******************************СLEDʾ end*****************************************/ + +#define NET_DVR_GET_INSERTPLAY_PROGRESS 9273 //ȡ岥 + +#define NET_DVR_GET_SCREEN_CONFIG 9260 //ȡĻ +#define NET_DVR_SET_SCREEN_CONFIG 9261 //Ļ +#define NET_DVR_GET_SCREEN_CONFIG_CAP 9262 //ȡĻ + +#define NET_DVR_GET_SCHEDULE_PUBLISH_PROGRESS 9271 //ȡճ̷ +#define NET_DVR_GET_PUBLISH_UPGRADE_PROGRESS 9272 //ȡϢն + +#define NET_DVR_GET_INPUT_BOARD_CFG 9281 //ȡϢ +#define NET_DVR_GET_INPUT_BOARD_CFG_LIST 9282 //ȡϢб +#define NET_DVR_SET_INPUT_BOARD_CFG 9283 //Ϣ + +#define NET_DVR_GET_INPUT_SOURCE_TEXT_CAP 9284 //ȡԴַ +#define NET_DVR_GET_INPUT_SOURCE_TEXT_CFG 9285 //ȡԴַӲ +#define NET_DVR_GET_INPUT_SOURCE_TEXT_CFG_LSIT 9286 //ȡԴַӲб +#define NET_DVR_SET_INPUT_SOURCE_TEXT_CFG 9287 //ԴַӲ +#define NET_DVR_SET_INPUT_SOURCE_TEXT_CFG_LIST 9288 //ԴַӲб +#define NET_DVR_GET_INPUT_SOURCE_RESOLUTION_CAP 9289 //ȡԴԶֱ +#define NET_DVR_GET_INPUT_SOURCE_RESOLUTION_CFG 9290 //ȡԴԶֱʲ +#define NET_DVR_GET_INPUT_SOURCE_RESOLUTION_CFG_LIST 9291 //ȡԴԶֱб +#define NET_DVR_SET_INPUT_SOURCE_RESOLUTION_CFG 9292 //ԴԶֱʲ +#define NET_DVR_SET_INPUT_SOURCE_RESOLUTION_CFG_LIST 9293 //ԴԶֱʲ +#define NET_DVR_GET_LED_AREA_INFO_LIST 9295 //ȡLEDб + +#define NET_DVR_GET_DISPINPUT_CFG 9296 //ȡʾ +#define NET_DVR_GET_DISPINPUT_CFG_LIST 9297 //ȡʾ +#define NET_DVR_SET_DISPINPUT_CFG 9298 //ʾ +#define NET_DVR_GET_DISPINPUT_CFG_CAP 9299 //ȡʾ +#define NET_DVR_GET_CURRENT_VALID_PORT 9300 //ȡǰЧ,ӵĶ˿ + +#define NET_DVR_SET_ONLINE_UPGRADE 9301 // +#define NET_DVR_GET_ONLINEUPGRADE_PROGRESS 9302 //ȡ +#define NET_DVR_GET_FIRMWARECODE 9303 //ȡʶ +#define NET_DVR_GET_ONLINEUPGRADE_SERVER 9304 //ȡ״̬ +#define NET_DVR_GET_ONLINEUPGRADE_VERSION 9305 //ȡ°汾Ϣ +#define NET_DVR_GET_RECOMMEN_VERSION 9306 //ǷƼ˰汾 +#define NET_DVR_GET_ONLINEUPGRADE_ABILITY 9309 //ȡ + +#define NET_DVR_GET_FIBER_CONVERT_BASIC_INFO_V50 9310 //ȡԶշϢV50 +#define NET_DVR_GET_FIBER_CONVERT_WORK_STATE_V50 9311 //ȡԶշ״̬ + +#define NET_SDK_LED_SCREEN_CHECK 9312 //LEDĻУ +#define NET_SDK_GENERATE_OUTPUT_CONTROL 9315 //ͨչģ +#define NET_SDK_GET_MATRIX_STATUS_V51 9313 /*ȡƵۺƽ̨״̬*/ + +//DS-19D2000-S V2.0 ò +#define NET_DVR_GET_ALARM_LINKAGE_CFG 9316 //ȡò +#define NET_DVR_SET_ALARM_LINKAGE_CFG 9317 //öò + + +#define NET_DVR_GET_RS485_WORK_MODE 10001 //ȡRS485ڹģʽ +#define NET_DVR_SET_RS485_WORK_MODE 10002 //RS485ڹģʽ +#define NET_DVR_GET_SPLITTER_TRANS_CHAN_CFG 10003 //ȡ͸ͨ +#define NET_DVR_SET_SPLITTER_TRANS_CHAN_CFG 10004 //͸ͨ + +#define NET_DVR_GET_RS485_PROTOCOL_VERSION 10301 //ȡRS485Э汾Ϣ +#define NET_DVR_ALARMHOST_REGISTER_DETECTOR 10302 //Զע̽ + +#define NET_DVR_GET_SIP_CFG 11001 //IPӻȡSIP +#define NET_DVR_SET_SIP_CFG 11002 //IPӻSIP +#define NET_DVR_GET_IP_VIEW_DEVCFG 11003 //ȡIPԽֻ +#define NET_DVR_SET_IP_VIEW_DEVCFG 11004 //IPԽֻ +#define NET_DVR_GET_IP_VIEW_AUDIO_CFG 11005 //ȡIPԽֻƵ +#define NET_DVR_SET_IP_VIEW_AUDIO_CFG 11006 //IPԽֻƵ +#define NET_DVR_GET_IP_VIEW_CALL_CFG 11007 //ȡIPԽֻв +#define NET_DVR_SET_IP_VIEW_CALL_CFG 11008 //IPԽֻв +#define NET_DVR_GET_AUDIO_LIMIT_ALARM_CFG 11009 //ȡò +#define NET_DVR_SET_AUDIO_LIMIT_ALARM_CFG 11010 //ò +#define NET_DVR_GET_BUTTON_DOWN_ALARM_CFG 11011 //ȡť¸澯ò +#define NET_DVR_SET_BUTTON_DOWN_ALARM_CFG 11012 //ðť¸澯ò + +#define NET_DVR_GET_ISCSI_CFG 11070 // ȡISCSI洢Э +#define NET_DVR_SET_ISCSI_CFG 11071 // ȡISCSI洢Э + +#define NET_DVR_GET_SECURITYMODE 12004 //ȡǰȫģʽ +//2013-11-21 ȡ豸ǰ¶Ⱥʪ +#define NET_DVR_GET_TEMP_HUMI 12005 + +//2014-02-15 IPCԶĿ +#define NET_DVR_SET_ALARMSOUNDMODE 12006 //ñģʽ +#define NET_DVR_GET_ALARMSOUNDMODE 12007 //ȡģʽ + +#define NET_DVR_SET_IPDEVICE_ACTIVATED 13000//ͨNVRǰ豸 +#define NET_DVR_GET_DIGITAL_CHAN_SECURITY_STATUS 13001 //ȡͨӦ豸ȫ״̬ +#define NET_DVR_GET_ACTIVATE_IPC_ABILITY 13003 //ȡNVRIPC + + +/*******************************¥ӶԽ start***********************************/ +#define NET_DVR_GET_VIDEO_INTERCOM_DEVICEID_CFG 16001 //ȡӶԽ豸 +#define NET_DVR_SET_VIDEO_INTERCOM_DEVICEID_CFG 16002 //ÿӶԽ豸 +#define NET_DVR_SET_PRIVILEGE_PASSWORD 16003 //ȨϢ +#define NET_DVR_GET_OPERATION_TIME_CFG 16004 //ȡʱ +#define NET_DVR_SET_OPERATION_TIME_CFG 16005 //òʱ +#define NET_DVR_GET_VIDEO_INTERCOM_RELATEDEV_CFG 16006 //ȡ豸 +#define NET_DVR_SET_VIDEO_INTERCOM_RELATEDEV_CFG 16007 //ù豸 +#define NET_DVR_REMOTECONTROL_NOTICE_DATA 16008 //Ϣ· +#define NET_DVR_REMOTECONTROL_GATEWAY 16009 //Զ̿ +#define NET_DVR_REMOTECONTROL_OPERATION_AUTH 16010 //Ȩ֤ + +#define NET_DVR_GET_VIDEO_INTERCOM_IOIN_CFG 16016 //ȡIO +#define NET_DVR_SET_VIDEO_INTERCOM_IOIN_CFG 16017 //IO +#define NET_DVR_GET_VIDEO_INTERCOM_IOOUT_CFG 16018 //ȡIO +#define NET_DVR_SET_VIDEO_INTERCOM_IOOUT_CFG 16019 //IO +#define NET_DVR_GET_ELEVATORCONTROL_CFG 16020 //ȡݿ +#define NET_DVR_SET_ELEVATORCONTROL_CFG 16021 //ݿ +#define NET_DVR_GET_VIDEOINTERCOM_STREAM 16022 //ȡӶԽͨ +#define NET_DVR_SET_VIDEOINTERCOM_STREAM 16023 //ÿӶԽͨ +#define NET_DVR_GET_WDR_CFG 16024 //ȡ̬ +#define NET_DVR_SET_WDR_CFG 16025 //ÿ̬ +#define NET_DVR_GET_VIS_DEVINFO 16026 //ȡ豸Ϣ +#define NET_DVR_GET_VIS_REGISTER_INFO 16027 //ȡ豸ע豸Ϣ +#define NET_DVR_GET_ELEVATORCONTROL_CFG_V40 16028 //ȡݿ-չ +#define NET_DVR_SET_ELEVATORCONTROL_CFG_V40 16029 //ݿ-չ +#define NET_DVR_GET_CALL_ROOM_CFG 16030 //ȡס +#define NET_DVR_SET_CALL_ROOM_CFG 16031 //ðס +#define NET_DVR_VIDEO_CALL_SIGNAL_PROCESS 16032 //ӻԽ +#define NET_DVR_GET_CALLER_INFO 16033 //ȡгϢ +#define NET_DVR_GET_CALL_STATUS 16034 //ȡͨ״̬ +#define NET_DVR_GET_SERVER_DEVICE_INFO 16035 //ȡ豸б +#define NET_DVR_SET_CALL_SIGNAL 16036 //ӶԽֻ˷ +#define NET_DVR_GET_VIDEO_INTERCOM_ALARM_CFG 16037 //ȡӶԽ¼ +#define NET_DVR_SET_VIDEO_INTERCOM_ALARM_CFG 16038 //ÿӶԽ¼ +#define NET_DVR_GET_RING_LIST 16039 //ѯб + +#define NET_DVR_GET_ROOM_CUSTOM_CFG 16040 //Զȡ +#define NET_DVR_SET_ROOM_CUSTOM_CFG 16041 //Զ +#define NET_DVR_GET_ELEVATORCONTROL_CFG_V50 16042 //ȡݿV50 +#define NET_DVR_SET_ELEVATORCONTROL_CFG_V50 16043 //ݿV50 +#define NET_DVR_GET_SIP_CFG_V50 16044 //ȡSIPV50 +#define NET_DVR_SET_SIP_CFG_V50 16045 //SIPV50 +#define NET_DVR_GET_NOTICE_VIDEO_DATA 16050 //Ƶȡ + +/*******************************¥ӶԽ end***********************************/ + +#define NET_DVR_DEBUGINFO_START 18000 //豸Ϣ +#define NET_DVR_AUTO_TEST_START 18001 //ԶԳӻȡ + +#define NET_DVR_GET_SELFCHECK_RESULT 20000 //ȡ豸Լ +#define NET_DVR_SET_TEST_COMMAND 20001 //òԿ +#define NET_DVR_SET_TEST_DEVMODULE 20002 //òӲģ +#define NET_DVR_GET_TEST_DEVMODULE 20003 //ȡӲģ + +#define NET_DVR_SET_AUTOFOCUS_TEST 20004 //ԶԽ 2013-10-26 +#define NET_DVR_CHECK_USER_STATUS 20005 //ûǷ +#define NET_DVR_GET_TEST_COMMAND 20010 //ȡԿ +#define NET_DVR_GET_DIAL_SWITCH_CFG 20200 //ȡ뿪Ϣ +#define NET_DVR_SET_AGING_TRICK_SCAN 20201 //ϻǰ󹤾߲ +#define NET_DVR_GET_ECCENTRIC_CORRECT_STATE 20202 //ȡȡƫУ״̬ + +#define NET_DVR_GET_THERMOMETRYRULE_TEMPERATURE_INFO 23001 //ֶȡ¹¶Ϣ + +#define NET_DVR_T1_TEST_CMD 131073 //ãͨı־ʲô.ݳȲô1024 +//ʽΪ//ָ豸Ĭϲػ + +// ֶƲ˵ģʽⲿ +#define NET_DVR_GET_MEMU_OUTPUT_MODE 155649 // ȡ˵ģʽ +#define NET_DVR_SET_MEMU_OUTPUT_MODE 155650 // ò˵ģʽ + +/***************************DS9000(_V30) end *****************************/ + +#define NET_DVR_GET_DEV_LOGIN_RET_INFO 16777200 //豸½ز + + +#define NET_DVR_GET_TEST_VERSION_HEAD 268435441 //ȡ԰汾ͷ +#define NET_DVR_SET_TEST_VERSION_HEAD 268435442 //ò԰汾ͷ +#define NET_DVR_GET_TEST_VERSION_HEAD_V1 268435443 //ȡ԰汾ͷ-ڶ +#define NET_DVR_SET_TEST_VERSION_HEAD_V1 268435444 //ò԰汾ͷ-ڶ +#define NET_DVR_GET_TEST_VERSION_HEAD_V2 268435445 //ȡ԰汾ͷ- +#define NET_DVR_SET_TEST_VERSION_HEAD_V2 268435446 //ò԰汾ͷ- + +#define NET_DVR_GET_TEST_VERSION_HEAD_ONLY_0 268435447 //ȡ԰汾ͷ,ǰһ汾 +#define NET_DVR_SET_TEST_VERSION_HEAD_ONLY_0 268435448 //ò԰汾ͷ,ǰһ汾 + + +#define MAX_LOCAL_ADDR_LEN 96 //SOCKS󱾵θ +#define MAX_COUNTRY_NAME_LEN 4 //ҼдƳ + +/************************DVR־ begin***************************/ + +/* */ +// +#define MAJOR_ALARM 0x1 +// +#define MINOR_ALARM_IN 0x1 /* */ +#define MINOR_ALARM_OUT 0x2 /* */ +#define MINOR_MOTDET_START 0x3 /* ƶⱨʼ */ +#define MINOR_MOTDET_STOP 0x4 /* ƶⱨ */ +#define MINOR_HIDE_ALARM_START 0x5 /* ڵʼ */ +#define MINOR_HIDE_ALARM_STOP 0x6 /* ڵ */ +#define MINOR_VCA_ALARM_START 0x7 /*ܱʼ*/ +#define MINOR_VCA_ALARM_STOP 0x8 /*ֹܱͣ*/ +#define MINOR_ITS_ALARM_START 0x09 // ͨ¼ʼ +#define MINOR_ITS_ALARM_STOP 0x0A // ͨ¼ +//2010-11-10 籨־ +#define MINOR_NETALARM_START 0x0b /*籨ʼ*/ +#define MINOR_NETALARM_STOP 0x0c /*籨*/ +//2010-12-16 ־"MINOR_ALARM_IN"ʹ +#define MINOR_NETALARM_RESUME 0x0d /*籨ָ*/ +//2012-4-5 IPC PIRߡȱ +#define MINOR_WIRELESS_ALARM_START 0x0e /* ߱ʼ */ +#define MINOR_WIRELESS_ALARM_STOP 0x0f /* ߱ */ +#define MINOR_PIR_ALARM_START 0x10 /* Ӧʼ */ +#define MINOR_PIR_ALARM_STOP 0x11 /* Ӧ */ +#define MINOR_CALLHELP_ALARM_START 0x12 /* ȱʼ */ +#define MINOR_CALLHELP_ALARM_STOP 0x13 /* ȱ */ +#define MINOR_IPCHANNEL_ALARMIN_START 0x14 //ͨ뿪ʼPCNVRڽյͨMINOR_ALARM_INͨ뿪ʼ10sղMINOR_ALARM_INͨ +#define MINOR_IPCHANNEL_ALARMIN_STOP 0x15 //ͨ뿪ʼͬ +#define MINOR_DETECTFACE_ALARM_START 0x16 /* ⱨʼ */ +#define MINOR_DETECTFACE_ALARM_STOP 0x17 /* ⱨ */ +#define MINOR_VQD_ALARM_START 0x18 //VQD +#define MINOR_VQD_ALARM_STOP 0x19 //VQD +#define MINOR_VCA_SECNECHANGE_DETECTION 0x1a //ⱨ 2013-07-16 + +#define MINOR_SMART_REGION_EXITING_BEGIN 0x1b //뿪⿪ʼ +#define MINOR_SMART_REGION_EXITING_END 0x1c //뿪 +#define MINOR_SMART_LOITERING_BEGIN 0x1d //ǻ⿪ʼ +#define MINOR_SMART_LOITERING_END 0x1e //ǻ + +#define MINOR_VCA_ALARM_LINE_DETECTION_BEGIN 0x20 +#define MINOR_VCA_ALARM_LINE_DETECTION_END 0x21 +#define MINOR_VCA_ALARM_INTRUDE_BEGIN 0x22 //⿪ʼ +#define MINOR_VCA_ALARM_INTRUDE_END 0x23 // +#define MINOR_VCA_ALARM_AUDIOINPUT 0x24 //Ƶ쳣 +#define MINOR_VCA_ALARM_AUDIOABNORMAL 0x25 //ǿͻ +#define MINOR_VCA_DEFOCUS_DETECTION_BEGIN 0x26 //齹⿪ʼ +#define MINOR_VCA_DEFOCUS_DETECTION_END 0x27 //齹 + +//NVR +#define MINOR_EXT_ALARM 0x28/*IPCⲿ*/ +#define MINOR_VCA_FACE_ALARM_BEGIN 0x29 /*⿪ʼ*/ +#define MINOR_SMART_REGION_ENTRANCE_BEGIN 0x2a //⿪ʼ +#define MINOR_SMART_REGION_ENTRANCE_END 0x2b // +#define MINOR_SMART_PEOPLE_GATHERING_BEGIN 0x2c //Աۼ⿪ʼ +#define MINOR_SMART_PEOPLE_GATHERING_END 0x2d //Աۼ +#define MINOR_SMART_FAST_MOVING_BEGIN 0x2e //˶⿪ʼ +#define MINOR_SMART_FAST_MOVING_END 0x2f //˶ + +#define MINOR_VCA_FACE_ALARM_END 0x30 /**/ +#define MINOR_VCA_SCENE_CHANGE_ALARM_BEGIN 0x31 /*⿪ʼ*/ +#define MINOR_VCA_SCENE_CHANGE_ALARM_END 0x32 /**/ +#define MINOR_VCA_ALARM_AUDIOINPUT_BEGIN 0x33 /*Ƶ쳣뿪ʼ*/ +#define MINOR_VCA_ALARM_AUDIOINPUT_END 0x34 /*Ƶ쳣*/ +#define MINOR_VCA_ALARM_AUDIOABNORMAL_BEGIN 0x35 /*ǿͻ⿪ʼ*/ +#define MINOR_VCA_ALARM_AUDIOABNORMAL_END 0x36 /*ǿͻ*/ + +#define MINOR_VCA_LECTURE_DETECTION_BEGIN 0x37 //ڿ⿪ʼ +#define MINOR_VCA_LECTURE_DETECTION_END 0x38 //ڿ +#define MINOR_VCA_ALARM_AUDIOSTEEPDROP 0x39 //ǿ 2014-03-21 +#define MINOR_VCA_ANSWER_DETECTION_BEGIN 0x3a //ش⿪ʼ +#define MINOR_VCA_ANSWER_DETECTION_END 0x3b //ش + +#define MINOR_SMART_PARKING_BEGIN 0x3c //ͣ⿪ʼ +#define MINOR_SMART_PARKING_END 0x3d //ͣ +#define MINOR_SMART_UNATTENDED_BAGGAGE_BEGIN 0x3e //Ʒ⿪ʼ +#define MINOR_SMART_UNATTENDED_BAGGAGE_END 0x3f //Ʒ +#define MINOR_SMART_OBJECT_REMOVAL_BEGIN 0x40 //Ʒȡ⿪ʼ +#define MINOR_SMART_OBJECT_REMOVAL_END 0x41 //Ʒȡ +#define MINOR_SMART_VEHICLE_ALARM_START 0x46 //Ƽ⿪ʼ +#define MINOR_SMART_VEHICLE_ALARM_STOP 0x47 //Ƽ +#define MINOR_THERMAL_FIREDETECTION 0x48 //ȳ⿪ʼ +#define MINOR_THERMAL_FIREDETECTION_END 0x49 //ȳ +#define MINOR_SMART_VANDALPROOF_BEGIN 0x50 //ƻ⿪ʼ +#define MINOR_SMART_VANDALPROOF_END 0x51 //ƻ + +#define MINOR_FACESNAP_MATCH_ALARM_START 0x55 /*ȶԱʼ*/ +#define MINOR_FACESNAP_MATCH_ALARM_STOP 0x56 /*ȶԱ*/ +#define MINOR_ALLOWLIST_FACESNAP_MATCH_ALARM_START 0x57 /*ȶԣİˣʼ*/ +#define MINOR_ALLOWLIST_FACESNAP_MATCH_ALARM_STOP 0x58 /*ȶԣİˣ*/ + +#define MINOR_THERMAL_SHIPSDETECTION 0x5a //ȳֻ +#define MINOR_THERMAL_THERMOMETRY_EARLYWARNING_BEGIN 0x5b //ȳԤʼ +#define MINOR_THERMAL_THERMOMETRY_EARLYWARNING_END 0x5c //ȳԤ +#define MINOR_THERMAL_THERMOMETRY_ALARM_BEGIN 0x5d //ȳ±ʼ +#define MINOR_THERMAL_THERMOMETRY_ALARM_END 0x5e //ȳ± +#define MINOR_THERMAL_THERMOMETRY_DIFF_ALARM_BEGIN 0x5f //ȳ²ʼ +#define MINOR_THERMAL_THERMOMETRY_DIFF_ALARM_END 0x60 //ȳ² +#define MINOR_FACE_THERMOMETRY_ALARM 0x63 //± +#define MINOR_SMART_DENSEFOGDETECTION_BEGIN 0x6e //⿪ʼ +#define MINOR_SMART_DENSEFOGDETECTION_END 0x6f // +#define MINOR_RUNNING_ALARM 0x70 //ܼ +#define MINOR_RETENTION_ALARM 0x71 // +#define MINOR_SAFETY_HELMET_ALARM_START 0x72 /*δȫñⱨʼ*/ +#define MINOR_SAFETY_HELMET_ALARM_STOP 0x73 /*δȫñⱨ*/ +#define MINOR_HFPD_ALARM_START 0x74 /*ƵԱⱨʼ*/ +#define MINOR_HFPD_ALARM_STOP 0x75 /*ƵԱⱨ*/ +#define MINOR_MIXED_TARGET_ALARM_START 0x76 /*Ŀⱨʼ*/ +#define MINOR_MIXED_TARGET_ALARM_STOP 0x77 /*Ŀⱨ*/ +#define MINOR_VCA_PLAY_CELLPHONE_ALARM_BEGIN 0x78 //ֻⱨʼ +#define MINOR_VCA_PLAY_CELLPHONE_ALARM_END 0x79 //ֻⱨ +#define MINOR_VCA_GET_UP_ALARM_BEGIN 0x80 //𴲼ⱨʼ +#define MINOR_VCA_GET_UP_ALARM_END 0x81 //𴲼ⱨ +#define MINOR_VCA_ADV_REACH_HEIGHT_ALARM_BEGIN 0x82 //ʸ߱ʼ +#define MINOR_VCA_ADV_REACH_HEIGHT_ALARM_END 0x83 //ʸ߱ +#define MINOR_VCA_TOILET_TARRY_ALARM_BEGIN 0x84 //޳ʱʼ +#define MINOR_VCA_TOILET_TARRY_ALARM_END 0x85 //޳ʱ +#define MINOR_HUMAN_RECOGNITION_ALARM_BEGIN 0x86 //ʶ𱨾ʼ +#define MINOR_HUMAN_RECOGNITION_ALARM_END 0x87 //ʶ𱨾 +#define MINOR_STUDENTS_STOODUP_ALARM_BEGIN 0x88 //ѧʼ +#define MINOR_STUDENTS_STOODUP_ALARM_END 0x89 //ѧ +#define MINOR_FRAMES_PEOPLE_COUNTING_ALARM 0x8a //ͳƱ +#define MINOR_FACE_SNAP_ALARM_BEGIN 0x8b //ץıʼ +#define MINOR_FACE_SNAP_ALARM_END 0x8c //ץı +#define MINOR_TEACHER_BEHAVIOR_DETECT_ALARM_BEGIN 0x8d //ʦΪⱨʼ +#define MINOR_TEACHER_BEHAVIOR_DETECT_ALARM_END 0x8e //ʦΪⱨ +#define MINOR_PERIMETER_CAPTURE_ALARM_BEGIN 0x8f //ܽץıʼ +#define MINOR_PERIMETER_CAPTURE_ALARM_END 0x90 //ܽץı +#define MINOR_UNREGISTERED_STREET_VENDOR_ALARM 0x91 //Ƿ̯ + +#define MINOR_PERSON_QUEUE_TIME_ALARM_BEGIN 0x92 //Ŷʱⱨʼ +#define MINOR_PERSON_QUEUE_TIME_ALARM_END 0x93 //Ŷʱⱨ +#define MINOR_PERSON_QUEUE_COUNTING_ALARM_BEGIN 0x94 //Ŷⱨʼ +#define MINOR_PERSON_QUEUE_COUNTING_ALARM_END 0x95 //Ŷⱨ +#define MINOR_FACE_SNAP_MATCH_FAILURE_ALARM_START 0x96 //ȶʧܱʼ +#define MINOR_FACE_SNAP_MATCH_FAILURE_ALARM_END 0x97 //ȶʧܱ + + +#define MINOR_ACCESS_CONTROLLER_EVENT 0x100 //޼ +#define MINOR_VIDEO_INTERCOM_EVENT 0x101 //ӶԽ豸¼ +#define MINOR_GJD_EVENT 0x102 //GJD¼ +#define MINOR_LUMINITE_EVENT 0x103 // LUMINITE¼ +#define MINOR_OPTEX_EVENT 0x104 // OPTEX¼ +#define MINOR_CAMERA_DETECTOR_EVENT 0x105 // ¼ +#define MINOR_SECURITY_CONTROL_PANEL_EVENT 0x106 //˽б¼ + +#define MINOR_VCA_SPACE_CHANGE_START 0x10c //쳣⿪ʼ +#define MINOR_VCA_SPACE_CHANGE_STOP 0x10d //쳣 +#define MINOR_MANUAL_ALARM 0x10e //ֶ +#define MINOR_DETECTOR_ALARM 0x10f //̽ +#define MINOR_LINKAGE_ALARM 0x110 // +#define MINOR_VCA_SITUATION_ANALYSIS_START 0x111 //̬Ʒ⿪ʼ +#define MINOR_VCA_SITUATION_ANALYSIS_STOP 0x112 //̬Ʒ +#define MINOR_FIRE_ALARM 0x113 //𾯱 +#define MINOR_SUPERVISE_ALARM 0x114 //ܱ +#define MINOR_SHIELD_ALARM 0x115 //α +#define MINOR_ABNORMAL_ALARM 0x116 //ϱ +#define MINOR_RESIDUAL_CURRENT_ALARM 0x117 //ʣ +#define MINOR_TEMPERATURE_ALARM 0x118 //¶ȱ +#define MINOR_ARC_ALARM 0x119 //绡 + +#define MINOR_VCA_YARD_TARRY_ALARM_BEGIN 0x11a //ŷ糡ʼ +#define MINOR_VCA_YARD_TARRY_ALARM_END 0x11b //ŷ糡 +#define MINOR_VCA_KEY_PERSON_GET_UP_ALARM_BEGIN 0x11c //صԱʼ +#define MINOR_VCA_KEY_PERSON_GET_UP_ALARM_END 0x11d //صԱ +#define MINOR_VCA_SIT_QUIETLY_ALARM_BEGIN 0x11e //һʼ +#define MINOR_VCA_SIT_QUIETLY_ALARM_END 0x11f //һ +#define MINOR_VCA_STAND_UP_ALARM_BEGIN 0x120 //վʼ +#define MINOR_VCA_STAND_UP_ALARM_END 0x121 //վ +#define MINOR_VCA_REACH_HIGHT_ALARM_BEGIN 0x122 //ʸ߱ʼ +#define MINOR_VCA_REACH_HIGHT_ALARM_END 0x123 //ʸ߱ + +#define MINOR_LFPD_ALARM_START 0x124 /*ƵԱⱨʼ*/ +#define MINOR_LFPD_ALARM_STOP 0x125 /*ƵԱⱨ*/ + +#define MINOR_DREDGERDETECTION_ALARM 0x126// ɳⱨ +#define MINOR_STUDENT_BEHAVIOR_ALARM_BEGIN 0x127 //ѧΪʼ +#define MINOR_STUDENT_BEHAVIOR_ALARM_END 0x128 //ѧΪ +#define MINOR_VCA_ALARM_VEHICLEMONITOR 0x129 //(ڳһ⣨Ϣ־) +#define MINOR_WASTEGASDETECTION_ALARM 0x130// ŷʾ¼ϱ +#define MINOR_GREYSCALE_ALARM 0x131// Ҷȱ +#define MINOR_VIBRATION_DETECTION_ALARM_BEGIN 0x132 //ⱨʼ +#define MINOR_VIBRATION_DETECTION_ALARM_END 0x133 //ⱨ +#define MINOR_SMOKE_DETECT_ALARM_BEGIN 0x134 //̼ⱨʼ +#define MINOR_SMOKE_DETECT_ALARM_END 0x135 //̼ⱨ +#define MINOR_METHANE_CONCENTRATION_ALARM 0x136 //Ũ쳣¼ +#define MINOR_METHANE_LIGHTINTENSITY_ALARM 0x137 //ǿ쳣¼ +#define MINOR_SMOG_BEGIN 0x138 //ʼ +#define MINOR_SMOG_END 0x139 // +#define MINOR_VOCS_ALARM 0x140 //VOCs屨 + +//0x400-0x1000 Ž +#define MINOR_ALARMIN_SHORT_CIRCUIT 0x400 //· +#define MINOR_ALARMIN_BROKEN_CIRCUIT 0x401 //· +#define MINOR_ALARMIN_EXCEPTION 0x402 //쳣 +#define MINOR_ALARMIN_RESUME 0x403 //ָ +#define MINOR_HOST_DESMANTLE_ALARM 0x404 //豸𱨾 +#define MINOR_HOST_DESMANTLE_RESUME 0x405 //豸ָ +#define MINOR_CARD_READER_DESMANTLE_ALARM 0x406 //𱨾 +#define MINOR_CARD_READER_DESMANTLE_RESUME 0x407 //ָ +#define MINOR_CASE_SENSOR_ALARM 0x408 //¼뱨 +#define MINOR_CASE_SENSOR_RESUME 0x409 //¼ָ +#define MINOR_STRESS_ALARM 0x40a //вȱ +#define MINOR_OFFLINE_ECENT_NEARLY_FULL 0x40b //¼90% +#define MINOR_CARD_MAX_AUTHENTICATE_FAIL 0x40c //֤ʧܳα +#define MINOR_SD_CARD_FULL 0x40d //SD洢 +#define MINOR_LINKAGE_CAPTURE_PIC 0x40e //ץ¼ +#define MINOR_SECURITY_MODULE_DESMANTLE_ALARM 0x40f //ſذȫģ𱨾 +#define MINOR_SECURITY_MODULE_DESMANTLE_RESUME 0x410 //ſذȫģָ + +#define MINOR_POS_START_ALARM 0x411 //POS +#define MINOR_POS_END_ALARM 0x412 //POS +#define MINOR_FACE_IMAGE_QUALITY_LOW 0x413 //ͼʵ +#define MINOR_FINGE_RPRINT_QUALITY_LOW 0x414 //ָͼʵ +#define MINOR_FIRE_IMPORT_SHORT_CIRCUIT 0x415 //· +#define MINOR_FIRE_IMPORT_BROKEN_CIRCUIT 0x416 //· +#define MINOR_FIRE_IMPORT_RESUME 0x417 //ָ +#define MINOR_FIRE_BUTTON_TRIGGER 0x418 //ť +#define MINOR_FIRE_BUTTON_RESUME 0x419 //ťָ +#define MINOR_MAINTENANCE_BUTTON_TRIGGER 0x41a //άť +#define MINOR_MAINTENANCE_BUTTON_RESUME 0x41b //άťָ +#define MINOR_EMERGENCY_BUTTON_TRIGGER 0x41c //ť +#define MINOR_EMERGENCY_BUTTON_RESUME 0x41d //ťָ +#define MINOR_DISTRACT_CONTROLLER_ALARM 0x41e //ֿ𱨾 +#define MINOR_DISTRACT_CONTROLLER_RESUME 0x41f //ֿ𱨾ָ + +#define MINOR_PERSON_DENSITY_DETECTION_START 0x420 //Աܶȳֵʼ +#define MINOR_PERSON_DENSITY_DETECTION_END 0x421 //Աܶȳֵ + +#define MINOR_CHANNEL_CONTROLLER_DESMANTLE_ALARM 0x422 //ͨ𱨾 +#define MINOR_CHANNEL_CONTROLLER_DESMANTLE_RESUME 0x423 //ͨ𱨾ָ +#define MINOR_CHANNEL_CONTROLLER_FIRE_IMPORT_ALARM 0x424 //ͨ뱨 +#define MINOR_CHANNEL_CONTROLLER_FIRE_IMPORT_RESUME 0x425 //ͨ뱨ָ + +#define MINOR_HEART_RATE_ABNORMAL_BEGIN 0x426 //쳣ʼ +#define MINOR_HEART_RATE_ABNORMAL_END 0x427 //쳣 +#define MINOR_BLOOD_OXYGEN_ABNORMAL_BEGIN 0x428 //Ѫ쳣ʼ +#define MINOR_BLOOD_OXYGEN_ABNORMAL_END 0x429 //Ѫ쳣 +#define MINOR_SYSTOLIC_BLOOD_PRESSURE_ABNORMAL_BEGIN 0x42a //Ѫѹѹ쳣ʼ +#define MINOR_SYSTOLIC_BLOOD_PRESSURE_ABNORMAL_END 0x42b //Ѫѹѹ쳣 +#define MINOR_DIASTOLIC_BLOOD_PRESSURE_ABNORMAL_BEGIN 0x42c //Ѫѹѹ쳣ʼ +#define MINOR_DIASTOLIC_BLOOD_PRESSURE_ABNORMAL_END 0x42d //Ѫѹѹ쳣 +#define MINOR_VCA_LEAVE_POSITION_START 0x42e//ڼ⿪ʼ +#define MINOR_VCA_LEAVE_POSITION_STOP 0x42f//ڼ +#define MINOR_VCA_STOOODUP_START 0x430//⿪ʼ +#define MINOR_VCA_STOOODUP_STOP 0x431// +#define MINOR_VCA_PEOPLENUM_CHANGE_START 0x434//仯ʼ +#define MINOR_VCA_PEOPLENUM_CHANGE_STOP 0x435//仯 +#define MINOR_VCA_RUNNING_START 0x438//Աܿʼ +#define MINOR_VCA_RUNNING_STOP 0x439//Աܽ +#define MINOR_VCA_VIOLENT_MOTION_START 0x43a//˶ʼ +#define MINOR_VCA_VIOLENT_MOTION_STOP 0x43b//˶ +#define MINOR_VCA_FAIL_DOWN_START 0x43c//Աؿʼ +#define MINOR_VCA_FAIL_DOWN_STOP 0x43d//Աؽ +#define MINOR_VCA_RETENTION_START 0x43e//Աʼ +#define MINOR_VCA_RETENTION_STOP 0x43f//Ա + +#define MINOR_PRINTER_OUT_OF_PAPER 0x440 //ӡȱֽ +#define MINOR_LEGAL_EVENT_NEARLY_FULL 0x442 //ߺϷ¼90% +#define MINOR_FIRE_IMPORT_ALARM 0x443 //뱨 +#define MINOR_TRANSACTION_RECORD_NEARLY_FULL 0x444 //׼¼90% + +#define MINOR_ALARM_CUSTOM1 0x900 //ŽԶ屨1 +#define MINOR_ALARM_CUSTOM2 0x901 //ŽԶ屨2 +#define MINOR_ALARM_CUSTOM3 0x902 //ŽԶ屨3 +#define MINOR_ALARM_CUSTOM4 0x903 //ŽԶ屨4 +#define MINOR_ALARM_CUSTOM5 0x904 //ŽԶ屨5 +#define MINOR_ALARM_CUSTOM6 0x905 //ŽԶ屨6 +#define MINOR_ALARM_CUSTOM7 0x906 //ŽԶ屨7 +#define MINOR_ALARM_CUSTOM8 0x907 //ŽԶ屨8 +#define MINOR_ALARM_CUSTOM9 0x908 //ŽԶ屨9 +#define MINOR_ALARM_CUSTOM10 0x909 //ŽԶ屨10 +#define MINOR_ALARM_CUSTOM11 0x90a //ŽԶ屨11 +#define MINOR_ALARM_CUSTOM12 0x90b //ŽԶ屨12 +#define MINOR_ALARM_CUSTOM13 0x90c //ŽԶ屨13 +#define MINOR_ALARM_CUSTOM14 0x90d //ŽԶ屨14 +#define MINOR_ALARM_CUSTOM15 0x90e //ŽԶ屨15 +#define MINOR_ALARM_CUSTOM16 0x90f //ŽԶ屨16 +#define MINOR_ALARM_CUSTOM17 0x910 //ŽԶ屨17 +#define MINOR_ALARM_CUSTOM18 0x911 //ŽԶ屨18 +#define MINOR_ALARM_CUSTOM19 0x912 //ŽԶ屨19 +#define MINOR_ALARM_CUSTOM20 0x913 //ŽԶ屨20 +#define MINOR_ALARM_CUSTOM21 0x914 //ŽԶ屨21 +#define MINOR_ALARM_CUSTOM22 0x915 //ŽԶ屨22 +#define MINOR_ALARM_CUSTOM23 0x916 //ŽԶ屨23 +#define MINOR_ALARM_CUSTOM24 0x917 //ŽԶ屨24 +#define MINOR_ALARM_CUSTOM25 0x918 //ŽԶ屨25 +#define MINOR_ALARM_CUSTOM26 0x919 //ŽԶ屨26 +#define MINOR_ALARM_CUSTOM27 0x91a //ŽԶ屨27 +#define MINOR_ALARM_CUSTOM28 0x91b //ŽԶ屨28 +#define MINOR_ALARM_CUSTOM29 0x91c //ŽԶ屨29 +#define MINOR_ALARM_CUSTOM30 0x91d //ŽԶ屨30 +#define MINOR_ALARM_CUSTOM31 0x91e //ŽԶ屨31 +#define MINOR_ALARM_CUSTOM32 0x91f //ŽԶ屨32 +#define MINOR_ALARM_CUSTOM33 0x920 //ŽԶ屨33 +#define MINOR_ALARM_CUSTOM34 0x921 //ŽԶ屨34 +#define MINOR_ALARM_CUSTOM35 0x922 //ŽԶ屨35 +#define MINOR_ALARM_CUSTOM36 0x923 //ŽԶ屨36 +#define MINOR_ALARM_CUSTOM37 0x924 //ŽԶ屨37 +#define MINOR_ALARM_CUSTOM38 0x925 //ŽԶ屨38 +#define MINOR_ALARM_CUSTOM39 0x926 //ŽԶ屨39 +#define MINOR_ALARM_CUSTOM40 0x927 //ŽԶ屨40 +#define MINOR_ALARM_CUSTOM41 0x928 //ŽԶ屨41 +#define MINOR_ALARM_CUSTOM42 0x929 //ŽԶ屨42 +#define MINOR_ALARM_CUSTOM43 0x92a //ŽԶ屨43 +#define MINOR_ALARM_CUSTOM44 0x92b //ŽԶ屨44 +#define MINOR_ALARM_CUSTOM45 0x92c //ŽԶ屨45 +#define MINOR_ALARM_CUSTOM46 0x92d //ŽԶ屨46 +#define MINOR_ALARM_CUSTOM47 0x92e //ŽԶ屨47 +#define MINOR_ALARM_CUSTOM48 0x92f //ŽԶ屨48 +#define MINOR_ALARM_CUSTOM49 0x930 //ŽԶ屨49 +#define MINOR_ALARM_CUSTOM50 0x931 //ŽԶ屨50 +#define MINOR_ALARM_CUSTOM51 0x932 //ŽԶ屨51 +#define MINOR_ALARM_CUSTOM52 0x933 //ŽԶ屨52 +#define MINOR_ALARM_CUSTOM53 0x934 //ŽԶ屨53 +#define MINOR_ALARM_CUSTOM54 0x935 //ŽԶ屨54 +#define MINOR_ALARM_CUSTOM55 0x936 //ŽԶ屨55 +#define MINOR_ALARM_CUSTOM56 0x937 //ŽԶ屨56 +#define MINOR_ALARM_CUSTOM57 0x938 //ŽԶ屨57 +#define MINOR_ALARM_CUSTOM58 0x939 //ŽԶ屨58 +#define MINOR_ALARM_CUSTOM59 0x93a //ŽԶ屨59 +#define MINOR_ALARM_CUSTOM60 0x93b //ŽԶ屨60 +#define MINOR_ALARM_CUSTOM61 0x93c //ŽԶ屨61 +#define MINOR_ALARM_CUSTOM62 0x93d //ŽԶ屨62 +#define MINOR_ALARM_CUSTOM63 0x93e //ŽԶ屨63 +#define MINOR_ALARM_CUSTOM64 0x93f //ŽԶ屨64 +#define MINOR_LOCK_HIJIACK_FINGER_ALARM 0x950 //ٳָƱ +#define MINOR_LOCK_HIJIACK_PASSWORD_ALARM 0x951 //ٳ뱨 +#define MINOR_LOCK_PRY_DOOR_ALARM 0x952 //ű +#define MINOR_LOCK_LOCKED_ALARM 0x953 // +#define MINOR_LOCK_BATTERLOW_ALARM 0x954 //͵ѹ +#define MINOR_LOCK_BLOCKLIST_DOOR_ALARM 0x955 //ֹ +#define MINOR_LOCK_OFFLINE_ALARM 0x956 //߱ +#define MINOR_LOCK_UNCLOSED_ALARM 0x957 //ڱ +#define MINOR_LOCK_NO_HOME_ALARM 0x958 //ûδؼұ +#define MINOR_LOCK_MAGNETOMETER_ALARM 0x959 //Ŵ̽ +#define MINOR_LOCK_IR_DETECTOR_ALARM 0x95a //̽ +#define MINOR_LOCK_FP_LOCKED_ALARM 0x95b //ָ +#define MINOR_LOCK_PASSWORD_LOCKED_ALARM 0x95c // +#define MINOR_LOCK_HIJIACK_ALARM 0x95d //ٳֱ + +//2018-04-23 ͨر־ +#define MINOR_ALARMHOST_SHORT_CIRCUIT 0x1001 //· +#define MINOR_ALARMHOST_BROKEN_CIRCUIT 0x1002 //· +#define MINOR_ALARMHOST_ALARM_RESET 0x1003 //λ +#define MINOR_ALARMHOST_ALARM_NORMAL 0x1004 //ָ +#define MINOR_ALARMHOST_PASSWORD_ERROR 0x1005 //3 +#define MINOR_ALARMHOST_ID_CARD_ILLEGALLY 0x1006 //ǷӦID +#define MINOR_ALARMHOST_KEYPAD_REMOVE 0x1007 //̷ +#define MINOR_ALARMHOST_KEYPAD_REMOVE_RESTORE 0x1008 //̷λ + +#define MINOR_ALARMHOST_BELOW_ALARM_LIMIT1 0x1011 //ģڱ1 +#define MINOR_ALARMHOST_BELOW_ALARM_LIMIT2 0x1012 //ģڱ2 +#define MINOR_ALARMHOST_BELOW_ALARM_LIMIT3 0x1013 //ģڱ3 +#define MINOR_ALARMHOST_BELOW_ALARM_LIMIT4 0x1014 //ģڱ4 +#define MINOR_ALARMHOST_ABOVE_ALARM_LIMIT1 0x1015 //ģڱ1 +#define MINOR_ALARMHOST_ABOVE_ALARM_LIMIT2 0x1016 //ģڱ2 +#define MINOR_ALARMHOST_ABOVE_ALARM_LIMIT3 0x1017 //ģڱ3 +#define MINOR_ALARMHOST_ABOVE_ALARM_LIMIT4 0x1018 //ģڱ4 + +#define MINOR_ALARMHOST_VIRTUAL_DEFENCE_SUSPECT 0x1021 //˾ +#define MINOR_ALARMHOST_VIRTUAL_DEFENCE_FIRE 0x1022 // +#define MINOR_ALARMHOST_VIRTUAL_DEFENCE_URGENT 0x1023 // + +#define MINOR_UPS_ALARM 0x1028 //UPS +#define MINOR_ELECTRICITY_METER_ALARM 0x1029 //ܵ +#define MINOR_SWITCH_POWER_ALARM 0x1030 //صԴ +#define MINOR_GAS_DETECT_SYS_ALARM 0x1031 //ϵͳ +#define MINOR_TRANSFORMER_TEMPRATURE_ALARM 0x1032 //Ա +#define MINOR_TEMP_HUMI_ALARM 0x1033 //ʪȴ +#define MINOR_UPS_ALARM_RESTORE 0x1034 //UPSָ +#define MINOR_ELECTRICITY_METER_ALARM_RESTORE 0x1035 //ָܵ +#define MINOR_SWITCH_POWER_ALARM_RESTORE 0x1036 //صԴָ +#define MINOR_GAS_DETECT_SYS_ALARM_RESTORE 0x1037 //ϵͳָ +#define MINOR_TRANSFORMER_TEMPRATURE_ALARM_RESTORE 0x1038 //Աָ +#define MINOR_TEMP_HUMI_ALARM_RESTORE 0x1039 //ʪȴָ +#define MINOR_WATER_LEVEL_SENSOR_ALARM 0x1040 //ˮλ +#define MINOR_WATER_LEVEL_SENSOR_ALARM_RESTORE 0x1041 //ˮλָ +#define MINOR_DUST_NOISE_ALARM 0x1042 //ﳾ +#define MINOR_DUST_NOISE_ALARM_RESTORE 0x1043 //ﳾָ +#define MINOR_ENVIRONMENTAL_LOGGER_ALARM 0x1044 //ɼDZ +#define MINOR_ENVIRONMENTAL_LOGGER_ALARM_RESTORE 0x1045 //ɼDZָ + +#define MINOR_TRIGGER_TAMPER 0x1046 //̽ +#define MINOR_TRIGGER_TAMPER_RESTORE 0x1047 //ָ̽ +#define MINOR_EMERGENCY_CALL_HELP_ALARM 0x1048 // +#define MINOR_EMERGENCY_CALL_HELP_ALARM_RESTORE 0x1049 //ָ +#define MINOR_CONSULTING_ALARM 0x1050 //ҵѯ +#define MINOR_CONSULTING_ALARM_RESTORE 0x1051 //ҵѯָ +#define MINOR_ALARMHOST_ZONE_MODULE_REMOVE 0x1052 //ģ +#define MINOR_ALARMHOST_ZONE_MODULE_RESET 0x1053 //ģλ + +#define MINOR_ALARMHOST_ALARM_WIND_SPEED_ALARM 0x1054 //ٴ澯 +#define MINOR_ALARMHOST_ALARM_WIND_SPEED_ALARM_RESTORE 0x1055 //ٴ澯ָ +#define MINOR_ALARMHOST_ALARM_GENERATE_OUTPUT_ALARM 0x1056 //ͨչģ澯 +#define MINOR_ALARMHOST_ALARM_GENERATE_OUTPUT_RESTORE 0x1057 //ͨչģ澯ָ +#define MINOR_ALARMHOST_ALARM_SOAK_ALARM 0x1058 //ˮ澯 +#define MINOR_ALARMHOST_ALARM_SOAK_ALARM_RESTORE 0x1059 //ˮ澯ָ +#define MINOR_ALARMHOST_ALARM_SOLAR_POWER_ALARM 0x1060 //̫ܴ澯 +#define MINOR_ALARMHOST_ALARM_SOLAR_POWER_ALARM_RESTORE 0x1061 //̫ܴ澯ָ +#define MINOR_ALARMHOST_ALARM_SF6_ALARM 0x1062 //SF6澯 +#define MINOR_ALARMHOST_ALARM_SF6_ALARM_RESTORE 0x1063 //SF6澯ָ +#define MINOR_ALARMHOST_ALARM_WEIGHT_ALARM 0x1064 //Ǹ澯 +#define MINOR_ALARMHOST_ALARM_WEIGHT_ALARM_RESTORE 0x1065 //Ǹ澯ָ +#define MINOR_ALARMHOST_ALARM_WEATHER_ALARM 0x1066 //ɼϵͳ澯 +#define MINOR_ALARMHOST_ALARM_WEATHER_ALARM_RESTORE 0x1067 //ɼϵͳ澯ָ +#define MINOR_ALARMHOST_ALARM_FUEL_GAS_ALARM 0x1068 //ȼʾϵͳ澯 +#define MINOR_ALARMHOST_ALARM_FUEL_GAS_ALARM_RESTORE 0x1069 //ȼʾϵͳ澯 +#define MINOR_ALARMHOST_ALARM_FIRE_ALARM 0x1070 //ֱϵͳ澯 +#define MINOR_ALARMHOST_ALARM_FIRE_ALARM_RESTORE 0x1071 //ֱϵͳ澯ָ +#define MINOR_ALARMHOST_WIRELESS_OUTPUT_MODULE_REMOVE 0x1072 //ģ +#define MINOR_ALARMHOST_WIRELESS_OUTPUT_MODULE_RESET 0x1073 //ģλ +#define MINOR_ALARMHOST_WIRELESS_REPEATER_MODULE_REMOVE 0x1074 //м + +#define MINOR_ALARMHOST_WIRELESS_SIREN_MODULE_REMOVE 0x1075 //߾ŷ +#define MINOR_ALARMHOST_WIRELESS_SIREN_MODULE_RESET 0x1076 //߾ŷλ + +#define MINOR_RS485_DEV_ALARM 0x1077 //RS485豸豸δ֪豸 +#define MINOR_RS485_DEV_RESTORE 0x1078 //RS485豸ָ豸δ֪豸 +#define MINOR_ALARMHOST_ALARM_HOST_ALARM 0x1079 // +#define MINOR_ALARMHOST_ALARM_HOST_RESTORE 0x107a //ָ + +#define MINOR_AIR_CONDITION_DEV_ALARM 0x107b //յ +#define MINOR_AIR_CONDITION_DEV_RESTORE 0x107c //յָ + +#define MINOR_ALARMHOST_WIRELESS_REPEATER_MODULE_RESET 0x107d //мλ + +#define MINOR_ALARM_ELEVATOR_BREAKDOWN 0x107e//ݹ +#define MINOR_WATER_PRESSURE_SENSOR_ALARM 0x107f //ˮѹ +#define MINOR_FLOW_SENSOR_ALARM 0x1080 // +#define MINOR_SENSOR_LINKAGE_ALARM 0x1081 // +#define MINOR_SENSOR_LINKAGE_ALARM_RESTORE 0x1082 //ָ +#define MINOR_SHELF_ABNORMAL_ALARM 0x1083 //쳣 + +//LED 0x1201 ~ 0x1300 +#define MINOR_SYSTEM_CHECK_ALARM 0x1201 //ϵͳⱨ + +/* 쳣 */ +// +#define MAJOR_EXCEPTION 0x2 +// +#define MINOR_SUBSYSTEM_ERROR 0x0a /* ϵͳ쳣 */ +#define MINOR_RAID_ERROR 0x20 /* 쳣 */ +#define MINOR_VI_LOST 0x21 /* ƵźŶʧ */ +#define MINOR_ILLEGAL_ACCESS 0x22 /* Ƿ */ +#define MINOR_HD_FULL 0x23 /* Ӳ */ +#define MINOR_HD_ERROR 0x24 /* Ӳ̴ */ +#define MINOR_DCD_LOST 0x25 /* MODEM (ʹ) */ +#define MINOR_IP_CONFLICT 0x26 /* IPַͻ */ +#define MINOR_NET_BROKEN 0x27 /* Ͽ*/ +#define MINOR_REC_ERROR 0x28 /* ¼ */ +#define MINOR_IPC_NO_LINK 0x29 /* IPC쳣 */ +#define MINOR_VI_EXCEPTION 0x2a /* Ƶ쳣(ֻģͨ) */ +#define MINOR_IPC_IP_CONFLICT 0x2b /*ipc ip ַ ͻ*/ +#define MINOR_SENCE_EXCEPTION 0x2c // 쳣 + +#define MINOR_PIC_REC_ERROR 0x2d /* ץͼ--ȡͼƬļʧ*/ +#define MINOR_VI_MISMATCH 0x2e /* Ƶʽƥ*/ +#define MINOR_RESOLUTION_MISMATCH 0x2f /*ǰ/¼ֱʲƥ */ + +//2009-12-16 Ƶۺƽ̨־ +#define MINOR_FANABNORMAL 0x31 /* Ƶۺƽ̨״̬쳣 */ +#define MINOR_FANRESUME 0x32 /* Ƶۺƽ̨״ָ̬ */ +#define MINOR_SUBSYSTEM_ABNORMALREBOOT 0x33 /* Ƶۺƽ̨6467쳣 */ +#define MINOR_MATRIX_STARTBUZZER 0x34 /* Ƶۺƽ̨dm6467쳣 */ + +//2010-01-22 Ƶۺƽ̨쳣־ +#define MINOR_NET_ABNORMAL 0x35 /*״̬쳣*/ +#define MINOR_MEM_ABNORMAL 0x36 /*ڴ״̬쳣*/ +#define MINOR_FILE_ABNORMAL 0x37 /*ļ״̬쳣*/ +#define MINOR_PANEL_ABNORMAL 0x38 /*ǰ쳣*/ +#define MINOR_PANEL_RESUME 0x39 /*ǰָ*/ +#define MINOR_RS485_DEVICE_ABNORMAL 0x3a /*RS485״̬쳣*/ +#define MINOR_RS485_DEVICE_REVERT 0x3b /*RS485״̬쳣ָ*/ + +//2012-2-18 Ӵ쳣־ +#define MINOR_SCREEN_SUBSYSTEM_ABNORMALREBOOT 0x3c //Ӱ쳣 +#define MINOR_SCREEN_SUBSYSTEM_ABNORMALINSERT 0x3d //Ӱ +#define MINOR_SCREEN_SUBSYSTEM_ABNORMALPULLOUT 0x3e //Ӱγ +#define MINOR_SCREEN_ABNARMALTEMPERATURE 0x3f //¶쳣 +//2012-07-26 Ƶۺƽ̨v2.1 +#define MINOR_HIGH_TEMPERATURE_PROTECT 0x40 //Ӱȱ + +//Netra 2.2.2 +#define MINOR_RECORD_OVERFLOW 0x41 /**/ +#define MINOR_DSP_ABNORMAL 0x42 //DSP쳣 + +//Netra 3.0.0 +#define MINOR_ANR_RECORD_FAIED 0x43 /*ANR¼ʧ*/ +#define MINOR_SPARE_WORK_DEVICE_EXCEPT 0x44 /*ȱ豸쳣*/ +#define MINOR_START_IPC_MAS_FAILED 0x45 /*IPC MASʧ*/ +//256·NVR +#define MINOR_IPCM_CRASH 0x46 /*IPCM쳣*/ +#define MINOR_POE_POWER_EXCEPTION 0x47 /*POE 쳣*/ +#define MINOR_UPLOAD_DATA_CS_EXCEPTION 0x48 //ƴ洢ϴʧ/ +#define MINOR_DIAL_EXCEPTION 0x49 /*쳣*/ +#define MINOR_DEV_EXCEPTION_OFFLINE 0x50 //豸쳣 +#define MINOR_UPGRADEFAIL 0x51 //Զ豸ʧ +#define MINOR_AI_LOST 0x52 /* ƵźŶʧ */ +#define MINOR_SYNC_IPC_PASSWD 0x53 /* ͬIPC쳣 */ +#define MINOR_EZVIZ_OFFLINE 0x54 /* өʯ쳣*/ +#define MINOR_VQD_ABNORMAL 0x55 //VQD쳣 +#define MINOR_ACCESSORIES_PLATE 0x57 //쳣 +#define MINOR_KMS_EXPAMSION_DISK_LOST 0x58 // KMS̶ʧ +#define MINOR_ABNORMAL_PORT 0x59 // ˿쳣 +#define MINOR_CAMERA_ANGLE_ANOMALY 0x60// ӽ쳣 +#define MINOR_DATA_DISK_ERROE 0x61// ̴ +#define MINOR_INTELLIGENT_SYSTEM_RUNNING_ERROR 0x62// ϵͳ쳣 +#define MINOR_FACESNAP_RESOLUTION_OVERFLOW 0x63// ץֱʳ +#define MINOR_SMD_RESOLUTION_OVERFLOW 0x64// SMDֱʳ +#define MINOR_AUDIO_LOSS_EXCEPTION 0x65// Ƶʧ쳣 +#define MINOR_SAFETY_HELMET_EXCEPTION 0x66 //δȫñ쳣 +#define MINOR_VCA_PIC_LENGTH_OVERFLOW 0x67 // VCAͼƬȹ糬2MСͼƬ +#define MINOR_FACE_MODEL_EXCEPTION 0x68// ģͬ쳣 +#define MINOR_SSD_EXCEPTION 0x69 // SSD쳣 +//NVRȺ +#define MINOR_CLUSTER_DEVICE_OFFLINE 0x70 // Ⱥ豸 +#define MINOR_CLUSTER_CONFIG_FAILED 0x71 // Ⱥ豸ʧ +#define MINOR_CLUSTER_DISASTER_TOLERANCE_EXCEPT 0x72 // Ⱥ쳣:ȺCMѡʧ,Ⱥ洢ڲ,Ⱥ,ȺͨԴ,Ⱥ豸 +#define MINOR_CLUSTER_STORFULL_EXCEPTION 0x73 //ȺӲ +#define MINOR_CLUSTER_VERSION_EXCEPTION 0x74 //Ⱥ汾쳣 +#define MINOR_CLUSTER_OFFLINENODE_EXCEPTION 0x75 //Ⱥ +#define MINOR_CLUSTER_RECORDCYCLE_EXCEPTION 0x76 //Ⱥ¼ڲ +#define MINOR_CLUSTER_IPCTRANSFER_EXCEPTION 0x77 //ȺIPCǨʧ +#define MINOR_CLUSTER_IPCONFLICT_EXCEPTION 0x78 // ȺIPͻ¼CMIPַ + +#define MINOR_GET_SUB_STREAM_FAILURE 0x79//ȡʧ +#define MINOR_HDD_SHM_DETECT_EXCEPTION 0x7a//ӲSHM쳣 +#define MINOR_DEVICE_FORTIFY_FAILURE 0x7b//ǰ豸ʧ +#define MINOR_EVENT_UPLOAD_EXCEPTION 0x7c //¼쳣豸ϴ¼ʧܻ߶ˣ + +#define MINOR_LORA_EXCEPTION 0x7d//LoRa쳣 +#define MINOR_AK_OR_SK_IS_EMPTY 0x7e//ƴ洢Ϊ + +#define MINOR_HIGH_HD_TEMPERATURE 0x80 /*Ӳ¶ȹ*/ +#define MINOR_LOW_HD_TEMPERATURE 0x81 /*Ӳ¶ȹ*/ +#define MINOR_HD_IMPACT 0x82 /*Ӳܵ*/ +#define MINOR_HD_BAD_BLOCK 0x83 /*Ӳֻ̳*/ +#define MINOR_SEVERE_HD_FAILURE 0x84 /*Ӳع*/ +#define MINOR_RELEASE_FAILED 0x85 //Ϣʧ +#define MINOR_PORT_CONFLICT 0x86 //˿ڳͻ +#define MINOR_MODULE_STARTUP_FAILED 0x87 //ģʧ +#define MINIOR_VCA_RUNNING_EXCEPTION 0x88 //ܰ쳣 + +//0x400-0x1000 Ž쳣 +#define MINOR_DEV_POWER_ON 0x400 //豸ϵ +#define MINOR_DEV_POWER_OFF 0x401 //豸ر +#define MINOR_WATCH_DOG_RESET 0x402 //Źλ +#define MINOR_LOW_BATTERY 0x403 //صѹ +#define MINOR_BATTERY_RESUME 0x404 //صѹָ +#define MINOR_AC_OFF 0x405 //ϵ +#define MINOR_AC_RESUME 0x406 //ָ +#define MINOR_NET_RESUME 0x407 //ָ +#define MINOR_FLASH_ABNORMAL 0x408 //FLASHд쳣 +#define MINOR_CARD_READER_OFFLINE 0x409 // +#define MINOR_CARD_READER_RESUME 0x40a //߻ָ +#define MINOR_INDICATOR_LIGHT_OFF 0x40b //ָʾƹر +#define MINOR_INDICATOR_LIGHT_RESUME 0x40c //ָʾƻָ +#define MINOR_CHANNEL_CONTROLLER_OFF 0x40d //ͨ +#define MINOR_CHANNEL_CONTROLLER_RESUME 0x40e //ָͨ +#define MINOR_SECURITY_MODULE_OFF 0x40f //ſذȫģ +#define MINOR_SECURITY_MODULE_RESUME 0x410 //ſذȫģ +#define MINOR_BATTERY_ELECTRIC_LOW 0x411 //صѹ(豸ʹ) +#define MINOR_BATTERY_ELECTRIC_RESUME 0x412 //صѹָ(豸ʹ) +#define MINOR_LOCAL_CONTROL_NET_BROKEN 0x413 //͵ؿϿ +#define MINOR_LOCAL_CONTROL_NET_RSUME 0x414 //͵ؿָ +#define MINOR_MASTER_RS485_LOOPNODE_BROKEN 0x415 //RS485·ڵϿ +#define MINOR_MASTER_RS485_LOOPNODE_RESUME 0x416 //RS485·ڵָ +#define MINOR_LOCAL_CONTROL_OFFLINE 0x417 //͵ؿ +#define MINOR_LOCAL_CONTROL_RESUME 0x418 //͵ؿ߻ָ +#define MINOR_LOCAL_DOWNSIDE_RS485_LOOPNODE_BROKEN 0x419 //͵RS485·Ͽ +#define MINOR_LOCAL_DOWNSIDE_RS485_LOOPNODE_RESUME 0x41a //͵RS485·ָ +#define MINOR_DISTRACT_CONTROLLER_ONLINE 0x41b //ֿ +#define MINOR_DISTRACT_CONTROLLER_OFFLINE 0x41c //ֿ +#define MINOR_ID_CARD_READER_NOT_CONNECT 0x41d //֤Ķδӣרã +#define MINOR_ID_CARD_READER_RESUME 0x41e //֤Ķӻָרã +#define MINOR_FINGER_PRINT_MODULE_NOT_CONNECT 0x41f //ָģδӣרã +#define MINOR_FINGER_PRINT_MODULE_RESUME 0x420 //ָģӻָרã +#define MINOR_CAMERA_NOT_CONNECT 0x421 //ͷδ +#define MINOR_CAMERA_RESUME 0x422 //ͷӻָ +#define MINOR_COM_NOT_CONNECT 0x423 //COMδ +#define MINOR_COM_RESUME 0x424 //COMӻָ +#define MINOR_DEVICE_NOT_AUTHORIZE 0x425 //豸δȨ +#define MINOR_PEOPLE_AND_ID_CARD_DEVICE_ONLINE 0x426 //֤豸 +#define MINOR_PEOPLE_AND_ID_CARD_DEVICE_OFFLINE 0x427 //֤豸 +#define MINOR_LOCAL_LOGIN_LOCK 0x428 //ص¼ +#define MINOR_LOCAL_LOGIN_UNLOCK 0x429 //ص¼ +#define MINOR_SUBMARINEBACK_COMM_BREAK 0x42a //뷴DZطͨŶϿ +#define MINOR_SUBMARINEBACK_COMM_RESUME 0x42b //뷴DZطͨŻָ +#define MINOR_MOTOR_SENSOR_EXCEPTION 0x42c //򴫸쳣 +#define MINOR_CAN_BUS_EXCEPTION 0x42d //CAN쳣 +#define MINOR_CAN_BUS_RESUME 0x42e //CAN߻ָ +#define MINOR_GATE_TEMPERATURE_OVERRUN 0x42f //բǻ¶ȳ +#define MINOR_IR_EMITTER_EXCEPTION 0x430 //쳣 +#define MINOR_IR_EMITTER_RESUME 0x431 //ָ +#define MINOR_LAMP_BOARD_COMM_EXCEPTION 0x432 //ưͨ쳣 +#define MINOR_LAMP_BOARD_COMM_RESUME 0x433 //ưͨŻָ +#define MINOR_IR_ADAPTOR_COMM_EXCEPTION 0x434 //תӰͨ쳣 +#define MINOR_IR_ADAPTOR_COMM_RESUME 0x435 //תӰͨŻָ +#define MINOR_PRINTER_ONLINE 0x436 //ӡ +#define MINOR_PRINTER_OFFLINE 0x437 //ӡ +#define MINOR_4G_MOUDLE_ONLINE 0x438 //4Gģ +#define MINOR_4G_MOUDLE_OFFLINE 0x439 //4Gģ +#define MINOR_DSP_START_FAILED 0x43a //DSPʧ +#define MINOR_SMART_REGULATION_NOT_ALLOWED 0x43b //ܹ֧ +#define MINOR_AUXILIARY_BOARD_OFFLINE 0x43c // +#define MINOR_AUXILIARY_BOARD_RESUME 0x43d //߻ָ +#define MINOR_IDCARD_SECURITY_MOUDLE_EXCEPTION 0x43e //֤ȫģ쳣 +#define MINOR_IDCARD_SECURITY_MOUDLE_RESUME 0x43f //֤ȫģָ +#define MINOR_FP_PERIPHERAL_EXCEPTION 0x440 //ָƲɼ쳣 +#define MINOR_FP_PERIPHERAL_RESUME 0x441 //ָƲɼָ +#define MINOR_REPLAY_ATTACK 0x442 //ظ +#define MINOR_TLS_ABNORMAL 0x443 //TLSͨ쳣 +#define MINOR_SMART_PLATE_OFFLINE 0x444 // +#define MINOR_SMART_PLATE_ONLINE 0x445 // +#define MINOR_REFUND_LOCKED 0x446 // +#define MINOR_CODER_ONLINE 0x447 // +#define MINOR_CODER_OFFLINE 0x448 // +#define MINOR_KEYBOARD_OFFLINE 0x449 //С +#define MINOR_KEYBOARD_ONLINE 0x44a //С +#define MINOR_5G_MOUDLE_ONLINE 0x44b //5Gģ +#define MINOR_5G_MOUDLE_OFFLINE 0x44c //5Gģ +#define MINOR_EXTEND_MODULE_ONLINE 0x44d //չģߣչģ飺Ҫusbʽָ֤ƴάģ飬֧ȲΣ +#define MINOR_EXTEND_MODULE_OFFLINE 0x44e //չģߣչģ飺Ҫusbʽָ֤ƴάģ飬֧ȲΣ +#define MINOR_INTERLOCK_SERVER_DISCONNECTED 0x44f //ŻͨŶϿ +#define MINOR_INTERLOCK_SERVER_CONNECTED 0x450 //ŻͨŻָ +#define MINOR_QRCODE_READER_OFFLINE 0x451 //άĶ +#define MINOR_QRCODE_READER_ONLINE 0x452 //άĶ +#define MINOR_HEALTH_INFO_ABNORMAL_LOCK 0x453 //Ϣ쳣 +#define MINOR_HEALTH_INFO_ABNORMAL_UNLOCK 0x454 //Ϣ쳣 + +#define MINOR_EXCEPTION_CUSTOM1 0x900 //ŽԶ쳣1 +#define MINOR_EXCEPTION_CUSTOM2 0x901 //ŽԶ쳣2 +#define MINOR_EXCEPTION_CUSTOM3 0x902 //ŽԶ쳣3 +#define MINOR_EXCEPTION_CUSTOM4 0x903 //ŽԶ쳣4 +#define MINOR_EXCEPTION_CUSTOM5 0x904 //ŽԶ쳣5 +#define MINOR_EXCEPTION_CUSTOM6 0x905 //ŽԶ쳣6 +#define MINOR_EXCEPTION_CUSTOM7 0x906 //ŽԶ쳣7 +#define MINOR_EXCEPTION_CUSTOM8 0x907 //ŽԶ쳣8 +#define MINOR_EXCEPTION_CUSTOM9 0x908 //ŽԶ쳣9 +#define MINOR_EXCEPTION_CUSTOM10 0x909 //ŽԶ쳣10 +#define MINOR_EXCEPTION_CUSTOM11 0x90a //ŽԶ쳣11 +#define MINOR_EXCEPTION_CUSTOM12 0x90b //ŽԶ쳣12 +#define MINOR_EXCEPTION_CUSTOM13 0x90c //ŽԶ쳣13 +#define MINOR_EXCEPTION_CUSTOM14 0x90d //ŽԶ쳣14 +#define MINOR_EXCEPTION_CUSTOM15 0x90e //ŽԶ쳣15 +#define MINOR_EXCEPTION_CUSTOM16 0x90f //ŽԶ쳣16 +#define MINOR_EXCEPTION_CUSTOM17 0x910 //ŽԶ쳣17 +#define MINOR_EXCEPTION_CUSTOM18 0x911 //ŽԶ쳣18 +#define MINOR_EXCEPTION_CUSTOM19 0x912 //ŽԶ쳣19 +#define MINOR_EXCEPTION_CUSTOM20 0x913 //ŽԶ쳣20 +#define MINOR_EXCEPTION_CUSTOM21 0x914 //ŽԶ쳣21 +#define MINOR_EXCEPTION_CUSTOM22 0x915 //ŽԶ쳣22 +#define MINOR_EXCEPTION_CUSTOM23 0x916 //ŽԶ쳣23 +#define MINOR_EXCEPTION_CUSTOM24 0x917 //ŽԶ쳣24 +#define MINOR_EXCEPTION_CUSTOM25 0x918 //ŽԶ쳣25 +#define MINOR_EXCEPTION_CUSTOM26 0x919 //ŽԶ쳣26 +#define MINOR_EXCEPTION_CUSTOM27 0x91a //ŽԶ쳣27 +#define MINOR_EXCEPTION_CUSTOM28 0x91b //ŽԶ쳣28 +#define MINOR_EXCEPTION_CUSTOM29 0x91c //ŽԶ쳣29 +#define MINOR_EXCEPTION_CUSTOM30 0x91d //ŽԶ쳣30 +#define MINOR_EXCEPTION_CUSTOM31 0x91e //ŽԶ쳣31 +#define MINOR_EXCEPTION_CUSTOM32 0x91f //ŽԶ쳣32 +#define MINOR_EXCEPTION_CUSTOM33 0x920 //ŽԶ쳣33 +#define MINOR_EXCEPTION_CUSTOM34 0x921 //ŽԶ쳣34 +#define MINOR_EXCEPTION_CUSTOM35 0x922 //ŽԶ쳣35 +#define MINOR_EXCEPTION_CUSTOM36 0x923 //ŽԶ쳣36 +#define MINOR_EXCEPTION_CUSTOM37 0x924 //ŽԶ쳣37 +#define MINOR_EXCEPTION_CUSTOM38 0x925 //ŽԶ쳣38 +#define MINOR_EXCEPTION_CUSTOM39 0x926 //ŽԶ쳣39 +#define MINOR_EXCEPTION_CUSTOM40 0x927 //ŽԶ쳣40 +#define MINOR_EXCEPTION_CUSTOM41 0x928 //ŽԶ쳣41 +#define MINOR_EXCEPTION_CUSTOM42 0x929 //ŽԶ쳣42 +#define MINOR_EXCEPTION_CUSTOM43 0x92a //ŽԶ쳣43 +#define MINOR_EXCEPTION_CUSTOM44 0x92b //ŽԶ쳣44 +#define MINOR_EXCEPTION_CUSTOM45 0x92c //ŽԶ쳣45 +#define MINOR_EXCEPTION_CUSTOM46 0x92d //ŽԶ쳣46 +#define MINOR_EXCEPTION_CUSTOM47 0x92e //ŽԶ쳣47 +#define MINOR_EXCEPTION_CUSTOM48 0x92f //ŽԶ쳣48 +#define MINOR_EXCEPTION_CUSTOM49 0x930 //ŽԶ쳣49 +#define MINOR_EXCEPTION_CUSTOM50 0x931 //ŽԶ쳣50 +#define MINOR_EXCEPTION_CUSTOM51 0x932 //ŽԶ쳣51 +#define MINOR_EXCEPTION_CUSTOM52 0x933 //ŽԶ쳣52 +#define MINOR_EXCEPTION_CUSTOM53 0x934 //ŽԶ쳣53 +#define MINOR_EXCEPTION_CUSTOM54 0x935 //ŽԶ쳣54 +#define MINOR_EXCEPTION_CUSTOM55 0x936 //ŽԶ쳣55 +#define MINOR_EXCEPTION_CUSTOM56 0x937 //ŽԶ쳣56 +#define MINOR_EXCEPTION_CUSTOM57 0x938 //ŽԶ쳣57 +#define MINOR_EXCEPTION_CUSTOM58 0x939 //ŽԶ쳣58 +#define MINOR_EXCEPTION_CUSTOM59 0x93a //ŽԶ쳣59 +#define MINOR_EXCEPTION_CUSTOM60 0x93b //ŽԶ쳣60 +#define MINOR_EXCEPTION_CUSTOM61 0x93c //ŽԶ쳣61 +#define MINOR_EXCEPTION_CUSTOM62 0x93d //ŽԶ쳣62 +#define MINOR_EXCEPTION_CUSTOM63 0x93e //ŽԶ쳣63 +#define MINOR_EXCEPTION_CUSTOM64 0x93f //ŽԶ쳣64 +#define MINOR_SWITCH_WIRED_NETWORK 0x950 //л +#define MINOR_SWITCH_WIRELESS_NETWORK 0x951 //л +#define MINOR_LOCK_ONLINE_RESUME 0x952 //ָ +#define MINOR_USB_ONLINE 0x953 //USBͷ +#define MINOR_USB_OFFLINE 0x954 //USBͷ + + + +//2018-04-23 ͨ쳣־ +#define MINOR_ALARMHOST_WDT_RESET 0x1003 //WDT λ +#define MINOR_ALARMHOST_RTC_EXCEPTION 0x1007 //RTCʵʱʱ쳣 + +#define MINOR_ALARMHOST_TEL_LINE_CONNECT_FAILURE 0x100a //绰Ӷ +#define MINOR_ALARMHOST_TEL_LINE_CONNECT_RESTORE 0x100b //绰ӻָ +#define MINOR_ALARMHOST_EXPANDER_BUS_LOSS 0x100c //չģ +#define MINOR_ALARMHOST_EXPANDER_BUS_RESTORE 0x100d //չģ߻ָ +#define MINOR_ALARMHOST_KEYPAD_BUS_LOSS 0x100e //ģ +#define MINOR_ALARMHOST_KEYPAD_BUS_RESTORE 0x100f //ģ߻ָ +#define MINOR_ALARMHOST_SENSOR_FAILURE 0x1010 //ģ +#define MINOR_ALARMHOST_SENSOR_RESTORE 0x1011 //ģָ +#define MINOR_ALARMHOST_RS485_CONNECT_FAILURE 0x1012 //RS485ͨӶ +#define MINOR_ALARMHOST_RS485_CONNECT_RESTORE 0x1013 //RS485ͨӶϻָ + +//쳣͡쳣ָ־Ӷϡӻָ־ʱһģû豸֧֡쳣͡쳣ָ͡ +#define MINOR_ALARMHOST_WIRED_NETWORK_ABNORMAL 0x1015 //쳣 +#define MINOR_ALARMHOST_WIRED_NETWORK_RESTORE 0x1016 //ָ +#define MINOR_ALARMHOST_GPRS_ABNORMAL 0x1017 //GPRSͨ쳣 +#define MINOR_ALARMHOST_GPRS_RESTORE 0x1018 //GPRSָ +#define MINOR_ALARMHOST_3G_ABNORMAL 0x1019 //3Gͨ쳣 +#define MINOR_ALARMHOST_3G_RESTORE 0x101a //3Gָ +#define MINOR_ALARMHOST_SIM_CARD_ABNORMAL 0x101b //SIM쳣 +#define MINOR_ALARMHOST_SIM_CARD_RESTORE 0x101c //SIMָ + +#define MINOR_FORMAT_HDD_ERROR 0x1026 //Զ̸ʽӲʧ +#define MINOR_USB_ERROR 0x1027 //USBͨŹ +#define MINOR_USB_RESTORE 0x1028 //USBͨŹϻָ +#define MINOR_PRINT_ERROR 0x1029 //ӡ +#define MINOR_PRINT_RESTORE 0x1030 //ӡϻָ +#define MINOR_ALARMHOST_SUBSYSTEM_COMMUNICATION_ERROR 0x1031 //ӰͨѶ + +#define MINOR_MCU_RESTART 0x1035 //MCU +#define MINOR_GPRS_MODULE_FAULT 0x1036 //GPRSģ +#define MINOR_TELEPHONE_MODULE_FAULT 0x1037 //绰ģ +#define MINOR_WIFI_ABNORMAL 0x1038 //WIFIͨ쳣 +#define MINOR_WIFI_RESTORE 0x1039 //WIFIָ +#define MINOR_RF_ABNORMAL 0x103a //RFź쳣 +#define MINOR_RF_RESTORE 0x103b //RFźŻָ +#define MINOR_DETECTOR_ONLINE 0x103c //̽ +#define MINOR_DETECTOR_OFFLINE 0x103d //̽ +#define MINOR_DETECTOR_BATTERY_NORMAL 0x103e //̽ +#define MINOR_DETECTOR_BATTERY_LOW 0x103f //̽Ƿѹ +#define MINOR_DATA_TRAFFIC_OVERFLOW 0x1040 // +#define MINOR_ALARMHOST_ZONE_MODULE_LOSS 0x1041 //ģ +#define MINOR_ALARMHOST_ZONE_MODULE_RESTORE 0x1042 //ģ߻ָ +#define MINOR_WIRELESS_OUTPUT_LOSS 0x1043 //ģ +#define MINOR_WIRELESS_OUTPUT_RESTORE 0x1044 //ģָ +#define MINOR_WIRELESS_REPEATER_LOSS 0x1045 //м +#define MINOR_WIRELESS_REPEATER_RESTORE 0x1046 //мָ +#define MINOR_ALARMHOST_TRIGGER_MODULE_LOSS 0x1047 //ģ +#define MINOR_ALARMHOST_TRIGGER_MODULE_RESTORE 0x1048 //ģ߻ָ +#define MINOR_ALARMHOST_WIRELESS_SIREN_LOSS 0x1049 //߾ +#define MINOR_ALARMHOST_WIRELESS_SIREN_RESTORE 0x104a //߾Żָ +#define MINOR_TX1_SUB_SYSTEM_EXCEPTION 0x1050 /*TX1ϵͳ쳣*/ +#define MINOR_TX1_REBOOT_EXCEPTION 0x1051 /*TX1ϵͳ쳣*/ +#define MINOR_TX1_SUB_SYSTEM_LOSS 0x1052 /*ϵͳ쳣*/ +#define MINOR_TX1_SUB_SYSTEM_RESTORE 0x1053 /*ϵͳ߻ָ*/ +#define MINOR_WIRELESS_SPEED_EXCEPTION 0x1054 //ߴ쳣 +#define MINOR_SUB_BOARD_HEARTBEAT_EXCEPTION 0x1055 //Ӱ쳣 +#define MINOR_HOTSTANDBY__EXCEPTION 0x1056 //ȱ쳣 +#define MINOR_PRODUCTIONDATA_EXCEPTION 0x1057 //쳣 + + +//LED 쳣 0x1201~0x1300 +#define MINOR_LED_SYSTEM_EXCEPTION 0x1201 //LEDϵͳ쳣 +#define MINOR_FLASH_NOTENOUGH_EXCEPTION 0x1202 //FLASHռ䲻 + +#define MINOR_LOG_EXCEPTION 0x1301 //־쳣 + +//[add]by silujie 2013-3-22 14:16 +//0x2000~0x3fff Ϊ豸־ +//0x4000~0x5000 Ϊ豸쳣־ +#define MINOR_SUBSYSTEM_IP_CONFLICT 0x4000 //ӰIPͻ +#define MINOR_SUBSYSTEM_NET_BROKEN 0x4001 //Ӱ +#define MINOR_FAN_ABNORMAL 0x4002 //쳣 +#define MINOR_BACKPANEL_TEMPERATURE_ABNORMAL 0x4003 //¶쳣 + +#define MINOR_SDCARD_ABNORMAL 0x4004 //SD +#define MINOR_SDCARD_DAMAGE 0x4005 //SD +#define MINOR_POC_ABNORMAL 0x4006 //豸POCģ쳣 +#define MINOR_MAIN_POWER_FAULT 0x4007 // +#define MINOR_BACK_UP_POWER_FAULT 0x4008 // +#define MINOR_TAMPER_FAULT 0x4009 // +#define MINOR_RS232_FAULT 0x400a //232߹ +#define MINOR_RS485_FAULT 0x400b //485߹ +#define MINOR_LAN_STATUS_FAULT 0x400c //LAN߽״̬ +#define MINOR_LAN_LINK1_FAULT 0x400d //LAN·1 +#define MINOR_LAN_LINK2_FAULT 0x400e //LAN·2 +#define MINOR_SIM_CARD_STATUS_FAULT 0x400f //4G-SIM״̬ +#define MINOR_4G_LINK1_FAULT 0x4010 //4G·1 +#define MINOR_4G_LINK2_FAULT 0x4011 //4G·2 +#define MINOR_OTHER_FAULT 0x4012 // +#define MINOR_FIRE_CONTROL_CONNECT_FAULT 0x4013 //ӹ +#define MINOR_SENSOR_SHORT_CIRCUIT 0x4014 //· +#define MINOR_SENSOR_OPEN_CIRCUIT 0x4015 //· +#define MINOR_SENSOR_MIS_CONNECT 0x4016 // +#define MINOR_SENSOR_FAULT_RESTORE 0x4017 //ϻָ +#define MINOR_DEVICE_FAULT 0x4018 //豸 +#define MINOR_OVERVOLTAGE 0X4019 //Դѹ +#define MINOR_UNDERVOLTAGE 0X401a //Դѹ +#define MINOR_PANLOCKING 0x401b //̨ˮƽת +#define MINOR_TILTLOCKING 0x401c //ֱ̨ת +#define MINOR_SUBBOARD_TEMPERATURE_ABNORMAL 0x401d //Ӱ¶쳣 +#define MINOR_EZVIZ_UPGRADE_EXCEPTION 0x401e //өʯ쳣 + +//өʯز쳣־ +#define MINOR_EZVIZ_OPERATION_ABNORMAL 0x4020 //өʯ쳣 + +#define MINOR_IFRAME_IS_TOO_LARGE 0x4030 //Ԥ/طʱI֡ + +/* */ +// +#define MAJOR_OPERATION 0x3 + +// +#define MINOR_VCA_MOTIONEXCEPTION 0x29 //쳣 +#define MINOR_START_DVR 0x41 /* */ +#define MINOR_STOP_DVR 0x42 /* ػ */ +#define MINOR_STOP_ABNORMAL 0x43 /* 쳣ػ */ +#define MINOR_REBOOT_DVR 0x44 /*豸*/ + +#define MINOR_LOCAL_LOGIN 0x50 /* ص½ */ +#define MINOR_LOCAL_LOGOUT 0x51 /* ע½ */ +#define MINOR_LOCAL_CFG_PARM 0x52 /* ò */ +#define MINOR_LOCAL_PLAYBYFILE 0x53 /* ذļطŻ */ +#define MINOR_LOCAL_PLAYBYTIME 0x54 /* ذʱطŻ*/ +#define MINOR_LOCAL_START_REC 0x55 /* ؿʼ¼ */ +#define MINOR_LOCAL_STOP_REC 0x56 /* ֹͣ¼ */ +#define MINOR_LOCAL_PTZCTRL 0x57 /* ̨ */ +#define MINOR_LOCAL_PREVIEW 0x58 /* Ԥ (ʹ)*/ +#define MINOR_LOCAL_MODIFY_TIME 0x59 /* ޸ʱ(ʹ) */ +#define MINOR_LOCAL_UPGRADE 0x5a /* */ +#define MINOR_LOCAL_RECFILE_OUTPUT 0x5b /* ر¼ļ */ +#define MINOR_LOCAL_FORMAT_HDD 0x5c /* سʼӲ */ +#define MINOR_LOCAL_CFGFILE_OUTPUT 0x5d /* ļ */ +#define MINOR_LOCAL_CFGFILE_INPUT 0x5e /* 뱾ļ */ +#define MINOR_LOCAL_COPYFILE 0x5f /* رļ */ +#define MINOR_LOCAL_LOCKFILE 0x60 /* ¼ļ */ +#define MINOR_LOCAL_UNLOCKFILE 0x61 /* ؽ¼ļ */ +#define MINOR_LOCAL_DVR_ALARM 0x62 /* ֶʹ*/ +#define MINOR_IPC_ADD 0x63 /* IPC */ +#define MINOR_IPC_DEL 0x64 /* ɾIPC */ +#define MINOR_IPC_SET 0x65 /* IPC */ +#define MINOR_LOCAL_START_BACKUP 0x66 /* ؿʼ */ +#define MINOR_LOCAL_STOP_BACKUP 0x67 /* ֹͣ*/ +#define MINOR_LOCAL_COPYFILE_START_TIME 0x68 /* رݿʼʱ*/ +#define MINOR_LOCAL_COPYFILE_END_TIME 0x69 /* رݽʱ*/ +#define MINOR_LOCAL_ADD_NAS 0x6a /*Ӳ nfsiscsi*/ +#define MINOR_LOCAL_DEL_NAS 0x6b /* ɾnas nfsiscsi*/ +#define MINOR_LOCAL_SET_NAS 0x6c /* nas nfsiscsi*/ +#define MINOR_LOCAL_RESET_PASSWD 0x6d /* ػָԱĬ*/ + +#define MINOR_REMOTE_LOGIN 0x70 /* Զ̵¼ */ +#define MINOR_REMOTE_LOGOUT 0x71 /* Զע½ */ +#define MINOR_REMOTE_START_REC 0x72 /* Զ̿ʼ¼ */ +#define MINOR_REMOTE_STOP_REC 0x73 /* Զֹͣ¼ */ +#define MINOR_START_TRANS_CHAN 0x74 /* ʼ͸ */ +#define MINOR_STOP_TRANS_CHAN 0x75 /* ֹͣ͸ */ +#define MINOR_REMOTE_GET_PARM 0x76 /* Զ̻ȡ */ +#define MINOR_REMOTE_CFG_PARM 0x77 /* Զò */ +#define MINOR_REMOTE_GET_STATUS 0x78 /* Զ̻ȡ״̬ */ +#define MINOR_REMOTE_ARM 0x79 /* Զ̲ */ +#define MINOR_REMOTE_DISARM 0x7a /* Զ̳ */ +#define MINOR_REMOTE_REBOOT 0x7b /* Զ */ +#define MINOR_START_VT 0x7c /* ʼԽ */ +#define MINOR_STOP_VT 0x7d /* ֹͣԽ */ +#define MINOR_REMOTE_UPGRADE 0x7e /* Զ */ +#define MINOR_REMOTE_PLAYBYFILE 0x7f /* Զ̰ļطŻ */ +#define MINOR_REMOTE_PLAYBYTIME 0x80 /* Զ̰ʱطŻ */ +#define MINOR_REMOTE_PTZCTRL 0x81 /* Զ̨ */ +#define MINOR_REMOTE_FORMAT_HDD 0x82 /* Զ̸ʽӲ */ +#define MINOR_REMOTE_STOP 0x83 /* Զ̹ػ */ +#define MINOR_REMOTE_LOCKFILE 0x84 /* Զļ */ +#define MINOR_REMOTE_UNLOCKFILE 0x85 /* Զ̽ļ */ +#define MINOR_REMOTE_CFGFILE_OUTPUT 0x86 /* Զ̵ļ */ +#define MINOR_REMOTE_CFGFILE_INTPUT 0x87 /* Զ̵ļ */ +#define MINOR_REMOTE_RECFILE_OUTPUT 0x88 /* Զ̵¼ļ */ +#define MINOR_REMOTE_DVR_ALARM 0x89 /* Զֶʹ*/ +#define MINOR_REMOTE_IPC_ADD 0x8a /* ԶIPC */ +#define MINOR_REMOTE_IPC_DEL 0x8b /* ԶɾIPC */ +#define MINOR_REMOTE_IPC_SET 0x8c /* ԶIPC */ +#define MINOR_REBOOT_VCA_LIB 0x8d /*ܿ*/ +#define MINOR_REMOTE_ADD_NAS 0x8e /* Զnas nfsiscsi*/ +#define MINOR_REMOTE_DEL_NAS 0x8f /* Զɾnas nfsiscsi*/ +#define MINOR_REMOTE_SET_NAS 0x90 /* Զnas nfsiscsi*/ +#define MINOR_LOCAL_OPERATE_LOCK 0x9d /* ز */ +#define MINOR_LOCAL_OPERATE_UNLOCK 0x9e /* ز */ +#define MINOR_REMOTE_DELETE_HDISK 0x9a /* Զɾ쳣ڵӲ */ +#define MINOR_REMOTE_LOAD_HDISK 0x9b /* Զ̼Ӳ */ +#define MINOR_REMOTE_UNLOAD_HDISK 0x9c /* ԶжӲ */ +#define MINOR_SCHEDULE_ANGLECALIBRATION 0x139 /*У׼*/ +#define MINOR_OTHER_OPERATE 0x200 /* */ + +//2010-05-26 ѶDVR־ +#define MINOR_LOCAL_START_REC_CDRW 0x91 /* ؿʼѶ */ +#define MINOR_LOCAL_STOP_REC_CDRW 0x92 /* ֹͣѶ */ +#define MINOR_REMOTE_START_REC_CDRW 0x93 /* Զ̿ʼѶ */ +#define MINOR_REMOTE_STOP_REC_CDRW 0x94 /* ԶֹͣѶ */ + +#define MINOR_LOCAL_PIC_OUTPUT 0x95 /* رͼƬļ */ +#define MINOR_REMOTE_PIC_OUTPUT 0x96 /* Զ̱ͼƬļ */ + +//2011-07-26 81ѶDVR־ +#define MINOR_LOCAL_INQUEST_RESUME 0x97 /* ػָѶ¼*/ +#define MINOR_REMOTE_INQUEST_RESUME 0x98 /* Զָ̻Ѷ¼*/ + +//2013-01-23 86ѶNVR־ +#define MINOR_LOCAL_ADD_FILE 0x99 /*صļ*/ +#define MINOR_LOCAL_DEL_FILE 0x9f /*ɾѶ*/ +#define MINOR_REMOTE_INQUEST_ADD_FILE 0x100 /*Զ̵ļ*/ + +//2009-12-16 Ƶۺƽ̨־ +#define MINOR_SUBSYSTEMREBOOT 0xa0 /*Ƶۺƽ̨dm6467 */ +#define MINOR_MATRIX_STARTTRANSFERVIDEO 0xa1 /*Ƶۺƽ̨лʼͼ*/ +#define MINOR_MATRIX_STOPTRANSFERVIDEO 0xa2 /*Ƶۺƽ̨лֹͣͼ*/ +#define MINOR_REMOTE_SET_ALLSUBSYSTEM 0xa3 /*Ƶۺƽ̨6467ϵͳϢ*/ +#define MINOR_REMOTE_GET_ALLSUBSYSTEM 0xa4 /*Ƶۺƽ̨ȡ6467ϵͳϢ*/ +#define MINOR_REMOTE_SET_PLANARRAY 0xa5 /*Ƶۺƽ̨üƻѲ*/ +#define MINOR_REMOTE_GET_PLANARRAY 0xa6 /*Ƶۺƽ̨ȡƻѲ*/ +#define MINOR_MATRIX_STARTTRANSFERAUDIO 0xa7 /*Ƶۺƽ̨лʼƵ*/ +#define MINOR_MATRIX_STOPRANSFERAUDIO 0xa8 /*Ƶۺƽ̨лֹͣƵ*/ +#define MINOR_LOGON_CODESPITTER 0xa9 /*Ƶۺƽ̨½*/ +#define MINOR_LOGOFF_CODESPITTER 0xaa /*Ƶۺƽ̨˳*/ + +//2010-01-22 Ƶۺƽ̨н־ +#define MINOR_START_DYNAMIC_DECODE 0xb0 /*ʼ̬*/ +#define MINOR_STOP_DYNAMIC_DECODE 0xb1 /*ֹ̬ͣ*/ +#define MINOR_GET_CYC_CFG 0xb2 /*ȡͨѲ*/ +#define MINOR_SET_CYC_CFG 0xb3 /*ýͨѲ*/ +#define MINOR_START_CYC_DECODE 0xb4 /*ʼѲ*/ +#define MINOR_STOP_CYC_DECODE 0xb5 /*ֹͣѲ*/ +#define MINOR_GET_DECCHAN_STATUS 0xb6 /*ȡͨ״̬*/ +#define MINOR_GET_DECCHAN_INFO 0xb7 /*ȡͨǰϢ*/ +#define MINOR_START_PASSIVE_DEC 0xb8 /*ʼ*/ +#define MINOR_STOP_PASSIVE_DEC 0xb9 /*ֹͣ*/ +#define MINOR_CTRL_PASSIVE_DEC 0xba /*Ʊ*/ +#define MINOR_RECON_PASSIVE_DEC 0xbb /**/ +#define MINOR_GET_DEC_CHAN_SW 0xbc /*ȡͨܿ*/ +#define MINOR_SET_DEC_CHAN_SW 0xbd /*ýͨܿ*/ +#define MINOR_CTRL_DEC_CHAN_SCALE 0xbe /*ͨſ*/ +#define MINOR_SET_REMOTE_REPLAY 0xbf /*Զ̻ط*/ +#define MINOR_GET_REMOTE_REPLAY 0xc0 /*ȡԶ̻ط״̬*/ +#define MINOR_CTRL_REMOTE_REPLAY 0xc1 /*Զ̻طſ*/ +#define MINOR_SET_DISP_CFG 0xc2 /*ʾͨ*/ +#define MINOR_GET_DISP_CFG 0xc3 /*ȡʾͨ*/ +#define MINOR_SET_PLANTABLE 0xc4 /*üƻѲ*/ +#define MINOR_GET_PLANTABLE 0xc5 /*ȡƻѲ*/ +#define MINOR_START_PPPPOE 0xc6 /*ʼPPPoE*/ +#define MINOR_STOP_PPPPOE 0xc7 /*PPPoE*/ +#define MINOR_UPLOAD_LOGO 0xc8 /*ϴLOGO*/ +//ģʽ־ +#define MINOR_LOCAL_PIN 0xc9 /* PINܲ */ +#define MINOR_LOCAL_DIAL 0xca /* ֶϿ */ +#define MINOR_SMS_CONTROL 0xcb /* ſ */ +#define MINOR_CALL_ONLINE 0xcc /* п */ +#define MINOR_REMOTE_PIN 0xcd /* ԶPINܲ */ + +//2010-12-16 ־ +#define MINOR_REMOTE_BYPASS 0xd0 /* Զ·*/ +#define MINOR_REMOTE_UNBYPASS 0xd1 /* Զ·ָ*/ +#define MINOR_REMOTE_SET_ALARMIN_CFG 0xd2 /* Զñ*/ +#define MINOR_REMOTE_GET_ALARMIN_CFG 0xd3 /* Զ̻ȡ*/ +#define MINOR_REMOTE_SET_ALARMOUT_CFG 0xd4 /* Զñ*/ +#define MINOR_REMOTE_GET_ALARMOUT_CFG 0xd5 /* Զ̻ȡ*/ +#define MINOR_REMOTE_ALARMOUT_OPEN_MAN 0xd6 /* Զֶ*/ +#define MINOR_REMOTE_ALARMOUT_CLOSE_MAN 0xd7 /* Զֶرձ*/ +#define MINOR_REMOTE_ALARM_ENABLE_CFG 0xd8 /* ԶñRS485ʹ״̬*/ +#define MINOR_DBDATA_OUTPUT 0xd9 /* ݿ¼ */ +#define MINOR_DBDATA_INPUT 0xda /* ݿ¼ */ +#define MINOR_MU_SWITCH 0xdb /* л */ +#define MINOR_MU_PTZ 0xdc /* PTZ */ +#define MINOR_DELETE_LOGO 0xdd /* ɾlogo */ +#define MINOR_REMOTE_INQUEST_DEL_FILE 0xde /*Զɾļ*/ + +#define MINOR_LOCAL_CONF_REB_RAID 0x101 /*Զؽ*/ +#define MINOR_LOCAL_CONF_SPARE 0x102 /*ȱ*/ +#define MINOR_LOCAL_ADD_RAID 0x103 /*ش*/ +#define MINOR_LOCAL_DEL_RAID 0x104 /*ɾ*/ +#define MINOR_LOCAL_MIG_RAID 0x105 /*Ǩ*/ +#define MINOR_LOCAL_REB_RAID 0x106 /* ֶؽ*/ +#define MINOR_LOCAL_QUICK_CONF_RAID 0x107 /*һ*/ +#define MINOR_LOCAL_ADD_VD 0x108 /*ش*/ +#define MINOR_LOCAL_DEL_VD 0x109 /*ɾ*/ +#define MINOR_LOCAL_RP_VD 0x10a /*޸*/ +#define MINOR_LOCAL_FORMAT_EXPANDVD 0X10b /*չ*/ +#define MINOR_LOCAL_RAID_UPGRADE 0X10c /*raid*/ +#define MINOR_LOCAL_STOP_RAID 0x10d /*ͣRAID(ȫ)*/ +#define MINOR_REMOTE_CONF_REB_RAID 0x111 /*ԶԶؽ*/ +#define MINOR_REMOTE_CONF_SPARE 0x112 /*Զȱ*/ +#define MINOR_REMOTE_ADD_RAID 0x113 /*Զ̴*/ +#define MINOR_REMOTE_DEL_RAID 0x114 /*Զɾ*/ +#define MINOR_REMOTE_MIG_RAID 0x115 /*ԶǨ*/ +#define MINOR_REMOTE_REB_RAID 0x116 /* Զֶؽ*/ +#define MINOR_REMOTE_QUICK_CONF_RAID 0x117 /*Զһ*/ +#define MINOR_REMOTE_ADD_VD 0x118 /*Զ̴*/ +#define MINOR_REMOTE_DEL_VD 0x119 /*Զɾ*/ +#define MINOR_REMOTE_RP_VD 0x11a /*Զ޸*/ +#define MINOR_REMOTE_FORMAT_EXPANDVD 0X11b /*Զ*/ +#define MINOR_REMOTE_RAID_UPGRADE 0X11c /*Զraid*/ +#define MINOR_REMOTE_STOP_RAID 0x11d /*ԶͣRAID(ȫ)*/ +#define MINOR_LOCAL_START_PIC_REC 0x121 /*ؿʼץͼ*/ +#define MINOR_LOCAL_STOP_PIC_REC 0x122 /*ֹͣץͼ*/ +#define MINOR_LOCAL_SET_SNMP 0x125 /*SNMP*/ +#define MINOR_LOCAL_TAG_OPT 0x126 /*رǩ*/ +#define MINOR_REMOTE_START_PIC_REC 0x131 /*Զ̿ʼץͼ*/ +#define MINOR_REMOTE_STOP_PIC_REC 0x132 /*Զֹͣץͼ*/ +#define MINOR_REMOTE_SET_SNMP 0x135 /*ԶSNMP*/ +#define MINOR_REMOTE_TAG_OPT 0x136 /*Զ̱ǩ*/ +#define MINOR_REMOTE_LOGIN_LOCK 0x137 //Զ̵¼ +#define MINOR_REMOTE_LOGIN_UNLOCK 0x138 //Զ̵¼ +// 9000 v2.2.0 +#define MINOR_LOCAL_VOUT_SWITCH 0x140 /* л*/ +#define MINOR_STREAM_CABAC 0x141 /* ѹѡò*/ + +//Netra 3.0.0 +#define MINOR_LOCAL_SPARE_OPT 0x142 /*N+1 ȱز*/ +#define MINOR_REMOTE_SPARE_OPT 0x143 /*ԶN+1 ȱز*/ +#define MINOR_LOCAL_IPCCFGFILE_OUTPUT 0x144 /* صipcļ*/ +#define MINOR_LOCAL_IPCCFGFILE_INPUT 0x145 /* صipcļ */ +#define MINOR_LOCAL_IPC_UPGRADE 0x146 /* IPC */ +#define MINOR_REMOTE_IPCCFGFILE_OUTPUT 0x147 /* Զ̵ipcļ*/ +#define MINOR_REMOTE_IPCCFGFILE_INPUT 0x148 /* Զ̵ipcļ*/ +#define MINOR_REMOTE_IPC_UPGRADE 0x149 /* ԶIPC */ + +#define MINOR_LOCAL_UNLOAD_HDISK 0x150 /*жӲ*/ +#define MINOR_LOCAL_AUDIO_MIX 0x151 /*Ƶ*/ +#define MINOR_REMOTE_AUDIO_MIX 0x152 /*ԶƵ*/ +#define MINOR_LOCAL_TRIAL_PAUSE 0x153 /*ͣѶ*/ +#define MINOR_LOCAL_TRIAL_RESUME 0x154 /*ؼѶ*/ +#define MINOR_REMOTE_TRIAL_PAUSE 0x155 /*ԶͣѶ*/ +#define MINOR_REMOTE_TRIAL_RESUME 0x156 /*Զ̼Ѷ*/ +#define MINOR_REMOTE_MODIFY_VERIFICATION_CODE 0x157 /*޸ƽ̨֤*/ + +#define MINOR_LOCAL_MAKECALL 0x180 /*غ*/ +#define MINOR_LOCAL_REJECTCALL 0x181 /*ؾܽ*/ +#define MINOR_LOCAL_ANSWERCALL 0x182 /*ؽ*/ +#define MINOR_LOCAL_HANGUPCALL 0x183 /*عҶ*/ + +#define MINOR_REMOTE_MAKECALL 0x188 /*Զ̺*/ +#define MINOR_REMOTE_REJECTCALL 0x189 /*Զ̾ܽ*/ +#define MINOR_REMOTE_ANSWERCALL 0x18a /*Զ̽*/ +#define MINOR_REMOTE_HANGUPCALL 0x18b /*Զ̹Ҷ*/ + +#define MINOR_LOCAL_CHANNEL_ORDERED 0x19b /*ͨ*/ + +#define MINOR_SET_MULTI_MASTER 0x201 /*ô*/ +#define MINOR_SET_MULTI_SLAVE 0x202 /*ô*/ +#define MINOR_CANCEL_MULTI_MASTER 0x203 /*ȡ*/ +#define MINOR_CANCEL_MULTI_SLAVE 0x204 /*ȡ*/ + +#define MINOR_DISPLAY_LOGO 0x205 /*ʾLOGO*/ +#define MINOR_HIDE_LOGO 0x206 /*LOGO*/ +#define MINOR_SET_DEC_DELAY_LEVEL 0x207 /*ͨʱ*/ +#define MINOR_SET_BIGSCREEN_DIPLAY_AREA 0x208 /*ôʾ*/ +#define MINOR_CUT_VIDEO_SOURCE 0x209 /*ƵԴи*/ +#define MINOR_SET_BASEMAP_AREA 0x210 /*ͼ*/ +#define MINOR_DOWNLOAD_BASEMAP 0x211 /*شͼ*/ +#define MINOR_CUT_BASEMAP 0x212 /*ͼи*/ +#define MINOR_CONTROL_ELEC_ENLARGE 0x213 /*ӷŴ(Ŵԭ)*/ +#define MINOR_SET_OUTPUT_RESOLUTION 0x214 /*ʾֱ*/ +#define MINOR_SET_TRANCSPARENCY 0X215 /*ͼ͸*/ +#define MINOR_SET_OSD 0x216 /*ʾOSD*/ +#define MINOR_RESTORE_DEC_STATUS 0x217 /*ָʼ״̬(лʱָʼ״̬)*/ + +//2011-11-11 Ӵ־ +#define MINOR_SCREEN_OPEN_SCREEN 0x218 //Ļ +#define MINOR_SCREEN_CLOSE_SCREEN 0x219 //رĻ +#define MINOR_SCREEN_SWITCH_SIGNAL 0x21a //źԴл +#define MINOR_SCREEN_MODIFY_NETWORK 0x21b // +#define MINOR_SCREEN_MODIFY_LEDRES 0x21c //LEDֱ +#define MINOR_SCREEN_SHOW_NORMAL 0x21d //ôͨʾģʽ +#define MINOR_SCREEN_SHOW_TILE 0x21e //ôƽʾģʽ +#define MINOR_SCREEN_DEC_NORMAL 0x21f //ͨģʽ +#define MINOR_SCREEN_DEC_LOWLATENCY 0x220 //õʱģʽ +#define MINOR_SCREEN_MODIFY_SELFRES 0x221 //źԴԶֱ +#define MINOR_SCREEN_OUTPUT_POSITION 0x222 //ڹĻ +#define MINOR_SCREEN_IMAGE_ENHANCE 0x223 //ͼǿ +#define MINOR_SCREEN_JOIN_SIGNAL 0x224 //źԴƴ +#define MINOR_SCREEN_SIGNAL_OSD 0x225 //źԴַ +#define MINOR_SCREEN_ASSOCIATED_INTERACTION 0x226 //źԴ +#define MINOR_SCREEN_MODIFY_MATRIX 0x227 //þ +#define MINOR_SCREEN_WND_TOP_KEEP 0x228 //ö +#define MINOR_SCREEN_WND_OPEN_KEEP 0x229 //ڴ򿪱 +#define MINOR_SCREEN_WALL_MIRROR 0x22a //ǽ +#define MINOR_SCREEN_UPLOAD_BASEMAP 0x22b //ϴͼ +#define MINOR_SCREEN_SHOW_BASEMAP 0x22c //ʾͼ +#define MINOR_SCREEN_HIDE_BASEMAP 0x22d //صͼ +#define MINOR_SCREEN_MODIFY_SERIAL 0x22e //ôڲ + +#define MINOR_SCREEN_SET_INPUT 0x251 /*޸Դ*/ +#define MINOR_SCREEN_SET_OUTPUT 0x252 /*޸ͨ*/ +#define MINOR_SCREEN_SET_OSD 0x253 /*޸LED*/ +#define MINOR_SCREEN_SET_LOGO 0x254 /*޸LOGO*/ +#define MINOR_SCREEN_SET_LAYOUT 0x255 /*ò*/ +#define MINOR_SCREEN_PICTUREPREVIEW 0x256 /*Բ*/ + + +//2012-06-14 CVCS2.0, õȲV1.0 V1.1Ѿˣʱ豸־ûж +#define MINOR_SCREEN_GET_OSD 0x257 /*ȡLED*/ +#define MINOR_SCREEN_GET_LAYOUT 0x258 /*ȡ*/ +#define MINOR_SCREEN_LAYOUT_CTRL 0x259 /*ֿ*/ +#define MINOR_GET_ALL_VALID_WND 0x260 /*ȡЧ*/ +#define MINOR_GET_SIGNAL_WND 0x261 /*ȡϢ*/ +#define MINOR_WINDOW_CTRL 0x262 /*ڿ*/ +#define MINOR_GET_LAYOUT_LIST 0x263 /*ȡб*/ +#define MINOR_LAYOUT_CTRL 0x264 /*ֿ*/ +#define MINOR_SET_LAYOUT 0x265 /*ò*/ +#define MINOR_GET_SIGNAL_LIST 0x266 /*ȡźԴб*/ +#define MINOR_GET_PLAN_LIST 0x267 /*ȡԤб*/ +#define MINOR_SET_PLAN 0x268 /*޸Ԥ*/ +#define MINOR_CTRL_PLAN 0x269 /*Ԥ*/ +#define MINOR_CTRL_SCREEN 0x270 /*Ļ*/ +#define MINOR_ADD_NETSIG 0x271 /*źԴ*/ +#define MINOR_SET_NETSIG 0x272 /*޸źԴ*/ +#define MINOR_SET_DECBDCFG 0x273 /*ý*/ +#define MINOR_GET_DECBDCFG 0x274 /*ȡ*/ +#define MINOR_GET_DEVICE_STATUS 0x275 /*ȡ豸Ϣ*/ +#define MINOR_UPLOAD_PICTURE 0x276 /*ͼϴ*/ +#define MINOR_SET_USERPWD 0x277 /*û*/ +#define MINOR_ADD_LAYOUT 0x278 /*Ӳ*/ +#define MINOR_DEL_LAYOUT 0x279 /*ɾ*/ +#define MINOR_DEL_NETSIG 0x280 /*ɾźԴ*/ +#define MINOR_ADD_PLAN 0x281 /*Ԥ*/ +#define MINOR_DEL_PLAN 0x282 /*ɾԤ*/ +#define MINOR_GET_EXTERNAL_MATRIX_CFG 0x283 //ȡӾ +#define MINOR_SET_EXTERNAL_MATRIX_CFG 0x284 //Ӿ +#define MINOR_GET_USER_CFG 0x285 //ȡû +#define MINOR_SET_USER_CFG 0x286 //û +#define MINOR_GET_DISPLAY_PANEL_LINK_CFG 0x287 //ȡʾǽ +#define MINOR_SET_DISPLAY_PANEL_LINK_CFG 0x288 //ʾǽ + +#define MINOR_GET_WALLSCENE_PARAM 0x289 //ȡǽ +#define MINOR_SET_WALLSCENE_PARAM 0x28a //õǽ +#define MINOR_GET_CURRENT_WALLSCENE 0x28b //ȡǰʹó +#define MINOR_SWITCH_WALLSCENE 0x28c //л +#define MINOR_SIP_LOGIN 0x28d //SIPעɹ +#define MINOR_VOIP_START 0x28e //VOIPԽʼ +#define MINOR_VOIP_STOP 0x28f //VOIPԽֹͣ +#define MINOR_WIN_TOP 0x290 //ǽö +#define MINOR_WIN_BOTTOM 0x291 //ǽõ +#define MINOR_SET_USER_ADD_CFG 0x292 //û +#define MINOR_SET_USER_MODF_CFG 0x293 //޸û +#define MINOR_SET_USER_DEL_CFG 0x294 //ɾû + +// Netra 2.2.2 +#define MINOR_LOCAL_LOAD_HDISK 0x300 //ؼӲ +#define MINOR_LOCAL_DELETE_HDISK 0x301 //ɾ쳣ڵӲ + +//KY2013 3.0.0 +#define MINOR_LOCAL_MAIN_AUXILIARY_PORT_SWITCH 0X302 //л +#define MINOR_LOCAL_HARD_DISK_CHECK 0x303 //ӲԼ + +//Netra3.1.0 +#define MINOR_LOCAL_CFG_DEVICE_TYPE 0x310 //豸 +#define MINOR_REMOTE_CFG_DEVICE_TYPE 0x311 //Զ豸 +#define MINOR_LOCAL_CFG_WORK_HOT_SERVER 0x312 //ùȱ +#define MINOR_REMOTE_CFG_WORK_HOT_SERVER 0x313 //Զùȱ +#define MINOR_LOCAL_DELETE_WORK 0x314 //ɾ +#define MINOR_REMOTE_DELETE_WORK 0x315 //Զɾ +#define MINOR_LOCAL_ADD_WORK 0x316 //ӹ +#define MINOR_REMOTE_ADD_WORK 0x317 //Զӹ +#define MINOR_LOCAL_IPCHEATMAP_OUTPUT 0x318 /* صȶͼļ */ +#define MINOR_LOCAL_IPCHEATFLOW_OUTPUT 0x319 /* صȶļ */ +#define MINOR_REMOTE_SMS_SEND 0x350 /*Զ̷Ͷ*/ +#define MINOR_LOCAL_SMS_SEND 0x351 /*طͶ*/ +#define MINOR_ALARM_SMS_SEND 0x352 /*Ͷű*/ +#define MINOR_SMS_RECV 0x353 /*ն*/ +//ע0x3500x351ָ˹GUIIEؼϱ༭Ͷţ +#define MINOR_LOCAL_SMS_SEARCH 0x354 /**/ +#define MINOR_REMOTE_SMS_SEARCH 0x355 /*Զ*/ +#define MINOR_LOCAL_SMS_READ 0x356 /*ز鿴*/ +#define MINOR_REMOTE_SMS_READ 0x357 /*Զ̲鿴*/ +#define MINOR_REMOTE_DIAL_CONNECT 0x358 /*Զֶ̿*/ +#define MINOR_REMOTE_DIAL_DISCONN 0x359 /*Զֶֹͣ*/ +#define MINOR_LOCAL_ALLOWLIST_SET 0x35A /**/ +#define MINOR_REMOTE_ALLOWLIST_SET 0x35B /*Զ*/ +#define MINOR_LOCAL_DIAL_PARA_SET 0x35C /*òŲ*/ +#define MINOR_REMOTE_DIAL_PARA_SET 0x35D /*ԶòŲ*/ +#define MINOR_LOCAL_DIAL_SCHEDULE_SET 0x35E /*òżƻ*/ +#define MINOR_REMOTE_DIAL_SCHEDULE_SET 0x35F /*Զòżƻ*/ +#define MINOR_PLAT_OPER 0x360 /* ƽ̨*/ +#define MINOR_REMOTE_CFG_POE_WORK_MODE 0x361//ԶPOEģʽ +#define MINOR_LOCAL_CFG_POE_WORK_MODE 0x362//POEģʽ +#define MINOR_REMOTE_CFG_FACE_CONTRAST 0x363//Զȶ +#define MINOR_LOCAL_CFG_FACE_CONTRAST 0x364//ȶ +#define MINOR_REMOTE_CFG_ALLOWLIST_FACE_CONTRAST 0x365//Զȶ +#define MINOR_LOCAL_CFG_ALLOWLIST_FACE_CONTRAST 0x366//ȶ +#define MINOR_LOCAL_CHECK_TIME 0x367 //ֶУʱ +#define MINOR_VCA_ONEKEY_EXPORT_PICTURE 0x368 //һͼƬ +#define MINOR_VCA_ONEKEY_DELETE_PICTURE 0x369 //һɾͼƬ +#define MINOR_VCA_ONEKEY_EXPORT_VIDEO 0x36a //һ¼ +#define MINOR_VCA_ONEKEY_DELETE_VIDEO 0x36b //һɾ¼ +#define MINOR_REMOTE_CFG_WIRELESS_DIALPARAM 0x36c /*Զ߲Ų*/ +#define MINOR_LOCAL_CFG_WIRELESS_DIALPARAM 0x36d /*߲Ų*/ +#define MINOR_REMOTE_CFG_WIRELESS_SMSPARAM 0x36e /*Զ߶ò*/ +#define MINOR_LOCAL_CFG_WIRELESS_SMSPARAM 0x36f /*߶ò*/ +#define MINOR_REMOTE_CFG_WIRELESS_SMSSElFHELP 0x370 /*Զ߶ò*/ +#define MINOR_LOCAL_CFG_WIRELESS_SMSSElFHELP 0x371 /*߶ò*/ +#define MINOR_REMOTE_CFG_WIRELESS_NETFLOWPARAM 0x372 /*Զò*/ +#define MINOR_LOCAL_CFG_WIRELESS_NETFLOWPARAM 0x373 /*ò*/ + +//0x400-0x1000 Ž +#define MINOR_REMOTE_OPEN_DOOR 0x400 //Զ̿ +#define MINOR_REMOTE_CLOSE_DOOR 0x401 //Զ̹(ܿ) +#define MINOR_REMOTE_ALWAYS_OPEN 0x402 //Զ̳() +#define MINOR_REMOTE_ALWAYS_CLOSE 0x403 //Զ̳() +#define MINOR_REMOTE_CHECK_TIME 0x404 //ԶֶУʱ +#define MINOR_NTP_CHECK_TIME 0x405 //NTPԶУʱ +#define MINOR_REMOTE_CLEAR_CARD 0x406 //Զտ +#define MINOR_REMOTE_RESTORE_CFG 0x407 //Զָ̻Ĭϲ +#define MINOR_ALARMIN_ARM 0x408 // +#define MINOR_ALARMIN_DISARM 0x409 // +#define MINOR_LOCAL_RESTORE_CFG 0x40a //ػָĬϲ +#define MINOR_REMOTE_CAPTURE_PIC 0x40b //Զץ +#define MINOR_MOD_NET_REPORT_CFG 0x40c //޸IJ +#define MINOR_MOD_GPRS_REPORT_PARAM 0x40d //޸GPRSIJ +#define MINOR_MOD_REPORT_GROUP_PARAM 0x40e //޸ +#define MINOR_UNLOCK_PASSWORD_OPEN_DOOR 0x40f // +#define MINOR_AUTO_RENUMBER 0x410 //Զ± +#define MINOR_AUTO_COMPLEMENT_NUMBER 0x411 //Զ +#define MINOR_NORMAL_CFGFILE_INPUT 0x412 //ͨļ +#define MINOR_NORMAL_CFGFILE_OUTTPUT 0x413 //ͨļ +#define MINOR_CARD_RIGHT_INPUT 0x414 //뿨Ȩ޲ +#define MINOR_CARD_RIGHT_OUTTPUT 0x415 //Ȩ޲ +#define MINOR_LOCAL_USB_UPGRADE 0x416 //U +#define MINOR_REMOTE_VISITOR_CALL_LADDER 0x417 //ÿͺ +#define MINOR_REMOTE_HOUSEHOLD_CALL_LADDER 0x418 //ס +#define MINOR_REMOTE_ACTUAL_GUARD 0x419 //Զʵʱ +#define MINOR_REMOTE_ACTUAL_UNGUARD 0x41a //Զʵʱ +#define MINOR_REMOTE_CONTROL_NOT_CODE_OPER_FAILED 0x41b //ңδʧ +#define MINOR_REMOTE_CONTROL_CLOSE_DOOR 0x41c //ң +#define MINOR_REMOTE_CONTROL_OPEN_DOOR 0x41d //ң +#define MINOR_REMOTE_CONTROL_ALWAYS_OPEN_DOOR 0x41e //ң +#define MINOR_M1_CARD_ENCRYPT_VERIFY_OPEN 0x41f /*M1֤ܿ*/ +#define MINOR_M1_CARD_ENCRYPT_VERIFY_CLOSE 0x420 /*M1֤ܹر*/ +#define MINOR_NFC_FUNCTION_OPEN 0x421 /*NFCŹܿ*/ +#define MINOR_NFC_FUNCTION_CLOSE 0x422 /*NFCŹܹر*/ +#define MINOR_OFFLINE_DATA_OUTPUT 0x423 //߲ɼݵ +#define MINOR_CREATE_SSH_LINK 0x42d //SSH +#define MINOR_CLOSE_SSH_LINK 0x42e //ϿSSH +#define MINOR_LOCAL_IMPORT_USERINFO 0x42f //صԱݣԱȨޣģ壬ͼƬ¼ͣ +#define MINOR_LOCAL_EXPORT_USERINFO 0x430 //صԱ +#define MINOR_CREATE_CERTIFICATE 0x431 //֤飨SSLͨŵ֤飬SDKTLSHTTPSȣ +#define MINOR_UPLOAD_CERTIFICATE 0x432 //ϴ֤ +#define MINOR_DELETE_CERTIFICATE 0x433 //ɾ֤ +#define MINOR_COMSUME_ARM 0x434 //Ѳ +#define MINOR_COMSUME_DISARM 0x435 //ѳ +#define MINOR_ORCODE_KEY_MODIFY 0x436 //άԿ޸ + +#define MINOR_OPERATION_CUSTOM1 0x900 //ŽԶ1 +#define MINOR_OPERATION_CUSTOM2 0x901 //ŽԶ2 +#define MINOR_OPERATION_CUSTOM3 0x902 //ŽԶ3 +#define MINOR_OPERATION_CUSTOM4 0x903 //ŽԶ4 +#define MINOR_OPERATION_CUSTOM5 0x904 //ŽԶ5 +#define MINOR_OPERATION_CUSTOM6 0x905 //ŽԶ6 +#define MINOR_OPERATION_CUSTOM7 0x906 //ŽԶ7 +#define MINOR_OPERATION_CUSTOM8 0x907 //ŽԶ8 +#define MINOR_OPERATION_CUSTOM9 0x908 //ŽԶ9 +#define MINOR_OPERATION_CUSTOM10 0x909 //ŽԶ10 +#define MINOR_OPERATION_CUSTOM11 0x90a //ŽԶ11 +#define MINOR_OPERATION_CUSTOM12 0x90b //ŽԶ12 +#define MINOR_OPERATION_CUSTOM13 0x90c //ŽԶ13 +#define MINOR_OPERATION_CUSTOM14 0x90d //ŽԶ14 +#define MINOR_OPERATION_CUSTOM15 0x90e //ŽԶ15 +#define MINOR_OPERATION_CUSTOM16 0x90f //ŽԶ16 +#define MINOR_OPERATION_CUSTOM17 0x910 //ŽԶ17 +#define MINOR_OPERATION_CUSTOM18 0x911 //ŽԶ18 +#define MINOR_OPERATION_CUSTOM19 0x912 //ŽԶ19 +#define MINOR_OPERATION_CUSTOM20 0x913 //ŽԶ20 +#define MINOR_OPERATION_CUSTOM21 0x914 //ŽԶ21 +#define MINOR_OPERATION_CUSTOM22 0x915 //ŽԶ22 +#define MINOR_OPERATION_CUSTOM23 0x916 //ŽԶ23 +#define MINOR_OPERATION_CUSTOM24 0x917 //ŽԶ24 +#define MINOR_OPERATION_CUSTOM25 0x918 //ŽԶ25 +#define MINOR_OPERATION_CUSTOM26 0x919 //ŽԶ26 +#define MINOR_OPERATION_CUSTOM27 0x91a //ŽԶ27 +#define MINOR_OPERATION_CUSTOM28 0x91b //ŽԶ28 +#define MINOR_OPERATION_CUSTOM29 0x91c //ŽԶ29 +#define MINOR_OPERATION_CUSTOM30 0x91d //ŽԶ30 +#define MINOR_OPERATION_CUSTOM31 0x91e //ŽԶ31 +#define MINOR_OPERATION_CUSTOM32 0x91f //ŽԶ32 +#define MINOR_OPERATION_CUSTOM33 0x920 //ŽԶ33 +#define MINOR_OPERATION_CUSTOM34 0x921 //ŽԶ34 +#define MINOR_OPERATION_CUSTOM35 0x922 //ŽԶ35 +#define MINOR_OPERATION_CUSTOM36 0x923 //ŽԶ36 +#define MINOR_OPERATION_CUSTOM37 0x924 //ŽԶ37 +#define MINOR_OPERATION_CUSTOM38 0x925 //ŽԶ38 +#define MINOR_OPERATION_CUSTOM39 0x926 //ŽԶ39 +#define MINOR_OPERATION_CUSTOM40 0x927 //ŽԶ40 +#define MINOR_OPERATION_CUSTOM41 0x928 //ŽԶ41 +#define MINOR_OPERATION_CUSTOM42 0x929 //ŽԶ42 +#define MINOR_OPERATION_CUSTOM43 0x92a //ŽԶ43 +#define MINOR_OPERATION_CUSTOM44 0x92b //ŽԶ44 +#define MINOR_OPERATION_CUSTOM45 0x92c //ŽԶ45 +#define MINOR_OPERATION_CUSTOM46 0x92d //ŽԶ46 +#define MINOR_OPERATION_CUSTOM47 0x92e //ŽԶ47 +#define MINOR_OPERATION_CUSTOM48 0x92f //ŽԶ48 +#define MINOR_OPERATION_CUSTOM49 0x930 //ŽԶ49 +#define MINOR_OPERATION_CUSTOM50 0x931 //ŽԶ50 +#define MINOR_OPERATION_CUSTOM51 0x932 //ŽԶ51 +#define MINOR_OPERATION_CUSTOM52 0x933 //ŽԶ52 +#define MINOR_OPERATION_CUSTOM53 0x934 //ŽԶ53 +#define MINOR_OPERATION_CUSTOM54 0x935 //ŽԶ54 +#define MINOR_OPERATION_CUSTOM55 0x936 //ŽԶ55 +#define MINOR_OPERATION_CUSTOM56 0x937 //ŽԶ56 +#define MINOR_OPERATION_CUSTOM57 0x938 //ŽԶ57 +#define MINOR_OPERATION_CUSTOM58 0x939 //ŽԶ58 +#define MINOR_OPERATION_CUSTOM59 0x93a //ŽԶ59 +#define MINOR_OPERATION_CUSTOM60 0x93b //ŽԶ60 +#define MINOR_OPERATION_CUSTOM61 0x93c //ŽԶ61 +#define MINOR_OPERATION_CUSTOM62 0x93d //ŽԶ62 +#define MINOR_OPERATION_CUSTOM63 0x93e //ŽԶ63 +#define MINOR_OPERATION_CUSTOM64 0x93f //ŽԶ64 +#define MINOR_OPERATION_REALTIMEBROADCAST 0x940 //ʵʱ㲥 +#define MINOR_OPERATION_PLANBROADCAST 0x941 //ƻ㲥 + +#define MINOR_SET_WIFI_PARAMETER 0x950 //WIFIò +#define MINOR_EZVIZ_LOGIN 0x951 //өʯƵ½ +#define MINOR_EZVIZ_LOGINOUT 0x952 //өʯƵdz +#define MINOR_LOCK_ADD 0x953 // +#define MINOR_LOCK_DELETE 0x954 //ɾ +#define MINOR_LOCK_GET_STATUS 0x955 //״̬ȡ +#define MINOR_LOCK_SET_TMP_PASSWORD 0x956 //ʱ· +#define MINOR_LOCK_SET_SILENT_MODE 0x957 // +#define MINOR_LOCK_SET_LATE_WARNING 0x958 // +#define MINOR_LOCK_IPC_ADD 0x959 //IPC +#define MINOR_LOCK_IPC_REMOVE 0x95a //IPC +#define MINOR_LOCK_DETECTOR_ADD 0x95b //̽ +#define MINOR_LOCK_DETECTOR_REMOVE 0x95c //̽ +#define MINOR_LOCK_MESSAGE_REMINDING_OPEN 0x95d //ϢѴ +#define MINOR_LOCK_MESSAGE_REMINDING_CLOSE 0x95e //Ϣѹر +#define MINOR_LOCK_SET_HEART_BEAT 0x95f // +#define MINOR_LOCK_REBOOT 0x960 // +#define MINOR_LOCK_CLEAR_USER 0x961 //û +#define MINOR_LOCK_FORMAT 0x962 //ʽ +#define MINOR_LOCK_FINGER_CHANGE 0x963 //ָƸĶ +#define MINOR_LOCK_PASSWORD_CHANGE 0x964 //Ķ +#define MINOR_LOCK_CARD_CHANGE 0x965 //ϢĶ +#define MINOR_LOCK_USER_CHANGE 0x966 //ûϢĶ +#define MINOR_LOCK_SYSTEM_CHANGE 0x967 //ϵͳϢĶ +#define MINOR_LOCK_CHANGE_ADD_UESR 0x968 //û +#define MINOR_LOCK_CHANGE_DEL_UESR 0x969 //ɾû +#define MINOR_LOCK_CHANGE_CUSTOM_USER_NAME 0x96a //ԶûûĶ +#define MINOR_LOCK_CHANGE_REMOTE_DEVICE 0x96b //ңϢĶ +#define MINOR_LOCK_CHANGE_ADD_FP 0x96c //ָ +#define MINOR_LOCK_CHANGE_DEL_FP 0x96d //ɾָ +#define MINOR_LOCK_CHANGE_ADD_PASSWORD 0x96e // +#define MINOR_LOCK_CHANGE_DEL_PASSWORD 0x96f //ɾ +#define MINOR_LOCK_CHANGE_ADD_CARD 0x970 //Ƭ +#define MINOR_LOCK_CHANGE_DEL_CARD 0x971 //ɾƬ +#define MINOR_LOCK_NETWORK_SWITCH 0x972 //繦ܿظĶ +#define MINOR_LOCK_CLEAR_NETWORK_DATA 0x973 // +#define MINOR_LOCK_CLEAR_HOST_USER 0x974 //û +#define MINOR_LOCK_CLEAR_GUEST_USER 0x975 //տû +#define MINOR_LOCK_CLEAN_ALL_REMOTE_DEVICE 0x976 //ңûϢ +#define MINOR_LOCK_CLEAN_NORMAL_USER_FINGRT 0x977 //ͨûָ +#define MINOR_LOCK_CLEAN_ALL_CARD 0x978 //пƬ +#define MINOR_LOCK_CLEAN_ALL_PASSWORD 0x979 // +#define MINOR_START_WIRELESSSERVER 0x97a //豸ȵ +#define MINOR_STOP_WIRELESSSERVER 0x97b //ر豸ȵ +#define MINOR_EMERGENCY_CARD_AUTH_NORMAL_CARD 0x97c //ӦȨͨ +#define MINOR_CHANGE_ALWAYS_OPEN_RIGHT 0x97d //ͨģʽĶ +#define MINOR_LOCK_DOOR_BELL_EVENT 0x97e //¼ + +//Ϣ־ +#define MINOR_BACKUP_DATA 0xc41 //ݱ +#define MINOR_TRANSFER_DATA 0xc42 //Ǩ +#define MINOR_RESTORE_DATA 0xc43 //ݻԭ +#define MINOR_SET_INPUT_PLAN 0xc44 //ն˶ʱлƻ +#define MINOR_TERMINAL_ADB 0xc45//նADB +#define MINOR_TERMINAL_VOLUME 0xc46 //ն +#define MINOR_TERMINAL_LOGO 0xc47 //նLOGO +#define MINOR_TERMINAL_DEFAULT_SCHEDULE 0xc48 //Ƭճʹ +#define MINOR_TERMINAL_PASSWORD 0xc49 //ն +#define MINOR_TERMINAL_IP 0xc4a//նIP +#define MINOR_TERMINAL_RELATE_IPC 0xc4b//ն˹IPC +#define MINOR_TERMINAL_SERVER 0xc4c//ն˹ +#define MINOR_TERMINAL_SADP 0xc4d//նSADP +#define MINOR_TERMINAL_TIMEZONE 0xc4e//նʱ +#define MINOR_TERMINAL_TEMP_PROTECT 0xc4f//ն¶ȱ +#define MINOR_ADD_ORGANIZATION 0xc50 //֯ +#define MINOR_DELETE_ORGANIZATION 0xc51 //ɾ֯ +#define MINOR_MODIFY_ORGANIZATION 0xc52 //޸֯ +#define MINOR_WEATHER_FACTORY 0xc53 // +#define MINOR_SADP_ENABLE 0xc54 //sadp +#define MINOR_SSH_ENABLE 0xc55 //SSH +#define MINOR_MODIFY_MATERIAL 0xc56 //زIJ޸ +#define MINOR_INSERT_CHARACTER 0xc57 //岥Ϣ +#define MINOR_TERMINAL_BACKLIGHT 0xc58 //ն˱ +#define MINOR_DOWNLOAD_MATERIAL_THUMBNAIL 0xc59 //زͼ +#define MINOR_UPLOAD_PROGRAM_THUMBNAIL 0xc5a//ϴĿͼ +#define MINOR_TDOWNLOAD_PROGRAM_THUMBNAIL 0xc5b//ؽĿͼ +#define MINOR_BATCH_DELETE_SCHEDULE_PLAN 0xc5c//ɾƻ +#define MINOR_REPUBLISH 0xc5d//· +#define MINOR_CLEAR_TERMINAL_PLAY_INFO 0xc5e//ն˲Ϣ +#define MINOR_GET_TERMINAL_RESOLUTION 0xc5f//ȡն˷ֱ +#define MINOR_SET_TERMINAL_RESOLUTION 0xc60//ն˷ֱ +#define MINOR_GET_BATCH_TERMINAL_UPGRATE_PROGRESS 0xc61//ȡն +#define MINOR_GET_BATCH_PROGRESS 0xc62//ȡն˷ +#define MINOR_GET_TEMPLATE 0xc64//ȡģ +#define MINOR_INIT_TEMPLATE 0xc65//ʼģ +#define MINOR_GET_TERMINAL_NTP_SERVERS 0xc66//ȡնNTP +#define MINOR_SET_TERMINAL_NTP_SERVERS 0xc67//նNTP +#define MINOR_GET_RELEASE_DETAILS 0xc68//ȡϸϢ +#define MINOR_UPLOAD_TEMPLATE_THUMBNAIL 0xc69//ϴģͼ +#define MINOR_DOWNLOAD_TEMPLATE_THUMBNAIL 0xc6a//ģͼ +#define MINOR_ADD_TEMPLATE 0xc6b//ģ +#define MINOR_DELETE_TEMPLATE 0xc6c//ɾģ +#define MINOR_MODIFY_TEMPLATE 0xc6d//޸ģ +#define MINOR_ADD_SCHEDULE_PLAN 0xc6e//ӷƻ +#define MINOR_MODIFY_SCHEDULE_PLAN 0xc6f//޸ķƻ +#define MINOR_CANCEL_SCHEDULE_RELEASE 0xc70//ȡճ̷ +#define MINOR_GET_SCHEDULE 0xc71//ȡճ +#define MINOR_ADD_INSERT 0xc72//½岥 +#define MINOR_CANCEL_INSERT 0xc73//ȡ岥 +#define MINOR_SWITCH_LANGUAGE 0xc74//л +#define MINOR_SET_ADMIN_INITIAL_PASSWORD 0xc75//adminʼ +#define MINOR_MODIFY_PORT 0xc76//޸Ķ˿ +#define MINOR_MODIFY_STORAGE_PATH 0xc77//޸Ĵ洢· +#define MINOR_EXIT_PROGRAM 0xc78//˳ +#define MINOR_MODULE_STARTUP_SUCCESS 0xc79//ģɹ +#define MINOR_APPROVE_SCHEDULE 0xc80//ճ +#define MINOR_GENERAL_DATA_SEND 0xc81//· +#define MINOR_SET_SIGN_INTERFACE 0xc82//ǩ +#define MINOR_GET_SIGN_INTERFACE 0xc83//ȡǩ +#define MINOR_SET_SHOW_MODE 0xc84//ʾģʽ +#define MINOR_GET_SHOW_MODE 0xc85//ȡʾģʽ +#define MINOR_SET_SCREEN_DIRECTION 0xc86//Ļ +#define MINOR_GET_SCREEN_DIRECTION 0xc87//ȡĻ +#define MINOR_SET_LOCK_SCREEN 0xc88// +#define MINOR_GET_LOCK_SCREEN 0xc89//ȡ +#define MINOR_SET_FACE_DATA_LIB 0xc8a// +#define MINOR_DELETE_FACE_DATA_LIB 0xc8b//ɾ +#define MINOR_SET_SPEC_FACE_DATA_LIB 0xc8c//ָ +#define MINOR_DELETE_SPEC_FACE_DATA_LIB 0xc8d//ɾָ +#define MINOR_ADD_FACE_DATA 0xc8e// +#define MINOR_SEARCH_FACE_DATA 0xc8f//ѯ +#define MINOR_MODIFY_FACE_DATA 0xc90//޸ +#define MINOR_DELETE_FACE_DATA 0xc91//ɾ +#define MINOR_DELETE_USERINFO_DETAIL 0xc92//ԱϢȨɾ +#define MINOR_ADD_USERINFO 0xc93//ԱϢ +#define MINOR_MODIFY_USERINFO 0xc94//޸ԱϢ +#define MINOR_DELETE_USERINFO 0xc95//ɾԱϢ +#define MINOR_ADD_CARD_INFO 0xc96//ӿϢ +#define MINOR_MODIFY_CARD_INFO 0xc97//޸ĿϢ +#define MINOR_DELETE_CARD_INFO 0xc98//ɾϢ +#define MINOR_SET_USER_RIGHT_WEEK 0xc99//ԱȨܼƻ +#define MINOR_SET_USER_RIGHT_HOLIDAY 0xc9a//ԱȨ޽ռƻ +#define MINOR_SET_USER_RIGHT_HOLIDAYGROUP 0xc9b//ԱȨ޼ƻ +#define MINOR_SET_USER_RIGHT_TEMPLATE 0xc9c//ԱȨ޼ƻģ + +//2012-03-05 ITC־ +#define MINOR_SET_TRIGGERMODE_CFG 0x1001 /*ôģʽ*/ +#define MINOR_GET_TRIGGERMODE_CFG 0x1002 /*ȡģʽ*/ +#define MINOR_SET_IOOUT_CFG 0x1003 /*IO*/ +#define MINOR_GET_IOOUT_CFG 0x1004 /*ȡIO*/ +#define MINOR_GET_TRIGGERMODE_DEFAULT 0x1005 /*ȡģʽƼ*/ +#define MINOR_GET_ITCSTATUS 0x1006 /*ȡ״̬*/ +#define MINOR_SET_STATUS_DETECT_CFG 0x1007 /*״̬*/ +#define MINOR_GET_STATUS_DETECT_CFG 0x1008 /*ȡ״̬*/ +#define MINOR_SET_VIDEO_TRIGGERMODE_CFG 0x1009 /*Ƶģʽ*/ +#define MINOR_GET_VIDEO_TRIGGERMODE_CFG 0x100a /*ȡƵģʽ*/ + +//2018-04-23 ͨز־ +#define MINOR_ALARMHOST_GUARD 0x1010 //ͨ() +#define MINOR_ALARMHOST_UNGUARD 0x1011 //ͨ +#define MINOR_ALARMHOST_BYPASS 0x1012 //· +#define MINOR_ALARMHOST_DURESS_ACCESS 0x1013 //Ю + +#define MINOR_ALARMHOST_RS485_PARAM 0x1018 //޸485ò +#define MINOR_ALARMHOST_ALARM_OUTPUT 0x1019 //ƴ +#define MINOR_ALARMHOST_ACCESS_OPEN 0x101a //Ž +#define MINOR_ALARMHOST_ACCESS_CLOSE 0x101b //Ž +#define MINOR_ALARMHOST_SIREN_OPEN 0x101c //ƾſ +#define MINOR_ALARMHOST_SIREN_CLOSE 0x101d //ƾŹ +#define MINOR_ALARMHOST_MOD_ZONE_CONFIG 0x101e //޸ķ +#define MINOR_ALARMHOST_MOD_ALARMOUT_CONIFG 0x101f //޸Ĵ +#define MINOR_ALARMHOST_MOD_ANALOG_CONFIG 0x1020 //޸ģ +#define MINOR_ALARMHOST_RS485_CONFIG 0x1021 //޸485ͨ +#define MINOR_ALARMHOST_PHONE_CONFIG 0x1022 //޸IJ +#define MINOR_ALARMHOST_ADD_ADMIN 0x1023 //ӹԱ +#define MINOR_ALARMHOST_MOD_ADMIN_PARAM 0x1024 //޸ĹԱ +#define MINOR_ALARMHOST_DEL_ADMIN 0x1025 //ɾԱ +#define MINOR_ALARMHOST_ADD_NETUSER 0x1026 //Ӻ˲Ա +#define MINOR_ALARMHOST_MOD_NETUSER_PARAM 0x1027 //޸ĺ˲Ա +#define MINOR_ALARMHOST_DEL_NETUSER 0x1028 //ɾ˲Ա +#define MINOR_ALARMHOST_ADD_OPERATORUSER 0x1029 //ǰ˲Ա +#define MINOR_ALARMHOST_MOD_OPERATORUSER_PW 0x102a //޸ǰ˲Ա +#define MINOR_ALARMHOST_DEL_OPERATORUSER 0x102b //ɾǰ˲Ա +#define MINOR_ALARMHOST_ADD_KEYPADUSER 0x102c //Ӽ/û +#define MINOR_ALARMHOST_DEL_KEYPADUSER 0x102d //ɾ/û + + +#define MINOR_ALARMHOST_MOD_HOST_CONFIG 0x1032 //޸ +#define MINOR_ALARMHOST_RESTORE_BYPASS 0x1033 //·ָ + +#define MINOR_ALARMHOST_ALARMOUT_OPEN 0x1034 // +#define MINOR_ALARMHOST_ALARMOUT_CLOSE 0x1035 //ر +#define MINOR_ALARMHOST_MOD_SUBSYSTEM_PARAM 0x1036 //޸ϵͳ +#define MINOR_ALARMHOST_GROUP_BYPASS 0x1037 //· +#define MINOR_ALARMHOST_RESTORE_GROUP_BYPASS 0x1038 //·ָ +#define MINOR_ALARMHOST_MOD_GRPS_PARAM 0x1039 //޸GPRS + +#define MINOR_ALARMHOST_MOD_REPORT_MOD 0x103b //޸ϴʽ +#define MINOR_ALARMHOST_MOD_GATEWAY_PARAM 0x103c //޸Ž + +#define MINOR_STAY_ARM 0x104c //ز +#define MINOR_QUICK_ARM 0x104d //ʱ +#define MINOR_AUTOMATIC_ARM 0x104e //Զ +#define MINOR_AUTOMATIC_DISARM 0x104f //Զ +#define MINOR_KEYSWITCH_ARM 0x1050 //Կײ +#define MINOR_KEYSWITCH_DISARM 0x1051 //Կײ +#define MINOR_CLEAR_ALARM 0x1052 // +#define MINOR_MOD_FAULT_CFG 0x1053 //޸ϵͳ +#define MINOR_MOD_EVENT_TRIGGER_ALARMOUT_CFG 0x1054 //޸¼ +#define MINOR_SEARCH_EXTERNAL_MODULE 0x1055 //ģ +#define MINOR_REGISTER_EXTERNAL_MODULE 0x1056 //עģ +#define MINOR_CLOSE_KEYBOARD_ALARM 0x1057 //رռ̱ʾ +#define MINOR_MOD_3G_PARAM 0x1058 //޸3G +#define MINOR_MOD_PRINT_PARAM 0x1059 //޸Ĵӡ +#define MINOR_ALARMHOST_SD_CARD_FORMAT 0x1060 //SDʽ +#define MINOR_ALARMHOST_SUBSYSTEM_UPGRADE 0x1061 //Ӱ̼ + +#define MINOR_PLAN_ARM_CFG 0x1062 //ƻ +#define MINOR_PHONE_ARM 0x1063 //ֻ +#define MINOR_PHONE_STAY_ARM 0x1064 //ֻز +#define MINOR_PHONE_QUICK_ARM 0x1065 //ֻʱ +#define MINOR_PHONE_DISARM 0x1066 //ֻ +#define MINOR_PHONE_CLEAR_ALARM 0x1067 //ֻ +#define MINOR_ALLOWLIST_CFG 0x1068 // +#define MINOR_TIME_TRIGGER_CFG 0x1069 //ʱش +#define MINOR_CAPTRUE_CFG 0x106a //ץͼ +#define MINOR_TAMPER_CFG 0x106b // + +#define MINOR_REMOTE_KEYPAD_UPGRADE 0x106c //Զ +#define MINOR_ONETOUCH_AWAY_ARMING 0x106d //һ +#define MINOR_ONETOUCH_STAY_ARMING 0x106e //һز +#define MINOR_SINGLE_PARTITION_ARMING_OR_DISARMING 0x106f // +#define MINOR_CARD_CONFIGURATION 0x1070 // +#define MINOR_CARD_ARMING_OR_DISARMING 0x1071 //ˢ +#define MINOR_EXPENDING_NETCENTER_CONFIGURATION 0x1072 //չ +#define MINOR_NETCARD_CONFIGURATION 0x1073 // +#define MINOR_DDNS_CONFIGURATION 0x1074 //DDNS +#define MINOR_RS485BUS_CONFIGURATION 0x1075 // 485߲ +#define MINOR_RS485BUS_RE_REGISTRATION 0x1076 //485ע + +#define MINOR_REMOTE_OPEN_ELECTRIC_LOCK 0x1077 //Զ̴򿪵 +#define MINOR_REMOTE_CLOSE_ELECTRIC_LOCK 0x1078 //Զ̹رյ +#define MINOR_LOCAL_OPEN_ELECTRIC_LOCK 0x1079 //ش򿪵 +#define MINOR_LOCAL_CLOSE_ELECTRIC_LOCK 0x107a //عرյ +#define MINOR_OPEN_ALARM_LAMP 0x107b //򿪾(Զ) +#define MINOR_CLOSE_ALARM_LAMP 0x107c //رվ(Զ) + + +#define MINOR_TEMPORARY_PASSWORD 0x107d //ʱ¼ + +#define MINOR_HIDDNS_CONFIG 0x1082 // HIDDNS +#define MINOR_REMOTE_KEYBOARD_UPDATA 0x1083 //Զ̼־ +#define MINOR_ZONE_ADD_DETECTOR 0x1084 //̽ +#define MINOR_ZONE_DELETE_DETECTOR 0x1085 //ɾ̽ +#define MINOR_QUERY_DETECTOR_SIGNAL 0x1086 //ѯ̽źǿ +#define MINOR_QUERY_DETECTOR_BATTERY 0x1087 //ѯ̽ +#define MINOR_SET_DETECTOR_GUARD 0x1088 //̽ +#define MINOR_SET_DETECTOR_UNGUARD 0x1089 //̽ +#define MINOR_WIRELESS_CONFIGURATION 0x108a //߲ +#define MINOR_OPEN_VOICE 0x108b // +#define MINOR_CLOSE_VOICE 0x108c //ر +#define MINOR_ENABLE_FUNCTION_KEY 0x108d //ùܼ +#define MINOR_DISABLE_FUNCTION_KEY 0x108e //رչܼ +#define MINOR_READ_CARD 0x108f //Ѳˢ +#define MINOR_START_BROADCAST 0x1090 //㲥 +#define MINOR_STOP_BROADCAST 0x1091 //ر㲥 +#define MINOR_REMOTE_ZONE_MODULE_UPGRADE 0x1092 //Զģ +#define MINOR_NETWORK_MODULE_EXTEND 0x1093 //ģ +#define MINOR_ADD_CONTROLLER 0x1094 //ңû +#define MINOR_DELETE_CONTORLLER 0x1095 //ɾңû +#define MINOR_REMOTE_NETWORKMODULE_UPGRADE 0x1096 //Զģ +#define MINOR_WIRELESS_OUTPUT_ADD 0x1097 //עģ +#define MINOR_WIRELESS_OUTPUT_DEL 0x1098 //ɾģ +#define MINOR_WIRELESS_REPEATER_ADD 0x1099 //עм +#define MINOR_WIRELESS_REPEATER_DEL 0x109a //ɾм +#define MINOR_PHONELIST_CFG 0x109b //绰 +#define MINOR_RF_SIGNAL_CHECK 0x109c // RFźŲѯ +#define MINOR_USB_UPGRADE 0x109d // USB +#define MINOR_DOOR_TIME_REMINDER_CFG 0x109f //ŴŶʱѲ +#define MINOR_WIRELESS_SIREN_ADD 0x1100 //ע߾ +#define MINOR_WIRELESS_SIREN_DEL 0x1101 //ɾ߾ +#define MINOR_OUT_SCALE_OPEN 0x1102 //翪 +#define MINOR_OUT_SCALE_CLOSE 0x1103 //ر + +#define MINOR_ALARMHOST_4G_MODULS_START 0x1108 //4Gģ +#define MINOR_ALARMHOST_4G_MODULS_STOP 0x1109 //4Gģͣ + +#define MINOR_EZVIZ_CLOUD_START 0x1110 //өʯ +#define MINOR_EZVIZ_CLOUD_STOP 0x1111 //өʯͣ +#define MINOR_SIPUA_GRID_START 0x1112 //B +#define MINOR_SIPUA_GRID_STOP 0x1113 //Bͣ + +#define MINOR_MODBUS_FILE_DOWNLOAD 0x1114 //modbusЭļ +#define MINOR_MODBUS_FILE_UPLOAD 0x1115 //modbusЭļ + +#define MINOR_RS485_DLL_FILE_DOWNLOAD 0x1116 //485Эļ +#define MINOR_RS485_DLL_FLIE_UPLOAD 0x1117 //485Эļ +#define MINOR_TX1_REBOOT 0x1118 //TX1ϵͳ + +#define MINOR_LORA_PARAM 0x1119 //LoRa +#define MINOR_GB28181_PLATE_CFG_PARAM 0x111a //ƽ̨ +#define MINOR_GB28181_SERVER_START 0x111b // +#define MINOR_GB28181_SERVER_STOP 0x111c //ͣ +#define MINOR_WEB_AUTHENTICATION 0x111d //web֤ʽ +#define MINOR_SADP_ENABLED 0x111e //SADP +#define MINOR_HTTPS_ENABLED 0x111f //HTTPS +#define MINOR_EZVIZ_PARAM_CFG 0x1120 //өʯ +#define MINOR_SET_MOTION_DETECTION_CFG 0x1121 //ƶ +#define MINOR_GET_MOTION_DETECTION_CFG 0x1122 //ȡƶ +#define MINOR_SET_SHELTER_ALARM_CFG 0x1123 //ڵ +#define MINOR_GET_SHELTER_ALARM_CFG 0x1124 //ȡڵ +#define MINOR_SET_VIDEO_LOSS_CFG 0x1125 //Ƶʧ +#define MINOR_GET_VIDEO_LOSS_CFG 0x1126 //ȡƵʧ +#define MINOR_SET_ABNORMAL_CFG 0x1127 //쳣 +#define MINOR_GET_ABNORMAL_CFG 0x1128 //ȡ쳣 +#define MINOR_SET_ALARM_LINKAGE_CFG 0x1129 //ñ +#define MINOR_GET_ALARM_LINKAGE_CFG 0x112a //ȡ +#define MINOR_SET_NETWORK_CFG 0x112b // +#define MINOR_GET_NETWORK_CFG 0x112c //ȡ +#define MINOR_SET_VIDEO_MASK_CFG 0x112d //ƵڸDz +#define MINOR_GET_VIDEO_MASK_CFG 0x112e //ȡƵڸDz + +#define MINOR_BASIC_OPERATION_CFG 0x112f // +#define MINOR_DISPLAY_EFFECT_ADJUST_CFG 0x1130 //ʾЧ +#define MINOR_DISPLAY_PROPERTY_CFG 0x1131 //ʾ +#define MINOR_SIGNAL_CABLE_CFG 0x1132 //ź +#define MINOR_BASIC_CFG 0x1133 // +#define MINOR_IMAGE_ADJUST_CFG 0x1134 //ͼ +#define MINOR_IMAGE_ENHANCE_CFG 0x1135 //ͼǿ +#define MINOR_NOSIGN_SCREEN_SAVER_CFG 0x1136 //ź +#define MINOR_ADVANCED_OPERATION_CFG 0x1137 //߼ +#define MINOR_RECEIVE_CARD_CFG 0x1138 //տ +#define MINOR_INPUT_SUPPORT_CFG 0x1139 //ֹ֧ +#define MINOR_SYSTEM_MAINTAIN_CFG 0x113a //ϵͳά +#define MINOR_SYSTEM_TEST_CFG 0x113b //ϵͳ +#define MINOR_JOINT_CFG 0x113c //ƴ +#define MINOR_SHOW_MODE_CFG 0x113d //ʾģʽ +#define MINOR_ADVANCED_IMAGE_CFG 0x113e //߼ͼ +#define MINOR_SHELF_SIZE_CALIBRATION 0x1140 //ܹ궨 +#define MINOR_CARGO_SENSOR_CALIBRATION 0x1141 //񴫸궨 +#define MINOR_CARGO_PRODUCT_BIND_CFG 0x1142 //Ʒ + +//2013-04-19 ITS־ +#define MINOR_LOCAL_ADD_CAR_INFO 0x2001 /*ӳϢ*/ +#define MINOR_LOCAL_MOD_CAR_INFO 0x2002 /*޸ijϢ*/ +#define MINOR_LOCAL_DEL_CAR_INFO 0x2003 /*ɾϢ*/ +#define MINOR_LOCAL_FIND_CAR_INFO 0x2004 /*زҳϢ*/ +#define MINOR_LOCAL_ADD_MONITOR_INFO 0x2005 /*ӲϢ*/ +#define MINOR_LOCAL_MOD_MONITOR_INFO 0x2006 /*޸IJϢ*/ +#define MINOR_LOCAL_DEL_MONITOR_INFO 0x2007 /*ɾϢ*/ +#define MINOR_LOCAL_FIND_MONITOR_INFO 0x2008 /*زѯϢ*/ +#define MINOR_LOCAL_FIND_NORMAL_PASS_INFO 0x2009 /*زѯͨϢ*/ +#define MINOR_LOCAL_FIND_ABNORMAL_PASS_INFO 0x200a /*زѯ쳣ͨϢ*/ +#define MINOR_LOCAL_FIND_PEDESTRIAN_PASS_INFO 0x200b /*زѯͨϢ*/ +#define MINOR_LOCAL_PIC_PREVIEW 0x200c /*ͼƬԤ*/ +#define MINOR_LOCAL_SET_GATE_PARM_CFG 0x200d /*ñóڲ*/ +#define MINOR_LOCAL_GET_GATE_PARM_CFG 0x200e /*ȡóڲ*/ +#define MINOR_LOCAL_SET_DATAUPLOAD_PARM_CFG 0x200f /*ñϴ*/ +#define MINOR_LOCAL_GET_DATAUPLOAD_PARM_CFG 0x2010 /*ȡϴ*/ + +//2013-11-19־ +#define MINOR_LOCAL_DEVICE_CONTROL 0x2011 /*豸(ؿբ)*/ +#define MINOR_LOCAL_ADD_EXTERNAL_DEVICE_INFO 0x2012 /*豸Ϣ */ +#define MINOR_LOCAL_MOD_EXTERNAL_DEVICE_INFO 0x2013 /*޸豸Ϣ */ +#define MINOR_LOCAL_DEL_EXTERNAL_DEVICE_INFO 0x2014 /*ɾ豸Ϣ */ +#define MINOR_LOCAL_FIND_EXTERNAL_DEVICE_INFO 0x2015 /*زѯ豸Ϣ */ +#define MINOR_LOCAL_ADD_CHARGE_RULE 0x2016 /*շѹ */ +#define MINOR_LOCAL_MOD_CHARGE_RULE 0x2017 /*޸շѹ */ +#define MINOR_LOCAL_DEL_CHARGE_RULE 0x2018 /*ɾշѹ */ +#define MINOR_LOCAL_FIND_CHARGE_RULE 0x2019 /*زѯշѹ */ +#define MINOR_LOCAL_COUNT_NORMAL_CURRENTINFO 0x2020 /*ͳͨϢ */ +#define MINOR_LOCAL_EXPORT_NORMAL_CURRENTINFO_REPORT 0x2021 /*صͨϢͳƱ */ +#define MINOR_LOCAL_COUNT_ABNORMAL_CURRENTINFO 0x2022 /*ͳ쳣ͨϢ */ +#define MINOR_LOCAL_EXPORT_ABNORMAL_CURRENTINFO_REPORT 0x2023 /*ص쳣ͨϢͳƱ */ +#define MINOR_LOCAL_COUNT_PEDESTRIAN_CURRENTINFO 0x2024 /*ͳͨϢ */ +#define MINOR_LOCAL_EXPORT_PEDESTRIAN_CURRENTINFO_REPORT 0x2025 /*صͨϢͳƱ */ +#define MINOR_LOCAL_FIND_CAR_CHARGEINFO 0x2026 /*زѯշϢ */ +#define MINOR_LOCAL_COUNT_CAR_CHARGEINFO 0x2027 /*ͳƹշϢ */ +#define MINOR_LOCAL_EXPORT_CAR_CHARGEINFO_REPORT 0x2028 /*صշϢͳƱ */ +#define MINOR_LOCAL_FIND_SHIFTINFO 0x2029 /*زѯӰϢ */ +#define MINOR_LOCAL_FIND_CARDINFO 0x2030 /*زѯƬϢ */ +#define MINOR_LOCAL_ADD_RELIEF_RULE 0x2031 /*Ӽ */ +#define MINOR_LOCAL_MOD_RELIEF_RULE 0x2032 /*޸ļ */ +#define MINOR_LOCAL_DEL_RELIEF_RULE 0x2033 /*ɾ */ +#define MINOR_LOCAL_FIND_RELIEF_RULE 0x2034 /*زѯ */ +#define MINOR_LOCAL_GET_ENDETCFG 0x2035 /*ػȡڿƻ߼ */ +#define MINOR_LOCAL_SET_ENDETCFG 0x2036 /*óڿƻ߼*/ +#define MINOR_LOCAL_SET_ENDEV_ISSUEDDATA 0x2037 /*óڿƻ·ƬϢ */ +#define MINOR_LOCAL_DEL_ENDEV_ISSUEDDATA 0x2038 /*ճڿƻ·ƬϢ */ + +#define MINOR_REMOTE_DEVICE_CONTROL 0x2101 /*Զ豸*/ +#define MINOR_REMOTE_SET_GATE_PARM_CFG 0x2102 /*Զóڲ*/ +#define MINOR_REMOTE_GET_GATE_PARM_CFG 0x2103 /*ȡԶóڲ*/ +#define MINOR_REMOTE_SET_DATAUPLOAD_PARM_CFG 0x2104 /*Զϴ*/ +#define MINOR_REMOTE_GET_DATAUPLOAD_PARM_CFG 0x2105 /*ȡԶϴ*/ +#define MINOR_REMOTE_GET_BASE_INFO 0x2106 /*Զ̻ȡն˻Ϣ*/ +#define MINOR_REMOTE_GET_OVERLAP_CFG 0x2107 /*Զ̻ȡַӲ*/ +#define MINOR_REMOTE_SET_OVERLAP_CFG 0x2108 /*ԶַӲ*/ +#define MINOR_REMOTE_GET_ROAD_INFO 0x2109 /*Զ̻ȡ·Ϣ*/ +#define MINOR_REMOTE_START_TRANSCHAN 0x210a /*Զ̽ͬݷ*/ +#define MINOR_REMOTE_GET_ECTWORKSTATE 0x210b /*Զ̻ȡն˹״̬*/ +#define MINOR_REMOTE_GET_ECTCHANINFO 0x210c /*Զ̻ȡնͨ״̬*/ + +//Զ̿ 2013-11-19 +#define MINOR_REMOTE_ADD_EXTERNAL_DEVICE_INFO 0x210d /*Զ豸Ϣ */ +#define MINOR_REMOTE_MOD_EXTERNAL_DEVICE_INFO 0x210e /*Զ޸豸Ϣ */ +#define MINOR_REMOTE_GET_ENDETCFG 0x210f /*Զ̻ȡڿƻ߼ */ +#define MINOR_REMOTE_SET_ENDETCFG 0x2110 /*Զóڿƻ߼*/ +#define MINOR_REMOTE_ENDEV_ISSUEDDATA 0x2111 /*Զóڿƻ·ƬϢ */ +#define MINOR_REMOTE_DEL_ENDEV_ISSUEDDATA 0x2112 /*Զճڿƻ·ƬϢ */ + +//ITS 0x2115~0x2120 ͣλĿ +#define MINOR_REMOTE_ON_CTRL_LAMP 0x2115 /*Զ̿Ƴλָʾ*/ +#define MINOR_REMOTE_OFF_CTRL_LAMP 0x2116 /*رԶ̿Ƴλָʾ*/ +//Netra3.1.0 +#define MINOR_SET_VOICE_LEVEL_PARAM 0x2117 /*С */ +#define MINOR_SET_VOICE_INTERCOM_PARAM 0x2118 /*¼ */ +#define MINOR_SET_INTELLIGENT_PARAM 0x2119 /**/ +#define MINOR_LOCAL_SET_RAID_SPEED 0x211a /*raidٶ*/ +#define MINOR_REMOTE_SET_RAID_SPEED 0x211b /*Զraidٶ*/ +//Nerta3.1.2 +#define MINOR_REMOTE_CREATE_STORAGE_POOL 0x211c //ԶӴ洢 +#define MINOR_REMOTE_DEL_STORAGE_POOL 0x211d //Զɾ洢 + +#define MINOR_REMOTE_DEL_PIC 0x2120 //ԶɾͼƬ +#define MINOR_REMOTE_DEL_RECORD 0x2121 //Զɾ¼ +#define MINOR_REMOTE_CLOUD_ENABLE 0x2123 //Զϵͳ +#define MINOR_REMOTE_CLOUD_DISABLE 0x2124 //Զϵͳ +#define MINOR_REMOTE_CLOUD_MODIFY_PARAM 0x2125 //Զ޸Ĵ洢ز +#define MINOR_REMOTE_CLOUD_MODIFY_VOLUME 0x2126 //Զ޸Ĵ洢 +#define MINOR_REMOTE_GET_GB28181_SERVICE_PARAM 0x2127 //Զ̻ȡGB28181 +#define MINOR_REMOTE_SET_GB28181_SERVICE_PARAM 0x2128 //ԶGB28181 +#define MINOR_LOCAL_GET_GB28181_SERVICE_PARAM 0x2129 //ػȡGB28181 +#define MINOR_LOCAL_SET_GB28181_SERVICE_PARAM 0x212a //B28181 +#define MINOR_REMOTE_SET_SIP_SERVER 0x212b //ԶSIP SERVER +#define MINOR_LOCAL_SET_SIP_SERVER 0x212c //SIP SERVER +#define MINOR_LOCAL_BLOCKALLOWFILE_OUTPUT 0x212d // +#define MINOR_LOCAL_BLOCKALLOWFILE_INPUT 0x212e // +#define MINOR_REMOTE_BLOCKALLOWCFGFILE_OUTPUT 0x212f //Զ +#define MINOR_REMOTE_BLOCKALLOWCFGFILE_INPUT 0x2130 //Զ + + +#define MINOR_REMOTE_CREATE_MOD_VIEWLIB_SPACE 0x2200 /*Զ̴/޸ͼռ*/ +#define MINOR_REMOTE_DELETE_VIEWLIB_FILE 0x2201 /*Զɾͼļ*/ +#define MINOR_REMOTE_DOWNLOAD_VIEWLIB_FILE 0x2202 /*Զͼļ*/ +#define MINOR_REMOTE_UPLOAD_VIEWLIB_FILE 0x2203 /*Զϴͼļ*/ +#define MINOR_LOCAL_CREATE_MOD_VIEWLIB_SPACE 0x2204 /*ش/޸ͼռ*/ + +#define MINOR_LOCAL_SET_DEVICE_ACTIVE 0x3000 //ؼ豸 +#define MINOR_REMOTE_SET_DEVICE_ACTIVE 0x3001 //Զ̼豸 +#define MINOR_LOCAL_PARA_FACTORY_DEFAULT 0x3002 //ػظ +#define MINOR_REMOTE_PARA_FACTORY_DEFAULT 0x3003 //Զָ̻ +#define MIMOR_REMOTE_DELETE_ALL_VERIFYORCAP_PICS 0x3004 //Զɾ֤ץͼƬ +#define MIMOR_LOCAL_DELETE_ALL_VERIFYORCAP_PICS 0x3005 //ɾ֤ץͼƬ +#define MIMOR_REMOTE_DELETE_EVENTS_AT_SPECTIME 0x3006 //Զָ̰ʱɾ¼ +#define MIMOR_LOCAL_DELETE_EVENTS_AT_SPECTIME 0x3007 //ذָʱɾ¼ +#define MIMOR_REMOTE_OPEN_SUMMER_TIME 0x3008 //Զ̿ʱ +#define MIMOR_LOCAL_OPEN_SUMMER_TIME 0x3009 //ؿʱ +#define MIMOR_REMOTE_CLOSE_SUMMER_TIME 0x3010 //Զ̹رʱ +#define MIMOR_LOCAL_CLOSE_SUMMER_TIME 0x3011 //عرʱ +#define MIMOR_REMOTE_EZVIZ_UNBIND 0x3012 //Զөʯƽ +#define MIMOR_LOCAL_EZVIZ_UNBIND 0x3013 //өʯƽ +#define MIMOR_ENTER_LOCALUI_BACKGROUND 0x3014 //UĮ +#define MIMOR_REMOTE_DELETE_FACEBASEMAP 0x3015 //Զɾͼ +#define MIMOR_LOCAL_DELETE_FACEBASEMAP 0x3016 //ɾͼ + + +/*Ϣ־*/ +#define MINOR_UPLAOD_STATIC_MATERIAL 0x2401 //̬زϴ +#define MINOR_UPLOAD_DYNAMIC_MATERIAL 0x2402 //̬زϴ +#define MINOR_DELETE_MATERIAL 0x2403 //ɾز +#define MINOR_DOWNLOAD_STATIC_MATERIAL 0x2404 //̬ز +#define MINOR_COVER_STATIC_MATERIAL 0x2405 //̬زĸ +#define MINOR_APPROVE_MATERIAL 0x2406 //ز +#define MINOR_UPLAOD_PROGRAM 0x2407 //ϴĿ +#define MINOR_DOWNLOAD_PROGRAM 0x2408 //ؽĿ +#define MINOR_DELETE_PROGRAM 0x2409 //ɾĿ +#define MINOR_MODIFY_PROGRAM 0x240a //Ŀ޸ +#define MINOR_APPROVE_PRAGRAM 0x240b //Ŀ +#define MINOR_UPLAOD_SCHEDULE 0x240c //ϴճ +#define MINOR_DOWNLOAD_SCHEDULE 0x240d //ճ +#define MINOR_DELETE_SCHEDULE 0x240e //ɾճ +#define MINOR_MODIFY_SCHEDULE 0x240f //޸ճ +#define MINOR_RELEASE_SCHEDULE 0x2410 //ճ +#define MINOR_ADD_TERMINAL 0x2411 //ն +#define MINOR_DELETE_TERMINAL 0x2412 //ɾն +#define MINOR_MODIFY_TERMIANL_PARAM 0x2413 //޸ն˲ +#define MINOR_MODIFY_TERMIANL_PLAY_PARAM 0x2414 //ն˲Ų +#define MINOR_ADD_TERMIANL_GROUP 0x2415 //ն +#define MINOR_MODIFY_TERMINAL_GROUP_PARAM 0x2416 //޸ն +#define MINOR_DELETE_TERMIANL_GROUP 0x2417 //ɾն +#define MINOR_TERMINAL_PLAY_CONTROL 0x2418 //ն˲ſ +#define MINOR_TERMINAL_ON_OFF_LINE 0x2419 //ն +#define MINOR_SET_SWITCH_PLAN 0x241a //ն˶ʱػƻ +#define MINOR_SET_VOLUME_PLAN 0x241b //ն˶ʱƻ +#define MINOR_TERMINAL_SCREENSHOT 0x241c //ն˽ +#define MINOR_SYSTEM_TIME_CFG 0x241d //ϵͳУʱ +#define MINOR_ADD_USER_CFG 0x241e //û +#define MINOR_DEL_USER_CFG 0x241f //ɾû +#define MINOR_REMOTE_MANAGE_HDD 0x2420 //Զ̱༭Ӳ +#define MINOR_TERMINAL_UPDATE_START 0x2421 //ն +#define MINOR_SVR_RESTORE_DEFAULT_PARAM 0x2422 //Զָ̻Ĭ +#define MINOR_SVR_REMOTE_RESTORE_FACTORY 0x2423 //Զָ̻ +#define MINOR_SVR_REMOTE_REBOOT 0x2424 //Զ +#define MINOR_SVR_MODIFY_NETWORK_PARAM 0x2425 //޸ +#define MINOR_SVR_SOFTWARE_UPGRADE 0x2426 // + + + +#define MINOR_REMOTE_CONFERENCE_CONFIG 0x2501 //MCU +#define MINOR_REMOTE_TERMINAL_CONFIG 0x2502 //MCUն +#define MINOR_REMOTE_GROUP_CONFIG 0x2503 //MCU +#define MINOR_REMOTE_CONFERENCE_CTRL 0x2504 //MCU +#define MINOR_REMOTE_TERMINAL_CTRL 0x2505 //MCUն˿ +#define MINOR_ADD_VIDEOWALLSCENE 0x2506 //½ǽ +#define MINOR_DEL_VIDEOWALLSCENE 0x2507 //ɾǽ +#define MINOR_SAVE_VIDEOWALLSCENE 0x2508 //ǽ +#define MINOR_UPLOAD_SCENECFGFILE 0x2509 //ϴǽļ +#define MINOR_DOWNLOAD_SCENECFGFILE 0x250a //صǽļ + + +//NVR +#define MINOR_LOCAL_RESET_LOGIN_PASSWORD 0x2600 /* admin½*/ +#define MINOR_REMOTE_RESET_LOGIN_PASSWORD 0x2601 /* Զadmin¼ */ +#define MINOR_LOCAL_FACE_BASE_CREATE 0x2602 /* Աȿⴴ*/ +#define MINOR_REMOTE_FACE_BASE_CREATE 0x2603 /* ԶԱȿⴴ*/ +#define MINOR_LOCAL_FACE_BASE_MODIFY 0x2604 /* Աȿ޸*/ +#define MINOR_REMOTE_FACE_BASE_MODIFY 0x2605 /* ԶԱȿ޸*/ +#define MINOR_LOCAL_FACE_BASE_DELETE 0x2606 /* Աȿɾ*/ +#define MINOR_REMOTE_FACE_BASE_DELETE 0x2607 /* ԶԱȿɾ*/ +#define MINOR_LOCAL_FACE_DATA_APPEND 0x2608 /* ¼*/ +#define MINOR_REMOTE_FACE_DATA_APPEND 0x2609 /* Զ¼*/ +#define MINOR_LOCAL_FACE_DATA_SEARCH 0x2610 /* ȶݲ*/ +#define MINOR_REMOTE_FACE_DATA_SEARCH 0x2611 /* Զȶݲ*/ +#define MINOR_LOCAL_FACE_DATA_ANALYSIS 0x2612 /* ͼƬ*/ +#define MINOR_REMOTE_FACE_DATA_ANALYSIS 0x2613 /* ԶͼƬ*/ +#define MINOR_LOCAL_FACE_DATA_EDIT 0x2614 /* ޸*/ +#define MINOR_REMOTE_FACE_DATA_EDIT 0x2615 /* Զ޸*/ + +#define MINOR_LOCAL_FACE_DATA_DELETE 0x2616 /* ɾ*/ +#define MINOR_REMOTE_FACE_DATA_DELET 0x2617 /* Զɾ*/ + +#define MINOR_LOCAL_VCA_ANALYSIS_CFG 0x2618 /* ܷ*/ +#define MINOR_REMOTE_VCA_ANALYSIS_CFG 0x2619 /* Զܷ*/ + +#define MINOR_LOCAL_FACE_BASE_IMPORT 0x261a /* ص*/ +#define MINOR_LOCAL_FACE_BASE_EXPORT 0x261b /* ص*/ +//NVRȺ +#define MINOR_REMOTE_CLUSTER_MODE_CONFIG 0x261c /* Զ̼Ⱥģʽò*/ +#define MINOR_LOCAL_CLUSTER_MODE_CONFIG 0x261d /* ؼȺģʽò*/ +#define MINOR_REMOTE_CLUSTER_NETWORK_CONFIG 0x261e /* Զ̼Ⱥò*/ +#define MINOR_LOCAL_CLUSTER_NETWORK_CONFIG 0x261f /* ؼȺò*/ +#define MINOR_REMOTE_CLUSTER_ADD_DEVICE 0x2620 /* Զ̼Ⱥ豸*/ +#define MINOR_LOCAL_CLUSTER_ADD_DEVICE 0x2621 /* ؼȺ豸*/ +#define MINOR_REMOTE_CLUSTER_DEL_DEVICE 0x2622 /* Զ̼Ⱥɾ豸*/ +#define MINOR_LOCAL_CLUSTER_DEL_DEVICE 0x2623 /* ؼȺɾ豸*/ +#define MINOR_REMOTE_HFPD_CFG 0x2624 /* Զ̸ƵԱ*/ +#define MINOR_REMOTE_FACE_CONTRAST_TASK 0x2625 /* Զȶ */ +#define MINOR_REMOTE_LFPD_CFG 0x2626 /* Զ̵ƵԱ*/ +#define MINOR_REMOTE_IOTCFGFILE_INPUT 0x2627//Զ̵IOTļ +#define MINOR_REMOTE_IOTCFGFILE_OUTPUT 0x2628//Զ̵IOTļ +#define MINOR_LOCAL_IOT_ADD 0x2629//IOTͨ +#define MINOR_REMOTE_IOT_ADD 0x262a//ԶIOTͨ +#define MINOR_LOCAL_IOT_DEL 0x262b//ɾIOTͨ +#define MINOR_REMOTE_IOT_DEL 0x262c//ԶɾIOTͨ +#define MINOR_LOCAL_IOT_SET 0x262d//IOTͨ +#define MINOR_REMOTE_IOT_SET 0x262e//ԶIOTͨ +#define MINOR_LOCAL_IOTCFGFILE_INPUT 0x262f //صIOTļ +#define MINOR_LOCAL_IOTCFGFILE_OUTPUT 0x2630//صIOTļ +#define MINOR_LOCAL_VAD_CFG 0x2631 /* */ +#define MINOR_REMOTE_VAD_CFG 0x2632 /* Զ*/ +#define MINOR_LOCAL_ADDRESS_FILTER_CONFIG 0x2633 /* صַ*/ +#define MINOR_REMOTE_ADDRESS_FILTER_CONFIG 0x2634 /* Զ̵ַ*/ +#define MINOR_LOCAL_POE_CFG 0x2635 /* POE*/ +#define MINOR_REMOTE_POE_CFG 0x2636 /* ԶPOE*/ +#define MINOR_LOCAL_RESET_CHANNEL_PASSWORD 0x2637 /* ͨ*/ +#define MINOR_REMOTE_RESET_CHANNEL_PASSWORD 0x2638 /* Զͨ*/ +#define MINOR_LOCAL_SSD_UPGRADE_START 0x2639 /* SSDļϵͳʼ*/ +#define MINOR_LOCAL_SSD_UPGRADE_STOP 0x2640 /* SSDļϵͳ*/ +#define MINOR_REMOTE_SSD_UPGRADE_START 0x2641 /* ԶSSDļϵͳʼ*/ +#define MINOR_REMOTE_SSD_UPGRADE_STOP 0x2642 /* ԶSSDļϵͳ*/ +#define MINOR_LOCAL_SSD_FORMAT_START 0x2643 /*SSDļϵͳʽʼ*/ +#define MINOR_LOCAL_SSD_FORMAT_STOP 0x2644 /*SSDļϵͳʽ*/ +#define MINOR_REMOTE_SSD_FORMAT_START 0x2645 /*ԶSSDļϵͳʽʼ*/ +#define MINOR_REMOTE_SSD_FORMAT_STOP 0x2646 /*ԶSSDļϵͳʽ*/ +#define MINOR_LOCAL_AUTO_SWITCH_CONFIG 0x2647 /* Զػ*/ +#define MINOR_REMOTE_AUTO_SWITCH_CONFIG 0x2648 /* ԶԶػ*/ + +#define MINOR_LOCAL_SSD_INITIALIZATION_START 0x264a /* SSDʼʼ*/ +#define MINOR_LOCAL_SSD_INITIALIZATION_END 0x264b /* SSDʼ*/ +#define MINOR_REMOTE_SSD_INITIALIZATION_START 0x264c /* ԶSSDʼʼ*/ +#define MINOR_REMOTE_SSD_INITIALIZATION_END 0x264d /* ԶSSDʼ*/ + + +//AIƽ̨IJ־ +#define MINOR_REMOTE_AI_MODEL_ADD 0x2650//ģͰ +#define MINOR_REMOTE_AI_MODEL_QUERY 0x2651//ģͰѯ +#define MINOR_REMOTE_AI_MODEL_DELETE 0x2652//ģͰɾ +#define MINOR_REMOTE_AI_MODEL_UPDATE 0x2653//ģͰ +#define MINOR_REMOTE_AI_PICTURE_POLLING_TASK_ADD 0x2654//ͼƬѯ +#define MINOR_REMOTE_AI_PICTURE_POLLING_TASK_QUERY 0x2655//ͼƬѯѯ +#define MINOR_REMOTE_AI_PICTURE_POLLING_TASK_DELETE 0x2656//ͼƬѯɾ +#define MINOR_REMOTE_AI_PICTURE_POLLING_TASK_MODIFY 0x2657//ͼƬѯ޸ +#define MINOR_REMOTE_AI_VIDEO_POLLING_TASK_ADD 0x2658//Ƶѯ +#define MINOR_REMOTE_AI_VIDEO_POLLING_TASK_QUERY 0x2659//Ƶѯѯ +#define MINOR_REMOTE_AI_VIDEO_POLLING_TASK_DELETE 0x265A//Ƶѯɾ +#define MINOR_REMOTE_AI_VIDEO_POLLING_TASK_MODIFY 0x265B//Ƶѯ޸ +#define MINOR_REMOTE_AI_PICTURE_TASK_ADD 0x265C//ͼƬ +#define MINOR_REMOTE_AI_PICTURE_TASK_QUERY 0x265D//ͼƬѯ +#define MINOR_REMOTE_AI_PICTURE_TASK_DELETE 0x265E//ͼƬɾ +#define MINOR_REMOTE_AI_PICTURE_TASK_MODIFY 0x265F//ͼƬ޸ +#define MINOR_REMOTE_AI_VIDEO_TASK_ADD 0x2660//Ƶ +#define MINOR_REMOTE_AI_VIDEO_TASK_QUERY 0x2661//Ƶѯ +#define MINOR_REMOTE_AI_VIDEO_TASK_DELETE 0x2662//Ƶɾ +#define MINOR_REMOTE_AI_VIDEO_TASK_MODIFY 0x2663//Ƶ޸ +#define MINOR_REMOTE_AI_RULE_CONFIG 0x2664//AI + +#define MINOR_REMOTE_LOG_STORAGE_CONFIG 0x2665//־洢 +#define MINOR_REMOTE_LOG_SERVER_CONFIG 0x2666//־ + +#define MINOR_REMOTE_RESET_IPC_PASSWORD 0x2670//NVRIPC־ + +//өʯƽ̨־ +#define MINOR_LOCAL_EZVIZ_OPERATION 0x2671 //өʯ(өʯú) +#define MINOR_REMOTE_EZVIZ_OPERATION 0x2672 //Զөʯ(өʯú) + +#define MINOR_EZVIZ_BITSTREAM_PARAMATERS_CONFIG 0x2673 /* өʯ*/ +#define MINOR_EZVIZ_ALARM_PARAMATERS_CONFIG 0x2674 /* өʯ*/ +#define MINOR_EZVIZ_UPGRADE 0x2675 /* өʯ*/ +#define MINOR_EZVIZ_REGISTER 0x2676 /* өʯע*/ +#define MINOR_EZVIZ_LOCAL_PARAMATERS_CONFIG 0x2677 /* өʯز*/ +#define MINOR_EZVIZ_REMOTE_PARAMATERS_CONFIG 0x2678 /* өʯԶ̲*/ + + +//־ +#define MINOR_STOP_SOUND 0x2700 /**/ +#define MINOR_SELF_CHECK 0x2701 /*Լ*/ +#define MINOR_DUTY_CHECK 0x2702 /**/ +#define MINOR_SWITCH_SIMPLE_WORKMODE 0x2703 /*лģʽ*/ +#define MINOR_SWITCH_NORMAL_WORKMODE 0x2704 /*л׼ģʽ*/ +#define MINOR_LOCAL_SSD_OPERATE_START 0x2705 /* SSDʼ*/ +#define MINOR_LOCAL_SSD_OPERATE_STOP 0x2706 /* SSD*/ +#define MINOR_REMOTE_SSD_OPERATE_START 0x2707 /* ԶSSDʼ*/ +#define MINOR_REMOTE_SSD_OPERATE_STOP 0x2708 /* ԶSSD*/ + +/*־Ϣ*/ +// +#define MAJOR_INFORMATION 0x4 /*Ϣ*/ +// +#define MINOR_HDD_INFO 0xa1 /*ӲϢ*/ +#define MINOR_SMART_INFO 0xa2 /*SMARTϢ*/ +#define MINOR_REC_START 0xa3 /*ʼ¼*/ +#define MINOR_REC_STOP 0xa4 /*ֹͣ¼*/ +#define MINOR_REC_OVERDUE 0xa5 /*¼ɾ*/ +#define MINOR_LINK_START 0xa6 //ǰ豸 +#define MINOR_LINK_STOP 0xa7 //Ͽǰ豸 +#define MINOR_NET_DISK_INFO 0xa8 //ӲϢ +#define MINOR_RAID_INFO 0xa9 //raidϢ +#define MINOR_RUN_STATUS_INFO 0xaa /*ϵͳ״̬Ϣ*/ + +//Netra3.0.0 +#define MINOR_SPARE_START_BACKUP 0xab /*ȱϵͳʼָ*/ +#define MINOR_SPARE_STOP_BACKUP 0xac /*ȱϵͳָֹͣ*/ +#define MINOR_SPARE_CLIENT_INFO 0xad /*ȱͻϢ*/ +#define MINOR_ANR_RECORD_START 0xae /*ANR¼ʼ*/ +#define MINOR_ANR_RECORD_END 0xaf /*ANR¼*/ +#define MINOR_ANR_ADD_TIME_QUANTUM 0xb0 /*ANRʱ*/ +#define MINOR_ANR_DEL_TIME_QUANTUM 0xb1 /*ANRɾʱ*/ + +#define MINOR_PIC_REC_START 0xb3 /* ʼץͼ*/ +#define MINOR_PIC_REC_STOP 0xb4 /* ֹͣץͼ*/ +#define MINOR_PIC_REC_OVERDUE 0xb5 /* ͼƬļɾ */ +//Netra3.1.0 +#define MINOR_CLIENT_LOGIN 0xb6 /*¼ɹ*/ +#define MINOR_CLIENT_RELOGIN 0xb7 /*µ¼*/ +#define MINOR_CLIENT_LOGOUT 0xb8 /*˳ɹ*/ +#define MINOR_CLIENT_SYNC_START 0xb9 /*¼ͬʼ*/ +#define MINOR_CLIENT_SYNC_STOP 0xba /*¼ֹͬ*/ +#define MINOR_CLIENT_SYNC_SUCC 0xbb /*¼ͬɹ*/ +#define MINOR_CLIENT_SYNC_EXCP 0xbc /*¼ͬ쳣*/ +#define MINOR_GLOBAL_RECORD_ERR_INFO 0xbd /*ȫִ¼Ϣ*/ +#define MINOR_BUFFER_STATE 0xbe /*״̬־¼*/ +#define MINOR_DISK_ERRORINFO_V2 0xbf /*Ӳ̴ϸϢV2*/ +#define MINOR_CS_DATA_EXPIRED 0xc0 //ƴ洢ݹ +#define MINOR_PLAT_INFO 0xc1 //ƽ̨Ϣ +#define MINOR_DIAL_STAT 0xc2 /*״̬*/ + +#define MINOR_UNLOCK_RECORD 0xc3 //¼ +#define MINOR_VIS_ALARM 0xc4 // +#define MINOR_TALK_RECORD 0xc5 //ͨ¼ +#define MINOR_ACCESSORIES_MESSAGE 0xc6 //Ϣ +#define MINOR_KMS_EXPAMSION_DISK_INSERT 0xc7// KMS̲ +#define MINOR_IPC_CONNECT 0xc8// IPCϢ +#define MINOR_INTELLIGENT_BOARD_STATUS 0xc9// ܰ״̬ +#define MINOR_IPC_CONNECT_STATUS 0xca// IPC״̬ +#define MINOR_AUTO_TIMING 0xcb //ԶУʱ +#define MINOR_EZVIZ_OPERATION 0xcc //өʯ״̬ +//NVRȺ +#define MINOR_CLUSTER_DEVICE_ONLINE 0xcd //Ⱥ豸 +#define MINOR_CLUSTER_MGR_SERVICE_STARTUP 0xce //Ⱥ +#define MINOR_CLUSTER_BUSINESS_TRANSFER 0xcf //ȺҵǨ +#define MINOR_CLUSTER_STATUS 0xd0 //Ⱥ״̬Ϣ +#define MINOR_CLUSTER_CS_STATUS 0xd1 //ȺCSCM豸״̬ʧܣ¼CSCMIPַ +#define MINOR_CLUSTER_CM_STATUS 0xd2 //CM״̬л¼CMתĽɫleaderfollowercandidate +#define MINOR_VOICE_START_DETECTED 0xd3 /*⵽ʼ*/ +#define MINOR_VOICE_END_DETECTED 0xd4 /*⵽*/ +#define MINOR_DOUBLE_VERIFICATION_PASS 0xd5 /*֤ͨ*/ +#define MINOR_WIRELESS_RUNNING_STATUS 0xd6 /*״̬*/ +#define MINOR_SYSTEM_DATA_SYNCHRONIZATION 0xd7 /*ϵͳͬ*/ +#define MINOR_HD_FORMAT_START 0xd8 /*Ӳ̸ʽʼ*/ +#define MINOR_HD_FORMAT_STOP 0xd9 /*Ӳ̸ʽ*/ + +//0x400-0x4ff ŽϢ־ +#define MINOR_LIVE_DETECT_OPEN 0x400 //˼⿪ +#define MINOR_LIVE_DETECT_CLOSE 0x401 //˼ر +#define MINOR_CLEAR_DATA_COLLECTION 0x402 //ɼ +#define MINOR_DELETE_DATA_COLLECTION 0x403 //ɼɾ +#define MINOR_EXPORT_DATA_COLLECTION 0x404 //ɼݵ +#define MINOR_CARD_LEN_CONFIG 0x405 // +#define MINOR_DATA_BASE_INIT_FAILED 0x406 //ݿʼʧ +#define MINOR_DATA_BASE_PATCH_UPDATE 0x407 //ݿⲹ +#define MINOR_PSAM_CARD_INSERT 0x408 //Psam +#define MINOR_PSAM_CARD_REMOVE 0x409 //Psamγ +#define MINOR_HARD_FAULT_REBOOT 0x40a //Ӳ쳣hardfault +#define MINOR_PSAM_CARD_OCP 0x40b //Psam +#define MINOR_STACK_OVERFLOW 0x40c //ջ +#define MINOR_PARM_CFG 0x40d // +#define MINOR_CLR_USER 0x40e //û +#define MINOR_CLR_CARD 0x40f //п +#define MINOR_CLR_FINGER_BY_READER 0x410 //ָ() +#define MINOR_CLR_FINGER_BY_CARD 0x411 //ָ() +#define MINOR_CLR_FINGER_BY_EMPLOYEE_ON 0x412 //ָ() +#define MINOR_DEL_FINGER 0x413 //ɾһָ +#define MINOR_CLR_WEEK_PLAN 0x414 //Ȩܼƻ +#define MINOR_SET_WEEK_PLAN 0x415 //Ȩܼƻ +#define MINOR_SET_HOLIDAY_PLAN 0x416 //Ȩ޼ռƻ +#define MINOR_CLR_HOLIDAY_PLAN 0x417 //Ȩ޼ռƻ +#define MINOR_SET_HOLIDAY_GROUP 0x418 //Ȩ޼ƻ +#define MINOR_CLR_HOLIDAY_GROUP 0x419 //Ȩ޼ƻ +#define MINOR_CLR_TEMPLATE_PLAN 0x41a //Ȩ޼ƻ +#define MINOR_SET_TEMPLATE_PLAN 0x41b //Ȩ޼ƻ +#define MINOR_ADD_CARD 0x41c // +#define MINOR_MOD_CARD 0x41d //޸Ŀ +#define MINOR_ADD_FINGER_BY_CARD 0x41e //ָ() +#define MINOR_ADD_FINGER_BY_EMPLOYEE_NO 0x41f //ָ() +#define MINOR_MOD_FINGER_BY_CARD 0x420 //޸ָ() +#define MINOR_MOD_FINGER_BY_EMPLOYEE_NO 0x421 //޸ָ() +#define MINOR_IMPORT_USER_LIST 0x422 //ûб루߲ɼ +#define MINOR_USB_LOGIN 0x423 //USB½ +#define MINOR_USB_LOGOUT 0x424 //USBdz +#define MINOR_ISAPI_HTTP_LOGIN 0x425 //ISAPI HTTP½ +#define MINOR_ISAPI_HTTP_LOGOUT 0x426 //ISAPI HTTP dz +#define MINOR_ISAPI_HTTPS_LOGIN 0x427 //ISAPI HTTPS½ +#define MINOR_ISAPI_HTTPS_LOGOUT 0x428 //ISAPI HTTPSdz +#define MINOR_ISUP_ONLINE 0x429 //ISUP +#define MINOR_ISUP_OFFLINE 0x42a//ISUP +#define MINOR_FP_ISSUE_REC 0x42b //ָƷ¼ +#define MINOR_FACE_ISSUE_REC 0x42c//¼ +#define MINOR_ADD_IRIS 0x42d //·Ĥ +#define MINOR_MODIFY_IRIS 0x42e //޸ĺĤ +#define MINOR_DELETE_EMPLOYEE_IRIS 0x42f //ɾûĤɾ +#define MINOR_DELETE_WHOLE_IRIS 0x430 //ɾȫĤ +#define MINOR_MODIFY_IRIS_CFG 0x431 //޸ĺĤ +#define MINOR_ADD_USER_INFO 0x432 //ԱϢŽԱȨޣ +#define MINOR_MODIFY_USER_INFO 0x433 //޸ԱϢŽԱȨޣ +#define MINOR_CLR_USER_INFO 0x434 //ɾԱϢŽԱȨޣţ +#define MINOR_CLR_CARD_BY_CARD_OR_EMPLOYEE 0x435 //ɾŻ򹤺ţ +#define MINOR_CLR_ALL_CARD 0x436 //ɾп +#define MINOR_SIM_CARD_INSERT 0x437 //SIM +#define MINOR_SIM_CARD_PULLOUT 0x438 //SIMγ +#define MINOR_FINGERPRINT_RECOGNITION_OPEN 0x439 //ָʶ +#define MINOR_FINGERPRINT_RECOGNITION_CLOSE 0x43a //ָʶر +#define MINOR_FACE_RECOGNITION_OPEN 0x43b //ʶ +#define MINOR_FACE_RECOGNITION_CLOSE 0x43c //ʶر +#define MINOR_RESET_ONLINE_READER 0x43d //߶ +#define MINOR_CLEAR_IRIS_PICTURE 0x43e //պĤͼ +#define MINOR_ADD_VP 0x43f //· +#define MINOR_MODIFY_VP 0x440 //޸ +#define MINOR_DELETE_EMPLOYEE_VP 0x441 //ɾ +#define MINOR_DELETE_ALL_VP 0x442 //ɾ + + +//802.1x֤־ +#define MINOR_802_1X_AUTH_SUCC 0x320 /*802.1x֤ɹ*/ +#define MINOR_802_1X_AUTH_FAIL 0x321 /*802.1x֤ʧ*/ + +/*¼*/ +// +#define MAJOR_EVENT 0x5 /*¼*/ +// +#define MINOR_LEGAL_CARD_PASS 0x01 //Ϸ֤ͨ +#define MINOR_CARD_AND_PSW_PASS 0x02 //ˢ֤ͨ +#define MINOR_CARD_AND_PSW_FAIL 0x03 //ˢ֤ʧ +#define MINOR_CARD_AND_PSW_TIMEOUT 0x04 //֤ʱ +#define MINOR_CARD_AND_PSW_OVER_TIME 0x05 //ˢ볬 +#define MINOR_CARD_NO_RIGHT 0x06 //δȨ +#define MINOR_CARD_INVALID_PERIOD 0x07 //Чʱ +#define MINOR_CARD_OUT_OF_DATE 0x08 //Ź +#define MINOR_INVALID_CARD 0x09 //޴˿ +#define MINOR_ANTI_SNEAK_FAIL 0x0a //DZ֤ʧ +#define MINOR_INTERLOCK_DOOR_NOT_CLOSE 0x0b //δر +#define MINOR_NOT_BELONG_MULTI_GROUP 0x0c //ڶ֤Ⱥ +#define MINOR_INVALID_MULTI_VERIFY_PERIOD 0x0d //ڶ֤ʱ +#define MINOR_MULTI_VERIFY_SUPER_RIGHT_FAIL 0x0e //֤ģʽȨ֤ʧ +#define MINOR_MULTI_VERIFY_REMOTE_RIGHT_FAIL 0x0f //֤ģʽԶ֤ʧ +#define MINOR_MULTI_VERIFY_SUCCESS 0x10 //֤ɹ +#define MINOR_LEADER_CARD_OPEN_BEGIN 0x11 //׿ſʼ +#define MINOR_LEADER_CARD_OPEN_END 0x12 //׿Ž +#define MINOR_ALWAYS_OPEN_BEGIN 0x13 //״̬ʼ +#define MINOR_ALWAYS_OPEN_END 0x14 //״̬ +#define MINOR_LOCK_OPEN 0x15 // +#define MINOR_LOCK_CLOSE 0x16 //ر +#define MINOR_DOOR_BUTTON_PRESS 0x17 //Űť +#define MINOR_DOOR_BUTTON_RELEASE 0x18 //Űťſ +#define MINOR_DOOR_OPEN_NORMAL 0x19 //ţŴţ +#define MINOR_DOOR_CLOSE_NORMAL 0x1a //ţŴţ +#define MINOR_DOOR_OPEN_ABNORMAL 0x1b //쳣򿪣Ŵţ +#define MINOR_DOOR_OPEN_TIMEOUT 0x1c //Ŵ򿪳ʱŴţ +#define MINOR_ALARMOUT_ON 0x1d // +#define MINOR_ALARMOUT_OFF 0x1e //ر +#define MINOR_ALWAYS_CLOSE_BEGIN 0x1f //״̬ʼ +#define MINOR_ALWAYS_CLOSE_END 0x20 //״̬ +#define MINOR_MULTI_VERIFY_NEED_REMOTE_OPEN 0x21 //ض֤ҪԶ̿ +#define MINOR_MULTI_VERIFY_SUPERPASSWD_VERIFY_SUCCESS 0x22 //֤֤ɹ¼ +#define MINOR_MULTI_VERIFY_REPEAT_VERIFY 0x23 //֤ظ֤¼ +#define MINOR_MULTI_VERIFY_TIMEOUT 0x24 //֤ظ֤¼ +#define MINOR_DOORBELL_RINGING 0x25 // +#define MINOR_FINGERPRINT_COMPARE_PASS 0x26 //ָƱȶͨ +#define MINOR_FINGERPRINT_COMPARE_FAIL 0x27 //ָƱȶʧ +#define MINOR_CARD_FINGERPRINT_VERIFY_PASS 0x28 //ˢָ֤ͨ +#define MINOR_CARD_FINGERPRINT_VERIFY_FAIL 0x29 //ˢָ֤ʧ +#define MINOR_CARD_FINGERPRINT_VERIFY_TIMEOUT 0x2a //ˢָ֤ʱ +#define MINOR_CARD_FINGERPRINT_PASSWD_VERIFY_PASS 0x2b //ˢָƼ֤ͨ +#define MINOR_CARD_FINGERPRINT_PASSWD_VERIFY_FAIL 0x2c //ˢָƼ֤ʧ +#define MINOR_CARD_FINGERPRINT_PASSWD_VERIFY_TIMEOUT 0x2d //ˢָƼ֤ʱ +#define MINOR_FINGERPRINT_PASSWD_VERIFY_PASS 0x2e //ָƼ֤ͨ +#define MINOR_FINGERPRINT_PASSWD_VERIFY_FAIL 0x2f //ָƼ֤ʧ +#define MINOR_FINGERPRINT_PASSWD_VERIFY_TIMEOUT 0x30 //ָƼ֤ʱ +#define MINOR_FINGERPRINT_INEXISTENCE 0x31 //ָƲ +#define MINOR_CARD_PLATFORM_VERIFY 0x32 //ˢƽ̨֤ +#define MINOR_CALL_CENTER 0x33 //¼ +#define MINOR_FIRE_RELAY_TURN_ON_DOOR_ALWAYS_OPEN 0x34 //̵ͨų +#define MINOR_FIRE_RELAY_RECOVER_DOOR_RECOVER_NORMAL 0x35 //̵ָŻָ +#define MINOR_FACE_AND_FP_VERIFY_PASS 0x36 //ָ֤ͨ +#define MINOR_FACE_AND_FP_VERIFY_FAIL 0x37 //ָ֤ʧ +#define MINOR_FACE_AND_FP_VERIFY_TIMEOUT 0x38 //ָ֤ʱ +#define MINOR_FACE_AND_PW_VERIFY_PASS 0x39 //֤ͨ +#define MINOR_FACE_AND_PW_VERIFY_FAIL 0x3a //֤ʧ +#define MINOR_FACE_AND_PW_VERIFY_TIMEOUT 0x3b //֤ʱ +#define MINOR_FACE_AND_CARD_VERIFY_PASS 0x3c //ˢ֤ͨ +#define MINOR_FACE_AND_CARD_VERIFY_FAIL 0x3d //ˢ֤ʧ +#define MINOR_FACE_AND_CARD_VERIFY_TIMEOUT 0x3e //ˢ֤ʱ +#define MINOR_FACE_AND_PW_AND_FP_VERIFY_PASS 0x3f //ָ֤ͨ +#define MINOR_FACE_AND_PW_AND_FP_VERIFY_FAIL 0x40 //ָ֤ʧ +#define MINOR_FACE_AND_PW_AND_FP_VERIFY_TIMEOUT 0x41 //ָ֤ʱ +#define MINOR_FACE_CARD_AND_FP_VERIFY_PASS 0x42 //ˢָ֤ͨ +#define MINOR_FACE_CARD_AND_FP_VERIFY_FAIL 0x43 //ˢָ֤ʧ +#define MINOR_FACE_CARD_AND_FP_VERIFY_TIMEOUT 0x44 //ˢָ֤ʱ +#define MINOR_EMPLOYEENO_AND_FP_VERIFY_PASS 0x45 //żָ֤ͨ +#define MINOR_EMPLOYEENO_AND_FP_VERIFY_FAIL 0x46 //żָ֤ʧ +#define MINOR_EMPLOYEENO_AND_FP_VERIFY_TIMEOUT 0x47 //żָ֤ʱ +#define MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_PASS 0x48 //żָƼ֤ͨ +#define MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_FAIL 0x49 //żָƼ֤ʧ +#define MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_TIMEOUT 0x4a //żָƼ֤ʱ +#define MINOR_FACE_VERIFY_PASS 0x4b //֤ͨ +#define MINOR_FACE_VERIFY_FAIL 0x4c //֤ʧ +#define MINOR_EMPLOYEENO_AND_FACE_VERIFY_PASS 0x4d //ż֤ͨ +#define MINOR_EMPLOYEENO_AND_FACE_VERIFY_FAIL 0x4e //ż֤ʧ +#define MINOR_EMPLOYEENO_AND_FACE_VERIFY_TIMEOUT 0x4f //ż֤ʱ +#define MINOR_FACE_RECOGNIZE_FAIL 0x50 //ʶʧ +#define MINOR_FIRSTCARD_AUTHORIZE_BEGIN 0x51 //׿Ȩʼ +#define MINOR_FIRSTCARD_AUTHORIZE_END 0x52 //׿Ȩ +#define MINOR_DOORLOCK_INPUT_SHORT_CIRCUIT 0x53 //· +#define MINOR_DOORLOCK_INPUT_BROKEN_CIRCUIT 0x54 //· +#define MINOR_DOORLOCK_INPUT_EXCEPTION 0x55 //쳣 +#define MINOR_DOORCONTACT_INPUT_SHORT_CIRCUIT 0x56 //Ŵ· +#define MINOR_DOORCONTACT_INPUT_BROKEN_CIRCUIT 0x57 //Ŵ· +#define MINOR_DOORCONTACT_INPUT_EXCEPTION 0x58 //Ŵ쳣 +#define MINOR_OPENBUTTON_INPUT_SHORT_CIRCUIT 0x59 //Űť· +#define MINOR_OPENBUTTON_INPUT_BROKEN_CIRCUIT 0x5a //Űť· +#define MINOR_OPENBUTTON_INPUT_EXCEPTION 0x5b //Űť쳣 +#define MINOR_DOORLOCK_OPEN_EXCEPTION 0x5c //쳣 +#define MINOR_DOORLOCK_OPEN_TIMEOUT 0x5d //򿪳ʱ +#define MINOR_FIRSTCARD_OPEN_WITHOUT_AUTHORIZE 0x5e //׿δȨʧ +#define MINOR_CALL_LADDER_RELAY_BREAK 0x5f //ݼ̵Ͽ +#define MINOR_CALL_LADDER_RELAY_CLOSE 0x60 //ݼ̵պ +#define MINOR_AUTO_KEY_RELAY_BREAK 0x61 //Զ̵Ͽ +#define MINOR_AUTO_KEY_RELAY_CLOSE 0x62 //Զ̵պ +#define MINOR_KEY_CONTROL_RELAY_BREAK 0x63 //ݿؼ̵Ͽ +#define MINOR_KEY_CONTROL_RELAY_CLOSE 0x64 //ݿؼ̵պ +#define MINOR_EMPLOYEENO_AND_PW_PASS 0x65 //ż֤ͨ +#define MINOR_EMPLOYEENO_AND_PW_FAIL 0x66 //ż֤ʧ +#define MINOR_EMPLOYEENO_AND_PW_TIMEOUT 0x67 //ż֤ʱ +#define MINOR_HUMAN_DETECT_FAIL 0x68 //˼ʧ +#define MINOR_PEOPLE_AND_ID_CARD_COMPARE_PASS 0x69 //֤ȶͨ +#define MINOR_PEOPLE_AND_ID_CARD_COMPARE_FAIL 0x70 //֤ȶʧ +#define MINOR_CERTIFICATE_BLOCKLIST 0x71 //ֹ¼ +#define MINOR_LEGAL_MESSAGE 0x72 //Ϸ +#define MINOR_ILLEGAL_MESSAGE 0x73 //Ƿ +#define MINOR_DOOR_OPEN_OR_DORMANT_FAIL 0x75 //״̬ջ״̬֤ʧ +#define MINOR_AUTH_PLAN_DORMANT_FAIL 0x76 //֤ƻģʽ֤ʧ +#define MINOR_CARD_ENCRYPT_VERIFY_FAIL 0x77 //Уʧ +#define MINOR_SUBMARINEBACK_REPLY_FAIL 0x78 //DZطӦʧ +#define MINOR_DOOR_OPEN_OR_DORMANT_OPEN_FAIL 0x82 //ųջʱŰťʧ +#define MINOR_HEART_BEAT 0x83 //¼ +#define MINOR_DOOR_OPEN_OR_DORMANT_LINKAGE_OPEN_FAIL 0x84 //ųջʱʧ +#define MINOR_TRAILING 0x85 //βͨ +#define MINOR_REVERSE_ACCESS 0x86 // +#define MINOR_FORCE_ACCESS 0x87 //ײ +#define MINOR_CLIMBING_OVER_GATE 0x88 //Խ +#define MINOR_PASSING_TIMEOUT 0x89 //ͨгʱ +#define MINOR_INTRUSION_ALARM 0x8a //󴳱 +#define MINOR_FREE_GATE_PASS_NOT_AUTH 0x8b //բͨʱδ֤ͨ +#define MINOR_DROP_ARM_BLOCK 0x8c //ڱ۱赲 +#define MINOR_DROP_ARM_BLOCK_RESUME 0x8d //ڱ赲 +#define MINOR_LOCAL_FACE_MODELING_FAIL 0x8e //豸ģʧ +#define MINOR_STAY_EVENT 0x8f //¼ +#define MINOR_CERTIFICATE_ALLOWLIST_PASS 0x90 //Ȩ֤ͨ +#define MINOR_CERTIFICATE_ALLOWLIST_FALL 0x91 //Ȩ֤ʧ +#define MINOR_FACE_COLLECTION 0x92 //ɼ¼֤Զ̺ʱϱ +#define MINOR_CARD_COLLECTION 0x93 //ɼ¼֤Զ̺ʱϱ +#define MINOR_PSW_ERROR_OVER_TIMES 0x94 //֤ʧܳ +#define MINOR_ID_CARD_COLLECTION 0x95 //֤ɼ¼֤Զ̺ʱϱ +#define MINOR_PSW_VERIFY_FAIL 0x96 //֤ʧ +#define MINOR_PASSWORD_MISMATCH 0x97 //벻ƥ +#define MINOR_EMPLOYEE_NO_NOT_EXIST 0x98 //Ų +#define MINOR_COMBINED_VERIFY_PASS 0x99 //֤ͨ +#define MINOR_COMBINED_VERIFY_TIMEOUT 0x9a //֤ʱ +#define MINOR_VERIFY_MODE_MISMATCH 0x9b //֤ʽƥ +#define MINOR_ORCODE_VERIFY_PASS 0x9c //ά֤ͨ +#define MINOR_ORCODE_VERIFY_FAIL 0x9d //ά֤ʧ +#define MINOR_HOUSEHOLDER_AUTHORIZE_PASS 0x9e //Ȩ֤ͨ +#define MINOR_BLUETOOTH_VERIFY_PASS 0x9f //֤ͨ +#define MINOR_BLUETOOTH_VERIFY_FAIL 0xa0 //֤ʧ + +#define MINOR_PASSPORT_VERIFY_FAIL 0xa1 //ϢУʧ +#define MINOR_INFORMAL_M1_CARD_VERIFY_FAIL 0xa2 //M1֤ʧ +#define MINOR_CPU_CARD_ENCRYPT_VERIFY_FAIL 0xa3 //CPUУʧ +#define MINOR_NFC_DISABLE_VERIFY_FAIL 0xa4 //NFCܹر֤ʧ + +#define MINOR_LORA_MODULE_ONLINE 0xa5 //LoRaģ +#define MINOR_LORA_MODULE_OFFLINE 0xa6 //LoRaģ +#define MINOR_MQTT_STATUS 0xa7 //Mqtt״̬ + +#define MINOR_EM_CARD_RECOGNIZE_NOT_ENABLED 0xa8 //EMʶδ +#define MINOR_M1_CARD_RECOGNIZE_NOT_ENABLED 0xa9 //M1ʶδ +#define MINOR_CPU_CARD_RECOGNIZE_NOT_ENABLED 0xaa //CPUʶδ +#define MINOR_ID_CARD_RECOGNIZE_NOT_ENABLED 0xab //֤ʶδ +#define MINOR_CARD_SET_SECRET_KEY_FAIL 0xac //װԿʧ +#define MINOR_LOCAL_UPGRADE_FAIL 0xad /* ʧ */ +#define MINOR_REMOTE_UPGRADE_FAIL 0xae /* Զʧ */ +#define MINOR_REMOTE_EXTEND_MODULE_UPGRADE_SUCC 0xaf /*Զչģɹ*/ +#define MINOR_REMOTE_EXTEND_MODULE_UPGRADE_FAIL 0xb0 /*Զչģʧ*/ +#define MINOR_REMOTE_FINGER_PRINT_MODULE_UPGRADE_SUCC 0xb1 /*Զָģɹ*/ +#define MINOR_REMOTE_FINGER_PRINT_MODULE_UPGRADE_FAIL 0xb2 /*Զָģʧ*/ +#define MINOR_DYNAMICCODE_VERIFY_PASS 0xb3 // ̬֤֤ͨ +#define MINOR_DYNAMICCODE_VERIFY_FAIL 0xb4 // ̬֤֤ʧ +#define MINOR_PASSWD_VERIFY_PASS 0xb5 //֤ͨ +#define MINOR_COMSUME_TIMEOUT 0xb6 //ѳʱ +#define MINOR_REFUND_TIMEOUT 0xb7 //ʱ +#define MINOR_COMSUME_AMOUNT_OVERLIMIT 0xb8 //ѽֵ +#define MINOR_COMSUME_TIMES_OVERLIMIT 0xb9 //Ѵ +#define MINOR_USER_COMSUME_ENSURE_TIMEOUT 0xba //ûȷϳʱ +#define MINOR_BLOCKLIST_REACH_THRESHOLD 0xbb //ֹﵽֵ +#define MINOR_DESFIRE_CARD_ENCRYPT_VERIFY_FAIL 0xbc //DesfireУʧ +#define MINOR_DESFIRE_CARD_RECOGNIZE_NOT_ENABLED 0xbd //Desfireʶδ +#define MINOR_IRIS_VERIFY_PASS 0xbe //Ĥ֤ͨ +#define MINOR_IRIS_VERIFY_FAIL 0xbf //Ĥ֤ʧ +#define MINOR_IRIS_BIOASSAY_FAIL 0xc0 //Ĥʧ +#define MINOR_FULL_STAFF 0xc1 //Ա¼Ա90%ʱ +#define MINOR_ATTENDANCE_RECORD_EXCEED_THRESHOLD 0xc2 //ؿڼ¼õֵ +#define MINOR_DYNAMICCODE_VERIFY_INVALID 0xc3 // ̬֤֤ +#define MINOR_MEETING_NO_SIGNIN 0xc4 //δǩ +#define MINOR_MEETING_SIGNIN 0xc5 //ǩ +#define MINOR_MEETING_LATE 0xc6 //ٵ + +#define MINOR_INTERLOCK_SERVER_FAILED_RESPONSE 0xc9 //ŻӦʧ +#define MINOR_FINGERPRINT_DISENABELD_VERIFY_FAIL 0xca //ָʶδʹ֤ʧ +#define MINOR_FACE_DISENABELD_VERIFY_FAIL 0xcb //ʶδʹ֤ʧ +#define MINOR_MONITOR_OPEN_DOOR 0xcc // +#define MINOR_READER_FACTORY_RESET 0xcd //ָ +#define MINOR_READER_ID_CONFLICT 0xce //IDͻ +#define MINOR_FELICA_CARD_RECOGNIZE_NOT_ENABLED 0xcf //Felicaʶδ +#define MINOR_PROPERTY_EXCEPTION_VERIFY_FAIL 0xd0 //쳣֤ʧܣδ֣ȫñ쳣쳣 +#define MINOR_MEETING_NO_PERSON 0xd1 //ǻԱģʽ£״̬ǻԱǩϱ¼ +#define MINOR_MEETING_NOT_START 0xd2 //δʼ״̬Աǩ +#define MINOR_MEETING_SIGNEDIN 0xd3 //ǩǩԱظǩ +#define MINOR_AUTHENTICATION_TIMES_REACHED 0xd4 //Ա֤Ȩ޼ƻĵǰʱڣﵽ֤ƣ +#define MINOR_FACE_MODEL_FAIL_BY_UPGRADE 0xd5 //ģʧ¼ + +#define MINOR_UNCLOCK_RECORD 0xd6 //豸¼¼ϱ +#define MINOR_DOOR_NOT_OPEN 0xd7 //δԽ豸 +#define MINOR_DOOR_UNCLOSED 0xd8 //δرԽ豸 +#define MINOR_ORCODE_KEY_VERIFY_FAIL 0xd9 //άԿ֤ʧ +#define MINOR_PERSON_PASS_THROUGH 0xda //Աͨ¼ + +#define MINOR_EVENT_CUSTOM1 0x500 //ŽԶ¼1 +#define MINOR_EVENT_CUSTOM2 0x501 //ŽԶ¼2 +#define MINOR_EVENT_CUSTOM3 0x502 //ŽԶ¼3 +#define MINOR_EVENT_CUSTOM4 0x503 //ŽԶ¼4 +#define MINOR_EVENT_CUSTOM5 0x504 //ŽԶ¼5 +#define MINOR_EVENT_CUSTOM6 0x505 //ŽԶ¼6 +#define MINOR_EVENT_CUSTOM7 0x506 //ŽԶ¼7 +#define MINOR_EVENT_CUSTOM8 0x507 //ŽԶ¼8 +#define MINOR_EVENT_CUSTOM9 0x508 //ŽԶ¼9 +#define MINOR_EVENT_CUSTOM10 0x509 //ŽԶ¼10 +#define MINOR_EVENT_CUSTOM11 0x50a //ŽԶ¼11 +#define MINOR_EVENT_CUSTOM12 0x50b //ŽԶ¼12 +#define MINOR_EVENT_CUSTOM13 0x50c //ŽԶ¼13 +#define MINOR_EVENT_CUSTOM14 0x50d //ŽԶ¼14 +#define MINOR_EVENT_CUSTOM15 0x50e //ŽԶ¼15 +#define MINOR_EVENT_CUSTOM16 0x50f //ŽԶ¼16 +#define MINOR_EVENT_CUSTOM17 0x510 //ŽԶ¼17 +#define MINOR_EVENT_CUSTOM18 0x511 //ŽԶ¼18 +#define MINOR_EVENT_CUSTOM19 0x512 //ŽԶ¼19 +#define MINOR_EVENT_CUSTOM20 0x513 //ŽԶ¼20 +#define MINOR_EVENT_CUSTOM21 0x514 //ŽԶ¼21 +#define MINOR_EVENT_CUSTOM22 0x515 //ŽԶ¼22 +#define MINOR_EVENT_CUSTOM23 0x516 //ŽԶ¼23 +#define MINOR_EVENT_CUSTOM24 0x517 //ŽԶ¼24 +#define MINOR_EVENT_CUSTOM25 0x518 //ŽԶ¼25 +#define MINOR_EVENT_CUSTOM26 0x519 //ŽԶ¼26 +#define MINOR_EVENT_CUSTOM27 0x51a //ŽԶ¼27 +#define MINOR_EVENT_CUSTOM28 0x51b //ŽԶ¼28 +#define MINOR_EVENT_CUSTOM29 0x51c //ŽԶ¼29 +#define MINOR_EVENT_CUSTOM30 0x51d //ŽԶ¼30 +#define MINOR_EVENT_CUSTOM31 0x51e //ŽԶ¼31 +#define MINOR_EVENT_CUSTOM32 0x51f //ŽԶ¼32 +#define MINOR_EVENT_CUSTOM33 0x520 //ŽԶ¼33 +#define MINOR_EVENT_CUSTOM34 0x521 //ŽԶ¼34 +#define MINOR_EVENT_CUSTOM35 0x522 //ŽԶ¼35 +#define MINOR_EVENT_CUSTOM36 0x523 //ŽԶ¼36 +#define MINOR_EVENT_CUSTOM37 0x524 //ŽԶ¼37 +#define MINOR_EVENT_CUSTOM38 0x525 //ŽԶ¼38 +#define MINOR_EVENT_CUSTOM39 0x526 //ŽԶ¼39 +#define MINOR_EVENT_CUSTOM40 0x527 //ŽԶ¼40 +#define MINOR_EVENT_CUSTOM41 0x528 //ŽԶ¼41 +#define MINOR_EVENT_CUSTOM42 0x529 //ŽԶ¼42 +#define MINOR_EVENT_CUSTOM43 0x52a //ŽԶ¼43 +#define MINOR_EVENT_CUSTOM44 0x52b //ŽԶ¼44 +#define MINOR_EVENT_CUSTOM45 0x52c //ŽԶ¼45 +#define MINOR_EVENT_CUSTOM46 0x52d //ŽԶ¼46 +#define MINOR_EVENT_CUSTOM47 0x52e //ŽԶ¼47 +#define MINOR_EVENT_CUSTOM48 0x52f //ŽԶ¼48 +#define MINOR_EVENT_CUSTOM49 0x530 //ŽԶ¼49 +#define MINOR_EVENT_CUSTOM50 0x531 //ŽԶ¼50 +#define MINOR_EVENT_CUSTOM51 0x532 //ŽԶ¼51 +#define MINOR_EVENT_CUSTOM52 0x533 //ŽԶ¼52 +#define MINOR_EVENT_CUSTOM53 0x534 //ŽԶ¼53 +#define MINOR_EVENT_CUSTOM54 0x535 //ŽԶ¼54 +#define MINOR_EVENT_CUSTOM55 0x536 //ŽԶ¼55 +#define MINOR_EVENT_CUSTOM56 0x537 //ŽԶ¼56 +#define MINOR_EVENT_CUSTOM57 0x538 //ŽԶ¼57 +#define MINOR_EVENT_CUSTOM58 0x539 //ŽԶ¼58 +#define MINOR_EVENT_CUSTOM59 0x53a //ŽԶ¼59 +#define MINOR_EVENT_CUSTOM60 0x53b //ŽԶ¼60 +#define MINOR_EVENT_CUSTOM61 0x53c //ŽԶ¼61 +#define MINOR_EVENT_CUSTOM62 0x53d //ŽԶ¼62 +#define MINOR_EVENT_CUSTOM63 0x53e //ŽԶ¼63 +#define MINOR_EVENT_CUSTOM64 0x53f //ŽԶ¼64 +#define MINOR_ESD_OK 0x540 //ESDϸ +#define MINOR_ESD_LINKAGE_DISENABLE 0x541 //ESDϸ񣬲 +#define MINOR_ESD_LINKAGE_ENABLE 0x542 //ESDϸ񣬿 +#define MINOR_ESD_OVERTIME 0x543 //ESDⳬʱ + + +#define MINOR_LOCK_FINGER_OPEN_DOOR 0x600 //ָƿ +#define MINOR_LOCK_PASSWORD_OPEN_DOOR 0x601 //뿪 +#define MINOR_LOCK_CARD_OPEN_DOOR 0x602 //ˢ +#define MINOR_LOCK_CENTER_OPEN_DOOR 0x603 //Ŀ +#define MINOR_LOCK_APP_OPEN_DOOR 0x604 //APP +#define MINOR_LOCK_KEY_OPEN_DOOR 0x605 //Կ׿ +#define MINOR_LOCK_REMOTE_DEVICE_OPEN_DOOR 0x606 //ң +#define MINOR_LOCK_TMP_PASSWORD_OPEN_DOOR 0x607 //ʱ뿪 +#define MINOR_LOCK_BLUETOOTH_OPEN_DOOR 0x608 // +#define MINOR_LOCK_MULTI_OPEN_DOOR 0x609 //ؿ + + +#define MINOR_VP_ANTI_SPOOFING_FAIL 0x700 //ƻʧ +#define MINOR_VP_VERIFY_FAIL 0x701 //֤ʧ + + +//2018-04-23 ͨ¼־ +#define MINOR_ALARMHOST_SCHOOLTIME_IRGI_B 0x1001 //BУʱ +#define MINOR_ALARMHOST_SCHOOLTIME_SDK 0x1002 //SDKУʱ +#define MINOR_ALARMHOST_SCHOOLTIME_SELFTEST 0x1003 //ԼУʱ +#define MINOR_ALARMHOST_SUBSYSTEM_ABNORMALINSERT 0x1004 //Ӱ +#define MINOR_ALARMHOST_SUBSYSTEM_ABNORMALPULLOUT 0x1005 //Ӱγ + +#define MINOR_ALARMHOST_AUTO_ARM 0x1006 //Զ +#define MINOR_ALARMHOST_AUTO_DISARM 0x1007 //Զ +#define MINOR_ALARMHOST_TIME_TIGGER_ON 0x1008 //ʱ +#define MINOR_ALARMHOST_TIME_TIGGER_OFF 0x1009 //ʱرմ +#define MINOR_ALARMHOST_AUTO_ARM_FAILD 0x100a //Զʧ +#define MINOR_ALARMHOST_AUTO_DISARM_FAILD 0x100b //Զʧ +#define MINOR_ALARMHOST_TIME_TIGGER_ON_FAILD 0x100c //ʱʧ +#define MINOR_ALARMHOST_TIME_TIGGER_OFF_FAILD 0x100d //ʱرմʧ +#define MINOR_ALARMHOST_MANDATORY_ALARM 0x100e //ǿƲ +#define MINOR_ALARMHOST_KEYPAD_LOCKED 0x100f // +#define MINOR_ALARMHOST_USB_INSERT 0x1010 //USB +#define MINOR_ALARMHOST_USB_PULLOUT 0x1011 //USBγ +#define MINOR_ALARMHOST_4G_MODULS_ONLINE 0x1012 //4Gģ +#define MINOR_ALARMHOST_4G_MODULS_OFFLINE 0x1013 //4Gģ + +#define MINOR_EZVIZ_CLOUD_ONLINE 0x1014 //өʯ +#define MINOR_EZVIZ_CLOUD_OFFLINE 0x1015 //өʯ + +#define MINOR_SIPUA_GRID_ONLINE 0x1016 //B +#define MINOR_SIPUA_GRID_OFFLINE 0x1017 //B + +#define MINOR_INTERNET_ACCESS_CONNECTED 0x1018 // +#define MINOR_INTERNET_ACCESS_BREAK 0x1019 //ڶϿ + +#define MINOR_WIRELESS_CONNECTED 0x101a // +#define MINOR_WIRELESS_BREAK 0x101b //߶Ͽ +#define MINOR_PORT_LINK_DOWN 0x101c //˿down +#define MINOR_PORT_LINK_UP 0x101d //˿up +#define MINOR_POE_PORT_POWER_ON 0x101e //POE˿power on +#define MINOR_POE_PORT_POWER_OFF 0x101f //POE˿power off +#define MINOR_POE_TOTAL_POWER_MAX 0x1020 //POEܹʴﵽpoe-max +#define MINNOR_POE_TOTAL_POWER_RESUME 0x1021 //POEܹʻָ +#define MINNOR_CARGO_ITEMS 0x1022 //Ʒȡ + + +typedef enum tagALARMHOST_MAJOR_TYPE +{ + MAJOR_ALARMHOST_ALARM = 1, + MAJOR_ALARMHOST_EXCEPTION, + MAJOR_ALARMHOST_OPERATION, + MAJ0R_ALARMHOST_EVENT +}ALARMHOST_MAJOR_TYPE; + +typedef enum tagALARMHOST_MINOR_TYPE +{ + // + MINOR_SHORT_CIRCUIT =0x01, // · + MINOR_BROKEN_CIRCUIT, // · + MINOR_ALARM_RESET, // λ + MINOR_ALARM_NORMAL, // ָ + MINOR_PASSWORD_ERROR, // 3 + MINOR_ID_CARD_ILLEGALLY, // ǷӦID + MINOR_KEYPAD_REMOVE, // ̷ + MINOR_KEYPAD_REMOVE_RESTORE, // ̷λ + MINOR_DEV_REMOVE, // 豸 + MINOR_DEV_REMOVE_RESTORE, // 豸λ + MINOR_BELOW_ALARM_LIMIT1, // ģڱ1 + MINOR_BELOW_ALARM_LIMIT2, // ģڱ2 + MINOR_BELOW_ALARM_LIMIT3, // ģڱ3 + MINOR_BELOW_ALARM_LIMIT4, // ģڱ4 + MINOR_ABOVE_ALARM_LIMIT1, // ģڱ1 + MINOR_ABOVE_ALARM_LIMIT2, // ģڱ2 + MINOR_ABOVE_ALARM_LIMIT3, // ģڱ3 + MINOR_ABOVE_ALARM_LIMIT4, // ģڱ4 + MINOR_URGENCYBTN_ON, // ť + MINOR_URGENCYBTN_OFF, // ťλ + MINOR_VIRTUAL_DEFENCE_SUSPECT, //˾ + MINOR_VIRTUAL_DEFENCE_FIRE, // + MINOR_VIRTUAL_DEFENCE_URGENT, // + MINOR_ALARMHOST_MOTDET_START, //ƶⱨʼ + MINOR_ALARMHOST_MOTDET_STOP, //ƶⱨ + MINOR_ALARMHOST_HIDE_ALARM_START, //ڵʼ + MINOR_ALARMHOST_HIDE_ALARM_STOP, //ڵ + MINOR_ALARMHOST_UPS_ALARM, //UPS + MINOR_ALARMHOST_ELECTRICITY_METER_ALARM, // + MINOR_ALARMHOST_SWITCH_POWER_ALARM, //صԴ + MINOR_ALARMHOST_GAS_DETECT_SYS_ALARM, //ϵͳ + MINOR_ALARMHOST_TRANSFORMER_TEMPRATURE_ALARM, //Ա + MINOR_ALARMHOST_TEMP_HUMI_ALARM, //ʪȴ + MINOR_ALARMHOST_UPS_ALARM_RESTORE, //UPSָ + MINOR_ALARMHOST_ELECTRICITY_METER_ALARM_RESTORE, //ָ + MINOR_ALARMHOST_SWITCH_POWER_ALARM_RESTORE, //صԴָ + MINOR_ALARMHOST_GAS_DETECT_SYS_ALARM_RESTORE, //ϵͳָ + MINOR_ALARMHOST_TRANSFORMER_TEMPRATURE_ALARM_RESTORE, //Աָ + MINOR_ALARMHOST_TEMP_HUMI_ALARM_RESTORE, //ʪȴָ + MINOR_ALARMHOST_WATER_LEVEL_SENSOR_ALARM, //ˮλ + MINOR_ALARMHOST_WATER_LEVEL_SENSOR_ALARM_RESTORE, //ˮλָ + MINOR_ALARMHOST_DUST_NOISE_ALARM, //ﳾ + MINOR_ALARMHOST_DUST_NOISE_ALARM_RESTORE, //ﳾָ + MINOR_ALARMHOST_ENVIRONMENTAL_LOGGER_ALARM, //ɼDZ + MINOR_ALARMHOST_ENVIRONMENTAL_LOGGER_ALARM_RESTORE, //ɼDZָ + + MINOR_ALARMHOST_TRIGGER_TAMPER, //̽ + MINOR_ALARMHOST_TRIGGER_TAMPER_RESTORE, //ָ̽ + MINOR_ALARMHOST_EMERGENCY_CALL_HELP_ALARM, // + MINOR_ALARMHOST_EMERGENCY_CALL_HELP_ALARM_RESTORE, //ָ + MINOR_ALARMHOST_CONSULTING_ALARM, //ҵѯ + MINOR_ALARMHOST_CONSULTING_ALARM_RESTORE, //ҵѯָ + MINOR_ZONE_MODULE_REMOVE, // ģ + MINOR_ZONE_MODULE_RESET, // ģλ + + MINOR_ALARM_WIND_SPEED_ALARM, //ٴ澯 + MINOR_ALARM_WIND_SPEED_ALARM_RESTORE, //ٴ澯ָ + MINOR_ALARM_GENERATE_OUTPUT_ALARM, //ͨģ澯 + MINOR_ALARM_GENERATE_OUTPUT_RESTORE, //ͨģ澯ָ + MINOR_ALARM_SOAK_ALARM, //ˮ澯 + MINOR_ALARM_SOAK_ALARM_RESTORE, //ˮ澯ָ + MINOR_ALARM_SOLAR_POWER_ALARM, //̫ܴ澯 + MINOR_ALARM_SOLAR_POWER_ALARM_RESTORE, //̫ܴ澯ָ + MINOR_ALARM_SF6_ALARM, //SF6澯 + MINOR_ALARM_SF6_ALARM_RESTORE, //SF6澯ָ + MINOR_ALARM_WEIGHT_ALARM, //Ǹ澯 + MINOR_ALARM_WEIGHT_ALARM_RESTORE, //Ǹ澯ָ + MINOR_ALARM_WEATHER_ALARM, //ɼϵͳ澯 + MINOR_ALARM_WEATHER_ALARM_RESTORE, //ɼϵͳ澯ָ + MINOR_ALARM_FUEL_GAS_ALARM, //ȼʾϵͳ澯 + MINOR_ALARM_FUEL_GAS_ALARM_RESTORE, //ȼʾϵͳ澯ָ + MINOR_ALARM_FIRE_ALARM, //ֱϵͳ澯 + MINOR_ALARM_FIRE_ALARM_RESTORE, //ֱϵͳ澯ָ + + MINOR_WIRELESS_OUTPUT_MODULE_REMOVE, // ģ + MINOR_WIRELESS_OUTPUT_MODULE_RESET, // ģλ + MINOR_WIRELESS_REPEATER_MODULE_REMOVE, // м + MINOR_WIRELESS_REPEATER_MODULE_RESET, // мλ + MINOR_WIRELESS_SIREN_MODULE_REMOVE, // ߾ŷ + MINOR_WIRELESS_SIREN_MODULE_RESET, // ߾ŷλ + MINOR_SOUND_INTENSITY_RISE, // ǿ + MINOR_SOUND_INTENSITY_RISE_RESET, // ǿָ + MINOR_SOUND_INTENSITY_DROP, // ǿ + MINOR_SOUND_INTENSITY_DROP_RESET, // ǿָ + MINOR_AUDIO_INPUT_EXCEPTION, // Ƶ쳣 + MINOR_AUDIO_INPUT_EXCEPTION_RESET, // Ƶ쳣ָ + MINOR_FACE_DETECTION_ALARM, // ⱨ + MINOR_FACE_DETECTION_ALARM_RESTORE, // ⱨָ + + // 쳣 + MINOR_POWER_ON = 0x01, // ϵ + MINOR_POWER_OFF, // + MINOR_WDT_RESET, // WDT λ + MINOR_LOW_BATTERY_VOLTAGE, // صѹ + MINOR_AC_LOSS, // ϵ + MINOR_AC_RESTORE, // ָ + MINOR_RTC_EXCEPTION, // RTCʵʱʱ쳣 + MINOR_NETWORK_CONNECT_FAILURE, // Ӷ + MINOR_NETWORK_CONNECT_RESTORE, // ӻָ + MINOR_TEL_LINE_CONNECT_FAILURE, // 绰Ӷ + MINOR_TEL_LINE_CONNECT_RESTORE, // 绰ӻָ + MINOR_EXPANDER_BUS_LOSS, // չģ + MINOR_EXPANDER_BUS_RESTORE, // չģ߻ָ + MINOR_KEYPAD_BUS_LOSS, // ģ + MINOR_KEYPAD_BUS_RESTORE, // ģ߻ָ + MINOR_SENSOR_FAILURE, // ģ + MINOR_SENSOR_RESTORE, // ģָ + MINOR_RS485_CONNECT_FAILURE, // RS485ͨӶ + MINOR_RS485_CONNECT_RESTORE, // RS485ͨӶϻָ + MINOR_BATTERT_VOLTAGE_RESTORE, // صѹָ + MINOR_WIRED_NETWORK_ABNORMAL, //쳣 + MINOR_WIRED_NETWORK_RESTORE, //ָ + MINOR_GPRS_ABNORMAL, //GPRSͨ쳣 + MINOR_GPRS_RESTORE, //GPRSָ + MINOR_3G_ABNORMAL, //3Gͨ쳣 + MINOR_3G_RESTORE, //3Gָ + MINOR_SIM_CARD_ABNORMAL, //SIM쳣 + MINOR_SIM_CARD_RESTORE, //SIMָ + MINOR_ALARMHOST_VI_LOST, // ƵźŶʧ + MINOR_ALARMHOST_ILLEGAL_ACCESS, // Ƿ + MINOR_ALARMHOST_HD_FULL, // Ӳ + MINOR_ALARMHOST_HD_ERROR, // Ӳ̴ + MINOR_ALARMHOST_DCD_LOST, // MODEM (ʹ) + MINOR_ALARMHOST_IP_CONFLICT, // IPַͻ + MINOR_ALARMHOST_NET_BROKEN, // Ͽ + MINOR_ALARMHOST_REC_ERROR, // ¼ + MINOR_ALARMHOST_VI_EXCEPTION, // Ƶ쳣(ֻģͨ) + MINOR_ALARMHOST_FORMAT_HDD_ERROR, //Զ̸ʽӲʧ + MINOR_ALARMHOST_USB_ERROR, //USBͨŹ + MINOR_ALARMHOST_USB_RESTORE, //USBͨŹϻָ + MINOR_ALARMHOST_PRINT_ERROR, //ӡ + MINOR_ALARMHOST_PRINT_RESTORE, //ӡϻָ + MINOR_SUBSYSTEM_COMMUNICATION_ERROR, //ӰͨѶ + MINOR_ALARMHOST_IPC_NO_LINK, /* IPCӶϿ */ + MINOR_ALARMHOST_IPC_IP_CONFLICT, /*ipc ip ַ ͻ*/ + MINOR_ALARMHOST_VI_MISMATCH, /*Ƶʽƥ*/ + MINOR_ALARMHOST_MCU_RESTART, //MCU + MINOR_ALARMHOST_GPRS_MODULE_FAULT, //GPRSģ + MINOR_ALARMHOST_TELEPHONE_MODULE_FAULT, //绰ģ + MINOR_ALARMHOST_WIFI_ABNORMAL, //WIFIͨ쳣 + MINOR_ALARMHOST_WIFI_RESTORE, //WIFIָ + MINOR_ALARMHOST_RF_ABNORMAL, //RFź쳣 + MINOR_ALARMHOST_RF_RESTORE, //RFźŻָ + MINOR_ALARMHOST_DETECTOR_ONLINE, //̽ + MINOR_ALARMHOST_DETECTOR_OFFLINE, //̽ + MINOR_ALARMHOST_DETECTOR_BATTERY_NORMAL, //̽ + MINOR_ALARMHOST_DETECTOR_BATTERY_LOW, //̽Ƿѹ + MINOR_ALARMHOST_DATA_TRAFFIC_OVERFLOW, // + MINOR_ZONE_MODULE_LOSS, // ģ + MINOR_ZONE_MODULE_RESTORE, // ģ߻ָ + MINOR_ALARMHOST_WIRELESS_OUTPUT_LOSS, //ģ + MINOR_ALARMHOST_WIRELESS_OUTPUT_RESTORE, //ģָ + MINOR_ALARMHOST_WIRELESS_REPEATER_LOSS, //м + MINOR_ALARMHOST_WIRELESS_REPEATER_RESTORE, //мָ + MINOR_TRIGGER_MODULE_LOSS, // ģ + MINOR_TRIGGER_MODULE_RESTORE, // ģ߻ָ + MINOR_WIRELESS_SIREN_LOSS, // ߾ + MINOR_WIRELESS_SIREN_RESTORE, // ߾Żָ + MINOR_ALARMHOST_WIRELESS_RS485_LOSS, //RS485ģ + MINOR_ALARMHOST_WIRELESS_RS485_RESTORE, //RS485ģָ + + // + MINOR_GUARD = 0x01, // ͨ + MINOR_UNGUARD, // ͨ + MINOR_BYPASS, // · + MINOR_DURESS_ACCESS, // Ю + MINOR_ALARMHOST_LOCAL_REBOOT, // + MINOR_ALARMHOST_REMOTE_REBOOT, // Զ + MINOR_ALARMHOST_LOCAL_UPGRADE, // + MINOR_ALARMHOST_REMOTE_UPGRADE, // Զ + MINOR_RECOVERY_DEFAULT_PARAM, // ָĬϲ + MINOR_ALARM_OUTPUT, // Ʊ + MINOR_ACCESS_OPEN, // Ž + MINOR_ACCESS_CLOSE, // Ž + MINOR_SIREN_OPEN, // ƾſ + MINOR_SIREN_CLOSE, // ƾŹ + MINOR_MOD_ZONE_CONFIG, // ޸ķ + MINOR_MOD_ALARMOUT_CONIFG, // Ʊ + MINOR_MOD_ANALOG_CONFIG, // ޸ģ + MINOR_RS485_CONFIG, // ޸485ͨ + MINOR_PHONE_CONFIG, // ޸IJ + MINOR_ADD_ADMIN, // ӹԱ + MINOR_MOD_ADMIN_PARAM, // ޸ĹԱ + MINOR_DEL_ADMIN, // ɾԱ + MINOR_ADD_NETUSER, // Ӻ˲Ա + MINOR_MOD_NETUSER_PARAM, // ޸ĺ˲Ա + MINOR_DEL_NETUSER, // ɾ˲Ա + MINOR_ADD_OPERATORUSER, // ǰ˲Ա + MINOR_MOD_OPERATORUSER_PW, // ޸ǰ˲Ա + MINOR_DEL_OPERATORUSER, // ɾǰ˲Ա + MINOR_ADD_KEYPADUSER, // Ӽ/û + MINOR_DEL_KEYPADUSER, // ɾ/û + MINOR_REMOTEUSER_LOGIN, // Զû½ + MINOR_REMOTEUSER_LOGOUT, // Զûע + MINOR_REMOTE_GUARD, // Զ̲ + MINOR_REMOTE_UNGUARD, // Զ̳ + MINOR_MOD_HOST_CONFIG, // ޸ + MINOR_RESTORE_BYPASS, // ·ָ + MINOR_ALARMOUT_OPEN, // + MINOR_ALARMOUT_CLOSE, // ر + MINOR_MOD_SUBSYSTEM_PARAM, // ޸ϵͳ + MINOR_GROUP_BYPASS, // · + MINOR_RESTORE_GROUP_BYPASS, // ·ָ + MINOR_MOD_GRPS_PARAM, // ޸GPRS + MINOR_MOD_NET_REPORT_PARAM, // ޸ϱ + MINOR_MOD_REPORT_MOD, // ޸ϴʽ + MINOR_MOD_GATEWAY_PARAM, // ޸Ž + MINOR_ALARMHOST_REMOTE_START_REC, // Զ̿ʼ¼ + MINOR_ALARMHOST_REMOTE_STOP_REC, // Զֹͣ¼ + MINOR_ALARMHOST_START_TRANS_CHAN, // ʼ͸ + MINOR_ALARMHOST_STOP_TRANS_CHAN, // ֹͣ͸ + MINOR_ALARMHOST_START_VT, // ʼԽ + MINOR_ALARMHOST_STOP_VTM, // ֹͣԽ + MINOR_ALARMHOST_REMOTE_PLAYBYFILE, // Զ̰ļط + MINOR_ALARMHOST_REMOTE_PLAYBYTIME, // Զ̰ʱط + MINOR_ALARMHOST_REMOTE_PTZCTRL, // Զ̨ + MINOR_ALARMHOST_REMOTE_FORMAT_HDD, // Զ̸ʽӲ + MINOR_ALARMHOST_REMOTE_LOCKFILE, // Զļ + MINOR_ALARMHOST_REMOTE_UNLOCKFILE, // Զ̽ļ + MINOR_ALARMHOST_REMOTE_CFGFILE_OUTPUT, // Զ̵ļ + MINOR_ALARMHOST_REMOTE_CFGFILE_INTPUT, // Զ̵ļ + MINOR_ALARMHOST_REMOTE_RECFILE_OUTPUT, // Զ̵¼ļ + + MINOR_ALARMHOST_STAY_ARM, //ز + MINOR_ALARMHOST_QUICK_ARM, //ʱ + MINOR_ALARMHOST_AUTOMATIC_ARM, //Զ + MINOR_ALARMHOST_AUTOMATIC_DISARM, //Զ + MINOR_ALARMHOST_KEYSWITCH_ARM, //Կ׷ + MINOR_ALARMHOST_KEYSWITCH_DISARM, //Կ׷ + MINOR_ALARMHOST_CLEAR_ALARM, // + MINOR_ALARMHOST_MOD_FAULT_CFG, //޸ϵͳ + MINOR_ALARMHOST_MOD_EVENT_TRIGGER_ALARMOUT_CFG, //޸¼ + MINOR_ALARMHOST_SEARCH_EXTERNAL_MODULE, //ģ + MINOR_ALARMHOST_REGISTER_EXTERNAL_MODULE, //עģ + MINOR_ALARMHOST_CLOSE_KEYBOARD_ALARM, //رռ̱ʾ + MINOR_ALARMHOST_MOD_3G_PARAM, //޸3G + MINOR_ALARMHOST_MOD_PRINT_PARAM, //޸Ĵӡ + MINOR_SD_CARD_FORMAT, //SDʽ + MINOR_SUBSYSTEM_UPGRADE, //Ӱ̼ + + MINOR_ALARMHOST_PLAN_ARM_CFG, //ƻ + MINOR_ALARMHOST_PHONE_ARM, //ֻ + MINOR_ALARMHOST_PHONE_STAY_ARM, //ֻز + MINOR_ALARMHOST_PHONE_QUICK_ARM,//ֻʱ + MINOR_ALARMHOST_PHONE_DISARM, //ֻ + MINOR_ALARMHOST_PHONE_CLEAR_ALARM, //ֻ + MINOR_ALARMHOST_ALLOWLIST_CFG, // + MINOR_ALARMHOST_TIME_TRIGGER_CFG, //ʱش + MINOR_ALARMHOST_CAPTRUE_CFG, //ץͼ + MINOR_ALARMHOST_TAMPER_CFG, // + + MINOR_ALARMHOST_REMOTE_KEYPAD_UPGRADE, //Զ + MINOR_ALARMHOST_ONETOUCH_AWAY_ARMING, //һ + MINOR_ALARMHOST_ONETOUCH_STAY_ARMING, //һز + MINOR_ALARMHOST_SINGLE_PARTITION_ARMING_OR_DISARMING, // + MINOR_ALARMHOST_CARD_CONFIGURATION, // + MINOR_ALARMHOST_CARD_ARMING_OR_DISARMING, //ˢ + MINOR_ALARMHOST_EXPENDING_NETCENTER_CONFIGURATION, //չ + MINOR_ALARMHOST_NETCARD_CONFIGURATION, // + MINOR_ALARMHOST_DDNS_CONFIGURATION, //DDNS + MINOR_ALARMHOST_RS485BUS_CONFIGURATION, // 485߲ + MINOR_ALARMHOST_RS485BUS_RE_REGISTRATION, //485ע + + MINOR_ALARMHOST_REMOTE_OPEN_ELECTRIC_LOCK, //Զ̴򿪵 + MINOR_ALARMHOST_REMOTE_CLOSE_ELECTRIC_LOCK, //Զ̹رյ + MINOR_ALARMHOST_LOCAL_OPEN_ELECTRIC_LOCK, //ش򿪵 + MINOR_ALARMHOST_LOCAL_CLOSE_ELECTRIC_LOCK, //عرյ + MINOR_ALARMHOST_OPEN_ALARM_LAMP, //򿪾(Զ) + MINOR_ALARMHOST_CLOSE_ALARM_LAMP, //رվ(Զ) + + + MINOR_ALARMHOST_TEMPORARY_PASSWORD, //ʱ¼ + MINOR_ALARMHOST_ONEKEY_AWAY_ARM, //һ + MINOR_ALARMHOST_ONEKEY_STAY_ARM, //һز + MINOR_ALARMHOST_SINGLE_ZONE_ARM, // + MINOR_ALARMHOST_SINGLE_ZONE_DISARM, // + MINOR_ALARMHOST_HIDDNS_CONFIG, // HIDDNS + MINOR_ALARMHOST_REMOTE_KEYBOARD_UPDATA, //Զ̼־ + MINOR_ALARMHOST_ZONE_ADD_DETECTOR, //̽ + MINOR_ALARMHOST_ZONE_DELETE_DETECTOR, //ɾ̽ + MINOR_ALARMHOST_QUERY_DETECTOR_SIGNAL, //ѯ̽źǿ + MINOR_ALARMHOST_QUERY_DETECTOR_BATTERY, //ѯ̽ + MINOR_ALARMHOST_SET_DETECTOR_GUARD, //̽ + MINOR_ALARMHOST_SET_DETECTOR_UNGUARD, //̽ + MINOR_ALARMHOST_SET_WIFI_PARAMETER, //WIFIò + MINOR_ALARMHOST_OPEN_VOICE, // + MINOR_ALARMHOST_CLOSE_VOICE, //ر + MINOR_ALARMHOST_ENABLE_FUNCTION_KEY, //ùܼ + MINOR_ALARMHOST_DISABLE_FUNCTION_KEY, //رչܼ + MINOR_ALARMHOST_READ_CARD, //Ѳˢ + MINOR_ALARMHOST_START_BROADCAST, //㲥 + MINOR_ALARMHOST_STOP_BROADCAST, //ر㲥 + MINOR_ALARMHOST_REMOTE_ZONE_MODULE_UPGRADE, //Զģ + MINOR_ALARMHOST_NETWORK_MODULE_EXTEND, //ģ + MINOR_ALARMHOST_ADD_CONTROLLER, //ңû + MINOR_ALARMHOST_DELETE_CONTORLLER, //ɾңû + MINOR_ALARMHOST_REMOTE_NETWORKMODULE_UPGRADE, //Զģ + MINOR_ALARMHOST_WIRELESS_OUTPUT_ADD, //עģ + MINOR_ALARMHOST_WIRELESS_OUTPUT_DEL, //ɾģ + MINOR_ALARMHOST_WIRELESS_REPEATER_ADD, //עм + MINOR_ALARMHOST_WIRELESS_REPEATER_DEL, //ɾм + MINOR_ALARMHOST_PHONELIST_CFG, //绰 + MINOR_ALARMHOST_RF_SIGNAL_CHECK, // RFźŲѯ + MINOR_ALARMHOST_USB_UPGRADE, // USB + MINOR_ALARMHOST_DOOR_TIME_REMINDER_CFG,//ŴŶʱѲ + MINOR_ALARMHOST_WIRELESS_SIREN_ADD, //ע߾ + MINOR_ALARMHOST_WIRELESS_SIREN_DEL, //ɾ߾ + MINOR_ALARMHOST_OUT_SCALE_OPEN, //翪 + MINOR_ALARMHOST_OUT_SCALE_CLOSE, //ر + + MINOR_ALARMHOST_TIME_ZONE_CFG,//ʱ޸ + MINOR_ALARMHOST_NTP_START_AND_PARAMETERS_CFG,//NTP޸ + MINOR_ALARMHOST_DST_START_AND_PARAMETERS_CFG,//DST޸ + MINOR_ALARMHOST_DEVINFO_CFG,//豸Ϣ + MINOR_ALARMHOST_VIDEO_OVERLAP_CFG,//¼񸲸 + MINOR_ALARMHOST_SSH_CFG,//SSH + MINOR_ALARMHOST_PASSWORD_MANAGE_CFG,// + MINOR_ALARMHOST_RESTORE_DEFAULT_PARAMETERS,//ָĬϲ + MINOR_ALARMHOST_RESTORECOMPLETELY_DEFAULT_PARAMETERS,//ȫָĬϲ + MINOR_ALARMHOST_AUDIO_AUTO_DETECT_CFG,//Զ + MINOR_ALARMHOST_AUDIO_MANUAL_DETECT_CFG,//ֶ + MINOR_ALARMHOST_NET_PARAMETERS_CFG,// + MINOR_ALARMHOST_MTU_CFG,//MTU + MINOR_ALARMHOST_PORT_CFG,//˿ + MINOR_ALARMHOST_DEFAULT_ROUTER_CFG,//Ĭ· + MINOR_ALARMHOST_DNS_PARAMETERS_CFG,//DNS + MINOR_ALARMHOST_UNPNP_PARAMETERS_CFG,//UNPNP + MINOR_ALARMHOST_SIP_PARAMETERS_CFG,//SIP + MINOR_ALARMHOST_FLOW_LIMIT_CFG,//޶ + MINOR_ALARMHOST_APN_PARAMETERS_CFG,//APN + MINOR_ALARMHOST_MESSAGE_TELEPHONENO_CFG,//ŵ绰 + MINOR_ALARMHOST_EZVIZ_PARAMATERS_CFG,//өʯ + MINOR_ALARMHOST_ISUP_PARAMATERS_CFG,//ISUP + MINOR_ALARMHOST_SIP_SWITCH_CFG,//SIP׼Э˽Эл + MINOR_ALARMHOST_INFO_UPLOAD_TO_PLATFORM_CFG,//ϴƽ̨Ϣ + MINOR_ALARMHOST_ONVIF_CONTROL,//ONVIF(ر) + MINOR_ALARMHOST_ONVIF_USER_ADD,//onvifû + MINOR_ALARMHOST_ONVIF_USER_MOD,//onvifû޸ + MINOR_ALARMHOST_ONVIF_USER_DELETE,//onvifûɾ + MINOR_ALARMHOST_TIME_OF_BELLS_CFG,//ʱ + MINOR_ALARMHOST_CALL_WAITTIME_CFG,//еȴʱ + MINOR_ALARMHOST_PROMPT_PARAMATERS_CFG,//ʾ + MINOR_ALARMHOST_MUTEPLAN_PARAMATERS_CFG,//ƻ + MINOR_ALARMHOST_SD_PARTITION_CFG,//SD + MINOR_ALARMHOST_AUDIO_PARAMETERS_CFG,//Ƶ + MINOR_ALARMHOST_VOICETALK_AUDIO_ENCODING_CFG,//ԽƵ + MINOR_ALARMHOST_RECORD_PLAN_PARAMETERS_CFG,//¼ƻ + MINOR_ALARMHOST_RECORD_ADVANCE_PARAMETERS_CFG,//¼߼ + MINOR_ALARMHOST_PICTURE_PLAN_PARAMETERS_CFG,//ץͼƻ + MINOR_ALARMHOST_PICTURE_ADVANCE_PARAMETERS_CFG,//ץͼ߼ + MINOR_ALARMHOST_AUDIO_EXCEPTION_PARAMETERS_CFG,//Ƶ쳣 + MINOR_ALARMHOST_PATROL_CARD_CFG,//Ѳ + MINOR_ALARMHOST_VOICE_VOLUME_CFG,// + MINOR_ALARMHOST_VOICE_MODE_CFG,//ģʽã룬㲥ģʽ + MINOR_ALARMHOST_AUDIO_OR_MATERIALS_UPLOAD,//Ƶزļϴ + MINOR_ALARMHOST_AUDIO_OR_MATERIALS_DELETE,//Ƶزļɾ + MINOR_ALARMHOST_ALARM_LAMP_FLASH_TIME_CFG,//˸ʱ + MINOR_ALARMHOST_ALARM_LAMP_FLASH_PLAN_CFG,//ƻ˸ + MINOR_ALARMHOST_FRONT_END_VIDEO_PARAMETERS_CFG,//ǰƵ + MINOR_ALARMHOST_WDR_CFG,//̬ + MINOR_ALARMHOST_BPFRAME_CFG,//PN֡ + MINOR_ALARMHOST_PASSWORD_RESET_CFG,// + MINOR_ALARMHOST_ACCOUNT_LOCK,//˻ + MINOR_ALARMHOST_ACCOUNT_UNLOCK,//˻ + MINOR_ALARMHOST_START_LIVEVIEW_REMOTELY,//Զ̿Ԥ + MINOR_ALARMHOST_STOP_LIVEVIEW_REMOTELT,//Զ̹رԤ + MINOR_ALARMHOST_TELEPHONE_CENTER_SETTINGS,//绰IJ + MINOR_ALARMHOST_NATIONAL_STANDARD_CFG,// + MINOR_ALARMHOST_SUPPLEMENTLIGHT_CFG,// + MINOR_ALARMHOST_FACESNAP_CFG,//ץ + MINOR_ALARMHOST_PUBLISHMANAGE_CFG,// + MINOR_ALARMHOST_KEYDIAL_CFG,// + MINOR_ALARMHOST_VOICETALK_SILENT_CFG,//Խ + MINOR_ALARMHOST_START_VIDEO_PROTECT,//Ƶ + MINOR_ALARMHOST_START_AUDIO_PROTECT,//ü + MINOR_ALARMHOST_START_MANUAL_ANSWER,//ֶ + MINOR_ALARMHOST_START_LOG_SERVER,//ðȫ־ + MINOR_ALARMHOST_ADD_CARD,//ӿƬ + MINOR_ALARMHOST_DELETE_CARD,//ɾƬ + MINOR_ALARMHOST_MOTION_DETECTION_CFG,//ƶ + MINOR_ALARMHOST_VIDEO_BLOCK_CFG,//Ƶڵ + MINOR_ALARMHOST_FACE_DETECTION_CFG,// + MINOR_ALARMHOST_LOG_BACKUP,//־ + + + MINOR_ALARMHOST_LOCAL_SET_DEVICE_ACTIVE = 0xf0, //ؼ豸 + MINOR_ALARMHOST_REMOTE_SET_DEVICE_ACTIVE = 0xf1, //Զ̼豸 + MINOR_ALARMHOST_LOCAL_PARA_FACTORY_DEFAULT = 0xf2, //ػظ + MINOR_ALARMHOST_REMOTE_PARA_FACTORY_DEFAULT = 0xf3, //Զָ̻ + + MINOR_ADD_IPC = 0xf4, //IPC(IPC) + MINOR_MODIFY_IPC = 0xf5, //IPC޸ + MINOR_DELETE_IPC = 0xf6, //IPCɾ + MINOR_SYS_CHECK_START = 0xf7, //ϵͳ⿪ʼ + MINOR_SYS_CHECK_STOP = 0xf8, //ϵͳֹ + MINOR_SYS_CHECK_FINISH = 0xf9, //ϵͳ + MINOR_DEVICE_TAMPER_CFG = 0xfa, //豸 + MINOR_ALARMHOST_INDICATORLIGHT_CFG = 0xfb, //ָʾ + MINOR_ALARMHOST_WIRELESSBUTTON_CFG = 0xfc, //߰ť + MINOR_ALARMHOST_IRCUTFILTER_CFG = 0xfd, //ҹл + MINOR_ALARMHOST_KEYWORD_AUDIO_RECOGNITION_CFG = 0xfe, //ؼʶ + MINOR_ALARMHOST_DEVICE_POWER_MODE_SWITCH_CFG = 0xff, //豸ģʽл + + + // ¼ + MINOR_SCHOOLTIME_IRGI_B = 0x01, // BУʱ + MINOR_SCHOOLTIME_SDK, // SDKУʱ + MINOR_SCHOOLTIME_SELFTEST, // ʱԼУʱ + MINOR_SUBSYSTEM_ABNORMALINSERT, //Ӱ + MINOR_SUBSYSTEM_ABNORMALPULLOUT, //Ӱγ + + MINOR_AUTO_ARM, //Զ + MINOR_AUTO_DISARM, //Զ + MINOR_TIME_TIGGER_ON, //ʱ + MINOR_TIME_TIGGER_OFF, //ʱرմ + MINOR_AUTO_ARM_FAILD, //Զʧ + MINOR_AUTO_DISARM_FAILD, //Զʧ + MINOR_TIME_TIGGER_ON_FAILD, //ʱʧ + MINOR_TIME_TIGGER_OFF_FAILD, //ʱرմʧ + MINOR_MANDATORY_ALARM, //ǿƲ + MINOR_KEYPAD_LOCKED, // + MINOR_USB_INSERT, //USB + MINOR_USB_PULLOUT, //USBγ + MINOR_KEYPAD_UNLOCK, //̽ +}ALARMHOST_MINOR_TYPE; + + +//־ΪMAJOR_OPERATION=03ΪMINOR_LOCAL_CFG_PARM=0x52MINOR_REMOTE_GET_PARM=0x76 +//MINOR_REMOTE_CFG_PARM=0x77ʱdwParaType:Ч京£ +#define PARA_VIDEOOUT 0x1 +#define PARA_IMAGE 0x2 +#define PARA_ENCODE 0x4 +#define PARA_NETWORK 0x8 +#define PARA_ALARM 0x10 +#define PARA_EXCEPTION 0x20 +#define PARA_DECODER 0x40 /**/ +#define PARA_RS232 0x80 +#define PARA_PREVIEW 0x100 +#define PARA_SECURITY 0x200 +#define PARA_DATETIME 0x400 +#define PARA_FRAMETYPE 0x800 /*֡ʽ*/ +#define PARA_DETECTION 0x1000 // +#define PARA_VCA_RULE 0x1001 //Ϊ +#define PARA_VCA_CTRL 0x1002 //ܿϢ +#define PARA_VCA_PLATE 0x1003 // ʶ + +#define PARA_CODESPLITTER 0x2000 /**/ +//2010-01-22 Ƶۺƽ̨־Ϣ +#define PARA_RS485 0x2001 /* RS485Ϣ*/ +#define PARA_DEVICE 0x2002 /* 豸Ϣ*/ +#define PARA_HARDDISK 0x2003 /* ӲϢ */ +#define PARA_AUTOBOOT 0x2004 /* ԶϢ*/ +#define PARA_HOLIDAY 0x2005 /* ڼϢ*/ +#define PARA_IPC 0x2006 /* IPͨ */ +/************************* end*******************************/ + + +/*******************ļ־ֵ*************************/ +#define NET_DVR_FILE_SUCCESS 1000 //ļϢ +#define NET_DVR_FILE_NOFIND 1001 //ûļ +#define NET_DVR_ISFINDING 1002 //ڲļ +#define NET_DVR_NOMOREFILE 1003 //ļʱûиļ +#define NET_DVR_FILE_EXCEPTION 1004 //ļʱ쳣 +#define NET_DVR_FIND_TIMEOUT 1005 //ļʱ + +/*********************ص begin************************/ + +//ص +#define COMM_ALARM 0x1100 //8000Ϣϴ + +//ӦNET_VCA_RULE_ALARM +#define COMM_ALARM_RULE 0x1102 //쳣ΪⱨϢ +#define COMM_ALARM_PDC 0x1103 //ͳƱϢ +#define COMM_ALARM_VIDEOPLATFORM 0x1104 //Ƶۺƽ̨ +#define COMM_ALARM_ALARMHOST 0x1105 //籨 +#define COMM_ALARM_FACE 0x1106 //ʶ𱨾Ϣ +#define COMM_RULE_INFO_UPLOAD 0x1107 // ¼Ϣϴ +#define COMM_ALARM_AID 0x1110 //ͨ¼Ϣ +#define COMM_ALARM_TPS 0x1111 //ͨͳƱϢ +//ץĽϴ +#define COMM_UPLOAD_FACESNAP_RESULT 0x1112 //ʶϴ +#define COMM_ALARM_TFS 0x1113 //ͨȡ֤Ϣ +#define COMM_ALARM_TPS_V41 0x1114 //ͨͳƱϢչ +#define COMM_ALARM_AID_V41 0x1115 //ͨ¼Ϣչ +#define COMM_ALARM_VQD_EX 0x1116 //Ƶϱ +#define COMM_ALARM_NOTIFICATION_REPORT 0x1117 //֪ͨ¼ϱ +#define COMM_SENSOR_VALUE_UPLOAD 0x1120 //ģʵʱϴ +#define COMM_SENSOR_ALARM 0x1121 //ģϴ +#define COMM_SWITCH_ALARM 0x1122 // +#define COMM_ALARMHOST_EXCEPTION 0x1123 //ϱ +#define COMM_ALARMHOST_OPERATEEVENT_ALARM 0x1124 //¼ϴ +#define COMM_ALARMHOST_SAFETYCABINSTATE 0x1125 //״̬ +#define COMM_ALARMHOST_ALARMOUTSTATUS 0x1126 ///״̬ +#define COMM_ALARMHOST_CID_ALARM 0x1127 //汨ϴ +#define COMM_ALARMHOST_EXTERNAL_DEVICE_ALARM 0x1128 //豸ϴ +#define COMM_ALARMHOST_DATA_UPLOAD 0x1129 //ϴ +#define COMM_FACECAPTURE_STATISTICS_RESULT 0x112a //ץͳϴ +#define COMM_ALARM_WIRELESS_INFO 0x122b // Ϣϴ +#define COMM_SCENECHANGE_DETECTION_UPLOAD 0x1130 //ϴ()2013-7-16 +#define COMM_CROSSLINE_ALARM 0x1131 //ѹ߱() 2013-09-27 +#define COMM_UPLOAD_VIDEO_INTERCOM_EVENT 0x1132 //ӶԽ¼¼ϴ +#define COMM_ALARM_VIDEO_INTERCOM 0x1133 //ӶԽϴ +#define COMM_UPLOAD_NOTICE_DATA 0x1134 //ӶԽϢϴ +#define COMM_ALARM_AUDIOEXCEPTION 0x1150 //Ϣ +#define COMM_ALARM_DEFOCUS 0x1151 //齹Ϣ +#define COMM_ALARM_BUTTON_DOWN_EXCEPTION 0x1152 //ť±Ϣ +#define COMM_ALARM_ALARMGPS 0x1202 //GPSϢϴ +#define COMM_TRADEINFO 0x1500 //ATMDVRϴϢ +#define COMM_UPLOAD_PLATE_RESULT 0x2800 //ϴϢ +#define COMM_ITC_STATUS_DETECT_RESULT 0x2810 //ʵʱ״̬ϴ(ܸIPC) +#define COMM_IPC_AUXALARM_RESULT 0x2820 //PIR߱ȱϴ +#define COMM_UPLOAD_PICTUREINFO 0x2900 //ϴͼƬϢ +#define COMM_SNAP_MATCH_ALARM 0x2902 //ֹȶԽϴ +#define COMM_ITS_PLATE_RESULT 0x3050 //նͼƬϴ +#define COMM_ITS_TRAFFIC_COLLECT 0x3051 //նͳϴ +#define COMM_ITS_GATE_VEHICLE 0x3052 //ڳץϴ +#define COMM_ITS_GATE_FACE 0x3053 //ץϴ +#define COMM_ITS_GATE_COSTITEM 0x3054 //ڹշϸ 2013-11-19 +#define COMM_ITS_GATE_HANDOVER 0x3055 //ڽӰ 2013-11-19 +#define COMM_ITS_PARK_VEHICLE 0x3056 //ͣϴ +#define COMM_ITS_BLOCKLIST_ALARM 0x3057 //ֹϴ + +#define COMM_VEHICLE_CONTROL_LIST_DSALARM 0x3058 //Ҫͬ2013-11-04 +#define COMM_VEHICLE_CONTROL_ALARM 0x3059 //2013-11-04 +#define COMM_FIRE_ALARM 0x3060 //2013-11-04 + +#define COMM_ITS_GATE_ALARMINFO 0x3061 //ڿƻϴ + +#define COMM_VEHICLE_RECOG_RESULT 0x3062 //ʶϴ 2014-11-12 +#define COMM_PLATE_RESULT_V50 0x3063 //ϴ V50 + +#define COMM_GATE_CHARGEINFO_UPLOAD 0x3064 //ڸϢϴ +#define COMM_TME_VEHICLE_INDENTIFICATION 0x3065 //TMEץͼϴ +#define COMM_GATE_CARDINFO_UPLOAD 0x3066 //ڿƬϢϴ +#define COMM_LOADING_DOCK_OPERATEINFO 0x3067 //̨ҵϴ + +#define COMM_ALARM_SENSORINFO_UPLOAD 0x3077 //ϴϢ +#define COMM_ALARM_CAPTURE_UPLOAD 0x3078 //ץͼƬϴ + +#define COMM_ITS_RADARINFO 0x3079 //״ﱨϴ + +#define COMM_SIGNAL_LAMP_ABNORMAL 0x3080 //źŵ쳣ϴ + +#define COMM_ALARM_TPS_REAL_TIME 0x3081 //TPSʵʱϴ +#define COMM_ALARM_TPS_STATISTICS 0x3082 //TPSͳƹϴ + +#define COMM_ALARM_V30 0x4000 //9000Ϣϴ +#define COMM_IPCCFG 0x4001 //9000豸IPCøı䱨Ϣϴ +#define COMM_IPCCFG_V31 0x4002 //9000豸IPCøı䱨Ϣϴչ 9000_1.1 +#define COMM_IPCCFG_V40 0x4003 // IVMS 2000 NVR IPCøıʱϢϴ +#define COMM_ALARM_DEVICE 0x4004 //豸ݣֵͨ256չ +#define COMM_ALARM_CVR 0x4005 //CVR 2.0.Xⲿ +#define COMM_ALARM_HOT_SPARE 0x4006 //ȱ쳣N+1ģʽ쳣 +#define COMM_ALARM_V40 0x4007 //ƶ⣬ƵʧڵIOźȱϢϴΪɱ䳤 + +#define COMM_UPLOAD_HEATMAP_RESULT 0x4008 //ȶͼϴ 2014-03-21 +#define COMM_ALARM_DEVICE_V40 0x4009 //豸չ +#define COMM_ALARM_FACE_DETECTION 0x4010 //ⱨ +#define COMM_ALARM_TARGET_LEFT_REGION 0x4011 //Ŀ뿪򱨾(ʦѧ(л¼Ƽѧ)) +#define COMM_GISINFO_UPLOAD 0x4012 //GISϢϴ +#define COMM_VANDALPROOF_ALARM 0x4013 //ϴƻϢ +#define COMM_PEOPLE_DETECTION_UPLOAD 0x4014 //ԱϢϴ +#define COMM_ALARM_STORAGE_DETECTION 0x4015 //洢ܼⱨϴ +#define COMM_MVM_REGISTER 0x4016 //شŹMagnetic Vehicle Managerע +#define COMM_MVM_STATUS_INFO 0x4017 //شŹMagnetic Vehicle Manager״̬ϱ +#define COMM_UPLOAD_HEATMAP_RESULT_PDC 0x4018 //ȶͼͳϴ¼ +#define COMM_UPLOAD_HEATMAP_RESULT_DURATION 0x4019 //ȶͼԱͣʱͳϴ¼ +#define COMM_UPLOAD_HEATMAP_RESULT_INTERSECTION 0x4020 //·ڷȶֵϴ +#define COMM_UPLOAD_AIOP_VIDEO 0x4021 //豸֧AIƽ̨룬ϴƵ +#define COMM_UPLOAD_AIOP_PICTURE 0x4022 //豸֧AIƽ̨룬ϴͼƬ +#define COMM_UPLOAD_AIOP_POLLING_SNAP 0x4023 //豸֧AIƽ̨룬ϴѲץͼͼƬ ӦĽṹ(NET_AIOP_POLLING_PICTURE_HEAD) +#define COMM_UPLOAD_AIOP_POLLING_VIDEO 0x4024 //豸֧AIƽ̨룬ϴѲƵ ӦĽṹ(NET_AIOP_POLLING_VIDEO_HEAD) +#define COMM_UPLOAD_AIOP_HISTORY_VIDEO 0x4025 //豸֧AIƽ̨룬ϴʷƵ ӦĽṹ(NET_AIOP_HISTORY_VIDEO_HEAD) + + +#define COMM_ITS_ROAD_EXCEPTION 0x4500 //·豸쳣 +#define COMM_ITS_EXTERNAL_CONTROL_ALARM 0x4520 //ر +#define COMM_ALARM_SHIPSDETECTION 0x4521 // ֻⱨϢ + +#define COMM_VCA_DBD_ALARM 0x4550 //ʻΪϢ +#define COMM_VCA_ADAS_ALARM 0x4551 //߼ʻϢ +#define COMM_VEH_REALTIME_INFO 0x4552 //гʵʱϢ +#define COMM_VCA_ATTEND_ALARM 0x4553 //¼Ϣ + +#define COMM_FIREDETECTION_ALARM 0x4991 //ⱨ +#define COMM_ALARM_DENSEFOGDETECTION 0x4992 //ⱨϢ +#define COMM_VCA_ALARM 0x4993 //ܼⱨ +#define COMM_FACE_THERMOMETRY_ALARM 0x4994 //± + +#define COMM_TAPE_ARCHIVE_ALARM 0x4996 //Ŵ鵵 + +#define COMM_SCREEN_ALARM 0x5000 // +#define COMM_DVCS_STATE_ALARM 0x5001 //ֲʽϴ +#define COMM_ALARM_ACS 0x5002 //Ž +#define COMM_ALARM_FIBER_CONVERT 0x5003 //շ +#define COMM_ALARM_SWITCH_CONVERT 0x5004 // +#define COMM_ALARM_DEC_VCA 0x5010 //ܽ뱨 +#define COMM_ALARM_LCD 0x5011 //Ļ +#define COMM_CONFERENCE_CALL_ALARM 0x5012 //и澯 + +#define COMM_ALARM_WALL_CONFERNECE 0x5015 //MCUѿĻϢ + +#define COMM_DIAGNOSIS_UPLOAD 0x5100 //ϷVQDϴ +#define COMM_HIGH_DENSITY_UPLOAD 0x5101 //Աۼܶϴ + +#define COMM_ID_INFO_ALARM 0x5200 //֤Ϣϴ +#define COMM_PASSNUM_INFO_ALARM 0x5201 //ͨϱ +#define COMM_PASSPORT_ALARM 0x5202 //Ϣϴ + +#define COMM_THERMOMETRY_DIFF_ALARM 0x5211 //²ϴ +#define COMM_THERMOMETRY_ALARM 0x5212 //¶ȱϴ +#define COMM_PANORAMIC_LINKAGE_ALARM 0x5213 //ȫλϴ +#define COMM_TAG_INFO_ALARM 0x5215 // ǩϢϴ +#define COMM_ALARM_VQD 0x6000 //VQDϴ +#define COMM_PUSH_UPDATE_RECORD_INFO 0x6001 //ģʽ¼Ϣϴ +#define COMM_SWITCH_LAMP_ALARM 0x6002 //صƼ +#define COMM_INQUEST_ALARM 0x6005 // Ѷϴ +#define COMM_VIDEO_PARKING_POLE_ALARM 0x6006 //Ƶ׮ +#define COMM_GPS_STATUS_ALARM 0x6010 // GPS״̬ϴ +#define COMM_BASE_STATION_INFO_ALARM 0x6011 //վϢϴ +#define COMM_ALARM_SUBSCRIBE_EVENT 0x6012 //Ľϱ + +#define COMM_FACESNAP_RAWDATA_ALARM 0x6015 //ȶԱ͸ʽ +#define COMM_CLUSTER_ALARM 0x6020 //Ⱥϴ + +#define COMM_ISAPI_ALARM 0x6009 + +//PJ01C20170209084¼NVSܿĿר +#define COMM_FRAMES_PEOPLE_COUNTING_ALARM 0x6069 //֡ͳƽϴ + +#define COMM_SIGN_ABNORMAL_ALARM 0x6120 //쳣 +#define COMM_HFPD_ALARM 0x6121 //ƵԱⱨ + +#define COMM_HCU_ALARM 0x6150 //ܺӱSDKⲻʵ֣豸DVRͨЭ飬ռλֹͻ + +#define COMM_DEV_STATUS_CHANGED 0x7000 //豸״̬ı䱨ϴ + +#define COMM_ALARM_EXCEPTION 0x7fff //쳣 + +/*************쳣(Ϣʽ, صʽ())****************/ +#define EXCEPTION_EXCHANGE 0x8000 //ûʱ쳣 +#define EXCEPTION_AUDIOEXCHANGE 0x8001 //Խ쳣 +#define EXCEPTION_ALARM 0x8002 //쳣 +#define EXCEPTION_PREVIEW 0x8003 //Ԥ쳣 +#define EXCEPTION_SERIAL 0x8004 //͸ͨ쳣 +#define EXCEPTION_RECONNECT 0x8005 //Ԥʱ +#define EXCEPTION_ALARMRECONNECT 0x8006 //ʱ +#define EXCEPTION_SERIALRECONNECT 0x8007 //͸ͨ +#define SERIAL_RECONNECTSUCCESS 0x8008 //͸ͨɹ +#define EXCEPTION_PLAYBACK 0x8010 //ط쳣 +#define EXCEPTION_DISKFMT 0x8011 //Ӳ̸ʽ +#define EXCEPTION_PASSIVEDECODE 0x8012 //쳣 +#define EXCEPTION_EMAILTEST 0x8013 //ʼ쳣 +#define EXCEPTION_BACKUP 0x8014 //쳣 +#define PREVIEW_RECONNECTSUCCESS 0x8015 //Ԥʱɹ +#define ALARM_RECONNECTSUCCESS 0x8016 //ʱɹ +#define RESUME_EXCHANGE 0x8017 //ûָ +#define NETWORK_FLOWTEST_EXCEPTION 0x8018 //쳣 +#define EXCEPTION_PICPREVIEWRECONNECT 0x8019 //ͼƬԤ +#define PICPREVIEW_RECONNECTSUCCESS 0x8020 //ͼƬԤɹ +#define EXCEPTION_PICPREVIEW 0x8021 //ͼƬԤ쳣 +#define EXCEPTION_MAX_ALARM_INFO 0x8022 //ϢѴ +#define EXCEPTION_LOST_ALARM 0x8023 //ʧ +#define EXCEPTION_PASSIVETRANSRECONNECT 0x8024 //ת +#define PASSIVETRANS_RECONNECTSUCCESS 0x8025 //תɹ +#define EXCEPTION_PASSIVETRANS 0x8026 //ת쳣 +#define SUCCESS_PUSHDEVLOGON 0x8030 //ģʽ豸עɹ +#define EXCEPTION_RELOGIN 0x8040 //ûص½ +#define RELOGIN_SUCCESS 0x8041 //ûص½ɹ +#define EXCEPTION_PASSIVEDECODE_RECONNNECT 0x8042 // +#define EXCEPTION_CLUSTER_CS_ARMFAILED 0x8043 //Ⱥ쳣 + +#define EXCEPTION_RELOGIN_FAILED 0x8044 //ص½ʧܣֹͣص½ +#define EXCEPTION_PREVIEW_RECONNECT_CLOSED 0x8045 //رԤ +#define EXCEPTION_ALARM_RECONNECT_CLOSED 0x8046 //رձ +#define EXCEPTION_SERIAL_RECONNECT_CLOSED 0x8047 //ر͸ͨ +#define EXCEPTION_PIC_RECONNECT_CLOSED 0x8048 //رջ +#define EXCEPTION_PASSIVE_DECODE_RECONNECT_CLOSED 0x8049 //رձ +#define EXCEPTION_PASSIVE_TRANS_RECONNECT_CLOSED 0x804a //رձת +#define EXCEPTION_VIDEO_DOWNLOAD 0x804b // [add] by yangzheng 2019/11/09 ¼쳣 + +/********************Ԥص*********************/ +#define NET_DVR_SYSHEAD 1 //ϵͳͷ +#define NET_DVR_STREAMDATA 2 //ƵݣƵֿƵݣ +#define NET_DVR_AUDIOSTREAMDATA 3 //Ƶ +#define NET_DVR_STD_VIDEODATA 4 //׼Ƶ +#define NET_DVR_STD_AUDIODATA 5 //׼Ƶ +#define NET_DVR_SDP 6 //SDPϢ(RstpʱЧ) +#define NET_DVR_CHANGE_FORWARD 10 //ıΪ +#define NET_DVR_CHANGE_REVERSE 11 //ıΪ +#define NET_DVR_PLAYBACK_ALLFILEEND 12 //طļ +#define NET_DVR_VOD_DRAW_FRAME 13 //طų֡ +#define NET_DVR_VOD_DRAW_DATA 14 //϶ƽ +#define NET_DVR_HLS_INDEX_DATA 15 //HLS +#define NET_DVR_PLAYBACK_NEW_POS 16 //ط(ʱ䶨λNET_DVR_PLAYSETTIMENET_DVR_PLAYSETTIME_V50ӿڷسɹ󣬻ҪȴյûصͺſΪɹ) +#define NET_DVR_METADATA_DATA 107 //Metadata +#define NET_DVR_PRIVATE_DATA 112 //˽,Ϣ + +//豸ͺ(DVR) +/* 豸 */ +#define DVR 1 /*δdvrͷDVR*/ +#define ATMDVR 2 /*atm dvr*/ +#define DVS 3 /*DVS*/ +#define DEC 4 /* 6001D */ +#define ENC_DEC 5 /* 6001F */ +#define DVR_HC 6 /*8000HC*/ +#define DVR_HT 7 /*8000HT*/ +#define DVR_HF 8 /*8000HF*/ +#define DVR_HS 9 /* 8000HS DVR(no audio) */ +#define DVR_HTS 10 /* 8016HTS DVR(no audio) */ +#define DVR_HB 11 /* HB DVR(SATA HD) */ +#define DVR_HCS 12 /* 8000HCS DVR */ +#define DVS_A 13 /* ATAӲ̵DVS */ +#define DVR_HC_S 14 /* 8000HC-S */ +#define DVR_HT_S 15 /* 8000HT-S */ +#define DVR_HF_S 16 /* 8000HF-S */ +#define DVR_HS_S 17 /* 8000HS-S */ +#define ATMDVR_S 18 /* ATM-S */ +#define DVR_7000H 19 /*7000Hϵ*/ +#define DEC_MAT 20 /*·*/ +#define DVR_MOBILE 21 /* mobile DVR */ +#define DVR_HD_S 22 /* 8000HD-S */ +#define DVR_HD_SL 23 /* 8000HD-SL */ +#define DVR_HC_SL 24 /* 8000HC-SL */ +#define DVR_HS_ST 25 /* 8000HS_ST */ +#define DVS_HW 26 /* 6000HW */ +#define DS630X_D 27 /* · */ +#define DS640X_HD 28 /*640X*/ +#define DS610X_D 29 /*610X*/ +#define IPCAM 30 /*IP */ +#define MEGA_IPCAM 31 /*IP*/ +#define IPCAM_X62MF 32 /*862MFԽ9000豸*/ +#define ITCCAM 35 /*ܸ*/ +#define IVS_IPCAM 36 /*ܷ*/ +#define ZOOMCAM 38 /*һ*/ +#define IPDOME 40 /*IP */ +#define IPDOME_MEGA200 41 /*IP 200*/ +#define IPDOME_MEGA130 42 /*IP 130*/ +#define IPDOME_AI 43 /*IP ܿ*/ +#define TII_IPCAM 44 /*ȳ*/ +#define IPTC_DOME 45 /*ȳ˫Ŀ*/ +#define DS_2DP_Z 46 /*ӥۣ*/ +#define DS_2DP 47 /*ӥۣС*/ +#define ITS_WMS 48 /*ݹ*/ +#define IPMOD 50 /*IP ģ*/ +#define TRAFFIC_YTDOME 51 //̨ͨ״٣ +#define TRAFFIC_RDDOME 52 //̨ͨ״٣ +#define IDS6501_HF_P 60 // 6501 +#define IDS6101_HF_A 61 //ATM +#define IDS6002_HF_B 62 //˫DS6002-HF/B +#define IDS6101_HF_B 63 //쳣Ϊ⣺DS6101-HF/B DS6101-HF/B_SATA +#define IDS52XX 64 //ܷIVMS +#define IDS90XX 65 // 9000 +#define IDS8104_AHL_S_HX 66 // ʶ ATM +#define IDS8104_AHL_S_H 67 // ˽ʶ ATM +#define IDS91XX 68 // 9100 +#define IIP_CAM_B 69 // ΪIP +#define IIP_CAM_F 70 //IP +#define DS71XX_H 71 /* DS71XXH_S */ +#define DS72XX_H_S 72 /* DS72XXH_S */ +#define DS73XX_H_S 73 /* DS73XXH_S */ +#define DS72XX_HF_S 74 //DS72XX_HF_S +#define DS73XX_HFI_S 75 //DS73XX_HFI_S +#define DS76XX_H_S 76 /* DVR,e.g. DS7604_HI_S */ +#define DS76XX_N_S 77 /* NVR,e.g. DS7604_NI_S */ +#define DS_TP3200_EC 78 /*ܼ*/ +#define DS81XX_HS_S 81 /* DS81XX_HS_S */ +#define DS81XX_HL_S 82 /* DS81XX_HL_S */ +#define DS81XX_HC_S 83 /* DS81XX_HC_S */ +#define DS81XX_HD_S 84 /* DS81XX_HD_S */ +#define DS81XX_HE_S 85 /* DS81XX_HE_S */ +#define DS81XX_HF_S 86 /* DS81XX_HF_S */ +#define DS81XX_AH_S 87 /* DS81XX_AH_S */ +#define DS81XX_AHF_S 88 /* DS81XX_AHF_S */ +#define DS90XX_HF_S 90 /*DS90XX_HF_S*/ +#define DS91XX_HF_S 91 /*DS91XX_HF_S*/ +#define DS91XX_HD_S 92 /*91XXHD-S(MD)*/ +#define IDS90XX_A 93 // 9000 ATM +#define IDS91XX_A 94 // 9100 ATM +#define DS95XX_N_S 95 /*DS95XX_N_S NVR κ*/ +#define DS96XX_N_SH 96 /*DS96XX_N_SH NVR*/ +#define DS90XX_HF_SH 97 /*DS90XX_HF_SH */ +#define DS91XX_HF_SH 98 /*DS91XX_HF_SH */ +#define DS_B10_XY 100 /*Ƶۺƽ̨豸ͺ(X:ƬY:Ƭ)*/ +#define DS_6504HF_B10 101 /*Ƶۺƽ̨ڲ*/ +#define DS_6504D_B10 102 /*Ƶۺƽ̨ڲ*/ +#define DS_1832_B10 103 /*Ƶۺƽ̨ڲ*/ +#define DS_6401HFH_B10 104 /*Ƶۺƽ̨ڲ˰*/ +#define DS_65XXHC 105 //65XXHC DVS +#define DS_65XXHC_S 106 //65XXHC-SATA DVS +#define DS_65XXHF 107 //65XXHF DVS +#define DS_65XXHF_S 108 //65XXHF-SATA DVS +#define DS_6500HF_B 109 //65 rack DVS +#define IVMS_6200_C 110 // iVMS-6200(/C) +#define IVMS_6200_B 111 // iVMS-6200(/B) +#define DS_72XXHV_ST15 112 //72XXHV_ST ˼3515ƽ̨ DVR +#define DS_72XXHV_ST20 113 //72XXHV_ST ˼3520ƽ̨ DVR +#define IVMS_6200_T 114 // IVMS-6200(/T) +#define IVMS_6200_BP 115 // IVMS-6200(/BP) +#define DS_81XXHC_ST 116 //DS_81XXHC_ST +#define DS_81XXHS_ST 117 //DS_81XXHS_ST +#define DS_81XXAH_ST 118 //DS_81XXAH_ST +#define DS_81XXAHF_ST 119 //DS_81XXAHF_ST +#define DS_66XXDVS 120 //66XX DVS + +#define DS_1964_B10 121 /*Ƶۺƽ̨ڲ*/ +#define DS_B10N04_IN 122 /*Ƶۺƽ̨ڲ*/ +#define DS_B10N04_OUT 123 /*Ƶۺƽ̨ڲ*/ +#define DS_B10N04_INTEL 124 /*Ƶۺƽ̨ڲ*/ +#define DS_6408HFH_B10E_RM 125 //V6 +#define DS_B10N64F1_RTM 126 //V6DSP +#define DS_B10N64F1D_RTM 127 //V6DSP +#define DS_B10_SDS 128 //Ƶۺƽ̨ +#define DS_B10_DS 129 //Ƶۺƽ̨ +#define DS_6401HFH_B10V 130 //VGA +#define DS_6504D_B10B 131 /*Ƶۺƽ̨ڲ*/ +#define DS_6504D_B10H 132 /*Ƶۺƽ̨ڲ*/ +#define DS_6504D_B10V 133 /*Ƶۺƽ̨ڲVGA*/ +#define DS_6408HFH_B10S 134 //Ƶۺƽ̨SDIӰ +#define DS_18XX_N 135 /* */ +#define DS_6504HF_B10F_CLASS 136 //˻SD +#define DS_18XX_PTZ 141 /*Ʒ*/ +#define DS_19AXX 142 /*ͨñƷ*/ +#define DS_19BXX 143 /*ñ*/ +#define DS_19CXX 144 /*б*/ +#define DS_19DXX 145 /**/ +#define DS_19XX 146 /*1900ϵб*/ +#define DS_19SXX 147 /*Ƶ*/ +#define DS_1HXX 148 /*CSƷ*/ // +#define DS_PEAXX 149 /*һʽƷ*/ +#define DS_PWXX 150 /*߱Ʒ*/ +#define DS_PMXX 151 /*4Gģ*/ +#define DS_19DXX_S 152 /*Ƶ*/ +#define DS_PWAXX 153 /* Axiom Hub߱ */ +#define DS_PHAXX 154 /* Axiom Hybridϱ */ +#define DS_PHAProXX 155 /* Axiom Hybrid Proϱ*/ + + +//2011-11-30 +#define DS_C10H 161 /**/ +#define DS_C10N_BI 162 //BNC +#define DS_C10N_DI 163 //rbg +#define DS_C10N_SI 164 // +#define DS_C10N_DO 165 //ʾ +#define DS_C10N_SERVER 166 //ֲʽ + + +#define IDS_8104_AHFL_S_H 171 // 8104ATM +#define IDS_65XX_HF_A 172 // 65 ATM +#define IDS90XX_HF_RH 173 // 9000 RH +#define IDS91XX_HF_RH 174 // 9100 RH豸 +#define IDS_65XX_HF_B 175 // 65 쳣Ϊ +#define IDS_65XX_HF_P 176 // 65 ʶ +#define IVMS_6200_F 177 // IVMS-6200(/F) +#define IVMS_6200_A 178 //iVMS-6200(/A) +#define IVMS_6200_F_S 179 // IVMS-6200(/F_S) + +#define DS90XX_HF_RH 181 // 9000 RH 648 +#define DS91XX_HF_RH 182 // 9100 RH豸 648 +#define DS78XX_S 183 // 78ϵ豸 6446 +#define DS81XXHW_S 185 // 81 Resolution 960 KY2011 +#define DS81XXHW_ST 186 // DS81XXHW_ST KY2011 +#define DS91XXHW_ST 187 // DS91XXHW_ST KY2011 +#define DS91XX_ST 188 // DS91XX_ST netra +#define DS81XX_ST 189 // DS81XX_ST netra +#define DS81XXHX_ST 190 // DS81XXHDI_ST,DS81XXHE_ST ky2012 +#define DS73XXHX_ST 191 // DS73XXHI_ST ky2012 +#define DS81XX_SH 192 // Ѷ81SH,81SHF +#define DS81XX_SN 193 // Ѷ81SNL + +#define DS96XXN_ST 194 //NVR:DS96xxN_ST +#define DS86XXN_ST 195 //NVR:DS86xxN_ST +#define DS80XXHF_ST 196 //DVR:DS80xxHF_ST +#define DS90XXHF_ST 197 //DVR:DS90xxHF_ST +#define DS76XXN_ST 198 //NVR:DS76xxN_ST + +#define DS_9664N_RX 199 //NVR:DS_9664N_RX +#define ENCODER_SERVER 200 // 뿨 +#define DECODER_SERVER 201 // 뿨 +#define PCNVR_SERVER 202 // PCNVR洢 +#define CVR_SERVER 203 // ŵCVRԼΪDVR_S-1 +#define DS_91XXHFH_ST 204 // 91ϵHD-SDIDVR +#define DS_66XXHFH 205 // 66 +#define TRAFFIC_TS_SERVER 210 //ն˷ +#define TRAFFIC_VAR 211 //Ƶ¼ +#define IPCALL 212 //IPӶԽֻ +#define SAN_SERVER 213 //CVR_SERVERͬijֻģʽͬ + +#define DS_B11_M_CLASS 301 /*Ƶۺƽ̨豸ͺ*/ +#define DS_B12_M_CLASS 302 /*Ƶۺƽ̨豸ͺ*/ +#define DS_6504HF_B11_CLASS 303 /*Ƶۺƽ̨ڲ*/ +#define DS_6504HF_B12_CLASS 304 /*Ƶۺƽ̨ڲ*/ +#define DS_6401HFH_B11V_CLASS 305 //VGA +#define DS_6401HFH_B12V_CLASS 306 //VGA +#define DS_6408HFH_B11S_CLASS 307 //SDI +#define DS_6408HFH_B12S_CLASS 308 //SDI +#define DS_6504D_B11H_CLASS 309 /*Ƶۺƽ̨ڲ*/ +#define DS_6504D_B11B_CLASS 310 /*Ƶۺƽ̨ڲ*/ +#define DS_6504D_B12B_CLASS 311 /*Ƶۺƽ̨ڲ*/ +#define DS_6504D_B11V_CLASS 312 /*Ƶۺƽ̨ڲVGA*/ +#define DS_6504D_B12V_CLASS 313 /*Ƶۺƽ̨ڲVGA*/ +//B10 +#define DS_6401HFH_B10R_CLASS 314 //B10 RGB +#define DS_6401HFH_B10D_CLASS 315 //B10 DVI +#define DS_6401HFH_B10H_CLASS 316 //B10 HDMI +//B11 +#define DS_6401HFH_B11R_CLASS 317 //B11 RGB +#define DS_6401HFH_B11D_CLASS 318 //B11 DVI +#define DS_6401HFH_B11H_CLASS 319 //B11 HDMI +//B12 +#define DS_6401HFH_B12R_CLASS 320 //B12 RGB +#define DS_6401HFH_B12D_CLASS 321 //B12 DVI +#define DS_6401HFH_B12H_CLASS 322 //B12 HDMI +#define DS_65XXD_B10Ex_CLASS 323 //netra + +//B10 V2.1 +#define DS_6516HW_B10_CLASS 324 //netra߱ +#define DS_6401HFH_B10F_RX_CLASS 326 //˻루֧1/2·˻룩 +#define DS_6502HW_B10F_RX_CLASS 327 //960H˻루֧1/4/8·˻룩 +//2012-5-16 +#define DS_6504D_B11Ex_CLASS 328 //netra +#define DS_6504D_B12Ex_CLASS 329 //netra +#define DS_6512_B11_CLASS 330 //netra߱ +#define DS_6512_B12_CLASS 331 //netra߱ +#define DS_6504D_B10H_CLASS 332 //Ƶۺƽ̨ڲ + +#define DS_65XXT_B10_CLASS 333 //Ƶۺƽ̨תϵͳ +#define DS_65XXD_B10_CLASS 335 //Ƶۺƽ̨ +#define DS_IVMSE_B10X_CLASS 336 //X86ϵͳ +#define DS_6532D_B10ES_CLASS 337 //ǿͽ_SDI(B10) +#define DS_6508HFH_B10ES_CLASS 338 //SDIϵͳ +#define DS_82NCG_CLASS 340 //еϵͳ +#define DS_82VAG_CLASS 341 //еϵͳ +#define DS_1802XXF_B10_CLASS 342 //ڽϵͳ +#define iDS_6504_B10EVAC_CLASS 343 //ϵͳ +#define iDS_6504_B10EDEC_CLASS 344 //ϵͳ +#define DS_6402HFH_B10EV_CLASS 345 //netra(VGA) +#define DS_6402HFH_B10ED_CLASS 346 //netra(DVI) +#define DS_6402HFH_B10EH_CLASS 347 //netra(HDMI) +#define DS_6404HFH_B10T_RX_CLASS 348 //˽ +#define DS_6504D_AIO_CLASS 349 //netra +#define DS_IVMST_B10_CLASS 350 //X86תϵͳ +#define DS_6402_AIO_CLASS 351 //netra +#define DS_iVMSE_AIO_CLASS 352 //x86ϵͳ +#define DS_AIO_M_CLASS 353 //һ + + +#define DS_6508HF_B10E_CLASS 355 //BNCϵͳ +#define DS_6404HFH_B10ES_CLASS 356 //SDIϵͳ +#define DS_6402HFH_B10ER_CLASS 358 //RGBϵͳ +#define DS_6404HFH_B10T_RM_CLASS 361 //ϵͳ +#define DS_6516D_B10EB_CLASS 362 //BNCϵͳ +#define DS_6516D_B10ES_CLASS 363 //SDIϵͳ + +//DVI/HDMI/VGAԽ빫һ +#define DS_6508D_B10FH_CLASS 364 +#define DS_6508D_B10FD_CLASS 364 +#define DS_6508D_B10FV_CLASS 364 + +#define DS_6508_B11E_CLASS 365 //BNCϵͳ +#define DS_6402_B11ES_CLASS 366 //SDIϵͳ +#define DS_6402_B11EV_CLASS 367 //VGAϵͳ +#define DS_6402_B11ER_CLASS 368 //RGBϵͳ +#define DS_6402_B11ED_CLASS 369 //DVIϵͳ +#define DS_6402_B11EH_CLASS 370 //HDMIϵͳ +#define DS_6516D_B11EB_CLASS 371 //BNCϵͳ +#define DS_6516D_B11ES_CLASS 372 //SDIϵͳ + +#define DS_6508_B12E_CLASS 373 //BNCϵͳ +#define DS_6402_B12ES_CLASS 375 //SDIϵͳ +#define DS_6402_B12EV_CLASS 376 //VGAϵͳ +#define DS_6402_B12ER_CLASS 377 //RGBϵͳ +#define DS_6402_B12ED_CLASS 378 //DVIϵͳ +#define DS_6402_B12EH_CLASS 379 //HDMIϵͳ +#define DS_6516D_B12EB_CLASS 380 //BNCϵͳ + +#define DS_iVMSE_AIO_8100x_CLASS 381 //ҵһX86ϵͳ +#define DS_iVMSE_AIO_87x_CLASS 382 //¥һX86ϵͳ +#define DS_6532D_B11ES_CLASS 384 //ǿͽ_SDI(B11) +#define DS_6532D_B12ES_CLASS 385 //ǿͽ_SDI(B12) +//B20 +#define DS_B20_MSU_NP 400 //B20ذ +#define DS_6416HFH_B20S 401 //SDI +#define DS_6416HFH_B20_RM 402 // +#define DS_6564D_B20D 403 //DVI +#define DS_6564D_B20H 404 //HDMI +#define DS_6564D_B20V 405 //VGA +#define DS_B20_6516D_DEV_CLASS 406 //B20ϵͳ +#define DS_6408HFH_B20V 407 //VGA +#define DS_MMC_B20_CLASS 408 //B20 +#define DS_CARD_CHIP_B20_CLASS 409 //B20Ӱ +#define DS_6564D_B20B_DEV_CLASS 410 //BNCϵͳ +#define DS_6564D_B20S_DEV_CLASS 411 //SDIϵͳ +#define DS_6532HF_B20B_DEV_CLASS 412 //BNCϵͳ +#define DS_6408HFH_B20D_DEV_CLASS 413 //DVIϵͳ +#define DS_6408HFH_B20H_DEV_CLASS 414 //HDMIϵͳ +#define DS_IVMSE_B20_CLASS 415 //X86ϵͳ +#define DS_6402HFH_B20Y_DEV_CLASS 416 //YUVϵͳ +#define DS_6508HW_B20_DEV_CLASS 417 //HWϵͳ +#define DS_B20N128Fx_B20_DEV_CLASS 418 //DS_B20N128Fx_M +#define DS_AIO_MCU_NP_DEV_CLASS 419 //IOذ +#define DS_6402_AIO_EV_DEV_CLASS 420 //VGA +#define DS_6508D_AIO_EV_DEV_CLASS 421 //VGA +#define DS_6508D_AIO_ED_DEV_CLASS 422 //DVI +#define DS_6508D_AIO_EH_DEV_CLASS 423 //HDMI +#define DS_6508HD_B20F_DEV_CLASS 424 //Ƶǿ +#define DS_6402HFH_B20ES_DEV_CLASS 425 //3G SID +#define DS_6532D_B20_DEV_CLASS 426 //B20ϵͳ +#define DS_IVMST_B20_DEV_CLASS 427 //X86ϵͳ +#define DS_6416HFH_B20DD_DEV_CLASS 428 //DVI˫· +#define DS_6441VS_B20_DEV_CLASS 429 //ƴ +#define DS_6404HFH_B20T_CLASS 431 //TVI +#define DS_FS22_B20_DEV_CLASS 432 //ϵͳ +#define DS_IVMSE_B20UH_DEV_CLASS 433 //X86 +#define IDS_6524J_B20_DEV_CLASS 434 +#define IDS_6532B_B20_DEV_CLASS 435 +#define DS_6404HFH_B20Fx_DEV_CLASS 436 //˻ϵͳ +#define DS_N128x_B20Fy_CLASS 437 //ϵͳ +#define DS_181600F_B20_CLASS 438 //ϵͳ +#define DS_6904UD_B20H_CLASS 439 //ϵͳ + +#define DS_B21_MCU_NP_CLASS 440 //B21 +#define DS_B21_S10_x_CLASS 441 //B21 x = A/S/D +#define DS_6402HFH_B21D_CLASS 442 //B21ϵͳ +#define DS_6508HD_B21D_CLASS 443 //B21ϵͳ +#define DS_iVMSE_B21HW_CLASS 444 //B21 X86ϵͳ + +#define DS_C10S 501 //C10S ʽ +#define DS_C3X 502 //ʽƴӿ + +#define DS_C10N_SDI 551 //SDI +#define DS_C10N_BIW 552 //8·BNC +#define DS_C10N_DON 553 //ʾ +#define DS_C10N_TVI 554 //TVI +#define DS_C10N_DI2 555 //DVI 2· +#define DS_C10N_AUDIO_OUT 556 //DVIHDMIVGAƵ +#define DS_C10N_AUDIO_IN 557 //DVIHDMIVGAƵ + +//汾ķֲʽ +#define DS_C20N 570 //ֲʽ +#define DS_C20N_BNC 571 //BNC豸 +#define DS_C20N_DVI 572 //DVI豸 +#define DS_C20N_DP 573 //DP豸 +#define DS_C20N_OUT 574 //豸 + +//ʽ 5301 - 5350 50 +#define DS_C30 5301 //C30ʽƴӿ +#define DS_C31 5302 //C31ʽƴӿ +#define DS_M0804 5303 //M0804ƴӿ + +//Ӳ汾ķֲʽ +#define DS_C20N_VWMS 5351 //C20N +#define DS_C20N_DI2 5352 //·DVI豸 +#define DS_C20N_DO2 5353 //·DVI豸 +#define DS_C20N_UHDI 5354 //DP/HDMI 1·4K豸 +#define DS_C20N_YI2 5355 //·YPbPr + +#define DS_C12N_VWMS 5356 //C12N +#define DS_C12N_DO 5357 //1·DVI +#define DS_C12N_HOE 5358 //1·HDMI 4K + +#define DS_C20N_HI2 5359 // HDMIڵ(2·) +#define DS_C20N_VI2 5360 //VGAڵ(2·) +#define DS_C20N_SI2 5361 //SDIڵ(2·) +#define DS_C20N_HO2 5362 //HDMIڵ(2·) +#define DS_C20N_S24G 5363 //C20Nרǧ׽(24·) +#define DS_C20N_S24X 5364 //C20Nר׽(24·) +#define DS_C12A_0104H 5365 //ƴӿ +#define DS_C20N_DO2_V2 5366 //·DVI豸V2 +#define DS_C20N_HO2_V2 5367 //·HDMI豸V2 +#define DS_C21N 5368 //ֲʽ +#define DS_C21K 5369 //ϯKVMϵͳC21 +#define DS_68TS_A 5370 //һ +#define DS_C22N_UHDI 5371 //4K60豸(1·) +#define DS_C21N_UHDI_T 5372 //1·4K60ڵ +#define DS_C22N_HI1 5373 //1·HDMI +#define DS_C22N_HO1 5374 //1·HDMI + + +//ȫϢʾ豸 +#define DS_D1HXX 5591 //ȫϢʾ豸 +#define DS_60SDL_X 5592 //Windows˫ն +#define DS_6043DL_B 5593 //׿˫43ն +#define DS_6049DL_B 5594 //׿˫49ն +#define DS_6055DL_B 5595 //׿˫55ն + +//ߴ豸 +#define ELEVATO_BRIDGE 5751 //ߵ +#define DS_3WF01S_5NG_M 5752 //5.8G1߹ +#define DS_3WF0EC_2N_D 5753 //2.4G500 +#define DS_3WF0EC_5ACT 5754 //5.8G 11ac +#define DS_3WF03S_5AC 5755 //5.8G 3ᆳ +#define DS_3WF0ES_5AC_H 5756 //5.8G500׸ߴ͸ +#define DS_3WF05S_5AC_H 5765 //5.8G 5KMǧڲ +#define DS_3WSXXX 5766 //·ϵУAC +#define DS_3WAXXX 5767 //APϵ +#define DS_3WAXXXP 5768 //APϵ +#define DS_3WRXXX 5769 //ͨ·ϵ +#define DS_3WMRXXX 5770 //MESH·ϵ +#define DS_3WAX18 5881 //AP + +//豸 +#define DS_3CXXXX 5891 //ͳһƽ̨ + + +//豸 +#define DS_19M00_MN 601 //ģ +#define DS_KH8302_A 602 //ڻ +#define DS_KD8101_2 603 //ſڻ +#define DS_KM8301 604 // +#define DS_KVXXXX_XX 605 //ſڻ +#define DS_LHPM1D_C 606 //Ƶ +#define DS_KAM03 607 //תģ +#define DS_KDXXX 608 //ܽնˣҵDS-KD9623-F-JPDS-KD9623-FC-JPDS-KD9803-F-JPҽҵDS-KD9803-3XF5G-HIDS-KD9803-3XFW-HIDS-KD9803-W-HI + +#define DS64XXHD_T 701 //64-T +#define DS_65XXD 703 //65 +#define DS63XXD_T 704 //63-T +#define SCE_SERVER 705 //ץ +#define DS_64XXHD_S 706 //64XXHD-S +#define DS_68XXT 707 //๦Ƶת +#define DS_65XXD_T 708 //65D-T +#define DS_65XXHD_T 709 //65HD-T +#define DS_69XXUD 710 //69XXUD +#define DS_65XXUD 711 //65XXUD +#define DS_65XXUD_L 712 //65XXUD_L +#define DS_65XXUD_T 713 //65XXUD_T + + +#define DS_D20XX 750 //LCDĻ 뿨 +//SDI +#define DS_C50S 751 //SDI +#define DS_D50XX 752 //LCDĻ 뿨 + +#define DS_D40 760 //LEDͿ + +#define DS_65VMXX 770 //Ƶ +#define DS_65VTXX 771 //Ƶն +#define DS_65VTA 772 //Ƶһʽն +#define DS_65VT_RX 773 //ѧն +#define DS_65VM_MCU_NP 774 //MCU + + +#define DS_CS_SERVER 800 // +#define DS_68GAP_MCU 831 //Ƶբ +#define DS_K260X 850 //Ž +#define DS_K1TXXX 851 //ָһ +#define DS_K280X 852 //Ž +#define DS_K281X 853 //ŽDS-K281Xϵ +#define DS_K1T80X 854 //Žһ +#define RAC_6X00 856 //ָŽһ +#define DS_K2602_AX 857 //Աͨ +#define DS_K1T803F 858 //ָŽƷ +#define DS_K2700 859 //ֲʽܹŽ +#define DS_K270X 860 //ֲʽܹ͵ؿ +#define DS_K1T500S 861 //Žһ +#define DS_K1A801F 862 //ָŽƷ +#define DS_K1T600X 863 //ʶŽһ +#define DS_K22X 864 //ݿ +#define DS_K2M0016AX 865 //ݿطֿ +#define DS_K2602S_AX 867 //ԱͨƷ +#define DS_K560XX 870 //ʽ/̨ʽʶն +#define DS_K260X_E 873 //ͶŽ +#define DS_K5603X 874 //̨ʽ/ڹʽǶʽ֤豸 +#define DS_K3M200X 875 //Ȩ޿ +#define DS_K3M100X 879 //ͨ +#define DS_K1T8101XT 881 //ʶŽһ +#define DS_K1T8101XX 882 //ʶŽһ +#define DS_K5604 883 //5604֤豸 +#define DS_K1T607XXXX 884 //жŽһDS_K1T607M/MF/E/EF/MG/MFG?MW/MFW/TM/TMF/TE/TEF/TMG/TMFG/TMW/TMFW +#define DS_K1A850X 885 //Ͷ˾ָƿڻ +#define DS_K1T800X 886 //Ͷ˾ָŽһ +#define DS_K1T610XXXX 887 //жŽһDS_K1T610M/MF/E/EF/MG/MFG?MW/MFW/TM/TMF/TE/TEF/TMG/TMFG/TMW/TMFW +#define DS_K1T8115X 888 //DS-K1T8115DS-K1T8115MDS-K1T8115M-Z ʶһ +#define DS_K1T815LC_M 889 //ʶһ +#define DS_K1T606M_Z 890 //ʶһ +#define DS_K5607_XXX 891 //K5607ᱡͨ +#define DS_K1T806X 892 //Ͷ˾ŽһDS-K1T806ϵ +#define DS_K1T950MX 893 //ָŽһ +#define DS_K1T331XX 894 //ͶŽһ +#define DS_K1T671T 895 //Žһ +#define DS_K1T671 896 //Žһ +#define DS_K5671 897 //ᱡͨ +#define DS_K1T640 898 //4.3Žһ +#define DS_K1A802A 899 //ָƿڻ + +#define DS_6800M 900 //68M +#define DS_68NTH 901 //Ϣ +#define DS_D60S 902 //Ϣ +#define DS_D60W 903 //ϢWindowsն +#define DS_D10 931 //Ͷʾ豸 +#define DS_3K0X_NM 951 //շ +#define DS_3E2328 952 //׽ +#define DS_3E1528 953 //ǧ׽ +#define SCREEN_LINK_SERVER 971 //Ļ +#define DS_D51OPSXX 972 //OPSԺ +//һ廯̨ +#define IP_PTSYS_MEGA200 1001 //IP 200һ廯̨ +#define IPCAM_FISHEYE 1002 // +#define IPCAM_FISHEYE_E 1003 // + +//68xxϵ˫Ŀ3D +#define IPCAM_BINOCULAR 1004 //˫Ŀ + +#define IPCAM_365 1010 //֧365ƽ̨IPC CAM +#define IPCAM_R0 1011 //֧A5Sƽ̨IPC CAM +#define IPCAM_R1 1012 //֧385ƽ̨IPC CAM +#define IPCAM_R2 1013 //֧R2ƽ̨IPC CAM +#define IPCAM_R3 1014 //֧8127ƽ̨IPC CAM +#define IPCAM_R4 1015 //֧S2ƽ̨IPC CAM + +#define IPDOME_365 1110 //֧365ƽ̨IPD CAM +#define IPDOME_R0 1111 //֧A5Sƽ̨IPD CAM +#define IPDOME_R1 1112 //֧385ƽ̨IPD CAM +#define IPDOME_R2 1113 //֧R2ƽ̨IPD CAM +#define IPDOME_R3 1114 //֧8127ƽ̨IPD CAM +#define IPDOME_R4 1115 //֧S2ƽ̨IPD CAM +#define ITCCAM_R3 1211 //֧8127ƽ̨ITCCAM + +//˻ҵ豸1300~1350 +#define UAV_S 1300 //˻վ豸 Ummanned Aerial Vehicle C Station + +//豸 2013-11-19 +#define TRAFFIC_ECT 1400 //ECT豸 +#define TRAFFIC_PARKING_SERVER 1401 //ͣ +#define TRAFFIC_TME 1402 //ڿƻ +// DVR +#define DS90XXHW_ST 2001 // DS90XXHW_STDVR +#define DS72XXHX_SH 2002 // DS-72xxHV_SH, DS-72xxHF-SH +#define DS_92XX_HF_ST 2003 // DS-92XX-HF-ST +#define DS_91XX_HF_XT 2004 // 9100DVR_HF_XT +#define DS_90XX_HF_XT 2005 // 9000DVR_HF_XT +#define DS_73XXHX_SH 2006 // 7300DVR_HX_SH +#define DS_72XXHFH_ST 2007 // 7200DVR_HFH_ST +//DS_67ϵ + +#define DS_67XXHF_SATA 2008 // DS-67XXHF-SATA +#define DS_67XXHW 2009 // DS-67XXHW +#define DS_67XXHW_SATA 2010 // DS-67XXHW-SATA +#define DS_67XXHF 2011 // DS-67XXHF + +//Netra2.3 +#define DS_72XXHF_SV 2012 // DS-72xxHF-SV +#define DS_72XXHW_SV 2013 // DS-72xxHW-SV + +#define DS_81XXHX_SH 2014 // 8100DVR_HX_SH + +#define DS_71XXHX_SL 2015 //СDVR + +#define DS_76XXH_ST 2016 //DS_76XXH_ST + + +#define DS_73XXHFH_ST 2017 //73HFHϵ +#define DS_81XXHFH_ST 2018 //81HFHϵ ST + +#define DS_72XXHFH_SL 2019 //hi3521 +#define DS_FDXXCGA_FLT 2020 //2λATM + +#define IDS_91XX_HF_ST_A 2100 //iDS-9100HF-ST/A +#define IDS_91XX_HF_ST_B 2101 //iDS-9100HF-ST/B +#define IDS_90XX_HF_ST_A 2102 //iDS-9000HF-ST/A +#define IDS_90XX_HF_ST_B 2103 //iDS-9000HF-ST/B +#define IDS_81XX_HF_ST_A 2104 //iDS-8100HF-ST/A +#define IDS_81XX_HF_ST_B 2105 //iDS-8100HF-ST/B +#define IDS_80XX_HF_ST_A 2106 //iDS-8000HF-ST/A +#define IDS_80XX_HF_ST_B 2107 //iDS-8000HF-ST/B +#define IDS_8104_AHFL_ST 2108 //ܻATM +#define IDS_2CD6812F_C 2109 //ֱ˫Ŀ + + +// NVR +#define DS_77XXN_ST 2201 // NVR DS-77XXHF-ST +#define DS_95XX_N_ST 2202 // 95XXN_ST NVR +#define DS_85XX_N_ST 2203 // 85XXN_ST NVR +#define DS_96XX_N_XT 2204 // 9600NVR_N_XT +#define DS_76XX_N_SE 2205 // 7600NVR_N_SE + +//Ѷ +#define DS_86XXSN_SX 2206 // 8608NVR_SX4DS-8608SNL-SPDS-8608SNL-STDS-8608SN-SPDS-8608SN-STLʾLCDPPOE + +//#define DS_96XX_N_RX 2207 //DS-96XX-N-RX +#define DS_71XXN_SL 2208 //DS-71XXN-SL òƷ +#define CS_N1_1XX 2209 //CS_N1_1XXҵ + +#define DS_71XXN_SN 2210 //71XX_N_SN òƷ +#define CS_N1_2XX 2211 //N1_2XX ҵ +#define DS_76XX_N_SHT 2212 //76XX_N_SHT ˻߲Ʒ +#define DS_96XXX_N_E 2213 //NVR(256) + +#define DS_76XXN_EX 2214 /* 76 78ϵNVRע 4 8 16·E1һλ 8 16 32· E2λ /N /P豸*/ +#define DS_77XXN_E4 2215/* 77ϵNVR ע8 16 32· /N /P豸*/ +#define DS_86XXN_E8 2216/* 86ϵNVR ע8 16 32· /N /P豸*/ +#define DS_9616N_H8 2217 //DS_9616N_H8 +#define DS_72XXHX_EX_GXY 2218 //ʾ72ϵDVRƷ72xxʾͨHXĿǰHW,Ϊ˺չEXʾλG XYʾ +#define DS_76XXN_EX_GXY 2219 //ʾ76ϵNVRƷ76xxʾͨEXʾλG XYʾ +#define DS_72XXHXH_SH_21 2220 // 72XXHXH_SH_21 +#define DS_72XXHXH_SH_31 2221 // 72XXHXH_SH_31 +#define DS_73XXHXH_SH_31 2222 // 73XXHXH_SH_31 +#define DS_81XXHXH_SH_31 2223 // 81XXHXH_SH_31 +#define DS_71XXHXH_SH_21 2224 // 71XXHXH_SH_21 +#define DS_71XXHXH_SH_31 2225 // 71XXHXH_SH_31 +#define DS_NBXX_N_E1_X 2226 //Яʽ +#define DS_96XXN_FX 2230 +#define DS_86XXN_FX 2231 +#define DS_96XXXN_HX 2232 //96ϵ豸 + + +#define DS_86XXN_I 2233 //DS_86XXN_I +#define DS_77XX_N_I 2234 //DS_77XX_N_I +#define DS_76XX_N_I 2235 //DS_76XX_N_I +#define DS_78XX_N_I 2236 //DS_78XX_N_I +#define DS_96XXXN_IX 2237 //DS-96XXX_N_IDS-96128N-I16DS-96128N-I24DS-96256N-I16DS-96256N-I24 + +#define DS_90XXHXH_XT 2238 //DS_90XXHXH_XTDS-9016HQH-XT + +#define DS_NVR_ALL 2239 //NVR豸ͳһ룬NVRƷѶϵУʹDS_NVR_ALL +#define DS_DVR_ALL 2240 //DVR豸ͳһ룬DVRƷѶϵУʹDS_DVR_ALL + +//PCNVR +#define PCNVR_IVMS_4200 2301 // PCNVR_IVMS_4200 + + +//ܷ +#define IVMS_6200_TP 2401 //IVMS-6200 ͨյ +#define IVMS_6200_TF 2402 //IVMS-6200 ͨȡ֤ +#define IVMS_6200_D 2403 //iVMS-6200(/D) +#define IDS_81XXAHW_ST 2405 //iDS-81xxAHW-ST +#define IDS_81XXAHW_SP 2406 //iDS-81xxAHW-SP +#define IDS_81XXAHWL_ST 2407 //iDS-81xxAHWL-ST +#define IDS_81XXAHWL_SP 2408 //iDS-81xxAHWL-SP +#define IDS_9616N_H8 2409 //iDS_9616N_H8 +#define IVMS_6200_SMD 2500 //IVMS_6200_SMD +//HISI3531ƽ̨ATM DVR LʾҺPʾpoe +#define DS_81XXAHW_ST 2501 +#define DS_81XXAHW_SP 2502 +#define DS_81XXAHWL_ST 2503 +#define DS_81XXAHWL_SP 2504 + +//TVI ATM +#define DS_81XXAHGH_E4 2601 //DS_81XXAHGH_E4 + +/************************************************************************/ +/* ʾƷ豸startϵ豸ͣ */ +/************************************************************************/ + +/** B20ϵУ4001-4100 */ + +#define DS_6904UD_AIOE_H_CLASS 4002 //B20һ +#define DS_6402HFH_B21B_CLASS 4005 //B21 +#define DS_6902UD_B21H_CLASS 4006 //B21 HDMI +#define DS_6902UD_B21D_CLASS 4007 //B21 DVI +#define DS_6902UD_B21V_CLASS 4008 //B21 VGA +#define DS_6904UD_B20D_CLASS 4010 //B20 DVI +#define DS_6904UD_B20V_CLASS 4011 //B20 VGA +#define DS_B30_MCU 4012 //B30ذ +#define DS_B30_SW 4013 //B30 +#define DS_B30_04XI 4014 //B30 +#define DS_B30_04XO 4015 //B30 +#define DS_B31 4016 //B31һ + +//B21һ豸ͺ +#define DS_AIOH_MCU_NP 4042 //ذ +#define DS_6404HFH_AIOH_D 4043 //4·DVI +#define DS_6908UD_AIOH_D 4044 //4·DVI +#define DS_6908UD_AIOH_H 4045 //4·HDMI + +//һ豸ͺ +#define DS_69XXUD_B 4046 //һ +#define DS_6404HFH_I 4047 //4·DVI +#define DS_6904UD_O 4048 //8·HDMI + + +//ʽƴ +#define DS_C12L_0204H 4060 //Сƴ + +//ARһ 4101 - 4120 20 +#define DS_D1A24FDI 4101 //ARһ + +//5001-5050 +#define DS_69XXHD 5001 //69XXHD +#define DS_69UD_V2 5002 //69UDV2 +#define DS_69UD_T 5003 //6볬 +#define DS_6AUD 5004 // +#define DS_6AUD_V3 5005 //V3 + +//ת 5401 - 5450 50 +#define DS_68VTG 5401 //ۺת + +//Ƶ豸 5571 - 5590 20 +#define DS_65VT0010 5571 //һʽն +#define DS_65VM_MCU 5572 //ܶMCUذ +#define DS_65VM_MPC 5573 //ܶMCUýԴ +#define DS_65VT2XXYR_SF 5574 //˾Ѷն +#define DS_65VT0XXY 5575 //Ƶն +#define DS_65VT0010Z 5576 //һʽն +#define DS_65VT0050Z 5577 //ܷʽն +#define DS_65VS0XXXS 5878 //opensips豸 +#define DS_65VS0XXXM 5579 //Ƶƽ̨豸 +#define DS_65VM00XX_X 5580 //ƵX86ϵͳMCU +#define DS_65VA800_BOX 5581 //Ƶ˷ +#define DS_65VT0020S 5582 //һʽĿܻն +#define DS_65VT0020D 5583 //һʽ˫Ŀܻն +#define DS_65VM00XX_G 5584 //ƵMCU +#define DS_65VM0000_GPU 5585 //Ƶý崦 +#define DS_65VTA011 5586 //Ŀ߼ն +#define DS_65VCP1100M_S 5587 //4KĿ(ܻն) +#define Z_MINISMC_01 5588 //4K USB + +#define DS_65VCAXX 5590 //߼ + +#define DS_65VTR00X0 5791 //ʽŴն +#define DS_65VA800AM_S 5792 //Ƶ˷ +#define DS_65VAM0100UB 5793 //Ƶ˷ +#define DS_65VA800SW 5794 //Ƶת +#define DS_65VTA22XX_X 5795 //SmartEye A2200 +#define DS_65VCAXXXX 5796 //Smart Meeting Bar + +//ƵģY10ϵУ +#define DS_Y10_MCU 5771 //ذ +#define DS_Y10_SW1 5772 // +#define DS_6516UD_Y10D 5773 //8·DVIʾӿڽ +#define DS_6532UD_Y10D 5774 //16·DVIʾӿڽ +#define DS_6E2724_Y10 5775 //24׽ӿڱ +#define DS_68SAA_AA_Y10 5776 //˫·2620ڴ32Gҵ +#define DS_68SBA_AA_Y10 5777 //˫·2630ڴ32Gҵ +#define DS_68SCA_AA_Y10 5778 //˫·2650ڴ32Gҵ +#define DS_68GPU_A1_Y10 5779 //P4Կ +#define DS_CPU_SERVER 5780 //CPU +#define DS_GPU_SERVER 5781 //GPU +#define DS_BIGDATA_SERVER 5782 //ݷ + + +//һϵ +#define DS_B80_MCU 5821//ذ +#define DS_B80_SW 5822// +#define DS_B80_SR_01 5823// +#define DS_B80_AI04 5824//ܷ壬֧4· +#define DS_B80_ST 5825//洢壬֧42.52TӲ +#define DS_B80_D04 5826//ݲɼҵ +#define DS_B80_BNC08 5827// +#define DS_B80_SDI08 5828// +#define DS_B80_VP 5829//ת/ +#define DS_B80_VO02 5830//Ƶ +#define DS_B81_MCU 5831//B81ģ +#define DS_B81_AI 5832//B81ܷģ +#define DS_B81_TVI 5833//B81 ģƵģ飨TVI/BNC +#define DS_B81_APL 5834//B81ģ X86ƽ̨ +#define DS_B81_D08T 5835//B81 ݲɼģ +#define DS_B85 5836//B85С +#define DS_B86 5837//B86п +#define AX_GW100_V16A00M 5838//B81Ǹ룩OEM豸 +#define DS_B81_AT_M 5839//B81Ǹ룩 + +// +#define DS_3LGCX 5841//ͨ +#define DS_3LGRX 5842//LoRa +#define DS_3LGT4 5843 //豸 +#define DS_3LGT40_N 5844 //NB-IoT +#define DS_3LGS_I 5845 // + + +// +#define DS_3E11XX 5681 //׽ +#define DS_3E13XX 5682 //ǧн +#define DS_3E15XX 5683 //ǧ׽ +#define DS_3E11XXP 5684 //POE +#define DS_3E13XXP 5685 //ǧPOE +#define DS_3E15XXP 5686 //ǧPOE +#define DS_3E1520U 5687 //USB +#define DS_3EODM_H 5688 // +#define DS_3EODM_W 5689 //ï +#define DS_3T1XXX 5690 //DS-3T1XXXϵн +#define DS_3E2XXX 5861 //ȫܽ +#define DS_3E2XXXP 5862 //ȫܽ-POE +#define DS_3E3XXX 5863 //ȫܽ +#define DS_3E3XXXP 5864 //ȫܽ-POE + +//շ +#define DS_3D01R_NM 5691 //շտ +#define DS_3D01T_NM 5692 //շͻ +#define DS_3K02_RNM 5693 //շܿ + + +/************************************************************************/ +/* ʾƷ豸endϵ豸ͣ */ +/************************************************************************/ + +#define IDS_90XX_HXH_XX_S 6001 //DVRƷ +#define IDS_90XX_HXH_XX_FA 6002 //DVRƷ + +#define DS_81XX_SHXL_K4 6101 //KY2017ƽ̨ѶDS-8104SHFHL-K4/4P + +#define DS_8116THFHL_F4 6201 //׼ͥDS-8116THFHL-F4 + +#define DS_81XXAHQ_E4 6301 //DS_81XXAHQ_E4(TVI ATM) +#define IDS_81XXAHQ_E4 6302 //IDS_81XXAHQ_E4(TVI ATM) + +#define IDS_86XX_NX_A 7501 //ATM NVR(iDS-8632NX-I8/A) +#define IDS_96XX_NX_S 7502 //峬NVR +#define IDS_96XX_NX_V 7503 //ԼվNVR +#define IDS_96XX_NX_FA 7504 //NVR iDS-9632NX-I8/FA +#define IDS_86XX_NX_IX_B 7505 //86ϵаȫñNVRƷ +#define IDS_67XX_NX_S_X 7506 //ܰƷNVR(IDS_67XX_NX/S_X) +#define NP_ST204_X_ 7507 //ڶܰǣNP_ST204_S:NP_ST204_D:NP_ST204_D_4G +#define NP_ST_ANJIAN 7508 // + +#define IDS_ECDXX_HE 8001//ѧĿ +#define IDS_ECDXX_HT 8002//ʦĿ + +#define IDS_ECDXX_E 8101//4K + +#define IDS_EPTXX_HF 8201//ץĻ + + +#define DS_2CD69XXX_I 8351 //3200WȫƴIPCͺ +#define DS_TRIXX 8471 //Ƶ̶ʽDS_TRI900 + +#define DS_K1F600_D6EXX 10501 //๦ܲɼ +#define DS_K1T341 10502 //Ž +#define DS_K1T641XXX 10503 //жͨŽ +#define DS_K1T642XXX 10504 //жͨŽ +#define DS_K1T601 10505 //ƵƷ +#define DS_K1T672XXX 10506 //7糬ŽƷ +#define DS_K56A0X 10507 //׿ж֤ +#define DS_K56Q_F70 10508 //Ͷ) +#define DS_K1T6Q_F70M 10509 //F70ϵʶһ) +#define DS_K1T6Q_F40X 10510 //F40ϵʶһ) +#define DS_K5604A_XXX 10511 //еͶ +#define DS_K1A330X 10512 //Ͷڻ) +#define DS_K1T804A 10513 //ָŽһ +#define DS_K1T202 10514 //ָŽһ +#define DS_K1T343MX 10515 //Žһ) +#define DS_K1T331W_D 10516 //ͶŽһDS-K1T331W(D) +#define DS_K1T671WX_D 10517 //ŽһDS-K1T671M(D) DS-K1T671MW(D) DS-K1T671MG(D) +#define DS_K1T680X 10518 //8.0ŽDS-K1T680M DS-K1T680D +#define DS_K1T640A 10519 //ŽһDS-K1T640AM DS-K1T640AMW +#define DS_K1F600U_D6E_X 10520 //๦ܲɼ(DS-K1F600U-D6E DS-K1F600U-D6E-F DS-K1F600U-D6E-IF) +#define DS_K1T671AMX 10521 //Žһ(DS-K1T671AM DS-K1T671AMW DS-K1T671AM-5G) +#define DS_VISITORXX 10530 //ÿͻ +#define DS_FACE_PAYMENT_TERMINALXX 10531 //ѻ +#define DS_K1T341B_T 10532 //Žһ,ֲ֧£DS-K1T341BMWI-T DS-K1T341BMI-T +#define DS_K1T343 10533 //F1Proƽ̨4.3ŽһDS-K1T343M/MX/MW/MWX/MF/MFX/MFW/MFWX/EX/EWX/EFX/EFWX,D10,D10W/F/FW +#define DS_K1T673 10534 //F1Plusƽ̨7Žһҵ(DS_K1T673M/MG/MW/TMW/TMG/DX/DWX/TDX/TDWX/TDGX) +#define DS_K1T981 10535 //Ĥʶһ +#define DS_K5680X 10536 //K5680ϵ8֤豸 +#define DS_K5022A_X 10537 //5022Aϵа׿ÿͻ +#define DS_K1T342 10538 //F1Proƽ̨4.3ŽһDS-K1T342M/MX/MW/MWX/MF/MFX/MFW/MFWX/EX/EWX/EFWX/DX/DWX,D11,D11S/Pro/Plus +#define DS_K1T690 10539 //DS_K1T690 +#define DS_K1T340 10540 //DS_K1T340 +#define DS_K1T6QT_F72 10541 //F72ϵʶһ) +#define DS_K1T641A 10542 //F1Plusƽ̨4.3Žһl641ϵ +#define DS_K1TACS 10543 //ŽƷֵISAPI¼豸ϢṹwDevTypeֶη +#define DS_K1T6_GS3 10544 //ҵʶһDS-K1T6-GS3ϵ +#define DS_K1T6Q_F41_3XF 10545 //ʶһDS_K1T6Q_F41_3XFϵ +#define DS_K56A1X 10546 //K56A1ϵ֤豸 +#define DS_K1T320MFW 10547 //F2 Proƽ̨2.4糬Ͷ˾Žһ +#define DS_K5033X 10548 //5033ϵа׿ʽÿͻ + +#define DS_K1T681X 10550 //A2Sƽ̨8ŽһDS-K1T681M DS-K1T681MW DS-K1T681MG DS-K1T681M-3Dȣ +#define DS_K5670X 10551 //F2proͶ7繤K5670ϵ +#define DS_K1T670X 10552 //жҵһʽDS-K1T670ϵ + +//ÿͻ1053010601-10650 +#define DS_K3501 10601 //ÿͻK3501ϵ +//ѻ1053110651-10700 +#define DS_K6600X 10651 //K6600ϵ̳ + +//ܹ10701-10750 +#define DS_KL_CABINET 10701 //ܹƷֵISAPI¼豸ϢṹwDevTypeֶη + +//ݿ10751-10800 + +//Աͨ10801-10850 +#define DS_K3B961 10801 //ԱͨƷֵISAPI¼豸ϢṹwDevTypeֶη + +#define DS_KBS6XXX_WX 11001 //DS-KBS6100-WV/DS-KBS6101-W/DS-KBS6100-W/DS-KBS6101-W/DS-KBS6200-W/DS-KBS6201-W +#define DS_KBC6XXX_X 11002 //DS-KBC6300/DS-KBC6600 +#define DS_KBI6000_P 11003 //ѰͲDS-KBI6000-P +#define DS_KBA6XXX 11004 //豸()DS-KBA6120/DS-KBA6240/DS-KBA6360/DS-KBA6650/DS-KBA6400-2/DS-KBA6800-2 + +#define DS_IEXX_E_J 11501 //ܷ + +#define IDS_67XX_NX_A 12501 //67ϵNVSƷ(iDS-6704NX/A) +#define IDS_67XX_NX_L 12502 //67ϵ¼NVSƷ +#define IDS_ENIXX_XHE 12503 //¼NVSҵרҵƷ +#define IDS_67XX_NX_V 12504 //ԼվNVS +#define IDS_67XX_NX_B 12505 //67ϵаȫñNVSƷ + +//豸 +#define DS_IE63XX_E_FA 13001 //׵ +#define DS_DS_GPKIA 13002 //ӥ +#define DS_DS_PURE 13003 //״ +#define DS_DS_FS 13004 //̬ݷ +#define DS_DS_FD 13005 //ץļ +#define DS_DS_BLADE 13006 // +#define DS_DS_HMCP 13007 //ģͶԱȷ + +//豸 +#define DS_LNX_RF 13501 // + +//״豸 13551-14000500 +#define DS_PA_RADAR 13551 //PA״ +#define DS_PERIMETER_RADAR 13552 //ܽ״ +#define DS_SECURITY_RADAR 13553 //120װ״ +#define DS_IMAGING_RADAR_PANEL 13554 //״ + +//豸 14001-14500500 +#define DS_N1104X 14001 // +#define DS_N1103X 14002 //ûϢ豸 +#define NP_FSC201 14003 //ˮ豸 +#define NP_FDC240 14004 //ʽ̽ +#define DS_N1107 14005 // +#define NP_FAXXX 14006 // +#define NP_FVY100 14007 //Ƶ̸ +#define NP_FVW100 14008 // +#define NP_FVG100 14009 // +#define NP_FVY300 14010 //Ƶ̸ +#define NP_FVR212_P 14011 //һ̽ +#define NP_FVR213_P 14012 //һ̽() + +//豸 14501-15000500 +#define NP_ST204_X 14501 //ڶܰ +#define ISD_SG2XXL_X 14502 //(ISD-SG206L ISD-SG218L ISD-SG218L-F) +#define ISD_SL300T 14503 //Һ + +//ģƵ豸 15001-15500500 +#define IPA 15001 +/**********************豸 end***********************/ +/**********************豸 begin**********************/ + +/* dvr 1-50 */ +#define DEV_CLASS_DVR 1 //ͨdvr +#define DEV_CLASS_INTERROGATION 2 //Ѷ +#define DEV_CLASS_SIMPLE_TRAIL 3 //ͥ +#define DEV_CLASS_TRAIL 4 //׼ͥ +#define DEV_CLASS_RECORD_PLAY 5 //¼ +#define DEV_CLASS_ATM 6 //ATM + +/* dvs 51-100 */ +#define DEV_CLASS_DVS 51 //ͨdvs + +/* nvr 101-150 */ +#define DEV_CLASS_NVR 101 //ͨnvr + +/* ipc 151-200 */ +#define DEV_CLASS_GUN 151 //ipcǹ +#define DEV_CLASS_BALL 152 //ipc +#define DEV_CLASS_SNAP 153 //ץĻ +#define DEV_CLASS_INTELLI_TILT 154 //̨ +#define DEV_CLASS_FISH_EYE 155 // +#define DEV_CLASS_2DP_Z 156 //ӥ +#define DEV_CLASS_2DP 157 //Сӥ +#define DEV_CLASS_PT 158 //ȫϸ +#define DEV_CLASS_TRI 159 //Ƶ̶ʽ + +/* CVR 201 - 250*/ +#define DEV_CLASS_CVR 201 //CVR + +/* 251 - 300*/ +#define DEV_CLASS_B20 251 //B20ϵ +#define DEV_CLASS_B10 252 //B10ϵ +#define DEV_CLASS_DECODER 253 // +#define DEV_CLASS_MATRIXMANAGEDEVICE 254 // +#define DEV_CLASS_OTICAL 255 //˻ +#define DEV_CLASS_CODESPITTER 256 // +#define DEV_CLASS_ALARMHOST 257 //ҵ +#define DEV_CLASS_MOVING_RING 258 //豸 +#define DEV_CLASS_CVCS 259 //ʽ +#define DEV_CLASS_DVCS 260 //ֲʽ +#define DEV_CLASS_TRANSCODER 261 //ת +#define DEV_CLASS_LCD_SCREEN 262 //LCDĻ +#define DEV_CLASS_LED_SCREEN 263 //LEDĻ +#define DEV_CLASS_MATRIX 264 // +#define DEV_CLASS_CONFERENCE_SYSTEM 265 //Ƶ豸 +#define DEV_CLASS_INFORMATION_RELEASE_EQUIPMENT 266 //Ϣ豸 +#define DEV_CLASS_NET_GAP 267 //բ +#define DEV_CLASS_MERGE 268 // +#define DEV_CLASS_REAR_PROJECTION 269 //Ͷʾ豸 +#define DEV_CLASS_SWITCH 270 // +#define DEV_CLASS_FIBER_CONVERTER 271 //շ +#define DEV_CLASS_SCREEN_SERVER 272 //Ļ +#define DEV_CLASS_SCE_SERVER 273 //ץ +#define DEV_CLASS_WIRELESS_TRANS 274 //ߴ豸 +#define DEV_CLASS_Y10_SERIES 275 //Y10ϵ +#define DEV_CLASS_SAFETY_MAVHINE 276 //һ +#define DEV_CLASS_IOTGATEWAY 277 // +#define DEV_CLASS_NET_MANAGEMENT_EQUIPMENT 278 //豸 +#define DEV_CLASS_PUBLISH_SIGNAGE 279 //Ӱ +#define DEV_CLASS_AR_MACHINE 280 //ARһ +/* 301 - 350*/ +#define DEV_CLASS_VIDEO_ALARM_HOST 301 //Ƶ +#define DEV_CLASS_NET_ALARM_HOST 302 //籨 +#define DEV_CLASS_ONE_KEY_ALARM 303 //һʽƷ +#define DEV_CLASS_WIRELESS_ALARM_HOST 304 //߱ +#define DEV_CLASS_ALARM_MODULE 305 //ģ +#define DEV_CLASS_HOME_ALARM_HOST 306 //ñ +#define DEV_CLASS_HYBRID_ALARM_HOST 307 //ϱ +#define DEV_CLASS_NETWORK_RECEIVER 308 //ӾƷ + +/* Ž 351 - 400*/ +#define DEV_CLASS_ACCESS_CONTROL 351 //ŽƷ +#define DEV_CLASS_VISITOR 352 //ÿͻƷ +#define DEV_CLASS_FACE_PAYMENT_TERMINALXX 353 //ѻƷ +#define DEV_CLASS_CABINET 354 //ܹ +#define DEV_CLASS_LADDER_CONTROL 355 //ݿ +#define DEV_CLASS_PERSONNEL_CHANNEL 356 //Աͨ + +/* ӶԽ 401 - 450*/ +#define DEV_CLASS_VIDEO_INTERCOM 401 //ӶԽ + +/* ˻ 451 - 500*/ +#define DEV_CLASS_UMMANNED_AERIAL_VEHICLE 451 //˻Ʒ + +/* ƶƷ: 501-550*/ +#define DEV_CLASS_MOBILE 501 //ƶƷ + +/* ƶ豸: 551-600*/ +#define DEV_CLASS_MOBILE_VEHICLE 551 //ƶ豸 + +//ܷǣ601-650 +#define DEV_CLASS_INTELLIGENT_ANALYZER 601 //ܷ + +//ܽͨ651-700 +#define DEV_CLASS_INTELLIGENT_TRAFFIC_SERVER 651 //ܽͨ +#define DS_TP2200_EC 652 //ͻʾ + +/* nvs 701-750 */ +#define DEV_CLASS_NVS 701 //ͨnvs + +/*ԴRFIDϵ 751-800*/ +#define DS_TRI21A_1_P 751 //ԴRFIDȡ + +/* 豸801-850 */ +#define DS_CLASS_FA 801 //׵ +#define DS_CLASS_PURE 802 //״ +#define DS_CLASS_FS 803 //̬ݷ +#define DS_CLASS_FD 804 //ץļ +#define DS_CLASS_HAWK 805 //ӥ +#define DS_CLASS_BLADE 806 // +#define DS_CLASS_HMCP 807 //ģͶԱȷ + +/* 851 - 900*/ +#define DEV_CLASS_SMART_LOCK 851 // + +/* ״ 901 - 950*/ +#define DEV_CLASS_RADAR 901 //״Ʒ + +/* ǻ 951 - 1000*/ +#define DEV_CLASS_FIRE_CONTROL 951 //Ʒ + +/* 1001 - 1050*/ +#define DEV_CLASS_SECURITY_CHECK 1001 //Ʒ + +#define DEV_CLASS_CONFERENCE_TABLET 1051 //ƽ + +#define DEV_CLASS_JUDICIAL_TABLET 1101 //˾ƽ + +/*ȫϸ 8451-8470*/ +#define iDS_PT 8451 //ȫϸ + +/*ӾƷ 9851 - 9900*/ +#define DS_XCM1_IP 9851 //Ӿ + +/* 豸 65534 */ +#define DEV_CLASS_DEFAULT 65534 //Ĭ豸 +/**********************豸 end**********************/ + +/******************************ȡ*********************************/ +//ȡ +#define DEVICE_SOFTHARDWARE_ABILITY 0x001 //豸Ӳ +#define DEVICE_NETWORK_ABILITY 0x002 //豸 +#define DEVICE_ENCODE_ALL_ABILITY 0x003 //豸б +#define DEVICE_ENCODE_CURRENT 0x004 //豸ǰ +#define IPC_FRONT_PARAMETER 0x005 //ipcǰ˲1.0 +#define IPC_UPGRADE_DESCRIPTION 0x006 //ipcϢ +#define DEVICE_RAID_ABILITY 0x007 //RAID +#define DEVICE_ENCODE_ALL_ABILITY_V20 0x008 //豸б2.0 +#define IPC_FRONT_PARAMETER_V20 0x009 //ipcǰ˲2.0 +#define DEVICE_ALARM_ABILITY 0x00a // +#define DEVICE_DYNCHAN_ABILITY 0x00b //豸ͨ +#define DEVICE_USER_ABILITY 0x00c //豸û +#define DEVICE_NETAPP_ABILITY 0x00d //豸Ӧò +#define DEVICE_VIDEOPIC_ABILITY 0x00e //豸ͼ +#define DEVICE_JPEG_CAP_ABILITY 0x00f //豸JPEGץͼ +#define DEVICE_SERIAL_ABILITY 0x010 //RS232RS485 +#define DEVICE_ABILITY_INFO 0x011 //豸ͨͣݷ͵ڵ +#define STREAM_ABILITY 0x012 // +#define SYSTEM_MANAGEMENT_ABILITY 0x013 //豸ϵͳ +#define IP_VIEW_DEV_ABILITY 0x014 //IPӶԽֻ +#define VCA_DEV_ABILITY 0x100 //豸ܷ +#define VCA_CHAN_ABILITY 0x110 //쳣Ϊ +#define TRANSFER_ABILITY 0x120 +#define MATRIXDECODER_ABILITY 0x200 //·ʾ +#define VIDEOPLATFORM_ABILITY 0x210 //Ƶۺƽ̨ +#define VIDEOPLATFORM_SBUCODESYSTEM_ABILITY 0x211 //Ƶۺƽ̨ϵͳ +#define WALL_ABILITY 0x212 //ǽ +#define MATRIX_ABILITY 0x213 //SDI +#define DECODECARD_ABILITY 0x220 //뿨 +#define VIDEOPLATFORM_ABILITY_V40 0x230 //Ƶۺƽ̨ +#define MATRIXMANAGEDEVICE_ABILITY 0x240 // +#define MATRIXDECODER_ABILITY_V41 0x260 // +#define DECODER_ABILITY 0x261 //xml +#define DECODECARD_ABILITY_V41 0x270 //뿨V41 +#define CODECARD_ABILITY 0x271 //뿨 +#define SNAPCAMERA_ABILITY 0x300 //ץĻ +#define ITC_TRIGGER_MODE_ABILITY 0x301 //IPC豸Ĵģʽ +#define COMPRESSIONCFG_ABILITY 0x400 //ȡѹ +#define COMPRESSION_LIMIT 0x401 //ȡѹ +#define PIC_CAPTURE_ABILITY 0x402 //ͼƬֱ +#define ALARMHOST_ABILITY 0x500 //籨 +#define IT_DEVICE_ABILITY 0x501 //ܽͨ +#define SCREENCONTROL_ABILITY 0x600 // +#define SCREENSERVER_ABILITY 0x610 // +#define FISHEYE_ABILITY 0x700 // +#define LCD_SCREEN_ABILITY 0x800 //LCDĻ 2013-10-12 +#define ACS_ABILITY 0x801 //Ž +#define MERGEDEV_ABILITY 0x802 // +#define CAM_FUSION_ABILITY 0x803 //ƴ +#define OPTICAL_DEV_ACCESS_ABILITY 0x805 //˻ +#define NET_RING_ABILITY 0x806 // +#define LED_ABILITY 0x807 //LED +#define PUBLISHDEV_ABILITY 0x80a //Ϣ +#define SCREEN_EXCHANGE_ABILITY 0x80b //Ļ +#define REMOTE_NETMGR_FOT_ABILITY 0x80e //Զշ +/************************************************* +ýṹ(_V30Ϊ9000) +**************************************************/ + +//Ӱ쳣Ϣ +// +#define EXCEPTION_MAJOR_MAINBOARD_BOOT 0x1 // +// +#define EXCEPTION_MINOR_PCIE_SCAN 0x1 // pcie·ɨ쳣 +#define EXCEPTION_MINOR_DOWNLOAD_SUBBOARD 0xa //Ӱ쳣 + +// +#define EXCEPTION_MAJOR_SUBBOARD_BOOT 0x2 //Ӱ +// +#define EXCEPTION_MINOR_INEXISTENCE 0x1 //PCI-EɨǰӰ岻 +#define EXCEPTION_MINOR_UBOOT_DOWNLOAD 0xa // uboot쳣 +#define EXCEPTION_MINOR_UBOOT_INIT 0xe //ubootʼ쳣 +#define EXCEPTION_MINOR_ROOTFS_DOWNLOAD 0x14 //rootfs.img쳣 +#define EXCEPTION_MINOR_UIMAGE_DOWNLOAD 0x19 //uImage쳣 +#define EXCEPTION_MINOR_UBOOT_SETBOOTFLAG 0x1e // uboot־λλ쳣 +#define EXCEPTION_MINOR_ROOTFS_BOOT_SUBBOARD 0x23 // rootfs쳣 +#define EXCEPTION_MINOR_NEED_FILE_FINISH 0x28 //Ӱļ쳣 + +// +#define EXCEPTION_MAJOR_SUBBOARD_HARDWARE 0x3 //ӰӲ +// +#define EXCEPTION_MINOR_AD 0x1 //AD쳣 +#define EXCEPTION_MINOR_DA 0xa // DA쳣 +#define EXCEPTION_MINOR_TIMER 0xb //ʱ쳣 + +// +#define EXCEPTION_MAJOR_FPGA 0x4 //FPGA +// +#define EXCEPTION_MINOR_IDLE 0x1 //޷IDLE +#define EXCEPTION_MINOR_LANE 0xa // LANE OKʧ +#define EXCEPTION_MINOR_REGISTER_ALL_F 0xe //FPGAĴȫF +#define EXCEPTION_MINOR_MEMORY_INIT_FAIL 0x14 //FPGAڴʼʧ +// +#define EXCEPTION_MAJOR_DSP 0x5 //DSP + +// +#define EXCEPTION_MAJOR_ARM 0x6 //ARM + +// +#define EXCEPTION_MAJOR_BACKBOARD 0x7 // +// +#define EXCEPTION_MINOR_BACKBOARD_TYPE 0x1 //ȡ쳣 +#define EXCEPTION_MINOR_SERDES 0xa //ƵоƬ +#define EXCEPTION_MINOR_CLOCK 0xe //ʱӹ +#define EXCEPTION_MINOR_SYNCH 0x14 //ͬźŹ + +// +#define EXCEPTION_MAJOR_SUBBOARD_NET 0x8 //Ӱ +// +#define EXCEPTION_MINOR_IP_CONFLICT 0x1 //IPͻ +#define EXCEPTION_MINOR_DISCONNECT 0x14 // + +//[add]by zengxiaole 2017-09-27 DS-19D2000-S v2.0 +#define MAX_FIRE_ALARM_ZONE 12 // +#define MAX_FIRE_ALARM_POINT_ZONE 32 // + + +typedef enum tagCharEncodeType +{ + ENUM_MEM_CHAR_ENCODE_ERR = -1, //Error + ENUM_MEM_CHAR_ENCODE_NO = 0, //Don't know. + ENUM_MEM_CHAR_ENCODE_CN = 1, //EUC-CN, GB2312 + ENUM_MEM_CHAR_ENCODE_GBK = 2, //GBK + ENUM_MEM_CHAR_ENCODE_BIG5 = 3, //BIG5 + ENUM_MEM_CHAR_ENCODE_JP = 4, //JISX0208-1, EUC-JP + ENUM_MEM_CHAR_ENCODE_KR = 5, //EUC-KR + ENUM_MEM_CHAR_ENCODE_UTF8 = 6, //UTF-8 + ENUM_MEM_CHAR_ENCODE_ISO8859_1 = 7, //ISO-8859-n: ENUM_MEM_CHAR_ENCODE_ISO8859_1 + n -1 + ENUM_MEM_CHAR_ENCODE_UNICODE = 8, //Unicode +}CHAR_ENCODE_TYPE; + + +///////////////////////////////////////////////////////////////////////// +//Уʱṹ +typedef struct +{ + DWORD dwYear; // + DWORD dwMonth; // + DWORD dwDay; // + DWORD dwHour; //ʱ + DWORD dwMinute; // + DWORD dwSecond; // +}NET_DVR_TIME, *LPNET_DVR_TIME; + +typedef struct tagNET_DVR_TIME_V30 +{ + WORD wYear; + BYTE byMonth; + BYTE byDay; + BYTE byHour; + BYTE byMinute; + BYTE bySecond; + BYTE byISO8601; /*Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ */ + WORD wMilliSec; //룬ȲĬΪ0 + char cTimeDifferenceH; //UTCʱСʱ-12 ... +14+ʾ, byISO8601Ϊ1ʱЧ + char cTimeDifferenceM; //UTCʱӣ-30, 30, 45+ʾbyISO8601Ϊ1ʱЧ +}NET_DVR_TIME_V30, *LPNET_DVR_TIME_V30; + +typedef struct tagNET_DVR_TIME_SEARCH +{ + WORD wYear; //꣬豸OSDʱ + BYTE byMonth; //£豸OSDʱ + BYTE byDay; //գ豸OSDʱ + BYTE byHour; //ʱ豸OSDʱ + BYTE byMinute; //֣豸OSDʱ + BYTE bySecond; //룬豸OSDʱ + char cTimeDifferenceH; //ʱ׼ʱʱСʱ-12 ... +14 + char cTimeDifferenceM; //ʱ׼ʱʱӣ-30, 0, 30, 45 + BYTE byLocalOrUTC; //0-ʱЧ豸ʱ䣬豸OSDʱ 1-ʱЧ + WORD wMillisecond; //룬ȲĬΪ0 +}NET_DVR_TIME_SEARCH, *LPNET_DVR_TIME_SEARCH; + +typedef struct tagNET_DVR_TIME_SEARCH_COND +{ + WORD wYear; // + BYTE byMonth; // + BYTE byDay; // + BYTE byHour; //ʱ + BYTE byMinute; // + BYTE bySecond; // + BYTE byLocalOrUTC; //0-ʱЧ豸ʱ䣬豸OSDʱ 1-ʱЧ + WORD wMillisecond; //룬ȲĬΪ0 + char cTimeDifferenceH; //UTCʱСʱ-12 ... +14+ʾbyLocalOrUTCΪ1ʱЧ + char cTimeDifferenceM; //UTCʱӣ-30, 0, 30, 45+ʾbyLocalOrUTCΪ1ʱЧ +}NET_DVR_TIME_SEARCH_COND, *LPNET_DVR_TIME_SEARCH_COND; + + +typedef struct tagNET_DVR_TIME_V50 +{ + WORD wYear; // + BYTE byMonth; // + BYTE byDay; // + BYTE byHour; //ʱ + BYTE byMinute; // + BYTE bySecond; // + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + WORD wMillisecond; //룬ȲĬΪ0 + char cTimeDifferenceH; //UTCʱСʱ-12 ... +14+ʾbyISO8601Ϊ1ʱЧ + char cTimeDifferenceM; //UTCʱӣ-30, 0, 30, 45+ʾbyISO8601Ϊ1ʱЧ +}NET_DVR_TIME_V50, *LPNET_DVR_TIME_V50; + + + +typedef struct tagNET_DVR_CALIBRATE_TIME +{ + DWORD dwSize; + NET_DVR_TIME struTime; + WORD wMilliSec; + BYTE byRes[14]; +}NET_DVR_CALIBRATE_TIME,*LPNET_DVR_CALIBRATE_TIME; + +#define MAX_TIMESIGN_LEN 32 //ԶУʱϢ +typedef struct tagNET_DVR_TIMESIGN_CFG +{ + DWORD dwSize; + BYTE byCustomSetTimeSign[MAX_TIMESIGN_LEN/*32*/];//ԶУʱ + BYTE byRes[96]; +}NET_DVR_TIMESIGN_CFG,*LPNET_DVR_TIMESIGN_CFG; + + +typedef struct tagNET_DVR_TIME_EX +{ + WORD wYear; + BYTE byMonth; + BYTE byDay; + BYTE byHour; + BYTE byMinute; + BYTE bySecond; + BYTE byRes; +}NET_DVR_TIME_EX,*LPNET_DVR_TIME_EX; + +//ʱ(ӽṹ) +typedef struct +{ + //ʼʱ + BYTE byStartHour; + BYTE byStartMin; + //ʱ + BYTE byStopHour; + BYTE byStopMin; +}NET_DVR_SCHEDTIME, *LPNET_DVR_SCHEDTIME; + +/*豸쳣ʽ*/ +/*豸쳣ʽ*/ +#define NOACTION 0x0 /*Ӧ*/ +#define WARNONMONITOR 0x1 /*ʾϾ*/ +#define WARNONAUDIOOUT 0x2 /**/ +#define UPTOCENTER 0x4 /*ϴ*/ +#define TRIGGERALARMOUT 0x8 /**/ +#define TRIGGERCATPIC 0x10 /*ץͼϴE-mail*/ +#define SEND_PIC_FTP 0x200 /*ץͼϴftp*/ + +typedef struct tagNET_DVR_STRUCTHEAD +{ + WORD wLength; //ṹ + BYTE byVersion ; /*ߵ4λֱߵͰ汾ݰ汾ͳȽչͬİ汾ijȽ*/ + BYTE byRes; +}NET_DVR_STRUCTHEAD, *LPNET_DVR_STRUCTHEAD; + +typedef struct tagNET_DVR_HANDLEEXCEPTION_V41 +{ + DWORD dwHandleType; //쳣,쳣ʽ"" + /*0x00: Ӧ*/ + /*0x01: ʾϾ*/ + /*0x02: */ + /*0x04: ϴ*/ + /*0x08: */ + /*0x10: JPRGץͼϴEmail*/ + /*0x20: ⱨ*/ + /*0x40: ӵͼ(ĿǰֻPCNVR֧)*/ + /*0x200: ץͼϴFTP*/ + /*0x400: 齻 ۽ģʽṩԭ豸ԶɣIPC5.1.0*/ + /*0x800: PTZ(Ŀ)*/ + /*0x4000:׹Ʊ*/ + /*0x10000:ű*/ + /*0x20000:ָʾƱ*/ + DWORD dwMaxRelAlarmOutChanNum ; //ıֻ֧ͨ + DWORD dwRelAlarmOut[MAX_ALARMOUT_V40]; //ͨ + BYTE byRes[64]; // +}NET_DVR_HANDLEEXCEPTION_V41, *LPNET_DVR_HANDLEEXCEPTION_V41; + +typedef struct tagNET_DVR_HANDLEEXCEPTION_V40 +{ + DWORD dwHandleType; //쳣,쳣ʽ"" + /*0x00: Ӧ*/ + /*0x01: ʾϾ*/ + /*0x02: */ + /*0x04: ϴ*/ + /*0x08: */ + /*0x10: JPRGץͼϴEmail*/ + /*0x20: ⱨ*/ + /*0x40: ӵͼ(ĿǰֻPCNVR֧)*/ + /*0x80: ¼(ĿǰֻPCNVR֧) */ + /*0x100: ̨Ԥõ (ĿǰֻPCNVR֧)*/ + /*0x200: ץͼϴFTP*/ + /*0x400: 齻 ۽ģʽṩԭ豸ԶɣIPC5.1.0*/ + /*0x800: PTZ(Ŀ)*/ + /*0x1000:ץͼϴ*/ + /*0x2000:ű*/ + /*0x4000:׹Ʊ*/ + /*0x8000:*/ + DWORD dwMaxRelAlarmOutChanNum ; //ıֻ֧ͨ + DWORD dwRelAlarmOutChanNum; //ıͨ ʵ֧ + DWORD dwRelAlarmOut[MAX_CHANNUM_V30]; //ͨ + BYTE byWhiteLightDurationTime;//׹˸ʱ1~60s(˰׹ƱʱЧ) + BYTE byBrightness;//׹ȣΧ0-100Ĭ50 + BYTE byAudioType;// + BYTE byTimes;//Χ0-9Ĭ2, 0xff- + BYTE byRes[60]; // +}NET_DVR_HANDLEEXCEPTION_V40, *LPNET_DVR_HANDLEEXCEPTION_V40; + +//쳣ṹ(ӽṹ)(ദʹ)(9000չ) +typedef struct +{ + DWORD dwHandleType; /*ʽ,ʽ""*/ + /*0x00: Ӧ*/ + /*0x01: ʾϾ*/ + /*0x02: */ + /*0x04: ϴ*/ + /*0x08: */ + /*0x10: JPRGץͼϴEmail*/ + /*0x20: ⱨ*/ + /*0x40: ӵͼ(ĿǰֻPCNVR֧)*/ + /*0x200: ץͼϴFTP*/ + /*0x2000:ű*/ + BYTE byRelAlarmOut[MAX_ALARMOUT_V30]; + //ͨ,,Ϊ1ʾ +}NET_DVR_HANDLEEXCEPTION_V30, *LPNET_DVR_HANDLEEXCEPTION_V30; + +//쳣ṹ(ӽṹ)(ദʹ) +typedef struct +{ + DWORD dwHandleType; /*ʽ,ʽ""*/ + /*0x00: Ӧ*/ + /*0x01: ʾϾ*/ + /*0x02: */ + /*0x04: ϴ*/ + /*0x08: */ + /*0x10: JpegץͼϴEMail*/ + BYTE byRelAlarmOut[MAX_ALARMOUT]; //ͨ,,Ϊ1ʾ +}NET_DVR_HANDLEEXCEPTION, *LPNET_DVR_HANDLEEXCEPTION; + +//DVR豸 +typedef struct +{ + DWORD dwSize; + BYTE sDVRName[NAME_LEN]; //DVR + DWORD dwDVRID; //DVR ID,ң //V1.4(0-99), V1.5(0-255) + DWORD dwRecycleRecord; //Ƿѭ¼,0:; 1: + //²ɸ + BYTE sSerialNumber[SERIALNO_LEN]; //к + DWORD dwSoftwareVersion; //汾,16λ汾,16λǴΰ汾 + DWORD dwSoftwareBuildDate; //,0xYYYYMMDD + DWORD dwDSPSoftwareVersion; //DSP汾,16λ汾,16λǴΰ汾 + DWORD dwDSPSoftwareBuildDate; // DSP,0xYYYYMMDD + DWORD dwPanelVersion; // ǰ汾,16λ汾,16λǴΰ汾 + DWORD dwHardwareVersion; // Ӳ汾,16λ汾,16λǴΰ汾 + BYTE byAlarmInPortNum; //DVR + BYTE byAlarmOutPortNum; //DVR + BYTE byRS232Num; //DVR 232ڸ + BYTE byRS485Num; //DVR 485ڸ + BYTE byNetworkPortNum; //ڸ + BYTE byDiskCtrlNum; //DVR Ӳ̿ + BYTE byDiskNum; //DVR Ӳ̸ + BYTE byDVRType; //DVR, 1:DVR 2:ATM DVR 3:DVS ...... + BYTE byChanNum; //DVR ͨ + BYTE byStartChan; //ʼͨ,DVS-1,DVR - 1 + BYTE byDecordChans; //DVR · + BYTE byVGANum; //VGAڵĸ + BYTE byUSBNum; //USBڵĸ + BYTE byAuxoutNum; //ڵĸ + BYTE byAudioNum; //ڵĸ + BYTE byIPChanNum; //ͨ +}NET_DVR_DEVICECFG, *LPNET_DVR_DEVICECFG; + +/* +IPַ +*/ +typedef struct +{ + char sIpV4[16]; /* IPv4ַ */ + BYTE byIPv6[128]; /* */ +}NET_DVR_IPADDR, *LPNET_DVR_IPADDR; + +typedef union tagNET_DVR_IPADDR_UNION +{ + char szIPv4[16]; //IPv4ַ + char szIPv6[256]; //IPv6ַ +}NET_DVR_IPADDR_UNION, *LPNET_DVR_IPADDR_UNION; + +typedef struct tagNET_DVR_ADDRESS +{ + NET_DVR_IPADDR struIP; //IPַ + WORD wPort; //˿ں + BYTE byRes[2]; +}NET_DVR_ADDRESS, *LPNET_DVR_ADDRESS; + +/* +ݽṹ(ӽṹ)(9000չ) +*/ +typedef struct +{ + NET_DVR_IPADDR struDVRIP; //DVR IPַ + NET_DVR_IPADDR struDVRIPMask; //DVR IPַ + DWORD dwNetInterface; //ӿ1-10MBase-T 2-10MBase-Tȫ˫ 3-100MBase-TX 4-100Mȫ˫ 5-10M/100MӦ + WORD wDVRPort; //˿ں + WORD wMTU; //MTUãĬ1500 + BYTE byMACAddr[MACADDR_LEN]; // ַ + BYTE byEthernetPortNo; //ںţ0-Ч1-02-1Դƣֻ + BYTE byRes[1]; // +}NET_DVR_ETHERNET_V30, *LPNET_DVR_ETHERNET_V30; + +/* +ݽṹ(ӽṹ) +*/ +typedef struct +{ + char sDVRIP[16]; //DVR IPַ + char sDVRIPMask[16]; //DVR IPַ + DWORD dwNetInterface; //ӿ 1-10MBase-T 2-10MBase-Tȫ˫ 3-100MBase-TX 4-100Mȫ˫ 5-10M/100MӦ + WORD wDVRPort; //˿ں + BYTE byMACAddr[MACADDR_LEN]; //ַ +}NET_DVR_ETHERNET; + +//pppoeṹ +typedef struct +{ + DWORD dwPPPOE; //0-,1- + BYTE sPPPoEUser[NAME_LEN]; //PPPoEû + char sPPPoEPassword[PASSWD_LEN]; // PPPoE + NET_DVR_IPADDR struPPPoEIP; //PPPoE IPַ +}NET_DVR_PPPOECFG, *LPNET_DVR_PPPOECFG; + +//ýṹ(9000չ) +typedef struct +{ + DWORD dwSize; + NET_DVR_ETHERNET_V30 struEtherNet[MAX_ETHERNET]; //̫ + NET_DVR_IPADDR struRes1[2]; /**/ + NET_DVR_IPADDR struAlarmHostIpAddr; /* IPַ */ + BYTE byRes2[4]; /* */ + WORD wAlarmHostIpPort; /* ˿ں */ + BYTE byUseDhcp; /* ǷDHCP 0xff-Ч 0- 1-*/ + BYTE byIPv6Mode; //IPv6䷽ʽ0-·ɹ棬1-ֶã2-DHCP + NET_DVR_IPADDR struDnsServer1IpAddr; /* 1IPַ */ + NET_DVR_IPADDR struDnsServer2IpAddr; /* 2IPַ */ + BYTE byIpResolver[MAX_DOMAIN_NAME]; /* IPIPַ */ + WORD wIpResolverPort; /* IP˿ں */ + WORD wHttpPortNo; /* HTTP˿ں */ + NET_DVR_IPADDR struMulticastIpAddr; /* ಥַ */ + NET_DVR_IPADDR struGatewayIpAddr; /* صַ */ + NET_DVR_PPPOECFG struPPPoE; + BYTE byEnablePrivateMulticastDiscovery; //˽жಥ0~Ĭϣ1~ã2- + BYTE byEnableOnvifMulticastDiscovery; //Onvifಥ0~Ĭϣ1~ã2- + BYTE byEnableDNS; //DNSԶʹ, 0-1-򿪣2-ر + BYTE byRes[61]; +} NET_DVR_NETCFG_V30, *LPNET_DVR_NETCFG_V30; + +//ṹ +typedef struct +{ + NET_DVR_IPADDR struDVRIP; //DVR IPַ + NET_DVR_IPADDR struDVRIPMask; //DVR IPַ + DWORD dwNetInterface; //ӿ1-10MBase-T 2-10MBase-Tȫ˫ 3-100MBase-TX 4-100Mȫ˫ 5-10M/100M/1000MӦ + BYTE byCardType; //ͣ0-ͨ1-2- + BYTE byEnableDNS; //DNSǷԶʹܣ0-1-, 0-ر + WORD wMTU; //MTUãĬ1500 + BYTE byMACAddr[MACADDR_LEN]; //ַֻʾ + BYTE byEthernetPortNo; //ںţ0-Ч1-02-1Դƣֻ + BYTE bySilkScreen; //˿ӡϢ0-Ч1-GE12-GE23-G14-G2ֻ + BYTE byUseDhcp; /* ǷDHCP */ + BYTE byRes3[3]; + NET_DVR_IPADDR struGatewayIpAddr; /* صַ */ + NET_DVR_IPADDR struDnsServer1IpAddr; /* 1IPַ */ + NET_DVR_IPADDR struDnsServer2IpAddr; /* 2IPַ */ +}NET_DVR_ETHERNET_MULTI, *LPNET_DVR_ETHERNET_MULTI; + +//ýṹ +typedef struct +{ + DWORD dwSize; + BYTE byDefaultRoute; //Ĭ·ɣ0ʾstruEtherNet[0]1ʾstruEtherNet[1] + BYTE byNetworkCardNum; //豸ʵʿõĿ + BYTE byWorkMode; //0-ͨģʽ1-ģʽ + BYTE byRes; // + NET_DVR_ETHERNET_MULTI struEtherNet[MAX_NETWORK_CARD]; //̫ + NET_DVR_IPADDR struManageHost1IpAddr; /* IPַ */ + NET_DVR_IPADDR struManageHost2IpAddr; /* IPַ */ + NET_DVR_IPADDR struAlarmHostIpAddr; /* IPַ */ + WORD wManageHost1Port; /* ˿ں */ + WORD wManageHost2Port; /* ˿ں */ + WORD wAlarmHostIpPort; /* ˿ں */ + BYTE byIpResolver[MAX_DOMAIN_NAME]; /* IPIPַ */ + WORD wIpResolverPort; /* IP˿ں */ + WORD wDvrPort; //ͨѶ˿ Ĭ8000 + WORD wHttpPortNo; /* HTTP˿ں */ + WORD wDvrPort2; //ͨѶ˿2 + BYTE byRes2[4]; + NET_DVR_IPADDR struMulticastIpAddr; /* ಥַ */ + NET_DVR_PPPOECFG struPPPoE; + BYTE byRes3[24]; +}NET_DVR_NETCFG_MULTI, *LPNET_DVR_NETCFG_MULTI; + +//ýṹ +typedef struct +{ + DWORD dwSize; + NET_DVR_ETHERNET struEtherNet[MAX_ETHERNET]; /* ̫ */ + char sManageHostIP[16]; //Զַ̹ + WORD wManageHostPort; //Զ̹˿ں + char sIPServerIP[16]; //IPServerַ + char sMultiCastIP[16]; //ಥַ + char sGatewayIP[16]; //صַ + char sNFSIP[16]; //NFSIPַ + BYTE sNFSDirectory[PATHNAME_LEN];//NFSĿ¼ + DWORD dwPPPOE; //0-,1- + BYTE sPPPoEUser[NAME_LEN]; //PPPoEû + char sPPPoEPassword[PASSWD_LEN];// PPPoE + char sPPPoEIP[16]; //PPPoE IPַ(ֻ) + WORD wHttpPort; //HTTP˿ں +}NET_DVR_NETCFG, *LPNET_DVR_NETCFG; + +//ýṹ(V50) +typedef struct tagNET_DVR_NETCFG_V50 +{ + DWORD dwSize; + NET_DVR_ETHERNET_V30 struEtherNet[MAX_ETHERNET]; //̫ + NET_DVR_IPADDR struRes1[2]; /**/ + NET_DVR_IPADDR struAlarmHostIpAddr; /* IPַ */ + BYTE byRes2[4]; /* */ + WORD wAlarmHostIpPort; /* ˿ں */ + BYTE byUseDhcp; /* ǷDHCP 0xff-Ч 0- 1-*/ + BYTE byIPv6Mode; //IPv6䷽ʽ0-·ɹ棬1-ֶã2-DHCP + NET_DVR_IPADDR struDnsServer1IpAddr; /* 1IPַ */ + NET_DVR_IPADDR struDnsServer2IpAddr; /* 2IPַ */ + BYTE byIpResolver[MAX_DOMAIN_NAME]; /* IPIPַ */ + WORD wIpResolverPort; /* IP˿ں */ + WORD wHttpPortNo; /* HTTP˿ں */ + NET_DVR_IPADDR struMulticastIpAddr; /* ಥַ */ + NET_DVR_IPADDR struGatewayIpAddr; /* صַ */ + NET_DVR_PPPOECFG struPPPoE; + BYTE byEnablePrivateMulticastDiscovery; //˽жಥ0~Ĭϣ1~ã2- + BYTE byEnableOnvifMulticastDiscovery; //Onvifಥ0~Ĭϣ1~ã2- + WORD wAlarmHost2IpPort; /* 2˿ں */ + NET_DVR_IPADDR struAlarmHost2IpAddr; /* 2 IPַ */ + BYTE byEnableDNS; //DNSʹ, 0-رգ1- + BYTE byRes[599]; +}NET_DVR_NETCFG_V50, *LPNET_DVR_NETCFG_V50; + +//sip +typedef struct tagNET_DVR_SIP_CFG +{ + DWORD dwSize; + BYTE byEnableAutoLogin; //ʹԶעᣬ0-ʹܣ1-ʹ + BYTE byLoginStatus; //ע״̬0-δעᣬ1-עᣬ˲ֻܻȡ + BYTE byRes1[2]; + NET_DVR_IPADDR stuServerIP; //SIPIP + WORD wServerPort; //SIP˿ + BYTE byRes2[2]; + BYTE byUserName[NAME_LEN]; //עû + BYTE byPassWord[PASSWD_LEN]; //ע + BYTE byLocalNo[MAX_NUMBER_LEN]; + BYTE byDispalyName[MAX_NAME_LEN]; //豸ʾ + WORD wLocalPort; //ض˿ + BYTE byLoginCycle; //עڣ1-99 + BYTE byType;//0-IP/IPV6,1- + BYTE byDomainName[MAX_DOMAIN_NAME]; // + BYTE byRes[64]; +}NET_DVR_SIP_CFG, *LPNET_DVR_SIP_CFG; + +typedef struct tagNET_DVR_SIP_CFG_V50 +{ + DWORD dwSize; + BYTE byEnableAutoLogin; //ʹԶעᣬ0-ʹܣ1-ʹ + BYTE byLoginStatus; //ע״̬0-δעᣬ1-עᣬ˲ֻܻȡ + BYTE byRes1[2]; + NET_DVR_IPADDR stuServerIP; //SIPIP + WORD wServerPort; //SIP˿ + BYTE byRes2[2]; + BYTE byUserName[NAME_LEN]; //עû + BYTE byPassWord[PASSWD_LEN]; //ע + BYTE byLocalNo[MAX_NUMBER_LEN]; + BYTE byDispalyName[MAX_NAME_LEN]; //豸ʾ + WORD wLocalPort; //ض˿ + BYTE byLoginCycle; //עڣ1-99 + BYTE byRes3; + BYTE bySIPServerDomain[MAX_DOMAIN_NAME]; //sipIPֻҪһֵʱIPȣ + NET_DVR_IPADDR stuSTUNServerIP; // STUNIP + BYTE bySTUNServerDomain[MAX_DOMAIN_NAME]; //STUN IPֻҪһֵʱIPȣ + WORD wSTUNServerPort; // STUN˿ + BYTE byRes4[2]; + NET_DVR_IPADDR stuProxyServerIP; //IP + BYTE byProxyServerDomain[MAX_DOMAIN_NAME]; // IPֻҪһֵʱIPȣ + WORD wProxyServerPort; // ˿ + BYTE byNetWork; //ʾͣ0-Ч1-1 2-23- + BYTE byRes5; + BYTE byCalledTargetName[NET_SDK_MAX_CALLEDTARGET_NAME]; + BYTE byRes[224]; +}NET_DVR_SIP_CFG_V50, *LPNET_DVR_SIP_CFG_V50; + +//IPӶԽֻ +typedef struct tagNET_DVR_IP_VIEW_DEVCFG +{ + DWORD dwSize; + BYTE byDefaultRing; //ĬΧ1-6 + BYTE byRingVolume; //Χ0-9 + BYTE byInputVolume; //ֵΧ0-6 + BYTE byOutputVolume; //ֵΧ0-9 + WORD wRtpPort; //Rtp˿ + BYTE byRes1[2]; + DWORD dwPreviewDelayTime; //Ԥʱã0-30 + BYTE byRes2[64]; +}NET_DVR_IP_VIEW_DEVCFG,*LPNET_DVR_IP_VIEW_DEVCFG; + +//IpӶԽƵز +typedef struct tagNET_DVR_IP_VIEW_AUDIO_CFG +{ + DWORD dwSize; + BYTE byAudioEncPri1; //Ƶȼ10-G7221-G711_U2-G711_A 5-MPEG2,6-G7267-AAC + BYTE byAudioEncPri2; //Ƶȼ2sip֧Ƶ1ʱʹƵ20-G7221-G711_U2-G711_A 5-MPEG2,6-G7267-AAC + WORD wAudioPacketLen1; //Ƶ1ݰ + WORD wAudioPacketLen2; //Ƶ2ݰ + BYTE byRes[30]; +}NET_DVR_IP_VIEW_AUDIO_CFG,*LPNET_DVR_IP_VIEW_AUDIO_CFG; + +//IPֻжԽýṹ +typedef struct tagNET_DVR_IP_VIEW_CALL_CFG +{ + DWORD dwSize ; + BYTE byEnableAutoResponse; //ʹԶӦ,0-ʹܣ1-ʹ + BYTE byAudoResponseTime; //ԶӦʱ䣬0-30 + BYTE byRes1[2]; + BYTE byEnableAlarmNumber1; //10-1- + BYTE byRes2[3]; + BYTE byAlarmNumber1[MAX_NUMBER_LEN]; //к1 + BYTE byEnableAlarmNumber2; //20-1- + BYTE byRes3[3]; + BYTE byAlarmNumber2[MAX_NUMBER_LEN]; //к2к1ʧ᳢ܻԺк2 + BYTE byRes4[72]; +}NET_DVR_IP_VIEW_CALL_CFG,*LPNET_DVR_IP_VIEW_CALL_CFG; + +//ͨͼṹ +//ƶ(ӽṹ)(鷽ʽչ) +typedef struct +{ + DWORD dwMaxRecordChanNum; //豸ֵ֧¼ͨ-ֻ + DWORD dwCurRecordChanNum; //ǰʵõĹ¼ͨ + DWORD dwRelRecordChan[MAX_CHANNUM_V30]; /* ʵʴ¼ֵͨʾ,ýУ±0 - MAX_CHANNUM_V30-1Чм0xffffffff,Ч*/ + BYTE byRes[64]; // +}NET_DVR_RECORDCHAN, *LPNET_DVR_RECORDCHAN; + +//ƶ(ӽṹ)(9000չ) +typedef struct +{ + BYTE byMotionScope[64][96]; /*,0-96λ,ʾ64,96*64С,Ϊ1ʾƶ,0-ʾ*/ + BYTE byMotionSensitive; /*ƶ, 0 - 5,ԽԽ,oxffر*/ + BYTE byEnableHandleMotion; /* Ƿƶ 0 1*/ + BYTE byEnableDisplay; /*ƶʾ0-1-*/ + char reservedData; + NET_DVR_HANDLEEXCEPTION_V30 struMotionHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*ʱ*/ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; /* ¼ͨ*/ +}NET_DVR_MOTION_V30, *LPNET_DVR_MOTION_V30; + +//ƶ(ӽṹ) +typedef struct +{ + BYTE byMotionScope[18][22]; /*,22*18С,Ϊ1ʾĺƶ,0-ʾ*/ + BYTE byMotionSensitive; /*ƶ, 0 - 5,ԽԽ,0xffر*/ + BYTE byEnableHandleMotion; /* Ƿƶ */ + BYTE byEnableDisplay; /*ƶʾ0-1-*/ + char reservedData; + NET_DVR_HANDLEEXCEPTION strMotionHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];//ʱ + BYTE byRelRecordChan[MAX_CHANNUM]; //¼ͨ,Ϊ1ʾͨ +}NET_DVR_MOTION, *LPNET_DVR_MOTION; + +//ڵ(ӽṹ)(9000չ) С704*576 +typedef struct +{ + DWORD dwEnableHideAlarm; /* Ƿڵ ,0-,1- 2- 3-*/ + WORD wHideAlarmAreaTopLeftX; /* ڵx */ + WORD wHideAlarmAreaTopLeftY; /* ڵy */ + WORD wHideAlarmAreaWidth; /* ڵĿ */ + WORD wHideAlarmAreaHeight; /*ڵĸ*/ + NET_DVR_HANDLEEXCEPTION_V30 strHideAlarmHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ +}NET_DVR_HIDEALARM_V30, *LPNET_DVR_HIDEALARM_V30; +//ڵ(ӽṹ) С704*576 +typedef struct +{ + DWORD dwEnableHideAlarm; /* Ƿڵ ,0-,1- 2- 3-*/ + WORD wHideAlarmAreaTopLeftX; /* ڵx */ + WORD wHideAlarmAreaTopLeftY; /* ڵy */ + WORD wHideAlarmAreaWidth; /* ڵĿ */ + WORD wHideAlarmAreaHeight; /*ڵĸ*/ + NET_DVR_HANDLEEXCEPTION strHideAlarmHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];//ʱ +}NET_DVR_HIDEALARM, *LPNET_DVR_HIDEALARM; + +//źŶʧ(ӽṹ)(9000չ) +typedef struct +{ + BYTE byEnableHandleVILost; /* ǷźŶʧ */ + NET_DVR_HANDLEEXCEPTION_V30 strVILostHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ +}NET_DVR_VILOST_V30, *LPNET_DVR_VILOST_V30; + +//źŶʧ(ӽṹ) +typedef struct +{ + BYTE byEnableHandleVILost; /* ǷźŶʧ */ + NET_DVR_HANDLEEXCEPTION strVILostHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];//ʱ +}NET_DVR_VILOST, *LPNET_DVR_VILOST; + +//ڵ(ӽṹ) +typedef struct +{ + WORD wHideAreaTopLeftX; /* ڵx */ + WORD wHideAreaTopLeftY; /* ڵy */ + WORD wHideAreaWidth; /* ڵĿ */ + WORD wHideAreaHeight; /*ڵĸ*/ +}NET_DVR_SHELTER, *LPNET_DVR_SHELTER; + +typedef struct +{ + BYTE byBrightness; /*,0-255*/ + BYTE byContrast; /*Աȶ,0-255*/ + BYTE bySaturation; /*Ͷ,0-255*/ + BYTE byHue; /*ɫ,0-255*/ +}NET_DVR_COLOR, *LPNET_DVR_COLOR; + +typedef struct +{ + BYTE byRed; //RGBɫеĺɫ + BYTE byGreen; //RGBɫеɫ + BYTE byBlue; //RGBɫеɫ + BYTE byRes; // +}NET_DVR_RGB_COLOR, *LPNET_DVR_RGB_COLOR; + +//ֵһ,ֵΪǰİٷֱȴС, ΪСλ +//ṹ +typedef struct tagNET_VCA_POINT +{ + float fX; // X, 0.000~1 + float fY; //Y, 0.000~1 +}NET_VCA_POINT, *LPNET_VCA_POINT; + +//ͨͼṹ(9000չ) +typedef struct +{ + DWORD dwSize; + BYTE sChanName[NAME_LEN]; + DWORD dwVideoFormat; /* ֻ Ƶʽ 1-NTSC 2-PAL*/ + BYTE byReservedData[64];/**/ + DWORD dwShowChanName; // ԤͼǷʾͨ,0-ʾ,1-ʾ С704*576 + WORD wShowNameTopLeftX; /* ͨʾλõx */ + WORD wShowNameTopLeftY; /* ͨʾλõy */ + //ƵźŶʧ + NET_DVR_VILOST_V30 struVILost; + NET_DVR_VILOST_V30 struRes; /**/ + // BYTE byRes1[328]; + //ƶ + NET_DVR_MOTION_V30 struMotion; + //ڵ + NET_DVR_HIDEALARM_V30 struHideAlarm; + //ڵ С704*576 + DWORD dwEnableHide; /* Ƿڵ ,0-,1-*/ + NET_DVR_SHELTER struShelter[MAX_SHELTERNUM]; + //OSD + DWORD dwShowOsd;// ԤͼǷʾOSD,0-ʾ,1-ʾ С704*576 + WORD wOSDTopLeftX; /* OSDx */ + WORD wOSDTopLeftY; /* OSDy */ + BYTE byOSDType; /* OSD(Ҫոʽ) */ + /* 0: XXXX-XX-XX */ + /* 1: XX-XX-XXXX */ + /* 2: XXXXXXXX */ + /* 3: XXXXXXXX */ + /* 4: XX-XX-XXXX */ + /* 5: XXXXXXXX */ + /*6: xx/xx/xxxx(//) */ + /*7: xxxx/xx/xx(//) */ + /*8: xx/xx/xxxx(//)*/ + BYTE byDispWeek; /* Ƿʾ */ + BYTE byOSDAttrib; /* OSD:͸˸ */ + /* 1: ͸,˸ */ + /* 2: ͸,˸ */ + /* 3: ˸,͸ */ + /* 4: ͸,˸ */ + BYTE byHourOSDType; /* OSDСʱ:0-24Сʱ,1-12Сʱ */ + BYTE byFontSize;//С16*16()/8*16(Ӣ)1-32*32()/16*32(Ӣ)2-64*64()/32*64(Ӣ) 3-48*48()/24*48(Ӣ) 4-24*24()/12*24(Ӣ) 5-96*96()/48*96(Ӣ) 6-128*128()/64*128(Ӣ) 7-80*80()/40*80(Ӣ) 8-112*112()/56*112(Ӣ) 0xff-Ӧ(adaptive) + BYTE byOSDColorType; //0-Ĭϣڰף1-Զ壻2- + /*뷽ʽѡģʽʱԷֱ½ǡ½ַӡ + ½ + ֧6ַӣͨNET_DVR_SET_SHOWSTRING_V30ַӽӿڣӦNET_DVR_SHOWSTRINGINFOṹеĵ05±ֵַķʽΪµϵķʽ + ½ + ֧2ַӣͨNET_DVR_SET_SHOWSTRING_V30ַӽӿڣӦNET_DVR_SHOWSTRINGINFOṹеĵ6͵7±ֵַķʽΪµϵķʽ + */ + BYTE byAlignment;//뷽ʽ 0-Ӧ1-Ҷ, 2-,3-ģʽ, 4-ȫҶ(ַʱԼOSDַ)5-ȫ(ַʱԼOSDַ) + BYTE byOSDMilliSecondEnable;//Ƶʱֺ֧룻0~, 1- + NET_DVR_RGB_COLOR struOsdColor;//OSDɫ + DWORD dwBoundary; //ֵ߽룬ҶԼģʽıֵ߽0-ʾĬֵλ + NET_DVR_RGB_COLOR struOsdBkColor; //ԶOSDɫ + BYTE byOSDBkColorMode; //OSDɫģʽ0-Ĭϣ1-ԶOSDɫ + BYTE byUpDownBoundary; //Сֵ߽ѡλΪַΧǣ0,1,2, ģʽЧbyAlignment=3ֶЧͨdwBoundaryб߽ã.byAlignment3£ byUpDownBoundary/byLeftRightBoundaryóɹdwBoundaryֵЧ + BYTE byLeftRightBoundary; //Сֵ߽ѡλΪַΧǣ0,1,2, ģʽЧbyAlignment=3ֶЧͨdwBoundaryб߽ã.byAlignment3£ byUpDownBoundary/byLeftRightBoundaryóɹdwBoundaryֵЧ + BYTE byAngleEnabled;//OSDǷӸϢ,0~, 1- + WORD wTiltAngleTopLeftX; /* Ϣʾλõx */ + WORD wTiltAngleTopLeftY; /* Ϣʾλõy */ + BYTE byRes[40]; +}NET_DVR_PICCFG_V30, *LPNET_DVR_PICCFG_V30; + +//ͨͼṹSDK_V14չ +typedef struct +{ + DWORD dwSize; + BYTE sChanName[NAME_LEN]; + DWORD dwVideoFormat; /* ֻ Ƶʽ 1-NTSC 2-PAL*/ + BYTE byBrightness; /*,0-255*/ + BYTE byContrast; /*Աȶ,0-255*/ + BYTE bySaturation; /*Ͷ,0-255 */ + BYTE byHue; /*ɫ,0-255*/ + //ʾͨ + DWORD dwShowChanName; // ԤͼǷʾͨ,0-ʾ,1-ʾ С704*576 + WORD wShowNameTopLeftX; /* ͨʾλõx */ + WORD wShowNameTopLeftY; /* ͨʾλõy */ + //źŶʧ + NET_DVR_VILOST struVILost; + //ƶ + NET_DVR_MOTION struMotion; + //ڵ + NET_DVR_HIDEALARM struHideAlarm; + //ڵ С704*576 + DWORD dwEnableHide; /* Ƿڵ ,0-,1-*/ + NET_DVR_SHELTER struShelter[MAX_SHELTERNUM]; + //OSD + DWORD dwShowOsd;// ԤͼǷʾOSD,0-ʾ,1-ʾ С704*576 + WORD wOSDTopLeftX; /* OSDx */ + WORD wOSDTopLeftY; /* OSDy */ + BYTE byOSDType; /* OSD(Ҫոʽ) */ + /* 0: XXXX-XX-XX */ + /* 1: XX-XX-XXXX */ + /* 2: XXXXXXXX */ + /* 3: XXXXXXXX */ + /* 4: XX-XX-XXXX */ + /* 5: XXXXXXXX */ + /*6: xx/xx/xxxx(//) */ + /*7: xxxx/xx/xx(//) */ + /*8: xx/xx/xxxx(//)*/ + BYTE byDispWeek; /* Ƿʾ */ + BYTE byOSDAttrib; /* OSD:͸˸ */ + /* 1: ͸,˸ */ + /* 2: ͸,˸ */ + /* 3: ˸,͸ */ + /* 4: ͸,˸ */ + BYTE byHourOsdType; /* OSDСʱ:0-24Сʱ,1-12Сʱ */ +}NET_DVR_PICCFG_EX, *LPNET_DVR_PICCFG_EX; + +//ͨͼṹ(SDK_V13֮ǰ汾) +typedef struct +{ + DWORD dwSize; + BYTE sChanName[NAME_LEN]; + DWORD dwVideoFormat; /* ֻ Ƶʽ 1-NTSC 2-PAL*/ + BYTE byBrightness; /*,0-255*/ + BYTE byContrast; /*Աȶ,0-255*/ + BYTE bySaturation; /*Ͷ,0-255 */ + BYTE byHue; /*ɫ,0-255*/ + //ʾͨ + DWORD dwShowChanName; // ԤͼǷʾͨ,0-ʾ,1-ʾ С704*576 + WORD wShowNameTopLeftX; /* ͨʾλõx */ + WORD wShowNameTopLeftY; /* ͨʾλõy */ + //źŶʧ + NET_DVR_VILOST struVILost; + //ƶ + NET_DVR_MOTION struMotion; + //ڵ + NET_DVR_HIDEALARM struHideAlarm; + //ڵ С704*576 + DWORD dwEnableHide; /* Ƿڵ ,0-,1-*/ + WORD wHideAreaTopLeftX; /* ڵx */ + WORD wHideAreaTopLeftY; /* ڵy */ + WORD wHideAreaWidth; /* ڵĿ */ + WORD wHideAreaHeight; /*ڵĸ*/ + //OSD + DWORD dwShowOsd;// ԤͼǷʾOSD,0-ʾ,1-ʾ С704*576 + WORD wOSDTopLeftX; /* OSDx */ + WORD wOSDTopLeftY; /* OSDy */ + BYTE byOSDType; /* OSD(Ҫոʽ) */ + /* 0: XXXX-XX-XX */ + /* 1: XX-XX-XXXX */ + /* 2: XXXXXXXX */ + /* 3: XXXXXXXX */ + /* 4: XX-XX-XXXX */ + /* 5: XXXXXXXX */ + /*6: xx/xx/xxxx(//) */ + /*7: xxxx/xx/xx(//) */ + /*8: xx/xx/xxxx(//)*/ + BYTE byDispWeek; /* Ƿʾ */ + BYTE byOSDAttrib; /* OSD:͸˸ */ + /* 1: ͸,˸ */ + /* 2: ͸,˸ */ + /* 3: ˸,͸ */ + /* 4: ͸,˸ */ + char reservedData2; +}NET_DVR_PICCFG, *LPNET_DVR_PICCFG; + +typedef enum _BITRATE_ENCODE_INDEX_ +{ + BITRATE_ENCODE_def = 0, + BITRATE_ENCODE_8kps = 1, + BITRATE_ENCODE_16kps = 2, + BITRATE_ENCODE_32kps = 3, + BITRATE_ENCODE_64kps = 4, + BITRATE_ENCODE_128kps = 5, + BITRATE_ENCODE_192kps = 6, + BITRATE_ENCODE_40kps = 7, + BITRATE_ENCODE_48kps = 8, + BITRATE_ENCODE_56kps = 9, + BITRATE_ENCODE_80kps = 10, + BITRATE_ENCODE_96kps = 11, + BITRATE_ENCODE_112kps = 12, + BITRATE_ENCODE_144kps = 13, + BITRATE_ENCODE_160kps = 14, + BITRATE_ENCODE_224kps = 15, + BITRATE_ENCODE_256kps = 16, + BITRATE_ENCODE_320kps = 17 +}BITRATE_ENCODE_INDEX; + +//ѹ(ӽṹ)(9000չ) +typedef struct +{ + BYTE byStreamType; // 0-Ƶ, 1-, ʾ¼ѹʱλʾǷѹ + /*ֱ0-DCIF 1-CIF, 2-QCIF, 3-4CIF, + 4-2CIF 5, 6-QVGA(320*240), 7-QQVGA(160*120), + 12-384*288 13-576*576, + 16-VGA640*480, 17-UXGA1600*1200, 18-SVGA(800*600), 19-HD720p(1280*720, + 20-XVGA, 21-HD900p, 22-1360*1024, 23-1536*1536, + 24-1920*1920, 27-HD1080i, + 28-2560*1920, 29-1600*304, 30-2048*1536, 31-2448*2048, + 32-2448*1200, 33-2448*800, 34-XGA1024*768 35-SXGA1280*1024, + 36-WD1(960*576/960*480), 37-1080i, 38-WSXGA(1440*900), 39-HD_F(1920*1080/1280*720), + 40-HD_H(1920*540/1280*360), 41-HD_Q(960*540/630*360), 42-2336*1744, 43-1920*1456, + 44-2592*2048, 45-3296*2472, 46-1376*768, 47-1366*768, + 48-1360*768, 49-WSXGA+, 50-720*720, 51-1280*1280, + 52-2048*768, 53-2048*2048, 54-2560*2048, 55-3072*2048, + 56-2304*1296 57-WXGA(1280*800), 58-1600*600, 59-1600*900, + 60-2752*2208, 61-, 62-4000*3000, 63-4096*2160, + 64-3840*2160, 65-4000*2250, 66-3072*1728, 67-2592*1944, + 68-2464*1520, 69-1280*1920, 70-2560*1440, 71-1024*1024, + 72-160*128, 73-324*240, 74-324*256, 75-336*256, + 76-640*512, 77-2720*2048, 78-384*256, 79-384*216, + 80-320*256, 81-320*180, 82-320*192, 83-512*384, + 84-325*256, 85-256*192, 86-640*360, 87-1776x1340, + 88-1936x1092, 89-2080x784, 90-2144x604, 91-1920*1200, + 92-4064*3040, 93-3040*3040, 94-3072*2304, 95-3072*1152, + 96-2560*2560, 97-2688*1536, 98-2688*1520, 99-3072*3072, + 100-3392*2008, 101-4000*3080, 102-960*720, 103-1024*1536, + 104-704*1056, 105-352*528, 106-2048*1530, 107-2560*1600, + 108-2800*2100, 109-4088*4088, 110-4000*3072, 111-960*1080(1080p Lite) + 112-640*720(half 720p), 113-640*960, 114-320*480, 115-3840*2400, + 116-3840*1680, 117-2560*1120, 118-704*320, 119-1200*1920, + 120-480*768, 121-768*480, 122-320*512, 123-512*320, + 124-4096*1800, 125-1280*560, 126-2400*3840, 127-480*272, + 128-512*272, 129-2592*2592, 130-1792*2880, 131-1600*2560, + 132-2720*1192, 133-3MP(1920*1536/2048*1536) 134-5MP(2560*1944) + 135-2560*960, 136-2064*1544 137-4096*1200, + 138-3840*1080 139-2720*800 140-512*232 141-704*200, + 142-512*152, 143-2048*896 144-2048*600 145-1280*376, + 146-2592*1520, 147-2592*1536, 148-3072*8192, 149-768*2048, + 150-8208*3072, 151-4096*1536, 152-6912*2800, 153-3456*1400 + 154-480*720, 155-800*450, 156-480*270, 157-2560*1536, + 160-3264*2448, 161-288*320, 162-144*176, 163-480*640, + 164-240*320, 165-120*160, 166-576*720, 167-720*1280, + 168-576*960, 169-2944*1656, 170-432*240, 171-2160*3840, + 172-1080*1920, 173-7008*1080, 174-3504*540, 175-1752*270, + 176-876*135, 177-4096*1440, 178-4096*1080, 179-1536*864, + 180-180*240, 181-360*480, 182-540*720, 183-720*960, + 184-960*1280, 185-1080*1440, + 186-3200*1800, 187-1752*272, 188-872*136, 189-1280*1440, + 190-3520*544, 191-1728*256, 192-864*128, 193-5470*3684, + 194-2560*750, 195-1600*480, 196-1024*300, 197-848*480, + 198-8160*3616, 199-8160*2304, 200-4064*2560, 201-1400*1050, + 202-2688*1512, 203-704*288, 204-1560*656, 205-3072*1280, + 206-4320*1808, 207-6120*2560, 208-1280*960, 209-3000*3000, + 210-2032*3616, 211-7680*4320, 212-5760*3240, 213-3264*1836, + 214-2712*1536, 215-1080*720(ռλδ), 216-360x640(ռλδ),217-1440*812, + 218-8160*2416, 219-5760*1712, 220-4080*1200, 221-6144*2560, + 222-1568*656, 223-4096*1808, 224-2720*1200, 225-2896*848 + 226-2048*608 227-3840*1120 228-2720*784 229-1920*560, + 230-1360*400 231-704*208 232-496*144 233-352*128, + 234-512*240 235-512*160 236-368*128 237-256*128 + 238-2048*592 239-1456*416 240-1024*304 241-1280*368 + 242-912*256 243-640*192 244-252*112 δʹã 245-(576*704[P]/480*704[N]) + + 254-ʾֶηΧʹNET_DVR_MULTI_STREAM_COMPRESSIONCFGеdwResolutionʾֱ + 0xff-Auto(ʹõǰֱ) + 256-3888*1696 257-2784*1200 258-496*224 259-352*160 + 260-912*400 261-640*288 262-1456*640 263-1024*448 + 264-2896*1280 265-2544*1080 266-2736*768 267-1920*544 + 268-3840*1696 269-2880*848 270-5424*2400 271-5520*1600 + 272-848*376 273-912*272 274-1360*600 275-1456*432 + 276-2736*1200 277-5760*1696 278-8160*2400 279-5520*2400 + 280-4608*2592 281-4944*3280 282-6016*4008 283-720*480 + 284-3200*2400 285-2784*800 286-1968*848 287-1392*608 + 288-2736*1184 289-1920*848 290-2560*2880 291-1944*1212 + 292-1920*2400 293-384*384 294-768*768 295-4800*2688 + 296-6480*1080 297-8640*1440 298-4800*800 299-6720*1200 + 300-3600*600 301-4800*840 302-2400*400 303-3072*540 + 304-1440*810 305-1920*320 306-2688*480 307-1440*240 + 308-4800*1792 309-3360*1264 310-2304*880 311-3840*1440 + 312-2688*1008 313-1824*704 314-1248*496 315-1920*720 + 316-1344*496 317-912*336 318-1280*480 319-864*336 + 320-576*224 321-2704*1008 322-1904*704 323-1808*672 + 324-1264*464 325-944*336 326-2400*1344 327-2032*1440 + 328-4064*1792 329-304*112 330-960*360 331-672*240 + 332-464*160 333-896*336 334-624*224 335-640*240 + 336-448*160 337-4976*1452 338-1968*560 339-2736*784 + 340-3888*1136 341-6120*1800 342-4320*1280 343-3056*896 + 344-1776*528 345-1392*400 346-7256*1520 347-512*288 + 348-1936*1210 349-640*400 350-2688*1792 351-2464*2056 + 352-2720*1600 353-4800*1600 354-3600*1200 355-δ + 356-2400*800 357-1200*400 358-4096*3008 359-7680*4096 + 360-1080*1520 361-6656*3744 362-5120*1400 363-2560*704 + 364-2688*3040 365-1280*352 366-3376*1008 367-1688*504 + 368-5120*1440 369-1920*2160 370-4080*1808 371-4080*1152 + 372-2688*3888 373-3840*2880 374-2464*3520 375-4416*1696 + 376-1408*540 377-3456*1080 378-1728*540 379-704*1152 + 380-1408*1152 381-5120*2880 382-720*576 383-3984*1168 + 384-1920*1440 385-3840*4096 386-1920*536 387-1536*432 + 388-3072*864 389-1440*1080 390-720*540 391-960*544 + 392-720*544 393-5430*3054 394-8000*6000 395-6560*3690 + 396-2688*1944 397-960*272 398-960*368 399-960*304 + 400-3632*1632 401-1200*536 402-960*432 403-1920*3264 + 404-3040*1368 405-1704*2896 406-768*216 407-360*272 + 408-960*536 409-720*536 410-848*240 411-368*272 + 412-4096*2460 413-536*240 414-2560*1168 415-1920*864 + 416-752*336 417-752*416 418-560*416 419-592*272 + 420-448*336 421-832*464 422-624*464 423-672*304 + 424-672*368 425-496*368 426-832*368 427-592*336 + 428-8032*6032 429-4096*2464 430-8128*2304 431-1480*1664 + 432-1280*1944 433-1024*600 434-1520*2736 435-5328*3040 + 436-192*256 437-8112*2304 438-720x576 439-704*576 + 440-2560*480 441-2048*384 442-8160*3922 443-6128*1800 + 444-3680*1656 445-2048*1152 446-4096*576 447-2048*288 + 448-240*240 449-1200*900 450-8112*2416 451-5472*1600 + 452-2880*2160 453-1920*540 454-4032*1200 455-3792*1120 + 456-2688*794 457-4096*768 + */ + BYTE byResolution; + BYTE byBitrateType; // 0:, 1:,0xfe:ԶԴһ + BYTE byPicQuality; //ͼ 0- 1-κ 2-Ϻ 3-һ 4-ϲ 5-,ԶԴһ + /*Ƶ 0- 1-16K() 2-32K 3-48k 4-64K 5-80K 6-96K 7-128K 8-160k 9-192K 10-224K 11-256K 12-320K + 13-384K 14-448K 15-512K 16-640K 17-768K 18-896K 19-1024K 20-1280K 21-1536K 22-1792K 23-2048K + 24-3072K 25-4096K 26-8192K 27-16384K (28-30 Reserved) 31-12288K*/ + DWORD dwVideoBitrate; + DWORD dwVideoFrameRate; //֡ 0-ȫ; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12; 12-16; 13-20; V2.0汾¼14-15; 15-18; 16-22; + //17-2518-3019-3520-4021-4522-5023-5524-6025-3;26-5;27-7;28-9;29-100; 30-120;31-24;32-48,33-8.3,0xfffffffe-ԶԴһ + WORD wIntervalFrameI; //I֡,0xfffe ԶԴһ + BYTE byIntervalBPFrame;//0-BBP֡; 1-BP֡; 2-P֡(2006-08-11 ӵP֡ýӿڣԸʵʱʱ)0xfe-ԶԴһ + BYTE byres1; // + BYTE byVideoEncType; //Ƶ 0-˽2641-׼h2642-׼mpeg47-M-JPEG8-MPEG29-SVAC, 10-׼h265, 0xfe-ԶԴһ£0xff-Ч + BYTE byAudioEncType; //Ƶ 0-G722;1-G711_U;2-G711_A;5-MP2L2;6-G276;7-AAC;8-PCM;12-AAC_LC;13-AAC_LD;14-Opus;15-MP3;0xff-Ч + BYTE byVideoEncComplexity; //Ƶ븴Ӷȣ0-ͣ1-У2,0xfe:ԶԴһ + BYTE byEnableSvc; //0 - SVCܣ1- SVC; 2-ԶSVC + BYTE byFormatType; //װͣ1-2-RTPװ3-PSװ4-TSװ5-˽У6-FLV7-ASF8-3GP,9-RTP+PS꣺GB281810xff-Ч + BYTE byAudioBitRate; //Ƶ ο BITRATE_ENCODE_INDEX + BYTE byStreamSmooth;//ƽ 11001ȼʾ(Clear)100ʾƽ(Smooth) + BYTE byAudioSamplingRate;//Ƶ0-Ĭ,1- 16kHZ, 2-32kHZ, 3-48kHZ, 4- 44.1kHZ,5-8kHZ + BYTE bySmartCodec;///*bit0-ٱ 0-رգ1-򿪣bit1 - ģʽ 0 - رգ1 - */ + BYTE byDepthMapEnable;// ͼʹܿأ0-رգ1-򿪣󣬵ڶͨ˫ĿƵãĬ 960*540 ͼ + //ƽʣSmartCodecʹܿЧ, 0-0K 1-16K 2-32K 3-48k 4-64K 5-80K 6-96K 7-128K 8-160k 9-192K 10-224K 11-256K 12-320K 13-384K 14-448K 15-512K 16-640K 17-768K 18-896K 19-1024K 20-1280K 21-1536K 22-1792K 23-2048K 24-2560K 25-3072K 26-4096K 27-5120K 28-6144K 29-7168K 30-8192K + //λ(15λ)ó1ʾԶ, 0-14λʾֵ(MIN- 0 K) + WORD wAverageVideoBitrate; +}NET_DVR_COMPRESSION_INFO_V30, *LPNET_DVR_COMPRESSION_INFO_V30; + +//ͨѹ(9000չ) +typedef struct +{ + DWORD dwSize; + NET_DVR_COMPRESSION_INFO_V30 struNormHighRecordPara; //¼ Ӧ8000ͨ + NET_DVR_COMPRESSION_INFO_V30 struRes;// char reserveData[28]; + NET_DVR_COMPRESSION_INFO_V30 struEventRecordPara; //¼ѹ + NET_DVR_COMPRESSION_INFO_V30 struNetPara; //() +}NET_DVR_COMPRESSIONCFG_V30, *LPNET_DVR_COMPRESSIONCFG_V30; + +//ѹ(ӽṹ) +typedef struct +{ + BYTE byStreamType; //0-Ƶ,1-,ʾѹʱλʾǷѹ + BYTE byResolution; //ֱ0-DCIF 1-CIF, 2-QCIF, 3-4CIF, 4-2CIF, 5-2QCIF(352X144)(ר) + BYTE byBitrateType; //0:ʣ1:ʣ2 + BYTE byPicQuality; //ͼ 0- 1-κ 2-Ϻ 3-һ 4-ϲ 5- + DWORD dwVideoBitrate; /*Ƶ 0- 1-16K() 2-32K 3-48k 4-64K 5-80K 6-96K 7-128K 8-160k 9-192K 10-224K 11-256K 12-320K + 13-384K 14-448K 15-512K 16-640K 17-768K 18-896K 19-1024K 20-1280K 21-1536K 22-1792K 23-2048K + 24-2560K 25-3072K 26-4096K 27-5120K 28-6144K 29-7168K 30-8192K 31-12288K*/ + DWORD dwVideoFrameRate; //֡ 0-ȫ; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12; 12-16; 13-20; +}NET_DVR_COMPRESSION_INFO, *LPNET_DVR_COMPRESSION_INFO; + +//ͨѹ +typedef struct +{ + DWORD dwSize; + NET_DVR_COMPRESSION_INFO struRecordPara; //¼/¼¼ + NET_DVR_COMPRESSION_INFO struNetPara; /// +}NET_DVR_COMPRESSIONCFG, *LPNET_DVR_COMPRESSIONCFG; + +//ѹ(ӽṹ)(չ) I֡ +typedef struct +{ + BYTE byStreamType; //0-Ƶ, 1- + BYTE byResolution; //ֱ0-DCIF 1-CIF, 2-QCIF, 3-4CIF, 4-2CIF, 5-2QCIF(352X144)(ר) + BYTE byBitrateType; //0:ʣ1:ʣ2 + BYTE byPicQuality; //ͼ 0- 1-κ 2-Ϻ 3-һ 4-ϲ 5- + DWORD dwVideoBitrate; /*Ƶ 0- 1-16K() 2-32K 3-48k 4-64K 5-80K 6-96K 7-128K 8-160k 9-192K 10-224K 11-256K 12-320K + 13-384K 14-448K 15-512K 16-640K 17-768K 18-896K 19-1024K 20-1280K 21-1536K 22-1792K 23-2048K + 24-3072K 25-4096K 26-8192K 27-16384K (28-30 Reserved) 31-12288K*/ + DWORD dwVideoFrameRate; //֡ 0-ȫ; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12; 12-16; 13-20, //V2.014-15, 15-18, 16-22; + WORD wIntervalFrameI; //I֡ + //2006-08-11 ӵP֡ýӿڣԸʵʱʱ + BYTE byIntervalBPFrame;//0-BBP֡; 1-BP֡; 2-P֡ + BYTE byRes; +}NET_DVR_COMPRESSION_INFO_EX, *LPNET_DVR_COMPRESSION_INFO_EX; + +//ͨѹ(չ) +typedef struct +{ + DWORD dwSize; + NET_DVR_COMPRESSION_INFO_EX struRecordPara; //¼ + NET_DVR_COMPRESSION_INFO_EX struNetPara; // +}NET_DVR_COMPRESSIONCFG_EX, *LPNET_DVR_COMPRESSIONCFG_EX; + + +//ʱ¼(ӽṹ) +typedef struct +{ + NET_DVR_SCHEDTIME struRecordTime; + BYTE byRecordType; //0:ʱ¼1:ƶ⣬2:¼3:|4:&, 5:, 6: ¼,10-PIR11-߱12-ȱ13-б,14-ܽͨ¼15Խ⣬16⣬17Ƶ쳣 + char reservedData[3]; +}NET_DVR_RECORDSCHED, *LPNET_DVR_RECORDSCHED; + +//ȫ¼(ӽṹ) +typedef struct +{ + WORD wAllDayRecord; /* Ƿȫ¼ 0- 1-*/ + BYTE byRecordType; /* ¼ 0:ʱ¼1:ƶ⣬2:¼3:|4:& 5:, 6: ¼, + 10-PIR11-߱12-ȱ13-ƶ||PIR|߱|ȱ,14-ܽͨ¼,15-Խ,16-,17-쳣, + 18-,19-⣨Խ|||뿪|ʶ,20, 21-POS¼*/ + char reservedData; +}NET_DVR_RECORDDAY, *LPNET_DVR_RECORDDAY; + +//ͨ¼(9000չ) +typedef struct +{ + DWORD dwSize; + DWORD dwRecord; /*Ƿ¼ 0- 1-*/ + NET_DVR_RECORDDAY struRecAllDay[MAX_DAYS]; + NET_DVR_RECORDSCHED struRecordSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; + DWORD dwRecordTime; /* ¼ʱ 0-5룬 1-10룬 2-30룬 3-1ӣ 4-2ӣ 5-5ӣ 6-10*/ + DWORD dwPreRecordTime; /* Ԥ¼ʱ 0-Ԥ¼ 1-5 2-10 3-15 4-20 5-25 6-30 7-0xffffffff(Ԥ¼) */ + DWORD dwRecorderDuration; /* ¼񱣴ʱ */ + BYTE byRedundancyRec; /*Ƿ¼,Ҫ˫ݣ0/1*/ + BYTE byAudioRec; /*¼ʱʱǷ¼Ƶݣд˷*/ + BYTE byStreamType; // 0-1-2-ͬʱ 3- + BYTE byPassbackRecord; // 0:ش¼ 1ش¼ + WORD wLockDuration; // ¼ʱλСʱ 0ʾ0xffffʾ¼εʱijʱ¼񣬽 + BYTE byRecordBackup; // 0:¼񲻴浵 1¼浵 + BYTE bySVCLevel; //SVC֡ͣ0-飬1-֮һ 2-ķ֮ + BYTE byRecordManage; //¼ȣ0-ã 1-; ʱжʱ¼񣻲ʱжʱ¼񣬵¼ƻʹãƶ⣬شڰ¼ƻ + BYTE byExtraSaveAudio; //Ƶ0-ǵ棬1- + /*¼ܺ㷨Զ¼㷨书Ϊ¼Ŀ֣ήʡ֡ʣĿʱָֻȫʼ֡ʣӶﵽԴĵĿ*/ + BYTE byIntelligentRecord;//Ƿ¼ 0- 1- + BYTE byReserve; +}NET_DVR_RECORD_V30, *LPNET_DVR_RECORD_V30; + +//ʱ¼(ӽṹ) +typedef struct +{ + NET_DVR_SCHEDTIME struRecordTime; + /*¼ͣ0:ʱ¼1:ƶ⣬2:¼3:|4:& 5:, + 6-ܱ¼10-PIR11-߱12-ȱ13-ȫ¼,14-ܽͨ¼, + 15-Խ,16-,17-쳣,18-, + 19-(Խ|||쳣|),20,21-POS¼, + 22-, 23-뿪,24-ǻ,25-Աۼ,26-˶,27-ͣ, + 28-Ʒ,29-Ʒȡ,30-⣬31-ƻ,32-ܶʼ(˾),33-¼(˾), 34-˯¼(˾) + 35-ֻ, 36-Ԥ37-±38-²39-߲±,40-41-,42-ҵѯ,43-,44-ʸ,45-޳ʱ46-ץģ47-Ƿ̯,48-Ŀץ, + 49-˶50ڼ⣬51-52仯 53-ŷʾ 54-Ҷȱ*/ + BYTE byRecordType; + BYTE byRes[31]; +}NET_DVR_RECORDSCHED_V40, *LPNET_DVR_RECORDSCHED_V40; + +//ȫ¼(ӽṹ) +typedef struct +{ + BYTE byAllDayRecord; /* Ƿȫ¼ 0- 1-*/ + /*¼ͣ0:ʱ¼1:ƶ⣬2:¼3:|4:& 5:, + 6-ܱ¼10-PIR11-߱12-ȱ13-ȫ¼,14-ܽͨ¼, + 15-Խ,16-,17-쳣,18-, + 19-(Խ|||쳣|),20,21-POS¼, + 22-, 23-뿪,24-ǻ,25-Աۼ,26-˶,27-ͣ, + 28-Ʒ,29-Ʒȡ,30-⣬31-ƻ,32-ܶʼ(˾),33-¼(˾), 34-˯¼(˾) + 35-ֻ, 36-Ԥ37-±38-²39-߲±,40-41-,42-ҵѯ,43-,44-ʸ,45-޳ʱ,46-ץ,47-Ƿ̯,48-Ŀץ, + 49-˶50ڼ⣬51-52仯 53-ŷʾ 54-Ҷȱ*/ + BYTE byRecordType; + BYTE byRes[62]; +}NET_DVR_RECORDDAY_V40, *LPNET_DVR_RECORDDAY_V40; + +typedef struct +{ + DWORD dwSize; + DWORD dwRecord; /*Ƿ¼ 0- 1-*/ + NET_DVR_RECORDDAY_V40 struRecAllDay[MAX_DAYS]; + NET_DVR_RECORDSCHED_V40 struRecordSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; + DWORD dwRecordTime; /* ¼ʱ 0-5룬 1-10룬 2-30룬 3-1ӣ 4-2ӣ 5-5ӣ 6-10*/ + DWORD dwPreRecordTime; /* Ԥ¼ʱ 0-Ԥ¼ 1-5 2-10 3-15 4-20 5-25 6-30 7-0xffffffff(Ԥ¼) */ + DWORD dwRecorderDuration; /* ¼񱣴ʱ */ + BYTE byRedundancyRec; /*Ƿ¼,Ҫ˫ݣ0/1*/ + BYTE byAudioRec; /*¼ʱʱǷ¼Ƶݣд˷*/ + BYTE byStreamType; // 0-1-2-ͬʱ 3- + BYTE byPassbackRecord; // 0:ش¼ 1ش¼ + WORD wLockDuration; // ¼ʱλСʱ 0ʾ0xffffʾ¼εʱijʱ¼񣬽 + BYTE byRecordBackup; // 0:¼񲻴浵 1¼浵 + BYTE bySVCLevel; //SVC֡ͣ0-飬1-֮һ 2-ķ֮ + BYTE byRecordManage; //¼ȣ0-ã 1-; ʱжʱ¼񣻲ʱжʱ¼񣬵¼ƻʹãƶ⣬شڰ¼ƻ + BYTE byExtraSaveAudio;//Ƶ洢 + /*¼ܺ㷨Զ¼㷨书Ϊ¼Ŀ֣ήʡ֡ʣĿʱָֻȫʼ֡ʣӶﵽԴĵĿ*/ + BYTE byIntelligentRecord;//Ƿ¼ 0- 1- + BYTE byRes[125]; +}NET_DVR_RECORD_V40, *LPNET_DVR_RECORD_V40; + +//ͨ¼ +typedef struct +{ + DWORD dwSize; + DWORD dwRecord; /*Ƿ¼ 0- 1-*/ + NET_DVR_RECORDDAY struRecAllDay[MAX_DAYS]; + NET_DVR_RECORDSCHED struRecordSched[MAX_DAYS][MAX_TIMESEGMENT]; + DWORD dwRecordTime; /* ¼ʱ䳤 */ + DWORD dwPreRecordTime; /* Ԥ¼ʱ 0-Ԥ¼ 1-5 2-10 3-15 4-20 5-25 6-30 7-0xffffffff(Ԥ¼) */ +}NET_DVR_RECORD, *LPNET_DVR_RECORD; + +//̨Эṹ +typedef struct +{ + DWORD dwType; /*ֵ*/ + BYTE byDescribe[DESC_LEN]; /*8000еһ*/ +}NET_DVR_PTZ_PROTOCOL; + +typedef struct +{ + DWORD dwSize; + NET_DVR_PTZ_PROTOCOL struPtz[PTZ_PROTOCOL_NUM];/*200PTZЭ*/ + DWORD dwPtzNum; /*ЧptzЭĿ0ʼ(ʱ1)*/ + BYTE byRes[8]; +}NET_DVR_PTZCFG, *LPNET_DVR_PTZCFG; + +/***************************̨(end)******************************/ +typedef struct tagNET_DVR_SERIALSTART_V40 //͸ͨ +{ + DWORD dwSize; //ṹС + DWORD dwSerialType; //ںţ1-232ڣ2-485ڣ + BYTE bySerialNum; //ڱ + BYTE byRes[255]; +}NET_DVR_SERIALSTART_V40,*LPNET_DVR_SERIALSTART_V40; + +//ͨ(̨) չ +typedef struct tagNET_DVR_DECODERCFG_V40 +{ + DWORD dwSize; //ṹС + DWORD dwBaudRate; // 0501752110315043005600612007240084800996001019200 11384001257600137680014115.2k; + BYTE byDataBit; //мλ 05λ16λ27λ38λ; + BYTE byStopBit; //ֹͣλ 01λ12λ + BYTE byParity; //У 0У飬1У飬2żУ + BYTE byFlowcontrol; //0ޣ1,2-Ӳ + WORD wDecoderType; //*/ + WORD wDecoderAddress; //ַ0-255 + BYTE bySetPreset [MAX_PRESET_V30]; //ԤõǷ,0-û,1- + BYTE bySetCruise[MAX_CRUISE_V30]; //ѲǷ: 0-û,1- + BYTE bySetTrack [MAX_TRACK_V30]; //Ƿ,0-û,1- + BYTE bySerialNO; //ڱ + BYTE byWorkMode; /*ģʽ 1-󴮿ڿƣ2-Ļƣ3-͸ͨģʽ 4-PPPģʽ 5-̨ģʽ 6-ֱ 7-̿ 8- 9-̨ 12-LEDʾ13-ץݴ*/ + BYTE byRes[254]; // +}NET_DVR_DECODERCFG_V40,*LPNET_DVR_DECODERCFG_V40; + +typedef struct tagNET_DVR_THERMOMETRYRULE_TEMPERATURE_INFO +{ + float fMaxTemperature;//£ȷСһλ + float fMinTemperature;//£ȷСһλ + float fAverageTemperature;//ƽ£ȷСһλ + NET_VCA_POINT struHighestPoint; //¶λ + NET_VCA_POINT struLowestPoint; //¶λ + BYTE byIsFreezedata;//Ƿݶ 0- 1- + BYTE byRes[15]; +}NET_DVR_THERMOMETRYRULE_TEMPERATURE_INFO, *LPNET_DVR_THERMOMETRYRULE_TEMPERATURE_INFO; + +//ͨ(̨)(9000չ) +typedef struct +{ + DWORD dwSize; + DWORD dwBaudRate;//(bps)0501752110315043005600612007240084800996001019200 11384001257600137680014115.2k; + BYTE byDataBit;// мλ 05λ16λ27λ38λ; + BYTE byStopBit;// ֹͣλ 01λ12λ; + BYTE byParity;// У 0У飬1У飬2żУ; + BYTE byFlowcontrol;// 0ޣ1,2-Ӳ + WORD wDecoderType;//, 0ʼӦptzЭбNET_DVR_IPC_PROTO_LISTõ + WORD wDecoderAddress; /*ַ:0 - 255*/ + BYTE bySetPreset[MAX_PRESET_V30]; /* ԤõǷ,0-û,1-*/ + BYTE bySetCruise[MAX_CRUISE_V30]; /* ѲǷ: 0-û,1- */ + BYTE bySetTrack[MAX_TRACK_V30]; /* Ƿ,0-û,1-*/ +}NET_DVR_DECODERCFG_V30, *LPNET_DVR_DECODERCFG_V30; + +//ͨ(̨) +typedef struct +{ + DWORD dwSize; + DWORD dwBaudRate; //(bps)0501752110315043005600612007240084800996001019200 11384001257600137680014115.2k; + BYTE byDataBit; // мλ 05λ16λ27λ38λ; + BYTE byStopBit; // ֹͣλ 01λ12λ; + BYTE byParity; // У 0У飬1У飬2żУ; + BYTE byFlowcontrol; // 0ޣ1,2-Ӳ + WORD wDecoderType; // NET_DVR_IPC_PROTO_LISTеõ + WORD wDecoderAddress; /*ַ:0 - 255*/ + BYTE bySetPreset[MAX_PRESET]; /* ԤõǷ,0-û,1-*/ + BYTE bySetCruise[MAX_CRUISE]; /* ѲǷ: 0-û,1- */ + BYTE bySetTrack[MAX_TRACK]; /* Ƿ,0-û,1-*/ +}NET_DVR_DECODERCFG, *LPNET_DVR_DECODERCFG; + +//ppp(ӽṹ) +typedef struct +{ + NET_DVR_IPADDR struRemoteIP; //ԶIPַ + NET_DVR_IPADDR struLocalIP; //IPַ + char sLocalIPMask[16]; //IPַ + BYTE sUsername[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + BYTE byPPPMode; //PPPģʽ, 01 + BYTE byRedial; //Ƿز 0-,1- + BYTE byRedialMode; //زģʽ,0-ɲָ,1-Ԥûز + BYTE byDataEncrypt; //ݼ,0-,1- + DWORD dwMTU; //MTU + char sTelephoneNumber[PHONENUMBER_LEN]; //绰 +}NET_DVR_PPPCFG_V30, *LPNET_DVR_PPPCFG_V30; + +//ppp(ӽṹ) +typedef struct +{ + char sRemoteIP[16]; //ԶIPַ + char sLocalIP[16]; //IPַ + char sLocalIPMask[16]; //IPַ + BYTE sUsername[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + BYTE byPPPMode; //PPPģʽ, 01 + BYTE byRedial; //Ƿز 0-,1- + BYTE byRedialMode; //زģʽ,0-ɲָ,1-Ԥûز + BYTE byDataEncrypt; //ݼ,0-,1- + DWORD dwMTU; //MTU + char sTelephoneNumber[PHONENUMBER_LEN]; //绰 +}NET_DVR_PPPCFG, *LPNET_DVR_PPPCFG; + +//RS232ڲ(9000չ) +typedef struct +{ + DWORD dwBaudRate; /*(bps)0501752110315043005600612007240084800996001019200 11384001257600137680014115.2k;*/ + BYTE byDataBit; /* мλ 05λ16λ27λ38λ */ + BYTE byStopBit; /* ֹͣλ 01λ12λ */ + BYTE byParity; /* У 0У飬1У飬2żУ */ + BYTE byFlowcontrol; /* 0ޣ1,2-Ӳ */ + DWORD dwWorkMode; //ģʽ0232PPPţ1232ڲƣ2͸ͨ 3- ptzģʽ,Ѷʪȴ, 4-ģʽ 5-󴮿ڿ 6-Ļ 7-ֱ 8-̿ 9- 10-̨ +}NET_DVR_SINGLE_RS232; + +typedef struct tagNET_DVR_USB_RS232 +{ + DWORD dwBaudRate; /*(bps)0501752110315043005600612007240084800996001019200 11384001257600137680014115.2k;*/ + BYTE byDataBit; /* мλ 05λ16λ27λ38λ */ + BYTE byStopBit; /* ֹͣλ 01λ12λ */ + BYTE byParity; /* У 0У飬1У飬2żУ */ + BYTE byFlowcontrol; /* 0ޣ1,2-Ӳ */ + BYTE byVirtualSerialPort; //⴮ڱ + BYTE byRes[3]; +}NET_DVR_USB_RS232,*LPNET_DVR_USB_RS232; + +//RS232ڲ(9000չ) +typedef struct +{ + DWORD dwSize; + NET_DVR_SINGLE_RS232 struRs232[MAX_SERIAL_PORT];/*ע⣺˽ṹ޸ˣԭǵṹ޸Ϊṹ*/ + NET_DVR_PPPCFG_V30 struPPPConfig; +}NET_DVR_RS232CFG_V30, *LPNET_DVR_RS232CFG_V30; + +//RS232ڲ +typedef struct +{ + DWORD dwSize; + DWORD dwBaudRate;//(bps)0501752110315043005600612007240084800996001019200 11384001257600137680014115.2k; + BYTE byDataBit;// мλ 05λ16λ27λ38λ; + BYTE byStopBit;// ֹͣλ 01λ12λ; + BYTE byParity;// У 0У飬1У飬2żУ; + BYTE byFlowcontrol;// 0ޣ1,2-Ӳ + DWORD dwWorkMode;// ģʽ0խ(232PPP)1̨(232ڲ)2͸ͨ + NET_DVR_PPPCFG struPPPConfig; +}NET_DVR_RS232CFG, *LPNET_DVR_RS232CFG; + + +typedef struct +{ + DWORD dwEnablePresetChan; /*Ԥõͨ, 0xfffffffʾԤõ*/ + DWORD dwPresetPointNo; /*ԤõͨӦԤõ, 0xfffffffʾԤõ㡣*/ +}NET_DVR_PRESETCHAN_INFO, LPNET_DVR_PRESETCHAN_INFO; + +typedef struct +{ + DWORD dwEnableCruiseChan; /*Ѳͨ*/ + DWORD dwCruiseNo; /*ѲͨӦѲ, 0xfffffffʾЧ*/ +}NET_DVR_CRUISECHAN_INFO, LPNET_DVR_CRUISECHAN_INFO; + +typedef struct +{ + DWORD dwEnablePtzTrackChan; /*̨ͨ*/ + DWORD dwPtzTrackNo; /*̨ͨӦı, 0xfffffffʾЧ*/ +}NET_DVR_PTZTRACKCHAN_INFO, LPNET_DVR_PTZTRACKCHAN_INFO; + +typedef struct tagNET_DVR_PTZ_NOTIFICATION_COND +{ + DWORD dwSize; + /* + 0-facedetection, + 1-vehicleDetection, + 2-scenechangedetection, + 3-LineDetection, + 4-regionEntrance, + 5-regionExiting, + 6-loitering, + 7-group, + 8-rapidMove, + 9-parking, + 10-unattendedBaggage, + 11-attendedBaggage, + 12-audioDetection, + 13-PIR, + 14-defocusDetection + 15-temperature, + 16-fireDetection, + 17-thermometry, + 18-shipsDetection + 19-fieldDetection + 20-blockListFaceContrast + 21-allowListFaceContrast + 22- humanRecognition + 23- faceContrast + */ + WORD byEventType; + BYTE byRes[2]; + DWORD dwChannel; + BYTE byRes1[128]; +}NET_DVR_PTZ_NOTIFICATION_COND, *LPNET_DVR_PTZ_NOTIFICATION_COND; + +typedef struct tagNET_DVR_PTZ_NOTIFICATION_CFG +{ + DWORD dwSize; + DWORD dwEnablePresetChanNum; //ǰԤõĿ + NET_DVR_PRESETCHAN_INFO struPresetChanInfo[MAX_CHANNUM_V40]; //õԤõϢ( ptz) + DWORD dwEnableCruiseChanNum; //ǰѲͨĿ + NET_DVR_CRUISECHAN_INFO struCruiseChanInfo[MAX_CHANNUM_V40]; //ѲͨϢ( ptz) + DWORD dwEnablePtzTrackChanNum; //ǰ̨ͨĿ + NET_DVR_PTZTRACKCHAN_INFO struPtzTrackInfo[MAX_CHANNUM_V40]; //̨ͨϢ( ptz) + BYTE byRes1[1024]; +}NET_DVR_PTZ_NOTIFICATION_CFG, *LPNET_DVR_PTZ_NOTIFICATION_CFG; + + +typedef struct tagNET_DVR_PTZ_NOTIFICATION +{ + DWORD dwSize; + /* + 0-facedetection, + 1-vehicleDetection, + 2-scenechangedetection, + 3-LineDetection, + 4-regionEntrance, + 5-regionExiting, + 6-loitering, + 7-group, + 8-rapidMove, + 9-parking, + 10-unattendedBaggage, + 11-attendedBaggage, + 12-audioDetection, + 13-PIR, + 14-defocusDetection + 15-temperature, + 16-fireDetection, + 17-thermometry, + 18-shipsDetection + 19-fieldDetection + 20-blockListFaceContrast + 21-allowListFaceContrast + 22- humanRecognition + */ + WORD byEventType; + BYTE byRes[62]; + DWORD dwEnablePresetChanNum; //ǰԤõĿ + NET_DVR_PRESETCHAN_INFO struPresetChanInfo[MAX_CHANNUM_V40]; //õԤõϢ( ptz) + DWORD dwEnableCruiseChanNum; //ǰѲͨĿ + NET_DVR_CRUISECHAN_INFO struCruiseChanInfo[MAX_CHANNUM_V40]; //ѲͨϢ( ptz) + DWORD dwEnablePtzTrackChanNum; //ǰ̨ͨĿ + NET_DVR_PTZTRACKCHAN_INFO struPtzTrackInfo[MAX_CHANNUM_V40]; //̨ͨϢ( ptz) + BYTE byRes1[1024]; +}NET_DVR_PTZ_NOTIFICATION, *LPNET_DVR_PTZ_NOTIFICATION; + +#define NET_SDK_MAX_EVENT_NUM 64 //¼ָ֧ + +//(256·NVRչ) +typedef struct tagNET_DVR_ALARMINCFG_V40 +{ + DWORD dwSize; + BYTE sAlarmInName[NAME_LEN]; /* */ + BYTE byAlarmType; //,0,1 + BYTE byAlarmInHandle; /* Ƿ 0- 1-*/ + BYTE byChannel; // 봥ʶͨ + BYTE byInputType; // 0-ʽ 1-źʽ + DWORD dwHandleType; //쳣,쳣ʽ"" + /*0x00: Ӧ*/ + /*0x01: ʾϾ*/ + /*0x02: */ + /*0x04: ϴ*/ + /*0x08: */ + /*0x10: JPRGץͼϴEmail*/ + /*0x20: ⱨ*/ + /*0x40: ӵͼ(ĿǰֻPCNVR֧)*/ + /*0x200: ץͼϴFTP*/ + /*0x1000:ץͼϴ*/ + /*0x2000:ű*/ + DWORD dwMaxRelAlarmOutChanNum ; //ıֻ֧ͨ + DWORD dwRelAlarmOutChanNum; //ıͨ ʵ֧ + DWORD dwRelAlarmOut[MAX_ALARMOUT_V40]; //ͨ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + /*¼ͨ*/ + DWORD dwMaxRecordChanNum; //豸ֵ֧¼ͨ-ֻ + DWORD dwCurRecordChanNum; //ǰʵõĹ¼ͨ + DWORD dwRelRecordChan[MAX_CHANNUM_V40]; /* ʵʴ¼ֵͨʾ,ýУ±0 - dwCurRecordChanNum -1Чм0xffffffff,Ч*/ + DWORD dwMaxEnablePtzCtrlNun; //ǫ̃(ֻ) + DWORD dwEnablePresetChanNum; //ǰԤõĿ + NET_DVR_PRESETCHAN_INFO struPresetChanInfo[MAX_CHANNUM_V40]; //õԤõϢ + BYTE byPresetDurationTime[MAX_CHANNUM_V40];//Ԥõͣʱ Χ0-20sĬ10s + BYTE byRes2[4]; /**/ + DWORD dwEnableCruiseChanNum; //ǰѲͨĿ + NET_DVR_CRUISECHAN_INFO struCruiseChanInfo[MAX_CHANNUM_V40]; //ѲͨϢ + DWORD dwEnablePtzTrackChanNum; //ǰѲͨĿ + NET_DVR_PTZTRACKCHAN_INFO struPtzTrackInfo[MAX_CHANNUM_V40]; //̨ͨϢ + WORD wEventType[NET_SDK_MAX_EVENT_NUM/*64*/]; /*¼ͣÿһλӦһ¼*/ + BYTE byRes[128]; +}NET_DVR_ALARMINCFG_V40, *LPNET_DVR_ALARMINCFG_V40; + +//(9000չ) +typedef struct +{ + DWORD dwSize; + BYTE sAlarmInName[NAME_LEN]; /* */ + BYTE byAlarmType; //,0,1 + BYTE byAlarmInHandle; /* Ƿ 0- 1-*/ + BYTE byChannel; // 봥ʶͨ + BYTE byInputType; // 0-ʽ 1-źʽ + NET_DVR_HANDLEEXCEPTION_V30 struAlarmHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ,Ϊ1ʾͨ + BYTE byEnablePreset[MAX_CHANNUM_V30]; /* ǷԤõ 0-,1-*/ + BYTE byPresetNo[MAX_CHANNUM_V30]; /* ǫ̃Ԥõ,һԵǫ̈ͨԤõ, 0xffʾԤõ㡣*/ + BYTE byRes2[192]; /**/ + BYTE byEnableCruise[MAX_CHANNUM_V30]; /* ǷѲ 0-,1-*/ + BYTE byCruiseNo[MAX_CHANNUM_V30]; /* Ѳ */ + BYTE byEnablePtzTrack[MAX_CHANNUM_V30]; /* Ƿ 0-,1-*/ + BYTE byPTZTrack[MAX_CHANNUM_V30]; /* ǫ̃ */ + BYTE byRes3[16]; +}NET_DVR_ALARMINCFG_V30, *LPNET_DVR_ALARMINCFG_V30; + + +typedef struct tagNET_DVR_ALARMINFO_FIXED_HEADER +{ + /*0-ź,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-POC쳣,28-ӽ쳣 + 30-ȱSD,32-̨ת쳣34-쳣*/ + DWORD dwAlarmType;// + NET_DVR_TIME_EX struAlarmTime; //ʱ + union + { + BYTE byUnionLen[116]; //ֳȥ8ֽչʱ + struct + { + DWORD dwAlarmInputNo; //ıͨţһֻһ + DWORD dwTrigerAlarmOutNum; /*ıں䳤ݲдıͨţֽڱʾһ*/ + DWORD dwTrigerRecordChanNum; /*¼ͨں䳤ݲд¼ͨţֽڱʾһ*/ + }struIOAlarm; // dwAlarmTypeΪ0ʱЧ + struct + { + DWORD dwAlarmChanNum; /*ͨݸں䳤ݲзıͨţֽڱʾһ*/ + DWORD dwPicLen;//JpegͼƬ + BYTE byPicURL; //ͼƬݲURLʽ 0-ͼƬݣ1-ͼƬURLʽ + BYTE byTarget; /*0-ʶĿ꣬1-ʶĿΪˣ2-ʶĿΪ*/ + BYTE byRes1[2]; // +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pDataBuff; //ͼƬͼƬURL +#else + char* pDataBuff; //ͼƬͼƬURL + BYTE byRes3[4]; +#endif + }struAlarmChannel; // dwAlarmTypeΪ2369101328ʱЧ + struct + { + DWORD dwAlarmHardDiskNum; /*Ӳݳȣں䳤ݲзӲ̺ţĽڱʾһ*/ + }struAlarmHardDisk; // dwAlarmTypeΪ1,4,5ʱЧ + struct + { + BYTE bySubAlarmType; //ͣ1-һӳ¼ + BYTE byRes1[3]; // + NET_DVR_TIME_EX struRecordEndTime; //¼ʱ + }struRecordingHost; //¼רñ + struct + { + float fVoltageValue;//Դѹֵ,λV,ȷ0.1 + BYTE byVoltageAlarmType; //Դѹͣ0-Դѹߣ1-Դѹ + BYTE byRes1[3]; //ֽ + }struVoltageInstable; //dwAlarmType=31ʱЧ + + struct + { + float fTemperature;//¶ȣȷС1λ + DWORD dwCustomInfoLength; //ԶϢ + BYTE* pCustomInfo; //ԶϢ + BYTE byType; //̨ת 1-ˮƽת 2-ֱת + BYTE byDeicingEnabled; // ̨ʹ 0-ر 1- + BYTE byRes2[2]; // + DWORD dwChannel; //ͨ + }struPTLocking; //̨ת쳣 dwAlarmType=32ʱЧ + + struct + { + BYTE byExceptionType; //쳣,0-, 1- ־洢쳣2-־ + }struLogException; //dwAlarmType=33ʱЧ,־쳣Ϣ + + struct + { + NET_DVR_TIME_EX struAlarmTime; //ʱ䣬豸ʱ + BYTE byExceptionType; // 0- 1- ߳ 2- ǰ012 Ϊ + BYTE byRes1[3]; //ֽ + }struAbnormalReboot; //쳣 dwAlarmType=34ʱЧ + + }uStruAlarm; + DWORD* pRes; //ڼ64λ½ṹֽڲ + BYTE byTimeDiffFlag; /*ʱֶǷЧ 0-ʱЧ 1-ʱЧ */ + char cTimeDifferenceH; /*UTCʱСʱ-12 ... +14 +ʾ,byTimeDiffFlagΪ1ʱЧ*/ + char cTimeDifferenceM; /*UTCʱӣ-30, 30, 45 +ʾbyTimeDiffFlagΪ1ʱЧ*/ + BYTE byRes; // + WORD wDevInfoIvmsChannel; //Ӻ͸ǰʱͨ + BYTE byRes2[2]; // +}NET_DVR_ALRAM_FIXED_HEADER, *LPNET_DVR_ALARM_FIXED_HEADER; + +//ϴϢ(256·NVRչ) +typedef struct NET_DVR_ALARMINFO_V40 +{ + NET_DVR_ALRAM_FIXED_HEADER struAlarmFixedHeader; //̶ + DWORD* pAlarmData; //ɱ䲿 +}NET_DVR_ALARMINFO_V40, *LPNET_DVR_ALARMINFO_V40; + +// +typedef struct +{ + DWORD dwSize; + BYTE sAlarmInName[NAME_LEN]; /* */ + BYTE byAlarmType; //,0,1 + BYTE byAlarmInHandle; /* Ƿ 0- 1-*/ + BYTE byChannel; // 봥ʶͨ + BYTE byRes; + NET_DVR_HANDLEEXCEPTION struAlarmHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];//ʱ + BYTE byRelRecordChan[MAX_CHANNUM]; //¼ͨ,Ϊ1ʾͨ + BYTE byEnablePreset[MAX_CHANNUM]; /* ǷԤõ 0-,1-*/ + BYTE byPresetNo[MAX_CHANNUM]; /* ǫ̃Ԥõ,һԵǫ̈ͨԤõ, 0xffʾԤõ㡣*/ + BYTE byEnableCruise[MAX_CHANNUM]; /* ǷѲ 0-,1-*/ + BYTE byCruiseNo[MAX_CHANNUM]; /* Ѳ */ + BYTE byEnablePtzTrack[MAX_CHANNUM]; /* Ƿ 0-,1-*/ + BYTE byPTZTrack[MAX_CHANNUM]; /* ǫ̃ */ +}NET_DVR_ALARMINCFG, *LPNET_DVR_ALARMINCFG; + +//ģⱨ +typedef struct +{ + DWORD dwSize; + BYTE byEnableAlarmHandle; // + BYTE byRes1[3]; + BYTE byAlarmInName[NAME_LEN]; //ģⱨ + WORD wAlarmInUpper; //ģѹޣʵֵ10Χ0~360 + WORD wAlarmInLower; //ģѹޣʵֵ10Χ0~360 + NET_DVR_HANDLEEXCEPTION_V30 struAlarmHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ + BYTE byRes2[100]; +}NET_DVR_ANALOG_ALARMINCFG, *LPNET_DVR_ANALOG_ALARMINCFG; + +//ϴϢ(9000չ) +typedef struct +{ + DWORD dwAlarmType;/*0-ź,1-Ӳ,2-źŶʧ,3ƶ,4Ӳδʽ,5-дӲ̳,6-ڵ,7-ʽƥ, 8-Ƿ, 9-Ƶź쳣, + 10-¼쳣,11- ܳ仯,12-쳣,13-ǰ/¼ֱʲƥ,14-Դʧ,15-, 16-POE쳣,17-쳣, + 18-쳣,19-Ƶʧ20-¼21-ر¼22-㷨쳣23-屨,24-Ӳ쳣,25-,26-ͼƬ,27-POC쳣 + 28-ӽ쳣,29-ͣ30-ȱSD*/ + DWORD dwAlarmInputNumber;/*˿*/ + BYTE byAlarmOutputNumber[MAX_ALARMOUT_V30];/*˿ڣΪ1ʾӦ*/ + BYTE byAlarmRelateChannel[MAX_CHANNUM_V30];/*¼ͨΪ1ʾӦ¼, dwAlarmRelateChannel[0]Ӧ1ͨ*/ + BYTE byChannel[MAX_CHANNUM_V30];/*dwAlarmTypeΪ23,6,9,10,14,19,28ʱʾĸͨdwChannel[0]Ӧ1ͨ*/ + BYTE byDiskNumber[MAX_DISKNUM_V30];/*dwAlarmTypeΪ1,4,5ʱ,ʾĸӲ, dwDiskNumber[0]Ӧ1Ӳ*/ + #ifdef SDK_CHEZAI + NET_DVR_ADDIT_POSITION GPS_pos; /* GPSλϢ */ + #endif +}NET_DVR_ALARMINFO_V30, *LPNET_DVR_ALARMINFO_V30; + +typedef struct tagNET_DVR_ALARM_HOT_SPARE +{ + DWORD dwSize; //ṹ + DWORD dwExceptionCase; //ԭ 0-쳣 + NET_DVR_IPADDR struDeviceIP; //쳣豸IPַ + BYTE byRes[256]; // +}NET_DVR_ALARM_HOT_SPARE, *LPNET_DVR_ALARM_HOT_SPARE; + +typedef struct +{ + DWORD dwAlarmType;/*0-ź,1-Ӳ,2-źŶʧ,3ƶ,4Ӳδʽ,5-дӲ̳,6-ڵ,7-ʽƥ, 8-Ƿ, 9-Ƶź쳣10-¼쳣 11- ܳ仯*/ + DWORD dwAlarmInputNumber;/*˿*/ + DWORD dwAlarmOutputNumber[MAX_ALARMOUT];/*˿ڣһλΪ1ʾӦһ*/ + DWORD dwAlarmRelateChannel[MAX_CHANNUM];/*¼ͨһλΪ1ʾӦһ·¼, dwAlarmRelateChannel[0]Ӧ1ͨ*/ + DWORD dwChannel[MAX_CHANNUM];/*dwAlarmTypeΪ23,6,9,10ʱʾĸͨdwChannel[0]λӦ1ͨ*/ + DWORD dwDiskNumber[MAX_DISKNUM];/*dwAlarmTypeΪ1,4,5ʱ,ʾĸӲ, dwDiskNumber[0]λӦ1Ӳ*/ +}NET_DVR_ALARMINFO, *LPNET_DVR_ALARMINFO; + +////////////////////////////////////////////////////////////////////////////////////// +//IPC +/* IP豸ṹ */ +typedef struct +{ + DWORD dwEnable; /* IP豸Ƿ */ + BYTE sUserName[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + NET_DVR_IPADDR struIP; /* IPַ */ + WORD wDVRPort; /* ˿ں */ + BYTE byRes[34]; /* */ +}NET_DVR_IPDEVINFO, *LPNET_DVR_IPDEVINFO; + +#define DEV_ID_LEN 32 //豸ID + +//ipc豸Ϣչ֧ip豸 +typedef struct tagNET_DVR_IPDEVINFO_V31 +{ + BYTE byEnable; //IP豸ǷЧ + BYTE byProType; //Эͣ0-˽Э飬1-Э飬2- + BYTE byEnableQuickAdd; // 0 ֿ֧ 1 ʹÿ + // Ҫ豸IPЭͣϢ豸Ĭָ + BYTE byCameraType; //ֵͨͣΪ 0-壬1-۽ʦ2-۽ѧ3-ʦȫ4-ѧȫ5-ý壬6Cʦλ,7-ѧλ,8-鶨λ,9- + BYTE sUserName[NAME_LEN]; //û + BYTE sPassword[PASSWD_LEN]; // + BYTE byDomain[MAX_DOMAIN_NAME]; //豸 + NET_DVR_IPADDR struIP; //IPַ + WORD wDVRPort; // ˿ں + BYTE szDeviceID[DEV_ID_LEN]; //豸ID + BYTE byEnableTiming; //0-1-NVRIPCԶУʱ2-NVRIPCԶУʱ + BYTE byCertificateValidation;//֤֤ + // byCertificateValidation:bit0: 0-֤֤ 1-֤֤ + // byCertificateValidation:bit1: 0-ĬͨŶ˿ 1-ĬͨŶ˿ +}NET_DVR_IPDEVINFO_V31, *LPNET_DVR_IPDEVINFO_V31; + +/* IPͨƥ */ +typedef struct +{ + BYTE byEnable; /* ͨǷ */ + BYTE byIPID; //IP豸ID8λ豸IDΪ0ʱʾͨ + BYTE byChannel; /* ͨ */ + BYTE byIPIDHigh; // IP豸IDĸ8λ + BYTE byTransProtocol; //Э0-TCP/auto(豸)1-UDP 2-ಥ 3-TCP 4-auto + BYTE byGetStream; /* ǷԸͨȡ0-ǣ1-*/ + BYTE byres[30]; /* */ +} NET_DVR_IPCHANINFO, *LPNET_DVR_IPCHANINFO; + +/* IPýṹ */ +typedef struct +{ + DWORD dwSize; /* ṹС */ + NET_DVR_IPDEVINFO struIPDevInfo[MAX_IP_DEVICE]; /* IP豸 */ + BYTE byAnalogChanEnable[MAX_ANALOG_CHANNUM]; /* ģͨǷãӵ͵߱ʾ1-32ͨ0ʾЧ 1Ч */ + NET_DVR_IPCHANINFO struIPChanInfo[MAX_IP_CHANNEL]; /* IPͨ */ +}NET_DVR_IPPARACFG, *LPNET_DVR_IPPARACFG; +/* չIPýṹ */ +typedef struct tagNET_DVR_IPPARACFG_V31 +{ + DWORD dwSize; /* ṹС */ + NET_DVR_IPDEVINFO_V31 struIPDevInfo[MAX_IP_DEVICE]; /* IP豸 */ + BYTE byAnalogChanEnable[MAX_ANALOG_CHANNUM]; /* ģͨǷãӵ͵߱ʾ1-32ͨ0ʾЧ 1Ч */ + NET_DVR_IPCHANINFO struIPChanInfo[MAX_IP_CHANNEL]; /* IPͨ */ +}NET_DVR_IPPARACFG_V31, *LPNET_DVR_IPPARACFG_V31; + +typedef struct tagNET_DVR_IPSERVER_STREAM +{ + BYTE byEnable; // Ƿ + BYTE byRes[3]; // ֽ + NET_DVR_IPADDR struIPServer; //IPServer ַ + WORD wPort; //IPServer ˿ + WORD wDvrNameLen; // DVR Ƴ + BYTE byDVRName[NAME_LEN]; // DVR + WORD wDVRSerialLen; // кų + WORD byRes1[2]; // ֽ + BYTE byDVRSerialNumber[SERIALNO_LEN]; // DVRкų + BYTE byUserName[NAME_LEN]; // DVR ½û + BYTE byPassWord[PASSWD_LEN]; // DVR½ + BYTE byChannel; // DVR ͨ + BYTE byRes2[11]; // ֽ +}NET_DVR_IPSERVER_STREAM, *LPNET_DVR_IPSERVER_STREAM; + +//ý +typedef struct tagNET_DVR_STREAM_MEDIA_SERVER_CFG +{ + BYTE byValid; /*Ƿ*/ + BYTE byRes1[3]; + NET_DVR_IPADDR struDevIP; + WORD wDevPort; /*ý˿*/ + BYTE byTransmitType; /*Э 0-TCP1-UDP*/ + BYTE byRes2[69]; +}NET_DVR_STREAM_MEDIA_SERVER_CFG,*LPNET_DVR_STREAM_MEDIA_SERVER_CFG; + +//豸ͨϢ +typedef struct tagNET_DVR_DEV_CHAN_INFO +{ + NET_DVR_IPADDR struIP; //DVR IPַ + WORD wDVRPort; //˿ں + BYTE byChannel; //ͨ + BYTE byTransProtocol; //Э0-TCP1-UDP + BYTE byTransMode; //ģʽ 0 1 + BYTE byFactoryType; /*ǰ豸,ͨӿڻȡ*/ + BYTE byDeviceType; //豸(Ƶۺƽ̨ܰʹ)1-ʱƵۺƽ̨byVcaSupportChanModeֶʹýͨʾͨ2- + BYTE byDispChan;//ʾͨ,ʹ + BYTE bySubDispChan;//ʾͨͨţʱʹ + BYTE byResolution; //; 1-CIF 2-4CIF 3-720P 4-1080P 5-500wʹãݸòԴ + BYTE byRes[2]; + BYTE byDomain[MAX_DOMAIN_NAME]; //豸 + BYTE sUserName[NAME_LEN]; //½ʺ + BYTE sPassword[PASSWD_LEN]; // +}NET_DVR_DEV_CHAN_INFO,*LPNET_DVR_DEV_CHAN_INFO; + +//ֱͨýȡ +typedef struct tagNET_DVR_PU_STREAM_CFG +{ + DWORD dwSize; + NET_DVR_STREAM_MEDIA_SERVER_CFG struStreamMediaSvrCfg; + NET_DVR_DEV_CHAN_INFO struDevChanInfo; +}NET_DVR_PU_STREAM_CFG,*LPNET_DVR_PU_STREAM_CFG; + +typedef struct tagNET_DVR_DDNS_STREAM_CFG +{ + BYTE byEnable; // Ƿ + BYTE byRes1[3]; + NET_DVR_IPADDR struStreamServer; //ýַ + WORD wStreamServerPort; //ý˿ + BYTE byStreamServerTransmitType; //ý崫Э 0-TCP1-UDP + BYTE byRes2; + NET_DVR_IPADDR struIPServer; //IPSERVERַ + WORD wIPServerPort; //IPserver˿ں + BYTE byRes3[2]; + BYTE sDVRName[NAME_LEN]; //DVR + WORD wDVRNameLen; // DVRƳ + WORD wDVRSerialLen; // кų + BYTE sDVRSerialNumber[SERIALNO_LEN]; // DVRк + BYTE sUserName[NAME_LEN]; // DVR ½û + BYTE sPassWord[PASSWD_LEN]; // DVR½ + WORD wDVRPort; //DVR˿ں + BYTE byRes4[2]; + BYTE byChannel; // DVR ͨ + BYTE byTransProtocol; //Э0-TCP1-UDP + BYTE byTransMode; //ģʽ 0 1 + BYTE byFactoryType; //ǰ豸,ͨӿڻȡ +}NET_DVR_DDNS_STREAM_CFG, *LPNET_DVR_DDNS_STREAM_CFG; + +#define URL_LEN 240 //URL +typedef struct tagNET_DVR_PU_STREAM_URL +{ + BYTE byEnable; + BYTE strURL[URL_LEN]; + BYTE byTransPortocol ; // Э 0-tcp 1-UDP + WORD wIPID; //豸IDţwIPID = iDevInfoIndex + iGroupNO*64 +1 + BYTE byChannel; //ͨ + BYTE byRes[7]; +}NET_DVR_PU_STREAM_URL, *LPNET_DVR_PU_STREAM_URL; + +typedef struct tagNET_DVR_HKDDNS_STREAM +{ + BYTE byEnable; // Ƿ + BYTE byRes[3]; // ֽ + BYTE byDDNSDomain[64]; // hiDDNS + WORD wPort; // hiDDNS ˿ + WORD wAliasLen; // + BYTE byAlias[NAME_LEN]; // + WORD wDVRSerialLen; // кų + BYTE byRes1[2]; // ֽ + BYTE byDVRSerialNumber[SERIALNO_LEN]; // DVRк + BYTE byUserName[NAME_LEN]; // DVR ½û + BYTE byPassWord[PASSWD_LEN]; // DVR½ + BYTE byChannel; // DVRͨ + BYTE byRes2[11]; // +}NET_DVR_HKDDNS_STREAM, *LPNET_DVR_HKDDNS_STREAM; + +typedef struct tagNET_DVR_IPCHANINFO_V40 +{ + BYTE byEnable; /* ͨǷ */ + BYTE byRes1; + WORD wIPID; //IP豸ID + DWORD dwChannel; //ͨ + BYTE byTransProtocol; //Э0-TCP1-UDP2- ಥ3-RTSP0xff- auto(Զ) + BYTE byTransMode; //ģʽ 0 1 + BYTE byFactoryType; /*ǰ豸,ͨӿڻȡ*/ + BYTE byRes; + BYTE strURL[URL_LEN/*240*/]; /*RTSPЭȡURL RTSPЭʱЧ*/ +}NET_DVR_IPCHANINFO_V40,*LPNET_DVR_IPCHANINFO_V40; + +// ŵCVR +#define MAX_ID_COUNT 256 +#define MAX_STREAM_ID_COUNT 1024 +#define STREAM_ID_LEN 32 +#define PLAN_ID_LEN 32 +#define DEVICE_NO_LEN 24 +#define MAX_VOLUMENAME_LEN 32 //¼ +#define MAX_VAG_CHANNO_LEN 32 //VAGЭȡʱͨű볤 + +#define MAX_STREAM_ID_NUM 30 //IDĿ + +// Ϣ - 72ֽڳ +typedef struct tagNET_DVR_STREAM_INFO +{ + DWORD dwSize; + BYTE byID[STREAM_ID_LEN]; //ID + DWORD dwChannel; //豸ͨ0xffffffffʱʾ + BYTE byRes[32]; // +}NET_DVR_STREAM_INFO, *LPNET_DVR_STREAM_INFO; + +typedef struct tagNET_DVR_RTSP_PROTOCAL_CFG +{ + BYTE byEnable; + BYTE byLocalBackUp; //Ƿ񱾵ر + BYTE byRes[2]; + BYTE strURL[URL_LEN_V40]; + DWORD dwProtocalType; //Э + BYTE sUserName[NAME_LEN]; //豸½û + BYTE sPassWord[PASSWD_LEN]; // 豸½ + BYTE byAddress[MAX_DOMAIN_NAME]; //ǰIP,Ҫ豸 + //ʽΪĸ'.'Ϊ,ΪIPַ + WORD wPort; + BYTE byRes1[122]; // +}NET_DVR_RTSP_PROTOCAL_CFG, *LPNET_DVR_RTSP_PROTOCAL_CFG; + +typedef union tagNET_DVR_GET_STREAM_UNION +{ + NET_DVR_IPCHANINFO struChanInfo; /*IPͨϢ*/ + NET_DVR_IPSERVER_STREAM struIPServerStream; // IPServerȥ + NET_DVR_PU_STREAM_CFG struPUStream; // ͨǰ豸ȡýȥ + NET_DVR_DDNS_STREAM_CFG struDDNSStream; //ͨIPServerýȡ + NET_DVR_PU_STREAM_URL struStreamUrl; //ͨý嵽urlȡ + NET_DVR_HKDDNS_STREAM struHkDDNSStream; //ͨhiDDNSȥȡ + NET_DVR_IPCHANINFO_V40 struIPChan; //ֱӴ豸ȡչ +}NET_DVR_GET_STREAM_UNION, *LPNET_DVR_GET_STREAM_UNION; + +typedef enum +{ + NET_SDK_IP_DEVICE = 0, + NET_SDK_STREAM_MEDIA, + NET_SDK_IPSERVER, + NET_SDK_DDNS_STREAM_CFG, + NET_SDK_STREAM_MEDIA_URL, + NET_SDK_HKDDNS, + NET_SDK_IP_DEVICE_ADV, + NET_SDK_IP_DEVICE_V40, + NET_SDK_RTSP +}GET_STREAM_TYPE; + +typedef struct tagNET_DVR_STREAM_MODE +{ + BYTE byGetStreamType; //ȡʽGET_STREAM_TYPE0-ֱӴ豸ȡ1-ýȡ2-ͨIPServeripַȡ,3.ͨIPServerҵ豸ͨýȥ豸 + //4-ͨýURLȥȡ,5-ͨhkDDNSȡ6-ֱӴ豸ȡ(չ)ʹNET_DVR_IPCHANINFO_V40ṹ, 7-ͨRTSPЭ鷽ʽȡ + BYTE byRes[3]; //ֽ + NET_DVR_GET_STREAM_UNION uGetStream; // ͬȡʽṹ +}NET_DVR_STREAM_MODE, *LPNET_DVR_STREAM_MODE; + +//չIP豸 +typedef struct tagNET_DVR_IPPARACFG_V40 +{ + DWORD dwSize; /* ṹС */ + DWORD dwGroupNum; // 豸ֵ֧ + DWORD dwAChanNum; //ģͨ + DWORD dwDChanNum; //ͨ + DWORD dwStartDChan; //ʼͨ + BYTE byAnalogChanEnable[MAX_CHANNUM_V30]; /* ģͨǷãӵ͵߱ʾ1-64ͨ0ʾЧ 1Ч */ + NET_DVR_IPDEVINFO_V31 struIPDevInfo[MAX_IP_DEVICE_V40]; /* IP豸 */ + NET_DVR_STREAM_MODE struStreamMode[MAX_CHANNUM_V30]; + BYTE byRes2[20]; // ֽ +}NET_DVR_IPPARACFG_V40, *LPNET_DVR_IPPARACFG_V40; + + +//ΪCVRչı +typedef struct tagNET_DVR_ALARMINFO_DEV +{ + DWORD dwAlarmType; //0-(ͨ)ź1-˽о𻵣2- NVR˳ + //3-״̬쳣4-ϵͳʱ쳣5-¼ʣͣ + //6-(ͨ)ƶⱨ7-(ͨ)ڵ8-¼ʧ; 9-Ƶʵʱʾ; 10-Դʹʸ澯; 11- CVRԶ޸쳣 12-¼쳣 + NET_DVR_TIME struTime; //ʱ + BYTE byRes[32]; // + DWORD dwNumber; //Ŀ + WORD *pNO; //dwNumberWORD; ÿWORDʾһͨţߴ̺, ЧʱΪ0 +}NET_DVR_ALARMINFO_DEV, *LPNET_DVR_ALARMINFO_DEV; + +/* */ +typedef struct +{ + BYTE byIPID; /* IP豸IDȡֵ1- MAX_IP_DEVICE */ + BYTE byAlarmOut; /* */ + BYTE byRes[18]; /* */ +}NET_DVR_IPALARMOUTINFO, *LPNET_DVR_IPALARMOUTINFO; + +/* IPýṹ */ +typedef struct +{ + DWORD dwSize; /* ṹС */ + NET_DVR_IPALARMOUTINFO struIPAlarmOutInfo[MAX_IP_ALARMOUT];/* IP */ +}NET_DVR_IPALARMOUTCFG, *LPNET_DVR_IPALARMOUTCFG; + +/* IP */ +typedef struct tagNET_DVR_IPALARMOUTINFO_V40 +{ + DWORD dwIPID; /* IP豸ID */ + DWORD dwAlarmOut; /* IP豸IDӦı */ + BYTE byRes[32]; /* */ +}NET_DVR_IPALARMOUTINFO_V40, *LPNET_DVR_IPALARMOUTINFO_V40;/**/ + +typedef struct tagNET_DVR_IPALARMOUTCFG_V40 +{ + DWORD dwSize; //ṹ峤 + DWORD dwCurIPAlarmOutNum; + NET_DVR_IPALARMOUTINFO_V40 struIPAlarmOutInfo[MAX_IP_ALARMOUT_V40];/*IP*/ + BYTE byRes[256]; +}NET_DVR_IPALARMOUTCFG_V40, *LPNET_DVR_IPALARMOUTCFG_V40; /*IP*/ + +/* */ +typedef struct +{ + BYTE byIPID; /* IP豸IDȡֵ1- MAX_IP_DEVICE */ + BYTE byAlarmIn; /* */ + BYTE byRes[18]; /* */ +}NET_DVR_IPALARMININFO, *LPNET_DVR_IPALARMININFO; + +/* IPýṹ */ +typedef struct +{ + DWORD dwSize; /* ṹС */ + NET_DVR_IPALARMININFO struIPAlarmInInfo[MAX_IP_ALARMIN];/* IP */ +}NET_DVR_IPALARMINCFG, *LPNET_DVR_IPALARMINCFG; + +/* IP */ +typedef struct tagNET_DVR_IPALARMININFO_V40 +{ + DWORD dwIPID; /* IP豸ID */ + DWORD dwAlarmIn; /* IP豸IDӦı */ + BYTE byRes[32]; /* */ +}NET_DVR_IPALARMININFO_V40, *LPNET_DVR_IPALARMININFO_V40; /* */ + +typedef struct tagNET_DVR_IPALARMINCFG_V40 +{ + DWORD dwSize; //ṹ峤 + DWORD dwCurIPAlarmInNum; //ǰ + NET_DVR_IPALARMININFO_V40 struIPAlarmInInfo[MAX_IP_ALARMIN_V40];/* IP*/ + BYTE byRes[256]; +}NET_DVR_IPALARMINCFG_V40, *LPNET_DVR_IPALARMINCFG_V40; /*IPԴ*/ + +//ipc alarm info +typedef struct tagNET_DVR_IPALARMINFO +{ + NET_DVR_IPDEVINFO struIPDevInfo[MAX_IP_DEVICE]; /* IP豸 */ + BYTE byAnalogChanEnable[MAX_ANALOG_CHANNUM]; /* ģͨǷã0-δ 1- */ + NET_DVR_IPCHANINFO struIPChanInfo[MAX_IP_CHANNEL]; /* IPͨ */ + NET_DVR_IPALARMININFO struIPAlarmInInfo[MAX_IP_ALARMIN]; /* IP */ + NET_DVR_IPALARMOUTINFO struIPAlarmOutInfo[MAX_IP_ALARMOUT]; /* IP */ +}NET_DVR_IPALARMINFO, *LPNET_DVR_IPALARMINFO; + +//ipcøı䱨Ϣչ 9000_1.1 +typedef struct tagNET_DVR_IPALARMINFO_V31 +{ + NET_DVR_IPDEVINFO_V31 struIPDevInfo[MAX_IP_DEVICE]; /* IP豸 */ + BYTE byAnalogChanEnable[MAX_ANALOG_CHANNUM]; /* ģͨǷã0-δ 1- */ + NET_DVR_IPCHANINFO struIPChanInfo[MAX_IP_CHANNEL]; /* IPͨ */ + NET_DVR_IPALARMININFO struIPAlarmInInfo[MAX_IP_ALARMIN]; /* IP */ + NET_DVR_IPALARMOUTINFO struIPAlarmOutInfo[MAX_IP_ALARMOUT]; /* IP */ +}NET_DVR_IPALARMINFO_V31, *LPNET_DVR_IPALARMINFO_V31; + +typedef struct tagNET_DVR_IPALARMINFO_V40 +{ + NET_DVR_IPDEVINFO_V31 struIPDevInfo[MAX_IP_DEVICE_V40]; // IP豸 + BYTE byAnalogChanEnable[MAX_CHANNUM_V30]; /* ģͨǷã0-δ 1- */ + NET_DVR_IPCHANINFO struIPChanInfo[MAX_CHANNUM_V30]; /* IPͨ */ + NET_DVR_IPALARMININFO struIPAlarmInInfo[MAX_IP_ALARMIN]; /* IP */ + NET_DVR_IPALARMOUTINFO struIPAlarmOutInfo[MAX_IP_ALARMOUT]; /* IP */ + BYTE byRes[20]; // ֽ +}NET_DVR_IPALARMINFO_V40, *LPNET_DVR_IPALARMINFO_V40; + +typedef enum _HD_STAT_ +{ + HD_STAT_OK = 0, /* */ + HD_STAT_UNFORMATTED = 1, /* δʽ */ + HD_STAT_ERROR = 2, /* */ + HD_STAT_SMART_FAILED = 3, /* SMART״̬ */ + HD_STAT_MISMATCH = 4, /* ƥ */ + HD_STAT_IDLE = 5, /* */ + NET_HD_STAT_OFFLINE = 6, /* ̴δ״̬ */ + HD_RIADVD_EXPAND = 7, /* ̿ */ + HD_STAT_REPARING = 10, /* Ӳ޸(9000 2.0) */ + HD_STAT_FORMATING = 11, /* Ӳڸʽ(9000 2.0) */ +}HD_STAT; + + +//ӲϢ +typedef struct +{ + DWORD dwHDNo; /*Ӳ̺, ȡֵ0~MAX_DISKNUM_V30-1*/ + DWORD dwCapacity; /*Ӳ()*/ + DWORD dwFreeSpace; /*Ӳʣռ()*/ + DWORD dwHdStatus; //Ӳ״̬() HD_STAT 0-, 1-δʽ, 2-, 3-SMART״̬, + //4-ƥ, 5- 6-Ӳ̲ 7-̿ 10-Ӳ޸ + //11-Ӳڸʽ 12-Ӳڵȴʽ 13-Ӳж 14-Ӳ̲ + //15-ɾ(Ӳ),16- + BYTE byHDAttr; /*0-ͨ, 1-; 2-ֻ 3-浵CVRרã4-ɶд*/ + BYTE byHDType; /*0-Ӳ,1-ESATAӲ,2-NASӲ,3-iSCSIӲ 4-Array,5-SD,6-minSAS*/ + BYTE byDiskDriver; // ֵ ASCIIַ + BYTE byRes1; + DWORD dwHdGroup; /*ĸ 1-MAX_HD_GROUP*/ + BYTE byRecycling; // Ƿѭ 0ѭã1ѭ + BYTE bySupportFormatType; /*ǰӲֵ֧ĸʽ,ֻǰýڵ֧byHDType=5(SD)ʱ; + bySupportFormatType=0,豸ĬʽӲ; + bySupportFormatType:bit0: 0-֧FAT32ʽ,1-֧; + bySupportFormatType:bit1: 0-֧EXT4ʽ,1-֧;*/ + BYTE byFormatType; /*ǰӲ̸ʽ: 0-豸Ĭϸʽ,1-ָFAT32ʽ(byHDType=5(SD)ʱЧ), + 2-ָEXT4ʽ(byHDType=5(SD)ʱЧ)*/ + BYTE byRes2; + DWORD dwStorageType; //λʾ 0-֧ 0-֧ + // dwStorageType & 0x1 ʾǷͨ¼רô洢 + // dwStorageType & 0x2 ʾǷdz֡¼רô洢 + // dwStorageType & 0x4 ʾǷͼƬ¼רô洢 + + DWORD dwPictureCapacity; //ӲͼƬ()λ:MB + DWORD dwFreePictureSpace; //ʣͼƬռ()λ:MB + BYTE byRes3[104]; +}NET_DVR_SINGLE_HD, *LPNET_DVR_SINGLE_HD; + +typedef struct +{ + DWORD dwSize; + DWORD dwHDCount; /*Ӳ()*/ + NET_DVR_SINGLE_HD struHDInfo[MAX_DISKNUM_V30];//ӲزҪЧ +}NET_DVR_HDCFG, *LPNET_DVR_HDCFG; + +//ӲϢ +typedef struct +{ + DWORD dwHDNo; /*Ӳ̺, ȡֵ0~MAX_DISKNUM_V30-1*/ + DWORD dwCapacity; /*Ӳ()*/ + DWORD dwFreeSpace; /*Ӳʣռ()*/ + DWORD dwHdStatus; //Ӳ״̬() HD_STAT 0-, 1-δʽ, 2-, 3-SMART״̬, + //4-ƥ, 5- 6-Ӳ̲ 7-̿ 10-Ӳ޸ + //11-Ӳڸʽ 12-Ӳڵȴʽ 13-Ӳж 14-Ӳ̲ + //15-ɾ(Ӳ),16-,17-棨ʱɻ̣,18-̣Ѿ𻵵Ӳ̣,19-̣쳣߳Уֻ,20-δ֤δ⣬ҪCVRжԴ̽м⣩ + //21-δ¼иʽ + BYTE byHDAttr; /*0-ͨ, 1-; 2-ֻ3-浵4-ɶд*/ + BYTE byHDType; /*0-Ӳ,1-ESATAӲ,2-NASӲ,3-iSCSIӲ 4-Array,5-SD,6-minSAS*/ + BYTE byDiskDriver; // ֵ ASCIIַ + BYTE byGenusGruop; //飺0-1-У2-洢أ3-̣4-δʼ5-Ч̣6-ȱ7-ȫȱֻ + DWORD dwHdGroup; /*ĸ 1-MAX_HD_GROUP*/ + BYTE byRecycling; // Ƿѭ 0ѭã1ѭ + BYTE bySupportFormatType; /*ǰӲֵ֧ĸʽ,ֻǰýڵ֧byHDType=5(SD)ʱ; + bySupportFormatType=0,豸ĬʽӲ; + bySupportFormatType:bit0: 0-֧FAT32ʽ,1-֧; + bySupportFormatType:bit1: 0-֧EXT4ʽ,1-֧;*/ + BYTE byFormatType; /*ǰӲ̸ʽ: 0-豸Ĭϸʽ,1-ָFAT32ʽ(byHDType=5(SD)ʱЧ), + 2-ָEXT4ʽ(byHDType=5(SD)ʱЧ)*/ + BYTE byRes2; + DWORD dwStorageType; //λʾ 0-֧ 0-֧ + // dwStorageType & 0x1 ʾǷͨ¼רô洢 + // dwStorageType & 0x2 ʾǷdz֡¼רô洢 + // dwStorageType & 0x4 ʾǷͼƬ¼רô洢 + + DWORD dwPictureCapacity; //ӲͼƬ()λ:MB + DWORD dwFreePictureSpace; //ʣͼƬռ()λ:MB + BYTE byDiskLocation[NET_SDK_DISK_LOCATION_LEN/*16*/];//Ӳλãʽעֻ + BYTE bySupplierName[NET_SDK_SUPPLIER_NAME_LEN/*32*/];//Ӧƣֻ + BYTE byDiskModel[NET_SDK_DISK_MODEL_LEN /*64*/];//Ӳͺţֻ + char szHDLocateIP[SDK_MAX_IP_LEN];//IPϢ + BYTE byRes3[80]; +}NET_DVR_SINGLE_HD_V50, *LPNET_DVR_SINGLE_HD_V50; + +typedef struct +{ + DWORD dwSize; + DWORD dwHDCount; /*Ӳ()*/ + NET_DVR_SINGLE_HD_V50 struHDInfoV50[MAX_DISKNUM_V30];//ӲزҪЧ + BYTE byRes[128]; +}NET_DVR_HDCFG_V50, *LPNET_DVR_HDCFG_V50; + +typedef struct tagNET_DVR_HARD_DISK_SINGLE_VOLUME_INFO +{ + DWORD dwSize; + BYTE byHDVolumeNo; /*Ӳ̾ID()*/ + BYTE byType; /*Ӳ̾:0-¼ڱ¼񣩣1-浵ڴ浵¼·¼ƻʱܹ浵, + 2-ļֻڴ洢ͻϴļ·¼ƻʱܹļҪ˵3-ͼƬֻڴ洢ͻϴͼƬ*/ + BYTE byRes1[2]; + DWORD dwCapacity; /*Ӳ̾λMB()*/ + DWORD dwFreeSpace; /*Ӳ̾ʣռ䣬λMB() */ + BYTE byHDVolumeName[NET_SDK_DISK_VOLUME_LEN/*36*/]; /*Ӳ̾()*/ + BYTE byLoopCover; /*Ƿѭǣ0-ѭǣ1-ѭǣӲ֮̾ѭϵ¼*/ + BYTE byRes[63]; +}NET_DVR_HARD_DISK_SINGLE_VOLUME_INFO, *LPNET_DVR_HARD_DISK_SINGLE_VOLUME_INFO; + +typedef struct tagNET_DVR_HARD_DISK_VOLUME_INFO +{ + DWORD dwSize; + DWORD dwHDVolumeCount; /*ǰӲ̾()*/ + NET_DVR_HARD_DISK_SINGLE_VOLUME_INFO struSingleVolumeInfo[NET_SDK_MAX_DISK_VOLUME/*33*/]; /*Ӳ̾Ϣ*/ + BYTE byRes[128]; +}NET_DVR_HARD_DISK_VOLUME_INFO, *LPNET_DVR_HARD_DISK_VOLUME_INFO; + +//Ϣչ +typedef struct tagNET_DVR_SINGLE_HDGROUP_V40 +{ + DWORD dwHDGroupNo; /*() 1-MAX_HD_GROUP*/ + DWORD dwRelRecordChan[MAX_CHANNUM_V40]; //¼ֵͨʾ0xffffffffʱΪЧ + BYTE byRes[64]; /* */ +}NET_DVR_SINGLE_HDGROUP_V40, *LPNET_DVR_SINGLE_HDGROUP_V40; + +typedef struct tagNET_DVR_HDGROUP_CFG_V40 +{ + DWORD dwSize; //ṹС + DWORD dwMaxHDGroupNum; //豸ֵ֧-ֻ + DWORD dwCurHDGroupNum; /*ǰõ*/ + NET_DVR_SINGLE_HDGROUP_V40 struHDGroupAttr[MAX_HD_GROUP]; //ӲزҪЧ + BYTE byRes[128]; // +}NET_DVR_HDGROUP_CFG_V40, *LPNET_DVR_HDGROUP_CFG_V40; + +//Ϣ +typedef struct +{ + DWORD dwHDGroupNo; /*() 1-MAX_HD_GROUP*/ + BYTE byHDGroupChans[MAX_CHANNUM_V30]; /*Ӧ¼ͨ, 0-ʾͨ¼󵽸飬1-ʾ¼󵽸*/ + BYTE byRes[8]; +}NET_DVR_SINGLE_HDGROUP, *LPNET_DVR_SINGLE_HDGROUP; + +typedef struct +{ + DWORD dwSize; + DWORD dwHDGroupCount; /*()*/ + NET_DVR_SINGLE_HDGROUP struHDGroupAttr[MAX_HD_GROUP];//ӲزҪЧ +}NET_DVR_HDGROUP_CFG, *LPNET_DVR_HDGROUP_CFG; + + +//ŲĽṹ +typedef struct +{ + DWORD dwSize; + DWORD dwMajorScale; /* ʾ 0-ţ1-*/ + DWORD dwMinorScale; /* ʾ 0-ţ1-*/ + DWORD dwRes[2]; +}NET_DVR_SCALECFG, *LPNET_DVR_SCALECFG; + + + +//DVR(9000չ) +typedef struct +{ + DWORD dwSize; + BYTE sAlarmOutName[NAME_LEN]; /* */ + DWORD dwAlarmOutDelay; /* ʱ(-1Ϊޣֶر) */ + //0-5,1-10,2-30,3-1,4-2,5-5,6-10,7-ֶ,8-1,9-2,10-3,11-4 + NET_DVR_SCHEDTIME struAlarmOutTime[MAX_DAYS][MAX_TIMESEGMENT_V30];/* ʱ */ + BYTE byAlarmOutHandle; /* Ƿ 0- 1-*/ + BYTE byNormalSatus; /* ̬ 0- 1-*/ + BYTE byRes[14]; +}NET_DVR_ALARMOUTCFG_V30, *LPNET_DVR_ALARMOUTCFG_V30; + +//DVR +typedef struct +{ + DWORD dwSize; + BYTE sAlarmOutName[NAME_LEN]; /* */ + DWORD dwAlarmOutDelay; /* ʱ(-1Ϊޣֶر) */ + //0-5,1-10,2-30,3-1,4-2,5-5,6-10,7-ֶ, 8-1, 9-3 + NET_DVR_SCHEDTIME struAlarmOutTime[MAX_DAYS][MAX_TIMESEGMENT];/* ʱ */ +}NET_DVR_ALARMOUTCFG, *LPNET_DVR_ALARMOUTCFG; + +//DVRԤ(9000չ) +/*лָڵǰԤģʽлʾ棬лԤģʽbyPreviewNumberΪ01棩bySwitchSeq[0][0] = 1,bySwitchSeq[0][1] = 2,bySwitchSeq[0][2] = 3 +򱾵ػһֱ1棬Ȼ水1,2,3ͨ˳л*/ +typedef struct +{ + DWORD dwSize; + BYTE byPreviewNumber;//Ԥģʽ,0-1,1-4,2-9,3-16,0xff: + BYTE byEnableAudio;//ǷԤ,0-Ԥ,1-Ԥ + WORD wSwitchTime;//лʱ,0-л,1-5s,2-10s,3-20s,4-30s,5-60s,6-120s,7-300s + BYTE bySwitchSeq[MAX_PREVIEW_MODE][MAX_WINDOW_V30];//л˳,lSwitchSeq[i]Ϊ 0xffʾ + BYTE byRes[24]; +}NET_DVR_PREVIEWCFG_V30, *LPNET_DVR_PREVIEWCFG_V30; + +//DVRԤ +typedef struct +{ + DWORD dwSize; + BYTE byPreviewNumber;//ԤĿ,0-1,1-4,2-9,3-16,0xff: + BYTE byEnableAudio;//ǷԤ,0-Ԥ,1-Ԥ + WORD wSwitchTime;//лʱ,0-л,1-5s,2-10s,3-20s,4-30s,5-60s,6-120s,7-300s + BYTE bySwitchSeq[MAX_WINDOW];//л˳,lSwitchSeq[i]Ϊ 0xffʾ +}NET_DVR_PREVIEWCFG, *LPNET_DVR_PREVIEWCFG; + +//DVRƵ +typedef struct +{ + WORD wResolution; /* ֱ */ + WORD wFreq; /* ˢƵ */ + DWORD dwBrightness; /* */ +}NET_DVR_VGAPARA; + +/* +* MATRIXṹ +*/ +typedef struct +{ + WORD wOrder[MAX_ANALOG_CHANNUM]; /* Ԥ˳, 0xffʾӦĴڲԤ */ + WORD wSwitchTime; /* Ԥлʱ */ + BYTE res[14]; +}NET_DVR_MATRIXPARA_V30, *LPNET_DVR_MATRIXPARA_V30; + +typedef struct +{ + WORD wDisplayLogo; /* ʾƵͨ */ + WORD wDisplayOsd; /* ʾʱ */ +}NET_DVR_MATRIXPARA; + +typedef struct +{ + BYTE byVideoFormat; /* ʽ,0-PAL,1-NTSC */ + BYTE byMenuAlphaValue; /* ˵뱳ͼԱȶ */ + WORD wScreenSaveTime; /* Ļʱ 0-Ӳ,1-1,2-2,3-5,4-10,5-20,6-30 */ + WORD wVOffset; /* Ƶƫ */ + WORD wBrightness; /* Ƶ */ + BYTE byStartMode; /* Ƶģʽ(0:˵,1:Ԥ)*/ + BYTE byEnableScaler; /* Ƿ (0-, 1-)*/ +}NET_DVR_VOOUT; + +//DVRƵ(9000չ) +typedef struct +{ + DWORD dwSize; + NET_DVR_VOOUT struVOOut[MAX_VIDEOOUT_V30]; + NET_DVR_VGAPARA struVGAPara[MAX_VGA_V30]; /* VGA */ + NET_DVR_MATRIXPARA_V30 struMatrixPara[MAX_MATRIXOUT]; /* MATRIX */ + BYTE byRes[16]; +}NET_DVR_VIDEOOUT_V30, *LPNET_DVR_VIDEOOUT_V30; + +//DVRƵ +typedef struct +{ + DWORD dwSize; + NET_DVR_VOOUT struVOOut[MAX_VIDEOOUT]; + NET_DVR_VGAPARA struVGAPara[MAX_VGA]; /* VGA */ + NET_DVR_MATRIXPARA struMatrixPara; /* MATRIX */ +}NET_DVR_VIDEOOUT, *LPNET_DVR_VIDEOOUT; + + +//û(ӽṹ)(չ) +typedef struct tagNET_DVR_USER_INFO_V40 +{ + BYTE sUserName[NAME_LEN]; /* ûֻ16ֽ */ + BYTE sPassword[PASSWD_LEN]; /* */ + BYTE byLocalRight[MAX_RIGHT]; /* Ȩ */ + /*0: ؿ̨*/ + /*1: ֶ¼*/ + /*2: ػط*/ + /*3: ò*/ + /*4: ز鿴״̬־*/ + /*5: ظ߼(ʽػ)*/ + /*6: ز鿴 */ + /*7: عģIP camera */ + /*8: ر */ + /*9: عػ/ */ + BYTE byRemoteRight[MAX_RIGHT];/* ԶȨ */ + /*0: Զ̨̿*/ + /*1: Զֶ¼*/ + /*2: Զ̻ط */ + /*3: Զò*/ + /*4: Զ̲鿴״̬־*/ + /*5: Զ̸߼(ʽػ)*/ + /*6: Զ̷Խ*/ + /*7: ԶԤ*/ + /*8: Զ󱨾ϴ*/ + /*9: Զ̿ƣ*/ + /*10: Զ̿ƴ*/ + /*11: Զ̲鿴 */ + /*12: Զ̹ģIP camera */ + /*13: Զ̹ػ/ */ + DWORD dwNetPreviewRight[MAX_CHANNUM_V40]; /* Զ̿Ԥͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalRecordRight[MAX_CHANNUM_V40]; /* ؿ¼ͨǰ˳У0xffffffffΪЧ*/ + DWORD dwNetRecordRight[MAX_CHANNUM_V40]; /* Զ̿¼ͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalPlaybackRight[MAX_CHANNUM_V40]; /* ؿԻطŵͨǰ˳У0xffffffffΪЧ*/ + DWORD dwNetPlaybackRight[MAX_CHANNUM_V40]; /* Զ̿Իطŵͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalPTZRight[MAX_CHANNUM_V40]; /* ؿPTZͨǰ˳У0xffffffffΪЧ*/ + DWORD dwNetPTZRight[MAX_CHANNUM_V40]; /* Զ̿PTZͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalBackupRight[MAX_CHANNUM_V40]; /* رȨͨǰ˳У0xffffffffΪЧ*/ + NET_DVR_IPADDR struUserIP; /* ûIPַ(Ϊ0ʱʾκεַ) */ + BYTE byMACAddr[MACADDR_LEN]; /* ַ */ + BYTE byPriority; /* ȼ0xff-ޣ0--ͣ1--У2-- */ + /* ޡʾ֧ȼ + ͡ĬȨ:غԶ̻ط,غԶ̲鿴־ + ״̬,غԶ̹ػ/ + СغԶ̨̿,غԶֶ¼,غ + Զ̻ط,ԽԶԤر,/Զ̹ػ/ + ߡԱ */ + BYTE byAlarmOnRight; // ڲȨ 1-Ȩޣ0-Ȩ + BYTE byAlarmOffRight; // ڳȨ 1-Ȩޣ0-Ȩ + BYTE byBypassRight; // ·Ȩ 1-Ȩޣ0-Ȩ + BYTE byRes1[2]; //ֽڶ + BYTE byPublishRight[MAX_RIGHT]; //ϢרȨ + /*0: زȨ*/ + /*1: ĿȨ*/ + /*2: ճȨ*/ + /*3: ϴزȨ*/ + /*4: ½ĿȨ*/ + /*5: ½ճȨ*/ + /*6: ϢȨ*/ + /*7: ն˹Ȩ*/ + /*8: ҵȨ*/ + BYTE byRes[84]; +}NET_DVR_USER_INFO_V40, *LPNET_DVR_USER_INFO_V40; + +//û(ӽṹ)(չ) +typedef struct tagNET_DVR_USER_INFO_V51 +{ + BYTE sUserName[NAME_LEN/*32*/]; /* ûֻ16ֽ */ + BYTE sPassword[PASSWD_LEN/*16*/]; /* */ + BYTE byLocalRight[MAX_RIGHT/*32*/]; /* Ȩ */ + /*0: ؿ̨*/ + /*1: ֶ¼*/ + /*2: ػط*/ + /*3: ò*/ + /*4: ز鿴״̬־*/ + /*5: ظ߼(ʽػ)*/ + /*6: ز鿴 */ + /*7: عģIP camera */ + /*8: ر */ + /*9: عػ/ */ + /*10: Ԥ */ + BYTE byRemoteRight[MAX_RIGHT/*32*/];/* ԶȨ */ + /*0: Զ̨̿*/ + /*1: Զֶ¼*/ + /*2: Զ̻ط */ + /*3: Զò*/ + /*4: Զ̲鿴״̬־*/ + /*5: Զ̸߼(ʽػ)*/ + /*6: Զ̷Խ*/ + /*7: ԶԤ*/ + /*8: Զ󱨾ϴ*/ + /*9: Զ̿ƣ*/ + /*10: Զ̿ƴ*/ + /*11: Զ̲鿴 */ + /*12: Զ̹ģIP camera */ + /*13: Զ̹ػ/ */ + DWORD dwNetPreviewRight[MAX_CHANNUM_V40/*512*/]; /* Զ̿Ԥͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalRecordRight[MAX_CHANNUM_V40/*512*/]; /* ؿ¼ͨǰ˳У0xffffffffΪЧ*/ + DWORD dwNetRecordRight[MAX_CHANNUM_V40/*512*/]; /* Զ̿¼ͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalPlaybackRight[MAX_CHANNUM_V40/*512*/]; /* ؿԻطŵͨǰ˳У0xffffffffΪЧ*/ + DWORD dwNetPlaybackRight[MAX_CHANNUM_V40/*512*/]; /* Զ̿Իطŵͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalPTZRight[MAX_CHANNUM_V40/*512*/]; /* ؿPTZͨǰ˳У0xffffffffΪЧ*/ + DWORD dwNetPTZRight[MAX_CHANNUM_V40/*512*/]; /* Զ̿PTZͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalBackupRight[MAX_CHANNUM_V40/*512*/]; /* رȨͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalPreviewRight[MAX_CHANNUM_V40/*512*/]; /* ԤȨͨǰ˳У0xffffffffΪЧ*/ + NET_DVR_IPADDR struUserIP; /* ûIPַ(Ϊ0ʱʾκεַ) */ + BYTE byMACAddr[MACADDR_LEN/*6*/]; /* ַ */ + BYTE byPriority; /* ȼ0xff-ޣ0--ͣ1--У2-- */ + /* ޡʾ֧ȼ + ͡ĬȨ:غԶ̻ط,غԶ̲鿴־ + ״̬,غԶ̹ػ/ + СغԶ̨̿,غԶֶ¼,غ + Զ̻ط,ԽԶԤر,/Զ̹ػ/ߡԱ */ + BYTE byAlarmOnRight; // ڲȨ 1-Ȩޣ0-Ȩ + BYTE byAlarmOffRight; // ڳȨ 1-Ȩޣ0-Ȩ + BYTE byBypassRight; // ·Ȩ 1-Ȩޣ0-Ȩ + BYTE byRes1[2]; //ֽڶ + BYTE byPublishRight[MAX_RIGHT/*32*/]; //ϢרȨ + /*0: زȨ*/ + /*1: ĿȨ*/ + /*2: ճȨ*/ + /*3: ϴزȨ*/ + /*4: ½ĿȨ*/ + /*5: ½ճȨ*/ + /*6: ϢȨ*/ + /*7: ն˹Ȩ*/ + /*8: ҵȨ*/ + DWORD dwPasswordValidity; //Ч,Աû޸,λ죬0ʾЧ + BYTE byKeypadPassword[PASSWD_LEN/*16*/]; // + BYTE byUserOperateType; //ûͣ1-û2-û3-û+û + BYTE byRes[1007]; +}NET_DVR_USER_INFO_V51, *LPNET_DVR_USER_INFO_V51; + +typedef struct tagNET_DVR_USER_V51 +{ + DWORD dwSize; //ṹС + DWORD dwMaxUserNum; //豸ֵ֧û-ֻ + NET_DVR_USER_INFO_V51 struUser[MAX_USERNUM_V30/*32*/]; /* û */ + char sloginPassword[PASSWD_LEN/*16*/]; /* ½ȷ */ + BYTE byRes[240]; // +}NET_DVR_USER_V51, *LPNET_DVR_USER_V51; + +//û(ӽṹ)(չ) +typedef struct tagNET_DVR_USER_INFO_V52 +{ + BYTE sUserName[NAME_LEN/*32*/]; /* ûֻ16ֽ */ + BYTE sPassword[PASSWD_LEN/*16*/]; /* */ + BYTE byLocalRight[MAX_RIGHT/*32*/]; /* Ȩ */ + /*0: ؿ̨*/ + /*1: ֶ¼*/ + /*2: ػط*/ + /*3: ò*/ + /*4: ز鿴״̬־*/ + /*5: ظ߼(ʽػ)*/ + /*6: ز鿴 */ + /*7: عģIP camera */ + /*8: ر */ + /*9: عػ/ */ + /*10: Ԥ */ + BYTE byRemoteRight[MAX_RIGHT/*32*/];/* ԶȨ */ + /*0: Զ̨̿*/ + /*1: Զֶ¼*/ + /*2: Զ̻ط */ + /*3: Զò*/ + /*4: Զ̲鿴״̬־*/ + /*5: Զ̸߼(ʽػ)*/ + /*6: Զ̷Խ*/ + /*7: ԶԤ*/ + /*8: Զ󱨾ϴ*/ + /*9: Զ̿ƣ*/ + /*10: Զ̿ƴ*/ + /*11: Զ̲鿴 */ + /*12: Զ̹ģIP camera */ + /*13: Զ̹ػ/ */ + DWORD dwNetPreviewRight[MAX_CHANNUM_V40/*512*/]; /* Զ̿Ԥͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalRecordRight[MAX_CHANNUM_V40/*512*/]; /* ؿ¼ͨǰ˳У0xffffffffΪЧ*/ + DWORD dwNetRecordRight[MAX_CHANNUM_V40/*512*/]; /* Զ̿¼ͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalPlaybackRight[MAX_CHANNUM_V40/*512*/]; /* ؿԻطŵͨǰ˳У0xffffffffΪЧ*/ + DWORD dwNetPlaybackRight[MAX_CHANNUM_V40/*512*/]; /* Զ̿Իطŵͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalPTZRight[MAX_CHANNUM_V40/*512*/]; /* ؿPTZͨǰ˳У0xffffffffΪЧ*/ + DWORD dwNetPTZRight[MAX_CHANNUM_V40/*512*/]; /* Զ̿PTZͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalBackupRight[MAX_CHANNUM_V40/*512*/]; /* رȨͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalPreviewRight[MAX_CHANNUM_V40/*512*/]; /* ԤȨͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalDoubleVerificationPlaybackRight[MAX_CHANNUM_V40/*512*/]; /* ؿԶ֤طŵͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalDoubleVerificationBackupRight[MAX_CHANNUM_V40/*512*/]; /* ؿԶ֤ݵͨǰ˳У0xffffffffΪЧ*/ + DWORD dwNetDoubleVerificationPlaybackRight[MAX_CHANNUM_V40/*512*/]; /* Զ̿Զ֤طŵͨǰ˳У0xffffffffΪЧ*/ + NET_DVR_IPADDR struUserIP; /* ûIPַ(Ϊ0ʱʾκεַ) */ + BYTE byMACAddr[MACADDR_LEN/*6*/]; /* ַ */ + BYTE byPriority; /* ȼ0xff-ޣ0--ͣ1--У2-- */ + /* ޡʾ֧ȼ + ͡ĬȨ:غԶ̻ط,غԶ̲鿴־ + ״̬,غԶ̹ػ/ + СغԶ̨̿,غԶֶ¼,غ + Զ̻ط,ԽԶԤر,/Զ̹ػ/ߡԱ */ + BYTE byAlarmOnRight; // ڲȨ 1-Ȩޣ0-Ȩ + BYTE byAlarmOffRight; // ڳȨ 1-Ȩޣ0-Ȩ + BYTE byBypassRight; // ·Ȩ 1-Ȩޣ0-Ȩ + BYTE byRes1[2]; //ֽڶ + BYTE byPublishRight[MAX_RIGHT/*32*/]; //ϢרȨ + /*0: زȨ*/ + /*1: ĿȨ*/ + /*2: ճȨ*/ + /*3: ϴزȨ*/ + /*4: ½ĿȨ*/ + /*5: ½ճȨ*/ + /*6: ϢȨ*/ + /*7: ն˹Ȩ*/ + /*8: ҵȨ*/ + DWORD dwPasswordValidity; //Ч,Աû޸,λ죬0ʾЧ + BYTE byKeypadPassword[PASSWD_LEN/*16*/]; // + BYTE byUserOperateType; //ûͣ1-û2-û3-û+û + BYTE byRes[1007]; +}NET_DVR_USER_INFO_V52, *LPNET_DVR_USER_INFO_V52; + +typedef struct tagNET_DVR_USER_V52 +{ + DWORD dwSize; //ṹС + DWORD dwMaxUserNum; //豸ֵ֧û-ֻ + NET_DVR_USER_INFO_V52 struUser[MAX_USERNUM_V30/*32*/]; /* û */ + char sloginPassword[PASSWD_LEN/*16*/]; /* ½ȷ */ + BYTE byRes[240]; // +}NET_DVR_USER_V52, *LPNET_DVR_USER_V52; + +//û(ӽṹ)(9000չ) +typedef struct +{ + BYTE sUserName[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + BYTE byLocalRight[MAX_RIGHT]; /* Ȩ */ + /*0: ؿ̨*/ + /*1: ֶ¼*/ + /*2: ػط*/ + /*3: ò*/ + /*4: ز鿴״̬־*/ + /*5: ظ߼(ʽػ)*/ + /*6: ز鿴 */ + /*7: عģIP camera */ + /*8: ر */ + /*9: عػ/ */ + BYTE byRemoteRight[MAX_RIGHT];/* ԶȨ */ + /*0: Զ̨̿*/ + /*1: Զֶ¼*/ + /*2: Զ̻ط */ + /*3: Զò*/ + /*4: Զ̲鿴״̬־*/ + /*5: Զ̸߼(ʽػ)*/ + /*6: Զ̷Խ*/ + /*7: ԶԤ*/ + /*8: Զ󱨾ϴ*/ + /*9: Զ̿ƣ*/ + /*10: Զ̿ƴ*/ + /*11: Զ̲鿴 */ + /*12: Զ̹ģIP camera */ + /*13: Զ̹ػ/ */ + BYTE byNetPreviewRight[MAX_CHANNUM_V30]; /* Զ̿Ԥͨ 0-Ȩޣ1-Ȩ*/ + BYTE byLocalPlaybackRight[MAX_CHANNUM_V30]; /* ؿԻطŵͨ 0-Ȩޣ1-Ȩ*/ + BYTE byNetPlaybackRight[MAX_CHANNUM_V30]; /* Զ̿Իطŵͨ 0-Ȩޣ1-Ȩ*/ + BYTE byLocalRecordRight[MAX_CHANNUM_V30]; /* ؿ¼ͨ 0-Ȩޣ1-Ȩ*/ + BYTE byNetRecordRight[MAX_CHANNUM_V30]; /* Զ̿¼ͨ 0-Ȩޣ1-Ȩ*/ + BYTE byLocalPTZRight[MAX_CHANNUM_V30]; /* ؿPTZͨ 0-Ȩޣ1-Ȩ*/ + BYTE byNetPTZRight[MAX_CHANNUM_V30]; /* Զ̿PTZͨ 0-Ȩޣ1-Ȩ*/ + BYTE byLocalBackupRight[MAX_CHANNUM_V30]; /* رȨͨ 0-Ȩޣ1-Ȩ*/ + NET_DVR_IPADDR struUserIP; /* ûIPַ(Ϊ0ʱʾκεַ) */ + BYTE byMACAddr[MACADDR_LEN]; /* ַ */ + BYTE byPriority; /* ȼ0xff-ޣ0--ͣ1--У2-- */ + /* + ޡʾ֧ȼ + ͡ĬȨ:غԶ̻ط,غԶ̲鿴־״̬,غԶ̹ػ/ + СغԶ̨̿,غԶֶ¼,غԶ̻ط,ԽԶԤ + ر,/Զ̹ػ/ + ߡԱ + */ + BYTE byAlarmOnRight; // ڲȨ + BYTE byAlarmOffRight; // ڳȨ + BYTE byBypassRight; // ·Ȩ + BYTE byRes[14]; +}NET_DVR_USER_INFO_V30, *LPNET_DVR_USER_INFO_V30; + +//û(SDK_V15չ)(ӽṹ) +typedef struct +{ + BYTE sUserName[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + DWORD dwLocalRight[MAX_RIGHT]; /* Ȩ */ + /*0: ؿ̨*/ + /*1: ֶ¼*/ + /*2: ػط*/ + /*3: ò*/ + /*4: ز鿴״̬־*/ + /*5: ظ߼(ʽػ)*/ + DWORD dwLocalPlaybackRight; /* ؿԻطŵͨ bit0 -- channel 1*/ + DWORD dwRemoteRight[MAX_RIGHT]; /* Ȩ */ + /*0: Զ̨̿*/ + /*1: Զֶ¼*/ + /*2: Զ̻ط */ + /*3: Զò*/ + /*4: Զ̲鿴״̬־*/ + /*5: Զ̸߼(ʽػ)*/ + /*6: Զ̷Խ*/ + /*7: ԶԤ*/ + /*8: Զ󱨾ϴ*/ + /*9: Զ̿ƣ*/ + /*10: Զ̿ƴ*/ + DWORD dwNetPreviewRight; /* Զ̿Ԥͨ bit0 -- channel 1*/ + DWORD dwNetPlaybackRight; /* Զ̿Իطŵͨ bit0 -- channel 1*/ + char sUserIP[16]; /* ûIPַ(Ϊ0ʱʾκεַ) */ + BYTE byMACAddr[MACADDR_LEN]; /* ַ */ +}NET_DVR_USER_INFO_EX, *LPNET_DVR_USER_INFO_EX; + +//û(ӽṹ) +typedef struct +{ + BYTE sUserName[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + DWORD dwLocalRight[MAX_RIGHT]; /* Ȩ */ + /*0: ؿ̨*/ + /*1: ֶ¼*/ + /*2: ػط*/ + /*3: ò*/ + /*4: ز鿴״̬־*/ + /*5: ظ߼(ʽػ)*/ + DWORD dwRemoteRight[MAX_RIGHT]; /* Ȩ */ + /*0: Զ̨̿*/ + /*1: Զֶ¼*/ + /*2: Զ̻ط */ + /*3: Զò*/ + /*4: Զ̲鿴״̬־*/ + /*5: Զ̸߼(ʽػ)*/ + /*6: Զ̷Խ*/ + /*7: ԶԤ*/ + /*8: Զ󱨾ϴ*/ + /*9: Զ̿ƣ*/ + /*10: Զ̿ƴ*/ + char sUserIP[16]; /* ûIPַ(Ϊ0ʱʾκεַ) */ + BYTE byMACAddr[MACADDR_LEN]; /* ַ */ +}NET_DVR_USER_INFO, *LPNET_DVR_USER_INFO; + +//DVRû(չ) +typedef struct tagNET_DVR_USER_V40 +{ + DWORD dwSize; //ṹС + DWORD dwMaxUserNum; //豸ֵ֧û-ֻ + NET_DVR_USER_INFO_V40 struUser[MAX_USERNUM_V30]; /* û */ +}NET_DVR_USER_V40,*LPNET_DVR_USER_V40; +typedef struct tagNET_DVR_USER_V50 +{ + DWORD dwSize; //ṹС + DWORD dwMaxUserNum; //豸ֵ֧û-ֻ + NET_DVR_USER_INFO_V40 struUser[MAX_USERNUM_V30]; /* û */ + char sloginPassword[PASSWD_LEN/*16*/]; /* ½ȷ */ + BYTE byRes[240]; // +}NET_DVR_USER_V50, *LPNET_DVR_USER_V50; +//DVRû(9000չ) +typedef struct +{ + DWORD dwSize; + NET_DVR_USER_INFO_V30 struUser[MAX_USERNUM_V30]; +}NET_DVR_USER_V30, *LPNET_DVR_USER_V30; + +//DVRû(SDK_V15չ) +typedef struct +{ + DWORD dwSize; + NET_DVR_USER_INFO_EX struUser[MAX_USERNUM]; +}NET_DVR_USER_EX, *LPNET_DVR_USER_EX; + +//DVRû +typedef struct +{ + DWORD dwSize; + NET_DVR_USER_INFO struUser[MAX_USERNUM]; +}NET_DVR_USER, *LPNET_DVR_USER; + +typedef struct tagNET_DVR_EXCEPTION_V40 +{ + DWORD dwSize ; //ṹС + DWORD dwMaxGroupNum ; //豸ֵ֧ + NET_DVR_HANDLEEXCEPTION_V41 struExceptionHandle[MAX_EXCEPTIONNUM_V30]; + BYTE byRes[128]; // +}NET_DVR_EXCEPTION_V40,*LPNET_DVR_EXCEPTION_V40; /*쳣չṹ*/ + +//DVR쳣(9000չ) +typedef struct +{ + DWORD dwSize; + NET_DVR_HANDLEEXCEPTION_V30 struExceptionHandleType[MAX_EXCEPTIONNUM_V30]; + /*0-,1- Ӳ̳,2-߶,3-IP ַͻ, 4-Ƿ, 5-/Ƶʽƥ, 6-Ƶź쳣, 7-¼쳣 8-쳣9-ǰ/¼ֱʲƥ쳣10-г(ר) 11-ȱ쳣N+1ʹã12-¶ȣ13-ϵͳ쳣14-쳣, 15-POE쳣, 16-POC쳣,17-Դѹ쳣*/ +}NET_DVR_EXCEPTION_V30, *LPNET_DVR_EXCEPTION_V30; + + + +//DVR쳣 +typedef struct +{ + DWORD dwSize; + NET_DVR_HANDLEEXCEPTION struExceptionHandleType[MAX_EXCEPTIONNUM]; + /*0-,1- Ӳ̳,2-߶,3-IP ַͻ,4-Ƿ, 5-/Ƶʽƥ, 6-Ƶź쳣*/ +}NET_DVR_EXCEPTION, *LPNET_DVR_EXCEPTION; + +//ͨ״̬(9000չ) +typedef struct +{ + BYTE byRecordStatic; //ͨǷ¼,0-¼,1-¼ + BYTE bySignalStatic; //ӵź״̬,0-,1-źŶʧ + BYTE byHardwareStatic;//ͨӲ״̬,0-,1-쳣,DSP + BYTE byRes1; // + DWORD dwBitRate;//ʵ + DWORD dwLinkNum;//ͻӵĸ + NET_DVR_IPADDR struClientIP[MAX_LINK];//ͻ˵IPַ + DWORD dwIPLinkNum;//ͨΪIP룬ôʾIP뵱ǰ + BYTE byExceedMaxLink; // Ƿ񳬳˵·6· 0 - δ, 1- + BYTE byRes[3]; // ֽ + DWORD dwAllBitRate; //ʵ֮ + DWORD dwChannelNo; //ǰͨţ0xffffffffʾЧ +}NET_DVR_CHANNELSTATE_V30, *LPNET_DVR_CHANNELSTATE_V30; + +//ͨ״̬ +typedef struct +{ + BYTE byRecordStatic; //ͨǷ¼,0-¼,1-¼ + BYTE bySignalStatic; //ӵź״̬,0-,1-źŶʧ + BYTE byHardwareStatic;//ͨӲ״̬,0-,1-쳣,DSP + char reservedData; // + DWORD dwBitRate;//ʵ + DWORD dwLinkNum;//ͻӵĸ + DWORD dwClientIP[MAX_LINK];//ͻ˵IPַ +}NET_DVR_CHANNELSTATE, *LPNET_DVR_CHANNELSTATE; + +//Ӳ״̬ +typedef struct +{ + DWORD dwVolume;//Ӳ̵ + DWORD dwFreeSpace;//Ӳ̵ʣռ + DWORD dwHardDiskStatic; //Ӳ̵״̬,λ:1-,2-,3-Ӳ̳,4-δʽ, 5-δ״̬(Ӳ),6-Ӳڸʽ,7-Ӳ(δѭǵ),8-쳣豸ͳƣ +}NET_DVR_DISKSTATE, *LPNET_DVR_DISKSTATE; + +typedef struct tagNET_DVR_WORKSTATE_V40 +{ + DWORD dwSize ; //ṹС + DWORD dwDeviceStatic; //豸״̬,0-,1-CPUռ̫,85%,2-Ӳ,紮 + NET_DVR_DISKSTATE struHardDiskStatic[MAX_DISKNUM_V30]; //Ӳ״̬,һֻܻȡ33ӲϢ + NET_DVR_CHANNELSTATE_V30 struChanStatic[MAX_CHANNUM_V40/*512*/];//ͨ״̬ǰ˳ + DWORD dwHasAlarmInStatic[MAX_ALARMIN_V40/*512*/]; //бıڣֵʾ±ֵ˳УֵΪ0xffffffffʱǰֵЧ + DWORD dwHasAlarmOutStatic[MAX_ALARMOUT_V40/*512*/]; //бıڣֵʾ±ֵ˳УֵΪ0xffffffffʱǰֵЧ + DWORD dwLocalDisplay; //ʾ״̬,0-,1- + BYTE byAudioInChanStatus[MAX_AUDIO_V30/*2*/]; //λʾͨ״̬ 0-δʹã1-ʹУ0λʾ1ͨ + BYTE byRes1[2]; + float fHumidity; //֪ʪ,Χ:0.0 ~100.0 + float fTemperature; //֪¶ȣΧ-20.0 ~ 90.0 + BYTE byRes[116]; // +}NET_DVR_WORKSTATE_V40, *LPNET_DVR_WORKSTATE_V40; /*豸״̬չṹ*/ + +typedef struct tagNET_DVR_GETWORKSTATE_COND +{ + DWORD dwSize ; //ṹ峤 + BYTE byFindHardByCond; /*0-ȫ(һֻܲ33)ʱdwFindHardStatusNumЧ*/ + BYTE byFindChanByCond ; /*0-ȫͨʱdwFindChanNumЧ*/ + BYTE byRes1[2] ;// + DWORD dwFindHardStatus[MAX_DISKNUM_V30/*33*/] ; /*ҪҵӲ̺ţֵʾֵ˳У 0xffffffffΪЧ */ + DWORD dwFindChanNo[MAX_CHANNUM_V40/*512*/] ; /*Ҫҵͨţֵʾֵ˳У 0xffffffffΪЧ */ + BYTE byRes[64] ; // +}NET_DVR_GETWORKSTATE_COND, *LPNET_DVR_GETWORKSTATE_COND; + +//DVR״̬(9000չ) +typedef struct +{ + DWORD dwDeviceStatic; //豸״̬,0-,1-CPUռ̫,85%,2-Ӳ,紮 + NET_DVR_DISKSTATE struHardDiskStatic[MAX_DISKNUM_V30]; + NET_DVR_CHANNELSTATE_V30 struChanStatic[MAX_CHANNUM_V30];//ͨ״̬ + BYTE byAlarmInStatic[MAX_ALARMIN_V30]; //˿ڵ״̬,0-ûб,1-б + BYTE byAlarmOutStatic[MAX_ALARMOUT_V30]; //˿ڵ״̬,0-û,1-б + DWORD dwLocalDisplay;//ʾ״̬,0-,1- + BYTE byAudioChanStatus[MAX_AUDIO_V30];//ʾͨ״̬ 0-δʹã1-ʹ, 0xffЧ + BYTE byRes[10]; +}NET_DVR_WORKSTATE_V30, *LPNET_DVR_WORKSTATE_V30; + +//DVR״̬ +typedef struct +{ + DWORD dwDeviceStatic; //豸״̬,0-,1-CPUռ̫,85%,2-Ӳ,紮 + NET_DVR_DISKSTATE struHardDiskStatic[MAX_DISKNUM]; + NET_DVR_CHANNELSTATE struChanStatic[MAX_CHANNUM];//ͨ״̬ + BYTE byAlarmInStatic[MAX_ALARMIN]; //˿ڵ״̬,0-ûб,1-б + BYTE byAlarmOutStatic[MAX_ALARMOUT]; //˿ڵ״̬,0-û,1-б + DWORD dwLocalDisplay;//ʾ״̬,0-,1- +}NET_DVR_WORKSTATE, *LPNET_DVR_WORKSTATE; + + + +//־Ϣ(9000չ) +typedef struct +{ + NET_DVR_TIME strLogTime; + DWORD dwMajorType; // 1-; 2-쳣; 3-; 0xff-ȫ + DWORD dwMinorType;// 0-ȫ; + BYTE sPanelUser[MAX_NAMELEN]; //û + BYTE sNetUser[MAX_NAMELEN];//û + NET_DVR_IPADDR struRemoteHostAddr;//Զַ + DWORD dwParaType;//,9000豸MINOR_START_VT/MINOR_STOP_VTʱʾԽĶӺ + DWORD dwChannel;//ͨ + DWORD dwDiskNumber;//Ӳ̺ + DWORD dwAlarmInPort;//˿ + DWORD dwAlarmOutPort;//˿ + DWORD dwInfoLen; + char sInfo[LOG_INFO_LEN]; +}NET_DVR_LOG_V30, *LPNET_DVR_LOG_V30; + +//־Ϣ +typedef struct +{ + NET_DVR_TIME strLogTime; + DWORD dwMajorType; // 1-; 2-쳣; 3-; 0xff-ȫ + DWORD dwMinorType;// 0-ȫ; + BYTE sPanelUser[MAX_NAMELEN]; //û + BYTE sNetUser[MAX_NAMELEN];//û + char sRemoteHostAddr[16];//Զַ + DWORD dwParaType;// + DWORD dwChannel;//ͨ + DWORD dwDiskNumber;//Ӳ̺ + DWORD dwAlarmInPort;//˿ + DWORD dwAlarmOutPort;//˿ +}NET_DVR_LOG, *LPNET_DVR_LOG; + + +typedef struct tagNET_DVR_FIND_LOG_COND +{ + DWORD dwSelectMode; // 0ȫ1ͣ2ʱ䣻3ʱ + DWORD dwMainType; //־ + DWORD dwSubType; //־ + NET_DVR_TIME_V50 struStartTime; //ʼʱ + NET_DVR_TIME_V50 struEndTime; //ʱ + BOOL bOnlySmart; //ǷֻS.M.A.R.TϢ־ + BYTE byRes[128]; +}NET_DVR_FIND_LOG_COND, *LPNET_DVR_FIND_LOG_COND; + + +typedef struct +{ + NET_DVR_TIME_V50 struLogTime; //־ʱ + DWORD dwMajorType; // 1-; 2-쳣; 3-; 0xff-ȫ + DWORD dwMinorType; // 0-ȫ; + BYTE sPanelUser[MAX_NAMELEN];//û + BYTE sNetUser[MAX_NAMELEN]; //û + NET_DVR_IPADDR struRemoteHostAddr; //Զַ + DWORD dwParaType; //,9000豸MINOR_START_VT/MINOR_STOP_VTʱʾԽĶӺ + DWORD dwChannel; //ͨ + DWORD dwDiskNumber; //Ӳ̺ + DWORD dwAlarmInPort; //˿ + DWORD dwAlarmOutPort; //˿ + DWORD dwInfoLen; + char sInfo[LOG_INFO_LEN]; + BYTE byRes[128]; +}NET_DVR_LOG_V50, *LPNET_DVR_LOG_V50; + + +/************************DVR־ end***************************/ + +/************************־ begin************************************************/ +typedef struct tagNET_DVR_ALARMHOST_SEARCH_LOG_PARAM +{ + WORD wMajorType; // + WORD wMinorType; // + NET_DVR_TIME struStartTime; // ʼʱ + NET_DVR_TIME struEndTime; // ʱ + BYTE byRes[8]; // ֽ +}NET_DVR_ALARMHOST_SEARCH_LOG_PARAM, LPNET_DVR_ALARMHOST_SEARCH_LOG_PARAM; + +typedef struct tagNET_DVR_ALARMHOST_LOG_RET +{ + NET_DVR_TIME struLogTime; // ־ʱ + BYTE sUserName[NAME_LEN]; // û + NET_DVR_IPADDR struIPAddr; // IPַ + WORD wMajorType; // + WORD wMinorType; // + WORD wParam; // + BYTE byRes[10]; + DWORD dwInfoLen; // Ϣ + char sInfo[LOG_INFO_LEN]; // Ϣ +}NET_DVR_ALARMHOST_LOG_RET, *LPNET_DVR_ALARMHOST_LOG_RET; + +/*************************־ end***********************************************/ + +//״̬(9000չ) +typedef struct +{ + BYTE Output[MAX_ALARMOUT_V30]; +}NET_DVR_ALARMOUTSTATUS_V30, *LPNET_DVR_ALARMOUTSTATUS_V30; + +//״̬ +typedef struct +{ + BYTE Output[MAX_ALARMOUT]; +}NET_DVR_ALARMOUTSTATUS, *LPNET_DVR_ALARMOUTSTATUS; + +//Ϣ +typedef struct +{ + USHORT m_Year; + USHORT m_Month; + USHORT m_Day; + USHORT m_Hour; + USHORT m_Minute; + USHORT m_Second; + BYTE DeviceName[24]; //豸 + DWORD dwChannelNumer; //ͨ + BYTE CardNumber[32]; // + char cTradeType[12]; // + DWORD dwCash; //׽ +}NET_DVR_TRADEINFO, *LPNET_DVR_TRADEINFO; + + +//ATMר +/****************************ATM(begin)***************************/ +#define NCR 0 +#define DIEBOLD 1 +#define WINCOR_NIXDORF 2 +#define SIEMENS 3 +#define OLIVETTI 4 +#define FUJITSU 5 +#define HITACHI 6 +#define SMI 7 +#define IBM 8 +#define BULL 9 +#define YiHua 10 +#define LiDe 11 +#define GDYT 12 +#define Mini_Banl 13 +#define GuangLi 14 +#define DongXin 15 +#define ChenTong 16 +#define NanTian 17 +#define XiaoXing 18 +#define GZYY 19 +#define QHTLT 20 +#define DRS918 21 +#define KALATEL 22 +#define NCR_2 23 +#define NXS 24 + + +/*֡ʽ*/ +typedef struct +{ + BYTE code[12]; /* */ +}NET_DVR_FRAMETYPECODE; + + +//ATM +typedef struct +{ + DWORD dwSize; + char sATMIP[16]; /* ATM IPַ */ + DWORD dwATMType; /* ATM */ + DWORD dwInputMode; /* 뷽ʽ 0- 1- 2-ֱ 3-ATM*/ + DWORD dwFrameSignBeginPos; /* ı־λʼλ*/ + DWORD dwFrameSignLength; /* ı־λij */ + BYTE byFrameSignContent[12]; /* ı־λ */ + DWORD dwCardLengthInfoBeginPos; /* ųϢʼλ */ + DWORD dwCardLengthInfoLength; /* ųϢij */ + DWORD dwCardNumberInfoBeginPos; /* Ϣʼλ */ + DWORD dwCardNumberInfoLength; /* Ϣij */ + DWORD dwBusinessTypeBeginPos; /* ͵ʼλ */ + DWORD dwBusinessTypeLength; /* ͵ij */ + NET_DVR_FRAMETYPECODE frameTypeCode[10];/* */ +}NET_DVR_FRAMEFORMAT, *LPNET_DVR_FRAMEFORMAT; + +//ATM(9000չ) +typedef struct +{ + DWORD dwSize; + NET_DVR_IPADDR struATMIP; /* ATM IPַ */ + DWORD dwATMType; /* ATM */ + DWORD dwInputMode; /* 뷽ʽ 0- 1- 2-ֱ 3-ATM*/ + DWORD dwFrameSignBeginPos; /* ı־λʼλ*/ + DWORD dwFrameSignLength; /* ı־λij */ + BYTE byFrameSignContent[12]; /* ı־λ */ + DWORD dwCardLengthInfoBeginPos; /* ųϢʼλ */ + DWORD dwCardLengthInfoLength; /* ųϢij */ + DWORD dwCardNumberInfoBeginPos; /* Ϣʼλ */ + DWORD dwCardNumberInfoLength; /* Ϣij */ + DWORD dwBusinessTypeBeginPos; /* ͵ʼλ */ + DWORD dwBusinessTypeLength; /* ͵ij */ + NET_DVR_FRAMETYPECODE frameTypeCode[10]; /* */ + WORD wATMPort; /* Ų׽˿ں(Э鷽ʽ) ()0xffffʾֵЧ*/ + WORD wProtocolType; /* Э() 0xffffʾֵЧ*/ + BYTE byRes[24]; +}NET_DVR_FRAMEFORMAT_V30, *LPNET_DVR_FRAMEFORMAT_V30; + +//SDK_V31 ATM + +/**/ +typedef struct tagNET_DVR_FILTER +{ + BYTE byEnable; //0,;1, + BYTE byMode; //0,ASCII;1,HEX + BYTE byFrameBeginPos; // ҪĿַʼλ + BYTE byRes; // ֽ + BYTE byFilterText[16]; //ַ + BYTE byRes2[12]; // ֽ +}NET_DVR_FILTER, *LPNET_DVR_FILTER; + +//ݰ ݰʶ +typedef struct tagNET_DVR_IDENTIFICAT +{ + BYTE byStartMode; //ʼַģʽ:0,ASCII;1,HEX + BYTE byEndMode; //ַģʽ0,ASCII;1,HEX + BYTE byRes[2]; //ֽ + NET_DVR_FRAMETYPECODE struStartCode; //ݰʼʶַ + NET_DVR_FRAMETYPECODE struEndCode; //ݰʶַ + BYTE byRes1[12]; //ֽ +}NET_DVR_IDENTIFICAT, *LPNET_DVR_IDENTIFICAT; + +typedef struct tagNET_DVR_PACKAGE_LOCATION/*Ϣλ*/ +{ + BYTE byOffsetMode; /*λϢģʽ 0,token(ַ־ģʽ);1,fix̶ģʽ*/ + BYTE byRes1[3]; // ֽ + DWORD dwOffsetPos; /*modeΪ1ʱʹ,̶ƫƴС*/ + NET_DVR_FRAMETYPECODE struTokenCode; /*־λ*/ + BYTE byMultiplierValue; /*־λٴγ*/ + BYTE byEternOffset; /*ַƫ*/ + BYTE byCodeMode; /*0,ASCII;1,HEX*/ + BYTE byRes2[9]; //ֽ +}NET_DVR_PACKAGE_LOCATION, *LPNET_DVR_PACKAGE_LOCATION; + + +typedef struct tagNET_DVR_PACKAGE_LENGTH//Ϣ +{ + BYTE byLengthMode; //ͣ0,ɱ䳤;1,̶;2,(ӿлȡ) + BYTE byRes1[3]; // ֽ + DWORD dwFixLength; //modeΪ1ʱʹ,̶ȴС + DWORD dwMaxLength; //Ϣ󳤶 byLengthModeΪ0ʱʹ + DWORD dwMinLength; //ϢС byLengthModeΪ0ʱʹ + BYTE byEndMode; //ɱ䳤 սģʽ 0,ASCII;1,HEX + BYTE byRes2[3]; //ֽ + NET_DVR_FRAMETYPECODE struEndCode; //ɱ䳤ս + DWORD dwLengthPos; //lengthModeΪ2ʱʹãųڱеλ + DWORD dwLengthLen; //lengthModeΪ2ʱʹãųȵij + BYTE byRes3[8]; // ֽ +}NET_DVR_PACKAGE_LENGTH,* LPNET_DVR_PACKAGE_LENGTH; + +typedef struct tagNET_DVR_OSD_POSITION//OSD ӵλ +{ + BYTE byPositionMode; //ӷ񣬹2֣0ʾ1Զ + BYTE byRes1[3]; // ֽ + DWORD dwPosX; //x꣬ӷΪԶʱʹ + DWORD dwPosY; //y꣬ӷΪԶʱʹ + BYTE byRes2[8]; //ֽ +}NET_DVR_OSD_POSITION, *LPNET_DVR_OSD_POSITION; + +typedef struct tagNET_DVR_DATE_FORMAT//ʾʽ +{ + BYTE byMonth; //Month,0.mm;1.mmm;2.mmmm + BYTE byDay; //Day,0.dd; + BYTE byYear; //Year,0.yy;1.yyyy + BYTE byDateForm; //0~5յ + BYTE byRes[20]; // ֽ + char chSeprator[4]; //ָ + char chDisplaySeprator[4]; //ʾָ + BYTE byDisplayForm; //0~53item + BYTE res[27]; // ֽ +}NET_DVR_DATE_FORMAT, *LPNET_DVR_DATE_FORMAT; +typedef struct tagNET_DVRT_TIME_FORMAT//ʱʾʽ +{ + BYTE byTimeForm; //1. HH MM SS;0. HH MM + BYTE byRes1[23]; // ֽ + BYTE byHourMode; //0,12;1,24 + BYTE byRes2[3]; // ֽ + char chSeprator[4]; //ķָʱû + char chDisplaySeprator[4]; //ʾָ + BYTE byDisplayForm; //0~53item + BYTE byRes3[3]; // ֽ + BYTE byDisplayHourMode; //0,12;1,24 + BYTE byRes4[19]; // ֽ +}NET_DVR_TIME_FORMAT, *LPNET_DVR_TIME_FORMAT; + +typedef struct tagNET_DVR_OVERLAY_CHANNEL +{ + BYTE byChannel[64];//ӵͨ ÿֽڱʶһͨ byChannel[0]ֵΪ1Ӧͨ10ʾͨ1 + DWORD dwDelayTime; //ʱʱ + BYTE byEnableDelayTime; //Ƿõʱ + BYTE byRes[11]; // ֽ +}NET_DVR_OVERLAY_CHANNEL, *LPNET_DVR_OVERLAY_CHANNEL; + +// ATM ΪϢ +typedef struct tagNET_DVR_ATM_PACKAGE_ACTION +{ + NET_DVR_PACKAGE_LOCATION struPackageLocation;// λϢ + NET_DVR_OSD_POSITION struOsdPosition; // OSD λ + NET_DVR_FRAMETYPECODE struActionCode; //Ϊ + NET_DVR_FRAMETYPECODE struPreCode; //ַǰַ + BYTE byActionCodeMode; //Ϊģʽ0,ASCII;1,HEX + BYTE byRes[7]; // ֽ +}NET_DVR_ATM_PACKAGE_ACTION, *LPNET_DVR_ATM_PACKAGE_ACTION; + +// ATM DATAϢ +typedef struct tagNET_DVR_ATM_PACKAGE_DATE +{ + NET_DVR_PACKAGE_LOCATION struPackageLocation;// ڱеλϢ + NET_DVR_DATE_FORMAT struDateForm; //ʾʽ + NET_DVR_OSD_POSITION struOsdPosition; // OSDλϢ + BYTE res[8]; // ֽ +}NET_DVR_ATM_PACKAGE_DATE, *LPNET_DVR_ATM_PACKAGE_DATE; + + +//ATMʱϢ +typedef struct tagNET_DVR_ATM_PACKAGE_TIME +{ + NET_DVR_PACKAGE_LOCATION location; // ʱڱеλϢ + NET_DVR_TIME_FORMAT struTimeForm; // ʱʾʽ + NET_DVR_OSD_POSITION struOsdPosition;// OSD λϢ + BYTE byRes[8]; // ֽ +}NET_DVR_ATM_PACKAGE_TIME, *LPNET_DVR_ATM_PACKAGE_TIME; + + +// ATM Ϣţ׽ţ +typedef struct tagNET_DVR_ATM_PACKAGE_OTHERS +{ + NET_DVR_PACKAGE_LOCATION struPackageLocation; //λϢ + NET_DVR_PACKAGE_LENGTH struPackageLength; //Ϣ + NET_DVR_OSD_POSITION struOsdPosition; // OSDλϢ + NET_DVR_FRAMETYPECODE struPreCode; //ַǰַ + BYTE res[8]; //ֽ +}NET_DVR_ATM_PACKAGE_OTHERS, *LPNET_DVR_ATM_PACKAGE_OTHERS; + + +//ûԶЭ +typedef struct tagNET_DVR_ATM_USER_DEFINE_PROTOCOL +{ + NET_DVR_IDENTIFICAT struIdentification; //ı־ + NET_DVR_FILTER struFilter; //ݰ + NET_DVR_ATM_PACKAGE_OTHERS struCardNoPara; //ӿ + NET_DVR_ATM_PACKAGE_ACTION struTradeActionPara[MAX_ACTION_TYPE]; //ӽΪ 0-9 ζӦInCard OutCard OverLay SetTime GetStatus Query WithDraw Deposit ChanPass Transfer + NET_DVR_ATM_PACKAGE_OTHERS struAmountPara; //ӽ׽ + NET_DVR_ATM_PACKAGE_OTHERS struSerialNoPara; //ӽ + NET_DVR_OVERLAY_CHANNEL struOverlayChan; //ͨ + NET_DVR_ATM_PACKAGE_DATE struRes1; //ڣ + NET_DVR_ATM_PACKAGE_TIME struRes2; //ʱ䣬 + BYTE byRes3[124]; // +}NET_DVR_ATM_USER_DEFINE_PROTOCOL, *LPNET_DVR_ATM_USER_DEFINE_PROTOCOL; + +typedef struct tagNET_DVR_ATM_FRAMEFORMAT_V30 +{ + DWORD dwSize; //ṹС + BYTE byEnable; /*Ƿ0,;1,*/ + BYTE byInputMode; /**뷽ʽ:0-1Э顢2-ڼ3-Э*/ + BYTE byRes1[34]; //ֽ + NET_DVR_IPADDR struAtmIp; /*ATM IP ʱʹ */ + WORD wAtmPort; /* Э鷽ʽʱʹ*/ + BYTE byRes2[2]; // ֽ + DWORD dwAtmType; /*ATMЭͣNET_DVR_ATM_PROTOCOLṹлȡΪԶʱʹûԶЭ*/ + NET_DVR_ATM_USER_DEFINE_PROTOCOL struAtmUserDefineProtocol; //ûԶЭ飬ATMΪԶʱҪʹøö + BYTE byRes3[8]; +}NET_DVR_ATM_FRAMEFORMAT_V30, *LPNET_DVR_ATM_FRAMEFORMAT_V30; + +//ATMЭ +typedef enum _ATM_PROTO_TYPE_ +{ + ATM_PROTO_NCR = 0,//NCR + ATM_PROTO_DIEBOLD = 1,//DIEBOLD + ATM_PROTO_WINCOR_NIXDORF = 2,//WINCOR-NIXDORF + ATM_PROTO_SIEMENS = 4,//SIEMENS + ATM_PROTO_OLIVETTI = 5,//OLIVETTI + ATM_PROTO_FUJITSU = 6,//FUJITSU + ATM_PROTO_HITACHI = 7,//HITACHI + ATM_PROTO_SMI = 8,//SMI + ATM_PROTO_BULL = 9,//BULL + ATM_PROTO_YIHUA = 10,// + ATM_PROTO_LIDE = 11,// + ATM_PROTO_GDYT = 12,//ͨ + ATM_PROTO_MINI_BANL = 13,//Mini-Banl + ATM_PROTO_GUANGLI = 14,// + ATM_PROTO_DONGXIN = 15,// + ATM_PROTO_CHENTONG = 16,//ͨ + ATM_PROTO_NANTIAN = 17,// + ATM_PROTO_XIAOXING = 18,// + ATM_PROTO_GZYY = 19,// + ATM_PROTO_QHTLT = 20,//̩ + ATM_PROTO_DRS918 = 21,//DRS918 + ATM_PROTO_KALATEL = 22,//KALATEL + ATM_PROTO_NCR_2 = 23,//NCR_2 + ATM_PROTO_NXS = 24,//NXS + ATM_PROTO_ICBC = 25,// + ATM_PROTO_PSBC = 26,//й + ATM_PROTO_CUSTOM = 1025//Զ +}ATM_PROTO_TYPE; + +typedef struct tagNET_DVR_ATM_PROTO_TYPE +{ + DWORD dwAtmType; //ATMЭͣͬʱΪ ATM еdwAtmType ԶʱΪ1025 + char chDesc[ATM_DESC_LEN]; //ATMЭ +}NET_DVR_ATM_PROTO_TYPE, *LPNET_DVR_ATM_PROTO_TYPE; //ЭϢݽṹ + +typedef struct tagNET_DVR_ATM_PROTO_LIST //ATM Эб +{ + DWORD dwAtmProtoNum; // Эбĸ + NET_DVR_ATM_PROTO_TYPE struAtmProtoType[MAX_ATM_PROTOCOL_NUM]; //ЭбϢ +}NET_DVR_ATM_PROTO_LIST, *LPNET_DVR_ATM_PROTO_LIST; + +typedef struct tagNET_DVR_ATM_PROTOCOL +{ + DWORD dwSize; + NET_DVR_ATM_PROTO_LIST struNetListenList; // Э + NET_DVR_ATM_PROTO_LIST struSerialListenList; //ڼЭ + NET_DVR_ATM_PROTO_LIST struNetProtoList; //Э + NET_DVR_ATM_PROTO_LIST struSerialProtoList; //Э + NET_DVR_ATM_PROTO_TYPE struCustomProto; //ԶЭ +}NET_DVR_ATM_PROTOCOL, *LPNET_DVR_ATM_PROTOCOL; +// SDK_V31 + +/*****************************DS-6001D/F(begin)***************************/ +//DS-6001D Decoder +typedef struct +{ + BYTE byEncoderIP[16]; //豸ӵķIP + BYTE byEncoderUser[16]; //豸ӵķû + BYTE byEncoderPasswd[16]; //豸ӵķ + BYTE bySendMode; //豸ӷģʽ + BYTE byEncoderChannel; //豸ӵķͨ + WORD wEncoderPort; //豸ӵķĶ˿ں + BYTE reservedData[4]; // +}NET_DVR_DECODERINFO, *LPNET_DVR_DECODERINFO; + +typedef struct +{ + BYTE byEncoderIP[16]; //豸ӵķIP + BYTE byEncoderUser[16]; //豸ӵķû + BYTE byEncoderPasswd[16]; //豸ӵķ + BYTE byEncoderChannel; //豸ӵķͨ + BYTE bySendMode; //豸ӵķģʽ + WORD wEncoderPort; //豸ӵķĶ˿ں + DWORD dwConnectState; //豸ӷ״̬ + BYTE reservedData[4]; // +}NET_DVR_DECODERSTATE, *LPNET_DVR_DECODERSTATE; + +/*豸붨*/ +#define NET_DEC_STARTDEC 1 +#define NET_DEC_STOPDEC 2 +#define NET_DEC_STOPCYCLE 3 +#define NET_DEC_CONTINUECYCLE 4 +/*ӵͨ*/ +typedef struct +{ + char sDVRIP[16]; /* DVR IPַ */ + WORD wDVRPort; /* ˿ں */ + BYTE sUserName[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + BYTE byChannel; /* ͨ */ + BYTE byLinkMode; /* ģʽ */ + BYTE byLinkType; /* 0 1 */ +}NET_DVR_DECCHANINFO, *LPNET_DVR_DECCHANINFO; + +/*ÿͨ*/ +typedef struct +{ + BYTE byPoolChans; /*ÿ·ͨϵѭͨ, 4ͨ 0ʾûн*/ + NET_DVR_DECCHANINFO struchanConInfo[MAX_DECPOOLNUM]; + BYTE byEnablePoll; /*ǷѲ 0- 1-*/ + BYTE byPoolTime; /*Ѳʱ 0- 1-10 2-15 3-20 4-30 5-45 6-1 7-2 8-5 */ +}NET_DVR_DECINFO, *LPNET_DVR_DECINFO; + +/*豸*/ +typedef struct +{ + DWORD dwSize; + DWORD dwDecChanNum; /*ͨ*/ + NET_DVR_DECINFO struDecInfo[MAX_DECNUM]; +}NET_DVR_DECCFG, *LPNET_DVR_DECCFG; + +//2005-08-01 +/* 豸͸ͨ */ +typedef struct +{ + DWORD dwEnableTransPort; /* Ƿ͸ͨ 0 1*/ + char sDecoderIP[16]; /* DVR IPַ */ + WORD wDecoderPort; /* ˿ں */ + WORD wDVRTransPort; /* ǰDVRǴ485/2321ʾ232,2ʾ485 */ + char cReserve[4]; +}NET_DVR_PORTINFO, *LPNET_DVR_PORTINFO; + +typedef struct +{ + DWORD dwSize; + NET_DVR_PORTINFO struTransPortInfo[MAX_TRANSPARENTNUM]; /* 0ʾ232 1ʾ485 */ +}NET_DVR_PORTCFG, *LPNET_DVR_PORTCFG; + +/* ļط */ +typedef struct +{ + DWORD dwSize; + char sDecoderIP[16]; /* DVR IPַ */ + WORD wDecoderPort; /* ˿ں */ + WORD wLoadMode; /* طģʽ 1 2ʱ */ + union + { + BYTE byFile[100]; /* طŵļ */ + struct + { + DWORD dwChannel; + BYTE sUserName[NAME_LEN]; /*Ƶû*/ + BYTE sPassword[PASSWD_LEN]; /* */ + NET_DVR_TIME struStartTime; /* ʱطŵĿʼʱ */ + NET_DVR_TIME struStopTime; /* ʱطŵĽʱ */ + }bytime; + }mode_size; +}NET_DVR_PLAYREMOTEFILE, *LPNET_DVR_PLAYREMOTEFILE; + +/*ǰ豸״̬*/ +typedef struct +{ + DWORD dwWorkType; /*ʽ1Ѳ2̬ӽ롢3ļط 4ʱط*/ + char sDVRIP[16]; /*ӵ豸ip*/ + WORD wDVRPort; /*Ӷ˿ں*/ + BYTE byChannel; /* ͨ */ + BYTE byLinkMode; /* ģʽ */ + DWORD dwLinkType; /* 0 1*/ + union + { + struct + { + BYTE sUserName[NAME_LEN]; /*Ƶû*/ + BYTE sPassword[PASSWD_LEN]; /* */ + char cReserve[52]; + }userInfo; + struct + { + BYTE fileName[100]; + }fileInfo; + struct + { + DWORD dwChannel; + BYTE sUserName[NAME_LEN]; /*Ƶû*/ + BYTE sPassword[PASSWD_LEN]; /* */ + NET_DVR_TIME struStartTime; /* ʱطŵĿʼʱ */ + NET_DVR_TIME struStopTime; /* ʱطŵĽʱ */ + }timeInfo; + }objectInfo; +}NET_DVR_DECCHANSTATUS, *LPNET_DVR_DECCHANSTATUS; + +typedef struct +{ + DWORD dwSize; + NET_DVR_DECCHANSTATUS struDecState[MAX_DECNUM]; +}NET_DVR_DECSTATUS, *LPNET_DVR_DECSTATUS; +/*****************************DS-6001D/F(end)***************************/ + +//ַ(ӽṹ) +typedef struct +{ + WORD wShowString; // ԤͼǷʾַ,0-ʾ,1-ʾ ԤС704*576,ַĴСΪ32*32 + WORD wStringSize; /* ַijȣܴ44ַ */ + WORD wShowStringTopLeftX; /* ַʾλõx */ + WORD wShowStringTopLeftY; /* ַʾλõy */ + char sString[44]; /* Ҫʾַ */ +}NET_DVR_SHOWSTRINGINFO, *LPNET_DVR_SHOWSTRINGINFO; + +//ַ(9000չ) +typedef struct +{ + DWORD dwSize; + NET_DVR_SHOWSTRINGINFO struStringInfo[MAX_STRINGNUM_V30]; /* Ҫʾַ */ +}NET_DVR_SHOWSTRING_V30, *LPNET_DVR_SHOWSTRING_V30; + +//ַչ(8ַ) +typedef struct +{ + DWORD dwSize; + NET_DVR_SHOWSTRINGINFO struStringInfo[MAX_STRINGNUM_EX]; /* Ҫʾַ */ +}NET_DVR_SHOWSTRING_EX, *LPNET_DVR_SHOWSTRING_EX; + +//ַ +typedef struct +{ + DWORD dwSize; + NET_DVR_SHOWSTRINGINFO struStringInfo[MAX_STRINGNUM]; /* Ҫʾַ */ +}NET_DVR_SHOWSTRING, *LPNET_DVR_SHOWSTRING; + +/****************************DS9000ṹ(begin)******************************/ +/* +EMAILṹ +*/ +typedef struct +{ + DWORD dwSize; + BYTE sAccount[NAME_LEN]; /* ˺*/ + BYTE sPassword[MAX_EMAIL_PWD_LEN]; /* */ + struct + { + BYTE sName[NAME_LEN]; /* */ + BYTE sAddress[MAX_EMAIL_ADDR_LEN]; /* ˵ַ */ + }struSender; + BYTE sSmtpServer[MAX_EMAIL_ADDR_LEN]; /* smtp */ + BYTE sPop3Server[MAX_EMAIL_ADDR_LEN]; /* pop3 */ + struct + { + BYTE sName[NAME_LEN]; /* ռ */ + BYTE sAddress[MAX_EMAIL_ADDR_LEN]; /* ռ˵ַ */ + }struReceiver[3]; /* 3ռ */ + BYTE byAttachment; /* Ƿ */ + BYTE bySmtpServerVerify; /* ͷҪ֤ */ + BYTE byMailInterval; /* mail interval */ + BYTE byEnableSSL; //sslǷ9000_1.1 + WORD wSmtpPort; //gmail465ͨΪ25 + BYTE byEnableTLS; /*TLSǷ*/ + BYTE byStartTLS; /*ǷStartTLS*/ + BYTE byRes[72]; /**/ +} NET_DVR_EMAILCFG_V30, *LPNET_DVR_EMAILCFG_V30; + +/* +DVRʵѲݽṹ +*/ +typedef struct +{ + DWORD dwSize; + BYTE byPresetNo[CRUISE_MAX_PRESET_NUMS]; /* Ԥõ */ + BYTE byCruiseSpeed[CRUISE_MAX_PRESET_NUMS]; /* Ѳٶ */ + WORD wDwellTime[CRUISE_MAX_PRESET_NUMS]; /* ͣʱ */ + BYTE byEnableThisCruise; /* Ƿ */ + BYTE res[15]; +}NET_DVR_CRUISE_PARA, *LPNET_DVR_CRUISE_PARA; +/****************************DS9000ṹ(end)******************************/ + +//ʱ +typedef struct +{ + DWORD dwMonth; // 0-11ʾ1-12 + DWORD dwWeekNo; //ڼ 01 12 23 34 4һ + DWORD dwWeekDate; //ڼ 0 1һ 2ڶ 3 4 5 6 + DWORD dwHour; //Сʱ ʼʱ023 ʱ123 + DWORD dwMin; // 059 +}NET_DVR_TIMEPOINT; + +//ʱ +typedef struct +{ + DWORD dwSize; + DWORD dwZoneIndex; //ӦòʹNET_DVR_NTPPARA еcTimeDifferenceH cTimeDifferenceM ʱ˴ûȡֵ䣬ûṩ༭ + BYTE byRes1[12]; // + DWORD dwEnableDST; //Ƿʱ 0 1 + BYTE byDSTBias; //ʱƫֵ30min, 60min, 90min, 120min, ԷӼƣԭʼֵ + BYTE byRes2[3]; + NET_DVR_TIMEPOINT struBeginPoint; //ʱƿʼʱ + NET_DVR_TIMEPOINT struEndPoint; //ʱֹͣʱ +}NET_DVR_ZONEANDDST, *LPNET_DVR_ZONEANDDST; + +//ͼƬ +typedef struct +{ +/*ע⣺ͼѹֱΪVGAʱ֧0=CIF, 1=QCIF, 2=D1ץͼ +ֱΪ3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6=VGA,7=XVGA, 8=HD900p + ֵ֧ǰֱʵץͼ*/ + + /* ͨȡ + 0-CIF 1-QCIF 2-D1 3-UXGA(1600x1200), 4-SVGA(800x600),5-HD720p(1280x720) + 6-VGA 7-XVGA 8-HD900p 9-HD1080 10-2560*1920 + 11-1600*304 12-2048*1536 13-2448*2048, 14-2448*1200 15-2448*800 + 16-XGA(1024*768), 17-SXGA(1280*1024),18-WD1(960*576/960*480), 19-1080i, 20-576*576 + 21-1536*1536, 22-1920*1920, 23-320*240, 24-720*720, 25-1024*768, + 26-1280*1280, 27-1600*600, 28-2048*768, 29-160*120, 55-3072*2048, + 64-3840*2160, 70-2560*1440, 75-336*256, + 78-384*256, 79-384*216, 80-320*256, 82-320*192, 83-512*384, + 127-480*272, 128-512*272, 161-288*320, 162-144*176, 163-480*640, + 164-240*320, 165-120*160, 166-576*720, 167-720*1280, 168-576*960, + 180-180*240, 181-360*480, 182-540*720, 183-720*960, 184-960*1280, + 185-1080*1440, 215-1080*720(ռλδ), 216-360x640(ռλδ),245-576*704(ռλδ) + 500-384*288, + 0xff-Auto(ʹõǰֱ) + */ + WORD wPicSize; + WORD wPicQuality; /* ͼƬϵ 0- 1-Ϻ 2-һ */ +}NET_DVR_JPEGPARA, *LPNET_DVR_JPEGPARA; + +//ṹ +typedef struct tagNET_VCA_RECT +{ + float fX; //߽ϽǵX, 0.000~1 + float fY; //߽ϽǵY, 0.000~1 + float fWidth; //߽Ŀ, 0.000~1 + float fHeight; //߽ĸ߶, 0.000~1 +}NET_VCA_RECT, *LPNET_VCA_RECT; + +typedef struct tagNET_DVR_JPEGPICTURE_WITH_APPENDDATA +{ + DWORD dwSize; + DWORD dwChannel;//ͨ + DWORD dwJpegPicLen;//JpegͼƬ + char *pJpegPicBuff;//JpegͼƬָ + DWORD dwJpegPicWidth; // ͼ + DWORD dwJpegPicHeight; //ͼ߶ + DWORD dwP2PDataLen;//ȫݳ + char *pP2PDataBuff; //ȫָ + BYTE byIsFreezedata;//Ƿݶ 0- 1- + BYTE byRes1[3]; + DWORD dwVisiblePicLen;//ɼͼƬ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char *pVisiblePicBuff;//ɼͼƬָ +#else + char *pVisiblePicBuff;//ɼͼƬָ + BYTE byRes2[4]; +#endif + NET_VCA_RECT struThermalValidRect;//ȳЧ + NET_VCA_RECT struVisibleValidRect;//ɼЧ + BYTE byRes[208]; +}NET_DVR_JPEGPICTURE_WITH_APPENDDATA, *LPNET_DVR_JPEGPICTURE_WITH_APPENDDATA; + +//ץͼ +typedef struct +{ + NET_DVR_JPEGPARA struParam; + BYTE byPicFormat; // 豸ץͼͼƬʽ 0-Jpeg + /* + 豸ץͼ: + 0-豸ͨץͼ1-ӥ۱궨ͼƬFPJAˢ»ȡͼƬ ʱ3min,2-FlashлȡѴӥ۱궨ͼƬ, + 3-ȡԲͼƬ,4-רøץͼ,5-ȡװȫչͼͼ + */ + BYTE byCapturePicType; + BYTE bySceneID; //0-֧֣1-12-2 + BYTE byRes[253]; +}NET_DVR_PICPARAM_V50, *LPNET_DVR_PICPARAM_V50; +/* aux video out parameter */ +// +typedef struct +{ + DWORD dwSize; + DWORD dwAlarmOutChan; /* ѡ񱨾󱨾ͨлʱ䣺1ͨ: 0:/1:1/2:2/3:3/4:4 */ + DWORD dwAlarmChanSwitchTime; /* :1 - 10:10 */ + DWORD dwAuxSwitchTime[MAX_AUXOUT]; /* лʱ: 0-л,1-5s,2-10s,3-20s,4-30s,5-60s,6-120s,7-300s */ + BYTE byAuxOrder[MAX_AUXOUT][MAX_WINDOW]; /* Ԥ˳, 0xffʾӦĴڲԤ */ +}NET_DVR_AUXOUTCFG, *LPNET_DVR_AUXOUTCFG; + + +//ntp +typedef struct +{ + BYTE sNTPServer[64]; /* Domain Name or IP addr of NTP server */ + WORD wInterval; /* adjust time interval(hours) */ + BYTE byEnableNTP; /* enable NPT client 0-no1-yes*/ + signed char cTimeDifferenceH; /* ʱ׼ʱ Сʱƫ-12 ... +13 */ + signed char cTimeDifferenceM;/* ʱ׼ʱ ƫ0, 30, 45*/ + BYTE res1; + WORD wNtpPort; /* ntp server port 9000 豸ĬΪ123*/ + BYTE res2[8]; +}NET_DVR_NTPPARA, *LPNET_DVR_NTPPARA; + +//ddns +typedef struct +{ + BYTE sUsername[NAME_LEN]; /* DDNS˺û/ */ + BYTE sPassword[PASSWD_LEN]; + BYTE sDomainName[64]; /* */ + BYTE byEnableDDNS; /*ǷӦ 0-1-*/ + BYTE res[15]; +}NET_DVR_DDNSPARA, *LPNET_DVR_DDNSPARA; + + +typedef struct +{ + BYTE byHostIndex; /* 0-˽DDNS 1Dyndns 2PeanutHull()*/ + BYTE byEnableDDNS; /*ǷӦDDNS 0-1-*/ + WORD wDDNSPort; /* DDNS˿ں */ + BYTE sUsername[NAME_LEN]; /* DDNSû*/ + BYTE sPassword[PASSWD_LEN]; /* DDNS */ + BYTE sDomainName[MAX_DOMAIN_NAME]; /* 豸䱸ַ */ + BYTE sServerName[MAX_DOMAIN_NAME]; /* DDNS ӦķַIPַ */ + BYTE byRes[16]; +}NET_DVR_DDNSPARA_EX, *LPNET_DVR_DDNSPARA_EX; + +//9000չ +typedef struct +{ + BYTE byEnableDDNS; + BYTE byHostIndex;/*0-IPServer 1Dyndns 2PeanutHull()3- NO-IP, 4- hiDDNS*/ + BYTE byRes1[2]; + struct + { + BYTE sUsername[NAME_LEN]; /* DDNS˺û*/ + BYTE sPassword[PASSWD_LEN]; /* */ + BYTE sDomainName[MAX_DOMAIN_NAME]; /* 豸䱸ַ */ + BYTE sServerName[MAX_DOMAIN_NAME]; /* DDNSЭӦķַIPַ */ + WORD wDDNSPort; /* ˿ں */ + WORD wCountryID; //ұţbyHostIndex = 4ʱЧ0ʾĬ + BYTE byStatus; /* DDNS״ֻ̬ + 0- + 1-ӷʧ(connServerfail) + 2-Ϣʧ(solveServerMesFail) + 3-ʧ(connHeartSrvfail) + 4-Ϣʧ(solveHeartSrvMesFail) + 5-ʧ(connHostSrvfail) + 6-Ϣʧ(solveHostSrvMesFail) + 7-DDNS״̬(updateSuccess) + 8-δ(disable) + 9-עɹ(registHostSuccess) + 10-DNSô(DNSSrvError) + 11-ռ(DomainConflict) + 12-()Ϸ(invalidAlias) + 13-Ȩʧ(authenticationFail) + 14-ע(registServerError) + 15-עʧ(registFail) + */ + BYTE byRes[7]; + } struDDNS[MAX_DDNS_NUMS]; + BYTE byRes2[16]; +}NET_DVR_DDNSPARA_V30, *LPNET_DVR_DDNSPARA_V30; + +//email +typedef struct +{ + BYTE sUsername[64]; /* ʼ˺/ */ + BYTE sPassword[64]; + BYTE sSmtpServer[64]; + BYTE sPop3Server[64]; + BYTE sMailAddr[64]; /* email */ + BYTE sEventMailAddr1[64]; /* ϴ/쳣ȵemail */ + BYTE sEventMailAddr2[64]; + BYTE res[16]; +}NET_DVR_EMAILPARA, *LPNET_DVR_EMAILPARA; + +// +typedef struct +{ + DWORD dwSize; + char sDNSIp[16]; /* DNSַ */ + NET_DVR_NTPPARA struNtpClientParam; /* NTP */ + NET_DVR_DDNSPARA struDDNSClientParam; /* DDNS */ + BYTE res[464]; /* */ +}NET_DVR_NETAPPCFG, *LPNET_DVR_NETAPPCFG; + +//nfsṹ +typedef struct +{ + char sNfsHostIPAddr[16]; + BYTE sNfsDirectory[PATHNAME_LEN]; // PATHNAME_LEN = 128 +}NET_DVR_SINGLE_NFS, *LPNET_DVR_SINGLE_NFS; + +typedef struct +{ + DWORD dwSize; + NET_DVR_SINGLE_NFS struNfsDiskParam[MAX_NFS_DISK]; +}NET_DVR_NFSCFG, *LPNET_DVR_NFSCFG; + +typedef struct tagNET_DVR_ISCSI_CFG +{ + DWORD dwSize; // ṹС + WORD wVrmPort; // VRM ˿ + BYTE byEnable; // Ƿ ISCSI洢 + BYTE byRes[69]; // ֽ + NET_DVR_IPADDR struVrmAddr; // VRM ipַ 16λ + char chNvtIndexCode[64]; //nvt index Code +}NET_DVR_ISCSI_CFG, *LPNET_DVR_ISCSI_CFG; + +//Ѳ(˽IPר) +typedef struct +{ + BYTE PresetNum; //Ԥõ + BYTE Dwell; //ͣʱ + BYTE Speed; //ٶ + BYTE Reserve; // +}NET_DVR_CRUISE_POINT, *LPNET_DVR_CRUISE_POINT; + +typedef struct +{ + NET_DVR_CRUISE_POINT struCruisePoint[32]; //֧32Ѳ +}NET_DVR_CRUISE_RET, *LPNET_DVR_CRUISE_RET; + +/************************************·(begin)***************************************/ +typedef struct +{ + DWORD dwSize; + char sFirstDNSIP[16]; + char sSecondDNSIP[16]; + char sRes[32]; +}NET_DVR_NETCFG_OTHER, *LPNET_DVR_NETCFG_OTHER; + +typedef struct +{ + char sDVRIP[16]; /* DVR IPַ */ + WORD wDVRPort; /* ˿ں */ + BYTE byChannel; /* ͨ */ + BYTE byTransProtocol; /* Э 0-TCP, 1-UDP */ + BYTE byTransMode; /* ģʽ 0 1*/ + BYTE byRes[3]; + BYTE sUserName[NAME_LEN]; /* ½ʺ */ + BYTE sPassword[PASSWD_LEN]; /* */ +}NET_DVR_MATRIX_DECINFO, *LPNET_DVR_MATRIX_DECINFO; + +///ֹ̬ͣ +typedef struct +{ + DWORD dwSize; + NET_DVR_MATRIX_DECINFO struDecChanInfo; /* ̬ͨϢ */ +}NET_DVR_MATRIX_DYNAMIC_DEC, *LPNET_DVR_MATRIX_DYNAMIC_DEC; + +typedef struct +{ + DWORD dwSize; + DWORD dwIsLinked; /* ͨ״̬ 0 1 2 3-ڽ */ + DWORD dwStreamCpRate; /* Stream copy rate, X kbits/second */ + char cRes[64]; /* */ +}NET_DVR_MATRIX_DEC_CHAN_STATUS, *LPNET_DVR_MATRIX_DEC_CHAN_STATUS; + +typedef struct +{ + DWORD dwSize; + NET_DVR_MATRIX_DECINFO struDecChanInfo; /* ͨϢ */ + DWORD dwDecState; /* 0-̬ 1ѭ 2ʱط 3ļط */ + NET_DVR_TIME StartTime; /* ʱطſʼʱ */ + NET_DVR_TIME StopTime; /* ʱطֹͣʱ */ + char sFileName[128]; /* ļطļ */ +}NET_DVR_MATRIX_DEC_CHAN_INFO, *LPNET_DVR_MATRIX_DEC_CHAN_INFO; + +//ӵͨ 2007-11-05 +typedef struct +{ + DWORD dwEnable; /* Ƿ 0 1*/ + NET_DVR_MATRIX_DECINFO struDecChanInfo; /* ѲͨϢ */ +}NET_DVR_MATRIX_DECCHANINFO, *LPNET_DVR_MATRIX_DECCHANINFO; + +//2007-11-05 ÿͨ +typedef struct +{ + DWORD dwSize; + DWORD dwPoolTime; /*Ѳʱ */ + NET_DVR_MATRIX_DECCHANINFO struchanConInfo[MAX_CYCLE_CHAN]; +}NET_DVR_MATRIX_LOOP_DECINFO, *LPNET_DVR_MATRIX_LOOP_DECINFO; + +//2007-12-22 +typedef struct +{ + BYTE baudrate; /* */ + BYTE databits; /* λ */ + BYTE stopbits; /* ֹͣλ */ + BYTE parity; /* żУλ */ + BYTE flowcontrol; /* */ + BYTE res[3]; +}TTY_CONFIG, *LPTTY_CONFIG; + +typedef struct +{ + BYTE byTranChanEnable; /* ǰ͸ͨǷ 0ر 1 */ + /* + * ·1485ڣ1232ڶΪ͸ͨ,豸ŷ£ + * 0 RS485 + * 1 RS232 Console + */ + BYTE byLocalSerialDevice; /* Local serial device */ + /* + * Զ̴,һRS232һRS485 + * 1ʾ232 + * 2ʾ485 + */ + BYTE byRemoteSerialDevice; /* Remote output serial device */ + BYTE res1; /* */ + char sRemoteDevIP[16]; /* Remote Device IP */ + WORD wRemoteDevPort; /* Remote Net Communication Port */ + BYTE res2[2]; /* */ + TTY_CONFIG RemoteSerialDevCfg; +}NET_DVR_MATRIX_TRAN_CHAN_INFO, *LPNET_DVR_MATRIX_TRAN_CHAN_INFO; + +typedef struct +{ + DWORD dwSize; + BYTE by232IsDualChan; /* ·232͸ͨȫ˫ ȡֵ1MAX_SERIAL_NUM */ + BYTE by485IsDualChan; /* ·485͸ͨȫ˫ ȡֵ1MAX_SERIAL_NUM */ + BYTE res[2]; /* */ + NET_DVR_MATRIX_TRAN_CHAN_INFO struTranInfo[MAX_SERIAL_NUM];/*ͬʱֽ֧MAX_SERIAL_NUM͸ͨ*/ +}NET_DVR_MATRIX_TRAN_CHAN_CONFIG, *LPNET_DVR_MATRIX_TRAN_CHAN_CONFIG; + +//2007-12-24 Merry Christmas Eve... +typedef struct +{ + DWORD dwSize; + char sDVRIP[16]; /* DVR IPַ */ + WORD wDVRPort; /* ˿ں */ + BYTE byChannel; /* ͨ */ + BYTE byReserve; + BYTE sUserName[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + DWORD dwPlayMode; /* 0ļ 1ʱ*/ + NET_DVR_TIME StartTime; + NET_DVR_TIME StopTime; + char sFileName[128]; +}NET_DVR_MATRIX_DEC_REMOTE_PLAY, *LPNET_DVR_MATRIX_DEC_REMOTE_PLAY; + +/* ļ */ +#define NET_DVR_PLAYSTART 1//ʼ +#define NET_DVR_PLAYSTOP 2//ֹͣ +#define NET_DVR_PLAYPAUSE 3//ͣ +#define NET_DVR_PLAYRESTART 4//ָ +#define NET_DVR_PLAYFAST 5// +#define NET_DVR_PLAYSLOW 6// +#define NET_DVR_PLAYNORMAL 7//ٶ +#define NET_DVR_PLAYSTARTAUDIO 9// +#define NET_DVR_PLAYSTOPAUDIO 10//ر +#define NET_DVR_PLAYSETPOS 12//ıļطŵĽ +#define NET_DVR_RESETBUFFER 37 //վ뻺Զ̻طļ + +typedef struct +{ + DWORD dwSize; + DWORD dwPlayCmd; /* ļ*/ + DWORD dwCmdParam; /* */ +}NET_DVR_MATRIX_DEC_REMOTE_PLAY_CONTROL, *LPNET_DVR_MATRIX_DEC_REMOTE_PLAY_CONTROL; + +typedef struct +{ + DWORD dwSize; + DWORD dwCurMediaFileLen; /* ǰŵýļ */ + DWORD dwCurMediaFilePosition; /* ǰļIJλ */ + DWORD dwCurMediaFileDuration; /* ǰļʱ */ + DWORD dwCurPlayTime; /* ǰѾŵʱ */ + DWORD dwCurMediaFIleFrames; /* ǰļ֡ */ + DWORD dwCurDataType; /* ǰͣ19-ļͷ20-ݣ 21-Ž־ */ + BYTE res[72]; +}NET_DVR_MATRIX_DEC_REMOTE_PLAY_STATUS, *LPNET_DVR_MATRIX_DEC_REMOTE_PLAY_STATUS; + +//2009-4-11 added by likui ·new +typedef struct tagNET_MATRIX_PASSIVEMODE +{ + WORD wTransProtol; //Э飬0-TCP, 1-UDP, 2-MCAST + WORD wPassivePort; //UDP˿, TCPʱĬ + NET_DVR_IPADDR struMcastIP; //TCP,UDPʱЧ, MCASTʱΪಥַ + BYTE byStreamType;/* ݲģʽ:REAL_TIME_STREAM(1)ʵʱ,RECORD_STREAM(2)ļ */ + BYTE byRes[7]; +}NET_DVR_MATRIX_PASSIVEMODE, *LPNET_DVR_MATRIX_PASSIVEMODE; + +typedef struct tagNET_DVR_MATRIX_TRAN_CHAN_INFO_V30 +{ + BYTE byTranChanEnable; /* ǰ͸ͨǷ 0ر 1 */ + BYTE byLocalSerialDevice; /* Local serial device */ + /* + * ·1485ڣ1232ڶΪ͸ͨ,豸ŷ£ + * 0 RS485 + * 1 RS232 Console + * 2 Dual Scom + */ + BYTE byRemoteSerialDevice; /* Remote output serial device */ + /* + * Զ̴,һRS232һRS485 + * 1 ʾ232 + * 2 ʾ485 + */ + BYTE byRes1; /* */ + NET_DVR_IPADDR struRemoteDevIP; /* Remote Device IP */ + WORD wRemoteDevPort; /* Remote Net Communication Port */ + BYTE byIsEstablished; /* ͸ͨɹ־0-ûгɹ1-ɹ */ + BYTE byRes2; /* */ + TTY_CONFIG RemoteSerialDevCfg; + BYTE byUsername[NAME_LEN]; + BYTE byPassword[PASSWD_LEN]; + DWORD dwLocalSerialNo; /* ش */ + DWORD dwRemoteSerialNo; /* Զ̴ */ + BYTE byRes3[8]; +} NET_DVR_MATRIX_TRAN_CHAN_INFO_V30,*LPNET_DVR_MATRIX_TRAN_CHAN_INFO_V30; + +typedef struct tagMATRIX_TRAN_CHAN_CONFIG +{ + DWORD dwSize; + BYTE by232IsDualChan; /* ·232͸ͨȫ˫ ȡֵ1MAX_SERIAL_NUM */ + BYTE by485IsDualChan; /* ·485͸ͨȫ˫ ȡֵ1MAX_SERIAL_NUM */ + BYTE byRes[2]; /* */ + NET_DVR_MATRIX_TRAN_CHAN_INFO_V30 struTranInfo[MAX_SERIAL_NUM]; /*ͬʱֽ֧MAX_SERIAL_NUM͸ͨ*/ +}NET_DVR_MATRIX_TRAN_CHAN_CONFIG_V30,*LPNET_DVR_MATRIX_TRAN_CHAN_CONFIG_V30; + +typedef struct +{ + DWORD dwEnable; /* Ƿ 0 1*/ + NET_DVR_STREAM_MEDIA_SERVER_CFG streamMediaServerCfg; + NET_DVR_DEV_CHAN_INFO struDevChanInfo; /* ѲͨϢ */ +}NET_DVR_MATRIX_CHAN_INFO_V30,*LPNET_DVR_CYC_SUR_CHAN_ELE_V30; + +typedef struct tagMATRIX_LOOP_DECINFO_V30 +{ + DWORD dwSize; + DWORD dwPoolTime; /*Ѳ*/ + NET_DVR_MATRIX_CHAN_INFO_V30 struchanConInfo[MAX_CYCLE_CHAN_V30]; + BYTE byRes[16]; +} NET_DVR_MATRIX_LOOP_DECINFO_V30,*LPNET_DVR_MATRIX_LOOP_DECINFO_V30; + + +typedef struct tagDEC_MATRIX_CHAN_INFO_V30 +{ + DWORD dwSize; + NET_DVR_STREAM_MEDIA_SERVER_CFG streamMediaServerCfg; /*ý*/ + NET_DVR_DEV_CHAN_INFO struDevChanInfo; /* ͨϢ */ + DWORD dwDecState; /* 0-̬ 1ѭ 2ʱط 3ļط */ + NET_DVR_TIME StartTime; /* ʱطſʼʱ */ + NET_DVR_TIME StopTime; /* ʱطֹͣʱ */ + char sFileName[128]; /* ļطļ */ + DWORD dwGetStreamMode; /*ȡģʽ:1-2-*/ + NET_DVR_MATRIX_PASSIVEMODE struPassiveMode; + BYTE byRes[32]; +}NET_DVR_MATRIX_DEC_CHAN_INFO_V30,*LPNET_DVR_MATRIX_DEC_CHAN_INFO_V30; + +#define MAX_RESOLUTIONNUM 64 //ֱֵ֧Ŀ +typedef struct tagNET_DVR_MATRIX_ABILITY +{ + DWORD dwSize; + BYTE byDecNums; + BYTE byStartChan; + BYTE byVGANums; + BYTE byBNCNums; + BYTE byVGAWindowMode[8][12]; /*VGAֵ֧ĴģʽVGA1ɻ*/ + BYTE byBNCWindowMode[4]; /*BNCֵ֧Ĵģʽ*/ + BYTE byDspNums; + BYTE byHDMINums;//HDMIʾͨ25ʼ + BYTE byDVINums;//DVIʾͨ29ʼ + BYTE byRes1[13]; + BYTE bySupportResolution[MAX_RESOLUTIONNUM];//öٶ,һֽڴһֱ//֧֣1֧֣0֧ + BYTE byHDMIWindowMode[4][8];//HDMIֵ֧Ĵģʽ + BYTE byDVIWindowMode[4][8];//DVIֵ֧Ĵģʽ + BYTE byRes2[24]; +}NET_DVR_MATRIX_ABILITY, *LPNET_DVR_MATRIX_ABILITY; +//ϴlogoṹ +typedef struct tagNET_DVR_DISP_LOGOCFG +{ + DWORD dwCorordinateX; //ͼƬʾX + DWORD dwCorordinateY; //ͼƬʾY + WORD wPicWidth; //ͼƬ + WORD wPicHeight; //ͼƬ + BYTE byRes1[4]; + BYTE byFlash; //Ƿ˸1-˸0-˸ + BYTE byTranslucent; //Ƿ͸1-͸0-͸ + BYTE byRes2[6]; // + DWORD dwLogoSize;//LOGOСBMPļͷ +}NET_DVR_DISP_LOGOCFG,*LPNET_DVR_DISP_LOGOCFG; + +/**/ +#define NET_DVR_ENCODER_UNKOWN 0 /*δ֪ʽ*/ +#define NET_DVR_ENCODER_H264 1 /*˽ 264*/ +#define NET_DVR_ENCODER_S264 2 /*Standard H264*/ +#define NET_DVR_ENCODER_MPEG4 3 /*MPEG4*/ +#define NET_DVR_ORIGINALSTREAM 4 /*Original Stream*/ +#define NET_DVR_PICTURE 5/*Picture*/ +#define NET_DVR_ENCODER_MJPEG 6 +#define NET_DVR_ENCODER_MPEG2 7 +#define NET_DVR_ENCODER_H265 8 +#define NET_DVR_ENCODER_SVAC 9 +#define NET_DVR_ENCODER_SMART264 10/*Smart 264*/ +#define NET_DVR_ENCODER_SMART265 11/*Smart 265*/ + +/* ʽ */ +#define NET_DVR_STREAM_TYPE_UNKOWN 0 /*δ֪ʽ*/ +#define NET_DVR_STREAM_TYPE_PRIVT 1 /*˽иʽ*/ +#define NET_DVR_STREAM_TYPE_TS 7 /* TS */ +#define NET_DVR_STREAM_TYPE_PS 8 /* PS */ +#define NET_DVR_STREAM_TYPE_RTP 9 /* RTP */ +#define NET_DVR_STREAM_TYPE_ORIGIN 10 //δ(Ƶۺƽ̨ϵͳ) + +/*ͨ״̬*/ +typedef struct +{ + BYTE byDecodeStatus; /*ǰ״̬:0:δ1*/ + BYTE byStreamType; /**/ + BYTE byPacketType; /*ʽ*/ + BYTE byRecvBufUsage; /*ջʹ*/ + BYTE byDecBufUsage; /*뻺ʹ*/ + BYTE byFpsDecV; /*Ƶ֡*/ + BYTE byFpsDecA; /*Ƶ֡*/ + BYTE byCpuLoad; /*DSP CPUʹ*/ + BYTE byRes1[4]; + DWORD dwDecodedV; /*Ƶ֡*/ + DWORD dwDecodedA; /*Ƶ֡*/ + WORD wImgW; /*ǰͼС,*/ + WORD wImgH; // + BYTE byVideoFormat; /*Ƶʽ:0-NON,NTSC--1,PAL--2*/ + BYTE byRes2[3]; + DWORD dwDecChan; /*ȡȫͨ״̬ʱЧʱ0*/ + BYTE byRes3[20]; +}NET_DVR_MATRIX_CHAN_STATUS, *LPNET_DVR_MATRIX_CHAN_STATUS; + +/*ʾͨ״̬*/ +#define NET_DVR_MAX_DISPREGION 16 /*ÿʾͨʾĴ*/ +//ֱ +// +typedef enum +{ + /*VGA*/ + VGA_NOT_AVALIABLE, + VGA_THS8200_MODE_SVGA_60HZ, //(800*600) + VGA_THS8200_MODE_SVGA_75HZ, //(800*600) + VGA_THS8200_MODE_XGA_60HZ, //(1024*768) + VGA_THS8200_MODE_XGA_75HZ, //(1024*768) + VGA_THS8200_MODE_SXGA_60HZ, //(1280*1024) + VGA_THS8200_MODE_720P_60HZ, //(1280*720) + VGA_THS8200_MODE_1080I_60HZ, //(1920*1080) + VGA_THS8200_MODE_1080P_30HZ, //(1920*1080) + VGA_THS8200_MODE_UXGA_30HZ, //(1600*1200) + /*HDMI*/ + HDMI_SII9134_MODE_XGA_60HZ, //(1024*768) + HDMI_SII9134_MODE_SXGA_60HZ, //(1280*1024) + HDMI_SII9134_MODE_SXGA2_60HZ, //(1280*960) + HDMI_SII9134_MODE_720P_60HZ, //(1280*720) + HDMI_SII9134_MODE_720P_50HZ, //(1280*720) + HDMI_SII9134_MODE_1080I_60HZ, //(1920*1080) + HDMI_SII9134_MODE_1080I_50HZ, //(1920*1080) + HDMI_SII9134_MODE_1080P_25HZ, //(1920*1080) + HDMI_SII9134_MODE_1080P_30HZ, //(1920*1080) + HDMI_SII9134_MODE_1080P_50HZ, //(1920*1080) + HDMI_SII9134_MODE_1080P_60HZ, //(1920*1080) + HDMI_SII9134_MODE_UXGA_60HZ, //(1600*1200) + /*DVI*/ + DVI_SII9134_MODE_XGA_60HZ, //(1024*768) + DVI_SII9134_MODE_SXGA_60HZ, //(1280*1024) + DVI_SII9134_MODE_SXGA2_60HZ, //(1280*960) + DVI_SII9134_MODE_720P_60HZ, //(1280*720) + DVI_SII9134_MODE_720P_50HZ, //(1280*720) + DVI_SII9134_MODE_1080I_60HZ, //(1920*1080) + DVI_SII9134_MODE_1080I_50HZ, //(1920*1080) + DVI_SII9134_MODE_1080P_25HZ, //(1920*1080) + DVI_SII9134_MODE_1080P_30HZ, //(1920*1080) + DVI_SII9134_MODE_1080P_50HZ, //(1920*1080) + DVI_SII9134_MODE_1080P_60HZ, //(1920*1080) + DVI_SII9134_MODE_UXGA_60HZ, //(1600*1200) + VGA_DECSVR_MODE_SXGA2_60HZ, + HDMI_DECSVR_MODE_1080P_24HZ, + DVI_DECSVR_MODE_1080P_24HZ, + YPbPr_DECSVR_MODE_720P_60HZ, + YPbPr_DECSVR_MODE_1080I_60HZ +}VGA_MODE; + +//֡ʶ +#define LOW_DEC_FPS_1_2 51 +#define LOW_DEC_FPS_1_4 52 +#define LOW_DEC_FPS_1_8 53 +#define LOW_DEC_FPS_1_16 54 + +/*Ƶʽ׼*/ +typedef enum +{ + VS_NON = 0, + VS_NTSC = 1, + VS_PAL = 2 +}VIDEO_STANDARD; + +typedef struct tagNET_DVR_VGA_DISP_CHAN_CFG +{ + DWORD dwSize; + BYTE byAudio; /*ƵǷ,0-1-*/ + BYTE byAudioWindowIdx; /*ƵӴ*/ + BYTE byVgaResolution; /*VGAķֱ*/ + BYTE byVedioFormat; /*1:NTSC,2:PAL,0-NULL*/ + DWORD dwWindowMode; /*ģʽ,ȡ,Ŀǰ֧1,2,4,9,16*/ + BYTE byJoinDecChan[MAX_WINDOWS];/*ӴڹĽͨ*/ + BYTE byEnlargeStatus; /*ǷڷŴ״̬0Ŵ1Ŵ*/ + BYTE byEnlargeSubWindowIndex;//ŴӴں + union + { + BYTE byRes[16]; + struct + { + /*ӴڶӦͨӦĽϵͳIJλ(Ƶۺƽ̨нϵͳЧ)*/ + BYTE byJoinDecoderId[MAX_WINDOWS]; + }struVideoPlatform; + struct + { + BYTE byRes[16]; + }struNotVideoPlatform; + }struDiff; + /*ֹ壬0-Ƶۺƽ̨ڲʾͨã1-ʾͨ*/ + BYTE byUnionType; + BYTE byScale; /*ʾģʽ0---ʵʾ1---ʾ( BNC )*/ +}NET_DVR_VGA_DISP_CHAN_CFG,*LPNET_DVR_VGA_DISP_CHAN_CFG; + + +/*ʾͨ״̬*/ +#define NET_DVR_MAX_DISPREGION 16 /*ÿʾͨʾĴ*/ +typedef struct +{ + BYTE byDispStatus; /*ʾ״̬0δʾ1ʾ*/ + BYTE byBVGA; /*0-BNC1-VGA 2-HDMI3-DVI*/ + BYTE byVideoFormat; /*Ƶʽ:1:NTSC,2:PAL,0-NON*/ + BYTE byWindowMode; /*ǰģʽ*/ + BYTE byJoinDecChan[MAX_WINDOWS]; /*ӴڹĽͨ*/ + BYTE byFpsDisp[NET_DVR_MAX_DISPREGION]; /*ÿӻʾ֡*/ + BYTE byScreenMode; //Ļģʽ0-ͨ 1- + BYTE byRes2[31]; +}NET_DVR_DISP_CHAN_STATUS, *LPNET_DVR_DISP_CHAN_STATUS; + +#define MAX_DECODECHANNUM 32//·ͨ +#define MAX_DISPCHANNUM 24//·ʾͨ + +/*豸״̬*/ +typedef struct tagNET_DVR_DECODER_WORK_STATUS +{ + DWORD dwSize; + NET_DVR_MATRIX_CHAN_STATUS struDecChanStatus[MAX_DECODECHANNUM]; /*ͨ״̬*/ + NET_DVR_DISP_CHAN_STATUS struDispChanStatus[MAX_DISPCHANNUM]; /*ʾͨ״̬*/ + BYTE byAlarmInStatus[MAX_ANALOG_ALARMIN]; /*״̬*/ + BYTE byAlarmOutStatus[MAX_ANALOG_ALARMOUT]; /*״̬*/ + BYTE byAudioInChanStatus; /*Խ״̬*/ + BYTE byRes[127]; +}NET_DVR_DECODER_WORK_STATUS,*LPNET_DVR_DECODER_WORK_STATUS; + +//2009-12-1 ӱ벥ſ +typedef struct tagNET_DVR_PASSIVEDECODE_CONTROL +{ + DWORD dwSize; + DWORD dwPlayCmd; /* ļ*/ + DWORD dwCmdParam; /* */ + BYTE byRes[16];//Reverse +}NET_DVR_PASSIVEDECODE_CONTROL,*LPNET_DVR_PASSIVEDECODE_CONTROL; + +#define PASSIVE_DEC_PAUSE 1 /*ͣ(ļЧ)*/ +#define PASSIVE_DEC_RESUME 2 /*ָ(ļЧ)*/ +#define PASSIVE_DEC_FAST 3 /*ٱ(ļЧ)*/ +#define PASSIVE_DEC_SLOW 4 /*ٱ(ļЧ)*/ +#define PASSIVE_DEC_NORMAL 5 /*(ļЧ)*/ +#define PASSIVE_DEC_ONEBYONE 6 /*뵥֡()*/ +#define PASSIVE_DEC_AUDIO_ON 7 /*Ƶ*/ +#define PASSIVE_DEC_AUDIO_OFF 8 /*Ƶر*/ +#define PASSIVE_DEC_RESETBUFFER 9 /*ջ*/ +//2009-12-16 ӿƽͨ +typedef struct tagNET_DVR_MATRIX_DECCHAN_CONTROL +{ + DWORD dwSize; + BYTE byDecChanScaleStatus;/*ͨʾſ,1ʾʾ0ʾʵʾ*/ + BYTE byDecodeDelay;//ʱ0-Ĭϣ1-ʵʱԺã2-ʵʱԽϺã3-ʵʱУУ4-ԽϺã5-Ժã0xff-Զ + BYTE byEnableSpartan;//ʹܣ0-أ1- + BYTE byLowLight; //նȡ0-أ1-8նȵȼȼԽǿԽ + BYTE byNoiseReduction; //3D룬0-أ1-2-Զ + BYTE byDefog; //͸0-أ1-7͸ȼȼԽǿԽ + BYTE byEnableVcaDec; //Ƿܽ룬0-ã0- + BYTE byEnableAudio; //ǷƵ0-Ч1-2-ر + DWORD dwAllCtrlType; //ӴһͣʱЧλʾ + //dwAllCtrlType & 0x01,رܽ + BYTE byVolume; //volume,[0-100] + BYTE byRes[55]; +}NET_DVR_MATRIX_DECCHAN_CONTROL,*LPNET_DVR_MATRIX_DECCHAN_CONTROL; + +/************************************·(end)***************************************/ +//2009-8-19 Ƶۺƽ̨ӿں +/************************************Ƶۺƽ̨(begin)***************************************/ +#define MAX_SUBSYSTEM_NUM 80 //һϵͳϵͳ +#define MAX_SERIALLEN 36 //кų +#define MAX_LOOPPLANNUM 16//ƻл +#define DECODE_TIMESEGMENT 4//ƻÿʱ +typedef struct tagNET_DVR_SUBSYSTEMINFO +{ + BYTE bySubSystemType;//ϵͳͣ1-ϵͳ2-ϵͳ3-ϵͳ4-ϵͳ5-ϵͳ6-ϵͳ7-ϵͳ0-NULL˲ֻܻȡ + BYTE byChan;//ϵͳͨϵͳ485˲ֻܻȡ + BYTE byLoginType;//עͣ1-ֱ2-DNS3- + BYTE byRes1[5]; + NET_DVR_IPADDR struSubSystemIP; /*IPַ޸ģ*/ + WORD wSubSystemPort; //ϵͳ˿ںţ޸ģ + BYTE byRes2[6]; + NET_DVR_IPADDR struSubSystemIPMask;// + NET_DVR_IPADDR struGatewayIpAddr; /* صַ*/ + BYTE sUserName[NAME_LEN]; /* û ˲ֻܻȡ*/ + BYTE sPassword[PASSWD_LEN]; /*루˲ֻܻȡ*/ + char sDomainName[MAX_DOMAIN_NAME];//(޸) + char sDnsAddress[MAX_DOMAIN_NAME];/*DNSIPַ*/ + BYTE sSerialNumber[SERIALNO_LEN];//кţ˲ֻܻȡ +}NET_DVR_SUBSYSTEMINFO, *LPNET_DVR_SUBSYSTEMINFO; + +typedef struct tagNET_DVR_ALLSUBSYSTEMINFO +{ + DWORD dwSize; + NET_DVR_SUBSYSTEMINFO struSubSystemInfo[MAX_SUBSYSTEM_NUM]; + BYTE byRes[8]; +}NET_DVR_ALLSUBSYSTEMINFO, *LPNET_DVR_ALLSUBSYSTEMINFO; + +typedef struct tagNET_DVR_LOOPPLAN_SUBCFG +{ + DWORD dwSize; + DWORD dwPoolTime; /*Ѳλ*/ + NET_DVR_MATRIX_CHAN_INFO_V30 struChanConInfo[MAX_CYCLE_CHAN_V30]; + BYTE byRes[16]; +}NET_DVR_LOOPPLAN_SUBCFG,*LPNET_DVR_LOOPPLAN_SUBCFG; + +typedef struct tagNET_DVR_ALARMMODECFG +{ + DWORD dwSize; + BYTE byAlarmMode;//ͣ1-Ѳ2- + WORD wLoopTime;//Ѳʱ, λ + BYTE byRes[9]; +}NET_DVR_ALARMMODECFG,*LPNET_DVR_ALARMMODECFG; + +typedef struct tagNET_DVR_CODESPLITTERINFO +{ + DWORD dwSize; + NET_DVR_IPADDR struIP; /*IPַ*/ + WORD wPort; //˿ں + BYTE byRes1[6]; + BYTE sUserName[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + BYTE byChan;//485 + BYTE by485Port;//485ڵַ + BYTE byRes2[14]; +} NET_DVR_CODESPLITTERINFO, *LPNET_DVR_CODESPLITTERINFO; + +typedef struct tagNET_DVR_ASSOCIATECFG +{ + BYTE byAssociateType;//ͣ1- + WORD wAlarmDelay;//ʱ05룻110룻230룻31ӣ42ӣ55ӣ610ӣ + BYTE byAlarmNum;//ţֵӦøͬıֵͬ + BYTE byRes[8]; +} NET_DVR_ASSOCIATECFG,*LPNET_DVR_ASSOCIATECFG; + +typedef struct tagNET_DVR_DYNAMICDECODE +{ + DWORD dwSize; + NET_DVR_ASSOCIATECFG struAssociateCfg;//̬ṹ + NET_DVR_PU_STREAM_CFG struPuStreamCfg;//̬ṹ + BYTE byRes[8]; +}NET_DVR_DYNAMICDECODE,*LPNET_DVR_DYNAMICDECODE; + +typedef struct tagNET_DVR_DECODESCHED +{ + NET_DVR_SCHEDTIME struSchedTime;// + BYTE byDecodeType;/*0-ޣ1-Ѳ룬2-̬*/ + BYTE byLoopGroup;//Ѳ + BYTE byRes[6]; + NET_DVR_PU_STREAM_CFG struDynamicDec;//̬ +} NET_DVR_DECODESCHED, *LPNET_DVR_DECODESCHED; + +typedef struct tagNET_DVR_PLANDECODE +{ + DWORD dwSize; + NET_DVR_DECODESCHED struDecodeSched[MAX_DAYS][DECODE_TIMESEGMENT];//һΪʼ9000һ + BYTE byRes[8]; +} NET_DVR_PLANDECODE,*LPNET_DVR_PLANDECODE; + +//end +/************************************Ƶۺƽ̨(end)***************************************/ +typedef struct +{ /* 12 bytes */ + DWORD dwSize; + char sUserName[32]; + char sPassWord[32]; + char sFromName[32]; /* Sender *///ַеĵһַһַ"@",ַҪ"@"ַ + char sFromAddr[48]; /* Sender address */ + char sToName1[32]; /* Receiver1 */ + char sToName2[32]; /* Receiver2 */ + char sToAddr1[48]; /* Receiver address1 */ + char sToAddr2[48]; /* Receiver address2 */ + char sEmailServer[32]; /* Email server address */ + BYTE byServerType; /* Email server type: 0-SMTP, 1-POP, 2-IMTP*/ + BYTE byUseAuthen; /* Email server authentication method: 1-enable, 0-disable */ + BYTE byAttachment; /* enable attachment */ + BYTE byMailinterval; /* mail interval 0-2s, 1-3s, 2-4s. 3-5s*/ +} NET_DVR_EMAILCFG, *LPNET_DVR_EMAILCFG; + +typedef struct +{ + DWORD dwSize; + NET_DVR_COMPRESSION_INFO_EX struLowCompression; //ʱ¼ + NET_DVR_COMPRESSION_INFO_EX struEventCompression; //¼¼ +}NET_DVR_COMPRESSIONCFG_NEW, *LPNET_DVR_COMPRESSIONCFG_NEW; + +//λϢ +typedef struct +{ + WORD wAction;//ȡʱֶЧ + WORD wPanPos;//ˮƽ + WORD wTiltPos;//ֱ + WORD wZoomPos;//䱶 +}NET_DVR_PTZPOS, *LPNET_DVR_PTZPOS; + +//ΧϢ +typedef struct +{ + WORD wPanPosMin;//ˮƽmin + WORD wPanPosMax;//ˮƽmax + WORD wTiltPosMin;//ֱmin + WORD wTiltPosMax;//ֱmax + WORD wZoomPosMin;//䱶min + WORD wZoomPosMax;//䱶max +}NET_DVR_PTZSCOPE, *LPNET_DVR_PTZSCOPE; + +//rtsp ipcameraר +typedef struct +{ + DWORD dwSize; // + WORD wPort; //rtsp˿ + BYTE byReserve1[40]; //Ԥ + WORD wRtspsPort; //rtsps˿ + BYTE byReserve[12]; +}NET_DVR_RTSPCFG, *LPNET_DVR_RTSPCFG; + +/********************************ӿڲṹ(begin)*********************************/ + +//NET_DVR_Login()ṹ +typedef struct +{ + BYTE sSerialNumber[SERIALNO_LEN]; //к + BYTE byAlarmInPortNum; //DVR + BYTE byAlarmOutPortNum; //DVR + BYTE byDiskNum; //DVRӲ̸ + BYTE byDVRType; //DVR, 1:DVR 2:ATM DVR 3:DVS ...... + BYTE byChanNum; //DVR ͨ + BYTE byStartChan; //ʼͨ,DVS-1,DVR - 1 +}NET_DVR_DEVICEINFO, *LPNET_DVR_DEVICEINFO; + +//NET_DVR_Login_V30()ṹ +typedef struct +{ + BYTE sSerialNumber[SERIALNO_LEN]; //к + BYTE byAlarmInPortNum; // + BYTE byAlarmOutPortNum; // + BYTE byDiskNum; //Ӳ̸ + BYTE byDVRType; //豸, 1:DVR 2:ATM DVR 3:DVS ...... + BYTE byChanNum; //ģͨ + BYTE byStartChan; //ʼͨ,DVS-1,DVR - 1 + BYTE byAudioChanNum; //ͨ + BYTE byIPChanNum; //ͨλ + BYTE byZeroChanNum; //ͨ //2010-01-16 + BYTE byMainProto; //Э 0-private, 1-rtsp,2-ͬʱ֧privatertsp + BYTE bySubProto; //Э0-private, 1-rtsp,2-ͬʱ֧privatertsp + BYTE bySupport; //λΪ0ʾ֧֣1ʾ֧֣ + //bySupport & 0x1, ʾǷ֧ + //bySupport & 0x2, ʾǷֱ֧ + //bySupport & 0x4, ʾǷ֧ѹȡ + //bySupport & 0x8, ʾǷֶ֧ + //bySupport & 0x10, ʾ֧ԶSADP + //bySupport & 0x20, ʾ֧Raid + //bySupport & 0x40, ʾ֧IPSAN Ŀ¼ + //bySupport & 0x80, ʾ֧rtp over rtsp + BYTE bySupport1; // 䣬λΪ0ʾ֧֣1ʾ֧ + //bySupport1 & 0x1, ʾǷ֧snmp v30 + //bySupport1 & 0x2, ֻ֧طź + //bySupport1 & 0x4, Ƿֲ֧ȼ + //bySupport1 & 0x8, 豸Ƿֲ֧ʱչ + //bySupport1 & 0x10, ʾǷֶ֧33 + //bySupport1 & 0x20, ʾǷ֧rtsp over http + //bySupport1 & 0x80, ʾǷֳ֧±Ϣ2012-9-28, һʾǷ֧NET_DVR_IPPARACFG_V40ṹ + BYTE bySupport2; /*λΪ0ʾ֧֣0ʾ֧ + bySupport2 & 0x1, ʾǷ֧ͨURLȡ + bySupport2 & 0x2, ʾ֧FTPV40 + bySupport2 & 0x4, ʾ֧ANR + bySupport2 & 0x8, ʾ֧CCDͨ + bySupport2 & 0x10, ʾֲ֧شϢ֧ץĻ ϱṹ + bySupport2 & 0x20, ʾǷֵ֧ȡ豸״̬ + bySupport2 & 0x40, ʾǷ豸*/ + WORD wDevType; //豸ͺ + BYTE bySupport3; //չλΪ0ʾ֧֣1ʾ֧ + //bySupport3 & 0x1, ʾǷ֧ö + // bySupport3 & 0x4 ʾְ֧ã ͨͼIP롢 + // û豸״̬JPEGץͼʱʱץͼӲ + //bySupport3 & 0x8Ϊ1 ʾ֧ʹTCPԤUDPԤಥԤе"ʱԤ"ֶʱԤʹַʽʱԤbySupport3 & 0x8Ϊ0ʱʹ "˽ʱԤ"Э顣 + //bySupport3 & 0x10 ʾ֧"ȡҪ״̬V40" + //bySupport3 & 0x20 ʾǷ֧ͨDDNSȡ + + BYTE byMultiStreamProto;//Ƿֶ֧,λʾ,0-֧,1-֧,bit1-3,bit2-4,bit7-bit-8 + BYTE byStartDChan; //ʼͨ,0ʾЧ + BYTE byStartDTalkChan; //ʼֶԽͨţģԽͨţ0ʾЧ + BYTE byHighDChanNum; //ͨλ + BYTE bySupport4; //չλΪ0ʾ֧֣1ʾ֧ + //bySupport4 & 0x02 ʾǷ֧NetSDK͸ӿڣNET_DVR_STDXMLConfig͸ʽ + //bySupport4 & 0x4ʾǷ֧ƴͳһӿ + //bySupport4 & 0x80 ֧豸ϴıʹܡʾжϵýӿ NET_DVR_PDC_RULE_CFG_V42 NET_DVR_PDC_RULE_CFG_V41 + BYTE byLanguageType;// ֧,λʾ,ÿһλ0-֧,1-֧ + // byLanguageType 0 ʾ 豸 + // byLanguageType & 0x1ʾ֧ + // byLanguageType & 0x2ʾ֧Ӣ + BYTE byVoiceInChanNum; //Ƶͨ + BYTE byStartVoiceInChanNo; //Ƶʼͨ 0ʾЧ + BYTE bySupport5; //λʾ,0-֧,1-֧,bit0-ֶ֧ + //bySupport5 &0x01ʾ֧wEventTypeEx ,dwEventType ¼֧ͣΪ¼չ--ռסֹͻ + //bySupport5 &0x04ʾǷ֧ʹչijģʽӿ + /* + bySupport5 &0x08 豸ظֵʾǷּ֧ƻ¼V40ӿЭ(DVR_SET_RECORDCFG_V40/ DVR_GET_RECORDCFG_V40)(ڸЭ豸֧13) + ֮ǰIJַ豸֧¼13¼13֧֣ͳһת¼3ݴSDKͨ̽⴦) + bySupport5 &0x10 豸ظֵʾֳ֧255Ԥõ + */ + BYTE bySupport6; //λʾ0-֧,1-֧ + //bySupport6 0x1 ʾ豸Ƿ֧ѹ + //bySupport6 0x2 ʾǷ֧IDʽԴչDVR_SET_STREAM_SRC_INFO_V40 + //bySupport6 0x4 ʾǷ֧¼V40ӿ + //bySupport6 0x8 ʾǷ֧չ + //bySupport6 0x40ʾͼƬѯV40չ + BYTE byMirrorChanNum; //ͨ<¼ڱʾͨ> + WORD wStartMirrorChanNo; //ʼͨ + BYTE bySupport7; //,λʾ,0-֧,1-֧ + // bySupport7 & 0x1 ʾ豸Ƿ֧ INTER_VCA_RULECFG_V42 չ + // bySupport7 & 0x2 ʾ豸Ƿ֧ IPC HVT ģʽչ + // bySupport7 & 0x04 ʾ豸Ƿ֧ ʱ + // bySupport7 & 0x08 ʾ̨PTZλʱǷִ֧ͨ + // bySupport7 & 0x10 ʾ豸Ƿ֧˫ϵͳ + // bySupport7 & 0x20 ʾ豸Ƿ֧ OSDַ V50 + // bySupport7 & 0x40 ʾ豸Ƿ֧ ӣ + // bySupport7 & 0x80 ʾ豸Ƿ֧ ļ + BYTE byRes2; // +}NET_DVR_DEVICEINFO_V30, *LPNET_DVR_DEVICEINFO_V30; + +typedef struct tagNET_DVR_DEVICEINFO_V40 +{ + NET_DVR_DEVICEINFO_V30 struDeviceV30; + BYTE bySupportLock; //豸֧ܣֶSDK豸ֵֵġbySupportLockΪ1ʱdwSurplusLockTimebyRetryLoginTimeЧ + BYTE byRetryLoginTime; //ʣɳԵ½Ĵûʱ˲Ч + BYTE byPasswordLevel; //admin밲ȫȼ + //0-Ч1-Ĭ룬2-Ч룬3-սϸߵ롣ûΪĬ루12345߷սϸߵʱϲͻҪʾû롣 + //4-ԱһͨûΪ룬ͨûȷ¼豸Ҫʾ޸ijʼ¼롱δ޸ĵ£ûÿε붼ѣ + //5-ͨû뱻Ա޸ģͨûٴȷ¼豸Ҫʾõ¼롱δ޸ĵ£ûÿε붼; + //6-Աһװ/ԱûΪ룬ûȷ¼豸Ҫʾ޸ijʼ¼롱δ޸ĵ£޷г޸ı; + BYTE byProxyType; //ͣ0-ʹô, 1-ʹsocks5, 2-ʹEHome + DWORD dwSurplusLockTime; //ʣʱ䣬λ룬ûʱ˲Ч + BYTE byCharEncodeType; //ַ0-ַϢ(豸),1-GB2312()2-GBK,3-BIG5(),4-Shift_JIS(),5-EUC-KR(),6-UTF-8,7-21:ISO8859-1---15(ŷ),22-Hebrew(ϣ) + BYTE bySupportDev5;//֧v50汾豸ȡ豸ƺ豸ƳչΪ64ֽ + BYTE bySupport; //չλ0- ֧֣1- ֧ + // bySupport & 0x1: + // bySupport & 0x2: 0-ֱ֧仯ϱ 1-ֱ֧仯ϱ + BYTE byLoginMode; //¼ģʽ 0-Private¼ 1-ISAPI¼ + DWORD dwOEMCode; + int iResidualValidity; //ûʣЧλ죬ظֵʾѾʹã硰-3ʾѾʹ3족 + BYTE byResidualValidity; // iResidualValidityֶǷЧ0-Ч1-Ч + BYTE bySingleStartDTalkChan; //豸ʼͨţ0-Ϊֽڣʵʺ壬ͨŲܴ0ʼ + BYTE bySingleDTalkChanNums; //豸ͨ0-ʾ֧ + BYTE byPassWordResetLevel; //0-Ч1-ԱһǹԱûΪ룬÷ǹԱûȷ¼豸Ҫʾ޸ijʼ¼롱δ޸ĵ£ûÿε붼ѣ2-ǹԱû뱻Ա޸ģ÷ǹԱûٴȷ¼豸Ҫʾõ¼롱δ޸ĵ£ûÿε붼ѡ + BYTE bySupportStreamEncrypt; //չλ0- ֧֣1- ֧ bySupportStreamEncrypt & 0x1:ʾǷ֧RTP/TLSȡ bySupportStreamEncrypt & 0x2: ʾǷ֧SRTP/UDPȡ bySupportStreamEncrypt & 0x4: ʾǷ֧SRTP/MULTICASTȡ + BYTE byMarketType;//0-Чδ֪ͣ,1-ͣ2-ҵ + BYTE byTLSCap; //0-Ч;byTLSCap & 0x1: ʾǷ֧TLS·Ԥ;byTLSCap & 0x2: ʾǷ֧TLS·ط;byTLSCap & 0x4: ʾǷ֧TLS·; + BYTE byRes2[237]; +}NET_DVR_DEVICEINFO_V40, *LPNET_DVR_DEVICEINFO_V40; + +typedef void (CALLBACK *fLoginResultCallBack) (LONG lUserID, DWORD dwResult, LPNET_DVR_DEVICEINFO_V30 lpDeviceInfo , void* pUser); + +#define NET_DVR_DEV_ADDRESS_MAX_LEN 129 +#define NET_DVR_LOGIN_USERNAME_MAX_LEN 64 +#define NET_DVR_LOGIN_PASSWD_MAX_LEN 64 + +typedef struct +{ + char sDeviceAddress[NET_DVR_DEV_ADDRESS_MAX_LEN]; + BYTE byUseTransport; //Ƿ͸0--͸Ĭϣ1--͸ + WORD wPort; + char sUserName[NET_DVR_LOGIN_USERNAME_MAX_LEN]; + char sPassword[NET_DVR_LOGIN_PASSWD_MAX_LEN]; + fLoginResultCallBack cbLoginResult; + void *pUser; + BOOL bUseAsynLogin; + BYTE byProxyType; //0:ʹô1ʹñ׼2ʹEHome + BYTE byUseUTCTime; //0-תĬ,1-ӿȫʹUTCʱ,SDKUTCʱ豸ʱת,2-ӿȫʹƽ̨ʱ䣬SDKƽ̨ʱ豸ʱת + BYTE byLoginMode; //0-Private 1-ISAPI 2-Ӧ + BYTE byHttps; //0-tls1-ʹtls 2-Ӧ + LONG iProxyID; //ţӴϢʱӦķ±ֵ + BYTE byVerifyMode; //֤ʽ0-֤1-˫֤2-֤֤ʹTLSʱЧ; + BYTE byRes3[119]; +}NET_DVR_USER_LOGIN_INFO,*LPNET_DVR_USER_LOGIN_INFO; + +//sdk绷öٱԶ +typedef enum _SDK_NET_ENV +{ + LOCAL_AREA_NETWORK = 0, + WIDE_AREA_NETWORK +}SDK_NETWORK_ENVIRONMENT; + +//ʾģʽ +typedef enum +{ + NORMALMODE = 0, + OVERLAYMODE +}DISPLAY_MODE; + +//ģʽ +typedef enum +{ + PTOPTCPMODE = 0, + PTOPUDPMODE, + MULTIMODE, + RTPMODE, + RESERVEDMODE +}SEND_MODE; + +//ץͼģʽ +typedef enum +{ + BMP_MODE = 0, //BMPģʽ + JPEG_MODE = 1 //JPEGģʽ +}CAPTURE_MODE; + +//ʵʱģʽ +typedef enum +{ + MONOPOLIZE_MODE = 1,//ռģʽ + SHARE_MODE = 2 //ģʽ +}REALSOUND_MODE; + +//Ԥ +typedef struct +{ + LONG lChannel;//ͨ + LONG lLinkMode;//λ(31)Ϊ0ʾΪ1ʾӣ030λʾӷʽ: 0TCPʽ,1UDPʽ,2ಥʽ,3 - RTPʽ4-RTP/RTSP,5-RSTP/HTTP + HWND hPlayWnd;//Ŵڵľ,ΪNULLʾͼ + char* sMultiCastIP;//ಥַ + BYTE byProtoType; //ӦòȡЭ飬0-˽Э飬1-RTSPЭ + BYTE byRes[3]; +}NET_DVR_CLIENTINFO, *LPNET_DVR_CLIENTINFO; + +//SDK״̬Ϣ(9000) +typedef struct +{ + DWORD dwTotalLoginNum; //ǰloginû + DWORD dwTotalRealPlayNum; //ǰrealplay· + DWORD dwTotalPlayBackNum; //ǰطŻ· + DWORD dwTotalAlarmChanNum; //ǰͨ· + DWORD dwTotalFormatNum; //ǰӲ̸ʽ· + DWORD dwTotalFileSearchNum; //ǰ־ļ· + DWORD dwTotalLogSearchNum; //ǰ־ļ· + DWORD dwTotalSerialNum; //ǰ͸ͨ· + DWORD dwTotalUpgradeNum; //ǰ· + DWORD dwTotalVoiceComNum; //ǰת· + DWORD dwTotalBroadCastNum; //ǰ㲥· + DWORD dwTotalListenNum; //ǰ· + DWORD dwEmailTestNum; //ǰʼ· + DWORD dwBackupNum; // ǰļ· + DWORD dwTotalInquestUploadNum; //ǰѶϴ· + DWORD dwRes[6]; +}NET_DVR_SDKSTATE, *LPNET_DVR_SDKSTATE; + +//SDK֧Ϣ(9000) +typedef struct +{ + DWORD dwMaxLoginNum; //loginû MAX_LOGIN_USERS + DWORD dwMaxRealPlayNum; //realplay· WATCH_NUM + DWORD dwMaxPlayBackNum; //طŻ· WATCH_NUM + DWORD dwMaxAlarmChanNum; //ͨ· ALARM_NUM + DWORD dwMaxFormatNum; //Ӳ̸ʽ· SERVER_NUM + DWORD dwMaxFileSearchNum; //ļ· SERVER_NUM + DWORD dwMaxLogSearchNum; //־· SERVER_NUM + DWORD dwMaxSerialNum; //͸ͨ· SERVER_NUM + DWORD dwMaxUpgradeNum; //· SERVER_NUM + DWORD dwMaxVoiceComNum; //ת· SERVER_NUM + DWORD dwMaxBroadCastNum; //㲥· MAX_CASTNUM + DWORD dwRes[10]; +}NET_DVR_SDKABL, *LPNET_DVR_SDKABL; + +//豸Ϣ +typedef struct +{ + BYTE byUserIDValid; /* useridǷЧ 0-Ч1-Ч */ + BYTE bySerialValid; /* кǷЧ 0-Ч1-Ч */ + BYTE byVersionValid; /* 汾ǷЧ 0-Ч1-Ч */ + BYTE byDeviceNameValid; /* 豸ǷЧ 0-Ч1-Ч */ + BYTE byMacAddrValid; /* MACַǷЧ 0-Ч1-Ч */ + BYTE byLinkPortValid; /* login˿ǷЧ 0-Ч1-Ч */ + BYTE byDeviceIPValid; /* 豸IPǷЧ 0-Ч1-Ч */ + BYTE bySocketIPValid; /* socket ipǷЧ 0-Ч1-Ч */ + LONG lUserID; /* NET_DVR_Login()ֵ, ʱЧ */ + BYTE sSerialNumber[SERIALNO_LEN]; /* к */ + DWORD dwDeviceVersion; /* 汾Ϣ 16λʾ汾16λʾΰ汾*/ + char sDeviceName[NAME_LEN]; /* 豸 */ + BYTE byMacAddr[MACADDR_LEN]; /* MACַ */ + WORD wLinkPort; /* link port */ + char sDeviceIP[128]; /* IPַ */ + char sSocketIP[128]; /* ϴʱsocket IPַ */ + BYTE byIpProtocol; /* IpЭ 0-IPV4, 1-IPV6 */ + BYTE byRes1[2]; + BYTE bJSONBroken; //JSON־01 + WORD wSocketPort; + BYTE byRes2[6]; +}NET_DVR_ALARMER, *LPNET_DVR_ALARMER; + +//Ӳʾ(ӽṹ) +typedef struct +{ + long bToScreen; + long bToVideoOut; + long nLeft; + long nTop; + long nWidth; + long nHeight; + long nReserved; +}NET_DVR_DISPLAY_PARA, *LPNET_DVR_DISPLAY_PARA; + +//ӲԤ +typedef struct +{ + LONG lChannel;//ͨ + LONG lLinkMode; //λ(31)Ϊ0ʾΪ1ʾӣ030λʾӷʽ:0TCPʽ,1UDPʽ,2ಥʽ,3 - RTPʽ4-绰ߣ5128k6256k7384k8512k + char* sMultiCastIP; + NET_DVR_DISPLAY_PARA struDisplayPara; +}NET_DVR_CARDINFO, *LPNET_DVR_CARDINFO; + +//¼ļ +typedef struct +{ + char sFileName[100];//ļ + NET_DVR_TIME struStartTime;//ļĿʼʱ + NET_DVR_TIME struStopTime;//ļĽʱ + DWORD dwFileSize;//ļĴС +}NET_DVR_FIND_DATA, *LPNET_DVR_FIND_DATA; + +//¼ļ(9000) +typedef struct +{ + char sFileName[100];//ļ + NET_DVR_TIME struStartTime;//ļĿʼʱ + NET_DVR_TIME struStopTime;//ļĽʱ + DWORD dwFileSize;//ļĴС + char sCardNum[32]; + BYTE byLocked;//9000豸֧,1ʾļѾ,0ʾļ + BYTE byFileType; //ļ:0ʱ¼,1-ƶ 2 + //3-|ƶ 4-&ƶ 5- 6-ֶ¼,7𶯱8-9-ܱ10-PIR11-߱12-ȱ,14-ܽͨ¼ + BYTE byRes[2]; +}NET_DVR_FINDDATA_V30, *LPNET_DVR_FINDDATA_V30; + +//¼ļ(cvr) +typedef struct +{ + char sFileName[100];//ļ + NET_DVR_TIME struStartTime;//ļĿʼʱ + NET_DVR_TIME struStopTime;//ļĽʱ + DWORD dwFileSize;//ļĴС + char sCardNum[32]; + BYTE byLocked;//9000豸֧,1ʾļѾ,0ʾļ + BYTE byFileType; //ļ:0ʱ¼,1-ƶ 2 + //3-|ƶ 4-&ƶ 5- 6-ֶ¼,7𶯱8-9-ܱ10-PIR11-߱12-ȱ,14-ܽͨ¼ + BYTE byQuickSearch; //0:ͨѯ1٣ѯ + BYTE byRes; + DWORD dwFileIndex; //ļ + BYTE byStreamType; + BYTE byRes1[127]; +}NET_DVR_FINDDATA_V40, *LPNET_DVR_FINDDATA_V40; + +typedef struct tagNET_DVR_FINDDATA_V50 +{ + char sFileName[100]; + NET_DVR_TIME_SEARCH struStartTime; + NET_DVR_TIME_SEARCH struStopTime; + NET_DVR_ADDRESS struAddr; //ƬڵĵַϢȺطʱõ + DWORD dwFileSize; //ļС //ڴļʱbyBigFileTypeΪ1ֵ + BYTE byLocked; //ļǷ1ļ0ļδ + BYTE byFileType; //ļͣV40ͬ + BYTE byQuickSearch; //0- ͨѯ1- ٣ѯ + BYTE byStreamType; //ͣ0- 1- 2- + DWORD dwFileIndex; //ļ + char sCardNum[32]; // + DWORD dwTotalLenH; // ڴļʱܳȣ32ֽ + DWORD dwTotalLenL; // ڴļʱܳȣ32ֽ + BYTE byBigFileType; // 0ΪͨƬ1Ϊļ + BYTE byRes[247]; +}NET_DVR_FINDDATA_V50, *LPNET_DVR_FINDDATA_V50; + +//¼ļ() +typedef struct +{ + char sFileName[100];//ļ + NET_DVR_TIME struStartTime;//ļĿʼʱ + NET_DVR_TIME struStopTime;//ļĽʱ + DWORD dwFileSize;//ļĴС + char sCardNum[32]; +}NET_DVR_FINDDATA_CARD, *LPNET_DVR_FINDDATA_CARD; + + +//¼ļṹ +typedef struct +{ + LONG lChannel;//ͨ + DWORD dwFileType;//¼ļ + //ţ0xffȫ0ʱ¼,1-ƶ 23-|ƶ 4-&ƶ 5- 6-ֶ¼,7-¼10-PIR11-߱12-ȱ13-ȫ¼14-ܽͨ¼ + //ţ0xffȫ0ʱ¼1-ƶ⣬2ӽ345-6ֶ¼7𶯱8-9-ܱ10-PIR11-߱12-ȱ13-ȫ¼14-ܽͨ¼ + DWORD dwIsLocked;//Ƿ 0-ļ,1-ļ, 0xffʾļ + DWORD dwUseCardNo;//Ƿʹÿ + BYTE sCardNumber[32];// + NET_DVR_TIME struStartTime;//ʼʱ + NET_DVR_TIME struStopTime;//ʱ +}NET_DVR_FILECOND, *LPNET_DVR_FILECOND; + +//̨ѡŴС(˽ ר) +typedef struct +{ + int xTop; //ʼx + int yTop; //y + int xBottom; //x + int yBottom; //y + int bCounter; // +}NET_DVR_POINT_FRAME, *LPNET_DVR_POINT_FRAME; + +//Խ +typedef struct tagNET_DVR_COMPRESSION_AUDIO +{ + BYTE byAudioEncType; //Ƶ 0-OggVorbis(G722.1);1-G711_U;2-G711_A;5-MP2L2;6-G726;7-AAC,8-PCM;9-G722.1.C;12-AAC_LC;13-AAC_LD;14-Opus;15-MP3;16-ADPCM + BYTE byAudioSamplingRate;//Ƶ 0-Ĭϣ1-16kHZ2-32kHZ3-48kHZ, 4- 44.1kHZ,5-8kHZ + BYTE byAudioBitRate;// Ƶ ο BITRATE_ENCODE_INDEX + BYTE byres[4];//ﱣƵѹ + BYTE bySupport;//bySupport Bit0ʾ Mp2l2ǰ4ֽڵĺʾƵݳ +}NET_DVR_COMPRESSION_AUDIO, *LPNET_DVR_COMPRESSION_AUDIO; + +//2009-7-22 + + +#define IW_ESSID_MAX_SIZE 32 +#define WIFI_WEP_MAX_KEY_COUNT 4 +#define WIFI_WEP_MAX_KEY_LENGTH 33 +#define WIFI_WPA_PSK_MAX_KEY_LENGTH 63 +#define WIFI_WPA_PSK_MIN_KEY_LENGTH 8 +#define WIFI_MAX_AP_COUNT 20 +#define WIFI_WPA_PSK_MAX_HEXKEY_LENGTH 68 //WPA16Կ󳤶 + +typedef struct tagNET_DVR_AP_INFO +{ + char sSsid[IW_ESSID_MAX_SIZE]; + DWORD dwMode; /* 0 mange ģʽ;1 ad-hocģʽμNICMODE */ + DWORD dwSecurity; /*0 ܣ1 wepܣ2 wpa-psk;3 wpa-Enterprise;4-WPA2_PSKμWIFISECURITY*/ + DWORD dwChannel; /*1-11ʾ11ͨ*/ + DWORD dwSignalStrength; /*0-100źΪǿ*/ + DWORD dwSpeed; /*,λ0.01mbps*/ +}NET_DVR_AP_INFO,*LPNET_DVR_AP_INFO; + +typedef struct tagNET_DVR_AP_INFO_LIST +{ + DWORD dwSize; + DWORD dwCount; /*AP20*/ + NET_DVR_AP_INFO struApInfo[WIFI_MAX_AP_COUNT]; +}NET_DVR_AP_INFO_LIST,*LPNET_DVR_AP_INFO_LIST; + +typedef struct tagNET_DVR_WIFIETHERNET +{ + char sIpAddress[16]; /*IPַ*/ + char sIpMask[16]; /**/ + BYTE byMACAddr[MACADDR_LEN]; /*ַֻʾ*/ + BYTE byCloseWifi; //Ƿرwifiӣ0-رգ1-ر + BYTE bRes; + DWORD dwEnableDhcp; /*Ƿdhcp 0 1*/ + DWORD dwAutoDns; /*dhcpǷԶȡdns,0Զȡ 1ԶȡdhcpĿǰԶȡdns*/ + char sFirstDns[16]; /*һdns*/ + char sSecondDns[16]; /*ڶdns*/ + char sGatewayIpAddr[16]; /* صַ*/ + BYTE bRes2[8]; +}NET_DVR_WIFIETHERNET,*LPNET_DVR_WIFIETHERNET; + +typedef struct tagNET_DVR_WIFI_CFG_EX +{ + NET_DVR_WIFIETHERNET struEtherNet; /*wifi*/ + char sEssid[IW_ESSID_MAX_SIZE]; /*SSID*/ + DWORD dwMode; /* 0 mange ģʽ;1 ad-hocģʽμ*/ + DWORD dwSecurity; /*0-;1-WEP;2-WPA-personal; 3-WPA-enterprise;4-WPA2-personal;5-WPA2-enterprise */ + union + { + struct + { + DWORD dwAuthentication;/*0 -ʽ 1-ʽ*/ + DWORD dwKeyLength;/* 0 -64λ1- 128λ2-152λ*/ + DWORD dwKeyType;/*0 16;1 ASCI */ + DWORD dwActive;/*0 0---3ʾһԿ*/ + char sKeyInfo[WIFI_WEP_MAX_KEY_COUNT][WIFI_WEP_MAX_KEY_LENGTH]; + }wep; + struct + { + DWORD dwKeyLength;/*8-63ASCIIַ*/ + char sKeyInfo[WIFI_WPA_PSK_MAX_KEY_LENGTH]; + BYTE byEncryptType; /*WPA/WPA2ģʽ¼,0-AES, 1-TKIP*/ + char sNewKeyInfo[WIFI_WPA_PSK_MAX_HEXKEY_LENGTH/*68*/];//Կ֧8-63ASCIIַԼ64ʮַԿ + //byKeyTypeΪ0ʱsKeyInfobyKeyTypeΪ1ʱsNewKeyInfo + //Կͣ0 ~ Կֻ֧ͣ8-63ASCIIַ1 ~Կ֧ͣ8-63ASCIIַԼ64ʮַԿ + BYTE byKeyType; + BYTE byRes[7]; + }wpa_psk; + struct + { + BYTE byEncryptType; /*,0-AES, 1-TKIP*/ + BYTE byAuthType; //֤ͣ0-EAP_TTLS,1-EAP_PEAP,2-EAP_TLS + BYTE byRes[2]; + union + { + struct + { + BYTE byEapolVersion; //EAPOL汾0-汾11-汾2 + BYTE byAuthType; //ڲ֤ʽ0-PAP1-MSCHAPV2 + BYTE byRes1[2]; + BYTE byAnonyIdentity [NAME_LEN]; // + BYTE byUserName[NAME_LEN]; //û + BYTE byPassword[NAME_LEN]; // + BYTE byRes[44]; + }EAP_TTLS; //WPA-enterprise/WPA2-enterprisģʽ + struct + { + BYTE byEapolVersion; //EAPOL汾0-汾11-汾2 + BYTE byAuthType; //ڲ֤ʽ0-GTC1-MD52-MSCHAPV2 + BYTE byPeapVersion; //PEAP汾0-汾01-汾1 + BYTE byPeapLabel; //PEAPǩ0-ϱǩ1-±ǩ + BYTE byAnonyIdentity[NAME_LEN]; // + BYTE byUserName[NAME_LEN]; //û + BYTE byPassword[NAME_LEN]; // + BYTE byRes[44]; + }EAP_PEAP; //WPA-enterprise/WPA2-enterprisģʽ + struct + { + BYTE byEapolVersion; //EAPOL汾0-汾11-汾2 + BYTE byRes1[3]; + BYTE byIdentity[NAME_LEN]; // + BYTE byPrivateKeyPswd[NAME_LEN]; //˽Կ + BYTE byRes[76]; + }EAP_TLS; + }auth_param; + }wpa_wpa2; //WPA-enterprise/WPA2-enterprisģʽ + }key; +}NET_DVR_WIFI_CFG_EX,*LPNET_DVR_WIFI_CFG_EX; + +//wifiýṹ +typedef struct tagNET_DVR_WIFI_CFG +{ + DWORD dwSize; + NET_DVR_WIFI_CFG_EX struWifiCfg; +}NET_DVR_WIFI_CFG,*LPNET_DVR_WIFI_CFG; + +//wifi״̬ +typedef struct tagNET_DVR_WIFI_CONNECT_STATUS +{ + DWORD dwSize; + BYTE byCurStatus; //1-ӣ2-δӣ3- + BYTE byRes1[3]; // + DWORD dwErrorCode; // byCurStatus = 2ʱЧ,1-û,2-޴·,3-δ֪ + BYTE byRes[244]; +}NET_DVR_WIFI_CONNECT_STATUS,*LPNET_DVR_WIFI_CONNECT_STATUS; + +//wifiģʽ +typedef struct tagNET_DVR_WIFI_WORKMODE +{ + DWORD dwSize; + DWORD dwNetworkInterfaceMode; /*0 Զлģʽ1 ģʽ*/ +}NET_DVR_WIFI_WORKMODE,*LPNET_DVR_WIFI_WORKMODE; + +//ṹ궨 +#define VCA_MAX_POLYGON_POINT_NUM 10 //֧10Ķ +#define MAX_RULE_NUM 8 // +#define MAX_RULE_NUM_V42 16 //չ +#define MAX_TARGET_NUM 30 //Ŀ +#define MAX_CALIB_PT 6 //궨 +#define MIN_CALIB_PT 4 //С궨 +#define MAX_TIMESEGMENT_2 2 //ʱ +#define DATA_INDEX_LEN 64 //ˮ +#define MAX_DEV_DATAINDEX_LEN 64 //豸ˮ +#define MAX_TRAFFIC_PICTURE_NUM 8 //ͨͼƬ +#define MAX_LICENSE_LEN 16 //ƺ󳤶 +#define MAX_LICENSE_LEN_EX 32 //ƺ󳤶 +#define MAX_CARDNO_LEN 48 //󳤶 2013-11-04 +#define MAX_OPERATE_INDEX_LEN 32 //󳤶2014-03-03 +#define MAX_PLATE_NUM 3 //Ƹ +#define MAX_MASK_REGION_NUM 4 //ĸ +#define MAX_SEGMENT_NUM 6 //궨Ŀ +#define MIN_SEGMENT_NUM 3 //궨СĿ +#define MAX_REL_SNAPCHAN_NUM 3 //ץͼͨ +#define MAX_PIC_SWITCH_STORAGE_SERVER 64 //ƴ洢洢ͼƬ +#define MAX_INFO_SWITCH_STORAGE_SERVER 64 //ƴ洢洢󸽼Ϣ +#define RTMP_URL_LEN 128 //RTMP URL +#define MAX_ID_LEN_128 128 //ļID +#define MAX_DEBUGCMD_LEN 1024 //豸󳤶 +#define MAX_DEBUGINFO_LEN 1400 //豸Ϣ󳤶 +#define MAX_VEHICLE_ID_LEN 32 //ʶ +#define LEN_PROPERTY 128 +typedef struct +{ + DWORD dwSize; //αij, + NET_DVR_TIME_EX strStartTime; //ʼʱ + NET_DVR_TIME_EX strStopTime; //ʱ + char sLicense[MAX_LICENSE_LEN_EX/*32*/]; //ƺ + DWORD dwChannel; + BYTE byRegion; + BYTE byRes[127]; // ֵ 0-1-ŷ(Europe Region)2-(Russian Region)3-ŷ&˹(EU&CIS) , 4-жMiddle East0xff- +}NET_DVR_VEHICLE_INFO_COND, *LPNET_DVR_VEHICLE_INFO_COND; + +typedef struct +{ + DWORD dwSize; + DWORD dwIndex;// + BYTE byDeviceID[DEVICE_ID_LEN/*48*/]; //豸 + BYTE byBelieve;//Ŷȣ0-100 + BYTE byDir;//0-壬1-2-3-δ֪ + BYTE byLineID;// + BYTE byRes1; + NET_DVR_TIME_EX struSnapTime;//ץʱ + char sLicense[MAX_LICENSE_LEN_EX/*32*/]; //ƺ + BYTE byMonitoringSiteID[MONITORSITE_ID_LEN /*48*/]; //ʾ + BYTE byCountry; // ֵöCOUNTRY_INDEX֧֡COUNTRY_ALL = 0xff, //ALL ȫ + BYTE byMatchingResult;//ƥ0-1-2-ֹ3- + BYTE byArea; //ʡݣڲö٣ EMI_AREA + BYTE byPlateType; // ο VCA_PLATE_TYPE + char sDeviceName[NAME_LEN/*32*/]; //豸 + BYTE byPlateColor; //ɫ ο VCA_PLATE_COLOR + BYTE byPlateSize; //Ƴߴ磬0~δ֪1~long, 2~short(жʹ) + BYTE byRes2[2]; + char sPlateCategory[MAX_CATEGORY_LEN/*8*/]; //ƸϢ, СϢ(Ŀǰֻж֧) + char sPlateImageURL[URL_LEN_V40/*256*/]; //СͼURL + char sEffectiveTime[ISO_8601_LEN/*32*/]; //ϢЧʱ䣬ʹISO8601 timeʽ磺2009-11-14T15:27Z + BYTE byRes[176]; +}NET_DVR_VEHICLE_INFO_CFG, *LPNET_DVR_VEHICLE_INFO_CFG; + +//ܿϢ +#define MAX_VCA_CHAN 16//ͨ +typedef struct tagNET_VCA_CTRLINFO +{ + BYTE byVCAEnable; //Ƿ + BYTE byVCAType; //ͣVCA_CHAN_ABILITY_TYPE + BYTE byStreamWithVCA; //ǷϢ + BYTE byMode; //ģʽATMʱVCA_CHAN_MODE_TYPE ,TFSʱTFS_CHAN_MODE_TYPE + BYTE byControlType; //ͣλʾ0-1- + // byControlType &1 ǷץĹ + BYTE byPicWithVCA ;// ץͼĿϢ(Ŀ)0-ӣĬϣ1-ӣ + BYTE byRes[2]; //Ϊ0 +}NET_VCA_CTRLINFO, * LPNET_VCA_CTRLINFO; + +//ܿϢṹ +typedef struct tagNET_VCA_CTRLCFG +{ + DWORD dwSize; + NET_VCA_CTRLINFO struCtrlInfo[MAX_VCA_CHAN]; //Ϣ,0Ӧ豸ʼͨ + BYTE byRes[16]; +}NET_VCA_CTRLCFG, * LPNET_VCA_CTRLCFG; + +//豸 +typedef struct tagNET_VCA_DEV_ABILITY +{ + DWORD dwSize; //ṹ + BYTE byVCAChanNum; //ͨ + BYTE byPlateChanNum; //ͨ + BYTE byBBaseChanNum; //Ϊ + BYTE byBAdvanceChanNum; //Ϊ߼ + BYTE byBFullChanNum; //Ϊ + BYTE byATMChanNum; //ATM + BYTE byPDCChanNum; //ͳͨ + BYTE byITSChanNum; //ͨ¼ͨ + BYTE byBPrisonChanNum; //Ϊ()ͨ + BYTE byFSnapChanNum; //ץͨ + BYTE byFSnapRecogChanNum; //ץĺʶͨ + BYTE byFRetrievalChanNum; // + BYTE bySupport; //λΪ0ʾ֧֣1ʾ֧ + //bySupport & 0x1ʾǷ֧ 2012-3-22 + //bySupport & 0x2ʾǷ֧128·ȡչ2012-12-27 + BYTE byFRecogChanNum; //ʶͨ + BYTE byBPPerimeterChanNum; //Ϊ(ܽ)ͨ + BYTE byTPSChanNum; //ͨյͨ + BYTE byTFSChanNum; //·Υȡ֤ͨ + BYTE byFSnapBFullChanNum; //ץĺ쳣Ϊͨ + BYTE byHeatMapChanNum; //ȶͼͨ + BYTE bySmartVehicleNum; //SMART¼+ͨ + BYTE bySmartHVTNum; //SMART¼+мͨ + BYTE bySmartNum; //SMART¼ + BYTE byVehicleNum; //ͨ + BYTE bySmartRoadDetectionNum ; // SMART¼+·ͨ + BYTE bySmartFaceDetectionNum ; // SMART¼+ͨ + BYTE bySmartHeatMapNum ; // SMART¼+ȶͼͨ + BYTE byHumanRecognitionNum; //ʶͨ + BYTE byEdcationStudentNum; //¼ѧ&&ѧͳƣֵ֧ͨ + BYTE byRoadDetectionNum;//·ͨ + BYTE byPersonDensityDetection; //Աܶȼͨ + BYTE bySafetyHelmetDetection; //ȫñͨ + BYTE byPerimeterCapture;//ܽץͨ + BYTE byHeelPDC;//бͨ + BYTE by12MPLiveView;// 1200W@20fpsԤ4000*3000 + BYTE byTeacherBehaviorDetectNum; //¼ʦΪ⣩ֵ֧ͨ + BYTE byMixedTargetDetection;//Ŀͨ + BYTE byFaceContrast;//ȶԼͨ + BYTE byCityManagement;//ǻ۳ǹܼͨ + BYTE byMixedTargetDetectionSmart;//Ŀ+Smart¼ + BYTE byRes; +}NET_VCA_DEV_ABILITY, *LPNET_VCA_DEV_ABILITY; + + +//쳣Ϊ +typedef enum _VCA_ABILITY_TYPE_ +{ + TRAVERSE_PLANE_ABILITY = 0x01, //Խ + ENTER_AREA_ABILITY = 0x02, // + EXIT_AREA_ABILITY = 0x04, //뿪 + INTRUSION_ABILITY = 0x08, // + LOITER_ABILITY = 0x10, //ǻ + LEFT_TAKE_ABILITY = 0x20, //Ʒȡ + PARKING_ABILITY = 0x40, //ͣ + RUN_ABILITY = 0x80, //ƶ + HIGH_DENSITY_ABILITY = 0x100, //Աۼ + LF_TRACK_ABILITY = 0x200, // + VIOLENT_MOTION_ABILITY = 0x400, //˶ + REACH_HIGHT_ABILITY = 0x800, //ʸ߼ + GET_UP_ABILITY = 0x1000, // + LEFT_ABILITY = 0x2000, //Ʒ + TAKE_ABILITY = 0x4000, //Ʒȡ + LEAVE_POSITION = 0x8000, // + TRAIL_ABILITY = 0x10000, //β + KEY_PERSON_GET_UP_ABILITY = 0x20000, //صԱ + STANDUP_ABILITY = 0x40000, // + FALL_DOWN_ABILITY = 0x80000, // + AUDIO_ABNORMAL_ABILITY = 0x100000, //ǿͻ + ADV_REACH_HEIGHT_ABILITY = 0x200000, //ʸ + TOILET_TARRY_ABILITY = 0x400000, //޳ʱ + YARD_TARRY_ABILITY = 0x800000, //ŷ糡 + ADV_TRAVERSE_PLANE_ABILITY = 0x1000000, //߾ + LECTURE_ABILITY = 0x2000000, //ڿ + ANSWER_ABILITY = 0x4000000, //ش + HUMAN_ENTER_ABILITY = 0x10000000, //˿ATM ,ֻATM_PANELģʽ֧ + OVER_TIME_ABILITY = 0x20000000, //ʱ,ֻATM_PANELģʽ֧ + STICK_UP_ABILITY = 0x40000000, //ֽ + INSTALL_SCANNER_ABILITY = 0x80000000 //װ +}VCA_ABILITY_TYPE; + +typedef enum _VCA_ABILITY_TYPE_EX_ +{ + PEOPLENUM_CHANGE_ABILITY = 0x00000002, //仯 + SPACING_CHANGE_ABILITY = 0x00000004, //仯 + EVENT_COMBINED_ABILITY = 0x00000008, //¼ + EVENT_SIT_QUIETLY = 0x00000010, //һ + EVENT_HIGH_DENSITY_STATUS_ABILITY = 0x00000020, //Աۼ״̬ + EVENT_RUNNING = 0x00000040, // + EVENT_RETENTION = 0x00000080, // + EVENT_TEACHER_WRITING = 0x00000100, // + EVENT_FAKECARD = 0x00000200 //α쿨 +}VCA_ABILITY_TYPE_EX; + +//ͨ +typedef enum _VCA_CHAN_ABILITY_TYPE_ +{ + VCA_BEHAVIOR_BASE = 1, //쳣Ϊ + VCA_BEHAVIOR_ADVANCE = 2, //쳣Ϊ߼ + VCA_BEHAVIOR_FULL = 3, //쳣Ϊ + VCA_PLATE = 4, // + VCA_ATM = 5, //ATM + VCA_PDC = 6, //ͳ + VCA_ITS = 7, // ͨ¼ + VCA_BEHAVIOR_PRISON = 8, //쳣Ϊ() + VCA_FACE_SNAP = 9, //ץ + VCA_FACE_SNAPRECOG = 10, //ץĺʶ + VCA_FACE_RETRIEVAL = 11, // + VCA_FACE_RECOG = 12, //ʶ + VCA_BEHAVIOR_PRISON_PERIMETER = 13, // 쳣Ϊ (ܽ) + VCA_TPS = 14, //ͨյ + VCA_TFS = 15, //·Υȡ֤ + VCA_BEHAVIOR_FACESNAP = 16, //ץĺ쳣Ϊ + VCA_HEATMAP = 17, //ȶͼ + VCA_SMART_VEHICLE_DETECTION = 18, // SMART¼+ + VCA_SMART_HVT_DETECTION = 19, // SMART¼+м + VCA_SMART_EVENT = 20, // SMART¼ + VCA_VEHICLE_DETECTION = 21, // + VCA_SMART_ROAD_DETECTION = 22, // SMART¼+· + VCA_SMART_FACE_DETECTION = 23, // SMART¼+ + VCA_SMART_HEATMAP = 24, // SMART¼+ȶͼ + VCA_HUMAN_RECOGNITION = 25 , // ʶ + VCA_EDUCATION_STUDENT_DETECTION = 26, //¼ѧ&&ѧͳƣ + VCA_ROAD_DETECTION = 27, //· + VCA_PERSON_DENSITY_DETECTION = 28, //Աܶȼ + VCA_PERIMETER_CAPTURE = 29, //ܽץ + VCA_SAFETY_HELMET_DETECTION = 30, //ȫñ + VCA_HEEL_PDC = 31, //б + VCA_12MPLIVE_VIEW = 32, // 1200W@20fpsԤ4000*3000 + VCA_TEACHER_BEHAVIOR_DETECTION = 33, //ʦΪ + VCA_MIXED_TARGET_DETECTION = 34, //Ŀ + VCA_FACE_CONTRAST = 35, //Աȼ(ͬʱ֧ץļԱȹܣ㷨IJͬ㷨ȶΪģȷÿαȶԳɹĿ겻ʺ϶ԱԸĿץġ) + VCA_CITY_MANAGEMENT = 36, //ǻ۳ǹ + VCA_MIXED_TARGET_DETECTION_SMART = 37 //ĿSmart +}VCA_CHAN_ABILITY_TYPE; + +//ATMģʽ(ATM) +typedef enum _VCA_CHAN_MODE_TYPE_ +{ + VCA_ATM_PANEL = 0, //ATM + VCA_ATM_SURROUND = 1, //ATM + VCA_ATM_FACE = 2, //ATM + VCA_ATM_SAFETYCABIN = 3 //ATM +}VCA_CHAN_MODE_TYPE; + +//ͨȡ֤TFSͨģʽ(TFS) +typedef enum _TFS_CHAN_MODE_TYPE_ +{ + TFS_CITYROAD = 0, //TFS е· + TFS_FREEWAY = 1 //TFS ٵ· +}TFS_CHAN_MODE_TYPE; + +//쳣Ϊⳡģʽ +typedef enum _BEHAVIOR_SCENE_MODE_TYPE_ +{ + BEHAVIOR_SCENE_DEFAULT = 0, //ϵͳĬ + BEHAVIOR_SCENE_WALL = 1, //Χǽ + BEHAVIOR_SCENE_INDOOR = 2 // +}BEHAVIOR_SCENE_MODE_TYPE; + +//ģʽ +typedef enum _BEHAVIOR_PRISON_MODE_TYPE_ +{ + BEHAVIOR_PRISON = 0, // + BEHAVIOR_HEARING = 1, //Ѷ + BEHAVIOR_RECFIELD = 2 //ŷ糡 +}BEHAVIOR_PRISON_MODE_TYPE,LPBEHAVIOR_PRISON_MODE_TYPE; + + +//ͨ +typedef struct tagNET_VCA_CHAN_IN_PARAM +{ + BYTE byVCAType; //VCA_CHAN_ABILITY_TYPEöֵ + BYTE byMode; //ģʽATM ʱVCA_CHAN_MODE_TYPE,TFSʱTFS_CHAN_MODE_TYPE,VCA_TYPE Ϊͨ¼ʱTRAFFIC_SCENE_MODE + BYTE byRes[2]; //Ϊ0 +}NET_VCA_CHAN_IN_PARAM, *LPNET_VCA_CHAN_IN_PARAM; + + +//Ϊṹ +typedef struct tagNET_VCA_BEHAVIOR_ABILITY +{ + DWORD dwSize; //ṹ + DWORD dwAbilityType; //ֵ֧ͣλʾVCA_ABILITY_TYPE + BYTE byMaxRuleNum; // + BYTE byMaxTargetNum; //Ŀ + BYTE bySupport; // ֵ֧Ĺ λʾ + // bySupport & 0x01 ֱ֧궨 + BYTE byRes[5]; //Ϊ0 + DWORD dwAbilityTypeEx; //ֵ֧ͣλʾVCA_ABILITY_TYPE_EX +}NET_VCA_BEHAVIOR_ABILITY, *LPNET_VCA_BEHAVIOR_ABILITY; + +//ݸ² +typedef struct tagNET_DVR_SCENE_CHANGE_UPDATE_PARAM +{ + DWORD dwSize; + BYTE byIDCount; //ʵID + BYTE byRes1[3]; + BYTE byStreamID[MAX_STREAM_ID_NUM][STREAM_ID_LEN]; + BYTE byRes[256]; +}NET_DVR_SCENE_CHANGE_UPDATE_PARAM, *LPNET_DVR_SCENE_CHANGE_UPDATE_PARAM; + +// ͨṹ +typedef struct tagNET_DVR_ITS_ABILITY +{ + DWORD dwSize; // ṹС + DWORD dwAbilityType; // ֵ֧б ITS_ABILITY_TYPE + BYTE byMaxRuleNum; // + BYTE byMaxTargetNum; //Ŀ + BYTE byRes[10]; // +}NET_DVR_ITS_ABILITY, *LPNET_DVR_ITS_ABILITY; + +/***********************************end*******************************************/ + +/************************************ܲṹ*********************************/ +//ܹýṹ +//ֵһ,ֵΪǰİٷֱȴС, ΪСλ + +//쳣Ϊ¼ +typedef enum _VCA_EVENT_TYPE_ +{ + VCA_TRAVERSE_PLANE = 0x1, //Խ + VCA_ENTER_AREA = 0x2, //Ŀ,֧ + VCA_EXIT_AREA = 0x4, //Ŀ뿪,֧ + VCA_INTRUSION = 0x8, //ܽ,֧ + VCA_LOITER = 0x10, //ǻ,֧ + VCA_LEFT_TAKE = 0x20, //Ʒȡ,֧ + VCA_PARKING = 0x40, //ͣ,֧ + VCA_RUN = 0x80, //ƶ,֧ + VCA_HIGH_DENSITY = 0x100, //Աۼ,֧ + VCA_VIOLENT_MOTION = 0x200, //˶ + VCA_REACH_HIGHT = 0x400, //ʸ߼ + VCA_GET_UP = 0x800, // + VCA_LEFT = 0x1000, //Ʒ + VCA_TAKE = 0x2000, //Ʒȡ + VCA_LEAVE_POSITION = 0x4000, // + VCA_TRAIL = 0x8000, //β + VCA_KEY_PERSON_GET_UP = 0x10000, //صԱ + VCA_STANDUP = 0x20000, // + VCA_FALL_DOWN = 0x80000, //ؼ + VCA_AUDIO_ABNORMAL = 0x100000, //ǿͻ + VCA_ADV_REACH_HEIGHT = 0x200000, //ʸ + VCA_TOILET_TARRY = 0x400000, //޳ʱ + VCA_YARD_TARRY = 0x800000, //ŷ糡 + VCA_ADV_TRAVERSE_PLANE = 0x1000000, //߾ + VCA_LECTURE = 0x2000000, //ڿ + VCA_ANSWER = 0x4000000, //ش + VCA_HUMAN_ENTER = 0x10000000, //˿ATM ֻATM_PANELģʽ֧ + VCA_OVER_TIME = 0x20000000, //ʱ ֻATM_PANELģʽ֧ + VCA_STICK_UP = 0x40000000, //ֽ,֧ + VCA_INSTALL_SCANNER = 0x80000000 //װ,֧ +}VCA_EVENT_TYPE; + +//쳣Ϊ¼չ +typedef enum _VCA_RULE_EVENT_TYPE_EX_ +{ + ENUM_VCA_EVENT_TRAVERSE_PLANE = 1, //Խ + ENUM_VCA_EVENT_ENTER_AREA = 2, //Ŀ,֧ + ENUM_VCA_EVENT_EXIT_AREA = 3, //Ŀ뿪,֧ + ENUM_VCA_EVENT_INTRUSION = 4, //ܽ,֧ + ENUM_VCA_EVENT_LOITER = 5, //ǻ,֧ + ENUM_VCA_EVENT_LEFT_TAKE = 6, //Ʒȡ,֧ + ENUM_VCA_EVENT_PARKING = 7, //ͣ,֧ + ENUM_VCA_EVENT_RUN = 8, //ƶ,֧ + ENUM_VCA_EVENT_HIGH_DENSITY = 9, //Աۼ,֧ + ENUM_VCA_EVENT_VIOLENT_MOTION = 10, //˶ + ENUM_VCA_EVENT_REACH_HIGHT = 11, //ʸ߼ + ENUM_VCA_EVENT_GET_UP = 12, // + ENUM_VCA_EVENT_LEFT = 13, //Ʒ + ENUM_VCA_EVENT_TAKE = 14, //Ʒȡ + ENUM_VCA_EVENT_LEAVE_POSITION = 15, // + ENUM_VCA_EVENT_TRAIL = 16, //β + ENUM_VCA_EVENT_KEY_PERSON_GET_UP = 17, //صԱ + ENUM_VCA_EVENT_STANDUP = 18, // + ENUM_VCA_EVENT_FALL_DOWN = 20, //ؼ + ENUM_VCA_EVENT_AUDIO_ABNORMAL = 21, //ǿͻ + ENUM_VCA_EVENT_ADV_REACH_HEIGHT = 22, //ʸ + ENUM_VCA_EVENT_TOILET_TARRY = 23, //޳ʱ + ENUM_VCA_EVENT_YARD_TARRY = 24, //ŷ糡 + ENUM_VCA_EVENT_ADV_TRAVERSE_PLANE = 25, //߾ + ENUM_VCA_EVENT_LECTURE = 26, //ڿΣḶ̌ + ENUM_VCA_EVENT_ANSWER = 27, //ش⣨Ḷ̌ + ENUM_VCA_EVENT_HUMAN_ENTER = 29, //˿ATM,ֻATM_PANELģʽ֧ + ENUM_VCA_EVENT_OVER_TIME = 30, //ʱ,ֻATM_PANELģʽ֧ + ENUM_VCA_EVENT_STICK_UP = 31, //ֽ,֧ + ENUM_VCA_EVENT_INSTALL_SCANNER = 32, //װ,֧ + ENUM_VCA_EVENT_PEOPLENUM_CHANGE = 35, //仯¼ + ENUM_VCA_EVENT_SPACING_CHANGE = 36, //仯¼ + ENUM_VCA_EVENT_COMBINED_RULE = 37, //Ϲ¼ + ENUM_VCA_EVENT_SIT_QUIETLY = 38, //һ¼ + ENUM_VCA_EVENT_HIGH_DENSITY_STATUS= 39, //Աۼ״̬ + ENUM_VCA_EVENT_RUNNING = 40, //ܼ + ENUM_VCA_EVENT_RETENTION = 41, // + ENUM_VCA_EVENT_BLACKBOARD_WRITE = 42, // + ENUM_VCA_EVENT_SITUATION_ANALYSIS = 43, //̬Ʒ + ENUM_VCA_EVENT_PLAY_CELLPHONE = 44, //ֻ + ENUM_VCA_EVENT_DURATION = 45, // + ENUM_VCA_EVENT_FAKECARD = 46 //α쿨 +} VCA_RULE_EVENT_TYPE_EX; + +//洩Խ +typedef enum _VCA_CROSS_DIRECTION_ +{ + VCA_BOTH_DIRECTION, // ˫ + VCA_LEFT_GO_RIGHT, // + VCA_RIGHT_GO_LEFT // +}VCA_CROSS_DIRECTION; + +//߽ṹ +typedef struct tagNET_VCA_LINE +{ + NET_VCA_POINT struStart; // + NET_VCA_POINT struEnd; //յ +}NET_VCA_LINE, *LPNET_VCA_LINE; + +//ͽṹ +typedef struct tagNET_VCA_POLYGON +{ + DWORD dwPointNum; //Ч ڵ33һΪЧ߽ΪЧ + NET_VCA_POINT struPos[VCA_MAX_POLYGON_POINT_NUM]; //α߽,ʮ +}NET_VCA_POLYGON, *LPNET_VCA_POLYGON; + +// +typedef struct tagNET_VCA_TRAVERSE_PLANE +{ + NET_VCA_LINE struPlaneBottom; //ױ + VCA_CROSS_DIRECTION dwCrossDirection; //Խ: 0-˫1-ң2-ҵ + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byPlaneHeight; //߶ + /* + Ŀֶ֧꣬ѡ嶨Ϊ + 0~Ŀ꣨ʾĿ꣬Ŀ궼м⣩ + 0x01 ~ ˣ + 0x02 ~ + 0x04 ~ + ֶֶ֧ѡλȡֵ3ʾ1+2. + */ + BYTE byDetectionTarget; + BYTE byPriority;//ȼ,0~,1~,2~ + BYTE byAlarmConfidence; //Ŷ, 0-,1-ϵ,2-ϸ,3- + BYTE byRecordConfidence; //¼Ŷ, 0-,1-ϵ,2-ϸ,3- + BYTE byRes2[34]; // +}NET_VCA_TRAVERSE_PLANE, *LPNET_VCA_TRAVERSE_PLANE; + +typedef struct tagNET_VCA_SIT_QUIETLY +{ + NET_VCA_POLYGON struRegion;//Χ + //򴥷˳0-˳򴥷1-˳򴥷 + DWORD dwDuration; //ʱ λs Χ1-3600 + BYTE byRes[4]; +} NET_VCA_SIT_QUIETLY, *LPNET_VCA_SIT_QUIETLY; + +///뿪 +typedef struct tagNET_VCA_AREA +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE bySensitivity; //ȲΧ[1,5] + /* + Ŀֶ֧꣬ѡ嶨Ϊ + 0~Ŀ꣨ʾĿ꣬Ŀ궼м⣩ + 0x01 ~ ˣ + 0x02 ~ + 0x04 ~ + ֶֶ֧ѡλȡֵ3ʾ1+2. + */ + BYTE byDetectionTarget; + BYTE byPriority;//ȼ,0~,1~,2~ + BYTE byRes[5]; +}NET_VCA_AREA, *LPNET_VCA_AREA; + +//ݱӳʱʶдͼƬIOһ£1뷢һ +//ֲ +typedef struct tagNET_VCA_INTRUSION +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDuration; //Ϊ¼ʱֵ: 1-120룬5룬жЧʱ ATMϵͳдļֵΪ 1-1000 + BYTE bySensitivity; //ȲΧ[1-100] + BYTE byRate; //ռȣδĿߴĿռıأһΪ + /* + Ŀֶ֧꣬ѡ嶨Ϊ + 0~Ŀ꣨ʾĿ꣬Ŀ궼м⣩ + 0x01 ~ ˣ + 0x02 ~ + 0x04 ~ + ֶֶ֧ѡλȡֵ3ʾ1+2. + */ + BYTE byDetectionTarget; + BYTE byPriority;//ȼ,0~,1~,2~ + BYTE byAlarmConfidence; //Ŷ, 0-,1-ϵ,2-ϸ,3- + BYTE byRecordConfidence; //¼Ŷ, 0-,1-ϵ,2-ϸ,3- +}NET_VCA_INTRUSION, *LPNET_VCA_INTRUSION; + +//ǻ +typedef struct tagNET_VCA_LOITER +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDuration; //ʱֵ1-120룬10 + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byRes[1]; + DWORD dwLoiterDistance; //гֵܾ100-5000Ĭ1000cm +}NET_VCA_LOITER, *LPNET_VCA_LOITER; + +//Ʒ/Ʒȡ +typedef struct tagNET_VCA_TAKE_LEFT +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDuration; //ʱֵ1-120룬10 + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byRes[5]; +}NET_VCA_TAKE_LEFT, *LPNET_VCA_TAKE_LEFT; + +//ͣ +typedef struct tagNET_VCA_PARKING +{ + NET_VCA_POLYGON struRegion; //Χ + WORD wDuration; //ʱֵ1-100룬10 + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byRes[5]; +}NET_VCA_PARKING, *LPNET_VCA_PARKING; + +//ƶ +typedef struct tagNET_VCA_RUN +{ + NET_VCA_POLYGON struRegion; //Χ + float fRunDistance; //˿ƶ, Χ: [0.1, 1.00] ģʽ ʵģʽ(1,20)m/s + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byMode; // 0 ģʽ 1 ʵģʽ + /* + Ŀֶ֧꣬ѡ嶨Ϊ + 0~Ŀ꣨ʾĿ꣬Ŀ궼м⣩ + 0x01 ~ ˣ + 0x02 ~ + 0x04 ~ + ֶֶ֧ѡλȡֵ3ʾ1+2. + */ + BYTE byDetectionTarget; + BYTE byRes; +}NET_VCA_RUN, *LPNET_VCA_RUN; + +//Աۼ +typedef struct tagNET_VCA_HIGH_DENSITY +{ + NET_VCA_POLYGON struRegion; //Χ + float fDensity; //ۼ, Χ: [0.1, 1.0] + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byRes; // ֽ + WORD wDuration; // Աۼֵ 20-360s +}NET_VCA_HIGH_DENSITY, *LPNET_VCA_HIGH_DENSITY; + +//˶ +typedef struct tagNET_VCA_VIOLENT_MOTION +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDuration; //˶ֵ1-50 + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byMode; //0-Ƶģʽ1-Ƶģʽ2-Ƶģʽ + BYTE byRes[4]; // +}NET_VCA_VIOLENT_MOTION, *LPNET_VCA_VIOLENT_MOTION; + +// ʸ߲ +typedef struct tagNET_VCA_REACH_HIGHT +{ + NET_VCA_LINE struVcaLine; //ʸ߾ + WORD wDuration; //ʸֵ߱1-120 + BYTE byRes[6]; // ֽ +}NET_VCA_REACH_HIGHT, *LPNET_VCA_REACH_HIGHT; + +// 𴲲 +typedef struct tagNET_VCA_GET_UP +{ + NET_VCA_POLYGON struRegion; //Χ + WORD wDuration; //𴲱ֵ1-100 + BYTE byMode; //ģʽ,0-ͨģʽ,1-ߵģʽ,2-ͨģʽ + BYTE bySensitivity; //ȲΧ[1,10] + BYTE byRes[4]; //ֽ +}NET_VCA_GET_UP, * LPNET_VCA_GET_UP; + +// Ʒ +typedef struct tagNET_VCA_LEFT +{ + NET_VCA_POLYGON struRegion; // Χ + WORD wDuration; // Ʒֵ 10-100 + BYTE bySensitivity; // ȲΧ[1,5] + BYTE byRes[5]; // ֽ +}NET_VCA_LEFT, *LPNET_VCA_LEFT; + +// Ʒȡ +typedef struct tagNET_VCA_TAKE +{ + NET_VCA_POLYGON struRegion; // Χ + WORD wDuration; // Ʒȡֵ10-100 + BYTE bySensitivity; // ȲΧ[1,5] + BYTE byRes[5]; // ֽ +}NET_VCA_TAKE, *LPNET_VCA_TAKE; + +typedef struct tagNET_VCA_OVER_TIME +{ + NET_VCA_POLYGON struRegion; // Χ + WORD wDuration; // ʱֵ 4s-60000s + BYTE byRes[6]; // ֽ +}NET_VCA_OVER_TIME, *LPNET_VCA_OVER_TIME; + +typedef struct tagNET_VCA_HUMAN_ENTER +{ + DWORD dwRes[23]; //ֽ +}NET_VCA_HUMAN_ENTER, *LPNET_VCA_HUMAN_ENTER; + +//ֽ +typedef struct tagNET_VCA_STICK_UP +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDuration; //ʱֵ4-60룬10 + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byRes[5]; +}NET_VCA_STICK_UP, *LPNET_VCA_STICK_UP; + +// +typedef struct tagNET_VCA_SCANNER +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDuration; //ʱ䣺4-60 + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byRes[5]; +}NET_VCA_SCANNER, *LPNET_VCA_SCANNER; + +//¼ +typedef struct tagNET_VCA_LEAVE_POSITION +{ + NET_VCA_POLYGON struRegion; //Χ + WORD wLeaveDelay; //˱ʱ䣬λs + WORD wStaticDelay; //˯ʱ䣬λs + BYTE byMode; //ģʽ0-¼1-˯¼2-˯¼3-ڸڣԱصλ + BYTE byPersonType; //ֵͣ0-ֵڣ1-˫ֵ + BYTE byOnPosition; //ڸ1-10Ĭ1 + BYTE bySensitivity; //ȲΧ[1,5] +}NET_VCA_LEAVE_POSITION, *LPNET_VCA_LEAVE_POSITION; + +//β +typedef struct tagNET_VCA_TRAIL +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wRes; /* */ + BYTE bySensitivity; /* ȲΧ[1,5] */ + BYTE byRes[5]; +}NET_VCA_TRAIL, *LPNET_VCA_TRAIL; + +//ز +typedef struct tagNET_VCA_FALL_DOWN +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDuration; /* ¼ֵ 1-60s*/ + BYTE bySensitivity; /* ȲΧ[1,5] */ + BYTE byHeightThreshold; //߶ֵΧ[0,250]Ĭ90λ + BYTE byRes[4]; +}NET_VCA_FALL_DOWN, *LPNET_VCA_FALL_DOWN; + +// +typedef struct tagNET_VCA_STANDUP +{ + NET_VCA_POLYGON struRegion; //Χ + BYTE bySensitivity; //ȲΧ[1,100] + BYTE byHeightThreshold; //߶ֵΧ[0,250]Ĭ130λ + WORD wDuration; //¼ֵ[1,3600]Ĭ2λ + BYTE byRes[4]; // +}NET_VCA_STANDUP, *LPNET_VCA_STANDUP; + + +//仯 +typedef struct tagNET_VCA_PEOPLENUM_CHANGE +{ + NET_VCA_POLYGON struRegion; //Χ + BYTE bySensitivity; //ȲΧ[1,100] + BYTE byPeopleNumThreshold; //ֵΧ[0,5]Ĭ1 + BYTE byDetectMode; //ⷽʽֵȽϡ1-ڣ2-Сڣ3-ڣ4- + BYTE byNoneStateEffective; //״̬ǷЧ0-Ч1-Ч + WORD wDuration; //ʱֵ[1,3600]Ĭ2λ + BYTE byPeopleNum; //ֻϱ豸0ʾֱ֧ϱ0xffʾΪ0 + BYTE byRes; // +}NET_VCA_PEOPLENUM_CHANGE, *LPNET_VCA_PEOPLENUM_CHANGE; + +//仯 +typedef struct tagNET_VCA_SPACING_CHANGE +{ + NET_VCA_POLYGON struRegion; //Χ + float fSpacingThreshold; //ֵΧ[0,10.0]Ĭ1.0λ + BYTE bySensitivity; //ȲΧ[1,100] + BYTE byDetectMode; //ⷽʽֵȽϡ1-ڣ2-С + WORD wDuration; //ʱֵ[1,3600]Ĭ2λ +}NET_VCA_SPACING_CHANGE, *LPNET_VCA_SPACING_CHANGE; + + +//ǿͻ +typedef struct tagNET_VCA_AUDIO_ABNORMAL +{ + WORD wDecibel; //ǿ + BYTE bySensitivity; //ȲΧ[1,100] + BYTE byAudioMode; //ģʽ0-ȼ⣬1-ֱֵ⣬2-ֱֵ + BYTE byEnable; //ʹܣǷ(ǿͻ䣬) + BYTE byThreshold; //ֵ[1,100] + BYTE byRes[54]; // +}NET_VCA_AUDIO_ABNORMAL, *LPNET_VCA_AUDIO_ABNORMAL; + +//ǿ 2014-03-21 +typedef struct tagNET_DVR_AUDIO_STEEP_DROP +{ + BYTE bySensitivity; /* ȲΧ[1,100] */ + BYTE byEnable; //ʹܣǷ(ǿͻ䣬) + BYTE byRes[6]; +}NET_DVR_AUDIO_STEEP_DROP, *LPNET_DVR_AUDIO_STEEP_DROP; + + +typedef struct tagNET_DVR_AUDIO_EXCEPTION +{ + DWORD dwSize; + BYTE byEnableAudioInException;//ʹܣǷ + BYTE byRes1[3]; + NET_VCA_AUDIO_ABNORMAL struAudioAbnormal; + NET_DVR_SCHEDTIME struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; //ʱ + NET_DVR_HANDLEEXCEPTION_V40 struHandleException; //쳣ʽ + DWORD dwMaxRelRecordChanNum ; //¼ͨ ֻ֧ + DWORD dwRelRecordChanNum ; //¼ͨ ʵֵ֧ + DWORD byRelRecordChan[MAX_CHANNUM_V30]; + NET_DVR_AUDIO_STEEP_DROP struAudioSteepDrop; //ǿ + BYTE byRes2[24]; +}NET_DVR_AUDIO_EXCEPTION, *LPNET_DVR_AUDIO_EXCEPTION; + +typedef struct tagNET_VCA_TOILET_TARRY +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDelay; //޳ʱʱ[1,3600]λ + BYTE byRes[6]; +}NET_VCA_TOILET_TARRY, *LPNET_VCA_TOILET_TARRY; + +typedef struct tagNET_VCA_YARD_TARRY +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDelay; //ŷ糡ʱ[1,120]λ + BYTE byRes[6]; +}NET_VCA_YARD_TARRY, *LPNET_VCA_YARD_TARRY; + +typedef struct tagNET_VCA_ADV_REACH_HEIGHT +{ + NET_VCA_POLYGON struRegion; //ʸ + DWORD dwCrossDirection; //Խ(VCA_CROSS_DIRECTION): 0-˫1-2-ҵ + BYTE byRes[4]; // ֽ +}NET_VCA_ADV_REACH_HEIGHT, * LPNET_VCA_ADV_REACH_HEIGHT; + +typedef struct tagNET_VCA_ADV_TRAVERSE_PLANE +{ + NET_VCA_POLYGON struRegion; // + DWORD dwCrossDirection; //Խ(VCA_CROSS_DIRECTION): 0-˫1-2-ҵ + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byRes[3]; //ֽ +} NET_VCA_ADV_TRAVERSE_PLANE,*LPNET_VCA_ADV_TRAVERSE_PLANE; + +typedef struct tagNET_VCA_PLAY_CELLPHONE +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDuration; //ֻʱʱ[1,600], Ĭ20 + BYTE byRes[6]; //ֽ +}NET_VCA_PLAY_CELLPHONE, *LPNET_VCA_PLAY_CELLPHONE; + +typedef struct tagNET_VCA_LECTURE +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDuration; //Ϊ¼ʱֵ: 1-10룬1룬жЧʱ + BYTE bySensitivity; //ȲΧ[1-100] + BYTE byAlarmState;//ֶֻν治ʾ0-,1-ʼ,2- + BYTE byTrackingMode ;//ģʽ0-Զ(Ĭ) , 1-ˮƽ, 2-ֱ + BYTE byZoomMode;//䱶ģʽ, 0-̶(Ĭ), 1-Զ + BYTE byZoomOver;//0-,1-䱶λ(ϴ¼Ϊлж) + BYTE byTrackStatus;//״̬ 0-1-ʼڿΣAȫ 2-ڣ2,д3 -ʧ2,ȫ +}NET_VCA_LECTURE, *LPNET_VCA_LECTURE; + +typedef struct tagNET_VCA_ANSWER +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE bySensitivity;//ȲΧ[1-100] + BYTE byAlarmState;//ֶֻν治ʾ0-,1-ʼ,2- + BYTE byZoomOver;//0-,1-䱶λ(ϴ¼Ϊлж) + BYTE byAnswerStudent;//0-1-ѧ2-ѧ3-ѧ,4-ѧ, 5-ѧ߶ + BYTE byRes[4]; // +}NET_VCA_ANSWER, *LPNET_VCA_ANSWER; + +//ṹ +typedef struct tagNET_VCA_RELATE_RULE_PARAM +{ + BYTE byRuleID; // 0-ʾ + BYTE byRes; // + WORD wEventType; //Ϊ¼ͣοVCA_RULE_EVENT_TYPE_EX +}NET_VCA_RELATE_RULE_PARAM,*LPNET_VCA_RELATE_RULE_PARAM; + +typedef struct tagNET_VCA_COMBINED_RULE_ +{ + //򴥷˳0-˳򴥷1-˳򴥷 + BYTE byRuleSequence; + BYTE byRes[7]; + DWORD dwMinInterval; //Сʱλ + DWORD dwMaxInterval; //ʱλ + NET_VCA_RELATE_RULE_PARAM struRule1Raram;//1 + NET_VCA_RELATE_RULE_PARAM struRule2Raram;//2 + BYTE byRes1[36]; +} NET_VCA_COMBINED_RULE, *LPNET_VCA_COMBINED_RULE; + +//¼ +typedef struct tagNET_VCA_BLACKBOARD_WRITE +{ + NET_VCA_POLYGON struRegion;//Χ򣬱ви + BYTE byTeacherState;//ʦ״̬0~ʦд1~ʦȫ2~̨״̬ + BYTE byWritingState;//״̬0~鿪ʼ1~ + BYTE byWritingArea;//0~飬1~ߣ2~ұ + BYTE byRes[5]; +}NET_VCA_BLACKBOARD_WRITE, *LPNET_VCA_BLACKBOARD_WRITE; + +//Աۼ״̬ +typedef struct tagNET_VCA_HIGH_DENSITY_STATUS +{ + NET_VCA_POLYGON struRegion; //Χ + float fDensity; //ۼ, Χ: [0.1, 1.0] + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byRes[3]; // ֽ +}NET_VCA_HIGH_DENSITY_STATUS, *LPNET_VCA_HIGH_DENSITY_STATUS; + +//ܼ +typedef struct _NET_VCA_RUNNING_ +{ + NET_VCA_POLYGON struRegion; //Χ + DWORD dwSpeed; //ٶȣΧ[1,10] + WORD wDuration; // ʱֵ + BYTE byRunMode; //ģʽ0-,1˱,2:˱ + BYTE byRes; +}NET_VCA_RUNNING, *LPNET_VCA_RUNNING; + +// +typedef struct tagNET_VCA_RETENTION +{ + NET_VCA_POLYGON struRegion; // Χ + WORD wDuration; //ֵʱ䣨60-3600룩Ĭ1800 + BYTE byRes[6]; // ֽ +}NET_VCA_RETENTION, *LPNET_VCA_RETENTION; + +// ̬Ʒ +typedef struct tagNET_VCA_SITUATION_ANALYSIS +{ + NET_VCA_POLYGON struRegion; // Χ + WORD wPeopleNum; // + BYTE byRes[6]; // ֽ +}NET_VCA_SITUATION_ANALYSIS, *LPNET_VCA_SITUATION_ANALYSIS; + +// +typedef struct _NET_VCA_DURATION_ +{ + WORD wRelationEventType; //οVCA_RULE_EVENT_TYPE_EX + BYTE byRes[90]; +}NET_VCA_DURATION, *LPNET_VCA_DURATION; + +//α쿨 +typedef struct tagNET_VCA_FAKECARD +{ + NET_VCA_POLYGON struRegion; // Χ + BYTE bySensitivity; // ȲС1,5,Ĭ3 + BYTE byRes[7]; // ֽ +}NET_VCA_FAKECARD, *LPNET_VCA_FAKECARD; + +//¼ +typedef union tagNET_VCA_EVENT_UNION +{ + DWORD uLen[23]; // + NET_VCA_TRAVERSE_PLANE struTraversePlane; //Խ + NET_VCA_AREA struArea; ///뿪 + NET_VCA_INTRUSION struIntrusion; //ֲ + NET_VCA_LOITER struLoiter; //ǻ + NET_VCA_TAKE_LEFT struTakeTeft; //Ʒ/Ʒȡ + NET_VCA_PARKING struParking; //ͣ + NET_VCA_RUN struRun; //ƶ + NET_VCA_HIGH_DENSITY struHighDensity; //Աۼ + NET_VCA_VIOLENT_MOTION struViolentMotion; //˶ + NET_VCA_REACH_HIGHT struReachHight; //ʸ + NET_VCA_GET_UP struGetUp; // + NET_VCA_LEFT struLeft; //Ʒ + NET_VCA_TAKE struTake; // Ʒȡ + NET_VCA_HUMAN_ENTER struHumanEnter; //Ա + NET_VCA_OVER_TIME struOvertime; //ʱ + NET_VCA_STICK_UP struStickUp; //ֽ + NET_VCA_SCANNER struScanner; // + NET_VCA_LEAVE_POSITION struLeavePos; //ڲ + NET_VCA_TRAIL struTrail; //β + NET_VCA_FALL_DOWN struFallDown; //ز + NET_VCA_AUDIO_ABNORMAL struAudioAbnormal; //ǿͻ + NET_VCA_ADV_REACH_HEIGHT struReachHeight; //ʸ߲ + NET_VCA_TOILET_TARRY struToiletTarry; //޳ʱ + NET_VCA_YARD_TARRY struYardTarry; //ŷ糡 + NET_VCA_ADV_TRAVERSE_PLANE struAdvTraversePlane;//߾ + NET_VCA_LECTURE struLecture; //ڿ¼ + NET_VCA_ANSWER struAnswer; //ش¼ + NET_VCA_STANDUP struStandUp; // + NET_VCA_PEOPLENUM_CHANGE struPeopleNumChange; //仯 + NET_VCA_SPACING_CHANGE struSpacingChange; //仯 + NET_VCA_COMBINED_RULE struCombinedRule; //Ϲ + NET_VCA_SIT_QUIETLY struSitQuietly; //һ + NET_VCA_HIGH_DENSITY_STATUS struHighDensityStatus; //Աۼ״̬ + NET_VCA_RUNNING struRunning; //ܲ + NET_VCA_RETENTION struRetention;// + NET_VCA_BLACKBOARD_WRITE struBlackboardWrite; // + NET_VCA_SITUATION_ANALYSIS struSituationAnalysis; //̬Ʒ + NET_VCA_PLAY_CELLPHONE struPlayCellphone; //ֻ + NET_VCA_DURATION struDruation;// + NET_VCA_FAKECARD struFakeCard; //α쿨 +}NET_VCA_EVENT_UNION, *LPNET_VCA_EVENT_UNION; + +// ߴ +typedef enum _VCA_SIZE_FILTER_MODE_ +{ + IMAGE_PIX_MODE, //شС + REAL_WORLD_MODE, //ʵʴС + DEFAULT_MODE // Ĭģʽ +}SIZE_FILTER_MODE; +//ߴ +typedef struct tagNET_VCA_SIZE_FILTER +{ + BYTE byActive; //Ƿ񼤻ߴ 0- 0- + BYTE byMode; //ģʽSIZE_FILTER_MODE + BYTE byRes[2]; //0 + NET_VCA_RECT struMiniRect; //СĿ,ȫ0ʾ + NET_VCA_RECT struMaxRect; //Ŀ,ȫ0ʾ +}NET_VCA_SIZE_FILTER, *LPNET_VCA_SIZE_FILTER; + +//ṹ +typedef struct tagNET_VCA_ONE_RULE +{ + BYTE byActive; //Ƿ񼤻,0-,0- + BYTE byRes[7]; //Ϊ0ֶ + BYTE byRuleName[NAME_LEN]; // + VCA_EVENT_TYPE dwEventType; //쳣Ϊ¼ + NET_VCA_EVENT_UNION uEventParam; //쳣Ϊ¼ + NET_VCA_SIZE_FILTER struSizeFilter; //ߴ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_2];//ʱ + NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //ʽ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ,Ϊ1ʾͨ +}NET_VCA_ONE_RULE, *LPNET_VCA_ONE_RULE; + +//쳣Ϊýṹ +typedef struct tagNET_VCA_RULECFG +{ + DWORD dwSize; //ṹ + BYTE byPicProType; //ʱͼƬʽ 0- 0-ϴ + BYTE byUpLastAlarm; //2011-04-06 Ƿϴһεı + BYTE byPicRecordEnable; /*2012-3-1ǷͼƬ洢, 0-, 1-*/ + BYTE byRes; + NET_DVR_JPEGPARA struPictureParam; //ͼƬṹ + NET_VCA_ONE_RULE struRule[MAX_RULE_NUM]; // +}NET_VCA_RULECFG, *LPNET_VCA_RULECFG; + +//ǰ豸ַϢܷDZʾǰ豸ĵַϢ豸ʾĵַ +/* +豸ģͨ(IPC/DVR/DVS/IVMS)ʱֶд豸IPַ˿ڣbyChannelbyIvmsChannel Ϊǰģͨ +eg: +struDevIP = ģͨӦ豸IPַ +wPort = ģͨӦ豸Ķ˿ +byChannel = Ӧģͨͨ +byIvmsChannel = Ӧģͨͨ + + 豸ͨ(DVR/DVS/IVMS)ʱֶдͨ豸IPַ˿ڣbyChannelΪͨ豸ͨţbyIvmsChannelΪͨ + eg: + struDevIP = ͨ豸IPַ + wPort = ͨ豸Ķ˿ + byChannel = ͨ豸ͨ + byIvmsChannel = ͨ +*/ +typedef struct tagNET_VCA_DEV_INFO +{ + NET_DVR_IPADDR struDevIP; //ǰ豸ַ + WORD wPort; //ǰ豸˿ںţ + BYTE byChannel; //ǰ豸ͨ + BYTE byIvmsChannel; // Ivms ͨ +}NET_VCA_DEV_INFO, *LPNET_VCA_DEV_INFO; + +typedef struct tagNET_DVR_TARGET_LEFT_REGION_ALARM +{ + DWORD dwSize; //ṹС + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + BYTE byTargetType;//Ŀ 0-ЧĿ꣬1-ʦ 2-ѧ + BYTE byLeftDirection;//Ŀ뿪0-,1-,2-,3-,4- + BYTE byTargetStatus;//0-() + BYTE byRes[125]; +}NET_DVR_TARGET_LEFT_REGION_ALARM,*LPNET_DVR_TARGET_LEFT_REGION_ALARM; + +/* ͼƬͼƬϢ */ +typedef struct +{ + /*20-˾ ˾ӳ̿ʼ, 21-˾绰, 22-˾ƣͼʻ, 23-˾ûĿǰڣ,24-˾ⲻͷ, 25-˾ϵȫ, + 26-˾ʰƷ, 27-˾Ƿ, 28-˾Զˮ, 29-˾, 31-˾δ*/ + DWORD dwPicType; /* ͼƬ */ + char *pPicBuf; /*ͼƬָ*/ + DWORD dwPicLen; /* ͼƬȣΪ0ʱʾûͼƬ */ + DWORD dwTime; /* ץͼʱ */ + char *pVideoBuf; /*Ƶָ, xxx.mp4*/ + DWORD dwVideoLen; /* ץͼƵijȣ0ʾûбƵ 20180518 */ + BYTE byRes[12]; /* Ԥ */ +}NET_DVR_DBD_PICTURE_INFO, *LPNET_DVR_DBD_PICTURE_INFO; + +/* λϢ */ +typedef struct +{/* 24 bytes */ + DWORD bValid; /* λϢǷЧ */ + DWORD dwLongitude; /* = ʵʶ*3600*100+ʵʷ*60*100+ʵ*100 */ + DWORD dwLatitude; /* γ = ʵʶ*3600*100+ʵʷ*60*100+ʵ*100 */ + DWORD dwVehicleSpeed; /* ٶ = ʵٶ*1000*100 */ + DWORD dwVehicleDirection; /* ٶȷ = ʵʷ*100 */ + DWORD dwAltitude; /* θ߶() */ +}NET_DVR_DBD_POSITION_INFO, *LPNET_DVR_DBD_POSITION_INFO; + +/* ״̬Ϣ */ +typedef struct +{/* 24 bytes */ + BYTE bySmoke; /* */ + BYTE byPhone; /* 绰 */ + BYTE byTiredDriving; /* ƣͼʻ */ + BYTE byNoVisualFront; /* ûĿǰ */ + BYTE byNoHead; /* */ + BYTE byWithoutBelt; /* ϵȫ */ + BYTE byPickingUpThing; /* ʰƷ */ + BYTE byYawn; /* Ƿ */ + BYTE byEatOrDrink; /* Ժ */ + BYTE byChatting; /* */ + BYTE byTampering; /* ڵIPC */ + BYTE byWithoutUniform; /* δ */ + BYTE byDriverCmpFail; /* ʶ쳣*/ + BYTE byDriverChange; /* ʻԱ*/ + BYTE byDriveLongTime; /*ʱʻ*/ + BYTE byInfraredBlockingSunglasses; /* ī */ + BYTE byOutOfWheel; /* 0-1-뷽̣2-˫뷽 */ + BYTE byRes[7]; +}NET_DVR_DBD_ALARM_STATE, *LPNET_DVR_DBD_ALARM_STATE; + +/* ʻΪϢ */ +typedef struct +{ + DWORD dwSize; /* ϴṹС 4*/ + BYTE byChannel; /* ͨ 1*/ + BYTE byLevel; /*ȼ,ǰֻ1*/ + BYTE byRes1[2]; /* ֽ 3*/ + NET_VCA_DEV_INFO struIpcInfo; /* IPͨϢ 24*/ + NET_DVR_DBD_POSITION_INFO struPosInfo; /* λϢ 24*/ + NET_DVR_DBD_PICTURE_INFO struPicInfo; /* ͼƬϢ*/ + NET_DVR_DBD_ALARM_STATE struAlarmState; /* ״̬Ϣ 24*/ + BYTE byRes2[20]; /* 20*/ +}NET_DVR_DBD_ALRAM_INFO, *LPNET_DVR_DBD_ALRAM_INFO; + +/* ADASͼƬϢ */ +typedef struct +{ + DWORD dwPicType; /* ͼƬ */ + char *pPicBuf; /*ͼƬָ*/ + DWORD dwPicLen; /* ͼƬȣΪ0ʱʾûͼƬ */ + DWORD dwTime; /* ץͼʱ */ + char *pVideoBuf; /*Ƶָ, xxx.mp4*/ + DWORD dwVideoLen; /* ץͼƵijȣ0ʾûбƵ 20180518 */ + BYTE byRes[12]; /* Ԥ */ +} NET_DVR_ADAS_PICTURE_INFO, *LPNET_DVR_ADAS_PICTURE_INFO; + +/* ADASλϢ */ +typedef struct +{/* 24 bytes */ + DWORD dwValid; /* λϢǷЧ */ + DWORD dwLongitude; /* = ʵʶ*3600*100+ʵʷ*60*100+ʵ*100 */ + DWORD dwLatitude; /* γ = ʵʶ*3600*100+ʵʷ*60*100+ʵ*100 */ + DWORD dwVehicleSpeed; /* ٶ = ʵٶ*1000*100 */ + DWORD dwVehicleDirection; /* ٶȷ = ʵʷ*100 */ + DWORD dwAltitude; /* θ߶() */ +}NET_DVR_ADAS_POSITION_INFO, *LPNET_DVR_ADAS_POSITION_INFO; + +/* ADAS״̬Ϣ */ +typedef struct +{/* 24 bytes */ + BYTE dwFcw; /* ǰײ0ޣ1¼ */ + BYTE dwLdw; /* ƫ룬0ޣ1ƫ룬2Ҳƫ */ + BYTE dwHmw; /* ʾ0ޣ1¼ */ + BYTE dwPcw; /* ײ0ޣ1¼ */ + BYTE dwBsd; /* ä⣬0ޣ1¼ , 2-Ҳä3-ä, 4-ä*/ + BYTE byAcc; /* ٣0ޣ1¼ */ + BYTE byBrake; /*٣0ޣ1¼ */ + BYTE byTurn; /* ת䣬0ޣ1Ҽת䣬2ת */ + BYTE byRollover; /* ෭0ޣ1¼ */ + BYTE byNoCourtesy; /* δˣ0ޣ1¼ */ + BYTE byTsr; /*ͨʶ棬0ޣ1٣2޸ߣ3޿ */ + BYTE byRes[13]; +}NET_DVR_ADAS_ALARM_STATE, *LPNET_DVR_ADAS_ALARM_STATE; + +/* ADASʻΪϢ */ +typedef struct +{ + DWORD dwSize; /* ϴṹС 4*/ + BYTE byChannel; /* ͨ 1*/ + BYTE byRes1[3]; /* ֽ 3*/ + NET_VCA_DEV_INFO struIpcInfo; /* IPͨϢ 28*/ + NET_DVR_ADAS_POSITION_INFO struPosInfo; /* λϢ 24*/ + NET_DVR_ADAS_PICTURE_INFO struPicInfo; /* ͼƬϢ*/ + NET_DVR_ADAS_ALARM_STATE struAlarmState; /* ״̬Ϣ 24*/ + BYTE byRes2[20]; /* 20*/ +}NET_DVR_ADAS_ALRAM_INFO, *LPNET_DVR_ADAS_ALRAM_INFO; + +/* гʵʱ */ +typedef struct +{ + DWORD dwSize; /* ϴṹС */ + DWORD dwSpeedValue; /* ٶֵ */ + DWORD dwSpeedPulse; /* */ + BYTE byUpgPercent; /* ȣ0-100ʧܷ255ÿοʼʱҪȽ0űʾ׼ʼ 20180508չ*/ + BYTE byRes1[3]; + DWORD dwVideoLostChans; /*λʾ0ʾ1-ʾƵʧһλʾһͨ*/ + BYTE byRes2[44]; +}NET_DVR_VEH_REALTIME_DATA_INFO, *LPNET_DVR_VEH_REALTIME_DATA_INFO; + +#define VCA_ATTEND_MAX_PIC_NUM 3 //¼ͼƬ +#define VCA_ATTEND_DRIVER_NAME_LEN 64 //Ϣ˾ֳ +#define VCA_ATTEND_CARD_ID_LEN 32 //Ϣ˾֤볤 +#define VCA_ATTEND_MAX_ALARM_ID_LEN 32 //¼Ψһŵ󳤶 + +typedef struct +{ + DWORD dwPicLen; //ͼƬȣΪ0ʱʾûͼƬ + char *pPicBuf; //ͼƬָ + BYTE byRes[12]; //Ԥ +}NET_DVR_VCA_ATTEND_PICDATA, *LPNET_DVR_VCA_ATTEND_PICDATA; + +/* ¼ͼƬϢ */ +typedef struct +{ + BYTE byPicNum; //ͼƬ + BYTE byRes1[3]; //Ԥ + NET_DVR_VCA_ATTEND_PICDATA struPicData[VCA_ATTEND_MAX_PIC_NUM]; //ͼƬ + DWORD dwVideoLen; //ץͼƵijȣ0ʾûбƵ + char *pVideoBuf; //Ƶָ + BYTE byRes[64]; //Ԥ +}NET_DVR_VCA_ATTEND_PICTURE_INFO, *LPNET_DVR_VCA_ATTEND_PICTURE_INFO; + +/* ¼ϴϢ*/ +typedef struct +{ + DWORD dwSize; // ϴṹС + BYTE byMethod; //ڷʽ 0-IC,1- + BYTE byStatus; //״̬ 0-1-ϰ,2-°ࣨ򻻰ࣩ + BYTE byCertIDType; //ʻԱ֤ͣ0-Ӫʸ֤1-֤ + BYTE byCertIDLen; //ʻԱҵʸ֤볤 + char sCertId[VCA_ATTEND_CARD_ID_LEN]; //ʻԱҵʸ֤ + DWORD dwTime; //ʱ + char sName[VCA_ATTEND_DRIVER_NAME_LEN]; //ʻԱ + char sAlarmIdNo[VCA_ATTEND_MAX_ALARM_ID_LEN]; //ʶ + NET_DVR_VCA_ATTEND_PICTURE_INFO struPicInfo; //ͼƬϢ + BYTE byRes[128]; // +}NET_DVR_VCA_ATTEND_ALARM_INFO, *LPNET_DVR_VCA_ATTEND_ALARM_INFO; + +//ߴ˲ +typedef struct tagNET_VCA_FILTER_STRATEGY +{ + BYTE byStrategy; //ߴ˲ 0 - 1-߶ȺͿȹ,2- + BYTE byRes[11]; // +}NET_VCA_FILTER_STRATEGY,*LPNET_VCA_FILTER_STRATEGY; + +//򴥷 +typedef struct tagNET_VCA_RULE_TRIGGER_PARAM +{ + BYTE byTriggerMode; //Ĵʽ0- ã1- 2- Ŀ + BYTE byTriggerPoint; //㣬ʽΪʱЧ 0- ,1-,2- + BYTE byRes1[2]; // + float fTriggerArea; //Ŀٷֱ [0,100]ʽΪĿʱЧ + BYTE byRes2[4]; // +}NET_VCA_RULE_TRIGGER_PARAM,*LPNET_VCA_RULE_TRIGGER_PARAM; + +//ṹ +typedef struct tagNET_VCA_ONE_RULE_V41 +{ + BYTE byActive; //Ƿ񼤻,0-,0- + BYTE byRes1[4]; //Ϊ0ֶ + BYTE byEventTypeFlag; //־Ϊ¼ֶεЧԣ0-dwEventTypeЧ1-wEventTypeExЧ + //עֶbyEventTypeFlagֻòʱЧ豸ȡʱֱӴwEventTypeExȡ¼ͣжϴֶεֵ + WORD wEventTypeEx; //Ϊ¼չڴֶdwEventTypeοVCA_RULE_EVENT_TYPE_EX + BYTE byRuleName[NAME_LEN]; // + VCA_EVENT_TYPE dwEventType; //Ϊ¼ͣΪ˼ݣʹwEventTypeExȡ¼ + NET_VCA_EVENT_UNION uEventParam; //쳣Ϊ¼ + NET_VCA_SIZE_FILTER struSizeFilter; //ߴ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //ʽ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ,Ϊ1ʾͨ + WORD wAlarmDelay; //ܱʱ0-5s,1-10,2-30s,3-60s,4-120s,5-300s,6-600s + BYTE byRes2[2]; // + NET_VCA_FILTER_STRATEGY struFilterStrategy; //ߴ˲ + NET_VCA_RULE_TRIGGER_PARAM struTriggerParam; //򴥷 + BYTE byRes[32]; +}NET_VCA_ONE_RULE_V41, *LPNET_VCA_ONE_RULE_V41; + +//쳣Ϊýṹ +typedef struct tagNET_VCA_RULECFG_V41 +{ + DWORD dwSize; //ṹ + BYTE byPicProType; //ʱͼƬʽ 0- 0-ϴ + BYTE byUpLastAlarm; //2011-04-06 Ƿϴһεı + BYTE byPicRecordEnable; /*2012-3-1ǷͼƬ洢, 0-, 1-*/ + BYTE byRes1; + NET_DVR_JPEGPARA struPictureParam; //ͼƬṹ + NET_VCA_ONE_RULE_V41 struRule[MAX_RULE_NUM]; // + WORD wRelSnapChan[MAX_REL_SNAPCHAN_NUM]; //ץͼͨͨʱͬʱϴͨץͼƬ0ʾֵΪͨ + BYTE byRes[26]; +}NET_VCA_RULECFG_V41, *LPNET_VCA_RULECFG_V41; + +//ṹ +typedef struct NET_VCA_ONE_RULE_V42_ +{ + BYTE byActive; //Ƿ񼤻, 0-񣬷0- + BYTE byEventPriority;//¼ȼ 0-ͣ1-У2- + BYTE byBackgroundSuppression;// 0-ر 1- 2-Ӧ + BYTE byRes1[3]; //Ϊ0ֶ + WORD wEventType; //Ϊ¼ͣοVCA_RULE_EVENT_TYPE_EX + BYTE byRuleName[NAME_LEN/*32*/]; // + NET_VCA_EVENT_UNION uEventParam; //쳣Ϊ¼ + NET_VCA_SIZE_FILTER struSizeFilter; //ߴ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + NET_DVR_HANDLEEXCEPTION_V40 struAlarmHandleType; /*ʽ*/ + //쳣ʽбŰ󶨣Ϊ0ʱʾıŷΧΪ1-64Ϊ1ʱʾıŷΧΪ65-128 ڽУ0xffffffffʾ ǰļںıЧ + DWORD dwRelRecordChan[MAX_CHANNUM_V30]; /* ¼ֽͨڵͨţʼֵ 0xffffffff*/ + //¼ͨŰ󶨣Ϊ0ʱʾͨŷΧΪ1-64Ϊ1ʱʾͨŷΧΪ65-128 ڽУ0xffffffffʾ ǰļںĹͨЧ + WORD wAlarmDelay; //ܱʱ0-5s,1-10,2-30s,3-60s,4-120s,5-300s,6-600s + BYTE byRes2[2]; // + NET_VCA_FILTER_STRATEGY struFilterStrategy; //ߴ˲ + NET_VCA_RULE_TRIGGER_PARAM struTriggerParam; //򴥷 + BYTE byRes[32]; +}NET_VCA_ONE_RULE_V42, *LPNET_VCA_ONE_RULE_V42; + + +typedef struct tagNET_DVR_PTZ_POSITION +{ + // ǷóóΪʱֶЧóλϢʱΪʹλ + BYTE byEnable; + BYTE byRes1[3]; // + BYTE byPtzPositionName[NAME_LEN]; //λ + NET_DVR_PTZPOS struPtzPos; //ptz + BYTE byRes2[40]; +}NET_DVR_PTZ_POSITION, *LPNET_DVR_PTZ_POSITION; + +//쳣Ϊýṹ +typedef struct tagNET_VCA_RULECFG_V42 +{ + DWORD dwSize; //ṹͼС + BYTE byPicProType; //ʱͼƬʽ 0- 1-ϴ + BYTE byUpLastAlarm; //Ƿϴһεı0-1- + BYTE byPicRecordEnable; //ǷͼƬ洢, 0-, 1- + BYTE byRes1; + NET_DVR_JPEGPARA struPicParam; //ͼƬṹ + NET_VCA_ONE_RULE_V42 struRule[MAX_RULE_NUM_V42 /*16*/]; /* */ + WORD wRelSnapChan[MAX_REL_SNAPCHAN_NUM]; //ץͼͨͨʱͬʱϴͨץͼƬ0ʾֵΪͨ + BYTE byTrackEnable; //Ƿ + BYTE byRes2; + NET_DVR_PTZ_POSITION struPTZPosition; //λϢ + WORD wTrackDuration; //ʱ䣬λs + WORD wIntervalTime; //αʱ䣨룩[1-7200]ĬΪ600 + WORD wHeightLimit;//Ŀ߶ޣף[0-250]ĬΪ80cmСڴ˸߶ȵĿ꽫ΪĿм + BYTE byRes[58];// +}NET_VCA_RULECFG_V42, *LPNET_VCA_RULECFG_V42; + + +//Ŀṹ +typedef struct tagNET_VCA_TARGET_INFO +{ + DWORD dwID; //ĿID ,Աۼ߱ʱΪ0 + NET_VCA_RECT struRect; //Ŀ߽ + BYTE byRes[4]; // +}NET_VCA_TARGET_INFO, *LPNET_VCA_TARGET_INFO; + +//򻯵ĹϢ, ĻϢ +typedef struct tagNET_VCA_RULE_INFO +{ + BYTE byRuleID; //ID,0-7 + BYTE bySceneID; //ID,0Ч + WORD wEventTypeEx; //Ϊ¼չڴֶdwEventTypeοVCA_RULE_EVENT_TYPE_EX + BYTE byRuleName[NAME_LEN]; // + VCA_EVENT_TYPE dwEventType; //Ϊ¼ͣΪ˼ݣʹwEventTypeExȡ¼ + NET_VCA_EVENT_UNION uEventParam;//¼ +}NET_VCA_RULE_INFO, *LPNET_VCA_RULE_INFO; + +//쳣Ϊϱṹ +typedef struct tagNET_VCA_RULE_ALARM +{ + DWORD dwSize; //ṹ + DWORD dwRelativeTime; //ʱ,ʷԭʵûã汾byRelativeTimeFlagΪ1ʱʾΪUTCʱ + DWORD dwAbsTime; //ʱ,ʷԭʵΪOSDʱ + NET_VCA_RULE_INFO struRuleInfo; //¼Ϣ + NET_VCA_TARGET_INFO struTargetInfo; //ĿϢ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + DWORD dwPicDataLen; //ͼƬij Ϊ0ʾûͼƬ0ʾýṹͼƬ*/ + BYTE byPicType; // 0-ץͼƬ 1-ԱͼƬ + BYTE byRelAlarmPicNum; //ͨͼƬ + BYTE bySmart;//IDS豸0(Ĭֵ)Smart Functiom Return 1 + BYTE byPicTransType; //ͼƬݴ䷽ʽ: 0-ƣ1-url + DWORD dwAlarmID; //IDԱʶͨϱ0ʾЧ + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byRelativeTimeFlag; //dwRelativeTimeֶǷЧ 0-Ч 1-ЧdwRelativeTimeʾUTCʱ + BYTE byAppendInfoUploadEnabled; //Ϣϴʹ 0-ϴ 1-ϴ + BYTE *pAppendInfo; //ָ򸽼ϢNET_VCA_APPEND_INFOָ룬byAppendInfoUploadEnabledΪ1ʱbyTimeDiffFlagΪ1ʱЧ + BYTE *pImage; //ָͼƬָ +}NET_VCA_RULE_ALARM, *LPNET_VCA_RULE_ALARM; + +//쳣Ϊ⸽Ϣ +typedef struct tagNET_VCA_APPEND_INFO +{ + DWORD dwSize; //ṹ + DWORD dwAppendPicLen;//ͼƬ + BYTE* pAppendPicBuff;//ͼƬָ + BYTE byAppendPicType;//ͼƬͣ0-;1-ɼͼƬ;2-ȳͼƬ; + BYTE byUID[64];//豸UID + BYTE byApplicationScene;// Ӧó 0- 1- + BYTE byRes1[2]; // + DWORD dwTargetSpeed; //״⵽Ŀٶ,λ:km/h + DWORD dwTargetDistance; //״⵽Ŀ,λ:m/ + BYTE byAlarmType;// 0-Ƶ 1-״ + BYTE byRadarChannel; //״ͨ1ʼۼ + BYTE byBrokenNetHttp; // ־λ0-شݣ1-ش + BYTE byAppendChannelType;//ͨͣ0-;1-ɼͨ;2-ȳͨ; + DWORD dwAppendChannel; //ͨͨ + BYTE byRes[44]; // +}NET_VCA_APPEND_INFO, *LPNET_VCA_APPEND_INFO; + + +//쳣ΪDSPϢӽṹ +typedef struct tagNET_VCA_DRAW_MODE +{ + DWORD dwSize; + BYTE byDspAddTarget; //ǷĿ + BYTE byDspAddRule; //Ƿӹ + BYTE byDspPicAddTarget; //ץͼǷĿ + BYTE byDspPicAddRule; //ץͼǷӹ + BYTE byRes[4]; +}NET_VCA_DRAW_MODE, *LPNET_VCA_DRAW_MODE; + +// +typedef enum tagOBJECT_TYPE_ENUM +{ + ENUM_OBJECT_TYPE_COAT = 1 // +}OBJECT_TYPE_ENUM; + +//ɫṹ +typedef struct tagNET_DVR_OBJECT_COLOR_COND +{ + DWORD dwChannel; //ͨ + DWORD dwObjType; //ͣμOBJECT_TYPE_ENUM + BYTE byRes[64]; // +}NET_DVR_OBJECT_COLOR_COND,*LPNET_DVR_OBJECT_COLOR_COND; + +//ͼƬ +typedef struct tagNET_DVR_PIC +{ + BYTE byPicType; //ͼƬͣ1-jpg + BYTE byRes1[3]; // + DWORD dwPicWidth; //ͼƬ + DWORD dwPicHeight; //ͼƬ߶ + DWORD dwPicDataLen; //ͼƬʵʴС + DWORD dwPicDataBuffLen; //ͼƬݻС + BYTE* byPicDataBuff; //ͼƬݻ + BYTE byRes2[40]; // +}NET_DVR_PIC,*LPNET_DVR_PIC; + +//ɫ +typedef union tagNET_DVR_OBJECT_COLOR_UNION +{ + NET_DVR_COLOR struColor; //ɫֵ + NET_DVR_PIC struPicture; //ͼƬ + BYTE byRes[64]; // +}NET_DVR_OBJECT_COLOR_UNION,*LPNET_DVR_OBJECT_COLOR_UNION; + +//ɫṹ +typedef struct tagNET_DVR_OBJECT_COLOR +{ + DWORD dwSize; //ṹС + BYTE byEnable; //0-ã1- + BYTE byColorMode; //ȡɫʽ1-ɫֵ2-ͼƬ + BYTE byRes1[2]; // + NET_DVR_OBJECT_COLOR_UNION uObjColor; //ɫ壬ȡֵȡɫʽ + BYTE byRes2[64]; // +}NET_DVR_OBJECT_COLOR, *LPNET_DVR_OBJECT_COLOR; + +// +typedef enum tagAREA_TYPE_ENUM +{ + ENUM_OVERLAP_REGION = 1,//ͬ + ENUM_BED_LOCATION = 2 //λ +}AREA_TYPE_ENUM; + +// +typedef struct tagNET_DVR_AUXAREA +{ + DWORD dwAreaType; //ͣμAREA_TYPE_ENUM + BYTE byEnable; //0-ã1- + BYTE byRes1[3]; // + NET_VCA_POLYGON struPolygon; // + BYTE byRes2[16]; // +}NET_DVR_AUXAREA,*LPNET_DVR_AUXAREA; + +//б +typedef struct tagNET_DVR_AUXAREA_LIST +{ + DWORD dwSize; // ṹС + NET_DVR_AUXAREA struArea[MAX_AUXAREA_NUM]; // + BYTE byRes2[64]; // +}NET_DVR_AUXAREA_LIST,*LPNET_DVR_AUXAREA_LIST; + +//ͨģʽ +typedef enum tagCHAN_WORKMODE_ENUM +{ + ENUM_CHAN_WORKMODE_INDEPENDENT = 1, //ģʽ + ENUM_CHAN_WORKMODE_MASTER = 2, //ģʽ + ENUM_CHAN_WORKMODE_SLAVE = 3 //ģʽ +}CHAN_WORKMODE_ENUM; + +//ͨģʽṹ +typedef struct tagNET_DVR_CHANNEL_WORKMODE +{ + DWORD dwSize; //ṹС + BYTE byWorkMode; //ģʽμCHAN_WORKMODE_ENUM + BYTE byRes[63]; // +}NET_DVR_CHANNEL_WORKMODE,*LPNET_DVR_CHANNEL_WORKMODE; + +//豸ͨṹ +typedef struct tagNET_DVR_CHANNEL +{ + BYTE byAddress[MAX_DOMAIN_NAME]; //豸IP + WORD wDVRPort; //˿ں + BYTE byRes1[2]; // + BYTE sUserName[NAME_LEN]; //û + BYTE sPassword[PASSWD_LEN]; // + DWORD dwChannel; //ͨ + BYTE byRes2[32]; // +}NET_DVR_CHANNEL,*LPNET_DVR_CHANNEL; + +//ͨϢ +typedef union tagNET_DVR_SLAVE_CHANNEL_UNION +{ + BYTE byRes[152]; //С + DWORD dwLocalChannel; //ͨ + NET_DVR_CHANNEL struRemoteChannel; //Զͨ +}NET_DVR_SLAVE_CHANNEL_UNION,*LPNET_DVR_SLAVE_CHANNEL_UNION; + +//ͨṹ +typedef struct tagNET_DVR_SLAVE_CHANNEL_PARAM +{ + BYTE byChanType; //ͨͣ1-ͨ2-Զͨ + BYTE byRes1[3]; // + NET_DVR_SLAVE_CHANNEL_UNION uSlaveChannel; //ͨ壬ȡֵbyChanType + BYTE byRes2[64]; // +}NET_DVR_SLAVE_CHANNEL_PARAM,*LPNET_DVR_SLAVE_CHANNEL_PARAM; + + +//ͨýṹ +typedef struct tagNET_DVR_SLAVE_CHANNEL_CFG +{ + DWORD dwSize; //ṹС + NET_DVR_SLAVE_CHANNEL_PARAM struChanParam[MAX_SLAVE_CHANNEL_NUM];//ͨ + BYTE byRes[64]; // +}NET_DVR_SLAVE_CHANNEL_CFG,*LPNET_DVR_SLAVE_CHANNEL_CFG; + +//Ƶϼ¼ +typedef enum tagVQD_EVENT_ENUM +{ + ENUM_VQD_EVENT_BLUR = 1, //ͼģ + ENUM_VQD_EVENT_LUMA = 2, //쳣 + ENUM_VQD_EVENT_CHROMA = 3, //ͼƫɫ + ENUM_VQD_EVENT_SNOW = 4, //ѩ + ENUM_VQD_EVENT_STREAK = 5, //Ƹ + ENUM_VQD_EVENT_FREEZE = 6, //涳 + ENUM_VQD_EVENT_SIGNAL_LOSS = 7, //źŶʧ + ENUM_VQD_EVENT_PTZ = 8, //̨ʧ + ENUM_VQD_EVENT_SCNENE_CHANGE = 9, //ͻ + ENUM_VQD_EVENT_VIDEO_ABNORMAL = 10, //Ƶ쳣 + ENUM_VQD_EVENT_VIDEO_BLOCK = 11, //Ƶڵ + ENUM_VQD_EVENT_CLARTY = 12, //쳣 + ENUM_VQD_EVENT_JITTER = 13, //涶 + ENUM_VQD_EVENT_FLOWERS = 14, // + ENUM_VQD_EVENT_NOISE = 15, // + ENUM_VQD_EVENT_GHOST = 16, //쳣 + ENUM_VQD_EVENT_PURPLE = 17, //ϱ + ENUM_VQD_EVENT_ICR = 18, // ICR쳣 + ENUM_VQD_EVENT_PROTECTFILM = 19 //Ĥδ˺ +}VQD_EVENT_ENUM; + +//Ƶ¼ṹ +typedef struct tagNET_DVR_VQD_EVENT_COND +{ + DWORD dwChannel; //ͨ + DWORD dwEventType; //¼ͣμVQD_EVENT_ENUM + BYTE byRes[64]; // +}NET_DVR_VQD_EVENT_COND,*LPNET_DVR_VQD_EVENT_COND; + +//Ƶ¼ +typedef struct tagNET_DVR_VQD_EVENT_PARAM +{ + BYTE byThreshold; //ֵΧ[0,100] + BYTE byTriggerMode; //1-2-δ + BYTE byUploadPic; //0-ϴͼƬ1-ϴͼƬǷϴͼƬº󶼿Դ豸ȡ¼ӦµһűͼƬμӿNET_DVR_StartDownload + BYTE byRes1; // + DWORD dwTimeInterval; //ʱΧ[0,3600] λ + BYTE byRes2[64]; // +}NET_DVR_VQD_EVENT_PARAM,*LPNET_DVR_VQD_EVENT_PARAM; + +//Ƶ¼ +typedef struct tagNET_DVR_VQD_EVENT_RULE +{ + DWORD dwSize; //ṹС + BYTE byEnable; //0-ã1- + BYTE byRes1[3]; // + NET_DVR_VQD_EVENT_PARAM struEventParam; //Ƶ¼ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //ʽ + BYTE byRelRecordChan[MAX_IVMS_IP_CHANNEL]; //¼ͨ1ʾͨ0ʾ + BYTE byRes2[128]; // +}NET_DVR_VQD_EVENT_RULE,*LPNET_DVR_VQD_EVENT_RULE; + +//׼ +typedef struct tagNET_DVR_BASELINE_SCENE +{ + DWORD dwSize; //ṹС + BYTE byEnable; //0-ã1- + BYTE byRes[63]; // +}NET_DVR_BASELINE_SCENE,*LPNET_DVR_BASELINE_SCENE; + +//׼ṹ +typedef struct tagNET_DVR_CONTROL_BASELINE_SCENE_PARAM +{ + DWORD dwSize; //ṹС + DWORD dwChannel; //ͨ + BYTE byCommand; //ͣ1-ֶαݲʹã2-»׼ + BYTE byRes[127]; // +}NET_DVR_CONTROL_BASELINE_SCENE_PARAM,*LPNET_DVR_CONTROL_BASELINE_SCENE_PARAM; + +//Ƶϱṹ +typedef struct tagNET_DVR_VQD_ALARM +{ + DWORD dwSize; //ṹС + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + DWORD dwEventType; //¼ͣοVQD_EVENT_ENUM + float fThreshold; //ֵ[0.000,1.000] + DWORD dwPicDataLen; //ͼƬȣΪ0ʾûͼƬ + BYTE *pImage; //ָͼƬָ + BYTE byRes[128]; // +}NET_DVR_VQD_ALARM,*LPNET_DVR_VQD_ALARM; + +//궨ӽṹ +typedef struct tagNET_DVR_CB_POINT +{ + NET_VCA_POINT struPoint; //궨㣬ǹ + NET_DVR_PTZPOS struPtzPos; //PTZ + BYTE byRes[8]; +}NET_DVR_CB_POINT, LPNET_DVR_CB_POINT; + +//궨ýṹ +typedef struct tagNET_DVR_TRACK_CALIBRATION_PARAM +{ + BYTE byPointNum; //Ч궨 + BYTE byRes[3]; + NET_DVR_CB_POINT struCBPoint[MAX_CALIB_PT]; //궨 +}NET_DVR_TRACK_CALIBRATION_PARAM, *LPNET_DVR_TRACK_CALIBRATION_PARAM; + +//ýṹ +typedef struct tagNET_DVR_TRACK_CFG +{ + DWORD dwSize; //ṹ + BYTE byEnable; //궨ʹ + BYTE byFollowChan; // ƵĴͨ + BYTE byDomeCalibrate; //궨1 0 + BYTE byRes; // ֽ + NET_DVR_TRACK_CALIBRATION_PARAM struCalParam; //궨 +}NET_DVR_TRACK_CFG, *LPNET_DVR_TRACK_CFG ; + +//ģʽ +typedef enum _TRACK_MODE_ +{ + MANUAL_CTRL = 0, //ֶ + ALARM_TRACK // +}TRACK_MODE; + +//ֶƽṹ +typedef struct tagNET_DVR_MANUAL_CTRL_INFO +{ + NET_VCA_POINT struCtrlPoint; + BYTE byRes[8]; +}NET_DVR_MANUAL_CTRL_INFO, *LPNET_DVR_MANUAL_CTRL_INFO ; + +//ģʽṹ +typedef struct tagNET_DVR_TRACK_MODE +{ + DWORD dwSize; //ṹ + BYTE byTrackMode; //ģʽ + BYTE byRuleConfMode; //ģʽ0-ã1-Զ + BYTE byRes[2]; //0 + union + { + DWORD dwULen[4]; + NET_DVR_MANUAL_CTRL_INFO struManualCtrl;//ֶṹ + }uModeParam; +}NET_DVR_TRACK_MODE,*LPNET_DVR_TRACK_MODE; + +typedef struct tagNET_DVR_ALARM_JPEG +{ + BYTE byPicProType; /*ʱͼƬʽ 0- 1-ϴ*/ + BYTE byRes[3]; //ֽ + NET_DVR_JPEGPARA struPicParam; /*ͼƬṹ*/ +}NET_DVR_ALARM_JPEG, *LPNET_DVR_ALARM_JPEG; + +/**********************ipc/d5.3.0********************************/ +typedef struct tagNET_DVR_PHY_RATIO +{ + DWORD dwSize; + DWORD dwPhysicsRatio;// + BYTE byRes[60]; +}NET_DVR_PHY_RATIO, *LPNET_DVR_PHY_RATIO; + +typedef struct tagNET_DVR_SLAVECAMERA_COND +{ + DWORD dwSize; + DWORD dwChannel; + BYTE byID;// ID[1,4] + BYTE byRes1[3]; + DWORD dwSceneID;// scene Id + BYTE byRes[56]; +}NET_DVR_SLAVECAMERA_COND, *LPNET_DVR_SLAVECAMERA_COND; + +typedef struct tagNET_DVR_SLAVECAMERA_CFG +{ + DWORD dwSize; + BYTE byAddressType; //0-ʵipv4 ipv6ַ 1- + // unionServerʹʵʵַ + WORD wPort; /*˿*/ + BYTE byLoginStatus; /*豸ĵ½״̬ 0-logout,1-login*/ + union + { + struct + { + BYTE szDomain[MAX_DOMAIN_NAME/*64*/];//ַ + BYTE byRes1[80]; + }struDomain; + struct + { + NET_DVR_IPADDR struIp;/*IPַ*/ //IPv4 IPv6ַ, 144ֽ + } struAddrIP; + }unionServer; //ʹṹͨbyAddressTypeֶαʾIPַ 64 + BYTE szUserName[NAME_LEN/*32*/]; /*û*/ + BYTE szPassWord[PASSWD_LEN/*16*/]; /**/ + BYTE byRes1[128]; +}NET_DVR_SLAVECAMERA_CFG, *LPNET_DVR_SLAVECAMERA_CFG; + +typedef struct tagNET_DVR_SLAVECAMERA_PARAM +{ + BYTE byLinkStatus ;//״̬ 0- δӣ1- + BYTE byRes[15]; +}NET_DVR_SLAVECAMERA_PARAM, *LPNET_DVR_SLAVECAMERA_PARAM; + +typedef struct tagNET_DVR_SLAVECAMERA_STATUS +{ + DWORD dwSize; + NET_DVR_SLAVECAMERA_PARAM struSlaveCamera[MAX_SLAVECAMERA_NUM/*8*/];//±0ʾID 1, + BYTE byRes[64]; +}NET_DVR_SLAVECAMERA_STATUS, *LPNET_DVR_SLAVECAMERA_STATUS; + +typedef struct tagNET_PTZ_INFO +{ + float fPan; + float fTilt; + float fZoom; + DWORD dwFocus;// ۽۽Χһ0-100000 + BYTE byRes[4]; +}NET_PTZ_INFO, *LPNET_PTZ_INFO; + +typedef struct tagNET_DVR_BV_CALIB_POSITION +{ + DWORD dwSize; //ṹ + NET_PTZ_INFO struInitialPos; //ʼ + NET_PTZ_INFO struAdjustPos; // + BYTE byRes[300]; // +}NET_DVR_BV_CALIB_POSITION, *LPNET_DVR_BV_CALIB_POSITION; + +typedef struct tagNET_DVR_HUMAN_CALIB_CFG +{ + DWORD dwSize; //ṹ + NET_VCA_POINT struLeftPos; // + NET_VCA_POINT struRightPos; // + BYTE byRes[300]; // +}NET_DVR_HUMAN_CALIB_CFG, *LPNET_DVR_HUMAN_CALIB_CFG; + +typedef struct tagNET_DVR_CALIB_PARAM +{ + NET_PTZ_INFO struPtzInfo; + NET_VCA_POINT struCalibCoordinates;//궨 + int iHorValue;//˫Ŀ궨 ˮƽֵ cmֶģʽЧ ˫Ŀã + int iVerValue;//˫Ŀ궨 ֱֵ cmֶģʽЧ ˫Ŀã + BYTE byRes[8]; +}NET_DVR_CALIB_PARAM, *LPNET_DVR_CALIB_PARAM; + +typedef struct tagNET_DVR_SLAVECAMERA_CALIB_CFG +{ + DWORD dwSize; + BYTE byCalibMode;//궨ģʽ: 0-,1-Զ궨, 2-ֶ궨 + BYTE byRes[3]; + //±0ʾID 1 + //ֶ궨ģʽ֧ã&&ȡԶģʽֻ֧ȡ + NET_DVR_CALIB_PARAM struCalibParam[MAX_CALIB_NUM/*6*/];//ֶֻ궨ģʽЧ + BYTE byRes1[64]; +}NET_DVR_SLAVECAMERA_CALIB_CFG, *LPNET_DVR_SLAVECAMERA_CALIB_CFG; + +typedef struct tagNET_DVR_TRACKING +{ + DWORD dwSize; //ṹ + BYTE byEnable; //ʹ 0-false,1-true + BYTE byMode; //ģʽ 0-رգ1-ֶ2-Զ + WORD wTrackingTime;//ʱ䣺[0,60]s + NET_VCA_POLYGON struRegion;//ֶĿΧ + BYTE byRes[64]; +}NET_DVR_TRACKING,*LPNET_DVR_TRACKING; + +typedef struct tagNET_DVR_SLAVECAMERA_CALIB_V50 +{ + DWORD dwSize; + BYTE byCalibMode;//궨ģʽ: 0-,1-Զ궨, 2-ֶ궨 + BYTE byRes[3]; + //±0ʾID 1 + //ֶ궨ģʽ֧ã&&ȡԶģʽֻ֧ȡ + NET_DVR_CALIB_PARAM struCalibParam[MAX_CALIB_NUM_EX/*20*/]; + BYTE byRes1[64]; +}NET_DVR_SLAVECAMERA_CALIB_V50, *LPNET_DVR_SLAVECAMERA_CALIB_V50; + +typedef struct tagNET_DVR_SLAVECAMERA_CALIB_V51 +{ + DWORD dwSize; + BYTE byCalibMode;//궨ģʽ: 0-,1-Զ궨, 2-ֶ궨 + BYTE byRes[3]; + //±0ʾID 1 + //ֶ궨ģʽ֧ã&&ȡԶģʽֻ֧ȡ + NET_DVR_CALIB_PARAM struCalibParam[MAX_CALIB_NUM_EX/*20*/]; + BYTE byRes1[512]; +}NET_DVR_SLAVECAMERA_CALIB_V51, *LPNET_DVR_SLAVECAMERA_CALIB_V51; + +//⹦ץͼṹӥĿ +typedef struct tagNET_DVR_CAPTURE_PICTURE_RESULT +{ + DWORD dwSize;//ṹС + DWORD dwReturnPicSize;//صͼƬС + BYTE byRes[256]; +}NET_DVR_CAPTURE_PICTURE_RESULT, *LPNET_DVR_CAPTURE_PICTURE_RESULT; + +typedef struct tagNET_DVR_GOTOSCENE_COND +{ + DWORD dwSize; + DWORD dwChannel; + DWORD dwSceneID;//ID + BYTE byRes[512]; +}NET_DVR_GOTOSCENE_COND, *LPNET_DVR_GOTOSCENE_COND; + +typedef struct tagNET_DVR_TRACK_INITPOSTION +{ + DWORD dwSize; + DWORD dwChannel; + BYTE byID;// ID[1,4] + BYTE byRes[127]; +}NET_DVR_TRACK_INITPOSTION, *LPNET_DVR_TRACK_INITPOSTION; + +typedef struct tagNET_DVR_MANUAL_TRACKRATIO +{ + DWORD dwSize; + BYTE byCoefficient;//ϵ[1,60] + BYTE byRes[127]; +}NET_DVR_MANUAL_TRACKRATIO, *LPNET_DVR_MANUAL_TRACKRATIO; + +/**********************ipc/d5.3.0********************************/ + +//쳣Ϊṹ +//ṹ +typedef struct tagNET_IVMS_ONE_RULE_ +{ + BYTE byActive; /* Ƿ񼤻,0-, 0- */ + BYTE byRes1[7]; //Ϊ0ֶ + BYTE byRuleName[NAME_LEN]; // + VCA_EVENT_TYPE dwEventType; //쳣Ϊ¼ + NET_VCA_EVENT_UNION uEventParam;//쳣Ϊ¼ + NET_VCA_SIZE_FILTER struSizeFilter; //ߴ + BYTE byRes2[68]; /*Ϊ0*/ +}NET_IVMS_ONE_RULE, *LPNET_IVMS_ONE_RULE; + +// ǹṹ +typedef struct tagNET_IVMS_RULECFG +{ + NET_IVMS_ONE_RULE struRule[MAX_RULE_NUM]; // +}NET_IVMS_RULECFG, *LPNET_IVMS_RULECFG; + +// IVMS쳣Ϊýṹ +typedef struct tagNET_IVMS_BEHAVIORCFG +{ + DWORD dwSize; + BYTE byPicProType; //ʱͼƬʽ 0- 0-ϴ + BYTE byRes[3]; + NET_DVR_JPEGPARA struPicParam; //ͼƬṹ + NET_IVMS_RULECFG struRuleCfg[MAX_DAYS][MAX_TIMESEGMENT];//ÿʱζӦ +} NET_IVMS_BEHAVIORCFG, *LPNET_IVMS_BEHAVIORCFG; + +//ܷȡƻӽṹ +typedef struct tagNET_IVMS_DEVSCHED +{ + NET_DVR_SCHEDTIME struTime; //ʱ + NET_DVR_PU_STREAM_CFG struPUStream; //ǰȡ +}NET_IVMS_DEVSCHED, *LPNET_IVMS_DEVSCHED; + +//ܷDzýṹ +typedef struct tagNET_IVMS_STREAMCFG +{ + DWORD dwSize; + NET_IVMS_DEVSCHED struDevSched[MAX_DAYS][MAX_TIMESEGMENT];//ʱǰȡԼϢ +} NET_IVMS_STREAMCFG, *LPNET_IVMS_STREAMCFG; + +// +typedef struct tagNET_VCA_MASK_REGION +{ + BYTE byEnable; //Ƿ񼤻, 0-񣬷0- + BYTE byRes[3]; //0 + NET_VCA_POLYGON struPolygon; //ζ +}NET_VCA_MASK_REGION, * LPNET_VCA_MASK_REGION; + +//ṹ +typedef struct tagNET_VCA_MASK_REGION_LIST +{ + DWORD dwSize; //ṹ + BYTE byRes[4]; //0 + NET_VCA_MASK_REGION struMask[MAX_MASK_REGION_NUM]; // +}NET_VCA_MASK_REGION_LIST, *LPNET_VCA_MASK_REGION_LIST; + + +//ATM +typedef struct tagNET_VCA_ENTER_REGION//ֹATM +{ + DWORD dwSize; + BYTE byEnable; //Ƿ񼤻0-񣬷0- + BYTE byRes1[3]; + NET_VCA_POLYGON struPolygon; // + BYTE byRes2[16]; +}NET_VCA_ENTER_REGION, * LPNET_VCA_ENTER_REGION; + +//IVMS +typedef struct tagNET_IVMS_MASK_REGION_LIST +{ + DWORD dwSize; //ṹ + NET_VCA_MASK_REGION_LIST struList[MAX_DAYS][ MAX_TIMESEGMENT]; +}NET_IVMS_MASK_REGION_LIST, *LPNET_IVMS_MASK_REGION_LIST; + +//IVMSATM +typedef struct tagNET_IVMS_ENTER_REGION +{ + DWORD dwSize; + NET_VCA_ENTER_REGION struEnter[MAX_DAYS][ MAX_TIMESEGMENT]; // +}NET_IVMS_ENTER_REGION, *LPNET_IVMS_ENTER_REGION; + +// ivms ͼƬϴṹ +typedef struct tagNET_IVMS_ALARM_JPEG +{ + BYTE byPicProType; + BYTE byRes[3]; + NET_DVR_JPEGPARA struPicParam; +}NET_IVMS_ALARM_JPEG, *LPNET_IVMS_ALARM_JPEG; + +// IVMS +typedef struct tagNET_IVMS_SEARCHCFG +{ + DWORD dwSize; + NET_DVR_MATRIX_DEC_REMOTE_PLAY struRemotePlay;// Զ̻ط + NET_IVMS_ALARM_JPEG struAlarmJpeg; // ϴͼƬ + NET_IVMS_RULECFG struRuleCfg; //IVMS Ϊ +}NET_IVMS_SEARCHCFG, *LPNET_IVMS_SEARCHCFG; + +//궨ṹ +typedef struct tagNET_DVR_TRACK_CALIBRATION_PARAM_V41 +{ + BYTE byPointNum; //Ч궨 + BYTE byRes[3]; // + NET_DVR_CB_POINT struCBPoint[MAX_CALIB_PT]; //궨 + NET_DVR_PTZPOS struHorizonPtzPos; //ˮƽPTZ + BYTE byRes2[256]; // +}NET_DVR_TRACK_CALIBRATION_PARAM_V41, *LPNET_DVR_TRACK_CALIBRATION_PARAM_V41; + +//豸ò +typedef struct tagNET_DVR_TRACK_DEV_PARAM_ +{ + DWORD dwSize; //ṹС + BYTE byEnable; //ô豸, 0-, 1 - + BYTE byTransMode; //ͨѶʽ0-SDK1-485 + BYTE byRes1[2]; // + NET_DVR_CHANNEL struTrackDevChan; //豸 + NET_DVR_TRACK_CALIBRATION_PARAM_V41 struCalParam; //豸궨 + BYTE byRes2[256]; // +}NET_DVR_TRACK_DEV_PARAM, *LPNET_DVR_TRACK_DEV_PARAM; +/************************************end******************************************/ +//NAS֤ +typedef struct tagNET_DVR_IDENTIFICATION_PARAM +{ + BYTE sUserName[NAME_LEN]; /* û 32*/ + BYTE sPassword[PASSWD_LEN]; /* 16*/ + BYTE byRes1[4]; // +}NET_DVR_IDENTIFICATION_PARAM, *LPNET_DVR_IDENTIFICATION_PARAM; + +typedef union tagNET_DVR_MOUNT_PARAM_UNION +{ + BYTE uLen[52]; //ṹС + NET_DVR_IDENTIFICATION_PARAM struIdentificationParam;//(SMB/CIFSʱЧ) +} NET_DVR_MOUNT_PARAM_UNION, *LPNET_DVR_MOUNT_PARAM_UNION; + +typedef struct tagNET_DVR_NAS_MOUNT_PARAM +{ + BYTE byMountType; //0,1~NFS, 2~ SMB/CIFS + BYTE byRes[3]; + NET_DVR_MOUNT_PARAM_UNION uMountParam; +}NET_DVR_NAS_MOUNT_PARAM, *LPNET_DVR_NAS_MOUNT_PARAM; + +typedef union tagNET_DVR_MOUNTMETHOD_PARAM_UNION +{ + BYTE uLen[56]; //ṹС + NET_DVR_NAS_MOUNT_PARAM struNasMountParam;//NASطʽ (byNetDiskTypeΪNFS(NAS)ʱЧ) +}NET_DVR_MOUNTMETHOD_PARAM_UNION, *LPNET_DVR_MOUNTMETHOD_PARAM_UNION; + +//Ӳ̽ṹ +typedef struct tagNET_DVR_SINGLE_NET_DISK_INFO +{ + BYTE byNetDiskType; //Ӳ, 0-NFS(NAS),1-iSCSI + BYTE byRes1[3]; // + NET_DVR_IPADDR struNetDiskAddr; //Ӳ̵ַ + BYTE sDirectory[PATHNAME_LEN]; // PATHNAME_LEN = 128 + WORD wPort; //iscsiж˿ڣΪĬ + BYTE byRes2[2]; + NET_DVR_MOUNTMETHOD_PARAM_UNION uMountMethodParam; + BYTE byRes3[8]; // +}NET_DVR_SINGLE_NET_DISK_INFO, *LPNET_DVR_SINGLE_NET_DISK_INFO; + +#define MAX_NET_DISK 16//Ӳ̸ + +typedef struct tagNET_DVR_NET_DISKCFG +{ + DWORD dwSize; + NET_DVR_SINGLE_NET_DISK_INFO struNetDiskParam[MAX_NET_DISK]; +}NET_DVR_NET_DISKCFG, *LPNET_DVR_NET_DISKCFG; + +typedef struct tagNET_DVR_SINGLE_NET_DISK_INFO_V40 +{ + BYTE byNetDiskType; //Ӳ, 0-NFS(NAS),1-iSCSI + BYTE byRes1[3]; // + BYTE sDirectory[PATHNAME_LEN]; // PATHNAME_LEN = 128 + BYTE byDevAddr[MAX_DOMAIN_NAME]; /* 64*/ + WORD wPort; //iscsiж˿ڣΪĬ + BYTE byRes2[2]; + NET_DVR_MOUNTMETHOD_PARAM_UNION uMountMethodParam; + BYTE byRes4[80]; +}NET_DVR_SINGLE_NET_DISK_INFO_V40, *LPNET_DVR_SINGLE_NET_DISK_INFO_V40; + +typedef struct tagNET_DVR_NET_DISKCFG_V40 +{ + DWORD dwSize; + NET_DVR_SINGLE_NET_DISK_INFO_V40 struNetDiskParam[MAX_NET_DISK]; +}NET_DVR_NET_DISKCFG_V40, *LPNET_DVR_NET_DISKCFG_V40; +//¼ +// +typedef enum _MAIN_EVENT_TYPE_ +{ + EVENT_MOT_DET = 0, //ƶ + EVENT_ALARM_IN = 1, // + EVENT_VCA_BEHAVIOR = 2, // 쳣Ϊ + EVENT_INQUEST = 3, //Ѷ¼ + EVENT_VCA_DETECTION = 4, // + EVENT_POS = 5, + EVENT_TRIAL_CASE = 6,//ͥ󰸼Ϣ + EVENT_ACS_CASE = 7, //޼ + EVENT_IOT_CASE = 8, //Ƶ¼¼ΪƵ豸Ƶ豸¼Ƶ豸¼ + EVENT_STREAM_INFO = 100 //IDϢ +}MAIN_EVENT_TYPE; + +#define INQUEST_START_INFO 0x1001 /*ѶʿʼϢ*/ +#define INQUEST_STOP_INFO 0x1002 /*ѶֹͣϢ*/ +#define INQUEST_TAG_INFO 0x1003 /*صϢ*/ +#define INQUEST_SEGMENT_INFO 0x1004 /*ѶƬ״̬Ϣ*/ +#define INQUEST_CASE_INFO 0x1005 // Ϣ + +typedef enum _VCA_DETECTION_MINOR_TYPE_ +{ + EVENT_VCA_TRAVERSE_PLANE = 1, //Խ + EVENT_FIELD_DETECTION, // + EVENT_AUDIO_INPUT_ALARM, //Ƶ쳣 + EVENT_SOUND_INTENSITY_ALARM, //ǿͻ + EVENT_FACE_DETECTION, // + EVENT_VIRTUAL_FOCUS_ALARM, //齹 + EVENT_SCENE_CHANGE_ALARM, // + EVENT_PIR_ALARM, //PIR + EVENT_ENTER_REGION, // + EVENT_EXIT_REGION, //Ŀ뿪 + EVENT_LOITERING, //ǻ + EVENT_GROUPDETECTION, //Աۼ,֧ + EVENT_RAPIDMOVE, //ƶ + EVENT_PARK, //ͣ + EVENT_UNATTENDED_BAGGAGE, //Ʒ + EVENT_ATTENDEDBAGGAGE, //Ʒȡ + EVENT_VEHICLE_DETECTION, // + EVENT_ALL = 0xffffffff //ʾȫ +}VCA_DETECTION_MINOR_TYPE; + + + +//쳣ΪͶӦĴͣ 0xffffʾȫ +typedef enum _BEHAVIOR_MINOR_TYPE_ +{ + EVENT_TRAVERSE_PLANE = 0, // Խ + EVENT_ENTER_AREA, //Ŀ,֧ + EVENT_EXIT_AREA, //Ŀ뿪,֧ + EVENT_INTRUSION, // ܽ,֧ + EVENT_LOITER, //ǻ,֧ + EVENT_LEFT_TAKE, //Ʒȡ,֧ + EVENT_PARKING, //ͣ,֧ + EVENT_RUN, //ƶ,֧ + EVENT_HIGH_DENSITY, //Աۼ,֧ + EVENT_STICK_UP, //ֽ,֧ + EVENT_INSTALL_SCANNER, //װ,֧ + EVENT_OPERATE_OVER_TIME, // ʱ + EVENT_FACE_DETECT, // 쳣 + EVENT_LEFT, // Ʒ + EVENT_TAKE, // Ʒȡ + EVENT_LEAVE_POSITION, //¼ + EVENT_TRAIL_INFO = 16, //β + EVENT_HUMAN_ENTER = 18, //Ա + EVENT_FALL_DOWN_INFO = 19, // + EVENT_OBJECT_PASTE =20, // ճ + EVENT_FACE_CAPTURE_INFO = 21, // + EVENT_MULTI_FACES_INFO = 22, // + EVENT_AUDIO_ABNORMAL_INFO = 23, //ǿͻ + EVENT_SUNGLASSES_FACE_INFO = 25, //ī + EVENT_CALLING_FACE_INFO = 26, //绰 + EVENT_VIOLENT_MOTION = 27, //˶ + EVENT_SAFETY_HELMET = 28, //ȫñ + EVENT_PEOPLE_NUM_CHANGE = 29, //仯 + EVENT_GET_UP = 30, // + EVENT_ADV_REACH_HEIGHT = 31, //ʸ + EVENT_STOOD_UP = 32, // + EVENT_PERSON_DENSITY = 33, //ԱܶȣԤ + EVENT_MANUAL_ALARM = 34, //ֶ + EVENT_VIOLATION_HIGH_SPEED = 35, // + EVENT_GSENSOR = 36, // G-Sensor¼١١ת䡢ת䡢ײ + EVENT_SENSOR_IN = 37, // Sensor-InΪɲתת + EVENT_VCA_DBD = 38, //˾ʻΪ + EVENT_VCA_ABS = 39, //߼ʻ + EVENT_TOILET_TARRY = 40 //޳ʱ +}BEHAVIOR_MINOR_TYPE; + +//6ӦĴ +typedef enum _TRIAL_CASE_MINOR_TYPE_ +{ + TRIAL_START_INFO = 0x1001, // ͥʼ¼ + TRIAL_STOP_INFO = 0x1002, //ͥ¼ + TRIAL_TAG_INFO = 0x1003, //ͥصע¼ + TRIAL_SEGMENT_INFO = 0x1004, // ͥƬ״̬Ϣ + TRIAL_JUDGE_CASE_INFO=0x1005 //ͥ󰸼Ϣ +}TRIAL_CASE_MINOR_TYPE; + +// 100ӦС +typedef enum _STREAM_INFO_MINOR_TYPE_ +{ + EVENT_STREAM_ID = 0, // ID + EVENT_TIMING = 1, // ʱ¼ + EVENT_MOTION_DETECT = 2, // ƶ + EVENT_ALARM = 3, // ¼ + EVENT_ALARM_OR_MOTION_DETECT = 4, // ƶ + EVENT_ALARM_AND_MOTION_DETECT = 5, // ƶ + EVENT_COMMAND_TRIGGER = 6, //  + EVENT_MANNUAL = 7, // ֶ¼ + EVENT_BACKUP_VOLUME = 8, // 浵¼ + STREAM_EVENT_SEMAPHORE, //ź + STREAM_EVENT_HIDE, //ڵ + STREAM_EVENT_INVERSE, // + STREAM_EVENT_VIDEO_LOST, //Ƶʧ + STREAM_EVENT_WIRELESS_ALARM, //߱ + STREAM_EVENT_PIR_ALARM, //PIR + STREAM_EVENT_CALLHELP_ALARM, //ȱ + + STREAM_EVENT_FACESNAP, //ץ + STREAM_EVENT_FACE_DETECTION, // + STREAM_EVENT_ITS_PLATE, // + STREAM_EVENT_PDC, //ͳ + STREAM_EVENT_SCENECHANGE_DETECTION, // + STREAM_EVENT_DEFOCUS_DETECTION, //齹 + STREAM_EVENT_AUDIOEXCEPTION, //Ƶ쳣 + + //Ϊ쳣Ϊ⣨COMM_ALARM_RULEͣVCA_EVENT_TYPE + VCA_EVENT_TRAVERSE_PLANE, //Խ + VCA_EVENT_INTRUSION, //ܽ + VCA_EVENT_ENTER_AREA, // + VCA_EVENT_EXIT_AREA, //뿪 + VCA_EVENT_LOITER, //ǻ + VCA_EVENT_HIGH_DENSITY, //Աۼ + VCA_EVENT_RUN, //ƶ + VCA_EVENT_PARKING, //Ƿͣ + VCA_EVENT_LEFT, //Ʒ + VCA_EVENT_TAKE, //Ʒȡ +}STREAM_INFO_MINOR_TYPE; + +// typedef enum tagITS_MINOR_TYPE +// { +// ITS_EVENT_CONGESTION = 0, // ӵ +// ITS_EVENT_PARKING, // ͣ +// ITS_EVENT_INVERSE, // +// ITS_EVENT_PEDESTRIAN, // +// ITS_EVENT_DEBRIS // Ƭ +// }ITS_MINOR_TYPE; + + +#define SEARCH_EVENT_INFO_LEN 300 //¼Ϣ +#define CASE_NO_LEN 64 +#define CASE_NAME_LEN 128 +#define LITIGANT_LEN 32 +#define CHIEF_JUDGE_LEN 32 +#define SEARCH_CASE_NO_LEN 56 +#define SEARCH_CASE_NAME_LEN 100 +#define SEARCH_LITIGANT_LEN 32 +#define SEARCH_CHIEF_JUDGE_LEN 32 +#define CASE_NO_RET_LEN 52 +#define CASE_NAME_RET_LEN 64 +#define LITIGANT_RET_LEN 24 +#define CHIEF_JUDGE_RET_LEN 24 +#define NET_SDK_CASETYPE_LEN 32 +//¼ +typedef struct tagNET_DVR_SEARCH_EVENT_PARAM +{ + WORD wMajorType; //0-ƶ⣬1-, 2-¼ + WORD wMinorType; //- ͱ仯0xffffʾȫ + NET_DVR_TIME struStartTime; //Ŀʼʱ䣬ֹͣʱ: ͬʱΪ(0, 0) ʾʱ俪ʼǰ4000¼ + NET_DVR_TIME struEndTime; // + BYTE byLockType; // 0xff-ȫ0-δ1- + BYTE byValue; //0-λʾ1-ֵʾ + BYTE byRes[130]; // + union + { + BYTE byLen[SEARCH_EVENT_INFO_LEN]; + struct// + { + BYTE byAlarmInNo[MAX_ALARMIN_V30]; //ţbyAlarmInNo[0]1ʾɱ1¼ + BYTE byRes[SEARCH_EVENT_INFO_LEN - MAX_ALARMIN_V30]; + }struAlarmParam; + + struct//--ֵ + { + WORD wAlarmInNo[128]; /*ţֵʾ,ý*/ + BYTE byRes[44]; // + }struAlarmParamByValue; + + struct//ƶ + { + BYTE byMotDetChanNo[MAX_CHANNUM_V30];//ƶͨbyMotDetChanNo[0]1ʾͨ1ƶⴥ¼ + BYTE byRes[SEARCH_EVENT_INFO_LEN - MAX_CHANNUM_V30]; + }struMotionParam; + + struct//ƶ--ֵ + { + WORD wMotDetChanNo[64]; /* ƶֵͨʾ ,ý*/ + BYTE byRes[172]; /**/ + }struMotionParamByValue; + + struct//쳣Ϊ + { + BYTE byChanNo[MAX_CHANNUM_V30]; //¼ͨ + BYTE byRuleID; //ID0xffʾȫ + BYTE byRes1[43]; // + }struVcaParam; + + struct //쳣Ϊ--ֵʽ + { + WORD wChanNo[64]; //쳣ΪӦֵͨʾ,ý + BYTE byRuleID; //쳣Ϊͣ0xffʾȫ0ʼ + BYTE byRes[171]; /**/ + }struVcaParamByValue; + + struct//Ѷ¼ + { + BYTE byRoomIndex; //Ѷұ,ֵʾ1ʼ + BYTE byRes1[3]; + BYTE sInquestInfo[INQUEST_CASE_LEN]; + BYTE byRes2[232]; // + } struInquestParam; + struct // + { + BYTE byChan [256];//ͨţ±ʾbyChan[0]1ʾͨ1ƶⴥ¼ + }struVCADetectByBit; + + struct// ͨŰֵʾ + { + DWORD dwChanNo[MAX_CHANNUM_V30-1];// ͨ,ֵʾ0xffffffffЧҺҲʾЧֵ + BYTE byAll;//0-ʾȫ1-ʾȫ + BYTE byres[3]; + }struVCADetectByValue; + struct + { + NET_DVR_STREAM_INFO struIDInfo; // idϢ72ֽڳ + DWORD dwCmdType; // ⲿͣNVRƴ洢ʹ + BYTE byBackupVolumeNum; //浵ţCVRʹ + BYTE byRes[223]; + }struStreamIDParam; + struct + { + BYTE byCaseNo[SEARCH_CASE_NO_LEN]; // + BYTE byCaseName[SEARCH_CASE_NAME_LEN]; //ƣ + BYTE byLitigant1[SEARCH_LITIGANT_LEN]; //1 + BYTE byLitigant2[SEARCH_LITIGANT_LEN]; //2 + BYTE byChiefJudge[SEARCH_CHIEF_JUDGE_LEN];//г + BYTE byCaseType; //ͣ0-ȫ1-°2-° + BYTE byRes[47]; + }struTrialParam; + }uSeniorParam; +}NET_DVR_SEARCH_EVENT_PARAM, *LPNET_DVR_SEARCH_EVENT_PARAM; + +#define MAX_POS_KEYWORDS_NUM 3 //ֹ֧ؼֲ +#define MAX_POS_KEYWORD_LEN 128 //ÿؼֳ +#define SEARCH_EVENT_INFO_LEN_V40 800 + +//¼ +typedef struct tagNET_DVR_SEARCH_EVENT_PARAM_V40 +{ + WORD wMajorType; //0-ƶ⣬1-, 2-¼ 5-pos¼ 7-޼ + WORD wMinorType; //- ͱ仯0xffffʾȫ + NET_DVR_TIME struStartTime; //Ŀʼʱ䣬ֹͣʱ: ͬʱΪ(0, 0) ʾʱ俪ʼǰ4000¼ + NET_DVR_TIME struEndTime; // + BYTE byLockType; // 0xff-ȫ0-δ1- + BYTE byQuickSearch; // Ƿÿٲѯ0-ã1-ãٲѯ᷵ļС豸ݿвѯƵӲ̣ + BYTE byRes[130]; // + union + { + BYTE byLen[SEARCH_EVENT_INFO_LEN_V40/*800*/]; + struct// + { + /*ţֵʾ,ýУ0xffffʾЧ*/ + WORD wAlarmInNo[128]; + BYTE byRes[544]; // + }struAlarmParam; + + struct//ƶ + { + /* ƶֵͨʾ ,ýУ0xffffʾЧ*/ + WORD wMotDetChanNo[MAX_CHANNUM_V30]; + BYTE byRes[672]; /**/ + }struMotionParam; + + struct //쳣Ϊ + { + //쳣ΪӦֵͨʾ,ýУ0xffffʾЧ + WORD wChanNo[MAX_CHANNUM_V30]; + BYTE byRuleID; //쳣Ϊͣ0xffʾȫ0ʼ + BYTE byDriverBehaviortType; //˾ʻΪͣ0-1-̡2-Ӵ绰3-ƣͼʻ4-ѡ5-ʻԱ쳣6-δϵȫ7-ī + BYTE byADASType; //߼ʻͣ0-1-ǰײ2-ƫ롢3-ä⡢4-⡢5-˷ײ6-١7-١8-ת䡢9-ת䡢10-11-δ + BYTE byGSensorType; // G-Sensor¼0-1-١2-١3-ת䡢4-ת䡢5-6-ײ + BYTE bySensorInType; // Sensor-InΪ0-1-ɲ2-ת3-ת4- + BYTE byRes[667]; /**/ + }struVcaParam; + + struct//Ѷ¼ + { + BYTE byRoomIndex; //Ѷұ,1ʼ + BYTE byRes[799]; // + } struInquestParam; + + struct// ͨŰֵʾ + { + BYTE byAll; //ȫͨ0-񣬴ʱdwChanNoЧ + //1-ȫͨʱdwChanNoЧ + BYTE byRes1[3]; + WORD wChanNo[MAX_CHANNUM_V30];// ͨ,ֵʾ0xffffЧҺҲʾЧֵ + BYTE byRes[668]; + }struVCADetect; + + struct + { + NET_DVR_STREAM_INFO struIDInfo; // idϢ72ֽڳ + DWORD dwCmdType; // ⲿͣNVRƴ洢ʹ + BYTE byBackupVolumeNum; //浵ţCVRʹ + BYTE byRes1[3]; + BYTE byArchiveLabel[64]; //浵ǩCVRʹ + BYTE byRes[656]; + }struStreamIDParam; + + struct //pos¼ + { + WORD wChannel[MAX_CHANNUM_V30]; //ֵͨʾ,У0xffffʱʾֵЧ + BYTE byAllChan; //Ƿȫͨ0-񣬴ʱwChannelЧ1-ȫͨʱwChannelЧ + BYTE byCaseSensitive; //0-ִСд 1-ִСд + BYTE byCombinateMode; //ؼϷʽ0-1- + BYTE byRes1; // + char sKeyWord[MAX_POS_KEYWORDS_NUM][MAX_POS_KEYWORD_LEN]; + //ؼֲʱ + BYTE byRes[284]; // + }struPosAlarm; + + struct + { + BYTE byCaseNo[SEARCH_CASE_NO_LEN]; // + BYTE byCaseName[SEARCH_CASE_NAME_LEN]; // + BYTE byLitigant1[SEARCH_LITIGANT_LEN]; //1 + BYTE byLitigant2[SEARCH_LITIGANT_LEN]; //2 + BYTE byChiefJudge[SEARCH_CHIEF_JUDGE_LEN]; //г + BYTE byCaseType; + BYTE byRes[47]; + }struTrialParam; + + struct //޼ + { + DWORD dwMajor; //ͣ¼ϴһ£0ȫ + DWORD dwMinor; //ͣ¼ϴһ£0ȫ + BYTE byCardNo[ACS_CARD_NO_LEN]; // + BYTE byName[NAME_LEN/*32*/]; // + BYTE byMACAddr[MACADDR_LEN]; //MACַ + BYTE byRes[722]; + }struACSAlarm; + }uSeniorParam; +}NET_DVR_SEARCH_EVENT_PARAM_V40, *LPNET_DVR_SEARCH_EVENT_PARAM_V40; + +//¼ +typedef struct tagNET_DVR_SEARCH_EVENT_PARAM_V50 +{ + WORD wMajorType; //0-ƶ⣬1-, 2-¼ 5-pos¼ 7-޼, 8-Ƶ¼ + WORD wMinorType; //- ͱ仯0xffffʾȫ + NET_DVR_TIME_SEARCH_COND struStartTime; //Ŀʼʱ䣬ֹͣʱ: ͬʱΪ(0, 0) ʾʱ俪ʼǰ4000¼ + NET_DVR_TIME_SEARCH_COND struEndTime; //Ľʱ + BYTE byLockType; // 0xff-ȫ0-δ1- + BYTE byQuickSearch; // Ƿÿٲѯ0-ã1-ãٲѯ᷵ļС豸ݿвѯƵӲ̣ + BYTE byRes[254]; // + union + { + BYTE byLen[SEARCH_EVENT_INFO_LEN_V40/*800*/]; + struct// + { + /*ţֵʾ,ýУ0xffffʾЧ*/ + WORD wAlarmInNo[128]; + BYTE byRes[544]; // + }struAlarmParam; + + struct//ƶ + { + /* ƶֵͨʾ ,ýУ0xffffʾЧ*/ + WORD wMotDetChanNo[MAX_CHANNUM_V30]; + BYTE byRes[672]; /**/ + }struMotionParam; + + struct //쳣Ϊ + { + //쳣ΪӦֵͨʾ,ýУ0xffffʾЧ + WORD wChanNo[MAX_CHANNUM_V30]; + BYTE byRuleID; //쳣Ϊͣ0xffʾȫ0ʼ + BYTE byDriverBehaviortType; //˾ʻΪͣ0-1-̡2-Ӵ绰3-ƣͼʻ4-ѡ5-ʻԱ쳣6-δϵȫ7-ī + BYTE byADASType; //߼ʻͣ0-1-ǰײ2-ƫ롢3-ä⡢4-⡢5-˷ײ6-١7-١8-ת䡢9-ת䡢10-11-δ + BYTE byGSensorType; // G-Sensor¼0-1-١2-١3-ת䡢4-ת䡢5-6-ײ + BYTE bySensorInType; // Sensor-InΪ0-1-ɲ2-ת3-ת4- + BYTE byRes[667]; /**/ + }struVcaParam; + + struct//Ѷ¼ + { + BYTE byRoomIndex; //Ѷұ,1ʼ + BYTE byRes[799]; // + } struInquestParam; + + struct// ͨŰֵʾ + { + BYTE byAll; //ȫͨ0-񣬴ʱdwChanNoЧ + //1-ȫͨʱdwChanNoЧ + BYTE byRes1[3]; + WORD wChanNo[MAX_CHANNUM_V30];// ͨ,ֵʾ0xffffЧҺҲʾЧֵ + BYTE byRes[668]; + }struVCADetect; + + struct + { + NET_DVR_STREAM_INFO struIDInfo; // idϢ72ֽڳ + DWORD dwCmdType; // ⲿͣNVRƴ洢ʹ + BYTE byBackupVolumeNum; //浵ţCVRʹ + BYTE byRes1[3]; + BYTE byArchiveLabel[64]; //浵ǩCVRʹ + BYTE byRes[656]; + }struStreamIDParam; + + struct //pos¼ + { + WORD wChannel[MAX_CHANNUM_V30]; //ֵͨʾ,У0xffffʱʾֵЧ + BYTE byAllChan; //Ƿȫͨ0-񣬴ʱwChannelЧ1-ȫͨʱwChannelЧ + BYTE byCaseSensitive; //0-ִСд 1-ִСд + BYTE byCombinateMode; //ؼϷʽ0-1- + BYTE byRes1; // + char sKeyWord[MAX_POS_KEYWORDS_NUM][MAX_POS_KEYWORD_LEN]; + //ؼֲʱ + BYTE byRes[284]; // + }struPosAlarm; + + struct + { + BYTE byCaseNo[SEARCH_CASE_NO_LEN]; + BYTE byCaseName[SEARCH_CASE_NAME_LEN]; + BYTE byLitigant1[SEARCH_LITIGANT_LEN]; + BYTE byLitigant2[SEARCH_LITIGANT_LEN]; + BYTE byChiefJudge[SEARCH_CHIEF_JUDGE_LEN]; + BYTE byCaseType; + BYTE byRes[547]; + }struTrialParam; + + struct //޼ + { + DWORD dwMajor; //ͣ¼ϴһ£0ȫ + DWORD dwMinor; //ͣ¼ϴһ£0ȫ + BYTE byCardNo[ACS_CARD_NO_LEN]; // + BYTE byName[NAME_LEN/*32*/]; // + BYTE byMACAddr[MACADDR_LEN]; //MACַ + BYTE byRes[722]; + }struACSAlarm; + struct //Ƶ¼ + { + WORD wDeviceType; //豸,0-˽Ž1-˽пӶԽ豸, 2-˽бԤ 3-GJD 4-Luminite, 5-OPTEX,6-cameraDetectorģ豸 + WORD wEventType; //- ͱ仯0xffffʾȫ + WORD wChannel[MAX_CHANNUM_V30/*64*/]; //ͨţֵʾ,У0xffffʱʾֵЧ + BYTE byAllChan; //Ƿȫͨ0-񣬴ʱwChannelЧ1-ȫͨʱwChannelЧ + BYTE byCaseSensitive; //0-ִСд 1-ִСд + BYTE byCombinateMode; //ؼϷʽ0-1- + BYTE bySearchType; //ʽ0-ƵԴʱͨΪƵͨţ + char sKeyWord[MAX_POS_KEYWORDS_NUM/*3*/][MAX_POS_KEYWORD_LEN/*128*/];//ؼֲʱ + WORD wZoneNo; //ţ豸Ϊ˽бΪwEventTypeΪ1ʱЧ + BYTE byRes[278]; // + }struIOTAlarm; + }uSeniorParam; +}NET_DVR_SEARCH_EVENT_PARAM_V50, *LPNET_DVR_SEARCH_EVENT_PARAM_V50; + + +//ҷؽ +typedef struct tagNET_DVR_SEARCH_EVENT_RET +{ + WORD wMajorType; // + WORD wMinorType; // + NET_DVR_TIME struStartTime; //¼ʼʱ + NET_DVR_TIME struEndTime; //¼ֹͣʱ䣬¼ʱͿʼʱһ + BYTE byChan[MAX_CHANNUM_V30]; + BYTE byChanEx[32]; //ͨλʾʹøֶκbyChanԲʹ + BYTE byRes[4]; + union + { + struct// + { + DWORD dwAlarmInNo; // + BYTE byRes[SEARCH_EVENT_INFO_LEN]; + }struAlarmRet; + struct//ƶ + { + DWORD dwMotDetNo; //ƶͨ + BYTE byRes[SEARCH_EVENT_INFO_LEN]; + }struMotionRet; + struct//쳣Ϊ + { + DWORD dwChanNo; //¼ͨ + BYTE byRuleID; //ID + BYTE byRes1[3]; // + BYTE byRuleName[NAME_LEN]; // + NET_VCA_EVENT_UNION uEvent; //Ϊ¼ + }struVcaRet; + struct//Ѷ¼ + { + BYTE byRoomIndex; //Ѷұ,1ʼ + BYTE byDriveIndex; //¼,1ʼ + BYTE byRes1[6]; // + DWORD dwSegmentNo; //ƬڱѶе,1ʼ + WORD wSegmetSize; //ƬϵĴС, λM + WORD wSegmentState; //Ƭ״̬ 0 ¼1 ¼쳣2 ¼Ѷ + BYTE byRes2[288]; // + }struInquestRet; + struct //id¼ѯ + { + DWORD dwRecordType; /*¼ 0-ʱ¼,1-ƶ,2-,3-|ƶ, 4-&ƶ,5-,6-ֶ¼,7-𶯱,8-, + 9-ܱ,10-PIR,11-߱,12-ȱ,13- PIR|߱|ȱ, 14-ܽͨ¼,15-Խ,16-,17-쳣, + 18-, 19-ȫܣԽ|||뿪|ʶ, 20-ź,21-ش22-Ǩ¼,23-ڵ 24-¼ƴӴ浵*/ + DWORD dwRecordLength; //¼С + BYTE byLockFlag; // ־ 0û 1 + BYTE byDrawFrameType; // 0dz֡¼ 1֡¼ + BYTE byRes1[2]; + BYTE byFileName[NAME_LEN]; //ļ + DWORD dwFileIndex; // 浵ϵļ + BYTE byRes[256]; + }struStreamIDRet; + struct + { + BYTE byRoomIndex; //Ѷұ,1ʼ + BYTE byDriveIndex; //¼,1ʼ + WORD wSegmetSize; //ƬϵĴС, λM + DWORD dwSegmentNo; //ƬڱѶе,1ʼ + BYTE bySegmentState; //Ƭ״̬0-¼1-¼쳣2-¼Ѷ + BYTE byCaseType; //ͣ0-ȫ1-°2-° + BYTE byRes[2]; + BYTE byCaseNo[CASE_NO_RET_LEN]; // + BYTE byCaseName[CASE_NAME_RET_LEN]; //ƣ + BYTE byLitigant1[LITIGANT_RET_LEN]; //1 + BYTE byLitigant2[LITIGANT_RET_LEN]; //2 + BYTE byChiefJudge[CHIEF_JUDGE_RET_LEN];//г + BYTE byRes1[104]; + }struTrialRet; + }uSeniorRet; +}NET_DVR_SEARCH_EVENT_RET, *LPNET_DVR_SEARCH_EVENT_RET; + +#define NET_SDK_MAX_TAPE_INDEX_LEN 32 //Ŵ󳤶 +#define NET_SDK_MAX_FILE_LEN 256 //ļ󳤶 + +//ҷؽ +typedef struct tagNET_DVR_SEARCH_EVENT_RET_V40 +{ + WORD wMajorType; // + WORD wMinorType; // + NET_DVR_TIME struStartTime; //¼ʼʱ + NET_DVR_TIME struEndTime; //¼ֹͣʱ䣬¼ʱͿʼʱһ + WORD wChan[MAX_CHANNUM_V40/*512*/]; //ͨţ0xffffʾЧ + BYTE byRes[36]; + union + { + BYTE byLen[800]; //峤 + struct// + { + DWORD dwAlarmInNo; // + BYTE byRes[796]; + }struAlarmRet; + struct//ƶ + { + DWORD dwMotDetNo; //ƶͨ + BYTE byRes[796]; + }struMotionRet; + struct//쳣Ϊ + { + DWORD dwChanNo; //¼ͨ + BYTE byRuleID; //ID + BYTE byRes1[3]; // + BYTE byRuleName[NAME_LEN]; // + NET_VCA_EVENT_UNION uEvent; //Ϊ¼ + BYTE byRes[668]; // + }struVcaRet; + + struct//Ѷ¼ + { + BYTE byRoomIndex; //Ѷұ,1ʼ + BYTE byDriveIndex; //¼,1ʼ + BYTE byRes1[6]; // + DWORD dwSegmentNo; //ƬڱѶе,1ʼ + WORD wSegmetSize; //ƬϵĴС, λM + WORD wSegmentState; //Ƭ״̬ 0 ¼1 ¼쳣2 ¼Ѷ + BYTE byRes2[784]; // + }struInquestRet; + + struct //id¼ѯ + { + DWORD dwRecordType; //¼ 0-ʱ¼ 1-ƶ 2-¼ 3-|ƶ 4-&ƶ 5- 6-ֶ¼ 7-𶯱 8- 9-ܱ 10-ش¼ + DWORD dwRecordLength; //¼С + BYTE byLockFlag; // ־ 0û 1 + BYTE byDrawFrameType; // 0dz֡¼ 1֡¼ + BYTE byPosition;// ļڴ洢λã0-ϣ1-λϣֱأ2-ŴڣҪѴлλϣ3-ڴŴУҪѴ̲嵽Ŵ + BYTE byRes1; + BYTE byFileName[NAME_LEN]; //ļ + DWORD dwFileIndex; // 浵ϵļ + BYTE byTapeIndex[NET_SDK_MAX_TAPE_INDEX_LEN]; //ļڴŴ + BYTE byFileNameEx[NET_SDK_MAX_FILE_LEN/*256*/]; //ļչ + BYTE byRes[464]; + }struStreamIDRet; + + struct//POS¼ѯ + { + DWORD dwChanNo; //pos¼ͨ + BYTE byRes[796]; + }struPosRet; + + struct + { + BYTE byRoomIndex; //Ѷұ,1ʼ + BYTE byDriveIndex; //¼,1ʼ + WORD wSegmetSize; //ƬϵĴС, λM + DWORD dwSegmentNo; //ƬڱѶе,1ʼ + BYTE bySegmentState; //Ƭ״̬0-¼1-¼쳣2-¼Ѷ + BYTE byCaseType; //ͣ0-ȫ1-°2-° + BYTE byRes[2]; + BYTE byCaseNo[CASE_NO_RET_LEN]; // + BYTE byCaseName[CASE_NAME_RET_LEN]; //ƣ + BYTE byLitigant1[LITIGANT_RET_LEN]; //1 + BYTE byLitigant2[LITIGANT_RET_LEN]; //2 + BYTE byChiefJudge[CHIEF_JUDGE_RET_LEN];//г + BYTE byRes1[600]; + }struTrialRet; + }uSeniorRet; +}NET_DVR_SEARCH_EVENT_RET_V40, *LPNET_DVR_SEARCH_EVENT_RET_V40; + +//ҷؽ +typedef struct tagNET_DVR_SEARCH_EVENT_RET_V50 +{ + WORD wMajorType; // + WORD wMinorType; // + NET_DVR_TIME_SEARCH struStartTime; //¼ʼʱ + NET_DVR_TIME_SEARCH struEndTime; //¼ֹͣʱ䣬¼ʱͿʼʱһ + NET_DVR_ADDRESS struAddr; //ƬڵĵַϢȺطʱõ + WORD wChan[MAX_CHANNUM_V40/*512*/]; //ͨţ0xffffʾЧ + BYTE byRes[256]; + union + { + BYTE byLen[800]; //峤 + struct// + { + DWORD dwAlarmInNo; // + BYTE byRes[796]; + }struAlarmRet; + struct//ƶ + { + DWORD dwMotDetNo; //ƶͨ + BYTE byRes[796]; + }struMotionRet; + struct//쳣Ϊ + { + DWORD dwChanNo; //¼ͨ + BYTE byRuleID; //ID + BYTE byRes1[3]; // + BYTE byRuleName[NAME_LEN]; // + NET_VCA_EVENT_UNION uEvent; //Ϊ¼ + BYTE byRes[668]; // + }struVcaRet; + + struct//Ѷ¼ + { + BYTE byRoomIndex; //Ѷұ,1ʼ + BYTE byDriveIndex; //¼,1ʼ + BYTE byRes1[6]; // + DWORD dwSegmentNo; //ƬڱѶе,1ʼ + WORD wSegmetSize; //ƬϵĴС, λM + WORD wSegmentState; //Ƭ״̬ 0 ¼1 ¼쳣2 ¼Ѷ + BYTE byRes2[784]; // + }struInquestRet; + + struct //id¼ѯ + { + DWORD dwRecordType; //¼ 0-ʱ¼ 1-ƶ 2-¼ 3-|ƶ 4-&ƶ 5- 6-ֶ¼ 7-𶯱 8- 9-ܱ 10-ش¼ + DWORD dwRecordLength; //¼С + BYTE byLockFlag; // ־ 0û 1 + BYTE byDrawFrameType; // 0dz֡¼ 1֡¼ + BYTE byPosition;// ļڴ洢λã0-ϣ1-λϣֱأ2-ŴڣҪѴлλϣ3-ڴŴУҪѴ̲嵽Ŵ + BYTE byRes1; + BYTE byFileName[NAME_LEN]; //ļ + DWORD dwFileIndex; // 浵ϵļ + BYTE byTapeIndex[NET_SDK_MAX_TAPE_INDEX_LEN]; //ļڴŴ + BYTE byFileNameEx[NET_SDK_MAX_FILE_LEN/*256*/]; //ļչ + BYTE byRes[464]; + }struStreamIDRet; + + struct//POS¼ѯ + { + DWORD dwChanNo; //pos¼ͨ + BYTE byRes[796]; + }struPosRet; + + struct + { + BYTE byRoomIndex; //Ѷұ,1ʼ + BYTE byDriveIndex; //¼,1ʼ + WORD wSegmetSize; //ƬϵĴС, λM + DWORD dwSegmentNo; //ƬڱѶе,1ʼ + BYTE bySegmentState; //Ƭ״̬0-¼1-¼쳣2-¼Ѷ + BYTE byCaseType; //ͣ0-ȫ1-°2-° + BYTE byRes[2]; + BYTE byCaseNo[CASE_NO_RET_LEN]; // + BYTE byCaseName[CASE_NAME_RET_LEN]; //ƣ + BYTE byLitigant1[LITIGANT_RET_LEN]; //1 + BYTE byLitigant2[LITIGANT_RET_LEN]; //2 + BYTE byChiefJudge[CHIEF_JUDGE_RET_LEN];//г + BYTE byRes1[600]; + }struTrialRet; + struct//Ƶͨѯ + { + DWORD dwChanNo; //¼ͨţ¼Դͨ + BYTE byRes[796]; + }struIOTRet; + }uSeniorRet; +}NET_DVR_SEARCH_EVENT_RET_V50, *LPNET_DVR_SEARCH_EVENT_RET_V50; + +//SDK_V35 2009-10-26 + +// 궨 +typedef enum tagCALIBRATE_TYPE +{ + PDC_CALIBRATE = 0x01, // PDC 궨 + BEHAVIOR_OUT_CALIBRATE = 0x02, //Ϊⳡ궨 + BEHAVIOR_IN_CALIBRATE = 0x03, // Ϊڳ궨 + ITS_CALBIRETE = 0x04, // ͨ¼궨 + BV_DIRECT_CALIBRATE = 0x05, //˫Ŀֱӱ궨 + PDC_LINE_CALIBRATE = 0x06 //PDC 궨 +}CALIBRATE_TYPE; + +#define MAX_RECT_NUM 6 +typedef struct tagNET_DVR_RECT_LIST +{ + BYTE byRectNum; // οĸ + BYTE byRes1[11]; //ֽ + NET_VCA_RECT struVcaRect[MAX_RECT_NUM]; // Ϊ6Rect +}NET_DVR_RECT_LIST, *LPNET_DVR_RECT_LIST; + +// PDC 궨 +typedef struct tagNET_DVR_PDC_CALIBRATION +{ + NET_DVR_RECT_LIST struRectList; // 궨οб + BYTE byRes[120]; // ֽ +}NET_DVR_PDC_CALIBRATION, *LPNET_DVR_PDC_CALIBRATION; + + +// 궨ߵʾǰ궨ʵʱʾǸ߶߻dzߡ +typedef enum tagLINE_MODE +{ + HEIGHT_LINE, //߶ + LENGTH_LINE // +}LINE_MODE; +/* +ñ궨ϢʱӦλʹܣز +ûʹܣ궨Իȡص +*/ +typedef struct tagNET_DVR_CAMERA_PARAM +{ + BYTE byEnableHeight; // Ƿʹ߶ + BYTE byEnableAngle; // ǷʹǶ + BYTE byEnableHorizon; // Ƿʹƽ + BYTE byRes[5]; // ֽ + float fCameraHeight; // ߶ + float fCameraAngle; // Ƕ + float fHorizon; // еĵƽ +}NET_DVR_CAMERA_PARAM, *LPNET_DVR_CAMERA_PARAM; +/* +fValueʾĿ߶ȵʱstruStartPointstruEndPointֱʾĿͷͽŲ㡣 +fValueʾ߶γȵʱstruStartPointstruEndPointֱʾ߶ʼյ㣬 +modeʾǰ߱ʾ߶߻dzߡ +*/ +typedef struct tagNET_DVR_LINE_SEGMENT +{ + BYTE byLineMode; // LINE_MODE + BYTE byRes[3]; // ֽ + NET_VCA_POINT struStartPoint; + NET_VCA_POINT struEndPoint; + float fValue; +}NET_DVR_LINE_SEGMENT, *LPNET_DVR_LINE_SEGMENT; + +#define MAX_LINE_SEG_NUM 8 + +/* +궨ĿǰҪ4-8ߣԻȡز +*/ +typedef struct tagNET_DVR_BEHAVIOR_OUT_CALIBRATION +{ + DWORD dwLineSegNum; // ߸ + NET_DVR_LINE_SEGMENT struLineSegment[MAX_LINE_SEG_NUM]; // + NET_DVR_CAMERA_PARAM struCameraParam; // + BYTE byRes[20]; +}NET_DVR_BEHAVIOR_OUT_CALIBRATION, *LPNET_DVR_BEHAVIOR_OUT_CALIBRATION; + +/* +ýṹʾIASܿ궨 +аһĿһӦĸ߶ȱ궨ߣ +ĿΪվӾο򣻸߶ʶͷ㵽ŵı궨ߣ +ùһʾ +*/ +typedef struct tagNET_DVR_IN_CAL_SAMPLE +{ + NET_VCA_RECT struVcaRect; // Ŀ + NET_DVR_LINE_SEGMENT struLineSegment; // ߶ȱ궨 +}NET_DVR_IN_CAL_SAMPLE, *LPNET_DVR_IN_CAL_SAMPLE; + +#define MAX_SAMPLE_NUM 5 //ֱӱ궨 +#define MAX_SAMPLE_NUM_EX 7 //궨չ + +typedef struct tagNET_DVR_BEHAVIOR_IN_CALIBRATION +{ + DWORD dwCalSampleNum; // 궨 + NET_DVR_IN_CAL_SAMPLE struCalSample[MAX_SAMPLE_NUM]; // 궨 + NET_DVR_CAMERA_PARAM struCameraParam; // + BYTE byRes[16]; +}NET_DVR_BEHAVIOR_IN_CALIBRATION, *LPNET_DVR_BEHAVIOR_IN_CALIBRATION; + +#define CALIB_PT_NUM 4 +typedef struct tagNET_DVR_ITS_CALIBRATION +{ + DWORD dwPointNum; //궨 + NET_VCA_POINT struPoint[CALIB_PT_NUM]; //ͼ + float fWidth; + float fHeight; + BYTE byRes1[100]; // ֽ +}NET_DVR_ITS_CALIBRATION, *LPNET_DVR_ITS_CALIBRATION; + +typedef struct tagNET_DVR_BV_DIRECT_CALIBRATION +{ + DWORD dwCameraHeight; //߶ȣλcm + float fPitchAngle; //ӽǶ[0, 60], + float fInclineAngle; //бǶ[-20,20] + BYTE byRes1[228]; // +}NET_DVR_BV_DIRECT_CALIBRATION,*LPNET_DVR_BV_DIRECT_CALIBRATION; + +// PDC 궨 +typedef struct tagNET_DVR_PDC_LINE_CALIBRATION +{ + NET_VCA_LINE struCalibrationLine; + BYTE byRes[224];// ֽ +} NET_DVR_PDC_LINE_CALIBRATION, *LPNET_DVR_PDC_LINE_CALIBRATION; + +// 궨 +// ر궨Էڸýṹ +typedef union tagNET_DVR_CALIBRATION_PRARM_UNION +{ + BYTE byRes[240]; //ṹС + NET_DVR_PDC_CALIBRATION struPDCCalibration; //PDC 궨 + NET_DVR_BEHAVIOR_OUT_CALIBRATION struBehaviorOutCalibration; // Ϊⳡ궨 ҪӦIVS + NET_DVR_BEHAVIOR_IN_CALIBRATION struBehaviorInCalibration; // Ϊڳ궨ҪӦIAS + NET_DVR_ITS_CALIBRATION struITSCalibration; + NET_DVR_BV_DIRECT_CALIBRATION struBvDirectCalibration; //˫Ŀֱӱ궨 + NET_DVR_PDC_LINE_CALIBRATION struPDCLineCalibration; //PDC ߱궨 +}NET_DVR_CALIBRATION_PRARM_UNION, *LPNET_DVR_CALIBRATION_PRARM_UNION; + + +// 궨ýṹ +typedef struct tagNET_DVR_CALIBRATION_CFG +{ + DWORD dwSize; //궨ṹС + BYTE byEnable; // Ƿñ궨 + BYTE byCalibrationType; // 궨 ݲͬѡͬı궨 οCALIBRATE_TYPE + BYTE byRes1[2]; + NET_DVR_CALIBRATION_PRARM_UNION uCalibrateParam; // 궨 + BYTE byRes2[12]; +}NET_DVR_CALIBRATION_CFG, *LPNET_DVR_CALIBRATION_CFG; + +//ͳƷṹ +typedef struct tagNET_DVR_PDC_ENTER_DIRECTION +{ + NET_VCA_POINT struStartPoint; //ͳƷʼ + NET_VCA_POINT struEndPoint; // ͳƷ +}NET_DVR_PDC_ENTER_DIRECTION, *LPNET_DVR_PDC_ENTER_DIRECTION; + +typedef struct tagNET_DVR_PDC_RULE_CFG +{ + DWORD dwSize; //ṹС + BYTE byEnable; // Ƿ񼤻; + BYTE byRes1[23]; // ֽ + NET_VCA_POLYGON struPolygon; // + NET_DVR_PDC_ENTER_DIRECTION struEnterDirection; // 뷽 +} NET_DVR_PDC_RULE_CFG, *LPNET_DVR_PDC_RULE_CFG; + +typedef struct tagNET_DVR_PDC_RULE_CFG_V41 +{ + DWORD dwSize; //ṹС + BYTE byEnable; // Ƿ񼤻; + BYTE byRes1[23]; // ֽ + NET_VCA_POLYGON struPolygon; // + NET_DVR_PDC_ENTER_DIRECTION struEnterDirection; // 뷽 + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + NET_DVR_TIME_EX struDayStartTime; //쿪ʼʱ䣬ʱЧ + NET_DVR_TIME_EX struNightStartTime; //ҹʼʱ䣬ʱЧ + BYTE byRes[100]; // ֽ +}NET_DVR_PDC_RULE_CFG_V41, *LPNET_DVR_PDC_RULE_CFG_V41; + +/********* IPC5.1.7 ͳƹ Begin 2014-03-21***********/ +//ṹ +typedef struct tagNET_DVR_PDC_RULE_COND +{ + DWORD dwSize; //ṹС + DWORD dwChannel; //ͨ + DWORD dwID; //IDೡϰ汾SDK豸ʱֽΪ0ֽΪ0ʱҲĬΪ1 + BYTE byRes[60]; +}NET_DVR_PDC_RULE_COND, *LPNET_DVR_PDC_RULE_COND; + +//߽ṹ +typedef struct tagNET_VCA_POLYLINE +{ + NET_VCA_POINT struPoint[4]; //ߵ +}NET_VCA_POLYLINE, *LPNET_VCA_POLYLINE; + +//ýṹ +typedef struct tagNET_DVR_PDC_RULE_CFG_V42 +{ + DWORD dwSize; //ṹС + BYTE byEnable; //Ƿ񼤻; + BYTE byOSDEnable;//ͳOSDʾǷ, 0-0-ޣ1-ǣ0-뿪 2-룬 3-뿪 豸IJOSDӶӦޣöӦ/뿪4-5-; + BYTE byCurDetectType;//ǰͣ0-Σ1-, 2-߼ + BYTE byInterferenceSuppression; //ƣλʾ,0-δѡ,1-ѡbit0-Ӱbit1-ǻbit2-Ƴ + NET_VCA_POINT struOSDPoint;//ͳʾOSDʾϽ + //ϴڣ0-151-12-53-104-205-306-60λ + BYTE byDataUploadCycle; + //ÿϴʹܣ0-رգ1- + BYTE bySECUploadEnable; + BYTE byEmailDayReport;//ձʹ 0-رգ1- + BYTE byEmailWeekReport;//ܱʹ 0-رգ1- + BYTE byEmailMonthReport;//±ʹ0-رգ1- + BYTE byEmailYearReport;//걨ʹ0-رգ1- + BYTE byRes2[6];// ֽ + NET_VCA_POLYGON struPolygon; // + NET_DVR_PDC_ENTER_DIRECTION struEnterDirection; // 뷽 + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + NET_DVR_TIME_EX struDayStartTime; //쿪ʼʱ䣬ʱЧ + NET_DVR_TIME_EX struNightStartTime; //ҹʼʱ䣬ʱЧ + NET_DVR_HANDLEEXCEPTION_V40 struAlarmHandleType; /*ʽ ֧ϴ*/ + BYTE byDetecteSensitivity;//ĿȣΧ1-100Ĭ50 + BYTE byGenerateSpeedSpace;//Ŀٶȣ򣩣Χ1-100Ĭ50 + BYTE byGenerateSpeedTime;// Ŀٶȣʱ򣩣Χ1-100Ĭ50 + BYTE byCountSpeed;// ٶȣΧ1-100Ĭ50 + BYTE byDetecteType;// Ŀͣ0-Զ1-ͷ2-ͷ磬Ĭ0-ԶԶģʽDSP㷨IJø㷨 + BYTE byTargetSizeCorrect;//ĿߴΧ1-100Ĭ50 + BYTE byStreamOverlayRuleInfos;//Ϣ 0-1- + BYTE byRes3;// ֽ + NET_VCA_LINE struLine;// + BYTE byHeightFilterEnable;//߶ȹǷ0-1-رգ2- + BYTE byDetectThreshold;//ֵ,Χ[0,100],Ĭ 90(ڲʹãݲ)趨㷨бĿŶֵŶȵڸֵĿ꣬ڼ + BYTE byAidedTrackEnabled;//أ0~1~رգĬϿ(ڲʹ) ڿ͹ر㷨ģеĹԱӾ׼ȡ + BYTE byRes4; + float fHeightFilter;//˸߶ȣλףĬֵ120ףΧ40-200סbyHeightFilterEnableΪ2DzЧ + BYTE byCalibrateType;//궨ͣ0-δб궨1-Զ궨2-ֶ궨 + BYTE byCountingType;//ʽ 0-,1-봥,2-Ƶ + BYTE bySignalType;//ź 0-ƽ1- + BYTE byRS485TransmissionEnabled;//485 0-رգ1- + float fTiltAngle;//,λȣĬֵ0ǷΧ0-180,ֻ + float fHeelAngle;//б,λȣбĬֵ0бǷΧ-90-90,ֻ + float fHeight;//߶ȣ߶ȵλף߶Ĭֵ300ף߶ȷΧ200-500,byCalibrateTypeΪ2ʱЧʱֻ + NET_VCA_POLYGON struCountPolygon;//򣺸òĬΪֻԣͨзڵ㣬ò֧á + NET_VCA_POLYGON struAutoCalibPolygon;//궨򣬵byCalibrateTypeΪ1ʱЧ + NET_DVR_TIME_EX struDailyResetTime; //ʱ + NET_VCA_POLYLINE struPolyLine;//߼ߺstruLineʾ + BYTE byRes[4]; //ֽ +}NET_DVR_PDC_RULE_CFG_V42, *LPNET_DVR_PDC_RULE_CFG_V42; +/********* IPC5.1.7 ͳƹ End 2014-03-21***********/ + +//ðϢṹ +typedef struct tagNET_DVR_TRIAL_VERSION_CFG +{ + DWORD dwSize; + WORD wReserveTime; //ʣʱ䣬0xffffʾЧλ + BYTE byRes[62]; +}NET_DVR_TRIAL_VERSION_CFG, *LPNET_DVR_TRIAL_VERSION_CFG; + +typedef struct tagNET_DVR_SYN_CHANNEL_NAME_PARAM +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byRes[64]; +}NET_DVR_SYN_CHANNEL_NAME_PARAM, *LPNET_DVR_SYN_CHANNEL_NAME_PARAM; + +typedef struct tagNET_DVR_RESET_COUNTER_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿã0-ã1- + BYTE byMode; //Чģʽ0-ʱ1-ֶ + BYTE byRes1[2]; + NET_DVR_TIME_EX struTime[MAX_DAYS];//ʱ䣬ʱЧ + BYTE byRes[64]; +}NET_DVR_RESET_COUNTER_CFG, *LPNET_DVR_RESET_COUNTER_CFG; + +typedef struct tagNET_DVR_VCA_CTRLINFO_COND +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struStreamInfo; + BYTE byRes[64]; +}NET_DVR_VCA_CTRLINFO_COND, *LPNET_DVR_VCA_CTRLINFO_COND; + +#define NET_SDK_MAX_RELATED_CHAN_NUM 4 //ͨ + +typedef struct tagNET_DVR_VCA_CTRLINFO_CFG +{ + DWORD dwSize; + BYTE byVCAEnable; //Ƿ + BYTE byVCAType; //ͣVCA_CHAN_ABILITY_TYPE + BYTE byStreamWithVCA; //ǷϢ + BYTE byMode; //ģʽATM ʱVCA_CHAN_MODE_TYPE ,TFS ʱ TFS_CHAN_MODE_TYPE쳣ΪʱBEHAVIOR_SCENE_MODE_TYPE + BYTE byControlType; //ͣλʾ0-1- + //byControlType &1 ǷץĹ + //byControlType &2 Ƿǰ豸 + BYTE byRes1[3]; + WORD wRelatedChannel[NET_SDK_MAX_RELATED_CHAN_NUM/*4*/];/*ͨţ0-ǰATM豸ʹãͨģʽΪATMʱԹһ·ATMͨ*/ + BYTE byRes[72]; //Ϊ0 +}NET_DVR_VCA_CTRLINFO_CFG, *LPNET_DVR_VCA_CTRLINFO_CFG; + +//ͳƲ Ϊڲؼֲ +// HUMAN_GENERATE_RATE +// ĿٶȲPDCĿٶȡٶԽ죬ĿԽɡƵϲԱȶȽϵʱõĹСʱӦӿĿٶȣ Ŀ©죻ƵжԱȶȽϸʱ߹ϴʱӦýĿٶȣԼ졣ĿٶȲ51ٶ5죬ĬϲΪ3 +// +// DETECT_SENSITIVE +// ĿȿƲPDCһ򱻼ΪĿȡԽߣԽױΪĿ꣬ԽԽѼΪĿꡣƵϲԱȶȽϵʱӦ߼ȣ Ŀ©죻ƵжԱȶȽϸʱӦýͼȣԼ졣Ӧ51ͣ5ߣĬϼΪ3 +// TRAJECTORY_LEN +// ɳȿƲʾʱҪĿλءӦ51ɳ5ɳ̣죬ĬϼΪ3 +// TRAJECT_CNT_LEN +// ȿƲʾʱҪĿλءӦ51Ҫ󳤶5Ҫ󳤶̣죬ĬϼΪ3 +// PREPROCESS +// ͼԤƲ0 - 1 - ĬΪ0 +// CAMERA_ANGLE +// Ƕ 0 - б 1 - ֱĬΪ0 +typedef enum tagPDC_PARAM_KEY +{ + HUMAN_GENERATE_RATE = 50, // Ŀٶ 50ʼ + DETECT_SENSITIVE = 51, // +}PDC_PARAM_KEY; + +typedef struct tagNET_DVR_PDC_TARGET_INFO +{ + DWORD dwTargetID; // Ŀid + NET_VCA_RECT struTargetRect; // Ŀ + BYTE byRes1[8]; // ֽ +}NET_DVR_PDC_TARGET_INFO, *LPNET_DVR_PDC_TARGET_INFO; + +typedef struct tagNET_DVR_PDC_TARGET_IN_FRAME +{ + BYTE byTargetNum; //Ŀ + BYTE byRes1[3]; + NET_DVR_PDC_TARGET_INFO struTargetInfo[MAX_TARGET_NUM]; //ĿϢ + BYTE byRes2[8]; // ֽ +}NET_DVR_PDC_TARGET_IN_FRAME, *LPNET_DVR_PDC_TARGET_IN_FRAME; + +typedef struct tagNET_DVR_PDC_ALRAM_INFO +{ + DWORD dwSize; // PDCϴṹС + BYTE byMode; // 0 ֡ͳƽ 1Сʱͳƽ 2 źڡͳʼʱ䡱&&ͳƽʱ䡱 + BYTE byChannel; // ϴͨ + /********* IPC5.1.7 Begin 2014-03-21***********/ + BYTE bySmart; //רҵܷ0Smart 1 + BYTE byRes1; // ֽ + /********* IPC5.1.7 End 2014-03-21***********/ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + union + { + struct // ֡ͳƽʱʹ + { + DWORD dwRelativeTime; // ʱ + DWORD dwAbsTime; // ʱ + BYTE byTimeDiffFlag; /*ʱֶǷЧ 0-ʱЧ 1-ʱЧ */ + char cTimeDifferenceH; /*UTCʱСʱ-12 ... +14 +ʾ,byTimeDiffFlagΪ1ʱЧ*/ + char cTimeDifferenceM; /*UTCʱӣ-30, 30, 45 +ʾbyTimeDiffFlagΪ1ʱЧ*/ + BYTE byRes[89]; + }struStatFrame; + struct + { + NET_DVR_TIME tmStart; // ͳʼʱ + NET_DVR_TIME tmEnd; // ͳƽʱ + BYTE byTimeDifferenceFlag; /*0-ĬΪcStartTimeDifferenceH,ʱϢЧ1-ʱϢЧ*/ + char cStartTimeDifferenceH; /*ʼʱUTCʱСʱ-12 ... +14+ʾ*/ + char cStartTimeDifferenceM; /*ʼʱUTCʱӣ-30, 30, 45+ʾ*/ + char cStopTimeDifferenceH; /*ʱUTCʱСʱ-12 ... +14+ʾ*/ + char cStopTimeDifferenceM; /*ʱUTCʱӣ-30, 30, 45+ʾ*/ + BYTE byRes[87]; + }struStatTime; + }uStatModeParam; // Ϊһ ֡ʱ֡ĿϢ СʱͳƽҪͳʱ + DWORD dwLeaveNum; // 뿪 + DWORD dwEnterNum; // + BYTE byBrokenNetHttp; //־λ0-شݣ1-ش + BYTE byRes3; + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + DWORD dwPassingNum; // ǻûд롢뿪 + DWORD dwChildLeaveNum; // С뿪 + DWORD dwChildEnterNum; // С + DWORD dwDuplicatePeople; // ظ + DWORD dwXmlLen;//XML͸ݳ, EventNotificationAlert XML Blockݳ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pXmlBuf; // XMLϢָ,XMLӦEventNotificationAlert XML Block +#else + char* pXmlBuf; // XMLϢָ,XMLӦEventNotificationAlert XML Block + BYTE byRes4[4]; +#endif + BYTE byRes2[8]; // ֽ +}NET_DVR_PDC_ALRAM_INFO, *LPNET_DVR_PDC_ALRAM_INFO; + + +// Ϣѯ +typedef struct tagNET_DVR_PDC_QUERY +{ + NET_DVR_TIME tmStart; + NET_DVR_TIME tmEnd; + DWORD dwLeaveNum; + DWORD dwEnterNum; + BYTE byRes1[256]; +}NET_DVR_PDC_QUERY, *LPNET_DVR_PDC_QUERY; + +typedef struct tagNET_DVR_POSITION_RULE_CFG +{ + DWORD dwSize; // ṹС + NET_DVR_PTZ_POSITION struPtzPosition; // λϢ + NET_VCA_RULECFG struVcaRuleCfg; //Ϊ + BYTE byRes2[80]; // ֽ +}NET_DVR_POSITION_RULE_CFG, *LPNET_DVR_POSITION_RULE_CFG; + +typedef struct tagNET_DVR_POSITION_RULE_CFG_V41 +{ + DWORD dwSize; // ṹС + NET_DVR_PTZ_POSITION struPtzPosition; // λϢ + NET_VCA_RULECFG_V41 struVcaRuleCfg; //Ϊ + BYTE byTrackEnable; //Ƿ + BYTE byRes1; + WORD wTrackDuration; //ʱ䣬λs + BYTE byRes2[76]; // ֽ +}NET_DVR_POSITION_RULE_CFG_V41, *LPNET_DVR_POSITION_RULE_CFG_V41; + + +typedef struct tagNET_DVR_LIMIT_ANGLE +{ + BYTE byEnable; // Ƿóλ + BYTE byRes1[3]; + NET_DVR_PTZPOS struUp; // λ + NET_DVR_PTZPOS struDown; // λ + NET_DVR_PTZPOS struLeft; // λ + NET_DVR_PTZPOS struRight; // λ + BYTE byRes2[20]; +}NET_DVR_LIMIT_ANGLE, *LPNET_DVR_LIMIT_ANGLE; + +typedef struct tagNET_DVR_POSITION_INDEX +{ + BYTE byIndex; // + BYTE byRes1; + WORD wDwell; // ͣʱ + BYTE byRes2[4]; // ֽ +}NET_DVR_POSITION_INDEX, *LPNET_DVR_POSITION_INDEX; + +#define MAX_POSITION_NUM 10 +typedef struct tagNET_DVR_POSITION_TRACK_CFG +{ + DWORD dwSize; + BYTE byNum; // + BYTE byRes1[3]; + NET_DVR_POSITION_INDEX struPositionIndex[MAX_POSITION_NUM]; + BYTE byRes2[8]; +}NET_DVR_POSITION_TRACK_CFG, *LPNET_DVR_POSITION_TRACK_CFG; + +//Ѳ·Ϣ +typedef struct tagNET_DVR_PATROL_SCENE_INFO +{ + WORD wDwell; // ͣʱ 30-300 + BYTE byPositionID; // 1-10Ĭ0ʾѲ㲻ӳ + BYTE byRes[5]; +}NET_DVR_PATROL_SCENE_INFO, *LPNET_DVR_PATROL_SCENE_INFO; + +// ѲϢ +typedef struct tagNET_DVR_PATROL_TRACKCFG +{ + DWORD dwSize; // ṹС + NET_DVR_PATROL_SCENE_INFO struPatrolSceneInfo[10]; // Ѳ· + BYTE byRes[16]; // ֽ +}NET_DVR_PATROL_TRACKCFG, *LPNET_DVR_PATROL_TRACKCFG; + +//ع˵ýṹ +typedef struct tagNET_DVR_TRACK_PARAMCFG +{ + DWORD dwSize; // ṹС + WORD wAlarmDelayTime; // ʱʱ䣬Ŀǰֻ֧ȫ Χ1-120 + WORD wTrackHoldTime; // ʱ Χ0-300 + BYTE byTrackMode; // IPDOME_TRACK_MODE + BYTE byPreDirection; // Ԥ 0- 1- + BYTE byTrackSmooth; // 0- 1- + BYTE byZoomAdjust; // ϵ μ± + BYTE byMaxTrackZoom; //ϵ,0-ʾĬϱϵ,ȼ6-궨ֵ*1.0(Ĭ),1-5ΪС궨ֵֵԽССıԽ,7-15ΪŴֵԽ󣬷ŴıԽ + BYTE byStopTrackWhenFindFace; //⵽Ƿֹͣ 0- 1- + BYTE byStopTrackThreshold; //ֵֹ + BYTE byRes[9]; // ֽ +}NET_DVR_TRACK_PARAMCFG, *LPNET_DVR_TRACK_PARAMCFG; + +// о +typedef struct tagNET_DVR_DOME_MOVEMENT_PARAM +{ + WORD wMaxZoom; // ϵ + BYTE byRes[42]; // ֽ +}NET_DVR_DOME_MOVEMENT_PARAM, *LPNET_DVR_DOME_MOVEMENT_PARAM; + +/********************************ܽͨ¼ begin****************************************/ +#define MAX_REGION_NUM 8 // бĿ +#define MAX_TPS_RULE 8 // Ŀ +#define MAX_AID_RULE 8 // ¼Ŀ +#define MAX_LANE_NUM 8 // 󳵵Ŀ + +//ͨ¼ͣ +typedef enum tagTRAFFIC_AID_TYPE +{ + CONGESTION = 0x01, //ӵ + PARKING = 0x02, //ͣ + INVERSE = 0x04, // + PEDESTRIAN = 0x08, // + DEBRIS = 0x10, // Ƭ + SMOKE = 0x20, // + OVERLINE = 0x40, //ѹ + VEHICLE_CONTROL_LIST = 0x80, //ֹ + SPEED = 0x100, // + LANECHANGE = 0x200, // + TURNAROUND = 0x400, //ͷ + VEHICLE_OCCUPANCY_NONVEHICLE = 0x800, //ռ÷ǻλ + GASSER = 0x1000, // + ROADBLOCK = 0x2000, //· + CONSTRUCTION = 0x4000, //ʩ + TRAFFIC_ACCIDENT = 0x8000, //ͨ¹ʼ⣨ͨ¹Ŀǰ¹ʣ׷βв㷨жϳ복֮н棬򱨾 + PARALLEL_PARKING = 0x10000, //෽λͣ + FOG_DETECTION = 0x20000, //Ũ + OCCUPY_EMERGENCY_LANE = 0x40000, //ռý + CONFLAGRATION = 0X80000, // + TFS_MANUAL_TRIGGER = 0x100000, //ֶΥȡ֤¼ + LOADING_DOCK_TRIGGER_UPLOAD = 0x200000, //̨ϴ + OCCUPY_OVERTAKING_LANE = 0x400000, //ռó + PROHIBITION_MARK_VIOLATION = 0x800000, //Υ־ + CHECK_POINT = 0x1000000, // + SUDDEN_SPEED_DROP = 0x2000000, //ٶ轵 + SLOW_MOVING = 0x4000000 // +}TRAFFIC_AID_TYPE; + +typedef enum tagTRAFFIC_SCENE_MODE +{ + FREEWAY = 0, // ٻⳡ + TUNNEL, // + BRIDGE // +}TRAFFIC_SCENE_MODE; + +typedef enum tagITS_ABILITY_TYPE +{ + ITS_CONGESTION_ABILITY = 0x01, //ӵ + ITS_PARKING_ABILITY = 0x02, //ͣ + ITS_INVERSE_ABILITY = 0x04, // + ITS_PEDESTRIAN_ABILITY = 0x08, // + ITS_DEBRIS_ABILITY = 0x10, // Ƭ + ITS_SMOKE_ABILITY = 0x20, //- + ITS_OVERLINE_ABILITY = 0x40, //ѹ + ITS_VEHICLE_CONTROL_LIST_ABILITY = 0x80, //ֹ + ITS_SPEED_ABILITY = 0x100, // + ITS_LANECHANGE_ABILITY = 0x200, // + ITS_TURNAROUND_ABILITY = 0x400, //ͷ + ITS_LANE_VOLUME_ABILITY = 0x010000, // + ITS_LANE_VELOCITY_ABILITY = 0x020000, //ƽٶ + ITS_TIME_HEADWAY_ABILITY = 0x040000, //ͷʱ + ITS_SPACE_HEADWAY_ABILITY = 0x080000, //ͷ + ITS_TIME_OCCUPANCY_RATIO_ABILITY = 0x100000, //ռʣʱ) + ITS_SPACE_OCCUPANCY_RATIO_ABILITY = 0x200000, //ռʣٷֱȼ㣨ռ) + ITS_LANE_QUEUE_ABILITY = 0x400000, //Ŷӳ + ITS_VEHICLE_TYPE_ABILITY = 0x800000, // + ITS_TRAFFIC_STATE_ABILITY = 0x1000000 //ͨ״̬ +}ITS_ABILITY_TYPE; + +// ͨͳƲ +typedef enum tagITS_TPS_TYPE +{ + LANE_VOLUME = 0x01, // + LANE_VELOCITY = 0x02, //ٶ + TIME_HEADWAY = 0x04, //ͷʱ + SPACE_HEADWAY = 0x08, //ͷ + TIME_OCCUPANCY_RATIO = 0x10, //ռ (ʱ) + SPACE_OCCUPANCY_RATIO = 0x20, //ռʣٷֱȼ(ռ) + QUEUE = 0x40, //Ŷӳ + VEHICLE_TYPE = 0x80, // + TRAFFIC_STATE = 0x100 //ͨ״̬ +}ITS_TPS_TYPE; + +typedef struct tagNET_DVR_REGION_LIST +{ + DWORD dwSize; // ṹС + BYTE byNum; // + BYTE byRes1[3]; // ֽ + NET_VCA_POLYGON struPolygon[MAX_REGION_NUM]; // + BYTE byRes2[20]; // ֽ +}NET_DVR_REGION_LIST,*LPNET_DVR_REGION_LIST; + + +// ṹ +typedef struct tagNET_DVR_DIRECTION +{ + NET_VCA_POINT struStartPoint; // ʼ + NET_VCA_POINT struEndPoint; // +}NET_DVR_DIRECTION, *LPNET_DVR_DIRECTION; + +// +typedef struct tagNET_DVR_ONE_LANE +{ + BYTE byEnable; // Ƿ + BYTE byRes1[11]; // ֽ + BYTE byLaneName[NAME_LEN]; // + NET_DVR_DIRECTION struFlowDirection;// ڳ + NET_VCA_POLYGON struPolygon; // +}NET_DVR_ONE_LANE, *LPNET_DVR_ONE_LANE; + +// +typedef struct tagNET_DVR_LANE_CFG +{ + DWORD dwSize; // ṹС + NET_DVR_ONE_LANE struLane[MAX_LANE_NUM]; // ±ΪID + BYTE byRes1[40]; // ֽ +}NET_DVR_LANE_CFG, *LPNET_DVR_LANE_CFG; + +// ͨ¼ +typedef struct tagNET_DVR_AID_PARAM +{ + WORD wParkingDuration; // Υͣ 10-120s + WORD wPedestrianDuration; // ˳ʱ 1-120s + WORD wDebrisDuration; // ʱ 10-120s + WORD wCongestionLength; // ӵ³ֵ 5-200ף + WORD wCongestionDuration; // ӵ³ 10-120s + WORD wInverseDuration; // гʱ 1-10s + WORD wInverseDistance; // оֵ λm Χ[2-100] Ĭ 10 + WORD wInverseAngleTolerance; // Ƕƫ 90-180,ļн + WORD wIllegalParkingTime; // Υͣʱ[4,60]λ ,TFS(ͨΥȡ֤) ģʽ + WORD wIllegalParkingPicNum; // ΥͣͼƬ[1,6], TFS(ͨΥȡ֤) ģʽ + BYTE byMergePic; // ͼƬƴ,TFS ģʽ 0- ƴ 1- ƴ + BYTE byRes1[23]; // ֽ +}NET_DVR_AID_PARAM, *LPNET_DVR_AID_PARAM; + +// ͨ¼ṹ +typedef struct tagNET_DVR_ONE_AID_RULE +{ + BYTE byEnable; // Ƿ¼ + BYTE byRes1[3]; // ֽ + BYTE byRuleName[NAME_LEN]; // + DWORD dwEventType; // ͨ¼ TRAFFIC_AID_TYPE + NET_VCA_SIZE_FILTER struSizeFilter; // ߴ + NET_VCA_POLYGON struPolygon; // + NET_DVR_AID_PARAM struAIDParam; // ¼ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_2];//ʱ + NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //ʽ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ,Ϊ1ʾͨ + BYTE byRes2[20]; +}NET_DVR_ONE_AID_RULE, *LPNET_DVR_ONE_AID_RULE; + +// ͨ¼ +typedef struct tagNET_DVR_AID_RULECFG +{ + DWORD dwSize; // ṹС + BYTE byPicProType; //ʱͼƬʽ 0- 0-ϴ + BYTE byRes1[3]; // ֽ + NET_DVR_JPEGPARA struPictureParam; //ͼƬṹ + NET_DVR_ONE_AID_RULE struOneAIDRule[MAX_AID_RULE]; + BYTE byRes2[32]; +}NET_DVR_AID_RULECFG, *LPNET_DVR_AID_RULECFG; + +// ͨ¼ṹ(չ) +typedef struct tagNET_DVR_ONE_AID_RULE_V41 +{ + BYTE byEnable; // Ƿ¼ + BYTE byLaneNo; // + BYTE byRes1[2]; // ֽ + BYTE byRuleName[NAME_LEN]; // + DWORD dwEventType; // ͨ¼ TRAFFIC_AID_TYPE + NET_VCA_SIZE_FILTER struSizeFilter; // ߴ + NET_VCA_POLYGON struPolygon; // + NET_DVR_AID_PARAM struAIDParam; // ¼ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];// ʱ + NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //ʽ + BYTE byRelRecordChan[MAX_IVMS_IP_CHANNEL]; //¼ͨ1ʾͨ0ʾ + BYTE byRes2[60]; // +}NET_DVR_ONE_AID_RULE_V41, *LPNET_DVR_ONE_AID_RULE_V41; + +// ͨ¼(չ) +typedef struct tagNET_DVR_AID_RULECFG_V41 +{ + DWORD dwSize; // ṹС + BYTE byPicProType; // ʱͼƬʽ 0- 0-ϴ + BYTE byRes1[3]; // ֽ + NET_DVR_JPEGPARA struPictureParam; // ͼƬṹ + NET_DVR_ONE_AID_RULE_V41 struAIDRule[MAX_AID_RULE]; // + BYTE byRes2[128]; // +} NET_DVR_AID_RULECFG_V41, *LPNET_DVR_AID_RULECFG_V41; + +// ͨͳƲṹ +typedef struct tagNET_DVR_ONE_TPS_RULE +{ + BYTE byEnable; //Ƿʹܳͨ + BYTE byLaneID; //ID + BYTE byRes1[2]; + DWORD dwCalcType; //ͳƲITS_TPS_TYPE + NET_VCA_SIZE_FILTER struSizeFilter; //ߴ + NET_VCA_POLYGON struVitrualLoop; //Ȧ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_2];//ʱ + NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //ʽ,һΪǷϴģܲҪ + BYTE byRes2[20]; //ֽ +}NET_DVR_ONE_TPS_RULE, *LPNET_DVR_ONE_TPS_RULE; + +// ͨͳƹýṹ +typedef struct tagNET_DVR_TPS_RULECFG +{ + DWORD dwSize; // ṹС + NET_DVR_ONE_TPS_RULE struOneTpsRule[MAX_TPS_RULE]; // ±ӦͨID + BYTE byRes2[40]; // ֽ +}NET_DVR_TPS_RULECFG, *LPNET_DVR_TPS_RULECFG; + +// ͨͳƲṹ(չ) +typedef struct tagNET_DVR_ONE_TPS_RULE_V41 +{ + BYTE byEnable; //Ƿʹܳͨ + BYTE byLaneID; //ID + BYTE byRes1[2]; // + DWORD dwCalcType; // ͳƲITS_TPS_TYPE + NET_VCA_SIZE_FILTER struSizeFilter; //ߴ + NET_VCA_POLYGON struVitrualLoop; //Ȧ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //ʽ + BYTE byRes2[60]; // ֽ +}NET_DVR_ONE_TPS_RULE_V41, *LPNET_DVR_ONE_TPS_RULE_V41; + + +// ͨͳƹýṹ(չ) +typedef struct tagNET_DVR_TPS_RULECFG_V41 +{ + DWORD dwSize; // ṹС + NET_DVR_ONE_TPS_RULE_V41 struOneTpsRule[MAX_TPS_RULE]; // ±ӦͨID + BYTE byRes[128]; // +}NET_DVR_TPS_RULECFG_V41, *LPNET_DVR_TPS_RULECFG_V41; + +//ͨ¼չ +typedef enum tagTRAFFIC_AID_TYPE_EX +{ + ENUM_AID_TYPE_CONGESTION = 1, //ӵ + ENUM_AID_TYPE_PARKING = 2, //ͣ + ENUM_AID_TYPE_INVERSE = 3, // + ENUM_AID_TYPE_PEDESTRIAN = 4, // + ENUM_AID_TYPE_DEBRIS = 5, // Ƭ + ENUM_AID_TYPE_SMOKE = 6, // + ENUM_AID_TYPE_OVERLINE = 7, //ѹ + ENUM_AID_TYPE_VEHICLE_CONTROL_LIST = 8, //ֹ + ENUM_AID_TYPE_SPEED = 9, // + ENUM_AID_TYPE_LANECHANGE = 10, // + ENUM_AID_TYPE_TURNAROUND = 11, //ͷ + ENUM_AID_TYPE_VEHICLE_OCCUPANCY_NONVEHICLE = 12, //ռ÷ǻλ + ENUM_AID_TYPE_GASSER = 13, // + ENUM_AID_TYPE_ROADBLOCK = 14, //· + ENUM_AID_TYPE_CONSTRUCTION = 15, //ʩ + ENUM_AID_TYPE_TRAFFIC_ACCIDENT = 16, //ͨ¹ʼ⣨ͨ¹Ŀǰ¹ʣ׷βв㷨жϳ복֮н棬򱨾 + ENUM_AID_TYPE_PARALLEL_PARKING = 17, //෽λͣ + ENUM_AID_TYPE_FOG_DETECTION = 18, //Ũ + ENUM_AID_TYPE_OCCUPY_EMERGENCY_LANE = 19, //ռý + ENUM_AID_TYPE_CONFLAGRATION = 20, // + ENUM_AID_TYPE_TFS_MANUAL_TRIGGER = 21, //ֶΥȡ֤¼ + ENUM_AID_TYPE_LOADING_DOCK_TRIGGER_UPLOAD = 22, //̨ϴ + ENUM_AID_TYPE_OCCUPY_OVERTAKING_LANE = 23, //ռó + ENUM_AID_TYPE_PROHIBITION_MARK_VIOLATION = 24, //Υ־ + ENUM_AID_TYPE_CHECK_POINT = 25, // + ENUM_AID_TYPE_SUDDEN_SPEED_DROP = 26, //ٶ轵 + ENUM_AID_TYPE_SLOW_MOVING = 27, // + ENUM_AID_TYPE_NOT_KEEP_DISTANCE = 28, //δֳ + ENUM_AID_TYPE_NOT_SLOW_ZEBRA_CROSSING = 29, //δ + ENUM_AID_TYPE_OVER_TAKE_RIGHT_SIDE = 30, //Ҳ೬ + ENUM_AID_TYPE_LOW_SPEED = 31, //ʻ + ENUM_AID_TYPE_DRAG_RACING = 32, //쭳 + ENUM_AID_TYPE_CHANGE_LANE_CONTINUOUSLY = 33, // + ENUM_AID_TYPE_S_SHARP_DRIVING = 34, //ʻ + ENUM_AID_TYPE_LARGE_VEHICLE_OCCUPY_LINE = 35, //ռ + ENUM_AID_TYPE_ROAD_GROUP = 36, //·Աۼ쳣ΪԱۼ㷨ͬӦóͬ, ͨ¼Ӧڸ١Ƚͨ쳣ΪԱۼӦóǽ档 + ENUM_AID_TYPE_SINGLE_VEHICLE_BREAKDOWN = 37, //ê + ENUM_AID_TYPE_BLACK_SMOKE_VEHICLE = 38, //̳ + ENUM_AID_TYPE_VEHNOYIELDPEDEST = 39, // + ENUM_AID_TYPE_ILLEGALMANNEDVEH = 40, //Υ + ENUM_AID_TYPE_ILLEGALMANNEDNONMOTORVEH = 41, //ǻΥ + ENUM_AID_TYPE_UMBRELLATENTINSTALL = 42, //ǻΥװ + ENUM_AID_TYPE_NONMOTORVEHONVEHLANE = 43, //ǻռû + ENUM_AID_TYPE_WEARINGNOHELMET = 44, //ǻδͷ + ENUM_AID_TYPE_PEDESTREDLIGHTRUNNING = 45, //˴ + ENUM_AID_TYPE_PEDESTONNONMOTORVEHLANE = 46, //˷ǻ + ENUM_AID_TYPE_PEDESTONVEHLANE = 47, //˻ + ENUM_AID_TYPE_OCCUPYDEDICATEDLANE = 48,//ռרó + ENUM_AID_TYPE_NOTDRIVEINDEDICATEDLANE = 49,//δרóʻ +}TRAFFIC_AID_TYPE_EX; + +// ͨ¼Ϣ +typedef struct tagNET_DVR_AID_INFO +{ + BYTE byRuleID; // ţΪýṹ±꣬0-16 + BYTE byVisibilityLevel; // ܼȵȼ0-1-~2-~3-~Ũ4-Ũ + BYTE byRes1[2]; + BYTE byRuleName[NAME_LEN]; // + DWORD dwAIDType; // ¼ + NET_DVR_DIRECTION struDirect; // ָ + BYTE bySpeedLimit; //ֵλkm/h[0,255] + BYTE byCurrentSpeed; //ǰٶֵλkm/h[0,255] + BYTE byVehicleEnterState;//״̬ 0-Ч 1-ʻ 2-ʻ + BYTE byState; //0-仯ϴ1-Ѳϴ2-ǰ豸ʱץĵϴʵƽ̨γͼƬУڷ㷨ûм⵽ֵͣ2ڡdwAIDType;//¼͡Ϊ ͣ¼ʱЧ + BYTE byParkingID[16]; //ͣλ + DWORD dwAIDTypeEx; // ¼չ,οTRAFFIC_AID_TYPE_EX + BYTE byRes2[16]; // ֽ +}NET_DVR_AID_INFO, *LPNET_DVR_AID_INFO; + +// ͨ¼ +typedef struct tagNET_DVR_AID_ALARM +{ + DWORD dwSize; // ṹ + DWORD dwRelativeTime; // ʱ + DWORD dwAbsTime; // ʱ + NET_VCA_DEV_INFO struDevInfo; // ǰ豸Ϣ + NET_DVR_AID_INFO struAIDInfo; // ͨ¼Ϣ + DWORD dwPicDataLen; // ͼƬij Ϊ0ʾûͼƬ0ʾýṹͼƬ + BYTE *pImage; // ָͼƬָ + BYTE byRes[40]; // ֽ +}NET_DVR_AID_ALARM, *LPNET_DVR_AID_ALARM; + +// нṹ +typedef struct tagNET_DVR_LANE_QUEUE +{ + NET_VCA_POINT struHead; //ͷ + NET_VCA_POINT struTail; //β + DWORD dwLength; //ʵʶг λΪ [0-500] +}NET_DVR_LANE_QUEUE, *LPNET_DVR_LANE_QUEUE; + +typedef enum tagTRAFFIC_DATA_VARY_TYPE +{ + NO_VARY, //ޱ仯 + VEHICLE_ENTER, //Ȧ + VEHICLE_LEAVE, //뿪Ȧ + UEUE_VARY //б仯 +}TRAFFIC_DATA_VARY_TYPE; + +typedef struct tagNET_DVR_LANE_PARAM +{ + BYTE byRuleName[NAME_LEN]; // + BYTE byRuleID; //ţΪýṹ±꣬0-7 + BYTE byVaryType; //ͨ仯 TRAFFIC_DATA_VARY_TYPE + BYTE byLaneType; //л + BYTE byRes1; + DWORD dwLaneVolume; // ͳжٳͨ + DWORD dwLaneVelocity; //ٶȣ + DWORD dwTimeHeadway; //ͷʱ࣬ + DWORD dwSpaceHeadway; //ͷ࣬ + float fSpaceOccupyRation; //ռʣٷֱȼ㣨ռ) + NET_DVR_LANE_QUEUE struLaneQueue; //г + NET_VCA_POINT struRuleLocation; //Ȧĵλ + BYTE byRes2[32]; +}NET_DVR_LANE_PARAM, *LPNET_DVR_LANE_PARAM; + + +typedef struct tagNET_DVR_TPS_INFO +{ + DWORD dwLanNum; // ͨijĿ + NET_DVR_LANE_PARAM struLaneParam[MAX_TPS_RULE]; +}NET_DVR_TPS_INFO, *LPNET_DVR_TPS_INFO; + +typedef struct tagNET_DVR_TPS_ALARM +{ + DWORD dwSize; //ṹС + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + NET_DVR_TPS_INFO struTPSInfo; //ͨ¼Ϣ + BYTE byRes1[32]; //ֽ +}NET_DVR_TPS_ALARM, *LPNET_DVR_TPS_ALARM; + +typedef enum tagTRAFFIC_DATA_VARY_TYPE_EX_ENUM +{ + ENUM_TRAFFIC_VARY_NO = 0x00, //ޱ仯 + ENUM_TRAFFIC_VARY_VEHICLE_ENTER = 0x01, //Ȧ + ENUM_TRAFFIC_VARY_VEHICLE_LEAVE = 0x02, //뿪Ȧ + ENUM_TRAFFIC_VARY_QUEUE = 0x04, //б仯 + ENUM_TRAFFIC_VARY_STATISTIC = 0x08, //ͳݱ仯ÿӱ仯һΰƽٶȣռ/ʱռʣͨ״̬ +}TRAFFIC_DATA_VARY_TYPE_EX_ENUM; + +typedef struct tagNET_DVR_LANE_PARAM_V41 +{ + BYTE byRuleName[NAME_LEN]; // + BYTE byRuleID; // ţΪýṹ±꣬0-7 + BYTE byLaneType; // л + BYTE byTrafficState; // Ľͨ״̬0-Ч1-ͨ2-ӵ3- + BYTE byLaneNo; // + DWORD dwVaryType; // ͨ仯Ͳ TRAFFIC_DATA_VARY_TYPE_EX_ENUMλ + DWORD dwTpsType; // ݱ仯ͱ־ʾǰϴͳƲУЩЧITS_TPS_TYPE,λ + DWORD dwLaneVolume; // ͳжٳͨ + DWORD dwLaneVelocity; // ٶȣ + DWORD dwTimeHeadway ; // ͷʱ࣬ + DWORD dwSpaceHeadway; // ͷ࣬ + float fSpaceOccupyRation; // ռʣٷֱȼ㣨ռ) + float fTimeOccupyRation; // ʱռʣٷֱȼ + DWORD dwLightVehicle; // Сͳ + DWORD dwMidVehicle; // ͳ + DWORD dwHeavyVehicle; // ͳ + NET_DVR_LANE_QUEUE struLaneQueue; // г + NET_VCA_POINT struRuleLocation; // λȦ + DWORD dwOversizeVehicle; // ͳ + BYTE byRes2[60]; // +}NET_DVR_LANE_PARAM_V41, *LPNET_DVR_LANE_PARAM_V41; + + +typedef struct tagNET_DVR_TPS_INFO_V41 +{ + DWORD dwLanNum; // ͨijĿ + NET_DVR_LANE_PARAM_V41 struLaneParam[MAX_TPS_RULE]; + DWORD dwSceneID;//ID + BYTE byRes[28]; // +}NET_DVR_TPS_INFO_V41, *LPNET_DVR_TPS_INFO_V41; + +// +typedef struct tagNET_DVR_FACEDETECT_RULECFG +{ + DWORD dwSize; // ṹС + BYTE byEnable; // Ƿ + BYTE byEventType; //¼ͣ 0-쳣; 1-;2-쳣&;4-&쳣;5-&; 6-&쳣&; 7- + BYTE byUpLastAlarm; //2011-04-06 Ƿϴһεı + BYTE byUpFacePic; //Ƿϴͼ0-1- + BYTE byRuleName[NAME_LEN]; + NET_VCA_POLYGON struVcaPolygon; // + BYTE byPicProType; //ʱͼƬʽ 0- 0-ϴ + BYTE bySensitivity; // + WORD wDuration; // ʱֵ + NET_DVR_JPEGPARA struPictureParam; //ͼƬṹ + NET_VCA_SIZE_FILTER struSizeFilter; //ߴ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_2];//ʱ + NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //ʽ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ,Ϊ1ʾͨ + BYTE byPicRecordEnable; /*2012-3-1ǷͼƬ洢, 0-, 1-*/ + BYTE byRes1[3]; //ֽ + /* + ¼ͣĿǰ¼Ͱλʾѡ1ֻ߼ֽϣ + 0x00: Ч + 0x01: 쳣 + 0x02: + 0x04: + 0x08: ī + 0x10: 绰 + */ + DWORD dwEventTypeEx; //dwEventTypeExֶΪ0ʱbyEventTypeֶЧdwEventTypeExbyEventTypeֶζֵʱdwEventTypeExֶΪ׼ϲdwEventTypeExֶκ󣬻ὫֵͬbyEventTypeС + BYTE byRes2[32]; //ֽ +}NET_DVR_FACEDETECT_RULECFG, *LPNET_DVR_FACEDETECT_RULECFG; + +typedef struct tagNET_DVR_FACE_PIPCFG +{ + BYTE byEnable; //Ƿл + BYTE byBackChannel; //ͨţͨ + BYTE byPosition; //λã0-,1-,2-,3- + BYTE byPIPDiv; //ϵ(:廭)0-1:4,1-1:9,2-1:16 + BYTE byRes[4]; +}NET_DVR_FACE_PIPCFG, *LPNET_DVR_FACE_PIPCFG; + +typedef struct tagNET_DVR_FACEDETECT_RULECFG_V41 +{ + DWORD dwSize; // ṹС + BYTE byEnable; // Ƿ + BYTE byEventType; //¼ͣ 0-쳣; 1-;2-쳣&;4-&쳣;5-&; 6-&쳣&; 7- + BYTE byUpLastAlarm; //2011-04-06 Ƿϴһεı + BYTE byUpFacePic; //Ƿϴͼ0-1- + BYTE byRuleName[NAME_LEN]; + NET_VCA_POLYGON struVcaPolygon; // + BYTE byPicProType; //ʱͼƬʽ 0- 0-ϴ + BYTE bySensitivity; // + WORD wDuration; // ʱֵ + NET_DVR_JPEGPARA struPictureParam; //ͼƬṹ + NET_VCA_SIZE_FILTER struSizeFilter; //ߴ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //ʽ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ,Ϊ1ʾͨ + BYTE byPicRecordEnable; /*2012-10-22ǷͼƬ洢, 0-, 1-*/ + BYTE byRes1; + WORD wAlarmDelay; //2012-10-22ܱʱ0-5s,1-10,2-30s,3-60s,4-120s,5-300s,6-600s + NET_DVR_FACE_PIPCFG struFacePIP; //2012-11-7л + WORD wRelSnapChan[MAX_REL_SNAPCHAN_NUM]; //ץͼͨͨʱͬʱϴͨץͼƬ0ʾֵΪͨ + BYTE byRes2[2]; //ֽ + /* + ¼ͣĿǰ¼Ͱλʾѡ1ֻ߼ֽϣ + 0x00: Ч + 0x01: 쳣 + 0x02: + 0x04: + 0x08: ī + 0x10: 绰 + */ + DWORD dwEventTypeEx; //dwEventTypeExֶΪ0ʱbyEventTypeֶЧdwEventTypeExbyEventTypeֶζֵʱdwEventTypeExֶΪ׼ϲdwEventTypeExֶκ󣬻ὫֵͬbyEventTypeС + BYTE byRes[16]; //ֽ +}NET_DVR_FACEDETECT_RULECFG_V41, *LPNET_DVR_FACEDETECT_RULECFG_V41; + +typedef struct tagNET_DVR_FACEDETECT_ALARM +{ + DWORD dwSize; //ṹС + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + BYTE byRuleName[NAME_LEN]; // + NET_VCA_TARGET_INFO struTargetInfo;//ĿϢ + NET_VCA_DEV_INFO struDevInfo;//ǰ豸Ϣ + DWORD dwPicDataLen; //ͼƬij Ϊ0ʾûͼƬ0ʾýṹͼƬ*/ + BYTE byAlarmPicType; // 0-쳣ͼƬ 1- ͼƬ,2-, 3-ī, 4-绰 + BYTE byPanelChan; /*2012-3-1ͨͨ*/ + BYTE byRelAlarmPicNum; //ͨͼƬ + BYTE byRes1; + DWORD dwFacePicDataLen;//ͼƬij Ϊ0ʾûͼƬ0ʾýṹͼƬ*/ + DWORD dwAlarmID; //IDԱʶͨϱ0ʾЧ + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byRes2[42]; // ֽ + BYTE *pFaceImage; //ָͼָ + BYTE *pImage; //ָͼƬָ +}NET_DVR_FACEDETECT_ALARM, *LPNET_DVR_FACEDETECT_ALARM; + +typedef struct tagNET_DVR_EVENT_PARAM_UNION +{ + DWORD uLen[3]; // СΪ12ֽ + DWORD dwHumanIn; //˽ӽ 0 - 1- + float fCrowdDensity; // Աۼֵ +}NET_DVR_EVENT_PARAM_UNION, *LPNET_DVR_EVENT_PARAM_UNION; + +// Ŀǰֻ¼Աۼ¼ʵʱϴ +typedef struct tagNET_DVR_EVENT_INFO +{ + BYTE byRuleID; // Rule ID + BYTE byRes[3]; // ֽ + BYTE byRuleName[NAME_LEN]; // + DWORD dwEventType; // VCA_EVENT_TYPE + NET_DVR_EVENT_PARAM_UNION uEventParam; // +}NET_DVR_EVENT_INFO, *LPNET_DVR_EVENT_INFO; + +typedef struct tagNET_DVR_EVENT_INFO_LIST +{ + BYTE byNum; // ¼ʵʱϢ + BYTE byRes1[3]; // ֽ + NET_DVR_EVENT_INFO struEventInfo[MAX_RULE_NUM]; // ¼ʵʱϢ +}NET_DVR_EVENT_INFO_LIST,*LPNET_DVR_EVENT_INFO_LIST; + +typedef struct tagNET_DVR_RULE_INFO_ALARM +{ + DWORD dwSize; // ṹС + DWORD dwRelativeTime; // ʱ + DWORD dwAbsTime; // ʱ + NET_VCA_DEV_INFO struDevInfo; // ǰ豸Ϣ + NET_DVR_EVENT_INFO_LIST struEventInfoList; //¼Ϣб + BYTE byRes2[40]; // ֽ +}NET_DVR_RULE_INFO_ALARM, *LPNET_DVR_RULE_INFO_ALARM; + +//ʱ +typedef struct tagNET_DVR_ONE_SCENE_TIME +{ + BYTE byActive; //0 -Ч,1CЧ + BYTE byRes1[3]; // + DWORD dwSceneID; //ID + NET_DVR_SCHEDTIME struEffectiveTime; //Чʱ + BYTE byRes2[16]; // +}NET_DVR_ONE_SCENE_TIME, *LPNET_DVR_ONE_SCENE_TIME ; + +//Чʱ +typedef struct tagNET_DVR_SCENE_TIME_CFG +{ + DWORD dwSize; //ṹС + NET_DVR_ONE_SCENE_TIME struSceneTime[MAX_SCENE_TIMESEG_NUM]; //ʱ + BYTE byRes[64]; // +}NET_DVR_SCENE_TIME_CFG, *LPNET_DVR_SCENE_TIME_CFG; + + +//Ϣ +typedef struct tagNET_DVR_ONE_SCENE_CFG_ +{ + BYTE byEnable; //Ƿøó,0- 1- + BYTE byDirection; //ʾ 1-У2-У3-˫4-ɶ5-򱱣6-򶫣7-ɱϣ8- + BYTE byRes1[2]; // + DWORD dwSceneID; //ID(ֻ), 0 - ʾóЧ + BYTE bySceneName[NAME_LEN]; // + NET_DVR_PTZPOS struPtzPos; //ptz + DWORD dwTrackTime; //ʱ[5,300] 룬TFS(ͨȡ֤)ģʽЧ + BYTE byRes2[24]; // +}NET_DVR_ONE_SCENE_CFG, *LPNET_DVR_ONE_SCENE_CFG; + +//ýṹ +typedef struct tagNET_DVR_SCENE_CFG +{ + DWORD dwSize; //ṹС + NET_DVR_ONE_SCENE_CFG struSceneCfg[MAX_ITS_SCENE_NUM]; //Ϣ + BYTE byRes[40]; // +}NET_DVR_SCENE_CFG,*LPNET_DVR_SCENE_CFG; + +//ೡ +typedef struct tagNET_DVR_SCENE_COND +{ + DWORD dwSize; //ṹС + LONG lChannel; //ͨ + DWORD dwSceneID; //ID, 0-ʾóЧ + BYTE byRes[48]; // +}NET_DVR_SCENE_COND, *LPNET_DVR_SCENE_COND; + +//ȡ֤ʽ +typedef struct tagNET_DVR_FORENSICS_MODE +{ + DWORD dwSize; //ṹС + BYTE byMode; // 0-ֶȡ֤ ,1-Զȡ֤2-Զ;̬ȡ֤ + BYTE byRes[23]; // +}NET_DVR_FORENSICS_MODE,*LPNET_DVR_FORENSICS_MODE; + +//Ϣ +typedef struct tagNET_DVR_SCENE_INFO_ +{ + DWORD dwSceneID; //ID, 0 - ʾóЧ + BYTE bySceneName[NAME_LEN]; // + BYTE byDirection; //ʾ 1-У2-У3-˫4-ɶ5-򱱣6-򶫣7-ɱϣ8- + BYTE byRes1[3]; // + NET_DVR_PTZPOS struPtzPos; //Ptz + BYTE byRes2[64] ; // +}NET_DVR_SCENE_INFO,*LPNET_DVR_SCENE_INFO; + +//ͨ¼(չ) +typedef struct tagNET_DVR_AID_ALARM_V41 +{ + DWORD dwSize; //ṹ + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + NET_DVR_AID_INFO struAIDInfo; //ͨ¼Ϣ + NET_DVR_SCENE_INFO struSceneInfo; //Ϣ + DWORD dwPicDataLen; //ͼƬ + BYTE *pImage; //ָͼƬָ + // 0-ֱϴ; 1-ƴ洢URL(3.7Ver)ԭȵͼƬݱURLݣͼƬȱURL + BYTE byDataType; + BYTE byLaneNo; // + WORD wMilliSecond; //ʱ + //ʾţ·ڱšڲţ + BYTE byMonitoringSiteID[MONITORSITE_ID_LEN/*48*/]; + BYTE byDeviceID[DEVICE_ID_LEN/*48*/];//豸 + DWORD dwXmlLen;//XMLϢ + char* pXmlBuf;// XMLϢָ,XMLӦEventNotificationAlert XML Block + BYTE byTargetType;// Ŀͣ0~δ֪1~ˡ2~ֳ3~ֳ(˼з) + BYTE byRuleID;//ID,1-4,congestion¼˹ʱ + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byBrokenNetHttp; // ־λ0-شݣ1-ش + BYTE byRes[3]; // ֽ + DWORD dwPlateSmallPicDataLen; //СͼͼƬ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pPlateSmallImage; // //ָСͼָ +#else + char* pPlateSmallImage; //ָСͼָ + BYTE byRes1[4]; +#endif +}NET_DVR_AID_ALARM_V41, *LPNET_DVR_AID_ALARM_V41; + +//ͨͳϢ(չ) +typedef struct tagNET_DVR_TPS_ALARM_V41 +{ + DWORD dwSize; // ṹС + DWORD dwRelativeTime; // ʱ + DWORD dwAbsTime; // ʱ + NET_VCA_DEV_INFO struDevInfo; // ǰ豸Ϣ + NET_DVR_TPS_INFO_V41 struTPSInfo; // ͨͳϢ + //ʾţ·ڱšڲţ + BYTE byMonitoringSiteID[MONITORSITE_ID_LEN/*48*/]; + BYTE byDeviceID[DEVICE_ID_LEN/*48*/];//豸 + DWORD dwStartTime; // ʼͳʱ + DWORD dwStopTime; // ͳʱ + BYTE byRes[24]; // +} NET_DVR_TPS_ALARM_V41,*LPNET_DVR_TPS_ALARM_V41; + +/*******************************ܽͨ¼ end*****************************************/ + +#define XXX_MAJOR_VERSION 2 + +/* Ӱ汾ţŻֲṹģڼ汾ʱ31 */ + +#define XXX_SUB_VERSION 3 + +/* 汾ţbug31 */ + +#define XXX_REVISION_VERSION 4 + +typedef struct tagNET_DVR_VCA_VERSION +{ + WORD wMajorVersion; // 汾 + WORD wMinorVersion; // ΰ汾 + WORD wRevisionNumber; // + WORD wBuildNumber; // + WORD wVersionYear; // 汾- + BYTE byVersionMonth; // 汾- + BYTE byVersionDay; // 汾- + BYTE byType;/*㷨ƣ0-1-,2-쳣Ϊ,3-,4-ץ,5ʶ 6-Ա,7-ѧվ, + 8-ͳ,9-ֿ,10-ȫñ,11-ݼ㷨,12-ͳ,13-(˽Ŀṹ㷨)HMS, + 14-ʦΪ, 15-Աܶȣ16-쳣17-ڼ⣬18-Ա19-ģץģ20-HMSģ,21-̬Ʒ, + 22-ǹ㷨,23-ŶӼ*/ + BYTE byRes[7]; // ֽ +}NET_DVR_VCA_VERSION, *LPNET_DVR_VCA_VERSION; + + +/****************************** end***********************************/ + +/******************************ʶ begin******************************************/ +typedef struct tagNET_DVR_PLATE_PARAM +{ + BYTE byPlateRecoMode; //ʶģʽ,ĬΪ1(Ƶģʽ) + BYTE byBelive; //Ŷֵ, ֻƵʶʽ, ݱӳ̶, 󴥷ʸ߾, ©ʸ߾, 80-90Χ + BYTE byRes[22]; //ֽ +}NET_DVR_PALTE_PARAM, *LPNET_DVR_PALTE_PARAM; + +typedef struct tagNET_DVR_PLATECFG +{ + DWORD dwSize; + DWORD dwEnable; /* ǷƵʶ 0 1 */ + BYTE byPicProType; //ʱͼƬʽ 0- 0-ϴ + BYTE byRes1[3]; // ֽ + NET_DVR_JPEGPARA struPictureParam; //ͼƬṹ + NET_DVR_PALTE_PARAM struPlateParam; // ʶ + NET_DVR_HANDLEEXCEPTION struHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];//ʱ + BYTE byRelRecordChan[MAX_CHANNUM]; //¼ͨ,Ϊ1ʾͨ + BYTE byRes[20]; // ֽ +}NET_DVR_PLATECFG, *LPNET_DVR_PLATECFG; + +// ʶӽṹ +typedef struct tagNET_DVR_PLATE_INFO +{ + BYTE byPlateType; // + BYTE byColor; //ɫ + BYTE byBright; // + BYTE byLicenseLen; //ַ + BYTE byEntireBelieve; //ƵŶȣ-100 + BYTE byRegion; // ֵ 0-1-ŷ(EU)2-(ER)3-ŷ&˹(EU&CIS) ,4-ж(ME),5-̫(APAC),6-(޺,AfandAM),0xff- + BYTE byCountry; // ֵöCOUNTRY_INDEX֧"COUNTRY_ALL = 0xff, //ALL ȫ" + BYTE byArea; //ʡݣڲö٣ EMI_AREA + BYTE byPlateSize; //Ƴߴ磬0~δ֪1~long, 2~short(жʹ) + /*ϢʶǷNET_DVR_VEHICLE_ADDINFOṹ壩,0-޸Ϣ, 1-иϢ*/ + BYTE byAddInfoFlag; + //ֶbyCountryϣչ֮ʹøֶδbyCountryʹwCRIndexֶ + //Ϊ˼ûֵֶ256򣩣byCountryֵΪ0xfdֶЧ + WORD wCRIndex ;///ֵο_CR_ INDEX_ + BYTE byRes[4]; // +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + BYTE* pAddInfoBuffer; +#else + /*Ϣָ,ָNET_DVR_VEHICLE_ADDINFOṹ*/ + BYTE* pAddInfoBuffer; + BYTE byRes2[4]; +#endif + char sPlateCategory[MAX_CATEGORY_LEN/*8*/];//ƸϢ, жгƺԱߵСϢ(Ŀǰֻж֧) + DWORD dwXmlLen; //XMLϢ + char* pXmlBuf; // XMLϢָ,Ϊ COMM_ITS_PLATE_RESULCOMM_PLATE_RESULT_V50ʱЧXMLӦEventNotificationAlert XML Block + NET_VCA_RECT struPlateRect; //λ + char sLicense[MAX_LICENSE_LEN]; //ƺ,עжСҲ복ƺ룬Сֺͳƺмÿոָ + BYTE byBelieve[MAX_LICENSE_LEN]; //ʶַŶȣ⵽"A12345", ŶΪ,20,30,40,50,60,70ʾ""ȷĿֻ%"A"ֵȷĿ% +}NET_DVR_PLATE_INFO, *LPNET_DVR_PLATE_INFO; + +typedef struct tagNET_DVR_PLATERECO_RESULE +{ + DWORD dwSize; + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + NET_VCA_DEV_INFO struDevInfo; // ǰ豸Ϣ + NET_DVR_PLATE_INFO struPlateInfo; + DWORD dwPicDataLen; //ͼƬij Ϊ0ʾûͼƬ0ʾýṹͼƬ*/ + DWORD dwRes[4]; //Ϊ0 + BYTE *pImage; //ָͼƬָ +}NET_DVR_PLATERECO_RESULE, *LPNET_DVR_PLATERECO_RESULE; + +/******************************ʶ end******************************************/ + +/*******************************Ƶۺƽ̨***********************************/ +typedef struct +{ + NET_DVR_TIME strLogTime; + DWORD dwMajorType; //Main type 1-alarm; 2-abnormal; 3-operation; 0xff-all + DWORD dwMinorType; //Hypo-Type 0-all; + BYTE sPanelUser[MAX_NAMELEN]; //user ID for local panel operation + BYTE sNetUser[MAX_NAMELEN];//user ID for network operation + NET_DVR_IPADDR struRemoteHostAddr;//remote host IP + DWORD dwParaType;//parameter type + DWORD dwChannel;//channel number + DWORD dwDiskNumber;//HD number + DWORD dwAlarmInPort;//alarm input port + DWORD dwAlarmOutPort;//alarm output port + DWORD dwInfoLen; + BYTE byDevSequence;//λ + BYTE byMacAddr[MACADDR_LEN];//MACַ,6 + BYTE sSerialNumber[SERIALNO_LEN];//кţ48 + char sInfo[LOG_INFO_LEN - SERIALNO_LEN - MACADDR_LEN - 1 ]; +}NET_DVR_LOG_MATRIX, *LPNET_DVR_LOG_MATRIX; + +//2009-11-21 Ƶۺƽ̨ +typedef struct tagVEDIOPLATLOG +{ + BYTE bySearchCondition;//0-λ1-к2-MACַ + //λţ0-79ӦϵͳIJλţ + //0xffʾе־78K6467 + //0xfeʾ78Kϵ־0xfd־0xfc־ + BYTE byDevSequence; + BYTE sSerialNumber[SERIALNO_LEN];//кţ48 + BYTE byMacAddr[MACADDR_LEN];//MACַ,6 +} NET_DVR_VEDIOPLATLOG, *LPNET_DVR_VEDIOPLATLOG; + +typedef struct tagNET_DVR_CODESYSTEMABILITY +{ + DWORD dwSize; + DWORD dwAbilityVersion;//汾ţ16λʾ汾16λʾΰ汾 + DWORD dwSupportMaxVideoFrameRate;//λ(K) + /*λ: + 0:ʱ¼ + 1:ʱ|¼¼ + 2:ƶ¼ + 3:翪¼ + 4:ƶ|翪¼ + 5:ƶ&翪¼ + 6:ܽ¼ + 7:ⴥ¼ + 8:ʶ𴥷¼ + 9:ֶ¼*/ + DWORD dwSupportRecordType; + BYTE bySupportLinkMode;//λ:0λ:ʾ1λ:ʾ + BYTE bySupportStringRow;//ַ֧ + BYTE bySupportHideNum;//֧Ƶڵ + BYTE byRes1; + /*0-DCIF1-CIF2-QCIF3-4CIF4-2CIF6-QVGA(320*240), 16-VGA17-UXGA18-SVGA19-HD720p20-XVGA21-HD900p22-SXGAp27-HD1080i28-2560*192029-1600*30430-2048*153631-2448*204832-2448*120033-2448*800 34-XGA1024x76835-SXGA1280x1024*/ + BYTE byMainStreamSupportResolution[8];//ֵ֧ķֱʣλ + BYTE bySubStreamSupportResolution[8];//ֵ֧ķֱʣλ + BYTE byEventStreamSupportResolution[8];//¼ֵ֧ķֱʣλ + BYTE byNotSupportPreview;//Ƿ֧Ԥ,1-֧֣0-֧ + BYTE byNotSupportStorage;//Ƿִ֧洢,1-֧֣0-֧ + BYTE byRes2[98];// +}NET_DVR_CODESYSTEMABILITY, *LPNET_DVR_CODESYSTEMABILITY; + +/********************************end*******************************************/ + +/******************************ץĻ*******************************************/ +//IO +typedef struct tagNET_DVR_IO_INCFG +{ + DWORD dwSize; + BYTE byIoInStatus;//IO״̬0-½أ1-أ2-غ½أ3-ߵƽ4-͵ƽ + BYTE byRes[3];//ֽ +}NET_DVR_IO_INCFG, *LPNET_DVR_IO_INCFG; + +//IO +typedef struct tagNET_DVR_IO_OUTCFG +{ + DWORD dwSize; + BYTE byDefaultStatus;//IOĬ״̬0-͵ƽ1-ߵƽ + BYTE byIoOutStatus;//IOЧʱ״̬0-͵ƽ1-ߵƽ2- + WORD wAheadTime;//IOǰʱ䣬λus + DWORD dwTimePluse;//ʱ䣬λus + DWORD dwTimeDelay;//IOЧʱ䣬λus + BYTE byFreqMulti; //ƵֵΧ[1,15] + BYTE byDutyRate; //ռձȣ[0,40%] + BYTE byRes[2]; +}NET_DVR_IO_OUTCFG, *LPNET_DVR_IO_OUTCFG; + +// +typedef struct tagNET_DVR_FLASH_OUTCFG +{ + DWORD dwSize; + BYTE byMode;//˸ģʽ0-1-2-3- + BYTE byRelatedIoIn;//ƹIOţʱ˲Ч + BYTE byRecognizedLane; /*IOţλʾbit0ʾIO1Ƿ0-1-*/ + BYTE byDetectBrightness;/*Զʹ0-⣻1-*/ + BYTE byBrightnessThreld;/*ʹֵΧ[0,100],ֵ*/ + BYTE byStartHour; //ʼʱ-Сʱ,ȡֵΧ0-23 + BYTE byStartMinute; //ʼʱ-,ȡֵΧ0-59 + BYTE byEndHour; //ʱ-Сʱ,ȡֵΧ0-23 + BYTE byEndMinute; //ʱ-,ȡֵΧ0-59 + BYTE byFlashLightEnable; //ʱʹ:0-;1- + BYTE byRes[2]; +}NET_DVR_FLASH_OUTCFG, *LPNET_DVR_FLASH_OUTCFG; + +//̵ƹܣ2IOһ飩 +typedef struct tagNET_DVR_LIGHTSNAPCFG +{ + DWORD dwSize; + BYTE byLightIoIn;//̵ƵIO + BYTE byTrigIoIn;//IO + BYTE byRelatedDriveWay;//IOij + BYTE byTrafficLight; //0-ߵƽƣ͵ƽ̵ƣ1-ߵƽ̵ƣ͵ƽ + BYTE bySnapTimes1; //ץĴ10-ץģ0-Ĵ5 + BYTE bySnapTimes2; //̵ץĴ20-ץģ0-Ĵ5 + BYTE byRes1[2]; + WORD wIntervalTime1[MAX_INTERVAL_NUM];//ļʱ䣬ms + WORD wIntervalTime2[MAX_INTERVAL_NUM];//̵ļʱ䣬ms + BYTE byRecord;//¼־0-¼1-¼ + BYTE bySessionTimeout;//¼ʱʱ䣨룩 + BYTE byPreRecordTime;//¼ƬԤ¼ʱ() + BYTE byVideoDelay;//¼Ƭʱʱ䣨룩 + BYTE byRes2[32];//ֽ +}NET_DVR_LIGHTSNAPCFG, *LPNET_DVR_LIGHTSNAPCFG; + +//ٹ(2IOһ飩 +typedef struct tagNET_DVR_MEASURESPEEDCFG +{ + DWORD dwSize; + BYTE byTrigIo1; //ٵ1Ȧ + BYTE byTrigIo2; //ٵ2Ȧ + BYTE byRelatedDriveWay;//IOij + BYTE byTestSpeedTimeOut;//ģʽʱʱ䣬λs + DWORD dwDistance;//Ȧ,cm + BYTE byCapSpeed;//ģʽٶȣλkm/h + BYTE bySpeedLimit;//ֵλkm/h + BYTE bySnapTimes1; //Ȧ1ץĴ0-ץģ0-Ĵ5 + BYTE bySnapTimes2; //Ȧ2ץĴ0-ץģ0-Ĵ5 + WORD wIntervalTime1[MAX_INTERVAL_NUM];//Ȧ1ļʱ䣬ms + WORD wIntervalTime2[MAX_INTERVAL_NUM];//Ȧ2ļʱ䣬ms + BYTE byRes[32];//ֽ +}NET_DVR_MEASURESPEEDCFG, *LPNET_DVR_MEASURESPEEDCFG; + + +// +typedef struct tagNET_DVR_CLOUDSTORAGE_COND +{ + DWORD dwSize; + DWORD dwChannel; + BYTE byRes1[64]; +}NET_DVR_CLOUDSTORAGE_COND,*LPNET_DVR_CLOUDSTORAGE_COND; + +//ýṹ +typedef struct tagNET_DVR_POOLPARAM +{ + DWORD dwPoolID;// ƴ洢ڵ + BYTE byRes[4]; +}NET_DVR_POOLPARAM,*LPNET_DVR_POOLPARAM; + +typedef struct tagNET_DVR_CLOUDSTORAGE_CFG +{ + DWORD dwSize; + BYTE byEnable;//0-1- + BYTE byRes[3]; + NET_DVR_IPADDR struIP; + WORD wPort;//ݶ˿ + BYTE byRes1[2]; + char szUser[CLOUD_NAME_LEN/*48*/]; //û + char szPassword[CLOUD_PASSWD_LEN/*48*/]; // + NET_DVR_POOLPARAM struPoolInfo[16];//0ʾ¼أ1ʾΥ¼أ2ʾݳأIPC/D + BYTE byRes2[128]; +}NET_DVR_CLOUDSTORAGE_CFG,*LPNET_DVR_CLOUDSTORAGE_CFG; + +typedef struct tagNET_DVR_PARKLAMP_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byParkingIndex; //Գλţ14 + BYTE byRes[15]; // +}NET_DVR_PARKLAMP_COND, *LPNET_DVR_PARKLAMP_COND; + +typedef struct tagNET_DVR_PARKLAMP_INFOCFG +{ + DWORD dwSize; + char sLicense[MAX_LICENSE_LEN/*16*/];//ƺ + char sParkingNo[MAX_LICENSE_LEN/*16*/];//λ(ʵʵijλ) + BYTE byLampFlicker;//0~˸ 1 ˸ (λָʾ˸) + BYTE byLampColor;//0- 1- 2- 3- 4- 5-Ʒ 6- 7-ɫ (λָʾɫ) + BYTE byStatus; //λ״̬ 0-޳1-г + BYTE byColorDepth; //ɫdz0-ɫ1-dzɫ,0xff-δ֪ + BYTE byColor;//ɫ0-ɫ1-ɫ2-ɫ3-ɫ4-ɫ5-ɫ6-7-ɫ8-ɫ9-ɫ10-ɫ11-ɫ12-ɫ0xff-δгɫʶ + //Ʒʶ οö VLR_VEHICLE_CLASS + BYTE byVehicleLogoRecog; + BYTE byRes[250];// +}NET_DVR_PARKLAMP_INFOCFG, *LPNET_DVR_PARKLAMP_INFOCFG; + +//Ƶ +typedef struct tagNET_DVR_VIDEOEFFECT +{ + BYTE byBrightnessLevel; /*0-100*/ + BYTE byContrastLevel; /*0-100*/ + BYTE bySharpnessLevel; /*0-100*/ + BYTE bySaturationLevel; /*0-100*/ + BYTE byHueLevel; /*0-100,*/ + BYTE byEnableFunc; //ʹܣλʾbit0-SMART IR()bit1-ն,bit2-ǿʹܣ0-1- + BYTE byLightInhibitLevel; //ǿƵȼ[1-3]ʾȼ + BYTE byGrayLevel; //Ҷֵ0-[0-255]1-[16-235] +}NET_DVR_VIDEOEFFECT, *LPNET_DVR_VIDEOEFFECT; + +// +typedef struct tagNET_DVR_GAIN +{ + BYTE byGainLevel; /*棺0-100*/ + BYTE byGainUserSet; /*ûԶ棻0-100ץĻCCDģʽµץ*/ + BYTE byRes[2]; + DWORD dwMaxGainValue;/*ֵλdB*/ +}NET_DVR_GAIN, *LPNET_DVR_GAIN; + +//ƽ +typedef struct tagNET_DVR_WHITEBALANCE +{ +BYTE byWhiteBalanceMode; /*0-ֶƽ⣨MWB,1-Զƽ1AWB1,2-Զƽ2 (AWB2),3-ԶƸΪƽ(Locked WB) + 4-(Indoor)5-(Outdoor)6-չ(Fluorescent Lamp)7-Ƶ(Sodium Lamp) + 8-Զ(Auto-Track)9-һΰƽ(One Push)10-Զ(Auto-Outdoor) + 11-ƵԶ (Auto-Sodiumlight)12-ˮ(Mercury Lamp)13-Զƽ(Auto) +14-׳ (IncandescentLamp)15-ů(Warm Light Lamp)16-Ȼ(Natural Light) */ +BYTE byWhiteBalanceModeRGain; /*ֶƽʱЧֶƽ R*/ +BYTE byWhiteBalanceModeBGain; /*ֶƽʱЧֶƽ B*/ +BYTE byRes[5]; +}NET_DVR_WHITEBALANCE, *LPNET_DVR_WHITEBALANCE; + +//ع +typedef struct tagNET_DVR_EXPOSURE +{ + BYTE byExposureMode; /*0 ֶع 1Զع*/ + BYTE byAutoApertureLevel; /* ԶȦ, 0-10 */ + BYTE byRes[2]; + DWORD dwVideoExposureSet; /* ԶƵعʱ䣨λus*//*ע:ԶعʱֵΪعֵ 20-1s(1000000us)*/ + DWORD dwExposureUserSet; /* Զعʱ,ץĻӦʱCCDģʽʱץĿٶ*/ + DWORD dwRes; +} NET_DVR_EXPOSURE, *LPNET_DVR_EXPOSURE; + +//̬ +typedef struct tagNET_DVR_WDR +{ + BYTE byWDREnabled; /*̬0 dsibale 1 enable 2 auto*/ + BYTE byWDRLevel1; /*0-F*/ + BYTE byWDRLevel2; /*0-F*/ + BYTE byWDRContrastLevel; /*0-100*/ + BYTE byRes[16]; +} NET_DVR_WDR, *LPNET_DVR_WDR; + +typedef struct tagNET_DVR_WDR_CFG +{ + DWORD dwSize; //ṹС + NET_DVR_WDR struWDR; //Ϣ +}NET_DVR_WDR_CFG, *LPNET_DVR_WDR_CFG; + + +//ҹת +typedef struct tagNET_DVR_DAYNIGHT +{ + BYTE byDayNightFilterType; /*ҹл0-죬1-ҹ2-Զ3-ʱ4-봥, 5-Զģʽ2޹,6-ڹ⣬7-ڹԶ8-ڹⶨʱ*/ + BYTE bySwitchScheduleEnabled; /*0 dsibale 1 enable,()*/ + //ʱģʽ + BYTE byBeginTime; /*ʼʱ䣨Сʱ0-23*/ + BYTE byEndTime; /*ʱ䣨Сʱ0-23*/ + //ģʽ2 + BYTE byDayToNightFilterLevel; //0-7 + BYTE byNightToDayFilterLevel; //0-7 + BYTE byDayNightFilterTime;//(60) + //ʱģʽ + BYTE byBeginTimeMin; //ʼʱ䣨֣0-59 + BYTE byBeginTimeSec; //ʼʱ䣨룩0-59 + BYTE byEndTimeMin; //ʱ䣨֣0-59 + BYTE byEndTimeSec; //ʱ䣨룩0-59 + //봥ģʽ + BYTE byAlarmTrigState; //봥״̬0-죬1-ҹ +} NET_DVR_DAYNIGHT, *LPNET_DVR_DAYNIGHT; + +//GammaУ +typedef struct tagNET_DVR_GAMMACORRECT +{ + BYTE byGammaCorrectionEnabled; /*0 dsibale 1 enable*/ + BYTE byGammaCorrectionLevel; /*0-100*/ + BYTE byRes[6]; +} NET_DVR_GAMMACORRECT, *LPNET_DVR_GAMMACORRECT; + +//ⲹ +typedef struct tagNET_DVR_BACKLIGHT +{ + BYTE byBacklightMode; /*ⲹ:0 off 1 UP2 DOWN3 LEFT4 RIGHT5MIDDLE6Զ壬10-11-Զ12-򱳹ⲹ*/ + BYTE byBacklightLevel; /*0x0-0xF*/ + BYTE byRes1[2]; + DWORD dwPositionX1; //X1 + DWORD dwPositionY1; //Y1 + DWORD dwPositionX2; //X2 + DWORD dwPositionY2; //Y2 + BYTE byRes2[4]; +} NET_DVR_BACKLIGHT, *LPNET_DVR_BACKLIGHT; + +//ֽ빦 +typedef struct tagNET_DVR_NOISEREMOVE +{ + BYTE byDigitalNoiseRemoveEnable; /*0-ã1-ͨģʽֽ룬2-רģʽֽ*/ + BYTE byDigitalNoiseRemoveLevel; /*ͨģʽֽ뼶0x0-0xF*/ + BYTE bySpectralLevel; /*רģʽ¿ǿȣ0-100*/ + BYTE byTemporalLevel; /*רģʽʱǿȣ0-100*/ + BYTE byDigitalNoiseRemove2DEnable; /* ץ֡2D룬0-ã1- */ + BYTE byDigitalNoiseRemove2DLevel; /* ץ֡2D뼶0-100 */ + BYTE byRes[2]; +} NET_DVR_NOISEREMOVE, *LPNET_DVR_NOISEREMOVE; + +//CMOSģʽǰ˾ͷ +typedef struct tagNET_DVR_CMOSMODCFG +{ + BYTE byCaptureMod; //ץģʽ0-ץģʽ11-ץģʽ2 + BYTE byBrightnessGate;//ֵ + BYTE byCaptureGain1; //ץ1,0-100 + BYTE byCaptureGain2; //ץ2,0-100 + DWORD dwCaptureShutterSpeed1;//ץĿٶ1 + DWORD dwCaptureShutterSpeed2;//ץĿٶ2 + BYTE byRes[4]; +}NET_DVR_CMOSMODECFG, *LPNET_DVR_CMOSMODECFG; + +//ǰ˲ +typedef struct tagNET_DVR_CAMERAPARAMCFG +{ + DWORD dwSize; + NET_DVR_VIDEOEFFECT struVideoEffect;/*ȡԱȶȡͶȡȡɫ*/ + NET_DVR_GAIN struGain;/*Զ*/ + NET_DVR_WHITEBALANCE struWhiteBalance;/*ƽ*/ + NET_DVR_EXPOSURE struExposure; /*ع*/ + NET_DVR_GAMMACORRECT struGammaCorrect;/*GammaУ*/ + NET_DVR_WDR struWdr;/*̬*/ + NET_DVR_DAYNIGHT struDayNight;/*ҹת*/ + NET_DVR_BACKLIGHT struBackLight;/*ⲹ*/ + NET_DVR_NOISEREMOVE struNoiseRemove;/*ֽ*/ + BYTE byPowerLineFrequencyMode; /*0-50HZ; 1-60HZ*/ + /* + 0-ԶȦ, + 1-ֶȦ, + 2-P-Iris1, + 3-Union 3-9mm F1.6-2.7 (T5280-PQ1) [IPC5.1.7] + 4-Union 2.8-12mm F1.6-2.7 (T5289-PQ1) [IPC5.1.7] + 5-private 3.8-16mm F1.5HV3816P-8MPIR) + 6-private 11-40mm F1.7 (HV1140P-8MPIR) + 7-private 2.7-12mm F1.2TV2712P-MPIR + 8- MZ5721D-12MPIR + 9- MZ1555D-12MPIR + 10- MZ5721D-12MPIR(RS485) + 11- MZ1555D-12MPIR(RS485) + */ + BYTE byIrisMode; + BYTE byMirror ; /* 0 off1- leftright2- updown3-center */ + BYTE byDigitalZoom; /*:0 dsibale 1 enable*/ + BYTE byDeadPixelDetect; /*,0 dsibale 1 enable*/ + BYTE byBlackPwl;/*ڵƽ , 0-255*/ + BYTE byEptzGate;// EPTZر:0-ǫ̃1-ǫ̃ + BYTE byLocalOutputGate;//ر0-ر1-BNC 2-HDMIر 11-12-ü13-ü + //20-HDMI_720P50 + //21-HDMI_720P60 + //22-HDMI_1080I60 + //23-HDMI_1080I50 + //24-HDMI_1080P24 + //25-HDMI_1080P25 + //26-HDMI_1080P30 + //27-HDMI_1080P50 + //28-HDMI_1080P60 + //40-SDI_720P50, + //41-SDI_720P60, + //42-SDI_1080I50, + //43-SDI_1080I60, + //44-SDI_1080P24, + //45-SDI_1080P25, + //46-SDI_1080P30, + //47-SDI_1080P50, + //48-SDI_1080P60, + //49-SDI_720P25 + //50-SDI_720P30 + //51-SDI_1080I25 + //52-SDI_1080I30 + //60- YPBPR_720P50 + //61-YPBPR_720P60 + //62-YPBPR_1080I50 + //63-YPBPR_1080I60 + //64-YPBPR_1080P24 + //65-YPBPR_1080P25 + //66-YPBPR_1080P30 + //67-YPBPR_1080P50 + //68-YPBPR_1080P60 + //69-YPBPR_720P25 + //70-YPBPR_720P30 + //71- HDMI_1080Pûо֡ʣ֡豸captureModeһ£ + //72- HDMI_720Pûо֡ʣ֡豸captureModeһ£ + //73- HDMI_2160Pûо֡ʣ֡豸captureModeһ£ + BYTE byCoderOutputMode;//fpgaģʽ0ֱͨ3ذ + BYTE byLineCoding; //Ƿб룺0-1- + BYTE byDimmerMode; //ģʽ0-Զ1-Զ + BYTE byPaletteMode; //ɫ壺0-ȣ1-ȣ2-ɫ28-ɫ8 + BYTE byEnhancedMode; //ǿʽܱ̽ߣ0-ǿ1-12-23-34-4 + BYTE byDynamicContrastEN; //̬Աȶǿ 0-1 + BYTE byDynamicContrast; //̬Աȶ 0-100 + BYTE byJPEGQuality; //JPEGͼ 0-100 + NET_DVR_CMOSMODECFG struCmosModeCfg;//CMOSģʽǰ˲ãͷģʽȡ + BYTE byFilterSwitch; //˲أ0-ã1- + BYTE byFocusSpeed; //ͷٶȣ0-10 + BYTE byAutoCompensationInterval; //ʱԶŲ1-120λ + BYTE bySceneMode; //ģʽ0-⣬1-ڣ2-Ĭϣ3- +}NET_DVR_CAMERAPARAMCFG, *LPNET_DVR_CAMERAPARAMCFG; + +//͸ +typedef struct tagNET_DVR_DEFOGCFG +{ + BYTE byMode; //ģʽ0-ã1-Զģʽ2-ģʽ + BYTE byLevel; //ȼ0-100 + BYTE byRes[6]; +}NET_DVR_DEFOGCFG, *LPNET_DVR_DEFOGCFG; + +//ӷ +typedef struct tagNET_DVR_ELECTRONICSTABILIZATION +{ + BYTE byEnable;//ʹ 0- ã1- + BYTE byLevel; //ȼ0-100 + BYTE byRes[6]; +}NET_DVR_ELECTRONICSTABILIZATION, *LPNET_DVR_ELECTRONICSTABILIZATION; + +//ģʽ +typedef struct tagNET_DVR_CORRIDOR_MODE_CCD +{ + BYTE byEnableCorridorMode; //Ƿģʽ 0ã 1 + BYTE byRes[11]; +}NET_DVR_CORRIDOR_MODE_CCD, *LPNET_DVR_CORRIDOR_MODE_CCD; + +// SMART IR()ò +typedef struct tagNET_DVR_SMARTIR_PARAM +{ + BYTE byMode;//0ֶ1Զ + BYTE byIRDistance;//ȼ(ȼ)level:1~100 Ĭ:50ֶģʽӣ + BYTE byShortIRDistance;// ƾȼ(1~100) + BYTE byLongIRDistance;// Զƾȼ(1~100) +}NET_DVR_SMARTIR_PARAM,*LPNET_DVR_SMARTIR_PARAM; + +//byIrisMode ΪP-Iris1ʱЧúȦСȼģʽ +typedef struct tagNET_DVR_PIRIS_PARAM +{ + BYTE byMode;//0-Զ1-ֶ + BYTE byPIrisAperture;//ȦСȼ(ȼ,ȦС)level:1~100 Ĭ:50ֶģʽӣ + BYTE byRes[6]; +}NET_DVR_PIRIS_PARAM,*LPNET_DVR_PIRIS_PARAM; + + +// 2014-02-25 +typedef struct tagNET_DVR_LASER_PARAM_CFG +{ + //Length = 16 + BYTE byControlMode; //ģʽ 0-Ч1-Զ2-ֶ ĬԶ + BYTE bySensitivity; // 0-100 Ĭ50 + BYTE byTriggerMode; //ƴģʽ 0-Ч1-о2- Ĭϻо + BYTE byBrightness; //ģʽΪֶģʽЧ 0-255 Ĭ100 + BYTE byAngle; //ƽǶ 0-ЧΧ1-36 Ĭ12䷶ΧΪһԲȦڼǶǵԲİ뾶ĴС + BYTE byLimitBrightness; //ģʽΪԶģʽЧ 0~100 2014-01-26 + BYTE byEnabled ; //ֶƼʹ 0-رգ1- + BYTE byIllumination; //ǿ0~100 + BYTE byLightAngle; //Ƕ 0~100 + BYTE byRes[7]; // +} NET_DVR_LASER_PARAM_CFG, *LPNET_DVR_LASER_PARAM_CFG; + +typedef struct tagNET_DVR_FFC_PARAM +{ + //1-Schedule Mode,2-Temperature Mode, 3-Off + BYTE byMode; + //ʱ:ʾλӣѡ10,20,30,40,50,60,120,180,240 + BYTE byRes1; + WORD wCompensateTime; //ʱģʽЧ + BYTE byRes2[4]; +}NET_DVR_FFC_PARAM,*LPNET_DVR_FFC_PARAM; + +typedef struct tagNET_DVR_DDE_PARAM //sensor +{ + BYTE byMode;//1-Off,2-Normal Mode,3-Expert Mode + BYTE byNormalLevel;//ͨģʽȼΧ[1,100]ͨģʽЧ + BYTE byExpertLevel;//רģʽȼΧ[1,100]רģʽЧ + BYTE byRes[5]; +}NET_DVR_DDE_PARAM,*LPNET_DVR_DDE_PARAM; + +typedef struct tagNET_DVR_AGC_PARAM +{ + BYTE bySceneType;//1-Normal Sence,2-Highlight Sence,3-Manual Sence + BYTE byLightLevel;//ȵȼ[1,100]ֶģʽЧ + BYTE byGainLevel; //ȼ[1,100]ֶģʽЧ + BYTE byRes[5]; +}NET_DVR_AGC_PARAM,*LPNET_DVR_AGC_PARAM; + +//ץĻCCD 64ֽ +typedef struct tagNET_DVR_SNAP_CAMERAPARAMCFG +{ + BYTE byWDRMode; // ̬ģʽ;0~رգ1~ֿ̬ 2~̬ + BYTE byWDRType; // ̬лģʽ; 0~ǿã1~ʱã2~ + BYTE byWDRLevel; // ̬ȼ0~6Ӧ1-7Ĭ23 + BYTE byRes1; + NET_DVR_TIME_EX struStartTime; //ʼ̬ʱ + NET_DVR_TIME_EX struEndTime; //̬ʱ + BYTE byDayNightBrightness; //ҹתֵ0-100Ĭ50 + //ɫǿ + BYTE byMCEEnabled;//ɫǿʹܣtruefalseر + BYTE byMCELevel;//ɫǿǿȣ0~100Ĭֵ50 + //ԶԱȶ + BYTE byAutoContrastEnabled;//ԶԱȶʹܣtruefalseر + BYTE byAutoContrastLevel;//ԶԱȵȼ0-100,Ĭ50 + //ϸǿ + BYTE byLSEDetailEnabled;//ϸǿʹܣtruefalseر + BYTE byLSEDetailLevel;//ϸǿȼ0-100,Ĭ50 + // License Plate Definition Enhancementǿ + BYTE byLPDEEnabled;//ǿʹܣtruefalseر + BYTE byLPDELevel;//ǿȼ0-100,Ĭ50 + //Աȶǿ + BYTE byLseEnabled; //Աȶǿʹܣtruefalseر + BYTE byLseLevel; //Աȶǿȼ0-100,Ĭ0 + BYTE byLSEHaloLevel;//ƵȼΧ 0-100,Ĭ0 + BYTE byLseType; //Աȶǿлģʽ; 0~ǿã1~ʱã2~ãֶοͬʱbyLseLevelbyLSEHaloLevel + BYTE byRes2[3]; + NET_DVR_TIME_EX struLSEStartTime; //ʼԱȶǿʱ䣨byLseTypeΪ1ʱЧ + NET_DVR_TIME_EX struLSEEndTime; //Աȶǿʱ䣨byLseTypeΪ1ʱЧ + BYTE byLightLevel;//Ϊȵȼ0-100,Ĭ0byLseTypeΪ2ʱЧ + //ƶԱȶ + BYTE byPlateContrastLevel;//ƶԱȶȵȼ0~100Ĭ0 + //ƱͶ + BYTE byPlateSaturationLevel;//ƱͶȵȼ0~100Ĭ0 + BYTE byRes[9]; +} NET_DVR_SNAP_CAMERAPARAMCFG,*LPNET_DVR_SNAP_CAMERAPARAMCFG; + +//ѧ͸ +typedef struct tagNET_DVR_OPTICAL_DEHAZE +{ + BYTE byEnable; //0~ùѧ͸1~ùѧ͸ + BYTE byRes[7]; +} NET_DVR_OPTICAL_DEHAZE, *LPNET_DVR_OPTICAL_DEHAZE; + +//AGCãAGCģʽΪЧʱNET_DVR_AGC_PARAMòΪ׼AGCģʽΪԶֶʱNET_DVR_AGC_PARAMòЧ +typedef struct tagNET_DVR_THERMOMETRY_AGC +{ + BYTE byMode;//AGCģʽ0~Ч1~Զ2~ֶ + BYTE byRes1[3]; + int iHighTemperature;//¶ȣΧΪ-273~9999϶ȣ1~ֶģʽЧ + int iLowTemperature;//¶ȣΧΪ-273~9999϶ȣ1~ֶģʽЧ + BYTE byRes[8]; +}NET_DVR_THERMOMETRY_AGC, *LPNET_DVR_THERMOMETRY_AGC; + +//ǰ˲ +typedef struct tagNET_DVR_CAMERAPARAMCFG_EX +{ + DWORD dwSize; + NET_DVR_VIDEOEFFECT struVideoEffect;/*ȡԱȶȡͶȡȡɫ*/ + NET_DVR_GAIN struGain;/*Զ*/ + NET_DVR_WHITEBALANCE struWhiteBalance;/*ƽ*/ + NET_DVR_EXPOSURE struExposure; /*ع*/ + NET_DVR_GAMMACORRECT struGammaCorrect;/*GammaУ*/ + NET_DVR_WDR struWdr;/*̬*/ + NET_DVR_DAYNIGHT struDayNight;/*ҹת*/ + NET_DVR_BACKLIGHT struBackLight;/*ⲹ*/ + NET_DVR_NOISEREMOVE struNoiseRemove;/*ֽ*/ + BYTE byPowerLineFrequencyMode; /*0-50HZ; 1-60HZ*/ + /* + 0-ԶȦ, + 1-ֶȦ, + 2-P-Iris1, + 3-Union 3-9mm F1.6-2.7 (T5280-PQ1) [IPC5.1.7] + 4-Union 2.8-12mm F1.6-2.7 (T5289-PQ1) [IPC5.1.7] + 5-private 3.8-16mm F1.5HV3816P-8MPIR) + 6-private 11-40mm F1.7 (HV1140P-8MPIR) + 7-private 2.7-12mm F1.2TV2712P-MPIR + 8- MZ5721D-12MPIR + 9- MZ1555D-12MPIR + 10- MZ5721D-12MPIR(RS485) + 11- MZ1555D-12MPIR(RS485) + */ + BYTE byIrisMode; + BYTE byMirror ; /* 0 off1- leftright2- updown3-center 4-Auto*/ + BYTE byDigitalZoom; /*:0 dsibale 1 enable*/ + BYTE byDeadPixelDetect; /*,0 dsibale 1 enable*/ + BYTE byBlackPwl;/*ڵƽ , 0-255*/ + BYTE byEptzGate;// EPTZر:0-ǫ̃1-ǫ̃ + BYTE byLocalOutputGate;//ر0-ر1-BNC 2-HDMIر + //20-HDMI_720P50 + //21-HDMI_720P60 + //22-HDMI_1080I60 + //23-HDMI_1080I50 + //24-HDMI_1080P24 + //25-HDMI_1080P25 + //26-HDMI_1080P30 + //27-HDMI_1080P50 + //28-HDMI_1080P60 + BYTE byCoderOutputMode;//fpgaģʽ0ֱͨ3ذ + BYTE byLineCoding; //Ƿб룺0-1- + BYTE byDimmerMode; //ģʽ0-Զ1-Զ + BYTE byPaletteMode; //ɫ壺0-ȣ1-ȣ2-ɫ28-ɫ8, 9-ں1,10-ʺ,11-ں2,12-1,13-2,14-ɫ,15-ɫ1,16-ɫ2,17-,18-,19-,20-,21-22-ɫ3 + BYTE byEnhancedMode; //ǿʽܱ̽ߣ0-ǿ1-12-23-34-4 + BYTE byDynamicContrastEN; //̬Աȶǿ 0-1 + BYTE byDynamicContrast; //̬Աȶ 0-100 + BYTE byJPEGQuality; //JPEGͼ 0-100 + NET_DVR_CMOSMODECFG struCmosModeCfg;//CMOSģʽǰ˲ãͷģʽȡ + BYTE byFilterSwitch; //˲أ0-ã1- + BYTE byFocusSpeed; //ͷٶȣ0-10 + BYTE byAutoCompensationInterval; //ʱԶŲ1-120λ + BYTE bySceneMode; //ģʽ0-⣬1-ڣ2-Ĭϣ3- + NET_DVR_DEFOGCFG struDefogCfg;//͸ + NET_DVR_ELECTRONICSTABILIZATION struElectronicStabilization;//ӷ + NET_DVR_CORRIDOR_MODE_CCD struCorridorMode;//ģʽ + BYTE byExposureSegmentEnable; //0~,1~ عʱʽ״عϵʱعʱ䵽мֵȻ浽мֵع⵽ֵ浽ֵ + BYTE byBrightCompensate;//ǿ [0~100] + /* + 0-رա1-640*480@25fps2-640*480@30ps3-704*576@25fps4-704*480@30fps5-1280*720@25fps6-1280*720@30fps + 7-1280*720@50fps8-1280*720@60fps9-1280*960@15fps10-1280*960@25fps11-1280*960@30fps + 12-1280*1024@25fps13--1280*1024@30fps14-1600*900@15fps15-1600*1200@15fps16-1920*1080@15fps + 17-1920*1080@25fps18-1920*1080@30fps19-1920*1080@50fps20-1920*1080@60fps21-2048*1536@15fps22-2048*1536@20fps + 23-2048*1536@24fps24-2048*1536@25fps25-2048*1536@30fps26-2560*2048@25fps27-2560*2048@30fps + 28-2560*1920@7.5fps29-3072*2048@25fps30-3072*2048@30fps31-2048*1536@12.532-2560*1920@6.25 + 33-1600*1200@2534-1600*1200@3035-1600*1200@12.536-1600*900@12.537-1280*960@12.5fps38-800*600@25fps39-800*600@30fps40 + 4000*3000@12.5fps41-4000*3000@15fps42-4096*2160@20fps43-3840*2160@20fps 44-960*576@25fps45-960*480@30fps46-752*582@25fps + 47-768*494@30fps48-2560*1440@25fps49-2560*1440@30fps 50-720P@100fps51-720P@120fps52-2048*1536@50fps53-2048*1536@60fps + 54-3840*2160@25fps55-3840*2160@30fps56-4096*2160@25fps57-4096*2160@30fps 58-1280*1024@50fps59-1280*1024@60fps + 60-3072*2048@50fps61-3072*2048@60fps62-3072*1728@25fps63-3072*1728@30fps64-3072*1728@50fps65-3072*1728@60fps66-336*256@50fps67-336*256@60fps + 68-384*288@50fps69-384*288@60fps 70- 640 * 512@50fps 71- 640 * 512@60fps72-2592*1944@25fps73-2592*1944@30fps74-2688*1536@25fps75-2688*1536@30fps + 76-2592*1944@20fps77-2592*1944@15fps78-2688*1520@20fps79-2688*1520@15fps80-2688*1520@25fps81-2688*1520@30fps82- 2720*2048@25fps 83- 2720*2048@30fps + 84-336*256@25fps85- 384*288@25fps86-640*512@25fps87-1280*960@50fps88-1280*960@60fps89-1280*960@100fps90-1280*960@120fps91-4000*3000@20fps + 92-1920*1200@25fps93-1920*1200@30fps94-2560*1920@25fps95-2560*1920@20fps96-2560*1920@30fps97-1280*1920@25fps98-1280*1920@30fps + 99-4000*3000@24fps100-4000*3000@25fps101-4000*3000@10fps102- 384*288@30fps103-2560*1920@15fps104-2400*3840@25fps105-1200*1920@25fps + 106-4096*1800@30fps107-3840*1680@30fps108-2560*1120@30fps109-704*320@30fps110-1280*560@30fps111-4096*1800@25fps112-3840*1680@25fps + 113-2560*1120@25fps114-704*320@25fps115-1280*560@25fps116-2400*3840@24fps117-3840*2400@24fps118-3840*2400@25fps119-2560*1920@12.5fps + 120-2560*2048@12fps121-2560*2048@15fps122-2560*1536@25fps123-2560*1536@30fps124-2256*2048@25fps125-2256*2048@30fps126-2592*2592@12.5fps127-2592*2592@15fps + 128 - 640*512@30fps129-2048*1520@30fps130-2048*1520@25fps131-3840*2160@24fps132-2592*1520@25fps133-2592*1520@30fps134-2592*1536@25fps135-2592*1536@30fps + 136-640*960@25fps137-640*960@24fps139-3840*1080@25fps140-3840*1080@30fps142-2992*2192@25fps143-2992*2192@30fps144-3008*2160@25fps145-3008*2160@30fps + 146-3072*1728@20fps147-2560*1440@20fps148-2160*3840@25fps149-2160*3840@30fps150-7008*1080@25fps151-7008*1080@30fps152-3072*2048@20fps153-1536*864@25fps + 154-2560*1920@24fps155-2400*3840@30fps156-3840*2400@30fps157-3840*2160@15fps + 158-384*288@8.3fps159-640*512@8.3fps160-160*120@8.3fps161-1024*768@8.3fps162-640*480@8.3fps163-3840*2160@12.5fps164-2304*1296@30fps165-2304*1296@25fps + 166-2560*1440@24fps167-2688*1512@25fps168-2688*1512@30fps169-2688*1512@50fps170-2688*1512@60fps171-1536*864@30fps172-2560*1440@50fps173-2560*1440@60fps + 174-2048*2048@25fps175-2048*2048@30fps176-4000*3060@20fps177-3060*3060@25fps178-3060*3060@30fps179-3000*3000@25fps180-3000*3000@30fps181-8160*3616@30fps + 182-8160*3616@25fps183-3000*3000@20fps184-3000*3000@15fps185-3000*3000@12.5fps186-5472*3648@25fps187-5472*3648@30fps188-7680*4320@25fps189-7680*4320@30fps + 190-8160*2400@25fps191-8160*2400@30fps192-5520*2400@25fps193-5520*2400@30fps194-2560*1440@15fps195-1944*1212@24fps196-1944*1212@25fps197-3456*1920@30fps + 198-4800*2688@25fps199-4800*2688@30fps200-6480*1080@25fps201-6480*1080@30fps202-8640*1440@25fps203-8640*1440@30fps204-3456*1920@25fps205-2688*1520@50fps + 206-2688*1520@60fps207-4976*1452@25fps208-4976*1452@30fps 209-3200*1800@25fps210-3200*1800@30fps211-5472*3648@24fps212-1920*1080@12.5fps213-2944*1656@20fps + 214-1920*1080@24fps215-4800*1600@25fps216-4800*1600@30fps217-2560*1440@12.5fps218-6560*3690@1fps219-5120*1400@20fps220-7680*4320@1fps221-1920*1080@20fps + 222-5120*1440@20fps223-4080*1808@25fps224-4080*1808@30fps225-4080*1152@25fps226-4080*1152@30fps227-2688*1944@20fps228-2592*1944@24fps229-3200*1800@15fps + 230-4416*1696@20fps231-3456*1080@25fps232-3200*1800@12.5fps233-2688*1532@25fps234-2688*1532@30fps235-4416*1696@12.5fps236-3840*2048P12.5fps237-3840*4096P12.5fps + 238-5120*1440@12.5fps239-3840*1080@24fps240-320*256@30fps241-3264*2448@25fps242-3264*2448@30fps243-5430*3054@1fps244-2688*1520@24@24fps245-4000*3000@30fps + 246-1632*1224@25fps247-1632*1224@30fps248-160*120@25fps249-1920*1440@25fps250-1920*1440@30fps-3632*1632@20fps252-3040*1368@25fps253-3040*1368@24fps + 254-5120*1440@25fps255-ֶαʾΧ + 豸ģʽ255ʱ + 1ȡʱֵֶΪ255޾庬壬ڱʾʵģʽֵ255ʵwCaptureModeNwCaptureModePʾ + 2ʱֵҪΪ255ʵwCaptureModeNwCaptureModePʾ + 豸ģʽС255ʱ + 1ȡʱֵֶΪʵģʽֵwCaptureModeNwCaptureModePֵ账 + 2ʱֶΪʵģʽֵwCaptureModeNwCaptureModePֲֵ + */ + BYTE byCaptureModeN; //ƵģʽNƣ + BYTE byCaptureModeP; //ƵģʽPƣ + NET_DVR_SMARTIR_PARAM struSmartIRParam; //ŹϢ + NET_DVR_PIRIS_PARAM struPIrisParam;//PIrisϢӦbyIrisModeֶδ2-PIris1ʼЧ + //2014-02-25 + NET_DVR_LASER_PARAM_CFG struLaserParam; // + NET_DVR_FFC_PARAM struFFCParam; + NET_DVR_DDE_PARAM struDDEParam; + NET_DVR_AGC_PARAM struAGCParam; + BYTE byLensDistortionCorrection;//ͷУ 0-ر,1- + BYTE byDistortionCorrectionLevel;//Уȼ0-1-ȼһ2-ȼ3-ȼ;255-Զ + BYTE byCalibrationAccurateLevel;// Уǿ[0-100] + BYTE byZoomedInDistantViewLevel;//Զ˷Ŵȼ[0-100] + NET_DVR_SNAP_CAMERAPARAMCFG struSnapCCD ; //ץĻCCDֻץĻ + NET_DVR_OPTICAL_DEHAZE struOpticalDehaze;//ѧ͸ + NET_DVR_THERMOMETRY_AGC struThermAGC;//AGC + BYTE byFusionMode;//˫Ƶںģʽ0~ȳģʽ1~ںģʽ2~лģʽ,3~ɼģʽ, 4~ںϺڰģʽ, 5~ںϲɫģʽ-ݵأ6~ںϲɫģʽ-ĵأ7~ںϲɫģʽ-ѩأ8~ںϲɫģʽ-9~ںϲɫģʽ- + BYTE byHorizontalFOV;//ˮƽӳ[0-100] + BYTE byVerticalFOV;//ֱӳ[0-100] + BYTE byBrightnessSuddenChangeSuppression;//ͻ0-ر,1- + BYTE byGPSEnabled;//GPSʹܣ0-أ1- + BYTE byRes; + /* + 256-160*120@50fps257-3200*1800@20fps258-800*480@25fps259-2688*1944@25fps260-640*384@50fps261-8000*6000@1fps262-1440*1080@50fps263-1440*1080@60fps + 264-8160*3616@24fps265-3632*1632@25fps266-3632*1632@30fps267-3632*1632@20fps268-1760*1320@25fps269-4000*3000@4fps270-192*256@25fps271-720*576@25fps + 272-720x576@30fps273-960*432@25fps274-960*432@30fps275-1200*536@25fps276-1200*536@30fps277-1760*1320@12.5fps278-2560*480@25fps279-2048*384@25fps + 280-96*96@25fps281-320*256@25fps282-6128*1800@25fps283-6128*1800@30fps284-2304*1296@24fps285-2048*1152@25fps286-2048*1152@30fps287-3840*2100@20fps + 288-96*72@25fps289-2048*1152@24fps290-720*576@50fps291-2368*1776@25fps292-2368*1776@30fps293-1776*1776@25fps294-3776*2832@25fps295-3776*2832@30fps + 296-2832*2832@25ps297-2832*2832@30298-1776*1776@30fps + */ + WORD wCaptureModeN; //ƵģʽNƣģʽС255ʱbyCaptureModeNһ£255ʱԸֶηֵжϡ + WORD wCaptureModeP; //ƵģʽPƣģʽС255ʱbyCaptureModeNһ£255ʱԸֶηֵж + BYTE byRes2[150]; +}NET_DVR_CAMERAPARAMCFG_EX, *LPNET_DVR_CAMERAPARAMCFG_EX; + +typedef struct tagNET_DVR_FOCUSING_POSITION_STATE +{ + DWORD dwSize; + BYTE byState;//۽λ״̬ 0-λ1-λ + BYTE byRes[31]; +}NET_DVR_FOCUSING_POSITION_STATE, *LPNET_DVR_FOCUSING_POSITION_STATE; + +typedef enum _VCA_PLATE_COLOR_ +{ + VCA_BLUE_PLATE = 0, //ɫ + VCA_YELLOW_PLATE, //ɫ + VCA_WHITE_PLATE, //ɫ + VCA_BLACK_PLATE, //ɫ + VCA_GREEN_PLATE, //ɫ + VCA_BKAIR_PLATE, //񺽺ɫ + VCA_RED_PLATE, //ɫ + VCA_ORANGE_PLATE, //ɫ + VCA_BROWN_PLATE = 8, //ɫ + VCA_OTHER = 0xff // +}VCA_PLATE_COLOR; + +// +typedef enum _VCA_PLATE_TYPE_ +{ + VCA_STANDARD92_PLATE = 0, //׼óֳ + VCA_STANDARD02_PLATE, //02ʽó + VCA_WJPOLICE_PLATE, //侯 + VCA_JINGCHE_PLATE, // + STANDARD92_BACK_PLATE, //ó˫β + VCA_SHIGUAN_PLATE, //ʹݳ + VCA_NONGYONG_PLATE, //ũó + VCA_MOTO_PLATE, //Ħг + NEW_ENERGY_PLATE, //Դ + VCA_CONSULATE_PLATE = 9, //¹ݳ + VCA_EMERGENCY_PLATE = 10, //Ӧ + //2017-05-18 ж + TRANSPORT_PLATE = 0x20, //䳵 + COMMERCIAL_PLATE, //ó + PRIVATE_PLATE, //˽ҳ + LEARNING_PLATE, // + CD_PLATE, //ʹݳ + CC_PLATE, //ʹݳ + SPECIAL_PLATE, //ֳ + PROTOCOL_PLATE, //PROTOCOL + GOVERNMENT_PLATE, // + EXPORT_PLATE, //EXPORT + TAXI_PLATE, //⳵ + TESTING_PLATE, //TESTING + TRANSFER_PLATE, //TRANSFER + TRUCK_PLATE, // + BUS_PLATE, // + PUBLIC_PLATE, //PUBLIC + PUB_TRANS_PLATE, //PUBLIC TRANSFER + PRI_TRANS_PLATE, //PRIVATE TRANSPORT + TUMBREL_PLATE, //ֳ + HONG_KONG_MACAO_PLATE, //۰ + UNKNOWN_PLATE = 0xff, //δ֪δʶ +}VCA_PLATE_TYPE; + +//ʶ +typedef enum _VTR_RESULT +{ + VTR_RESULT_OTHER = 0, //δ֪ + VTR_RESULT_BUS = 1, //ͳ + VTR_RESULT_TRUCK = 2, // + VTR_RESULT_CAR = 3, //γ + VTR_RESULT_MINIBUS = 4, // + VTR_RESULT_SMALLTRUCK = 5, //С + VTR_RESULT_HUMAN = 6, // + VTR_RESULT_TUMBREL = 7, //ֳ + VTR_RESULT_TRIKE = 8, //ֳ + VTR_RESULT_SUV_MPV = 9, //SUV/MPV + VTR_RESULT_MEDIUM_BUS = 10, //Ϳͳ + VTR_RESULT_MOTOR_VEHICLE = 11, // + VTR_RESULT_NON_MOTOR_VEHICLE = 12, //ǻ + VTR_RESULT_SMALLCAR = 13, //Сͽγ + VTR_RESULT_MICROCAR = 14, //΢ͽγ + VTR_RESULT_PICKUP = 15, //Ƥ + VTR_RESULT_CONTAINER_TRUCK = 16, // װ俨 + VTR_RESULT_MINI_TRUCK = 17, // ΢忨 + VTR_RESULT_SLAG_CAR = 18, // + VTR_RESULT_CRANE = 19, // ̳ + VTR_RESULT_OIL_TANK_TRUCK = 20, // ͹޳ + VTR_RESULT_CONCRETE_MIXER = 21, // 賵 + VTR_RESULT_PLATFORM_TRAILER = 22, // ƽϳ + VTR_RESULT_HATCHBACK = 23, // γ + VTR_RESULT_SALOON = 24, // γ + VTR_RESULT_SPORT_SEDAN = 25, // + VTR_RESULT_SMALL_BUS = 26 //СͿͳ +}VTR_RESULT; + + +//ɫ +typedef enum _VCR_CLR_CLASS +{ + VCR_CLR_UNSUPPORT = 0, //֧ + VCR_CLR_WHITE = 1, // + VCR_CLR_SILVER = 2, // + VCR_CLR_GRAY = 3, // + VCR_CLR_BLACK = 4, // + VCR_CLR_RED = 5, // + VCR_CLR_DARKBLUE = 6, // + VCR_CLR_BLUE = 7, // + VCR_CLR_YELLOW = 8, // + VCR_CLR_GREEN = 9, // + VCR_CLR_BROWN = 10, // + VCR_CLR_PINK = 11, // + VCR_CLR_PURPLE = 12, // + VCR_CLR_DARKGRAY = 13, // + VCR_CLR_CYAN = 14 //ɫ +}VCR_CLR_CLASS; + +// 2013-11-04 +typedef enum _VCA_OPERATE_TYPE_ +{ + VCA_LICENSE_TYPE = 0x1, //ƺ + VCA_PLATECOLOR_TYPE = 0x2, //ɫ + VCA_CARDNO_TYPE = 0x4, // + VCA_PLATETYPE_TYPE = 0x8, // + VCA_LISTTYPE_TYPE = 0x10, // + VCA_INDEX_TYPE = 0x20, //ˮ 2014-02-25 + VCA_OPERATE_INDEX_TYPE = 0x40 // 2014-03-03 +}VCA_OPERATE_TYPE; + +typedef enum _VCA_ILLEGAL_TYPE_ +{ + VCA_POSTPIC_TYPE = 0x1, //ͼƬ + VCA_LOWSPEED_TYPE = 0x2, // + VCA_HIGHSPEED_TYPE = 0x4, // + VCA_RETROGRADE_TYPE = 0x8, // + VCA_RUSH_REDLIGHT_TYPE = 0x10, // + VCA_PRESS_LANE_TYPE = 0x20, //ѹ + VCA_VIOLATE_GUIDE_TYPE = 0x40,// + VCA_ROAD_STRAND_TYPE = 0x80,//·(豸֧) + VCA_VEHICLE_ILLEGAL_LANE_TYPE = 0x100,//ռ + VCA_ILLEGAL_LANE_CHANGE_TYPE = 0x200,//Υ + VCA_ILLEGAL_LANE_DRIVE_TYPE = 0x400,// + VCA_VIOLATE_BAN_TYPE = 0x800,//Υ + VCA_CROSS_PARKING_TYPE = 0x1000,//·ͣ + VCA_GREEN_PARKING_TYPE = 0x2000//̵ͣ +}VCA_ILLEGAL_TYPE; + +typedef enum _VCA_VEHICLE_TYPE_ +{ + VCA_OTHER_TYPE = 0x1, // + VCA_SMALLCAR_TYPE = 0x2, //Сͳ + VCA_BIGCAR_TYPE = 0x4, //ͳ + VCA_BUS_TYPE = 0x8, //ͳ + VCA_TRUCK_TYPE = 0x10, // + VCA_CAR_TYPE = 0x20, //γ + VCA_MINIBUS_TYPE = 0x40, // + VCA_SMALL_TRUCK_TYPE = 0x80 //С +}VCA_VEHICLE_TYPE; + +//Ʒ +typedef enum _VLR_VEHICLE_CLASS +{ + VLR_OTHER = 0, // + VLR_VOLKSWAGEN = 1, // + VLR_BUICK = 2, // + VLR_BMW = 3, // + VLR_HONDA = 4, // + VLR_PEUGEOT = 5, // + VLR_TOYOTA = 6, // + VLR_FORD = 7, // + VLR_NISSAN = 8, //ղ + VLR_AUDI = 9, //µ + VLR_MAZDA = 10, //Դ + VLR_CHEVROLET = 11, //ѩ + VLR_CITROEN = 12, //ѩ + VLR_HYUNDAI = 13, //ִ + VLR_CHERY = 14, // + VLR_KIA = 15, // + VLR_ROEWE = 16, // + VLR_MITSUBISHI = 17, // + VLR_SKODA = 18, //˹´ + VLR_GEELY = 19, // + VLR_ZHONGHUA = 20, //л + VLR_VOLVO = 21, //ֶ + VLR_LEXUS = 22, //׿˹ + VLR_FIAT = 23, // + VLR_EMGRAND = 24, //ۺ() + VLR_DONGFENG = 25, // + VLR_BYD = 26, //ǵ + VLR_SUZUKI = 27, //ľ + VLR_JINBEI = 28, // + VLR_HAIMA = 29, // + VLR_SGMW = 30, // + VLR_JAC = 31, // + VLR_SUBARU = 32, //˹³ + VLR_ENGLON = 33, //Ӣ() + VLR_GREATWALL = 34, // + VLR_HAFEI = 35, // + VLR_ISUZU = 36, //ʮ() + VLR_SOUEAST = 37, // + VLR_CHANA = 38, // + VLR_FOTON = 39, // + VLR_XIALI = 40, //(һ) + VLR_BENZ = 41, // + VLR_FAW = 42, //һ + VLR_NAVECO = 43, //ά + VLR_LIFAN = 44, // + VLR_BESTURN = 45, //һ(һ) + VLR_CROWN = 46, //ʹ() + VLR_RENAULT = 47, //ŵ + VLR_JMC = 48, //JMC() + VLR_MG = 49, //MG + VLR_KAMA = 50, // + VLR_ZOTYE = 51, //̩ + VLR_CHANGHE = 52, // + VLR_XMKINGLONG = 53, //Ž() + VLR_HUIZHONG = 54, //Ϻ() + VLR_SZKINGLONG = 55, //ݽ + VLR_HIGER = 56, // + VLR_YUTONG = 57, //ͨ + VLR_CNHTC = 58, //й + VLR_BEIBEN = 59, //ؿ + VLR_XINGMA = 60, // + VLR_YUEJIN = 61, //Ծ + VLR_HUANGHAI = 62, //ƺ + VLR_OLDWALL = 63, //Ͽ + VLR_CHANACOMMERCIAL = 64, // + VLR_PORSCHE = 65, // ʱ + VLR_CADILLAC = 66, // + VLR_INFINITI = 67, // Ӣ + VLR_GLEAGLE = 68, // ȫӥ() + VLR_JEEP = 69, // JEEP() + VLR_LANDROVER = 70, // · + VLR_CHANGFENG = 71, // + VLR_BENNI = 72, // () + VLR_ERA = 73, // ʱ(ʱ) + VLR_TAURUS = 74, // ţ() + VLR_EADO = 75, // ݶ + VLR_SHANQI = 76, // + VLR_HONGYAN = 77, // (άº) + VLR_DRAGON = 78, // () + VLR_JACTEXT = 79, // JAC () + VLR_JACBUS = 80, // ִͳ () + VLR_ANKAI = 81, // ͳ + VLR_SHENLONG = 82, // ͳ + VLR_DAEWOO = 83, // ͳ + VLR_WUZHENG = 84, // + VLR_MAN = 85, // MAN + VLR_ZHONGTONG = 86, // ͨͳ + VLR_BAOJUN = 87, // + VLR_BQWEIWANG = 88, // + VLR_TRUMPCHE = 89, // + VLR_LUFENG = 90, // ½ + VLR_HMZHENGZHOU = 91, // ֣ + VLR_BEIJING = 92, // + VLR_ZHONGSHUN = 93, // ˳ + VLR_WEILIN = 94, // + VLR_OPEL = 95, // ŷ + VLR_KARRY = 96, // + VLR_SMA = 97, // + VLR_SMATEXT = 98, // SMA + VLR_YUWIN = 99, // Ԧʤ + VLR_MINI = 100, // MINI + VLR_MARK = 101, // MARKX + VLR_HAVAL = 102, // HAVAL + VLR_OGA = 103, // ک + VLR_VENUCIA = 104, // + VLR_BYD2 = 105, // ǵʽ2 (ǵ) + VLR_SMART = 106, // SMART + VLR_BAW = 107, // 쳧BAW + VLR_LUXGEN = 108, // ǽ + VLR_YEMA = 109, // Ұ + VLR_ZTE = 110, // + VLR_EVERUS = 111, // + VLR_CHRYSLER = 112, // ˹ + VLR_GONOW = 113, // + VLR_SHJIANG = 114, // ɻ + VLR_RUILIN = 115, // + VLR_FORTA = 116, // + VLR_GAGUAR = 117, // ݱ + VLR_HEIBAO = 118, // ڱ + VLR_TKING = 119, // ƿ + VLR_TKINGTEXT = 120, // ƿ + VLR_FODAY = 121, // + VLR_LOTUS = 122, // + VLR_NANJUN = 123, // Ͽ + VLR_SHUANGHUAN = 124, // ˫ + VLR_SAIBAO = 125, // + VLR_HAWTAI = 126, // ̩ + VLR_LIFO = 127, // Դɵ + VLR_JONWAY = 128, // Դ + VLR_FULONGMA = 129, // + VLR_WEILI = 130, // Ϋ + VLR_ANCHI = 131, // + VLR_PAIXI = 132, // ϲ + VLR_HIGERTEXT = 133, // HIGER + VLR_RIYECAR = 134, // ҰῨ + VLR_RIYETRUCK = 135, // Ұؿ + VLR_JIANGNAN = 136, // + VLR_OLDZOTYE = 137, // Ͽ̩ + VLR_OLDXIALI = 138, // Ͽ + VLR_NEWAOCHI = 139, // °³ + VLR_CDW = 140, // + VLR_CDWTEXT = 141, // + VLR_CIIMO = 142, // ˼ + VLR_CHANADS = 143, // а + VLR_DS = 144, // + VLR_ROHENS = 145, // ִͶ˹ + VLR_YANTAI = 146, // ̨ + VLR_SHUANGLONG = 147, // ˫ + VLR_FENGLING = 148, // ʱ + VLR_XINKAI = 149, // ¿ + VLR_GMC = 150, // GMC + VLR_DATONG = 151, // ͨ + VLR_BQYINXIANG = 152, // + VLR_NEWCHERY = 153, // + VLR_MUDAN = 154, // ĵ + VLR_DAYUN = 155, // + VLR_DONGWO = 156, // + VLR_UNION = 157, // + VLR_CHUNZHOU = 158, // ޿ͳ + VLR_SANY = 159, // һع + VLR_YAXING = 160, // ǿͳ + VLR_HENGTONG = 161, // ͨͳ + VLR_SHAOLIN = 162, // ֿͳ + VLR_YOUNG = 163, // ͳ + VLR_STOM = 164, // ʮͨ + VLR_SANHUAN = 165, // + VLR_XUGONG = 166, // 칤 + VLR_BEIFANG = 167, // + VLR_JIANGHUAN = 168, // + VLR_BJFARM = 169, // ũ + VLR_NEWDADI = 170, // ´ + VLR_SUNWIN = 171, // ֿͳ + VLR_YINGTIAN = 172, // Ӣ + VLR_QINGQI = 173, // + VLR_CHUFENG = 174, // + VLR_SCANIA = 175, // ˹ + VLR_JIULONG = 176, // ͳ + VLR_YOUYI = 177, // ͳ + VLR_SHANGRAO = 178, // Ŀͳ + VLR_JIJIANG = 179, // + VLR_YANGZI = 180, // ӿͳ + VLR_XIWO = 181, // ֿͳ + VLR_CHANGJIANG = 182, // ͳ + VLR_WUYI = 183, // + VLR_CHENGDU = 184, // ɶͳ + VLR_TIANMA = 185, // + VLR_BAOLONG = 186, // + VLR_NEWYATU = 187, // ; + VLR_BARUI = 188, // ǰ + VLR_GUANZHI = 189, // + VLR_XIYATE = 190, // + VLR_BINLI = 191, // + VLR_DADI = 192, // + VLR_FUQI = 193, // + VLR_HANGTIAN = 194, // HT + VLR_HENGTIAN = 195, // + VLR_JMCCAR = 196, // + VLR_KAERSEN = 197, // ɭ + VLR_KAWEI = 198, // + VLR_LANBOJINI = 199, // + VLR_MASHALADI = 200, // ɯ + VLR_SHUCHI = 201, // ۿͳ + VLR_SHILI = 202, // ʵͳ + VLR_HUABEI = 203, // пͻ + VLR_YIZHENG = 204, // + VLR_CHUNLAN = 205, // + VLR_DAFA = 206, // + VLR_SHENYE = 207, // Ұ + VLR_FALALI = 208, // + VLR_FUXING = 209, // + VLR_ANYUAN = 210, // Դͳ + VLR_JINGHUA = 211, // ͳ + VLR_TAIHU = 212, // ̫ͳ + VLR_WUZHOULONG = 213, // + VLR_CHANGLONG = 214, // ¡ͳ + VLR_YUEXI = 215, // ͳ + VLR_SHENMA = 216, // ͳ + VLR_LUSHAN = 217, // ®ɽ + VLR_WANFENG = 218, // + VLR_GZYUNBAO = 219, // Ʊ + VLR_ZHONGDA = 220, // д + VLR_THREEWHEEL = 221, // ֳ + VLR_TWOWHEEL = 222, // ֳ + VLR_JBC = 223, // JBC + VLR_YZJIANG = 224, // ӽͳ + VLR_CNJ = 225, // ϿCNJ + VLR_FORLAND = 226, // ʱ + VLR_FARMCAR = 227, // ũó + VLR_DONGFANGHONG = 228, // + VLR_STEYR = 229, // ˹̫ + VLR_HONGQI = 230, // + VLR_USER1 = 231, //û1 + VLR_USER2 = 232, //û2 + VLR_USER3 = 233, //û3 + VLR_USER4 = 234, //û4 + VLR_USER5 = 235, //û5 + VLR_USER6 = 236, //û6 + VLR_USER7 = 237, //û7 + VLR_USER8 = 238 //û8 +}VLR_VEHICLE_CLASS; + +/********************ƷBegin*************************/ +//Ʒ +typedef enum _VSB_VOLKSWAGEN_CLASS +{ + VSB_VOLKSWAGEN_OTHER = 0, // + VSB_VOLKSWAGEN_LAVIDA = 1, // + VSB_VOLKSWAGEN_CROSSLAVIDA = 2, // ʾ + VSB_VOLKSWAGEN_TIGUAN = 3, // ; + VSB_VOLKSWAGEN_TOURAN = 4, // ; + VSB_VOLKSWAGEN_SANTANA = 5, // ɣ + VSB_VOLKSWAGEN_SANTANA2000 = 6, // ɣ2000 + VSB_VOLKSWAGEN_SANTANA3000 = 7, // ɣ3000 + VSB_VOLKSWAGEN_VISTA = 8, // ɣ-־ + VSB_VOLKSWAGEN_PASSAT = 9, // + VSB_VOLKSWAGEN_PASSATLINGYU = 10, // -Ԧ + VSB_VOLKSWAGEN_POLO = 11, // + VSB_VOLKSWAGEN_POLOCROSS = 12, // -˶ + VSB_VOLKSWAGEN_POLOGTI = 13, // -GTI + VSB_VOLKSWAGEN_SAGITAR = 14, // + VSB_VOLKSWAGEN_MAGOTAN = 15, // + VSB_VOLKSWAGEN_JETTA = 16, // ݴ + VSB_VOLKSWAGEN_BORA = 17, // + VSB_VOLKSWAGEN_NEWGOLF = 18, // ¸߶ + VSB_VOLKSWAGEN_GOLFGTI = 19, // ߶-GTI + VSB_VOLKSWAGEN_GOL = 20, // ߶ + VSB_VOLKSWAGEN_CADDY = 21, // + VSB_VOLKSWAGEN_PHAETON = 22, // + VSB_VOLKSWAGEN_TOUREG = 23, // ; + VSB_VOLKSWAGEN_SCIROCCO = 24, // п + VSB_VOLKSWAGEN_BEETLE = 25, // ׿dz + VSB_VOLKSWAGEN_SHARAN = 26, // + VSB_VOLKSWAGEN_MULTIVAN = 27, // + VSB_VOLKSWAGEN_CARBONCOPY = 28, // һ-CC + VSB_VOLKSWAGEN_VISTACHANGDA = 29, // ɣ־- + VSB_VOLKSWAGEN_BORASPORTLINE = 30, // -SPORTLINE + VSR_VOLKSWAGEN_CC_1 =31, //-CC-2012,2011,2010 + VSR_VOLKSWAGEN_Cross_POLO_1 = 32, //-Cross-POLO-2010,2007 + VSR_VOLKSWAGEN_Cross_POLO_2 = 33, //-Cross-POLO-2014,2012 + VSR_VOLKSWAGEN_MULTIVAN_1 = 34, //-Multivan-2014,2012,2011 + VSR_VOLKSWAGEN_POLO_1 = 35, //-POLO-2006,2005,2004,2003,2002 + VSR_VOLKSWAGEN_POLO_2 = 36, //-POLO-2013,2012,2011 + VSR_VOLKSWAGEN_POLO_JINQU_1 = 37, //-POLOȡ-2009,2008,2007,2006 + VSR_VOLKSWAGEN_POLO_JINQU_2 = 38, //-POLOȡ-2011 + VSR_VOLKSWAGEN_Tiguan_1 = 39, //-Tiguan-2011,2009 + VSR_VOLKSWAGEN_Tiguan_2 = 40, //-Tiguan-2014,2013,2012 + VSR_VOLKSWAGEN_XIALANG_1 = 41, //--2013,2012 + VSR_VOLKSWAGEN_BAOLAI_1 = 42, //--2005,2004 + VSR_VOLKSWAGEN_BAOLAI_2 = 43, //--2006 + VSR_VOLKSWAGEN_BAOLAI_3 = 44, //--2012,2011,2010,2009,2008 + VSR_VOLKSWAGEN_BAOLAI_4 = 45, //--2014,2013 + VSR_VOLKSWAGEN_SHANGKU_1 = 46, //-п-2014,2013 + VSR_VOLKSWAGEN_PASATE_1 = 47, //--2003,2001Ԧ + VSR_VOLKSWAGEN_PASATE_2 = 48, //--2007,2006,2005Ԧ + VSR_VOLKSWAGEN_PASATE_3 = 49, //--2009,2008,2007,2005,2004,2003,2001,2000 + VSR_VOLKSWAGEN_PASATE_4 = 50, //--2011,2009Ԧ + VSR_VOLKSWAGEN_PASATE_5 = 51, //--2014,2013,2012,2011 + VSR_VOLKSWAGEN_JIEDA_1 = 52, //-ݴ-2005CIF,2002 + VSR_VOLKSWAGEN_JIEDA_2 = 53, //-ݴ-2009,2008,2006,2005,2004 + VSR_VOLKSWAGEN_JIEDA_3 = 54, //-ݴ-2012,2010 + VSR_VOLKSWAGEN_JIEDA_4 = 55, //-ݴ-2013 + VSR_VOLKSWAGEN_LANGYI_1 = 56, //--2012,2011,2010,2009,2008 + VSR_VOLKSWAGEN_LANGYI_2 = 57, //--2013 + VSR_VOLKSWAGEN_SANGTANA_1 = 58, //-ɣ-2007,2002,2000,1999,1995 + VSR_VOLKSWAGEN_SANGTANA_2 = 59, //-ɣ-2014,2013 + VSR_VOLKSWAGEN_SANGTANA_3 = 60, //-ɣ2000-2003,2001,2000,1999,1998,1996 + VSR_VOLKSWAGEN_SANGTANA_4 = 61, //-ɣ3000-2007,2006,2005,2004,2003 + VSR_VOLKSWAGEN_SANGTANAZHIJUN_1 = 62, //-ɣ־(vista)-2011,2010,2009,2008 + VSR_VOLKSWAGEN_SANGTANAZHIJUN_2 = 63, //-ɣ־(vista)-2006 + VSR_VOLKSWAGEN_JIAKECHONG_1 = 64, //-׿dz-2010,2009,2008,2007,2006,2005 + VSR_VOLKSWAGEN_JIAKECHONG_2 = 65, //-׿dz-2014,2013 + VSR_VOLKSWAGEN_HUITENG_2 = 66, //--2010,2009,2007,2006 + VSR_VOLKSWAGEN_MAITENG_1 = 67, //--2011,2010,2009,2008,2007 + VSR_VOLKSWAGEN_MAITENG_2 = 68, //--2013,2012 + VSR_VOLKSWAGEN_TUAN_3 = 69, //-;-2006,2005,2004 + VSR_VOLKSWAGEN_TUAN_1 = 70, //-;-2010,2009,2008 + VSR_VOLKSWAGEN_TUAN_2 = 71, //-;-2013,2012,2011 + VSR_VOLKSWAGEN_TUGUAN_1 = 72, //-;-2012,2011,2010 + VSR_VOLKSWAGEN_TURUI_1 = 73, //-;-2006,2005,2003 + VSR_VOLKSWAGEN_TURUI_2 = 74, //-;-2014,2013,2012,2011 + VSR_VOLKSWAGEN_SUTENG_1 = 75, //--2010,2009,2007,2006 + VSR_VOLKSWAGEN_SUTENG_2 = 76, //--2011 + VSR_VOLKSWAGEN_SUTENG_3 = 77, //--2014,2013,2012 + VSR_VOLKSWAGEN_GAOERFU_1 = 78, //-߶-2008,2007,2006,2005,2004,2003 + VSR_VOLKSWAGEN_GAOERFU_2 = 79, //-߶-2012,2011,2012,2011,2010 + VSR_VOLKSWAGEN_GAOERFU_3 = 80, //-߶GTI-2013,2012,2011,2010 + VSR_VOLKSWAGEN_LANGYI_3 = 81, //--2014 + VSR_VOLKSWAGEN_HUITENG_1 = 82 //--2004 +} VSB_VOLKSWAGEN_CLASS; + +//Ʒ +typedef enum _VBR_BUICK_CLASS +{ + VBR_BUICK_OTHER = 0, // + VBR_BUICK_ENCORE = 1, // + VBR_BUICK_GL8 = 2, // GL8 + VBR_BUICK_LEGAL = 3, // + VBR_BUICK_LACROSS = 4, // Խ + VBR_BUICK_EXCELLE = 5, // Խ + VBR_BUICK_EXCELLEGT = 6, // ӢGT + VBR_BUICK_WXCELLEXT = 7, // ӢXT + VBR_BUICK_ENCLAVE = 8, // + VBR_BUICK_ROYAUM = 9, // + VBR_BUICK_SAIL = 10, // ŷ + VBR_BUICK_EXCELLEHRV = 11, // ԽHRV + VBR_BUICK_PARKAVENUE = 12, // + VBR_BUICK_CENTURY = 13, // + VBR_BUICK_GL8_1 = 14, // -GL8-2004,2003 + VBR_BUICK_GL8_2 = 15, // -GL8-2007,2006,2005 + VBR_BUICK_GL8_3 = 16, // -GL8-2010_2008_2006_2005½ + VBR_BUICK_GL8_4 = 17, // -GL8-2014,2013,2012,2011 + VBR_BUICK_GL8_5 = 18, // -GL8-2014_2013_2011 + VBR_BUICK_ENCORE_1 = 19, // --2014,2013 + VBR_BUICK_ENCLAVE_1 = 20, // --2013,2010,2009 + VBR_BUICK_LEGAL_1 = 21, // --2001,2000,1999 + VBR_BUICK_LEGAL_2 = 22, // --2008,2006,2005,2004,2002 + VBR_BUICK_LEGAL_3 = 23, // --2013,2012,2011,2010,2009 + VBR_BUICK_LEGAL_4 = 24, // --2013_2012_2011˶ + VBR_BUICK_LEGAL_5 = 25, // --2014 + VBR_BUICK_LEGAL_6 = 26, // --2014˶ + VBR_BUICK_LACROSS_1 = 27, // -Խ-2008,2007,2006 + VBR_BUICK_LACROSS_2 = 28, // -Խ-2012,2011,2010,2009 + VBR_BUICK_LACROSS_3 = 29, // -Խ-2013 + VBR_BUICK_EXCELLE_1 = 30, // -Խ-2006,2005,2004 + VBR_BUICK_EXCELLE_2 = 31, // -Խ-2008_2006_2005_2004HRV + VBR_BUICK_EXCELLE_3 = 32, // -Խ-2011,2009,2008 + VBR_BUICK_EXCELLE_4 = 33, // -Խ-2013 + VBR_BUICK_PARKAVENUE_1 = 34, // --2011,2010,2009,2008,2007 + VBR_BUICK_SAIL_1 = 35, // -ŷ-2004,2003 + VBR_BUICK_EXCELLEGT_1 = 36, // -ӢGT-2013,2012,2011,2010 + VBR_BUICK_WXCELLEXT_1 = 37, // -ӢXT-2014,2013,2012,2010 + VBR_BUICK_CENTURY_1 = 38, // --2000 + VBR_BUICK_RONGYU_1 = 39 // --2005,2004 +}VBR_BUICK_CLASS; + +//Ʒ +typedef enum _VSB_BMW_CLASS +{ + VSB_BMW_OTHER = 0, // + VSB_BMW_3SERIES = 1, // 3ϵ + VSB_BMW_5SERIES = 2, // 5ϵ + VSB_BMW_X1 = 3, // X1 + VSB_BMW_1SERIES = 4, // 1ϵ + VSB_BMW_7SERIES = 5, // 7ϵ + VSB_BMW_X3 = 6, // X3 + VSB_BMW_X5 = 7, // X5 + VSB_BMW_X6 = 8, // X6 + VSB_BMW_Z4 = 9, // Z4 + VSB_BMW_MINI = 10, // + VSB_BMW_6SERIES = 11, //6ϵ + VSB_BMW_YIXI_1 = 12, // -1ϵ-2011,2010,2008,2007 + VSB_BMW_YIXI_2 = 13, // -1ϵ-2013,2012 + VSB_BMW_SANXI_1 = 14, // -3ϵ-2004 + VSB_BMW_SANXI_2 = 15, // -3ϵ-2007,2005 + VSB_BMW_SANXI_3 = 16, // -3ϵ-2012,2011,2010,2009 + VSB_BMW_SANXI_4 = 17, // -3ϵ-2014,2013 + VSB_BMW_WUXI_1 = 18, // -5ϵ-2010,2009,2008 + VSB_BMW_WUXI_2 = 19, // -5ϵ-2013,2012,2011 + VSB_BMW_LIUXI_1 = 20, // -6ϵ-δ֪ + VSB_BMW_QIXI_1 = 21, // -7ϵ-2011,2010,2009 + VSB_BMW_QIXI_2 = 22, // -7ϵ-2013 + VSB_BMW_X1_1 = 23, // -X1-2012,2010 + VSB_BMW_X1_2 = 24, // -X1-2014,2013 + VSB_BMW_X3_1 = 25, // -X3-2009,2008,2006 + VSB_BMW_X3_2 = 26, // -X3-2013,2012,2011 + VSB_BMW_X5_1 = 27, // -X5-2010,2009,2008 + VSB_BMW_X5_2 = 28, // -X5-2013,2012,2011 + VSB_BMW_X5_3 = 29, // -X5-2013˶ + VSB_BMW_X6_1 = 30, // -X6-2013,2012,2011,2009,2008 + VSB_BMW_Z4_1 = 31 // -Z4-2004 +}VSB_BMW_CLASS; + +//Ʒ +typedef enum _VSB_HONDA_CLASS +{ + VSB_HONDA_OTHER = 0, // + VSB_HONDA_CRV = 1, // CR-V(˼) + VSB_HONDA_JADE = 2, // ܵ + VSB_HONDA_CIVIC = 3, // ˼ + VSB_HONDA_SPIRIOR = 4, // ˼ + VSB_HONDA_CIIMO = 5, // ˼ + VSB_HONDA_ELYSION = 6, // + VSB_HONDA_OBYSSEY = 7, // + VSB_HONDA_FIT = 8, // ɶ + VSB_HONDA_NEWCITY = 9, // 淶 + VSB_HONDA_CROSSTOUR = 10, // ʫͼ + VSB_HONDA_CRIDER = 11, // + VSB_HONDA_ACCORD = 12, // Ÿ + VSB_HONDA_CITY = 13, // ˼ + VSB_HONDA_ANTILOCK = 14, // µ + VSB_HONDA_CRZ = 15, // CR-Z + VSB_HONDA_CRV_1 = 16, // -CR-V-2004 + VSB_HONDA_CRV_2 = 17, // -CR-V-2005 + VSB_HONDA_CRV_3 = 18, // -CR-V-2008,2007 + VSB_HONDA_CRV_4 = 19, // -CR-V-2010 + VSB_HONDA_CRV_5 = 20, // -CR-V-2013,2012 + VSB_HONDA_CRIDER_1 = 21, // --2014,2013 + VSB_HONDA_OBYSSEY_1 = 22, // -µ-2002 + VSB_HONDA_OBYSSEY_2 = 23, // -µ-2006,2005,2004 + VSB_HONDA_OBYSSEY_3 = 24, // -µ-2008,2007 + VSB_HONDA_OBYSSEY_4 = 25, // -µ-2011 + VSB_HONDA_CIVIC_1 = 26, // -˼-2007 + VSB_HONDA_CIVIC_5 = 27, // -˼-1996 + VSB_HONDA_CIVIC_2 = 28, // -˼-2008,2006 + VSB_HONDA_CIVIC_3 = 29, // -˼-2009 + VSB_HONDA_CIVIC_4 = 30, // -˼-2013,2012,2011 + VSB_HONDA_CITY_1 = 31, // -˼-2008,2007,2006 + VSB_HONDA_SPIRIOR_1 = 32, // -˼-2009 + VSB_HONDA_SIMING_1 = 33, // -˼-2012 + VSB_HONDA_JIEDE_1 = 34, // -ܵ-2013 + VSB_HONDA_CROSSTOUR_1 = 35, // -ʫͼ-2013,2012,2010 + VSB_HONDA_AILISHEN_1 = 36, // --2012 + VSB_HONDA_NEWCITY_1 = 37, // -淶-2009 + VSB_HONDA_NEWCITY_2 = 38, // -淶-2011 + VSB_HONDA_NEWCITY_3 = 39, // -淶-2014,2012 + VSB_HONDA_ACCORD_1 = 40, // -Ÿ-1996 + VSB_HONDA_ACCORD_2 = 41, // -Ÿ-1999 + VSB_HONDA_ACCORD_3 = 42, // -Ÿ-2001 + VSB_HONDA_ACCORD_4 = 43, // -Ÿ-2003 + VSB_HONDA_ACCORD_5 = 44, // -Ÿ-2008 + VSB_HONDA_ACCORD_6 = 45, // -Ÿ-2010 + VSB_HONDA_ACCORD_7 = 46, // -Ÿ-2011 + VSB_HONDA_ACCORD_8 = 47, // -Ÿ-2012 + VSB_HONDA_ACCORD_9 = 48, // -Ÿ-2013 + VSB_HONDA_ACCORD_10 = 49, // -Ÿ-2014 + VSB_HONDA_FIT_1 = 50, // -ɶ-2004 + VSB_HONDA_FIT_2 = 51, // -ɶ-2004 + VSB_HONDA_FIT_3 = 52, // -ɶ-2005 + VSB_HONDA_FIT_4 = 53, // -ɶ-2007 + VSB_HONDA_FIT_5 = 54, // -ɶ-2008 + VSB_HONDA_FIT_6 = 55 // -ɶ-2013,2011 +}VSB_HONDA_CLASS; + +//Ʒ +typedef enum _VSB_PEUGEOT_CLASS +{ + VSB_PEUGEOT_OTHER = 0, // + VSB_PEUGEOT_2008 = 1, // 2008 + VSB_PEUGEOT_207 = 2, // 207 + VSB_PEUGEOT_SENNA = 3, // + VSB_PEUGEOT_3008 = 4, // 3008 + VSB_PEUGEOT_301 = 5, // 301 + VSB_PEUGEOT_307 = 6, // 307 + VSB_PEUGEOT_308 = 7, // 308 + VSB_PEUGEOT_408 = 8, // 408 + VSB_PEUGEOT_508 = 9, // 508 + VSB_PEUGEOT_206 = 10, // 206 + VSB_PEUGEOT_407 = 11, // 407 + VSB_PEUGEOT_206_1 = 12, // -206-δ֪ + VSB_PEUGEOT_207_1 = 13, // -207-2011,2010,2009 + VSB_PEUGEOT_207_2 = 14, // -207-2013 + VSB_PEUGEOT_3008_1 = 15, // -3008-2014,2013 + VSB_PEUGEOT_301_1 = 16, // -301-δ֪ + VSB_PEUGEOT_307_1 = 17, // -307-2007,2006,2005,2004 + VSB_PEUGEOT_307_2 = 18, // -307-2010,2009,2008 + VSB_PEUGEOT_307_3 = 19, // -307-2013_2012_2011CROSS + VSB_PEUGEOT_308_1 = 20, // -308-2014,2013,2012 + VSB_PEUGEOT_407_1 = 21, // -407-δ֪ + VSB_PEUGEOT_408_1 = 22, // -408-2012,2011,2010 + VSB_PEUGEOT_408_2 = 23, // -408-2013 + VSB_PEUGEOT_508_1 = 24, // -508-2014,2013,2012,2011 + VSB_PEUGEOT_207_3 = 25, // -207-2011,2010,2009 + VSB_PEUGEOT_307_4 = 26 // -307-2013,2012,2010,2009,2008 + +}VSB_PEUGEOT_CLASS; + +//Ʒ +typedef enum _VSB_TOYOTA_CLASS +{ + VSB_TOYOTA_OTHER = 0, // + VSB_TOYOTA_HIGHLANDER = 1, // + VSB_TOYOTA_CAMRY = 2, // + VSB_TOYOTA_YARIS = 3, // ʿ + VSB_TOYOTA_YARISL = 4, // YARIS L + VSB_TOYOTA_VERSO = 5, // + VSB_TOYOTA_HUAGUAN = 6, // + VSB_TOYOTA_CROWN = 7, // ʹ + VSB_TOYOTA_COROLLA = 8, // + VSB_TOYOTA_COSTER = 9, // ˹ + VSB_TOYOTA_PRADO = 10, // + VSB_TOYOTA_PRIUS = 11, // ˹ + VSB_TOYOTA_RAV4 = 12, // RAV4 + VSB_TOYOTA_REZI = 13, // ־ + VSB_TOYOTA_VIOS = 14, // + VSB_TOYOTA_PREVIA = 15, // ά + VSB_TOYOTA_HIACE = 16, // ʨ + VSB_TOYOTA_86 = 17, // 86 + VSB_TOYOTA_SPEQUOIA = 18, // ɼ + VSB_TOYOTA_LANDCRUISER = 19, // ½Ѳ(¿·) + VSB_TOYOTA_SIENNA = 20, // + VSB_TOYOTA_CAMRYHYBRID = 21, // -HYBRID + VSB_TOYOTA_GRACE = 22, // ˹ + VSB_TOYOTA_ALPHARD = 23, // + VSB_TOYOTA_RAV4_1 = 24, // -RAV4-2012ֶ,2011,2010,2009 + VSB_TOYOTA_RAV4_2 = 25, // -RAV4-2013 + VSB_TOYOTA_86_1 = 26, // -86-δ֪ + VSB_TOYOTA_JIAMEI_2 = 27, // --2001,2000,1999,1998 + VSB_TOYOTA_JIAMEI_3 = 28, // --2004,2003,2002 + VSB_TOYOTA_LANDEKLZ_1 = 29, // -¿·-2011ж,2010,2007 + VSB_TOYOTA_KAIMEIRUI_1 = 30, // --2008,2007,2006 + VSB_TOYOTA_KAIMEIRUI_2 = 31, // --2012 + VSB_TOYOTA_KAIMEIRUI_3 = 32, // --2012,2011,2010,2009 + VSB_TOYOTA_KAIMEIRUI_4 = 33, // --2013,2012 + VSB_TOYOTA_KAIMEIRUI_5 = 34, // --2013 + VSB_TOYOTA_KAIMEIRUI_6 = 35, // --2014,2012 + VSB_TOYOTA_KALUOLA_1 = 36, // --2010,2009,2008,2007,2006 + VSB_TOYOTA_KALUOLA_2 = 37, // --2013,2012,2011 + VSB_TOYOTA_AIERFA_1 = 38, // --2011,2010 + VSB_TOYOTA_AIERFA_2 = 39, // --2013,2012 + VSB_TOYOTA_WEICHI_1 = 40, // --2004,2003 + VSB_TOYOTA_WEICHI_2 = 41, // --2007,2006,2005 + VSB_TOYOTA_WEICHI_3 = 42, // --2009,2008 + VSB_TOYOTA_WEICHI_4 = 43, // --2013,2012,2011,2010 + VSB_TOYOTA_WEICHI_5 = 44, // --2014 + VSB_TOYOTA_PULADUO_1 = 45, // --2007,2006,2005,2004 + VSB_TOYOTA_PULADUO_2 = 46, // --2010 + VSB_TOYOTA_PULADUO_3 = 47, // --2014 + VSB_TOYOTA_PURUIWEIYA_1 = 48, // -ά-2004 + VSB_TOYOTA_PURUIWEIYA_4 = 49, // -ά-2005 + VSB_TOYOTA_PURUIWEIYA_2 = 50, // -ά-2006 + VSB_TOYOTA_PURUIWEIYA_3 = 51, // -ά-2012,2010,2008,2007 + VSB_TOYOTA_KESIDA_1 = 52, // -˹-2007 + VSB_TOYOTA_KESIDA_2 = 53, // -˹-2011 + VSB_TOYOTA_HANLANDA_1 = 54, // --2011,2009 + VSB_TOYOTA_HANLANDA_2 = 55, // --2012 + VSB_TOYOTA_HANLANDA_3 = 56, // --2013 + VSB_TOYOTA_HAISHI_1 = 57, // -ʨ-2001 + VSB_TOYOTA_HUANGGUAN_1 = 58, // -ʹ-1999 + VSB_TOYOTA_HUANGGUAN_2 = 59, // -ʹ-2009,2008,2007,2006,2005 + VSB_TOYOTA_HUANGGUAN_3 = 60, // -ʹ-2010 + VSB_TOYOTA_HUANGGUAN_4 = 61, // -ʹ-2012,2011 + VSB_TOYOTA_HONGSHAN_1 = 62, // -ɼ-δ֪ + VSB_TOYOTA_HUAGUAN_1 = 63, // --2006,2005,2004 + VSB_TOYOTA_HUAGUAN_2 = 64, // --2009,2008,2007 + VSB_TOYOTA_HUAGUAN_3 = 65, // --2011,2010 + VSB_TOYOTA_YIZHI_1 = 66, // --2014,2012,2011 + VSB_TOYOTA_RUIZHI_1 = 67, // -־-2006,2005 + VSB_TOYOTA_RUIZHI_2 = 68, // -־-2009,2008,2007 + VSB_TOYOTA_RUIZHI_3 = 69, // -־-2010Ȱ + VSB_TOYOTA_RUIZHI_4 = 70, // -־-2012,2010 + VSB_TOYOTA_LUDIXUNYANG_1 = 71, // -½Ѳ-δ֪ + VSB_TOYOTA_YALISHI_1 = 72, // -ʿ-2009,2008,2007 + VSB_TOYOTA_YALISHI_2 = 73, // -ʿ-2012,2011,2010 + VSB_TOYOTA_RAV4_3 = 74, // -RAV4-2013,Ӣ,,2012 + VSB_TOYOTA_YARiSL_1 = 75, // -YARiS-L + VSB_TOYOTA_JIAMEI_1 = 76, // --1996 + VSB_TOYOTA_PLATZ_1 = 77, // -PLATZ-1999 + VSB_TOYOTA_LANDEKLZ_2 = 78 // -¿·-2014,2012ж,2012 +}VSB_TOYOTA_CLASS; + +//Ʒ +typedef enum _VSB_FORD_CLASS +{ + VSB_FORD_OTHER = 0, // + VSB_FORD_FOCUS = 1, // ˹ + VSB_FORD_FIESTA = 2, // 껪 + VSB_FORD_SMAX = 3, // ˹ + VSB_FORD_MONDEO = 4, // ɵŷ + VSB_FORD_ECOSPORT = 5, // + VSB_FORD_ESCAPE = 6, // + VSB_FORD_ZHISHENG = 7, // ʤ + VSB_FORD_ESCORT = 8, // ˹ + VSB_FORD_EXPLORER = 9, // ̽ + VSB_FORD_EDGE = 10, // + VSB_FORD_TRANSIT = 11, // ȫ˳ + VSB_FORD_QUANSHUN_1 = 12, // -ȫ˳-δ֪ + VSB_FORD_JIANIANHUA_1 = 13, // -껪-2006,2005,2004 + VSB_FORD_JIANIANHUA_2 = 14, // -껪-2011,2010,2009 + VSB_FORD_JIANIANHUA_3 = 15, // -껪-2013 + VSB_FORD_JIANIANHUA_4 = 16, // -껪-2012 + VSB_FORD_TANXIANZHE_1 = 17, // -̽-2013,2011 + VSB_FORD_FOCUS_1 = 18, // -˹-2005 + VSB_FORD_FOCUS_2 = 19, // -˹-2005 + VSB_FORD_FOCUS_3 = 20, // -˹-2008,2007,2006 + VSB_FORD_FOCUS_4 = 21, // -˹-2013,2012,2011,2009 + VSB_FORD_FOCUS_5 = 22, // -˹-2012 + VSB_FORD_FOCUS_6 = 23, // -˹-2012,ʱ,2011,2010,2009,2008 + VSB_FORD_YIBO_1 = 24, // --2013 + VSB_FORD_YIHU_1 = 25, // --2013 + VSB_FORD_MENGDIOU_1 = 26, // -ɵŷ-2003 + VSB_FORD_MENGDIOU_2 = 27, // -ɵŷ-2005,2004 + VSB_FORD_MENGDIOU_3 = 28, // -ɵŷ-2006 + VSB_FORD_MENGDIOU_4 = 29, // -ɵŷ-2013 + VSB_FORD_MENGDIOU_5 = 30, // -ɵŷ-ʤ-2010,2008,2007 + VSB_FORD_MENGDIOU_6 = 31, // -ɵŷ-ʤ-2011 + VSB_FORD_RUIJIE_1 = 32, // --2012,2011 + VSB_FORD_MAIKESI_1 = 33 // -˹-2008,2007 +}VSB_FORD_CLASS; + +//ղƷ +typedef enum _VSB_NISSAN_CLASS +{ + VSB_NISSAN_OTHER = 0, // + VSB_NISSAN_XTRAIL = 1, // 濥 + VSB_NISSAN_MURANO = 2, // ¥ + VSB_NISSAN_LIVINA = 3, // + VSB_NISSAN_MARCH = 4, // + VSB_NISSAN_TIIDA = 5, // + VSB_NISSAN_TEANA = 6, // + VSB_NISSAN_QASHQAI = 7, // п + VSB_NISSAN_SYLPHY = 8, // + VSB_NISSAN_SUNNY = 9, // + VSB_NISSAN_D22PICKUP = 10, // D22Ƥ + VSB_NISSAN_D22VAN = 11, // D22ʽ + VSB_NISSAN_CABSTAR = 12, // ˹ + VSB_NISSAN_HV200 = 13, // NV200 + VSB_NISSAN_PALADIN = 14, // + VSB_NISSAN_YIDA = 15, // ô + VSB_NISSAN_DUCK = 16, // + VSB_NISSAN_CEFIRO = 17, // + VSB_NISSAN_FENGSHENBLUEBIRD = 18, // + VSB_NISSAN_FENGSHENSUNNY = 19, // + VSB_NISSAN_SUCCE = 20, // ˧ + VSB_NISSAN_FUGA = 21, // + VSB_NISSAN_BLUEBIRD4 = 22, // 4 + VSB_NISSAN_VENUCIA = 23, // + VSB_NISSAN_QUEST = 24, // ʿ + VSB_NISSAN_GENISS = 25, // + VSB_NISSAN_NV200_1 = 26, // ղ-NV200-2013,2012,2011,2010 + VSB_NISSAN_TIANLAI_1 = 27, // ղ--2005,2004 + VSB_NISSAN_TIANLAI_2 = 28, // ղ--2007,2006 + VSB_NISSAN_TIANLAI_3 = 29, // ղ--2010,2008 + VSB_NISSAN_TIANLAI_4 = 30, // ղ--2012,2011 + VSB_NISSAN_TIANLAI_5 = 31, // ղ--2012ưȫ,2011 + VSB_NISSAN_TIANLAI_6 = 32, // ղ--2014,2013 + VSB_NISSAN_QIJUN_1 = 33, // ղ-濥-2010,2008 + VSB_NISSAN_QIJUN_2 = 34, // ղ-濥-2012,2011 + VSB_NISSAN_PALADING_1 = 35, // ղ--2013,2011,2006,2004 + VSB_NISSAN_LOULAN_1 = 36, // ղ-¥-2013,2011 + VSB_NISSAN_LOULAN_2 = 37, // ղ--2010 + VSB_NISSAN_LANNIAO_1 = 38, // ղ--2002 + VSB_NISSAN_LANNIAO_2 = 39, // ղ--2003 + VSB_NISSAN_LANNIAO_3 = 40, // ղ--2004 + VSB_NISSAN_GUISHI_1 = 41, // ղ-ʿ-2005 + VSB_NISSAN_XUANYI_1 = 42, // ղ--2006 + VSB_NISSAN_XUANYI_2 = 43, // ղ--2012,2009,2007 + VSB_NISSAN_XUANYI_3 = 44, // ղ--2014,2012 + VSB_NISSAN_XIAOKE_1 = 45, // ղ-п-2009,2008 + VSB_NISSAN_XIAOKE_2 = 46, // ղ-п-2013,2012,2011 + VSB_NISSAN_SUNNY_3 = 47, // ղ--2004 + VSB_NISSAN_SUNNY_1 = 48, // ղ--2006,2005 + VSB_NISSAN_SUNNY_2 = 49, // ղ--2012,2011 + VSB_NISSAN_YIDA_1 = 50, // ղ-ô-2008,2006,2005 + VSB_NISSAN_YIDA_2 = 51, // ղ-ô-δ֪ + VSB_NISSAN_FENGDU_1 = 52, // ղ--δ֪ + VSB_NISSAN_FENGYA_1 = 53, // ղ--δ֪ + VSB_NISSAN_LIWEI_1 = 54, // ղ--2008,2007 + VSB_NISSAN_LIWEI_2 = 55, // ղ--2009 + VSB_NISSAN_LIWEI_3 = 56, // ղ--2010 + VSB_NISSAN_LIWEI_4 = 57, // ղ--2011,2010,2008 + VSB_NISSAN_JUNYI_1 = 58, // ղ--2006 + VSB_NISSAN_QIDA_1 = 59, // ղ--2006,2005 + VSB_NISSAN_QIDA_2 = 60, // ղ--2009,2008 + VSB_NISSAN_QIDA_3 = 61, // ղ--2013,2012,2011 + VSB_NISSAN_RUIQI_1 = 62 // ղ-Ƥ-2009 +}VSB_NISSAN_CLASS; + +//µƷ +typedef enum _VSB_AUDI_CLASS +{ + VSB_AUDI_OTHER = 0, // + VSB_AUDI_A3 = 1, // µA3 + VSB_AUDI_A4L = 2, // µA4L + VSB_AUDI_A6L = 3, // µA6L + VSB_AUDI_Q3 = 4, // µQ3 + VSB_AUDI_Q5 = 5, // µQ5 + VSB_AUDI_A1 = 6, // µA1 + VSB_AUDI_A4 = 7, // µA4 + VSB_AUDI_A5 = 8, // µA5 + VSB_AUDI_A6 = 9, // µA6 + VSB_AUDI_A7 = 10, // µA7 + VSB_AUDI_A8L = 11, // µA8L + VSB_AUDI_Q7 = 12, // µQ7 + VSB_AUDI_S5 = 13, // µS5 + VSB_AUDI_TT = 14, // µTT + VSB_AUDI_100 = 15, // µ100 + VSB_AUDI_200 = 16, // µ200 + VSB_AUDI_S7 = 17, // µS7 + VSB_AUDI_S8 = 18, // µS8 + VSB_AUDI_100_1 = 19, // µ-100-δ֪ + VSB_AUDI_200_1 = 20, // µ-200-δ֪ + VSB_AUDI_A1_1 = 21, // µ-A1-2014,2013,2012 + VSB_AUDI_A3_1 = 22, // µ-A3-2013,2010ʰ + VSB_AUDI_A3_2 = 23, // µ-A3-2013,2011,2010 + VSB_AUDI_A4_1 = 24, // µ-A4-2005,2000ڰ + VSB_AUDI_A4_2 = 25, // µ-A4-2007,2006,2004 + VSB_AUDI_A4L_1 = 26, // µ-A4L-2013 + VSB_AUDI_A5_1 = 27, // µ-A5-2011,2010 + VSB_AUDI_A6_1 = 28, // µ-A6-1996,1995,1991 + VSB_AUDI_A6L_1 = 29, // µ-A6L-2008,2007,2006,2005 + VSB_AUDI_A6L_2 = 30, // µ-A6L-2011,2010,2009 + VSB_AUDI_A6L_3 = 31, // µ-A6L-2014,2013,2012 + VSB_AUDI_A7_1 = 32, // µ-A7-2014,2013ȡ,2012,2011 + VSB_AUDI_A8L_1 = 33, // µ-A8L-2006 + VSB_AUDI_A8L_2 = 34, // µ-A8L-2009,2008 + VSB_AUDI_A8L_3 = 35, // µ-A8L-2011 + VSB_AUDI_A8L_4 = 36, // µ-A8L-2013,2012 + VSB_AUDI_Q3_1 = 37, // µ-Q3-2014,2013,2012 + VSB_AUDI_Q5_1 = 38, // µ-Q5-2012,2010˶ + VSB_AUDI_Q5_2 = 39, // µ-Q5-2012,2010ԽҰ + VSB_AUDI_Q5_3 = 40, // µ-Q5-2012ȡ,2011,2010,2009 + VSB_AUDI_Q5_4 = 41, // µ-Q5-2013 + VSB_AUDI_Q7_1 = 42, // µ-Q7-2007 + VSB_AUDI_Q7_2 = 43, // µ-Q7-2014,2013 + VSB_AUDI_S7_1 = 44, // µ-S7-2013 + VSB_AUDI_S8_1 = 45, // µ-S8-2013 + VSB_AUDI_TT_2 = 46, // µ-TT-2010,2008,2007 + VSB_AUDI_TT_3 = 47, // µ-TT-2012,2011 + VSB_AUDI_TT_4 = 48, // µ-TT-2013,2013,2011TTS + VSB_AUDI_TT_1 = 49 // µ-TT-2008TTS +}VSB_AUDI_CLASS; + +//ԴƷ +typedef enum _VSB_MAZDA_CLASS +{ + VSB_MAZDA_OTHER = 0, // + VSB_MAZDA_CX5 = 1, // ԴCX5 + VSB_MAZDA_2 = 2, // Դ2 + VSB_MAZDA_3 = 3, // Դ3 + VSB_MAZDA_6 = 4, // Դ6 + VSB_MAZDA_8 = 5, // Դ8 + VSB_MAZDA_COREWING = 6, // + VSB_MAZDA_CX7 = 7, // ԴCX7 + VSB_MAZDA_X5 = 8, // ԴX5 + VSB_MAZDA_5 = 9, // Դ5 + VSB_MAZDA_PREMACY = 10, // Ͽ + VSB_MAZDA_MPV = 11, // ԴMPV + VSB_MAZDA_CX5_1 = 12, // Դ-CX-5-2014,2013,2012 + VSB_MAZDA_CX7_1 = 13, // Դ-CX-7-2014,2013,2011,2010 + VSB_MAZDA_2_1 = 14, // Դ-Mazda2-2011,2009,2008,2007A + VSB_MAZDA_3_1 = 15, // Դ-Mazda3-2004,2002 + VSB_MAZDA_3_2 = 16, // Դ-Mazda3-2009,2007 + VSB_MAZDA_3_3 = 17, // Դ-Mazda3-2012,2010 + VSB_MAZDA_3_4 = 18, // Դ-Mazda3dz-2013,2012 + VSB_MAZDA_5_1 = 19, // Դ-Mazda5-2010,2008,2007 + VSB_MAZDA_5_2 = 20, // Դ-Mazda5-2013,2012,2011 + VSB_MAZDA_6_2 = 21, // Դ-Mazda6-2006 + VSB_MAZDA_6_3 = 22, // Դ-Mazda6-2007 + VSB_MAZDA_8_1 = 23, // Դ-Mazda8-2013,2011,2010 + VSB_MAZDA_PREMACY_1 = 24, // Դ--2003 + VSB_MAZDA_PREMACY_2 = 25, // Դ--2006,2005,2004 + VSB_MAZDA_COREWING_1 = 26, // Դ--2012,2011,2010,2009 + VSB_MAZDA_COREWING_2 = 27, // Դ--2011,2010 + VSB_MAZDA_COREWING_3 = 28, // Դ--2012 + VSB_MAZDA_2_2 = 29, // Դ-Mazda2()-2011,2010,2008 + VSB_MAZDA_6_1 = 30, // Դ-Mazda6-2004 + VSB_MAZDA_6_4 = 31 // Դ-Mazda6-2014,2013,2012,2011,2010 +}VSB_MAZDA_CLASS; + +//ѩƷ +typedef enum _VSB_CHEVROLET_CLASS +{ + VSB_CHEVROLET_OTHER = 0, // + VSB_CHEVROLET_NEWAVEO = 1, // Ψŷ + VSB_CHEVROLET_EPICA = 2, // + VSB_CHEVROLET_CRUZE = 3, // ³ + VSB_CHEVROLET_CAPTIVA = 4, // + VSB_CHEVROLET_MALIBU = 5, // + VSB_CHEVROLET_SAIL = 6, // ŷ + VSB_CHEVROLET_CAMARO = 7, // + VSB_CHEVROLET_LECHENG = 8, // ֳ + VSB_CHEVROLET_LOVA = 9, // ַ + VSB_CHEVROLET_OLDAVEO = 10, // ֳ-ϿΨŷ + VSB_CHEVROLET_SPARK = 11, // ֳ + VSB_CHEVROLET_SAILSRV = 12, // ŷSRV + VSB_CHEVROLET_LOVA_1 = 13, // ѩ-ַ-2009,2008,2007,2006 + VSB_CHEVROLET_LOVA_2 = 14, // ѩ-ַ-2010 + VSB_CHEVROLET_SPARK_1 = 15, // ѩ-ֳ-2010,2009,2006,2005,2004 + VSB_CHEVROLET_SPARK_2 = 16, // ѩ-ֳ-2010˶ + VSB_CHEVROLET_OLDAVEO_1 = 17, // ѩ-ֳ-2005 + VSB_CHEVROLET_OLDAVEO_2 = 18, // ѩ-ֳ-2010,2009,2008 + VSB_CHEVROLET_EPICA_1 = 19, // ѩ--2005 + VSB_CHEVROLET_EPICA_3 = 20, // ѩ--2012,2011,2010 + VSB_CHEVROLET_EPICA_4 = 21, // ѩ--2012,2011,2010 + VSB_CHEVROLET_EPICA_5 = 22, // ѩ--2013 + VSB_CHEVROLET_NEWAVEO_1 = 23, // ѩ-Ψŷ-2013,2012,2011 + VSB_CHEVROLET_CAPTIVA_1 = 24, // ѩ--2010,2008 + VSB_CHEVROLET_CAPTIVA_2 = 25, // ѩ--2014,2013,2012,2011 + VSB_CHEVROLET_KEMAILUO_1 = 26, // ѩ--2012,2011 + VSB_CHEVROLET_CRUZE_1 = 27, // ѩ-³-2014,2013,2012,2011,2010,2009 + VSB_CHEVROLET_SAIL_1 = 28, // ѩ-ŷ-2005 + VSB_CHEVROLET_SAIL_2 = 29, // ѩ-ŷ-2013,2011,2010 + VSB_CHEVROLET_MALIBU_1 = 30, // ѩ--2014,2013,2012 + VSB_CHEVROLET_EPICA_2 = 31 // ѩ--2009,2008,2007 +}VSB_CHEVROLET_CLASS; + +//ѩƷ +typedef enum _VSB_CITROEN_CLASS +{ + VSB_CITROEN_OTHER = 0, // + VSB_CITROEN_C2 = 1, // ѩC2 + VSB_CITROEN_C4L = 2, // ѩC4L + VSB_CITROEN_C5 = 3, // ѩC5 + VSB_CITROEN_ELYSEE = 4, // + VSB_CITROEN_CQUATRELIANGXIANG = 5, // + VSB_CITROEN_CQUATRESANXIANG = 6, // + VSB_CITROEN_SAEAPICASSO = 7, // -ϼ + VSB_CITROEN_PICASSO = 8, // ϼ + VSB_CITROEN_CTRIOMPHE = 9, // + VSB_CITROEN_XSARA = 10, // + VSB_CITROEN_SHENLONGFUKANG = 11, // + VSB_CITROEN_CHANGANDS = 12, // DS + VSB_CITROEN_C2_1 = 13, // ѩ-C2-2012,2010,2008,2007,2006 + VSB_CITROEN_C4L_1 = 14, // ѩ-C4L-2014,2013 + VSB_CITROEN_C4PICASSO_1 = 15, // ѩ-C4ϼ-2009ʰ + VSB_CITROEN_C5_1 = 16, // ѩ-C5-2012,2011,2010 + VSB_CITROEN_CQUATRESANXIANG_1 = 17, // ѩ--2013,2012 + VSB_CITROEN_CQUATRELIANGXIANG_1 = 18, // ѩ--2011,2010,2009,2008 + VSB_CITROEN_CTRIOMPHE_1 = 19, // ѩ--2010,2009,2008,2006 + VSB_CITROEN_FUKANG_1 = 20, // ѩ--2006,2005,2004,2003,2002 + VSB_CITROEN_ELYSEE_1 = 21, // ѩ--2006,2005,2004,2003,2002 + VSB_CITROEN_ELYSEE_2 = 22, // ѩ--2013,2012,2011,2010,2009,2008,2007 + VSB_CITROEN_SAEAPICASSO_1 = 23 // ѩ--ϼ-2014 +}VSB_CITROEN_CLASS; + +//ִƷ +typedef enum _VSB_HYUNDAI_CLASS +{ + VSB_HYUNDAI_OTHER = 0, // + VSB_HYUNDAI_IX35 = 1, // ִIX35 + VSB_HYUNDAI_LANGDONG = 2, // ʶ + VSB_HYUNDAI_MOINCA = 3, // Ԧ + VSB_HYUNDAI_SHENGDA = 4, // ʤ + VSB_HYUNDAI_VERNA = 5, // + VSB_HYUNDAI_RUIYI = 6, // + VSB_HYUNDAI_SONATAEIGHT = 7, // + VSB_HYUNDAI_TUCSON = 8, // ;ʤ + VSB_HYUNDAI_YUEDONG = 9, // ö + VSB_HYUNDAI_ELANTRA = 10, // + VSB_HYUNDAI_GRANDSANTAFE = 11, // + VSB_HYUNDAI_COUPE = 12, // + VSB_HYUNDAI_MATRIX = 13, // + VSB_HYUNDAI_ACCENT = 14, // + VSB_HYUNDAI_IX30 = 15, // ִIX30 + VSB_HYUNDAI_SONATA = 16, // + VSB_HYUNDAI_REFINE = 17, // ִ + VSB_HYUNDAI_MISTRA = 18, // ͼ + VSB_HYUNDAI_SONATAYUFENG = 19, // - + VSB_HYUNDAI_SANTAFE = 20, // ִʥ + VSB_HYUNDAI_HUIYI = 21, // ڻ + VSB_HYUNDAI_I30_1 = 22, // ִ-i30-2010,2009 + VSB_HYUNDAI_IX35_1 = 23, // ִ-ix35-2012,2011,2010 + VSB_HYUNDAI_YILANTE_1 = 24, // ִ--2006,2005,2004 + VSB_HYUNDAI_YILANTE_2 = 25, // ִ--2007 + VSB_HYUNDAI_YILANTE_3 = 26, // ִ--2011 + VSB_HYUNDAI_SHENGDA_1 = 27, // ִ-ȫʤ-2013,2012 + VSB_HYUNDAI_MINGTU_1 = 28, // ִ-ͼ-2014,2013 + VSB_HYUNDAI_MINGYU_1 = 29, // ִ-Ԧ-2013,2011,2009 + VSB_HYUNDAI_SHENGDAFEI_1 = 30, // ִ-ʥ-δ֪ + VSB_HYUNDAI_YUXIANG_1 = 31, // ִ--2005ʰ + VSB_HYUNDAI_YUXIANG_2 = 32, // ִ--2006,2005 + VSB_HYUNDAI_YUEDONG_1 = 33, // ִ-ö-2010,2009,2008 + VSB_HYUNDAI_YUEDONG_2 = 34, // ִ-ö-2012,2011 + VSB_HYUNDAI_SHENGDA_2 = 35, // ִ-ʤ-2009,2006 + VSB_HYUNDAI_SHENGDA_3 = 36, // ִ-ʤ-2012,2011,2010 + VSB_HYUNDAI_LANGDONG_1 = 37, // ִ-ʶ-2013,2012 + VSB_HYUNDAI_GERUI_1 = 38, // ִ--δ֪ + VSB_HYUNDAI_RUIYI_1 = 39, // ִ--2014 + VSB_HYUNDAI_RUINA_1 = 40, // ִ--2013,2010 + VSB_HYUNDAI_RUINA_2 = 41, // ִ--2014,2013,2011 + VSB_HYUNDAI_RUIFENG_1 = 42, // ִ--δ֪ + VSB_HYUNDAI_SUONATA_1 = 43, // ִ--2008,2007,2006,2004,2003׼ + VSB_HYUNDAI_SUONATA_2 = 44, // ִ--2010,2009,2008,2006,2004 + VSB_HYUNDAI_SOUNATA_3 = 45, // ִ--2011,2010 + VSB_HYUNDAI_WEILAKESI_1 = 46, // ִ-ά˹-2012,2010,2008,2007 + VSB_HYUNDAI_MEIJIA_1 = 47, // ִ--δ֪ + VSB_HYUNDAI_JINKOUHUIYI_1 = 48, // ִ-ڻ-δ֪ + VSB_HYUNDAI_TUSHENG_1 = 49, // ִ-;ʤ-2005 + VSB_HYUNDAI_TUSHENG_2 = 50, // ִ-;ʤ-2011,2009,2008,2006 + VSB_HYUNDAI_TUSHENG_3 = 51, // ִ-;ʤ-2013 + VSB_HYUNDAI_KUPAI_1 = 52, // ִ--δ֪ + VSB_HYUNDAI_YASHENTE_1 = 53, // ִ--2008,2006 + VSB_HYUNDAI_YASHENTE_2 = 54, // ִ--2011 + VSB_HYUNDAI_LINGXIANG_1 = 55, // ִ--2009,2008 + VSB_HYUNDAI_FEISI_1 = 56 // ִ-˼-2011 +}VSB_HYUNDAI_CLASS; + +//Ʒ +typedef enum _VSB_CHERY_CLASS +{ + VSB_CHERY_OTHER = 0, // + VSB_CHERY_A1 = 1, // A1 + VSB_CHERY_A3 = 2, // A3 + VSB_CHERY_EASTAR = 3, // ֮ + VSB_CHERY_FULWIN = 4, // + VSB_CHERY_QQ = 5, // QQ + VSB_CHERY_E5 = 6, // E5 + VSB_CHERY_COWIN = 7, // + VSB_CHERY_TIGGO = 8, // + VSB_CHERY_A5 = 9, // A5 + VSB_CHERY_S16 = 10, // S16 + VSB_CHERY_YOUYA = 11, // + VSB_CHERY_V5 = 12, // V5 + VSB_CHERY_E3 = 13, // E3 + VSB_CHERY_A1_1 = 14, // -A1-2011,2008,2007 + VSB_CHERY_A3LIANGXIANG_1 = 15, // -A3-2012,2010,2009 + VSB_CHERY_A5_1 = 16, // -A5-2009,2007,2006 + VSB_CHERY_QQ_1 = 17, // -QQ-2006,2005,2004 + VSB_CHERY_QQ_2 = 18, // -QQ-2010,2007,2006 + VSB_CHERY_QQ_3 = 19, // -QQ-2012,2011,2010,2009,2007 + VSB_CHERY_QQ_4 = 20, // -QQ-2012˶ + VSB_CHERY_QQ_5 = 21, // -QQ-2013 + VSB_CHERY_DONGFANGZHIZI_1 = 22, // -֮-2005,2004,2003 + VSB_CHERY_DONGFANGZHIZI_2 = 23, // -֮-2007,2006 + VSB_CHERY_DONGFANGZHIZI_3 = 24, // -֮CROSS-2009,2008,2007 + VSB_CHERY_YOUYA_1 = 25, // --δ֪ + VSB_CHERY_E3_1 = 26, // -E3-2013 + VSB_CHERY_E5_1 = 27, // -E5-2014,2012,2011 + VSB_CHERY_QIYUN1_1 = 28, // -1-2010 + VSB_CHERY_QIYUN1_2 = 29, // -1-2012 + VSB_CHERY_QIYUN_1 = 30, // --2004 + VSB_CHERY_QIYUN_2 = 31, // --2009,2008,2007,2006 + VSB_CHERY_QIYUN2_1 = 32, // -2-2012 + VSB_CHERY_QIYUN2_2 = 33, // -2-2012,2010 + VSB_CHERY_QIYUN3_1 = 34, // -3-2010 + VSB_CHERY_RUIHU_1 = 35, // --2007,2006,2005 + VSB_CHERY_RUIHU_2 = 36, // --2009,2007 + VSB_CHERY_RUIHU_3 = 37, // --2012,2011 + VSB_CHERY_RUIHU_4 = 38, // --2013,2012ԶDVVT + VSB_CHERY_RUIHU_5 = 39, // --2013Ӣ,2012Ӣ + VSB_CHERY_FENGYUN2SANXIANG_1 = 40, // -2-2010 + VSB_CHERY_AIRUIZE7_1 = 41 // -7-2014,2013 +}VSB_CHERY_CLASS; + +//Ʒ +typedef enum _VSB_KIA_CLASS +{ + VSB_KIA_OTHER = 0, // + VSB_KIA_K2 = 1, // K2 + VSB_KIA_K3 = 2, // K3 + VSB_KIA_K5 = 3, // K5 + VSB_KIA_RIO = 4, // ŷ + VSB_KIA_CERATO = 5, // ͼ + VSB_KIA_SPORTAGER = 6, // ʨ + VSB_KIA_SOUL = 7, // + VSB_KIA_ZHIPAO = 8, // + VSB_KIA_CARENS = 9, // + VSB_KIA_CARNIVAL = 10, // λ + VSB_KIA_OPTIMA = 11, // Զ + VSB_KIA_OPIRUS = 12, // ŷ˹ + VSB_KIA_MAXIMA = 13, // ǧ + VSB_KIA_FORTE = 14, // + VSB_KIA_SORENTO = 15, // + VSB_KIA_K2_1 = 16, // -K2-2013,2012,2011 + VSB_KIA_K3_1 = 17, // -K3-2012 + VSB_KIA_K5_1 = 18, // -K5-2012,2011 + VSB_KIA_RUIOU_1 = 19, // -RIOŷ-2009,2007 + VSB_KIA_QIANLIMA_1 = 20, // -ǧ-2004 + VSB_KIA_QIANLIMA_2 = 21, // -ǧ-2006,2005 + VSB_KIA_JIAHUA_1 = 22, // -λ-δ֪ + VSB_KIA_XINJIALE_1 = 23, // -¼-2011 + VSB_KIA_ZHIPAO_1 = 24, // --2014,2012,2011,2010 + VSB_KIA_SHIPAO_1 = 25, // -ʨ-2008,2007,2005 + VSB_KIA_SHIPAO_2 = 26, // -ʨ-2011,2009 + VSB_KIA_SHIPAO_3 = 27, // -ʨ-2012 + VSB_KIA_SHIPAO_4 = 28, // -ʨ-2013 + VSB_KIA_FURUIDI_1 = 29, // --2012,2011,2009 + VSB_KIA_FURUIDI_2 = 30, // --2014 + VSB_KIA_XIUER_1 = 31, // --2012,2010 + VSB_KIA_SUOLANTUO_1 = 32, // --2006 + VSB_KIA_SUOLANTUO_2 = 33, // --2012,2010,2009 + VSB_KIA_SAILATU_1 = 34, // -ͼ-2006,2005 + VSB_KIA_SAILATU_2 = 35, // -ͼ-2007 + VSB_KIA_SAILATU_3 = 36, // -ͼ-2012,2010GLS + VSB_KIA_YUANJIAN_1 = 37 // -Զ-δ֪ +}VSB_KIA_CLASS; + +//Ʒ +typedef enum _VSB_BENZ_CLASS +{ + VSB_BENZ_OTHER = 0, // + VSB_BENZ_C = 1, // C + VSB_BENZ_E = 2, // E + VSB_BENZ_GLK = 3, // GLK + VSB_BENZ_WEITING = 4, // -PINYIN + VSB_BENZ_SPRINTER = 5, // + VSB_BENZ_VIANO = 6, // Ψŵ + VSB_BENZ_M = 7, // Mϵ + VSB_BENZ_CLK = 8, // CLKϵ + VSB_BENZ_G = 9, // Gϵ + VSB_BENZ_GL = 10, // GLϵ + VSB_BENZ_R = 11, // Rϵ + VSB_BENZ_S = 12, // Sϵ + VSB_BENZ_A = 13, // Aϵ + VSB_BENZ_SMART = 14, // ˹() + VSB_BENZ_B = 15, // Bϵ + VSB_BENZ_SLK = 16, // SLKϵ + VSB_BENZ_MB100 = 17, // MB100 + VSB_BENZ_VITO = 18, // + VSB_BENZ_CLS = 19, // CLSϵ + VSB_BENZ_SL = 20, // SLϵ + VSB_BENZ_AJI_1 = 21, // -A-2011,2009 + VSB_BENZ_AJI_2 = 22, // -A-2013 + VSB_BENZ_BJI_1 = 23, // -B-2010,2009 + VSB_BENZ_CJI_1 = 24, // -C-2010,2008,2007ʱ + VSB_BENZ_CJI_2 = 25, // -C-2013,2011,CGI + VSB_BENZ_CJI_3 = 26, // -C-2013,2011ʱ + VSB_BENZ_EJI_1 = 27, // -E-2002 + VSB_BENZ_EJI_2 = 28, // -E-2007,2006 + VSB_BENZ_EJI_3 = 29, // -E-2013,2012,2011,2010,2009 + VSB_BENZ_EJI_4 = 30, // -E-2013,2012,2011,2010,2009ʱ + VSB_BENZ_GLKJI_1 = 31, // -GLK-2012,2011 + VSB_BENZ_GLKJI_2 = 32, // -GLK-2012,2011,2008 + VSB_BENZ_GLKJI_3 = 33, // -GLK-2014,2013 + VSB_BENZ_GLJI_1 = 34, // -GL-2011 + VSB_BENZ_GLJI_2 = 35, // -GL-2011,2010 + VSB_BENZ_GLJI_3 = 36, // -GL-2012,2010 + VSB_BENZ_GJI_1 = 37, // -G-2013,2010,2009 + VSB_BENZ_MB100_1 = 38, // -MB100-2000 + VSB_BENZ_MLJI_1 = 39, // -ML-2006,2005 + VSB_BENZ_MLJI_2 = 40, // -ML-2010,2008 + VSB_BENZ_MLJI_3 = 41, // -ML-2014,2012 + VSB_BENZ_RJI_1 = 42, // -R-2006 + VSB_BENZ_RJI_2 = 43, // -R-2007 + VSB_BENZ_RJI_3 = 44, // -R-2014,2011,2010,2009 + VSB_BENZ_SLKJI_2 = 45, // -SLK-2006,2004 + VSB_BENZ_SLKJI_3 = 46, // -SLK-2010,2009 + VSB_BENZ_SLKJI_1 = 47, // -SLK-2011 + VSB_BENZ_SJI_1 = 48, // -S-2004 + VSB_BENZ_SJI_2 = 49, // -S-2009_Hybrid,2008,2006 + VSB_BENZ_SJI_3 = 50, // -S-2009,2008 + VSB_BENZ_SJI_4 = 51, // -S-2012,2011,2010 + VSB_BENZ_LINGTE_1 = 52, // --2013,2012,2011 + VSB_BENZ_WEIYANUO_1 = 53, // -Ψŵ-2010,2006,2004 + VSB_BENZ_WEIYANUO_2 = 54, // -Ψŵ-2014,2013,2012,2011 + VSB_BENZ_WEITING_1 = 55, // --2013,2011,2010 + VSB_BENZ_KECHE_1 = 56 // -ͳ1-A +}VSB_BENZ_CLASS; + +//˹´Ʒ +typedef enum _VSB_SKODA_CLASS +{ + VSB_SKODA_OTHER = 0, // + VSB_SKODA_HAORUI = 1, // + VSB_SKODA_FABIA = 2, // + VSB_SKODA_OCTAVIA = 3, // + VSB_SKODA_SUPERB = 4, // + VSB_SKODA_SPACEBACK = 5, // 꿶 + VSB_SKODA_RAPID = 6, // + VSB_SKODA_YETI = 7, // Ұ + VSB_SKODA_HAORUI_1 = 8, // ˹´--2013,2012,2010,2009 + VSB_SKODA_MINGRUI_1 = 9, // ˹´--2009,2008,2007 + VSB_SKODA_MINGRUI_2 = 10, // ˹´--2014,2013,2012,2011,2010 + VSB_SKODA_MINGRUI_3 = 11, // ˹´-RS-2010 + VSB_SKODA_XINRUI_1 = 12, // ˹´--2013ѡ + VSB_SKODA_JINGRUI_1 = 13, // ˹´--2011,2009,2008 + VSB_SKODA_JINGRUI_2 = 14, // ˹´--2014,2013,2012 + VSB_SKODA_JINGRUI_3 = 15, // ˹´--2014,2013,2012Sport + VSB_SKODA_SUPAI_1 = 16, // ˹´--2013 + VSB_SKODA_YEDI_1 = 17 // ˹´-Ұ-2014,2013 +}VSB_SKODA_CLASS; + +//Ʒ +typedef enum _VSB_DONGFENG_CLASS +{ + VSB_DONGFENG_OTHER = 0, // + VSB_DONGFENG_JOYEARX5 = 1, // X5 + VSB_DONGFENG_LINGZHI = 2, // + VSB_DONGFENG_JOYEARX3 = 3, // X3 + VSB_DONGFENG_JOYEAR = 4, // + VSB_DONGFENG_FENGXINGCM7 = 5, // CM7 + VSB_DONGFENG_YUFENG = 6, // + VSB_DONGFENG_FENGSHENA60 = 7, // A60 + VSB_DONGFENG_FENGSHENS30 = 8, // S30 + VSB_DONGFENG_FENGSHENH30CROSS = 9, // H30-CROSS + VSB_DONGFENG_PICKUP = 10, // Ƥ + VSB_DONGFENG_ZHONGXINGMIANBAOCHE = 11, // + VSB_DONGFENG_XIAOXINGMIANBAOCHE = 12, // С + VSB_DONGFENG_ZHONGXINGVAN = 13, // ͻ + VSB_DONGFENG_QINGXINGXIANGSHIVAN = 14, // ʽ + VSB_DONGFENG_QINGZHONGXINGVAN = 15, // ͨ + VSB_DONGFENG_FENGSHENMERCURY = 16, // ˮ + VSB_DONGFENG_SUCCE = 17, // ˧ + VSB_DONGFENG_ODIN = 18, // ¶ + VSB_DONGFENG_YUMSUN = 19, // + VSB_DONGFENG_RUIQI = 20, // + VSB_DONGFENG_FENGGUANG = 21, // + VBR_DONGFENG_C35_1 = 22, // -C35-2013 + VBR_DONGFENG_K07_1 = 23, // -K07-2008 + VBR_DONGFENG_K07_2 = 24, // -K07-2010,2006 + VBR_DONGFENG_V21_1 = 25, // -V21-2011 + VBR_DONGFENG_JIALONG_1 = 26, // --ػ + VBR_DONGFENG_XKFG_1 = 27, // -С-2013 + VBR_DONGFENG_CV03_1 = 28, // -CV03-2012 + VBR_DONGFENG_KAIPUTE_1 = 29, // --C390 + VBR_DONGFENG_DUOLIKA_1 = 30, // --S2800 + VBR_DONGFENG_DUOLIKA_2 = 31, // --XLп + VBR_DONGFENG_DUOLIKA_3 = 32, // --п + VBR_DONGFENG_TIANJIN_1 = 33, // --4X2ػ + VBR_DONGFENG_TIANJIN_2 = 34, // --A + VBR_DONGFENG_XBW_1 = 35, // -С-Ῠ1 + VBR_DONGFENG_XBW_2 = 36, // -С-Ῠ2 + VBR_DONGFENG_MENGKA_1 = 37, // -ο-Ῠ + VBR_DONGFENG_FURUIKA_1 = 38, // --Ῠ1 + VBR_DONGFENG_RUIQI_1 = 39, // -Ƥ-2013,2010,2009 + VBR_DONGFENG_A60_1 = 40, // -A60-2014,2012 + VBR_DONGFENG_H30_1 = 41, // -H30-Cross-2012,2011 + VBR_DONGFENG_H30_2 = 42, // -H30-Cross-2014,2013 + VBR_DONGFENG_H30_3 = 43, // -H30-2012 + VBR_DONGFENG_JINGYI_1 = 44, // --2014_2012LV,2011 + VBR_DONGFENG_JINGYI_2 = 45, // --2014_2012XL,2011,2010,2009,2008,2007 + VBR_DONGFENG_JINGYI_3 = 46, // -X5-2014,2013 + VBR_DONGFENG_LINGZHI_1 = 47, // --2004 + VBR_DONGFENG_LINGZHI_2 = 48, // --2011,2008,2007 + VBR_DONGFENG_LINGZHI_3 = 49, // --2011Q3׼,2010Q7 + VBR_DONGFENG_LINGZHI_4 = 50, // --2014_2013M3 + VBR_DONGFENG_LINGZHI_5 = 51 // --2014_2013V3,2011M3_ð_ +}VSB_DONGFENG_CLASS; + +//ǵƷ +typedef enum _VSB_BYD_CLASS +{ + VSB_BYD_OTHER = 0, // + VSB_BYD_F0 = 1, // ǵF0 + VSB_BYD_F3 = 2, // ǵF3 + VSB_BYD_F3R = 3, // ǵF3R + VSB_BYD_F6 = 4, // ǵF6 + VSB_BYD_G3 = 5, // ǵG3 + VSB_BYD_G3R = 6, // ǵG3R + VSB_BYD_G6 = 7, // ǵG6 + VSB_BYD_L3 = 8, // ǵL3 + VSB_BYD_M6 = 9, // ǵM6 + VSB_BYD_S6 = 10, // ǵS6 + VSB_BYD_SURUI = 11, // + VSB_BYD_FOLEL = 12, // ش + VSB_BYD_SIRUI = 13, // ˼ + VSB_BYD_MT5 = 14, // ǵMT5() + VSB_BYD_F0_1 = 15, // ǵ-F0-2013,2012,2011,2010,2009,2008 + VSB_BYD_F3R_1 = 16, // ǵ-F3R-2011,2009,2008,2007 + VSB_BYD_F6_1 = 17, // ǵ-F6-2011,2009,2008 + VSB_BYD_G3R_1 = 18, // ǵ-G3R-2011 + VSB_BYD_G6_1 = 19, // ǵ-G6-2013,2012,2011 + VSB_BYD_L3_1 = 20, // ǵ-L3-2013,2012,2011,2010 + VSB_BYD_M6_1 = 21, // ǵ-M6-2013,2011,2010 + VSB_BYD_S6_1 = 22, // ǵ-S6-2014,2013,2012,2011 + VSB_BYD_FULAIER_1 = 23, // ǵ--2005 + VSB_BYD_SURUI_1 = 24 // ǵ--2014,2013,2012 +}VSB_BYD_CLASS; + +//ľƷ +typedef enum _VSB_SUZUKI_CLASS +{ + VSB_SUZUKI_OTHER = 0, // + VSB_SUZUKI_ALTO = 1, // + VSB_SUZUKI_SCROSS = 2, // Ԧ + VSB_SUZUKI_SWIFT = 3, // + VSB_SUZUKI_SX4 = 4, // + VSB_SUZUKI_LINGYANG = 5, // + VSB_SUZUKI_BEIDOUXING = 6, // + VSB_SUZUKI_LIANAA6 = 7, // -A6 + VSB_SUZUKI_LANDY = 8, // ˵ + VSB_SUZUKI_SPLASH = 9, // ϲ + VSB_SUZUKI_GRANDVITARA = 10, // ά + VSB_SUZUKI_JIMNY = 11, // ķ + VSB_SUZUKI_KAZASHI = 12, // + VSB_SUZUKI_LIANA = 13, // + VSB_SUZUKI_LIANA_1 = 14, // ľ--2012,2011,2010,2008,2007,2005 + VSB_SUZUKI_LIANA_2 = 15, // ľ--2013,2012,2011 + VSB_SUZUKI_BEIDOUXING_1 = 16, // ľ--2012,2011,2010,2009,2008,2007,2005,2004׼ + VSB_SUZUKI_BEIDOUXING_2 = 17, // ľ--2013,2012,2011,2010,2009,2008,2007,2005,2004,2003 + VSB_SUZUKI_BEIDOUXING_3 = 18, // ľ--2013,2012,2011,2010,2009,2008,2007,2005,2004,2003 + VSB_SUZUKI_BEIDOUXING_4 = 19, // ľ--2013X5 + VSB_SUZUKI_JIMUNI_1 = 20, // ľ-ķ-2011,2010,2009,2007 + VSB_SUZUKI_JIMUNI_2 = 21, // ľ-ķ-2012 + VSB_SUZUKI_SX4_1 = 22, // ľ-SX4-2008,2006 + VSB_SUZUKI_SX4_2 = 23, // ľ-SX4-2010,2009 + VSB_SUZUKI_SX4_3 = 24, // ľ-SX4-2011A,2009,2008,2007 + VSB_SUZUKI_SX4_4 = 25, // ľ-SX4-2011B + VSB_SUZUKI_SX4_5 = 26, // ľ-SX4-2013,2012,2011 + VSB_SUZUKI_ALTO_1 = 27, // ľ--2006,2001,2000,1999,1993׼ + VSB_SUZUKI_ALTO_2 = 28, // ľ--2006,2004,2001,2000,1999,1993 + VSB_SUZUKI_ALTO_3 = 29, // ľ--2013 + VSB_SUZUKI_ALTO_4 = 30, // ľ--2014,2012,2011,2010,2009 + VSB_SUZUKI_SPLASH_1 = 31, // ľ-ϲ-2013,2012,2011 + VSB_SUZUKI_LANDY_1 = 32, // ľ-˵-2011,2010,2007 + VSB_SUZUKI_LINGYANG_2 = 33, // ľ--2006,2004,2003 + VSB_SUZUKI_LINGYANG_3 = 34, // ľ--2009,2008,2007 + VSB_SUZUKI_LINGYANG_4 = 35, // ľ--2011 + VSB_SUZUKI_LINGYANG_5 = 36, // ľ--2012 + VSB_SUZUKI_GRANDVITARA_1 = 37, // ľ-ά-2011,2008,2007,2006 + VSB_SUZUKI_FENGYU_1 = 38, // ľ-Ԧ-2014 + VSB_SUZUKI_SWIFT_1 = 39, // ľ--2011_1.3L,2009,2008,2007,2005 + VSB_SUZUKI_SWIFT_2 = 40, // ľ--2012,2011 + VSB_SUZUKI_KINGCHANG_1 = 41, // ľ--2004 + VSB_SUZUKI_LINGYANG_1 = 42 // ľ--2002 +}VSB_SUZUKI_CLASS; + +//Ʒ +typedef enum _VSB_SGMW_CLASS +{ + VSB_SGMW_OTHER = 0, // + VSB_SGMW_HONGGUANG = 1, // + VSB_SGMW_HONGGUANGS = 2, // S + VSB_SGMW_ZHIGUANG = 3, // ֮ + VSB_SGMW_RONGGUANGS = 4, // ٹS + VSB_SGMW_RONGGUANG = 5, // ٹ + VSB_SGMW_HONGTU = 6, // ; + VSB_SGMW_XINGWANG = 7, // + VSB_SGMW_YANGGUANG = 8, // + VSB_SGMW_XIAOXUANFENG = 9, // С + VSB_SGMW_WULINGZHIGUANG_1 = 10, // -֮-2010,2009ҵ + VSB_SGMW_WULINGZHIGUANG_2 = 11, // -֮-2010̳, + VSB_SGMW_WULINGZHIGUANG_3 = 12, // -֮-2010,2008ʽ,2007 + VSB_SGMW_XINGWANG_1 = 13, // --2003 + VSB_SGMW_XINGWANG_2 = 14, // --2009׼ + VSB_SGMW_XINGWANG_3 = 15, // --2010,2009,2007,2006,2005,2004 + VSB_SGMW_HONNGUANG_1 = 16, // --2013,2010 + VSB_SGMW_HONNGUANG_2 = 17, // --2014,2013S + VSB_SGMW_XIAOXUANFENG_1 = 18, // -С-2006 + VSB_SGMW_YANGGUANG_1 = 19, // --2006,2005,2004 + VSB_SGMW_YANGGUANG_2 = 20, // --2008,2007 + VSB_SGMW_YANGGUANG_3 = 21, // --2009,2006,2005ֶ׼ + VSB_SGMW_RONGGUANG_1 = 22, // -ٹ-2012,2011,2008 + VSB_SGMW_RONGGUANG_2 = 23, // -ٹ-2012,2011,2008׼ + VSB_SGMW_HONGTU_1 = 24 // -;-2010,2009,2008,2007 +}VSB_SGMW_CLASS; + +//Ʒ +typedef enum _VSB_CHANA_CLASS +{ + VSB_CHANA_OTHER = 0, // + VSB_CHANA_HONOR = 1, // ŷŵ + VSB_CHANA_XINGKA = 2, // ǿ + VSB_CHANA_ZHIXING = 3, // ֮ + VSB_CHANA_PICKUP = 4, // С(Ƥ) + VSB_CHANA_ZHIXING2 = 5, // ֮2 + VSB_CHANA_TAURUS = 6, // ţ + VSB_CHANA_XINGGUANG = 7, // ǹ + VSB_CHANA_BENNI = 8, // + VSB_CHANA_ALSVIN = 9, // + VSB_CHANA_CX20 = 10, // CX20 + VSB_CHANA_CX30 = 11, // CX30 + VSB_CHANA_EADO = 12, // ݶ + VSB_CHANA_ZHIXINGS460 = 13, // ֮S460 + VSB_CHANA_CM8 = 14, // CM8 + VSB_CHANA_XINBAO = 15, // ± + VSB_CHANA_XUNLONG = 16, // ѫ + VSB_CHANA_YUNTONG = 17, // ͨ + VSB_CHANA_LEIMENG = 18, // + VSB_CHANA_XINGYUN = 19, // + VSB_CHANA_OULIWEI = 20, // ŷ + VSB_CHANA_EADOXT = 21, // XT + VSB_CHANA_XINGYUN_1 = 22, // --2004,2003,2000 + VSB_CHANA_OULIWEI_1 = 23, // -ŷ-2013 + VSB_CHANA_YUNTONG_1 = 24, // -ͨ-2004 + VSB_CHANA_TAURUS_1 = 25, // -ţ-2013,2012,2011,2010 + VSB_CHANA_LEIMENG_1 = 26, // --2005,2003 + VSB_CHANA_ZHIXING_1 = 27, // -֮-2010,2009 + VSB_CHANA_ZHIXING_2 = 28, // -֮-2013 + VSB_CHANA_ZHIXING_3 = 29, // -֮2-2009,2008 + VSB_CHANA_ZHIXING_4 = 30, // -֮2-2012 + VSB_CHANA_ZHIXING_5 = 31, // -֮S460-2010,2009 + VSB_CHANA_ZHIXING_6 = 32, // -֮SC6350-2003 + VSB_CHANA_PICKUP_1 = 33, // -΢-2013,2012 + VSB_CHANA_XINGGUANG_1 = 34, // -ǹ4500-2009,2007 + VSB_CHANA_XINGGUANG_2 = 35, // -ǹ4500-2012 + VSB_CHANA_HONOR_1 = 36 // -ŷŵ-2014,2012 +}VSB_CHANA_CLASS; + +//γƷ +typedef enum _VSB_EADO_CLASS +{ + VSB_EADO_OTHER = 0, // + VSB_EADO_CS_1 = 1, // γ-CS35-2014,2013,2012 + VSB_EADO_CX_1 = 2, // γ-CX20-2011 + VSB_EADO_CX_2 = 3, // γ-CX30-2010 + VSB_EADO_BENBEN_1 = 4, // γ--2008,2007,2006 + VSB_EADO_BENBEN_2 = 5, // γ--2008,2007˶ + VSB_EADO_BENBEN_3 = 6, // γ--2010 + VSB_EADO_BENBEN_4 = 7, // γ-MINI-2011,2010 + VSB_EADO_BENBEN_5 = 8, // γ-MINI-2012 + VSB_EADO_YUEXIANG_1 = 9, // γ--2011,2010,2009 + VSB_EADO_YUEXIANG_2 = 10, // γ--2012 + VSB_EADO_YUEXIANG_3 = 11, // γ-V3-2013,2012 + VSB_EADO_YUEXIANG_4 = 12, // γ-V5-2012 + VSB_EADO_YIDONG_1 = 13 // γ-ݶ-2014,2013,2012 +}VSB_EADO_CLASS; + +//Ʒ +typedef enum _VSB_JINBEI_CLASS +{ + VSB_JINBEI_OTHER = 0, // + VSB_JINBEI_GRACE = 1, // 𱭸˹ + VSB_JINBEI_HIACE = 2, // 𱭺ʨ + VSB_JINBEI_HAIXING = 3, // + VSB_JINBEI_BADAO = 4, // 𱭰Ե + VSB_JINBEI_LINGQI = 5, // + VSB_JINBEI_JINQI = 6, // + VSB_JINBEI_LINGCHI = 7, // + VSB_JINBEI_QIYUN = 8, // + VSB_JINBEI_ZHISHANG_1 = 9, // -S30-2014,2013,2012 + VSB_JINBEI_HAIXING_1 = 10, // --2012 + VSB_JINBEI_HAIXING_2 = 11, // --2012A7ػ,2011 + VSB_JINBEI_HIACE_1 = 12, // -ʨ-2008 + VSB_JINBEI_HIACE_2 = 13, // -ʨ-2013,2011,2010 + VSB_JINBEI_HIACE_3 = 14, // -ʨ-2013,2011,2008׼ + VSB_JINBEI_JINDIAN_1 = 15, // --2009 + VSB_JINBEI_GRACE_1 = 16, // -˹MPV-2011,2008,2007 + VSB_JINBEI_GRACE_2 = 17, // -˹MPV-2011,2010,2009,2007׼9 + VSB_JINBEI_BADAO_1 = 18 // -ԵSUV-2011,2008 + +}VSB_JINBEI_CLASS; + +//Ʒ +typedef enum _VSB_GEELY_CLASS +{ + VSB_GEELY_OTHER = 0, // + VSB_GEELY_EC7 = 1, // ۺEC7 + VSB_GEELY_EC8 = 2, // ۺEC8 + VSB_GEELY_SC3 = 3, // SC3 + VSB_GEELY_SC5RV = 4, // SC5-RV + VSB_GEELY_SC6 = 5, // SC6 + VSB_GEELY_JINGYING = 6, // ӥ + VSB_GEELY_JINGGANG = 7, // + VSB_GEELY_SX7 = 8, // SX7 + VSB_GEELY_HAOQING = 9, // + VSB_GEELY_MEIRI = 10, // + VSB_GEELY_YINGLUNSC7 = 11, // ӢSC7 + VSB_GEELY_PANDA = 12, // è + VSB_GEELY_YUANJING = 13, // Զ + VSB_GEELY_ZIYOUJIAN = 14 // ɽ +}VSB_GEELY_CLASS; + +//Ʒ +typedef enum _VSB_MITSUBISHI_CLASS +{ + VSB_MITSUBISHI_OTHER = 0, // + VSB_MITSUBISHI_GALANT = 1, // + VSB_MITSUBISHI_ZINGER = 2, // + VSB_MITSUBISHI_LANCER = 3, // ɪ + VSB_MITSUBISHI_LANCEREX = 4, // + VSB_MITSUBISHI_PAJERO = 5, // + VSB_MITSUBISHI_PAJEROSPORT = 6, // - + VSB_MITSUBISHI_JINGXUANASX = 7, // ASX + VSB_MITSUBISHI_GRANDIS = 8, // + VSB_MITSUBISHI_OUTLANDER = 9, // ŷ + VSB_MITSUBISHI_QINXINGYUEYE = 10, // ԽҰ + VSB_MITSUBISHI_GTO = 11, // GTO + VSB_MITSUBISHI_SOVERAN = 12, // + VSB_MITSUBISHI_LIONVEL = 13, // + VSB_MITSUBISHI_HAFEISIMBO = 14, // + VSB_MITSUBISHI_LANCEREX_1 = 15, // --2012,2011,2010 + VSB_MITSUBISHI_JINGXUAN_1 = 16, // --2012,2011 + VSB_MITSUBISHI_ZINGER_1 = 17, // --2011,2009 + VSB_MITSUBISHI_PAJERO_1 = 18, // --2004 + VSB_MITSUBISHI_PAJERO_2 = 19, // --2004 + VSB_MITSUBISHI_PAJERO_3 = 20, // --2010 + VSB_MITSUBISHI_PAJEROSPORT_1 = 21, // -޾-2011 + VSB_MITSUBISHI_GALANT_1 = 22, // --2009 + VSB_MITSUBISHI_GALANDI_1 = 23, // --2007 + VSB_MITSUBISHI_GALANDI_2 = 24, // --2010 + VSB_MITSUBISHI_OUTLANDER_1 = 25, // -ŷ-2012,2011,2010 + VSB_MITSUBISHI_OUTLANDER_2 = 26, // -ŷ-2013 + VSB_MITSUBISHI_LINGYUE_1 = 27, // --δ֪ + VSB_MITSUBISHI_LANCER_1 = 28 // -ɪ-2010 +}VSB_MITSUBISHI_CLASS; + +//׿˹Ʒ +typedef enum _VSB_LEXUS_CLASS +{ + VSB_LEXUS_OTHER = 0, // + VSB_LEXUS_ES = 1, // ׿˹ES + VSB_LEXUS_CT = 2, // ׿˹CT + VSB_LEXUS_RX = 3, // ׿˹RX + VSB_LEXUS_IS = 4, // ׿˹IS + VSB_LEXUS_LX = 5, // ׿˹LX + VSB_LEXUS_GS = 6, // ׿˹GS + VSB_LEXUS_GX = 7, // ׿˹GX + VSB_LEXUS_LS = 8, // ׿˹LS + VSB_LEXUS_CT_1 = 9, // ׿˹-CT-2013,2012,2011 + VSB_LEXUS_ES_1 = 10, // ׿˹-ES-1994 + VSB_LEXUS_ES_2 = 11, // ׿˹-ES-2010,2009,2006 + VSB_LEXUS_ES_3 = 12, // ׿˹-ES-2013,2012 + VSB_LEXUS_GS_1 = 13, // ׿˹-GS-2011,2010,2009,2008,2005 + VSB_LEXUS_GX_1 = 14, // ׿˹-GX-2012,2010 + VSB_LEXUS_IS_1 = 15, // ׿˹-IS-2011 + VSB_LEXUS_LS_1 = 16, // ׿˹-LS-1994 + VSB_LEXUS_LS_2 = 17, // ׿˹-LS-2005,2004 + VSB_LEXUS_LS_3 = 18, // ׿˹-LS-2009,2007,2006 + VSB_LEXUS_LX_1 = 19, // ׿˹-LX-2013,2012 + VSB_LEXUS_RX_1 = 20, // ׿˹-RX-2011,2010,2009 + VSB_LEXUS_RX_2 = 21, // ׿˹-RX-2013,2012 + VSB_LEXUS_RX_3 = 22 // ׿˹-RX-2007 +}VSB_LEXUS_CLASS; + +//Ʒ +typedef enum _VSB_ROEWE_CLASS +{ + VSB_ROEWE_OTHER = 0, // + VSB_ROEWE_350 = 1, // 350 + VSB_ROEWE_550 = 2, // 550 + VSB_ROEWE_W5 = 3, // W5 + VSB_ROEWE_950 = 4, // 950 + VSB_ROEWE_750 = 5, // 750 + VSB_ROEWE_350_1 = 6, // -350-2011Ѹǰ,2010 + VSB_ROEWE_350_2 = 7, // -350-2014,2013,2012,2011 + VSB_ROEWE_550_1 = 8, // -550-2012,2010,2009,2008 + VSB_ROEWE_750_1 = 9, // -750-2009,2008,2007,2006 + VSB_ROEWE_750_2 = 10, // -750-2012,2011 + VSB_ROEWE_950_1 = 11 // -950-2012 +}VSB_ROEWE_CLASS; + + +//Ʒ +typedef enum _VSB_HAIMA_CLASS +{ + VSB_HAIMA_OTHER = 0, // + VSB_HAIMA_PREMARIN = 1, // + VSB_HAIMA_S7 = 2, // S7 + VSB_HAIMA_PRINCE = 3, // + VSB_HAIMA_CUPID = 4, // 2- + VSB_HAIMA_HATCHBACK = 5, // 3- + VSB_HAIMA_KNIGHT = 6, // ʿ + VSB_HAIMA_HAPPIN = 7, // + VSB_HAIMA_FAMILY = 8, // + VSB_HAIMA_M3 = 9, // M3 + VSB_HAIMA_CUPID_1 = 10, // --2012,2011,2010 + VSB_HAIMA_PREMARIN_1 = 11, // --2007 + VSB_HAIMA_PREMARIN_2 = 12, // --2012,2010 + VSB_HAIMA_HATCHBACK_1 = 13, // --2010,2009 + VSB_HAIMA_HAPPIN_1 = 14, // --2010,2009,2008,2007,2004 + VSB_HAIMA_HAPPIN_2 = 15, // --2012,2011 + VSB_HAIMA_M3_1 = 16, // -3-2010,2008,2007 + VSB_HAIMA_FAMILY_1 = 17, // --2007,2006 + VSB_HAIMA_FAMILY_2 = 18, // --2010,2009,2008 + VSB_HAIMA_FAMILY_3 = 19, // --2011 + VSB_HAIMA_FAMILY_4 = 20, // --2014,2013,2012 + VSB_HAIMA_KNIGHT_1 = 21, // -ʿ-2013_2012A,2011,2010 + VSB_HAIMA_KNIGHT_2 = 22, // -ʿ-2013_2012B + VSB_HAIMA_NEWHONGDA_1 = 23, // ó-º-2009 + VSB_HAIMA_NEWHONDGA_2 = 24, // ó-º-2012 + VSB_HAIMA_PRINCE_1 = 25, // ó--2010 + VSB_HAIMA_RONGDA_1 = 26 // ó-ٴ-2012 + +}VSB_HAIMA_CLASS; + +//Ʒ +typedef enum _VSB_GREATWALL_CLASS +{ + VSB_GREATWALL_OTHER = 0, // + VSB_GREATWALL_SING = 1, // Ӱ + VSB_GREATWALL_SAIJUN = 2, // + VSB_GREATWALL_HAVAL = 3, // + VSB_GREATWALL_SAFE = 4, // + VSB_GREATWALL_SAIKU = 5, // + VSB_GREATWALL_SAILING = 6, // + VSB_GREATWALL_KINGDEER = 7, // ϶ + VSB_GREATWALL_DEER = 8, // ϶ + VSB_GREATWALL_WINGLE = 9, // 翥 + VSB_GREATWALL_COOLBEAR = 10, // + VSB_GREATWALL_LINGAO = 11, // + VSB_GREATWALL_CROSS = 12, // + VSB_GREATWALL_GWPERI = 13, // + VSB_GREATWALL_COWRY = 14, // + VSB_GREATWALL_M4 = 15, // M4 + VSB_GREATWALL_LINGAO_1 = 16, // --2010 + VSB_GREATWALL_HAVAL_1 = 17, // -H3-2010,2009 + VSB_GREATWALL_HAVAL_2 = 18, // -H3-2012,2010,2009 + VSB_GREATWALL_HAVAL_3 = 19, // -H5-2012,2011,2010 + VSB_GREATWALL_HAVAL_4 = 20, // -H5-2012,2011,2010̾ + VSB_GREATWALL_HAVAL_5 = 21, // -H5-2012 + VSB_GREATWALL_HAVAL_6 = 22, // -H5-2014,2013 + VSB_GREATWALL_HAVAL_8 = 23, // -H6-2014,2013 + VSB_GREATWALL_HAVAL_9 = 24, // -M2-2010 + VSB_GREATWALL_HAVAL_10 = 25, // -M2-2013,2012 + VSB_GREATWALL_HAVAL_11 = 26, // -M4-2012 + VSB_GREATWALL_HAVAL_12 = 27, // --2011 + VSB_GREATWALL_CROSS_1 = 28, // --2009,2008 + VSB_GREATWALL_CROSS_2 = 29, // -CROSS-2011,2009 + VSB_GREATWALL_JINGLING_1 = 30, // --δ֪ + VSB_GREATWALL_SING_1 = 31, // -Ӱ-2003 + VSB_GREATWALL_SAIKU_1 = 32, // --2004 + VSB_GREATWALL_SAILING_1 = 33, // --δ֪ + VSB_GREATWALL_DIER_1 = 34, // -϶-δ֪ + VSB_GREATWALL_COOLBEAR_1 = 35, // --2010,2009 + VSB_GREATWALL_KINGDEER_1 = 36, // -϶-2008,2007,2004,2003 + VSB_GREATWALL_GREATWALL_1 = 37, // -C20R-2013,2011 + VSB_GREATWALL_GREATWALL_2 = 38, // -C30-2010 + VSB_GREATWALL_GREATWALL_3 = 39, // -C30-2012 + VSB_GREATWALL_GREATWALL_4 = 40, // -C30-2013 + VSB_GREATWALL_GREATWALL_5 = 41, // -C50-2013,2012 + VSB_GREATWALL_GREATWALL_6 = 42, // -V80-2013,2012,2010,2009,2008 + VSB_GREATWALL_WINGLE_1 = 43, // -翥3-2011,2010,2007,2006 + VSB_GREATWALL_WINGLE_2 = 44, // -翥5-2014,2012,2011,2009 + VSB_GREATWALL_HAVAL_7 = 45 // -H6-2013,2012,2011 +}VSB_GREATWALL_CLASS; + +//Ʒ +typedef enum _VSB_DS_CLASS +{ + VSB_DS_OTHER = 0, // + VSB_DS_KUBO_1 = 1, // -Ძ-2011,2010,2009,2008 + VSB_DS_KUWEI_1 = 2, // --2011,2010,2009 + VSB_DS_KUWEI_2 = 3 // --2013 +}VSB_DS_CLASS; + +//·Ʒ +typedef enum _VSB_LANDROVER_CLASS +{ + VSB_LANDROVER_OTHER = 0, // + VSB_LANDROVER_FAXIAN_1 = 1, // ·--2005,2004 + VSB_LANDROVER_FAXIAN_2 = 2, // ·--2013,2011,2010 + VSB_LANDROVER_LANSHENG_1 = 3, // ·-ʤ-2012,2011,2010 + VSB_LANDROVER_LANSHENG_2 = 4, // ·-ʤ-2014,2013,2012,2011 + VSB_LANDROVER_LANSHENG_3 = 5, // ·-ʤ˶-2013,2012,2011,2010 + VSB_LANDROVER_LANSHENG_4 = 6, // ·-ʤ˶-2013Ԧ + VSB_LANDROVER_SXZ_1 = 7 // ·-2-2014,2013,2011 +}VSB_LANDROVER_CLASS; + +//Ʒ +typedef enum _VSB_MG_CLASS +{ + VSB_MG_OTHER = 0, // + VSB_MG_3SW_1 = 1, // MG-MG-3SW-2009,2008 + VSB_MG_MG3_1 = 2, // MG-MG3-2013,2012,2011 + VSB_MG_MG5_1 = 3, // MG-MG5-2014,2013,2012 + VSB_MG_MG6_1 = 4, // MG-MG6-2012,2011 + VSB_MG_MG7_1 = 5, // MG-MG7-2010,2009,2008,2007 +}VSB_MG_CLASS; + +//һƷ +typedef enum _VSB_FAW_CLASS +{ + VSB_FAW_OTHER = 0, // + VSB_FAW_501_1 = 1, //һ-501-Ῠ + VSB_FAW_N3_1 = 2, //һ-N3+-2006 + VSB_FAW_N3_2 = 3, //һ-N3+-2008 + VSB_FAW_JIABAO_1 = 4, //һ-ѱ-2011T50,T57 + VSB_FAW_JIABAO_2 = 5, //һ-ѱ-2000 + VSB_FAW_JIABAO_3 = 6, //һ-ѱ-2006 + VSB_FAW_JIABAO_4 = 7, //һ-ѱ-2012,2011V50ʰ + VSB_FAW_JIABAO_5 = 8, //һ-ѱ-2012,2011V70 + VSB_FAW_JIABAO_6 = 9, //һ-ѱ-2013,2012,2011V52ʵ + VSB_FAW_JIABAO_7 = 10, //һ-ѱ-2014,2013V80 + VSB_FAW_XIALI_1 = 11, //һ--1999,1997 + VSB_FAW_XIALI_2 = 12, //һ-2000-2003,2002 + VSB_FAW_XIALI_3 = 13, //һ-A+-2011,2010,2006,2005 + VSB_FAW_XIALI_4 = 14, //һ-N3-2012 + VSB_FAW_XIALI_5 = 15, //һ-N5-2014,2013,2011,2010,2009 + VSB_FAW_XIALI_6 = 16, //һ-N7-2013 + VSB_FAW_AOWEI_1 = 17, //һ-J5P-2005,2004,2003 + VSB_FAW_AOWEI_2 = 18, //һ-J5P-4X2ǣ,ж + VSB_FAW_AOWEI_3 = 19, //һ-J5P-4X2ǣ,ж + VSB_FAW_AOWEI_4 = 20, //һ-J5P-6X6ԽҰж + VSB_FAW_AOXING_1 = 21, //һ--2004 + VSB_FAW_WEILE_1 = 22, //һ--2004 + VSB_FAW_WEILE_2 = 23, //һ--2008,2007 + VSB_FAW_WEIZI_1 = 24, //һ--2004 + VSB_FAW_WEIZHI_1 = 25, //һ-־V2-2012ֶCROSS + VSB_FAW_WEIZHI_2 = 26, //һ-־V2-2012ԶCROSS,2010 + VSB_FAW_WEIZHI_3 = 27, //һ-־V5-2013,2012 + VSB_FAW_WEIZHI_4 = 28, //һ-־-2009,2008,2007 + VSB_FAW_WEIZHI_5 = 29, //һ-־-2011 + VSB_FAW_XIAOJIEFANG_1 = 30, //һ-С-90,109Ῠ + VSB_FAW_HANWEI_1 = 31, //һ-J5M-4X4ػ + VSB_FAW_HANWEI_2 = 32, //һ-J5M-6X6ǣ,6X4ж + VSB_FAW_HANWEI_3 = 33, //һ-J5M-8X8ж + VSB_FAW_XINDAWEI_1 = 34, //һ-´-2010 + VSB_FAW_XINHANWEI_1 = 35, //һ-º-2011 + VSB_FAW_SENYA_1 = 36, //һ-ɭM80-2012,2011,2009 + VSB_FAW_TENGWEI_1 = 37, //һ-L5M-ؿ + VSB_FAW_JIEFANG_1 = 38, //һ-J4R-A + VSB_FAW_JIEFANG_2 = 39, //һ-J4R-ж,ǣ + VSB_FAW_JIEFANG_3 = 40, //һ-J6-2004 + VSB_FAW_JIEFANG_4 = 41, //һ-J6-ؿ + VSB_FAW_JIEFANG_5 = 42, //һ-J6L-п + VSB_FAW_JIEFANG_6 = 43, //һ-L5-A + VSB_FAW_SAILONG_1 = 44, //һ--п + VSB_FAW_JUNWEI_1 = 45, //һ-J5K-п + VSB_FAW_B50_1 = 46, //һ-B50-2012,2011,2009 + VSB_FAW_B50_2 = 47 //һ-B50-2013 +}VSB_FAW_CLASS; + + +//Ʒ +typedef enum _VSB_SAICMOTOR_CLASS +{ + VSB_SAICMOTOR_OTHER = 0, // + VSB_HONGYAN_JIESHI_1 = 1, // άº-ʨ-2012 + VSB_DATONG_V80_1 = 2 // ͨ-V80-2014,2013,2012,2011 +}VSB_SAICMOTOR_CLASS; + +//Ʒ +typedef enum _VSB_SOUEAST_CLASS +{ + VSB_SOUEAST_OTHER = 0, // + VSB_SOUEAST_V3_1 = 1, // -V3-2011ֵҸ,2010,2009,2008 + VSB_SOUEAST_V3_2 = 2, // -V3-2012 + VSB_SOUEAST_V3_3 = 3, // -V3-2012콢,2011,2010·ɰ + VSB_SOUEAST_V3_4 = 4, // -V3-2012ɰ + VSB_SOUEAST_V5_1 = 5, // -V5-2014,2013,2012 + VSB_SOUEAST_XIWANG_1 = 6, // -ϣ-2011,2010 + VSB_SOUEAST_DELIKA_1 = 7, // --2003,2002 + VSB_SOUEAST_DELIKA_2 = 8, // --2005 + VSB_SOUEAST_DELIKA_3 = 9, // --2008 + VSB_SOUEAST_DELIKA_4 = 10, // --2009 + VSB_SOUEAST_LINGSHUAI_1 = 11, // -˧-2005,2004GLXi + VSB_SOUEAST_FULIKA_1 = 12, // --2005 + VSB_SOUEAST_FULIKA_2 = 13 // --2007 +}VSB_SOUEAST_CLASS; + + +//Ʒ +typedef enum _VSB_ZTE_CLASS +{ + VSB_ZTE_OTHER = 0, // + VSB_ZTE_WEIHU_1 = 1, // --2012,2010 + VSB_ZTE_WEIHU_2 = 2, // -TUV-2010,2006 + VSB_ZTE_WUXIAN_1 = 3, // --2008 + VSB_ZTE_WUXIAN_2 = 4 // --2012,2011,2010,2009 +}VSB_ZTE_CLASS; + + +//лƷ +typedef enum _VSB_ZHONGHUA_CLASS +{ + VSB_ZHONGHUA_OTHER = 0, // + VSB_ZHONGHUA_H230_1 = 1, // л-H230-2012 + VSB_ZHONGHUA_H320_1 = 2, // л-H320-2012 + VSB_ZHONGHUA_H330_1 = 3, // л-H330-2013 + VSB_ZHONGHUA_H530_1 = 4, // л-H530-2012,2011 + VSB_ZHONGHUA_V5_1 = 5, // л-V5-2012,2011 + VSB_ZHONGHUA_ZUNCHI_1 = 6, // л--2004 + VSB_ZHONGHUA_ZUNCHI_2 = 7, // л--2005,2003 + VSB_ZHONGHUA_KUBAO_1 = 8, // л-ᱦ-2007 + VSB_ZHONGHUA_JUNJIE_1 = 9, // л--2010,2009,2008,2007,2006 + VSB_ZHONGHUA_JUNJIE_2 = 10, // л--2012,2011 + VSB_ZHONGHUA_JUNJIECROSS_1 = 11, // л-cross-2010,2009 + VSB_ZHONGHUA_JUNJIEFRV_1 = 12, // л-FRV-2009,2008 + VSB_ZHONGHUA_JUNJIEFRV_2 = 13, // л-FRV-2010 + VSB_ZHONGHUA_JUNJIEFSV_1 = 14, // л-FSV-2009 + VSB_ZHONGHUA_JUNJIEFSV_2 = 15, // л-FSV-2010 + VSB_ZHONGHUA_JUNJIEFSV_3 = 16 // л-FSV-2011 +}VSB_ZHONGHUA_CLASS; + + +//йƷ +typedef enum _VSB_CNHTC_CLASS +{ + VSB_CNHTC_OTHER = 0, // + VSB_CNHTC_HOKA_2 = 1, // й-HOKA-ǣ,ж + VSB_CNHTC_HOWO_1 = 2, // й-HOWO-A7 + VSB_CNHTC_HOWO_2 = 3, // й-HOWO-T7H + VSB_CNHTC_HOWO_3 = 4, // й-HOWO-Ῠ + VSB_CNHTC_HOWO_4 = 5, // й-HOWOؿ-ǣ + VSB_CNHTC_HOWO_5 = 6, // й-HOWOؿ-жA + VSB_CNHTC_HOWO_6 = 7, // й-HOWOؿ-жB + VSB_CNHTC_HOWO_7 = 8, // й-HOWOؿ-ػA + VSB_CNHTC_HOWO_8 = 9, // й-HOWOؿ-ػC + VSB_CNHTC_SITAIERWANG_1 = 10, // й-˹̫-ǣA,ػ,賵 + VSB_CNHTC_HAOHAN_1 = 11, // й--A + VSB_CNHTC_HAOYUN_1 = 12, // й--ǣB,ػ,ж + VSB_CNHTC_JINWANGZI_1 = 13, // й-ؿ-ǣB + VSB_CNHTC_HOKA_1 = 14 // й-HOKA-H7 +}VSB_CNHTC_CLASS; + +//ͨƷ +typedef enum _VSB_ZHONGTONG_CLASS +{ + VSB_ZHONGTONG_OTHER = 0, // + VSB_ZHONGTONG_KAICHI_1 = 1, // ͨͳ-A-A + VSB_ZHONGTONG_LINGYU_1 = 2, // ͨͳ--A + VSB_ZHONGTONG_LINGXIU_1 = 3, // ͨͳ--A + VSB_ZHONGTONG_LINGHANG_1 = 4, // ͨͳ-캽-A + VSB_ZHONGTONG_SHIJI_1 = 5, // ͨͳ--A + VSB_ZHONGTONG_KAIXUAN_1 = 6, // ͨͳ--A + VSB_ZHONGTONG_LINGYUN_1 = 7, // ͨͳ-A-A + VSB_ZHONGTONG_YANGGUANG_1 = 8 // ͨͳ--A +}VSB_ZHONGTONG_CLASS; + + +//Ʒ +typedef enum _VSB_JIULONG_CLASS +{ + VSB_JIULONG_OTHER = 0, // + VSB_JIULONG_JIULONGA5_1 = 1, // -A5-2011 +}VSB_JIULONG_CLASS; + +//̩Ʒ +typedef enum _VSB_ZOTYE_CLASS +{ + VSB_ZOTYE_OTHER = 0, // + VSB_ZOTYE_2008_2 = 1, // ̩-2008-2011,2010,2008 + VSB_ZOTYE_5008_1 = 2, // ̩-5008-2013,2011,2010,2008 + VSB_ZOTYE_Z300_1 = 3, // ̩-Z300-2013,2012 + VSB_ZOTYE_2008_1 = 4 // ̩-2008-2007 +}VSB_ZOTYE_CLASS; + +//άƷ +typedef enum _VSB_NAVECO_CLASS +{ + VSB_NAVECO_OTHER = 0, // + VSB_NAVECO_Daily_1 = 1, // ά-Daily-2006,2004,2003 + VSB_NAVECO_Power_1 = 2, // ά-Power-Daily + VSB_NAVECO_Turbo_1 = 3, // ά-Turbo-Daily-2014,2012,2011 + VSB_NAVECO_Venice_1 = 4, // ά-Venice-2011,2008 + VSB_NAVECO_BAODI_1 = 5, // ά--2012,2009 + VSB_NAVECO_DEYIHUOCHE_1 = 6, // ά--2011 + VSB_NAVECO_DULING_1 = 7 // ά--2010,2009,2007 +}VSB_NAVECO_CLASS; + +//ʱƷ +typedef enum _VSB_PORSCHE_CLASS +{ + VSB_PORSCHE_OTHER = 0, // + VBR_PORSCHE_PANAMERA_1 = 1, // ʱ-panamera-2013,2012,2010 + VBR_PORSCHE_CAYENNE_1 = 2, // ʱ-Cayenne-2014,2013,2011,2010 +}VSB_PORSCHE_CLASS; + + +//˹Ʒ +typedef enum _VSB_CHRYSLER_CLASS +{ + VSB_CHRYSLER_OTHER = 0, // + VSB_CHRYSLER_300C_1 = 1, // ˹-300C-2007,2006,2004 + VSB_CHRYSLER_PTMANBUZHE_1 = 2, // ˹-PT-2007 +}VSB_CHRYSLER_CLASS; + +//Ʒ +typedef enum _VSB_CADILLAC_CLASS +{ + VSB_CADILLAC_OTHER = 0, // + VSB_CADILLAC_ATS_1 = 1, // -ATS-2014 + VSB_CADILLAC_CTS_1 = 2, // -CTS-2012 + VSB_CADILLAC_CTS_3 = 3, // -CTS-2012Ӣ˶,2011,2010,2009,2008 + VSB_CADILLAC_SLS_1 = 4, // -SLS-2007,2006 + VSB_CADILLAC_SLS_2 = 5, // -SLS-2012,2011,2010 + VSB_CADILLAC_SRX_1 = 6, // -SRX-2012,2011,2010,2009 + VSB_CADILLAC_CTS_2 = 7, // -CTS-2012,2009CTS + VSB_CADILLAC_KAILEIDE_1 = 8 // -׵-2011,2010,2008,2007,2006 +}VSB_CADILLAC_CLASS; + + +//KAMAƷ +typedef enum _VSB_KAMA_CLASS +{ + VSB_KAMA_OTHER = 0, // + VSB_KAMA_QINGKA_2 = 1, // KAMA--ῨD + VSB_KAMA_FULAIKA_1 = 2, // KAMA--ῨA + VSB_KAMA_JINYUNKA_1 = 3, // KAMA-˿-Ῠ + VSB_KAMA_JUNWEIKA_1 = 4, // KAMA--2014,2011 + VSB_KAMA_QINGKA_1 = 5 // KAMA--ῨC +}VSB_KAMA_CLASS; + +//Ʒ +typedef enum _VSB_LIFAN_CLASS +{ + VSB_LIFAN_OTHER = 0, // + VSB_LIFAN_320_1 = 1, // -320-2012,2011,2009 + VSB_LIFAN_520_1 = 2, // -520-2007,2006 + VSB_LIFAN_520_2 = 3, // -520-2013,2011,2010,2008 + VSB_LIFAN_620_1 = 4, // -620-2012,2010,2009,2008 + VSB_LIFAN_X60_1 = 5, // -X60-2013,2012,2011 + VSB_LIFAN_FENGSHUN_1 = 6 // -˳-2011 +}VSB_LIFAN_CLASS; + + +//Ʒ +typedef enum _VSB_BEIJING_CLASS +{ + VSB_BEIJING_OTHER = 0, // + VSB_BEIJING_E_1 = 1, // -Eϵ-2014,2013,2012 +}VSB_BEIJING_CLASS; + +//Ʒ +typedef enum _VSB_BEIBEN_CLASS +{ + VSB_BEIBEN_OTHER = 0, // + VSB_BEIBEN_NG80_1 = 1, // -NG80-ؿA + VSB_BEIBEN_NG80_2 = 2, // -NG80-ؿB + VSB_BEIBEN_NG80_3 = 3, // -NG80-ؿC + VSB_BEIBEN_V3_1 = 4, // -V3-V3H1 + VSB_BEIBEN_V3_2 = 5 // -V3-ؿA +}VSB_BEIBEN_CLASS; + +//ͳƷ +typedef enum _VSB_BEIFANG_CLASS +{ + VSB_BEIFANG_OTHER = 0, // + VSB_BEIFANG_A_1 = 1 // ͳ-ͳ1-A +}VSB_BEIFANG_CLASS; + + +//Ʒ +typedef enum _VSB_BAW_CLASS +{ + VSB_BAW_OTHER = 0, // + VSB_BAW_YUSHENG007_1 = 1, // -ʤ007-2013,2011 + VSB_BAW_QILING_1 = 2, // --A + VSB_BAW_LUBA_1 = 3, // -½-2004 + VSB_BAW_QISHI_1 = 4 // -ʿ-2009,2007 +}VSB_BAW_CLASS; + +//Ʒ +typedef enum _VSB_BQWEIWANG_CLASS +{ + VSB_BQWEIWANG_OTHER = 0, // + VSB_BQWEIWANG_205_1 = 1, // -205-2013 + VSB_BQWEIWANG_306_1 = 2 // -306-2014,2013,2011 +}VSB_BQWEIWANG_CLASS; + + +//Ʒ +typedef enum _VSB_SMA_CLASS +{ + VSB_SMA_OTHER = 0, // + VSB_SMA_HAIYU_1 = 1, // --2007,2005,2004 + VSB_SMA_HAIYU_2 = 2, // --2007MB + VSB_SMA_HAISHANG_1 = 3, // --2008,2005 + VSB_SMA_HAIJING_1 = 5, // --2010,2009 + VSB_SMA_HAIXUN_1 = 4, // -Ѹ-2005,2004쭷 + VSB_SMA_HAIXUN_2 = 6, // -Ѹ-2007,2006 +}VSB_SMA_CLASS; + +//Ʒ +typedef enum _VSB_XINGMA_CLASS +{ + VSB_XINGMA_OTHER = 0, // + VSB_XINGMA_XINGKAIMA_1 = 1 // -ǿ-ǣ1,ػ1 +}VSB_XINGMA_CLASS; + +//˫Ʒ +typedef enum _VSB_SHUANGHUAN_CLASS +{ + VSB_SHUANGHUAN_OTHER = 0, // + VSB_SHUANGHUAN_SCEO_1 = 1, // ˫-SCEO-2011,2009,2006,2005 +}VSB_SHUANGHUAN_CLASS; + +//Ʒ +typedef enum _VSB_JEEP_CLASS +{ + VSB_JEEP_OTHER = 0, // + VSB_JEEP_DAQIENUOJI_1 = 1, // -ŵ()-2014,2013,2012,2011 + VSB_JEEP_DAQIENUOJI_2 = 2, // -ŵ()-2014 + VSB_JEEP_ZHINANZHE_1 = 3, // -ָ-2010,2007 + VSB_JEEP_ZHINANZHE_2 = 4, // -ָ-2014,2013,2012,2011 + VSB_JEEP_MUMAREN_1 = 5, // --2012ʹٻ,2011 + VSB_JEEP_MUMAREN_2 = 6, // --2014,2013,2012,2011,2010,2009,2008 + VSB_JEEP_ZIYOUKE = 7, // -ɿ-2014,2013,2012,2011 +}VSB_JEEP_CLASS; + +//Ʒ +typedef enum _VSB_VENUCIA_CLASS +{ + VSB_VENUCIA_OTHER = 0, // + VSB_VENUCIA_D50_1 = 1 // -D50-2014,2013,2012 +}VSB_VENUCIA_CLASS; + +//Ʒ +typedef enum _VSB_HAFEI_CLASS +{ + VSB_HAFEI_OTHER = 0, // + VSB_HAFEI_XINMINYI_1 = 1, // --2010 + VSB_HAFEI_XINMINYI_2 = 2, // --2012 + VSB_HAFEI_MINYI_1 = 3, // --2006 + VSB_HAFEI_MINYI_2 = 4, // --2008 + VSB_HAFEI_SAIBAO_1 = 5, // --2012 + VSB_HAFEI_SAIMA_1 = 6, // --2002 + VSB_HAFEI_SAIMA_2 = 7, // --2004,2003 + VSB_HAFEI_SAIMA_3 = 8, // --2009 + VSB_HAFEI_LUBAO_1 = 9, // -·-2004 + VSB_HAFEI_LUBAO_2 = 10, // -·-2008,2007 + VSB_HAFEI_LUBAO_3 = 11, // -·-2012 + VSB_HAFEI_LUZUNXIAOBAWANG_1 = 12, // -·С-2011,2010 + VSB_HAFEI_RUIYI_1 = 13, // --2009 + VSB_HAFEI_JUNYI_1 = 14 // --2012,2010 +}VSB_HAFEI_CLASS; + +//ƿŷƷ +typedef enum _VSB_TKING_CLASS +{ + VSB_TKING_OTHER = 0, // + VSB_TKING_OUGUAN_1 = 1, // ƿŷ-ŷ-2011 + VSB_TKING_OUGUAN_2 = 2, // ƿŷ-ŷ-ῨB + VSB_TKING_OUTENG_1 = 3, // ƿŷ-ŷ-ῨA + VSB_TKING_FUXING_1 = 4, // ƿŷ--2006 + VSB_TKING_QINGKAWANG_1 = 5, // ƿŷ-Ῠ-Ῠ + VSB_TKING_AFANDA_1 = 6, // ƿŷ--ؿ + VSB_TKING_JUNQI_1 = 7 // ƿŷ--ؿA +}VSB_TKING_CLASS; + +//Ʒ +typedef enum _VSB_DAEWOO_CLASS +{ + VSB_DAEWOO_OTHER = 0, // + VBR_DAEWOO_6960H3_1 = 1 // -6960H3-A +}VSB_DAEWOO_CLASS; + +//Ʒ +typedef enum _VSB_DAYUN_CLASS +{ + VSB_DAYUN_OTHER = 0, // + VBR_DAYUN_ZHONGKA_1 = 1 // -ؿ-A +}VSB_DAYUN_CLASS; + +//Ʒ +typedef enum _VSB_BESTURN_CLASS +{ + VSB_BESTURN_OTHER = 0, // + VSB_BESTURN_B70_1 = 1, // -B70-2009,2007,2006 + VSB_BESTURN_B70_2 = 2, // -B70-2011 + VSB_BESTURN_B70_3 = 3, // -B70-2011Ӣ,2010 + VSB_BESTURN_B70_4 = 4, // -B70-2012 + VSB_BESTURN_B90_1 = 5, // -B90-2012 + VSB_BESTURN_AOXING_1 = 6 // һ--2004 +}VSB_BESTURN_CLASS; + +//Ʒ +typedef enum _VSB_WEILIN_CLASS +{ + VSB_WEILIN_OTHER = 0, // + VSB_WEILIN_H3_1 = 1, // -H3-2011 + VSB_WEILIN_V5_1 = 2, // -V5-2012,2009 + VSB_WEILIN_X5_1 = 3 // -X5-2012,2011,2010 +}VSB_WEILIN_CLASS; + +//ͨƷ +typedef enum _VSB_YUTONG_CLASS +{ + VSB_YUTONG_OTHER = 0, // + VSB_YUTONG_8XI_1 = 1, // ͨ-8ϵ-2012,2005 + VSB_YUTONG_KECHE_1 = 2, // ͨ-ͳ10-2013,2010 + VSB_YUTONG_KECHE_3 = 3, // ͨ-ͳ2-A + VSB_YUTONG_KECHE_4 = 4, // ͨ-ͳ8-2004 + VSB_YUTONG_KECHE_5 = 5, // ͨ-ͳ9-2014 + VSB_YUTONG_KECHE_2 = 6 // ͨ-ͳ12-A +}VSB_YUTONG_CLASS; + +//Ʒ +typedef enum _VSB_ANKAI_CLASS +{ + VSB_ANKAI_OTHER = 0, // + VSB_ANKAI_KECHE_1 = 1, // -ͳ1-A + VSB_ANKAI_KECHE_2 = 2 // -ͳ3-A +}VSB_ANKAI_CLASS; + +//Ʒ +typedef enum _VSB_BAOJUN_CLASS +{ + VSB_BAOJUN_OTHER = 0, // + VSB_BAOJUN_630_1 = 1 // -630-2014,2013,2012,2011 +}VSB_BAOJUN_CLASS; + +//Ʒ +typedef enum _VSB_BINLI_CLASS +{ + VSB_BINLI_OTHER = 0, // + VSB_BINLI_OULU_1 = 1 // -ŷ½-2009,2008 +}VSB_BINLI_CLASS; + +//Ʒ +typedef enum _VSB_TRUMPCHE_CLASS +{ + VSB_TRUMPCHE_OTHER = 0, // + VSB_TRUMPCHE_GA5_1 = 1, // -GA5-2012,2011 + VSB_TRUMPCHE_GA5_2 = 3, // -GA5-2013,2012ԶӢ + VSB_TRUMPCHE_GS5_1 = 2 // -GS5-2014,2013,2012 +}VSB_TRUMPCHE_CLASS; + +// Ʒ +typedef enum _VSB_GONOW_CLASS +{ + VSB_GONOW_OTHER = 0, // + VSB_GONOW_G3_1 = 1, // -G3-2011 + VSB_GONOW_G5_1 = 2, // -G5-2012,2011 + VSB_GONOW_SHUAIJIAN_1 = 4, // -˧-2012,2009 + VSB_GONOW_XINGWANGM1_1 = 3, // -M1-2012 + VSB_GONOW_CAIYUN500_1 = 5 // -500-2010 +}VSB_GONOW_CLASS; + +//Ʒ +typedef enum _VSB_ISUZU_CLASS +{ + VSB_ISUZU_OTHER = 0, // + VSB_ISUZU_ZHONGXINGSHANGYONG_1 = 1, // -ó-2011 + VSB_ISUZU_WUSHILINGPIKA_1 = 2, // -ʮƤ-2009 + VSB_ISUZU_WUSHILINGPIKA_2 = 3, // -ʮƤ-2014,2009 + VSB_ISUZU_JINGJIZHE_1 = 4 // --2004,2002 +}VSB_ISUZU_CLASS; + + +//Ʒ +typedef enum _VSB_KARRY_CLASS +{ + VSB_KARRY_OTHER = 0, // + VSB_KARRY_YOU_2 = 1, // --2013,2012 + VSB_KARRY_YOUJIN_1 = 2, // -ž-2012,2011,2010 + VSB_KARRY_YOUSHENG_1 = 3, // -ʤ-2010 + VSB_KARRY_YOUSHENG_2 = 4, // -ʤ-2012,2011 + VSB_KARRY_YOUYA = 5, // --2012,2011,2007 + VSB_KARRY_YOU_1 = 6 // --2011,2010,2009 +}VSB_KARRY_CLASS; + +//ݱƷ +typedef enum _VSB_GAGUAR_CLASS +{ + VSB_GAGUAR_OTHER = 0, // + VSB_GAGUAR_XF_1 = 1, // ݱ-XF-2014,2013 + VSB_GAGUAR_XJ_1 = 2 // ݱ-XJ-2014,2013,2012,2011,2010 +}VSB_GAGUAR_CLASS; + +//˹³Ʒ +typedef enum _VSB_SUBARU_CLASS +{ + VSB_SUBARU_OTHER = 0, // + VSB_SUBARU_AOHU_1 = 1, // ˹³--2012,2011,2010 + VSB_SUBARU_LISHI_1 = 2, // ˹³-ʨγ-2008,2006 + VSB_SUBARU_LISHI_2 = 3, // ˹³-ʨγ-2011,2010 + VSB_SUBARU_XV_1 = 4, // ˹³-˹³XV-2014,2012 + VSB_SUBARU_SENLINREN_1 = 5, // ˹³-ɭ-2007,2006 + VSB_SUBARU_SENLINREN_2 = 6 // ˹³-ɭ-2012,2011,2010,2009,2008 +}VSB_SUBARU_CLASS; + +//ʱƷ +typedef enum _VSB_ERA_CLASS +{ + VSB_ERA_OTHER = 0, // + VSB_ERA_XIAOKA_1 = 1, // ʱ-С֮-С֮1,2,Q2 + VSB_ERA_XIAOKA_3 = 2, // ʱ-С֮-С֮5 + VSB_ERA_XIAOKA_4 = 3, // ʱ-С֮- + VSB_ERA_KANGRUI_1 = 4, // ʱ--H1 + VSB_ERA_KANGRUI_2 = 5, // ʱ--H3 + VSB_ERA_KANGRUI_3 = 6, // ʱ--K1,KQ1 + VSB_ERA_RUIWO_1 = 7, // ʱ--RC1 + VSB_ERA_RUIWO_2 = 8, // ʱ--RC2 + VSB_ERA_RUIWO_3 = 9, // ʱ--IIῨA + VSB_ERA_JINGANG = 10, // ʱ--568 + VSB_ERA_LINGHANG_1 = 11, // ʱ-캽-캽2 + VSB_ERA_LINGHANG_2 = 12, // ʱ-캽-캽3 + VSB_ERA_YULING_1 = 13, // ʱ-Ԧ-ԦV1 + VSB_ERA_YULING_2 = 14, // ʱ-Ԧ-ԦV5,VQ5 + VSB_ERA_YULING_3 = 15, // ʱ-Ԧ-ԦVQ1,VQ2 + VSB_ERA_YULING_4 = 17, // ʱ-Ԧ- + VSB_ERA_XIAOKA_2 = 17, // ʱ-С֮-С֮3 +}VSB_ERA_CLASS; + +//Ʒ +typedef enum _VSB_CHANGHE_CLASS +{ + VSB_CHANGHE_OTHER = 0, // + VSB_CHANGHE_CH6321_1 = 1, // -CH6321-2000 + VSB_CHANGHE_DANSHUANGPAI_1 = 2, // -µ˫-1999 + VSB_CHANGHE_AIDIER_1 = 3, // -϶-2004 + VSB_CHANGHE_AIDIER_2 = 4, // -϶-2007,2006 + VSB_CHANGHE_FURUIDA_1 = 5 // --2014,2013,2011,2009 +}VSB_CHANGHE_CLASS; + +//ŷƷ +typedef enum _VSB_OPEL_CLASS +{ + VSB_OPEL_OTHER = 0, // + VSB_OPEL_YATE_1 = 1 // ŷ--2010GTCȫ絲,2007,2006 +}VSB_OPEL_CLASS; + +//ԴƷ +typedef enum _VSB_JONWAY_CLASS +{ + VSB_JONWAY_OTHER = 0, // + VSB_JONWAY_A380_1 = 1 // Դ-A380-2010,2009,2008 +}VSB_JONWAY_CLASS; + +//Ʒ +typedef enum _VSB_JIANGNAN_CLASS +{ + VSB_JIANGNAN_OTHER = 0, // + VSB_JIANGNAN_TT_1 = 1 // -TT-2011,2010,2004 +}VSB_JIANGNAN_CLASS; + +//ȫӥƷ +typedef enum _VSB_GLEAGLE_CLASS +{ + VSB_GLEAGLE_OTHER = 0, // + VSB_GLEAGLE_EAGLE_GC7_1 = 1, // ȫӥ-GC7-2013,2012 + VSB_GLEAGLE_EAGLE_GX2_1 = 2, // ȫӥ-GX2-2012,2011 + VSB_GLEAGLE_EAGLE_GX7_1 = 3, // ȫӥ-GX7-2013,2012 + VSB_GLEAGLE_EAGLE_PANDA_1 = 4, // ȫӥ-è-2013,2011,2010,2009 + VSB_GLEAGLE_EAGLE_ZIYOUJIAN_1 = 5, // ȫӥ-ɽ-2009±׼,2007 + VSB_GLEAGLE_EAGLE_ZIYOUJIAN_2 = 6, // ȫӥ-ɽ-2010,2009,2008,2006,2005 + VSB_GLEAGLE_EAGLE_ZIYOUJIAN_3 = 7, // ȫӥ-ɽ-2012,2011 + VSB_GLEAGLE_EAGLE_YUANJING_1 = 8, // ȫӥ-Զ-2011,2010,2009,2008,2006 + VSB_GLEAGLE_EAGLE_YUANJING_2 = 9, // ȫӥ-Զ-2013,2012 +}VSB_GLEAGLE_CLASS; + +//ۺƷ +typedef enum _VSB_EMGRAND_CLASS +{ + VSB_EMGRAND_OTHER = 0, // + VSB_EMGRAND_EC7_2 = 1, // ۺ-EC7-2013 + VSB_EMGRAND_EC7_3 = 2, // ۺ-EC7-RV + VSB_EMGRAND_EC8_1 = 3, // ۺ-EC8-2013,2011,2010 + VSB_EMGRAND_EC7_1 = 4 // ۺ-EC7-2012,2010,2009 +}VSB_EMGRAND_CLASS; + + +//ӢƷ +typedef enum _VSB_ENGLON_CLASS +{ + VSB_ENGLON_OTHER = 0, // + VSB_ENGLON_SC3_1 = 1, // Ӣ-SC3-2012 + VSB_ENGLON_SC5_1 = 2, // Ӣ-SC5-RV-2012 + VSB_ENGLON_SC6_1 = 3, // Ӣ-SC6-2012 + VSB_ENGLON_SC7_1 = 4, // Ӣ-SC7-2013,2012,2011,2010 + VSB_ENGLON_SX7_1 = 5, // Ӣ-SX7-2014,2013 + VSB_ENGLON_JINGANG_1 = 6, // Ӣ--2010,2007,2006 + VSB_ENGLON_JINYING_1 = 7 // Ӣ-ӥ-2011,2010,2008 +}VSB_ENGLON_CLASS; + + +//-Ʒ +typedef enum _VSB_JAC_CLASS +{ + VSB_JAC_OTHER = 0, // + VSB_JAC_TONGYUE_1 = 1, // -ͬ-2012,2010,2008 + VSB_JAC_HEYUE_1 = 2, // --2012,2011,2010 + VSB_JAC_HEYUEA30_2 = 3, // -A30-2013 + VSB_JAC_HEYUERS_3 = 4, // -RS-2012,2011 + VSB_JAC_HAOYUN_1 = 5, // --Ῠ1 + VSB_JAC_WEILING_2 = 6, // --ŰῨ + VSB_JAC_WEILING_3 = 7, // --ػ + VSB_JAC_WEILING_4 = 8, // --Ῠ + VSB_JAC_KECHE_1 = 9, // -ͳ-A + VSB_JAC_BINYUE_1 = 10, // --2010,2008 + VSB_JAC_SHUAILING_2 = 11, // -˧-Ῠ + VSB_JAC_KANGLING_1 = 12, // --Ῠ1 + VSB_JAC_KANGLING_2 = 13, // --Ῠ2 + VSB_JAC_YUEYUE_1 = 14, // --2013,2012,2011,2010 + VSB_JAC_XINGRUI_1 = 15, // --2012,2011 + VSB_JAC_GEERFA_H_1 = 16, // -H-ػ + VSB_JAC_GEERFA_K_2 = 17, // -K-ؿ1 + VSB_JAC_GEERFA_K_3 = 18, // -K-ؿ2 + VSB_JAC_GEERFA_M_4 = 19, // -M-ػ + VSB_JAC_RUIFENG_1 = 20, // --2011,2009,2007ֶ + VSB_JAC_RUIFENG_2 = 21, // --2013,2012,2011,2010,2007,2005 + VSB_JAC_RUIFENG_3 = 22, // -M5-2012,2011 + VSB_JAC_RUIFENG_4 = 23, // -S5-2013 + VSB_JAC_RUIYING_1 = 24, // -ӥ-2009,2007 + VSB_JAC_RUIYING_2 = 25, // -ӥ-2013,2012,2011 + VSB_JAC_JUNLING_2 = 26, // --խ, + VSB_JAC_WEILING_1 = 27, // --ʽῨ + VSB_JAC_SHUAILING_1 = 28, // -˧-ʮ + VSB_JAC_RUILING_1 = 29, // --2012 + VSB_JAC_JUNLING_1 = 30 // --콢 +}VSB_JAC_CLASS; + + +//Ʒ +typedef enum _VSB_JMC_CLASS +{ + VSB_JMC_OTHER = 0, // + VSB_JMC_KAIYUN_1 = 1, // --102,109Ῠ + VSB_JMC_KAIYUN_2 = 2, // --95Ῠ + VSB_JMC_YUHU_1 = 3, // --2012 + VSB_JMC_BAODIAN_1 = 4, // --2007 + VSB_JMC_BAODIAN_2 = 5, // --2009׼,2008 + VSB_JMC_BAODIAN_3 = 6, // --2014,2012,2009 + VSB_JMC_BAOWEI_1 = 7, // --2005 + VSB_JMC_BAOWEI_2 = 8, // --2009 + VSB_JMC_QUANSHUN_1 = 9, // -ȫ˳-2010,2008 + VSB_JMC_QUANSHUN_2 = 10, // -ȫ˳-2006 + VSB_JMC_QUANSHUN_3 = 11, // -ȫ˳-2013,2011,2010 + VSB_JMC_SHUNDA_1 = 12, // -˳-2004,2003 + VSB_JMC_SHUNDA_2 = 13, // -˳-2011,2010,2008 + VSB_JMC_YUSHENG_1 = 14, // -Ԧʤ-2013 + VSB_JMC_YUSHENG_2 = 15 // -Ԧʤ-2013ֶװ,2012,2011 +}VSB_JMC_CLASS; + +// ֶƷ +typedef enum _VSB_VOLVO_CLASS +{ + VSB_VOLVO_OTHER = 0, // + VSB_VOLVO_C30_1 = 1, // ֶ-C30-2013,2012,2011,2010 + VSB_VOLVO_S40_1 = 2, // ֶ-S40-2012,2011,2010,2009,2008,2007 + VSB_VOLVO_S60_1 = 3, // ֶ-S60-2003 + VSB_VOLVO_S60_2 = 4, // ֶ-S60-2013,2012,2011 + VSB_VOLVO_S80L_1 = 5, // ֶ-S80L-2012,2011,2010,2009 + VSB_VOLVO_XC60_1 = 6, // ֶ-XC60-2013,2012,2011,2010,2009 + VSB_VOLVO_XC90_1 = 7 // ֶ-XC90-2013,2012,2011,2008 +}VSB_VOLVO_CLASS; + +// Ʒ +typedef enum _VSB_HIGER_CLASS +{ + VSB_HIGER_OTHER = 0, // + VSB_HIGER_H8_1 = 1, // -H8-A + VSB_HIGER_H92_1 = 2, // -H92-A + VSB_HIGER_V7_1 = 3, // -V7,V8-2006 + VSB_HIGER_KECHE_1 = 4, // -ͳ5-A + VSB_HIGER_LONGWEI_1 = 5, // --2012,2011 + VSB_HIGER_H7V_1 = 6 // -H7V-2010 +}VSB_HIGER_CLASS; + +// Ʒ +typedef enum _VSB_RUILIN_CLASS +{ + VSB_RUILIN_OTHER = 0, // + VSB_RUILIN_G3_1 = 1, // -G3-2012,2010 + VSB_RUILIN_G5_1 = 2, // -G5-2012,2011,2010 + VSB_RUILIN_M1_1 = 3, // -M1-2013,2011,2010,2009 + VSB_RUILIN_X1_1 = 4, // -X1-2012A,2011,2010 + VSB_RUILIN_X1_2 = 5 // -X1-2012B +}VSB_RUILIN_CLASS; + +// Ʒ +typedef enum _VSB_SHENLONG_CLASS +{ + VSB_SHENLON_OTHER = 0, // + VSB_SHENLONG_KECHE_1 = 1 //ͳ-ͳ4-A +}VSB_SHENLONG_CLASS; + +// Ʒ +typedef enum _VSB_FOTON_CLASS +{ + VSB_FOTON_OTHER = 0, // + VSB_FOTON_AOLING_1 = 1, // --п + VSB_FOTON_AOLING_2 = 2, // --ʽ + VSB_FOTON_AOLING_3 = 3, // --TX,CTX + VSB_FOTON_OUMAN_1 = 4, // -ŷ-GTL6ϵB + VSB_FOTON_OUMAN_2 = 5, // -ŷ-TX6ϵ,9ϵ + VSB_FOTON_OUMAN_3 = 6, // -ŷ-ŷؿ1 + VSB_FOTON_OUMAN_4 = 7, // -ŷ-ʨ6ϵ,9ϵ + VSB_FOTON_OUHUI_1 = 8, // -ŷԿͳ-D + VSB_FOTON_OUMAKE_1 = 9, // -ŷ-3ϵ + VSB_FOTON_OUMAKE_2 = 10, // -ŷ-5ϵ + VSB_FOTON_SAPU_1 = 11, // --2011 + VSB_FOTON_SAPU_3 = 12, // --2011͹ + VSB_FOTON_MENGPAIKE_1 = 13, // -ɿ-2013 + VSB_FOTON_MIDI_1 = 14, // -Ե-2011,2009 + VSB_FOTON_FENGJING_1 = 15, // -羰ϵ-2012,2011,2009 + VSB_FOTON_SAPU_2 = 16 // --2011Z7 +}VSB_FOTON_CLASS; + +//Ʒ +typedef enum _VSB_FODAY_CLASS +{ + VSB_FODAY_OTHER = 0, // + VSB_FODAY_CHAOREN_1 = 1, // -СƤ-2009,2006 + VSB_FODAY_CHAOREN_2 = 2, // -СƤ-2011 + VSB_FODAY_TANSUOZHE_1 = 3, // -̽6-2013,2011,2010 + VSB_FODAY_TANSUOZHE_2 = 4, // -̽ߢ-2011,2010,2009 + VSB_FODAY_TANSUOZHE_3 = 5, // -̽ߢ-2011,2004 + VSB_FODAY_XIONGSHI_1 = 6 // -ʨF16Ƥ-2012 +}VSB_FODAY_CLASS; + +// Ʒ +typedef enum _VSB_HONGQI_CLASS +{ + VSB_HONGQI_OTHER = 0, // + VSB_HONGQI_MINGSHI_1 = 1 // --2007,2003,2001,2000,1999 +}VSB_HONGQI_CLASS; + + +// ǽ Ʒ +typedef enum _VSB_LUXGEN_CLASS +{ + VSB_LUXGEN_OTHER = 0, // + VSB_LUXGEN_DASEVEN_1 = 1 // ǽ-7-SUV +}VSB_LUXGEN_CLASS; + +// Ʒ +typedef enum _VSB_XIALI_CLASS +{ + VSB_XIALI_OTHER = 0, // + VSB_XIALI_QIBING_1 = 1, // ()--2010 +}VSB_XIALI_CLASS; + +// ۿͳƷ +typedef enum _VSB_SHUCHI_CLASS +{ + VSB_SHUCHI_OTHER = 0, // + VSB_SHUCHI_A_1 = 1 // ۿͳ-ͳ-A +}VSB_SHUCHI_CLASS; + +//ӢƷ +typedef enum _VSB_INFINITI_CLASS +{ + VSB_INFINITI_OTHER = 0, // + VSB_INFINITI_EX_1 = 1, // Ӣ-EX-2013,2011,2010,2009,2008 + VSB_INFINITI_FX_1 = 2, // Ӣ-FX-2007 + VSB_INFINITI_FX_2 = 3, // Ӣ-FX-2011,2010,2009 + VSB_INFINITI_FX_3 = 4, // Ӣ-FX-2013,2012FX35 + VSB_INFINITI_G_1 = 5, // Ӣ-G-2013,2010 + VSB_INFINITI_JX_1 = 6 // Ӣ-JX-2013,2011 +}VSB_INFINITI_CLASS; + + +// Ʒ +typedef enum _VSB_LOTUS_CLASS +{ + VSB_LOTUS_OTHER = 0, // + VSB_LOTUS_L3_1 = 1, // -L3-2010,2009 + VSB_LOTUS_L3_2 = 2 // -L5-2012,2011 +}VSB_LOTUS_CLASS; + +//Ʒ +typedef enum _VSB_FIAT_CLASS +{ + VSB_FIAT_OTHER = 0, // + VSB_FIAT_FEIYUE_1 = 1 // -Ծ-2014,2013,2012 +}VSB_FIAT_CLASS; + +//کƷ +typedef enum _VSB_OGA_CLASS +{ + VSB_OGA_OTHER = 0, // + VSB_OGA_MDX_1 = 1, // ک-MDX-2010 + VSB_OGA_MDX_2 = 2 // ک-MDX-2011 +}VSB_OGA_CLASS; + + + +// ԾƷ +typedef enum _VSB_YUEJIN_CLASS +{ + VSB_YUEJIN_OTHER = 0, // + VSB_YUEJIN_SHUAIHU_1 = 1, // Ծ-˧-H100,H300 + VSB_YUEJIN_CAISHEN_1 = 2, // Ծ--S100 + VSB_YUEJIN_CAISHEN_2 = 3, // Ծ--S300 + VSB_YUEJIN_CAISHEN_3 = 4 // Ծ--S500 +}VSB_YUEJIN_CLASS; + +//ҰƷ +typedef enum _VSB_YEMA_CLASS +{ + VSB_YEMA_OTHER = 0, // + VSB_YEMA_F99_1 = 1 // Ұ-F99-2012,2011,2010,2009 +}VSB_YEMA_CLASS; + +//Ʒ +typedef enum _VSB_SZKINGLONG_CLASS +{ + VSB_SZKINGLONG_OTHER = 0, // + VSB_SZKINGLONG_BUS11_1 = 1, // -ͳ11-A + VSB_SZKINGLONG_BUS12_1 = 2, // -ͳ12-A + VSB_SZKINGLONG_BUS13_1 = 3, // -ͳ13-A + VSB_SZKINGLONG_BUS14_1 = 4, // -ͳ14-A + VSB_SZKINGLONG_BUS16_1 = 5, // -ͳ16-A + VSB_SZKINGLONG_BUS18_1 = 6, // -ͳ18-A + VSB_SZKINGLONG_BUS1_1 = 7, // -ͳ1-A + VSB_SZKINGLONG_BUS20_1 = 8, // -ͳ20-A + VSB_SZKINGLONG_BUS2_1 = 9, // -ͳ2-A + VSB_SZKINGLONG_BUS5_1 = 10, // -ͳ5-A + VSB_SZKINGLONG_BUS6_1 = 11, // -ͳ6-A + VSB_SZKINGLONG_BUS9_1 = 12, // -ͳ9-A + VSB_SZKINGLONG_BUS10_1 = 13, // -ͳ10-A + VSB_SZKINGLONG_BUS15_1 = 14 // -ͳ15-A +}VSB_SZKINGLONG_CLASS; + +//ԱƷ +typedef enum _VSB_CHANGFENG_CLASS +{ + VSB_CHANGFENG_OTHER = 0, // + VSB_CHANGFENG_CS7_1 = 1, // Ա-CS7-2009 + VSB_CHANGFENG_QIBING_1 = 2, // Ա--2010,2009 + VSB_CHANGFENG_LIEBAO_1 = 3, // Ա-ԱCS6-2010,2008 + VSB_CHANGFENG_FULING_1 = 4, // Ա-Ƥ-A + VSB_CHANGFENG_FEIYANG_1 = 5, // Ա-Ƥ-2010,2009,2005 + VSB_CHANGFENG_FEITENG_1 = 6, // Ա--2010,2009,2006 + VSB_CHANGFENG_BLACKJINGANG_1 = 7, // Ա-ڽ-2013,2010,2009,2008,2006 +}VSB_CHANGFENG_CLASS; + +//½Ʒ +typedef enum _VSB_LUFENG_CLASS +{ + VSB_LUFENG_OTHER = 0, // + VSB_LUFENG_X6_1 = 1, // ½-X6-2005 + VSB_LUFENG_X6_2 = 2, // ½-X6-2006 + VSB_LUFENG_X6_3 = 3, // ½-X6-2011,2010,2008,2007 + VSB_LUFENG_LUFENGX5_1 = 4, // ½-½X5-2013 + VSB_LUFENG_LUFENGX8_1 = 5, // ½-½X8-2013,2012,2011,2009 + VSB_LUFENG_LUFENGX8_2 = 6, // ½-½X8-2014,2012̽ + VSB_LUFENG_FENGHUA_1 = 7, // ½-绪-2008,2007 + VSB_LUFENG_X6_4 = 8, // ½-X6-2011 + VSB_LUFENG_FENGSHANG_1 = 9 // ½--2011,2006 +}VSB_LUFENG_CLASS; + +//ؿƷ +typedef enum _VSB_SHANQI_CLASS +{ + VSB_SHANQI_OTHER = 0, // + VSB_SHANQI_AOLONG_1 = 1, // ؿ--ؿA + VSB_SHANQI_AOLONG_2 = 2, // ؿ--ؿB + VSB_SHANQI_DELONG_1 = 3, // ؿ-F2000-4X2ǣ + VSB_SHANQI_DELONG_2 = 4, // ؿ-F3000-B + VSB_SHANQI_DELONG_3 = 5, // ؿ-M3000-ؿ +}VSB_SHANQI_CLASS; + + +//ҰƷ +typedef enum _VSB_RENAULT_CLASS +{ + VSB_RENAULT_OTHER = 0, // + VSB_RENAULT_MEIGANNA_1 = 1, // ŵ-÷-2006 + VSB_RENAULT_KELEIAO_1 = 2, // ŵ-װ-2010,2009 + VSB_RENAULT_KELEIAO_2 = 3, // ŵ-װ-2013,2012 + VSB_RENAULT_SCENE_1 = 4, // ŵ-羰-2007 + VSB_RENAULT_FENGLANG_1 = 5, // ŵ--2011 + VSB_RENAULT_TAFEIKE_1 = 6 // ŵ-ƿ-2004 +}VSB_RENAULT_CLASS; + +//ƺƷ +typedef enum _VSB_HUANGHAI_CLASS +{ + VSB_HUANGHAI_OTHER = 0, // + VSB_HUANGHAI_DACAISHEN_1 = 1, // ƺ--2013,2012 + VSB_HUANGHAI_DACAISHEN_2 = 2, // ƺ--2013,2012,2011,2010,2009Ͱ + VSB_HUANGHAI_BUS4_1 = 3, // ƺ-ͳ4-2012,2011 + VSB_HUANGHAI_CHALLENGER_1 = 4, // ƺ-ս-2011,2010,2009,2008 + VSB_HUANGHAI_AOLONGCUV_1 = 5, // ƺ-CUV-2010,2009 + VSB_HUANGHAI_AOJUN_1 = 6, // ƺ--2009 + VSB_HUANGHAI_AOJUN_2 = 7, // ƺ--2010,2009 + VSB_HUANGHAI_QISHENGV3_1 = 8, // ƺ-ʤV3-2011 + VSB_HUANGHAI_LINGHANGZHE_1 = 9, // ƺ-캽-2007,2005 + VSB_HUANGHAI_FENGCHI_1 = 10 // ƺ--A +}VSB_HUANGHAI_CLASS; + +/********************ƷEnd*************************/ + +//Ϣ +typedef struct tagNET_DVR_VEHICLE_INFO_ +{ + DWORD dwIndex; // + BYTE byVehicleType; // 0 ʾͣ1 ʾСͳ2 ʾͳ ,3ʾ˴ ,4ʾֳ 5ʾֳ(3.5Ver) 6ʾ + BYTE byColorDepth; //ɫdz + BYTE byColor; //ɫ,οVCR_CLR_CLASS + /*״쳣״̬ + 0~״ + 1~״ + 2~״һֱijһͬٶֵ + 3~״ͳΪ0 + 4~״ͳݹ߹С + */ + BYTE byRadarState; + WORD wSpeed; //λkm/h + WORD wLength; //ǰһij + /*Υͣ0-1-٣2-٣3-У4-,5-ѹ,6-7-· + 8-ռǣ9-Υ10- 11-Υ12-·ͣ13-̵ͣ, 14-δ(Υ1357), + 15-Υͣ16-Υµͷ,17-ռӦ,18-,19-,20-ѹ,21-δϵȫ,22-˴,23-,24-ΥʹԶƣ + 25-ʻʱֳֵ绰26-תֱУ27-תת28-ͷֱУ29-Сת, 30-̵ƣ31-δͷ + 32-ǻˣ33-ǻռû34-ǻɡ, 35-̳, 36-,37-ѹͣ,38-λͣ,39-ѹҿλͣ, + 40-ҷ·,41-뻷·δ·ڵĻ,42-ѵ·δ,43-ռ,44-ը,45- + */ + BYTE byIllegalType; + BYTE byVehicleLogoRecog; //οö VLR_VEHICLE_CLASS + BYTE byVehicleSubLogoRecog; //Ʒʶ𣻲οVSB_VOLKSWAGEN_CLASSö١ + BYTE byVehicleModel; //Ʒ0-δ֪ο"Ʒ.xlsx" + BYTE byCustomInfo[16]; //ԶϢ + WORD wVehicleLogoRecog; //Ʒƣο"Ʒ.xlsx" (ֶμbyVehicleLogoRecog); + BYTE byIsParking;//Ƿͣ 0-Ч1-ͣ2-δͣ + BYTE byRes;//ֽ + DWORD dwParkingTime; //ͣʱ䣬λs + BYTE byBelieve; //byIllegalTypeŶȣ1-100 + BYTE byCurrentWorkerNumber;//ǰҵ + BYTE byCurrentGoodsLoadingRate;//ǰװ 0- 1- 2- 3- 4- + BYTE byDoorsStatus;//״̬ 0-Źر 1-ſ + BYTE byRes3[4]; +}NET_DVR_VEHICLE_INFO, *LPNET_DVR_VEHICLE_INFO; + +//Ƽ +typedef struct tagNET_DVR_PLATE_RESULT +{ + DWORD dwSize; //ṹ + BYTE byResultType; //0-Ƶʶ1ͼʶ 2 10Mʱ· + BYTE byChanIndex; //ͨ + WORD wAlarmRecordID; //¼ID(ڲѯ¼񣬽byResultTypeΪ2ʱЧ) + DWORD dwRelativeTime; //ʱ + BYTE byAbsTime[32]; //ʱ,yyyymmddhhmmssxxx,e.g.20090810235959999룩 + DWORD dwPicLen; //ͼƬ(ͼ) + DWORD dwPicPlateLen; //СͼƬ + DWORD dwVideoLen; //¼ݳ + BYTE byTrafficLight; //0-Ǻ̵ץģ1-̵ʱץģ2-ʱץ + BYTE byPicNum; //ĵͼƬ + BYTE byDriveChan; // + BYTE byVehicleType; //ͣοVTR_RESULT + DWORD dwBinPicLen; //ƶֵͼ + DWORD dwCarPicLen; //ԭͼ + DWORD dwFarCarPicLen; //Զͼ + BYTE *pBuffer3; //ƶֵͼ + BYTE *pBuffer4; //ԭͼ + BYTE *pBuffer5; //Զͼ + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byCarDirectionType; //ʻķ0ʾ£1ʾϣʵʳʻ֣,2ʾδ֪ + BYTE byRes3[6]; + NET_DVR_PLATE_INFO struPlateInfo; //Ϣṹ + NET_DVR_VEHICLE_INFO struVehicleInfo; //Ϣ + BYTE *pBuffer1; // ϴͼƬ(ͼ)ָָͼƬϢϴƵָָƵϢͼƬƵϢNULL(DVSͼ) + BYTE *pBuffer2; // ϴͼƬ(ͼ)ʱָͼƬָ루DVSƲͼ +}NET_DVR_PLATE_RESULT, *LPNET_DVR_PLATE_RESULT; +//ͼƬݺ¼ݣֻһ֣ͼƬΪͼƬ+СͼƬ + +typedef struct tagNET_VPD_SHUTTER +{ + DWORD dwCommmand; //:0, 1, 2, 3, 4,ֱֵ + DWORD dwCode; //ֵ, dwCommmandΪ4, òΪ + BYTE byRes[60]; // +}NET_VPD_SHUTTER, *LPNET_VPD_SHUTTER; + +//ͼϢ +typedef struct tagNET_DVR_IMAGEOVERLAYCFG +{ + DWORD dwSize; + BYTE byOverlayInfo;//ʹܿأ0-ӣ1- + BYTE byOverlayMonitorInfo;//ǷʾϢ0-ӣ1- + BYTE byOverlayTime;//Ƿʱ䣬0-ӣ1- + BYTE byOverlaySpeed;//Ƿٶȣ0-ӣ1- + BYTE byOverlaySpeeding;//Ƿӳٱ0-ӣ1- + BYTE byOverlayLimitFlag;//Ƿٱ־0-ӣ1- + BYTE byOverlayPlate;//Ƿӳƺţ0-ӣ1- + BYTE byOverlayColor;//Ƿӳɫ0-ӣ1- + BYTE byOverlayLength;//Ƿӳ0-ӣ1- + BYTE byOverlayType;//Ƿӳͣ0-ӣ1- + BYTE byOverlayColorDepth;//Ƿӳɫdz0-ӣ1- + BYTE byOverlayDriveChan;//Ƿӳ0-ӣ1- + BYTE byOverlayMilliSec; //ӺϢ 0-ӣ1- + BYTE byOverlayIllegalInfo; //ΥϢ 0-ӣ1- + BYTE byOverlayRedOnTime; //Ӻʱ 0-ӣ1- + BYTE byFarAddPlateJpeg; //ԶͼǷӳƽͼ,0-,1- + BYTE byNearAddPlateJpeg; //ͼǷӳƽͼ,0-,1- + BYTE byRes1[3]; // + BYTE byMonitorInfo1[32]; //ʾϢ1 + BYTE byMonitorInfo2[44]; //Ϣ2 + BYTE byRes2[52]; // +}NET_DVR_IMAGEOVERLAYCFG, *LPNET_DVR_IMAGEOVERLAYCFG; + +//IOץĹ +typedef struct tagNET_DVR_SNAPCFG +{ + DWORD dwSize; + BYTE byRelatedDriveWay;//IOij + BYTE bySnapTimes; //ȦץĴ0-ץģ0-ĴĿǰ5 + WORD wSnapWaitTime; //ץĵȴʱ䣬λmsȡֵΧ[0,60000] + WORD wIntervalTime[MAX_INTERVAL_NUM];//ļʱ䣬ms + DWORD dwSnapVehicleNum; //ץijš + NET_DVR_JPEGPARA struJpegPara;//ץͼƬ + BYTE byRes2[16];//ֽ +}NET_DVR_SNAPCFG, *LPNET_DVR_SNAPCFG; + +typedef enum _ITC_MAINMODE_ABILITY_ +{ + ITC_MODE_UNKNOW = 0x0, // + ITC_POST_MODE = 0x1, //ģʽ + ITC_EPOLICE_MODE = 0x2, //羯ģʽ + ITC_POSTEPOLICE_MODE = 0x4 //ʽ羯ģʽ +}ITC_MAINMODE_ABILITY; + +typedef enum _ITC_RECOG_REGION_TYPE_ +{ + ITC_REGION_RECT = 0x0, // + ITC_REGION_POLYGON = 0x1, // +}ITC_RECOG_REGION_TYPE; + +typedef struct tagNET_DVR_SNAP_ABILITY +{ + DWORD dwSize; + BYTE byIoInNum;//IO + BYTE byIoOutNum;//IO + BYTE bySingleSnapNum;//IO + BYTE byLightModeArrayNum;//̵ģʽ + BYTE byMeasureModeArrayNum;//ģʽ + BYTE byPlateEnable; //ʶ + BYTE byLensMode;//ͷģʽ0-CCD,1-CMOS + BYTE byPreTriggerSupport; //Ƿ֧ԭģʽ0-֧֣1-֧ + DWORD dwAbilityType; //ֵ֧ĴģʽλʾITC_MAINMODE_ABILITY + BYTE byIoSpeedGroup; //ֵ֧IO + BYTE byIoLightGroup; //ֵ֧IO̵ + BYTE byRecogRegionType; //ʶֵ֧ͣITC_RECOG_REGION_TYPE + BYTE bySupport; //豸λʾ0-֧֣1-֧ + // bySupport&0x1ʾǷ֧չַ + // bySupport&0x2ʾǷ֧չУʱýṹ + // bySupport&0x4, ʾǷֶ֧() + // bySupport&0x8, ʾǷ֧bonding(ݴ) + // bySupport&0x10, ʾǷ֧Խ + //2013-07-09 + WORD wSupportMultiRadar;// 豸λʾ0-֧֣1-֧ + // wSupportMultiRadar&0x1ʾ RS485״ ֳ֧״ﴦ + // wSupportMultiRadar&0x2ʾ Ȧ ֳ֧״ﴦ + // wSupportMultiRadar&0x4ʾ п ֳ֧״ﴦ + // wSupportMultiRadar&0x8ʾ Ƶ ֳ֧״ﴦ + BYTE byICRPresetNum; + // ʾֵ֧ICRԤõ㣨˹ƬƫƵ㣩 + BYTE byICRTimeSlot;//ʾֵ֧ICRʱ18 + BYTE bySupportRS485Num;//ʾֵ֧RS485ڵ + BYTE byExpandRs485SupportSensor;// 豸λʾ0-֧֣1-֧ + // byExpandRs485SupportSensor &0x1ʾ羯ֳ֧ + // byExpandRs485SupportSensor &0x2ʾʽ羯ֳ֧ + BYTE byExpandRs485SupportSignalLampDet;// 豸λʾ0-֧֣1-֧ + // byExpandRs485SupportSignalLampDet &0x1ʾ羯֧źŵƼ + // byExpandRs485SupportSignalLampDet &0x2ʾʽ羯֧źŵƼ + BYTE byRelayNum;// ʾ̵ּ֧ĸ 2013-11-04 + BYTE bySupport1; //豸λʾ0-֧֣1-֧ + // bySupport1&0x1ʾǷ֧ԶУʱϢ + // bySupport1&0x2, ʾǷ֧ƵŻ + // bySupport1&0x4, ʾǷ֧DDNS÷ + // bySupport1&0x8, ʾǷֻ֧ȡ豸ǰģʽӿ + // bySupport1&0x10, ʾǷֳ֧ 2014-03-03 + // bySupport1&0x20, ʾǷ֧GPSģ + // bySupport1&0x40, ʾǷ֧NTPУʱַ֧ + // bySupport1&0x80, ʾǷ֧tpsϴ + BYTE bySupport2; //豸λʾ0-֧֣1-֧ + // bySupport2&0x01, ʾǷ֧Ϣ + // bySupport2&0x02, ʾͨͼINTER_PICCFG_V30Ƿ֧ƵʱòbyOSDMilliSecondEnable + // bySupport2&0x04, ʾբƣNET_DVR_BARRIERGATE_CFGbyBarrierGateCtrlֶ֧4~բ֧byUnlockʹܡ֮ʶ֧ + BYTE bySupportWhiteBalance; //ƽĬ϶ֶ֧ƽ⡢Զƽ⡢Զƽ23ģʽ + // bySupportWhiteBalance &0x01, ʾǷ֧չģʽ + // bySupportWhiteBalance &0x02, ʾǷ֧Ȼģʽ + // bySupportWhiteBalance &0x04, ʾǷ֧ůģʽ + // bySupportWhiteBalance &0x08, ʾǷְ֧׳ģʽ + BYTE byRes[9]; +} NET_DVR_SNAP_ABILITY, *LPNET_DVR_SNAP_ABILITY; + +typedef struct tagNET_DVR_TRANSFER_CAP +{ + BYTE byAbility; + BYTE byRes[63]; +}NET_DVR_TRANSFER_CAP, *LPNET_DVR_TRANSFER_CAP; + +typedef struct tagNET_ITC_ICRTIMECFG +{ + NET_DVR_SCHEDTIME struTime; + BYTE byAssociateRresetNo;//Ԥõ18 , 0 + BYTE bySubSwitchMode;//1~죬2~ (Ԥõ0 ʱЧ) + BYTE byRes[10]; +}NET_ITC_ICRTIMECFG, *LPNET_ITC_ICRTIMECFG; + +typedef struct tagNET_ITC_ICR_TIMESWITCH_PARAM //156 +{ + NET_ITC_ICRTIMECFG struAutoCtrlTime[MAX_TIMESEGMENT_V30];//Զлʱ (Զл ʱЧ ֧4飬Ԥ4) + BYTE byICRPreset[MAX_ICR_NUM]; //ʵЧ̬ʾ [0~100] ±ʾԤõ18 07 Ӧ + BYTE byRes[20]; +}NET_ITC_ICR_TIMESWITCH_PARAM, *LPNET_ITC_ICR_TIMESWITCH_PARAM; + +typedef struct tagNET_ITC_ICR_MANUALSWITCH_PARAM +{ + BYTE byICRPreset[MAX_ICR_NUM]; //ʵЧ̬ʾ [0~100] + BYTE bySubSwitchMode;//1~죬2~ + BYTE byRes[147]; +}NET_ITC_ICR_MANUALSWITCH_PARAM, *LPNET_ITC_ICR_MANUALSWITCH_PARAM; + +typedef struct tagNET_ITC_ICR_AOTOSWITCH_PARAM +{ + BYTE byICRPreset[MAX_ICR_NUM]; //ʵЧ̬ʾ [0~100] ±ʾԤõ18 07 Ӧ + BYTE byICRAutoSwitch; // ICRԶлֵѡ, ȡֵΧ[0 100] + BYTE byRes[147]; +}NET_ITC_ICR_AOTOSWITCH_PARAM, *LPNET_ITC_ICR_AOTOSWITCH_PARAM; + +//㷨Զ +typedef struct tagNET_ITC_ICR_ALGAOTOSWITCH_PARAM +{ + BYTE byDetectThreshold;//ֵ,Χ[0,100],Ĭ 58 + BYTE byAbBrightnessThreshold; //쳣ֵΧ[0,100]Ĭ12 + BYTE byRes[154]; +}NET_ITC_ICR_ALGAOTOSWITCH_PARAM, *LPNET_ITC_ICR_ALGAOTOSWITCH_PARAM; + +typedef union tagNET_ITC_ICR_PARAM_UNION +{ + BYTE uLen[156]; + NET_ITC_ICR_AOTOSWITCH_PARAM struICRAutoSwitch; + NET_ITC_ICR_MANUALSWITCH_PARAM struICRManualSwitch; + NET_ITC_ICR_TIMESWITCH_PARAM struICRTimeSwitch; + NET_ITC_ICR_ALGAOTOSWITCH_PARAM strICRAlgorithmAutoSwitch; +}NET_ITC_ICR_PARAM_UNION,*LPNET_ITC_ICR_PARAM_UNION; + +typedef struct tagNET_ITC_ICRCFG +{ + DWORD dwSize; + BYTE bySwitchType;//1~Զл2~ֶл ,3~ʱл,4~㷨Զ + BYTE byRes[3]; + NET_ITC_ICR_PARAM_UNION uICRParam; +}NET_ITC_ICRCFG, *LPNET_ITC_ICRCFG; + +//2013-07-09 쳣 +typedef struct +{ + DWORD dwHandleType; //쳣,쳣ʽ"" + /*0x00: Ӧ*/ + /*0x01: ʾϾ*/ + /*0x02: */ + /*0x04: ϴ*/ + /*0x08: ̵*/ + /*0x10: JPRGץͼϴEmail*/ + /*0x20: ⱨ*/ + /*0x40: ӵͼ(ĿǰֻPCNVR֧)*/ + /*0x200: ץͼϴFTP*/ + BYTE byEnable; //0ã1 + BYTE byRes; + WORD wDuration;//ʱ(λ/s) + BYTE byAlarmOutTriggered[MAX_ITC_EXCEPTIONOUT];//ͨ + BYTE byRes1[8]; +} NET_ITC_HANDLEEXCEPTION, *LPNET_ITC_HANDLEEXCEPTION; + +typedef struct +{ + DWORD dwSize; + NET_ITC_HANDLEEXCEPTION struSnapExceptionType[MAX_EXCEPTIONNUM_V30]; //ÿԪضʾһ쳣0- Ӳ̳,1-߶,2-IP ַͻ, 3-쳣, 4-źŵƼ쳣 +}NET_ITC_EXCEPTION,*LPNET_ITC_EXCEPTION; + +typedef struct tagNET_DVR_TRIGCOORDINATE +{ + WORD wTopLeftX; /*ȦϽǺ꣨2ֽڣ*/ + WORD wTopLeftY; /*ȦϽ꣨2ֽڣ*/ + WORD wWdith; /*Ȧȣ2ֽڣ*/ + WORD wHeight; /*Ȧ߶ȣ2ֽڣ*/ +} NET_DVR_TRIGCOORDINATE, *LPNET_DVR_TRIGCOORDINATE; + +typedef enum _PROVINCE_CITY_IDX_ +{ + ANHUI_PROVINCE = 0, // + AOMEN_PROVINCE = 1, // + BEIJING_PROVINCE = 2, // + CHONGQING_PROVINCE = 3, // + FUJIAN_PROVINCE = 4, // + GANSU_PROVINCE = 5, // + GUANGDONG_PROVINCE = 6, //㶫 + GUANGXI_PROVINCE = 7, // + GUIZHOU_PROVINCE = 8, // + HAINAN_PROVINCE = 9, // + HEBEI_PROVINCE = 10, //ӱ + HENAN_PROVINCE = 11, // + HEILONGJIANG_PROVINCE = 12, // + HUBEI_PROVINCE = 13, // + HUNAN_PROVINCE = 14, // + JILIN_PROVINCE = 15, // + JIANGSU_PROVINCE = 16, // + JIANGXI_PROVINCE = 17, // + LIAONING_PROVINCE = 18, // + NEIMENGGU_PROVINCE = 19, //ɹ + NINGXIA_PROVINCE = 20, // + QINGHAI_PROVINCE = 21, //ຣ + SHANDONG_PROVINCE = 22, //ɽ + SHANXI_JIN_PROVINCE = 23, //ɽ + SHANXI_SHAN_PROVINCE = 24, // + SHANGHAI_PROVINCE = 25, //Ϻ + SICHUAN_PROVINCE = 26, //Ĵ + TAIWAN_PROVINCE = 27, //̨ + TIANJIN_PROVINCE = 28, // + XIZANG_PROVINCE = 29, // + XIANGGANG_PROVINCE = 30, // + XINJIANG_PROVINCE = 31, //½ + YUNNAN_PROVINCE = 32, // + ZHEJIANG_PROVINCE = 33 //㽭 +}PROVINCE_CITY_IDX; + +typedef struct tagNET_DVR_GEOGLOCATION +{ + int iRes[2]; /**/ + DWORD dwCity; /*УPROVINCE_CITY_IDX */ +}NET_DVR_GEOGLOCATION, *LPNET_DVR_GEOGLOCATION; + +//ģʽ +typedef enum _SCENE_MODE_ +{ + UNKOWN_SCENE_MODE = 0, //δ֪ģʽ + HIGHWAY_SCENE_MODE = 1, //ٳģʽ + SUBURBAN_SCENE_MODE = 2, //ģʽ() + URBAN_SCENE_MODE = 3, //ģʽ + TUNNEL_SCENE_MODE = 4 //ģʽ() +}SCENE_MODE; +// ˽Ϣģ +typedef enum _PRIDATA_RENDER +{ + RENDER_ANA_INTEL_DATA = 0x00000001, //ܷ + RENDER_MD = 0x00000002, //ƶ + RENDER_ADD_POS = 0x00000004, //POSϢ + RENDER_ADD_PIC = 0x00000008, //ͼƬ + RENDER_FIRE_DETCET = 0x00000010, //ȳϢ + RENDER_TEM = 0x00000020, //¶Ϣ + RENDER_TRACK_TEM = 0x00000040, //Ϣ + RENDER_THERMAL = 0x00000080 //̻Ϣ +}PRIDATA_RENDER; + +typedef enum _THERMAL_FLAG +{ + THERMAL_FIREMASK = 0x00000001, //̻ + THERMAL_RULEGAS = 0x00000002, // + THERMAL_TARGETGAS = 0x00000004 //Ŀ +}THERMAL_FLAG; + +typedef enum _FIRE_ALARM{ + FIRE_FRAME_DIS = 0x00000001, //ʾ + FIRE_MAX_TEMP = 0x00000002, //¶ + FIRE_MAX_TEMP_POSITION = 0x00000004, //¶λʾ + FIRE_DISTANCE = 0x00000008, //¶Ⱦ}FIRE_ALARM +}FIRE_ALARM; + +typedef enum _TEM_FLAG{ + TEM_REGION_BOX = 0x00000001, // + TEM_REGION_LINE = 0x00000002, //߲ + TEM_REGION_POINT = 0x00000004, //}TEM_FLAG +}TEM_FLAG; + +typedef enum _TRACK_FLAG +{ + TRACK_PEOPLE = 0x00000001, // + TRACK_VEHICLE = 0x00000002 // +}TRACK_FLAG; + +typedef struct tagNET_DVR_VTPARAM +{ + DWORD dwSize; + BYTE byEnable; /* ǷʹȦ0-ʹã1-ʹ*/ + BYTE byIsDisplay; /* ǷʾȦ0-ʾ1-ʾ*/ + BYTE byLoopPos; //䴥Ȧƫ0-ϣ1- + BYTE bySnapGain; /*ץ*/ + DWORD dwSnapShutter; /*ץĿٶ*/ + NET_DVR_TRIGCOORDINATE struTrigCoordinate; // + NET_DVR_TRIGCOORDINATE struRes[MAX_VL_NUM]; + BYTE byTotalLaneNum;/*Ƶij1*/ + BYTE byPolarLenType; /*ƫͣ0ƫ񾵣1ʩ͵ƫ񾵡*/ + BYTE byDayAuxLightMode; /*츨ģʽ0޸1LED2*/ + BYTE byLoopToCalRoadBright; /*Լ·ȵij(Ȧ)*/ + BYTE byRoadGrayLowTh; /*·ȵֵʼֵ1*/ + BYTE byRoadGrayHighTh; /*·ȸֵʼֵ140*/ + WORD wLoopPosBias; /*䴥Ȧλ30*/ + DWORD dwHfrShtterInitValue; /*ͼعʱijʼֵ2000*/ + DWORD dwSnapShtterInitValue; /*ץͼعʱijʼֵ500*/ + DWORD dwHfrShtterMaxValue; /*ͼعʱֵ20000*/ + DWORD dwSnapShtterMaxValue; /*ץͼعʱֵ1500*/ + DWORD dwHfrShtterNightValue; /*ͼعʱֵ3000*/ + DWORD dwSnapShtterNightMinValue; /*ץͼعʱСֵ3000*/ + DWORD dwSnapShtterNightMaxValue; /*ץͼعʱֵ5000*/ + DWORD dwInitAfe; /*ijʼֵ200*/ + DWORD dwMaxAfe; /*ֵ400*/ + WORD wResolutionX;/* 豸ǰֱʿ*/ + WORD wResolutionY;/* 豸ǰֱʸ*/ + DWORD dwGainNightValue; /*棬Ĭֵ70*/ + DWORD dwSceneMode; /*ģʽ SCENE_MODE */ + DWORD dwRecordMode; /*¼־0-¼1-¼*/ + NET_DVR_GEOGLOCATION struGeogLocation; /*ַλ*/ + BYTE byTrigFlag[MAX_VL_NUM]; /*־0-ͷ1-β2-ͷ/β*/ + BYTE byTrigSensitive[MAX_VL_NUM]; /*ȣ1-100*/ + BYTE byRes2[62]; +}NET_DVR_VTPARAM, *LPNET_DVR_VTPARAM; + +typedef struct tagNET_DVR_SNAPENABLECFG +{ + DWORD dwSize; + BYTE byPlateEnable;//Ƿֳ֧ʶ0-֧֣1-֧ + BYTE byRes1[2]; // + BYTE byFrameFlip; //ͼǷת 0-ת1-ת + WORD wFlipAngle; //ͼתǶ 0,90,180,270 + WORD wLightPhase; //λȡֵΧ[0, 360] + BYTE byLightSyncPower; //ǷźŵƵԴͬ0-ͬ1-ͬ + BYTE byFrequency; //źƵ + BYTE byUploadSDEnable; //ǷԶϴSDͼƬ0-1- + BYTE byPlateMode; //ʶģʽ:0-Ƶ,1-ⲿ + BYTE byUploadInfoFTP; //ǷϴץĸϢFTP0-1- + BYTE byAutoFormatSD; //ǷԶʽSD0-1- + WORD wJpegPicSize; //JpegͼƬС[64-8196] + BYTE bySnapPicResolution; //ץͼƬֱ(NET_DVR_COMPRESSION_INFO_V30зֱʱһ) + BYTE byRes[55]; // +}NET_DVR_SNAPENABLECFG, *LPNET_DVR_SNAPENABLECFG; + +/*ftpϴ*/ +typedef struct +{ + DWORD dwSize; + DWORD dwEnableFTP; /*Ƿftpϴ*/ + char sFTPIP[16]; /*ftp */ + DWORD dwFTPPort; /*ftp˿*/ + BYTE sUserName[NAME_LEN]; /*û*/ + BYTE sPassword[PASSWD_LEN]; /**/ + DWORD dwDirLevel; /*0 = ʹĿ¼ṹֱӱڸĿ¼,1 = ʹ1Ŀ¼,2=ʹ2Ŀ¼*/ + WORD wTopDirMode; /* һĿ¼0x1 = ʹ豸,0x2 = ʹ豸,0x3 = ʹ豸ipַ0x4=ʹʾ,0x5=ʹʱ(),0x=6Զ,0x7=Υ,0x8=,0x9=ص*/ + WORD wSubDirMode; /* Ŀ¼0x1 = ʹͨ,0x2 = ʹͨţ,0x3=ʹʱ(),0x4=ʹó,0x=5Զ,0x6=Υ,0x7=,0x8=ص*/ + BYTE byEnableAnony; //0-1- + BYTE byPicArchivingInterval;//ͼƬ鵵[1~30],0ʾر + BYTE byRes[22]; +}NET_DVR_FTPCFG, *LPNET_DVR_FTPCFG; + +/*ͼƬԪ */ +#define PICNAME_ITEM_DEV_NAME 1 /*豸*/ +#define PICNAME_ITEM_DEV_NO 2 /*豸*/ +#define PICNAME_ITEM_DEV_IP 3 /*豸IP*/ +#define PICNAME_ITEM_CHAN_NAME 4 /*ͨ*/ +#define PICNAME_ITEM_CHAN_NO 5 /*ͨ*/ +#define PICNAME_ITEM_TIME 6 /*ʱ*/ +#define PICNAME_ITEM_CARDNO 7 /**/ +#define PICNAME_ITEM_PLATE_NO 8 /*ƺ*/ +#define PICNAME_ITEM_PLATE_COLOR 9 /*ɫ*/ +#define PICNAME_ITEM_CAR_CHAN 10 /**/ +#define PICNAME_ITEM_CAR_SPEED 11 /*ٶ*/ +#define PICNAME_ITEM_CARCHAN 12 /*ʾ*/ +#define PICNAME_ITEM_PIC_NUMBER 13 //ͼƬ +#define PICNAME_ITEM_CAR_NUMBER 14 // +#define PICNAME_MAXITEM 15 + +#define PICNAME_ITEM_SPEED_LIMIT_VALUES 15 //ֵ +#define PICNAME_ITEM_ILLEGAL_CODE 16 //Υ +#define PICNAME_ITEM_CROSS_NUMBER 17 //·ڱ +#define PICNAME_ITEM_DIRECTION_NUMBER 18 // + +//(3.7Ver) +#define PICNAME_ITEM_CAR_COLOR 19 //ɫ +#define PICNAME_ITEM_PLATE_COORDINATE 20 // +#define PICNAME_ITEM_CAR_TYPE 21 // +#define PICNAME_ITEM_VIOLATION_TYPE 22 //Υ +#define PICNAME_ITEM_CUSTOM 255//Զ + + + +//ͼƬ +typedef struct +{ + BYTE byItemOrder[PICNAME_MAXITEM]; /* 鶨ļĹ */ + BYTE byDelimiter; /*ָһΪ'_'*/ +}NET_DVR_PICTURE_NAME, *LPNET_DVR_PICTURE_NAME; + +//2013-09-27 +#define PICNAME_ITEM_PARK_DEV_IP 1 /*豸IP*/ +#define PICNAME_ITEM_PARK_PLATE_NO 2 /*ƺ*/ +#define PICNAME_ITEM_PARK_TIME 3 /*ʱ*/ +#define PICNAME_ITEM_PARK_INDEX 4 /*λ*/ +#define PICNAME_ITEM_PARK_STATUS 5 /*λ״̬*/ +#define PICNAME_ITEM_BUILDING_NUMBER 6 /*ŵԪ*/ +#define PICNAME_ITEM_OUTDOOR_UNIT_ID 7 /*ſڻ*/ +#define PICNAME_ITEM_UNLOCK_TYPE 8 /*ʽ*/ +#define PICNAME_ITEM_DEVICE_NAME 9 //豸 +#define PICNAME_ITEM_PERIOD_NO 10 /*ں*/ +#define PICNAME_ITEM_DEV_INDEX 11 /*豸*/ +#define PICNAME_PREFIX 32 /*ͼƬԶǰ׺*/ +//ͼƬչ 2013-09-27 +typedef struct +{ + BYTE byItemOrder[PICNAME_MAXITEM]; /* 鶨ļĹ */ + BYTE byDelimiter; /*ָһΪ'_'*/ + BYTE byPicNamePrefix[PICNAME_PREFIX/*32*/]; //ͼƬԶǰ׺ +}NET_DVR_PICTURE_NAME_EX, *LPNET_DVR_PICTURE_NAME_EX; + +/* ץͼ*/ +typedef struct +{ + BYTE byStrFlag; /*ݿʼ*/ + BYTE byEndFlag; /**/ + WORD wCardIdx; /*ʼλ*/ + DWORD dwCardLen; /*ų*/ + DWORD dwTriggerPicChans; /*ͨţλӵ1λʼƣ0x2ʾһͨ*/ +}NET_DVR_SERIAL_CATCHPIC_PARA, *LPNET_DVR_SERIAL_CATCHPIC_PARA; + +//DVRץͼãߣ +typedef struct +{ + DWORD dwSize; + NET_DVR_JPEGPARA struJpegPara[MAX_CHANNUM_V30]; /*ÿͨͼ*/ + WORD wBurstMode; /*ץͼʽ,λ.0x1=봥0x2=ƶⴥ 0x4=2320x8=4850x10=紥*/ + WORD wUploadInterval; /*ͼƬϴ()[0,65535]*/ + NET_DVR_PICTURE_NAME struPicNameRule; /* ͼƬ */ + BYTE bySaveToHD; /*Ƿ񱣴浽Ӳ*/ + BYTE byRes1; + WORD wCatchInterval; /*ץͼ()[0,65535]*/ + BYTE byRes2[12]; + NET_DVR_SERIAL_CATCHPIC_PARA struRs232Cfg; + NET_DVR_SERIAL_CATCHPIC_PARA struRs485Cfg; + DWORD dwTriggerPicTimes[MAX_CHANNUM_V30]; /* ÿͨһδմ */ + DWORD dwAlarmInPicChanTriggered[MAX_ALARMIN_V30]; /*ץͨ,λãӵ1λʼ*/ +}NET_DVR_JPEGCFG_V30, *LPNET_DVR_JPEGCFG_V30; + +//ץĴṹ() +typedef struct tagNET_DVR_MANUALSNAP +{ + BYTE byOSDEnable;//0-ر(Ĭ)1-ر + BYTE byLaneNo;//, ΧΪ1-6ĬΪ1(ץĻڲʹ) + BYTE byChannel;//ͨ + BYTE byRes[21]; // +}NET_DVR_MANUALSNAP, *LPNET_DVR_MANUALSNAP; + +typedef struct tagNET_DVR_SPRCFG +{ + DWORD dwSize; + BYTE byDefaultCHN[MAX_CHJC_NUM]; /*豸ʡݵĺּд*/ + BYTE byPlateOSD; /*0:ͳƲɫͼ,1:ͳƲɫͼ*/ + BYTE bySendJPEG1; /*0-ͽJPEGͼ,1-ͽJPEGͼ*/ + BYTE bySendJPEG2; /*0-ԶJPEGͼ,1-ԶJPEGͼ*/ + WORD wDesignedPlateWidth; /*ƿ*/ + BYTE byTotalLaneNum; /*ʶij*/ + BYTE byRes1; /**/ + WORD wRecognizedLane; /*ʶijţλʾbit0ʾ1Ƿʶ0-ʶ1-ʶ*/ + NET_VCA_RECT struLaneRect[MAX_LANERECT_NUM]; /*ʶ*/ + DWORD dwRecogMode; /*ʶͣ + bit0-ʶ0-ʶ1-ʶ(βʶ) + bit1-ʶСʶ0-Сʶ1-ʶ + bit2-ɫʶ0-óɫʶڱʶСʶʱֹã1-ɫʶ + bit3-ũóʶ0-ũóʶ1-ũóʶ + bit4-ģʶ0-ģʶ1-ģʶ + bit5-֡λ򳡶λ0-֡λ1-λ + bit6-֡ʶʶ0-֡ʶ1-ʶ + bit7-ϻ죺0-죬1- */ + BYTE bySendPRRaw; //Ƿԭͼ0-ͣ1- + BYTE bySendBinImage; //Ƿͳƶֵͼ0-ͣ1- + BYTE byDelayCapture; //ʱץĿ,λ֡ + BYTE byUseLED; //ʹLEDƣ0-1- + BYTE byRes2[68]; // +}NET_DVR_SPRCFG, *LPNET_DVR_SPRCFG; + +typedef struct tagNET_DVR_PLCCFG +{ + DWORD dwSize; + BYTE byPlcEnable; //ǷóȲĬã0-رգ1- + BYTE byPlateExpectedBright; //ƵԤȣĬֵ50, Χ[0, 100] + BYTE byRes1[2]; // + BYTE byTradeoffFlash; //ǷƵӰ: 0 - ; 1 - (Ĭ); + //ʹƲʱ, ǼƵǿЧӦ, ҪΪ1;Ϊ0 + BYTE byCorrectFactor; //ϵ, Χ[0, 100], Ĭֵ50 (tradeoff_flashлʱ,ָĬֵ + WORD wLoopStatsEn; //ǷȦȣλʾ0-ͳƣ1-ͳ + BYTE byPlcBrightOffset;// Ȳ(ȦģʽЧ)ȡֵΧ1~100 + BYTE byRes[19]; +}NET_DVR_PLCCFG, *LPNET_DVR_PLCCFG; + +typedef struct tagNET_DVR_DEVICESTATECFG +{ + DWORD dwSize; + WORD wPreviewNum; //ԤӸ + WORD wFortifyLinkNum; //Ӹ + NET_DVR_IPADDR struPreviewIP[MAX_LINK]; //ԤûIPַ + NET_DVR_IPADDR struFortifyIP[MAX_FORTIFY_NUM]; //ӵûIPַ + DWORD dwVideoFrameRate; //֡ʣ0-ȫ; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12; 12-16; 13-20; 14-15; 15-18; 16-22; + BYTE byResolution; //ֱ0-DCIF 1-CIF, 2-QCIF, 3-4CIF, 4-2CIF 5,16-VGA640*480, 17-UXGA1600*1200, 18-SVGA 800*600,19-HD720p1280*720,20-XVGA, 21-HD900p, 27-HD1080i, 28-2560*1920, 29-1600*304, 30-2048*1536, 31-2448*2048 + BYTE bySnapResolution; //ץķֱ0-DCIF 1-CIF, 2-QCIF, 3-4CIF, 4-2CIF 5,16-VGA640*480, 17-UXGA1600*1200, 18-SVGA 800*600,19-HD720p1280*720,20-XVGA, 21-HD900p, 27-HD1080i, 28-2560*1920, 29-1600*304, 30-2048*1536, 31-2448*2048 + BYTE byStreamType; //ͣ0-1- + BYTE byTriggerType; //ģʽ0-Ƶ1-ͨ + DWORD dwSDVolume; //SD + DWORD dwSDFreeSpace; //SDʣռ + BYTE byDetectorState[MAX_DRIVECHAN_NUM][MAX_COIL_NUM]; //״̬0-δʹã1-2-쳣 + BYTE byDetectorLinkState; //״̬0-δӣ1- + BYTE bySDStatus; //SD״̬ 01ߣ2쳣3-sd + BYTE byFortifyLevel[MAX_FORTIFY_NUM]; //ȼ0-ޣ1-һȼߣ2-ȼУ3-ȼͣ + BYTE byRes2[116]; // +}NET_DVR_DEVICESTATECFG, *LPNET_DVR_DEVICESTATECFG; + +typedef struct tagNET_DVR_POSTEPOLICECFG +{ + DWORD dwSize; + DWORD dwDistance;//Ȧ,λcmȡֵΧ[0,20000] + DWORD dwLightChan[MAX_SIGNALLIGHT_NUM]; //źŵͨ + BYTE byCapSpeed;//־٣λkm/hȡֵΧ[0,255] + BYTE bySpeedLimit;//ֵλkm/hȡֵΧ[0,255] + BYTE byTrafficDirection;//0-ɶ1-򶫣2-򱱣3-ɱ + BYTE byRes1; // + WORD wLoopPreDist; /*ӳپ λ*/ + WORD wTrigDelay; /*Ӳʱʱ λ*/ + BYTE byRes[124];//ֽ +}NET_DVR_POSTEPOLICECFG, *LPNET_DVR_POSTEPOLICECFG; + + +//źŵ쳣 +typedef struct tagNET_DVR_SIGNALLAMP_DETCFG +{ + DWORD dwSize; //ṹ + //ʱ,yyyymmddhhmmssxxx,e.g.20090810235959999 λΪ + BYTE byAbsTime[32]; + NET_DVR_IPADDR struAlarmCamIP;//IP + DWORD dwPic1Len; //쳣ͼƬ1 + DWORD dwPic2Len; //쳣ͼƬ2 + char *pPic1Buffer; //ָ ӳͼƬ + char *pPic2Buffer; //ָ źŵ״̬ͼƬ + BYTE byRes[128]; +}NET_DVR_SIGNALLAMP_DETCFG, *LPNET_DVR_SIGNALLAMP_DETCFG; + +typedef struct tagNET_DVR_EXDEVDET_COND +{ + DWORD dwSize; // ṹС + DWORD dwChannel; //ͨ + BYTE byExternalDevType;// 0-Чֵ1-źŵ,2- + BYTE byRes[63]; // ֽ +}NET_DVR_EXDEVDET_COND,*LPNET_DVR_EXDEVDET_COND; + +typedef struct tagNET_DVR_EXDEVDET_CFG +{ + DWORD dwSize; // ṹС + BYTE byExternalDevStatus;// 0-1-쳣 + BYTE byRes[63];// ֽ +} NET_DVR_EXDEVDET_CFG,*LPNET_DVR_EXDEVDET_CFG; + +/***************************** end *********************************************/ + +#define IPC_PROTOCOL_NUM 50 //ipc Э + +//Э +typedef struct tagNET_DVR_PROTO_TYPE +{ + DWORD dwType; /*ipcЭֵ*/ + BYTE byDescribe[DESC_LEN]; /*Эֶ*/ +}NET_DVR_PROTO_TYPE, *LPNET_DVR_PROTO_TYPE; + +//Эб +typedef struct tagNET_DVR_IPC_PROTO_LIST +{ + DWORD dwSize; + DWORD dwProtoNum; /*ЧipcЭĿ*/ + NET_DVR_PROTO_TYPE struProto[IPC_PROTOCOL_NUM]; /*ЧipcЭ*/ + BYTE byRes[8]; +}NET_DVR_IPC_PROTO_LIST, *LPNET_DVR_IPC_PROTO_LIST; + +//ЭбV41 +typedef struct tagNET_DVR_IPC_PROTO_LIST_V41 +{ + DWORD dwSize; + DWORD dwProtoNum; //ЧipcЭĿ + BYTE *pBuffer; //Эб, dwProtoNum NET_DVR_PROTO_TYPEṹ + DWORD dwBufferLen; // + BYTE byRes[32]; +}NET_DVR_IPC_PROTO_LIST_V41, *LPNET_DVR_IPC_PROTO_LIST_V41; + +typedef struct tagNET_DVR_PTZPOS_INFO +{ + DWORD dwPanPos; // Pˮƽ + DWORD dwTiltPos; // Tֱ + DWORD dwZoomPos; // Z䱶 +}NET_DVR_PTZPOS_INFO, *LPNET_DVR_PTZPOS_INFO; + +//ʶṹ +typedef struct tagNET_VCA_HUMAN_FEATURE +{ + BYTE byGroup; // + BYTE bySex; //Ա, 0-ʾδ֪㷨֧֣,1 C , 2 C Ů, 0xff-㷨֧֣ûʶ + BYTE byEyeGlass; //Ƿ۾ 0-ʾδ֪㷨֧֣,1 C, 2 C۾, 3 Cī,0xff-㷨֧֣ûʶ + //ץͼƬʹ÷ʽbyRes3Ϊ15,byDeviationΪ1,ʾʵͼƬΪ14-16֮ + BYTE byRes3;// 0-ʾδ֪㷨֧֣,0xff-㷨֧֣ûʶ + BYTE byDeviation;//ֵ + BYTE byRes0; + BYTE byMask; //Ƿ 0-ʾδ֪㷨֧֣,1 C , 2 C , 0xff-㷨֧֣ûʶ + BYTE bySmile; //Ƿ΢Ц 0-ʾδ֪㷨֧֣,1 C ΢Ц, 2 C ΢Ц, 0xff-㷨֧֣ûʶ + BYTE byFaceExpression; /* ,μFACE_EXPRESSION_GROUP_ENUM*/ + BYTE byRes1; + BYTE byRes2; + BYTE byHat; // ñ, 0-֧,1-ñ,2-ñ, 3-ͷ 0xff-unknowʾδ֪,㷨֧δ + BYTE byRes[4]; // +}NET_VCA_HUMAN_FEATURE ,*LPNET_VCA_HUMAN_FEATURE; + +//ɫ +typedef struct tagNET_DVR_OBJECT_FEATURE +{ + BYTE byColorRatel; //ɫƶеռֵ + BYTE byRed; // RGBɫеĺɫ + BYTE byGreen; // RGBɫеɫ + BYTE byBlue; // RGBɫеɫ + BYTE byRes[32]; +}NET_DVR_OBJECT_FEATURE ,*LPNET_DVR_OBJECT_FEATURE; + +// +typedef union tagNET_DVR_ADVANCE_COND_UNION +{ + BYTE byLen[36]; //峤 + NET_VCA_HUMAN_FEATURE struHumanFeature; // + NET_DVR_OBJECT_FEATURE struObjectFeature; // +}NET_DVR_ADVANCE_COND_UNION,*LPNET_DVR_ADVANCE_COND_UNION; + + +#define MAX_ALERTLINE_NUM 8 //󾯽 + + +typedef struct tagNET_DVR_TRAVERSE_PLANE_SEARCHCOND +{ + NET_VCA_TRAVERSE_PLANE struVcaTraversePlane[MAX_ALERTLINE_NUM/*8*/]; //Խ + DWORD dwPreTime; /*ܱǰʱ λ:*/ + DWORD dwDelayTime; /*ܱӳʱ λ:*/ + NET_DVR_PTZPOS_INFO struPTZPosInfo; //PTZϢ + BYTE byAdvanceType; //Ϸʽ0-ʹţ1-ϣ2-ɫռ + BYTE byRes1[3]; // + NET_DVR_ADVANCE_COND_UNION uAdvanceCond; // + BYTE byRes[5604]; // +}NET_DVR_TRAVERSE_PLANE_SEARCHCOND, *LPNET_DVR_TRAVERSE_PLANE_SEARCHCOND; //Խѯ + +#define MAX_INTRUSIONREGION_NUM 8 // +typedef struct tagNET_DVR_INTRUSION_SEARCHCOND +{ + NET_VCA_INTRUSION struVcaIntrusion[MAX_INTRUSIONREGION_NUM/*8*/]; // + DWORD dwPreTime; /*ܱǰʱ λ:*/ + DWORD dwDelayTime; /*ܱӳʱ λ:*/ + NET_DVR_PTZPOS_INFO struPTZPosInfo; //PTZϢ + BYTE byAdvanceType;//Ϸʽ0-ʹţ1-ϣ2-ɫռ + BYTE byRes1[3]; // + NET_DVR_ADVANCE_COND_UNION uAdvanceCond; // + BYTE byRes[5348]; // +} NET_DVR_INTRUSION_SEARCHCOND, *LPNET_DVR_INTRUSION_SEARCHCOND; // + + +typedef struct tagNET_DVR_FACEDETECTION_SEARCHCOND +{ + NET_VCA_POLYGON struFacePolygon; //ʶ + DWORD dwPreTime; /*¼ǰʱ λ:*/ + DWORD dwDelayTime; /*¼ӳʱ λ:*/ + BYTE byRes[5972]; // +}NET_DVR_FACEDETECTION_SEARCHCOND, *LPNET_DVR_FACEDETECTION_SEARCHCOND; // + + +typedef union tagNET_DVR_AREA_SMARTSEARCH_COND_UNION +{ + BYTE byLen[6144]; //ṹ峤 + BYTE byMotionScope[64][96]; // 0-96λʾ64У96*64С飬1-ƶ0-ƶ + NET_DVR_TRAVERSE_PLANE_SEARCHCOND struTraversPlaneCond; //Խ + NET_DVR_INTRUSION_SEARCHCOND struIntrusionCond; // + NET_DVR_FACEDETECTION_SEARCHCOND struFaceSnapCond; // +}NET_DVR_AREA_SMARTSEARCH_COND_UNION, +*LPNET_DVR_AREA_SMARTSEARCH_COND_UNION; + + +// +typedef struct tagNET_DVR_SMART_SEARCH_PARAM +{ + BYTE byChan; //ͨ + BYTE bySearchCondType; //ܲNET_DVR_AREA_SMARTSEARCH_COND_UNION + /*0-ƶ 1-Խ⣬ 2-, 3- */ + WORD wChan; //ͨţ ֶǶbyChanչʹøֶκbyChanԲʹ + NET_DVR_TIME struStartTime; //¼ʼʱ + NET_DVR_TIME struEndTime; //¼ֹͣʱ + NET_DVR_AREA_SMARTSEARCH_COND_UNION uSmartSearchCond; //ܲ + BYTE bySensitivity; //ƶ,1 >80% 2 40%~80% 3 1%~40% + BYTE byRes2[11]; +}NET_DVR_SMART_SEARCH_PARAM, *LPNET_DVR_SMART_SEARCH_PARAM; + +typedef struct tagNET_DVR_SMART_SEARCH_PARAM_V40 +{ + DWORD dwSize; //ṹС + NET_DVR_STREAM_INFO struIDInfo; //ͨϢ + BYTE bySearchCondType; //ܲ 0-, 1-Խ, 2-,3-, 4-Ƽ + BYTE bySensitivity; //̬,1-100 + BYTE byRes1[2]; + NET_DVR_TIME_EX struStartTime; + NET_DVR_TIME_EX struEndTime; + NET_DVR_AREA_SMARTSEARCH_COND_UNION uSmartSearchCond; //ܲ + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cStartTimeDifferenceH; //ʼʱUTCʱСʱ-12 ... +14 ʾʱbyISO8601Ϊ1ʱЧ + char cStartTimeDifferenceM; //ʼʱUTCʱӣ-30, 0, 30, 45ʾʱbyISO8601Ϊ1ʱЧ + char cStopTimeDifferenceH; //ʱUTCʱСʱ-12 ... +14ʾʱbyISO8601Ϊ1ʱЧ + char cStopTimeDifferenceM; //ʱUTCʱӣ-30, 0, 30, 45ʾʱbyISO8601Ϊ1ʱЧ + BYTE byRes2[251]; +}NET_DVR_SMART_SEARCH_PARAM_V40,*LPNET_DVR_SMART_SEARCH_PARAM_V40; + + + +typedef struct tagNET_DVR_SMART_SEARCH_RET +{ + NET_DVR_TIME struStartTime; //ƶⱨʼʱ + NET_DVR_TIME struEndTime; //¼ֹͣʱ + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cStartTimeDifferenceH; //ʼʱUTCʱСʱ-12 ... +14 ʾʱ + char cStartTimeDifferenceM; //ʼʱUTCʱӣ-30, 0, 30, 45ʾʱ + char cStopTimeDifferenceH; //ʱUTCʱСʱ-12 ... +14ʾʱ + char cStopTimeDifferenceM; //ʱUTCʱӣ-30, 0, 30, 45ʾʱ + BYTE byRes[59]; +}NET_DVR_SMART_SEARCH_RET, *LPNET_DVR_SMART_SEARCH_RET; + +// IPSAN ļĿ¼ +typedef struct tagNET_DVR_IPSAN_SERACH_PARAM +{ + NET_DVR_IPADDR struIP; // IPSAN IPַ + WORD wPort; // IPSAN ˿ + BYTE byRes[10]; // ֽ +}NET_DVR_IPSAN_SERACH_PARAM, *LPNET_DVR_IPSAN_SERACH_PARAM; + +typedef struct tagNET_DVR_IPSAN_SERACH_RET +{ + BYTE byDirectory[128]; // صļĿ¼ + BYTE byRes[20]; +}NET_DVR_IPSAN_SERACH_RET, *LPNET_DVR_IPSAN_SERACH_RET; + +//DVR豸 +typedef struct +{ + DWORD dwSize; + BYTE sDVRName[NAME_LEN]; //DVR + DWORD dwDVRID; //DVR ID,ң //V1.4(0-99), V1.5(0-255) + DWORD dwRecycleRecord; //Ƿѭ¼,0:; 1: + //²ɸ + BYTE sSerialNumber[SERIALNO_LEN]; //к + DWORD dwSoftwareVersion; //汾,16λ汾,16λǴΰ汾 + DWORD dwSoftwareBuildDate; //,0xYYYYMMDD + DWORD dwDSPSoftwareVersion; //DSP汾,16λ汾,16λǴΰ汾 + DWORD dwDSPSoftwareBuildDate; // DSP,0xYYYYMMDD + DWORD dwPanelVersion; // ǰ汾,16λ汾,16λǴΰ汾 + DWORD dwHardwareVersion; // Ӳ汾,16λ汾,16λǴΰ汾 + BYTE byAlarmInPortNum; //DVR + BYTE byAlarmOutPortNum; //DVR + BYTE byRS232Num; //DVR 232ڸ + BYTE byRS485Num; //DVR 485ڸ + BYTE byNetworkPortNum; //ڸ + BYTE byDiskCtrlNum; //DVR Ӳ̿ + BYTE byDiskNum; //DVR Ӳ̸ + BYTE byDVRType; //DVR, 1:DVR 2:ATM DVR 3:DVS ...... + BYTE byChanNum; //DVR ͨ + BYTE byStartChan; //ʼͨ,DVS-1,DVR - 1 + BYTE byDecordChans; //DVR · + BYTE byVGANum; //VGAڵĸ + BYTE byUSBNum; //USBڵĸ + BYTE byAuxoutNum; //ڵĸ + BYTE byAudioNum; //ڵĸ + BYTE byIPChanNum; //ͨ 8λ8λbyHighIPChanNum + BYTE byZeroChanNum; //ͨ + BYTE bySupport; //λΪ0ʾ֧֣1ʾ֧֣ + //bySupport & 0x1, ʾǷ֧ + //bySupport & 0x2, ʾǷֱ֧ + //bySupport & 0x4, ʾǷ֧ѹȡ + //bySupport & 0x8, ʾǷֶ֧ + //bySupport & 0x10, ʾ֧ԶSADP + //bySupport & 0x20, ʾ֧Raid + //bySupport & 0x40, ʾ֧IPSAN + //bySupport & 0x80, ʾ֧rtp over rtsp + BYTE byEsataUseage; //EsataĬ;0-Ĭϱݣ1-Ĭ¼ + BYTE byIPCPlug; //0-رռ弴ã1-򿪼弴 + BYTE byStorageMode; //0-ģʽ,1-, 2֡ģʽ, 3-Զ + BYTE bySupport1; //λΪ0ʾ֧֣1ʾ֧ + //bySupport1 & 0x1, ʾǷ֧snmp v30 + //bySupport1 & 0x2, ֻ֧طź + //bySupport1 & 0x4, Ƿֲ֧ȼ + //bySupport1 & 0x8, 豸Ƿֲ֧ʱչ + //bySupport1 & 0x10, ʾǷֶ֧33 + //bySupport1 & 0x20, ʾǷ֧rtsp over http + WORD wDevType;//豸ͺ + BYTE byDevTypeName[DEV_TYPE_NAME_LEN];//豸ͺ + BYTE bySupport2; //չλΪ0ʾ֧֣1ʾ֧ + //bySupport2 & 0x1, ʾǷ֧չOSDַ(ն˺ץĻչ) + BYTE byAnalogAlarmInPortNum; //ģⱨ + BYTE byStartAlarmInNo; //ģⱨʼ + BYTE byStartAlarmOutNo; //ģⱨʼ + BYTE byStartIPAlarmInNo; //IPʼ + BYTE byStartIPAlarmOutNo; //IPʼ + BYTE byHighIPChanNum; //ͨ8λ + BYTE byEnableRemotePowerOn;//Ƿ豸ߵ״̬Զ̿ܣ0-ã1- + WORD wDevClass; //豸౸ĸƷߣ0 1-50 DVR51-100 DVS101-150 NVR151-200 IPC65534 ෽豸ͶӦкźֵ.docx + BYTE byRes2[6]; // +}NET_DVR_DEVICECFG_V40, *LPNET_DVR_DEVICECFG_V40; + +typedef struct +{ + DWORD dwSize; + BYTE sDVRName[NET_DEV_NAME_LEN]; //DVR + DWORD dwDVRID; //DVR ID,ң //V1.4(0-99), V1.5(0-255) + DWORD dwRecycleRecord; //Ƿѭ¼,0:; 1: + //²ɸ + BYTE sSerialNumber[SERIALNO_LEN]; //к + DWORD dwSoftwareVersion; //汾,16λ汾,16λǴΰ汾 + DWORD dwSoftwareBuildDate; //,0xYYYYMMDD + DWORD dwDSPSoftwareVersion; //DSP汾,16λ汾,16λǴΰ汾 + DWORD dwDSPSoftwareBuildDate; // DSP,0xYYYYMMDD + DWORD dwPanelVersion; // ǰ汾,16λ汾,16λǴΰ汾 + DWORD dwHardwareVersion; // Ӳ汾,16λ汾,16λǴΰ汾 + BYTE byAlarmInPortNum; //DVR + BYTE byAlarmOutPortNum; //DVR + BYTE byRS232Num; //DVR 232ڸ + BYTE byRS485Num; //DVR 485ڸ -- + BYTE byNetworkPortNum; //ڸ + BYTE byDiskCtrlNum; //DVR Ӳ̿ + BYTE byDiskNum; //DVR Ӳ̸ + BYTE byDVRType; //DVR, 1:DVR 2:ATM DVR 3:DVS ......-- + BYTE byChanNum; //DVR ͨ + BYTE byStartChan; //ʼͨ,DVS-1,DVR - 1 + BYTE byDecordChans; //DVR · + BYTE byVGANum; //VGAڵĸ -- + BYTE byUSBNum; //USBڵĸ + BYTE byAuxoutNum; //ڵĸ + BYTE byAudioNum; //ڵĸ + BYTE byIPChanNum; //ͨ -- + BYTE byZeroChanNum; //ͨ + BYTE bySupport; //λΪ0ʾ֧֣1ʾ֧֣ + //bySupport & 0x1, ʾǷ֧ + //bySupport & 0x2, ʾǷֱ֧ + //bySupport & 0x4, ʾǷ֧ѹȡ + //bySupport & 0x8, ʾǷֶ֧ + //bySupport & 0x10, ʾ֧ԶSADP + //bySupport & 0x20, ʾ֧Raid + //bySupport & 0x40, ʾ֧IPSAN + //bySupport & 0x80, ʾ֧rtp over rtsp + BYTE byEsataUseage; //EsataĬ;0-Ĭϱݣ1-Ĭ¼ + BYTE byIPCPlug; //0-رռ弴ã1-򿪼弴 + BYTE byStorageMode; //0-ģʽ,1-,2֡ģʽ + BYTE bySupport1; //λΪ0ʾ֧֣1ʾ֧ + //bySupport1 & 0x1, ʾǷ֧snmp v30 + //bySupport1 & 0x2, ֻ֧طź + //bySupport1 & 0x4, Ƿֲ֧ȼ + //bySupport1 & 0x8, 豸Ƿֲ֧ʱչ + //bySupport1 & 0x10, ʾǷֶ֧33 + //bySupport1 & 0x20, ʾǷ֧rtsp over http + WORD wDevType;//豸ͺչ + BYTE byDevTypeName[NET_DEV_TYPE_NAME_LEN];//豸ͺ + BYTE bySupport2; //չλΪ0ʾ֧֣1ʾ֧ + //bySupport2 & 0x1, ʾǷ֧չOSDַ(ն˺ץĻչ) + BYTE byAnalogAlarmInPortNum; //ģⱨĿ + BYTE byStartAlarmInNo; //ģⱨʼ + BYTE byStartAlarmOutNo; //ģⱨʼ + BYTE byStartIPAlarmInNo; //IPʼ + BYTE byStartIPAlarmOutNo; //IPʼ + BYTE byHighIPChanNum; //ͨ8λ + BYTE byEnableRemotePowerOn;//Ƿ豸ߵ״̬Զ̿ܣ0-ã1- + BYTE byRes[256]; // +}NET_DVR_DEVICECFG_V50, *LPNET_DVR_DEVICECFG_V50; +#define MAX_ZEROCHAN_NUM 16 +//ͨѹò +typedef struct tagNET_DVR_ZEROCHANCFG +{ + DWORD dwSize; //ṹ + BYTE byEnable; //0-ֹͣͨ룬1-ʾͨ + BYTE byRes1[3]; // + DWORD dwVideoBitrate; //Ƶ 0- 1-16K() 2-32K 3-48k 4-64K 5-80K 6-96K 7-128K 8-160k 9-192K 10-224K 11-256K 12-320K + // 13-384K 14-448K 15-512K 16-640K 17-768K 18-896K 19-1024K 20-1280K 21-1536K 22-1792K 23-2048K + //λ(31λ)ó1ʾԶ, 0-30λʾֵ(MIN-32K MAX-8192K) + DWORD dwVideoFrameRate; //֡ 0-ȫ; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12; 12-16; 13-20, //V2.014-15, 15-18, 16-22; + BYTE byRes2[32]; // +}NET_DVR_ZEROCHANCFG, *LPNET_DVR_ZEROCHANCFG; + +//ͨŲ +typedef struct tagNET_DVR_ZERO_ZOOMCFG +{ + DWORD dwSize; //ṹ + NET_VCA_POINT struPoint; //е + BYTE byState; //ڵ״̬0-С1-Ŵ + BYTE byPreviewNumber; //ԤĿ,0-1,1-4,2-9,3-16 òֻ + BYTE byPreviewSeq[MAX_WINDOW_V30];//ͨϢ òֻ + BYTE byRes[30]; // +}NET_DVR_ZERO_ZOOMCFG, *LPNET_DVR_ZERO_ZOOMCFG; + +#define DESC_LEN_64 64 +typedef struct tagNET_DVR_SNMPCFG +{ + DWORD dwSize; //ṹ + BYTE byEnable; //0-SNMP1-ʾSNMP + BYTE byRes1[3]; // + WORD wVersion; //snmp 汾 v1 = 1, v2 =2, v3 =3豸Ŀǰ֧ v3 + WORD wServerPort; //snmpϢն˿ڣĬ 161 + BYTE byReadCommunity[NAME_LEN]; //ͬ壬31,Ĭ"public" + BYTE byWriteCommunity[NAME_LEN];//дͬ,31 ֽ,Ĭ "private" + BYTE byTrapHostIP [DESC_LEN_64]; //ipַ֧IPV4 IPV6 + WORD wTrapHostPort; // trap˿ + BYTE byTrapName[NAME_LEN]; + BYTE byRes2[70]; // +}NET_DVR_SNMPCFG, *LPNET_DVR_SNMPCFG; + +typedef struct tagNET_DVR_SNMPv3_USER +{ + BYTE byUserName[NAME_LEN]; // û + BYTE bySecLevel; // ȫ 0- 1-У 2-ȨУ 3-ȨУ + BYTE byAuthtype; // ֤ 0-MD5֤ 1-SHA֤ 2: none + BYTE byPrivtype; // 0: DES; 1: AES; 2: none; + BYTE byRes[5]; + BYTE byAuthpass[PASSWD_LEN]; // ֤ + BYTE byPrivpass[PASSWD_LEN]; // +}NET_DVR_SNMPv3_USER, *LPNET_DVR_SNMPv3_USER; + +// snmpv30 +typedef struct tagNET_DVR_SNMPCFG_V30 +{ + DWORD dwSize; //ṹ + BYTE byEnableV1; //0-SNMP V11-ʾSNMP V1 + BYTE byEnableV2; //0-SNMP V21-ʾSNMP V2 + BYTE byEnableV3; //0-SNMP V31-ʾSNMP V3 + BYTE byRes1[3]; + WORD wServerPort; //snmpϢն˿ڣĬ 161 + BYTE byReadCommunity[NAME_LEN]; //ͬ壬31,Ĭ"public" + BYTE byWriteCommunity[NAME_LEN]; //дͬ,31 ֽ,Ĭ "private" + BYTE byTrapHostIP [DESC_LEN_64]; //ipַ֧IPV4 IPV6 + WORD wTrapHostPort; // trap˿ + BYTE byRes2[2]; + NET_DVR_SNMPv3_USER struRWUser; // дû + NET_DVR_SNMPv3_USER struROUser; // ֻû + BYTE byTrapName[NAME_LEN]; +}NET_DVR_SNMPCFG_V30, *LPNET_DVR_SNMPCFG_V30; + +#define PROCESSING 0 //ڴ +#define PROCESS_SUCCESS 100 // +#define PROCESS_EXCEPTION 400 //쳣 +#define PROCESS_FAILED 500 //ʧ +#define PROCESS_QUICK_SETUP_PD_COUNT 501 //һ3Ӳ + +#define SOFTWARE_VERSION_LEN 48 +#define NET_SDK_DEVICE_MODEL_LEN 24 //豸ͺų +typedef struct tagNET_DVR_SADPINFO +{ + NET_DVR_IPADDR struIP; // 豸IPַ + WORD wPort; // 豸˿ں + WORD wFactoryType; // 豸 + char chSoftwareVersion[SOFTWARE_VERSION_LEN]; + char chSerialNo[16]; // к + WORD wEncCnt; // ͨ + BYTE byMACAddr[MACADDR_LEN]; // MAC ַ + NET_DVR_IPADDR struSubDVRIPMask; // DVR IPַ + NET_DVR_IPADDR struGatewayIpAddr; // + NET_DVR_IPADDR struDnsServer1IpAddr; /* 1IPַ */ + NET_DVR_IPADDR struDnsServer2IpAddr; /* 2IPַ */ + BYTE byDns; + BYTE byDhcp; + BYTE szGB28181DevID[DEV_ID_LEN]; //GB28181Эʱ豸IDIPCGB28181Э + BYTE byActivated;//0-Ч1-Ѽ2-δ + BYTE byDeviceModel[NET_SDK_DEVICE_MODEL_LEN/*24*/];//豸ͺ + BYTE byRes[101]; // ֽ +}NET_DVR_SADPINFO, *LPNET_DVR_SADPINFO; + +#define MAX_SADP_NUM 256 // 豸Ŀ +typedef struct tagNET_DVR_SADPINFO_LIST +{ + DWORD dwSize; // ṹС + WORD wSadpNum; // 豸Ŀ + BYTE byRes[6]; // ֽ + NET_DVR_SADPINFO struSadpInfo[MAX_SADP_NUM]; // +}NET_DVR_SADPINFO_LIST, *LPNET_DVR_SADPINFO_LIST; + +typedef struct tagNET_DVR_SADP_VERIFY +{ + char chPassword[PASSWD_LEN]; + NET_DVR_IPADDR struOldIP; + WORD wOldPort; + BYTE byRes[62]; +}NET_DVR_SADP_VERIFY, *LPNET_DVR_SADP_VERIFY; + +/*******************************ݽӿ begin********************************/ +//ȡ豸Ϣӿڶ +#define DESC_LEN_32 32 //ֳ +#define MAX_NODE_NUM 256 //ڵ + +typedef struct tagNET_DVR_DESC_NODE +{ + int iValue; + BYTE byDescribe[DESC_LEN_32]; //ֶ + DWORD dwFreeSpace; //ȡбר,λΪM + BYTE byRes[12]; // +}NET_DVR_DESC_NODE, *LPNET_DVR_DESC_NODE; + +typedef struct tagNET_DVR_DISKABILITY_LIST +{ + DWORD dwSize; //ṹ + DWORD dwNodeNum; // + NET_DVR_DESC_NODE struDescNode[MAX_NODE_NUM]; // +}NET_DVR_DISKABILITY_LIST, *LPNET_DVR_DISKABILITY_LIST; + +//ݽб +#define BACKUP_SUCCESS 100 // +#define BACKUP_CHANGE_DEVICE 101 //豸豸 + +#define BACKUP_SEARCH_DEVICE 300 //豸 +#define BACKUP_SEARCH_FILE 301 //¼ļ +#define BACKUP_SEARCH_LOG_FILE 302 //־ļ +#define BACKUP_CHANGE_DISK 303 //ڸ + +#define BACKUP_EXCEPTION 400 //쳣 +#define BACKUP_FAIL 500 //ʧ + +#define BACKUP_TIME_SEG_NO_FILE 501 //ʱ¼ļ +#define BACKUP_NO_RESOURCE 502 //벻Դ +#define BACKUP_DEVICE_LOW_SPACE 503 //豸 +#define BACKUP_DISK_FINALIZED 504 //¼̷ +#define BACKUP_DISK_EXCEPTION 505 //¼쳣 +#define BACKUP_DEVICE_NOT_EXIST 506 //豸 +#define BACKUP_OTHER_BACKUP_WORK 507 //ݲڽ +#define BACKUP_USER_NO_RIGHT 508 //ûûвȨ +#define BACKUP_OPERATE_FAIL 509 //ʧ +#define BACKUP_NO_LOG_FILE 510 //Ӳ־ + +//ݹ̽ӿڶ +typedef struct tagNET_DVR_BACKUP_NAME_PARAM +{ + DWORD dwFileNum; //ļ + NET_DVR_FINDDATA_V30 struFileList[MAX_RECORD_FILE_NUM]; //ļб + BYTE byDiskDes[DESC_LEN_32]; //ݴ + BYTE byWithPlayer; //Ƿ񱸷ݲ + BYTE byContinue; /*Ƿ 0 1*/ + BYTE byRes[34]; // +}NET_DVR_BACKUP_NAME_PARAM, *LPNET_DVR_BACKUP_NAME_PARAM; + +typedef struct tagNET_DVR_BACKUP_TIME_PARAM +{ + LONG lChannel; //ʱ䱸ݵͨ + NET_DVR_TIME struStartTime; //ݵʼʱ + NET_DVR_TIME struStopTime; //ݵֹʱ + BYTE byDiskDes[DESC_LEN_32]; //ݴ + BYTE byWithPlayer; //Ƿ񱸷ݲ + BYTE byContinue; //Ƿ 0 1 + BYTE byDrawFrame; //0 ֡ 1 ֡ + BYTE byUseBackCfgParam; //ʹñеIJ0-Ч1-(úͨЧ)2- + DWORD dwStreamType; //ͣλʾ + //&0x1-ʾ + //&0x2-ʾ + //&0x4-ʾ + BYTE byRes[28]; // ֽ +}NET_DVR_BACKUP_TIME_PARAM, *LPNET_DVR_BACKUP_TIME_PARAM; +/********************************* end *******************************************/ + +typedef enum _COMPRESSION_ABILITY_TYPE_ +{ + COMPRESSION_STREAM_ABILITY = 0, //ѹ + MAIN_RESOLUTION_ABILITY = 1, //ѹֱ + SUB_RESOLUTION_ABILITY = 2, //ѹֱ + EVENT_RESOLUTION_ABILITY = 3, //¼ѹֱ + FRAME_ABILITY = 4, //֡ + BITRATE_TYPE_ABILITY = 5, //λ + BITRATE_ABILITY = 6, //λ + THIRD_RESOLUTION_ABILITY = 7, //ѹֱ + STREAM_TYPE_ABILITY = 8, // + PIC_QUALITY_ABILITY = 9, //ͼ + INTERVAL_BPFRAME_ABILITY = 10, //BP֡ + VIDEO_ENC_ABILITY = 11, //Ƶ + AUDIO_ENC_ABILITY = 12, //Ƶ + VIDEO_ENC_COMPLEXITY_ABILITY = 13, //Ƶ븴Ӷ + FORMAT_ABILITY = 14, //װʽ +}COMPRESSION_ABILITY_TYPE; + +//б +typedef struct tagNET_DVR_ABILITY_LIST +{ + DWORD dwAbilityType; // COMPRESSION_ABILITY_TYPE + BYTE byRes[32]; //ֽ + DWORD dwNodeNum; // + NET_DVR_DESC_NODE struDescNode[MAX_NODE_NUM]; // +}NET_DVR_ABILITY_LIST, *LPNET_DVR_ABILITY_LIST; + +#define MAX_ABILITYTYPE_NUM 12 // +// ѹб +typedef struct tagNET_DVR_COMPRESSIONCFG_ABILITY +{ + DWORD dwSize; //ṹ + DWORD dwAbilityNum; //͸ + NET_DVR_ABILITY_LIST struAbilityNode[MAX_ABILITYTYPE_NUM]; // +}NET_DVR_COMPRESSIONCFG_ABILITY, *LPNET_DVR_COMPRESSIONCFG_ABILITY; +/********************************9000RH begin****************************************/ +#define SUPPORT_PD_NUM 16 +#define SUPPORT_ARRAY_NUM 8 +#define SUPPORT_VD_NUM 128 +#define SUPPORT_PD_NUM_ 16 +#define SUPPORT_PD_NUM_PARTTWO 8 + +typedef enum tagRAID_MODE +{ + RAID0 = 1, + RAID1, + RAID10, + RAID1E, + RAID5, + RAID6, + RAID50, + JBOD, + RAID60 +}RAID_MODE; + +typedef enum tagHD_SUPPORT_TYPE +{ + HD_TYPE_SATA = 0x01, + HD_TYPE_PATA = 0x02, + HD_TYPE_SAS = 0x04, + HD_TYPE_ATAPI = 0x08, + HD_TYPE_TAPE = 0x10, + HD_TYPE_SES = 0x20 +}HD_SUPPORT_TYPE; + +// λʾ λΪ0ʾ֧ 1ʾ֧ +typedef enum tagSUPPORT_RAID_TYPE +{ + RAID0_ABILITY = 0x0001, + RAID1_ABILITY = 0x0002, + RAID10_ABILITY = 0x0004, + RAID1E_ABILITY = 0x0008, + RAID5_ABILITY = 0x0010, + RAID6_ABILITY = 0x0020, + RAID50_ABILITY = 0x0040, + JBOD_ABILITY = 0x0080, + RAID60_ABILITY = 0x0100 +}SUPPORT_RAID_TYPE; + +// +typedef struct tagNET_DVR_PHY_DISK_INFO +{ + WORD wPhySlot; // Ӳ̲λ + BYTE byType; // ӲϢ0 ͨ1ȫȱ2-ȱ 3- + BYTE byStatus; // Ӳ״̬ 0- 1- 2-ɾ 3-̶ʧ 4- 5- 6- 7-쳣 8-SMART״̬쳣 9- 10-л,11-SMRӲ̲֧й,0xff- + BYTE byMode[40]; // Ӳ ַ + DWORD dwHCapacity; // 32λ λkb + DWORD dwLCapacity; // 32λ + BYTE byArrrayName[MAX_NAMELEN]; + WORD wArrayID; // ID + BYTE byArrayInformation; // ǷϢ0 1 + BYTE byRes[101]; // ֽ +}NET_DVR_PHY_DISK_INFO, *LPNET_DVR_PHY_DISK_INFO; + +typedef struct tagNET_DVR_PHY_DISK_LIST +{ + DWORD dwSize; + DWORD dwCount; + NET_DVR_PHY_DISK_INFO struPhyDiskInfo[SUPPORT_PD_NUM]; +}NET_DVR_PHY_DISK_LIST, *LPNET_DVR_PHY_DISK_LIST; + +typedef enum tagBGA_TYPE +{ + BGA_REBUILD = 0x01, // ؽ + BGA_CONSISTENCY_FIX = 0x02, // һԼ鲢޸ + BGA_CONSISTENCY_CHECK = 0x04, // һԼ + BGA_INIT_QUICK = 0x08, // ʼ() + BGA_INIT_BACK = 0x10, // ʼ(ȫ) + BGA_MIGRATION = 0x20, // Ǩ + BGA_INIT_FORE = 0x40, // ʼ + BGA_COPYBACK = 0x80 // Ǩ +}BGA_TYPE; + +typedef enum tagBGA_STATE +{ + BGA_STATE_NONE = 0, // ޺̨ + BGA_STATE_RUNNING, // ̨ + BGA_STATE_ABORTED, // ̨ȡ + BGA_STATE_PAUSED // ̨ͣ +}BGA_STATE; +typedef struct tagNET_DVR_BGA_INFO +{ + BYTE byBga; // ̨ + BYTE byBgaState; /*ֵ--̨״̬*/ + WORD wBgaPercentage; /*ֵ--ִ̨аٷֱ*/ + BYTE byRes[4]; // ֽ +}NET_DVR_BGA_INFO, *LPNET_DVR_BGA_INFO; + +// Ϣ +typedef struct tagNET_DVR_ARRAY_INFO +{ + WORD wArrayID; // ID + BYTE byRaidMode; // raidģʽ RAID_MODE + BYTE byStatus; // 0- 1-̶ʧ 2- 3- 4-쳣 5- 6- 7-ɾ 8-SMART״̬쳣 0xff- + DWORD dwHCapacity; // 32λ + DWORD dwLCapacity; // 32λ + DWORD dwHFreeSpace; // ʣռ32λ + DWORD dwLFreeSpace; // ʣռ32λ + BYTE byArrayName[MAX_NAMELEN]; // + BYTE byPDCount; // Ŀ + BYTE bySpareCount; // ȱĿ + BYTE byRes1[2]; + WORD wPDSlots[SUPPORT_PD_NUM]; // + WORD wSparePDSlots[SUPPORT_PD_NUM]; // ȱ + NET_DVR_BGA_INFO struBgaInfo; // ̨״̬ + WORD wPDSlotsPartTwo[SUPPORT_PD_NUM_PARTTWO]; //չ0ʾЧ + WORD wSparePDSlotsPartTwo[SUPPORT_PD_NUM_PARTTWO]; // ȱչ0ʾЧ + BYTE byRes2[48]; // ֽ +}NET_DVR_ARRAY_INFO, *LPNET_DVR_ARRAY_INFO; + + +typedef struct tagNET_DVR_ARRAY_LIST +{ + DWORD dwSize; // ṹС + DWORD dwCount; // и + NET_DVR_ARRAY_INFO struArrayInfo[SUPPORT_ARRAY_NUM]; +}NET_DVR_ARRAY_LIST, *LPNET_DVR_ARRAY_LIST; + +//Ϣ +typedef struct tagNET_DVR_VD_INFO +{ + WORD wSlot; //̲λ + BYTE byStatus; // ״̬0- 1- 2-ɾ 3-̶ʧ 4- 5- 6- 7-쳣 8-SMART״̬쳣 0xff- + BYTE byRaidMode; // Raid ģʽ RAID_MODE + WORD wArrayID; // ID + BYTE byRepair; // ǷҪ޸ 0 Ҫ 1Ҫ + BYTE byUsage; //LUNʹ÷ʽ 0-IPSAN 1-FCSAN 2-DVR 3-NAS 4-¼ + BYTE byArrayName[MAX_NAMELEN]; + BYTE byName[MAX_NAMELEN]; // + DWORD dwHCapacity; // 32λ + DWORD dwLCapacity; // 32λ + DWORD dwHFreeSpace; // ʣռ32λ + DWORD dwLFreeSpace; // ʣռ32λ + NET_DVR_BGA_INFO struBgaInfo; // ̨״̬ + DWORD dwBlockSize; //С洢ԪС + NET_DVR_IPADDR struWarrantIP; // ȨDVRIP + char szArrayGroup[NAME_LEN]; //ʹõ飬ԶŸΪʹĬ + BYTE byRes[20]; +}NET_DVR_VD_INFO, *LPNET_DVR_VD_INFO; + +typedef struct tagNET_DVR_VD_LIST +{ + DWORD dwSize; // ṹС + DWORD dwCount; // ̸ + NET_DVR_VD_INFO struVDInfo[SUPPORT_VD_NUM]; // +}NET_DVR_VD_LIST, *LPNET_DVR_VD_LIST; + +typedef struct tagNET_DVR_ADAPTER_VERSION +{ + WORD wMajorVersion; + WORD wMinorVersion; + WORD wRevisionNumber; + WORD wBuildNumber; +}NET_DVR_ADAPTER_VERSION, *LPNET_DVR_ADAPTER_VERSION; + +typedef struct tagNET_DVR_VD_SLOT +{ + WORD wVDSlot; + BYTE byAlloc; // ǷѾ + BYTE byRes[5]; + DWORD dwHVDSlotSize; // ̿ռС32λ + DWORD dwLVDSlotSize; // ̿ռС32λ +}NET_DVR_VD_SLOT, *LPNET_DVR_VD_SLOT; + +typedef struct tagNET_DVR_ARRAY_SPACE_ALLOC_INFO +{ + BYTE byVDSlotCount; /*current number of slots in DG*/ + BYTE byRes1[3]; // ֽ + NET_DVR_VD_SLOT struVDSlots[SUPPORT_VD_NUM]; +}NET_DVR_ARRAY_SPACE_ALLOC_INFO, *LPNET_DVR_ARRAY_SPACE_ALLOC_INFO; + +typedef struct tagNET_DVR_RAID_ADAPTER_INFO +{ + DWORD dwSize; // ṹС + NET_DVR_ADAPTER_VERSION struVersion; // 汾 + BYTE bySlotCount; //λ + BYTE bySupportMigrate; // Ǩ(1-֧ 0-֧) + BYTE bySupportExpand; // (1-֧ 0-֧) + BYTE bySupportRebuild; // Ƿ֧ؽ (1֧ 0-֧) + WORD wSlotSupportType; // λʾ HD_SUPPORT_TYPE + WORD wSupportRaidType; // ֧Raid λʾ + BYTE byAutoRebuild; // 0 Զؽ 1Զؽ + BYTE byRes[27]; // ֽ +}NET_DVR_RAID_ADAPTER_INFO, *LPNET_DVR_RAID_ADAPTER_INFO; + +typedef struct tagNET_DVR_OPERATE_ARRAY_PARAM +{ + //Ƿһ Ϊһ򴴽ʱʱ֮ҪarrayƣҪ + // 豸д + BYTE byRaidMode; // /ǨʱRaid + BYTE byPDCount; // Ŀ + WORD wArrayID; // ǨƻؽʱҪָID + WORD wPDSlots[SUPPORT_PD_NUM];// + BYTE byName[MAX_NAMELEN]; // array + BYTE byInitMode; //ʼʽ + BYTE byRes1; + WORD wPDSlotsPartTwo[SUPPORT_PD_NUM_PARTTWO]; //Ϣ + BYTE byRes2[2]; +}NET_DVR_OPERATE_ARRAY_PARAM, *LPNET_DVR_OPERATE_ARRAY_PARAM; + + +#define INIT_QUICK 0 /*ٳʼ*/ +#define INIT_FULLFOREGROUND 1 /*ȫʼ(ǰ̨)*/ +#define INIT_FULLBACKGROUND 2 /*ȫʼ(̨)*/ + +typedef struct tagNET_DVR_OPERATE_VD_PARAM +{ + WORD wArrayID; // ID + BYTE bySlot; // ָλ + BYTE byInitType; // ʱʼ 0 - ٳʼ 1 - ǰ̨ȫʼ 2 - ̨ȫʼ + DWORD dwHCapacity; // ̴С32λ + DWORD dwLCapacity; // ̴С32λ + BYTE byName[MAX_NAMELEN]; // + BYTE byRes2[16]; // ֽ +}NET_DVR_OPERATE_VD_PARAM, *LPNET_DVR_OPERATE_VD_PARAM; + + +typedef struct tagNET_DVR_SPARE_DISK_PARAM +{ + WORD wPDSlot; // ̲λ + WORD wArrayID; // + BYTE bySpareType; // ȱ 1-ȫȱ 2 ָ ΪָеʱҪָеID + BYTE byRes[7]; // ֽ +}NET_DVR_SPARE_DISK_PARAM, *LPNET_DVR_SPARE_DISK_PARAM; + +/********************************9000RH End****************************************/ + + +#define MATRIX_MAXDECSUBSYSTEMCHAN 4//Ƶۺƽ̨ϵͳͨ + +//ȡϵͳϢ +typedef struct tagNET_DVR_DECSUBSYSTEMJIONSTATUS +{ + BYTE byJoinStatus;//״̬0-ûй1-Ѿ + BYTE byJoinSubSystem;//ϵͳλ + BYTE byJoinDispNum;//ʾͨ + BYTE byJoinSubWindowNum;//Ӵں + BYTE byRes[4]; +}NET_DVR_DECSUBSYSTEMJIONSTATUS,LPNET_DVR_DECSUBSYSTEMJIONSTATUS; + +typedef struct tagNET_DVR_SINGLESUBSYSTEMJOININFO +{ + BYTE bySubSystemType;//ϵͳͣ0-ޣ1-ϵͳ2-ϵͳ3-ϵͳ4-ϵͳ,5-ϵͳ6-ϵͳ + BYTE byConnectStatus;//ϵͳ״̬1-2-ӶϿ + BYTE byMatrixNum;//Ƶۺƽ̨ţϵͳ34ʱ + BYTE bySubSystemNum;//ϵͳλţ0~79ϵͳ34ʱ + NET_DVR_DECSUBSYSTEMJIONSTATUS struDecSub [MATRIX_MAXDECSUBSYSTEMCHAN]; + BYTE byBindStatus;//״̬0-ûа󶨣1-Ѿ󶨣ƴʱõ + BYTE byRes[7]; +}NET_DVR_SINGLESUBSYSTEMJOININFO,LPNET_DVR_SINGLESUBSYSTEMJOININFO; + +typedef struct tagNET_DVR_ALLDECSUBSYSTEMJOININFO +{ + DWORD dwSize; + NET_DVR_SINGLESUBSYSTEMJOININFO struSingleSubSystemJoinInfo[MAX_SUBSYSTEM_NUM];//80 + BYTE byRes[8]; +}NET_DVR_ALLDECSUBSYSTEMJOININFO, *LPNET_DVR_ALLDECSUBSYSTEMJOININFO; + +//2010-04-13 NAT +typedef struct tagNET_DVR_NATASSOCIATECFG +{ + DWORD dwSize; + NET_DVR_NETCFG_V30 struNatIpAddress[2];//NAT IPַ + BYTE byNATEnable;//ǷNATܣ0-ã0- + BYTE byNATCfgMode; //NATģʽ0-ֶ䣬1-Զ + BYTE byRes[62]; +}NET_DVR_NATASSOCIATECFG, *LPNET_DVR_NATASSOCIATECFG; + +//2010-06-01 Ƶۺƽ̨ +typedef struct tagNET_DVR_TEMPERATUREALARMCFG +{ + BYTE byEnableTemperatureAlarm;//ʹ¶ȳޱ0-1- + BYTE byRes1[3]; + int iTemperatureUpLimited; //ȷСλ1234ʾ¶12.34 + int iTemperatureDownLimited; + NET_DVR_HANDLEEXCEPTION_V30 struTempHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*ʱ*/ + BYTE byRes2[32]; +}NET_DVR_TEMPERATUREALARMCFG, *LPNET_DVR_TEMPERATUREALARMCFG; + +typedef struct tagNET_DVR_BOARDALARMCFG +{ + BYTE byEnablePullAlarm;//Ȳαʹܣ1-0- + BYTE byRes1[3]; + NET_DVR_HANDLEEXCEPTION_V30 struBoardHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*ʱ*/ + BYTE byRes2[32]; +}NET_DVR_BOARDALARMCFG, *LPNET_DVR_BOARDALARMCFG; + + +typedef struct tagNET_DVR_VIDEOPLATFORMALARMCFG +{ + DWORD dwSize; + NET_DVR_TEMPERATUREALARMCFG struTempAlarmCfg; + NET_DVR_BOARDALARMCFG struBoardAlarmCfg; + NET_DVR_HANDLEEXCEPTION_V30 struHandleException[MAX_EXCEPTIONNUM];//0-쳣1-ϵͳ쳣2-IPַͻ3-߶ϣ4-Ƿʣ5-쳣6-ǰ쳣 + BYTE byRes[32]; +}NET_DVR_VIDEOPLATFORMALARMCFG,*LPNET_DVR_VIDEOPLATFORMALARMCFG; +//2010-05-17 +typedef struct tagNET_DVR_CODESPLITTERASSOCIATE +{ + DWORD dwSize; + NET_DVR_IPADDR struIP; /*IPַ*/ + WORD wPort; //˿ں + BYTE byRes1[6]; + BYTE sUserName[NAME_LEN]; /* û32 */ + BYTE sPassword[PASSWD_LEN]; /* 16*/ + BYTE byChan;//ͨ + BYTE byRes2[15]; +} NET_DVR_CODESPLITTERASSOCIATE, *LPNET_DVR_CODESPLITTERASSOCIATE; + +//2010-06-01 Ƶۺƽ̨ϴṹ +typedef struct tagNET_DVR_MATRIXSUBSYSTEMINFO +{ + BYTE byMatrixNum;//Ƶۺƽ̨ + BYTE bySubSystemNum;//ϵͳλ + BYTE byRes [14]; +} NET_DVR_MATRIXSUBSYSTEMINFO, *LPNET_DVR_MATRIXSUBSYSTEMINFO; + +typedef struct tagNET_DVR_VIDEOPLATFORM_ALRAMINFO +{ + DWORD dwSize; //ṹС + BYTE byAlarmType; // 0-γӰ壬1-Ӱ,2-¶ȳޱ3-¶ȳޱ4-״̬쳣5-ϵͳ쳣,6-Ƿʣ7-쳣,8-ǰ쳣 + BYTE byBoardNum; //Ӱţ1B10ֶָ֧ΣЧΪ0xff + BYTE byRes1[2]; + BYTE bySubSystemChan[8]; //Ӱλ,һӰ8ϵͳֱӦIJλţϵͳ쳣ʱbySubSystemChan[0]ʾӦϵͳ + int iTemperature; //¶ȳޱʱã¶ֵ + BYTE byMainboardSeq;//¶ȳޱʱã0-壬1- + BYTE byRes2[3]; + BYTE byFanSequence[32];//쳣ȣbyFanSequence[i] = 1ʾi+1쳣byFanSequence[i] = 0ʾi+1 + NET_DVR_MATRIXSUBSYSTEMINFO struInputNote;// 쳣ʱʹã + NET_DVR_MATRIXSUBSYSTEMINFO struOutputNote;//쳣ʱʹã + BYTE byRes3[68]; +}NET_DVR_VIDEOPLATFORM_ALRAMINFO,*LPNET_DVR_VIDEOPLATFORM_ALRAMINFO; + +/***************************ѶDVR begin *****************************/ +#define MAX_INQUEST_PIP_NUM 3 //ͨʾĻлĿ +#define MAX_INQUEST_CDRW_NUM 4 //¼Ŀ +#define MAX_INQUEST_PIP_NUM_EX 16 //Ѷл + +typedef struct +{ + DWORD dwSize; + DWORD dwNum; //¼ + DWORD dwRwSelectPara[MAX_CHANNUM_V30];// Ƿѡиù + DWORD dwModeSelect; //0ʾѭ¼ģʽ 1ʾп¼ģʽ(Ĭģʽ) + BYTE byRes[24]; // + DWORD dwStartCDRW; //DVR Ѿʼ¼ + DWORD dwHdExcp; //Ӳ + DWORD dwInterval; //ʱ10(0)20(1)30(2) + char sLable[64]; // +}NET_DVR_INQUEST_CDRW_CFG, *LPNET_DVR_INQUEST_CDRW_CFG; + +typedef struct +{ + char sFileName[36]; //ļ + DWORD dwFileLen; //ļ +}NET_DVR_INQUEST_FILEINFO, *LPNET_DVR_INQUEST_FILEINFO; + +typedef struct +{ + DWORD dwFileNum; // Ҫ¼ɾļһ20 + NET_DVR_INQUEST_FILEINFO struFileInfo[MAX_RECORD_FILE_NUM]; + //ڱʾ¼ļʱʹ + DWORD dwCDIndex; //¼1:ѡ1ſ¼2:ѡ2ſ¼ 3:3ſ¼,4:4ſ¼,5:п¼ + DWORD bFinalizeDisc; // 0=¼֮󲻷̣1=¼֮ +}NET_DVR_INQUEST_FILES, *LPNET_DVR_INQUEST_FILES; + +typedef struct +{ + DWORD dwEnable; //¼״̬ǷЧ,0-Ч,1-Ч + DWORD dwStatus; /* dwType=0ʱ + 0-1-޹̻쳣, + dwType=12ʱ + 0-¼1-޹̻쳣 + 2-ѷ(81֧)3-̿ռ䲻㣬 + 4-쳣Ѷֹ(81֧) + dwType=3ʱ + 0-¼1-޹̻쳣 + 2-ѷ(81֧)3-̿ռ䲻 + dwType=4ʱ + 0-¼1-޹̻쳣 + 2-ѷ(81֧)3-̿ռ䲻 + dwType=5ʱ, + 0- 1-޹̻쳣, + 2-ѷ(81֧) + dwType=67ʱ, + 0-¼, 1-޹̻쳣, + 2-ѷ(81֧), 3-̿ռ䲻*/ + DWORD dwVolumn; //,λM + DWORD dwFreeSpace; //ʣ,λM + DWORD dwTimeLeft; // ʣʱ䣬λ + BYTE byCDType; // + BYTE byRes[3]; //ֽ +}NET_DVR_INQUEST_CDRW, *LPNET_DVR_INQUEST_CDRW; + +typedef struct +{ +/*״̬0-Ѷʼ +1-Ѷп¼2-Ѷֹͣ +3-¼Ѷļ, +4-(º󱸷ݺͱر) +5- +6-ʼӲ + 7-ָѶ*/ + DWORD dwType; + NET_DVR_INQUEST_CDRW strCDRWNum[MAX_INQUEST_CDRW_NUM]; //0ʾ¼1 + NET_DVR_TIME_EX struInquestStartTime; //Ѷʼʱ + BYTE byRes[16]; // +}NET_DVR_INQUEST_CDRW_STATUS, *LPNET_DVR_INQUEST_CDRW_STATUS; + +typedef struct +{ + BYTE byPipChan; //лʾͨ 0xFFر + BYTE byRes[3]; //ֽ + WORD wTopLeftX; //лx + WORD wTopLeftY; //лY +}NET_DVR_INQUEST_PIP_PARAM, *LPNET_DVR_INQUEST_PIP_PARAM; + +typedef struct +{ + BYTE byBaseChan; //ʾлڵͨ + BYTE byBackChan; //ʾлͨ + BYTE byPIPMode; /*Ƿ, + 0 ǰС + 1 ǰ1С + 2 ǰ2С + 3 ǰ3С + */ + BYTE byRes; //ֽ + NET_DVR_INQUEST_PIP_PARAM strPipPara[MAX_INQUEST_PIP_NUM]; //λõIJ +}NET_DVR_INQUEST_PIP_STATUS, *LPNET_DVR_INQUEST_PIP_STATUS; + +//V40չлչΪ32 +typedef struct tagNET_DVR_INQUEST_PIP_PARAM_V40 +{ + BYTE byPipChan; /*лʾͨ 0xFFر*/ + BYTE byRes1[3]; + WORD wTopLeftX; /*лx*/ + WORD wTopLeftY; /*лY*/ + WORD wHeight; /*лĸ */ + WORD wWidth; /*лĿ */ + BYTE byRes2[32]; +}NET_DVR_INQUEST_PIP_PARAM_V40, *LPNET_DVR_INQUEST_PIP_PARAM_V40; + +typedef struct tagNET_DVR_INQUEST_PIP_STATUS_V40 +{ + NET_DVR_STRUCTHEAD struStructHead; + BYTE byBaseChan; /*ʾлڵͨ*/ + BYTE byBackChan; /*ʾлͨ*/ + BYTE byPIPMode; /*Ƿ, 0 ǰС + 1 ǰ1С + 2 ǰ2С + 3 ǰ3С + 4 ǰ4С + 5 ǰ5С + 6 ǰ6С + 7 ǰ7С + 8 ǰ8С + 9 ǰ9С + 255 ǰڹرԤ*/ + BYTE byPipCount; /*Сĸ*/ + BYTE byPicShowMode; /*ʾģʽ0-л1-2-ƴ*/ + BYTE byRes[31]; /**/ + NET_DVR_INQUEST_PIP_PARAM_V40 strPipPara[MAX_INQUEST_PIP_NUM_EX]; /*λõIJ*/ +}NET_DVR_INQUEST_PIP_STATUS_V40, *LPNET_DVR_INQUEST_PIP_STATUS_V40; + +typedef struct +{ + BYTE sSecretKey[16]; /*Կ*/ + BYTE byRes[64]; /*ֽ*/ +}NET_DVR_INQUEST_SECRET_INFO, *LPNET_DVR_INQUEST_SECRET_INFO; + + +/***************************ѶDVR end *****************************/ + + +/********************************ӿڲṹ(end)*********************************/ +#define MAX_BIGSCREENNUM 100//ƴ + +typedef struct tagNET_DVR_SINGLESCREENCFG +{ + BYTE byScreenSeq;//Ļţ0xffʾô,64-Tһʾ + BYTE bySubSystemNum;//ϵͳλ,ֵû + BYTE byDispNum;//ϵͳ϶Ӧʾͨţ64-Tиֵʾʾͨ + BYTE byRes[9]; +}NET_DVR_SINGLESCREENCFG, *LPNET_DVR_SINGLESCREENCFG; + +typedef struct tagNET_DVR_BIGSCREENCFG +{ + DWORD dwSize; + BYTE byEnable;//ƴʹܣ0-ʹܣ1-ʹ + BYTE byModeX;/*ƴģʽ*/ + BYTE byModeY; + BYTE byMainDecodeSystem;//ۺƽ̨Ľиֵʾλţ64-Tиֵʾͨ + BYTE byMainDecoderDispChan;//ʾͨţ1.1netra汾netraʾܹͨΪ64-TиֵЧ + BYTE byVideoStandard; //ÿʽͬ 1:NTSC,2:PAL + BYTE byRes1[2]; + DWORD dwResolution; //ÿֱͬ + //ƴӴĻϢ + NET_DVR_SINGLESCREENCFG struFollowSingleScreen[MAX_BIGSCREENNUM]; + //ʼΪ׼ + WORD wBigScreenX; //ڵǽʼX + WORD wBigScreenY; //ڵǽʼY + BYTE byRes2[12]; +}NET_DVR_BIGSCREENCFG, *LPNET_DVR_BIGSCREENCFG; + + +#define DECODEPIC_LEFTADJUST 1 /*ͼ*/ +#define DECODEPIC_RIGHTADJUST 2 /*ͼ*/ +#define DECODEPIC_UPADJUST 3 /*ͼ*/ +#define DECODEPIC_DOWNADJUST 4 /*ͼ*/ +#define DECODEPIC_REDUCEADJUST 5 /*ͼС*/ +#define DECODEPIC_FULL_SCREEN_ADJUST 6 /*ͼȫ*/ +#define DECODEPIC_CANCEL_FULL_SCREEN_ADJUST 7 /*ͼȡȫʾ*/ +#define DECODEPIC_AUTOADJUST 8 /* ͼԶ */ +#define DECODEPIC_HEIGHTADJUST 9 /* ͼ߶ȵ */ +#define DECODEPIC_WIDTHADJUST 10 /* ͼȵ */ + +#define MAX_UNITEDMATRIX_NUM 8//Ƶۺƽ̨ +#define MAX_SUBDOMAIN_NUM 4// +typedef struct tagNET_DVR_SUBSERVERINFO +{ + BYTE bySequence;//ţţƵۺƽ̨ƽ̨ţ0ʾ޴ƽ̨\ + BYTE byBelongSubDomain;//ƽ̨Чʾĸ + BYTE byRes1[6]; + DWORD dwMaxIpcNums;//ӵIPC + NET_DVR_IPADDR struSubMatrixIP; /*IPַ*/ + WORD wSubMatrixPort; /*ϵͳ˿ں*/ + BYTE byRes2[6]; +}NET_DVR_SUBSERVERINFO, *LPNET_DVR_SUBSERVERINFO; + +typedef struct tagNET_DVR_UNITEDMATRIXINFO +{ + DWORD dwSize; + NET_DVR_SUBSERVERINFO struDomainInfo; + NET_DVR_SUBSERVERINFO struSubDomainInfo[MAX_SUBDOMAIN_NUM];//Ϣ + NET_DVR_SUBSERVERINFO struMatrixInfo[MAX_UNITEDMATRIX_NUM];//Ƶۺƽ̨Ϣ + BYTE byRes[32]; +}NET_DVR_UNITEDMATRIXINFO, *LPNET_DVR_UNITEDMATRIXINFO; + +typedef struct tagNET_DVR_REGCALLBACKPARAM +{ + char sDeviceID[NAME_LEN];//豸ID + char sPassword[PASSWD_LEN]; + BYTE sSerialNumber[SERIALNO_LEN]; /* 豸к */ + DWORD dwDeviceType;//豸 + BYTE nStatus;// ״̬0ߣ1ߣ + /* net type, 0: unknow; 1: 2G wireless networks; 2: 3G wireless networks; 3: line networks */ + BYTE byNetType; + BYTE byRes[14]; +}NET_DVR_REGCALLBACKPARAM, *LPNET_DVR_REGCALLBACKPARAM; + +typedef struct tagNET_DVR_LOGONREPONSEPARAM +{ + //ʱλ, 5ı180ڡĬ15롣 + WORD wHeartbeatTime; + BYTE byOvertimes;// 豸ʱĬ3 + BYTE byRes[13]; +}NET_DVR_LOGONREPONSEPARAM, *LPNET_DVR_LOGONREPONSEPARAM; + + +typedef struct tagNET_DVR_PREVIEWPARAM +{ + BYTE byTransProtol; //Э飬0-TCP, 1-UDP + BYTE byTransMode; ///* ģʽ 0 1*/ + NET_DVR_IPADDR struCuIp; //CUIPַ + WORD wPort;/*CU˿*/ + WORD wUdpPort; + BYTE bySupportQos;//ǷQOS,1-ã0- + //ǷNATԤ0-1-(ֻbyTransModeֶ) + BYTE byNatRequest; + BYTE byPreviewType;// 0-ͨԤ 1-ʱԤ + BYTE byRes[7]; +}NET_DVR_PREVIEWPARAM, *LPNET_DVR_PREVIEWPARAM; +typedef struct tagNET_DVR_DEVICENATINFO +{ + NET_DVR_IPADDR struPuIp; //PUIPַ + WORD wOuterPort;/*PU˿*/ + WORD wInterPort;//PUƵıض˿ + DWORD nSessionID;//CMSsessionID + BYTE byRes[4]; +}NET_DVR_DEVICENATINFO, *LPNET_DVR_DEVICENATINFO; + + +typedef struct tagNET_DVR_PREVIEWCALLBACKPARAM +{ + LONG lChannel; + BYTE nLinkProtocol; + BYTE nTransMode; + BYTE byPreviewType; //0-ͨԤ 1-ʱԤ + BYTE byRes[5]; + DWORD nSessionID;//CMSsessionID +}NET_DVR_PREVIEWCALLBACKPARAM, *LPNET_DVR_PREVIEWCALLBACKPARAM; + +//ط +typedef struct tagNET_DVR_PLAYBACKREQUESTPARAM +{ + BYTE byPlayBackMode; /* طģʽ 1 2ʱ */ + BYTE byRes1[3]; + union + { + char sFileName [100]; /* طŵļ */ + struct + { + LONG lChannel; /*طŵͨ*/ + NET_DVR_TIME struStartTime; /* ʱطŵĿʼʱ */ + NET_DVR_TIME struStopTime; /* ʱطŵĽʱ */ + BYTE byRes[48]; + }struPlayBackbyTime; + }playbackmode; + NET_DVR_IPADDR struCuIp; //CUIPַ + WORD wPort;/*CU˿*/ + BYTE byRes2[2]; + DWORD dwSessionID;//CMSsessionID, + BYTE byRes3[16]; +}NET_DVR_PLAYBACKREQUESTPARAM, *LPNET_DVR_PLAYBACKREQUESTPARAM; + +//2010-10-06 +typedef struct tagNET_DVR_PLAYBACKCALLBACKPARAM +{ + BYTE byPlayBackMode; /* طģʽ 1 2ʱ */ + BYTE byRes1[3]; + union + { + char sFileName [100]; /* طŵļ */ + struct + { + LONG lChannel; /*طŵͨ*/ + NET_DVR_TIME struStartTime; /* ʱطŵĿʼʱ */ + NET_DVR_TIME struStopTime; /* ʱطŵĽʱ */ + BYTE byRes[48]; + }struPlayBackbyTime; + }playbackmode; + DWORD nSessionID;//CMSsessionID + BYTE byRes2[44]; +}NET_DVR_PLAYBACKCALLBACKPARAM, *LPNET_DVR_PLAYBACKCALLBACKPARAM; + +typedef struct tagNET_DVR_VOICEREQUESETPARAM +{ + BYTE nVoiceChannel; //Խͨ + BYTE byRes1[3]; + NET_DVR_IPADDR struCuIp; //CUIPַ + WORD wPort;/*CU˿*/ + BYTE byRes2[10]; +}NET_DVR_VOICEREQUESTPARAM, *LPNET_DVR_VOICEREQUESTPARAM; + +typedef struct tagNET_DVR_ALARMSETUPREQUESETPARAM +{ + NET_DVR_IPADDR struCuIp; //CUIPַ + WORD wPort;/*CU˿*/ + BYTE byRes[2]; +}NET_DVR_ALARMSETUPREQUESTPARAM, *LPNET_DVR_ALARMSETUPREQUESTPARAM; + +typedef struct tagNET_DVR_GPSALARMINFO +{ + BYTE byDeviceID[NAME_LEN];/*豸ID*/ + NET_DVR_TIME_EX struGpsTime; /*GPSϴʱ*/ + DWORD dwLongitude; /* */ + DWORD dwLatitude; /* γ*/ + int iTimeZone; /*ʱ÷ʾ+601+4808-60-4808ֶκGPSTimeһʱ*/ + DWORD dwDirection; /*=ʵʷԶΪλΪ˳ʱ뷽㣩*100*/ + WORD wSatellites; /**/ + WORD wPrecision; /**/ + DWORD dwHeight; /*߶:ףԤ*/ + DWORD dwGPSSeq; /*GPSţGPSʱҪõ*/ + WORD wSpeed;//ٶȣλkm/h + /* direction[0]:'E'or'W'(/), direction[1]:'N'or'S'(γ/γ)*/ + char sDirection[2]; + BYTE byLocateMode;/*λģʽ(ֵ0)1,λ,2,3,,4,Ч65,Чλ78Чλ*/ + BYTE byRes[3]; +}NET_DVR_GPSALARMINFO, *LPNET_DVR_GPSALARMINFO; + +//ͼƬϢϴ +typedef struct tagNET_DVR_PICINFO +{ + DWORD dwSize; //ṹ + BYTE byChanIndex; //ͨ + BYTE byRes1[3]; // + BYTE byDeviceID[NAME_LEN];/*豸ID*/ + BYTE byAbsTime[32]; //ʱ, yyyymmddhhmmssxxx, + DWORD dwPicLen; //ͼƬ + BYTE byRes2[32]; + BYTE *pPicBuffer; +}NET_DVR_PICTUREINFO, *LPNET_DVR_PICTUREINFO; + +//ƽ̨ +typedef struct tagNET_DVR_CMSPARAM +{ + DWORD dwSize; + NET_DVR_IPADDR struCmsAddr; + WORD wCmsPort; + BYTE byRes1[2]; + BYTE sDeviceID[NAME_LEN]; + BYTE byPassword[PASSWD_LEN]; + NET_DVR_IPADDR struPicServerAddr; + WORD wPicServerPort; + WORD wCmsUdpPort;//CMSUDPѯĶ˿ + BYTE byRes2[12]; +}NET_DVR_CMSPARAM, *LPNET_DVR_CMSPARAM; + +///Ź +#define DIALPASSWD_LEN 32 //볤 + +typedef struct tagNET_DVR_QOSPARAM +{ + WORD wMaxBitUL; /* the maximum number of kbits/s in up-link traffic */ + WORD wMaxBitDL; /* the maximum number of kbits/s in down-link traffic */ + BYTE byTrafficClass; /* 0: conversationnal; 1: streaming; 2: interactive;3: background; 4: subscribed value(default) */ + BYTE byRes[7]; +}NET_DVR_QOSPARAM, *LPNET_DVR_QOSPARAM; + + +typedef struct tagNET_DVR_PPPDPARAM +{ + BYTE byDialNum[NAME_LEN]; /* dial number, eg. "#777" */ + BYTE byUserName[NAME_LEN]; /* user name, eg. "card" */ + BYTE byPassword[DIALPASSWD_LEN]; /* password, eg. "card" */ + BYTE byApn[NAME_LEN]; /* access point name, eg. "cmnet" */ + NET_DVR_IPADDR struLocalIp;/* local IP address */ + NET_DVR_IPADDR struRemoteIp;/* remote IP address */ + WORD wMtuSize; /* max transfer unit of ppp interface */ + BYTE byVerifyProtocal; /* IPCP verify protocal: 0: auto; 1: CHAP; 2: PAP */ + BYTE byRes[25]; +}NET_DVR_PPPDPARAM, *LPNET_DVR_PPPDPARAM; + +#define MAX_PHONE_NUM 32//볤 + +typedef struct tagNET_DVR_DIALPARAM +{ + DWORD dwSize; + BYTE bEnable3G; /* 0: disable; 1: enable 3g */ + BYTE byDialMethod; /* dial methold: 0: auto dial; 1: manual dial; */ + BYTE bySwitchMethod; /* switch methold: 0: auto switch;13Gȣ2: manual switch to 2G; 3: manual switch to 3G; */ + BYTE byEnaAlarmInDial; /* ʹܱ봥; 0: disable; 1: enable */ + BYTE byRes1[10]; + WORD wOffLineTime; /* auto off line when no connection exist,λӣΧ5~65535 */ + NET_DVR_PPPDPARAM struPppdParam; + NET_DVR_QOSPARAM struQosParam; + BYTE byUimNumber[MAX_PHONE_NUM]; + BYTE byRes2[24]; +}NET_DVR_DIALPARAM, *LPNET_DVR_DIALPARAM; + +typedef struct tagNET_DVR_DIALREQUEST +{ + BYTE byConnNum; /**/ + BYTE byNetType; /* ָijĬϲŲʱ˲ûá0Զ1CDMA2EVDO3WCDMA4TD-SCDMA */ + BYTE byRes[6]; +} NET_DVR_DIALREQUEST, *LPNET_DVR_DIALREQUEST; + + +/* UIM card information */ +typedef enum +{ + UIM_UNKNOWN = 0, + UIM_VALID = 1, + UIM_NOVALID = 4, + UIM_ROAM = 11, + UIM_NOEXIST = 255 +}UIM_INFO; + +/* real 3g mode */ +typedef enum +{ + /* evdo */ + RMODE_CDMA1X = 12, + RMODE_EVDO = 14, + RMODE_CDMAHYBRID = 18, + /* wcdma */ + RMODE_GSM = 21, + RMODE_GPRS = 22, + RMODE_EDGE = 23, + RMODE_WCDMA = 24, + RMODE_HSDPA = 25, + RMODE_HSUPA = 26, + RMODE_HSPA = 27, + /* tdscdma */ + RMODE_TGSM = 31, + RMODE_TGPRS = 32, + RMODE_TEDGE = 33, + RMODE_TDSCDMA = 34, + RMODE_TDHSDPA = 35, + RMODE_TDHSUPA = 36, + RMODE_TDHSPA = 37 +}REAL_MODE; + +typedef struct tagNET_DVR_DIALSTATUS +{ + BYTE byRealMode; /* REAL_MODE ,real 3g mode networks */ + BYTE byUimCard; /* UIM_INFO ,UIM card information */ + BYTE byRes1[6]; + DWORD dwSignal; /* signal RSSI */ + DWORD dwDialStatus; /* dial status */ + NET_DVR_IPADDR struLocalIp; /* wireless networks IP address */ + NET_DVR_IPADDR struRemoteIp; /* wireless networks gateway */ + NET_DVR_IPADDR struNetMask; /* wireless networks netmask */ + NET_DVR_IPADDR struDns; /* wireless networks DNS */ + BYTE byRes2[16]; +}NET_DVR_DIALSTATUS, *LPNET_DVR_DIALSTATUS; + +//Ź +#define MAX_ALLOWLIST_NUM 8 // +#define NET_SDK_MAX_ALLOWLIST_NUM_32 32 // + +#define HARDDISKFULL_EXCEPTION 0x0 /*Ӳ*/ +#define HARDDISKERROR_EXCEPTION 0x1 /*Ӳ̴*/ +#define ETHERNETBROKEN_EXCEPTION 0x2 /*߶*/ +#define IPADDRCONFLICT_EXCEPTION 0x3 /*IPַͻ*/ +#define ILLEGALACCESS_EXCEPTION 0x4 /*Ƿ*/ +#define VI_EXCEPTION 0x5 /*Ƶź쳣*/ +#define VS_MISMATCH_EXCEPTION 0x6 /*/Ƶʽƥ */ +#define VIDEOCABLELOSE_EXCEPTION 0x7 /*Ƶź*/ +#define AUDIOCABLELOSE_EXCEPTION 0x8 /*Ƶź*/ +#define ALARMIN_EXCEPTION 0x9 /**/ +#define MASKALARM_EXCEPTION 0xa /*ڵ*/ +#define MOTDET_EXCEPTION 0xb /*ƶ*/ +#define RECORDING_EXCEPTION 0xc /*¼쳣*/ +#define WIRELESS_EXCEPTION 0xd /*PIR*/ +#define PIR_EXCEPTION 0xe /*߱*/ +#define CALLHELP_EXCEPTION 0xf /*ȱ*/ + +#define AUDIO_DETECTION_EXCEPTION 0x10 /*Ƶ쳣ⱨ*/ +#define SCENECHANGE_DETECTION_EXCEPTION 0x11 /*ⱨ*/ +#define DEFOCUS_DETECTION_EXCEPTION 0x12 /*齹ⱨ*/ +#define FACE_DETECTION_ENTRANCE_EXCEPTION 0x13 /*ⱨ*/ +#define LINE_DETECTION_ENTRANCE_EXCEPTION 0x14 /*Խⱨ*/ +#define FIELD_DETECTION_ENTRANCE_EXCEPTION 0x15 /*ⱨ*/ +#define REGION_EXITING_EXCEPTION 0x16 /*뿪ⱨ*/ +#define REGION_ENTRANCE_EXCEPTION 0x17 /*򱨾*/ +#define LOITERING_EXCEPTION 0x18 /*Աǻⱨ*/ +#define GROUP_EXCEPTION 0x19 /*Աۼⱨ*/ +#define RAPIDMOVE_EXCEPTION 0x1a /*ƶⱨ*/ +#define PARKING_EXCEPTION 0x1b /*ͣⱨ*/ +#define UNATTENDEDBAGGAGE_EXCEPTION 0x1c /*Ʒⱨ*/ +#define ATTENDEDBAGGAGE_EXCEPTION 0x1d /*Ʒȡⱨ*/ +#define DATATRAFFIC_EXCESS 0x1e /**/ +#define VOLTAGEINSTABLE_EXCEPTION 0x1f /*Դѹ쳣*/ +#define ALL_EXCEPTION 0xff /*¼¼ʽжǷ*/ + + +#define PHONECFG_RECEIVE_SMS 0x0 /* ֽ֧ձ */ +#define PHONECFG_SMS_CONTROL 0x1 /* ֶ֧ſ */ +#define PHONECFG_CALL_CONTROL 0x2 /* ֺ֧п */ +#define PHONECFG_SMS_REBOOT 0x3 /*ֶ֧*/ +#define PHONECFG_DOOR_CONTROL 0x4 /* ֧Ų*/ +#define PHONECFG_SMS_GET_DAIL_STATUS 0x5 /* ֶ֧Żȡ״̬*/ + + +typedef struct tagNET_DVR_PHONECFG +{ + BYTE byAllowList[MAX_PHONE_NUM]; + BYTE byPhonePerssion[32]; /*ֽڱʾǷʹܸúijܣλĺ + PHONECFG_RECEIVE_SMSȶ */ + BYTE byAlarmHandler[32]; /*ֽڱʾǷʹܶij͵Ķŷ*/ + BYTE byRes[128]; +} NET_DVR_PHONECFG, *LPNET_DVR_PHONECFG; + +typedef struct tagNET_DVR_SMSRELATIVEPARAM +{ + DWORD dwSize; + BYTE bEnableSmsAlarm; /* 0: disable; 1: enable 3g */ + BYTE byRes1[7]; + NET_DVR_PHONECFG struAllowList[MAX_ALLOWLIST_NUM]; + BYTE byRes2[32]; +}NET_DVR_SMSRELATIVEPARAM, *LPNET_DVR_SMSRELATIVEPARAM; + +typedef struct tagNET_DVR_PHONECFG_V50 +{ + BYTE byAllowList[MAX_PHONE_NUM]; + BYTE byPhonePerssion[32]; /*ֽڱʾǷʹܸúijܣλĺ + PHONECFG_RECEIVE_SMSȶ */ + BYTE byAlarmHandler[32]; /*ֽڱʾǷʹܶij͵Ķŷ(Žʱò)*/ + BYTE byAcsPassword[16]; /**/ + BYTE byName[NAME_LEN/*32*/]; /**/ + BYTE byRes[80]; +} NET_DVR_PHONECFG_V50, *LPNET_DVR_PHONECFG_V50; + +typedef struct tagNET_DVR_SMSRELATIVEPARAM_V50 +{ + DWORD dwSize; + BYTE bEnableSmsAlarm; /* 0: disable; 1: enable 3g */ + BYTE byRes1[7]; + NET_DVR_PHONECFG_V50 struAllowList[NET_SDK_MAX_ALLOWLIST_NUM_32]; + BYTE byRes2[32]; +}NET_DVR_SMSRELATIVEPARAM_V50, *LPNET_DVR_SMSRELATIVEPARAM_V50; + +#define NET_SDK_MONITOR_ID_LEN 64 //ID + +typedef struct tagNET_DVR_ACS_EVENT_COND +{ + DWORD dwSize; + DWORD dwMajor; //ͣο¼ϴ궨壬0-ȫ + DWORD dwMinor; //ͣο¼ϴ궨壬0-ȫ + NET_DVR_TIME struStartTime; //ʼʱ + NET_DVR_TIME struEndTime; //ʱ + BYTE byCardNo[ACS_CARD_NO_LEN]; // + BYTE byName[NAME_LEN]; //ֿ + BYTE byPicEnable; //ǷͼƬ0-ͼƬ1-ͼƬ + BYTE byTimeType; //ʱͣ0-豸ʱ䣨Ĭϣ1-UTCʱ䣨struStartTimestruEndTimeʱ䣩 + BYTE byRes2[2]; // + DWORD dwBeginSerialNo; //ʼˮţΪ0ʱĬȫ + DWORD dwEndSerialNo; //ˮţΪ0ʱĬȫ + DWORD dwIOTChannelNo; //IOTͨţ0-Ч + WORD wInductiveEventType; //¼ͣ0-Чֵμ2.2½ڣͻжϸֵΪ0ֵ󣬱ͨ¼֣ͨԭбͣdwMajordwMinor + BYTE bySearchType; //ʽ0-1-¼ԴʱͨΪƵͨţ2-ID + BYTE byEventAttribute; //¼ԣ0-δ壬1-Ϸ¼2- + char szMonitorID[NET_SDK_MONITOR_ID_LEN/*64*/]; //ID豸кšͨ͡ɣŽ㣺豸к+DOOR+űţ + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID + BYTE byRes[140]; // +}NET_DVR_ACS_EVENT_COND, *LPNET_DVR_ACS_EVENT_COND; + +typedef struct tagNET_DVR_ACS_EVENT_DETAIL +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //ţmacַΪ0Ч + BYTE byCardType; //ͣ1-ͨ2-Ⱥ忨3-ֹ4-Ѳ5-вȿ6-7-8-Ϊ0Ч + BYTE byAllowListNo; //,1-8Ϊ0Ч + BYTE byReportChannel; //ϴͨ1-ϴ2-1ϴ3-2ϴΪ0Ч + BYTE byCardReaderKind; //һ࣬0-Ч1-IC2-֤3-ά,4-ָͷ + DWORD dwCardReaderNo; //ţΪ0Ч + DWORD dwDoorNo; //űţ¥ţΪ0Ч + DWORD dwVerifyNo; //ؿ֤ţΪ0Ч + DWORD dwAlarmInNo; //ţΪ0Ч + DWORD dwAlarmOutNo; //ţΪ0Ч + DWORD dwCaseSensorNo; //¼ + DWORD dwRs485No; //RS485ͨţΪ0Ч + DWORD dwMultiCardGroupNo; //Ⱥ + WORD wAccessChannel; //Աͨ + BYTE byDeviceNo; //豸ţΪ0ЧЧΧ1-255 + BYTE byDistractControlNo;//ֿţΪ0Ч + DWORD dwEmployeeNo; //ţΪ0Ч + WORD wLocalControllerID; //͵ؿţ0-Ž1-64͵ؿ + BYTE byInternetAccess; //ID1-1,2-2,3-1 + BYTE byType; //ͣ0:ʱ,1-24Сʱ,2-ʱ ,3-ڲ4-Կ׷ 5-𾯷 6-ܽ 7-24Сʱ 8-24Сʱ9-24Сʱ𶯷,10-Žŷ11-Žŷ 0xff- + BYTE byMACAddr[MACADDR_LEN]; //ַΪ0Ч + BYTE bySwipeCardType;//ˢͣ0-Ч1-ά + BYTE byEventAttribute; //¼ԣ0-δ壬1-Ϸ֤2- + DWORD dwSerialNo; //¼ˮţΪ0Ч + BYTE byChannelControllerID; //ͨIDΪ0Ч1-ͨ2-ͨ + BYTE byChannelControllerLampID; //ͨưIDΪ0ЧЧΧ1-255 + BYTE byChannelControllerIRAdaptorID; //ͨתӰIDΪ0ЧЧΧ1-255 + BYTE byChannelControllerIREmitterID; //ͨIDΪ0ЧЧΧ1-255 + DWORD dwRecordChannelNum; //¼ͨĿ + char *pRecordChannelData;//¼ͨСΪsizeof(DWORD)* dwRecordChannelNum + BYTE byUserType; //Աͣ0-Ч1-ͨˣˣ2-ÿͣ3-ֹˣ4-Ա + BYTE byCurrentVerifyMode; //ǰ֤ʽ0-Ч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-룬29-++룬30-ˢ+ˢ31-ָƻ룬32-Ĥ33-ָƻˢĤ34-ˢĤ + BYTE byAttendanceStatus; //״̬0-δ,1-ϰ࣬2-°࣬3-ʼϢ4-Ϣ5-ʼӰ࣬6-Ӱ + BYTE byStatusValue; //״ֵ̬ + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID豸˵ʹ˹ţԱIDֶΣbyEmployeeNoһҪݣbyEmployeeNoתΪdwEmployeeNoôֶҲҪݣϲƽ̨ͻ˵ȽbyEmployeeNoֶΣֶΪգٿǽdwEmployeeNoֶΣ + BYTE byRes1; // + BYTE byMask; //Ƿ֣0-1-δ֪2-֣3- + BYTE byThermometryUnit; //µλ0-϶ȣĬϣ1-϶ȣ2-ģ + BYTE byIsAbnomalTemperature; //ץIJǷ¶쳣1-ǣ0- + float fCurrTemperature; //¶ȣȷСһλ + NET_VCA_POINT struRegionCoordinates; //¶ + WORD wXCoordinate; //x꣬ϽͼƬĹһ꣬Χ0-1000 + WORD wYCoordinate; //y꣬ϽͼƬĹһ꣬Χ0-1000 + WORD wWidth; //ȣΧ0-1000 + WORD wHeight; //߶ȣΧ0-1000 + BYTE byHealthCode; //״̬, 0-, 1-δ, 2-δ, 3-, 4-, 5-, 6-޴Ա, 7-Ϣӿ쳣²ѯʧܣ, 8-ѯ볬ʱ + BYTE byNADCode; //, 0-, 1-δѯ, 2-ԣ, 3-ԣȷ, 4-Чѹ + BYTE byTravelCode; //г̱, 0-, 1-14һֱڵ, 2-14뿪, 3-14ڵ, 4- + BYTE byVaccineStatus; //״̬, 0-, 1-δ, 2-ע, 3- + BYTE byRes[36]; +}NET_DVR_ACS_EVENT_DETAIL, *LPNET_DVR_ACS_EVENT_DETAIL; + +typedef struct tagNET_DVR_ACS_EVENT_CFG +{ + DWORD dwSize; + DWORD dwMajor; //ͣο궨 + DWORD dwMinor; //ͣο궨 + NET_DVR_TIME struTime; //ʱ + BYTE sNetUser[MAX_NAMELEN];//û + NET_DVR_IPADDR struRemoteHostAddr;//Զַ + NET_DVR_ACS_EVENT_DETAIL struAcsEventInfo; //ϸ + DWORD dwPicDataLen; //ͼƬݴСΪ0DZʾ + char *pPicData; + WORD wInductiveEventType; //¼ͣ0-Чֵμ2.2½ڣͻжϸֵΪ0ֵ󣬱ͨ¼֣ͨԭбͣdwMajordwMinor + BYTE byTimeType; //ʱͣ0-豸ʱ䣨Ĭϣ1-UTCʱ䣨struTimeʱ䣩 + BYTE byRes1; + DWORD dwQRCodeInfoLen; //άϢȣΪ0DZʾ + DWORD dwVisibleLightDataLen; //ȳɼͼƬȣΪ0DZʾ + DWORD dwThermalDataLen; //ȳͼƬȣΪ0DZʾ + char *pQRCodeInfo; //άϢָ + char *pVisibleLightData; //ȳɼͼƬָ + char *pThermalData; //ȳͼƬָ + BYTE byRes[36]; +}NET_DVR_ACS_EVENT_CFG, *LPNET_DVR_ACS_EVENT_CFG; + +typedef struct tagNET_DVR_SMSLISTINFO +{ + DWORD dwSize; + DWORD dwTotalSmsNum;// + BYTE byRes[8]; + BYTE *pSmsParam; + DWORD dwBufLen;//ָ볤ȣ +}NET_DVR_SMSLISTINFO, *LPNET_DVR_SMSLISTINFO; + +typedef struct tagNET_DVR_SMSPARAM +{ + DWORD dwIndex; /* the index of sms */ + BYTE byStatus; /* read yet or not */ + BYTE byRes[7]; + NET_DVR_TIME_EX struRecvTime; /* sms receive time */ +}NET_DVR_SMSPARAM, *LPNET_DVR_SMSPARAM; + +#define MAX_SMSCONTENT_LEN 140//ݳ +typedef struct tagNET_DVR_SMSCONTENT +{ + BYTE byPhoneNum[MAX_PHONE_NUM]; + BYTE byMsg[MAX_SMSCONTENT_LEN]; +}NET_DVR_SMSCONTENT, *LPNET_DVR_SMSCONTENT; + +//pin +typedef enum +{ + CPIN_READY = 1, + CPIN_PIN = 2, + CPIN_PUK = 3, + CPIN_PIN2 = 4, + CPIN_PUK2 = 5 +}PIN_READY; + +typedef struct tagNET_DVR_PINSTATUS +{ + DWORD dwSize; + BYTE byStatus; /* PIN status, defination see enum: PIN_READY */ + BYTE byPinTimes; /* remain input PIN times */ + BYTE byPukTimes; /* remain input PUK times */ + BYTE bEnableLock; /* now the PIN locking function is enabled or not: 0, not enabled lock; 1, lock enabled */ + BYTE byRes[4]; +}NET_DVR_PINSTATUS, *LPNET_DVR_PINSTATUS; + +typedef enum +{ + PIN_ENABLE = 1, + PIN_DISABLE = 2, + PIN_VERIFY = 3, + PUK_VERIFY = 4, + PIN_CHANGE = 5 +}PIN_CMD; +#define MAX_PIN_LEN 12 //PIN󳤶 +typedef struct tagNET_DVR_PINCODEPARAM +{ + DWORD dwSize; + BYTE byPinCmd; /* PIN command, defination see enum: PIN_CMD */ + BYTE byRes1[3]; + BYTE byPinCode[MAX_PIN_LEN]; /* pin/puk code */ + BYTE byNewPinCode[MAX_PIN_LEN]; /* new pin code */ + BYTE byRes2[16]; +}NET_DVR_PINCODEPARAM, *LPNET_DVR_PINCODEPARAM; + + +//ͼƬ +typedef struct +{ + /* 0=CIF, 1=QCIF, 2=D1 3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6=VGA*/ + WORD wPicSize; + WORD wPicQuality; /* ͼƬϵ 0- 1-Ϻ 2-һ */ + //ץͼͼƬʽ1-ϴģ2-豸ر棬3-ϴͬʱ豸ر + BYTE byPicTackleMode; + BYTE byRes[11]; +}NET_DVR_PUSHJPEGPARA, *LPNET_DVR_PUSHJPEGPARA; + + +#define COM_PUSHALARM 0x1200 //豸Ϣϴģʽ豸ʹ +#define COM_PUSHALARM_V30 0x1201 //豸Ϣϴv30ģʽ豸ʹ +typedef struct tagNET_DVR_PUSHALARMINFO +{ + DWORD dwAlarmType;/*0-ź,1-Ӳ,2-źŶʧ,3ƶ,4Ӳδʽ,5-дӲ̳,6-ڵ,7-ʽƥ, 8-Ƿ*/ + DWORD dwAlarmInputNumber;/*˿*/ + DWORD dwAlarmOutputNumber[MAX_ALARMOUT];/*˿ڣһλΪ1ʾӦһ*/ + DWORD dwAlarmRelateChannel[MAX_CHANNUM];/*¼ͨһλΪ1ʾӦһ·¼, dwAlarmRelateChannel[0]Ӧ1ͨ*/ + DWORD dwChannel[MAX_CHANNUM];/*dwAlarmTypeΪ23,6ʱʾĸͨdwChannel[0]Ӧ1ͨ*/ + DWORD dwDiskNumber[MAX_DISKNUM];/*dwAlarmTypeΪ1,4,5ʱ,ʾĸӲ, dwDiskNumber[0]λӦ1Ӳ*/ + BYTE byDeviceID[NAME_LEN];/*豸ID*/ + BYTE byRes[4]; +}NET_DVR_PUSHALARMINFO, *LPNET_DVR_PUSHALARMINFO; + +typedef struct +{ + DWORD dwAlarmType;/*0-ź,1-Ӳ,2-źŶʧ,3ƶ,4Ӳδʽ,5-дӲ̳,6-ڵ,7-ʽƥ, 8-Ƿ, 9-Ƶź쳣10-¼쳣 11- ܳ仯 12-쳣 */ + DWORD dwAlarmInputNumber;/*˿*/ + BYTE byAlarmOutputNumber[MAX_ALARMOUT_V30];/*˿ڣΪ1ʾӦ*/ + BYTE byAlarmRelateChannel[MAX_CHANNUM_V30];/*¼ͨΪ1ʾӦ¼, dwAlarmRelateChannel[0]Ӧ1ͨ*/ + BYTE byChannel[MAX_CHANNUM_V30];/*dwAlarmTypeΪ23,6910ʱʾĸͨdwChannel[0]Ӧ1ͨ*/ + BYTE byDiskNumber[MAX_DISKNUM_V30];/*dwAlarmTypeΪ1,4,5ʱ,ʾĸӲ, dwDiskNumber[0]Ӧ1Ӳ*/ + BYTE byDeviceID[NAME_LEN];/*豸ID*/ + BYTE byRes[7]; +}NET_DVR_PUSHALARMINFO_V30, *LPNET_DVR_PUSHALARMINFO_V30; + +//2011-04-20 +// +typedef struct tagNET_DVR_MB_AUTOWORKPARA +{ + /*ǰƷʽ 0: Ԥ, 1: ʱػ, 2: Զػ*/ + BYTE byCurPowerCtrlType; + BYTE byRes[3]; + NET_DVR_SCHEDTIME struWorkTime[MAX_DAYS][2]; +}NET_DVR_MB_AUTOWORKPARA, *LPNET_DVR_MB_AUTOWORKPARA; + +typedef struct tagNET_DVR_MB_POWERCTRLPARA +{ + DWORD dwSize; + DWORD dwHaltDelay; /* ػӳʱ,λmin */ + NET_DVR_MB_AUTOWORKPARA struAutoWorkPara;/*ز*/ + BYTE byEnableUnderVoltProtect; /*ǷǷѹ*/ + BYTE byUnderVoltPercent; /*Ƿѹٷֱȣ859095Чֵ*/ + BYTE byRes[34]; +}NET_DVR_MB_POWERCTRLPARA, *LPNET_DVR_MB_POWERCTRLPARA; +/*ע1ػӳʱ, ѡʱΪ 05ӣ10 20 25 30 35 40 45 50 60 60*2 60*3 60 *4 60*5 60*6 */ + +//Զ +typedef struct tagNET_DVR_MB_AUTOBACKUPPARA +{ + DWORD dwSize; + BYTE byEnableAutoBackup; /* ǷԶ 0 ر 1 */ + BYTE byRes1[3]; + BYTE byBackupChannel[MAX_CHANNUM_V30]; /*Ҫݵͨ*/ + BYTE byBackupDays[MAX_CHANNUM_V30];/**/ + /* ļ + {0,ALL_RECORD_TYPE,ȫ}, + {1,TIMING_REC,ʱ}, + {2,MOTION_DETECT_REC,ƶ }, + {3,ALARM_REC, }, + {4,MANUAL_REC,ֶ¼}*/ + BYTE byBackupFileType[MAX_CHANNUM_V30]; + NET_DVR_SCHEDTIME struBackupTime[MAX_CHANNUM_V30][2]; /* Զʱ*/ + BYTE byRes2[36]; /* ֽ*/ +}NET_DVR_MB_AUTOBACKUPPARA, *LPNET_DVR_MB_AUTOBACKUPPARA; + + +typedef struct tagNET_DVR_MB_GPSPARA +{ + DWORD dwSize; + BYTE byEnableGPS; /*ǷGPS */ + BYTE byGpsInterface;/*gpsսӿ0-rs232, 1-rs485, 2-frontpanel, 3-lcd */ + BYTE bySpeedUnit; /*ٶȵλ0/Сʱ1 Ӣ/Сʱ*/ + BYTE byEnableRetrieve; /* ä(1ã0) */ + int iAdjustTime;/*ʱ*/ + BYTE byEnableAdjustTime;/*ǷGPSУʱ 1-, 0-*/ + BYTE byRes1[5]; + WORD wGpsUploadInterval; /* GPSϴ, */ + BYTE byGpsOsdChannel[MAX_CHANNUM_V30];/*OSD ʾÿֽڴһ· */ + DWORD dwSpeedLimit; /* ٱ*/ + NET_DVR_HANDLEEXCEPTION_V30 struGpsAlarm; + BYTE byRes2[36]; +}NET_DVR_MB_GPSPARA, *LPNET_DVR_MB_GPSPARA; +/*ע1λΪ/Сʱ ʱΧΪ0 ,965Ӣ/Сʱλʱ ٶȷΧΪ0-600*/ + +#define SENSOR_IN_NUMBER 8 +typedef struct tagNET_DVR_MB_SENSORINPARA +{ + DWORD dwSize; + BYTE byTriggerType[SENSOR_IN_NUMBER];/*г״̬شֻú4ֱɲתת0-ߵƽ1-͵ƽ*/ + BYTE byTriggerChannel [SENSOR_IN_NUMBER]; + BYTE byOsdDisplay [MAX_CHANNUM_V30];/*OSDʾ,ÿλһ·*/ + BYTE byRes[32]; +}NET_DVR_MB_SENSORINPARA, *LPNET_DVR_MB_SENSORINPARA; + + +typedef struct tagNET_DVR_ACCELERATIONCFG +{ + DWORD dwMaxXAcc; /* Xٶȱֵ ȡֵΪʵֵ10,СΪ0*/ + DWORD dwMaxYAcc; /* Yٶȱֵ ȡֵΪʵֵ10.СΪ0*/ + DWORD dwMaxZAcc; /* Zٶȱֵ ȡֵΪʵֵ10,СΪ0*/ + BYTE byRes[4]; +}NET_DVR_ACCELERATIONCFG,*LPNET_DVR_ACCERATIONCFG; + +typedef struct tagNET_DVR_GSENSORPARA +{ + DWORD dwSize; + NET_DVR_ACCELERATIONCFG struAccelerationCfg; + BYTE byModuleSelect;/*ģѡ0/1*/ + BYTE byRes1[3]; + NET_DVR_HANDLEEXCEPTION_V30 struHandleException; + BYTE byRes2[24]; /*չֽ*/ +}NET_DVR_GSENSORPARA, *LPNET_DVR_GSENSORPARA; + +typedef struct tagNET_DVR_MB_DOWNLOADSVRPARA +{ + DWORD dwSize; + NET_DVR_IPADDR struDownloadSvrIp; /* Զطַ */ + BYTE byRes[64]; +}NET_DVR_MB_DOWNLOADSVRPARA,*LPNET_DVR_MB_DOWNLOADSVRPARA; + +/* ʶز*/ +typedef struct tagNET_DVR_PLATERECOG_PARA +{ + DWORD dwSize; + BYTE byPrMode; /* ʶģʽ, ̬ͼ0/̬Ƶ1 */ + BYTE byPrScene; /* ʶij, ٳ0/ٳ1 */ + BYTE byPrDetRect; /* 0:ȫĻ;1: */ + BYTE byPrPicQuality; /* ʶ𷵻صͼƬ, 0:/3: */ + BYTE byPrPicMode;/*ʶ𷵻صͼƬֱ: JPEG_MODE_D1, JPEG_MODE_CIF, JPEG_MODE_QCIF */ + BYTE byPlateOsdDisplay; /* OSDǷʾ 0:ʾ/1:ʾ */ + BYTE byPrProvCharIndex; /* ʶʡ׺ֶӦ */ + BYTE byPrProvCharIndex1; /* ʶ𳣼׺1Ӧ */ + BYTE byPrProvCharIndex2; /* ʶ𳣼׺2Ӧ */ + BYTE byRes[7]; +}NET_DVR_PLATERECOG_PARA, *LPNET_DVR_PLATERECOG_PARA; + + +/* ̬ȡ֤ϵͳ,òĽṹ*/ +typedef struct tagNET_DVR_SPEEDLMT_PARA +{ + BYTE bStartMaxSpeedLimit; /* */ + BYTE bStartMinSpeedLimit; /* */ + BYTE byRes[6]; + DWORD dwMaxSpeedLimit; /* */ + DWORD dwMinSpeedLimit; /* */ +}NET_DVR_SPEEDLMT_PARA, *LPNET_DVR_SPEEDLMT_PARA; + +/* ̬ȡ֤ϵͳ,ƱȶԲĽṹ*/ +typedef struct tagNET_DVR_PLATECHECK_PARA +{ + BYTE bAlarmWhenChecked; /* ɹǷ񱨾 */ + BYTE bInformWhenChecked; /* ɹǷԻʾ */ + BYTE byRes[6]; + NET_DVR_IPADDR struBlockFtpServer; /* ֹFTPַ */ +}NET_DVR_PLATECHECK_PARA, *LPNET_DVR_PLATECHECK_PARA; + +typedef struct tagNET_DVR_ENFORCESYS_PARA +{ + DWORD dwSize; + NET_DVR_SPEEDLMT_PARA struSpeedLmtPara; /**/ + NET_DVR_PLATECHECK_PARA struPlateCheckPara; /*Ʊȶ*/ + BYTE bySelPeccType; /*ǷѡΥ*/ + BYTE byEnfOptHabit; /*ȡ֤ϰ, 0:ȡ֤;1:̰ȡ֤*/ + /*Ԥ֡ʵģʽ֣ + A ر adjPrevFpsMode=0 + Թ̶֡(25FPS)Ԥ + B ׼ adjPrevFpsMode=1 + Թ̶֡(6FPS)Ԥ + C Ӧ adjPrevFpsMode=2 + GPSٶϢ̬Ԥ֡ʣ + 3ЧGPS£Թ̶֡Ԥ*/ + BYTE byAdjPrevFpsMode; + BYTE byRes1; + NET_DVR_IPADDR struUploadServerIp; //ϴַ + WORD wUploadServerPort; + BYTE byRes2[18]; +}NET_DVR_ENFORCESYS_PARA, *LPNET_DVR_ENFORCESYS_PARA; + +typedef struct tagNET_DVR_PUSHMODEPARAM +{ + //ֱģʽUDPԤģʽ1-ͬ˿ڶ·2-һ˿һ· + BYTE byUdpPreviewMode; + //Խģʽ0-Խ1-תSDKIJɼͲţ + BYTE byVoiceWorkMode; + BYTE byRes[18]; +}NET_DVR_PUSHMODEPARAM, *LPNET_DVR_PUSHMODEPARAM; + +#define MAX_ALARMHOST_ALARMIN_NUM 512//籨󱨾 +#define MAX_ALARMHOST_ALARMOUT_NUM 512//籨󱨾 + +#define ALARMHOST_MAX_AUDIOOUT_NUM 32//籨 +#define ALARMHOST_MAX_ELECTROLOCK_NUM 32//籨 +#define ALARMHOST_MAX_MOBILEGATE_NUM 32//籨ƶ +#define ALARMHOST_MAX_SIREN_NUM 8 // 󾯺Ŀ +#define MAX_ALARMHOST_SUBSYSTEM 32//ϵͳ +#define ALARMHOST_DETECTOR_SERIAL_LEN 9//̽кų +#define ALARMHOST_DETECTOR_SERIAL_LEN_V50 16 //̽кV50 +#define MAX_DETECTOR_NUM 128//̽ +#define MAX_DETECTOR_NUM_V51 256 //̽ +#define MAX_REPEATER_NUM 16 //м +#define MAX_OUTPUT_MODULE_NUM 64 //ģ +#define MAX_ELECTRIC_LOCK_NUM 64 // + +// +typedef enum tagSENSOR_TYPE +{ + SENSOR_TYPE_NONE = 0, // + SENSOR_TYPE_TEMPERATURE = 1, // ¶ + SENSOR_TYPE_HUMIDITY , // ʪ + SENSOR_TYPE_WINDSPEED, // + SENSOR_TYPE_GAS, // + SENSOR_AC_VOLTAGE, // ѹ + SENSOR_AC_CURRENT, // + SENSOR_DC_VOLTAGE, // ֱѹ + SENSOR_DC_CURRENT, // ֱ + SENSOR_WATER_PRESSURE, // ˮѹ + SENSOR_PRESSURE_TRANSMITTER, // ѹ + SENSOR_FLOW_TRANSMITTER, // + SENSOR_WATER_LEAKAGE, // ©ˮ + SENSOR_INTERGRATED_TEMPERATURE_DETECTOR,//һ廯± + SENSOR_ISOLATION_TEMPERATURE_DETECTOR, //ʽ± + SENSOR_RESIDUAL_CHLORINE, // + SENSOR_TYPE_AC_TERMINAL = 16, // AC + SENSOR_TYPE_AC_SOCKET = 17, // AC + SENSOR_TYPE_HUMITURE, // ʪ + SENSOR_TYPE_FLOW, // + SENSOR_LIQUID_LEVEL, // Һλ + SENSOR_TYPE_ARC, // 绡 + SENSOR_TYPE_UNKNOW = 255 // δ +}SENSOR_TYPE; + +typedef struct tagNET_DVR_SENSOR_INFO +{ + DWORD dwSize; // ṹС + BYTE byName[NAME_LEN]; // + BYTE byEnable; // Ƿ + BYTE byValid; // ǷЧ (òֻܻȡܸ) + BYTE byType; // ģ SENSOR_TYPE + BYTE byAlarmMode;//ģʽ֣15-HHHH14-HHHL12-HHLL8HLLL0-LLLL1111ϣ1110£1100£1000()0000() + float fMeasureHigh; // + float fMeasureLow; // + float fAlarm1; //1,1-4 + float fAlarm2; //2 + float fAlarm3; //3 + float fAlarm4; //4 + DWORD dwOsdCfg; //ģַӣλʾ0-15ӦƵͨ1-16 + float fSensitive; // ȱʾʵʱֵı仯ȵķΧʱʾʵʱֵ˱仯Ϊûз仯磺Ϊ0.1ʾǰֵ֮0.1ʱΪݷ仯0.1ҪϴΪ1ʾ仯1ʱϱ + BYTE bySensorStandard; //0- 0~20mA1- 0~5V2- 0~2.5Mpa3- 0~1.6Mpa4- 0~5m + BYTE byChan; //ģͨ + BYTE byRes3[114]; // ֽ +}NET_DVR_SENSOR_INFO, *LPNET_DVR_SENSOR_INFO; + +typedef struct tagNET_DVR_SIREN_PARAM +{ + DWORD dwSize; // ṹС + BYTE byName[NAME_LEN]; // + WORD wDelay; // ӳ λΪ, Χ 0~5599s 0ʾһֱ + BYTE byRes1[2]; + DWORD dwOverallEventJointSirenOn; //ȫ¼¼Ͱλʾbit0-, bit1-ȫּ̽,bit2-ϵ磬bit3-صѹ,bit4-绰ߵ,bit5-쳣,bit6-쳣, bit7-485ߣbit8- WIFIͨŹϣbit9-RFźŸŹ + DWORD dwSubsystemEventJointSirenOn[MAX_ALARMHOST_SUBSYSTEM/*32*/];//ϵͳ¼±ʾϵͳţÿһԪذλʾ¼ͣbit0- + BYTE byRes2[448]; // ֽڡ +}NET_DVR_SIREN_PARAM, *LPNET_DVR_SIREN_PARAM; + +typedef struct tagNET_DVR_AIR_CONDITION_PARAM +{ + DWORD dwSize; // ṹС + BYTE byEnable; // 0--ػ 1-- + BYTE byMode; // յģʽ + BYTE byTemperature; // ¶ȣֵʾ ͨΪ16-30 + BYTE byAirConditionNo; // յ + BYTE byRes[8]; // ֽ +}NET_DVR_AIR_CONDITION_PARAM, *LPNET_DVR_AIR_CONDITION_PARAM; + +typedef enum tagDETECTOR_TYPE +{ + PANIC_BUTTON = 0, // ť + MAGNETIC_CONTACT, // Ŵ + SMOKE_DETECTOR, // ̸̽ + ACTIVE_INFRARED_DETECTOR, // ̽ + PASSIVE_INFRARED_DETECTOR, // ̽ + GLASS_BREAK_DETECTOR, // ̽ + VIBRATION_DETECTOR, // ̽ + DUAL_TECHNOLOGY_PIR_DETECTOR, // ˫̽ + TRIPLE_TECHNOLOGY_PIR_DETECTOR, // ̽ + HUMIDITY_DETECTOR, // ʪ̽ + TEMPERATURE_DETECTOR, // ¸̽ + COMBUSTIBLE_GAS_DETECTOR, // ȼ̽ + DYNAMIC_SWITCH, //涯 + CONTROL_SWITCH, //ƿ + SMART_LOCK, // + WATER_DETECTOR, //ˮ̽ + DISPLACEMENT_DETECTOR, //λ̽ + SINGLE_INFRARED_DETECTOR, //Ŵ̽ + SINGLE_ZONE_MODULE, //ߵģ + CURTAIN_INFRARED_DETECTOR, //Ļ̽19 + UNKNOWN,//δ֪20 + DOORBELL_SWITCH=21, //忪21 + MEDICAL_HELP_BUTTON, //ҽť + OUTDOOR_DUAL_TECH, //˫ + + OTHER_DETECTOR = 0xffff // ̽ +}DETECTOR_TYPE; + +typedef struct tagNET_DVR_ALARMIN_PARAM +{ + DWORD dwSize; + BYTE byName[NAME_LEN]; + WORD wDetectorType; // DETECTOR_TYPE + BYTE byType; //ͣ0:ʱ,1-24Сʱ,2-ʱ ,3-ڲ4-Կ׷ 5-𾯷 6-ܽ 7-24Сʱ 8-24Сʱ9-24Сʱ𶯷,10-Žŷ11-Žŷ 12-ʱ13-0xff- + BYTE byUploadAlarmRecoveryReport; //Ƿϴָ棬0-ϴ1-ϴ + DWORD dwParam; // ʱʱ೤ʱ, бʱʱͨ , ÷ʽͨеbySupportAlarmInDelayֶ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];/*ʱʱ*/ + BYTE byAssociateAlarmOut[MAX_ALARMHOST_ALARMOUT_NUM]; // + BYTE byAssociateSirenOut[8]; // 0 ʾ1 ֵΪ1ʾ 0 ʾ + BYTE bySensitivityParam;//Ȳ, 0-10ms1-250ms2-500ms3-750ms + BYTE byArrayBypass;//Ƿ·,0-֧·,1-֧· + BYTE byJointSubSystem; //ϵͳţòֻܻȡ + BYTE byModuleStatus; //ģ״̬ 1- 2- + WORD wModuleAddress; //ģַչģ0~2550xFFFFʾЧ + BYTE byModuleChan; //ģͨţ1ʼֵģ0xFFʾЧ + BYTE byModuleType; //ģͣ1-ط2-3-˫4-85-8·ģ, 6-, 7-1ž͵ؿ8-2ž͵ؿ9-4ž͵ؿ10-8ߡ11-̡12-8ߡ13-չ + WORD wZoneIndex; //ţòֻܻȡ + WORD wInDelay; //ʱ0-255 + WORD wOutDelay; //˳ʱ0-255 + BYTE byAlarmType; // 0-Ч1-2- + BYTE byZoneResistor; //裬λǧŷ 0-Ч 1--2.2 2--3.33--4.74--5.6 5--8.2 0xff-Զ + float fZoneResistorManual;/*ֶ裬1.0-10.0ȷСһλλǧŷbyZoneResistorΪ0xffʱЧ*/ + BYTE byDetectorSerialNo[ALARMHOST_DETECTOR_SERIAL_LEN]; //̽кţֻ + BYTE byZoneSignalType; //źŴ(ֻ)0-߷1-߷ + BYTE byDisableDetectorTypeCfg; //̽Ƿ񲻿䣬0-䣬1- + BYTE byTimeOutRange; // ʱʱ䷶Χ0:1~599s,1:1~65535s + BYTE byAssociateLampOut[8];// 0 ʾ1 ֵΪ1ʾ 0 ʾ + WORD wTimeOut; //ʱʱ䣬 + BYTE byDetectorSignalIntensity; // ̽źǿȣֻ0~100 + BYTE byTimeOutMethod; //ʱʱʽ0-ʱ1-ָʱ + BYTE byRes3[8]; // ֽ +}NET_DVR_ALARMIN_PARAM, *LPNET_DVR_ALARMIN_PARAM; + +typedef struct tagNET_DVR_ALARMIN_PARAM_V50 +{ + DWORD dwSize; + BYTE byName[NAME_LEN]; + WORD wDetectorType; // DETECTOR_TYPE + BYTE byType; //ͣ0:ʱ,1-24Сʱ,2-ʱ ,3-ڲ4-Կ׷ 5-𾯷 6-ܽ 7-24Сʱ 8-24Сʱ9-24Сʱ𶯷 12-ʱ13-14-ȼ0xff- + BYTE byUploadAlarmRecoveryReport; //Ƿϴָ棬0-ϴ1-ϴ + DWORD dwParam; // ʱʱ೤ʱ, бʱʱͨ , ÷ʽͨеbySupportAlarmInDelayֶ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];/*ʱʱ*/ + BYTE byAssociateAlarmOut[MAX_ALARMHOST_ALARMOUT_NUM]; // + BYTE byAssociateSirenOut[8]; // 0 ʾ1 ֵΪ1ʾ 0 ʾ + BYTE bySensitivityParam;//Ȳ, 0-10ms1-250ms2-500ms3-750ms + BYTE byArrayBypass;//Ƿ·,0-֧·,1-֧· + BYTE byJointSubSystem; //ϵͳţòֻܻȡ + BYTE byModuleStatus; //ģ״̬ 1- 2- + WORD wModuleAddress; //ģַչģ0~2550xFFFFʾЧ + BYTE byModuleChan; //ģͨţ1ʼֵģ0xFFʾЧ + BYTE byModuleType; //ģͣ1-ط2-3-˫4-85-8·ģ, 6-, 7-1ž͵ؿ8-2ž͵ؿ9-4ž͵ؿ10-8ߡ11-̡12-8ߡ13-չ + WORD wZoneIndex; //ţòֻܻȡ + WORD wInDelay; //ʱ0-255 + WORD wOutDelay; //˳ʱ0-255 + BYTE byAlarmType; // 0-Ч1-2- + BYTE byZoneResistor; //裬λǧŷ 0-Ч 1--2.2 2--3.33--4.74--5.6 5--8.2 0xff-Զ + float fZoneResistorManual;/*ֶ裬1.0-10.0ȷСһλλǧŷbyZoneResistorΪ0xffʱЧ*/ + BYTE byDetectorSerialNo[ALARMHOST_DETECTOR_SERIAL_LEN_V50]; //̽кţֻ + BYTE byZoneSignalType; //źŴ(ֻ)0-߷1-߷ + BYTE byDisableDetectorTypeCfg; //̽Ƿ񲻿䣬0-䣬1- + WORD wTimeOut; //ʱʱ䣬 + BYTE byAssociateLampOut[8];// 0 ʾ1 ֵΪ1ʾ 0 ʾ + BYTE byVoiceFileName[32]; //ļ + BYTE byTimeOutRange; // ʱʱ䷶Χ0:1~599s,1:1~65535s + BYTE byDetectorSignalIntensity; // ̽źǿȣֻ0~100 + BYTE byTimeOutMethod; //ʱʱʽ0-ʱ1-ָʱ + BYTE byAssociateFlashLamp;// 0-Ч1-2- + BYTE byStayAwayEnabled;// ʱڼ·ʹ 0-Ч1-ʹܣ2-ʹ + BYTE bySilentModeEnabled;// ģʽʹ 0-Ч1-ʹܣ2-ʹ + BYTE byRelativeChannel[RELATIVE_CHANNEL_LEN];// ͨţ0ʾЧһbyteֽڱʾһͨ + BYTE byDetectorVersion[VERSION_INFO_LEN]; //̽汾ֻ + BYTE byDetectorMAC[MACADDR_LEN]; //̽MACַֻ + BYTE byLinkageAlarmType; //ͣ1-𾯣2-ܣ3-4-Σ5- + BYTE byRes3[465]; // ֽ +}NET_DVR_ALARMIN_PARAM_V50, *LPNET_DVR_ALARMIN_PARAM_V50; + +#define MAX_MAX_ALARMIN_NUM 64 /* ȡ*/ +typedef struct tagNET_DVR_MULTI_ALARMIN_COND +{ + DWORD dwSize; + int iZoneNo[MAX_MAX_ALARMIN_NUM]; //,0ʼС0ʾЧ + BYTE byRes[256]; +}NET_DVR_MULTI_ALARMIN_COND, *LPNET_DVR_MULTI_ALARMIN_COND; + +typedef struct tagNET_DVR_SINGLE_ALARMIN_PARAM +{ + DWORD dwSize; + WORD wZoneNo; //ţòֻܻȡ + BYTE byJointSubSystem; //ϵͳţòֻܻȡ + BYTE byType; //ͣ0:ʱ,1-24Сʱ,2-ʱ ,3-ڲ4-Կ׷ 5-𾯷 6-ܽ 7-24Сʱ 8-24Сʱ9-24Сʱ𶯷,12-ʱ,13-14-ȼ0xff- + BYTE byName[NAME_LEN]; + WORD wDetectorType; // DETECTOR_TYPE + WORD wInDelay; //ʱ0-255 + WORD wOutDelay; //˳ʱ0-255 + BYTE byAlarmType; // 0-Ч 1- 1- + BYTE byZoneSignalType; //źŴͣ0-߷1-߷ + BYTE byDetectorSerialNo[ALARMHOST_DETECTOR_SERIAL_LEN]; //̽кţֻ + BYTE byDisableDetectorTypeCfg; //̽Ƿ񲻿䣬0-䣬1- + BYTE byTimeOutRange; // ʱʱ䷶Χ0:1~599s,1:1~65535s + BYTE byDetectorSignalIntensity; // ̽źǿȣֻ0~100 + WORD wTimeOut; //ʱʱ䣬 + BYTE byTimeOutMethod; //ʱʱʽ0-ʱ1-ָʱ + BYTE byAssociateFlashLamp;// 0-Ч1-2- + BYTE byStayAwayEnabled;// ʱڼ·ʹ 0-Ч1-ʹܣ2-ʹ + BYTE bySilentModeEnabled;// ģʽʹ 0-Ч1-ʹܣ2-ʹ + BYTE byRes2[110]; // ֽ +}NET_DVR_SINGLE_ALARMIN_PARAM, *LPNET_DVR_SINGLE_ALARMIN_PARAM; + +typedef struct tagNET_DVR_SINGLE_ALARMIN_PARAM_V50 +{ + DWORD dwSize; + WORD wZoneNo; //ţòֻܻȡ + BYTE byJointSubSystem; //ϵͳţòֻܻȡ + BYTE byType; //ͣ0:ʱ,1-24Сʱ,2-ʱ ,3-ڲ4-Կ׷ 5-𾯷 6-ܽ 7-24Сʱ 8-24Сʱ9-24Сʱ𶯷,12-ʱ,13-14-ȼ0xff- + BYTE byName[NAME_LEN]; + WORD wDetectorType; // DETECTOR_TYPE + WORD wInDelay; //ʱ0-255 + WORD wOutDelay; //˳ʱ0-255 + BYTE byAlarmType; // 0-Ч 1- 1- + BYTE byZoneSignalType; //źŴͣ0-߷1-߷ + BYTE byDetectorSerialNo[ALARMHOST_DETECTOR_SERIAL_LEN]; //̽кţֻ + BYTE byDisableDetectorTypeCfg; //̽Ƿ񲻿䣬0-䣬1- + BYTE byTimeOutRange; // ʱʱ䷶Χ0:1~599s,1:1~65535s + BYTE byDetectorSignalIntensity; // ̽źǿȣֻ0~100 + WORD wTimeOut; //ʱʱ䣬 + BYTE byTimeOutMethod; //ʱʱʽ0-ʱ1-ָʱ + BYTE byAssociateFlashLamp;// 0-Ч1-2- + BYTE byStayAwayEnabled;// ʱڼ·ʹ 0-Ч1-ʹܣ2-ʹ + BYTE bySilentModeEnabled;// ģʽʹ 0-Ч1-ʹܣ2-ʹ + BYTE byRes3[2]; + BYTE byAssociateAlarmOut[MAX_ALARMHOST_ALARMOUT_NUM]; // + BYTE byRes2[128]; // ֽ +}NET_DVR_SINGLE_ALARMIN_PARAM_V50, *LPNET_DVR_SINGLE_ALARMIN_PARAM_V50; + +typedef struct tagNET_DVR_ALARMIN_PARAM_LIST +{ + DWORD dwSize; + NET_DVR_SINGLE_ALARMIN_PARAM struSingleAlarmInParam[MAX_MAX_ALARMIN_NUM]; + BYTE byRes[128]; +}NET_DVR_ALARMIN_PARAM_LIST, *LPNET_DVR_ALARMIN_PARAM_LIST; + +typedef struct tagNET_DVR_ALARMIN_PARAM_LIST_V50 +{ + DWORD dwSize; + NET_DVR_SINGLE_ALARMIN_PARAM_V50 struSingleAlarmInParam[MAX_MAX_ALARMIN_NUM]; + BYTE byRes[128]; +}NET_DVR_ALARMIN_PARAM_LIST_V50, *LPNET_DVR_ALARMIN_PARAM_LIST_V50; + +typedef struct tagNET_DVR_ALARMOUT_PARAM +{ + DWORD dwSize; // ṹС + BYTE byName[NAME_LEN]; // + WORD wDelay; // ӳ λs, Χ0~3599s 0 ʾһֱ + WORD wTriggerIndex; //ţòֻܻȡ + BYTE byAssociateAlarmIn[MAX_ALARMHOST_ALARMIN_NUM]; //ʾŵıͨ ͬʱһ±0ʾ1 0- 1- + BYTE byModuleType; //Ӵͣ1-ش 2-4·3-8· 4-5-32·6-1ž͵ؿ7-2ž͵ؿ8-4ž͵ؿ,9-2·10-̣11-չ + BYTE byModuleStatus; //Ӵ״̬ 1- 2- + WORD wModuleAddress; //Ӵַչģ0~2550xFFFFʾЧ + BYTE byModuleChan; //Ӵͨţ1ʼֵģ0xFFʾЧ + BYTE byWorkMode; //ģʽ1-2-涯 + BYTE byAlarmOutMode; //ģʽ1-ģʽ2-ģʽ + BYTE byTimeOn; //ʱ 1~60s + BYTE byTimeOff; //ʱ 1~60s + BYTE byDurationConstOutputEnable; //̵ʹ + BYTE byRes2[50]; //ֽ +}NET_DVR_ALARMOUT_PARAM, *LPNET_DVR_ALARMOUT_PARAM; + +typedef struct tagNET_DVR_ALARMIN_SETUP +{ + BYTE byAssiciateAlarmIn[MAX_ALARMHOST_ALARMIN_NUM];//ͨ ±0Ӧ1 + BYTE byRes[100];//ֽ +}NET_DVR_ALARMIN_SETUP, *LPNET_DVR_ALARMIN_SETUP; + +typedef struct tagNET_DVR_ALARMHOST_MAIN_STATUS +{ + DWORD dwSize; + BYTE bySetupAlarmStatus[MAX_ALARMHOST_ALARMIN_NUM];//ڲ״̬(֧512ڲѯ)0-Ӧڴڳ״̬1-Ӧڴڲ״̬ + BYTE byAlarmInStatus[MAX_ALARMHOST_ALARMIN_NUM];//ڱ״̬(֧512ڲѯ)0-Ӧڵǰޱ1-Ӧڵǰб + BYTE byAlarmOutStatus[MAX_ALARMHOST_ALARMOUT_NUM];//״̬(֧512ڲѯ)0-Ӧޱ1-Ӧб + BYTE byBypassStatus[MAX_ALARMHOST_ALARMIN_NUM]; // ·״̬ ±ʾ0Ӧ1 0-ʾû· 1-ʾ· + BYTE bySubSystemGuardStatus[MAX_ALARMHOST_SUBSYSTEM]; //ϵͳ״̬,0-Ӧϵͳڳ״̬1-Ӧϵͳڲ״̬ + BYTE byAlarmInFaultStatus[MAX_ALARMHOST_ALARMIN_NUM];//ڹ״̬0-Ӧڴ״̬1-Ӧڴڹ״̬ + BYTE byRes[56]; // ֽ +}NET_DVR_ALARMHOST_MAIN_STATUS, *LPNET_DVR_ALARMHOST_MAIN_STATUS; + +typedef struct tagNET_DVR_ALARMHOST_MAIN_STATUS_V40 +{ + DWORD dwSize; + BYTE bySetupAlarmStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬(֧512ѯ)0-Ӧڳ״̬1-Ӧڲ״̬ + BYTE byAlarmInStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬(֧512ѯ)0-Ӧǰޱ1-Ӧǰб + BYTE byAlarmOutStatus[MAX_ALARMHOST_ALARMOUT_NUM]; //״̬(֧512ѯ)0-Ӧޱ1-Ӧб + BYTE byBypassStatus[MAX_ALARMHOST_ALARMIN_NUM]; //·״̬ ±ʾ0Ӧ1 0-ʾû· 1-ʾ· + BYTE bySubSystemGuardStatus[MAX_ALARMHOST_SUBSYSTEM/*32*/]; //ϵͳ״̬,0-Ӧϵͳڳ״̬1-Ӧϵͳڲ״̬ + BYTE byAlarmInFaultStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬0-Ӧ״̬1-Ӧڹ״̬ + BYTE byAlarmInMemoryStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬ 0-Ӧǰޱ1-Ӧǰб + BYTE byAlarmInTamperStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬0-Ӧޱ1-Ӧб + BYTE byEnableSubSystem[MAX_ALARMHOST_SUBSYSTEM/*32*/]; //ϵͳ״̬0-Ч1-Ӧϵͳδã2-Ӧϵͳ + BYTE bySubSystemGuardType[MAX_ALARMHOST_SUBSYSTEM]; //ϵͳ״̬0-Ч1-2-ʱ3-ڼҲ + BYTE byRes[448]; //ֽ +}NET_DVR_ALARMHOST_MAIN_STATUS_V40, *LPNET_DVR_ALARMHOST_MAIN_STATUS_V40; + +typedef struct tagNET_DVR_ALARMHOST_MAIN_STATUS_V51 +{ + DWORD dwSize; + BYTE bySetupAlarmStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬(֧512ѯ)0xff-Ч0-Ӧڳ״̬1-Ӧڲ״̬2-Ӧڲ + BYTE byAlarmInStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬״̬(֧512ѯ)0xff-Ч0-Ӧǰޱ1-Ӧǰб + BYTE byAlarmOutStatus[MAX_ALARMHOST_ALARMOUT_NUM]; //״̬(֧512ѯ)0xff-Ч0-Ӧޱ1-Ӧб2-δ3-ߣ4-쳣 + BYTE byBypassStatus[MAX_ALARMHOST_ALARMIN_NUM]; //·״̬±ʾ0Ӧ10xff-Ч0-ʾû· 1-ʾ· + BYTE bySubSystemGuardStatus[MAX_ALARMHOST_SUBSYSTEM/*32*/]; //ϵͳ״̬0xff-Ч0-Ӧϵͳڳ״̬1-Ӧϵͳڲ״̬2-Ӧϵͳڲ + BYTE byAlarmInFaultStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬0xff-Ч0-Ӧ״̬1-Ӧڹ״̬ + BYTE byAlarmInMemoryStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬״̬ 0xff-Ч0-Ӧǰޱ1-Ӧǰб + BYTE byAlarmInTamperStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬0xff-Ч0-Ӧޱ1-Ӧб + BYTE byEnableSubSystem[MAX_ALARMHOST_SUBSYSTEM/*32*/]; //ϵͳ״̬0-Ч1-Ӧϵͳδã2-Ӧϵͳ + BYTE bySubSystemGuardType[MAX_ALARMHOST_SUBSYSTEM]; //ϵͳͣ0-Ч1-2-ʱ3-ڼҲ + BYTE bySubSystemAlarm[MAX_ALARMHOST_SUBSYSTEM]; //ϵͳ״̬0-Ч1-2- + BYTE byAlarmOutCharge[MAX_ALARMHOST_ALARMOUT_NUM]; //״̬(֧512ѯ)0-Ч1-2- + BYTE byAlarmOutTamperStatus[MAX_ALARMHOST_ALARMOUT_NUM]; //״̬(֧512ѯ)0-Ч1-2-޷ + BYTE byAlarmInShieldedStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬0-Ч1-Σ2- + BYTE byAlarmOutLinkage[MAX_ALARMHOST_ALARMOUT_NUM]; //¼ͣ(֧512ѯ)0-Ч1-2-3-4-ֶ + BYTE byRes[512]; //ֽ +}NET_DVR_ALARMHOST_MAIN_STATUS_V51, *LPNET_DVR_ALARMHOST_MAIN_STATUS_V51; + +typedef struct tagNET_DVR_ALARMHOST_OTHER_STATUS +{ + DWORD dwSize; + BYTE bySirenStatus[ALARMHOST_MAX_SIREN_NUM]; // ״̬ 0-Ŵޱ״̬1-Ŵб״̬ + BYTE byRes[92]; // ֽ +}NET_DVR_ALARMHOST_OTHER_STATUS, *LPNET_DVR_ALARMHOST_OTHER_STATUS; + +typedef struct tagNET_DVR_ALARMHOST_OTHER_STATUS_V50 +{ + DWORD dwSize; + //DS-PEAϵһʽƷ±0Ӧ״̬±1Ӧ״̬,±2ʼӦ״̬ + BYTE bySirenStatus[ALARMHOST_MAX_SIREN_NUM]; //״̬0xff-Ч0-Ŵޱ״̬1-Ŵб״̬2-δ3-ߣ4-쳣 + BYTE byDetetorPower[MAX_DETECTOR_NUM]; //̽״̬0xff-ЧֵΪ0-100ĬϵС20ΪǷѹ״̬ + BYTE byDetetorConnection[MAX_DETECTOR_NUM]; //̽״̬0xff-Ч0-ʾδעᣬ1-ʾߣ 2-ʾߣ3-쳣 + BYTE bySirenPower[ALARMHOST_MAX_SIREN_NUM]; //ŵ״̬0-Ч1-2-Ƿѹ + BYTE bySirenTamperStatus[ALARMHOST_MAX_SIREN_NUM]; //ŷ״̬0-Ч1-2-޷ + BYTE byPowerStausEnabled[MAX_DETECTOR_NUM / 8]; //̽״̬ǷЧλʾ0-Ч1-Ч + BYTE byDetetorPowerStatus[MAX_DETECTOR_NUM / 8]; //̽״̬λʾ0-1- + BYTE byDetetorPowerType; //̽ıʾͣ0-յֵʾʹbyDetetorPower ֶΣ1-յ״̬ʾʹbyPowerStausEnabledbyDetetorPowerStatusֶ + BYTE byRes[975]; //ֽ +}NET_DVR_ALARMHOST_OTHER_STATUS_V50, *LPNET_DVR_ALARMHOST_OTHER_STATUS_V50; + +typedef struct tagNET_DVR_ALARMHOST_OTHER_STATUS_V51 +{ + DWORD dwSize; + //DS-PEAϵһʽƷ±0Ӧ״̬±1Ӧ״̬,±2ʼӦ״̬ + BYTE bySirenStatus[ALARMHOST_MAX_SIREN_NUM]; //״̬0xff-Ч0-Ŵޱ״̬1-Ŵб״̬2-δ3- + BYTE byDetetorPower[MAX_DETECTOR_NUM_V51]; //̽0xff-ЧֵΪ0-100ĬϵС20ΪǷѹ״̬byDetetorPowerTypeΪ0ʱЧ + BYTE byDetetorConnection[MAX_DETECTOR_NUM_V51]; //̽״̬0xff-Ч0-ʾδעᣬ1-ʾߣ 2-ʾ + BYTE bySirenPower[ALARMHOST_MAX_SIREN_NUM]; //ŵ״̬0-Ч1-2-Ƿѹ + BYTE bySirenTamperStatus[ALARMHOST_MAX_SIREN_NUM]; //ŷ״̬0-Ч1-2-޷ + BYTE byPowerStausEnabled[MAX_DETECTOR_NUM_V51 / 8]; //̽״̬ǷЧλʾ0-Ч1-Ч + BYTE byDetetorPowerStatus[MAX_DETECTOR_NUM_V51 / 8]; //̽״̬λʾ0-1- + BYTE byDetetorPowerType; //̽ıʾͣ0-յֵʾʹbyDetetorPower ֶΣ1-յ״̬ʾʹbyPowerStausEnabledbyDetetorPowerStatusֶ + BYTE byRes2[3]; + BYTE byRepeaterStatus[MAX_REPEATER_NUM]; //м״̬0-Ч1-ߣ2-ߣ3-δ + BYTE byRepeaterTamperStatus[MAX_REPEATER_NUM / 8]; //м״̬λʾ0-Ӧмޱ1-Ӧмб + BYTE byAlarmOutTamperStatus[MAX_ALARMHOST_ALARMOUT_NUM / 8]; //̵״̬λʾ0-Ӧޱ1-Ӧб + BYTE byOutputModuleTamperStatus[MAX_OUTPUT_MODULE_NUM / 8]; //ģ״̬λʾ0-Ӧģޱ1-Ӧģб + BYTE byElectricLockStatus[MAX_ELECTRIC_LOCK_NUM]; //״̬ 0-رգ1 C򿪣Ϊȷԣһ״̬bySirenStatus0λҲҪд + BYTE byRes[274]; //ֽ +}NET_DVR_ALARMHOST_OTHER_STATUS_V51, *LPNET_DVR_ALARMHOST_OTHER_STATUS_V51; + + +//ʹ״̬ +typedef struct tagNET_DVR_ALARMHOST_ENABLECFG +{ + DWORD dwSize; + BYTE byAudioOutEnable[ALARMHOST_MAX_AUDIOOUT_NUM];//ʹܣ0-ܣ1-ʹ + BYTE byElectroLockEnable[ALARMHOST_MAX_ELECTROLOCK_NUM];//ʹܣ0-ܣ1-ʹ + BYTE byMobileGateEnable[ALARMHOST_MAX_MOBILEGATE_NUM];//ƶʹܣ0-ܣ1-ʹ + BYTE bySirenEnable[ALARMHOST_MAX_SIREN_NUM];//ʹܣ 0-ܣ1-ʹ + BYTE bySerialPurpose;//;0-ڼ1-PTZ + BYTE byRes[63]; +}NET_DVR_ALARMHOST_ENABLECFG, *LPNET_DVR_ALARMHOST_ENABLECFG; + +typedef struct tagNET_DVR_ALARMHOST_ABILITY +{ + DWORD dwSize; // ṹС + WORD wTotalAlarmInNum; // (), + WORD wLocalAlarmInNum; // ر + WORD wExpandAlarmInNum; // չı + WORD wTotalAlarmOutNum; // 豸ֵ֧ + WORD wLocalAlarmOutNum; // رڸ + WORD wExpandAlarmOutNum; // չı + WORD wTotalRs485Num; // 豸ֵ֧ + WORD wLocalRs485Num; // 485 + WORD wExpandRs485Num; // չ485 + WORD wFullDuplexRs485Num; // ȫ˫485 + WORD wTotalSensorNum; // ģ (豸ֵ֧) + WORD wLocalSensorNum; // ģ + WORD wExpandSensorNum; // չģ + WORD wAudioOutNum; // + WORD wGatewayNum; //Ž + WORD wElectroLockNum; // + WORD wSirenNum; // Ŀ + WORD wSubSystemNum; // ɻϵͳĿ + WORD wNetUserNum; // û + WORD wKeyboardNum; // + WORD wOperatorUserNum; // û + BYTE bySupportDetector;//Ƿֳ֧̽1-֧֣0-֧ + BYTE bySupportSensitivity;//Ƿַ֧ȣ1-֧֣0-֧ + BYTE bySupportArrayBypass;//Ƿ֧·1-֧֣0-֧ + BYTE bySupportAlarmInDelay;//Ƿַ֧ӳ,1-֧֣0-֧ + //bySupportAlarmInDelayΪ1ʱʾͻӦʹNET_DVR_ALARMIN_PARAM еdwParamʱʱ䣬бʹʱʽ; + //bySupportAlarmInDelayΪ0ʱʾͨNET_DVR_ALARMSUBSYSTEMPARAM еwEnterDelay wExitDelay + BYTE bySupportAlarmInType[16];//ֵ֧ķ,0:ʱ,1-24Сʱ,2-ʱ ,3-ڲ4-Կ׷ 5-𾯷 6-ܽ 7-24Сʱ 8-24Сʱ9-24Сʱ𶯷,10-Žŷ11-Žŷ15- + BYTE byTelNum; //ֵ֧绰 + BYTE byCenterGroupNum; // + BYTE byGPRSNum; //GPRS4 + BYTE byNetNum; //4 + BYTE byAudioNum; //Ƶ + BYTE by3GNum; //3Gģ + BYTE byAnalogVideoChanNum; //ģƵͨ + BYTE byDigitalVideoChanNum; //Ƶͨ + BYTE bySubSystemArmType; //ϵͳͣ0-ʾ֧֣1-ʾ֧֡bit0-ͨעСֻ֧ͨмֶεʱСѾСиֶΪ00ʾ֧֣1ʾ֧֡ӿSDKڲݣbit1-ʱbit2-ز + BYTE byPublicSubSystemNum; //ϵͳ + DWORD dwSupport1; //λʾ0ʾ֧֣0ʾ֧ + // bit0: Ƿ֧ϵͳþʱ䣬֧򾯺ʱÿϵͳã֧֣ʱھŲ + // bit1: Ƿ֧¼ + // bit2: Ƿ֧¼ر + // bit3: Ƿ֧ϵͳʹ + // bit4; Ƿַ֧ + // bit5; Ƿ֧ϵͳԶ + // bit6: Ƿ֧־Ϲ + // bit7: Ƿֹ֧״̬ѯ + // bit8: Ƿ֧ϵͳչ + // bit9: Ƿ֧Կ׷ϵͳ + // bit10: Ƿ֧"ʾɹͱ" + // bit11: Ƿֵ֧뵼 + // bit12: Ƿ֧LEDĻ + // bit13: Ƿֹ֧Ϲعϵ + DWORD dwSubSystemEvent; //ϵͳ¼λʾ0ʾ֧֣0ʾ֧,bit0-ʱbit1-˳ʱbit2-bit3-bit4-bit5- + DWORD dwOverallEvent; //ȫ¼λʾ0ʾ֧֣0ʾ֧֣bit0-磬bit1-صѹͣbit2-绰ߵߣbit3-쳣bit4-쳣bit5-Ӳ̹,bit6-3G/4Gź쳣, bit7-ģӣ,bit8-WIFIͨŹϣbit9-RFźŸŹ + DWORD dwFaultType; //豸ֵ֧Ĺͣbit0-ϵ磬bit1-Ƿѹbit2-𿪣bit3-绰ߵߣbit4-̵ߣbit5-ϣbit6-쳣bit7-չ쳣bit8-Ӳ쳣 + BYTE byPublicSubsystemAssociateSubsystemNum; //ϵͳɹϵͳ + BYTE byOverallKeyboard; //ȫ̸ּ + WORD wSafetyCabinSupport; //տλʾ0ʾ֧֣0ʾ֧ + //bit0: Ƿַ֧տģʽ + //bit1: Ƿ֧źŴ + //bit2: Ƿ֧Ļã̽ӳʱ䡢״̬仯Ӧʱ䣩 + //bit3: Ƿֺ֧䴫ã˲ + //bit4: Ƿַ֧ʹóʱʱ + BYTE by485SlotNum; //485λ + BYTE bySubSystemAttributeAbility; // ֵΪ1ֹ1ϵͳرʹ + WORD wKeyboardAddrNum; // ̵ַ + BYTE byAlarmLampNum; //Ŀ + BYTE byRes[117]; // ֽ +}NET_DVR_ALARMHOST_ABILITY, *LPNET_DVR_ALARMHOST_ABILITY; + +#define MAX_485CHAN 256 //485ͨ +#define MAX_485SLOT 256 //485λ +typedef struct tagNET_DVR_485_SLOT_LIST_INFO +{ + DWORD dwSize; + BYTE byAll; //0-ȫȡ1-ȫȡ + BYTE byres[3]; + BYTE byIndex[MAX_485SLOT]; //485λ + BYTE byRes[64]; // +}NET_DVR_485_SLOT_LIST_INFO,* LPNET_DVR_485_SLOT_LIST_INFO; + +typedef struct tagNET_DVR_485LIST_INFO +{ + DWORD dwSize; + BYTE byAll; //0-ȫȡ1-ȫȡ + BYTE byres[3]; + BYTE byIndex[MAX_485CHAN]; //485ͨ ±ʾͨţֵ0-ʾʹã1ʾʹ + BYTE byRes[64]; // +}NET_DVR_485LIST_INFO,*LPNET_DVR_485LIST_INFO; + +typedef struct tagNET_DVR_ALARM_RS485CFG +{ + DWORD dwSize; // ṹС + BYTE sDeviceName[NAME_LEN]; // ǰ豸 + WORD wDeviceType; // ǰ豸,ͨNET_DVR_GetDeviceTypeListȡ + WORD wDeviceProtocol; // ǰ豸Э ͨȡЭбȡ + DWORD dwBaudRate; //(bps)0-501-752-1103-1504-3005-6006-12007-24008-48009-960010-1920011-3840012-5760013-7680014-115.2k + BYTE byDataBit; // мλ0-5λ1-6λ2-7λ3-8λ + BYTE byStopBit; // ֹͣλ0-1λ1-2λ + BYTE byParity; //ǷУ飺0-У飬1-У飬2-żУ + BYTE byFlowcontrol; // Ƿأ0-ޣ1-,2-Ӳ + BYTE byDuplex; // 0 - ˫1- ȫ˫ ֻͨ1ȫ˫ֻǰ˫ + BYTE byWorkMode; // ģʽ 0-̨ 1-͸ͨ,2-ݿأ3-,4-Žȫģ,0xfe-Զ壬0xff- + BYTE byChannel; //485ͨ + BYTE bySerialType; //: 0--485, 1--232 + BYTE byMode; //ģʽ 0-Ӷ 1-ӿͻ 2-չģ 3-Ž 4-ݿ 0xff- + BYTE byOutputDataType; //0-Ч1-ţ2- + BYTE byAddress; //ڵַ + BYTE byStairsOutputDataType; //0-Ч1-¥ţ2-ţbyModeΪݿʱЧ + BYTE byRes[32]; // ֽ +}NET_DVR_ALARM_RS485CFG, *LPNET_DVR_ALARM_RS485CFG; + +#define MAX_DEVICE_PROTO_NUM 256 +#define MAX_DEVICE_TYPE_NUM 256 + +// 485ǰ豸֧Эб +typedef struct tagNET_DVR_DEVICE_PROTO_LIST +{ + DWORD dwSize; // ṹС + DWORD dwProtoNum; // Э + NET_DVR_PROTO_TYPE struProtoType[MAX_DEVICE_PROTO_NUM]; // Э + BYTE byRes[12]; // ֽ +}NET_DVR_DEVICE_PROTO_LIST, *LPNET_DVR_DEVICE_PROTO_LIST; + +typedef struct tagNET_DVR_DEVICE_TYPE +{ + DWORD dwType; + BYTE byDescribe[DESC_LEN]; +}NET_DVR_DEVICE_TYPE, *LPNET_DVR_DEVICE_TYPE; + +typedef struct tagNET_DVR_DEVICE_TYPE_LIST +{ + DWORD dwSize; // ṹС + DWORD dwTypeNum; // ͸ + NET_DVR_DEVICE_TYPE struDeviceType[MAX_DEVICE_TYPE_NUM]; + BYTE byRes[12]; +}NET_DVR_DEVICE_TYPE_LIST, *LPNET_DVR_DEVICE_TYPE_LIST; + +#define MAX_ALARMHOST_VIDEO_CHAN 64 +typedef struct tagNET_DVR_ALARM_DEVICE_USER +{ + DWORD dwSize; // ṹС + BYTE sUserName[NAME_LEN]; // û + BYTE sPassword[PASSWD_LEN]; // + NET_DVR_IPADDR struUserIP; /* ûIPַ(Ϊ0ʱʾκεַ) */ + BYTE byMACAddr[MACADDR_LEN]; /* ַ */ + BYTE byUserType; // 0-ͨûԱ 1-Աû 2-װԱû 3-û + BYTE byAlarmOnRight; // Ȩ + BYTE byAlarmOffRight; // Ȩ + BYTE byBypassRight; // ·Ȩ + BYTE byOtherRight[MAX_RIGHT]; // Ȩ + // 0 -- ־Ȩ + // 1 -- ػ + // 2 -- Ȩ + // 3 -- ȡȨ + // 4 -- ָĬϲȨ + // 5 -- Ȩ + // 6 -- PTZ Ȩ + // 7 -- ԶȨ + // 8 -- ԶԤ + // 9 -- Զֶ¼ + // 10 -- Զ̻ط + // 11 -- + // 12 -- ǿƲ + // 13 -- · + // 14 -- ӸĸȨ + // 15 -- ģʽ + BYTE byNetPreviewRight[MAX_ALARMHOST_VIDEO_CHAN/8]; // Զ̿Ԥͨλʾͨbit0-channel 11-Ȩޣ0-Ȩ + BYTE byNetRecordRight[MAX_ALARMHOST_VIDEO_CHAN/8]; // Զ̿¼ͨλʾͨbit0-channel 11-Ȩޣ0-Ȩ + BYTE byNetPlaybackRight[MAX_ALARMHOST_VIDEO_CHAN/8]; // Զ̿Իطŵͨλʾͨbit0-channel 11-Ȩޣ0-Ȩ + BYTE byNetPTZRight[MAX_ALARMHOST_VIDEO_CHAN/8]; // Զ̿PTZͨλʾͨbit0-channel 11-Ȩޣ0-Ȩ + //BYTE byPriority; // ȼ0xff-ޣ0--ͣ1--У2-- + //ޣʾ֧ȼã + //ͣĬȨޣԶ̻طţԶ̲鿴־״̬Զ̹ػ/ + //УԶ̨̿Զֶ¼Զ̻طţԽԶԤرݣ/Զ̹ػ/ + //ߣԱ + BYTE sOriginalPassword[PASSWD_LEN]; // ԭʼ + BYTE sKeypadPassword[PASSWD_LEN]; // + BYTE byUserEnabled; // ûǷʹã0-Ч1-2- + BYTE byRes2[135]; // ֽ +}NET_DVR_ALARM_DEVICE_USER, *LPNET_DVR_ALARM_DEVICE_USER; + +typedef struct tagNET_DVR_KEYBOARD_USER +{ + DWORD dwSize; // ṹС + DWORD dwID; // ûID + BYTE byDefanceArea[MAX_ALARMHOST_ALARMIN_NUM]; //Ȩ ±ʾ ֧512 0 - Ȩ 1- Ȩ + BYTE byRes[560]; // ֽ +}NET_DVR_KEYBOARD_USER, *LPNET_DVR_KEYBOARD_USER; + +typedef struct tagNET_DVR_OPERATE_USER +{ + DWORD dwSize; // ṹС + BYTE sUserName[NAME_LEN]; // û + BYTE sPassword[PASSWD_LEN]; // + BYTE bySubSystemPermission;/*0-װԱȨ ԱȨޣϵͳ£ 1-޲棬· 2-޳棬· 3-޲棬· + 4-в//棬· 5-г棬· 6-в棬· 7-޲棬· + 8-޲棬· 9-޲棬· 10-в棬· 11-г棬· 1 + 2-в棬·*/ + BYTE byRes[63]; // ֽ +}NET_DVR_OPERATE_USER, *LPNET_DVR_OPERATE_USER; + +typedef struct tagNET_DVR_GATEWAY_CFG +{ + DWORD dwSize; // ṹС + BYTE byName[NAME_LEN]; // Ž + BYTE byEnable; // Ƿ + BYTE byLocalEnable; // Ƿ + WORD wDelayTime; // ʱʱ λΪ0-65535 0Ϊһֱ + BYTE byLockWorkMode;//ģʽ0-ͨ1-ϵ + BYTE byRes[31]; // ֽ +}NET_DVR_GATEWAY_CFG, *LPNET_DVR_GATEWAY_CFG; + +typedef struct tagNET_DVR_SENSOR_ALARM +{ + DWORD dwSize; // ṹС + DWORD dwAbsTime; // ʱϢ OSDʾϢ + BYTE byName[NAME_LEN]; // sensor + BYTE bySensorChannel; // ģͨ + BYTE byType; // ģ + BYTE byAlarmType; // 1-42-33-24-15-16-27-38-4 ͵ǰģʽй + // 統Ϊ1000ʱ,1123ֱ + BYTE byAlarmMode; //ģʽ֣-HHHH-HHHL-HHLLHLLL-LLLL Ϊƽ̶̨жϹ,1111ϣ1110£1100£1000()0000() + float fValue; // ǰģֵ + float fOriginalValue; //ԭʼѹֵСλֵʾǵѹNET_DVR_SENSOR_INFObySensorStandard + BYTE byRes2[28]; // ֽ +}NET_DVR_SENSOR_ALARM, *LPNET_DVR_SENSOR_ALARM; + +#define PROTOCOL_VERTION_LEN 32 + +typedef struct tagNET_DVR_RS485_PROTOCOL_VERSION +{ + DWORD dwSize; + BYTE byProtocleVersion[PROTOCOL_VERTION_LEN];//RS485Э汾Ϣ + BYTE byRes[128]; +}NET_DVR_RS485_PROTOCOL_VERSION, *LPNET_DVR_RS485_PROTOCOL_VESRION; + + +typedef struct +{ + /*ԤĿǰıû(򣬼)*/ + DWORD dwAlarmType; + /*0Ӧ1˿*/ + BYTE byAlarmInputNumber[MAX_ALARMHOST_ALARMIN_NUM]; + BYTE byRes[160]; +}NET_DVR_ALARMHOST_ALARMINFO,*LPNET_DVR_ALARMHOST_ALARMINFO; +// ϴ +typedef struct tagNET_DVR_SWITCH_ALARM +{ + DWORD dwSize; + BYTE byName[NAME_LEN]; // switch + WORD wSwitchChannel; // ͨ, 0-255 + BYTE byAlarmType; // 0--1--·2--·,3-쳣 + BYTE byRes[41]; // ֽ +}NET_DVR_SWITCH_ALARM, *LPNET_DVR_SWITCH_ALARM; + +typedef union tagNET_DVR_ALARMHOST_EXCEPTION_PARAM +{ + DWORD dwUnionSize[20]; // С +}NET_DVR_ALARMHOST_EXCEPTION_PARAM, *LPNET_DVR_ALARMHOST_EXCEPTION_PARAM; + +typedef struct tagNET_DVR_ALARMHOST_EXCEPTION_ALARM +{ + DWORD dwSize; // ṹС + // 쳣 1-豸𱨾 2-豸ָ 3-Դ籨 4-Դָ 5-ڲͨŹϱ + // 6-ڲͨŹϺָ 7-绰߶ 8-绰߶߻ָ 9-Լʧܱ 10-Լʧָܺ + // 11Ƿѹ 12صѹָ13-عϣ14-MBUSģߣ15-MBUSģ߻ָ16-̵ߣ + //17-̵߻ָ18-豸ƶ19-豸ƶλ 20-485·ϱ 21-485·Ϻָ + //25-Ӱ1,26-Ӱ1γ, 27-Ӱ2,28-Ӱ2γ + DWORD dwExceptionType; + BYTE byRes[36]; // +}NET_DVR_ALARMHOST_EXCEPTION_ALARM, *LPNET_DVR_ALARMHOST_EXCEPTION_ALARM; + +//вŲü÷ʽ +#define MAX_CENTERNUM 4 //G1,G2 G3 G4N1N2N3N4T1T2T3T4 +typedef struct tagNET_DVR_PHONECENTERDIALCFG +{ + BYTE sCenterName[NAME_LEN]; + BYTE byPhoneNum[MAX_PHONE_NUM/*32*/]; //ĺ + BYTE byRepeatCall; //ظŴ1~15 + BYTE byPstnProtocol; //ͨЭ飬0-CID + BYTE byDialDelay; //ʱ150s, 0-150 + BYTE byPstnTransMode; //䷽ʽ0-DTMF 5/S1-DTMF 10/S + BYTE byEnable; //ʹܣ0-رգ1- + BYTE byRes1[5]; + BYTE byReceiverId[6]; //ջʶ˺ţ + BYTE byRes2[32]; +}NET_DVR_PHONECENTERDIALCFG, *LPNET_DVR_PHONECENTERDIALCFG; + +typedef struct tagNET_DVR_ALARMHOSTDIALCFG +{ + DWORD dwSize; + NET_DVR_PHONECENTERDIALCFG struPhoneCenterParam[MAX_CENTERNUM];//IJ + WORD wReportPeriod; //ԱϴڣСʱֵ֧7죬168Сʱ), Χ1-168 + WORD wFirstReportTime; //豸һԱϴ1~3600 + BYTE byReportValid; //0-òԱϴ 1-òԱϴ + BYTE byRes[19]; +}NET_DVR_ALARMHOSTDIALCFG, *LPNET_DVR_ALARMHOSTDIALCFG; + +typedef struct tagNET_DVR_ALARMHOSTDIALSETUPMODE +{ + DWORD dwSize; + BYTE byEnableMode;//÷ʽ0ã1һֱã2:߶ãʱرգ + BYTE byCallType; //ϴķʽ1-ģ2-˫ģ3һһ + BYTE byRes1[14]; +}NET_DVR_ALARMHOSTDIALSETUPMODE, *LPNET_DVR_ALARMHOSTDIALSETUPMODE; + +#define MAX_PU_CHAN_NUM 512 + +typedef struct tagNET_DVR_PU_CHAN_INFO +{ + NET_DVR_IPADDR struIpAddr; // ipַ + WORD wPort; // ˿ + WORD wChannel; // ͨ + BYTE byRes[24]; // +}NET_DVR_PU_CHAN_INFO, *LPNET_DVR_PU_CHAN_INFO; + +typedef struct tagNET_DVR_PU_CHAN_LIST +{ + DWORD dwSize; // ṹ + DWORD dwNum; // ǰͨ + NET_DVR_PU_CHAN_INFO struPuChanInfo[MAX_PU_CHAN_NUM]; +}NET_DVR_PU_CHAN_LIST, *LPNET_DVR_PU_CHAN_LIST; + +#define MAX_ALARM_CAM_NUM 32 // CAM + +typedef struct tagNET_DVR_PTZ_CTRL +{ + BYTE byEnable; // ǷPTZ + BYTE byType; // PTZ Ƶ 1- Ԥõ 2 -Ѳ 3- + BYTE byPtzNo; // ptz ƵԤõ Ѳ + BYTE byRes[5]; // ֽ +}NET_DVR_PTZ_CTRL, *LPNET_DVR_PTZ_CTRL; + +typedef struct tagNET_DVR_ALARM_CAM_INFO +{ + DWORD dwCamID; // CAMͨ + DWORD dwRecordTime; // ¼ʱ λΪs -1ʾһֱ¼ 0 ʾ¼ + DWORD dwMonID; // CamMonʾ + DWORD dwResidentTime; // Ѳͣʱ䵥λΪs -1ʾһֱͣ 0 ʾͣ + NET_DVR_PTZ_CTRL struPtzCtrl; // PTZϢ + BYTE byAlarmOffMode; // лǽȡģʽ 0-ȡ1-Զȡ2-ֶȡ ȡȡʱȡǽ ԶȡȡʱȴһʱȡǽԼ20 ֶȡûֶͨķʽȡ + BYTE byDevType; // 豸Ϊ豸ʱЧʾܱ豸ȡԴ 1-뿨 2-뿨 + BYTE byDecChan; // ΪͨΪͨ + BYTE byRes[17]; // ֽ +}NET_DVR_ALARM_CAM_INFO, *LPNET_DVR_ALARM_CAM_INFO; + +typedef struct tagNET_DVR_ALARM_CAM_CFG +{ + DWORD dwSize; // ṹС + BYTE byEnable; // ǷñCAM 豸Ĭϲ + BYTE byRes[7]; // ֽ + DWORD dwNum; // CAMĸ ȡǰЧ + NET_DVR_ALARM_CAM_INFO struAlarmCam[MAX_ALARM_CAM_NUM]; +}NET_DVR_ALARM_CAM_CFG, *LPNET_DVR_ALARM_CAM_CFG; + +#define MAX_GATEWAY_NUM 8 // Ž +typedef struct tagNET_DVR_ALARMHOST_AUDIO_ASSOCIATE_ALARM +{ + DWORD dwSize; + BYTE byEnterDoor[8]; // ±ʾŽţԪֵʾϢ0ʾ 1-8ʾƵ + BYTE byExitDoor[8]; // ±ʾŽţԪֵʾϢ0ʾ 1-8ʾƵ + BYTE byAlarmIn[MAX_ALARMHOST_ALARMIN_NUM/*512*/]; //룬±ʾţԪֵʾϢ0ʾ 1-8ʾƵ + BYTE byRes[128]; +}NET_DVR_ALARMHOST_AUDIO_ASSOCIATE_ALARM, *LPNET_DVR_ALARMHOST_AUDIO_ASSOCIATE_ALARM; + +//ϴأϴصչ +typedef struct tagNET_DVR_UPLOAD_PARAM +{ + DWORD dwSize; + BYTE byUploadType; /*ϴʽ1-ļԵַȡļϴ 2-ӻȡϴ*/ + BYTE byDataType; //ͣ1-Ƶ + BYTE byDataNum; //ݱţ磺ϴòʾţţεˡڵ + BYTE byAudioType; //ʽ0-wave + char sFileName[260]; //ļȫ· + char *lpBuffer; //ݻ + DWORD dwBufferSize; //С + BYTE byRes2[128]; +}NET_DVR_UPLOAD_PARAM, *LPNET_DVR_UPLOAD_PARAM; + +typedef void (CALLBACK *DATADOWNLOAD)(LONG nDownloadHandle, DWORD dwDataType, void* pBuffer, DWORD dwBufSize, void *pUser); +typedef struct tagNET_DVR_ALARMHOST_PARAM +{ + DWORD dwSize; + BYTE byDownType; /*صݱ淽ʽ1-ļԵַݣ 2-ͨصȡ*/ + BYTE byDataType; //ͣ1-Ƶ + BYTE byDataNum; //ݱţ磺òʾţţεˡڵ + BYTE byRes1; + char sFileName[260]; //ļȫ· + DATADOWNLOAD lpDataCallBack; //ʱĻص + void* pUserData; //ûݣڻصд + BYTE byRes2[128]; +}NET_DVR_DOWNLOAD_PARAM, *LPNET_DVR_DOWNLOAD_PARAM; + + +typedef struct tagNET_DVR_ALARMHOST_DOWNLOAD_PARAM +{ + DWORD dwSize; + BYTE byDownType; /*صݱ淽ʽ1-ļԵַݣ 2-ͨصȡ*/ + BYTE byDataType; //ͣ1-Ƶ + BYTE byDataNum; //ݱţ磺òʾţţεˡڵ + BYTE byRes1; + char sFileName[260]; //ļȫ· + DATADOWNLOAD lpDataCallBack; //ʱĻص + void* pUserData; //ûݣڻصд + BYTE byRes2[128]; +}NET_DVR_ALARMHOST_DOWNLOAD_PARAM, *LPNET_DVR_ALARMHOST_DOWNLOAD_PARAM; + +//LEDĻ +typedef struct tagNET_DVR_LED_SCREEN_CFG +{ + DWORD dwSize; + BYTE sLEDName[NAME_LEN/*32*/]; // LEDĻ + BYTE byTransMode; // ִֻ֧ͨѶ 1-ͨ + BYTE byProtocolType; // ЭͣӦLEDij + BYTE byLEDColor; // 1-ɫ 2-˫ɫ 3-256Ҷ˫ɫ 4- ȫɫĿǰֻõɫ + BYTE byDataPolarity; // ݼ .0-1- + BYTE byOEPolarity; // 0-Ч 1-Ч + BYTE byScanMode; // 1-1/16, 2-1/8, 3-1/4, 4-1/2, 5-̬ + BYTE byRes1[2]; + //ĻȺ͸߶С16*16㣬8 + WORD wLEDWidth; // 16~2048 + WORD wLEDHeight; // 16~2048 + BYTE byRes2[64]; +}NET_DVR_LED_SCREEN_CFG, *LPNET_DVR_LED_SCREEN_CFG; + +//LED +#define MAX_CONTENT_LEN 512 +typedef struct tagNET_DVR_LED_CONTENT_CFG +{ + DWORD dwSize; + BYTE sLEDContent[MAX_CONTENT_LEN]; // LEDĻʾ + BYTE byContentAct; // 1-̬2-ٴ3-ƶ4-ƶ 5-ƶ 6-ƶ + BYTE byContentSpeed; // 1-241죬24 + BYTE byContentStayTime; // 0-127.5s(0.5s SDKʱ*2ֵ0-255豸ʹõʱ2) + BYTE byRes[33]; +}NET_DVR_LED_CONTENT_CFG, *LPNET_DVR_LED_CONTENT_CFG; + +//LEDʱػ +#define LED_TIMER_NUM 3 // LEDػʱ +#define TIME_SEGMENT_A_DAY 48 // ʱθһ24СʱСʱһ + +typedef struct tagNET_DVR_SWITCH_TIME +{ + BYTE byValid; // 鶨ʱʱǷЧʱdzɶõ + BYTE byRes[3]; + NET_DVR_TIME_EX struTimeOn; // ʱ + NET_DVR_TIME_EX struTimeOff; // ػʱ +}NET_DVR_SWITCH_TIME, *LPNET_DVR_SWITCH_TIME; + + +typedef struct tagNET_DVR_LED_SWITCH_TIME +{ + DWORD dwSize; + NET_DVR_SWITCH_TIME struTimer[LED_TIMER_NUM /*3*/]; //ʱػʱ䣬ṹֻСʱͷЧÿ鿪ʱҪڸĹػʱ䣬ǰһĹػʱҪ磺struTimer[0]Ĺػʱ1000ôstruTimer[0]ĿʱΪ10:00֮ǰ struTimer[1]ĿʱΪ10:00Ժ + BYTE byRes[64]; +}NET_DVR_LED_SWITCH_TIME, *LPNET_DVR_LED_SWITCH_TIME; + +//ʱȵ +typedef struct tagNET_DVR_LED_BRIGHTNESS_STEP +{ + DWORD dwSize; + BYTE byValid; //ʱȵǷЧ + BYTE byRes1[3]; + BYTE byBrightnessStep[TIME_SEGMENT_A_DAY /*48*/]; //ȫ24СʱΪ48ʱΣÿ30һʱΣ48ֽڱʾÿʱεȼȹ160~15ʾ + BYTE byRes2[48]; +}NET_DVR_LED_BRIGHTNESS_STEP, *LPNET_DVR_LED_BRIGHTNESS_STEP; + +typedef struct tagNET_DVR_LED_STATUS +{ + DWORD dwSize; + BYTE bySwitchState; //1-״̬ 2-ػ״̬ + BYTE byBrightness; //ֵΧ0-15 + BYTE byRes[62]; +}NET_DVR_LED_STATUS, *LPNET_DVR_LED_STATUS; + +//2010-12-28 뿨 begin +//µĽ뿨 +#define MAX_DECODE_CARD_NUM 6 //뿨 +/********************뿨ģʽ궨********************/ +typedef enum _HD_DISPLAY_FORMAT +{ + HD_DISPLAY_FORMAT_INVALID = 0x00000000, + HD_DISPLAY_FORMAT_CVBS = 0x00000001, + HD_DISPLAY_FORMAT_DVI = 0x00000002, + HD_DISPLAY_FORMAT_VGA = 0x00000004, + HD_DISPLAY_FORMAT_HDMI = 0x00000008, + HD_DISPLAY_FORMAT_YPbPr = 0x00000010 +}HD_DISPLAY_FORMAT,*LPHD_DISPLAY_FORMAT; + +/********************뿨ģʽ궨********************/ +typedef struct tagNET_DVR_DECCARD_ABILITY /*뿨*/ +{ + BYTE byCardType; //뿨(0:MD,1:MD+,2:HD) + BYTE byDecNums; //ͨ + BYTE byDispNums; //ʾͨ + BYTE byDecStartIdx; //׸ͨнͨе + BYTE byDispStartIdx; //׸ʾͨʾͨе + BYTE byDispResolution[80]; //ģʽֵ֧ķֱ + BYTE byDispFormat[8]; //ֵ֧ģʽ(HD_DISPLAY_FORMAT) + BYTE byWindowMode[4][8]; //ֵ֧Ĵģʽ(1,2,4,9,16)) + BYTE byRes[35]; +} NET_DVR_DECCARD_ABILITY,*LPNET_DVR_DECCARD_ABILITY; + +typedef struct tagNET_DVR_DECODESVR_ABILITY +{ + DWORD dwSize; /* ṹС */ + BYTE byCardNums; /* 뿨 */ + BYTE byStartChan; /* ʼͨ */ + BYTE byRes1[2]; + NET_DVR_DECCARD_ABILITY struDecCardAbility[MAX_DECODE_CARD_NUM]; + BYTE byRes2[64]; +}NET_DVR_DECODESVR_ABILITY, *LPNET_DVR_DECODESVR_ABILITY; + +typedef struct tagNET_MATRIX_DEV_CHAN_INFO +{ + NET_DVR_IPADDR struIP; //DVR IPַ + WORD wDVRPort; //˿ں + BYTE byChannel; //ͨ + BYTE byTransProtocol; //Э0-TCP1-UDP + BYTE byTransMode; //ģʽ 0 1 + BYTE byFactoryType; /*ǰ豸,ͨӿڻȡ*/ + BYTE byUsedSlotNum; //Ƿʹòλţ0-ʹã1-ʹ + BYTE bySlotNum;//λ + BYTE byRes[68]; + BYTE sUserName[NAME_LEN]; //½ʺ + BYTE sPassword[PASSWD_LEN]; // +}NET_MATRIX_DEV_CHAN_INFO,*LPNET_MATRIX_DEV_CHAN_INFO; + +typedef struct tagNET_MATRIX_PU_STREAM_CFG +{ + DWORD dwSize; + NET_DVR_STREAM_MEDIA_SERVER_CFG struStreamMediaSvrCfg; + NET_MATRIX_DEV_CHAN_INFO struDevChanInfo; +} NET_MATRIX_PU_STREAM_CFG,LPNET_MATRIX_PU_STREAM_CFG; + +/*cameraõԪṹ*/ +typedef struct tagNET_DVR_MATRIX_CAMERACFG +{ + DWORD dwGlobalIndex;//ȫֱ + DWORD dwInterIndex;//ֲ + BYTE sCamName[NAME_LEN]; + NET_MATRIX_PU_STREAM_CFG struPuStreamCfg; +} NET_DVR_MATRIX_CAMERACFG,*LPNET_DVR_MATRIX_CAMERACFG; + +typedef struct tagNET_DVR_MATRIX_CAMERALIST +{ + DWORD dwSize; + BYTE byRes[12]; + DWORD dwCamNum;//CAM + BYTE *pBuffer; + DWORD dwBufLen;//ָ볤ȣ +} NET_DVR_MATRIX_CAMERALIST,*LPNET_DVR_MATRIX_CAMERALIST; + +typedef struct tagNET_DVR_DISP_CHAN_INFO +{ + NET_DVR_IPADDR struIP; /* IPַ */ + WORD wDVRPort; /* ˿ں */ + BYTE byDispChannel; /* ʾͨ */ + BYTE byUsedSlotNum; //Ƿʹòλţ0-ʹã1-ʹ + BYTE bySlotNum;//λ + BYTE byRes[7]; + BYTE sUserName[NAME_LEN]; /*½ʺ */ + BYTE sPassword[PASSWD_LEN]; /* */ +}NET_DVR_DISP_CHAN_INFO,*LPNET_DVR_DISP_CHAN_INFO; + +/*monitorõԪṹ*/ +typedef struct tagNET_DVR_MATRIX_MONITORCFG +{ + DWORD dwGlobalIndex;//ȫֱ + DWORD dwInterIndex; + BYTE sMonName[NAME_LEN]; + NET_DVR_DISP_CHAN_INFO struDispChanCfg; +} NET_DVR_MATRIX_MONITORCFG,*LPNET_DVR_MATRIX_MONITORCFG; + +typedef struct tagNET_DVR_MATRIX_MONITORLIST +{ + DWORD dwSize; + BYTE byRes[12]; + DWORD dwMonNum;//MON + BYTE *pBuffer; + DWORD dwBufLen;//ָ볤ȣ +} NET_DVR_MATRIX_MONITORLIST,*LPNET_DVR_MATRIX_MONITORLIST; + +#define MAX_SUBMATRIX_NUM 8//ϵͳ +typedef struct tagNET_DVR_SUBMATRIXINFO +{ + BYTE byMainMatrix;//Ƿϵͳ1-ǣ0- + BYTE bySubMatrixSequence;//Ƶۺƽ̨ϵͳ + BYTE byLoginType;//עͣ1-ֱ2-DNS3- + BYTE byRes1[9]; + NET_DVR_IPADDR struSubMatrixIP; /*IPַ޸ģ*/ + WORD wSubMatrixPort; /*ϵͳ˿ںţ޸ģ*/ + BYTE byRes2[6]; + NET_DVR_IPADDR struSubMatrixIPMask; /*IPַ*/ + NET_DVR_IPADDR struGatewayIpAddr; /* صַ */ + BYTE sUserName[NAME_LEN]; /* û ˲ֻܻȡ*/ + BYTE sPassword[PASSWD_LEN]; /* ˲ֻܻȡ*/ + char sDomainName[MAX_DOMAIN_NAME];//(޸) + char sDnsAddress[MAX_DOMAIN_NAME];/*DNSIPַ*/ + BYTE sSerialNumber[SERIALNO_LEN];//кţ˲ֻܻȡ + BYTE byRes3[16]; +}NET_DVR_SUBMATRIXINFO, *LPNET_DVR_SUBMATRIXINFO; + +typedef struct tagNET_DVR_ALLUNITEDMATRIXINFO +{ + DWORD dwSize; + NET_DVR_SUBMATRIXINFO struSubMatrixInfo[MAX_SUBMATRIX_NUM]; + BYTE byRes2[32]; +}NET_DVR_ALLUNITEDMATRIXINFO, *LPNET_DVR_ALLUNITEDMATRIXINFO; + +#define MAX_GATEWAYTRUNKNUM 1024 //Ƶۺƽ̨·ɸ + +typedef struct tagNET_DVR_MATRIXGATEWAYNOTE +{ + WORD wTrunkInToOutAbility;//ߴD1ı׼4ʾ֧4D1 + WORD wTrunkOutToInAbility;//ߴD1ı׼4ʾ֧4D1˫ʱõֵ + BYTE byRes[4]; + NET_DVR_MATRIXSUBSYSTEMINFO struInputNote; + NET_DVR_MATRIXSUBSYSTEMINFO struOutputNote; +}NET_DVR_MATRIXGATEWAYNOTE, *LPNET_DVR_MATRIXGATEWAYNOTE; + +typedef struct tagNET_DVR_MATRIXGATEWAYINFO +{ + DWORD dwSize; + NET_DVR_MATRIXGATEWAYNOTE struGatewayNote[MAX_GATEWAYTRUNKNUM]; + BYTE byRes [32]; +}NET_DVR_MATRIXGATEWAYINFO, *LPNET_DVR_MATRIXGATEWAYINFO; + +typedef struct tagNET_DVR_MATRIXCODESYSTEMINFO +{ + BYTE byMatrixNum;//Ƶۺƽ̨ + BYTE bySubSystemNum;//ϵͳλ + BYTE byChan;//ͨ + BYTE byRes [13]; +}NET_DVR_MATRIXCODESYSTEMINFO,*LPNET_DVR_MATRIXCODESYSTEMINFO; +typedef struct tagNET_DVR_MATRIXDECODESYSTEMINFO +{ + BYTE byMatrixNum;//Ƶۺƽ̨ + BYTE bySubSystemNum;//ϵͳλ + BYTE byDispChan;//ʾͨ + BYTE bySubDispChan;//ʾͨͨ + BYTE byRes [12]; +}NET_DVR_MATRIXDECODESYSTEMINFO,*LPNET_DVR_MATRIXDECODESYSTEMINFO; + +typedef struct tagNET_DVR_MATRIXSWITCH +{ + NET_DVR_MATRIXCODESYSTEMINFO struInputNote; + NET_DVR_MATRIXDECODESYSTEMINFO struOutputNote; + BYTE byRes[32]; +}NET_DVR_MATRIXSWITCH, *LPNET_DVR_MATRIXSWITCH; + +typedef enum { + ENC_CARD = 0, + DEC_CARD, + SD_DEC_CARD, + FPGA_CARD, + CS_CARD, + ALERTOR_CARD, + NAT_0, + NAT_1, + VCA_CARD, + VGA_DEC_CARD, + VGA_ENC_CARD, + ERR_CARD, +} DEV_TYPE; + +typedef struct tagNET_DVR_MATRIXSWITCHCTRL +{ + DWORD dwCamId;//ȫֱ + DWORD dwMonId;//ʾȫֱ + BYTE bySubWindowNum;//ʾӦӴں + BYTE bySwitchType;/*лͣ0:л1:л2:ȡ0xff:ʾMONбȫȡ*/ + WORD wAlarmType;//豸ͣ1:2豸 + DWORD dwResidentTime;/* ʾפʱ䣬0xFFFFFFFF ʱ Ϊפʾ*/ + BYTE byVcaDevType;//豸"豸"ʱDEV_TYPE + BYTE byWallNo;//ǽ + BYTE byRes[18]; +}NET_DVR_MATRIXSWITCHCTRL, *LPNET_DVR_MATRIXSWITCHCTRL; + +typedef struct tagNET_DVR_MATRIXDATABASE +{ + //ļͣ1-ݿļ2-ݿļ3-ƽ̨ݿļ4-ļ0xffһʧܵݿ + DWORD dwDevType; + DWORD dwParam; //ššƽ̨ţļʱֵ + BYTE byFileType;//ļͣ1-sql䣬2-db䣬3-ļ + BYTE byRes [3]; +} NET_DVR_MATRIXDATABASE, *LPNET_DVR_MATRIXDATABASE; + +typedef struct tagNET_DVR_SUBSYSTEMINFO_V40 +{ +/*ϵͳͣ1-ϵͳ2-ϵͳ3-ϵͳ4-ϵͳ5-ϵͳ6-ϵͳ7-ϵͳ8-V6ϵͳ + 9-V6ϵͳ10-תϵͳ11-X86ϵͳ12-ϵͳ13-X86ķ壬14- X86ҵ壬15-ƴϵͳ 16-˽ϵͳ17-X86ƴϵͳ18-ͨƴϵͳ19-Ƶϵͳ0-NULL˲ֻܻȡ*/ + BYTE bySubSystemType; + //ϵͳͨϵͳ485˲ֻܻȡ + BYTE byChan; + BYTE byLoginType;//עͣ1-ֱ2-DNS3- + BYTE bySlotNum ;//λţ˲ֻܻȡ + BYTE byRes1[4]; + NET_DVR_IPADDR struSubSystemIP; /*IPַ޸ģ*/ + NET_DVR_IPADDR struSubSystemIPMask;// + NET_DVR_IPADDR struGatewayIpAddr; /* صַ */ + WORD wSubSystemPort; //ϵͳ˿ںţ޸ģ + BYTE byRes2[6]; + BYTE sUserName[NAME_LEN]; /* û ˲ֻܻȡ*/ + BYTE sPassword[PASSWD_LEN]; /*(޸)*/ + char sDomainName[MAX_DOMAIN_NAME];//(޸) + char sDnsAddress[MAX_DOMAIN_NAME];/*DNSIPַ*/ + BYTE sSerialNumber[SERIALNO_LEN];//кţ˲ֻܻȡ + BYTE byBelongBoard;//Ӱţ1ʼ0xffʾЧ + BYTE byInterfaceType;//ӿͣ0-ͣ1-BNC2-VGA3-HDMI4-DVI5-SDI, 6-FIBER, 7-RGB, 8-YPrPb, 9-VGA/HDMI/DVIӦ10-3GSDI, 11-VGA/DVIӦ12-HDTVI13-HDBaseT14-DP15-DVIT16-TVI,17-VSCREEN,18-miniDP,0xff-Ч + BYTE byInterfaceNums;//ӿڸ0xffʾЧ + BYTE byInterfaceStartNum;//ӿʼţ0xffʾЧ + BYTE byDeviceName[20];//ϵͳ + BYTE byAudioChanNums; //Ƶͨ + BYTE byAudioChanStartNum; //Ƶͨʼ + BYTE byAudioChanType;//Ƶͨͣ0-Ч1-Ƶ룬2-Ƶ + BYTE byRes3[33]; +}NET_DVR_SUBSYSTEMINFO_V40, *LPNET_DVR_SUBSYSTEMINFO_V40; + +#define MAX_SUBSYSTEM_NUM_V40 120 +typedef struct tagNET_DVR_ALLSUBSYSTEMINFO_V40 +{ + DWORD dwSize; + NET_DVR_SUBSYSTEMINFO_V40 struSubSystemInfo[MAX_SUBSYSTEM_NUM_V40]; + BYTE byRes[8]; +}NET_DVR_ALLSUBSYSTEMINFO_V40, *LPNET_DVR_ALLSUBSYSTEMINFO_V40; + +typedef struct tagNET_DVR_SUBSYSTEM_BASIC_INFO +{ + DWORD dwSize; + /*ϵͳͣ1-ϵͳ2-ϵͳ3-ϵͳ4-ϵͳ5-ϵͳ6-ϵͳ7-ϵͳ8-Fpgaϵͳ9-Fpgaϵͳ10-תϵͳ11-X86ϵͳ12-ϵͳ13-X86ķ壬 14- X86ҵ壬15-ƴϵͳ 16-˽ϵͳ17-X86ƴϵͳ18-ͨƴϵͳ19-źŽϵͳ,0-NULL˲ֻܻȡ*/ + BYTE bySubSystemType; + //ϵͳͨϵͳ485˲ֻܻȡ + BYTE bySubSystemNo;//ϵͳţ˲ֻܻȡ + BYTE byInterfaceType;//ӿͣ0-ͣ1-BNC2-VGA3-HDMI4-DVI5-SDI, 6-FIBER, 7-RGB, 8-YprPb, 9-VGA/HDMI/DVIӦ10-3GSDI, 11-VGA/DVIӦ12-HDTVI13-HDBaseT14-DP15-DVIT0xff-Ч + BYTE byRes1; + DWORD dwChan; + NET_DVR_IPADDR struSubSystemIP; /*IPַ޸ģ*/ + NET_DVR_IPADDR struSubSystemIPMask;// + NET_DVR_IPADDR struGatewayIpAddr; /* صַ */ + WORD wSubSystemPort; //ϵͳ˿ںţ޸ģ + BYTE byRes2[6]; + BYTE sSerialNumber[SERIALNO_LEN];//кţ˲ֻܻȡ + BYTE byBelongBoard;//Ӱţ1ʼ0xffʾЧbyBelongBoardHΪ0ʱֶοΪ0xff + BYTE byBelongBoardH; //ӰŸλ + BYTE byRes3[2]; + BYTE byDeviceName[20];//ϵͳ + DWORD dwStartChanNo;//ʼͨ + BYTE byDevNo; //豸 + BYTE byRes4[63]; +}NET_DVR_SUBSYSTEM_BASIC_INFO, *LPNET_DVR_SUBSYSTEM_BASIC_INFO; + +typedef struct NET_DVR_SUBSYSTEM_BASIC_INFO_RESPONSE +{ + DWORD dwSize; + DWORD dwErrorCode; // + BYTE byDevNo; //豸 + BYTE bySubSystemNo;//ϵͳ + BYTE byRes[30]; +} NET_DVR_SUBSYSTEM_BASIC_INFO_RESPONSE,*LPNET_DVR_SUBSYSTEM_BASIC_INFO_RESPONSE; + +typedef struct NET_DVR_CAMERA_INFO_RESPONSE +{ + DWORD dwErrorCode; // + DWORD dwCamId; /*cam ͳһ*/ + BYTE byRes[4]; +} NET_DVR_CAMERA_INFO_RESPONSE,*LPNET_DVR_CAMERA_INFO_RESPONSE; + +typedef struct NET_DVR_MONITOR_INFO_RESPONSE +{ + DWORD dwErrorCode; // + DWORD dwMonId; /*mon ͳһ*/ + BYTE byRes[4]; +} NET_DVR_MONITOR_INFO_RESPONSE, *LPNET_DVR_MONITOR_INFO_RESPONSE; + +typedef struct tagNET_DVR_AUDIO_INFO +{ + DWORD dwSize; + BYTE byAudioChanType;//Ƶͨͣ1-Ƶ룬2-Ƶ + BYTE byRes1[3]; + DWORD dwAudioNo; //Ƶ(1ֽ豸+1ֽӰ+2ֽƵں) + BYTE byRes2[16]; +}NET_DVR_AUDIO_INFO, *LPNET_DVR_AUDIO_INFO; + + +typedef struct tagNET_DVR_SINGLESUBSYSTEMJOININFO_V40 +{ + /*ϵͳͣ1-ϵͳ2-ϵͳ3-ϵͳ4-ϵͳ5-ϵͳ6-ϵͳ7-ϵͳ8-V6ϵͳ9-V6ϵͳ0-NULL˲ֻܻȡ*/ + BYTE bySubSystemType; + BYTE byConnectStatus;//ϵͳ״̬1-2-ӶϿ + BYTE byMatrixNum;//Ƶۺƽ̨ţϵͳ34ʱ + BYTE bySubSystemNum;//ϵͳλţ0~79ϵͳ34ʱ + NET_DVR_DECSUBSYSTEMJIONSTATUS struDecSub [MATRIX_MAXDECSUBSYSTEMCHAN]; + BYTE byBindStatus;//״̬0-ûа󶨣1-Ѿ󶨣ƴʱõ + BYTE bySlotNum ;//λţ˲ֻܻȡ + //ϵͳΪ1ʱã0-δ1-D12-7203-1080 + BYTE byDecodeAbility; + BYTE byUsedTrunk; + BYTE byRes[64]; +}NET_DVR_SINGLESUBSYSTEMJOININFO_V40,LPNET_DVR_SINGLESUBSYSTEMJOININFO_V40; + +typedef struct tagNET_DVR_ALLDECSUBSYSTEMJOININFO_V40 +{ + DWORD dwSize; + NET_DVR_SINGLESUBSYSTEMJOININFO_V40 struSingleSubSystemJoinInfo[MAX_SUBSYSTEM_NUM_V40]; + BYTE byRes[48]; +}NET_DVR_ALLDECSUBSYSTEMJOININFO_V40, *LPNET_DVR_ALLDECSUBSYSTEMJOININFO_V40; + +#define MAX_OPTICALFIBER_NUM 16 +typedef struct tagNET_DVR_SUBSYSTEM_ABILITY +{ +/*ϵͳͣ1-ϵͳ2-ϵͳ3-ϵͳ4-ϵͳ5-ϵͳ6-ϵͳ7-ϵͳ8-V6ϵͳ9-V6ϵͳ + 10-תϵͳ11-X86ϵͳ壬 14- X86ҵ壬15-ƴϵͳ 16-˽ϵͳ17-X86ƴϵͳ18-ͨƴϵͳ0-NULL˲0-NULL˲ֻܻȡ*/ + BYTE bySubSystemType; + BYTE byChanNum;//ϵͳͨ + BYTE byStartChan;//ϵͳʼͨ + BYTE bySlotNum ;//λ + BYTE byRes1[4]; + union + { + BYTE byRes[200]; + struct + { + BYTE byDecode; //ǷǴ빦ܵܰ,1-ǣ0- + BYTE byNeedPreAllocDec; //ǷҪԤԴ1-ǣ0- + BYTE byVACType; //ϵͳͣ0-ͨͣ1-ǿ + BYTE byRes[197]; + }struVACSystemAbility; + struct + { + BYTE byVGANums;//VGAʾͨ1ʼ + BYTE byBNCNums;//BNCʾͨ9ʼ + BYTE byHDMINums;//HDMIʾͨ25ʼ + BYTE byDVINums;//DVIʾͨ29ʼ + BYTE byLayerNums ;//ƴУʱ֧ͼ + BYTE bySpartan;//Թܣ0-֧֣1-֧ + BYTE byDecType; //ϵͳͣ0-ͨ,1-ǿ(ͨͷʱǰ4ʹԴǿ޴ƣǿɱϵͳ16·D1Դ + //ǿͱΪԴɱãܱͨ) + //2-ܹϵͳ3-תϵͳܺתϵͳڽǽ + BYTE byOutputSwitch;//Ƿ֧HDMI/DVIл0-֧֣1-֧ + BYTE bySDINums;//SDIʾͨ33ʼ + BYTE byRes1[38]; + BYTE byDecoderType ; //Ƿֶ֧೧룬0-֧֣1-֧ + BYTE byRes2[152]; + }struDecoderSystemAbility; + struct + { + BYTE byCoderType;//ͣ0-壬1-, 2-ģ + BYTE byOptical;//˻룬0-1- + BYTE byOpticalSubChan; //ÿŵ + BYTE bySupportAVSeparate;//Ƿ֧Ƶ룬0-֧֣1-֧ + BYTE byRes[196]; + }struCoderSystemAbility; + struct + { + WORD wTrunkAbility;//ߴD1ı׼4ʾ֧4D1 + BYTE byOpticalFiberNum;// + BYTE byRes[197]; + }struInputSystemAbility; + struct + { + WORD wTrunkAbility;//ߴD1ı׼4ʾ֧4D1 + BYTE byOpticalFiberNum;// + BYTE byRes[197]; + }struOutputSystemAbility; + struct + { + BYTE by485Num;//ϵͳ485 + BYTE bySlotNum;//ÿ485λ + BYTE byRes[198]; + }struCodeSpitterSystemAbility; + struct + { + WORD wAlarmInNums; + WORD wAlarmOutNums; + /* ʶǷӣ 1ʾӣ Ϊ0 ʾδ */ + BYTE byAlarmBoxEnable[4][8]; + BYTE bySupportContact; /* Ƶۺƽ̨ڲ0-֧,1-֧ */ + BYTE byRes[163]; + }struAlarmHostSystemAbility; + struct + { + BYTE byOpticalFiberNum;// + BYTE byRes1[3]; + //˴D1ı׼4ʾ֧4D1 + WORD wTrunkAbility[MAX_OPTICALFIBER_NUM/*16*/]; + BYTE byRes2[164]; + }struInOutputSystemAbility; + struct + { + BYTE bySupportRingProtocol; //Ƿֻ֧Э + BYTE bySupportRingNums; //ֻ֧ + BYTE bySupportPortNums; //ֵ֧Ķ˿ + BYTE byRes[1]; + DWORD dwPortSupportRingProto; //ÿ˿Ƿֻ֧Э飬λ㣬132λֱʾ132˿ڣ0-֧֣1-ʾ֧ + BYTE byRes2[192]; + } struFiberSwitchSystemAbility; + }struAbility; +}NET_DVR_SUBSYSTEM_ABILITY, *LPNET_DVR_SUBSYSTEM_ABILITY; + +typedef struct tagNET_DVR_VIDEOPLATFORM_ABILITY_V40 +{ + DWORD dwSize; + BYTE byCodeSubSystemNums;//ϵͳ + BYTE byDecodeSubSystemNums;//ϵͳ + BYTE bySupportNat;//Ƿ֧NAT0-֧֣1-֧ + BYTE byInputSubSystemNums;//ϵͳ + BYTE byOutputSubSystemNums;//ϵͳ + BYTE byCodeSpitterSubSystemNums;//ϵͳ + BYTE byAlarmHostSubSystemNums;//ϵͳ + BYTE bySupportBigScreenNum;//֧ɴĸ + BYTE byVCASubSystemNums;//ϵͳ + BYTE byV6SubSystemNums;//V6ϵͳ + BYTE byV6DecoderSubSystemNums;//V6ϵͳ + BYTE bySupportBigScreenX;/*ƴӵģʽmn*/ + BYTE bySupportBigScreenY; + BYTE bySupportSceneNums;//ֳ֧ģʽĸ + BYTE byVcaSupportChanMode;//ֵ֧ͨʹģʽ0-ʹýͨ1-ʹʾͨͨ + BYTE bySupportScreenNums;//ֵ֧ĴĻ + BYTE bySupportLayerNums;//ֵ֧ͼ0xff-Ч + BYTE byNotSupportPreview;//Ƿ֧Ԥ,1-֧֣0-֧ + BYTE byNotSupportStorage;//Ƿִ֧洢,1-֧֣0-֧ + BYTE byUploadLogoMode;//ϴlogoģʽ0-ϴͨ1-ϴʾͨ + NET_DVR_SUBSYSTEM_ABILITY struSubSystemAbility[MAX_SUBSYSTEM_NUM_V40]; + BYTE by485Nums;//485ڸ + BYTE by232Nums;//232ڸ + BYTE bySerieStartChan;//ʼͨ + BYTE byScreenMode;//ģʽ0-ɿͻ˷䣬1-豸˷ + BYTE byDevVersion;//豸汾0-B10/B11/B121-B20 + BYTE bySupportBaseMapNums;//ֵ֧ĵͼͼŴ1ʼ + WORD wBaseLengthX;//ÿСĻ׼ֵB20ʹ + WORD wBaseLengthY; + BYTE bySupportPictureTrans; //Ƿ֧ͼƬԣ0-֧֣1-֧ + BYTE bySupportPreAllocDec; //Ƿ֧ܽԴԤ䣬0-֧֣1-֧ + BYTE bySupportDecAutoManage; //Ƿֽ֧Դ + BYTE byTranDevSubSystemNums; //תϵͳ + BYTE byFiberSwitchNums; //ϵͳ + BYTE byRes2[625]; +}NET_DVR_VIDEOPLATFORM_ABILITY_V40, *LPNET_DVR_VIDEOPLATFORM_ABILITY_V40; + +typedef struct tagNET_DVR_VIDEOPLATFORM_ABILITY +{ + DWORD dwSize; + BYTE byCodeSubSystemNums;//ϵͳ + BYTE byDecodeSubSystemNums;//ϵͳ + BYTE bySupportNat;//Ƿ֧NAT0-֧֣1-֧ + BYTE byInputSubSystemNums;//ϵͳ + BYTE byOutputSubSystemNums;//ϵͳ + BYTE byCodeSpitterSubSystemNums;//ϵͳ + BYTE byAlarmHostSubSystemNums;//ϵͳ + BYTE bySupportBigScreenNum;//֧ƴ + BYTE byVCASubSystemNums;//ϵͳ + BYTE byRes1[11]; + NET_DVR_SUBSYSTEM_ABILITY struSubSystemAbility[MAX_SUBSYSTEM_NUM]; + BYTE by485Nums;//485ڸ + BYTE by232Nums;//485ڸ + BYTE bySerieStartChan;//ʼͨ + BYTE byRes2[637]; +}NET_DVR_VIDEOPLATFORM_ABILITY, *LPNET_DVR_VIDEOPLATFORM_ABILITY; +//ȡӿ + +//ģʽA +typedef struct tagNET_DVR_HOLIDATE_MODEA +{ + BYTE byStartMonth; // ʼ 1ʼ + BYTE byStartDay; // ʼ 1ʼ + BYTE byEndMonth; // + BYTE byEndDay; // + BYTE byRes[4]; // ֽ +}NET_DVR_HOLIDATE_MODEA, *LPNET_DVR_HOLIDATE_MODEA; + +typedef struct tagNET_DVR_HOLIDATE_MODEB +{ + BYTE byStartMonth; // 1ʼ + BYTE byStartWeekNum; // ڼ 1ʼ + BYTE byStartWeekday; // ڼ + BYTE byEndMonth; // 1ʼ + BYTE byEndWeekNum; // ڼ 1ʼ + BYTE byEndWeekday; // ڼ + BYTE byRes[2]; // ֽ +}NET_DVR_HOLIDATE_MODEB, *LPNET_DVR_HOLIDATE_MODEB; + +typedef struct tagNET_DVR_HOLIDATE_MODEC +{ + WORD wStartYear; // + BYTE byStartMon; // + BYTE byStartDay; // + WORD wEndYear; // + BYTE byEndMon; // + BYTE byEndDay; // +}NET_DVR_HOLIDATE_MODEC, *LPNET_DVR_HOLIDATE_MODEC; + +typedef union tagNET_DVR_HOLIDATE_UNION +{ + // С 12ֽ + DWORD dwSize[3]; + NET_DVR_HOLIDATE_MODEA struModeA; // ģʽA + NET_DVR_HOLIDATE_MODEB struModeB; // ģʽB + NET_DVR_HOLIDATE_MODEC struModeC; // ģʽC +}NET_DVR_HOLIDATE_UNION, *LPNET_DVR_HOLIDATE_UNION; + +typedef enum tagHOLI_DATE_MODE +{ + HOLIDATE_MODEA = 0, + HOLIDATE_MODEB, + HOLIDATE_MODEC +}HOLI_DATE_MODE; + +typedef struct tagNET_DVR_HOLIDAY_PARAM +{ + BYTE byEnable; // Ƿ + BYTE byDateMode; // ģʽ 0-ģʽA 1-ģʽB 2-ģʽC + BYTE byRes1[2]; // ֽ + NET_DVR_HOLIDATE_UNION uHolidate; // + BYTE byName[NAME_LEN]; // + BYTE byRes2[20]; // ֽ +}NET_DVR_HOLIDAY_PARAM, *LPNET_DVR_HOLIDAY_PARAM; + +#define MAX_HOLIDAY_NUM 32 + +typedef struct tagNET_DVR_HOLIDAY_PARAM_CFG +{ + DWORD dwSize; // ṹС + NET_DVR_HOLIDAY_PARAM struHolidayParam[MAX_HOLIDAY_NUM]; // ղ + DWORD byRes[40]; // +}NET_DVR_HOLIDAY_PARAM_CFG, *LPNET_DVR_HOLIDAY_PARAM_CFG; + +// ձʽ +typedef struct tagNET_DVR_HOLIDAY_HANDLE +{ + DWORD dwSize; // ṹС + NET_DVR_SCHEDTIME struAlarmTime[MAX_TIMESEGMENT_V30]; // ʱ + BYTE byRes2[240]; // ֽ +}NET_DVR_HOLIDAY_HANDLE, *LPNET_DVR_HOLIDAY_HANDLE; + +typedef struct tagNET_DVR_HOLIDAY_HANDLE_COND +{ + DWORD dwSize; // ṹС + DWORD dwChannel; //ͨ + DWORD dwSMDHandleType; //ܼղ 0-Ƶ쳣⣬1-齹⣬2- + BYTE byRes2[32]; // ֽ +}NET_DVR_HOLIDAY_HANDLE_COND, *LPNET_DVR_HOLIDAY_HANDLE_COND; + +typedef struct tagNET_DVR_HOLIDAY_RECORD +{ + DWORD dwSize; + NET_DVR_RECORDDAY struRecDay; // ¼ + NET_DVR_RECORDSCHED struRecordSched[MAX_TIMESEGMENT_V30]; // ¼ʱ + BYTE byRes[20]; // ֽ +}NET_DVR_HOLIDAY_RECORD, *LPNET_DVR_HOLIDAY_RECORD; + +#define MAX_LINK_V30 128 + +typedef struct tagNET_DVR_ONE_LINK +{ + NET_DVR_IPADDR struIP; // ͻIP + LONG lChannel; // ͨ + BYTE byRes[32]; // ֽ +}NET_DVR_ONE_LINK, *LPNET_DVR_ONE_LINK; + +typedef struct tagNET_DVR_LINK_STATUS +{ + DWORD dwSize; // ṹС + WORD wLinkNum; // ӵĿ + BYTE byRes1[2]; // ֽ + NET_DVR_ONE_LINK struOneLink[MAX_LINK_V30]; // ӵĿͻϢ + BYTE byRes[32]; // ֽ +}NET_DVR_LINK_STATUS, *LPNET_DVR_LINK_STATUS; + +#define MAX_BOND_NUM 2 + +typedef struct tagNET_DVR_ONE_BONDING +{ + BYTE byMode; // ģʽ0 - ݴ 1 - ؾ + BYTE byUseDhcp; // Ƿʹdhcp + BYTE byMasterCard; // ָΪ + BYTE byStatus; // BONDING״̬ 0 - 쳣 1- ֻܻȡ + BYTE byBond[MAX_NETWORK_CARD];// byBond[0]== 1 ʾʹeh0 0ʾʹeh0 + NET_DVR_ETHERNET_V30 struEtherNet; // + NET_DVR_IPADDR struGatewayIpAddr; // صַ + BYTE byEnableDNS; //DNSʹ, 0-رգ1- + BYTE byBondMode; //󶨷ʽ, 0-Ч1-ģʽ2-תģʽ3-XORģʽ4-㲥ģʽ5-802.3adģʽ6-T1bģʽ7-⻯ģʽ + BYTE byRes1[2]; + BYTE byBond2[MAX_NETWORK_CARD_EX/*12*/];// byBond2[0]== 1 ʾʹeh4 0ʾʹeh4byBondչ + BYTE byRes[4];// ֽ +}NET_DVR_ONE_BONDING, *LPNET_DVR_ONE_BONDING; + +typedef struct tagNET_DVR_NETWORK_BONDING +{ + DWORD dwSize; // ṹС + BYTE byEnable; // Ƿbonding + BYTE byNum; // Bondingĸ + BYTE byRes1[2]; // ֽ + NET_DVR_ONE_BONDING struOneBond[MAX_BOND_NUM]; + BYTE byRes2[40]; // ֽ +}NET_DVR_NETWORK_BONDING, *LPNET_DVR_NETWORK_BONDING; + + +// +typedef struct tagNET_DVR_DISK_QUOTA +{ + BYTE byQuotaType; // ,1 - 2-3-ʱ + BYTE byRes1[5]; // ֽ + WORD wStoragePeriod; //¼洢ڣλ죬ΪʱʱЧ + DWORD dwHCapacity; // Ĵ32λ λMB + DWORD dwLCapacity; // Ĵ32λ λMB + DWORD dwHUsedSpace; // ʹõĴ̴С32λ λMB + DWORD dwLUsedSpace; // ʹõĴ̴С32λ λMB + BYTE byQuotaRatio; // Ĵ̱,λ:% + BYTE byRes2[21]; // ֽ +}NET_DVR_DISK_QUOTA, *LPNET_DVR_DISK_QUOTA; + +typedef struct tagNET_DVR_DISK_QUOTA_CFG +{ + DWORD dwSize; // ṹС + NET_DVR_DISK_QUOTA struPicQuota; // ͼƬ + NET_DVR_DISK_QUOTA struRecordQuota; // ¼ + NET_DVR_DISK_QUOTA struAddInfoQuota; // Ϣ (ƴ洢Ŀǰֵ֧ĸϢУȶͼ) + BYTE byRes[12]; //ֽ +}NET_DVR_DISK_QUOTA_CFG, *LPNET_DVR_DISK_QUOTA_CFG; + +typedef struct tagNET_DVR_DISK_QUOTA_V60 +{ + BYTE byQuotaType; // ,1 - 2-3-ʱ + BYTE byRes1[5]; // ֽ + WORD wStoragePeriod; //¼洢ڣλ죬ΪʱʱЧ + DWORD dwHCapacity; // Ĵ32λ λMB + DWORD dwLCapacity; // Ĵ32λ λMB + DWORD dwHUsedSpace; // ʹõĴ̴С32λ λMB + DWORD dwLUsedSpace; // ʹõĴ̴С32λ λMB + BYTE byQuotaRatio; // Ĵ̱,λ:% + BYTE byRes2[23]; // ֽ +}NET_DVR_DISK_QUOTA_V60, *LPNET_DVR_DISK_QUOTA_V60; + +typedef struct tagNET_DVR_DISK_QUOTA_CFG_V60 +{ + DWORD dwSize; // ṹС + NET_DVR_DISK_QUOTA_V60 struPicQuota; // ͼƬ + NET_DVR_DISK_QUOTA_V60 struRecordQuota; // ¼ + NET_DVR_DISK_QUOTA_V60 struAddInfoQuota; // Ϣ (ƴ洢Ŀǰֵ֧ĸϢУȶͼ) + NET_DVR_DISK_QUOTA_V60 struPubInfoFile; // Ϣļٷֱ + BYTE byRes[256]; //ֽֽ +}NET_DVR_DISK_QUOTA_CFG_V60, *LPNET_DVR_DISK_QUOTA_CFG_V60; + + +typedef struct tagNET_DVR_TIMING_CAPTURE +{ + NET_DVR_JPEGPARA struJpegPara; // ʱץͼͼƬ + DWORD dwPicInterval; // ʱץͼʱ,λs 1-1s 2-2s 3-3s 4-4s 5-5s + // 6-10m 7-30m 8-1h 9-12h 10-24h + BYTE byRes[12]; // ֽ +}NET_DVR_TIMING_CAPTURE, *LPNET_DVR_TIMING_CAPTURE; + +typedef struct tagNET_DVR_REL_CAPTURE_CHAN +{ + BYTE byChan[16]; // λʾ + BYTE byRes[20]; // ֽ +}NET_DVR_REL_CAPTURE_CHAN, *LPNET_DVR_REL_CAPTURE_CHAN; + +#define MAX_PIC_EVENT_NUM 32 +#define MAX_ALARMIN_CAPTURE 16 + +typedef struct tagNET_DVR_REL_CAPTURE_CHAN_V40 +{ + DWORD dwMaxRelCaptureChanNum; //ɴĹͨ-ֻ + DWORD dwChanNo[MAX_CHANNUM_V40]; //Ĺץͼͨţֵʾý,0xffffffffʾЧ + BYTE byRes[32]; +}NET_DVR_REL_CAPTURE_CHAN_V40, *LPNET_DVR_REL_CAPTURE_CHAN_V40; + +typedef struct tagNET_DVR_EVENT_CAPTURE_V40 +{ + NET_DVR_JPEGPARA struJpegPara; // ¼ץͼͼƬ + DWORD dwPicInterval; // ¼ץͼʱ λΪ + NET_DVR_REL_CAPTURE_CHAN_V40 struRelCaptureChan[MAX_PIC_EVENT_NUM]; // ± 0 ƶⴥץͼ 1 Ƶڵץͼ 2 Ƶʧץͼ,3ʾPIRץͼ4ʾ߱ץͼ5ʾȱץͼ,6ʾץͼ + NET_DVR_REL_CAPTURE_CHAN_V40 struAlarmInCapture[MAX_ALARMIN_CAPTURE]; // 봥ץͼ±0 1 + DWORD dwMaxGroupNum; //豸ֵ֧󱨾ÿ16 + BYTE byCapTimes; //ץͼ + BYTE byRes[59]; +}NET_DVR_EVENT_CAPTURE_V40, *LPNET_DVR_EVENT_CAPTURE_V40; + + +typedef struct tagNET_DVR_EVENT_CAPTURE +{ + NET_DVR_JPEGPARA struJpegPara; // ¼ץͼͼƬ + DWORD dwPicInterval; // ¼ץͼʱ λΪ 1-1s 2-2s 3-3s 4-4s 5-5s + // 6-10m 7-30m 8-1h 9-12h 10-24h + /* + ± 0 ƶⴥץͼ 1 Ƶڵץͼ2 Ƶʧץͼ,3ʾPIRץͼ + 4ʾ߱ץͼ5ʾȱץͼ,6ʾץͼ,7 ʾץͼ + 8 ʾ-Խץͼ9 ʾץͼ,10ʾץͼ, + 11-,12-뿪,13-ǻ,14-Աۼ,15-˶, + 16-ͣ,17-Ʒ,18-Ʒȡ⡣ + */ + NET_DVR_REL_CAPTURE_CHAN struRelCaptureChan[MAX_PIC_EVENT_NUM]; + NET_DVR_REL_CAPTURE_CHAN struAlarmInCapture[MAX_ALARMIN_CAPTURE]; // 봥ץͼ±0 1 + BYTE byCapTimes; //ץͼ + BYTE byRes[59]; +}NET_DVR_EVENT_CAPTURE, *LPNET_DVR_EVENT_CAPTURE; + +typedef struct tagNET_DVR_JPEG_CAPTURE_CFG_V40 +{ + DWORD dwSize; //ṹ峤 + NET_DVR_TIMING_CAPTURE struTimingCapture; + NET_DVR_EVENT_CAPTURE_V40 struEventCapture; + BYTE byStreamType;//ץͼ 0-1- + BYTE byRes3[19]; // ֽ +}NET_DVR_JPEG_CAPTURE_CFG_V40, *LPNET_DVR_JPEG_CAPTURE_CFG_V40; + +typedef struct tagNET_DVR_JPEG_CAPTURE_CFG +{ + DWORD dwSize; // ṹС + NET_DVR_TIMING_CAPTURE struTimingCapture; + NET_DVR_EVENT_CAPTURE struEventCapture; + BYTE byStreamType;//ץͼ 0-1- + BYTE byRes3[19]; // ֽ +}NET_DVR_JPEG_CAPTURE_CFG, *LPNET_DVR_JPEG_CAPTURE_CFG; + +typedef struct tagNET_DVR_CAPTURE_DAY +{ + BYTE byAllDayCapture; // Ƿȫץͼ + BYTE byCaptureType; // ץͼͣ0-ʱץͼ1-ƶץͼ2-ץͼ3-ƶ򱨾ץͼ4-ƶͱץͼ6-ܱץͼ,7-ץͼ8-ȫ¼ ,39-߲ץͼ,40-41-,42ҵѯ 43-ŷʾ 44-Ҷȱ + BYTE byRes[2]; +}NET_DVR_CAPTURE_DAY, *LPNET_DVR_CAPTURE_DAY; + +typedef struct tagNET_DVR_CAPTURE_SCHED +{ + NET_DVR_SCHEDTIME struCaptureTime; // ץͼʱ + BYTE byCaptureType; // ץͼͣ0-ʱץͼ1-ƶץͼ2-ץͼ3-ƶ򱨾ץͼ4-ƶͱץͼ6-ܱץͼ,7-ץͼ8-ȫ¼ ,39-߲ץͼ ,40-41-,42ҵѯ 43-ŷʾ 44-Ҷȱ + BYTE byRes[3]; // ֽ +}NET_DVR_CAPTURE_SCHED, *LPNET_DVR_CAPTURE_SCHED; + +// ͨץͼƻ +typedef struct tagNET_DVR_SCHED_CAPTURECFG +{ + DWORD dwSize; // ṹ + BYTE byEnable; // Ƿץͼ + BYTE byRes1[3]; // ֽ + NET_DVR_CAPTURE_DAY struCaptureDay[MAX_DAYS]; // ȫץͼƻ + NET_DVR_CAPTURE_SCHED struCaptureSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; // ʱץͼƻ + NET_DVR_CAPTURE_DAY struCaptureHoliday; // ץͼƻ + NET_DVR_CAPTURE_SCHED struHolidaySched[MAX_TIMESEGMENT_V30]; // ʱμץͼƻ + DWORD dwRecorderDuration; // ץͼʱ 0xffffffffʾֵЧ + DWORD dwDelayTime; /* ץͼʱʱ 0- ʱ 1-3룬 2-4룬 3-5룬 4-10룬 5-30룬 6-60룬 7- 120룬8-300*/ + BYTE byRes[36]; // ֽ +}NET_DVR_SCHED_CAPTURECFG, *LPNET_DVR_SCHED_CAPTURECFG; + + +typedef struct tagNET_DVR_FLOW_TEST_PARAM +{ + DWORD dwSize; //ṹС + LONG lCardIndex; // + DWORD dwInterval; //豸ϴʱ, λ:100ms + BYTE byRes[8]; //ֽ +}NET_DVR_FLOW_TEST_PARAM, *LPNET_DVR_FLOW_TEST_PARAM; + +typedef struct tagNET_DVR_FLOW_INFO +{ + DWORD dwSize; //ṹС + DWORD dwSendFlowSize; //С,λkbps + DWORD dwRecvFlowSize; //С,λkbps + BYTE byRes[20]; // +}NET_DVR_FLOW_INFO, *LPNET_DVR_FLOW_INFO; + +// ¼ǩ +#define LABEL_NAME_LEN 40 +typedef struct tagNET_DVR_RECORD_LABEL +{ + DWORD dwSize; // ṹС + NET_DVR_TIME struTimeLabel; // ǩʱ + BYTE byQuickAdd; // Ƿ ʱǩЧ + BYTE byRes1[3]; // ֽ + BYTE sLabelName[LABEL_NAME_LEN]; // ǩ Ϊ40ֽ + BYTE byRes2[40]; // ֽ +}NET_DVR_RECORD_LABEL, *LPNET_DVR_RECORD_LABEL; + +#define LABEL_IDENTIFY_LEN 64 +typedef struct tagNET_DVR_LABEL_IDENTIFY +{ + BYTE sLabelIdentify[LABEL_IDENTIFY_LEN]; // 64ֽڱʶ + BYTE byRes[8]; // ֽ +}NET_DVR_LABEL_IDENTIFY, *LPNET_DVR_LABEL_IDENTIFY; + +#define MAX_DEL_LABEL_IDENTIFY 20// ɾǩʶ + +typedef struct tagNET_DVR_DEL_LABEL_PARAM +{ + DWORD dwSize; // ṹС + BYTE byMode; // λʾ,0x01ʾʶɾ + BYTE byRes1; + WORD wLabelNum; // ǩĿ + NET_DVR_LABEL_IDENTIFY struIndentify[MAX_DEL_LABEL_IDENTIFY]; // ǩʶ + BYTE byRes2[160]; //ֽ +}NET_DVR_DEL_LABEL_PARAM, *LPNET_DVR_DEL_LABEL_PARAM; + +typedef struct tagNET_DVR_MOD_LABEL_PARAM +{ + NET_DVR_LABEL_IDENTIFY struIndentify; //Ҫ޸ĵıǩʶ + BYTE byRes1[24]; + BYTE sLabelName[LABEL_NAME_LEN]; //޸ĺıǩ + BYTE byRes2[40]; +}NET_DVR_MOD_LABEL_PARAM, *LPNET_DVR_MOD_LABEL_PARAM; + +// ǩṹ +typedef struct tagNET_DVR_FIND_LABEL +{ + DWORD dwSize; // ṹС + LONG lChannel; // ҵͨ + NET_DVR_TIME struStartTime; // ʼʱ + NET_DVR_TIME struStopTime; // ʱ + BYTE sLabelName[LABEL_NAME_LEN]; // ¼ǩ ǩΪգֹʱбǩ + BYTE byDrawFrame; //0:֡1֡ + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cStartTimeDifferenceH; //ʼʱUTCʱСʱ-12 ... +14 ʾʱ + char cStartTimeDifferenceM; //ʼʱUTCʱӣ-30, 0, 30, 45ʾʱ + char cStopTimeDifferenceH; //ʱUTCʱСʱ-12 ... +14ʾʱ + char cStopTimeDifferenceM; //ʱUTCʱӣ-30, 0, 30, 45ʾʱ + BYTE byRes[34]; // ֽ +}NET_DVR_FIND_LABEL, *LPNET_DVR_FIND_LABEL; + +// ǩϢṹ +typedef struct tagNET_DVR_FINDLABEL_DATA +{ + BYTE sLabelName[LABEL_NAME_LEN]; // ǩ + NET_DVR_TIME struTimeLabel; // ǩʱ + NET_DVR_LABEL_IDENTIFY struLabelIdentify; // ǩʶ + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cTimeDifferenceH; //ʼʱUTCʱСʱ-12 ... +14 ʾʱ + char cTimeDifferenceM; //ʼʱUTCʱӣ-30, 0, 30, 45ʾʱ + BYTE byRes[29]; // ֽ +}NET_DVR_FINDLABEL_DATA, *LPNET_DVR_FINDLABEL_DATA; + +#define CARDNUM_LEN_V30 40 +//ö +typedef enum _COUNTRY_INDEX_ +{ + COUNTRY_NONSUPPORT = 0, //0-㷨ⲻ֧ʶ + /* һ235Һ͵ */ + /*ŷ 48Һ͵ ·˹(Cyprus)ŷ޽*/ + COUNTRY_CZE = 1, //Czech Republic ݿ˹͹ + COUNTRY_FRA = 2, //France + COUNTRY_DEU = 3, //Germany ¹ + COUNTRY_ESP = 4, //Spain + COUNTRY_ITA = 5, //Italy + COUNTRY_NLD = 6, //Netherlands + COUNTRY_POL = 7, //Poland + COUNTRY_SVK = 8, //Slovakia ˹工 + COUNTRY_BLR = 9, //Belarus ׶˹ + COUNTRY_MDA = 10, //Moldova Ħ + COUNTRY_RUS = 11, //Russia ˹ + COUNTRY_UKR = 12, //Ukraine ڿ + COUNTRY_BEL = 13, //Belgium ʱ + COUNTRY_BGR = 14, //Bulgaria + COUNTRY_DNK = 15, //Denmark + COUNTRY_FIN = 16, //Finland + COUNTRY_GBR = 17, //United Kingdom Ӣ + COUNTRY_GRC = 18, //Greece ϣ + COUNTRY_HRV = 19, //Croatia ޵ + COUNTRY_HUN = 20, //Hungary + COUNTRY_ISR = 21, //Israel ɫ() + COUNTRY_LUX = 22, //Luxembourg ¬ɭ + COUNTRY_MKD = 23, //Macedonia ٹ͹ + COUNTRY_NOR = 24, //Norway Ų + COUNTRY_PRT = 25, //Portuga + COUNTRY_ROU = 26, //Romania + COUNTRY_SRB = 27, //Serbia ά + COUNTRY_AZE = 28, //Azerbaijan ͹() + COUNTRY_GEO = 29, //Georgia ³() + COUNTRY_KAZ = 30, //Kazakhstan ˹̹() + COUNTRY_LTU = 31, //Lithuania 𹲺͹ + COUNTRY_TKM = 32, //Turkmenistan ˹̹() + COUNTRY_UZB = 33, //Uzbekistan ȱ˹̹() + COUNTRY_LVA = 34, //Latvia ά + COUNTRY_EST = 35, //Estonia ɳ + COUNTRY_ALB = 36, //Albania + COUNTRY_AUT = 37, //Austria µ + COUNTRY_BIH = 38, //Bosnia and Herzegovina ˹Ǻͺά + COUNTRY_IRL = 39, //Ireland + COUNTRY_ISL = 40, //Iceland + COUNTRY_VAT = 41, //Vatican ٸ + COUNTRY_MLT = 42, //Malta + COUNTRY_SWE = 43, //Sweden + COUNTRY_CHE = 44, //Switzerland ʿ + COUNTRY_CYP = 45, //Cyprus ·˹ + COUNTRY_TUR = 46, //Turkey + COUNTRY_SVN = 47, //Slovenia ˹ + COUNTRY_MTG = 48, //Montenegro ɽ͹ + COUNTRY_KOV = 49, //Kosovo + COUNTRY_ADR = 50, //Andorra + COUNTRY_ARM = 51, //Armenia () + COUNTRY_MON = 52, //Monaco Ħɸ + COUNTRY_LIE = 53, //Liechtenstein ֧ʿ + COUNTRY_SMO = 54, //San Marino ʥŵ + COUNTRY_ORN = 55, //Aland () + COUNTRY_RES2 = 56, //ֶ + COUNTRY_RES3 = 57, //ֶ + COUNTRY_RES4 = 58, //ֶ + /* 48 ·˹(Cyprus)ŷ޽*/ + COUNTRY_CHI = 59, //China й + COUNTRY_IBN = 60, //In bahrain + COUNTRY_SKR = 61, //South Korea + COUNTRY_LEB = 62, //Lebanon + COUNTRY_NEP = 63, //Nepal Ჴ + COUNTRY_THA = 64, //Thailand ̩ + COUNTRY_PAK = 65, //Pakistan ͻ˹̹ + COUNTRY_EMI = 66, //The united Arab emirates + COUNTRY_BHU = 67, //Bhutan + COUNTRY_OMA = 68, //Oman + COUNTRY_KOR = 69, //North Korea + COUNTRY_PHI = 70, //The Philippines ɱ + COUNTRY_CAM = 71, //Cambodia կ + COUNTRY_QAT = 72, //Qatar + COUNTRY_KYR = 73, //Kyrgyzstan ˹˹̹ + COUNTRY_MAL = 74, //The maldives + COUNTRY_MLY = 75, //Malaysia + COUNTRY_MOG = 76, //Mongolia ɹ + COUNTRY_ARA = 77, //Saudi Arabia ɳذ + COUNTRY_BRU = 78, //brunei + COUNTRY_LAO = 79, //Laos + COUNTRY_JAP = 80, //Japan ձ + COUNTRY_RES19 = 81, //ֶ + COUNTRY_PAS = 82, //Palestinian state ˹̹ + COUNTRY_TAJ = 83, //Tajikistan ˹̹ + COUNTRY_KUW = 84, //Kuwait + COUNTRY_SYR = 85, //Syria + COUNTRY_IND = 86, //India ӡ + COUNTRY_ISA = 87, //Indonesia ӡ + COUNTRY_AFG = 88, //Afghanistan + COUNTRY_LAN = 89, //Sri Lanka ˹ + COUNTRY_IRQ = 90, //Iraq + COUNTRY_VIE = 91, //Vietnam Խ + COUNTRY_IRA = 92, //Iran + COUNTRY_YEM = 93, //yemen Ҳ + COUNTRY_JOR = 94, //Jordan Լ + COUNTRY_BUR = 95, //Burma + COUNTRY_SIK = 96, //Sikkim + COUNTRY_BAN = 97, //Bangladesh ϼ + COUNTRY_SGA = 98, //Singapore ¼ + COUNTRY_EAT = 99, //East timor 루Ҳϣ + COUNTRY_RES5 = 100, //ֶ + COUNTRY_RES6 = 101, //ֶ + COUNTRY_RES7 = 102, //ֶ + COUNTRY_RES8 = 103, //ֶ + /* 60Һ͵*/ + COUNTRY_EGT = 104, //Egypt + COUNTRY_LIY = 105, //Libya + COUNTRY_SUA = 106, //Sudan յ + COUNTRY_TUN = 107, //Tunisia ͻ˹ + COUNTRY_ALG = 108, //Algeria + COUNTRY_MCC = 109, //Morocco Ħ + COUNTRY_ETH = 110, //Ethiopia + COUNTRY_ERI = 111, //Eritrea + COUNTRY_SDE = 112, //Somalia Democratic + COUNTRY_DJI = 113, //Djibouti + COUNTRY_KEN = 114, //Kenya + COUNTRY_TAI = 115, //Tanzania ̹ɣ + COUNTRY_UGA = 116, //Uganda ڸɴ + COUNTRY_RWA = 117, //Rwanda ¬ + COUNTRY_BUD = 118, //Burundi ¡ + COUNTRY_SEY = 119, //Seychelles + COUNTRY_CHA = 120, //Chad է + COUNTRY_CEA = 121, //Central African з + COUNTRY_CON = 122, //Cameroon ¡ + COUNTRY_EQG = 123, //Equatorial Guinea + COUNTRY_GAB = 124, //Gabon + COUNTRY_TCO = 125, //the Congo չ͹չ + COUNTRY_DRC = 126, //Democratic Republic of the Congo չ͹չ𣩣 + COUNTRY_STP = 127, //Sao Tome and Principe ʥ + COUNTRY_MAN = 128, //Mauritania ë + COUNTRY_WSA = 129, //Western Sahara + COUNTRY_SEL = 130, //Senegal ڼӶ + COUNTRY_TGA = 131, //the Gambia Ա + COUNTRY_MAI = 132, //Mali + COUNTRY_BUF = 133, //Burkina Faso ɷ + COUNTRY_GUI = 134, //Guinea + COUNTRY_GUB = 135, //Guinea-Bissau DZ + COUNTRY_CAV = 136, //Cape Verde ý + COUNTRY_SLE = 137, //Sierra Leone + COUNTRY_LIR = 138, //Liberia + COUNTRY_IVC = 139, //Ivory Coast ص + COUNTRY_GHA = 140, //Ghana + COUNTRY_TGO = 141, //Togo + COUNTRY_BEN = 142, //Benin + COUNTRY_NIG = 143, //Niger ն + COUNTRY_ZAB = 144, //Zambia ޱ + COUNTRY_ANG = 145, //Angola + COUNTRY_ZBE = 146, //Zimbabwe ͲΤ + COUNTRY_MAW = 147, //Malawi ά + COUNTRY_MOQ = 148, //Mozambique Īɣȿ + COUNTRY_BOT = 149, //Botswana + COUNTRY_NAM = 150, //Namibia ױ + COUNTRY_SAF = 151, //South Africa Ϸ + COUNTRY_SWD = 152, //Swaziland ˹ʿ + COUNTRY_LES = 153, //Lesotho + COUNTRY_MAG = 154, //Madagasca ˹ + COUNTRY_UOC = 155, //Union of Comoros Ħ + COUNTRY_MAT = 156, //Mauritius ë˹ + COUNTRY_NGE = 157, //Nigeria + COUNTRY_SSD = 158, //South Sudan յ + COUNTRY_SAH = 159, //Saint Helena ʥãӢʡ + COUNTRY_MYT = 160, //Mayotte Լأʡ + COUNTRY_REN = 161, //Reunion ʡ + COUNTRY_CAI = 162, //Canary Islands Ⱥ + COUNTRY_AZO = 163, //AZORES ٶȺ + COUNTRY_MAD = 164, //Madeira Ⱥ + COUNTRY_RES9 = 165, //ֶ + COUNTRY_RES10 = 166, //ֶ + COUNTRY_RES11 = 167, //ֶ + COUNTRY_RES12 = 168, //ֶ + /* 55Һ͵*/ + COUNTRY_CAD = 169, //Canada ô + COUNTRY_GRE = 170, //Greenland Nuuk ĺ + COUNTRY_PIE = 171, //Pierre and Miquelon ʥƤܿ¡ + COUNTRY_USA = 172, //United States + COUNTRY_BER = 173, //Bermuda ĽӢ + COUNTRY_MEX = 174, //Mexico ī + COUNTRY_GUA = 175, //Guatemala Σ + COUNTRY_BLI = 176, //Belize + COUNTRY_SAR = 177, //El Salvador ߶ + COUNTRY_HOR = 178, //Honduras 鶼˹ + COUNTRY_NIC = 179, //Nicaragua + COUNTRY_COR = 180, //Costa Rica ˹ + COUNTRY_PAN = 181, //Panama + COUNTRY_TBM = 182, //The Bahamas ͹ + COUNTRY_TCI = 183, //The Turks and Caicos Islands ؿ˹ȺͿ˹ȺӢ + COUNTRY_CUB = 184, //Cuba Ű + COUNTRY_JAM = 185, //Jamaica + COUNTRY_CAY = 186, //Cayman Islands ȺӢ + COUNTRY_HAT = 187, //Haiti + COUNTRY_TDO = 188, //The Dominican + COUNTRY_PUR = 189, //Puerto Rico + COUNTRY_VIL = 190, //The United States Virgin IslandsάȺ + COUNTRY_BVI = 191, //The British Virgin Islands ӢάȺ + COUNTRY_ATV = 192, //Anguilla The Valley Ӣ + COUNTRY_ANB = 193, //Antigua and Barbuda ϺͰͲ + COUNTRY_CSM = 194, //Collectivit de Saint-Martin ʥ + COUNTRY_ACY = 195, //Autonomous country ʥι + COUNTRY_SBY = 196, //Saint-Barthlemy ʥ̩׵ + COUNTRY_SKN = 197, //Saint Kitts and Nevis ʥĺά˹ + COUNTRY_MOT = 198, //Montserrat أӢ + COUNTRY_GLP = 199, //Guadeloupe ϵգ + COUNTRY_DOM = 200, //Dominica + COUNTRY_MTE = 201, //Martinique ˣ + COUNTRY_LUC = 202, //St. Lucia ʥ¬ + COUNTRY_SVG = 203, //Saint Vincent and the Grenadines ʥɭغ͸ɶ˹ + COUNTRY_GRD = 204, //Grenada ɴ + COUNTRY_BAR = 205, //Barbados ͰͶ˹ + COUNTRY_TRT = 206, //Trinidad and Tobago Ͷ͸ + COUNTRY_CUR = 207, //Cura?ao һι + COUNTRY_ARB = 208, //Aruba ³ͣһι + COUNTRY_NEA = 209, //Netherlands Antilles ˹ + COUNTRY_COL = 210, //Colombia ױ + COUNTRY_VEN = 211, //Venezuela ί + COUNTRY_GUY = 212, //Guyana + COUNTRY_SUR = 213, //Suriname + COUNTRY_FRN = 214, //Guyane Francaise + COUNTRY_ECU = 215, //Ecuador ϶ + COUNTRY_PER = 216, //Peru ³ + COUNTRY_BOL = 217, //Bolivia ά + COUNTRY_PAR = 218, //Paraguay + COUNTRY_CLE = 219, //Chile + COUNTRY_BRA = 220, //Brazil + COUNTRY_UGY = 221, //Uruguay + COUNTRY_ARG = 222, //Argentina ͢ + COUNTRY_RES13 = 223, //ֶ + COUNTRY_RES14 = 224, //ֶ + COUNTRY_RES15 = 225, //ֶ + COUNTRY_RES16 = 226, //ֶ + /* 25Һ͵ */ + COUNTRY_ATN = 227, //Australien Ĵ + COUNTRY_NED = 228, //Neuseeland + COUNTRY_PNG = 229, //Papua New Guinea Ͳ¼ + COUNTRY_SAN = 230, //Salomonen Ⱥ + COUNTRY_VAU = 231, //Vanuatu Ŭͼ + COUNTRY_NCN = 232, //New Caledonia ¿ǣĺأ + COUNTRY_PAU = 233, //Palau + COUNTRY_FSM = 234, //Federated States of Micronesia ܿ + COUNTRY_MRI = 235, //Marshall Island ܶȺ + COUNTRY_CNM = 236, //Commonwealth of the Northern Mariana Islands Ⱥĺأ + COUNTRY_TEG = 237, //The Territory of Guahan صĺأ + COUNTRY_NUR = 238, //Nauru ³ + COUNTRY_KIB = 239, //Kiribati ˹ + COUNTRY_FID = 240, //Fidschi 쳼Ⱥ + COUNTRY_TNG = 241, //Tonga + COUNTRY_TUV = 242, //Tuvalu ͼ¬ + COUNTRY_WEF = 243, //Wallis et Futuna ˹͸ͼɣĺأ + COUNTRY_TIS = 244, //The Independent State of Samoa Ħ + COUNTRY_EAS = 245, //Eastern Samoa Ħ + COUNTRY_TOE = 246, //Tokelau пͣ + COUNTRY_NUE = 247, //Niue Ŧ + COUNTRY_TCD = 248, //The Cook Islands Ⱥ + COUNTRY_PFP = 249, //Polynsie fran?aiseFrench Polynesia + COUNTRY_PID = 250, //Pitcairn Islands ƤؿȺӢĺأ + COUNTRY_HAW = 251, //Hawaii State ģĺأ + COUNTRY_RES17 = 252, //ֶ + COUNTRY_INVALID = 0xfd, //ֶЧҪʹչֶCRIndex(_CR_INDEX_) + COUNTRY_UNRECOGNIZED = 0xfe, //Unrecognized ޷ʶ + COUNTRY_ALL = 0xff, //ALL ȫ +}COUNTRY_INDEX; + +// / ö +typedef enum _CR_INDEX_ +{ + CR_NONSUPPORT = 0, //0-㷨ⲻ֧ʶ + /* һ235Һ͵ */ + /*ŷ 48Һ͵ ·˹(Cyprus)ŷ޽*/ + CR_CZE = 1, //Czech Republic ݿ˹͹ + CR_FRA = 2, //France + CR_DEU = 3, //Germany ¹ + CR_ESP = 4, //Spain + CR_ITA = 5, //Italy + CR_NLD = 6, //Netherlands + CR_POL = 7, //Poland + CR_SVK = 8, //Slovakia ˹工 + CR_BLR = 9, //Belarus ׶˹ + CR_MDA = 10, //Moldova Ħ + CR_RUS = 11, //Russia ˹ + CR_UKR = 12, //Ukraine ڿ + CR_BEL = 13, //Belgium ʱ + CR_BGR = 14, //Bulgaria + CR_DNK = 15, //Denmark + CR_FIN = 16, //Finland + CR_GBR = 17, //United Kingdom Ӣ + CR_GRC = 18, //Greece ϣ + CR_HRV = 19, //Croatia ޵ + CR_HUN = 20, //Hungary + CR_ISR = 21, //Israel ɫ() + CR_LUX = 22, //Luxembourg ¬ɭ + CR_MKD = 23, //Macedonia ٹ͹ + CR_NOR = 24, //Norway Ų + CR_PRT = 25, //Portuga + CR_ROU = 26, //Romania + CR_SRB = 27, //Serbia ά + CR_AZE = 28, //Azerbaijan ͹() + CR_GEO = 29, //Georgia ³() + CR_KAZ = 30, //Kazakhstan ˹̹() + CR_LTU = 31, //Lithuania 𹲺͹ + CR_TKM = 32, //Turkmenistan ˹̹() + CR_UZB = 33, //Uzbekistan ȱ˹̹() + CR_LVA = 34, //Latvia ά + CR_EST = 35, //Estonia ɳ + CR_ALB = 36, //Albania + CR_AUT = 37, //Austria µ + CR_BIH = 38, //Bosnia and Herzegovina ˹Ǻͺά + CR_IRL = 39, //Ireland + CR_ISL = 40, //Iceland + CR_VAT = 41, //Vatican ٸ + CR_MLT = 42, //Malta + CR_SWE = 43, //Sweden + CR_CHE = 44, //Switzerland ʿ + CR_CYP = 45, //Cyprus ·˹ + CR_TUR = 46, //Turkey + CR_SVN = 47, //Slovenia ˹ + CR_MTG = 48, //Montenegro ɽ͹ + CR_KOV = 49, //Kosovo + CR_ADR = 50, //Andorra + CR_ARM = 51, //Armenia () + CR_MON = 52, //Monaco Ħɸ + CR_LIE = 53, //Liechtenstein ֧ʿ + CR_SMO = 54, //San Marino ʥŵ + CR_ORN = 55, //Aland () + CR_RES2 = 56, //ֶ + CR_RES3 = 57, //ֶ + CR_RES4 = 58, //ֶ + /* 48 ·˹(Cyprus)ŷ޽*/ + CR_CHI = 59, //China й + CR_IBN = 60, //In bahrain + CR_SKR = 61, //South Korea + CR_LEB = 62, //Lebanon + CR_NEP = 63, //Nepal Ჴ + CR_THA = 64, //Thailand ̩ + CR_PAK = 65, //Pakistan ͻ˹̹ + CR_EMI = 66, //The united Arab emirates + CR_BHU = 67, //Bhutan + CR_OMA = 68, //Oman + CR_KOR = 69, //North Korea + CR_PHI = 70, //The Philippines ɱ + CR_CAM = 71, //Cambodia կ + CR_QAT = 72, //Qatar + CR_KYR = 73, //Kyrgyzstan ˹˹̹ + CR_MAL = 74, //The maldives + CR_MLY = 75, //Malaysia + CR_MOG = 76, //Mongolia ɹ + CR_ARA = 77, //Saudi Arabia ɳذ + CR_BRU = 78, //brunei + CR_LAO = 79, //Laos + CR_JAP = 80, //Japan ձ + CR_RES19 = 81, //ֶ + CR_PAS = 82, //Palestinian state ˹̹ + CR_TAJ = 83, //Tajikistan ˹̹ + CR_KUW = 84, //Kuwait + CR_SYR = 85, //Syria + CR_IND = 86, //India ӡ + CR_ISA = 87, //Indonesia ӡ + CR_AFG = 88, //Afghanistan + CR_LAN = 89, //Sri Lanka ˹ + CR_IRQ = 90, //Iraq + CR_VIE = 91, //Vietnam Խ + CR_IRA = 92, //Iran + CR_YEM = 93, //yemen Ҳ + CR_JOR = 94, //Jordan Լ + CR_BUR = 95, //Burma + CR_SIK = 96, //Sikkim + CR_BAN = 97, //Bangladesh ϼ + CR_SGA = 98, //Singapore ¼ + CR_EAT = 99, //East timor 루Ҳϣ + CR_RES5 = 100, //ֶ + CR_RES6 = 101, //ֶ + CR_RES7 = 102, //ֶ + CR_RES8 = 103, //ֶ + /* 60Һ͵*/ + CR_EGT = 104, //Egypt + CR_LIY = 105, //Libya + CR_SUA = 106, //Sudan յ + CR_TUN = 107, //Tunisia ͻ˹ + CR_ALG = 108, //Algeria + CR_MCC = 109, //Morocco Ħ + CR_ETH = 110, //Ethiopia + CR_ERI = 111, //Eritrea + CR_SDE = 112, //Somalia Democratic + CR_DJI = 113, //Djibouti + CR_KEN = 114, //Kenya + CR_TAI = 115, //Tanzania ̹ɣ + CR_UGA = 116, //Uganda ڸɴ + CR_RWA = 117, //Rwanda ¬ + CR_BUD = 118, //Burundi ¡ + CR_SEY = 119, //Seychelles + CR_CHA = 120, //Chad է + CR_CEA = 121, //Central African з + CR_CON = 122, //Cameroon ¡ + CR_EQG = 123, //Equatorial Guinea + CR_GAB = 124, //Gabon + CR_TCO = 125, //the Congo չ͹չ + CR_DRC = 126, //Democratic Republic of the Congo չ͹չ𣩣 + CR_STP = 127, //Sao Tome and Principe ʥ + CR_MAN = 128, //Mauritania ë + CR_WSA = 129, //Western Sahara + CR_SEL = 130, //Senegal ڼӶ + CR_TGA = 131, //the Gambia Ա + CR_MAI = 132, //Mali + CR_BUF = 133, //Burkina Faso ɷ + CR_GUI = 134, //Guinea + CR_GUB = 135, //Guinea-Bissau DZ + CR_CAV = 136, //Cape Verde ý + CR_SLE = 137, //Sierra Leone + CR_LIR = 138, //Liberia + CR_IVC = 139, //Ivory Coast ص + CR_GHA = 140, //Ghana + CR_TGO = 141, //Togo + CR_BEN = 142, //Benin + CR_NIG = 143, //Niger ն + CR_ZAB = 144, //Zambia ޱ + CR_ANG = 145, //Angola + CR_ZBE = 146, //Zimbabwe ͲΤ + CR_MAW = 147, //Malawi ά + CR_MOQ = 148, //Mozambique Īɣȿ + CR_BOT = 149, //Botswana + CR_NAM = 150, //Namibia ױ + CR_SAF = 151, //South Africa Ϸ + CR_SWD = 152, //Swaziland ˹ʿ + CR_LES = 153, //Lesotho + CR_MAG = 154, //Madagasca ˹ + CR_UOC = 155, //Union of Comoros Ħ + CR_MAT = 156, //Mauritius ë˹ + CR_NGE = 157, //Nigeria + CR_SSD = 158, //South Sudan յ + CR_SAH = 159, //Saint Helena ʥãӢʡ + CR_MYT = 160, //Mayotte Լأʡ + CR_REN = 161, //Reunion ʡ + CR_CAI = 162, //Canary Islands Ⱥ + CR_AZO = 163, //AZORES ٶȺ + CR_MAD = 164, //Madeira Ⱥ + CR_RES9 = 165, //ֶ + CR_RES10 = 166, //ֶ + CR_RES11 = 167, //ֶ + CR_RES12 = 168, //ֶ + /* 55Һ͵*/ + CR_CAD = 169, //Canada ô + CR_GRE = 170, //Greenland Nuuk ĺ + CR_PIE = 171, //Pierre and Miquelon ʥƤܿ¡ + CR_USA = 172, //United States + CR_BER = 173, //Bermuda ĽӢ + CR_MEX = 174, //Mexico ī + CR_GUA = 175, //Guatemala Σ + CR_BLI = 176, //Belize + CR_SAR = 177, //El Salvador ߶ + CR_HOR = 178, //Honduras 鶼˹ + CR_NIC = 179, //Nicaragua + CR_COR = 180, //Costa Rica ˹ + CR_PAN = 181, //Panama + CR_TBM = 182, //The Bahamas ͹ + CR_TCI = 183, //The Turks and Caicos Islands ؿ˹ȺͿ˹ȺӢ + CR_CUB = 184, //Cuba Ű + CR_JAM = 185, //Jamaica + CR_CAY = 186, //Cayman Islands ȺӢ + CR_HAT = 187, //Haiti + CR_TDO = 188, //The Dominican + CR_PUR = 189, //Puerto Rico + CR_VIL = 190, //The United States Virgin IslandsάȺ + CR_BVI = 191, //The British Virgin Islands ӢάȺ + CR_ATV = 192, //Anguilla The Valley Ӣ + CR_ANB = 193, //Antigua and Barbuda ϺͰͲ + CR_CSM = 194, //Collectivit de Saint-Martin ʥ + CR_ACY = 195, //Autonomous country ʥι + CR_SBY = 196, //Saint-Barthlemy ʥ̩׵ + CR_SKN = 197, //Saint Kitts and Nevis ʥĺά˹ + CR_MOT = 198, //Montserrat أӢ + CR_GLP = 199, //Guadeloupe ϵգ + CR_DOM = 200, //Dominica + CR_MTE = 201, //Martinique ˣ + CR_LUC = 202, //St. Lucia ʥ¬ + CR_SVG = 203, //Saint Vincent and the Grenadines ʥɭغ͸ɶ˹ + CR_GRD = 204, //Grenada ɴ + CR_BAR = 205, //Barbados ͰͶ˹ + CR_TRT = 206, //Trinidad and Tobago Ͷ͸ + CR_CUR = 207, //Cura?ao һι + CR_ARB = 208, //Aruba ³ͣһι + CR_NEA = 209, //Netherlands Antilles ˹ + CR_COL = 210, //Colombia ױ + CR_VEN = 211, //Venezuela ί + CR_GUY = 212, //Guyana + CR_SUR = 213, //Suriname + CR_FRN = 214, //Guyane Francaise + CR_ECU = 215, //Ecuador ϶ + CR_PER = 216, //Peru ³ + CR_BOL = 217, //Bolivia ά + CR_PAR = 218, //Paraguay + CR_CLE = 219, //Chile + CR_BRA = 220, //Brazil + CR_UGY = 221, //Uruguay + CR_ARG = 222, //Argentina ͢ + CR_RES13 = 223, //ֶ + CR_RES14 = 224, //ֶ + CR_RES15 = 225, //ֶ + CR_RES16 = 226, //ֶ + /* 25Һ͵ */ + CR_ATN = 227, //Australien Ĵ + CR_NED = 228, //Neuseeland + CR_PNG = 229, //Papua New Guinea Ͳ¼ + CR_SAN = 230, //Salomonen Ⱥ + CR_VAU = 231, //Vanuatu Ŭͼ + CR_NCN = 232, //New Caledonia ¿ǣĺأ + CR_PAU = 233, //Palau + CR_FSM = 234, //Federated States of Micronesia ܿ + CR_MRI = 235, //Marshall Island ܶȺ + CR_CNM = 236, //Commonwealth of the Northern Mariana Islands Ⱥĺأ + CR_TEG = 237, //The Territory of Guahan صĺأ + CR_NUR = 238, //Nauru ³ + CR_KIB = 239, //Kiribati ˹ + CR_FID = 240, //Fidschi 쳼Ⱥ + CR_TNG = 241, //Tonga + CR_TUV = 242, //Tuvalu ͼ¬ + CR_WEF = 243, //Wallis et Futuna ˹͸ͼɣĺأ + CR_TIS = 244, //The Independent State of Samoa Ħ + CR_EAS = 245, //Eastern Samoa Ħ + CR_TOE = 246, //Tokelau пͣ + CR_NUE = 247, //Niue Ŧ + CR_TCD = 248, //The Cook Islands Ⱥ + CR_PFP = 249, //Polynsie fran?aiseFrench Polynesia + CR_PID = 250, //Pitcairn Islands ƤؿȺӢĺأ + CR_HAW = 251, //Hawaii State ģĺأ + CR_RES17 = 252, //ֶ + CR_RES18 = 253, //ֶ + CR_UNRECOGNIZED = 0xfe, //Unrecognized ޷ʶ + CR_ALL = 0xff, //ALL ȫ + + // + CR_TAIWAN = 256, //Taiwan(China) ̨壨й +}CR_INDEX; + +//ö +typedef enum _EMI_AREA_ +{ + EMI_AREA_UNKNOWN = 0, //֧ʶ + EMI_AREA_AD, // + EMI_AREA_FJR, // + EMI_AREA_DB, //ϰ + EMI_AREA_RAK, // + EMI_AREA_AM, // + EMI_AREA_SJ, //ɳ + EMI_AREA_UMW, //ķ + EMI_AREA_OTHER = 0xff, //δʶ𣨵豸ָ֧㷨ڻԭδʶ +} EMI_AREA; + +typedef struct tagNET_DVR_FIND_PICTURE_PARAM +{ + DWORD dwSize; // ṹС + LONG lChannel; // ͨ + /* ҵͼƬ:0ʱץͼ1 ƶץͼ 2 ץͼ + 3 | ƶץͼ 4 & ƶץͼ 6 ֶץͼ , + 9-ͼƬ,10- PIR11- ߱12- ȱ, + 0xa Ԥʱͼ0xd , 0xe Խ⣬0xf ⣬ + 0x10 , 0x11-豸ػطʱͼ, 0x12-, + 0x13-,0x14-뿪,0x15-ǻ, + 0x16-Աۼ,0x17-˶,0x18-ͣ, + 0x19-Ʒ,0x1a-Ʒȡ, 0x1b-, + 0x1c-м,0x1d-ȡ֤¼,0x1e-,0x1f-ƻ, + 0x20-ֻ⣬0x21-Ԥ0x22-±, 0x23, + 0x24Υͣ,0x25-ץ,0x26-߲±,0x2a-, + 0x2b-ʸ,0x2c-޳ʱ,0x2d-ȫñ,0x2e-ܽץ, + 0x2f-Ŀץ,0x30-ץĽģ, 0x31-Ŀ, + 0x32-, 0x33-, 0x34-ҵѯ,0x35-Ƿ̯, + 0x36-ԱܶȣԤ,0x37-ڼ,0x38-쳣, + 0x39-˶, 0x3a-Υͣ, 0x3b-,0x3c-ѹ,0x3d-ռ,0x3e-,0x3f-ͷ,0x40-˼,0x41-·, + 0x42-,0x43-Ũ,0x44-ʩ,0x45-ӵ,0x46-ͨ¹ʼ, 0x47-෽ͣ0x48-ֶ, + 0x49-ֻ,0x4b-˾ʻΪ,0x4c-߼ʻ,0x4d-ɳⱨ, + 0x52-ŶӼ,0x53-ŶӼʱ,0x54-(ֶճԼƽ̨), 0x55-ʱץ, 0x56-ŷʾ, + 0x57-Ҷȱ, 0x58-,0x59-Ա,0x5a-Ա,0x5b-쳣,0x5c-Ա,0x5d-̼,0x5e-,0x5f-, + 0x60-ռӦ,0x61-ռ,0x62-ֹ,0x63-ռרó,0x64-,0x65-ReID,0x66-ͨʱץͼ¼, + 0x67-AIƽ̨¼,0x68-Ũ쳣,0x69-ǿ쳣,0x70-ͨʱץͼ,0x71-¼,0x72-ϹӼ, + 0x73-豸Դ״̬ϱ,0xff- ȫ*/ + BYTE byFileType; + BYTE byNeedCard; // ǷҪ + /* + 0-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- + 29-أ30-ۣ31-£32-ƣ33-㣬34-0xff-ȫ + */ + BYTE byProvince; //ʡֵ + BYTE byEventType; // ¼ͣ01-ͨ¼2-Υȡ֤3-¼ + BYTE sCardNum[CARDNUM_LEN_V30]; // + NET_DVR_TIME struStartTime;//ͼƬĿʼʱ + NET_DVR_TIME struStopTime;// ͼƬĽʱ + //ITC3.7 + DWORD dwTrafficType; //ͼƬЧ ο VCA_OPERATE _TYPE + DWORD dwVehicleType; // ο VCA_VEHICLE_TYPE + //ΥͲο VCA_ILLEGAL_TYPE ǰָ֧ѡ + DWORD dwIllegalType; + BYTE byLaneNo; //(1~99) + BYTE bySubHvtType ;//0-,1-(ֳ֧Ƽʡݼ),2-ǻ,3- + BYTE bySubDriveType; //ʻ + //byFileTypeΪ0x4b-˾ʻΪʱΪ˾ʻΪͣ嶨壺0-1-̡2-Ӵ绰3-ƣͼʻ4-ѡ5-ʻԱ쳣6-δϵȫ7-ī8-˫뷽̡9-뷽̡10-ʻԱ쳣11-ʱʻ12-ʻԱ + //byFileTypeΪ0x4c-߼ʻʱΪ߼ʻͣ嶨壺0-1-ǰײ2-ƫ()3-ƫ()4-5-˷ײ6-ä(Һ)7-ä()8-ä() + BYTE byRes2;//ֽ + char sLicense[MAX_LICENSE_LEN/*16*/]; //ƺ + BYTE byRegion; // ֵ 0-1-ŷ(Europe Region)2-(Russian Region)3-ŷ&˹(EU&CIS), 4-ж(Middle East),0xff- + BYTE byCountry; // ֵգCOUNTRY_INDEX + BYTE byArea; // + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cStartTimeDifferenceH; //ʼʱUTCʱСʱ-12 ... +14 ʾʱ + char cStartTimeDifferenceM; //ʼʱUTCʱӣ-30, 0, 30, 45ʾʱ + char cStopTimeDifferenceH; //ʱUTCʱСʱ-12 ... +14ʾʱ + char cStopTimeDifferenceM; //ʱUTCʱӣ-30, 0, 30, 45ʾʱ +}NET_DVR_FIND_PICTURE_PARAM, *LPNET_DVR_FIND_PICTURE_PARAM; + +//PC NVRļ +typedef struct tagNET_DVR_FIND_FILE_PCNVR +{ + DWORD dwSize; //ṹС + NET_DVR_IPADDR struIpAddr; //IPַ + WORD wIpPort; //˿ں + BYTE byRes[2]; //ֽ + char sDomainName[MAX_DOMAIN_NAME]; //(ʱû) + char sSerial[SERIALNO_LEN]; //к + + DWORD lChannel; //ͨ + DWORD dwFileType; //¼ļ0xffȫ0ʱ¼,1-ƶ 2 + //3-|ƶ 4-&ƶ 5- 6-ֶ¼ + DWORD dwIsLocked; //Ƿ 0-ļ,1-ļ, 0xffʾļ + DWORD dwUseCardNo; //Ƿʹÿ + BYTE sCardNumber[CARDNUM_LEN_V30]; // + NET_DVR_TIME struStartTime; //ʼʱ + NET_DVR_TIME struStopTime; //ʱ +}NET_DVR_FILE_COND_PCNVR, *LPNET_DVR_FILE_COND_PCNVR; + +//PCNVR¼ļ +typedef struct tagNET_DVR_FINDDATA_PCNVR +{ + char sFileName[100];//ļ + NET_DVR_TIME struStartTime;//ļĿʼʱ + NET_DVR_TIME struStopTime;//ļĽʱ + DWORD dwFileSize;//ļĴС + char sCardNum[CARDNUM_LEN_V30]; + BYTE byLocked;//9000豸֧,1ʾļѾ,0ʾļ + BYTE byFileType; //ļ + BYTE byRes[2]; +}NET_DVR_FINDDATA_PCNVR, *LPNET_DVR_FINDDATA_PCNVR; + +#define PICTURE_NAME_LEN 64 +#define PICTURE_INFO_MAX_SIZE 640*960*1.5 + +typedef struct +{ + char sFileName[PICTURE_NAME_LEN];//ͼƬ + NET_DVR_TIME struTime;//ͼƬʱ + DWORD dwFileSize;//ͼƬĴС + char sCardNum[CARDNUM_LEN_V30]; // + BYTE byPlateColor ;//οṹ VCA_PLATE_COLOR + BYTE byVehicleLogo;//οṹ VLR_VEHICLE_CLASS + BYTE byEventSearchStatus; //ͼƬʾͬһҽʱ0-ʾûͼƬϢ1-ʾ滹ͼƬϢܹͼƬϢһ״̬Ϊ0ͼƬ + BYTE byRecogResult ;//ʶοṹVTR_RESULT + char sLicense[MAX_LICENSE_LEN/*16*/]; //ƺ + BYTE byRes[12]; +}NET_DVR_FIND_PICTURE,*LPNET_DVR_FIND_PICTURE; + +#define MAX_RECORD_PICTURE_NUM 50 // 󱸷ͼƬ + +typedef struct tagNET_DVR_BACKUP_PICTURE_PARAM +{ + DWORD dwSize; // ṹС + DWORD dwPicNum; + NET_DVR_FIND_PICTURE struPicture[MAX_RECORD_PICTURE_NUM]; + BYTE byDiskDes[DESC_LEN_32]; + BYTE byWithPlayer; + BYTE byContinue; /*Ƿ 0 1*/ + BYTE byRes[34]; +}NET_DVR_BACKUP_PICTURE_PARAM, *LPNET_DVR_BACKUP_PICTURE_PARAM; + +typedef struct +{ + DWORD dwSize; //ṹС + DWORD dwChannel; //ͨ + BYTE byCompressType; //ȡѹ1,2,3,¼ + BYTE byRes[15]; // + NET_DVR_COMPRESSIONCFG_V30 struCurrentCfg; //ǰѹ +}NET_DVR_COMPRESSION_LIMIT, *LPNET_DVR_COMPRESSION_LIMIT; + +#define STEP_READY 0 //׼ +#define STEP_RECV_DATA 1 // +#define STEP_UPGRADE 2 //ϵͳ +#define STEP_BACKUP 3 //ϵͳ +#define STEP_SEARCH 255 //ļ + +typedef struct tagNET_DVR_VIDEO_EFFECT +{ + DWORD dwBrightValue; //[0,255] + DWORD dwContrastValue; //Աȶ[0,255] + DWORD dwSaturationValue; //Ͷ[0,255] + DWORD dwHueValue; //ɫ[0,255] + DWORD dwSharpness; //[0,255] + DWORD dwDenoising; //ȥ[0,255] + BYTE byRes[12]; +}NET_DVR_VIDEO_EFFECT, *LPNET_DVR_VIDEO_EFFECT; + +typedef struct tagNET_DVR_VIDEO_INPUT_EFFECT +{ + DWORD dwSize; //ṹС + WORD wEffectMode; //ģʽ 0-׼ 1- 2- 3- 255-Զ + BYTE byRes1[146]; // + NET_DVR_VIDEO_EFFECT struVideoEffect; //ƵЧ + BYTE byRes2[60]; // +}NET_DVR_VIDEO_INPUT_EFFECT, *LPNET_DVR_VIDEO_INPUT_EFFECT; + + +typedef struct tagNET_DVR_VIDEOPARA_V40 +{ + DWORD dwChannel; // ͨ + DWORD dwVideoParamType; // Ƶ 0- 1-Աȶ 2-Ͷ 3-ɫ 4- 5-ȥ + DWORD dwVideoParamValue; //ӦƵֵΧ + BYTE byRes[12]; +}NET_DVR_VIDEOPARA_V40, *LPNET_DVR_VIDEOPARA_V40; + +typedef struct tagNET_DVR_DEFAULT_VIDEO_COND +{ + DWORD dwSize; // ṹС + DWORD dwChannel; // ͨ + DWORD dwVideoMode; // ģʽ + BYTE byRes[32]; // +}NET_DVR_DEFAULT_VIDEO_COND, *LPNET_DVR_DEFAULT_VIDEO_COND; + +typedef struct tagNET_DVR_ENCODE_JOINT_PARAM +{ + DWORD dwSize; // ṹС + BYTE byJointed; // 0 ûй 1 Ѿ + BYTE byDevType; // 豸 1 豸 + BYTE byRes1[2]; // ֽ + NET_DVR_IPADDR struIP; // ıȡ豸IPַ + WORD wPort; // ıȡ豸˿ں + WORD wChannel; // ıȡ豸ͨ + BYTE byRes2[20]; // ֽ +}NET_DVR_ENCODE_JOINT_PARAM, *LPNET_DVR_ENCODE_JOINT_PARAM; + +typedef struct tagNET_DVR_VCA_CHAN_WORKSTATUS +{ + BYTE byJointed; // 0-ûй 1-Ѿ + BYTE byRes1[3]; + NET_DVR_IPADDR struIP; // ȡ豸IPַ + WORD wPort; // ȡ豸˿ں + WORD wChannel; // ȡ豸ͨ + BYTE byVcaChanStatus; // 0 - δ 1 - + BYTE byRes2[19]; // ֽ +}NET_DVR_VCA_CHAN_WORKSTATUS, *LPNET_DVR_VCA_CHAN_WORKSTATUS; + +typedef struct tagNET_DVR_VCA_DEV_WORKSTATUS +{ + DWORD dwSize; // ṹС + BYTE byDeviceStatus; // 豸״̬0 - 1- + BYTE byCpuLoad; // CPUʹ0-100 ֱʹðٷ + NET_DVR_VCA_CHAN_WORKSTATUS struVcaChanStatus[MAX_VCA_CHAN]; + DWORD dwRes[40]; // ֽ +}NET_DVR_VCA_DEV_WORKSTATUS, *LPNET_DVR_VCA_DEV_WORKSTATUS; + +typedef struct tagNET_DVR_VGA_DISP_CHAN_CFG_V40 +{ + DWORD dwSize; + BYTE byAudio; /*ƵǷ*/ + BYTE byAudioWindowIdx; /*ƵӴ*/ + BYTE byVgaResolution; /*ֱʣȡ*/ + BYTE byVedioFormat; /*1:NTSC,2:PAL0-NULL*/ + DWORD dwWindowMode; /*ģʽȡ*/ + BYTE byJoinDecChan[MAX_WINDOWS];/*ӴڹĽͨ*/ + BYTE byEnlargeStatus; /*ǷڷŴ״̬0Ŵ1Ŵ*/ + BYTE byEnlargeSubWindowIndex;//ŴӴں + BYTE byScale; /*ʾģʽ0---ʵʾ1---ʾ( BNC )*/ + /*ֹ壬0-Ƶۺƽ̨ڲʾͨã1-ʾͨ*/ + BYTE byUnionType; + union + { + BYTE byRes[160]; + struct + { + /*ӴڶӦͨӦĽϵͳIJλ(Ƶۺƽ̨нϵͳЧ)*/ + BYTE byJoinDecoderId[MAX_WINDOWS]; + //ʾƵֱʣ1-D1,2-720P,3-1080P豸Ҫݴ//ֱʽнͨķ䣬1ó1080P豸4ͨ + //˽ͨ + BYTE byDecResolution; + BYTE byRes[143]; + }struVideoPlatform; + struct + { + BYTE byRes[160]; + }struNotVideoPlatform; + }struDiff; + BYTE byRes[120]; +}NET_DVR_VGA_DISP_CHAN_CFG_V40,*LPNET_DVR_VGA_DISP_CHAN_CFG_V40; + +typedef struct tagNET_DVR_V6SUBSYSTEMPARAM +{ + BYTE bySerialTrans;//Ƿ͸0-1- + BYTE byRes[35]; +}NET_DVR_V6SUBSYSTEMPARAM, *LPNET_DVR_V6SUBSYSTEMPARAM; + + + + +typedef struct tagNET_DVR_CORRECT_DEADPIXEL_PARAM +{ + DWORD dwSize; + DWORD dwCommand; //0-뻵ģʽ1-ӻ㣬2-滵㣬3-˳ + DWORD dwDeadPixelX; //X + DWORD dwDeadPixelY; //Y + BYTE byRes[12]; // +}NET_DVR_CORRECT_DEADPIXEL_PARAM, *LPNET_DVR_CORRECT_DEADPIXEL_PARAM; + +#define MAX_REDAREA_NUM 6 //̵ + +typedef struct tagNET_DVR_CORRECT_PARAMS +{ + BYTE byYellowIntervalTime;//ƵƵļʱ䣬λ루s + BYTE byDigTrafficLight;//ǷǽֻͨƵƣ0-ǣ1- + BYTE byRes[2]; +}NET_DVR_CORRECT_PARAMS,*LPNET_DVR_CORRECT_PARAMS; + +typedef struct tagNET_DVR_REDAREACFG +{ + DWORD dwSize; + DWORD dwCorrectEnable; //ǷУܣ0-رգ1- + DWORD dwCorrectLevel; //У1(У)-10(У),ĬΪ5 + DWORD dwAreaNum; //У + NET_VCA_RECT struLaneRect[MAX_REDAREA_NUM]; //У + NET_DVR_CORRECT_PARAMS struCorrectParam[MAX_REDAREA_NUM/*6*/]; //УԺУӦ + BYTE byRes2[8]; // +}NET_DVR_REDAREACFG, *LPNET_DVR_REDAREACFG; + +typedef struct tagNET_DVR_HISTORICDATACFG +{ + DWORD dwSize; + DWORD dwTotalNum; //ʷݸ + BYTE byRes[16]; +}NET_DVR_HISTORICDATACFG, *LPNET_DVR_HISTORICDATACFG; + + +#define INQUEST_MESSAGE_LEN 44 //ѶصϢ +#define INQUEST_MAX_ROOM_NUM 2 //ѶҸ +#define MAX_RESUME_SEGMENT 2 //֧ͬʱָƬĿ + +typedef struct tagNET_DVR_INQUEST_ROOM +{ + BYTE byRoomIndex; //Ѷұ + BYTE byFileType; //0-Ѷļ1-ͥϴļ + BYTE byMode; /* 0 ʹг; 0modeֵ 1-Ӱ 2-л1 3-л2 4-˫ 5-1 6-2 7-Ļ1 8-Ļ2 */ + BYTE byQuick; /* ǷΪã 1-ãòflash0-ãòFlash mode 0 Ч*/ + BYTE byRes[20]; // +}NET_DVR_INQUEST_ROOM, *LPNET_DVR_INQUEST_ROOM; + +typedef struct tagNET_DVR_INQUEST_MESSAGE +{ + char sMessage[INQUEST_MESSAGE_LEN]; //صϢ + BYTE byRes[46]; // +}NET_DVR_INQUEST_MESSAGE, *LPNET_DVR_INQUEST_MESSAGE; + +typedef struct tagNET_DVR_INQUEST_SENSOR_DEVICE +{ + WORD wDeviceType; //ݲɼ豸ͺ:0- 1- 2-ز 3- 4- 5-ء6-ϡ7-ά˹ + WORD wDeviceAddr; //ݲɼ豸ַ + BYTE byRes[28]; // +}NET_DVR_INQUEST_SENSOR_DEVICE, *LPNET_DVR_INQUEST_SENSOR_DEVICE; + +typedef struct tagNET_DVR_INQUEST_SENSOR_INFO +{ + NET_DVR_INQUEST_SENSOR_DEVICE struSensorDevice[INQUEST_MAX_ROOM_NUM]; + DWORD dwSupportPro; //֧Э,λʾ, °汾չֶ + //0x1: 0x2:ز 0x4: + BYTE byRes[120]; // +}NET_DVR_INQUEST_SENSOR_INFO, *LPNET_DVR_INQUEST_SENSOR_INFO; + +typedef struct tagNET_DVR_INQUEST_ROOM_INFO +{ + char szCDName[NAME_LEN]; //ƣ˫̹һ + union + { + BYTE byBitRate; // byCalcTypeΪ0ʱЧ(0-321-482-643-804-965-128 + //6-1607-1928-2249-25610-32011-38412-448 + //13-51214-64015-76816-896ǰ16ֵ)17-102418-128019-1536 + //20-179221-204822-307223-409624-8192 + BYTE byInquestTime; // byCalcTypeΪ1ʱЧ0-1Сʱ, 1-2Сʱ,2-3Сʱ,3-4Сʱ, 4-6Сʱ,5-8Сʱ,6-10Сʱ,7-12Сʱ + //8-16Сʱ, 9-20Сʱ,10-22Сʱ,11-24Сʱ + }uCalcMode; + BYTE byCalcType; //¼0- 1-ʱ + BYTE byAutoDelRecord; // ǷԶɾ¼0-ɾʱ¼ 1-ɾ + BYTE byAlarmThreshold; // ֵ + BYTE byInquestChannelResolution; //Ѷֱͨʣ0:720P,1:1080P,2:CIF,3:4CIF,4:WD1,5-VGA + BYTE byAutoOpenTray; //ǷԶ 0-1- + BYTE byCDPrintEnabled; //ָɺǷʹ̷ܹӡ 0- 1- + BYTE byRes[9]; +}NET_DVR_INQUEST_ROOM_INFO, *LPNET_DVR_INQUEST_ROOM_INFO; + +typedef struct tagNET_DVR_INQUEST_SYSTEM_INFO +{ + DWORD dwRecordMode; //¼ģʽ:1 ˫ģʽ 2 ֿģʽ 3 ˫˫ģʽ޸Ҫ豸 + DWORD dwWorkMode; //ģʽ:0 ׼ģʽ 1 ͨģʽ(Ŀǰֻб׼ģʽ) + DWORD dwResolutionMode; //豸ֱʣ0: 1:D1 2:720P 3:1080PѶôֶΣ + NET_DVR_INQUEST_SENSOR_INFO struSensorInfo; //ʪȴ + NET_DVR_INQUEST_ROOM_INFO struInquestRoomInfo[INQUEST_MAX_ROOM_NUM]; + BYTE byEnableHashCheck; //ǷöԹHASHֵУ 0-壬1-ã2- + BYTE byEnableInitCD; //Ƿóʼ 0-壬1-ã2- + BYTE byCDProcessingMode; //1.ģʽ 2-ģʽ ģʽ¼ɵĹ̹鵵Ͱϣ¼ʧܵḶ́е۽ֱͨмijλõģʽ¼õĹ̴мijλọ́¼ʧܵĹ̷ŵͰ + BYTE byRes[21]; // +}NET_DVR_INQUEST_SYSTEM_INFO, *LPNET_DVR_INQUEST_SYSTEM_INFO; + +typedef struct _NET_DVR_INQUEST_ALARM_ +{ + DWORD dwSize; + DWORD dwAlarmType; /* 0- 1-̴ 2-Ѷʱ*/ + BYTE byTrayNo; /**/ + BYTE byRes[3]; + DWORD dwInquestTime; /*Ѷʱ,dwAlarmType=2ʱЧ,λ:*/ + DWORD dwNotifyChannel; /*Ѷʱ䳬ʱͨ*/ + BYTE byRes1[244]; +}NET_DVR_INQUEST_ALARM, *LPNET_DVR_INQUEST_ALARM; + +typedef struct _NET_DVR_VIDEO_PARKING_POLE_ALARM_ +{ + DWORD dwSize; //ṹС + NET_DVR_TIME_V30 struTime; //ʱ + BYTE byParkingNum[32]; //λ + BYTE byAlarmType; //ͣ0-δ֪1-ͷڵ2-ť3-Ƿռñ4-λ״̬仯 + BYTE byVehicleEnterState; //״̬0-δ֪1-룬2-뿪 + BYTE byRes[78]; +}NET_DVR_VIDEO_PARKING_POLE_ALARM, *LPNET_DVR_VIDEO_PARKING_POLE_ALARM; + +typedef struct tagNET_DVR_INQUEST_RESUME_SEGMENT +{ + NET_DVR_TIME struStartTime; //¼ʼʱ + NET_DVR_TIME struStopTime; //¼ֹʱ + BYTE byRoomIndex; //Ѷұ,1ʼ + BYTE byDriveIndex; //¼,1ʼ + WORD wSegmetSize; //ƬϵĴС, λM + DWORD dwSegmentNo; //ƬڱѶе,1ʼ + BYTE byRes[24]; // +}NET_DVR_INQUEST_RESUME_SEGMENT, *LPNET_DVR_INQUEST_RESUME_SEGMENT; + +typedef struct tagNET_DVR_INQUEST_RESUME_EVENT +{ + DWORD dwResumeNum; //ָ¼ + NET_DVR_INQUEST_RESUME_SEGMENT struResumeSegment[MAX_RESUME_SEGMENT]; + BYTE byResumeMode; //ָģʽ0-ָ̻1-˫ָ̻ + BYTE byCDPrintEnbled; //ָɺǷʹ̷ܹӡ 0- 1- + BYTE byRes[198]; // +}NET_DVR_INQUEST_RESUME_EVENT, *LPNET_DVR_INQUEST_RESUME_EVENT; + +typedef struct tagNET_DVR_INQUEST_DEVICE_VERSION +{ +BYTE byMainVersion; /*汾. + 0 : δ֪ + 1 : 8000ѶDVR + ΰ汾: 1 : 8000HD-S + 2 : 8100ѶDVR + ΰ汾: 1 : Ѷ81SNL + 2 : Ѷ81SH + 3 : Ѷ81SFH + 3 : 8608ѶNVR + ΰ汾: 1 : DS-8608SN-SP + 2 : DS-8608SN-ST +*/ +BYTE bySubVersion; //ߴΰ汾 +BYTE byUpgradeVersion; //汾,δΪ0 +BYTE byCustomizeVersion; //ư汾,ǶΪ0 +BYTE byRes[60]; // +}NET_DVR_INQUEST_DEVICE_VERSION, *LPNET_DVR_INQUEST_DEVICE_VERSION; + +typedef struct tagNET_DVR_DISK_RAID_INFO +{ + DWORD dwSize; //ṹС + BYTE byEnable; //RaidǷ + BYTE bySleepStatus; //0-Ч 1-ߣ2- + BYTE byRes[34]; //ֽ +}NET_DVR_DISK_RAID_INFO, *LPNET_DVR_DISK_RAID_INFO; + + +typedef struct tagNET_DVR_SYNCHRONOUS_IPC +{ + DWORD dwSize; //ṹС + BYTE byEnable; //ǷãΪǰIPCͬ豸 + BYTE byRes[7]; // +}NET_DVR_SYNCHRONOUS_IPC, *LPNET_DVR_SYNCHRONOUS_IPC; + +typedef struct tagNET_DVR_IPC_PASSWD +{ + DWORD dwSize; //ṹС + char sOldPasswd[PASSWD_LEN]; //IPCľ룬DVRDVR֤ + char sNewPasswd[PASSWD_LEN]; //IPC + BYTE byRes[32]; +}NET_DVR_IPC_PASSWD, *LPNET_DVR_IPC_PASSWD; + +//ͨȡDVR״̬λbps +typedef struct tagNET_DEVICE_NET_USING_INFO +{ + DWORD dwSize; //ṹС + DWORD dwPreview; //Ԥ + DWORD dwPlayback; //ط + DWORD dwIPCModule; //IPC + DWORD dwNetDiskRW; //̶д + BYTE res[32]; +}NET_DVR_DEVICE_NET_USING_INFO, *LPNET_DVR_DEVICE_NET_USING_INFO; + +//ͨDVRǰIPCIPַ +typedef struct tagNET_DVR_IPC_NETCFG +{ + DWORD dwSize; //ṹС + NET_DVR_IPADDR struIP; //IPCIPַ + WORD wPort; //IPCĶ˿ + char res[126]; +}NET_DVR_IPC_NETCFG, *LPNET_DVR_IPC_NETCFG; + +//ʱ +typedef struct tagNET_DVR_TIME_LOCK +{ + DWORD dwSize; //ṹС + NET_DVR_TIME strBeginTime; + NET_DVR_TIME strEndTime; + DWORD dwChannel; //ͨ, 0xffʾͨ + DWORD dwRecordType; //¼: 0xffffffffȫ0ʱ¼1-ƶ⣬23-ƶ⣬4-ƶ⣬5-6-ֶ¼7-¼(ͬļ) + DWORD dwLockDuration; //ʱ,λ,0xffffffffʾ + NET_DVR_TIME_EX strUnlockTimePoint; //ʱЧdwLockDurationΪʱʱ䵽ʱԶ + BYTE byRes[4]; +}NET_DVR_TIME_LOCK, *LPNET_DVR_TIME_LOCK; + +typedef struct tagNET_DVR_LOCK_RETURN +{ + DWORD dwSize; //ṹС + NET_DVR_TIME strBeginTime; + NET_DVR_TIME strEndTime; + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ,0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cTimeDifferenceH; //UTCʱСʱ-12 ... +14+ʾ, byISO8601Ϊ1ʱЧ + char cTimeDifferenceM; //UTCʱӣ-30, 30, 45+ʾ, byISO8601Ϊ1ʱЧ + BYTE byRes[17]; +}NET_DVR_LOCK_RETURN, *LPNET_DVR_LOCK_RETURN; + +//67DVS +//֤ +typedef enum +{ + UPGRADE_CERT_FILE = 0, + UPLOAD_CERT_FILE = 1, + TRIAL_CERT_FILE = 2, + CONFIGURATION_FILE = 3, + UPLOAD_RECORD_FILE = 4 , //ϴ¼ļ + SCENE_CONFIGURATION_FILE = 5, //ļϴ + UPLOAD_PICTURE_FILE = 6, //ϴͼƬļ + UPLOAD_VIOLATION_FILE = 7, //ϴΥֵļ + UPLOAD_TG_FILE = 8, //ϴTGTiming GeneratorļT1ԣ + UPLOAD_DATA_TO_DB = 9, //ϴļͼ + UPLOAD_BACKGROUND_PIC = 10, //ϴͼƬ + UPLOAD_CALIBRATION_FILE = 11, //ϴ궨ļ + UPLOAD_TME_FILE = 12, //ϴڹļ + + //UPLOAD_TME_FILE = 12, //ϴڹļ + UPLOAD_VEHICLE_BLOCKALLOWLIST_FILE = 13, + UPLOAD_PICTURE_TO_CLOUD = 15, //ϴͼƬƴ洢 + UPLOAD_VIDEO_FILE = 16, //ϴƵļ + UPLOAD_SCREEN_FILE = 17, //ϴĻļ + UPLOAD_PUBLISH_MATERIAL = 18, //ϴϢ̬زļ + UPLOAD_PUBLISH_UPGRADE_FILE = 19, //ϴϢļ + UPLOAD_RING_FILE = 20, //ϴļ + UPLOAD_ENCRYPT_CERT = 21, //ϴ֤ + UPLOAD_THERMOMETRIC_FILE = 22, //ϴ±궨ļ + UPLOAD_SUBBRAND_FILE = 23, //ϴƷļ + UPLOAD_LED_CHECK_FILE = 24, //ϴLEDУļ + BATCH_UPLOAD_PICTURE_FILE = 25, //ϴͼƬļ + UPLOAD_EDID_CFG_FILE = 26, //ϴEDIDļ + UPLOAD_PANORAMIC_STITCH = 27,//ϴȫԶƴļ + UPLOAD_BINOCULAR_COUNTING = 28,//ϴֱ + UPLOAD_AUDIO_FILE = 29, //ϴļ + UPLOAD_PUBLISH_THIRD_PARTY_FILE = 30, //ϴļ + UPLOAD_DEEPEYES_BINOCULAR = 31,//ϴTX1˫Ŀ + UPLOAD_CERTIFICATE_BLOCKLIST = 32, //ϴֹ֤ + UPLOAD_HD_CAMERA_CORRECT_TABLE = 33,//ϴ2400W + UPLOAD_FD_DATA = 35,//ݵ + UPLOAD_FACE_DATA = 36,//ͼƬݵ + UPLOAD_FACE_ANALYSIS_DATA = 37,//ͼƬݵ豸ʶͼƬĿ + UPLOAD_FILEVOLUME_DATA = 38,//ϴļļ(ĿǰֻCVRʵ) + IMPORT_DATA_TO_FACELIB = 39,//ݣͼƬ+ͼƬϢ 豸⣩ + UPLOAD_LEFTEYE_4K_CALIBFILE = 40,//ۡ4K궨ڲϴĿ¼ + UPLOAD_SECURITY_CFG_FILE = 41,//ļȫ + UPLOAD_RIGHT_CONTROLLER_AUDIO = 42, //ϴȨ޿Ƶļ + UPLOAD_MODBUS_CFG_FILE = 43, //ModbusЭļ + UPLOAD_NOTICE_VIDEO_DATA = 44, //Ƶ· + UPLOAD_RS485_PROTOCOL_DLL_FILE = 45, //RS485Э鶯̬ļ + UPLOAD_PIC_BY_BUF = 46,//ͼƬ浼ͼƬļ + UPLOAD_CLIENT_CALIBFILE = 47,//ͻ궨ļ(.ptoʽļ) + UPLOAD_HD_CAMERA_CORRECT_TABLE_3200W = 48,//3200W(.calʽļ) + UPLOAD_DOOR_CONTENT = 49, //ϴԪſϵϢ + UPLOAD_ASR_CONTROL_FILE = 50, //ʶļϴ + UPLOAD_APP_FILE = 51,//ϴHEOP APPļ + UPLOAD_AI_ALGORITHM_MODEL = 52, //AIƽ̨ϴ㷨ģ͵豸 + UPLOAD_PUBLISH_PROGRAM_THUMBNAIL = 53, //ϴϢĿͼ + UPLOAD_PUBLISH_TEMPLATE_THUMBNAIL = 54, //ϴϢģͼ + UPLOAD_AI_PICTURE = 55,//AIƽ̨ͼƬ·ͼƬΪƸʽ + UPLOAD_OFFLINE_CAPTURE_INFO = 56, //߲ɼûб + UPLOAD_FONT_TYPE_DLL_FILE = 57, //⵼ + UPLOAD_CLIENT_CALIBFILE_FILE = 58, //ͻ궨ļ(.ptoʽļ,ͨ) + UPLOAD_HD_CAMERA_CORRECT_TABLE_3200W_FILE = 59, //3200W(.calʽļ,ͨ) + IMPORT_DATA_TO_HBDLIB = 60, /*ݵ⣨ͼƬ+ͼƬϢ 豸⣩*/ + UPLOAD_SCENE_FILE = 61, //볡ļ + UPLOAD_RATIOSTITCHING_FILE = 62, // 뱶ƴļ + UPLOAD_LENS_PARAM_FILE = 63, // 뾵ͷļ + UPLOAD_CUSTOMAUDIO_FILE = 64, //ԶƵزļ + UPLOAD_VIDEOWALL_MATERIAL_FILE = 65 //ǽزļ +}NET_SDK_UPLOAD_TYPE; + +typedef enum +{ + NET_SDK_DOWNLOAD_CERT = 0, //֤ + NET_SDK_DOWNLOAD_IPC_CFG_FILE = 1,//IPCļ + NET_SDK_DOWNLOAD_BASELINE_SCENE_PIC = 2, //ػ׼ͼƬ + NET_SDK_DOWNLOAD_VQD_ALARM_PIC = 3, //VQDͼƬ + NET_SDK_DOWNLOAD_CONFIGURATION_FILE = 4, //ļ + NET_SDK_DOWNLOAD_SCENE_CONFIGURATION_FILE = 5, //سļ + NET_SDK_DOWNLOAD_FILE_FORM_DB = 6, //ͼ + // NET_SDK_DOWNLOAD_TME_FILE = 7 //سڹļ + + NET_SDK_DOWNLOAD_TME_FILE = 7, //سڹļ + NET_SDK_DOWNLOAD_VEHICLE_BLOCKALLOWLIST_FILE = 8, //ļ + NET_SDK_DOWNLOAD_GUID_FILE = 9, //GUIDļ + NET_SDK_DOWNLOAD_FILE_FORM_CLOUD = 10, //ƴ洢ͼƬ + NET_SDK_DOWNLOAD_PICTURE = 11, //ͼƬ + NET_SDK_DOWNLOAD_VIDEO = 12, //Ƶ + NET_DVR_DOWNLOAD_SCREEN_FILE = 13, //Ļļ + NET_SDK_DOWNLOAD_PUBLISH_MATERIAL = 14, //Ϣ̬زļ + NET_SDK_DOWNLOAD_THERMOMETRIC_FILE = 15,//ز±궨ļ + NET_SDK_DOWNLOAD_LED_CHECK_FILE = 16,//LEDУļ + NET_SDK_DOWNLOAD_VEHICLE_INFORMATION = 17,//Ϣ + NET_SDK_DOWNLOAD_CERTIFICATE_BLOCKLIST_TEMPLET = 18, //ֹ֤ģ + NET_SDK_DOWNLOAD_LOG_FILE = 19, //־ + NET_SDK_DOWNLOAD_FILEVOLUME_DATA = 20,//ļļĿǰֻCVR豸֧֣ + NET_SDK_DOWNLOAD_FD_DATA = 21,//ָ + NET_SDK_DOWNLOAD_SECURITY_CFG_FILE = 22,//ļȫ + NET_SDK_DOWNLOAD_PUBLISH_SCHEDULE = 23, //ճ̵ + NET_SDK_DOWNLOAD_RIGHT_CONTROLLER_AUDIO = 24, //Ȩ޿Ƶļ + NET_SDK_DOWNLOAD_MODBUS_CFG_FILE = 25, //ModbusЭļ + NET_SDK_DOWNLOAD_RS485_PROTOCOL_DLL_FILE = 26, //RS485Э鶯̬ļ + NET_SDK_DOWNLOAD_CLUSTER_MAINTENANCE_LOG = 27, //Ⱥά־ + NET_SDK_DOWNLOAD_SQL_ARCHIVE_FILE = 28, //鵵ݿ¼ + NET_SDK_DOWNLOAD_SUBWIND_STREAM = 29,//Ӵ + NET_SDK_DOWNLOAD_DEVTYPE_CALIBFILE = 30,//ͺű궨ļ(.calʽļ) + NET_SDK_DOWNLOAD_HD_CAMERA_CORRECT_TABLE = 31,// 2400W/3200W(.calʽļ) + NET_SDK_DOWNLOAD_CLIENT_CALIBFILE = 32,//ͻ궨ļ(.ptoʽļ) + NET_SDK_DOWNLOAD_FOUE_CAMERAS_PICTURES = 33,//ͨͼƬ(.tarʽļ) + NET_SDK_DOWNLOAD_DOOR_CONTENT = 34, //ſϵϢ + NET_SDK_DOWNLOAD_PUBLISH_MATERIAL_THUMBNAIL = 35, //Ϣ̬زͼ + NET_SDK_DOWNLOAD_PUBLISH_PROGRAM_THUMBNAIL = 36, //ϢĿͼ + NET_SDK_DOWNLOAD_PUBLISH_TEMPLATE_THUMBNAIL = 37, //Ϣģͼ + NET_SDK_DOWNLOAD_DARK_FIGHTER_X_CORRECT_TABLE_MAIN = 38,//ڹļ() + NET_SDK_DOWNLOAD_DARK_FIGHTER_X_CORRECT_TABLE_BACKUP = 39,//ڹļݷ + NET_SDK_DOWNLOAD_OFFLINE_CAPTURE_INFO_TEMPLATE = 40, //زɼûбģ + NET_SDK_DOWNLOAD_CAPTURE_DATA = 41, //߲ɼ + NET_SDK_DOWNLOAD_HD_CAMERA_CORRECT_TABLE_FILE = 42, // 2400W/3200W(.calʽļ, ͨ) + NET_SDK_DOWNLOAD_CLIENT_CALIBFILE_FILE = 43, //ͻ궨ļ(.ptoʽļ, ͨ) + NET_SDK_DOWNLOAD_FOUR_CAMERAS_PICTURES_FILE = 44, //ͨͼƬ(.tarʽļ, ͨ) + NET_SDK_DOWNLOAD_SCENE_FILE = 45, //ļ + NET_SDK_DOWNLOAD_OPEN_SOURCE_CERT = 46, //ԴϹ֤ + NET_SDK_DOWNLOAD_RATIOSTITCHING_FILE = 47, //ƴļ + NET_SDK_DOWNLOAD_LENS_PARAM_FILE = 48, // ͷļ + NET_SDK_DOWNLOAD_SELECT_DEVTYPE_CALIBFILE = 49, //ָͺű궨ļ(.calʽļ) + NET_SDK_DOWNLOAD_VIDEOWALL_MATERIAL_FILE = 50, //ǽزļ +}NET_SDK_DOWNLOAD_TYPE; + +//״̬ +typedef enum +{ + NET_SDK_DOWNLOAD_STATUS_SUCCESS = 1, //سɹ + NET_SDK_DOWNLOAD_STATUS_PROCESSING, // + NET_SDK_DOWNLOAD_STATUS_FAILED, //ʧ + NET_SDK_DOWNLOAD_STATUS_UNKOWN_ERROR, //δ֪ + NET_SDK_DOWNLOAD_STATUS_RESOURCE, //ڴ治 + NET_SDK_DOWNLOAD_STATUS_GUIDFILE_EXPORT_FAIL //GUIDļʧ +}NET_SDK_DOWNLOAD_STATUS; + +//ؿ +typedef enum tagNET_SDK_DOWNLOAD_CONTROL_TYPE_ENUM +{ + ENUM_DOWNLOAD_CONTROL_ERR = -1, + ENUM_DOWNLOAD_CONTROL_QOS = 1 // +}NET_SDK_DOWNLOAD_CONTROL_TYPE_ENUM; + +typedef struct tagNET_DVR_PANORAMIC_STITCH_UPLOAD +{ + DWORD dwSize; + DWORD dwChannel;// ͨ + BYTE byRes[128]; +}NET_DVR_PANORAMIC_STITCH_UPLOAD, *LPNET_DVR_PANORAMIC_STITCH_UPLOAD; + +typedef struct NET_DVR_FD_DATA_COND +{ + DWORD dwSize; + char szFDID[NET_SDK_MAX_FDID_LEN/*256*/]; //ID + char szCheckCode[NET_SDK_CHECK_CODE_LEN/*128*/]; //У + BYTE byCover;//Ƿ񸲸ʽ 0-1- + char szLoginPassword[PASSWD_LEN/*16*/]; //¼ + BYTE byRes[111]; +}NET_DVR_FD_DATA_COND, *LPNET_DVR_FD_DATA_COND; + +typedef struct NET_DVR_UPLOAD_FACE_DATA +{ + DWORD dwSize; + char szFDID[NET_SDK_MAX_FDID_LEN/*256*/]; //ID + BYTE byFDLibType; //0-;1-ֹ2- + BYTE byRes1[3]; + char szCustomInfo[NET_SDK_FDPIC_CUSTOM_INFO_LEN/*96*/]; //ͼƬԶϢ + BYTE byRes[512]; +}NET_DVR_UPLOAD_FACE_DATA, *LPNET_DVR_UPLOAD_FACE_DATA; + +typedef struct NET_DVR_UPLOAD_FACE_DATA_OUT +{ + char szPicID[NET_SDK_MAX_PICID_LEN/*256*/]; //ͼƬID + BYTE byRes[128]; +}NET_DVR_UPLOAD_FACE_DATA_OUT, *LPNET_DVR_UPLOAD_FACE_DATA_OUT; + +typedef struct NET_DVR_UPLOAD_FACE_ANALYSIS_DATA_OUT +{ + DWORD dwSize; + DWORD dwPID;//ͼƬID + DWORD dwFaceAnalysisNum;//ʶ + NET_VCA_RECT struVcaRect[NET_DVR_MAX_FACE_ANALYSIS_NUM]; //ʶĿ꣬ + BYTE byRes[128]; +}NET_DVR_UPLOAD_FACE_ANALYSIS_DATA_OUT, *LPNET_DVR_UPLOAD_FACE_ANALYSIS_DATA_OUT; + +typedef struct NET_DVR_SECURITY_CFG_FILE_COND +{ + DWORD dwSize; + char szSecretKey[NET_SDK_SECRETKEY_LEN/*128*/];//УԿ + BYTE byRes[128]; +}NET_DVR_SECURITY_CFG_FILE_COND, *LPNET_DVR_SECURITY_CFG_FILE_COND; + +typedef struct tagNET_DVR_DOWNLOAD_CLUSTER_MAINTENANCE_LOG_PARAM_ +{ + DWORD dwSize; + BYTE byType; //־ͣ0-ȫ1-2-Ĭ + BYTE byRes[255]; +}NET_DVR_DOWNLOAD_CLUSTER_MAINTENANCE_LOG_PARAM, *LPNET_DVR_DOWNLOAD_CLUSTER_MAINTENANCE_LOG_PARAM; + + +typedef struct tagNET_DVR_BONJOUR_CFG +{ + DWORD dwSize; // ṹС + BYTE byEnableBonjour; // Bonjourʹ 0 1ر + BYTE byRes1[3]; + BYTE byFriendlyName[MAX_DOMAIN_NAME]; // + BYTE byRes2[128]; +}NET_DVR_BONJOUR_CFG, *LPNET_DVR_BONJOUR_CFG; + +typedef struct tagNET_DVR_SOCKS_CFG +{ + DWORD dwSize; // ṹС + BYTE byEnableSocks; // ʹ 0ر 1 + BYTE byVersion; // SOCKS汾 4SOCKS4 5SOCKS5 + WORD wProxyPort; // ˿ڣĬ1080 + BYTE byProxyaddr[MAX_DOMAIN_NAME]; // IPַ + BYTE byUserName[MAX_DOMAIN_NAME]; // û SOCKS + BYTE byPassword[NAME_LEN]; // SOCKS5 + BYTE byLocalAddr[MAX_LOCAL_ADDR_LEN]; //ʹsocksΣʽΪ"ip/netmask;ip/netmask;" + BYTE byRes[128]; +}NET_DVR_SOCKS_CFG, *LPNET_DVR_SOCKS_CFG; + + + +typedef struct tagNET_DVR_QOS_CFG +{ + DWORD dwSize; + BYTE byManageDscp; // ݵDSCPֵ [0-63] + BYTE byAlarmDscp; // ݵDSCPֵ [0-63] + BYTE byVideoDscp; // ƵݵDSCPֵ [0-63]byFlagΪ0ʱʾƵ + BYTE byAudioDscp; // ƵݵDSCPֵ [0-63]byFlagΪ1ʱЧ + BYTE byFlag; // 0Ƶһ1Ƶֿ + BYTE byEnable; + BYTE byRes[126]; +}NET_DVR_QOS_CFG, *LPNET_DVR_QOS_CFG; + +typedef struct tagNET_DVR_HTTPS_CFG +{ + DWORD dwSize; + WORD wHttpsPort; // HTTPS˿ + BYTE byEnable; // ʹ 0ر 1 + BYTE byRes[125]; +}NET_DVR_HTTPS_CFG, *LPNET_DVR_HTTPS_CFG; + +//֤ +typedef struct tagNET_DVR_CERT_NAME +{ + BYTE byCountry[MAX_COUNTRY_NAME_LEN]; //Ҵ CN + BYTE byState[MAX_DOMAIN_NAME]; //޻ʡ + BYTE byLocality[MAX_DOMAIN_NAME]; // + BYTE byOrganization[MAX_DOMAIN_NAME]; //֯ + BYTE byUnit[MAX_DOMAIN_NAME]; //λ + BYTE byCommonName[MAX_DOMAIN_NAME]; + BYTE byEmail[MAX_DOMAIN_NAME]; + BYTE byRes[128]; +}NET_DVR_CERT_NAME, *LPNET_DVR_CERT_NAME ; + +typedef struct tagNET_DVR_CERT_ADDITION_PARAM +{ + DWORD dwSize; + char csCustomID[64]; //ûԶID + BYTE byRes1[2]; + BYTE byCertificateMode;//wCertTypeΪ1-CertificateʱЧ0-ǩ֤飬1-֤˽Կʽ + BYTE byPrivateKeyMode;// byCertificateModeΪ1-֤˽ԿʽʱЧ 0-key 1-PKCS#12 + BYTE byPassword[64]; //룬PrivateKeyModeΪ0ʱΪ˽Կ룬Ϊ1ʱΪPKCS#12 + BYTE byRes[128]; +}NET_DVR_CERT_ADDITION_PARAM, *LPNET_DVR_CERT_ADDITION_PARAM; + + +typedef struct tagNET_DVR_CERT_PARAM +{ + DWORD dwSize; + WORD wCertFunc; //֤࣬0-802.1x(ӦWIFI֤),1-HTTPS, 3-ieee802.1x(ӦLAN֤) + WORD wCertType; //֤ͣ0-CA1-Certificate,2-˽Կļ + BYTE byFileType; //֤ļͣ0-PEM,1-PFX + BYTE byRes1[2];//ֽ + BYTE byAddition;//Ƿʹøӽṹ壬0-ʹ;1-ʹ + NET_DVR_CERT_ADDITION_PARAM * pStruAdditionParam;//Ϣṹָ + BYTE byRes[28]; +}NET_DVR_CERT_PARAM, *LPNET_DVR_CERT_PARAM; + +#define UPLOAD_CERTIFICATE 1 //ϴ֤ + + +typedef struct tagNET_DVR_CERT_INFO +{ + DWORD dwSize; + NET_DVR_CERT_PARAM struCertParam; //֤ + DWORD dwValidDays; //ЧΪǩʱЧ + BYTE byPasswd[NAME_LEN]; //˽Կ + NET_DVR_CERT_NAME struCertName; // ֤ + NET_DVR_CERT_NAME struIssuerName; // ֤鷢ƣǩ֤ϢȡʱЧ + NET_DVR_TIME_EX struBeginTime; //֤鴴ʱ䣨ǩ֤ϢȡʱЧ + NET_DVR_TIME_EX struEndTime; //ֹ֤ʱ䣨ǩ֤ϢȡʱЧ + BYTE serialNumber[NAME_LEN]; //֤ʶ루ǩ֤ϢȡʱЧ + BYTE byVersion; + BYTE byKeyAlgorithm; // 0-RSA 1-DSA + BYTE byKeyLen; //ܳ 0-512 1-1024 2-2048 + BYTE bySignatureAlgorithm; //ǩ㷨ͣǩ֤ϢȡʱЧ + BYTE byRes[128]; +}NET_DVR_CERT_INFO, *LPNET_DVR_CERT_INFO; + + +//channel record status +//***ͨ¼״̬*****// +typedef struct tagNET_DVR_CHANS_RECORD_STATUS +{ + BYTE byValid; //ǷЧ + /*(ֻ)¼:0: ¼1¼ 2- + 3- 4-Ƶ 5-δ 6-浵 7-ش + 8-û 9-δ֤,10-浵к¼ 11-¼شк¼ 12-token֤ʧ*/ + BYTE byRecord; + WORD wChannelNO; //ͨ + DWORD dwRelatedHD; // + BYTE byOffLineRecord; //¼ 0-ر 1- + BYTE byRes[7]; //ֽ +}NET_DVR_CHANS_RECORD_STATUS, *LPNET_DVR_CHANS_RECORD_STATUS; + + +typedef struct tagNET_DVR_IP_ALARM_GROUP_NUM +{ + DWORD dwSize; + DWORD dwIPAlarmInGroup; //IPͨ + DWORD dwIPAlarmInNum; //IPͨ + DWORD dwIPAlarmOutGroup; //IPͨ + DWORD dwIPAlarmOutNum; //IPͨ + BYTE byRes[64]; +}NET_DVR_IP_ALARM_GROUP_NUM, *LPNET_DVR_IP_ALARM_GROUP_NUM; +//****NVR end***// + +typedef struct tagNET_DVR_CHAN_GROUP_RECORD_STATUS +{ + DWORD dwSize; //ṹС + NET_DVR_CHANS_RECORD_STATUS struChanStatus[MAX_CHANNUM_V30]; //һ64 +}NET_DVR_CHAN_GROUP_RECORD_STATUS, *LPNET_DVR_CHAN_GROUP_RECORD_STATUS; + + +typedef struct tagNET_DVR_RECTCFG +{ + WORD wXCoordinate; /*ϽʼX*/ + WORD wYCoordinate; /*ϽY*/ + WORD wWidth; /*ο*/ + WORD wHeight; /*θ߶*/ +}NET_DVR_RECTCFG, *LPNET_DVR_RECTCFG; +/*Ϣ*/ +typedef struct tagNET_DVR_WINCFG +{ + DWORD dwSize; + BYTE byVaild; + BYTE byInputIdx; /*Դ*/ + BYTE byLayerIdx; /*ͼ㣬0Ϊײ*/ + BYTE byTransparency; //͸ȣ0100 + NET_DVR_RECTCFG struWin;//ĿĴ(ʾǽ) + WORD wScreenHeight;// + WORD wScreenWidth;// + BYTE byRes[20]; +}NET_DVR_WINCFG, *LPNET_DVR_WINCFG; + +#define MAX_LAYERNUMS 32 + +typedef struct tagNET_DVR_ALLWINCFG +{ + DWORD dwSize; + NET_DVR_WINCFG struWinCfg[MAX_LAYERNUMS]; + BYTE byRes2[24]; +}NET_DVR_ALLWINCFG, *LPNET_DVR_ALLWINCFG; + +typedef struct tagNET_DVR_SCREENZOOM +{ + DWORD dwSize; + DWORD dwScreenNum;// + NET_DVR_POINT_FRAME struPointFrame; + BYTE byLayer;//ͼ + BYTE byRes[11]; +}NET_DVR_SCREENZOOM, *LPNET_DVR_SCREENZOOM; + +//2011-04-18 +/*Ϣ,99991ʼ */ +typedef struct tagNET_MATRIX_CAMERAINFO +{ + DWORD dwGlobalCamId; /* camȫֱ*/ + BYTE sCamName[NAME_LEN]; /*cam*/ + DWORD dwMatrixId; /*camӦı*/ + DWORD dwLocCamId; /*camӦڲ*/ + BYTE byValid; /*ǷЧ0-1-*/ + BYTE byPtzCtrl; /* Ƿɿأ0-1-*/ + BYTE byUseType; //*ʹͣ0-Ϊʹã1-BNC2-SP3,3-V6ˣ4-*/ + BYTE byUsedByTrunk;//ǰʹ״̬0-ûбʹã1-ʹ + BYTE byTrunkReq; /*ֱ,D1Ϊλ1 - 1D12- 2D1ΪʹʱָǸߵĴ*/ + BYTE byRes1[3]; + NET_DVR_TIME struInstallTime;//װʱ + BYTE sPurpose[NAME_LEN];/*;*/ + BYTE byRes2[20]; +}NET_MATRIX_CAMERAINFO, *LPNET_MATRIX_CAMERAINFO; + +/*ʾϢ2048*/ +typedef struct tagNET_MATRIX_MONITORINFO +{ + DWORD dwGloalMonId; /*mon ͳһ*/ + BYTE sMonName[NAME_LEN]; + DWORD dwMatrixId; /*monھı*/ + DWORD dwLocalMonId; /*monڲ*/ + BYTE byValid; /*ǷЧ0-1-*/ + BYTE byTrunkType; /*ʹͣ0-Ϊʹã1-BNC2-SP3,3-V6ˣ4-*/ + BYTE byUsedByTrunk;//ǰʹ״̬0-ûбʹã1-ʹ + BYTE byTrunkReq; /*ֱ, D1Ϊλ1- 1D12- 2D1ΪʹʱָǸߵĴ*/ + NET_DVR_TIME struInstallTime;//װʱ + BYTE sPurpose[NAME_LEN];/*;*/ + BYTE byRes[20]; +}NET_MATRIX_MONITORINFO, *LPNET_MATRIX_MONITORINFO; + +typedef struct tagNET_MATRIX_DIGITALMATRIX +{ + NET_DVR_IPADDR struAddress; /*豸Ϊ豸ʱIPϢ*/ + WORD wPort; + BYTE byNicNum; /*0 - eth0, 1 - eth1, ˫ͨż󶨵*/ + BYTE byRes[69]; +}NET_MATRIX_DIGITALMATRIX, *LPNET_MATRIX_DIGITALMATRIX; +typedef struct tagNET_MATRIX_ANALOGMATRIX +{ + BYTE bySerPortNum; /*ӵĴں 0xff-ͨ*/ + BYTE byMatrixSerPortType;/* صĴģļ̿(Э)ӻͨſڣЭ飩 0 --- ЭͨѶ 1 --- ͨѶ*/ + BYTE byRes1[2]; + NET_DVR_SINGLE_RS232 struRS232; //232ڲ ͨʱ˲Ч + BYTE byRes2[200]; +}NET_MATRIX_ANALOGMATRIX, *LPNET_MATRIX_ANALOGMATRIX; + +typedef union tagNET_MATRIX_UNION +{ + NET_MATRIX_DIGITALMATRIX struDigitalMatrix; + NET_MATRIX_ANALOGMATRIX struAnalogMatrix; +}NET_MATRIX_UNION, *LPNET_MATRIX_UNION; +/*Ϣ20*/ +typedef struct tagNET_MATRIX_MATRIXINFO +{ + DWORD dwSize; + DWORD dwMatrixId; /**/ + BYTE sDevName[NAME_LEN]; + BYTE byCtrlType; /*ָͨѶʽǴͨ, ͨ*/ + BYTE byProtocolType;/*ͨſЭ*/ + BYTE byRes1[6]; /*Ԥ*/ + NET_MATRIX_UNION struMatrixUnion; + DWORD dwMaxPortsIn; /**/ + DWORD dwMaxPortsOut;/**/ + BYTE sUserName[NAME_LEN]; /*¼û*/ + BYTE sPassword[PASSWD_LEN]; /*¼*/ + NET_DVR_TIME struInstallTime;//װʱ + BYTE sPurpose[NAME_LEN];/*;*/ + BYTE byRes2[20]; /*Ԥ*/ +}NET_MATRIX_MATRIXINFO, *LPNET_MATRIX_MATRIXINFO; + + +typedef struct tagNET_DVR_MATRIXLIST +{ + DWORD dwSize; + BYTE byRes[12]; + DWORD dwMatrixNum;//豸صľ + BYTE *pBuffer;//Ϣ + DWORD dwBufLen;//ָ볤ȣ +}NET_DVR_MATRIXLIST,*LPNET_DVR_MATRIXLIST; + +/*Ϣ*/ +typedef struct tagNET_MATRIX_UARTPARAM +{ + DWORD dwSize; + BYTE byPortName[NAME_LEN]; + WORD wUserId; /*ûţ豸ΪʱһûȨ޹*/ + BYTE byPortType; /*ͣ0-RS232/1-RS485/2-RS422*/ + BYTE byFuncType; /*ӵ豸0-У1-̣2-͸ͨ(485ڲó͸ͨ),3-ģ*/ + BYTE byProtocolType; /*ֵ֧Э, Ӽ豸ʱҪϢ,ȡ֧Эıż*/ + BYTE byBaudRate; + BYTE byDataBits; + BYTE byStopBits; /*ֹͣλ*/ + BYTE byParity; /*У*/ + BYTE byFlowCtrl; /*أأ*/ + BYTE byRes[22]; /*Ԥ*/ +}NET_MATRIX_UARTPARAM, *LPNET_MATRIX_UARTPARAM; + +//256û1256 +typedef struct tagNET_MATRIX_USERPARAM +{ + DWORD dwSize; + BYTE sUserName[NAME_LEN]; + BYTE sPassword[PASSWD_LEN/*16*/]; + BYTE byRole;/*ûɫ:0-Ա,1-ԱֻһϵͳԱ255Ա*/ + BYTE byLevel; /*ͳһڲ,1- 255*/ + BYTE byRes[18]; +}NET_MATRIX_USERPARAM, *LPNET_MATRIX_USERPARAM; + +//255Դ +typedef struct tagNET_MATRIX_RESOURSEGROUPPARAM +{ + DWORD dwSize; + BYTE byGroupName[NAME_LEN]; + BYTE byGroupType;/*0-CAM飬1-ʾMON*/ + BYTE byRes1; + WORD wMemNum; + DWORD dwGlobalId[512]; + BYTE byRes2[20]; +}NET_MATRIX_RESOURCEGROUPPARAM,*LPNET_MATRIX_RESOURSEGROUPPARAM; + +//255û +typedef struct tagNET_MATRIX_USERGROUPPARAM +{ + DWORD dwSize; + BYTE sGroupName[NAME_LEN]; + WORD wUserMember[255]; /*ûԱ*/ + WORD wResorceGroupMember[255]; /*ԴԱ*/ + BYTE byPermission[32];//Ȩޣ0-ptzȨޡлȨޡѯȨ + BYTE byRes[20]; +} NET_MATRIX_USERGROUPPARAM, *LPNET_MATRIX_USERGROUPPARAM; + +typedef struct tagNET_MATRIX_TRUNKPARAM +{ + DWORD dwSize; + DWORD dwTrunkId; + BYTE sTrunkName[NAME_LEN]; + DWORD dwSrcMonId; + DWORD dwDstCamId; + BYTE byTrunkType; /*ʹ 1-BNC2-SP3˸壬3-SP3D1 4-V6ˣ5-*/ + BYTE byAbility; /*ʾ˵ĴԴ伸·*/ + BYTE bySubChan; /*Թ˸߶ԣʾͨ*/ + BYTE byLevel; /* ߼ 1-255*/ + WORD wReserveUserID; //ԤûID 1~256 0ʾͷԤ + BYTE byRes[18]; +} NET_MATRIX_TRUNKPARAM, *LPNET_MATRIX_TRUNKPARAM; + +typedef struct tagNET_DVR_MATRIX_TRUNKLIST +{ + DWORD dwSize; + BYTE byRes[12]; + DWORD dwTrunkNum;//豸صĸ + BYTE *pBuffer;//Ϣ + DWORD dwBufLen;//ָ볤ȣ +}NET_DVR_MATRIX_TRUNKLIST,*LPNET_DVR_MATRIX_TRUNKLIST; + +#define MATRIX_PROTOCOL_NUM 20 //ֵ֧Э +#define KEYBOARD_PROTOCOL_NUM 20 //ֵ֧Э +typedef struct tagNET_DVR_PROTO_TYPE_EX +{ + WORD wType; /*ipcЭֵ*/ + WORD wCommunitionType; /*0ģ 1 2ģ⡢*/ + BYTE byDescribe[DESC_LEN]; /*Эֶ*/ +}NET_DVR_PROTO_TYPE_EX, LPNET_DVR_PROTO_TYPE_EX; + +typedef struct tagNET_DVR_MATRIXMANAGE_ABIILITY +{ + DWORD dwSize; + DWORD dwMaxCameraNum;//Camera + DWORD dwMaxMonitorNum;//ʾ + WORD wMaxMatrixNum;// + WORD wMaxSerialNum;// + WORD wMaxUser;//û + WORD wMaxResourceArrayNum;//Դ + WORD wMaxUserArrayNum;//û + WORD wMaxTrunkNum;// + BYTE nStartUserNum;//ʼû + BYTE nStartUserGroupNum;//ʼû + BYTE nStartResourceGroupNum;//ʼԴ + BYTE nStartSerialNum;//ʼں + DWORD dwMatrixProtoNum; /*ЧľЭĿ0ʼ*/ + NET_DVR_PROTO_TYPE_EX struMatrixProto[MATRIX_PROTOCOL_NUM];/*Эб*/ + DWORD dwKeyBoardProtoNum; /*ЧļЭĿ0ʼ*/ + NET_DVR_PROTO_TYPE_EX struKeyBoardProto[KEYBOARD_PROTOCOL_NUM];/*Эб*/ + BYTE byDelMonitorLongCfg; //Ƿ֧ɾmonitor + BYTE byDelCamonitorLongCfg;//Ƿ֧ɾcamera + BYTE byAudioSwitchContorl;//Ƿ֧Ƶؿ + BYTE byRes[29]; +} NET_DVR_MATRIXMANAGE_ABILITY, *LPNET_DVR_MATRIXMANAGE_ABILITY; + + +//ץĹ() +typedef struct tagNET_VCA_SINGLE_FACESNAPCFG +{ + BYTE byActive; //Ƿ񼤻0-1- + /********* IPC5.1.7 Begin 2014-03-21***********/ + //ԶROIʹ + BYTE byAutoROIEnable;//0-ر,1- + BYTE byRes[2]; // + /********* IPC5.1.7 End 2014-03-21***********/ + NET_VCA_SIZE_FILTER struSizeFilter; //ߴ + NET_VCA_POLYGON struVcaPolygon; //ʶ +}NET_VCA_SINGLE_FACESNAPCFG, *LPNET_VCA_SINGLE_FACESNAPCFG; + +//ץĹ +typedef struct tagNET_VCA_FACESNAPCFG +{ + DWORD dwSize; + BYTE bySnapTime; //ĿץĴ0-10 + BYTE bySnapInterval; //ץļλ֡ + BYTE bySnapThreshold; //ץֵ0-100 + BYTE byGenerateRate; //Ŀٶ,Χ[1, 5] + BYTE bySensitive; //ĿȣΧ[1, 5] + BYTE byReferenceBright; //2012-3-27ο[0,100] + BYTE byMatchType; //2012-5-3ȶԱģʽ0-Ŀʧ󱨾1-ʵʱ + BYTE byMatchThreshold; //2012-5-3ʵʱȶֵ0~100 + NET_DVR_JPEGPARA struPictureParam; //ͼƬṹ + NET_VCA_SINGLE_FACESNAPCFG struRule[MAX_RULE_NUM]; //ץĹ + //ع̳ʱ䣨ֽڣ + WORD wFaceExposureMinDuration;//Χ(1~3600룬Ĭ60)ЧԶģʽ + //عģʽ + BYTE byFaceExposureMode;//1-رգ2-0-Զжϣ + BYTE byBackgroundPic;//ͼϴʹ 0-Ĭֵ1-ֹ + DWORD dwValidFaceTime; //Ч̳ʱ䣬λ + DWORD dwUploadInterval; //ץͳϴʱ䣬λ룬Ĭ900 + DWORD dwFaceFilteringTime;//ͣʱ,Ĭ5룬Χ0-100롣0ʾ + BYTE bySceneID; //,Ŀǰ֧1~40ΪЧ + BYTE byInvalCapFilterEnable;//ЧץĹʹܣ0Ϊرգ1ΪĬΪ0 + BYTE byInvalCapFilterThreshold;//ЧץĹֵ0~100byInvalCapFilterEnableΪ1ʱЧ + BYTE byRes2[81]; +}NET_VCA_FACESNAPCFG, *LPNET_VCA_FACESNAPCFG; + +typedef struct tagNET_DVR_FIRMWARE_VERSION_IFNO +{ + DWORD dwSize;//ṹС + char szFirmwareVersion[LEN_PROPERTY/*128*/]; //ذ汾 ֻ + BYTE byRes2[128]; +}NET_DVR_FIRMWARE_VERSION_IFNO, *LPNET_DVR_FIRMWARE_VERSION_IFNO; + + +// +typedef enum tagFACE_EXPRESSION_GROUP_ENUM +{ + ENUM_EXPRESSION_GROUP_SURPRISED = 1, // + ENUM_EXPRESSION_GROUP_PANIC = 2, // + ENUM_EXPRESSION_GROUP_DISGUUSTED = 3, // + ENUM_EXPRESSION_GROUP_HAPPY = 4, // + ENUM_EXPRESSION_GROUP_SAD = 5, //ѹ + ENUM_EXPRESSION_GROUP_ANGRY = 6, //ŭ + ENUM_EXPRESSION_GROUP_POKER = 7, // + ENUM_EXPRESSION_GROUP_ALL = 0xfe, //ȫ + ENUM_EXPRESSION_GROUP_UNKNOW = 0xff //δ֪,㷨֧δ +}FACE_EXPRESSION_GROUP_ENUM; + +typedef struct tagNET_DVR_LLI_PARAM +{ + float fSec;//[0.000000,60.000000] + BYTE byDegree;//:γ[0,90] [0,180] + BYTE byMinute;//[0,59] + BYTE byRes[6]; +}NET_DVR_LLI_PARAM, *LPNET_DVR_LLI_PARAM; + +typedef struct tagNET_DVR_LLPOS_PARAM +{ + BYTE byLatitudeType;//γͣ0-γ1-γ + BYTE byLongitudeType;//ͣ0-1- + BYTE byRes1[2]; + NET_DVR_LLI_PARAM struLatitude; /*γ*/ + NET_DVR_LLI_PARAM struLongitude; /**/ + BYTE byRes[16]; +}NET_DVR_LLPOS_PARAM, *LPNET_DVR_LLPOS_PARAM; + +//ץĸϢṹ +typedef struct tagNET_VCA_FACESNAP_ADDINFO +{ + //ο,ΪСͼ(ͷ) + NET_VCA_RECT struFacePicRect; + int iSwingAngle;//ת, -90~90 + int iTiltAngle;//, -90~90 + DWORD dwPupilDistance;//ͫ,ΧΪСֵΪ10,ֵΪǰֱʿ/1.6 + BYTE byBlockingState;//Ŀڵ״̬ 0-ʾδ֪㷨֧֣,1~ڵ,2~˲ʱڵ3~ڵ4~ڵ + BYTE byFaceSnapThermometryEnabled;//ץIJʹ 1- 0-ر + BYTE byIsAbnomalTemperature;//ץIJǷ¶쳣 1- 0- + BYTE byThermometryUnit;//µλ: 0-϶ȣ棩1-϶ȣH2-(K) + NET_DVR_TIME_EX struEnterTime; // ץ½ʱ + NET_DVR_TIME_EX struExitTime; // ץ뿪ʱ + float fFaceTemperature; // ¶ȣ - 20.0~150.0棬ȷС1λ0xffff65535ʾЧ¶ֵʱأ + float fAlarmTemperature;// ±ֵȷС1λ + DWORD dwThermalPicLen;//ȳͼƬ + BYTE *pThermalPicBuff;// ȳͼƬָ + BYTE szCustomChanID[65];// Զ岼ͨ string max.len = 64 + BYTE byRes1[3];// ֽ + NET_DVR_LLPOS_PARAM struLLPos;//豸γλϢ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pEventNotificationAlertBuff; //BuffӦEventNotificationAlert JSON Block("eventType": "faceCapture") +#else + char* pEventNotificationAlertBuff; //BuffӦEventNotificationAlert JSON Block("eventType": "faceCapture") + BYTE byRes2[4]; +#endif + DWORD dwEventNotificationAlertLen;//ȶӦEventNotificationAlert JSON Block("eventType": "faceCapture")ݳ + BYTE byRes[340];// ֽ +}NET_VCA_FACESNAP_ADDINFO, *LPNET_VCA_FACESNAP_ADDINFO; + +//ץĽ +typedef struct tagNET_VCA_FACESNAP_RESULT +{ + DWORD dwSize; // ṹС + DWORD dwRelativeTime; // ʱ + DWORD dwAbsTime; // ʱ + DWORD dwFacePicID; //ͼID + DWORD dwFaceScore; //,0-100 + NET_VCA_TARGET_INFO struTargetInfo;//ĿϢ + NET_VCA_RECT struRect; //ͼ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + DWORD dwFacePicLen; //ͼijȣΪ0ʾûͼƬ0ʾͼƬ + DWORD dwBackgroundPicLen; //ͼijȣΪ0ʾûͼƬ0ʾͼƬ() + BYTE bySmart; //IDS豸0(Ĭֵ)Smart Functiom Return 1 + BYTE byAlarmEndMark;//0-1-ǣֶνIDֶʹãʾIDӦ±ҪṩNVRʹãжϱȡʶͼƬУߵͼƬ + BYTE byRepeatTimes; //ظ0- + BYTE byUploadEventDataType;//ͼƬݳʽ0-ݣ1-URL + NET_VCA_HUMAN_FEATURE struFeature; // + float fStayDuration; //ͣʱ(λ: ) + char sStorageIP[16]; //洢IPַ + WORD wStoragePort; //洢˿ں + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + /*ͼͼƬȼ0-͵,1-е,2-ߵ, + ץֻԭе + ԭеץʵ֣ĿȷһץлȡõͼЧһͼ֣ץֻѾץɵͼƬʹͼ㷨ͼۣҪϢзͳһı׼ͼƬЧ*/ + BYTE byFacePicQuality; + BYTE byUIDLen; // ϴıʶ + BYTE byLivenessDetectionStatus;// ״̬0-1-δ֪(ʧ)2-3-4-δ + /*ϢʶλǷNET_VCA_FACESNAP_ADDINFOṹ壩,0-޸Ϣ, 1-иϢ*/ + BYTE byAddInfo; + BYTE *pUIDBuffer; //ʶָ + //Ϣָ,ָNET_VCA_FACESNAP_ADDINFOṹ + BYTE *pAddInfoBuffer; + BYTE byTimeDiffFlag; /*ʱֶǷЧ 0-ʱЧ 1-ʱЧ */ + char cTimeDifferenceH; /*UTCʱСʱ-12 ... +14 +ʾ,byTimeDiffFlagΪ1ʱЧ*/ + char cTimeDifferenceM; /*UTCʱӣ-30, 30, 45 +ʾbyTimeDiffFlagΪ1ʱЧ*/ + BYTE byBrokenNetHttp; //־λ0-شݣ1-ش + BYTE* pBuffer1; //ͼͼƬ + BYTE* pBuffer2; //ͼͼƬݣͨұͼӿڿԻȡͼ +}NET_VCA_FACESNAP_RESULT, *LPNET_VCA_FACESNAP_RESULT; + +typedef struct tagNET_VCA_SUB_PROCIMG_V50 +{ + DWORD dwImageLen; //ͼƬݳ + DWORD dwFaceScore; //,0-100 + NET_VCA_RECT struVcaRect; //ͼ + NET_VCA_POINT struLeftEyePoint; //λ + NET_VCA_POINT struRightEyePoint; //λ + BYTE byDistance; //ۼ + BYTE bySex; + BYTE byRes1; + BYTE byEyeGlass; + NET_VCA_RECT struPosRect; //λ + BYTE byRes[20]; // + BYTE *pImage; //ͼƬ +}NET_VCA_SUB_PROCIMG_V50, *LPNET_VCA_SUB_PROCIMG_V50; + +typedef struct tagNET_DVR_FACE_DETECTION +{ + DWORD dwSize; //ṹС + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + DWORD dwBackgroundPicLen; //ͼijȣΪ0ʾûͼƬ0ʾͼƬ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + NET_VCA_RECT struFacePic[MAX_FACE_PIC_NUM/*30*/];//ͼ + BYTE byFacePicNum;//ͼ + BYTE byUploadEventDataType;//ͼƬݳʽ0-ݣ1-URL + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byTimeDiffFlag; /*ʱֶǷЧ 0-ʱЧ 1-ʱЧ */ + char cTimeDifferenceH; /*UTCʱСʱ-12 ... +14 +ʾ,byTimeDiffFlagΪ1ʱЧ*/ + char cTimeDifferenceM; /*UTCʱӣ-30, 30, 45 +ʾbyTimeDiffFlagΪ1ʱЧ*/ + BYTE byRes[249]; + BYTE* pBackgroundPicpBuffer; //ͼͼƬ +}NET_DVR_FACE_DETECTION,*LPNET_DVR_FACE_DETECTION; + +typedef struct tagNET_DVR_UPGRADE_PARAM +{ + DWORD dwUpgradeType; + char *sFileName; + void *pInbuffer; + DWORD dwBufferLen; + char *pUnitIdList[64]; +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64)) + char *sCustomURL; +#else + char *sCustomURL; + BYTE byRes2[4]; +#endif + DWORD dwCustomURLLen; + BYTE byRes[100]; +}NET_DVR_UPGRADE_PARAM, *LPNET_DVR_UPGRADE_PARAM; + + +typedef struct tagNET_VCA_FD_PROCIMG_RESULT_V50 +{ + DWORD dwSize; //ṹС + DWORD dwImageId; //ͼID + BYTE byRes[20]; // + DWORD dwSubImageNum; //ͼ + NET_VCA_SUB_PROCIMG_V50 struProcImg[MAX_TARGET_NUM]; //ͼϢ +}NET_VCA_FD_PROCIMG_RESULT_V50, *LPNET_VCA_FD_PROCIMG_RESULT_V50; + +//齹 +typedef struct tagNET_DVR_DEFOCUS_ALARM +{ + DWORD dwSize; /*ṹ*/ + NET_VCA_DEV_INFO struDevInfo;/*豸Ϣ*/ + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byRes1[2]; //ֽ + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + BYTE byTimeDiffFlag; /*ʱֶǷЧ 0-ʱЧ 1-ʱЧ */ + char cTimeDifferenceH; /*UTCʱСʱ-12 ... +14 +ʾ,byTimeDiffFlagΪ1ʱЧ*/ + char cTimeDifferenceM; /*UTCʱӣ-30, 30, 45 +ʾbyTimeDiffFlagΪ1ʱЧ*/ + BYTE byRes[49]; // ֽ +}NET_DVR_DEFOCUS_ALARM, *LPNET_DVR_DEFOCUS_ALARM; + +// +typedef struct tagNET_DVR_DENSEFOGDETECTION_ALARM +{ + DWORD dwSize; /*ṹ*/ + NET_VCA_DEV_INFO struDevInfo;/*豸Ϣ*/ + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + BYTE byFogLevel; //ĵȼ0-~ 1-~ 2-~Ũ 3-Ũ + BYTE byRes[259]; // ֽ +}NET_DVR_DENSEFOGDETECTION_ALARM, *LPNET_DVR_DENSEFOGDETECTION_ALARM; + +typedef struct tagNET_DVR_AUDIOEXCEPTION_ALARM +{ + DWORD dwSize; /*ṹ*/ + BYTE byAlarmType;//ͣ1-Ƶ쳣2-Ƶͻ䣨ǿ3-ǿ4-Ƶʧ + BYTE byRes1; + WORD wAudioDecibel;//ǿȣƵͻʱõ + NET_VCA_DEV_INFO struDevInfo;/*豸Ϣ*/ + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byRes[62]; // ֽ +}NET_DVR_AUDIOEXCEPTION_ALARM, *LPNET_DVR_AUDIOEXCEPTION_ALARM; + +typedef struct tagNET_BUTTON_DOWN_EXCEPTION_ALARM +{ + DWORD dwSize; /*ṹ*/ + NET_VCA_DEV_INFO struDevInfo;/*豸Ϣ*/ + BYTE byRes[64]; // ֽ +}NET_BUTTON_DOWN_EXCEPTION_ALARM, *LPNET_BUTTON_DOWN_EXCEPTION_ALARM; + +typedef struct tagNET_VCA_FD_IMAGE_CFG +{ + DWORD dwWidth; //Ҷͼݿ + DWORD dwHeight; //Ҷͼ߶ + DWORD dwImageLen; //Ҷͼݳ + BYTE byRes[20]; // + BYTE *pImage; //Ҷͼ +}NET_VCA_FD_IMAGE_CFG, *LPNET_VCA_FD_IMAGE_CFG; + +typedef struct tagNET_VCA_FD_PROCIMG_CFG +{ + DWORD dwSize; //ṹС + BYTE byEnable; //Ƿ񼤻; + BYTE bySensitivity; //ȣ[0,5] + BYTE byRes1[22]; //ֽ + NET_VCA_SIZE_FILTER struSizeFilter; //ߴ + NET_VCA_POLYGON struPolygon; // + NET_VCA_FD_IMAGE_CFG struFDImage; //ͼƬϢ + BYTE byRes2[20]; // +}NET_VCA_FD_PROCIMG_CFG, *LPNET_VCA_FD_PROCIMG_CFG; + +typedef struct tagNET_VCA_SUB_PROCIMG +{ + DWORD dwImageLen; //ͼƬݳ + DWORD dwFaceScore; //,0-100 + NET_VCA_RECT struVcaRect; //ͼ + BYTE byRes[20]; // + BYTE *pImage; //ͼƬ +}NET_VCA_SUB_PROCIMG, *LPNET_VCA_SUB_PROCIMG; + +typedef struct tagNET_VCA_FD_PROCIMG_RESULT +{ + DWORD dwSize; //ṹС + DWORD dwImageId; //ͼID + BYTE byRes[20]; // + DWORD dwSubImageNum; //ͼ + NET_VCA_SUB_PROCIMG struProcImg[MAX_TARGET_NUM]; //ͼϢ +}NET_VCA_FD_PROCIMG_RESULT, *LPNET_VCA_FD_PROCIMG_RESULT; + +typedef struct tagNET_VCA_PICMODEL_RESULT +{ + DWORD dwImageLen; //ͼƬݳ + DWORD dwModelLen; //ģݳ + BYTE byRes[20]; // + BYTE *pImage; //ͼƬָ + BYTE *pModel; //ģָ +}NET_VCA_PICMODEL_RESULT, *LPNET_VCA_PICMODEL_RESULT; + +typedef struct tagNET_VCA_REGISTER_PIC +{ + DWORD dwImageID; //ͼID + DWORD dwFaceScore; //,0-100 + NET_VCA_RECT struVcaRect; //ͼ + BYTE byRes[20]; // +}NET_VCA_REGISTER_PIC, *LPNET_VCA_REGISTER_PIC; + +#define MAX_HUMAN_PICTURE_NUM 10 //Ƭ +#define MAX_HUMAN_BIRTHDATE_LEN 10 //³ + +typedef struct tagNET_DVR_AREAINFOCFG +{ + WORD wNationalityID; // + WORD wProvinceID; //ʡ + WORD wCityID; // + WORD wCountyID; // + /* + if (dwCode != 0) dwCode ֵ ȫʡݳб.txt + else dwCode ֵ PROVINCE_CITY_IDX + */ + DWORD dwCode; +}NET_DVR_AREAINFOCFG, *LPNET_DVR_AREAINFOCFG; + +typedef struct tagNET_VCA_HUMAN_ATTRIBUTE +{ + BYTE bySex; //Ա0-У1-Ů0xff-δ֪ + BYTE byCertificateType; //֤ͣ0-֤1-֤2-֤3-գ4-0xff-δ֪ + BYTE byBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //£磺201106 + BYTE byName[NAME_LEN]; // + NET_DVR_AREAINFOCFG struNativePlace; // + BYTE byCertificateNumber[NAME_LEN]; //֤ + /* + dwPersonInfoExtendLen && pPersonInfoExtend ӦURL(/ISAPI/System/Video/inputs/channels//faceContrast/personInfoExtend)ʾ PersonInfoExtendList XML Block + ڣƽ̨Ĺʱ򣬵pictureݵԶϢ豸ƥ䱨ЯΪƥϢһϴƽ̨Ĺƥ䣻 + */ + DWORD dwPersonInfoExtendLen;// ԱǩϢչ + BYTE *pPersonInfoExtend; //ԱǩϢչϢ + BYTE byGroup;//紫0xffʾδ֪ + BYTE byRes2[3]; //ֽ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + BYTE* pThermalData;//ȳͼƬָ +#else + BYTE* pThermalData;//ȳͼƬָ + BYTE byRes3[4];//ֽ +#endif +}NET_VCA_HUMAN_ATTRIBUTE, *LPNET_VCA_HUMAN_ATTRIBUTE; + +typedef struct tagNET_VCA_HUMANATTRIBUTE_COND +{ + BYTE bySex; //Ա0-ã1-У2-Ů + BYTE byCertificateType; //֤ͣ0-ã1-֤2-֤ + BYTE byStartBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //ʼ£磺201106 + BYTE byEndBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //ֹ£201106 + BYTE byName[NAME_LEN]; // + NET_DVR_AREAINFOCFG struNativePlace; // + BYTE byCertificateNumber[NAME_LEN]; //֤ + BYTE byRes[20]; +}NET_VCA_HUMANATTRIBUTE_COND, *LPNET_VCA_HUMANATTRIBUTE_COND; + + +typedef struct tagNET_VCA_BLOCKLIST_INFO +{ + DWORD dwSize; //ṹС + DWORD dwRegisterID; //עIDţֻ + DWORD dwGroupNo; // + BYTE byType; //־0-ȫ1-2-ֹ + BYTE byLevel; //ֹȼ0-ȫ1-ͣ2-У3- + BYTE byRes1[2]; // + NET_VCA_HUMAN_ATTRIBUTE struAttribute; //ԱϢ + BYTE byRemark[NAME_LEN]; //עϢ + DWORD dwFDDescriptionLen;//ݳ + BYTE *pFDDescriptionBuffer;//ָ + DWORD dwFCAdditionInfoLen;//ץĿ⸽Ϣ + BYTE *pFCAdditionInfoBuffer;//ץĿ⸽Ϣָ루FCAdditionInfoаPTZꡢGPSϢ + DWORD dwThermalDataLen;//ȳͼƬȣȶ¼ϱ֧ +}NET_VCA_BLOCKLIST_INFO, *LPNET_VCA_BLOCKLIST_INFO; + +typedef struct tagNET_VCA_BLOCKLIST_PARA +{ + DWORD dwSize; //ṹС + NET_VCA_BLOCKLIST_INFO struBlockListInfo; //ֹ + DWORD dwRegisterPicNum; //ֹͼ + NET_VCA_PICMODEL_RESULT struRegisterPic[MAX_HUMAN_PICTURE_NUM]; //ֹͼƬϢ + BYTE byRes[40]; // +}NET_VCA_BLOCKLIST_PARA, *LPNET_VCA_BLOCKLIST_PARA; + +typedef struct tagNET_VCA_BLOCKLIST_COND +{ + LONG lChannel; //ͨ + DWORD dwGroupNo; // + BYTE byType; //־0-ȫ1-2-ֹ + BYTE byLevel; //ֹȼ0-ȫ1-ͣ2-У3- + BYTE byRes1[2]; // + NET_VCA_HUMAN_ATTRIBUTE struAttribute; //ԱϢ + BYTE byRes[20]; +}NET_VCA_BLOCKLIST_COND, *LPNET_VCA_BLOCKLIST_COND; + +typedef struct tagNET_VCA_BLOCKLIST_PIC +{ + DWORD dwSize; //ṹС + DWORD dwFacePicNum; //ͼ + BYTE byRes[20]; // + NET_VCA_PICMODEL_RESULT struBlockListPic[MAX_HUMAN_PICTURE_NUM]; //ƬϢ +}NET_VCA_BLOCKLIST_PIC, *LPNET_VCA_BLOCKLIST_PIC; + +typedef struct tagNET_VCA_FIND_PICTURECOND +{ + LONG lChannel;//ͨ + NET_DVR_TIME struStartTime;//ʼʱ + NET_DVR_TIME struStopTime;//ʱ + BYTE byRes[12]; // +}NET_VCA_FIND_PICTURECOND, *LPNET_VCA_FIND_PICTURECOND; + +#define MAX_FACE_PIC_LEN 6144 //ͼƬݳ +typedef struct tagNET_VCA_SUB_SNAPPIC_DATA +{ + DWORD dwFacePicID; //ͼID + DWORD dwFacePicLen; //ͼݳ + NET_DVR_TIME struSnapTime; //ץʱ + DWORD dwSimilarity; //ƶ + BYTE byRes[16]; // + char sPicBuf[MAX_FACE_PIC_LEN]; //ͼƬ +}NET_VCA_SUB_SNAPPIC_DATA, *LPNET_VCA_SUB_SNAPPIC_DATA; + +typedef struct tagNET_VCA_ADVANCE_FIND +{ + DWORD dwFacePicID; //ͼƬID + BYTE byRes[36]; +}NET_VCA_ADVANCE_FIND, *LPNET_VCA_ADVANCE_FIND; + +typedef struct tagNET_VCA_NORMAL_FIND +{ + DWORD dwImageID; //ͼID + DWORD dwFaceScore; // + NET_VCA_RECT struVcaRect; //ͼ + BYTE byRes[20]; +}NET_VCA_NORMAL_FIND, *LPNET_VCA_NORMAL_FIND; + +typedef union tagNET_VCA_FIND_SNAPPIC_UNION +{ + NET_VCA_NORMAL_FIND struNormalFind; //ͨ + NET_VCA_ADVANCE_FIND struAdvanceFind; //߼ +}NET_VCA_FIND_SNAPPIC_UNION, *LPNET_VCA_FIND_SNAPPIC_UNION; + +typedef enum _VCA_FIND_SNAPPIC_TYPE_ +{ + VCA_NORMAL_FIND = 0x00000000, //ͨ + VCA_ADVANCE_FIND = 0x00000001 //߼ +}VCA_FIND_SNAPPIC_TYPE; + +typedef struct tagNET_VCA_FIND_PICTURECOND_ADVANCE +{ + LONG lChannel;//ͨ + NET_DVR_TIME struStartTime;//ʼʱ + NET_DVR_TIME struStopTime;//ʱ + BYTE byThreshold; //ֵ0-100 + BYTE byRes[23]; // + VCA_FIND_SNAPPIC_TYPE dwFindType;//ͣVCA_FIND_SNAPPIC_TYPE + NET_VCA_FIND_SNAPPIC_UNION uFindParam; // +}NET_VCA_FIND_PICTURECOND_ADVANCE, *LPNET_VCA_FIND_PICTURECOND_ADVANCE; + +typedef struct tagNET_VCA_FACESNAP_INFO_ALARM +{ + DWORD dwRelativeTime; // ʱ + DWORD dwAbsTime; // ʱ + DWORD dwSnapFacePicID; //ץͼID + DWORD dwSnapFacePicLen; //ץͼijȣΪ0ʾûͼƬ0ʾͼƬ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + BYTE byFaceScore; //ָ֣ͼ,0-100 + BYTE bySex;//Ա0-δ֪1-У2-Ů,0xff-㷨֧֣ûʶ + BYTE byGlasses;//Ƿ۾0-δ֪1-ǣ2-,3-ī, 0xff-㷨֧֣ûʶ + /* + ʶĶηΧ[byRes1-byDeviation,byRes1+byDeviation] + */ + BYTE byRes1;//0-ʾδ֪㷨֧֣,0xff-㷨֧֣ûʶ + BYTE byDeviation;//ֵ + BYTE byGroup;//0xffʾδ֪ + /*ͼͼƬȼ0-͵,1-е,2-ߵ, + 㷨ͼͼƬ,̬ͨȡڵȿӰʶܵۺĽ*/ + BYTE byFacePicQuality; + BYTE byRes; + DWORD dwUIDLen; // ϴıʶ + BYTE *pUIDBuffer; //ʶָ + float fStayDuration; //ͣʱ(λ: ) + BYTE *pBuffer1; //ץͼͼƬ +}NET_VCA_FACESNAP_INFO_ALARM, *LPNET_VCA_FACESNAP_INFO_ALARM; + +typedef struct tagNET_VCA_BLOCKLIST_INFO_ALARM +{ + NET_VCA_BLOCKLIST_INFO struBlockListInfo; //ֹϢ + DWORD dwBlockListPicLen; //ֹͼijȣΪ0ʾûͼƬ0ʾͼƬ + DWORD dwFDIDLen;// ID + BYTE *pFDID; //Idָ + DWORD dwPIDLen;// ͼƬID + BYTE *pPID; //ͼƬIDָ + WORD wThresholdValue; //ֵ[0,100] + BYTE byIsNoSaveFDPicture;//0-ͼƬ,1-ͼƬ, ˵ͼƬ߽ģʱԭͼʱ,ֶη1,ʱͼƬٷ + BYTE byRealTimeContrast;//Ƿʵʱ 0-ʵʱ 1-ʵʱ + BYTE *pBuffer1; //ֹͼͼƬ +}NET_VCA_BLOCKLIST_INFO_ALARM, *LPNET_VCA_BLOCKLIST_INFO_ALARM; + +typedef struct tagNET_VCA_FACESNAP_MATCH_ALARM +{ + DWORD dwSize; // ṹС + float fSimilarity; //ƶȣ[0.001,1] + NET_VCA_FACESNAP_INFO_ALARM struSnapInfo; //ץϢ + NET_VCA_BLOCKLIST_INFO_ALARM struBlockListInfo; //ֹϢ + char sStorageIP[16]; //洢IPַ + WORD wStoragePort; //洢˿ں + BYTE byMatchPicNum; //ƥͼƬ0-豸ֵĬ0豸ֵΪ0ʱʾûƥͼƬϢ + BYTE byPicTransType;//ͼƬݴ䷽ʽ: 0-ƣ1-url + DWORD dwSnapPicLen;//豸ʶץͼƬ + BYTE *pSnapPicBuffer;//豸ʶץͼƬָ + NET_VCA_RECT struRegion;//Ŀ߽豸ʶץͼƬУͼ + DWORD dwModelDataLen;//ģݳ + BYTE *pModelDataBuffer;// ģָ + BYTE byModelingStatus;// ģ״̬ + BYTE byLivenessDetectionStatus;//״̬0-1-δ֪ʧܣ2-3-4-δ + char cTimeDifferenceH; /*UTCʱСʱ-12 ... +14 +ʾ,0xffЧ*/ + char cTimeDifferenceM; /*UTCʱӣ-30, 30, 45 +ʾ0xffЧ*/ + BYTE byMask; //ץͼǷ֣0-1-δ֪2-֣3- + BYTE bySmile; //ץͼǷ΢Ц0-1-δ֪2-΢Ц3-΢Ц + BYTE byContrastStatus; //ȶԽ0-1-ȶԳɹ2-ȶʧ + BYTE byBrokenNetHttp; //־λ0-شݣ1-ش +}NET_VCA_FACESNAP_MATCH_ALARM, *LPNET_VCA_FACESNAP_MATCH_ALARM; + +typedef struct tagNET_VCA_BLOCKLIST_INFO_ALARM_LOG +{ + NET_VCA_BLOCKLIST_INFO struBlockListInfo; //ֹϢ + DWORD dwBlockListPicID; //ֹͼIDڲͼƬ + BYTE byRes[20]; // ֽ +}NET_VCA_BLOCKLIST_INFO_ALARM_LOG, *LPNET_VCA_BLOCKLIST_INFO_ALARM_LOG; + +typedef struct tagNET_VCA_FACESNAP_INFO_ALARM_LOG +{ + DWORD dwRelativeTime; // ʱ + DWORD dwAbsTime; // ʱ + DWORD dwSnapFacePicID; //ץͼID + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + BYTE byRes[20]; // ֽ +}NET_VCA_FACESNAP_INFO_ALARM_LOG, *LPNET_VCA_FACESNAP_INFO_ALARM_LOG; + +typedef struct tagNET_VCA_FACESNAP_MATCH_ALARM_LOG +{ + DWORD dwSize; // ṹС + float fSimilarity; //ƶȣ[0.001,1] + NET_VCA_FACESNAP_INFO_ALARM_LOG struSnapInfoLog; //ץϢ + NET_VCA_BLOCKLIST_INFO_ALARM_LOG struBlockListInfoLog; //ֹϢ + BYTE byRes[60]; // ֽ +}NET_VCA_FACESNAP_MATCH_ALARM_LOG, *LPNET_VCA_FACESNAP_MATCH_ALARM_LOG; + +typedef struct tagNET_VCA_FACEMATCH_PICCOND +{ + DWORD dwSize; // ṹС + DWORD dwSnapFaceID; //ץͼID + DWORD dwBlockListID; //ƥĽֹID + DWORD dwBlockListFaceID; //ȶԵĽֹͼID + BYTE byRes[20]; // ֽ +}NET_VCA_FACEMATCH_PICCOND, *LPNET_VCA_FACEMATCH_PICCOND; + +typedef struct tagNET_VCA_FACEMATCH_PICTURE +{ + DWORD dwSize; // ṹС + DWORD dwSnapFaceLen; //ץͼ + DWORD dwBlockListFaceLen; //ȶԵĽֹͼ + BYTE byRes[20]; //ֽ + BYTE *pSnapFace; //ץͼͼƬ + BYTE *pBlockListFace; //ȶԵĽֹͼ +}NET_VCA_FACEMATCH_PICTURE, *LPNET_VCA_FACEMATCH_PICTURE; + +typedef struct tagNET_VCA_BLOCKLIST_FASTREGISTER_PARA +{ + DWORD dwSize; //ṹС + NET_VCA_BLOCKLIST_INFO struBlockListInfo; //ֹ + DWORD dwImageLen; //ͼݳ + BYTE byRes[124]; // + BYTE *pImage; //ͼ +}NET_VCA_BLOCKLIST_FASTREGISTER_PARA, *LPNET_VCA_BLOCKLIST_FASTREGISTER_PARA; + +/*******PJ01C20170209084¼NVSܿĿר******/ +//֡ͳƽϴ +typedef struct tagNET_DVR_FRAMES_PEOPLE_COUNTING +{ + DWORD dwSize; // ṹС + NET_VCA_DEV_INFO struDevInfo;//ǰ豸Ϣ + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; // ʱ + DWORD dwPeopleCountingNum; //еͳ + DWORD dwPicLen; //豸ʶץĵȫͼƬݳ + BYTE *pPicBuffer; //豸ʶץĵȫͼƬָ + BYTE byRes[512]; // ֽ +}NET_DVR_FRAMES_PEOPLE_COUNTING, *LPNET_DVR_FRAMES_PEOPLE_COUNTING; +/*******PJ01C20170209084¼NVSܿĿר******/ + +// +typedef struct tagNET_VCA_SINGLE_PATH +{ + BYTE byActive; // Ƿ,0-,1- + BYTE byType; //0-洢ץģ1-洢ֹȶԱ2-洢ץĺͽֹȶԱ0xff-Ч + BYTE bySaveAlarmPic; //ǷڱıͼƬ0-1- + BYTE byRes1[5]; // + DWORD dwDiskDriver; //̷ţ0ʼ + DWORD dwLeftSpace; //ԤλΪG + BYTE byRes2[8]; // +}NET_VCA_SINGLE_PATH, *LPNET_VCA_SINGLE_PATH; + +//洢· +typedef struct tagNET_VCA_SAVE_PATH_CFG +{ + DWORD dwSize; //ṹС + NET_VCA_SINGLE_PATH struPathInfo[MAX_DISKNUM_V30]; // + BYTE byRes[40]; // +}NET_VCA_SAVE_PATH_CFG, *LPNET_VCA_SAVE_PATH_CFG; + +typedef struct tagNET_DVR_DEV_ACCESS_CFG +{ + DWORD dwSize; + NET_DVR_IPADDR struIP; //豸IPַ + WORD wDevicePort; //˿ں + BYTE byEnable; //Ƿã0-1- + BYTE byRes1; // + BYTE sUserName[NAME_LEN]; //豸ĵ¼ʺ + BYTE sPassword[PASSWD_LEN]; //豸ĵ¼ + BYTE byRes2[60]; +}NET_DVR_DEV_ACCESS_CFG,*LPNET_DVR_DEV_ACCESS_CFG; + +/********************************ʶ end****************************/ +//ֱ +#define MAKE_RESOLUTION(_interlace_, _width_, _height_, _fps_) \ + (((_interlace_)<<28) \ + |((((_width_)>>3)&0x1ff)<<19)| \ + ((((_height_)>>1)&0x7ff)<<8)| \ +((_fps_)&0xff)) +#define GET_RES_INTERLACE(_res_) \ +(((_res_)>>28)&0x1) +#define GET_RES_WIDTH(_res_) \ +((((_res_)>>19)&0x1ff)<<3) +#define GET_RES_HEIGHT(_res_) \ +((((_res_)>>8)&0x7ff)<<1) +#define GET_RES_FPS(_res_) \ +((_res_)&0xff) + +#define NOT_AVALIABLE MAKE_RESOLUTION (0,0,0,0) +#define SVGA_60HZ MAKE_RESOLUTION(0, 800, 600, 60) +#define SVGA_75HZ MAKE_RESOLUTION(0, 800, 600, 75) +#define XGA_60HZ MAKE_RESOLUTION(0, 1024, 768, 60) +#define XGA_75HZ MAKE_RESOLUTION(0, 1024, 768, 75) +#define SXGA_60HZ MAKE_RESOLUTION(0, 1280, 1024, 60) +#define SXGA2_60HZ MAKE_RESOLUTION(0, 1280, 960, 60) +#define _720P_24HZ MAKE_RESOLUTION(0, 1280, 720, 24) +#define _720P_25HZ MAKE_RESOLUTION(0, 1280, 720, 25) +#define _720P_30HZ MAKE_RESOLUTION(0, 1280, 720, 30) +#define _720P_60HZ MAKE_RESOLUTION(0, 1280, 720, 60) +#define _720P_50HZ MAKE_RESOLUTION(0, 1280, 720, 50) +#define _1080I_60HZ MAKE_RESOLUTION(1, 1920, 1080, 60) +#define _1080I_50HZ MAKE_RESOLUTION(1, 1920, 1080, 50) +#define _1080P_60HZ MAKE_RESOLUTION(0, 1920, 1080, 60) +#define _1080P_50HZ MAKE_RESOLUTION(0, 1920, 1080, 50) +#define _1080P_30HZ MAKE_RESOLUTION(0, 1920, 1080, 30) +#define _1080P_25HZ MAKE_RESOLUTION(0, 1920, 1080, 25) +#define _1080P_24HZ MAKE_RESOLUTION(0, 1920, 1080, 24) +#define UXGA_60HZ MAKE_RESOLUTION(0, 1600, 1200, 60) +#define UXGA_30HZ MAKE_RESOLUTION(0, 1600, 1200, 30) +#define WSXGA_60HZ MAKE_RESOLUTION(0, 1680, 1050, 60) +#define WUXGA_60HZ MAKE_RESOLUTION(0, 1920, 1200, 60) +#define WUXGA_30HZ MAKE_RESOLUTION(0, 1920, 1200, 30) +#define WXGA_60HZ MAKE_RESOLUTION(0, 1360, 768, 60) +#define SXGA_PLUS_60HZ MAKE_RESOLUTION(0, 1400, 1050, 60) +#define VGA_MODE_3840x2160_30HZ MAKE_RESOLUTION(0, 3840, 2160, 30) +#define VGA_MODE_3840x2160_60HZ MAKE_RESOLUTION(0, 3840, 2160, 60) + + + +//ʾָͨģʽ +#define MAX_WINDOWS_NUM 12 //ָģʽ +#define MAX_SUPPORT_RES 32 +#define MAX_DISPNUM_V41 32 +#define MAX_SDI_RES 16 //SDIʾֱַ֧ͨ + +typedef struct tagNET_DVR_DISPWINDOWMODE +{ + BYTE byDispChanType;//ʾͨͣ0-BNC, 1-VGA, 2-HDMI, 3-DVI 4-SDI + BYTE byDispChanSeq;//ʾͨ,1ʼVGAʾڼVGA + BYTE byRes[2]; + BYTE byDispMode[MAX_WINDOWS_NUM/*12*/]; +}NET_DVR_DISPWINDOWMODE, *LPNET_DVR_DISPWINDOWMODE; + +typedef struct tagNET_DVR_DISPINFO +{ + BYTE byChanNums;//ͨ + BYTE byStartChan;//ʼͨ + BYTE byRes[2]; + DWORD dwSupportResolution[MAX_SUPPORT_RES/*32*/];//ֱַ֧ +}NET_DVR_DISPINFO, *LPNET_DVR_DISPINFO; + +//ƴϢ +typedef struct tagNET_DVR_SCREENINFO +{ + BYTE bySupportBigScreenNums;//ƴ + BYTE byStartBigScreenNum;//ƴʼ + BYTE byMaxScreenX;//ƴģʽ + BYTE byMaxScreenY; + BYTE byRes[8]; +}NET_DVR_SCREENINFO, *LPNET_DVR_SCREENINFO; + +typedef struct tagNET_DVR_SDI_INFO +{ + BYTE byChanNums;//ͨ + BYTE byStartChan;//ʼͨ + BYTE byRes[2]; + DWORD dwSupportResolution[MAX_SDI_RES/*16*/];//ֱַ֧ +}NET_DVR_SDI_INFO,*LPNET_DVR_SDI_INFO; + +typedef struct tagNET_DVR_MATRIX_ABILITY_V41 +{ + DWORD dwSize; + BYTE byDspNums;//DSP + BYTE byDecChanNums;//ͨ + BYTE byStartChan;//ʼͨ + BYTE byRes1[5]; + NET_DVR_DISPINFO struVgaInfo;//VGAʾͨϢ + NET_DVR_DISPINFO struBncInfo;//BNCʾͨϢ + NET_DVR_DISPINFO struHdmiInfo;//HDMIʾͨϢ + NET_DVR_DISPINFO struDviInfo;//DVIʾͨϢ + NET_DVR_DISPWINDOWMODE struDispMode[MAX_DISPNUM_V41/*32*/]; + NET_DVR_SCREENINFO struBigScreenInfo; + BYTE bySupportAutoReboot; //Ƿ֧Զ0-֧֣1-֧ + BYTE byRes2[3]; + NET_DVR_SDI_INFO struSDIInfo;//SDIʾͨϢ + BYTE byRes3[48]; +} NET_DVR_MATRIX_ABILITY_V41, *LPNET_DVR_MATRIX_ABILITY_V41; + +//ʾͨ +#define MAX_WINDOWS 16 +#define MAX_WINDOWS_V41 36 + +#define STARTDISPCHAN_VGA 1 +#define STARTDISPCHAN_BNC 9 +#define STARTDISPCHAN_HDMI 25 +#define STARTDISPCHAN_DVI 29 + +typedef union tagNET_DVR_VIDEO_PLATFORM +{ + BYTE byRes[160]; + struct + { + /*ӴڶӦͨӦĽϵͳIJλ(Ƶۺƽ̨нϵͳЧ)*/ + //ۺƽ̨֧ԶԴ˲Ҫ + BYTE byJoinDecoderId[MAX_WINDOWS_V41]; + //ʾƵֱʣ1-D1,2-720P,3-1080P豸Ҫݴ˷ֱʽнͨķ䣬1ó1080P豸4ͨ˽ͨ + BYTE byDecResolution[MAX_WINDOWS_V41]; + NET_DVR_RECTCFG struPosition; //ʾͨڵǽλ + BYTE byRes[80]; + }struVideoPlatform; + struct + { + BYTE byRes[160]; + }struNotVideoPlatform; +}NET_DVR_VIDEO_PLATFORM, LPNET_DVR_VIDEO_PLATFORM; + + +typedef struct tagNET_DVR_MATRIX_VOUTCFG +{ + DWORD dwSize; + BYTE byAudio; /*ƵǷ*/ + BYTE byAudioWindowIdx; /*ƵӴ*/ + BYTE byDispChanType; /*ʾͨͣ0-BNC1-VGA2-HDMI3-DVI4-YPbPr(뿨DECODER_SERVERר)*/ + BYTE byVedioFormat; /*1:NTSC,2:PAL0-NULL*/ + DWORD dwResolution;//ֱ + DWORD dwWindowMode; /*ģʽȡ*/ + BYTE byJoinDecChan[MAX_WINDOWS_V41];/*ӴڹĽͨ,豸ֽ֧ԴԶʱ˲*/ + BYTE byEnlargeStatus; /*ǷڷŴ״̬0Ŵ1Ŵ*/ + BYTE byEnlargeSubWindowIndex;//ŴӴں + BYTE byScale; /*ʾģʽ0---ʵʾ1---ʾ( BNC )*/ + BYTE byUnionType;/*ֹ,0-Ƶۺƽ̨ڲʾͨã1-ʾͨ*/ + NET_DVR_VIDEO_PLATFORM struDiff; + DWORD dwDispChanNum; //ʾţ˲ȫȡʱЧ + WORD wLEDWidth; //LEDֱʿ0ΪЧ + WORD wLEDHeight; //LEDֱʸߣ0ΪЧ + BYTE byEnableVideoEffect; //ʾЧʹܣ 0-ʹܣ !0-ʹ + BYTE byRes[3]; //ֶ + NET_DVR_VIDEOEFFECT struVideoEffect; //ʾЧ + BYTE byRes2[60]; +}NET_DVR_MATRIX_VOUTCFG,*LPNET_DVR_MATRIX_VOUTCFG; + +/*豸״̬*/ +typedef struct tagNET_DVR_DISP_CHAN_STATUS_V41 +{ + BYTE byDispStatus; /*ʾ״̬0δʾ1ʾ*/ + BYTE byBVGA; /*0-BNC1-VGA 2-HDMI3-DVI4-SDI 0xff-Ч*/ + BYTE byVideoFormat; /*Ƶʽ1:NTSC,2:PAL,0-NON*/ + BYTE byWindowMode; /*ģʽ*/ + BYTE byJoinDecChan[MAX_WINDOWS_V41]; /*ӻĽͨ*/ + BYTE byFpsDisp[MAX_WINDOWS_V41]; /*ÿӻʾ֡*/ + BYTE byScreenMode; /*Ļģʽ0-ͨ 1-*/ + BYTE byRes1[3]; + DWORD dwDispChan; /*ȡȫʾͨ״̬ʱЧʱ0*/ + BYTE byRes2[24]; +}NET_DVR_DISP_CHAN_STATUS_V41, *LPNET_DVR_DISP_CHAN_STATUS_V41; + +/*豸״̬*/ +typedef struct tagNET_DVR_DECODER_WORK_STATUS_V41 +{ + DWORD dwSize; + NET_DVR_MATRIX_CHAN_STATUS struDecChanStatus[32]; /*ͨ״̬*/ + /*ʾͨ״̬*/ + NET_DVR_DISP_CHAN_STATUS_V41 struDispChanStatus[MAX_DISPNUM_V41/*32*/]; + BYTE byAlarmInStatus[32]; /*״̬*/ + BYTE byAlarmOutStatus[32]; /*״̬*/ + BYTE byAudioInChanStatus; /*Խ״̬*/ + BYTE byRes[127]; +}NET_DVR_DECODER_WORK_STATUS_V41,*LPNET_DVR_DECODER_WORK_STATUS_V41; +/*******************************ļط-Զ̻ط*******************************/ +typedef struct tagNET_DVR_MATRIX_DEC_REMOTE_PLAY_V41 +{ + DWORD dwSize; + NET_DVR_IPADDR struIP; /* DVR IPַ */ + WORD wDVRPort; /* ˿ں */ + BYTE byChannel; /* ͨ */ + BYTE byReserve; + BYTE sUserName[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + DWORD dwPlayMode; /* 0ļ 1ʱ*/ + NET_DVR_TIME StartTime; + NET_DVR_TIME StopTime; + char sFileName[128]; + BYTE byRes[64]; /**/ +}NET_DVR_MATRIX_DEC_REMOTE_PLAY_V41, *LPNET_DVR_MATRIX_DEC_REMOTE_PLAY_V41; + + +#define MAX_BIGSCREENNUM_SCENE 100 +#define MAX_LAYERNUMS 32 + +//ʾͨýṹ +typedef struct tagNET_DVR_RECTCFG_SCENE +{ + WORD wXCoordinate; /*ϽʼX*/ + WORD wYCoordinate; /*ϽY*/ + WORD wWidth; /*ο*/ + WORD wHeight; /*θ߶*/ +}NET_DVR_RECTCFG_SCENE, *LPNET_DVR_RECTCFGSCENE; + +typedef struct tagNET_DVR_SCENEDISPCFG +{ + BYTE byEnable;//Ƿã0-ã1- + BYTE bySoltNum;//λ + BYTE byRes1[2]; + BYTE byDispChanNum; + BYTE byAudio; /*ƵǷ,0-1-*/ + BYTE byAudioWindowIdx; /*ƵӴ*/ + BYTE byVedioFormat; /*1:NTSC,2:PAL0-NULL*/ + BYTE byWindowMode; /*ģʽȡ*/ + BYTE byEnlargeStatus; /*ǷڷŴ״̬0Ŵ1Ŵ*/ + BYTE byEnlargeSubWindowIndex;//ŴӴں + BYTE byScale; /*ʾģʽ0-ʵʾ1-ʾ( BNC )*/ + DWORD dwResolution;//ֱ + BYTE byJoinDecChan[MAX_WINDOWS_V41];/*ӴڹĽͨ*/ + BYTE byJoinDecoderId[MAX_WINDOWS_V41];/*λ*/ + //ʾƵֱʣ1-D1,2-720P,3-1080P豸Ҫݴ//ֱʽнͨķ䣬1ó1080P豸4ͨ˽ͨ + BYTE byDecResolution[MAX_WINDOWS_V41]; + BYTE byRow;//ڵе + BYTE byColumn;//ڵе + BYTE byRes2[5]; + NET_DVR_RECTCFG struDisp; //ǽʾλ +} NET_DVR_SCENEDISPCFG,*LPNET_DVR_SCENEDISPCFG; + +typedef struct tagDEV_CHAN_INFO_SCENE +{ + NET_DVR_IPADDR struIP; /* DVR IPַ */ + WORD wDVRPort; /* ˿ں */ + BYTE byChannel; /* ͨţ9000豸IPC룬ͨŴ33ʼ */ + BYTE byTransProtocol; /* Э0-TCP1-UDP 2-MCAST3-RTP*/ + BYTE byTransMode; /* ģʽ 0 1*/ + BYTE byFactoryType; /*ǰ豸*/ + BYTE byDeviceType; //豸ͣ1-IPC2- ENCODER + BYTE byRes[5]; + BYTE sUserName[NAME_LEN]; /* ½ʺ */ + BYTE sPassword[PASSWD_LEN]; /* */ +} NET_DVR_DEV_CHAN_INFO_SCENE,*LPNET_DVR_DEV_CHAN_INFO_SCENE; + +/*ý*/ +typedef struct tagSTREAM_MEDIA_SERVER_CFG_SCENE +{ + BYTE byValid; /*Ƿýȡ,0ʾЧ*/ + BYTE byRes1[3]; + NET_DVR_IPADDR struDevIP; /*ýַ*/ + WORD wDevPort; /*ý˿*/ + BYTE byTransmitType; /*Э0-TCP1-UDP */ + BYTE byRes2[5]; +}NET_DVR_STREAM_MEDIA_SERVER_CFG_SCENE,*LPNET_DVR_STREAM_MEDIA_SERVER_CFG_SCENE; + +typedef struct tagPU_STREAM_CFG_SCENE +{ + NET_DVR_STREAM_MEDIA_SERVER_CFG_SCENE streamMediaServerCfg; + NET_DVR_DEV_CHAN_INFO_SCENE struDevChanInfo; +}NET_DVR_PU_STREAM_CFG_SCENE,*LPNET_DVR_PU_STREAM_CFG_SCENE; + +typedef struct tagNET_DVR_CYC_SUR_CHAN_ELE_SCENE +{ + BYTE byEnable; /* Ƿ 0 1*/ + BYTE byRes[3]; + NET_DVR_STREAM_MEDIA_SERVER_CFG_SCENE struStreamMediaSvrCfg; + NET_DVR_DEV_CHAN_INFO_SCENE struDecChanInfo; /*ѲͨϢ*/ +}NET_DVR_CYC_SUR_CHAN_ELE_SCENE,*LPNET_DVR_CYC_SUR_CHAN_ELE_SCENE; + +//Ѳṹ +typedef struct tagNET_DVR_MATRIX_LOOP_DECINFO_SCENE +{ + WORD wPoolTime; /*ѯ*/ + BYTE byRes1[2]; + NET_DVR_CYC_SUR_CHAN_ELE_SCENE struChanArray[MAX_CYCLE_CHAN/*16*/]; + BYTE byRes2[4]; +} NET_DVR_MATRIX_LOOP_DECINFO_SCENE,*LPNET_DVR_MATRIX_LOOP_DECINFO_SCENE; + +//ͨýṹ +typedef struct tagNET_DVR_DECODECHANCFG_SCENE/*struct size : 2064*/ +{ + BYTE byDecodeEnable;//ͣ־0-ֹͣ1-ö̬룬2-Ѳ + BYTE bySlotNum;//λ + BYTE byDecChan; + BYTE byJointAllDecodeChan; //Ƿͨ 0-1- + BYTE byJointSlotNum; //IJλţIJλţ + BYTE byJointChanNum; //ͨţͨţ + BYTE byRes[2]; + union + { + NET_DVR_PU_STREAM_CFG_SCENE struSceneDynamicDecCfg; + NET_DVR_MATRIX_LOOP_DECINFO_SCENE struSceneCycDecCfg; + } struDecCfg; +}NET_DVR_DECODECHANCFG_SCENE,*LPNET_DVR_DECODECHANCFG_SCENE; + +typedef struct tagNET_DVR_BIGSCREENCFG_SCENE +{ + BYTE byAllValid; /*ʹܱ־ */ + BYTE byAssociateBaseMap;//ĵͼţ0 + BYTE byEnableSpartan;//ʹܣ1-0- + BYTE byRes; + NET_DVR_WINCFG struWinCfg[MAX_LAYERNUMS]; + NET_DVR_BIGSCREENCFG struBigScreen; +}NET_DVR_BIGSCREENCFG_SCENE, *LPNET_DVR_BIGSCREENCFG_SCENE; + +typedef struct tagNET_DVR_MATRIX_SCENECFG +{ + DWORD dwSize; + BYTE sSceneName[NAME_LEN]; + BYTE byBigScreenNums;//ĸֵͨȡ + BYTE byRes1[3]; + WORD wDecChanNums;//нͨĸ + WORD wDispChanNums;//ʾͨĸ + BYTE byRes2[12]; + BYTE *pBigScreenBuffer;//û, byBigScreenNumssizeof(NET_DVR_BIGSCREENCFG_SCENE) + BYTE *pDecChanBuffer;//ͨû, wDecChanNumssizeof(NET_DVR_DECODECHANCFG_SCENE) + BYTE *pDispChanBuffer;//ʾͨû, wDispChanNumssizeof(NET_DVR_SCENEDISPCFG) +}NET_DVR_MATRIX_SCENECFG, *LPNET_DVR_MATRIX_SCENECFG; + + + +typedef struct tagNET_DVR_BIGSCREENASSOCIATECFG +{ + DWORD dwSize; + BYTE byEnableBaseMap;//ʹܵͼʾ + BYTE byAssociateBaseMap;//ĵͼţ0 + BYTE byEnableSpartan;//ʹܣ1-0- + BYTE byRes[21]; +} NET_DVR_BIGSCREENASSOCIATECFG, *LPNET_DVR_BIGSCREENASSOCIATECFG; +/**************************************************************/ +#define MAX_WIN_COUNT 224 //ֵ֧󿪴 + +typedef struct tagNET_DVR_SCREEN_WINCFG +{ + DWORD dwSize; + BYTE byVaild; + BYTE byInputType; //CAM_MDOE + WORD wInputIdx; /*Դ*/ + DWORD dwLayerIdx; /*ͼ㣬0Ϊײ*/ + NET_DVR_RECTCFG struWin; //ĿĴ(ʾǽ) + BYTE byWndIndex; //ں + BYTE byCBD; //0-ޣ1-2- + BYTE bySubWnd; //0ǣ1 + BYTE byRes1; + DWORD dwDeviceIndex;//豸 + BYTE byRes2[16]; +}NET_DVR_SCREEN_WINCFG, *LPNET_DVR_SCREEN_WINCFG; + +typedef struct tagNET_DVR_WINLIST +{ + DWORD dwSize; + WORD wScreenSeq; //豸 + BYTE byRes[10]; + DWORD dwWinNum; //豸صĴ + BYTE *pBuffer; //ϢΪ224*sizeof(NET_DVR_WINCFG) + DWORD dwBufLen; //ָ볤 +}NET_DVR_WINLIST,*LPNET_DVR_WINLIST; + +#define MAX_LAYOUT_COUNT 16 //󲼾 +typedef struct tagNET_DVR_LAYOUTCFG +{ + DWORD dwSize; + BYTE byValid; //ǷЧ + BYTE byRes1[3]; + BYTE byLayoutName[NAME_LEN/*32*/]; // + NET_DVR_SCREEN_WINCFG struWinCfg[MAX_WIN_COUNT/*224*/]; //ڴڲ + BYTE byRes2[16]; +}NET_DVR_LAYOUTCFG, *LPNET_DVR_LAYOUTCFG; + +typedef struct tagNET_DVR_LAYOUT_LIST +{ + DWORD dwSize; + NET_DVR_LAYOUTCFG struLayoutInfo[MAX_LAYOUT_COUNT/*16*/]; //в + BYTE byRes[4]; +}NET_DVR_LAYOUT_LIST, *LPNET_DVR_LAYOUT_LIST; + +#define MAX_CAM_COUNT 224 +#define MAX_CAM_COUNT_V50 512 + +typedef enum tagNET_DVR_CAM_MODE +{ + NET_DVR_UNKNOW = 0,//Ч + NET_DVR_CAM_BNC, + NET_DVR_CAM_VGA, + NET_DVR_CAM_DVI, + NET_DVR_CAM_HDMI, + NET_DVR_CAM_IP, + NET_DVR_CAM_RGB, + NET_DVR_CAM_DECODER, + NET_DVR_CAM_MATRIX, + NET_DVR_CAM_YPBPR, + NET_DVR_CAM_USB, + NET_DVR_CAM_SDI, + NET_DVR_CAM_HDI, + NET_DVR_CAM_DP, //Ƶۺƽ̨ + NET_DVR_CAM_HDTVI, + NET_DVR_CAM_JOINT, //ƴźԴ + NET_DVR_CAM_HDBASET, + NET_DVR_CAM_DVIT, //DVI˫·Ƶۺƽ̨ + NET_DVR_CAM_FUSION, //IPCƴ + NET_DVR_CAM_VSCREEN, // + NET_DVR_CAM_FIBER, // + NET_DVR_CAM_3GSDI, //3G-SDI + NET_DVR_CAM_DISTRIBUTED_IP, //ֲʽԴ + NET_DVR_CAM_JONIT_X86,// x86ƴϵͳƴͨ + NET_DVR_CAM_TVI, //TVIźԴ +}NET_DVR_CAM_MODE; + +typedef struct tagNET_DVR_INPUTSTREAMCFG +{ + DWORD dwSize ; + BYTE byValid; + BYTE byCamMode; //źԴͣNET_DVR_CAM_MODE + WORD wInputNo; //źԴ0-224 + BYTE sCamName[NAME_LEN] ; //źԴ + NET_DVR_VIDEOEFFECT struVideoEffect; //Ƶ + NET_DVR_PU_STREAM_CFG struPuStream; //ipʱʹ + WORD wBoardNum ; //źԴڵİ忨 + WORD wInputIdxOnBoard; //źԴڰ忨ϵλ + DWORD dwResolution;//ֱ + BYTE byVideoFormat;//ƵʽVIDEO_STANDARD + BYTE byStatus; //źԴ״̬0-ֶЧ 1-ź 2-ź 3-쳣 + BYTE sGroupName[NAME_LEN/*32*/]; //źԴ + BYTE byJointMatrix; // 0- 1- + BYTE byRes; +}NET_DVR_INPUTSTREAMCFG, *LPNET_DVR_INPUTSTREAMCFG; + +typedef struct tagNET_DVR_INPUTSTREAM_LIST +{ + DWORD dwSize; + NET_DVR_INPUTSTREAMCFG struInputStreamInfo[MAX_CAM_COUNT]; //źԴ + BYTE byRes[4]; +}NET_DVR_INPUTSTREAM_LIST, *LPNET_DVR_INPUTSTREAM_LIST; + +/**************************************************************/ +/*ͨ*/ +typedef struct tagNET_DVR_OUTPUTPARAM +{ + DWORD dwSize; + BYTE byMonMode; /*ģʽ,1-BNC,2-VGA,3-DVI,4-HDMI*/ + BYTE byRes1[3]; + DWORD dwResolution; /*ֱʣȡֵ֧Ľ*/ + NET_DVR_VIDEOEFFECT struVideoEffect; /*ͨƵ*/ + BYTE byRes2[32]; +}NET_DVR_OUTPUTPARAM, *LPNET_DVR_OUTPUTPARAM; + +typedef struct tagNET_DVR_OUTPUTCFG +{ + DWORD dwSize; + BYTE byScreenLayX; //- + BYTE byScreenLayY; //- + WORD wOutputChanNum; //ͨ0ʾ豸ֵ֧ͨȡֵʾʵͨ + BYTE byRes1[4]; + NET_DVR_OUTPUTPARAM struOutputParam; /*ͨƵ*/ + BYTE sWallName[16]; //ǽ + BYTE byRes2[8]; +}NET_DVR_OUTPUTCFG, *LPNET_DVR_OUTPUTCFG; + +/**************************************************************/ +#define SCREEN_PROTOCOL_NUM 20 //ֵ֧Э +// +typedef struct tagNET_DVR_SCREENSERVER_ABILITY +{ + DWORD dwSize; /*ṹ*/ + BYTE byIsSupportScreenNum; /*ִ֧Ŀ*/ + BYTE bySerialNums; //ڸ + BYTE byMaxInputNums; + BYTE byMaxLayoutNums; + BYTE byMaxWinNums; + BYTE byRes1[19]; + BYTE byMaxScreenLayX;//- + BYTE byMaxScreenLayY;//- + WORD wMatrixProtoNum; /*ЧĴЭĿ*/ + NET_DVR_PROTO_TYPE struScreenProto[SCREEN_PROTOCOL_NUM];/*Эб*/ + BYTE byRes2[24]; +}NET_DVR_SCREENSERVER_ABILITY, *LPNET_DVR_SCREENSERVER_ABILITY; + +// +typedef struct tagNET_DVR_SCREENCONTROL_ABILITY +{ + DWORD dwSize; /*ṹ*/ + BYTE byLayoutNum; /* ָ*/ + BYTE byWinNum; /*Ļڸ*/ + BYTE byOsdNum; /*OSD*/ + BYTE byLogoNum; /*Logo*/ + BYTE byInputStreamNum; //Դ ---豸֧ͨԴԴ + BYTE byOutputChanNum; //ͨ---豸֧ͨ + BYTE byCamGroupNum; /**/ + BYTE byPlanNum; /*Ԥ*/ + BYTE byRes1[5]; + BYTE byIsSupportPlayBack; /*Ƿֻ֧ط*/ + BYTE byMatrixInputNum; //֧ + BYTE byMatrixOutputNum; //֧ + NET_DVR_DISPINFO struVgaInfo;//VGAϢ + NET_DVR_DISPINFO struBncInfo;//BNCϢ + NET_DVR_DISPINFO struHdmiInfo;//HDMIϢ + NET_DVR_DISPINFO struDviInfo;//DVIϢ + BYTE byMaxUserNums;//֧û + BYTE byPicSpan; //ͼȣһŵͼɸǵĻ + WORD wDVCSDevNum; //ֲʽ豸 + WORD wNetSignalNum; //Դ + WORD wBaseCoordinateX;//׼ + WORD wBaseCoordinateY; + BYTE byExternalMatrixNum; //Ӿ + BYTE byRes2[49]; +}NET_DVR_SCREENCONTROL_ABILITY, *LPNET_DVR_SCREENCONTROL_ABILITY; + +/*******************************ź״̬*******************************/ +typedef struct tagNET_DVR_ANALOGINPUTSTATUS +{ + DWORD dwLostFrame; /*Ƶ붪֡*/ + BYTE byHaveSignal; /*ǷƵź*/ + BYTE byVideoFormat; /*Ƶʽ1NTSC,2PAL,0*/ + BYTE byRes[46]; +} NET_DVR_ANALOGINPUTSTATUS, *LPNET_DVR_ANALOGINPUTSTATUS; + +typedef union tagNET_DVR_INPUTSTATUS_UNION +{ + NET_DVR_MATRIX_CHAN_STATUS struIpInputStatus; + NET_DVR_ANALOGINPUTSTATUS struAnalogInputStatus; +} NET_DVR_INPUTSTATUS_UNION, *LPNET_DVR_INPUTSTATUS_UNION; + +typedef struct tagNET_DVR_INPUTSTATUS +{ + WORD wInputNo; /*źԴ*/ + BYTE byInputType; //NET_DVR_CAM_MODE + BYTE byRes1[9]; + NET_DVR_INPUTSTATUS_UNION struStatusUnion; + BYTE byRes2[16]; +} NET_DVR_INPUTSTATUS, *LPNET_DVR_INPUTSTATUS; + +typedef struct tagNET_DVR_SCREENINPUTSTATUS +{ + DWORD dwSize; + BYTE byRes[12]; + DWORD dwNums; //豸صԴ״̬ + BYTE *pBuffer; // + DWORD dwBufLen; //ָ볤ȣ +}NET_DVR_SCREENINPUTSTATUS,*LPNET_DVR_SCREENINPUTSTATUS; + +typedef struct tagNET_DVR_SCREENALARMCFG +{ + DWORD dwSize; + BYTE byAlarmType; //ͣ1-Ӱγ2-Ӱ룬3-ϵͳ״̬쳣4-ϵͳָָ 5-Դ쳣 6-¶ȱ 7-FPGA汾ƥ 8-Ԥʼ 9-Ԥ 10- 11-IPַͻ12-쳣 + BYTE byBoardType; // 1- 2- 3-壬4-壬Ϊ1236ʱʹ + BYTE bySubException; //쳣ʱ쳣 1- ֱı 2-˿͸ı3-ֱʴ4-ֱʸı䵼½Դ㣬رոԴӦڡ5-ֱʸı䣬ѿű1/88Χ6-ֱʻָ,7-ֱʸı䵼,豸رմ + BYTE byRes1; + WORD wStartInputNum; // 쳣Դ쳣㣩 + WORD wEndInputNum; // 쳣Դ쳣յ㣩 + BYTE byRes2[16]; +}NET_DVR_SCREENALARMCFG, *LPNET_DVR_SCREENALARMCFG; + +typedef struct tagNET_DVR_MATRIX_CFG +{ + BYTE byValid; //жǷģǷЧ + BYTE byCommandProtocol; //ģָ4֣ + BYTE byScreenType; // + BYTE byRes1; + BYTE byScreenToMatrix[32]; //ģĻĶӦϵ + BYTE byRes2[4]; +}NET_DVR_MATRIX_CFG, *LPNET_DVR_MATRIX_CFG; + +typedef struct tagNET_DVR_DIGITALSCREEN +{ + NET_DVR_IPADDR struAddress;/*豸Ϊ豸ʱIPϢ*/ + WORD wPort; //ͨ + BYTE byRes[26]; // +}NET_DVR_DIGITALSCREEN, *LPNET_DVR_DIGITALSCREEN; +typedef struct tagNET_DVR_ANALOGSCREEN +{ + BYTE byDevSerPortNum; /*豸Ĵں*/ + BYTE byScreenSerPort; /*ӴĴں*/ + BYTE byRes[130]; + NET_DVR_MATRIX_CFG struMatrixCfg; +}NET_DVR_ANALOGSCREEN, *LPNET_DVR_ANALOGSCREEN; + +typedef union tagNET_DVR_SCREEN_UNION +{ + NET_DVR_DIGITALSCREEN struDigitalScreen; + NET_DVR_ANALOGSCREEN struAnalogScreen; +}NET_DVR_SCREEN_UNION, *LPNET_DVR_SCREEN_UNION; +typedef struct tagNET_DVR_SCREEN_SCREENINFO +{ + DWORD dwSize; + BYTE byValid; //ǷЧ + BYTE nLinkMode; //ӷʽ0-ڣ1- + BYTE byDeviceType; //豸ͺţȡ + BYTE byScreenLayX; //- + BYTE byScreenLayY; //- + BYTE byRes1[3]; + BYTE sUserName[NAME_LEN]; /*¼û*/ + BYTE sPassword[PASSWD_LEN]; /*¼*/ + BYTE sDevName[NAME_LEN]; /*豸*/ + NET_DVR_SCREEN_UNION struScreenUnion; + BYTE byInputNum; // Դ + BYTE byOutputNum; // Դ + BYTE byCBDNum; //CBD + BYTE byRes2[29]; +} NET_DVR_SCREEN_SCREENINFO, *LPNET_DVR_SCREEN_SCREENINFO; + +/*******************************ͼϴ*******************************/ +typedef struct tagNET_DVR_BASEMAP_CFG +{ + BYTE byScreenIndex; //Ļ + BYTE byMapNum; /*ָ˶ٿ */ + BYTE res[2]; + WORD wSourWidth; /* ԭͼƬĿ */ + WORD wSourHeight; /* ԭͼƬĸ߶ */ +}NET_DVR_BASEMAP_CFG, LPNET_DVR_BASEMAP_CFG; + + +typedef struct tagNET_DVR_PICCFG +{ + DWORD dwSize; //С + BYTE byUseType; //1-ͼ2-GIFͼƬ3-CADͼƬ 4-ͼƬ + BYTE bySequence;// + BYTE byOverlayEnabled; //ͼƬʹܣǷϴͼƬͼƬӲ 1-Ӳ0- + BYTE byRes[1]; + NET_DVR_BASEMAP_CFG struBasemapCfg; //ͼԺ豸Ч + BYTE sPicName[NAME_LEN];//ͼƬ + DWORD dwVideoWall; //ǽţ1ֽǽţں̶ֵΪ1ɣ+1ֽͨͨţ+2ֽڴںţ + BYTE byFlash; //ͼƬ˸ʹܣ1-˸0-˸ + BYTE byTranslucent; //ͼƬ͸ʹܣ1-͸0-͸ + BYTE byShowEnabled; //ͼƬʾʹܣ1-ʾ0- + BYTE byPictureType; //ͼƬͣ1-bmp2-jpg3-png + BYTE byRes2[24]; +}NET_DVR_PICTURECFG, *LPNET_DVR_PICTURECFG; + +/*******************************OSD*******************************/ +#define MAX_OSDCHAR_NUM 256 +typedef struct tagNET_DVR_OSDCFG +{ + DWORD dwSize; + BYTE byValid; /*ǷЧ 0Ч 1Ч*/ + BYTE byDispMode; //ʾģʽ1-͸2-͸3-ģʽ + BYTE byFontColorY; /*ɫY,0-255*/ + BYTE byFontColorU; /*ɫU,0-255*/ + BYTE byFontColorV; /*ɫV,0-255*/ + BYTE byBackColorY; /*ɫY,0-255*/ + BYTE byBackColorU; /*ɫU,0-255*/ + BYTE byBackColorV; /*ɫV,0-255*/ + WORD wXCoordinate; /*OSDĻϽλx*/ + WORD wYCoordinate; /*OSDĻϽλy*/ + WORD wWidth; /*OSD*/ + WORD wHeight; /*OSD߶*/ + DWORD dwCharCnt; /*ַĸ*/ + WORD wOSDChar[MAX_OSDCHAR_NUM]; /*OSDַ*/ + BYTE byRes[32]; +}NET_DVR_OSDCFG, *LPNET_DVR_OSDCFG; + + +/*******************************ȡϢ*******************************/ +typedef struct tagNET_DVR_SERIAL_CONTROL +{ + DWORD dwSize ; + BYTE bySerialNum; // ڸ + BYTE byRes1[3]; + BYTE bySerial[32]; + BYTE byRes2[32]; +}NET_DVR_SERIAL_CONTROL, *LPNET_DVR_SERIAL_CONTROL; + +/*******************************Ļ*******************************/ +//ĻԴ +typedef enum tagINPUT_INTERFACE_TYPE +{ + INTERFACE_VGA = 0, + INTERFACE_SVIDEO, // 2046NL֧֣2046NH֧ + INTERFACE_YPBPR, + INTERFACE_DVI , + INTERFACE_BNC , + INTERFACE_DVI_LOOP,//(ͨ) 2046NH֧֣2046NL֧ + INTERFACE_BNC_LOOP, //(ͨ) 2046NH֧֣2046NL.֧ + INTERFACE_HDMI, + INTERFACE_IP, + INTERFACE_USB, + INTERFACE_SDI, + INTERFACE_DP, + INTERFACE_HDBASET +}INPUT_INTERFACE_TYPE; +typedef struct tagNET_DVR_INPUT_INTERFACE_CTRL +{ + BYTE byInputSourceType; //INPUT_INTERFACE_TYPE + BYTE byRes[15]; +}NET_DVR_INPUT_INTERFACE_CTRL, *LPNET_DVR_INPUT_INTERFACE_CTRL; +//ʾԪɫ +typedef struct tagNET_DVR_DISPLAY_COLOR_CTRL +{ + BYTE byColorType; //1- 2-Աȶ 3-Ͷ 4- + char byScale; //-1 0+1ֵ + BYTE byRes[14]; +}NET_DVR_DISPLAY_COLOR_CTRL, *LPNET_DVR_DISPLAY_COLOR_CTRL; +//ʾԪλÿ +typedef struct tagNET_DVR_DISPLAY_POSITION_CTRL +{ + BYTE byPositionType; //1-ˮƽλ 2-ֱλã + char byScale; //-1 0+1ֵ + BYTE byRes[14]; +}NET_DVR_DISPLAY_POSITION_CTRL, *LPNET_DVR_DISPLAY_POSITION_CTRL; + + +/*******************************ĻV41*******************************/ +typedef struct tagNET_DVR_RECTCFG_EX +{ + DWORD dwXCoordinate; /*ϽʼX*/ + DWORD dwYCoordinate; /*ϽY*/ + DWORD dwWidth; /*ο*/ + DWORD dwHeight; /*θ߶*/ + BYTE byRes[4]; +}NET_DVR_RECTCFG_EX, *LPNET_DVR_RECTCFG_EX; + +/*******************************Ԥ*******************************/ +#define MAX_PLAN_ACTION_NUM 32 //Ԥ +#define DAYS_A_WEEK 7 //һ7 +#define MAX_PLAN_COUNT 16 //Ԥ + + +typedef enum +{ + NET_DVR_SWITCH_LAYOUT = 1, // л Ĭ + NET_DVR_SCREEN_POWER_OFF, // رմĻʾ + NET_DVR_SCREEN_POWER_ON, // 򿪴Ļʾ + NET_DVR_SWITCH_BASEMAP //ͼл +}NET_DVR_PLAN_OPERATE_TYPE; + +/*ԤϢ*/ +typedef struct tagNET_DVR_PLAN_INFO +{ + BYTE byValid; // ǷЧ + BYTE byType; // NET_DVR_PLAN_OPERATE_TYPE + WORD wLayoutNo; // ֺ + BYTE byScreenStyle; //Ļͺţػã1ǵ2Ǹ + BYTE byBaseMapType; //ͼͣ1-ͼƬͼ2-ͼͼлʱЧ + BYTE byRes1[2]; + DWORD dwDelayTime; // һʱ, λ + DWORD dwSerialNo; //ںţĻʱʹ + DWORD dwBaseMapWndNo; //ͼںţͼлʱЧ + DWORD dwBaseMapNo; //ͼţͼлʱЧͼΪ1ʱ˲ΪͼƬţͼΪ2ʱ˲Ϊϵͳţ1ֽ豸+1ֽӰ+2ֽʾţ + BYTE byRes2[20]; +} NET_DVR_PLAN_INFO, *LPNET_DVR_PLAN_INFO; + +typedef struct tagNET_DVR_CYCLE_TIME +{ + BYTE byValid; + BYTE byRes[3]; + NET_DVR_TIME_EX struTime; +}NET_DVR_CYCLE_TIME, *LPNET_DVR_CYCLE_TIME; +/*Ԥ*/ +typedef struct tagNET_DVR_PLAN_CFG +{ + DWORD dwSize; + BYTE byValid; // ԤǷЧ + BYTE byWorkMode; // Ԥģʽ 1ʾֶ2Զ3Ԥѭ + BYTE byWallNo; //ǽţ1ʼ + BYTE byPlanNo; //ԤţȡԤбʱЧ0-Ч֧ + BYTE byPlanName[NAME_LEN/*32*/]; //Ԥ + NET_DVR_TIME_EX struTime; // ģʽΪԶʱʹ + NET_DVR_CYCLE_TIME struTimeCycle[DAYS_A_WEEK/*7*/]; /*ѭʱ䣬Ϊһڣꡢ¡ʹá磺struTimeCycle[0]еbyValidֵ1ʾִиԤȡֵΪ[0,6]0죬1һԴ*/ + DWORD dwWorkCount; // Ԥִд + NET_DVR_PLAN_INFO strPlanEntry[MAX_PLAN_ACTION_NUM/*32*/]; // Ԥִе + DWORD dwPlanNo; //4ֽԤţͻͳһʹ4ֽڵԤţֽڵԤŲʹ + BYTE byRes2[60]; +}NET_DVR_PLAN_CFG, *LPNET_DVR_PLAN_CFG; + + +/*******************************ȡ豸״̬*******************************/ +/*Ԥб*/ +typedef struct tagNET_DVR_PLAN_LIST +{ + DWORD dwSize; + DWORD dwPlanNums; //豸źԴ + BYTE *pBuffer; //ָdwInputSignalNumsNET_DVR_PLAN_CFGṹСĻ + BYTE byWallNo; //ǽţ1ʼ + BYTE byRes1[2]; + DWORD dwBufLen; //仺ȣڵdwInputSignalNumsNET_DVR_PLAN_CFGṹС + BYTE byRes2[64]; +} NET_DVR_PLAN_LIST,*LPNET_DVR_PLAN_LIST; + + +/*******************************Ԥ*******************************/ +//ýṹΪͨÿƽṹ +typedef struct tagNET_DVR_CONTROL_PARAM +{ + DWORD dwSize; + BYTE sDeviceID[NAME_LEN]; //豸豸ID + WORD wChan; //ͨ + BYTE byIndex; //ȷʾʲô + BYTE byRes1; + DWORD dwControlParam; + BYTE byMandatoryAlarm; //1-ʹ 0-ʹ + BYTE byRes2; + WORD wZoneIndex; // + BYTE byOperatorCode[16]; //ؿ + DWORD dwPlanNo; //4ֽԤţͻͳһʹ4ֽڵԤţֽڵԤŲʹ + BYTE byRes3[8]; +}NET_DVR_CONTROL_PARAM, *LPNET_DVR_CONTROL_PARAM; + +/*******************************ȡ豸״̬*******************************/ +typedef struct tagNET_DVR_DEVICE_RUN_STATUS +{ + DWORD dwSize; + DWORD dwMemoryTotal; //ڴλKbyte + DWORD dwMemoryUsage; //ڴʹλKbyte + BYTE byCPUUsage; //CPUʹʣ0-100 + BYTE byMainFrameTemp; //¶ȣλ϶ + BYTE byBackPanelTemp; //¶ȣλ϶ + BYTE byRes1; + BYTE byLeftDecResource[32]; //ʣԴԽD1ֱԴΪλbyLeftDecResource[i],ʾλiʣԴ0xffʾЧǽûӣ + float fNetworkFlow; //λKB/sһСλ + BYTE byRes2[88]; +}NET_DVR_DEVICE_RUN_STATUS, *LPNET_DVR_DEVICE_RUN_STATUS; + +// 91ϵHD-SDIDVR Ϣ +typedef struct tagNET_DVR_ACCESS_CAMERA_INFO +{ + DWORD dwSize; + char sCameraInfo[32]; // ǰϢ + BYTE byInterfaceType; // ǰ˽ӿͣ1:VGA, 2:HDMI, 3:YPbPr 4:SDI 5:FC + BYTE byRes1[3]; + DWORD dwChannel; + BYTE byRes[24]; +}NET_DVR_ACCESS_CAMERA_INFO, *LPNET_DVR_ACCESS_CAMERA_INFO; + +typedef struct tagNET_DVR_AUDIO_INPUT_PARAM +{ + BYTE byAudioInputType; //Ƶͣ0-mic in1-line in + BYTE byVolume; //volume,[0-100] + BYTE byEnableNoiseFilter; //Ƿ-أ- + BYTE byres[5]; +}NET_DVR_AUDIO_INPUT_PARAM, *LPNET_DVR_AUDIO_INPUT_PARAM; + +typedef struct tagNET_DVR_CAMERA_DEHAZE_CFG +{ + DWORD dwSize; + BYTE byDehazeMode; //0-ã1-Զģʽ2- + BYTE byLevel; //ȼ0-100 + BYTE byRes[6]; +}NET_DVR_CAMERA_DEHAZE_CFG, *LPNET_DVR_CAMERA_DEHAZE_CFG; + +typedef struct tagNET_DVR_INPUT_SIGNAL_LIST +{ + DWORD dwSize; + DWORD dwInputSignalNums; //豸źԴ + BYTE *pBuffer; //ָdwInputSignalNumsNET_DVR_INPUTSTREAMCFGṹСĻ + BYTE byRes1[3]; + DWORD dwBufLen; //仺ȣڵdwInputSignalNumsNET_DVR_INPUTSTREAMCFGṹС + BYTE byRes2[64]; +} NET_DVR_INPUT_SIGNAL_LIST,*LPNET_DVR_INPUT_SIGNAL_LIST; + +// ȫ״̬ +#define PULL_DISK_SUCCESS 1 // ȫ̳ɹ +#define PULL_DISK_FAIL 2 // ȫʧ +#define PULL_DISK_PROCESSING 3 // ֹͣ +#define PULL_DISK_NO_ARRAY 4 // в +#define PULL_DISK_NOT_SUPPORT 5 // ְ֧ȫ + +// ɨ״̬ +#define SCAN_RAID_SUC 1 // ɨгɹ +#define SCAN_RAID_FAIL 2 // ɨʧ +#define SCAN_RAID_PROCESSING 3 // ɨ +#define SCAN_RAID_NOT_SUPPORT 4 // ֧ɨ + +// ǰ״̬ +#define SET_CAMERA_TYPE_SUCCESS 1 // ɹ +#define SET_CAMERA_TYPE_FAIL 2 // ʧ +#define SET_CAMERA_TYPE_PROCESSING 3 // ڴ + +//9000 2.2 +typedef struct tagNET_DVR_RECORD_TIME_SPAN_INQUIRY +{ + DWORD dwSize; //ṹС + BYTE byType; //0 Ƶ¼, 1ͼƬͨ¼, 2ANRͨ¼, 3֡ͨ¼ + BYTE byRes[63]; // +}NET_DVR_RECORD_TIME_SPAN_INQUIRY, *LPNET_DVR_RECORD_TIME_SPAN_INQUIRY; + +typedef struct tagNET_DVR_RECORD_TIME_SPAN +{ + DWORD dwSize; //ṹС + NET_DVR_TIME strBeginTime; //ʼʱ + NET_DVR_TIME strEndTime; //ʱ + BYTE byType; //0 Ƶ¼, 1ͼƬͨ¼, 2ANRͨ¼, 3֡ͨ¼ + BYTE byRes[35]; // +}NET_DVR_RECORD_TIME_SPAN, *LPNET_DVR_RECORD_TIME_SPAN; + +typedef struct tagNET_DVR_DRAWFRAME_DISK_QUOTA_CFG +{ + DWORD dwSize; //ṹС + BYTE byPicQuota; //ͼƬٷֱ [0%, 30%] + BYTE byRecordQuota; //ͨ¼ٷֱ [20%, 40%] + BYTE byDrawFrameRecordQuota; //֡¼ٷֱ [30%, 80%] + BYTE byRes[61]; //ֽ +}NET_DVR_DRAWFRAME_DISK_QUOTA_CFG, *LPNET_DVR_DRAWFRAME_DISK_QUOTA_CFG; + +typedef struct tagNET_DVR_NAT_PORT +{ + WORD wEnable; //ö˿Ƿʹӳ + WORD wExtPort; //ӳⲿ˿ں + BYTE byRes[12]; // +}NET_DVR_NAT_PORT, *LPNET_DVR_NAT_PORT; + +typedef struct tagNET_DVR_NAT_CFG +{ + DWORD dwSize; //ṹС + WORD wEnableUpnp; //UPNPǷ + WORD wEnableNat; //UPNP˿ӳ䣨NATǷ(wEnableUpnpһ) + NET_DVR_IPADDR struIpAddr; //NAT·LAN IPַ + NET_DVR_NAT_PORT struHttpPort; //web server http˿ӳ + NET_DVR_NAT_PORT struCmdPort; //˿ӳ(8000) + NET_DVR_NAT_PORT struRtspPort; //rtsp˿ӳ + BYTE byFriendName[64]; // + BYTE byNatType; //UPNP˿ӳͣ0-ֶ1-Զ + BYTE byRes1[3]; // + NET_DVR_NAT_PORT struHttpsPort; //https˿ӳ + NET_DVR_NAT_PORT struSDKOverTLSPort; //SDKOverTLS˿ӳ + NET_DVR_NAT_PORT struRtspsPort; //Rtsps˿ӳ + BYTE byres[44]; // +}NET_DVR_NAT_CFG, *LPNET_DVR_NAT_CFG; + +typedef struct +{ + DWORD dwEnabled; //ö˿Ƿʹӳ + WORD wInternalPort; //ӳǰĶ˿ + WORD wExternalPort; //ӳĶ˿ + DWORD dwStatus; /*˿ӳ״̬ + 0 δЧ + 1 δЧӳԴ˿ĿĶ˿һ + 2 δЧ: ӳ˿ںѱʹ + 3 Ч + */ + NET_DVR_IPADDR struNatExternalIp; //ӳⲿַ + NET_DVR_IPADDR struNatInternalIp; //NAT·LAN IPַ + BYTE byRes[16]; // +}NET_DVR_UPNP_PORT_STATE, *LPNET_DVR_UPNP_PORT_STATE; + + +typedef struct +{ + NET_DVR_UPNP_PORT_STATE strUpnpPort[UPNP_PORT_NUM]; //˿ӳ״̬,0 web server˿ 1 ˿ 2 rtsp˿ + BYTE byRes[200]; // +}NET_DVR_UPNP_NAT_STATE, *LPNET_DVR_UPNP_NAT_STATE; + +typedef struct tagNET_DVR_PLAYCOND +{ + DWORD dwChannel; + NET_DVR_TIME struStartTime; + NET_DVR_TIME struStopTime; + BYTE byDrawFrame; //0:֡1֡ + BYTE byStreamType ; //ͣ0- 1- 2- + BYTE byStreamID[STREAM_ID_LEN]; + BYTE byCourseFile; //γļ0-1- + BYTE byDownload; //Ƿ 0-1- + BYTE byOptimalStreamType; //Ƿͻط 0-1-ǣ˫豸ijһʱڵ¼ļָͲͬ򷵻ʵ͵¼ + BYTE byVODFileType; // ¼ļļʽ 0-PSʽ1-3GPʽ + BYTE byRes[26]; // +}NET_DVR_PLAYCOND, *LPNET_DVR_PLAYCOND; + +typedef struct tagNET_DVR_ATMFINDINFO +{ + BYTE byTransactionType; // 0-ȫ1-ѯ 2-ȡ 3- 4-޸룬5-תˣ 6-޿ѯ 7-޿ 8-̳ 9-̿ 10-Զ + BYTE byRes[3] ; // + DWORD dwTransationAmount ; //׽ ; +} NET_DVR_ATMFINDINFO, *LPNET_DVR_ATMFINDINFO ; + +typedef union tagNET_DVR_SPECIAL_FINDINFO_UNION +{ + BYTE byLenth[8] ; + NET_DVR_ATMFINDINFO struATMFindInfo; //ATMѯ +}NET_DVR_SPECIAL_FINDINFO_UNION, *LPNET_DVR_SPECIAL_FINDINFO_UNION; + + +typedef struct tagNET_DVR_FILECOND_V40 +{ + LONG lChannel; + DWORD dwFileType;/*¼ļ0xff-ȫ0-ʱ¼1-ƶ⣬2-3-ƶ⣬4-ƶ⣬5-6-ֶ¼ + 7-¼10-PIR11-߱12-ȱ13-ȫ¼14-ܽͨ¼15-Խ⣬16-֣17-쳣18-⣬19-⣨Խ|||쳣|⣩ + 20-⣬ 21-ź22-ش23-Ǩ¼24-ڵ25-pos¼26-, 27-뿪,28-ǻ,29-Աۼ,30-˶,31-ͣ,32-Ʒ,33-Ʒȡ, + 34-⣬35-ƻ⣬36-ֻ⣬37-Ԥ,38-±,39-ܶŹ40-⣬41-˯⣬42-²43-߲±,44-45-,46-ҵѯ,47-,48-ʸ,49-޳ʱ50-ܼ⣬51-⣬52-ץ, 53-Ƿ̯, 54-Ŀʶ, + 55-˶56-ڼ⣬57-58-仯59-Υͣ, 60-,61-ѹ,62-ռ,63-,64-ͷ,65-˼,66-·,67-,68-Ũ,69-ʩ,70-ӵ,71-ͨ¹ʼ, 72-෽ͣ73-ֶ,74-ͨΥ£75-ɳⱨ 76-ŷʾ77-Ҷȱ,78-, + 79-,80-ͨʱ¼¼,81-AIƽ̨¼,82-¼,83-ϹӼ,84-豸Դ״̬ϱ +*/ + DWORD dwIsLocked; + DWORD dwUseCardNo;//ǷATMϢвѯ0-ATMϢ1-׿Ųѯ2-Ͳѯ3-׽ѯ4-šͼ׽ϲѯ 5-γƲңʱűʾγ + BYTE sCardNumber[CARDNUM_LEN_OUT]; + NET_DVR_TIME struStartTime; + NET_DVR_TIME struStopTime; + BYTE byDrawFrame; //0:֡1֡ + BYTE byFindType; //0:ѯͨ1ѯ浵 + BYTE byQuickSearch; //0:ͨѯ1٣ѯ + BYTE bySpecialFindInfoType ; //רвѯ 0-Ч 1-ATMѯ + DWORD dwVolumeNum; //浵 + BYTE byWorkingDeviceGUID[GUID_LEN]; //GUIDͨȡN+1õ + NET_DVR_SPECIAL_FINDINFO_UNION uSpecialFindInfo ; //רвѯ + BYTE byStreamType; //0-ͬһʱֻһ¼ȼ˳Ϊ1-2-3-254-˫(ȷ¼û¼ʱ¼) + BYTE byAudioFile; //Ƶļ 0-Ƶļ1-Ƶļ + BYTE byRes2[30]; // +}NET_DVR_FILECOND_V40, *LPNET_DVR_FILECOND_V40; + +//¼ļṹV50 +typedef struct tagNET_DVR_FILECOND_V50 +{ + NET_DVR_STREAM_INFO struStreamID; //IDͨ + NET_DVR_TIME_SEARCH_COND struStartTime; //ʼʱ + NET_DVR_TIME_SEARCH_COND struStopTime; //ʱ + BYTE byFindType; //0-ѯͨ1-ѯ浵 2-ѯN+1¼ļ + BYTE byDrawFrame; //Ƿ֡ 0-֡ 1-֡ + BYTE byQuickSearch; //0-ͨѯ1-٣ѯ + BYTE byStreamType; //0-1-2-30xff-ȫ + DWORD dwFileType; // ļ + DWORD dwVolumeNum; //浵ţbyFindTypeΪ1ʱЧ + BYTE byIsLocked; //Ƿ 0-ļ,1-ļ, 0xffʾļ + BYTE byNeedCard; //ǷҪѯ0-Ҫ 1-Ҫ + BYTE byOnlyAudioFile; //Ƶļ 0-Ƶļ 1-Ƶļ + BYTE bySpecialFindInfoType; //0-Ч 1-ATMѯ + char szCardNum[32]; //ţbyNeedCardΪ1ʱЧ + char szWorkingDeviceGUID[16]; //GUIDͨȡN+1õbyFindTypeΪ2ʱЧ + NET_DVR_SPECIAL_FINDINFO_UNION uSpecialFindInfo; //רвѯ + DWORD dwTimeout; //ҳʱʱ䣨ָNET_DVR_FindNextFile_V30/NET_DVR_FindNextFile_V40/NET_DVR_FindNextFile_V50ӿڵijʱʱ䷵أλ룬дĬΪ0ʱӿΪǰһ ;Чֵ0, [5000 C 15000] + BYTE byRes[252]; +}NET_DVR_FILECOND_V50, *LPNET_DVR_FILECOND_V50; + +typedef struct +{ + BYTE sAESKey[16]; /*Կ*/ + BYTE byRes[64]; /*ֽ*/ +}NET_DVR_AES_KEY_INFO, *LPNET_DVR_AES_KEY_INFO; + +typedef struct +{ + NET_DVR_IPADDR struIP; //IPַ + BYTE byRes[128]; // +}NET_DVR_POE_CFG, *LPNET_DVR_POE_CFG; + +#define MAX_PRO_PATH 256 //Э· + +typedef struct +{ + DWORD dwSize; //ṹС + DWORD dwEnabled; //ǷøЭ0 1 + char sProtocalName[DESC_LEN]; //ԶЭ, 16λ + BYTE byRes1[64]; //,Эչ + DWORD dwEnableSubStream; //Ƿ0 1 + + BYTE byMainProType; //Э 1 RTSP + BYTE byMainTransType; // 0Auto 1udp 2rtp over rtsp + WORD wMainPort; //˿ + char sMainPath[MAX_PRO_PATH]; //· + + BYTE bySubProType; //Э 1 RTSP + BYTE bySubTransType; // 0Auto 1udp 2rtp over rtsp + WORD wSubPort; //˿ + char sSubPath[MAX_PRO_PATH]; //· + + BYTE byRes2[200]; // +}NET_DVR_CUSTOM_PROTOCAL, *LPNET_DVR_CUSTOM_PROTOCAL; + + +//B10֧PSIA豸 +//ѭǽṹ壨ʵʱ +typedef struct +{ + DWORD dwEnable; /* Ƿ 0 1*/ + BYTE byType; //豸 0: DEV_SDK 1:DEV_DAHUA 2:DEV_EHOME 3:DEV_OTHERES + BYTE byRes[3]; // + NET_DVR_STREAM_MEDIA_SERVER_CFG streamMediaServerCfg; + NET_DVR_DEV_CHAN_INFO struDevChanInfo; /* ѭͨϢ */ + BYTE sRtspUrl[128];//ַ +}NET_DVR_MATRIX_CHAN_INFO_EX,*LPNET_DVR_MATRIX_CHAN_INFO_EX; + +typedef struct +{ + DWORD dwSize; + DWORD dwPoolTime; /*ѯ*/ + NET_DVR_MATRIX_CHAN_INFO_EX struchanConInfo[MAX_CYCLE_CHAN_V30]; + BYTE byRes[16]; +}NET_DVR_MATRIX_LOOP_DECINFO_EX,*LPNET_DVR_MATRIX_LOOP_DECINFO_EX; + +//ʵʱԤǽṹ +typedef struct +{ + DWORD dwSize; + BYTE byType; //豸 0: DEV_SDK 1:DEV_DAHUA 2:DEV_EHOME 3:DEV_OTHERES + BYTE byRes[3]; // + NET_DVR_STREAM_MEDIA_SERVER_CFG struStreamMediaSvrCfg; + NET_DVR_DEV_CHAN_INFO struDevChanInfo; + BYTE sRtspUrl[128];//ַ +}NET_DVR_PU_STREAM_CFG_EX,*LPNET_DVR_PU_STREAM_CFG_EX; + +typedef struct tagNET_DVR_MATRIX_TRUNKCFG +{ + DWORD dwGlobalIndex; // + DWORD dwInterIndex; //ȫֱ + BYTE sTrunkName[NAME_LEN]; + BYTE byType; //豸1-bnc, 2-SP3, 3-V6 + BYTE byDir; //߷ 1-2- + BYTE byAbility; //D1 + BYTE bySubsys; //ϵͳID + BYTE byChan; //ͨID + BYTE byRes[255]; //Ԥ +} NET_DVR_MATRIX_TRUNKCFG,*LPNET_DVR_MATRIX_TRUNKCFG; + +typedef struct tagNET_DVR_DECSUBSYSTEMJIONSTATUS_V41 +{ + BYTE byJoinStatus;//״̬0-ûй1-ѾֶͨжϱԼϵͳ2-ռãbyDecodeAbility1ʱЧ3-4- + BYTE byJoinSubSystem;// ռõϵͳλ + BYTE byJoinDispNum;// ռõʾͨ + BYTE byJoinSubWindowNum;// ռõӴں + BYTE byDecodeAbility; //ͨĵǰ0-δ1-D12-7203-1080 + BYTE byRes[15]; +}NET_DVR_DECSUBSYSTEMJIONSTATUS_V41,LPNET_DVR_DECSUBSYSTEMJIONSTATUS_V41; + +typedef struct tagNET_DVR_SINGLESUBSYSTEMJOININFO_V41 +{ + /*ϵͳͣ1-ϵͳ2-ϵͳ3-ϵͳ4-ϵͳ5-ϵͳ6-ϵͳ7-ϵͳ8-V6ϵͳ9-V6ϵͳ0-NULL˲ֻܻȡ*/ + BYTE bySubSystemType; + BYTE byConnectStatus;//ϵͳ״̬1-2-ӶϿ + BYTE byMatrixNum;//Ƶۺƽ̨ţϵͳ34ʱ + BYTE bySubSystemNum;//ϵͳλţϵͳ34ʱ + NET_DVR_DECSUBSYSTEMJIONSTATUS_V41 struSubSystem[MAX_DECODECHANNUM]; + BYTE byBindStatus;//״̬0-ûа󶨣1-Ѿ󶨣ƴʱõ + BYTE bySlotNum ;//λţ˲ֻܻȡ + BYTE byUsedTrunk;//Ƿ񱻸ʹã0-δʹã1-ʹ + BYTE byRes[65]; +}NET_DVR_SINGLESUBSYSTEMJOININFO_V41,LPNET_DVR_SINGLESUBSYSTEMJOININFO_V41; + +typedef struct tagNET_DVR_ALLDECSUBSYSTEMJOININFO_V41 +{ + DWORD dwSize; + NET_DVR_SINGLESUBSYSTEMJOININFO_V41 struSingleSubSystemJoinInfo[MAX_SUBSYSTEM_NUM_V40]; + BYTE byRes[48]; +}NET_DVR_ALLDECSUBSYSTEMJOININFO_V41,*LPNET_DVR_ALLDECSUBSYSTEMJOININFO_V41; + +//////////ϵͳ///////////// +#define MAX_ALARMHOSTKEYBOARD 64 //籨 +typedef struct tagNET_DVR_PUBLIC_SUB_SYSTEM +{ + //ϵͳţλʾbit0ʾùϵͳϵͳ1. + DWORD dwJointSubSystem; + BYTE byRes[16]; +}NET_DVR_PUBLIC_SUB_SYSTEM, *LPNET_DVR_PUBLIC_SUB_SYSTEM; + +typedef struct tagNET_DVR_NOAMAL_SUB_SYSTEM +{ + //ʾЩϵͳλʾbit0 ʾϵͳ.ϵͳ1 + DWORD dwBeJoinedSubSystem; + BYTE byRes[16]; +}NET_DVR_NOAMAL_SUB_SYSTEM, *LPNET_DVR_NOAMAL_SUB_SYSTEM; + +typedef union tagNET_DVR_JOINT_SUB_SYSTEM +{ + // byPublicAttributeEnableΪ0ʱʹøñ + NET_DVR_NOAMAL_SUB_SYSTEM struNormalSubSystem; + //byPublicAttributeEnableΪ1ʱʹøñ + NET_DVR_PUBLIC_SUB_SYSTEM struPublicSubSystem; + BYTE byRes[20]; +}NET_DVR_JOINT_SUB_SYSTEM,*LPNET_DVR_JOINT_SUB_SYSTEM; + +#define MAX_SUBSYSTEM_ID_LEN 16 //ϵͳID󳤶 + +//////////GPRS///////////// +#define ACCOUNTNUM_LEN 6 +#define ACCOUNTNUM_LEN_32 32 +#define ACCOUNTNUM_LEN_V40 9 +#define APN_NAME_LEN 32 +#define APN_USERNAME_LEN 24 +#define APN_USERPASSWORD_LEN 16 + +typedef struct tagNET_DVR_ALARMSUBSYSTEMPARAM +{ + DWORD dwSize; + WORD wEnterDelay; //ʱ,λ:, Χ10-150 бʱʱ NET_DVR_ALARMIN_PARAM еdwParamʱʱ + //÷ʽͨеbySupportAlarmInDelayֶ + WORD wExitDelay;//˳ʱ,λ:룬 Χ10-300 + BYTE byHostageReport; //Юֱ棬0 1ʹ + BYTE bySubsystemEnable; //ϵͳʹ + BYTE byKeyToneOfArmOrDisarm; // ɹͲǷʾ0-̲ʾ 1-ʾ + BYTE byKeyToneOfManualTestReport; //ɹͲԱǷʾ0-̲ʾ 1-ʾ + WORD wDelayTime; //ʱdwSupport1еbit0λΪ1ʱʹøòþʱ䡣bit0Ϊ0ʱʹNET_DVR_SIREN_PARAMеwDelayþʱ + BYTE byEnableAlarmInDelay;//0--(ʹϵͳʱ),1--(ʹ÷ʱ)Ĭϲ + BYTE byPublicAttributeEnable; //ǷΪϵͳ + NET_DVR_JOINT_SUB_SYSTEM struJointSubSystem; + BYTE byKeyZoneArm; //Ƿ֧Կ׷ϵͳв + BYTE byKeyZoneArmReport; //Ƿ֧Կ׷ϵͳʱͲ + BYTE byKeyZoneDisarm; //Ƿ֧Կ׷ϵͳг + BYTE byKeyZoneDisarmReport; //Ƿ֧Կ׷ϵͳгʱͳ + BYTE bySubSystemID[MAX_SUBSYSTEM_ID_LEN]; //ϵͳID + BYTE byKeyZoneArmReportEnable; //Կ׷ϴʹ 0- 1-ʹ + BYTE byKeyZoneArmEnable; //Կ׷ʹܣ 0 - 1-ʹ + BYTE byOneKeySetupAlarmEnable; //һʹ + BYTE bySingleZoneSetupAlarmEnable; //ʹ + BYTE byCenterType; //0-Ч, 1-˺(6),2-չ˺(9) + BYTE sCenterAccount[ACCOUNTNUM_LEN/*6*/]; //ʺ + BYTE sCenterAccountV40[ACCOUNTNUM_LEN_32/*32*/]; //˺V40,ʹôֶʱsCenterAccountЧ + BYTE byRes2[565]; // ֽ +}NET_DVR_ALARMSUBSYSTEMPARAM, *LPNET_DVR_ALARMSUBSYSTEMPARAM; + +typedef struct tagNET_DVR_REMIND_TIME//8 +{ + BYTE byEnable;//Ƿñ 0-ã1- + BYTE byHour;//0~24 + BYTE byMinute;//0~60 + BYTE bySecond;//0~60 +}NET_DVR_REMIND_TIME,*LPNET_DVR_REMIND_TIME; + +//ϵͳչ +#define MAX_KEYBOARD_USER_NUM 256 +typedef struct tagNET_DVR_SUBSYSTEM_PARAM_EX +{ + DWORD dwSize; + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS/*7*/][MAX_TIMESEGMENT_V30/*8*/]; //ʱ + BYTE byAlarmInAdvance; // ǰʾʱ0~45 + BYTE byRes1[3]; + BYTE byJointAlarmIn[MAX_ALARMHOST_ALARMIN_NUM / 8];//λʾϵͳıͨţ0-룬1- + BYTE byJointKeyboard[MAX_ALARMHOSTKEYBOARD/*64*/ / 8];//λʾֵ֧ļ̺ţ0-룬1- + BYTE byJointOpetaterUser[MAX_KEYBOARD_USER_NUM/8];//λʾbit0ʾ̲û1 0- 1- + NET_DVR_REMIND_TIME struAlarmRemindTime[MAX_DAYS/*7*/][MAX_TIMESEGMENT_V30/*8*/];//MAX_TIMESEGMENT_V30ʾÿ֧8 + BYTE byJointNetUser[NET_SDK_MAX_NET_USER_NUM / 8];//ûλʾbit0ʾû10- 1- + BYTE byRes2[280]; // ֽ +}NET_DVR_SUBSYSTEM_PARAM_EX, *LPNET_DVR_SUBSYSTEM_PARAM_EX; + + +typedef struct tagNET_DVR_ALARMHOST_PRINTER_CFG +{ + DWORD dwSize; + BYTE byPrinterEnable; //Ƿôӡ + BYTE byPrintTime; //Ƿӡʱ + BYTE byFaultDetect; //Ƿӡ + BYTE byRes1; + DWORD dwAlarmInfo; //Ϣλʾbit0-bit1-ָbit2-bit-3Юֱ + DWORD dwDeviceInfo; //豸Ϣλʾbit0-ϵ硢bit1-ϵָbit2-Ƿѹbit3-Ƿѹָbit4-绰߶ߡbit5-绰߶߻ָbit6-Ա桢bit7-bit8-ָbit9-485豸ߡbit10-485豸߻ָbit11-쳣bit12-ָbit13-쳣bit14-ָbit15-չ쳣bit17-չ߻ָbit17-Ӳ̹ϡbit18-Ӳ̹ϻָbit19- + DWORD dwOperateInfo; //Ϣλʾbit0-bit1-bit2-bit3-·bit4-·ָbit5-̡bit6-˳̡bit7-λ + BYTE byRes2[256]; // ֽ +}NET_DVR_ALARMHOST_PRINTER_CFG, *LPNET_DVR_ALARMHOST_PRINTER_CFG; + +typedef struct tagNET_DVR_ALARMHOST_NETPARAM +{ + DWORD dwSize; + NET_DVR_IPADDR struIP; + WORD wPort; + BYTE byAddressType; //0 - , 1 - ipv4/ipv6ַ2 - + BYTE byRes1[1]; + BYTE byDomainName[MAX_DOMAIN_NAME/*64*/]; //GPRSáʱֶξЧ + BYTE byReportProtocol; //1-private 2-NAL2300, 3-Ehome + BYTE byDevID[ACCOUNTNUM_LEN_32/*32*/]; //ЭΪNAL2300ʱЧ + BYTE byRes2[7]; //GPRSڹ̶ķϽеģԲҪϢԤһЩֶ +}NET_DVR_ALARMHOST_NETPARAM, *LPNET_DVR_ALARMHOST_NETPARAM; + +typedef struct tagNET_DVR_REGISTER_RS485CFG +{ + DWORD dwSize; // ṹС + WORD wDeviceProtocol; // ǰ豸Э ͨȡЭбȡ + BYTE byRes[2]; + DWORD dwBaudRate; //(bps)0-501-752-1103-1504-3005-6006-12007-24008-48009-960010-1920011-3840012-5760013-7680014-115.2k + BYTE byRes1[124]; // ֽ +}NET_DVR_REGISTER_RS485CFG, *LPNET_DVR_REGISTER_RS485CFG; + +typedef struct tagNET_DVR_ALARMHOST_WIRELESS_NETWORK_CFG +{ + DWORD dwSize; + NET_DVR_ALARMHOST_NETPARAM struNetCenter[MAX_CENTERNUM]; // GPRSز + BYTE byAPNName[APN_NAME_LEN/*32*/]; + BYTE byAPNUserName[APN_USERNAME_LEN/*24*/]; + BYTE byAPNPassWord[APN_USERPASSWORD_LEN/*16*/]; + BYTE byReconnTime; //ʱ䣬ʧЧʱ䣬10Ϊλ,ȡֵΧ1-30 + BYTE byOverTime; //ʱʱ䣬OverTimeʱûյЧΧ1-254λ30 + BYTE byDetectLinkTime; // //̽·Ƿ񻹱֣Χ1-30λ10s + BYTE byRes1; + BYTE bySIMNum[NAME_LEN/*32*/]; //SIMţֻţ + NET_DVR_IPADDR struSIMIP; //½IPַֻܻȡ + BYTE byRes2[64]; +}NET_DVR_ALARMHOST_WIRELESS_NETWORK_CFG, *LPNET_DVR_ALARMHOST_WIRELESS_NETWORK_CFG; + + +/////////////////////// +typedef struct tagNET_DVR_ALARMHOST_NETCFG +{ + DWORD dwSize; + NET_DVR_ALARMHOST_NETPARAM struNetCenter[MAX_CENTERNUM]; + BYTE byRes1[32]; +}NET_DVR_ALARMHOST_NETCFG, *LPNET_DVR_ALARMHOST_NETCFG; + +//////////ľϴʽ///////////// +#define MAX_REPORTCHAN_NUM 4 +#define MAX_CENTERGROUP_NUM 16 +typedef struct tagNET_DVR_ALARMHOST_REPORTCENTER_CFG +{ + DWORD dwSize; + BYTE byValid; //Ƿ + BYTE byRes[3]; //1 + BYTE byChanAlarmMode[MAX_REPORTCHAN_NUM/*4*/]; //鱨ͨ 1-T12-T2 3-N1 4-N25-G1 6-G2 + BYTE byDealFailCenter[MAX_CENTERGROUP_NUM/*16*/]; //ָ鷢ʧܱ棬±ʾĸ飬0-ѡ1-ѡ + BYTE byDataType; //1- 2-DZ 3- + BYTE byRes2[15]; //2 +}NET_DVR_ALARMHOST_REPORTCENTER_CFG, *LPNET_DVR_ALARMHOST_REPORTCENTER_CFG; + +#define MAX_EVENT_NUM 32//籨¼ +typedef struct tagNET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40 +{ + DWORD dwSize; + BYTE byValid; //Ƿ + BYTE byDataType; //1-б 2-зDZ 3-ݣ4-棬5-Ƿ + BYTE byRes[2]; //1 + BYTE byChanAlarmMode[MAX_REPORTCHAN_NUM/*4*/]; //鱨ͨ 1-T12-T2 3-N1 4-N25-G1 6-G27-N3 8-N49-CMK-4G10-CMK-NET(豸֧3GG1G2ʾ3Gģ飬֧֣ʾGPRSģ飬һ豸3GģGPRSģֻһ) + BYTE byDealFailCenter[MAX_CENTERGROUP_NUM/*16*/]; //ָ鷢ʧܱ棬±ʾĸ飬0-ѡ1-ѡ + BYTE byZoneReport[MAX_ALARMHOST_ALARMIN_NUM]; //ͣ0-ϴ1-ϴ + BYTE byNonZoneReport[MAX_EVENT_NUM]; //Ƿ, ÿһԪرʾһ¼ͣ0-ϴ1-ϴbyNonZoneReport[0]- byNonZoneReport[1]-ϵͳ״̬ byNonZoneReport[2]-ȡ byNonZoneReport[3]-Ա byNonZoneReport[4]- byNonZoneReport[5]- byNonZoneReport[6]-Юֱ byNonZoneReport[7]-ָ byNonZoneReport[8]-· byNonZoneReport[9]-·ָ档byNonZoneReport[10]-̽״̬棨ߡߣbyNonZoneReport[11]-̽״̬棨ѹǷѹbyNonZoneReport[12]-Ƶ + BYTE byAlarmNetCard[MAX_REPORTCHAN_NUM/*4*/]; //鱨ģ0-11-22-չ1,3-չ2ͨΪN1N2N3N4ʱЧ + BYTE byRes2[252]; //2 +}NET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40, *LPNET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40; + + +//////////״̬ϴ///////////// +typedef struct tagNET_DVR_ALARMHOST_SAFETYCABINSTATE +{ + DWORD dwSize; + BYTE byEnterButton; //Űť״̬ 0- 1-ť + BYTE byExitButton; //Űť״̬ 0- 1-ť + BYTE byDoorState; //״̬ 0-Źر 1-Ŵ + BYTE byLockState; //״̬ 0- 1- + BYTE byUrgencyButton; //ť״̬ 0- 1-ť + BYTE byManState; //״̬ 0-û 1- + BYTE byAbnormal; //쳣״̬ 0- 1-쳣(ʹóʱϴ쳣) + BYTE byLightState; //ƹ״̬ 0- 1- + BYTE byFanState; //״̬ 0-أ1- + BYTE byFollow; //β״̬ 0-β棬1-β + BYTE byFighting; //״̬ 0-޴򶷣1-д + BYTE byFaint; //ε״̬ 0-ε1-ε + BYTE byManyPerson; //״̬ 0-޶˽գ1-˽ + BYTE byRes[59]; // +}NET_DVR_ALARMHOST_SAFETYCABINSTATE,*LPNET_DVR_ALARMHOST_SAFETYCABINSTATE; + +/////////ڣ״̬ϴ///////////// +typedef struct tagNET_DVR_ALARMHOST_ALARMOUTSTATUS +{ + DWORD dwSize; + BYTE byName[32]; //ƻ򾯺 + BYTE byAlarmType; //1-״̬ 2-״̬ + WORD wChan; //DZ״ֵ̬ķΧΪ0-511Ǿ״̬Χ1-8ֻ1 + BYTE byAlarmStatus; //״̬ 0-ޱ 1-б + BYTE byRes[32]; +}NET_DVR_ALARMHOST_ALARMOUTSTATUS,*LPNET_DVR_ALARMHOST_ALARMOUTSTATUS; + +//////////ϴ///////////// +typedef struct tagNET_DVR_AUDIO_PARAM +{ + DWORD dwSize; + BYTE byAudioFormat; //Ƶʽ1-G7112-G722 + BYTE byRes1; + WORD wChannels; // number of channels (i.e. mono, stereo...) + DWORD dwSamplesPerSec; // + BYTE byRes2[20]; // + DWORD dwAudioSize; //ƵȴСѹĴС +}NET_DVR_AUDIO_PARAM,*LPNET_DVR_AUDIO_PARAM; + +//ԤV40ӿ +typedef struct tagNET_DVR_PREVIEWINFO +{ + LONG lChannel;//ͨ + DWORD dwStreamType; // ͣ0-1-2-33-4, 4-5,5-6,7-7,8-8,9-9,10-10 + DWORD dwLinkMode;// 0TCPʽ,1UDPʽ,2ಥʽ,3 - RTPʽ4-RTP/RTSP,5-RSTP/HTTP ,6- HRUDPɿ䣩 ,7-RTSP/HTTPS + HWND hPlayWnd;//Ŵڵľ,ΪNULLʾͼ + DWORD bBlocked; //0-ȡ, 1-ȡ, SDKڲconnectʧܽ5sijʱܹ,ʺѯȡ. + DWORD bPassbackRecord; //0-¼ش,1¼ش + BYTE byPreviewMode;//Ԥģʽ0-Ԥ1-ӳԤ + BYTE byStreamID[STREAM_ID_LEN/*32*/];//IDlChannelΪ0xffffffffʱô˲ + BYTE byProtoType; //ӦòȡЭ飬0-˽Э飬1-RTSPЭ,2-SRTPܣӦ˽ṹdwLinkMode ֶΣ֧·ʽ, Ϊ1ʾudp䷽ʽTLSܣSRTPܣΪ2ʾಥ䷽ʽTLSܣSRTPܣ + BYTE byRes1; + BYTE byVideoCodingType; //ݱ 0-ͨñ 1-ȳ̽ԭʼݣ¶ݵļϢͨȥ㣬ԭʼʵ¶ֵ + DWORD dwDisplayBufNum; //ſⲥŻ󻺳֡Χ1-500ʱĬΪ1 + BYTE byNPQMode; //NPQֱģʽǹý 0-ֱ 1-ý + BYTE byRecvMetaData; //Ƿmetadataݣ豸Ƿָ֧ùͨGET /ISAPI/System/capabilities DeviceCap.SysCap.isSupportMetadataǷΪtrue + BYTE byDataType; //ͣ0-ݣ1-Ƶ + BYTE byRes[213]; +}NET_DVR_PREVIEWINFO, *LPNET_DVR_PREVIEWINFO; + +//ö +typedef enum _NET_DVR_LINK_KIND_ +{ + ENUM_LINK_PREVIEW = 1, //Ԥ + ENUM_LINK_PLAYBACK, //طţ + ENUM_LINK_VOICEPLAY //Խ/ת +}NET_DVR_LINK_KIND; + +//ӵַṹ壬RTSPȡʱһ˿ͨŵ +typedef struct tagNET_DVR_LINK_ADDR +{ + NET_DVR_IPADDR_UNION uLocalIP; //IPַ + WORD wLocalPort[10]; //ض˿ں + BYTE byLocalPortNum; //ض˿ + BYTE byRes1[3]; + NET_DVR_IPADDR_UNION uDevIP; //豸IPַ + WORD wDevPort[10]; //豸˿ں + BYTE byDevPortNum; //豸˿ + BYTE byRes2[3]; + BYTE byRes[80]; +}NET_DVR_LINK_ADDR, *LPNET_DVR_LINK_ADDR; + +//豸ȡ +typedef struct tagNET_DVR_PREVIEWINFO_SPECIAL +{ + char sURL[1024]; //ȡURLӦ/ISAPI/SDT/Management/Region/IDصȡURL豸صURLϷҪûڵ㣬ûϢdeviceUserdevicePasswordڵ + //ʾrtsp://admin:abcd12345@10.7.37.2:554/Streaming/Channels/101?transportmode=unicast + DWORD dwLinkMode;// 0TCPʽ,1UDPʽ,2ಥʽ,3 - RTPʽ4-RTP/RTSP,5-RSTP/HTTP + HWND hPlayWnd;//Ŵڵľ,ΪNULLʾͼ + DWORD bBlocked; //0-ȡ, 1-ȡ, SDKڲconnectʧܽ5sijʱܹ,ʺѯȡ. + DWORD dwDisplayBufNum; //ſⲥŻ󻺳֡Χ1-500ʱĬΪ1 + BYTE byRes[64]; +}NET_DVR_PREVIEWINFO_SPECIAL, *LPNET_DVR_PREVIEWINFO_SPECIAL; + + +//¼ + +typedef struct tagNET_DVR_TRIGGER_EVENT +{ + DWORD dwSize; + DWORD dwOverallEventTriggerAlarmoutOn; //ȫ¼λbit0-磬bit1-صѹͣbit2-绰ߵߣbit3-쳣bit4-쳣 ,bit5-Ӳ̹, bit6-3G/4Gź쳣, bit7-ģӣ bit8- WIFIͨŹϣbit9-RFźŸŹ + DWORD dwOverallEventTriggerAlarmoutOff; //ȫ¼λbit0-磬bit1-صѹͣbit2-绰ߵߣbit3-쳣bit4-쳣 ,bit5-Ӳ̹, bit6-3G/4Gź쳣, bit7-ģӣ bit8- WIFIͨŹϣbit9-RFźŸŹ + DWORD dwSubSystemEventTriggerAlarmoutOn[MAX_ALARMHOST_SUBSYSTEM/*32*/]; //ϵͳ¼,dwSubSystemEvent[0]ʾϵͳ1dwSubSystemEvent[2]ʾϵͳ2ϵͳȡwSubSystemÿϵͳ¼λʾbit0-ʱbit1-˳ʱbit2-bit3-bit4-bit5-,bit6-ָ,bit7-,bit8-ָ + DWORD dwSubSystemEventTriggerAlarmoutOff[MAX_ALARMHOST_SUBSYSTEM/*32*/]; //ϵͳ¼ر,wSubSystemEvent[0]ʾϵͳ1dwSubSystemEvent[2]ʾϵͳ2ϵͳȡwSubSystemÿϵͳ¼λʾbit0-ʱbit1-˳ʱbit2-bit3-bit4-bit5-,bit6-ָ,bit7-,bit8-ָ + BYTE byRes[128]; +}NET_DVR_TRIGGER_EVENT, *LPNET_DVR_TRIGGER_EVENT; + +//ϴ +typedef struct tagNET_DVR_ALARMHOST_FAULT_CFG +{ + DWORD dwSize; + DWORD dwCheckFault; //Ƿϣbit0-ϵ磬bit1-Ƿѹbit2-𿪣bit3-绰ߵߣbit4-485豸쳣bit5-ϣbit6-쳣bit7-չ쳣bit8-Ӳ쳣bit9- FPGAϣbit10- ģ, bit11-չ쳣bit12-WIFIͨŹϣbit13-RFźŸŹϣֵ֧Ĺʹȡ + DWORD dwOverallFaultJointLED; //Ϲȫָּʾ bit0-ϵ磬bit1-Ƿѹbit2-𿪣bit3-绰ߵߣbit4-485豸쳣bit5-ϣbit6-쳣bit7-չ쳣bit8-Ӳ쳣ֵ֧Ĺʹȡ + DWORD dwOverallFaultJointSound; //Ϲȫּ bit0-ϵ磬bit1-Ƿѹbit2-𿪣bit3-绰ߵߣbit4-485豸쳣bit5-ϣbit6-쳣bit7-չ쳣bit8-Ӳ쳣ֵ֧Ĺʹȡ + DWORD dwSubSystemFaultJointLED[MAX_ALARMHOST_SUBSYSTEM]; /*ϹϵͳָʾdwSubSystemFaultJointLED[0]ʾϵͳ1ĹϢdwSubSystemFaultJointLED[0]ÿһλʾһйϣbit0-ϵ磬bit1-Ƿѹbit2-𿪣bit3-绰ߵߣbit4-485豸쳣bit5-ϣbit6-쳣bit7-չ쳣bit8-Ӳ쳣; dwSubSystemFaultJointLED[1]ʾϵͳ2Դ*/ + DWORD dwSubSystemFaultJointSound[MAX_ALARMHOST_SUBSYSTEM];/*ϹϵͳڼdwSubSystemFaultJointLED[0]ʾϵͳ1ĹϢdwSubSystemFaultJointSound [0]ÿһλʾһйϣbit0-ϵ磬bit1-Ƿѹbit2-𿪣bit3-绰ߵߣbit4-485豸쳣bit5-ϣbit6-쳣bit7-չ쳣bit8-Ӳ쳣; dwSubSystemFaultJointSound [1]ʾϵͳ2Դ*/ + DWORD dwFaultJointFaultLight;//Ϲϵ + BYTE byRes[60]; +}NET_DVR_ALARMHOST_FAULT_CFG, *LPNET_DVR_ALARMHOST_FAULT_CFG; + +typedef struct tagNET_DVR_LIST_INFO +{ + DWORD dwSize; + BYTE byIndex; //ϵͳţ0xffʾϵͳ + BYTE byRes[63]; // +}NET_DVR_LIST_INFO, *LPNET_DVR_LIST_INFO; + +#define CID_CODE_LEN 4 +#define DEV_SERIAL_LEN 9 +typedef enum tagNET_DVR_ALARMHOST_REPORT_TYPE +{ + NET_DVR_DEFENCE_ALARM = 1, // + NET_DVR_VIDEO_ALARM, //Ƶ + NET_DVR_VIRTUAL_DEFENCE_ALARM, // + NET_DVR_HOSTAGE_ALARM, //Юֱ + NET_DVR_KNOCK_DOWN_ALARM, //𱨾 + NET_DVR_OPERATE_ALARM, // + NET_DVR_OHTER_ABNORMAL_ALARM //쳣 +}NET_DVR_ALARMHOST_REPORT_TYPE; + + +typedef enum tagNET_DVR_ALARMHOST_CID_MAIN_TYPE +{ + CID_ENTER = 1000, /*Ļ*/ + CID_EXIT = 3000 /*ָĻ*/ +}NET_DVR_ALARMHOST_CID_MAIN_TYPE; + + +typedef enum tagNET_DVR_ALARMHOST_CID_MINOR_TYPE +{ + CID_MEDICAL_ALARM = 100, /*Ȼ*/ + CID_ALARM = 103, /**/ + CID_FIRE_ALARM = 110, /**/ + CID_ABDUCT_REPORT = 121, /*Юֱ*/ + CID_SILENT_24 = 122, /*24Сʱ*/ + CID_AUDIO_24 = 123, /*24Сʱ*/ + CID_AUXILIARY_24 = 124, /*24Сʱ*/ + CID_SHOCK_24 = 125, /*24Сʱ*/ + CID_OVERTIME_ALARM = 126, /*ʱ*/ + CID_EMERGENCE_CALL_HELP = 129, /**/ + CID_BURGLARY_ALARM = 130, /*Ա*/ + CID_PERIMETER_ALARM = 131, /*ܽ*/ + CID_INNET_ALARM = 132, /*ڲ*/ + CID_ENTER_EXIT = 134, /**/ + CID_DEVICE_OPEN = 137, /*豸*/ + CID_ZONE_BUS_BREAK = 141, /*߿·*/ + CID_ZONE_BUS_SHORT = 142, /*߶·*/ + CID_MOTION_ALARM = 148, /*ƶ*/ + CID_GAS_LEAKAGE = 151, /*ȼй©*/ + CID_ZONE_EARLY_WARNING = 207, /*Ԥ*/ + CID_AC_LOSS = 301, /**/ + CID_LOW_BATT_VOL = 302, /*صѹ*/ + CID_DEV_RESET = 305, /*λ*/ + CID_MBUS_MODEL_FAULT = 333, /*չģ*/ + CID_PRINTER_FAIL = 336, /*ӡ*/ + CID_LOW_EXPANDER_VOL = 338, /*չģѹ*/ + CID_EXPANDER_OPEN = 341, /*չģ鱻*/ + CID_EXPANDER_AC_POWER_DOWN = 342, /*չģ齻*/ + CID_WIRELESS_REPEATER_TAMPERED = 343, /*м𴥷*/ + CID_WIRELESS_SIREN_TAMPERED = 344, /*߾ŷ𴥷*/ + CID_WIRELESS_SIREN_DISCONNECTED = 345, /*߾ŵ*/ + CID_LINE_LOSS = 354, /*绰ͨѶʧ*/ + CID_BUS_LOSS = 382, /*չģ*/ + CID_DETECTOR_OPEN = 383, /*Ӧ*/ + CID_ZONE_OPEN_CIRCUIT = 386, /*·*/ + CID_ZONE_SHORT_CIRCUIT = 387, /*·*/ + CID_GUARD = 401, /**/ + CID_GUARD_AUTO = 403, /*Զ*/ + CID_CANCEL_ARM = 406, /**/ + CID_GUARD_IMME = 408, /*ʱ*/ + CID_KEY_ZONE_GUARD = 409, /*Կ׷*/ + CID_GUARD_STAY = 441, /*ز*/ + CID_FORCED_ARM = 442, /*ǿƲ*/ + CID_AUTOCTRL_TRIG = 443, /*ʱ/ش*/ + CID_ONETOUCH_AWAY_ARMING = 444, /*һ*/ + CID_ONETOUCH_STAY_ARMING = 445, /*һز*/ + CID_CARD_ARMING_OR_DISARMING = 446, /*ˢ*/ + CID_LATE_TO_DISARM = 452, /*ٵ*/ + CID_AUTOGUARD_FAIL = 455, /*Զʧ*/ + CID_AOPEN_TRIG_FAIL = 460, /*ʱʧ*/ + CID_ACLOSE_TRIG_FAIL = 461, /*ʱرմʧ*/ + CID_AUTOUNGUARD_FAIL = 462, /*Զʧ*/ + CID_BYPASS = 570, /*·¼*/ + CID_GROUP_BYPASS = 574, /*·*/ + CID_MANUAL_TEST_RPT = 601, /*ֶԱ*/ + CID_AUTO_TEST_RPT = 602, /*ʱԱ*/ + CID_PHONE_CONNET_TEST = 617, /*绰·*/ + CID_ENTER_PROG = 627, /**/ + CID_EXIT_PROG = 628, /*˳*/ + CID_FIELD_DETECTION = 759, /**/ + CID_LINE_DETECTION = 773, /*籨*/ + CID_PIR_ALARM = 774, /*PIR*/ + CID_SOUND_INTENSITY_RISE = 775, /*ǿ*/ + CID_SOUND_INTENSITY_DROP = 776, /*ǿ*/ + CID_AUDIO_INPUT_EXCEPTION = 777, /*Ƶ쳣*/ + CID_SOFT_INSTAND = 810, /**/ + CID_SOFT_FIRE = 811, /**/ + CID_SOFT_MOBS = 812, /*˾mobster*/ + CID_KEYPAD_LOCKED = 862, /**/ + CID_ABSENCE_ALARM = 863, /*ֵ*/ + CID_KEY_FAIL = 910, /*̵*/ + CID_TRIGGER_FAIL = 911, /*ϴ*/ + CID_GPK_FAIL = 912, /*GP/K*/ + CID_MODULE_FAIL = 913, /*MN/K*/ + CID_WIRELESS_DETECTOR_FAIL = 914, /*̽*/ + CID_WIRELESS_DETECTOR_BATTERY_LOW = 915,/*̽Ƿѹ/ָ*/ + CID_EXPANDER_DISCONNECT = 916, /*չģ*/ + CID_WIRELESS_REPEATER_DISCONNECT = 917, /*м*/ + CID_RADAR_TRANS_FAULT = 918, /*״ź쳣*/ + CID_WIRELESS_SIREN_LOW_BATTERY = 919, /*߾ŵ*/ + CID_WRIE_LESS_NET = 920, /**/ + CID_SIM_FAULT = 921, /*SIM*/ + CID_WIFI_ABNORMAL = 922, /*WIFIͨ쳣/ָ*/ + CID_RF_ABNORMAL = 923, /*RFź쳣/ָ*/ + CID_DATE_TRAFFIC_OVERFLOW = 924, /**/ + CID_IPADDR_CONFLICT = 930, /*IPͻ*/ + CID_ETHERNET_BROKEN = 931, /*߶*/ + CID_GROUP_OUT_RP = 932, /*ͨѶʧ*/ + CID_GROUP_IN_RP = 933, /*ͨͨѶʧ*/ + CID_MOTION_DECTECT = 940, /*ƶⱨʼ/*/ + CID_MASK_ALARM = 941, /*ڵʼ/*/ + CID_VI_LOST = 942, /*Ƶʧʼ/*/ + CID_VS_MISMATCH = 943, /*/Ƶʽƥ*/ + CID_VI_EXCEPTION = 944, /*Ƶ쳣/ָ*/ + CID_HD_FULL = 945, /*Ӳ/ָ*/ + CID_HD_ERROR = 946, /*Ӳ̴/ָ*/ + CID_PIC_SEND_FAILED = 947, /*ͼƬϴʧ*/ + CID_KEY_LOCKED = 948, /**/ + CID_NETWORK_CAMERA_DISCONNECT = 949, /*IPCϿ*/ + CID_DUTY_CHECKING = 960, /*ֵز*/ + CID_POST_RESPONSE = 961, /*ֵӦ*/ + CID_ZONE_BUS_SEARCH = 970, /**/ + CID_ZONE_BUS_REGIST = 971, /*ע*/ + CID_GUARD_DELAY_OP = 972, /*Զʱ*/ + CID_GUARD_SINGLE = 973, /**/ + CID_SINGLE_ZONE_CLEARED = 974, /**/ + CID_ZONE_ASSOCIATED_DETECTOR = 975, /*/ɾ̽*/ + CID_ZONE_CONSULTING = 976, /*ҵѯ*/ + CID_EXPANDER_DELETED = 977, /*ɾչģ*/ + CID_WIRELESS_REPEATER_DELETED = 978, /*ɾм*/ + CID_WIRELESS_SIREN_DELETED = 979, /*ɾ߾*/ +}NET_DVR_ALARMHOST_CID_MINOR_TYPE; + +typedef enum tagNET_DVR_ALARMHOST_CID_ALL_MINOR_TYPE +{ + CID_TYPE_MEDICAL_ALARM = 1100, /*˾Ȼ*/ + CID_TYPE_MEDICAL_ALARM_RESET = 3100, /*˾Ȼָ*/ + CID_TYPE_ALARM = 1103, /*ʱ*/ + CID_TYPE_ALARM_RESET = 3103, /*ʱָ*/ + CID_TYPE_FIRE_ALARM = 1110, /*𾯱*/ + CID_TYPE_FIRE_ALARM_RESET = 3110, /*𾯱ָ*/ + CID_TYPE_ABDUCT_REPORT = 1121, /*Юֱ*/ + CID_TYPE_SILENT_24 = 1122, /*24Сʱ*/ + CID_TYPE_SILENT_24_RESET = 3122, /*24Сʱָ*/ + CID_TYPE_AUDIO_24 = 1123, /*24Сʱ*/ + CID_TYPE_AUDIO_24_RESET = 3123, /*24Сʱָ*/ + CID_TYPE_AUXILIARY_24 = 1124, /*24Сʱ*/ + CID_TYPE_AUXILIARY_24_RESET = 3124, /*24Сʱָ*/ + CID_TYPE_SHOCK_24 = 1125, /*24Сʱ𶯱*/ + CID_TYPE_SHOCK_24_RESET = 3125, /*24Сʱ𶯱ָ*/ + CID_TYPE_TIMEOUT = 1126, /*ʱ*/ + CID_TYPE_TIMEOUT_RESET = 3126, /*ʱָ*/ + CID_TYPE_EMERGENCE_CALL_HELP = 1129, /**/ + CID_TYPE_EMERGENCE_CALL_HELP_RESET = 3129, /*ָ*/ + CID_TYPE_BURGLARY_ALARM = 1130, /*Ա*/ + CID_TYPE_BURGLARY_ALARM_RESET = 3130, /*Աָ*/ + CID_TYPE_PERIMETER_ALARM = 1131, /*ܽ籨*/ + CID_TYPE_PERIMETER_ALARM_RESET = 3131, /*ܽ籨ָ*/ + CID_TYPE_INNET_ALARM = 1132, /*ڲʱ*/ + CID_TYPE_INNET_ALARM_RESET = 3132, /*ڲʱָ*/ + CID_TYPE_ENTER_EXIT = 1134, /*ʱ*/ + CID_TYPE_ENTER_EXIT_RESET = 3134, /*ʱָ*/ + CID_TYPE_DEVICE_OPEN = 1137, /*豸𱨾*/ + CID_TYPE_DEVICE_OPEN_RESET = 3137, /*豸𱨾ָ*/ + CID_TYPE_ZONE_BUS_BREAK = 1141, /*߿·*/ + CID_TYPE_ZONE_BUS_BREAK_RESET = 3141, /*߿·ָ*/ + CID_TYPE_ZONE_BUS_SHORT = 1142, /*߶·*/ + CID_TYPE_ZONE_BUS_SHORT_RESET = 3142, /*߶·ָ*/ + CID_TYPE_MOTION_ALARM = 1148, /*豸ƶ*/ + CID_TYPE_MOTION_ALARM_RESET = 3148, /*豸ƶָ*/ + CID_TYPE_GAS_LEAKAGE_ALARM = 1151, /*ȼй©*/ + CID_TYPE_GAS_LEAKAGE_ALARM_RESET = 3151, /*ȼй©ָ*/ + CID_TYPE_ZONE_EARLY_WARNING = 1207, /*Ԥ*/ + CID_TYPE_ZONE_EARLY_WARNING_RESET = 3207, /*Ԥָ*/ + CID_TYPE_AC_LOSS = 1301, /**/ + CID_TYPE_AC_LOSS_RESET = 3301, /*ָ*/ + CID_TYPE_LOW_BATT_VOL = 1302, /*صѹ*/ + CID_TYPE_LOW_BATT_VOL_NORMAL = 3302, /*صѹ*/ + CID_TYPE_DEV_RESET = 1305, /*λ*/ + CID_TYPE_MBUS_MODEL_FAULT = 1333, /*չģ*/ + CID_TYPE_MBUS_MODEL_RESET = 3333, /*չģָ*/ + CID_TYPE_PRINTER_OFF = 1336, /*ӡ*/ + CID_TYPE_PRINTER_ON = 3336, /*ӡָ*/ + CID_TYPE_EXTEND_MODULE_VOL_LOW = 1338, /*չģѹ*/ + CID_TYPE_EXTEND_MODULE_VOL_NORMAL = 3338, /*չģѹ*/ + CID_TYPE_EXTEND_MODULE_REMOVE = 1341, /*չģ𴥷*/ + CID_TYPE_EXTEND_MODULE_RECOVER = 3341, /*չģָ*/ + CID_TYPE_EXTEND_MODULE_AC_LOSS = 1342, /*չģ齻*/ + CID_TYPE_EXTEND_MODULE_AC_LOSS_RESET = 3342, /*չģ齻ָ*/ + CID_TYPE_WIRELESS_REPEATER_TAMPER = 1343, /*м𴥷*/ + CID_TYPE_WIRELESS_REPEATER_RESTORE = 3343, /*мָ*/ + CID_TYPE_WIRELESS_SIREN_TAMPER = 1344, /*߾ŷ𴥷*/ + CID_TYPE_WIRELESS_SIREN_RESTORE = 3344, /*߾ŷָ*/ + CID_TYPE_WIRELESS_SIREN_DISCONNECT = 1345, /*߾ŵ*/ + CID_TYPE_WIRELESS_SIREN_CONNECT = 3345, /*߾ŵ߻ָ*/ + CID_TYPE_LINE_LOSS = 1354, /*绰߶Ͽ*/ + CID_TYPE_LINE_LOSS_RESET = 3354, /*绰*/ + CID_TYPE_BUS_LOSS = 1382, /*չģ*/ + CID_TYPE_BUS_LOSS_RESET = 3382, /*չģ߻ָ*/ + CID_TYPE_SENSOR_TAMPER = 1383, /*Ӧ*/ + CID_TYPE_SENSOR_TAMPER_RESET = 3383, /*Ӧָ*/ + CID_TYPE_ZONE_OPEN_CIRCUIT_ALARM = 1386, /*·*/ + CID_TYPE_ZONE_SHORT_CIRCUIT_ALARM = 1387, /*·*/ + CID_TYPE_DISARM = 1401, /**/ + CID_TYPE_ARM = 3401, /**/ + CID_TYPE_DISARM_AUTO = 1403, /*Զ*/ + CID_TYPE_ARM_AUTO = 3403, /*Զ*/ + CID_TYPE_CANCEL_ARM = 1406, /**/ + CID_TYPE_ARM_IMME = 3408, /*ʱ*/ + CID_TYPE_KEY_ZONE_ARM = 1409, /*Կ׷*/ + CID_TYPE_KEY_ZONE_DISARM = 3409, /*Կ׷*/ + CID_TYPE_GUARD_STAY = 3441, /*ز*/ + CID_TYPE_FORCED_ARM = 3442, /*ǿƲ*/ + CID_TYPE_AUTOCTRL_TRIG_ON = 1443, /*ʱ*/ + CID_TYPE_AUTOCTRL_TRIG_OFF = 3443, /*ʱش*/ + CID_TYPE_LATE_TO_DISARM = 1452, /*ٵ*/ + CID_TYPE_AUTOGUARD_FAIL = 1455, /*Զʧ*/ + CID_TYPE_AOPEN_TRIG_FAIL = 1460, /*ʱʧ*/ + CID_TYPE_ACLOSE_TRIG_FAIL = 1461, /*ʱرմʧ*/ + CID_TYPE_AUTOUNGUARD_FAIL = 1462, /*Զʧ*/ + CID_TYPE_BYPASS = 1570, /*·*/ + CID_TYPE_BYPASS_RESET = 3570, /*·ָ*/ + CID_TYPE_GROUP_BYPASS = 1574, /*ϵͳ·*/ + CID_TYPE_GROUP_BYPASS_RESET = 3574, /*ϵͳ·ָ*/ + CID_TYPE_MANUAL_TEST_RPT = 1601, /*ֶԱ*/ + CID_TYPE_AUTO_TEST_RPT = 1602, /*ʱԱ*/ + CID_TYPE_LINE_TEST = 1617, /*绰·*/ + CID_TYPE_ENTER_PROG = 1627, /**/ + CID_TYPE_EXIT_PROG = 1628, /*˳*/ + CID_TYPE_FIELD_DETECTION = 1759, /**/ + CID_TYPE_FIELD_DETECTION_RESET = 3759, /*ָֻ*/ + CID_TYPE_LINE_DETECTION = 1773, /*籨*/ + CID_TYPE_LINE_DETECTION_RESET = 3773, /*籨ָ*/ + CID_TYPE_PIR_ALARM = 1774, /*PIR*/ + CID_TYPE_PIR_ALARM_RESET = 3774, /*PIRָ*/ + CID_TYPE_SOUND_INTENSITY_RISE = 1775, /*ǿ*/ + CID_TYPE_SOUND_INTENSITY_RISE_RESET = 3775, /*ǿָ*/ + CID_TYPE_SOUND_INTENSITY_DROP = 1776, /*ǿ*/ + CID_TYPE_SOUND_INTENSITY_DROP_RESET = 3776, /*ǿָ*/ + CID_TYPE_AUDIO_INPUT_EXCEPTION = 1777, /*Ƶ쳣*/ + CID_TYPE_AUDIO_INPUT_EXCEPTION_RESET = 3777, /*Ƶ쳣ָ*/ + CID_TYPE_SOFT_INSTAND = 1810, /**/ + CID_TYPE_SOFT_FIRE = 1811, /**/ + CID_TYPE_SOFT_MOBS = 1812, /*˾*/ + CID_TYPE_KEYPAD_LOCK = 1862, /**/ + CID_TYPE_KEYPAD_UNLOCK = 3862, /*̽*/ + CID_TYPE_ABSENCE_ALARM = 1863, /*ֵ*/ + CID_TYPE_KEY_FAIL = 1910, /*̵*/ + CID_TYPE_KEY_RESET = 3910, /*ָ̻*/ + CID_TYPE_TRIGGER_FAIL = 1911, /*ϴ*/ + CID_TYPE_TRIGGER_RESET = 3911, /*ϴָ*/ + CID_TYPE_GPK_FAIL = 1912, /*GP/K*/ + CID_TYPE_GPK_RESET = 3912, /*GP/Kָ*/ + CID_TYPE_MODULE_FAIL = 1913, /*MN/K*/ + CID_TYPE_MODULE_RESET = 3913, /*MN/Kָ*/ + CID_TYPE_WIRELESS_DETECTOR_FAIL = 1914, /*̽*/ + CID_TYPE_WIRELESS_DETECTOR_RESET = 3914, /*̽߻ָ*/ + CID_TYPE_WIRELESS_DETECTOR_BATTERY_LOW = 1915, /*̽ѹ*/ + CID_TYPE_WIRELESS_DETECTOR_BATTERY_NORMAL = 3915, /*̽ѹ*/ + CID_TYPE_EXTEND_MODULE_LOSS = 1916, /*չģ*/ + CID_TYPE_EXTEND_MODULE_LOSS_RESET = 3916, /*չģ߻ָ*/ + CID_TYPE_WIRELESS_REPEATER_DISCONNECT = 1917, /*м*/ + CID_TYPE_WIRELESS_REPEATER_CONNECT = 3917, /*м߻ָ*/ + CID_TYPE_RADAR_TRANS_FAULT = 1918, /*״ź쳣*/ + CID_TYPE_RADAR_TRANS_RESET = 3918, /*״ź쳣ָ*/ + CID_TYPE_WRIELESS_SIREN_LOW_BATTERY = 1919, /*߾ŵ*/ + CID_TYPE_NORMAL_WRIELESS_SIREN_BATTERY = 3919, /*߾ŵ*/ + CID_TYPE_WRIELESS_NET_FAULT = 1920, /**/ + CID_TYPE_WRIELESS_NET_RESET = 3920, /*ϻָ*/ + CID_TYPE_SIM_FAULT = 1921, /*SIM쳣*/ + CID_TYPE_SIM_RESET = 3921, /*SIM쳣ָ*/ + CID_TYPE_WIFI_ABNORMAL = 1922, /*WIFIͨ쳣*/ + CID_TYPE_WIFI_NORMAL = 3922, /*WIFIͨŻָ*/ + CID_TYPE_RF_ABNORMAL = 1923, /*RFź쳣*/ + CID_TYPE_RF_NORMAL = 3923, /*RFź*/ + CID_TYPE_DATE_TRAFFIC_OVERFLOW = 1924, /**/ + CID_TYPE_IPADDR_CONFLICT = 1930, /*IPͻ*/ + CID_TYPE_IPADDR_NORMAL = 3930, /*IP*/ + CID_TYPE_ETHERNET_BROKEN = 1931, /**/ + CID_TYPE_ETHERNET_NORMAL = 3931, /*ϻָ*/ + CID_TYPE_MOTION_DECTECT_START = 1940, /*ƶⱨʼ*/ + CID_TYPE_MOTION_DECTECT_STOP = 3940, /*ƶⱨ*/ + CID_TYPE_MASK_ALARM_START = 1941, /*ڵʼ*/ + CID_TYPE_MASK_ALARM_STOP = 3941, /*ڵ*/ + CID_TYPE_VI_LOST_START = 1942, /*ƵźŶʧ*/ + CID_TYPE_VI_LOST_STOP = 3942, /*ƵźŻָ*/ + CID_TYPE_VS_MISMATCH = 1943, /*/Ƶʽƥ*/ + CID_TYPE_VS_MATCH = 3943, /*/Ƶʽָ*/ + CID_TYPE_VI_EXCEPTION = 1944, /*Ƶ쳣*/ + CID_TYPE_VI_NORMAL = 3944, /*Ƶָ*/ + CID_TYPE_HD_FULL = 1945, /*Ӳ*/ + CID_TYPE_HD_FREE = 3945, /*Ӳ̿*/ + CID_TYPE_HD_ERROR = 1946, /*Ӳ쳣*/ + CID_TYPE_HD_RESET = 3946, /*Ӳָ̻*/ + CID_TYPE_PIC_SEND_FAILED = 1947, /*ͼƬϴʧ*/ + CID_TYPE_SENDING_EMAIL_FAILED = 1948, /*ʼʧ*/ + CID_TYPE_NETWORK_CAMERA_DISCONNECT = 1949, /*IPCϿ*/ + CID_TYPE_NETWORK_CAMERA_CONNECT = 3949, /*IPCָ*/ + CID_TYPE_DUTY_CHECKING = 1960, /*ֵز*/ + CID_TYPE_POST_RESPONSE = 1961, /*ֵӦ*/ + CID_TYPE_ZONE_BUS_SEARCH = 1970, /**/ + CID_TYPE_ZONE_BUS_REGIST = 1971, /*ע*/ + CID_TYPE_GUARD_SINGLE_ARM = 1973, /**/ + CID_TYPE_GUARD_SINGLE_DISARM = 3973, /**/ + CID_TYPE_SINGLE_ZONE_ALARM_CLEARED = 1974, /**/ + CID_TYPE_ZONE_ASSOCIATED_DETECTOR_DEL = 1975, /*ɾ̽*/ + CID_TYPE_ZONE_ASSOCIATED_DETECTOR_ADD = 3975, /*̽*/ + CID_TYPE_ZONE_CONSULT = 1976, /*ҵѯ*/ + CID_TYPE_ZONE_CONSULT_STOP = 3976, /*ҵѯ*/ + CID_TYPE_EXTEND_MODULE_DEL = 1977, /*ɾչģ*/ + CID_TYPE_EXTEND_MODULE_ADD = 3977, /*չģ*/ + CID_TYPE_WIRELESS_REPEATER_DEL = 1978, /*ɾм*/ + CID_TYPE_WIRELESS_REPEATER_ADD = 3978, /*м*/ + CID_TYPE_WIRELESS_SIREN_DEL = 1979, /*ɾ߾*/ + CID_TYPE_WIRELESS_SIREN_ADD = 3979 /*߾*/ +}NET_DVR_ALARMHOST_CID_ALL_MINOR_TYPE; + + +typedef struct tagNET_DVR_CID_ALARM +{ + DWORD dwSize; + BYTE sCIDCode[CID_CODE_LEN/*4*/]; //CID¼ + BYTE sCIDDescribe[NAME_LEN/*32*/]; //CID¼ + NET_DVR_TIME_EX struTriggerTime; //ʱ + NET_DVR_TIME_EX struUploadTime; //ϴʱ + BYTE sCenterAccount[ACCOUNTNUM_LEN/*6*/]; //ʺ + BYTE byReportType; //NET_DVR_ALARMHOST_REPORT_TYPE + BYTE byUserType; //ûͣ0-û 1-û,2-ֻû,3-ϵͳû + BYTE sUserName[NAME_LEN/*32*/]; //ûû + WORD wKeyUserNo; //û 0xFFFFʾЧ + BYTE byKeypadNo; //̺ 0xFFʾЧ + BYTE bySubSysNo; //ϵͳ 0xFFʾЧ + WORD wDefenceNo; // 0xFFFFʾЧ + BYTE byVideoChanNo; //Ƶͨ 0ʾЧʾ豸ԴĬƵͨ + BYTE byDiskNo; //Ӳ̺ 0xFFʾЧ + WORD wModuleAddr; //ģַ 0xFFFFʾЧ + BYTE byCenterType; //0-Ч, 1-˺(6),2-չ˺(9) + BYTE byRelativeChannel; //ӵƵͨţ0ʾЧֽڱʾͨ + BYTE sCenterAccountV40[ACCOUNTNUM_LEN_32/*32*/]; //˺V40,ʹôֶʱsCenterAccountЧ + BYTE byDevSerialNo[DEV_SERIAL_LEN]; /*Ʒк*/ + BYTE byRepeaterNo; //мţΪ0Ч + WORD wRemoteCtrllerUserNo; //ңûţΪ0Ч + DWORD dwIOTChannelNo; //IOTͨ + BYTE standardCIDcode; //׼CID + BYTE byRes2[11]; +}NET_DVR_CID_ALARM, *LPNET_DVR_CID_ALARM; + +typedef struct tagNET_DVR_ALARMHOST_MODULE_CFG +{ + DWORD dwSize; + BYTE byModuleType; //1-2- 3- + BYTE byZoneType; //ͣ1-ط2-3-˫4-85-8·ģ6-0xffʾòЧ + BYTE byTriggerType; //ͣ1-ش 2-4·3-8·4-0xffʾòЧ + BYTE byRes1[1]; + char sModelInfo[MODULE_INFO_LEN]; //ģϢ + char sDeviceVersionInfo[VERSION_INFO_LEN]; /* 汾Ϣ*/ + BYTE byRes[188]; +} NET_DVR_ALARMHOST_MODULE_CFG, *LPNET_DVR_ALARMHOST_MODULE_CFG; + + +#define MAX_DECODE_CARD_SUPPORTDISPNUMS 8//ÿ뿨ֵ֧ʾͨ +#define MAX_SUPPORT_RES 32 +typedef struct tagNET_DVR_DECCARD_ABILITY_V41 /*뿨*/ +{ + BYTE byCardType; //뿨(0:MD,1:MD+,2:HD) + BYTE byDecNums; //ͨ + BYTE byDispNums; //ʾͨ + BYTE byDecStartIdx; //׸ͨнͨе + BYTE byDispStartIdx; //׸ʾͨʾͨе + BYTE byRes1[3]; + DWORD dwVgaSupportResolution[MAX_SUPPORT_RES/*32*/];//ֵ֧ķֱ + DWORD dwHdmiSupportResolution[MAX_SUPPORT_RES/*32*/];//ֵ֧ķֱ + DWORD dwDviSupportResolution[MAX_SUPPORT_RES/*32*/];//ֵ֧ķֱ + DWORD dwYpbprSupportResolution[MAX_SUPPORT_RES/*32*/];//ֵ֧ķֱ + BYTE byDispFormat[MAX_DECODE_CARD_SUPPORTDISPNUMS]; //ֵ֧ģʽ(HD_DISPLAY_FORMATеö) + BYTE byWindowMode[MAX_DECODE_CARD_SUPPORTDISPNUMS][12]; //ֵ֧Ĵģʽ(1,2,4,9,16)) + BYTE byRes2[36]; +} NET_DVR_DECCARD_ABILITY_V41,*LPNET_DVR_DECCARD_ABILITY_V41; + +#define MAX_DECODE_CARD_NUM 6 //뿨 +typedef struct tagNET_DVR_DECODESVR_ABILITY_V41 +{ + DWORD dwSize; /* ṹС */ + BYTE byCardNums; /* 뿨 */ + BYTE byStartChan; /* ʼͨ */ + BYTE byRes1[2]; + NET_DVR_DECCARD_ABILITY_V41 struDecCardAbility[MAX_DECODE_CARD_NUM]; + BYTE byRes2[64]; +}NET_DVR_DECODESVR_ABILITY_V41, *LPNET_DVR_DECODESVR_ABILITY_V41; + +// ¼״̬ +typedef struct tagNET_DVR_STREAM_RECORD_STATUS +{ + DWORD dwSize; + BYTE byRecord; //(ֻ)¼, 0¼1¼ 2- + //3- 4-Ƶ 5-δ 6-浵 + //7-ش 8-û 9-δ֤ + //10-浵к¼ 11-¼شк¼12-token֤ʧ + //13-ǰ¼ƻ 14-ͨ쳣ͨ״̬ 15-Ӳ + //16-Ӳ̴ 17-Ӳ + BYTE byOffLineRecord; //¼ 0-ر 1- + BYTE byRes1[2]; //ֽ + DWORD dwRelatedHD; // + BYTE byRes2[8]; //ֽ +}NET_DVR_STREAM_RECORD_STATUS, *LPNET_DVR_STREAM_RECORD_STATUS; + +#define CHAN_NO_LEN 24 + +typedef struct tagNET_DVR_DIRECT_CONNECT_CHAN_INFO +{ + BYTE byEnable; //Ƿ + BYTE byProType; //Эͣ0-˽Э(default), (Ҫ豸ȡ) + BYTE byZeroChan; //Ƿͨ,0-ǣ1- + BYTE byPriority; //ȼ + BYTE sUserName[NAME_LEN]; //û + BYTE sPassword[PASSWD_LEN]; // + BYTE byDomain[MAX_DOMAIN_NAME]; //豸 + NET_DVR_IPADDR struIP; //IPַ + WORD wDVRPort; //˿ں + BYTE byStreamType; //:0; 1 + BYTE byOnline; //ֻ0- 1- + DWORD dwChannel; //ͨ + BYTE byTransProtocol; //Эͣ0-TCP1-UDP2-ಥ + BYTE byLocalBackUp; //ر: 0-CVRرݣ1-CVRر--طʱһ¼һڴ浵رݣ + WORD wDirectLastTime; //ʱ + BYTE byChanNo[CHAN_NO_LEN]; //ͨ--VAGȡ +}NET_DVR_DIRECT_CONNECT_CHAN_INFO, *LPNET_DVR_DIRECT_CONNECT_CHAN_INFO; + +typedef struct tagNET_DVR_DIRECT_CONNECT_CHAN_INFO_V40 +{ + BYTE byEnable; //Ƿ + BYTE byProType; //Эͣ0-˽Э(default), 1-Э飬2-, 3- (Ҫ豸ȡ) + BYTE byZeroChan; //Ƿͨ,0-ǣ1- + BYTE byRes1; //ֶΣ0 + BYTE sUserName[NAME_LEN]; //û + BYTE sPassword[PASSWD_LEN]; // + BYTE byAddress[MAX_DOMAIN_NAME]; //ǰIP,Ҫ豸 ʽΪĸ'.'Ϊ,ΪIPַ + WORD wDVRPort; //˿ں + BYTE byStreamType; //:0; 1 + BYTE byOnline; //ֻ0- 1- + DWORD dwChannel; //ͨ + BYTE byTransProtocol; //Эͣ0-TCP1-UDP 2-ಥ + BYTE byLocalBackUp; //رݣ0-CVRرݣ1-CVRر--¼ʱһ¼һڴ浵رݣ + BYTE byRes2[2]; //ֶΣ0 + BYTE byVAGChanNo[MAX_VAG_CHANNO_LEN]; //ЭΪVAGʱӦVAGͨ + BYTE byRes[340]; +}NET_DVR_DIRECT_CONNECT_CHAN_INFO_V40, *LPNET_DVR_DIRECT_CONNECT_CHAN_INFO_V40; + + +typedef struct tagNET_DVR_PU_STREAM_URL_CFG +{ + BYTE byEnable; + BYTE byRes[3]; + BYTE byStreamMediaIP[64];//ýIP + WORD wStreamMediaPort; //ý˿ + BYTE byTransmitType; //ý崫Э 0- TCP 1- UDP + BYTE byRes1[33]; + BYTE byDevIP[64]; //豸IP + WORD wDevPort; //豸˿ + BYTE byChannel; //ͨ + BYTE byTransMode; //ģʽ 0- 1- + BYTE byProType; + // 0-˽ 1- 2- 3-ɳ 4-ɫǼ NET_DVR_GetIPCProtoListӿڻȡ + //VQDýֻ֧ 01ʽֱ֧ 01234 + BYTE byTransProtocol; //Э0-TCP, 1-UDP, 2-ಥʽ, 3-RTP + BYTE byRes3[2]; + BYTE sUserName[NAME_LEN]; //豸½û + BYTE sPassWord[PASSWD_LEN]; // 豸½ + BYTE byRes2[28]; //Ԥ +}NET_DVR_PU_STREAM_URL_CFG, *LPNET_DVR_PU_STREAM_URL_CFG; + +typedef struct tagNET_DVR_PU_STREAM_URL_CFG_V40 +{ + BYTE byEnable; + BYTE byRes[3]; + BYTE byStreamMediaIP[64];//ýIP + WORD wStreamMediaPort; //ý˿ + BYTE byTransmitType; //ý崫Э 0- TCP 1- UDP + BYTE byRes1; + BYTE byDevIP[64]; //豸IP + WORD wDevPort; //豸˿ + BYTE byChannel; //ͨ + BYTE byTransMode; //ģʽ 0- 1- + BYTE byProType; + // 0- 1- 2- 3-ɳ 4-ɫǼ NET_DVR_GetIPCProtoListӿڻȡ + //VQDýֻ֧ 01ʽֱ֧ 01234 + BYTE byTransProtocol; //Э0-TCP, 1-UDP 2-ಥʽ + BYTE byRes3[2]; + BYTE sUserName[NAME_LEN]; //豸½û + BYTE sPassWord[PASSWD_LEN]; // 豸½ + BYTE byRes2[308]; //Ԥ +}NET_DVR_PU_STREAM_URL_CFG_V40, *LPNET_DVR_PU_STREAM_URL_CFG_V40; + +typedef struct tagNET_DVR_STREAM_URL_V40 +{ + BYTE byEnable; + BYTE byStreamType; // + BYTE byLocalBackUp; //Ƿ񱾵ر + BYTE byRes; + BYTE strURL[URL_LEN_V40]; //ýURLԼ + DWORD dwProtocalType; //IPCЭֵͨȡIPCЭбõ + BYTE sUserName[NAME_LEN]; //豸½û + BYTE sPassWord[PASSWD_LEN]; // 豸½ + BYTE byAddress[MAX_DOMAIN_NAME]; //ԴIP,Ҫ ʽΪĸ'.'Ϊ,ΪIPַ + WORD wIPPort; //ԴӦĶ˿ں + WORD wChanNo; //Դ豸IPͨ + BYTE byVAGChanNo[MAX_VAG_CHANNO_LEN]; //Դͨ,VAG + BYTE byRes1[88]; +}NET_DVR_STREAM_URL_V40, *LPNET_DVR_STREAM_URL_V40; + +typedef union tagNET_DVR_STREAM_TYPE_UNION +{ + NET_DVR_DIRECT_CONNECT_CHAN_INFO struChanInfo; //IPͨϢ ֵΪ0 + NET_DVR_PU_STREAM_URL struStreamUrl; //ͨý嵽urlȡֵΪ4 + NET_DVR_PU_STREAM_URL_CFG struStreamUrlCfg; //ͨý嵽ָ豸ȡֵΪ6 +}NET_DVR_STREAM_TYPE_UNION, *LPNET_DVR_STREAM_TYPE_UNION; + +typedef union tagNET_DVR_STREAM_TYPE_V40_UNION +{ + NET_DVR_DIRECT_CONNECT_CHAN_INFO_V40 struChanInfo; //IPͨϢֵΪ0 + NET_DVR_PU_STREAM_URL struPuStreamUrl; //ͨý嵽urlȡֵΪ4 + NET_DVR_PU_STREAM_URL_CFG_V40 struStreamUrlCfg; //ͨý嵽urlȡֵΪ6 + NET_DVR_RTSP_PROTOCAL_CFG struRtspCfg; //ɱ׼RTSPȡ ֵ7 + NET_DVR_STREAM_URL_V40 struStreamUrlV40; //ͨý壨ּ֧ʽԴȡֵΪ8 +}NET_DVR_STREAM_TYPE_V40_UNION, *LPNET_DVR_STREAM_TYPE_V40_UNION; + + +typedef struct tagNET_DVR_STREAM_MODE_TYPE +{ + BYTE byGetStreamType; //ȡʽ0-ֱӴ豸ȡ1-ýȡ2-ͨIPServeripַȡ, 3.ͨIPServerҵ豸ͨýȥ豸 4-ͨýURLȥȡ + BYTE byRes[3]; // ֽ + NET_DVR_STREAM_TYPE_UNION uGetStream; // ͬȡʽṹ +}NET_DVR_STREAM_MODE_TYPE, *LPNET_DVR_STREAM_MODE_TYPE; + +// ԴϢ +typedef struct tagNET_DVR_STREAM_SRC_INFO +{ + DWORD dwSize; + NET_DVR_STREAM_MODE_TYPE struStreamSrcInfo; +}NET_DVR_STREAM_SRC_INFO,*LPNET_DVR_STREAM_SRC_INFO; + +typedef struct tagNET_DVR_STREAM_SRC_INFO_V40 +{ + DWORD dwSize; + BYTE byGetStreamType; //ȡʽ0-ֱӴ豸ȡ1-ýȡ2-ͨIPServeripַȡ, 3.ͨIPServerҵ豸ͨýȥ豸 4-ͨýURLȥȡ 6-ͨý嵽ָ豸ȡ + BYTE byRes1[3]; // ֽ + NET_DVR_STREAM_TYPE_V40_UNION uGetStream; // ͬȡʽṹ + BYTE byMonitorName[128];/*ƣ֧ģСдĸ֣»ߵȷַʽݵ¼صbyCharEncodeTypeֶжϣ + ĿǰCVRӢİ汾һвͬѡCVRҪ󲼷ΪgbkӢİ汾CVRҪ󲼷Ϊiso8859-1硰A¥_1*/ + BYTE byRes[384]; // ֽ +}NET_DVR_STREAM_SRC_INFO_V40,*LPNET_DVR_STREAM_SRC_INFO_V40; + + +// ¼Ϣ +typedef struct +{ + DWORD dwSize; + NET_DVR_RECORD_V30 struRecordInfo; +}NET_DVR_STREAM_RECORD_INFO, *LPNET_DVR_STREAM_RECORD_INFO; + +// IDʱμ +typedef struct tagNET_DVR_STREAM_TIME_LOCK +{ + DWORD dwSize; // ṹС + NET_DVR_TIME strBeginTime; // ʼʱ + NET_DVR_TIME strEndTime; // ʱ + NET_DVR_STREAM_INFO struStreamInfo; // Ϣ + DWORD dwRecordType; // ¼: 0xffffffffȫʱ¼-ƶ⣬-ƶ⣬-ƶ⣬--ֶ¼-¼(ͬļ) + DWORD dwLockDuration; // ʱ,λ룬0xffffffffʾ + NET_DVR_TIME_EX strUnlockTimePoint; // ʱЧdwLockDurationΪʱʱ䵽ʱԶ + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ,0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cTimeDifferenceH; //UTCʱСʱ-12 ... +14+ʾ, byISO8601Ϊ1ʱЧ + char cTimeDifferenceM; //UTCʱӣ-30, 30, 45+ʾ, byISO8601Ϊ1ʱЧ + BYTE byRes[1]; +}NET_DVR_STREAM_TIME_LOCK, *LPNET_DVR_STREAM_TIME_LOCK; + +//طų֡ӿ ʼ֡ NET_DVR_START_DRAWFRAMEӦĿƽṹ +typedef struct tagNET_DVR_VOD_DRAWFRAME_PARA +{ + NET_DVR_TIME_EX struTime; + /* + dwDrawTypeֻ豸֧ѡԳ֡ʱЧ֡ʽУ + 0ֻI֡ + 11/2 Pֻ֡svc֧֣ + 23/4P֡ ֻsvc֧֣ + 31/2 I֡(ֻI֡ÿ2I֡һ) + 41/4 I(ֻI֡ÿ4I֡һ) + 51/8 I֡(ֻI֡ÿ8I֡һ) + */ + DWORD dwDrawType; + BYTE byRes[128]; +}NET_DVR_VOD_DRAWFRAME_PARA, *LPNET_DVR_VOD_DRAWFRAME_PARA; + +// ID+ʱطŽṹ +typedef struct tagNET_DVR_VOD_PARA +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struIDInfo; + NET_DVR_TIME struBeginTime; + NET_DVR_TIME struEndTime; + HWND hWnd; + BYTE byDrawFrame; //0:֡1֡ + BYTE byVolumeType; //0-ͨ¼ 1-浵 + BYTE byVolumeNum; //ţĿǰָ浵 + BYTE byStreamType; // 0- 1-2-3-ʱӰ + DWORD dwFileIndex; //浵ϵ¼ļ浵¼ʱصֵ + BYTE byAudioFile; //Ƶļ0-1- + BYTE byCourseFile; //γļ0-1- + BYTE byDownload; //Ƿ 0-1- + BYTE byOptimalStreamType; //Ƿͻط 0-1-ǣ˫豸ijһʱڵ¼ļָͲͬ򷵻ʵ͵¼ + BYTE byUseAsyn; //0-ʹͬIO1-ʹ첽IO + BYTE byRes2[19]; +}NET_DVR_VOD_PARA, *LPNET_DVR_VOD_PARA; + +typedef struct tagNET_DVR_VOD_PARA_V50 +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struIDInfo; + NET_DVR_TIME_V50 struBeginTime; + NET_DVR_TIME_V50 struEndTime; + HWND hWnd; + BYTE byDrawFrame; //0:֡1֡ + BYTE byVolumeType; //0-ͨ¼ 1-浵 + BYTE byVolumeNum; //ţĿǰָ浵 + BYTE byStreamType; // 0- 1-2-3-ʱӰ + DWORD dwFileIndex; //浵ϵ¼ļ浵¼ʱصֵ + BYTE byAudioFile; //طƵļ0-طƵļ1-طƵļ + BYTE byCourseFile; //طſγļ0-1- + BYTE byPlayMode; //ŷʽ0-ţ1- + BYTE byLinkMode; //ӷʽ0-TCP1-AdaptiveUDP + BYTE byDownload; //Ƿ 0-1- + BYTE byOptimalStreamType; //Ƿͻط 0-1-ǣ˫豸ijһʱڵ¼ļָͲͬ򷵻ʵ͵¼ + BYTE byDisplayBufNum; //òŻ֡Ϊ0ʱĬΪ3֡hWndΪʱЧ + BYTE byNPQMode; //NPQֱģʽǹý 0-ֱ 1-ý + BYTE sUserName[NAME_LEN/*32*/]; //֤û + BYTE sPassword[PASSWD_LEN/*16*/]; //֤ + BYTE byRemoteFile; //طԶļ0-1- + BYTE byUseAsyn; //0-ʹͬIO1-ʹ첽IO + BYTE byRes2[201]; + BYTE byHls; //HLSطţ0-1- + char* pSavedFileName; //ʱ¼ļ·byDownloadΪ1ʱЧȳ256ᱻض +}NET_DVR_VOD_PARA_V50, *LPNET_DVR_VOD_PARA_V50; + +// ֶ¼ +typedef struct tagNET_DVR_MANUAL_RECORD_PARA +{ + NET_DVR_STREAM_INFO struStreamInfo; + DWORD lRecordType; + BYTE byRes[32]; +}NET_DVR_MANUAL_RECORD_PARA, *LPNET_DVR_MANUAL_RECORD_PARA; + + +// CABACѹѡ20%ֻģͨ +typedef struct tagNET_DVR_STREAM_CABAC +{ + DWORD dwSize; //ṹС + BYTE byCabacEnable; //ѹѡֵ0 1 + BYTE byRes1[31]; // +}NET_DVR_STREAM_CABAC, *LPNET_DVR_STREAM_CABAC; + +#define MAX_IOSPEED_GROUP_NUM 4 //IO +#define MAX_IOOUT_NUM 4 //IOڸ +#define MAX_IOIN_NUM 8 //IOڸ +#define MAX_RELAY_NUM 12 //̵豸 2013-11-04 +#define MAX_VEHICLE_TYPE_NUM 8 //Ϣܿ2013-11-04 +#define MAX_IOIN_NUMEX 10 //IOڸ(չ) +#define MAX_ITC_LANE_NUM 6 //󳵵 +#define MAX_LANEAREA_NUM 2 // +#define ITC_MAX_POLYGON_POINT_NUM 20 //֧20Ķ +#define MAX_ITC_SERIALCHECK_NUM 8 //У͸ +#define MAX_LIGHT_NUM 6 //ͨ +#define MAX_VIDEO_INTERVAL_NUM 2 //ץļ +#define MAX_VIDEO_DETECT_LIGHT_NUM 12 //Ƶ +#define MAX_CALIB_RECOG_NUM 2 //궨 +#define MAX_RS485_NUM 12 //485֧ +#define MAX_MOBILE_POLYGON_NUM 3 //ƶ֧ʶ +#define MAX_MOBILE_DETECTLINE_NUM 3 //ƶ֧Υ߸ +#define MAX_IOOUT_K_NUM 8 //KϵIOڸ + +//IOڲ3.1汾֮ +typedef struct tagNET_ITC_IOOUT_PARAM +{ + DWORD dwSize; + BYTE byDefaultStatus;//IOĬ״̬0-͵ƽ1-ߵƽ + BYTE byIOOutStatus;//IOЧʱ״̬0-͵ƽ1-ߵƽ2- + BYTE byMode; //ƹʽ,λʾ0-ʾ1-ʾbit0-Ƶbit1-ڣbit2-Υ + BYTE byIOWorkMode;//IOڹģʽ0-ƣ1-ƫ, 2- + DWORD dwTimeDelay;//IOЧʱ䣬λus + WORD wAheadTime;//IOǰʱ䣬λus + BYTE byFreqMulti; //ƵֵΧ[1,15] + BYTE byDutyRate; //ռձȣ[0,40%] + BYTE byDetectBrightness;/*Զʹ0-⣻1-*/ + BYTE byBrightnessThreld;/*ʹֵΧ[0,100],ֵ*/ + BYTE byFlashLightEnable; //ʱʹ:0-;1- + BYTE byStartHour; //ʼʱ-Сʱ,ȡֵΧ0-23 + BYTE byStartMinute; //ʼʱ-,ȡֵΧ0-59 + BYTE byEndHour; //ʱ-Сʱ,ȡֵΧ0-23 + BYTE byEndMinute; //ʱ-,ȡֵΧ0-59 + BYTE byAutoPlateBrightness;// Զʹ 0- 1- + BYTE byIncrBrightEnable;//Ƿģʽģʽ£ + BYTE byIncrBrightPercent;//ٷֱȣ0~100%ģʽЧ + WORD wIncrBrightTime;//ʱ,λΪ루ģʽЧ + BYTE byBrightness;//ֵ0~100ģʽ£ + BYTE byEnvironBright;//նֵ0~100ģʽЧòֻնֵֵͻøֵΪοȥӦֵ + WORD wDelayCaptureTime;//ʱץʱ1~1000msģʽЧ +}NET_ITC_IOOUT_PARAM, *LPNET_ITC_IOOUT_PARAM; + +typedef enum _ITC_TRIGGERMODE_TYPE_ +{ + ITC_POST_IOSPEED_TYPE = 0x1, //IO٣ڣ + ITC_POST_SINGLEIO_TYPE = 0x2, //IOڣ + ITC_POST_RS485_TYPE = 0x4, //RS485ڣ + ITC_POST_RS485_RADAR_TYPE = 0x8, //RS485״ﴥڣ + ITC_POST_VIRTUALCOIL_TYPE = 0x10, //Ȧڣ + ITC_POST_HVT_TYPE_V50 = 0x20, //пƵV50 + ITC_POST_MPR_TYPE = 0x40, //֡ʶ()(Ver3.7) + ITC_POST_PRS_TYPE = 0x80, //Ƶⴥ + ITC_EPOLICE_IO_TRAFFICLIGHTS_TYPE = 0x100, //IO̵ƣ羯 + ITC_EPOLICE_RS485_TYPE = 0x200, //RS485羯羯 + ITC_POST_HVT_TYPE = 0x400, //пƵڣ + ITC_PE_RS485_TYPE = 0x10000, //RS485ʽ羯ʽ羯 + ITC_VIDEO_EPOLICE_TYPE = 0x20000, //Ƶ羯ʽ羯 + ITC_VIA_VIRTUALCOIL_TYPE = 0x40000, //VIA + ITC_POST_IMT_TYPE = 0x80000, //ǻ۲ + IPC_POST_HVT_TYPE = 0x100000, //IPCֵ֧HVT + ITC_POST_MOBILE_TYPE = 0x200000, //ƶͨģʽ + ITC_REDLIGHT_PEDESTRIAN_TYPE = 0x400000, //˴ƴ + ITC_NOCOMITY_PEDESTRIAN_TYPE = 0x800000 //˴ +}ITC_TRIGGERMODE_TYPE; + +//ӿڵӦpOutBuf +typedef struct tagNET_ITC_TRIGGERMODE_ABILITY +{ + DWORD dwSize; + DWORD dwTriggerType; //ͣλʾITC_TRIGGERMODE_ABILITY壬Ͳͬ˴صĴҲͬ + BYTE byRes[16]; +}NET_ITC_TRIGGERMODE_ABILITY, *LPNET_ITC_TRIGGERMODE_ABILITY; + +typedef struct tagNET_ITC_INTERVAL_PARAM +{ + BYTE byIntervalType; //ͣĬϰʱ䣩0-ʱЧ,1-Ч + BYTE byRes1[3]; + WORD wInterval[MAX_INTERVAL_NUM];//ļʱ䣨λmsļ루λףbyIntervalTypeΪ0ʱʾʱ䣬byIntervalTypeΪ1ʱʾ + BYTE byRes[8]; +}NET_ITC_INTERVAL_PARAM, *LPNET_ITC_INTERVAL_PARAM; + +//ʶ +typedef struct tagNET_ITC_PLATE_RECOG_PARAM +{ + BYTE byDefaultCHN[MAX_CHJC_NUM]; /*豸ʡݵĺּд*/ + BYTE byEnable; //Ƿøʶ0-1- + DWORD dwRecogMode; + /*ʶͣ + bit0-ʶ0-ʶ1-ʶ(βʶ) + bit1-ʶСʶ0-Сʶ1-ʶ + bit2-ɫʶ0-óɫʶڱʶСʶʱֹã1-ɫʶ + bit3-ũóʶ0-ũóʶ1-ũóʶ + bit4-ģʶ0-ģʶ1-ģʶ + bit5-֡λ򳡶λ0-֡λ1-λ + bit6-֡ʶʶ0-֡ʶ1-ʶ + bit7-ϻ죺0-죬1- + bit8-Ħгʶ0-Ħгʶ1-Ħгʶ; + bit9-ģʽ0-羯/֡1-ڣ + bit10-΢Сƣ0-ã1-΢Сʶ(6080) + bit11-ȫ⣺0-ã1-ðȫ + bit12-񺽳ʶ: 0-ã1-񺽳ʶ + bit13-ƹб: 0-ã1-бPRS + bit14-ʶ: 0-ã1-ʶPRS + bit15-⣺0-ã1- + bit16-Ʊ공⣺0-ã1-ûƱ공 + bit17-ΣƷ⣺0-ã1-ΣƷ + bit18-ʹݳʶ0-ã1-ʹݳʶ + bit19-Ʒʶ0-ã1-óƷʶ + bit20-绰ʶ0-ã1- + bit21-ʶ0-ã1- + */ + BYTE byVehicleLogoRecog;//ʶ 0-ã1- + /* + 0-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-29-أ30-ۣ31-£32-ƣ33-㣬 + 34-0xff-ȫ + */ + BYTE byProvince;//ʡֵ + BYTE byRegion;// ֵ 0-1-ŷޣ2-, 3-ŷ&˹(EU&CIS),4-ж(Middle East) + BYTE byCountry;//öCOUNTRY_INDEX(֧֡COUNTRY_ALL = 0xff,//ALL ȫ) + WORD wPlatePixelWidthMin;//ʶСֵλأǰƼΧ[130,500] + WORD wPlatePixelWidthMax;//ʶֵλأǰƼΧ[130,500] + BYTE byRes[24]; +}NET_ITC_PLATE_RECOG_PARAM, *LPNET_ITC_PLATE_RECOG_PARAM; + +//ͽṹ +typedef struct tagNET_ITC_POLYGON +{ + DWORD dwPointNum; //Ч ڵ33һΪЧ߽ΪЧ + NET_VCA_POINT struPos[ITC_MAX_POLYGON_POINT_NUM]; //α߽,20 +}NET_ITC_POLYGON, *LPNET_ITC_POLYGON; + +typedef struct tagNET_ITC_PLATE_RECOG_REGION_PARAM +{ + BYTE byMode; //ͣ0-Σ1- + BYTE byRes1[3]; + union + { + NET_VCA_RECT struRect; // + NET_ITC_POLYGON struPolygon; // + }uRegion; + BYTE byRes[16]; // +}NET_ITC_PLATE_RECOG_REGION_PARAM, *LPNET_ITC_PLATE_RECOG_REGION_PARAM; + +//IOٲ +typedef struct tagNET_ITC_SINGLE_IOSPEED_PARAM +{ + BYTE byEnable; //Ƿã0-ã1- + BYTE byTrigCoil1; //һȦIO0-IO1,1-IO2,2-IO3,3-IO4,4-IO5,5-IO6 + BYTE byCoil1IOStatus;//һȦIO״̬0-½أĬϣ1-أ2-غ½أ3-ߵƽ4-͵ƽ + BYTE byTrigCoil2; //ڶȦIO0-IO1,1-IO2,2-IO3,3-IO4,4-IO5,5-IO6 + BYTE byCoil2IOStatus;//ڶȦIO״̬0-½أĬϣ1-أ2-غ½أ3-ߵƽ4-͵ƽ + BYTE byRelatedDriveWay;//ij + BYTE byTimeOut;//ʱʱ䣨Ĭ10λs + BYTE byRelatedIOOutEx;//0λʾIO1Դƣ0-1- ֹ֧8(byRelatedIOOutֶ) + DWORD dwDistance;//Ȧ루Ĭ1000,λ + BYTE byCapSpeed;//ٶȣĬ30λkm/h + BYTE bySpeedLimit;//ֵĬ60λkm/h + BYTE bySpeedCapEn; //Ƿóץģ0-1- + BYTE bySnapTimes1; //Ȧ1ץĴĬϲץģ0-ץģ0-Ĵ5 + BYTE bySnapTimes2; //Ȧ2ץĴĬ10-ץģ0-Ĵ5 + BYTE byBigCarSpeedLimit; //󳵳ֵ + BYTE byBigCarSignSpeed;//־()λkm/h(3.7Ver) + BYTE byIntervalType; //ͣĬϰʱ䣩0-ʱЧ,1-Ч + WORD wInterval1[MAX_INTERVAL_NUM];//Ȧ1ļʱ䣨λmsļ루λףbyIntervalTypeΪ0ʱʾʱ䣬byIntervalTypeΪ1ʱʾ + WORD wInterval2[MAX_INTERVAL_NUM];//Ȧ2ļʱ䣨λmsļ루λףbyIntervalTypeΪ0ʱʾʱ䣬byIntervalTypeΪ1ʱʾ + BYTE byRelatedIOOut[MAX_IOOUT_NUM]; //IO(ͬʱ)0ʾIO11ʾIO2Դƣ0-1- + BYTE byFlashMode; //˸ģʽ0-ͬʱ1- + BYTE byLaneType; //ͣ0-δá1-ٹ·2-п·0xff-· + BYTE byCarSignSpeed;//־٣λkm/h(3.7Ver) + BYTE byUseageType; //;ͣITC_LANE_USEAGE_TYPE + NET_ITC_PLATE_RECOG_REGION_PARAM struPlateRecog[MAX_LANEAREA_NUM]; //ʶ(ʶ1һ) + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byLowSpeedLimit; //С޵ֵλkm/h + BYTE byBigCarLowSpeedLimit; //޵ֵλkm/h + BYTE byLowSpeedCapEn; //Ƿõץģ0-1- + BYTE byEmergencyCapEn; //ǷӦץģ0-1- + BYTE byRes[27]; +}NET_ITC_SINGLE_IOSPEED_PARAM, *LPNET_ITC_SINGLE_IOSPEED_PARAM; + +//IOٲ +typedef struct tagNET_ITC_POST_IOSPEED_PARAM +{ + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + NET_ITC_SINGLE_IOSPEED_PARAM struSingleIOSpeed[MAX_IOSPEED_GROUP_NUM]; //IO + BYTE byRes[32]; +}NET_ITC_POST_IOSPEED_PARAM, *LPNET_ITC_POST_IOSPEED_PARAM; + +//IO +typedef struct tagNET_ITC_SINGLEIO_PARAM +{ + BYTE byDefaultStatus;//IOĬ״̬0-͵ƽ1-ߵƽ + BYTE byRelatedDriveWay;//ij + BYTE bySnapTimes; //ץĴĬ10-ץģ0-Ĵ5 + BYTE byRelatedIOOutEx;//0λʾIO1Դƣ0-1- ֹ֧8(byRelatedIOOutֶ) + NET_ITC_INTERVAL_PARAM struInterval; //ץļ + BYTE byRelatedIOOut[MAX_IOOUT_NUM]; //IOڣͬʱ + BYTE byFlashMode; //˸ģʽ0-ͬʱ1- + BYTE byEnable;//IOʹܱ־0-ã1- (Remark:֧ bySupport&0x20ʾǷֵ֧IOIOʹ ʱЧ) + BYTE byUseageType; //;ͣITC_LANE_USEAGE_TYPE + BYTE byEmergencyCapEn; //ǷӦץģ0-1- + NET_ITC_PLATE_RECOG_REGION_PARAM struPlateRecog[MAX_LANEAREA_NUM]; //ʶ + BYTE byRes[24]; +}NET_ITC_SINGLEIO_PARAM, *LPNET_ITC_SINGLEIO_PARAM; + +//IO +typedef struct tagNET_ITC_POST_SINGLEIO_PARAM +{ + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + NET_ITC_SINGLEIO_PARAM struSingleIO[MAX_IOIN_NUMEX]; //IO +}NET_ITC_POST_SINGLEIO_PARAM, *LPNET_ITC_POST_SINGLEIO_PARAM; + +typedef struct tagNET_ITC_LANE_PARAM +{ + BYTE byEnable; //Ƿøó0-ã1- + BYTE byRelatedDriveWay;//ij + WORD wDistance; //Ȧ룬ٶ + WORD wTrigDelayTime; //ӳʱ䣨Ĭ200λ + BYTE byTrigDelayDistance; //ӳپ루Ĭ0λ + BYTE bySpeedCapEn; //Ƿóץģ0-1- + BYTE bySignSpeed;//־٣λkm/h + BYTE bySpeedLimit;//ֵλkm/h + BYTE bySnapTimes; //ץĴĬ10-ץģ0-Ĵ5 + BYTE byOverlayDriveWay; //OSDӵij + NET_ITC_INTERVAL_PARAM struInterval; //ץļ + BYTE byRelatedIOOut[MAX_IOOUT_NUM]; //IOڣͬʱ + BYTE byFlashMode; //˸ģʽ0-ͬʱ1- + BYTE byCartSignSpeed;//־()λkm/h + BYTE byCartSpeedLimit;//ֵ󳵣λkm/h + BYTE byRelatedIOOutEx;//0λʾIO1Դƣ0-1- ֹ֧8(byRelatedIOOutֶ) + NET_ITC_PLATE_RECOG_REGION_PARAM struPlateRecog[MAX_LANEAREA_NUM]; //ʶ + BYTE byLaneType; //ͣ0-δá1-ٹ·2-п·0xff-· + BYTE byUseageType; //;ͣITC_LANE_USEAGE_TYPE + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byLowSpeedLimit; //С޵ֵλkm/h + BYTE byBigCarLowSpeedLimit; //޵ֵλkm/h + BYTE byLowSpeedCapEn; //Ƿõץģ0-1- + BYTE byEmergencyCapEn; //ǷӦץģ0-1- + BYTE byRes[9]; +}NET_ITC_LANE_PARAM, *LPNET_ITC_LANE_PARAM; + +//RS485 +typedef struct tagNET_ITC_POST_RS485_PARAM +{ + BYTE byRelatedLaneNum;//ij + BYTE byTriggerSpareMode; //ģʽ0-Ĭϣ1-Ȧģʽ,2-ڻϳģʽ + BYTE byFaultToleranceTime;//ݴʱ(λ:)ڼ⳵Ƿʱ + BYTE byRes1; + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + NET_ITC_LANE_PARAM struLane[MAX_ITC_LANE_NUM]; //ij + BYTE byRes[32]; +}NET_ITC_POST_RS485_PARAM, *LPNET_ITC_POST_RS485_PARAM; + +typedef struct tagNET_ITC_RADAR_PARAM +{ + BYTE byRadarType; //״ͣ0-״,1-״2-άǣ3-΢4,״IOչ(˲ڿȦпڽʹãRS485״ﲻʹ),0xff- + BYTE byLevelAngle; //ˮƽɽǶ,ĬΪ25(090) + WORD wRadarSensitivity; //״ + WORD wRadarSpeedValidTime;//״ٶЧʱ(0~2000] ,0ʾ֧ + BYTE byRes1[2]; + float fLineCorrectParam;//Խ[0.0~2.0] + int iConstCorrectParam;//[-100~100] + BYTE byRes2[8]; +}NET_ITC_RADAR_PARAM, *LPNET_ITC_RADAR_PARAM; + +typedef struct tagNET_ITC_RS485_ACCESS_INFO_COND //ṹ +{ + DWORD dwSize; + DWORD dwChannel; + DWORD dwTriggerModeType; + BYTE byAssociateRS485No;//RS485 15 (Ψһֵ) + // BYTE byModeType; //0Ԥ1״23źŵƼ + BYTE byRes[15]; +}NET_ITC_RS485_ACCESS_INFO_COND,*LPNET_ITC_RS485_ACCESS_INFO_COND; + +typedef struct tagNET_ITC_RADAR_INFO_PARAM +{ + NET_ITC_RADAR_PARAM struRadarParam;//24 + BYTE byAssociateLaneNo;//ij199 (ֵڲͬRS485ظ) + BYTE byRes[103]; +}NET_ITC_RADAR_INFO_PARAM, *LPNET_ITC_RADAR_INFO_PARAM; + +typedef union tagNET_ITC_ACCESS_DEVINFO_PARAM_UNION +{ + BYTE uLen[128]; + NET_ITC_RADAR_INFO_PARAM struRadarInfoParam;//״ +}NET_ITC_ACCESS_DEVINFO_PARAM_UNION, *LPNET_ITC_ACCESS_DEVINFO_PARAM_UNION; + +typedef struct tagNET_ITC_RS485_ACCESS_CFG //144 ýṹ +{ + DWORD dwSize; + BYTE byModeType;//0Ԥbit1״bit2bit3źŵƼ + BYTE byRes[3]; + NET_ITC_ACCESS_DEVINFO_PARAM_UNION uITCAccessDevinfoParam; //64 + BYTE byRes1[12]; +}NET_ITC_RS485_ACCESS_CFG,*LPNET_ITC_RS485_ACCESS_CFG; + +//2013-07-09 ״չ +typedef struct tagNET_ITC_RS485_ACCESS_INFO +{ + DWORD dwSize; + NET_ITC_RADAR_PARAM struRadar[MAX_ITC_LANE_NUM];//೵״Ϣ + //ʾֵ֧ĬΪ0ʾ мּ֧ + BYTE byRes[20]; +}NET_ITC_RS485_ACCESS_INFO, *LPNET_ITC_RS485_ACCESS_INFO; + + +//RS485״ﴥ +typedef struct tagNET_ITC_POST_RS485_RADAR_PARAM +{ + BYTE byRelatedLaneNum;//ij + BYTE byRes1[3]; + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + NET_ITC_LANE_PARAM struLane[MAX_ITC_LANE_NUM]; //ij + NET_ITC_RADAR_PARAM struRadar; //״ + BYTE byRes[32]; +}NET_ITC_POST_RS485_RADAR_PARAM, *LPNET_ITC_POST_RS485_RADAR_PARAM; + +typedef struct tagNET_ITC_VTLANE_PARAM +{ + BYTE byRelatedDriveWay;//ij + BYTE bySpeedCapEn; //Ƿóץģ0-1- + BYTE bySignSpeed;//־٣λkm/h + BYTE bySpeedLimit;//ֵλkm/h + BYTE bySnapTimes; //ץĴĬ10-ץģ0-Ĵ5 + BYTE byBigCarSignSpeed;///*󳵱־٣λkm/h*/ + BYTE byBigCarSpeedLimit;/*ֵλkm/h*/ + BYTE byRelatedIOOutEx;//0λʾIO1Դƣ0-1- ֹ֧8(byRelatedIOOutֶ) + NET_ITC_INTERVAL_PARAM struInterval; //ץļ + BYTE byRelatedIOOut[MAX_IOOUT_NUM]; //IOڣͬʱ + BYTE byFlashMode; //˸ģʽ0-ͬʱ1- + BYTE byLowSpeedLimit;/*޵٣λkm/h*/ + BYTE byBigCarLowSpeedLimit; /*޵٣λkm/h*/ + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + NET_ITC_PLATE_RECOG_REGION_PARAM struPlateRecog[MAX_LANEAREA_NUM]; //ʶ + NET_VCA_LINE struLine; // +}NET_ITC_VTLANE_PARAM, *LPNET_ITC_VTLANE_PARAM; + +typedef struct tagNET_ITC_VTCOIL_INFO +{ + NET_VCA_RECT struLaneRect; /*Ȧ*/ + BYTE byTrigFlag; //־0-ͷ1-β2-ͷ/β + BYTE byTrigSensitive; //ȣ1-100 + BYTE byRelatedIOOut[MAX_IOOUT_NUM]; //IO(ͬʱ)0ʾIO11ʾIO2Դƣ0-1- + BYTE byFlashMode; //˸ģʽ0-ͬʱ1- + BYTE byLaneType; //ͣ0-δá1-ٹ·2-п·0xff-· + BYTE byEnableRadar; //Ƿ״٣0-1- + NET_ITC_VTLANE_PARAM struLane; //ij + //;ͣITC_LANE_USEAGE_TYPEʹ18(3.7Ver) + BYTE byUseageType; + //ʻITC_LANE_CAR_DRIVE_DIRECT(3.7Ver) + BYTE byCarDriveDirect; + BYTE byRes[30]; +}NET_ITC_VTCOIL_INFO, *LPNET_ITC_VTCOIL_INFO; + +//Ȧ +typedef struct tagNET_ITC_POST_VTCOIL_PARAM +{ + BYTE byRelatedLaneNum;//ij + BYTE byIsDisplay; //ƵǷʾȦ0-ʾ1-ʾ + BYTE byLoopPos; //䴥ȦƫĬ10 + BYTE byPolarLenType; /*ƫͣ0ƫ񾵣1ʩ͵ƫ񾵡*/ + BYTE byDayAuxLightMode; /*츨ģʽ0޸1LED2*/ + BYTE byVideoLaneNO; //ƵοȵIJο + BYTE byVideoLowTh; /*ƵοȵֵʼֵĬ40*/ + BYTE byVideoHighTh; /*ƵοȸֵʼֵĬ55*/ + BYTE byRecordMode; //¼־0-¼1-¼ + BYTE bySnapMode;//ץģʽ0-Ƶģʽ1-ģʽ + /*ٷʽ0-٣0x1-״٣0x2-Ƶ*/ + BYTE bySpeedDetector; + BYTE byRes2; + WORD wResolutionX;/* 豸ǰֱʿ*/ + WORD wResolutionY;/* 豸ǰֱʸ*/ + DWORD dwDayInitExp; /*Ƶعʱijʼֵ2000*/ + DWORD dwDayMaxExp; /*Ƶعʱֵ20000*/ + DWORD dwNightExp; /*Ƶعʱֵ3000*/ + DWORD dwSnapExp; /*ץعʱ*/ + BYTE byDayInitGain; /*Ƶijʼֵ200*/ + BYTE byDayMaxGain; /*Ƶֵ400*/ + BYTE byNightGain; /*Ƶ*/ + BYTE bySnapGain; /*ץ*/ + DWORD dwSceneMode; //ģʽ SCENE_MODE + NET_DVR_GEOGLOCATION struGeogLocation; //ַλ(Ĭ㽭) + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + NET_ITC_VTCOIL_INFO struVtCoil[MAX_VL_NUM]; //Ȧ + NET_ITC_RADAR_PARAM struRadar; //״ + NET_VCA_LINE struLine; //ҳ + //ΥͣλʾITC_VIOLATION_DETECT_TYPE0-ã1-(3.7Ver) + DWORD dwVioDetectType; + BYTE byDebugMode; /*ģʽ0-ã1-*/ + BYTE byRes[11]; +}NET_ITC_POST_VTCOIL_PARAM, *LPNET_ITC_POST_VTCOIL_PARAM; + +//IO̵Ʋ +typedef struct tagNET_ITC_SINGLE_IOTL_PARAM +{ + BYTE byEnable; //Ƿã0-ã1- + BYTE byLightIO; //̵IO0-IO1,1-IO2,2-IO3,3-IO4,4-IO5,5-IO6 + BYTE byTrafficLight; //̵Ч״̬0-ߵƽƣ͵ƽ̵ƣ1-ߵƽ̵ƣ͵ƽ + BYTE byTrigIO;//IOţ0-IO1,1-IO2,2-IO3,3-IO4,4-IO5,5-IO6 + BYTE byTrigIOStatus;//IOڵ״̬Ĭ00-½أ1-أ2-غ½أ3-ߵƽ4-͵ƽ + BYTE byRelatedDriveWay;//ij + BYTE byRecordEnable;//¼־0-¼1-¼ + BYTE byRecordType;//¼ͣ0-Ԥ¼1-ʱ¼ + BYTE byPreRecordTime;//¼ƬԤ¼ʱ䣨Ĭ0λ + BYTE byRecordDelayTime;//¼Ƭʱʱ䣨Ĭ0λ + BYTE byRecordTimeOut;//¼ʱʱ䣨룩 + BYTE byRedSnapTimes; //ץĴ0-ץģ0-Ĵ5 + BYTE byGreenSnapTimes; //̵ץĴ0-ץģ0-Ĵ5 + BYTE byRelatedIOOutEx;//0λʾIO1Դƣ0-1- ֹ֧8(byRelatedIOOutֶ) + BYTE byRes1; + BYTE byIntervalType; //ͣĬϰʱ䣩0-ʱЧ,1-Ч + WORD wRedInterval[MAX_INTERVAL_NUM];//ļʱ䣨λmsļ루λףbyIntervalTypeΪ0ʱʾʱ䣬byIntervalTypeΪ1ʱʾ + WORD wGreenInterval[MAX_INTERVAL_NUM];//̵ļʱ䣨λmsļ루λףbyIntervalTypeΪ0ʱʾʱ䣬byIntervalTypeΪ1ʱʾ + BYTE byRelatedIOOut[MAX_IOOUT_NUM]; //IOڣͬʱ + BYTE byFlashMode; //˸ģʽ0-ͬʱ1- + BYTE byRes2[3]; + NET_ITC_PLATE_RECOG_REGION_PARAM struPlateRecog[MAX_LANEAREA_NUM]; //ʶ + BYTE byRes[32]; +}NET_ITC_SINGLE_IOTL_PARAM, *LPNET_ITC_SINGLE_IOTL_PARAM; + +//羯IO̵Ʋ +typedef struct tagNET_ITC_EPOLICE_IOTL_PARAM +{ + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + NET_ITC_SINGLE_IOTL_PARAM struSingleIOTL[MAX_IOSPEED_GROUP_NUM]; //IO̵Ʋ + BYTE byRes[32]; +}NET_ITC_EPOLICE_IOTL_PARAM, *LPNET_ITC_EPOLICE_IOTL_PARAM; + +typedef enum _ITC_SERIAL_PROTOCOL_ +{ + ITC_PROTOCOL_UNKNOW = 0, /*δ֪*/ + ITC_SINGLE_COIL_PROTOCOL_MODE1 = 1, /*ȦЭģʽ1ʾΪ_1_1_1_1뿪뿪ʱץģ뿪ʶϴ3ųͼƬͳƽ*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE1 = 2, /*˫ȦЭģʽ1ʾΪ˫_1_1_2_11뿪1뿪2ץģ뿪1ʶϴ3ųͼƬͳƽĬϣ*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE2 = 3, /*˫ȦЭģʽ2ʾΪ˫_1_2_2_1뿪1뿪2뿪2ʱץģ뿪1ʶϴ3ųͼƬͳƽ*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE3 = 4, /*˫ȦЭģʽ3ʾΪ˫_2_1_2_12뿪1뿪2ʱץģ뿪1ʶϴ3ųͼƬͳƽ*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE4 = 5, /*˫ȦЭģʽ4ʾΪ˫/_2_2_2_12뿪2뿪2ʱץģ뿪1ʶϴ3ųͼƬͳƽ*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE5 = 6, /*˫ȦЭģʽ5ʾΪ˫/_2_2_2_22뿪2뿪2ʱץģ2뿪1ʶϴ3ųͼƬŶȸߵijƽĬϣ*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE6 = 7, /*˫ȦЭģʽ6ʾΪ˫/_1_2_2_21뿪2뿪2ʱץģ1뿪1ʶϴ3ųͼƬŶȸߵijƽ*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE7 = 8, /*˫ȦЭģʽ7ʾΪ˫_1_1_2_11뿪1뿪2ʱץģ뿪1ʶϴͼƬ뿪1Ƶ1뿪1뿪2ʱͳƽ*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE8 = 9, /*˫ȦЭģʽ8ʾΪ˫_1_1_2_21뿪1뿪2ʱץģ1뿪1ʶϴͼƬ뿪1Ƶ1뿪1뿪2ʱŶȸߵijƽĬϣ*/ + ITC_SINGLE_COIL_PROTOCOL_MODE2 = 10, /*ȦЭģʽ2ʾΪ_1_1_1_2뿪뿪ʱץģ뿪ʶϴͼƬ뿪Ƶ뿪뿪ʱŶȸߵijƽĬϣ*/ + ITC_OTHER_PROTOCOL = 0xff /*Э(demoã3.3֮汾demoͿؼִֵ֧)*/ +}ITC_SERIAL_PROTOCOL; + +//߼ץ +typedef enum _ITC_NORMAL_PASS_SERIAL_PROTOCOL_ +{ + ITC_NORMAL_PASS_SERIAL_UNKNOW = 0, //δ֪ + ITC_NORMAL_PASS_PROTOCOL_MODE1 = 1, //Ȧ뿪ץģʶϴĬϣ + ITC_NORMAL_PASS_PROTOCOL_MODE2 =2, //Ȧ뿪ץģʶϴ뿪ͼƬŶȸߵijƽ + ITC_NORMAL_PASS_PROTOCOL_MODE3 =3, //˫Ȧ뿪1ץģʶϴĬϣ + ITC_NORMAL_PASS_PROTOCOL_MODE4 =4, //˫Ȧ1뿪1ץģʶϴ뿪1ͼƬŶȸߵijƽ + ITC_NORMAL_PASS_PROTOCOL_MODE5 =5, //˫Ȧ2뿪1ץģʶϴ뿪1ͼƬŶȸߵijƽ +}ITC_NORMAL_PASS_SERIAL_PROTOCOL; + +//Υ߼ץ +typedef enum _ITC_INVERSE_SERIAL_PROTOCOL_ +{ + ITC_INVERSE_SERIAL_UNKNOW = 0, //δ֪ + ITC_INVERSE_PROTOCOL_MODE1 = 1, //ץ + ITC_INVERSE_PROTOCOL_MODE2 =2, //1ץ2š뿪2ץģ1žʶϴ3ųͼƬŶȸߵijƽ + ITC_INVERSE_PROTOCOL_MODE3 =3, //1뿪2ץģ1ʶϴ2ųͼƬͳƽ +}ITC_INVERSE_SERIAL_PROTOCOL; + +//Υ߼ץ +typedef enum _ITC_SPEED_SERIAL_PROTOCOL_ +{ + ITC_SPEED_SERIAL_UNKNOW = 0, //δ֪ + ITC_SPEED_PROTOCOL_MODE1 = 1, //ץ + ITC_SPEED_PROTOCOL_MODE2 =2, //˫/Ȧ뿪1뿪2뿪2ʱץģ뿪1ʶϴͼƬ뿪1뿪1뿪2뿪2ʱͳƽ + ITC_SPEED_PROTOCOL_MODE3 =3, //˫/Ȧ뿪1뿪2뿪2ʱץģ뿪1ʶϴͼƬ뿪1뿪1뿪2ͳƽ +}ITC_SPEED_SERIAL_PROTOCOL; + +// +typedef struct tagNET_ITC_SERIAL_INFO +{ + BYTE bySerialProtocol; //ЭͣITC_SERIAL_PROTOCOL + BYTE byIntervalType; //ͣĬϰʱ䣩0-ʱЧ,1-Ч + WORD wInterval;//ļʱ䣨λmsļ루λףbyIntervalTypeΪ0ʱʾʱ䣬byIntervalTypeΪ1ʱʾ + BYTE byNormalPassProtocol; //ץЭͣITC_NORMAL_PASS_SERIAL_PROTOCOL + BYTE byInverseProtocol; //ץЭͣITC_INVERSE_SERIAL_PROTOCOL + BYTE bySpeedProtocol; //ץЭͣITC_SPEED_SERIAL_PROTOCOL + BYTE byRes[9]; +}NET_ITC_SERIAL_INFO, *LPNET_ITC_SERIAL_INFO; + +typedef struct tagNET_ITC_EPOLICE_LANE_PARAM +{ + BYTE byEnable; //Ƿøó0-ã1- + BYTE byRelatedDriveWay;//ij + WORD wDistance; //Ȧ룬λ + BYTE byRecordEnable;//¼־0-¼1-¼ + BYTE byRecordType;//¼ͣ0-Ԥ¼1-ʱ¼ + BYTE byPreRecordTime;//¼ƬԤ¼ʱ䣨Ĭ0λ + BYTE byRecordDelayTime;//¼Ƭʱʱ䣨Ĭ0λ + BYTE byRecordTimeOut;//¼ʱʱ䣨룩 + BYTE bySignSpeed;//־(ʽ羯ģʽЧ)λkm/h + BYTE bySpeedLimit;//ֵ(ʽ羯ģʽЧ)λkm/h + BYTE byOverlayDriveWay; //OSDӵij + NET_ITC_SERIAL_INFO struSerialInfo; // + BYTE byRelatedIOOut[MAX_IOOUT_NUM]; //IOڣͬʱ + BYTE byFlashMode; //˸ģʽ0-ͬʱ1- + BYTE bySerialType; //ͣ0-˽г1-˽OEM2- + BYTE byRelatedIOOutEx;//0λʾIO1Դƣ0-1- ֹ֧8(byRelatedIOOutֶ) + BYTE bySnapPicPreRecord; //ץͼƬԤ¼ʱ㣻0-ĬֵڶͼƬ1-һͼƬ2-ڶͼƬ3-ͼƬ + NET_ITC_PLATE_RECOG_REGION_PARAM struPlateRecog[MAX_LANEAREA_NUM]; //ʶ + BYTE byBigCarSignSpeed; ///*󳵱־٣λkm/h*/ + BYTE byBigCarSpeedLimit;/*ֵλkm/h*/ + BYTE byRedTrafficLightChan;//ͨţ116̵Ƽ + BYTE byYellowTrafficLightChan;//Ƶͨţ116̵Ƽ + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byRes3[11]; +}NET_ITC_EPOLICE_LANE_PARAM, *LPNET_ITC_EPOLICE_LANE_PARAM; + +//羯/ʽ羯RS485 +typedef struct tagNET_ITC_EPOLICE_RS485_PARAM +{ + BYTE byRelatedLaneNum;//ij + BYTE byTrafficLightSignalSrc;//ͨźԴ 0 1̵Ƽ + BYTE byRes1[2]; + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + NET_ITC_EPOLICE_LANE_PARAM struLane[MAX_ITC_LANE_NUM]; //ij + BYTE byRes[32]; +}NET_ITC_EPOLICE_RS485_PARAM, *LPNET_ITC_EPOLICE_RS485_PARAM; + +//Բṹ +typedef struct tagNET_ITC_LANE_LOGIC_PARAM +{ + BYTE byUseageType; //;ͣITC_LANE_USEAGE_TYPE + BYTE byDirectionType; //ͣITC_LANE_DIRECTION_TYPE + BYTE byCarDriveDirect; //ʻITC_LANE_CAR_DRIVE_DIRECT + BYTE byRes[33]; // +}NET_ITC_LANE_LOGIC_PARAM, *LPNET_ITC_LANE_LOGIC_PARAM; + +//Ƶ羯߽ṹ +typedef struct tagNET_ITC_LINE +{ + NET_VCA_LINE struLine; //߲ + BYTE byLineType; //ͣITC_LINE_TYPE + BYTE byRes[7]; +}NET_ITC_LINE, *LPNET_ITC_LINE; + +typedef struct tagNET_ITC_SNAPMODE_PARAM +{ + BYTE byVehicleCapMode;//ץģʽ0-Ƶģʽ1-ģʽ + BYTE byNoVehicleCapMode;//ǻץģʽ0-Ƶģʽ1-ģʽ + BYTE byPasserCapMode;//ץģʽ0-Ƶģʽ1-ģʽ + BYTE byRes[29]; +}NET_ITC_SNAPMODE_PARAM, *LPNET_ITC_SNAPMODE_PARAM; + +//size = 128 +typedef struct tagNET_ITC_HVT_EC_PARAM +{ + DWORD dwCapShutter; //ץĿ0~65535 + WORD wCapGain; //ץ0100 + BYTE byRes[2]; + DWORD dwDayTimeVideoShutter; //عʱֵ + WORD wDayTimeVideoGain; //ֵ + WORD wNightVideoGain; //ֵ + DWORD wNightVideoShutter; //عʱֵ + BYTE byRes1[108]; +}NET_ITC_HVT_EC_PARAM, *LPNET_ITC_HVT_EC_PARAM; + +typedef struct tagNET_ITC_LANE_HVT_PARAM +{ + BYTE byLaneNO; //ij 1~255ڵӺϴ + BYTE bySignSpeed; //־٣λkm/h 0255 70 + BYTE bySpeedLimit; //ֵλkm/h 0255 80 ʵЧ + BYTE byBigCarSignSpeed;///*󳵱־٣λkm/h*/ + BYTE byBigCarSpeedLimit;/*ֵλkm/h*/ + BYTE bySpeedCapEn; //Ƿóץģ0-1- + BYTE byCaptureCount;//ץ15() + BYTE byRelatedIOOut; /*IO(ͬʱ)λʾIOڣ0λʾIO1Դƣ0-1-*/ + BYTE byFlashMode; /*˸ģʽ0-ͬʱ1-*/ + BYTE byEnableRadar; //Ƿ״٣0-1- + BYTE byChangeLaneEnable; //Υ±ץʹܣ0-رգ1- + BYTE byChangeLaneCapNo; //Υ±ץ2-3 + DWORD dwCapTarget; //ץ bit0 ʾ bit1 ʾǻ bit2 ʾ 0ʾѡ 1ʾѡ + NET_ITC_INTERVAL_PARAM struInterval; //ץļ + BYTE byRes3[24]; + NET_ITC_LANE_LOGIC_PARAM struLane; //ԣbyUseageTypebyCarDriveDirect + NET_ITC_LINE struLeftLaneLine; //󳵵ߣΪߡʵߡߺ˫ + NET_ITC_LINE struRightLaneLine; //ҳߣΪߡʵߡߺ˫ + NET_ITC_POLYGON struPlateRecog; //ʶ + NET_ITC_POLYGON struTraceArea; //Ƶ + NET_VCA_LINE struForwardTrigLine; //򴥷ߣһ߶ΣĶ˵λãĿǰֻ֧ˮƽãӿڰ߶ε˵㱣档һΪѴλã + NET_VCA_LINE struBackwardTrigLine; //򴥷ߣһ߶ΣĶ˵λãĿǰֻ֧ˮƽãӿڰ߶ε˵㱣棨һΪѴλã + NET_VCA_LINE struLeftTrigLine; //ߴߣһ߶ΣĶ˵λãĿǰֱִֻ֧ãӿڰ߶ε˵㱣棨һΪ߽복Ѵλã + NET_VCA_LINE struRightTrigLine; //ұߴߣһ߶ΣĶ˵λãĿǰֱִֻ֧ãӿڰ߶ε˵㱣棨һΪұ߽복Ѵλã + BYTE byRes4[60]; +}NET_ITC_LANE_HVT_PARAM, *LPNET_ITC_LANE_HVT_PARAM; + +typedef struct tagNET_ITC_POST_HVT_PARAM +{ + BYTE byLaneNum;//ʶij1-6 + BYTE bySceneMode;//0-δ֪1-·2-С + BYTE byRoadExpBright;//·ȣƵع֮һ޻ʱݴֵƵع + BYTE byPlateExpBright;//ȣƵع֮һлͨʶ𵽳ʱݴֵƵع + NET_ITC_POLYGON struDetectArea; //Ƶ + NET_ITC_SNAPMODE_PARAM struCapMode;//ץģʽ + NET_ITC_HVT_EC_PARAM struEcParam; //عƲ + NET_ITC_LANE_HVT_PARAM struLaneParam[MAX_ITC_LANE_NUM]; // + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + NET_DVR_GEOGLOCATION struGeogLocation; //ַλãĬ㽭 + BYTE byRes[324]; +}NET_ITC_POST_HVT_PARAM, *LPNET_ITC_POST_HVT_PARAM; + +/*************************MPRģʽ begin 2013-12-07****************/ +typedef struct tagNET_ITC_LANE_MPR_PARAM +{ + BYTE byLaneNO; + union + { + BYTE uLen[4]; + struct + { + BYTE byIONo;//IO[1, byIoInNum+1] С1ʼֵݽӿNET_DVR_SNAP_ABILITYֶbyIoInNum + BYTE byTriggerType;//0-½أ1- + BYTE byRes1[2]; + }struIO;//IOģʽЧ + struct + { + BYTE byRelateChan;//ͨ[1,16] + BYTE byRes2[3]; + }struRS485; + }uTssParamInfo; + BYTE byCarDriveDirect; //ʻ ITC_LANE_CAR_DRIVE_DIRECT + BYTE byRes[58]; + NET_ITC_LINE struLaneLine;// + NET_ITC_POLYGON struPlateRecog;//ʶ + //ͣοITC_RELA_LANE_DIRECTION_TYPEtypedef struct tagNET_ITS_PICTURE_INFO + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byRes1[255]; +}NET_ITC_LANE_MPR_PARAM,*LPNET_ITC_LANE_MPR_PARAM; + +typedef struct tagNET_ITC_POST_MPR_PARAM +{ + BYTE byEnable; + BYTE byLaneNum; + BYTE bySourceType;//0-MPRƵ,1-IOظȦ,2-RS485Ĵź + BYTE byPicUploadType;//ͼƬϴͣ0~ȫϴ1-ϴ2-ϴ + BYTE byRoadType;//ģʽѡ 0-ڣ1-е·2-Զ壬3-룬4-, 5-ΰ(ģʽ¿Լ⳵Ƚϻûгߵij) + BYTE byRes2; + WORD wCustomDelayTime;//Զץʱʱ䣨byRoadTypeΪ "Զ"ʱЧΧ[0,15000]ms + BYTE byRes[56]; + NET_ITC_LINE struLaneBoundaryLine;//߽ߣ߽߳ߣ + NET_ITC_PLATE_RECOG_PARAM struPlateRecog;//ʶ 40 + NET_ITC_LANE_MPR_PARAM struLaneParam[MAX_ITC_LANE_NUM/*6*/]; + char szSceneName[NAME_LEN/*32*/]; // + NET_VCA_LINE struSnapLine;//ץߣļ跽ʽΪװЧ4.5NET_DVR_CAMERA_SETUPCFGṹbyErectMethodֶΪ1ʱ + BYTE byRes1[392]; +}NET_ITC_POST_MPR_PARAM,*LPNET_ITC_POST_MPR_PARAM; +/*************************MPRģʽ end 2013-12-07****************/ + +typedef struct tagNET_DVR_VIA_LANE_PARAM +{ + BYTE byLaneNO; // + BYTE byRes[63]; // + NET_ITC_LANE_LOGIC_PARAM struLogicParam; //Բ + NET_ITC_LINE struLaneLine;// + NET_ITC_POLYGON struPlateRecog;//ʶ + BYTE byRes1[300]; // +} NET_DVR_VIA_LANE_PARAM,*LPNET_DVR_VIA_LANE_PARAM; + +typedef struct tagNET_DVR_VIA_VTCOIL_PARAM +{ + BYTE byEnable; //ʹ 0- 1- + BYTE byLaneNum; // + BYTE byRes[62]; // + NET_ITC_LINE struLaneBoundaryLine;//߽ߣ߽߳ߣ + NET_DVR_VIA_LANE_PARAM struLaneParam[MAX_ITC_LANE_NUM/*6*/]; + NET_ITC_PLATE_RECOG_PARAM struPlateRecog;//ʶ + BYTE byRes1[624];// +}NET_DVR_VIA_VTCOIL_PARAM,*LPNET_DVR_VIA_VTCOIL_PARAM; + +//ӿ +typedef struct tagNET_DVR_TRIGGER_COND +{ + DWORD dwSize; //ṹС + DWORD dwChannel; //ͨ + DWORD dwTriggerMode;//ʽο ITC_TRIGGERMODE_TYPE + BYTE byDetSceneID;//ⳡ[1,4], IPCĬ0 + BYTE byRes[63]; // +}NET_DVR_TRIGGER_COND,*LPNET_DVR_TRIGGER_COND; + +typedef struct tagNET_ITC_LANE_IMT_PARAM +{ + BYTE byLaneNO;//ӳ + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byRes[146]; + NET_ITC_LINE struLaneLine;// + BYTE byRes1[256]; +}NET_ITC_LANE_IMT_PARAM,*LPNET_ITC_LANE_IMT_PARAM; + +typedef struct tagNET_ITC_POST_IMT_PARAM +{ + BYTE byEnable; + BYTE byLaneNum; + BYTE bySnapMode; //ץͣ0~1~ + BYTE byRes[61]; + NET_ITC_PLATE_RECOG_PARAM struPlateRecog;//ʶ + NET_ITC_LINE struLaneBoundaryLine;//߽ߣұ߳ı߽ߣ + NET_ITC_LANE_IMT_PARAM struLaneParam[MAX_ITC_LANE_NUM/*6*/]; + BYTE byRes1[1584]; +}NET_ITC_POST_IMT_PARAM,*LPNET_ITC_POST_IMT_PARAM; + +typedef struct tagNET_ITC_LANE_PRS_PARAM +{ + BYTE byLaneNO; + union + { + BYTE uLen[4]; + struct + { + BYTE byIONo;//IO[1,4] + BYTE byTriggerType;//0-½أ1- + BYTE byRes1[2]; + }struIO;//IOģʽЧ + struct + { + BYTE byRelateChan;//ͨ[1,16] + BYTE byRes2[3]; + }struRS485; + }uTssParamInfo; + BYTE byRes[59]; + NET_ITC_LINE struLaneLine;// + NET_ITC_POLYGON struPlateRecog;//ʶ + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byRes2[3]; + NET_ITC_LINE struTrigLine;// + BYTE byRes1[228]; +}NET_ITC_LANE_PRS_PARAM,*LPNET_ITC_LANE_PRS_PARAM; + + +typedef struct tagNET_ITC_POST_PRS_PARAM +{ + BYTE byEnable; + BYTE byLaneNum; + BYTE bySourceType;//0-Ƶ,1-IOظȦ,2-RS485Ĵź + BYTE bySnapMode;//0-ȫͼ1-ȫͼ+д + BYTE byCapMode;//bySourceTypeΪ0Ƶʱʹã0-Ƶģʽ1-ģʽ + BYTE byNoPlatCarCap;//Ƿ޳ץ 0- 1- + BYTE bySceneMode;//ģʽ:0-ͨڳ1-շվģʽ(ͣʱϳ)2-ͣڳ(ҹϰ) + BYTE byRes[57]; + NET_ITC_LINE struLaneBoundaryLine;//߽ߣ߽߳ߣ + NET_ITC_PLATE_RECOG_PARAM struPlateRecog;//ʶ 40 + NET_ITC_LANE_PRS_PARAM struLaneParam[MAX_ITC_LANE_NUM/*6*/]; + BYTE byRes1[440]; +}NET_ITC_POST_PRS_PARAM,*LPNET_ITC_POST_PRS_PARAM; + +typedef struct tagNET_IPC_LANE_HVT_PARAM +{ + BYTE byLaneNO; + BYTE byCarDriveDirect; //ʻ ITC_LANE_CAR_DRIVE_DIRECT + BYTE byRes[62]; + NET_ITC_LINE struLaneLine;// + NET_ITC_POLYGON struPlateRecog;//ʶ + BYTE byRes1[256]; +} NET_IPC_LANE_HVT_PARAM,*LPNET_IPC_LANE_HVT_PARAM; + +typedef struct _NET_ITC_PARKING_DETECTION_ +{ + BYTE byEnable; //Ƿã0-ã1- + BYTE byRes; //ֽ + WORD wDuration;//ʱλs + WORD wAlarmIntervalTime;//ϴʱλs + BYTE byRes1[58]; //ֽ +}NET_ITC_PARKING_DETECTION, *LPNET_ITC_PARKING_DETECTION; + +typedef struct tagNET_IPC_POST_HVT_PARAM +{ + BYTE byEnable; + BYTE byLaneNum; + BYTE byEnhancedMode; //ǿģʽ0-ã1- + BYTE byPicRecognition; //ͼƬʶ0-ã1- + BYTE byRes[60]; + NET_ITC_LINE struLaneBoundaryLine;//߽ߣ߽߳ߣ + NET_ITC_PLATE_RECOG_PARAM struPlateRecog;//ʶ 40 + NET_IPC_LANE_HVT_PARAM struLaneParam[MAX_ITC_LANE_NUM/*6*/]; + char szSceneName[NAME_LEN/*32*/]; // + NET_VCA_LINE struSnapLine;//ץߣץļ跽ʽΪװЧ4.5NET_DVR_CAMERA_SETUPCFGṹbyErectMethodֶΪ1ʱ + NET_ITC_PARKING_DETECTION struParkingDetection; //ͣ + BYTE byRes1[328]; +} NET_IPC_POST_HVT_PARAM,*LPNET_IPC_POST_HVT_PARAM; + +//ץĻ4.0 +typedef struct tagNET_ITC_LANE_HVT_PARAM_V50 +{ + BYTE byLaneNO; //ij1255(ڵӺϴ) + BYTE byFlashMode; //˸ģʽ0-ͬʱ1- + BYTE bySignSpeed; //С־޸٣λkm/h + BYTE bySpeedLimit; //С޸ֵλkm/h + BYTE bySignLowSpeed; //С־޵٣λkm/h + BYTE byLowSpeedLimit; //С޵ֵλkm/h + BYTE byBigCarSignSpeed; //󳵱־޸٣λkm/h½棩 + BYTE byBigCarSpeedLimit; //޸ֵλkm/h½棩 + BYTE byBigCarSignLowSpeed; //󳵱־޵٣λkm/h + BYTE byBigCarLowSpeedLimit; //޵ֵλkm/h + BYTE bySnapTimes; //ץ1~3 + BYTE byDriveLineSnapTime;// ѹץ 1~3 + BYTE byHighSpeedSnapTime;// ץ1~3 + BYTE byLowSpeedSnapTime;// ץ1~3 + BYTE byBanSnapTime;// Υץ 1~3 + BYTE byReverseSnapTime;//ץ 1~3 + BYTE byRelatedDriveWay; //ţƥ䳵 + BYTE byLaneType; //ͣ0-δá1-ٹ·2-п·0xff-· + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪbyRelatedDriveWayӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byRes1[27]; + BYTE byChangeLaneEnable; //Υ±ץʹܣ0-رգ1- + BYTE byChangeLaneCapNo; //Υ±ץ2-3 + //ĿǰʹõһģԺܻչΪ೵ֱ + //, λʾ,0-,1-òο ITC_VIOLATION_DETECT_TYPE + DWORD dwVioDetectType; + DWORD dwRelatedIOOut; //IO(ͬʱ)λʾIOڣ0λʾIO1Դƣ0-1- + NET_ITC_LINE struTrigLine; //ߣĿǰʹõһģԺܻչΪ೵ֱ + NET_ITC_LINE struLineLeft; //󳵵 + NET_ITC_POLYGON struPlateRecog; //ʶ + NET_ITC_LANE_LOGIC_PARAM struLane; //ԣbyUseageTypebyCarDriveDirect + NET_ITC_INTERVAL_PARAM struInterval;//ץļ20byte + BYTE byRes2[280]; +}NET_ITC_LANE_HVT_PARAM_V50, *LPNET_ITC_LANE_HVT_PARAM_V50; + +typedef struct tagNET_ITC_POST_HVT_PARAM_V50 +{ + BYTE byLaneNum; //ʶij1-6 + BYTE byCapType; //ץͣ0-ǡˣĬϣ1- + BYTE byCapMode; //ץķʽ0-Ƶ֡1-ץģ2-ģʽ + BYTE bySecneMode; //ģʽ0-·Ĭϣ1-Сڣ2-ٹ· + BYTE bySpeedMode; //ģʽ0-޲٣1-״٣2-Ƶ + BYTE byLineRuleEffect; //Ч,ÿһλһ,0-Ч;1-Чbit0-󴥷;bit1-Ҵ;bit2-Ƶ + BYTE byRes1[78]; + NET_ITC_LINE struLeftTrigLine; //󴥷(һֱ) + NET_ITC_LINE struRigtTrigLine; //Ҵ(һֱ) + NET_ITC_LINE struLaneBoundaryLine; //߽ߣұ߳ҳߣ + NET_ITC_POLYGON struDetectArea; //Ƶ + NET_DVR_GEOGLOCATION struGeogLocation; //λãĬ㽭ʡʱ + NET_ITC_LANE_HVT_PARAM_V50 struLaneParam[MAX_ITC_LANE_NUM/*6*/]; // + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + BYTE byRes2[260]; +} NET_ITC_POST_HVT_PARAM_V50, *LPNET_ITC_POST_HVT_PARAM_V50; + + +// +typedef struct tagNET_ITC_LANE_NOCOMITY_PEDESTRIAN_PARAM +{ + BYTE byRelatedDriveWay;//ij + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byPedestriansNum;//ֵΧ1-100Ĭֵ1 + BYTE byVehicleSpeed;//ٶֵΧ0-100Ĭֵ0 + DWORD dwVehicleInterval; //ֵΧ0-65536Ĭֵ0 + BYTE byPedesDetRule; //˼򣻴˼ʻ 0~ 1~ҡ + BYTE byRes[3]; + NET_ITC_LINE struLaneLine;// + NET_ITC_LINE struStopLine;//ֹͣ + NET_ITC_POLYGON struPlateRecog; //ʶ + BYTE byRes1[280]; +} NET_ITC_LANE_NOCOMITY_PEDESTRIAN_PARAM, +*LPNET_ITC_LANE_NOCOMITY_PEDESTRIAN_PARAM; + +//˲ +typedef struct tagNET_ITC_NOCOMITY_PEDESTRIAN_PARAM +{ + BYTE byEnable; //ʹ + BYTE byLaneNum;// Χ1-3Ĭֵ3 + BYTE byRes[74]; + NET_ITC_LINE struLaneBoundaryLine;//ұ߽ + NET_ITC_LINE struTriggerLine;//˴ + NET_ITC_POLYGON struPedesDetRecog;//˼ + NET_ITC_LANE_NOCOMITY_PEDESTRIAN_PARAM struLaneParam[MAX_ITC_LANE_NUM/*6*/]; // + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + BYTE byRes1[400]; +}NET_ITC_NOCOMITY_PEDESTRIAN_PARAM, +*LPNET_ITC_NOCOMITY_PEDESTRIAN_PARAM; + +//IOźŵƲ +typedef struct tagNET_ITC_SINGLE_IO_LIGHT_PARAM +{ + BYTE byLightType; //ͨƵ,0-ת,1-ֱе,2-ת + BYTE byRelatedIO; //IOں + BYTE byRedLightState; //Ƶƽ״̬0-ߵƽƣ1-͵ƽ + BYTE byRes[17]; +}NET_ITC_SINGLE_IO_LIGHT_PARAM, *LPNET_ITC_SINGLE_IO_LIGHT_PARAM; + +//IOźŵƲ +typedef struct tagNET_ITC_IO_LIGHT_PARAM +{ + NET_ITC_SINGLE_IO_LIGHT_PARAM struIOLight[MAX_LIGHT_NUM]; //IOźŵƲ + BYTE byRes[8]; +}NET_ITC_IO_LIGHT_PARAM, *LPNET_ITC_IO_LIGHT_PARAM; + +//485źŵƲ +typedef struct tagNET_ITC_SINGLE_RS485_LIGHT_PARAM +{ + BYTE byLightType; //ͨƵͣ0-תƣ1-ֱеƣ2-ת + BYTE byRelatedLightChan; //ĺ̵Ƽͨ + BYTE byInputLight; //źŵͣ0-Ӻƣ1-̵ + BYTE byRelatedYLightChan; //ĻƵƼͨ + BYTE byRes[16]; +}NET_ITC_SINGLE_RS485_LIGHT_PARAM, *LPNET_ITC_SINGLE_RS485_LIGHT_PARAM; + +//485źŵƲ +typedef struct tagNET_ITC_RS485_LIGHT_PARAM +{ + NET_ITC_SINGLE_RS485_LIGHT_PARAM struRS485Light[MAX_LIGHT_NUM]; //485źŵƲ + BYTE byRes[8]; +}NET_ITC_RS485_LIGHT_PARAM, *LPNET_ITC_RS485_LIGHT_PARAM; + +typedef struct tagNET_POS_PARAM +{ + WORD wLeft; + WORD wTop; + WORD wRight; + WORD wBottom; +}NET_POS_PARAM, *LPNET_POS_PARAM; + +//Ƶ⽻ͨźŵƲṹ +typedef struct tagNET_ITC_SINGLE_VIDEO_DETECT_LIGHT_PARAM +{ + BYTE byLightNum; //ͨƸ + BYTE byStraightLight; //Ƿֱб־ƣ0- 1- + BYTE byLeftLight; //Ƿת־ƣ0-1- + BYTE byRightLight; //Ƿת־ƣ0-1- + BYTE byRedLight;//Ƿкƣ0-1- + BYTE byGreenLight; //Ƿ̵ƣ0-1- + BYTE byYellowLight; //ǷлƵƣ0-1- + BYTE byYellowLightTime;//ȡֵΧ010sITC3.7Ver + NET_POS_PARAM struLightRect; //ͨ + BYTE byRes[24]; +}NET_ITC_SINGLE_VIDEO_DETECT_LIGHT_PARAM, *LPNET_ITC_SINGLE_VIDEO_DETECT_LIGHT_PARAM; + + +//Ƶ⽻ͨźŵƲṹ(12⣬488ֽ) +typedef struct tagNET_ITC_VIDEO_DETECT_LIGHT_PARAM +{ + NET_ITC_SINGLE_VIDEO_DETECT_LIGHT_PARAM struTrafficLight[MAX_VIDEO_DETECT_LIGHT_NUM]; //ƵźŵƲ + BYTE byRes[8]; +}NET_ITC_VIDEO_DETECT_LIGHT_PARAM, *LPNET_ITC_VIDEO_DETECT_LIGHT_PARAM; + +//ͨźŵƽ +typedef union tagNET_ITC_LIGHT_ACCESSPARAM_UNION +{ + DWORD uLen[122]; + NET_ITC_IO_LIGHT_PARAM struIOLight; //IOźŵƲ + NET_ITC_RS485_LIGHT_PARAM struRS485Light; //485źŵƲ + NET_ITC_VIDEO_DETECT_LIGHT_PARAM struVideoDelectLight; //ƵźŵƲ +}NET_ITC_LIGHT_ACCESSPARAM_UNION, *LPNET_ITC_LIGHT_ACCESSPARAM_UNION; + +//ͨźŵƲṹ +typedef struct tagNET_ITC_TRAFFIC_LIGHT_PARAM +{ + BYTE bySource; //ͨźŵƽԴ0-IO룬1-RS485 + BYTE byRes1[3]; + NET_ITC_LIGHT_ACCESSPARAM_UNION struLightAccess;//źŵƽ + BYTE byRes[32]; +}NET_ITC_TRAFFIC_LIGHT_PARAM, *LPNET_ITC_TRAFFIC_LIGHT_PARAM; + +//Υ߲ṹ +typedef struct tagNET_ITC_VIOLATION_DETECT_LINE +{ + NET_ITC_LINE struLaneLine; //߲ + NET_ITC_LINE struStopLine; //ֹ߲ͣ + NET_ITC_LINE struRedLightLine; //ƴ߲ + NET_ITC_LINE struCancelLine; //ֱдλȡ + NET_ITC_LINE struWaitLine; //ֹ߲ͣ + NET_ITC_LINE struRes[8]; +}NET_ITC_VIOLATION_DETECT_LINE, *LPNET_ITC_VIOLATION_DETECT_LINE; + +//˴Ʋ +typedef struct tagNET_ITC_REDLIGHT_PEDESTRIAN_PARAM +{ + BYTE byEnable; //ʹ + BYTE bySnapNumTimes; //ץ1-3Ĭ3 + BYTE byPedesDir; //˷0~1~2~˫ + BYTE byDelayTime; //ʱʱ1-5s + BYTE byStackTargetEnble;//Ŀ򣨼ץĵһͼƬϿסƵˣ0~ӣ1~ + BYTE byCalibRecogCtrl;//궨ƣ0~Ƴ궨1~ӱ궨 + BYTE byRes1[2]; + NET_ITC_TRAFFIC_LIGHT_PARAM struTrafficLight; //ͨźŵƲ + NET_ITC_LINE struStopLine;//ֹͣ + NET_ITC_POLYGON struCalibRecog[MAX_CALIB_RECOG_NUM/*2*/];//궨 + BYTE byRes[440]; +}NET_ITC_REDLIGHT_PEDESTRIAN_PARAM, +*LPNET_ITC_REDLIGHT_PEDESTRIAN_PARAM; + +typedef struct tagNET_ITC_POST_MOBILE_PARAM +{ + BYTE byEnable; + BYTE bySceneMode;//ģʽ 0-ٹ· 1-е· + /*ץ + bit0-,bit1-ռ,bit2-ѹӲ· + */ + WORD wExpressWayCapType;//ٹ· + /*ץ + bit0-,bit1-ռ,bit2-ռרó + */ + WORD wUrbanRoadCapType;//е· + BYTE byCapNum;//ץ [2,3] + BYTE byRecordEnable;//Υ¼ʹ 0-رգ1- + DWORD dwPreRecordTime;//¼Ԥ¼ʱ(s) + DWORD dwOverRecordTime;//¼ʱʱ(s) + NET_ITC_LANE_LOGIC_PARAM struLane; // + NET_ITC_POLYGON struPolygon[MAX_MOBILE_POLYGON_NUM/*3*/]; //ʶ + NET_ITC_VIOLATION_DETECT_LINE struLine[MAX_MOBILE_DETECTLINE_NUM/*3*/]; //Υ + NET_ITC_LINE struLaneBoundaryLine; //߽ߣұ߳ҳߣ + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + NET_ITC_INTERVAL_PARAM struInterval;//ץļ20byte + BYTE byRes[256]; +}NET_ITC_POST_MOBILE_PARAM,*LPNET_ITC_POST_MOBILE_PARAM; + +typedef union tagNET_ITC_TRIGGER_PARAM_UNION +{ + DWORD uLen[1070]; // + NET_ITC_POST_IOSPEED_PARAM struIOSpeed; //ڣIOٲ + NET_ITC_POST_SINGLEIO_PARAM struSingleIO; //ڣIO + NET_ITC_POST_RS485_PARAM struPostRs485; //ڣRS485 + NET_ITC_POST_RS485_RADAR_PARAM struPostRadar; //ڣRS485״ + NET_ITC_POST_VTCOIL_PARAM struVtCoil; //ڣȦ + NET_ITC_POST_HVT_PARAM struHvt; //ڣпڲ + NET_ITC_EPOLICE_IOTL_PARAM struIOTL; //羯IO̵Ʋ + NET_ITC_EPOLICE_RS485_PARAM struEpoliceRs485; //羯RS485 + NET_ITC_EPOLICE_RS485_PARAM struPERs485; //ʽ羯RS485 + NET_ITC_POST_MPR_PARAM struPostMpr; //֡ⴥMPR + NET_DVR_VIA_VTCOIL_PARAM struViaVtCoil; //(VIA)Ƶ + NET_ITC_POST_IMT_PARAM struPostImt;//ǻ۲ + NET_ITC_POST_PRS_PARAM struPostPrs;//Ƶⴥ + NET_IPC_POST_HVT_PARAM struIpcHvt;//(IPC) пڲ + NET_ITC_POST_HVT_PARAM_V50 struHvtV50; /*ڣпڲV50*/ + NET_ITC_POST_MOBILE_PARAM struPostMobile;// ƶͨģʽ + NET_ITC_NOCOMITY_PEDESTRIAN_PARAM struNoComityPed;//˲ + NET_ITC_REDLIGHT_PEDESTRIAN_PARAM struRedLightPed;//˴Ʋ +}NET_ITC_TRIGGER_PARAM_UNION, *LPNET_ITC_TRIGGER_PARAM_UNION; + +//ṹ +typedef struct tagNET_ITC_SINGLE_TRIGGERCFG +{ + BYTE byEnable; //Ƿøôģʽ0-1- + BYTE byRes1[3]; + DWORD dwTriggerType; //ͣITC_TRIGGERMODE_TYPE + NET_ITC_TRIGGER_PARAM_UNION uTriggerParam; // + BYTE byRes[64]; +}NET_ITC_SINGLE_TRIGGERCFG, *LPNET_ITC_SINGLE_TRIGGERCFG; + +//ṹ +typedef struct tagNET_ITC_TRIGGERCFG +{ + DWORD dwSize; //ṹ + NET_ITC_SINGLE_TRIGGERCFG struTriggerParam; // + BYTE byRes[32]; +}NET_ITC_TRIGGERCFG, *LPNET_ITC_TRIGGERCFG; + + +//Υͺ궨 +typedef enum _ITC_VIOLATION_DETECT_TYPE_ +{ + ITC_VIOLATION_POST = 0x01, //ץ + ITC_VIOLATION_DRIVELINE = 0x02,//ѹץ + ITC_VIOLATION_REVERSE = 0x04,//ץ + ITC_VIOLATION_REDLIGHT = 0x08,//ץ + ITC_VIOLATION_DIRECTION = 0x10,//ʻץ + ITC_VIOLATION_INTERSECTION_CONGEST = 0x20,//·ץ + ITC_VIOLATION_NONDRIVEWAY = 0x40, //ռץ + ITC_VIOLATION_CHANGELANE = 0x80, //Υ + ITC_VIOLATION_BAN = 0x100, //Υ + ITC_VIOLATION_INTERSECTION_PARK=0x200,//Խ + ITC_VIOLATION_GREEN_PARK=0x400,//̵ͣ + ITC_VIOLATION_HIGH_SPEED = 0x800, /**/ + ITC_VIOLATION_LOW_SPEED = 0x1000, /**/ + ITC_VIOLATION_EMERGENCY = 0x2000, /*ռӦ*/ + ITC_VIOLATION_TURN_AROUND = 0x8000,/*Υͷ*/ + ITC_VIOLATION_CONGESTION = 0x10000 /*ӵ*/ +}ITC_VIOLATION_DETECT_TYPE; + + +//Υṹ +typedef struct tagNET_ITC_VIOLATION_DETECT_PARAM +{ + DWORD dwVioDetectType; //Υ, λʾ, ITC_VIOLATION_DETECT_TYPE ,0-,1- + BYTE byDriveLineSnapTimes; //ѹץ,2-3 + BYTE byReverseSnapTimes; //ץ,2-3 + WORD wStayTime; //ռͣʱ䣨ʱץģλs + BYTE byNonDriveSnapTimes;//ռץ2-3 + BYTE byChangeLaneTimes;//Υץ 2-3 + BYTE bybanTimes;//Υץ2-3 + BYTE byDriveLineSnapSen;// ѹ(0~100)(3.7Ver) + WORD wSnapPosFixPixel; //2,3ץλСƫ(ΥźŵʱЧ)λأ Ľ + BYTE bySpeedTimes;//Υץ2-3(3.8Ver) + BYTE byTurnAroundEnable;//Υµͷʹ 0~ر 1~ + BYTE byThirdPlateRecogTime;//ʶʱ 0~180s + BYTE byPostSnapTimes;//ץ,1-2 + BYTE byRes1[18]; + WORD wStopLineDis; //羯2ΥͼƬֹͣߵ̾룬[0,300]λ() + BYTE byRes[14]; +}NET_ITC_VIOLATION_DETECT_PARAM, *LPNET_ITC_VIOLATION_DETECT_PARAM; + +//Ͷ +typedef enum _ITC_RELA_LANE_DIRECTION_TYPE_ +{ + ITC_RELA_LANE_DIRECTION_UNKNOW = 0, // + ITC_RELA_LANE_EAST_WEST = 1, //Ӷ + ITC_RELA_LANE_WEST_EAST = 2, // + ITC_RELA_LANE_SOUTH_NORTH = 3, // + ITC_RELA_LANE_NORTH_SOUTH = 4, //ӱ + ITC_RELA_LANE_EASTSOUTH_WESTNORTH = 5, //Ӷ + ITC_RELA_LANE_WESTNORTH_EASTSOUTH = 6, // + ITC_RELA_LANE_EASTNORTH_WESTSOUTH = 7, //Ӷ + ITC_RELA_LANE_WESTSOUTH_EASTNORTH = 8 //򶫱 +} ITC_RELA_LANE_DIRECTION_TYPE; + + +//;Ͷ +typedef enum _ITC_LANE_USEAGE_TYPE_ +{ + ITC_LANE_USEAGE_UNKNOW = 0, //δ֪ + ITC_LANE_CARRIAGEWAY = 1, // + ITC_LANE_BUS = 2, //רõ + ITC_LANE_FAST = 3, //쳵 + ITC_LANE_SLOW = 4, // + ITC_LANE_MOTOR = 5, //Ħг + ITC_LANE_NONMOTOR = 6, //ǻ + ITC_LANE_REVERSE_LANE = 7, //򳵵 + ITC_LANE_BAN_TRUCKS = 8, // ֹ + ITC_LANE_MIX = 9, //ϳ + ITC_LANE_EMERGENCY = 10, //Ӧ + ITC_LANE_BAN_LEFT = 11, // 󳵵 + ITC_LANE_BAN_RIGHT = 12 // ҳ +}ITC_LANE_USEAGE_TYPE; + +//Ͷ +typedef enum _ITC_LANE_DIRECTION_TYPE_ +{ + ITC_LANE_DIRECTION_UNKNOW = 0, //δ֪ + ITC_LANE_LEFT = 1, //ת + ITC_LANE_STRAIGHT = 2, //ֱ + ITC_LANE_LEFT_STRAIGHT = 3, //ת+ֱ + ITC_LANE_RIGHT = 4, //ת + ITC_LANE_LEFT_RIGHT = 5, //ת+ת + ITC_LANE_RIGHT_STRAIGHT = 6, //ת+ֱ + ITC_LANE_LEFT_RIGHT_STRAIGHT = 7, //ת+ת+ֱ + ITC_LANE_LEFT_WAIT = 9, //ת + ITC_LANE_STRAIGHT_WAIT = 10, //ֱд + ITC_LANE_FORWARD = 11, //ʻ + ITC_LANE_BACKWARD = 12, //ʻ + ITC_LANE_BOTHWAY = 13, //˫ʻ + ITC_LANE_STRAIGHT_WAIT_RIGHT = 14 //ֱд + ת +}ITC_LANE_DIRECTION_TYPE; + +//ʻͶ +typedef enum _ITC_LANE_CAR_DRIVE_DIRECT_ +{ + ITC_LANE_DRIVE_UNKNOW = 0, //δ֪ + ITC_LANE_DRIVE_UP_TO_DOWN = 1, //ʻ() + ITC_LANE_DRIVE_DOWN_TO_UP = 2 //ʻ() +}ITC_LANE_CAR_DRIVE_DIRECT; + +//Ͷ +typedef enum _ITC_LINE_TYPE_ +{ + ITC_LINT_UNKNOW = 0, //δ֪ + ITC_LINE_WHITE = 1, //İʵ + ITC_LINE_STOP = 2, //ֹͣ + ITC_LINE_SINGLE_YELLOW = 3, // + ITC_LINE_DOUBLE_YELLOW = 4, //˫ + ITC_LINE_GUARD_RAIL = 5, //л + ITC_LINE_NO_CROSS = 6, //޷Խij + ITC_LINE_DOTTED = 7 // +}ITC_LINE_TYPE; + + +//Ƶ羯ṹ +typedef struct tagNET_ITC_LANE_VIDEO_EPOLICE_PARAM +{ + BYTE byLaneNO; //ij + BYTE bySensitivity; //Ȧȣ[1,100] + BYTE byEnableRadar;//״0-ã1- + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + NET_ITC_LANE_LOGIC_PARAM struLane; // + NET_ITC_VIOLATION_DETECT_PARAM struVioDetect; //Υ + NET_ITC_VIOLATION_DETECT_LINE struLine; //Υ + NET_ITC_POLYGON struPlateRecog; //ʶ + BYTE byRecordEnable;//¼־0-¼1-¼ + BYTE byRecordType;//¼ͣ0-Ԥ¼1-ʱ¼ + BYTE byPreRecordTime;//¼ƬԤ¼ʱ䣨Ĭ0λ + BYTE byRecordDelayTime;//¼Ƭʱʱ䣨Ĭ0λ + BYTE byRecordTimeOut;//¼ʱʱ䣨룩 + BYTE byCarSpeedLimit; //ֵλkm/h + BYTE byCarSignSpeed;//־٣λkm/h + BYTE bySnapPicPreRecord; //ץͼƬԤ¼ʱ㣻0-ĬֵڶͼƬ1-һͼƬ2-ڶͼƬ3-ͼƬ + NET_ITC_INTERVAL_PARAM struInterval;//ץļ20byte + BYTE byRes[36]; +}NET_ITC_LANE_VIDEO_EPOLICE_PARAM, *LPNET_ITC_LANE_VIDEO_EPOLICE_PARAM; + +//Ƶ羯ṹ +typedef struct tagNET_ITC_VIDEO_EPOLICE_PARAM +{ + BYTE byEnable; //Ƿã0-ã1- + BYTE byLaneNum; //ʶij + BYTE byLogicJudge;//Υж߼ֵΪ0-1- + BYTE byRes1; + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + NET_ITC_TRAFFIC_LIGHT_PARAM struTrafficLight; //ͨźŵƲ + NET_ITC_LANE_VIDEO_EPOLICE_PARAM struLaneParam[MAX_ITC_LANE_NUM]; // + NET_ITC_LINE struLaneBoundaryLine; //߽ߣұ߳ı߽ߣ + NET_ITC_LINE struLeftLine; //תֽ + NET_ITC_LINE struRightLine; //תֽ + NET_ITC_LINE struTopZebraLine; //ϲ + NET_ITC_LINE struBotZebraLine; //² + BYTE byRes[32]; +}NET_ITC_VIDEO_EPOLICE_PARAM, *LPNET_ITC_VIDEO_EPOLICE_PARAM; + +typedef union tagNET_ITC_VIDEO_TRIGGER_PARAM_UNION +{ + DWORD uLen[1150]; + NET_ITC_VIDEO_EPOLICE_PARAM struVideoEP; //Ƶ羯 +}NET_ITC_VIDEO_TRIGGER_PARAM_UNION, *LPNET_ITC_VIDEO_TRIGGER_PARAM_UNION; + +typedef struct tagNET_ITC_VIDEO_TRIGGER_PARAM +{ + DWORD dwSize; + DWORD dwMode; //ģʽITC_TRIGGERMODE_TYPE + NET_ITC_VIDEO_TRIGGER_PARAM_UNION uVideoTrigger; //ģʽ + BYTE byRes[32]; +}NET_ITC_VIDEO_TRIGGER_PARAM, *LPNET_ITC_VIDEO_TRIGGER_PARAM; + +typedef struct tagNET_DVR_STATUS_DETECTCFG +{ + DWORD dwSize; //ṹ + BYTE byEnableTrigIODetect; //IO״̬⣬1-ǣ0- + BYTE byEnableFlashOutDetect; //ͬ״̬⣬1-ǣ0- + BYTE byEnableRS485Detect; //RS485״̬⣬1-ǣ0- + BYTE byEnableTrafficLightDetect;//ͨ״̬⣬1-ǣ0- + BYTE byRes[28]; +}NET_DVR_STATUS_DETECTCFG, *LPNET_DVR_STATUS_DETECTCFG; + +typedef enum _ITC_STATUS_DETECT_TYPE_ +{ + ITC_STATUS_DETECT_NULL = 0, //δ֪ + ITC_STATUS_DETECT_TRIGGERIO, //IO + ITC_STATUS_DETECT_FLASHOUT, //ͬ + ITC_STATUS_DETECT_RS485, //RS485 + ITC_STATUS_DETECT_TRIGGERTYPE, //ͣ + ITC_STATUS_DETECT_TRAFFICLIGHT_COLOR, //ͨƣɫ + ITC_STATUS_DETECT_TRAFFICLIGHT_TURN //ͨƣת +}ITC_STATUS_DETECT_TYPE; + +typedef struct tagNET_ITC_TRIGGERIO_INFO +{ + BYTE byTriggerIOIndex[MAX_IOIN_NUM]; //IO + BYTE byRes[40]; +}NET_ITC_TRIGGERIO_INFO, *LPNET_ITC_TRIGGERIO_INFO; + +typedef struct tagNET_ITC_FLASHOUT_INFO +{ + BYTE byFlashOutIndex[MAX_IOOUT_K_NUM]; //ͬ + BYTE byRes[40]; +}NET_ITC_FLASHOUT_INFO, *LPNET_ITC_FLASHOUT_INFO; + +typedef struct tagNET_ITC_SERIAL_CHECKINFO +{ + BYTE bySerialIndex[MAX_ITC_SERIALCHECK_NUM]; //485У0-Ч,1-Ч, bySerialIndex[0]ʾȷͷ, bySerialIndex[1]ʾȷβ + BYTE byRes[40]; +}NET_ITC_SERIAL_CHECKINFO, *LPNET_ITC_SERIAL_CHECKINFO; + +typedef struct tagNET_ITC_TRIGGERTYPE_INFO +{ + BYTE byTrigTypeIndex; //ֵ + BYTE byRes[47]; +}NET_ITC_TRIGGERTYPE_INFO, *LPNET_ITC_TRIGGERTYPE_INFO; + +//Ƶ羯 +typedef struct tagNET_ITC_TRAFFIC_LIGHT_COLOR +{ + BYTE byLeftLight;//תƣ0 ʾЧ1Ϊ 2Ϊ̵ 3 Ƶ 4ƶ + BYTE byRightLight; //תƣ0 ʾЧ1Ϊ 2Ϊ̵ 3 Ƶ 4ƶ + BYTE byStraightLight; //ֱеƣ0 ʾЧ1Ϊ 2Ϊ̵ 3 Ƶ 4ƶ + BYTE byRes[45]; +}NET_ITC_TRAFFIC_LIGHT_COLOR, *LPNET_ITC_TRAFFIC_LIGHT_COLOR; + +//Ƶ羯 +typedef struct tagNET_ITC_TRAFFIC_LIGHT_TURN +{ + BYTE byLightType[MAX_ITC_LANE_NUM];// 0 ʾЧ1Ϊ 2Ϊ̵ 3 Ƶ 4ƶ + BYTE byRes[42]; +} NET_ITC_TRAFFIC_LIGHT_TURN, *LPNET_ITC_TRAFFIC_LIGHT_TURN; + +typedef union tagNET_ITC_STATUS_UNION +{ + BYTE uLen[48]; // + NET_ITC_TRIGGERIO_INFO struTrigIO; //IOں + NET_ITC_FLASHOUT_INFO struFlashOut; //ͬ + NET_ITC_SERIAL_CHECKINFO struSerial; // + NET_ITC_TRIGGERTYPE_INFO struTrigType; //ͣ + NET_ITC_TRAFFIC_LIGHT_COLOR struTrafficLightColor; //ͨƣɫӦITC_STATUS_DETECT_TRAFFICLIGHT_COLOR + NET_ITC_TRAFFIC_LIGHT_TURN struTrafficLightTurn;//ͨƣת򣩶ӦITC_STATUS_DETECT_TRAFFICLIGHT_TURN +}NET_ITC_STATUS_UNION, *LPNET_ITC_STATUS_UNION; + +typedef struct tagNET_ITC_STATUS_DETECT_RESULT +{ + ITC_STATUS_DETECT_TYPE dwStatusType;//״̬ͣITC_STATUS_DETECT_TYPE + NET_ITC_STATUS_UNION uStatusParam; //״̬ + DWORD dwHoldTime; //ʱ䣨λms + BYTE byRes[32]; +}NET_ITC_STATUS_DETECT_RESULT, *LPNET_ITC_STATUS_DETECT_RESULT; + +typedef struct tagNET_DVR_SETUPALARM_PARAM +{ + DWORD dwSize; + BYTE byLevel; //ȼ0-һȼߣ1-ȼУ2-ȼͣ + BYTE byAlarmInfoType; //ϴϢͣץĻ֧֣0-ϱϢNET_DVR_PLATE_RESULT1-±Ϣ(NET_ITS_PLATE_RESULT)2012-9-28 + BYTE byRetAlarmTypeV40; //0--NET_DVR_ALARMINFO_V30NET_DVR_ALARMINFO, 1--豸֧NET_DVR_ALARMINFO_V40򷵻NET_DVR_ALARMINFO_V40֧򷵻NET_DVR_ALARMINFO_V30NET_DVR_ALARMINFO + BYTE byRetDevInfoVersion; //CVRϴϢصṹ汾 0-COMM_ALARM_DEVICE 1-COMM_ALARM_DEVICE_V40 + BYTE byRetVQDAlarmType; //VQDϴͣ0-ϴNET_DVR_VQD_DIAGNOSE_INFO1-ϴNET_DVR_VQD_ALARM + //1-ʾⱨչ(INTER_FACE_DETECTION),0-ʾԭֽ֧ṹ(INTER_FACESNAP_RESULT) + BYTE byFaceAlarmDetection; + //Bit0- ʾǷϴͼƬ: 0-ϴ1-ϴ + //Bit1- ʾϴȷϻƣ0-1- + //Bit6- ʾ״ⱨ(eventType:radarDetection)Ƿʵʱϴ0-1-webʵʱʾ״Ŀ꣩ + BYTE bySupport; + // + //bit0-Ƽ⣨IPC 0-1- + //bit1-ͳƣIPC 0-1- + //bit2-ȶͼͳƣIPC 0-1- + //bit3-ץģIPC 0-1- + //bit4-ԱȣIPC 0-1- + BYTE byBrokenNetHttp; + WORD wTaskNo; // (ϴNET_DVR_VEHICLE_RECOG_RESULTеֶdwTaskNoӦ ͬʱ ·ṹ NET_DVR_VEHICLE_RECOG_CONDеֶdwTaskNoӦ) + BYTE byDeployType; //ͣ0-ͻ˲1-ʵʱ + BYTE bySubScription; //ģλʾδIJϱ //ռλ + //Bit7-ƶ˳Ƿͼ0-ͼ(V30ϱ)1-ͼ(V40ϱ) + BYTE byRes1[2]; + BYTE byAlarmTypeURL;//bit0-ʾץıϴINTER_FACESNAP_RESULT0-ʾƴ䣬1-ʾURL䣨豸ֵ֧£豸֧ݾ屨ж,ͬʱ豸Ҫ֧URLط񣬵ǰǡƴ洢 + //bit1-ʾEVENT_JSONͼƬݳͣ0-ʾƴ䣬1-ʾURL䣨豸ֵ֧£豸֧ݾ屨жϣ + //bit2 - ȶ(ΪCOMM_SNAP_MATCH_ALARM)ͼƬϴͣ0 - ƴ䣬1 - URL + //bit3 - 쳣Ϊ(ΪCOMM_ALARM_RULE)ͼƬϴͣ0 - ƴ䣬1 - URL䣬ֶ豸Ƿ֧֣ӦӲڵǷ񷵻Ϊtrue + BYTE byCustomCtrl;//Bit0- ʾָ֧ʻͼϴ: 0-ϴ,1-ϴ +}NET_DVR_SETUPALARM_PARAM, *LPNET_DVR_SETUPALARM_PARAM; + +typedef struct tagNET_DVR_SETUPALARM_PARAM_V50 +{ + DWORD dwSize; + BYTE byLevel; //ȼ0-һȼߣ1-ȼУ2-ȼͣ + BYTE byAlarmInfoType; //ϴϢͣץĻ֧֣0-ϱϢNET_DVR_PLATE_RESULT1-±Ϣ(NET_ITS_PLATE_RESULT)2012-9-28 + BYTE byRetAlarmTypeV40; //0--NET_DVR_ALARMINFO_V30NET_DVR_ALARMINFO, 1--豸֧NET_DVR_ALARMINFO_V40򷵻NET_DVR_ALARMINFO_V40֧򷵻NET_DVR_ALARMINFO_V30NET_DVR_ALARMINFO + BYTE byRetDevInfoVersion; //CVRϴϢصṹ汾 0-COMM_ALARM_DEVICE 1-COMM_ALARM_DEVICE_V40 + BYTE byRetVQDAlarmType; //VQDϴͣ0-ϴNET_DVR_VQD_DIAGNOSE_INFO1-ϴNET_DVR_VQD_ALARM + //1-ʾⱨչ(INTER_FACE_DETECTION),0-ʾԭֽ֧ṹ(INTER_FACESNAP_RESULT) + BYTE byFaceAlarmDetection; + //Bit0- ʾǷϴͼƬ: 0-ϴ1-ϴ + //Bit1- ʾϴȷϻƣ0-1- + //Bit6- ʾ״ⱨ(eventType:radarDetection)Ƿʵʱϴ0-1-webʵʱʾ״Ŀ꣩ + BYTE bySupport; + // + //bit0-Ƽ⣨IPC 0-1- + //bit1-ͳƣIPC 0-1- + //bit2-ȶͼͳƣIPC 0-1- + //bit3-ץģIPC 0-1- + //bit4-ԱȣIPC 0-1- + //bit5-JSON͸IPC 0-1- + //bit6-ȶͼԱͣʱͳϴ¼0-1- + //bit7-ȶͼͳϴ¼ȷϻƣ0-1- + BYTE byBrokenNetHttp; + WORD wTaskNo; // (ϴNET_DVR_VEHICLE_RECOG_RESULTеֶdwTaskNoӦ ͬʱ ·ṹ NET_DVR_VEHICLE_RECOG_CONDеֶdwTaskNoӦ) + BYTE byDeployType; //ͣ0-ͻ˲1-ʵʱ + BYTE bySubScription; //ģλʾδIJϱ //ռλBit7-ƶ˳Ƿͼ0-ͼ(V30ϱ)1-ͼ(V40ϱ) + //ӦV60汾 + //bit0-AID¼(COMM_ALARM_AID_V41) 0-1- + //bit1-TFS¼COMM_ALARM_TFS 0-1- + //bit2-TPSͳƹ¼COMM_ALARM_TPS_STATISTICS 0-1- + //bit3-쳣Ϊ(COMM_ALARM_RULE) 0-1- + BYTE byBrokenNetHttpV60; + BYTE byRes1; + BYTE byAlarmTypeURL;//bit0-ʾץıϴINTER_FACESNAP_RESULT0-ʾƴ䣬1-ʾURL䣨豸ֵ֧£豸֧ݾ屨ж,ͬʱ豸Ҫ֧URLط񣬵ǰǡƴ洢 + //bit1-ʾEVENT_JSONͼƬݳͣ0-ʾƴ䣬1-ʾURL䣨豸ֵ֧£豸֧ݾ屨жϣ + //bit2 - ȶ(ΪCOMM_SNAP_MATCH_ALARM)ͼƬϴͣ0 - ƴ䣬1 - URL + //bit3 - 쳣Ϊ(ΪCOMM_ALARM_RULE)ͼƬϴͣ0 - ƴ䣬1 - URL䣬ֶ豸Ƿ֧֣ӦӲڵǷ񷵻Ϊtrue + BYTE byCustomCtrl;//Bit0- ʾָ֧ʻͼϴ: 0-ϴ,1-ϴ + BYTE byRes4[128]; +}NET_DVR_SETUPALARM_PARAM_V50, *LPNET_DVR_SETUPALARM_PARAM_V50; + +typedef struct tagNET_ITC_VIDEO_TRIGGER_COND +{ + DWORD dwSize; + DWORD dwChannel; + DWORD dwTriggerMode; //ƵģʽͣITC_TRIGGERMODE_TYPE + BYTE byRes[16]; +}NET_ITC_VIDEO_TRIGGER_COND, *LPNET_ITC_VIDEO_TRIGGER_COND; + +//ṹ +typedef struct tagNET_ITC_FTP_TYPE_COND +{ + DWORD dwChannel;//ͨ + BYTE byWorkMode; // 0-FTP1(FTP)1-FTP2(FTP) + BYTE byRes[7]; +}NET_ITC_FTP_TYPE_COND, *LPNET_ITC_FTP_TYPE_COND; + +//ýṹ +typedef struct tagNET_ITC_FTP_CFG +{ + DWORD dwSize; + BYTE byEnable; /*Ƿftpϴܣ0-1-*/ + BYTE byAddressType; //0-ʵipv4 ipv6ַ 1- + // unionServerʹʵʵַ + WORD wFTPPort; /*˿*/ + union + { + struct + { + BYTE szDomain[MAX_DOMAIN_NAME];//ַ + BYTE byRes1[80]; + }struDomain; + struct + { + NET_DVR_IPADDR struIp;/*IPַ*/ //IPv4 IPv6ַ, 144ֽ + } struAddrIP; + }unionServer; //ʹṹͨbyAddressTypeֶαʾIPַ 64 + BYTE szUserName[NAME_LEN]; /*û*/ + BYTE szPassWORD[PASSWD_LEN]; /**/ + BYTE byRes4; // 0-FTP1(FTP)1-FTP2(FTP) + BYTE byDirLevel; /*0 = ʹĿ¼ṹֱӱڸĿ¼, + 1 = ʹ1Ŀ¼,2=ʹ2Ŀ¼, + 3 = ʹ3Ŀ¼,4=ʹ4Ŀ¼*/ + BYTE byIsFilterCarPic;/*СͼǷϴ0-ϴ,1-ϴ*/ + BYTE byUploadDataType;//0-ȫ1-ڣ2-Υ (FTPʱĬѡȫ˫FTPʱֿ֧ڣΥµѡ) + NET_DVR_PICTURE_NAME struPicNameRule;/* ͼƬ */ + BYTE byTopDirMode; /*һĿ¼, 0x1 = ʹ豸, + 0x2 = ʹ豸,0x3 =ʹ豸ipַ + 0x4=ʹʾ,0x5=ʹʱ(), + 0x6=ʹʱ(),0x7=Υ,0x8=,0x9=ص, + 0xa=ͨ,0xb=ͨ,0xc=0xff=Զ*/ + BYTE bySubDirMode; /*Ŀ¼, 0x1 =ʹ豸, + 0x2 = ʹ豸,0x3 =ʹ豸ipַ + 0x4=ʹʾ,0x5=ʹʱ(), + 0x6=ʹʱ(),0x7=Υ,0x8=,0x9=ص, + 0xa=ͨ,0xb=ͨ,0xc=0xff=Զ*/ + BYTE byThreeDirMode; /*Ŀ¼, 0x1 = ʹ豸, + 0x2 = ʹ豸,0x3 =ʹ豸ipַ + 0x4=ʹʾ,0x5=ʹʱ(), + 0x6=ʹʱ(),0x7=Υ,0x8=,0x9=ص, + 0xa=ͨ,0xb=ͨ,0xc=0xff=Զ*/ + BYTE byFourDirMode; /*ļĿ¼, 0x1 =ʹ豸, + 0x2 = ʹ豸,0x3 =ʹ豸ipַ + 0x4=ʹʾ,0x5=ʹʱ(), + 0x6=ʹʱ(),0x7=Υ,0x8=,0x9=ص, + 0xa=ͨ,0xb=ͨ,0xc=0xff=Զ*/ + /*ͼƬԶ PICNAME_ITEM_CUSTOM ʱ Ч*/ + BYTE szPicNameCustom[MAX_CUSTOMDIR_LEN];// (3.7Ver Ч) + BYTE szTopCustomDir[MAX_CUSTOMDIR_LEN]; /*ԶһĿ¼*/ + BYTE szSubCustomDir[MAX_CUSTOMDIR_LEN];/*ԶĿ¼*/ + BYTE szThreeCustomDir[MAX_CUSTOMDIR_LEN]; /*ԶĿ¼*/ + BYTE szFourCustomDir[MAX_CUSTOMDIR_LEN]; /*ԶļĿ¼*/ + BYTE byRes3[900]; //12չԤ ֧͸ +}NET_ITC_FTP_CFG, *LPNET_ITC_FTP_CFG; + +typedef struct tagNET_DVR_LATITUDE_PARAM +{ + BYTE byDegree;//[0,179] + BYTE byMinute;//[0,59] + BYTE bySec;//[0,59] + BYTE byRes; +}NET_DVR_LATITUDE_PARAM, *LPNET_DVR_LATITUDE_PARAM; + +typedef struct tagNET_DVR_LONGITUDE_PARAM +{ + BYTE byDegree;//[0,179] + BYTE byMinute;//[0,59] + BYTE bySec;//[0,59] + BYTE byRes; +}NET_DVR_LONGITUDE_PARAM, *LPNET_DVR_LONGITUDE_PARAM; + +typedef struct tagNET_DVR_GPS_DATACFG +{ + DWORD dwSize; + BYTE byGpsDataMode;//GPSݻȡ 0-Զ1-ֶ + BYTE byLongitudeType;// 0-1- + BYTE byLatitudeType;//γ 0-γ1-γ + BYTE byRes; + NET_DVR_LATITUDE_PARAM struLatitude; /*γ*/ + NET_DVR_LONGITUDE_PARAM struLongitude; /**/ + BYTE byRes1[128]; +}NET_DVR_GPS_DATACFG,*LPNET_DVR_GPS_DATACFG; + +typedef enum _VCA_DATABASE_TYPE_ +{ + DATABASE_NULL = 0, //δ֪ + DATABASE_SNAP, //ץݿ + DATABASE_FACE //ݿ +}VCA_DATABASE_TYPE; + +typedef struct tagNET_VCA_DATABASE_PARAM +{ + DWORD dwSize; + DWORD dwDataBaseID; //ݿID豸ɣʱЧ޸ĺɾʱЧ + DWORD dwDataBaseType; //ݿͣVCA_DATABASE_TYPE + BYTE byDataBaseName[NAME_LEN]; //ݿ + BYTE byAttribute[64]; //ݿ + BYTE byRes[20]; +}NET_VCA_DATABASE_PARAM, *LPNET_VCA_DATABASE_PARAM; + +typedef struct tagNET_VCA_FIND_DATABASE_COND +{ + DWORD dwDataBaseType; //ݿͣVCA_DATABASE_TYPE + BYTE byRes[12]; // +}NET_VCA_FIND_DATABASE_COND, *LPNET_VCA_FIND_DATABASE_COND; + +typedef struct tagNET_VCA_DELETE_DATABASE_COND +{ + DWORD dwSize; + DWORD dwDataBaseType; //ݿͣVCA_DATABASE_TYPE + DWORD dwDataBaseID; //ݿID + BYTE byRes[64]; // +}NET_VCA_DELETE_DATABASE_COND, *LPNET_VCA_DELETE_DATABASE_COND; + +typedef struct tagNET_VCA_INQUIRE_SNAPDB_COND +{ + DWORD dwChannel;//ͨ + NET_DVR_TIME struStartTime;//ʼʱ + NET_DVR_TIME struStopTime;//ʱ + BYTE bySex; //Ա0-ã1-У2-Ů + BYTE byRes1[3]; // + BYTE byStartBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //ʼ£磺201106 + BYTE byEndBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //ֹ£201106 + BYTE byAttribute1[NAME_LEN]; //1 + BYTE byAttribute2[NAME_LEN]; //2 + BYTE byRes[12]; // +}NET_VCA_INQUIRE_SNAPDB_COND, *LPNET_VCA_INQUIRE_SNAPDB_COND; + +typedef struct tagNET_VCA_INQUIRE_SNAPRECORD_RESULT +{ + DWORD dwSize; //ṹС + DWORD dwDataBaseID; //ݿID + DWORD dwRecordID; //¼ID + NET_DVR_TIME struSnapTime; //ץʱ + BYTE bySex; //Ա0-ã1-У2-Ů + BYTE byRes1[3]; // + BYTE byStartBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //ʼ£磺201106 + BYTE byEndBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //ֹ£201106 + BYTE byAttribute1[NAME_LEN]; //1 + BYTE byAttribute2[NAME_LEN]; //2 + DWORD dwFacePicID; //ͼID + DWORD dwFacePicLen; //ͼݳ + BYTE byRes[80]; // + BYTE *pFacePic; //ͼ +}NET_VCA_INQUIRE_SNAPRECORD_RESULT, *LPNET_VCA_INQUIRE_SNAPRECORD_RESULT; + +typedef union tagNET_VCA_DELETE_SNAPRECORD_COND_UNION +{ + NET_VCA_INQUIRE_SNAPDB_COND struAttribute; //ԱϢɾ + DWORD dwRecordID; //¼IDɾ +}NET_VCA_DELETE_SNAPRECORD_COND_UNION, *LPNET_VCA_DELETE_SNAPRECORD_COND_UNION; + +typedef enum _VCA_DELETE_RECORD_TYPE_ +{ + DELETE_RECORD_SINGLE = 0, //ɾ + DELETE_RECORD_BATCH //ɾ +}VCA_DELETE_RECORD_TYPE; + +typedef struct tagNET_VCA_DELETE_SNAPRECORD_COND +{ + VCA_DELETE_RECORD_TYPE dwDeleteType; //ɾ¼ + NET_VCA_DELETE_SNAPRECORD_COND_UNION uDeleteCond; //ɾ + BYTE byRes[40]; // +}NET_VCA_DELETE_SNAPRECORD_COND, *LPNET_VCA_DELETE_SNAPRECORD_COND; + +typedef enum _VCA_SEARCH_DATABASE_TYPE_ +{ + VCA_NORMAL_SEARCH_DATABASE = 0x00000000, //ͨ + VCA_ADVANCE_SEARCH_DATABASE = 0x00000001 //߼ +}VCA_SEARCH_DATABASE_TYPE; + +typedef struct tagNET_VCA_ADVANCE_SEARCH_DATABASE_COND +{ + DWORD dwDataBaseType; //ݿͣVCA_DATABASE_TYPE + DWORD dwDataBaseID; //ݿID + DWORD dwFacePicID; //ͼƬID + BYTE byRes[36]; +}NET_VCA_ADVANCE_SEARCH_DATABASE_COND, *LPNET_VCA_ADVANCE_SEARCH_DATABASE_COND; + +typedef union tagNET_VCA_SEARCH_DATABASE_COND_UNION +{ + DWORD uLen[25]; + NET_VCA_REGISTER_PIC struNormalFind; //ͨ + NET_VCA_ADVANCE_SEARCH_DATABASE_COND struAdvanceFind; //߼ +}NET_VCA_SEARCH_DATABASE_COND_UNION, *LPNET_VCA_SEARCH_DATABASE_COND_UNION; + +typedef struct tagNET_VCA_SEARCH_DATABASE_PARAM +{ + DWORD dwSearchType; //ͣVCA_SEARCH_DATABASE_TYPE + NET_VCA_SEARCH_DATABASE_COND_UNION uSearchCond; // + BYTE byRes[16]; +}NET_VCA_SEARCH_DATABASE_PARAM, *LPNET_VCA_SEARCH_DATABASE_PARAM; + +typedef struct tagNET_VCA_SEARCH_SNAPDB_COND +{ + DWORD dwChannel; //ͨ + DWORD dwDataBaseID; //ݿID + NET_DVR_TIME struStartTime;//ʼʱ + NET_DVR_TIME struStopTime;//ʱ + BYTE bySex; //Ա0-ã1-У2-Ů + BYTE byRes1[3]; // + BYTE byStartBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //ʼ£磺201106 + BYTE byEndBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //ֹ£201106 + BYTE byAttribute1[NAME_LEN]; //1 + BYTE byAttribute2[NAME_LEN]; //2 + NET_VCA_SEARCH_DATABASE_PARAM struSearchParam; // + DWORD dwMaxSearchNum; // + WORD wThreshold; //ֵ0-100 + BYTE byRes[78]; // +}NET_VCA_SEARCH_SNAPDB_COND, *LPNET_VCA_SEARCH_SNAPDB_COND; + +typedef struct tagNET_VCA_SEARCH_SNAPRECORD_RESULT +{ + DWORD dwSize; //ṹС + DWORD dwDataBaseID; //ݿID + DWORD dwRecordID; //¼ID + NET_DVR_TIME struSnapTime;//ץʱ + BYTE bySex; //Ա0-ã1-У2-Ů + BYTE byRes1[3]; // + BYTE byStartBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //ʼ£磺201106 + BYTE byEndBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //ֹ£201106 + BYTE byAttribute1[NAME_LEN]; //1 + BYTE byAttribute2[NAME_LEN]; //2 + float fSimilarity; //ƶȣ[0.001,1] + DWORD dwFacePicID; //ͼID + DWORD dwFacePicLen; //ͼݳ + BYTE byRes[80]; // + BYTE *pFacePic; //ͼ +}NET_VCA_SEARCH_SNAPRECORD_RESULT, *LPNET_VCA_SEARCH_SNAPRECORD_RESULT; + +typedef struct tagNET_VCA_DATARECORD_INFO +{ + DWORD dwSize; //ṹС + DWORD dwRecordID; //¼IDʱЧ޸ʱЧ + NET_VCA_HUMAN_ATTRIBUTE struAttribute; //ԱϢ + NET_VCA_REGISTER_PIC struRegisterPic; //ԱͼƬϢ + BYTE byRemark1[NAME_LEN]; //עϢ1 + BYTE byRemark2[64]; //עϢ2 + BYTE byRes[32]; // +}NET_VCA_DATARECORD_INFO, *LPNET_VCA_DATARECORD_INFO; + +typedef struct tagNET_VCA_FAST_DATARECORD_INFO +{ + DWORD dwSize; //ṹС + NET_VCA_HUMAN_ATTRIBUTE struAttribute; //ԱϢ + BYTE byRemark1[NAME_LEN]; //עϢ1 + BYTE byRemark2[64]; //עϢ2 + DWORD dwImageLen; //ͼݳ + BYTE byRes[80]; // + BYTE *pImage; //ͼ +}NET_VCA_FAST_DATARECORD_INFO, *LPNET_VCA_FAST_DATARECORD_INFO; + +typedef struct tagNET_VCA_INQUIRE_DATARECORD_RESULT +{ + DWORD dwSize; //ṹС + DWORD dwDataBaseID; //ݿID + DWORD dwRecordID; //¼ID + NET_VCA_HUMAN_ATTRIBUTE struAttribute; //ԱϢ + BYTE byRemark1[NAME_LEN]; //עϢ1 + BYTE byRemark2[64]; //עϢ2 + DWORD dwFacePicID; //ͼID + DWORD dwFacePicLen; //ͼݳ + BYTE byRes[80]; // + BYTE *pFacePic; //ͼ +}NET_VCA_INQUIRE_DATARECORD_RESULT, *LPNET_VCA_INQUIRE_DATARECORD_RESULT; + +typedef struct tagNET_VCA_SEARCH_DATARECORD_RESULT +{ + DWORD dwSize; //ṹС + DWORD dwDataBaseID; //ݿID + DWORD dwRecordID; //¼ID + NET_VCA_HUMAN_ATTRIBUTE struAttribute; //ԱϢ + BYTE byRemark1[NAME_LEN]; //עϢ1 + BYTE byRemark2[64]; //עϢ2 + float fSimilarity; //ƶȣ[0.001,1] + DWORD dwFacePicID; //ͼID + DWORD dwFacePicLen; //ͼݳ + BYTE byRes[80]; // + BYTE *pFacePic; //ͼ +}NET_VCA_SEARCH_DATARECORD_RESULT, *LPNET_VCA_SEARCH_DATARECORD_RESULT; + +typedef struct tagNET_VCA_DATARECORD_COND +{ + DWORD dwDataBaseID; //ݿID + NET_VCA_HUMANATTRIBUTE_COND struAttribute; //ԱϢ + BYTE byRes[80]; // +}NET_VCA_DATARECORD_COND, *LPNET_VCA_DATARECORD_COND; + +typedef union tagNET_VCA_DELETE_RECORD_COND_UNION +{ + NET_VCA_HUMANATTRIBUTE_COND struAttribute; //ԱϢɾ + DWORD dwRecordID; //¼IDɾ +}NET_VCA_DELETE_RECORD_COND_UNION, *LPNET_VCA_DELETE_RECORD_COND_UNION; + +typedef struct tagNET_VCA_DELETE_RECORD_COND +{ + VCA_DELETE_RECORD_TYPE dwDeleteType; //ɾ¼ + NET_VCA_DELETE_RECORD_COND_UNION uDeleteCond; //ɾ + BYTE byRes[40]; // +}NET_VCA_DELETE_RECORD_COND, *LPNET_VCA_DELETE_RECORD_COND; + +typedef struct tagNET_VCA_SEARCH_FACEDB_COND +{ + DWORD dwDataBaseID; //ݿID + NET_VCA_HUMANATTRIBUTE_COND struAttribute; //ԱϢ + NET_VCA_SEARCH_DATABASE_PARAM struSearchParam; // + DWORD dwMaxSearchNum; // + WORD wThreshold; //ֵ0-100 + BYTE byRes[78]; // +}NET_VCA_SEARCH_FACEDB_COND, *LPNET_VCA_SEARCH_FACEDB_COND; + +typedef struct tagNET_VCA_FIND_MATCHPIC_COND +{ + DWORD dwSize; + DWORD dwDataBaseType; //ݿͣVCA_DATABASE_TYPE + DWORD dwDataBaseID; //ݿID + DWORD dwRecordID; //¼ID + BYTE byRes[64]; // +}NET_VCA_FIND_MATCHPIC_COND, *LPNET_VCA_FIND_MATCHPIC_COND; + +typedef struct tagNET_VCA_FIND_MATCHPIC_RESULT +{ + DWORD dwSize; + DWORD dwDataBaseType; //ݿͣVCA_DATABASE_TYPE + DWORD dwDataBaseID; //ݿID + DWORD dwRecordID; //¼ID + DWORD dwPicLen; //ͼƬ + BYTE byRes[64]; // + BYTE *pPicBuffer; //ͼƬָ +}NET_VCA_FIND_MATCHPIC_RESULT, *LPNET_VCA_FIND_MATCHPIC_RESULT; + +typedef struct tagNET_DVR_REMOTECONTROL_ALARM_PARAM +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + WORD wDealyTime; //ӳʱ䣬λs + BYTE byRes[30]; +}NET_DVR_REMOTECONTROL_ALARM_PARAM, *LPNET_DVR_REMOTECONTROL_ALARM_PARAM; + +typedef struct tagNET_DVR_REMOTECONTROL_STUDY_PARAM +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byRes[16]; +}NET_DVR_REMOTECONTROL_STUDY_PARAM, *LPNET_DVR_REMOTECONTROL_STUDY_PARAM; + +typedef struct tagNET_DVR_WIRELESS_ALARM_STUDY_PARAM +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byIndex; //߱ţ1-8 + BYTE byRes[15]; +}NET_DVR_WIRELESS_ALARM_STUDY_PARAM, *LPNET_DVR_WIRELESS_ALARM_STUDY_PARAM; + +#define MAX_AUX_ALARM_NUM 8 // +#define MAX_WIRELESS_ALARM_NUM 8 //߱ +typedef enum _IPC_AUX_ALARM_TYPE_ +{ + IPC_AUXALARM_UNKNOW = 0, //δ֪ + IPC_AUXALARM_PIR = 1, //PIR + IPC_AUXALARM_WIRELESS = 2, //߱ + IPC_AUXALARM_CALLHELP = 3 //ȱ +}IPC_AUX_ALARM_TYPE; + +typedef struct tagNET_DVR_AUDIO_LIMIT_ALARM_CFG +{ + DWORD dwSize; + BYTE byEnable;//ʹ + BYTE byRes1[3]; + DWORD dwDecibelLimit; //ֱ澯ֵ + NET_DVR_HANDLEEXCEPTION_V30 struHandleException; //쳣ʽ + BYTE byRes2[24]; +}NET_IPC_AUDIO_LIMIT_ALARM_CFG,*LPNET_IPC_AUDIO_LIMIT_ALARM_CFG; + +typedef struct tagNET_DVR_BUTTON_DOWN_ALARM_CFG +{ + DWORD dwSize; + BYTE byEnable;//ʹ + BYTE byRes1[3]; + NET_DVR_HANDLEEXCEPTION_V30 struHandleException; //쳣ʽ + BYTE byRes2[24]; +}NET_IPC_BUTTON_DOWN_ALARM_CFG,*LPNET_IPC_BUTTON_DOWN_ALARM_CFG; + +typedef struct tagNET_IPC_PIR_ALARMCFG +{ + BYTE byAlarmName[NAME_LEN]; /* */ + BYTE byAlarmHandle; /* Ƿ 0- 1-*/ + BYTE byRes1[3]; + NET_DVR_HANDLEEXCEPTION_V30 struAlarmHandleType; /* ʽ */ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ,Ϊ1ʾͨ + BYTE byRes[64]; +}NET_IPC_PIR_ALARMCFG, *LPNET_IPC_PIR_ALARMCFG; + +typedef struct tagNET_IPC_PIR_ALARMCFG_EX +{ + BYTE byAlarmName[NAME_LEN]; /* */ + BYTE byAlarmHandle; /* Ƿ 0- 1-*/ + BYTE byRes1[3]; + NET_DVR_HANDLEEXCEPTION_V30 struAlarmHandleType; /* ʽ */ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ,Ϊ1ʾͨ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; + BYTE byRes[1464]; +}NET_IPC_PIR_ALARMCFG_EX, *LPNET_IPC_PIR_ALARMCFG_EX; + +//ȱ +typedef struct tagNET_IPC_CALLHELP_ALARMCFG +{ + BYTE byAlarmHandle; /* Ƿ 0- 1-*/ + BYTE byRes1[3]; + NET_DVR_HANDLEEXCEPTION_V30 struAlarmHandleType; /* ʽ */ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ,Ϊ1ʾͨ + BYTE byRes[64]; +}NET_IPC_CALLHELP_ALARMCFG, *LPNET_IPC_CALLHELP_ALARMCFG; + +typedef struct tagNET_IPC_SINGLE_WIRELESS_ALARMCFG +{ + BYTE byAlarmName[NAME_LEN]; /* */ + BYTE byAlarmHandle; /* Ƿ 0- 1-*/ + BYTE byID; //߱ID1-8 + BYTE byRes1[2]; + NET_DVR_HANDLEEXCEPTION_V30 struAlarmHandleType; /* ʽ */ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ,Ϊ1ʾͨ + BYTE byRes[32]; +}NET_IPC_SINGLE_WIRELESS_ALARMCFG, *LPNET_IPC_SINGLE_WIRELESS_ALARMCFG; + +typedef struct tagNET_IPC_WIRELESS_ALARMCFG +{ + NET_IPC_SINGLE_WIRELESS_ALARMCFG struWirelessAlarm[MAX_WIRELESS_ALARM_NUM]; //߱ + BYTE byRes[32]; +}NET_IPC_WIRELESS_ALARMCFG, *LPNET_IPC_WIRELESS_ALARMCFG; + +typedef union tagNET_IPC_AUX_ALARMCFG_UNION +{ + DWORD uLen[472]; + NET_IPC_PIR_ALARMCFG_EX struPIRAlarm; //PIR + NET_IPC_WIRELESS_ALARMCFG struWirelessAlarm; //߱ + NET_IPC_CALLHELP_ALARMCFG struCallHelpAlarm; //ȱ +}NET_IPC_AUX_ALARMCFG_UNION, *LPNET_IPC_AUX_ALARMCFG_UNION; + +typedef struct tagNET_IPC_SINGLE_AUX_ALARMCFG +{ + BYTE byAlarmType; //ͣIPC_AUX_ALARM_TYPE + BYTE byRes1[3]; + NET_IPC_AUX_ALARMCFG_UNION uAlarm; // + BYTE byRes[16]; +}NET_IPC_SINGLE_AUX_ALARMCFG, *LPNET_IPC_SINGLE_AUX_ALARMCFG; + +typedef struct tagNET_IPC_AUX_ALARMCFG +{ + DWORD dwSize; + NET_IPC_SINGLE_AUX_ALARMCFG struAlarm[MAX_AUX_ALARM_NUM]; // + BYTE byRes[64]; +}NET_IPC_AUX_ALARMCFG, *LPNET_IPC_AUX_ALARMCFG; + +typedef union tagNET_IPC_AUXALARM_UPLOAD_UNION +{ + DWORD uLen[66]; + NET_IPC_PIR_ALARMCFG struPIRAlarm; //PIR + NET_IPC_SINGLE_WIRELESS_ALARMCFG struWirelessAlarm; //߱ + NET_IPC_CALLHELP_ALARMCFG struCallHelpAlarm; //ȱ +}NET_IPC_AUXALARM_UPLOAD_UNION, *LPNET_IPC_AUXALARM_UPLOAD_UNION; + +typedef struct tagNET_IPC_AUXALARM_RESULT +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byAlarmType; //ͣIPC_AUX_ALARM_TYPE + BYTE byRes1[3]; + NET_IPC_AUXALARM_UPLOAD_UNION struAuxAlarm; // + BYTE byDeviceID[NAME_LEN];/*豸ID*/ + BYTE byRes[32]; +}NET_IPC_AUXALARM_RESULT, *LPNET_IPC_AUXALARM_RESULT; + +typedef struct tagNET_DVR_PREVIEW_DISPLAYCFG +{ + DWORD dwSize; // ṹС + BYTE byCorrectMode; //Уģʽ0-У1-оƬУ + BYTE byMountType; //װͣ0-1-棬2-ǽ + /* + 0-ģʽ1+ȫ+3PTZ (ԭзʵʱģʽһ) + 1-ģʽ2+4PTZ(ԭʵʱģʽһ) + 2-ģʽ3()+()+3PTZ + 3-ģʽ4ȫչ(+) + 4-ģʽ54PTZ + 5-ģʽ6ۣ + 6-ģʽ7: γȫչģʽ + 7-ģʽ8: 4PTZںģʽ + */ + BYTE byRealTimeOutput; //ʵʱ0 -ã1- + BYTE byRes[61]; +}NET_DVR_PREVIEW_DISPLAYCFG, *LPNET_DVR_PREVIEW_DISPLAYCFG; + +typedef struct tagNET_DVR_REMOTECONTROL_PTZ_PARAM +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + DWORD dwPTZCommand; //PTZ + NET_VCA_POINT struVcaPoint; //Ԥ + DWORD dwSpeed; //ƵٶȣȡֵΧ[0,7] + DWORD dwStop; //ֹͣʼ0-ʼ1-ֹͣ + BYTE byRes[32]; +}NET_DVR_REMOTECONTROL_PTZ_PARAM, *LPNET_DVR_REMOTECONTROL_PTZ_PARAM; + +typedef struct tagNET_DVR_PRESET_POINT_PARAM +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + DWORD dwPTZPresetCmd; //Ԥõ + NET_VCA_POINT struVcaPoint; //Ԥ + DWORD dwPresetIndex; //Ԥõţ1ʼ֧255Ԥõ + WORD wZoomCoordinate;///<Ԥõ㴰Zoomֵ + BYTE byRes[30]; +}NET_DVR_PRESET_POINT_PARAM, *LPNET_DVR_PRESET_POINT_PARAM; + +typedef struct tagNET_DVR_PTZ_CRUISE_PARAM +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + DWORD dwPTZCruiseCmd; //Ѳ + NET_VCA_POINT struVcaPoint; //Ԥ + WORD wCruiseRoute; //Ѳ·֧32·Ŵ1ʼ + WORD wCruisePoint; //Ѳ㣬֧32㣨Ŵ1ʼ + WORD wInput; //ͬѲʱֵͬԤõ(255)ʱ(255)ٶ(40) + WORD wZoomCoordinate;///<Ԥõ㴰Zoomֵ + BYTE byRes[32]; +}NET_DVR_PTZ_CRUISE_PARAM, *LPNET_DVR_PTZ_CRUISE_PARAM; + +typedef struct tagNET_DVR_WPS_PARAM +{ + DWORD dwSize; + BYTE byEnableWps; //WPS0-1- + BYTE byRes[31]; +}NET_DVR_WPS_PARAM, *LPNET_DVR_WPS_PARAM; + +typedef struct tagNET_DVR_PIN_PARAM +{ + DWORD dwSize; + BYTE byPIN[8]; //PIN + BYTE byRes[32]; +}NET_DVR_PIN_PARAM, *LPNET_DVR_PIN_PARAM; + +typedef struct tagNET_DVR_WPS_CONNECT_PARAM_ +{ + DWORD dwSize; + BYTE byConnectType; //WPSӷʽ0-PBC,1-AP PIN + BYTE byRes1[3]; + BYTE byPIN[8]; //PIN(WPSӷʽΪAP PINʱЧ) + BYTE byEssid[IW_ESSID_MAX_SIZE]; //essid(WPSӷʽΪAP PINʱЧ) + BYTE byRes[32]; +}NET_DVR_WPS_CONNECT_PARAM, *LPNET_DVR_WPS_CONNECT_PARAM; + +typedef struct tagNET_DVR_DECODER_JOINT_PARAM +{ + DWORD dwSize; // ṹС + BYTE byJointed; // 0 ûй 1 Ѿ + BYTE byRes1[3]; // ֽ + NET_DVR_IPADDR struIP; // IPַ + WORD wPort; // Ķ˿ں + WORD wChannel; // Ľͨ + BYTE sDeviceName[NAME_LEN]; //豸 + BYTE sChanName[NAME_LEN]; //Ľͨ + BYTE byRes2[32]; // ֽ +}NET_DVR_DECODER_JOINT_PARAM, *LPNET_DVR_DECODER_JOINT_PARAM; + +typedef struct tagNET_DVR_PIC_VIEW_PARAM +{ + DWORD dwSize; + NET_DVR_IPADDR struCuIp; //CUIPַ + WORD wPort;/*CU˿*/ + BYTE bySourceIndex; //źԴͨ + BYTE byRes[29]; +}NET_DVR_PIC_VIEW_PARAM, *LPNET_DVR_PIC_VIEW_PARAM; + +#define DVCS_DEVICEID_LEN 16 +//2012-03-13ͼƬעϢص +typedef struct tagNET_DVR_PICVIEW_CALLBACKPARAM +{ + DWORD dwUserID; + BYTE sDeviceID[DVCS_DEVICEID_LEN]; + LONG nPicViewHandle; //Ծ + WORD wSignalIndex; //źԴ + WORD wHeadLen; //ļͷ ˽еļͷ40 + BYTE byHeadBuf[100]; //ļͷ + BYTE byRes2[32]; +}NET_DVR_PICVIEW_CALLBACKPARAM, *LPNET_DVR_PICVIEW_CALLBACKPARAM; + +#define DEVICEID_LEN 32 + +typedef struct tagNET_DVR_DEVICEID_INFO +{ + DWORD dwSize; + DWORD dwDeviceIndex; //豸 + BYTE byWallNo; //ǽţ1ʼ + BYTE byRes1[27]; + DWORD dwChan; //ͨ + DWORD dwInputSignalIndex; //źԴʽʹ + BYTE byRes2[60]; +}NET_DVR_DEVICEID_INFO, *LPNET_DVR_DEVICEID_INFO; + + +typedef struct tagNET_DVR_SINGLE_NETPARAM +{ + DWORD dwSize; + BYTE byUseDhcp; //ǷDHCP 0xff-Ч 0- 1- + BYTE byRes1[3]; + NET_DVR_IPADDR struDevIP; // 豸IPַ + NET_DVR_IPADDR struSubnetMask; // 豸 + NET_DVR_IPADDR struGateway; // 豸 + WORD wDevPort; // 豸˿ں + BYTE byMACAddr[MACADDR_LEN]; // MAC ַ(ֻܻȡ) + BYTE byRes2[16]; +} NET_DVR_SINGLE_NETPARAM, *LPNET_DVR_SINGLE_NETPARAM; + +typedef struct tagNET_DVR_CHAN_INFO +{ + DWORD dwSize; + BYTE byValid; //0-Ч 1-Ч + BYTE byRes1[3]; + BYTE sChanName[NAME_LEN]; //ͨ + NET_DVR_COLOR struVideoColor; //źԴɫ + WORD wResolutionX; //ǰֱ--- + WORD wResolutionY; //ǰֱ--- + BYTE byRes2[40]; +} NET_DVR_CHAN_INFO, *LPNET_DVR_CHAN_INFO; + +//豸Ϣ +typedef struct tagNET_DVR_CODEDEV_INFO +{ + NET_DVR_CHAN_INFO struChanInfo[MAX_CHANNUM/*16*/];/*豸ͨϢ*/ +} NET_DVR_CODEDEV_INFO, *LPNET_DVR_CODEDEV_INFO; + +//豸Ϣ +typedef struct tagNET_DVR_DECODEDEV_INFO +{ + BYTE byRes[1408]; +} NET_DVR_DECODEDEV_INFO, *LPNET_DVR_DECODEDEV_INFO; + +//źԴϢ +typedef struct tagNET_DVR_NETSIGNAL_INFO +{ + DWORD dwSize; + BYTE byDevName[NAME_LEN/*32*/];//źԴ + NET_DVR_PU_STREAM_CFG struPuStream; + BYTE byValid; //ǷЧ0-ЧɾʱΪ0 1-ЧӺ޸ʱΪ1/ + BYTE byRes1[3]; // + BYTE sGroupName[NAME_LEN/*32*/];//źԴźԴ + WORD wResolutionX; //ǰֱ--- + WORD wResolutionY; //ǰֱ--- + BYTE byRes2[24]; +}NET_DVR_NETSIGNAL_INFO, *LPNET_DVR_NETSIGNAL_INFO; + +typedef struct tagNET_DVR_NETSIGNALDEV_INFO +{ + NET_DVR_NETSIGNAL_INFO struDevInfo; + BYTE byRes1[816]; +}NET_DVR_NETSIGNALDEV_INFO, *LPNET_DVR_NETSIGNALDEV_INFO; + +typedef union tagNET_DVR_DIFFDEV_INFO +{ + NET_DVR_CODEDEV_INFO struCodeDevInfo; //豸Ϣ + NET_DVR_DECODEDEV_INFO struDecodeDevInfo; //豸Ϣ + NET_DVR_NETSIGNALDEV_INFO struNetSignalInfo; //źԴϢ +} NET_DVR_DIFFDEV_INFO, *LPNET_DVR_DIFFDEV_INFO; + +/*ע豸Ϣ*/ +typedef enum tagNET_DVCS_DEVICE_TYPE +{ + NET_DVR_BNC_PROC = 1, /* BNC */ + NET_DVR_RGB_PROC, /* RGB */ + NET_DVR_STP_PROC, /* ת봦 */ + NET_DVR_DISP_PROC, /* ʾ */ + NET_DVR_NETSIGNAL, //źԴ + NET_DVR_SDI_PROC, //SDI + NET_DVR_BIW_PROC, //8·BNC + NET_DVR_DON_PROC, //ʾ + NET_DVR_TVI_PROC, //TVI + NET_DVR_DI2_PROC, //2·DVI봦 + NET_DVR_DO2_PROC, //2·DVI豸 + NET_DVR_UHDI_PROC, //DP/HDMI 1·4K豸 + NET_DVR_YI2_PROC, //·YPbPr + NET_DVR_HI2_PROC, // HDMIڵ(2·) + NET_DVR_VI2_PROC, // VGAڵ(2·) + NET_DVR_SI2_PROC, // SDIڵ(2·) + NET_DVR_HO2_PROC, // HDMIڵ(2·) + NET_DVR_S24G_PROC, // C20Nרǧ׽(24·) + NET_DVR_S24X_PROC // C20Nר׽(24·) +}NET_DVCS_DEVICE_TYPE; + +typedef struct tagNET_DVR_SINGLE_DEV_INFO +{ + DWORD dwSize; + DWORD dwSoftVersion; /*豸汾(ֻܻȡ) 8λΪ汾ţθ8λΪΰ汾ţ16λΪ޸汾*/ + DWORD dwSoftwareBuildDate; //汾Build, 0xYYYYMMDD + BYTE byUseInSys; /*Ƿϵͳʹ*/ + BYTE byDevStatus; /*豸ǰ״̬0-ߣ1-(ֻܻȡ)*/ + BYTE byDeviceType; /*豸(ֻܻȡ) DEVICE_TYPE*/ + BYTE byRes1[17]; + BYTE sDevName[NAME_LEN]; /*豸*/ + NET_DVR_SINGLE_NETPARAM struEtherNet[MAX_ETHERNET]; /*豸*/ + BYTE sSerialNumber[SERIALNO_LEN]; /*豸к*/ + NET_DVR_DIFFDEV_INFO struSubDevInfo; /*豸Ϣ*/ + DWORD dwDeviceIndex; //豸ţC20NY10豸ȫֱ + DWORD dwSubBoardNo; //ֲʽ豸ӰţC20NY10豸ȫֱţ1ʼΪ0ʱֶЧӰĬΪ1 + BYTE bySubSysNo; //ֲʽ豸ӰϵϵͳţӰȫ֣1ʼΪ0ʱֶЧϵͳĬΪ1 + BYTE byRes3[3]; + WORD wStartAudioTalkChanNo; //ֲʽ豸Խʼͨ + WORD wAudioTalkChanNum; //ֲʽ豸Խͨŵ + BYTE byRes2[36]; +} NET_DVR_SINGLE_DEV_INFO, *LPNET_DVR_SINGLE_DEV_INFO; + +typedef struct tagNET_DVR_DEVLIST +{ + DWORD dwSize; + DWORD dwDevNums;//豸صķֲʽ豸 + BYTE *pBuffer; + BYTE byRes1[3]; + DWORD dwBufLen;//ָ볤ȣ + BYTE byRes2[64]; +} NET_DVR_DEVLIST,*LPNET_DVR_DEVLIST; + +typedef struct tagNET_DVR_DEV_BASE_INFO +{ + DWORD dwSize; + BYTE byEnable; /*Ƿϵͳʹ*/ + BYTE byDeviceType; /*豸(ֻܻȡ)*/ + BYTE byRes1[2]; + BYTE sDevName[NAME_LEN]; /*豸*/ + BYTE byRes2[24]; +} NET_DVR_DEV_BASE_INFO,*LPNET_DVR_DEV_BASE_INFO; + +/*Ϣ*/ +typedef struct tagNET_DVR_NETPARAM +{ + DWORD dwSize; + NET_DVR_SINGLE_NETPARAM struEtherNet[MAX_ETHERNET];//̫ + BYTE byRes[64]; +} NET_DVR_NETPARAM, *LPNET_DVR_NETPARAM; + +// Ļ豸ϵ(16ֽ) +typedef struct tagNET_DVR_DISP_SCREEN +{ + DWORD dwSize; + WORD wScreenID; // ĻID, IDŴ1ʼ + BYTE byWallNo; // ǽ + BYTE byRes1; // 1 + DWORD dwDeviceIndex; // 豸 + BYTE byRes2[16]; // 2 +}NET_DVR_DISP_SCREEN, *LPNET_DVR_DISP_SCREEN; + +// Ļ +typedef struct tagNET_DVR_TEXTSHOW +{ + DWORD dwSize; + BYTE byShowText;//Ƿʾ֣1-ʾ֣0-ʾ + BYTE byRes[35]; +}NET_DVR_TEXTSHOW, *LPNET_DVR_TEXTSHOW; + +typedef struct tagNET_DVR_SCREENLIST +{ + DWORD dwSize; + BYTE byWallNo; //ǽţ1ʼ + BYTE byRes[11]; + DWORD dwScreenNums;//豸صӳʾ + BYTE *pBuffer; + DWORD dwBufLen;//ָ볤ȣ +} NET_DVR_SCREENLIST,*LPNET_DVR_SCREENLIST; + +typedef struct tagNET_DVR_OPERATE_DEVICE +{ + DWORD dwSize; + DWORD dwSubCommand; //豸1-豸ʼ2-ֹͣ + DWORD dwDeviceIndex;//豸 + BYTE byRes[44]; +}NET_DVR_OPERATE_DEVICE, *LPNET_DVR_OPERATE_DEVICE; + +//豸 +typedef struct tagNET_DVR_UPGRADE_STATE +{ + DWORD dwProgress; // 0-100 + BYTE byState; //ȣ1- 2- 3-ʧ + BYTE byRes2[31]; +}NET_DVR_UPGRADE_STATE, *LPNET_DVR_UPGRADE_STATE; +typedef void (CALLBACK *DVCS_UPGRADESTATE_CB)(LONG nUpgradeHandle, BYTE *pBuffer, DWORD dwBufSize, void* pUser); + +typedef enum +{ + NET_DVR_DATA_BMP = 0, + NET_DVR_START_CALLBACK, + NET_DVR_STREAM_SYSHEAD, + NET_DVR_STREAM_DATA +}PIC_PREVIEW_DATATYPE; + +typedef struct tagNET_DVR_START_PIC_VIEW_INFO +{ + DWORD dwSize; + DWORD dwSignalIndex; //źԴţòڴ豸ֵΪ0 + DWORD dwDeviceIndex;//豸 + BYTE byRes1[12]; + BYTE byChanIndex; //ͨ + BYTE byRes2[3]; + //Ƶۺƽ̨Բ + DWORD dwScreenNum; //ţ㿪ʼ + DWORD dwLayer; //ͼţ㿪ʼ + DWORD dwResolution;//Էֱ,1-QCIF,2-CIF,3-D1 + BYTE byFrame;//֡ʣλ֡/ + BYTE bySupportStreamView; //ͻǷ֧ԣ0-֧֣1-֧ + BYTE byRes3[14]; +}NET_DVR_START_PIC_VIEW_INFO, *LPNET_DVR_START_PIC_VIEW_INFO; + +typedef struct tagNET_DVR_DVCS_STATE_ALARM +{ + DWORD dwSize; + BYTE byAlarmType; // ,1-豸ߣ2-豸 3- 4- 5-Ա½ 6-Ԥʼ,7-Ԥ8-ֱʱ仯9-ͼиʧܣ10-豸Դ㣬11-¶쳣 12-ڴСźԴֱʲ*/ + BYTE byDeviceType; // 豸 NET_DVCS_DEVICE_TYPE */ + BYTE byWallNo; // ǽţ1ʼ 0ʾЧ + BYTE byDeviceChanIndex; // 豸ͨţ0ʾЧֵʾͨ + DWORD dwDeviceIndex; // 豸ţ 0ʾЧ + WORD wResolutionX; // ֱ- 0ʾЧ + WORD wResolutionY; // ֱ- 0ʾЧ + WORD wTemperature; // 豸¶ λ϶, 0ʾЧ + BYTE byRes[86]; +}NET_DVR_DVCS_STATE_ALARM, *LPNET_DVR_DVCS_STATE_ALARM; + +typedef struct tagNET_DVR_PIC_ADJUST +{ + DWORD dwSize; + BYTE bySubCommand; //궨DECODEPIC_LEFTADJUST + BYTE byScale; //ֵ + BYTE byPictureProportion; //ͼű 0-Ч 1-4:3, 2-16:9 + BYTE byRes[29]; +}NET_DVR_PIC_ADJUST, *LPNET_DVR_PIC_ADJUST; + +typedef struct tagNET_DVR_PICTURE_PARAM +{ + DWORD dwSize; + BYTE byControlCommand; //л1-ʾ2-أ3-ȫɾGIFͼƬ + BYTE byUseType; //ͼƬͣ1-OSD 2-ͼ3-GIF + BYTE byWallNo; //ǽǽţ1ʼ + BYTE byPictureNo; //ͼƬ + BYTE byRes[64]; +}NET_DVR_PICTURE_PARAM, *LPNET_DVR_PICTURE_PARAM; + +// 76SP豸POEͨӷʽ +typedef struct tagNET_DVR_POE_CHANNEL_ADD_MODE +{ + DWORD dwSize; //ṹС + BYTE byAddMode; //ӷʽ 0: 弴 1: ֶ + BYTE byRes1[127]; // +}NET_DVR_POE_CHANNEL_ADD_MODE, *LPNET_DVR_POE_CHANNEL_ADD_MODE; + +#define MAX_ESATA_NUM 16 +#define MAX_MINISAS_NUM 96 + +typedef struct tagNET_DVR_ESATA_MINISAS_USAGE +{ + DWORD dwSize; + BYTE byESATAUsage[MAX_ESATA_NUM]; // ʾڼeSATA0Ĭϱ 1Ĭ¼ + BYTE byMiniSASUsage[MAX_MINISAS_NUM]; // ʾڼminiSAS0Ĭϱ 1Ĭ¼ + BYTE byRes[32]; +}NET_DVR_ESATA_MINISAS_USAGE, *LPNET_DVR_ESATA_MINISAS_USAGE; + +#define MAX_DISK_NUM 128 + +typedef struct tagNET_DVR_BACKUP_LOG_PARAM +{ + DWORD dwSize; + BYTE byDiskDesc[DESC_LEN_32]; //ݴ + BYTE byHardDisk[MAX_DISK_NUM]; //豸ݵӲ̺ţݼȡǰ + BYTE byBackupHardDiskNum; //豸ݵӲ̸ + BYTE byContinue; //Ƿݣ0-1- + BYTE byAllLogBackUp ; /*Ƿȫݣ0-̺űݣ1-־Ϊ1ʱ豸ݵĴ̺źӲ̸Ч*/ + BYTE byRes[29]; +}NET_DVR_BACKUP_LOG_PARAM, *LPNET_DVR_BACKUP_LOG_PARAM; + +typedef struct tagNET_DVR_DIGITAL_CHANNEL_STATE +{ + DWORD dwSize; + BYTE byDigitalAudioChanTalkState[MAX_CHANNUM_V30]; //ʾͨĶԽ״̬ 0-δʹã1-ʹ, 0xffЧ + BYTE byDigitalChanState[MAX_CHANNUM_V30]; /*ͨ״̬ byDigitalChanErrState[0] + ʾһֵͨʾ״̬룬NET_SDK_DIGITAL_CHANNEL_STATUSԴƣ0ʾЧ*/ + BYTE byDigitalAudioChanTalkStateEx[MAX_CHANNUM_V30*3]; //ʾͨĶԽ״̬ӵMAX_CHANNUM_V30+1 MAX_CHANNUM_V30*4 0-δʹã1-ʹ, 0xffЧ + BYTE byDigitalChanStateEx[MAX_CHANNUM_V30*3]; /*ͨ״̬ byDigitalChanErrStateEx[0]ʾڴӵMAX_CHANNUM_V30+1ֵͨʾ״̬룬NET_SDK_DIGITAL_CHANNEL_STATUSԴƣ0ʾЧ*/ + BYTE byAnalogChanState[MAX_ANALOG_CHANNUM];//ʾģͨǷ,0-,1- + BYTE byRes[32]; +}NET_DVR_DIGITAL_CHANNEL_STATE, *LPNET_DVR_DIGITAL_CHANNEL_STATE; + +//ͨ״̬ +typedef enum +{ + NET_SDK_DC_STATUS_CONNECTED = 1, // + NET_SDK_DC_STATUS_CONNECTING, // + NET_SDK_DC_STATUS_BAND_WIDTH_EXCEED, //ϵͳ + NET_SDK_DC_STATUS_DOMAIN_ERROR, // + NET_SDK_DC_STATUS_CHANNEL_ERROR, //ͨŴ + NET_SDK_DC_STATUS_ACCOUNT_ERROR, //û + NET_SDK_DC_STATUS_STREAM_TYPE_NOT_SUPPORT, //Ͳ֧ + NET_SDK_DC_STATUS_CONFLICT_WITH_DVR, //豸IPַͻ + NET_SDK_DC_STATUS_CONFLICT_WITH_IPC, //IPC IPַͻ + NET_SDK_DC_STATUS_NETWORK_UNREACHBALE, //粻ɴ + NET_SDK_DC_STATUS_IPC_NOT_EXIST, //IPͨδ + NET_SDK_DC_STATUS_IPC_EXCEPTION, //IPͨ쳣 + NET_SDK_DC_STATUS_OTHER_ERROR, // + NET_SDK_DC_STATUS_RESOLUTION_NOT_SUPPORT, //IPCֱʲ֧ + NET_SDK_DC_STATUS_IPC_LAN_ERR = 15, //IPCNVRԲƥ + NET_SDK_DC_STATUS_USER_LOCKED = 16, //û + NET_SDK_DC_STATUS_NOT_ACTIVATED = 17, //豸δ + NET_SDK_DC_STATUS_USER_NOT_EXIST = 18, //û + NET_SDK_DC_STATUS_IPC_UNREGISTERED = 19, //IPͨӦ豸δע(GB28181Э) + NET_SDK_DC_STATUS_POE_PORT_DETECTING = 20, //POEͨ + NET_SDK_DC_STATUS_RESOURCE_EXCEED = 21, /* IPCֱʣʳ*/ + NET_SDK_DC_STATUS_NEED_TO_REPAIR = 22, /* Ҫ*/ + NET_SDK_DC_STATUS_ACTIVATING = 23, /* IPCڼ */ + NET_SDK_DC_STATUS_TOKEN_AUTHENTCATE_FAILED = 24 /* token֤ʧ */ +}NET_SDK_DIGITAL_CHANNEL_STATUS; + +/*************************************ITS****************************/ +#define VERSION_LEN 32 //汾 +#define MAX_OVERLAP_ITEM_NUM 50 //ַ +#define ITS_MAX_DEVICE_NUM 32 //豸 + +//ն˻Ϣ +typedef struct tagNET_ITS_BASEINFO +{ + DWORD dwSize; + BYTE byMainVer[VERSION_LEN]; // 㷨̰汾 + BYTE byMprVer[VERSION_LEN]; // ֡ʶ汾 + BYTE byBvtVer[VERSION_LEN]; // Ƶ汾 + BYTE byLptVer[VERSION_LEN]; // Ƶ汾 + BYTE byTvdVer[VERSION_LEN]; // Υ¼汾 + BYTE byTldVer[VERSION_LEN]; // źŵƼ汾 + BYTE byRes[252]; // Ԥֶ +}NET_ITS_BASEINFO,*LPNET_ITS_BASEINFO; + +//ͼƬϳɲ +typedef struct tagNET_ITS_IMGMERGE_CFG +{ + DWORD dwSize; + BYTE byIsMerge; //ǷҪϳɣ0ϳɣ1ϳɣ + BYTE byCloseupProportion;//дͼ 1-ԭʼֱʴС2-ΪԭʼֱԴ(18) + BYTE byRes1[2]; + DWORD dwOneMergeType; //ץĵͼϳɷʽܻȡдͼ + /************************************************************************/ + /* 201 ͼƬкϳ,ϳɺͼƬΪͼ1,Ϊ2 */ + /* 202 ͼƬкϳ,ϳɺͼƬΪͼ2,Ϊ1 */ + /* 203 ºϳɣдϱ. */ + /* 204 ºϳɣд±. */ + /* 205 Һϳɣдұߡ */ + /* 206 Һϳɣд */ + /* 207 Ʒֺϳɣдͼϱ */ + /* 208 Ʒֺϳɣдͼ± */ + /* 209 Σ1Ϊд */ + /* 210 Σұ1Ϊд */ + /* 301 ͼƬкϳ,ϳɺͼƬΪͼ1,Ϊ3 */ + /* 302 ͼƬкϳ,ϳɺͼƬΪͼ3,Ϊ1 */ + /* 303 ͼƬȡһд,ͼƬ;ͼƬ""ͺϳ, + д;ϳɺͼƬΪͼ2,Ϊ2 */ + /* 304 ͼƬȡһд,ͼƬ;ͼƬ""ͺϳ, + д;ϳɺͼƬΪͼ1,Ϊ1 */ + /* 305 ͼƬȡһд,ͼƬ;ͼƬ""ͺϳ, + д;ϳɺͼƬΪͼ2,Ϊ2 */ + /* 306 ͼƬȡһд,ͼƬ;ͼƬ""ͺϳ, + д;ѹͼƬֱ,ϳɺͼƬΪͼ1,Ϊ1 */ + /* 307 ͼƬ"Ʒ"кϳ */ + /* 308 ͼƬ"Ʒ"кϳ */ + /* 309 ͼƬȡһд,ͼƬ;ͼƬ""ͺϳ, + д;ϳɺͼƬΪͼ2,Ϊ2 */ + /* 310 ͼƬȡһд,ͼƬ;ͼƬ""ͺϳ, + д;ϳɺͼƬΪͼ1,Ϊ1 */ + /* 311 ͼƬȡһд,ͼƬ;ͼƬ""ͺϳ, + д;ϳɺͼƬΪͼ2,Ϊ2 */ + /* 312 ͼƬȡһд,ͼƬ;ͼƬ""ͺϳ, + д;ѹͼƬֱ,ϳɺͼƬΪͼ1,Ϊ1 */ + + /* 313 ͼƬȡһдͼƬ + ͼƬ"һ"ͺϳɣ + ˳Ϊдͼͼͼͼ */ + /* 314 ͼƬȡһдͼƬ + ͼƬ"һ"ͺϳɣ + ˳Ϊͼдͼͼͼ */ + /* 315 ͼƬȡһдͼƬ + ͼƬ"һ"ͺϳɣ + ˳Ϊͼͼдͼͼ */ + /* 316 ͼƬȡһдͼƬ + ͼƬ"һ"ͺϳɣ + ˳Ϊͼͼͼдͼ */ + /* 317 ͼƬȡһдͼƬ + ͼƬ"1"ͺϳɣ + ˳Ϊдͼͼͼͼ */ + /* 318 ͼƬȡһдͼƬ + ͼƬ"1"ͺϳɣ + ˳Ϊͼдͼͼͼ */ + /* 319 ͼƬȡһдͼƬ + ͼƬ"1"ͺϳɣ + ˳Ϊͼͼдͼͼ */ + /* 320 ͼƬȡһдͼƬ + ͼƬ"1"ͺϳɣ + ˳Ϊͼͼͼдͼ */ + /************************************************************************/ + DWORD dwTwoMergeType; //ץͼϳɷʽ + DWORD dwThreeMergeType; //ץͼϳɷʽ + DWORD dwJpegQuality; //ѹ0~100 + DWORD dwCloseupIndex; //дͼץĵڼ + DWORD dwMerageMaxSize; //ϳͼƬС,300-10240(λKB) + WORD wCloseupDeviation; // дͼƫ(50~ͼƬ߶)λ: + BYTE byRes[30]; +}NET_ITS_IMGMERGE_CFG,*LPNET_ITS_IMGMERGE_CFG; + +//ͨ +typedef struct tagNET_ITS_TRAFFIC_DATA_HOST +{ + NET_DVR_IPADDR struHostAddr; // ԶIP + WORD wHostPort; // ԶPort + BYTE byRes1[2]; + DWORD dwDataType; // ϴԶͣ£λʾ + BYTE bySuspendUpload; // Ƿͣϴ0-ϴ1-ͣϴ + BYTE byUploadStrategy; // ϴԣ0-ϴ1-ͨʱϴ + WORD wUploadInterval; // ϴʱ䣨ms1~2000òֻʷЧ + DWORD dwUploadTimeOut; //ϴʱʱ + BYTE byRes[24]; +}NET_ITS_TRAFFIC_DATA_HOST,*LPNET_ITS_TRAFFIC_DATA_HOST; + +//ϴ +typedef struct tagNET_ITS_UPLOAD_CFG +{ + DWORD dwSize; + NET_ITS_TRAFFIC_DATA_HOST struRemoteDataHost1; //սͨ1 + NET_ITS_TRAFFIC_DATA_HOST struRemoteDataHost2; //սͨ2 +}NET_ITS_UPLOAD_CFG,*LPNET_ITS_UPLOAD_CFG; + +typedef struct tagNET_DVR_SYSTEM_TIME +{ + WORD wYear; // + WORD wMonth; // + WORD wDay; // + WORD wHour; //ʱ + WORD wMinute; // + WORD wSecond; // + WORD wMilliSec; // + BYTE byRes[2]; +}NET_DVR_SYSTEM_TIME, *LPNET_DVR_SYSTEM_TIME; + +//ͨ״̬Ϣ +typedef struct tagNET_ITS_TRAFFIC_DATA_INFO +{ + DWORD dwDataQuantity; // + DWORD dwDataRsendQuantity; //δҪϴͨģ + NET_DVR_SYSTEM_TIME struStartTime; //δݵʱ + NET_DVR_SYSTEM_TIME struEndTime; //δݵʱ + NET_DVR_IPADDR struDataHost; //սͨ +}NET_ITS_TRAFFIC_DATA_INFO, *LPNET_ITS_TRAFFIC_DATA_INFO; + +//ն˹״̬ +typedef struct tagNET_ITS_WORKSTATE +{ + DWORD dwSize ; + BYTE byDevName[NAME_LEN]; // 豸 + DWORD dwRunTime; // ϵͳʱ䣬λs + NET_ITS_TRAFFIC_DATA_INFO struTrafficDataInfo[2]; //̨֧ϴõ + DWORD dwMemoryUsage; // ڴռʣڴռΪ30%˴30 + DWORD dwCpuUsage; // cpuռʣcpuռΪ30%˴30 + DWORD dwDevTemperature; // ¶ + DWORD dwDeviceStatic; // 豸״̬,0-,1-CPUռ̫,85%,2-Ӳ,紮 + NET_DVR_DISKSTATE struHardDiskStatic[MAX_DISKNUM_V30]; //Ӳ״̬ + NET_DVR_CHANNELSTATE_V30 struChanStatic[MAX_CHANNUM_V30]; //ͨ״̬ + BYTE byAlarmInStatic[MAX_ALARMIN_V30]; //ڵ״̬,0-ûб,1-б + BYTE byAlarmOutStatic[MAX_ALARMOUT_V30]; //˿ڵ״̬,0-û,1-б + DWORD dwLocalDisplay; //ʾ״̬,0-,1- + BYTE byAudioInChanStatus[8]; //ʾͨ״̬ 0-δʹã1-ʹУ0ʾ1ͨ + BYTE byRes[36]; // +}NET_ITS_WORKSTATE, *LPNET_ITS_WORKSTATE; + +//ڽͨûȡ +typedef struct tagNET_ITS_ECT_WORKSTATE_COMMAND +{ + DWORD dwSize; + DWORD dwChannel; + BYTE byRes[256]; // +}NET_ITS_ECT_WORKSTATE_COMMAND, *LPNET_ITS_ECT_WORKSTATE_COMMAND; + +typedef struct tagNET_ITS_ECTWORKSTATE +{ + DWORD dwSize ; + BYTE byDevName[NAME_LEN]; // 豸 + DWORD dwRunTime; // ϵͳʱ䣬λs + NET_ITS_TRAFFIC_DATA_INFO struTrafficDataInfo[2]; //̨֧ϴõ + DWORD dwMemoryUsage; // ڴռʣڴռΪ30%˴30 + DWORD dwCpuUsage; // cpuռʣcpuռΪ30%˴30 + DWORD dwDevTemperature; // ¶ + DWORD dwDeviceStatic; // 豸״̬,0-,1-CPUռ̫,85%,2-Ӳ,紮 + NET_DVR_DISKSTATE struHardDiskStatic[MAX_DISKNUM_V30]; //Ӳ״̬ + BYTE byAlarmInStatic[MAX_ALARMIN_V30]; //ڵ״̬,0-ûб,1-б + BYTE byAlarmOutStatic[MAX_ALARMOUT_V30]; //˿ڵ״̬,0-û,1-б + DWORD dwLocalDisplay; //ʾ״̬,0-,1- + BYTE byRes[256]; // +}NET_ITS_ECTWORKSTATE, *LPNET_ITS_ECTWORKSTATE; + +// ͼƬϢ +typedef struct tagNET_ITS_PICTURE_INFO +{ + DWORD dwDataLen; //ýݳ + // 0:ͼ;1:ͼ;2:ϳͼ; 3:дͼ;4:ֱͼ;5:;6:ͼ(ʻ);7:ͼ(ʻ)ͼ;8-ǻ;9-;10-ԭʼ;11-Ŀͼ;12-ʻͼ ;13-ʻͼ;14-ͼСͼ + //15 - ԶͼƬ(ûԼϴΥͼƬ) + BYTE byType; + // 0-ֱϴ; 1-ƴ洢URL(3.7Ver)ԭȵͼƬݱURLݣͼƬȱURL + BYTE byDataType; + BYTE byCloseUpType;//дͼͣ0-,1-ǻ,2- + BYTE byPicRecogMode; //ͼƬʶ0-ʶ1-ʶ(βʶ) + DWORD dwRedLightTime; //ĺʱ s + BYTE byAbsTime[32]; //ʱ,yyyymmddhhmmssxxx,e.g.20090810235959999 λΪ + NET_VCA_RECT struPlateRect; //λ,byTypeΪ8-ǻ;9-ʱʾ + NET_VCA_RECT struPlateRecgRect; //ʶ꣬ͼƬΪ12-ʻͼ13-ʻͼǣΪʻԱ + BYTE *pBuffer; //ָ + DWORD dwUTCTime;//UTCʱ䶨 + BYTE byCompatibleAblity; //ֶ 0ʾЧ1ʾЧ; bit0-ʾdwUTCTimeֶЧ + BYTE byTimeDiffFlag; /*ʱֶǷЧ 0-ʱЧ 1-ʱЧ */ + char cTimeDifferenceH; /*UTCʱСʱ-12 ... +14 +ʾ,byTimeDiffFlagΪ1ʱЧ*/ + char cTimeDifferenceM; /*UTCʱӣ-30, 30, 45 +ʾbyTimeDiffFlagΪ1ʱЧ*/ + BYTE byRes2[4]; // +}NET_ITS_PICTURE_INFO, *LPNET_ITS_PICTURE_INFO; + + +typedef struct tagNET_ITS_ILLEGAL_INFO +{ + BYTE byIllegalInfo[MAX_ILLEGAL_LEN/*64*/];// ΥϢַʽ + BYTE byRes[256]; +}NET_ITS_ILLEGAL_INFO,*LPNET_ITS_ILLEGAL_INFO; + + +// +typedef struct tagNET_ITS_PLATE_RESULT +{ + DWORD dwSize; //ṹ + DWORD dwMatchNo; //ƥ,(,,)ƥ + BYTE byGroupNum; //ͼƬһץĵһͼƬʱƥݣ + BYTE byPicNo; //ĵͼƬţյͼƬ󣬱ʾ;ճʱͼƬʱҪɾ + BYTE bySecondCam; //ǷڶץģԶץĵԶǰץĵĺĿлõ + BYTE byFeaturePicNo; //Ƶ羯ȡڼͼΪдͼ,0xff-ʾȡ + BYTE byDriveChan; // + BYTE byVehicleType; //ͣοVTR_RESULT + BYTE byDetSceneID;//ⳡ[1,4], IPCĬ0 + //ԣλʾ0- ޸(ͨ)bit1- Ʊ공(ı־)bit2- ΣƷֵ0- 1- + //ýڵѲʹ,ʹbyYellowLabelCarbyDangerousVehiclesжǷƱ공ΣƷ + BYTE byVehicleAttribute; + WORD wIllegalType; //ΥͲù궨 + BYTE byIllegalSubType[8]; //Υ + BYTE byPostPicNo; //ΥʱȡڼͼƬΪͼ,0xff-ʾȡ + //ͨ(Чͨź豸ϴͨһ£ں˺ ͨһ) + BYTE byChanIndex; + WORD wSpeedLimit; //ޣʱЧ + BYTE byChanIndexEx; //byChanIndexEx*256+byChanIndexʾʵͨš + /*λ־,0~Ϊͨʶ𱨾, + 1~Ϊλò(ͨPUT /ISAPI/Traffic/channels//vehiclePositionControl?format=json) + 2~Ϊܲ(Ԥõ㼰GPS)(ͨPUT /ISAPI/Traffic/channels//vehicleMonitor//startTask, + unarmedVehicleDetectionEnableĿ공ʹܣΪtrueʱֻϱⱨ޳ܲ˸ֶȡֵΪ02) + 3~Ϊֶ(/ISAPI/Traffic/channels//manualVehicleMonitor?format=json) + 4~Ϊճ(ó)ͨǷ֧ճ, + (ͨ/ISAPI/Traffic/channels//vehicleDetect/capabilitiesisSupportDailyVehicleMonitorж,ճʱ,豸ϱANPRʵʱϱvehicleMonitor) + ظֶΪͨ + */ + BYTE byVehiclePositionControl; + NET_DVR_PLATE_INFO struPlateInfo; //Ϣṹ + NET_DVR_VEHICLE_INFO struVehicleInfo; //Ϣ + BYTE byMonitoringSiteID[48]; //ʾ + BYTE byDeviceID[48]; //豸 + BYTE byDir; //ʾ1-У򣩣2-()3-˫4-ɶ5-,6-򶫣7-ɱϣ8- + BYTE byDetectType; //ⷽʽ,1-ظд2-Ƶ3-֡ʶ4-״ﴥ + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byCarDirectionType; //ʻķ0ʾ£1ʾϣʵʳʻ֣,2ʾδ֪ + //wIllegalTypeΪʱʹøòwIllegalTypeΪֵʱwIllegalTypeΪ׼òЧ + DWORD dwCustomIllegalType; //ΥͶ(ûԶ) + /*Ϊ0~ָʽʱΪϵΥͣwIllegalTypedwCustomIllegalTypeЧֵΥ롣 + Ϊ1~ַʽʱpIllegalInfoBufЧϵΥͣwIllegalTypedwCustomIllegalTypeȻֵΥ*/ + BYTE* pIllegalInfoBuf; //ΥַϢṹָ룻ָNET_ITS_ILLEGAL_INFO + BYTE byIllegalFromatType; //ΥϢʽͣ 0~ָʽ 1~ַʽ + BYTE byPendant;// 0-ʾδ֪,1-2- + BYTE byDataAnalysis; //0-δ, 1-ѷ + BYTE byYellowLabelCar; //0-ʾδ֪, 1-ǻƱ공,2-Ʊ공 + BYTE byDangerousVehicles; //0-ʾδ֪, 1-ΣƷ,2-ΣƷ + //ֶΰPilotַΪʻCopilotַΪʻ + BYTE byPilotSafebelt;//0-ʾδ֪,1-ϵȫ,2-ϵȫ + BYTE byCopilotSafebelt;//0-ʾδ֪,1-ϵȫ,2-ϵȫ + BYTE byPilotSunVisor;//0-ʾδ֪,1-,2- + BYTE byCopilotSunVisor;//0-ʾδ֪, 1-,2- + BYTE byPilotCall;// 0-ʾδ֪, 1-绰,2-绰 + //0-բ1-δբ (רʷƥǷբɹı־)byAlarmDataTypeΪ0-ʵʱʱ 0-δբ 1-բ + BYTE byBarrierGateCtrlType; + BYTE byAlarmDataType;//0-ʵʱݣ1-ʷ + NET_DVR_TIME_V30 struSnapFirstPicTime;//˵ʱ(ms)ץĵһͼƬʱ䣩 + DWORD dwIllegalTime;//Υʱ䣨ms = ץһͼƬʱ - ץĵһͼƬʱ + DWORD dwPicNum; //ͼƬpicGroupNumͬϢͼƬͼƬϢstruVehicleInfoEx + NET_ITS_PICTURE_INFO struPicInfo[6]; //ͼƬϢ,Żص6ͼ +}NET_ITS_PLATE_RESULT, *LPNET_ITS_PLATE_RESULT; + +//ڳץϴ +typedef struct tagNET_ITS_GATE_VEHICLE +{ + DWORD dwSize; //ṹ + DWORD dwMatchNo; //ƥ,(,,)ƥ Ĭ0 + BYTE byGroupNum; //ͼƬһץĵһͼƬʱƥݣĬ 1 ץͼƬ ƺʱ + BYTE byPicNo; //ĵͼƬϴͼƬţյͼƬ󣬱ʾɡ + //ճʱͼƬʱҪɾ + BYTE bySecondCam; //ǷڶץģԶץĵԶǰץĵĺĿлõʾǰץͼƬ + BYTE byRes; //ΪԤ + WORD wLaneid; //132ţԾ + BYTE byCamLaneId; //Ӧ116õijţԾͬ + BYTE byRes1; // + BYTE byAlarmReason[MAX_ALARMREASON_LEN]; //Զ屨 ĬΪ + WORD wBackList; //ΪǷ񱨾 0 ʾΪ 1 ʾֹ + WORD wSpeedLimit; //ޣʱЧkm/h + DWORD dwChanIndex; //ͨ + NET_DVR_PLATE_INFO struPlateInfo; //Ϣṹ + NET_DVR_VEHICLE_INFO struVehicleInfo; //Ϣ ٶ + BYTE byMonitoringSiteID[MAX_ID_LEN]; //ʾ + BYTE byDeviceID[MAX_ID_LEN]; //豸 + BYTE byDir; //ʾ0- 1 볡2 + BYTE byDetectType; //ⷽʽ, 0- 1-ظд2-Ƶ3-֡ʶ4-״ﴥ + BYTE byRes2[2]; + BYTE byCardNo[MAX_ID_LEN]; // + DWORD dwPicNum; //ͼƬpicGroupNumͬϢͼƬͼƬϢstruVehicleInfoEx + NET_ITS_PICTURE_INFO struPicInfo[4]; //ͼƬϢ,Żص4ͼ + //2013-11-19 ڳץϴʽ + BYTE bySwipeTime[MAX_TIME_LEN];//ˢʱ ʱʽΪyyyymmddhh24missfff + BYTE byRes3[224]; +}NET_ITS_GATE_VEHICLE, *LPNET_ITS_GATE_VEHICLE; + +//ʶ +typedef struct tagNET_ITS_GATE_FACE +{ + DWORD dwSize; //ṹ峤 + BYTE byGroupNum; //ͼƬһץĵһͼƬʱƥݣ + BYTE byPicNo; //ĵͼƬţյͼƬ󣬱ʾɡ + //ճʱͼƬʱҪɾ + BYTE byFeaturePicNo; //ץʱȡڼͼΪдͼ,0xff-ʾȡ + BYTE byRes; // + WORD wLaneid; //132ţԾ + BYTE byCamLaneId; //Ӧ116õijţԾͬ + BYTE byDir; //ʾ0- 1 볡 2 + DWORD dwChanIndex; //ͨ + BYTE byMonitoringSiteID[MAX_ID_LEN]; //ʾ + BYTE byDeviceID[MAX_ID_LEN]; //豸 + NET_VCA_FACESNAP_RESULT struFaceInfo; //ץ + BYTE byRes2[256]; //Ԥ +}NET_ITS_GATE_FACE, *LPNET_ITS_GATE_FACE; + +//ͣϴ +typedef struct _tagNET_ITS_PARK_VEHICLE_ +{ + DWORD dwSize; //ṹ + BYTE byGroupNum; //ͼƬѯץĵͼƬ + BYTE byPicNo; //ĵͼƬϴͼƬţյͼƬ󣬱ʾ + //ճʱͼƬʱҪɾ + BYTE byLocationNum; //ͼƬijλ + BYTE byParkError; //ͣ쳣0- 1 쳣 + BYTE byParkingNo[MAX_PARKNO_LEN];//λ + BYTE byLocationStatus; //λ״̬0-޳1г + BYTE bylogicalLaneNum;//߼λţ0-3һܹ4λ 0ߣ3ұߣ + WORD wUpLoadType;//λʾ0~Ѳϴ1~仯ϴ + BYTE byRes1[4]; //ֽ + DWORD dwChanIndex; //ͨͨ + NET_DVR_PLATE_INFO struPlateInfo; //Ϣṹ + NET_DVR_VEHICLE_INFO struVehicleInfo; //Ϣ + BYTE byMonitoringSiteID[MAX_ID_LEN]; //ʾ + BYTE byDeviceID[MAX_ID_LEN]; //豸 + DWORD dwPicNum; //ͼƬpicGroupNumͬϢͼƬ + //ͼƬϢstruVehicleInfoEx + NET_ITS_PICTURE_INFO struPicInfo[2]; //ͼƬϢ,Żص2ͼ + BYTE byRes2[256]; +}NET_ITS_PARK_VEHICLE, *LPNET_ITS_PARK_VEHICLE; + +//ͨȡ֤ +typedef struct tagNET_DVR_TFS_ALARM +{ + DWORD dwSize; //ṹС + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + DWORD dwIllegalType; //Υͣù궨壬dwIllegalTypeֵΪ0xffffffffʱʹbyIllegalCode + DWORD dwIllegalDuration; //Υʱ䣨λ룩 = ץһͼƬʱ - ץĵһͼƬʱ + BYTE byMonitoringSiteID[MONITORSITE_ID_LEN];//ʾţ·ڱšڲţ + BYTE byDeviceID[DEVICE_ID_LEN]; //豸 + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + NET_DVR_SCENE_INFO struSceneInfo; //Ϣ + NET_DVR_TIME_EX struBeginRecTime; //¼ʼʱ + NET_DVR_TIME_EX struEndRecTime; //¼ʱ + NET_DVR_AID_INFO struAIDInfo; //ͨ¼Ϣ + NET_DVR_PLATE_INFO struPlateInfo; //Ϣ + NET_DVR_VEHICLE_INFO struVehicleInfo; //Ϣ + DWORD dwPicNum; //ͼƬ + NET_ITS_PICTURE_INFO struPicInfo[8]; //ͼƬϢ8 + BYTE bySpecificVehicleType; //峵 οʶVTR_RESULT + BYTE byLaneNo; // + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + NET_DVR_TIME_V30 struTime;//ֶλǰʱ䡣 + DWORD dwSerialNo;//ţ + BYTE byVehicleAttribute;//ԣλʾ0- ޸(ͨ)bit1- Ʊ공(ı־)bit2- ΣƷֵ0- 1- + BYTE byPilotSafebelt;//0-ʾδ֪,1-ϵȫ,2-ϵȫ + BYTE byCopilotSafebelt;//0-ʾδ֪,1-ϵȫ,2-ϵȫ + BYTE byPilotSunVisor;//0-ʾδ֪,1-,2- + BYTE byCopilotSunVisor;//0-ʾδ֪, 1-,2- + BYTE byPilotCall;// 0-ʾδ֪, 1-绰,2-绰 + BYTE byRes2[2]; // + BYTE byIllegalCode[ILLEGAL_LEN/*32*/];//ΥչdwIllegalTypeֵΪ0xffffffffʹֵ + WORD wCountry; // ֵ,öCOUNTRY_INDEX + BYTE byRegion; //ֵ,0-1-ŷ(Europe Region)2-(Russian Region)3-ŷ&˹(EU&CIS) , 4-жMiddle East0xff- + BYTE byCrossLine;//Ƿѹͣ෽ͣ0-ʾδ֪1-ѹߣ2-ѹ + BYTE byParkingSerialNO[SERIAL_NO_LEN/*16*/];//λ + BYTE byCrossSpaces;//Ƿ粴λͣ෽ͣ0-ʾδ֪1-δ粴λͣ2-粴λͣ + BYTE byAngledParking;//Ƿбͣ෽ͣ, 0-ʾδ֪1-δбͣ2-бͣ + BYTE byAlarmValidity;//ŶȣʻʻŶȣΧ0-100ŶԽߣ¼ʵԽ + BYTE byDoorsStatus;//״̬ 0-Źر 1-ſ + DWORD dwXmlLen;//XMLϢ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pXmlBuf; // XMLϢָ,XMLӦEventNotificationAlert XML Block +#else + char* pXmlBuf; // XMLϢָ,XMLӦEventNotificationAlert XML Block + BYTE byRes3[4]; +#endif + BYTE byVehicleHeadTailStatus;//ͷβ״̬ 0- 1-ͷ 2-β + BYTE byBrokenNetHttp; //־λ0-شݣ1-ش + BYTE byRes[30]; // +}NET_DVR_TFS_ALARM,*LPNET_DVR_TFS_ALARM; + +typedef struct tagNET_DVR_SOFTWARE_SERVICE_CFG +{ + DWORD dwSize;//ṹС + BYTE byThirdStreamEnabled; //Ƿã0-1- + BYTE bySubStreamEnabled; //Ƿã0-1- + BYTE byRes[254]; +}NET_DVR_SOFTWARE_SERVICE_CFG, *LPNET_DVR_SOFTWARE_SERVICE_CFG; + +typedef struct tagNET_ITS_ECT_BLOCKLIST +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE bylogicalLaneNo;//߼ + BYTE byRes1[3]; + BYTE byLaneName[NAME_LEN];// 32 + NET_DVR_PLATE_INFO struPlateInfo; //Ϣṹ + BYTE byRes2[256]; // ֽ +}NET_ITS_ECT_BLOCKLIST, *LPNET_ITS_ECT_BLOCKLIST; + +//IPCͨ +typedef struct tagNET_ITS_IPC_CHAN_CFG +{ + DWORD dwSize; + BYTE byCameraType; //࣬0-1-Ȧ2-Ƶ,3-һ + BYTE byRes1[3]; // + BYTE byMonitoringSiteID[48]; //ʾ + BYTE byDeviceID[48]; //豸 + BYTE byDirectionNo; //ʾ,0-,1-,2-,3-˫,4-ɶ,5-,6-,7-ɱ,8- + BYTE byMonitorInfo[48]; //ʾϢ + BYTE byRes2[15]; // +}NET_ITS_IPC_CHAN_CFG, *LPNET_ITS_IPC_CHAN_CFG; + +//豸Ϣ +typedef struct tagNET_ITS_SINGLE_DEVICE_INFO +{ + DWORD dwDeviceType; //豸ͣ0-նˣ1-2-ƣ3-4-Ȧ15-Ȧ26-Ȧ37-̵Ƽ8- + //9-״10-բ11-ڿƻ(Ʊ)12-LEDʾ13-Զ14-15-ɨǹ + //16-Ʊݴӡ17-ڵ(յ) , 18- + DWORD dwDirID; // + DWORD dwLaneID; // + DWORD dwDeviceState; //豸״̬ 0 0 쳣ο豸쳣 + BYTE byDeviceName[32]; //豸 + BYTE byDeviceID[48]; //豸ţһкţõַ + NET_DVR_TIME_V30 struTriggerTime;//ʱ + BYTE byRelateChan; //ͨţ1~8 AC1~4 AC1~2 + BYTE byRes[3]; +}NET_ITS_SINGLE_DEVICE_INFO,*LPNET_ITS_SINGLE_DEVICE_INFO; + +//·Ϣ +typedef struct tagNET_ITS_ROADINFO +{ + DWORD dwSize; + DWORD dwChannel; //ͨ,0xffffffffʾնˣʾӦ + BYTE byTriggerMode; // 0:Ȧ; 1:Ƶ + BYTE byRes1[3]; + DWORD dwDeviceNum; //ʵ豸 + BYTE byMonitoringSiteID[48]; //ʾ + BYTE byRoadInfo[48]; //ʾϢ + NET_ITS_SINGLE_DEVICE_INFO struSingleDevice[ITS_MAX_DEVICE_NUM]; + BYTE byRes[16]; +}NET_ITS_ROADINFO,*LPNET_ITS_ROADINFO; + +//·Ϣ +typedef struct tagNET_ITS_TRAFFIC_DRIVE_CHAN +{ + BYTE byDriveChan; // + BYTE byRes1[3]; // Ԥ + WORD wCarFlux; // + WORD wPasserbyFlux; // + WORD wShayFlux; //ֳ + float fAverOccpancy; //ƽռʰٷֱ + WORD wAverSpeed; //ƽ(km/h) + WORD wAverCarDis; //ƽ(λ) + BYTE byRes2[16]; // Ԥ +}NET_ITS_TRAFFIC_DRIVE_CHAN,*LPNET_ITS_TRAFFIC_DRIVE_CHAN; + +typedef struct tagNET_ITS_TRAFFIC_COLLECT +{ + DWORD dwSize; //ṹС + BYTE byMonitoringSiteID[48]; //ʾ + BYTE byDeviceID[48]; //豸 + BYTE byLaneNum; // + BYTE byDir; //ʾ + BYTE byDetectType; //ⷽʽ1-ظȦ2-Ƶ3֡ʶ4״ﴥ + BYTE byRes1; //Ԥ + DWORD dwChannel; //ͨ + NET_DVR_SYSTEM_TIME struStartTime; //ͳƿʼʱ + DWORD dwSamplePeriod; //ͳʱ,λ + NET_ITS_TRAFFIC_DRIVE_CHAN struDriveChan[6]; //ͨ,ÿ֧6 + BYTE byRes2[24]; //Ԥ +}NET_ITS_TRAFFIC_COLLECT,*LPNET_ITS_TRAFFIC_COLLECT; + +typedef struct tagNET_ITS_OVERLAPCFG_COND +{ + DWORD dwSize; + DWORD dwChannel; + DWORD dwConfigMode; //ģʽ0-նˣ1-ǰ(ֱǰ˻ն˽ǰ) + BYTE byPicModeType;//0-ʾСͼ(ͼ)1-ʾͼ(ϳͼ) + /* + 0ʾ ץMPRģʽ֡ץ IPCʹã + 1 ʾ ץ HVT ģʽ쿨IPCʹã + */ + BYTE byRelateType; + BYTE byRes[14]; +}NET_ITS_OVERLAPCFG_COND, *LPNET_ITS_OVERLAPCFG_COND; + +typedef enum ITS_OVERLAP_ITEM_TYPE +{ + OVERLAP_ITEM_NULL = 0, //0-δ֪ + OVERLAP_ITEM_SITE, //1-ص + OVERLAP_ITEM_ROADNUM, //2-·ڱ + OVERLAP_ITEM_INSTRUMENTNUM, //3-豸 + OVERLAP_ITEM_DIRECTION, //4- + OVERLAP_ITEM_DIRECTIONDESC, //5- + OVERLAP_ITEM_LANENUM, //6- + OVERLAP_ITEM_LANEDES, //7- + OVERLAP_ITEM_CAPTIME, //8-ץʱ() + OVERLAP_ITEM_CAPTIME_MILLSECOND, //9-ץʱ() + OVERLAP_ITEM_PLATENUM, //10-ƺ + OVERLAP_ITEM_CARCOLOR, //11-ɫ + OVERLAP_ITEM_CARTYPE, //12- + OVERLAP_ITEM_CARBRAND, //13-Ʒ + OVERLAP_ITEM_CARSPEED, //14-ٶ + OVERLAP_ITEM_SPEEDLIMIT, //15-ٱ־ + OVERLAP_ITEM_CARLENGTH, //16-1~99m + OVERLAP_ITEM_ILLEGALNUM, //17-Υ(ΥӦûõģӦֱӵΥϢ١١Сơռѹߵ) + OVERLAP_ITEM_MONITOR_INFO, //18-ʾϢ + OVERLAP_ITEM_ILLEGALDES, //19-ΥΪ + OVERLAP_ITEM_OVERSPEED_PERCENT, //20-ٱ + OVERLAP_ITEM_RED_STARTTIME, //21-ƿʼʱ + OVERLAP_ITEM_RED_STOPTIME, //22-ƽʱ + OVERLAP_ITEM_RED_DURATION, //23-ʱ + OVERLAP_ITEM_SECUNITY_CODE, //24-α + OVERLAP_ITEM_CAP_CODE, //25-ץı + OVERLAP_ITEM_SEATBELT, //26-ȫ + OVERLAP_ITEM_MONITOR_ID, //27-ʾ + OVERLAP_ITEM_SUN_VISOR, //28- + OVERLAP_ITEM_LANE_DIRECTION, //29-ʻ + OVERLAP_ITEM_LICENSE_PLATE_COLOR, // 30-ɫ + OVERLAP_ITEM_SCENE_NUMBER, //31- + OVERLAP_ITEM_SCENE_NAME, //32- + OVERLAP_ITEM_YELLOW_SIGN_CAR, //33-Ʊ공 + OVERLAP_ITEM_DANGEROUS_CAR, //34-ΣƷ + OVERLAP_ITEM_CAR_SUBBRAND, //35-Ʒ + OVERLAP_ITEM_CAR_DIRECTION, //36- + OVERLAP_ITEM_PENDANT, //37- + OVERLAP_ITEM_CALL, //38-绰 + OVERLAP_ITEM_CAR_VALIDITY, //39-Ŷ + OVERLAP_ITEM_CAR_COUNTRY, //40- + OVERLAP_ITEM_CAR_PLATE_TYPE, //41-ͣοö + OVERLAP_ITEM_CAR_PLATE_SIZE, //42-Ƴߴ + OVERLAP_ITEM_CAR_PLATE_COLOR, //43-ɫ + OVERLAP_ITEM_CAR_PLATE_CATEGORY, //44-ƸϢ + OVERLAP_ITEM_ACCIDENT, //45-ͨ¹ + OVERLAP_ITEM_SMOKING, //46- + OVERLAP_ITEM_HELMET, //47-ͷ + OVERLAP_ITEM_MANNED, //48- + OVERLAP_ITEM_HUMAN, //49- + OVERLAP_ITEM_PLAYMOBILEPHONE, //50-ֻ + OVERLAP_ITEM_ADR //51- ADRƣ ŷ޹ҳеĻ˫ƣҪʾڶƺţADRƵʾ +}ITS_OVERLAP_ITEM_TYPE; + +//ַÿһϢṹ +typedef struct tagNET_ITS_OVERLAP_SINGLE_ITEM_PARAM +{ + BYTE byRes1[2]; // + BYTE byItemType; //ͣOVERLAP_ITEM_TYPE + BYTE byChangeLineNum; //Ļ[0-10](Ĭ0) + BYTE bySpaceNum; //Ŀո[0-255](Ĭ0) + BYTE byRes2[2]; + BYTE byEnablePos; //Ƿʾ + WORD wStartPosTop; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + WORD wStartPosLeft; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + BYTE byRes[8]; +}NET_ITS_OVERLAP_SINGLE_ITEM_PARAM, *LPNET_ITS_OVERLAP_SINGLE_ITEM_PARAM; + +typedef struct tagNET_ITS_OVERLAP_ITEM_PARAM +{ + NET_ITS_OVERLAP_SINGLE_ITEM_PARAM struSingleItem[MAX_OVERLAP_ITEM_NUM]; //ַ + DWORD dwLinePercent; //аٷֱ(0-100),(Ĭ100) + DWORD dwItemsStlye; //ӷʽ0-,1-(ĬϺ) + WORD wStartPosTop; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + WORD wStartPosLeft; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + WORD wCharStyle; //,0-1-κ(Ĭ) + WORD wCharSize; //ַС,0--16x16,1--32x32,2-48x48,3--64x64 (Ĭ),8x128(Ver3.7) + WORD wCharInterval; //ַ࣬[016]赥λ(Ĭ) + BYTE byRes1[2]; + DWORD dwForeClorRGB; //ǰɫRGBֵbit0-1:(B) bit2-3:(G) bit4-5:(G) (Ĭx00FFFFFF-) + DWORD dwBackClorRGB; //ɫRGBֵ,ֻͼƬЧbit0-1:(B) bit2-3:(G) bit4-5:(G) (Ĭx00000000-) + BYTE byColorAdapt; //ɫǷӦ0-1- + //(Ver3.7 ) + // ʹ 0-, 1-㣨ϸעͣٶ,ֵ 3λ0 + BYTE byParamFillZeroEnble; + BYTE byPlateLeftCornerEnable;// СͼϽʹ 0-, 1- + BYTE byRes2; + WORD wStartSPicPosTop; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + WORD wStartSPicPosLeft; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + //OSDλ 0-ͼƬ,1-ͼƬϱԵ,2-ͼƬ±ԵϳͼרõϱԵ⣩V3.7 + BYTE byOsdLocate; + BYTE byRes[23]; +}NET_ITS_OVERLAP_ITEM_PARAM, *LPNET_ITS_OVERLAP_ITEM_PARAM; + +//Ϣ +typedef struct tagNET_ITS_OVERLAP_INFO_PARAM +{ + BYTE bySite[128]; //ص + BYTE byRoadNum[32]; //·ڱ + BYTE byInstrumentNum[32]; //豸 + BYTE byDirection[32]; // + BYTE byDirectionDesc[32]; // + BYTE byLaneDes[32]; // + BYTE byRes1[32]; // + BYTE byMonitoringSite1[44]; //ʾ1Ϣ + BYTE byMonitoringSite2[32]; //ʾ2Ϣ + BYTE byRes[64]; // +}NET_ITS_OVERLAP_INFO_PARAM, *LPNET_ITS_OVERLAP_INFO_PARAM; + +typedef struct tagNET_ITS_OVERLAP_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿã0-ã1- + BYTE byRes1[3]; + NET_ITS_OVERLAP_ITEM_PARAM struOverLapItem; //ַ + NET_ITS_OVERLAP_INFO_PARAM struOverLapInfo; //ַϢ + BYTE byRes[32]; +}NET_ITS_OVERLAP_CFG, *LPNET_ITS_OVERLAP_CFG; + +//ַÿһϢṹ +typedef struct tagNET_ITS_OVERLAP_SINGLE_ITEM_PARAM_V50 +{ + BYTE byRes1[2]; // + BYTE byItemType; //ͣOVERLAP_ITEM_TYPE + BYTE byChangeLineNum; //Ļ[0-10](Ĭ0) + BYTE bySpaceNum; //Ŀո[0-255](Ĭ0) + BYTE byRes2[2]; + BYTE byEnablePos; //Ƿʾ + WORD wStartPosTop; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + WORD wStartPosLeft; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + //ԶͣbyItemTypeӦɽbyItemTypeԶơԶΪգĬbyItemTypeе + BYTE byItemTypeCustom[32]; + BYTE byRes[8]; +}NET_ITS_OVERLAP_SINGLE_ITEM_PARAM_V50, *LPNET_ITS_OVERLAP_SINGLE_ITEM_PARAM_V50; + +typedef struct tagNET_ITS_OVERLAP_ITEM_PARAM_V50 +{ + NET_ITS_OVERLAP_SINGLE_ITEM_PARAM_V50 struSingleItem[MAX_OVERLAP_ITEM_NUM]; //ַ + DWORD dwLinePercent; //аٷֱ(0-100),(Ĭ100) + DWORD dwItemsStlye; //ӷʽ0-,1-(ĬϺ) + WORD wStartPosTop; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + WORD wStartPosLeft; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + WORD wCharStyle; //,0-1-κ(Ĭ) + WORD wCharSize; //ַС,0--16x16,1--32x32,2-48x48,3--64x64 (Ĭ),8x128(Ver3.7) + WORD wCharInterval; //ַ࣬[016]赥λ(Ĭ) + BYTE byRes1[2]; + DWORD dwForeClorRGB; //ǰɫRGBֵbit0-1:(B) bit2-3:(G) bit4-5:(G) (Ĭx00FFFFFF-) + DWORD dwBackClorRGB; //ɫRGBֵ,ֻͼƬЧbit0-1:(B) bit2-3:(G) bit4-5:(G) (Ĭx00000000-) + BYTE byColorAdapt; //ɫǷӦ0-1- + //(Ver3.7 ) + // ʹ 0-, 1-㣨ϸעͣٶ,ֵ 3λ0 + BYTE byParamFillZeroEnble; + BYTE byPlateLeftCornerEnable;// СͼϽʹ 0-, 1- + BYTE byRes2; + WORD wStartSPicPosTop; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + WORD wStartSPicPosLeft; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + //OSDλ 0-ͼƬ,1-ͼƬϱԵ,2-ͼƬ±ԵϳͼרõϱԵ⣩V3.7 + BYTE byOsdLocate; + BYTE byRes[63]; +}NET_ITS_OVERLAP_ITEM_PARAM_V50, *LPNET_ITS_OVERLAP_ITEM_PARAM_V50; + +typedef struct tagNET_ITS_OVERLAP_CFG_V50 +{ + DWORD dwSize; + BYTE byEnable; //Ƿã0-ã1- + BYTE byRes1[3]; + NET_ITS_OVERLAP_ITEM_PARAM_V50 struOverLapItemV50; //ַ + NET_ITS_OVERLAP_INFO_PARAM struOverLapInfo; //ַϢ + BYTE byRes[120]; +}NET_ITS_OVERLAP_CFG_V50, *LPNET_ITS_OVERLAP_CFG_V50; + +#define MAX_PTZCRUISE_POINT_NUM 32 //֧32Ѳ + + +//ԤõϢ +typedef struct tagNET_DVR_PRESET_INFO +{ + DWORD dwSize; + DWORD dwPresetNum; //Ԥõ + DWORD dwGroupNum; // + BYTE byRes[8]; +}NET_DVR_PRESET_INFO, *LPNET_DVR_PRESET_INFO; + +// +typedef struct tagNET_DVR_PRESET_COND +{ + DWORD dwSize; + DWORD dwChannel; + DWORD dwGroupNO; // + BYTE byRes[8]; +}NET_DVR_PRESET_COND, *LPNET_DVR_PRESET_COND; + +// +typedef struct tagNET_DVR_PRESETCFG +{ + DWORD dwSize; + DWORD dwPresetIndex; //Ԥõ + NET_VCA_POINT struVcaPoint; //Ԥõ + WORD wZoomCoordinate; ///<Ԥõ㴰Zoomֵ + BYTE byRes[30]; +}NET_DVR_PRESETCFG, *LPNET_DVR_PRESETCFG; + +//ȡѲ·Ŀ +typedef struct tagNET_DVR_PTZCRUISE_INFO +{ + DWORD dwSize; + DWORD dwPtzCruiseNum; //· + DWORD dwGroupNum; // + BYTE byRes[8]; +}NET_DVR_PTZCRUISE_INFO, *LPNET_DVR_PTZCRUISE_INFO; + +// +typedef struct tagNET_DVR_PTZCRUISE_COND +{ + DWORD dwSize; + DWORD dwChannel; + DWORD dwGroupNO; // + BYTE byRes[8]; +}NET_DVR_PTZCRUISE_COND, *LPNET_DVR_PTZCRUISE_COND; + +// +typedef struct tagNET_DVR_PTZCRUISE_POINTCFG +{ + DWORD dwSize; + DWORD dwPresetIndex; //Ԥõ + NET_VCA_POINT struVcaPoint; //Ԥõ + BYTE byDwell; //ͣʱ + BYTE bySpeed; //ٶ + WORD wZoomCoordinate;///<Ԥõ㴰Zoomֵ + BYTE byRes[28]; +}NET_DVR_PTZCRUISE_POINTCFG, *LPNET_DVR_PTZCRUISE_POINTCFG; + +typedef struct tagNET_DVR_PTZCRUISECFG +{ + DWORD dwSize; + DWORD dwCruiseRoute; //Ѳ· + NET_DVR_PTZCRUISE_POINTCFG struCruisePoint[MAX_PTZCRUISE_POINT_NUM]; //֧32Ѳ + BYTE byRes[32]; +}NET_DVR_PTZCRUISECFG, *LPNET_DVR_PTZCRUISECFG; + +//ģʽṹ +typedef struct tagNET_DVR_MOTION_TRACK_CFG +{ + DWORD dwSize; + BYTE byEnableTrack; //ã0-1- + BYTE byRes[63]; +}NET_DVR_MOTION_TRACK_CFG, *LPNET_DVR_MOTION_TRACK_CFG; + +//һĶʱƻ +typedef struct tagNET_DVR_DAY_SCHEDULE +{ + BYTE byWorkMode ; //0-ȫ쿪1-ȫأ2-ʱ + BYTE byRes1[3] ; + NET_DVR_SCHEDTIME struTime[MAX_TIMESEGMENT_V30/*8*/]; //ʱ + BYTE byRes2[8]; // +}NET_DVR_DAY_SCHEDULE ,*LPNET_DVR_DAY_SCHEDULE; + +//ʱܲṹ +typedef struct tagNET_DVR_SCHEDULE_AUTO_TRACK_CFG +{ + DWORD dwSize; //ṹ + BYTE byEnableTrack; //ã0- 1- + BYTE byRes1[3] ; + NET_DVR_DAY_SCHEDULE struSchedule[MAX_DAYS/*7*/]; //ʱʱΣ8ʱڵʱ䣬Ĭ϶ʱܹر + BYTE byRes2[128]; +}NET_DVR_SCHEDULE_AUTO_TRACK_CFG,*LPNET_DVR_SCHEDULE_AUTO_TRACK_CFG; + +typedef struct tagNET_DVR_I_FRAME +{ + DWORD dwSize; //ṹ + BYTE sStreamID[STREAM_ID_LEN/*32*/] ; //ID + DWORD dwChan; //ͨ + BYTE byStreamType; //0-1-2-33-44-5 + BYTE byRes[63]; +} NET_DVR_I_FRAME, *LPNET_DVR_I_FRAME; + +typedef struct tagNET_DVR_REBOOT_TIME +{ + BYTE byDate; //ڼ1-7һ + BYTE byHour; //ʱ + BYTE byMinute; // + BYTE byRes1; + BYTE byRebootMode; //0-1-˲ֻܻȡã + BYTE byDisabled; // 0- 1- + BYTE byRes[10]; // +}NET_DVR_REBOOT_TIME,*LPNET_DVR_REBOOT_TIME; + +typedef struct tagNET_DVR_AUTO_REBOOT_CFG +{ + DWORD dwSize; + NET_DVR_REBOOT_TIME struRebootTime; +}NET_DVR_AUTO_REBOOT_CFG,*LPNET_DVR_AUTO_REBOOT_CFG; + +#define NET_DVR_GPS_FINDING 0 //ڲ +#define NET_DVR_GPS_RECV 1 // +#define NET_DVR_GPS_OVER 2 //ҽ +#define NET_DVR_GPS_EXCEPTION 3 //쳣 +typedef struct tagNET_DVR_MENU_OUTPUT_MODE +{ + DWORD dwSize; + BYTE byMenuOutputMode; //ͬԴ豸0-Auto 1-CVBS 2-HDMI 3-VGA ͬԴ豸0-Auto 1-CVBS 2-HDMI/VGA + BYTE byRes[63]; +}NET_DVR_MENU_OUTPUT_MODE, *LPNET_DVR_MENU_OUTPUT_MODE; + +typedef struct tagNET_DVR_MB_IPADDR +{ + NET_DVR_IPADDR struIP; //IPַ + WORD wPort; //˿ں + BYTE byRes[2]; +}NET_DVR_MB_IPADDR,*LPNET_DVR_MB_IPADDR; + +typedef struct tagNET_DVR_MB_WVSPARA +{ + NET_DVR_MB_IPADDR struWVSAddr; + BYTE byPuid[NAME_LEN]; //豸id + BYTE byPassword[PASSWD_LEN]; // + BYTE byRes[8]; +}NET_DVR_MB_WVSPARA, *LPNET_DVR_MB_WVSPARA; + +typedef struct tagNET_DVR_MB_EHOMEPARA +{ + NET_DVR_MB_IPADDR struEHomeAddr; + BYTE byPuid[NAME_LEN]; //豸id +}NET_DVR_MB_EHOMEPARA, *LPNET_DVR_MB_EHOMEPARA; + +typedef struct tagNET_DVR_MB_PLATFORMPARA +{ + DWORD dwSize; + BYTE byNetEnvironment;/*绷,0-wireless,1-3G,2-wLan,3-lan*/ + BYTE byCurPlatForm; /*< ǰƽ̨0 - WVS, 1 - E, 2 - ģʽ */ + BYTE byRes1[2]; + NET_DVR_MB_WVSPARA struWVSPara; /*ƽ̨(ƽ̨)*/ + NET_DVR_MB_EHOMEPARA struMbEHpara;/*Eƽ̨ƽ̨豸 */ + BYTE byRes2[64]; +}NET_DVR_MB_PLATFORMPARA, *LPNET_DVR_MB_PLATFORMPARA; + +typedef struct tagNET_DVR_MB_GPS_STATUS +{ + BYTE byGPSModule; /*gpsģ, 0: , 1: */ + BYTE byPositionStatus; /*gpsλ״̬, 0: λʧ, 1: λɹ*/ + BYTE bySignalStrength; /*źǿ, 0: , 1: , 2: ǿ*/ + BYTE byres[5]; +}NET_DVR_MB_GPS_STATUS, *LPNET_DVR_MB_GPS_STATUS; + +typedef struct tagNET_DVR_MB_GSENSOR_STATUS +{ + BYTE byGsensorModule; /*g-sensorģ, 0: not exist, 1: , 2: */ + BYTE byCurAccX[10]; /*ǰXٶ*/ + BYTE byCurAccY[10]; /*ǰYٶ*/ + BYTE byCurAccZ[10]; /*ǰZٶ*/ + BYTE byRefAccX[10]; /* Xٶȱ궨ֵ*/ + BYTE byRefAccY[10]; /* Yٶȱ궨ֵ*/ + BYTE byRefAccZ[10]; /* Zٶȱ궨ֵ*/ + BYTE byres[3]; +}NET_DVR_MB_GSENSOR_STATUS, *LPNET_DVR_MB_GSENSOR_STATUS; + +#define IP_ADDR_LEN 16 +#define IW_ESSID_MAX_SIZE 32 + +typedef struct tagNET_DVR_MB_WIFI_STATUS +{ + BYTE byEnableWiFi; /* , 0 , 1 */ + BYTE byWiFiConnectStatus; /* WIFI״̬, 0: ʧ, 1: ӳɹ 2: ģ*/ + BYTE bySignalStrength; /* źǿ, 0 , 1 , 2 ǿ */ + BYTE byIPaddress[IP_ADDR_LEN]; /*WIFI 豸 ip*/ + BYTE byEssid[IW_ESSID_MAX_SIZE]; /*߽essid*/ + BYTE byres[5]; +}NET_DVR_MB_WIFI_STATUS,*LPNET_DVR_MB_WIFI_STATUS; + +typedef struct tagNET_DVR_MB_PLATFORM_STATUS +{ + BYTE byCurPlat; /*ǰƽ̨, 0: wvs, 1: ivms, 2: ģʽ(net_3g_sdk)*/ + BYTE byLoginStatus; /*login ״̬, 0: login failed, 1: login success*/ + BYTE byExceptionInfo; /*쳣Ϣ*/ + /* + WVS :exception info: + 0: ӷʧ + 1: ע + 2: û + 3: עᳬʱ + 4: ʱ + 5: עɹ + iVMS :exception info: + 0δע + 1ע + 2עӳ + 3עᳬʱ + 4ʱûж + 5ע + 6 CMSע豸Ѿ޶̨ + 7 CMSעͨѾ޶ͨ + 8豸WEBû + 9CMSWEBͨʧ + 10¼δ֪ + 11עɹ + ģʽ :exception info: + 0δע + 1: ע + 2: ظע + 3: עʧ + 4: IP仯 + 5: עɹ + 6: ûע + 7: ʱ + */ + BYTE byres[5]; +}NET_DVR_MB_PLATFORM_STATUS, *LPNET_DVR_MB_PLATFORM_STATUS; + + +typedef struct tagNET_DVR_MB_MOBILEDEV_STATUS +{ + DWORD dwSize; /*ṹС*/ + union + { + NET_DVR_MB_GPS_STATUS struGPSStatus; + NET_DVR_MB_GSENSOR_STATUS struGSensorStatus; + NET_DVR_MB_WIFI_STATUS struWiFiStatus; + NET_DVR_MB_PLATFORM_STATUS struPlatformStatus; + }mobileStatus; +}NET_DVR_MB_MOBILEDEV_STATUS, *LPNET_DVR_MB_MOBILEDEV_STATUS; + +#define NET_DVR_GPS_STATUS 0 +#define NET_DVR_GSENSOR_STATUS 1 +#define NET_DVR_WIFI_STATUS 2 +#define NET_DVR_PLATFORM_STATUS 3 + +//GPSϢṹ +typedef struct tagNET_DVR_GPS_INFO +{ + /* γΪS*100 */ + BYTE byDirection[2]; /*direction[0]0or1(/), direction[1]:0or1(γ/γ) */ + BYTE bySvs; /* satellite vehicles(ֵ0)Чλ */ + BYTE byLocateMode; /* λģʽ(ֵ0)NMEA0183 3.00汾0=λ1=֣2=㣬3=Ч */ + WORD wHDOP; /* ˮƽӣGPSȷȣ0.5-99.96ڶλȸߣ20趪洢dz10Ժ */ + WORD wHeight; /* ߶ */ + DWORD dwLatitude; /*γlatitude = ʵʶ*3600*100+ʵʷ*60*100+ʵ*100 */ + DWORD dwLongitude; /*longitude =ʵʶ*3600*100+ʵʷ*60*100+ʵ*100 */ + DWORD dwVehicleSpeed; /* mobile speed =ʵٶ*100000 ʵʵλkph*/ + DWORD dwVehicleDirection; /* mobile direction= ʵʷ*100ʵֵǷǣΪ0ȣ˳ʱ */ + BYTE byRes[8]; // +}NET_DVR_GPS_INFO,*LPNET_DVR_GPS_INFO; //32ֽ + +//GPS״̬ϴ +typedef struct _NET_DVR_GPS_STATUS_ALARM_ +{ + DWORD dwSize; + NET_DVR_TIME_V30 struGPSTime; //GPS ʱ䣬ñʱ + NET_DVR_GPS_INFO struGPSInfo; //GPS + BYTE byRetransFlag; //0- GPS Ϊʵʱ1- GPS Ϊش + BYTE byNeedsResponse; //Ӧǣ0Ӧ1Ӧ + BYTE byType;//ϱ 0-˻ + BYTE byBatteryRemaining;//ʣ-1--100; -1ʾ + int iRollAngle;//Ƕ,Χ-pi - +pi,ʵֵ*100 + int iPitchAngle;//ͷǶ,Χ-pi - +pi,ʵֵ*100 + WORD wRelativeHeight;//Ը߶ȣλ + WORD wVerticalSpeed;//ֱٶȣλ/Сʱ + BYTE byRes2[160]; // +}NET_DVR_GPS_STATUS_ALARM, *LPNET_DVR_GPS_STATUS_ALARM; + +//GPSʱ +typedef struct tagNTE_DVR_GPS_DATA +{ + NET_DVR_GPS_INFO struGPSInfo; //GPS + NET_DVR_TIME struTime; //GPSӦʱ㣬UTCʱ + BYTE byRes[12]; // +}NET_DVR_GPS_DATA,*LPNET_DVR_GPS_DATA; + +//GPSṹ +typedef struct tagNET_DVR_GET_GPS_DATA_PAPAM +{ + DWORD dwCmdType; //0-ʱβGPS,1-ʱGPS + union + { + struct + { + NET_DVR_TIME struBeginTime; //GPSݲʼʱ + NET_DVR_TIME struEndTime; //GPSݲҽʱ + DWORD dwInterval; //GPSʱλ + BYTE byRes[76]; // + }TimeSeg; + struct + { + NET_DVR_TIME struTimePoint; //GPSݲʼʱ䵥λ + BYTE byRes[104]; // + }TimePoint; + }GpsDataParam; +}NET_DVR_GET_GPS_DATA_PARAM,*LPNET_DVR_GET_GPS_DATA_PARAM; + +#define NET_SDK_MAX_CARD_LEN 32 //󿨺ų + +//ǩϢϴ +typedef struct _NET_DVR_TAG_INFO_ALARM_ +{ + DWORD dwSize; + BYTE byCardNo[NET_SDK_MAX_CARD_LEN/*32*/]; // + int iRssi;//źǿ,Χ-100 - +100 + BYTE byIndexCode[64];//ƽ̨index code,൱豸 + NET_DVR_TIME_V30 struAcquisitionTime;//ȡʱ + BYTE byRFIDInfo[32]; //ƬID + BYTE byRFIDInfoLen; //ƬID + BYTE byVoltageLow; //1ʾ͵ѹ0ʾ + BYTE byAlarmFlag; //(֪ͨƽ̨)ǷҪ1Ҫ0Ҫ + BYTE byDirection; //0ʾ,1ʾ,2ʾ,3-255 + BYTE byRes[48]; // +}NET_DVR_TAG_INFO_ALARM, *LPNET_DVR_TAG_INFO_ALARM; + + +typedef struct tagNET_DVR_SDKLOCAL_CFG +{ + BYTE byEnableAbilityParse; //ʹ,0-ʹ,1-ʹ,Ĭϲʹ + BYTE byVoiceComMode; //Խģʽ0-ʹöԽ⣨Ĭϣ1-ʹwindows apiģʽ + BYTE byLoginWithSimXml; //¼ʱʹģ,0-ʹ,1-ʹ,Ĭϲʹ + BYTE byCompatibleType; + BYTE byRes[380]; + BYTE byProtectKey[128]; //ĬΪ0 +}NET_DVR_SDKLOCAL_CFG, *LPNET_DVR_SDKLOCAL_CFG; + +typedef struct tagNET_DVR_LOCAL_ABILITY_PARSE_CFG +{ + BYTE byEnableAbilityParse; //ʹ,0-ʹ,1-ʹ,Ĭϲʹ + BYTE byRes[127]; +}NET_DVR_LOCAL_ABILITY_PARSE_CFG, *LPNET_DVR_LOCAL_ABILITY_PARSE_CFG; + +typedef struct tagNET_DVR_LOCAL_TALK_MODE_CFG +{ + BYTE byTalkMode; //Խģʽ0-ʹöԽ⣨Ĭϣ1-ʹwindows apiģʽ + BYTE byRes[127]; +}NET_DVR_LOCAL_TALK_MODE_CFG, *LPNET_DVR_LOCAL_TALK_MODE_CFG; + + +typedef struct tagNET_DVR_LOCAL_PROTECT_KEY_CFG +{ + BYTE byProtectKey[128]; //ĬΪ0 + BYTE byRes[128]; +}NET_DVR_LOCAL_PROTECT_KEY_CFG, *LPNET_DVR_LOCAL_PROTECT_KEY_CFG; + +typedef struct tagNET_DVR_SIMXML_LOGIN +{ + BYTE byLoginWithSimXml; //¼ʱʹģУṹֶ,0-ʹ,1-ʹ + BYTE byRes[127]; +}NET_DVR_SIMXML_LOGIN, *LPNET_DVR_SIMXML_LOGIN; + +//صò +typedef struct +{ /*JSON͸COMM_VCA_ALARMJSONʽ + 0~JSONʽο4.1.4; + 1~JSONʽο4.1.5 + */ + BYTE byVcaAlarmJsonType; + BYTE byRes[63]; +}NET_DVR_MESSAGE_CALLBACK_PARAM_V51,*LPNET_DVR_MESSAGE_CALLBACK_PARAM_V51; + +typedef enum tagNET_SDK_LOCAL_CFG_TYPE +{ + NET_SDK_LOCAL_CFG_TYPE_TCP_PORT_BIND = 0, //TCP˿ڰãӦṹNET_DVR_LOCAL_TCP_PORT_BIND_CFG + NET_SDK_LOCAL_CFG_TYPE_UDP_PORT_BIND, //UDP˿ڰãӦṹNET_DVR_LOCAL_UDP_PORT_BIND_CFG + NET_SDK_LOCAL_CFG_TYPE_MEM_POOL, //ڴرãӦṹNET_DVR_LOCAL_MEM_POOL_CFG + NET_SDK_LOCAL_CFG_TYPE_MODULE_RECV_TIMEOUT, //ģóʱʱ䣬ӦṹNET_DVR_LOCAL_MODULE_RECV_TIMEOUT_CFG + NET_SDK_LOCAL_CFG_TYPE_ABILITY_PARSE, //Ƿʹ⣬ӦṹNET_DVR_LOCAL_ABILITY_PARSE_CFG + NET_SDK_LOCAL_CFG_TYPE_TALK_MODE, //ԽģʽӦṹNET_DVR_LOCAL_TALK_MODE_CFG + NET_SDK_LOCAL_CFG_TYPE_PROTECT_KEY, //ԿãӦṹNET_DVR_LOCAL_PROTECT_KEY_CFG + NET_SDK_LOCAL_CFG_TYPE_CFG_VERSION, //ڲ԰汾ͷ豸˼NET_DVR_LOCAL_MEM_POOL_CFG, ֻòʱá + NET_SDK_LOCAL_CFG_TYPE_RTSP_PARAMS, //rtspãڽṹNET_DVR_RTSP_PARAMS_CFG + NET_SDK_LOCAL_CFG_TYPE_SIMXML_LOGIN, //ڵ¼ʱʹģsupportֶ, ӦṹNET_DVR_SIMXML_LOGIN + NET_SDK_LOCAL_CFG_TYPE_CHECK_DEV, //ʱ + NET_SDK_LOCAL_CFG_TYPE_SECURITY, //SDKΰȫã + NET_SDK_LOCAL_CFG_TYPE_EZVIZLIB_PATH, //өʯͨſַ + NET_SDK_LOCAL_CFG_TYPE_CHAR_ENCODE, //13.ַشص + NET_SDK_LOCAL_CFG_TYPE_PROXYS, //ûȡ + NET_DVR_LOCAL_CFG_TYPE_LOG, //־ NET_DVR_LOCAL_LOG_CFG + NET_DVR_LOCAL_CFG_TYPE_STREAM_CALLBACK, //ص NET_DVR_LOCAL_STREAM_CALLBACK_CFG + NET_DVR_LOCAL_CFG_TYPE_GENERAL, //ͨò NET_DVR_LOCAL_GENERAL_CFG + NET_DVR_LOCAL_CFG_TYPE_PTZ, //PTZǷ豸 + NET_DVR_LOCAL_CFG_MESSAGE_CALLBACK_V51, //V51صر,ӦṹΪNET_DVR_MESSAGE_CALLBACK_PARAM_V51 (NET_DVR_SetDVRMessageCallBack_V51ϰ汾Ч) + NET_SDK_LOCAL_CFG_CERTIFICATION, //ú֤صIJӦṹṹNET_DVR_LOCAL_CERTIFICATION + NET_SDK_LOCAL_CFG_PORT_MULTIPLEX, //˿ڸãӦṹNET_DVR_LOCAL_PORT_MULTI_CFG + NET_SDK_LOCAL_CFG_ASYNC, //첽ãӦṹNET_DVR_LOCAL_ASYNC_CFG + NET_SDK_P2P_LOGIN_2C, + NET_SDK_P2P_LOGIN_2B, + NET_SDK_P2P_LOGOUT, + NET_SDK_AUDIOCAST_CFG //ù㲥 ,ӦṹNET_LOCAL_AUDIOCAST_CFG +}NET_SDK_LOCAL_CFG_TYPE; + +typedef enum tagNET_SDK_EXCEPTION_CALLBACK_TYPE +{ + NET_SDK_EXCEPTION_CALLBACK_BY_POOL = 0, //̳ͨ߳쳣ص + NET_SDK_EXCEPTION_CALLBACK_DIRECTLY = 1, //ֱ쳣صϲ +}NET_SDK_EXCEPTION_CALLBACK_TYPE; + +typedef struct tagNET_DVR_LOCAL_GENERAL_CFG +{ + BYTE byExceptionCbDirectly; //0-̳ͨ߳쳣ص1-ֱ쳣صϲ + BYTE byNotSplitRecordFile; //طźԤб浽¼ļƬ 0-ĬƬ1-Ƭ + BYTE byResumeUpgradeEnable; //ʹܣ0-رգĬϣ1- + BYTE byAlarmJsonPictureSeparate; //JSON͸ݺͼƬǷ룬0-룬1-루COMM_ISAPI_ALARMصأ + BYTE byRes[4]; // + UINT64 i64FileSize; //λByte + DWORD dwResumeUpgradeTimeout; //ʱʱ䣬λ + BYTE byAlarmReconnectMode; //0-߳Ĭϣ 1-̳߳ + BYTE byStdXmlBufferSize; //ISAPI͸ջС1-1M -Ĭ + BYTE byMultiplexing; //0-ͨӣTLSӣرն·ã1-ͨӣTLSӣ· + BYTE byFastUpgrade; //0-1- + BYTE byAlarmPrealloc; //0-Ԥ䡣ֵΪԤС64λ + BYTE byRes1[231]; //Ԥ +}NET_DVR_LOCAL_GENERAL_CFG, *LPNET_DVR_LOCAL_GENERAL_CFG; + +typedef struct tagNET_SDK_P2P_SERVER_2C +{ + BYTE byPlatformType; //0- 1- 2-test2 + BYTE byRes1[3]; + char *pAppID; //APP ID + char *pAuthAddr; //֤IPַ + char *pPlatformAddr; //ƽ̨IPַ + char *pUserName; //˺ + char *pPassword; // + BYTE byRes[40]; +} NET_SDK_P2P_SERVER_2C, *LPNET_DVR_P2P_SERVER_2C; + +typedef struct tagNET_SDK_P2P_SERVER_2B +{ + BYTE byPlatformType; //0- 1- 2-test2 + BYTE byRes1[3]; + char *pAppID; //APP ID + char *pAuthAddr; //֤IPַ + char *pPlatformAddr; //ƽ̨IPַ + char *pToken; //Token + BYTE byRes[44]; +} NET_SDK_P2P_SERVER_2B, *LPNET_DVR_P2P_SERVER_2B; + +typedef struct tagNET_DVR_LOCAL_ASYNC_CFG +{ + BOOL bEnable; //첽ʹܣtrue- + BYTE byRes[60]; +}NET_DVR_LOCAL_ASYNC_CFG, *LPNET_DVR_LOCAL_ASYNC_CFG; + +typedef struct tagNET_DVR_LOCAL_STREAM_CALLBACK_CFG +{ + BYTE byPlayBackEndFlag; //0-صطŽǣ1-صطŽ + BYTE byRes[255]; // +}NET_DVR_LOCAL_STREAM_CALLBACK_CFG, *LPNET_DVR_LOCAL_STREAM_CALLBACK_CFG; + +typedef void(CALLBACK *LOGCALLBACK)(char *pContent, unsigned int dwInputLen, int wLogLevel, void *pData); + +typedef struct tagNET_DVR_LOCAL_LOG_CFG +{ + WORD wSDKLogNum; + LOGCALLBACK fnCB; //־ص + void *pUserData; //ûָ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + BYTE byRes[238]; // +#else + BYTE byRes[246]; // +#endif +}NET_DVR_LOCAL_LOG_CFG, *LPNET_DVR_LOCAL_LOG_CFG; + +typedef int(CALLBACK * CHAR_ENCODE_CONVERT)(char * pInput, DWORD dwInputLen, DWORD dwInEncodeType, char *pOutput, DWORD dwOutputLen, DWORD dwOutEncodeType); + +typedef struct tagNET_DVR_LOCAL_BYTE_ENCODE_CONVERT +{ + CHAR_ENCODE_CONVERT fnCharConvertCallBack; + BYTE byRes[256]; +}NET_DVR_LOCAL_BYTE_ENCODE_CONVERT, *LPNET_DVR_LOCAL_BYTE_ENCODE_CONVERT; + +typedef struct tagNET_DVR_LOCAL_SECURITY +{ + BYTE bySecurityLevel;//˽Эͨģʽ //0-ģʽĬϣеSDK¼Эͨ1-ȫģʽMD5, RSAMD5¼У2-ȫģʽRSARSA¼У + BYTE byRes[255]; +}NET_DVR_LOCAL_SECURITY, *LPNET_DVR_LOCAL_SECURITY; + +typedef struct tagNET_DVR_LOCAL_CHECK_DEV +{ + DWORD dwCheckOnlineTimeout; //Ѳʱλms СֵΪ30sֵ120sΪ0ʱʾĬֵ(120s) + DWORD dwCheckOnlineNetFailMax; //ԭʧܵۼӴֵSDKŻصû쳣Ϊ0ʱʾʹĬֵ1 + BYTE byRes[256]; +}NET_DVR_LOCAL_CHECK_DEV,*LPNET_DVR_LOCAL_CHECK_DEV; + +typedef struct tagNET_DVR_LOCAL_PTZ_CFG +{ + BYTE byWithoutRecv; //0-豸أ1-豸 + BYTE byRes[63]; +}NET_DVR_LOCAL_PTZ_CFG, *LPNET_DVR_LOCAL_PTZ_CFG; + +typedef struct tagNET_DVR_LOCAL_CFG_VERSION +{ + BYTE byVersion; //汾Ϣ + BYTE byRes[63]; // +}NET_DVR_LOCAL_CFG_VERSION, *LPNET_DVR_LOCAL_CFG_VERSION; + +typedef struct tagNET_DVR_LOCAL_TCP_PORT_BIND_CFG +{ + WORD wLocalBindTcpMinPort; //ذTcpС˿ + WORD wLocalBindTcpMaxPort; //ذTcp˿ + BYTE byRes[60]; // +}NET_DVR_LOCAL_TCP_PORT_BIND_CFG, *LPNET_DVR_LOCAL_TCP_PORT_BIND_CFG; + + +typedef struct tagNET_DVR_LOCAL_UDP_PORT_BIND_CFG +{ + WORD wLocalBindUdpMinPort; //ذUdpС˿ + WORD wLocalBindUdpMaxPort; //ذUdp˿ + BYTE byRes[60]; // +}NET_DVR_LOCAL_UDP_PORT_BIND_CFG, *LPNET_DVR_LOCAL_UDP_PORT_BIND_CFG; + + +typedef struct tagNET_DVR_LOCAL_MEM_POOL_CFG +{ + DWORD dwAlarmMaxBlockNum; //ģڴϵͳڴ飨blockÿblockΪ64MB, ϵͳ룬0ʾ + DWORD dwAlarmReleaseInterval; //ģڴͷŵļλ룬Ϊ0ʾͷ + DWORD dwObjectReleaseInterval; //ģڴͷŵļλ룬Ϊ0ʾͷ + BYTE byRes[508]; // +}NET_DVR_LOCAL_MEM_POOL_CFG, *LPNET_DVR_LOCAL_MEM_POOL_CFG; + +typedef struct tagNET_DVR_LOCAL_MODULE_RECV_TIMEOUT_CFG +{ + DWORD dwPreviewTime; //Ԥģ鳬ʱʱ + DWORD dwAlarmTime; //ģ鳬ʱʱ + DWORD dwVodTime; //طģ鳬ʱʱ + DWORD dwElse; //ģ + BYTE byRes[512]; // +}NET_DVR_LOCAL_MODULE_RECV_TIMEOUT_CFG, *LPNET_DVR_LOCAL_MODULE_RECV_TIMEOUT_CFG; + +#define MAX_CERTIFICATE_ISSUER_LEN 64 //֤䷢߳ +#define MAX_CERTIFICATE_VALIDITY_LEN 128 //֤Чʱ䳤 +#define MAX_CERTIFICATE_SUBJECT_LEN 64 //֤߳ +typedef struct tagNET_DVR_CETTIFICATE_INFO +{ + DWORD dwSize; + char szIssuer[MAX_CERTIFICATE_ISSUER_LEN]; //֤䷢ + char szSubject[MAX_CERTIFICATE_SUBJECT_LEN]; //֤ + NET_DVR_TIME struStartTime; + NET_DVR_TIME struEndTime; + BYTE byRes1[1024]; +}NET_DVR_CETTIFICATE_INFO, *LPNET_DVR_CETTIFICATE_INFO; + +typedef BOOL(CALLBACK *fnCertVerifyResultCallBack) (DWORD uiResult, LPNET_DVR_CETTIFICATE_INFO lpCertificateInfo, char *pUserData); + +#define MAX_FILE_PATH_LEN 256 //ļ· +typedef struct tagNET_DVR_LOCAL_CERTIFICATION +{ + char szLoadPath[MAX_FILE_PATH_LEN]; + fnCertVerifyResultCallBack fnCB; + void* pUserData; + BYTE byRes[64]; +}NET_DVR_LOCAL_CERTIFICATION, *LPNET_DVR_LOCAL_CERTIFICATION; + +typedef struct tagNET_DVR_LOCAL_PORT_MULTI_CFG +{ + BOOL bEnable; //˿ڸʹܣtrue- + BYTE byRes[60]; +}NET_DVR_LOCAL_PORT_MULTI_CFG, *LPNET_DVR_LOCAL_PORT_MULTI_CFG; + +typedef struct tagNET_DVR_RTSP_PARAMS_CFG +{ + DWORD dwMaxBuffRoomNum; //rtp over udp򿪱ٵ󻺳0ΪЧʹĬֵ20 + //һڴΪ10Kһ㣬Խ࣬ԽǿԽãʱҲԽ + BYTE byUseSort; //Ƿrtp over udp 0- 1- + BYTE byRes[123]; +}NET_DVR_RTSP_PARAMS_CFG, *LPNET_DVR_RTSP_PARAMS_CFG; + +typedef struct tagNET_DVR_OPTICAL_CHANNEL_BIND +{ + WORD wChannelIndex; //ں(0-7) + WORD wSubChannel; //ͨţȡֵΧȡ + BYTE byBind; //0-󶨻󶨣1- + BYTE byRes[3]; +}NET_DVR_OPTICAL_CHANNEL_BIND,*LPNET_DVR_OPTICAL_CHANNEL_BIND; + +typedef struct tagNET_DVR_OPTICAL_CHANNEL_CFG +{ + DWORD dwSize; + NET_DVR_OPTICAL_CHANNEL_BIND struBindVideo;//Ƶ + NET_DVR_OPTICAL_CHANNEL_BIND struBindAudio;//Ƶ + BYTE byRes[16]; // +}NET_DVR_OPTICAL_CHANNEL_CFG,*LPNET_DVR_OPTICAL_CHANNEL_CFG; + +typedef struct tagNET_DVR_OPTICAL_INFO +{ + DWORD dwSize; + BYTE bySlotNum;//ϵͳλ + BYTE byChannel; //ͨ + BYTE byRes[18]; +}NET_DVR_OPTICAL_INFO,*LPNET_DVR_OPTICAL_INFO; + +//Ƶл +typedef struct tagNET_DVR_AUDIO_SURCHAN_CFG +{ + DWORD dwSize; + BYTE byStatus; //ƵǷ1-0- + BYTE byRes1[3]; + //²byStatus == 1ʱЧ + DWORD dwSubWinNum; //Ӵں + DWORD dwSurChanNum; /*ͨ */ + NET_DVR_IPADDR struIpaddr; /*ַͨ */ + WORD wPort; /*ͨ˿ */ + BYTE byRes2[14]; +}NET_DVR_AUDIO_SURCHAN_CFG, *LPNET_DVR_AUDIO_SURCHAN_CFG; + +//˿ھۺ +#define MAX_ETHERNET_PORT_NUM 8//ÿ·˿ +typedef struct tagNET_DVR_ETHERNET_CHANNEL_INFO +{ + DWORD dwSize; + BYTE byConverge[MAX_ETHERNET_PORT_NUM]; + //byConverge[i] = jʾi˿ڼ뵽j·jȡֵΪ1-8,j=0ʾƳ + BYTE byRes[32]; +}NET_DVR_ETHERNET_CHANNEL_INFO,*LPNET_DVR_ETHERNET_CHANNEL_INFO; + +// +typedef struct tagNET_DVR_SPARTAN_INFO +{ + DWORD dwSize; + BYTE bySpartanStatus; //0-Թأ1-Կ + BYTE byRes[31]; +}NET_DVR_SPARTAN_INFO,*LPNET_DVR_SPARTAN_INFO; + +typedef struct tagNET_DVR_IPADDR_FILTERCFG +{ + DWORD dwSize; + BYTE byEnable; //IPַˣ0-1- + BYTE byFilterType; //ͣ0-ã1- + BYTE byRes[18]; + BYTE byIPAddr[1024]; //IPַϢʽ192.168.1.2;192.168.1.3 +}NET_DVR_IPADDR_FILTERCFG, *LPNET_DVR_IPADDR_FILTERCFG; + +typedef struct tagNET_DVR_LOGO_OVERLAYCFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿã0-1- + BYTE byRes1[3]; + DWORD dwCoordinateX; //ͼƬʾX + DWORD dwCoordinateY; //ͼƬʾY + WORD wPicWidth; //ͼƬ + WORD wPicHeight; //ͼƬ + BYTE byLogoName[16];//Logo +}NET_DVR_LOGO_OVERLAYCFG,*LPNET_DVR_LOGO_OVERLAYCFG; + + +typedef struct tagNET_DVR_INVALID_DISK_PARAM +{ + NET_DVR_STRUCTHEAD struStructHead; + DWORD dwDiskNo; // ̺ + BYTE byDelAll; // 0-ɾdwDiskNo 1-ɾȫЧ + BYTE byres[31]; +}NET_DVR_INVALID_DISK_PARAM, *LPNET_DVR_INVALID_DISK_PARAM; + + +typedef struct tagNET_DVR_INVALID_MOUNT_DISK_PARAM +{ + NET_DVR_STRUCTHEAD struStructHead; + DWORD dwDiskNo; // ̺ + BYTE byres[32]; +}NET_DVR_MOUNT_DISK_PARAM, *LPNET_DVR_MOUNT_DISK_PARAM; + +// ӻص +typedef enum +{ + NET_SDK_CALLBACK_TYPE_STATUS = 0, // ص״ֵ̬ + NET_SDK_CALLBACK_TYPE_PROGRESS, // صֵ + NET_SDK_CALLBACK_TYPE_DATA // ص +}NET_SDK_CALLBACK_TYPE; + + +// صΪNET_SDK_CALLBACK_TYPE_STATUSʱ״ֵ̬ +typedef enum +{ + NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, // ɹ + NET_SDK_CALLBACK_STATUS_PROCESSING, // + NET_SDK_CALLBACK_STATUS_FAILED, // ʧ + NET_SDK_CALLBACK_STATUS_EXCEPTION, // 쳣 + NET_SDK_CALLBACK_STATUS_LANGUAGE_MISMATCH, //IPCļ룩Բƥ + NET_SDK_CALLBACK_STATUS_DEV_TYPE_MISMATCH, //IPCļ룩豸Ͳƥ + NET_DVR_CALLBACK_STATUS_SEND_WAIT, // ͵ȴ +}NET_SDK_CALLBACK_STATUS_NORMAL; + + +//һͨ״̬ +#define NET_SDK_OKC_STATUS_SUCCESS 1000 //һóɹ +#define NET_SDK_OKC_STATUS_FAILED 1002 //һʧ + +//һCVR״̬ +#define NET_SDK_OKC_STATUS_START_CONFIG 1003 //ʼ +#define NET_SDK_OKC_CHECK_HD 1004 // +#define NET_SDK_OKC_INIT_HD 1005 //ʼ +#define NET_SDK_OKC_CREATE_RAID_OR_SINGLE_DISK 1006 //лߵģʽ +#define NET_SDK_OKC_INIT_CVR_SERVICE 1007 //ʼCVR +#define NET_SDK_OKC_CREATE_RECORD_VOLUME 1008 //¼ + +//Ϊһʧܵ״̬롪part1 +#define NET_SDK_OKC_ERR_LOAD_CONF_FAILED 1009 //ļʧ +#define NET_SDK_OKC_ERR_NOT_SUPPORT_RAID_LEVLE 1010 //ִ֧͵raid +#define NET_SDK_OKC_ERR_CONFIGURATION_CONFLICT 1011 //ϵͳѾraid洢 +#define NET_SDK_OKC_ERR_GET_DISK_INFO_FAILED 1012 //ȡϢʧ +#define NET_SDK_OKC_ERR_CHECK_DISK_FAILED 1013 //ʧ +#define NET_SDK_OKC_ERR_INIT_DISK_FAILED 1014 //ʼʧ +#define NET_SDK_OKC_ERR_DISK_CAPACITY_SMALL 1015 // +#define NET_SDK_OKC_ERR_BOTH_SV_NS 1016 //ͬʱSV̺NS +#define NET_SDK_OKC_ERR_CREATE_RAID_FAILED 1017 //raidʧ +#define NET_SDK_OKC_ERR_GET_RAID_FAILED 1018 //ȡraidʧ +#define NET_SDK_OKC_ERR_CREATE_SPARE_FAILED 1019 //ȱʧ +#define NET_SDK_OKC_ERR_CREATE_STORAGE_POOL_FAILED 1020 //洢ʧ +#define NET_SDK_OKC_ERR_GET_POOL_INFO_FAILED 1021 //ȡ洢Ϣʧ +#define NET_SDK_OKC_ERR_CREATE_LUN_FAILED 1022 //lunʧ +#define NET_SDK_OKC_ERR_GET_LUN_INFO_FAILED 1023 //ȡlunϢʧ +#define NET_SDK_OKC_ERR_CREATE_BACKUP_FAILED 1024 //Ԥʧ +#define NET_SDK_OKC_ERR_GET_BACKUP_FAILED 1025 //ȡԤʧ +#define NET_SDK_OKC_ERR_CREATE_PRIVATE_LUN_FAILED 1026 //˽оʧ +#define NET_SDK_OKC_ERR_CREATE_RV_FAILED 1027 //¼ʧ +#define NET_SDK_OKC_ERR_CREATE_ARCH_RV_FAILED 1028 //浵ʧ +#define NET_SDK_OKC_ERR_START_CVR_SERVICE_FAILED 1029 //CVRʧ + +//һSAN״̬ +#define NET_SDK_OKC_CREATING_ARRAY 1030 //н׶ +#define NET_SDK_OKC_CREATING_STORAGE_POOL 1031 //洢ؽ׶ +#define NET_SDK_OKC_CREATING_LUN_VOL 1032 //߼׶ +#define NET_SDK_OKC_CREATING_ISCSI 1033 //ISCSI׶ +#define NET_SDK_OKC_ERR_HOT_SPARE_CONFICT 1034 //Ѵȱ +#define NET_SDK_OKC_ERR_STORAGE_POOL_CONFICT 1035 //Ѵڴ洢 +#define NET_SDK_OKC_ERR_RAID_CONFLICT 1036 //ϵͳѾ +#define NET_SDK_OKC_ERR_OPEN_ISCSI_FAILED 1037 //ISCSIʧ +#define NET_SDK_OKC_ERR_DEVICE_NOSUPPORT_SAN 1038 //豸֧san + +//Ϊһʧܵ״̬롪part2 +#define NET_SDK_OKC_ERR_SAPRE_NUM_EXCEED 1101 //ȱ̸ +#define NET_SDK_OKC_ERR_CREATE_PIC_VOLUME_FAILED 1102 //ͼƬʧ + +typedef enum +{ + NET_SDK_GET_NEXT_STATUS_SUCCESS = 1000, // ɹȡݣͻ˴걾ݺҪٴεNET_DVR_RemoteConfigGetNextȡһ + NET_SDK_GET_NETX_STATUS_NEED_WAIT, // ȴ豸ݣNET_DVR_RemoteConfigGetNext + NET_SDK_GET_NEXT_STATUS_FINISH, // ȫȡ꣬ʱͻ˿ɵNET_DVR_StopRemoteConfig + NET_SDK_GET_NEXT_STATUS_FAILED, // 쳣ͻ˿ɵNET_DVR_StopRemoteConfig +}NET_SDK_GET_NEXT_STATUS; + +// ûSendwithRecvӿʱӿڷص״̬ +typedef enum +{ + NET_SDK_CONFIG_STATUS_SUCCESS = 1000, // ɹȡݣͻ˴걾ݺҪٴεNET_DVR_SendWithRecvRemoteConfigȡһ + NET_SDK_CONFIG_STATUS_NEEDWAIT, // õȴͻ˿NET_DVR_SendWithRecvRemoteConfig + NET_SDK_CONFIG_STATUS_FINISH, // ȫȡ꣬ʱͻ˿ɵNET_DVR_StopRemoteConfig + NET_SDK_CONFIG_STATUS_FAILED, // ʧܣͻ˿NET_DVR_SendWithRecvRemoteConfig·һ + NET_SDK_CONFIG_STATUS_EXCEPTION, // 쳣ʱͻ˿ɵNET_DVR_StopRemoteConfig +}NET_SDK_SENDWITHRECV_STATUS; + +//ļ +typedef enum tagNET_SDK_IPC_CFG_FILE_ERR_CODE +{ + NET_SDK_IPC_CFG_FILE_NO_ERR = 0, /* û */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_CHANNEL_INVALID = 1, /* ͨIDǷ */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_CHANNEL_DUPLICATE, /* ͨIDظ */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_IP_INVALID, /* ͨIPǷ */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_IP_DUPLICATE, /* ͨIPظ */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_IP_CONFLICT_WITH_LOCAL, /* ͨIP뱾IPͻ */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_PROTOCOL_INVALID, /* Э */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_PORT_INVALID, /* ˿ڴ */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_DEVICE_CHANNEL_ERR, /* 豸ͨŴ */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_USER_NAME_ERR, /* ûǷַ */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_PASSWD_ERR, /* 뺬Ƿַ */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_TRANSPORT_PROTOCOL_INVALID /*Э*/ +}NET_SDK_IPC_CFG_FILE_ERR_CODE; + +//IPC +typedef enum +{ + NET_SDK_UPGRADE_IPC_INVALID = 0, //Чͨδѡͨ + NET_SDK_UPGRADE_IPC_SUCCESS, //ɹ + NET_SDK_UPGRADE_IPC_OFFLINE, //IPC + NET_SDK_UPGRADE_IPC_NOT_SUPPORT, //IPC֧ + NET_SDK_UPGRADE_IPC_LANGUAGE_MISMATCH, //Բƥ + NET_SDK_UPGRADE_IPC_WRITE_FLASH_FAILED, //дflshʧ + NET_SDK_UPGRADE_IPC_OTHER_ERROR // +}NET_SDK_UPGRADE_IPC_ERR_CODE; + +typedef enum +{ + NET_SDK_REMOTE_CONFIG_STATUS_SUCCESS = 1001,//¼һɹ + NET_SDK_REMOTE_CONFIG_STATUS_FAILED, //¼һʧ + NET_SDK_REMOTE_CONFIG_STATUS_PROCESSING //¼һڻȡ +}NET_SDK_REMOTE_CONFIG_STATUS; + +#define MAX_CODE_CARD_SUPPORTDISPNUMS 8//ÿ뿨ֵ֧ʾͨ +#define MAX_SUPPORT_RES 32 + +typedef enum _BOARD_TYPE +{ + DS4004HC_BOARD =2, //4004HC + DS4008HC_BOARD =3, //4008HC + DS4016HC_BOARD =4, //4016HC + DS4001HF_BOARD =5, //4001HF + DS4004HF_BOARD =6, //4004HF + DS4002MD_BOARD =7, //4002MD + DS4004MD_BOARD =8, //4004MD + DS4016HCS_BOARD =9, //4016HCS + DS4004HC_PLUS_BOARD =13, //4004HC+ + DS4008HC_PLUS_BOARD =14, //4008HC+ + DS4016HC_PLUS_BOARD =15, //4016HC+ + DS4008HF_BOARD =16, //4008HF + DS4008MD_BOARD =17, //4008MD + DS4008HS_BOARD =18, //4008HS + DS4016HS_BOARD =19, //4016HS + + DS4108HCV_BOARD =20, //4108HCV + DS4116HCV_BOARD =21, //4116HCV + DS5016HC_BOARD =22, //5016HC + + DS4208HFV_BOARD =23, //4208HFV + DS4216HC_BOARD =24, //4216HC + DS4216HFV_BOARD =25, //4216HFV + + DS5008HF_BOARD =26, //5008HF + DS5116HF_BOARD =27, //5116HF + + DS5216HC_BOARD =28, //5216HC + DS5208HF_BOARD =29, //5208HF + DS5216HF_BOARD =30, //5216HF + + DS4101HD_BOARD =31, //4101HD + DS4102HD_BOARD =32, //4102HD + DS4104HD_BOARD =33, //4104HD + + DS4002MD_PLUS_BOARD =34, //4002MD+ + DS4004MD_PLUS_BOARD =35, //4004MD+ + + DS4204HFV_BOARD =36, //4204HFV + DS4308HCV_BOARD =37, //4308HCV + DS4308HFV_BOARD =38, //4308HFV + DS4316HCV_BOARD =39, //4316HCV + DS4316HFV_BOARD =40, //4316HFV + DS4304HD_BOARD =41, //4304HD + DS4304HFH_BOARD =42, //4304HFH + DS4304HFV_BOARD =43, //4304HFV + DS4302HFH_BOARD =44, //4302HFH + DS5316HF_BOARD =45, //5316HF + DS4308HW_BOARD =46, //4308HW + DS4316HW_BOARD =47, //4316HW + DS4308MD_BOARD =48, //4308MD + UNKNOWN_BOARD_TYPE =0xffffffff, +}BOARD_TYPE; + +typedef struct tagNET_DVR_CODECARD_ABILITY /*뿨*/ +{ + BYTE byCardType; //뿨(BOARD_TYPEеö) + BYTE byCodeNums; //ͨ + BYTE byDispNums; //ʾͨ + BYTE byCodeStartIdx; //׸ͨбͨе + BYTE byDispStartIdx; //׸ʾͨʾͨе + BYTE byRes1[3]; + DWORD dwVgaSupportResolution[MAX_SUPPORT_RES/*32*/];//ֵ֧ķֱ + DWORD dwHdmiSupportResolution[MAX_SUPPORT_RES/*32*/];//ֵ֧ķֱ + DWORD dwDviSupportResolution[MAX_SUPPORT_RES/*32*/];//ֵ֧ķֱ + DWORD dwYpbprSupportResolution[MAX_SUPPORT_RES/*32*/];//ֵ֧ķֱ + BYTE byDispFormat[MAX_CODE_CARD_SUPPORTDISPNUMS]; //ֵ֧ģʽ(HD_DISPLAY_FORMATеö) + BYTE byWindowMode[MAX_CODE_CARD_SUPPORTDISPNUMS][12]; //ֵ֧Ĵģʽ(1,2,4,9,16)) + BYTE byRes2[36]; +}NET_DVR_CODECARD_ABILITY,*LPNET_DVR_CODECARD_ABILITY; + +#define MAX_CODE_CARD_NUM 8 //뿨 +typedef struct tagNET_DVR_CODESVR_ABILITY +{ + DWORD dwSize; /* ṹС */ + BYTE byCardNums; /* 뿨 */ + BYTE byStartChan; /* ʼͨ */ + BYTE byRes1[2]; + NET_DVR_CODECARD_ABILITY struCodeCardAbility[MAX_CODE_CARD_NUM]; + BYTE byRes2[64]; +}NET_DVR_CODESVR_ABILITY, *LPNET_DVR_CODESVR_ABILITY; + +typedef struct tagNET_DVR_CODER_SERVER_OUTPUT_CFG +{ + DWORD dwSize; + BYTE byDispChanType; /*ʾͨͣ0-BNC1-VGA2-HDMI3-DVI*/ //˲ֻܻȡ + BYTE byVedioFormat; /*1:NTSC,2:PAL0-NULL*/ + BYTE byRes1[2]; + DWORD dwResolution; //ֱ + DWORD dwWindowMode; /*ģʽ֧ģʽȡ*/ + BYTE byRes2[64]; +}NET_DVR_CODER_SERVER_OUTPUT_CFG,*LPNET_DVR_CODER_SERVER_OUTPUT_CFG; + +typedef struct tagNET_DVR_DISPLAY_START_INFO +{ + DWORD dwSize; + DWORD dwDisplayChan; //ʾͨ + DWORD dwCodeChan; //ͨ + DWORD dwWinNum; //ںţ1 + BYTE byEnableAudio; //Ƶ0-أ1- + BYTE byRes[31]; +}NET_DVR_DISPLAY_START_INFO,*LPNET_DVR_DISPLAY_START_INFO; + +typedef struct tagNET_DVR_CODER_WINDOW_INFO +{ + DWORD dwSize; + DWORD dwDisplayChan;//ʾͨ + DWORD dwWinNum; //ںţ1ʼ + BYTE byRes[16]; +}NET_DVR_CODER_WINDOW_INFO,*LPNET_DVR_CODER_WINDOW_INFO; + +typedef struct tagNET_DVR_WINDOW_STATUS +{ + DWORD dwSize; //ṹС + DWORD dwCodeChan; /*ͨ*/ + BYTE byDisplay; /*Ƿ0-1-*/ + BYTE byAudio; /*ƵǷ,0-1-*/ + BYTE byRes[30]; +}NET_DVR_WINDOW_STATUS,*LPNET_DVR_WINDOW_STATUS; + +typedef struct tagNET_DVR_RECORD_LOCK_PERCENTAGE +{ + DWORD dwSize; //ṹС + BYTE byPercentage; //ٷֱȣȡֵΧ[0,100] + BYTE byRes[31]; // +}NET_DVR_RECORD_LOCK_PERCENTAGE, *LPNET_DVR_RECORD_LOCK_PERCENTAGE; + +typedef struct tagNET_DVR_UPDATE_RECORD_INFO +{ + DWORD dwSize; //ṹС + NET_DVR_STREAM_INFO struStreasmInfo; //ID + DWORD dwBeginTime; //¼ܵĿʼʱ + DWORD dwEndTime; //¼ܵĽʱ + BYTE byRes[32]; // +}NET_DVR_UPDATE_RECORD_INFO, *LPNET_DVR_UPDATE_RECORD_INFO; + +typedef struct tagNET_DVR_CMD_TRIGGER_PERIOD_RECORD_PARA +{ + NET_DVR_STREAM_INFO struStreamInfo; + DWORD dwCmdType; //ⲿ + DWORD dwRecordTimeLen; //¼ʱ䣬λ + BYTE byEventID[MAX_EVENTID_LEN]; //¼IDΪϢ + DWORD dwLockDuration; //ʱ䣬λ룬0xffffffff- 0- + BYTE byBackUp; //Ƿ浵0-浵1-浵 + BYTE byPreRecord; //ǷԤ¼0-Ԥ¼1-Ԥ¼ + BYTE byRes[122]; +}NET_DVR_CMD_TRIGGER_PERIOD_RECORD_PARA, *LPNET_DVR_CMD_TRIGGER_PERIOD_RECORD_PARA; + +typedef struct tagNET_DVR_LOCK_FILE_BY_NAME_PARA +{ + BYTE byFileName[NAME_LEN]; // ¼ļЭֻ32ļ + DWORD dwLockDuration; // ʱ,λ룬0xffffffffʾ + BYTE byRes[512]; +}NET_DVR_LOCK_FILE_BY_NAME_PARA, *LPNET_DVR_LOCK_FILE_BY_NAME_PARA; + + +typedef struct tagNET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struStreamInfo; + DWORD dwStreamType; //ͣ0-1-2-¼ͣ3-3ԶͨGET /ISAPI/Streaming/channels//customStreamȡǰͨѾӵԶIDԶΪ6~10ֵ6~10 + BYTE byRes[32]; +}NET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND, *LPNET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND; + + +typedef struct tagNET_DVR_MULTI_STREAM_COMPRESSIONCFG +{ + DWORD dwSize; + DWORD dwStreamType; //ͣ0-1-2-¼ͣ3-3 + NET_DVR_COMPRESSION_INFO_V30 struStreamPara; //ѹ + DWORD dwResolution; //ֱС255ʱbyResolutionһ£255ʱԸֶηֵжϡ + BYTE byRes[76]; +}NET_DVR_MULTI_STREAM_COMPRESSIONCFG, *LPNET_DVR_MULTI_STREAM_COMPRESSIONCFG; + +typedef struct tagNET_DVR_PUSHALARMINFO_V40 +{ + DWORD dwAlarmType; /*0-ź,1-Ӳ,2-źŶʧ,3ƶ,4Ӳδʽ,5-дӲ̳,6-ڵ,7-ʽƥ, 8-Ƿ, 9-Ƶź쳣10-¼쳣 11- ܳ仯 12-쳣 */ + union + { + BYTE byRes[300]; + struct + { + DWORD dwAlarmInputNumber; /*λ,0λӦ0˿,dwAlarmTypeΪ0ʱҪ*/ + BYTE byAlarmOutputNumber[MAX_ALARMOUT_V30]; /*λ,0λӦ0˿, */ + BYTE byAlarmRelateChannel[MAX_CHANNUM_V30]; /*λ,0λӦ0ͨ*/ + BYTE byRes1[97]; + BYTE byDeviceID[NAME_LEN]; /*豸ID*/ + BYTE byRes2[7]; + }struIOAlarm; + struct + { + BYTE byStreamID[STREAM_ID_LEN]; // IDϢ + BYTE byRes1[132]; + BYTE byChannel[MAX_CHANNUM_V30]; /*λ,0x2ʾ1ͨ1λӦ1ͨ(ͨ1ʼ)dwAlarmTypeΪ23, 6910ʱҪ, */ + BYTE byRes2[33]; + BYTE byDeviceID[NAME_LEN]; /*豸ID*/ + BYTE byRes3[7]; + }struStreamIDorChannel; + struct + { + BYTE byRes1[228]; + BYTE byDiskNumber[MAX_DISKNUM_V30]; /*λ,0λӦ0Ӳ,dwAlarmTypeΪ1,4,5ʱҪ*/ + BYTE byDeviceID[NAME_LEN]; /*豸ID*/ + BYTE byRes2[7]; + }struDiskAlarm; + }uAlarmInfo; +}NET_DVR_PUSHALARMINFO_V40, *LPNET_DVR_PUSHALARMINFO_V40; + +typedef struct tagNET_DVR_RECORD_PACK +{ + NET_DVR_STRUCTHEAD struStruceHead; + DWORD dwPackageInterval; // ʱ ʱ䵥λ + BYTE byRes[32]; // +}NET_DVR_RECORD_PACK,*LPNET_DVR_RECORD_PACK; + +#define NET_DVR_FIND_NAS_DIRECTORY 6161 //NASĿ¼ +#define NET_DVR_NAS_FINDING 0 //ڲ +#define NET_DVR_NAS_RECV 1 // +#define NET_DVR_NAS_OVER 2 //ҽ +#define NET_DVR_NAS_EXCEPTION 3 //쳣 +typedef struct tagNET_DVR_NET_DISK_SERACH_PARAM +{ + NET_DVR_IPADDR struIP; // IPַ + WORD wPort; // IP˿ + BYTE byRes[10]; // ֽ +}NET_DVR_NET_DISK_SERACH_PARAM, *LPNET_DVR_NET_DISK_SERACH_PARAM; + + +typedef struct tagNET_DVR_NET_DISK_SERACH_RET +{ + BYTE byDirectory[128]; // صļĿ¼ + BYTE byRes[20]; +}NET_DVR_NET_DISK_SERACH_RET, *LPNET_DVR_NET_DISK_SERACH_RET; + +typedef struct tagNET_DVR_WD1_CFG +{ + NET_DVR_STRUCTHEAD struStruceHead; + BYTE byWD1Enable; //WD1ʹܿ 0 ر 1 + BYTE byRes[31]; // +}NET_DVR_WD1_CFG, *LPNET_DVR_WD1_CFG; + +typedef struct tagNET_DVR_FTPCFG_V40 +{ + NET_DVR_STRUCTHEAD struStruceHead; + BYTE byEnableFTP; /*Ƿftpϴܣ0-1-*/ + BYTE byProtocolType; /*Э 0-FTP1-SFTP*/ + WORD wFTPPort; /*˿*/ + union + { + struct + { + BYTE szDomain[64]; //ַʹIPv4 IPv6 + BYTE byRes1[80]; + }struDomain; + struct + { + NET_DVR_IPADDR struIp; /*IPַ:IPv4 IPv6ַ, 144ֽ*/ + }struAddrIP; + }unionServer; //ʹṹֹIPַ + BYTE szUserName[32]; /*û*/ + BYTE szPassWORD[16]; /**/ + BYTE szTopCustomDir[64]; /*ԶһĿ¼*/ + BYTE szSubCustomDir[64]; /*ԶĿ¼*/ + BYTE byDirLevel; /*0 = ʹĿ¼ṹֱӱڸĿ¼, 1 = ʹ1Ŀ¼,2=ʹ2Ŀ¼*/ + BYTE byTopDirMode; /* һĿ¼0x1 = ʹ豸,0x2 = ʹ豸,0x3 = ʹ豸ipַ + 0x4=ʹʾ,0x5=ʹʱ(),0x6-ʹԶ ,0x7=Υ,0x8=,0x9=ص*/ + BYTE bySubDirMode; /*Ŀ¼0x1=ʹͨ,0x2=ʹͨ 0x3=ʹʱ(), + 0x4=ʹó,0x5-ʹԶ, 0x6=Υ,0x7=,0x8=ص,0x9 = λ*/ + BYTE byType; /* 0-1-*/ + BYTE byEnableAnony; /* 0- 1*/ + BYTE byAddresType; /*0 ʹIPV4IPV6 1- ʹ*/ + BYTE byFTPPicType; //0-1-ͣץͼƬ + BYTE byPicArchivingInterval; //ͼƬ鵵[1~30],0ʾر + NET_DVR_PICTURE_NAME_EX struPicNameRule; /* ͼƬ: + byFTPPicType ==1ʱ,ڵͣץͼƬ*/ + BYTE byPicNameRuleType; //ͼƬͣ0~Ĭͣ1~ͼƬǰ׺(struPicNameRuleеbyPicNamePrefixֶ) + BYTE byRes[203]; /**/ +}NET_DVR_FTPCFG_V40, *LPNET_DVR_FTPCFG_V40; + +typedef struct tagNET_DVR_FTP_TYPE +{ + BYTE byType; // 0-1- + BYTE byRes[3]; +}NET_DVR_FTP_TYPE, *LPNET_DVR_FTP_TYPE; + +//FTPԲṹ +typedef struct +{ + DWORD dwSize; + BYTE byEnableFTP; /*Ƿftpϴܣ0-1-*/ + BYTE byProtocolType; /*Э 0-FTP1-SFTP*/ + WORD wFTPPort; /*˿*/ + union + { + BYTE byRes[144]; + struct + { + BYTE szDomain[MAX_DOMAIN_NAME]; //ַʹIPv4 IPv6 + BYTE byRes1[80]; + }struDomain; + struct + { + NET_DVR_IPADDR struIp; /*IPַ:IPv4 IPv6ַ, 144ֽ*/ + }struAddrIP; + }unionServer; //ʹṹֹIPַ + + BYTE szUserName[NAME_LEN]; /*û*/ + BYTE szPassWORD[PASSWD_LEN]; /**/ + BYTE szTopCustomDir[MAX_CUSTOM_DIR]; /*ԶһĿ¼*/ + BYTE szSubCustomDir[MAX_CUSTOM_DIR]; /*ԶĿ¼*/ + BYTE byDirLevel; /*0 = ʹĿ¼ṹֱӱڸĿ¼, 1 = ʹ1Ŀ¼,2=ʹ2Ŀ¼*/ + BYTE byTopDirMode; /* һĿ¼0x1 = ʹ豸,0x2 = ʹ豸,0x3 = ʹ豸ipַ + 0x4=ʹʾ,0x5=ʹʱ(),0x6-ʹԶ ,0x7=Υ, + 0x8=,0x9=ص*/ + BYTE bySubDirMode; /*Ŀ¼0x1=ʹͨ,0x2=ʹͨ 0x3=ʹʱ(), + 0x4=ʹó,0x5-ʹԶ, 0x6=Υ,0x7=,0x8=ص, + 0x9 = λ*/ + BYTE byType; /* 0-1-*/ + BYTE byEnableAnony; /* 0- 1*/ + BYTE byAddresType; /*0 ʹIPV4IPV6 1- ʹ*/ + + BYTE byRes2[198]; +}NET_DVR_FTP_SERVER_TEST_PARA, *LPNET_DVR_FTP_SERVER_TEST_PARA; + +#define NET_SDK_ACCESS_KEY_LEN 64 //볤 +#define NET_SDK_SECRET_KEY_LEN 64 //볤 + +//Խṹ +typedef struct tagNET_DVR_SERVER_TEST_PARA +{ + DWORD dwSize; + union + { + BYTE byRes[740]; + struct + { + NET_DVR_NTPPARA struNtpPara; /*NTPԲ80ֽ*/ + BYTE byRes1[660]; + }struNtpPara; + struct + { + NET_DVR_SINGLE_NET_DISK_INFO_V40 struNasPara; /*NASԲ480ֽ*/ + BYTE byRes1[260]; + }struNasPara; + struct + { + NET_DVR_FTP_SERVER_TEST_PARA struFtpPara; /*FTPԲ528ֽ*/ + BYTE byRes1[212]; + }struFtpPara; + struct + { + NET_DVR_EMAILCFG_V30 struEmailPara; /*EmailԲ660ֽ*/ + BYTE byRes1[80]; + }struEmailPara; + struct + { + NET_DVR_IPADDR struIp; /*IPͻԲ24ֽ*/ + BYTE byRes1[716]; + }struIpPara; + struct + { + NET_DVR_IPADDR struIPAdder; + WORD wPort; //˿ں + BYTE byRes2[2]; + char szUser[CLOUD_NAME_LEN/*48*/]; //û + char szPassword[CLOUD_PASSWD_LEN/*48*/]; // + NET_DVR_POOLPARAM struPoolInfo[16];// 0ʾͼƬݳأ1ʾΥͼƬݳأ2ʾݳأIPC/D + BYTE byProtocolType;//ƴ洢Э汾0- 1.0汾1- 2.0汾 + BYTE byRes3[3]; + char szAccessKey[NET_SDK_ACCESS_KEY_LEN/*64*/]; // + char szSecretKey[NET_SDK_SECRET_KEY_LEN/*64*/]; // + BYTE byRes1[354]; + }struCloudStoragePara; + struct + { + BYTE byPhoneNum[MAX_PHONE_NUM/*32*/]; + BYTE byRes1[708]; + }struPhoneNumPara;//Ų + }unionServerPara; + BYTE byRes2[800]; +}NET_DVR_SERVER_TEST_PARA, *LPNET_DVR_SERVER_TEST_PARA; + +typedef struct tagNET_DVR_GOP_INFO //ȡGOPϢṹ,ʱʹ +{ + DWORD dwSize; //ṹС + LONG lChannel; //ͨ + NET_DVR_TIME_EX struStartTime; //ʼʱ + NET_DVR_TIME_EX struEndTime; //ʱ + BYTE byRes[256]; // ֽ +}NET_DVR_GOP_INFO, *LPNET_DVR_GOP_INFO; + +typedef struct tagNET_DVR_GOP_INFO_RET +{ + NET_DVR_TIME_V30 struGopTime; //GopϢʱ + DWORD dwDuration; //Ϣʱ + DWORD dwDataSize; //ָpBufС + BYTE byRes[128]; + char* pBuf;//GopϢ +}NET_DVR_GOP_INFO_RET, *LPNET_DVR_GOP_INFO_RET; + +typedef struct tagNET_DVR_GOP_INFO_PASSBACK //Ϣ +{ + DWORD dwSize; //ṹС + NET_DVR_TIME_V30 struTime; //ʼʱ,ΪԪʱʾĿʼʱ䣬ΪͼʱʾͼƬʱ + DWORD dwDuration; //Ϣʱ䣬ΪԪʱЧ + DWORD dwMetaDataSize; //ԴĴС + DWORD dwPicDataSize; //ͼƬݴС + char* pMetaDataBuffer; //Ԫݻ + char* pPicDataBuf; //ͼƬ + BYTE byRes[32]; +}NET_DVR_GOP_INFO_PASSBACK, *LPNET_DVR_GOP_INFO_PASSBACK; + +typedef struct tagNET_DVR_SINGLEWALLPARAM +{ + DWORD dwSize; + BYTE byEnable; + BYTE byRes1[3]; + DWORD dwWallNum;//ǽ + //Ϊ׼128128Ⱥ͸߶ֵãΪ׼ֵ + NET_DVR_RECTCFG struRectCfg; + BYTE byRes2[36]; +}NET_DVR_SINGLEWALLPARAM, *LPNET_DVR_SINGLEWALLPARAM; + +/*Ϣ*/ +typedef struct tagNET_DVR_WALLWINCFG +{ + DWORD dwSize; + BYTE byEnable; + BYTE byRes1[7]; + DWORD dwWinNum;//ں + DWORD dwLayerIndex;//Ӧͼ + NET_DVR_RECTCFG struWinPosition;//ĿĴ(ʾǽ) + DWORD dwDeviceIndex;//ֲʽ豸 + WORD wInputIndex;//źԴ + BYTE byRes2[14]; +}NET_DVR_WALLWINCFG, *LPNET_DVR_WALLWINCFG; + +typedef struct tagNET_DVR_WALL_INDEX +{ + DWORD dwSize; + BYTE byWallNo; //ǽţ1ʼ + BYTE bySceneNo; // + BYTE byRes1[2]; + DWORD dwDeviceID; //ֲʽ豸ID + DWORD dwWindowNo; ///źԴ + BYTE byRes2[32]; +}NET_DVR_WALL_INDEX, *LPNET_DVR_WALL_INDEX; + +typedef struct tagNET_DVR_WALLWINPARAM +{ + DWORD dwSize; + BYTE byTransparency; //ʹ͸ȣ0-أ0- + BYTE byWinMode;//ڷģʽȡ + BYTE byEnableSpartan;//ʹܣ0-أ1- + BYTE byDecResource; //ΪڷĽԴ1-D1,2-720P,3-1080P + BYTE byWndShowMode; //ʾģʽ0-ֶβã1-Ӵģʽ2-Ӵȫģʽ + BYTE byEnabledFeature; //Ƿóд0-ã!0- + BYTE byFeatureMode; //дģʽóдʱЧ0-Ч1-1+5ģʽ + BYTE byRes1; + DWORD dwAmplifyingSubWndNo; //ȫӴںţ1ֽǽ+1ֽӴں+2ֽڴںţ + //byWndShowModeΪ2ʱЧʾǰȫʾӴ + BYTE byWndTopKeep; //ö֣0-֣1- + BYTE byWndOpenKeep; //ڴ򿪱֣0-֣1- + BYTE byRes[22]; +}NET_DVR_WALLWINPARAM, *LPNET_DVR_WALLWINPARAM; + +typedef struct tagNET_DVR_WALLSCENECFG +{ + DWORD dwSize; + BYTE sSceneName[NAME_LEN]; // + BYTE byEnable; //ǷЧ0-Ч1-Ч + BYTE bySceneIndex; //ţֻܻȡȡгʱʹøò + BYTE byRes [78]; +}NET_DVR_WALLSCENECFG, *LPNET_DVR_WALLSCENECFG; + +typedef struct tagNET_DVR_WALLWIN_INFO +{ + DWORD dwSize; + DWORD dwWinNum; //ں + DWORD dwSubWinNum;//Ӵں + DWORD dwWallNo; //ǽ + BYTE byRes[12]; +}NET_DVR_WALLWIN_INFO,*LPNET_DVR_WALLWIN_INFO; + +typedef struct tagNET_DVR_WALL_WIN_STATUS +{ + DWORD dwSize ; + BYTE byDecodeStatus; /*ǰ״̬:0:δ,1 :*/ + BYTE byStreamType; /**/ + BYTE byPacketType; /*ʽ*/ + BYTE byFpsDecV; /*Ƶ֡*/ + BYTE byFpsDecA; /*Ƶ֡*/ + BYTE byRes1[7]; + DWORD dwDecodedV; /*Ƶ֡*/ + DWORD dwDecodedA; /*Ƶ֡*/ + WORD wImgW; /*ǰԴͼС*/ + WORD wImgH; + BYTE byStreamMode ; //Դ(˲Ƶۺƽ̨Ч)1-磬2-ۺƽ̨ڲϵͳ3-Ļ0xff-Ч + BYTE byRes2[31]; +}NET_DVR_WALL_WIN_STATUS, *LPNET_DVR_WALL_WIN_STATUS; + +typedef struct tagNET_DVR_WININDEX_INFO +{ + DWORD dwWinIndex; //ں + DWORD dwSubWinIndex;//Ӵں + BYTE byType ;//Դͣ1-룬2- + BYTE byWallNo ; //ǽ + BYTE byRes[6]; +}NET_DVR_WININDEX_INFO, *LPNET_DVR_WININDEX_INFO; + +typedef struct tagNET_DVR_ASSOCIATEDDEV_CHAN_INFO +{ + DWORD dwSize ; + BYTE sAddress[MAX_DOMAIN_NAME];//ipַ + WORD wDVRPort; /* ˿ں */ + WORD wChannel; /* ͨ */ + BYTE sUserName[NAME_LEN]; /* ½ʺ */ + BYTE sPassword[PASSWD_LEN]; /* */ + BYTE byRes[24]; +}NET_DVR_ASSOCIATEDDEV_CHAN_INFO,*LPNET_DVR_ASSOCIATEDDEV_CHAN_INFO; + +typedef struct tagNET_DVR_WALLOUTPUTPARAM +{ + DWORD dwSize; + DWORD dwResolution; //ֱ + NET_DVR_VIDEOEFFECT struRes; + BYTE byVideoFormat; //ƵʽVIDEO_STANDARD + BYTE byDisplayMode;/*ģʽ,1-BNC2-VGA3-HDMI4-DVI5-SDI, 6-FIBER, 7-RGB, 8-YPrPb, 9-VGA/HDMI/DVIӦ0xff-Ч*/ + BYTE byBackgroundColor; //ɫ0-Чֱ֧ɫ1-죬2-̣3-4-ƣ5-ϣ6-࣬7-ڣ8-ף0xff-Զ + BYTE byUseEDIDResolution; //ǷʹEDIDֱʣ0-ʹã1-ʹ + WORD wLEDWidth; //LEDֱʿ + WORD wLEDHeight; //LEDֱʸ + NET_DVR_RGB_COLOR struBackColor;//ɫbyBackgroundColorΪ0xffʱЧ + BYTE byLinkStatus;//״̬0-Ч,1-ʾ,2-δʾ + BYTE byRes2[51]; +}NET_DVR_WALLOUTPUTPARAM, *LPNET_DVR_WALLOUTPUTPARAM; + +#define MAX_UNITEDMATRIX_NUM 8 //Ƶۺƽ̨ + +typedef struct NET_DVR_SUBMATRIXSYSTEMINFO +{ + //ƽ̨ţ0ʾ޴ƽ̨ + DWORD dwSequence; + BYTE sAddress[MAX_DOMAIN_NAME];//ipַ + WORD wSubMatrixPort; /*ϵͳ˿ں*/ + BYTE byRes1[6]; + BYTE sUserName[NAME_LEN]; /*û*/ + BYTE sPassword[PASSWD_LEN]; /* */ + BYTE byRes2[36]; +}NET_DVR_SUBMATRIXSYSTEMINFO,*LPNET_DVR_SUBMATRIXSYSTEMINFO; + +typedef struct tagNET_DVR_UNITEDMATRIXSYSTEMINFO +{ + DWORD dwSize; + //Ƶۺƽ̨Ϣ + NET_DVR_SUBMATRIXSYSTEMINFO struMatrixInfo[MAX_UNITEDMATRIX_NUM]; + BYTE byRes[32]; +}NET_DVR_UNITEDMATRIXSYSTEMINFO,*LPNET_DVR_UNITEDMATRIXSYSTEMINFO; + +typedef struct tagNET_DVR_SUBSTREAM_SWITCH_CFG +{ + BYTE byAutoSwitchEnable; //Զл0 - ã1 - + BYTE byRes1[3]; + WORD wSubWndWidth; //Ӵڿ趨ֵbyAutoSwitchEnableΪ1ʱЧ + WORD wSubWndHeight; //Ӵڸ߶趨ֵbyAutoSwitchEnableΪ1ʱЧ +}NET_DVR_SUBSTREAM_SWITCH_CFG, *LPNET_DVR_SUBSTREAM_SWITCH_CFG; + +typedef struct tagNET_DVR_WALL_CFG +{ + DWORD dwSize; + BYTE byTransparency;//͸,0-100,0Ϊ͸ + BYTE byWinStaticMode; //ڽֹͣʾģʽ1-(֮ǰǺɫ)2-ʾһ֡ͼ + BYTE byStreamFailedMode; //ȡʧʾģʽ1-Ƶźš2-ʾһ֡ͼ3-쳣4- + BYTE byEnabledOverlayLogo; //ʱǷLOGOʾû0-ӣ!0- + NET_DVR_SUBSTREAM_SWITCH_CFG struSubStreamSwitch; //л + BYTE byLEDShowMode; //LEDʾģʽ0-ͨģʽ1-ƽģʽ + BYTE byLowLatencyMode; //ʱģʽ0-ͨģʽ1-ʱģʽ + BYTE byRes[50]; +}NET_DVR_WALL_CFG, *LPNET_DVR_WALL_CFG; + +typedef struct tagNET_DVR_LEDDISPLAYINFO +{ + DWORD dwSize; + BYTE byAddressType; //0-ʵipv4 ipv6ַ 1- + BYTE byRes1[3]; + // unionServerʹʵʵַ + union + { + struct + { + BYTE szDomain[MAX_DOMAIN_NAME/*64*/];//ַ + BYTE byRes1[80]; + }struDomain; + struct + { + NET_DVR_IPADDR struIp;/*IPַ*/ //IPv4 IPv6ַ, 144ֽ + } struAddrIP; + }unionServer; //ʹṹͨbyAddressTypeֶαʾIPַ 64 + char szDisplayInfo[MAX_LEDDISPLAYINFO_LEN/*1024*/]; + BYTE byRes[128]; +}NET_DVR_LEDDISPLAYINFO,*LPNET_DVR_LEDDISPLAYINFO; + + +typedef struct tagNET_DVR_LOW_LIGHT_CFG +{ + DWORD dwSize; + BYTE byLowLightLimt; /* նȵӿ: 0-أ1- */ + BYTE byLowLightLimtLevel; + /*0-أ1-*22-*33-*44-*65-*86-*127-*16 + 8-*249-*3210-*4811-*6412-*9613-*12814-*256 + 15-*512, 16-*1.25, 17-*1.5 */ + BYTE byRes[66]; +}NET_DVR_LOW_LIGHT_CFG, *LPNET_DVR_LOW_LIGHT_CFG; + +typedef struct tagNET_DVR_FOCUSMODE_CFG +{ + DWORD dwSize; + BYTE byFocusMode; /* ۽ģʽ0-Զ1-ֶ2-Զ */ + BYTE byAutoFocusMode; /* Զ۽ģʽ0-أ1-ģʽA2-ģʽB3-ģʽAB4-ģʽC Զ۽ģʽҪھ۽ģʽΪԶʱʾ*/ + WORD wMinFocusDistance; /* С۽룬λCM, 0-Զ0xffff-Զ */ + BYTE byZoomSpeedLevel; /* 䱶ٶȣΪʵȡֵ1-3 */ + BYTE byFocusSpeedLevel; /* ۽ٶȣΪʵȡֵ1-3 */ + BYTE byOpticalZoom; /* ѧ䱶0-255 */ + BYTE byDigtitalZoom; /* ֱ䱶0-255 */ + float fOpticalZoomLevel; /* ѧ䱶(ֵ) [1,32], С0.5 ڲ豸ʱ*1000 */ + DWORD dwFocusPos;/* dwFocusPos focusֵ۽ֵΧΪ[0x1000,0xC000]ֵsonyֵʹֵΪ˶ͳһ֤ͬľͷfocusֵתΧ (ֶ۽ģʽӦ)*/ + BYTE byFocusDefinitionDisplay;// ۽ʾ0~ʾ1~ʾ, ʾǰͷĿֵڰͻʹץܹﵽЧԽԽȷΧΪ0~100.0000 + BYTE byFocusSensitivity; //۽ȣΧ[0,2]۽ģʽΪԶԶʱЧ + BYTE byRes1[2]; + DWORD dwRelativeFocusPos;//focusֵ16λʾ۽ֵ0~400016λǰ۽ֵȡʱ¶ֵ + BYTE byRes[48]; +}NET_DVR_FOCUSMODE_CFG, *LPNET_DVR_FOCUSMODE_CFG; + +typedef struct tagNET_DVR_INFRARE_CFG +{ + DWORD dwSize; + BYTE byIrControlMode; /* -ģʽ0-Զ1-ֶ */ + BYTE byIrBrightness; /* -ȣ0-100 */ + BYTE byIrSensitivity; /* -ȣ0-100 */ + BYTE byIrTrigMode; /* ģʽ 0-о1- ԶģʽЧ*/ + BYTE byIrBrightnessLimit;/* ֵΪ80ʾǵǰƵΪԭȸԶԼֵ80% ԶģʽЧ*/ + BYTE byRes[63]; +}NET_DVR_INFRARE_CFG, *LPNET_DVR_INFRARE_CFG; + +typedef struct tagNET_DVR_AEMODECFG +{ + DWORD dwSize; + int iIrisSet; /* ȦΪʵȡֵ*100ֵ0- */ + int iGainSet; /* 棬عⲹΪʵȡֵ*100ֵпǸֵ */ + int iGainLimit;/* ƣعⲹΪʵȡֵ*100ֵпǸֵ */ + int iExposureCompensate; /* عⲹΪʵȡֵ*100ֵ105010.5dB, -750-7.5dB */ + BYTE byExposureModeSet; /* عģʽ,0-ֶģʽ1-Զع⣬2-Ȧȣ3-ȣ4- */ + BYTE byShutterSet; /* ţ0-أ1-Զx12-Զx23-Զx44-Զx85-Զx166-Զx327-Զx648-Զx1289-1/110-1/2 + 11-1/312-1/413-1/614-1/815-1/1216-1/1517-1/2518-1/3019-1/5020-1/6021-1/75 + 22-1/9023-1/10024-1/12025-1/12526-1/15027-1/18028-1/20029-1/21530-1/25031-1/300 + 32-1/35033-1/42534-1/50035-1/60036-1/72537-1/100038-1/125039-1500,40-1/175041-1/2000 + 42-1/250043-3000,44-1/350045-1/400046-1/600047-1/1000048-1/3000049-1/100000,50-1/175 + 51-1/19552-1/22553-1/230 */ + BYTE byImageStabilizeLevel; /* ȼ: 0-3 */ + BYTE byCameraIrCorrect; /* У: 0-Զ1-2, */ + BYTE byHighSensitivity; /* : 0-أ1- */ + BYTE byInitializeLens; /* ʼͷ: 0-أ1- */ + BYTE byChromaSuppress; /* ɫ :0-255*/ + BYTE byMaxShutterSet; //ֵ;ֵbyShutterSetͬ(Զع⡢ȦģʽЧ) + BYTE byMinShutterSet; //Сֵ;ֵbyShutterSetͬ(Զع⡢ȦģʽЧ) + BYTE byMaxIrisSet; //Ȧֵ(Զع⡢ģʽ) [0,100] ; + BYTE byMinIrisSet; //СȦֵ(Զع⡢ģʽ) [0,100] ; + BYTE byExposureLevel;//عȼعģʽΪԶȦȡЧȼ1-5 Ĭ4ϰ汾SDK豸ʱֽΪ0ֽΪ0ʱҲĬΪعȼΪ1 + BYTE byRes[60]; +}NET_DVR_AEMODECFG, *LPNET_DVR_AEMODECFG; + +typedef struct tagNET_DVR_FLASH_CFG +{ + DWORD dwSize; + DWORD dwChan;//ͨ + DWORD dwInNumbers;// + DWORD dwOutNumbers;//뿪 + DWORD dwStartTime;//ʼʱ + DWORD dwEndTime;//ʱ + DWORD dwEhomeFlag;// + DWORD dwAlarmFlag;// + BYTE byRes[1024]; +}NET_DVR_FLASH_CFG, *LPNET_DVR_FLASH_CFG; + +typedef struct tagNET_DVR_EXTERNAL_MATRIX_CFG +{ + DWORD dwSize; + BYTE byValid; // ЧʱΪãЧʱΪɾ + BYTE byRes1[3]; + BYTE sMatrixName[NAME_LEN/*32*/]; // + DWORD dwMatrixID; // IDţֻܻȡ + WORD wMatrixInputChanNum; // ͨĿ + WORD wMatrixOutputChanNum; // ͨĿ + WORD wMatrixOutputChanRef[MAX_CAM_COUNT]; //// 豸;İ󶨹ϵ±ʾ豸ͨţԪصֵʾͨţ + //Ԫֵ0 ʾ󶨾ͨԪֵΪ0ʱʾ󶨣ĻΪĻź;İ󶨹ϵ + BYTE byMatrixChanType;// ͨ1-BNC2-VGA3-RGB4-DVI + BYTE byMatrixProtocol; // Э1ZT1.02.ZT2.03.Extron4.Creator + BYTE byMatrixType; //1-ģ2-־ + BYTE byRes2; + NET_MATRIX_UNION struMatrixUnion; + BYTE byRes3[128]; +}NET_DVR_EXTERNAL_MATRIX_CFG, *LPNET_DVR_EXTERNAL_MATRIX_CFG; + +typedef struct tagNET_DVR_EXTERNAL_MATRIX_CFG_V50 +{ + DWORD dwSize; + BYTE byValid; // ЧʱΪãЧʱΪɾ + BYTE byRes1[3]; + BYTE sMatrixName[NAME_LEN/*32*/]; // + DWORD dwMatrixID; // IDţֻܻȡ + WORD wMatrixInputChanNum; // ͨĿ + WORD wMatrixOutputChanNum; // ͨĿ + WORD wMatrixOutputChanRef[MAX_CAM_COUNT_V50]; //// 豸;İ󶨹ϵ±ʾ豸ͨţԪصֵʾͨţ + //Ԫֵ0 ʾ󶨾ͨԪֵΪ0ʱʾ󶨣ĻΪĻź;İ󶨹ϵ + BYTE byMatrixChanType;// ͨ1-BNC2-VGA3-RGB4-DVI + BYTE byMatrixProtocol; // Э1ZT1.02.ZT2.03.Extron4.Creator + BYTE byMatrixType; //1-ģ2-־ + BYTE byRes2; + NET_MATRIX_UNION struMatrixUnion; + BYTE byRes3[128]; +}NET_DVR_EXTERNAL_MATRIX_CFG_V50, *LPNET_DVR_EXTERNAL_MATRIX_CFG_V50; + + +#define MAX_INPUTNUMS 1024 +#define MAX_OUTPUTNUMS 256 +typedef struct tagNET_DVR_ASSOCIATE_INPUT_PARAM +{ + BYTE byEnable; + BYTE byRes1[3]; + DWORD dwDeviceIndex;//ֲʽ豸 + WORD wInputIndex;//źԴ + BYTE byRes2[18]; +}NET_DVR_ASSOCIATE_INPUT_PARAM, *LPNET_DVR_ASSOCIATE_INPUT_PARAM; + +typedef struct tagNET_DVR_ASSOCIATE_OUTPUT_PARAM +{ + BYTE byEnable; + BYTE byWallNo; //ǽţ1ʼ + BYTE byRes1[2]; + DWORD dwOutputIndex; //ʾ + BYTE byRes2[20]; +}NET_DVR_ASSOCIATE_OUTPUT_PARAM,*LPNET_DVR_ASSOCIATE_OUTPUT_PARAM; + +typedef struct tagNET_DVR_VCS_USER_INFO +{ + DWORD dwSize; + BYTE sUserName[NAME_LEN]; // û16ֽ + BYTE sPassWord[PASSWD_LEN]; // + NET_DVR_IPADDR struUserIP; // ûIPַ(Ϊ0ʱʾκεַ) + BYTE byMacAddr[MACADDR_LEN]; // ַ + BYTE byPriority; // ȼ1-Ա2-Ա ԱκȨޣԱû"û"Ȩ + BYTE byRes1; + DWORD dwRight;/*Զ̲Ȩޣλʾ0-֧֣1-֧֣32λȨ*/ + //bit0-ȡû + //bit1-ʾ + //bit2-ڹ + //bit3-źԴ + //bit4-ֹ + //bit5-Ԥ + //bit6-ͼ + //bit7-OSD + //bit8-Ȩ + //bit9- + //bit10-Զ + //bit11-ָĬ + //bit12-뵼ļ + //bit13-־ѯ + //bit14-Զ + //bit15-Ļ + NET_DVR_ASSOCIATE_INPUT_PARAM struInputParam[MAX_INPUTNUMS/*1024*/]; + NET_DVR_ASSOCIATE_OUTPUT_PARAM struOutputParam[MAX_OUTPUTNUMS/*256*/]; + NET_DVR_RECTCFG_EX struManageRegion; //Ļ + BYTE byWallNo; //Ļǽţֵֻ֧ǽ豸ֶЧ + BYTE byRes2[3]; + BYTE sLoginPassword[PASSWD_LEN/*16*/]; /* ½*/ + BYTE byRes[88];} NET_DVR_VCS_USER_INFO, *LPNET_DVR_VCS_USER_INFO; + +typedef struct tagNET_DVR_STREAM_MEDIA_SERVER_CFG_V41 +{ + BYTE byValid; //Ƿã0-1- + BYTE byRes1[3]; + BYTE byAddress[MAX_DOMAIN_NAME]; //IP + WORD wDevPort; /*ý˿*/ + BYTE byTransmitType; /*Э 0-TCP1-UDP*/ + BYTE byRes2[69]; +}NET_DVR_STREAM_MEDIA_SERVER_CFG_V41,*LPNET_DVR_STREAM_MEDIA_SERVER_CFG_V41; + +//豸ͨϢ +typedef struct tagNET_DVR_DEV_CHAN_INFO_V41 +{ + BYTE byAddress[MAX_DOMAIN_NAME]; //豸 + WORD wDVRPort; //˿ں + BYTE byChannel; //ͨ + BYTE byTransProtocol; //Э0-TCP1-UDP + BYTE byTransMode; //ģʽ 0 1 + BYTE byFactoryType; /*ǰ豸,ͨӿڻȡ*/ + BYTE byDeviceType; //豸(Ƶۺƽ̨ܰʹ)1-ʱƵۺƽ̨byVcaSupportChanModeֶʹýͨʾͨ2- + BYTE byDispChan;//ʾͨ,ʹ + BYTE bySubDispChan;//ʾͨͨţʱʹ + BYTE byResolution; //; 1-CIF 2-4CIF 3-720P 4-1080P 5-500wʹãݸòԴ + BYTE byUseZeroChan; //Ƿʹͨ0-1- + BYTE byRes; + BYTE sUserName[NAME_LEN]; //½ʺ + BYTE sPassword[PASSWD_LEN]; // +}NET_DVR_DEV_CHAN_INFO_V41,*LPNET_DVR_DEV_CHAN_INFO_V41; + +typedef struct tagNET_DVR_DEV_CHAN_INFO_EX +{ + BYTE byChanType; //ͨͣ0-ͨͨ,1-ͨ,2-ID3-Դ4-ͨ5-ƴͨ6-Ļ7-ֲʽԴ8-ںͨ9-Դ + BYTE byStreamId[STREAM_ID_LEN]; //IDbyChanType=29ʱֶָipcID + BYTE byRes1[3]; + DWORD dwChannel; //ͨţͨΪͨͨͨԴͨƴͨĻֲʽԴʱֶ + BYTE byRes2[24]; + BYTE byAddress[MAX_DOMAIN_NAME]; //豸 + WORD wDVRPort; //˿ں + BYTE byChannel; //ͨ,dwChannelΪ0ʱֶЧ + BYTE byTransProtocol; //Э0-TCP1-UDP + BYTE byTransMode; //ģʽ 0 1 + BYTE byFactoryType; /*ǰ豸,ͨӿڻȡ*/ + BYTE byDeviceType; //豸(Ƶۺƽ̨ܰʹ)1-ʱƵۺƽ̨byVcaSupportChanModeֶʹýͨʾͨ2- + BYTE byDispChan;//ʾͨ,ʹ + BYTE bySubDispChan;//ʾͨͨţʱʹ + BYTE byResolution; //; 1-CIF 2-4CIF 3-720P 4-1080P 5-500wʹãݸòԴ + BYTE byRes[2]; + BYTE sUserName[NAME_LEN]; //½ʺ + BYTE sPassword[PASSWD_LEN]; // +}NET_DVR_DEV_CHAN_INFO_EX,*LPNET_DVR_DEV_CHAN_INFO_EX; + +typedef struct tagNET_DVR_STREAM_MEDIA_SERVER +{ + BYTE byValid; //Ƿã0-1- + BYTE byRes1[3]; + BYTE byAddress[MAX_DOMAIN_NAME]; //IP + WORD wDevPort; /*ý˿*/ + BYTE byTransmitType; /*Э 0-TCP1-UDP*/ + BYTE byRes2[5]; +}NET_DVR_STREAM_MEDIA_SERVER,*LPNET_DVR_STREAM_MEDIA_SERVER; + +typedef struct tagNET_DVR_DEV_DDNS_INFO +{ + BYTE byDevAddress[MAX_DOMAIN_NAME]; //(IPServerhiDDNSʱкŻ߱) + BYTE byTransProtocol; //Э0-TCP1-UDP, 2-MCAST + BYTE byTransMode; //ģʽ 0 1 + BYTE byDdnsType; //ͣ0-IPServer 1Dyndns 2PeanutHull()3- NO-IP, 4- hiDDNS + BYTE byRes1; + BYTE byDdnsAddress[MAX_DOMAIN_NAME]; //DDNSַ + WORD wDdnsPort; //DDNS˿ں + BYTE byChanType; //0-ͨͨ,1-ͨ,2-ID + BYTE byFactoryType; //ǰ豸,ͨӿڻȡ + DWORD dwChannel; //ͨ + BYTE byStreamId[STREAM_ID_LEN]; //ID + BYTE sUserName[NAME_LEN]; //½ʺ + BYTE sPassword[PASSWD_LEN]; // + WORD wDevPort; //ǰ豸ͨŶ˿ + BYTE byRes2[2]; +}NET_DVR_DEV_DDNS_INFO,*LPNET_DVR_DEV_DDNS_INFO; + +typedef struct tagNET_DVR_DEC_STREAM_DEV_EX +{ + NET_DVR_STREAM_MEDIA_SERVER struStreamMediaSvrCfg; + NET_DVR_DEV_CHAN_INFO_EX struDevChanInfo; +}NET_DVR_DEC_STREAM_DEV_EX,*LPNET_DVR_DEC_STREAM_DEV_EX; + + +//DDNSʽȡ +typedef struct tagNET_DVR_DEC_DDNS_DEV +{ + NET_DVR_DEV_DDNS_INFO struDdnsInfo; + NET_DVR_STREAM_MEDIA_SERVER struMediaServer; +}NET_DVR_DEC_DDNS_DEV,*LPNET_DVR_DEC_DDNS_DEV; + +typedef union tagNET_DVR_DEC_STREAM_MODE +{ + NET_DVR_DEC_STREAM_DEV_EX struDecStreamDev; + NET_DVR_PU_STREAM_URL struUrlInfo; + NET_DVR_DEC_DDNS_DEV struDdnsDecInfo; + BYTE byRes[300]; +}NET_DVR_DEC_STREAM_MODE,*LPNET_DVR_DEC_STREAM_MODE; + +typedef struct tagNET_DVR_PU_STREAM_CFG_V41 +{ + DWORD dwSize; + BYTE byStreamMode;/*ȡģʽ0-Ч1-ͨIPȡ2-ͨURLȡ,3-̬ͨ豸ȡ*/ + BYTE byStreamEncrypt; //Ƿܴ,0-֧,1-֧ + BYTE byRes1[2]; + NET_DVR_DEC_STREAM_MODE uDecStreamMode;//ȡϢ + DWORD dwDecDelayTime;//ʱʱ䣬λ + BYTE sStreamPassword[STREAM_PASSWD_LEN]; //,Ϣ + BYTE byRes2[48]; +}NET_DVR_PU_STREAM_CFG_V41,*LPNET_DVR_PU_STREAM_CFG_V41; + +typedef struct tagNET_DVR_MATRIX_CHAN_INFO_V41 +{ + BYTE byEnable; //Ƿã0-1- + BYTE byStreamMode;/*ȡģʽ0-Ч1-ͨIPȡ2-ͨURLȡ,3-̬ͨ豸ȡ*/ + BYTE byRes[2]; + NET_DVR_DEC_STREAM_MODE uDecStreamMode;//ȡϢ +}NET_DVR_MATRIX_CHAN_INFO_V41,*LPNET_DVR_MATRIX_CHAN_INFO_V41; + +typedef struct tagNET_DVR_MATRIX_LOOP_DECINFO_V41 +{ + DWORD dwSize; + DWORD dwPoolTime; /*Ѳ*/ + NET_DVR_MATRIX_CHAN_INFO_V41 struchanConInfo[MAX_CYCLE_CHAN_V30]; + BYTE byStreamEncrypt; //Ƿܴ,0-֧,1-֧ + BYTE byRes[3]; + BYTE sStreamPassword[STREAM_PASSWD_LEN]; //,Ϣ +}NET_DVR_MATRIX_LOOP_DECINFO_V41, *LPNET_DVR_MATRIX_LOOP_DECINFO_V41; + +typedef struct tagNET_DVR_MATRIX_DEC_CHAN_INFO_V41 +{ + DWORD dwSize; + BYTE byStreamMode;/*ȡģʽ0-Ч1-ͨIPȡ2-ͨURLȡ,3-̬ͨ豸ȡ*/ + BYTE byRes1[3]; + NET_DVR_DEC_STREAM_MODE uDecStreamMode;//ȡϢ + DWORD dwPlayMode; /* 0-̬ 1ѭ 2ʱط 3ļط */ + NET_DVR_TIME StartTime; /* ʱطſʼʱ */ + NET_DVR_TIME StopTime; /* ʱطֹͣʱ */ + BYTE sFileName[128]; /* ļطļ */ + DWORD dwGetStreamMode; /*ȡģʽ:1-2-*/ + NET_DVR_MATRIX_PASSIVEMODE struPassiveMode; + BYTE byRes2[32]; +}NET_DVR_MATRIX_DEC_CHAN_INFO_V41,*LPNET_DVR_MATRIX_DEC_CHAN_INFO_V41; + +typedef struct tagNet_DVR_IP_ADDRESS +{ + BYTE byDevAddress[MAX_DOMAIN_NAME]; /*豸IPַ*/ + WORD wDevPort; //豸˿ + BYTE byres[134]; +}NET_DVR_IP_ADDRESS, *LPNET_DVR_IP_ADDRESS; + +typedef struct tagNet_DVR_DDNS_ADDRESS +{ + BYTE byDevAddress[MAX_DOMAIN_NAME]; /*DDNS*/ + BYTE byDevDdns[MAX_DOMAIN_NAME]; /*豸ַ*/ + BYTE byDdnsType; //ͣ0-IPServer 1Dyndns 2PeanutHull()//3- NO-IP, 4- hiDDNS + BYTE byRes1[3]; + WORD wDevPort; //豸˿ + WORD wDdnsPort; //˿ + BYTE byres[64]; +}NET_DVR_DDNS_ADDRESS, *LPNET_DVR_DDNS_ADDRESS; + +typedef struct tagNet_DVR_PLAY_BACK_BY_TIME +{ + NET_DVR_TIME StartTime; + NET_DVR_TIME StopTime; +}NET_DVR_PLAY_BACK_BY_TIME, *LPNET_DVR_PLAY_BACK_BY_TIME; + +typedef struct tagNet_DVR_MATRIX_DEC_REMOTE_PLAY_EX +{ + DWORD dwSize; + DWORD dwDecChannel; //ͨ + BYTE byAddressType; //豸ַͣ0-IP1-DDNS + BYTE byChannelType; //ͨͣ0-ͨͨ1-ͨ2-ID + BYTE byres[2]; + BYTE sUserName[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + DWORD dwChannel; /* 豸ͨ */ + BYTE byStreamId[STREAM_ID_LEN]; //ID,˲ͨΪIDʱЧ + DWORD dwPlayMode; /* 0ļ 1ʱ*/ + union + { + BYTE byRes[200]; + NET_DVR_IP_ADDRESS struIpAddr; + NET_DVR_DDNS_ADDRESS struDdnsAddr; + }unionAddr; + + union + { + BYTE byRes[128]; + NET_DVR_PLAY_BACK_BY_TIME struPlayBackByTime; //ʱطʱļϢ + char sFileName[128]; //ļطʱļϢ + }unionPlayBackInfo; +}NET_DVR_MATRIX_DEC_REMOTE_PLAY_EX, *LPNET_DVR_MATRIX_DEC_REMOTE_PLAY_EX; + +typedef struct tagNET_DVR_MATRIX_DEC_REMOTE_PLAY_V50 +{ + DWORD dwSize; + DWORD dwDecChannel; //ͨ + BYTE byAddressType; //豸ַͣ0-IP1-DDNS2-URL + BYTE byChannelType; //ͨͣ0-ͨͨ1-ͨ2-ID + BYTE byStreamEncrypt; //Ƿܴ,0-֧,1-֧ + BYTE byRes1[1]; + BYTE sUserName[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + DWORD dwChannel; /* 豸ͨ */ + BYTE byStreamId[STREAM_ID_LEN]; //ID,˲ͨΪIDʱЧ + DWORD dwPlayMode; /* 0ļ 1ʱ*/ + union + { + BYTE byRes[200]; + NET_DVR_IP_ADDRESS struIpAddr; //IPַbyAddressTypeΪ0ʱЧ + NET_DVR_DDNS_ADDRESS struDdnsAddr; //DDNSַbyAddressTypeΪ1ʱЧ + }unionAddr; + union + { + BYTE byRes[128]; + NET_DVR_PLAY_BACK_BY_TIME struPlayBackByTime; //ʱطʱļϢ + BYTE sFileName[128]; //ļطʱļϢ + }unionPlayBackInfo; + NET_DVR_PU_STREAM_URL struURL; //ȡURLbyAddressTypeΪ2ʱЧ + BYTE sStreamPassword[STREAM_PASSWD_LEN]; //,Ϣ + BYTE byRes2[116]; +}NET_DVR_MATRIX_DEC_REMOTE_PLAY_V50, *LPNET_DVR_MATRIX_DEC_REMOTE_PLAY_V50; + +typedef struct tagNET_DVR_DISPLAY_EFFECT_CFG +{ + DWORD dwSize; + NET_DVR_COLOR struColor; //ʾز/ + BYTE byRes[32]; +}NET_DVR_DISPLAY_EFFECT_CFG,*LPNET_DVR_DISPLAY_EFFECT_CFG; + +//ȡ״̬ +typedef struct tagNET_DVR_TRUNK_USE_STATE +{ + DWORD dwSize; + DWORD dwTrunkID; //ID + WORD wReserveUserID; //ԤûID 1~256 0ʾͷԤ + BYTE byStatus; //1-У2-ռã3- */ + BYTE byRes1; + BYTE byUserId[256]; //±ʾûIDţԪصֵʾǷʹøߡ磺byUserID[0] ֵΪ1ʾûIDΪ0ûʹãbyUserID[0] ֵΪ0ʾûIDΪ0ûûʹ + BYTE byRes2[64]; +}NET_DVR_TRUNK_USE_STATE, *LPNET_DVR_TRUNK_USE_STATE; + + +//PTZƲ +typedef struct tagNET_DVR_PTZ_CTRL_INFO +{ + DWORD dwSize; + DWORD dwCtrlDelayTime; //PTZƳʱ䣬ָPTZƺdwCtrlDelayTimeʱڣͬͼûЧλ + BYTE byRes[64]; +}NET_DVR_PTZ_CTRL_INFO, *LPNET_DVR_PTZ_CTRL_INFO; + +//ʾ· +#define MAX_MATRIX_CASCADE 32 +typedef struct tagNET_DVR_MATRIX_ROUTE_INFO +{ + DWORD dwSize; + DWORD dwCamNo; + DWORD dwMonNo; + DWORD dwSubWin; + DWORD dwUserId; + DWORD dwTrunkId[MAX_MATRIX_CASCADE/*32*/];//trunkIdԱӦ132CAM˿ʼtrunkId[0]ʾһtrunkId[1]ʾڶ, trunkId[i] = 0 ʾ޸ + BYTE byRes[64]; /* Ԥ */ +}NET_DVR_MATRIX_ROUTE_INFO, *LPNET_DVR_MATRIX_ROUTE_INFO; + + +//ȡPTZ״̬ +typedef struct tagNET_DVR_PTZ_STATUS +{ + DWORD dwSize; + DWORD dwUserID; //1~2560 ʾû + DWORD dwStatus; // PTZ״̬0-ֹͣ1- + DWORD dwRestTime; //ʣʱ + BYTE byRes[64]; +}NET_DVR_PTZ_STATUS, *LPNET_DVR_PTZ_STATUS; + +typedef struct tagNET_DVR_SAFETYCABIN_WORK_MODE +{ + DWORD dwSize; + BYTE byWorkMode; //ģʽ0-ų1-ų + BYTE byFaintToUnlock; //εһʱⲿԿ0-1- + BYTE byOvertimeToUnlock; //ʹóʱⲿťǷԿ0-1- + BYTE byRes[13]; +}NET_DVR_SAFETYCABIN_WORK_MODE,*LPNET_DVR_SAFETYCABIN_WORK_MODE; + +typedef struct tagNET_DVR_SAFETYCABIN_PERSON_SIGNAL_CFG +{ + DWORD dwSize; + BYTE bySensorType; //ͣ0-ͣ1-Ļ + BYTE bySensitivity; //жȣΧ0-100% + BYTE byDevUseTimeout; //ʹóʱʱ䣬λ,Χ5-30Ĭϳʱ15min,ʱͨͨϴ + BYTE byRes1; + WORD wCurtainDelayTime; //Ļ̽ʱʱ䣬λ룬Χ0-10 + WORD wCurtainResponseTime; //Ļ״̬仯Ӧʱ䣬λ룬Χ0-300 + WORD wFaintToEmergencyTime; //ε澯Чʱ䣬λ룬Χ10-300 + BYTE byFollowDetectorSensitivity; //βȣΧ0-100% + BYTE byManyPersonSensitivity; //˼ȣΧ0-100% + BYTE byRes2[28]; // +}NET_DVR_SAFETYCABIN_PERSON_SIGNAL_CFG,*LPNET_DVR_SAFETYCABIN_PERSON_SIGNAL_CFG; + +typedef struct tagNET_DVR_ETHERNET_IPV6_COND +{ + DWORD dwSize; + BYTE byMACAddr[MACADDR_LEN]; //ַ + BYTE byRes[64]; // +}NET_DVR_ETHERNET_IPV6_COND,*LPNET_DVR_ETHERNET_IPV6_COND; + +typedef struct tagNET_DVR_ETHERNET_IPV6_CFG +{ + DWORD dwSize; + BYTE byState; //IPv6״̬0-·ɷ䣬1-Զ + BYTE byRes1[3]; + BYTE byIPv6[MAX_IPV6_LEN]; //IPv6ַ + BYTE byRes[64]; // +}NET_DVR_ETHERNET_IPV6_CFG,*LPNET_DVR_ETHERNET_IPV6_CFG; + +typedef struct +{ + BYTE byHour;//0~24 + BYTE byMinute;//0~60 + BYTE bySecond;//0~60 + BYTE byRes; + WORD wMilliSecond; //0~1000 + BYTE byRes1[2]; +}NET_DVR_DAYTIME,*LPNET_DVR_DAYTIME; + +typedef struct +{ + NET_DVR_DAYTIME struStartTime; //ʼʱ + NET_DVR_DAYTIME struStopTime; //ʱ +}NET_DVR_SCHEDULE_DAYTIME, *LPNET_DVR_SCHEDULE_DAYTIME; + +typedef struct +{ + BYTE byObjectSize;//ռȲ(0~100) + BYTE byMotionSensitive; /*ƶ, 0 - 5,ԽԽ,0xffر*/ + BYTE byRes[6]; +}NET_DVR_DNMODE, *LPNET_DVR_DNMODE; + +typedef struct +{ + BYTE byAreaNo;//(IPC- 1~8) + BYTE byRes[3]; + NET_VCA_RECT struRect;//Ϣ() size = 16; + NET_DVR_DNMODE struDayNightDisable;//رģʽ + NET_DVR_DNMODE struDayModeParam;//ģʽ + NET_DVR_DNMODE struNightModeParam;//ҹģʽ + BYTE byRes1[8]; +}NET_DVR_MOTION_MULTI_AREAPARAM, *LPNET_DVR_MOTION_MULTI_AREAPARAM; + +typedef struct +{ + BYTE byDayNightCtrl;//ҹ 0~ر,1~Զл,2~ʱл(ĬϹر) + BYTE byAllMotionSensitive; /*ƶ, 0 - 5,ԽԽ,0xffرգȫȷΧ*/ + BYTE byRes[2];// + NET_DVR_SCHEDULE_DAYTIME struScheduleTime;//лʱ 16 + NET_DVR_MOTION_MULTI_AREAPARAM struMotionMultiAreaParam[MAX_MULTI_AREA_NUM];//֧24 + BYTE byRes1[60]; +}NET_DVR_MOTION_MULTI_AREA,*LPNET_DVR_MOTION_MULTI_AREA; //1328 + +typedef struct +{ + BYTE byMotionScope[64][96]; /*,0-96λ,ʾ64,96*64С,ĿǰЧ22*18,Ϊ1ʾƶ,0-ʾ*/ + BYTE byMotionSensitive; /*ƶ, 0 - 5,ԽԽ,0xffر*/ + BYTE byRes[3]; +}NET_DVR_MOTION_SINGLE_AREA, *LPNET_DVR_MOTION_SINGLE_AREA; + +typedef struct +{ + NET_DVR_MOTION_SINGLE_AREA struMotionSingleArea; //ͨģʽµĵ + NET_DVR_MOTION_MULTI_AREA struMotionMultiArea; //רģʽµĶ +}NET_DVR_MOTION_MODE_PARAM, *LPNET_DVR_MOTION_MODE_PARAM; + +typedef struct +{ + NET_DVR_MOTION_MODE_PARAM struMotionMode; //(5.1.0) + BYTE byEnableHandleMotion; /* Ƿƶ 0 1*/ + BYTE byEnableDisplay; /*ƶʾ0-1-*/ + BYTE byConfigurationMode; //0~ͨ,1~ר(5.1.0) + BYTE byKeyingEnable; //üƶ 0-ã1- + /* 쳣ʽ */ + DWORD dwHandleType; //쳣,쳣ʽ"" + /*0x00: Ӧ*/ + /*0x01: ʾϾ*/ + /*0x02: */ + /*0x04: ϴ*/ + /*0x08: */ + /*0x10: JPRGץͼϴEmail*/ + /*0x20: ⱨ*/ + /*0x40: ӵͼ(ĿǰֻPCNVR֧)*/ + /*0x200: ץͼϴFTP*/ + /*0x1000: ץͼϴ*/ + DWORD dwMaxRelAlarmOutChanNum ; //ıֻ֧ͨ + DWORD dwRelAlarmOut[MAX_ALARMOUT_V40]; //ʵʴıţֵʾ,ýУ±0 - dwRelAlarmOut -1Чм0xffffffff,Ч + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*ʱ*/ + /*¼ͨ*/ + DWORD dwMaxRecordChanNum; //豸ֵ֧¼ͨ-ֻ + DWORD dwRelRecordChan[MAX_CHANNUM_V40]; /* ʵʴ¼ֵͨʾ,ýУ±0 - dwRelRecordChan -1Чм0xffffffff,Ч*/ + BYTE byDiscardFalseAlarm; //ȥ 0-Ч1-ã2- + BYTE byRes[127]; //ֽ +}NET_DVR_MOTION_V40,*LPNET_DVR_MOTION_V40; + +typedef struct +{ + DWORD dwEnableHideAlarm; /* Ƿڵ0-1-ȣ2-ȣ3-*/ + WORD wHideAlarmAreaTopLeftX; /* ڵx */ + WORD wHideAlarmAreaTopLeftY; /* ڵy */ + WORD wHideAlarmAreaWidth; /* ڵĿ */ + WORD wHideAlarmAreaHeight; /*ڵĸ*/ + /* źŶʧ */ + DWORD dwHandleType; //쳣,쳣ʽ"" + /*0x00: Ӧ*/ + /*0x01: ʾϾ*/ + /*0x02: */ + /*0x04: ϴ*/ + /*0x08: */ + /*0x10: JPRGץͼϴEmail*/ + /*0x20: ⱨ*/ + /*0x40: ӵͼ(ĿǰֻPCNVR֧)*/ + /*0x200: ץͼϴFTP*/ + /*0x1000:ץͼϴ*/ + DWORD dwMaxRelAlarmOutChanNum ; //ıֻ֧ͨ + DWORD dwRelAlarmOut[MAX_ALARMOUT_V40]; /*ţֵʾ,ýУ±0 - dwRelAlarmOut -1Чм0xffffffff,Ч*/ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*ʱ*/ + BYTE byRes[64]; // +}NET_DVR_HIDEALARM_V40,*LPNET_DVR_HIDEALARM_V40; //ڵ + +typedef struct +{ + DWORD dwEnableVILostAlarm; /* ǷźŶʧ ,0-,1-*/ + /* źŶʧ */ + DWORD dwHandleType; //쳣,쳣ʽ"" + /*0x00: Ӧ*/ + /*0x01: ʾϾ*/ + /*0x02: */ + /*0x04: ϴ*/ + /*0x08: */ + /*0x10: JPRGץͼϴEmail*/ + /*0x20: ⱨ*/ + /*0x40: ӵͼ(ĿǰֻPCNVR֧)*/ + /*0x200: ץͼϴFTP*/ + /*0x1000:ץͼϴ*/ + DWORD dwMaxRelAlarmOutChanNum ; //ıֻ֧ͨ + DWORD dwRelAlarmOut[MAX_ALARMOUT_V40]; /*ţֵʾ,ýУ±0 - dwRelAlarmOut -1Чм0xffffffff,Ч*/ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*ʱ*/ + BYTE byVILostAlarmThreshold; /*źŶʧֵֵֵΪźŶʧȡֵ0-99*/ + BYTE byRes[63]; // +}NET_DVR_VILOST_V40,*LPNET_DVR_VILOST_V40; //źŶʧ + +typedef struct +{ + NET_DVR_COLOR struColor[MAX_TIMESEGMENT_V30];/*ͼ(һЧ)*/ + NET_DVR_SCHEDTIME struHandleTime[MAX_TIMESEGMENT_V30];/*ʱ()*/ +}NET_DVR_VICOLOR, *LPNET_DVR_VICOLOR; + +typedef struct +{ + DWORD dwSize; + BYTE sChanName[NAME_LEN]; + DWORD dwVideoFormat; /* ֻ Ƶʽ 1-NTSC 2-PAL */ + NET_DVR_VICOLOR struViColor;// ͼʱ + //ʾͨ + DWORD dwShowChanName; // ԤͼǷʾͨ,0-ʾ,1-ʾ + WORD wShowNameTopLeftX; /* ͨʾλõx */ + WORD wShowNameTopLeftY; /* ͨʾλõy */ + //˽ڵ + DWORD dwEnableHide; /* Ƿڵ ,0-,1-*/ + NET_DVR_SHELTER struShelter[MAX_SHELTERNUM]; + //OSD + DWORD dwShowOsd;// ԤͼǷʾOSD,0-ʾ,1-ʾ + WORD wOSDTopLeftX; /* OSDx */ + WORD wOSDTopLeftY; /* OSDy */ + BYTE byOSDType; /* OSD(Ҫոʽ) */ + /* 0: XXXX-XX-XX */ + /* 1: XX-XX-XXXX */ + /* 2: XXXXXXXX */ + /* 3: XXXXXXXX */ + /* 4: XX-XX-XXXX */ + /* 5: XXXXXXXX */ + /*6: xx/xx/xxxx(//) */ + /*7: xxxx/xx/xx(//) */ + /*8: xx/xx/xxxx(//)*/ + BYTE byDispWeek; /* Ƿʾ */ + BYTE byOSDAttrib; /* OSD:͸˸ */ + /* 0: ʾOSD */ + /* 1: ͸˸ */ + /* 2: ͸˸ */ + /* 3: ͸˸ */ + /* 4: ͸˸ */ + BYTE byHourOSDType; /* OSDСʱ:0-24Сʱ,1-12Сʱ */ + BYTE byFontSize; //16*16()/8*16(Ӣ)1-32*32()/16*32(Ӣ)2-64*64()/32*64(Ӣ) 3-48*48()/24*48(Ӣ) 4-24*24()/12*24(Ӣ) 5-96*96()/48*96(Ӣ) 6-128*128()/64*128(Ӣ) 7-80*80()/40*80(Ӣ) 8-112*112()/56*112(Ӣ) 0xff-Ӧ(adaptive) + BYTE byOSDColorType; //0-Ĭϣڰף1-Զ壻2- + /*뷽ʽѡģʽʱԷֱ½ǡ½ַӡ + ½ + ֧6ַӣͨNET_DVR_SET_SHOWSTRING_V30/ NET_DVR_GET_SHOWSTRING_V30ַӽӿڣӦNET_DVR_SHOWSTRINGINFOṹеĵ05±ֵַķʽΪµϵķʽ + ½ + ֧2ַӣͨNET_DVR_SET_SHOWSTRING_V3/ NET_DVR_GET_SHOWSTRING_V30ַӽӿڣӦNET_DVR_SHOWSTRINGINFOṹеĵ6͵7±ֵַķʽΪµϵķʽ + */ + BYTE byAlignment;//뷽ʽ 0-Ӧ1-Ҷ, 2-룬3-ģʽ4-ȫҶ(ַʱԼOSDַ)5-ȫ(ַʱԼOSDַ) + BYTE byOSDMilliSecondEnable;//Ƶʱֺ֧룻0~, 1- + NET_DVR_VILOST_V40 struVILost; //ƵźŶʧ֧飩 + NET_DVR_VILOST_V40 struAULost; /*ƵźŶʧ֧飩*/ + NET_DVR_MOTION_V40 struMotion; //ƶⱨ֧飩 + NET_DVR_HIDEALARM_V40 struHideAlarm; //ڵ֧飩 + NET_DVR_RGB_COLOR struOsdColor;//OSDɫ + DWORD dwBoundary; //ֵ߽룬ҶԼģʽıֵ߽0-ʾĬֵλ;ڹģʽ£λ޸ΪַΧǣ0,1,2 + NET_DVR_RGB_COLOR struOsdBkColor; //ԶOSDɫ + BYTE byOSDBkColorMode; //OSDɫģʽ0-Ĭϣ1-ԶOSDɫ + BYTE byUpDownBoundary; //Сֵ߽ѡλΪַΧǣ0,1,2,ģʽЧbyAlignment=3ֶЧͨdwBoundaryб߽ã.byAlignment3£ byUpDownBoundary/byLeftRightBoundaryóɹdwBoundaryֵЧ + BYTE byLeftRightBoundary; //Сֵ߽ѡλΪַΧǣ0,1,2, ģʽЧbyAlignment=3ֶЧͨdwBoundaryб߽ã.byAlignment3£ byUpDownBoundary/byLeftRightBoundaryóɹdwBoundaryֵЧ + BYTE byAngleEnabled;//OSDǷӸϢ,0~, 1- + WORD wTiltAngleTopLeftX; /* Ϣʾλõx */ + WORD wTiltAngleTopLeftY; /* Ϣʾλõy */ + BYTE byRes[108]; +}NET_DVR_PICCFG_V40,*LPNET_DVR_PICCFG_V40; + +typedef struct // +{ + DWORD dwSize; + BYTE byWorkType;// 0-Ӧ, 1-ʱģʽ + BYTE byRes[3]; + //ʱģʽ + NET_DVR_SCHEDULE_DAYTIME struDayNightScheduleTime;//ҹʱлģʽ(ʱ) + NET_DVR_CAMERAPARAMCFG_EX struSelfAdaptiveParam; //Ӧ + NET_DVR_CAMERAPARAMCFG_EX struDayIspAdvanceParam;// + NET_DVR_CAMERAPARAMCFG_EX struNightIspAdvanceParam;//ҹ + BYTE byRes1[512]; +}NET_DVR_ISP_CAMERAPARAMCFG,*LPNET_DVR_ISP_CAMERAPARAMCFG; + +typedef struct +{ + DWORD dwSize; + BYTE byIrLampServer;// 0ã1 + BYTE bytelnetServer;//telnet 0ã1 + BYTE byABFServer;//ABF 0ã1 + BYTE byEnableLEDStatus;//״ָ̬ʾƿ 0ã1 + BYTE byEnableAutoDefog;//Զ 0ã1 + BYTE byEnableSupplementLight;//ƿ0-ã1- + BYTE byEnableDeicing;// 0-رգ1- + BYTE byEnableVisibleMovementPower;// ɼоԴ 0-رգ1- + BYTE byEnableThermalMovementPower;// ȳоԴ 0-رգ1- + BYTE byEnablePtzPower;// ̨Դ 0-رգ1- + BYTE byPowerSavingControl;// ͹IJ 0- 1-ģʽ 2-͹ģʽ ͹ģʽ ɼоԴȳоԴ̨ԴЧ + BYTE byCaptureWithSupplimentLightEnabled;//ץIJʹ 0-رգ1- + BYTE byRes[244]; +}NET_DVR_DEVSERVER_CFG,*LPNET_DVR_DEVSERVER_CFG; + +typedef struct tagNET_DVR_GBT28181_ACCESS_CFG +{ + DWORD dwSize; + BYTE byEnable;//28181Эʹ 0-ر 1- + BYTE byTransProtocol;//Э:0-UDP1-TCPĬ0-UDP + WORD wLocalSipPort;//1024-65535(IPC豸) + char szServerID[MAX_SERVERID_LEN];//ID64ַֽ + char szServerDomain[MAX_SIPSERVER_ADDRESS_LEN] ;// + char szSipServerAddress[MAX_SIPSERVER_ADDRESS_LEN] ;// SIPַ֧IPַ + WORD wServerSipPort;//SIP˿ڣ1024-65535 + BYTE byProtocolVersion;//Э汾 0-GB/T28181-2011(֧UDP),1-GB/T28181-2015(֧TCP,UDP),2-GB/T28181-2016 + BYTE byTCPConnectMod; //TCPģʽʹTCPЭʱЧ0-Ч1-ģʽ2-ģʽ + char szSipUserName[MAX_SERVERNAME_LEN];//SIPûƣ64ַֽ(SIPնIPCʱʹ) + char szSipAuthenticateID[MAX_AUTHENTICATEID_LEN];//SIPû֤ID64ַֽ + char szSipAuthenticatePasswd[MAX_AUTHENTICATEPASSWD_LEN];//SIPû֤룺32ַֽ(IPC豸עᵽSIPʱʹ) + DWORD dwRegisterValid;//עЧڣλ룬Ĭ3600 + BYTE byHeartbeatInterval;//λ룬Ĭ10룻 + BYTE byMaxHeartbeatTimeOut;//ʱĬ3Σ + BYTE byStreamType;// ȡ0123 + BYTE byDeviceStatus; //豸Ƿ״̬0-1-ߣ2- + DWORD dwRegisterInterval;//ע:עʧܺٴעʱ,Χ60-600sĬ60s + DWORD dwAutoAllocChannelID ; //ǷԶͨID,λʾ0Ϊֶã1ΪԶ䣬bit1-ԶͨID,bit2-Զ䱨ͨ,bit3-ԶͨID + char szDeviceDomain[MAX_SIPSERVER_ADDRESS_LEN] ;// 豸 + BYTE byRes4[116]; +}NET_DVR_GBT28181_ACCESS_CFG,*LPNET_DVR_GBT28181_ACCESS_CFG; + +//GBT28181Э豸ͨ +typedef struct tagNET_DVR_GBT28181_CHANINFO_CFG +{ + DWORD dwSize; + char szVideoChannelNumID[MAX_COMPRESSIONID_LEN];//豸ƵͨID64ַֽ + BYTE byRes[256]; +}NET_DVR_GBT28181_CHANINFO_CFG,*LPNET_DVR_GBT28181_CHANINFO_CFG; + +//GBT28181Эıͨ ṹ +typedef struct tagNET_DVR_ALARMIN_INFO +{ + NET_DVR_STREAM_INFO struStreamInfo; + DWORD dwAlarmInChannel;//ͨ + BYTE byRes[32]; // +}NET_DVR_ALARMIN_INFO, *LPNET_DVR_ALARMIN_INFO; + +//GBT28181Эıͨ ýṹ +typedef struct tagNET_DVR_GBT28181_ALARMINCFG +{ + DWORD dwSize; + char szAlarmInNumID[MAX_COMPRESSIONID_LEN];//豸IDÿһ·벻ͬ20ַֽ + BYTE byRes[256]; +}NET_DVR_GBT28181_ALARMINCFG,*LPNET_DVR_GBT28181_ALARMINCFG; + +typedef struct tagNET_DVR_CAMERA_SETUPCFG +{ + DWORD dwSize; + WORD wSetupHeight; //߶[0,20]λ + BYTE byLensType; //ͷͣ0-δ֪,1-8mm,2-12mm,3-16mm,4-25mm,5-35mm,6-50mm,7-4mm,8-6mm + BYTE bySetupHeightUnit;// ߶ȵλ0M,1~CM + DWORD dwSceneDis; //ͼ±Եλ֮ˮƽ룬λ + float fPitchAngle;//Ƕ[-180, 180], + float fInclineAngle;//бǶ[-180,180] + float fRotateAngle;//תǶ[-180,180] + WORD wVideoDetCoefficient; //Ƶϵ[0,300](3.6) + BYTE byErectMethod; //跽ʽ0-װ1-װ(3.6) + BYTE byCameraViewAngle;//װҰǶ(0-ֱ1-бĬ0-ֱ) + DWORD dwHorizontalDistance;//ˮƽ룺Χ1-1000Ĭ30λcmעǶΪбʱЧ + BYTE byDetailLensType;//Χ1-100Ĭ28λ0.1mm + BYTE byRes[3]; + float fHorFieldAngle; //ˮƽӳǽǶ[0, 360]ץĻ + float fVerFieldAngle; //ֱӳǽǶ[0, 360]ץĻ,ӥ۷Χ-90-90 + float fLableSetupHeight; //ǩĸ߶[0,100]λ + float fMaxViewRadius;//Ӱ뾶,0~10000.00ףĬ5000. + BYTE byRes1[16]; +}NET_DVR_CAMERA_SETUPCFG, *LPNET_DVR_CAMERA_SETUPCFG; + +//ֹڶβṹ +typedef struct tagNET_DVR_SCHEDDATE +{ + BYTE byStartMonth; //ʼ£ + BYTE byStartDay; //ʼգ + BYTE byStopMonth; //£ + BYTE byStopDay; //գ +}NET_DVR_SCHEDDATE,*LPNET_DVR_SCHEDDATE; + +//ʱ +typedef struct tagNET_DVR_OUTPUT_SCHEDULE +{ + NET_DVR_SCHEDTIME struTime; //ʱ + BYTE byState; //0Cر, 1C + BYTE byRes[11]; // +} NET_DVR_OUTPUT_SCHEDULE ,*LPNET_DVR_OUTPUT_SCHEDULE; + +//ʱ +typedef struct tagNET_DVR_ONE_OUTPUT_SCHEDULE_RULE +{ + BYTE byEnable; //Ƿù,0-,1- + BYTE byRes1[3]; // + NET_DVR_SCHEDDATE struDate; // + NET_DVR_OUTPUT_SCHEDULE struOutputSchedule[MAX_TIMESEGMENT_V30]; //֧8ʱεʱ + BYTE byRes2[16]; // +}NET_DVR_ONE_OUTPUT_SCHEDULE_RULE,*LPNET_DVR_ONE_OUTPUT_SCHEDULE_RULE; + +//ʱ +typedef struct tagNET_DVR_OUTPUT_SCHEDULE_RULECFG +{ + DWORD dwSize; //ṹС + NET_DVR_ONE_OUTPUT_SCHEDULE_RULE struOutputRule[MAX_RULE_NUM]; //֧8εĹ + BYTE byRes[64]; // +}NET_DVR_OUTPUT_SCHEDULE_RULECFG,*LPNET_DVR_OUTPUT_SCHEDULE_RULECFG; + +//ͨͳƱ +typedef struct tagNET_DVR_TPS_ALARMCFG +{ + DWORD dwSize; + BYTE byEnable; //ǷýͨͳƱϴ + BYTE byRes1[3]; // + DWORD dwInterval;//ͳƼʱ䣨λӣ + BYTE byRes[248]; +}NET_DVR_TPS_ALARMCFG, *LPNET_DVR_TPS_ALARMCFG; + +typedef struct tagNET_DVR_DOWNLOAD_ALARM_RECORD_COND +{ + DWORD dwSize; + WORD wAlarmRecordID; //¼ID(ڲѯ¼񣬽byResultTypeΪ2ʱЧ) + BYTE byRes[130]; +}NET_DVR_DOWNLOAD_ALARM_RECORD_COND, *LPNET_DVR_DOWNLOAD_ALARM_RECORD_COND; + +typedef struct tagNET_DVR_CABINET_AlARM_PARAMCFG +{ + char sCabinetName[NAME_LEN]; + BYTE byAssociateIO;//1-40xff 1-4ʾIOͨţ0xffʾ + BYTE byCabinetState;//0~͵ƽ,1~ߵƽ + BYTE byAlarmIntervalTime;//ȡֵΧ1-60λ + BYTE byRes1[25]; +}NET_DVR_CABINET_AlARM_PARAMCFG, *LPNET_DVR_CABINET_AlARM_PARAMCFG; + +typedef struct tagNET_DVR_CABINET_CFG +{ + DWORD dwSize; + BYTE byEnable;//0~ã1 + BYTE byRes[3]; + NET_DVR_CABINET_AlARM_PARAMCFG struCabinetCfg[MAX_CABINET_COUNT]; + BYTE byRes1[84]; +} NET_DVR_CABINET_CFG, *LPNET_DVR_CABINET_CFG; + +typedef struct tagNET_ITS_GATE_LANE_CFG +{ + BYTE byGateSiteID[MAX_ID_LEN]; //ڱ + BYTE byGateInfo[MAX_ID_LEN]; //Ϣ + BYTE byLaneName[NAME_LEN]; // + BYTE byValid; //Ƿ 0 ʾδã1ʾ + BYTE byCamLaneId; //Ӧ116õijţԾͬ + WORD wLaneid; //132ţԾ ߼ + BYTE byRelativeIoNum; //߼Źڱ + BYTE byDirection; //; 0 - 1 볡 2 3 ˫ + BYTE byLprMode; //ʶ0 ȫ1 ֹ2 + BYTE byCardMode; //Ƭ0 ȫ1 ֹ2 + BYTE byGateLaneMode;//ڷģʽ 0-ȫ 1-ֻʶƥ2 ֻˢƥ// 3-ʶƬһƥ 4-ʶҿƬͬʱƥ 5-ȫ + //2013-11-19 + BYTE byCharge;//Ƿշ 0-շѣ1-շ + BYTE byChargeMode;//շ 0-շѣ1-շ + BYTE byRes1; + BYTE byLedRelativeIndex[MAX_INDEX_LED];//LED (1~255) У0ʾЧ + BYTE byGateRelativeIndex;//ڿƻ + BYTE byFarRrRelativeIndex;// Զ + BYTE byRes[82]; //Ԥ +}NET_ITS_GATE_LANE_CFG, *LPNET_ITS_GATE_LANE_CFG; + +typedef struct tagNET_ITS_IPC_CHAN_LANE_CFG +{ + DWORD dwSize; + BYTE byIpcType; //0-ޣ1-ץģ2-ץģ3-Ƶ + BYTE byRes[135]; + NET_ITS_GATE_LANE_CFG struGateLane[4]; //ýṹ +}NET_ITS_IPC_CHAN_LANE_CFG, *LPNET_ITS_IPC_CHAN_LANE_CFG; + +//豸Զ̿ +typedef struct tagNET_ITS_REMOTE_COMMAND +{ + WORD wLaneid; //132ţԾ + BYTE byCamLaneId; //Ӧ116õijţԾͬ + BYTE byRes; //Ԥ + DWORD dwCode; // 0x0 բ 0x1 բչ + BYTE byRes1[128]; +}NET_ITS_REMOTE_COMMAND,*LPNET_ITS_REMOTE_COMMAND; + +typedef struct tagNET_ITS_REMOTE_CONTROL_ +{ + DWORD dwSize; + NET_ITS_REMOTE_COMMAND struRemoteCommand; //Զṹ +}NET_ITS_REMOTE_CONTROL,*LPNET_ITS_REMOTE_CONTROL; + +//ӻȡͨ״̬ +typedef struct tagNET_ITS_ECT_CHANNELSTATE +{ + DWORD dwSize; + BYTE byRecordStatic; //ͨǷ¼,0-¼,1-¼ + BYTE bySignalStatic; //ӵź״̬,0-,1-źŶʧ + BYTE byHardwareStatic;//ͨӲ״̬,0-,1-쳣,DSP + BYTE byChannelArmState; //IPCIJ״̬ + DWORD dwChannel; //ͨ + DWORD dwBitRate;//ʵ + DWORD dwLinkNum;//ͻӵĸ + NET_DVR_IPADDR struClientIP[MAX_LINK];//ͻ˵IPַ + DWORD dwIPLinkNum;//ͨΪIP룬ôʾIP뵱ǰ + BYTE byExceedMaxLink; // Ƿ񳬳128· 0 - δ, 1- + BYTE byRes[139]; // ֽ +}NET_ITS_ECT_CHANNELSTATE, *LPNET_ITS_ECT_CHANNELSTATE; + +//ӵ +typedef struct tagNET_DVR_PARK_EXTERNAL_SUBINFO +{ + BYTE byEnable; //0 1 + BYTE byFlicker;//0 ˸ 1 ˸ + BYTE byIOState;//0 ͵ƽ 1 ߵƽ (õЧ) + BYTE byLampColor;// 0- 1- 2- 3- 4- 5-Ʒ 6- 7-ɫ (õЧ) + BYTE byRes[4]; +}NET_DVR_PARK_EXTERNAL_SUBINFO, *LPNET_DVR_PARK_EXTERNAL_SUBINFO; + +typedef struct tagNET_DVR_PARK_INLAY_SUBINFO +{ + BYTE byEnable; //0 1 + BYTE byFlicker;//0˸ 1 ˸ + BYTE byLampColor;//0- 1- 2- 3- 4- 5-Ʒ 6- 7-ɫ (õЧ) + BYTE byRes[21]; +}NET_DVR_PARK_INLAY_SUBINFO, *LPNET_DVR_PARK_INLAY_SUBINFO; + +typedef struct tagNET_DVR_PARKINFO +{ + NET_DVR_PARK_EXTERNAL_SUBINFO struNormalParkIOState;//гioƽ״̬ + NET_DVR_PARK_EXTERNAL_SUBINFO struNormalNoParkIOState;//޳ioƽ״̬ + NET_DVR_PARK_EXTERNAL_SUBINFO struSpecialParkIOState;//⳵λгioƽ״̬ + NET_DVR_PARK_EXTERNAL_SUBINFO struSpecialNoParkIOState;//⳵λ޳ioƽ״̬ + BYTE byRes[32]; +}NET_DVR_PARKINFO, *LPNET_DVR_PARKINFO; + +typedef struct tagNET_DVR_EXTERNAL_LAMP_CTRL_MODE +{ + NET_DVR_PARKINFO struParkInfo[MAX_PARKING_NUM];/*ӵƵ³λϢһͨ4λ (ҳλ 03)*/ + BYTE byRes[32]; +}NET_DVR_EXTERNAL_LAMP_CTRL_MODE, *LPNET_DVR_EXTERNAL_LAMP_CTRL_MODE; + +typedef struct tagNET_DVR_INLAY_LAMP_CTRL_MODE +{ + NET_DVR_PARK_INLAY_SUBINFO struLampStateCtrl[MAX_PARKING_STATUS]; + BYTE byRes[96]; +}NET_DVR_INLAY_LAMP_CTRL_MODE, *LPNET_DVR_INLAY_LAMP_CTRL_MODE; + +typedef struct tagNET_DVR_LAMP_INFO //8 +{ + BYTE byEnable; //0 1 + BYTE byFlicker;//0~˸ 1 ˸(λָʾ˸) + BYTE byLampColor;//0- 1- 2- 3- 4- 5-Ʒ 6- 7-ɫ (λָʾɫ) + BYTE byRes[5]; +}NET_DVR_LAMP_INFO, *LPNET_DVR_LAMP_INFO; + +//õģʽ +typedef struct tagNET_DVR_PARKLAMP_CTRL_MODE//size == 72 +{ + //λ״̬ 0޳1г2ѹ(ȼ), 3⳵λ + NET_DVR_LAMP_INFO struLampInfo[MAX_PARKING_STATUS/*8*/]; + //λƣ0-õ, 1-õ1, 2-õ2, 3-õ3 + BYTE byLampType; + BYTE byRes[7]; +}NET_DVR_PARKLAMP_CTRL_MODE, *LPNET_DVR_PARKLAMP_CTRL_MODE; + +typedef struct tagNET_DVR_LAMP_PARAM //4 +{ + BYTE byEnable; //0 1 + BYTE byFlicker;//0~˸ 1 ˸ + BYTE byLampColor;//0- 1- 2- 3- 4- 5-Ʒ 6- 7-ɫ + BYTE byRes[3]; +}NET_DVR_LAMP_PARAM, *LPNET_DVR_LAMP_PARAM; + +//õģʽ +typedef struct tagNET_DVR_EXTERNAL_PARKLAMP //size == 56 +{ + //λ״̬ 0޳1г2ѹ(ȼ), 3⳵λ + NET_DVR_LAMP_PARAM struLampParam[MAX_PARKING_STATUS/*8*/]; + //λƣ0-õ, 1-õ1, 2-õ2, 3-õ3 + BYTE byLampType; + BYTE byRes[7]; +}NET_DVR_EXTERNAL_PARKLAMP, *LPNET_DVR_EXTERNAL_PARKLAMP; + +/*õƼõģʽ õƿƽṹϢ */ +typedef struct tagNET_DVR_BUILTIN_PARKLAMP +{ + BYTE byEnable; //0 1 + BYTE byFlicker; //0~˸ 1 ˸ + BYTE byLampColor; //0- 1- 2- 3- 4- 5-Ʒ 6- 7-ɫ (õЧ) + BYTE byRes[5]; +}NET_DVR_BUILTIN_PARKLAMP, *LPNET_DVR_BUILTIN_PARKLAMP; + +/* Ͽģʽṹ */ +typedef struct tagNET_DVR_MIXLAMP_CTRL_MODE +{ + NET_DVR_EXTERNAL_PARKLAMP struExternalParkLamp[MAX_PARKING_NUM/*4*/];//õ ճλŽ֣һͨ4λ (ҳλ 03) + NET_DVR_BUILTIN_PARKLAMP struBuiltInParkLamp[MAX_PARKING_STATUS/*8*/];//õ ճλ״̬֣λ״̬ 0޳1г2ѹ(ȼ), 3⳵λ +}NET_DVR_MIXLAMP_CTRL_MODE, *LPNET_DVR_MIXLAMP_CTRL_MODE; + +/* ӵƿģʽṹ */ +typedef struct tagNET_DVR_SINGLELAMP_CTRL_MODE //õģʽDzֳλϢʾǰλ״̬Уȼõ״̬ѹ>⳵λ>޳״̬ +{ + NET_DVR_PARK_EXTERNAL_SUBINFO struExternLampStateCtrl[MAX_PARKING_STATUS/*4*/];//õ ճλŽ֣һͨ4λ (ҳλ 03) + BYTE byLampType; /* 1-õ12-õ23-õ3*/ + BYTE byRes[23]; +}NET_DVR_SINGLELAMP_CTRL_MODE, *LPNET_DVR_SINGLELAMP_CTRL_MODE; + +typedef union tagNET_DVR_LAMP_CTRL_MODE_UNION +{ + BYTE uLen[288]; + NET_DVR_INLAY_LAMP_CTRL_MODE struInlayLampCtrlMode;/*õƿģʽṹ*/ + NET_DVR_EXTERNAL_LAMP_CTRL_MODE struExternalLampCtrlMode;/*ӵƿģʽṹ*/ + NET_DVR_PARKLAMP_CTRL_MODE struParkLampCtrlMode[MAX_PARKING_NUM/*4*/];/*õģʽһͨ4λ (ҳλ 03) ģʽΪõƵʱЧ*/ + //λõƣϿģʽõģʽģʽõƲΪõʹãõģʽ£õΪõʹã + //Ͽģʽ£õʾǰʾλ״̬Уȼߵijλ״̬(ѹ>⳵λ>޳״̬)Ƶ״̬ + NET_DVR_MIXLAMP_CTRL_MODE struMixLampCtrlMode; + //õģʽDzֳλϢʾǰλ״̬Уȼõ״̬ѹ>⳵λ>޳״̬ + NET_DVR_SINGLELAMP_CTRL_MODE struSingleExternalLampCtrlMode; +}NET_DVR_LAMP_CTRL_MODE_UNION, *LPNET_DVR_LAMP_CTRL_MODE_UNION;/*ƿģʽ*/ + +typedef struct tagNET_DVR_LAMP_CTRL_INFO +{ + DWORD dwSize; + BYTE byLampCtrlMode;/*صģʽ1õ,2ӵ,3õ,4ϵģʽõֻȼָʾ),5-õģʽ*/ + BYTE byCtrlChannelIndex;/*ͨ(33~48)*/ + BYTE byRes[2]; + NET_DVR_LAMP_CTRL_MODE_UNION uLampCtrlMode;/*ƿģʽ*/ + BYTE byRes2[32]; +}NET_DVR_LAMP_CTRL_INFO, *LPNET_DVR_LAMP_CTRL_INFO; + +//λãĬ϶normal +typedef struct tagNET_DVR_PARKSPACE_INFO +{ + BYTE byParkSpaceAttribute; //0~ͨλ 1⳵λ + BYTE byRes[23]; +}NET_DVR_PARKSPACE_INFO, *LPNET_DVR_PARKSPACE_INFO; + +typedef struct tagNET_DVR_PARKSPACE_ATTRIBUTE +{ + DWORD dwSize; + NET_DVR_PARKSPACE_INFO struParkSpaceInfo[MAX_PARKING_NUM];//һͨ4λ (ҳλ 03) + BYTE byRes[64]; +}NET_DVR_PARKSPACE_ATTRIBUTE, *LPNET_DVR_PARKSPACE_ATTRIBUTE; + +//ָʾ +typedef struct tagNET_DVR_LAMP_STATE +{ + BYTE byFlicker;//0~˸ 1 ˸ + BYTE byParkingIndex;//λ13 + BYTE byRes1[2]; + DWORD dwIONo;//1~IO1;2~IO2;4~IO3; + BYTE byRes2[8]; +}NET_DVR_LAMP_STATE, *LPNET_DVR_LAMP_STATE; + +typedef struct tagNET_DVR_LAMP_EXTERNAL_CFG +{ + DWORD dwSize; + BYTE byEnable; //ʹ 0 1 + BYTE byRes1[3]; + NET_DVR_LAMP_STATE struLampStateCtrl;//ָʾ + BYTE byRes2[32]; +}NET_DVR_LAMP_EXTERNAL_CFG, *LPNET_DVR_LAMP_EXTERNAL_CFG; + +//λǿץͼ һͨijλ +typedef struct tagNET_DVR_COMPEL_CAPTURE +{ + DWORD dwSize; + BYTE byParkIndex;/*λŴ 0-ʾǰмλϴͼƬ1,2,3,4*/ + BYTE byRes[63]; +}NET_DVR_COMPEL_CAPTURE, *LPNET_DVR_COMPEL_CAPTURE; + +//رṹ +typedef struct tagNET_DVR_EXTERNAL_CONTROL_ALARM +{ + DWORD dwSize; + DWORD dwChannelNo; + NET_DVR_LAMP_STATE struLampStateCtrl;//ָʾ״̬ + NET_DVR_TIME struExternalBeginTime;/*ؿʼʱ*/ + BYTE byRes1[64]; +}NET_DVR_EXTERNAL_CONTROL_ALARM, *LPNET_DVR_EXTERNAL_CONTROL_ALARM; + +/* 豸 */ +typedef enum tagEXTERNAL_DEVICES_TYPE +{ + DEVICES_TYPE_RES1 = 0, //1 + DEVICES_TYPE_FAR_SCR = 1, //Զ + DEVICES_TYPE_ENTRANCE_CONTROL = 2, //ڿƻ + DEVICES_TYPE_WJ_LED_DEV = 3, //LED + DEVICES_TYPE_NJ_LED_DEV = 4, //ڽLED + DEVICES_TYPE_VEH_DETECT_DEV = 5, //豸 + DEVICES_TYPE_DZ_DEV = 6, //բ + DEVICES_TYPE_PX_SCR_DEV = 7, //Ʊ + DEVICES_TYPE_KJ_SCR_DEV = 8, // + DEVICES_TYPE_FKJ_DEV = 9, // + DEVICES_TYPE_SKJ_DEV = 10, //տ + DEVICES_TYPE_HDD_DEV = 11, //Ӳ( 1G) + DEVICES_TYPE_DZ_LOCK = 12, //բբ״̬0ʾδբ1ʾբ + DEVICES_TYPE_PAPER_PRINTER = 13, //ֽƱӡ + DEVICES_TYPE_PAPER_SCANNERS = 14, //ֽƱɨ + DEVICES_TYPE_IPC_ALARM = 15 //IPC״̬ +}EXTERNAL_DEVICES_TYPE; + +/* 豸״̬ */ +typedef enum tagEXTERNAL_DEVICES_STATUS +{ + /* ͨ豸״̬ 0~19*/ + DEVICES_STATUS_NORMAL = 0, //״̬ + DEVICES_STATUS_ABNORMAL = 1, //״̬쳣 + + /* 豸״̬ 20~39*/ + DEVICES_STATUS_TOO_LESS_CARD = 20, //ٿ + DEVICES_STATUS_NO_CARD = 21, //޿ + DEVICES_STATUS_SENDCARD_ERROR = 22, //Ԥ + DEVICES_STATUS_CARD_BLOCKED = 23, //¿ + DEVICES_STATUS_CARD_FULL = 24, //ղֿ + + + /* բ豸״̬ 40~60*/ + DEVICES_STATUS_OPENING = 40, //բڿ + DEVICES_STATUS_CLOSING = 41, //բڹ + DEVICES_STATUS_OPENED = 42, //բλ + DEVICES_STATUS_CLOSED = 43, //բصλ + DEVICES_STATUS_NOSIGNAL = 44, //բź + DEVICES_STATUS_LOCK= 45, //բ + + /* ֽƱӡ״̬ 61~90*/ + PP_STATUS_OFFLINE = 61, //ѻ + PP_STATUS_PRINT_HEADER_UP, // ӡͷ̧ + PP_STATUS_FEED_BUTTON_FEEDING, //ýֽֽ + PP_STATUS_ONLINE_WAITING, //ȴ + PP_STATUS_FEED_BUTTON_ENABLE, //ֽʹΪ + PP_STATUS_JAMR_PAPER_ERROR, //ֽ + PP_STATUS_CUT_PAPER_ERROR, //е + PP_STATUS_AUTO_FEED_ERROR, //Զֽ + PP_STATUS_EXIT_RECOVERY_ERROR, //пɻָ + PP_STATUS_EXIT_AUTO_RECOVERY_ERROR, //пԶָ + PP_STATUS_PULL_PAPER_ERROR, //ֽ + PP_STATUS_LESS_PAPER , //ֽ + PP_STATUS_NO_PAPER, //ֽ + PP_STATUS_PRINT_FAIL, //ӡʧ + PP_STATUS_PRINTING, //ڴӡ +}EXTERNAL_DEVICES_STATUS; + +/* 豸 */ +typedef enum tagEXTERNAL_DEVICESCTRL_TYPE +{ + DEVICES_CTRL_RES = 0, //Ԥ(ȥ־) + DEVICES_CTRL_REMOTE = 1, //ңƣǰΪբʱ֧ͨңբ +}EXTERNAL_DEVICESCTRL_TYPE; + + +typedef struct tagNET_DVR_GATE_ALARMINFO +{ + DWORD dwSize; + //0x1Ƿ뱨 + //0x2բʱδر + //0x3ѹȦʱ + //0x4޿ + //0x5ٿ + //0x6쳣 + BYTE byAlarmType; + BYTE byExternalDevType;//豸(EXTERNAL_DEVICES_TYPE) + BYTE byExternalDevStatus;//豸(EXTERNAL_DEVICES_STATUS) + BYTE byExternalDevCtrlType;//豸(EXTERNAL_DEVICESCTRL_TYPE) + NET_DVR_TIME_V30 struAlarmTime;//ʱ + union + { + BYTE uLen[128]; + struct + { + char sLicense[MAX_LICENSE_LEN/*16*/];//ƺ + /*0- 1-̶2-ʱ3-Ԥ4-쳵5-Ȩ*/ + BYTE byVehicleType; + BYTE byRes1[111]; + }struVehicleInfo;//struAlarmTypeΪ(0x1Ƿ뱨) + }uAlarmInfo; + BYTE byRes2[64]; //Ԥ +}NET_DVR_GATE_ALARMINFO, *LPNET_DVR_GATE_ALARMINFO; + +typedef struct tagNET_DVR_ALARMWIRELESSINFO +{ + BYTE byDeviceID[NAME_LEN]; //豸ID + float fDataTraffic; /* ,λMB,Сλ*/ + BYTE bySignalIntensity; /* źǿȣ0~100*/ + BYTE byRes[127]; +}NET_DVR_ALARMWIRELESSINFO, *LPNET_DVR_ALARMWIRELESSINFO; + +typedef struct tagNET_DVR_VOLTAGE +{ + int iPhaseAVol; //Aѹ + int iPhaseBVol; //Bѹ + int iPhaseCVol; //Cѹ + int iAveragePhaseVol; //ѹƽֵ +}NET_DVR_VOLTAGE, *LPNET_DVR_VOLTAGE; + +typedef struct _tagNET_DVR_LINE_VOLTAGE +{ + int iLineVolAB; //ABߵѹ + int iLineVolBC; //BCߵѹ + int iLineVolCA; //CAߵѹ + int iAverageLineVol; //ߵѹƽֵ +} NET_DVR_LINE_VOLTAGE,*LPNET_DVR_LINE_VOLTAGE; + + +// +typedef struct tagNET_DVR_CURRENT +{ + int iPhaseACurrent; //A + int iPhaseBCurrent; //B + int iPhaseCCurrent; //C + BYTE byRes[4]; +}NET_DVR_CURRENT, *LPNET_DVR_CURRENT; + +// +typedef struct tagNET_DVR_POWER +{ + int iPhaseAPower; //A๦ + int iPhaseBPower; //B๦ + int iPhaseCPower; //C๦ + int iSysTotalPower; //ϵͳܹ +}NET_DVR_POWER, *LPNET_DVR_POWER; + +// +typedef struct tagNET_DVR_POWER_FACTOR +{ + int iPhaseAPowerFactor; //A๦ + int iPhaseBPowerFactor; //B๦ + int iPhaseCPowerFactor; //C๦ + int iTotalPowerFactor; //ܹ +}NET_DVR_POWER_FACTOR, *LPNET_DVR_POWER_FACTOR; + +//Ƶ +typedef struct tagNET_DVR_FREQUENCY +{ + int iPhaseAFrequency; //AƵ + int iPhaseBFrequency; //BƵ + int iPhaseCFrequency; //CƵ + BYTE byRes[4]; +}NET_DVR_FREQUENCY, *LPNET_DVR_FREQUENCY; + +// +typedef struct tagNET_DVR_LOAD_FACTOR +{ + int iPhaseALoadFactor; //Aฺ + int iPhaseBLoadFactor; //Bฺ + int iPhaseCLoadFactor; //Cฺ + BYTE byRes[4]; +} NET_DVR_LOAD_FACTOR, *LPNET_DVR_LOAD_FACTOR; + +//UPS״̬ +typedef struct tagNET_DVR_ALARMHOST_UPS_STATE +{ + NET_DVR_VOLTAGE struInputVoltage; //ѹ + NET_DVR_VOLTAGE struBypassVoltage; //·ѹ + NET_DVR_VOLTAGE struOutputVoltage; //ѹ + int iRectifierVol; //ѹ + int iInverterVol; //ѹ + + NET_DVR_CURRENT struInputCurrent; // + NET_DVR_CURRENT struBypassCurrent; //· + NET_DVR_CURRENT struOutputCurrent; // + int iInverterCurrent; // + + NET_DVR_FREQUENCY struInputFrequency; //Ƶ + NET_DVR_FREQUENCY struBypassFrequency; //·Ƶ + NET_DVR_FREQUENCY struOutputFrequency; //Ƶ + int iInverterFre; //Ƶ + + NET_DVR_POWER struInputPower; //빦 + NET_DVR_POWER struBypassPower; //· + NET_DVR_POWER struOutputPower; // + NET_DVR_POWER struComplexPower; // + + int iNormalPower; //ƹ + int iPowerFacter; // + + NET_DVR_LOAD_FACTOR struBatteryLoadFactor; //ظ + int iBatteryEstimated; //رʱ(min) + int iBatteryTemperature; //¶ + int iBatteryVoltage; //صѹ + + + BYTE byRectifierState; //״̬/*1 2쳣*/ + BYTE byInverterState; //״̬/*1 2쳣*/ + BYTE byChargeState; //״̬/*1 2쳣*/ + BYTE byBatteryState; //״̬/*1 2쳣*/ + BYTE byAutoBypassState; //Զ·״̬/*1 2쳣*/ + BYTE byRes2[247]; +} NET_DVR_ALARMHOST_UPS_STATE, *LPNET_DVR_ALARMHOST_UPS_STATE; + +//صԴ״̬ +typedef struct tagNET_DVR_ALARMHOST_SWITCH_POWER_STATE +{ + NET_DVR_VOLTAGE struACVoltage; //ѹ + int iDCConvertVoltage; //DCתѹ + NET_DVR_CURRENT struACCurrent; // + int iTotalCurrent; //ܵ + int iBattery1Temperature; //1¶ + int iBattery2Temperature; //2¶ + int iBattery1Current; //1 + int iBattery2Current; //2 + int iBattery3Current; //3 + int iBattery4Current; //4 + int iBatteryTestVoltage; //زԵѹ + int iRectifierOutputVoltage; //ģѹ + int iRectifierOutputCurrent; //ģ + int iDCOutputVoltage; //ֱѹ + BYTE byRes[432]; +} NET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_STATE, +*LPNET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_STATE; + +//̽״̬ +typedef struct tagNET_DVR_ALARMHOST_GAS_DETECTOR_STATE +{ + int iSF6; //SF6λppm + int iFlow; //ml/min + int iTemperature; //¶ȣλ϶ + int iO2; //λ% + int iHumidity; //ʪȣλ% + BYTE byRes[492]; +} NET_DVR_ALARMHOST_GAS_DETECTOR_STATE, +*LPNET_DVR_ALARMHOST_GAS_DETECTOR_STATE; + +//ʪȴ״̬ +typedef struct tagNET_DVR_ALARMHOST_TEMP_HUMI_SENSOR_STATE +{ + int iTemperature; //¶ȣλ϶ + int iHumidity; //ʪȣλ% + BYTE byRes[504]; +} NET_DVR_ALARMHOST_TEMP_HUMI_SENSOR_STATE, *LPNET_DVR_ALARMHOST_TEMP_HUMI_SENSOR_STATE; + +//յ״̬ +typedef struct tagNET_DVR_ALARMHOST_AIRCONDITION_STATE +{ + int iTemperature; //¶ȣλ϶ + int iHumidity; //ʪȣλ% + BYTE byRunState; //״̬ 1-2-ͣ + BYTE byRes[503]; +} NET_DVR_ALARMHOST_AIRCONDITION_STATE, *LPNET_DVR_ALARMHOST_AIRCONDITION_STATE; + + +//״̬ +typedef struct tagNET_DVR_ALARMHOST_ELECTRICITY_STATE +{ + int iDCVoltage; //ֱѹ + int iDCCurrent; //ֱ + NET_DVR_VOLTAGE struPhaseVoltage; //ѹ + NET_DVR_LINE_VOLTAGE struLineVoltage; //ߵѹ + NET_DVR_CURRENT struCurrent[4]; //struCurrent[0]ʾ1·, Դ + int iAverageCurrent; //ƽ + int iNeutralCurrent; //ߵ + NET_DVR_POWER struActivePower[4]; //й struActivePower[0]ʾһ·йʣԴ + NET_DVR_POWER struReactivePower[4]; //޹ struReactivePower[0]ʾһ·޹ʣԴ + NET_DVR_POWER struApparentPower[4]; //ڹ struApprentPower[0]ʾһ·ڹʣԴ + NET_DVR_POWER_FACTOR struPowerFactor[4]; //struPowerFactor[0]ʾһ·Դ + NET_DVR_FREQUENCY struFrequency; //Ƶ + BYTE byRes[128]; +}NET_DVR_ALARMHOST_ELECTRICITY_STATE, *LPNET_DVR_ALARMHOST_ELECTRICITY_STATE; + +//Ա״̬ +typedef struct tagNET_DVR_ALARMHOST_TRANSFORMER_TEMP_STATE +{ + int iPhaseATemperature; //A¶ + int iPhaseBTemperature; //B¶ + int iPhaseCTemperature; //C¶ + int iPhaseDTemperature; //D¶ + BYTE byRes[496]; +}NET_DVR_ALARMHOST_TRANSFORMER_TEMP_STATE, *LPNET_DVR_ALARMHOST_TRANSFORMER_TEMP_STATE; + +//ˮλ +typedef struct tagNET_DVR_ALARMHOST_WATERLEVEL_SENSOR +{ + LONG iWaterLevel; //ˮλ + BYTE byRes[508]; +}NET_DVR_ALARMHOST_WATERLEVEL_SENSOR, *LPNET_DVR_ALARMHOST_WATERLEVEL_SENSOR; + +//ﳾ +typedef struct tagNET_DVR_ALARMHOST_DUSTNOISE_SENSOR +{ + LONG iDust; //ﳾ + LONG iNoise; // + LONG iPM25; //PM2.5 + BYTE byRes[500]; +}NET_DVR_ALARMHOST_DUSTNOISE_SENSOR, *LPNET_DVR_ALARMHOST_DUSTNOISE_SENSOR; + +//ɼ +typedef struct tagNET_DVR_ALARMHOST_ENVIRONMENTAL_LOGGER +{ + LONG iAmmoniaNitrogen; // + LONG iCOD; //COD + LONG iPH; //PH + LONG iOxygen; // + LONG iSulfurDioxide; // + LONG iSoot; //̳ + LONG iFluoride; // + LONG iPollutedWater; //ˮ + LONG iTotalPhosphorus; // + LONG iExhaust; // + LONG iNitrogenOxides; // + LONG iFlueGasTemperature;//¶ + LONG iFlueGasPressure; //ѹ + LONG iDustThickness; /*۳Ũ*/ + LONG iAirCleanLevel; /*ྻȵȼ*/ + LONG iPm10Thickness; /*PM10Ũ*/ + BYTE byRes[448]; +}NET_DVR_ALARMHOST_ENVIRONMENTAL_LOGGER, *LPNET_DVR_ALARMHOST_ENVIRONMENTAL_LOGGER; + +//ٴ״̬ +typedef struct +{ + int iWindSpeed; /**/ + BYTE byRes[508]; +}NET_DVR_WIND_SPEED_STATE, *LPNET_DVR_WIND_SPEED_STATE; + +//ͨչģ״̬48·ÿλʾ1·0ʾأ1ʾ +typedef struct +{ + BYTE byOutPutState1; /*output1-8*/ + BYTE byOutPutState2; /*output9-16*/ + BYTE byOutPutState3; /*output17-24*/ + BYTE byOutPutState4; /*output25-32*/ + BYTE byOutPutState5; /*output33-40*/ + BYTE byOutPutState6; /*output41-48*/ + BYTE Res[506]; +}NET_DVR_GENERATE_OUTPUT_STATE, *LPNET_DVR_GENERATE_OUTPUT_STATE; + +//ˮ״̬ +typedef struct +{ + int iWaterLogVal; /* й¶λã100*/ + int iLeakResist1; /*һ·©ˮ*/ + int iTotolResist1; /*һ·ܵ*/ + int iLeakResist2; /*ڶ·©ˮ*/ + int iTotolResist2; /*ڶ·ܵ*/ + BYTE byWaterLogAlarm; /* й©12澯*/ + BYTE byLeakAlarm1; /*һ·©ˮ澯12澯*/ + BYTE byFaultAlarm1; /*һ·ϸ澯12澯*/ + BYTE byLeakAlarm2; /*ڶ·©ˮ澯12澯*/ + BYTE byFaultAlarm2; /*ڶ·ϸ澯12澯*/ + BYTE byRes[487]; +}NET_DVR_SOAK_STATE, *LPNET_DVR_SOAK_STATE; + +//̫ܿ״̬ +typedef struct +{ + int iChangerVolInput; /*豸ѹ*/ + int iChangerCurInput; /*豸*/ + int iChangerPwInput; /*豸빦*/ + int iChangerVolOutput; /*豸ѹ*/ + int iChangerCurOutput; /*豸*/ + int iChangerPwOutput; /*豸*/ + int iDischangerVolOutput; /*ŵ豸ѹ*/ + int iDischangerCurOutput; /*ŵ豸*/ + int iDischangerPwOutput; /*ŵ豸*/ + int iDevTemperatrue; /*豸¶*/ + BYTE byBatteryVolState; /*صѹ״̬12쳣*/ + BYTE byBatteryTmpState; /*¶״̬12쳣*/ + BYTE byChangerVolInputState; /*豸ѹ״̬12쳣*/ + BYTE byChangerRunState; /*豸״̬12*/ + BYTE byChangerChgState; /*豸״̬12쳣*/ + BYTE byBatteryVolFlt; /*صѹ12澯*/ + BYTE byBatteryTmpFlt; /*¶쳣12澯*/ + BYTE byBatteryResistanceFlt; /*쳣12澯*/ + BYTE byVolRcgFlt; /*ѹʶ12澯*/ + BYTE byChangerVolInputFlt; /*豸ѹ쳣12澯*/ + BYTE byChangerMosShort; /*MOSܶ·12澯*/ + BYTE byChangerAntiOrMosShort; /*MOSܶ·12澯*/ + BYTE byChangerAntiShort; /*MOSܶ·12澯*/ + BYTE byInputOverCur; /*12澯*/ + BYTE byLoadOverCur; /*ع12澯*/ + BYTE byLoadShort; /*ض·12澯*/ + BYTE byLoadMosShort; /*MOSܶ·12澯*/ + BYTE byChangerFlt; /*豸12澯*/ + BYTE byRes[454]; +}NET_DVR_SOLAR_POWER_STATE, *LPNET_DVR_SOLAR_POWER_STATE; + +//SF6״̬ +typedef struct +{ + int iSf6Thick1; /*һSF6Ũ*/ + int iO2Thick1; /*һŨ*/ + int iTemprature1; /*һ¶*/ + int iHumidity1; /*һʪ*/ + int iSf6Thick2; /*ڶSF6Ũ*/ + int iO2Thick2; /*ڶŨ*/ + int iTemprature2; /*ڶ¶*/ + int iHumidity2; /*ʪ*/ + int iSf6Thick3; /*SF6Ũ*/ + int iO2Thick3; /*Ũ*/ + int iTemprature3; /*¶*/ + int iHumidity3; /*ʪ*/ + int iSf6Thick4; /*ĵSF6Ũ*/ + int iO2Thick4; /*ĵŨ*/ + int iTemprature4; /*ĵ¶*/ + int iHumidity4; /*ĵʪ*/ + int iSf6Thick5; /*SF6Ũ*/ + int iO2Thick5; /*Ũ*/ + int iTemprature5; /*¶*/ + int iHumidity5; /*ʪ*/ + int iSf6Thick6; /*SF6Ũ*/ + int iO2Thick6; /*Ũ*/ + int iTemprature6; /*¶*/ + int iHumidity6; /*ʪ*/ + int iSf6Thick7; /*ߵSF6Ũ*/ + int iO2Thick7; /*ߵŨ*/ + int iTemprature7; /*ߵ¶*/ + int iHumidity7; /*ߵʪ*/ + int iSf6Thick8; /*ڰ˵SF6Ũ*/ + int iO2Thick8; /*ڰ˵Ũ*/ + int iTemprature8; /*ڰ˵¶*/ + int iHumidity8; /*ڰ˵ʪ*/ + int iSf6Thick9; /*ھŵSF6Ũ*/ + int iO2Thick9; /*ھŵŨ*/ + int iTemprature9; /*ھŵ¶*/ + int iHumidity9; /*ھŵʪ*/ + int iSf6Thick10; /*ʮSF6Ũ*/ + int iO2Thick10; /*ʮŨ*/ + int iTemprature10; /*ʮ¶*/ + int iHumidity10; /*ʮʪ*/ + int iSf6Thick11; /*ʮһSF6Ũ*/ + int iO2Thick11; /*ʮһŨ*/ + int iTemprature11; /*ʮһ¶*/ + int iHumidity11; /*ʮһʪ*/ + int iSf6Thick12; /*ʮSF6Ũ*/ + int iO2Thick12; /*ʮŨ*/ + int iTemprature12; /*ʮ¶*/ + int iHumidity12; /*ʮʪ*/ + BYTE byFanState1; /*״̬1 1У2ֹͣ*/ + BYTE byFanState2; /*״̬2 1У2ֹͣ*/ + BYTE byFanState3; /*״̬3 1У2ֹͣ*/ + BYTE byFanState4; /*״̬4 1У2ֹͣ*/ + BYTE byFanState5; /*״̬5 1У2ֹͣ*/ + BYTE byFanState6; /*״̬6 1У2ֹͣ*/ + BYTE byFanState7; /*״̬7 1У2ֹͣ*/ + BYTE byFanState8; /*״̬8 1У2ֹͣ*/ + BYTE byFanState9; /*״̬9 1У2ֹͣ*/ + BYTE byFanState10; /*״̬10 1У2ֹͣ*/ + BYTE byFanState11; /*״̬11 1У2ֹͣ*/ + BYTE byFanState12; /*״̬12 1У2ֹͣ*/ + BYTE byRes[308]; +}NET_DVR_SF6_ALARMHOST_STATE, *LPNET_DVR_SF6_ALARMHOST_STATE; + +//״̬ +typedef struct +{ + int iWeight; /*ֵ,1000*/ + BYTE byRes[508]; +}NET_DVR_WEIGHT_STATE, *LPNET_DVR_WEIGHT_STATE; + +//ɼϵͳ״̬ +typedef struct +{ + int iAirTemperature; /* ¶*/ + DWORD dwAirHumidity; /* ʪ*/ + DWORD dwWindSpeed; /* */ + DWORD dwWindDirection; /* */ + DWORD dwIlluminationIntensity; /* ǿ*/ + DWORD dwCO2; /* co2Ũ*/ + DWORD dwPM25; /* PM2.5Ũ*/ + DWORD dwAirPressure; /* ѹ*/ + int iSoilTemperature; /* ¶*/ + DWORD dwSoilHumidity; /* ʪ*/ + DWORD dwRainFall; /**/ + BYTE byIsRainSnow; /* ѩ1-ѩ2-ѩ*/ + BYTE byRes[467]; +}NET_DVR_WEATHER_STATION_STATE, *LPNET_DVR_WEATHER_STATION_STATE; + +//ˮʾ״̬ +typedef struct +{ + DWORD dwTurbidity; /* Ƕֵ*/ + DWORD dwChlorine; /* ֵ*/ + DWORD dwPH; /* PH ֵ*/ + BYTE byRes[500]; +}NET_DVR_WATER_QLT_STATE, *LPNET_DVR_WATER_QLT_STATE; + +//ȼʾϵͳ״̬ +typedef struct +{ + int iNatrualGasThick; /* ȻŨ*/ + BYTE byRes[508]; +}NET_DVR_FUEL_GAS_DETE_STATE, *LPNET_DVR_FUEL_GAS_DETE_STATE; + +//豸 +typedef struct tagNET_DVR_FIRE_ALARM_STATUS +{ + BYTE byFireAlarm[MAX_FIRE_ALARM_ZONE][MAX_FIRE_ALARM_POINT_ZONE]; //״̬λ1-2-澯 + BYTE byRes[128]; //λ +}NET_DVR_FIRE_ALARM_STATUS, *LPNET_DVR_FIRE_ALARM_STATUS; + +typedef union tagNET_DVR_EXTERNAL_DEVICE_STATE_UNION +{ + NET_DVR_ALARMHOST_UPS_STATE struUpsState; //UPS״̬ + NET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_STATE struSwitchPowerState;//صԴ״̬ + NET_DVR_ALARMHOST_GAS_DETECTOR_STATE struGasDetectorState;//ϵͳ״̬ + NET_DVR_ALARMHOST_TEMP_HUMI_SENSOR_STATE struTempHumiSensorState;//ʪȴ״̬ + NET_DVR_ALARMHOST_AIRCONDITION_STATE struAirConditionState;//յ״̬ + NET_DVR_ALARMHOST_ELECTRICITY_STATE struElectricityState;//״̬ + NET_DVR_ALARMHOST_TRANSFORMER_TEMP_STATE struTransformerTempState; //״̬ + NET_DVR_ALARMHOST_WATERLEVEL_SENSOR struWaterLevelSensor;//ˮλ + NET_DVR_ALARMHOST_DUSTNOISE_SENSOR struDustNoiseSensor;//ﳾ + NET_DVR_ALARMHOST_ENVIRONMENTAL_LOGGER struEnvironmentLogger;//ɼ + NET_DVR_WIND_SPEED_STATE struWindSpeedState; //ٴ״̬ + NET_DVR_GENERATE_OUTPUT_STATE struGenerateOutputState; //ͨչģ״̬48·ÿλʾ1· + NET_DVR_SOAK_STATE struSoakState; //ˮ״̬ + NET_DVR_SOLAR_POWER_STATE struSolarPowerState; //̫ܿ״̬ + NET_DVR_SF6_ALARMHOST_STATE struSF6AlarmHostState; //SF6״̬ + NET_DVR_WEIGHT_STATE struWeightState; //״̬ + NET_DVR_WEATHER_STATION_STATE struWeatherStationState; //ɼϵͳ״̬ + NET_DVR_WATER_QLT_STATE struWaterQltState; //ˮʾ״̬ + NET_DVR_FUEL_GAS_DETE_STATE struFuelGasDeteState; //ȼʾϵͳ״̬ + NET_DVR_FIRE_ALARM_STATUS struFireAlarmStatus; //豸״̬ + BYTE byRes[512]; +} NET_DVR_EXTERNAL_DEVICE_STATE_UNION, *LPNET_DVR_EXTERNAL_DEVICE_STATE_UNION; + +typedef struct tagNET_DVR_ALARMHOST_EXTERNAL_DEVICE_STATE +{ + DWORD dwSize; + BYTE byDevType; //1-UPS2-صԴ3-ϵͳ4-ʪȴ5-յ6-7-״̬, 8-ˮλ9-ﳾ10-ɼǡ11-ٴ״̬12-ͨչģ״̬13-ˮ״̬14-̫ܿ״̬15-SF6״̬16-״̬17-ɼϵͳ״̬18-ˮʼ״̬19-ȼʾϵͳ״̬20-״̬ + BYTE byRes1[3]; + NET_DVR_EXTERNAL_DEVICE_STATE_UNION struDevState; + BYTE byRes2[32]; +} NET_DVR_ALARMHOST_EXTERNAL_DEVICE_STATE, *LPNET_DVR_ALARMHOST_EXTERNAL_DEVICE_STATE; + +//ͨչģƣ48·ÿλʾ1· +typedef struct +{ + DWORD dwSize; + BYTE byOutPutState1; /*output1-8*/ + BYTE byOutPutState2; /*output9-16*/ + BYTE byOutPutState3; /*output17-24*/ + BYTE byOutPutState4; /*output25-32*/ + BYTE byOutPutState5; /*output33-40*/ + BYTE byOutPutState6; /*output41-48*/ + BYTE byOperateType; //ͣ0-Ч1-2- + BYTE Res[65]; +}NET_DVR_GENERATE_OUTPUT_CTRL, *LPNET_DVR_GENERATE_OUTPUT_CTRL; + +//UPSֵ +typedef struct tagNET_DVR_ALARMHOST_UPS_LIMIT_VALUE +{ + int iInputVolHigh; //Խѹֵ(ֵ) + int iInputVolLow; //Խѹֵ(ֵ) + int iInputFreHigh; //ԽƵֵ(ֵ) + int iInputFreLow; //ԽƵֵ(ֵ) + int iOutputVolHigh; //Խѹֵ(ֵ) + int iOutputVolLow; //Խѹֵ(ֵ) + int iBatteryVoltageLow; //ص͵ѹֵ + int iBatterySurplus; //غʱ ֵ + int iBatteryTemperatureHigh;//¶ȸֵ + BYTE byRes[64]; // +}NET_DVR_ALARMHOST_UPS_LIMIT_VALUE, *LPNET_DVR_ALARMHOST_UPS_LIMIT_VALUE; + +//ʪȴֵ +typedef struct tagNET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_LIMIT_VALUE +{ + int iTemperatureHighLimit; //¶ȸֵλ϶ + int iTemperatureLowLimit; //¶ȵֵλ϶ + int iHumidityHighLimit; //ʪȸֵλ% + int iHumidityLowLimit; //ʪȵֵλ% + BYTE byRes[84]; +} NET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_LIMIT_VALUE, *LPNET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_LIMIT_VALUE; + +typedef union tagNET_DVR_EXTERNAL_DEVICE_LIMIT_VALUE_UNION +{ + NET_DVR_ALARMHOST_UPS_LIMIT_VALUE struUpsLimitValue; + NET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_LIMIT_VALUE struTempHumidityLimitValue; +}NET_DVR_EXTERNAL_DEVICE_LIMIT_VALUE_UNION,*LPNET_DVR_EXTERNAL_DEVICE_LIMIT_VALUE_UNION; + +typedef struct tagNET_DVR_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE +{ + DWORD dwSize; + BYTE byDevType; //1-UPS2-ʪȴ + BYTE byRes1[3]; + NET_DVR_EXTERNAL_DEVICE_LIMIT_VALUE_UNION struAlarmValue; + BYTE byRes2[32]; +}NET_DVR_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE, *LPNET_DVR_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE; + +#define ALARMHOST_ALARMOUT_NUM 64 // +#define MAX_OSD_UNIT_LEN 8 //OSDλ +typedef struct tagNET_DVR_ALARMHOST_SENSOR_JOINT_CFG +{ + DWORD dwSize; + BYTE bySensorJointAlarmOut[MAX_ALARMHOST_ALARMOUT_NUM/*512*/];//ģ0-1- + BYTE bySensorJointSiren[ALARMHOST_MAX_SIREN_NUM/*8*/];//ģ + BYTE bySensorAlarmTypeJointAlarmOut[ALARMHOST_ALARMOUT_NUM/*64*/];//ģֶbySensorJointAlarmOutչ±ʾţԪصֵλʾͣͼ""Ĺϵֵ壺1bit0-1bit1-2bit2-3bit3-4bit4- + BYTE bySesorAlarmTypeJointSiren[ALARMHOST_MAX_SIREN_NUM]; //ģţֶbySensorJointSirenչ±ʾţԪصֵλʾͣͼ""Ĺϵֵ壺bit0-1bit1-2bit2-3bit3-4bit4- + BYTE byChan; //ͨ + BYTE byRes[55]; +}NET_DVR_ALARMHOST_SENSOR_JOINT_CFG, *LPNET_DVR_ALARMHOST_SENSOR_JOINT_CFG; + +//UPSϢϴ +typedef struct tagNET_DVR_ALARMHOST_UPS_ALARMINFO +{ + BYTE byAlarmType;/*ͣ1.AѹԽ 2.BѹԽ 3.CѹԽ 4.AѹԽ5.BѹԽ 6.CѹԽ7.AƵԽ 8.BƵԽ9.CƵԽ10.ѹԽޱ 11.ر 12.صѹͱ 13.غʱ䳬ͱ 14.¶ȳ߱ 15.رձ 16.Զ· 17.ϱ 18.ϱ 19.ϱ 20.عϱ 21.Զ·ϱ */ + BYTE byChanNo; //485ͨţ1ʼ + BYTE bySlotNo; //485λ + BYTE byRes1; // + int iAlarmValue;//ֵ + BYTE byRes2[64]; // +}NET_DVR_ALARMHOST_UPS_ALARMINFO, *LPNET_DVR_ALARMHOST_UPS_ALARMINFO; + +//صԴϴ +typedef struct tagNET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_ALARMINFO +{ + BYTE byAlarmType; /*ͣ1-زʧ 2-AC-DCתϣ3-/ѹAB/AԽޣ4-/ѹBC/BԽޣ5-/ѹCA/CԽޣ6-AԽޣ7-BԽޣ8-CԽޣ9ģϣ10-ȹϣ11-ֱѹԽ*/ + BYTE byChanNo; //485ͨţ1ʼ + BYTE bySlotNo; //485λ + BYTE byRes1; + int iAlarmValue; //ֵ + BYTE byRes2[64]; +}NET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_ALARMINFO, +*LPNET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_ALARMINFO; + +//ϵͳ +typedef struct tagNET_DVR_ALARMHOST_GAS_DETECT_SYS_ALARMINFO +{ + BYTE byAlarmType; /*ͣ1- SF6庬쳣2-쳣3-¶ֵ쳣4-ʪֵ쳣5-*/ + BYTE byChanNo; //485ͨţ1ʼ + BYTE bySlotNo; //485λ + BYTE byRes1; + int iAlarmValue; //ֵ + BYTE byRes2[64]; +}NET_DVR_ALARMHOST_GAS_DETECT_SYS_ALARMINFO, +*LPNET_DVR_ALARMHOST_GAS_DETECT_SYS_ALARMINFO; + + +//ʪȴ +typedef struct tagNET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_ALARMINFO +{ + BYTE byAlarmType; //1-¶쳣2-ʪ쳣 + BYTE byChanNo; //485ͨ + BYTE bySlotNo; //485λ + BYTE byRes1; + int iAlarmValue; //ֵ + BYTE byRes2[64]; +} NET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_ALARMINFO, *LPNET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_ALARMINFO; + +typedef union tagNET_DVR_485_DEVICE_ALARM_UNION +{ + NET_DVR_ALARMHOST_UPS_ALARMINFO struUPSAlarm; //UPS + NET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_ALARMINFO struSwitchPowerAlarm; //صԴ + NET_DVR_ALARMHOST_GAS_DETECT_SYS_ALARMINFO struGasDetectSystemAlarm; //ϵͳ + NET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_ALARMINFO struTempHumiditySensorAlarm; //ʪȴ + BYTE byRes[72]; +} NET_DVR_485_DEVICE_ALARM_UNION, *LPNET_DVR_485_DEVICE_ALARM_UNION; + +//485豸Ϣ +typedef struct tagNET_DVR_485_EXTERNAL_DEVICE_ALARMINFO +{ + DWORD dwSize; + BYTE byAlarmType; //1-UPS2-صԴ3-ϵͳ4-ʪȴ + BYTE byRes1[3]; + NET_DVR_485_DEVICE_ALARM_UNION struAlarmInfo; + BYTE byRes2[16]; +} NET_DVR_485_EXTERNAL_DEVICE_ALARMINFO, *LPNET_DVR_485_EXTERNAL_DEVICE_ALARMINFO; + +typedef struct tagNET_DVR_ALARMHOST_RS485_SLOT_CFG +{ + DWORD dwSize; // ṹС + BYTE sDeviceName[NAME_LEN]; // ǰ豸 + WORD wDeviceType; // ǰ豸ALARM_FRONT_DEVICE _TYPE + WORD wDeviceProtocol; // ǰ豸Э ͨȡЭбȡ + WORD wAddress; //豸ַ + BYTE byChannel; //485ͨ + BYTE bySlotChan; //λ + BYTE byRes[60]; // ֽ +}NET_DVR_ALARMHOST_RS485_SLOT_CFG, *LPNET_DVR_ALARMHOST_RS485_SLOT_CFG; + +//ģʽ +typedef struct tagNET_DVR_CORRIDOR_MODE +{ + DWORD dwSize; + BYTE byEnableCorridorMode; //Ƿģʽ 0ã 1 + BYTE byMirrorMode; //ʽ0 ر;1 ;2 ;3 м + BYTE byRes[126]; +}NET_DVR_CORRIDOR_MODE, *LPNET_DVR_CORRIDOR_MODE; + +// +typedef struct tagNET_DVR_DETECT_FACE +{ + DWORD dwSize; + BYTE byEnableDetectFace; //Ƿ 0ã 1 + BYTE byDetectSensitive; // 10ȼ 110 + BYTE byEnableDisplay; /*ƶʾ0-1-*/ + BYTE byRes; + NET_DVR_HANDLEEXCEPTION_V40 struAlarmHandleType; /*ʽ*/ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*ʱ */ + DWORD dwMaxRelRecordChanNum; //¼ͨ ֻ֧ + DWORD dwRelRecordChanNum; //¼ͨ ʵ֧ + DWORD dwRelRecordChan[MAX_CHANNUM_V30]; /* ¼ͨ*/ + NET_DVR_SCHEDTIME struHolidayTime[MAX_TIMESEGMENT_V30]; //ղʱ + WORD wDuration; //ʱ 5s + BYTE byRes1[30]; +}NET_DVR_DETECT_FACE, *LPNET_DVR_DETECT_FACE; + +typedef struct tagNET_DVR_MUL_STREAM_CHANNEL_GROUP +{ + DWORD dwSize; // ṹС + DWORD dwGroup ; // + NET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND struMultiStreamCfg; // + BYTE byRes[64] ; +}NET_DVR_MUL_STREAM_CHANNEL_GROUP,*LPNET_DVR_MUL_STREAM_CHANNEL_GROUP; + +typedef struct tagNET_DVR_CHANNEL_GROUP +{ + DWORD dwSize; // ṹС + DWORD dwChannel; //ͨ + DWORD dwGroup; // + BYTE byID; //豸ID + BYTE byRes1[3]; + DWORD dwPositionNo; //λ,IPC0IPDǴ1ʼ + BYTE byRes[56]; +}NET_DVR_CHANNEL_GROUP, *LPNET_DVR_CHANNEL_GROUP; + + +typedef struct tagNET_DVR_TIME_DETECTION +{ + NET_DVR_SCHEDTIME struSchedTime; //ʱ + BYTE byDetSceneID;//ⳡ[1,4],IPCĬ0 + BYTE byRes[15]; +}NET_DVR_TIME_DETECTION,*LPNET_DVR_TIME_DETECTION; + +//ץĴģʽֹ֧ʱκϴ +typedef struct tagNET_DVR_GUARD_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + /* + 0ʾЧ + 1ʾ ץVIAģʽƵץ IPCʹã; + 2 ʾ ץ HVT ģʽ 쿨IPCʹã + */ + BYTE byRelateType; + BYTE byGroupNo; // + BYTE byRes[62]; +}NET_DVR_GUARD_COND,*LPNET_DVR_GUARD_COND; + +//ץĴģʽֹ֧ʱκϴ +typedef struct tagNET_DVR_GUARD_CFG +{ + DWORD dwSize; + //ʱ + NET_DVR_TIME_DETECTION struAlarmSched[MAX_DAYS/*7*/][MAX_TIMESEGMENT_V30/*8*/]; + NET_DVR_HANDLEEXCEPTION_V40 struHandleException; //쳣ʽ + DWORD dwMaxRelRecordChanNum ; //¼ͨ ֻ֧ + DWORD dwRelRecordChanNum ; //ʵʴ¼ͨ + DWORD dwRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ(0xffff ffffʾЧ + NET_DVR_TIME_DETECTION struHolidayTime[MAX_TIMESEGMENT_V30]; //ղʱ + BYTE byDirection;//0-1-ȫ2-3- + BYTE byRes[87]; +}NET_DVR_GUARD_CFG,*LPNET_DVR_GUARD_CFG; + +//ץͼƬչṹ +typedef struct tagNET_DVR_SNAPINFO_COND_ +{ + DWORD dwSize; + DWORD dwChan; + /* + 0 ʾ ץMPRģʽ֡ץ IPCʹã + 1 ʾ ץ HVT ģʽ쿨IPCʹã + */ + BYTE byRelateType; + BYTE byRes[63]; // +}NET_DVR_SNAPINFO_COND, *LPNET_DVR_SNAPINFO_COND; + + +//ץͼƬ +typedef struct tagNET_DVR_SNAPINFOCFG +{ + DWORD dwSize; + BYTE byCurPicType;//0-ʾͼƬ1-ʾͼƬС + BYTE byPicQuality;//ͼƬ[1,100] + BYTE byRes1[2]; + DWORD dwPicSize;//ͼƬС[64k,2048k] + BYTE byRes2[128]; +}NET_DVR_SNAPINFOCFG,*LPNET_DVR_SNAPINFOCFG; + +//ptzʽ +typedef enum _PTZ_TRACK_MODE_ +{ + PTZ_TRACK_MODE_ALWAYS = 1, //һֱ + PTZ_TRACK_MODE_BYTIME = 2, //ָʱ + PTZ_TRACK_MODE_NEXT = 3, //һĿ +}PTZ_TRACK_MODE; + +//ptz +typedef struct _NET_DVR_PTZ_TRACK_PARAM_ +{ + DWORD dwSize; //ṹС + BYTE byTrackMode; //ʽ,οPTZ_TRACK_MODE + BYTE byLinkageTarget; //Ŀ0-Ĭ,1-1,2-2.. + BYTE byAutoTrackEnable;//ʹ 0-Զ1-Զرգǹ豸֧Զرչܣڴչ + BYTE byRes1; // + DWORD dwTrackTime; //ʱ䣬 + //ģʽΪPTZ_TRACK_MODE_ALWAYSֶЧ + //ģʽΪPTZ_TRACK MODE_BYTIMEʱΧ[1,60]Ĭ10 + //ģʽΪPTZ_TRACK MODE_NEXTʱΧ[1,10]Ĭ2 + BYTE byRes2[256]; // +}NET_DVR_PTZ_TRACK_PARAM,*LPNET_DVR_PTZ_TRACK_PARAM; + +typedef struct tagNET_VCA_TRAVERSE_PLANEPARAM +{ + DWORD dwSize; + BYTE byEnable;//ʹ + BYTE byEnableDualVca;// ֧ܺ 0-ã1- + BYTE byEnableHumanMisinfoFilter;// ȥ 0-ã1- + BYTE byEnableVehicleMisinfoFilter;// óȥ 0-ã1- + NET_VCA_TRAVERSE_PLANE struAlertParam[MAX_ALERTLINE_NUM]; //߲ + NET_DVR_SCHEDTIME struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; + NET_DVR_HANDLEEXCEPTION_V40 struHandleException; //쳣ʽ + DWORD dwMaxRelRecordChanNum ; //¼ͨ ֻ֧ + DWORD dwRelRecordChanNum ; //¼ͨ ʵֵ֧ + DWORD byRelRecordChan[MAX_CHANNUM_V30];//¼ͨ + NET_DVR_SCHEDTIME struHolidayTime[MAX_TIMESEGMENT_V30]; //ղʱ + BYTE byRes2[100]; +}NET_VCA_TRAVERSE_PLANE_DETECTION, *LPNET_VCA_TRAVERSE_PLANE_DETECTION; + + +typedef struct tagNET_VCA_FIELDDETECION +{ + DWORD dwSize; + BYTE byEnable; //ʹܣǷ + BYTE byEnableDualVca;// ֧ܺ 0-ã1- + BYTE byEnableHumanMisinfoFilter;// ȥ 0-ã1- + BYTE byEnableVehicleMisinfoFilter;// óȥ 0-ã1- + NET_VCA_INTRUSION struIntrusion[MAX_INTRUSIONREGION_NUM];//ÿIJ + NET_DVR_SCHEDTIME struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; //ʱ + NET_DVR_HANDLEEXCEPTION_V40 struHandleException; //쳣ʽ + DWORD dwMaxRelRecordChanNum ; //¼ͨ ֻ֧ + DWORD dwRelRecordChanNum ; //¼ͨ ʵֵ֧ + DWORD byRelRecordChan[MAX_CHANNUM_V30];//¼ͨ + NET_DVR_SCHEDTIME struHolidayTime[MAX_TIMESEGMENT_V30/*8*/]; //ղʱ + BYTE byRes2[100]; +}NET_VCA_FIELDDETECION, *LPNET_VCA_FIELDDETECION; + +typedef struct tagNET_DVR_ROI_DETECT_NUM +{ + DWORD dwSize; + DWORD dwGroup; + DWORD dwStreamType; //ͣ0-1-2-¼ͣ3-3 + DWORD dwRoiFixNum; //̶ȷٴλȡ + DWORD dwRoiFixID[MAX_ROIDETECT_NUM];//IPC֧4֧24 + BYTE szFixRoiName[MAX_ROIDETECT_NUM][NAME_LEN];//̶ROI + DWORD dwRoiTrackNum; //Զȷٴλȡ + DWORD dwRoiTrackID[MAX_ROIDETECT_NUM];//IPC֧4֧24 + BYTE byRes[320]; +}NET_DVR_ROI_DETECT_NUM, *LPNET_DVR_ROI_DETECT_NUM; + +typedef enum _DETECT_ROI_TYPE_ +{ + DETECT_FIX_ROI = 0, //ROI̶ + DETECT_TRACK_ROI = 1 //ROI Զ +}DETECT_ROI_TYPE; +// +typedef struct tagNET_DVR_ROI_DETECT_COND +{ + DWORD dwSize; + DWORD dwRoiID; // һPTZ֧4 + NET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND struMultiStreamCfg; // + BYTE byRoiDetectType; // DECTECT_ROI_TYPE ֵ + BYTE byRoiDetectTrackType;//̶ʱֶЧʱ1⣨IPC,2ƶ,3- + BYTE byRes[30]; +}NET_DVR_ROI_DETECT_COND,*LPNET_DVR_ROI_DETECT_COND; + +//ò +//ROI̶ģʽ 빦 +typedef struct tagNET_DVR_ROI_FIX_RECT_CFG +{ + BYTE byEnableFixRoi; // ROI̶ģʽ Ƿ 0ã 1 + BYTE byImageQualityLevel; //ͼȼ 16 + BYTE byRes[2]; + BYTE szFixRoiName[NAME_LEN]; + NET_VCA_RECT struRoiRect; //ROI + BYTE byRes1[468]; +}NET_DVR_ROI_FIX_RECT_CFG, *LPNET_DVR_ROI_FIX_RECT_CFG; + +//ROIԶģʽ 빦 +typedef struct tagNET_DVR_ROI_TRACK_RECT_CFG +{ + BYTE byEnableTrackRoi; // ROIԶģʽ Ƿ 0ã 1 + BYTE byImageQualityLevel; //ͼȼ 16 + BYTE byModeType;// 0 ~ , 1ģʽ(ƶ;ֹ), 2~ƶ(ƶ), 3- + BYTE byRes[509]; +}NET_DVR_ROI_TRACK_RECT_CFG, *LPNET_DVR_ROI_TRACK_RECT_CFG; + +typedef union tagNET_DVR_ROI_DETECT_UNION +{ + DWORD uLen[128]; + NET_DVR_ROI_FIX_RECT_CFG strRoiFixRectCfg;//̶ģʽ + NET_DVR_ROI_TRACK_RECT_CFG strRoiTrackRectCfg;//Զģʽ +}NET_DVR_ROI_DETECT_UNION,*LPNET_DVR_ROI_DETECT_UNION; + +typedef struct tagNET_DVR_ROI_DETECT_CFG +{ + DWORD dwSize; //560 + DWORD dwStreamType; //ͣ0-1-2-¼ͣ3-3 + BYTE byRoiDetectType; // DECTECT_ROI_TYPE ֵ + BYTE byRes[3]; + NET_DVR_ROI_DETECT_UNION uRoiDetectInfo; //ROI + BYTE byRes1[36]; +}NET_DVR_ROI_DETECT_CFG, *LPNET_DVR_ROI_DETECT_CFG; + +//齹 +typedef struct tagNET_VCA_DEFOCUSPARAM +{ + DWORD dwSize; + BYTE byEnable;//ʹ + BYTE bySensitiveLevel;// 1-100Ĭ50ԽߣԽױ + BYTE byRes1[2]; + NET_DVR_HANDLEEXCEPTION_V40 struHandleException; //쳣ʽ + BYTE byRes2[24]; +}NET_VCA_DEFOCUSPARAM,*LPNET_VCA_DEFOCUSPARAM; + +typedef struct tagNET_PTZ_INFO_EX +{ + float fPan;//Pֵ ȷС3λ Χ[0,360.000] + float fTilt; //Zֵ ȷС3λ Χ[-90.000,90.000] + float fVisibleZoom;//ɼzoom ȷС1λ ᳬ[010000.0] + DWORD dwVisibleFocus;//ɼfocus[0,65535] + float fThermalZoom;//ȳzoom ȷС1λ ᳬ[010000.0] + DWORD dwThermalFocus;//ȳfocus[0,65535] +}NET_PTZ_INFO_EX, *LPNET_PTZ_INFO_EX; + +//IPC5.1.0 +typedef struct tagNET_DVR_PRESET_NAME +{ + DWORD dwSize; + WORD wPresetNum; //Ԥõ + BYTE byRes1[2]; //ֽڶ + char byName[NAME_LEN]; + WORD wPanPos;//ˮƽ ȡݴ360Ĭϼȥ360 + WORD wTiltPos;//ֱ ȡݴ360Ĭϼȥ360 + WORD wZoomPos;//䱶ȡݴ360Ĭϼȥ360 + BYTE byRes2; + BYTE byPTZPosExEnable; /*ǷPTZչ0~ãPTZֵwPanPoswTiltPoswZoomPosΪ׼1~ãPTZֵstruPtzPosExΪ׼*/ + NET_PTZ_INFO_EX struPtzPosEx;// ptzչ(ָ֧߾PTZֵ) + BYTE byRes[32]; +}NET_DVR_PRESET_NAME, *LPNET_DVR_PRESET_NAME; + +typedef struct +{ + NET_DVR_SCHEDTIME struSchedTime; //ʱ + WORD wAction; ///< ʱ嶯 + WORD wActionNum; ///< ⶯ӱţԤõ㣬Ѳҹл + BYTE byres[12]; +}NET_DVR_SCHEDTASK,* LPNET_DVR_SCHEDTASK; + +//ʱ +typedef struct tagNET_DVR_TIME_TASK +{ + DWORD dwSize; + BYTE byTaskEnable; ///< ʹ 1-0- + BYTE byRes[3]; ///< ֽڶ + NET_DVR_SCHEDTASK struTask[MAX_DAYS][MAX_SCH_TASKS_NUM]; ///< 7죬ÿ10ʱ + DWORD dwParkTime; ///< ʱ 5s-720s + BYTE byRes1[64]; +}NET_DVR_TIME_TASK,*LPNET_DVR_TIME_TASK; + +//ṹ +typedef struct tagNET_DVR_CHANNEL_INDEX +{ + DWORD dwSize; // ṹС + DWORD dwChannel ; //ͨ + DWORD dwIndex ; // + BYTE byRes[64] ; +}NET_DVR_CHANNEL_INDEX, *LPNET_DVR_CHANNEL_INDEX; + +typedef struct tagNET_DVR_AUDIO_NAME +{ + DWORD dwSize; // ṹС + char cName[NAME_LEN] ; // + BYTE byRes[64]; +}NET_DVR_AUDIO_NAME, *LPNET_DVR_AUDIO_NAME; + +//¼豸 +typedef struct tagNET_DVR_LOGIN_DEVICE_PARAM_ +{ + DWORD dwSize; //ṹС + BYTE byMobileDev; //豸, 0- ƶ豸, 1 - ƶ豸 + BYTE byRes[63]; // +}NET_DVR_LOGIN_DEVICE_PARAM, *LPNET_DVR_LOGIN_DEVICE_PARAM; + +typedef enum RECV_DATA_TYPE +{ + ENUM_RECV_ERRCODE = 0x0, //ش +} RECV_DATA_TYPE; + +//ģʽ +typedef enum tagFISHEYE_STREAM_OUTPUT_MODE_ +{ + FISHEYE_STREAM_MODE_FISHEYE = 1, //ģʽ + FISHEYE_STREAM_MODE_PTZ = 2, //PTZģʽ + FISHEYE_STREAM_MODE_PANORAMA = 3 //ȫģʽ +}FISHEYE_STREAM_OUTPUT_MODE; + +//صö +typedef enum _CALLBACK_TYPE_DATA_ENUM_ +{ + ENUM_FISHEYE_STREAM_STATUS = 1, //״̬ + ENUM_FISHEYE_PTZPOS = 2, //ptzͨǰģʽµ + ENUM_FISHEYE_REALTIME_OUTPUT = 3 //ʵʱģʽ +}CALLBACK_TYPE_DATA_ENUM; + +//״̬ +typedef struct tagNET_DVR_FISHEYE_STREAM_STATUS_ +{ + DWORD dwSize; //ṹС + BYTE byStreamMode; //ģʽμFISHEYE_STREAM_OUTPUT_MODE + BYTE byRes[63]; // +}NET_DVR_FISHEYE_STREAM_STATUS,*LPNET_DVR_FISHEYE_STREAM_STATUS; + +//ӻصݽṹ +typedef struct tagNET_DVR_CALLBACK_TYPE_DATA +{ + DWORD dwChannel; //ͨ + DWORD dwDataType; //μCALLBACK_TYPE_DATA_ENUM + DWORD dwDataLen; //ݳ + BYTE* pData; //ݣdwTypeDataΪ ENUM_FISHEYE_STREAM_STATUSӦΪNET_DVR_FISHEYE_STREAM_STATUS + BYTE byRes[64]; // +}NET_DVR_CALLBACK_TYPE_DATA,*LPNET_DVR_CALLBACK_TYPE_DATA; + +//ptz϶ +typedef struct tagNET_DVR_DRAG_POS_PARAM +{ + DWORD dwChannel; //ͨ + DWORD dwPtzChannel; //dwChannelָͨģʽΪFISHEYE_STREAM_MODE_FISHEYEģʽʱֵΪ϶ptzͨdwChannelͨģʽΪʱΪ0 + NET_VCA_POINT struToPoint; //϶ҪתĿ㣬ĿλԤϽ + NET_VCA_POINT struOriPoint; //϶ʼ,˵Ϊ϶ʼʱָԤϽǵλ + BYTE byRes[56]; // +}NET_DVR_DRAG_POS_PARAM,*LPNET_DVR_DRAG_POS_PARAM; + +//ƽ̨ѯϷ״̬ +typedef struct tagNET_DVR_QUERY_STATUS +{ + DWORD dwSize; + BYTE byCpuLoad; //CPUԴռ, ȡֵΧ0-100 + BYTE byMemLoad; //MemoryԴռȡֵΧ0-100 + WORD wAbility; //Ϸ0 + WORD wRemainAbility;//ϷʣȡֵΧ 0 ʣ಼ĸ + WORD wTotalPlanNum; //64ƻ> + WORD wCurPlanNum; //ǰƻ 64ƻ> + BYTE byRes[62]; // +}NET_DVR_QUERY_STATUS, *LPNET_DVR_QUERY_STATUS; + +typedef struct tagNET_DVR_MONITOR_VQDCFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿ + BYTE byDevType; //豸ͣ0-̨豸1-̨豸 + BYTE bySignalPoint; //źŶʧֵ0-100 + BYTE byBlurPoint; //ͼģֵ0-100 + BYTE byLumaPoint; //ͼֵ0-100 + BYTE byChromaPoint; //ͼƫɫֵ0-100 + BYTE bySnowPoint; //ŷֵ0-100 + BYTE byStreakPoint; //Ƹŷֵ0-100 + BYTE byFreezePoint; //涳ֵᷧ0-100 + BYTE byPTZPoint; //̨ʧطֵ0-100 + BYTE byMonitorDel; //ɾ 0-ɾ 1-ɾ + BYTE byContrastThreshold; //Աȶ쳣ֵ0-100 + BYTE byMonoThreshold; //ڰͼֵ0-100 + BYTE byShakeThreshold; //Ƶֵ0-100 + BYTE byFlashThreshold; //Ƶֵ0-100 + BYTE byCoverThreshold; //Ƶڵֵ0-100 + BYTE bySceneThreshold; //ֵ0-100 + BYTE byDarkThreshold; //ͼֵ0-100 + BYTE byRes[46]; +}NET_DVR_MONITOR_VQDCFG, *LPNET_DVR_MONITOR_VQDCFG; + +//Ͻ +typedef struct tagNET_DVR_DIAGNOSIS_UPLOAD +{ + DWORD dwSize; + char sStreamID[STREAM_ID_LEN]; ///< IDС32ֽ + char sMonitorIP[64]; ///< ip + DWORD dwChanIndex; ///< ͨ + DWORD dwWidth; ///< ͼ + DWORD dwHeight; ///< ͼ߶ + NET_DVR_TIME struCheckTime; ///< ʱ(ϲںʱֶ)ʽ2012-08-06 13:00:00 + BYTE byResult; ///0-δ 1- 2-쳣 3-¼ʧ 4-ȡ쳣 + BYTE bySignalResult; ///< Ƶʧ 0-δ 1- 2-쳣 + BYTE byBlurResult; ///< ͼģ0-δ 1- 2-쳣 + BYTE byLumaResult; ///< ͼ0-δ 1- 2-쳣 + BYTE byChromaResult; ///< ƫɫ0-δ 1- 2-쳣 + BYTE bySnowResult; ///< ż0-δ 1- 2-쳣 + BYTE byStreakResult; ///< Ƹż0-δ 1- 2-쳣 + BYTE byFreezeResult; ///< 涳0-δ 1- 2-쳣 + BYTE byPTZResult; ///< ̨0-δ 1- 2-쳣 + BYTE byContrastResult; //Աȶ쳣0-δ⣬1-2-쳣 + BYTE byMonoResult; //ڰͼ0-δ⣬1-2-쳣 + BYTE byShakeResult; //Ƶ0-δ⣬1-2-쳣 + char sSNapShotURL[256]; ///<ͼƬURLַ + BYTE byFlashResult; //Ƶ0-δ⣬1-2-쳣 + BYTE byCoverResult; //Ƶڵ0-δ⣬1-2-쳣 + BYTE bySceneResult; //0-δ⣬1-2-쳣 + BYTE byDarkResult; //ͼ0-δ⣬1-2-쳣 + BYTE byStreamType; //ͣ0-Ч1-δ֪2-ͣ3-ǹ + BYTE byRes2[59]; +}NET_DVR_DIAGNOSIS_UPLOAD, *LPNET_DVR_DIAGNOSIS_UPLOAD; + +typedef struct tagNET_DVR_DOWN_LOAD_REQUEST ///< ݽṹƽ̨͵Ϸ +{ + NET_DVR_STREAM_INFO struStreamInfo; + char sSnapShotURL[256]; ///< ץͼURLС256ֽ + BYTE byRes[32]; +}NET_DVR_DOWN_LOAD_REQUEST, *LPNET_DVR_DOWN_LOAD_REQUEST; + +typedef struct tagNET_DVR_VQD_RESULT_INFO ///< ݽṹϷظƽ̨ +{ + DWORD dwSize; + char sStreamID[32]; ///֣1->*/ + BYTE byRes1[7]; + NET_DVR_GENERIC_START struTransactionStart;/*׿ʼ*/ + NET_DVR_GENERIC_END struTransactionEnd;/*׽*/ + NET_DVR_GENERIC_DATA_CFG struLineDeli;/*м*/ + NET_DVR_IGNORE_STRING struIgnoreString[MAX_IGNORE_STRING_NUM];/*ַĿǰΪ4*/ + BYTE byRes[40]; // +}NET_DVR_POS_GENERIC, *LPNET_DVR_GENERIC; + +typedef struct +{ + DWORD dwPosAddr; //posַ + BYTE byRes[948]; +}NET_DVR_POS_AVE, *LPNET_DVR_AVE; + +#define SERIAL_NUM_LEN 8 +typedef struct tagNET_DVR_POS_NUCLEUS/*size 952byte*/ +{ + char szEmployeeNo[SERIAL_NUM_LEN];//Աţ1עe + char szTerminalNo[SERIAL_NUM_LEN];// Posţ1עt + char szShiftNo[SERIAL_NUM_LEN]; //ְࣨעs + BYTE byRes[928]; +}NET_DVR_POS_NUCLEUS, *LPNET_DVR_POS_NUCLEUS; +typedef union _NET_DVR_POS_PROTOCOL_UNION +{ + BYTE byLenth[952]; //ڱʾ峤ȣʵ + NET_DVR_POS_GENERIC struGeneric; + NET_DVR_POS_AVE struAve; + NET_DVR_POS_NUCLEUS struNUCLEUS; +}NET_DVR_POS_PROTOCOL_UNION,*LPNET_DVR_POS_PROTOCOL_UNION; + +typedef enum tagNET_DVR_CHARSET_ENUM //뷽ʽ +{ + ENUM_UTF8 =0, + ENUM_GB2312, + ENUM_LATIN1, + ENUM_LATIN2, + ENUM_LATIN3, + ENUM_LATIN4, + ENUM_CYRILLIC, + ENUM_ARABIC, + ENUM_GREEK, + ENUM_HEBREW, + ENUM_TURKISH, + ENUM_NORDIC, + ENUM_THAI, + ENUM_LATIN7, + ENUM_LATIN8, + ENUM_LATIN9, + ENUM_LATIN10, + ENUM_CENTRAL_EUROPEAN, + ENUM_CYRILLIC_SCRIPT, + ENUM_HEBREW_DOS862 +}NET_DVR_CHARSET_ENUM, *LPNET_DVR_CHARSET_ENUM; + + +typedef struct +{ + DWORD dwSize; + BYTE byEnable; //ʹ + BYTE byCharSetType; //뷽ʽ0-UTF-8,1-GB2312 + BYTE byRes1; // + BYTE byProtocolType;//Эͣ1->generic textЭ(universal Protocol), 2->AVE VSI-ADD 3->AVE Vnet,4-EPSON(账posЭ), 5-NUCLEUS + //6- GilbarcoöӦṹNET_DVR_POS_GENERIC,7- NCRöӦṹNET_DVR_POS_GENERIC + NET_DVR_POS_PROTOCOL_UNION uPosProtocol; //POSЭ + BYTE byRes[32]; // +}NET_DVR_POS_FILTER_CFG, *LPNET_DVR_POS_FILTER_CFG; + +typedef struct tagNET_DVR_NET_SNIFF /*ṹ 312byte*/ +{ + BYTE byEnableSourcePort; //ǷöԴ˿ڹ 0-ã1- + BYTE byEnableDestAddr; //ǷöĿIPַй 0-ã1- + BYTE byEnableDestPort; //ǷöĿַĶ˿ںŽй + BYTE byRes1; // + BYTE bySourceIpAddr[MAX_DOMAIN_NAME]; //Դַ + BYTE byDestinationIpAddr[MAX_DOMAIN_NAME]; //ݷĿַ + WORD wSourcePort; //Դ˿ں + WORD wDestinationPort; //ݷĿ˿ں + BYTE byRes[16]; // +}NET_DVR_NET_SNIFF, *LPNET_DVR_NET_SNIFF; + +typedef struct +{ + WORD wNetPort; /*device net port*/ + BYTE byRes[2]; +}NET_DVR_NET_RECEIVE, *LPNET_DVR_NET_RECEIVE; + +typedef struct tagNET_DVR_MONITOR_INFO /**/ +{ + WORD wPort; //˿ں + BYTE byRes1[2]; + NET_DVR_IPADDR struRestrictRemoteIP;//Զ̷IP + BYTE byRes[164]; +}NET_DVR_MONITOR_INFO, *LPNET_DVR_MONITOR_INFO; + +typedef union tagNET_DVR_POS_CONNECTMODE_UNION +{ + BYTE byLen[312]; //峤ȣʵ + NET_DVR_NET_RECEIVE struNetRecv; //ģʽ + NET_DVR_MONITOR_INFO struTcpMonitor; //ģʽ + NET_DVR_SINGLE_RS232 struRS232; //ڷʽ + NET_DVR_MONITOR_INFO struUdpMonitor; //-UDPģʽ + NET_DVR_NET_SNIFF struSniff; //ģʽ + NET_DVR_ADDRESS struMcast; //ಥģʽ + NET_DVR_USB_RS232 struUSBRS232; //USBתڷʽ +}NET_DVR_POS_CONNECTMODE_UNION, *LPNET_DVR_POS_CONNECTMODE_UNION; + + +//DVRPOSӷʽýṹ +typedef struct tagNET_DVR_CONNECT_POS_CFG +{ + DWORD dwSize; //ṹС + BYTE byConnectMode; //ģʽ:0->(TCP),1->,2->ڽ3-UDP,4-,5-ಥ + BYTE byRes1[3]; // + NET_DVR_POS_CONNECTMODE_UNION uPosConnMode; //ģʽ + BYTE byRes[64]; +}NET_DVR_CONNECT_POS_CFG, *LPNET_DVR_CONNECT_POS_CFG; + +typedef struct tagNET_DVR_CHAN_FILTER_CFG +{ + DWORD dwSize; //ṹС + BYTE byFilterID; //POS˹ID + BYTE byFontSize; //ֺŴС0-- 8*16 1--16*32 2--32*64 + BYTE byShowPosInfo; //ǷposϢ + BYTE byOverlayMode; //ӷʽ0-1-ҳ + DWORD dwDelayTime; /*delay time(5-3600s)*/ + NET_DVR_POS_OSD_REGION struOsdPosInfo; /*overlay osd rect info*/ + NET_DVR_RGB_COLOR struOsdColor; //OSDɫ + NET_DVR_SCHEDTIME struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; + NET_DVR_HANDLEEXCEPTION_V40 struHandleException; //쳣ʽ + //쳣ʽбŰ󶨣Ϊ0ʱʾıŷΧΪ1-64Ϊ1ʱʾıŷΧΪ65-128 ڽУ0xffffffffʾ ǰļںıЧ + DWORD dwMaxRelRecordChanNum ; //¼ֻ֧ͨ + DWORD dwRelRecordChanNum ; //ڹ¼ͨ + DWORD dwRelRecordChan[MAX_CHANNUM_V30];//¼ͨ + //¼ͨŰ󶨣Ϊ0ʱʾͨŷΧΪ1-64Ϊ1ʱʾͨŷΧΪ65-128 ڽУ0xffffffffʾںĹͨЧ + DWORD dwTimeOut; /*time Out(5-3600s)*/ //ݳʱָڶ೤ʱղPOSݼжһݰĽ + BYTE byRes[60]; // +}NET_DVR_CHAN_FILTER_CFG, *LPNET_DVR_CHAN_FILTER_CFG; + +#define MAX_LAN_ENCODE_LEN 32 //Աʽ󳤶 +typedef struct tagNET_DVR_DEVICE_LAN_ENCODE +{ + DWORD dwSize; + BYTE byLanEncode[MAX_LAN_ENCODE_LEN]; //豸Աʽ + BYTE byRes[28]; +}NET_DVR_DEVICE_LAN_ENCODE, *LPNET_DVR_DEVICE_LAN_ENCODE; + +typedef struct tagNET_DVR_SCENECHANGE_DETECTION +{ + DWORD dwSize; + BYTE byEnable; //ʹܣǷ 0~,1~ + BYTE bySensitiveLevel;// 1-100Ĭ50ԽߣԽױ + BYTE byRes1[2]; + NET_DVR_SCHEDTIME struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; + NET_DVR_HANDLEEXCEPTION_V40 struHandleException; //쳣ʽ + DWORD dwMaxRelRecordChanNum ; //¼ͨ ֻ֧ + DWORD dwRelRecordChanNum ; //¼ͨ ʵֵ֧ + DWORD dwRelRecordChan[MAX_CHANNUM_V30];//¼ͨ + //¼ֽͨڵͨţʼֵ 0xffffffff + BYTE byRes2[128]; +}NET_DVR_SCENECHANGE_DETECTION,*LPNET_DVR_SCENECHANGE_DETECTION; + +typedef struct tagNET_DVR_SCENECHANGE_DETECTION_RESULT +{ + DWORD dwSize; // ṹС + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byRes[126]; // ֽ +}NET_DVR_SCENECHANGE_DETECTION_RESULT,*LPNET_DVR_SCENECHANGE_DETECTION_RESULT; + +typedef enum +{ + PREVIEW_MOD = 0, + ALARM_MOD, + PLAYBACK_MOD, + MAX_TYPE +}MODULE_TYPE; + +//λϢ +typedef struct tagNET_DVR_PARK_INFO +{ + char sPlateNo[MAX_PlATE_NO_LEN]; //ƺ + char sParkIndex[MAX_PlATE_NO_LEN]; //λ + BYTE byRes[64]; +}NET_DVR_PARK_INFO, *LPNET_DVR_PARK_INFO; + + +typedef struct tagNET_DVR_CROSSLINE_ALARM +{ + DWORD dwSize; + NET_VCA_DEV_INFO struDevInfo; + NET_DVR_TIME_EX struTriggerTime;/*ʱ*/ + NET_DVR_PARK_INFO struParkInfo; //λϢ + BYTE byRes1[128]; +}NET_DVR_CROSSLINE_ALARM, *LPNET_DVR_CROSSLINE_ALARM; + +typedef struct tagNET_DVR_STREAM_SRC_CFG +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struStreamID; //Ϣ + NET_DVR_STREAM_SRC_INFO struStreamSrcInfo; //ԴϢ +}NET_DVR_STREAM_SRC_CFG,*LPNET_DVR_STREAM_SRC_CFG; + +typedef struct tagNET_DVR_ENCODEINFO +{ + BYTE byFormatType; //װͣ1-2-RTPװ3-PSװ4-TSװ5-˽У6-FLV7-ASF8-3GP, 9-RTP+PS꣺GB281810xff-Ч + BYTE byVideoEncType;//Ƶͣ0-˽2641-׼h2642-׼mpeg47-M-JPEG0xff-Ч + WORD wWidth; //ͼ + WORD wHeight; //ͼ߶ + BYTE byRes1[2]; + DWORD dwVideoBitrate; //Ƶ,λKbps + DWORD dwVideoFrameRate; //֡ʣ200ʾС1֡/״ֵ̬ʾʵֵ֡,200-1/2,201-1/4,202-1/8,203-1/16 + BYTE byAudioEncType;//Ƶͣ0-G7221-G711_U2-G711_A5-MPEG2,6-G7267-AAC,0xff-Ч + BYTE byRes2[15]; +}NET_DVR_ENCODEINFO, *LPNET_DVR_ENCODEINFO; + + +typedef struct tagNET_DVR_TRANSSTATUS +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struStreamInfo;//IDתͨϢ + BYTE byMode;//תģʽ1-ת룬2-ת + BYTE byLinkNums;// + BYTE byPassiveTransMode; //תģʽ0-Ч1-ʵʱ2-ļ + BYTE byRes; + NET_DVR_ADDRESS struDstIPInfo[MAX_LINK];//Ŀתipַ + BYTE byTransResource;//ʹõתԴD1 + BYTE byRes1[15]; + NET_DVR_ENCODEINFO struSrcEncodeInfo;//ԴϢ + NET_DVR_ENCODEINFO struDstEncodeInfo[MAX_LINK /*6*/];//ĿϢ + BYTE byRes2[36]; +}NET_DVR_TRANSSTATUS, *LPNET_DVR_TRANSSTATUS; + +typedef struct tagNET_DVR_TRANSDEVICE_STATUS +{ + DWORD dwSize; + DWORD dwTotalResource;//ȫתԴD1Ϊλ + DWORD dwIdleResource;//ʣתԴD1Ϊλ + BYTE byCpuLoad;//CPU + BYTE byRes[67]; +}NET_DVR_TRANSDEVICE_STATUS, *LPNET_DVR_TRANSDEVICE_STATUS; + +typedef struct tagNET_DVR_DEV_WORK_MODE +{ + DWORD dwSize; + BYTE byWorkMode; //1-ͨģʽ2-IDģʽ + BYTE byDisplayMode; //0-ͨ1- + BYTE byEnableVcaDec; //Ƿܽ룬0-ã0- + BYTE byRes[61]; +}NET_DVR_DEV_WORK_MODE,*LPNET_DVR_DEV_WORK_MODE; + + +typedef struct tagNET_DVR_PASSIVETRANSINFO +{ + DWORD dwSize; + BYTE byStreamType;// ͣ0-1- + BYTE byLinkMode;// 0TCPʽ,1UDPʽ + BYTE byPassiveTransMode; //תģʽ1-ʵʱ2-ļ + BYTE byRes1[5]; + BYTE byDataType;//ͣ1-SDP2-ͷ + BYTE byRes2; + WORD wDataLength;//ݳ + char *pBuffer;// + BYTE byRes3[32]; // +}NET_DVR_PASSIVETRANSINFO, *LPNET_DVR_PASSIVETRANSINFO; + +typedef struct tagNET_DVR_BASEMAP_CONTROL_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿʾ1-ʾ0- + BYTE byBaseMapType; //ͼͣ1-ͼƬͼ2-ͼ3-ͼѵ + BYTE byBaseMapCircleNo; //ͼѵţbyBaseMapTypeΪ3ʱЧ + BYTE byRes1; + DWORD dwBaseMapNo; //ͼţͼΪ1ʱ˲ΪͼƬţͼΪ2ʱ˲Ϊϵͳںţ1ֽھ+1ֽӰ+1ֽں+1ֽڱ + BYTE byRes2[64]; +}NET_DVR_BASEMAP_CONTROL_CFG,*LPNET_DVR_BASEMAP_CONTROL_CFG; + +typedef struct tagNET_DVR_VIRTUAL_SCREEN_CFG +{ + DWORD dwSize; + DWORD dwResolution; //ֱʣMAKE_RESOLUTION궨ֵӵǽȡֵ֧ķֱֵ + BYTE byRes[64]; +}NET_DVR_VIRTUAL_SCREEN_CFG, *LPNET_DVR_VIRTUAL_SCREEN_CFG; + +typedef struct tagNET_DVR_BASEMAP_WINCFG +{ + DWORD dwSize; + BYTE byEnable; + BYTE byWndOperateMode; //ڲģʽ0-ͳһ꣬1-ֱ + BYTE byRes1[6]; + NET_DVR_RECTCFG_EX struWinPosition;//ĿĴ(ʾǽ),ͼڵʼʹСǻ׼ + NET_DVR_RECTCFG_EX struResolution; //ĿĴڷֱ꣬ȡ򰴷ֱЧ + DWORD dwXCoordinate; //LEDϽX꣨ͳһ꣩ȡ򰴷ֱЧ + DWORD dwYCoordinate; //LEDϽY꣨ͳһ꣩ȡ򰴷ֱЧ + BYTE byRes2[36]; +}NET_DVR_BASEMAP_WINCFG, *LPNET_DVR_BASEMAP_WINCFG; + +typedef struct tagNET_DVR_BASEMAP_PIC_INFO +{ + DWORD dwSize; + BYTE sPicName[NAME_LEN];//ͼƬ + BYTE byUsed; //ǷѴڣ0-ڣ1- + BYTE byRes[31]; +}NET_DVR_BASEMAP_PIC_INFO,*LPNET_DVR_BASEMAP_PIC_INFO; + +typedef struct tagNET_DVR_MATRIX_LOGO_INFO +{ + DWORD dwSize; + DWORD dwLogoSize;//LOGOСBMPļͷͼƬСޣ100KߺͿ32ı + BYTE byRes[32]; +}NET_DVR_MATRIX_LOGO_INFO,*LPNET_DVR_MATRIX_LOGO_INFO; + +typedef struct tagNET_DVR_MATRIX_LOGO_CFG +{ + DWORD dwSize; + BYTE byExist; //logoǷڣ0-ڣ1-ڣ˲ֻܻȡ + BYTE byRes1[3]; + DWORD dwLogoSize;//LOGOСBMPļͷ(˲ֻܻȡ) + BYTE byLogoName[NAME_LEN]; //logo + DWORD dwLogoNo; //logoţȡlogoϢʱЧ + BYTE byRes2[28]; +}NET_DVR_MATRIX_LOGO_CFG,*LPNET_DVR_MATRIX_LOGO_CFG; + +typedef struct tagNET_DVR_WIN_LOGO_CFG +{ + DWORD dwSize; + DWORD dwLogoNo; //logo + BYTE byEnable; //logoǷʾ1-ʾ0- + BYTE byRes1[3]; + DWORD dwCoordinateX; //ͼƬʾX + DWORD dwCoordinateY; //ͼƬʾY + BYTE byFlash; //Ƿ˸1-˸0-˸ + BYTE byTranslucent; //Ƿ͸1-͸0-͸ + BYTE byRes2[34]; // +}NET_DVR_WIN_LOGO_CFG,*LPNET_DVR_WIN_LOGO_CFG; + + +typedef struct tagNET_DVR_BIG_SCREEN_AUDIO_CFG +{ + DWORD dwSize; + DWORD dwWinIndex; //ںţ1ʼ0ʾͼ + BYTE byEnable; //ǷƵ1-Ƶ0-رƵ + BYTE byRes[31]; +}NET_DVR_BIG_SCREEN_AUDIO_CFG, *LPNET_DVR_BIG_SCREEN_AUDIO_CFG; + +typedef struct tagNET_DVR_WIN_ZOOM_STATUS +{ + DWORD dwSize; + BYTE byZoomStatus; //0-״̬1-Ŵ״̬ + BYTE byRes1[3]; + NET_DVR_POINT_FRAME struPointFrame; //Ŵ򣬵byZoomStatusΪ1ʱЧ + BYTE byRes2[32]; +}NET_DVR_WIN_ZOOM_STATUS,NET_DVR_WIN_ZOOM_STATUS; + +typedef struct tagNET_DVR_RESUME_INITRACKPOS_CFG +{ + DWORD dwSize; // ṹС + DWORD dwChannel;; // ͨ + BYTE byRes[16]; // ֽ +}NET_DVR_RESUME_INITRACKPOS_CFG,*LPNET_DVR_RESUME_INITRACKPOS_CFG; + +typedef struct tagNet_DVR_TEST_SELFCHECK_RESULT +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE bySelfCheckStatus; //Լ״ֵ̬ 0-δʼ1-ɹ2-ʧܣ3-Լ + BYTE byRes[23]; //ֽ +}NET_DVR_TEST_SELFCHECK_RESULT, *LPNET_DVR_TEST_SELECHECK_RESULT; + + +typedef struct tagNET_DVR_TEST_COMMAND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byTestCommand[MAX_TEST_COMMAND_NUM]; + //0-ʾԣ 1-ʾ + //±0 ϻԳ + //±1 ƽģʽ + //±2 ICRϻԣ0ʾرգ1ʾbit0 ϣ0000_0001(ֻѲϻ)0000_0101ͬʱѲICRϻ0000_0100ֻICRϻ + //±3 -ptԽ״̬0ʾԽδ1ʾԽ + //±4 ɨԳ0ʾرգ1ʾ + //±5 У0ʾرգ1ʾ + WORD wICRIntervalTime;//icrʱ䣨byTestCommand ±2ڵֵΪ1ʱICRؼʱ䣬λ룩 + BYTE byElectronicCompassState;//״̬أ 0- 1- + BYTE byRes1[1]; + float fDeviceTem; //豸о¶ȣȷ0.001 + BYTE byTemp[9]; //ڶ豸 ±0-ȫ 1-4ȫ14sensor 5-8ȫ24sensor,Ŀǰӥȫ + BYTE byRes[3]; //ֽ +}NET_DVR_TEST_COMMAND, *LPNET_DVR_TEST_COMMAND; + +typedef struct tagNET_DVR_AGING_TRICK_SCAN +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byAging; // ʾõIJ Ϊϻǰ߻ϻ󹤾ߣ 0-ϻǰ1-ϻ + BYTE byWriteReadEnalbe; //дָʹܣ0-öָ 1-дָ + BYTE byRes[126]; //ֽ +}NET_DVR_AGING_TRICK_SCAN, *LPNET_DVR_AGING_TRICK_SCAN; + +#define IPC_PARAM_AGING_TRICK_SCAN 0x00000001 //ɨ +typedef struct tagNET_DVR_IPC_PARAM_TYPE +{ + DWORD dwSize; + DWORD dwParamType; //ͣλʾ + // #define IPC_PARAM_AGING_TRICK_SCAN 0x00000001 //ɨ + BYTE byRes[32]; +}NET_DVR_IPC_PARAM_TYPE, *LPNET_DVR_IPC_PARAM_TYPE; + +typedef struct tagNET_DVR_ECCENTRIC_CORRECT_STATE +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byEccentricCorrectState; // ƫĽ״̬0-Уʧܡ1-Уɹ2-У + BYTE byRes[127]; //ֽ +}NET_DVR_ECCENTRIC_CORRECT_STATE, *LPNET_DVR_ECCENTRIC_CORRECT_STATE; + + + +#define MAX_DEVMODULE_NUM 8 +typedef struct tagNET_DVR_TEST_DEVMODULE_CFG +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byDevFanModuleType[MAX_DEVMODULE_NUM]; //Ե豸 + // 0-,1- + // bit0-Է1 + // bit1-Է2 + BYTE byDevHeaterModuleType[MAX_DEVMODULE_NUM]; //Ե豸 + // 0-,1- + // bit0-Լ1 + // bit1-Լ2 + BYTE byRes[22]; //ֽ +}NET_DVR_TEST_DEVMODULE_CFG, *LPNET_DVR_TEST_DEVMODULE_CFG; + +// +typedef struct tagNET_DVR_BARRIERGATE_COND +{ + BYTE byLaneNo;//ţ0-ʾЧֵ(豸ҪЧֵж),1-1 + BYTE byRes[3]; +}NET_DVR_BARRIERGATE_COND,*LPNET_DVR_BARRIERGATE_COND; + +typedef struct tagNET_DVR_VEHICLE_CONTROL +{ + BYTE byGateOperateType;//0-޲,1-բ + BYTE byRes1 ; + WORD wAlarmOperateType;//0-޲,bit0-̵ bit1-ϴ bit3-澯ϴɸѡ(0-ʾأ1-ʾ) + BYTE byRes2[8]; +}NET_DVR_VEHICLE_CONTROL,*LPNET_DVR_VEHICLE_CONTROL; + +typedef struct tagNET_DVR_RELAY_PARAM +{ + BYTE byAccessDevInfo;//0-豸1-բ2-صբ3-ͣբ4-źš5- + BYTE byRes[3]; +}NET_DVR_RELAY_PARAM,*LPNET_DVR_RELAY_PARAM; + +// +typedef struct tagNET_DVR_ENTRANCE_CFG +{ + DWORD dwSize; + BYTE byEnable ;// ʹ0-ʾرգ1-ʾ + BYTE byBarrierGateCtrlMode;//0-Զƣ1-ƽ̨ⲿ + BYTE byRes1[2]; + DWORD dwRelateTriggerMode;//ģʽ οITC_TRIGGERMODE_TYPE + /*0x00: ƥ*/ + /*0x01: ƥ䣨ɫ*/ + /*0x02: ƥ䣨ɫ*/ + /*0x04: ƥ*/ + DWORD dwMatchContent; //쳣,쳣ʽ"" + NET_DVR_RELAY_PARAM struRelayRelateInfo[MAX_RELAY_NUM/*12*/];//̵Ϣ(һ̵ֻܿһ豸) 0ʾ̵1 1ʾ̵2 12 + BYTE byGateSingleIO[MAX_IOIN_NUM/*8*/]; //IOIO0ʾIO11ʾIO2 ; ֵĺ壨0-ޣ1-բλ2-բصλ3- + //Ϣܿ + //0ʾʱõģʽ + //1-ֹģʽ, + //2-ģʽ + NET_DVR_VEHICLE_CONTROL struVehicleCtrl[MAX_VEHICLE_TYPE_NUM/*8*/];//Ϣܿ + BYTE byNotCloseCarFollow;//øբʹܣ0~Ϊã1~ + BYTE byParkingDetectEnabled;//פʹܣ0~Ϊã1~ + BYTE byParkingDetectJudgeTime;//פжʱ䣬λ + BYTE byRes2[61]; +}NET_DVR_ENTRANCE_CFG,*LPNET_DVR_ENTRANCE_CFG; +////////////////////////////ڲ end/////////////////////////////// + +// բ +typedef struct tagNET_DVR_BARRIERGATE_CFG +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byLaneNo; //բţ0-ʾЧֵ(豸ҪЧֵж),1-բ1 + /* + ϵƽ̨֧byUnlockֶΣֶνֵΪ0ͨ0-رյբ,1-բ,2-ֹͣբеκһֲԿɽн + ƽ̨֧byUnlockֶΣbyUnlockֶθֵΪ14~բнbyUnlockֶθֵΪ1󣬡0-رյբ,1-բ,2-ֹͣբڽ + */ + BYTE byBarrierGateCtrl;//0-رյբ,1-բ,2-ֹͣբ 3-բ,4~բ + BYTE byEntranceNo;//ڱ [1,8] + BYTE byUnlock;//ýʹܣ0~Ϊã1~ + BYTE byRes[12]; +}NET_DVR_BARRIERGATE_CFG, *LPNET_DVR_BARRIERGATE_CFG; + +//ͬ +typedef struct tagNET_DVR_VEHICLE_CONTROL_LIST_INFO +{ + DWORD dwSize; + DWORD dwChannel;//ͨ0xff - ȫͨITC Ĭ1 + DWORD dwDataIndex;//ˮţƽ̨άΨһֵͻ˲ʱ򣬸ֵЧֵҪͬ + char sLicense[MAX_LICENSE_LEN]; //ƺ + BYTE byListType;//ԣ0-1-ֹ + BYTE byPlateType; // + BYTE byPlateColor; //ɫ + BYTE byRes[21]; + char sCardNo[MAX_CARDNO_LEN]; // + NET_DVR_TIME_V30 struStartTime;//Чʼʱ + NET_DVR_TIME_V30 struStopTime;//Чʱ + //ƽ̨ͬˮŲظ£ͬͬijһ¼ˣڴ棬02014-03-03 + char sOperateIndex[MAX_OPERATE_INDEX_LEN]; + BYTE byRes1[224]; // ֽ +} NET_DVR_VEHICLE_CONTROL_LIST_INFO,*LPNET_DVR_VEHICLE_CONTROL_LIST_INFO; + +//ȫȡӿ ӻȡ +typedef struct tagNET_DVR_VEHICLE_CONTROL_COND +{ + DWORD dwChannel;//ͨ0xffffffff - ȫͨITC Ĭ1 + DWORD dwOperateType;//ͣVCA_OPERATE _TYPEɸѡ + char sLicense[MAX_LICENSE_LEN];//ƺ + char sCardNo[MAX_CARDNO_LEN]; // + BYTE byListType;//0-1-ֹ0xff-ȫ + //2014-02-25 + BYTE byRes1[3]; + DWORD dwDataIndex;//ˮ + BYTE byRes[116]; +}NET_DVR_VEHICLE_CONTROL_COND,*LPNET_DVR_VEHICLE_CONTROL_COND; + +//Ҫͬ +typedef struct +{ + DWORD dwSize; + DWORD dwDataIndex;//ˮţֵ豸ǰյݵһˮ,ƽ̨ͬʱһˮſʼͬ + char sOperateIndex[MAX_OPERATE_INDEX_LEN]; //ƽ̨ͬˮŲظ£ͬͬijһ¼ˣڴ棬0 2014-03-03 + BYTE byRes[32]; +}NET_DVR_VEHICLE_CONTROL_LIST_DSALARM, *LPNET_DVR_VEHICLE_CONTROL_LIST_DSALARM; + +// +typedef struct tagNET_DVR_VEHICLE_CONTROL_ALARM +{ + DWORD dwSize; + BYTE byListType; //0-1-ֹ2-ʱ + BYTE byPlateType; // + BYTE byPlateColor; //ɫ + BYTE byRes1; + char sLicense[MAX_LICENSE_LEN];//ƺ + char sCardNo[MAX_CARDNO_LEN]; // + NET_DVR_TIME_V30 struAlarmTime; //ʱ + DWORD dwChannel; //豸ͨţֱIPCΪipcͨţDVR\nvr,ΪDVR\NVRͨ + DWORD dwPicDataLen; //ͼƬݴС0ʾͼƬΪ0DZʾͼƬ + BYTE byPicType; //ͼƬͣ0-JPEG + BYTE byPicTransType; //ͼƬݴ䷽ʽ: 0-ƣ1-url + BYTE byRes3[2]; + char *pPicData; + BYTE byRes2[48]; +}NET_DVR_VEHICLE_CONTROL_ALARM,*LPNET_DVR_VEHICLE_CONTROL_ALARM; + +// +typedef struct tagNET_DVR_FIRE_ALARM +{ + DWORD dwSize; + NET_DVR_TIME_V30 struAlarmTime;//ʱ + BYTE byRes[128]; +}NET_DVR_FIRE_ALARM,*LPNET_DVR_FIRE_ALARM; + +//豸ƽֹݿϢ +typedef struct +{ + DWORD dwSize; + DWORD dwDelType;//ɾͣɾͣVCA_OPERATE _TYPEɸѡ + char sLicense[16]; //ƺ + char sCardNo[48]; // + BYTE byPlateType; // + BYTE byPlateColor; //ɫ + BYTE byOperateType; //ɾ(0-ɾ,0xff-ɾȫ) + //2014-02-25 + BYTE byListType;//0-1-ֹ 2014-03-03 + DWORD dwDataIndex;//ˮ + //ƽ̨ͬˮŲظ£ͬͬijһ¼ˣڴ棬02014-03-03 + char sOperateIndex[MAX_OPERATE_INDEX_LEN]; + BYTE byRes[24]; +} NET_DVR_VEHICLE_CONTROL_DELINFO, *LPNET_DVR_VEHICLE_CONTROL_DELINFO; + +//ƹ +typedef struct tagNET_DVR_GATELAMP_INFO +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byLaneNo; //բţ0-ʾЧֵ(豸ҪЧֵж),1-բ1 + BYTE byBrightlampCtrl;//0-رճƣ1- + BYTE byRes[14]; +}NET_DVR_GATELAMP_INFO,*LPNET_DVR_GATELAMP_INFO; + + +//SDI1.0 +#define MATRIX_MAX_OUTPUT_NUM 256 //ͨ +typedef struct tagNET_DVR_MATRIX_BASE_CFG +{ + DWORD dwSize; + DWORD dwValidInputNum; //Чͨ + DWORD dwValidOutputNum; //Чͨ + BYTE byRes[64]; +}NET_DVR_MATRIX_BASE_CFG, *LPNET_DVR_MATRIX_BASE_CFG; + +typedef struct tagNET_DVR_MATRIX_SWITCH_INFO +{ + DWORD dwSize; + DWORD dwInputChan; //ͨţΪ0ʾȡָĹϵ + DWORD dwOutputChan; //Ҫлͨ, (ĻΪĻ(1ֽ豸+1ֽڱ+2ֽĻ)), 0xffffffffʾл + DWORD dwMatrixID; //ID + BYTE byRes[28]; +}NET_DVR_MATRIX_SWITCH_INFO, *LPNET_DVR_MATRIX_SWITCH_INFO; + +typedef struct tagNET_DVR_IO_RELATION_INFO +{ + DWORD dwSize; + DWORD dwIORelation[MATRIX_MAX_OUTPUT_NUM]; //ͨͨ, dwIORelation[i] = jʾͨ(i + 1)ͨj, + //dwIORelation[i] = 0ʾͨi + 1δͨ + BYTE byRes[256]; +}NET_DVR_IO_RELATION_INFO, *LPNET_DVR_IO_RELATION_INFO; + + +//ӿ +typedef struct tagNET_DVR_EXTERNAL_DEVCOND +{ + DWORD dwSize; + BYTE byExternalDevTpye;//0-()1-Զͷ豸2-ڿƻ3-led 0xff-ȫϢӻȡʱʹã + BYTE byRelativeIndex;//0-()(ڽ) Χ 1~8 LedΧǣ1255 0xff-ȫϢӻȡʱʹã + // BYTE byLaneID;// ߼ + BYTE byRes[30]; +}NET_DVR_EXTERNAL_DEVCOND,*LPNET_DVR_EXTERNAL_DEVCOND; + +typedef struct tagNET_DVR_EXTERNAL_DEVCFG +{ + DWORD dwSize; + BYTE byExternalDevTpye;//0-1-Զͷ豸2-ڿƻ3-led + BYTE byRes2[3]; + char sDevName[MAX_DEVNAME_LEN]; + union + { + BYTE byUnionLen[656]; + struct + { + NET_DVR_IPADDR struDevIP;//DEV IPַ 144 + WORD wDevPort;//豸˿ + BYTE byRes[510]; + }struRrReader;//Զͷ豸 + struct + { + BYTE byRs485No; //RS485(豸һñſظͲһñŻ) + BYTE byDevCtrlCode;//ַ豸(1-255) + BYTE byAutoIssuedData;//ǷԶ·Ƭ 0-Զ·1-Զ· + BYTE byOfflineDetEnable;//߼ 0-رգ1- + BYTE byDetCycle;//ڣ060 λ s + BYTE byRes[651]; + }struGateway;//ڿƻ + struct + { + BYTE byExternalMode;//0-RS485,1- + BYTE byRes[3]; + NET_DVR_IPADDR struDevIP;//DEV IPַ 144 (byExternalMode == 1 ʱЧ) + WORD wDevPort;//豸˿(byExternalMode == 1 ʱЧ) + BYTE byRs485No; //RS485(豸һñſظͲһñŻ) + BYTE byDevCtrlCode;//ַ豸(1-255) + //ledͨƿʾģͬĿƿֵ֧ʾʽͬ + BYTE byCtrlCardType;//ƿ 0-(Чֵ) 1- EQ2013 + BYTE byLedScreenType;// 0-ɫ 1-˫ɫ + BYTE byLedScreenUse;//;0- 1-λ 2-ʾ 3-շ + BYTE byLedDisplayMode;//Ļʾʽ: 1 "ʾ", 2 "" ,3 "" ,4 "", 5 "" + char sLedCustomInfo[MAX_LED_INFO];//ĻʾϢ + //ledɿƿƵģledԸĿʵʹøСʱҪն֪ͨƿĿǰʹõ + DWORD dwLedScreenH;//ʾɸ߶ҪLED + DWORD dwLedScreenW;//ʾɿҪLED + BYTE byRes1[236]; + }struLed;//led + }uExternalDevInfo; //byExternalMode ֵĸЧ + BYTE byRes[128]; +}NET_DVR_EXTERNAL_DEVCFG, *LPNET_DVR_EXTERNAL_DEVCFG; + +//ӻȡ +typedef struct tagNET_DVR_EXTERNAL_DEVSTATUS//Զͷ豸 +{ + DWORD dwSize; + char sDevName[MAX_DEVNAME_LEN];//豸 + BYTE byExternalDevTpye;//0-()1-Զͷ豸2-ڿƻ3-led 0xff-ȫϢӻȡʱʹã + BYTE byRelativeIndex;//0-()(ڽ) Χ 1~8 0xff-ȫϢӻȡʱʹã + BYTE byOnline;//0-ߣ1- + BYTE byRes[125]; +}NET_DVR_EXTERNAL_DEVSTATUS,*LPNET_DVR_EXTERNAL_DEVSTATUS; + +//ն˳ڼ +typedef struct tagNET_DVR_ENTRANCEDET_CFG +{ + DWORD dwSize; //ṹ + //߼⿪ʱ⵽豸ߣնƥ俨ƬϢ͵բָڿƻɳڿƻƥƵբ + BYTE byOfflineDetEnable;//߼ 0-رգ1- + BYTE byDetCycle;//ڣ060 λ s + BYTE byDevCtrlCode;//ڿƻַ豸(1-255) + BYTE byRes[61]; +}NET_DVR_ENTRANCEDET_CFG,*LPNET_DVR_ENTRANCEDET_CFG; + +//ն˳ڿ(ƽӿ ·ƬϢ) +typedef struct tagNET_DVR_ENTRANCEDEV_COMMAND +{ + DWORD dwSize; //ṹ + BYTE byDevCtrlCode;//ڿƻַ豸(1-255) + BYTE byManualIssuedData;//ֶ· 0-رգ1- + BYTE byRes[62]; +}NET_DVR_ENTRANCEDEV_COMMAND,*LPNET_DVR_ENTRANCEDEV_COMMAND; + +//ն˳ڿ(ƽӿ ·ƬϢ) +typedef struct tagNET_DVR_ENISSUED_DATADEL +{ + DWORD dwSize; //ṹ + BYTE byDevCtrlCode;//ڿƻַ豸(1-255) + BYTE byRes[27]; +}NET_DVR_ENISSUED_DATADEL,*LPNET_DVR_ENISSUED_DATADEL; + +//ڹշϸʽ +typedef struct _tagNET_ITS_PASSVEHICLE_COST_ITEM +{ + DWORD dwSize; //ṹ + DWORD dwPassVehicleID; //ݵĹ + BYTE byIntime[MAX_TIME_LEN]; //볡ʱʽΪyyyymmddhh24missfff + BYTE byOuttime[MAX_TIME_LEN]; //ʱʽΪyyyymmddhh24missfff + BYTE byCardNo[MAX_CARD_LEN]; // + BYTE byPlateInfo[MAX_LICENSE_LEN]; //ƺ + float fPayCost; //շѽ(λԪ) + BYTE byOperatorName[MAX_OPERATORNAME_LEN]; //Ա + BYTE byVehicleType; // 0-Сͳ 2 ͳ + BYTE byRes1[3]; //Ԥֶ1 + DWORD dwPayRuleID; // շѹˮ + DWORD dwFreeRuleID; // ˮ + BYTE byRes2[256]; // Ԥֶ2 +}NET_ITS_PASSVEHICLE_COST_ITEM, *LPNET_ITS_PASSVEHICLE_COST_ITEM; + +//ڽӰݣʽ +typedef struct _tagNET_ITS_HANDOVER_INFO +{ + DWORD dwSize; //ṹ + BYTE byOperatorName[MAX_OPERATORNAME_LEN]; //Ա + BYTE byOperatorCard[MAX_CARD_LEN]; //Ա + BYTE byStartTime[MAX_TIME_LEN];//ϰʱʽyyyymmddhh24miss + BYTE byEndTime[MAX_TIME_LEN]; //°ʱʽyyyymmddhh24miss + float fTotal_Pay; //ϰڼܵշѽ(λԪ) + DWORD dwTotal_Records; //ϰڼܵĹշѵļ¼ + BYTE byRes[64]; //Ԥ +}NET_ITS_HANDOVER_INFO, *LPNET_ITS_HANDOVER_INFO; + + +typedef struct tagNET_DVR_CURTRIGGERMODE //(3.7Ver) +{ + DWORD dwSize; + DWORD dwTriggerType; //ͣITC_TRIGGERMODE_TYPE + BYTE byRes[24]; +}NET_DVR_CURTRIGGERMODE, *LPNET_DVR_CURTRIGGERMODE; + + + +typedef struct tagNET_DVR_TEMP_HUMI +{ + DWORD dwSize; // ݳ && 汾ںչ + DWORD dwChannel; // ͨţĬ1 + int iHumidity; // ʪȣ֣val/1000С֣val%1000 + int iTemp; // ¶ȣ֣val/1000С֣val%100 + BYTE byRes[8]; // ֽ +}NET_DVR_TEMP_HUMI, *LPNET_DVR_TEMP_HUMI; + + +typedef struct tagNET_DVR_ALARMSOUNDMODE_CFG +{ + DWORD dwSize; // ݳ && 汾ںչ + DWORD dwChannel; // ͨţĬ1 + DWORD dwSoundMode; // ģʽ: 0ģʽ1ģʽ2ģʽ + BYTE byRes[12]; // ֽ +}NET_DVR_ALARMSOUNDMODE_CFG, *LPNET_DVR_ALARMSOUNDMODE_CFG; + +typedef struct tagNET_DVR_SECURITYMODE +{ + DWORD dwSize;// ݳ && 汾ںչ + DWORD dwChannel; // ͨţĬ1 + DWORD dwMode; // ȫģʽ: 1ãܣ2ã + char szRandCode[6]; //豸"֤" + BYTE byRes[6]; // ֽ +}NET_DVR_SECURITYMODE, *LPNET_DVR_SECURITYMODE; + +typedef struct tagNET_DVR_MOBILE_CAPTUREPIC_CFG +{ + DWORD dwSize; + BYTE byPreviewFpsAdjMode; /* Ԥ֡ʵģʽ:0-ڣ׼֡Ԥ,1-׼֡Ԥ,2-GPSٶȽ֡ʵ */ + BYTE bySelPeccType; /* ǷѡΥ */ + BYTE byOptHabit; /* ȡ֤ϰ, 0:ȡ֤;1:̰ȡ֤ */ + BYTE byEnablePeccRec; /* 1: ʹΥ¼ץȡ, 0: ֹΥ¼ץȡ */ + BYTE byPicSize; /*0=CIF,1=QCIF,2=D1,3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6-VGA7-XVGA8-HD900p9-HD108010-2560*192011-1600*30412-2048*153613-2448*2048,14-2448*120015-2448*80016-XGA(1024*768)17-SXGA(1280*1024),18-WD1(960*576/960*480),19-1080i */ + BYTE byPicQuality; /* ͼƬϵ 0- 1-Ϻ 2-һ */ + BYTE byRes[62]; +}NET_DVR_MOBILE_CAPTUREPIC_CFG,*LPNET_DVR_MOBILE_CAPTUREPIC_CFG; + +typedef struct tagNET_DVR_CMS_PARAM +{ + DWORD dwSize; + NET_DVR_IPADDR struAddr; // ƽ̨IP + WORD wServerPort; // ƽ̨˿ڣ + BYTE bySeverProtocolType; //ƽ̨Э 1-˽У2-Ehome + BYTE byStatus; //豸עᵽƽ̨״̬1-δעᣬ2-ע + BYTE sDeviceId[NAME_LEN/*32*/]; //豸IDƽ̨ṩ + char sPassWord[PASSWD_LEN]; // + /********* IPC5.1.7 Begin 2014-03-21***********/ + BYTE sPlatformEhomeVersion[NAME_LEN];//ƽ̨EHOMEЭ汾 + /********* IPC5.1.7 end 2014-03-21***********/ + BYTE byNetWork; //ͣ0- 壬1-Զ2-ȣ3-磬4-3G磨磩5-16-2 + BYTE byAddressType; //0 - , 1 - ipv4/ipv6ַ2 - + BYTE byProtocolVersion; //Э汾 0 - , 1 C v2.02 C v4.0,3-v2.6 + BYTE byRes1; + BYTE sDomainName[MAX_DOMAIN_NAME/*64*/]; //ƽ̨byAddressTypeΪ2ʱЧ + BYTE byEnable; //0-رգ1- + BYTE byRes[139]; // ֽ +}NET_DVR_CMS_PARAM, *LPNET_DVR_CMS_PARAM; + +//ṹ +typedef struct tagNET_DVR_HEATMAP_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byDetSceneID;//ⳡ[1],ǰ֧1, IPCĬ0 + BYTE byRes[63]; +}NET_DVR_HEATMAP_COND, *LPNET_DVR_HEATMAP_COND; + +typedef struct tagNET_DVR_HEATMAP_PARAM +{ + BYTE byTargetTrackEnable;//Ŀ꣺0-رգ1-Ĭ0-ر + BYTE bySensitivity; //ȲΧ1-100Ĭ50 + BYTE byBackgroundUpdateRate;//ٶȣΧ1-100Ĭ50 + BYTE bySceneChangeLevel;//仯ȼΧ1-100Ĭ50 + BYTE byMinTargetSize;//СĿߴ磺Χ1-100Ĭ50 + /* + 0- ĬϴͣCOMM_UPLOAD_HEATMAP_RESULT + 1- ϴͣCOMM_UPLOAD_HEATMAP_RESULT_PDC COMM_UPLOAD_HEATMAP_RESULT_DURATION + */ + BYTE byUploadHeatMapResultType; + BYTE byDayReport; + BYTE byWeekReport; + float fConfidence;//Ŷ[0.00,100.00] + BYTE byMonthReport; + BYTE byYearReport; + BYTE byRes[6]; +}NET_DVR_HEATMAP_PARAM, *LPNET_DVR_HEATMAP_PARAM; + +#define MAX_HEATMAPREGION_NUM 8 + +//ȶͼýṹ +typedef struct tagNET_DVR_HEATMAP_CFG +{ + DWORD dwSize; + BYTE byEnable; //ʹܣǷ + BYTE byRes[3]; + NET_VCA_POLYGON struRegion[MAX_HEATMAPREGION_NUM/*8*/];//Χ + NET_DVR_HEATMAP_PARAM struHeatMap ; + NET_DVR_HANDLEEXCEPTION_V40 struHandleException; //쳣ʽ + //ʱ + NET_DVR_SCHEDTIME struAlarmSched[MAX_DAYS/*7*/][MAX_TIMESEGMENT_V30/*8*/]; + BYTE byRes1[512]; +}NET_DVR_HEATMAP_CFG, *LPNET_DVR_HEATMAP_CFG; + +//ȶͼϴ +typedef struct tagNET_DVR_HEATMAP_RESULT +{ + DWORD dwSize; + NET_VCA_DEV_INFO struDevInfo;/*豸Ϣ*/ + NET_DVR_TIME_EX struStartTime;/*ʼʱ*/ + NET_DVR_TIME_EX struEndTime;/*ʱ*/ + DWORD dwMaxHeatMapValue;//ȶֵ + DWORD dwMinHeatMapValue;//Сȶֵ + DWORD dwTimeHeatMapValue;// (ʱȶֵ)ƽȶֵ + WORD wArrayLine;//ͼƬصֵ + WORD wArrayColumn;//ͼƬصֵ ֵΪ0ʱصֵڴϢڣ + BYTE* pBuffer; //ȶͼƬصϢ + BYTE byDetSceneID;//ⳡ[1],ǰ֧1, IPCĬ0 + BYTE byBrokenNetHttp; //־λ0-شݣ1-ش + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byTimeDiffFlag; /*ʱֶǷЧ 0-ʱЧ 1-ʱЧ */ + char cStartTimeDifferenceH; /*ʼʱUTCʱСʱ-12 ... +14+ʾ*/ + char cStartTimeDifferenceM; /*ʼʱUTCʱӣ-30, 30, 45+ʾ*/ + char cStopTimeDifferenceH; /*ʱUTCʱСʱ-12 ... +14 +ʾ*/ + char cStopTimeDifferenceM; /*ʱUTCʱӣ-30, 30, 45+ʾ*/ + BYTE byArrayUnitType; //ԪͣϢÿصݵͣ1-byte2-short,4-int + BYTE byRes1[2]; + DWORD dwTotalTime;//ͣʱܺͣλ룬Աͣʱ䱨ʱϴ + BYTE byRes[112]; +}NET_DVR_HEATMAP_RESULT,*LPNET_DVR_HEATMAP_RESULT; + +//ȶͼ ṹ +typedef struct tagNET_DVR_HEATMAP_QUERY_COND +{ + DWORD dwSize; + DWORD dwChannel ;//ͨ + NET_DVR_TIME_EX struStartTime;/*ʼʱ*/ + NET_DVR_TIME_EX struEndTime;/*ʱ*/ + BYTE byReportType;//0-Чֵ1-ձ2-ܱ3-±4-걨 + BYTE byDetSceneID;//ⳡ[1],ǰ֧1, IPCĬ0 + BYTE byHeatMapInfoType;//0~ȡռȶͼƬʽ1~ȡռȶȾϢʽ2~ȡռȶͼƬͿռȶȾϢ + BYTE byStatisticalModel;//ͳģʽ 0s-Ĭϣ1-ͣʱ䣬2-ͳƣ + BYTE byRes[124]; +}NET_DVR_HEATMAP_QUERY_COND,*LPNET_DVR_HEATMAP_QUERY_COND; + +//ȶͼ +typedef struct tagNET_DVR_HEATMAP_INFO +{ + DWORD dwSize; + NET_DVR_TIME_EX struStartTime;/*ʼʱ*/ + NET_DVR_TIME_EX struEndTime; /*ʱ*/ + DWORD dwHeatMapPicLen; /*ռȶͼƬ(ͼƬʱ򣬸ֶΪ0ûͼƬʱ򣬸ֶΪ0)*/ + BYTE* pBuffer; //ȶͼƬϢ + DWORD dwTimeHeatMapValue ; //ʱȶֵ(пȶͼʱ,ֶβҪֵ) + DWORD dwHeatMapMaxValue;//ȶȵԱʱ(s)(ռȶͼʱЧ) + DWORD dwHeatMapMinValue;//ȶȵԱʱ(s) (ռȶͼʱЧ) + WORD wArrayLine;//ͼƬصֵ ϴȶȾϢʱЧ + WORD wArrayColumn;//ͼƬصֵ ֵΪ0ʱصֵڴϢڣϴȶȾϢʱЧ + BYTE* pArrayBuffer;//ȶȾϢݵ͸ϢΪwArrayLine* wArrayColumn*ԪͳȣbyArrayUnitTypeΪ1ʾΪintͣҪ4ֽڣ + BYTE byArrayUnitType;//ԪͣϢÿصݵͣ0~byte1~int(豸зؾϢʱЧ) + BYTE byRes[107]; +}NET_DVR_HEATMAP_INFO,*LPNET_DVR_HEATMAP_INFO; + + +typedef struct tagNET_DVR_PDC_QUERY_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + NET_DVR_TIME_EX struStartTime; //ʼʱ + NET_DVR_TIME_EX struEndTime; //ʱ + BYTE byReportType; //0-Чֵ1-ձ2-ܱ3-±4-걨 + BYTE byEnableProgramStatistics; //Ƿ񰴽Ŀͳƣ0-1- + BYTE byTriggerPeopleCountingData;//ͳݵʹ, 0-1- + BYTE byMultiChannelSearch;//ͨѯʹ, 0-1-ǣpSearchChannel dwSearchChannelNumЧ + DWORD dwPlayScheduleNo; //Ŀͳʱճ̺ + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cStartTimeDifferenceH; //ʼʱUTCʱСʱ-12 ... +14 ʾʱ + char cStartTimeDifferenceM; //ʼʱUTCʱӣ-30, 0, 30, 45ʾʱ + char cStopTimeDifferenceH; //ʱUTCʱСʱ-12 ... +14ʾʱ + char cStopTimeDifferenceM; //ʱUTCʱӣ-30, 0, 30, 45ʾʱ + BYTE byRes1[3]; + DWORD dwSearchChannelNum; //ѯͨĿ + char* pSearchChannel; //ѯͨţСΪsizeof(DWORD)* dwSearchChannelNum + BYTE byChild;//ֻͯ, 0-1- + BYTE byMinTimeInterva;// Сʱ,0-Ч1-15, 2-30, 3һСʱ, 4-, 5-, 6- + BYTE byStatisticType;//ͳͣ0-Чֵ1-2-뿪3-ȫ,4-뿪ظ,5-(Ҫ·ֵ֧),0-Чֵʾͳ͵ѯ൱ڱֽڡȫʾͳΪ뿪 + BYTE byFaceExpression;//μFACE_EXPRESSION_GROUP_ENUM + BYTE byGender;//Ա1-У2-Ů3-ȫ0xff-㷨֧֣ûʶ + BYTE byMask;//Ƿ 0-ʾδ֪㷨֧֣1-2-3-ȫ0xff-㷨ֵ֧ģûʶ + BYTE byGroup;// + BYTE byGlasses; /*Ƿ۾0-δ֪1-ǣ2-3-ī, 4 - ȫ, 0xff-㷨֧֣ûʶ*/ + BYTE byRes[96]; +}NET_DVR_PDC_QUERY_COND,*LPNET_DVR_PDC_QUERY_COND; + +typedef struct tagNET_DVR_PROGRAM_INFO +{ + DWORD dwProgramNo; //Ŀ + BYTE sProgramName[NAME_LEN]; //Ŀ + BYTE byRes[16]; +}NET_DVR_PROGRAM_INFO, *LPNET_DVR_PROGRAM_INFO; +typedef struct tagNET_DVR_POSINFO_OVERLAY +{ + DWORD dwSize; + BYTE byEnable;// PosϢӣ0-ӣ1- + BYTE byBackpackEnanble;//ǷӱϢǷӣ0-ӣ1- + BYTE bySexEnanble;//ǷԱϢǷӣ0-ӣ1- + BYTE byCarryEnanble;//ǷණϢǷӣ0-ӣ1- + BYTE byRideEnanble;//ǷﳵϢǷӣ0-ӣ1- + BYTE byMaskEnanble;//ǷӴϢǷӣ0-ӣ1- + BYTE byHatEnanble;//ǷӴñϢǷӣ0-ӣ1- + BYTE bySleeveEnanble;//Ƿӳ0-ӣ1- + BYTE byPantsTypeEnanble;//ǷӿϢǷӣ0-ӣ1- + BYTE byHairEnanble;//Ƿӳ̷ϢǷӣ0-ӣ1- + BYTE byGlassesEnanble;//ǷӴ۾ϢǷӣ0-ӣ1- + BYTE byResEnanble;//ǷϢǷӣ0-ӣ1- + BYTE byHeightEnanble;//ǷϢǷӣ0-ӣ1- + BYTE byRes[511]; +}NET_DVR_POSINFO_OVERLAY, *LPNET_DVR_POSINFO_OVERLAY; + +typedef struct tagNET_DVR_PDC_RESULT +{ + DWORD dwSize; + NET_DVR_TIME_EX struStartTime;/*ʼʱ*/ + NET_DVR_TIME_EX struEndTime;/*ʱ*/ + DWORD dwEnterNum; // + DWORD dwLeaveNum; //뿪 + NET_DVR_PROGRAM_INFO struProgramInfo; //ĿϢ + DWORD dwPeoplePassing; // + BYTE byRes1[8]; //ֽ + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cStartTimeDifferenceH; //ʼʱUTCʱСʱ-12 ... +14 ʾʱ + char cStartTimeDifferenceM; //ʼʱUTCʱӣ-30, 0, 30, 45ʾʱ + char cStopTimeDifferenceH; //ʱUTCʱСʱ-12 ... +14ʾʱ + char cStopTimeDifferenceM; //ʱUTCʱӣ-30, 0, 30, 45ʾʱ + BYTE byRes3[3]; //ֽ + DWORD dwDuplicatePeople; // ظ + DWORD dwExpressionUnknown; //δ֪ + DWORD dwPokerFace; // + DWORD dwHappy; // + DWORD dwSurprised; //龪 + DWORD dwDisgusted; // + DWORD dwSad; //ѹ + DWORD dwAngry; //ŭ + DWORD dwContemptuous; // + DWORD dwPanic; //麦 + DWORD dwGenderUnknown; //Աδ֪ + DWORD dwFemale; //ԱŮ + DWORD dwMale; //Ա + DWORD dwMaskUnknown; //δ֪ + DWORD dwMaskYes; // + DWORD dwMaskNo; // + DWORD dwGlassUnknown; //۾δ֪ + DWORD dwGlassYes; //۾ + DWORD dwGlassNo; //۾ + DWORD dwSunglasses; //ī + BYTE byRes[104]; +}NET_DVR_PDC_RESULT, *LPNET_DVR_PDC_RESULT; + + +typedef struct tagNET_DVR_MOBILE_PLATE_RECOGCFG +{ + DWORD dwSize; + BYTE byDefaultCHN[MAX_CHJC_NUM]; /*豸ʡݵĺּд 3 */ + BYTE byTimeOsd;// ʱϢ 0 - ӣ 1- + BYTE byRecogResultOsd;//ʶ 0 - ӣ 1- + BYTE byRecogHint;//ʶɹʾ 0 - ʾ 1- ʾ + BYTE byRecogDir;//ʶ 0: , 1: + BYTE byRecogEnv;//ʶ𻷾 0: , 1: + BYTE byRecogPlateType;//0-Сʶ1-ʶ + BYTE byUploadPlate;//Ƿϴ 0 -ϴ 1-ϴ + BYTE byRes[62]; +}NET_DVR_MOBILE_PLATE_RECOGCFG,*LPNET_DVR_MOBILE_PLATE_RECOGCFG; + +typedef struct tagNET_DVR_MOBILE_RADAR_CFG +{ + DWORD dwSize; + BYTE byEnableRadar; /* 0:״ 1:״ */ + BYTE byEnableAlarm; /* 0: 1: */ + WORD wOverSpeed; /* ΧΪ20~250 */ + BYTE bySpeedUnits; /* 0:/Сʱ 1:Ӣ/Сʱ */ + BYTE bydirection; /* 0:״복 1:״복 */ + BYTE byMeasureMode; /* 0:̬ (״״̬) 1:̬ (״״̬)*/ + BYTE byTargetType; /* 0:(״ٳ) 1:(״ٳ)*/ + BYTE bySensitivity; /* [0,100] */ + BYTE byCaptureNum; /* ץ[0,255] */ + BYTE byUploadPlate; /*ǷϴץͼƬ 0-ϴ1-ϴ*/ + BYTE byRes[61]; +}NET_DVR_MOBILE_RADAR_CFG,*LPNET_DVR_MOBILE_RADAR_CFG; + +typedef struct tagNET_DVR_MOBILE_LOCALPLATECHK_CFG +{ + DWORD dwSize; + BYTE byCheck; /* Ƿнֹ 0-飬1-*/ + BYTE byCheckAlarm;/* ɹ 0-1-*/ + BYTE byCheckHint; /* ɹʾ (ʾ) 0-ʾ1-ʾ*/ + BYTE byUploadUnlicensedCar; /*ǷϴǷϢ 0-ϴ1-ϴ*/ + BYTE byRes[64]; +}NET_DVR_MOBILE_LOCALPLATECHK_CFG,*LPNET_DVR_MOBILE_LOCALPLATECHK_CFG; + +typedef struct tagNET_DVR_VEHICLE_CHECK +{ + DWORD dwSize; + DWORD dwChannel;//ͨ0xff - ȫͨĬ1,һͨ + NET_DVR_PLATE_INFO struPlateInfo; //Ϣ + WORD wIllegalType; //ΥͲù궨 ο + BYTE byRes[2]; + char sIllegalTypeInfo[128];// ΥϢ128 + NET_DVR_TIME_V30 struIllegalTime;//Υʱ + BYTE byIllegalVehicleNum;//Υ + BYTE byRes1[3]; + char sCustomInfo[64];//ԶϢ + BYTE byRes2[128]; // ֽ +}NET_DVR_VEHICLE_CHECK,*LPNET_DVR_VEHICLE_CHECK; + +typedef enum _LONG_CFG_SEND_DATA_TYPE_ENUM_ +{ + ENUM_DVR_VEHICLE_CHECK = 1, //ֹݻ + ENUM_MSC_SEND_DATA = 2, //Ļ + ENUM_ACS_SEND_DATA = 3, //Ž + ENUM_TME_CARD_SEND_DATA = 4, //ͣ(ڿƻ)Ƭ + ENUM_TME_VEHICLE_SEND_DATA = 5, //ͣ(ڿƻ) + ENUM_DVR_DEBUG_CMD = 6, //Ϣ + ENUM_DVR_SCREEN_CTRL_CMD =7, //Ļ + ENUM_CVR_PASSBACK_SEND_DATA = 8, //CVRȡشִ + ENUM_ACS_INTELLIGENT_IDENTITY_DATA = 9, //ʶն + ENUM_VIDEO_INTERCOM_SEND_DATA = 10, //ӶԽ + ENUM_SEND_JSON_DATA = 11 //͸JSON +}LONG_CFG_SEND_DATA_TYPE_ENUM; + +typedef enum _LONG_CFG_RECV_DATA_TYPE_ENUM_ +{ + ENUM_DVR_ERROR_CODE = 1, // + ENUM_MSC_RECV_DATA=2, //Ļ + ENUM_ACS_RECV_DATA=3 //Ž +}LONG_CFG_RECV_DATA_TYPE_ENUM; + +typedef struct tagNET_DVR_WIPER_CONTINUEWORK_PARAM +{ + BYTE byWorkTimeInterval;//ʱλ룩[2s~60s] + BYTE byRes[3]; + DWORD dwContinueWorkTime;//ʱ䣨λ룩[2min~24h]ʾӵλ + BYTE byRes1[8]; +}NET_DVR_WIPER_CONTINUEWORK_PARAM,*LPNET_DVR_WIPER_CONTINUEWORK_PARAM; + +typedef union tagNET_DVR_WIPERMODE_PARAM_UNION +{ + BYTE uLen[16]; + //byWiperWorkMode = 1ʱЧ + NET_DVR_WIPER_CONTINUEWORK_PARAM struWiperContinueWorkParam; +}NET_DVR_WIPERMODE_PARAM_UNION,*LPNET_DVR_WIPERMODE_PARAM_UNION; + +typedef struct tagNET_DVR_WIPERINFO_CFG +{ + DWORD dwSize; + //ˢģʽ + //0-ģʽ1-ģʽýṹNET_DVR_ROTATE_OPERATE_PARAM2-ģʽ0xff-ر + BYTE byWiperWorkMode; + BYTE byRes1; + WORD wSensitivity;// + BYTE byRes[20]; + NET_DVR_WIPERMODE_PARAM_UNION ustruWiperModeParam; +}NET_DVR_WIPERINFO_CFG,*LPNET_DVR_WIPERINFO_CFG; + +//ԶԽ +typedef struct tagNET_DVR_AUTOFOCUS_TESTCFG +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byRes[24]; // ֽ +}NET_DVR_AUTOFOCUS_TESTCFG,*LPNET_DVR_AUTOFOCUS_TESTCFG; + + +typedef struct tagNET_DVR_VIDEO_OUT_CFG +{ + BYTE byDisplayMode; //ʾģʽ1-׼2-ɫ3-ůɫ0xff-Զ + BYTE byBrightnessLevel; // ֵ0-100 + BYTE byContrastLevel; // Աȶ0-100 + BYTE bySharpnessLevel; // 0-100 + BYTE bySaturationLevel; // Ͷ0-100 + BYTE byHueLevel; // ɫ0-100 + BYTE byImageMode; // ͼģʽ0-ģʽ1-ҹģʽ12-ҹģʽ23-ҹģʽ34-ģʽ15-ģʽ26-ģʽ3 + BYTE byRes[5]; // +}NET_DVR_VIDEO_OUT_CFG, *LPNET_DVR_VIDEO_OUT_CFG; +//ɫ +typedef struct tagNET_DVR_COLOR_TEMPERATURE_CFG +{ + BYTE byRed; //ɫ 0-100 + BYTE byGreen; //ɫ 0-100 + BYTE byBlue; //ɫ0-100 + BYTE byRedOffset; //ɫƫƣ0-100 + BYTE byGreenOffset; //ɫƫƣ0-100 + BYTE byBlueOffset; //ɫƫƣ0-100 + BYTE byRes[6]; +}NET_DVR_COLOR_TEMPERATURE_CFG, *LPNET_DVR_COLOR_TEMPERATURE_CFG; + +typedef struct tagNET_DVR_ADC_CFG +{ + BYTE byGainR; //R 0-100 + BYTE byGainG; //G0-100 + BYTE byGainB; //B0-100 + BYTE byOffsetR; //ƫR0-100 + BYTE byOffsetG; //ƫG0-100 + BYTE byOffsetB; //ƫB0-100 + BYTE byRes[6]; +}NET_DVR_ADC_CFG, *LPNET_DVR_ADC_CFG; + +typedef struct tagNET_DVR_SCREEN_EDGE_CFG +{ + BYTE byEnable; //ǷĻԵ 0- 1- + BYTE byLeftEdge; //Ե0-100 + BYTE byRightEdge; //ұԵ0-100 + BYTE byTopEdge; //ϱԵ0-100 + BYTE byLowerEdge; //±Ե0-100 + BYTE byRes[7]; +}NET_DVR_SCREEN_EDGE_CFG, *LPNET_DVR_SCREEN_EDGE_CFG; + +typedef struct tagNET_DVR_SCREEN_DISPLAY_CFG +{ + DWORD dwSize; + BYTE byCfgType; /*õIJͣȡʱ˲Ч0-Ч1-2-Ƶ3-ɫ²4-ADC5-ĻԵ*/ + BYTE byBackLight; // 0~100 + BYTE byRes1[2]; + NET_DVR_VIDEO_OUT_CFG struVideoOutCfg; //Ƶģʽ + NET_DVR_COLOR_TEMPERATURE_CFG struColorTempCfg; //ɫ² + NET_DVR_ADC_CFG struAdcCfg; //ADC + NET_DVR_SCREEN_EDGE_CFG struScreenEdgeCfg; //ĻԵ + BYTE byRes[32]; +}NET_DVR_SCREEN_DISPLAY_CFG, *LPNET_DVR_SCREEN_DISPLAY_CFG; +//ģң +typedef enum tagNET_DVR_SCREEN_REMOTE_CTRL_TYPE +{ + REMOTE_CTRL_POWERSUPPLY_OPEN = 1,//1-Դ + REMOTE_CTRL_POWERSUPPLY_CLOSE = 2,//2-Դ + REMOTE_CTRL_SIGNALSOURCE,//3-źԴ + REMOTE_CTRL_MENU,//4-˵ + REMOTE_CTRL_DETERMINATION,//5-ȷ + REMOTE_CTRL_ON,//6- + REMOTE_CTRL_UNDER,//7- + REMOTE_CTRL_LEFT,//8- + REMOTE_CTRL_RIGHT,//9- + REMOTE_CTRL_INFO,//10-INFO + REMOTE_CTRL_RETURN,// 11-һ + REMOTE_CTRL_NUM, //12-ּ +}SCREEN_REMOTE_CTRL_TYPE; + +//ģңذ +typedef struct tagNET_DVR_SIMULATE_SCREEN_REMOTE_CTRL +{ + DWORD dwSize; + BYTE byControlType; //1-Դ2-Դأ3-źԴ4-˵5-ȷ6-ϣ7-£8-9-, 10-INFO, 11-һ,12-ְ,13-һ尴 + BYTE byControlParam; //Ϊ12ʱʾֵ0-9ʱ˲Ч + BYTE byRes[14]; +}NET_DVR_SIMULATE_SCREEN_REMOTE_CTRL,*LPNET_DVR_SIMULATE_SCREEN_REMOTE_CTRL; + +//ĻźԴ +typedef struct tagNET_DVR_SCREEN_SIGNAL_CFG +{ + DWORD dwSize; + BYTE bySignalSourceType; //Դö NET_DVR_CAM_MODE + BYTE byNoSignalPic; //źŻģʽ1-2-3-LOGO + BYTE byRes[14]; +}NET_DVR_SCREEN_SIGNAL_CFG, *LPNET_DVR_SCREEN_SIGNAL_CFG; + +//Ļƴ +typedef struct tagNET_DVRSCREEN_SPLICE_CFG +{ + DWORD dwSize; + BYTE bySpliceIndex; //ƴţ0ûƴӣֵʾƴšƴ0101~020244bySpliceIndexͬҷ0. + BYTE bySpliceX; //Ļƴеλ + BYTE bySpliceY; //Ļƴеλ + BYTE byWidth; //ƴӹģĻΪλ + BYTE byHeight; //ƴӹģߣĻΪλ + BYTE byRes[11]; +}NET_DVR_SCREEN_SPLICE_CFG, *LPNET_DVR_SCREEN_SPLICE_CFG; + +//ȹʽ +typedef struct tagNET_DVR_SCREEN_FAN_WORK_MODE_CFG +{ + DWORD dwSize; + BYTE byWorkMode; //1-2-Զ + BYTE byTemperatureLimitValue; //ȿ¶ȷֵģʽΪԶʱòЧ + BYTE byRes[14]; +}NET_DVR_SCREEN_FAN_WORK_MODE_CFG, *LPNET_DVR_SCREEN_FAN_WORK_MODE_CFG; + +//VGAź +typedef struct tagNET_DVR_SCREEN_VGA_CFG +{ + DWORD dwSize; + BYTE byEnableAutoAdjust; //ǷԶ0-1-ǣԶʱ²Ч + BYTE byHorizontalPosition; //ˮƽλ 0-100 + BYTE byVerticalPosition; //ֱλ 0-100 + BYTE byClock; //ʱ 0-100 + BYTE byPhase; //λ0-100 + BYTE byRes[11]; +}NET_DVR_SCREEN_VGA_CFG, *LPNET_DVR_SCREEN_VGA_CFG; + +//Ļ˵ +typedef struct tagNET_DVR_SCREEN_MENU_CFG +{ + DWORD dwSize; + BYTE byMenuLanguage; //ԣ1-ģ2-Ӣ + BYTE byTransparency; //͸ 0-͸1-ͣ2-У3- + BYTE byDuration; //ʱ䣬0-1-5룬2-15룬3-30 + BYTE byRes[13]; +}NET_DVR_SCREEN_MENU_CFG, *LPNET_DVR_SCREEN_MENU_CFG; + +//л +typedef struct tagNET_DVR_PIP_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿûл 0- 1- + BYTE bySubWindowSource; //ӻźԴοöNET_DVR_CAM_MODE + BYTE bySubWindowBorderColor; //ӻ߿ɫ 1-ɫ2-ɫ + BYTE byRes1; + NET_DVR_RECTCFG struPosition; //ӻλãĻܴСΪ100*100 + BYTE byRes2[12]; +}NET_DVR_PIP_CFG, *LPNET_DVR_PIP_CFG; + +//͸ +typedef struct tagNET_DVR_DEFOG_LCD +{ + DWORD dwSize; + BYTE byDefogEnable; //͸أ0~رգ1~ + BYTE byDefogModel; //͸ģʽ0~Զȥ1~ֶȥ + BYTE byDefogLevel; //͸ǿȵȼ1-7ȼĬϵȼΪ4ȼ1Ϊ0.5ȼ2Ϊ0.55ȼ3Ϊ0.60ȼ4Ϊ0.65ȼ5Ϊ0.70ȼ6Ϊ0.75ȼ7Ϊ0.80ȥģʽΪֶȥʱȥǿȵȼ + BYTE byRes[33]; +}NET_DVR_DEFOG_LCD,*LPNET_DVR_DEFOG_LCD; + +//Ļάǽ +typedef struct tagNET_DVR_SCREEN_WALL_CFG +{ + DWORD dwSize; + BYTE byEnable; //״̬ء0-Ϊرգ1-Ϊ + BYTE byRes[35]; +}NET_DVR_SCREEN_WALL_CFG, *LPNET_DVR_SCREEN_WALL_CFG; + +//Ļλ +typedef struct tagNET_DVR_SCREEN_POS_CFG +{ + DWORD dwSize; + BYTE byScreenRowNum;//Ļкš + BYTE byScreenColNum;//Ļкš + BYTE byRes[34]; +}NET_DVR_SCREEN_POS_CFG, *LPNET_DVR_SCREEN_POS_CFG; + +typedef struct tagNET_DVR_VIDEO_AUDIOIN_CFG +{ + DWORD dwSize; //ṹij + DWORD dwChanNo; //Ƶͨţ ú󣬱󶨵ԽͨΪͨƵԴ + BYTE byEnable; //ǷԽΪƵԴ 0- 1- + BYTE byRes[31]; // +}NET_DVR_VIDEO_AUDIOIN_CFG, *LPNET_DVR_VIDEO_AUDIOIN_CFG; + +typedef struct _NET_DVR_VCA_DETION_CFG +{ + DWORD dwSize; + BYTE byEnable;//ʹ + BYTE byRes1[3]; + NET_DVR_SCHEDTIME struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; + NET_DVR_HANDLEEXCEPTION_V40 struHandleException; //쳣ʽ + DWORD dwMaxRelRecordChanNum ; //¼ͨ ֻ֧ + DWORD dwRelRecordChanNum ; //¼ͨ ʵֵ֧ + DWORD dwRelRecordChan[MAX_CHANNUM_V30/*64*/];//¼ͨ + BYTE byEnablePreset[MAX_CHANNUM_V30]; + BYTE byPresetNo[MAX_CHANNUM_V30]; + BYTE byEnableCruise[MAX_CHANNUM_V30]; + BYTE byCruiseNo[MAX_CHANNUM_V30]; + BYTE byEnablePtzTrack[MAX_CHANNUM_V30]; + BYTE byPTZTrack[MAX_CHANNUM_V30]; + NET_DVR_SCHEDTIME struHolidayTime[MAX_TIMESEGMENT_V30/*8*/]; //ղʱ + BYTE byRes[224];; +}NET_DVR_VCA_DETION_CFG, *LPNET_DVR_VCA_DETION_CFG; + +typedef struct tagNET_DVR_VCA_DETECTION_CFG_V40 +{ + DWORD dwSize; //ṹС + BYTE byEnable;//ʹ + BYTE byRes1[3]; + NET_DVR_SCHEDTIME struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; + DWORD dwHandleType; //쳣,쳣ʽ"" + /*0x00: Ӧ*/ + /*0x01: ʾϾ*/ + /*0x02: */ + /*0x04: ϴ*/ + /*0x08: */ + /*0x10: JPRGץͼϴEmail*/ + /*0x20: ⱨ*/ + /*0x40: ӵͼ(ĿǰֻPCNVR֧)*/ + /*0x200: ץͼϴFTP*/ + DWORD dwMaxRelAlarmOutChanNum ; //ıֻ֧ͨ + DWORD dwRelAlarmOut[MAX_ALARMOUT_V40/*4128*/]; //* ʵʴıţֵʾ,ýУ±0ʼ˳ȡ0xffffffffЧ*/ + /*¼ͨ*/ + DWORD dwMaxRecordChanNum; //豸ֵ֧¼ͨ-ֻ + DWORD dwRelRecordChan[MAX_CHANNUM_V40/*512*/]; /* ʵʴ¼ֵͨʾ,ýУ±0ʼ˳ȡ0xffffffff,Ч*/ + DWORD dwEnablePresetChanNum; //ǰԤõĿ + NET_DVR_PRESETCHAN_INFO struPresetChanInfo[MAX_CHANNUM_V40/*512*/]; //õԤõϢdwEnablePresetChanNumΪ0ʱ±0-(dwEnablePresetChanNum -1)ЧΪ0ʱʾδԤõ + BYTE byRes2[516]; /**/ + DWORD dwEnableCruiseChanNum; //ǰѲͨĿ + NET_DVR_CRUISECHAN_INFO struCruiseChanInfo[MAX_CHANNUM_V40/*512*/]; //ѲͨϢdwEnableCruiseChanNumΪ0ʱ±0-( dwEnableCruiseChanNum -1)ЧΪ0ʱʾδѲ + DWORD dwEnablePtzTrackChanNum; //ǰ̨ͨĿ + NET_DVR_PTZTRACKCHAN_INFO struPtzTrackInfo[MAX_CHANNUM_V40/*512*/]; //̨ͨϢdwEnablePtzTrackChanNumΪ0ʱ±0-(dwEnablePresetChanNum -1)ЧΪ0ʱʾδ̨ + NET_DVR_SCHEDTIME struHolidayTime[MAX_TIMESEGMENT_V30]; //ղʱ + BYTE byRes[224]; +}NET_DVR_VCA_DETECTION_CFG_V40, *LPNET_DVR_VCA_DETECTION_CFG_V40; + +typedef struct tagNET_DVR_CLOUD_STORAGE_CFG +{ + DWORD dwSize; //ṹС; + BYTE byEnableCS; //ƴ洢 0-ر 1- + BYTE byRes[511]; // +} NET_DVR_CLOUD_STORAGE_CFG, *LPNET_DVR_CLOUD_STORAGE_CFG; + + +typedef struct tagNET_DVR_CHANS_RECORD_STATUS_CFG +{ + DWORD dwSize ; //ṹС + BYTE byValid; //ǷЧ + /*(ֻ)¼ͣ0: ¼1¼ 2- + 3- 4-Ƶ 5-δ 6-浵 7-ش + 8-û 9-δ֤,10-浵к¼ 11-¼شк¼*/ + BYTE byRecord; + DWORD dwRelatedHD; // + BYTE byOffLineRecord; //¼ 0-ر 1- + BYTE byRes[63]; //ֽ +}NET_DVR_CHAN_RECORD_STATUS_CFG, *LPNET_DVR_CHAN_RECORD_STATUS_CFG; + +#define MAX_CAMERAID_LEN 64 +typedef struct tagNET_DVR_UPLOAD_RECORD_INFO +{ + DWORD dwSize; + DWORD dwRecordType; //¼ 0- ʱ¼1- ƶ¼2- ¼3- ƶ¼4- ƶ¼ 5- 6- ֶ¼7- 𶯱8- 9- ܱ10- ش¼ + BYTE sCameraID[MAX_CAMERAID_LEN]; //camera id; + NET_DVR_TIME_EX struStartTime; //¼ʼʱ + NET_DVR_TIME_EX struStopTime; //¼ʱ + DWORD dwStoragePoolID; //洢ID + BYTE byFormatType ; //װͣ1-2-RTPװ3-PSװ4-TSװ5-˽У6-FLV7-ASF8-3GP9-RTP+PS꣺GB281810xff-Ч + BYTE byVideoEncType ; //Ƶͣ0-˽2641-׼h2642-׼mpeg47-M-JPEG8-MPEG20xfe- ԶԴһ£0xff-Ч + BYTE byAudioEncType; //Ƶͣ0-G7221-G711_U2-G711_A5-MP2L26-G7267-AAC0xfe- ԶԴһ£0xff-Ч + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cStartTimeDifferenceH; //ʼʱUTCʱСʱ-12 ... +14 ʾʱ + char cStartTimeDifferenceM; //ʼʱUTCʱӣ-30, 0, 30, 45ʾʱ + char cStopTimeDifferenceH; //ʱUTCʱСʱ-12 ... +14ʾʱ + char cStopTimeDifferenceM; //ʱUTCʱӣ-30, 0, 30, 45ʾʱ + BYTE byRes[120]; +}NET_DVR_UPLOAD_RECORD_INFO,*LPNET_DVR_UPLOAD_RECORD_INFO; + +//Ʋ ṹ +typedef struct tagNET_DVR_IOOUT_COND +{ + DWORD dwSize; + BYTE bySyncOutputNo;//ͬ(0-F1,1-F2,2-F3) + BYTE byRes[63]; +}NET_DVR_IOOUT_COND,*LPNET_DVR_IOOUT_COND; + +//Ʋ +typedef struct tagNET_DVR_IOOUT_CFG +{ + DWORD dwSize; + BYTE byWorkMode;// 0-,1-Ƶ(Ĭ) + BYTE byRes1[3]; + union + { + BYTE byUnionLen[128]; + struct + { + BYTE byDefaultState;//Ĭ״̬ 0-͵ƽ(Ĭ)1-ߵƽ + BYTE byWorkState;//Ч״̬ 0-͵ƽ(Ĭ),1-ߵƽ,2- + BYTE byFreqMulti;//ƵֵΧ[1,15] + BYTE byDutyRatio;//ռձȣ[0,40%] + BYTE byRes[3]; + BYTE byFlashLightEnable; //ʱʹ:0-;1- + NET_DVR_SCHEDTIME struFlashLightTime;//ʱ + BYTE byRes1[116]; + }struStrobeLamp; // Ƶ ʱЧ + }uWorkModeInfo; + BYTE byRes2[128]; +}NET_DVR_IOOUT_CFG,*LPNET_DVR_IOOUT_CFG; + +//źŵͬ +typedef struct tagNET_DVR_SIGNAL_SYNCCFG +{ + DWORD dwSize; + WORD wPhase;//λ(0~360) + BYTE byLineLock;//Դͬ 0-1- + BYTE byRes[125]; +}NET_DVR_SIGNAL_SYNCCFG,*LPNET_DVR_SIGNAL_SYNCCFG; + +// өʯEZVIZṹ +typedef struct +{ + DWORD dwSize; + BYTE byEnable;// EZVIZ 0ã1 + /********* IPC5.1.7 Begin 2014-03-21***********/ + BYTE byDeviceStatus; //豸Ƿ״̬0-1-ߣ2- + BYTE byAllowRedirect; //Ƿض,0-,1-,2-,0ʾֲ,SDK豸 + BYTE byDomainName[MAX_DOMAIN_NAME]; //ַ + BYTE byRes1; + BYTE byVerificationCode[NET_SDK_MAX_VERIFICATION_CODE_LEN/*32*/];//өʯ֤ + BYTE byNetMode; //ģʽ0-壬1-Զ2-ȣ3-(Ĭ)4- + BYTE byOfflineStatus; //豸߾״̬: 0-1-өʯע֤ЧֶΪֻҵDeviceStatusΪ2ʱЧ + BYTE byEnableTiming;// EZVIZУʱ 0ã1 + BYTE byRes2; + BYTE byOperateCode[NET_SDK_MAX_OPERATE_CODE_LEN]; //룬û豸ʱʹ + BYTE byRes[344]; +}NET_DVR_EZVIZ_ACCESS_CFG,*LPNET_DVR_EZVIZ_ACCESS_CFG; + +typedef struct tagNET_DVR_ALARM_RELATE_COND +{ + DWORD dwSize; + /* + 0ʾƶ⣬ + 1ʾƵڵ + 2ʾƵʧ + 3ʾPIR + 4ʾ߱ + 5ʾȱ + 6ʾץͼ + 7ʾ⣬ + 8ʾԽ⣬ + 9ʾ⣬ + 10ʾ⣬ + 11 ʾ쳣⣬ + 0xff ʾ + */ + BYTE byAlarmType; + // 0-Ч,1-ץͼϴFTP,2-JpegץͼϴEmail + BYTE byRelateActType; + BYTE byRes[2]; + //ŻͨŻ߱ + //(byAlarmType ==0xffʱ,dwChannelʾDZ) + //(byAlarmType ==4ʱ,dwChannelʾ߱) + DWORD dwChannel; + BYTE byRes1[64]; +}NET_DVR_ALARM_RELATE_COND,*LPNET_DVR_ALARM_RELATE_COND; + +typedef struct tagNET_DVR_ALARM_RELATE_CFG +{ + DWORD dwSize; + DWORD dwMaxRelateChanNum ; //ıֻ֧ͨ + //dwRelateChanijʼֵ0xffffffff;дʵʵͨ; + DWORD dwRelateChan[MAX_CHANNUM_V40/*512*/]; + BYTE byRes1[256]; +}NET_DVR_ALARM_RELATE_CFG,*LPNET_DVR_ALARM_RELATE_CFG; + +typedef struct tagNET_DVR_PTZ_BASICPARAMCFG +{ + DWORD dwSize; + BYTE byProportionalPan; //ñ䱶 0-1- + BYTE byPresetFreezing; //ԤõƵ 0-1- + BYTE byPresetSpeed;//Ԥõٶȵȼ 1--8Ĭ4 + BYTE byKeyboardCtrlSpeed;//ֿٶȵȼ0-,1-,2- + BYTE byAutoScanSpeed;//ɨٶȵȼ1--40Ĭ28 + BYTE byZoomingSpeed;//䱶ٶȣ1--3Ĭ3 + BYTE byManualControlSpeed;//ֿٶģʽ0-ݣ1-ˣ2-ǻ3-4-Ӧ + BYTE byPTZMotionTrack;//˶̨ 0-Ĭϣ1-ر + BYTE byRes[124]; +}NET_DVR_PTZ_BASICPARAMCFG,*LPNET_DVR_PTZ_BASICPARAMCFG; + +typedef struct tagNET_DVR_PTZ_OSDCFG +{ + DWORD dwSize; + BYTE byZoomStatus; //ͷʾ1-2롢2-5롢3-10롢0xff-ء0-Ĭ2 + BYTE byPtStatus; //λʾ1-2롢2-5롢3-10롢0xff-ء0-Ĭ2 + BYTE byPresetStatus;//Ԥõʾ1-2롢2-5롢3-10롢0xff-ء0-Ĭ2 + BYTE byPositionDisplayFormat;//λʾʽ 0-PTʾ( P179|T-02)1-շλʾ(SE123|T-02) + BYTE byRes[124]; +}NET_DVR_PTZ_OSDCFG,*LPNET_DVR_PTZ_OSDCFG; + +typedef struct tagNET_DVR_PTZ_POWEROFFMEMCFG +{ + DWORD dwSize; + BYTE byResumeTimePoint; //ģʽOxff-á1-30롢2-60롢3-300롢4-600룬Ĭ30 + BYTE byRes[127]; +}NET_DVR_PTZ_POWEROFFMEMCFG,*LPNET_DVR_PTZ_POWEROFFMEMCFG; + +typedef struct tagNET_DVR_PTZ_LIMITCOND +{ + DWORD dwSize; + DWORD dwChan; //ͨ + BYTE byLimitMode; //λģʽ 0-1-λ2-ɨλ + BYTE byRes[63]; +}NET_DVR_PTZ_LIMITCOND, *LPNET_DVR_PTZ_LIMITCOND; + +typedef struct tagNET_DVR_PTZ_LIMITCFG +{ + DWORD dwSize; + BYTE byEnable;//ʹܣ0-1- + BYTE byLimitStatus; //λ״̬ 0-δλ1-λɱ༭ + BYTE byRes[122]; +}NET_DVR_PTZ_LIMITCFG,*LPNET_DVR_PTZ_LIMITCFG; + +typedef struct tagNET_DVR_PTZ_LIMITCTRL +{ + DWORD dwSize; + DWORD dwChan;//ͨ + BYTE byLimitMode; //λģʽ 0-1-λ2-ɨλ + BYTE byWorkMode ;//0-ã1- + BYTE byRes[122]; +}NET_DVR_PTZ_LIMITCTRL,*LPNET_DVR_PTZ_LIMITCTRL; + +typedef struct tagNET_DVR_PTZ_LOCKCFG +{ + DWORD dwSize; + BYTE byWorkMode ;//̨ 0-1- + BYTE byRes[123]; +}NET_DVR_PTZ_LOCKCFG,*LPNET_DVR_PTZ_LOCKCFG; + +typedef struct tagNET_DVR_PTZLOCKINFO_COND +{ + DWORD dwSize; + DWORD dwChannel ;//ͨ + BYTE byRes[64]; +}NET_DVR_PTZLOCKINFO_COND,*LPNET_DVR_PTZLOCKINFO_COND; + +typedef struct tagNET_DVR_PTZLOCKINFO +{ + DWORD dwSize; + DWORD dwRemainingSec ;//ʣ + BYTE byRes[128]; //ֽ +}NET_DVR_PTZLOCKINFO, *LPNET_DVR_PTZLOCKINFO; + +typedef struct tagNET_DVR_CRUISEPOINT_COND +{ + DWORD dwSize; + DWORD dwChan;//ͨ + WORD wRouteNo;//Ѳ· + BYTE byRes[30]; +}NET_DVR_CRUISEPOINT_COND,*LPNET_DVR_CRUISEPOINT_COND; + +typedef struct +{ + WORD wPresetNo; //Ԥõ + WORD wDwell; //ͣʱ + BYTE bySpeed; //ٶ + BYTE bySupport256PresetNo;//֮ǰ 256ԤõǷЧ + BYTE byRes[6]; +}NET_DVR_CRUISEPOINT_PARAM,*LPNET_DVR_CRUISEPOINT_PARAM; + +typedef struct +{ + DWORD dwSize; + // ֧128Ѳ + NET_DVR_CRUISEPOINT_PARAM struCruisePoint[MAX_CRUISE_POINT_NUM]; + BYTE Res[64]; // +}NET_DVR_CRUISEPOINT_V40, *LPNET_DVR_CRUISEPOINT_V40; + +typedef struct +{ + DWORD dwSize; + // ֧256Ѳ + NET_DVR_CRUISEPOINT_PARAM struCruisePoint[MAX_CRUISEPOINT_NUM_V50]; + BYTE Res[64]; // +}NET_DVR_CRUISEPOINT_V50, *LPNET_DVR_CRUISEPOINT_V50; + + +typedef struct tagNET_DVR_TEST_VERSION_HEAD +{ + DWORD dwSize; + DWORD dwParam1; + BYTE byParam2; + BYTE byRes[31]; +}NET_DVR_TEST_VERSION_HEAD, *LPNET_DVR_TEST_VERSION_HEAD; + +typedef struct tagNET_DVR_TEST_VERSION_HEAD_V1 +{ + DWORD dwSize; + DWORD dwParam1; + BYTE byParam2; + BYTE byRes[31]; + DWORD dwParam1_1; + BYTE byParam1_2; + BYTE byRes1[31]; +}NET_DVR_TEST_VERSION_HEAD_V1, *LPNET_DVR_TEST_VERSION_HEAD_V1; + +typedef struct tagNET_DVR_TEST_VERSION_HEAD_V2 +{ + DWORD dwSize; + DWORD dwParam1; + BYTE byParam2; + BYTE byRes[31]; + DWORD dwParam1_1; + BYTE byParam1_2; + BYTE byRes1[31]; + DWORD dwParam2_1; + BYTE byParam2_2; + BYTE byRes2[31]; +}NET_DVR_TEST_VERSION_HEAD_V2, *LPNET_DVR_TEST_VERSION_HEAD_V2; + +#define MAX_DISPLAY_NUM 512 //ʾ +#define MAX_LEDCONTENT_NUM 512 //LEDַ󳤶 +#define MAX_PPT_CHAN 128 //PPT + +typedef struct tagNET_DVR_VIDEOWALLDISPLAYMODE +{ + DWORD dwSize; + BYTE byEnable;//ʹ + BYTE byRes1[3]; + NET_DVR_RECTCFG_EX struRect;//귶Χݻ׼ֵ֧ƴģʽ + BYTE sName[NAME_LEN]; //ǽ + BYTE byRes2[100]; +}NET_DVR_VIDEOWALLDISPLAYMODE, *LPNET_DVR_VIDEOWALLDISPLAYMODE; + +typedef struct tagNET_DVR_DISPLAYPARAM +{ + DWORD dwDisplayNo;//ʾ + BYTE byDispChanType;/*ģʽ,1-BNC2-VGA3-HDMI4-DVI5-SDI, 6-FIBER, \ + 7-RGB, 8-YPrPb, 9-VGA/HDMI/DVIӦ10-3GSDI,11-VGA/DVIӦ12-HDBaseT,13-HDTVI, 14-TVI0xff-Ч*/ + + BYTE byRes[11]; +}NET_DVR_DISPLAYPARAM,*LPNET_DVR_DISPLAYPARAM; + +typedef struct tagNET_DVR_DISPLAYCFG +{ + DWORD dwSize; + NET_DVR_DISPLAYPARAM struDisplayParam[MAX_DISPLAY_NUM/*512*/] ; + BYTE byRes[128]; +}NET_DVR_DISPLAYCFG,*LPNET_DVR_DISPLAYCFG; + +typedef struct tagNET_DVR_VIDEOWALLDISPLAYPOSITION +{ + DWORD dwSize; + BYTE byEnable; + BYTE byCoordinateType;//͡0-׼꣬1-ʵ + BYTE byRes1[2]; + //ǽ,1ֽǽţֽڣں豸Ϊͨţ+3ֽڱ + DWORD dwVideoWallNo; + DWORD dwDisplayNo;//ʾ + //Ϊ׼1920*1920Ⱥ͸߶ֵãΪ׼ֵ + NET_DVR_RECTCFG_EX struRectCfg; + BYTE byRes2[64]; +}NET_DVR_VIDEOWALLDISPLAYPOSITION,*LPNET_DVR_VIDEOWALLDISPLAYPOSITION; + +/*Ϣ*/ +typedef struct tagNET_DVR_VIDEOWALLWINDOWPOSITION +{ + DWORD dwSize; + BYTE byEnable; //ʹ,0-ʹܣ1-ʹ + BYTE byWndOperateMode; //ڲģʽ0-ͳһ꣬1-ֱ + BYTE byRes1[6]; + DWORD dwWindowNo;//ں + DWORD dwLayerIndex;//Ӧͼţͼŵöö + NET_DVR_RECTCFG_EX struRect; //ĿĴͳһ(ʾǽ)ȡͳһʱЧ + NET_DVR_RECTCFG_EX struResolution; //ĿĴڷֱ꣬ȡ򰴷ֱЧ + DWORD dwXCoordinate; //LEDϽX꣨ͳһ꣩ȡ򰴷ֱЧ + DWORD dwYCoordinate; //LEDϽY꣨ͳһ꣩ȡ򰴷ֱЧ + BYTE byRes2[36]; +}NET_DVR_VIDEOWALLWINDOWPOSITION,*LPNET_DVR_VIDEOWALLWINDOWPOSITION; + +typedef struct tagNET_DVR_VIDEO_WALL_INFO +{ + DWORD dwSize; + //ںţ1ֽǽţں豸Ϊͨţ+1ֽڱ+2ֽڴں + DWORD dwWindowNo; + DWORD dwSceneNo;// + DWORD dwDestWallNo; //Ŀǽ + DWORD dwDestSceneNo;//Ŀij + BYTE byRes[12]; +}NET_DVR_VIDEO_WALL_INFO,*LPNET_DVR_VIDEO_WALL_INFO; + +typedef struct tagNET_DVR_VIRTUALLED_PARAM +{ + DWORD dwSize; + BYTE byEnable; //ʹ + BYTE byDispMode; //ʾģʽ1-͸2-͸3- + BYTE byWndOperateMode; //ڲģʽ0-ͳһ꣬1-ֱ + BYTE byType; //LEDͣ0-ı1-ʱ + BYTE byDirection; //LED0-ˮƽ1-ֱ + BYTE byTimeType; //ʱͣbyTypeΪ1ʱЧ0-Ч1-ֻʾʱ䣬2-ʾںʱ + BYTE byDateFormat; //ʾʽbyTimeTypeΪ2ʱЧ + //0-Ч1-XXXX-XX-XX()2-XX-XX-XXXX()3-XX-XX-XXXX()4-XXXXXXXXգ5-XXXXXXXX꣬6-XXXXXXXX + BYTE byTimeFormat; //ʱʾʽbyTimeTypeΪʱЧ + //0-Ч1-H:MM:SS2-HH:MM:SS + NET_DVR_RGB_COLOR struContentColor; //ɫ + NET_DVR_RGB_COLOR struBackColor; //ɫ + NET_DVR_RECTCFG_EX struRect; + DWORD dwContentNum; //ıݳȣbyTypeΪ0ʱЧ + BYTE byLedContent[MAX_LEDCONTENT_NUM/*512*/]; //ıݣbyTypeΪ0ʱЧ + BYTE byMoveMode; //ƶģʽ1-ͨ2-ƽ3-ֹ + BYTE byFontSize; //С1-12-23-4 + BYTE byMoveDirection; //ƶ0-Ĭϣң1-ң2-ҵ3-ϵ£4-µϣ̬LEDʱЧ + BYTE byMoveSpeed; //ƶٶȣ1-ٶ12-ٶ2̬LEDʱЧ + NET_DVR_RECTCFG_EX struResolution; //ĿĴڷֱ꣬ȡ򰴷ֱЧ + DWORD dwXCoordinate; //LEDϽX꣨ͳһ꣩ȡ򰴷ֱЧ + DWORD dwYCoordinate; //LEDϽY꣨ͳһ꣩ȡ򰴷ֱЧ + BYTE byHourFormat; //ʱʽbyTimeTypeΪʱЧ0-Ч1-12Сʱƣ2-24Сʱ + BYTE byAMFormat; //AMʽbyHourFormatΪ1ʱЧ0-Ч1-AM2- + BYTE byPMFormat; //PMʽbyHourFormatΪ1ʱЧ0-Ч1-PM2- + BYTE byAlignmentX; //ˮƽ뷽ʽbyDirectionΪ0ʱЧ0-Ч1-룬2-ж룬3-Ҷ + BYTE byAlignmentY; //ֱ뷽ʽbyDirectionΪ1ʱЧ0-Ч1-˶룬2-ж룬3-׶˶ + BYTE byFontType; //ͣ0-Ĭϣ1-壬2-壬3-壬255-Զ + BYTE byRes2[90]; +}NET_DVR_VIRTUALLED_PARAM,*LPNET_DVR_VIRTUALLED_PARAM; + +typedef struct tagNET_DVR_IMAGE_CUT_MODE +{ + DWORD dwSize; + BYTE byCutMode; //ͼиģʽ1-4:3,2-16:9 + BYTE byRes[31]; +}NET_DVR_IMAGE_CUT_MODE,*LPNET_DVR_IMAGE_CUT_MODE; + +typedef struct tagNET_DVR_USING_SERIALPORT +{ + DWORD dwSize ; + DWORD dwSerialPort; //ǰʹôں + BYTE byProtocolType; //Эͣ1-LCD-S1 , 2-LCD-S2 , 3-LCD-L1 4-LCD-DLP 5-LCD-S3 , 6-LCD-D207-LCD-L2,8-LCD-Z19-LCD-D20/D,10-LCD-D20/S,11-LCD-D20/P,12-LCD-D20/T,13-LCD-D20/F,14-LCD-D20/DF,15-LCD-D20/FS,16-LCD-D20/FP,17-LCD-D20/FT,18-LCD-D5022,19-LCD-D5032,20-LCD-D5042+ + BYTE byRes[31]; +}NET_DVR_USING_SERIALPORT,*LPNET_DVR_USING_SERIALPORT; + +typedef struct tagNET_DVR_VIDEOWALLSCENECFG +{ + DWORD dwSize; + BYTE sSceneName[NAME_LEN];// + BYTE byEnable;//ǷЧ 1-Ч0-Ч + BYTE bySceneIndex; //ţֻܻȡȡгʱʹøò + BYTE byRes [78]; +}NET_DVR_VIDEOWALLSCENECFG, *LPNET_DVR_VIDEOWALLSCENECFG; + +typedef struct tagNET_DVR_SCENE_CONTROL_INFO +{ + DWORD dwSize; + NET_DVR_VIDEO_WALL_INFO struVideoWallInfo; //ǽϢ + DWORD dwCmd; //1-ģʽлҪлǵǰ򲻽л2-ʼ˳գǵǰͬʱԵǰ3-ǿлǷǵǰǿл4-浱ǰģʽij 5-ɾ ,6- + BYTE byRes[4]; +}NET_DVR_SCENE_CONTROL_INFO, *LPNET_DVR_SCENE_CONTROL_INFO; + +typedef struct tagNET_DVR_SHOW_CONTROL_INFO +{ + DWORD dwSize; + DWORD dwDisplayNo; //ʾںţ0xffffffffʾڽв + BYTE byEnable; //ʹʾ0-ʾ1-ʾ + BYTE byChanType; //ʾͨͣ1-ʾͨţ2- + BYTE byRes1[2]; + DWORD dwWallNo; //ǽţ1ֽǽţλ+3ֽڱʾĻʱЧ + BYTE byRes2[56]; +}NET_DVR_SHOW_CONTROL_INFO,*LPNET_DVR_SHOW_CONTROL_INFO; + +typedef struct tagNET_DVR_BUF_INFO +{ + void* pBuf; //ָ + DWORD nLen; // +}NET_DVR_BUF_INFO, *LPNET_DVR_BUF_INFO; + +typedef struct tagNET_DVR_IN_PARAM +{ + NET_DVR_BUF_INFO struCondBuf; // + NET_DVR_BUF_INFO struInParamBuf; // + DWORD dwRecvTimeout; //ݳʱʱ䣬λms,0ýӿĬϳʱ + BYTE byRes[32]; +}NET_DVR_IN_PARAM,LPNET_DVR_IN_PARAM; + +typedef struct tagNET_DVR_OUT_PARAM +{ + NET_DVR_BUF_INFO struOutBuf; // + void* lpStatusList; //״̬ + BYTE byRes[32]; +}NET_DVR_OUT_PARAM,LPNET_DVR_OUT_PARAM; + +typedef struct tagNET_DVR_AUDIO_CHAN_INFO +{ + DWORD dwSize; + DWORD dwChannel; //Ƶͨϣ1ֽ豸+1ֽӰ+2ֽƵͨţ + BYTE byRes[48]; +}NET_DVR_AUDIO_CHAN_INFO, *LPNET_DVR_AUDIO_CHAN_INFO; + +typedef struct tagNET_DVR_AUDIO_CHAN_CFG +{ + DWORD dwSize; + BYTE sChanName[NAME_LEN]; //Ƶͨ + BYTE byEnable; //ƵǷ 0-أ 1- + BYTE byAudioSwitchType; //Ƶлʽ1-ǰԴʽ2-ڽԴʽ + BYTE byRes[2]; + NET_DVR_PU_STREAM_CFG_V41 struAudioSrcInfo; //ƵԴϢ byAudioSwitchTypeΪ1ʱЧ + DWORD dwWindowNo; //Ӵںţ1ֽǽ+1ֽӴں+2ֽڴںţbyAudioSwitchTypeΪ2ʱЧ + BYTE byRes2[28]; +}NET_DVR_AUDIO_CHAN_CFG, *LPNET_DVR_AUDIO_CHAN_CFG; + +#define MAX_SUBBOARD_NUM 42 //ʽ豸Ŀ +#define MAX_SINGLE_BOARD_EXCEPTION_NUM 16 //󲢷쳣 +typedef struct tagNET_DVR_MAINBOARD_SERIAL_CFG +{ + DWORD dwSize; + BYTE bySerialWorkMode; //ڹģʽ1-RS484,2-RS232 + BYTE byFunType; //ڹܣ1-̿ƣ2-Ļƣ3-͸ͨģʽ 4-PTZ 5- 6-̨ + BYTE byDataBit;// мλ 05λ16λ27λ38λ; + BYTE byStopBit;// ֹͣλ 01λ12λ; + DWORD dwBaudRate;//0501752110315043005600612007240084800996001019200 11384001257600137680014115.2k; + BYTE byParity;// У 0У飬1У飬2żУ; + BYTE byFlowcontrol;// 0ޣ1,2-Ӳ + WORD wProtocol;//Э飬ͬڹܶӦЭ鲻һ + BYTE byVariable ; //Ƿɱ䣬1-ɱ 2-ɱ ֻȡ + BYTE byGateWayEnable; //Ƿأ0-أ!0 + BYTE byRes[30]; +}NET_DVR_MAINBOARD_SERIAL_CFG, *LPNET_DVR_MAINBOARD_SERIAL_CFG; + +typedef struct tagNET_DVR_SUBBOARD_INFO +{ + DWORD dwSize; + BYTE byBoardType; //ͣ0-壬1-DVI-I룬2-YPbPr룬3-BNC룬4-SDI룬 5-DVI˫·룬 6-ͨ룬 7-DVI-I 8-SDI, 9-ǿͽ룬10-DP룬11-HDTVI룬12-HDBaseT13-HDMI룬14-HDBaseT15-DVI-T룬16-HDMI17-HDMI-HD ,18-HDMI-UHD , 19-DP_UHD,0xff-δ֪ //ͣ0-壬1-DVI-I룬2-YPbPr룬3-BNC룬4-SDI룬 5-DVI˫·룬 6-ͨ룬 7-DVI-I 8-SDI, 9-ǿͽ룬10-DP룬11-HDTVI룬12-HDBaseT13-HDMI룬14-HDBaseT15-DVI-T룬16-HDMI17-HDMI-HD ,18-HDMI-UHD , 19-DP_UHD,0xff-δ֪ + BYTE byInterfaceNum; //ӿ + BYTE byStatus; //״̬0-쳣 1- + BYTE bySyncStatus; // ͬ״̬0-δͬ 1-ͬ + DWORD dwSlotNo; //ڲλ + BYTE byRes2[32]; +}NET_DVR_SUBBOARD_INFO, *LPNET_DVR_SUBBOARD_INFO; + +typedef struct tagNET_DVR_DEVICE_SUBBOARD_INFO +{ + DWORD dwSize; + BYTE byBackBoardType; //ͣ 1-4U 2-8U 3-13U, 0xff-δ֪ + BYTE bySoltNum; //λĿ + BYTE byBoardNum; //ЧĿ + BYTE byRes1[1]; + NET_DVR_SUBBOARD_INFO struSubBoadInfo[MAX_SUBBOARD_NUM]; //ǰbyBoardNumЧ + BYTE byRes2[32]; +}NET_DVR_DEVICE_SUBBOARD_INFO, *LPNET_DVR_DEVICE_SUBBOARD_INFO; + +typedef struct tagNET_DVR_DEVICE_BOARD_EXCEPINFO +{ + DWORD dwSize; + BYTE byExceptNum; //쳣 + BYTE byRes1[3]; + BYTE byMajor[MAX_SINGLE_BOARD_EXCEPTION_NUM]; // + WORD wMinor[MAX_SINGLE_BOARD_EXCEPTION_NUM]; // + BYTE byRes2[32]; +}NET_DVR_DEVICE_BOARD_EXCEPINFO, *LPNET_DVR_DEVICE_BOARD_EXCEPINFO; + + +typedef struct tagNET_DVR_LINEARSCAN +{ + DWORD dwSize; + DWORD dwChan; //ͨ + BYTE byLinearScanType; //λͣ0-,1-߽,2-ұ߽ + BYTE byRes[63]; +}NET_DVR_LINEARSCAN, *LPNET_DVR_LINEARSCAN; + +//Ϣ +typedef struct tagNET_DVR_STREAM_ATTACHINFO_CFG +{ + DWORD dwSize; //ṹС + BYTE byStreamWithVca; //еϢɹк0-,1- + BYTE byRes[127]; // +}NET_DVR_STREAM_ATTACHINFO_CFG,*LPNET_DVR_STREAM_ATTACHINFO_CFG; + +typedef struct tagNET_DVR_SUBSYSTEM_NETCFG +{ + DWORD dwSize; + BYTE byDefaultRoute; //Ĭ·ɣ0ʾstruEtherNet[0]1ʾstruEtherNet[1] + BYTE byNetworkCardNum; //豸ʵʿõĿ + BYTE byRes1[2]; // + NET_DVR_ETHERNET_MULTI struEtherNet [MAX_NETWORK_CARD]; //̫ + BYTE byRes2[128]; +}NET_DVR_SUBSYSTEM_NETCFG, *LPNET_DVR_SUBSYSTEM_NETCFG; + +// +typedef struct tagNET_DVR_CLEARCTRL +{ + DWORD dwSize; + DWORD dwChan;//ͨ + BYTE byAllPreset; //еԤõ㣺0-,1- + BYTE byAllPatrols; //еѲ·0-,1- + BYTE byAllPatterms; //еĻɨ裺0-,1- + BYTE byAllPrivacyMasks; //е˽飺0-,1- + BYTE byAllPTZLimited; //еλã0-,1- + BYTE byAllScheduledTasks; //еĶʱ0-,1- + BYTE byAllParkAction; //е0-,1- + BYTE byRes[125]; +}NET_DVR_CLEARCTRL, *LPNET_DVR_CLEARCTRL; + +//̨Ϣ +typedef struct tagNET_DVR_PTZ_PRIORITIZECFG +{ + DWORD dwSize; + BYTE byPTZPrioritize; //̨ȣ0-Rs4851-磬Ĭ + BYTE byRes[3]; + DWORD dwDelay; //ʱ2---200 + BYTE byRes1[124]; +}NET_DVR_PTZ_PRIORITIZECFG, *LPNET_DVR_PTZ_PRIORITIZECFG; + +//㷽λǿ +typedef struct tagNET_DVR_INITIALPOSITIONCTRL +{ + DWORD dwSize; + DWORD dwChan;//ͨ + BYTE byWorkMode ;//0-ã1- + BYTE byRes[127]; +}NET_DVR_INITIALPOSITIONCTRL,*LPNET_DVR_INITIALPOSITIONCTRL; + +//˽ڱβ +typedef struct tagNET_DVR_PRIVACY_MASKS_COND +{ + DWORD dwSize; + DWORD dwChan; //ͨ + BYTE byRegionalID; //ID 124 + //ɾǰIDӦ˽ڱϢ 0-1-ɾ WriteOnly + BYTE byDelPrivacyMaskCfg; + BYTE byRes[62]; +}NET_DVR_PRIVACY_MASKS_COND, *LPNET_DVR_PRIVACY_MASKS_COND; + +typedef struct tagNET_DVR_PRIVACY_MASKS_CFG +{ + DWORD dwSize; + BYTE byEnable;//Ƿ 0-1- + //˽ڱòǷʾ 0-1- ReadOnly + BYTE byPrivacyMaskCfgEnable; + BYTE byColorType; //0-,1-ҡ2-졢3-̡4-5-ȡ6-ơ0xff- + BYTE byActiveZoomRatio;//αʣ1--100 + char sPrivacyMaskName[NAME_LEN/*32*/];//ڵƣֻʹ16ֽ + NET_VCA_POLYGON struRegion;//Χ + //ǰǷЧ 0-1- ԵϢ͵µĶϢ + BYTE byCurrentRegionEnable; + //ǰʹֶ 0- byActiveZoomRatio ;1- fActiveZoomRatio(֧ڵcurActiveZoomRatioType) + BYTE byCurZoomRatio ; + BYTE byRes[2]; + float fActiveZoomRatio; //α(ȷС1λ)[1.0-100.0] + BYTE byRes1[120]; +}NET_DVR_PRIVACY_MASKS_CFG, *LPNET_DVR_PRIVACY_MASKS_CFG; + +//ȫʹ +typedef struct tagNET_DVR_PRIVACY_MASKS_ENABLECFG +{ + DWORD dwSize; + BYTE byEnable;//ʹܣ0-1- + BYTE byRes[127]; +}NET_DVR_PRIVACY_MASKS_ENABLECFG,*LPNET_DVR_PRIVACY_MASKS_ENABLECFG; + +//˶Ϣ +typedef struct tagNET_DVR_SMARTTRACKCFG +{ + DWORD dwSize; + BYTE byEnable;//ʹ 0-1- + BYTE byRes[3]; + DWORD dwDuration;//ʱ䣺0--300룬Ĭ300 + BYTE byRes1[124]; +}NET_DVR_SMARTTRACKCFG,*LPNET_DVR_SMARTTRACKCFG; + +// +typedef struct tagNET_DVR_ZOOMRATIOCTRL +{ + DWORD dwSize; + DWORD dwChan;//ͨ + BYTE byRes[128]; +}NET_DVR_ZOOMRATIOCTRL,*LPNET_DVR_ZOOMRATIOCTRL; + + +//뿪Ϣ +typedef struct tagNET_DVR_DIAL_SWITCH_CFG +{ + DWORD dwSize; + DWORD dwSwitchState;//ſ״̬ + BYTE byRes[28]; +}NET_DVR_DIAL_SWITCH_CFG,*LPNET_DVR_DIAL_SWITCH_CFG; + +typedef struct tagNET_ALARM_RECORDFILE_LOSS //¼ʧӽṹ +{ + NET_DVR_TIME_EX struInspectStart; //Ѳ쿪ʼʱ + NET_DVR_TIME_EX struInspectEnd; //Ѳʱ + NET_DVR_IPADDR struIP; //¼ʧӦͨIPַ + DWORD dwChanNo; //ͨ + DWORD dwIDIndex; //ID + BYTE sName[STREAM_ID_LEN]; // + NET_DVR_TIME_EX struLossStartTime; //¼ʧʼʱ + NET_DVR_TIME_EX struLossEndTime; //¼ʧʱ + DWORD dwLostNum; //¼ʧ 0xffffffffʾȫʧ + BYTE byRes[240]; +} NET_ALARM_RECORDFILE_LOSS, *LPNET_ALARM_RECORDFILE_LOSS; + +typedef struct tagNET_ALARM_STREAM_EXCEPTION //ȡ쳣 ӽṹ +{ + NET_DVR_IPADDR struIP; //Ƶ쳣ͨIPַ + DWORD dwChanNo; //ͨ + DWORD dwIDIndex; //ID + BYTE sName[STREAM_ID_LEN]; // + BYTE byExceptionCase; //쳣ԭ0-д쳣 1-쳣 + BYTE byRes[307]; // +} NET_ALARM_STREAM_EXCEPTION, *LPNET_ALARM_STREAM_EXCEPTION; + + +typedef struct tagNET_ALARM_RESOURCE_USAGE //Դʹñ ӽṹ +{ + BYTE byLevel; //ʹس̶ȵ 0-1-һ澯 2-澯 3-澯 + BYTE byRes[491]; // +}NET_ALARM_RESOURCE_USAGE, *LPNET_ALARM_RESOURCE_USAGE; + +typedef struct tagNET_ALARM_RECORD_EXCEPTION //¼쳣 ӽṹ +{ + BYTE byReason; //쳣ԭ 0-¼ 1-¼쳣 2-޿lun + BYTE byRes1[3]; // + BYTE sVolumeName[MAX_VOLUMENAME_LEN]; + DWORD dwVolumeID; //¼IDӲ̺ţ + BYTE byRes[452]; // +}NET_ALARM_RECORD_EXCEPTION, *LPNET_ALARM_RECORD_EXCEPTION; + +typedef union tagNET_ALARM_CVR_SUBINFO_UNION //CVRӽṹ +{ + BYTE byLen[492]; //峤 + NET_ALARM_RECORDFILE_LOSS struRecordLost; //¼ʧ + NET_ALARM_STREAM_EXCEPTION struStreamException; //ȡ쳣 + NET_ALARM_RESOURCE_USAGE struResourceUsage; //Դʹ + NET_ALARM_RECORD_EXCEPTION struRecordException; //¼쳣 +}NET_ALARM_CVR_SUBINFO_UNION, *LPNET_ALARM_CVR_SUBINFO_UNION; + +#define MAX_VARIABLE_DATA_NUM 65535 //ɱݸ + +typedef struct tagNET_DVR_ALARMINFO_DEV_V40 +{ + DWORD dwAlarmType; // 0-(ͨ)ź1-˽о𻵣2- NVR˳3-״̬쳣4-ϵͳʱ쳣5-¼ʣͣ6-(ͨ)ƶⱨ + //7-(ͨ)ڵ; 8-¼ʧ; 9-Ƶʵʱʾ; 10-Դʹʸ澯; 11- CVRԶ޸쳣 12-¼쳣 + NET_DVR_TIME struTime; + NET_ALARM_CVR_SUBINFO_UNION uSubAlarmInfo; //Ϣӽṹ Ϊ8,9,10,11,12ʱЧ + BYTE byRes[256]; + DWORD dwNumber; //ɱݸ + WORD *pNO; //Ϊ0367ʱܻͨţΪ5ʱܻд̺šɱʾֵΧΪ0~65535 +}NET_DVR_ALARMINFO_DEV_V40, *LPNET_DVR_ALARMINFO_DEV_V40; + +typedef struct tagNET_DVR_CONTROL_START_CFG //һʼϢ +{ + BYTE byUseDefine; //ʹԶ壬 0-ʹĬϣ1-ʹԶ + BYTE byRes1; + WORD wCourseIndex; //γ + BYTE byRes[128]; +}NET_DVR_CONTROL_START_CFG, *LPNET_DVR_CONTROL_START_CFG; + +typedef struct tagNET_DVR_CONTROL_DELAY_CFG//һӳ¼Ϣ +{ + BYTE byUseDefine; //ʹԶ壬 0-ʹĬϣ1-ʹԶ + BYTE byRes1; + WORD wDelayTime; //¼ӳʱ<¼ʱԴΪ׼>λs + BYTE byRes[128]; +}NET_DVR_CONTROL_DELAY_CFG, *LPNET_DVR_CONTROL_DELAY_CFG; + +typedef union tagNET_DVR_CONTROL_INFO_UNION //Ϣ +{ + BYTE byLen[132]; //峤 + NET_DVR_CONTROL_START_CFG struStartCfg; //һʼ + NET_DVR_CONTROL_DELAY_CFG struDelayCfg; //һӳ +}NET_DVR_CONTROL_INFO_UNION, *LPNET_DVR_CONTROL_INFO_UNION; + +typedef struct tagNET_DVR_RECORDING_CONTROL_CFG_ +{ + DWORD dwSize; //ṹС + WORD wCmdType; //ͣ0-һʼ1-һ2-һͣ3-һָ4-һӳ,5-һʼ 6-һֹͣ + BYTE byRes1 [2]; // + NET_DVR_CONTROL_INFO_UNION struControlInfo; //ϢʹýϿ + BYTE byRes[256]; // +}NET_DVR_RECORDING_CONTROL_CFG, *LPNET_DVR_RECORDING_CONTROL_CFG; + +typedef struct tagNET_DVR_RECORDING_HOST_CFG +{ + DWORD dwSize; //ṹС + DWORD dwOneKeyDelayTime; //һӳʱ ¼¼ʱ λ S + BYTE byDirectedMode; //ģʽ0-Զ1ֶ2-Զ + BYTE byClassroomType; //ͣ0-Ч1-ң2-ӽ + BYTE byCourseDataStorageEnabled;//ͳǷ洢Ӳ, 0-洢1-洢 + BYTE byElectronicEnlargeMode;//ǷʹõӷŴ󵼲, 0-ʹã1-ʹ + BYTE byRes[124]; // +}NET_DVR_RECORDING_HOST_CFG, *LPNET_DVR_RECORDING_HOST_CFG; + +typedef struct tagNET_DVR_STATISTIC_DATA_COND +{ + DWORD dwSize; + DWORD dwTypeTarget; //ͳƶͣTARGET_TYPE + NET_DVR_TIME struStartTime;//ʼͳʱ + NET_DVR_TIME struStopTime;//ͳʱ + BYTE byRes[280]; +}NET_DVR_STATISTIC_DATA_COND, *LPNET_DVR_STATISTIC_DATA_COND; + +typedef struct tagNET_DVR_STATISTIC_DATA_CFG +{ + DWORD dwSize; + DWORD dwTypeTarget; //ͳƶͣTARGET_TYPE + NET_DVR_TIME struStartTime;//¼ʼʱ + NET_DVR_TIME struStopTime;//¼ʱ + BYTE byRes[300]; +}NET_DVR_STATISTIC_DATA_CFG, *LPNET_DVR_STATISTIC_DATA_CFG; + +//typedef enum +//{ +// NET_SDK_ALL_TARGET = 0, //ͳж +// NET_SDK_PPT_TARGET_ALARM, //PPT +// NET_SDK_PPT_TARGET_VIEW, //PPTͼ +// NET_SDK_STU_SINGLE_ALARM, //ѧ +// NET_SDK_STU_SINGLE_VIEW, //ѧͼ +// NET_SDK_SUT_MULT_ALARM, //ѧ +// NET_SDK_STU_MULT_VIEW, //ѧͼ +// NET_SDK_STU_TEACHER_VIEW, //ʦͼ +// NET_SDK_TEA_UP_DOWN_ALARM, //ʦ½̨ +// NET_SDK_TEA_START_VIEW, //ʦڿͼ +// NET_SDK_BLA_WRITE_ALARM, //д鱨 +// NET_SDK_BLA_WRITE_VIEW, //дͼ +// NET_SDK_TEA_FULL_VIEW, //ʦȫͼ +// NET_SDK_TEA_START_ALARM, //ʦʼڿα +// NET_SDK_TEA_WALK_ALARM, //ʦ߶ +// NET_SDK_TEA_LEFT_ALARM, //ʦ뿪 +// NET_SDK_TEA_RUN_ALARM, //ʦܱ +// NET_SDK_TEA_MULT_ALARM //ʦ˱ +//}TARGET_TYPE; + +typedef struct tagNET_DVR_AUTO_TRACK_CFG +{ + DWORD dwSize; //ṹС + NET_DVR_DIRECT_CONNECT_CHAN_INFO struSDIInfo[MAX_CHANNUM_V30] ; + //SDIͨ豸ʵʵʽģͨǰʹIPͨ + BYTE byCameraType[MAX_CHANNUM_V30]; //ֵͨͣΪ 0-壬1-ʦ۽2-ѧ۽3-ʦȫ4-ѧȫ5-ý壬6-ʦλ,7-ѧλ,8-鶨λ,9-, 0xff-δ + BYTE byRes[64]; // +}NET_DVR_AUTO_TRACK_CFG, *LPNET_DVR_AUTO_TRACK_CFG; + +typedef struct tagNET_DVR_PUBLISH_FTP_CFG +{ + BYTE byProtocolType; //Э 0-FTP1-SFTP + BYTE byRes1; // + WORD wFTPPort; //˿ + BYTE byAddress[MAX_DOMAIN_NAME]; //IP,Ҫ豸 + //ʽΪĸ'.'Ϊ,ΪIPַ + BYTE szUserName[NAME_LEN/*32*/]; //û<> + BYTE szPassWord[PASSWD_LEN/*16*/]; //<> + BYTE szCustomDir[128]; //Ŀ¼,֧Ŀ¼ṹ + BYTE byRes[12]; // +} NET_DVR_PUBLISH_FTP_CFG, *LPNET_DVR_PUBLISH_FTP_CFG; + +typedef struct tagNET_DVR_PUBLISH_HTTP_CFG +{ + BYTE strUrl[256]; //URLַϢ +}NET_DVR_PUBLISH_HTTP_CFG, *LPNET_DVR_PUBLISH_HTTP_CFG; + +typedef struct tagNET_DVR_PUBLISH_FTP_CFG_DIR +{ + BYTE byProtocolType; //Э 0-FTP1-SFTP + BYTE byRes1; // + WORD wFTPPort; //˿ + BYTE byAddress[MAX_DOMAIN_NAME]; //IP,Ҫ豸 + //ʽΪĸ'.'Ϊ,ΪIPַ + BYTE szUserName[NAME_LEN/*32*/]; //û<> + BYTE szPassWord[PASSWD_LEN/*16*/]; //<> + BYTE byDirLevel; /*0 = ʹĿ¼ṹֱӱڸĿ¼,1 = ʹ1Ŀ¼,2=ʹ2Ŀ¼*/ + BYTE byTopDirMode; /* һĿ¼0x1 = ʹ豸,0x2 = ʹ豸,0x3 = ʹ豸ipַ 0xff=ʹԶ*/ + BYTE bySubDirMode; /*Ŀ¼0x1=ʹͨ,0x2=ʹͨţ0x3=ʹÿγƣ0x4-ʹڿڣ0xff-ʹԶ*/ + BYTE byRes2; + BYTE byTopCustomDir[MAX_CUSTOMDIR_LEN/*32*/];/*ԶһĿ¼*/ + BYTE bySubCustomDir[MAX_CUSTOMDIR_LEN/*32*/];/*ԶĿ¼*/ + BYTE byRes[72]; // +}NET_DVR_PUBLISH_FTP_CFG_DIR, *LPNET_DVR_PUBLISH_FTP_CFG_DIR; + + +typedef union tagNET_DVR_PUBLISH_ADD_UNION +{ + BYTE byLen[256]; //峤 + NET_DVR_PUBLISH_HTTP_CFG struHttpCfg; //httpַϢ + NET_DVR_PUBLISH_FTP_CFG struFtpCfg; //ftpַϢ + NET_DVR_PUBLISH_FTP_CFG_DIR struDirFtpCfg; //Ŀ¼ʽFTP +}NET_DVR_PUBLISH_ADD_UNION, *LPNET_DVR_PUBLISH_ADD_UNION; + +typedef struct tagNET_DVR_CHAN_RECORD_PUBLISH_INFO //ͨ¼񷢲Ϣ +{ + BYTE byPublish; //Ƿ񷢲0- 1- + BYTE byRes1[3]; + DWORD dwStreamType; //һͣλʾ + //&0x1-ʾ + //&0x2-ʾ + //&0x4-ʾ + BYTE byRes[12]; // +}NET_DVR_RECORD_PUBLISH_INFO,*LPNET_DVR_RECORD_PUBLISH_INFO; + + +typedef struct tagNET_DVR_PUBLISH_CFG +{ + DWORD dwSize; //ṹС + BYTE byPublishType; //ʽ0-http,1-ftp,2-Dir FTP + BYTE byRes1[3]; // + NET_DVR_PUBLISH_ADD_UNION struPublishAddr; //һַϢ + NET_DVR_RECORD_PUBLISH_INFO struChanPublish[MAX_CHANNUM_V30]; //ͨ¼񷢲Ϣ struChanPublis[0]ʾͨ1Ӧ¼񷢲Ϣ + NET_DVR_RECORD_PUBLISH_INFO struDirectChanPublish; //ͨ¼񷢲Ϣ + BYTE byUploadTime; //Ƿʱftpϴ 0-壬1-2- + BYTE byTimerMode; //0-壬1-αʱϴһڿε¼2-ʱ㷽ʽϴǰ24Сʱ¼ + BYTE byUploadStartHour; //ʱ䶨ʱϴʼʱ ʱ + BYTE byUoploadStartMin; //ʱ䶨ʱϴ ʼʱ + BYTE byRes[1020]; // +}NET_DVR_PUBLISH_CFG, *LPNET_DVR_PUBLISH_CFG; + +typedef struct tagNET_DVR_ONEKEY_PUBLISH_CFG +{ + DWORD dwSize; //ṹС + BYTE byUseDefine; //ʹԶ 0-ʹĬϷϢ1-ʹԶ巢Ϣ + BYTE byRes1[3]; + NET_DVR_RECORD_PUBLISH_INFO struChanPublish[MAX_CHANNUM_V30]; //ͨ¼񷢲Ϣ struChanPublis[0]ʾͨ1Ӧ¼񷢲Ϣ + NET_DVR_RECORD_PUBLISH_INFO struDirectChanPublish; //ͨ¼񷢲Ϣ + NET_DVR_TIME_EX struStartTime; //γ̿ʼʱ + NET_DVR_TIME_EX struEndTime; //γ̽ʱ + BYTE bySchedulePublish; //Ƿ񰴿α0α1α + BYTE sFileName[COURSE_NAME_LEN/*32*/]; //ļ + BYTE byRes[31]; +}NET_DVR_ONEKEY_PUBLISH_CFG,*LPNET_DVR_ONEKEY_PUBLISH_CFG; + +typedef struct tagNET_DVR_COURSE_RECORDING_INFO +{ + DWORD dwSize; + char sCourseName[COURSE_NAME_LEN/*32*/]; + char sInstructorName[INSTRUCTOR_NAME_LEN/*16*/]; + char sCourseDescription[COURSE_DESCRIPTION_LEN /*256*/]; + BYTE byIndex; //γ + BYTE byRes[15]; +}NET_DVR_COURSE_RECORDING_INFO, *LPNET_DVR_COURSE_RECORDING_INFO; + +typedef struct tagNET_DVR_EACH_LESSON_INFO_ +{ + NET_DVR_SCHEDTIME struSchedTime ; //γֹʱ + WORD wCourseIndex ; //γ + WORD wSessionIndex ; //ڴ + BYTE byRes[4] ; // +}NET_DVR_EACH_LESSON_INFO,*LPNET_DVR_EACH_LESSON_INFO ; +// ¼״̬ +typedef struct tagNET_DVR_CURRICULUM_CFG //αƻ +{ + DWORD dwSize ; //ṹС + NET_DVR_EACH_LESSON_INFO struLessonInfo[MAX_TIMESEGMENT_V40/*16*/] ; //ÿڿϢ + BYTE byRes[256] ; // +}NET_DVR_CURRICULUM_CFG, *LPNET_DVR_CURRICULUM_CFG; + +typedef struct tagNET_DVR_DATE_ +{ + WORD wYear; // + BYTE byMonth; // + BYTE byDay; // +}NET_DVR_DATE,*LPNET_DVR_DATE; + +typedef struct _NET_DVR_PPT_DETECT_CFG_ +{ + DWORD dwSize ; + BYTE byEnablePPTDetect; //ǷPPT + BYTE byPptDetLevel; // + BYTE byEnablePartScreen; //Ƿò + BYTE byRes1; + WORD wX; // + WORD wY; + WORD wWidth; + WORD wHeight; + DWORD dwChangePixelNum;//صֵ[0,1000](ps : һͼжڱ仯) + BYTE byRes[28]; +}NET_DVR_PPT_DETECT_CFG,*LPNET_DVR_PPT_DETECT_CFG; + +typedef struct _NET_DVR_SCREEN_SWITCH_ +{ + DWORD dwSize; + BYTE byRes[64]; // +}NET_DVR_SCREEN_SWITCH, *LPNET_DVR_SCREEN_SWITCH; + +typedef struct _NET_DVR_PPT_CHANNEL_CFG_ +{ + DWORD dwSize ; + BYTE byChan[MAX_PPT_CHAN]; + BYTE byRes[32]; +}NET_DVR_PPT_CHANNEL_CFG,*LPNET_DVR_PPT_CHANNEL_CFG; + +typedef struct tagNET_DVR_BACKUP_RECORD_INFO +{ + BYTE byEnable; //Ƿ + BYTE byRes[11]; + //ͣλʾ + //&0x1-ʾ + //&0x2-ʾ + //&0x4-ʾ + DWORD dwStreamType; +}NET_DVR_BACKUP_RECORD_INFO, *LPNET_DVR_BACKUP_RECORD_INFO; + +typedef struct tagNET_DVR_BACKUP_RECORD_PARAM +{ + DWORD dwSize ; + NET_DVR_BACKUP_RECORD_INFO struChanBackUp[MAX_CHANNUM_V30/*64*/]; //Ҫݵͨ,±ӦӦͨ + NET_DVR_BACKUP_RECORD_INFO struDirectedChanBackUp; //ͨϢ + BYTE byRes[256]; // ֽ +}NET_DVR_BACKUP_RECORD_PARAM, *LPNET_DVR_BACKUP_RECORD_PARAM; + +//ڻ +typedef struct tagNET_DVR_INDOOR_UNIT_DEVICEID +{ + SHORT wFloorNumber; // + WORD wRoomNumber; // + WORD wDevIndex; //ڻţ0-10 + BYTE byRes[122]; // +}NET_DVR_INDOOR_UNIT_DEVICEID,*LPNET_DVR_INDOOR_UNIT_DEVICEID; + +//ſڻ +typedef struct tagNET_DVR_OUTDOOR_UNIT_DEVICEID +{ + WORD wPeriod; //ں, Χ[0,9] + WORD wBuildingNumber; //¥ + WORD wUnitNumber; //Ԫ + SHORT wFloorNumber; // + WORD wDevIndex; //ſڻţÿһſڻΨһ0ʼ + BYTE byRes[118]; // +}NET_DVR_OUTDOOR_UNIT_DEVICEID,*LPNET_DVR_OUTDOOR_UNIT_DEVICEID; + +//Χǽ +typedef struct tagNET_DVR_OUTDOOR_FENCE_DEVICEID +{ + WORD wPeriod; //ں, Χ[0,9] + WORD wDevIndex; //ΧǽţÿһſڻΨһ0ʼ + BYTE byRes[124]; // +}NET_DVR_OUTDOOR_FENCE_DEVICEID,*LPNET_DVR_OUTDOOR_FENCE_DEVICEID; + +// +typedef struct tagNET_DVR_MANAGE_UNIT_DEVICEID +{ + WORD wPeriod; //ںţΧ[0,9] + WORD wDevIndex; //ţÿһйΨһ,0ʼ + BYTE byRes[124]; // +}NET_DVR_MANAGE_UNIT_DEVICEID,*LPNET_DVR_MANAGE_UNIT_DEVICEID; + +//ӶԽ豸 +typedef union tagNET_DVR_VIDEO_INTERCOM_UNIT_DEVICEID_UNION +{ + BYTE byLen[128] ; //С + NET_DVR_INDOOR_UNIT_DEVICEID struIndoorUnit; //ڻ + NET_DVR_OUTDOOR_UNIT_DEVICEID struOutdoorUnit; //ſڻ/Ž豸 + NET_DVR_MANAGE_UNIT_DEVICEID struManageUnit; // + NET_DVR_OUTDOOR_FENCE_DEVICEID struFenceUnit; //Χǽ + NET_DVR_OUTDOOR_UNIT_DEVICEID struVillaOutdoorUnit; //ſڻ + NET_DVR_OUTDOOR_UNIT_DEVICEID struAgainConfirmUnit; //ȷϻ +}NET_DVR_VIDEO_INTERCOM_UNIT_DEVICEID_UNION,*LPNET_DVR_VIDEO_INTERCOM_UNIT_DEVICEID_UNION; + +//豸Ųṹ +typedef struct tagNET_DVR_VIDEO_INTERCOM_DEVICEID_CFG +{ + DWORD dwSize; //ṹС + BYTE byUnitType; //豸ͣ1-ſڻ2- 4-Χǽ,5-ſڻ6-ȷϻ7-Ž豸,8-4200ͻ, 9-APP,10-նˣ11-IPC豸12-豸,13-ģڻ + BYTE byIsAutoReg; //ǷԶעᣬ0-1- + BYTE byRes1[2]; // + NET_DVR_VIDEO_INTERCOM_UNIT_DEVICEID_UNION uVideoIntercomUnit; //ȡֵοbyUnitType + BYTE byRes2[128]; // +}NET_DVR_VIDEO_INTERCOM_DEVICEID_CFG,*LPNET_DVR_VIDEO_INTERCOM_DEVICEID_CFG; + +//Ȩ +typedef enum tagPRIVILEGE_PASSWORD_TYPE_ENUM +{ + ENUM_PRIVILEGE_PASSWORD_ENGINEERING = 1, // + ENUM_PRIVILEGE_PASSWORD_SETUPALARM = 2, /// + ENUM_PRIVILEGE_PASSWORD_HOUSEHOLDER_UNLOCK = 3, // + ENUM_PRIVILEGE_PASSWORD_ANTI_HIJACKING = 4, //ٳ + ENUM_PRIVILEGE_PASSWORD_PUBLIC1 = 5, //1 + ENUM_PRIVILEGE_PASSWORD_PUBLIC2 = 6, //2 + ENUM_PRIVILEGE_PASSWORD_PUBLIC3 = 7, //3 + ENUM_PRIVILEGE_PASSWORD_SENDCARD = 8// +}PRIVILEGE_PASSWORD_TYPE_ENUM; + +//ȨϢ +typedef struct tagNET_DVR_PRIVILEGE_PASSWORD_CFG +{ + DWORD dwSize; //ṹС + BYTE byPwdType; //ͣοPRIVILEGE_PASSWORD_TYPE_ENUM + BYTE byRes1[3]; // + BYTE byOldPassword[PASSWD_LEN]; // + BYTE byNewPassword[PASSWD_LEN]; // + BYTE byRes2[128]; // +}NET_DVR_PRIVILEGE_PASSWORD_CFG,*LPNET_DVR_PRIVILEGE_PASSWORD_CFG; + + +//ڻʱ +typedef struct tagNET_DVR_INDOOR_UNIT_OPERATION_TIME_CFG +{ + DWORD dwMaxMonitoringTime; //ʾʱ䣬Χ[10,60] + DWORD dwMaxRingTime; //ʱ䣬Χ[15,60] + DWORD dwCallForwardingTime; //תƳʱʱ䣬Χ[0,20] + DWORD dwRingDurationTime; //峬ʱʱ䣬Χ[30,60]룬Ĭ30 + BYTE byRes[112];// +}NET_DVR_INDOOR_UNIT_OPERATION_TIME_CFG,*LPNET_DVR_INDOOR_UNIT_OPERATION_TIME_CFG; + +//ʱ +typedef struct tagNET_DVR_OUTDOOR_UNIT_OPERATION_TIME_CFG +{ + DWORD dwMaxMessageTime; //ʱ䣬Χ[30,60] + DWORD dwMaxTalkTime; //ͨʱ䣬Χ[90,120] + BYTE byRes[120]; // +}NET_DVR_OUTDOOR_UNIT_OPERATION_TIME_CFG,*LPNET_DVR_OUTDOOR_UNIT_OPERATION_TIME_CFG; + +//ʱ +typedef struct tagNET_DVR_MANAGE_UNIT_OPERATION_TIME_CFG +{ + DWORD dwMaxMonitoringTime; //ʾʱ䣬Χ[10,60] + DWORD dwMaxRingTime; //ʱ䣬Χ[15,60] + DWORD dwMaxTalkTime; //ͨʱ䣬λs + BYTE byRes[116]; // +}NET_DVR_MANAGE_UNIT_OPERATION_TIME_CFG,*LPNET_DVR_MANAGE_UNIT_OPERATION_TIME_CFG; + +//ӶԽʱ +typedef union tagNET_DVR_VIDEO_INTERCOM_OPERATION_TIME_UNION +{ + BYTE byLen[128]; //С + NET_DVR_INDOOR_UNIT_OPERATION_TIME_CFG struIndoorUnit; //ڻ + NET_DVR_OUTDOOR_UNIT_OPERATION_TIME_CFG struOutdoorUnit; //ſڻ/Χǽ/ſڻ/ȷϻ + NET_DVR_MANAGE_UNIT_OPERATION_TIME_CFG struManageUnit; // +}NET_DVR_VIDEO_INTERCOM_OPERATION_TIME_UNION,*LPNET_DVR_VIDEO_INTERCOM_OPERATION_TIME_UNION; + +//ӶԽʱ +typedef struct tagNET_DVR_VIDEO_INTERCOM_OPERATION_TIME_CFG +{ + DWORD dwSize; //ṹС + BYTE byUnitType; //豸ͣ1-ſڻ2-3-ڻ4-Χǽ5-ſڻ6-ȷϻ + BYTE byRes1[3]; // + NET_DVR_VIDEO_INTERCOM_OPERATION_TIME_UNION uVideoIntercomUnit; //ȡֵοbyUnitType + BYTE byRes2[128]; // +}NET_DVR_VIDEO_INTERCOM_OPERATION_TIME_CFG,*LPNET_DVR_VIDEO_INTERCOM_OPERATION_TIME_CFG; + +//ڻ豸 +typedef struct tagNET_DVR_INDOOR_UNIT_RELATEDEV +{ + NET_DVR_IPADDR struOutdoorUnit; //ſڻIP + NET_DVR_IPADDR struManageUnit; //IP + NET_DVR_IPADDR struSIPServer; //SIPIP + NET_DVR_IPADDR struAgainUnit; //ȷϻIP + BYTE byOutDoorType; //ſڻͣ01-Ԫſڻ2-ſڻ + BYTE byOutInConnectMode; //ſڻڷֻģʽ1-ſڻڷֻͬһ,2-ſڻڷֻͬ + BYTE byIndoorConnectMode; //ڷֻģʽ1-ͨ2-ͨ + BYTE byRes1; + NET_DVR_IPADDR struIndoorUnit; //IP + BYTE byManageCenterID[32]; //׼sipģʽʹãID֧֣ĸ@. + BYTE byRes[268]; // +}NET_DVR_INDOOR_UNIT_RELATEDEV,*LPNET_DVR_INDOOR_UNIT_RELATEDEV; + +//ſڻ豸 +typedef struct tagNET_DVR_OUTDOOR_UNIT_RELATEDEV +{ + NET_DVR_IPADDR struMainOutdoorUnit; //ſڻIPſڻʱЧ + NET_DVR_IPADDR struManageUnit; //IP + NET_DVR_IPADDR struSIPServer; //SIPIPſڻʱЧ + BYTE byManageCenterID[32]; //׼sipģʽʹãID֧֣ĸ@. + BYTE byRes[560]; // +}NET_DVR_OUTDOOR_UNIT_RELATEDEV,*LPNET_DVR_OUTDOOR_UNIT_RELATEDEV; + +//ȷϻ豸 +typedef struct tagNET_DVR_AGAIN_RELATEDEV +{ + NET_DVR_IPADDR struSIPServer; //SIPIP + NET_DVR_IPADDR struCenterAddr; //ƽ̨IP + WORD wCenterPort; //ƽ̨˿ + BYTE byRes1[2]; + NET_DVR_IPADDR struIndoorUnit; //IP + NET_DVR_IPADDR struAgainAddr; //ȷϻIPȷϻøֶΣ + BYTE byRes[444];// +}NET_DVR_AGAIN_RELATEDEV,*LPNET_DVR_AGAIN_RELATEDEV; + + +//豸 +typedef struct tagNET_DVR_MANAGE_UNIT_RELATEDEV +{ + NET_DVR_IPADDR struSIPServer; //SIPIP + BYTE byRes[880]; // +}NET_DVR_MANAGE_UNIT_RELATEDEV,*LPNET_DVR_MANAGE_UNIT_RELATEDEV; + + +//ӶԽ豸ṹ +typedef union tagNET_DVR_VIDEO_INTERCOM_UNIT_RELATEDEV_UNION +{ + DWORD dwRes[256] ; //С + NET_DVR_INDOOR_UNIT_RELATEDEV struIndoorUnit; //ڻ + NET_DVR_OUTDOOR_UNIT_RELATEDEV struMainOutdoorUnit; //ſڻ/Χǽ/Ž豸 + NET_DVR_MANAGE_UNIT_RELATEDEV struManageUnit; // + NET_DVR_OUTDOOR_UNIT_RELATEDEV struVillaUnit; //ſڻ + NET_DVR_AGAIN_RELATEDEV struAgainUnit; //ȷϻ +}NET_DVR_VIDEO_INTERCOM_UNIT_RELATEDEV_UNION,*LPNET_DVR_VIDEO_INTERCOM_UNIT_RELATEDEV_UNION; + +//豸ṹ +typedef struct tagNET_DVR_VIDEO_INTERCOM_RELATEDEV_CFG +{ + DWORD dwSize; //ṹС + BYTE byUnitType; //豸ͣ1-ſڻ2-3-ڻ4-Χǽ5-ſڻ6-ȷϻ7-Ž豸 + BYTE byRes1[3]; // + NET_DVR_VIDEO_INTERCOM_UNIT_RELATEDEV_UNION uVideoIntercomUnit; //ȡֵοbyUnitType + BYTE byRes2[128]; // +}NET_DVR_VIDEO_INTERCOM_RELATEDEV_CFG,*LPNET_DVR_VIDEO_INTERCOM_RELATEDEV_CFG; + +typedef struct tagNET_DVR_CONTROL_GATEWAY +{ + DWORD dwSize; //ṹС + DWORD dwGatewayIndex; //Žţ1ʼ + BYTE byCommand; //0-رգ1-򿪣2-ͨ״̬3-ָͨ״̬ + BYTE byLockType; //ͣ0-ͨǰĬ϶Ϊ0,1- + WORD wLockID; //ID1ʼԶ̿ſڻʱ0ʾſڻϽӵ1ʾӿϽӵ + BYTE byControlSrc[NAME_LEN]; //ԴϢ + BYTE byControlType; //ͣ1-ʾ2-ͨ + BYTE byRes3[3]; + BYTE byPassword[PASSWD_LEN]; //룬byLockTypeΪʱЧ + BYTE byRes2[108]; // +}NET_DVR_CONTROL_GATEWAY,*LPNET_DVR_CONTROL_GATEWAY; + + +//ͼƬϢṹ +typedef struct tagNET_DVR_NOTICE_PIC +{ + BYTE* pPicData; //ͼƬָ + DWORD dwPicDataLen; //ͼƬݳ + BYTE byRes[32]; // +}NET_DVR_NOTICE_PIC,*LPNET_DVR_NOTICE_PIC; + +// +typedef struct tagNET_DVR_NOTICE_DATA +{ + DWORD dwSize; //ṹС + NET_DVR_TIME_EX struTime; //ʱ + BYTE byNoticeNumber[MAX_NOTICE_NUMBER_LEN]; // + BYTE byNoticeTheme[MAX_NOTICE_THEME_LEN];// + BYTE byNoticeDetail[MAX_NOTICE_DETAIL_LEN]; // + BYTE byLevel; //ȼ1-Ϣ2-ҵϢ3-Ϣ;4-֪ͨϢ + BYTE byPicNum; //ͼƬ + BYTE byRes1[2]; // + NET_DVR_NOTICE_PIC struNoticePic[MAX_NOTICE_PIC_NUM]; //ͼƬ + BYTE byRes2[128]; // +}NET_DVR_NOTICE_DATA,*LPNET_DVR_NOTICE_DATA; + +//Ȩ֤ +typedef struct tagNET_DVR_OPERATION_AUTH +{ + DWORD dwSize; //ṹС + BYTE byPassword[PASSWD_LEN]; //֤ + BYTE byRes[128]; // +}NET_DVR_OPERATION_AUTH,*LPNET_DVR_OPERATION_AUTH; + +// +typedef enum tagUNLOCK_TYPE_ENUM +{ + ENUM_UNLOCK_PASSWORD = 1, //뿪 + ENUM_UNLOCK_HIJACKING = 2, //ٳֿ + ENUM_UNLOCK_CARD = 3, //ˢ + ENUM_UNLOCK_HOUSEHOLDER = 4, // + ENUM_UNLOCK_CENTER_PLATFORM = 5, //ƽ̨ + ENUM_UNLOCK_BLUETOOTH = 6, // + ENUM_UNLOCK_QR_CODE = 7, //ά뿪 + ENUM_UNLOCK_FACE = 8, // + ENUM_UNLOCK_FINGERPRINT = 9, //ָƿ + ENUM_UNLOCK_DYNAMIC_CODE = 10 //̬Ȩ뿪 +}UNLOCK_TYPE_ENUM; + + +//ͣͲƷȷϣ˶ûʹãʹõDETECTOR_TYPE +// typedef enum tagALARM_ZONE_TYPE_ENUM +// { +// ENUM_ALARM_ZONE_SMOKE = 1, //̸ +// ENUM_ALARM_ZONE_GAS = 2, //ú +// ENUM_ALARM_ZONE_INFRARED = 3, // +// ENUM_ALARM_ZONE_MAGNETIC = 4, //Ŵ +// ENUM_ALARM_ZONE_MANUAL = 5 //ֶ +// }ALARM_ZONE_TYPE_ENUM; + +//¼ +typedef struct tagNET_DVR_UNLOCK_RECORD_INFO +{ + BYTE byUnlockType; //ʽοUNLOCK_TYPE_ENUM + BYTE byRes1[3]; // + BYTE byControlSrc[NAME_LEN]; //ԴϢˢʱΪţʱΪөʯAPP˺ţά뿪ʱΪÿ͵ֻţΪ豸 + DWORD dwPicDataLen; //ͼƬݳ + BYTE* pImage; //ͼƬָ + DWORD dwCardUserID; //ֿID + SHORT nFloorNumber;//ˢʱЧΪ¥ + WORD wRoomNumber; //ԴϢˢʱЧΪţ + WORD wLockID; //ſڻ0-ʾϽӵ1-ʾӿϽӵ + BYTE byRes2[2]; + BYTE byLockName[LOCK_NAME_LEN]; //ˢʱЧƣӦŲ + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID + BYTE byMask; //Ƿ֣0-1-δ֪2-δ֣3- + BYTE byRes[135]; // +}NET_DVR_UNLOCK_RECORD_INFO,*LPNET_DVR_UNLOCK_RECORD_INFO; + +//ϢĶִ +typedef struct tagNET_DVR_NOTICEDATA_RECEIPT_INFO +{ + BYTE byNoticeNumber[MAX_NOTICE_NUMBER_LEN]; // + BYTE byRes[224]; // +}NET_DVR_NOTICEDATA_RECEIPT_INFO,*LPNET_DVR_NOTICEDATA_RECEIPT_INFO; + +//֤¼豸δʵ֣ +typedef struct tagNET_DVR_AUTH_INFO +{ + BYTE byAuthResult; //֤0-Ч1-֤ɹ2-֤ʧ + BYTE byAuthType; //֤ʽ0-Ч1-ָƣ2- + BYTE byRes1[2]; // + BYTE byCardNo[ACS_CARD_NO_LEN/*32*/]; // + DWORD dwPicDataLen; //ͼƬݳȣ֤ʽbyAuthTypeΪʱЧ + BYTE* pImage; //ͼƬָ루֤ʽbyAuthTypeΪʱЧ + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN/*32*/]; //ţԱID + BYTE byRes[180]; // +}NET_DVR_AUTH_INFO, *LPNET_DVR_AUTH_INFO; + +//Ϣϴ +typedef struct tagNET_DVR_UPLOAD_PLATE_INFO +{ + char sLicense[MAX_LICENSE_LEN]; //ƺ + BYTE byColor; //ɫοṹVCA_PLATE_COLOR + BYTE byRes[239]; // +}NET_DVR_UPLOAD_PLATE_INFO, *LPNET_DVR_UPLOAD_PLATE_INFO; + +typedef struct tagNET_DVR_SEND_CARD_INFO +{ + BYTE byCardNo[ACS_CARD_NO_LEN/*32*/]; // + BYTE byRes[224]; // +}NET_DVR_SEND_CARD_INFO, *LPNET_DVR_SEND_CARD_INFO; + +//Ŵ״̬ϱ +typedef struct tagNET_DVR_MAGNETIC_DOOR_STATUS +{ + BYTE byMagneticDoorStatus; //Ŵ״̬ 1- 2-ر + BYTE byRes[255]; // +} NET_DVR_MAGNETIC_DOOR_STATUS, *LPNET_DVR_MAGNETIC_DOOR_STATUS; + +//ӶԽ¼¼Ϣ +typedef union tagNET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON +{ + BYTE byLen[256]; //С + NET_DVR_UNLOCK_RECORD_INFO struUnlockRecord; //¼ + NET_DVR_NOTICEDATA_RECEIPT_INFO struNoticedataReceipt; //ϢĶִ + NET_DVR_AUTH_INFO struAuthInfo; //֤¼豸δʵ֣ + NET_DVR_UPLOAD_PLATE_INFO struUploadPlateInfo; //Ϣϴ + NET_DVR_SEND_CARD_INFO struSendCardInfo; //ſڻ,Ӧ豸ڷ״̬ˢʱϴ¼ + NET_DVR_MAGNETIC_DOOR_STATUS struMagneticDoorStatus; //Ŵ״̬ +}NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON,*LPNET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON; + +//ӶԽ¼¼ +typedef struct tagNET_DVR_VIDEO_INTERCOM_EVENT +{ + DWORD dwSize; //ṹС + NET_DVR_TIME_EX struTime; //ʱ + BYTE byDevNumber[MAX_DEV_NUMBER_LEN]; //豸 + BYTE byEventType; //¼Ϣͣ1-¼2-ϢĶִ3-֤¼4-Ϣϴ5Ƿˢ¼6-ſڻ¼(ҪſڻܣˢʱŻϴ¼)7-ּ¼8-Ŵ״̬¼ + BYTE byPicTransType; //ͼƬݴ䷽ʽ: 0-ƣ1-url + BYTE byRes1[2]; // + NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON uEventInfo; //¼ϢݲοbyEventTypeȡֵ + DWORD dwIOTChannelNo; //IOTͨ + BYTE byRes2[252]; // +}NET_DVR_VIDEO_INTERCOM_EVENT,*LPNET_DVR_VIDEO_INTERCOM_EVENT; + + +//Ϣ +typedef struct tagNET_DVR_ZONE_ALARM_INFO +{ + BYTE byZoneName[NAME_LEN]; // + DWORD dwZonendex; // + BYTE byZoneType; //ͣοDETECTOR_TYPE + BYTE byRes[219]; // +}NET_DVR_ZONE_ALARM_INFO,*LPNET_DVR_ZONE_ALARM_INFO; + +//Ϣ +typedef struct tagNET_DVR_LOCK_ALARM_INFO +{ + DWORD dwLockID; //ID0ʼ + BYTE byRes[252]; //ֽ +}NET_DVR_LOCK_ALARM_INFO, *LPNET_DVR_LOCK_ALARM_INFO; + +typedef union tagNET_DVR_VIDEO_INTERCOM_ALARM_INFO_UNION +{ + BYTE byLen[256]; //С + NET_DVR_ZONE_ALARM_INFO struZoneAlarm; // + NET_DVR_LOCK_ALARM_INFO struLockAlarm; //Ϣ +}NET_DVR_VIDEO_INTERCOM_ALARM_INFO_UNION,*LPNET_DVR_VIDEO_INTERCOM_ALARM_INFO_UNION; + + +//ӶԽϢ +typedef struct tagNET_DVR_VIDEO_INTERCOM_ALARM +{ + DWORD dwSize; //ṹС + NET_DVR_TIME_EX struTime; //ʱ + BYTE byDevNumber[MAX_DEV_NUMBER_LEN]; //豸 + BYTE byAlarmType; //ͣ1-2-𱨾3-ٳֱ4-뿪ʧܱ,5-û6-û 7-SOS 8-ͨԽ9-ٳָƱ 10-ٳ뱨11-ű12-13-㱨 ,14-ֹ,15- + //16-Žȫģ𱨾17-豸ʼԽ18-豸ֹͣԽ, 19-ȡSOS ,20-δֱ 21-뱨 22-ָ 23-Ŵű򿪣24-䱨25-ȡ䱨26-ҩѣ27-±28-ȡҩ + BYTE byRes1[3]; // + NET_DVR_VIDEO_INTERCOM_ALARM_INFO_UNION uAlarmInfo; //ϢݲοֶbyAlarmTypeȡֵ + WORD wLockID; //0-ʾſڻϽӵ1-ʾӿϽӵΪ56ʱЧ + BYTE byRes3[2]; // + DWORD dwIOTChannelNo; //IOTͨ + BYTE byRes2[248]; // +}NET_DVR_VIDEO_INTERCOM_ALARM,*LPNET_DVR_VIDEO_INTERCOM_ALARM; + +typedef struct tagNET_DVR_PEOPLE_REGION +{ + BYTE byID;//ID + BYTE byNumber;//еԱ 0-ʾûԱ + BYTE byDressType;//װ 0-δ֪1-ۡ2-¡3-Ʒ + BYTE byRes; + NET_VCA_RECT struRegion; + DWORD dwPicLen;//ͼƬ (0ʾûг) + char* pPicBuffer;//ͼƬ + BYTE byRes1[24];//(Ԥչ) +}NET_DVR_PEOPLE_REGION,*LPNET_DVR_PEOPLE_REGION; + +typedef struct tagNET_DVR_PEOPLE_DETECTION_RESULT +{ + DWORD dwSize; + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + NET_VCA_DEV_INFO struDevInfo;//ǰ豸Ϣ + NET_DVR_PEOPLE_REGION struPeopleRegion[MAX_PEOPLE_DETECTION_NUM/*8*/]; + /*Աⱨ + 0- δ֪ + 1- ѶڴܶŹ + 2- ѶԱ˯ⱨ + 3- ѶԱⱨ + 4- Ա⣩ + */ + BYTE byPeopleAlarmType; + BYTE byRes[255]; +}NET_DVR_PEOPLE_DETECTION_RESULT,*LPNET_DVR_PEOPLE_DETECTION_RESULT; + +typedef struct tagNET_DVR_SUPPLEMENTLIGHT +{ + BYTE byEnable;//ʹ 0-أ1- + BYTE byMode;//ģʽ 0-Զ1-ʱ + BYTE byHighBeamBrightness;//Զ[0,10] + BYTE byLowBeamBrightness;//[0,10] + NET_DVR_SCHEDULE_DAYTIME struSchedTime;//ʱʱ + WORD wFilteringTime;//ʱ(s)[0,120] + BYTE byBrightness;//[0,10]ָ֧òʱ byHighBeamBrightnessbyLowBeamBrightnessЧ + BYTE bySensitivity;//[0,7],Ĭ4byModeΪԶʱЧ + BYTE byBrightnessRegulatMode;// ȵģʽ0-ֶ1-ԶΪԶʱbyBrightnessЧ + BYTE byMaxBrightness;//ȣȵģʽΪԶʱЧ[0,100]Ĭ50 + BYTE byRes[58]; +}NET_DVR_SUPPLEMENTLIGHT,*LPNET_DVR_SUPPLEMENTLIGHT; + +typedef struct tagNET_DVR_EXTERNALDEVICE +{ + DWORD dwSize;//ṹС + NET_DVR_SUPPLEMENTLIGHT struSupplementLight;//ƽṹϢ + BYTE byRes[512]; +}NET_DVR_EXTERNALDEVICE,*LPNET_DVR_EXTERNALDEVICE; +typedef struct tagNET_DVR_TEMPERATURE_TRIGGER_COND +{ + DWORD dwSize;//ṹС + DWORD dwChan;//ͨ + DWORD dwPreset;//Ԥõ + BYTE byRes[256]; +}NET_DVR_TEMPERATURE_TRIGGER_COND, *LPNET_DVR_TEMPERATURE_TRIGGER_COND; +//(֧֣ʵ֣豸ڲ) +typedef struct tagNET_DVR_BUILTIN_SUPPLEMENTLIGHT +{ + DWORD dwSize;//ṹС + BYTE byMode;//ģʽ 0-ʱ1-2-رգ3-Զǹ㷨ʶ + BYTE byBrightnessLimit;//[0,100] + BYTE bySupplementLightMode;//,0~׹ģʽ,1~ģʽ + BYTE byMixedLightRegulatMode;//ϲȵģʽ,0~Զ,1~ֶ,bySupplementLightMode = 1ʱЧ + BYTE byLrLightBrightness;//ȿ[0,100],byMixedLightRegulatMode = 1ʱЧ + BYTE byHighLrLightBrightness;// Զ[0,100],byMixedLightRegulatMode = 1ʱЧ + BYTE byHighBrightnessLimit;// Զ׹[0,100],byMixedLightRegulatMode = 1ʱЧ + BYTE byLowLrLightBrightness;// [0,100],byMixedLightRegulatMode = 1ʱЧ + NET_DVR_SCHEDULE_DAYTIME struSchedTime;//ʱʱ + BYTE byLowBrightnessLimit;//׹[0,100],byMixedLightRegulatMode = 1ʱЧ + BYTE byWhiteLightBrightness;// ׹ + BYTE byIrLightbrightnessLimit;//, + BYTE byWhiteLightbrightnessLimit;//,׹ + BYTE byRes1[252]; +}NET_DVR_BUILTIN_SUPPLEMENTLIGHT,*LPNET_DVR_BUILTIN_SUPPLEMENTLIGHT; +typedef struct tagNET_DVR_OIS_CFG +{ + DWORD dwSize;//ṹС + BYTE byMode; //Ƿѧ0-رգ1-ͨ2-ר + BYTE byOISLevel; //ѧȼ0-ͣ1-У2- + BYTE byOISSensitivity;//ѧȣ0-ͣ1-У2- + BYTE byRes[125]; +}NET_DVR_OIS_CFG, *LPNET_DVR_OIS_CFG; + +typedef struct tagNET_DVR_MACFILTER_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //ǷMACַˣ0-1- + BYTE byPermissionType; //MACַͣ0-ֹ1- + BYTE byRes1[2]; + BYTE szMacAddress[MAC_ADDRESS_NUM][MACADDR_LEN]; + BYTE byRes[128]; +}NET_DVR_MACFILTER_CFG, *LPNET_DVR_MACFILTER_CFG; + +typedef struct tagNET_DVR_EAGLEFOCUSING_SENCE +{ + BYTE byRuleType;//ͣ0- + BYTE bySceneID;//ID0- 1DZʾ1,2ʾ2 + WORD wRate;//ʣ50-100 + NET_VCA_POLYGON struRegion;// Χ + BYTE bySpotNum;//ڱ궨ȡٸб궨3-5Ĭ3 + BYTE byRes[127]; +}NET_DVR_EAGLEFOCUSING_SENCE, *LPNET_DVR_EAGLEFOCUSING_SENCE; + +typedef struct tagNET_DVR_EAGLEFOCUSING_CALCFG +{ + DWORD dwSize; + BYTE byEnabled;//Ƿ궨0-ֹ궨1-ʼ궨ýڵʱЧȡʱЧ + BYTE byRes1[3]; + NET_DVR_EAGLEFOCUSING_SENCE struEagleFoucsing[MAX_SENCE_NUM/*16*/]; + BYTE byRes[512]; +}NET_DVR_EAGLEFOCUSING_CALCFG, *LPNET_DVR_EAGLEFOCUSING_CALCFG; + +typedef struct tagNET_DVR_EAGLEFOCUSING_CTRL +{ + DWORD dwSize; + BYTE byEnable;//ʹܣ0-رӥӾ۽1-ӥӾ۽ + BYTE byHeightCompensationEnable;//߶Ȳʹ + BYTE byHeightCompensationValue;//߶Ȳֵ, Χ1-5,Ĭ3,һֵ0.5 + BYTE byRes[509]; +}NET_DVR_EAGLEFOCUSING_CTRL, *LPNET_DVR_EAGLEFOCUSING_CTRL; + +typedef struct tagNET_DVR_SMARTCALIBRATION_REGION +{ + BYTE byRuleID;// + BYTE byMode;//0-default Mode,1-pix Mode,2-actual Mode + BYTE byStrategy;//˲ 0-area(),1-widthHeight() () + BYTE byPriority;//ȼ 0-Ĭֵ, 1-ͣ2-У3- + NET_VCA_POLYGON struMaxTargetSize;//Ŀߴ + NET_VCA_POLYGON struMinTargetSize;//СĿߴ +}NET_DVR_SMARTCALIBRATION_REGION, *LPNET_DVR_SMARTCALIBRATION_REGION; + +#define RULE_REGION_MAX 128 +typedef struct tagNET_DVR_SMARTCALIBRATION_CFG +{ + DWORD dwSize;//ṹС + /* SmartType: + 0-linedetection, + 1-fielddetection, + 2-regionEntrance, + 3-regionExiting, + 4-loitering, + 5-rapidMove, + 6-parking, + 7-unattendedBaggage, + 8-attendedBaggage + */ + BYTE bySmartType;// + BYTE byRes[3]; + NET_DVR_SMARTCALIBRATION_REGION strRegion[RULE_REGION_MAX/*128*/]; + BYTE byRes1[128]; +}NET_DVR_SMARTCALIBRATION_CFG, *LPNET_DVR_SMARTCALIBRATION_CFG; + +typedef struct tagNET_DVR_SMARTCALIBRATION_COND +{ + DWORD dwSize;//ṹС + /* SmartType: + 0-linedetection, + 1-fielddetection, + 2-regionEntrance, + 3-regionExiting, + 4-loitering, + 5-rapidMove, + 6-parking, + 7-unattendedBaggage, + 8-attendedBaggage + */ + BYTE bySmartType;// + BYTE byRes[3]; + DWORD dwChannel;//ͨ + BYTE byRes1[128]; +}NET_DVR_SMARTCALIBRATION_COND, *LPNET_DVR_SMARTCALIBRATION_COND; + +typedef struct tagNET_DVR_SMARTCALIBRATION_REGION_CFG +{ + DWORD dwSize;//ṹС + NET_DVR_SMARTCALIBRATION_REGION strRegion[RULE_REGION_MAX/*128*/]; + BYTE byRes1[128]; +}NET_DVR_SMARTCALIBRATION_REGION_CFG, *LPNET_DVR_SMARTCALIBRATION_REGION_CFG; + + +typedef struct tagNET_DVR_OSD_BATTERY_POWER_CFG +{ + DWORD dwSize; + NET_VCA_POINT struOSDBatteryPower;//ͳʾOSDʾϽ + BYTE byOSDBatteryPower;//صOSDʾʹ, 0-1- + BYTE byRes[63]; +}NET_DVR_OSD_BATTERY_POWER_CFG, *LPNET_DVR_OSD_BATTERY_POWER_CFG; + +#define CARD_PARAM_CARD_VALID 0x00000001 //ǷЧ +#define CARD_PARAM_VALID 0x00000002 //Чڲ +#define CARD_PARAM_CARD_TYPE 0x00000004 //Ͳ +#define CARD_PARAM_DOOR_RIGHT 0x00000008 //Ȩ޲ +#define CARD_PARAM_LEADER_CARD 0x00000010 //׿ +#define CARD_PARAM_SWIPE_NUM 0x00000020 //ˢ +#define CARD_PARAM_GROUP 0x00000040 //Ⱥ +#define CARD_PARAM_PASSWORD 0x00000080 // +#define CARD_PARAM_RIGHT_PLAN 0x00000100 //Ȩ޼ƻ +#define CARD_PARAM_SWIPED_NUM 0x00000200 //ˢ + +typedef struct tagNET_DVR_VALID_PERIOD_CFG +{ + BYTE byEnable; //ʹЧڣ0-ʹܣ1ʹ + BYTE byBeginTimeFlag; //Ƿʼʱı־0-ƣ1- + BYTE byEnableTimeFlag; //Ƿֹʱı־0-ƣ1- + BYTE byTimeDurationNo; //Ч,0ʼʱͨSDKøƿʱֻҪЧɣԼ + NET_DVR_TIME_EX struBeginTime; //Чʼʱ + NET_DVR_TIME_EX struEndTime; //Чڽʱ + BYTE byTimeType; //ʱͣ0-豸ʱ䣨Ĭϣ1-UTCʱ䣨struBeginTimestruEndTimeֶЧ + BYTE byRes2[31]; +}NET_DVR_VALID_PERIOD_CFG, *LPNET_DVR_VALID_PERIOD_CFG; + +typedef struct tagNET_DVR_CARD_CFG +{ + DWORD dwSize; + DWORD dwModifyParamType; + // Ҫ޸ĵĿÿʱЧλʾÿλһֲ1ΪҪ޸ģ0Ϊ޸ + // #define CARD_PARAM_CARD_VALID 0x00000001 //ǷЧ + // #define CARD_PARAM_VALID 0x00000002 //Чڲ + // #define CARD_PARAM_CARD_TYPE 0x00000004 //Ͳ + // #define CARD_PARAM_DOOR_RIGHT 0x00000008 //Ȩ޲ + // #define CARD_PARAM_LEADER_CARD 0x00000010 //׿ + // #define CARD_PARAM_SWIPE_NUM 0x00000020 //ˢ + // #define CARD_PARAM_GROUP 0x00000040 //Ⱥ + // #define CARD_PARAM_PASSWORD 0x00000080 // + // #define CARD_PARAM_RIGHT_PLAN 0x00000100 //Ȩ޼ƻ + // #define CARD_PARAM_SWIPED_NUM 0x00000200 //ˢ + BYTE byCardNo[ACS_CARD_NO_LEN]; // + BYTE byCardValid; //ǷЧ0-Ч1-ЧɾʱΪ0ɾȡʱֶʼΪ1 + BYTE byCardType; //ͣ1-ͨ2-Ⱥ忨3-ֹ4-Ѳ5-вȿ6-7-8-Ĭͨ + BYTE byLeaderCard; //ǷΪ׿1-ǣ0- + BYTE byRes1; + DWORD dwDoorRight; //Ȩޣλʾ1ΪȨޣ0ΪȨޣӵλλʾ1-NǷȨ + NET_DVR_VALID_PERIOD_CFG struValid; //Чڲ + DWORD dwBelongGroup; //Ⱥ飬λʾ1-ڣ0-ڣӵλλʾǷȺ1-N + BYTE byCardPassword[CARD_PASSWORD_LEN]; // + BYTE byCardRightPlan[MAX_DOOR_NUM][MAX_CARD_RIGHT_PLAN_NUM]; //Ȩ޼ƻȡֵΪƻģţͬŲͬƻģȨ޻ķʽ + DWORD dwMaxSwipeTime; //ˢ0Ϊ޴ + DWORD dwSwipeTime; //ˢ + WORD wRoomNumber; // + SHORT wFloorNumber; // + BYTE byRes2[20]; +}NET_DVR_CARD_CFG, *LPNET_DVR_CARD_CFG; + +typedef struct _NET_DVR_CARD_CFG_COND +{ + DWORD dwSize; + DWORD dwCardNum; //ûȡȡʱΪ0xffffffffʾȡпϢ + BYTE byCheckCardNo; //豸ǷпУ飬0-У飬1-У + BYTE byRes1[3]; + WORD wLocalControllerID; //͵ؿţʾ͵ؿ·߿0Ž + BYTE byRes2[2]; + DWORD dwLockID; //ID + BYTE byRes3[20]; +}NET_DVR_CARD_CFG_COND, *LPNET_DVR_CARD_CFG_COND; + +typedef struct _NET_DVR_CARD_CFG_SEND_DATA +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; // + DWORD dwCardUserId; //ֿID + BYTE byRes[12]; +}NET_DVR_CARD_CFG_SEND_DATA, *LPNET_DVR_CARD_CFG_SEND_DATA; + +typedef struct tagNET_DVR_CARD_USER_INFO_CFG /*Ӧýṹ*/ +{ + DWORD dwSize; + BYTE sUsername[NAME_LEN]; /* û*/ + BYTE byAssociateNetUser; //û + BYTE byRes2[255]; //byRes2[0]--籨û +}NET_DVR_CARD_USER_INFO_CFG, *LPNET_DVR_CARD_USER_INFO_CFG; + +#define ACS_PARAM_DOOR_STATUS_WEEK_PLAN 0x00000001 //״̬ܼƻ +#define ACS_PARAM_VERIFY_WEEK_PALN 0x00000002 //ܼƻ +#define ACS_PARAM_CARD_RIGHT_WEEK_PLAN 0x00000004 //Ȩܼƻ +#define ACS_PARAM_DOOR_STATUS_HOLIDAY_PLAN 0x00000008 //״̬ռƻ +#define ACS_PARAM_VERIFY_HOLIDAY_PALN 0x00000010 //ռƻ +#define ACS_PARAM_CARD_RIGHT_HOLIDAY_PLAN 0x00000020 //Ȩ޼ռƻ +#define ACS_PARAM_DOOR_STATUS_HOLIDAY_GROUP 0x00000040 //״̬ +#define ACS_PARAM_VERIFY_HOLIDAY_GROUP 0x00000080 //֤ʽ +#define ACS_PARAM_CARD_RIGHT_HOLIDAY_GROUP 0x00000100 //Ȩ޼ +#define ACS_PARAM_DOOR_STATUS_PLAN_TEMPLATE 0x00000200 //״̬ƻģ +#define ACS_PARAM_VERIFY_PALN_TEMPLATE 0x00000400 //֤ʽƻģ +#define ACS_PARAM_CARD_RIGHT_PALN_TEMPLATE 0x00000800 //Ȩ޼ƻģ +#define ACS_PARAM_CARD 0x00001000 // +#define ACS_PARAM_GROUP 0x00002000 //Ⱥ +#define ACS_PARAM_ANTI_SNEAK_CFG 0x00004000 //DZز +#define ACS_PAPAM_EVENT_CARD_LINKAGE 0x00008000 //¼ +#define ACS_PAPAM_CARD_PASSWD_CFG 0x00010000 //뿪ʹܲ +#define ACS_PARAM_PERSON_STATISTICS_CFG 0x00020000 //ͳƲ +#define ACS_PARAM_BLOCKLIST_PICTURE 0x00040000 //ֹͼƬ +#define ACS_PARAM_ID_BLOCKLIST 0x00080000 //ֹ֤ +#define ACS_PARAM_EXAM_INFO 0x00100000 //Ϣ +#define ACS_PARAM_EXAMINEE_INFO 0x00200000 //Ϣ +#define ACS_PARAM_FAILED_FACE_INFO 0x00400000 //豸ģʧܼ¼ + +typedef struct tagNET_DVR_ACS_PARAM_TYPE +{ + DWORD dwSize; + DWORD dwParamType; //ͣλʾ + //#define ACS_PARAM_DOOR_STATUS_WEEK_PLAN 0x00000001 //״̬ܼƻ + //#define ACS_PARAM_VERIFY_WEEK_PALN 0x00000002 //ܼƻ + //#define ACS_PARAM_CARD_RIGHT_WEEK_PLAN 0x00000004 //Ȩܼƻ + //#define ACS_PARAM_DOOR_STATUS_HOLIDAY_PLAN 0x00000008 //״̬ռƻ + //#define ACS_PARAM_VERIFY_HOLIDAY_PALN 0x00000010 //ռƻ + //#define ACS_PARAM_CARD_RIGHT_HOLIDAY_PLAN 0x00000020 //Ȩ޼ռƻ + //#define ACS_PARAM_DOOR_STATUS_HOLIDAY_GROUP 0x00000040 //״̬ + //#define ACS_PARAM_VERIFY_HOLIDAY_GROUP 0x00000080 //֤ʽ + //#define ACS_PARAM_CARD_RIGHT_HOLIDAY_GROUP 0x00000100 //Ȩ޼ + //#define ACS_PARAM_DOOR_STATUS_PLAN_TEMPLATE 0x00000200 //״̬ƻģ + //#define ACS_PARAM_VERIFY_PALN_TEMPLATE 0x00000400 //֤ʽƻģ + //#define ACS_PARAM_CARD_RIGHT_PALN_TEMPLATE 0x00000800 //Ȩ޼ƻģ + //#define ACS_PARAM_CARD 0x00001000 // + //#define ACS_PARAM_GROUP 0x00002000 //Ⱥ + //#define ACS_PARAM_ANTI_SNEAK_CFG 0x00004000 //DZز + //#define ACS_PAPAM_EVENT_CARD_LINKAGE 0x00008000 //¼ + //#define ACS_PAPAM_CARD_PASSWD_CFG 0x00010000 //뿪ʹܲ + //#define ACS_PARAM_PERSON_STATISTICS_CFG 0x00020000 //ͳƲ + //#define ACS_PARAM_BLOCKLIST_PICTURE 0x00040000 //ֹͼƬ + //#define ACS_PARAM_ID_BLOCKLIST 0x00080000 //ֹ֤ + //#define ACS_PARAM_EXAM_INFO 0x00100000 //Ϣ + //#define ACS_PARAM_EXAMINEE_INFO 0x00200000 //Ϣ + //#define ACS_PARAM_FAILED_FACE_INFO 0x00400000 //豸ģʧܼ¼ + WORD wLocalControllerID; //͵ؿ[1,64],0Ž + BYTE byRes[30]; +}NET_DVR_ACS_PARAM_TYPE, *LPNET_DVR_ACS_PARAM_TYPE; + +typedef struct tagNET_DVR_VIDEO_INTERCOM_IOIN_CFG +{ + DWORD dwSize; // ṹС + BYTE byIOUseType; //;0-ã1-Űť2-״̬0xff-Զ + BYTE byRes[63]; // ֽ +}NET_DVR_VIDEO_INTERCOM_IOIN_CFG, *LPNET_DVR_VIDEO_INTERCOM_IOIN_CFG; + +typedef struct tagNET_DVR_VIDEO_INTERCOM_IOOUT_CFG +{ + DWORD dwSize; // ṹС + BYTE byIOUseType; //;0-ã1-0xff-Զ + BYTE byRes[63]; // ֽ +}NET_DVR_VIDEO_INTERCOM_IOOUT_CFG, *LPNET_DVR_VIDEO_INTERCOM_IOOUT_CFG; + +typedef struct tagNET_DVR_ELEVATORCONTROL_CFG +{ + DWORD dwSize; // ṹС + BYTE byEnable; //Ƿݿأ0-1- + BYTE byRes1; // + BYTE byInterfaceType; //ӿͣ0-ޣ1-RS485,2- + BYTE byRS485Protocol; //RS485Эͣ0-δ֪1-˽У0xff-Զ壬byInterfaceTypeȡֵΪ1ʱЧ + BYTE byNetworkType; //Эͣ0-δ֪1-˽У0xff-Զ壬byInterfaceTypeȡֵΪ2ʱЧ + BYTE byRes[63]; // ֽ +}NET_DVR_ELEVATORCONTROL_CFG, *LPNET_DVR_ELEVATORCONTROL_CFG; + +typedef struct tagNET_DVR_ELEVATORCONTROL_CFG_V40 +{ + DWORD dwSize; // ṹС + BYTE byEnable; //Ƿݿأ0-1- + BYTE byRes1; // + BYTE byInterfaceType; //ӿͣ0-ޣ1-RS485,2- + BYTE byRS485Protocol; //RS485Эͣ0-δ֪1-˽У0xff-Զ壬byInterfaceTypeȡֵΪ1ʱЧ + BYTE byNetworkType; //Эͣ0-δ֪1-˽У0xff-Զ壬byInterfaceTypeȡֵΪ2ʱЧ + BYTE byRes2; // + WORD wServerPort; //ݿط˿ںţЭΪ1-˽ ʱЧ + NET_DVR_IPADDR struServerIP; //ݿطIPЭΪ1-˽ ʱЧ + BYTE byRes[256]; // ֽ +}NET_DVR_ELEVATORCONTROL_CFG_V40, *LPNET_DVR_ELEVATORCONTROL_CFG_V40; + +typedef struct tagNET_DVR_ELEVATORCONTROL_CFG_V50 +{ + DWORD dwSize; //ṹС + BYTE byEnable; //Ƿݿأ0-1- + BYTE byNegativeFloor; //¥ + BYTE byInterfaceType; //ӿͣ0-ޣ1-RS485,2- + BYTE byRS485Protocol; //RS485Эͣ0-δ֪1-˽У0xff-Զ壬byInterfaceTypeȡֵΪ1ʱЧ + BYTE byNetworkType; //Эͣ0-δ֪1-˽У0xff-Զ壬byInterfaceTypeȡֵΪ2ʱЧ + BYTE byElevatorControlType; //ݿͣ0-Ч1-DS-K22012-DS-K22100xff-Զ + WORD wServerPort; //ݿط˿ںţЭΪ1-˽ ʱЧ + NET_DVR_IPADDR struServerIP; //ݿطIPЭΪ1-˽ ʱЧ + BYTE sUserName[NET_DVR_LOGIN_USERNAME_MAX_LEN]; //ûЭΪ1-˽ ʱЧֻãܻȡ + BYTE sPassword[NET_DVR_LOGIN_PASSWD_MAX_LEN]; //룬ЭΪ1-˽ ʱЧֻãܻȡ + BYTE byRes[256]; //ֽ +}NET_DVR_ELEVATORCONTROL_CFG_V50, *LPNET_DVR_ELEVATORCONTROL_CFG_V50; + +typedef struct tagNET_DVR_ROOM_CUSTOM_COND +{ + DWORD dwSize; + DWORD dwRoomNumber; //ĿʱЧ + BYTE byRes[128]; +}NET_DVR_ROOM_CUSTOM_COND, *LPNET_DVR_ROOM_CUSTOM_COND; + +typedef struct tagNET_DVR_ROOM_CUSTOM_CFG +{ + DWORD dwSize; + DWORD dwFormerRoomNo; //ԭ + DWORD dwCustomRoomNo; //Զ + BYTE byRes[128]; +}NET_DVR_ROOM_CUSTOM_CFG, *LPNET_DVR_ROOM_CUSTOM_CFG; + +typedef struct tagNET_DVR_ROOM_CUSTOM_STATUS +{ + DWORD dwSize; + DWORD dwFormerRoomNo; //ԭ + BYTE byStatus; //·״̬0-Ч1-ʧܣ2-У3-ɹ + BYTE byRes[127]; +}NET_DVR_ROOM_CUSTOM_STATUS, *LPNET_DVR_ROOM_CUSTOM_STATUS; + +typedef struct tagNET_DVR_VIDEOINTERCOM_STREAM +{ + DWORD dwSize; + BYTE byVisDevID[MAX_NAMELEN]; // ӶԽ豸ţţ豸ΪIPCʱȫΪ0 + BYTE byDeviceName[NAME_LEN]; //豸 + BYTE bySourceType; //ƵԴͣ0壬1-IPC2-DVR/DVS/NVR3-ſڻ4-Χǽ5-ȷϻ + BYTE byRes[255]; // +}NET_DVR_VIDEOINTERCOM_STREAM, LPNET_DVR_VIDEOINTERCOM_STREAM; + +#define UNLOCK_PASSWORD_LEN 8 //볤 +#define LOCAL_CONTROLLER_NAME_LEN 32//͵ؿƳ +typedef struct tagNET_DVR_DOOR_CFG +{ + DWORD dwSize; + BYTE byDoorName[DOOR_NAME_LEN]; // + BYTE byMagneticType; //Ŵͣ0-գ1- + BYTE byOpenButtonType; //Űťͣ0-գ1- + BYTE byOpenDuration; //ųʱ䣬1-255s¥̵ʱ䣩 + BYTE byAccessibleOpenDuration; //Ⱥ忨ųʱ䣬1-255s + BYTE byMagneticAlarmTimeout; //Ŵżⳬʱʱ䣬0-255s0ʾ + BYTE byEnableDoorLock; //ǷñŻ0-1- + BYTE byEnableLeaderCard; //Ƿ׿ܣ0-1- + BYTE byLeaderCardMode; //׿ģʽ0-׿ܣ1-׿ģʽ2-׿Ȩģʽʹ˴ֶΣbyEnableLeaderCardЧ + DWORD dwLeaderCardOpenDuration; //׿ʱ䣬1-1440min + BYTE byStressPassword[STRESS_PASSWORD_LEN]; //в + BYTE bySuperPassword[SUPER_PASSWORD_LEN]; // + BYTE byUnlockPassword[UNLOCK_PASSWORD_LEN]; //NET_DVR_LOCAL_CONTROLLER_STATUS + BYTE byUseLocalController; //ֻǷھ͵ؿϣ0-1- + BYTE byRes1; + WORD wLocalControllerID; //ֻ͵ؿţ1-64,0δע + WORD wLocalControllerDoorNumber; //ֻ͵ؿűţ1-4,0δע + WORD wLocalControllerStatus; //ֻ͵ؿ״̬0-ߣ1-ߣ2-·1ϵRS48513-·1ϵRS48524-·2ϵRS48515-·2ϵRS48526-·3ϵRS48517-·3ϵRS48528-·4ϵRS48519-·4ϵRS4852ֻ + BYTE byLockInputCheck; //Ƿ(1ֽڣ0ã1ãĬϲ) + BYTE byLockInputType; //(1ֽڣ0գ1Ĭϳ) + BYTE byDoorTerminalMode; //ضӹģʽ(1ֽڣ0̣1ͨĬϷ) + BYTE byOpenButton; //ǷÿŰť(1ֽڣ0ǣ1Ĭ) + BYTE byLadderControlDelayTime; //ݿطÿӳʱ䣬1-255min + BYTE byRes2[43]; +}NET_DVR_DOOR_CFG, *LPNET_DVR_DOOR_CFG; + +typedef struct tagNET_DVR_VIS_DEV_INFO +{ + DWORD dwSize; + BYTE szDevNumber[MAX_DEV_NUMBER_LEN]; //豸 + BYTE byRes[64]; // +}NET_DVR_VIS_DEV_INFO,*LPNET_DVR_VIS_DEV_INFO; + +typedef struct tagNET_DVR_VIS_REGISTER_INFO +{ + DWORD dwSize; + DWORD dwID; //ID + BYTE szDevNumber[MAX_DEV_NUMBER_LEN]; //豸 + BYTE byMACAddr[MACADDR_LEN]; //macַ + BYTE byRes1[2]; // + BYTE sSerialNumber[SERIALNO_LEN]; //豸к + NET_DVR_IPADDR struDevIP; //豸IPַ + NET_DVR_TIME_EX struRegisterTime; //עʱ + BYTE byRegisterType; //עͣ0-1-ſڻ2-3-ڻ4-Χǽ5-ſڻ6-ȷϻ7-8700ͻˡ8-4200ͻ + BYTE byRes[127]; // +}NET_DVR_VIS_REGISTER_INFO,*LPNET_DVR_VIS_REGISTER_INFO; + +typedef struct tagNET_DVR_CALLER_INFO +{ + DWORD dwSize; //ṹС + WORD wBuildingNo; //¥ + SHORT wFloorNo; // + BYTE byZoneNo; //ں + BYTE byUnitNo; //Ԫ + BYTE byDevNo; //豸 + BYTE byDevType; //豸ͣ1-ſڻ2-3-ڻ4-Χǽ5-ſڻ6-ȷϻ7-8700ͻˣ8-4200ͻˣ9-APP, 10- 11-VOIPͻˣ12-IPC豸 + BYTE byLockNum;//0-ϵ߼ߣֵ-ʵ + BYTE byHighDevNo; // 豸Ÿ8λ,֧1-9999ķΧ + BYTE byRes1[2]; // + BYTE byVoipNo[16]; // VOIPͻ˺ byDevTypeΪ11ʱЧ + BYTE byRes[80]; // +}NET_DVR_CALLER_INFO,*LPNET_DVR_CALLER_INFO; + +typedef struct tagNET_DVR_CALL_STATUS +{ + DWORD dwSize; //ṹС + BYTE byCallStatus; //ȡͨ״̬1-޺С2-塢3-ͨ + BYTE byRes[127]; +}NET_DVR_CALL_STATUS, *LPNET_DVR_CALL_STATUS; + +#define MAX_SERVER_DEVICE_NUMBER 16 //豸 + +typedef struct tagNET_DVR_SERVER_DEVICE_CFG +{ + BYTE byDeviceName[NAME_LEN]; //豸 + BYTE byDeviceType; ////豸ͣ1-ſڻ2-3-ڻ + BYTE byDeviceID; //ſڻ + BYTE byLockNum; //0-ϵ߼ߣֵ-ʵ + BYTE byRes[5]; // +}NET_DVR_SERVER_DEVICE_CFG,*LPNET_DVR_SERVER_DEVICE_CFG; + +typedef struct tagNET_DVR_SERVER_DEVICE_INFO +{ + DWORD dwSize; //ṹС + DWORD dwDeviceNum; //豸 + NET_DVR_SERVER_DEVICE_CFG struDeviceCfg[MAX_SERVER_DEVICE_NUMBER]; //豸Ϣ + BYTE byRes[200]; // +}NET_DVR_SERVER_DEVICE_INFO,*LPNET_DVR_SERVER_DEVICE_INFO; + +typedef struct tagNET_DVR_VIDEO_CALL_PARAM +{ + DWORD dwSize; + DWORD dwCmdType; // 0-У1-ȡκУ2-κ 3-ܾ 4-峬ʱ 5-ͨ6-豸ͨУ7-ͻͨУ8ڻ + WORD wPeriod; //ں, Χ[0,9] + WORD wBuildingNumber; //¥ + WORD wUnitNumber; //Ԫ + SHORT wFloorNumber; // + WORD wRoomNumber; // + WORD wDevIndex; //豸 + BYTE byUnitType; //豸ͣ1-ſڻ2-3-ڻ4-Χǽ5-ſڻ6-ȷϻ7-8700ͻˣ8-4200ͻˣ9-APP + BYTE byRes[115]; // +}NET_DVR_VIDEO_CALL_PARAM,*LPNET_DVR_VIDEO_CALL_PARAM; + +#define MAX_SCREEN_ADDRESS_LEN 16 //󳤶 +#define MAX_DAY_TIME_POINT 8 //ÿʱ +#define MAX_TIME_POINT 16 //ÿʱ + +typedef struct tagNET_DVR_DEV_IP_INFO +{ + BYTE byUserName[NAME_LEN]; //û + BYTE byPassWord[PASSWD_LEN]; // + NET_DVR_IPADDR struIPAddr; //IPַ + WORD wPort; //˿ں + BYTE byRes[24]; +}NET_DVR_DEV_IP_INFO, *LPNET_DVR_DEV_IP_INFO; + +typedef union tagNET_DVR_SCREEN_BASE_INFO +{ + BYTE byScreenAddress[MAX_SCREEN_ADDRESS_LEN]; //Ļ룬豸ӷʽΪ0ʱЧ + NET_DVR_DEV_IP_INFO struIPInfo; //ĻipַϢ + BYTE byRes[100]; +}NET_DVR_SCREEN_BASE_INFO,*LPNET_DVR_SCREEN_BASE_INFO; + +typedef struct tagNET_DVR_SCREEN_INDEX_CFG +{ + DWORD dwSize; + BYTE byEnbale; //ʹܣ0-ʹܣ1-ʹ + BYTE byDevAddType; //豸ӷʽ0-(Ļʹôͨ)1-IPַ(Ļʹͨ) + BYTE byRes1[2]; + NET_DVR_SCREEN_BASE_INFO struScreenBaseInfo; //Ļ豸Ϣ + BYTE byRes[32]; +}NET_DVR_SCREEN_INDEX_CFG,*LPNET_DVR_SCREEN_INDEX_CFG; + +//ģң +typedef struct tagNET_DVR_SIMULATE_REMOTE_CTRL +{ + BYTE byControlType; //1-Դ2-Դأ3-źԴ4-˵5-ȷ6-ϣ7-£8-9-, 10-INFO, 11-һ,12-ְ + BYTE byControlParam; //Ϊ12ʱʾֵ(0-9)ʱ˲Ч + BYTE byRes[14]; +}NET_DVR_SIMULATE_REMOTE_CTRL, *LPNET_DVR_SIMULATE_REMOTE_CTRL; + +//Ļάǽ +typedef struct tagNET_DVR_SCREEN_WALL_CTRL +{ + BYTE byEnable; //״̬ء0-Ϊرգ1-Ϊ + BYTE byRes[15]; +}NET_DVR_SCREEN_WALL_CTRL, *LPNET_DVR_SCREEN_WALL_CTRL; + +//Ŵԭ +typedef struct tagNET_DVR_AREA_ZOOM_CFG +{ + BYTE byCmd; //Ŵԭָ1-Ŵ2-ԭ + BYTE byRes[3]; + NET_DVR_RECTCFG struArea; //ҪŴ1920*1920ΪĻܴСԭʱ˲Ч +}NET_DVR_AREA_ZOOM_CFG, *LPNET_DVR_AREA_ZOOM_CFG; + +typedef union tagNET_DVR_SCREEN_CONTROL_PARAM +{ + NET_DVR_INPUT_INTERFACE_CTRL struInputCtrl; + NET_DVR_DISPLAY_COLOR_CTRL struDisplayCtrl; + NET_DVR_DISPLAY_POSITION_CTRL struPositionCtrl; + NET_DVR_SIMULATE_REMOTE_CTRL struSimulateRemoteCrtl; //ģңذ + NET_DVR_SCREEN_WALL_CTRL struScreenWallCtrl; //Ļάǽ + NET_DVR_AREA_ZOOM_CFG struZoomArea; //Ŵԭ + BYTE byRes[16]; +}NET_DVR_SCREEN_CONTROL_PARAM, *LPNET_DVR_SCREEN_CONTROL_PARAM; + +typedef struct tagNET_DVR_SCREEN_CONTROL +{ + DWORD dwSize; + DWORD dwCommand ; /* Ʒ 1- 2- 3-ĻԴѡ 4-ʾԪɫ 5-ʾԪλÿ*/ + BYTE byProtocol; //Э,1:LCD-S1,2:LCD-S2 + BYTE byRes1[3]; + NET_DVR_SCREEN_CONTROL_PARAM struControlParam; + BYTE byRes2[52]; +}NET_DVR_SCREEN_CONTROL, *LPNET_DVR_SCREEN_CONTROL; + +typedef struct tagNET_DVR_SCREEN_CONTROL_V41 +{ + DWORD dwSize; + BYTE bySerialNo; //ں + BYTE byRes[2]; + BYTE byProtocol; // Э 1-LCD-S1,2-LCD-S2,3-LCD-L1,4-LCD-DLP,5-LCD-S3,6-LCD-D207-LCD-L2,8-LCD-Z1 + //9-LCD-D20/D,10-LCD-D20/S,11-LCD-D20/P,12-LCD-D20/T,13-LCD-D20/F,14-LCD-D20/DF,15-LCD-D20/FS, + //16-LCD-D20/FP,17-LCD-D20/FT,18-LCD-D5022,19-LCD-D5032,20-LCD-D5042+,21-LCD-D20/Z 0xff-ЧʹԤȰ󶨵Э + DWORD dwCommand ; /* Ʒ 1- 2- 3-ĻԴѡ 4-ʾԪɫ 5-ʾԪλÿƣ6-ģңذ,7-ʾĻ״̬, + 8-ʾĻ루ʼΪ0,0߾Ϊ0xffffffff, 9-Ļάǽ,10-ָĻĬϲ11-ʾIPʼΪ0,0߾Ϊ0xffffffff,12-ĻUSB 13-Ŵԭ*/ + NET_DVR_SCREEN_CONTROL_PARAM struControlParam; + BYTE byWallNo; // ǽ + BYTE byDevNo; //豸 + BYTE bySubboardNo; //Ӱ + BYTE byRes1; + NET_DVR_RECTCFG_EX struRect;//м㣬׼ + BYTE byRes2[28]; +}NET_DVR_SCREEN_CONTROL_V41, *LPNET_DVR_SCREEN_CONTROL_V41; + +typedef struct tagNET_DVR_MSC_SPLICE_CFG +{ + DWORD dwSize; + BYTE bySpliceNo; //ƴ + BYTE byWallNo; //ǽ + BYTE byEnable; //Ƿʹܣ0-1- + BYTE byRes1[1]; + NET_DVR_RECTCFG_EX struRectCfg; //Ҫƴӵ򣬻ȡʱ˲0 + BYTE byRes2[32]; +}NET_DVR_MSC_SPLICE_CFG,*LPNET_DVR_MSC_SPLICE_CFG; + +typedef struct tagNET_DVR_MSC_SCREEN_INTERFACE_CFG +{ + DWORD dwSize; + BYTE byInterfaceType; //Դö INPUT_INTERFACE_TYPE + BYTE byNoSignalPic; //źŻģʽ1-2-3-LOGO + BYTE byRes[30]; +}NET_DVR_MSC_SCREEN_INTERFACE_CFG,*LPNET_DVR_MSC_SCREEN_INTERFACE_CFG; + +// +typedef struct tagNET_DVR_MSC_SCREEN_BACKLIGHT_CFG +{ + DWORD dwSize; + BYTE byBacklight; //⣬0-100 + BYTE byRes[15]; +}NET_DVR_MSC_SCREEN_BACKLIGHT_CFG,*LPNET_DVR_MSC_SCREEN_BACKLIGHT_CFG; + +//л +typedef struct tagNET_DVR_MSC_SCREEN_PIP_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿûл 0- 1- + BYTE bySubWindowSource; //ӻźԴοöINPUT_INTERFACE_TYPE + BYTE bySubWindowBorderColor; //ӻ߿ɫ 1-ɫ2-ɫ + BYTE byRes1; + NET_DVR_RECTCFG_EX struPosition; //ӻλãĻܴСΪ1920*1920 + BYTE byRes2[16]; +}NET_DVR_MSC_SCREEN_PIP_CFG,*LPNET_DVR_MSC_SCREEN_PIP_CFG; + +typedef struct tagNET_DVR_SCREEN_WORK_STATE +{ + DWORD dwSize; + BYTE byFanStatus;//״̬0-أ1- + BYTE byFanExceptionStatus; //쳣״̬0-֧֣1-2-쳣 + BYTE byRes1[2]; + DWORD dwWorkingHours; //ۻʱλСʱ + BYTE byVersion[VERSION_LEN];//汾 + int iTemperature; //忨¶ȣȷλλ϶ + BYTE byTempState; //忨¶״̬0-֧֣1-2-쳣 + BYTE byRes[31]; +}NET_DVR_SCREEN_WORK_STATE,*LPNET_DVR_SCREEN_WORK_STATE; + +//logo +typedef struct tagNET_DVR_BOOT_LOGO_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿʾlogo,0-ʾ1-ʾ + BYTE byRes[31]; +}NET_DVR_BOOT_LOGO_CFG,*LPNET_DVR_BOOT_LOGO_CFG; +//Ƶ +typedef struct tagNET_DVR_LCD_AUDIO_CFG +{ + DWORD dwSize; + BYTE byMute; //Ƿ0-1- + BYTE byVolume; //С0-100 + char byBalance; //ƽ⣬-50-+50 + BYTE byRes[33]; +}NET_DVR_LCD_AUDIO_CFG, *LPNET_DVR_LCD_AUDIO_CFG; + +//Ļ +typedef union tagNET_DVR_MSC_SCREEN_PARAM +{ + NET_DVR_MSC_SCREEN_INTERFACE_CFG struInterfaceCfg; //Դ + NET_DVR_SCREEN_FAN_WORK_MODE_CFG struFanWorkMode; //ȹģʽ + NET_DVR_SCREEN_VGA_CFG struVgaCfg; //VGAźŲ + NET_DVR_SCREEN_MENU_CFG struMenuCfg; //Ļ˵ + NET_DVR_VIDEO_OUT_CFG struOutEffectCfg; //ʾЧ + NET_DVR_COLOR_TEMPERATURE_CFG struColorTemperatureCfg; //ɫ² + NET_DVR_ADC_CFG struAdcCfg; //ADC + NET_DVR_SCREEN_EDGE_CFG struScreenEdgeCfg; //ĻԵ + NET_DVR_MSC_SCREEN_BACKLIGHT_CFG struBacklight; // + NET_DVR_MSC_SCREEN_PIP_CFG struPicInPicCfg; //л + NET_DVR_DEFOG_LCD struDefog; //ȥ + NET_DVR_SCREEN_WORK_STATE struWorkState; //Ļ״̬ + NET_DVR_BOOT_LOGO_CFG struBootLogoCfg; //ʼʾlogo + NET_DVR_LCD_AUDIO_CFG struAudioCfg; //Ƶ + BYTE byRes[256]; +}NET_DVR_MSC_SCREEN_PARAM,*LPNET_DVR_MSC_SCREEN_PARAM; + +typedef struct tagNET_DVR_MSC_SCREEN_PARAM_CFG +{ + DWORD dwSize; + BYTE byParamType; //ͣ1-Դ2-ȹģʽ3-VGAźŲ4-Ļ˵5-ʾЧ6-ɫ²7-ADC8-ĻԵ9-10-л11-͸12-Ļ״ֻ̬ܻȡ13-LOGOǷʾ 14-Ƶ + BYTE byRes1[3]; + NET_DVR_MSC_SCREEN_PARAM struParam; //Ļ + BYTE byRes2[32]; +}NET_DVR_MSC_SCREEN_PARAM_CFG,*LPNET_DVR_MSC_SCREEN_PARAM_CFG; + +typedef struct tagNET_DVR_MSC_SCREEN_REMOTE_CFG +{ + DWORD dwSize; + BYTE byWallNo; //ǽ + BYTE byRes1[3]; + NET_DVR_RECTCFG_EX struRectCfg; //Ļ + NET_DVR_MSC_SCREEN_PARAM_CFG struScreenParam; //õĻ + BYTE byRes2[32]; +}NET_DVR_MSC_SCREEN_REMOTE_CFG,*LPNET_DVR_MSC_SCREEN_REMOTE_CFG; + +typedef struct tagNET_DVR_MSC_SCREEN_PARAM_COND +{ + DWORD dwSize; + BYTE byWallNo; //ǽ + BYTE byParamType; //ͣ1-Դ2-ȹģʽ3-VGAźŲ4-Ļ˵5-ʾЧ6-ɫ²7-ADC8-ĻԵ9-10-л11-͸12-Ļ״ֻ̬ܻȡ13-LOGOǷʾ 14-Ƶ + BYTE byRes1[2]; + NET_DVR_RECTCFG_EX struRectCfg; //Ļ + BYTE byRes2[32]; +}NET_DVR_MSC_SCREEN_PARAM_COND,*LPNET_DVR_MSC_SCREEN_PARAM_COND; + +typedef struct tagNET_DVR_SWITCH_DAY_TIME +{ + BYTE byEnable; //Ƿøʱ,0-ã1- + BYTE bySwitchType; //ػͣ0-ػ1- + BYTE byRes1[2]; + NET_DVR_DAYTIME struTimePoint; //ػʱ + BYTE byRes2[8]; +}NET_DVR_SWITCH_DAY_TIME,*LPNET_DVR_SWITCH_DAY_TIME; + +typedef struct tagNET_DVR_SWITCH_TIME_POINT +{ + BYTE byEnable; //Ƿøʱ,0-ã1- + BYTE bySwitchType; //ػͣ0-ػ1- + BYTE byRes1[2]; + NET_DVR_SYSTEM_TIME struTimePoint; //ػʱ + BYTE byRes2[16]; +}NET_DVR_SWITCH_TIME_POINT,*LPNET_DVR_SWITCH_TIME_POINT; + +typedef struct tagNET_DVR_TIME_SWITCH_CFG +{ + DWORD dwSize; + NET_DVR_SWITCH_DAY_TIME struSwitchDayTime[MAX_DAYS][MAX_DAY_TIME_POINT]; //ܿػƻ + NET_DVR_SWITCH_TIME_POINT struSwitchTimePoint[MAX_TIME_POINT]; //ʱ㿪ػ + BYTE byRes1[3]; + BYTE byEnable;//Ƿöʱػ,0-ã1- + BYTE byRes[60]; +}NET_DVR_TIME_SWITCH_CFG,*LPNET_DVR_TIME_SWITCH_CFG; + +typedef struct tagNET_DVR_VIDEO_WALL_AREA +{ + DWORD dwSize; + BYTE byWallNo; //ǽ + BYTE byRes1[3]; + NET_DVR_RECTCFG_EX struRect; //ĻΧ + BYTE byRes2[32]; +}NET_DVR_VIDEO_WALL_AREA, *LPNET_DVR_VIDEO_WALL_AREA; + +typedef struct tagNET_DVR_DELAY_TIME +{ + DWORD dwSize; + DWORD dwDelayTime; //ʱʱ䣬0-3000λms + BYTE byRes[32]; +}NET_DVR_DELAY_TIME,*LPNET_DVR_DELAY_TIME; + +//˫Ŀ궨 +typedef enum _BV_CALIBRATION_TYPE_ENUM_ +{ + ENUM_BV_CALIBRATION_NONE = 0, //δ궨 + ENUM_BV_CALIBRATION_DIRECT = 1, //˫Ŀֱӱ궨 + ENUM_BV_CALIBRATION_SAMPLE = 2, //˫Ŀ궨 +} BV_CALIBRATION_TYPE_ENUM; + + +//궨 +typedef struct tagNET_DVR_BV_SAMPLE_CALIB_POINT +{ + BYTE byCalibPtID; //궨IDΧ[1,5]ʾ˵˫Ŀ궨е + BYTE byRes1[3]; // + NET_VCA_POINT struPoint; //궨 + BYTE byRes2[16]; // +}NET_DVR_BV_SAMPLE_CALIB_POINT,*LPET_DVR_BV_SAMPLE_CALIB_POINT; + +//ʼ궨 +typedef struct tagNET_DVR_BV_SAMPLE_CALIB_BEGIN_PARAM +{ + DWORD dwCameraHeight; //߶ȣλcm + DWORD dwHumanHeight; //ߣλcm + BYTE byRes[248]; // +}NET_DVR_BV_SAMPLE_CALIB_BEGIN_PARAM,*LPNET_DVR_BV_SAMPLE_CALIB_BEGIN_PARAM; + +//궨 +typedef struct tagNET_DVR_BV_SAMPLE_CALIB_SET_PARAM +{ + NET_DVR_BV_SAMPLE_CALIB_POINT struCalibPoint; //궨㡣Աֱߣضʱ˵ʾߵе㡣 + BYTE byRes[228]; // +}NET_DVR_BV_SAMPLE_CALIB_SET_PARAM,*LPNET_DVR_BV_SAMPLE_CALIB_SET_PARAM; + +//궨 +typedef struct tagNET_DVR_BV_SAMPLE_CALIB_END_PARAM +{ + BYTE byRes[256]; // +}NET_DVR_BV_SAMPLE_CALIB_END_PARAM,*LPNET_DVR_BV_SAMPLE_CALIB_END_PARAM; + +//궨 +typedef union tagNET_DVR_BV_SAMPLE_CALIB_PARAM_UNION +{ + BYTE byRes[256]; // + NET_DVR_BV_SAMPLE_CALIB_BEGIN_PARAM struCalibBegin; //ʼ궨 + NET_DVR_BV_SAMPLE_CALIB_SET_PARAM struCalibSet; //ñ궨 + NET_DVR_BV_SAMPLE_CALIB_END_PARAM struCalibEnd; //궨 +}NET_DVR_BV_SAMPLE_CALIB_PARAM_UNION,*LPNET_DVR_BV_SAMPLE_CALIB_PARAM_UNION; + +//궨ö +typedef enum _BV_SAMPLE_CALIB_CMD_ENUM +{ + ENUM_BV_SAMPLE_CALIB_BEGIN = 1, //ʼ궨 + ENUM_BV_SAMPLE_CALIB_SETTING = 2, //ò + ENUM_BV_SAMPLE_CALIB_END = 3 //궨 +}BV_SAMPLE_CALIB_CMD_ENUM; + +//궨ṹ +typedef struct tagNET_DVR_BV_SAMPLE_CALIBRATION +{ + DWORD dwSize; //ṹС + DWORD dwChannel; //ͨ + BYTE byCommand; //궨μBV_SAMPLE_CALIB_CMD _ENUM + BYTE byRes1[3]; // + NET_DVR_BV_SAMPLE_CALIB_PARAM_UNION uCalibParam; //궨ȡֵֶbyCommand + BYTE byRes2[256] ; // +}NET_DVR_BV_SAMPLE_CALIBRATION,*LPNET_DVR_BV_SAMPLE_CALIBRATION; + + +//˫Ŀ궨Ϣ +typedef struct tagNET_DVR_BV_SAMPLE_CALIB_CFG +{ + DWORD dwSize; //ṹС + DWORD dwCameraHeight; //߶ȣλcm + float fPitchAngle; //ӽǶ[0, 60], + float fInclineAngle; //бǶ[-20,20] + NET_DVR_BV_SAMPLE_CALIB_POINT struCalibPoint[MAX_SAMPLE_NUM]; //궨 + NET_DVR_BV_SAMPLE_CALIB_POINT struCalibPointEx[MAX_SAMPLE_NUM_EX/*7*/]; //궨չ + BYTE byRes[60]; // +}NET_DVR_BV_SAMPLE_CALIB_CFG,*LPNET_DVR_BV_SAMPLE_CALIB_CFG; + +//˫ĿͼУṹ +typedef struct tagNET_DVR_BINOC_RECTIFY_PARAM +{ + float fCamInternalMatrix[3][3]; //ڲξ󣬰༰ + float fDistCoeffs[8]; //ͷϵ + float fRotateMatrix[3][3]; //Уת + float fProjectMatrix[3][4]; //УͶӰ + BYTE byRes[64]; // +}NET_DVR_BINOC_RECTIFY_PARAM, *LPNET_DVR_BINOC_RECTIFY_PARAM; + +//У +typedef struct _tagNET_DVR_BV_CORRECT_PARAM +{ + DWORD dwSize; //ṹС + float fReprojectMatrix[4][4]; //ͶӰ + NET_DVR_BINOC_RECTIFY_PARAM struLCamParam; //У + NET_DVR_BINOC_RECTIFY_PARAM struRCamParam; //У + BYTE byLensType; //ͷͣ0-δ֪,1-8mm,2-12mm,3-16mm,4-25mm,5-35mm,6-50mm,7-4mm,8-6mm,9-2.0mm,10-2.8mm,11-4.3mm + BYTE byRes1[3]; // + /*RotateMatrix ˫Ŀ궨ת, + TransMatrixƽƾ, + RotateMatrixTransMatrixλùϵ*/ + float fRotateMatrix[3][3]; //ת + float fTransMatrix[3]; //ƽƾ + DWORD dwOriImgWidth; //ԭʼ궨ͼĿ1920*1080ֱʵͼΪ1920 + DWORD dwOriImgHeight; //ԭʼ궨ͼĸߣ1920*1080ֱʵͼΪ1080 + BYTE byRes[196]; // +} NET_DVR_BV_CORRECT_PARAM,*LPNET_DVR_BV_CORRECT_PARAM; + +//Ƶ +typedef struct tagNET_DVR_OUTPUT_VIDEO_TYPE +{ + DWORD dwSize; //ṹС + BYTE byType; //Ƶͣ1-ƴͼ2-ͼ + BYTE byRes[63]; // +}NET_DVR_OUTPUT_VIDEO_TYPE,*LPNET_DVR_OUTPUT_VIDEO_TYPE; + +#define MAX_CHECK_485CHAN 64 //485Լ豸ͨŸ + +typedef struct tagNET_DVR_DEVICE_SELF_CHECK_STATE +{ + DWORD dwSize; + DWORD dwRS485Chan[MAX_CHECK_485CHAN];//RS485ͨͨţֵʾͨţλʾλ + DWORD dwSensorChan[4];//ģЧͨţλʾ + BYTE byRes[32]; // ֽ +}NET_DVR_DEVICE_SELF_CHECK_STATE, *LPNET_DVR_DEVICE_SELF_CHECK_STATE; + +//ȫȡֵ +typedef struct tagNET_DVR_COMPLETE_RESTORE_INFO_ +{ + DWORD dwSize ; //ṹ峤 + DWORD dwChannel; //ͨ + BYTE byRes[64]; +}NET_DVR_COMPLETE_RESTORE_INFO, *LPNET_DVR_COMPLETE_RESTORE_INFO; + +typedef struct tagNET_DVR_UPLOAD_PICTURE_INFO +{ + DWORD dwSize; + DWORD dwChannel; //ͼƬӦͨ + BYTE byPictureType;//ͼƬʽ,0-bmp1-jpeg2-PNG 3-SWF 4-GIF + BYTE byRes1[3]; + NET_DVR_TIME_V30 struTime; //ͼƬʱ + char* sPictureBuffer;//ͼƬ + DWORD dwPictureLength;//ͼƬ + DWORD dwPicMangeNo; //ͼƬ + BYTE sPicName[NAME_LEN]; //ͼƬ + BYTE byUseType; //ͼƬʹͣ0-ͼƬ 1-logoͼƬ + BYTE byRes[91]; +}NET_DVR_UPLOAD_PICTURE_INFO,*LPNET_DVR_UPLOAD_PICTURE_INFO; + +#define MAX_UPLOADFILE_URL_LEN 240 + +typedef struct tagNET_DVR_UPLOAD_FILE_RET +{ + BYTE sUrl[MAX_UPLOADFILE_URL_LEN] ; //url + BYTE byRes[260]; +} NET_DVR_UPLOAD_FILE_RET,*LPNET_DVR_UPLOAD_FILE_RET; + +typedef struct tagNET_DVR_FACE_EXTRA_INFO +{ + NET_VCA_RECT struVcaRect[MAX_FACE_PIC_NUM]; //ͼϢ + BYTE byRes[64]; +}NET_DVR_FACE_EXTRA_INFO, *LPNET_DVR_FACE_EXTRA_INFO; +typedef union tagNET_DVR_PIC_EXTRA_INFO_UNION +{ + BYTE byUnionLen[544]; //峤ȣʵ + NET_DVR_FACE_EXTRA_INFO struFaceExtraInfo; //Ϣ +}NET_DVR_PIC_EXTRA_INFO_UNION, *LPNET_DVR_PIC_EXTRA_INFO_UNION; + +typedef struct tagNET_DVR_FIND_PICTURE_V40 //ҽṹ +{ + char sFileName[PICTURE_NAME_LEN];//ͼƬ + NET_DVR_TIME struTime;//ͼƬʱ + DWORD dwFileSize;//ͼƬĴС + char sCardNum[CARDNUM_LEN_V30]; // + BYTE byPlateColor ;//οṹ VCA_PLATE_COLOR + BYTE byVehicleLogo;//οṹ VLR_VEHICLE_CLASS + BYTE byFileType ; //ļͣ :0ʱץͼ1 ƶץͼ 2 ץͼ3 | ƶץͼ 4 & ƶץͼ 6 ֶץͼ ,9-ͼƬ,10- PIR11- ߱12- ȱ, 0xa Ԥʱͼ0xd , 0xe Խ⣬0xf ⣬0x10 , 0x11-豸ػطʱͼ, 0x12-, 0x32-, 0x33-, 0x34-ҵѯ + BYTE byRecogResult ;//ʶοṹVTR_RESULT + char sLicense[MAX_LICENSE_LEN/*16*/]; //ƺ + BYTE byEventSearchStatus; //ͼƬʾͬһҽʱ0-ʾûͼƬϢ1-ʾ滹ͼƬϢܹͼƬϢһ״̬Ϊ0ͼƬ + BYTE byRes1[2]; // ֽ + BYTE byThermometryUnit;//µλ: 0-϶ȣ棩1-϶ȣH2-(K) + float fFaceSnapTemperature; // ץ¶ϢȷС1λ ( + 100 * 10 ȡ䣩λ̶Ϊ϶ȣ棩byFileTypeΪ0x25-ץʱЧ¸ֶΪ0ֵ + BYTE byRes[68]; // ֽ + NET_DVR_PIC_EXTRA_INFO_UNION uPicExtraInfo; //ͼƬϢ +}NET_DVR_FIND_PICTURE_V40,*LPNET_DVR_FIND_PICTURE_V40; + +typedef struct tagNET_DVR_FIND_PICTURE_V50 //ҽṹ +{ + char sFileName[PICTURE_NAME_LEN];//ͼƬ + NET_DVR_TIME struTime;//ͼƬʱ + DWORD dwFileSize;//ͼƬĴС + char sCardNum[CARDNUM_LEN_V30]; // + BYTE byPlateColor;//οṹ VCA_PLATE_COLOR + BYTE byVehicleLogo;//οṹ VLR_VEHICLE_CLASS + BYTE byFileType; //ļͣ :0ʱץͼ1 ƶץͼ 2 ץͼ3 | ƶץͼ 4 & ƶץͼ 6 ֶץͼ ,9-ͼƬ,10- PIR11- ߱12- ȱ,\ + 0xa Ԥʱͼ0xd , 0xe Խ⣬0xf ⣬0x10 , 0x11-豸ػطʱͼ, 0x12-, 0x70-ͨʱץͼ + BYTE byRecogResult;//ʶοṹVTR_RESULT + char sLicense[MAX_LICENSE_LEN/*16*/]; //ƺ + BYTE byEventSearchStatus; //ͼƬʾͬһҽʱ0-ʾûͼƬϢ1-ʾ滹ͼƬϢܹͼƬϢһ״̬Ϊ0ͼƬ + NET_DVR_ADDRESS struAddr; //ͼƬڵĵַϢͼƬʱõ + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cTimeDifferenceH; //UTCʱСʱ-12 ... +14 + char cTimeDifferenceM; //UTCʱӣ-30,0, 30, 45 + BYTE byRes[253]; // ֽ + NET_DVR_PIC_EXTRA_INFO_UNION uPicExtraInfo; //ͼƬϢ +}NET_DVR_FIND_PICTURE_V50, *LPNET_DVR_FIND_PICTURE_V50; + + +typedef struct tagNET_DVR_THUMBNAILS_COND +{ + DWORD dwSize; // ṹС + NET_DVR_STREAM_INFO struStreamInfo; //Ϣ + BYTE bySearchDataType; // 0-I֡ݣCVR һ·£1s28I֡1-ͼƬ + BYTE byRes[3]; // ֽ + NET_DVR_TIME_V30 struStartTime; //ҿʼʱ + NET_DVR_TIME_V30 struStopTime; // ҽʱ + DWORD dwIntervalTime; //ʱ䣬λ룬Χ0~24*60*60ҽʱڲҿʼʱ䣬0ֵЧ + BYTE byRes1[512]; // ֽ +}NET_DVR_THUMBNAILS_COND, *LPNET_DVR_THUMBNAILS_COND; + +typedef struct tagNET_DVR_THUMBNAILS_RESULT //ҽṹ +{ + BYTE byResultDataType; // ҽ0-I֡ݣCVR һ·£1s28I֡1-ϵͳͷݣ 2-ͼƬ + BYTE byIFrameType; // I֡ͣ0-֡1-οֻ֡벥ſ⣬DzҪתΪͼƬʾ + BYTE byRes1[2]; // ֽ + NET_DVR_TIME_SEARCH struTime; //ʱ + BYTE byRes[252]; // ֽ + DWORD dwFileSize; //ݴС + char* pBuffer; //Ϣ(ͺṹNET_DVR_THUMBNAILS_RESULT ֶ byResultDataType ֵ) +}NET_DVR_THUMBNAILS_RESULT, *LPNET_DVR_THUMBNAILS_RESULT; + +typedef struct tagNET_DVR_REGIONENTRANCE_REGION +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE bySensitivity; //ȲΧ[1-100] + /* + Ŀֶ֧꣬ѡ嶨Ϊ + 0~Ŀ꣨ʾĿ꣬Ŀ궼м⣩ + 0x01 ~ ˣ + 0x02 ~ + 0x04 ~ + ֶֶ֧ѡλȡֵ3ʾ1+2. + */ + BYTE byDetectionTarget; + BYTE byAlarmConfidence; // Ŷ, 0-,1-ϵ,2-ϸ,3- + BYTE byRecordConfidence; // ¼Ŷ, 0-,1-ϵ,2-ϸ,3- + BYTE byRes[60]; // +}NET_DVR_REGIONENTRANCE_REGION, *LPNET_DVR_REGIONENTRANCE_REGION; + +typedef struct tagNET_DVR_REGION_ENTRANCE_DETECTION +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byEnableHumanMisinfoFilter;// ȥ 0-ã1- + BYTE byEnableVehicleMisinfoFilter;// óȥ 0-ã1- + BYTE byRes1[1]; + NET_DVR_REGIONENTRANCE_REGION struRegion[MAX_REGION_NUM]; + BYTE byRes2[128]; +}NET_DVR_REGION_ENTRANCE_DETECTION,*LPNET_DVR_REGION_ENTRANCE_DETECTION; + +typedef struct tagNET_DVR_SMART_REGION_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + DWORD dwRegion; //ID +}NET_DVR_SMART_REGION_COND, *LPNET_DVR_SMART_REGION_COND; + +typedef struct tagNET_DVR_ENTRANCE_REGION +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE bySensitivity; //ȲΧ[1-100] + BYTE byDetectionTarget; + BYTE byAlarmConfidence; //Ŷ, 0-,1-ϵ,2-ϸ,3- + BYTE byRecordConfidence; //¼Ŷ, 0-,1-ϵ,2-ϸ,3- + BYTE byRes[60]; // +}NET_DVR_ENTRANCE_REGION, *LPNET_DVR_ENTRANCE_REGION; + +typedef struct tagNET_DVR_DENSEFOGDETECTION_CFG +{ + DWORD dwSize; + BYTE byEnable;//ʹ + BYTE bySensitivity; //ȲΧ[0,100] + BYTE byRes[258]; +}NET_DVR_DENSEFOGDETECTION_CFG, *LPNET_DVR_DENSEFOGDETECTION_CFG; + +typedef struct tagNET_DVR_EVENT_TRIGGER +{ + DWORD dwSize;//ṹС + NET_DVR_HANDLEEXCEPTION_V41 struHandleException; //쳣ʽ + DWORD dwRelRecordChan[MAX_CHANNUM_V40]; //ʵʴ¼ֵͨʾýУ±0ʼ˳ȡм0xffffffffЧ + NET_DVR_PRESETCHAN_INFO struPresetChanInfo[MAX_CHANNUM_V40]; //õԤõϢ + NET_DVR_CRUISECHAN_INFO struCruiseChanInfo[MAX_CHANNUM_V40]; //ѲͨϢ + NET_DVR_PTZTRACKCHAN_INFO struPtzTrackInfo[MAX_CHANNUM_V40]; //̨ͨϢ + BYTE byDirection;//0-1-ȫ2-3- + BYTE byRes2[255]; +}NET_DVR_EVENT_TRIGGER,*LPNET_DVR_EVENT_TRIGGER; + +typedef struct tagNET_DVR_EVENT_SCHEDULE +{ + DWORD dwSize;//ṹС + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*ʱ*/ + NET_DVR_SCHEDTIME struHolidayAlarmTime[MAX_TIMESEGMENT_V30]; /*ղʱ*/ + BYTE bySceneID[MAX_DAYS][MAX_TIMESEGMENT_V30];//,Ŀǰ֧1~40ΪЧó벼ʱÿʱһһӦ + BYTE byRes[72]; +}NET_DVR_EVENT_SCHEDULE,*LPNET_DVR_EVENT_SCHEDULE; + +typedef struct tagNET_DVR_ANR_ARMING_HOST +{ + DWORD dwSize;//sizeof(NET_DVR_ANR_ ARMING_HOST) + NET_DVR_IPADDR struANRArmingHostIpAddr; //IPַ + WORD wANRAlarmHostPort; //˿ں + BYTE byANRAlarmType;//ͣ 0-SDK˽жӣ1-ehome + BYTE byConfirmMechanismEnabled;// ǷȷϻƷʽӣ0-1-ûп 2- + BYTE byRes[512]; //ֽ +}NET_DVR_ANR_ARMING_HOST, *LPNET_DVR_ANR_ARMING_HOST; + +typedef struct tagNET_DVR_REGIONEXITING_REGION +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE bySensitivity; //ȲΧ[1-100] + /* + Ŀֶ֧꣬ѡ嶨Ϊ + 0~Ŀ꣨ʾĿ꣬Ŀ궼м⣩ + 0x01 ~ ˣ + 0x02 ~ + 0x04 ~ + ֶֶ֧ѡλȡֵ3ʾ1+2. + */ + BYTE byDetectionTarget; + BYTE byAlarmConfidence; //Ŷ, 0-,1-ϵ,2-ϸ,3- + BYTE byRecordConfidence; //¼Ŷ, 0-,1-ϵ,2-ϸ,3- + BYTE byRes[60]; // +}NET_DVR_REGIONEXITING_REGION, *LPNET_DVR_REGIONEXITING_REGION; + +typedef struct tagNET_DVR_REGION_EXITING_DETECTION +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byEnableHumanMisinfoFilter;// ȥ 0-ã1- + BYTE byEnableVehicleMisinfoFilter;// óȥ 0-ã1- + BYTE byRes1[1]; + NET_DVR_REGIONEXITING_REGION struRegion[MAX_REGION_NUM]; + BYTE byRes2[128]; +}NET_DVR_REGION_EXITING_DETECTION,*LPNET_DVR_REGION_EXITING_DETECTION; + +typedef struct tagNET_DVR_LOITERING_REGION +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE bySensitivity; //ȲΧ[1-100] + BYTE byTimeThreshold; //ʱֵΧ[0-10]λs + BYTE byRes[62]; // +}NET_DVR_LOITERING_REGION, *LPNET_DVR_LOITERING_REGION; + +typedef struct tagNET_DVR_LOITERING_DETECTION +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byRes1[3]; + NET_DVR_LOITERING_REGION struRegion[MAX_REGION_NUM]; + BYTE byRes2[128]; +}NET_DVR_LOITERING_DETECTION,*LPNET_DVR_LOITERING_DETECTION; + +typedef struct tagNET_DVR_GROUPDETECTION_REGION +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE byObjectOccup; //ռȣΧ[1-100] + BYTE bySensitivityLevel; //ȣΧ1-100Ĭ65 + BYTE byDurationTime; //ʱ䣬Χ1-600룬Ĭ3 + BYTE byFilterTime; //ʱ䣬Χ1-10ӣʾڴʱڲٴ + BYTE byMinTriggerNumber; //ʹΧ2-50ˣĬ5 + BYTE byLinkageTime; //ʱ䣬Χ5-30룬Ĭ5루ǹתλúͣʱ䣬òǹǷͬһ˻¼Բͬ + BYTE byRes[58]; // +}NET_DVR_GROUPDETECTION_REGION, *LPNET_DVR_GROUPDETECTION_REGION; +typedef struct tagNET_DVR_POS_HIDDEN_INFORMATION +{ + char szKeyWord[KEY_WORD_NUM/*3*/][KEY_WORD_LEN/*128*/]; + BYTE byRes[128]; +}NET_DVR_POS_HIDDEN_INFORMATION, *LPNET_DVR_POS_HIDDEN_INFORMATION; + +typedef struct tagNET_DVR_HIDDEN_INFORMATION_CFG +{ + DWORD dwSize; + BYTE byFuncType;//0-Pos + BYTE Res1[3]; + NET_DVR_POS_HIDDEN_INFORMATION struPosInfo; + BYTE byRes[1024]; +}NET_DVR_HIDDEN_INFORMATION_CFG, *LPNET_DVR_HIDDEN_INFORMATION_CFG; + +typedef struct tagNET_DVR_GROUP_DETECTION +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byRes1[3]; + NET_DVR_GROUPDETECTION_REGION struRegion[MAX_REGION_NUM]; + BYTE byRes2[128]; +}NET_DVR_GROUP_DETECTION,*LPNET_DVR_GROUP_DETECTION; + +typedef struct tagNET_DVR_RAPIDMOVE_REGION +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE bySensitivity; //ȲΧ[1-100] + /* + Ŀֶ֧꣬ѡ嶨Ϊ + 0~Ŀ꣨ʾĿ꣬Ŀ궼м⣩ + 0x01 ~ ˣ + 0x02 ~ + 0x04 ~ + ֶֶ֧ѡλȡֵ3ʾ1+2. + */ + BYTE byDetectionTarget; + BYTE byRes[62]; // +}NET_DVR_RAPIDMOVE_REGION, *LPNET_DVR_RAPIDMOVE_REGION; + +typedef struct tagNET_DVR_RAPIDMOVE_DETECTION +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byRes1[3]; + NET_DVR_RAPIDMOVE_REGION struRegion[MAX_REGION_NUM]; + BYTE byRes2[128]; +}NET_DVR_RAPIDMOVE_DETECTION,*LPNET_DVR_RAPIDMOVE_DETECTION; + +typedef struct tagNET_DVR_PARKING_REGION +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE bySensitivity; //ȲΧ[1-100] + BYTE byTimeThreshold; //ʱֵΧ[0-10]λs + BYTE byRes[62]; // +}NET_DVR_PARKING_REGION, *LPNET_DVR_PARKING_REGION; + +typedef struct tagNET_DVR_PARKING_DETECTION +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byRes1[3]; + NET_DVR_PARKING_REGION struRegion[MAX_REGION_NUM]; + BYTE byRes2[128]; +}NET_DVR_PARKING_DETECTION,*LPNET_DVR_PARKING_DETECTION; + +typedef struct tagNET_DVR_UNATTENDED_BAGGAGE_REGION +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE bySensitivity; //ȲΧ[1-100] + BYTE byTimeThreshold; //ʱֵΧ[0-10]λs + WORD wTimeThreshold;//ʱֵΧ[5-3600], λs + BYTE byTimeThresholdMode;//(ֻдֶΣڼ)0-ֶbyTimeThresholdЧ1-ֶwTimeThresholdЧ + BYTE byRes[59]; // +}NET_DVR_UNATTENDED_BAGGAGE_REGION, *LPNET_DVR_UNATTENDED_BAGGAGE_REGION; + +typedef struct tagNET_DVR_UNATTENDED_BAGGAGE_DETECTION +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byRes1[3]; + NET_DVR_UNATTENDED_BAGGAGE_REGION struRegion[MAX_REGION_NUM]; + BYTE byRes2[128]; +}NET_DVR_UNATTENDED_BAGGAGE_DETECTION,*LPNET_DVR_UNATTENDED_BAGGAGE_DETECTION; + +typedef struct tagNET_DVR_ATTENDED_BAGGAGE_REGION +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE bySensitivity; //ȲΧ[1-100] + BYTE byTimeThreshold; //ʱֵΧ[0-10]λs + WORD wTimeThreshold;//ʱֵΧ[5-3600], λs + BYTE byTimeThresholdMode;//(ֻдֶΣڼ)0-ֶbyTimeThresholdЧ1-ֶwTimeThresholdЧ + BYTE byRes[59]; // +}NET_DVR_ATTENDED_BAGGAGE_REGION, *LPNET_DVR_ATTENDED_BAGGAGE_REGION; + +typedef struct tagNET_DVR_ATTENDED_BAGGAGE_DETECTION +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byRes1[3]; + NET_DVR_ATTENDED_BAGGAGE_REGION struRegion[MAX_REGION_NUM]; + BYTE byRes2[128]; +}NET_DVR_ATTENDED_BAGGAGE_DETECTION,*LPNET_DVR_ATTENDED_BAGGAGE_DETECTION; + +typedef struct tagNET_DVR_REGION_CLIP_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + DWORD dwStreamType; //ͣ0- 1- 2- + BYTE byRes[8]; +}NET_DVR_REGION_CLIP_COND, *LPNET_DVR_REGION_CLIP_COND; + +typedef struct tagNET_DVR_REGION_CLIP_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byRes1[3]; + WORD wResolutionWidth; //ֱʵij + WORD wResolutionHeight; //ֱʵĿ + NET_VCA_POLYGON struRegion[MAX_REGION_NUM]; + BYTE byRes2[64]; +}NET_DVR_REGION_CLIP_CFG, *LPNET_DVR_REGION_CLIP_CFG; + +#define MAX_DIALNUM_LENGTH 32 +typedef struct tagNET_DVR_WIRELESSDIAL_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿ߲ţ0-1- + BYTE byDialMode; // 0-ԶAuto1-ֶManualĬԶֶģʽ¿òżƻʱ䡢ֶ + BYTE byNetworkMode; //0-Զ1-4Gȣ2-3Gȣ3-ֶл2G4-ֶл3G5-ֶл4G6- + BYTE byRes1; + BYTE byDialNum[MAX_DIALNUM_LENGTH]; //ź + BYTE byUserName[NAME_LEN]; //û + BYTE byPassword[NAME_LEN]; // + BYTE byAPNName[NAME_LEN]; //APN + BYTE byUIMCardNum[NAME_LEN]; //ֻ + BYTE byVerifProtocol; // 0-ԶAuto1-CHAP2-PAP + BYTE byRes2; + WORD wMTU; //MTU + DWORD dwOffineTime; //ʱ䣬30-65535λ룬ֶģʽЧ + BYTE byNetAPN[NAME_LEN]; //˽רAPNֶ + BYTE byEnabled4G; //Ƿ4Gܣ0-1- + BYTE byEnabledDNS; //ǷDNSܣ0-1- + BYTE byRes3[30]; +}NET_DVR_WIRELESSDIAL_CFG, *LPNET_DVR_WIRELESSDIAL_CFG; + +typedef struct tagNET_DVR_WIRELESSDIAL_SCHEDULE +{ + DWORD dwSize;//ṹС + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*ʱ*/ + NET_DVR_SCHEDTIME struHolidayAlarmTime[MAX_TIMESEGMENT_V30]; //ղʱ + BYTE byRes[128]; +}NET_DVR_WIRELESSDIAL_SCHEDULE,*LPNET_DVR_WIRELESSDIAL_SCHEDULE; + +#define MAX_LENGTH_32 32 +typedef struct tagNET_DVR_WIRELESSDIAL_STATUS +{ + DWORD dwSize;//ṹС + BYTE byRealtimeMode[MAX_LENGTH_32]; //ʵʱģʽ(CDMA 1xEVDOHYBRIDGSMGPRSEDGEWCDMAHSDPAHSUPAHSPATDSCDMATD-LTEFDD-LTE) + BYTE byUIMStatus[MAX_LENGTH_32]; /*UIM״̬(UNKNOWN-δ֪,VALID-Ч,NOVALID-Ч,ROAM-,NOEXIST-, + WRONGPINCODE-PIN,NONETWORKSERVICE-, + ONLYSUPPORTEMERGENCYCALL-ֽ֧УPINCODELOCKEDPIN*/ + DWORD dwSignalQuality; //ź1-5 + BYTE byDialStatus[MAX_LENGTH_32]; /*״̬(disconnect-ŶϿ,dialing-ڲ,success-ųɹ,shmError-쳣, + certificationFailure-֤ʧ,invalidDialingCharacters-ַЧ, + networkTimeout C糬ʱ,wirelessModemErrorģ,SIMError---SIM,,networkError-unknown Cδ֪)*/ + NET_DVR_IPADDR struIpAddr; //IPַ + NET_DVR_IPADDR struIPMask; //ַ + NET_DVR_IPADDR struGatewayIPMask; //صַ + NET_DVR_IPADDR struDnsServerIpAddr; //DNSַ + BYTE byRes[256]; +}NET_DVR_WIRELESSDIAL_STATUS,*LPNET_DVR_WIRELESSDIAL_STATUS; + +typedef struct tagNET_DVR_WIRELESSDIAL_CONNECT +{ + DWORD dwSize;//ṹС + DWORD dwInterface; //ţ1,2 + BYTE byEnableConnect; //Ƿ0-1- + BYTE byRes[255]; +}NET_DVR_WIRELESSDIAL_CONNECT_PARAM,*LPNET_DVR_WIRELESSDIAL_CONNECT_PARAM; + + +typedef struct tagNET_DVR_LITESTORAGE +{ + DWORD dwSize;//ṹС + BYTE byEnable; /*ʹ 0-,1-*/ + BYTE byStorageTime;/*洢ʱ 1-30 Ĭ7*/ + BYTE byLevel; //ȼ0-Чֵ1-ͣ2-(Ĭ)3-ߣ + BYTE byRes; + float fCapacity;//SD¼ռ䣬ֻ + BYTE byDefLowStorageTime;// ģʽƼ ֻ + BYTE byDefMediumStorageTime; // ģʽƼ ֻ + BYTE byDefHighStorageTime; // ģʽƼ ֻ + BYTE byRes1[61]; +}NET_DVR_LITESTORAGE,*LPNET_DVR_LITESTORAGE; + +typedef struct tagNET_DVR_CALIBRATION +{ + DWORD dwSize;//ṹС + NET_VCA_POLYGON struRegion;//궨 + BYTE byRes[64]; +}NET_DVR_CALIBRATION,*LPNET_DVR_CALIBRATION; + +typedef struct tagNET_DVR_STD_CONFIG +{ + void* lpCondBuffer; //[in](ṹʽ),ͨŵ.ΪNULL + DWORD dwCondSize; //[in] lpCondBufferָڴС + void* lpInBuffer; //[in](ṹʽ),ʱΪNULLȡʱΪNULL + DWORD dwInSize; //[in] lpInBufferָڴС + void* lpOutBuffer; //[out](ṹʽ),ȡʱΪNULL,ʱΪNULL + DWORD dwOutSize; //[in] lpOutBufferָڴС + void* lpStatusBuffer; //[out]ص״̬(XMLʽ),ȡɹʱḳֵ,Ҫ,NULL + DWORD dwStatusSize; //[in] lpStatusBufferָڴС + void* lpXmlBuffer; //[in/out]byDataType = 1ʱЧ,xmlʽ + DWORD dwXmlSize; //[in/out]lpXmlBufferָڴС,ȡʱͬʱΪȡɹ޸ĻʵʳȣʱʾʵʳȣڴС + BYTE byDataType; //[in]/,0-ʹýṹlpInBuffer/lpOutBufferЧ,1-ʹXMLlpXmlBufferЧ + BYTE byRes[23]; +}NET_DVR_STD_CONFIG,*LPNET_DVR_STD_CONFIG; + +typedef struct DWORDtagNET_DVR_STD_ABILITY +{ + void* lpCondBuffer; //[in](ָʽ),ͨŵ.ΪNULL + DWORD dwCondSize; //[in] dwCondSizeָڴС + void* lpOutBuffer; //[out](XMLʽ),ΪNULL + DWORD dwOutSize; //[in] lpOutBufferָڴС + void* lpStatusBuffer; //[out]ص״̬(XMLʽ),ȡɹʱḳֵ,Ҫ,NULL + DWORD dwStatusSize; //[in] lpStatusBufferָڴС + DWORD dwRetSize; //[out]ȡݳ(lpOutBufferlpStatusBufferָʵݳ) + BYTE byRes[32]; //ֽ +}NET_DVR_STD_ABILITY,*LPNET_DVR_STD_ABILITY; + +typedef struct tagNET_DVR_STD_CONTROL +{ + void* lpCondBuffer; //[in](ָʽ),ͨŵ.ΪNULL + DWORD dwCondSize; //[in] dwCondSizeָڴС + void* lpStatusBuffer; //[out]ص״̬(XMLʽ),ȡɹʱḳֵ,Ҫ,NULL + DWORD dwStatusSize; //[in] lpStatusBufferָڴС + void* lpXmlBuffer; //[in/out]byDataType = 1ʱЧ,xmlʽ + DWORD dwXmlSize; //[in/out]lpXmlBufferָڴС,ȡʱͬʱΪȡɹ޸ĻʵʳȣʱʾʵʳȣڴС + BYTE byDataType; //[in]/,0-ʹýṹlpCondBufferЧ,1-ʹXMLlpXmlBufferЧ + BYTE byRes[55]; +}NET_DVR_STD_CONTROL, *LPNET_DVR_STD_CONTROL; + +#define MAX_FILE_PATH_LEN 256 //ļ· +typedef struct tagNET_DVR_MIME_UNIT +{ + //ʽ + //Content-Disposition: form-data; name="upload"; filename="C:\Users\test\Desktop\11.txt" + //Content-Type: text/plain + char szContentType[32]; //ӦContent-Type + char szName[MAX_FILE_PATH_LEN]; //Ӧnameֶ + char szFilename[MAX_FILE_PATH_LEN]; //Ӧfilenameֶ + DWORD dwContentLen; //ContentijȣС512K + char* pContent; //ָ + BYTE bySelfRead; // 0-紫ļ 1-ڲȡݣͨszFilename··ʱֶЧȡʱЧ + BYTE byRes[15]; +}NET_DVR_MIME_UNIT, *LPNET_DVR_MIME_UNIT; + +typedef struct tagNET_DVR_MIME_DATA +{ + BYTE byContentType; //ļ 0-Ч, 1-json, 2-bmp + BYTE byRes1[3]; // + void *lpContent; //ļݣָΪգʾļ + DWORD dwContentSize; //ļݴССΪ512k + char sContentID[32]; //ʽContent-IDͷֵISAPIضڵֵһһӦ + BYTE byRes[512]; // +}NET_DVR_MIME_DATA, *LPNET_DVR_MIME_DATA; + +typedef struct tagNET_DVR_XML_CONFIG_INPUT +{ + DWORD dwSize; //ṹС + void* lpRequestUrl; //ַʽ + DWORD dwRequestUrlLen; //ȣַ + void* lpInBuffer; //XMLʽ + DWORD dwInBufferSize; //С + DWORD dwRecvTimeOut; //ճʱʱ䣬λms0ʹĬϳʱ5s + BYTE byForceEncrpt; //ǷǿƼܣ0-1- + BYTE byNumOfMultiPart; //0-ЧֵʾķֶθʱlpInBufferNET_DVR_MIME_UNITṹָ룬ֵṹ + BYTE byMIMEType; //0-Ч1-ʾʹNET_DVR_MIME_UNITṹ壬2-ʾʹNET_DVR_MIME_DATAṹ壬ֶνbyNumOfMultiPartЧʱЧ + BYTE byRes1; + DWORD dwSendTimeOut; //ͳʱʱ䣬λms0ʹĬϳʱ5s + BYTE byRes[24]; +}NET_DVR_XML_CONFIG_INPUT, *LPNET_DVR_XML_CONFIG_INPUT; + +typedef struct tagNET_DVR_XML_CONFIG_OUTPUT +{ + DWORD dwSize; //ṹС + void* lpOutBuffer; //XMLʽ + DWORD dwOutBufferSize; //С(ڴС) + DWORD dwReturnedXMLSize; //ʵXMLݴС + void* lpStatusBuffer; //ص״̬(XMLʽ),ȡɹʱḳֵ,Ҫ,NULL + DWORD dwStatusSize; //״̬С(ڴС) +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + void* lpDataBuffer; //byNumOfMultiPart>0ʱϱĽṹʹã͸ݣͨNET_DVR_MIME_UNITdwContentLenƫƷ +#else + void* lpDataBuffer; //byNumOfMultiPart>0ʱϱĽṹʹã͸ݣͨNET_DVR_MIME_UNITdwContentLenƫƷ + BYTE byRes2[4]; +#endif + BYTE byNumOfMultiPart; //0-Ч ֵʾķֶθʱlpInBufferNET_DVR_MIME_UNITṹָ룬ֵṹ + BYTE byRes[23]; +}NET_DVR_XML_CONFIG_OUTPUT, *LPNET_DVR_XML_CONFIG_OUTPUT; + +typedef struct tagNET_DVR_FORM_DATA_CFG +{ + DWORD dwSize; //ṹС + void *lpBuffer; //ݻָNET_DVR_MIME_DATAṹ + DWORD dwBufferSize; //ݻС + BYTE byNumOfMultiPart; // 0-ЧֵʾķֶθʱlpBufferNET_DVR_MIME_DATAṹָ룬ֵṹΪ3 + BYTE byRes[67]; // +}NET_DVR_FORM_DATA_CFG, *LPNET_DVR_FORM_DATA_CFG; + +typedef struct tagNET_DVR_JSON_DATA_CFG +{ + DWORD dwSize; //ṹС + void *lpJsonData; //JSON + DWORD dwJsonDataSize; //JSONĴС + void *lpPicData; //ͼƬ + DWORD dwPicDataSize; //ͼƬݴС + DWORD dwInfraredFacePicSize; //ͼƬݴС0ʱͼƬ(JSONΪResponseStatusJSONʱֶ壻Inbound DataJSONûinfraredFaceURLʱֶҪ϶ͼƬݣ + void* lpInfraredFacePicBuffer; //ͼƬݻ + BYTE byRes[248]; // +}NET_DVR_JSON_DATA_CFG, *LPNET_DVR_JSON_DATA_CFG; + +typedef struct tagNET_DVR_SIMPLE_DAYTIME +{ + BYTE byHour; //ʱ + BYTE byMinute; // + BYTE bySecond; // + BYTE byRes; +}NET_DVR_SIMPLE_DAYTIME, *LPNET_DVR_SIMPLE_DAYTIME; + +typedef struct tagNET_DVR_TIME_SEGMENT +{ + NET_DVR_SIMPLE_DAYTIME struBeginTime; //ʼʱ + NET_DVR_SIMPLE_DAYTIME struEndTime; //ʱ +}NET_DVR_TIME_SEGMENT, *LPNET_DVR_TIME_SEGMENT; + +typedef struct tagNET_DVR_SINGLE_PLAN_SEGMENT +{ + BYTE byEnable; //Ƿʹܣ1-ʹܣ0-ʹ + BYTE byDoorStatus; //״̬ģʽݿģʽ0-Ч1-ߣ2-״̬ɣ3-״̬ã4-ͨ״̬״̬ƻʹã + BYTE byVerifyMode; //֤ʽ0-Ч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-,29-++,30-ˢ+ˢ31-ָƻ룬32-Ĥ33-ָƻˢĤ34-ˢĤ + BYTE byRes[5]; + NET_DVR_TIME_SEGMENT struTimeSegment; //ʱβ +}NET_DVR_SINGLE_PLAN_SEGMENT, *LPNET_DVR_SINGLE_PLAN_SEGMENT; + +typedef struct tagNET_DVR_WEEK_PLAN_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿʹܣ1-ʹܣ0-ʹ + BYTE byRes1[3]; + NET_DVR_SINGLE_PLAN_SEGMENT struPlanCfg[MAX_DAYS][MAX_TIMESEGMENT_V30]; //ܼƻ + BYTE byRes2[16]; +}NET_DVR_WEEK_PLAN_CFG, *LPNET_DVR_WEEK_PLAN_CFG; + +typedef struct tagNET_DVR_HOLIDAY_PLAN_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿʹܣ1-ʹܣ0-ʹ + BYTE byRes1[3]; + NET_DVR_DATE struBeginDate; //տʼ + NET_DVR_DATE struEndDate; //ս + NET_DVR_SINGLE_PLAN_SEGMENT struPlanCfg[MAX_TIMESEGMENT_V30]; //ʱβ + BYTE byRes2[16]; +}NET_DVR_HOLIDAY_PLAN_CFG, *LPNET_DVR_HOLIDAY_PLAN_CFG; + +typedef struct tagNET_DVR_HOLIDAY_PLAN_COND +{ + DWORD dwSize; + DWORD dwHolidayPlanNumber; //ռƻ + WORD wLocalControllerID; //͵ؿ[1,64] + BYTE byRes[106]; +}NET_DVR_HOLIDAY_PLAN_COND, *LPNET_DVR_HOLIDAY_PLAN_COND; + +typedef struct tagNET_DVR_WEEK_PLAN_COND +{ + DWORD dwSize; + DWORD dwWeekPlanNumber; //ܼƻ + WORD wLocalControllerID; //͵ؿ[1,64] + BYTE byRes[106]; +}NET_DVR_WEEK_PLAN_COND, *LPNET_DVR_WEEK_PLAN_COND; + +typedef struct tagNET_DVR_HOLIDAY_GROUP_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿã1-ã0- + BYTE byRes1[3]; + BYTE byGroupName[HOLIDAY_GROUP_NAME_LEN]; // + DWORD dwHolidayPlanNo[MAX_HOLIDAY_PLAN_NUM]; //ռƻţǰ䣬0Ч + BYTE byRes2[32]; +}NET_DVR_HOLIDAY_GROUP_CFG, *LPNET_DVR_HOLIDAY_GROUP_CFG; + +typedef struct tagNET_DVR_HOLIDAY_GROUP_COND +{ + DWORD dwSize; + DWORD dwHolidayGroupNumber; // + WORD wLocalControllerID; //͵ؿ[1,64] + BYTE byRes[106]; +}NET_DVR_HOLIDAY_GROUP_COND, *LPNET_DVR_HOLIDAY_GROUP_COND; + +typedef struct tagNET_DVR_PLAN_TEMPLATE +{ + DWORD dwSize; + BYTE byEnable; //Ƿã1-ã0- + BYTE byRes1[3]; + BYTE byTemplateName[TEMPLATE_NAME_LEN]; //ģ + DWORD dwWeekPlanNo; //ܼƻţ0ΪЧ + DWORD dwHolidayGroupNo[MAX_HOLIDAY_GROUP_NUM]; //ţǰ䣬0Ч + BYTE byRes2[32]; +}NET_DVR_PLAN_TEMPLATE, *LPNET_DVR_PLAN_TEMPLATE; + +typedef struct tagNET_DVR_PLAN_TEMPLATE_COND +{ + DWORD dwSize; + DWORD dwPlanTemplateNumber; //ƻģţ1ʼֵŽȡ + WORD wLocalControllerID; //͵ؿ[1,64]0Ч + BYTE byRes[106]; +}NET_DVR_PLAN_TEMPLATE_COND, *LPNET_DVR_PLAN_TEMPLATE_COND; + +typedef struct tagNET_DVR_DOOR_STATUS_PLAN +{ + DWORD dwSize; + DWORD dwTemplateNo; //ƻģţΪ0ʾȡָĬ״̬ͨ״̬ + BYTE byRes[64]; +}NET_DVR_DOOR_STATUS_PLAN, *LPNET_DVR_DOOR_STATUS_PLAN; + +typedef struct tagNET_DVR_CARD_READER_PLAN +{ + DWORD dwSize; + DWORD dwTemplateNo; //ƻģţΪ0ʾȡָĬ״̬ˢţ + BYTE byRes[64]; +}NET_DVR_CARD_READER_PLAN, *LPNET_DVR_CARD_READER_PLAN; + +typedef struct _tagNET_DVR_GROUP_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿã0-ã1- + BYTE byRes1[3]; + NET_DVR_VALID_PERIOD_CFG struValidPeriodCfg; //ȺЧڲ + BYTE byGroupName[GROUP_NAME_LEN]; //Ⱥ + BYTE byRes2[32]; +}NET_DVR_GROUP_CFG, *LPNET_DVR_GROUP_CFG; + +typedef struct tagNET_DVR_GROUP_COMBINATION_INFO +{ + BYTE byEnable; //ǷøȺ + BYTE byMemberNum; //ˢԱ + BYTE bySequenceNo; //Ⱥˢ + BYTE byRes; + DWORD dwGroupNo; //Ⱥ,0xffffffffʾԶ̿ţ0xfffffffeʾ +}NET_DVR_GROUP_COMBINATION_INFO, *LPNET_DVR_GROUP_COMBINATION_INFO; + +typedef struct tagNET_DVR_MULTI_CARD_GROUP_CFG +{ + BYTE byEnable; //Ƿøöؿ0-ã1- + BYTE byEnableOfflineVerifyMode; //Ƿʱ֤ʽԶ̿ţ + BYTE byRes1[2]; + DWORD dwTemplateNo; //öؿܵļƻģ + NET_DVR_GROUP_COMBINATION_INFO struGroupCombination[GROUP_COMBINATION_NUM]; //Ⱥϲ +}NET_DVR_MULTI_CARD_GROUP_CFG, *LPNET_DVR_MULTI_CARD_GROUP_CFG; + +typedef struct tagNET_DVR_MULTI_CARD_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿöؿܣ0-ã1- + BYTE bySwipeIntervalTimeout; //ˢʱʱ䣬1-255sĬ10s + BYTE byRes1[2]; + NET_DVR_MULTI_CARD_GROUP_CFG struGroupCfg[MULTI_CARD_GROUP_NUM]; //Ⱥˢ + BYTE byRes2[32]; +}NET_DVR_MULTI_CARD_CFG, *LPNET_DVR_MULTI_CARD_CFG; + +typedef struct tagNET_DVR_GROUP_COMBINATION_INFO_V50 +{ + BYTE byEnable; //ǷøȺ + BYTE byMemberNum; //ˢԱ + BYTE bySequenceNo; //Ⱥˢ + BYTE byRes; + DWORD dwGroupNo; //Ⱥ,0xffffffffʾԶ̿ţ0xfffffffeʾ +}NET_DVR_GROUP_COMBINATION_INFO_V50, *LPNET_DVR_GROUP_COMBINATION_INFO_V50; + +typedef struct tagNET_DVR_MULTI_CARD_GROUP_CFG_V50 +{ + BYTE byEnable; //Ƿøöؿ0-ã1- + BYTE byEnableOfflineVerifyMode; //Ƿʱ֤ʽԶ̿ţ1-ã0- + BYTE byRes1[2]; + DWORD dwTemplateNo; //öؿܵļƻģ + NET_DVR_GROUP_COMBINATION_INFO_V50 struGroupCombination[GROUP_COMBINATION_NUM]; //Ⱥϲ +}NET_DVR_MULTI_CARD_GROUP_CFG_V50, *LPNET_DVR_MULTI_CARD_GROUP_CFG_V50; + +typedef struct tagNET_DVR_MULTI_CARD_CFG_V50 +{ + DWORD dwSize; + BYTE byEnable; //Ƿöؿܣ0-ã1- + BYTE bySwipeIntervalTimeout; //ˢʱʱ䣬1-255sĬ10s + BYTE byRes1[2]; + NET_DVR_MULTI_CARD_GROUP_CFG_V50 struGroupCfg[NET_SDK_MULTI_CARD_GROUP_NUM_20]; //Ⱥˢ + BYTE byRes2[32]; +}NET_DVR_MULTI_CARD_CFG_V50, *LPNET_DVR_MULTI_CARD_CFG_V50; + +//2014-12-03 T1״̬ṹ +typedef struct +{ + DWORD dwSize;//ṹС + WORD wPort; //˿ں + //(豸ͨ˿ڿƣ˿ں豸˹̶ϲ㲻ãʼsocketӣT1ݣXMLʽ) + //0- ر(ر豸̣߳ͷŶ˿)1- (豸ڲ߳) + BYTE byPortState; + BYTE byRes[61]; // +}NET_DVR_T1TEST_PARAMCFG,*LPNET_DVR_T1TEST_PARAMCFG; + +#define CARD_PARAM_CARD_VALID 0x00000001 //ǷЧ +#define CARD_PARAM_VALID 0x00000002 //Чڲ +#define CARD_PARAM_CARD_TYPE 0x00000004 //Ͳ +#define CARD_PARAM_DOOR_RIGHT 0x00000008 //Ȩ޲ +#define CARD_PARAM_LEADER_CARD 0x00000010 //׿ +#define CARD_PARAM_SWIPE_NUM 0x00000020 //ˢ +#define CARD_PARAM_GROUP 0x00000040 //Ⱥ +#define CARD_PARAM_PASSWORD 0x00000080 // +#define CARD_PARAM_RIGHT_PLAN 0x00000100 //Ȩ޼ƻ +#define CARD_PARAM_SWIPED_NUM 0x00000200 //ˢ +#define CARD_PARAM_EMPLOYEE_NO 0x00000400 // +#define CARD_PARAM_NAME 0x00000800 // +#define CARD_PARAM_DEPARTMENT_NO 0x00001000 //ű +#define CARD_SCHEDULE_PLAN_NO 0x00002000 //Űƻ +#define CARD_SCHEDULE_PLAN_TYPE 0x00004000 //Űƻ +#define CARD_ROOM_NUMBER 0x00008000 // +#define CARD_SIM_NO 0x00010000 //SIMţֻţ +#define CARD_FLOOR_NUMBER 0x00020000 //¥ +#define CARD_USER_TYPE 0x00040000 //û + +typedef struct tagNET_DVR_ANTI_SNEAK_CFG +{ + DWORD dwSize; + BYTE byEnable; //ʹܷDZعܣ1-ʹܣ0-ʹ + BYTE byRes1[3]; + DWORD dwStartCardReaderNo; //DZʼ + BYTE byRes2[64]; +}NET_DVR_ANTI_SNEAK_CFG, *LPNET_DVR_ANTI_SNEAK_CFG; + +typedef struct tagNET_DVR_CARD_READER_ANTI_SNEAK_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿ뷴DZ·1-룬0- + BYTE byRes1[3]; + DWORD dwFollowUpCardReader[MAX_SNEAK_PATH_NODE]; //ţΪ0ʾעʼ + BYTE byRes2[32]; +}NET_DVR_CARD_READER_ANTI_SNEAK_CFG, *LPNET_DVR_CARD_READER_ANTI_SNEAK_CFG; + +typedef struct tagNET_DVR_PHONE_DOOR_RIGHT_CFG +{ + DWORD dwSize; + BYTE byOpenRight[MAX_DOOR_NUM_256]; //ʾ,ǷпȨޣ-Ȩޣ-Ȩ + BYTE byCloseRight[MAX_DOOR_NUM_256]; //ʾ,ǷйȨޣ-Ȩޣ-Ȩ + BYTE byNormalOpenRight[MAX_DOOR_NUM_256]; //ʾ,ǷгȨޣ-Ȩޣ-Ȩ + BYTE byNormalCloseRight[MAX_DOOR_NUM_256]; //ʾ,ǷгȨޣ-Ȩޣ-Ȩ + BYTE byArmRight[MAX_ALARMHOST_ALARMIN_NUM]; //ʾ,ǷвȨޣ-Ȩޣ-Ȩ + BYTE byDisarmRight[MAX_ALARMHOST_ALARMIN_NUM]; //ʾ,ǷгȨޣ-Ȩޣ-Ȩ + BYTE byRes[256]; // +}NET_DVR_PHONE_DOOR_RIGHT_CFG,*LPNET_DVR_PHONE_DOOR_RIGHT_CFG; + +typedef struct tagNET_DVR_MULTI_DOOR_INTERLOCK_CFG +{ + DWORD dwSize; + BYTE byEnable; //ǷöŻܣ1-ã0- + BYTE byRes1[3]; + DWORD dwMultiDoorGroup[MAX_MULTI_DOOR_INTERLOCK_GROUP][MAX_INTER_LOCK_DOOR_NUM]; //ŻȡֵΪű + BYTE byRes2[64]; +}NET_DVR_MULTI_DOOR_INTERLOCK_CFG, *LPNET_DVR_MULTI_DOOR_INTERLOCK_CFG; + +typedef struct tagNET_DVR_CARD_READER_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿʹܣ1-ʹܣ0-ʹ + BYTE byCardReaderType; //ͣ1-DS-K110XM/MK/C/CK2-DS-K192AM/AMP3-DS-K192BM/BMP4-DS-K182AM/AMP5-DS-K182BM/BMP6-DS-K182AMF/ACF7-Τ485,8- DS-K1101M/MK9- DS-K1101C/CK10- DS-K1102M/MK/M-A + //11- DS-K1102C/CK12- DS-K1103M/MK13- DS-K1103C/CK14- DS-K1104M/MK15- DS-K1104C/CK16- DS-K1102S/SK/S-A17- DS-K1102G/GK18- DS-K1100S-B19- DS-K1102EM/EMK20- DS-K1102E/EK + //21- DS-K1200EF22- DS-K1200MF23- DS-K1200CF24- DS-K1300EF25- DS-K1300MF26- DS-K1300CF27- DS-K1105E28- DS-K1105M29- DS-K1105C30- DS-K182AMF31- DS-K196AMF32-DS-K194AMP + //33-DS-K1T200EF/EF-C/MF/MF-C/CF/CF-C,34-DS-K1T300EF/EF-C/MF/MF-C/CF/CF-C35-DS-K1T105E/E-C/M/M-C/C/C-C36-DS-K1T803F/MF/SF/EF37-DS-K1A801F/MF/SF/EF,38-DS-K1107M/MK,39-DS-K1107E/EK, + //40-DS-K1107S/SK,41-DS-K1108M/MK,42-DS-K1108E/EK,43-DS-K1108S/SK,44-DS-K1200F,45-DS-K1S110-I,46-DS-K1T200M-PG/PGC,47-DS-K1T200M-PZ/PZC,48-DS-K1109H + BYTE byOkLedPolarity; //OK LEDԣ0-1- + BYTE byErrorLedPolarity; //Error LEDԣ0-1- + BYTE byBuzzerPolarity; //ԣ0-1- + BYTE bySwipeInterval; //ظˢʱ䣬λ + BYTE byPressTimeout; //ʱʱ䣬λ + BYTE byEnableFailAlarm; //Ƿöʧܳα0-ã1- + BYTE byMaxReadCardFailNum; //ʧܴ + BYTE byEnableTamperCheck; //Ƿַ֧⣬0-disable 1-enable + BYTE byOfflineCheckTime; //߼ʱ λ + BYTE byFingerPrintCheckLevel; //ָʶȼ1-1/10ʣ2-1/100ʣ3-1/1000ʣ4-1/10000ʣ5-1/100000ʣ6-1/1000000ʣ7-1/10000000ʣ8-1/100000000ʣ9-3/100ʣ10-3/1000ʣ11-3/10000ʣ12-3/100000ʣ13-3/1000000ʣ14-3/10000000ʣ15-3/100000000ʣ16-Automatic Normal,17-Automatic Secure,18-Automatic More Secure + BYTE byUseLocalController; //ֻǷھ͵ؿϣ0-1- + BYTE byRes1; + WORD wLocalControllerID; //ֻ͵ؿţ1-64,0δע + WORD wLocalControllerReaderID; //ֻ͵ؿĶID0δע + WORD wCardReaderChannel; //ֻͨͨţ0Τߣ1-RS485A,2-RS485B + BYTE byRes[16]; +}NET_DVR_CARD_READER_CFG, *LPNET_DVR_CARD_READER_CFG; + +typedef struct tagNET_DVR_CARD_READER_CFG_V50 +{ + DWORD dwSize; + BYTE byEnable; //Ƿʹܣ1-ʹܣ0-ʹ + BYTE byCardReaderType; //ͣ1-DS-K110XM/MK/C/CK2-DS-K192AM/AMP3-DS-K192BM/BMP4-DS-K182AM/AMP5-DS-K182BM/BMP6-DS-K182AMF/ACF7-Τ485ߣ8- DS-K1101M/MK9- DS-K1101C/CK10- DS-K1102M/MK/M-A11- DS-K1102C/CK12- DS-K1103M/MK13- DS-K1103C/CK14- DS-K1104M/MK15- DS-K1104C/CK16- DS-K1102S/SK/S-A17- DS-K1102G/GK18- DS-K1100S-B19- DS-K1102EM/EMK20- DS-K1102E/EK21- DS-K1200EF22- DS-K1200MF23- DS-K1200CF24- DS-K1300EF25- DS-K1300MF26- DS-K1300CF27- DS-K1105E28- DS-K1105M29- DS-K1105C30- DS-K182AMF31- DS-K196AMF32-DS-K194AMP33-DS-K1T200EF/EF-C/MF/MF-C/CF/CF-C,34-DS-K1T300EF/EF-C/MF/MF-C/CF/CF-C35-DS-K1T105E/E-C/M/M-C/C/C-C,36-DS-K1T803F/F-M/F-S/F-E,37-DS-K1A801F/F-M/F-S/F-E,38-DS-K1107M/MK,39-DS-K1107E/EK,40-DS-K1107S/SK,41-DS-K1108M/MK,42-DS-K1108E/EK,43-DS-K1108S/SK,44-DS-K1200F,45-DS-K1S110-I,46-DS-K1T200M-PG/PGC,47-DS-K1T200M-PZ/PZC,48-DS-K1109H + BYTE byOkLedPolarity; //OK LEDԣ0-1- + BYTE byErrorLedPolarity; //Error LEDԣ0-1- + BYTE byBuzzerPolarity; //ԣ0-1- + BYTE bySwipeInterval; //ظˢʱ䣬λ + BYTE byPressTimeout; //ʱʱ䣬λ + BYTE byEnableFailAlarm; //Ƿöʧܳα0-ã1- + BYTE byMaxReadCardFailNum; //ʧܴ + BYTE byEnableTamperCheck; //Ƿַ֧⣬0-disable 1-enable + BYTE byOfflineCheckTime; //߼ʱ λ + BYTE byFingerPrintCheckLevel; //ָʶȼ1-1/10ʣ2-1/100ʣ3-1/1000ʣ4-1/10000ʣ5-1/100000ʣ6-1/1000000ʣ7-1/10000000ʣ8-1/100000000ʣ9-3/100ʣ10-3/1000ʣ11-3/10000ʣ12-3/100000ʣ13-3/1000000ʣ14-3/10000000ʣ15-3/100000000ʣ16-Automatic Normal,17-Automatic Secure,18-Automatic More SecureĿǰŽ֧֣ + BYTE byUseLocalController; //ֻǷھ͵ؿϣ0-1- + BYTE byRes1; + WORD wLocalControllerID; //ֻ͵ؿ, byUseLocalController=1ʱЧ1-64,0δע + WORD wLocalControllerReaderID; //ֻ͵ؿĶIDbyUseLocalController=1ʱЧ0δע + WORD wCardReaderChannel; //ֻͨͨţbyUseLocalController=1ʱЧ0Τߣ1-RS485A,2-RS485B + BYTE byFingerPrintImageQuality; //ָͼ0-Ч1-(V1)2-е(V1)3-(V1)4-(V1)5-(V2)6-е(V2)7-(V2)8-(V2) + BYTE byFingerPrintContrastTimeOut; //ָƶԱȳʱʱ䣬0-ЧΧ1-20:1s-20s0xff-޴ + BYTE byFingerPrintRecogizeInterval; //ָʶ0-ЧΧ1-10:1s-10s0xff-ӳ + BYTE byFingerPrintMatchFastMode; //ָƥģʽ0-ЧΧ1-5:ģʽ1-ģʽ50xff-Զ + BYTE byFingerPrintModuleSensitive; //ָģȣ0-ЧΧ1-8ȼ1-ȼ8 + BYTE byFingerPrintModuleLightCondition; //ָģ0-Ч1-⣬2- + BYTE byFaceMatchThresholdN; //ȶԷֵΧ0-100 + BYTE byFaceQuality; //Χ0-100 + BYTE byFaceRecogizeTimeOut; //ʶʱʱ䣬Χ1-201s-20s0xff-޴ + BYTE byFaceRecogizeInterval; //ʶ0-ЧΧ1-101s-10s0xff-ӳ + WORD wCardReaderFunction; //ֻ࣬λʾ1λ-ָƣڶλ-λ-ָλ-Ĥ + BYTE byCardReaderDescription[CARD_READER_DESCRIPTION]; // + WORD wFaceImageSensitometry; //ֻͼعȣΧ0-65535 + BYTE byLivingBodyDetect; //˼⣬0-Ч1-ã2- + BYTE byFaceMatchThreshold1; //1:1ƥ䷧ֵΧ0-100 + WORD wBuzzerTime; //ʱ䣬Χ0s-5999s0- + BYTE byFaceMatch1SecurityLevel; //1:1ʶȫȼ0-Ч1-һ㣬2-ǿ3-ǿ + BYTE byFaceMatchNSecurityLevel; //1:Nʶȫȼ0-Ч1-һ㣬2-ǿ3-ǿ + BYTE byEnvirMode;//ʶ𻷾ģʽ0-Ч1-ڣ2- + BYTE byLiveDetLevelSet;//ֵȼã0-Ч1-ͣ2-У3-ߣ + BYTE byLiveDetAntiAttackCntLimit;// 0-Ч1-255Σͻˡ豸ͳһƣƣ + BYTE byEnableLiveDetAntiAttack;//ʹܣ0-Ч1-ã2- + BYTE bySupportDelFPByID;//ֻǷְָ֧IDɾָƣ0-Ч1-֧֣2-֧ + BYTE byFaceContrastMotionDetLevel;//ȶʱƶ⼶0-Ч1-ͣ2-У3-ߣ0xff- + BYTE byDayFaceMatchThresholdN; //1:Nƥ䷧ֵΧ0-100 + BYTE byNightFaceMatchThresholdN; //ҹ1:Nƥ䷧ֵΧ0-100 + BYTE byFaceRecogizeEnable; //ʶʹܣ0-Ч1-2-ر + BYTE byBlockListMatchThreshold; //ֹƥ䷧ֵΧ0-100 + BYTE byRes3; + BYTE byDefaultVerifyMode; //ֻĬ֤ʽĬϣ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-ˢָƻ + DWORD dwFingerPrintCapacity;//ָֻ + DWORD dwFingerPrintNum;//ֻѴָ + BYTE byEnableFingerPrintNum;//ָֻʹܣ0-ʹܣ1-ʹܣֻеֶΪ1-ʹʱdwFingerPrintCapacitydwFingerPrintNumЧ + BYTE byEnableReverseCardNo; //ŷתʹ 0-ʹ1-ʹ + BYTE byRes2[2]; + DWORD dwIndependSwipeIntervals;//Ա֤ÿ˵ظ֤ + BYTE byRes[224]; +}NET_DVR_CARD_READER_CFG_V50, *LPNET_DVR_CARD_READER_CFG_V50; + +typedef struct tagNET_DVR_FAILED_FACE_COND +{ + DWORD dwSize; + BYTE byRes[128]; // +}NET_DVR_FAILED_FACE_COND, *LPNET_DVR_FAILED_FACE_COND; + +typedef struct tagNET_DVR_FAILED_FACE_INFO +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + BYTE byErrorCode; //ģʧϸ,0-Ч1-ȡļʧܣ2-ļʧܣ3-ڴ治㣬4-עʧܣ5-ۼ̫С6-Ȩ޲ + BYTE byRes1[3]; + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID + BYTE byRes[92]; +}NET_DVR_FAILED_FACE_INFO, *LPNET_DVR_FAILED_FACE_INFO; + +typedef struct tagNET_DVR_FACE_PARAM_COND +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀţʱòɲã + BYTE byEnableCardReader[MAX_CARD_READER_NUM_512]; //ĶǷЧ0-Ч1-Чʱòɲã + DWORD dwFaceNum; //ûȡȡʱΪ0xffffffffʾȡϢ + BYTE byFaceID; //ţЧֵΧΪ1-2 0xffʾÿʱòɲã + BYTE byRes[127]; // +}NET_DVR_FACE_PARAM_COND, *LPNET_DVR_FACE_PARAM_COND; + +typedef struct tagNET_DVR_FACE_PARAM_CFG +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + DWORD dwFaceLen; //ݳ豸˷صļܺ + char* pFaceBuffer; //ָ + BYTE byEnableCardReader[MAX_CARD_READER_NUM_512]; //Ҫ·Ķʾӵλλʾ0-·ö1-·ö + BYTE byFaceID; //ţЧֵΧΪ1-2 + BYTE byFaceDataType; //ͣ0-ģ壨Ĭϣ1-ͼƬ + BYTE byRes[126]; +}NET_DVR_FACE_PARAM_CFG, *LPNET_DVR_FACE_PARAM_CFG; + +typedef struct tagNET_DVR_FACE_PARAM_STATUS +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + BYTE byCardReaderRecvStatus[MAX_CARD_READER_NUM_512]; //״ֽ̬ڱʾ0-ʧܣ1-ɹ2-Ի3-ڴ()4-Ѵڸ5-ǷID + //,6-㷨ģʧܣ7-δ·Ȩޣ8-δ壨9-ۼСС10-ͼƬݳС1KB11-ͼƬʽpng/jpg/bmp,12-ͼƬޣ13-ͼƬޣ14-ͼƬϢУʧܣ15-ͼƬʧܣ16-ʧܣ17-ʧ + BYTE byErrorMsg[ERROR_MSG_LEN]; //·ϢbyCardReaderRecvStatusΪ4ʱʾѴӦĿ + DWORD dwCardReaderNo; //ƶţ·󷵻 + BYTE byTotalStatus; //·ܵ״̬0-ǰδж1-ж(ָŽеĶ·ˣܳɹ) + BYTE byFaceID; //ţЧֵΧΪ1-2 + BYTE byRes[130]; +}NET_DVR_FACE_PARAM_STATUS, *LPNET_DVR_FACE_PARAM_STATUS; + +typedef struct tagNET_DVR_FACE_PARAM_BYCARD +{ + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + BYTE byEnableCardReader[MAX_CARD_READER_NUM_512]; //ĶϢʾ + BYTE byFaceID[MAX_FACE_NUM]; //Ҫɾţ±ֵ꣬ʾ0-ɾ1-ɾ + BYTE byRes1[42]; // +}NET_DVR_FACE_PARAM_BYCARD, *LPNET_DVR_FACE_PARAM_BYCARD; + +typedef struct tagNET_DVR_FACE_PARAM_BYREADER +{ + DWORD dwCardReaderNo; //ֵʾ + BYTE byClearAllCard; //ǷɾпϢ0-ɾϢ1-ɾпϢ + BYTE byRes1[3]; // + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + BYTE byRes[548]; // +}NET_DVR_FACE_PARAM_BYREADER, *LPNET_DVR_FACE_PARAM_BYREADER; + +typedef union tagNET_DVR_DEL_FACE_PARAM_MODE +{ + BYTE uLen[588]; //峤 + NET_DVR_FACE_PARAM_BYCARD struByCard; //ŵķʽɾ + NET_DVR_FACE_PARAM_BYREADER struByReader; //ķʽɾ +}NET_DVR_DEL_FACE_PARAM_MODE, *LPNET_DVR_DEL_FACE_PARAM_MODE; + +typedef struct tagNET_DVR_FACE_PARAM_CTRL +{ + DWORD dwSize; + BYTE byMode; //ɾʽ0-ŷʽɾ1-ɾ + BYTE byRes1[3]; // + NET_DVR_DEL_FACE_PARAM_MODE struProcessMode; //ʽ + BYTE byRes[64]; // +}NET_DVR_FACE_PARAM_CTRL, *LPNET_DVR_FACE_PARAM_CTRL; + +typedef struct tagNET_DVR_LOCAL_CONTROLLER_STATUS_COND +{ + DWORD dwSize; + WORD wLocalControllerID; //͵ؿ(ֿ),Ϊ0ʾ + BYTE byRes[306]; +}NET_DVR_LOCAL_CONTROLLER_STATUS_COND, *LPNET_DVR_LOCAL_CONTROLLER_STATUS_COND; + +typedef struct tagNET_DVR_LOCAL_CONTROLLER_STATUS +{ + DWORD dwSize; + WORD wLocalControllerID; //͵ؿ(ֿ) + BYTE byLocalAntiDismantleStatus; //͵ؿ״̬0-رգ1- + BYTE byPowerSupplyStatus; //豸״̬1-繩磬2-ع + WORD wBatteryVoltage; //صѹֵʵֵ10λ + BYTE byBatteryLowVoltage; //Ƿڵѹ״̬0-1- + BYTE byFireAlarm; //0-1-̽ӱ2-Ͽ + BYTE bySerialNumber[SERIALNO_LEN]; //豸к + BYTE byMagneticStatus[MAX_DOOR_NUM];// Ŵ״̬0رգ12ƻ·3ƻ·4쳣 + BYTE byDoorLockStatus[MAX_DOOR_NUM]; //״̬0رգ12ƻ·3ƻ·4쳣 + BYTE byCardReaderOnlineStatus[MAX_CARD_READER_NUM]; //״̬0-ߣ1- + WORD wLocalControllerStatus; //ֻ͵ؿ״̬(ֿ״̬)0-ߣ1-ߣ2-·1ϵRS48513-·1ϵRS48524-·2ϵRS48515-·2ϵRS48526-·3ϵRS48517-·3ϵRS48528-·4ϵRS48519-·4ϵRS4852ֻ + BYTE byRes2[122]; +}NET_DVR_LOCAL_CONTROLLER_STATUS, *LPNET_DVR_LOCAL_CONTROLLER_STATUS; + +typedef struct tagNET_DVR_ONLINE_LOCAL_CONTROLLER_CFG +{ + DWORD dwSize; + BYTE byLocalControllerName[LOCAL_CONTROLLER_NAME_LEN]; //͵ؿ + WORD wLocalControllerID; //͵ؿ + WORD wDevPort; // 豸˿ں + NET_DVR_IPADDR struDevIP; // 豸IPַ + NET_DVR_IPADDR struSubnetMask; // 豸 + NET_DVR_IPADDR struGateway; // 豸 + BYTE bySearchProgress; //ȣ0ʾδʼ100ʾͬ + BYTE byEffectData;//ǷΪЧ,0ʾЧ1ʾ豸ֻȣΪ + BYTE byRes[302]; +}NET_DVR_ONLINE_LOCAL_CONTROLLER_CFG, *LPNET_DVR_ONLINE_LOCAL_CONTROLLER_CFG; + +typedef struct tagNET_DVR_ACS_WORK_STATUS +{ + DWORD dwSize; + BYTE byDoorLockStatus[MAX_DOOR_NUM]; //״̬0-أ1- + BYTE byDoorStatus[MAX_DOOR_NUM]; //״̬1-ߣ2-״̬3-״̬4-ͨ״̬ + BYTE byMagneticStatus[MAX_DOOR_NUM]; //Ŵ״̬0-պϣ1- + BYTE byCaseStatus[MAX_CASE_SENSOR_NUM]; ////¼״̬0-룬1- + WORD wBatteryVoltage; //صѹֵʵֵ10λ + BYTE byBatteryLowVoltage; //Ƿڵѹ״̬0-1- + BYTE byPowerSupplyStatus; //豸״̬1-繩磬2-ع + BYTE byMultiDoorInterlockStatus; //Ż״̬0-رգ1- + BYTE byAntiSneakStatus; //DZ״̬0-رգ1- + BYTE byHostAntiDismantleStatus; //״̬0-رգ1- + BYTE byIndicatorLightStatus; //ָʾ״̬0-ߣ1- + BYTE byCardReaderOnlineStatus[MAX_CARD_READER_NUM]; //״̬0-ߣ1- + BYTE byCardReaderAntiDismantleStatus[MAX_CARD_READER_NUM]; //״̬0-رգ1- + BYTE byCardReaderVerifyMode[MAX_CARD_READER_NUM]; //ǰ֤ʽ1-ˢ2-ˢ+룬3-ˢ4-ˢ + BYTE bySetupAlarmStatus[MAX_ALARMHOST_ALARMIN_NUM];//ڲ״̬0-Ӧڴڳ״̬1-Ӧڴڲ״̬ + BYTE byAlarmInStatus[MAX_ALARMHOST_ALARMIN_NUM]; //ڱ״̬0-Ӧڵǰޱ1-Ӧڵǰб + BYTE byAlarmOutStatus[MAX_ALARMHOST_ALARMOUT_NUM]; //״̬0-Ӧޱ1-Ӧб + DWORD dwCardNum; //ӵĿ + BYTE byRes2[32]; +}NET_DVR_ACS_WORK_STATUS, *LPNET_DVR_ACS_WORK_STATUS; + +typedef struct tagNET_DVR_ACS_WORK_STATUS_V50 +{ + DWORD dwSize; + BYTE byDoorLockStatus[MAX_DOOR_NUM_256]; //״̬(̵״̬)0-أ1-2-·3-·4-쳣 + BYTE byDoorStatus[MAX_DOOR_NUM_256]; //״̬(¥״̬)1-ߣ2-״̬()3-״̬()4-ͨ״̬(ܿ) + BYTE byMagneticStatus[MAX_DOOR_NUM_256]; //Ŵ״̬0-أ1-2-·3-·4-쳣 + BYTE byCaseStatus[MAX_CASE_SENSOR_NUM]; //¼״̬0-룬1- + WORD wBatteryVoltage; //صѹֵʵֵ10λ + BYTE byBatteryLowVoltage; //Ƿڵѹ״̬0-1- + BYTE byPowerSupplyStatus; //豸״̬1-繩磬2-ع + BYTE byMultiDoorInterlockStatus; //Ż״̬0-رգ1- + BYTE byAntiSneakStatus; //DZ״̬0-رգ1- + BYTE byHostAntiDismantleStatus; //״̬0-رգ1- + BYTE byIndicatorLightStatus; //ָʾ״̬0-ߣ1- + BYTE byCardReaderOnlineStatus[MAX_CARD_READER_NUM_512]; //״̬0-ߣ1- + BYTE byCardReaderAntiDismantleStatus[MAX_CARD_READER_NUM_512]; //״̬0-رգ1- + BYTE byCardReaderVerifyMode[MAX_CARD_READER_NUM_512]; //ǰ֤ʽ1-ߣ2-ˢ+룬3-ˢ4-ˢ + BYTE bySetupAlarmStatus[MAX_ALARMHOST_ALARMIN_NUM];//ڲ״̬0-Ӧڴڳ״̬1-Ӧڴڲ״̬ + BYTE byAlarmInStatus[MAX_ALARMHOST_ALARMIN_NUM]; //λʾڱ״̬0-Ӧڵǰޱ1-Ӧڵǰб + BYTE byAlarmOutStatus[MAX_ALARMHOST_ALARMOUT_NUM]; //λʾ״̬0-Ӧޱ1-Ӧб + DWORD dwCardNum; //ӵĿ + BYTE byFireAlarmStatus; //״̬ʾ0-1-·2-Ͽ + BYTE byBatteryChargeStatus; //س״̬0-Ч1-У2-δ + BYTE byMasterChannelControllerStatus; //ͨ״̬0-Ч1-ߣ2- + BYTE bySlaveChannelControllerStatus; //ͨ״̬0-Ч1-ߣ2- + BYTE byAntiSneakServerStatus; //DZط״̬0-Ч1-δã2-3-Ͽ + BYTE byRes3[3]; + DWORD dwAllowFaceNum; //ӵͨжϣ + DWORD dwBlockFaceNum; //ӵĽֹͨжϣ + BYTE byRes2[108]; +}NET_DVR_ACS_WORK_STATUS_V50, *LPNET_DVR_ACS_WORK_STATUS_V50; + +typedef struct tagNET_DVR_CASE_SENSOR_CFG +{ + DWORD dwSize; + BYTE byHostBuzzer; //0-1- + BYTE byRes1[3]; + BYTE byCardReaderBuzzer[MAX_CARD_READER_NUM]; //1-0- + BYTE byAssociateAlarmOut[MAX_ALARMHOST_ALARMOUT_NUM]; //ı1-0- + BYTE byDoorOpen[MAX_DOOR_NUM]; //1-NŴ򿪣0-1-򿪣 + BYTE byDoorClose[MAX_DOOR_NUM]; //1-NŹرգ0-1-رգ + BYTE byRes2[64]; +}NET_DVR_CASE_SENSOR_CFG, *LPNET_DVR_CASE_SENSOR_CFG; + +typedef enum _ENUM_UPGRADE_TYPE +{ + ENUM_UPGRADE_DVR = 0, //ͨ豸 + ENUM_UPGRADE_ADAPTER = 1, //DVR + ENUM_UPGRADE_VCALIB = 2, //ܿ + ENUM_UPGRADE_OPTICAL = 3, //˻ + ENUM_UPGRADE_ACS = 4, //Žϵͳ + ENUM_UPGRADE_AUXILIARY_DEV = 5,//豸 + ENUM_UPGRADE_LED = 6, //LEDͿͽտ + ENUM_UPGRADE_INTELLIGENT = 7, //豸 + ENUM_UPGRADE_CUSTOM = 8 //ԶURL ISAPI½Ч +}ENUM_UPGRADE_TYPE; + +typedef struct tagNET_DVR_ACS_EVENT_INFO +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //ţΪ0Ч + BYTE byCardType; //ͣ1-ͨ2-Ⱥ忨3-ֹ4-Ѳ5-вȿ6-7-8-Ϊ0Ч + BYTE byAllowListNo; //,1-8Ϊ0Ч + BYTE byReportChannel; //ϴͨ1-ϴ2-1ϴ3-2ϴΪ0Ч + BYTE byCardReaderKind; //һ࣬0-Ч1-IC2-֤3-ά,4-ָͷ + DWORD dwCardReaderNo; //ţΪ0Ч + DWORD dwDoorNo; //ű(¥)Ϊ0Чӵ豸ΪԱͨ豸ʱ1Ϊ2Ϊ + DWORD dwVerifyNo; //ؿ֤ţΪ0Ч + DWORD dwAlarmInNo; //ţΪ0Ч + DWORD dwAlarmOutNo; //ţΪ0Ч + DWORD dwCaseSensorNo; //¼ + DWORD dwRs485No; //RS485ͨţΪ0Ч + DWORD dwMultiCardGroupNo; //Ⱥ + WORD wAccessChannel; //Աͨ + BYTE byDeviceNo; //豸ţΪ0Ч + BYTE byDistractControlNo;//ֿţΪ0Ч + DWORD dwEmployeeNo; //ţΪ0Ч + WORD wLocalControllerID; //͵ؿţ0-Ž1-64͵ؿ + BYTE byInternetAccess; //ID1-1,2-2,3-1 + BYTE byType; //ͣ0:ʱ,1-24Сʱ,2-ʱ ,3-ڲ4-Կ׷ 5-𾯷 6-ܽ 7-24Сʱ 8-24Сʱ9-24Сʱ𶯷,10-Žŷ11-Žŷ 0xff- + BYTE byMACAddr[MACADDR_LEN]; //ַΪ0Ч + BYTE bySwipeCardType;//ˢͣ0-Ч1-ά + BYTE byMask; //Ƿ֣0-1-δ֪2-֣3- + DWORD dwSerialNo; //¼ˮţΪ0Ч + BYTE byChannelControllerID; //ͨIDΪ0Ч1-ͨ2-ͨ + BYTE byChannelControllerLampID; //ͨưIDΪ0ЧЧΧ1-255 + BYTE byChannelControllerIRAdaptorID; //ͨתӰIDΪ0ЧЧΧ1-255 + BYTE byChannelControllerIREmitterID; //ͨIDΪ0ЧЧΧ1-255 + BYTE byHelmet;//ѡǷȫñ0-1-δ֪2-ȫ, 3-ȫñ + BYTE byRes[3]; +}NET_DVR_ACS_EVENT_INFO, *LPNET_DVR_ACS_EVENT_INFO; + +typedef struct tagNET_DVR_ACS_EVENT_INFO_EXTEND +{ + DWORD dwFrontSerialNo; //¼ˮţΪ0ЧֶΪ0ƽ̨dwSerialNoжǷʧ¼ֶβΪ0ƽ̨ݸֶκdwSerialNoֶιͬжǷʧ¼ҪڽĺdwSerialNo + BYTE byUserType; //Աͣ0-Ч1-ͨˣˣ2-ÿͣ3-ֹˣ4-Ա + BYTE byCurrentVerifyMode; //ǰ֤ʽ0-Ч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-룬29-++룬30-ˢ+ˢ31-ָƻ룬32-Ĥ33-ָƻˢĤ34-ˢĤ + BYTE byCurrentEvent; //ǷΪʵʱ¼0-Ч1-ǣʵʱ¼2-¼ + BYTE byPurePwdVerifyEnable; //豸Ƿִ֧֤ 0-֧֣1-֧ + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID豸˵ʹ˹ţԱIDֶΣbyEmployeeNoһҪݣbyEmployeeNoתΪdwEmployeeNoôֶҲҪݣϲƽ̨ͻ˵ȽbyEmployeeNoֶΣֶΪգٿǽdwEmployeeNoֶΣ + BYTE byAttendanceStatus; //״̬0-δ,1-ϰ࣬2-°࣬3-ʼϢ4-Ϣ5-ʼӰ࣬6-Ӱ + BYTE byStatusValue; //״ֵ̬ + BYTE byRes2[2]; + BYTE byUUID[NET_SDK_UUID_LEN/*36*/]; //UUIDֶνڶԽөʯƽ̨вŻʹã + BYTE byDeviceName[NET_DEV_NAME_LEN]; //豸к + BYTE byRes[24]; +}NET_DVR_ACS_EVENT_INFO_EXTEND, *LPNET_DVR_ACS_EVENT_INFO_EXTEND; + +//չṹϢV20 +typedef struct tagNET_DVR_ACS_EVENT_INFO_EXTEND_V20 +{ + BYTE byRemoteCheck; //ǷҪԶ̺飨0-Ч1-ҪĬϣ2-Ҫ + BYTE byThermometryUnit; //µλ0-϶ȣĬϣ1-϶ȣ2-ģ + BYTE byIsAbnomalTemperature; //ץIJǷ¶쳣1-ǣ0- + BYTE byRes2; + float fCurrTemperature; //¶ȣȷСһλ + NET_VCA_POINT struRegionCoordinates; //¶ + DWORD dwQRCodeInfoLen; //άϢȣΪ0DZʾ + DWORD dwVisibleLightDataLen; //ȳɼͼƬȣΪ0DZʾ + DWORD dwThermalDataLen; //ȳͼƬȣΪ0DZʾ + char *pQRCodeInfo; //άϢָ + char *pVisibleLightData; //ȳɼͼƬָ + char *pThermalData; //ȳͼƬָ + BYTE byAttendanceLabel[64]; //Զ + WORD wXCoordinate; //x꣬ϽͼƬĹһ꣬Χ0-1000 + WORD wYCoordinate; //y꣬ϽͼƬĹһ꣬Χ0-1000 + WORD wWidth; //ȣΧ0-1000 + WORD wHeight; //߶ȣΧ0-1000 + BYTE byHealthCode; //״̬, 0-, 1-δ, 2-δ, 3-, 4-, 5-, 6-޴Ա, 7-Ϣӿ쳣²ѯʧܣ, 8-ѯ볬ʱ + BYTE byNADCode; //, 0-, 1-δѯ, 2-ԣ, 3-ԣȷ, 4-Чѹ + BYTE byTravelCode; //г̱, 0-, 1-14һֱڵ, 2-14뿪, 3-14ڵ, 4- + BYTE byVaccineStatus; //״̬, 0-, 1-δ, 2-ע, 3- + BYTE byRes[948]; +}NET_DVR_ACS_EVENT_INFO_EXTEND_V20, *LPNET_DVR_ACS_EVENT_INFO_EXTEND_V20; + +typedef struct tagNET_DVR_ACS_ALARM_INFO +{ + DWORD dwSize; + DWORD dwMajor; //ͣο궨 + DWORD dwMinor; //ͣο궨 + NET_DVR_TIME struTime; //ʱ + BYTE sNetUser[MAX_NAMELEN] ;//û + NET_DVR_IPADDR struRemoteHostAddr ;//Զַ + NET_DVR_ACS_EVENT_INFO struAcsEventInfo; //ϸ + DWORD dwPicDataLen; //ͼƬݴСΪ0DZʾ + char *pPicData; + WORD wInductiveEventType; //¼ͣ0-ЧͻжϸֵΪ0ֵ󣬱ͨ¼֣ͨԭбͣdwMajordwMinor + BYTE byPicTransType; //ͼƬݴ䷽ʽ: 0-ƣ1-url + BYTE byRes1; //ֽ + DWORD dwIOTChannelNo; //IOTͨ + char *pAcsEventInfoExtend; //byAcsEventInfoExtendΪ1ʱʾָһNET_DVR_ACS_EVENT_INFO_EXTENDṹ + BYTE byAcsEventInfoExtend; //pAcsEventInfoExtendǷЧ0-Ч1-Ч + BYTE byTimeType; //ʱͣ0-豸ʱ䣬1-UTCʱ䣨struTimeʱ䣩 + BYTE byRes2; //ֽ + BYTE byAcsEventInfoExtendV20; //pAcsEventInfoExtendV20ǷЧ0-Ч1-Ч + char *pAcsEventInfoExtendV20; //byAcsEventInfoExtendV20Ϊ1ʱʾָһNET_DVR_ACS_EVENT_INFO_EXTEND_V20ṹ + BYTE byRes[4]; +}NET_DVR_ACS_ALARM_INFO, *LPNET_DVR_ACS_ALARM_INFO; + +#define JUDGE_MAX_VIDEOOUT_NUM 9 + +typedef struct tagNET_DVR_AUDIO_ACTIVATION_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿ + BYTE byRes1[3]; + DWORD dwChanNo; //Ƶͨ + BYTE bySensitivity; // 1-100Խߣʾϵ͵ʹܸƵ뼤ܣԽͣʾҪϸߵʹܸƵļ + BYTE byPriority; //ȼ 0-ȼ01-ȼ1 ֵԽ󼶱Խ + WORD wDelayTime; //лӳʱ䣬λs, ʱԶصԤõ1ӦĻ + BYTE byRes2; // + BYTE byEnablePreset; //ǷԤõ + WORD wPreset; //Ԥõ + WORD wBase; /*׼*/ + BYTE byRes3[2]; + BYTE byVoChanNo[JUDGE_MAX_VIDEOOUT_NUM]; //ǷƵڡֵ0ʾ1-ʾ±ʾͨ˳£0-VGA1,1-VGA2, 2-VGA3,3-VGA4,4-VGA5~10,5-HDMI1,6-HDMI2 + BYTE byRes[255]; // +}NET_DVR_AUDIO_ACTIVATION_CFG,*LPNET_DVR_AUDIO_ACTIVATION_CFG; + +typedef struct tagNET_DVR_INFRARED_OUTPUT_CTRL_CFG +{ + DWORD dwSize; //ṹС + BYTE byIROutPort; //1-12-2 + BYTE byIRCmdIndex; //ѧӦ + BYTE byRes[254]; // +}NET_DVR_INFRARED_OUTPUT_CTRL_CFG, *LPNET_DVR_INFRARED_OUTPUT_CTRL_CFG; + +#define MAX_IR_CMD_NAME_LEN 32 //Ƴ +#define MAX_IR_CMD_NUM 32 // + +typedef struct tagNET_DVR_INFRARED_CMD_INFO //Ϣ +{ + char sCmdName[MAX_IR_CMD_NAME_LEN]; // + BYTE byRes[8]; // +} NET_DVR_INFRARED_CMD_INFO,*LPNET_DVR_INFRARED_CMD_INFO; + + +typedef struct tagNET_DVR_INFRARED_LEARN_CODE_CFG_ +{ + DWORD dwSize; //ṹС + BYTE sIROutName[MAX_IR_CMD_NAME_LEN]; // + NET_DVR_INFRARED_CMD_INFO struIRCmdInfo[MAX_IR_CMD_NUM]; //Ϣ + BYTE byRes[256]; +} NET_DVR_INFRARED_CMD_NAME_CFG,*LPNET_DVR_INFRARED_CMD_NAME_CFG; + +typedef enum tagIR_LEARN_SEND_DATA_TYPE_ENUM +{ + ENUM_SENDDATA = 0x0, // + ENUM_SEND_LEARN_IR_CMD_START, //ͺѧ + ENUM_SEND_LEARN_IR_CMD_END = 0x2 //ѧ +}IR_LEARN_SEND_DATA_TYPE_ENUM; + + +typedef struct tagNET_DVR_INFRARED_LEARN_INFO +{ + DWORD dwSize; //ṹС + BYTE byIROutPort; //1-12-2 + BYTE byIRCmdIndex; //ѧӦ + BYTE byRes[30]; // +} NET_DVR_INFRARED_LEARN_INFO, *LPNET_DVR_INFRARED_LEARN_INFO; + +typedef struct tagNET_DVR_INFRARED_LEARN_END +{ + DWORD dwSize; //ṹС + BYTE bySaveLearnInfo; //ѧϢ0-棬1- + BYTE byRes[255]; +} NET_DVR_INFRARED_LEARN_END,*LPNET_DVR_INFRARED_LEARN_END; + +#define MAX_VIDEOIN_TYPE_NUM 10 //ֵ֧ƵԴ + +typedef struct tagNET_DVR_VIDEOIN_TYPE_INFO +{ + WORD wInType; //Դ 0-SDI,1-VGA, 2-HDMI,3-IP,4-PIP + WORD wInNum; //ֵ֧ + WORD wStartNo; //Ӧʼ + BYTE byRes[6]; +}NET_DVR_VIDEOIN_TYPE_INFO, *LPNET_DVR_VIDEOIN_TYPE_INFO; + +typedef struct tagNET_DVR_TRIAL_SYSTEM_INFO +{ + DWORD dwSize ; //ṹС + BYTE byVideoInTypeNum ; //ƵԴ͸ + BYTE byRes1[3]; + NET_DVR_VIDEOIN_TYPE_INFO struVideoIn[MAX_VIDEOIN_TYPE_NUM] ; //ƵԴ + BYTE byRes[512 ] ; // +} NET_DVR_TRIAL_SYSTEM_INFO, *LPNET_DVR_TRIAL_SYSTEM_INFO; + +typedef struct tagNET_DVR_CASE_INFO +{ + DWORD dwSize; //ṹС + BYTE byCaseNo[CASE_NO_LEN]; // + BYTE byCaseName[CASE_NAME_LEN]; //ƣ + BYTE byLitigant1[LITIGANT_LEN]; //1 + BYTE byLitigant2[LITIGANT_LEN]; //2 + BYTE byChiefJudge[CHIEF_JUDGE_LEN];//г + BYTE byCaseType; //ͣ1-°2-°3- sCaseTypeCustomЧ + BYTE byShowCaseInfoTime; /* Ϣʾʱ,λ, ȡֵΧ1~30*/ + BYTE byRes1[2]; // + char sCaseTypeCustom[NET_SDK_CASETYPE_LEN/*32*/];//Զ尸 + BYTE byRes[220]; // +}NET_DVR_CASE_INFO, *LPNET_DVR_CASE_INFO; + +#define MICROPHONE_NUM 16 +#define FAN_NUM 8 +#define FPGA_NUM 8 +#define MAIN_BOARD 8 +#define LOCAL_INPUT_NUM 24 +#define LAMP_STATE_NAME 32 +#define LAMP_NAME 32 +#define FILE_NAME_LEN 32 +typedef struct _NET_DVR_REMOTE_PLAY_ +{ + DWORD dwSize; + BYTE byFileName[FILE_NAME_LEN]; //Ҫŵļ + BYTE byVideoOut[7]; // + BYTE byRes1[5]; + BYTE byType; // 0-壬1-ʼţ2-ֹͣ + BYTE byRes[31]; // +}NET_DVR_REMOTE_PLAY, *LPNET_DVR_REMOTE_PLAY; + +typedef struct _NET_DVR_TRIAL_MICROPHONE_STATUS +{ + DWORD dwSize ; + BYTE byMicrophoneStatus [MICROPHONE_NUM];//˷״̬±ʾ˷0-磬1- + BYTE byRes[32] ; // +}NET_DVR_TRIAL_MICROPHONE_STATUS, *LPNET_DVR_TRIAL_MICROPHONE_STATUS; + +typedef struct _NET_DVR_TRIAL_HOST_STATUS +{ + DWORD dwSize ; + DWORD dwFanSpeed [FAN_NUM];//ת + WORD wMainBoardTemp[MAIN_BOARD]; //¶ + BYTE byFpgaTempWarn [FPGA_NUM]; //0-¶ޱ״̬1-FPGA¶ȱ״̬λ1-ڱ״̬ 0-ޱ״̬ + BYTE byRes[32] ; // +}NET_DVR_TRIAL_HOST_STATUS, *LPNET_DVR_TRIAL_HOST_STATUS; + +typedef struct _NET_DVR_LOCAL_INPUT_INFO_ +{ + DWORD dwSize; + BYTE byChannelName[NAME_LEN] ; //ͨ + BYTE byRes[32] ; // +}NET_DVR_LOCAL_INPUT_INFO, *LPNET_DVR_LOCAL_INPUT_INFO; + +typedef struct tagNET_DVR_LAMP_STATUS +{ + BYTE byEnable; //Ƿ + BYTE byRes1[3]; + BYTE byLampName[LAMP_NAME]; //Lamp ƣ34ΪLamp156Ϊlamp2 + BYTE byLampState1[LAMP_STATE_NAME]; //״̬1Ӧƣ + BYTE byLampState2[LAMP_STATE_NAME]; //״̬2Ӧ + BYTE byLampState3[LAMP_STATE_NAME]; //״̬3Ӧ + BYTE byRes[32]; +}NET_DVR_LAMP_STATUS,*LPNET_DVR_LAMP_STATUS; + +typedef struct _NET_DVR_LAMP_OUT +{ + DWORD dwSize; + NET_DVR_LAMP_STATUS struLampInfo[2]; //0-ʾlamp1,1lamp2 + BYTE byRes[256]; // +}NET_DVR_LAMP_OUT, *LPNET_DVR_LAMP_OUT; + +typedef struct _NET_DVR_LAMP_CONTROL +{ + DWORD dwSize ; + BYTE byLampNo ; //LampţӦLamp± + BYTE byLampStateNo ; //Lamp״̬ 0-壬1-״̬1, 2-״̬2 3-״̬3 ӦLAMP״̬ + BYTE byRes[14] ; // +}NET_DVR_LAMP_CONTROL, *LPNET_DVR_LAMP_CONTROL; + + +//ʵʱϢ +typedef struct tagNET_DVR_TPS_PARAM +{ + BYTE byStart; // ʼ + BYTE byCMD; // ţ01-ָ02-뿪ָ03-ӵ״ָ̬(Ϊ03ʱֻbyLaneStatebyQueueLenЧ)04-Ȧ״̬Ϊ04ʱwLoopStatewStateMaskЧʾbyLane϶ȦĹ״̬ + WORD wSpaceHeadway; //ͷ࣬ + WORD wDeviceID; // 豸ID + WORD wDataLen; // ݳ + BYTE byLane; // Ӧ + BYTE bySpeed; // Ӧ٣KM/H + BYTE byLaneState; // ״̬0-״̬1-ͨ2-ӵ3- + BYTE byQueueLen; // ״̬Ŷӳȣ50ף + WORD wLoopState; //Ȧ״̬ڼλʾȦ״̬״̬1-0-뿪ȦŴӾͷɽԶûڽʱȽţٽȦţȦΨһġ + WORD wStateMask; //Ȧ״̬룬λΪ1ӦwLoopState״̬λЧΪ0ʾЧ + DWORD dwDownwardFlow; //ǰ ϵ³ + DWORD dwUpwardFlow; //ǰ µϳ + BYTE byJamLevel; //ӵµȼbyLaneStateΪ3ʱЧ1-ȣ2-жȣ3-ض + BYTE byVehicleDirection; //0-δ֪1-϶£2-¶ + BYTE byJamFlow; //ӵÿһϱһۼƳϢ + BYTE byChannelizationLane; //ţʾ仯һΪ·ڳĿ + BYTE byVehicleType; //ʶ0- δ֪1- ͳ()2- ()3- γ(С)4- ǻ + BYTE byRes1[5]; // + WORD wTimeHeadway; // ͷʱ࣬ +}NET_DVR_TPS_PARAM, *LPNET_DVR_TPS_PARAM; + +//TPSʵʱϴ +typedef struct tagNET_DVR_TPS_REAL_TIME_INFO +{ + DWORD dwSize; // ṹС + DWORD dwChan;//ͨ + NET_DVR_TIME_V30 struTime; //ʱ + NET_DVR_TPS_PARAM struTPSRealTimeInfo;// ͨͳϢ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + BYTE* pAddInfoBuffer; +#else + /*Ϣָ,ָNET_DVR_TPS_ADDINFOṹ*/ + BYTE* pAddInfoBuffer; + BYTE byRes2[4]; +#endif + /*ϢʶǷNET_DVR_TPS_ADDINFOṹ壩,0-޸Ϣ, 1-иϢ*/ + BYTE byAddInfoFlag; + BYTE byRes1[3]; // + DWORD dwDeviceIDEx; // 豸IDչ + BYTE byRes[8]; // +}NET_DVR_TPS_REAL_TIME_INFO, *LPNET_DVR_TPS_REAL_TIME_INFO; + +//ͳϢ +typedef struct tagNET_DVR_TPS_LANE_PARAM +{ + BYTE byLane; // Ӧ + BYTE bySpeed; // ƽٶ + WORD wArrivalFlow; // + DWORD dwLightVehicle; // Сͳ + DWORD dwMidVehicle; // ͳ + DWORD dwHeavyVehicle; // ͳ + DWORD dwTimeHeadway; // ͷʱ࣬ + DWORD dwSpaceHeadway; // ͷ࣬ + float fSpaceOccupyRation; // ռռʣٷֱȼ,*1000 + float fTimeOccupyRation; // ʱռʣٷֱȼ,*1000 + BYTE byStoppingTimes; //ƽͣ + BYTE byQueueLen; // ״̬Ŷӳȣ50ף + BYTE byFlag; //ϴʶ0-ʾT1ʱͳƽ,1-ʾT2ʱͳ + BYTE byVehicelNum; // + WORD wDelay; //ƽ + BYTE byRes1[6]; // + DWORD dwNonMotor; // ǻ +}NET_DVR_TPS_LANE_PARAM, *LPNET_DVR_TPS_LANE_PARAM; + +typedef struct tagNET_DVR_PANORAMA_LINKAGE +{ + DWORD dwSize; + BYTE byEnable;//0-رգ1- + BYTE byRes[127]; +}NET_DVR_PANORAMA_LINKAGE, *LPNET_DVR_PANORAMA_LINKAGE; + +// ͨͳϢ +typedef struct tagNET_DVR_TPS_STATISTICS_PARAM +{ + BYTE byStart; // ʼ + BYTE byCMD; // ţ 08-ʱָ + BYTE byRes[2]; // Ԥֽ + WORD wDeviceID; // 豸ID + WORD wDataLen; // ݳ + BYTE byTotalLaneNum; // Ч + BYTE byRes2[3]; + DWORD dwDeviceIDEx; // 豸IDչ + BYTE byRes1[8]; + NET_DVR_TIME_V30 struStartTime; //ͳƿʼʱ + DWORD dwSamplePeriod; //ͳʱ,λ + NET_DVR_TPS_LANE_PARAM struLaneParam[MAX_TPS_RULE/*8*/]; +}NET_DVR_TPS_STATISTICS_PARAM, *LPNET_DVR_TPS_STATISTICS_PARAM; + +//TPSͳƹϴ +typedef struct tagNET_DVR_TPS_STATISTICS_INFO +{ + DWORD dwSize; // ṹС + DWORD dwChan ;//ͨ + NET_DVR_TPS_STATISTICS_PARAM struTPSStatisticsInfo;// ͨͳϢ + DWORD dwJsonLen;//JsonϢ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + BYTE* pJsonBuf; +#else + // JsonϢָ,JSONӦEventNotificationAlert Json Block + BYTE* pJsonBuf; + BYTE byRes2[4]; +#endif + BYTE byJsonInfoFlag; //ǷJson͸ݣ0-ޣ1- + BYTE byBrokenNetHttp; //־λ0-شݣ1-ش + BYTE byRes[114]; // +}NET_DVR_TPS_STATISTICS_INFO, *LPNET_DVR_TPS_STATISTICS_INFO; + +#define DPC_CORRECT 1 //У +#define DPC_CORRECT_CANCEL 2 //ȡУ +#define DPC_CROSS_DISPALY_OPEN 3 //ʮֲʾ +#define DPC_CROSS_DISPALY_CLOSE 4 //ʮֲʾر +#define DPC_POINT 5 //У +#define DPC_UP 6 //Уƫ +#define DPC_DOWN 7 //Уƫ +#define DPC_RIGHT 8 //Уƫ +#define DPC_LEFT 9 //Уƫ +#define DPC_ALL_CORRECT 10 //лУ +#define DPC_SAVE 11 //㱣 + +typedef struct tagNET_DVR_DPC_PARAM +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + WORD wCtrlType ;//ο궨 + /* + ֶУĬΪֶУģʽʹwCtrlTypeͽֶУ + ԶУ豸ԶУٽֶУʱwCtrlTypestruPointЧ + */ + BYTE byDPCMode;//Уģʽ0-ֶУ1-ԶУ + BYTE byRes; + NET_VCA_POINT struPoint; /*ͼƽ꣬һ0-1*/ + BYTE byRes1[64]; +}NET_DVR_DPC_PARAM, *LPNET_DVR_DPC_PARAM; + +//ǾУ(FFC)ֶģʽ +typedef struct tagNET_DVR_FFC_MANUAL_INFO +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byRes[64]; +}NET_DVR_FFC_MANUAL_INFO, *LPNET_DVR_FFC_MANUAL_INFO; + +//ǾУ(FFC) +typedef struct tagNET_DVR_FFC_BACKCOMP_INFO +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byRes[64]; +}NET_DVR_FFC_BACKCOMP_INFO, *LPNET_DVR_FFC_BACKCOMP_INFO; + +//洢״̬ +typedef struct tagNET_DVR_STORAGE_SERVER_SWITCH_CFG +{ + DWORD dwSize; + /*洢ͼƬأλʾ0-رգ1- + 0-ƶץͼ(ݲ֧) + 1-ץͼ(ݲ֧) + + */ + BYTE byPicEnable[MAX_PIC_SWITCH_STORAGE_SERVER]; + /*洢Ϣأλʾ0-رգ1- + 0-ȶͼ(ݲ֧) + 1-(ݲ֧) + + */ + BYTE byAddInfoEnable[MAX_INFO_SWITCH_STORAGE_SERVER]; + BYTE byRes[324]; +} NET_DVR_STORAGE_SERVER_SWITCH_CFG, +*LPNET_DVR_STORAGE_SERVER_SWITCH_CFG; + +//ǿֹͣȡ֤ +typedef struct tagNET_DVR_FORCESTOP_FORENSICS_CFG +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byRes[64]; +}NET_DVR_FORCESTOP_FORENSICS_CFG, *LPNET_DVR_FORCESTOP_FORENSICS_CFG; + +typedef struct tagNET_DVR_DEC_VCA_ALARM +{ + DWORD dwSize; + DWORD dwDisplayNo; //ܱʾͨ + BYTE bySubWinNo; //ܱӴں + BYTE byRes1[3]; + NET_DVR_TIME_V30 struTime; //ʱ + NET_DVR_PU_STREAM_CFG_V41 struSourceInfo; //ԴϢ + BYTE *byAlarmPic; //ͼƬ + DWORD dwAlarmPicSize; //ͼƬСλֽ + BYTE byRes2[64]; +}NET_DVR_DEC_VCA_ALARM, *LPNET_DVR_DEC_VCA_ALARM; + +typedef struct tagNET_DVR_DEC_VCA_ALARM_LOGO +{ + BYTE byEnableLogo; //Ƿܱlogo0-ӣ0- + BYTE byFlash; //Ƿ˸0-˸0-˸ + WORD wFlashTime; //˸ʱ䣬λ룬ȡֵΧӽȡ + DWORD dwLogoX; //logo X꣬봰ܴС1920*1920 + DWORD dwLogoY; //logo Y + BYTE byRes[32]; +}NET_DVR_DEC_VCA_ALARM_LOGO, *LPNET_DVR_DEC_VCA_ALARM_LOGO; + +typedef struct tagNET_DVR_DEC_VCA_ALARM_PIC +{ + BYTE byUploadPic; //ܱʱǷϴͼƬ0-ϴ0-ϴ + BYTE byOverlayTargetInfo; //ͼƬǷĿϢ0-ӣ0- + BYTE byOverlayRuleInfo; //ͼƬǷܹϢ0-ӣ0- + BYTE byPicQuality; //ͼƬϵ 0- 1-Ϻ 2-һ + /*ͼƬС ͨȡ + 0-CIF 1-QCIF 2-D1 3-UXGA(1600x1200), 4-SVGA(800x600),5-HD720p(1280x720) + 6-VGA 7-XVGA 8-HD900p 9-HD1080 10-2560*1920 + 11-1600*304 12-2048*1536 13-2448*2048, 14-2448*1200 15-2448*800 + 16-XGA(1024*768), 17-SXGA(1280*1024),18-WD1(960*576/960*480), 19-1080i, 20-576*576 + 21-1536*1536, 22-1920*1920, 23-320*240, 24-720*720, 25-1024*768, + 26-1280*1280, 27-1600*600, 28-2048*768, 0xff-Auto(ʹõǰֱ)*/ + BYTE byPicSize; + BYTE byRes[27]; +}NET_DVR_DEC_VCA_ALARM_PIC, *LPNET_DVR_DEC_VCA_ALARM_PIC; + +typedef struct tagNET_DVR_DEC_VCA_ALARM_CFG +{ + DWORD dwSize; + NET_DVR_DEC_VCA_ALARM_LOGO struAlarmLogo; //ܱlogoӲ + NET_DVR_DEC_VCA_ALARM_PIC struAlarmPic; //ܱͼƬ + BYTE byRes[64]; +}NET_DVR_VCA_ALARM_CFG, *LPNET_DVR_DEC_VCA_ALARM_CFG; + +#define MAX_OSD_LEN 64 //OSD +typedef struct tagNET_DVR_OUTPUT_PIC_INFO +{ + DWORD dwSize; + BYTE sPicName[NAME_LEN];//ͼƬ + BYTE byUsed; //ǷѴڣ0-ڣ1- + BYTE byRes[31]; +}NET_DVR_OUTPUT_PIC_INFO,*LPNET_DVR_OUTPUT_PIC_INFO; + +typedef struct tagNET_DVR_OUTPUT_PIC_CFG +{ + DWORD dwSize; + DWORD dwOutputPicNo; //ͼƬ + BYTE byEnable; //logoǷʾ1-ʾ0- + BYTE byRes1[3]; + NET_DVR_RECTCFG_EX struRect;//logoλãڷΧܴСΪ1920*1920 + BYTE byFlash; //Ƿ˸1-˸0-˸ + BYTE byTranslucent; //Ƿ͸1-͸0-͸ + BYTE byRes2[2]; // + DWORD dwOutputPicWinNo; //ͼƬںţ1ֽ豸+1ֽں+2ֽͼƬںţ,ȡȫʱЧ + BYTE byRes3[28]; +}NET_DVR_OUTPUT_PIC_CFG,*LPNET_DVR_OUTPUT_PIC_CFG; + +typedef struct tagNET_DVR_OUTPUT_OSD_CFG +{ + DWORD dwSize; + BYTE byEnable; //OSDǷʾ0-ʾ1-ʾ + BYTE byFontSize; //С1-2-У3-С + BYTE byOSDColor; //OSDɫã0-Ĭϣ 1-ڣ2-ף3-죬4-̣5- + BYTE byRes1[1]; + BYTE byOsdContent[MAX_OSD_LEN]; //OSD + NET_DVR_RECTCFG_EX struRect;//OSDλãڷΧܴСΪ1920*1920 + DWORD dwOsdWinNo; //OSDںţ1ֽ豸+1ֽں+2ֽOSDںţȡʱЧ + BYTE byRes2[32]; // +}NET_DVR_OUTPUT_OSD_CFG,*LPNET_DVR_OUTPUT_OSD_CFG; + +typedef struct tagNET_DVR_CHAN_RELATION_RESOURCE +{ + DWORD dwSize; + DWORD dwDisplayChan; //ʾͨţ1ֽ豸+1ֽڱ+2ֽʾͨţ + BYTE byRelateAudio; //ǷӴƵ + BYTE byRes1[3]; + DWORD dwSubWinNo; //ƵӴںţ1ֽڵǽ+1ֽӴں+2ֽڴںţ + DWORD dwChannel; //ͨţȡȫʱЧ + BYTE byRes2[32]; +}NET_DVR_CHAN_RELATION_RESOURCE, *LPNET_DVR_CHAN_RELATION_RESOURCE; + +typedef struct tagNET_DVR_ALARM_CHAN_ABLITITY +{ + DWORD dwSize; + BYTE bySensorChan[64];//ģͨ ±ʾͨ 0-ʾ֧֣1-ʾ֧ + BYTE byAlarmInChan[64];//ͨ ±ʾͨ 0-ʾ֧֣1-ʾ֧ + BYTE byAlarmOutChan[64];//ͨ ±ʾͨ 0-ʾ֧֣1-ʾ֧ + BYTE by485Chan[64];//485ͨ ±ʾͨ 0-ʾ֧֣1-ʾ֧ + BYTE byRes[128]; +}NET_DVR_ALARM_CHAN_ABLITITY, *LPNET_DVR_ALARM_CHAN_ABLITITY; + +typedef struct +{ + DWORD dwSize; + BYTE byOutScale[8];//±ʾںţ0-ʾ֧֣1-ʾ12V2-ʾ24V + BYTE byRes[16]; +}NET_DVR_OUT_SCALE_CFG, *LPNET_DVR_OUT_SCALE_CFG; + +typedef struct tagNET_DVR_MONITOR_LOCATION_COND +{ + DWORD dwSize; + DWORD dwChan; + /* + 0 ʾ ץMPRģʽ֡ץ IPCʹã + 1 ʾ ץ HVT ģʽ쿨IPCʹã + */ + BYTE byRelateType; + BYTE byRes[63]; // +}NET_DVR_MONITOR_LOCATION_COND, *LPNET_DVR_MONITOR_LOCATION_COND; + +typedef struct tagNET_DVR_MONITOR_LOCATION_CFG +{ + DWORD dwSize; + BYTE byMonitoringSiteID[MAX_ID_LEN/*48*/]; //ʾ + BYTE byDeviceID[MAX_ID_LEN/*48*/]; //豸 + BYTE byDirectionNo; //ʾ,0-,1-,2-,3-˫,4-ɶ,5-,6-,7-ɱ,8- + BYTE byRes1[3]; // + BYTE byMonitorInfo[MONITORSITE_ID_LEN/*48*/]; //ʾϢ + BYTE byRes[128]; // +}NET_DVR_MONITOR_LOCATION_CFG, *LPNET_DVR_MONITOR_LOCATION_CFG; + +typedef struct tagNET_DVR_REMOTECONTROL_COND +{ + DWORD dwSize; //ṹС + DWORD dwChannel; //ͨ + BYTE byRes[64]; +}NET_DVR_REMOTECONTROL_COND, *LPNET_DVR_REMOTECONTROL_COND; + +typedef struct tagNET_DVR_REMOTECONTROL_STATUS_ +{ + DWORD dwSize; //ṹС + BYTE byAlarmStatus;//״̬0-,1-,2- + BYTE byRes[3]; + WORD wAlarmDealyTime;//ӳʱ䣬λs + WORD wDisAlarmDealyTime;//ӳʱ䣬λs + BYTE byRes1[64]; +} NET_DVR_REMOTECONTROL_STATUS, *LPNET_DVR_REMOTECONTROL_STATUS; + +typedef struct tagNET_DVR_SECURITY_CFG +{ + DWORD dwSize; + BYTE byCommuMode;//˽Эͨģʽ0-ģʽ1-ȫģʽ + BYTE byRes1[2]; + BYTE byWebAuthentication; //web֤ 0-digest1-basic2-digest/basic;Ĭbasic֤ + BYTE byRtspAuthentication; //rtsp֤ 0-disable1-basic2-digest3-digest/basic;Ĭbasic֤ + BYTE byTelnetServer; //telnet 0ã1 + BYTE bySSHServer; //SSH 0(Ĭ)1 + BYTE byIllegalLoginLock; //½, 0-ãĬϣ1- + BYTE byStreamEncryption; // 0-ܣ1- + BYTE byAntiAttack; //Ƿܣ0- ã1-(socketʱ5sر) + BYTE byRes[26]; +}NET_DVR_SECURITY_CFG,*LPNET_DVR_SECURITY_CFG; + +typedef struct tagNET_DVR_PASSWORD_MANAGE_CFG +{ + DWORD dwSize; + BYTE byRes[3]; + BYTE byLockCount; //ӦûIPĴ¼󣬶Ըû0-ֵΪĴ ĬΪ01ʾ¼1Ժû + DWORD dwLockTime; //ʱ䣬ʾʱ䣬λ롣Ϊ0byLockCountΪ0ʱdwLockTimeЧ + BYTE byRes1[128]; //4ֽڶ +} NET_DVR_PASSWORD_MANAGE_CFG,*LPNET_DVR_PASSWORD_MANAGE_CFG; + + +typedef struct tagNET_DVR_UNLOCK_INFO +{ + DWORD dwSize; + BYTE byUnlockType; //0-Ч 1-IP2-IP + BYTE byIPVersion; //1-IPV42-IPV6byUnlockTypeΪ1ʱòЧ + BYTE byRes1[2]; + NET_DVR_IPADDR struIPAddr; //IPַ + BYTE byRes[64]; +} NET_DVR_UNLOCK_INFO,*LPNET_DVR_UNLOCK_INFO; + +typedef struct tagNET_DVR_LOCKED_INFO +{ + DWORD dwSize; + BYTE byIPType; //IP 0-Ч1-IPV42-IPV6 + BYTE byRes1[3]; + NET_DVR_IPADDR struIPAddress; + BYTE byRes[20]; +} NET_DVR_LOCKED_INFO,*LPNET_DVR_LOCKED_INFO; + + +typedef struct tagNET_DVR_VEHICLE_PARA +{ + BYTE sLicense[MAX_LICENSE_LEN]; + /*ֵ + 0-㷨ⲻ֧ʶң1-ݿ˹͹(CZ - Czech Republic)2-(FRA - France) + 3-¹(DE - Germany),4-(E - Spain), 5-(IT - Italy)6-(NL - Netherlands)7-(PL - Poland)8-˹工(SVK - Slovakia), 9-׶˹(BY - Belorussia), 10-Ħ(MDA - Moldova)11-˹(RU - Russia)12-ڿ(UA - Ukraine), + 169-ô(Canada), 172-(US), 227-Ĵ(Australia), 0xfe-޷ʶ + */ + BYTE byCountry; // ֵ + + BYTE byRes[239]; +}NET_DVR_VEHICLE_PARA, *LPNET_DVR_VEHICLE_PARA; + +typedef struct tagNET_DVR_FACE_PIC_DATA_INFO +{ + DWORD dwImageLen; //ͼƬС + NET_VCA_RECT struVcaRect; //ͼڴͼеλãһ + DWORD dwFaceScore; //ƶȣȡֵΧ0-100 + BYTE byVcaRectOnly; //Ƿֻϴ꣺0-1- + BYTE byRes1[3]; + DWORD dwPID; //ͼƬID + DWORD dwFaceSearchNum;// + NET_VCA_RECT struMultiVcaRect[NET_DVR_MAX_FACE_SEARCH_NUM];//ͼڴͼеλãһ, byVcaRectOnly=1ʱã + BYTE byRes[136]; + BYTE *pImage; //ͼƬҪΪjpgʽ +}NET_DVR_FACE_PIC_DATA_INFO, *LPNET_DVR_FACE_PIC_DATA_INFO; + +typedef struct tagNET_DVR_BEHAVIOUR_COND +{ + DWORD dwSearchType; // + //&0x1 - Խ + //&0x2 - + //&0x4 - Ʒ + //&0x8 - Ʒȡ + //&0x10 - + //&0x20 - 뿪 + //&0x40 - Ƿͣ + //&0x80 - ǻ + //&0x100 -Աۼ + //&0x200 - ƶ + //&0x400 - ڼ + //&0x800 - 仯 + //&0x1000 - ˶ + //&0x2000 - Ա + //&0x4000 - Ա + //&0x8000 - Ա + //&0x10000 C̬Ʒ + //&0x20000 C ֻ + BYTE byHumanMisinfo;// ֻȡϢ 0-1- + BYTE byRes[251]; // +}NET_DVR_BEHAVIOUR_COND, *LPNET_DVR_BEHAVIOUR_COND; + + +typedef union tagNET_DVR_SMARTSEARCH_PIC_UNION +{ + BYTE byLen[256]; //峤 + NET_DVR_VEHICLE_PARA struVehiclePara; //Ϣ + NET_VCA_HUMAN_FEATURE struHumaFeature; // + NET_DVR_FACE_PIC_DATA_INFO struHumaPic; //ͼϢѯԶͼƬͼͼܣ + NET_DVR_BEHAVIOUR_COND struBehaviourCond; //쳣Ϊ +}NET_DVR_SMARTSEARCH_PIC_UNION,*LPNET_DVR_SMARTSEARCH_PIC_UNION; + +typedef struct tagNET_DVR_SMART_SEARCH_PIC_PARA //ͼƬṹ size 344 +{ + DWORD dwChanNo; //ͨ + DWORD byStreamID[STREAM_ID_LEN] ; //IDϢdwChanNoȣȼϸߣbyStreamIDΪʱʹIDΪյʹdwChanNoֶ + NET_DVR_TIME_EX struStartTime; //¼ʼʱ + NET_DVR_TIME_EX struEndTime; //¼ֹͣʱ + WORD wSearchType; //ܲ 0- 1-ԣ 2-ͼͼ 3-쳣Ϊ + BYTE byRes1[2]; + NET_DVR_SMARTSEARCH_PIC_UNION uSmartSearchCond; //ܲ + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cStartTimeDifferenceH; //ʼʱUTCʱСʱ-12 ... +14 ʾʱ + char cStartTimeDifferenceM; //ʼʱUTCʱӣ-30, 0, 30, 45ʾʱ + char cStopTimeDifferenceH; //ʱUTCʱСʱ-12 ... +14ʾʱ + char cStopTimeDifferenceM; //ʱUTCʱӣ-30, 0, 30, 45ʾʱ + BYTE byRes[59]; +}NET_DVR_SMART_SEARCH_PIC_PARA, *LPNET_DVR_SMART_SEARCH_PIC_PARA; + +//ʶ +typedef struct tagNET_DVR_FACE_SUB_PIC_INFO +{ + DWORD dwSimilarity; //ƶ 0-100 + NET_VCA_RECT struVcaRect; //򣬹һ + BYTE byRes2[236]; // +}NET_DVR_FACE_SUB_PIC_INFO ,*LPNET_DVR_FACE_SUB_PIC_INFO; + + +typedef struct tagNET_DVR_BEHAVIOR_INFO +{ + NET_VCA_RECT struVcaRect; + WORD wPeopleNum; //ͼƬͣNET_DVR_SMART_SEARCH_PIC_RET wPicTypeΪ̬ƷʱЧ + BYTE byRes2[238]; // +}NET_DVR_BEHAVIOR_INFO ,*LPNET_DVR_BEHAVIOR_INFO; + +typedef union tagNET_DVR_PIC_FEATURE_UNION +{ + BYTE byLen[256]; //峤 + NET_DVR_PLATE_INFO struPlateInfo; //Ϣ + NET_DVR_FACE_SUB_PIC_INFO struFaceSubInfo; //ͼϢ + NET_DVR_BEHAVIOR_INFO struBehavior; //쳣ΪӦͼϢ +}NET_DVR_PIC_FEATURE_UNION,*LPNET_DVR_PIC_FEATURE_UNION; + +typedef struct tagNET_DVR_SMART_SEARCH_PIC_RET +{ + char sFileName[PICTURE_NAME_LEN];//ļ + NET_DVR_TIME_EX struTime; //ͼƬץͼʱ + DWORD dwFileSize; //ļĴС + WORD wPicType; //ͼƬ 0- 1-ԣ 2-ͼͼ 3-Խߣ4-֣ 5-Ʒ 6-Ʒȡ 7- 8-뿪 9-Ƿͣ10-ǻ11-Աۼ12-ƶ,13-Աܣ14-˶15-Աأ16-쳣17-ڼ⣬18-Ա19-̬Ʒ 20-ֻ + BYTE byRes1[2]; // + NET_DVR_PIC_FEATURE_UNION uPicFeature; //ͼƬ + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cTimeDifferenceH; //UTCʱСʱ-12 ... +14 ʾʱ + char cTimeDifferenceM; //UTCʱӣ-30, 0, 30, 45ʾʱ + BYTE byRes[29]; +}NET_DVR_SMART_SEARCH_PIC_RET, *LPNET_DVR_SMART_SEARCH_PIC_RET; + +typedef struct tagNET_DVR_T1TEST_SEND_DATA_BUZZER +{ + BYTE byHearSound; //Ƿ 0-δ1- + BYTE byRes[31]; // +}NET_DVR_T1TEST_SEND_DATA_BUZZER,*LPNET_DVR_T1TEST_SEND_DATA_BUZZER; + + +typedef union NET_DVR_T1TEST_DATA_UNION +{ + BYTE byUnionLen[32]; + NET_DVR_T1TEST_SEND_DATA_BUZZER struBuzzer; // + NET_DVR_TIME_V30 struCurTime; //ǰPCʱ +}NET_DVR_T1TEST_DATA_UNION,*LPNET_DVR_T1TEST_DATA_UNION; + + +typedef struct tagNET_DVR_T1TEST_SEND_DATA +{ + DWORD dwSize; //ṹС + BYTE byDataType; // 0-1-pcʱ + BYTE byRes1[3]; + NET_DVR_T1TEST_DATA_UNION uSendData; //͵ + BYTE byRes[64]; +}NET_DVR_T1TEST_SEND_DATA,*LPNET_DVR_T1TEST_SEND_DATA; + +typedef struct tagNET_DVR_PIC_MODEL_CFG //ͼģ +{ + DWORD dwSize; //ṹС + BYTE byEnable; //Ƿ + BYTE byRes[63]; +}NET_DVR_PIC_MODEL_CFG, *LPNET_DVR_PIC_MODEL_CFG; + +typedef struct tagNET_DVR_MOUSE_EVENT_PARAM //Ϣ +{ + DWORD dwSize; //ṹС + BYTE byMouseEvent; //¼ͣ 0-1-˫2-Ҽ3-Ϲ4-¹ + BYTE byRes1[3]; // + NET_VCA_POINT struPoint; //λ꣬һ + BYTE byRes[64]; // +}NET_DVR_MOUSE_EVENT_PARAM, *LPNET_DVR_MOUSE_EVENT_PARAM; + +typedef struct tagNET_DVR_AUTO_LIMIT_WAVE_CFG +{ + BYTE byFBCEnable; //FBC 0-1- + BYTE byMode; //ģʽ, 0-, 1-ͨ,2- + BYTE byFilterQValue; //Ӧ˲QֵλOct, 0-1/40,1-1/10, ĬֵΪ1/40 Oct + BYTE byStaticFilterNum; //̬˲ȡֵΧ0-12 + BYTE byRes[16]; +}NET_DVR_AUTO_LIMIT_WAVE_CFG,*LPNET_DVR_AUTO_LIMIT_WAVE_CFG; + +typedef struct _NET_DVR_DSP_PARAMETER_CFG +{ + BYTE byFBCEnable; //FBC 0-1- + BYTE byVolume; // ȡֵΧ0~255 + BYTE byRes[22]; +}NET_DVR_DSP_PARAMETER_CFG, *LPNET_DVR_DSP_PARAMETER_CFG; + + +typedef struct tagNET_DVR_MIX_AUDIOIN_CFG +{ + DWORD dwSize; //ṹС + DWORD dwHighPassFilter; //ͨ˲ ȡֵΧ 0-127, Ϊ׼ + DWORD dwNoiseMargin; //ޣȡֵΧ 0-127, Ϊ׼ + NET_DVR_AUTO_LIMIT_WAVE_CFG struLimitWave; //Զ޲ƲƵԴΪmacInʱЧ + NET_DVR_DSP_PARAMETER_CFG struDSPParameter; //źŴоƬ + BYTE byRes[40]; +}NET_DVR_MIX_AUDIOIN_CFG,*LPNET_DVR_MIX_AUDIOIN_CFG; + +typedef struct tagNET_DVR_MIX_AUDIOOUT_CFG +{ + DWORD dwSize; //ṹС + BYTE byModulatorEnbale; //Ƿλ + BYTE byPostFilter; //Post Filterأ0-رգ1-ĬϿ + BYTE byLimitPressure; //ѹ޿ 0-رգ1-ĬϿ + BYTE byRes1; // + WORD wModulatorValue; //λ ȡֵΧ 0-127, Ϊ׼Ĭ10 + WORD wTriggerTime; //ѹ޴ʱ䣬ȡֵΧ 0-127, Ϊ׼ + WORD wFreeTime; //ѹͷʱ䣬ȡֵΧ 0-127, Ϊ׼ + BYTE byCompressThreshold; //ѹ 0-1X,1-2X,2-4X,3-8X Xʾ2Xʾ2 + BYTE byCompressMode; //ѹʽ0-Ӳѹ1-ѹĬΪӲѹ + BYTE byCompressRate; //ѹ + BYTE byRecoveryGain; //ظ 0-1X,1-2X,2-4X,3-8X + BYTE byOutputGain; // 0 ~100ֵ + BYTE byOutputMute; //0-رգ1- + int iOutputGainEx; //չֵΪŴ󣬸ֵΪС + BYTE bySoundQualityHanding; //ʴ0-رգ1- + BYTE byRes[55]; +}NET_DVR_MIX_AUDIOOUT_CFG,*LPNET_DVR_MIX_AUDIOOUT_CFG; + +#define MAX_AUDIOOUT_PRO_TYPE 8 //Ƶʽ +typedef struct tagNET_DVR_VOLUME_CFG +{ + DWORD dwSize; //ṹС + WORD wVolume[MAX_AUDIOOUT_PRO_TYPE]; //С ȡֵΧ 0-127, Ϊ׼ + BYTE byPhantomPowerSupply; //ǷʹûԴ(ƵͨΪMICʱЧ)0-壬1-磬2- + BYTE byEnableAEC; //ǷȫֵĻ,0-ã1- + WORD wTalkVolume; //ֶ֧Խ豸ԽʱС + BYTE byEnableFBC[MAX_AUDIOOUT_PRO_TYPE]; //ǷFBC(Х),0-ã1- + WORD wVolumeEx[MAX_AUDIOOUT_PRO_TYPE]; //Сչ ȡֵΧ 0-127, Ϊ׼ + BYTE byRes[4]; // +}NET_DVR_VOLUME_CFG,*LPNET_DVR_VOLUME_CFG; + +typedef struct tagNET_DVR_VIDEOOUT_RESOLUTION_CFG //Ƶڷֱ +{ + DWORD dwSize; //ṹС + BYTE byResolution; //ֱ 0-1024x768, 1-1280x720, 2-1280x1024, 3-1680x1050, 4-1920x1080, 5-3840*2160 + BYTE byRes[63]; +}NET_DVR_VIDEOOUT_RESOLUTION_CFG, *LPNET_DVR_VIDEOOUT_RESOLUTION_CFG; + +typedef struct tagNET_DVR_ADDR_DOMAIN_INFO +{ + BYTE szDomainAddr[MAX_DOMAIN_NAME]; /* IPַ,Ҫ豸,ʽΪĸ'.'Ϊ,ΪIPַ */ + WORD wPort; + BYTE byRes[2]; +}NET_DVR_ADDR_DOMAIN_INFO,*LPNET_DVR_ADDR_DOMAIN_INFO; + +#define MAX_CENTERNUM_V40 6 //ĵַ + +// +typedef struct tagNET_DVR_ALARMCENTER_NETCFG +{ + DWORD dwSize; + BYTE byAuxiliaryAlarmAddr[MAX_DOMAIN_NAME]; /* IPַ,Ҫ豸,ʽΪĸС.Ϊ,ΪIPַ */ + WORD wAuxiliaryAlarmPort; /* ˿ں */ + NET_DVR_ADDR_DOMAIN_INFO struHostAddr[MAX_CENTERNUM_V40]; //ĵַϢ + BYTE byRes[172]; +}NET_DVR_ALARMCENTER_NETCFG, *LPNET_DVR_ALARMCENTER_NETCFG; + +//ṹ +typedef struct tagNET_DVR_ALARM_LINKAGE_PARAM +{ + DWORD dwSize; + WORD wChanRec; //¼NVRͨλʾλʾͨ1λʾͨ16λֵ0-¼1-¼ + BYTE byRes1[2]; + WORD wRecTime[MAX_LINKAGE_CHAN_NUM]; //¼ʱ䣬ֽڱʾbyRecTime[0]ʾͨ1¼ʱ䣬byRecTime[15]ʾͨ16¼ʱ + WORD wChanPic; //ץͼNVRͨλʾλʾͨ1λʾͨ16λֵ0-ץͼ1-ץͼ + BYTE byRes2[2]; + BYTE byPicNum[MAX_LINKAGE_CHAN_NUM]; //ץͼĸֽڱʾbyPicNum[0]ʾͨ1ץͼbyPicNum[15]ʾͨ16ץͼ + BYTE byTriggerEnabled[ALARMHOST_ALARMOUT_NUM];//0-1- + BYTE bySensorJointAlarmOut[ALARMHOST_ALARMOUT_NUM];//ңֵֵΪbyTriggerEnabled䡣±ʾţԪصֵλʾͣͼ""Ĺϵֵ壺1bit0-1bit1-2bit2-3bit3-4bit4- + BYTE byRes3[128]; // +}NET_DVR_ALARM_LINKAGE_PARAM, *LPNET_DVR_ALARM_LINKAGE_PARAM; + + +//״Աϴ ץĻ4.0 +typedef struct tagNET_DVR_ALARM_RADARINFO +{ + DWORD dwSize; + DWORD dwRadarTriggerTimeSecond;//״ﴥʱ䣬 + DWORD dwRadarTriggerTimeMSecond;//״ﴥʱ䣬 + DWORD dwVedioTriggerTimeSecond;//Ƶʱ䣬 + DWORD dwVedioTriggerTimeMSecond;//Ƶʱ䣬 + DWORD dwVedioRadarDiffTimeMSecond;//״Ƶʱ + DWORD dwRadarSpeed;//״ٶ + BYTE byRes[16]; +} NET_DVR_ALARM_RADARINFO, *LPNET_DVR_ALARM_RADARINFO; + +#define MAX_FINGER_PRINT_LEN 768 //ָƳ +typedef struct tagNET_DVR_FINGER_PRINT_CFG +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + DWORD dwFingerPrintLen; //ָݳ + BYTE byEnableCardReader[MAX_CARD_READER_NUM_512]; //Ҫ·ָƵĶʾ0-·ö1-·ö + BYTE byFingerPrintID; //ָţЧֵΧΪ1-10 + BYTE byFingerType; //ָ 0-ָͨƣ1-вָ + BYTE byRes1[30]; + BYTE byFingerData[MAX_FINGER_PRINT_LEN]; //ָ + BYTE byRes[64]; +}NET_DVR_FINGER_PRINT_CFG,*LPNET_DVR_FINGER_PRINT_CFG; + +typedef struct tagNET_DVR_FINGER_PRINT_STATUS +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + BYTE byCardReaderRecvStatus[MAX_CARD_READER_NUM_512]; //ָƶ״ֽ̬ڱʾ0-ʧܣ1-ɹ2-ָģ鲻ߣ3-Իָ4-ڴ5-Ѵڸָƣ6-ѴڸָID7-ǷָID8-ָģ + BYTE byFingerPrintID; //ָţЧֵΧΪ1-10 + BYTE byFingerType; //ָ 0-ָͨƣ1-вָ + BYTE byTotalStatus; //·ܵ״̬0-ǰָδж1-ж(ָŽеĶ·ˣܳɹ) + BYTE byRes1; + BYTE byErrorMsg[ERROR_MSG_LEN]; //·ϢbyCardReaderRecvStatusΪ5ʱʾѴָƶӦĿ + DWORD dwCardReaderNo; //0ʾϢbyErrMsgЧֵbyErrMsgӦĶţʲô鿴byCardReaderRecvStatusӦŵֵ0ʱʾ޴Ϣ + BYTE byRes[24]; +}NET_DVR_FINGER_PRINT_STATUS,*LPNET_DVR_FINGER_PRINT_STATUS; + + +typedef struct tagNET_DVR_FINGER_PRINT_INFO_COND +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + BYTE byEnableCardReader[MAX_CARD_READER_NUM_512]; //ָƵĶϢʾ + DWORD dwFingerPrintNum; //ûȡȡʱΪ0xffffffffʾȡпϢ + BYTE byFingerPrintID; //ָţЧֵΧΪ-10 0xffʾÿָ + BYTE byCallbackMode; //豸صʽ0-豸ж˷Χ1-ʱ˲Ҳ + BYTE byRes1[26]; // +}NET_DVR_FINGER_PRINT_INFO_COND,*LPNET_DVR_FINGER_PRINT_INFO_COND; + +typedef struct tagNET_DVR_FINGER_PRINT_CFG_V50 +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + DWORD dwFingerPrintLen; //ָݳ + BYTE byEnableCardReader[MAX_CARD_READER_NUM_512]; //Ҫ·ָƵĶʾӵλλʾ0-·ö1-·ö + BYTE byFingerPrintID; //ָţЧֵΧΪ1-10 + BYTE byFingerType; //ָ 0-ָͨƣ1-вָƣ2-Ѳָƣ3-ָƣ4-ָ + BYTE byRes1[30]; + BYTE byFingerData[MAX_FINGER_PRINT_LEN]; //ָ + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID + BYTE byLeaderFP[MAX_DOOR_NUM_256]; //Ƿ״֤ܣֽڱʾ0-״֤ܣ1-״֤ + BYTE byRes[128]; +}NET_DVR_FINGER_PRINT_CFG_V50, *LPNET_DVR_FINGER_PRINT_CFG_V50; + +typedef struct tagNET_DVR_FINGER_PRINT_STATUS_V50 +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + BYTE byCardReaderRecvStatus[MAX_CARD_READER_NUM_512]; //ָƶ״ֽ̬ڱʾ0-ʧܣ1-ɹ2-ָģ鲻ߣ3-Իָ4-ڴ5-Ѵڸָƣ6-ѴڸָID7-ǷָID8-ָģã10-ָƶ汾ͣ޷ֹ֧ţ + BYTE byFingerPrintID; //ָţЧֵΧΪ1-10 + BYTE byFingerType; //ָ 0-ָͨƣ1-вָƣ2-Ѳָƣ3-ָƣ4-ָ + BYTE byTotalStatus; //·ܵ״̬0-ǰָδж1-ж(ָŽеĶ·ˣܳɹ) + BYTE byRecvStatus; //״̬0-ɹ1-ָŴ2-ָʹ3-Ŵ󣨿Ź񲻷豸Ҫ󣩣4-ָδŻ򿨺ţŻ򿨺ֶΪգ5-Ųڣ6-ָݳΪ07-Ŵ8-Ŵ + BYTE byErrorMsg[ERROR_MSG_LEN]; //·ϢbyCardReaderRecvStatusΪ5ʱʾѴָƶӦĿ + DWORD dwCardReaderNo; //byCardReaderRecvStatusΪ5ʱʾѴָƶӦָƶţ·󷵻ء0ʱʾ޴Ϣ + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID + BYTE byErrorEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //·ϢbyCardReaderRecvStatusΪ5ʱʾѴָƶӦĹţԱID + BYTE byRes[128]; +}NET_DVR_FINGER_PRINT_STATUS_V50, *LPNET_DVR_FINGER_PRINT_STATUS_V50; + +typedef struct tagNET_DVR_FINGER_PRINT_INFO_COND_V50 +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿţֶλȡʱЧʱЧ + BYTE byEnableCardReader[MAX_CARD_READER_NUM_512]; //ָƵĶǷЧ0-Ч1-Ч + DWORD dwFingerPrintNum; //ûָȡʱΪ0xffffffffʾȡָϢ + BYTE byFingerPrintID; //ָţЧֵΧΪ1-10 0xffʾÿָ + BYTE byCallbackMode; //豸صʽ0-豸ж˷أ1-ʱ˲Ҳ + BYTE byRes2[2]; // + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID + BYTE byRes1[128]; // +}NET_DVR_FINGER_PRINT_INFO_COND_V50, *LPNET_DVR_FINGER_PRINT_INFO_COND_V50; + +typedef struct tagNET_DVR_FINGER_PRINT_BYCARD +{ + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + BYTE byEnableCardReader[MAX_CARD_READER_NUM_512]; //ָƵĶϢʾ + BYTE byFingerPrintID[MAX_FINGER_PRINT_NUM/*10*/]; //ҪȡָϢ±ֵ꣬ʾ0-ɾ1-ɾָ + BYTE byRes1[34]; // +}NET_DVR_FINGER_PRINT_BYCARD,*LPNET_DVR_FINGER_PRINT_BYCARD; + +typedef struct tagNET_DVR_FINGER_PRINT_BYREADER +{ + DWORD dwCardReaderNo; //ֵʾָƶ + BYTE byClearAllCard; //ǷɾпָϢ0-ɾָϢ1-ɾпָϢ + BYTE byRes1[3]; // + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + BYTE byRes[548]; // +}NET_DVR_FINGER_PRINT_BYREADER,*LPNET_DVR_FINGER_PRINT_BYREADER; + +typedef union tagNET_DVR_DEL_FINGER_PRINT_MODE +{ + BYTE uLen[588]; //峤 + NET_DVR_FINGER_PRINT_BYCARD struByCard; //ŵķʽɾ + NET_DVR_FINGER_PRINT_BYREADER struByReader; //ķʽɾ +}NET_DVR_DEL_FINGER_PRINT_MODE,*LPNET_DVR_DEL_FINGER_PRINT_MODE; + +typedef struct tagNET_DVR_FINGER_PRINT_INFO_CTRL +{ + DWORD dwSize; + BYTE byMode; //ɾʽ0-ŷʽɾ1-ɾ + BYTE byRes1[3]; // + NET_DVR_DEL_FINGER_PRINT_MODE struProcessMode; //ʽ + BYTE byRes[64]; // +}NET_DVR_FINGER_PRINT_INFO_CTRL,*LPNET_DVR_FINGER_PRINT_INFO_CTRL; + +typedef struct tagNET_DVR_FINGER_PRINT_BYCARD_V50 +{ + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + BYTE byEnableCardReader[MAX_CARD_READER_NUM_512]; //ָƵĶϢλʾ + BYTE byFingerPrintID[MAX_FINGER_PRINT_NUM/*10*/]; //Ҫɾָţ±ֵ꣬ʾ0-ɾ1-ɾָ + BYTE byRes1[2]; + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID +}NET_DVR_FINGER_PRINT_BYCARD_V50, *LPNET_DVR_FINGER_PRINT_BYCARD_V50; + +typedef struct tagNET_DVR_FINGER_PRINT_BYREADER_V50 +{ + DWORD dwCardReaderNo; //ֵʾָƶ + BYTE byClearAllCard; //ǷɾпָϢ0-ţԱIDɾָϢ1-ɾпԱIDָϢ + BYTE byRes1[3]; // + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID + BYTE byRes[516]; // +}NET_DVR_FINGER_PRINT_BYREADER_V50, *LPNET_DVR_FINGER_PRINT_BYREADER_V50; + +typedef union tagNET_DVR_DEL_FINGER_PRINT_MODE_V50 +{ + BYTE uLen[588]; //峤 + NET_DVR_FINGER_PRINT_BYCARD_V50 struByCard; //ţԱIDķʽɾ + NET_DVR_FINGER_PRINT_BYREADER_V50 struByReader; //ķʽɾ +}NET_DVR_DEL_FINGER_PRINT_MODE_V50, *LPNET_DVR_DEL_FINGER_PRINT_MODE_V50; + +typedef struct tagNET_DVR_FINGER_PRINT_INFO_CTRL_V50 +{ + DWORD dwSize; + BYTE byMode; //ɾʽ0-ţԱIDʽɾ1-ɾ + BYTE byRes1[3]; // + NET_DVR_DEL_FINGER_PRINT_MODE_V50 struProcessMode; //ʽ + BYTE byRes[64]; // +}NET_DVR_FINGER_PRINT_INFO_CTRL_V50, *LPNET_DVR_FINGER_PRINT_INFO_CTRL_V50; + +typedef struct tagNET_DVR_FINGER_PRINT_INFO_STATUS_V50 +{ + DWORD dwSize; + DWORD dwCardReaderNo; //ֵʾָƶ + BYTE byStatus; //״̬0-Ч1-У2-ɾʧܣ3-ɹ + BYTE byRes[63]; // +}NET_DVR_FINGER_PRINT_INFO_STATUS_V50, *LPNET_DVR_FINGER_PRINT_INFO_STATUS_V50; + +typedef enum _ACS_DEV_SUBEVENT_ENUM_ +{ + EVENT_ACS_HOST_ANTI_DISMANTLE = 0, //𱨾 + EVENT_ACS_OFFLINE_ECENT_NEARLY_FULL, //¼90% + EVENT_ACS_NET_BROKEN, //Ͽ + EVENT_ACS_NET_RESUME , //ָ + EVENT_ACS_LOW_BATTERY, //صѹ + EVENT_ACS_BATTERY_RESUME, //صѹָ + EVENT_ACS_AC_OFF, //ϵ + EVENT_ACS_AC_RESUME, //ָ + EVENT_ACS_SD_CARD_FULL, //SD洢 + EVENT_ACS_LINKAGE_CAPTURE_PIC, //ץ¼ + EVENT_ACS_IMAGE_QUALITY_LOW, //ͼʵ + EVENT_ACS_FINGER_PRINT_QUALITY_LOW, //ָͼʵ + EVENT_ACS_BATTERY_ELECTRIC_LOW, //صѹ(豸ʹ) + EVENT_ACS_BATTERY_ELECTRIC_RESUME, //صѹָ(豸ʹ) + EVENT_ACS_FIRE_IMPORT_SHORT_CIRCUIT, //· + EVENT_ACS_FIRE_IMPORT_BROKEN_CIRCUIT, //· + EVENT_ACS_FIRE_IMPORT_RESUME, //ָ + EVENT_ACS_MASTER_RS485_LOOPNODE_BROKEN, //RS485·ڵϿ + EVENT_ACS_MASTER_RS485_LOOPNODE_RESUME, //RS485·ڵָ + EVENT_ACS_LOCAL_CONTROL_OFFLINE, //͵ؿ + EVENT_ACS_LOCAL_CONTROL_RESUME, //͵ؿ߻ָ + EVENT_ACS_LOCAL_DOWNSIDE_RS485_LOOPNODE_BROKEN, //͵RS485·Ͽ + EVENT_ACS_LOCAL_DOWNSIDE_RS485_LOOPNODE_RESUME, //͵RS485·ָ + EVENT_ACS_DISTRACT_CONTROLLER_ONLINE, //ֿ + EVENT_ACS_DISTRACT_CONTROLLER_OFFLINE, //ֿ + EVENT_ACS_FIRE_BUTTON_TRIGGER, //ť + EVENT_ACS_FIRE_BUTTON_RESUME, //ťָ + EVENT_ACS_MAINTENANCE_BUTTON_TRIGGER, //άť + EVENT_ACS_MAINTENANCE_BUTTON_RESUME, //άťָ + EVENT_ACS_EMERGENCY_BUTTON_TRIGGER, //ť + EVENT_ACS_EMERGENCY_BUTTON_RESUME, //ťָ + EVENT_ACS_RES, + EVENT_ACS_SUBMARINEBACK_COMM_BREAK, //뷴DZطͨŶϿ + EVENT_ACS_SUBMARINEBACK_COMM_RESUME, //뷴DZطͨŻָ + EVENT_ACS_REMOTE_ACTUAL_GUARD, //Զʵʱ + EVENT_ACS_REMOTE_ACTUAL_UNGUARD, //Զʵʱ + EVENT_ACS_MOTOR_SENSOR_EXCEPTION, //򴫸쳣 + EVENT_ACS_CAN_BUS_EXCEPTION, //CAN쳣 + EVENT_ACS_CAN_BUS_RESUME, //CAN߻ָ + EVENT_ACS_GATE_TEMPERATURE_OVERRUN, //բǻ¶ȳ + EVENT_ACS_IR_EMITTER_EXCEPTION, //쳣 + EVENT_ACS_IR_EMITTER_RESUME, //ָ + EVENT_ACS_LAMP_BOARD_COMM_EXCEPTION, //ưͨ쳣 + EVENT_ACS_LAMP_BOARD_COMM_RESUME, //ưͨŻָ + EVENT_ACS_IR_ADAPTOR_BOARD_COMM_EXCEPTION, //תӰͨ쳣 + EVENT_ACS_IR_ADAPTOR_BOARD_COMM_RESUME, //תӰͨŻָ + EVENT_ACS_CHANNEL_CONTROLLER_DESMANTLE_ALARM, //ͨ𱨾 + EVENT_ACS_CHANNEL_CONTROLLER_DESMANTLE_RESUME, //ͨ𱨾ָ + EVENT_ACS_CHANNEL_CONTROLLER_FIRE_IMPORT_ALARM, //ͨ뱨 + EVENT_ACS_CHANNEL_CONTROLLER_FIRE_IMPORT_RESUME, //ͨ뱨ָ + EVENT_ACS_STAY_EVENT, //¼ + EVENT_ACS_LEGAL_EVENT_NEARLY_FULL, //ߺϷ¼90% + EVENT_ACS_FIRE_IMPORT_ALARM = 52, //뱨 + EVENT_ACS_NOMASK_ALARM, //δֱ + EVENT_ACS_FIREMATRIX_EVENT, //¼ϴ + EVENT_ACS_HEALTH_INFO_ABNORMAL_LOCK, //Ϣ쳣 + EVENT_ACS_HEALTH_INFO_ABNORMAL_UNLOCK, //Ϣ쳣 + EVENT_ACS_IPC_EVENT //IPC¼ϴ +}ACS_DEV_SUBEVENT_ENUM; + +typedef enum _ACS_ALARM_SUBEVENT_ENUM_ +{ + EVENT_ACS_ALARMIN_SHORT_CIRCUIT = 0, //· + EVENT_ACS_ALARMIN_BROKEN_CIRCUIT, //· + EVENT_ACS_ALARMIN_EXCEPTION, //쳣 + EVENT_ACS_ALARMIN_RESUME, //ָ + EVENT_ACS_CASE_SENSOR_ALARM, //¼뱨 + EVENT_ACS_CASE_SENSOR_RESUME //¼ָ +}ACS_ALARM_SUBEVENT_ENUM; + +typedef enum _ACS_DOOR_SUBEVENT_ENUM_ +{ + EVENT_ACS_LEADER_CARD_OPEN_BEGIN = 0, //׿ſʼ + EVENT_ACS_LEADER_CARD_OPEN_END, //׿Ž + EVENT_ACS_ALWAYS_OPEN_BEGIN , //״̬ʼ + EVENT_ACS_ALWAYS_OPEN_END, //״̬ + EVENT_ACS_ALWAYS_CLOSE_BEGIN, //״̬ʼ + EVENT_ACS_ALWAYS_CLOSE_END, //״̬ + EVENT_ACS_LOCK_OPEN, // + EVENT_ACS_LOCK_CLOSE, //ر + EVENT_ACS_DOOR_BUTTON_PRESS, //Űť + EVENT_ACS_DOOR_BUTTON_RELEASE, //Űťſ + EVENT_ACS_DOOR_OPEN_NORMAL, //ţŴţ + EVENT_ACS_DOOR_CLOSE_NORMAL , //ţŴţ + EVENT_ACS_DOOR_OPEN_ABNORMAL, //쳣򿪣Ŵţ + EVENT_ACS_DOOR_OPEN_TIMEOUT, //Ŵ򿪳ʱŴţ + EVENT_ACS_REMOTE_OPEN_DOOR, //Զ̿ + EVENT_ACS_REMOTE_CLOSE_DOOR, //Զ̹ + EVENT_ACS_REMOTE_ALWAYS_OPEN, //Զ̳ + EVENT_ACS_REMOTE_ALWAYS_CLOSE, //Զ̳ + EVENT_ACS_NOT_BELONG_MULTI_GROUP, //ڶ֤Ⱥ + EVENT_ACS_INVALID_MULTI_VERIFY_PERIOD, //ڶ֤ʱ + EVENT_ACS_MULTI_VERIFY_SUPER_RIGHT_FAIL, //֤ģʽ֤ʧ + EVENT_ACS_MULTI_VERIFY_REMOTE_RIGHT_FAIL, //֤ģʽԶ֤ʧ + EVENT_ACS_MULTI_VERIFY_SUCCESS, //֤ɹ + EVENT_ACS_MULTI_VERIFY_NEED_REMOTE_OPEN, //ض֤ҪԶ̿ + EVENT_ACS_MULTI_VERIFY_SUPERPASSWD_VERIFY_SUCCESS, //֤֤ɹ¼ + EVENT_ACS_MULTI_VERIFY_REPEAT_VERIFY_FAIL, //֤ظ֤ʧ + EVENT_ACS_MULTI_VERIFY_TIMEOUT, //֤ʱʧ + EVENT_ACS_REMOTE_CAPTURE_PIC, //Զץ + EVENT_ACS_DOORBELL_RINGING, // + EVENT_ACS_SECURITY_MODULE_DESMANTLE_ALARM, //ſذȫģ𱨾 + EVENT_ACS_CALL_CENTER, //¼ + EVENT_ACS_FIRSTCARD_AUTHORIZE_BEGIN, //׿Ȩʼ + EVENT_ACS_FIRSTCARD_AUTHORIZE_END, //׿Ȩ + EVENT_ACS_DOORLOCK_INPUT_SHORT_CIRCUIT, //· + EVENT_ACS_DOORLOCK_INPUT_BROKEN_CIRCUIT, //· + EVENT_ACS_DOORLOCK_INPUT_EXCEPTION, //쳣 + EVENT_ACS_DOORCONTACT_INPUT_SHORT_CIRCUIT, //Ŵ· + EVENT_ACS_DOORCONTACT_INPUT_BROKEN_CIRCUIT, //Ŵ· + EVENT_ACS_DOORCONTACT_INPUT_EXCEPTION, //Ŵ쳣 + EVENT_ACS_OPENBUTTON_INPUT_SHORT_CIRCUIT, //Űť· + EVENT_ACS_OPENBUTTON_INPUT_BROKEN_CIRCUIT, //Űť· + EVENT_ACS_OPENBUTTON_INPUT_EXCEPTION, //Űť쳣 + EVENT_ACS_DOORLOCK_OPEN_EXCEPTION, //쳣 + EVENT_ACS_DOORLOCK_OPEN_TIMEOUT, //򿪳ʱ + EVENT_ACS_FIRSTCARD_OPEN_WITHOUT_AUTHORIZE, //׿δȨʧ + EVENT_ACS_CALL_LADDER_RELAY_BREAK, //ݼ̵Ͽ + EVENT_ACS_CALL_LADDER_RELAY_CLOSE, //ݼ̵պ + EVENT_ACS_AUTO_KEY_RELAY_BREAK, //Զ̵Ͽ + EVENT_ACS_AUTO_KEY_RELAY_CLOSE, //Զ̵պ + EVENT_ACS_KEY_CONTROL_RELAY_BREAK, //ݿؼ̵Ͽ + EVENT_ACS_KEY_CONTROL_RELAY_CLOSE, //ݿؼ̵պ + EVENT_ACS_REMOTE_VISITOR_CALL_LADDER, //ÿͺ + EVENT_ACS_REMOTE_HOUSEHOLD_CALL_LADDER, //ס + EVENT_ACS_LEGAL_MESSAGE, //Ϸ + EVENT_ACS_ILLEGAL_MESSAGE, //Ƿ + EVENT_ACS_TRAILING, //βͨ + EVENT_ACS_REVERSE_ACCESS, // + EVENT_ACS_FORCE_ACCESS, //ײ + EVENT_ACS_CLIMBING_OVER_GATE, //Խ + EVENT_ACS_PASSING_TIMEOUT, //ͨгʱ + EVENT_ACS_INTRUSION_ALARM, //󴳱 + EVENT_ACS_FREE_GATE_PASS_NOT_AUTH, //բͨʱδ֤ͨ + EVENT_ACS_DROP_ARM_BLOCK, //ڱ۱赲 + EVENT_ACS_DROP_ARM_BLOCK_RESUME, //ڱ赲 + EVENT_ACS_REMOTE_CONTROL_CLOSE_DOOR, //ң + EVENT_ACS_REMOTE_CONTROL_OPEN_DOOR, //ң + EVENT_ACS_REMOTE_CONTROL_ALWAYS_OPEN_DOOR //ң +}ACS_DOOR_SUBEVENT_ENUM; + +typedef enum _ACS_CARD_READER_SUBEVENT_ENUM_ +{ + EVENT_ACS_STRESS_ALARM = 0, //вȱ + EVENT_ACS_CARD_READER_DESMANTLE_ALARM, //𱨾 + EVENT_ACS_LEGAL_CARD_PASS, //Ϸ֤ͨ + EVENT_ACS_CARD_AND_PSW_PASS, //ˢ֤ͨ + EVENT_ACS_CARD_AND_PSW_FAIL, //ˢ֤ʧ + EVENT_ACS_CARD_AND_PSW_TIMEOUT, //ˢ֤ʱ + EVENT_ACS_CARD_MAX_AUTHENTICATE_FAIL, //֤ʧܳ + EVENT_ACS_CARD_NO_RIGHT, //δȨ + EVENT_ACS_CARD_INVALID_PERIOD, //ǰʱЧ + EVENT_ACS_CARD_OUT_OF_DATE, //Ź + EVENT_ACS_INVALID_CARD, //޴˿ + EVENT_ACS_ANTI_SNEAK_FAIL, //DZ֤ʧ + EVENT_ACS_INTERLOCK_DOOR_NOT_CLOSE, //δر + EVENT_ACS_FINGERPRINT_COMPARE_PASS, //ָƱȶͨ + EVENT_ACS_FINGERPRINT_COMPARE_FAIL, //ָƱȶʧ + EVENT_ACS_CARD_FINGERPRINT_VERIFY_PASS, //ˢָ֤ͨ + EVENT_ACS_CARD_FINGERPRINT_VERIFY_FAIL, //ˢָ֤ʧ + EVENT_ACS_CARD_FINGERPRINT_VERIFY_TIMEOUT, //ˢָ֤ʱ + EVENT_ACS_CARD_FINGERPRINT_PASSWD_VERIFY_PASS, //ˢָƼ֤ͨ + EVENT_ACS_CARD_FINGERPRINT_PASSWD_VERIFY_FAIL, //ˢָƼ֤ʧ + EVENT_ACS_CARD_FINGERPRINT_PASSWD_VERIFY_TIMEOUT, //ˢָƼ֤ʱ + EVENT_ACS_FINGERPRINT_PASSWD_VERIFY_PASS, //ָƼ֤ͨ + EVENT_ACS_FINGERPRINT_PASSWD_VERIFY_FAIL, //ָƼ֤ʧ + EVENT_ACS_FINGERPRINT_PASSWD_VERIFY_TIMEOUT, //ָƼ֤ʱ + EVENT_ACS_FINGERPRINT_INEXISTENCE, //ָƲ + EVENT_ACS_FACE_VERIFY_PASS, //֤ͨ + EVENT_ACS_FACE_VERIFY_FAIL, //֤ʧ + EVENT_ACS_FACE_AND_FP_VERIFY_PASS, //ָ֤ͨ + EVENT_ACS_FACE_AND_FP_VERIFY_FAIL, //ָ֤ʧ + EVENT_ACS_FACE_AND_FP_VERIFY_TIMEOUT, //ָ֤ʱ + EVENT_ACS_FACE_AND_PW_VERIFY_PASS, //֤ͨ + EVENT_ACS_FACE_AND_PW_VERIFY_FAIL, //֤ʧ + EVENT_ACS_FACE_AND_PW_VERIFY_TIMEOUT, //֤ʱ + EVENT_ACS_FACE_AND_CARD_VERIFY_PASS, //ˢ֤ͨ + EVENT_ACS_FACE_AND_CARD_VERIFY_FAIL, //ˢ֤ʧ + EVENT_ACS_FACE_AND_CARD_VERIFY_TIMEOUT, //ˢ֤ʱ + EVENT_ACS_FACE_AND_PW_AND_FP_VERIFY_PASS, //ָ֤ͨ + EVENT_ACS_FACE_AND_PW_AND_FP_VERIFY_FAIL, //ָ֤ʧ + EVENT_ACS_FACE_AND_PW_AND_FP_VERIFY_TIMEOUT, //ָ֤ʱ + EVENT_ACS_FACE_AND_CARD_AND_FP_VERIFY_PASS, //ˢָ֤ͨ + EVENT_ACS_FACE_AND_CARD_AND_FP_VERIFY_FAIL, //ˢָ֤ʧ + EVENT_ACS_FACE_AND_CARD_AND_FP_VERIFY_TIMEOUT, //ˢָ֤ʱ + EVENT_ACS_EMPLOYEENO_AND_FP_VERIFY_PASS, //żָ֤ͨ + EVENT_ACS_EMPLOYEENO_AND_FP_VERIFY_FAIL, //żָ֤ʧ + EVENT_ACS_EMPLOYEENO_AND_FP_VERIFY_TIMEOUT, //żָ֤ʱ + EVENT_ACS_EMPLOYEENO_AND_FP_AND_PW_VERIFY_PASS, //żָƼ֤ͨ + EVENT_ACS_EMPLOYEENO_AND_FP_AND_PW_VERIFY_FAIL, //żָƼ֤ʧ + EVENT_ACS_EMPLOYEENO_AND_FP_AND_PW_VERIFY_TIMEOUT, //żָƼ֤ʱ + EVENT_ACS_EMPLOYEENO_AND_FACE_VERIFY_PASS, //ż֤ͨ + EVENT_ACS_EMPLOYEENO_AND_FACE_VERIFY_FAIL, //ż֤ʧ + EVENT_ACS_EMPLOYEENO_AND_FACE_VERIFY_TIMEOUT, //ż֤ʱ + EVENT_ACS_FACE_RECOGNIZE_FAIL, //ʶʧ + EVENT_ACS_EMPLOYEENO_AND_PW_PASS, //ż֤ͨ + EVENT_ACS_EMPLOYEENO_AND_PW_FAIL, //ż֤ʧ + EVENT_ACS_EMPLOYEENO_AND_PW_TIMEOUT, //ż֤ʱ + EVENT_ACS_HUMAN_DETECT_FAIL, //˼ʧ + EVENT_ACS_PEOPLE_AND_ID_CARD_COMPARE_PASS, //֤ȶͨ + EVENT_ACS_PEOPLE_AND_ID_CARD_COMPARE_FAIL, //֤ȶʧ + EVENT_ACS_DOOR_OPEN_OR_DORMANT_FAIL, //״̬ջ״̬֤ʧ + EVENT_ACS_AUTH_PLAN_DORMANT_FAIL, //֤ƻģʽ֤ʧ + EVENT_ACS_CARD_ENCRYPT_VERIFY_FAIL, //Уʧ + EVENT_ACS_SUBMARINEBACK_REPLY_FAIL, //DZطӦʧ + EVENT_ACS_PASSWORD_MISMATCH, //벻ƥ + EVENT_ACS_EMPLOYEE_NO_NOT_EXIST, //Ų + EVENT_ACS_COMBINED_VERIFY_PASS, //֤ͨ + EVENT_ACS_COMBINED_VERIFY_TIMEOUT, //֤ʱ + EVENT_ACS_VERIFY_MODE_MISMATCH, //֤ʽƥ + EVENT_ACS_PSW_ERROR_OVER_TIMES, //֤ 67 + EVENT_ACS_PSW_VERIFY_PASS, //֤ͨ + EVENT_ACS_PSW_VERIFY_FAIL, //֤ʧ + EVENT_ACS_ORCODE_VERIFY_PASS, //ά֤ͨ + EVENT_ACS_ORCODE_VERIFY_FAIL, //ά֤ʧ + EVENT_ACS_HOUSEHOLDER_AUTHORIZE_PASS, //Ȩ֤ͨ + EVENT_ACS_BLUETOOTH_VERIFY_PASS, //֤ͨ + EVENT_ACS_BLUETOOTH_VERIFY_FAIL, //֤ʧ 74 + EVENT_ACS_INFORMAL_M1_CARD_VERIFY_FAIL, //M1֤ʧ + EVENT_ACS_CPU_CARD_ENCRYPT_VERIFY_FAIL, //CPUУʧ + EVENT_ACS_NFC_DISABLE_VERIFY_FAIL, //NFCܹر֤ʧ + EVENT_ACS_EM_CARD_RECOGNIZE_NOT_ENABLED, //EMʶδ + EVENT_ACS_M1_CARD_RECOGNIZE_NOT_ENABLED, //M1ʶδ + EVENT_ACS_CPU_CARD_RECOGNIZE_NOT_ENABLED, //CPUʶδ + EVENT_ACS_ID_CARD_RECOGNIZE_NOT_ENABLED, //֤ʶδ + EVENT_ACS_CARD_SET_SECRET_KEY_FAIL, //װԿʧ + EVENT_ACS_DESFIRE_CARD_ENCRYPT_VERIFY_FAIL, //DesfireУʧ + EVENT_ACS_DESFIRE_CARD_RECOGNIZE_NOT_ENABLED, //Desfireʶδ + EVENT_ACS_IRIS_VERIFY_PASS, //Ĥ֤ͨ + EVENT_ACS_IRIS_VERIFY_FAIL, //Ĥ֤ʧ + EVENT_ACS_IRIS_BIOASSAY_FAIL, //Ĥʧ + EVENT_ACS_FELICA_CARD_RECOGNIZE_NOT_ENABLED, //Felicaʶδ + EVENT_ACS_ORCODE_RECOGNIZE_PASS, //άʶɹά¼κ֤ + EVENT_ACS_VP_ANTI_SPOOFING_FAIL, //ƻʧ + EVENT_ACS_VP_VERIFY_FAIL, //֤ʧ + EVENT_ACS_ESD_OK, //ESDϸ + EVENT_ACS_ESD_NOT_OK_OPEN_DOOR, //ESDϸ񵫿 + EVENT_ACS_ESD_NOT_OK, //ESDϸ񲻿 + EVENT_ACS_ESD_OVERTIME //ESDⳬʱ +}ACS_CARD_READER_SUBEVENT_ENUM; + +typedef struct tagNET_DVR_EVENT_LINKAGE_INFO +{ + WORD wMainEventType; //¼ͣ0-豸¼1-¼2-¼3-¼ + WORD wSubEventType; //¼ + BYTE byRes[28]; +}NET_DVR_EVENT_LINKAGE_INFO,*LPNET_DVR_EVENT_LINKAGE_INFO; + +typedef union tagNET_DVR_EVETN_CARD_LINKAGE_UNION +{ + BYTE byCardNo[ACS_CARD_NO_LEN]; // + NET_DVR_EVENT_LINKAGE_INFO struEventLinkage; //¼ʱ + BYTE byMACAddr[MACADDR_LEN]; //MACַ + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID +}NET_DVR_EVETN_CARD_LINKAGE_UNION,*LPNET_DVR_EVETN_CARD_LINKAGE_UNION; + +typedef struct tagNET_DVR_EVENT_CARD_LINKAGE_CFG +{ + DWORD dwSize; //ṹС + BYTE byProMode; //ʽ0-¼1- + BYTE byRes1[3]; + DWORD dwEventSourceID; //¼ԴIDΪ豸¼ʱЧ ¼ʱΪű;Ϊ¼ʱΪID;Ϊ¼ʱΪID¼ID + NET_DVR_EVETN_CARD_LINKAGE_UNION uLinkageInfo; //ʽ + BYTE byAlarmout[MAX_ALARMHOST_ALARMOUT_NUM]; //ıţʾΪ0ʾΪ1ʾ + BYTE byRes2[32]; // + BYTE byOpenDoor[MAX_DOOR_NUM_256]; //ʾ,Ƿţ0-1- + BYTE byCloseDoor[MAX_DOOR_NUM_256]; //ʾ,Ƿţ0-1- + BYTE byNormalOpen[MAX_DOOR_NUM_256]; //ʾ,Ƿ0-1- + BYTE byNormalClose[MAX_DOOR_NUM_256]; //ʾ,Ƿأ0-1- + BYTE byMainDevBuzzer; // 0-1- + BYTE byCapturePic; //Ƿץģ0-ץģ1-ץ + BYTE byRecordVideo; //Ƿ¼0-¼1-¼ + BYTE byRes3[29]; // + BYTE byReaderBuzzer[MAX_CARD_READER_NUM_512]; //ʾ0-1- + BYTE byRes[128]; // +}NET_DVR_EVENT_CARD_LINKAGE_CFG,*LPNET_DVR_EVENT_CARD_LINKAGE_CFG; + +typedef struct tagNET_DVR_EVENT_LINKAGE_CARD_CFG_V50 +{ + DWORD dwSize; //ṹС + BYTE byProMode; //ʽ0-¼1-, 2-MACַ + BYTE byRes1[3]; + DWORD dwEventSourceID; //¼ԴIDΪ豸¼ʱЧ ¼ʱΪű;Ϊ¼ʱΪID;Ϊ¼ʱΪID¼ID0xffffffffʾȫ + NET_DVR_EVETN_CARD_LINKAGE_UNION uLinkageInfo; //ʽ + BYTE byAlarmout[MAX_ALARMHOST_ALARMOUT_NUM]; //ıţλʾΪ0ʾΪ1ʾ + BYTE byRes2[32]; // + BYTE byOpenDoor[MAX_DOOR_NUM_256]; //λʾ,Ƿţ0-1- + BYTE byCloseDoor[MAX_DOOR_NUM_256]; //λʾ,Ƿţ0-1- + BYTE byNormalOpen[MAX_DOOR_NUM_256]; //λʾ,Ƿ0-1- + BYTE byNormalClose[MAX_DOOR_NUM_256]; //λʾ,Ƿأ0-1- + BYTE byMainDevBuzzer; // 0-1- + BYTE byCapturePic; //Ƿץģ0-ץģ1-ץ + BYTE byRecordVideo; //Ƿ¼0-¼1-¼ + BYTE byRes3[29]; // + BYTE byReaderBuzzer[MAX_CARD_READER_NUM_512]; //λʾ0-1- + BYTE byAlarmOutClose[MAX_ALARMHOST_ALARMOUT_NUM]; //رգֽڱʾΪ0ʾΪ1ʾ + BYTE byAlarmInSetup[MAX_ALARMHOST_ALARMIN_NUM]; //ֽڱʾΪ0ʾΪ1ʾ + BYTE byAlarmInClose[MAX_ALARMHOST_ALARMIN_NUM]; //ֽڱʾΪ0ʾΪ1ʾ + BYTE byRes[500]; // +}NET_DVR_EVENT_CARD_LINKAGE_CFG_V50, *LPNET_DVR_EVENT_CARD_LINKAGE_CFG_V50; + +typedef struct tagNET_DVR_EVENT_LINKAGE_CARD_CFG_V51 +{ + DWORD dwSize; //ṹС + BYTE byProMode; //ʽ0-¼1-ţ2-MACַ3-ţԱID + BYTE byRes1[3]; + DWORD dwEventSourceID; //¼ԴIDΪ豸¼ʱЧ ¼ʱΪű;Ϊ¼ʱΪID;Ϊ¼ʱΪID¼ID0xffffffffʾȫ + NET_DVR_EVETN_CARD_LINKAGE_UNION uLinkageInfo; //ʽ + BYTE byAlarmout[MAX_ALARMHOST_ALARMOUT_NUM]; //ıţλʾΪ0ʾΪ1ʾ + BYTE byRes2[32]; // + BYTE byOpenDoor[MAX_DOOR_NUM_256]; //λʾ,Ƿţ0-1- + BYTE byCloseDoor[MAX_DOOR_NUM_256]; //λʾ,Ƿţ0-1- + BYTE byNormalOpen[MAX_DOOR_NUM_256]; //λʾ,Ƿ0-1- + BYTE byNormalClose[MAX_DOOR_NUM_256]; //λʾ,Ƿأ0-1- + BYTE byMainDevBuzzer; // 0-1- + BYTE byCapturePic; //Ƿץģ0-ץģ1-ץ + BYTE byRecordVideo; //Ƿ¼0-¼1-¼ + BYTE byMainDevStopBuzzer; //ֹͣ 0-1- + WORD wAudioDisplayID; //ID0-ĿǰΧ1-32 + BYTE byAudioDisplayMode; //ģʽ0-رգ1-βţ2-ѭ + BYTE byRes3[25]; // + BYTE byReaderBuzzer[MAX_CARD_READER_NUM_512]; //λʾ0-1- + BYTE byAlarmOutClose[MAX_ALARMHOST_ALARMOUT_NUM]; //رգֽڱʾΪ0ʾΪ1ʾ + BYTE byAlarmInSetup[MAX_ALARMHOST_ALARMIN_NUM]; //ֽڱʾΪ0ʾΪ1ʾ + BYTE byAlarmInClose[MAX_ALARMHOST_ALARMIN_NUM]; //ֽڱʾΪ0ʾΪ1ʾ + BYTE byReaderStopBuzzer[MAX_CARD_READER_NUM_512]; //ֹֽͣڱʾ0-1- + BYTE byRes[512]; // +}NET_DVR_EVENT_CARD_LINKAGE_CFG_V51, *LPNET_DVR_EVENT_CARD_LINKAGE_CFG_V51; + +typedef struct tagNET_DVR_EVENT_CARD_LINKAGE_COND +{ + DWORD dwSize; + DWORD dwEventID; //¼ID + WORD wLocalControllerID; //͵ؿ[1,64] + BYTE byRes[106]; +}NET_DVR_EVENT_CARD_LINKAGE_COND, *LPNET_DVR_EVENT_CARD_LINKAGE_COND; + +typedef struct tagNET_DVR_RIGHT_CONTROLLER_AUDIO_PARAM +{ + DWORD dwSize; + DWORD dwFileSize; //ļСλֽڣϴƵļʱЧƵļʱЧ + DWORD dwAudioID; //ƵID0xffffffffϴ/ȫƵļĿǰ豸֧ȫϴ/أֵ֧ƵIDϴ/أ + BYTE byRes[256]; +}NET_DVR_RIGHT_CONTROLLER_AUDIO_PARAM, *LPNET_DVR_RIGHT_CONTROLLER_AUDIO_PARAM; + +//ͻ궨ļṹ +typedef struct tagNET_DVR_CLIENT_CALIBFILE_PARAM +{ + DWORD dwSize; + DWORD dwFileLen; //ļС + BYTE byChannel; //ͨ + BYTE byFileType; //0-3200W궨ļ,1-800W궨ļ + BYTE byRes[22]; +}NET_DVR_CLIENT_CALIBFILE_PARAM, *LPNET_DVR_CLIENT_CALIBFILE_PARAM; + +typedef struct tagNET_DVR_RATIOSTITCHING_PARAM +{ + DWORD dwSize; + DWORD dwFileLen; //ļС + BYTE byChannel;// senorƴӺͨ + BYTE byRes[23]; +}NET_DVR_RATIOSTITCHING_PARAM, *LPNET_DVR_RATIOSTITCHING_PARAM; + +//ǽزļ +typedef struct tagNET_DVR_VIDEOWALL_MATERIAL_COND +{ + DWORD dwSize; + BYTE byWallNo; //ǽǽţ1ʼ + BYTE byWindowType; //ͣ0-ͼĴ,1-Ļ + BYTE byFileType; //ļͣ0-ͼƬ + BYTE byRes1; //ֽ + DWORD dwWindowNo; //ڱţ1ʼ + DWORD dwMaterialNo; //زıţ1ʼ + BYTE byRes[32]; +}NET_DVR_VIDEOWALL_MATERIAL_COND, *LPNET_DVR_VIDEOWALL_MATERIAL_COND; + +//3200Wṹ +typedef struct tagNET_DVR_CORRECT_TABLE_3200W_PARAM +{ + DWORD dwSize; + DWORD dwFileLen; //ļС + BYTE byChannel; //ͨ + BYTE byFileType; //0-3200W궨ļ,1-800W궨ļ + BYTE byRes[22]; +}NET_DVR_CORRECT_TABLE_3200W_PARAM, *LPNET_DVR_CORRECT_TABLE_3200W_PARAM; + +//ͨץͼļṹ +typedef struct tagNET_DVR_FOUR_CAMERAS_PICTURES +{ + DWORD dwSize; + DWORD dwFileLen; //ļС + BYTE byChannel; //ͨ + BYTE byRes[23]; +}NET_DVR_FOUR_CAMERAS_PICTURES, *LPNET_DVR_FOUR_CAMERAS_PICTURES; + +// ָͺű궨ļṹ +typedef struct tagNET_DVR_DEVTYPE_CALIBFILE_PARAM +{ + DWORD dwSize; + DWORD dwFileLen; //ļ + BYTE byChannel; //ͨ + BYTE byFileType; //0-3200W궨ļ,1-800W궨ļ + BYTE byRes[22]; +}NET_DVR_DEVTYPE_CALIBFILE_PARAM, *LPNET_DVR_DEVTYPE_CALIBFILE_PARAM; + +typedef struct tagNET_DVR_ANTI_SNEAK_HOST_INFO +{ + NET_DVR_ADDRESS struDVRIP; //IPַ + BYTE byIsStartAddr; //ǷΪʼַ0-1- + BYTE byHostNo; //ţ1-8Ҫڶ˳ + BYTE byRes[34]; // +}NET_DVR_ANTI_SNEAK_HOST_INFO,*LPNET_DVR_ANTI_SNEAK_HOST_INFO; + +typedef struct tagNET_DVR_ANTI_SNEAK_HOST_READER_INFO +{ + BYTE byAntiSnealHostNo; //DZ + BYTE byRes[5]; // + WORD wFollowUpCardReader; //÷DZµĶ +}NET_DVR_ANTI_SNEAK_HOST_READER_INFO, *LPNET_DVR_ANTI_SNEAK_HOST_READER_INFO; + +typedef struct tagNET_DVR_ANTI_SNEAK_MULTI_HOST_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿ뷴DZ·1-룬0- + BYTE byRes1[3]; + NET_DVR_ANTI_SNEAK_HOST_INFO struSneakHost[MAX_SNEAK_PATH_NODE]; //ַϢ + NET_DVR_ANTI_SNEAK_HOST_READER_INFO struStartReader; //ʼ ȫΪ0ʱʾעĸʼ + BYTE byRes2[128]; +}NET_DVR_ANTI_SNEAK_MULTI_HOST_CFG, *LPNET_DVR_ANTI_SNEAK_MULTI_HOST_CFG; + +typedef struct tagNET_DVR_ANTI_SNEAK_READER_CFG +{ + BYTE byEnable; //Ƿ뷴DZ·1-룬0- + BYTE byAntiSnealHostNo; //DZ + WORD wReaderID; //ID + NET_DVR_ANTI_SNEAK_HOST_READER_INFO struSneakReaderInfo[MAX_SNEAK_PATH_NODE]; // + BYTE byRes2[8]; +}NET_DVR_ANTI_SNEAK_READER_CFG, *LPNET_DVR_ANTI_SNEAK_READER_CFG; + +typedef struct tagNET_DVR_ANTI_SNEAK_MULTI_HOST_READERS_CFG +{ + DWORD dwSize; + NET_DVR_ANTI_SNEAK_READER_CFG struReaderCfg[MAX_READER_ROUTE_NUM]; //Ϣ + BYTE byRes[128]; +}NET_DVR_ANTI_SNEAK_MULTI_HOST_READERS_CFG, *LPNET_DVR_ANTI_SNEAK_MULTI_HOST_READERS_CFG; + +typedef struct tagNET_DVR_ACS_CFG +{ + DWORD dwSize; //ṹС + BYTE byRS485Backup; //ǷRS485ͨűݹܣ0-ã1- + BYTE byShowCapPic; //ǷʾץͼƬ 0-ʾ1-ʾ + BYTE byShowCardNo; //Ƿʾţ0-ʾ1-ʾ + BYTE byShowUserInfo; //ǷʾûϢ0-ʾ1-ʾ + BYTE byOverlayUserInfo;//ǷûϢ0-ӣ1- + BYTE byVoicePrompt; //Ƿʾ0-ã1- + BYTE byUploadCapPic; //ץǷϴͼƬ0-ϴ1-ϴ + BYTE bySaveCapPic; //Ƿ񱣴ץͼƬ0-棬1- + BYTE byInputCardNo; //ǷǷ뿨ţ0-1- + BYTE byEnableWifi; //Ƿwifi0-1- + BYTE byEnable3G4G; //3G4Gʹܣ0-ʹܣ1-ʹ + BYTE byProtocol;//ͨЭͣ0-˽Э飨Ĭϣ1-OSDPЭ + BYTE byRes[500]; +}NET_DVR_ACS_CFG, *LPNET_DVR_ACS_CFG; + +typedef struct tagNET_DVR_PLATFORM_VERIFY_CFG +{ + DWORD dwSize; + DWORD dwDoorNo; //ű + BYTE byResultType; //֤ͣ0Ƿ1Ϸ + BYTE byRes1[3]; + BYTE byScreenDisplay[MAX_SCREEN_DISPLAY_LEN]; //LEDĻʾʾ֤Ϣ + BYTE byRes[300]; // ֽ +}NET_DVR_PLATFORM_VERIFY_CFG, *LPNET_DVR_PLATFORM_VERIFY_CFG; + +typedef struct tagNET_DVR_PERSON_STATISTICS_CFG +{ + DWORD dwSize; + BYTE byEnableStatistics; //Ƿͳƣ01 + BYTE byEnableOfflineStatistics; //Ƿͳƣ01 + BYTE byCountSignalStatisticalStandard; //źͳƱ׼0Ч1ͨͳƣ2֤ͳ + BYTE byRes[605]; +}NET_DVR_PERSON_STATISTICS_CFG, *LPNET_DVR_PERSON_STATISTICS_CFG; + +typedef struct tagNET_DVR_ACS_SCREEN_DISPLAY_CFG +{ + DWORD dwSize; + DWORD dwFontSize; //С[1,10] + DWORD dwRowSpacing; //м࣬λص㣻 + DWORD dwColumnSpacing; //м࣬λص㣻 + DWORD dwFirstRowPosition; //ʼλĻһֿ飬00 11/8: 22/8 33/8 44/8 55/8 66/8: 77/8 + BYTE byDegree; //ַʾǶȣ0-0ȣ1-90ȣţ + BYTE byScreenType; //Ļͣ0-DC48270RS043_01T1-DC80480B070_03T + BYTE byRes[306]; +}NET_DVR_ACS_SCREEN_DISPLAY_CFG, *LPNET_DVR_ACS_SCREEN_DISPLAY_CFG; + +typedef struct tagNET_DVR_GATE_TIME_CFG +{ + DWORD dwSize; + DWORD dwHoldOnALarmTime; //ʱ䣬λms + DWORD dwHoldOnGateOpenTime; //բյرǰִ״̬ʱ䣬λms + DWORD dwPostponeIntrusionAlarmTime; //ƳٴƭΪʱ䣬λms + DWORD dwNoLaneAccessTimeLimitTime; //ͨյЧ֤ͨźţͨгʱʱ䣬λs + DWORD dwSafetyZoneStayTime; //ͨյЧ֤ͨźţ˿͵ﰲȫͨʱʱ䣬λs + BYTE byIRTriggerTimeoutTime; //ⴥʱʱ䣬λ루0-255 + BYTE byRes[299]; +}NET_DVR_GATE_TIME_CFG, *LPNET_DVR_GATE_TIME_CFG; + + +typedef struct tagNET_DVR_CARD_PASSWD_CFG +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; // + BYTE byCardPassword[CARD_PASSWORD_LEN]; // + DWORD dwErrorCode; //ȡ뿪ʹ÷صĴ룬ɹΪ0ʧܷش + BYTE byCardValid; //ǷЧ0-Ч1-ЧɾʱΪ0ɾȡʱֶʼΪ1 + BYTE byRes2[23]; +}NET_DVR_CARD_PASSWD_CFG, *LPNET_DVR_CARD_PASSWD_CFG; + +typedef struct tagNET_DVR_CARD_PASSWD_STATUS +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; // + DWORD dwErrorCode; //Ϳ뿪ʹ÷صĴ룬ɹΪ0ʧܷش + BYTE byRes2[24]; +}NET_DVR_CARD_PASSWD_STATUS, *LPNET_DVR_CARD_PASSWD_STATUS; + +//ṹ +typedef struct tagNET_DVR_VEHICLE_RECOG_COND +{ + DWORD dwSize; + DWORD dwChannel; + BYTE byRes[64]; +} NET_DVR_VEHICLE_RECOG_COND, *LPNET_DVR_VEHICLE_RECOG_COND; + +//ṹ +typedef struct tagNET_DVR_VEHICLE_RECOG_CFG +{ + DWORD dwSize; + //ˮ ͣϴNET_DVR_VEHICLE_RECOG_RESULTеֶsDataIndexӦ + char sDataIndex[DATA_INDEX_LEN]; + // (ϴNET_DVR_VEHICLE_RECOG_RESULTеֶdwTaskNoӦ) + WORD wTaskNo; + BYTE byRes1[2]; + NET_VCA_RECT struPlateRect;//λ + char sLicense[MAX_LICENSE_LEN/*16*/];//ƺ + /* + ͼƬʶ + bit0-ʶ0-ʶ1-ʶ + bit1-ʶ0-ʶ1-ʶ + bit2-ɫʶ0-ʶ1-ʶ + bit3-Ʒʶ0-ʶ1-ʶ + bit4-ڵʶ(ʻ)0-ʶ1-ʶ + bit5-ȫʶ(ʻ)0-ʶ1-ʶ + bit6-ڵʶ(ʻ)0-ʶ1-ʶ + bit7-ȫʶ(ʻ)0-ʶ1-ʶ + bit8-ͼƬʹܣ0-ʶ1-ʶ + bit9-ϴͼƬʹ(ͨSDK)0-ʶ1-ʶ + bit10-ϴͼƬʹ(ͨURL)0-ʶ1-ʶ + bit11-Ʊ공0-ʶ1-ʶ + bit12-ֻ0-ʶ1-ʶ + bit13-Ҽ0-ʶ1-ʶ + bit14-ΣƷ: 0-ʶ1-ʶ + bit15-촰վ˼: 0-ʶ1-ʶ + */ + DWORD dwRecogOperate; + /* + ͼƬϴ + bit0-ͼƬ0-ϴ1-ϴ + bit1-ͼƬ0-ϴ1-ϴ + bit2-ͼ(ʻ)0-ϴ1-ϴ + bit3-ͼ(ʻ)0-ϴ1-ϴ + bit4-ȫͼ(ʻ)0-ϴ1-ϴ + bit5-ȫͼ(ʻ)0-ϴ1-ϴ + */ + DWORD dwDataUploadType; + DWORD dwPostID;//ID + NET_DVR_TIME_V30 struPostTime;//ʱ + DWORD dwJsonLen; //Json͸ݳ + BYTE *pJsonBuffer;//Jsonָ,ο4.2.4Jsonݸʽ + BYTE byRes[107]; + BYTE byPicDataType;//ͼƬͣ0-ͼƬݣ1-URL + //ͼƬ + //byPicDataType == 0ʱ򣬸ֶڵЧͼƬڽṹ + //byPicDataType == 1ʱָͼƬURLϢ + char sPicDataPath[256]; +}NET_DVR_VEHICLE_RECOG_CFG, *LPNET_DVR_VEHICLE_RECOG_CFG; + +typedef struct tagNET_DVR_VEHICLERECOG_TASK_RESULT +{ + DWORD dwSize; + //豸ˮ,ÿύ豸Ψһˮŷظϲ㡣 + char sDevDataIndex[MAX_DEV_DATAINDEX_LEN/*64*/]; + BYTE byRes[256]; +}NET_DVR_VEHICLERECOG_TASK_RESULT, *LPNET_DVR_VEHICLERECOG_TASK_RESULT; + +//ṹ +typedef struct tagNET_DVR_VEHICLE_RECOG_TASK_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + char sDataIndex[DATA_INDEX_LEN];//ˮ ȫ0ʱʾȡȫ + WORD wTaskNo;// ֵΪ0ʱʾȫ + /* + ״̬ + bit0-״̬0-ѯ1-ѯ + bit1-ִе0-ѯ1-ѯ + bit2-ȴе0-ѯ1-ѯ + */ + BYTE byTask; + BYTE byRes1; + //豸ˮŲѯ,ÿύ豸Ψһˮš + char sDevDataIndex[MAX_DEV_DATAINDEX_LEN/*64*/]; + BYTE byRes[60]; +}NET_DVR_VEHICLE_RECOG_TASK_COND, *LPNET_DVR_VEHICLE_RECOG_TASK_COND; + +//ṹ +typedef struct tagNET_DVR_VEHICLE_RECOG_TASK_INFO +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + char sDataIndex[DATA_INDEX_LEN];//ˮ + WORD wTaskNo;// + WORD wTaskProgress;//ִнȣʵʽ*1000 + BYTE byTaskState;//״̬0-ȴУ1-ִУ2- + BYTE byRes1[3]; + /* + ͼƬʶ + bit0-ʶ0-ʶ1-ʶ + bit1-ʶ0-ʶ1-ʶ + bit2-ɫʶ0-ʶ1-ʶ + bit3-Ʒʶ0-ʶ1-ʶ + bit4-ڵʶ(ʻ)0-ʶ1-ʶ + bit5-ȫʶ(ʻ)0-ʶ1-ʶ + bit6-ڵʶ(ʻ)0-ʶ1-ʶ + bit7-ȫʶ(ʻ)0-ʶ1-ʶ + bit8-ͼƬʹܣ0-ʶ1-ʶ + bit9-ϴͼƬʹ(ͨSDK)0-ʶ1-ʶ + bit10-ϴͼƬʹ(ͨURL)0-ʶ1-ʶ + bit11-Ʊ공0-ʶ1-ʶ + bit12-ֻ0-ʶ1-ʶ + bit13-Ҽ0-ʶ1-ʶ + bit14-ΣƷ: 0-ʶ1-ʶ + bit15-촰վ˼: 0-ʶ1-ʶ + */ + DWORD dwRecogOperate; + DWORD dwPostID;//ID + NET_DVR_TIME_V30 struPostTime;//ʱ + DWORD dwJsonLen; //Json͸ݳȣԤJSONݲʵ֣ + BYTE *pJsonBuffer;//Jsonָ, ԤJSONݲʵ֣ + BYTE byRes[104]; +}NET_DVR_VEHICLE_RECOG_TASK_INFO, *LPNET_DVR_VEHICLE_RECOG_TASK_INFO; + +typedef struct tagNET_DVR_VEHICLE_RECOG_RESULT +{ + DWORD dwSize; //ṹ + //ˮ ͣύNET_DVR_VEHICLE_RECOG_CFGеֶsDataIndexӦ + char sDataIndex[DATA_INDEX_LEN]; + // (ύNET_DVR_VEHICLE_RECOG_CFGеֶwTaskNoӦ) + WORD wTaskNo; + BYTE byRes[2]; + NET_VCA_RECT struPlateRect;//λ + char sLicense[MAX_LICENSE_LEN/*16*/];//ƺ + BYTE byVehicleType; //ͣοVTR_RESULT + BYTE byColorDepth; //ɫdzο 0-ɫ1-dzɫ + BYTE byColor; //ɫ, οVCR_CLR_CLASS + BYTE byVehicleLogoRecog; //Ʒ + BYTE byVehicleSubLogoRecog; //Ʒ + BYTE byPilotSafebelt;//0-ʾδ֪,1-ϵȫ,2-ϵȫ + BYTE byCopilotSafebelt;//0-ʾδ֪,1-ϵȫ,2-ϵȫ + BYTE byPilotSunVisor;//0-ʾδ֪,1-,2- + BYTE byCopilotSunVisor;//0-ʾδ֪, 1-,2- + BYTE byVehicleModel;// οĵ Ʒ + WORD wVehicleLogoRecog; //Ʒƣο"Ʒ.xlsx" + BYTE byRes1[251]; + // 0-ֱϴ; 1-ƴ洢URLԭȵͼƬݱURLݣͼƬȱURL + BYTE byDataType; + /* + ϴͼƬϢ: + bit0-ͼ0-ϴ1-ϴ + bit1-ͼ0-ϴ1-ϴ + bit2-ͼ(ʻ)0-ϴ1-ϴ + bit3-ͼ(ʻ)0-ϴ1-ϴ + bit4-ȫʶ(ʻ)0-ϴ1-ϴ + bit5-ȫʶ(ʻ)0-ϴ1-ϴ + */ + DWORD dwPicType; //0:ͼƬϢ;: ͼ;:ͼ; + BYTE *pVehicleBuffer; //ͼƬָ + DWORD dwVehicleBufferLen ;// ͼƬݳ + BYTE *pPlateBuffer; //ͼƬָ + DWORD dwPlateBufferLen ;// ͼƬݳ + BYTE *pPilotFaceBuffer; //ͼ(ʻ)ͼƬָ + DWORD dwPilotFaceBufferLen ;// ͼ(ʻ)ͼƬݳ + BYTE *pCopilotFaceBuffer; //ͼ(ʻ)ͼƬָ + DWORD dwCopilotFaceBufferLen ;// ͼ(ʻ)ͼƬݳ + BYTE *pPilotSafebeltBuffer; //ȫʶ(ʻ)ͼƬָ + DWORD dwPilotSafebeltBufferLen ;// ȫʶ(ʻ)ͼƬݳ + BYTE *pCopilotSafebeltBuffer;// ȫʶ(ʻ)ͼƬָ + DWORD dwCopilotSafebeltBufferLen ;// ȫʶ(ʻ)ͼƬݳ + NET_VCA_RECT struVehicleRect ;// + NET_VCA_RECT struPilotRect ;//ʻ + NET_VCA_RECT struCopilotRect ;//ʻ + BYTE *pJsonBuffer;//Jsonָ,οJSONݸʽ + DWORD dwJsonBufferLen;// Jsonݳ + DWORD dwPostID;//ID + NET_DVR_TIME_V30 struPostTime;//ʱ + BYTE Res2[56]; +}NET_DVR_VEHICLE_RECOG_RESULT, *LPNET_DVR_VEHICLE_RECOG_RESULT; + +#define MAX_ZONE_LINKAGE_CHAN_NUM 4 /* ͨ*/ + +typedef struct tagNET_DVR_CENTER_SERVER_CFG_ +{ + DWORD dwSize; + BYTE byAddressType; //0 - ipv4/ipv6ַ1 - + BYTE byRes1; + WORD wServerPort; //˿ + union + { + struct + { + BYTE szDomain[MAX_DOMAIN_NAME]; + BYTE byRes2[80]; + }struDomain; // + struct + { + NET_DVR_IPADDR struIp; + }struAddrIP; //IPַ + }unionServer;//ʹṹͨbyAddressTypeֶαʾIPַ + WORD wInterval; //ʱ,0-30s + BYTE byRes3[514]; +}NET_DVR_CENTER_SERVER_CFG,*LPNET_DVR_CENTER_SERVER_CFG; + +typedef struct tagNET_DVR_SINGLE_CHANNEL_LINKAGE_CFG_ +{ + BYTE byDDNSType; //ͣ0 - Ч1 - IPServer(˽DNS)2 - hiDDNS + BYTE byRes1; + WORD wDDNSPort; //˿ں + BYTE byServerAddr[MAX_DOMAIN_NAME]; //ַ + BYTE byDevName[MAX_DOMAIN_NAME]; //豸 + BYTE byDevSerialNum[SERIALNO_LEN]; //豸к + BYTE byAddressType; //0 - ipv4/ipv6ַ1 - + BYTE byRes2; + WORD wDevPort; //豸˿ں + union + { + struct + { + BYTE szDomain[MAX_DOMAIN_NAME]; + BYTE byRes2[80]; + }struDomain; // + struct + { + NET_DVR_IPADDR struIp; + }struAddrIP; //IPַ + }unionDevAddr;//ʹṹͨbyAddressTypeֶαʾIPַ + BYTE sUserName[NAME_LEN/*32*/]; //û + BYTE sPassword[PASSWD_LEN/*16*/];// + DWORD dwChannel; //ͨ + BYTE byRes3[32]; +}NET_DVR_SINGLE_CHANNEL_LINKAGE_CFG,*LPNET_DVR_SINGLE_CHANNEL_LINKAGE_CFG; + +typedef struct tagNET_DVR_REGION_CHANNEL_LINKAGE_CFG_ +{ + DWORD dwSize; + NET_DVR_SINGLE_CHANNEL_LINKAGE_CFG struLinkChannels[MAX_ZONE_LINKAGE_CHAN_NUM]; // ÿԹĸƵͨ + BYTE byRes[64]; +}NET_DVR_ZONE_CHANNEL_LINKAGE_CFG,*LPNET_DVR_ZONE_CHANNEL_LINKAGE_CFG; + +typedef struct tagNET_DVR_SINGLE_ASSOCIATED_CHAN_CFG +{ + BYTE byDevSerialNo[SERIALNO_LEN]; //豸к + DWORD dwChannel; //ͨ + BYTE byRes[64]; +}NET_DVR_SINGLE_ASSOCIATED_CHAN_CFG, *LPNET_DVR_SINGLE_ASSOCIATED_CHAN_CFG; + +typedef struct tagNET_DVR_ALARMIN_ASSOCIATED_CHAN_CFG +{ + WORD wZoneNo; + BYTE byRes1[2]; + NET_DVR_SINGLE_ASSOCIATED_CHAN_CFG struSingleChanCfg[MAX_ZONE_LINKAGE_CHAN_NUM]; + BYTE byRes2[64]; +}NET_DVR_ALARMIN_ASSOCIATED_CHAN_CFG, *LPNET_DVR_ALARMIN_ASSOCIATED_CHAN_CFG; + +typedef struct tagNET_DVR_ALARMIN_ASSOCIATED_CHAN_CFG_LIST_ +{ + DWORD dwSize; + NET_DVR_ALARMIN_ASSOCIATED_CHAN_CFG struAssociatedChanCfg[MAX_MAX_ALARMIN_NUM]; + BYTE byRes[64]; +}NET_DVR_ALARMIN_ASSOCIATED_CHAN_CFG_LIST, *LPNET_DVR_ALARMIN_ASSOCIATED_CHAN_CFG_LIST; + +typedef struct tagNET_DVR_LCD_ALARM +{ + DWORD dwSize; + DWORD dwScreenID; //Ļ + BYTE byOnOffLine; //ĻǷߣ0-ߣ1-ߣĻʱṹЧ + BYTE byTempState; //忨¶״̬0-1-쳣 + BYTE byFanState; //״̬0-أ1- + BYTE byFanException; //쳣״̬0-֧ 1-2-쳣 + BYTE byTemperature; //Ļ忨¶ȣλ϶ + BYTE byRes[27]; +}NET_DVR_LCD_ALARM, *LPNET_DVR_LCD_ALARM; + +//ϴϢ +typedef struct tagNET_DVR_SENSOR_INFO_UPLOAD +{ + DWORD dwSize; + NET_DVR_TIME_V30 struTime; + char szSensorName[MAX_SENSORNAME_LEN]; // + char szSensorChan[MAX_SENSORCHAN_LEN]; //ͨ + BYTE byReboot; //֮ǰǷһĺĵһݴ־0-ʾû1-й + BYTE byPowerSupply;//Ƿ 0-ڹ磬1-ڹ + BYTE byStatusType;//豸״̬:0:1쳣2 + BYTE bySensorType;//οöSENSOR_TYPE + float fVoltageValue;//ѹֵ ȷ0.001 + float fCurrentValue;//ֵȷ0.001 + float fActualValue;//ģźתֵȷ0.001 + char szDescription[MAX_DESCRIPTION_LEN /* 32*/]; //Ϣ;豸״̬byStatusTypeΪ0ʱЧ + BYTE byRes1[128]; +}NET_DVR_SENSOR_INFO_UPLOAD,*LPNET_DVR_SENSOR_INFO_UPLOAD; + +//ץͼƬϴ +typedef struct tagNET_DVR_CAPTURE_UPLOAD +{ + DWORD dwSize; + NET_DVR_TIME_V30 struTime; + DWORD dwChannel;//ͨ + char szDevName[MAX_DEVNAME_LEN_EX]; + DWORD dwPicLen;//ͼƬ + BYTE *pBuffer; //ͼƬָ + BYTE byRes[124]; +}NET_DVR_CAPTURE_UPLOAD,*LPNET_DVR_CAPTURE_UPLOAD; + +//ȫλϴ +typedef struct tagNET_DVR_PANORAMIC_LINKAGE +{ + DWORD dwSize; + DWORD dwChannel;//ͨ + BYTE byType;//ͼƬͣ0-壬1-ȫλͼƬ + BYTE byRes1[3]; + BYTE byMACAddr[MACADDR_LEN]; //macַ + BYTE byRes2[2]; + NET_DVR_IPADDR struDevIP; //豸IPַ + DWORD dwPicLen;//ȫλץͼƬ + char *pPicBuff; //ȫλץͼƬָ + BYTE byRes[128]; +}NET_DVR_PANORAMIC_LINKAGE, *LPNET_DVR_PANORAMIC_LINKAGE; + +#define MAX_MASK_AREA_NUM 8 // + +typedef struct tagNET_DVR_AREA_MASK_CFG // +{ + DWORD dwSize; //ṹС + BYTE byEnable;//Ƿ 0-1- + BYTE byMaskThick; //˺ 0-룬1-룬2-룬СΪ8*816*1632*32ĬΪ + BYTE byAutoMask;//ǷԶ 0-1- + BYTE byRes1; + NET_VCA_RECT struRegion[MAX_MASK_AREA_NUM];//Χ + BYTE byRes[64]; +}NET_DVR_AREA_MASK_CFG, *LPNET_DVR_AREA_MASK_CFG; + +typedef struct tagNET_DVR_AUDIO_DIACRITICAL_CFG //Ƶ +{ + DWORD dwSize; //ṹС + BYTE byEnable; //Ƿñ 0-ã1- + char byBassValue; //ߵֵΧΪ-12-12 ֵԽԽϸ֮ԽС0-ʾ + BYTE byRes[62]; +}NET_DVR_AUDIO_DIACRITICAL_CFG, *LPNET_DVR_AUDIO_DIACRITICAL_CFG; + +typedef struct tagNET_DVR_RESOLUTION_SWITCH +{ + DWORD dwSize; + BYTE byResolutionType;//0-all,1-20:9,2-20:6,3-ԭʼģʽ + BYTE byRes[127]; +}NET_DVR_RESOLUTION_SWITCH, *LPNET_DVR_RESOLUTION_SWITCH; + +typedef struct tagNET_DVR_WIFI_DHCP_ADDR_CFG //wifiģʽDHCPΧ +{ + DWORD dwSize; + NET_DVR_IPADDR struStartAddr; //ʼIPַ + NET_DVR_IPADDR struEndAddr; //IPַ + BYTE byRes[256]; +}NET_DVR_WIFI_DHCP_ADDR_CFG, *LPNET_DVR_WIFI_DHCP_ADDR_CFG; + + +typedef struct tagNET_DVR_WIFI_CLIENT_INFO //Ƶ +{ + DWORD dwSize; + NET_DVR_IPADDR struAddress; //IPַ + BYTE byMACAddr [MACADDR_LEN]; + WORD wConnSpeed; //ٶ λKB + BYTE byRSSIValue; //յźǿȣȡֵΪֵʱֵΧΪ0~-110dbm,ֵԽ󣬴źԽǿ + BYTE byRes1; // + WORD wBandwidth; // λKB + BYTE byRes[32]; +}NET_DVR_WIFI_CLIENT_INFO, *LPNET_DVR_WIFI_CLIENT_INFO; + +typedef struct tagNET_DVR_MULTISTREAM_RELATION_CHAN_CFG //ͨ +{ + DWORD dwSize; //ṹС + DWORD dwChannel; //ıͨ + BYTE byRes[64]; +}NET_DVR_MULTISTREAM_RELATION_CHAN_CFG, *LPNET_DVR_MULTISTREAM_RELATION_CHAN_CFG; + +typedef struct +{ + BYTE byPort; //˿ + BYTE byMasterSlaveProperty; //˿ 1- 2- + BYTE byPortEthernetType; //˿ͣ1-׶˿ڣ2-ǧ׶˿ + BYTE byRes[9]; +}NET_DVR_RING_PORT_PROPERTY, *LPNET_DVR_RING_PORT_PROPERTY; +typedef struct +{ + DWORD dwSize; + BYTE byEnable; //Ƿã 0-ã !0- + BYTE byProtoType; //Эͣ 1-˻Э(˽)2-ۺƽ̨Э飨˽У3-G8032Э飨У + BYTE byBandWidth; //ͣ1-ף2-ǧ + BYTE byRes1; //ֶ + NET_DVR_RING_PORT_PROPERTY struRingPort[PER_RING_PORT_NUM]; //˿ + BYTE byRes2[60]; //ֶ +}NET_DVR_NS_RING_CFG, *LPNET_DVR_NS_RING_CFG; +typedef struct // +{ + DWORD dwSize; //ṹС + BYTE byStatus; //״̬1- 2-Ͽ + BYTE byMasterSlaveProperty ; //˰ 1- 2- + BYTE byRes[62]; //ֶ +} NET_DVR_NS_RING_STATUS, *LPNET_DVR_NS_RING_STATUS; + +//ⱨ +typedef struct tagNET_DVR_FIREDETECTION_ALARM +{ + DWORD dwSize; //ṹС + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + WORD wPanPos; + WORD wTiltPos; + WORD wZoomPos; + BYTE byPicTransType; //ͼƬݴ䷽ʽ: 0-ƣ1-url + BYTE byRes1; + DWORD dwPicDataLen;//ץͼƬ + BYTE *pBuffer; //ָ + NET_VCA_RECT struRect;// + NET_VCA_POINT struPoint ;//¶ȵ + WORD wFireMaxTemperature ;//¶[300~4000] + WORD wTargetDistance ;//Ŀ[100m ~ 10000m] + BYTE byStrategyType;//ͣ0~ⱨ1~Эͬ2~ϵͳ3~ָ㱨4~ָ + BYTE byAlarmSubType;//͡0~ⱨ1~ⱨ2~̻𱨾 + /*ǷPTZչ + 0~ãPTZֵwPanPoswTiltPoswZoomPosΪ׼ + 1~ãPTZֵstruPtzPosExΪ׼PTZ践ءstruPtzPosExֵתΪwPanPoswTiltPoswZoomPosֵ + */ + BYTE byPTZPosExEnable; + BYTE byRes2; + NET_PTZ_INFO struPtzPosEx;// ptzչ(ָ֧߾PTZֵȷСλ) + DWORD dwVisiblePicLen;//ɼͼƬ + BYTE *pVisiblePicBuf; //ɼͼƬָ + // pSmokeBufbyAlarmSubTypeΪ1ⱨ2̻𱨾ʱЧ + BYTE *pSmokeBuf; //ⱨָ룬ָһNET_DVR_SMOKEDETECTION_ALARMṹ + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byRes3; + BYTE byFireScanWaitMode; //ɨȴģʽ 0-Զ 1-ֶ + DWORD dwVisibleChannel; //ɼͨͨ + BYTE byTimeDiffFlag; /*ʱֶǷЧ 0-ʱЧ 1-ʱЧ */ + char cTimeDifferenceH; /*UTCʱСʱ-12 ... +14 +ʾ,byTimeDiffFlagΪ1ʱЧ*/ + char cTimeDifferenceM; /*UTCʱӣ-30, 30, 45 +ʾbyTimeDiffFlagΪ1ʱЧ*/ + BYTE byRes[49]; +} NET_DVR_FIREDETECTION_ALARM,*LPNET_DVR_FIREDETECTION_ALARM; + +// +typedef struct tagNET_DVR_SMOKEDETECTION_CFG +{ + BYTE byEnable;//ʹ + BYTE bySensitivity; //: 1~100Ĭ50 + BYTE byPatrolSensitivity; //Ѳ: 1~100Ĭ50 + BYTE byDoubleCheckSensitivity; //ι: 1~100Ĭ50 + BYTE byRes[56]; +}NET_DVR_SMOKEDETECTION_CFG, *LPNET_DVR_SMOKEDETECTION_CFG; + +typedef struct tagNET_DVR_ALARMSTRATEGY_PARAM +{ + BYTE byStrategyType;//ͣ0~ⱨ1~Эͬ2~ϵͳ, 3~ָ㱨4~ָ + BYTE byRes[15]; +}NET_DVR_ALARMSTRATEGY_PARAM, *LPNET_DVR_ALARMSTRATEGY_PARAM; + +typedef struct tagNET_DVR_FIREDETECTION_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE bySensitivity; //: 1~100Ĭ5s + BYTE byFireComfirmTime;//ֻȴʱ: 0-120 Ĭ5s + BYTE byFireRegionOverlay;//ӻ: 0- 1- + BYTE byDetectionMode;// ģʽ0~б1~֡⡣ + BYTE byFireFocusMode;//۽ģʽ0~Զģʽ,1~ Ѳģʽ + BYTE byFireZoomMode;//ѧ䱶ģʽ0~ΪԶģʽ1~Ϊֶģʽ + BYTE byFirezoomLevel;//ѧ䱶ʣ1~100ѧ䱶ģʽΪֶģʽʱЧ + BYTE bySmokeFireEnabled; //̻ʹܣ0ã1- + /* + ֶȴʹܣΪ1ʱ󣬻ȴʱbyFireComfirmTimeЧ + 󣬵豸ֻʱ̨һֱͣڷֻλãͨɨõȴģʽɨ衣 + ֶȴʹΪ0ʱ豸ΪԶȴģʽģʽ¿ɸbyFireComfirmTimeֶõĵȴʱлȴõȴʱ豸Զлɨ衣 + */ + BYTE byFireManualWaitEnabled;// ֶȴʹܣ0~ΪԶȴģʽ1~ֶȴģʽ + BYTE byCancelRepeatedAlarmEnabled;// ȡظʹ 0-ر 1- + BYTE byApplicationSceneMode;//Ӧóģʽ0-1-ɭַ, 2-ոȼ,3-Ƹߵ, 4-ڻܽ + DWORD dwInstallationHeight;// װ߶ + BYTE byFireSourceDetection;// ģʽ 0-̬ 1-ģʽ + BYTE bySmokeAuxiliaryDetectionEnabled;// жʹ,ģʽǶбʱЧ 0- 1- + BYTE byverificationSensitivity; //ȷȣΧ1~100sĬ50s + BYTE byFireAlgorithmMode; //㷨ģʽ0Ч1ģʽʶ-patternRecognition,:2ѧϰ-machineLearning + BYTE byAgriculturalMachineryFilterEnabled; //ũģʹܣ0ã1 + BYTE byWaterReflectionEnabled; //ˮⷴģʹ, 0ã1 + BYTE byPatrolSensitivity; //Ѳ Ի⣩, Χ1~100sĬ50s + BYTE byRes[33]; + NET_DVR_ALARMSTRATEGY_PARAM struAlarmStrategy;// + NET_DVR_SMOKEDETECTION_CFG struSmokeCfg;// +}NET_DVR_FIREDETECTION_CFG,*LPNET_DVR_FIREDETECTION_CFG; + +typedef struct tagNET_DVR_THERMALPOWER_PARAM +{ + DWORD dwSize;//ṹС + BYTE byPowerSwitch;//ʹܣ1Ϊ0Ϊر + BYTE byRes[123]; +}NET_DVR_THERMALPOWER_PARAM, *LPNET_DVR_THERMALPOWER_PARAM; + +typedef struct tagNET_DVR_PTZABSOLUTEEX_CFG +{ + DWORD dwSize;//ṹС + NET_PTZ_INFO struPTZCtrl;//豸PTZFϢ + DWORD dwFocalLen;//෶Χ0-100000MM + float fHorizontalSpeed;//ˮƽתٶȣ0.01-1000.00/S + float fVerticalSpeed;//ֱתٶȣ0.01-1000.00/S + /*ͷ䱶ͣabsoluteZoom:ͨ䱶ãѡΪʱstruPTZCtrlеfZoomЧfocalLen:ͨãѡΪʱdwFocalLenЧ*/ + BYTE byZoomType;// ͷ䱶0~ absoluteZoom1~ focalLen + BYTE byRes[123]; +}NET_DVR_PTZABSOLUTEEX_CFG, *LPNET_DVR_PTZABSOLUTEEX_CFG; + +#define MAX_PLAYLIST_NUM 50 //󲥷бĿ +#define MAX_PLAYPLAN_NUM 50 //󲥷żƻĿ + +#define MAX_LEN_256 256 +#define MAX_GROUP_RECORD_NUM 10 //¼ +typedef struct tagNET_DVR_AREA_MONITOR_COND +{ + DWORD dwSize; + DWORD dwAreaID; //ID + DWORD dwMonitorID; //ǰʼȡIJţ1ʼ + BYTE byIsNeedGroup; //ǷѯϢ + BYTE byRes [127]; +}NET_DVR_AREA_MONITOR_COND,*LPNET_DVR_AREA_MONITOR_COND; + +typedef struct tagNET_DVR_DEL_MONITOR_COND +{ + DWORD dwSize; + BYTE byDelType; //ɾͣ0-ɾָв㣬1-ɾָָ + DWORD dwAreaID; //ID + DWORD dwMonitorID; //IDbyDelTypeΪ0ʱЧbyDelTypeΪ1ʱЧ1ʼ + BYTE byRes[64]; +}NET_DVR_DEL_MONITOR_COND,*LPNET_DVR_DEL_MONITOR_COND; + +typedef struct tagNET_DVR_BLOCKLIST_ALARM_COND +{ + DWORD dwSize; //ṹС + BYTE byType; //־- ȫ- - ֹ + BYTE byRes1[3]; // + DWORD dwFaceID; //ID + DWORD dwMaxSnapNum; //ץ0-ʾ + BYTE byRes[256]; +}NET_DVR_BLOCKLIST_ALARM_COND, *LPNET_DVR_BLOCKLIST_ALARM_COND; + +typedef struct tagNET_DVR_STORAGE_RESOURCE_COND +{ + DWORD dwSize; //ṹС + DWORD dwStorageID; //ӵǰſʼȡʣԴ1ʼ + BYTE byRes[64]; +}NET_DVR_STORAGE_RESOURCE_COND, *LPNET_DVR_STORAGE_RESOURCE_COND; + +typedef struct tagNET_DVR_BLOCKLIST_ALARM_RECORD +{ + DWORD dwSize; //ṹС + DWORD dwSnapFacePicID; //ץID + DWORD dwRegisterID; //עIDţֻ + DWORD dwGroupNo; // + BYTE byRes[128]; +}NET_DVR_BLOCKLIST_ALARM_RECORD, *LPNET_DVR_BLOCKLIST_ALARM_RECORD; + +typedef struct tagNET_DVR_BLOCKLIST_GROUP_INFO //Ϣ +{ + DWORD dwSize; //ṹС + DWORD dwGroupID; //ţȡʱЧʱЧ1ʼ + DWORD dwGroupNo; // + BYTE byGroupType; //ͣ0-ֹ飬1- + BYTE byRes1; + WORD wThreshold; //ֵȡֵΧΪ0-1000 + DWORD dwListNum; // + BYTE szGroupName[NAME_LEN]; // + BYTE szRemark[MAX_LEN_256]; + BYTE byStorageAddr[MAX_DOMAIN_NAME]; //洢IPַϢ + WORD wStoragePort; //洢IPӦĶ˿ں + BYTE byRes[126]; +}NET_DVR_BLOCKLIST_GROUP_INFO, *LPNET_DVR_BLOCKLIST_GROUP_INFO; + + +typedef struct tagNET_DVR_SINGLE_BLOCKLIST_GROUP_RECORD +{ + DWORD dwSize; //ṹС + DWORD dwGroupRecordID; //¼ID޸ĺͲѯʱЧʱЧ1ʼ + DWORD dwGroupNo; // + DWORD dwFaceDBID; //ID + DWORD dwFaceRecordID; //¼ID + BYTE byAlarmLevel; //ȼ0-high,1-medium,2-low + BYTE byRes1[3]; // + NET_DVR_ADDR_DOMAIN_INFO struStorageAddr; //洢IPַϢ + BYTE byRes[256]; +}NET_DVR_SINGLE_BLOCKLIST_GROUP_RECORD,*LPNET_DVR_SINGLE_BLOCKLIST_GROUP_RECORD; + +typedef struct tagNET_DVR_BLOCKLIST_GROUP_RECORD_COND +{ + DWORD dwSize; //ṹС + DWORD dwRecordID; //ӵǰſʼȡ1ʼ + BYTE byRes[64]; +}NET_DVR_BLOCKLIST_GROUP_RECORD_COND, *LPNET_DVR_BLOCKLIST_GROUP_RECORD_COND; + +typedef struct tagNET_DVR_BLOCKLIST_GROUP_RECORD_CFG //¼Ϣ +{ + DWORD dwSize; //ṹС + DWORD dwRecordNum; //¼ܸ + NET_DVR_SINGLE_BLOCKLIST_GROUP_RECORD struRecord[MAX_GROUP_RECORD_NUM]; //¼ + BYTE byRes[256]; +}NET_DVR_BLOCKLIST_GROUP_RECORD_CFG,*LPNET_DVR_BLOCKLIST_GROUP_RECORD_CFG; + +typedef struct tagNET_DVR_BLOCKLIST_GROUP_CFG //¼Ϣ +{ + DWORD dwSize; //ṹС + DWORD dwGroupNum; //ܸ + NET_DVR_BLOCKLIST_GROUP_INFO struGroup[MAX_GROUP_RECORD_NUM]; //¼ + BYTE byRes[256]; +}NET_DVR_BLOCKLIST_GROUP_CFG,*LPNET_DVR_BLOCKLIST_GROUP_CFG; + +typedef struct tagNET_DVR_BLOCKLIST_GROUP_COND +{ + DWORD dwSize; //ṹС + DWORD dwGroupID; //ӵǰſʼȡ1ʼ + BYTE byRes[64]; +}NET_DVR_BLOCKLIST_GROUP_COND, *LPNET_DVR_BLOCKLIST_GROUP_COND; + + + +typedef struct tagNET_DVR_SENSOR_VALUE +{ + float fMinValue; //Сֵȷ0.001Ϊ0xfffffffffʾѯ + float fMaxValue; //ֵȷ0.001Ϊ0xfffffffffʾѯ + BYTE byRes[8]; +}NET_DVR_SENSOR_VALUE, *LPNET_DVR_SENSOR_VALUE; + +typedef struct tagNET_DVR_HISTORICAL_QUERY_PARAM //ʷݲѯӽṹ +{ + NET_DVR_TIME_V30 struStartTime;//ʼʱ + NET_DVR_TIME_V30 struEndTime;//ʱ + NET_DVR_SENSOR_VALUE struVoltageValue; //ѹ; λ + NET_DVR_SENSOR_VALUE struCurrentValue; //; λ + NET_DVR_SENSOR_VALUE struTemperatureValue;//¶Ȳλ϶ + NET_DVR_SENSOR_VALUE struHumidityValue;//ʪȲ + BYTE bySwitchStatus;//ͨ״̬ 0~δͨ磬1~ͨ磬0xffѯ + BYTE bySensorStatus; //״̬ 0-1-쳣2-0xffѯ + BYTE byRes[66]; +}NET_DVR_HISTORICAL_QUERY_PARAM, *LPNET_DVR_HISTORICAL_QUERY_PARAM; + +typedef struct tagNET_DVR_SENSOR_COND //ṹ +{ + DWORD dwSize; + BYTE byQueryType; //ѯʽ0~ʵʱݲѯ1~ʷݲѯ + BYTE byDeviceType; //豸;0~δ֪,1~ģ, 2~ϵ,3~ϵ0xffʾѯ + BYTE byDeviceID; //豸IDAnalog(ģ)Χ1-8Terminal(ϵ)Χ1-4Socket(ϵ)Χ1-20xffʾѯ + BYTE byRes1; + // INTER_HISTORICAL_QUERY_PARAMӽṹbyQueryTypeΪ1ʱЧ + NET_DVR_HISTORICAL_QUERY_PARAM struHistoricalQueryParam; //ʷݲѯ + BYTE byRes[64]; +}NET_DVR_SENSOR_COND,*LPNET_DVR_SENSOR_COND; + +typedef struct tagNET_DVR_SENSOR_CFG//ýṹ +{ + DWORD dwSize; + BYTE byEnable; //ǰѯĴǷʹܣ0-ʹܣ1-ʹܣ + BYTE byDeviceType; //豸;0~δ֪,1~ģ, 2~ϵ,3~ϵ + BYTE byDeviceID; //豸IDAnalog(ģ)Χ1-8Terminal(ϵ)Χ1-4Socket(ϵ)Χ1-2 + BYTE byRes1; + NET_DVR_TIME_V30 struTime;//ʱ + BYTE byIsFirst; //Ƿһ(Ƿ)0-, 1-ǣ + BYTE byIsSwitchOn; //Ƿͨ磬0-, 1-ǣ + BYTE bySensorStatus; //״̬ 0-1-쳣2- + BYTE bySensorType; //ͣ SENSOR_TYPE + float fVoltage; //ѹλأȷ0.001Ϊ0xffʾЧֵ + float fCurrent; //λȷ0.001Ϊ0xffʾЧֵ + float fTemperatureValue;//¶ֵλ϶ȣȷ0.001Ϊ0xffʾЧֵ + float fHumidityValue;//ʪֵȷ0.001Ϊ0xffʾЧֵ + BYTE bySensorName[SENSORNAME_LEN/*32*/]; // + BYTE byDescription[MAX_SENSORDESCR_LEN/*64*/]; //ݵϢstatusTypeΪʱdescriptionΪ + float fActualValue; //ģźתֵȷ0.0001 + BYTE byUnit[SENSORUNIT_LEN/*32*/]; //λַ + BYTE byRes[220]; +}NET_DVR_SENSOR_CFG,*LPNET_DVR_SENSOR_CFG; + +typedef struct tagNET_DVR_SENSOR_SWITCH_COND +{ + DWORD dwSize;//ṹС + BYTE byDeviceType; //豸;0~δ֪, 1~ϵTerminal,2~ϵSocket + BYTE byDeviceID; //豸IDTerminal(ϵ)Χ1-4Socket(ϵ)Χ1-2 + BYTE bySwitch; //أ0-ϵ, 1-ϵ磬2- + BYTE byRes[125]; +}NET_DVR_SENSOR_SWITCH_COND,*LPNET_DVR_SENSOR_SWITCH_COND; + +typedef struct tagNET_DVR_GB28181_SERVICE_CFG +{ + DWORD dwSize; //ṹС + BYTE byServerID[DEV_ID_LEN]; //SIPID + WORD wPort; //SIP˿ں + BYTE byRes1[2]; // + BYTE byAuthPasswd[PASSWD_LEN]; + DWORD dwRegisterValid; //ڣλ룬Ĭϣ3600 + BYTE byMaxHeartbeatTimeOut; //ʱĬϣ3 + BYTE byAutoAddIpc; //ǷԶipc,0-ã1- + BYTE byAuthPasswdEx[MAX_PASSWD_LEN_EX]; //չΪ64λʱbyAuthPasswdExΪǿգ˲ЧbyAuthPasswdЧȡʱbyAuthPasswdExbyAuthPasswd + BYTE byRes[190]; // +}NET_DVR_GB28181_SERVICE_CFG,*LPNET_DVR_GB28181_SERVICE_CFG; +typedef struct tagNET_DVR_ACTIVATECFG +{ + DWORD dwSize; //ṹС + BYTE sPassword[PASSWD_LEN]; //ʼ + BYTE byLoginMode; //0-Private 1-ISAPI + BYTE byHttps; //0-ʹhttps1-ʹhttps + BYTE byRes[106]; +}NET_DVR_ACTIVATECFG,*LPNET_DVR_ACTIVATECFG; + +typedef struct tagNET_DVR_IPDEVICE_ACTIVATE_CFG +{ + DWORD dwSize; //ṹС + BYTE byMode; //0-ͨ1-ַ + BYTE bySelfDefinePassword;//ǷԶ,0-,1-,2-,ΪIPCԶ + BYTE sPassword[PASSWD_LEN];//Զ + BYTE sUserName[NAME_LEN];//û + BYTE byRes[78]; + union + { + BYTE byLen[512];//unionС + struct + { + DWORD dwChannelNo;//ͨ + BYTE byRes[508]; + }struChannelInfo;//ͨϢ + struct + { + NET_DVR_IPADDR struIp;//IPַ + WORD wPort;//˿ں + BYTE sProtocolDesc[DESC_LEN];//Э + BYTE byMacAddr[MACADDR_LEN];//macַ + BYTE byRes[344]; + }struAddrInfo;//IPַNET_DVR_SADPINFO + }unActivateDeviceInfo;//ʹṹͨbyModeֶαʾǰͨǰַ +}NET_DVR_IPDEVICE_ACTIVATE_CFG,*LPNET_DVR_IPDEVICE_ACTIVATE_CFG; + +typedef struct tagNET_DVR_DIGITAL_CHANNEL_SECURITY_STATUS_ +{ + DWORD dwSize; + BYTE byDigitalChanPasswordStatus[MAX_CHANNUM_V30*4];//0-,1-IPCδ2-룬3-ǿ4-ǿУ5-ǿǿ;byDigitalChanPasswordStatus[0]ʾһͨ + BYTE byRes[1140]; +}NET_DVR_DIGITAL_CHANNEL_SECURITY_STATUS, *LPNET_DVR_DIGITAL_CHANNEL_SECURITY_STATUS; + +typedef struct tagNET_DVR_CAMERACHAN_SERIALCFG +{ + DWORD dwSize; + DWORD dwBaudRate; //(bps)0-501-752-1103-1504-3005-6006-12007-24008-48009-960010-1920011-3840012-5760013-7680014-115.2k + BYTE byDataBit; //мλ0-5λ1-6λ2-7λ3-8λ + BYTE byStopBit; //ֹͣλ0-1λ1-2λ + BYTE byParity; //ǷУ飺0-У飬1-У飬2-żУ + BYTE byFlowcontrol;// Ƿأ0-ޣ1-,2-Ӳ + WORD wPTZProtocol; //Эֵͣ + BYTE byRes1[6]; + DWORD dwSerialPort; //ں,λΪ0ʾǰ崮ڣλΪ1ʾ崮 + BYTE bySerialAddress; //ڵַ0~255 + BYTE byRes[15]; +}NET_DVR_CAMERACHAN_SERIALCFG, *LPNET_DVR_CAMERACHAN_SERIALCFG; + +#define MAX_MATRIX_SUBBOARD_NUM 16 //ۺƽ̨Ӱ +#define MAX_MATRIX_SUBBOARD_NUM_V51 32 //ۺƽ̨Ӱ +#define MAX_BOARD_SUBSYSTEM_NUM 12 //ÿӰϵͳ +typedef struct tagNET_DVR_SUBSYSTEM_STATUS +{ + /*ϵͳͣ1-ϵͳ2-ϵͳ3-ϵͳ4-ϵͳ5-ϵͳ6-ϵͳ7-ϵͳ8-Fpgaϵͳ9-Fpgaϵͳ10-תϵͳ + 11-X86ϵͳ12-ϵͳ13-X86ķ壬 14- X86ҵ 15-ƴϵͳ16-˽ϵͳ17-X86ƴϵͳ18-ͨƴϵͳ19-Ƶϵͳ0-NULL*/ + BYTE bySubSystemType; + BYTE bySubSystemNo; //ϵͳţӰϵı + BYTE byOnlineStatus; //״̬ 1- 2- + BYTE byRes[49]; +}NET_DVR_SUBSYSTEM_STATUS, *LPNET_DVR_SUBSYSTEM_STATUS; + + +typedef struct tagNET_DVR_MATRIX_SUBBOARD +{ + BYTE byBoardNo; //Ӱ + BYTE byPcieConnectStatus; //pcie״̬ 1- 2-Ͽ + BYTE byRes[2]; + DWORD dwHardwareVersion; //ӰӲ汾 + DWORD dwPcieBandwidth; //pcie Link + DWORD dwTemperature; //Ӱ¶ λ϶ + NET_DVR_SUBSYSTEM_STATUS struSubsystemStatus[MAX_BOARD_SUBSYSTEM_NUM]; //ϵͳ״̬ + BYTE byRes2[16]; +}NET_DVR_MATRIX_SUBBOARD, *LPNET_DVR_MATRIX_SUBBOARD; +typedef struct tagNET_DVR_MATRIX_STATUS +{ + DWORD dwSize; + BYTE byMainFrameType; // 1-18U(V1.0) 2-18U 3-14U 4-11U 5-8U 6-7U 7-5U + BYTE bySoltNum; //λ + BYTE byBoardNum; //Ӱ + BYTE byRes; + NET_DVR_MATRIX_SUBBOARD struMatrixSubboard[MAX_MATRIX_SUBBOARD_NUM]; + BYTE byRes2[48]; +}NET_DVR_MATRIX_STATUS, *LPNET_DVR_MATRIX_STATUS; + + +typedef struct tagNET_DVR_MATRIX_SUBBOARD_V50 +{ + BYTE byBoardNo; //Ӱ + BYTE byPcieConnectStatus; //pcie״̬ 1- 2-Ͽ + BYTE byRes; + BYTE byTemperatureAlarm; //¶ȱ0-ֶЧ1-¶2-¶ȳޱ3-¶ȳޱ + DWORD dwHardwareVersion; //ӰӲ汾 + DWORD dwPcieBandwidth; //pcie Link + DWORD dwTemperature; //Ӱ¶ λ϶ + NET_DVR_SUBSYSTEM_STATUS struSubsystemStatus[MAX_BOARD_SUBSYSTEM_NUM]; //ϵͳ״̬ + BYTE bySubboardModel[32]; //Ӱͺ + BYTE byRes1[32]; +}NET_DVR_MATRIX_SUBBOARD_V50, *LPNET_DVR_MATRIX_SUBBOARD_V50; + +typedef struct tagNET_DVR_MATRIX_STATUS_V50 +{ + DWORD dwSize; + BYTE byMainFrameType; // 1-18U(V1.0) 2-18U 3-14U 4-11U 5-8U 6-7U 7-5U + BYTE bySoltNum; //λ + BYTE byBoardNum; //Ӱ + BYTE byLCDPanelStatus; //Һ״̬1-2-쳣 + NET_DVR_MATRIX_SUBBOARD_V50 struMatrixSubboard[MAX_MATRIX_SUBBOARD_NUM]; + DWORD dwFanSequence; //ȱţλʾλʹã0xffffff04ʾΪ1ķȣӦȱλʱdwFanConnectStatusdwFanOperationStatusĶӦλЧΪ޴˱ŵķ + DWORD dwFanConnectStatus; //״̬λʾλʹã0xffffff00ʾΪ1ķ0xffffff04ʾΪ1ķ쳣 + DWORD dwFanOperationStatus; //״̬λʾλʹã0xffffff00ʾΪ1ķ״̬0xffffff04ʾΪ1ķ쳣 + BYTE byDeviceModel[32]; //豸ͺ + BYTE byPowerNums; //Դ + BYTE byMainBoardNums; // + BYTE byHotStandbyMode; // byMainBoardNumsΪ2ʱ0-M1λ1-M2λ + BYTE byRes[29]; +}NET_DVR_MATRIX_STATUS_V50, *LPNET_DVR_MATRIX_STATUS_V50; + +typedef struct tagNET_DVR_MATRIX_SUBBOARD_V51 +{ + BYTE byBoardNo; //Ӱ + BYTE byPcieConnectStatus; //pcie״̬1-ӣ2-Ͽ + BYTE byRes1; + BYTE byTemperatureAlarm; //¶ȱ0-ֶЧ1-¶2-¶ȳޱ3-¶ȳޱ + DWORD dwHardwareVersion; //ӰӲ汾 + DWORD dwPcieBandwidth; //pcie Link + DWORD dwTemperature; //Ӱ¶ȣλ϶ + NET_DVR_SUBSYSTEM_STATUS struSubsystemStatus[MAX_BOARD_SUBSYSTEM_NUM]; //ϵͳ״̬ + BYTE bySubboardModel[32]; //Ӱͺ + BYTE byRes2[128]; +}NET_DVR_MATRIX_SUBBOARD_V51, *LPNET_DVR_MATRIX_SUBBOARD_V51; + +typedef struct tagNET_DVR_MATRIX_STATUS_V51 +{ + DWORD dwSize; + BYTE byMainFrameType; // 1-18U䣨V1.02-18U䣬3-14U䣬4-11U䣬5-8U䣬6-7U + BYTE bySoltNum; //λ + BYTE byBoardNum; //Ӱ + BYTE byLCDPanelStatus; //Һ״̬1-2-쳣 + NET_DVR_MATRIX_SUBBOARD_V51 struMatrixSubboard[MAX_MATRIX_SUBBOARD_NUM_V51]; + DWORD dwFanSequence; //ȱţλʾ0x00000001ʾ豸ֻһȣΪ10x00000101ʾ豸ȣŷֱΪ19ӦȱűλʱdwFanConnectStatusdwFanOperationStatusĶӦλЧΪ޴˱ŵķ + DWORD dwFanConnectStatus; //״̬λʾ0x00000001ʾΪ1ķ״̬쳣0x00000101ʾΪ19ķ״̬쳣 + DWORD dwFanOperationStatus; //״̬λʾ0x00000001ʾΪ1ķ״̬쳣0x00000101ʾΪ19ķ״̬쳣 + BYTE byDeviceModel[32]; //豸ͺ + BYTE byFanSpeed[32]; //ת٣ֽڱʾbyFanSpeed[0]ʾΪ1ķȵת٣תٵȼΧΪ[1,3] + BYTE byMainMemUsed; //ڴʹʣλٷֱ + BYTE byMainCpuUsed; //CPUʹʣλٷֱ + BYTE byNetwordUsed; //ʹʣλٷֱ + BYTE byRes1; + DWORD dwMainSoftwareVer; //汾 + BYTE byPowerNums; //Դ + BYTE byMainBoardNums; // + BYTE byHotStandbyMode; // byMainBoardNumsΪ2ʱ0-M1λ1-M2λ + BYTE byRes2[125]; +}NET_DVR_MATRIX_STATUS_V51, *LPNET_DVR_MATRIX_STATUS_V51; + +typedef struct _NET_DVR_SUBWIND_INFO +{ + DWORD dwSize; + DWORD dwSubWndNo; //Ӵں + BYTE byRes[8]; +} NET_DVR_SUBWIND_INFO, *LPNET_DVR_SUBWIND_INFO; + + +typedef struct tagNET_DVR_FUSION_SCALE +{ + DWORD dwSize; + WORD wWidth; //ͼںϿ(ͼĿ) + WORD wHeight; //ͼںϸ(ͼĿ) + BYTE byRes[32]; +}NET_DVR_FUSION_SCALE, *LPNET_DVR_FUSION_SCALE; + +typedef struct tagNET_DVR_FUSION_CFG +{ + DWORD dwSize; + BYTE byFusion; //Ƿںϣ0-δںϻȡںϣ0-ں + BYTE byUseHistoryMap; //Ƿʹʷںӳ0-ʹã0-ʹ + BYTE byRes[30]; +}NET_DVR_FUSION_CFG, *LPNET_DVR_FUSION_CFG; + +typedef struct tagNET_DVR_MULTIFUNCTION_SERIALCFG +{ + DWORD dwSize ; + BYTE byVariable ; //Ƿɱ䣬1-ɱ 2-ɱ ֻȡ + BYTE bySerialWorkMode; //ģʽ1-RS485, 2-RS232ֻڿɱ£޸Ĺģʽ + BYTE byFunType; //ڹܣ 1-̿ƣ2-Ļƣ3-͸ͨģʽ 4-PTZ 5- 6-̨ + BYTE byDataBit;// λ 05λ16λ27λ38λ; + BYTE byStopBit;// ֹͣλ 01λ12λ; + BYTE byParity;// У 0У飬1У飬2żУ; + BYTE byFlowcontrol;// 0ޣ1,2-Ӳ + BYTE byRes1 ; + DWORD dwBaudRate;//0501752110315043005600612007240084800996001019200 11384001257600137680014115.2k; + WORD wProtocol; //Э ͬڹܶӦЭ鲻һ + BYTE byRes[34]; +}NET_DVR_MULTIFUNCTION_SERIALCFG, *LPNET_DVR_MULTIFUNCTION_SERIALCFG; + +typedef struct tagNET_DVR_PTZ_3D_SPEED_CONTROL +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byPSpeed; // Xٶ ȡֵ164 + BYTE byTSpeed; // Yٶ ȡֵ164 + BYTE byZSpeed; // Zٶ + BYTE byPDirect; // P 1- 2- + BYTE byTDirect; // T 1-ϣ 2- + BYTE byZDirect; //Z 1-ZOOM+, 2-ZOOM- + BYTE byRes[18]; //ֽ +}NET_DVR_PTZ_3D_SPEED_CONTROL, *LPNET_DVR_PTZ_3D_SPEED_CONTROL; + +//SensorϢ +typedef struct tagNET_DVR_SENSOR_PARAM +{ + BYTE bySensorType;//SensorType:0-CCD,1-CMOS + BYTE byRes[31]; + float fHorWidth;//ˮƽ ȷСλ *10000 + float fVerWidth;//ֱ ȷСλ *10000 + float fFold;//zoom=1ûʱĽ ȷСλ *100 +}NET_DVR_SENSOR_PARAM,*LPNET_DVR_SENSOR_PARAM; + +//תϢ +typedef struct tagNET_DVR_TURN_DIRECTION_PARAM +{ + BYTE byLine;//ת߱ + BYTE byStatus;//ת״̬0-δ֪1-룬2-뿪 + BYTE byRes[38]; +}NET_DVR_TURN_DIRECTION_PARAM, *LPNET_DVR_TURN_DIRECTION_PARAM; +//ֹͣϢ +typedef struct tagNET_DVR_STOP_LINE_PARAM +{ + BYTE byStatus;//ֹͣ״̬0-δ֪1-룬2-뿪 + BYTE byRes[39]; +}NET_DVR_STOP_LINE_PARAM, *LPNET_DVR_STOP_LINE_PARAM; + +//TPSϢ +typedef struct tagNET_DVR_TPS_ADDINFO +{ + NET_DVR_LLPOS_PARAM struFirstLLPos;//һľγλϢ(byLaneState=3byQueueLen>0ʱŷ) + NET_DVR_LLPOS_PARAM struLastLLPos;//һľγλϢ(byLaneState=3byQueueLen>0ʱŷ) + char sLicense[MAX_LICENSE_LEN/*16*/];//ƺ + NET_DVR_TURN_DIRECTION_PARAM struTurnDirection;//תϢ + NET_DVR_STOP_LINE_PARAM struStopLine;//ֹͣϢ + BYTE byRes[884]; +}NET_DVR_TPS_ADDINFO, *LPNET_DVR_TPS_ADDINFO; + +//Ϣ +typedef struct tagNET_DVR_VEHICLE_ADDINFO +{ + NET_DVR_LLPOS_PARAM struLLPos;//ǰγλϢ + char sVehicleNo[LEN_64]; /*ϴijΨһʶ,󳤶Ϊ64*/ + BYTE byVehicleMonitorTaskID[64];//ܲID,64λַ,ʱϲ·豸,ϲȷIDΨһ + BYTE byUUID[LEN_64]; //ͨΨһʶ,64λַ,豸ȷΨһԣڿͬһץ,vehicleMonitormanualVehicleMonitordailyVehicleMonitorеlinkageANPRUUIDй + BYTE byRes[832]; +}NET_DVR_VEHICLE_ADDINFO, *LPNET_DVR_VEHICLE_ADDINFO; + +// +typedef struct tagNET_DVR_SMOKEDETECTION_ALARM +{ + NET_PTZ_INFO struPTZPos;//ɼ豸PTZFλ + NET_PTZ_INFO struThermalPTZPos;//ȳ豸PTZFλ + NET_DVR_LLPOS_PARAM struLLPos;//豸γλ + NET_VCA_RECT struSmokePos;//λ + BYTE byRes[256]; +}NET_DVR_SMOKEDETECTION_ALARM, *LPNET_DVR_SMOKEDETECTION_ALARM; + +//λϢ +typedef struct +{ + float fPanPos;//ˮƽȷС1λ + float fTiltPos;//ֱȷС1λ + float fZoomPos;//䱶ȷС1λ + BYTE byRes[16] ; +}NET_DVR_PTZPOS_PARAM, *LPNET_DVR_PTZPOS_PARAM; + +//GISϢϴ +typedef struct tagNET_DVR_GIS_UPLOADINFO +{ + DWORD dwSize;//ṹС + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + NET_VCA_DEV_INFO struDevInfo;//ǰ豸 + float fAzimuth;//̵ķλϢλ[0.00,360.00) + BYTE byLatitudeType ;//γͣ0-γ1-γ + BYTE byLongitudeType ;// ͣ0-ȣ1- + BYTE byRes1[2] ; + NET_DVR_LLI_PARAM struLatitude; /*γ*/ + NET_DVR_LLI_PARAM struLongitude; /**/ + float fHorizontalValue;//ˮƽӳǣȷСλ + float fVerticalValue;//ֱӳǣȷСλ + float fVisibleRadius;//ǰӰ뾶ȷСλ + float fMaxViewRadius;//Ӱ뾶ȷС0λԤ + NET_DVR_SENSOR_PARAM struSensorParam;//SensorϢ + NET_DVR_PTZPOS_PARAM struPtzPos; //ptz + BYTE byRes[256]; +}NET_DVR_GIS_UPLOADINFO,*LPNET_DVR_GIS_UPLOADINFO; + +//ƻϢϴ +typedef struct tagNET_DVR_VANDALPROOF_ALARM +{ + DWORD dwSize;//ṹС + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + NET_VCA_DEV_INFO struDevInfo;//ǰ豸 + BYTE byRes[256]; +}NET_DVR_VANDALPROOF_ALARM,*LPNET_DVR_VANDALPROOF_ALARM; + +//в +typedef struct tagNET_DVR_CENTRALIZEDCTRL_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnable;//0-1-ʼ + BYTE byLatitudeType ;//γͣ0-γ1-γ + BYTE byLongitudeType ;// ͣ0-1- + BYTE byRes1; + NET_DVR_LLI_PARAM struLatitude; /*γ*/ + NET_DVR_LLI_PARAM struLongitude; /**/ + DWORD dwTimeOut;//ʱʱ [60s, 6*60*60s] + BYTE byControlType;//вʽ 0-ǿƲ1-ǿƲ + BYTE byRes[127]; +}NET_DVR_CENTRALIZEDCTRL_CFG,*LPNET_DVR_CENTRALIZEDCTRL_CFG; + +//GISϢ +typedef struct tagNET_DVR_GIS_INFO +{ + DWORD dwSize;//ṹС + float fAzimuth;//̵ķλϢλ[0.00,360.00) + float fHorizontalValue;//ˮƽӳǣȷСλ + float fVerticalValue;//ֱӳǣȷСλ + float fVisibleRadius;//ǰӰ뾶ȷСλ + float fMaxViewRadius;//Ӱ뾶ȷС0λԤ + BYTE byLatitudeType ;//γͣ0-γ1-γ + BYTE byLongitudeType ;// ͣ0-1- + BYTE byPTZPosExEnable;//ǷPTZչ0~ãPTZֵstruPtzPos Ϊ׼1~ãPTZֵstruPtzPosExΪ׼ + BYTE byRes1; + NET_DVR_LLI_PARAM struLatitude; /*γ*/ + NET_DVR_LLI_PARAM struLongitude; /**/ + NET_DVR_PTZPOS_PARAM struPtzPos; //ptz + NET_DVR_SENSOR_PARAM struSensorParam;//SensorϢ + NET_PTZ_INFO struPtzPosEx;// ptzչ(ָ֧߾PTZֵȷСλ) + float fMinHorizontalValue;//СˮƽӳǣȷСλ0.0-360.00 + float fMaxHorizontalValue;//ˮƽӳǣȷСλ0.0-360.00 + float fMinVerticalValue;//СֱӳǣȷСλ0.0-360.00 + float fMaxVerticalValue;//ֱӳǣȷСλ0.0-360.00 + BYTE byRes[220]; +}NET_DVR_GIS_INFO,*LPNET_DVR_GIS_INFO; + +//豸Ѳģʽ +typedef struct tagNET_DVR_CRUISE_PARAM +{ + DWORD dwSize;//ṹС + BYTE byCruiseMode;// Ѳģʽ0~1~Ԥõ + BYTE byRes[123]; +}NET_DVR_CRUISE_PARAM, *LPNET_DVR_CRUISE_PARAM; + +//ȡ豸ʪϢṹ +typedef struct tagNET_DVR_TEMP_HUMI_INFO +{ + DWORD dwSize; + NET_DVR_TIME_V30 struCurrentTime; // ǰʱ + float fTemperature;//豸¶ȣȷСλ-273 C 1000϶ȣ + float fHumidity;// 豸ʪȣȷСλλΪ% + BYTE byRes[256]; +}NET_DVR_TEMP_HUMI_INFO, *LPNET_DVR_TEMP_HUMI_INFO; + +typedef struct tagNET_SDK_POINT_THERMOMETRY +{ + float fPointTemperature;/*µǰ¶, 궨Ϊ0-ʱЧȷСһλ(-40-1000),+100*10 */ + NET_VCA_POINT struPoint;//꣨궨Ϊ㡱ʱЧ + BYTE byRes[20]; +}NET_SDK_POINT_THERMOMETRY, *LPNET_SDK_POINT_THERMOMETRY; + + +typedef struct tagNET_SDK_REGION_THERMOMETRY +{ + float fMaxTemperature;//¶,ȷСһλ(-40-1000),+100*10 */ + float fMinTemperature;//¶,ȷСһλ(-40-1000),+100*10 */ + float fAverageTemperature;//ƽ¶,ȷСһλ(-40-1000),+100*10 */ + float fTemperatureDiff;//²,ȷСһλ(-40-1000),+100*10 */ + NET_VCA_POLYGON struRegion;//ߣ궨Ϊ򡱻ߡߡʱЧ + BYTE byRes[20]; +}NET_SDK_REGION_THERMOMETRY, *LPNET_SDK_REGION_THERMOMETRY; + +typedef struct tagNET_SDK_MANUALTHERM_RULE +{ + BYTE byRuleID;//ID 0-ʾЧ1ʼ listڲжЧԣ + BYTE byEnable;//Ƿ + BYTE byRes1[2]; + char szRuleName[NAME_LEN/*32*/];// + BYTE byRuleCalibType;//궨 0-㣬1-2- + BYTE byRes2[3]; + NET_SDK_POINT_THERMOMETRY struPointTherm;//£궨Ϊ0-ʱЧ + NET_SDK_REGION_THERMOMETRY struRegionTherm; //£궨Ϊ1-2-ʱЧ + BYTE byRes[512]; +}NET_SDK_MANUALTHERM_RULE, *LPNET_SDK_MANUALTHERM_RULE; + +typedef struct tagNET_SDK_MANUAL_THERMOMETRY +{ + DWORD dwSize;//ṹС + DWORD dwChannel;//ͨ + DWORD dwRelativeTime; // ʱֻ꣨ + DWORD dwAbsTime; // ʱֻ꣨ + BYTE byThermometryUnit;//µλ: 0-϶ȣ棩1-϶ȣH2-(K) + BYTE byDataType;//״̬:0-У1-ʼ2-ֻ + BYTE byRes1[6]; + NET_SDK_MANUALTHERM_RULE struRuleInfo; + BYTE byRes[512]; +}NET_SDK_MANUAL_THERMOMETRY, *LPNET_SDK_MANUAL_THERMOMETRY; + +typedef struct tagNET_SDK_MANUALTHERM_BASICPARAM +{ + DWORD dwSize; + WORD wDistance;//(m)[0, 10000] + BYTE byDistanceUnit;//뵥λ: 0-ףm1-Ӣߣfeet,2-(centimeter) + BYTE byRes1[1]; // + float fEmissivity;//( ȷСλ)[0.01, 1.00](ı) + BYTE byRes[64]; // +}NET_SDK_MANUALTHERM_BASICPARAM, *LPNET_SDK_MANUALTHERM_BASICPARAM; + +typedef struct tagNET_SDK_FIRESHIELDMASK_REGION +{ + DWORD dwSize; + BYTE byMaskID;//ID1~24 + BYTE byEnabled;// ʹܣ0~ã1~ + BYTE byShieldZoom;//αʣ0~32δڵڸֵĹѧ䱶 + BYTE byMaskType;//ɫͣ0-ɫ1-ɫ2-ɫ3-ɫ4-ɫ5-ɫ6-͸7-͸8- + BYTE byRegionType;//ͣԤ0-ı + BYTE byShowEnabled; //ʾʹܣòΪֻʹΪfalseϲ㲻ʾϢTrueΪʾϢ + BYTE byRes1[2]; // + char szMaskName[NAME_LEN/*32*/];//α + NET_VCA_POLYGON struRegion;// + BYTE byRes[32]; // +}NET_SDK_FIRESHIELDMASK_REGION, *LPNET_SDK_FIRESHIELDMASK_REGION; + +#define MAX_FIRESHIELDMASK_REGION 24 +typedef struct tagNET_SDK_FIRESHIELDMASK_CFG +{ + DWORD dwSize; + BYTE byEnabled;// ʹܣ0~ã1~ + BYTE byShieldAreaTransparency;//͸ 0-͸ 1-͸ 2-͸ + BYTE byDisplayShieldAreaEnabled;//ʹ + BYTE byRes1[1]; // + NET_SDK_FIRESHIELDMASK_REGION struMaskRegion[MAX_FIRESHIELDMASK_REGION/*24*/];// + BYTE byRes[256]; // +}NET_SDK_FIRESHIELDMASK_CFG, *LPNET_SDK_FIRESHIELDMASK_CFG; + +typedef struct tagNET_SDK_SMOKESHIELDMASK_REGION +{ + DWORD dwSize; + BYTE byMaskID;//ID1~24 + BYTE byEnabled;// ʹܣ0~ã1~ + BYTE byShieldZoom;//αʣ0~32δڵڸֵĹѧ䱶 + BYTE byMaskType;//ɫͣ0-ɫ1-ɫ2-ɫ3-ɫ4-ɫ5-ɫ6-͸7-͸8- + BYTE byRegionType;//ͣԤ0-ı + BYTE byShowEnabled;// ʾʹܣòΪֻʹΪfalseϲ㲻ʾϢTrueΪʾϢ + BYTE byRes1[2]; // + char szMaskName[NAME_LEN/*32*/];//α + NET_VCA_POLYGON struRegion;// + BYTE byRes[32]; // +}NET_SDK_SMOKESHIELDMASK_REGION, *LPNET_SDK_SMOKESHIELDMASK_REGION; + +#define MAX_SMOKESHIELDMASK_REGION 24 +typedef struct tagNET_SDK_SMOKESHIELDMASK_CFG +{ + DWORD dwSize; + BYTE byEnabled;// ʹܣ0~ã1~ + BYTE byShieldAreaTransparency;//͸ 0-͸ 1-͸ 2-͸ + BYTE byDisplayShieldAreaEnabled;//ʹ + BYTE byRes1[1]; // + NET_SDK_SMOKESHIELDMASK_REGION struMaskRegion[MAX_SMOKESHIELDMASK_REGION/*24*/];// + BYTE byRes[256]; // +}NET_SDK_SMOKESHIELDMASK_CFG, *LPNET_SDK_SMOKESHIELDMASK_CFG; + +typedef struct tagNET_SDK_AREASCAN_CFG +{ + DWORD dwSize; + BYTE byScanState;//ɨ赱ǰ״̬0Ϊδã1ΪãòΪֻ + BYTE byRes[259]; // +}NET_SDK_AREASCAN_CFG, *LPNET_SDK_AREASCAN_CFG; + +typedef struct tagNET_SDK_FIRESHIELDMASK_COND +{ + DWORD dwSize; + DWORD dwChannel;//ͨ + BYTE byRegionID;//ID1~24. + BYTE byRes[127]; // +}NET_SDK_FIRESHIELDMASK_COND, *LPNET_SDK_FIRESHIELDMASK_COND; + +typedef struct tagNET_SDK_SMOKESHIELDMASK_COND +{ + DWORD dwSize; + DWORD dwChannel;//ͨ + BYTE byRegionID;//ID1~24. + BYTE byRes[127]; // +}NET_SDK_SMOKESHIELDMASK_COND, *LPNET_SDK_SMOKESHIELDMASK_COND; + +//̹ƻ +typedef struct tagNET_DVR_VANDALPROOFALARM_CFG +{ + DWORD dwSize;//ṹС + BYTE bySensitivity;//[1,100] (֧ãֵԽ״ֵԽСԽѴ) + BYTE byUploadEnabled;//÷ƻϴʹ 0-ã1- + BYTE byVoiceWarningEnabled;//÷ƻʾʹ 0-ã1- + BYTE byEnable;// üƻ 0-رգ1-ʼ + BYTE byRes[124]; +}NET_DVR_VANDALPROOFALARM_CFG,*LPNET_DVR_VANDALPROOFALARM_CFG; + +typedef struct tagNET_DVR_AZIMUTHINFO +{ + DWORD dwSize;//ṹС + float fDegree;//λǶ(ȷСλ) + BYTE byAzimuth; //λϢ 0-,1-,2-,3-,4-,5-,6-,7- + BYTE byRes[127]; +}NET_DVR_AZIMUTHINFO,*LPNET_DVR_AZIMUTHINFO; + +//ָ̽ṹ +typedef struct tagNET_DVR_COMPASS_COND +{ + DWORD dwSize;//ṹС + DWORD dwChannel;//ͨ + BYTE byRes[128]; +}NET_DVR_COMPASS_COND,*LPNET_DVR_COMPASS_COND; + +typedef struct tagNET_DVR_POSITION_CFG +{ + DWORD dwSize;//ṹС + BYTE bySoftWorkMode;//ģʽ 0-Զ1-ֶ + BYTE byRes[127]; +}NET_DVR_POSITION_CFG,*LPNET_DVR_POSITION_CFG; + +typedef struct tagNET_DVR_STREAMING_COND +{ + DWORD dwSize;//ṹС + DWORD dwChannel;//ͨ + BYTE byStreamType;//0-1-2-3 + BYTE byRes[127]; +}NET_DVR_STREAMING_COND,*LPNET_DVR_STREAMING_COND; + +//Ƕλ +typedef struct tagNET_DVR_SATELLITETIME_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnable;//ǶλУʱʹ 0-1- + BYTE byRes; + WORD wTimeInterval;//Уʱʱ(s) + BYTE byRes1[124]; +}NET_DVR_SATELLITETIME_CFG,*LPNET_DVR_SATELLITETIME_CFG; + +#define MAX_SIGNAL_JOINT_NUM 64 //ƴӹģ +typedef struct tagNET_DVR_SIGNAL_JOINT_CFG +{ + DWORD dwSize; + BYTE sCamName[NAME_LEN] ; //ƴӺźԴ + BYTE byEnable; //ʹܣ0-ʹ !0-ʹ + BYTE byCamMode ; //ƴӺźԴͣNET_DVR_CAM_JOINT + BYTE byRows ; //ƴ + BYTE byColumns ; //ƴ + DWORD dwSignalNo[MAX_SIGNAL_JOINT_NUM]; //źԴ,ǰbyRows* byColumnsЧ + DWORD dwJointNo; //ƴӱţȡЧ + DWORD dwSignalNoJoint; //ƴӺźԴţȡЧ + BYTE byRes[64]; +} NET_DVR_SIGNAL_JOINT_CFG, *LPNET_DVR_SIGNAL_JOINT_CFG; + +typedef struct tagNET_DVR_SIGNAL_CUTPARAM +{ + DWORD dwSize; + DWORD dwSignalNo; //źԴ + DWORD dwCutTop; //Ϸüֵ,0ԭ + DWORD dwCutBottom; //·üֵ,0ԭ + DWORD dwCutLeft; //߲üֵ,0ԭ + DWORD dwCutRight; //ұ߲üֵ,0ԭ + BYTE byRes2[32]; +} NET_DVR_SIGNAL_CUTPARAM, *LPNET_DVR_SIGNAL_CUTPARAM; + +typedef struct tagNET_DVR_WALL_RELATION_CFG +{ + DWORD dwSize; + BYTE byEnable; // 0- !0- + BYTE byRealWallNo ; //ǽ + BYTE byRes[14] ; +}NET_DVR_WALL_RELATION_CFG, *LPNET_DVR_WALL_RELATION_CFG; + + +typedef struct tagNET_DVR_INPUTSTREAMCFG_V40 +{ + DWORD dwSize ; + BYTE byValid ; // + BYTE byCamMode ;//NET_DVR_CAM_MODE + WORD wInputNo ; //źԴ + BYTE sCamName[NAME_LEN] ; + NET_DVR_VIDEOEFFECT struVideoEffect ;//Ƶ + NET_DVR_PU_STREAM_CFG struPuStream ; //ipʱʹ + WORD wBoardNum ; //źԴڵİ忨ţֻܻȡ + WORD wInputIdxOnBoard ; //źԴڰ忨ϵλãֻܻȡ + DWORD dwResolution ;//ֱ + BYTE byVideoFormat ;//ƵʽVIDEO_STANDARD + BYTE byStatus; //źԴ״̬0-ֶЧ 1-ź 2-ź 3-쳣 + BYTE sGroupName[NAME_LEN/*32*/]; //źԴ + BYTE byJointMatrix ; //0- 1-źԴΪNET_DVR_CAM_BNCNET_DVR_CAM_VGANET_DVR_CAM_DVINET_DVR_CAM_HDMI,еһʱòЧ + BYTE byJointNo ; //ƴźԴƴӱ(ֻܻȡ) + BYTE byColorMode; //ɫģʽ 0-Զ 1- 2-ͨ 3-ͣΪԶʱʹstruVideoEffect + BYTE byScreenServer; //Ļ0-1- + BYTE byDevNo; //豸 + BYTE byRes1; + DWORD dwInputSignalNo; //źԴţ£ + BYTE byVideoEnctype; //Ƶͣ0-Ĭϣ1-Smart264 + BYTE byAudioEnctype; //Ƶ࣬0-Ĭϣ1-AUDIO_G711_A2-AUDIO_G711_U3- AUDIO_G722_1 + BYTE byWallStatus; //źԴǽ״̬0-Ч 1-ǽ 2- ǽ + BYTE byRes[117]; +}NET_DVR_INPUTSTREAMCFG_V40, *LPNET_DVR_INPUTSTREAMCFG_V40 ; + +typedef struct tagNET_DVR_AUDIO_CONTROL_INFO +{ + DWORD dwSize; + DWORD dwMonId;//ʾȫֱ + BYTE bySubWindowNum;//ʾӦӴں + BYTE byWallNo; //ǽ + BYTE byEnable; //Ƶأ0-أ1- + BYTE byRes[13]; +}NET_DVR_AUDIO_CONTROL_INFO,*LPNET_DVR_AUDIO_CONTROL_INFO; + + + +typedef struct tagNET_DVR_INPUTSTREAM_PTZCFG_PARAM +{ + DWORD dwSize; + WORD wPTZProtocol; //Эֵͣ + BYTE byRes[34]; +}NET_DVR_INPUTSTREAM_PTZCFG_PARAM, *LPNET_DVR_INPUTSTREAM_PTZCFG_PARAM; + +//·Ͷ ա2016γ1133.xlsx +typedef enum +{ + AXLE_TYPE_UNKNOWN = 0x0000, //δ֪ + //2 + AXLE_TYPE_2AXLE_12 = 0x0200, //2ػ + //3 + AXLE_TYPE_3AXLE_122_1 = 0x0300, //3ҳг + AXLE_TYPE_3AXLE_122_2, //3½г + AXLE_TYPE_3AXLE_15, //3ػ + AXLE_TYPE_3AXLE_112, //3ػ + //4 + AXLE_TYPE_4AXLE_125_1 = 0x0400, //4ҳг + AXLE_TYPE_4AXLE_152, //4ҳг + AXLE_TYPE_4AXLE_125_2, //4½г + AXLE_TYPE_4AXLE_1222, //4ȫг + AXLE_TYPE_4AXLE_115, //4ػ + //5 + AXLE_TYPE_5AXLE_155_1 = 0x0500, //5ҳг + AXLE_TYPE_5AXLE_1125_1, //5ҳг + AXLE_TYPE_5AXLE_155_2, //5г + AXLE_TYPE_5AXLE_1125_2, //5г + AXLE_TYPE_5AXLE_129, //5г + AXLE_TYPE_5AXLE_1522, //5ȫг + AXLE_TYPE_5AXLE_11222, //5ȫг + //6 + AXLE_TYPE_6AXLE_159_1 = 0x0600, //6ҳг + AXLE_TYPE_6AXLE_159_2, //6ҳг + AXLE_TYPE_6AXLE_1155_1, //6ҳг + AXLE_TYPE_6AXLE_1155_2, //6ҳг + AXLE_TYPE_6AXLE_159_3, //6г + AXLE_TYPE_6AXLE_159_4, //6г + AXLE_TYPE_6AXLE_1129, //6г + AXLE_TYPE_6AXLE_11522_1, //6ȫҳ + AXLE_TYPE_6AXLE_11522_2, //6ȫҳ +}TRUCK_AXLE_MODEL; + +//շѹ·ͨзѳͷ +typedef enum _TOOLWAY_VEHICLE_TYPE +{ + TOOLWAY_RESULT_OTHER = 0, //δ֪ + TOOLWAY_PASSENGER_VEHICLE_CLASS_1_MINI = 1, //1ͳ΢ + TOOLWAY_PASSENGER_VEHICLE_CLASS_1_SMALL = 2, //1ͳС + TOOLWAY_PASSENGER_VEHICLE_CLASS_2_MIDDLE = 3, //2ͳ + TOOLWAY_PASSENGER_VEHICLE_CLASS_2_TRAILER = 4, //2ͳóг + TOOLWAY_PASSENGER_VEHICLE_CLASS_3_LARGR = 5, //3ͳ + TOOLWAY_PASSENGER_VEHICLE_CLASS_4_LARGR = 6, //4ͳ + TOOLWAY_GOODS_VEHICLE_CLASS_1 = 7, //12 + TOOLWAY_GOODS_VEHICLE_CLASS_2 = 8, //22 + TOOLWAY_GOODS_VEHICLE_CLASS_3 = 9, //33 + TOOLWAY_GOODS_VEHICLE_CLASS_4 = 10, //44 + TOOLWAY_GOODS_VEHICLE_CLASS_5 = 11, //55 + TOOLWAY_GOODS_VEHICLE_CLASS_6 = 12, //66 + TOOLWAY_MOTOR_VEHICLE_CLASS_1 = 13, //1ҵ2 + TOOLWAY_MOTOR_VEHICLE_CLASS_2 = 14, //2ҵ2 + TOOLWAY_MOTOR_VEHICLE_CLASS_3 = 15, //3ҵ3 + TOOLWAY_MOTOR_VEHICLE_CLASS_4 = 16, //4ҵ4 + TOOLWAY_MOTOR_VEHICLE_CLASS_5 = 17, //5ҵ5 + TOOLWAY_MOTOR_VEHICLE_CLASS_6 = 18 //6ҵڵ6 +}TOOLWAY_VEHICLE_TYPE; + +// +typedef struct tagNET_DVR_VEHICLE_WEIGHT_RESULT_ +{ + BYTE byIsOverWeight; //Ƿ + BYTE byAxleNum; // + WORD wAxleModel; //ο enum TRUCK_AXLE_MODEL,Ըͽĸ + float fOverWeight; //()ʵֵ1000䣨ʵֵȷСλ + float fWeight; //()ʵֵ1000䣨ʵֵȷСλ + float fLimitWeight; //()ʵֵ1000䣨ʵֵȷСλ + float fAxleLen; //()ʵֵ100䣨ʵֵȷСλ + char sDevDescInfo[MAX_DEVDESC_LEN/*64*/]; //豸Ϣ + WORD wAxleWeight[MAX_TRUCK_AXLE_NUM/*10*/]; //λǧˣkgiԪرʾi + WORD wAxleDistance[MAX_TRUCK_AXLE_NUM/*10*/]; //࣬λ(mm).iԪرʾi͵i+1ļ + DWORD dwLength; //λcm + DWORD dwWidth; //λcm + DWORD dwHeight; //ߣλcm + BYTE byTollwayVehicleType; //շѹ·ͣοTOOLWAY_VEHICLE_TYPE + BYTE byRes2[11]; //Ԥ +}NET_DVR_VEHICLE_WEIGHT_RESULT, *LPNET_DVR_VEHICLE_WEIGHT_RESULT; + +// Ƽ +typedef struct tagNET_DVR_PLATE_RESULT_V50 +{ + DWORD dwSize; //ṹ + DWORD dwMatchNo; //ƥ,(,,)ƥ + BYTE byGroupNum; //ͼƬһץĵһͼƬʱƥݣ + BYTE byPicNo; //ĵͼƬţյͼƬ󣬱ʾ;ճʱͼƬʱҪɾ + BYTE bySecondCam; //ǷڶץģԶץĵԶǰץĵĺĿлõ + BYTE byFeaturePicNo; //Ƶ羯ȡڼͼΪдͼ,0xff-ʾȡ + BYTE byDriveChan; // + BYTE byVehicleType; //ͣοVTR_RESULT + BYTE byDetSceneID;//ⳡ[1,4], IPCĬ0 + //ԣλʾ0- ޸(ͨ)bit1- Ʊ공(ı־)bit2- ΣƷֵ0- 1- + //ýڵѲʹ,ʹbyYellowLabelCarbyDangerousVehiclesжǷƱ공ΣƷ + BYTE byVehicleAttribute; + WORD wIllegalType; //ΥͲù궨 + BYTE byIllegalSubType[8]; //Υ + BYTE byPostPicNo; //ΥʱȡڼͼƬΪͼ,0xff-ʾȡ + BYTE byChanIndex; //ͨţ + WORD wSpeedLimit; //ޣʱЧ + BYTE byChanIndexEx; //byChanIndexEx*256+byChanIndexʾʵͨš + BYTE byVehiclePositionControl; /*λò־,0~Ϊͨʶ𱨾,1~Ϊλò + (ͨPUT /ISAPI/Traffic/channels//vehiclePositionControl?format=json)*/ + NET_DVR_PLATE_INFO struPlateInfo; //Ϣṹ + NET_DVR_VEHICLE_INFO struVehicleInfo; //Ϣ + BYTE byMonitoringSiteID[48]; //ʾ + BYTE byDeviceID[48]; //豸 + BYTE byDir; //ʾ1-У򣩣2-()3-˫4-ɶ5-,6-򶫣7-ɱϣ8- + BYTE byDetectType; //ⷽʽ,1-ظд2-Ƶ3-֡ʶ4-״ﴥ + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byCarDirectionType; //ʻķ0ʾ£1ʾϣʵʳʻ֣,2ʾδ֪ + //wIllegalTypeΪʱʹøòwIllegalTypeΪֵʱwIllegalTypeΪ׼òЧ + DWORD dwCustomIllegalType; //ΥͶ(ûԶ) + /*Ϊ0~ָʽʱΪϵΥͣwIllegalTypedwCustomIllegalTypeЧֵΥ롣 + Ϊ1~ַʽʱpIllegalInfoBufЧϵΥͣwIllegalTypedwCustomIllegalTypeȻֵΥ*/ + BYTE* pIllegalInfoBuf; //ΥַϢṹָ룻ָNET_ITS_ILLEGAL_INFO + BYTE byIllegalFromatType; //ΥϢʽͣ 0~ָʽ 1~ַʽ + BYTE byPendant;// 0-ʾδ֪,1-2- + BYTE byDataAnalysis; //0-δ, 1-ѷ + BYTE byYellowLabelCar; //0-ʾδ֪, 1-ǻƱ공,2-Ʊ공 + BYTE byDangerousVehicles; //0-ʾδ֪, 1-ΣƷ,2-ΣƷ + //ֶΰPilotַΪʻCopilotַΪʻ + BYTE byPilotSafebelt;//0-ʾδ֪,1-ϵȫ,2-ϵȫ + BYTE byCopilotSafebelt;//0-ʾδ֪,1-ϵȫ,2-ϵȫ + BYTE byPilotSunVisor;//0-ʾδ֪,1-,2- + BYTE byCopilotSunVisor;//0-ʾδ֪, 1-,2- + BYTE byPilotCall;// 0-ʾδ֪, 1-绰,2-绰 + //0-բ1-δբ (רʷƥǷբɹı־) + BYTE byBarrierGateCtrlType; + BYTE byAlarmDataType;//0-ʵʱݣ1-ʷ + NET_DVR_TIME_V30 struSnapFirstPicTime;//˵ʱ(ms)ץĵһͼƬʱ䣩 + DWORD dwIllegalTime;//Υʱ䣨ms = ץһͼƬʱ - ץĵһͼƬʱ + DWORD dwPicNum; //ͼƬpicGroupNumͬϢͼƬͼƬϢstruVehicleInfoEx + NET_ITS_PICTURE_INFO struPicInfo[6]; //ͼƬϢ,Żص6ͼ + NET_DVR_VEHICLE_WEIGHT_RESULT struWeightResult; // + BYTE byRes[256]; //Ԥ +}NET_DVR_PLATE_RESULT_V50, *LPNET_DVR_PLATE_RESULT_V50; + + +typedef struct _NET_DVR_NORMAL_SCHEDTIME_ +{ + NET_DVR_SCHEDTIME struTime; + BYTE byAlarmType;//0-1-ز2-ʱ + BYTE byRes[3]; +}NET_DVR_NORMAL_SCHEDTIME,*LPNET_DVR_NORMAL_SCHEDTIME; + +typedef struct tagNET_DVR_SUBSYSTEM_ALARM +{ + DWORD dwSize; + NET_DVR_NORMAL_SCHEDTIME struNormalSchedtime[MAX_DAYS][MAX_TIMESEGMENT_V30]; + //ճƻʱ + BYTE byNormalSchedTimeOn; //ճƻǷ + BYTE byMandatoryAlarm;//0-ǿƲ1-ǿƲ ָǷΪ· + BYTE byRes[254]; +}NET_DVR_SUBSYSTEM_ALARM,*LPNET_DVR_SUBSYSTEM_ALARM; + + +#define MAX_ALLOWLIST_PHONE_NUM 16 + +typedef struct _NET_DVR_ALARM_PHONECFG +{ + DWORD dwSize; + BYTE byEnable;//Ƿ 0-ã1- + BYTE byRes1[3]; + BYTE byPhoneNumber[MAX_PHONE_NUM/*32*/]; + DWORD dwArmRight; //Ȩޣλbit0Ϊ1ʾϵͳ1вȨޣ + DWORD dwDisArmRight; //Ȩޣλbit0Ϊ1ʾϵͳ1гȨޣ + DWORD dwClearAlarmRight; //Ȩޣλbit0Ϊ1ʾϵͳ1Ȩޣ + BYTE byZoneReport[MAX_ALARMHOST_ALARMIN_NUM/*512*/]; //ͣ0-ϴ1-ϴ + DWORD dwNonZoneReport; //Ƿ bit0- bit1-ϵͳ״̬ bit2-ȡ bit3-Ա,bit4- bit5- bit6-Юֱ bit7-ָ bit8-· bit9-·ָ,bit10-̽״̬棨ߡߣ,bit11-̽״̬棨ѹǷѹ,bit12-Ƶ + BYTE byIntervalTime; //0-0s,1-10s,2-30s,3-1min,4-5min,5-10min,6-Զ壨1~5999s + BYTE byRes2; + WORD wDefineIntervalTime; //byIntervalTimeΪ6ʱЧԶʱ䣨1~5999s + BYTE byRes3[128]; +}NET_DVR_ALARM_PHONECFG, *LPNET_DVR_ALARM_PHONECFG; + +typedef struct tagNET_DVR_MODULE_INFO +{ + DWORD dwSize; + BYTE byModuleType; //Ӵͣ1-̣2-3- 4-ģ + BYTE byKeyBoardType; //1-LCD,2-LED + BYTE byTriggerType; // 1-ش 2-4·3-8·4-5-32· + BYTE byZoneType; //ͣ1-ط2-3-˫4-85-8·ģ, 6- + WORD wModuleAddress; //Ӵַչģ0~2550xFFFFʾЧ + BYTE byRes2[2]; // + char sModelInfo[32]; //ģϢ + char sDeviceVersionInfo[32]; //汾Ϣ + BYTE byRes[128]; // +}NET_DVR_MODULE_INFO,*LPNET_DVR_MODULE_INFO; + +typedef struct tagNET_DVR_ALARMHOST_DETECTOR_INFO +{ + DWORD dwSize; + BYTE byDetectorSerialNo[16]; //̽к + DWORD dwAlarmIn; // + WORD wDetectorType; // ̽ͣDETECTOR_TYPE + BYTE byRes[126]; // +}NET_DVR_ALARMHOST_DETECTOR_INFO, *LPNET_DVR_ALARMHOST_DETECTOR_INFO; + +typedef struct tagNET_DVR_ONE_OUTPUT_SCHEDULE_RULE_V40 +{ + BYTE byEnable;// 0- 1- + BYTE byRes1[3]; + NET_DVR_SCHEDDATE struDate; + NET_DVR_OUTPUT_SCHEDULE struOutputSchedule[MAX_TIMESEGMENT_V30/*8*/]; + BYTE byTriggerIndex[MAX_ALARMHOST_ALARMOUT_NUM];//±ʾţֵ0-ã1- + BYTE byRes2[64]; +}NET_DVR_ONE_OUTPUT_SCHEDULE_RULE_V40,*LPNET_DVR_ONE_OUTPUT_SCHEDULE_RULE_V40; +//ʱ +typedef struct tagNET_DVR_OUTPUT_SCHEDULE_RULECFG_V40 +{ + DWORD dwSize; //ṹС + NET_DVR_ONE_OUTPUT_SCHEDULE_RULE_V40 struOutputRule[MAX_RULE_NUM/*8*/]; //֧8εĹãڶʱ/شֻҪʹһξͿ + BYTE byRes[64]; // +}NET_DVR_OUTPUT_SCHEDULE_RULECFG_V40,*LPNET_DVR_OUTPUT_SCHEDULE_RULECFG_V40; + +//ʱ +typedef struct tagNET_DVR_ONE_OUTPUT_SCH_RULECFG_V40 +{ + DWORD dwSize; + NET_DVR_ONE_OUTPUT_SCHEDULE_RULE_V40 struOutputRule; + BYTE byRes[256]; // +}NET_DVR_ONE_OUTPUT_SCH_RULECFG_V40,*LPNET_DVR_ONE_OUTPUT_SCH_RULECFG_V40; + +typedef struct tagNET_DVR_ALARM_CAPTRUE_CFG +{ + DWORD dwSize; + BYTE byBeforeAlarmPic; //Ӧֱ¿ñǰͼƬ4CIF10ţ2CIF20ţCIF40ţQCIF80ţWD1:10,XVGA:10,720P:10,1080P:10 + BYTE byAfterAlarmPic; //Ӧֱ¿ñͼƬ 4CIF10ţ2CIF20ţCIF40ţQCIF80ţWD1:10,XVGA:10,720P:10,1080P:10 + WORD wInterval; //ʱ λs + BYTE byResolution; //ͼƬֱ1-CIF2-2CIF3-4CIF4-QCIF5-WD16-VGA,7-XVGA8-720P9-1080P + BYTE byRes[63]; // ֽ +}NET_DVR_ALARM_CAPTRUE_CFG, *LPNET_DVR_ALARM_CAPTRUE_CFG; + +#define PRIOR_SCHEDTIME 30 + +typedef struct _NET_DVR_PRIOR_SCHEDTIME_ +{ + DWORD dwSize; + NET_DVR_SCHEDDATE struData; + NET_DVR_NORMAL_SCHEDTIME struOneDayTime[8]; + BYTE byEnable; //Ƿ 0-ã1- + BYTE byRes1[3]; + BYTE bySubSystem[32];//ϵͳ±ʾϵͳ 0-֧֣1-֧ + BYTE byMandatoryAlarm;//0-ǿƲ1-ǿƲ ָǷΪ· + BYTE byRes[63]; +}NET_DVR_PRIOR_SCHEDTIME,*LPNET_DVR_PRIOR_SCHEDTIME; + +typedef struct tagNET_DVR_TAMPER_ALARMIN_PARAM +{ + DWORD dwSize; + BYTE byTamperType; // 0-,1-2- + BYTE byUploadAlarmRecoveryReport; //Ƿϴָ棬0-ϴ1-ϴ + BYTE byRes1[2]; + BYTE byAssociateAlarmOut[MAX_ALARMHOST_ALARMOUT_NUM]; // BYTE byAssociateSirenOut[8]; // 0 ʾ1 ֵΪ1ʾ 0 ʾ + BYTE byAssociateSirenOut[8]; // 0 ʾ1 ֵΪ1ʾ 0 ʾ + BYTE byTamperResistor; //裬λǧŷ 0-Ч 1-2.2 2--3.3, 3-4.7 4-5.6 5-8.2 0xff-Զ + BYTE byRes2[3]; + float fTamperResistorManual;/*ֶ裬1.0-10.0ȷСһλλǧŷbyTamperResistorΪ0xffʱЧ*/ + BYTE byRes3[36]; // ֽ +}NET_DVR_TAMPER_ALARMIN_PARAM, *LPNET_DVR_TAMPER_ALARMIN_PARAM; + + +typedef struct tagNET_DVR_REMOTECONTROLLER_PERMISSION_CFG +{ + DWORD dwSize; + BYTE byEnable; + BYTE byAssociateNetUser;//û + WORD wRemoteCtrllerID;//ң 1ʼ + BYTE sDevSn[16];/*Ʒк*/ + BYTE byArmRight; /*0-޲Ȩޣ1-вȨ*/ + BYTE byDisArmRight; /*0-޳Ȩޣ1-гȨ*/ + BYTE byArmReportRight; /*0-޴Ȩޣ1-дȨ*/ + BYTE byDisArmReportRight;/*0-ϴȨޣ1-ϴȨ*/ + BYTE byClearAlarmRight; /*0-Ȩޣ1-Ȩ*/ + BYTE bySubSystemID; /* 豸(ң)ϵͳ,1~8 */ + BYTE byKeyboardAddr; /* ռ̵ĵַ,ʱ */ + BYTE byEnableDel; //ɾңû0-ɾ1-ɾ + BYTE byAlwaysOpenRight; /*Ƿ0-Ч1-2-*/ + BYTE byOpeningDirection; /*ŷ0-Ч1-ŷ2-ŷ*/ + BYTE byRes3[2]; + BYTE byName[NAME_LEN]; //ң + BYTE byRes2[28]; +}NET_DVR_REMOTECONTROLLER_PERMISSION_CFG, *LPNET_DVR_REMOTECONTROLLER_PERMISSION_CFG; + + +typedef struct tagNET_DVR_KEYBOARD_CFG +{ + DWORD dwSize; + BYTE byEnableLock; //Ƿü,0--, 1-- + BYTE byErrorTimes; //ụ̂ + WORD wLockTime; //ʱ䣬λ + BYTE byRes[128]; +}NET_DVR_KEYBOARD_CFG, *LPNET_DVR_KEYBOARD_CFG; + + +typedef struct tagNET_DVR_ALARMHOST_WIRELESS_BUSINESS_COND +{ + DWORD dwSize; + BYTE byCommOperatorNum[NAME_LEN/*32*/];//ͨӪ̺ + BYTE byQueryCode[16];//ҵѯ + BYTE byBusinessType;//ҵ 0-ѣ1- + BYTE byRes[35]; +}NET_DVR_ALARMHOST_WIRELESS_BUSINESS_COND, *LPNET_DVR_ALARMHOST_WIRELESS_BUSINESS_COND; + +typedef struct tagNET_DVR_ALARMHOST_WIRELESS_BUSINESS_INFO +{ + DWORD dwSize; + BYTE by3GBusiness[1024];//3GҵͨŲѯ + BYTE byRes[32]; +}NET_DVR_ALARMHOST_WIRELESS_BUSINESS_INFO, *LPNET_DVR_ALARMHOST_WIRELESS_BUSINESS_INFO; + +typedef struct tagNET_DVR_PREVIEW_DELAY_CFG +{ + DWORD dwSize; + WORD wdelayTime;//ӳԤʱ䣬λ + BYTE byRes[130]; +}NET_DVR_PREVIEW_DELAY_CFG, *LPNET_DVR_PREVIEW_DELAY_CFG; + +typedef struct tagNET_DVR_AUXILIARY_DEV_UPGRADE_PARAM +{ + DWORD dwSize; + DWORD dwDevNo; //豸 + BYTE byDevType; //豸 0-,1-о,2-ģ,3-· 4-5-RS485չģ飬6-¿ģ飬7-ģ,8-ڹģ + BYTE byRes[131]; +}NET_DVR_AUXILIARY_DEV_UPGRADE_PARAM,*LPNET_DVR_AUXILIARY_DEV_UPGRADE_PARAM; + +typedef struct tagNET_DVR_CALL_ROOM_CFG +{ + DWORD dwSize; + SHORT nFloorNumber; // + WORD wRoomNumber; // + BYTE byManageCenter; //Ƿй + BYTE byRes1[3]; + BYTE byCalledName[64]; //׼sipģʽЧû, ֧֡ĸ@͡. + BYTE byRes[60]; +}NET_DVR_CALL_ROOM_CFG,*LPNET_DVR_CALL_ROOM_CFG; + +typedef struct tagNET_DVR_VIDEO_CALL_COND +{ + DWORD dwSize; + BYTE byRes[128]; +}NET_DVR_VIDEO_CALL_COND,*LPNET_DVR_VIDEO_CALL_COND; + +//ѶϢ +typedef struct tagNET_DVR_INQUEST_CASE_INFO +{ + DWORD dwSize; + BYTE sCaseNo[INQUEST_CASE_NO_LEN]; // + BYTE sCaseName[INQUEST_CASE_NAME_LEN]; //ƣ + BYTE sCustomInfo1[CUSTOM_INFO_LEN]; //ԶϢ1 + BYTE sCustomInfo2[CUSTOM_INFO_LEN]; //ԶϢ2 + BYTE sCustomInfo3[CUSTOM_INFO_LEN]; //ԶϢ3 + BYTE byShowCaseInfoTime; /* Ϣʾʱ,λ, ȡֵΧ1~60*/ + BYTE byShowCaseInfo; //ʼǷʾϢ0-ʾ1-ʾ + BYTE byPosition; //ʾλã0-ϣ1- + BYTE byRes1; // + BYTE byCustomInfo4[CUSTOM_INFO_LEN]; //ԶϢ4ʱֶЧ + BYTE byCustomInfo5[CUSTOM_INFO_LEN]; //ԶϢ5ʱֶЧ + BYTE byRes[128]; // +}NET_DVR_INQUEST_CASE_INFO, *LPNET_DVR_INQUEST_CASE_INFO; + +typedef struct tagNET_DVR_CASE_INFO_CTRL_PARA +{ + DWORD dwSize; + DWORD dwChannel;//Ѷͨ + BYTE byShowCaseInfoTime; //ʾʱ + BYTE byRes[131]; +}NET_DVR_CASE_INFO_CTRL_PARAM, *LPNET_DVR_CASE_INFO_CTRL_PARA; + +typedef struct tagNET_DVR_INQUEST_USER_RIGHT_CFG +{ + DWORD dwSize; + /*0: Ѷ¼ɾȨ*/ + BYTE byLocalRight[MAX_RIGHT]; /* Ȩ */ + /*0: ԶƵԤȨ*/ + BYTE byRemoteRight[MAX_RIGHT];/* ԶȨ */ + BYTE byNetAudioRight[MAX_CHANNUM_V40]; /* ԶƵԤȨޣ±ʾֵͨʾȨޣ0-Ȩޣ1-Ȩ*/ + BYTE byRes[512*9]; //9Ȩ޿չ +}NET_DVR_INQUEST_USER_RIGHT_CFG, *LPNET_DVR_INQUEST_USER_RIGHT_CFG; + +typedef struct tagNET_DVR_INQUEST_MIX_AUDIOIN_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿû0-ã1- + BYTE byRes1[3]; // + DWORD dwMixCnt; /*ͨ*/ + BYTE bySrcChan[MAX_MIX_CHAN_NUM]; /*±ʾͨţģͨIPͨ,ֵ0ʾ죬ֵ1ʾ*/ + BYTE byLineIn[MAX_LINE_IN_CHAN_NUM]; /*±ʾLine Inͨ,ֵ0ʾ죬ֵ1ʾ*/ + BYTE byMic[MAX_MIC_CHAN_NUM]; /*±ʾMicͨ,ֵ0ʾ죬ֵ1ʾ*/ + BYTE byMixAudioDelay; //ӳ٣λ֡Χ0-63 + BYTE byRes2[127]; // +}NET_DVR_INQUEST_MIX_AUDIOIN_CFG, *LPNET_DVR_INQUEST_MIX_AUDIOIN_CFG; + +typedef struct tagNET_DVR_FACECAPTURE_STATISTICS_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + NET_DVR_TIME_EX struStartTime; //ʼʱ + BYTE byReportType; //ͳƱͣ1-ձ2-ܱ3-±4-걨 + BYTE byStatType; //ͳƣBit0-ΣBit1-ԱBit2- + BYTE byEnableProgramStatistics; //Ƿ񰴽Ŀͳƣ0-1- + BYTE byRes1; + DWORD dwPlayScheduleNo; //Ŀͳʱճ̺ + BYTE byRes[120]; +}NET_DVR_FACECAPTURE_STATISTICS_COND,*LPNET_DVR_FACECAPTURE_STATISTICS_COND; + +typedef struct tagNET_DVR_FILECOND_MEDICAL +{ + LONG lChannel;//ͨ + DWORD dwFileType;//¼ļ + //ţ0xffȫ0ʱ¼,1-ƶ 23-|ƶ 4-&ƶ 5- 6-ֶ¼,7-¼10-PIR11-߱12-ȱ13-ȫ¼14-ܽͨ¼ + //ţ0xffȫ0ʱ¼1-ƶ⣬2ӽ345-6ֶ¼7𶯱8-9-ܱ10-PIR11-߱12-ȱ13-ȫ¼14-ܽͨ¼ + DWORD dwIsLocked;//Ƿ 0-ļ,1-ļ, 0xffʾļ + DWORD dwUseCardNo;//Ƿʹÿ + BYTE sCardNumber[32];// + NET_DVR_TIME_SEARCH_COND struStartTime;//ʼʱ + NET_DVR_TIME_SEARCH_COND struStopTime;//ʱ + char szPatientID[64]; + DWORD dwBigFileType; // 0ΪͨƬ1Ϊļ + BYTE byRes[252]; +}NET_DVR_FILECOND_MEDICAL, *LPNET_DVR_FILECOND_MEDICAL; + +typedef struct tagNET_DVR_FIND_PICTURE_MEDICAL_PARAM +{ + DWORD dwSize; // ṹС + LONG lChannel; // ͨ + /* ҵͼƬ:0ʱץͼ1 ƶץͼ 2 ץͼ + 3 | ƶץͼ 4 & ƶץͼ 6 ֶץͼ , + 9-ͼƬ,10- PIR11- ߱12- ȱ, + 0xa Ԥʱͼ0xd , 0xe Խ⣬0xf ⣬ + 0x10 , 0x11-豸ػطʱͼ, 0x12-, + 0x13-,0x14-뿪,0x15-ǻ, + 0x16-Աۼ,0x17-˶,0x18-ͣ, + 0x19-Ʒ,0x1a-Ʒȡ, 0x1b-, + 0x1c-м,0x1d-ȡ֤¼,0x1e-,0x1f-ƻ, + 0x20-ֻ⣬0x21-Ԥ0x22-±, 0x23, 0x24Υͣ,0x25-ץ,0x26-߲±,0x2a-,0x2b-ʸ,0x2c-޳ʱ,0x2d-ȫñ,0x2e-ܽץ,0x2f-Ŀץ,0x30-ץĽģ, 0x31-Ŀ,0x32-, 0x33-, 0x34-ҵѯ,0x35-Ƿ̯,0xff- ȫ*/ + BYTE byFileType; + BYTE byNeedCard; // ǷҪ + /* + 0-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- + 29-أ30-ۣ31-£32-ƣ33-㣬34-0xff-ȫ + */ + BYTE byProvince; //ʡֵ + BYTE byRes1; //ҽǷҪ󷵻Ϣ0-أ1- + NET_DVR_TIME struStartTime;//ͼƬĿʼʱ + NET_DVR_TIME struStopTime;// ͼƬĽʱ + char szPatientID[64]; + BYTE byRes[256]; +}NET_DVR_FIND_PICTURE_MEDICAL_PARAM, *LPNET_DVR_FIND_PICTURE_MEDICAL_PARAM; + +typedef struct tagNET_DVR_SEXGROUP_PARAM_ +{ + DWORD dwMale;//У + DWORD dwFemale;//Ů + BYTE byRes[64]; +}NET_DVR_SEXGROUP_PARAM,*LPNET_DVR_SEXGROUP_PARAM; + +typedef struct tagNET_DVR_FACECAPTURE_STATISTICS_RESULT_ +{ + DWORD dwSize; + NET_DVR_TIME_EX struStartTime;/*ʼʱ*/ + NET_DVR_TIME_EX struEndTime;/*ʱ*/ + BYTE byStatType;//ͳƣBit0-ЧBit1-ԱЧBit2-Ч + BYTE byRes[7]; + DWORD dwPeopleNum;//ͳ + BYTE byRes2[80]; + NET_DVR_SEXGROUP_PARAM struSexGroupParam;//Աͳ + NET_DVR_PROGRAM_INFO struProgramInfo; //ĿϢ + BYTE byRes1[76]; +}NET_DVR_FACECAPTURE_STATISTICS_RESULT,*LPNET_DVR_FACECAPTURE_STATISTICS_RESULT; + +//ȡͨṹ +typedef struct tagNET_DVR_TRAFFIC_DATA_QUERY_COND_ +{ + DWORD dwSize; + /* + Bit0-ͨЧ + Bit1-ʱЧ + Bit2-ƺЧ + Bit3-Ч + Bit4-ɫЧ + Bit5-ɫЧ + Bit6-Ч + Bit7-ƷЧ + Bit8-Ч + Bit9-ʾЧ + Bit10-ٶЧ + Bit11-ٶЧ + Bit12-Ч + Bit13-ʽЧ + Bit14-Υȡ֤Ч + Bit15-¼Ч + Bit16-ȡ֤Ч + */ + DWORD dwQueryCond;//ѯ 0ʾЧ1ʾЧ + DWORD dwChannel;//Ĭ1[1~32]bit0ʾͨ1bit31ʾͨ32 + NET_DVR_TIME_V30 struStartTime;//ʼʱ + NET_DVR_TIME_V30 struEndTime;//ʱ + char sLicense[MAX_LICENSE_LEN/*16*/];//(豸֧ģѯ, GB2312) + /* + Bit0-δ֪ + Bit1-׼óֳ + Bit2-02ʽó + Bit3-侯 + Bit4- + Bit5-ó˫β + Bit6-ʹݳ + Bit7-ũó + Bit8-Ħг + */ + DWORD dwPlateType;//ְ֧ͣλʾԸѡ + /* + Bit0-δ֪ + Bit1-ɫ + Bit2-ɫ + Bit3-ɫ + Bit4-ɫ + Bit5-ɫ + */ + DWORD dwPlateColor;//ɫְ֧λʾԸѡ + /* + Bit0-δ֪ + Bit1-ɫ + Bit2-ɫ + Bit3-ɫ + Bit4-ɫ + Bit5-ɫ + Bit6-ɫ + Bit7-ɫ + Bit8-ɫ + Bit9-ɫ + Bit10-ɫ + Bit11-ɫ + Bit12-ɫ + Bit13-ɫ + */ + DWORD dwVehicleColor;//ɫְ֧λʾԸѡ + /* + Bit0-δ֪ + Bit1-ͳ + Bit2- + Bit3-γ + Bit4- + Bit5-С + Bit6- + Bit7-ֳ + Bit8-ֳ + Bit9-SUV/MPV + Bit10-Ϳͳ + */ + DWORD dwVehicleType;//ְ֧ͣλʾԸѡ + /** + Bit0- + Bit1- + Bit2- + Bit3- + Bit4- + Bit5-ѹ + Bit6- + Bit7-· + Bit8-ռ + Bit9-Υ + Bit10- + Bit11-Υ + Bit12-·ͣ + Bit13-̵ͣ + Bit14-δ + Bit15-Υͣ + Bit16-Υµͷ + Bit17-ռӦ + Bit18-δϵȫ + */ + DWORD dwIllegalType; + /** + Bit0- + Bit1-ӵ + Bit2-ͣ + Bit3- + Bit4- + Bit5- + Bit6- + Bit7-ѹ + Bit8-ֹ + Bit9- + Bit10- + Bit11-ͷ + Bit12-ռ + Bit13- + */ + DWORD dwEventType; + /** + Bit0- + Bit1-й·Υͣ + Bit2-ٹ·Υͣ + Bit3-ѹ + Bit4- + Bit5-Υ + Bit6-ռ + */ + DWORD dwForensiceType; + WORD wVehicleLogoRecog; //Ʒƣο"Ʒ.xlsx" ѡ + BYTE byLaneNo;//ţ0~255,0ų ʾ δ֪ + BYTE byDirection;//ʾ1-У2-У3-˫4-ɶ5-,6-򶫣7-ɱ + WORD wMinSpeed;//ٶȣ0~999λkm/h + WORD wMaxSpeed;//ٶȣ0~999λkm/h + BYTE byDataType;// 0-ݣ1-Υݣ2-ͨ¼3-ȡ֤ ѡ + BYTE byExecuteCtrl;// 0-1-ֹ0xff- + BYTE byRes[254]; +}NET_DVR_TRAFFIC_DATA_QUERY_COND,*LPNET_DVR_TRAFFIC_DATA_QUERY_COND; + +//ͨͼƬӽṹ +typedef struct tagNET_DVR_TRAFFIC_PICTURE_PARAM_ +{ + NET_DVR_TIME_V30 struRelativeTime; //ץʱ + NET_DVR_TIME_V30 struAbsTime; //ץľʱ + char szPicName[PICTURE_NAME_LEN/*64*/]; + BYTE byPicType;//ͼƬ 0-ͼ1-ץԭͼ2-ϳͼ3-дͼ + BYTE byRes[63]; +}NET_DVR_TRAFFIC_PICTURE_PARAM,*LPNET_DVR_TRAFFIC_PICTURE_PARAM; + +//ͨݽṹ +typedef struct tagNET_DVR_TRAFFIC_DATA_QUERY_RESULT_ +{ + DWORD dwSize; + DWORD dwChannel;//Ĭ1[1~32] + char sLicense[MAX_LICENSE_LEN/*16*/]; + /* + Bit0-δ֪ + Bit1-׼óֳ + Bit2-02ʽó + Bit3-侯 + Bit4- + Bit5-ó˫β + Bit6-ʹݳ + Bit7-ũó + Bit8-Ħг + */ + DWORD dwPlateType;// + /* + Bit0-δ֪ + Bit1-ɫ + Bit2-ɫ + Bit3-ɫ + Bit4-ɫ + Bit5-ɫ + */ + DWORD dwPlateColor;//ɫ + /* + Bit0-δ֪ + Bit1-ɫ + Bit2-ɫ + Bit3-ɫ + Bit4-ɫ + Bit5-ɫ + Bit6-ɫ + Bit7-ɫ + Bit8-ɫ + Bit9-ɫ + Bit10-ɫ + Bit11-ɫ + Bit12-ɫ + Bit13-ɫ + */ + DWORD dwVehicleColor;//ɫ + /* + Bit0-δ֪ + Bit1-ͳ + Bit2- + Bit3-γ + Bit4- + Bit5-С + Bit6- + Bit7-ֳ + Bit8-ֳ + Bit9-SUV/MPV + Bit10-Ϳͳ + Bit11- + Bit12-ǻ + Bit13-Сͽγ + Bit14-΢ͽγ + Bit15-Ƥ + Bit16-װ俨 + Bit17-΢忨 + Bit18- + Bit19-̳ + Bit20-͹޳ + Bit21-賵 + Bit22-ƽϳ + Bit23-γ + Bit24-γ + Bit25- + Bit26-СͿͳ + */ + DWORD dwVehicleType;// + /** + Bit0- + Bit1- + Bit2- + Bit3- + Bit4- + Bit5-ѹ + Bit6- + Bit7-· + Bit8-ռ + Bit9-Υ + Bit10- + Bit11-Υ + Bit12-·ͣ + Bit13-̵ͣ + Bit14-δ + Bit15-Υͣ + Bit16-Υµͷ + Bit17-ռӦ + Bit18-δϵȫ + */ + DWORD dwIllegalType; + /** + Bit0- + Bit1-ӵ + Bit2-ͣ + Bit3- + Bit4- + Bit5- + Bit6- + Bit7-ѹ + Bit8-ֹ + Bit9- + Bit10- + Bit11-ͷ + Bit12-ռ + Bit13- + */ + DWORD dwEventType; + /** + Bit0- + Bit1-й·Υͣ + Bit2-ٹ·Υͣ + Bit3-ѹ + Bit4- + Bit5-Υ + Bit6-ռ + */ + DWORD dwForensiceType; + WORD wVehicleLogoRecog; //Ʒƣο"Ʒ.xlsx" + BYTE byLaneNo;//ţ0~255,0ų ʾ δ֪ + BYTE byDirection;//ʾ1-У2-У3-˫4-ɶ5-,6-򶫣7-ɱ + WORD wSpeed;//ٶȣ0~999λkm/h + BYTE byDataType;//: 0- 1-Υ 2-¼ 3-ȡ֤ + BYTE byRes[253]; + NET_DVR_TRAFFIC_PICTURE_PARAM struTrafficPic[MAX_TRAFFIC_PICTURE_NUM/*8*/]; +}NET_DVR_TRAFFIC_DATA_QUERY_RESULT,*LPNET_DVR_TRAFFIC_DATA_QUERY_RESULT; + +//ӻȡͨṹ +typedef struct tagNET_DVR_TRAFFIC_FLOW_QUERY_COND_ +{ + DWORD dwSize; + /** + Bit0-ͨЧ + Bit1-ʱЧ + Bit2-Ч + */ + DWORD dwQueryCond;//ѯ 0- + DWORD dwChannel;//Ĭ1[1~32]bit0ʾͨ1bit31ʾͨ32 + DWORD dwResChan[10];//Ԥչͨ + NET_DVR_TIME_V30 struStartTime;//ʼʱ + NET_DVR_TIME_V30 struEndTime;//ʱ + BYTE byLaneNo;//ţ0~255,0ų ʾ δ֪ + BYTE byRes[255]; +}NET_DVR_TRAFFIC_FLOW_QUERY_COND,*LPNET_DVR_TRAFFIC_FLOW_QUERY_COND; + +//ӻȡͨṹ +typedef struct tagNET_DVR_TRAFFIC_FLOW_QUERY_RESULT_ +{ + DWORD dwSize; + NET_DVR_TIME_V30 struStartTime;//ʼʱ + NET_DVR_TIME_V30 struEndTime;//ʱ + DWORD dwChannel;//Ĭ1[1~32] + DWORD dwFlow;// + BYTE byLaneNo;//ţ0~255,0ų ʾ δ֪ + BYTE byRes[511]; +}NET_DVR_TRAFFIC_FLOW_QUERY_RESULT,*LPNET_DVR_TRAFFIC_FLOW_QUERY_RESULT; + +//ͼƬ +typedef struct tagNET_DVR_PIC_INFO +{ + BYTE byPicType; //ͼƬͣ0-jpg + BYTE byRes1[3]; // + DWORD dwPicWidth; //ͼƬ + DWORD dwPicHeight; //ͼƬ߶ + DWORD dwPicDataLen; //ͼƬݴС + char* byPicDataBuff; //ͼƬݻ + BYTE byRes2[32]; // +}NET_DVR_PIC_INFO,*LPNET_DVR_PIC_INFO; + +typedef struct tagNET_DVR_VCA_RULE_COLOR_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnable; //Ƿã 0-ã1- + BYTE byRuleID; //ĹID + BYTE byColorBlockNo; //ɫţ1ʼ + BYTE byRes1; // + NET_DVR_PIC_INFO struPicInfo; //ͼƬɫϢ + BYTE byRes[64]; +}NET_DVR_VCA_RULE_COLOR_CFG,*LPNET_DVR_VCA_RULE_COLOR_CFG; + +typedef struct tagNET_DVR_VCA_RULE_COLOR_COND +{ + DWORD dwSize;//ṹС + DWORD dwChannel; //ͨ + BYTE byRuleID; //ĹID 0ʾ + BYTE byRes[127]; +}NET_DVR_VCA_RULE_COLOR_COND,*LPNET_DVR_VCA_RULE_COLOR_COND; + +//LLDP +typedef struct tagNET_DVR_LLDP_PORT_CFG +{ + BYTE byCardNo; // + BYTE byPortNo; //˿ں + BYTE byEnabledTx; //ʹܷlldp0-ʹܣ1-ʹ + BYTE byEnabledRx; //ʹܽlldp0-ʹܣ1-ʹ + BYTE byRes[12]; +}NET_DVR_LLDP_PORT_CFG, *LPNET_DVR_LLDP_PORT_CFG; + +typedef struct tagNET_DVR_LLDP_CFG +{ + DWORD dwSize; + BYTE byEnabled; //ʹLLDPܣ0-ʹܣ1-ʹ + BYTE byRes1[3]; + DWORD dwHoldTime; //ʱ䣬λ + DWORD dwReiniTime; //³ʼʱ䣬λ + DWORD dwPacketTime; //ʱ䣬λ + NET_DVR_LLDP_PORT_CFG struLLDPPortCfg[MAX_PORT_NUM]; //˿LLDP + BYTE byRes2[32]; +}NET_DVR_LLDP_CFG, *LPNET_DVR_LLDP_CFG; + +//շϢ +typedef struct tagNET_DVR_CARD_PORT_INFO +{ + DWORD dwPortNo; //˿ںţ0-Ч + BYTE byPortName[NAME_LEN]; //˿ + BYTE byWorkMode; //ģʽ1-ACCESS2-TRUNK3-HYPRID + BYTE byBandWidth; //1-100M2-1G3-10G + BYTE byPortType; //˿ͣ1-ڣ2-ڣ3-縴ÿ + BYTE byRes[13]; +}NET_DVR_CARD_PORT_INFO, *LPNET_DVR_CARD_PORT_INFO; + +typedef struct tagNET_DVR_NETMGR_CARD_INFO +{ + BYTE byTypeName[NAME_LEN]; //ͺ + BYTE bySerialNo[SERIALNO_LEN]; //к + BYTE bySoftwareVersion[VERSION_LEN]; //汾 + NET_DVR_IPADDR struIPAddr; //IPַ + DWORD dwSlotNo; //ܿλţλ + BYTE byStructureType; //ṹͣ1-2U2-4U + BYTE byRes1[3]; + NET_DVR_CARD_PORT_INFO struNetPortInfo[MAX_SINGLE_CARD_PORT_NO]; //Ϣ + BYTE byRes2[32]; +}NET_DVR_NETMGR_CARD_INFO, *LPNET_DVR_NETMGR_CARD_INFO; + +typedef struct tagNET_DVR_FUNC_CARD_INFO +{ + DWORD dwCardNo; //ţ1ʼ + BYTE byTypeName[NAME_LEN]; //ͺ + BYTE bySerialNo[SERIALNO_LEN]; //к + BYTE bySoftwareVersion[VERSION_LEN]; //汾 + DWORD dwMainSlot; //λ1ʼ + BYTE byStructureType; //ṹͣ1-2U2-4U + BYTE byRes1[3]; + NET_DVR_CARD_PORT_INFO struFuncPortInfo[MAX_SINGLE_CARD_PORT_NO]; //˿ڲ + BYTE byRes2[32]; +}NET_DVR_FUNC_CARD_INFO, *LPNET_DVR_FUNC_CARD_INFO; + +typedef struct tagNET_DVR_FIBER_CONVERT_BASIC +{ + DWORD dwSize; + BYTE byPowerType; //Դͣ1-Դ2-˫Դ + BYTE byRes1[3]; + DWORD dwSlotNum; //ܿλţλ + NET_DVR_NETMGR_CARD_INFO struNetCardInfo; //ܿϢ + NET_DVR_FUNC_CARD_INFO struFuncCardInfo[MAX_FUNC_CARD_NUM]; //ܿϢ + BYTE byRes2[64]; +}NET_DVR_FIBER_CONVERT_BASIC, *LPNET_DVR_FIBER_CONVERT_BASIC; + +//շ״̬Ϣ +typedef struct tagNET_DVR_CARD_PORT_STATE +{ + BYTE byValid; //ǷЧ0-Ч1-Ч + BYTE byPortType; //˿ͣ1-ڣ2-ڣ3-縴ÿ + BYTE byLinkState; //״̬0-δӣ1- + BYTE byRes1; + DWORD dwSendBytes; //͵ֽ + DWORD dwRecvBytes; //ݰ + DWORD dwRecvLostPackets; //ն + DWORD dwRecvCrcErrPackets; //CRCУ + DWORD dwRecvFragmentPackets; //ƬͻֽڰȾС64ֽڣ + BYTE byRes2[16]; +}NET_DVR_CARD_PORT_STATE, *LPNET_DVR_CARD_PORT_STATE; + +typedef struct tagNET_DVR_NET_CARD_STATE +{ + NET_DVR_CARD_PORT_STATE struNetPortState[MAX_SINGLE_CARD_PORT_NO]; //˿״̬ + BYTE byRes[64]; +}NET_DVR_NET_CARD_STATE, *LPNET_DVR_NET_CARD_STATE; + +typedef struct tagNET_DVR_FUNC_CARD_STATE +{ + BYTE byEnabled; //˽ṹǷЧ0-Ч1-Ч + BYTE byRes1[3]; + DWORD dwCardNo; // + NET_DVR_CARD_PORT_STATE struFuncCardPortState[MAX_SINGLE_CARD_PORT_NO]; + BYTE byRes[32]; +}NET_DVR_FUNC_CARD_STATE, *LPNET_DVR_FUNC_CARD_STATE; + +typedef struct tagNET_DVR_FIBER_CONVERT_STATE +{ + DWORD dwSize; + NET_DVR_NET_CARD_STATE struNetCardState; //ܿ״̬ + NET_DVR_FUNC_CARD_STATE struFuncCardState[MAX_FUNC_CARD_NUM]; //ܿ״̬ + BYTE byRes[32]; +}NET_DVR_FIBER_CONVERT_STATE, *LPNET_DVR_FIBER_CONVERT_STATE; + +//Զշ1.0 Ϣ +typedef struct tagNET_DVR_NETMGR_CARD_INFO_V50 +{ + BYTE byMainSlotNo; //ܿλţλ + BYTE byRes1[3]; + BYTE byTypeName[NAME_LEN]; //ͺ + BYTE bySerialNo[SERIALNO_LEN]; //к + BYTE bySoftwareVersion[VERSION_LEN]; //汾 + BYTE byHardwareVersion[VERSION_LEN]; //Ӳ汾 + NET_DVR_IPADDR struIPAddr; //IPַ + NET_DVR_IPADDR struMask; // + NET_DVR_IPADDR struGateway; //Ĭ + BYTE byMacAddr[6]; //MACַ + BYTE bySlotNums; //λ + BYTE byStructureType; //ṹͣ1-2U2-4U + NET_DVR_CARD_PORT_INFO struPortInfo[MAX_SINGLE_CARD_PORT_NO]; //˿Ϣ + BYTE byRes2[64]; +}NET_DVR_NETMGR_CARD_INFO_V50, *LPNET_DVR_NETMGR_CARD_INFO_V50; + +typedef struct tagNET_DVR_FUNC_CARD_INFO_V50 +{ + BYTE byCardNo; //տ + BYTE byMainSlotNo; //տλţλ + BYTE byRes1[2]; + BYTE byTypeName[NAME_LEN]; //ͺ + BYTE bySerialNo[SERIALNO_LEN]; //к + BYTE bySoftwareVersion[VERSION_LEN]; //汾 + BYTE byIsVerMismatch; //汾ܿбش洢汾Ƿһ£0-ƥ䣬!0-ƥ + BYTE byRes2[3]; + BYTE byNewestSoftwareVersion[VERSION_LEN]; //µ汾汾ƥʱЧ + BYTE byHardwareVersion[VERSION_LEN]; //Ӳ汾 + BYTE bySlotNums; //λ + BYTE byStructureType; //ṹͣ1-2U2-4U + BYTE byRes3[2]; + NET_DVR_CARD_PORT_INFO struPortInfo[MAX_SINGLE_CARD_PORT_NO]; //˿Ϣ + BYTE byRes4[64]; +}NET_DVR_FUNC_CARD_INFO_V50, *LPNET_DVR_FUNC_CARD_INFO_V50; + +typedef struct tagNET_DVR_REMOTE_SEND_CARD_INFO_V50 +{ + BYTE byCardNo; //ţͻӵĽտĿ + BYTE byMainSlotNo; //λţͻӵĽտλ + BYTE byRes1[2]; + BYTE byTypeName[NAME_LEN]; //ͺ + BYTE bySoftwareVersion[VERSION_LEN]; //汾 + BYTE byIsVerMismatch; //汾ܿбش洢汾Ƿһ£0-ƥ䣬!0-ƥ + BYTE byRes2[3]; + BYTE byNewestSoftwareVersion[VERSION_LEN]; //µ汾汾ƥʱЧ + BYTE byHardwareVersion[VERSION_LEN]; //Ӳ汾 + NET_DVR_CARD_PORT_INFO struPortInfo[MAX_SINGLE_CARD_PORT_NO]; //˿Ϣ + BYTE byRes3[64]; +}NET_DVR_REMOTE_SEND_CARD_INFO_V50, *LPNET_DVR_REMOTE_SEND_CARD_INFO_V50; + +typedef struct tagNET_DVR_FIBER_CONVERT_BASIC_V50 +{ + DWORD dwSize; + BYTE byPowerType; //Դͣ1-Դ2-˫Դ + BYTE byRes1[3]; + DWORD dwSlotNum; //ܲλ + NET_DVR_NETMGR_CARD_INFO_V50 struNetCardInfo; //ܿϢ + NET_DVR_FUNC_CARD_INFO_V50 struFuncCardInfo[MAX_FUNC_CARD_NUM]; //տϢ + NET_DVR_REMOTE_SEND_CARD_INFO_V50 struRemoteSendCardInfo[MAX_FUNC_CARD_NUM]; //ͻϢ + BYTE byRes2[64]; +}NET_DVR_FIBER_CONVERT_BASIC_V50, *LPNET_DVR_FIBER_CONVERT_BASIC_V50; + +//Զշ1.0 ״̬Ϣ +typedef struct tagNET_DVR_CARD_PORT_STATE_V50 +{ + BYTE byPortNo; //˿ںţ1ʼ + BYTE byPortType; //˿ͣ1-ڣ2-ڣ3-縴ÿ + BYTE byLinkState; //״̬0-δӣ1- + BYTE byPortSpeed; //0-Ч1-Զ2-100M3-1000M4-10G + BYTE byPortDuplexMode; //˿˫ģʽ0-Ч1-Զ2-ȫ˫3-˫ + BYTE byRes1[3]; + BYTE byPortName[NAME_LEN]; //˿ + DWORD dwSendBytes; //͵ֽ + DWORD dwSendByteSpeed; //ֽʣλbps + DWORD dwSendPackets; //͵ֽ + DWORD dwSendPacketSpeed; //ʣλ/ + DWORD dwRecvBytes; //յֽ + DWORD dwRecvByteSpeed; //ֽʣλbps + DWORD dwRecvPackets; //յİ + DWORD dwRecvPacketSpeed; //հʣλ/ + DWORD dwRecvLostPackets; //ն + DWORD dwRecvCrcErrPackets; //CRCУ + DWORD dwRecvFragmentPackets; //ƬͻֽڰȾС64ֽڣ + BYTE byRes2[48]; +}NET_DVR_CARD_PORT_STATE_V50, *LPNET_DVR_CARD_PORT_STATE_V50; + +typedef struct tagNET_DVR_NET_CARD_STATE_V50 +{ + BYTE byMainSlotNo; //ܿλ + BYTE byRes1[3]; + NET_DVR_CARD_PORT_STATE_V50 struPortState[MAX_SINGLE_CARD_PORT_NO]; //ܿ˿״̬ + BYTE byRes2[344]; +}NET_DVR_NET_CARD_STATE_V50, *LPNET_DVR_NET_CARD_STATE_V50; + +typedef struct tagNET_DVR_FUNC_CARD_STATE_V50 +{ + BYTE byCardNo; //տ + BYTE byMainSlotNo; //տλ + BYTE byRes1[2]; + NET_DVR_CARD_PORT_STATE_V50 struPortState[MAX_SINGLE_CARD_PORT_NO]; //տ˿״̬ + BYTE byRes2[64]; +}NET_DVR_FUNC_CARD_STATE_V50, *LPNET_DVR_FUNC_CARD_STATE_V50; + +typedef struct tagNET_DVR_REMOTE_SEND_CARD_STATE_V50 +{ + BYTE byCardNo; //ͻӵĽտĿ + BYTE byMainSlotNo; //ͻӵĽտλ + BYTE byRes1[2]; + NET_DVR_CARD_PORT_STATE_V50 struPortState[MAX_SINGLE_CARD_PORT_NO]; //տ˿״̬ + BYTE byRes[64]; +}NET_DVR_REMOTE_SEND_CARD_STATE_V50, *LPNET_DVR_REMOTE_SEND_CARD_STATE_V50; + +typedef struct tagNET_DVR_FIBER_CONVERT_STATE_V50 +{ + DWORD dwSize; + NET_DVR_NET_CARD_STATE_V50 struNetCardState; //ܿ״̬ + NET_DVR_FUNC_CARD_STATE_V50 struFuncCardState[MAX_FUNC_CARD_NUM]; //տ״̬ + NET_DVR_REMOTE_SEND_CARD_STATE_V50 struRemoteSendCardState[MAX_FUNC_CARD_NUM]; //ͻ״̬ + BYTE byRes[64]; +}NET_DVR_FIBER_CONVERT_STATE_V50, *LPNET_DVR_FIBER_CONVERT_STATE_V50; + +//շϢ +typedef struct tagNET_DVR_FC_PORT_TOPOLOGY +{ + DWORD dwPortNo; //˿ںţ0-Ч0Ϊܿ˿ں + BYTE byPortType; //˿ͣ1-ڣ2-ڣ3-縴ÿ + BYTE byLocalWorkMode; //عģʽ1-ACCESS2-TRUNK3-HYPRID + BYTE byLocalBandWidth; //ش1-100M2-1G3-10G + BYTE byRes1[1]; + BYTE byPeerTypeName[NAME_LEN]; //Զ豸 + BYTE byPeerMac[MACADDR_LEN]; //ԶMACַ + DWORD dwPeerPortNo; //Զ˶˿ں + BYTE byPeerWorkMode; //Զ˹ģʽ1-ACCESS2-TRUNK3-HYPRID + BYTE byPeerBandWidth; //Զ˴1-100M2-1G3-10G + BYTE byRes2[30]; +}NET_DVR_FC_PORT_TOPOLOGY, *LPNET_DVR_FC_PORT_TOPOLOGY; + +typedef struct tagNET_DVR_FC_CARD_TOPOLOGY +{ + BYTE byEnable; //˽ṹǷЧ0-Ч0-Ч + BYTE byRes1[3]; + DWORD dwCardNo; //ţ0-ܿ0-ܿ + DWORD dwSlotNum; //ռõIJλ + BYTE byTypeName[NAME_LEN]; // + BYTE byLocalMac[MACADDR_LEN]; //MACַ + NET_DVR_FC_PORT_TOPOLOGY struFCPortTopology[MAX_SINGLE_CARD_PORT_NO]; //˿Ϣ + BYTE byRes[32]; +}NET_DVR_FC_CARD_TOPOLOGY, *LPNET_DVR_FC_CARD_TOPOLOGY; + +typedef struct tagNET_DVR_FIBER_CONVERT_TOPOLOGY +{ + DWORD dwSize; + NET_DVR_FC_CARD_TOPOLOGY struFCCardTopology[MAX_FC_CARD_NUM]; //Ϣ + BYTE byRes[64]; +}NET_DVR_FIBER_CONVERT_TOPOLOGY, *LPNET_DVR_FIBER_CONVERT_TOPOLOGY; + +//շ˿עϢ +typedef struct tagNET_DVR_FC_COND +{ + DWORD dwSize; + DWORD dwSlotNo; //λ + DWORD dwPortNo; //˿ں + BYTE byRes[32]; +}NET_DVR_FC_COND, *LPNET_DVR_FC_COND; + +typedef struct tagNET_DVR_FC_PORT_REMARKS +{ + DWORD dwSize; + BYTE byLocalRemarks[MAX_REMARKS_LEN]; //ض˿עϢ + BYTE byPeerRemarks[MAX_REMARKS_LEN]; //Զ˶˿עϢ + BYTE byRes[32]; +}NET_DVR_FC_PORT_REMARKS, *LPNET_DVR_FC_PORT_REMARKS; + +typedef enum _EN_FIBER_CONVERT_ALARM +{ + FC_OPTICAL_PORT_LOST = 1, + FC_ELECTRICAL_PORT_LOST, + FC_FUNC_CARD_LOST, + FC_CARD_DISCONNECTED, //߸澯 + FC_MAX_TEMP_LIMITED, //¶ȳ޸澯 + FC_MIN_TEMP_LIMITED, //¶ȳ޸澯 + FC_MAX_VOLTAGE_LIMITED, //ѹ޸澯 + FC_MIN_VOLTAGE_LIMITED, //ѹ޸澯 +}EN_FIBER_CONVERT_ALARM; + +typedef enum _EN_FIBER_CONVERT_NOTIFICATION +{ + FC_OPTICAL_PORT_CONNECTED = 1, + FC_ELECTRICAL_PORT_CONNECTED, + FC_FUNC_CARD_INSERT, + FC_CARD_CONNECTED, //֪ͨ + FC_TEMP_RECOVERY, //¶Ȼָ֪ͨ + FC_VOLTAGE_RECOVERY, //ѹָ֪ͨ +}EN_FIBER_CONVERT_NOTIFICATION; + +typedef struct tagNET_DVR_FIBER_CONVERT_ALARM +{ + DWORD dwSize; + DWORD dwEventType; //¼ͣ1-澯2-֪ͨ + DWORD dwEvent; //¼澯ʱοöFIBER_CONVERT_ALARM֪ͨʱοöFIBER_CONVERT_NOTIFICATION + BYTE bySlotNum; //λţΪͻʱλΪ÷ͻӵĽտIJλţ澯֪ͨʱЧ + BYTE byCardType; //ͣ0-Ч1-ܿ2-տ3-ͻ4- + BYTE byPortNo; //˿ںţ1ʼ澯֪ͨʱЧ + BYTE byCurTemperature; //¼¶ȣ¶ȸ澯֪ͨʱЧλ϶ + WORD wCurVoltage; //¼ĵѹʵʵѹ*10ѹ澯֪ͨʱЧλ + BYTE byRes1[30]; +}NET_DVR_FIBER_CONVERT_ALARM, *LPNET_DVR_FIBER_CONVERT_ALARM; + +//澯¼ϴ +typedef enum _EN_SWITCH_CONVERT_ALARM +{ + SC_OPTICAL_PORT_LOST = 1, + SC_NETWORK_PORT_LOST, + SC_WIRELESS_SPEED_UP_EXCEPTION,//쳣 + SC_WIRELESS_SHUTDOWN, //ӶϿ¼ + SC_DEVICE_POE_MAX, //POE-MAX澯 + SC_PORT_POE_POWER_OFF, //˿POE澯 +}EN_SWITCH_CONVERT_ALARM; + +typedef enum _EN_SWICH_CONVERT_NOTIFICATION +{ + SC_OPTICAL_PORT_CONNECTED = 1, + SC_NETWORK_PORT_CONNECTED, + SC_DEVICE_POE_MAX_RECOVERY, //POE-MAX澯ָ + SC_PORT_POE_POWER_ON, //˿POEϵ֪ͨ + SC_WIRELESS_CONNECTED, //¼ +}EN_SWITCH_CONVERT_NOTIFICATION; + +typedef struct tagNET_DVR_SWITCH_CONVERT_ALARM +{ + DWORD dwSize; + BYTE byPortNo; //ӿ1ʼʾ8λ + BYTE byPortNoEx; //ӿ255ʱֶαʾĸ8λ + BYTE byRes1[2]; + DWORD dwEventType; //¼ͣ1-澯2-֪ͨ + DWORD dwEvent; //¼澯ʱοöEN_SWITCH_CONVERT_ALARM֪ͨʱοöEN_SWITCH_CONVERT_NOTIFICATION + BYTE byRes2[32]; +}NET_DVR_SWITCH_CONVERT_ALARM, *LPNET_DVR_SWITCH_CONVERT_ALARM; + +typedef struct tagNET_DVR_SWITCH_LAMP_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnable; //Ƿã 0-ã1- + BYTE byTriggerMode; // 1-2-δ + BYTE byUploadPic; //0-ϴͼƬ1-ϴͼƬ + BYTE byRes1; // + DWORD dwTimeInterval; //ʱΧ[0,3600]λ + NET_DVR_HANDLEEXCEPTION_V30 struHandleType;//ʽ + BYTE byRelRecordChan[MAX_IVMS_IP_CHANNEL]; //¼ͨ1ʾͨ0ʾ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + BYTE byRes[256]; +}NET_DVR_SWITCH_LAMP_CFG,*LPNET_DVR_SWITCH_LAMP_CFG; + +typedef struct tagNET_DVR_SWITCH_LAMP_ALARM +{ + DWORD dwSize;//ṹС + NET_VCA_DEV_INFO struDevInfo; //豸Ϣ + NET_DVR_TIME_EX struTime; //ʱ + BYTE byLampStatus; //ص״̬0-ѹر 1-Ѵ + BYTE byRes1[3]; // + DWORD dwPicDataLen; //ͼƬݳȣ0ʾͼƬϴ + char* pPicData; //ͼƬ + BYTE byRes[64]; +}NET_DVR_SWITCH_LAMP_ALARM,*LPNET_DVR_SWITCH_LAMP_ALARM; + +//ռ +typedef struct tagNET_DVR_RS485_CASCADE_CFG +{ + DWORD dwSize; + BYTE byDevAddr; //豸ַ0-1-15Ϊӻ + BYTE byRes[131]; +}NET_DVR_RS485_CASCADE_CFG,*LPNET_DVR_RS485_CASCADE_CFG; + +//˽йؼϢϴ +typedef struct tagNET_DVR_PRIVATE_PROTOCOL_CFG +{ + DWORD dwSize; + NET_DVR_IPADDR struIP; //ϢϴIPַ + WORD wPort;//ϢϴĶ˿ں + BYTE byEnable;//ʹ, 0-1-ã2- + BYTE byRes; + DWORD dwInterval;//Ϣϴ(0-ʱƣ豸Ϊ׼; >=0,Ϊλʱ) + BYTE byServerType;// 0-ޣ1- + BYTE byEcryptedSMSEnable;//0-ܣ1- + BYTE byAlgorithm;//㷨0-ޣ1-RSA + BYTE byAcauisitionMode;//ɼģʽ0-Ϣ1-Ϣ2-Ϣ+Ϣ + DWORD dwDistanceLimit;//ƣλm + BYTE byPKModeEnable;//PKģʽʹ, 0-1-ã2- + BYTE byMACAddrReductionEnable;//MACַԭʹ, 0-1-ã2- + BYTE byRes1[214]; + char szIndexCode[MAX_INDEX_CODE_LEN]; + DWORD dwSecretKeyLen;//Կ + char szSecretKey[MAX_SECRETKEY_LEN/*512*/];//Կ +}NET_DVR_PRIVATE_PROTOCOL_CFG,*LPNET_DVR_PRIVATE_PROTOCOL_CFG; + +// +typedef struct tagNET_DVR_DEBUG_CMD +{ + DWORD dwSize; + char szDebugCMD[MAX_DEBUGCMD_LEN/*1024*/]; + BYTE byRes[400]; +}NET_DVR_DEBUG_CMD,*LPNET_DVR_DEBUG_CMD; + +//Ϣ +typedef struct tagNET_DVR_DEBUG_INFO +{ + DWORD dwSize; + char szDebugInfo[MAX_DEBUGINFO_LEN/*1400*/]; + BYTE byRes[32]; +}NET_DVR_DEBUG_INFO,*LPNET_DVR_DEBUG_INFO; + + + +#define MAX_SSID_LEN 32 //SSIDų +#define MAX_WS_PASSWD_LEN 64 //볤 +typedef struct tagNET_DVR_WIRELESSSERVER +{ + DWORD dwSize;//ṹС + BYTE byWLanShare;//WLanȵʹ 0-رգ1-ʹ + BYTE byBroadcastSSID;//SSID㲥ʹ 0-رգ1-ʹ + BYTE bySecurityMode;//ȫģʽ 0- not-encrypted1-WPA2-WPA2(ʱֻ֧2) + BYTE byAlgorithmType; //ģʽ 1-TKIP2-AES + char szSSID[MAX_SSID_LEN/*32*/];//SSIDϢ + char szPassWord[MAX_WS_PASSWD_LEN/*64*/]; + BYTE byDefaultPassword;//ǷĬ 0-1- + BYTE byWifiApModeType;//WlanAPȵģʽ0-رգ1-2-Զ + BYTE byRes[254]; +}NET_DVR_WIRELESSSERVER,*LPNET_DVR_WIRELESSSERVER; + +typedef struct tagNET_DVR_CONNECTDEV_COND +{ + DWORD dwSize; + DWORD dwChannel; + BYTE byRes[128]; +}NET_DVR_CONNECTDEV_COND,*LPNET_DVR_CONNECTDEV_COND; + +typedef struct tagNET_DVR_CONNECTDEV_CFG +{ + DWORD dwSize; + BYTE byID;//к + BYTE byRes[1]; + BYTE byMACAddr[MACADDR_LEN/*6*/]; // ַ + NET_DVR_IPADDR struDVRIP;//豸IP + NET_DVR_TIME struConnectTime;//ʱ + BYTE byRes1[256]; +}NET_DVR_CONNECTDEV_CFG,*LPNET_DVR_CONNECTDEV_CFG; + +typedef struct tagNET_DVR_GIS_SERVER_INFO +{ + BYTE byUserName[NAME_LEN]; + BYTE byPassword[PASSWD_LEN]; + NET_DVR_IPADDR struServerIP; //GISIPַ + WORD wPort; //GIS˿ + BYTE byRes[30]; +}NET_DVR_GIS_SERVER_INFO, *LPNET_DVR_GIS_SERVER_INFO; + +typedef struct tagNET_DVR_BASEMAP_CONTROL_CFG_V40 +{ + DWORD dwSize; + BYTE byEnable; //Ƿʾ1-ʾ0- + BYTE byBaseMapType; //ͼͣ1-ͼƬͼ2-ͼ3-GISͼ + BYTE byRes1[2]; + DWORD dwBaseMapNo; //ͼţͼΪ1ʱ˲ΪͼƬţͼΪ2ʱ˲Ϊϵͳںţ1ֽھ+1ֽӰ+1ֽں+1ֽڱ + NET_DVR_GIS_SERVER_INFO struGisServer; //GISϢ,ͼΪGISͼʱЧ + BYTE byRes2[64]; +}NET_DVR_BASEMAP_CONTROL_CFG_V40,*LPNET_DVR_BASEMAP_CONTROL_CFG_V40; + +typedef struct tagNET_DVR_VIDEO_IMG_DB_CFG +{ + DWORD dwSize; //NET_DVR_VIDEO_IMG_DB_CFGṹС + INT64 i64Capacity; //ͼλλMB + INT64 i64UsedSpace; //ֻÿռ䣬λλMB + INT64 i64AvailableSpace; //ֻÿռ䣬λλMB + BYTE byRes[256]; // +}NET_DVR_VIDEO_IMG_DB_CFG, *LPNET_DVR_VIDEO_IMG_DB_CFG; + +typedef struct tagNET_DVR_FILE_QUERY_INFO +{ + DWORD dwSize; //NET_DVR_FILE_QUERY_INFOṹС + INT64 i64FileLen; //ļС + BYTE byRes[256]; // +}NET_DVR_FILE_QUERY_INFO, *LPNET_DVR_FILE_QUERY_INFO; + +typedef struct tagNET_DVR_FILE_INFO_IN +{ + char szFileID[MAX_FILE_ID_LEN]; //ϴ֮豸ļID + BYTE byRes[256]; +}NET_DVR_FILE_INFO_IN, *LPNET_DVR_FILE_INFO_IN; + +typedef struct tagNET_DOWNLOAD_CB_INFO +{ + DWORD dwType; //, 0-Ϣ,1-ͼƬϢ(ƴ洢),2-ͼƬϢ(ƴ洢) + BYTE *pData; //ָ + DWORD dwDataLen; //ݳ + void* pFileInfo; //ļϢṹ(ƴ洢ʱЧ) + DWORD dwFileInfoLen; //ļϢṹ峤(ƴ洢ʱЧ) + BYTE byRes[120]; // +}NET_DOWNLOAD_CB_INFO, *LPNET_DOWNLOAD_CB_INFO; + +typedef BOOL (*DOWNLOAD_DATA_CB)( LONG lHandle, NET_DOWNLOAD_CB_INFO *pCBInfo, void *pUserData); + +typedef struct tagNET_DVR_DOWNLOAD_CB_PARAM +{ + DOWNLOAD_DATA_CB fnDownloadDataCB; //ݻص + void *pUserData; //û, fnPreviewDataCBص + INT64 i64Offset; //ļƫڶϵ + BYTE byRes[256]; +}NET_DVR_DOWNLOAD_CB_PARAM, *LPNET_DVR_DOWNLOAD_CB_PARAM; + +typedef struct tagNET_DVR_UPLOAD_DB_IN +{ + INT64 i64FileLen; //ϴļҪļȣļԲ + BYTE byContinueUpload; //0-ļϴ1-ļļ + BYTE byRes[255]; +}NET_DVR_UPLOAD_DB_IN, *LPNET_DVR_UPLOAD_DB_IN; + + +typedef struct tagNET_DVR_UPLOAD_DB_OUT +{ + char szFileID[MAX_FILE_ID_LEN]; //ϴ֮豸ļID + BYTE byRes[256]; +}NET_DVR_UPLOAD_DB_OUT, *LPNET_DVR_UPLOAD_DB_OUT; + +typedef struct tagNET_DVR_SEND_PARAM_IN +{ + BYTE *pSendData; //͵Ļ,PicURL == 1 ʱڴд洢 URL ַ,byUploadModeling == 1 ʱڴд洢 ģbase64 + DWORD dwSendDataLen; //ݳ,PicURL == 1 ʱ򣬱ʾ URL ַij,byUploadModeling == 1 ʱ򣬱ʾΪģbase64ļܳ + NET_DVR_TIME_V30 struTime; //ͼƬʱ + BYTE byPicType; //ͼƬʽ,1-jpg,2-bmp,3-png,4-SWF,5-GIF + BYTE byPicURL; //ͼƬݲURLʽ 0-ͼƬݣ1-ͼƬURLʽ + /*Ƿϴģݣ + 0- ͼƬݷʽ(pSendDataָͼƬ, dwPicDataLenΪͼƬݳ) + 1- ֱϴģ(pSendDataָģbase64, dwPicDataLenΪģbase64ļܳ) + עģݲbase64ܷʽ,ѡΪģϴbyPicURL 衣 + /ISAPI/Intelligent/channels//faceContrast/capabilitiesзisSupportUploadModelingڵʱ֧ϴģ. */ + BYTE byUploadModeling; + BYTE byRes1; + DWORD dwPicMangeNo; //ͼƬ + BYTE sPicName[NAME_LEN]; //ͼƬ + DWORD dwPicDisplayTime; //ͼƬʱλ + BYTE *pSendAppendData; //ͼƬĸϢӦFaceAppendData XML + DWORD dwSendAppendDataLen; //ͼƬĸϢݳ FaceAppendData XMLijȣ + BYTE byRes[192]; +}NET_DVR_SEND_PARAM_IN, *LPNET_DVR_SEND_PARAM_IN; + + +typedef struct tagNET_DVR_DOWNLOAD_QOS +{ + DWORD dwMaxSpeed; //ٶȣλkbps + BYTE byRes[256]; +}NET_DVR_DOWNLOAD_QOS, *LPNET_DVR_DOWNLOAD_QOS; + + +#define NET_SDK_MAX_FILE_NAME 100 //ļ + +typedef struct tagNET_DVR_UPLOAD_FILEVOLUME_PRARAM_ +{ + DWORD dwSize; + BYTE byFileType; //ļ 0-¼1-Ƶ + BYTE byFileVolnumeID; //ļIDͨNET_DVR_GET_HDVOLUME_CFG ȡ + BYTE byArchive; //0-鵵1-鵵 + BYTE byRes1; + DWORD dwFileSize; //ļС + char szFileName[NET_SDK_MAX_FILE_NAME/*100*/]; //ļ + BYTE byRes[300]; +}NET_DVR_UPLOAD_FILEVOLUME_PRARAM, *LPNET_DVR_UPLOAD_FILEVOLUME_PRARAM; + +typedef struct tagNET_DVR_DOWNLOAD_FILEVOLUME_PARAM_ +{ + DWORD dwSize; + BYTE sUrl[MAX_UPLOADFILE_URL_LEN/*240*/]; //url + BYTE byRes[248]; + DOWNLOAD_DATA_CB fnDownloadDataCB; //ݻص + void *pUserData; //û, fnPreviewDataCBص +}NET_DVR_DOWNLOAD_FILEVOLUME_PARAM, *LPNET_DVR_DOWNLOAD_FILEVOLUME_PARAM; + + +//Ӱģʽ +typedef struct tagNET_DVR_FILM_MODE_CFG +{ + DWORD dwSize; //ṹС + BYTE byScreenType; //ͣ0-棬1-棬2-л + BYTE byRes[255]; // +}NET_DVR_FILM_MODE_CFG, *LPNET_DVR_FILM_MODE_CFG; + +// +typedef struct tagNET_DVR_DIRECTED_STRATEGY_CFG +{ + DWORD dwSize; //ṹС + BYTE byDirectedStrategyType; //ͣ0-̬ԣ1-Ʒ,2-Ʒ12,3-Ʒ13 + BYTE byRes[255]; // +}NET_DVR_DIRECTED_STRATEGY_CFG, *LPNET_DVR_DIRECTED_STRATEGY_CFG; + +//߿ӽṹ +typedef struct NET_DVR_FRAME +{ + BYTE byFrameWide; /*߿ȺϷȡֵΧΪ[0,14]ֻȡżֵ*/ + BYTE byRed; /*߿ɫΪRGB ģʽRGBֱӦλ*/ + BYTE byGreen; + BYTE byBlue; + BYTE byRes[256]; +}NET_DVR_FRAME, *LPNET_DVR_FRAME; + +//û߿ +typedef struct tagNET_DVR_FRAME_CFG +{ + DWORD dwSize; //ṹС + NET_DVR_FRAME struTopFrame; //ϱ߿ + NET_DVR_FRAME struBottomFrame;//±߿ + NET_DVR_FRAME struLeftFrame; //߿ + NET_DVR_FRAME struRightFrame; //ұ߿ + BYTE byFrameEnable; //ӱ߿0-1-ӱ߿ + BYTE byRes[256]; // +}NET_DVR_FRAME_CFG, *LPNET_DVR_FRAME_CFG; + +//û߿ +typedef struct tagNET_DVR_FRAME_COND +{ + DWORD dwSize; + DWORD dwPicNo;// + BYTE byRes[256]; +}NET_DVR_FRAME_COND, *LPNET_DVR_FRAME_COND; + +//ƵŻ +typedef struct tagNET_DVR_AUDIO_EFFECTIVE_CFG +{ + DWORD dwSize; //ṹС + DWORD dwCheckDelay; //ʱӣλs0ʾԶŻ + BYTE byThreshold; //ֵ[0,100] + BYTE byVolumePercent;// [0,100] + BYTE byPriority; //ȼ[0100] + BYTE byRes[301]; +}NET_DVR_AUDIO_EFFECTIVE_CFG, *LPNET_DVR_AUDIO_EFFECTIVE_CFG; + +//¼Ƶ +typedef struct tagNET_DVR_RECORD_VIDEO_CFG +{ + DWORD dwSize; //ṹС + BYTE byExportType; //ֵ0-MP4 1-AVI + BYTE byRes[255]; //ֽ +} NET_DVR_RECORD_VIDEO_CFG, *LPNET_DVR_RECORD_VIDEO_CFG; + +//RTMP Cond +typedef struct tagNET_DVR_RTMP_COND +{ + DWORD dwSize; + DWORD dwChannel; + BYTE byStreamType; //ͣ1-2-3- + BYTE byRes[303]; +}NET_DVR_RTMP_COND, *LPNET_DVR_RTMP_COND; + +//RTMP Cfg +typedef struct tagNET_DVR_RTMP_CFG +{ + DWORD dwSize; //ṹС + BYTE byEnable; //ǷRTMP0-ã1- + BYTE byRes1[3]; + DWORD dwPacketLen; //RTMP + char szURL[RTMP_URL_LEN]; //RTMP URL + BYTE byRes[256]; //ֽ +}NET_DVR_RTMP_CFG, *LPNET_DVR_RTMP_CFG; + +//ļ +typedef struct tagNET_DVR_RECORDING_PUBLISH_FILE_CFG +{ + DWORD dwSize; //ṹС + BYTE byFileID[MAX_ID_LEN_128/*128*/]; //ļID + NET_DVR_TIME_EX struStartTime; //γ̿ʼʱ + NET_DVR_TIME_EX struEndTime; //γ̽ʱ + BYTE byCmdType; // 1--ʼ 2--ȡ + BYTE byFileType; //ļ 0 1ʱγ 2ֶγ + BYTE byRes[254]; +}NET_DVR_RECORDING_PUBLISH_FILE_CFG, *LPNET_DVR_RECORDING_PUBLISH_FILE_CFG; + +//ļ +typedef struct tagNET_DVR_PUBLISH_PROGRESS_COND +{ + DWORD dwSize; + DWORD dwChannel; + BYTE byFileID[MAX_ID_LEN_128/*128*/]; //ļID + BYTE byRes[256]; +}NET_DVR_PUBLISH_PROGRESS_COND, *LPNET_DVR_PUBLISH_PROGRESS_COND; + +//ļȲ +typedef struct tagNET_DVR_PUBLISH_PROGRESS_CFG +{ + DWORD dwSize; //ṹС + BYTE byPublishPercent; //ٷֱ 0-100 + BYTE byPublishStatus; //״̬ 0-ɹ 1--ڷ 2--ȴ 3-FTP 4--ûҵļ 5--ʧܣ + BYTE byRes[302]; +}NET_DVR_PUBLISH_PROGRESS_CFG, *LPNET_DVR_PUBLISH_PROGRESS_CFG; + +//ɾͼеļ +typedef struct tagNET_DVR_BACKGROUND_PIC_COND +{ + DWORD dwSize; + char szFileID[MAX_ID_LEN_128/*128*/]; //ϴ֮豸ļID, ָͼƬ + BYTE byRes[256]; +}NET_DVR_BACKGROUND_PIC_COND, *LPNET_DVR_BACKGROUND_PIC_COND; + +//ѯͼƬļ +typedef struct tagNET_DVR_BACKGROUND_PIC_CFG +{ + DWORD dwSize; //ṹС + DWORD dwPicSize; //ͼƬС + DWORD dwPicType; //ͼƬͣYUV:0 JPEG:1 + WORD wPicWidth; //ͼƬ + WORD wPicHeight; //ͼƬ + BYTE byPicName[MAX_PIC_NAME_LEN/*128*/]; //ͼƬ + BYTE byRes[128]; +}NET_DVR_BACKGROUND_PIC_CFG,*LPNET_DVR_BACKGROUND_PIC_CFG; + +typedef struct tagNET_DVR_BACKGROUND_PIC_INFO +{ + DWORD dwSize; //ṹС + BYTE byEnable; //ǷñͼƬӣ0-1- + BYTE byRes1[3]; + BYTE byPicID[MAX_ID_LEN_128/*128*/]; + BYTE byRes[300]; // +}NET_DVR_BACKGROUND_PIC_INFO,*LPNET_DVR_BACKGROUND_PIC_INFO; + + +//ϴͼƬļ +typedef struct tagNET_DVR_BACKGROUND_PIC_PRARAM +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + DWORD dwPicSize; //ͼƬС + WORD wPicWidth; //ͼƬ + WORD wPicHeight; //ͼƬ + char szPicName[MAX_PIC_NAME_LEN/*128*/]; //ͼƬ + BYTE byPicType; //ͼƬͣYUV:0 JPEG:1 + BYTE byRes[303]; +}NET_DVR_BACKGROUND_PIC_PRARAM,*LPNET_DVR_BACKGROUND_PIC_PRARAM; + +//͹ +typedef struct tagNET_DVR_LOWPOWER +{ + DWORD dwSize;//ṹС + BYTE byMode;//ģʽ 0-ֶ1-ʱ + BYTE byEnabled;//ֶģʽµʹܿ 0-رգ1- + BYTE byRes[6]; + NET_DVR_SCHEDULE_DAYTIME struSchedTime;//ʱʱ + BYTE byRes1[256]; +}NET_DVR_LOWPOWER,*LPNET_DVR_LOWPOWER; + +typedef struct tagNET_DVR_POINT +{ + DWORD dwX; //X + DWORD dwY; //Y +}NET_DVR_POINT, *LPNET_DVR_POINT; + +//䱶 +typedef struct tagNET_DVR_ZOOMLINKAGE +{ + DWORD dwSize;//ṹС + BYTE byEnable;//ʹ 0-أ1- + BYTE byRes[255]; +}NET_DVR_ZOOMLINKAGE,*LPNET_DVR_ZOOMLINKAGE; + +typedef struct tagNET_DVR_ONLINEUPGRADE_STATUS +{ + DWORD dwSize; + BYTE byUpgradeStatus;//0-δʼ,1-,2-ɹ,3-Բƥ,4-дfalshʧ,5-Ͳƥ,6-汾ƥ,7-粻ɴ,8-, + //9-ȡļ,10-ûҵļ,11-ļд,12-豸ڴ治,0xff-δ֪ + BYTE byProgress; //,0~100 + BYTE byRes[250]; +}NET_DVR_ONLINEUPGRADE_STATUS,*LPNET_DVR_ONLINEUPGRADE_STATUS; + +typedef struct tagNET_DVR_FIRMWARECODE_COND +{ + DWORD dwSize; + DWORD dwStartIndex; //ʼ + DWORD dwMaxNum; //32 + BYTE byRes[52]; +}NET_DVR_FIRMWARECODE_COND,*LPNET_DVR_FIRMWARECODE_COND; + +typedef struct tagNET_DVR_FIRMWARECODE +{ + WORD wIndex; + WORD wCodeLen; //ʶ볤ȣϲӦÿʱһжϣֶδ128뱨ʾû¹/ͻ˰汾 + BYTE byCode[MAX_IDCODE_LEN];//ʶ + BYTE byVersion[MAX_VERSIIN_LEN];//汾 + BYTE byRes[12]; +}NET_DVR_FIRMWARECODE,*LPNET_DVR_FIRMWARECODE; + +typedef struct tagNET_DVR_FIRMWARECODE_LIST +{ + DWORD dwSize; + DWORD dwValidCodeNum; //Ч + NET_DVR_FIRMWARECODE struCode[MAX_IDCODE_NUM]; + BYTE byRes[64]; +}NET_DVR_FIRMWARECODE_LIST,*LPNET_DVR_FIRMWARECODE_LIST; + +typedef struct tagNET_DVR_ONLINEUPGRADE_SERVER +{ + DWORD dwSize; + BYTE byConnectStatus; //0-δ,1- + BYTE byRes[1019]; +}NET_DVR_ONLINEUPGRADE_SERVER,*LPNET_DVR_ONLINEUPGRADE_SERVER; + +typedef struct tagNET_DVR_ONLINEUPGRADE_VERSION_COND +{ + DWORD dwSize; + BYTE byCheckFromSvr; //ǷҪӷ⣬0-Ҫ豸ԼĽ;1-Ҫ豸ἴʱӷǷ°汾 + BYTE byRes[59]; +}NET_DVR_ONLINEUPGRADE_VERSION_COND,*LPNET_DVR_ONLINEUPGRADE_VERSION_COND; + +typedef struct tagNET_DVR_ONLINEUPGRADE_VERSION_RET +{ + DWORD dwSize; + BYTE byNewVersionAvailable; //Ƿ°汾,0-,1- + BYTE byNewVersion[MAX_VERSIIN_LEN]; //°汾İ汾 + BYTE byChangeLog[SDK_LEN_2048]; //°汾µ + BYTE byRes[971]; +}NET_DVR_ONLINEUPGRADE_VERSION_RET,*LPNET_DVR_ONLINEUPGRADE_VERSION_RET; + +typedef struct tagNET_DVR_RECOMMEN_VERSION_COND +{ + DWORD dwSize; + BYTE byFirmwareCode[MAX_IDCODE_LEN]; + BYTE byFirmwareVersion[MAX_VERSIIN_LEN]; + BYTE byRes[60]; +}NET_DVR_RECOMMEN_VERSION_COND,*LPNET_DVR_RECOMMEN_VERSION_COND; + +typedef struct tagNET_DVR_RECOMMEN_VERSION_RET +{ + DWORD dwSize; + BYTE byRecommenUpgrade; //Ƽ,0-,1- + BYTE byRes[123]; +}NET_DVR_RECOMMEN_VERSION_RET,*LPNET_DVR_RECOMMEN_VERSION_RET; + +//ʪ +typedef struct tagNET_DVR_THSCREEN +{ + DWORD dwSize;//ṹС + BYTE byEnable;//öʱʹ + BYTE byTHOSDDisplay;//ʪʾOSDʾǷ, 0-1- + BYTE byRes[2]; // ֽ + NET_VCA_POINT struTHOSDPoint;//ʪʾOSDʾϽ + BYTE byTimingMode;//Уʱģʽ 0-ֶ1-Զ + BYTE byRes1; + WORD wInterval;//Уʱʱģʽ£ʱ[1,10080]m + BYTE byRes2[254]; +}NET_DVR_THSCREEN,*LPNET_DVR_THSCREEN; + +typedef struct tagNET_DVR_SENSOR_ADJUSTMENT +{ + DWORD dwSize;//ṹС + BYTE byType;//ģʽ0-£1-ң2-ת3-ͼӳǣ4-RGB, 5-, 6-RGB_Ex + BYTE bySensorNo;//Sensor [1,8] + BYTE byRes[2]; + int iAdjustMentRange;// [-100,100] תʱ[-30,30] ͼӳ[-10,10] + BYTE byR;//RGBRɫΧ0-100 + BYTE byG;//RGBGɫΧ0-100 + BYTE byB;//RGBBɫΧ0-100 + BYTE byRgbType;//RGBͣ0-1-ģʽ2-ֶģʽ + BYTE byBrightness;//ȣΧ0-100,Ĭֵ50 + BYTE byRes1[3]; + WORD wRex;//RGB(չ)RɫΧ0-2048 + WORD wGex;//RGB(չ)GɫΧ0-2048 + WORD wBex;//RGB(չ)BɫΧ0-2048 + BYTE byRes2[114]; +}NET_DVR_SENSOR_ADJUSTMENT,*LPNET_DVR_SENSOR_ADJUSTMENT; + +typedef struct tagNET_DVR_SENSOR_ADJUSTMENT_INFO +{ + DWORD dwSize;//ṹС + int iPan;//ֵ + int iTilt;//ֵ + int iRotation;//תֵ + int iFieldAngle;//ͼӳֵ + BYTE byR;//RGBRɫΧ0-100 + BYTE byG;//RGBGɫΧ0-100 + BYTE byB;//RGBBɫΧ0-100 + BYTE byRgbType;//RGBͣ0-1-ģʽ2-ֶģʽ + BYTE byBrightness;//ȣΧ0-100,Ĭֵ50 + BYTE byRes[3]; + WORD wRex;//RGB(չ)RɫΧ0-2048 + WORD wGex;//RGB(չ)GɫΧ0-2048 + WORD wBex;//RGB(չ)BɫΧ0-2048 + BYTE byRes1[114]; +}NET_DVR_SENSOR_ADJUSTMENT_INFO,*LPNET_DVR_SENSOR_ADJUSTMENT_INFO; + +typedef struct tagNET_DVR_SENSOR_RESET +{ + DWORD dwSize;//ṹС + BYTE bySensorNo;//Sensor[1,8];Sensor NoΪ0ʱ򣬱ʾȫ±ʾ + BYTE byRes[127]; +}NET_DVR_SENSOR_RESET,*LPNET_DVR_SENSOR_RESET; + +typedef struct tagNET_DVR_PANORAMAIMAGE +{ + DWORD dwSize;//ṹС + BYTE byFusionMode;//ģʽ0-ԭʼͼ1-ȫͼ + BYTE byPreviewMode;//ģʽ1-Ŀ꣬2-̶ʾ + BYTE byRes[126]; +}NET_DVR_PANORAMAIMAGE,*LPNET_DVR_PANORAMAIMAGE; + +typedef struct tagNET_DVR_RELOCATE_INFO +{ + DWORD dwSize;//ṹС + BYTE byTakeOverAddr[MAX_DOMAIN_NAME/*64*/]; //ӹ豸ĵַ + WORD wPort ; //豸˿ں + BYTE byRes[254] ; // +}NET_DVR_RELOCATE_INFO, *LPNET_DVR_RELOCATE_INFO; + +typedef struct tagNET_DVR_CONFERENCE_REGION +{ + DWORD dwSize; + BYTE byEnabled; //Ƿû0-1- + BYTE byRes1[3]; + NET_DVR_POINT struRegion[RECT_POINT_NUM]; //򣬾ΣʼΪ½ǣ˳ʱ뷽 + DWORD dwOutputWidth; //ڻ׼ֻܻȡ + DWORD dwOutputHeight; //ڻ׼ߣֻܻȡ + BYTE byRes2[32]; +}NET_DVR_CONFERENCE_REGION, *LPNET_DVR_CONFERENCE_REGION; + +typedef struct tagNET_DVR_TERMINAL_CALL_CFG +{ + DWORD dwSize; + BYTE byAnswerType; //Ӧʽ1-Զ2-Զܽӣ3-ֶ + BYTE byProtocolType; //ʹõЭͣ1-SIP2-H232 + BYTE byTransmissionProtocol; //Эͣ0-Ч1-TCP2-UDP + BYTE byRes[29]; +}NET_DVR_TERMINAL_CALL_CFG, *LPNET_DVR_TERMINAL_CALL_CFG; + +typedef struct tagNET_DVR_TERMINAL_CALL_INFO +{ + BYTE byTermianlURL[MAX_URL_LEN]; + DWORD dwCallRate;//ʣΧΪ32~6144λKbps () + BYTE byRes[124]; +}NET_DVR_TERMINAL_CALL_INFO, *LPNET_DVR_TERMINAL_CALL_INFO; + +typedef struct tagNET_DVR_TERMINAL_AUDIO_CTRL +{ + BYTE byMute; //Ƿ0-1- + BYTE byVolume; //ǾʱЧ1-100 + BYTE byAudioInputDisabled; //ֹƵ룬0-Ƶ룬1-ֹƵ + BYTE byAudioInputVolume; //ƵƵʱЧ1-100 + BYTE byRes[636]; +}NET_DVR_TERMINAL_AUDIO_CTRL, *LPNET_DVR_TERMINAL_AUDIO_CTRL; + +typedef struct tagNET_DVR_HOWLING_SUPPRESSION +{ + BYTE byEnabled; //ǷʹХ + BYTE byHsSensibility; //Х + BYTE byHsMode; //Хģʽ0-Ĭϣ1-٣2- + BYTE byRes1; + DWORD dwHsTime; //Хʱ䣬λms + BYTE byRes2[16]; +}NET_DVR_HOWLING_SUPPRESSION, *LPNET_DVR_HOWLING_SUPPRESSION; + +typedef struct tagNET_DVR_TERMINAL_INPUT_AUDIO +{ + DWORD dwChannel; //ͨ + BYTE byGainType; //ͣ1-棬2-ģ,3- + BYTE byEnableSimulate; //Ƿģ棬0-1- + BYTE byVolumeSimulate; //ģʱЧ1-100 + BYTE byEnableDigital; //Ƿ棬0-1- + BYTE byVolumeDigital; //ʱЧ1-100 + BYTE byRes1[3]; + NET_DVR_HOWLING_SUPPRESSION struHsParam; //ХƲ + BYTE byRes[604]; +}NET_DVR_TERMINAL_INPUT_AUDIO, *LPNET_DVR_TERMINAL_INPUT_AUDIO; + + +typedef union tagNET_DVR_TERMINAL_DETAIL_CTRL_PARAM +{ + BYTE byRes[640]; + NET_DVR_TERMINAL_CALL_INFO struCallInfo; + NET_DVR_TERMINAL_AUDIO_CTRL struAudioCtrl; + NET_DVR_TERMINAL_INPUT_AUDIO struInputAudio; +}NET_DVR_TERMINAL_DETAIL_CTRL_PARAM, *LPNET_DVR_TERMINAL_DETAIL_CTRL_PARAM; + +typedef struct tagNET_DVR_TERMINAL_CTRL_PARAM +{ + DWORD dwSize; + BYTE byOperateType; //ͣ1-2-ܽӣ3-У4-Ƶڣ5-Ҷϣ6-˫7-˫ + BYTE byRes1[3]; + NET_DVR_TERMINAL_DETAIL_CTRL_PARAM struCtrlParam; //Ʋ + BYTE byRes2[32]; +}NET_DVR_TERMINAL_CTRL_PARAM, *LPNET_DVR_TERMINAL_CTRL_PARAM; + +typedef struct tagNET_DVR_POS_INFO_OVERLAY +{ + DWORD dwSize; + BYTE byPosInfoOverlayEnable;// PosϢӿƣ0-ӣ1- + BYTE byOverlayType;//0-ӽ뿪1-ӽ롢뿪PASSID߶ + BYTE byRes[126]; +}NET_DVR_POS_INFO_OVERLAY, *LPNET_DVR_POS_INFO_OVERLAY; + + +typedef struct tagNET_DVR_CAMERA_WORK_MODE +{ + DWORD dwSize; + BYTE byWorkMode;//ģʽ0-ģʽ1-궨ģʽ + BYTE byPreviewImageMode;//Ԥͼģʽ0-ͼ1-ͼ2-ҵͼ + BYTE byRes[126]; +}NET_DVR_CAMERA_WORK_MODE, *LPNET_DVR_CAMERA_WORK_MODE; + +typedef struct tagNET_DVR_VCA_VERSION_LIST +{ + DWORD dwSize; //ṹ峤 + NET_DVR_VCA_VERSION struVcaVersion[NET_SDK_VERSION_LIST_LEN/*64*/];//㷨汾Ϣ + BYTE byRes[128]; +}NET_DVR_VCA_VERSION_LIST, *LPNET_DVR_VCA_VERSION_LIST; + +typedef struct tagNET_DVR_SETUP_CALIB_COND +{ + DWORD dwSize; + BYTE byCalibrateType;//궨ͣ0-δб궨1-Զ궨2-ֶ궨,3-ܱ궨 + BYTE byRes1[3]; + float fTiltAngle;//,λȣĬֵ0ǷΧ0-180,byCalibrateTypeΪ2ʱЧ + float fHeelAngle;//б,λȣбĬֵ0бǷΧ-90-90,byCalibrateTypeΪ2ʱЧ + float fHeight;//߶ȣ߶ȵλף߶Ĭֵ300ף߶ȷΧ200-500,byCalibrateTypeΪ2ʱЧ + NET_VCA_POLYGON struAutoCalibPolygon;//Զ궨򣬵byCalibrateTypeΪ1ʱЧ + BYTE byIntelligentType;//궨ͣ0- 1-2-ԣ3-쳣Ϊ⣻ֻڱ궨ʱNET_DVR_SETUP_CALIB_RESULTصݲЧ + BYTE byRes[127]; +}NET_DVR_SETUP_CALIB_COND, *LPNET_DVR_SETUP_CALIB_COND; + +typedef struct tagNET_DVR_SETUP_CALIB_RESULT +{ + DWORD dwSize; + BYTE byCalibrateType;//궨ͣ0-δб궨1-Զ궨2-ֶ궨,3-ܱ궨 + BYTE byRes1[3]; + float fTiltAngle;//,λȣĬֵ0ǷΧ0-180,byCalibrateTypeΪ2ʱЧ + float fHeelAngle;//б,λȣбĬֵ0бǷΧ-90-90,byCalibrateTypeΪ2ʱЧ + float fHeight;//߶ȣ߶ȵλף߶Ĭֵ300ף߶ȷΧ200-500,byCalibrateTypeΪ2ʱЧ + NET_VCA_POLYGON struCountPolygon;// + NET_DVR_PDC_ENTER_DIRECTION struEnterDirection; // 뷽 + NET_VCA_LINE struLine;// + BYTE byRes[128]; +}NET_DVR_SETUP_CALIB_RESULT, *LPNET_DVR_SETUP_CALIB_RESULT; + +typedef struct tagNET_DVR_CALL_QUERY_COND +{ + DWORD dwSize; + BYTE bySearchID[MAX_SEARCH_ID_LEN]; //ʶ + NET_DVR_TIME struStartTime; //ʼʱ + NET_DVR_TIME struEndTime; //ʱ + BYTE byCallType; //ͣ1-ѽӣ2-δӣ3-Ѳ4- + BYTE byRes1[3]; + DWORD dwMaxResults; //β෵ظ + DWORD dwSearchPos; //ʼ + BYTE byRes2[32]; +}NET_DVR_CALL_QUERY_COND, *LPNET_DVR_CALL_QUERY_COND; + +typedef struct tagNET_DVR_CALL_QUERY_SINGLE +{ + DWORD dwSize; + BYTE byCallType; //ͣ1-ѽӣ2-δӣ3-Ѳ + BYTE byRes1[3]; + BYTE byTerminalName[TERMINAL_NAME_LEN]; //ն + BYTE byAddressURL[MAX_URL_LEN]; //ԶURLַ + NET_DVR_TIME struStartTime; //пʼʱ + NET_DVR_TIME struEndTime; //нʱ + BYTE byRes2[32]; +}NET_DVR_CALL_QUERY_SINGLE, *LPNET_DVR_CALL_QUERY_SINGLE; + + +typedef enum tagCALL_QUERY_RESULT_STATUS +{ + CALL_QUERY_RESULT_OK = 0, //ɹѯ + CALL_QUERY_RESULT_FAIL, //ѯʧܣδ֪ + CALL_QUERY_RESULT_MORE, //ɹѯ иûз + CALL_QUERY_RESULT_NOMATCH, //ûвѯƥ + CALL_QUERY_RESULT_PARAMERROR, //ѯ + CALL_QUERY_RESULT_INVALIDTIME, //ѯʱЧ + CALL_QUERY_RESULT_TIMEOUT, //ѯʱ +}CALL_QUERY_RESULT_STATUS; + +typedef struct tagNET_DVR_CALL_QUERY_RESULT +{ + DWORD dwSize; + BYTE bySearchID[MAX_SEARCH_ID_LEN]; //ʶ + BYTE byStatus; //ѯ״̬ οCALL_QUERY_RESULT_STATUSṹ + BYTE byRes[3]; // + DWORD dwCount; //ʵʲѯĽ + BYTE *pResults; //ݣdwCountNET_DVR_CALL_QUERY_SINGLE,ҪԤȷڴ + BYTE byRes2[32]; +}NET_DVR_CALL_QUERY_RESULT, *LPNET_DVR_CALL_QUERY_RESULT; + +typedef struct tagNET_DVR_CONFERENCE_CALL_INFO +{ + BYTE byConferenceID[MAX_ID_LEN]; //ID + BYTE byConferenceName[NAME_LEN]; // + NET_DVR_TIME struStartTime; //鿪ʼʱ + NET_DVR_TIME struEndTime; //ʱ + BYTE byRes[512]; +}NET_DVR_CONFERENCE_CALL_INFO, *LPNET_DVR_CONFERENCE_CALL_INFO; + +typedef union tagNET_DVR_CALL_INFO +{ + BYTE byRes[640]; + NET_DVR_TERMINAL_CALL_INFO struTerminalCallInfo; //ն˵ԵϢ + NET_DVR_CONFERENCE_CALL_INFO struConferenceCallInfo; //Ϣ +}NET_DVR_CALL_INFO, *LPNET_DVR_CALL_INFO; + +typedef struct tagNET_DVR_CONFERENCE_CALL_ALARM +{ + DWORD dwSize; + BYTE byAlarmType; //ͣ1-У 2-״̬л3-ն + BYTE byCallType; //ͣΪ1ʱЧ1-ն˵ԵУ2- + BYTE byAutoAnswer; //ǷԶ0-1- + BYTE byCallStatusSwitch; //״̬лͣΪ2ʱЧ1-ʼУ2-гɹ3-н4-Զ˹Ҷ + NET_DVR_CALL_INFO struCallInfo; //Ϣ + BYTE byRes2[32]; +}NET_DVR_CONFERENCE_CALL_ALARM, *LPNET_DVR_CONFERENCE_CALL_ALARM; + +typedef struct tagNET_DVR_TERMINAL_INPUT_CFG +{ + DWORD dwSize; + DWORD dwInputNo; //ΪƵڱ + BYTE byStreamType;//ͣ0-1-2- + BYTE byRes[31]; +}NET_DVR_TERMINAL_INPUT_CFG, *LPNET_DVR_TERMINAL_INPUT_CFG; + +typedef struct tagNET_DVR_AUDIO_STATUS +{ + BYTE byMute; //Ƿ0-1- + BYTE byVolume; //1-100ǾʱЧ + BYTE byAudioInputDisabled; //Ƶ룬0-1- + BYTE byAudioInputVolume; //Ƶ1-100ƵʱЧ + BYTE byRes[32]; +}NET_DVR_AUDIO_STATUS, *LPNET_DVR_AUDIO_STATUS; + +typedef struct tagNET_DVR_TERMINAL_CONFERENCE_STATUS +{ + DWORD dwSize; + BYTE byConferenceState; //״̬0-У1-æµУ2-У3- + BYTE byConferenceType; //ͣ1-Ե㣬2-MCU + BYTE byDualStreamEnabled; //Ƿ˫0-δ1- + BYTE byMicPowerEnabled; //˷ԴǷ0-δ1- + DWORD dwInputNo; //ʹõƵں + NET_DVR_CALL_INFO struCallInfo; //Ϣ + NET_DVR_AUDIO_STATUS struAudioStatus; //Ƶ״̬ + BYTE byRes2[32]; +}NET_DVR_TERMINAL_CONFERENCE_STATUS, *LPNET_DVR_TERMINAL_CONFERENCE_STATUS; + +//նעGKϢ +typedef struct tagNET_DVR_TERMINAL_GK_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿ + BYTE byRegisterState; //ע״̬0-δעᣬ1-עᣬֻ + BYTE byRes1[2]; + NET_DVR_IPADDR struGKIP; //GK IP + WORD wGKPort; //GK˿ں + BYTE byRes2[2]; + BYTE byRegisterName[REGISTER_NAME_LEN]; //նעᵽGK + BYTE byPassword[PASSWD_LEN]; //նעᵽGK + BYTE byRes3[16]; +}NET_DVR_TERMINAL_GK_CFG, *LPNET_DVR_TERMINAL_GK_CFG; + +//οز +typedef struct tagNET_DVR_WIN_ROAM_SWITCH_CFG +{ + DWORD dwSize; + BYTE byEnableRoam; //ǷΣ0-񣬷0- + BYTE byRes[31]; +}NET_DVR_WIN_ROAM_SWITCH_CFG,*LPNET_DVR_WIN_ROAM_SWITCH_CFG; + +typedef struct tagNET_DVR_LED_OUTPUT_CFG +{ + DWORD dwSize; + BYTE byEnableZoom; //Ƿţ0-1- + BYTE byAutoCutBlackEdge; //ǷԶüڱߣ0-1- + BYTE byRes1[2]; + WORD wLEDWidth; //ֱʿ + WORD wLEDHeight; //ֱʸ + DWORD dwRefreshRate; //ˢƵ + DWORD dwInputNO; //ͨ + BYTE byRes2[32]; +}NET_DVR_LED_OUTPUT_CFG, *LPNET_DVR_LED_OUTPUT_CFG; + +typedef struct tagNET_DVR_LED_OUTPUT_PORT_CFG +{ + DWORD dwSize; + BYTE byEnabled; //Ƿʹܣ0-1- + BYTE byRes1[3]; + DWORD dwPortNum; //Ķ˿ڸ + DWORD dwPortNo[MAX_OUTPUT_PORT_NUM]; //Ķ˿ں + BYTE byRes2[64]; +}NET_DVR_LED_OUTPUT_PORT_CFG, *LPNET_DVR_LED_OUTPUT_PORT_CFG; + +typedef struct tagNET_DVR_LINE_COLUMN_INFO +{ + WORD wLine; //к + WORD wColumn; //к +}NET_DVR_LINE_COLUMN_INFO, *LPNET_DVR_LINE_COLUMN_INFO; + +typedef struct tagNET_DVR_LED_DISPLAY_AREA +{ + DWORD dwSize; + NET_DVR_LINE_COLUMN_INFO struLCInfo; //ʾʼλ(տк) + WORD wWidth; //տ + WORD wHeight; //տ + WORD wRecvCardWidth; //տȴСΪ0ʹö˿ڲнտС + WORD wRecvCardHeigt; //տ߶ȴСΪ0ʹö˿ڲнտС + BYTE byRes[32]; +}NET_DVR_LED_DISPLAY_AREA, *LPNET_DVR_LED_DISPLAY_AREA; + +typedef struct tagNET_DVR_LED_RECV_CARD_INFO +{ + NET_DVR_LINE_COLUMN_INFO struPos; //տλ + WORD wRecvCardWidth; //տȴС + WORD wRecvCardHeigt; //տ߶ȴС +}NET_DVR_LED_RECV_CARD_INFO, *LPNET_DVR_LED_RECV_CARD_INFO; + +typedef struct tagNET_DVR_LED_PORT_BACKUP +{ + BYTE byEnabled; //Ƿö˿ڱݣ0-1- + BYTE byPortMode; //˿ģʽ1-ڣ2-ݿ + BYTE byRes1[2]; + DWORD dwPairPort; //Զ˿ںţ˿Ϊʱ˲Ϊݿڶ˿ںţ˿Ϊݿʱ˲Ϊڶ˿ں + BYTE byRes2[16]; +}NET_DVR_LED_PORT_BACKUP, *LPNET_DVR_LED_PORT_BACKUP; + +typedef struct tagNET_DVR_LED_PORT_CFG +{ + DWORD dwSize; + BYTE byEnabled; //Ƿøö˿ڣ0-1- + BYTE byRes1[3]; + NET_DVR_LED_PORT_BACKUP struLedPortBackup; //˿ڱݲ + DWORD dwRecvCardNum; //˿ӵĽտ + NET_DVR_LED_RECV_CARD_INFO struRecvCard[MAX_SINGLE_PORT_RECVCARD_NUM]; //տϢ + DWORD dwPortNo; //˿ںţȡж˿ڲʱЧ + BYTE byRes2[64]; +}NET_DVR_LED_PORT_CFG, *LPNET_DVR_LED_PORT_CFG; + +typedef struct tagNET_DVR_LED_DISPLAY_CFG +{ + DWORD dwSize; + NET_DVR_COLOR_TEMPERATURE_CFG struColorTemp; //ɫ² + NET_DVR_VIDEO_OUT_CFG struVoutCfg; //ʾЧ + BYTE byRes[32]; +}NET_DVR_LED_DISPLAY_CFG, *LPNET_DVR_LED_DISPLAY_CFG; + +typedef struct tagNET_DVR_LED_TEST_SIGNAL_CFG +{ + DWORD dwSize; + BYTE byEnabled; //Ƿòźţ0-ã1- + BYTE bySignalType; //źͣ1-2-ƣ3-״4-5-ˮƽʹֱҽ壬6-̣0xff-Զɫ + BYTE byRes1[2]; + NET_DVR_RGB_COLOR struSignalColor; //źɫźΪ0xffʱЧ + BYTE byRes[32]; +}NET_DVR_LED_TEST_SIGNAL_CFG, *LPNET_DVR_LED_TEST_SIGNAL_CFG; + +typedef struct tagNET_DVR_LED_NOSIGNAL_CFG +{ + DWORD dwSize; + BYTE byNoSignalMode; //źʾģʽ1-2-ʾLOGO3-ʾԶͼƬ + BYTE byRes[63]; +}NET_DVR_LED_NOSIGNAL_CFG, *LPNET_DVR_LED_NOSIGNAL_CFG; + +typedef struct tagNET_DVR_LED_INPUT_CFG +{ + DWORD dwSize; + DWORD dwResolutionWidth; //ֱʿֻ + DWORD dwResolutionHeight; //ֱʸߣֻ + DWORD dwRefreshRate; //źˢƵʣֻ + NET_DVR_SCREEN_VGA_CFG struVgaCfg; //VGAźŵVGAʱɵ + BYTE byRes[32]; +}NET_DVR_LED_INPUT_CFG, *LPNET_DVR_LED_INPUT_CFG; + +typedef struct tagNET_DVR_LED_RECV_CARD_CFG_COND +{ + DWORD dwSize; + DWORD dwOutputNo; // + NET_DVR_LINE_COLUMN_INFO struPosStart; //տʼλ + NET_DVR_LINE_COLUMN_INFO struPosEnd; //տλ + BYTE byRes[32]; +}NET_DVR_LED_RECV_CARD_CFG_COND, *LPNET_DVR_LED_RECV_CARD_CFG_COND; + +typedef struct tagNET_DVR_LED_GAMMA_CFG_COND +{ + DWORD dwSize; + DWORD dwOutputNo; //; + NET_DVR_LINE_COLUMN_INFO struPosStart; //տʼλ + NET_DVR_LINE_COLUMN_INFO struPosEnd; //տλ + BYTE byGammaType; //GammaͣGammaʱЧ0-RGBGamma1-ɫGamma2-ɫGamma3-ɫGamma + BYTE byRes[31]; +}NET_DVR_LED_GAMMA_CFG_COND, *LPNET_DVR_LED_GAMMA_CFG_COND; + +typedef struct tagNET_DVR_LED_GAMMA_CFG +{ + DWORD dwSize; + WORD wGammaValue[MAX_GAMMA_X_VALUE]; //GAMMAYȡֵÿԪȡֵ0-65535ԶģʽʱЧ + BYTE byGammaModel; //GAMMAģʽ0-Զģʽ1-ҹģʽ12-ҹģʽ23-ģʽ4-ģʽ15-ģʽ2 + BYTE byRes[127]; +}NET_DVR_LED_GAMMA_CFG, *LPNET_DVR_LED_GAMMA_CFG; + +typedef struct tagNET_DVR_LED_CLOCK_CFG +{ + DWORD dwDclkRate; //ʱdclkƵʣʵֵ10λMHzʵֵΧ1.0-31.3 + DWORD dwGclkRate; //ˢʱgclkƵʣʵֵ10λMHzʵֵΧ1.0-31.3 + DWORD dwGclkCountNum; //300ns gclkֵ + BYTE byDclkDutyRatio; //dclkʱռձȣȡֵ255075 + BYTE byDclkPhase; //dclkλȡֵ0,1,2,3 + BYTE byGclkNum; //ˢ1ҪЧgclk0-255 + BYTE byRes[17]; +}NET_DVR_LED_CLOCK_CFG, *LPNET_DVR_LED_CLOCK_CFG; + +typedef struct tagNET_DVR_LED_RECV_CFG +{ + DWORD dwSize; + NET_DVR_LED_CLOCK_CFG struClockCfg; //ʱز + BYTE byGrayLevel; //Ҷȵȼȡֵ1314 + BYTE byRefreshRate; //ˢ±ʣȡֵ1-6 + BYTE byLineScanNum; //ɨ0-255 + BYTE byRefreshCompleteGrayNum; //ˢҽ0-255 + DWORD dwHBlank; //ʱ䣬λgclkʱӸȡֵ1-65535 + DWORD dwAfterglowCtrl; //Ϳƽʱ䣬λgclkʱӸȡֵ1-65535 + DWORD dwLineFeedTime; //ʱ䣬λgclkʱӸȡֵ1-65535 + BYTE byRes[128]; +}NET_DVR_LED_RECV_CFG, *LPNET_DVR_LED_RECV_CFG; + +typedef struct tagNET_DVR_LED_REGISTOR_VALUE +{ + BYTE byChip1High; //оƬ1ֽ + BYTE byChip1Low; //оƬ1ֽ + BYTE byChip2High; //оƬ2ֽ + BYTE byChip2Low; //оƬ2ֽ + BYTE byChip3High; //оƬ3ֽ + BYTE byChip3Low; //оƬ3ֽ + BYTE byChip4High; //оƬ4ֽ + BYTE byChip4Low; //оƬ4ֽ + BYTE byChip5High; //оƬ5ֽ + BYTE byChip5Low; //оƬ5ֽ + BYTE byChip6High; //оƬ6ֽ + BYTE byChip6Low; //оƬ6ֽ + BYTE byRes[4]; +}NET_DVR_LED_REGISTOR_VALUE, *LPNET_DVR_LED_REGISTOR_VALUE; + +typedef struct tagNET_DVR_LED_RECV_REGISTOR +{ + BYTE byEliminateGhostShadowLevel; //¹Ӱȼ0-5 + BYTE byEliminateShadowy; //һɨƫȼ0-15 + BYTE byGrayEqualize1; //ͻƫɫ10-3 + BYTE byGrayEqualize2; //ͻƫɫ20-15 + BYTE byEnableGrayUniformity; //ͻҾǷ0-أ1- + BYTE byDisableHGrayStripes; //ͻҺǷ0-أ1- + BYTE byGhostShadowEnhancedMode1; //¹Ӱǿģʽ1Ƿ0-أ1- + BYTE byGhostShadowEnhancedMode2; //¹Ӱǿģʽ2Ƿ0-أ1- + BYTE byClearBadPoint; //ȥʹܣ0-ʹܣ1-ʹ + BYTE byEnableSelfDefineRegistor; //ǷԶĴֵ0-1- + BYTE byRes1[2]; + NET_DVR_LED_REGISTOR_VALUE struRegistorValue; //ԶĴ + BYTE byEnabledExGradientOptimition; //Żأ0-رգ!0- + BYTE byDummyGClockCycle; //Dummy GClockڣŻʱЧλgclk + BYTE byDummyGClockHighTime; //Dummy GClockߵƽʱ䣬ŻʱЧλ8ns + BYTE byFirstGClockExtendedTime; //һGClockչʱ䣬ŻʱЧλ8ns + BYTE byRes[28]; +}NET_DVR_LED_RECV_REGISTOR, *LPNET_DVR_LED_RECV_REGISTOR; + +typedef struct tagNET_DVR_LED_RECV_ADVANCED_CFG +{ + DWORD dwSize; + NET_DVR_LED_RECV_REGISTOR struFirstRegistor; //һտ߼ԶĴֵΪоƬĴֵ + NET_DVR_LED_RECV_REGISTOR struSecondRegistor; //ڶտ߼ԶĴֵΪоƬĴֵ + NET_DVR_LED_RECV_REGISTOR struThirdRegistor; //տ߼ԶĴֵΪоƬĴֵ + BYTE byRes2[64]; +}NET_DVR_LED_RECV_ADVANCED_CFG,*LPNET_DVR_LED_RECV_ADVANCED_CFG; + +typedef struct tagNET_DVR_LED_CHECK_COND +{ + DWORD dwSize; + DWORD dwOutputNo; // + NET_DVR_LINE_COLUMN_INFO struPosStart; //տʼλ + BYTE byStartPosType; //ʼλͣ0-ʹýտʼλã1-ʹλ + BYTE byRes1[3]; + DWORD dwXCoordinate; /*ϽʼX*/ + DWORD dwYCoordinate; /*ϽY*/ + DWORD dwWidth; /**/ + DWORD dwHeight; /*߶*/ + BYTE byRes[8]; +}NET_DVR_LED_CHECK_COND, *LPNET_DVR_LED_CHECK_COND; + +//ѯʽ +enum ADDR_QUERY_TYPE +{ + QUERYSVR_BY_COUNTRYID = 0, //ұŲѯַ + QUERYSVR_BY_SERVERTYPE = 1, // + QUERYDEV_BY_NICKNAME_DDNS = 2, //dzƴhiDDNSϲѯ豸Ϣ + QUERYDEV_BY_SERIAL_DDNS = 3, //кŴhiDDNSϲѯ豸Ϣ + CHECKDEV_BY_NICKNAME_DDNS = 4,//dzƴhiDDNS豸Ϣ + CHECKDEV_BY_SERIAL_DDNS = 5, //кŴhiDDNS豸Ϣ + QUERYDEV_BY_NICKNAME_IPSERVER = 6, //dzƴIPServerϲѯ豸Ϣ + QUERYDEV_BY_SERIAL_IPSERVER = 7 //dzƴIPServerϲѯ豸Ϣ +}; +#define CLIENT_VERSION_LEN 64 +//ұŲѯṹ +typedef struct tagNET_DVR_QUERY_COUNTRYID_COND +{ + WORD wCountryID; //ұ,ȡֵһ + char szSvrAddr[MAX_DOMAIN_NAME];//ַ,ʾȥĸϲѯĿϢ + char szClientVersion[CLIENT_VERSION_LEN];//ͻ˰汾Ϣ,:iVMS4500 V4.0.0.0 build20150112 + BYTE byRes[382]; +}NET_DVR_QUERY_COUNTRYID_COND,*LPNET_DVR_QUERY_COUNTRYID_COND; + +//ұŲѯķؽṹ +typedef struct tagNET_DVR_QUERY_COUNTRYID_RET +{ + char szResolveSvrAddr[MAX_DOMAIN_NAME];//ַ(豸ע) + char szAlarmSvrAddr[MAX_DOMAIN_NAME];//ַ + BYTE byRes[1024]; +}NET_DVR_QUERY_COUNTRYID_RET,*LPNET_DVR_QUERY_COUNTRYID_RET; + +//Ͳѯṹ +typedef struct tagNET_DVR_QUERY_SERVERTYPE_COND +{ + WORD wSvrType; //, 6-ֻͷ + char szSvrAddr[MAX_DOMAIN_NAME];//ַ,ʾȥĸϲѯĿϢ + char szClientVersion[CLIENT_VERSION_LEN];//ͻ˰汾Ϣ + BYTE byRes[382]; +}NET_DVR_QUERY_SERVERTYPE_COND, *LPNET_DVR_QUERY_SERVERTYPE_COND; + +//Ͳѯķؽṹ +typedef struct tagNET_DVR_QUERY_SERVERTYPE_RET +{ + char szSvrAddr[MAX_DOMAIN_NAME]; //ַ + WORD wSvrPort; //˿ + BYTE byRes[446]; +}NET_DVR_QUERY_SERVERTYPE_RET, *LPNET_DVR_QUERY_SERVERTYPE_RET; + +//hiDDNSϲѯϵṹ +typedef struct tagNET_DVR_QUERY_DDNS_COND +{ + char szResolveSvrAddr[MAX_DOMAIN_NAME];//ַ + char szDevNickName[MAX_DOMAIN_NAME]; //豸ڽϵı + char szDevSerial[SERIALNO_LEN]; //豸к + char szClientVersion[CLIENT_VERSION_LEN];//ͻ˰汾Ϣ,:iVMS4500 V4.0.0.0 build20150112 + BYTE byRes[272]; // +}NET_DVR_QUERY_DDNS_COND,*LPNET_DVR_QUERY_DDNS_COND; + +//hiDDNSϲѯصĽṹ +typedef struct tagNET_DVR_QUERY_DDNS_RET +{ + char szDevIP[SDK_MAX_IP_LEN]; //豸IPַ + WORD wCmdPort; //ƶ˿ڣSDKӶ˿ڣ + WORD wHttpPort; //http˿ + BYTE byRes[460]; +}NET_DVR_QUERY_DDNS_RET,*LPNET_DVR_QUERY_DDNS_RET; + +//hiDDNSϷصĽṹ +typedef struct tagNET_DVR_CHECK_DDNS_RET +{ + BYTE byDevStatus; //豸״̬,0-,1-Ҳ,2-豸,3-豸ڵǰ + BYTE byRes1; + NET_DVR_QUERY_DDNS_RET struQueryRet; //ַϢ + WORD wRegionID; //ǰ豸ע[1,2,3̫,4й,5ŷ,6] + BYTE byRes2[508]; +}NET_DVR_CHECK_DDNS_RET,*LPNET_DVR_CHECK_DDNS_RET; + +//IPServerϲѯṹ +typedef struct tagNET_DVR_QUERY_IPSERVER_COND +{ + char szResolveSvrAddr[MAX_DOMAIN_NAME];//ַ + WORD wResolveSvrPort; //˿ + char szDevNickName[MAX_DOMAIN_NAME]; //豸ڽϵı + char szDevSerial[SERIALNO_LEN]; //豸к + BYTE byRes[334]; // +}NET_DVR_QUERY_IPSERVER_COND,*LPNET_DVR_QUERY_IPSERVER_COND; + +//IPServerϲѯصĽṹ +typedef struct tagNET_DVR_QUERY_IPSERVER_RET +{ + char szDevIP[SDK_MAX_IP_LEN]; //豸IPַ + WORD wCmdPort; //ƶ˿ڣSDKӶ˿ڣ + BYTE byRes[462]; +}NET_DVR_QUERY_IPSERVER_RET,*LPNET_DVR_QUERY_IPSERVER_RET; + +typedef struct tagNET_DVR_CURRENT_VALID_PORT +{ + DWORD dwSize; + WORD wHTTPPort; + BYTE byRes[122]; +}NET_DVR_CURRENT_VALID_PORT,*LPNET_DVR_CURRENT_VALID_PORT; + +typedef struct tagNET_DVR_AUDIO_CHANNEL +{ + DWORD dwChannelNum; //ͨ + BYTE byres[32]; // +}NET_DVR_AUDIO_CHANNEL, *LPNET_DVR_AUDIO_CHANNEL; + +//ṹ +typedef struct tagNET_DVR_STREAMENCRYPTION_COND +{ + DWORD dwSize; //ṹС + DWORD dwChan; //Ԥͨ + BYTE byRes[128]; +}NET_DVR_STREAMENCRYPTION_COND, *LPNET_DVR_STREAMENCRYPTION_COND; + +//Ϣṹ +typedef struct tagNET_DVR_STREAMENCRYPTION_CFG +{ + DWORD dwSize; //ṹС + BYTE byEnable; //ܣ0~رգ1~ + BYTE byRes[255]; +}NET_DVR_STREAMENCRYPTION_CFG, *LPNET_DVR_STREAMENCRYPTION_CFG; + +//У׼GPSγȲ +typedef struct tagNET_DVR_REVISE_GPS_CFG +{ + DWORD dwSize; //ṹС + BYTE byLatitudeType ;//γͣ0-γ1-γ + BYTE byLongitudeType ;// ͣ0-ȣ1- + BYTE byMode ;//ģʽ 0-Ĭϣ1-Զ2-ֶ + BYTE byRes; + NET_DVR_LLI_PARAM struLatitude; /*γ*/ + NET_DVR_LLI_PARAM struLongitude; /**/ + BYTE byRes1[300]; +}NET_DVR_REVISE_GPS_CFG, *LPNET_DVR_REVISE_GPS_CFG; + +typedef struct tagNET_DVR_PDC_RECOMMEND +{ + DWORD dwSize; + WORD wWidth;//Ƽֵ[0, 1000] + BYTE byRes[126]; +}NET_DVR_PDC_RECOMMEND,*LPNET_DVR_PDC_RECOMMEND; + +typedef struct tagNET_DVR_FLASHSTORAGE_REMOVE +{ + DWORD dwSize; + DWORD dwChannel; + BYTE byPDCRemoveEnable;//ʹ 0-1- + BYTE byRes[127]; +}NET_DVR_FLASHSTORAGE_REMOVE,*LPNET_DVR_FLASHSTORAGE_REMOVE; + +/********************************DS-TME4XXƻ Begin****************************/ +typedef struct tagNET_DVR_PARKING_CARD +{ + DWORD dwSize; + DWORD dwChannel;//Ĭ1ݶͨ豸 + char szCardNo[MAX_CARDNO_LEN/*48*/];// + BYTE byCardType;//Ƭ 0-ʱ1-̶ + BYTE byCardStatus;//Ƭ״̬ 0-1-ʧ2-ע + BYTE byChargeRuleID;//շѹID + BYTE byDelete;//Ƿɾ 0-ɾ1-ɾ + NET_DVR_TIME_V30 struStartTime;//Чʼʱ + NET_DVR_TIME_V30 struEndTime;//Чʱ + BYTE byRes[128]; +}NET_DVR_PARKING_CARD,*LPNET_DVR_PARKING_CARD; + +//ڿƬϢϴ +typedef struct tagNET_DVR_GATE_CARDINFO +{ + DWORD dwSize; + NET_VCA_DEV_INFO struDevInfo; + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + char szCardNo[MAX_CARDNO_LEN/*48*/];// + char szPassVehicleID[MAX_VEHICLE_ID_LEN];//Ψһʶ + char szInVehicleID[MAX_VEHICLE_ID_LEN];//ʱΨһʶ + NET_DVR_TIME_V30 struSwipeTime;//ˢʱ + NET_DVR_TIME_V30 struCardTime;//Ƭʱ䣬볡ʱдʱ䣬ֻԳƱã0ʾ볡ʱ + BYTE byLetPass;//ڷзʽ 0-(CardType == ֽƱ)Ҫշѣ1-У2-շѷ + BYTE byCardType;// 0-̶1-ʱ2-ֽƱ + BYTE byRes[126]; +}NET_DVR_GATE_CARDINFO, *LPNET_DVR_GATE_CARDINFO; + +//̨ҵϴ +typedef struct _tagNET_LOADING_DOCK_OPERATEINFO_ +{ + DWORD dwSize; //ṹ + BYTE byAbsTime[32]; //ʱ,yyyymmddhhmmssxxx,e.g.20090810235959999 λΪ + BYTE byParkingNo[MAX_PARKNO_LEN/*16*/];//λ + DWORD dwIndex; // + char sLicense[MAX_LICENSE_LEN/*16*/]; //ƺ,עжСҲ복ƺ룬Сֺͳƺмÿոָ + BYTE byCurrentWorkerNumber;//ǰҵ + BYTE byCurrentGoodsLoadingRate;//ǰװ 0- 1- 2- 3- 4- + BYTE byDoorsStatus;//״̬ 0-Źر 1-ſ + BYTE byRes1; //ֽ + DWORD dwBackPicDataLength;//ͼƬ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64)) //win64linux64ָΪ8ֽ + BYTE *pBackPicDataBuffer; //ͼƬָ +#else + BYTE* pBackPicDataBuffer; // ͼƬָ + BYTE byRes2[4]; +#endif + DWORD dwChannel; //ͨţ0-֧֣ϵ豸֧ͨŷأ + BYTE byRes[508]; +}NET_LOADING_DOCK_OPERATEINFO, *LPNET_LOADING_DOCK_OPERATEINFO; + +//ڸϢϴ(COMM_GATE_CHARGEINFO_UPLOAD) +typedef struct tagNET_DVR_GATE_CHARGEINFO +{ + DWORD dwSize; + NET_VCA_DEV_INFO struDevInfo; + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + char sLicense[MAX_LICENSE_LEN]; // + char szCardNo[48]; + NET_DVR_TIME_V30 struEntranceTime; + NET_DVR_TIME_V30 struDepartureTime; + char szDepartureID[32]; //Ψһʾ + char szEntranceID[32]; //볡Ψһʾ + DWORD dwTotalCost; //ʵշѽ*100 + char szOperateName[32]; //ѻΪ"offline" + BYTE byChargeRuleId; //շѹcenterId + BYTE byVehicleType;//ͣ0-1-Сͳ2-ͳ + BYTE byRes[127];//Ԥ +}NET_DVR_GATE_CHARGEINFO,*LPNET_DVR_GATE_CHARGEINFO; + +//ͣͣƽṹ +typedef struct tagNET_DVR_PARKING_CARD_CTRL_PARAM +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byCardType;//Ƭ 0-ʱ + BYTE byDeleteALL;//Ƿȫɾ 0-ɾ1-ɾ + BYTE byRes[62]; +}NET_DVR_PARKING_CARD_CTRL_PARAM,*LPNET_DVR_PARKING_CARD_CTRL_PARAM; + + +//TMEץͼϴ +typedef struct tagNET_DVR_TME_VEHICLE_RESULT_ +{ + DWORD dwSize; + WORD wLaneid; //132ţԾ + BYTE byCamLaneId; //Ӧ116õijţԾͬ + BYTE byRes1; // + DWORD dwChanIndex; //ͨ + NET_DVR_PLATE_INFO struPlateInfo; //Ϣṹ + NET_DVR_VEHICLE_INFO struVehicleInfo; //Ϣ + BYTE byMonitoringSiteID[48]; //ʾ + BYTE byDeviceID[48]; //豸 + BYTE byDir; //ʾ0- 1 볡2 + BYTE byRes2; + WORD wBackList; //ΪǷ񱨾 0 ʾΪ 1 ʾֹ + DWORD dwPicNum; //ͼƬpicGroupNumͬϢͼƬͼƬϢstruVehicleInfoEx + NET_ITS_PICTURE_INFO struPicInfo[4]; //ͼƬϢ,ݶ4ͼ + BYTE byPassVehicleID[32]; //ΨһID + BYTE byCardNo[48]; // + BYTE bySwipeTime[32];//ˢʱ ʱʽΪyyyymmddhh24missfff + DWORD dwCharge; //շѽ ֣ + BYTE byHistory; //Ƿʷ 0- 1- + BYTE byLetPass; //ǷѷУ0-δУ1- 2-δ֪ + BYTE byRes3[186]; +} NET_DVR_TME_VEHICLE_RESULT, *LPNET_DVR_TME_VEHICLE_RESULT; + +//شŹעϢ +typedef struct tagNET_DVR_MVMRegisterInfo_ +{ + DWORD dwSize; //ṹС + char sDetectorID[16]; //ID + char sManagerID[16]; //ID + char sSim[20]; //Ϣ + DWORD dwLocalIP; //IPv4ַdwLocalIP=0x01020304,IPַΪ1.2.3.4 + DWORD dwLocalIPMask; //룬ʽͬdwLocalIP + DWORD dwLocalGateway; //أʽͬdwLocalIP + DWORD dwDstIP; //ĿIPʽͬdwLocalIP + BYTE byMACAddr[6]; //macַ + WORD wLocalPort; //ض˿ + WORD wFirmwareYear; //汾 + BYTE byFirmwareMonth; //汾· + BYTE byFirmwareDay; //汾 + BYTE byMajorVersion; //汾Сǰ + BYTE byMinorVersion; //汾С + BYTE byRes[170]; +}NET_DVR_MVMRegisterInfo, *LPNET_DVR_MVMRegisterInfo; + +//ش״̬Ϣ +typedef struct tagNET_DVR_SingleMagneticStatus_ +{ + DWORD dwSize; //ṹС + char sDetectorID[16]; //ID + char sManagerID[16]; //ID + char sParkNum[16]; //λ + NET_DVR_TIME_V30 struDetectorTime; //ʱ + DWORD dwRssi; //źǿȣʵֵΧ-137~0dbm˴ûзţΪʵֵľֵ + BYTE byParkinglotState; //λ״̬0-޳1-г + BYTE byBatteryState; //״̬0-100%1-75%2-50%3-25%4-С5% + BYTE byDeviceState; //豸״̬ 0-1- + BYTE byCMD; //0-λ仯1- + BYTE byRes[184]; +}NET_DVR_SingleMagneticStatus, *LPNET_DVR_SingleMagneticStatus; + +//Ϣͬ +typedef struct tagNET_DVR_PARKING_VEHICLE +{ + DWORD dwSize; + DWORD dwChannel;//Ĭ1ݶͨ豸 + char szLicense[MAX_LICENSE_LEN/*16*/];//ƺ + char szRelateCardNo[MAX_CARDNO_LEN/*48*/];// + NET_DVR_TIME_V30 struStartTime;//Чʼʱ + NET_DVR_TIME_V30 struEndTime;//Чʱ + BYTE byVehicleType;//ͣ0-1-Сͳ2-ͳ + BYTE byPlateColor;//ɫο VCA_PLATE_COLOR + BYTE byRes[126]; +}NET_DVR_PARKING_VEHICLE,*LPNET_DVR_PARKING_VEHICLE; + +//ɷѽϢ +typedef struct tagNET_DVR_CHARGEACCOUNT_CFG +{ + DWORD dwSize;//ṹС + float fAccount;//ʵշѽ + BYTE byRes[128]; +}NET_DVR_CHARGEACCOUNT_CFG,*LPNET_DVR_CHARGEACCOUNT_CFG; + +//ͣƱ豸ǶȲ +typedef struct tagNET_DVR_PXMULTICTRL_CFG +{ + DWORD dwSize;//ṹС + DWORD dwMultiChansWaitTime;//Ƕץƥʱ䣨1~300s + BYTE byMultiChansCapEnabled;//ǷöǶץ 0-1- + BYTE byRes[127]; +}NET_DVR_PXMULTICTRL_CFG,*LPNET_DVR_PXMULTICTRL_CFG; + +//ͣƱѻ² +typedef struct tagNET_DVR_PXOFFLINE_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnabled;//ǷƱѻģʽ0- 1- + BYTE byChargeEnabled;//Ƿѻշ 0-1- + BYTE byAlarmEnabled;//Ƿѻ 0-1- + BYTE byRecordSource;//¼ 0-ʶ 1- + DWORD dwTimeWait;//Ʊѻģʽǰĵȴʱ䣨1-300룩 + /** + realeaseMode&(0x1<<0) ̶ + realeaseMode&(0x1<<1) ̶ + realeaseMode&(0x1<<2) ʱ + realeaseMode&(0x1<<3) ʱ + realeaseMode&(0x1<<4) ޳Ʒ + realeaseMode&(0x1<<5) ̶Զ + realeaseMode&(0x1<<6) ʱԶ + */ + DWORD dwRealeaseMode; //зʽλʾ + BYTE byVehCardmatch;//һ 0-1- + BYTE bySingleInSingleOut;// 0-1- + BYTE byRes[126]; +}NET_DVR_PXOFFLINE_CFG,*LPNET_DVR_PXOFFLINE_CFG; + +typedef struct tagNET_DVR_PARKINGSAPCE_CFG +{ + DWORD dwSize;//ṹС + DWORD dwTotalParkingLot;//ͣλ + DWORD dwCurrParkingLot;//ǰʣͣλ + BYTE byRes[128]; +}NET_DVR_PARKINGSAPCE_CFG,*LPNET_DVR_PARKINGSAPCE_CFG; + +typedef struct tagNET_DVR_PAPERCHARGEINFO_CFG +{ + DWORD dwSize;//ṹС + char szBarCode[LEN_16];//루16λַ + char szLicense[MAX_LICENSE_LEN]; //ƺ + char szVehicleInTime[LEN_32];//볡ʱ䣨32λַ YYYY-MM-DD HH:MM:SS + char szPaymentTime[LEN_32];//ɷʱ䣨32λַ YYYY-MM-DD HH:MM:SS + float fPaymentAmount;//ɷѽ + DWORD dwPaymentOutFailureTime;//ɷѳʧЧʱ䣨DWORD + BYTE byVehicleOutEnabled; //Ƿ: 0- 1- + BYTE byRes[128]; +}NET_DVR_PAPERCHARGEINFO_CFG,*LPNET_DVR_PAPERCHARGEINFO_CFG; + +//ͣƱ +typedef struct tagNET_DVR_ILLEGALCARDFILTERING_CFG +{ + DWORD dwSize;//ṹС + char sLEDDefaultInfo[MAX_LED_INFO_LEN/*512*/]; // LEDĬʾ + BYTE byillegalCardFilteringEnabled;//÷Ƿ,0~ã1~ + BYTE bySendCardSensingCoilEnabled;//ǷظȦ + BYTE byWiegendSensingCoilEnabled;//Զ뿨ǷظȦ + BYTE byGateSwitchEnabled; //ǷеբϢ + BYTE byVerifyKeyWriteCardEnabled;//Ƿ֤Կд + BYTE byNoplateTakeCardEnabled;// Ƿ޳ȡƾݷ + BYTE byRes[126]; +}NET_DVR_ILLEGALCARDFILTERING_CFG,*LPNET_DVR_ILLEGALCARDFILTERING_CFG; + + +//ͣڳշѹṹ +typedef struct tagNET_DVR_TME_CHARGERULE_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + char szCardNo[32];// + BYTE byRes[128]; +}NET_DVR_TME_CHARGERULE_COND, *LPNET_DVR_TME_CHARGERULE_COND; + +//LEDĻʾ +typedef struct tagNET_DVR_LEDDISPLAY_CFG +{ + DWORD dwSize;//ṹС + char sDisplayInfo[MAX_LED_INFO_LEN/*512*/]; // LEDʾ + BYTE byDisplayMode;//ʾʽ:0~,1~,2~ʾ + BYTE bySpeedType;//ٶ:0~,1~,2~ + BYTE byShowPlateEnable;//ʾʹܣ0~رգ1~ + BYTE byRes1; + DWORD dwShowTime;//ʾʱ1~60 + BYTE byRes[128]; +}NET_DVR_LEDDISPLAY_CFG,*LPNET_DVR_LEDDISPLAY_CFG; + +//Ʋ +typedef struct tagNET_DVR_VOICEBROADCAST_CFG +{ + DWORD dwSize;//ṹС + char sInfo[MAX_VOICE_INFO_LEN/*128*/]; // + BYTE byBroadcastNum;// 1~10 + BYTE byIntervalTime;// ʱ,1~5s + BYTE byRes[126]; +}NET_DVR_VOICEBROADCAST_CFG,*LPNET_DVR_VOICEBROADCAST_CFG; + +//ֽƱӡʽ +typedef struct tagNET_DVR_PAPERPRINTFORMAT_CFG +{ + DWORD dwSize;//ṹС + char sTitleInfo[MAX_LITLE_INFO_LEN/*64*/]; //ֽƱ + char sCustomInfo[MAX_CUSTOM_INFO_LEN/*64*/]; //ֽƱԶϢ + char sPhoneNum[MAX_PHONE_NUM_LEN/*16*/];//ϵ绰 + BYTE byPrintInTimeEnabled; //Ƿӡ볡ʱ + BYTE byRes[127]; +}NET_DVR_PAPERPRINTFORMAT_CFG,*LPNET_DVR_PAPERPRINTFORMAT_CFG; + + +//բʱ +typedef struct tagNET_DVR_LOCKGATE_TIME_CFG +{ + char sBeginTime[LEN_32];//ʼʱ䣨32λַ HH:MM:SS + char sEndTime[LEN_32];//ʱ䣨32λַ HH:MM:SS + BYTE byRes[64]; +}NET_DVR_LOCKGATE_TIME_CFG,*LPNET_DVR_LOCKGATE_TIME_CFG; + +//բ +typedef struct tagNET_DVR_LOCKGATE_CFG +{ + DWORD dwSize;//ṹС + NET_DVR_LOCKGATE_TIME_CFG struTime[LOCKGATE_TIME_NUM]; //բʱ + BYTE byRes[128]; +}NET_DVR_LOCKGATE_CFG,*LPNET_DVR_LOCKGATE_CFG; + +//ͬ״̬ +typedef struct NET_DVR_PARKING_DATASTATE_INFO +{ + DWORD dwSize; + char szAppSerialNum [MAX_APP_SERIALNUM_LEN/*32*/];//Ӧк, ǰӵӦ + DWORD dwParkingNum; //ǰͣ + DWORD dwUpdataSerialNum; //к; µкš + BYTE byRes[256]; +} NET_DVR_PARKING_DATASTATE_INFO,*LPNET_DVR_PARKING_DATASTATE_INFO; + +//EPTZ +typedef struct tagNET_DVR_EPTZ_CFG +{ + DWORD dwSize; + BYTE byEnableEPTZ; //ǷEPTZ, 0-ã1 - + BYTE byRes[503]; +}NET_DVR_EPTZ_CFG, *LPNET_DVR_EPTZ_CFG; + +//ĵ +typedef struct tagNET_DVR_CENTER_POINT_CFG +{ + DWORD dwSize; + NET_VCA_POLYGON struRegion;//Χ + BYTE byRes[512]; +}NET_DVR_CENTER_POINT_CFG, *LPNET_DVR_CENTER_POINT_CFG; + +/********************************DS-TME4XXƻ End****************************/ + +/********************************IPC FF Start****************************/ +typedef struct tagNET_DVR_FTPUPLOAD_PARAM +{ + char szRuleTypeItem[MAX_SINGLE_FTPPICNAME_LEN/*20*/]; + char szCameraName[MAX_CAMNAME_LEN/*32*/]; + BYTE byRes[64]; +}NET_DVR_FTPUPLOAD_PARAM, *LPNET_DVR_FTPUPLOAD_PARAM; + +//char szRuleTypeItem[MAX_SINGLE_FTPPICNAME_LEN/*20*/]; +//ǹ̶ַ capture_time,plate_No,alarm_type,camera_name +//±ʾȺ˳ + +//char szCameraName[MAX_CAMNAME_LEN/*32*/]; +//szRuleTypeItemֶαʾΪ camera_name + +typedef struct tagNET_DVR_FTPUPLOADCFG +{ + DWORD dwSize; + BYTE byEventType; //¼ͣ0-Ĭϣ1- + BYTE byMode; //ͼƬģʽ0-Ĭϣ1-Զ + BYTE byRes[62]; + NET_DVR_FTPUPLOAD_PARAM struCustomVehicle[MAX_FTPNAME_NUM/*12*/]; + BYTE byRes1[1024] ; +}NET_DVR_FTPUPLOADCFG, *LPNET_DVR_FTPUPLOADCFG; + +/********************************IPC FF End****************************/ + +//Ϣն +typedef struct tagNET_DVR_PUBLISH_UPGRADE_COND +{ + DWORD dwSize; + DWORD dwUpgradeType; //ͣ1-ն2-ն + DWORD dwTerminalNum; //ն˸ʽնʱЧ + DWORD *pTerminalNo; //Ҫն˺ţնʱЧ + DWORD dwGroupNo; //նţնʱЧ + BYTE byRes[32]; +}NET_DVR_PUBLISH_UPGRADE_COND, *LPNET_DVR_PUBLISH_UPGRADE_COND; +//WEPԿ +typedef struct tagNET_DVR_WEP_KEY_CFG +{ + char csWEPKey[WEP_KEY_MAX_SIZE/*32*/];//Կ + BYTE byRes[64]; +}NET_DVR_WEP_KEY_CFG, *LPNET_DVR_WEP_KEY_CFG; + +typedef struct tagNET_DVR_SUB_UPGRADE_PROGRESS +{ + DWORD dwTerminalNo; //ն˺ + DWORD dwProgress; //նȣ0-100101ʾն쳣,,102-ն˽ѹʧܣ103-汾ƥ䣬104-ļ105-Ƿǩ +}NET_DVR_SUB_UPGRADE_PROGRESS, *LPNET_DVR_SUB_UPGRADE_PROGRESS; + +typedef struct tagNET_DVR_UPGRADE_PROGRESS_RESULT +{ + DWORD dwSize; + DWORD dwMainProgress; //ȣ0-100 + DWORD dwSubProgressNum; //ӽȸ + LPNET_DVR_SUB_UPGRADE_PROGRESS lpStruSubProgress; //նӽȣdwSubProgressNumNET_DVR_SUB_UPGRADE_PROGRESS + BYTE byRes[32]; +}NET_DVR_UPGRADE_PROGRESS_RESULT, *LPNET_DVR_UPGRADE_PROGRESS_RESULT; + +//Ϣճ̷ +typedef struct tagNET_DVR_SCHEDULE_PROGRESS_COND +{ + DWORD dwSize; + DWORD dwScheduleNo; //ճ̺ + BYTE byProgressType; //ȡĽͣ1-ȡȣ2-ն˻ȡȣ3-֯ȡ + BYTE byRes1[3]; + DWORD dwGroupNo; //նŻ֯Ϊ13ʱЧ + DWORD dwTerminalNo; //ն˺ţΪ2ʱЧ + BYTE byRes2[32]; +}NET_DVR_SCHEDULE_PROGRESS_COND, *LPNET_DVR_SCHEDULE_PROGRESS_COND; + +typedef struct tagNET_DVR_SUB_SCHEDULE_PROGRESS +{ + DWORD dwTerminalNo; //ն˺ + DWORD dwProgress; //նճ̷ȣ0-100101ʾնճ̷쳣,102ʾն˴洢ռ䲻,103-ն˲ߣ104-ն˾ܾ105-նж +}NET_DVR_SUB_SCHEDULE_PROGRESS, *LPNET_DVR_SUB_SCHEDULE_PROGRESS; + +typedef struct tagNET_DVR_SCHEDULE_PROGRESS_RESULT +{ + DWORD dwSize; + DWORD dwMainProgress; //ȣ0-100ȡʱΪճ̷ȣն˻ȡʱΪնճ̷ + DWORD dwSubProgressNum; //ӽȸȡʱЧʾ¸ն˽ȸ + LPNET_DVR_SUB_SCHEDULE_PROGRESS lpStruSubProgress; //նճ̷ӽȣȡʱЧdwSubProgressNumNET_DVR_SUB_SCHEDULE_PROGRESS + BYTE byRes[32]; +}NET_DVR_SCHEDULE_PROGRESS_RESULT, *LPNET_DVR_SCHEDULE_PROGRESS_RESULT; + +//Ϣ岥 +typedef struct tagNET_DVR_INSERTPLAY_PROGRESS_COND +{ + DWORD dwSize; + BYTE byInsertType; //岥ͣ1-زģ2-Ŀ + BYTE byRes3[3]; + DWORD dwInsertNo; //岥زģΪزıţ岥ǽĿΪĿ + BYTE byProgressType; //ȡĽͣ1-ȡȣ2-ն˻ȡ + BYTE byRes1[3]; + DWORD dwGroupNo; //նţΪ1ʱЧ + DWORD dwTerminalNo; //ն˺ţΪ2ʱЧ + BYTE byRes2[32]; +}NET_DVR_INSERTPLAY_PROGRESS_COND, *LPNET_DVR_INSERTPLAY_PROGRESS_COND; + +typedef struct tagNET_DVR_SUB_INSERTPLAY_PROGRESS +{ + DWORD dwTerminalNo; //ն˺ + DWORD dwProgress; //ն˲岥ȣ0-100101ʾն˲岥쳣,102ʾն˴洢ռ䲻,103ʾȡ岥,104岥زı滻 +}NET_DVR_SUB_INSERTPLAY_PROGRESS, *LPNET_DVR_SUB_INSERTPLAY_PROGRESS; + +typedef struct tagNET_DVR_INSERTPLAY_PROGRESS_RESULT +{ + DWORD dwSize; + DWORD dwMainProgress; //ȣ0-100ȡʱΪ岥ȣն˻ȡʱΪն˲岥 + DWORD dwSubProgressNum; //ӽȸȡʱЧʾ¸ն˽ȸ + LPNET_DVR_SUB_INSERTPLAY_PROGRESS lpStruSubProgress; //ն˲岥ӽȣȡʱЧdwSubProgressNumNET_DVR_SUB_INSERTPLAY_PROGRESS + BYTE byRes[32]; +}NET_DVR_INSERTPLAY_PROGRESS_RESULT, *LPNET_DVR_INSERTPLAY_PROGRESS_RESULT; + + + + +//WEP +typedef struct tagNET_DVR_WEP_CFG +{ + BYTE byAuthenticationType;//֤ͣ0~֤1~Կ2~Զ֤ + BYTE byDefaultTransmitKeyIndex;//ĬϴԿ1~4ӦstruEncryptionKeyCfgԿĸ + /* + Ϊ64λԿʱASCIIԿַΪ5 + Ϊ128λԿʱASCIIԿַΪ13 + */ + BYTE byWepKeyLenType;//Կͣ0~ 64λԿ1~ 128λԿ + BYTE byKeyType;// Կͣ0~ ASCII룬1~ 16ơ + NET_DVR_WEP_KEY_CFG struWEPKeyCfg[WEP_KEY_MAX_NUM/*4*/];// WEPԿ֧4 + BYTE byRes[128]; +}NET_DVR_WEP_CFG, *LPNET_DVR_WEP_CFG; + +//WPA +typedef struct tagNET_DVR_WPA_CFG +{ + BYTE byAlgorithmType; //㷨ͣ0~TKIP, 1~AES, 2~TKIP/AES + BYTE byWPAKeyLen;// WPAԿȣΪ8~63ӦcsSharedKeyַ + BYTE byDefaultPassword;//ǷĬWPAԿ + BYTE byRes1; + char csSharedKey[WPA_KEY_MAX_SIZE/*64*/];//WPAԿ,Ϊ8-63ASCIIַ + BYTE byRes[128]; +}NET_DVR_WPA_CFG, *LPNET_DVR_WPA_CFG; + + +typedef struct tagNET_DVR_WIRELESS_SECURITY_CFG +{ + BYTE bySecurityMode; //ȫģʽ0~,1~WEP,2~WPA-personal, 3~WPA2-personal + NET_DVR_WEP_CFG struWEPCfg; //ȫģʽѡΪWEPʱЧ + NET_DVR_WPA_CFG struWPACfg; //ȫģʽѡΪWPA-personalWPA2-personalʱЧ + BYTE byRes[256]; +} NET_DVR_WIRELESS_SECURITY_CFG,*LPNET_DVR_WIRELESS_SECURITY_CFG; + +//wifiȵ() +typedef struct tagNET_DVR_WIRELESSSERVER_FULLVERSION_CFG +{ + DWORD dwSize;//ṹС + BYTE byWifiAPEnabled; //ǷAP0-1- + BYTE byBroadcastEnabled; // Ƿù㲥0-1- + BYTE byWlanShareEnabled; //Ƿù0-1- + BYTE byDHCPEnabled; //ǷDHCP0-1- + BYTE bySSID[IW_ESSID_MAX_SIZE]; //SSID + BYTE byRes1[11]; + BYTE byIPType; //IPַͣ0-IPv4,1-IPv6 + NET_DVR_IPADDR struIPAddr; //IPַ + NET_DVR_IPADDR struIPMask; //ַ + NET_DVR_IPADDR struGatewayIPMask; //صַ + NET_DVR_IPADDR struStartIPAddrPool; //IPʼַ + NET_DVR_IPADDR struEndIPAddrPool; // IPνַ + NET_DVR_IPADDR struDNSServerIpAddr[MAX_DNS_SERVER_NUM]; //DNSַ + NET_DVR_WIRELESS_SECURITY_CFG struWirelessSecurityCfg;//߰ȫܲ + BYTE byRes[256]; +}NET_DVR_WIRELESSSERVER_FULLVERSION_CFG, *LPNET_DVR_WIRELESSSERVER_FULLVERSION_CFG; + +typedef struct tagNET_DVR_OPTICAL_DEV_CHAN_INFO +{ + DWORD dwChannel; //ͨţ0ΪЧ + BYTE byChannelName[NAME_LEN]; + BYTE bySignal; //Ƿźţ0-ޣ1-Уֻ + BYTE bySignalType; //źԴͣ1-壬2-壬źʱЧֻ + BYTE byRes[10]; +}NET_DVR_OPTICAL_DEV_CHAN_INFO, *LPNET_DVR_OPTICAL_DEV_CHAN_INFO; + +typedef struct tagNET_DVR_OPTICAL_DEV_NODE +{ + BYTE byValid; //ǷЧ0-Ч1-Ч + BYTE byRes1[3]; + DWORD dwDevNo; //˻ + BYTE byDevName[NAME_LEN]; //ڵ˻ + BYTE byDevID[MAX_ID_LEN]; //˻ID豸Ψһʶֻ + NET_DVR_OPTICAL_DEV_CHAN_INFO struChannel[MAX_CHANNUM]; + BYTE byRes2[32]; +}NET_DVR_OPTICAL_DEV_NODE, *LPNET_DVR_OPTICAL_DEV_NODE; + +#define MAX_OPTICAL_DEV_NODE 32 //ڵ˻ + +typedef struct tagNET_DVR_OPTICAL_PORT_INFO +{ + DWORD dwSize; + BYTE byValid; //ǷźŽ룬0-ޣ1-Уֻ + BYTE byLinkType; //·ͣ1-2-ֻ + BYTE byPortWorkMode; //˿ڹģʽ0-Ч1-ڣ2-ڣ·ΪʱЧֻ + BYTE byRes1[1]; + DWORD dwPairPort; //Թںţ·ΪʱЧʱ˲Ϊںţʱ˲Ϊں + NET_DVR_OPTICAL_DEV_NODE struDevInfo[MAX_OPTICAL_DEV_NODE]; //ڵ˻豸Ϣ + BYTE byRes2[32]; +}NET_DVR_OPTICAL_PORT_INFO, *LPNET_DVR_OPTICAL_PORT_INFO; + +typedef struct tagNET_DVR_OPTICAL_CHAN_RELATE_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿ˻룬0-񣬷0- + BYTE byRes1[3]; + DWORD dwDevNo; //˻ + DWORD dwOpticalPort; //ں + BYTE byDevID[MAX_ID_LEN]; //˻ID + DWORD dwInputChanNo; //˻ͨ + BYTE byRes2[64]; +}NET_DVR_OPTICAL_CHAN_RELATE_CFG, *LPNET_DVR_OPTICAL_CHAN_RELATE_CFG; + +typedef struct tagNET_DVR_START_FILE_TO_CLOUD_COND +{ + DWORD dwSize; + BYTE aCameraID[MAX_CAMERAID_LEN]; //ID + DWORD dwPoolID; //洢ID + DWORD dwRepPoolID; //ID + WORD wReplication; // + BYTE byRes [178]; +}NET_DVR_START_FILE_TO_CLOUD_COND,*LPNET_DVR_START_FILE_TO_CLOUD_COND; + +typedef struct tagNET_DVR_START_PICTURE_FROM_CLOUD_COND +{ + DWORD dwSize; + BYTE aCameraID[MAX_CAMERAID_LEN]; //ID + NET_DVR_TIME_V30 struBeginTime; //ʼʱ + NET_DVR_TIME_V30 struEndTime; //ʱ + DWORD dwPicType; //ͼƬͣλʾ + //bit0-JPG + //bit1-BMP + //bit2-PNG + BYTE byRes1[3]; + BYTE byZoomType; //0-,1-,2-С,3-ֱ + union + { + BYTE uLen[32]; + struct + { + BYTE byScale; //1~99 + }struScale; + struct + { + BYTE byQuality; //1~99 + }struQuality; + struct + { + DWORD dwWidth; + DWORD dwHeight; + }struResolution; //Ŀֱ + }uZoomParam; + DOWNLOAD_DATA_CB fnDownloadFileCallBack; //ݻص + void* pUser; //ûָ + BYTE byRes [372]; +}NET_DVR_START_PICTURE_FROM_CLOUD_COND,*LPNET_DVR_START_PICTURE_FROM_CLOUD_COND; + +typedef struct tagNET_DVR_START_PICTURE_FROM_CLOUD_RET +{ + DWORD dwSize; + DWORD dwFileCount; //ļ + BYTE byRes[120]; +}NET_DVR_START_PICTURE_FROM_CLOUD_RET,*LPNET_DVR_START_PICTURE_FROM_CLOUD_RET; + +typedef struct +{ + DWORD dwSize; + NET_DVR_TIME_V30 struTime; //ͼƬʱ + DWORD dwPicLen; //ͼƬ + BYTE byPicType; //ͼƬʽ,1-jpg,2-bmp,3-png + BYTE byRes[107]; +}NET_DVR_PICTURE_FROM_CLOUD_RET,*LPNET_DVR_PICTURE_FROM_CLOUD_RET; + +typedef struct tagNET_DVR_ACS_EXTERNAL_DEV_CFG +{ + DWORD dwSize; + BYTE byIDCardUpMode; //֤Ϣϱ0ϴ18λ֤ţ1ϴȫϢ + BYTE byRes1; + BYTE byCardVerifyMode; //ˢ֤ģʽ0Զ֤1ͻƽ̨֤2ˢ + BYTE byACSDevType; //豸ͺţ1֤2IC3ά4ָƶ5ַ+ά6տ7ַ8ָͷ9ģ飻10֤豸 + BYTE byDoorMode; //ųͣ0ţ1ţ + BYTE byRes2; + WORD wDevDetailType; //ľ豸ͺţ0-iDR2101-IDM102-˽֤Ķ + BYTE byRes[300]; +}NET_DVR_ACS_EXTERNAL_DEV_CFG, *LPNET_DVR_ACS_EXTERNAL_DEV_CFG; + +typedef struct tagNET_DVR_PERSONNEL_CHANNEL_CFG +{ + DWORD dwSize; + BYTE byInMode; //ģʽ0ܿأ1ֹ2ɣ + BYTE byOutMode; //ģʽ0ܿأ1ֹ2ɣ + BYTE byWorkMode; //ģʽ01ά2գ3 + BYTE byRes[301]; +}NET_DVR_PERSONNEL_CHANNEL_CFG, *LPNET_DVR_PERSONNEL_CHANNEL_CFG; + +#define MAX_ID_NUM_LEN 32 //֤ų +#define MAX_ID_NAME_LEN 128 // +#define MAX_ID_ADDR_LEN 280 //סַ +#define MAX_ID_ISSUING_AUTHORITY_LEN 128 //ǩس + +//֤Ϣ +typedef struct tagNET_DVR_ID_CARD_INFO +{ + DWORD dwSize; //ṹ + BYTE byName[MAX_ID_NAME_LEN]; // + NET_DVR_DATE struBirth; // + BYTE byAddr[MAX_ID_ADDR_LEN]; //סַ + BYTE byIDNum[MAX_ID_NUM_LEN]; //֤ + BYTE byIssuingAuthority[MAX_ID_ISSUING_AUTHORITY_LEN]; //ǩ + NET_DVR_DATE struStartDate; //Чʼ + NET_DVR_DATE struEndDate; //Чֹ + BYTE byTermOfValidity; //ǷЧ 0-1-ǣЧֹЧ + BYTE bySex; //Ա1-У2-Ů + BYTE byNation; + BYTE byRes[101]; +}NET_DVR_ID_CARD_INFO, *LPNET_DVR_ID_CARD_INFO; + +//֤Ϣ +typedef struct tagNET_DVR_ID_CARD_INFO_ALARM +{ + DWORD dwSize; //ṹ + NET_DVR_ID_CARD_INFO struIDCardCfg ;//֤Ϣ + DWORD dwMajor; //ͣο궨 + DWORD dwMinor; //ͣο궨 + NET_DVR_TIME_V30 struSwipeTime; //ʱ + BYTE byNetUser[MAX_NAMELEN] ;//û + NET_DVR_IPADDR struRemoteHostAddr ;//Զַ + DWORD dwCardReaderNo; //ţΪ0Ч + DWORD dwDoorNo; //űţΪ0Ч + DWORD dwPicDataLen; //ͼƬݴСΪ0DZʾ + char *pPicData; + BYTE byCardType; //ͣ1-ͨ2-Ⱥ忨3-ֹ4-Ѳ5-вȿ6-7-8-Ϊ0Ч + BYTE byDeviceNo; // 豸ţΪ0ʱЧЧΧ1-255 + BYTE byMask; //Ƿ֣0-1-δ֪2-֣3- + BYTE byCurrentEvent; //ǷΪʵʱ¼0-Ч1-ǣʵʱ¼2-¼ + DWORD dwFingerPrintDataLen; // ָݴСΪ0DZʾ + char *pFingerPrintData; + DWORD dwCapturePicDataLen; // ץͼƬݴСΪ0DZʾ + char *pCapturePicData; + DWORD dwCertificatePicDataLen; //֤ץͼƬݴСΪ0DZʾ + char *pCertificatePicData; + BYTE byCardReaderKind; //һ࣬0-Ч1-IC2-֤3-ά,4-ָͷ + BYTE byHelmet;//ѡǷȫñ0-1-δ֪2-ȫ, 3-ȫñ + BYTE byRes3; + BYTE byIDCardInfoExtend; //pIDCardInfoExtendǷЧ0-Ч1-Ч + char *pIDCardInfoExtend; //byIDCardInfoExtendΪ1ʱʾָһNET_DVR_ID_CARD_INFO_EXTENDṹ + DWORD dwSerialNo; //¼ˮţΪ0Ч + BYTE byRes[168]; +}NET_DVR_ID_CARD_INFO_ALARM, *LPNET_DVR_ID_CARD_INFO_ALARM; + +//չṹϢ +typedef struct tagNET_DVR_ID_CARD_INFO_EXTEND +{ + BYTE byRemoteCheck; //ǷҪԶ̺飨0-Ч1-ҪĬϣ2-Ҫ + BYTE byThermometryUnit; //µλ0-϶ȣĬϣ1-϶ȣ2-ģ + BYTE byIsAbnomalTemperature; //ץIJǷ¶쳣1-ǣ0- + BYTE byRes2; + float fCurrTemperature; //¶ȣȷСһλ + NET_VCA_POINT struRegionCoordinates; //¶ + DWORD dwQRCodeInfoLen; //άϢȣΪ0DZʾ + DWORD dwVisibleLightDataLen; //ȳɼͼƬȣΪ0DZʾ + DWORD dwThermalDataLen; //ȳͼƬȣΪ0DZʾ + char *pQRCodeInfo; //άϢָ + char *pVisibleLightData; //ȳɼͼƬָ + char *pThermalData; //ȳͼƬָ + WORD wXCoordinate; //x꣬ϽͼƬĹһ꣬Χ0-1000 + WORD wYCoordinate; //y꣬ϽͼƬĹһ꣬Χ0-1000 + WORD wWidth; //ȣΧ0-1000 + WORD wHeight; //߶ȣΧ0-1000 + BYTE byHealthCode; //״̬, 0-, 1-δ, 2-δ, 3-, 4-, 5-, 6-޴Ա, 7-Ϣӿ쳣²ѯʧܣ, 8-ѯ볬ʱ + BYTE byNADCode; //, 0-, 1-δѯ, 2-ԣ, 3-ԣȷ, 4-Чѹ + BYTE byTravelCode; //г̱, 0-, 1-14һֱڵ, 2-14뿪, 3-14ڵ, 4- + BYTE byVaccineStatus; //״̬, 0-, 1-δ, 2-ע, 3- + BYTE byRes[1012]; +}NET_DVR_ID_CARD_INFO_EXTEND, *LPNET_DVR_ID_CARD_INFO_EXTEND; + +//֤Ϣֹṹ +typedef struct tagNET_DVR_ID_CARD_BLOCKLIST_COND +{ + DWORD dwSize; + BYTE byRes[256]; // +}NET_DVR_ID_CARD_BLOCKLIST_COND, *LPNET_DVR_ID_CARD_BLOCKLIST_COND; + +//֤Ϣֹ +typedef struct tagNET_DVR_ID_CARD_BLOCKLIST_CFG +{ + DWORD dwSize; + NET_DVR_ID_CARD_INFO struIDCardCfg; // ֤Ϣ + DWORD dwFingerPrintDataLen; // ָ֤ݴСΪ0DZʾ + char *pFingerPrintData; + DWORD dwPicDataLen; // ֤ͼƬݴСΪ0DZʾ + char *pPicData; + BYTE byRes[128]; +}NET_DVR_ID_CARD_BLOCKLIST_CFG, *LPNET_DVR_ID_CARD_BLOCKLIST_CFG; + +//A =ĸַ [a..z, A..Z]N = ַ [0..9]S = ַ [<]B= +typedef struct tagNET_DVR_PASSPORT_INFO +{ + DWORD dwSize; //ṹ + BYTE byOCR; //0-ӻݣ1- OCRʶݣ + BYTE byRes1[3]; // + BYTE byType[MAX_PASSPORT_TYPE_LEN]; //֤ͣAS + BYTE byCountryIssue[MAX_PASSPORT_INFO_LEN]; //ǩǩAS + BYTE byName[MAX_PASSPORT_NAME_LEN]; //AS + BYTE byPassportNo[MAX_PASSPORT_NUM_LEN]; //֤룬ANS + BYTE byNationality[MAX_NATIONALITY_LEN]; // AS + NET_DVR_DATE struBirth; // + NET_DVR_DATE struExpireDate; //Чֹ + BYTE bySex; //Ա1-У2-Ů + BYTE byRes2[35]; // + BYTE byLocalName[MAX_PASSPORT_INFO_LEN]; //B + BYTE byNumber[MAX_PASSPORT_INFO_LEN]; //˺룬ANS + BYTE byPlaceOfBirth[MAX_PASSPORT_INFO_LEN]; //أB + BYTE byAddr[MAX_PASSPORT_INFO_LEN]; //ַANSB + BYTE byPhone[MAX_PASSPORT_INFO_LEN]; //绰NS + BYTE byJob[MAX_PASSPORT_INFO_LEN]; //ְҵB + BYTE byTitle[MAX_PASSPORT_INFO_LEN]; //ְΣB + BYTE byResume[MAX_PASSPORT_INFO_LEN]; //B + BYTE byOtherNumber[MAX_PASSPORT_INFO_LEN]; //֤룬ANSB + BYTE byMonitoring[MAX_PASSPORT_MONITOR_LEN]; //໤ϢB + BYTE byRes[128]; +}NET_DVR_PASSPORT_INFO, *LPNET_DVR_PASSPORT_INFO; + +//Ϣϴ +typedef struct tagNET_DVR_PASSPORT_ALARM +{ + DWORD dwSize; //ṹ + DWORD dwMajor; //ͣο궨 + DWORD dwMinor; //ͣο궨 + NET_DVR_TIME_V30 struSwipeTime; //ʱ + BYTE byNetUser[MAX_NAMELEN];//û + NET_DVR_IPADDR struRemoteHostAddr;//Զַ + DWORD dwCardReaderNo; //ţΪ0Ч + BYTE byCardType; //ͣ1-ͨ2-Ⱥ忨3-ֹ4-Ѳ5-вȿ6-7-8-Ϊ0Ч + BYTE byRes2[11]; + NET_DVR_PASSPORT_INFO struPassportInfo;//Ϣ + DWORD dwFaceDataLen; //ݴСΪ0DZʾ + char *pFaceData; + DWORD dwPicDataLen; //֤ͼƬݴСΪ0DZʾ + char *pPicData; // [ISO/IEC 10918-1] ʽĹ֤ͼ + DWORD dwCapturePicDataLen; //ץͼƬݴСΪ0DZʾ + char *pCapturePicData; + BYTE byRes[128]; +}NET_DVR_PASSPORT_ALARM, *LPNET_DVR_PASSPORT_ALARM; + +typedef struct tagNET_DVR_PASSNUM_INFO_ALARM +{ + DWORD dwSize; //ṹ + DWORD dwAccessChannel; //Աͨ + NET_DVR_TIME_V30 struSwipeTime; //ʱ + BYTE byNetUser[MAX_NAMELEN] ;//û + NET_DVR_IPADDR struRemoteHostAddr ;//Զַ + DWORD dwEntryTimes; //Ա + DWORD dwExitTimes; //Ա + DWORD dwTotalTimes; //Աܴ + BYTE byRes[300]; +}NET_DVR_PASSNUM_INFO_ALARM, *LPNET_DVR_PASSNUM_INFO_ALARM; +typedef struct tagNET_DVR_UPLOAD_VIDEO_INFO +{ + DWORD dwSize; + DWORD dwVideoMangeNo; //Ƶ + BYTE byVideoType; //Ƶʽ 0-AVI 1-WMV 2-MP4 3-FLV 3-VOD 4-MKV 5-RMVB + BYTE byRes1[3]; // + BYTE sVideoName[NAME_LEN]; //Ƶ + NET_DVR_TIME_V30 struTime; //ͼƬϴʱ + BYTE byRes[132]; +} NET_DVR_UPLOAD_VIDEO_INFO, *LPNET_DVR_UPLOAD_VIDEO_INFO; + +typedef struct tagNET_DVR_DEVICE_FILE_INFO +{ + DWORD dwSize; + BYTE sFileName[NAME_LEN]; //ļ + DWORD dwManageNo; //(ֻܻȡ) + NET_DVR_TIME_EX struTime; //ĵϴʱ + BYTE byUsed; //ǷѴڣ0-ڣ1- ֻܻȡ + BYTE byRes[127]; +} NET_DVR_DEVICE_FILE_INFO, *LPNET_DVR_DEVICE_FILE_INFO; + +typedef struct tagNET_DVR_PLAY_ITEM +{ + DWORD dwSize; + BYTE byItemType; //ͣ1-ͼƬ 2-Ƶ 3-б + BYTE byRes[3]; // + DWORD dwPlayManageNo; //Ź + DWORD dwPlayPicTime; //ͼƬʱ䣬λ, (ΪͼƬЧ) + BYTE byRes2[64]; +} NET_DVR_PLAY_ITEM, *LPNET_DVR_PLAY_ITEM; + +typedef struct tagNET_DVR_DEVICE_PLAYLIST +{ + DWORD dwSize; + BYTE byEnable; //ǷЧ 0-Ч !0-Ч + BYTE byPlayType; //ģʽ1-ѭ + BYTE byVaildItemNum; //Ч + BYTE byRes[1]; + NET_DVR_PLAY_ITEM struPlayItem[PLAYLIST_ITEM_NUM]; //ǰbyVaildItemNumЧ + BYTE byPlaylistName[PLAYLIST_NAME_LEN]; //б + DWORD dwPlaylistNo; //бţȡЧ + BYTE byRes2[128]; +} NET_DVR_DEVICE_PLAYLIST, *LPNET_DVR_DEVICE_PLAYLIST; +typedef struct tagNET_DVR_PLAYLIST_ITEM_CTRL +{ + DWORD dwSize; + BYTE byCtrlType; //ͣ 1-Ӳ 2-ɾ 3-ƶλ + BYTE byPlayIndex; //ţ 1ʼ + NET_DVR_PLAY_ITEM struPlayItem; // + BYTE byNewPlayIndex; //²ţ0Ч + BYTE byRes[63]; +}NET_DVR_PLAYLIST_ITEM_CTRL, *LPNET_DVR_PLAYLIST_ITEM_CTRL; +typedef struct tagNET_DVR_PLAN_ITEM +{ + NET_DVR_PLAY_ITEM struPlanPlayItem; // + NET_DVR_TIME_SEGMENT struTimeSegment; //ʱβ + BYTE byRes[16]; +} NET_DVR_PLAN_ITEM, *LPNET_DVR_PLAN_ITEM; + +typedef struct tagNET_DVR_PLAYPLAN_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿʹ, 0-ʹ !0-ʹ + BYTE byPlanMode; //ƻģʽ1-ܼƻ 2-ռƻ + BYTE byRes[2]; + NET_DVR_PLAN_ITEM struPlanItem[MAX_DAYS][MAX_TIMESEGMENT_V30]; + DWORD dwPlayPlanNo; //żƻţȡʱЧ + BYTE byPlayPlanName[NAME_LEN]; //żƻ + BYTE byRes2[32]; +} NET_DVR_PLAYPLAN_CFG, *LPNET_DVR_PLAYPLAN_CFG; +typedef struct tagNET_DVR_WINDOW_PLAYPLAN_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿòżƻ 0- !0- + BYTE byRes[3]; + DWORD dwPlayPlanNo; //żƻ + BYTE byRes2[32]; +} NET_DVR_WINDOW_PLAYPLAN_CFG, *LPNET_DVR_WINDOW_PLAYPLAN_CFG; +typedef struct tagNET_DVR_DEV_PLAYCTRL +{ + DWORD dwSize; + BYTE byControlType; //ͣ1-Ƶ2-Ƶأ3-ֹͣţ4-ͣţָ + BYTE byRes[131]; +} NET_DVR_DEV_PLAYCTRL, *LPNET_DVR_DEV_PLAYCTRL; + +typedef union tagNET_DVR_PLAYITEM_INFO +{ + struct // + { + DWORD dwPlayItem; // + BYTE byPlayItemName[NAME_LEN]; // + BYTE byRes2[8]; + } struPlayItem; + struct //б + { + DWORD dwPlaylistNo; //б + BYTE byPlaylistName[NAME_LEN]; //б + WORD wPlayIndex; //λ + BYTE byPlayType; //бڲ 1-ͼƬ 2-Ƶ + BYTE byRes[3]; + DWORD dwPlayItem; // + BYTE byPlayItemName[NAME_LEN]; // + BYTE byRes2[16]; + } struPlaylistItem; + struct //żƻ + { + DWORD dwPlayPlanNo; //żƻ + NET_DVR_TIME_SEGMENT struTime; //ڲʱ + BYTE byPlayType; //żƻڲ 1-ͼƬ 2-Ƶ 3-б + BYTE byRes[3]; + DWORD dwPlaylistNo; //б + BYTE byPlaylistName[NAME_LEN]; //б + DWORD dwPlayItem; // + BYTE byPlayItemName[NAME_LEN]; // + WORD wPlayIndex; //λ + BYTE byRes2[18]; + } struPlayPlanItem; +}NET_DVR_PLAYITEM_INFO, *LPNET_DVR_PLAYITEM_INFO; +typedef struct tagNET_DVR_PLAYING_INFO +{ + DWORD dwSize; + BYTE byPlayWay; //ŷʽ 1- 2-б 3-żƻ 4-̬ 5-岥 + BYTE byCurPlayType; //ڲزͣ 1-ͼƬ 2-Ƶ̬ͽ岥ʱЧ + BYTE byPlayState; //״̬1-ڲţ2-ֹͣ3-ͣ + BYTE byAudioState; //Ƶ״̬0-أ1- + NET_DVR_PLAYITEM_INFO struPlayItemInfo; //Ϣ + BYTE byRes2[16]; +} NET_DVR_PLAYING_INFO, *LPNET_DVR_PLAYING_INFO; + +typedef struct tagNET_DVR_ONLINEUSER_COND //ṹ +{ + DWORD dwSize; + DWORD dwChannel;//ͨţǰĬ1 + BYTE byRes [128]; +}NET_DVR_ONLINEUSER_COND,*LPNET_DVR_ONLINEUSER_COND; + +typedef struct tagNET_DVR_ONLINEUSER_CFG //ýṹ +{ + DWORD dwSize; + BYTE byID;//ûк + BYTE byUserType;//û 0-ͨû1-Ա2-û + BYTE byDataType;//״̬:0-У1-ʼ2- + BYTE byRes; + NET_DVR_IPADDR struIpAddr;//IPַ + NET_DVR_TIME_V30 struLoginTime;//½ʱ + char szUserName[NAME_LEN/*32*/];//û + BYTE byRes1[128]; +}NET_DVR_ONLINEUSER_CFG,*LPNET_DVR_ONLINEUSER_CFG; + +//洢״̬ +typedef struct tagNET_DVR_STORAGE_DETECTION +{ + DWORD dwSize;//ṹС + BYTE byHealthState;//״̬0-ã1-2-𻵣3-δ֪ + BYTE bySDCardState;//SDcard״̬ 0-ߣ1-,2-δ֪,3- + WORD wAbnormalPowerLoss;//쳣 + WORD wBadBlocks;// + BYTE byRemainingLife; //SDʣ; 0~100% + BYTE byRes[125]; +}NET_DVR_STORAGE_DETECTION,*LPNET_DVR_STORAGE_DETECTION; + +//洢ܼⱨϴ +typedef struct tagNET_DVR_STORAGE_DETECTION_ALARM +{ + DWORD dwSize; + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + DWORD dwCardID; //ID + WORD wAbnormalPowerLoss;//쳣 + WORD wBadBlocks;// + BYTE byHealthState;//״̬0-ã1-2-𻵣3-δ֪ + BYTE byRes1[3]; + float fResidualLife; //SD Ԥʣ + BYTE byRes[118]; +}NET_DVR_STORAGE_DETECTION_ALARM,*LPNET_DVR_STORAGE_DETECTION_ALARM; + + +//洢Ķд +typedef struct tagNET_DVR_STORAGE_RWLOCK +{ + DWORD dwSize;//ṹС + BYTE byEnabled;//ʹ 0-رգ1- + BYTE byRes[3]; + char szPassWD[PASSWD_LEN/*16*/]; //д + char szOriginalPassWD[PASSWD_LEN/*16*/]; //ԭʼ + BYTE byRes1[128]; +}NET_DVR_STORAGE_RWLOCK,*LPNET_DVR_STORAGE_RWLOCK; + +//洢Ľ +typedef struct tagNET_DVR_STORAGE_UNLOCK +{ + DWORD dwSize;//ṹС + char szPassWD[PASSWD_LEN/*16*/]; // + BYTE byRes1[128]; +}NET_DVR_STORAGE_UNLOCK,*LPNET_DVR_STORAGE_UNLOCK; + + +typedef struct tagNET_DVR_PTZTRACKSTATUS +{ + DWORD dwSize;//ṹС + BYTE byID;//豸ID (ֶbyLinkageType0ʱЧ) + BYTE byLinkageType;//0-1-豸 + BYTE byRes[254]; +}NET_DVR_PTZTRACKSTATUS,*LPNET_DVR_PTZTRACKSTATUS; + +#define MAX_PROXY_COUNT 32 + +typedef struct tagNET_DVR_SOCKS_PROXY_PARA +{ + BYTE byIP[129]; //ַ + BYTE byAuthType; //֤ʽʱȲʹøֶ + WORD wPort; //˿ + BYTE byRes2[64]; //Ҫʹ֤ʽȻҪһЩֽڣһЩ +}NET_DVR_SOCKS_PROXY_PARA, *LPNET_DVR_SOCKS_PROXY_PARA; + +typedef struct tagNET_DVR_SOCKS_PROXYS +{ + NET_DVR_SOCKS_PROXY_PARA struProxy[MAX_PROXY_COUNT]; +}NET_DVR_SOCKS_PROXYS, *LPNET_DVR_SOCKS_PROXYS; + +typedef struct tagNET_DVR_GET_FIGURE_COND +{ + DWORD dwLength; //ṹ + DWORD dwChannel; //ͨ + NET_DVR_TIME_V30 struTimePoint; //ʱ + BYTE byID[STREAM_ID_LEN/*32*/]; //ID + BYTE byRes[32]; +}NET_DVR_GET_FIGURE_COND, *LPNET_DVR_GET_FIGURE_COND; + +typedef struct tagNET_DVR_FIGURE_INFO +{ + DWORD dwPicLen; //ͼƬ + char *pPicBuf; //ͼƬ +}NET_DVR_FIGURE_INFO, *LPNET_DVR_FIGURE_INFO; + +//ֶ +typedef struct tagNET_DVR_MANUALRANGING_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿֶࣺ0- 1- + BYTE byRes[127]; +}NET_DVR_MANUALRANGING_CFG,*LPNET_DVR_MANUALRANGING_CFG; + +typedef struct tagNET_DVR_VIDEO_INTERCOM_ALARM_CFG +{ + DWORD dwSize; //ṹС + BYTE byDoorNotCloseAlarm; //Ƿϴδر0-ϴ1-ϴ + BYTE byRes[603]; // +}NET_DVR_VIDEO_INTERCOM_ALARM_CFG, *LPNET_DVR_VIDEO_INTERCOM_ALARM_CFG; + +typedef struct tagNET_DVR_PACKET_INFO_EX +{ + WORD wWidth; //width + WORD wHeight; //height + DWORD dwTimeStamp; //lower time stamp + DWORD dwTimeStampHigh;//higher time stamp + DWORD dwYear; //year + DWORD dwMonth; //month + DWORD dwDay; //day + DWORD dwHour; //hour + DWORD dwMinute; //minute + DWORD dwSecond; //second + DWORD dwMillisecond; //millisecond + DWORD dwFrameNum; //frame num + DWORD dwFrameRate; //frame rate,֡С0ʱ0x80000002:ʾ1/2֡ʣͬ0x80000010Ϊ1/16֡ + DWORD dwFlag; //flag E֡ + DWORD dwFilePos; //file pos + DWORD dwPacketType; //Packet type:0 -file head1 -video I frame2- video B frame 3- video P frame 10- audio packet 11- private packet + DWORD dwPacketSize; //packet size + unsigned char* pPacketBuffer; //packet buffer + BYTE byRes1[4]; + DWORD dwPacketMode; //ʽ:0-1-FU_Aʽ + BYTE byRes2[16]; + DWORD dwReserved[6]; //reserved[0] ʾ˽ + //reserved[1] ʾ˽ݵַλ + //reserved[2] ʾ˽ݵַλ + //reserved[3] ʾ˽ݳ + //reserved[4] ˽֡/ʱ\ʱ + //reserved[5].һbitλǷΪP֡P1ΪP0; lizhonghu 20150203 +}NET_DVR_PACKET_INFO_EX, *LPNET_DVR_PACKET_INFO_EX; + +typedef BOOL(CALLBACK * DEV_WORK_STATE_CB)(void* pUserdata, int iUserID, LPNET_DVR_WORKSTATE_V40 lpWorkState); + +typedef struct tagNetDVRCheckDevState +{ + DWORD dwTimeout; //ʱ豸״̬λmsΪ0ʱʾʹĬֵ(30000)СֵΪ1000 + DEV_WORK_STATE_CB fnStateCB; + void* pUserData; + BYTE byRes[60]; +}NET_DVR_CHECK_DEV_STATE,*LPNET_DVR_CHECK_DEV_STATE; + +#define COURSE_NAME_LEN_128 128 //γ +#define INSTRUCTOR_NAME_LEN_64 64 //ڿνʦ +#define MAX_UUID_LEN 64 //ֶγUUID + +//ȡṹ +typedef struct tagNET_DVR_COURSE_LIST_COND +{ + DWORD dwSize; + NET_DVR_TIME_V30 struStartTime; //γ̿ʼʱ + NET_DVR_TIME_V30 struEndTime; //γ̽ʱ + BYTE byCourseName[COURSE_NAME_LEN_128]; //γ + BYTE byInstructorName[INSTRUCTOR_NAME_LEN_64]; //ڿʦ + BYTE byCourseType; //αͣ0-ȫ1-ֶ + BYTE byRes[603]; +}NET_DVR_COURSE_LIST_COND,*LPNET_DVR_COURSE_LIST_COND; + +typedef struct tagNET_DVR_COURSE_CFG +{ + DWORD dwSize; + NET_DVR_TIME_V30 struStartTime; //γ̿ʼʱ + NET_DVR_TIME_V30 struEndTime; //γ̿ʼʱ + BYTE byCourseName[COURSE_NAME_LEN_128]; + BYTE byInstructorName[INSTRUCTOR_NAME_LEN_64]; + BYTE byCourseDescription[COURSE_DESCRIPTION_LEN /*256*/]; + BYTE byRecUUID[MAX_UUID_LEN/*64*/]; //ֶαUUID + BYTE byCourseType;//αͣ0-ȫ1-ֶα + BYTE byRes[303]; +}NET_DVR_COURSE_CFG, *LPNET_DVR_COURSE_CFG; + +typedef struct tagNET_DVR_RECORD_STATUS +{ + DWORD dwSize; //ṹС + BYTE byRecUUID[MAX_UUID_LEN/*64*/]; //ֶαUUID + BYTE byRecordStatus; //¼״̬0-ͣ1-,2-¼3- + BYTE byRes1[3]; //ֽ + DWORD dwRecordingTime; //¼ʱλ룬Ϊ12*60*60 + BYTE byRes[596]; //ֽ +}NET_DVR_RECORD_STATUS, *LPNET_DVR_RECORD_STATUS; + +typedef struct tagNET_DVR_MANUAL_CURRICULUM_CFG +{ + DWORD dwSize; //ṹС + BYTE byRecUUID[MAX_UUID_LEN/*64*/]; //ֶαUUID + BYTE byCourseName[COURSE_NAME_LEN_128]; //γ + BYTE byInstructorName[INSTRUCTOR_NAME_LEN_64]; //ڿʦ + BYTE byCourseDescription[COURSE_DESCRIPTION_LEN /*256*/]; + BYTE byCmdType; //0-ʼ¼ 1- 2-ͣ 3-,4-ʼΣ5- + BYTE byRes[303]; //ֽ +}NET_DVR_MANUAL_CURRICULUM_CFG, *LPNET_DVR_MANUAL_CURRICULUM_CFG; + +typedef struct tagNET_DVR_IMAGE_DIFF_DETECTION_CFG +{ + DWORD dwSize; //ṹС + NET_VCA_POLYGON struRegion; //Χ + BYTE byEnabled; //Ƿã0-ã1- + BYTE byThreshold; //ֵ[0,100] + BYTE bySensitivity; // [0,100] + BYTE byVideoInputType; //Ƶͣ0-Զ1-HDMI2-VGA + BYTE byRes[300]; //ֽ +}NET_DVR_IMAGE_DIFF_DETECTION_CFG, *LPNET_DVR_IMAGE_DIFF_DETECTION_CFG; + +typedef struct tagNET_DVR_RECORDING_PUBLISH_FILE_COND +{ + DWORD dwSize; + DWORD dwChannel; + BYTE byFileID[MAX_ID_LEN_128/*128*/]; //ļID + BYTE byRes[300]; +}NET_DVR_RECORDING_PUBLISH_FILE_COND, *LPNET_DVR_RECORDING_PUBLISH_FILE_COND; + +typedef struct tagNET_DVR_RECORDING_PUBLISH_FILE_INFO +{ + DWORD dwSize; + NET_DVR_TIME_V30 struStartTime; //γ̿ʼʱ + NET_DVR_TIME_V30 struEndTime; //γ̿ʼʱ + BYTE byCourseName[COURSE_NAME_LEN_128]; + BYTE byInstructorName[INSTRUCTOR_NAME_LEN_64]; + BYTE byCourseDescription[COURSE_DESCRIPTION_LEN /*256*/]; + BYTE byRes[300]; //ֽ +}NET_DVR_RECORDING_PUBLISH_FILE_INFO, *LPNET_DVR_RECORDING_PUBLISH_FILE_INFO; + +//Ļ +typedef struct tagNET_DVR_SCREEN_POINT +{ + WORD wX; //X + WORD wY; //Y +}NET_DVR_SCREEN_POINT,*LPNET_DVR_SCREEN_POINT; + +typedef struct tagNET_DVR_MOUSE_PARAM +{ + BYTE byMouseEvent; //¼1-£2-ɿ3-Ҽ£4-Ҽɿ + //5-ƶ6-7-˫8-Ҽ9-ְ£ + //10-ɿ11-£12- + BYTE byRes1[3]; + NET_DVR_SCREEN_POINT struMousePoint; //Ϣ + BYTE byRes2[8]; +}NET_DVR_MOUSE_PARAM, *LPNET_DVR_MOUSE_PARAM; + +typedef struct tagNET_DVR_MARK_PARAM +{ + BYTE byMarkEvent; //ע¼1-ע2-ע3-±ע״̬ + BYTE byMarkTool; //עߣ0-Ч1-ʣ2-Ƥע¼Ϊ1ʱЧ + BYTE byLineWidth; //ϸ0-Ч1-ϸ2-У3-֣ע¼Ϊ1ʱЧ + BYTE byMouseEvent; //¼ע¼Ϊ1ʱЧ0-Ч1-£2-ɿ3-ƶ + NET_DVR_RGB_COLOR struColor; //עɫעΪʱЧ + NET_DVR_SCREEN_POINT struPoint; //עϢ + BYTE byRes[4]; +}NET_DVR_MARK_PARAM, *LPNET_DVR_MARK_PARAM; + +typedef struct tagNET_DVR_KEYBOARD_PARM +{ + DWORD dwKeyValue; //ʹASCIIеֵⰴȷ + BYTE byRes[12]; +}NET_DVR_KEYBOARD_PARAM, *LPNET_DVR_KEYBOARD_PARAM; + +typedef struct tagNET_DVR_PPT_PARAM +{ + BYTE byPPTAction; //PPT1-򿪷ӳ2-ֹͣӳ3-һ4-һ + //5-һҳ6-һҳ7-Xҳ8-ʿ9-ʹأ10-ƶ + BYTE byRes1[3]; + NET_DVR_SCREEN_POINT struPoint; //ϢPPTΪ10ʱЧ + DWORD dwPPTNo; //PPTҳPPTΪ7ʱЧ + BYTE byRes2[4]; +}NET_DVR_PPT_PARAM, *LPNET_DVR_PPT_PARAM; + +typedef struct tagNET_DVR_REMOTE_CTRL_PARAM +{ + BYTE byRemoteCtrlCmd; //Զ̿1-лöڣ2-رĻǰڣ3-ļ4-رļ5-ɾļ6-ػ7-ʾ棬8- + BYTE byRes1[3]; + DWORD dwCtrlParam; //byRemoteCtrlCmdΪ345ʱʾļbyRemoteCtrlCmdΪ8ʱʾͣ0-Ч1- + BYTE byRes2[8]; +}NET_DVR_REMOTE_CTRL_PARAM, *LPNET_DVR_REMOTE_CTRL_PARAM; + +typedef struct tagNET_DVR_SPOTLIGHT_PARAM +{ + BYTE byCmd; //۹0-رվ۹ƣ1-۹ƣ2-۹λƶ + BYTE byRes1[3]; + NET_DVR_SCREEN_POINT struPoint; //۹ĵ꣬۹λƶʱЧ + DWORD dwRadius; //۹ư뾶 + BYTE byRes2[4]; +} NET_DVR_SPOTLIGHT_PARAM, *LPNET_DVR_SPOTLIGHT_PARAM; + +typedef struct tagNET_DVR_TOUCHPAD_PARAM +{ + BYTE byMouseEvent; //¼1-£2-ɿ3-Ҽ£4-Ҽɿ + //5-ƶ6-7-˫8-Ҽ9-ְ£ + //10-ɿ11-£12- + BYTE byRes1[3]; + int iXDisplacement; //XλƣʾƶʾƶƶʱЧ + int iYDisplacement; //YλƣʾƶʾƶƶʱЧ + BYTE byRes2[4]; +}NET_DVR_TOUCHPAD_PARAM, *LPNET_DVR_TOUCHPAD_PARAM; + +typedef struct tagNET_DVR_MEDIA_LIST_PARAM +{ + BYTE byOperateCmd; //1-ʾͼƬزģ2-ʾƵزģ3-ʾpptزģ4-رնýļ + BYTE byRes[15]; +}NET_DVR_MEDIA_LIST_PARAM, *LPNET_DVR_MEDIA_LIST_PARAM; + +typedef union tagNET_DVR_SCREEN_CTRL_PARAM +{ + NET_DVR_MOUSE_PARAM struMouseParam; //Ϊ1ʱЧ + NET_DVR_MARK_PARAM struMarkParam; //עΪ2ʱЧ + NET_DVR_KEYBOARD_PARAM struKeyboardInfo; //̲Ϊ3ʱЧ + NET_DVR_PPT_PARAM struPPTParam; //PPTΪ4ʱЧ + NET_DVR_REMOTE_CTRL_PARAM struRemoteCtrlParam; //Զ̲Ϊ5ʱЧ + NET_DVR_SPOTLIGHT_PARAM struSpotLight; //۹ƲΪ6ʱЧ + NET_DVR_TOUCHPAD_PARAM struTouchPadParam; //Ϊ7ʱЧ + NET_DVR_MEDIA_LIST_PARAM struMediaListParam; //ýΪ8ʱЧ + BYTE byRes[16]; +}NET_DVR_SCREEN_CTRL_PARAM, *LPNET_DVR_SCREEN_CTRL_PARAM; + +typedef struct tagNET_DVR_SCREEN_CTRL_CMD +{ + DWORD dwSize; + BYTE byCmdType; //ͣ1-꣬2-ע3-̣4-PPT5-Զ̲6-۹ƣ7-ذ壬8-ʾý + BYTE byRes1[3]; + NET_DVR_SCREEN_CTRL_PARAM struScreenCtrlParam; //ĻƲ +}NET_DVR_SCREEN_CTRL_CMD, *LPNET_DVR_SCREEN_CTRL_CMD; + +typedef struct tagNET_DVR_FILE_RESPONSE_PARAM +{ + BYTE byFileState; //ļ״̬1-ļڣ2-ļʧܣ3-ļɹ + BYTE byRes1[3]; + DWORD dwErrorFileIndex; //ļļֵ + BYTE byRes2[24]; +} NET_DVR_FILE_RESPONSE_PARAM, *LPNET_DVR_FILE_RESPONSE_PARAM; + +typedef struct tagNET_DVR_PPT_RESPONSE_PARAM +{ + BYTE byCurrentState; //ǰPPT״̬1 - ڷӳ2 - ӳֹͣ3 - PPTѹرգ4 - pptܱԤͼʧܣ5 - 򿪷ӳɹ6 - 򿪷ӳʧܣ7 - pptΪգ8 - ͼʧܣ9 - ͼɳɹ + BYTE byRes1[3]; + DWORD dwCurrentPage; //PPTҳPPT״̬Ϊ1,7,8ʱЧ + DWORD dwFileIndex; //PPTļֵ + DWORD dwTotalPageNum; //PPTҳPPT״̬Ϊ5ʱЧ + BYTE byRes2[16]; +}NET_DVR_PPT_RESPONSE_PARAM, *LPNET_DVR_PPT_RESPONSE_PARAM; + +typedef union tagNET_DVR_SCREEN_RESPONSE_PARAM +{ + BYTE byRes[32]; + NET_DVR_PPT_RESPONSE_PARAM struPPTParam; //PPT + NET_DVR_FILE_RESPONSE_PARAM struFileParam; //ļӦ +}NET_DVR_SCREEN_RESPONSE_PARAM,*LPNET_DVR_SCREEN_RESPONSE_PARAM; + +typedef struct tagNET_DVR_SCREEN_RESPONSE_CMD +{ + DWORD dwSize; + BYTE byResponseCmd; //ĻӦͣ1-PPT2-ļ + BYTE byRes1[3]; + NET_DVR_SCREEN_RESPONSE_PARAM struResonseParam; //ĻӦ + BYTE byRes2[16]; +}NET_DVR_SCREEN_RESPONSE_CMD, *LPNET_DVR_SCREEN_RESPONSE_CMD; + +typedef struct tagNET_DVR_SCREEN_FILE_COND +{ + DWORD dwSize; + BYTE byFileType; //ļͣ1-ͼƬ2-Ƶ3-ĵ0xff-ļ + BYTE byRes[127]; +}NET_DVR_SCREEN_FILE_COND, *LPNET_DVR_SCREEN_FILE_COND; + +typedef struct tagNET_DVR_SCREEN_FILE_INFO +{ + DWORD dwSize; + DWORD dwFileIndex; //ļȫΨһ + BYTE byFileType; //ļͣ1-ͼƬ2-Ƶ3-ĵ4- + BYTE byPictureFormat; //ͼƬʽļΪͼƬʱЧ1-bmp,2-jpeg,3-png,4-swf,5-gif + BYTE byVideoFormat; //ƵʽļΪƵʱЧ1-avi,2-wmv,3-mp4,4-flv,5-vod,6-mkv,7-rmvb + BYTE byDocumentFormat; //ĵʽ0-ppt1-txt2-doc3-xlsļΪ3ʱЧ + BYTE byFileName[NET_SDK_MAX_FILE_PATH]; //Ļļ + DWORD dwFileSize; //ļСλֽ + DWORD dwPPTPage; //pptҳֵȡѴ򿪵PPTļϢʱЧ + BYTE byOtherFileFormat[8]; //͵ļĸʽ.dat.dllȣļΪ4ʱЧ + BYTE byRes1[56]; +}NET_DVR_SCREEN_FILE_INFO, *LPNET_DVR_SCREEN_FILE_INFO; + +typedef struct tagNET_DVR_SCREEN_CONFIG +{ + DWORD dwSize; + BYTE byVolume; //0-100 + BYTE byContrast; //Աȶȣ0-100 + BYTE byBrightness; //ȣ0-100 + BYTE byScreenShowEnabled; //Ļʾ0-أ0- + BYTE byScreenLocked; //Ļ0-0- + BYTE byBlackScreenEnabled; //Ļ0-ȡ0- + BYTE byRes[30]; +}NET_DVR_SCREEN_CONFIG, *LPNET_DVR_SCREEN_CONFIG; + +typedef struct tagNET_DVR_SCREEM_FILE_UPLOAD_PARAM +{ + DWORD dwSize; + BYTE byFileType; //ļͣ1-ͼƬ2-Ƶ3-ĵ4- + BYTE byPictureFormat; //ͼƬʽ1-BMP2-JPEG3-PNG4-SWF5-GIFļΪ1ʱЧ + BYTE byVideoFormat; //Ƶʽ1-AVI2-WMV3-MP44-FLV5-VOD6-MKV7-RMVBļΪ2ʱЧ + BYTE byDocumentFormat; //ĵʽ0-ppt1-txt2-doc3-xlsļΪ3ʱЧ + BYTE byFileName[NET_SDK_MAX_FILE_PATH]; //ļ + BYTE byOtherFileFormat[8]; //͵ļĸʽ.dat.dllȣļΪ4ʱЧ + BYTE byRes1[56]; +}NET_DVR_SCREEM_FILE_UPLOAD_PARAM, *LPNET_DVR_SCREEM_FILE_UPLOAD_PARAM; + +typedef struct tagNET_DVR_SCREEM_FILE_DOWNLOAD_PARAM +{ + DWORD dwSize; + DWORD dwFileIndex; //ļ + DWORD dwPPTPageNo; //PPTҳͼƬʱЧΪ0ʾPPTֵʾPPTҳֵ + BYTE byRes2[64]; +}NET_DVR_SCREEM_FILE_DOWNLOAD_PARAM, *LPNET_DVR_SCREEM_FILE_DOWNLOAD_PARAM; + +typedef struct tagNET_DVR_TV_SCREEN_COND +{ + DWORD dwSize;//ṹ + DWORD dwChannel;//ͨ + WORD wTVScreenNo;// 0-ȫ + BYTE byRes[62]; // +}NET_DVR_TV_SCREEN_COND, *LPNET_DVR_TV_SCREEN_COND; + +typedef struct tagNET_DVR_TV_SCREEN_CFG +{ + DWORD dwSize;//ṹ + DWORD dwPicStayTime;//ͣʱ 0~255s + BYTE byRes[256]; // +}NET_DVR_TV_SCREEN_CFG, *LPNET_DVR_TV_SCREEN_CFG; + +//ȡ豸ץȡͼƬ͸Ϣṹ +typedef struct tagNET_DVR_BV_CALIB_COND +{ + DWORD dwSize; //ṹ + DWORD dwChannels; //ͨ + BYTE byRes[300]; // +}NET_DVR_BV_CALIB_COND, *LPNET_DVR_BV_CALIB_COND; + +typedef struct tagNET_DVR_BV_CALIB_PIC +{ + DWORD dwSize; //ṹ + DWORD dwPicID; + DWORD dwPicLen1;//ͼƬ1 + DWORD dwPicLen2;//ͼƬ2 + char* pPicBuffer1;//ͼƬ + char* pPicBuffer2;//ͼƬ + BYTE byRes[600]; // +}NET_DVR_BV_CALIB_PIC, *LPNET_DVR_BV_CALIB_PIC; + + +//ȡ˫Ŀα궨 +typedef struct tagNET_DVR_BV_CALIB_PARAM +{ + DWORD dwPicID; + NET_VCA_POINT struPoint;//ü + BYTE byRes[32]; // +}NET_DVR_BV_CALIB_PARAM, *LPNET_DVR_BV_CALIB_PARAM; + +typedef struct tagNET_DVR_BV_CALIB_INFO +{ + DWORD dwSize; //ṹ + DWORD dwBVCalibNumber; // + NET_DVR_BV_CALIB_PARAM struBVCalibParam[12]; + DWORD dwHumanHeight; //ʵߣλcm + DWORD dwChannel; //ͨ + BYTE byRes[300]; // +}NET_DVR_BV_CALIB_INFO, *LPNET_DVR_BV_CALIB_INFO; + +typedef struct tagNET_DVR_BV_CALIB_RESULT +{ + DWORD dwSize; //ṹ + DWORD dwCameraHeight; //߶ȣλcm + float fPitchAngle; //ӽǶ[0, 60], + 360* 1000 + float fInclineAngle; //бǶ[-20,20] + 360 * 1000 + BYTE byRes[300]; // +}NET_DVR_BV_CALIB_RESULT, *LPNET_DVR_BV_CALIB_RESULT; + +//ȡ˫Ŀ߶Ƚ +typedef struct tagNET_DVR_BV_HCORRECTION_COND +{ + DWORD dwSize; //ṹ + DWORD dwChannels; //ͨ + DWORD dwPicID; + BYTE byRes[300]; // +}NET_DVR_BV_HCORRECTION_COND, *LPNET_DVR_BV_HCORRECTION_COND; + +typedef struct tagNET_DVR_BV_HCORRECTION_CFG +{ + DWORD dwSize; //ṹ + DWORD dwHumanHeight; //ʵߣλcm + BYTE byRes[300]; // +}NET_DVR_BV_HCORRECTION_CFG, *LPNET_DVR_BV_HCORRECTION_CFG; + + +// +typedef struct tagNET_DVR_TMEVOICE_CFG +{ + DWORD dwSize;//ṹС + BYTE byVoiceSpeed;// 0~100 + BYTE byVoicePitch; // 0~100 + BYTE byVoiceVolum; //0~100 + BYTE byVoicePlateEnable;//ʹ ,0~رգ1~ + /*ࣻ + 3 = Xiaoyan (female, Chinese) + 51 = Jiu Xu (male, Chinese) + 52 = Duo Xu (male, Chinese) + 53 = Xiaoping (female, Chinese) + 54 = Donald Duck (male, Chinese) + 55 = Baby Xu (child, Chinese) + */ + DWORD dwVoiceRole; // + char sInfo[MAX_TMEVOICE_LEN/*64*/]; //ݣѹȦݣ + char sFileName[MAX_TMEVOICE_LEN/*64*/]; //ļ + BYTE byRes[64]; +}NET_DVR_TMEVOICE_CFG,*LPNET_DVR_TMEVOICE_CFG; + +// +typedef struct tagNET_DVR_INPUT_BOARD_CFG +{ + DWORD dwSize; + DWORD dwSlotNo; //λ + BYTE byFullFrameEnable; //Ƿȫ֡ʳԣ0-1- + BYTE byRes[3]; //ֽڶ + BYTE byRes1[64]; // +}NET_DVR_INPUT_BOARD_CFG, *LPNET_DVR_INPUT_BOARD_CFG; + +typedef struct tagNET_DVR_INPUT_BOARD_CFG_LIST +{ + DWORD dwSize; + NET_DVR_INPUT_BOARD_CFG struBoardList[MAX_NUM_INPUT_BOARD]; //Ϣб +}NET_DVR_INPUT_BOARD_CFG_LIST, *LPNET_DVR_INPUT_BOARD_CFG_LIST; + +/******************************ȫƵϢȫ begin******************************************/ +//ȡ豸Ϣṹ +typedef struct _NET_DVR_ENCRYPT_DEVICE_COND +{ + DWORD dwSize; //ṹС + DWORD dwChannel; //ͨ + BYTE byAlgorithm; //㷨0-1-RSA,2-SM2 + BYTE byModelLen; //ģ0-1-1024λ,2-2048λ,3-256λ + BYTE byCERTSaveLocation; //֤鱣λã豸صѡ0-1-оƬ(ͨUSB豸),2-豸 + BYTE byRes[29]; +}NET_DVR_ENCRYPT_DEVICE_COND, *LPNET_DVR_ENCRYPT_DEVICE_COND; +//ȡ豸Ϣṹ +typedef struct _NET_DVR_ENCRYPT_DEVICE_INFO +{ + DWORD dwSize; //ṹС + BYTE byAlgorithm; //㷨0-1-RSA,2-SM2 + BYTE byModelLen; //ģ0-1-1024λ,2-2048λ,3-256λ + BYTE byRes1[30]; // + DWORD dwPublicKeyLen; //Կ + char szPublicKey[MAX_PUBLIC_KEY_LEN]; //Կ + char szChipSerialNumber[CHIP_SERIALNO_LEN]; //оƬк + char szDeviceID[ENCRYPT_DEV_ID_LEN]; //豸ID + BYTE byRes2[128]; +}NET_DVR_ENCRYPT_DEVICE_INFO, *LPNET_DVR_ENCRYPT_DEVICE_INFO; +//֤ṹ +typedef struct _NET_DVR_ENCRYPT_CERT_PARAM +{ + DWORD dwSize; + WORD wCertType; //֤ͣ0-CA֤飬1-ǩ֤,2-֤飬3- SM2Կ + BYTE byRes1[2]; // + DWORD dwCertLen; //֤鳤 + BYTE byRes2[32]; + char* pCertBuf; //֤黺 +}NET_DVR_ENCRYPT_CERT_PARAM, *LPNET_DVR_ENCRYPT_CERT_PARAM; +/******************************ȫƵϢȫ end******************************************/ +#define MAX_RING_NAME_LEN_128 128 //Ƴ +typedef struct tagNET_DVR_RING_UPLOAD_CFG +{ + DWORD dwSize; + DWORD dwRingID; //ţ[1,8] + BYTE byRingName[MAX_RING_NAME_LEN_128/*128*/]; // + DWORD dwRingSize; //ļС + BYTE byRingType; //ͣ0-wav + BYTE byRes[363]; +}NET_DVR_RING_UPLOAD_CFG,*LPNET_DVR_RING_UPLOAD_CFG; + +typedef struct tagNET_DVR_RING_SEARCH_COND +{ + DWORD dwSize; + DWORD dwRingID; //ţɵʽңô˲Ϊ0ʾŲ + BYTE byRes[300]; +}NET_DVR_RING_SEARCH_COND,*LPNET_DVR_RING_SEARCH_COND; + +typedef struct tagNET_DVR_RING_SEARCH_CFG +{ + DWORD dwSize; + DWORD dwRingID; //ţ[1,8] + BYTE byRingName[MAX_RING_NAME_LEN_128/*128*/]; // + DWORD dwRingSize; //ļС + BYTE byRingType; //ͣ0-wav + BYTE byRes[303]; +}NET_DVR_RING_SEARCH_CFG,*LPNET_DVR_RING_SEARCH_CFG; + +// +typedef struct tagNET_DVR_ALARMCTRL_CFG +{ + DWORD dwSize; + BYTE byListenPicUploadEnabled;//ͼƬϴʹ + BYTE byRes [259]; +}NET_DVR_ALARMCTRL_CFG,*LPNET_DVR_ALARMCTRL_CFG; + +typedef struct tagNET_DVR_VEHICLEFLOW_COND +{ + DWORD dwSize; + DWORD dwChannel;//ͨ + BYTE byLane;//ţ1~6,0Ϊг + BYTE byRes1[3]; + NET_DVR_TIME_V30 struStartTime;//ʼʱ + NET_DVR_TIME_V30 struEndTime;//ʱ + BYTE byRes[256]; +}NET_DVR_VEHICLEFLOW_COND, *LPNET_DVR_VEHICLEFLOW_COND; + +typedef struct tagNET_DVR_VEHICLEFLOW_INFO +{ + DWORD dwVehicleFlowValue;//Ϊһʱڵ + BYTE byRes[64]; +}NET_DVR_VEHICLEFLOW_INFO, *LPNET_DVR_VEHICLEFLOW_INFO; + +typedef struct tagNET_DVR_VEHICLEFLOW_CFG +{ + DWORD dwSize; + NET_DVR_VEHICLEFLOW_INFO struVehFlow[MAX_VEHICLEFLOW_INFO/*24*/]; + BYTE byRes[512]; +}NET_DVR_VEHICLEFLOW_CFG, *LPNET_DVR_VEHICLEFLOW_CFG; + +//ṹ +typedef struct tagNET_DVR_IPADDR_FILTER_COND +{ + DWORD dwSize; + DWORD dwChannel;//ͨ + BYTE byRes[64]; +}NET_DVR_IPADDR_FILTER_COND, *LPNET_DVR_IPADDR_FILTER_COND; + +typedef struct tagNET_DVR_TEMPHUMSENSOR +{ + DWORD dwSize;//ṹ峤 + BYTE byEnable;//ʹ 0-أ1- + BYTE byCtrlMode;//ģʽ 0-¶ֵƣ1-ʪֵƣ2-ʪֵ + BYTE byTemperatureValue;//¶ֵ0~100϶,ģʽΪ02ʱЧ + BYTE byHumidityValue;//ʪֵ0~100ģʽΪ12ʱЧ + BYTE byFanSwitch;//ȿأ0-أ1- + BYTE byThermometryUnit;//µλ: 0-϶ȣ棩1-϶ȣH2-(K) + BYTE byRes[62]; +}NET_DVR_TEMPHUMSENSOR, *LPNET_DVR_TEMPHUMSENSOR; + +//״ +typedef struct tagNET_DVR_POSTRADARSPEED_CFG +{ + DWORD dwSize;//ṹС + BYTE byLaneType; //·ͣ0~δ,1~ٹ·,2~п·,0xff~· + BYTE byRes1[3]; + DWORD dwInterval; //ץļλms + DWORD dwSignSpeed;//־(С)λkm/h + DWORD dwSpeedLimit;//ֵ(С)λkm/h + DWORD dwBigCarSignSpeed;//־()λkm/h + DWORD dwBigCarSpeedLimit;//ֵ󳵣λkm/h + DWORD dwLowSpeedLimit;// С޵٣λkm/h + DWORD dwBigCarLowSpeedLimit;// ޵٣λkm/h + BYTE byCheckPostEnabled; //ÿץ + BYTE byOverSpeedEnabled; //óץ + BYTE byRes[246]; +}NET_DVR_POSTRADARSPEED_CFG, *LPNET_DVR_POSTRADARSPEED_CFG; + +//״ +typedef struct tagNET_DVR_POSTRADARPARAM_CFG +{ + DWORD dwSize;//ṹС + BYTE bySoftWareVersion[32];//汾 ֻ + BYTE byID; //ں + BYTE byWorkMode; //ģʽ0~,1~ͷ,2~β,3~Ѳ߳β,4~˫,0xff~ + BYTE bySpeedType; //ٶȸʽ0~ֽ,1~˫ֽ,2~ֽ,0xff~ + BYTE byDirectionFilter; //ˣ0~,1~,2~ȥ + DWORD dwAngleCorrect;//Ƕ[0,70] + DWORD dwSensitivity;// [11,240] + DWORD dwSpeedLowLimit;// [1,150km/h] + DWORD dwTrigDistance;// [0,40m] + BYTE byRes[256]; +}NET_DVR_POSTRADARPARAM_CFG, *LPNET_DVR_POSTRADARPARAM_CFG; + +typedef struct tagNET_DVR_CLOUD_URL_COND +{ + DWORD dwSize; + BYTE byType; //0-1- OneDrive 2-GoogleDrive 3-DropBox + BYTE byRes[63]; +}NET_DVR_CLOUD_URL_COND, *LPNET_DVR_CLOUD_URL_COND; + +typedef struct tagNET_DVR_CLOUD_URL +{ + DWORD dwSize; + char szURL[256]; //ƴ洢URL + BYTE byRes[256]; +}NET_DVR_CLOUD_URL, *LPNET_DVR_CLOUD_URL; + +typedef struct tagNET_DVR_CLOUD_CFG +{ + DWORD dwSize; + BYTE byEnable; //0-1- + BYTE byType; //0-1- OneDrive 2-GoogleDrive 3-DropBox + BYTE byStatus; //״ֻ̬ 0- 1- 2- + BYTE byRes1; + char szAuthCode[CODE_LEN]; //Ȩ + char szAlias[ALIAS_LEN]; //ֻ + INT64 i64TotalCapability; //ֻλMB + INT64 i64UsedSpace; //ֻλMB + BYTE byRes2[256]; +}NET_DVR_CLOUD_CFG, *LPNET_DVR_CLOUD_CFG; + +typedef struct tagNET_DVR_CLOUD_UPLOADSTRATEGY_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byRes[254]; //ΪʹID +}NET_DVR_CLOUD_UPLOADSTRATEGY_COND, *LPNET_DVR_CLOUD_UPLOADSTRATEGY_COND; + +typedef struct tagNET_DVR_CLOUD_UPLOADSTRATEGY +{ + DWORD dwSize; + BYTE byStrategyType; //0-壬1-¼2-ͼƬ + BYTE byRes1[3]; + DWORD dwRecordType; //byStrategyType Ϊ1ʱЧλʾ + /*0x00: */ + /*0x01: ȫ¼*/ + /*0x02: ƶ*/ + /*0x04: ź*/ + /*0x08: */ + BYTE byRes[256]; +}NET_DVR_CLOUD_UPLOADSTRATEGY, *LPNET_DVR_CLOUD_UPLOADSTRATEGY; + +//¼Լ +typedef struct tagNET_DVR_RECORD_CHECK_COND +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struStreamInfo; + BYTE byCheckType; //ⷽʽ,0--¼Ƿ,1--¼Ƿ&ȱʧ¼ֹʱ + BYTE byRes1[3]; + NET_DVR_TIME_EX struBeginTime; //¼Ŀʼʱ + NET_DVR_TIME_EX struEndTime; //¼Ľʱ + BYTE byRes[128]; +}NET_DVR_RECORD_CHECK_COND, *LPNET_DVR_RECORD_CHECK_COND; + +//¼Լ +typedef struct tagNET_DVR_RECORD_CHECK_RET +{ + DWORD dwSize; + BYTE byRecordNotComplete; //¼Ƿ0--,1-- + BYTE byRes1[3]; + NET_DVR_TIME_EX struBeginTime; //ȱʧ¼Ŀʼʱ䣬byCheckTypebyRecordNotCompleteֵΪ1ʱЧ + NET_DVR_TIME_EX struEndTime; //ȱʧ¼Ľʱ䣬byCheckTypebyRecordNotCompleteֵΪ1ʱЧ + BYTE byRes[128]; +}NET_DVR_RECORD_CHECK_RET, *LPNET_DVR_RECORD_CHECK_RET; + +//ֶش +typedef struct tagNET_DVR_ADD_RECORD_PASSBACK_MANUAL_COND +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struStreamInfo; + BYTE byRes[128]; +}NET_DVR_ADD_RECORD_PASSBACK_MANUAL_COND, *LPNET_DVR_ADD_RECORD_PASSBACK_MANUAL_COND; + +//ֶش +typedef struct tagNET_DVR_ADD_RECORD_PASSBACK_MANUAL_CFG +{ + DWORD dwSize; + NET_DVR_TIME_EX struBeginTime; //ش¼ʼʱ + NET_DVR_TIME_EX struEndTime; //ش¼ʱ + BYTE byRes[128]; +}NET_DVR_ADD_RECORD_PASSBACK_MANUAL_CFG, *LPNET_DVR_ADD_RECORD_PASSBACK_MANUAL_CFG; + +//ش +typedef struct tagNET_DVR_RECORD_PASSBACK_TASK_CFG +{ + DWORD dwSize; + DWORD dwTaskID; //ID + BYTE byRes[160]; +}NET_DVR_RECORD_PASSBACK_TASK_CFG, *LPNET_DVR_RECORD_PASSBACK_TASK_CFG; + +//ȡֶش +typedef struct tagNET_DVR_RECORD_PASSBACK_MANUAL_COND +{ + DWORD dwSize; + BYTE byType; //ȡʽ,0--ȡȫʣ1--IDȡʣ, 2--ȡȫ3--IDȡ4IDȡ + BYTE byTimeSegmentQuety; //Ƿʱ䷶Χѯ0-ã1- + BYTE byRes1[2]; // + NET_DVR_STREAM_INFO struStreamInfo; //idϢ72ֽڣIDȡʣʱЧ + NET_DVR_TIME_EX struBeginTime; //ѯʼʱ䣬byTimeSegmentQuetyʱЧ + NET_DVR_TIME_EX struEndTime; //ѯʱ䣬byTimeSegmentQuetyʱЧ + DWORD dwTaskID; //ID, byType4ʱЧ + BYTE byRes[108]; // +}NET_DVR_RECORD_PASSBACK_MANUAL_COND, *LPNET_DVR_RECORD_PASSBACK_MANUAL_COND; + +//ȡֶش +typedef struct tagNET_DVR_RECORD_PASSBACK_MANUAL_TASK_RET +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struStreamInfo; //idϢ72ֽڣIDȡʣʱЧ + DWORD dwTaskID; //ID + NET_DVR_TIME_EX struStartTime; //ش¼ʼʱ + NET_DVR_TIME_EX struStopTime; //ش¼ʱ + BYTE byTaskStatus; //״̬0--δִУ1--ͣУ2--ִ, 3--ش, 4--شʧ, 5--ִгɹֻش˲¼, 6--ִгɹǰ¼ + BYTE byRes1[3]; + NET_DVR_TIME_EX struExecuteStartTime;//ʵִпʼʱ䣬byTaskStatusΪ12Ч + NET_DVR_TIME_EX struExecuteStopTime;//ʵִнʱ䣬byTaskStatusΪ2Ч + BYTE byRes[128]; // +}NET_DVR_RECORD_PASSBACK_MANUAL_TASK_RET, *LPNET_DVR_RECORD_PASSBACK_MANUAL_TASK_RET; + +//ֶش +typedef struct tagNET_DVR_RECORD_PASSBACK_MANUAL_CTRL +{ + DWORD dwSize; + BYTE byControlType; //Ʒʽ,0--ֶͣ1--ֶָ + BYTE byRes[131]; // +}NET_DVR_RECORD_PASSBACK_MANUAL_CTRL, *LPNET_DVR_RECORD_PASSBACK_MANUAL_CTRL; + +//ɾֶش +typedef struct tagNET_DVR_DEL_RECORD_PASSBACK_MANUAL_COND +{ + DWORD dwSize; + BYTE byDelType; //ɾʽ,0--IDɾ1--IDɾ2--ɾȫ + BYTE byRes[131]; // +}NET_DVR_DEL_RECORD_PASSBACK_MANUAL_COND, *LPNET_DVR_DEL_RECORD_PASSBACK_MANUAL_COND; + +//ɾֶش +typedef struct tagNET_DVR_DEL_RECORD_PASSBACK_MANUAL_CFG +{ + DWORD dwSize; + DWORD dwTaskID; //ֶشIDIDɾʱЧ + NET_DVR_STREAM_INFO struStreamInfo; //idϢ72ֽڣIDɾʱЧ + BYTE byRes[128]; // +}NET_DVR_DEL_RECORD_PASSBACK_MANUAL_CFG, *LPNET_DVR_DEL_RECORD_PASSBACK_MANUAL_CFG; + +typedef struct tagNET_DVR_PASSBACK_DAY +{ + BYTE byAllDay; //Ƿȫش + BYTE byRes[3]; // +}NET_DVR_PASSBACK_DAY, *LPNET_DVR_PASSBACK_DAY; + +typedef struct tagNET_DVR_PASSBACK_SCHED +{ + NET_DVR_SCHEDTIME struPassBackTime; //شʱΣʼʱ-ʱ + BYTE byRes[4]; // +}NET_DVR_PASSBACK_SCHED, *LPNET_DVR_PASSBACK_SCHED; + +//¼شƻ +typedef struct tagNET_DVR_RECORD_PASSBACK_SCH_CFG_ +{ + DWORD dwSize; + BYTE byEnable; //Ƿã0--ã1-- + BYTE byPassBackWeek; //Ƿܻش0--1--ǣֵΪ1ʱstruPassBackDaystruPassBackSchedЧ + BYTE byRes1[2]; // + NET_DVR_PASSBACK_DAY struPassBackDay[MAX_DAYS]; //ȫشƻ + NET_DVR_PASSBACK_SCHED struPassBackSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; //ʱλشƻ + BYTE byRes[128]; // +}NET_DVR_RECORD_PASSBACK_SCH_CFG, *LPNET_DVR_RECORD_PASSBACK_SCH_CFG; + +//شʷ¼ƻ +typedef struct tagNET_DVR_RECORD_PASSBACK_HISTORY_PLAN_CFG_ +{ + DWORD dwSize; //汾ͷ + BYTE byEnable; //Ƿã0--ã1-- + BYTE byRes1[3]; // + NET_DVR_PASSBACK_DAY struPassBackDay[MAX_DAYS]; //ȫشƻ + NET_DVR_PASSBACK_SCHED struPassBackSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; //ʱλشƻ + BYTE byRes[256]; // +}NET_DVR_RECORD_PASSBACK_HISTORY_PLAN_CFG, *LPNET_DVR_RECORD_PASSBACK_HISTORY_PLAN_CFG; + +//¼ +typedef struct tagNET_DVR_DEV_STORAGE_CFG +{ + DWORD dwSize; + DWORD dwCapacityTotal; //豸洢(CVRʾ¼)(ֻ)λMB + DWORD dwFreeSpaceTotal; //豸洢(CVRʾ¼)ʣܿռ(ֻ)λMB + DWORD dwLockedRecordSpace; //豸Ѽ¼洢(CVRʾ¼)(ֻ)λMB + DWORD dwUnLockedSpace; //豸δ洢(CVRʾ¼)(ֻ),δ¼ʣ洢ռ䣬λMB + BYTE byRes[512]; // +}NET_DVR_DEV_STORAGE_CFG, *LPNET_DVR_DEV_STORAGE_CFG; + +//һCVRV50 +typedef struct tagNET_DVR_ONE_KEY_CFG_V50 +{ + DWORD dwSize;//ṹС + BYTE byRaidType; //RAIDͣ0-raid5,1-raid6,2-raid95Vraid,3-ģʽraid + BYTE bySpareRaidProportion; //ọ̇̄raidУı,0--0:1,1--1:1,2--1:2,3--1:3,4--1:4,5--1:5,6--1:6,7--6:1,8--5:1,9--4:1,10--3:1,11--2:1 + BYTE byPicQuota; //ͼƬΧ0~100 + BYTE byRes[257]; +}NET_DVR_ONE_KEY_CFG_V50, *LPNET_DVR_ONE_KEY_CFG_V50; + +typedef struct tagNET_DVR_ONE_KEY_RESULT_V51 +{ + DWORD dwState; //״ֵ̬ע״ֵ̬ + BYTE byProgress; //ȣ0~100 + BYTE byRes[259]; +}NET_DVR_ONE_KEY_RESULT_V51, *LPNET_DVR_ONE_KEY_RESULT_V51; + +typedef struct tagNET_DVR_ONE_KEY_CFG_SAN_V50 +{ + DWORD dwSize;//ṹС + BYTE byRaidType; //RAIDͣ0-raid5,1-raid6 + BYTE bySpareRaidProportion; //ọ̇̄raidУı,0--0:1,1--1:1,2--1:2,3--1:3,4--1:4,5--1:5,6--1:6,7--6:1,8--5:1,9--4:1,10--3:1,11--2:1 + BYTE byRes[254]; +}NET_DVR_ONE_KEY_CFG_SAN_V50, *LPNET_DVR_ONE_KEY_CFG_SAN_V50; + +typedef struct tagNET_DVR_REC_PASSBACK_BASIC_CFG +{ + DWORD dwSize;//ṹС + DWORD dwStartTime; //ⴰڿʼʱ䣨λӣ + DWORD dwStopTime; //ⴰڽʱ䣨λӣ + WORD wMaxTotalConcurrenceNum; //ش·,ԵDZ·ǻش + WORD wMaxDvrConcurrenceNum; //̨DVRشͨ + DWORD dwSyncSpeed; //شʣλMbpsΪ12Mbps + DWORD dwRecordType; //¼: 0xffffffffȫ0ʱ1-ƶ,20xff- + BYTE byRes[248]; +}NET_DVR_REC_PASSBACK_BASIC_CFG, *LPNET_DVR_REC_PASSBACK_BASIC_CFG; + +//豸ӵû +typedef struct tagNET_DVR_ONLINE_USER_INFO_ +{ + DWORD dwSize; + WORD wOnlineUserCount; //¼豸û + BYTE byRes[514]; // +}NET_DVR_ONLINE_USER_INFO, *LPNET_DVR_ONLINE_USER_INFO; + +//ѯ¼ܴС +typedef struct tagNET_DVR_RECORD_SEGMENT_COND_ +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struStreanInfo; + NET_DVR_TIME_EX struStartTime; //ʼʱ + NET_DVR_TIME_EX struStopTime; //ʱ + BYTE byRes[256]; // +}NET_DVR_RECORD_SEGMENT_COND, *LPNET_DVR_RECORD_SEGMENT_COND; + +//ѯ¼ܴСز +typedef struct tagNET_DVR_RECORD_SEGMENT_RET_ +{ + DWORD dwSize; + DWORD dwRecordTotalSize; //¼ܴСλMB + BYTE byRes[256]; // +}NET_DVR_RECORD_SEGMENT_RET, *LPNET_DVR_RECORD_SEGMENT_RET; +typedef struct tagNET_DVR_ACCESSORY_CARD_INFO +{ + DWORD dwSize; + BYTE szAccessoryCardInfo[MAX_ACCESSORY_CARD/*256*/];//(ܰƴذ)ͺϢ + BYTE byRes[512]; +}NET_DVR_ACCESSORY_CARD_INFO, *LPNET_DVR_ACCESSORY_CARD_INFO; +//ѯϢṹ +typedef struct tagNET_DVR_SEARCH_INFO_COND +{ + DWORD dwSize; + BYTE byCommand; //ѯ0-ˣ1- + BYTE byRes1[3]; + DWORD dwEmployeeNo; //ţѯΪ0-ʱЧ + BYTE byName[NAME_LEN]; //ѯΪ0-ʱЧ + NET_DVR_TIME_V30 struStartTime; //ʼʱ + NET_DVR_TIME_V30 struEndTime; //ʱ + BYTE byRes[128]; // +}NET_DVR_SEARCH_INFO_COND, *LPNET_DVR_SEARCH_INFO_COND; + +//ȡŰϢ +typedef struct tagNET_DVR_SCHEDULE_CHOICE +{ + BYTE byScheduleType; //ͣ0-Űࡢ1-ͨࡢ2-ʱ + BYTE byScheduleNo; //α + BYTE byRes[14]; // +}NET_DVR_SCHEDULE_CHOICE, *LPNET_DVR_SCHEDULE_CHOICE; +// B20 V1.5 +typedef struct tagNET_DVR_DISPINPUT_CFG +{ + DWORD dwSize; + DWORD dwDispInputNo; //ʾ + DWORD dwEDIDFileNo; //EDIDļ + BYTE byRes[32]; +}NET_DVR_DISPINPUT_CFG, *LPNET_DVR_DISPINPUT_CFG; + +//Űƻṹ +typedef struct tagNET_DVR_SCHEDULE_PLAN +{ + DWORD dwSize; + BYTE bySchedulePlanNo; //Űƻ,ʼΧ + BYTE bySchedulePlanType; //Űƻͣ0-ˡ1- + BYTE byEnable; //ʹ + BYTE byRes1; + NET_DVR_SCHEDULE_CHOICE struScheduleChoice[DAYS_A_WEEK]; //ѡ + NET_DVR_TIME_V30 struStartTime; //ʼʱ + NET_DVR_TIME_V30 struEndTime; //ʱ + BYTE byHolidayNo; // + BYTE byRes[63]; // +}NET_DVR_SCHEDULE_PLAN, *LPNET_DVR_SCHEDULE_PLAN; +typedef struct tagNET_DVR_DISPINPUT_CFG_LIST +{ + DWORD dwSize; + DWORD dwDispInputNum; //صNET_DVR_DISPINPUT_CFGṹĸ + LPNET_DVR_DISPINPUT_CFG lpstruBuffer; //ָ + DWORD dwBufferSize; //С + BYTE byRes[32]; +}NET_DVR_DISPINPUT_CFG_LIST, *LPNET_DVR_DISPINPUT_CFG_LIST; + +//ȡŰϢ +typedef struct tagNET_DVR_SCHEDULE_INFO_CFG +{ + DWORD dwSize; + DWORD dwEmployeeNo; // + BYTE byName[NAME_LEN]; // + BYTE byDepartmentName[NAME_LEN]; // + NET_DVR_SCHEDULE_PLAN struSchedulePlan; //Űƻ + BYTE byRes[128]; // +}NET_DVR_SCHEDULE_INFO_CFG, *LPNET_DVR_SCHEDULE_INFO_CFG; + +//ȡڻϢ +typedef struct tagNET_DVR_ATTENDANCE_SUMMARY_CFG +{ + DWORD dwSize; + DWORD dwEmployeeNo; // + BYTE byName[NAME_LEN]; // + BYTE byDepartmentName[NAME_LEN]; // + DWORD dwWorkStandard; //׼ʱ䣨ӣ + DWORD dwWorkActual; //ʵʹʱ䣨ӣ + DWORD dwLateTimes; //ٵ + DWORD dwLateMinutes;//ٵۼʱ䣨ӣ + DWORD dwLeaveEarlyTimes; //˴ + DWORD dwLeaveEarlyMinutes; //ۼʱ䣨ӣ + DWORD dwOvertimeStandard; //׼Ӱʱ䣨ӣ + DWORD dwOvertimeActual; //ʵʼӰʱ䣨ӣ + DWORD dwAttendanceStandard; //׼죩 + DWORD dwAttendanceActual; //ʵʳ죩 + DWORD dwAbsentDays; //죩 + BYTE byRes[128]; // +}NET_DVR_ATTENDANCE_SUMMARY_CFG, *LPNET_DVR_ATTENDANCE_SUMMARY_CFG; + +//ȡڼ¼Ϣ +typedef struct tagNET_DVR_ATTENDANCE_RECORD_CFG +{ + DWORD dwSize; + DWORD dwEmployeeNo; // + BYTE byName[NAME_LEN]; // + BYTE byDepartmentName[NAME_LEN]; // + NET_DVR_TIME_V30 struAttendanceTime; //ʱ + BYTE byRes[128]; // +}NET_DVR_ATTENDANCE_RECORD_CFG, *LPNET_DVR_ATTENDANCE_RECORD_CFG; + +//ʱϢ +typedef struct tagNET_DVR_ATTENDANCE_TIME +{ + NET_DVR_TIME_V30 struOnDutyTime; //ϰʱ + NET_DVR_TIME_V30 struOffDutyTime; //°ʱ +}NET_DVR_ATTENDANCE_TIME, *LPNET_DVR_ATTENDANCE_TIME; + +//ȡ쳣ͳϢ +typedef struct tagNET_DVR_ABNORMAL_CFG +{ + DWORD dwSize; + DWORD dwEmployeeNo; // + BYTE byName[NAME_LEN]; // + BYTE byDepartmentName[NAME_LEN]; // + NET_DVR_ATTENDANCE_TIME struAttendanceTime[ABNORMAL_INFO_NUM]; //쳣ʱ + DWORD dwLateMinutes; //ٵʱ䣨ӣ + DWORD dwLeaveEarlyMinutes; //ʱ䣨ӣ + DWORD dwAbsenceMinutes; //ȱʱ䣨ӣ + DWORD dwTotalMinutes; //ϼʱ䣨ӣ + BYTE byRes[128]; // +}NET_DVR_ABNORMAL_CFG, *LPNET_DVR_ABNORMAL_CFG; + +typedef struct tagNET_DVR_CARD_CFG_V50 +{ + DWORD dwSize; + DWORD dwModifyParamType; + // Ҫ޸ĵĿÿʱЧλʾÿλһֲ1ΪҪ޸ģ0Ϊ޸ + // #define CARD_PARAM_CARD_VALID 0x00000001 //ǷЧ + // #define CARD_PARAM_VALID 0x00000002 //Чڲ + // #define CARD_PARAM_CARD_TYPE 0x00000004 //Ͳ + // #define CARD_PARAM_DOOR_RIGHT 0x00000008 //Ȩ޲ + // #define CARD_PARAM_LEADER_CARD 0x00000010 //׿ + // #define CARD_PARAM_SWIPE_NUM 0x00000020 //ˢ + // #define CARD_PARAM_GROUP 0x00000040 //Ⱥ + // #define CARD_PARAM_PASSWORD 0x00000080 // + // #define CARD_PARAM_RIGHT_PLAN 0x00000100 //Ȩ޼ƻ + // #define CARD_PARAM_SWIPED_NUM 0x00000200 //ˢ + // #define CARD_PARAM_EMPLOYEE_NO 0x00000400 // + // #define CARD_PARAM_NAME 0x00000800 // + // #define CARD_PARAM_DEPARTMENT_NO 0x00001000 //ű + // #define CARD_SCHEDULE_PLAN_NO 0x00002000 //Űƻ + // #define CARD_SCHEDULE_PLAN_TYPE 0x00004000 //Űƻ + // #define CARD_ROOM_NUMBER 0x00008000 // + // #define CARD_SIM_NO 0x00010000 //SIMţֻţ + // #define CARD_FLOOR_NUMBER 0x00020000 //¥ + // #define CARD_USER_TYPE 0x00040000 //û + BYTE byCardNo[ACS_CARD_NO_LEN]; // + BYTE byCardValid; //ǷЧ0-Ч1-ЧɾʱΪ0ɾȡʱֶʼΪ1 + BYTE byCardType; //ͣ1-ͨ2-Ⱥ忨3-ֹ4-Ѳ5-вȿ6-7-8-9-Ա10-Ӧ11-ӦȨʱȨޣܿţ12-ESDȫ쿨13-ESD쿨14-ESD쿨15-ESDּ쿨Ĭͨ + BYTE byLeaderCard; //ǷΪ׿1-ǣ0- + BYTE byUserType; // 0 C ͨû1 - Աû; + BYTE byDoorRight[MAX_DOOR_NUM_256]; //Ȩ(¥ȨޡȨ)λʾ1ΪȨޣ0ΪȨޣӵλλʾţ1-NǷȨ + NET_DVR_VALID_PERIOD_CFG struValid; //Чڲ + BYTE byBelongGroup[MAX_GROUP_NUM_128]; //Ⱥ飬ֽڱʾ1-ڣ0- + BYTE byCardPassword[CARD_PASSWORD_LEN]; // + WORD wCardRightPlan[MAX_DOOR_NUM_256][MAX_CARD_RIGHT_PLAN_NUM]; //Ȩ޼ƻȡֵΪƻģţͬţͬƻģȨ޻ķʽ + DWORD dwMaxSwipeTime; //ˢ0Ϊ޴ƣ + DWORD dwSwipeTime; //ˢ + WORD wRoomNumber; // + SHORT wFloorNumber; // + DWORD dwEmployeeNo; //ţûID + BYTE byName[NAME_LEN]; // + WORD wDepartmentNo; //ű + WORD wSchedulePlanNo; //Űƻ + BYTE bySchedulePlanType; //Űƻͣ0-塢1-ˡ2- + BYTE byRightType; //·Ȩͣ0-ͨȨޡ1-άȨޡ2-ȨޣӶԽ豸άȨšţ⿨ţˢЧڲȨޣţөʯAPP˺ţͨȨһ£ + BYTE byRes2[2]; + DWORD dwLockID; //ID + BYTE byLockCode[MAX_LOCK_CODE_LEN]; // + BYTE byRoomCode[MAX_DOOR_CODE_LEN]; // + //λʾ0-Ȩޣ1-Ȩ + //0λʾ籨 + //1λʾʾ + //2λʾƿͿ + //3λʾͨ + //4λʾ + //5λʾѲ + DWORD dwCardRight; //Ȩ + DWORD dwPlanTemplate; //ƻģ(ÿ)ʱǷãλʾ0--ã1- + DWORD dwCardUserId; //ֿID + BYTE byCardModelType; //0-գ1- M1 S502- M1 S703- FM1208 CPU4- FM1216 CPU5-CPU6-֤7- NFC + BYTE byRes3[51]; + BYTE bySIMNum[NAME_LEN/*32*/]; //SIMţֻţ +}NET_DVR_CARD_CFG_V50, *LPNET_DVR_CARD_CFG_V50; + +typedef struct tagNET_DVR_CAPTURE_FINGERPRINT_COND +{ + DWORD dwSize; + BYTE byFingerPrintPicType; //ͼƬͣ0- + BYTE byFingerNo; //ָţΧ1-10 + BYTE byRes[126]; +}NET_DVR_CAPTURE_FINGERPRINT_COND, *LPNET_DVR_CAPTURE_FINGERPRINT_COND; + +typedef struct tagNET_DVR_CAPTURE_FINGERPRINT_CFG +{ + DWORD dwSize; + DWORD dwFingerPrintDataSize; //ָݴС + BYTE byFingerData[MAX_FINGER_PRINT_LEN]; //ָ + DWORD dwFingerPrintPicSize; //ָͼƬС0ʱָͼƬ + char* pFingerPrintPicBuffer; //ָͼƬ + BYTE byFingerNo; //ָţΧ1-10 + BYTE byFingerPrintQuality; //ָΧ1-100 + BYTE byRes[62]; +}NET_DVR_CAPTURE_FINGERPRINT_CFG, *LPNET_DVR_CAPTURE_FINGERPRINT_CFG; + +typedef struct tagNET_DVR_CAPTURE_FACE_COND +{ + DWORD dwSize; + BYTE byRes[128]; +}NET_DVR_CAPTURE_FACE_COND, *LPNET_DVR_CAPTURE_FACE_COND; + +typedef struct tagNET_DVR_FACE_FEATURE +{ + NET_VCA_RECT struFace; //ͼ + NET_VCA_POINT struLeftEye; // + NET_VCA_POINT struRightEye; // + NET_VCA_POINT struLeftMouth; // + NET_VCA_POINT struRightMouth; // ұ + NET_VCA_POINT struNoseTip; // +}NET_DVR_FACE_FEATURE, *LPNET_DVR_FACE_FEATURE; + + +typedef struct tagNET_DVR_CAPTURE_FACE_CFG +{ + DWORD dwSize; + DWORD dwFaceTemplate1Size; //ģ1ݴС0ʱģ1 + char* pFaceTemplate1Buffer; //ģ1ݻ棨2.5k + DWORD dwFaceTemplate2Size; //ģ2ݴС0ʱģ2 + char* pFaceTemplate2Buffer; //ģ2ݻ棨2.5K + DWORD dwFacePicSize; //ͼƬݴС0ʱͼƬ + char* pFacePicBuffer; //ͼƬݻ + BYTE byFaceQuality1; //Χ1-100 + BYTE byFaceQuality2; //Χ1-100 + BYTE byCaptureProgress; //ɼȣĿǰֵֻֽ0-δɼ100-ɼֻڽΪ100ʱŽϢ + BYTE byFacePicQuality; //ͼƬ + DWORD dwInfraredFacePicSize; //ͼƬݴС0ʱͼƬ + char* pInfraredFacePicBuffer; //ͼƬݻ + BYTE byInfraredFacePicQuality; //ͼƬ + BYTE byRes1[3]; + NET_DVR_FACE_FEATURE struFeature; //ͼϢ + BYTE byRes[56]; +}NET_DVR_CAPTURE_FACE_CFG, *LPNET_DVR_CAPTURE_FACE_CFG; + +//ѯֶشִ +typedef struct tagNET_DVR_REC_PASSBACK_MANUAL_EXECUTABLE_SEND +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struStreamInfo; //idϢ72ֽڣ + BYTE byRes[128]; // +}NET_DVR_REC_PASSBACK_MANUAL_EXECUTABLE_SEND, *LPNET_DVR_REC_PASSBACK_MANUAL_EXECUTABLE_SEND; + +//ѯֶشִ +typedef struct tagNET_DVR_REC_PASSBACK_MANUAL_EXECUTABLE_RET +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struStreamInfo; //idϢ72ֽڣ + BYTE byExecutable; //0-ش1-ִлش + BYTE byUnexecutableReason; //شԭ, 0-ҪŶӣ1-ӣ2-IDڣ3-CVR쳣4-Ƶ, 5-û, 6-ǰ豸, 7-ԭ + BYTE byRes[254]; // +}NET_DVR_REC_PASSBACK_MANUAL_EXECUTABLE_RET, *LPNET_DVR_REC_PASSBACK_MANUAL_EXECUTABLE_RET; + +typedef struct tagNET_DVR_STREAM_MEDIA_CFG +{ + DWORD dwSize; + BYTE sUrl[MAX_URL_LEN]; + NET_DVR_IPADDR struDMSIP; /* dms IPַ */ + WORD wDMSPort; /*dms ˿ں */ + BYTE byRes1[2]; + DWORD dwDomainID; /*IDֶ֧ƽ̨*/ + BYTE byRes[360]; // +}NET_DVR_STREAM_MEDIA_CFG, *LPNET_DVR_STREAM_MEDIA_CFG; + +//ֻⵥ +typedef struct tagNET_DVR_SHIPSDETECTION_REGION_CFG +{ + + BYTE byRuleID; + BYTE byEnable; //ʹ + BYTE bySensitivity; //ȲΧ[1,100] + BYTE byFrameOverlayEnabled;//ƵǷӼ + BYTE byRes[36]; + NET_ITC_POLYGON struPolygon; // + NET_VCA_LINE struTriggerLine; // +}NET_DVR_SHIPSDETECTION_REGION_CFG, *LPNET_DVR_SHIPSDETECTION_REGION_CFG; + +typedef struct tagNET_DVR_SHIPSDETECTION_CFG +{ + DWORD dwSize; + BYTE byEnable;//ʹ + BYTE byRes1[3]; + float fLookDownUpAngle;//豸ǶȣȷСһλ + float fHorizontalHeight;//豸ˮƽ߶ȣȷСһλ + NET_DVR_SHIPSDETECTION_REGION_CFG struShipsDetectionRegion[MAX_SHIPSDETE_REGION_NUM];//ֻⵥ + BYTE byRes[256]; +}NET_DVR_SHIPSDETECTION_CFG, *LPNET_DVR_SHIPSDETECTION_CFG; + +typedef struct tagNET_DVR_TEMPERATURE_COLOR +{ + /* + ѡ0~±ʱֶЧ,ڸ¶ֵʱнɫע + ѡ1~±ʱ, ֶЧ,ڸ¶ֵʱнɫע + ѡ2~䱨ʱֶЧ¶ڸ¶ʱнɫע + ѡ3~±ʱֶЧ¶Ȳڸ¶ʱнɫע + ѡ4~ΪޱֶͣЧرձ*/ + BYTE byType;//±ɫͣ0~ޱͣرգ1~±ͣ2~±ͣ3~䱨ͣ4~± + BYTE byRes1[3]; + int iHighTemperature;//ֵ-273~10000 + int iLowTemperature;//ֵ-273~10000 + BYTE byRes[8]; +}NET_DVR_TEMPERATURE_COLOR, *LPNET_DVR_TEMPERATURE_COLOR; + +typedef struct tagNET_DVR_THERMOMETRY_BASICPARAM +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byStreamOverlay; //¶Ϣ0- 1- + BYTE byPictureOverlay;//ץͼ¶Ϣ0- 1- + BYTE byThermometryRange;//·Χ: 0-Ĭֵ,1-(-20~150),2-(0~550)϶Ϊλ㣩,3-(϶:0-650棻¶:32-1200H),4-϶: -40-150棩,5-(϶: 0~1200)϶Ϊλ㣬ݲµλ趨ͬ·Χʾ6-(϶: -20-120,7-(϶:20~350), 8-(϶:20~45),9-(϶:30~45),0xff-Զ + BYTE byThermometryUnit;//µλ: 0-϶ȣ棩1-϶ȣH2-(K) + BYTE byThermometryCurve;//ģʽʾʽ0-رգ1-ģʽ1¶ģʽ2-ģʽ2¶ģʽ + BYTE byFireImageModea;//ͼģʽ0-1-ڰģʽ2-̽ģʽ3-ģʽ(ֶ0Ŀǰ֮ǰӿڲ) + BYTE byShowTempStripEnable;//ʾ¶ʹܣ0- 1- + float fEmissivity;//( ȷСλ)[0.01, 1.00](ı) + BYTE byDistanceUnit;//뵥λ: 0-ףm1-Ӣߣfeet,2-(centimeter) + BYTE byEnviroHumidity;//ʪȣȡֵΧ0~100% + BYTE byRes2[2]; + NET_DVR_TEMPERATURE_COLOR struTempColor;//±ɫ + int iEnviroTemperature;//¶ȣȡֵΧ-273~10000϶ + int iCorrectionVolume;//ȡֵΧ-100~100 + /* bit0-ĵ£0-ʾ1-ʾ + bit1-ߵ£0-ʾ1-ʾ + bit2-͵£0-ʾ1-ʾ + */ + BYTE bySpecialPointThermType;// µʾ + BYTE byReflectiveEnabled;//¶ʹܣ0- 1- + WORD wDistance;//(m)[0, 10000] + float fReflectiveTemperature;//¶ ȷСһλ + float fAlert;//Ԥ¶ֵ-100.0-1000.0ȣȷСһλ + float fAlarm;//¶ֵ-100.0-1000.0ȣȷСһλ + float fThermalOpticalTransmittance;// ѧ͸, ȷС3λΧ0.001-1.000Ĭ1.000 + float fExternalOpticsWindowCorrection;//ⲿѧ¶ȣĬֵ20棬ΧΪ-40.0~80.0棬ʵʾλԽʾΪ׼ + BYTE byDisplayMaxTemperatureEnabled;// ʾ 0-ʾ 1-ʾ + BYTE byDisplayMinTemperatureEnabled;// ʾ 0-ʾ 1-ʾ + BYTE byDisplayAverageTemperatureEnabled;// ʾƽ 0-ʾ 1-ʾ + BYTE byThermometryInfoDisplayposition;// Ϣʾλ 0- 1- 2-ĻϽ + DWORD dwAlertFilteringTime;//¶Ԥȴʱ,λ + DWORD dwAlarmFilteringTime;//¶ȱȴʱ,λ + BYTE byemissivityMode; // 1-ֲڣ2-ϴֲڣ3-Ϲ⻬, 4-⻬, 0xff-Զ + BYTE bydisplayTemperatureInOpticalChannelEnabled;//ɼʾ¶Ϣʹܣ0-ã1 + BYTE byDisplayCentreTemperatureEnabled;// ʾĵ¶ 0-ʾ 1-ʾ + BYTE byRes[49]; +}NET_DVR_THERMOMETRY_BASICPARAM, *LPNET_DVR_THERMOMETRY_BASICPARAM; + +typedef struct tagNET_DVR_THERMOMETRY_COND +{ + DWORD dwSize;//ṹС + DWORD dwChannel; + WORD wPresetNo;//0- + BYTE byRes[62]; +}NET_DVR_THERMOMETRY_COND, *LPNET_DVR_THERMOMETRY_COND; + +typedef struct tagNET_DVR_THERMOMETRY_PRESETINFO_PARAM +{ + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byRuleID;//ID 0-ʾЧ1ʼ listڲжЧԣ + WORD wDistance;//(m)[0, 10000] + float fEmissivity;//( ȷСλ)[0.01, 1.00](ı) + BYTE byDistanceUnit;//뵥λ: 0-ףm1-Ӣߣfeet,2-(centimeter) + BYTE byRes[2]; + BYTE byReflectiveEnabled;//¶ʹܣ0- 1- + float fReflectiveTemperature;//¶ ȷС2λ + char szRuleName[NAME_LEN/*32*/];// + BYTE byemissivityMode; // 1-ֲڣ2-ϴֲڣ3-Ϲ⻬, 4-⻬, 0xff-Զ + BYTE byRes1[62]; + BYTE byRuleCalibType;//궨 0-㣬1-2- + NET_VCA_POINT struPoint;//꣨궨Ϊ""ʱЧ + NET_VCA_POLYGON struRegion;//ߣ궨Ϊ""""ʱЧ +}NET_DVR_THERMOMETRY_PRESETINFO_PARAM, *LPNET_DVR_THERMOMETRY_PRESETINFO_PARAM; + + +typedef struct tagNET_DVR_THERMOMETRY_PRESETINFO +{ + DWORD dwSize;//ṹС + WORD wPresetNo;//0- + BYTE byRes[2]; + NET_DVR_THERMOMETRY_PRESETINFO_PARAM struPresetInfo[MAX_THERMOMETRY_REGION_NUM/*40*/]; +}NET_DVR_THERMOMETRY_PRESETINFO, *LPNET_DVR_THERMOMETRY_PRESETINFO; + + +typedef struct tagNET_DVR_BASE_STATION_INFO_ALARM +{ + DWORD dwSize; + DWORD dwChannel;//ͨ + char sNetBarWaCode[16];// + char sCollectionEquipmentID[24];//ɼ豸 + char sMCC[4];//ƶ + char sMNC[4];//ƶ + char sLAC[36];//λ + char sCI[36];//Сʶ + char sBSCI[36];//վʶ + char sBCCH[36];//㲥ŵ + char sLEV[36];//ձƽ + char sCollectionEquipmentLongitude[12];//ɼ豸 + char sCollectionEquipmentLatitude[12];//ɼ豸γ + char sCaptureTime[20];//ɼʱ ʱʽyyyy-MM-dd hh:mm:ss + BYTE byRes[256]; +}NET_DVR_BASE_STATION_INFO_ALARM, *LPNET_DVR_BASE_STATION_INFO_ALARM; + + +typedef struct tagNET_DVR_THERMOMETRY_ALARMRULE_PARAM +{ + BYTE byEnable; + BYTE byRuleID;//ID + BYTE byRule;//¶ȱȽϷʽ 0-´,1-С,2-´,3-С,4-ƽ´,5-ƽС,6-²,7-²С + BYTE byRes; + char szRuleName[NAME_LEN];// + float fAlert;//Ԥ¶ + float fAlarm;//¶ + float fThreshold;//¶ + DWORD dwAlertFilteringTime;//¶Ԥȴʱ,λ + DWORD dwAlarmFilteringTime;//¶ȱȴʱ,λ + BYTE byRes1[56]; +}NET_DVR_THERMOMETRY_ALARMRULE_PARAM, *LPNET_DVR_THERMOMETRY_ALARMRULE_PARAM; + +typedef struct tagNET_DVR_THERMOMETRY_ALARMRULE +{ + DWORD dwSize;//ṹС + NET_DVR_THERMOMETRY_ALARMRULE_PARAM struThermometryAlarmRuleParam[THERMOMETRY_ALARMRULE_NUM]; + BYTE byRes[128]; +}NET_DVR_THERMOMETRY_ALARMRULE, *LPNET_DVR_THERMOMETRY_ALARMRULE; + + +typedef struct tagNET_DVR_THERMOMETRY_DIFFCOMPARISON_PARAM +{ + BYTE byEnable; + BYTE byRuleID;//ID,0-ʾЧΧֵ1ʼ + BYTE byAlarmID1; + BYTE byAlarmID2; + BYTE byRule;//¶ȱȽϷʽ0-´,1-С,2-´,3-С,4-ƽ´,5-ƽС,6-²,7-²С + BYTE byRes[3]; + float fTemperatureDiff;//²ֵ + DWORD dwAlarmFilteringTime;//¶ȱȴʱ,λ + BYTE byRes1[28]; +}NET_DVR_THERMOMETRY_DIFFCOMPARISON_PARAM, *LPNET_DVR_THERMOMETRY_DIFFCOMPARISON_PARAM; + +typedef struct tagNET_DVR_THERMOMETRY_DIFFCOMPARISON +{ + DWORD dwSize;//ṹС + NET_DVR_THERMOMETRY_DIFFCOMPARISON_PARAM struDiffComparison[MAX_THERMOMETRY_DIFFCOMPARISON_NUM/*8*/]; + BYTE byRes[64]; +}NET_DVR_THERMOMETRY_DIFFCOMPARISON, *LPNET_DVR_THERMOMETRY_DIFFCOMPARISON; + + +//ʵʱ¶ȼṹ +typedef struct tagNET_DVR_REALTIME_THERMOMETRY_COND +{ + DWORD dwSize; + DWORD dwChan;//ͨţ1ʼ0xffffffffȡȫͨ + BYTE byRuleID; //ID 0-ȡȫ򣬾ID1ʼ + /* + 1-ʱģʽ豸ÿһϴݵ¡ºƽ¶ֵ² + 2-²ģʽһһ»»ƽ»²ֵ²ڵ2϶ȣϴ¡ºƽ¶ֵڵһСʱ²ֵС2϶ȣϴ¡¡ƽº²ֵ + */ + BYTE byMode; //ģʽ 0-Ϊ豸1-ʱģʽ2-²ģʽ + WORD wInterval; //ϴ²ģʽ֧֣1~3600S0Ĭ3600Sϴһ + float fTemperatureDiff;//² + BYTE byRes[56]; // +}NET_DVR_REALTIME_THERMOMETRY_COND, *LPNET_DVR_REALTIME_THERMOMETRY_COND; + +typedef struct tagNET_DVR_POINT_THERM_CFG +{ + float fTemperature;//ǰ¶ + NET_VCA_POINT struPoint;//꣨궨ΪʱЧ + BYTE byRes[120]; +}NET_DVR_POINT_THERM_CFG, *LPNET_DVR_POINT_THERM_CFG; + +typedef struct tagNET_DVR_LINEPOLYGON_THERM_CFG +{ + float fMaxTemperature;// + float fMinTemperature;// + float fAverageTemperature;//ƽ + float fTemperatureDiff;//² + NET_VCA_POLYGON struRegion;//򣨵궨Ϊ/ߵʱЧ + BYTE byRes[32]; +}NET_DVR_LINEPOLYGON_THERM_CFG, *LPNET_DVR_LINEPOLYGON_THERM_CFG; + +typedef struct tagNET_DVR_THERMOMETRY_UPLOAD +{ + DWORD dwSize; + DWORD dwRelativeTime; // ʱ + DWORD dwAbsTime; // ʱ + char szRuleName[NAME_LEN/*32*/];// + BYTE byRuleID;//ID + BYTE byRuleCalibType;//궨 0-㣬1-2- + WORD wPresetNo; //Ԥõ + NET_DVR_POINT_THERM_CFG struPointThermCfg; + NET_DVR_LINEPOLYGON_THERM_CFG struLinePolygonThermCfg; + BYTE byThermometryUnit;//µλ: 0-϶ȣ棩1-϶ȣH2-(K) + BYTE byDataType;//״̬:0-У1-ʼ2- + BYTE byRes1; + /* + bit0-ĵ£0-֧֣1-֧֣ + bit1-ߵ£0-֧֣1-֧֣ + bit2-͵£0-֧֣1-֧֣ + */ + BYTE bySpecialPointThermType;// Ƿ֧ + float fCenterPointTemperature;//ĵ¶,ȷСһλ(-40-1500),+100*10 bySpecialPointThermTypeжǷ֧ĵ㣩 + float fHighestPointTemperature;//ߵ¶,ȷСһλ(-40-1500),+100*10bySpecialPointThermTypeжǷ֧ߵ㣩 + float fLowestPointTemperature;//͵¶,ȷСһλ(-40-1500),+100*10bySpecialPointThermTypeжǷ֧͵㣩 + NET_VCA_POINT struHighestPoint;//ߡ¶λ꣨궨ΪߡʱЧ + NET_VCA_POINT struLowestPoint;//ߡ¶λ꣨궨ΪߡʱЧ + BYTE byIsFreezedata;//Ƿݶ 0- 1- + BYTE byFaceSnapThermometryEnabled;//ץIJʹ 1- 0-ر + BYTE byRes2[2]; + DWORD dwChan; //ͨţѯͨΪ0xffffffffʱֶЧ + NET_VCA_RECT struFaceRect; //ͼ + DWORD dwTimestamp;//DSPʱ + BYTE byRes[68]; +}NET_DVR_THERMOMETRY_UPLOAD, *LPNET_DVR_THERMOMETRY_UPLOAD; + +//¶ȱ¶Ⱥ¶ȱȽϱ +typedef struct tagNET_DVR_THERMOMETRY_ALARM +{ + DWORD dwSize; + DWORD dwChannel;//ͨ + BYTE byRuleID;//ID + BYTE byThermometryUnit;//µλ: 0-϶ȣ棩1-϶ȣH2-(K) + WORD wPresetNo; //Ԥõ + NET_PTZ_INFO struPtzInfo;//ptzϢ + BYTE byAlarmLevel;//0-Ԥ 1- + BYTE byAlarmType;/* 0-¶ 1-¶ 2-ƽ¶ 3-² 4-¶ͻ 5-¶ͻ*/ + BYTE byAlarmRule;//0-ڣ1-С + BYTE byRuleCalibType;//궨 0-㣬1-2 + NET_VCA_POINT struPoint;//꣨궨ΪʱЧ + NET_VCA_POLYGON struRegion;//򣨵궨ΪʱЧ + float fRuleTemperature;/*ù¶,ȷСһλ(-40-1000),+100 */ + float fCurrTemperature;/*ǰ¶,ȷСһλ(-40-1000),+100 */ + DWORD dwPicLen;//ɼͼƬ + DWORD dwThermalPicLen;//ȳͼƬ + DWORD dwThermalInfoLen;//ȳ񸽼Ϣ + char* pPicBuff; ///ɼͼƬָ + char* pThermalPicBuff;// ȳͼƬָ + char* pThermalInfoBuff; //ȳ񸽼Ϣָ + NET_VCA_POINT struHighestPoint;//ߡ¶λ꣨궨ΪߡʱЧ + float fToleranceTemperature;/* ݲ¶,ȷСһλ(-40-1000),+100 */ + DWORD dwAlertFilteringTime;//¶Ԥȴʱ λ ΧΪ0-200룬ĬΪ0 + DWORD dwAlarmFilteringTime;//¶ȱȴʱ λ ΧΪ0-200룬ĬΪ0 + DWORD dwTemperatureSuddenChangeCycle;//¶ͻ¼ڣλ + float fTemperatureSuddenChangeValue;//¶ͻֵ,ȷСһλ(0) + BYTE byPicTransType; //ͼƬݴ䷽ʽ: 0-ƣ1-url + BYTE byRes1[3]; + DWORD dwVisibleChannel; //ɼͨͨ + DWORD dwRelativeTime; // ʱ + DWORD dwAbsTime; // ʱ + float fAlarmRuleTemperature;/* TMAù¶,ȷСһλ(-40-1000),+100 */ + BYTE byRes[20]; +}NET_DVR_THERMOMETRY_ALARM, *LPNET_DVR_THERMOMETRY_ALARM; + + +//² +typedef struct tagNET_DVR_THERMOMETRY_DIFF_ALARM +{ + DWORD dwSize; + DWORD dwChannel;//ͨ + BYTE byAlarmID1;//AlarmID1 + BYTE byAlarmID2;//AlarmID2 + WORD wPresetNo; //Ԥõ + BYTE byAlarmLevel;//0-Ԥ 1- + BYTE byAlarmType;/* 0-¶ 1-¶ 2-ƽ¶*/ + BYTE byAlarmRule;//0-ڣ1-С + BYTE byRuleCalibType;//궨 0-㣬1-2 + NET_VCA_POINT struPoint[2];//꣨궨ΪʱЧ±0AlarmID1±1AlarmID2. + NET_VCA_POLYGON struRegion[2];//򣨵궨ΪʱЧ±0AlarmID1±1AlarmID2. + float fRuleTemperatureDiff;/*ù²,ȷСһλ(-40-1000)*/ + float fCurTemperatureDiff;/*ǰ²,ȷСһλ(-40-1000),+100 */ + NET_PTZ_INFO struPtzInfo;//ptzϢ + DWORD dwPicLen;//ɼͼƬ + DWORD dwThermalPicLen;//ȳͼƬ + DWORD dwThermalInfoLen;//ȳ񸽼Ϣ + char* pPicBuff; ///ɼͼƬָ + char* pThermalPicBuff;// ȳͼƬָ + char* pThermalInfoBuff; //ȳ񸽼Ϣָ + BYTE byThermometryUnit;//µλ: 0-϶ȣ棩1-϶ȣH2-(K) + BYTE byPicTransType; //ͼƬݴ䷽ʽ: 0-ƣ1-url + BYTE byRes1[2]; + float fToleranceTemperature;/*ݲ¶,ȷСһλ(-40-1000),+100 */ + DWORD dwAlarmFilteringTime;//¶ȱȴʱ λ ΧΪ0-200룬ĬΪ0 + DWORD dwVisibleChannel; //ɼͨͨ + BYTE byRes[48]; +}NET_DVR_THERMOMETRY_DIFF_ALARM, *LPNET_DVR_THERMOMETRY_DIFF_ALARM; + +typedef struct //ṹ +{ + DWORD dwSize; + DWORD dwChannel;//ͨţǰĬ1 + BYTE byRes[128]; +}NET_DVR_SHIPSCOUNT_COND, *LPNET_DVR_SHIPSCOUNT_COND; + + +//ȡֻϢṹ +typedef struct tagNET_DVR_SHIPSCOUNT_CFG +{ + DWORD dwSize; + DWORD dwUpShipsCount; //дֻ + DWORD dwDownShipsCount; //дֻ + DWORD dwLeftShipsCount; //дֻ + DWORD dwRightShipsCount; //дֻ + DWORD dwTotalCount;//ֻܼ + DWORD dwRelativeTime; //豸ʼʱ + DWORD dwAbsTime; //豸ʼľʱ + BYTE byDataType;//״̬:0-У1-ʼ2- + BYTE byRes[255]; +}NET_DVR_SHIPSCOUNT_CFG, *LPNET_DVR_SHIPSCOUNT_CFG; + +//ֻϢ +typedef struct tagNET_DVR_SHIPSINFO +{ + float fShipsLength; //ֻȣ1~1000.0mȷСһλ + float fShipsHeight; //ֻ߶ȣ1~1000.0mȷСһλ + float fShipsWidth; //ֻȣ1~1000.0mȷСһλ + float fShipsSpeed; //ֻٶȣ1~1000.0m/sȷСһλ + BYTE byShipsDirection;//ֻ0~up,1~down,2~left,3~right + BYTE byShipsDetState;//ֻ״̬0~Խߣ1~ͷ⣬2~β + BYTE byTriggerLineID;//ID + BYTE byRes[61]; + NET_VCA_POLYGON struShipsRect; //ֻ򣬹һֵڴͼɼͼȳͼ)ķֱ +} NET_DVR_SHIPSINFO, *LPNET_DVR_SHIPSINFO; + +//ֻץͼϢ +typedef struct tagNET_DVR_SHIPIMAGE_INFO +{ + DWORD dwShipImageLen;//ֻץͼƬݳ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pXmlBuf; //ֻץͼƬָ +#else + char* pXmlBuf; //ֻץͼƬָ + BYTE byRes[4]; +#endif +}NET_DVR_SHIPIMAGE_INFO, *LPNET_DVR_SHIPIMAGE_INFO; + +//ֻⱨϴ +typedef struct tagNET_DVR_SHIPSDETECTION_ALARM +{ + DWORD dwSize; + NET_VCA_DEV_INFO struDevInfo; //豸Ϣ + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + BYTE byShipsNum; //ֻ(ԽߵĴֻ) + BYTE byShipsNumHead;//ֻ(ͷ⴬ֻ) + BYTE byShipsNumEnd; //ֻ(β⴬ֻ) + BYTE byPicTransType; //ͼƬݴ䷽ʽ: 0-ƣ1-url + NET_DVR_SHIPSINFO struShipInfo[MAX_SHIPS_NUM/*20*/];//ֻϢ֧20 + DWORD dwPicLen;//ɼͼƬ + DWORD dwThermalPicLen;//ȳͼƬ + BYTE* pPicBuffer; //ɼͼƬָ + BYTE* pThermalPicBuffer; //ȳͼƬָ + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byTimeDiffFlag; /*ʱֶǷЧ 0-ʱЧ 1-ʱЧ */ + char cTimeDifferenceH; /*UTCʱСʱ-12 ... +14 +ʾ,byTimeDiffFlagΪ1ʱЧ*/ + char cTimeDifferenceM; /*UTCʱӣ-30, 30, 45 +ʾbyTimeDiffFlagΪ1ʱЧ*/ + BYTE bySID;//ID + BYTE byRes1[2]; + char szSceneName[NAME_LEN];//ƣ32ַ + BYTE byRes[132]; + DWORD dwXmlLen;//XML͸ݳ, EventNotificationAlert XML Blockݳ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pXmlBuf; // XMLϢָ,XMLӦEventNotificationAlert XML Block +#else + char* pXmlBuf; // XMLϢָ,XMLӦEventNotificationAlert XML Block + BYTE byRes2[4]; +#endif + NET_DVR_SHIPIMAGE_INFO struShipImageInfo[MAX_SHIPIMAGE_NUM/*6*/];//ֻץͼƬϢ,±Ϊ0ʱΪһŴֻץͼƬԴƣ֧6ͼƬ +}NET_DVR_SHIPSDETECTION_ALARM, *LPNET_DVR_SHIPSDETECTION_ALARM; + +typedef struct tagNET_DVR_THERMAL_PIP +{ + DWORD dwSize;//ṹС + BYTE byEnable;//Ƿ + BYTE byPipMode;// лģʽ0~ģʽ1~ںģʽ2-ͨģʽ + BYTE byOverlapType;//ͣѡлģʽЧ0~ɼȳͼƬ1~ȳӿɼͼƬ + BYTE byTransparency;//͸ 0~100 + NET_VCA_POLYGON struPipRegion;//лλ + BYTE byImageFusionRatio;//ͼںϱ,ںģʽЧ 0-100 Ĭ75 + BYTE byBorderFusionRatio;//Եںϱ,ںģʽЧ 0-100 Ĭ100 + BYTE byRes1[2]; + float fDistance;//ںϾ,ںģʽЧ,Χ0.1-4.0 + BYTE byRes[632]; +}NET_DVR_THERMAL_PIP, *LPNET_DVR_THERMAL_PIP; + +typedef struct tagNET_DVR_RULESLINE_CFG +{ + NET_DVR_RGB_COLOR struRGB;// RGBRɫGɫBɫ Χ0-255 + BYTE byRes[128]; +}NET_DVR_RULESLINE_CFG, *LPNET_DVR_RULESLINE_CFG; + +typedef struct tagNET_DVR_THERMAL_INTELRULE_DISPLAY +{ + DWORD dwSize;//ṹС + /* + fontSizeType:ΪСſݸñԼԤڵĿȶ̬ıĴСʽΪ屶ֵ/8*(0.01*Ԥڿ) + Ӧ£ + 0~8ʣС + 1~12ʣ׼ + 2~16ʣ + 3~20ʣ + 4~24ʣش + */ + BYTE byFontSizeType; + BYTE byRes1[3]; + NET_DVR_RULESLINE_CFG struNormalRulesLineCfg;//Բ + NET_DVR_RULESLINE_CFG struAlertRulesLineCfg;//ԤԲ + NET_DVR_RULESLINE_CFG struAlarmRulesLineCfg;//Բ + BYTE byRes[640]; +}NET_DVR_THERMAL_INTELRULE_DISPLAY, *LPNET_DVR_THERMAL_INTELRULE_DISPLAY; + +typedef struct tagNET_DVR_BAREDATAOVERLAY_CFG +{ + DWORD dwSize; + BYTE byEnable;//ʹ + BYTE byIntervalTime;// ϴʱã1 2 3 4 5.λΪ룬ĬΪ3 + BYTE byRes[258]; +}NET_DVR_BAREDATAOVERLAY_CFG, *LPNET_DVR_BAREDATAOVERLAY_CFG; + +//ṹ +typedef struct tagNET_DVR_THERMOMETRY_TRIGGER_COND +{ + DWORD dwSize;//ṹС + DWORD dwChan;//ͨ + DWORD dwPreset;//ԤõţĿǰ֧,踳ֵ + BYTE byRes[256]; +}NET_DVR_THERMOMETRY_TRIGGER_COND, *LPNET_DVR_THERMOMETRY_TRIGGER_COND; + +//ֶ +typedef struct tagNET_DVR_MANUALDEICING_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿֶ 0~رգ1~ + BYTE byRes[127]; +}NET_DVR_MANUALDEICING_CFG, *LPNET_DVR_MANUALDEICING_CFG; + +//СLED +typedef struct tagNET_DVR_INPUT_SOURCE_TEXT_COND +{ + DWORD dwSize; + DWORD dwInputSourceNo; //Դ + DWORD dwTextNo; //ı + BYTE byRes[32]; +}NET_DVR_INPUT_SOURCE_TEXT_COND, *LPNET_DVR_INPUT_SOURCE_TEXT_COND; + +typedef struct tagNET_DVR_INPUT_SOURCE_TEXT +{ + DWORD dwSize; + DWORD dwTextNo; //ı + BYTE byEnable; //Ƿʹܣ0-ʹܣ1-ʹ + BYTE byFontSize; //С + BYTE byBkGroudMode; //ģʽ1-͸2- + BYTE byRes[1]; + DWORD dwXPosition; //ַʾλõϽX꣬Դ + DWORD dwYPosition; //ַʾλõϽY꣬Դ + NET_DVR_RGB_COLOR struForegroudColor; //ַǰɫ + NET_DVR_RGB_COLOR struBackgroudColor; //ַɫ + BYTE byTextContent[MAX_LEN_TEXT_CONTENT]; //ַ + BYTE byRes1[64]; +}NET_DVR_INPUT_SOURCE_TEXT, *LPNET_DVR_INPUT_SOURCE_TEXT; + +typedef struct tagNET_DVR_INPUT_SOURCE_TEXT_LIST +{ + DWORD dwSize; + NET_DVR_INPUT_SOURCE_TEXT struTextList[MAX_NUM_INPUT_SOURCE_TEXT]; //ıб + BYTE byRes[64]; +}NET_DVR_INPUT_SOURCE_TEXT_LIST, *LPNET_DVR_INPUT_SOURCE_TEXT_LIST; + +typedef struct tagNET_DVR_INPUT_SOURCE_RESOLUTION +{ + DWORD dwSize; + DWORD dwInputSignalNo; //Դ + BYTE byEnabled; //ԶֱǷʹ + BYTE byRes; + WORD wImageWidth; //ͼ + WORD wImageHeight; //ͼ߶ + WORD wRefreshRate; //ˢƵ + BYTE byColorDepth; //ɫȣ32λ16λ8λֿѡ + BYTE byScanType; //ɨͣ1-ɨ裬2-ɨ + BYTE byRes1[62]; +}NET_DVR_INPUT_SOURCE_RESOLUTION, *LPNET_DVR_INPUT_SOURCE_RESOLUTION; + +typedef struct tagNET_DVR_INPUT_SOURCE_RESOLUTION_LIST +{ + DWORD dwSize; + DWORD dwInputSignalCnt; //豸źԴ + LPNET_DVR_INPUT_SOURCE_RESOLUTION lpstruBuffer; //ָ + DWORD dwBufferSize; //С + BYTE byRes[32]; +}NET_DVR_INPUT_SOURCE_RESOLUTION_LIST, *LPNET_DVR_INPUT_SOURCE_RESOLUTION_LIST; + +typedef struct tagNET_DVR_LED_AREA_COND +{ + DWORD dwSize; + DWORD dwVideoWallNo; //ǽ + DWORD dwLEDAreaNo; //LED + BYTE byRes[32]; +}NET_DVR_LED_AREA_COND, *LPNET_DVR_LED_AREA_COND; + +typedef struct tagNET_DVR_LED_AREA_INFO +{ + DWORD dwSize; + DWORD dwLEDAreaNo; //LED + NET_DVR_RECTCFG_EX struRect; // + DWORD dwaOutputNo[MAX_NUM_OUTPUT_CHANNEL]; //б + BYTE byAreaType; //ͣ0-LED1-LCD + BYTE byRes[31]; +}NET_DVR_LED_AREA_INFO, *LPNET_DVR_LED_AREA_INFO; + +typedef struct tagNET_DVR_LED_AREA_INFO_LIST +{ + DWORD dwSize; + DWORD dwLEDAreaNum; //LED + LPNET_DVR_LED_AREA_INFO lpstruBuffer; //ָ + DWORD dwBufferSize; //С + BYTE byRes[32]; +}NET_DVR_LED_AREA_INFO_LIST, *LPNET_DVR_LED_AREA_INFO_LIST; + +//еȴ +typedef struct tagNET_DVR_CALL_WAITTING_CFG +{ + DWORD dwSize; //ṹС + BYTE byEnable; //Ƿúеȴ, 0--ã1-- + BYTE byRes1; + WORD wWaitTime;//еȴʱ䣬λ + WORD wCalledWaitTime;/*λ룬еȴʱ*/ + BYTE byRes[510]; +}NET_DVR_CALL_WAITTING_CFG, *LPNET_DVR_CALL_WAITTING_CFG; + +//Ʋ +typedef struct tagNET_DVR_ALARM_LAMP_CFG +{ + DWORD dwSize; //ṹС + BYTE byEnable; //Ƿþƶʱ˸, 0--ã1-- + BYTE byRes1; + WORD wFlashDuration;//ƶʱ˸ʱ䣬λ + WORD wFlashIntervalTime;//˸ʱ䣬λ + BYTE byRes[510]; +}NET_DVR_ALARM_LAMP_CFG, *LPNET_DVR_ALARM_LAMP_CFG; + +//ʾ +typedef struct tagNET_DVR_VOICE_PROMPTION_CFG +{ + DWORD dwSize; //ṹС + BYTE byEnable; //Ƿʾ, 0--ã1-- + BYTE byRes1[3]; + BYTE byCenterBusyFile[NAME_LEN];//ķæʾļ + BYTE byRefusedFile[NAME_LEN];//ܾʾļ + BYTE byHangUpFile[NAME_LEN];//Խʾļ + BYTE byCallWaittingFile[NAME_LEN];//еȺļ + BYTE byConsultWaittingFile[NAME_LEN];//ҵѯȺļ + BYTE byWelcomeFile[NAME_LEN];//ӭʾļ + BYTE byFarewellFile[NAME_LEN];//ļ + BYTE byCalledVoicePromptName[NAME_LEN];//ʾ + BYTE byRes[384]; +}NET_DVR_VOICE_PROMPTION_CFG, *LPNET_DVR_VOICE_PROMPTION_CFG; + +// +typedef struct tagNET_DVR_EMERGENCE_ALARM_RSP_CTRL_CFG +{ + DWORD dwSize; //ṹС + BYTE byCommand; //0--centerbusy1--refuse + BYTE byType; //ͣ01ҵѯ + BYTE byRes[510]; +}NET_DVR_EMERGENCE_ALARM_RSP_CTRL_CFG, *LPNET_DVR_EMERGENCE_ALARM_RSP_CTRL_CFG; + +///////////*_V50///////////// +typedef struct _tagNET_DVR_ALARMHOST_NETPARAM_V50 +{ + DWORD dwSize; + NET_DVR_IPADDR struIP; + WORD wPort; + BYTE byAddressType; //0 - , 1 - ipv4/ipv6ַ2 - + BYTE byEnable; //ʹܣ0-ã1- + BYTE byDomainName[MAX_DOMAIN_NAME/*64*/]; //GPRSáʱֶξЧ + BYTE byReportProtocol; //1-private 2-NAL2300, 3-Ehome + BYTE byDevID[ACCOUNTNUM_LEN_32/*32*/]; //ЭΪNAL2300ʱЧ + BYTE byProtocolVersion; //EHomeЭ汾0-,1Cv2.02Cv4.03-v5.0 + BYTE byRes1[3]; + BYTE byEHomeKey[NET_SDK_EHOME_KEY_LEN]; //EHome KeyEHome 5.0汾 + BYTE byRes2[28]; //GPRSڹ̶ķϽеģԲҪϢԤһЩֶ +} NET_DVR_ALARMHOST_NETPARAM_V50, *LPNET_DVR_ALARMHOST_NETPARAM_V50; + +typedef struct _tagNET_DVR_ALARMHOST_NETCFG_V50 +{ + DWORD dwSize; + NET_DVR_ALARMHOST_NETPARAM_V50 struNetCenter[MAX_CENTERNUM]; + BYTE byRes1[128]; +} NET_DVR_ALARMHOST_NETCFG_V50, *LPNET_DVR_ALARMHOST_NETCFG_V50; +//Ŀװʽ +typedef enum tagSTREAM_TYPE{ + STREAM_PS = 0x1, //PSļ㣬Ҫڴ洢Ҳڴ + STREAM_3GPP = 0x2, //3GPPļ㣬ڴ洢 +}STREAM_TYPE; +typedef enum tagNET_SDK_INIT_CFG_TYPE +{ + NET_SDK_INIT_CFG_TYPE_CHECK_MODULE_COM = 0, //ӶԱļ + NET_SDK_INIT_CFG_ABILITY = 1, //sdkֵ֧ҵ + NET_SDK_INIT_CFG_SDK_PATH = 2, //HCNetSDKĿ¼ + NET_SDK_INIT_CFG_LIBEAY_PATH = 3, //OpenSSLlibeay32.dll/libcrypto.so/libcrypto.dylib· + NET_SDK_INIT_CFG_SSLEAY_PATH = 4 //OpenSSLssleay32.dll/libssl.so/libssl.dylib· +}NET_SDK_INIT_CFG_TYPE; + +typedef struct tagNET_DVR_INIT_CHECK_MODULE_COM +{ + BYTE byEnable; //ñ 0-ã1- + BYTE byRes[255]; +}NET_DVR_INIT_CHECK_MODULE_COM, *LPNET_DVR_INIT_CHECK_MODULE_COM; +//SDKֵ֧· +typedef enum _INIT_CFG_MAX_NUM +{ + INIT_CFG_NUM_2048 = 2048, // 2048· + INIT_CFG_NUM_5120 = 5120, //5120· + INIT_CFG_NUM_10240 = 10240, // 10240· + INIT_CFG_NUM_15360 = 15360, // 15360· + INIT_CFG_NUM_20480 = 20480, // 20480· +}INIT_CFG_MAX_NUM; + +typedef struct tagNET_DVR_INIT_CFG_ABILITY +{ + INIT_CFG_MAX_NUM enumMaxLoginUsersNum; //עû + INIT_CFG_MAX_NUM enumMaxAlarmNum; //ĸ澯· + BYTE byRes[64]; +}NET_DVR_INIT_CFG_ABILITY, *LPNET_DVR_INIT_CFG_ABILITY; + +typedef struct tagNET_DVR_LOCAL_SDK_PATH +{ + char sPath[NET_SDK_MAX_FILE_PATH];//ַ + BYTE byRes[128]; +}NET_DVR_LOCAL_SDK_PATH, *LPNET_DVR_LOCAL_SDK_PATH; + +typedef struct tagNET_DVR_SDKMEMPOOL_CFG +{ + BYTE byRes[256]; +}NET_DVR_SDKMEMPOOL_CFG, *LPNET_DVR_SDKMEMPOOL_CFG; + + +typedef struct tagNET_DVR_RES_INFO +{ + DWORD dwImageWidth; //ͼ + DWORD dwImageHeight; //ͼ߶ +}NET_DVR_RES_INFO, *LPNET_DVR_RES_INFO; + +typedef struct tagNET_DVR_VS_INPUT_CHAN_INIT +{ + DWORD dwSize; + DWORD dwVSInputChan; //ͨ + DWORD dwResNums; //ֱʵĸ + NET_DVR_RES_INFO struResList[MAX_RES_NUM_ONE_VS_INPUT_CHAN]; //ֱб + BYTE byRes[32]; +}NET_DVR_VS_INPUT_CHAN_INIT, *LPNET_DVR_VS_INPUT_CHAN_INIT; + +typedef struct tagNET_DVR_VS_INPUT_CHAN_INIT_LIST +{ + DWORD dwSize; + NET_DVR_VS_INPUT_CHAN_INIT struChanList[MAX_VS_INPUT_CHAN_NUM]; //ͨб + BYTE byRes[32]; +}NET_DVR_VS_INPUT_CHAN_INIT_LIST, *LPNET_DVR_VS_INPUT_CHAN_INIT_LIST; + +typedef struct tagNET_DVR_VS_INPUT_CHAN_CFG +{ + DWORD dwSize; + DWORD dwVSInputChan; //ͨ + NET_DVR_RES_INFO struResolutin; //ֱ + BYTE byRes[64]; +}NET_DVR_VS_INPUT_CHAN_CFG, *LPNET_DVR_VS_INPUT_CHAN_CFG; + +typedef struct tagNET_DVR_VS_NETSRC_CFG +{ + DWORD dwSize; + DWORD dwVSInputChan; //ͨ + BYTE byDispUrl[MAX_URL_LEN]; //ʾURL + BYTE byEnabled; //ǷURL + BYTE byRes[127]; +}NET_DVR_VS_NETSRC_CFG, *LPNET_DVR_VS_NETSRC_CFG; + +typedef struct tagNET_DVR_EDID_FILE_INFO +{ + DWORD dwSize; + DWORD dwEDIDFileNo; //EDIDļţ1ʼ + BYTE byFileName[FILE_NAME_LEN]; //EDIDļ + BYTE byRes[32]; +}NET_DVR_EDID_FILE_INFO, *LPNET_DVR_EDID_FILE_INFO; + +typedef struct tagNET_DVR_EDID_FILE_INFO_LIST +{ + DWORD dwSize; + DWORD dwEDIDFileNum; //صNET_DVR_EDID_FILE_INFO + LPNET_DVR_EDID_FILE_INFO lpstruBuffer; //ָ + DWORD dwBufferSize; //С + BYTE byRes[32]; +}NET_DVR_EDID_FILE_INFO_LIST, *LPNET_DVR_EDID_FILE_INFO_LIST; + +//ӴڽOSD +typedef struct tagNET_DVR_OSD_INFO +{ + BYTE byEnabled; //Ƿʹܣ-ʹܣ-ʹ + BYTE byEnabledFlash; //Ƿ˸-˸-˸ + BYTE byFontSize; //С1-2-У3-С + BYTE byTransparent; //͸ȣȡֵΧ0-100 + NET_DVR_RGB_COLOR struColor; //ɫ + WORD wCoordinateX; //OSDϽX + WORD wCoordinateY; //OSDϽY + BYTE byContent[MAX_LEN_OSD_CONTENT]; //OSDϢ + BYTE byRes[32]; +}NET_DVR_OSD_INFO, *LPNET_DVR_OSD_INFO; + +typedef struct tagNET_DVR_SUBWND_DECODE_OSD +{ + DWORD dwSize; + DWORD dwSubWndNo; //Ӵںţ4ֽϷʽ + DWORD dwOSDNums; //ӴõOSDϢĸ + NET_DVR_OSD_INFO struOSDList[MAX_NUM_OSD_ONE_SUBWND]; //OSDϢб + BYTE byRes[32]; +}NET_DVR_SUBWND_DECODE_OSD, *LPNET_DVR_SUBWND_DECODE_OSD; + +typedef struct tagNET_DVR_SUBWND_DECODE_OSD_LIST +{ + DWORD dwSize; + NET_DVR_SUBWND_DECODE_OSD struSubWndList[MAX_NUM_SPLIT_WND]; //ӴڵĽOSD + BYTE byRes[32]; +}NET_DVR_SUBWND_DECODE_OSD_LIST, *LPNET_DVR_SUBWND_DECODE_OSD_LIST; + +typedef struct tagNET_DVR_DECODE_CHANNEL_OSD +{ + DWORD dwSize; + NET_DVR_OSD_INFO struOSDInfo[MAX_NUM_OSD]; //OSDϢб + BYTE byRes[32]; +}NET_DVR_DECODE_CHANNEL_OSD, *LPNET_DVR_DECODE_CHANNEL_OSD; + +//ȳܻò +typedef struct tagNET_DVR_THERMINTELL_PARAM +{ + DWORD dwSize;//ṹС + BYTE byIntellType; //ܹԴ,0~+쳣Ϊ(Ĭ)1~ֻ⣬2~,3~л, 4~£5-+̻⣬6-+ 7-쳣Ϊ 8- + BYTE byRes[127]; +}NET_DVR_THERMINTELL_PARAM, *LPNET_DVR_THERMINTELL_PARAM; + +typedef struct tagNET_DVR_FACE_THERMOMETRY_ALARM +{ + DWORD dwSize; + DWORD dwChannel;//ͨ + BYTE byRuleID; //¹ID:1-40 + BYTE byRes1[3]; + BYTE byRuleName[NAME_LEN]; // + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + BYTE byFaceDetectionState;//״̬0~δ⵽1~Ѽ⵽ + BYTE byThermometryUnit;//µλ: 0-϶ȣ棩1-϶ȣH2-(K) + BYTE byAlarmRule;//0-´ڣ1-С + BYTE byRes2[1]; + float fAlarmTemperature;//¶ȣ-20.0~120.0棬ȷС1λ + float fRuleTemperature;// ñ¶ȣ-20.0~60.0棬ȷС1λ + DWORD dwVisibleLightImageLen;// ɼͼƬ + BYTE *pVisibleLightImage; //ɼͼƬָ + DWORD dwFaceImageLen;// ͼ + BYTE *pFaceImage; //ͼָ + NET_VCA_RECT struFaceRegion;//Ŀ߽豸ʶץͼƬУͼ + float fMinTemperature;// ¶ȣ-20.0~120.0棬ȷС1λ + float fAverageTemperature;//ƽ£-20.0~120.0棬ȷС1λ + NET_VCA_POINT struMinTemperaturePoint; //¶λ + NET_VCA_POINT struMaxTemperaturePoint;//¶λ + BYTE byRes[720]; +}NET_DVR_FACE_THERMOMETRY_ALARM, *LPNET_DVR_FACE_THERMOMETRY_ALARM; + +//GUIDļ +typedef struct tagNET_DVR_GUID_FILE_EXPORT +{ + DWORD dwSize; + char sLoginPassWord[NET_SDK_MAX_LOGIN_PASSWORD_LEN/*128*/]; //û¼ + BYTE byRes[128]; +}NET_DVR_GUID_FILE_EXPORT, *LPNET_DVR_GUID_FILE_EXPORT; + +//û¼У +typedef struct tagNET_DVR_LOGIN_PASSWORDCFG +{ + DWORD dwSize; + char sLoginPassWord[NET_SDK_MAX_LOGIN_PASSWORD_LEN/*128*/]; //û¼ + BYTE byRes[256]; +}NET_DVR_LOGIN_PASSWORDCFG, *LPNET_DVR_LOGIN_PASSWORDCFG; + +//ȫ +typedef struct tagNET_DVR_SINGLE_SECURITY_QUESTION_CFG +{ + DWORD dwSize; + DWORD dwId;//ţȫţֻ + char sAnswer[NET_SDK_MAX_ANSWER_LEN/*256*/];//𰸣ȡʱֻ + BYTE byMark;// 0-δ 1- + BYTE byRes[127]; +}NET_DVR_SINGLE_SECURITY_QUESTION_CFG, *LPNET_DVR_SINGLE_SECURITY_QUESTION_CFG; + +//ȫ +typedef struct tagNET_DVR_SECURITY_QUESTION_CFG +{ + DWORD dwSize; + NET_DVR_SINGLE_SECURITY_QUESTION_CFG struSecurityQuestion[NET_SDK_MAX_QUESTION_LIST_LEN/*32*/];//ȫб + char sLoginPassWord[NET_SDK_MAX_LOGIN_PASSWORD_LEN/*128*/];//adminû¼ + BYTE byRes[512]; +}NET_DVR_SECURITY_QUESTION_CFG, *LPNET_DVR_SECURITY_QUESTION_CFG; + +typedef struct tagNET_DVR_ALARMIN_TRIGGER_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨţ1ʼ + DWORD dwAlarmInNo;//ţ0ʼ + BYTE byRes[256]; +}NET_DVR_ALARMIN_TRIGGER_COND, *LPNET_DVR_ALARMIN_TRIGGER_COND; + +typedef struct tagNET_DVR_FACELIB_GUARD_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + char szFDID[68];//ID + BYTE byRes[128]; +}NET_DVR_FACELIB_GUARD_COND, *LPNET_DVR_FACELIB_GUARD_COND; + +typedef struct tagNET_DVR_GUID_FILE_STATUS_INFO +{ + DWORD dwSize; + BYTE byLockStatus; //0δ1 + BYTE byPasswd; //0:1ȷע:ֵδʱЧ + BYTE byRetryNum; //ʣೢԴע:ֵδʱЧ + BYTE byRes1; + DWORD dwLockTime; //ʣʱ䣺λ롣ע:ֵʱЧ + BYTE byRes[128]; +}NET_DVR_GUID_FILE_STATUS_INFO, *LPNET_DVR_GUID_FILE_STATUS_INFO; + + +//ģʽ +typedef struct tagNET_DVR_THERMOMETRY_MODE +{ + DWORD dwSize;//ṹС + BYTE byMode;//ģʽ0~ͨģʽ1~רģʽ + BYTE byThermometryROIEnabled; //ROIʹ 0- 1- 2-ڻݿǣ + BYTE byRes[62]; +}NET_DVR_THERMOMETRY_MODE, *LPNET_DVR_THERMOMETRY_MODE; + +//ȳ㷨汾ȡ +typedef struct tagNET_DVR_THERMAL_ALGINFO +{ + DWORD dwSize;//ṹС + char sThermometryAlgName[NET_SDK_MAX_THERMOMETRYALGNAME/*128*/];//㷨汾 + char sShipsAlgName[NET_SDK_MAX_SHIPSALGNAME /*128*/];//ֻ㷨汾 + char sFireAlgName[NET_SDK_MAX_FIRESALGNAME /*128*/];//㷨汾 + BYTE byRes[768]; +}NET_DVR_THERMAL_ALGINFO, *LPNET_DVR_THERMAL_ALGINFO; + +// +typedef struct tagNET_DVR_CURRENT_LOCK +{ + DWORD dwSize;//ṹС + BYTE byCurrentLock;//ֱ̨0~1~ȫ2~3/43~ + BYTE byRes[255]; +}NET_DVR_CURRENT_LOCK, *LPNET_DVR_CURRENT_LOCK; + +//ȶԱ͸ʽ +typedef struct tagNET_VCA_FACESNAP_RAWDATA_ALARM_ +{ + DWORD dwSize; //ṹС + DWORD dwRelativeTime; // ʱ + DWORD dwAbsTime; // ʱ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + DWORD dwJsonDataLen; //jsonݶϢ0-ûݣ0ʾݣṹŵjsonݳȣ + BYTE* pJsonBuff;// jsonָ + BYTE byRes[256]; // ֽ +}NET_VCA_FACESNAP_RAWDATA_ALARM, *LPNET_VCA_FACESNAP_RAWDATA_ALARM; + +//߼У +typedef struct tagNET_DVR_ADVANCE_SCREEN_CHECK_PARAM +{ + BYTE byDelFullScreenGamut; /*Ƿɾɫ,0-,1-ǣbyOperateType Ϊ3-ɾУʱЧ*/ + BYTE byDelLightPanelGamut; /*Ƿɾưɫ,0-,1-ǣbyOperateType Ϊ3-ɾУʱЧ*/ + BYTE byDelLightPanelWhiteBalance; /*Ƿɾưƽ,0-,1-ǣbyOperateType Ϊ3-ɾУʱЧ*/ + BYTE byRes[13]; +}NET_DVR_ADVANCE_SCREEN_CHECK_PARAM, *LPNET_DVR_ADVANCE_SCREEN_CHECK_PARAM; + +//LEDĻУ +typedef struct tagNET_SDK_LED_SCREEN_CHECK_PARAM +{ + DWORD dwSize; + BYTE byOperateType; //ͣ1-дУݣ2-УԤ3-ɾУݣ4-ԭʼݣ5-УԭʼԤ + BYTE byIsRGBSynChk; //RGBǷͬ0-֧֣!0-֧֣byOperateTypeΪ12ʱЧ + BYTE byScreenCheckType; //ĻУ,0-ͨУ,1-߼У + BYTE byRes1; + WORD wRgbPermil; //RGBͬǧֱȣbyOperateTypeΪ12byIsRGBSynChkʱЧ + WORD wRedPermil; //ɫǧֱȣbyOperateTypeΪ12byIsRGBSynChkΪʱЧ + WORD wGreenPermil; //ɫǧֱȣbyOperateTypeΪ12byIsRGBSynChkΪʱЧ + WORD wBluePermil; //ɫǧֱȣbyOperateTypeΪ12byIsRGBSynChkΪʱЧ + DWORD dwRectCount; // + NET_DVR_RECTCFG_EX struRectList[MAX_SCREEN_AREA_NUM]; //б˳ + NET_DVR_ADVANCE_SCREEN_CHECK_PARAM struAdvanceScreenCheckParam;//߼У,byScreenCheckTypeΪ1ʱЧ + BYTE byRes2[48]; +}NET_SDK_LED_SCREEN_CHECK_PARAM, *LPNET_SDK_LED_SCREEN_CHECK_PARAM; + +//LEDĻУӦ +typedef struct tagNET_SDK_SCREEN_CHECK_RESPONSE_DATA +{ + DWORD dwSize; + BYTE byDataType; //ͣ1-ȣȣ2-״̬ + BYTE byOperateType; //ͣ1-дУݣ2-УԤ3-ɾУ + BYTE byProgress; //ȣbyDataTypeΪ1ʱЧ0-100 + BYTE byStatus; //״̬byDataTypeΪ2ʱЧ1-LEDĻУʧܣ2-LEDĻӦĽտڣ3-Уʧܣԭʼ쳣 + //4-ĻͺŲ֧У5-豸æУ6-豸ڴ治 + NET_DVR_RECTCFG_EX struRect; //LEDĻbyDataTypeΪ2ʱЧ + BYTE byRes[64]; +}NET_SDK_SCREEN_CHECK_RESPONSE_DATA, *LPNET_SDK_SCREEN_CHECK_RESPONSE_DATA; + +typedef struct tagNET_DVR_PLAY_BY_NAME_PARA +{ + char szFileName[100]; //طļ + BYTE byDownload; //Ƿ 0-1- + BYTE byRes1[127]; + HWND hWnd; //طŵĴھΪգSDKյݣʾ + NET_DVR_ADDRESS struAddr; //ļڼȺCSַϢϢļʱ᷵ + //Ϊձʾ¼ַ + BYTE byRes2[256]; +}NET_DVR_PLAY_BY_NAME_PARA, *LPNET_DVR_PLAY_BY_NAME_PARA; + +typedef struct tagNET_DVR_PLAYBCK_BYTIME_COND_PCNVR +{ + DWORD dwSize; + NET_DVR_IPADDR struIpAddr; + WORD wIpPort; + BYTE byRes[2]; + char sDomainName[MAX_DOMAIN_NAME]; + char sSerial[SERIALNO_LEN]; + LONG iChannel; + NET_DVR_TIME struStartTime; + NET_DVR_TIME struStopTime; + HWND hWnd; +}NET_DVR_PLAYBCK_BYTIME_COND_PCNVR, *LPNET_DVR_PLAYBCK_BYTIME_COND_PCNVR; + +//ļؼȺ¼ļ +typedef struct tagNET_DVR_DOWNLOAD_BY_NAME_COND +{ + char *pFileName; //طļ\0100ֽ + char *pSavedFileName;//ļλ + NET_DVR_ADDRESS struAddr; //ļڼȺCSַϢϢļʱ᷵ + //Ϊձʾ¼ַ + BYTE byRes[256]; +}NET_DVR_DOWNLOAD_BY_NAME_COND, *LPNET_DVR_DOWNLOAD_BY_NAME_COND; + +typedef struct tagNET_DVR_PIC_PARAM //ҽṹ +{ + char *pDVRFileName; //ͼƬ\064ֽ + char *pSavedFileBuf; //ͼƬĻڴⲿͷ + DWORD dwBufLen; //С + DWORD *lpdwRetLen; //ʵյݳָ룬ΪNULL + NET_DVR_ADDRESS struAddr; //ͼƬڵĵַϢͼƬʱ᷵ + BYTE byRes[256]; //ֽ +}NET_DVR_PIC_PARAM, *LPNET_DVR_PIC_PARAM; + +#define NET_SDK_MAX_INDENTITY_KEY_LEN 64 // + +// +typedef struct tagNET_DVR_FACELIB_COND +{ + DWORD dwSize; + char szFDID[NET_SDK_MAX_FDID_LEN/*256*/];//ID + BYTE byConcurrent;//豸 0-1-ʼ + BYTE byCover;//Ƿ񸲸ʽ 0-1- + BYTE byCustomFaceLibID;//FDIDǷԶ壬0-ǣ1-ǣ + /*/ISAPI/Intelligent/channels//faceContrast/capabilitiesзisSupportNoSaveUploadPictureڵʱ + Dzģʽ£ֲ֧ϴԭͼIJ:ϴɹͼƬ豸ģɹ󣬻Ὣϴԭͼɾ + עò޷벢ͬʱС*/ + BYTE byPictureSaveMode;//ϴԭͼģʽ0-棬1-; + BYTE byIdentityKey[NET_SDK_MAX_INDENTITY_KEY_LEN/*64*/];// + BYTE byRes[60]; +}NET_DVR_FACELIB_COND, *LPNET_DVR_FACELIB_COND; + +// +typedef struct tagNET_DVR_HBDLIB_COND +{ + DWORD dwSize; + char szHBDID[NET_SDK_MAX_HBDID_LEN/*256*/];//ID + BYTE byConcurrent;//豸 0-1-ʼ + BYTE byCover;//Ƿ񸲸ʽ 0-1- + BYTE byCustomHBDID;// HBDIDǷԶ壬0-ǣ1-ǣ + BYTE byRes[125]; +}NET_DVR_HBDLIB_COND, *LPNET_DVR_HBDLIB_COND; + +typedef struct tagNET_DVR_EXPORT_PUBLISH_SCHEDULE +{ + DWORD dwScheduleID;// ճ + DOWNLOAD_DATA_CB fnDownloadFileCallBack; //ݻص + void* pUser; //ûָ + BYTE byRes[32]; +}NET_DVR_EXPORT_PUBLISH_SCHEDULE, *LPNET_DVR_EXPORT_PUBLISH_SCHEDULE; + +typedef struct tagNET_DVR_GBT28181_AUDIO_OUTPUT_COND +{ + DWORD dwSize; + DWORD dwAudioChannel;//Խͨ + BYTE byRes[128]; +}NET_DVR_GBT28181_AUDIO_OUTPUT_COND, *LPNET_DVR_GBT28181_AUDIO_OUTPUT_COND; + +//GBT28181Эͨ ýṹ +typedef struct tagNET_DVR_GBT28181_AUDIO_OUTPUT_CFG +{ + DWORD dwSize; + char szAudioOutNumID[MAX_COMPRESSIONID_LEN];//豸ID + BYTE byRes[256]; +}NET_DVR_GBT28181_AUDIO_OUTPUT_CFG, *LPNET_DVR_GBT28181_AUDIO_OUTPUT_CFG; + +typedef struct tagNET_DVR_NOTICE_VIDEO_DATA +{ + DWORD dwSize; + DWORD dwFileSize; //ļСλֽ + BYTE byNoticeNumber[MAX_NOTICE_NUMBER_LEN]; // + BYTE byRes[2016]; +}NET_DVR_NOTICE_VIDEO_DATA, *LPNET_DVR_NOTICE_VIDEO_DATA; + +typedef struct tagNET_DVR_NOTICE_VIDEO_DATA_COND +{ + DWORD dwSize; + BYTE byRes[256]; // +}NET_DVR_NOTICE_VIDEO_DATA_COND, *LPNET_DVR_NOTICE_VIDEO_DATA_COND; + +typedef struct tagNET_DVR_NOTICE_VIDEO_DATA_CFG +{ + DWORD dwSize; + DWORD dwDataLen; //ݳ + char* pDataBuffer; //ָ + BYTE byDataType; //ͣ0-Ч1-ṹݣNET_DVR_NOTICE_VIDEO_DATA2-Ƶ + BYTE byRes[63]; +}NET_DVR_NOTICE_VIDEO_DATA_CFG, *LPNET_DVR_NOTICE_VIDEO_DATA_CFG; + +typedef struct tagNET_DVR_UPGRADE_FIRMWARE_INFO +{ + DWORD dwMagicNumber; /* ħֶΣ̶ֵ0x484b5753 */ + DWORD dwCheckSum; /* ļͷУ */ + DWORD dwHeadLen; /* ļͷ */ + DWORD dwFileNums; /* ļ */ + DWORD dwLanguage; /* ԣ1-ӢĻԣ2- */ + DWORD dwDeviceClassID; /* 1 C DS9000 DVR */ + DWORD dwOemCode; /* 1 C private */ + BYTE byUpgradeVersion; /* 汾: 0xFE - жflash, ram, DSP ram */ + BYTE byResFeature[15]; /* ֶ */ + BYTE byFlashSize; /* 0 - do not need check; 1 - 16M; 2 - 32M; 3 - 64M */ + BYTE byRamSize; /* 0 - do not need check; 1 - 128M; 2 - 256M; 3 - 512M; 4 - 1024M*/ + BYTE byDspRamSize; /* 0 - do not need check; 1 - 64M; 2 - 128M; 3 - 256M */ + BYTE byRes[17]; /* */ +}NET_DVR_UPGRADE_FIRMWARE_INFO, *LPNET_DVR_UPGRADE_FIRMWARE_INFO; + + +typedef struct tagNET_DVR_SCHEDULE_FILE_RET +{ + DWORD dwSize; + char szFileName[32]; //ļ + DWORD dwFileLen; //ļ + BYTE byRes[64]; +}NET_DVR_SCHEDULE_FILE_RET, *LPNET_DVR_SCHEDULE_FILE_RET; + +#define NET_SDK_MAX_EXAM_ROUND_NO 64 //Գα󳤶 +#define NET_SDK_MAX_EXAM_NO 64 //Ա󳤶 +#define NET_SDK_MAX_EXAM_SUBJECT 64 //ԿĿ󳤶 +#define NET_SDK_MAX_TEACHER_NO 64 //࿼ʦ󳤶 +#define NET_SDK_MAX_TEACHER_NAME 64 //࿼ʦ󳤶 +#define NET_SDK_MAX_EXAMINEE_NO 64 //󳤶 +#define NET_SDK_MAX_ADMISSION_TICKET 64 //׼֤󳤶 + +typedef struct tagNET_DVR_EXAM_INFO_COND +{ + DWORD dwSize; + DWORD dwExamNumber; //ϢĿ + BYTE byRes[128]; +}NET_DVR_EXAM_INFO_COND, *LPNET_DVR_EXAM_INFO_COND; + +typedef struct tagNET_DVR_EXAM_INFO_CFG +{ + DWORD dwSize; + BYTE byExamRoundNo[NET_SDK_MAX_EXAM_ROUND_NO/*64*/]; //Գαţijþ忼ԣ + BYTE byExamNo[NET_SDK_MAX_EXAM_NO/*64*/]; //Աţijοԣೡԣ + BYTE byExamSubject[NET_SDK_MAX_EXAM_SUBJECT/*64*/]; //ԿĿ + BYTE byTeacherNo[NET_SDK_MAX_TEACHER_NO/*64*/]; //࿼ʦ + BYTE byTeacherName[NET_SDK_MAX_TEACHER_NAME/*64*/]; //࿼ʦ + NET_DVR_TIME struStartTime; //Կʼʱ + NET_DVR_TIME struEndTime; //Խʱ + BYTE byExamInfoValid; //ϢǷЧ0-Ч1-ЧڿԳαɾϢֶΪ0ʱɾ + BYTE byRes[127]; +}NET_DVR_EXAM_INFO_CFG, *LPNET_DVR_EXAM_INFO_CFG; + +typedef struct tagNET_DVR_EXAM_INFO_STATUS +{ + DWORD dwSize; + BYTE byExamRoundNo[NET_SDK_MAX_EXAM_ROUND_NO/*64*/]; //Գαţijþ忼ԣ + BYTE byStatus; //·״̬0-Ч1-ʧܣ2-ɹÿԳ·Ƿɹ + BYTE byRes[127]; +}NET_DVR_EXAM_INFO_STATUS, *LPNET_DVR_EXAM_INFO_STATUS; + +typedef struct tagNET_DVR_EXAMINEE_INFO_COND +{ + DWORD dwSize; + DWORD dwExamineeNumber; //ϢĿ + BYTE byRes[128]; +}NET_DVR_EXAMINEE_INFO_COND, *LPNET_DVR_EXAMINEE_INFO_COND; + +typedef struct tagNET_DVR_EXAMINEE_INFO_CFG +{ + DWORD dwSize; + BYTE byExamineeNo[NET_SDK_MAX_EXAMINEE_NO/*64*/]; // + BYTE byAdmissionTicket[NET_SDK_MAX_ADMISSION_TICKET/*64*/]; //׼֤ + BYTE byExamRoundNo[NET_SDK_MAX_EXAM_ROUND_NO/*64*/]; //Գαţijþ忼ԣ + BYTE byName[NAME_LEN/*32*/]; // + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + BYTE bySex; //Ա0-Ч1-У2-Ů + BYTE byExamineeInfoValid; //ϢǷЧ0-Ч1-ЧڿźͿԳαɾϢֶΪ0ʱɾ + BYTE byRes[126]; +}NET_DVR_EXAMINEE_INFO_CFG, *LPNET_DVR_EXAMINEE_INFO_CFG; + +typedef struct tagNET_DVR_EXAMINEE_INFO_STATUS +{ + DWORD dwSize; + BYTE byExamineeNo[NET_SDK_MAX_EXAMINEE_NO/*64*/]; // + BYTE byExamRoundNo[NET_SDK_MAX_EXAM_ROUND_NO/*64*/]; //Գαţijþ忼ԣ + BYTE byStatus; //·״̬0-Ч1-ʧܣ2-ɹÿϢ·Ƿɹ + BYTE byRes[127]; +}NET_DVR_EXAMINEE_INFO_STATUS, *LPNET_DVR_EXAMINEE_INFO_STATUS; + +typedef struct tagNET_DVR_EXAM_COMPARE_RESULT_COND +{ + DWORD dwSize; + BYTE byExamRoundNo[NET_SDK_MAX_EXAM_ROUND_NO/*64*/]; //Գαţijþ忼ԣ + BYTE byExamNo[NET_SDK_MAX_EXAM_NO/*64*/]; //Աţijοԣೡԣ + NET_DVR_TIME struStartTime; //ʼʱ + NET_DVR_TIME struEndTime; //ʱ + BYTE byRes[512]; +}NET_DVR_EXAM_COMPARE_RESULT_COND, *LPNET_DVR_EXAM_COMPARE_RESULT_COND; + +typedef struct tagNET_DVR_EXAM_COMPARE_RESULT_CFG +{ + DWORD dwSize; + NET_DVR_TIME struTime; //ʱ + BYTE byExamineeNo[NET_SDK_MAX_EXAMINEE_NO/*64*/]; // + BYTE byAdmissionTicket[NET_SDK_MAX_ADMISSION_TICKET/*64*/]; //׼֤ + BYTE byExamNo[NET_SDK_MAX_EXAM_NO/*64*/]; //Աţijοԣೡԣ + BYTE byExamRoundNo[NET_SDK_MAX_EXAM_ROUND_NO/*64*/]; //Գαţijþ忼ԣ + BYTE byName[NAME_LEN/*32*/]; // + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + DWORD dwPicDataLen; //ȶץͼƬݴСΪ0DZʾ + char *pPicData; //ȶץͼƬָ + BYTE byRes[256]; +}NET_DVR_EXAM_COMPARE_RESULT_CFG, *LPNET_DVR_EXAM_COMPARE_RESULT_CFG; + +typedef struct tagNET_DVR_BLOCKLIST_PICTURE_COND +{ + DWORD dwSize; + DWORD dwPictureNum; //ͼƬ + BYTE byRes[128]; +}NET_DVR_BLOCKLIST_PICTURE_COND, *LPNET_DVR_BLOCKLIST_PICTURE_COND; + +typedef struct tagNET_DVR_BLOCKLIST_PICTURE_STATUS +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN/*32*/]; // + BYTE byStatus; //״̬0-Ч1-У2-ϴʧܣ3-ɹ + BYTE byRes[63]; +}NET_DVR_BLOCKLIST_PICTURE_STATUS, *LPNET_DVR_BLOCKLIST_PICTURE_STATUS; + +typedef struct tagNET_DVR_BLOCKLIST_PICTURE_CFG +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN/*32*/]; // + BYTE byName[NAME_LEN/*32*/]; // + BYTE bySex; //Ա0-Ч1-У2-Ů + BYTE byPictureValid; //ֹͼƬǷЧ0-Ч1-ЧڰɾֹͼƬֶΪ0ʱɾɾʱݽֹͼƬ + BYTE byRes1[2]; + DWORD dwPictureLen; //ֹͼƬȣͼƬС1M + char* pPictureBuffer; //ֹͼƬָ + BYTE byRes[128]; +}NET_DVR_BLOCKLIST_PICTURE_CFG, *LPNET_DVR_BLOCKLIST_PICTURE_CFG; + +typedef struct tagNET_DVR_UPLOAD_ID_BLOCKLIST_COND +{ + DWORD dwSize; + DWORD dwBlockListNum; //ֹ + BYTE byRes[128]; +}NET_DVR_UPLOAD_ID_BLOCKLIST_COND, *LPNET_DVR_UPLOAD_ID_BLOCKLIST_COND; + +typedef struct tagNET_DVR_UPLOAD_ID_BLOCKLIST_CFG +{ + DWORD dwSize; + NET_DVR_ID_CARD_INFO struIDCardCfg;//֤Ϣýṹ֤ΪֶΪѡ + BYTE byBlockListValid; //ֹ֤ǷЧ0-Ч1-Чڰ֤ɾֶֹ֤Ϊ0ʱɾ + BYTE byRes[127]; +}NET_DVR_UPLOAD_ID_BLOCKLIST_CFG, *LPNET_DVR_UPLOAD_ID_BLOCKLIST_CFG; + +typedef struct tagNET_DVR_UPLOAD_ID_BLOCKLIST_STATUS +{ + DWORD dwSize; + BYTE byIDNum[MAX_ID_NUM_LEN]; //֤ + BYTE byStatus; //״̬0-Ч1-У2-ϴʧܣ3-ɹ + BYTE byRes[63]; +}NET_DVR_UPLOAD_ID_BLOCKLIST_STATUS, *LPNET_DVR_UPLOAD_ID_BLOCKLIST_STATUS; + +typedef struct tagNET_DVR_ALARM_ISAPI_INFO +{ + char * pAlarmData; // + DWORD dwAlarmDataLen; // ݳ + BYTE byDataType; // 0-invalid,1-xml,2-json + BYTE byPicturesNumber; // ͼƬ + BYTE byRes[2]; + void * pPicPackData; // ͼƬ䳤 + BYTE byRes1[32]; +}NET_DVR_ALARM_ISAPI_INFO, *LPNET_DVR_ALARM_ISAPI_INFO; + +typedef struct tagNET_DVR_ALARM_ISAPI_PICDATA +{ + DWORD dwPicLen; + BYTE byPicType; //ͼƬʽ: 1-jpg, 2-wav, 3-mp4 + BYTE byRes[3]; + char szFilename[MAX_FILE_PATH_LEN]; + BYTE *pPicData; +}NET_DVR_ALARM_ISAPI_PICDATA, *LPNET_DVR_ALARM_ISAPI_PICDATA; + +typedef struct tagNET_DVR_FORMAT_HDD +{ + DWORD dwSize;//ṹ峤 + DWORD dwDiskNo;//Ӳ̺ţ0ʼ0xffʾӲЧֻӲ̣ + NET_DVR_IPADDR struLocateIP;//Ӳ豸IPӦӲ̹V50лȡszHDLocateIPϢ + BYTE byRes[16]; +}NET_DVR_FORMAT_HDD, *LPNET_DVR_FORMAT_HDD; + +typedef struct tagNET_DVR_CHECK_FACE_PICTURE_COND +{ + DWORD dwSize; + DWORD dwPictureNum; //ͼƬ + BYTE byCheckTemplate; //0-УͼƬǷϷĬϣ1-УͼƬͽģǷƥ + BYTE byRes[127]; +}NET_DVR_CHECK_FACE_PICTURE_COND, *LPNET_DVR_CHECK_FACE_PICTURE_COND; + +typedef struct tagNET_DVR_CHECK_FACE_PICTURE_CFG +{ + DWORD dwSize; + DWORD dwPictureNo; //ͼƬ + DWORD dwPictureLen; //ͼƬȣͼƬС200k + char* pPictureBuffer; //ͼƬָ + DWORD dwFaceTemplateLen; //ģݳ + char* pFaceTemplateBuffer; //ģָ + BYTE byRes[248]; +}NET_DVR_CHECK_FACE_PICTURE_CFG, *LPNET_DVR_CHECK_FACE_PICTURE_CFG; + +typedef struct tagNET_DVR_CHECK_FACE_PICTURE_STATUS +{ + DWORD dwSize; + DWORD dwPictureNo; //ͼƬ + BYTE byCheckStatus; //У0-Ч1-ģɹ2-ģʧܣ3-ģͨѶ쳣4-ͼ5-ϣ6-£7-ƫ8-ƫң9-˳ʱת + //10 - ʱת11-ۼС12-ģƥ䣬13-ģ岻ƥ,14- + BYTE byRes[127]; +}NET_DVR_CHECK_FACE_PICTURE_STATUS, *LPNET_DVR_CHECK_FACE_PICTURE_STATUS; + +typedef struct tagNET_SDK_NPQ_STATE_SINGLE +{ + DWORD dwRttUs; //rttλus + DWORD dwRealRttUs; //ʵʱrttλus + DWORD dwBitRate; //ʣλbps + BYTE byLossFraction; //ʣλ1/256 + BYTE byLossFraction2; //ָ֮Ķʣֻڽն˻ȡλ1/256 + BYTE byRes[126]; +}NET_SDK_NPQ_STATE_SINGLE, *LPNET_SDK_NPQ_STATE_SINGLE; + + +typedef struct tagNET_SDK_NPQ_STATE +{ + DWORD dwSize; + NET_SDK_NPQ_STATE_SINGLE struAudioState; //Ƶ״̬ + NET_SDK_NPQ_STATE_SINGLE struVideoState; //Ƶ״̬ + BYTE byRes[256]; +}NET_SDK_NPQ_STATE, *LPNET_SDK_NPQ_STATE; + +typedef struct tagNET_SDK_NPQ_NOTIFY_PARAM +{ + LONG iVersion; //ṹ汾Ժ + DWORD dwBitRate; // λbps + BOOL bHaveBitrate; //ֶǷЧ־ + BOOL bHaveForceIframe; //ǿIֶ֡ǷЧ־ + BOOL bForceIframe; //ǿI֡ + BOOL bHaveScale; //scaleֶǷЧ־,طʱֶЧ,ͨSDKŽӿʵ + float fScale; //scaleϢ 1248,طʱֶЧ,ͨSDKŽӿʵ + BYTE res[240]; +}NET_SDK_NPQ_NOTIFY_PARAM, *LPNET_SDK_NPQ_NOTIFY_PARAM; + +//Ϣѯṹ +typedef struct tagNET_DVR_ALARM_SEARCH_COND +{ + DWORD dwSize; + NET_DVR_TIME_SEARCH_COND strStartTime; //ʼʱ,ʱΪͨʱɸѡ + NET_DVR_TIME_SEARCH_COND strStopTime; //ʱ, ʱΪͨʱɸѡ + /* + ֵֶ뱨ͬĿǰ֧֣ + COMM_VCA_ALARM 0x4993 ܼⱨ + COMM_UPLOAD_FACESNAP_RESULT 0x1112 ʶϴ + COMM_SNAP_MATCH_ALAR 0x2902 ȶԽϴ + */ + DWORD dwAlarmComm; //Ϊбˡ + char sAlarmUID[64]; //UIDʶϴʱ豸صUIDʶ64ֽڵijȣʹʱ䣨ȷ룩漴ķʽɣ,ΪUID + WORD wEventType;//¼ͣdwAlarmCommΪCOMM_VCA_ALARM 0x4993 ܼⱨЧ0-ʾ¼,1-Ŀ⣨mixedTargetDetection,2-Ŀ⣨radarVideoDetection + WORD wSubEventType;//¼ͣ0-ʾ¼ֵwEventTypeȡֵ仯仯μ + BYTE bySupport; // + BYTE byNoBoundary; //Ƿ񲻴boundary0-1-ǣdwAlarmCommΪܼⱨʱЧΪ1ʱ¼ΪCOMM_ISAPI_ALARM + BYTE byRes[122]; +}NET_DVR_ALARM_SEARCH_COND, *LPNET_DVR_ALARM_SEARCH_COND; +//Ϣѯṹ +typedef struct tagNET_DVR_ALARM_SEARCH_RESULT +{ + DWORD dwSize; + /* + ֵֶ뱨ͬĿǰ֧֣ + COMM_VCA_ALARM 0x4993 ܼⱨ + COMM_UPLOAD_FACESNAP_RESULT 0x1112 ʶϴ + COMM_SNAP_MATCH_ALARM 0x2902 ȶԽϴ + COMM_ISAPI_ALARM 0x6009 ISAPI + */ + DWORD dwAlarmComm; + /* + Ϣֵֶ뱨ϢͬĿǰ֧֣ + COMM_VCA_ALARMʱñϢΪJSON + COMM_UPLOAD_FACESNAP_RESULTʱñϢΪNET_VCA_FACESNAP_RESULT + COMM_SNAP_MATCH_ALARMʱñϢΪNET_VCA_FACESNAP_MATCH_ALARM + COMM_ISAPI_ALARMʱñϢΪNET_DVR_ALARM_ISAPI_INFO + */ + DWORD dwAlarmLen;//ϢpAlarmInfoָָݳ + char *pAlarmInfo; + NET_DVR_ALARMER struAlarmer; + BYTE byRes[128]; +}NET_DVR_ALARM_SEARCH_RESULT, *LPNET_DVR_ALARM_SEARCH_RESULT; + +typedef struct tagNET_DVR_FACE_AND_TEMPLATE_COND +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀţʱòã + DWORD dwFaceNum; //ûȡȡʱΪ0xffffffffʾȡϢ + BYTE byRes[128]; // +}NET_DVR_FACE_AND_TEMPLATE_COND, *LPNET_DVR_FACE_AND_TEMPLATE_COND; + +typedef struct tagNET_DVR_FACE_AND_TEMPLATE_CFG +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + DWORD dwFaceLen; //ͼƬȣͼƬС200k + char* pFaceBuffer; //ͼƬָ + DWORD dwFaceTemplateLen; //ģݳ + char* pFaceTemplateBuffer; //ģָ + BYTE byRes[116]; +}NET_DVR_FACE_AND_TEMPLATE_CFG, *LPNET_DVR_FACE_AND_TEMPLATE_CFG; + +typedef struct tagNET_DVR_FACE_AND_TEMPLATE_STATUS +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + BYTE byRecvStatus;//·״ֽ̬ڱʾ0-ʧܣ1-ɹ2-ڴ + BYTE byRes[131]; +}NET_DVR_FACE_AND_TEMPLATE_STATUS, *LPNET_DVR_FACE_AND_TEMPLATE_STATUS; + +typedef struct tagNET_DVR_SINGLE_HEATMAP_RESULT_PDC +{ + DWORD dwMaxHeatMapValue;//ȶֵ + DWORD dwMinHeatMapValue;//Сȶֵ + DWORD dwTimeHeatMapValue;// (ʱȶֵ)ƽȶֵ + WORD wArrayLine;//ͼƬصֵ + WORD wArrayColumn;//ͼƬصֵ ֵΪ0ʱصֵڴϢڣ + BYTE* pBuffer; //ȶͼƬصϢ + BYTE byRes[32]; +}NET_DVR_SINGLE_HEATMAP_RESULT_PDC, *LPNET_DVR_SINGLE_HEATMAP_RESULT_PDC; + +//ȶͼϴ +typedef struct tagNET_DVR_HEATMAP_RESULT_PDC +{ + DWORD dwSize; + NET_DVR_TIME_EX struStartTime;/*ʼʱ*/ + NET_DVR_TIME_EX struEndTime;/*ʱ*/ + NET_VCA_DEV_INFO struDevInfo;/*豸Ϣ*/ + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byBrokenNetHttp; //־λ0-شݣ1-ش + BYTE byArrayUnitType;//ԪͣϢÿصݵͣ,1-byte, 2-short,4- int + /* + struSingleHeatMap[0]:ʾͳеĻͣȶֵ + struSingleHeatMap[1]:ʾͳеĻ뿪ȶֵ + */ + NET_DVR_SINGLE_HEATMAP_RESULT_PDC struSingleHeatMap[2]; + WORD wCurNumber;//ǰ + WORD wLeaveNumber;//뿪 + #if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pEventNotificationAlertBuff; //BuffӦEventNotificationAlert JSON Block("eventType": "heatmap") +#else + char* pEventNotificationAlertBuff; //BuffӦEventNotificationAlert JSON Block("eventType": "heatmap") + BYTE byRes2[4]; +#endif + DWORD dwEventNotificationAlertLen;//ȶӦEventNotificationAlert JSON Block("eventType": "heatmap")ݳ + BYTE byRes1[48]; +}NET_DVR_HEATMAP_RESULT_PDC, *LPNET_DVR_HEATMAP_RESULT_PDC; + +//豸֧AIƽ̨룬ϴƵ +typedef struct _NET_AIOP_VIDEO_HEAD_ +{ + DWORD dwSize; //dwSize = sizeof(NET_AIOP_VIDEO_HEAD) + DWORD dwChannel; //豸ͨͨţ + NET_DVR_SYSTEM_TIME struTime; //ʱ + char szTaskID[64]; //ƵIDƵɷ + DWORD dwAIOPDataSize; //ӦAIOPDdataݳ + DWORD dwPictureSize; //ӦͼƬ + char szMPID[64]; //ģͰIDƥAIOPļݽͨURI(GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/management?format=json)ȡǰ豸صģͰlabel descriptionϢ + BYTE *pBufferAIOPData; //AIOPDdata + BYTE *pBufferPicture;//ӦͼƬ + BYTE byPictureMode;//ͼƬݴģʽ 0-ƣ1-人ƴ洢2-豸ش洢byPictureModeΪ0ʱpBufferPictureΪݣ + //byPictureModeΪ1ʱpBufferPictureΪ人URL,byPictureModeΪ2ʱpBufferPictureΪ豸ش洢URLͼƬʱҪHTTPЭ豸֤ǻ豸û֤ + BYTE byCompressedDotMatrixMode;//ѹĵͼģʽ 0-ƣ1-人ƴ洢byCompressedDotMatrixModeΪ0ʱpCompressedDotMatrixBuffΪݣbyCompressedDotMatrixModeΪ1ʱpCompressedDotMatrixBuffΪ人URL + BYTE byRes2[2];//ֽ + DWORD dwPresetIndex; //Ԥõ + DWORD dwAddInfoPictureSize; //ӦĸͼƬ + BYTE *pAddInfoPictureBuffer;//ӦĸͼƬ(ȳ˫ͨ豸ýڵʾDZͨͼƬ) +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pFacePicBuff; //СͼͼƬָ +#else + char* pFacePicBuff; //СͼͼƬָ + BYTE byRes3[4]; +#endif + DWORD dwFacePicBuffLen;//ȶӦpFacePicBuffݳ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pComparisonPicBuff; //׿ȶͼͼƬָ +#else + char* pComparisonPicBuff; //׿ȶͼͼƬָ + BYTE byRes4[4]; +#endif + DWORD dwComparisonPicBuffLen;//ȶӦpComparisonPicBuffݳ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pCompressedDotMatrixBuff; //ѹĵͼϢָ +#else + char* pCompressedDotMatrixBuff; //ѹĵͼϢָ + BYTE byRes5[4]; +#endif + DWORD dwCompressedDotMatrixBuffLen; //ȶӦpCompressedDotMatrixBuffݳ + BYTE byRes[132]; +}NET_AIOP_VIDEO_HEAD, *LPNET_AIOP_VIDEO_HEAD; + +//豸֧AIƽ̨룬ϴͼƬ +typedef struct _NET_AIOP_PICTURE_HEAD_ +{ + DWORD dwSize; //dwSize = sizeof(NET_AIOP_PICTURE_HEAD) + NET_DVR_SYSTEM_TIME struTime; //ʱ + char szPID[64]; //͸·ͼƬIDͼƬɷ + DWORD dwAIOPDataSize; //ӦAIOPDdataݳ + BYTE byStatus; //״ֵ̬0-ɹ1-ͼƬС + BYTE byPictureMode;//ͼƬݴģʽ(dwPictureSize>0ʱЧ) 0-ƣ1-人ƴ洢byPictureModeΪ0ʱpBufferPictureΪݣbyPictureModeΪ1ʱpBufferPictureΪ人URL + BYTE byCompressedDotMatrixMode;// /ѹĵͼģʽ 0-ƣ1-人ƴ洢byCompressedDotMatrixModeΪ0ʱpCompressedDotMatrixBuffΪݣbyCompressedDotMatrixModeΪ1ʱpCompressedDotMatrixBuffΪ人URL + BYTE byRes1[1]; + char szMPID[64]; //ģͰIDƥAIOPļݽ + BYTE *pBufferAIOPData;//AIOPDdata + DWORD dwPresetIndex; //Ԥõ + DWORD dwPictureSize; //ͼƬURL +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + BYTE *pBufferPicture;//ӦͼƬݻURL +#else + BYTE *pBufferPicture;//ӦͼƬݻURL + BYTE byRes2[4]; +#endif + char szTaskID[64]; //ID, ͼƬϱЯֶ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pCompressedDotMatrixBuff; //ѹĵͼϢָ +#else + char* pCompressedDotMatrixBuff; //ѹĵͼϢָ + BYTE byRes5[4]; +#endif + DWORD dwCompressedDotMatrixBuffLen; //ȶӦpCompressedDotMatrixBuffݳ + BYTE byRes[92]; +}NET_AIOP_PICTURE_HEAD, *LPNET_AIOP_PICTURE_HEAD; + +#define MAX_FILE_NAME_LEN 100 //ļ +typedef struct tagNET_DVR_DOOR_FILE_UPLOAD_PARAM +{ + DWORD dwSize; + DWORD dwFileSize; //ļСλֽ + BYTE byFileName[MAX_FILE_NAME_LEN]; //ļ + BYTE byRes1[256]; +}NET_DVR_DOOR_FILE_UPLOAD_PARAM, *LPNET_DVR_DOOR_FILE_UPLOAD_PARAM; + +#define AUDIO_FILE_NAME_LEN 32 //ƵļƳ +//ϴƵļ +typedef struct tagNET_DVR_TRANS_AUDIO_INFO +{ + DWORD dwSize; //ṹС + char sAudioName[AUDIO_FILE_NAME_LEN]; //Ƶļ + BYTE byAudioFormat; //Ƶݸʽ0-wav + BYTE byRes[127]; +}NET_DVR_TRANS_AUDIO_INFO,*LPNET_DVR_TRANS_AUDIO_INFO; + +typedef struct _NET_AIOP_POLLING_VIDEO_HEAD_ +{ + DWORD dwSize; //dwSize = sizeof(NET_AIOP_POLLING_VIDEO_HEAD) + DWORD dwChannel; //豸ͨͨ(SDKЭ) + NET_DVR_SYSTEM_TIME struTime; //ʱ + char szTaskID[64]; //ѯץͼIDѯץͼɷ + DWORD dwAIOPDataSize; //ӦAIOPDdataݳ + DWORD dwPictureSize; //ӦͼƬ + char szMPID[64]; //ģͰIDƥAIOPļݽ + BYTE *pBufferAIOPData;//AIOPDdata + BYTE *pBufferPicture;//ӦͼƬ + BYTE byPictureMode;//ͼƬݴģʽ 0-ƣ1-人ƴ洢byPictureModeΪ0ʱpBufferPictureΪݣbyPictureModeΪ1ʱpBufferPictureΪ人URL + BYTE byCompressedDotMatrixMode;// /ѹĵͼģʽ 0-ƣ1-人ƴ洢byCompressedDotMatrixModeΪ0ʱpCompressedDotMatrixBuffΪݣbyCompressedDotMatrixModeΪ1ʱpCompressedDotMatrixBuffΪ人URL + BYTE byRes2[2];//ֽ + DWORD dwPresetIndex; //Ԥõ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pCompressedDotMatrixBuff; //ѹĵͼϢָ +#else + char* pCompressedDotMatrixBuff; //ѹĵͼϢָ + BYTE byRes5[4]; +#endif + DWORD dwCompressedDotMatrixBuffLen; //ȶӦpCompressedDotMatrixBuffݳ + BYTE byRes[164]; +} NET_AIOP_POLLING_VIDEO_HEAD, *LPNET_AIOP_POLLING_VIDEO_HEAD; + +typedef struct _NET_AIOP_HISTORY_VIDEO_HEAD_ +{ + DWORD dwSize; //dwSize = sizeof(_NET_AIOP_HISTORY_VIDEO_HEAD_) + DWORD dwChannel; //豸ͨͨ(SDKЭ) + NET_DVR_SYSTEM_TIME struTime; //ʱ + char szTaskID[64]; //ʷƵIDƵɷ + DWORD dwAIOPDataSize; //AIOP dataݳ + DWORD dwPictureSize; //ӦͼƬ + char szMPID[64]; //ģͰIDƥAIOPļݽͨURI(GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/management?format=json)ȡǰ豸صģͰlabel descriptionϢ + BYTE *pBufferAIOPData;//AIOPDdata + BYTE *pBufferPicture;//ӦͼƬ + BYTE byPictureMode;//ͼƬݴģʽ 0-ƣ1-人ƴ洢byPictureModeΪ0ʱpBufferPictureΪݣbyPictureModeΪ1ʱpBufferPictureΪ人URL + BYTE byRes[183]; +}NET_AIOP_HISTORY_VIDEO_HEAD, *LPNET_AIOP_HISTORY_VIDEO_HEAD; + + +typedef struct _NET_AIOP_POLLING_SNAP_HEAD_ +{ + DWORD dwSize; //dwSize = sizeof(NET_AIOP_POLLING_SNAP_HEAD) + DWORD dwChannel; //豸ͨͨ(SDKЭ) + NET_DVR_SYSTEM_TIME struTime; //ʱ + char szTaskID[64]; //ѯץͼIDѯץͼɷ + DWORD dwAIOPDataSize; //ӦAIOPDdataݳ + DWORD dwPictureSize; //ӦͼƬ + char szMPID[64]; //ģͰIDƥAIOPļݽ + BYTE *pBufferAIOPData;//AIOPDdata + BYTE *pBufferPicture;//ͼƬ + BYTE byPictureMode;//ͼƬݴģʽ 0-ƣ1-人ƴ洢byPictureModeΪ0ʱpBufferPictureΪݣbyPictureModeΪ1ʱpBufferPictureΪ人URL + BYTE byCompressedDotMatrixMode;// /ѹĵͼģʽ 0-ƣ1-人ƴ洢byCompressedDotMatrixModeΪ0ʱpCompressedDotMatrixBuffΪݣbyCompressedDotMatrixModeΪ1ʱpCompressedDotMatrixBuffΪ人URL + BYTE byRes2[2];//ֽ + DWORD dwPresetIndex; //Ԥõ + DWORD dwAddInfoPictureSize; //ӦĸͼƬ + BYTE *pAddInfoPictureBuffer;//ӦĸͼƬ(ȳ˫ͨ豸ýڵʾDZͨͼƬ) + #if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pCompressedDotMatrixBuff; //ѹĵͼϢָ +#else + char* pCompressedDotMatrixBuff; //ѹĵͼϢָ + BYTE byRes5[4]; +#endif + DWORD dwCompressedDotMatrixBuffLen; //ȶӦpCompressedDotMatrixBuffݳ + BYTE byRes[156]; +} NET_AIOP_POLLING_SNAP_HEAD, *LPNET_AIOP_POLLING_SNAP_HEAD; + +typedef struct tagNET_DVR_AI_ALGORITHM_MODEL +{ + DWORD dwSize; + DWORD dwDescribeLength; //{AlgorithmModel} ļ + char* pDescribeBuffer; //{AlgorithmModel}ļ + BYTE byRes1[3];//ֽڣʹֽڶ + DWORD dwLicenseKeyLength; //licenseKeyļ + char* pLicenseKeyBuffer; //licenseKeyļ + BYTE byRes[120]; +}NET_DVR_AI_ALGORITHM_MODEL, *LPNET_DVR_AI_ALGORITHM_MODEL; + +typedef struct tagNET_DVR_AI_PICTUR_UPLOAD +{ + DWORD dwSize; + char szTaskID[64]; //idstrlen.max = 64,ҵƽ̨ͳһά + char szPID[64]; //ͼƬidstrlen.max = 64ҵƽ̨ͳһά + BYTE byRes[128]; +}NET_DVR_AI_PICTUR_UPLOAD, *LPNET_DVR_AI_PICTUR_UPLOAD; + + +typedef struct _NET_DVR_CARD_RECORD +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; + BYTE byCardType; + BYTE byLeaderCard; + BYTE byUserType; + BYTE byRes1; + BYTE byDoorRight[MAX_DOOR_NUM_256]; + NET_DVR_VALID_PERIOD_CFG struValid; + BYTE byBelongGroup[MAX_GROUP_NUM_128]; + BYTE byCardPassword[CARD_PASSWORD_LEN]; + WORD wCardRightPlan[MAX_DOOR_NUM_256]; + DWORD dwMaxSwipeTimes; + DWORD dwSwipeTimes; + DWORD dwEmployeeNo; + BYTE byName[NAME_LEN]; + //λʾ0-Ȩޣ1-Ȩ + //0λʾ籨 + //1λʾʾ + //2λʾƿͿ + //3λʾͨ + //4λʾ + //5λʾѲ + DWORD dwCardRight; + BYTE byRes[256]; +}NET_DVR_CARD_RECORD, *LPNET_DVR_CARD_RECORD; + +typedef struct _NET_DVR_CARD_COND +{ + DWORD dwSize; + DWORD dwCardNum; //ûȡȡʱΪ0xffffffffʾȡпϢ + BYTE byRes[64]; +}NET_DVR_CARD_COND, *LPNET_DVR_CARD_COND; + +typedef struct _NET_DVR_CARD_SEND_DATA +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; // + BYTE byRes[16]; +}NET_DVR_CARD_SEND_DATA, *LPNET_DVR_CARD_SEND_DATA; + +typedef struct _NET_DVR_CARD_STATUS +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; + DWORD dwErrorCode; + BYTE byStatus; // ״̬0-ʧܣ1-ɹ + BYTE byRes[23]; +}NET_DVR_CARD_STATUS, *LPNET_DVR_CARD_STATUS; + +typedef struct _NET_DVR_FACE_RECORD +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + DWORD dwFaceLen; //ݳ + BYTE* pFaceBuffer; //ָ + BYTE byRes[128]; +}NET_DVR_FACE_RECORD, *LPNET_DVR_FACE_RECORD; + +typedef struct _NET_DVR_FACE_STATUS +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + BYTE byErrorMsg[ERROR_MSG_LEN]; //·ϢbyCardReaderRecvStatusΪ4ʱʾѴӦĿ + DWORD dwReaderNo; //ţ·󷵻 + BYTE byRecvStatus; //״ֽ̬ڱʾ0-ʧܣ1-ɹ2-Ի3-ڴ()4-Ѵڸ5-ǷID + //,6-㷨ģʧܣ7-δ·Ȩޣ8-δ壨9-ۼСС10-ͼƬݳС1KB11-ͼƬʽpng/jpg/bmp,12-ͼƬޣ13-ͼƬޣ14-ͼƬϢУʧܣ15-ͼƬʧܣ16-ʧܣ17-ʧ + BYTE byRes[131]; +}NET_DVR_FACE_STATUS, *LPNET_DVR_FACE_STATUS; + +typedef struct _NET_DVR_FACE_COND +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀţʱòɲã + DWORD dwFaceNum; // ûȡȡʱΪ0xffffffffʾȡϢ + DWORD dwEnableReaderNo; // + BYTE byRes[124]; // +}NET_DVR_FACE_COND, *LPNET_DVR_FACE_COND; + +typedef struct _NET_DVR_FINGERPRINT_RECORD +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + DWORD dwFingerPrintLen; //ָݳ + DWORD dwEnableReaderNo; //Ҫ·ָƵĶ + BYTE byFingerPrintID; //ָţЧֵΧΪ1-10 + BYTE byFingerType; //ָ 0-ָͨƣ1-вָ + BYTE byRes1[30]; + BYTE byFingerData[MAX_FINGER_PRINT_LEN]; //ָ + BYTE byRes[96]; +}NET_DVR_FINGERPRINT_RECORD, *LPNET_DVR_FINGERPRINT_RECORD; + +typedef struct _NET_DVR_FINGERPRINT_STATUS +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + BYTE byCardReaderRecvStatus; //ָƶ״ֽ̬ڱʾ0-ʧܣ1-ɹ2-ָģ鲻ߣ3-Իָ4-ڴ5-Ѵڸָƣ6-ѴڸָID7-ǷָID8-ָģ + BYTE byFingerPrintID; //ָţЧֵΧΪ1-10 + BYTE byFingerType; //ָ 0-ָͨƣ1-вָ + BYTE byRecvStatus; //״̬0-ɹ1-ָŴ2-ָʹ3-Ŵ󣨿Ź񲻷豸Ҫ󣩣4-ָδŻ򿨺ţŻ򿨺ֶΪգ5-Ųڣ6-ָݳΪ07-Ŵ8-Ŵ + BYTE byErrorMsg[ERROR_MSG_LEN]; //·ϢbyCardReaderRecvStatusΪ5ʱʾѴָƶӦĿ + DWORD dwCardReaderNo; //byCardReaderRecvStatusΪ5ʱʾѴָƶӦָƶţ·󷵻ء0ʱʾ޴Ϣ + BYTE byRes[20]; +}NET_DVR_FINGERPRINT_STATUS, *LPNET_DVR_FINGERPRINT_STATUS; + +typedef struct tagNET_DVR_FINGERPRINT_COND +{ + DWORD dwSize; + DWORD dwFingerprintNum; + BYTE byCardNo[ACS_CARD_NO_LEN]; + DWORD dwEnableReaderNo; + BYTE byFingerPrintID; + BYTE byRes[131]; +}NET_DVR_FINGERPRINT_COND, *LPNET_DVR_FINGERPRINT_COND; + +typedef struct tagNET_DVR_CAPTURE_DATA_COND +{ + DWORD dwSize; + char szPassword[128]; //Կַ + BYTE byRes[128]; +}NET_DVR_CAPTURE_DATA_COND, *LPNET_DVR_CAPTURE_DATA_COND; + +#define EZVIZ_CLASSSESSION_LEN 64 +#define EZVIZ_DEVICEID_LEN 32 +typedef struct tagNET_DVR_EZVIZ_USER_LOGIN_INFO +{ + char sEzvizServerAddress[NET_DVR_DEV_ADDRESS_MAX_LEN]; //Ʒַ + WORD wPort; //Ʒ˿ + BYTE byLogin; + BYTE byRes1[1]; + char sClassSession[EZVIZ_CLASSSESSION_LEN]; //ClassSession, һַÿͨʱҪ͸ + char sDeviceID[EZVIZ_DEVICEID_LEN]; //豸ID ɷ + BYTE byRes2[128]; +}NET_DVR_EZVIZ_USER_LOGIN_INFO, *LPNET_DVR_EZVIZ_USER_LOGIN_INFO; + +#define EZVIZ_REQURL_LEN 64 +#define EZVIZ_ACCESSTOKEN_LEN 128 +#define EZVIZ_CLIENTTYPE_LEN 32 +#define EZVIZ_FEATURECODE_LEN 64 +#define EZVIZ_OSVERSION_LEN 32 +#define EZVIZ_NETTYPE_LEN 32 +#define EZVIZ_SDKVERSION_LEN 32 +#define EZVIZ_APPID_LEN 64 +typedef struct tagNET_DVR_OPEN_EZVIZ_USER_LOGIN_INFO +{ + char sEzvizServerAddress[NET_DVR_DEV_ADDRESS_MAX_LEN]; //Ʒַ + BYTE byRes1[3]; + WORD wPort; //Ʒ˿ + BYTE byRes2[2]; + char sUrl[EZVIZ_REQURL_LEN]; + char sAccessToken[EZVIZ_ACCESSTOKEN_LEN]; //accessToken, һַÿͨʱҪ͸ + char sDeviceID[EZVIZ_DEVICEID_LEN]; //豸ID ɷ + char sClientType[EZVIZ_CLIENTTYPE_LEN]; //ͻ: 0: PC-ؼ 1: ios 2: android + char sFeatureCode[EZVIZ_FEATURECODE_LEN]; //Ӳ + char sOsVersion[EZVIZ_OSVERSION_LEN]; //նϵͳ汾, : IOS 7.0.4, Android 2.3. + char sNetType[EZVIZ_NETTYPE_LEN]; //, UNKNOWN GPRS EDGE UMTS HSDPA HSUPA HSPA CDMAEVDO_0 EVDO_A EVDO_B 1xRTT IDEN WIFI + char sSdkVersion[EZVIZ_SDKVERSION_LEN]; //Sdk汾, v.1.0.20140720.45xx + char sAppID[EZVIZ_APPID_LEN]; //AppIDiosϱBundleIDAndroidϱ + BYTE byRes3[512]; +}NET_DVR_OPEN_EZVIZ_USER_LOGIN_INFO, *LPNET_DVR_OPEN_EZVIZ_USER_LOGIN_INFO; + + +#define MAX_ERROR_MSG_LEN 256 //󱨾Ϣ +//쳣 +typedef enum tagALARM_EXCEPTION_ERROR_ENUM +{ + ENUM_AEE_PARAM_ERROR = 1, // + ENUM_AEE_LENS_ERROR = 2, //Ȳƥڲṹ + ENUM_AEE_PIC_LENS_ERROR = 3, //ͼƬȲƥ + ENUM_AEE_DEVID_LENS_ERROR = 4, //DeviceIDȲƥ + ENUM_AEE_NEW_ALLOC_ERROR = 5, //ڴʧ + ENUM_AEE_JSON_FORMAT_ERROR = 6, //JOSNʽ + ENUM_AEE_XML_FORMAT_ERROR = 7, //XMLʽ + ENUM_AEE_BINARY_PIC_ERROR = 8, //ͼƬݴ쳣 + ENUM_AEE_PIC_NUM_ERROR = 9, //ͳͼƬ쳣 + ENUM_AEE_GET_BOUNDARY_ERROR = 10, //ȡboundary쳣 + ENUM_AEE_BOUNDARY_NUM_ERROR = 11, //ȡboundaryĿ쳣 +}ALARM_EXCEPTION_ERROR_ENUM; + +//쳣ṹ +typedef struct tagNET_ALARM_EXCEPTION +{ + DWORD dwAlarmType; // + BYTE byExceptionType; //쳣,μ ALARM_EXCEPTION_ERROR_ENUM + BYTE byRes[3]; // + char szErrMsg[MAX_ERROR_MSG_LEN]; //Ϣ + BYTE byRes1[248]; // +}NET_ALARM_EXCEPTION, *LPNET_ALARM_EXCEPTION; + + +enum ADDITIONAL_LIB +{ + PLAYCTRL = 0, + DSSDK, + STREAMCONVERT, + STREAMTRANS, + QOSSDK, + DLL_PATH_AUDIO, + EZVIZ_SSL_SDK, + ANALYZE_DATA_LIB, + DLL_LIBICONV, + SSLEAY32_SDK, + LIBEAY32_SDK, + HCNETUTILS_SDK, + NPQ_LIB, + LOAD_DLL_COUNT, +}; + +typedef struct tagNET_DVR_AUTOTEST_CFG_HEAD +{ + DWORD dwSize; + DWORD dwInfoType; //1ʾƵԣ3ʾԽ + DWORD dwRetResult; + DWORD dwDataBodySize; //ĽṹݴС + void* lpDataBody; //Ľṹ + BYTE byRes[32]; +}NET_DVR_AUTOTEST_CFG_HEAD,*LPNET_DVR_AUTOTEST_CFG_HEAD; + +//ƵԽṹ +typedef struct tagNET_DVR_AUTOTEST_VIDEO_CFG +{ + DWORD dwSplitScreenNums; //֧149 + DWORD dwVoCh; //Ĭд1 + DWORD dwInterface; //1ʾCVBS2ʾHDMI3ʾVGA4ʾHDMI +}NET_DVR_AUTOTEST_VIDEO_CFG,*LPNET_DVR_AUTOTEST_VIDEO_CFG; + +//ƵԽṹ +typedef struct tagNET_DVR_AUTOTEST_AUDIO_CFG +{ + DWORD dwVoCh; //Ĭд2 + DWORD dwOpen; //10 +}NET_DVR_AUTOTEST_AUDIO_CFG, *LPNET_DVR_AUTOTEST_AUDIO_CFG; + +typedef struct tagNET_LOCAL_AUDIOCAST_PARAM +{ + BYTE byAudioBitRate; //Ƶ ο BITRATE_ENCODE_INDEX + BYTE byAudioSamplingRate; //Ƶ 0-Ĭϣ1-16kHZ2-32kHZ3-48kHZ, 4- 44.1kHZ,5-8kHZ + BYTE byRes[30]; +}NET_LOCAL_AUDIOCAST_PARAM, *LPNET_LOCAL_AUDIOCAST_PARAM; + +typedef struct tagNET_LOCAL_AUDIOCAST_CFG +{ + NET_LOCAL_AUDIOCAST_PARAM struAudioCastParam[MAX_AUDIOCAST_CFG_TYPE]; //13Ԫطֱʾ MP3MPEG2AAC㲥ãӦԪزΪĬϲ͹㲥 + BYTE byRes[64]; +}NET_LOCAL_AUDIOCAST_CFG, *LPNET_LOCAL_AUDIOCAST_CFG; + +#if ((defined __linux__) || (defined _WIN64)) +typedef struct _NET_DVR_AUDIOENCInfo /* Ϣ */ +{ + DWORD in_frame_size; /* һ֡ݴС(BYTES)GetInfoParam */ + int reserved[16]; /* */ +} NET_DVR_AUDIOENC_INFO; +/* ģʽ */ +typedef enum _ENUM_AUDIO_ENC_MODE +{ + AMR_MR475_ = 0, /* 4.75 kb/s */ + AMR_MR515_, /* 5.15 kb/s */ + AMR_MR59_, /* 5.90 kb/s */ + AMR_MR67_, /* 6.70 kb/s */ + AMR_MR74_, /* 7.40 kb/s */ + AMR_MR795_, /* 7.95 kb/s */ + AMR_MR102_, /* 10.2 kb/s */ + AMR_MR122_, /* 12.2 kb/s */ + + AMR_MRDTX_, /* ֡ */ + AMR_N_MODES_ +}ENUM_AUDIO_ENC_MODE; +// Ƶ +typedef struct _NET_DVR_AUDIOENC_PROCESS_PARAM_ +{ + unsigned char *in_buf; /* buf */ + unsigned char *out_buf; /* buf */ + DWORD out_frame_size; /* һ֡BYTE */ + + int g726enc_reset; /* ÿ */ + int g711_type; /* g711,0 - U law, 1- A law */ + ENUM_AUDIO_ENC_MODE enc_mode; /* ƵģʽAMR */ + int reserved[16]; /* */ +}NET_DVR_AUDIOENC_PROCESS_PARAM; + +typedef struct _NET_DVR_AUDIODECInfo /* Ϣ */ +{ + int nchans; /* */ + int sample_rate; /* */ + int aacdec_profile; /* õĿ */ + int reserved[16]; /* */ +} NET_DVR_AUDIODEC_INFO; + +// Ƶ +typedef struct _NET_DVR_AUDIODEC_PROCESS_PARAM +{ + unsigned char *in_buf; /* buf */ + unsigned char *out_buf; /* buf */ + DWORD in_data_size; /* in_bufbyte */ + DWORD proc_data_size; /* ⴦in_bufݴСbytes */ + DWORD out_frame_size; /* һ֡BYTE */ + NET_DVR_AUDIODEC_INFO dec_info; /* Ϣ */ + + int g726dec_reset; /* ÿ */ + int g711_type; /* g711,0 - U law, 1- A law */ + int reserved[16]; /* */ +} NET_DVR_AUDIODEC_PROCESS_PARAM; + +const unsigned int G726_EBCIN_DECOUT_SIZE = 640; // G726һ֡һ֡ĴС +#if (defined __x86_64__) +const unsigned int G726_ENC_OUT_SIZE = 160; // G726һ֡С +const unsigned int G726_DEC_IN_SIZE = 200; // G726һ֡볤ȣ +#else // if (defined __i386__) +const unsigned int G726_ENC_OUT_SIZE = 80; // G726һ֡С +const unsigned int G726_DEC_IN_SIZE = 80; // G726һ֡볤ȣ +#endif // (defined __x86_64__) +#endif // (defined __linux__) + +/********************************SDKӿں*********************************/ +NET_DVR_API BOOL __stdcall NET_DVR_Init(); +NET_DVR_API BOOL __stdcall NET_DVR_Cleanup(); + +//NET_DVR_SetDVRMessageչ +#ifdef _WIN32 +NET_DVR_API BOOL __stdcall NET_DVR_SetDVRMessage(UINT nMessage,HWND hWnd); +NET_DVR_API BOOL __stdcall NET_DVR_SetExceptionCallBack_V30(UINT nMessage, HWND hWnd, void (CALLBACK* fExceptionCallBack)(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser), void *pUser); +#elif defined(__linux__) || defined(__APPLE__) +NET_DVR_API BOOL __stdcall NET_DVR_SetExceptionCallBack_V30(UINT reserved1, void* reserved2, void (CALLBACK* fExceptionCallBack)(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser), void *pUser); +/*Linuxר */ +#if defined(__linux__) +NET_DVR_API BOOL NET_DVR_DrawAreaInit(INITINFO InitInfo, DWORD iUseSDL = 1); +NET_DVR_API BOOL NET_DVR_DrawAreaRelease(); +#endif +#endif + +NET_DVR_API BOOL __stdcall NET_DVR_LoadAllCom(); +NET_DVR_API BOOL __stdcall NET_DVR_SetDVRMessCallBack(BOOL (CALLBACK *fMessCallBack)(LONG lCommand,char *sDVRIP,char *pBuf,DWORD dwBufLen)); +NET_DVR_API BOOL __stdcall NET_DVR_SetDVRMessCallBack_EX(BOOL (CALLBACK *fMessCallBack_EX)(LONG lCommand,LONG lUserID,char *pBuf,DWORD dwBufLen)); +NET_DVR_API BOOL __stdcall NET_DVR_SetDVRMessCallBack_NEW(BOOL (CALLBACK *fMessCallBack_NEW)(LONG lCommand,char *sDVRIP,char *pBuf,DWORD dwBufLen, WORD dwLinkDVRPort)); +NET_DVR_API BOOL __stdcall NET_DVR_SetDVRMessageCallBack(BOOL (CALLBACK *fMessageCallBack)(LONG lCommand,char *sDVRIP,char *pBuf,DWORD dwBufLen, DWORD dwUser), DWORD dwUser); +typedef void (CALLBACK *MSGCallBack)(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetDVRMessageCallBack_V30(MSGCallBack fMessageCallBack, void* pUser); +typedef BOOL (CALLBACK *MSGCallBack_V31)(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetDVRMessageCallBack_V31(MSGCallBack_V31 fMessageCallBack, void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetDVRMessageCallBack_V50(int iIndex, MSGCallBack fMessageCallBack, void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetDVRMessageCallBack_V51(int iIndex, MSGCallBack fMsgCallBack, void* pUser); + +NET_DVR_API BOOL __stdcall NET_DVR_SetConnectTime(DWORD dwWaitTime = 3000, DWORD dwTryTimes = 3); +NET_DVR_API BOOL __stdcall NET_DVR_SetReconnect(DWORD dwInterval = 30000, BOOL bEnableRecon = TRUE); +NET_DVR_API DWORD __stdcall NET_DVR_GetSDKVersion(); +NET_DVR_API DWORD __stdcall NET_DVR_GetSDKBuildVersion(); +NET_DVR_API int __stdcall NET_DVR_IsSupport(); +NET_DVR_API BOOL __stdcall NET_DVR_StartListen(char *sLocalIP,WORD wLocalPort); +NET_DVR_API BOOL __stdcall NET_DVR_StopListen(); + +NET_DVR_API LONG __stdcall NET_DVR_StartListen_V30(char *sLocalIP, WORD wLocalPort, MSGCallBack DataCallback, void* pUserData = NULL); +NET_DVR_API BOOL __stdcall NET_DVR_StopListen_V30(LONG lListenHandle); +NET_DVR_API LONG __stdcall NET_DVR_Login(char *sDVRIP,WORD wDVRPort,char *sUserName,char *sPassword,LPNET_DVR_DEVICEINFO lpDeviceInfo); +NET_DVR_API LONG __stdcall NET_DVR_Login_V30(char *sDVRIP, WORD wDVRPort, char *sUserName, char *sPassword, LPNET_DVR_DEVICEINFO_V30 lpDeviceInfo); + +NET_DVR_API LONG __stdcall NET_DVR_Login_V40(LPNET_DVR_USER_LOGIN_INFO pLoginInfo,LPNET_DVR_DEVICEINFO_V40 lpDeviceInfo); +NET_DVR_API BOOL __stdcall NET_DVR_Login_Check(char *sDVRIP, WORD wDVRPort, char *sUserName, char *sPassword, LPNET_DVR_DEVICEINFO_V30 lpDeviceInfo); +NET_DVR_API BOOL __stdcall NET_DVR_Logout(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_Logout_V30(LONG lUserID); +NET_DVR_API DWORD __stdcall NET_DVR_GetLastError(); +NET_DVR_API void __stdcall NET_DVR_GetLastErrorModelCode(DWORD *pModelCode, DWORD *pMErrDevSelfEx); +NET_DVR_API char* __stdcall NET_DVR_GetErrorMsg(LONG *pErrorNo = NULL); +NET_DVR_API BOOL __stdcall NET_DVR_SetShowMode(DWORD dwShowType,COLORREF colorKey); +NET_DVR_API BOOL __stdcall NET_DVR_GetDVRIPByResolveSvr(char *sServerIP, WORD wServerPort, BYTE *sDVRName,WORD wDVRNameLen,BYTE *sDVRSerialNumber,WORD wDVRSerialLen,char* sGetIP); +NET_DVR_API BOOL __stdcall NET_DVR_GetDVRIPByResolveSvr_EX(char *sServerIP, WORD wServerPort, BYTE *sDVRName, WORD wDVRNameLen, BYTE *sDVRSerialNumber, WORD wDVRSerialLen, char* sGetIP, DWORD *dwPort); +NET_DVR_API BOOL __stdcall NET_DVR_GetDVRNAMEByResolveSvr(char const *sServerIP, WORD wServerPort, char const *sIP, char *sDVRName); + +//Ԥؽӿ +NET_DVR_API LONG __stdcall NET_DVR_PlayDirect(char *sDVRIP, char *sUserName, char *sPassword, \ + LPNET_DVR_CLIENTINFO lpClientInfo, void(CALLBACK *fRealDataCallBack_V30) (LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void* pUser) = NULL, void* pUser = NULL, BOOL bBlocked = FALSE); +NET_DVR_API LONG __stdcall NET_DVR_RealPlay(LONG lUserID,LPNET_DVR_CLIENTINFO lpClientInfo); +NET_DVR_API LONG __stdcall NET_DVR_RealPlay_V30(LONG lUserID, LPNET_DVR_CLIENTINFO lpClientInfo, void(CALLBACK *fRealDataCallBack_V30) (LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void* pUser) = NULL, void* pUser = NULL, BOOL bBlocked = FALSE); +NET_DVR_API BOOL __stdcall NET_DVR_StopRealPlay(LONG lRealHandle); +NET_DVR_API BOOL __stdcall NET_DVR_StopPlayDirect(LONG lRealHandle); +NET_DVR_API BOOL __stdcall NET_DVR_RigisterDrawFun(LONG lRealHandle,void (CALLBACK* fDrawFun)(LONG lRealHandle,HDC hDc,DWORD dwUser),DWORD dwUser); +NET_DVR_API BOOL __stdcall NET_DVR_RigisterDrawFunEx(LONG lRealHandle, void (CALLBACK* fDrawFunEx)(LONG lRealHandle, HDC hDc, void* pUser), void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetPlayerBufNumber(LONG lRealHandle,DWORD dwBufNum); +NET_DVR_API BOOL __stdcall NET_DVR_ThrowBFrame(LONG lRealHandle,DWORD dwNum); +NET_DVR_API BOOL __stdcall NET_DVR_SetAudioMode(DWORD dwMode); +NET_DVR_API BOOL __stdcall NET_DVR_OpenSound(LONG lRealHandle); +NET_DVR_API BOOL __stdcall NET_DVR_CloseSound(); +NET_DVR_API BOOL __stdcall NET_DVR_OpenSoundShare(LONG lRealHandle); +NET_DVR_API BOOL __stdcall NET_DVR_CloseSoundShare(LONG lRealHandle); +NET_DVR_API BOOL __stdcall NET_DVR_Volume(LONG lRealHandle,WORD wVolume); +NET_DVR_API BOOL __stdcall NET_DVR_SaveRealData(LONG lRealHandle,char *sFileName); +NET_DVR_API BOOL __stdcall NET_DVR_StopSaveRealData(LONG lRealHandle); +NET_DVR_API BOOL __stdcall NET_DVR_SetRealDataCallBack(LONG lRealHandle,void(CALLBACK *fRealDataCallBack) (LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,DWORD dwUser),DWORD dwUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetRealDataCallBackEx(LONG lRealHandle,void(CALLBACK *fRealDataCallBack) (LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,void *pUser),void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetStandardDataCallBack(LONG lRealHandle,void(CALLBACK *fStdDataCallBack) (LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,DWORD dwUser),DWORD dwUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetStandardDataCallBackEx(LONG lRealHandle,void(CALLBACK *fStdDataCallBack) (LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,void *pUser),void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetTransparentDataCallBack(LONG lRealHandle, void(CALLBACK *fTpDataCallBack) (LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void *pUser), void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_CapturePicture(LONG lRealHandle,char *sPicFileName);//bmp +NET_DVR_API BOOL __stdcall NET_DVR_SetCapturePictureMode(DWORD dwCaptureMode); + +//̬I֡ +NET_DVR_API BOOL __stdcall NET_DVR_MakeKeyFrame(LONG lUserID, LONG lChannel);// +NET_DVR_API BOOL __stdcall NET_DVR_MakeKeyFrameSub(LONG lUserID, LONG lChannel);// + +//̨ؽӿ +NET_DVR_API BOOL __stdcall NET_DVR_PTZControl(LONG lRealHandle,DWORD dwPTZCommand,DWORD dwStop); +NET_DVR_API BOOL __stdcall NET_DVR_PTZControl_Other(LONG lUserID,LONG lChannel,DWORD dwPTZCommand,DWORD dwStop); +NET_DVR_API BOOL __stdcall NET_DVR_TransPTZ(LONG lRealHandle,char *pPTZCodeBuf,DWORD dwBufSize); +NET_DVR_API BOOL __stdcall NET_DVR_TransPTZ_Other(LONG lUserID,LONG lChannel,char *pPTZCodeBuf,DWORD dwBufSize); +NET_DVR_API BOOL __stdcall NET_DVR_PTZPreset(LONG lRealHandle,DWORD dwPTZPresetCmd,DWORD dwPresetIndex); +NET_DVR_API BOOL __stdcall NET_DVR_PTZPreset_Other(LONG lUserID,LONG lChannel,DWORD dwPTZPresetCmd,DWORD dwPresetIndex); +NET_DVR_API BOOL __stdcall NET_DVR_TransPTZ_EX(LONG lRealHandle,char *pPTZCodeBuf,DWORD dwBufSize); +NET_DVR_API BOOL __stdcall NET_DVR_PTZControl_EX(LONG lRealHandle,DWORD dwPTZCommand,DWORD dwStop); +NET_DVR_API BOOL __stdcall NET_DVR_PTZPreset_EX(LONG lRealHandle,DWORD dwPTZPresetCmd,DWORD dwPresetIndex); +NET_DVR_API BOOL __stdcall NET_DVR_PTZCruise(LONG lRealHandle,DWORD dwPTZCruiseCmd,BYTE byCruiseRoute, BYTE byCruisePoint, WORD wInput); +NET_DVR_API BOOL __stdcall NET_DVR_PTZCruise_Other(LONG lUserID,LONG lChannel,DWORD dwPTZCruiseCmd,BYTE byCruiseRoute, BYTE byCruisePoint, WORD wInput); +NET_DVR_API BOOL __stdcall NET_DVR_PTZCruise_EX(LONG lRealHandle,DWORD dwPTZCruiseCmd,BYTE byCruiseRoute, BYTE byCruisePoint, WORD wInput); +NET_DVR_API BOOL __stdcall NET_DVR_PTZTrack(LONG lRealHandle, DWORD dwPTZTrackCmd); +NET_DVR_API BOOL __stdcall NET_DVR_PTZTrack_Other(LONG lUserID, LONG lChannel, DWORD dwPTZTrackCmd); +NET_DVR_API BOOL __stdcall NET_DVR_PTZTrack_EX(LONG lRealHandle, DWORD dwPTZTrackCmd); +NET_DVR_API BOOL __stdcall NET_DVR_PTZControlWithSpeed(LONG lRealHandle, DWORD dwPTZCommand, DWORD dwStop, DWORD dwSpeed); +NET_DVR_API BOOL __stdcall NET_DVR_PTZControlWithSpeed_Other(LONG lUserID, LONG lChannel, DWORD dwPTZCommand, DWORD dwStop, DWORD dwSpeed); +NET_DVR_API BOOL __stdcall NET_DVR_PTZControlWithSpeed_EX(LONG lRealHandle, DWORD dwPTZCommand, DWORD dwStop, DWORD dwSpeed); +NET_DVR_API BOOL __stdcall NET_DVR_GetPTZCruise(LONG lUserID,LONG lChannel,LONG lCruiseRoute, LPNET_DVR_CRUISE_RET lpCruiseRet); + + +//ļط +NET_DVR_API LONG __stdcall NET_DVR_FindFile(LONG lUserID,LONG lChannel,DWORD dwFileType, LPNET_DVR_TIME lpStartTime, LPNET_DVR_TIME lpStopTime); +NET_DVR_API LONG __stdcall NET_DVR_FindNextFile(LONG lFindHandle,LPNET_DVR_FIND_DATA lpFindData); +NET_DVR_API LONG __stdcall NET_DVR_FindNextFile_Card(LONG lFindHandle, LPNET_DVR_FINDDATA_CARD lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_FindClose(LONG lFindHandle); +NET_DVR_API LONG __stdcall NET_DVR_FindNextFile_V30(LONG lFindHandle, LPNET_DVR_FINDDATA_V30 lpFindData); +NET_DVR_API LONG __stdcall NET_DVR_FindNextFile_V40(LONG lFindHandle, LPNET_DVR_FINDDATA_V40 lpFindData); +NET_DVR_API LONG __stdcall NET_DVR_FindNextFile_V50(LONG lFindHandle, LPNET_DVR_FINDDATA_V50 lpFindData); +NET_DVR_API LONG __stdcall NET_DVR_FindFile_V30(LONG lUserID, LPNET_DVR_FILECOND pFindCond); +NET_DVR_API LONG __stdcall NET_DVR_FindFile_V50(LONG lUserID, LPNET_DVR_FILECOND_V50 pFindCond); +NET_DVR_API BOOL __stdcall NET_DVR_FindClose_V30(LONG lFindHandle); + +NET_DVR_API BOOL __stdcall NET_DVR_LockFileByName(LONG lUserID, char *sLockFileName); +NET_DVR_API BOOL __stdcall NET_DVR_UnlockFileByName(LONG lUserID, char *sUnlockFileName); +NET_DVR_API BOOL __stdcall NET_DVR_LockFileByNameV40(LONG lUserID, BOOL bLock, const NET_DVR_LOCK_FILE_BY_NAME_PARA *lpLockFilePara); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackByName(LONG lUserID,char *sPlayBackFileName, HWND hWnd); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackByTime(LONG lUserID,LONG lChannel, LPNET_DVR_TIME lpStartTime, LPNET_DVR_TIME lpStopTime, HWND hWnd); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackReverseByName(LONG lUserID, char *sPlayBackFileName, HWND hWnd); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackByName_V50(LONG lUserID, LPNET_DVR_PLAY_BY_NAME_PARA pParam); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackReverseByName_V50(LONG lUserID, LPNET_DVR_PLAY_BY_NAME_PARA pParam); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackByTime_PCNVR(LONG lUserID, NET_DVR_PLAYBCK_BYTIME_COND_PCNVR const *pPlaybackParams); + +NET_DVR_API BOOL __stdcall NET_DVR_PlayBackControl(LONG lPlayHandle,DWORD dwControlCode,DWORD dwInValue,DWORD *LPOutValue); +NET_DVR_API BOOL __stdcall NET_DVR_StopPlayBack(LONG lPlayHandle); +NET_DVR_API BOOL __stdcall NET_DVR_SetPlayDataCallBack(LONG lPlayHandle,void(CALLBACK *fPlayDataCallBack) (LONG lPlayHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,DWORD dwUser),DWORD dwUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetPlayBackESCallBack(LONG lPlayHandle, void (CALLBACK *fPlayESCallBack)(LONG lPlayHandle, NET_DVR_PACKET_INFO_EX *struPackInfo, void* pUser), void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetPlayDataCallBack_V40(LONG lPlayHandle,void(CALLBACK *fPlayDataCallBack_V40) (LONG lPlayHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,void *pUser),void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_PlayBackSaveData(LONG lPlayHandle,char *sFileName); +NET_DVR_API BOOL __stdcall NET_DVR_StopPlayBackSave(LONG lPlayHandle); +NET_DVR_API BOOL __stdcall NET_DVR_GetPlayBackOsdTime(LONG lPlayHandle, LPNET_DVR_TIME lpOsdTime); +NET_DVR_API BOOL __stdcall NET_DVR_PlayBackCaptureFile(LONG lPlayHandle,char *sFileName); +NET_DVR_API LONG __stdcall NET_DVR_GetFileByName(LONG lUserID,char *sDVRFileName,char *sSavedFileName); +NET_DVR_API LONG __stdcall NET_DVR_GetFileByName_V50(LONG lUserID, LPNET_DVR_DOWNLOAD_BY_NAME_COND pParam); +NET_DVR_API LONG __stdcall NET_DVR_GetFileByTime(LONG lUserID,LONG lChannel, LPNET_DVR_TIME lpStartTime, LPNET_DVR_TIME lpStopTime, char *sSavedFileName); +NET_DVR_API BOOL __stdcall NET_DVR_StopGetFile(LONG lFileHandle); +NET_DVR_API int __stdcall NET_DVR_GetDownloadPos(LONG lFileHandle); +NET_DVR_API int __stdcall NET_DVR_GetPlayBackPos(LONG lPlayHandle); + +// +NET_DVR_API LONG __stdcall NET_DVR_AdapterUpgrade(LONG lUserID, char *sFileName); +NET_DVR_API LONG __stdcall NET_DVR_Upgrade(LONG lUserID, char *sFileName); +NET_DVR_API LONG __stdcall NET_DVR_VcalibUpgrade(LONG lUserID, LONG lChannel, char const *sFileName); +NET_DVR_API int __stdcall NET_DVR_GetUpgradeState(LONG lUpgradeHandle); +NET_DVR_API int __stdcall NET_DVR_GetUpgradeProgress(LONG lUpgradeHandle); +NET_DVR_API BOOL __stdcall NET_DVR_CloseUpgradeHandle(LONG lUpgradeHandle); +NET_DVR_API BOOL __stdcall NET_DVR_SetNetworkEnvironment(DWORD dwEnvironmentLevel); +//Զ̸ʽӲ +NET_DVR_API LONG __stdcall NET_DVR_FormatDisk(LONG lUserID,LONG lDiskNumber); +NET_DVR_API LONG __stdcall NET_DVR_FormatDisk_V50(LONG lUserID, NET_DVR_FORMAT_HDD *lpStruHddFormatCond); +NET_DVR_API BOOL __stdcall NET_DVR_GetFormatProgress(LONG lFormatHandle, LONG *pCurrentFormatDisk,LONG *pCurrentDiskPos,LONG *pFormatStatic); +NET_DVR_API BOOL __stdcall NET_DVR_CloseFormatHandle(LONG lFormatHandle); +// +NET_DVR_API LONG __stdcall NET_DVR_SetupAlarmChan(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_CloseAlarmChan(LONG lAlarmHandle); +NET_DVR_API LONG __stdcall NET_DVR_SetupAlarmChan_V30(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_CloseAlarmChan_V30(LONG lAlarmHandle); +//Խ +NET_DVR_API LONG __stdcall NET_DVR_StartVoiceCom(LONG lUserID, void(CALLBACK *fVoiceDataCallBack)(LONG lVoiceComHandle, char *pRecvDataBuffer, DWORD dwBufSize, BYTE byAudioFlag, DWORD dwUser), DWORD dwUser); +NET_DVR_API LONG __stdcall NET_DVR_StartVoiceCom_V30(LONG lUserID, DWORD dwVoiceChan, BOOL bNeedCBNoEncData, void(CALLBACK *fVoiceDataCallBack)(LONG lVoiceComHandle, char *pRecvDataBuffer, DWORD dwBufSize, BYTE byAudioFlag, void* pUser), void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetVoiceComClientVolume(LONG lVoiceComHandle, WORD wVolume); +NET_DVR_API BOOL __stdcall NET_DVR_StopVoiceCom(LONG lVoiceComHandle); +//ת +NET_DVR_API LONG __stdcall NET_DVR_StartVoiceCom_MR(LONG lUserID, void(CALLBACK *fVoiceDataCallBack)(LONG lVoiceComHandle, char *pRecvDataBuffer, DWORD dwBufSize, BYTE byAudioFlag, DWORD dwUser), DWORD dwUser); +NET_DVR_API LONG __stdcall NET_DVR_StartVoiceCom_MR_V30(LONG lUserID, DWORD dwVoiceChan, void(CALLBACK *fVoiceDataCallBack)(LONG lVoiceComHandle, char *pRecvDataBuffer, DWORD dwBufSize, BYTE byAudioFlag, void* pUser), void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_VoiceComSendData(LONG lVoiceComHandle, char *pSendBuf, DWORD dwBufSize); +NET_DVR_API BOOL __stdcall NET_DVR_GetCurrentAudioCompress(LONG lUserID, LPNET_DVR_COMPRESSION_AUDIO lpCompressAudio); +NET_DVR_API BOOL __stdcall NET_DVR_GetCurrentAudioCompress_V50(LONG lUserID, LPNET_DVR_AUDIO_CHANNEL lpAudioChannel, LPNET_DVR_COMPRESSION_AUDIO lpCompressAudio); +//㲥 +NET_DVR_API BOOL __stdcall NET_DVR_ClientAudioStart(); +NET_DVR_API BOOL __stdcall NET_DVR_ClientAudioStart_V30(void(CALLBACK *fVoiceDataCallBack)(char *pRecvDataBuffer, DWORD dwBufSize, void * pUser), void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_ClientAudioStop(); +NET_DVR_API BOOL __stdcall NET_DVR_AddDVR(LONG lUserID); +NET_DVR_API LONG __stdcall NET_DVR_AddDVR_V30(LONG lUserID, DWORD dwVoiceChan); +NET_DVR_API BOOL __stdcall NET_DVR_DelDVR(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_DelDVR_V30(LONG lVoiceHandle); +//͸ͨ +NET_DVR_API LONG __stdcall NET_DVR_SerialStart(LONG lUserID,LONG lSerialPort,void(CALLBACK *fSerialDataCallBack)(LONG lSerialHandle,char *pRecvDataBuffer,DWORD dwBufSize,DWORD dwUser),DWORD dwUser); +//485Ϊ͸ͨʱҪָͨţΪͬͨ485ÿԲͬ(粨) +NET_DVR_API LONG __stdcall NET_DVR_SerialStart_V40(LONG lUserID,void* lpInBuffer, LONG dwInBufferSize, void(CALLBACK *fSerialDataCallBack)(LONG lSerialHandle, LONG lCHannel, char *pRecvDataBuffer, DWORD dwBufSize, void* pUser), void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SerialSend(LONG lSerialHandle, LONG lChannel, char *pSendBuf,DWORD dwBufSize); +NET_DVR_API BOOL __stdcall NET_DVR_SerialStop(LONG lSerialHandle); +NET_DVR_API BOOL __stdcall NET_DVR_SendTo232Port(LONG lUserID, char *pSendBuf, DWORD dwBufSize); +NET_DVR_API BOOL __stdcall NET_DVR_SendToSerialPort(LONG lUserID, DWORD dwSerialPort, DWORD dwSerialIndex, char *pSendBuf, DWORD dwBufSize); + +#if (!defined __linux__) && (!defined _WIN64) +//Decoding nBitrate = 16000 +NET_DVR_API void* __stdcall NET_DVR_InitG722Decoder(int nBitrate = 16000); +NET_DVR_API BOOL __stdcall NET_DVR_DecodeG722Frame(void *pDecHandle, BYTE* pInBuffer, BYTE* pOutBuffer); +//Encoding +NET_DVR_API void* __stdcall NET_DVR_InitG722Encoder(); +NET_DVR_API BOOL __stdcall NET_DVR_EncodeG722Frame(void *pEncodeHandle, BYTE* pInBuffer, BYTE* pOutBuffer); +#elif ((defined __linux__) || (defined _WIN64)) +NET_DVR_API void* __stdcall NET_DVR_InitG722Decoder(); +NET_DVR_API BOOL __stdcall NET_DVR_DecodeG722Frame(void *handle, NET_DVR_AUDIODEC_PROCESS_PARAM * param); +//Encoding +NET_DVR_API void* __stdcall NET_DVR_InitG722Encoder(NET_DVR_AUDIOENC_INFO* enc_info); +NET_DVR_API BOOL __stdcall NET_DVR_EncodeG722Frame(void *handle, NET_DVR_AUDIOENC_PROCESS_PARAM* param); +#endif // _WIN32 +NET_DVR_API void __stdcall NET_DVR_ReleaseG722Decoder(void *pDecHandle); +NET_DVR_API void __stdcall NET_DVR_ReleaseG722Encoder(void *pEncodeHandle); + +// +NET_DVR_API void* __stdcall NET_DVR_InitG726Decoder(void** pDecMoudle); +NET_DVR_API void __stdcall NET_DVR_ReleaseG726Decoder(void *pDecHandle); +NET_DVR_API BOOL __stdcall NET_DVR_DecodeG726Frame(void *pDecMoudle, BYTE* pInBuffer, BYTE* pOutBuffer, BYTE byReset); + +// +NET_DVR_API void* __stdcall NET_DVR_InitG726Encoder(void** pEncMoudle); +NET_DVR_API BOOL __stdcall NET_DVR_EncodeG726Frame(void *pEncMoudle, BYTE* pInBuffer, BYTE* pOutBuffer, BYTE byReset); +NET_DVR_API void __stdcall NET_DVR_ReleaseG726Encoder(void *pEncHandle); + +//Զ̿Ʊʾ +NET_DVR_API BOOL __stdcall NET_DVR_ClickKey(LONG lUserID, LONG lKeyIndex); + +NET_DVR_API BOOL __stdcall NET_DVR_DoorBellControl(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_Preview(LONG lUserID, LONG lPicNum); +NET_DVR_API BOOL __stdcall NET_DVR_PreviewOne(LONG lUserID, LONG lChannel); +NET_DVR_API BOOL __stdcall NET_DVR_PlayBackByNameLocDisplay(LONG lUserID, char *sFileName); +NET_DVR_API BOOL __stdcall NET_DVR_PlayBackByTimeLocDisplay(LONG lUserID, LONG lChannel, NET_DVR_TIME const *lpStartTime, NET_DVR_TIME const *lpStopTime); +NET_DVR_API BOOL __stdcall NET_DVR_StopLocDisplayPlay(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_PlayControlLocDisplay(LONG lUserID, DWORD dwControlCode); +//Զ̿豸ֶ¼ +NET_DVR_API BOOL __stdcall NET_DVR_StartDVRRecord(LONG lUserID,LONG lChannel,LONG lRecordType); +NET_DVR_API BOOL __stdcall NET_DVR_StopDVRRecord(LONG lUserID,LONG lChannel); +//뿨 +NET_DVR_API BOOL __stdcall NET_DVR_InitDevice_Card(long *pDeviceTotalChan); +NET_DVR_API BOOL __stdcall NET_DVR_ReleaseDevice_Card(); +NET_DVR_API BOOL __stdcall NET_DVR_InitDDraw_Card(HWND hParent,COLORREF colorKey); +NET_DVR_API BOOL __stdcall NET_DVR_ReleaseDDraw_Card(); +NET_DVR_API LONG __stdcall NET_DVR_RealPlay_Card(LONG lUserID,LPNET_DVR_CARDINFO lpCardInfo,long lChannelNum); +NET_DVR_API BOOL __stdcall NET_DVR_ResetPara_Card(LONG lRealHandle,LPNET_DVR_DISPLAY_PARA lpDisplayPara); +NET_DVR_API BOOL __stdcall NET_DVR_RefreshSurface_Card(); +NET_DVR_API BOOL __stdcall NET_DVR_ClearSurface_Card(); +NET_DVR_API BOOL __stdcall NET_DVR_RestoreSurface_Card(); +NET_DVR_API BOOL __stdcall NET_DVR_OpenSound_Card(LONG lRealHandle); +NET_DVR_API BOOL __stdcall NET_DVR_CloseSound_Card(LONG lRealHandle); +NET_DVR_API BOOL __stdcall NET_DVR_SetVolume_Card(LONG lRealHandle,WORD wVolume); +NET_DVR_API BOOL __stdcall NET_DVR_AudioPreview_Card(LONG lRealHandle,BOOL bEnable); +NET_DVR_API LONG __stdcall NET_DVR_GetCardLastError_Card(); +NET_DVR_API BOOL __stdcall NET_DVR_SetDspErrMsg_Card(DWORD dwMessage, HANDLE hWnd); +NET_DVR_API BOOL __stdcall NET_DVR_ResetDSP_Card(LONG iChannelNum); +NET_DVR_API HANDLE __stdcall NET_DVR_GetChanHandle_Card(LONG lRealHandle); +NET_DVR_API BOOL __stdcall NET_DVR_CapturePicture_Card(LONG lRealHandle, char *sPicFileName); +NET_DVR_API BOOL __stdcall NET_DVR_GetSerialNum_Card(long lChannelNum,DWORD *pDeviceSerialNo); +NET_DVR_API LONG __stdcall NET_DVR_FindDVRLog(LONG lUserID, LONG lSelectMode, DWORD dwMajorType,DWORD dwMinorType, LPNET_DVR_TIME lpStartTime, LPNET_DVR_TIME lpStopTime); +NET_DVR_API LONG __stdcall NET_DVR_FindNextLog(LONG lLogHandle, LPNET_DVR_LOG lpLogData); +NET_DVR_API BOOL __stdcall NET_DVR_FindLogClose(LONG lLogHandle); +NET_DVR_API LONG __stdcall NET_DVR_FindDVRLog_V30(LONG lUserID, LONG lSelectMode, DWORD dwMajorType,DWORD dwMinorType, LPNET_DVR_TIME lpStartTime, LPNET_DVR_TIME lpStopTime, BOOL bOnlySmart = FALSE); +NET_DVR_API LONG __stdcall NET_DVR_FindNextLog_V30(LONG lLogHandle, LPNET_DVR_LOG_V30 lpLogData); +NET_DVR_API LONG __stdcall NET_DVR_FindDVRLog_V50(LONG lUserID, LPNET_DVR_FIND_LOG_COND pFindCond); +NET_DVR_API LONG __stdcall NET_DVR_FindNextLog_V50(LONG lLogHandle, LPNET_DVR_LOG_V50 lpLogData); +NET_DVR_API BOOL __stdcall NET_DVR_FindLogClose_V30(LONG lLogHandle); +NET_DVR_API LONG __stdcall NET_DVR_FindAlarmHostLog(LONG lUserID, LONG lSelectMode, NET_DVR_ALARMHOST_SEARCH_LOG_PARAM *lpSearchParam); +NET_DVR_API LONG __stdcall NET_DVR_FindNextAlarmHostLog(LONG lFindHandle, NET_DVR_ALARMHOST_LOG_RET *lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_FindAlarmHostLogClose(LONG lFindHandle); +NET_DVR_API LONG __stdcall NET_DVR_FindFile_PCNVR(LONG lUserID, LPNET_DVR_FILE_COND_PCNVR const pFindCond); +NET_DVR_API LONG __stdcall NET_DVR_FindNextFile_PCNVR(LONG lFindHandle, LPNET_DVR_FINDDATA_PCNVR lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_FindClose_PCNVR(LONG lFindHandle); +NET_DVR_API LONG __stdcall NET_DVR_FindFileByCard(LONG lUserID,LONG lChannel,DWORD dwFileType, int nFindType, BYTE *sCardNumber, LPNET_DVR_TIME lpStartTime, LPNET_DVR_TIME lpStopTime); +NET_DVR_API BOOL __stdcall NET_DVR_CaptureJPEGPicture(LONG lUserID, LONG lChannel, LPNET_DVR_JPEGPARA lpJpegPara, char *sPicFileName); +NET_DVR_API BOOL __stdcall NET_DVR_CaptureJPEGPicture_NEW(LONG lUserID, LONG lChannel, LPNET_DVR_JPEGPARA lpJpegPara, char *sJpegPicBuffer, DWORD dwPicSize, LPDWORD lpSizeReturned); +NET_DVR_API BOOL __stdcall NET_DVR_CapturePicture_V50(LONG lUserID, LONG lChannel, LPNET_DVR_PICPARAM_V50 lpPicParam, char *sPicBuffer, DWORD dwPicSize, LPDWORD lpSizeReturned); +NET_DVR_API BOOL __stdcall NET_DVR_CaptureJPEGPicture_WithAppendData(LONG lUserID, LONG lChannel, NET_DVR_JPEGPICTURE_WITH_APPENDDATA *lpJpegWithAppend); +NET_DVR_API BOOL __stdcall NET_DVR_GetRealPlayOsdTime(LONG iRealHandle, LPNET_DVR_TIME lpOsdTime); +NET_DVR_API BOOL __stdcall NET_DVR_RealPlayPause(LONG iRealHandle); +NET_DVR_API BOOL __stdcall NET_DVR_RealPlayRestart(LONG iRealHandle, HWND hPlayWnd); +NET_DVR_API int __stdcall NET_DVR_GetRealPlayerIndex(LONG lRealHandle); +NET_DVR_API int __stdcall NET_DVR_GetPlayBackPlayerIndex(LONG lPlayHandle); +NET_DVR_API BOOL __stdcall NET_DVR_SetScaleCFG(LONG lUserID, DWORD dwScale); +NET_DVR_API BOOL __stdcall NET_DVR_GetScaleCFG(LONG lUserID, DWORD *lpOutScale); +NET_DVR_API BOOL __stdcall NET_DVR_SetScaleCFG_V30(LONG lUserID, LPNET_DVR_SCALECFG pScalecfg); +NET_DVR_API BOOL __stdcall NET_DVR_GetScaleCFG_V30(LONG lUserID, LPNET_DVR_SCALECFG pScalecfg); +NET_DVR_API BOOL __stdcall NET_DVR_SetATMPortCFG(LONG lUserID, WORD wATMPort); +NET_DVR_API BOOL __stdcall NET_DVR_GetATMPortCFG(LONG lUserID, WORD *LPOutATMPort); +NET_DVR_API BOOL __stdcall NET_DVR_InitDDrawDevice(); +NET_DVR_API BOOL __stdcall NET_DVR_ReleaseDDrawDevice(); +NET_DVR_API LONG __stdcall NET_DVR_GetDDrawDeviceTotalNums(); +NET_DVR_API BOOL __stdcall NET_DVR_SetDDrawDevice(LONG lPlayPort, DWORD nDeviceNum); + +NET_DVR_API BOOL __stdcall NET_DVR_PTZSelZoomIn(LONG lRealHandle, LPNET_DVR_POINT_FRAME pStruPointFrame); +NET_DVR_API BOOL __stdcall NET_DVR_PTZSelZoomIn_EX(LONG lUserID, LONG lChannel, LPNET_DVR_POINT_FRAME pStruPointFrame); +NET_DVR_API BOOL __stdcall NET_DVR_StartDecode(LONG lUserID, LONG lChannel, LPNET_DVR_DECODERINFO lpDecoderinfo); +NET_DVR_API BOOL __stdcall NET_DVR_StopDecode(LONG lUserID, LONG lChannel); +NET_DVR_API BOOL __stdcall NET_DVR_GetDecoderState(LONG lUserID, LONG lChannel, LPNET_DVR_DECODERSTATE lpDecoderState); +NET_DVR_API BOOL __stdcall NET_DVR_SetDecInfo(LONG lUserID, LONG lChannel, LPNET_DVR_DECCFG lpDecoderinfo); +NET_DVR_API BOOL __stdcall NET_DVR_GetDecInfo(LONG lUserID, LONG lChannel, LPNET_DVR_DECCFG lpDecoderinfo); +NET_DVR_API BOOL __stdcall NET_DVR_SetDecTransPort(LONG lUserID, LPNET_DVR_PORTCFG lpTransPort); +NET_DVR_API BOOL __stdcall NET_DVR_GetDecTransPort(LONG lUserID, LPNET_DVR_PORTCFG lpTransPort); +NET_DVR_API BOOL __stdcall NET_DVR_DecPlayBackCtrl(LONG lUserID, LONG lChannel, DWORD dwControlCode, DWORD dwInValue,DWORD *LPOutValue, LPNET_DVR_PLAYREMOTEFILE lpRemoteFileInfo); +NET_DVR_API BOOL __stdcall NET_DVR_StartDecSpecialCon(LONG lUserID, LONG lChannel, LPNET_DVR_DECCHANINFO lpDecChanInfo); +NET_DVR_API BOOL __stdcall NET_DVR_StopDecSpecialCon(LONG lUserID, LONG lChannel, LPNET_DVR_DECCHANINFO lpDecChanInfo); +NET_DVR_API BOOL __stdcall NET_DVR_DecCtrlDec(LONG lUserID, LONG lChannel, DWORD dwControlCode); +NET_DVR_API BOOL __stdcall NET_DVR_DecCtrlScreen(LONG lUserID, LONG lChannel, DWORD dwControl); +NET_DVR_API BOOL __stdcall NET_DVR_GetDecCurLinkStatus(LONG lUserID, LONG lChannel, LPNET_DVR_DECSTATUS lpDecStatus); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixStartDynamic(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_DYNAMIC_DEC lpDynamicInfo); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixStopDynamic(LONG lUserID, DWORD dwDecChanNum); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDecChanInfo(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_DEC_CHAN_INFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetLoopDecChanInfo(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_LOOP_DECINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetLoopDecChanInfo(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_LOOP_DECINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetLoopDecChanEnable(LONG lUserID, DWORD dwDecChanNum, DWORD dwEnable); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetLoopDecChanEnable(LONG lUserID, DWORD dwDecChanNum, LPDWORD lpdwEnable); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetLoopDecEnable(LONG lUserID, LPDWORD lpdwEnable); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetDecChanEnable(LONG lUserID, DWORD dwDecChanNum, DWORD dwEnable); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDecChanEnable(LONG lUserID, DWORD dwDecChanNum, LPDWORD lpdwEnable); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDecChanStatus(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_DEC_CHAN_STATUS lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetVideoStandard(LONG lUserID, DWORD dwDecChanNum, LPDWORD lpdwVideoStandard); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetVideoStandard(LONG lUserID, DWORD dwDecChanNum, DWORD dwVideoStandard); + +//2007-12-22 ֽ֧ӿ +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetTranInfo(LONG lUserID, LPNET_DVR_MATRIX_TRAN_CHAN_CONFIG lpTranInfo); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetTranInfo(LONG lUserID, LPNET_DVR_MATRIX_TRAN_CHAN_CONFIG lpTranInfo); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetRemotePlay(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_DEC_REMOTE_PLAY lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetRemotePlayControl(LONG lUserID, DWORD dwDecChanNum, DWORD dwControlCode, DWORD dwInValue, DWORD *LPOutValue); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetRemotePlayStatus(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_DEC_REMOTE_PLAY_STATUS lpOuter); +//2009-4-13 +NET_DVR_API BOOL __stdcall NET_DVR_MatrixStartDynamic_V30(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_PU_STREAM_CFG lpDynamicInfo); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetLoopDecChanInfo_V30(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_LOOP_DECINFO_V30 lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetLoopDecChanInfo_V30(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_LOOP_DECINFO_V30 lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDecChanInfo_V30(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_DEC_CHAN_INFO_V30 lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetTranInfo_V30(LONG lUserID, LPNET_DVR_MATRIX_TRAN_CHAN_CONFIG_V30 lpTranInfo); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetTranInfo_V30(LONG lUserID, LPNET_DVR_MATRIX_TRAN_CHAN_CONFIG_V30 lpTranInfo); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDisplayCfg(LONG lUserID, DWORD dwDispChanNum, LPNET_DVR_VGA_DISP_CHAN_CFG lpDisplayCfg); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetDisplayCfg(LONG lUserID, DWORD dwDispChanNum, LPNET_DVR_VGA_DISP_CHAN_CFG lpDisplayCfg); + +NET_DVR_API LONG __stdcall NET_DVR_MatrixStartPassiveDecode(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_PASSIVEMODE lpPassiveMode /*, void(CALLBACK *fPassiveDataCallBack)(LONG lPassiveHandle, char * pSendBuf, DWORD dwBufSize, DWORD dwStatus, DWORD dwUser), DWORD dwUser*/); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSendData(LONG lPassiveHandle, char *pSendBuf, DWORD dwBufSize); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixStopPassiveDecode(LONG lPassiveHandle); +NET_DVR_API BOOL __stdcall NET_DVR_UploadLogo(LONG lUserID, DWORD dwDispChanNum, LPNET_DVR_DISP_LOGOCFG lpDispLogoCfg, char *sLogoBuffer); +#define NET_DVR_SHOWLOGO 1 /*ʾLOGO*/ +#define NET_DVR_HIDELOGO 2 /*LOGO*/ +NET_DVR_API BOOL __stdcall NET_DVR_LogoSwitch(LONG lUserID, DWORD dwDecChan, DWORD dwLogoSwitch); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDeviceStatus(LONG lUserID, LPNET_DVR_DECODER_WORK_STATUS lpDecoderCfg); + +#define DISP_CMD_ENLARGE_WINDOW 1 /*ʾͨŴij*/ +#define DISP_CMD_RENEW_WINDOW 2 /*ʾͨڻԭ*/ +#define DISP_CMD_OPENAUDIO 3 /*ʾͨƵ*/ +#define DISP_CMD_CLOSEAUDIO 4 /*ʾͨرƵ*/ + +NET_DVR_API BOOL __stdcall NET_DVR_MatrixDiaplayControl(LONG lUserID, DWORD dwDispChanNum, DWORD dwDispChanCmd, DWORD dwCmdParam); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixPassiveDecodeControl(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_PASSIVEDECODE_CONTROL lpInter); +NET_DVR_API LONG __stdcall NET_DVR_MatrixGetPassiveDecodeStatus(LONG lPassiveHandle); + +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDecChanCfg(LONG lUserID, DWORD dwDecChan, LPNET_DVR_MATRIX_DECCHAN_CONTROL lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetDecChanCfg(LONG lUserID, DWORD dwDecChan, LPNET_DVR_MATRIX_DECCHAN_CONTROL lpInter); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackByTime_NEW(LONG lUserID, LONG lChannel, NET_DVR_TIME const *lpStartTime, NET_DVR_TIME const *lpStopTime, LONG lLongitude, LONG lLatitude, HWND hWnd); +NET_DVR_API BOOL __stdcall NET_DVR_RefreshPlay(LONG lPlayHandle); + +//ָĬֵ +NET_DVR_API BOOL __stdcall NET_DVR_RestoreConfig(LONG lUserID); +// +NET_DVR_API BOOL __stdcall NET_DVR_SaveConfig(LONG lUserID); +// +NET_DVR_API BOOL __stdcall NET_DVR_RebootDVR(LONG lUserID); +//رDVR +NET_DVR_API BOOL __stdcall NET_DVR_ShutDownDVR(LONG lUserID); + +// begin +NET_DVR_API BOOL __stdcall NET_DVR_GetDVRConfig(LONG lUserID, DWORD dwCommand,LONG lChannel, LPVOID lpOutBuffer, DWORD dwOutBufferSize, LPDWORD lpBytesReturned); +NET_DVR_API BOOL __stdcall NET_DVR_SetDVRConfig(LONG lUserID, DWORD dwCommand,LONG lChannel, LPVOID lpInBuffer, DWORD dwInBufferSize); +NET_DVR_API BOOL __stdcall NET_DVR_GetDVRWorkState_V30(LONG lUserID, LPNET_DVR_WORKSTATE_V30 lpWorkState); +NET_DVR_API BOOL __stdcall NET_DVR_GetDVRWorkState(LONG lUserID, LPNET_DVR_WORKSTATE lpWorkState); +NET_DVR_API BOOL __stdcall NET_DVR_SetVideoEffect(LONG lUserID, LONG lChannel, DWORD dwBrightValue, DWORD dwContrastValue, DWORD dwSaturationValue, DWORD dwHueValue); +NET_DVR_API BOOL __stdcall NET_DVR_GetVideoEffect(LONG lUserID, LONG lChannel, DWORD *pBrightValue, DWORD *pContrastValue, DWORD *pSaturationValue, DWORD *pHueValue); +NET_DVR_API BOOL __stdcall NET_DVR_ClientGetframeformat(LONG lUserID, LPNET_DVR_FRAMEFORMAT lpFrameFormat); +NET_DVR_API BOOL __stdcall NET_DVR_ClientSetframeformat(LONG lUserID, LPNET_DVR_FRAMEFORMAT lpFrameFormat); +NET_DVR_API BOOL __stdcall NET_DVR_ClientGetframeformat_V30(LONG lUserID, LPNET_DVR_FRAMEFORMAT_V30 lpFrameFormat); +NET_DVR_API BOOL __stdcall NET_DVR_ClientSetframeformat_V30(LONG lUserID, LPNET_DVR_FRAMEFORMAT_V30 lpFrameFormat); +NET_DVR_API BOOL __stdcall NET_DVR_GetAtmFrameFormat_V30(LONG lUserID, LONG lAtmChannel, LPNET_DVR_ATM_FRAMEFORMAT_V30 lpFrameFormat); +NET_DVR_API BOOL __stdcall NET_DVR_SetAtmFrameFormat_V30(LONG lUserID, LONG lAtmChannel, LPNET_DVR_ATM_FRAMEFORMAT_V30 lpFrameFormat); +NET_DVR_API BOOL __stdcall NET_DVR_GetAtmProtocol(LONG lUserID, LPNET_DVR_ATM_PROTOCOL lpAtmProtocol); +NET_DVR_API BOOL __stdcall NET_DVR_GetAlarmOut_V30(LONG lUserID, LPNET_DVR_ALARMOUTSTATUS_V30 lpAlarmOutState); +NET_DVR_API BOOL __stdcall NET_DVR_GetAlarmOut(LONG lUserID, LPNET_DVR_ALARMOUTSTATUS lpAlarmOutState); +NET_DVR_API BOOL __stdcall NET_DVR_SetAlarmOut(LONG lUserID, LONG lAlarmOutPort,LONG lAlarmOutStatic); + +//Ƶ +NET_DVR_API BOOL __stdcall NET_DVR_ClientSetVideoEffect(LONG lRealHandle,DWORD dwBrightValue,DWORD dwContrastValue, DWORD dwSaturationValue,DWORD dwHueValue); +NET_DVR_API BOOL __stdcall NET_DVR_ClientGetVideoEffect(LONG lRealHandle,DWORD *pBrightValue,DWORD *pContrastValue, DWORD *pSaturationValue,DWORD *pHueValue); + +//ļ +NET_DVR_API BOOL __stdcall NET_DVR_GetConfigFile(LONG lUserID, char *sFileName); +NET_DVR_API BOOL __stdcall NET_DVR_SetConfigFile(LONG lUserID, char *sFileName); +NET_DVR_API BOOL __stdcall NET_DVR_GetConfigFile_V30(LONG lUserID, char *sOutBuffer, DWORD dwOutSize, DWORD *pReturnSize); + +NET_DVR_API BOOL __stdcall NET_DVR_GetConfigFile_EX(LONG lUserID, char *sOutBuffer, DWORD dwOutSize); +NET_DVR_API BOOL __stdcall NET_DVR_SetConfigFile_EX(LONG lUserID, char *sInBuffer, DWORD dwInSize); + +//־ļдӿ +NET_DVR_API BOOL __stdcall NET_DVR_SetLogToFile(DWORD nLogLevel = 0, char * strLogDir = NULL, BOOL bAutoDel = TRUE); +NET_DVR_API BOOL __stdcall NET_DVR_GetSDKState(LPNET_DVR_SDKSTATE pSDKState); +NET_DVR_API BOOL __stdcall NET_DVR_GetSDKAbility(LPNET_DVR_SDKABL pSDKAbl); +NET_DVR_API BOOL __stdcall NET_DVR_GetPTZProtocol(LONG lUserID, NET_DVR_PTZCFG *pPtzcfg); +NET_DVR_API BOOL __stdcall NET_DVR_GetPTZCtrl_Other(LONG iUserID, LONG iChannel); +NET_DVR_API BOOL __stdcall NET_DVR_GetPTZCtrl(LONG iRealHandle); +//ǰ +NET_DVR_API BOOL __stdcall NET_DVR_LockPanel(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_UnLockPanel(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_StartPanelKey(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_StopPanelKey(LONG lUserID); + +NET_DVR_API BOOL __stdcall NET_DVR_SetRtspConfig(LONG lUserID, DWORD dwCommand, LPNET_DVR_RTSPCFG lpInBuffer, DWORD dwInBufferSize); +NET_DVR_API BOOL __stdcall NET_DVR_GetRtspConfig(LONG lUserID, DWORD dwCommand, LPNET_DVR_RTSPCFG lpOutBuffer, DWORD dwOutBufferSize); + +//ȡ +NET_DVR_API BOOL __stdcall NET_DVR_GetDeviceAbility(LONG lUserID, DWORD dwAbilityType, char* pInBuf, DWORD dwInLength, char* pOutBuf, DWORD dwOutLength); +NET_DVR_API BOOL __stdcall NET_DVR_SetSimAbilityPath(char * szSimAbilityPath, char *szSDCard); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetSubSystemInfo(LONG lUserID, LPNET_DVR_ALLSUBSYSTEMINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetSubSystemInfo(LONG lUserID, LPNET_DVR_ALLSUBSYSTEMINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetCodeSplitter(LONG lUserID, DWORD dwCodeChan, LPNET_DVR_CODESPLITTERINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetCodeSplitter(LONG lUserID, DWORD dwCodeChan, LPNET_DVR_CODESPLITTERINFO lpInter); + +// +///ȡؼ +NET_DVR_API BOOL __stdcall NET_DVR_SetBehaviorParamKey(LONG lUserID, LONG lChannel, DWORD dwParameterKey,int nValue); +NET_DVR_API BOOL __stdcall NET_DVR_GetBehaviorParamKey(LONG lUserID, LONG lChannel, DWORD dwParameterKey,int *pValue); + +//ȡ/쳣ΪĿӽӿ +NET_DVR_API BOOL __stdcall NET_DVR_GetVCADrawMode(LONG lUserID, LONG lChannel, LPNET_VCA_DRAW_MODE lpDrawMode); + + + +NET_DVR_API BOOL __stdcall NET_DVR_SetVCADrawMode(LONG lUserID, LONG lChannel, LPNET_VCA_DRAW_MODE lpDrawMode); + +//ģʽýӿ +NET_DVR_API BOOL __stdcall NET_DVR_SetTrackMode(LONG lUserID, LONG lChannel, LPNET_DVR_TRACK_MODE lpTrackMode); +NET_DVR_API BOOL __stdcall NET_DVR_GetTrackMode(LONG lUserID, LONG lChannel, LPNET_DVR_TRACK_MODE lpTrackMode); + +//ܿ +NET_DVR_API BOOL __stdcall NET_VCA_RestartLib(LONG lUserID, LONG lChannel); + +NET_DVR_API BOOL __stdcall NET_DVR_SaveRealData_V30(LONG lRealHandle, DWORD dwTransType, char *sFileName); + +#if ((!defined __linux__) && (!defined _WIN64)) +NET_DVR_API BOOL __stdcall NET_DVR_EncodeG711Frame(DWORD iType, BYTE *pInBuffer, BYTE *pOutBuffer); +NET_DVR_API BOOL __stdcall NET_DVR_DecodeG711Frame(DWORD iType, BYTE *pInBuffer, BYTE *pOutBuffer); +#elif ((defined __linux__) || (defined _WIN64)) +NET_DVR_API BOOL __stdcall NET_DVR_EncodeG711Frame(LPVOID handle, NET_DVR_AUDIOENC_PROCESS_PARAM *p_enc_proc_param); +NET_DVR_API BOOL __stdcall NET_DVR_DecodeG711Frame(LPVOID handle, NET_DVR_AUDIODEC_PROCESS_PARAM *p_dec_proc_param); +NET_DVR_API LPVOID __stdcall NET_DVR_InitG711Decoder(); +NET_DVR_API LPVOID __stdcall NET_DVR_InitG711Encoder(NET_DVR_AUDIOENC_INFO *enc_info); +NET_DVR_API BOOL __stdcall NET_DVR_ReleaseG711Encoder(LPVOID pEncodeHandle); +NET_DVR_API BOOL __stdcall NET_DVR_ReleaseG711Decoder(LPVOID pDecHandle); +#endif //(defined _WIN32) + +NET_DVR_API LONG __stdcall NET_DVR_FindFileByEvent(LONG lUserID, LPNET_DVR_SEARCH_EVENT_PARAM lpSearchEventParam); +NET_DVR_API LONG __stdcall NET_DVR_FindFileByEvent_V40(LONG lUserID, LPNET_DVR_SEARCH_EVENT_PARAM_V40 lpSearchEventParam); +NET_DVR_API LONG __stdcall NET_DVR_FindFileByEvent_V50(LONG lUserID, LPNET_DVR_SEARCH_EVENT_PARAM_V50 lpSearchEventParam); +NET_DVR_API LONG __stdcall NET_DVR_FindNextEvent(LONG lSearchHandle, LPNET_DVR_SEARCH_EVENT_RET lpSearchEventRet); +NET_DVR_API LONG __stdcall NET_DVR_FindNextEvent_V40(LONG lSearchHandle, LPNET_DVR_SEARCH_EVENT_RET_V40 lpSearchEventRet); +NET_DVR_API LONG __stdcall NET_DVR_FindNextEvent_V50(LONG lFindHandle, LPNET_DVR_SEARCH_EVENT_RET_V50 lpSearchEventRet); +//ֹͣ NET_DVR_FindClose + +NET_DVR_API LONG __stdcall NET_DVR_FindPDCInfo(LONG lUserID, LONG lChannel, LPNET_DVR_TIME lpStartTime, LPNET_DVR_TIME lpStopTime); +NET_DVR_API LONG __stdcall NET_DVR_FindNextPDCInfo(LONG lFindHandle,LPNET_DVR_PDC_QUERY lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_FindPDCClose(LONG lFindHandle); + +// 궨У +#define NET_DVR_PDC_VERIFY_CALIBRATION 1 //ֵΪ1ΪPDC궨У pdcֵΪNET_VCA_POINT ֵΪ NET_VCA_RECTṹ +#define NET_DVR_VERIFY_BEHAVIOR_CALIBRATION 2 // 쳣Ϊ궨У +#define NET_DVR_VERIFY_ITS_CALIBRATION 3 // ܽͨ궨У +#define NET_DVR_VERIFY_BV_CALIBRATION 5 //˫Ŀ궨У + +NET_DVR_API BOOL __stdcall NET_DVR_VerifyCalibration(LONG lUserID, DWORD dwCommand, LONG lChannel, LPVOID lpInBuffer, DWORD dwInBufferSize, LPVOID lpOuterBuffer, DWORD dwOuterBufferSize); +NET_DVR_API BOOL __stdcall NET_DVR_ResetCounter(LONG lUserID,LONG lChannel); + +NET_DVR_API BOOL __stdcall NET_DVR_GetPtzPosition(LONG lUserID, LONG lChannel, LONG lPositionID, LPNET_DVR_PTZ_POSITION lpPtzPosition); +NET_DVR_API BOOL __stdcall NET_DVR_SetPtzPosition(LONG lUserID, LONG lChannel, LONG lPositionID, LPNET_DVR_PTZ_POSITION lpPtzPosition); +NET_DVR_API BOOL __stdcall NET_DVR_SetPatrolTrack(LONG lUserID, LONG lChannel, LONG lPatrolIndex, LPNET_DVR_PATROL_TRACKCFG lpPatrolTrack); +NET_DVR_API BOOL __stdcall NET_DVR_GetPatrolTrack(LONG lUserID, LONG lChannel, LONG lPatrolIndex, LPNET_DVR_PATROL_TRACKCFG lpPatrolTrack); +NET_DVR_API LONG __stdcall NET_DVR_FindNextLog_MATRIX(LONG lLogHandle, LPNET_DVR_LOG_MATRIX lpLogData); +NET_DVR_API LONG __stdcall NET_DVR_FindDVRLog_Matrix(LONG lUserID, LONG lSelectMode, DWORD dwMajorType, DWORD dwMinorType, LPNET_DVR_VEDIOPLATLOG lpVedioPlatLog, LPNET_DVR_TIME lpStartTime, LPNET_DVR_TIME lpStopTime); + +NET_DVR_API BOOL __stdcall NET_DVR_ManualSnap(LONG lUserID, NET_DVR_MANUALSNAP const* lpInter, LPNET_DVR_PLATE_RESULT lpOuter); +NET_DVR_API BOOL __stdcall NET_DVR_ContinuousShoot(LONG lUserID, LPNET_DVR_SNAPCFG lpInter); + +NET_DVR_API BOOL __stdcall NET_DVR_GetPTZProtocol_Ex(LONG lUserID, LONG lChannel, NET_DVR_PTZCFG *pPtzcfg); + +NET_DVR_API LONG __stdcall NET_DVR_StartEmailTest(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_StopEmailTest(LONG lEmailTestHandle); +NET_DVR_API BOOL __stdcall NET_DVR_GetEmailTestProgress(LONG lEmailTestHandle, DWORD* pState); +NET_DVR_API BOOL __stdcall NET_DVR_GetIPCProtoList(LONG lUserID, LPNET_DVR_IPC_PROTO_LIST lpProtoList); +NET_DVR_API BOOL __stdcall NET_DVR_GetIPCProtoList_V41(LONG lUserID, LPNET_DVR_IPC_PROTO_LIST_V41 lpProtoList); +NET_DVR_API LONG __stdcall NET_DVR_SmartSearch(LONG lUserID, LPNET_DVR_SMART_SEARCH_PARAM lpSmartSearchParam); +NET_DVR_API LONG __stdcall NET_DVR_SmartSearch_V40(LONG lUserID, LPNET_DVR_SMART_SEARCH_PARAM_V40 lpSmartSearchParam); +NET_DVR_API LONG __stdcall NET_DVR_SearchNextInfo(LONG lSearchHandle, LPNET_DVR_SMART_SEARCH_RET lpSmartSearchRet); +NET_DVR_API BOOL __stdcall NET_DVR_StopSearch(LONG lSearchHandle); + +// IP San ļĿ¼ +NET_DVR_API LONG __stdcall NET_DVR_FindIpSanDirectory(LONG lUserID, LPNET_DVR_IPSAN_SERACH_PARAM lpIpsanSearchParam); +NET_DVR_API LONG __stdcall NET_DVR_FindNextDirectory(LONG lFindHandle, LPNET_DVR_IPSAN_SERACH_RET lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_FindDirectoryClose(LONG lFindHandle); + +typedef void (CALLBACK *REALDATACALLBACK) (LONG lPlayHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void* pUser); + +NET_DVR_API LONG __stdcall NET_DVR_ZeroStartPlay(LONG lUserID, LPNET_DVR_CLIENTINFO lpClientInfo, REALDATACALLBACK fRealDataCallBack_V30 = NULL, void* pUser = NULL, BOOL bBlocked = TRUE); + +NET_DVR_API BOOL __stdcall NET_DVR_ZeroStopPlay(LONG lPlayHandle); +NET_DVR_API BOOL __stdcall NET_DVR_ZeroMakeKeyFrame(LONG lUserID, LONG lZeroChan); +NET_DVR_API BOOL __stdcall NET_DVR_PlayBackControl_V40(LONG lPlayHandle,DWORD dwControlCode, LPVOID lpInBuffer = NULL, DWORD dwInLen = 0, LPVOID lpOutBuffer = NULL, DWORD *lpOutLen = NULL); +NET_DVR_API BOOL __stdcall NET_DVR_ZeroTurnOver(LONG lUserID, LONG lChannel, BOOL bNextPreview); +NET_DVR_API LONG __stdcall NET_DVR_RealPlay_Card_V30(LONG lUserID, NET_DVR_CARDINFO const *lpCardInfo, LONG lChannelNum, DWORD dwMode, BOOL bBlock, REALDATACALLBACK fRealDataCallBack_V30, void* pUser); + + +NET_DVR_API BOOL __stdcall NET_DVR_GetDiskList(LONG lUserID, LPNET_DVR_DISKABILITY_LIST lpDiskList); +NET_DVR_API LONG __stdcall NET_DVR_Backup(LONG lUserID, DWORD dwBackupType, LPVOID lpBackupBuff, DWORD dwBackupBuffSize); +NET_DVR_API LONG __stdcall NET_DVR_BackupByName(LONG lUserID, LPNET_DVR_BACKUP_NAME_PARAM lpBackupByName); +NET_DVR_API LONG __stdcall NET_DVR_BackupByTime(LONG lUserID, LPNET_DVR_BACKUP_TIME_PARAM lpBackupBytime); +NET_DVR_API BOOL __stdcall NET_DVR_GetBackupProgress(LONG lHandle, DWORD* pState); +NET_DVR_API BOOL __stdcall NET_DVR_StopBackup(LONG lHandle); + +NET_DVR_API BOOL __stdcall NET_DVR_GetSadpInfoList(LONG lUserID, LPNET_DVR_SADPINFO_LIST lpSadpInfoList); +NET_DVR_API BOOL __stdcall NET_DVR_UpdateSadpInfo(LONG lUserID, LPNET_DVR_SADP_VERIFY lpSadpVerify, LPNET_DVR_SADPINFO lpSadpInfo); + +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetSubDecSystemJoinInfo(LONG lUserID, LPNET_DVR_ALLDECSUBSYSTEMJOININFO lpInter); + +NET_DVR_API BOOL __stdcall NET_DVR_SetCodeSplitterAssociate(LONG lUserID, DWORD dwDecoderChan, DWORD dwSlotNum, LPNET_DVR_CODESPLITTERASSOCIATE lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_GetCodeSplitterAssociate(LONG lUserID, DWORD dwDecoderChan, DWORD dwSlotNum, LPNET_DVR_CODESPLITTERASSOCIATE lpInter); + +NET_DVR_API BOOL __stdcall NET_DVR_InquestGetCDRWScheme(LONG lUserID, LPNET_DVR_INQUEST_CDRW_CFG lpCDRWCfg); +NET_DVR_API BOOL __stdcall NET_DVR_InquestSetCDRWScheme(LONG lUserID, LPNET_DVR_INQUEST_CDRW_CFG lpCDRWCfg); +NET_DVR_API BOOL __stdcall NET_DVR_InquestDeleteFile(LONG lUserID, LPNET_DVR_INQUEST_FILES lpDeleteFile); +NET_DVR_API BOOL __stdcall NET_DVR_InquestCDWByFile(LONG lUserID, LPNET_DVR_INQUEST_FILES lpCdrwFile); +NET_DVR_API LONG __stdcall NET_DVR_InquestUploadFile(LONG lUserID, char *sFileName); +NET_DVR_API BOOL __stdcall NET_DVR_InquestUploadClose(LONG lUploadHandle); +NET_DVR_API LONG __stdcall NET_DVR_InquestGetUploadState(LONG lUploadHandle, LPDWORD pProgress); +NET_DVR_API BOOL __stdcall NET_DVR_InquestStartCDW( LONG lUserID, BOOL bPause); +NET_DVR_API BOOL __stdcall NET_DVR_InquestStopCDW(LONG lUserID, BOOL bCancelWrite); +NET_DVR_API BOOL __stdcall NET_DVR_InquestGetCDWState(LONG lUserID, LPNET_DVR_INQUEST_CDRW_STATUS pStatus); +NET_DVR_API BOOL __stdcall NET_DVR_InquestGetPIPStatus(LONG lUserID, LPNET_DVR_INQUEST_PIP_STATUS pStatus); +NET_DVR_API BOOL __stdcall NET_DVR_InquestSetPIPStatus(LONG lUserID, LPNET_DVR_INQUEST_PIP_STATUS pStatus); +NET_DVR_API BOOL __stdcall NET_DVR_InquestCheckSecretKey(LONG lUserID, BOOL *bSecretSet); +NET_DVR_API BOOL __stdcall NET_DVR_InquestSetSecretKey(LONG lUserID, LPNET_DVR_INQUEST_SECRET_INFO pSecretInfo); +NET_DVR_API BOOL __stdcall NET_DVR_InquestStreamEncrypt(LONG lUserID, LONG lChannel, BOOL bEncrypt); +NET_DVR_API BOOL __stdcall NET_DVR_InquestGetEncryptState(LONG lUserID, LONG lChannel, BOOL *bEncrypt); +NET_DVR_API LONG __stdcall NET_DVR_InquestFindFile(LONG lUserID); +NET_DVR_API LONG __stdcall NET_DVR_InquestFindNextFile(LONG lFindHandle, LPNET_DVR_INQUEST_FILEINFO lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_InquestFindClose(LONG lFindHandle); + +// 9000RH +NET_DVR_API LONG __stdcall NET_DVR_RaidFastConfig(LONG lUserID, char *sName); +NET_DVR_API BOOL __stdcall NET_DVR_FastConfigProcess(LONG lHandle, DWORD *pState); +NET_DVR_API BOOL __stdcall NET_DVR_CloseFastConfig(LONG lHandle); +NET_DVR_API BOOL __stdcall NET_DVR_GetArraySpaceAlloc(LONG lUserID, DWORD dwSlot, LPNET_DVR_ARRAY_SPACE_ALLOC_INFO lpOutBuf); +NET_DVR_API BOOL __stdcall NET_DVR_DelArray(LONG lUserID, DWORD dwID); +NET_DVR_API BOOL __stdcall NET_DVR_CreateArray(LONG lUserID, LPNET_DVR_OPERATE_ARRAY_PARAM lpArrayParam); +NET_DVR_API BOOL __stdcall NET_DVR_CalcArraySize(LONG lUserID, LPNET_DVR_OPERATE_ARRAY_PARAM lpArrayParam, UINT64* lpArraySize); +NET_DVR_API BOOL __stdcall NET_DVR_MigrateArray(LONG lUserID, LPNET_DVR_OPERATE_ARRAY_PARAM lpArrayParam); +NET_DVR_API BOOL __stdcall NET_DVR_RebuildArray(LONG lUserID, LPNET_DVR_OPERATE_ARRAY_PARAM lpArrayParam); +NET_DVR_API BOOL __stdcall NET_DVR_CreateVD(LONG lUserID, LPNET_DVR_OPERATE_VD_PARAM lpVDParam); +NET_DVR_API BOOL __stdcall NET_DVR_CreateVDEx(LONG lUserID, LPNET_DVR_OPERATE_VD_PARAM_EX lpVDParamEx); +NET_DVR_API BOOL __stdcall NET_DVR_DelVD(LONG lUserID, DWORD dwID); +NET_DVR_API BOOL __stdcall NET_DVR_RepairVD(LONG lUserID, DWORD dwID); +NET_DVR_API BOOL __stdcall NET_DVR_SetSpareDisk(LONG lUserID, LPNET_DVR_SPARE_DISK_PARAM lpSpareDisk); +NET_DVR_API BOOL __stdcall NET_DVR_GetPDList(LONG lUserID, LPNET_DVR_PHY_DISK_LIST lpPDList); +NET_DVR_API BOOL __stdcall NET_DVR_GetArrayList(LONG lUserID, LPNET_DVR_ARRAY_LIST lpArrayList); +NET_DVR_API BOOL __stdcall NET_DVR_GetVDList(LONG lUserID, LPNET_DVR_VD_LIST lpVDList); +NET_DVR_API LONG __stdcall NET_DVR_ExpandDisk(LONG lUserID,DWORD dwVDSLot); +NET_DVR_API BOOL __stdcall NET_DVR_GetExpandProgress(LONG lExpandHandle, DWORD* pState); +NET_DVR_API BOOL __stdcall NET_DVR_CloseExpandHandle(LONG lExpandHandle); +NET_DVR_API LONG __stdcall NET_DVR_AlgoDebugStart(LONG lUserID, LONG lCHannel, void(CALLBACK *fAlgoLibInfoCallBack)(LONG lHandle, LONG lChannel,char *pRecvDataBuffer, DWORD dwBufSize, void* pUser), void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_AlgoDebugSend(LONG lHandle, LONG lChannel, char *pSendBuf, DWORD dwBufSize); +NET_DVR_API BOOL __stdcall NET_DVR_AlgoDebugStop(LONG lHandle); +NET_DVR_API BOOL __stdcall NET_DVR_SetLogPrint(BOOL bLogPrint); +NET_DVR_API BOOL __stdcall NET_DVR_SetLogPrintAction(DWORD nLogLevel, DWORD nToDevice, BOOL bEnable, int Reserve1, int Reserve2); + +NET_DVR_API BOOL __stdcall NET_DVR_GetPositionRule(LONG lUserID, LONG lChannel, LONG lPositionIndex, LPNET_DVR_POSITION_RULE_CFG lpPositionRule); +NET_DVR_API BOOL __stdcall NET_DVR_GetPositionRule_V41(LONG lUserID, LONG lChannel, LONG lPositionIndex, LPNET_DVR_POSITION_RULE_CFG_V41 lpPositionRule); +NET_DVR_API BOOL __stdcall NET_DVR_SetPositionRule(LONG lUserID, LONG lChannel, LONG lPositionIndex, LPNET_DVR_POSITION_RULE_CFG lpPositionRule); +NET_DVR_API BOOL __stdcall NET_DVR_SetPositionRule_V41(LONG lUserID, LONG lChannel, LONG lPositionIndex, LPNET_DVR_POSITION_RULE_CFG_V41 lpPositionRule); +NET_DVR_API BOOL __stdcall NET_DVR_SetPositionLimitAngle(LONG lUserID, LONG lChannel, LONG lPositionIndex, LPNET_DVR_LIMIT_ANGLE lpLimitAngle); +NET_DVR_API BOOL __stdcall NET_DVR_GetPositionLimitAngle(LONG lUserID, LONG lChannel, LONG lPositionIndex, LPNET_DVR_LIMIT_ANGLE lpLimitAngle); +NET_DVR_API BOOL __stdcall NET_DVR_GetPtzPosition(LONG lUserID, LONG lChannel, LONG lPositionID, LPNET_DVR_PTZ_POSITION lpPtzPosition); +NET_DVR_API BOOL __stdcall NET_DVR_SetPtzPosition(LONG lUserID, LONG lChannel, LONG lPositionID, LPNET_DVR_PTZ_POSITION lpPtzPosition); +NET_DVR_API BOOL __stdcall NET_DVR_SetPatrolTrack(LONG lUserID, LONG lChannel, LONG lPatrolIndex, LPNET_DVR_PATROL_TRACKCFG lpPatrolTrack); +NET_DVR_API BOOL __stdcall NET_DVR_GetPatrolTrack(LONG lUserID, LONG lChannel, LONG lPatrolIndex, LPNET_DVR_PATROL_TRACKCFG lpPatrolTrack); +NET_DVR_API BOOL __stdcall NET_DVR_SetPatrolLimitAngle(LONG lUserID, LONG lChannel, LONG lPatrolIndex, LPNET_DVR_LIMIT_ANGLE lpLimitAngle); +NET_DVR_API BOOL __stdcall NET_DVR_GetPatrolLimitAngle(LONG lUserID, LONG lChannel, LONG lPatrolIndex, LPNET_DVR_LIMIT_ANGLE lpLimitAngle); +NET_DVR_API BOOL __stdcall NET_DVR_SetSceneMode(LONG lUserID, LONG lChannel, DWORD dwSceneMode); +NET_DVR_API BOOL __stdcall NET_DVR_GetSceneMode(LONG lUserID, LONG lChannel, DWORD *pSceneMode); +NET_DVR_API BOOL __stdcall NET_DVR_GetVCAVersion(LONG lUserID, LONG lChannel, LPNET_DVR_VCA_VERSION lpVersion); + +NET_DVR_API BOOL __stdcall NET_DVR_ContinuousShoot(LONG lUserID, LPNET_DVR_SNAPCFG lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixPicAdjust(LONG lUserID, DWORD dwDispChan, DWORD dwPicAdjust, DWORD dwCmdParam); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmJoinedRecord(LONG lUserID, DWORD dwChan, DWORD dwAlarmSeq, DWORD dwRecordTime, DWORD dwRes); +NET_DVR_API BOOL __stdcall NET_DVR_GetUnitedMatrixInfo(LONG lUserID, LPNET_DVR_UNITEDMATRIXINFO lpInter); +typedef LONG(CALLBACK * REGCallBack)(LONG lUserID, LPNET_DVR_REGCALLBACKPARAM pRegCallbackParam, LPNET_DVR_LOGONREPONSEPARAM pInterParam, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetRegisterCallBack(REGCallBack fRegCallBack, void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_PreviewRequest(LONG lUserID, LONG lChannel, LPNET_DVR_PREVIEWPARAM lpPreviewParam, LPNET_DVR_DEVICENATINFO lpOuter); +typedef LONG(CALLBACK * PREVIEWRESPONSECallBack)(LONG lUserID, LONG lStreamHandle, LPNET_DVR_PREVIEWCALLBACKPARAM pPewviewCallbackParam,void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetPreviewResponseCallBack(PREVIEWRESPONSECallBack fPreviewResponseCallBack, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_PlaybackRequest(LONG lUserID, LPNET_DVR_PLAYBACKREQUESTPARAM lpPlayBackRequestParam); +typedef LONG(CALLBACK * PLAYBACKRESPONSECallBack)(LONG lUserID, LONG lPlaybackHandle, LPNET_DVR_PLAYBACKCALLBACKPARAM lpPlaybackParam,void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetPlaybackResponseCallBack(PLAYBACKRESPONSECallBack fPlaybackResponseCallBack, void *pUser); +typedef LONG(CALLBACK * VOICERESPONSECallBack)(LONG lUserID, LONG lVoiceHandle, LONG lVoiceChannel, BYTE nAudioType, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetVoiceResponseCallBack(VOICERESPONSECallBack fVoiceResponseCallBack, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_VoiceRequest(LONG lUserID, LPNET_DVR_VOICEREQUESTPARAM lpVoiceParam); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmSetupRequest(LONG lUserID, LPNET_DVR_ALARMSETUPREQUESTPARAM lpAlarmSetupParam); +NET_DVR_API BOOL __stdcall NET_DVR_GetDialParam(LONG lUserID, LPNET_DVR_DIALREQUEST lpDialRequest, LPNET_DVR_DIALPARAM lpDialParam); +NET_DVR_API BOOL __stdcall NET_DVR_SetDialParam(LONG lUserID, LPNET_DVR_DIALREQUEST lpDialRequest, LPNET_DVR_DIALPARAM lpDialParam); +NET_DVR_API BOOL __stdcall NET_DVR_GetSmsListInfo(LONG lUserID, LPNET_DVR_TIME_EX lpStartTime, LPNET_DVR_TIME_EX lpStopTime, LPNET_DVR_SMSLISTINFO lpSmsListInfo); +NET_DVR_API BOOL __stdcall NET_DVR_GetSmsContent(LONG lUserID, DWORD dwSmsIndex, LPNET_DVR_SMSCONTENT lpSmsContent); +NET_DVR_API BOOL __stdcall NET_DVR_SendSms(LONG lUserID, LPNET_DVR_SMSCONTENT lpSmsContent); +NET_DVR_API LONG __stdcall NET_DVR_StartServer(char *sLocalIP, WORD wLocalPort, BYTE byMode); +NET_DVR_API BOOL __stdcall NET_DVR_StopServer(LONG lServerHandle); +NET_DVR_API LONG __stdcall NET_DVR_StartRecvNakedDataListen(NAKED_DATA_TYPE type, LPNET_DVR_NAKED_DATA_PARAM pParams); +NET_DVR_API BOOL __stdcall NET_DVR_StopRecvNakedDataListen(LONG lNakedDataRecvHandle); +typedef void(CALLBACK * NAKEDDAtACALLBACK)(DWORD typeInfo, char *pInfo, DWORD dwInfoLen,DWORD dwIPLen, void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetNakedDataRecvCallBack(LONG lNakedDataRecvHandle, void(CALLBACK *fNakedDataCallBack)(DWORD dwTypeInfo, NET_DVR_NAKED_DATA_INFO *pStruNakedDataInfo, char *pInfo, DWORD dwInfoLen, void* pUser), void* pUser); + +typedef LONG(CALLBACK * ALARMSETUPRESPONSECallBack)(LONG lUserID, LONG lAlarmHandle, void * pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetAlarmSetupResponseCallBack(ALARMSETUPRESPONSECallBack fAlarmSetupResponseCallBack, void * pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SpringJPEGPicture(LONG lUserID, LONG lChannel, NET_DVR_PUSHJPEGPARA const *lpJpegPara); +NET_DVR_API BOOL __stdcall NET_DVR_SetPushModeParam(LPNET_DVR_PUSHMODEPARAM pPushParam); + +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostSetupAlarmChan(LONG lUserID, NET_DVR_ALARMIN_SETUP *lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostCloseAlarmChan(LONG lUserID, NET_DVR_ALARMIN_SETUP *lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_BypassAlarmChan(LONG lUserID, NET_DVR_ALARMIN_SETUP *lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_UnBypassAlarmChan(LONG lUserID, NET_DVR_ALARMIN_SETUP *lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostAssistantControl(LONG lUserID, DWORD dwType, DWORD dwNumber, DWORD dwCmdParam); +NET_DVR_API BOOL __stdcall NET_DVR_SetAirCondition(LONG lUserID, LONG l485Index, NET_DVR_AIR_CONDITION_PARAM* lpAirConditionParam); +NET_DVR_API BOOL __stdcall NET_DVR_GetAirCondition(LONG lUserID, LONG l485Index, NET_DVR_AIR_CONDITION_PARAM* lpAirConditionParam); +NET_DVR_API BOOL __stdcall NET_DVR_GetDeviceTypeList(LONG lUserID, NET_DVR_DEVICE_TYPE_LIST *lpDeviceTypeList); +NET_DVR_API BOOL __stdcall NET_DVR_GetDeviceProtoList(LONG lUserID, LONG lDeviceType, NET_DVR_DEVICE_PROTO_LIST *lpDeviceProtoList); +NET_DVR_API BOOL __stdcall NET_DVR_GetBatteryVoltage(LONG lUserID, float *pVoltage); +NET_DVR_API BOOL __stdcall NET_DVR_SetAlarmDeviceUser(LONG lUserID, LONG lUserIndex, NET_DVR_ALARM_DEVICE_USER* lpDeviceUser); +NET_DVR_API BOOL __stdcall NET_DVR_GetAlarmDeviceUser(LONG lUserID, LONG lUserIndex, NET_DVR_ALARM_DEVICE_USER* lpDeviceUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetKeyboardUser(LONG lUserID, LONG lUserIndex, NET_DVR_KEYBOARD_USER* lpKeyboardUser); +NET_DVR_API BOOL __stdcall NET_DVR_GetKeyboardUser(LONG lUserID, LONG lUserIndex, NET_DVR_KEYBOARD_USER* lpKeyboardUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetOperateUser(LONG lUserID, LONG lUserIndex, NET_DVR_OPERATE_USER* lpOperateUser); +NET_DVR_API BOOL __stdcall NET_DVR_GetOperateUser(LONG lUserID, LONG lUserIndex, NET_DVR_OPERATE_USER* lpOperateUser); +NET_DVR_API BOOL __stdcall NET_DVR_ControlGateway(LONG lUserID, LONG lGatewayIndex, DWORD dwStaic); +NET_DVR_API BOOL __stdcall NET_DVR_SetAlarmHostOut(LONG lUserID, LONG lAlarmOutPort, LONG lAlarmOutStatic); +typedef void(CALLBACK *fAlarmHostSerialDataCallBack) +(LONG lSerialHandle, LONG lPort, LONG lDateType, char *pRecvDataBuffer, DWORD dwBufSize,void *pUser); +NET_DVR_API LONG __stdcall NET_DVR_AlarmHostSerialStart(LONG lUserID, LONG lSerialType, fAlarmHostSerialDataCallBack cbSerialDataCallBack, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostSerialSend(LONG lSerialHandle,LONG lPort,char *pSendBuf,DWORD dwBufSize); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostSerialStop(LONG lSerialHandle); +NET_DVR_API BOOL __stdcall NET_DVR_GetMatrixPuChan(LONG lUserID, LONG lChanType, NET_DVR_PU_CHAN_LIST* lpChanList); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixAlarmOffMonitor(LONG lUserID, DWORD dwMonID, DWORD dwCamID); +NET_DVR_API BOOL __stdcall NET_DVR_GetCameraListInfo(LONG lUserID, DWORD dwCamNum, DWORD dwStartCam, LPNET_DVR_MATRIX_CAMERALIST lpCamListInfo); +NET_DVR_API BOOL __stdcall NET_DVR_GetMonitorListInfo(LONG lUserID, DWORD dwMonNum, DWORD dwStartMon, LPNET_DVR_MATRIX_MONITORLIST lpMonListInfo); +NET_DVR_API BOOL __stdcall NET_DVR_GetGlobalNum(LONG lUserID, DWORD *dwCamNum, DWORD *dwMonNum); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetUnitedMatrixInfo(LONG lUserID, LPNET_DVR_ALLUNITEDMATRIXINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetUnitedMatrixInfo(LONG lUserID, LPNET_DVR_ALLUNITEDMATRIXINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetGatewayInfo(LONG lUserID, LPNET_DVR_MATRIXGATEWAYINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetGatewayInfo(LONG lUserID, LPNET_DVR_MATRIXGATEWAYINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSpanSwitch(LONG lUserID, BYTE nSwitchMode, LPNET_DVR_MATRIXSWITCH lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixStartSwitch(LONG lUserID, LPNET_DVR_MATRIXSWITCHCTRL lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetConfigFile(LONG lUserID, LPNET_DVR_MATRIXDATABASE lpInter, char *sInBuffer, DWORD dwInSize); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetConfigFile(LONG lUserID, LPNET_DVR_MATRIXDATABASE lpInter, char *sOutBuffer, DWORD dwOutSize, DWORD *pReturnSize); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetSubSystemInfo_V40(LONG lUserID, LPNET_DVR_ALLSUBSYSTEMINFO_V40 lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetSubSystemInfo_V40(LONG lUserID, LPNET_DVR_ALLSUBSYSTEMINFO_V40 lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetSubDecSystemJoinInfo_V40(LONG lUserID, LPNET_DVR_ALLDECSUBSYSTEMJOININFO_V40 lpInter); +typedef void (CALLBACK *FLOWTESTCALLBACK)(LONG lFlowHandle, LPNET_DVR_FLOW_INFO pFlowInfo, void *pUser); +NET_DVR_API LONG __stdcall NET_DVR_StartNetworkFlowTest(LONG lUserID, NET_DVR_FLOW_TEST_PARAM* pFlowTest, FLOWTESTCALLBACK fFlowTestCallback, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_StopNetworkFlowTest(LONG lHandle); +NET_DVR_API LONG __stdcall NET_DVR_FindRecordLabel(LONG lUserID, LPNET_DVR_FIND_LABEL lpFindLabel); +NET_DVR_API LONG __stdcall NET_DVR_FindNextLabel(LONG lFindHandle, LPNET_DVR_FINDLABEL_DATA lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_StopFindLabel(LONG lFindHandle); +NET_DVR_API BOOL __stdcall NET_DVR_InsertRecordLabel(LONG lPlayHandle, NET_DVR_RECORD_LABEL* lpRecordLabel, NET_DVR_LABEL_IDENTIFY *lpLableIdentify); +NET_DVR_API BOOL __stdcall NET_DVR_DelRecordLabel(LONG lUserID, NET_DVR_DEL_LABEL_PARAM* lpDelLabelParam); +NET_DVR_API BOOL __stdcall NET_DVR_ModifyRecordLabel(LONG lUserID, NET_DVR_MOD_LABEL_PARAM * lpModLabelParam); +NET_DVR_API BOOL __stdcall NET_DVR_CapturePlaybackPictureBlock(LONG lPlayHandle, char *sPicFileName, DWORD dwTimeOut); +NET_DVR_API BOOL __stdcall NET_DVR_CapturePlaybackPictureBlock_New(LONG lPlayHandle, char *pPicBuf, DWORD dwPicSize, DWORD *lpSizeReturned); +NET_DVR_API LONG __stdcall NET_DVR_FindPicture(LONG lUserID, NET_DVR_FIND_PICTURE_PARAM* pFindParam); +NET_DVR_API LONG __stdcall NET_DVR_FindNextPicture(LONG lFindHandle,LPNET_DVR_FIND_PICTURE lpFindData); +NET_DVR_API LONG __stdcall NET_DVR_FindNextPicture_V40(LONG lFindHandle,LPNET_DVR_FIND_PICTURE_V40 lpFindData); +NET_DVR_API LONG __stdcall NET_DVR_FindNextPicture_V50(LONG lFindHandle, LPNET_DVR_FIND_PICTURE_V50 lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_CloseFindPicture(LONG lFindHandle); +NET_DVR_API BOOL __stdcall NET_DVR_GetPicture(LONG lUserID,char *sDVRFileName,const char *sSavedFileName); +NET_DVR_API BOOL __stdcall NET_DVR_GetPicture_V30(LONG lUserID, char *sDVRFileName, char *sSavedFileBuf, DWORD dwBufLen, DWORD *lpdwRetLen); +NET_DVR_API BOOL __stdcall NET_DVR_GetPicture_V50(LONG lUserID, LPNET_DVR_PIC_PARAM lpPicParam); +NET_DVR_API LONG __stdcall NET_DVR_BackupPicture(LONG lUserID, NET_DVR_BACKUP_PICTURE_PARAM *lpBackupPicture); +NET_DVR_API LONG __stdcall NET_DVR_GetUpgradeStep(LONG lUpgradeHandle, LONG *pSubProgress); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetEncodeJoint(LONG lUserID, LONG lChannel, LPNET_DVR_ENCODE_JOINT_PARAM lpEncodeJoint); +NET_DVR_API BOOL __stdcall NET_DVR_GetLocalIP(char strIP[16][16], DWORD *pValidNum, BOOL *pEnableBind); +NET_DVR_API BOOL __stdcall NET_DVR_SetValidIP(DWORD dwIPIndex, BOOL bEnableBind); +NET_DVR_API BOOL __stdcall NET_DVR_GetLocalIPv6(BYTE strIP[16][16], DWORD *pValidNum, BOOL *pEnableBind); +NET_DVR_API BOOL __stdcall NET_DVR_SetValidIPv6(DWORD dwIPIndex, BOOL bEnableBind); +NET_DVR_API BOOL __stdcall NET_DVR_GetVcaDevWorkState(LONG lUserID, LPNET_DVR_VCA_DEV_WORKSTATUS lpWorkState); +NET_DVR_API BOOL __stdcall NET_DVR_SetRecvTimeOut(DWORD nRecvTimeOut = 5000); //С3000 +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDisplayCfg_V40(LONG lUserID, DWORD dwDispChanNum, LPNET_DVR_VGA_DISP_CHAN_CFG_V40 lpDisplayCfg); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetDisplayCfg_V40(LONG lUserID, DWORD dwDispChanNum, LPNET_DVR_VGA_DISP_CHAN_CFG_V40 lpDisplayCfg); +NET_DVR_API BOOL __stdcall NET_DVR_ShutterCompensation(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_CorrectDeadPixel(LONG lUserID, LONG lChannel, LPNET_DVR_CORRECT_DEADPIXEL_PARAM lpInParam); +NET_DVR_API BOOL __stdcall NET_DVR_CustomConfig(LONG lUserID, LONG lChannel, LPVOID lpInBuffer, DWORD dwInBufferSize, LPVOID lpOutBuffer, DWORD dwOutBufferSize, LPDWORD lpBytesReturned); +NET_DVR_API BOOL __stdcall NET_DVR_GetHistoricDataInfo(LONG lUserID, LONG lChannel, LPNET_DVR_HISTORICDATACFG lpHisData); +NET_DVR_API BOOL __stdcall NET_DVR_GetHistoricData(LONG lUserID, LONG lChannel, LPNET_DVR_PLATE_RESULT lpOuter); +NET_DVR_API BOOL __stdcall NET_DVR_ClearHistoricData(LONG lUserID, LONG lChannel); +NET_DVR_API BOOL __stdcall NET_VPD_SetShutter(LONG lUserID, LONG lChannel, LPNET_VPD_SHUTTER lpShutter); +NET_DVR_API BOOL __stdcall NET_VPD_SendPicture(LONG lUserID, DWORD dwFields, BYTE const *sImageBuffer, DWORD dwWidth, DWORD dwHeight); +NET_DVR_API LONG __stdcall NET_DVR_InquestUploadFile_V30(LONG lUserID, LPNET_DVR_INQUEST_ROOM lpInquestRoom, char *sFileName); +NET_DVR_API BOOL __stdcall NET_DVR_InquestDeleteFile_V30(LONG lUserID, LPNET_DVR_INQUEST_ROOM lpInquestRoom, LPNET_DVR_INQUEST_FILES lpDeleteFile); +NET_DVR_API BOOL __stdcall NET_DVR_InquestGetPIPStatus_V30(LONG lUserID, LPNET_DVR_INQUEST_ROOM lpInquestRoom, LPNET_DVR_INQUEST_PIP_STATUS lpStatus); +NET_DVR_API BOOL __stdcall NET_DVR_InquestSetPIPStatus_V30(LONG lUserID, LPNET_DVR_INQUEST_ROOM lpInquestRoom, LPNET_DVR_INQUEST_PIP_STATUS lpStatus); +NET_DVR_API BOOL __stdcall NET_DVR_InquestGetPIPStatus_V40(LONG lUserID, NET_DVR_INQUEST_ROOM const *lpInquestRoom, LPNET_DVR_INQUEST_PIP_STATUS_V40 lpStatus); +NET_DVR_API BOOL __stdcall NET_DVR_InquestSetPIPStatus_V40(LONG lUserID, NET_DVR_INQUEST_ROOM const *lpInquestRoom, LPNET_DVR_INQUEST_PIP_STATUS_V40 lpStatus); +NET_DVR_API BOOL __stdcall NET_DVR_InquestGetSystemInfo(LONG lUserID, LPNET_DVR_INQUEST_SYSTEM_INFO lpSystemInfo); +NET_DVR_API BOOL __stdcall NET_DVR_InquestSetSystemInfo(LONG lUserID, LPNET_DVR_INQUEST_SYSTEM_INFO lpSystemInfo); +NET_DVR_API BOOL __stdcall NET_DVR_InquestSendMessage(LONG lUserID, LPNET_DVR_INQUEST_ROOM lpInquestRoom, LPNET_DVR_INQUEST_MESSAGE lpInquestMessage); +NET_DVR_API BOOL __stdcall NET_DVR_InquestStartCDW_V30(LONG lUserID, LPNET_DVR_INQUEST_ROOM lpInquestRoom, BOOL bNotBurn); +NET_DVR_API BOOL __stdcall NET_DVR_InquestStopCDW_V30(LONG lUserID, LPNET_DVR_INQUEST_ROOM lpInquestRoom, BOOL bCancelWrite); +NET_DVR_API BOOL __stdcall NET_DVR_InquestGetCDWState_V30(LONG lUserID, LPNET_DVR_INQUEST_ROOM lpInquestRoom, LPNET_DVR_INQUEST_CDRW_STATUS pStatus); +NET_DVR_API LONG __stdcall NET_DVR_InquestResumeEvent(LONG lUserID, LPNET_DVR_INQUEST_RESUME_EVENT lpResumeEvent); +NET_DVR_API BOOL __stdcall NET_DVR_InquestGetResumeProgress(LONG lHandle, DWORD* pState); +NET_DVR_API BOOL __stdcall NET_DVR_InquestStopResume(LONG lHandle); +NET_DVR_API LONG __stdcall NET_DVR_InquestFindFile_V30(LONG lUserID, LPNET_DVR_INQUEST_ROOM pInquestRoom); +NET_DVR_API BOOL __stdcall NET_DVR_InquestGetDeviceVersion(LONG lUserID, LPNET_DVR_INQUEST_DEVICE_VERSION lpVersionInfo); +NET_DVR_API BOOL __stdcall NET_DVR_SetSDKSecretKey(LONG lUserID, char *sSecretKey); +NET_DVR_API BOOL __stdcall NET_DVR_LockFileByTime(LONG lUserID, LPNET_DVR_TIME_LOCK lpLockPara, LPNET_DVR_LOCK_RETURN lpLockReturn); +NET_DVR_API BOOL __stdcall NET_DVR_UnlockFileByTime(LONG lUserID, LPNET_DVR_TIME_LOCK lpLockPara, LPNET_DVR_LOCK_RETURN lpLockReturn); +NET_DVR_API BOOL __stdcall NET_DVR_ScreenZoomIn(LONG lUserID, LPNET_DVR_SCREENZOOM pStruScreen); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetAllCameraInfo(LONG lUserID, LPNET_DVR_MATRIX_CAMERALIST lpCamListInfo); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetSingleCameraInfo(LONG lUserID, DWORD dwCameraId, LPNET_MATRIX_CAMERAINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixAddCamera(LONG lUserID, DWORD dwCameraNum, BYTE *pBuffer, DWORD dwBufLength); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixModCameraInfo(LONG lUserID, LPNET_MATRIX_CAMERAINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixDelCamera(LONG lUserID, DWORD dwCameraId); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetAllMonitorInfo(LONG lUserID, LPNET_DVR_MATRIX_MONITORLIST lpMonListInfo); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetSingleMonitorInfo(LONG lUserID, DWORD dwMonitorId, LPNET_MATRIX_MONITORINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixAddMonitor(LONG lUserID, DWORD dwMonitorNum, BYTE *pBuffer, DWORD dwBufLength); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixModMonitorInfo(LONG lUserID, LPNET_MATRIX_MONITORINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixDelMonitor(LONG lUserID, DWORD dwMonitorId); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetAllMatrixInfo(LONG lUserID, LPNET_DVR_MATRIXLIST lpMatrixListInfo); +NET_DVR_API BOOL __stdcall NET_DVR_GetSingleMatrixInfo(LONG lUserID, DWORD dwMatrixId, LPNET_MATRIX_MATRIXINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_AddMatrix(LONG lUserID, LPNET_MATRIX_MATRIXINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_ModMatrixInfo(LONG lUserID, LPNET_MATRIX_MATRIXINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_DelMatrix(LONG lUserID, DWORD dwMatrixId); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetUartParam(LONG lUserID, DWORD dwSerialChan, LPNET_MATRIX_UARTPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetUartParam(LONG lUserID, DWORD dwSerialChan , LPNET_MATRIX_UARTPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetUserInfo(LONG lUserID, DWORD dwUserNum, LPNET_MATRIX_USERPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixAddUser(LONG lUserID, DWORD dwUserNum, LPNET_MATRIX_USERPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixModUserInfo(LONG lUserID, DWORD dwUserNum, LPNET_MATRIX_USERPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixDelUser(LONG lUserID, DWORD dwUserNum); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetResourceInfo(LONG lUserID, DWORD dwResourceNum, LPNET_MATRIX_RESOURSEGROUPPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixAddResourceInfo(LONG lUserID, DWORD dwResourceNum, LPNET_MATRIX_RESOURSEGROUPPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixModResourceInfo(LONG lUserID, DWORD dwResourceNum, LPNET_MATRIX_RESOURSEGROUPPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixDelResourceInfo(LONG lUserID, DWORD dwResourceNum); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetUserGroupInfo(LONG lUserID, DWORD dwUserGroupNum, LPNET_MATRIX_USERGROUPPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixAddUserGroupInfo(LONG lUserID, DWORD dwUserGroupNum, LPNET_MATRIX_USERGROUPPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixModUserGroupInfo(LONG lUserID, DWORD dwUserGroupNum, LPNET_MATRIX_USERGROUPPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixDelUserGroup (LONG lUserID, DWORD dwUserGroupNum); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetAllTrunkInfo(LONG lUserID, LPNET_DVR_MATRIX_TRUNKLIST lpTrunkListInfo); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetTrunkInfo(LONG lUserID, DWORD dwTrunkNum, LPNET_MATRIX_TRUNKPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixAddTrunk(LONG lUserID, LPNET_MATRIX_TRUNKPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixModTrunkInfo(LONG lUserID, LPNET_MATRIX_TRUNKPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixTrunkCtrl(LONG lUserID, DWORD dwTrunkNum, BYTE byCtrlMode); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixTrunkStatusQuery(LONG lUserID, DWORD dwTrunkNum, BYTE *byTrunkStatus); + +NET_DVR_API BOOL __stdcall NET_DVR_FindBackgroundPic(LONG lUserID, DWORD dwPicID, BYTE *pPicBuffer, DWORD *lpPicLen); +NET_DVR_API BOOL __stdcall NET_DVR_DetectImage(LONG lUserID, LPNET_VCA_FD_PROCIMG_CFG lpFDProcImg,LPNET_VCA_FD_PROCIMG_RESULT lpOutBuf); +NET_DVR_API BOOL __stdcall NET_DVR_GetPictureModel(LONG lUserID, LPNET_VCA_REGISTER_PIC lpInBuf, LPNET_VCA_PICMODEL_RESULT lpOutBuf); +NET_DVR_API BOOL __stdcall NET_DVR_AddBlockList(LONG lUserID,LONG lChannel,LPNET_VCA_BLOCKLIST_PARA lpInter); +NET_DVR_API LONG __stdcall NET_DVR_FindBlockList(LONG lUserID, LPNET_VCA_BLOCKLIST_COND lpBlockListCond); +NET_DVR_API LONG __stdcall NET_DVR_FindNextBlockList(LONG lFindHandle,LPNET_VCA_BLOCKLIST_INFO lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_FindBlockListClose(LONG lFindHandle); +NET_DVR_API BOOL __stdcall NET_DVR_GetBlockListPicture(LONG lUserID, DWORD dwRegisterID, LPNET_VCA_BLOCKLIST_PIC lpOutBuffer); +NET_DVR_API BOOL __stdcall NET_DVR_UpdateBlockList(LONG lUserID,LONG lChannel, LPNET_VCA_BLOCKLIST_PARA lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_DelBlockList(LONG lUserID,LONG lChannel, DWORD dwRegisterID); +NET_DVR_API LONG __stdcall NET_DVR_FindSnapPicture(LONG lUserID, LPNET_VCA_FIND_PICTURECOND lpFindParam); +NET_DVR_API LONG __stdcall NET_DVR_FindNextSnapPic(LONG lFindHandle,LPNET_VCA_SUB_SNAPPIC_DATA lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_FindSnapPicClose(LONG lFindHandle); +NET_DVR_API LONG __stdcall NET_DVR_AdvanceFindSnapPicture(LONG lUserID, LPNET_VCA_FIND_PICTURECOND_ADVANCE lpFindParam); +NET_DVR_API LONG __stdcall NET_DVR_FindFaceMatchAlarm(LONG lUserID, LPNET_VCA_FIND_PICTURECOND lpFindParam); +NET_DVR_API LONG __stdcall NET_DVR_FindNextFaceMatchAlarm(LONG lFindHandle, LPNET_VCA_FACESNAP_MATCH_ALARM_LOG lpFaceMatchAlarmLog); +NET_DVR_API BOOL __stdcall NET_DVR_FindFaceMatchAlarmClose(LONG lFindHandle); +NET_DVR_API BOOL __stdcall NET_DVR_GetFaceMatchPic(LONG lUserID, LPNET_VCA_FACEMATCH_PICCOND lpMatchCond, LPNET_VCA_FACEMATCH_PICTURE lpMatchPic); +NET_DVR_API BOOL __stdcall NET_DVR_FastAddBlockList(LONG lUserID,LONG lChannel,LPNET_VCA_BLOCKLIST_FASTREGISTER_PARA lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetRemotePlay_V41(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_DEC_REMOTE_PLAY_V41 lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDisplayCfg_V41(LONG lUserID, DWORD dwDispChanNum, LPNET_DVR_MATRIX_VOUTCFG lpVoutCfg); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetDisplayCfg_V41(LONG lUserID, DWORD dwDispChanNum, LPNET_DVR_MATRIX_VOUTCFG lpDisplayCfg); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDeviceStatus_V41(LONG lUserID, LPNET_DVR_DECODER_WORK_STATUS_V41 lpDecoderCfg); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetSceneCfg(LONG lUserID, DWORD dwSceneNum, LPNET_DVR_MATRIX_SCENECFG lpSceneCfg); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetSceneCfg(LONG lUserID, DWORD dwSceneNum, LPNET_DVR_MATRIX_SCENECFG lpSceneCfg); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSceneControl(LONG lUserID, DWORD dwSceneNum, DWORD dwCmd, DWORD dwCmdParam); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetCurrentSceneMode(LONG lUserID, DWORD *dwSceneNum); +NET_DVR_API BOOL __stdcall NET_DVR_GetAllValidWinInfo(LONG lUserID, LPNET_DVR_WINLIST lpWinListInfo); +NET_DVR_API BOOL __stdcall NET_DVR_ScreenWinCtrl(LONG lUserID, DWORD dwWinIndex, DWORD dwCommand, LPNET_DVR_SCREEN_WINCFG lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_GetScreenInputStatus(LONG lUserID, LPNET_DVR_SCREENINPUTSTATUS lpStatus); +NET_DVR_API LONG __stdcall NET_DVR_PicUpload(LONG lUserID, char const *sFileName, LPNET_DVR_PICTURECFG lpPictureCfg); +NET_DVR_API LONG __stdcall NET_DVR_GetPicUploadProgress(LONG lUploadHandle); +NET_DVR_API BOOL __stdcall NET_DVR_CloseUploadHandle(LONG lUploadHandle); +NET_DVR_API BOOL __stdcall NET_DVR_PicControl(LONG lUserID, BYTE byUseType, BYTE byPicIndex, BYTE byCtrlCmd); +NET_DVR_API LONG __stdcall NET_DVR_GetPicUploadState(LONG lUploadHandle); +NET_DVR_API BOOL __stdcall NET_DVR_ScreenCtrl(LONG lUserID, DWORD dwDeviceNum, LPNET_DVR_SCREEN_CONTROL lpStruScreenCtrl); +typedef void (CALLBACK *SCREENPICDATACB)(LONG nScreenPicHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void *pUser); +NET_DVR_API LONG __stdcall NET_DVR_StartScreenPic(LONG nUserID, DWORD nInputNum, SCREENPICDATACB PicDataCallback, void *pUserData); +NET_DVR_API BOOL __stdcall NET_DVR_StopScreenPic(LONG nScreenPicHandle); +NET_DVR_API BOOL __stdcall NET_DVR_FocusOnePush(LONG lUserID, LONG lChannel); +NET_DVR_API BOOL __stdcall NET_DVR_ResetLens(LONG lUserID, LONG lChannel); + +typedef void(CALLBACK *fRemoteConfigCallback)(DWORD dwType, void* lpBuffer, DWORD dwBufLen, void* pUserData); +NET_DVR_API LONG __stdcall NET_DVR_StartRemoteConfig(LONG lUserID, DWORD dwCommand, LPVOID lpInBuffer, DWORD dwInBufferLen, fRemoteConfigCallback cbStateCallback, LPVOID pUserData); +NET_DVR_API BOOL __stdcall NET_DVR_StopRemoteConfig(LONG lHandle); +NET_DVR_API LONG __stdcall NET_DVR_GetNextRemoteConfig(LONG lHandle, void* lpOutBuff, DWORD dwOutBuffSize); +NET_DVR_API BOOL __stdcall NET_DVR_GetRemoteConfigState(LONG lHandle, void *pState); +NET_DVR_API BOOL __stdcall NET_DVR_SendRemoteConfig(LONG lHandle, DWORD dwDataType, char *pSendBuf, DWORD dwBufSize); +NET_DVR_API LONG __stdcall NET_DVR_SendWithRecvRemoteConfig(LONG lHandle, void* lpInBuff, DWORD dwInBuffSize, void* lpOutBuff, DWORD dwOutBuffSize, DWORD *dwOutDataLen); + +typedef void(CALLBACK *fLongCfgStateCallback)(LONG lHandle, DWORD dwState, LPVOID pUserData); +NET_DVR_API BOOL __stdcall NET_DVR_CloseLongCfgHandle(LONG lHandle); +NET_DVR_API LONG __stdcall NET_DVR_RaidPullDiskStart(LONG lUserID, LONG lRaidID, fLongCfgStateCallback cbStateCallback, LPVOID pUserData); +NET_DVR_API LONG __stdcall NET_DVR_ScanRaidStart(LONG lUserID, fLongCfgStateCallback cbStateCallback, LPVOID pUserData); +NET_DVR_API LONG __stdcall NET_DVR_SetAccessCameraInfo(LONG lUserID, DWORD dwChannel, LPNET_DVR_ACCESS_CAMERA_INFO lpCameraInfo, fLongCfgStateCallback cbStateCallback, LPVOID pUserData); + +NET_DVR_API BOOL __stdcall NET_DVR_InquiryRecordTimeSpan(LONG lUserID, DWORD dwChannel, NET_DVR_RECORD_TIME_SPAN_INQUIRY const *lpInquiry, LPNET_DVR_RECORD_TIME_SPAN lpResult); +NET_DVR_API BOOL __stdcall NET_DVR_UpdateRecordIndex(LONG lUserID, DWORD dwChannel); +NET_DVR_API BOOL __stdcall NET_DVR_GetUpnpNatState(LONG lUserID, LPNET_DVR_UPNP_NAT_STATE lpState); + +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetLoopPlanArray(LONG lUserID, DWORD dwArrayNum, LPNET_DVR_MATRIX_LOOP_DECINFO_V30 lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetLoopPlanArray(LONG lUserID, DWORD dwArrayNum, NET_DVR_MATRIX_LOOP_DECINFO_V30 const *lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetAlarmShowMode(LONG lUserID, LPNET_DVR_ALARMMODECFG lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetAlarmShowMode(LONG lUserID, NET_DVR_ALARMMODECFG const *lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixStartDynamicAssociateDecode(LONG lUserID, DWORD dwDecChanNum, NET_DVR_DYNAMICDECODE const *lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixAlarmTurn(LONG lUserID, DWORD dwDecChanNum, DWORD dwTurnParam); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixAlarmShowControl(LONG lUserID, DWORD dwDecChanNum, DWORD dwShowMode); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetPlanDecode(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_PLANDECODE lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetPlanDecode(LONG lUserID, DWORD dwDecChanNum, NET_DVR_PLANDECODE const *lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetLoopDecChanInfo_EX(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_LOOP_DECINFO_EX lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetLoopDecChanInfo_EX(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_LOOP_DECINFO_EX lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixStartDynamic_EX(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_PU_STREAM_CFG_EX lpDynamicInfo); +NET_DVR_API BOOL __stdcall NET_DVR_GetTrunkListInfo(LONG lUserID, DWORD dwTrunkNum, DWORD dwStartTrunk, LPNET_DVR_MATRIX_TRUNKLIST lpTrunkListInfo, DWORD *pReturnSize); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetSubDecSystemJoinInfo_V41(LONG lUserID, LPNET_DVR_ALLDECSUBSYSTEMJOININFO_V41 lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostSubSystemSetupAlarmChan(LONG lUserID, DWORD dwSubSystemNum); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostSubSystemCloseAlarmChan(LONG lUserID, DWORD dwSubSystemNum); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostClearAlarm(LONG lUserID, DWORD dwSubSystemNum); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostArrayBypass(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostArrayBypassResume (LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostSetReportMode(LONG lUserID, LONG lCenterNum, LPVOID lpInputBuf, DWORD dwInputBufLen); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostGetReportMode(LONG lUserID, LPVOID lpOutputBuf, DWORD dwOutputBufLen); +NET_DVR_API LONG __stdcall NET_DVR_StartUploadAudio(LONG lUserID, DWORD dwAudioNum, DWORD dwAudioType, char const *sAudioFileName); +NET_DVR_API LONG __stdcall NET_DVR_StartDownloadAudio(LONG lUserID, DWORD dwAudioNum, char const *sAudioFileName); +NET_DVR_API BOOL __stdcall NET_DVR_StopAudioOperate(LONG lAudioHandle); +NET_DVR_API LONG __stdcall NET_DVR_GetAudioProgress(LONG lAudioHandle); +NET_DVR_API BOOL __stdcall NET_DVR_AudioCtrl(LONG lUserID, DWORD dwAudioNum, DWORD dwCtrlParam); +NET_DVR_API BOOL __stdcall NET_DVR_GetDeviceConfig(LONG lUserID, DWORD dwCommand, DWORD dwCount, LPVOID lpInBuffer, DWORD dwInBufferSize, LPVOID lpStatusList, LPVOID lpOutBuffer, DWORD dwOutBufferSize); +NET_DVR_API BOOL __stdcall NET_DVR_SetDeviceConfig(LONG lUserID, DWORD dwCommand, DWORD dwCount, LPVOID lpInBuffer, DWORD dwInBufferSize, LPVOID lpStatusList, LPVOID lpInParamBuffer, DWORD dwInParamBufferSize); +NET_DVR_API BOOL __stdcall NET_DVR_LockStreamFileByTime(LONG lUserID, LPNET_DVR_STREAM_TIME_LOCK lpLockPara, LPNET_DVR_LOCK_RETURN lpLockReturn); +NET_DVR_API BOOL __stdcall NET_DVR_UnlockStreamFileByTime(LONG lUserID, LPNET_DVR_STREAM_TIME_LOCK lpLockPara, LPNET_DVR_LOCK_RETURN lpLockReturn); +NET_DVR_API BOOL __stdcall NET_DVR_StartManualRecord(LONG lUserID, LPNET_DVR_MANUAL_RECORD_PARA lpManualRecPara); +NET_DVR_API BOOL __stdcall NET_DVR_StopManualRecord(LONG lUserID, LPNET_DVR_STREAM_INFO pIDInfo); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackReverseByName(LONG lUserID, char *sPlayBackFileName, HWND hWnd); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackByTime_V40(LONG lUserID, NET_DVR_VOD_PARA const* pVodPara); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackByTime_V50(LONG lUserID, NET_DVR_VOD_PARA_V50 const* pVodPara); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackReverseByTime_V40(LONG lUserID, HWND hWnd, LPNET_DVR_PLAYCOND pPlayCond); +NET_DVR_API LONG __stdcall NET_DVR_GetFileByTime_V40(LONG lUserID, char *sSavedFileName, LPNET_DVR_PLAYCOND pDownloadCond); +NET_DVR_API LONG __stdcall NET_DVR_FindFile_V40(LONG lUserID, LPNET_DVR_FILECOND_V40 pFindCond); +NET_DVR_API LONG __stdcall NET_DVR_SetupAlarmChan_V41(LONG lUserID, LPNET_DVR_SETUPALARM_PARAM lpSetupParam); +NET_DVR_API BOOL __stdcall NET_DVR_AddDataBase(LONG lUserID, LPNET_VCA_DATABASE_PARAM lpInBuf); +NET_DVR_API LONG __stdcall NET_DVR_FindDataBase(LONG lUserID, LPNET_VCA_FIND_DATABASE_COND lpInBuf); +NET_DVR_API LONG __stdcall NET_DVR_FindNextDataBase(LONG lFindHandle, LPNET_VCA_DATABASE_PARAM lpOutBuf); +NET_DVR_API BOOL __stdcall NET_DVR_FindDataBaseClose(LONG lFindHandle); +NET_DVR_API BOOL __stdcall NET_DVR_UpdateDataBase(LONG lUserID, LPNET_VCA_DATABASE_PARAM lpInBuf); +NET_DVR_API BOOL __stdcall NET_DVR_DeleteDataBase(LONG lUserID, LPNET_VCA_DELETE_DATABASE_COND lpCond); +typedef void(CALLBACK *fSearchDBCallBack)(LONG lHandle, DWORD dwType, DWORD dwResultNum, BYTE* pBuffer, DWORD dwBufSize,void *pUser); +NET_DVR_API LONG __stdcall NET_DVR_InquireSnapDBRecord(LONG lUserID, DWORD dwDataBaseID, LPNET_VCA_INQUIRE_SNAPDB_COND lpInBuf, fSearchDBCallBack cbSearchDBCallBack, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_GetInquireSnapDBProgress(LONG lInquireHandle, DWORD* pState); +NET_DVR_API BOOL __stdcall NET_DVR_DeleteSnapDBRecord(LONG lUserID, DWORD dwDataBaseID, LPNET_VCA_DELETE_SNAPRECORD_COND lpInBuf); +NET_DVR_API LONG __stdcall NET_DVR_SearchSnapDB(LONG lUserID, LPNET_VCA_SEARCH_SNAPDB_COND lpInBuf, fSearchDBCallBack cbSearchDBCallBack, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_GetSearchSnapDBProgress(LONG lSearchHandle, DWORD* pState); +NET_DVR_API BOOL __stdcall NET_DVR_AddFaceDBRecord(LONG lUserID, DWORD dwDataBaseID, LPNET_VCA_DATARECORD_INFO lpInBuf); +NET_DVR_API BOOL __stdcall NET_DVR_FastAddFaceDBRecord(LONG lUserID, DWORD dwDataBaseID, LPNET_VCA_FAST_DATARECORD_INFO lpInBuf); +NET_DVR_API LONG __stdcall NET_DVR_InquireFaceDBRecord(LONG lUserID, LPNET_VCA_DATARECORD_COND lpInBuf,fSearchDBCallBack cbInquireDBCallBack, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_GetInquireFaceDBProgress(LONG lInquireHandle, DWORD* pState); +NET_DVR_API BOOL __stdcall NET_DVR_UpdateFaceDBRecord(LONG lUserID, DWORD dwDataBaseID, LPNET_VCA_DATARECORD_INFO lpInBuf); +NET_DVR_API BOOL __stdcall NET_DVR_DeleteFaceDBRecord(LONG lUserID, DWORD dwDataBaseID, LPNET_VCA_DELETE_RECORD_COND lpInBuf); +typedef void(CALLBACK *fSearchDBCallBack)(LONG lSearchHandle, DWORD dwType, DWORD dwResultNum, BYTE* pBuffer, DWORD dwBufSize,void *pUser); +NET_DVR_API LONG __stdcall NET_DVR_SearchFaceDB(LONG lUserID, LPNET_VCA_SEARCH_FACEDB_COND lpInBuf,fSearchDBCallBack cbSearchDBCallBack, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_GetSearchFaceDBProgress(LONG lSearchHandle, DWORD* pState); +NET_DVR_API BOOL __stdcall NET_DVR_StopSearchDB(LONG lHandle); +NET_DVR_API BOOL __stdcall NET_DVR_FindMatchPicture(LONG lUserID, LPNET_VCA_FIND_MATCHPIC_COND lpFindCond, LPNET_VCA_FIND_MATCHPIC_RESULT lpFindResult); +NET_DVR_API BOOL __stdcall NET_DVR_RemoteControl(LONG lUserID, DWORD dwCommand, LPVOID lpInBuffer, DWORD dwInBufferSize); +NET_DVR_API LONG __stdcall NET_DVR_GetBMPByTime(LONG lUserID, LONG lChannel, NET_DVR_TIME const *lpTime, char const *sFilename); +NET_DVR_API BOOL __stdcall NET_DVR_CommandDevice(LONG lUserID, DWORD dwOutCommand, LPVOID lpInBuffer, DWORD dwInBufferSize); +NET_DVR_API BOOL __stdcall NET_DVR_TestDVRAlive(LONG lUserID); + +NET_DVR_API BOOL __stdcall NET_DVR_PicViewRequest(LONG lUserID, NET_DVR_PIC_VIEW_PARAM *lpPicViewParam); +typedef LONG (CALLBACK *PicViewCallBack)(LPNET_DVR_PICVIEW_CALLBACKPARAM pStruPicViewParam, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetPicViewResponseCallBack(PicViewCallBack fPicViewResponseCallBack, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetPicViewDataCallBack(LONG lPicViewHandle, SCREENPICDATACB fPicDataCallback, void *pUserData); +NET_DVR_API BOOL __stdcall NET_DVR_GetDevList(LONG lUserID, LPNET_DVR_DEVLIST lpDevListInfo); +NET_DVR_API BOOL __stdcall NET_DVR_GetScreenList(LONG lUserID, LPNET_DVR_SCREENLIST lpScreenListInfo); +NET_DVR_API BOOL __stdcall NET_DVR_SetScreenRelation(LONG lUserID, NET_DVR_DISP_SCREEN const* lpScreenInfo); +NET_DVR_API BOOL __stdcall NET_DVR_TextShowCtrl(LONG lUserID, DWORD dwDeviceIndex, LPNET_DVR_TEXTSHOW lpText); +NET_DVR_API LONG __stdcall NET_DVR_StartUpgrade(LONG lUserID, LPNET_DVR_OPERATE_DEVICE lpStruOperate, DVCS_UPGRADESTATE_CB UpgradeStateCallback, void *pUserData); +NET_DVR_API BOOL __stdcall NET_DVR_StopUpgrade(LONG lUserID, LPNET_DVR_OPERATE_DEVICE lpStruOperate, LONG lUpgradeHandle); +NET_DVR_API BOOL __stdcall NET_DVR_AddNetSignal(LONG lUserID, LPNET_DVR_NETSIGNAL_INFO lpStruSignal, void* lpOutBuf , DWORD dwBufLen); +NET_DVR_API LONG __stdcall NET_DVR_StartPicPreview(LONG lUserID, NET_DVR_START_PIC_VIEW_INFO const* lpStruStartPicView, SCREENPICDATACB PicDataCallback, void *pUserData); +NET_DVR_API BOOL __stdcall NET_DVR_GetDeviceStatus(LONG lUserID, DWORD dwCommand, DWORD dwCount, LPVOID lpInBuffer, DWORD dwInBufferSize, LPVOID lpStatusList, LPVOID lpOutBuffer, DWORD dwOutBufferSize); +NET_DVR_API BOOL __stdcall NET_DVR_GetPlanList(LONG lUserID, DWORD dwDevNum, LPNET_DVR_PLAN_LIST lpPlanList); +NET_DVR_API BOOL __stdcall NET_DVR_GetInputSignalList(LONG lUserID, DWORD dwDevNum, LPNET_DVR_INPUT_SIGNAL_LIST lpInputSignalList); +NET_DVR_API BOOL __stdcall NET_DVR_GetInputSignalList_V40(LONG lUserID, DWORD dwDevNum, LPNET_DVR_INPUT_SIGNAL_LIST lpInputSignalList); + +NET_DVR_API LONG __stdcall NET_DVR_UploadFile(LONG lUserID, DWORD dwUploadType, LPVOID lpInBuffer, DWORD dwInBufferSize, char* sFileName); +NET_DVR_API LONG __stdcall NET_DVR_UploadFile_V40(LONG lUserID, DWORD dwUploadType, LPVOID lpInBuffer, DWORD dwInBufferSize, char const * sFileName, LPVOID lpOutBuffer, DWORD dwOutBufferSize); +NET_DVR_API LONG __stdcall NET_DVR_GetUploadState(LONG lUploadHandle, LPDWORD pProgress); +NET_DVR_API BOOL __stdcall NET_DVR_GetUploadResult(LONG lUploadHandle, LPVOID lpOutBuffer, DWORD dwOutBufferSize); +NET_DVR_API BOOL __stdcall NET_DVR_UploadClose(LONG lUploadHandle); +NET_DVR_API LONG __stdcall NET_DVR_StartUploadFile(LONG lUserID, LPNET_DVR_UPLOAD_PARAM lpStruUploadParam); +NET_DVR_API LONG __stdcall NET_DVR_GetUploadFileProgress(LONG lFileHandle); +NET_DVR_API LONG __stdcall NET_DVR_GetUploadFileState(LONG lFileHandle); +NET_DVR_API BOOL __stdcall NET_DVR_StopUploadFile (LONG lFileHandle); +NET_DVR_API LONG __stdcall NET_DVR_StartDownloadFile(LONG lUserID, LPNET_DVR_DOWNLOAD_PARAM lpStruDownloadParam); +NET_DVR_API LONG __stdcall NET_DVR_GetDownloadFileProgress(LONG lFileHandle); +NET_DVR_API LONG __stdcall NET_DVR_GetDownloadFileState(LONG lFileHandle); +NET_DVR_API BOOL __stdcall NET_DVR_StopDownloadFile (LONG lFileHandle); +NET_DVR_API BOOL __stdcall NET_DVR_DownloadControl(LONG lDownloadHandle, NET_SDK_DOWNLOAD_CONTROL_TYPE_ENUM enumDownloadType, void* lpInBuffer, DWORD dwInBufferLen, void* lpOutBuffer, DWORD dwOutBufferLen); +NET_DVR_API LONG __stdcall NET_DVR_UploadSend(LONG lUploadHandle, const NET_DVR_SEND_PARAM_IN *pstruSendParamIN, void* lpOutBuffer); + + +NET_DVR_API BOOL __stdcall NET_DVR_GetMobileDevStatus(LONG lUserID, DWORD dwStatusType, LPNET_DVR_MB_MOBILEDEV_STATUS lpstruMobileDevStatus); +NET_DVR_API BOOL __stdcall NET_DVR_SetVoiceDataCallBack(LONG lVoiceComHandle, BOOL bNeedCBNoEncData, void(CALLBACK *fVoiceDataCallBack)(LONG lVoiceComHandle, char *pRecvDataBuffer, DWORD dwBufSize, BYTE byAudioFlag, void* pUser), void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetTransparentParam(LONG lUserID, char *sInBuffer, DWORD dwInSize); +NET_DVR_API BOOL __stdcall NET_DVR_GetTransparentParam(LONG lUserID, char *sInBuffer, DWORD dwInSize, char *sOutBuffer, DWORD dwOutSize); + +NET_DVR_API BOOL __stdcall NET_DVR_SetSDKLocalConfig(LPNET_DVR_SDKLOCAL_CFG lpSdkLocalCfg); +NET_DVR_API BOOL __stdcall NET_DVR_GetSDKLocalConfig(LPNET_DVR_SDKLOCAL_CFG lpSdkLocalCfg); + +NET_DVR_API BOOL __stdcall NET_DVR_SetSDKLocalCfg(NET_SDK_LOCAL_CFG_TYPE enumType, const void *lpInBuff); +NET_DVR_API BOOL __stdcall NET_DVR_GetSDKLocalCfg(NET_SDK_LOCAL_CFG_TYPE enumType, void* lpOutBuff); + +NET_DVR_API LONG __stdcall NET_DVR_OpticalUpgrade(LONG lUserID, char const *sFileName, LPNET_DVR_OPTICAL_INFO lpOpticalInfo); +typedef void(CALLBACK *fGPSDataCallback)(LONG nHandle, DWORD dwState, void* lpBuffer, DWORD dwBufLen, void* pUserData); +NET_DVR_API LONG __stdcall NET_DVR_GetVehicleGpsInfo(LONG nUserID, LPNET_DVR_GET_GPS_DATA_PARAM lpGPSDataParam, fGPSDataCallback cbGPSDataCallback, void* pUser); + +NET_DVR_API BOOL __stdcall NET_DVR_ClosePreview(LONG lUserID, DWORD nSessionID); +NET_DVR_API BOOL __stdcall NET_DVR_ClosePlayBack(LONG lUserID, DWORD nSessionID); +NET_DVR_API LONG __stdcall NET_DVR_RealPlay_V40(LONG lUserID, LPNET_DVR_PREVIEWINFO lpPreviewInfo, REALDATACALLBACK fRealDataCallBack_V30 = NULL, void* pUser = NULL); +NET_DVR_API LONG __stdcall NET_DVR_RealPlaySpecial(LONG lUserID, LPNET_DVR_PREVIEWINFO_SPECIAL lpPreviewInfo, REALDATACALLBACK fRealDataCallBack_V30 = NULL, void* pUser = NULL); +NET_DVR_API BOOL __stdcall NET_DVR_GetLinkAddr(LONG lLinkHandle, NET_DVR_LINK_KIND enumLinkKind, LPNET_DVR_LINK_ADDR lpLinkAddr); + +NET_DVR_API LONG __stdcall NET_DVR_StartDownload(LONG lUserID, DWORD dwDownloadType, LPVOID lpInBuffer, DWORD dwInBufferSize, const char *sFileName); +NET_DVR_API LONG __stdcall NET_DVR_GetDownloadState(LONG lDownloadHandle, LPDWORD pProgress); +NET_DVR_API int __stdcall NET_DVR_GetDownloadStateInfo(LONG lDownloadHandle, void* pStatusInfo); +NET_DVR_API BOOL __stdcall NET_DVR_StopDownload(LONG lHandle); + +NET_DVR_API BOOL __stdcall NET_DVR_MatrixStartDynamic_V41(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_PU_STREAM_CFG_V41 lpDynamicInfo); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetLoopDecChanInfo_V41(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_LOOP_DECINFO_V41 lpOuter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetLoopDecChanInfo_V41(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_LOOP_DECINFO_V41 lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDecChanInfo_V41(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_DEC_CHAN_INFO_V41 lpOuter); + +NET_DVR_API LONG __stdcall NET_DVR_StartT1Test(LONG lUserID, LPNET_DVR_ALARMHOST_DOWNLOAD_PARAM lpStruDownloadParam); +NET_DVR_API BOOL __stdcall NET_DVR_StopTT1Test(BOOL lHandle); +NET_DVR_API BOOL __stdcall NET_DVR_GetT1TestStatus(LONG lHandle, LONG *pStatus); +NET_DVR_API BOOL __stdcall NET_DVR_SendT1TestData(LONG lHandle, DWORD dwDataType, char *pSendBuf, DWORD dwSendBufLen); + +NET_DVR_API BOOL __stdcall NET_DVR_UploadLogo_NEW(LONG lUserID, DWORD dwLogoNo, LPNET_DVR_MATRIX_LOGO_INFO lpLogoInfo, char *sLogoBuffer); +NET_DVR_API BOOL __stdcall NET_DVR_DownloadLogo(LONG lUserID, DWORD dwLogoNo, LPNET_DVR_MATRIX_LOGO_INFO lpLogoInfo, char *sLogoBuffer, DWORD dwLogoBufferSize); +NET_DVR_API LONG __stdcall NET_DVR_StartPassiveTransCode(LONG lUserID, NET_DVR_STREAM_INFO const *pStreamInfo, NET_DVR_COMPRESSIONCFG_V30 const *pDstTransInfo, NET_DVR_PASSIVETRANSINFO const *pPassiveTransInfo, void(CALLBACK *fTransCodeDataCallBack) (LONG lPassiveHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void* pUser) = NULL, void* pUser = NULL); +NET_DVR_API BOOL __stdcall NET_DVR_TransCodeInputData(LONG lPassiveHandle, BYTE *pBuffer, DWORD dwBufSize); +NET_DVR_API BOOL __stdcall NET_DVR_StopPassiveTransCode(LONG lPassiveHandle); +NET_DVR_API LONG __stdcall NET_DVR_GetPassiveTransChanNum(LONG lPassiveHandle); +NET_DVR_API BOOL __stdcall NET_DVR_SetDeviceConfigEx(LONG lUserID, DWORD dwCommand, DWORD dwCount, NET_DVR_IN_PARAM *lpInParam, NET_DVR_OUT_PARAM *lpOutParam); + +NET_DVR_API BOOL __stdcall NET_DVR_GetSTDConfig(LONG lUserID, DWORD dwCommand, LPNET_DVR_STD_CONFIG lpConfigParam); +NET_DVR_API BOOL __stdcall NET_DVR_SetSTDConfig(LONG lUserID, DWORD dwCommand, LPNET_DVR_STD_CONFIG lpConfigParam); +NET_DVR_API BOOL __stdcall NET_DVR_GetSTDAbility(LONG lUserID, DWORD dwAbilityType, LPNET_DVR_STD_ABILITY lpAbilityParam); +NET_DVR_API BOOL __stdcall NET_DVR_STDControl(LONG lUserID, DWORD dwCommand, LPNET_DVR_STD_CONTROL lpControlParam); +NET_DVR_API BOOL __stdcall NET_DVR_STDXMLConfig(LONG lUserID, NET_DVR_XML_CONFIG_INPUT* lpInputParam, NET_DVR_XML_CONFIG_OUTPUT* lpOutputParam); +NET_DVR_API LONG __stdcall NET_DVR_Upgrade_V40(DWORD lUserID, DWORD dwUpgradeType, char const *sFileName, void *pInbuffer, DWORD dwBufferLen); +NET_DVR_API LONG __stdcall NET_DVR_Upgrade_V50(DWORD lUserID, LPNET_DVR_UPGRADE_PARAM lpUpgradeParam); + +NET_DVR_API BOOL __stdcall NET_DVR_DetectImage_V50(LONG lUserID, LPNET_VCA_FD_PROCIMG_CFG lpFDProcImg,LPNET_VCA_FD_PROCIMG_RESULT_V50 lpOutBuf); + +NET_DVR_API LONG __stdcall NET_DVR_SmartSearchPicture(LONG lUserID, NET_DVR_SMART_SEARCH_PIC_PARA * pFindParam); +NET_DVR_API LONG __stdcall NET_DVR_FindNextSmartPicture(LONG lFindHandle,LPNET_DVR_SMART_SEARCH_PIC_RET lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_CloseSmartSearchPicture(LONG lFindHandle); +NET_DVR_API BOOL __stdcall NET_DVR_SetESCallBack(LONG iRealHandle, void (__stdcall *fnESCallback)(LONG lPreviewHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void* pUser), void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetESRealPlayCallBack(LONG iRealHandle, void(__stdcall *fPlayESCallBack)(LONG lPreviewHandle, NET_DVR_PACKET_INFO_EX *pstruPackInfo, void* pUser), void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_ActivateDevice(char* sDVRIP, WORD wDVRPort, LPNET_DVR_ACTIVATECFG lpActivateCfg); +NET_DVR_API BOOL __stdcall NET_DVR_GetAddrInfoByServer(DWORD dwQueryType, void* pInBuf, DWORD dwInBufLen, void* pOutBuf, DWORD dwOutBufLen); +NET_DVR_API BOOL __stdcall NET_DVR_StartGetDevState(LPNET_DVR_CHECK_DEV_STATE pParams); +NET_DVR_API BOOL __stdcall NET_DVR_StopGetDevState(); +NET_DVR_API BOOL __stdcall NET_DVR_RigisterPlayBackDrawFun(LONG lPlayHandle, void (__stdcall *fDrawFun)(LONG lPlayHandle, HDC hDc, DWORD dwUser), DWORD dwUser); + +NET_DVR_API BOOL __stdcall NET_DVR_SetSDKInitCfg(NET_SDK_INIT_CFG_TYPE enumType, void* const lpInBuff); +NET_DVR_API BOOL __stdcall NET_DVR_ReleaseSDKMemPool(LPNET_DVR_SDKMEMPOOL_CFG lpSdkMemPoolCfg); + +NET_DVR_API BOOL __stdcall NET_DVR_CapturePictureBlock(LONG iRealHandle, char const *sPicFileName, DWORD dwTimeOut); + + +NET_DVR_API BOOL __stdcall NET_DVR_CapturePictureBlock_New(LONG iRealHandle, char *pPicBuf, DWORD dwPicSize, DWORD *lpSizeReturned); + +NET_DVR_API BOOL __stdcall NET_DVR_ChangeWndResolution(LONG iRealHandle); + +NET_DVR_API LONG __stdcall NET_DVR_SDKChannelToISAPI(LONG lUserID, LONG lInChannel, BOOL bSDKToISAPI); + +NET_DVR_API BOOL __stdcall NET_DVR_STDXMLConfig_Conv(LONG lUserID, NET_DVR_XML_CONFIG_INPUT* lpInputParam, NET_DVR_XML_CONFIG_OUTPUT* lpOutputParam); + +NET_DVR_API BOOL __stdcall NET_DVR_SetDevXmlLen(LONG lUserID, const WORD wDevXmlLen); + +NET_DVR_API LONG __stdcall NET_DVR_SetupAlarmChan_V50(LONG iUserID, LPNET_DVR_SETUPALARM_PARAM_V50 lpSetupParam, char *pSub, DWORD dwSubSize); + +NET_DVR_API BOOL __stdcall NET_DVR_GetAlarmSubscribe(LONG lAlarmHandle, char *pData, DWORD dwDataLen); + +NET_DVR_API BOOL __stdcall NET_DVR_SetAlarmSubscribe(LONG lAlarmHandle, char *pData, DWORD dwDataLen); + +NET_DVR_API BOOL __stdcall NET_DVR_GetNPQStat(LONG lHandle, NET_SDK_NPQ_STATE* pStruStat); + +NET_DVR_API BOOL __stdcall NET_DVR_SetNPQNotifyParam(LONG lHandle, NET_SDK_NPQ_NOTIFY_PARAM* pNotifyParam); + +NET_DVR_API BOOL __stdcall NET_DVR_PlaybackGetNPQStat(LONG lHandle, NET_SDK_NPQ_STATE* pStruStat); +NET_DVR_API BOOL __stdcall NET_DVR_RenderPrivateData(LONG lRealHandle, int iIntelType, BOOL bTrue); +NET_DVR_API BOOL __stdcall NET_DVR_RenderPrivateDataEx(LONG lRealHandle, int iIntelType, int iSubType, BOOL bTrue); + +NET_DVR_API BOOL __stdcall NET_DVR_PlaybackSetNPQNotifyParam(LONG lHandle, NET_SDK_NPQ_NOTIFY_PARAM* pNotifyParam); + +NET_DVR_API BOOL __stdcall NET_DVR_EnableRelogon(BOOL bEnable, DWORD dwReserved); + +NET_DVR_API LONG __stdcall NET_DVR_CreateEzvizUser(LPNET_DVR_EZVIZ_USER_LOGIN_INFO pLoginInfo, LPNET_DVR_DEVICEINFO_V30 pDeviceInfo); +NET_DVR_API BOOL __stdcall NET_DVR_DeleteEzvizUser(LONG iUserID); + +NET_DVR_API LONG __stdcall NET_DVR_CreateOpenEzvizUser(LPNET_DVR_OPEN_EZVIZ_USER_LOGIN_INFO pLoginInfo, LPNET_DVR_DEVICEINFO_V40 pDeviceInfo); +NET_DVR_API BOOL __stdcall NET_DVR_DeleteOpenEzvizUser(LONG iUserID); + +NET_DVR_API BOOL __stdcall NET_DVR_LoadAdditionalLib(ADDITIONAL_LIB libType, char const *sDllName); + +#endif // + diff --git a/src/include/Hik/amd64/plaympeg4.h b/src/include/Hik/amd64/plaympeg4.h new file mode 100644 index 0000000..6314b29 --- /dev/null +++ b/src/include/Hik/amd64/plaympeg4.h @@ -0,0 +1,760 @@ +#ifndef _PLAYM4_H_ +#define _PLAYM4_H_ + +#if defined( _WINDLL) + #define PLAYM4_API extern "C" __declspec(dllexport) +#else + #define PLAYM4_API extern "C" __declspec(dllimport) +#endif + +//Max channel numbers +#define PLAYM4_MAX_SUPPORTS 500 +//Wave coef range; +#define MIN_WAVE_COEF -100 +#define MAX_WAVE_COEF 100 + +//Timer type +#define TIMER_1 1 //Only 16 timers for every process.Default TIMER; +#define TIMER_2 2 //Not limit;But the precision less than TIMER_1; + +//BUFFER AND DATA TYPE +#define BUF_VIDEO_SRC (1) //mixed input,total src buffer size;splited input,video src buffer size +#define BUF_AUDIO_SRC (2) //mixed input,not defined;splited input,audio src buffer size +#define BUF_VIDEO_RENDER (3) //video render node count +#define BUF_AUDIO_RENDER (4) //audio render node count +#define BUF_VIDEO_DECODED (5) //video decoded node count to render +#define BUF_AUDIO_DECODED (6) //audio decoded node count to render +#define BUF_DISPLAY_NODE (7) //display node + +//Error code +#define PLAYM4_NOERROR 0 //no error +#define PLAYM4_PARA_OVER 1 //input parameter is invalid; +#define PLAYM4_ORDER_ERROR 2 //The order of the function to be called is error. +#define PLAYM4_TIMER_ERROR 3 //Create multimedia clock failed; +#define PLAYM4_DEC_VIDEO_ERROR 4 //Decode video data failed. +#define PLAYM4_DEC_AUDIO_ERROR 5 //Decode audio data failed. +#define PLAYM4_ALLOC_MEMORY_ERROR 6 //Allocate memory failed. +#define PLAYM4_OPEN_FILE_ERROR 7 //Open the file failed. +#define PLAYM4_CREATE_OBJ_ERROR 8 //Create thread or event failed +#define PLAYM4_CREATE_DDRAW_ERROR 9 //Create DirectDraw object failed. +#define PLAYM4_CREATE_OFFSCREEN_ERROR 10 //failed when creating off-screen surface. +#define PLAYM4_BUF_OVER 11 //buffer is overflow +#define PLAYM4_CREATE_SOUND_ERROR 12 //failed when creating audio device. +#define PLAYM4_SET_VOLUME_ERROR 13 //Set volume failed +#define PLAYM4_SUPPORT_FILE_ONLY 14 //The function only support play file. +#define PLAYM4_SUPPORT_STREAM_ONLY 15 //The function only support play stream. +#define PLAYM4_SYS_NOT_SUPPORT 16 //System not support. +#define PLAYM4_FILEHEADER_UNKNOWN 17 //No file header. +#define PLAYM4_VERSION_INCORRECT 18 //The version of decoder and encoder is not adapted. +#define PLAYM4_INIT_DECODER_ERROR 19 //Initialize decoder failed. +#define PLAYM4_CHECK_FILE_ERROR 20 //The file data is unknown. +#define PLAYM4_INIT_TIMER_ERROR 21 //Initialize multimedia clock failed. +#define PLAYM4_BLT_ERROR 22 //Blt failed. +#define PLAYM4_UPDATE_ERROR 23 //Update failed. +#define PLAYM4_OPEN_FILE_ERROR_MULTI 24 //openfile error, streamtype is multi +#define PLAYM4_OPEN_FILE_ERROR_VIDEO 25 //openfile error, streamtype is video +#define PLAYM4_JPEG_COMPRESS_ERROR 26 //JPEG compress error +#define PLAYM4_EXTRACT_NOT_SUPPORT 27 //Don't support the version of this file. +#define PLAYM4_EXTRACT_DATA_ERROR 28 //extract video data failed. +#define PLAYM4_SECRET_KEY_ERROR 29 //Secret key is error //add 20071218 +#define PLAYM4_DECODE_KEYFRAME_ERROR 30 //add by hy 20090318 +#define PLAYM4_NEED_MORE_DATA 31 //add by hy 20100617 +#define PLAYM4_INVALID_PORT 32 //add by cj 20100913 +#define PLAYM4_NOT_FIND 33 //add by cj 20110428 +#define PLAYM4_NEED_LARGER_BUFFER 34 //add by pzj 20130528 +#define PLAYM4_FAIL_UNKNOWN 99 //Fail, but the reason is unknown; + +//۹ܴ +#define PLAYM4_FEC_ERR_ENABLEFAIL 100 // ģʧ +#define PLAYM4_FEC_ERR_NOTENABLE 101 // ģûм +#define PLAYM4_FEC_ERR_NOSUBPORT 102 // Ӷ˿ûз +#define PLAYM4_FEC_ERR_PARAMNOTINIT 103 // ûгʼӦ˿ڵIJ +#define PLAYM4_FEC_ERR_SUBPORTOVER 104 // Ӷ˿Ѿ +#define PLAYM4_FEC_ERR_EFFECTNOTSUPPORT 105 // ðװʽЧ֧ +#define PLAYM4_FEC_ERR_INVALIDWND 106 // ǷĴ +#define PLAYM4_FEC_ERR_PTZOVERFLOW 107 // PTZλԽ +#define PLAYM4_FEC_ERR_RADIUSINVALID 108 // ԲIJǷ +#define PLAYM4_FEC_ERR_UPDATENOTSUPPORT 109 // ָİװʽͽЧò²֧ +#define PLAYM4_FEC_ERR_NOPLAYPORT 110 // ſ˿û +#define PLAYM4_FEC_ERR_PARAMVALID 111 // Ϊ +#define PLAYM4_FEC_ERR_INVALIDPORT 112 // ǷӶ˿ +#define PLAYM4_FEC_ERR_PTZZOOMOVER 113 // PTZΧԽ +#define PLAYM4_FEC_ERR_OVERMAXPORT 114 // ֵ֧ͨͣĽͨΪĸ +#define PLAYM4_FEC_ERR_ENABLED 115 //ö˿Ѿģ +#define PLAYM4_FEC_ERR_D3DACCENOTENABLE 116 // D3Dûп + + +//Max display regions. +#define MAX_DISPLAY_WND 4 + +//Display type +#define DISPLAY_NORMAL 0x00000001 +#define DISPLAY_QUARTER 0x00000002 +#define DISPLAY_YC_SCALE 0x00000004 //add by gb 20091116 +#define DISPLAY_NOTEARING 0x00000008 +//Display buffers +#define MAX_DIS_FRAMES 50 +#define MIN_DIS_FRAMES 1 + +//Locate by +#define BY_FRAMENUM 1 +#define BY_FRAMETIME 2 + +//Source buffer +#define SOURCE_BUF_MAX 1024*100000 +#define SOURCE_BUF_MIN 1024*50 + +//Stream type +#define STREAME_REALTIME 0 +#define STREAME_FILE 1 + +//frame type +#define T_AUDIO16 101 +#define T_AUDIO8 100 +#define T_UYVY 1 +#define T_YV12 3 +#define T_RGB32 7 + +//capability +#define SUPPORT_DDRAW 1 +#define SUPPORT_BLT 2 +#define SUPPORT_BLTFOURCC 4 +#define SUPPORT_BLTSHRINKX 8 +#define SUPPORT_BLTSHRINKY 16 +#define SUPPORT_BLTSTRETCHX 32 +#define SUPPORT_BLTSTRETCHY 64 +#define SUPPORT_SSE 128 +#define SUPPORT_MMX 256 + +// º궨HIK_MEDIAINFOṹ +#define FOURCC_HKMI 0x484B4D49 // "HKMI" HIK_MEDIAINFOṹ +// ϵͳװʽ +#define SYSTEM_NULL 0x0 // ûϵͳ㣬ƵƵ +#define SYSTEM_HIK 0x1 // ļ +#define SYSTEM_MPEG2_PS 0x2 // PSװ +#define SYSTEM_MPEG2_TS 0x3 // TSװ +#define SYSTEM_RTP 0x4 // rtpװ +#define SYSTEM_RTPHIK 0x401 // rtpװ + +// Ƶ +#define VIDEO_NULL 0x0 // ûƵ +#define VIDEO_H264 0x1 // H.264 +#define VIDEO_MPEG4 0x3 // ׼MPEG4 +#define VIDEO_MJPEG 0x4 +#define VIDEO_AVC264 0x0100 + +// Ƶ +#define AUDIO_NULL 0x0000 // ûƵ +#define AUDIO_ADPCM 0x1000 // ADPCM +#define AUDIO_MPEG 0x2000 // MPEG ϵƵӦMPEGƵ +#define AUDIO_AAC 0X2001 // AAC +// GϵƵ +#define AUDIO_RAW_DATA8 0x7000 //Ϊ8kԭʼ +#define AUDIO_RAW_UDATA16 0x7001 //Ϊ16kԭʼݣL16 +#define AUDIO_G711_U 0x7110 +#define AUDIO_G711_A 0x7111 +#define AUDIO_G722_1 0x7221 +#define AUDIO_G723_1 0x7231 +#define AUDIO_G726_U 0x7260 +#define AUDIO_G726_A 0x7261 +#define AUDIO_G726_16 0x7262 +#define AUDIO_G729 0x7290 +#define AUDIO_AMR_NB 0x3000 + +#define SYNCDATA_VEH 1 //ͬ:Ϣ +#define SYNCDATA_IVS 2 //ͬ:Ϣ + +//motion flow type +#define MOTION_FLOW_NONE 0 +#define MOTION_FLOW_CPU 1 +#define MOTION_FLOW_GPU 2 + +//Ƶ +#define ENCRYPT_AES_3R_VIDEO 1 +#define ENCRYPT_AES_10R_VIDEO 2 +#define ENCRYPT_AES_3R_AUDIO 1 +#define ENCRYPT_AES_10R_AUDIO 2 + +//Frame position +typedef struct{ + long nFilePos; + long nFrameNum; + long nFrameTime; + long nErrorFrameNum; + SYSTEMTIME *pErrorTime; + long nErrorLostFrameNum; + long nErrorFrameSize; +}FRAME_POS,*PFRAME_POS; + +//Frame Info +typedef struct{ + long nWidth; + long nHeight; + long nStamp; + long nType; + long nFrameRate; + DWORD dwFrameNum; +}FRAME_INFO; + +typedef struct +{ + long nPort; //ͨ + char *pBuf; //صĵһ·ͼָ + unsigned int nBufLen; //صĵһ·ͼݴС + char *pBuf1; //صĵڶ·ͼָ + unsigned int nBufLen1; //صĵڶ·ͼݴС + char *pBuf2; //صĵ·ͼָ + unsigned int nBufLen2; //صĵ·ͼݴС + unsigned int nWidth; // + unsigned int nHeight; // + unsigned int nStamp; //ʱϢλ + unsigned int nType; // + void *pUser; //û + unsigned int reserved[4]; // +}DISPLAY_INFO_YUV; + +//Frame +typedef struct{ + char *pDataBuf; + long nSize; + long nFrameNum; + BOOL bIsAudio; + long nReserved; +}FRAME_TYPE; + +//Watermark Info //add by gb 080119 +typedef struct{ + char *pDataBuf; + long nSize; + long nFrameNum; + BOOL bRsaRight; + long nReserved; +}WATERMARK_INFO; + +typedef struct SYNCDATA_INFO +{ + DWORD dwDataType; //ͬĸϢͣĿǰУϢϢ + DWORD dwDataLen; //Ϣݳ + BYTE* pData; //ָϢݽṹָ,IVS_INFOṹ +} SYNCDATA_INFO; + +#ifndef _HIK_MEDIAINFO_FLAG_ +#define _HIK_MEDIAINFO_FLAG_ +typedef struct _HIK_MEDIAINFO_ // modified by gb 080425 +{ + unsigned int media_fourcc; // "HKMI": 0x484B4D49 Hikvision Media Information + unsigned short media_version; // 汾ţָϢṹ汾ţĿǰΪ0x0101,1.01汾01汾ţ01Ӱ汾š + unsigned short device_id; // 豸IDڸ/ + + unsigned short system_format; // ϵͳװ + unsigned short video_format; // Ƶ + + unsigned short audio_format; // Ƶ + unsigned char audio_channels; // ͨ + unsigned char audio_bits_per_sample; // λ + unsigned int audio_samplesrate; // + unsigned int audio_bitrate; // ѹƵ,λbit + + unsigned int reserved[4]; // +}HIK_MEDIAINFO; +#endif + +typedef struct +{ + long nPort; + char * pBuf; + long nBufLen; + long nWidth; + long nHeight; + long nStamp; + long nType; + long nUser; +}DISPLAY_INFO; + +typedef struct +{ + long nPort; + char *pVideoBuf; + long nVideoBufLen; + char *pPriBuf; + long nPriBufLen; + long nWidth; + long nHeight; + long nStamp; + long nType; + long nUser; +}DISPLAY_INFOEX; + +typedef struct PLAYM4_SYSTEM_TIME //ʱ +{ + DWORD dwYear; // + DWORD dwMon; // + DWORD dwDay; // + DWORD dwHour; //ʱ + DWORD dwMin; // + DWORD dwSec; // + DWORD dwMs; // +} PLAYM4_SYSTEM_TIME; + +//ENCRYPT Info +typedef struct{ + long nVideoEncryptType; //Ƶ + long nAudioEncryptType; //Ƶ + long nSetSecretKey; //Ƿã1ʾԿ0ʾûԿ +}ENCRYPT_INFO; + +////////////////////////////////////////////////////////////////////////////// +//API +////////////////////////////////////////////////////////////////////////////// + +////////////////ver 1.0/////////////////////////////////////// +//Initialize DirecDraw.Now invalid. +PLAYM4_API BOOL __stdcall PlayM4_InitDDraw(HWND hWnd); +//Release directDraw; Now invalid. +PLAYM4_API BOOL __stdcall PlayM4_RealeseDDraw(); +PLAYM4_API BOOL __stdcall PlayM4_OpenFile(LONG nPort,LPSTR sFileName); +PLAYM4_API BOOL __stdcall PlayM4_CloseFile(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_Play(LONG nPort, HWND hWnd); +PLAYM4_API BOOL __stdcall PlayM4_Stop(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_Pause(LONG nPort,DWORD nPause); +PLAYM4_API BOOL __stdcall PlayM4_Fast(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_Slow(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_OneByOne(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_SetPlayPos(LONG nPort,float fRelativePos); +PLAYM4_API float __stdcall PlayM4_GetPlayPos(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_SetFileEndMsg(LONG nPort,HWND hWnd,UINT nMsg); +PLAYM4_API BOOL __stdcall PlayM4_SetVolume(LONG nPort,WORD nVolume); +PLAYM4_API BOOL __stdcall PlayM4_StopSound(); +PLAYM4_API BOOL __stdcall PlayM4_PlaySound(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_OpenStream(LONG nPort,PBYTE pFileHeadBuf,DWORD nSize,DWORD nBufPoolSize); +PLAYM4_API BOOL __stdcall PlayM4_InputData(LONG nPort,PBYTE pBuf,DWORD nSize); +PLAYM4_API BOOL __stdcall PlayM4_CloseStream(LONG nPort); +PLAYM4_API int __stdcall PlayM4_GetCaps(); +PLAYM4_API DWORD __stdcall PlayM4_GetFileTime(LONG nPort); +PLAYM4_API DWORD __stdcall PlayM4_GetPlayedTime(LONG nPort); +PLAYM4_API DWORD __stdcall PlayM4_GetPlayedFrames(LONG nPort); + +//23 +////////////////ver 2.0 added/////////////////////////////////////// +PLAYM4_API BOOL __stdcall PlayM4_SetDecCallBack(LONG nPort,void (CALLBACK* DecCBFun)(long nPort,char * pBuf,long nSize,FRAME_INFO * pFrameInfo, long nReserved1,long nReserved2)); +PLAYM4_API BOOL __stdcall PlayM4_SetDisplayCallBackYUV(LONG nPort, void (CALLBACK* DisplayCBFun)(DISPLAY_INFO_YUV *pstDisplayInfo), BOOL bTrue, void* pUser); +PLAYM4_API BOOL __stdcall PlayM4_SetDisplayCallBack(LONG nPort,void (CALLBACK* DisplayCBFun)(long nPort,char * pBuf,long nSize,long nWidth,long nHeight,long nStamp,long nType,long nReserved)); +PLAYM4_API BOOL __stdcall PlayM4_ConvertToBmpFile(char * pBuf,long nSize,long nWidth,long nHeight,long nType,char *sFileName); +PLAYM4_API DWORD __stdcall PlayM4_GetFileTotalFrames(LONG nPort); +PLAYM4_API DWORD __stdcall PlayM4_GetCurrentFrameRate(LONG nPort); +PLAYM4_API DWORD __stdcall PlayM4_GetPlayedTimeEx(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_SetPlayedTimeEx(LONG nPort,DWORD nTime); +PLAYM4_API DWORD __stdcall PlayM4_GetCurrentFrameNum(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_SetStreamOpenMode(LONG nPort,DWORD nMode); +PLAYM4_API DWORD __stdcall PlayM4_GetFileHeadLength(); +PLAYM4_API DWORD __stdcall PlayM4_GetSdkVersion(); +//11 +////////////////ver 2.2 added/////////////////////////////////////// +PLAYM4_API DWORD __stdcall PlayM4_GetLastError(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_RefreshPlay(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_SetOverlayMode(LONG nPort,BOOL bOverlay,COLORREF colorKey); +PLAYM4_API BOOL __stdcall PlayM4_GetPictureSize(LONG nPort,LONG *pWidth,LONG *pHeight); +PLAYM4_API BOOL __stdcall PlayM4_SetPicQuality(LONG nPort,BOOL bHighQuality); +PLAYM4_API BOOL __stdcall PlayM4_PlaySoundShare(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_StopSoundShare(LONG nPort); +//7 +////////////////ver 2.4 added/////////////////////////////////////// +PLAYM4_API LONG __stdcall PlayM4_GetStreamOpenMode(LONG nPort); +PLAYM4_API LONG __stdcall PlayM4_GetOverlayMode(LONG nPort); +PLAYM4_API COLORREF __stdcall PlayM4_GetColorKey(LONG nPort); +PLAYM4_API WORD __stdcall PlayM4_GetVolume(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_GetPictureQuality(LONG nPort,BOOL *bHighQuality); +PLAYM4_API DWORD __stdcall PlayM4_GetSourceBufferRemain(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_ResetSourceBuffer(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_SetSourceBufCallBack(LONG nPort,DWORD nThreShold,void (CALLBACK * SourceBufCallBack)(long nPort,DWORD nBufSize,DWORD dwUser,void*pResvered),DWORD dwUser,void *pReserved); +PLAYM4_API BOOL __stdcall PlayM4_ResetSourceBufFlag(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_SetDisplayBuf(LONG nPort,DWORD nNum); +PLAYM4_API DWORD __stdcall PlayM4_GetDisplayBuf(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_OneByOneBack(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_SetFileRefCallBack(LONG nPort, void (__stdcall *pFileRefDone)(DWORD nPort,DWORD nUser),DWORD nUser); +PLAYM4_API BOOL __stdcall PlayM4_SetCurrentFrameNum(LONG nPort,DWORD nFrameNum); +PLAYM4_API BOOL __stdcall PlayM4_GetKeyFramePos(LONG nPort,DWORD nValue, DWORD nType, PFRAME_POS pFramePos); +PLAYM4_API BOOL __stdcall PlayM4_GetNextKeyFramePos(LONG nPort,DWORD nValue, DWORD nType, PFRAME_POS pFramePos); +#if (WINVER >= 0x0400) +//Note: These funtion must be builded under win2000 or above with Microsoft Platform sdk. +// You can download the sdk from "http://www.microsoft.com/msdownload/platformsdk/sdkupdate/"; +PLAYM4_API BOOL __stdcall PlayM4_InitDDrawDevice(); +PLAYM4_API void __stdcall PlayM4_ReleaseDDrawDevice(); +PLAYM4_API DWORD __stdcall PlayM4_GetDDrawDeviceTotalNums(); +PLAYM4_API BOOL __stdcall PlayM4_SetDDrawDevice(LONG nPort,DWORD nDeviceNum); +//PLAYM4_API BOOL __stdcall PlayM4_GetDDrawDeviceInfo(DWORD nDeviceNum,LPSTR lpDriverDescription,DWORD nDespLen,LPSTR lpDriverName ,DWORD nNameLen,HMONITOR *hhMonitor); +PLAYM4_API int __stdcall PlayM4_GetCapsEx(DWORD nDDrawDeviceNum); +#endif +PLAYM4_API BOOL __stdcall PlayM4_ThrowBFrameNum(LONG nPort,DWORD nNum); +//23 +////////////////ver 2.5 added/////////////////////////////////////// +PLAYM4_API BOOL __stdcall PlayM4_SetDisplayType(LONG nPort,LONG nType); +PLAYM4_API long __stdcall PlayM4_GetDisplayType(LONG nPort); +//2 +////////////////ver 3.0 added/////////////////////////////////////// +PLAYM4_API BOOL __stdcall PlayM4_SetDecCBStream(LONG nPort,DWORD nStream); +PLAYM4_API BOOL __stdcall PlayM4_SetDisplayRegion(LONG nPort,DWORD nRegionNum, RECT *pSrcRect, HWND hDestWnd, BOOL bEnable); +PLAYM4_API BOOL __stdcall PlayM4_RefreshPlayEx(LONG nPort,DWORD nRegionNum); +#if (WINVER >= 0x0400) +//Note: The funtion must be builded under win2000 or above with Microsoft Platform sdk. +// You can download the sdk from http://www.microsoft.com/msdownload/platformsdk/sdkupdate/; +PLAYM4_API BOOL __stdcall PlayM4_SetDDrawDeviceEx(LONG nPort,DWORD nRegionNum,DWORD nDeviceNum); +#endif +//4 +/////////////////v3.2 added///////////////////////////////////////// + +PLAYM4_API BOOL __stdcall PlayM4_GetRefValue(LONG nPort,BYTE *pBuffer, DWORD *pSize); +PLAYM4_API BOOL __stdcall PlayM4_SetRefValue(LONG nPort,BYTE *pBuffer, DWORD nSize); +PLAYM4_API BOOL __stdcall PlayM4_OpenStreamEx(LONG nPort,PBYTE pFileHeadBuf,DWORD nSize,DWORD nBufPoolSize); +PLAYM4_API BOOL __stdcall PlayM4_CloseStreamEx(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_InputVideoData(LONG nPort,PBYTE pBuf,DWORD nSize); +PLAYM4_API BOOL __stdcall PlayM4_InputAudioData(LONG nPort,PBYTE pBuf,DWORD nSize); +PLAYM4_API BOOL __stdcall PlayM4_RegisterDrawFun(LONG nPort,void (CALLBACK* DrawFun)(long nPort,HDC hDc,LONG nUser),LONG nUser); +PLAYM4_API BOOL __stdcall PlayM4_RigisterDrawFun(LONG nPort,void (CALLBACK* DrawFun)(long nPort,HDC hDc,LONG nUser),LONG nUser); +//8 +//////////////////v3.4///////////////////////////////////////////////////// +PLAYM4_API BOOL __stdcall PlayM4_SetTimerType(LONG nPort,DWORD nTimerType,DWORD nReserved); +PLAYM4_API BOOL __stdcall PlayM4_GetTimerType(LONG nPort,DWORD *pTimerType,DWORD *pReserved); +PLAYM4_API BOOL __stdcall PlayM4_ResetBuffer(LONG nPort,DWORD nBufType); +PLAYM4_API DWORD __stdcall PlayM4_GetBufferValue(LONG nPort,DWORD nBufType); + +//////////////////V3.6///////////////////////////////////////////////////////// +PLAYM4_API BOOL __stdcall PlayM4_AdjustWaveAudio(LONG nPort,LONG nCoefficient); +PLAYM4_API BOOL __stdcall PlayM4_SetVerifyCallBack(LONG nPort, DWORD nBeginTime, DWORD nEndTime, void (__stdcall * funVerify)(long nPort, FRAME_POS * pFilePos, DWORD bIsVideo, DWORD nUser), DWORD nUser); +PLAYM4_API BOOL __stdcall PlayM4_SetAudioCallBack(LONG nPort, void (__stdcall * funAudio)(long nPort, char * pAudioBuf, long nSize, long nStamp, long nType, long nUser), long nUser); +PLAYM4_API BOOL __stdcall PlayM4_SetEncTypeChangeCallBack(LONG nPort,void(CALLBACK *funEncChange)(long nPort,long nUser),long nUser); +PLAYM4_API BOOL __stdcall PlayM4_SetColor(LONG nPort, DWORD nRegionNum, int nBrightness, int nContrast, int nSaturation, int nHue); +PLAYM4_API BOOL __stdcall PlayM4_GetColor(LONG nPort, DWORD nRegionNum, int *pBrightness, int *pContrast, int *pSaturation, int *pHue); +PLAYM4_API BOOL __stdcall PlayM4_SetEncChangeMsg(LONG nPort,HWND hWnd,UINT nMsg); +PLAYM4_API BOOL __stdcall PlayM4_GetOriginalFrameCallBack(LONG nPort, BOOL bIsChange,BOOL bNormalSpeed,long nStartFrameNum,long nStartStamp,long nFileHeader,void(CALLBACK *funGetOrignalFrame)(long nPort,FRAME_TYPE *frameType, long nUser),long nUser); +PLAYM4_API BOOL __stdcall PlayM4_GetFileSpecialAttr(LONG nPort, DWORD *pTimeStamp,DWORD *pFileNum ,DWORD *pReserved); +PLAYM4_API DWORD __stdcall PlayM4_GetSpecialData(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_SetCheckWatermarkCallBack(LONG nPort,void(CALLBACK* funCheckWatermark)(long nPort,WATERMARK_INFO* pWatermarkInfo,DWORD nUser),DWORD nUser); +PLAYM4_API BOOL __stdcall PlayM4_SetImageSharpen(LONG nPort,DWORD nLevel); +PLAYM4_API BOOL __stdcall PlayM4_SetDecodeFrameType(LONG nPort,DWORD nFrameType); +PLAYM4_API BOOL __stdcall PlayM4_SetPlayMode(LONG nPort,BOOL bNormal); +PLAYM4_API BOOL __stdcall PlayM4_SetOverlayFlipMode(LONG nPort,BOOL bTrue); +PLAYM4_API BOOL __stdcall PlayM4_SetOverlayPriInfoFlag(LONG nPort, DWORD nIntelType, BOOL bTrue,const char *pFontPath); + +//PLAYM4_API DWORD __stdcall PlayM4_GetAbsFrameNum(LONG nPort); + +//////////////////V4.7.0.0////////////////////////////////////////////////////// +////convert yuv to jpeg +PLAYM4_API BOOL __stdcall PlayM4_ConvertToJpegFile(char * pBuf,long nSize,long nWidth,long nHeight,long nType,char *sFileName); +PLAYM4_API BOOL __stdcall PlayM4_SetJpegQuality(long nQuality); +//set deflash +PLAYM4_API BOOL __stdcall PlayM4_SetDeflash(LONG nPort,BOOL bDefalsh); +//PLAYM4_API BOOL __stdcall PlayM4_SetDecCallBackEx(LONG nPort,void (CALLBACK* DecCBFun)(long nPort,char * pBuf,long nSize,FRAME_INFO * pFrameInfo, long nReserved1,long nReserved2), char* pDest, long nDestSize); +//////////////////V4.8.0.0///////////////////////////////////////////////////////// +//check discontinuous frame number as error data? +PLAYM4_API BOOL __stdcall PlayM4_CheckDiscontinuousFrameNum(LONG nPort, BOOL bCheck); +//get bmp or jpeg +PLAYM4_API BOOL __stdcall PlayM4_GetBMP(LONG nPort,PBYTE pBitmap,DWORD nBufSize,DWORD* pBmpSize); +PLAYM4_API BOOL __stdcall PlayM4_GetJPEG(LONG nPort,PBYTE pJpeg,DWORD nBufSize,DWORD* pJpegSize); +//dec call back mend +PLAYM4_API BOOL __stdcall PlayM4_SetDecCallBackMend(LONG nPort,void (CALLBACK* DecCBFun)(long nPort,char * pBuf,long nSize,FRAME_INFO * pFrameInfo, long nUser,long nReserved2), long nUser); +PLAYM4_API BOOL __stdcall PlayM4_SetSecretKey(LONG nPort, LONG lKeyType, char *pSecretKey, LONG lKeyLen); + +// add by gb 2007-12-23 +PLAYM4_API BOOL __stdcall PlayM4_SetFileEndCallback(LONG nPort, void(CALLBACK*FileEndCallback)(long nPort, void *pUser), void *pUser); + +// add by gb 080131 version 4.9.0.1 +PLAYM4_API BOOL __stdcall PlayM4_GetPort(LONG* nPort); +PLAYM4_API BOOL __stdcall PlayM4_FreePort(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_SetDisplayCallBackEx(LONG nPort,void (CALLBACK* DisplayCBFun)(DISPLAY_INFO *pstDisplayInfo), long nUser); +PLAYM4_API BOOL __stdcall PlayM4_SkipErrorData(LONG nPort, BOOL bSkip); +PLAYM4_API BOOL __stdcall PlayM4_SetDecCallBackExMend(LONG nPort, void (CALLBACK* DecCBFun)(long nPort, char* pBuf, long nSize, FRAME_INFO* pFrameInfo, + long nUser, long nReserved2), char* pDest, long nDestSize, long nUser); +//reverse play add by chenjie 110609 +PLAYM4_API BOOL __stdcall PlayM4_ReversePlay(LONG nPort); +PLAYM4_API BOOL __stdcall PlayM4_GetSystemTime(LONG nPort, PLAYM4_SYSTEM_TIME *pstSystemTime); + +//PLAYM4_API BOOL __stdcall PlayM4_SetDecodeERC(long nPort, unsigned int nLevel); + +#ifndef PLAYM4_SESSION_INFO_TAG +#define PLAYM4_SESSION_INFO_TAG +//nProtocolType +#define PLAYM4_PROTOCOL_RTSP 1 +//nSessionInfoType +#define PLAYM4_SESSION_INFO_SDP 1 + +typedef struct _PLAYM4_SESSION_INFO_ //Ϣṹ +{ + int nSessionInfoType; //ϢͣSDP纣˽Ϣͷ + int nSessionInfoLen; //Ϣ + unsigned char* pSessionInfoData; //Ϣ + +} PLAYM4_SESSION_INFO; +#endif + +PLAYM4_API BOOL __stdcall PlayM4_OpenStreamAdvanced(LONG nPort, int nProtocolType, PLAYM4_SESSION_INFO* pstSessionInfo, DWORD nBufPoolSize); + +#define R_ANGLE_0 -1 //ת +#define R_ANGLE_L90 0 //ת90 +#define R_ANGLE_R90 1 //ת90 +#define R_ANGLE_180 2 //ת180 + +PLAYM4_API BOOL __stdcall PlayM4_SetRotateAngle(LONG nPort, DWORD nRegionNum, DWORD dwType); + +#ifndef PLAYM4_ADDITION_INFO_TAG +#define PLAYM4_ADDITION_INFO_TAG +typedef struct _PLAYM4_ADDITION_INFO_ //Ϣṹ +{ + BYTE* pData; // + DWORD dwDatalen; //ݳ + DWORD dwDataType; // + DWORD dwTimeStamp; //ʱ +} PLAYM4_ADDITION_INFO; +#endif + +//dwGroupIndex Լȡֵ0~3һ汾ȡֻͬͬclosestream +PLAYM4_API BOOL __stdcall PlayM4_SetSycGroup(LONG nPort, DWORD dwGroupIndex); +//ݲʵִ˺ͬõʼʱ䲻һ£СʱΪ㣬ͬһֻһ· +PLAYM4_API BOOL __stdcall PlayM4_SetSycStartTime(LONG nPort, PLAYM4_SYSTEM_TIME *pstSystemTime); + + +// ʵصĽӿ +#ifndef FISH_EYE_TAG +#define FISH_EYE_TAG + +// װ +typedef enum tagFECPlaceType +{ + FEC_PLACE_WALL = 0x1, // װʽ (ˮƽ) + FEC_PLACE_FLOOR = 0x2, // 氲װ () + FEC_PLACE_CEILING = 0x3, // װʽ () + +}FECPLACETYPE; + +typedef enum tagFECCorrectType +{ + FEC_CORRECT_PTZ = 0x100, // PTZ + FEC_CORRECT_180 = 0x200, // 180Ƚ Ӧ2P + FEC_CORRECT_360 = 0x300, // 360ȫ Ӧ1P + FEC_CORRECT_LAT = 0x400 //γչ + +}FECCORRECTTYPE; + +typedef struct tagCycleParam +{ + float fRadiusLeft; // ԲX + float fRadiusRight; // ԲұX + float fRadiusTop; // ԲϱY + float fRadiusBottom; // Բ±Y + +}CYCLEPARAM; + +typedef struct tagPTZParam +{ + float fPTZPositionX; // PTZ ʾλ X + float fPTZPositionY; // PTZ ʾλ Y + +}PTZPARAM; + + +// +/********************************************* + + + ********************************************/ + + +// ±DZ + + +#define FEC_UPDATE_RADIUS 0x1 +#define FEC_UPDATE_PTZZOOM 0x2 +#define FEC_UPDATE_WIDESCANOFFSET 0x4 +#define FEC_UPDATE_PTZPARAM 0x8 + + +typedef struct tagFECParam +{ + + + unsigned int nUpDateType; // µ + + unsigned int nPlaceAndCorrect; // װʽͽʽֻڻȡSetParamʱЧ,ֵʾװʽͽʽĺ + + PTZPARAM stPTZParam; // PTZ УIJ + + CYCLEPARAM stCycleParam; // ͼԲIJ + + float fZoom; // PTZ ʾķΧ + + float fWideScanOffset; // 180360УƫƽǶ + + int nResver[16]; // ֶ + +}FISHEYEPARAM; + +typedef void (__stdcall * FISHEYE_CallBack )( void* pUser , unsigned int nSubPort , unsigned int nCBType , void * hDC , unsigned int nWidth , unsigned int nHeight); + +#endif +// +PLAYM4_API BOOL __stdcall PlayM4_FEC_Enable(LONG nPort); + +// رģ +PLAYM4_API BOOL __stdcall PlayM4_FEC_Disable(LONG nPort); + +// ȡ۽Ӷ˿ [1~31] +PLAYM4_API BOOL __stdcall PlayM4_FEC_GetPort(LONG nPort, unsigned int* nSubPort,FECPLACETYPE emPlaceType,FECCORRECTTYPE emCorrectType); + +// ɾ۽Ӷ˿ +PLAYM4_API BOOL __stdcall PlayM4_FEC_DelPort(LONG nPort , unsigned int nSubPort); + +// ۽ +PLAYM4_API BOOL __stdcall PlayM4_FEC_SetParam(LONG nPort , unsigned int nSubPort , FISHEYEPARAM * pPara); + +// ȡ۽ +PLAYM4_API BOOL __stdcall PlayM4_FEC_GetParam(LONG nPort , unsigned int nSubPort , FISHEYEPARAM * pPara); + +// ʾڣʱл +PLAYM4_API BOOL __stdcall PlayM4_FEC_SetWnd(LONG nPort , unsigned int nSubPort , void * hWnd); + +// ۴ڵĻͼص +PLAYM4_API BOOL __stdcall PlayM4_FEC_SetCallBack(LONG nPort , unsigned int nSubPort , FISHEYE_CallBack cbFunc , void * pUser); + +//motionflow +PLAYM4_API BOOL __stdcall PlayM4_MotionFlow(LONG nPort, DWORD dwAdjustType); + + +//ͼǿ +#ifndef PLAYM4_HIKVIE_TAG +#define PLAYM4_HIKVIE_TAG + +typedef struct _PLAYM4_VIE_DYNPARAM_ +{ + int moduFlag; //õ㷨ģ飬PLAYM4_VIE_MODULESж + // PLAYM4_VIE_MODU_ADJ | PLAYM4_VIE_MODU_EHAN + //ģú󣬱ӦIJ + //PLAYM4_VIE_MODU_ADJ + int brightVal; //ȵֵ[-255, 255] + int contrastVal; //Աȶȵֵ[-256, 255] + int colorVal; //Ͷȵֵ[-256, 255] + //PLAYM4_VIE_MODU_EHAN + int toneScale; //˲Χ[0, 100] + int toneGain; //ԱȶȵڣȫֶԱȶֵ[-256, 255] + int toneOffset; //ȵڣƽֵƫƣ[-255, 255] + int toneColor; //ɫڣɫֵ[-256, 255] + //PLAYM4_VIE_MODU_DEHAZE + int dehazeLevel; //ȥǿȣ[0, 255] + int dehazeTrans; //͸ֵ[0, 255] + int dehazeBright; //Ȳ[0, 255] + //PLAYM4_VIE_MODU_DENOISE + int denoiseLevel; //ȥǿȣ[0, 255] + //PLAYM4_VIE_MODU_SHARPEN + int usmAmount; //ǿȣ[0, 255] + int usmRadius; //񻯰뾶[1, 15] + int usmThreshold; //ֵ[0, 255] + //PLAYM4_VIE_MODU_DEBLOCK + int deblockLevel; //ȥǿȣ[0, 100] + //PLAYM4_VIE_MODU_LENS + int lensWarp; //[-256, 255] + int lensZoom; //[-256, 255] + //PLAYM4_VIE_MODU_CRB + //Ӧ +} PLAYM4_VIE_PARACONFIG; + +typedef enum _PLAYM4_VIE_MODULES +{ + PLAYM4_VIE_MODU_ADJ = 0x00000001, //ͼ + PLAYM4_VIE_MODU_EHAN = 0x00000002, //ֲǿģ + PLAYM4_VIE_MODU_DEHAZE = 0x00000004, //ȥģ + PLAYM4_VIE_MODU_DENOISE = 0x00000008, //ȥģ + PLAYM4_VIE_MODU_SHARPEN = 0x00000010, //ģ + PLAYM4_VIE_MODU_DEBLOCK = 0x00000020, //ȥ˲ģ + PLAYM4_VIE_MODU_CRB = 0x00000040, //ɫƽģ + PLAYM4_VIE_MODU_LENS = 0x00000080, //ͷģ +}PLAYM4_VIE_MODULES; +#endif + +//ùر/ģ +//dwModuFlagӦPLAYM4_VIE_MODULES, +//ģ鿪ģڼĬϵIJ; +//رģϴõIJ +//ӿڵãڸýӿڿģ󣻷򣬷ش +PLAYM4_API BOOL __stdcall PlayM4_VIE_SetModuConfig(LONG lPort,int nModuFlag,BOOL bEnable); + +//ͼǿNULLȫͼȫͼȫͼС16*16 +//֧Ƚ˵4һ汾ֻ֧һҪصصͱ +PLAYM4_API BOOL __stdcall PlayM4_VIE_SetRegion(LONG lPort,LONG lRegNum,RECT* pRect); + +//ȡģ +PLAYM4_API BOOL __stdcall PlayM4_VIE_GetModuConfig(LONG lPort,int* pdwModuFlag); + +//ò +//δģIJñ +PLAYM4_API BOOL __stdcall PlayM4_VIE_SetParaConfig(LONG lPort,PLAYM4_VIE_PARACONFIG* pParaConfig); + +//ȡģIJ +PLAYM4_API BOOL __stdcall PlayM4_VIE_GetParaConfig(LONG lPort,PLAYM4_VIE_PARACONFIG* pParaConfig); + +//Ƶͬӿ +PLAYM4_API BOOL __stdcall PlayM4_SyncToAudio(LONG nPort, BOOL bSyncToAudio); + +// ˽Ϣģ +typedef enum _PLAYM4_PRIDATA_RENDER +{ + PLAYM4_RENDER_ANA_INTEL_DATA = 0x00000001, //ܷ + PLAYM4_RENDER_MD = 0x00000002, //ƶ + PLAYM4_RENDER_ADD_POS = 0x00000004, //POSϢ + PLAYM4_RENDER_ADD_PIC = 0x00000008, //ͼƬ + PLAYM4_RENDER_FIRE_DETCET = 0x00000010, //ȳϢ + PLAYM4_RENDER_TEM = 0x00000020, //¶Ϣ + PLAYM4_RENDER_TRACK_TEM = 0x00000040, //켣Ϣ + PLAYM4_RENDER_THERMAL = 0x00000080 //̻Ϣ +}PLAYM4_PRIDATA_RENDER; + +typedef enum _PLAYM4_THERMAL_FLAG +{ + PLAYM4_THERMAL_FIREMASK = 0x00000001, //̻ + PLAYM4_THERMAL_RULEGAS = 0x00000002, // + PLAYM4_THERMAL_TARGETGAS = 0x00000004 //Ŀ +}PLAYM4_THERMAL_FLAG; + +typedef enum _PLAYM4_FIRE_ALARM{ + PLAYM4_FIRE_FRAME_DIS = 0x00000001, //ʾ + PLAYM4_FIRE_MAX_TEMP = 0x00000002, //¶ + PLAYM4_FIRE_MAX_TEMP_POSITION = 0x00000004, //¶λʾ + PLAYM4_FIRE_DISTANCE = 0x00000008, //¶Ⱦ}PLAYM4_FIRE_ALARM +}PLAYM4_FIRE_ALARM; + +typedef enum _PLAYM4_TEM_FLAG{ + PLAYM4_TEM_REGION_BOX = 0x00000001, // + PLAYM4_TEM_REGION_LINE = 0x00000002, //߲ + PLAYM4_TEM_REGION_POINT = 0x00000004, //}PLAYM4_TEM_FLAG +}PLAYM4_TEM_FLAG; + +typedef enum _PLAYM4_TRACK_FLAG +{ + PLAYM4_TRACK_PEOPLE = 0x00000001, //˹켣 + PLAYM4_TRACK_VEHICLE = 0x00000002, //켣 +}PLAYM4_TRACK_FLAG; + +typedef struct TI_PTZ_INFO_ +{ + unsigned short dwDefVer; //ṹ汾 + unsigned short dwLength; //PTZ_infoȣ8ֽΪλ + DWORD dwP; //P0~3600 + DWORD dwT; //T0~3600 + DWORD dwZ; //Z0~3600 + BYTE chFSMState; //״̬ + BYTE bClearFocusState; //۽״̬0,1 + BYTE reserved[6]; //6ֽڱ +}PTZ_INFO; + + +// Ϣ +PLAYM4_API BOOL __stdcall PlayM4_RenderPrivateData(LONG nPort, int nIntelType, BOOL bTrue); + +PLAYM4_API BOOL __stdcall PlayM4_RenderPrivateDataEx(LONG nPort, int nIntelType, int nSubType, BOOL bTrue); + +// ص,nType=0ʾܱλ仯ͻصnType=1ʾмλص +PLAYM4_API BOOL __stdcall PlayM4_SetEncryptTypeCallBack(LONG nPort, DWORD nType, + void (CALLBACK* EncryptTypeCBFun)(long nPort, ENCRYPT_INFO* pEncryptInfo, long nUser, long nReserved2), long nUser); +//lType: 1 ʾȡǰʾ֡PTZϢضṹʽ洢pInfoڣplLenسϢ +PLAYM4_API BOOL __stdcall PlayM4_GetStreamAdditionalInfo(LONG nPort, LONG lType, BYTE* pInfo, LONG* plLen); + + +#endif //_PLAYM4_H_ diff --git a/src/include/Hik/arm64/DataType.h b/src/include/Hik/arm64/DataType.h new file mode 100644 index 0000000..5b75bd1 --- /dev/null +++ b/src/include/Hik/arm64/DataType.h @@ -0,0 +1,111 @@ +#ifndef DATA_TYPE_H +#define DATA_TYPE_H +#define FRAME_HEAD_MAGIC 0x03211546 +#define SYSTEM_SYNC_ID 2 + +#ifdef __LINUX__ +typedef unsigned char UCHAR; +typedef unsigned char* PBYTE; +typedef char* LPTSTR; +typedef unsigned short USHORT; +typedef int HANDLE; +typedef unsigned long ULONG; +typedef unsigned long DWORD; +#endif //#ifdef __LINUX__ + +typedef struct tagFrameInfo{ + ULONG SyncId; /* 00000000000000000000000000010b */ + ULONG Magic; + USHORT FrameType; /* I frames , P frames or BBP frames Audio frames or dsp status etc */ + ULONG Length; /*lenth include this header */ + ULONG FrameNumber; /* serial number of this frame */ + UCHAR Breakable; /* indicate if stream breakable, you could restart new file(with PktSysHeader) if true */ + /*ULONG Ack;*/ + ULONG PTS; /* system clock when this frames is processed */ +}TMFRAME_HEADER, *PTMFRAME_HEADER; + +typedef enum { + StandardNone = 0x80000000, + StandardNTSC = 0x00000001, + StandardPAL = 0x00000002, + StandardSECAM = 0x00000004, +} VideoStandard_t; + + +typedef enum { + PktError = 0, + PktIFrames = 0x0001, + PktPFrames = 0x0002, + PktBBPFrames = 0x0004, + PktAudioFrames = 0x0008, + PktMotionDetection = 0x00010, + PktDspStatus = 0x00020, + PktOrigImage = 0x00040, + PktSysHeader = 0x00080, + PktBPFrames = 0x00100, + PktSFrames = 0x00200, + PktSubIFrames = 0x00400, + PktSubPFrames = 0x00800, + PktSubBBPFrames = 0x01000, + PktSubSysHeader = 0x02000 +}FrameType_t; + +typedef struct tagVersion{ + ULONG DspVersion, DspBuildNum; + ULONG DriverVersion, DriverBuildNum; + ULONG SDKVersion, SDKBuildNum; +}VERSION_INFO, *PVERSION_INFO; + +typedef enum { + ENC_CIF_FORMAT = 0, + ENC_QCIF_FORMAT = 1, + ENC_2CIF_FORMAT = 2, + ENC_4CIF_FORMAT = 3, + ENC_QQCIF_FORMAT = 4, + ENC_CIFQCIF_FORMAT =5, + ENC_CIFQQCIF_FORMAT =6, + ENC_DCIF_FORMAT =7, + ENC_VGA_FORMAT=8 +}PictureFormat_t; + +typedef struct tagMotionData{ + PictureFormat_t PicFormat; + ULONG HorizeBlocks; + ULONG VerticalBlocks; + ULONG BlockSize; +}MOTION_DATA_HEADER, *PMOTION_DATA_HEADER; + + +#define _OSD_BASE 0x9000 /*base address of special character*/ +#define _OSD_YEAR4 (_OSD_BASE+0) /*show year time by length of 4 , for example: 2005*/ +#define _OSD_YEAR2 (_OSD_BASE+1) /*show year time by length of 2, for example: 05 */ +#define _OSD_MONTH3 (_OSD_BASE+2) /*show month time in English, for example: Jan*/ +#define _OSD_MONTH2 (_OSD_BASE+3) /*show month time by two Arabic numerals, for example: 07*/ +#define _OSD_DAY (_OSD_BASE+4) /*show day time by two Arabic numerals, for example: 31*/ +#define _OSD_WEEK3 (_OSD_BASE+5) /*show week time in English: MONSUN*/ +#define _OSD_CWEEK1 (_OSD_BASE+6) /*show week time in Chinese GB code*/ +#define _OSD_HOUR24 (_OSD_BASE+7) /*show 24 hours clock: 0023 */ +#define _OSD_HOUR12 (_OSD_BASE+8) /*show 12 hours clock: 0012*/ +#define _OSD_MINUTE (_OSD_BASE+9) /*show minute time by length of 2: 0059*/ +#define _OSD_SECOND (_OSD_BASE+10) /*show second time by length of 2: 0059*/ +#define _OSD_MILISECOND (_OSD_BASE+11) /*show millisecond time by length of 3: 000~999*/ +#define _OSD_APM (_OSD_BASE+14) /*show a.m. or p.m. by length of 2 bit, AM or PM*/ + +//For new added APIs to set OSD: SetEncoderOsdDisplayMode, SetDecoderOsdDisplayMode and SetDisplayOsdDisplayMode in v6.0 SDK, we use new basic address of special character. +#define _OSD_BASE_EX 0x90000 /*base address of special character*/ +#define _OSD_YEAR4_EX (_OSD_BASE_EX+0) /*the same as _OSD_YEAR4*/ +#define _OSD_YEAR2_EX (_OSD_BASE_EX+1) /*the same as _OSD_YEAR2*/ +#define _OSD_MONTH3_EX (_OSD_BASE_EX+2) /*the same as _OSD_MONTH3*/ +#define _OSD_MONTH2_EX (_OSD_BASE_EX+3) /*the same as _OSD_MONTH2*/ +#define _OSD_DAY_EX (_OSD_BASE_EX+4) /*the same as _OSD_DAY*/ +#define _OSD_WEEK3_EX (_OSD_BASE_EX+5) /*the same as _OSD_WEEK3*/ +#define _OSD_CWEEK1_EX (_OSD_BASE_EX+6) /*the same as _OSD_CWEEK1*/ +#define _OSD_HOUR24_EX (_OSD_BASE_EX+7) /*the same as _OSD_HOUR24*/ +#define _OSD_HOUR12_EX (_OSD_BASE_EX+8) /*the same as _OSD_HOUR12*/ +#define _OSD_MINUTE_EX (_OSD_BASE_EX+9) /*the same as _OSD_MINUTE*/ +#define _OSD_SECOND_EX (_OSD_BASE_EX+10) /*the same as _OSD_SECOND*/ +#define _OSD_MILISECOND_EX (_OSD_BASE_EX+11) /*the same as _OSD_MILISECOND*/ +#define _OSD_APM_EX (_OSD_BASE_EX+14) /*the same as _OSD_APM*/ + + +#endif diff --git a/src/include/Hik/arm64/DecodeCardSdk.h b/src/include/Hik/arm64/DecodeCardSdk.h new file mode 100644 index 0000000..0773727 --- /dev/null +++ b/src/include/Hik/arm64/DecodeCardSdk.h @@ -0,0 +1,451 @@ +/////////////////////////////////////////////////////////////////////////// +// DS-40xxHC/HF BOARD SYSTEM SDK // +/////////////////////////////////////////////////////////////////////////// + +#ifndef DECODECARD_SDK_H +#define DECODECARD_SDK_H + +#include "datatype.h" + +#define DLLEXPORT_API extern "C" __declspec(dllexport) +#define ERR_WAIT_TIMEOUT 0xc0000001 +#define ERR_INVALID_HANDLE 0xc0000002 +#define ERR_INVALID_ARGUMENT 0xc0000003 +#define ERR_DDRAW_CREATE_FAILED 0xc0000004 +#define ERR_DDRAW_CAPS_FAULT 0xc0000005 +#define ERR_SET_COOPERATIVELEVEL_FAILED 0xc0000006 +#define ERR_PRIMARY_SURFACE_CREATE_FAILED 0xc0000007 +#define ERR_GET_OVERLAY_ADDRESS_FAILED 0xc0000008 +#define ERR_OVERLAY_SURFACE_CREATE_FAILED 0xc0000009 +#define ERR_OVERLAY_UPDATE_FAILED 0xc000000a +#define ERR_TMMAN_FAILURE 0xc000000b +#define ERR_CHANNELMAGIC_MISMATCH 0xc000000c +#define ERR_CALLBACK_REGISTERED 0xc000000d +#define ERR_QUEUE_OVERFLOW 0xc000000e +#define ERR_STREAM_THREAD_FAILURE 0xc000000f +#define ERR_THREAD_STOP_ERROR 0xc0000010 +#define ERR_NOT_SUPPORT 0xc0000011 +#define ERR_OUTOF_MEMORY 0xc0000012 +#define ERR_DSP_BUSY 0xc0000013 +#define ERR_DATA_ERROR 0xc0000014 +#define ERR_KERNEL 0xc0000016 +#define ERR_OFFSCREEN_CREATE_FAILED 0xc0000017 +#define ERR_MULTICLOCK_FAILURE 0xc0000018 +#define ERR_INVALID_DEVICE 0xc0000019 +#define ERR_INVALID_DRIVER 0xc000001a +//error code for MD card +#define HWERR_SUCCESS 0 +#define HWERR_ALLOCATE_MEMORY 0xc1000001 +#define HWERR_INVALID_HANDLE 0xc1000002 +#define HWERR_DDRAW_CREATE_FAILED 0xc1000003 +#define HWERR_DDRAW_CAPS_FAULT 0xc1000004 +#define HWERR_SET_COOPERATIVELEVEL_FAILED 0xc1000005 +#define HWERR_PRIMARY_SURFACE_CREATE_FAILED 0xc1000006 +#define HWERR_OVERLAY_CREATE_FAILED 0xc1000007 +#define HWERR_GET_OVERLAY_ADDRESS_FAILED 0xc1000008 +#define HWERR_OVERLAY_UPDATE_FAILED 0xc1000009 +#define HWERR_SURFACE_NULL 0xc100000a +#define HWERR_FILEHEADER_UNKNOWN 0xc100000b +#define HWERR_CREATE_FILE_FAILED 0xc100000c +#define HWERR_FILE_SIZE_ZERO 0xc100000d +#define HWERR_FILE_SIZE_INVALID 0xc100000d +#define HWERR_CREATE_OBJ_FAILED 0xc100000e +#define HWERR_CHANNELMAGIC_MISMATCH 0xc100000f +#define HWERR_PARA_OVER 0xc1000010 +#define HWERR_ORDER 0xc1000011 +#define HWERR_COMMAND 0xc1000012 +#define HWERR_UNSUPPORTED 0xc1000013 +#define HWERR_DSPOPEN 0xc1000014 +#define HWERR_DSPLOAD 0xc1000015 +#define HWERR_ALLOCATE_DSPMEMORY 0xc1000016 +#define HWERR_DSPCHECHER 0xc1000017 +#define HWERR_IMGFILE_UNKNOWN 0xc1000018 +#define HWERR_INVALID_FILE 0xc1000019 +//standart +#define HW_PAL 2 +#define HW_NTSC 1 +//jump direction +#define HW_JUMP_FORWARD 309 +#define HW_JUMP_BACKWARD 310 + + +typedef enum tagTypeVideoFormat +{ + vdfRGB8A_233 = 0x00000001, + vdfRGB8R_332 = 0x00000002, + vdfRGB15Alpha = 0x00000004, + vdfRGB16 = 0x00000008, + vdfRGB24 = 0x00000010, + vdfRGB24Alpha = 0x00000020, + + vdfYUV420Planar = 0x00000040, + vdfYUV422Planar = 0x00000080, + vdfYUV411Planar = 0x00000100, + vdfYUV420Interspersed = 0x00000200, + vdfYUV422Interspersed = 0x00000400, + vdfYUV411Interspersed = 0x00000800, + vdfYUV422Sequence = 0x00001000, /* U0, Y0, V0, Y1: For VO overlay */ + vdfYUV422SequenceAlpha = 0x00002000, + /* U0, Y0, V0, Y1: For VO overlay, with low bit for alpha blending */ + vdfMono = 0x00004000, /* 8 bit monochrome */ + + vdfYUV444Planar = 0x00008000, +}TypeVideoFormat; + + +typedef enum _BitrateControlType_t +{ + brCBR = 0, + brVBR = 1, +}BitrateControlType_t; + +typedef enum _BOARD_TYPE_DS +{ + DS400XM =0, + DS400XH =1, + DS4004HC =2, + DS4008HC =3, + DS4016HC =4, + DS4001HF =5, + DS4004HF =6, + DS4002MD =7, + DS4004MD =8, //4004MD + DS4016HCS =9, //4016HCS + DS4002HT =10, //4002HT + DS4004HT =11, //4004HT + DS4008HT =12, //4008HT + DS4004HC_PLUS =13, //4004HC+ + DS4008HC_PLUS =14, //4008HC+ + DS4016HC_PLUS =15, //4016HC+ + DS4008HF =16, //4008HF + DS4008MD =17, //4008MD + DS4008HS =18, //4008HS + DS4016HS =19, //4016HS + INVALID_BOARD_TYPE =0xffffffff, +}BOARD_TYPE_DS; + +#define STREAM_TYPE_VIDEO 1 +#define STREAM_TYPE_AUDIO 2 +#define STREAM_TYPE_AVSYNC 3 +#define DRAWFUN(x) void (CALLBACK* x)(long nPort,HDC hDc,LONG nUser) + + +typedef void (*LOGRECORD_CALLBACK)(char *str, void *context); +typedef int (*STREAM_READ_CALLBACK)(ULONG channelNumber, void *context); +typedef int (*STREAM_DIRECT_READ_CALLBACK)(ULONG channelNumber,void *DataBuf,DWORD Length,int FrameType,void *context); + +typedef struct tagChannelCapability{ + UCHAR bAudioPreview; + UCHAR bAlarmIO; + UCHAR bWatchDog; +}CHANNEL_CAPABILITY, *PCHANNEL_CAPABILITY; + +typedef struct tagFramsStatistics{ + ULONG VideoFrames; + ULONG AudioFrames; + ULONG FramesLost; + ULONG QueueOverflow; + ULONG CurBps; +}FRAMES_STATISTICS, *PFRAMES_STATISTICS; + +DLLEXPORT_API int __stdcall InitDSPs(); +DLLEXPORT_API int __stdcall DeInitDSPs(); +DLLEXPORT_API HANDLE __stdcall ChannelOpen(int ChannelNum); +DLLEXPORT_API int __stdcall ChannelClose(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall GetTotalChannels(); +DLLEXPORT_API int __stdcall GetTotalDSPs(); +DLLEXPORT_API int __stdcall StartVideoPreview(HANDLE hChannelHandle,HWND WndHandle, RECT *rect, BOOLEAN bOverlay, int VideoFormat, int FrameRate); +DLLEXPORT_API int __stdcall StopVideoPreview(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall SetVideoPara(HANDLE hChannelHandle, int Brightness, int Contrast, int Saturation, int Hue); +DLLEXPORT_API int __stdcall GetVideoPara(HANDLE hChannelHandle, VideoStandard_t *VideoStandard, int *Brightness, int *Contrast, int *Saturation, int *Hue); +DLLEXPORT_API int __stdcall GetVideoSignal(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall GetSDKVersion(PVERSION_INFO VersionInfo); +DLLEXPORT_API int __stdcall GetCapability(HANDLE hChannelHandle, CHANNEL_CAPABILITY *Capability); +DLLEXPORT_API int __stdcall GetLastErrorNum(HANDLE hChannelHandle, ULONG *DspError, ULONG *SdkError); +DLLEXPORT_API int __stdcall SetStreamType(HANDLE hChannelHandle, USHORT Type); +DLLEXPORT_API int __stdcall GetStreamType(HANDLE hChannelHandle, USHORT *StreamType); +DLLEXPORT_API int __stdcall GetFramesStatistics(HANDLE hChannelHandle, PFRAMES_STATISTICS framesStatistics); +DLLEXPORT_API int __stdcall StartMotionDetection(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall GetBoardInfo(HANDLE hChannelHandle, ULONG *BoardType, UCHAR *SerialNo); +DLLEXPORT_API int __stdcall StopMotionDetection(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall GetOriginalImage(HANDLE hChannelHandle, UCHAR *ImageBuf, ULONG *Size); +DLLEXPORT_API int __stdcall RegisterLogRecordCallback(LOGRECORD_CALLBACK LogRecordFunc, void *Context); +DLLEXPORT_API int __stdcall SetAudioPreview(HANDLE hChannelHandle, BOOL bEnable); +DLLEXPORT_API int __stdcall ReadStreamData(HANDLE hChannelHandle, void *DataBuf, DWORD *Length, int *FrameType); +DLLEXPORT_API int __stdcall RegisterMessageNotifyHandle(HWND hWnd, UINT MessageId); +DLLEXPORT_API int __stdcall StartVideoCapture(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall StopVideoCapture(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall SetIBPMode(HANDLE hChannelHandle, int KeyFrameIntervals, int BFrames, int PFrames, int FrameRate); +DLLEXPORT_API int __stdcall SetDefaultQuant(HANDLE hChannelHandle, int IQuantVal, int PQuantVal, int BQuantVal); +DLLEXPORT_API int __stdcall SetOsd(HANDLE hChannelHandle, BOOL Enable); + +DLLEXPORT_API int __stdcall SetLogo(HANDLE hChannelHandle, int x, int y, int w, int h, unsigned char *yuv); +DLLEXPORT_API int __stdcall StopLogo(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall SetupMotionDetection(HANDLE hChannelHandle, RECT *RectList, int iAreas); +DLLEXPORT_API int __stdcall MotionAnalyzer(HANDLE hChannelHandle, char *MotionData, int iThreshold, int *iResult); +DLLEXPORT_API int __stdcall LoadYUVFromBmpFile(char *FileName, unsigned char *yuv, int BufLen, int *Width, int *Height); +DLLEXPORT_API int __stdcall SaveYUVToBmpFile(char *FileName, unsigned char *yuv, int Width, int Height); +DLLEXPORT_API int __stdcall CaptureIFrame(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall RegisterStreamReadCallback(STREAM_READ_CALLBACK StreamReadCallback, void *Context); +DLLEXPORT_API int __stdcall AdjustMotionDetectPrecision(HANDLE hChannelHandle, + int iGrade, int iFastMotionDetectFps, + int iSlowMotionDetectFps); +DLLEXPORT_API int __stdcall SetupBitrateControl(HANDLE hChannelHandle, ULONG MaxBps); +DLLEXPORT_API int __stdcall SetOverlayColorKey(COLORREF DestColorKey); +DLLEXPORT_API int __stdcall SetOsdDisplayMode(HANDLE hChannelHandle, int Brightness, BOOL Translucent, int parameter, USHORT *Format1, USHORT *Format2); +DLLEXPORT_API int __stdcall SetLogoDisplayMode(HANDLE hChannelHandle, COLORREF ColorKey, BOOL Translucent, int TwinkleInterval); +DLLEXPORT_API int __stdcall SetEncoderPictureFormat(HANDLE hChannelHandle, PictureFormat_t PictureFormat); +DLLEXPORT_API int __stdcall SetVideoStandard(HANDLE hChannelHandle, VideoStandard_t VideoStandard); +DLLEXPORT_API int __stdcall RestoreOverlay(); +DLLEXPORT_API int __stdcall ResetDSP(int DspNumber); +DLLEXPORT_API int __stdcall GetSoundLevel(HANDLE hChannelHandle); + + +DLLEXPORT_API int __stdcall SetBitrateControlMode(HANDLE hChannelHandle, BitrateControlType_t brc); +DLLEXPORT_API int __stdcall SetupNotifyThreshold(HANDLE hChannelHandle, int iFramesThreshold); + +DLLEXPORT_API int __stdcall SetupSubChannel(HANDLE hChannelHandle, int iSubChannel); +DLLEXPORT_API int __stdcall GetSubChannelStreamType(void *DataBuf, int FrameType); +//add for HC/HF +DLLEXPORT_API int __stdcall RegisterStreamDirectReadCallback(STREAM_DIRECT_READ_CALLBACK StreamDirectReadCallback,void *Context); +DLLEXPORT_API int __stdcall RegisterDrawFun(DWORD nport, DRAWFUN(DrawFun),LONG nUser); +DLLEXPORT_API int __stdcall SetupMask(HANDLE hChannelHandle, RECT *rectList, int iAreas); +DLLEXPORT_API int __stdcall StopMask(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall SetSubEncoderPictureFormat(HANDLE hChannelHandle, PictureFormat_t PictureFormat); +DLLEXPORT_API int __stdcall StartSubVideoCapture(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall StopSubVideoCapture(HANDLE hChannelHandle); +DLLEXPORT_API int __stdcall SetupDateTime(HANDLE hChannelHandle, SYSTEMTIME *now); +/* + Ϊ1.7汾Ĺܡ + Ժܻûķ޸ĺơ +*/ +//ԭʼͼ +typedef void (*IMAGE_STREAM_CALLBACK)(UINT channelNumber,void *context ); +DLLEXPORT_API int __stdcall SetImageStream(HANDLE hChannel,BOOL bStart,UINT fps,UINT width,UINT height,unsigned char *imageBuffer); +DLLEXPORT_API int __stdcall RegisterImageStreamCallback(IMAGE_STREAM_CALLBACK,void *context); +/* + Ƶλã + (x,y)ΪϵͳͼϽԭʼͼеꡣ + xΪ2 + (x,y)IJΧͺйأֵָ벻ƥ䣬 + ܻᵼͼֹˮƽֱ +*/ +DLLEXPORT_API int __stdcall SetInputVideoPosition(HANDLE hChannel,UINT x,UINT y); +DLLEXPORT_API int __stdcall StopRegisterDrawFun(DWORD nport); + +/* + 3.0 +*/ +#define SERIAL_NUMBER_LENGTH 12 //忨кų +typedef struct tagDS_BOARD_DETAIL +{ + BOARD_TYPE_DS type; //忨 + BYTE sn[16]; //к + UINT dspCount; //忨DSP + UINT firstDspIndex; //忨ϵһDSP + UINT encodeChannelCount; //忨ıͨ + UINT firstEncodeChannelIndex; //忨ϵһͨ + UINT decodeChannelCount; //忨Ľͨ + UINT firstDecodeChannelIndex; //忨ϵһͨ + UINT displayChannelCount; //忨Ƶͨ + UINT firstDisplayChannelIndex; //忨ϵһƵͨ + UINT reserved1; + UINT reserved2; + UINT reserved3; + UINT reserved4; +}DS_BOARD_DETAIL; +typedef struct tagDSP_DETAIL +{ + UINT encodeChannelCount; //忨ıͨ + UINT firstEncodeChannelIndex; //忨ϵһͨ + UINT decodeChannelCount; //忨Ľͨ + UINT firstDecodeChannelIndex; //忨ϵһͨ + UINT displayChannelCount; //忨Ƶͨ + UINT firstDisplayChannelIndex; //忨ϵһƵͨ + UINT reserved1; + UINT reserved2; + UINT reserved3; + UINT reserved4; +}DSP_DETAIL; +DLLEXPORT_API unsigned int __stdcall GetBoardCount(); +DLLEXPORT_API int __stdcall GetBoardDetail(UINT boardNum,DS_BOARD_DETAIL *pBoardDetail); +DLLEXPORT_API unsigned int __stdcall GetDspCount(); +DLLEXPORT_API int __stdcall GetDspDetail(UINT dspNum,DSP_DETAIL *pDspDetail); +DLLEXPORT_API unsigned int __stdcall GetEncodeChannelCount(); +DLLEXPORT_API unsigned int __stdcall GetDecodeChannelCount(); +DLLEXPORT_API unsigned int __stdcall GetDisplayChannelCount(); +DLLEXPORT_API int __stdcall SetDefaultVideoStandard(VideoStandard_t VideoStandard); +DLLEXPORT_API int __stdcall SetVideoDetectPrecision(HANDLE hChannel,unsigned int value); +DLLEXPORT_API int __stdcall SetSubStreamType(HANDLE hChannelHandle, USHORT Type); +DLLEXPORT_API int __stdcall GetSubStreamType(HANDLE hChannelHandle, USHORT *StreamType); + +#define MAX_DISPLAY_REGION 16 +typedef struct tagREGION_PARAM +{ + UINT left; + UINT top; + UINT width; + UINT height; + COLORREF color; + UINT param; +}REGION_PARAM; +DLLEXPORT_API int __stdcall SetDisplayStandard(UINT nDisplayChannel,VideoStandard_t VideoStandard); +DLLEXPORT_API int __stdcall SetDisplayRegion(UINT nDisplayChannel,UINT nRegionCount,REGION_PARAM *pParam,UINT nReserved); +DLLEXPORT_API int __stdcall ClearDisplayRegion(UINT nDisplayChannel,UINT nRegionFlag); +DLLEXPORT_API int __stdcall SetDisplayRegionPosition(UINT nDisplayChannel,UINT nRegion,UINT nLeft,UINT nTop); +DLLEXPORT_API int __stdcall FillDisplayRegion(UINT nDisplayChannel,UINT nRegion,unsigned char *pImage); +DLLEXPORT_API int __stdcall SetEncoderVideoExtOutput(UINT nEncodeChannel,UINT nPort,BOOL bOpen,UINT nDisplayChannel,UINT nDisplayRegion,UINT nReserved); +DLLEXPORT_API int __stdcall SetDecoderVideoExtOutput(UINT nDecodeChannel,UINT nPort,BOOL bOpen,UINT nDisplayChannel,UINT nDisplayRegion,UINT nReserved); +DLLEXPORT_API int __stdcall SetDecoderVideoOutput(UINT nDecodeChannel,UINT nPort,BOOL bOpen,UINT nDisplayChannel,UINT nDisplayRegion,UINT nReserved); +DLLEXPORT_API int __stdcall SetDecoderAudioOutput(UINT nDecodeChannel,BOOL bOpen,UINT nOutputChannel); +//3.1 +DLLEXPORT_API int __stdcall SetDeInterlace(HANDLE hChannelHandle,UINT mode,UINT level); +DLLEXPORT_API int __stdcall SetPreviewOverlayMode(BOOL bTrue); + +//DECODE functions for DS4002MD +#if defined( _WINDLL) + #define PLAYER_API extern "C"__declspec(dllexport) +#else + #define PLAYER_API extern "C" __declspec(dllimport) +#endif +typedef struct tagDISPLAY_PARA +{ + long bToScreen; + long bToVideoOut; + long nLeft; + long nTop; + long nWidth; + long nHeight; + long nReserved; +}DISPLAY_PARA,*PDISPLAY_PARA; +//Version info +typedef struct tagVERSION{ + ULONG DspVersion, DspBuildNum; + ULONG DriverVersion, DriverBuildNum; + ULONG SDKVersion, SDKBuildNum; +}HW_VERSION, *PHW_VERSION; + +//init part +PLAYER_API int __stdcall HW_InitDirectDraw(HWND hParent,COLORREF colorKey); +PLAYER_API int __stdcall HW_ReleaseDirectDraw(); +PLAYER_API int __stdcall HW_InitDecDevice(long *pDeviceTotal); +PLAYER_API int __stdcall HW_ReleaseDecDevice(); +PLAYER_API int __stdcall HW_ChannelOpen(long nChannelNum,HANDLE* phChannel); +PLAYER_API int __stdcall HW_ChannelClose(HANDLE hChannel); +//open part + +PLAYER_API int __stdcall HW_OpenStream(HANDLE hChannel,PBYTE pFileHeadBuf,DWORD nSize); +DLLEXPORT_API int __stdcall HW_ResetStream(HANDLE hChannel); +PLAYER_API int __stdcall HW_CloseStream(HANDLE hChannel); +PLAYER_API int __stdcall HW_InputData(HANDLE hChannel,PBYTE pBuf,DWORD nSize); +PLAYER_API int __stdcall HW_OpenFile(HANDLE hChannel,LPTSTR sFileName); +PLAYER_API int __stdcall HW_CloseFile(HANDLE hChannel); + +//play part +PLAYER_API int __stdcall HW_SetDisplayPara(HANDLE hChannel,DISPLAY_PARA *pPara); +PLAYER_API int __stdcall HW_Play(HANDLE hChannel); +PLAYER_API int __stdcall HW_Stop(HANDLE hChannel); +PLAYER_API int __stdcall HW_Pause(HANDLE hChannel,ULONG bPause); + +//sound part +PLAYER_API int __stdcall HW_PlaySound(HANDLE hChannel); +PLAYER_API int __stdcall HW_StopSound(HANDLE hChannel); +PLAYER_API int __stdcall HW_SetVolume(HANDLE hChannel,ULONG nVolume); +//overlay part +PLAYER_API int __stdcall HW_RefreshSurface(); +PLAYER_API int __stdcall HW_RestoreSurface(); +PLAYER_API int __stdcall HW_ClearSurface(); +PLAYER_API int __stdcall HW_ZoomOverlay(RECT* pSrcClientRect, RECT* pDecScreenRect); +//cut file +PLAYER_API int __stdcall HW_StartCapFile(HANDLE hChannel,LPTSTR sFileName); +PLAYER_API int __stdcall HW_StopCapFile(HANDLE hChannel); +//capture picture +PLAYER_API int __stdcall HW_GetYV12Image(HANDLE hChannel, PBYTE pBuffer, ULONG nSize); +PLAYER_API int __stdcall HW_GetPictureSize(HANDLE hChannel,ULONG* pWidth, ULONG* pHeight); +PLAYER_API int __stdcall HW_ConvertToBmpFile(BYTE * pBuf,ULONG nSize,ULONG nWidth,ULONG nHeight,char *sFileName,ULONG nReserved); +//setting and getting part +PLAYER_API int __stdcall HW_Jump(HANDLE hChannel,ULONG nDirection); +PLAYER_API int __stdcall HW_SetJumpInterval(HANDLE hChannel,ULONG nSecond); +PLAYER_API int __stdcall HW_GetSpeed(HANDLE hChannel,long *pSpeed); +PLAYER_API int __stdcall HW_SetSpeed(HANDLE hChannel,long nSpeed); +PLAYER_API int __stdcall HW_SetPlayPos(HANDLE hChannel,ULONG nPos); +PLAYER_API int __stdcall HW_GetPlayPos(HANDLE hChannel,ULONG* pPos); +PLAYER_API int __stdcall HW_GetVersion(PHW_VERSION pVersion); +PLAYER_API int __stdcall HW_GetCurrentFrameRate(HANDLE hChannel,ULONG* pFrameRate); +PLAYER_API int __stdcall HW_GetCurrentFrameNum(HANDLE hChannel,ULONG* pFrameNum); +PLAYER_API int __stdcall HW_GetFileTotalFrames(HANDLE hChannel,ULONG* pTotalFrames); +PLAYER_API int __stdcall HW_GetFileTime(HANDLE hChannel, ULONG* pFileTime); +PLAYER_API int __stdcall HW_GetCurrentFrameTime(HANDLE hChannel,ULONG* pFrameTime); +PLAYER_API int __stdcall HW_GetPlayedFrames(HANDLE hChannel,ULONG *pDecVFrames); +PLAYER_API int __stdcall HW_GetDeviceSerialNo(HANDLE hChannel,ULONG *pDeviceSerialNo); +PLAYER_API int __stdcall HW_SetFileEndMsg(HANDLE hChannel,HWND hWnd,UINT nMsg); +PLAYER_API int __stdcall HW_SetStreamOpenMode(HANDLE hChannel,ULONG nMode); +PLAYER_API int __stdcall HW_GetStreamOpenMode(HANDLE hChannel,ULONG *pMode); +PLAYER_API int __stdcall HW_SetVideoOutStandard(HANDLE hChannel,ULONG nStandard); +PLAYER_API int __stdcall HW_SetDspDeadlockMsg(HWND hWnd,UINT nMsg); +PLAYER_API int __stdcall HW_GetChannelNum(long nDspNum,long *pChannelNum,ULONG nNumsToGet,ULONG * pNumsGotten); +PLAYER_API int __stdcall HW_ResetDsp(long nDspNum); +PLAYER_API int __stdcall HW_SetAudioPreview(HANDLE hChannel, BOOL bEnable); +////////////////////////////////////////////// + +PLAYER_API int __stdcall HW_OpenStreamEx(HANDLE hChannel,PBYTE pFileHeadBuf,DWORD nSize); +PLAYER_API int __stdcall HW_CloseStreamEx(HANDLE hChannel); +PLAYER_API int __stdcall HW_InputVideoData(HANDLE hChannel,PBYTE pBuf,DWORD nSize); +PLAYER_API int __stdcall HW_InputAudioData(HANDLE hChannel,PBYTE pBuf,DWORD nSize); + +//4.0 +PLAYER_API int __stdcall SetOsdDisplayModeEx(HANDLE hChannelHandle,int color,BOOL Translucent,int param,int nLineCount,USHORT **Format); +typedef void (*MOTION_DETECTION_CALLBACK)(ULONG channelNumber,BOOL bMotionDetected,void *context); +PLAYER_API int __stdcall SetupMotionDetectionEx(HANDLE hChannelHandle,int iGrade,int iFastMotionDetectFps, + int iSlowMotionDetectFps,UINT delay,RECT *RectList, int iAreas, + MOTION_DETECTION_CALLBACK MotionDetectionCallback,int reserved); +PLAYER_API int __stdcall GetJpegImage(HANDLE hChannelHandle,UCHAR *ImageBuf,ULONG *Size,UINT nQuality); +//WatchDog +PLAYER_API int __stdcall SetWatchDog(UINT boardNumber,BOOL bEnable); +//4.1 +typedef void (*FILE_REF_DONE_CALLBACK)(UINT nChannel,UINT nSize); +PLAYER_API int __stdcall HW_SetFileRef(HANDLE hChannel,BOOL bEnable,FILE_REF_DONE_CALLBACK FileRefDoneCallback); +PLAYER_API int __stdcall HW_LocateByAbsoluteTime(HANDLE hChannel,SYSTEMTIME time); +PLAYER_API int __stdcall HW_LocateByFrameNumber(HANDLE hChannel,UINT frmNum); +PLAYER_API int __stdcall HW_GetCurrentAbsoluteTime(HANDLE hChannel,SYSTEMTIME *pTime); +PLAYER_API int __stdcall HW_GetFileAbsoluteTime(HANDLE hChannel,SYSTEMTIME *pStartTime,SYSTEMTIME *pEndTime); +//4.2 +DLLEXPORT_API int __stdcall HW_ImportFileRef(HANDLE hChannel,char *pBuffer,UINT nSize); +DLLEXPORT_API int __stdcall HW_ExportFileRef(HANDLE hChannel,char *pBuffer,UINT nSize); +DLLEXPORT_API int __stdcall SetDisplayVideoCapture(UINT nDisplayChannel,BOOL bStart,UINT fps,UINT width,UINT height,unsigned char *imageBuffer); +DLLEXPORT_API int __stdcall RegisterDisplayVideoCaptureCallback(IMAGE_STREAM_CALLBACK DisplayVideoCaptureCallback,void *context); +DLLEXPORT_API int __stdcall SetDisplayVideoBrightness(UINT chan,int Brightness); +DLLEXPORT_API int __stdcall SetChannelStreamCRC(HANDLE hChannel,BOOL bEnable); +DLLEXPORT_API int __stdcall SetSubChannelStreamCRC(HANDLE hChannel,BOOL bEnable); +DLLEXPORT_API int __stdcall HW_SetDecoderPostProcess(HANDLE hChannel,UINT param); +// +typedef void (*DECODER_VIDEO_CAPTURE_CALLBACK)(UINT nChannelNumber,void *DataBuf,UINT width,UINT height,UINT nFrameNum,UINT nFrameTime,SYSTEMTIME *pFrameAbsoluteTime,void *context); +DLLEXPORT_API int __stdcall RegisterDecoderVideoCaptureCallback(DECODER_VIDEO_CAPTURE_CALLBACK DecoderVideoCaptureCallback,void *context); +DLLEXPORT_API int __stdcall HW_SetDecoderVideoCapture(HANDLE hChannel,BOOL bStart,UINT param); +DLLEXPORT_API int __stdcall HW_InputDataByFrame(HANDLE hChannel,PBYTE pBuf,DWORD nSize); +/* +ӿ:ԡԺܻ޸ġ +*/ +typedef struct +{ + short x,y,width,height; +}FACE_AREA_DEMO; +typedef struct +{ + FACE_AREA_DEMO faceArea; + FACE_AREA_DEMO leftEyeArea; + FACE_AREA_DEMO rightEyeArea; + FACE_AREA_DEMO leftPupilArea; + FACE_AREA_DEMO rightPupilArea; + FACE_AREA_DEMO noseArea; + FACE_AREA_DEMO mouthArea; +}FACE_INFO_DEMO; +typedef void (*FACE_DETECTION_DEMO_CALLBACK)(UINT nChannel,UINT nFaceCount,FACE_INFO_DEMO *pFaceInfo, + char *pData,UINT nDataSize,UINT nImageWidth,UINT nImageHeight); + +DLLEXPORT_API int __stdcall SetFaceDetectionDemo(HANDLE hChannelHandle,BOOL bEnable, + UINT nFrameInterval,FACE_DETECTION_DEMO_CALLBACK pFunc, + BOOL bCompress,UINT nCompressQuality,BOOL bLocateEyePos); + +#endif + diff --git a/src/include/Hik/arm64/HCNetSDK.h b/src/include/Hik/arm64/HCNetSDK.h new file mode 100644 index 0000000..7acc16c --- /dev/null +++ b/src/include/Hik/arm64/HCNetSDK.h @@ -0,0 +1,52608 @@ +#ifndef _HC_NET_SDK_H_ +#define _HC_NET_SDK_H_ + +#ifndef _WINDOWS_ + #if (defined(_WIN32) || defined(_WIN64)) + #include + #include + #endif +#endif + +#if defined(_WIN64) + #define OS_WINDOWS64 1 +#endif + +#if defined(__LP64__) + #define OS_POSIX64 1 +#endif + +#ifndef __PLAYRECT_defined + #define __PLAYRECT_defined + typedef struct __PLAYRECT + { + int x; + int y; + int uWidth; + int uHeight; + }PLAYRECT; +#endif + +#if (defined(_WIN32)) //windows + #define NET_DVR_API extern "C" __declspec(dllimport) + typedef unsigned __int64 UINT64; + typedef signed __int64 INT64; +#elif defined(__linux__) || defined(__APPLE__) //linux + #define BOOL int + typedef unsigned int DWORD; + typedef unsigned short WORD; + typedef unsigned short USHORT; + typedef short SHORT; + typedef int LONG; + typedef unsigned char BYTE; + typedef unsigned int UINT; + typedef void* LPVOID; + typedef void* HANDLE; + typedef unsigned int* LPDWORD; + typedef unsigned long long UINT64; + typedef signed long long INT64; + + #ifndef TRUE + #define TRUE 1 + #endif + #ifndef FALSE + #define FALSE 0 + #endif + #ifndef NULL + #define NULL 0 + #endif + + #define __stdcall + #define CALLBACK + + #define NET_DVR_API extern "C" + typedef unsigned int COLORKEY; + typedef unsigned int COLORREF; + + #ifndef __HWND_defined + #define __HWND_defined + #if defined(__APPLE__) || defined(ANDROID) + typedef void* HWND; + #elif defined(__linux__) + typedef unsigned int HWND; + #else + typedef void* HWND; + #endif + #endif + + #ifndef __HDC_defined + #define __HDC_defined + #if defined(__linux__) + typedef struct __DC + { + void* surface; //SDL Surface + HWND hWnd; //HDC window handle + }DC; + typedef DC* HDC; + #else + typedef void* HDC; + #endif + #endif + + typedef struct tagInitInfo + { + int uWidth; + int uHeight; + }INITINFO; +#endif + +//궨 +#define MAX_NAMELEN 16 //DVRص½ +#define MAX_RIGHT 32 //豸ֵ֧Ȩޣ1-12ʾȨޣ13-32ʾԶȨޣ +#define NAME_LEN 32 //û +#define MIN_PASSWD_LEN 8 //С볤 +#define PASSWD_LEN 16 //볤 +#define STREAM_PASSWD_LEN 12 //Կ󳤶 +#define MAX_PASSWD_LEN_EX 64 //볤64λ +#define GUID_LEN 16 //GUID +#define DEV_TYPE_NAME_LEN 24 //豸Ƴ +#define SERIALNO_LEN 48 //кų +#define MACADDR_LEN 6 //macַ +#define MAC_ADDRESS_NUM 48 //Macַ +#define MAX_SENCE_NUM 16 // +#define RULE_REGION_MAX 128 // +#define MAX_ETHERNET 2 //豸̫ +#define MAX_NETWORK_CARD 4 //豸Ŀ +#define MAX_NETWORK_CARD_EX 12 //豸Ŀչ +#define PATHNAME_LEN 128 //· +#define MAX_PRESET_V13 16 //Ԥõ +#define MAX_TEST_COMMAND_NUM 32 //߲Աֶγ +#define MAX_NUMBER_LEN 32 //󳤶 +#define MAX_NAME_LEN 128 //豸󳤶 +#define MAX_INDEX_LED 8 //LEDֵ 2013-11-19 +#define MAX_CUSTOM_DIR 64 //ԶĿ¼󳤶 +#define URL_LEN_V40 256 //URL +#define CLOUD_NAME_LEN 48 //ƴ洢û +#define CLOUD_PASSWD_LEN 48 //ƴ洢볤 +#define MAX_SENSORNAME_LEN 64 //Ƴ +#define MAX_SENSORCHAN_LEN 32 //ͨ +#define MAX_DESCRIPTION_LEN 32 // +#define MAX_DEVNAME_LEN_EX 64 //豸Ƴչ +#define NET_SDK_MAX_FILE_PATH 256 //ļ· +#define MAX_TMEVOICE_LEN 64 //TMEݳ +#define ISO_8601_LEN 32 //ISO_8601ʱ䳤 +#define MODULE_INFO_LEN 32 //ģϢ +#define VERSION_INFO_LEN 32 //汾Ϣ + +#define MAX_NUM_INPUT_BOARD 512 // +#define MAX_SHIPSDETE_REGION_NUM 8 // ֻбĿ + +#define MAX_RES_NUM_ONE_VS_INPUT_CHAN 8 //һֵ֧ͨķֱʵ +#define MAX_VS_INPUT_CHAN_NUM 16 //ͨ + +#define NET_SDK_MAX_FDID_LEN 256//ID󳤶 +#define NET_SDK_MAX_PICID_LEN 256 //ID󳤶 +#define NET_SDK_FDPIC_CUSTOM_INFO_LEN 96 //ͼƬԶϢ +#define NET_DVR_MAX_FACE_ANALYSIS_NUM 32 //ֵ֧ͼƬʶ +#define NET_DVR_MAX_FACE_SEARCH_NUM 5 //֧ +#define NET_SDK_SECRETKEY_LEN 128 //ļԿ +#define NET_SDK_CUSTOM_LEN 512 //ԶϢ󳤶 +#define NET_SDK_CHECK_CODE_LEN 128//У볤 +#define RELATIVE_CHANNEL_LEN 2//ͨŵ +#define NET_SDK_MAX_CALLEDTARGET_NAME 32 //ºĿû +#define NET_SDK_MAX_HBDID_LEN 256 /*256 ID󳤶*/ +//СLED +#define MAX_LEN_TEXT_CONTENT 128 //ַݳ +#define MAX_NUM_INPUT_SOURCE_TEXT 32 //źԴɵӵı +#define MAX_NUM_OUTPUT_CHANNEL 512 //LEDڸ + +//ӴڽOSD +#define MAX_LEN_OSD_CONTENT 256 //OSDϢ󳤶 +#define MAX_NUM_OSD_ONE_SUBWND 8 //Ӵֵ֧OSD +#define MAX_NUM_SPLIT_WND 64 //ֵ֧Ӵ +#define MAX_NUM_OSD 8 + +//2013-11-19 +#define MAX_DEVNAME_LEN 32 //豸󳤶 +#define MAX_LED_INFO 256 //ĻʾϢ󳤶 +#define MAX_TIME_LEN 32 //ʱ󳤶 +#define MAX_CARD_LEN 24 //󳤶 +#define MAX_OPERATORNAME_LEN 32 //Ա󳤶 + +#define THERMOMETRY_ALARMRULE_NUM 40 //ȳ񱨾 +#define MAX_THERMOMETRY_REGION_NUM 40 //ȶͼ֧ +#define MAX_THERMOMETRY_DIFFCOMPARISON_NUM 40 //ȳ² +#define MAX_SHIPS_NUM 20 //ֻֻ +#define MAX_SHIPIMAGE_NUM 6 //ֻץͼ +#define KEY_WORD_NUM 3 //ؼָ +#define KEY_WORD_LEN 128 //ؼֳ +//첽¼ص״̬궨 +#define ASYN_LOGIN_SUCC 1 //첽¼ɹ +#define ASYN_LOGIN_FAILED 0 //첽¼ʧ + +#define NET_SDK_MAX_VERIFICATION_CODE_LEN 32 //өʯ֤볤 +#define NET_SDK_MAX_OPERATE_CODE_LEN 64 //өʯƲ볤 +#define MAX_TIMESEGMENT_V30 8 //9000豸ʱ +#define MAX_TIMESEGMENT 4 //8000豸ʱ +#define MAX_ICR_NUM 8 //ץĻ˹ƬԤõ2013-07-09 +#define MAX_VEHICLEFLOW_INFO 24 //Ϣ +#define MAX_SHELTERNUM 4 //8000豸ڵ +#define MAX_DAYS 7 //ÿ +#define PHONENUMBER_LEN 32 //pppoeź󳤶 +#define MAX_ACCESSORY_CARD 256 //Ϣ󳤶 +#define MAX_DISKNUM_V30 33 //9000豸Ӳ/* 33Ӳ(16SATAӲ̡1eSATAӲ̺16NFS) */ +#define NET_SDK_MAX_NET_USER_NUM 64 //û + +#define NET_SDK_DISK_LOCATION_LEN 16 //Ӳλó +#define NET_SDK_SUPPLIER_NAME_LEN 32 //ӦƳ +#define NET_SDK_DISK_MODEL_LEN 64 //Ӳͺų +#define NET_SDK_MAX_DISK_VOLUME 33 //Ӳ̾ +#define NET_SDK_DISK_VOLUME_LEN 36 //Ӳ̾Ƴ + +#define MAX_DISKNUM 16 //8000豸Ӳ +#define MAX_DISKNUM_V10 8 //1.2汾֮ǰ汾 +#define CARD_READER_DESCRIPTION 32 // +#define MAX_FACE_NUM 2 // + +#define MAX_WINDOW_V30 32 //9000豸ʾ󲥷Ŵ +#define MAX_WINDOW_V40 64 //Netra 2.3.1չ +#define MAX_WINDOW 16 //8000豸Ӳ +#define MAX_VGA_V30 4 //9000豸ɽVGA +#define MAX_VGA 1 //8000豸ɽVGA + +#define MAX_USERNUM_V30 32 //9000豸û +#define MAX_USERNUM 16 //8000豸û +#define MAX_EXCEPTIONNUM_V30 32 //9000豸쳣 +#define MAX_EXCEPTIONNUM 16 //8000豸쳣 +#define MAX_LINK 6 //8000豸ͨƵ +#define MAX_ITC_EXCEPTIONOUT 32 //ץĻ󱨾 +#define MAX_SCREEN_DISPLAY_LEN 512 //Ļʾַ + +#define MAX_DECPOOLNUM 4 //·ÿͨѭ +#define MAX_DECNUM 4 //·ͨʵֻһ +#define MAX_TRANSPARENTNUM 2 //·͸ͨ +#define MAX_CYCLE_CHAN 16 //·Ѳͨ +#define MAX_CYCLE_CHAN_V30 64 //Ѳͨչ +#define MAX_DIRNAME_LENGTH 80 //Ŀ¼ +#define MAX_WINDOWS 16 //󴰿 + + +#define MAX_STRINGNUM_V30 8 //9000豸OSDַ +#define MAX_STRINGNUM 4 //8000豸OSDַ +#define MAX_STRINGNUM_EX 8 //8000չ +#define MAX_AUXOUT_V30 16 //9000豸 +#define MAX_AUXOUT 4 //8000豸 +#define MAX_HD_GROUP 16 //9000豸Ӳ +#define MAX_HD_GROUP_V40 32 //豸Ӳ +#define MAX_NFS_DISK 8 //8000豸NFSӲ +#define NET_SDK_VERSION_LIST_LEN 64 //㷨汾ֵ +#define IW_ESSID_MAX_SIZE 32 //WIFISSIDų +#define IW_ENCODING_TOKEN_MAX 32 //WIFIֽ +#define MAX_SERIAL_NUM 64 //ֵ֧͸ͨ· +#define MAX_DDNS_NUMS 10 //9000豸ddns +#define MAX_DOMAIN_NAME 64 /* */ +#define MAX_EMAIL_ADDR_LEN 48 //emailַ +#define MAX_EMAIL_PWD_LEN 32 //email볤 +#define MAX_SLAVECAMERA_NUM 8 // +#define MAX_CALIB_NUM 6 //궨ĸ +#define MAX_CALIB_NUM_EX 20 //չ궨ĸ +#define MAX_LEDDISPLAYINFO_LEN 1024 //LEDʾ +#define MAX_PEOPLE_DETECTION_NUM 8 //Ա +#define MAXPROGRESS 100 //طʱٷ +#define MAX_SERIALNUM 2 //8000豸ֵ֧Ĵ 1-232 2-485 +#define CARDNUM_LEN 20 //ų +#define PATIENTID_LEN 64 +#define CARDNUM_LEN_OUT 32 //ⲿṹ忨ų +#define MAX_VIDEOOUT_V30 4 //9000豸Ƶ +#define MAX_VIDEOOUT 2 //8000豸Ƶ + +#define MAX_PRESET_V30 256 /* 9000豸ֵ̨֧Ԥõ */ +#define MAX_TRACK_V30 256 /* 9000豸ֵ̨֧켣 */ +#define MAX_CRUISE_V30 256 /* 9000豸ֵ̨֧Ѳ */ +#define MAX_PRESET 128 /* 8000豸ֵ̨֧Ԥõ */ +#define MAX_TRACK 128 /* 8000豸ֵ̨֧켣 */ +#define MAX_CRUISE 128 /* 8000豸ֵ̨֧Ѳ */ + +#define MAX_PRESET_V40 300 /* ֵ̨֧Ԥõ */ +#define MAX_CRUISE_POINT_NUM 128 /* ֵ֧Ѳĸ */ +#define MAX_CRUISEPOINT_NUM_V50 256 //ֵ֧Ѳĸչ + +#define CRUISE_MAX_PRESET_NUMS 32 /* һѲѲ */ +#define MAX_FACE_PIC_NUM 30 /*ͼ*/ +#define LOCKGATE_TIME_NUM 4 //բʱθ + +#define MAX_SERIAL_PORT 8 //9000豸֧232 +#define MAX_PREVIEW_MODE 8 /* 豸֧ԤģʽĿ 1,4,9,16.... */ +#define MAX_MATRIXOUT 16 /* ģ */ +#define LOG_INFO_LEN 11840 /* ־Ϣ */ +#define DESC_LEN 16 /* ַ̨ */ +#define PTZ_PROTOCOL_NUM 200 /* 9000ֵ̨֧Э */ +#define IPC_PROTOCOL_NUM 50 //ipc Э + +#define MAX_AUDIO 1 //8000Խͨ +#define MAX_AUDIO_V30 2 //9000Խͨ +#define MAX_CHANNUM 16 //8000豸ͨ +#define MAX_ALARMIN 16 //8000豸󱨾 +#define MAX_ALARMOUT 4 //8000豸󱨾 +#define MAX_AUDIOCAST_CFG_TYPE 3 //ֹ֧㲥õ MP3MPEG2AAC +//9000 IPC +#define MAX_ANALOG_CHANNUM 32 //32ģͨ +#define MAX_ANALOG_ALARMOUT 32 //32·ģⱨ +#define MAX_ANALOG_ALARMIN 32 //32·ģⱨ + +#define MAX_IP_DEVICE 32 //IP豸 +#define MAX_IP_DEVICE_V40 64 // IP豸 64 IVMS 2000豸 +#define MAX_IP_CHANNEL 32 //IPͨ +#define MAX_IP_ALARMIN 128 //౨ +#define MAX_IP_ALARMOUT 64 //౨ +#define MAX_IP_ALARMIN_V40 4096 //౨ +#define MAX_IP_ALARMOUT_V40 4096 //౨ + +#define MAX_RECORD_FILE_NUM 20 // ÿɾ߿¼ļ +//SDK_V31 ATM +#define MAX_ACTION_TYPE 12 //ԶЭӽΪΪ +#define MAX_ATM_PROTOCOL_NUM 256 //ÿ뷽ʽӦATMЭ +#define ATM_CUSTOM_PROTO 1025 //ԶЭ ֵΪ1025 +#define ATM_PROTOCOL_SORT 4 //ATMЭ +#define ATM_DESC_LEN 32 //ATMַ +// SDK_V31 ATM + + +#define MAX_IPV6_LEN 64 //IPv6ַ󳤶 +#define MAX_EVENTID_LEN 64 //¼ID + +#define INVALID_VALUE_UINT32 0xffffffff //Чֵ +#define MAX_CHANNUM_V40 512 +#define MAX_MULTI_AREA_NUM 24 + +//SDK ¼ +#define COURSE_NAME_LEN 32 //γ +#define INSTRUCTOR_NAME_LEN 16 //ڿνʦ +#define COURSE_DESCRIPTION_LEN 256 //γϢ + +#define MAX_TIMESEGMENT_V40 16 //ÿڿϢ + + +#define MAX_MIX_CHAN_NUM 16 /*Ŀǰֵ֧ͨͨ + MIC + LINE IN + 4С*/ +#define MAX_LINE_IN_CHAN_NUM 16 //line inͨ +#define MAX_MIC_CHAN_NUM 16 //MICͨ +#define INQUEST_CASE_NO_LEN 64 //Ѷų +#define INQUEST_CASE_NAME_LEN 64 //ѶƳ +#define CUSTOM_INFO_LEN 64 //ԶϢ +#define INQUEST_CASE_LEN 64 //ѶϢ + + +#define MAX_FILE_ID_LEN 128 //ͼĿļID󳤶 +#define MAX_PIC_NAME_LEN 128 //ͼƬƳ + +/* ֵ֧ͨ ģIP֧ */ +#define MAX_CHANNUM_V30 ( MAX_ANALOG_CHANNUM + MAX_IP_CHANNEL )//64 +#define MAX_ALARMOUT_V40 (MAX_IP_ALARMOUT_V40 +MAX_ANALOG_ALARMOUT) //4128 +#define MAX_ALARMOUT_V30 ( MAX_ANALOG_ALARMOUT + MAX_IP_ALARMOUT )//96 +#define MAX_ALARMIN_V30 ( MAX_ANALOG_ALARMIN + MAX_IP_ALARMIN )//160 +#define MAX_ALARMIN_V40 (MAX_IP_ALARMIN_V40 +MAX_ANALOG_ALARMOUT) //4128 +#define MAX_ANALOG_ALARM_WITH_VOLT_LIMIT 16 //ܵѹ޶ģⱨ + +#define MAX_ROIDETECT_NUM 8 //ֵ֧ROI +#define MAX_LANERECT_NUM 5 //ʶ +#define MAX_FORTIFY_NUM 10 //󲼷 +#define MAX_INTERVAL_NUM 4 //ʱ +#define MAX_CHJC_NUM 3 //ʡݼַ +#define MAX_VL_NUM 5 //Ȧ +#define MAX_DRIVECHAN_NUM 16 //󳵵 +#define MAX_COIL_NUM 3 //Ȧ +#define MAX_SIGNALLIGHT_NUM 6 //źŵƸ +#define LEN_16 16 +#define LEN_32 32 +#define LEN_64 64 +#define LEN_31 31 +#define MAX_LINKAGE_CHAN_NUM 16 //ͨ +#define MAX_CABINET_COUNT 8 //ֻ֧ +#define MAX_ID_LEN 48 +#define MAX_PARKNO_LEN 16 +#define MAX_ALARMREASON_LEN 32 +#define MAX_UPGRADE_INFO_LEN 48 //ȡļƥϢ(ģ) +#define MAX_CUSTOMDIR_LEN 32 //ԶĿ¼ +#define MAX_LED_INFO_LEN 512//LEDݳ +#define MAX_VOICE_INFO_LEN 128//ݳ +#define MAX_LITLE_INFO_LEN 64 //ֽƱݳ +#define MAX_CUSTOM_INFO_LEN 64 //ֽƱԶϢݳ +#define MAX_PHONE_NUM_LEN 16 //ϵ绰ݳ +#define MAX_APP_SERIALNUM_LEN 32 //Ӧкų + +#define AUDIOTALKTYPE_G722 0 +#define AUDIOTALKTYPE_G711_MU 1 +#define AUDIOTALKTYPE_G711_A 2 +#define AUDIOTALKTYPE_MP2L2 5 +#define AUDIOTALKTYPE_G726 6 +#define AUDIOTALKTYPE_AAC 7 +#define AUDIOTALKTYPE_PCM 8 +#define AUDIOTALKTYPE_G722C 9 +#define AUDIOTALKTYPE_MP3 15 + +//packet type +#define FILE_HEAD 0 //file head +#define VIDEO_I_FRAME 1 //video I frame +#define VIDEO_B_FRAME 2 //video B frame +#define VIDEO_P_FRAME 3 //video P frame +#define AUDIO_PACKET 10 //audio packet +#define PRIVT_PACKET 11 //private packet +//E frame +#define HIK_H264_E_FRAME (1 << 6) // ǰE֡,P֡Ҳûõ +#define MAX_TRANSPARENT_CHAN_NUM 4 //ÿ͸ͨ +#define MAX_TRANSPARENT_ACCESS_NUM 4 //ÿ˿ + +//ITS +#define MAX_PARKING_STATUS 8 //λ״̬ 0޳1г2ѹ(ȼ), 3⳵λ +#define MAX_PARKING_NUM 4 //һͨ4λ (ҳλ 03) + +#define MAX_ITS_SCENE_NUM 16 //󳡾 +#define MAX_SCENE_TIMESEG_NUM 16 //󳡾ʱ +#define MAX_IVMS_IP_CHANNEL 128 //IPͨ +#define DEVICE_ID_LEN 48 //豸ų +#define MONITORSITE_ID_LEN 48 //ų +#define MAX_AUXAREA_NUM 16 //Ŀ +#define MAX_SLAVE_CHANNEL_NUM 16 //ͨ +#define MAX_DEVDESC_LEN 64 //豸Ϣ󳤶 +#define ILLEGAL_LEN 32 //Υ볤 +#define MAX_TRUCK_AXLE_NUM 10 // +#define MAX_CATEGORY_LEN 8 //ƸϢַ +#define SERIAL_NO_LEN 16 //λ + + +#define MAX_SECRETKEY_LEN 512 //Կ +#define MAX_INDEX_CODE_LEN 64 //ų +#define MAX_ILLEGAL_LEN 64 //Υַ +#define CODE_LEN 64 //Ȩ +#define ALIAS_LEN 32 //ֻ +#define MAX_SCH_TASKS_NUM 10 + +#define MAX_SERVERID_LEN 64 //IDij +#define MAX_SERVERDOMAIN_LEN 128 //󳤶 +#define MAX_AUTHENTICATEID_LEN 64 //֤ID󳤶 +#define MAX_AUTHENTICATEPASSWD_LEN 32 //֤󳤶 +#define MAX_SERVERNAME_LEN 64 //û +#define MAX_COMPRESSIONID_LEN 64 //ID󳤶 +#define MAX_SIPSERVER_ADDRESS_LEN 128 //SIPַ֧IPַ +//ѹ߱ +#define MAX_PlATE_NO_LEN 32 //ƺ󳤶 2013-09-27 +#define UPNP_PORT_NUM 12 //upnp˿ӳ˿Ŀ + +#define MAX_PEOPLE_DETECTION_NUM 8 //Ա + +#define MAX_NOTICE_NUMBER_LEN 32 //󳤶 +#define MAX_NOTICE_THEME_LEN 64 //󳤶 +#define MAX_NOTICE_DETAIL_LEN 1024 //󳤶 +#define MAX_NOTICE_PIC_NUM 6 //ϢͼƬ +#define MAX_DEV_NUMBER_LEN 32 //豸󳤶 +#define LOCK_NAME_LEN 32 // + + +#define HOLIDAY_GROUP_NAME_LEN 32 //Ƴ +#define MAX_HOLIDAY_PLAN_NUM 16 //ռƻ +#define TEMPLATE_NAME_LEN 32 //ƻģƳ +#define MAX_HOLIDAY_GROUP_NUM 16 //ƻģ +#define DOOR_NAME_LEN 32 // +#define STRESS_PASSWORD_LEN 8 //в볤 +#define SUPER_PASSWORD_LEN 8 //в볤 +#define GROUP_NAME_LEN 32 //ȺƳ +#define GROUP_COMBINATION_NUM 8 //Ⱥ +#define MULTI_CARD_GROUP_NUM 4 //ؿ +#define ACS_CARD_NO_LEN 32 //Žų +#define NET_SDK_EMPLOYEE_NO_LEN 32 //ų +#define NET_SDK_UUID_LEN 36 //UUID +#define NET_SDK_EHOME_KEY_LEN 32 //EHome Key +#define CARD_PASSWORD_LEN 8 //볤 +#define MAX_DOOR_NUM 32 // +#define MAX_CARD_RIGHT_PLAN_NUM 4 //Ȩƻ +#define MAX_GROUP_NUM_128 128 //Ⱥ +#define MAX_CARD_READER_NUM 64 // +#define MAX_SNEAK_PATH_NODE 8 // +#define MAX_MULTI_DOOR_INTERLOCK_GROUP 8 //Ż +#define MAX_INTER_LOCK_DOOR_NUM 8 //һŻ +#define MAX_CASE_SENSOR_NUM 8 //case sensor +#define MAX_DOOR_NUM_256 256 // +#define MAX_READER_ROUTE_NUM 16 //ˢѭ· +#define MAX_FINGER_PRINT_NUM 10 //ָƸ +#define MAX_CARD_READER_NUM_512 512 // +#define NET_SDK_MULTI_CARD_GROUP_NUM_20 20 //ؿ + +#define ERROR_MSG_LEN 32 //·Ϣ +#define MAX_DOOR_CODE_LEN 8 //볤 +#define MAX_LOCK_CODE_LEN 8 //볤 +#define PER_RING_PORT_NUM 2 //ÿĶ˿ +#define SENSORNAME_LEN 32 //Ƴ +#define MAX_SENSORDESCR_LEN 64 // +#define MAX_DNS_SERVER_NUM 2 //DNS +#define SENSORUNIT_LEN 32 //λ + +#define WEP_KEY_MAX_SIZE 32 //WEPԿ +#define WEP_KEY_MAX_NUM 4 //WEPԿ +#define WPA_KEY_MAX_SIZE 64 //WPAԿ + +#define MAX_SINGLE_FTPPICNAME_LEN 20 //󵥸FTPͨ +#define MAX_CAMNAME_LEN 32 //ͨ +#define MAX_FTPNAME_NUM 12 //TFP + + +#define MAX_IDCODE_LEN 128 // ʶ󳤶 +#define MAX_VERSIIN_LEN 64 //汾󳤶 +#define MAX_IDCODE_NUM 32 // ʶ +#define SDK_LEN_2048 2048 +#define SDK_MAX_IP_LEN 48 + +#define RECT_POINT_NUM 4 //ν + +#define MAX_PUBLIC_KEY_LEN 512 // Կ +#define CHIP_SERIALNO_LEN 32 //оƬкų +#define ENCRYPT_DEV_ID_LEN 20 //豸ID + +//MCUص +#define MAX_SEARCH_ID_LEN 36 //ʶ󳤶 +#define TERMINAL_NAME_LEN 64 //նƳ +#define MAX_URL_LEN 512 //URL +#define REGISTER_NAME_LEN 64 //նעGK󳤶 + +// +#define MAX_PORT_NUM 64 //˿ +#define MAX_SINGLE_CARD_PORT_NO 4 //շ˿ +#define MAX_FUNC_CARD_NUM 32 //շܿ +#define MAX_FC_CARD_NUM 33 //շ +#define MAX_REMARKS_LEN 128 //ע󳤶 +#define MAX_OUTPUT_PORT_NUM 32 //·˿ +#define MAX_SINGLE_PORT_RECVCARD_NUM 64 //˿ӵտ +#define MAX_GAMMA_X_VALUE 256 //GAMMAXȡֵ +#define NET_DEV_NAME_LEN 64 //豸Ƴ +#define NET_DEV_TYPE_NAME_LEN 64 //豸Ƴ +#define ABNORMAL_INFO_NUM 4 //쳣ʱθ + +#define PLAYLIST_NAME_LEN 64 //űƳ +#define PLAYLIST_ITEM_NUM 64 //Ŀ + +// +#define NET_SDK_MAX_LOGIN_PASSWORD_LEN 128 //û¼󳤶 +#define NET_SDK_MAX_ANSWER_LEN 256 //ȫ󳤶 +#define NET_SDK_MAX_QUESTION_LIST_LEN 32//ȫб󳤶 + +#define MAX_SCREEN_AREA_NUM 128 //Ļ +#define NET_SDK_MAX_THERMOMETRYALGNAME 128//㷨汾󳤶 +#define NET_SDK_MAX_SHIPSALGNAME 128//ֻ㷨汾󳤶 +#define NET_SDK_MAX_FIRESALGNAME 128//㷨汾󳤶 + +#define MAX_PASSPORT_NUM_LEN 16 //֤ų +#define MAX_PASSPORT_INFO_LEN 128 //ͨϢ +#define MAX_PASSPORT_NAME_LEN 64 // +#define MAX_PASSPORT_MONITOR_LEN 1024 //ռ໤Ϣ +#define MAX_NATIONALITY_LEN 16 //չ +#define MAX_PASSPORT_TYPE_LEN 4 //֤ͳ + +/*******************ȫִ begin**********************/ +#define NET_DVR_NOERROR 0 //ûд +#define NET_DVR_PASSWORD_ERROR 1 //û +#define NET_DVR_NOENOUGHPRI 2 //Ȩ޲ +#define NET_DVR_NOINIT 3 //ûгʼ +#define NET_DVR_CHANNEL_ERROR 4 //ͨŴ +#define NET_DVR_OVER_MAXLINK 5 //ӵDVRĿͻ˸ +#define NET_DVR_VERSIONNOMATCH 6 //汾ƥ +#define NET_DVR_NETWORK_FAIL_CONNECT 7 //ӷʧ +#define NET_DVR_NETWORK_SEND_ERROR 8 //ʧ +#define NET_DVR_NETWORK_RECV_ERROR 9 //ӷʧ +#define NET_DVR_NETWORK_RECV_TIMEOUT 10 //ӷݳʱ +#define NET_DVR_NETWORK_ERRORDATA 11 //͵ +#define NET_DVR_ORDER_ERROR 12 //ô +#define NET_DVR_OPERNOPERMIT 13 //޴Ȩ +#define NET_DVR_COMMANDTIMEOUT 14 //DVRִгʱ +#define NET_DVR_ERRORSERIALPORT 15 //ںŴ +#define NET_DVR_ERRORALARMPORT 16 //˿ڴ +#define NET_DVR_PARAMETER_ERROR 17 // +#define NET_DVR_CHAN_EXCEPTION 18 //ͨڴ״̬ +#define NET_DVR_NODISK 19 //ûӲ +#define NET_DVR_ERRORDISKNUM 20 //Ӳ̺Ŵ +#define NET_DVR_DISK_FULL 21 //Ӳ +#define NET_DVR_DISK_ERROR 22 //Ӳ̳ +#define NET_DVR_NOSUPPORT 23 //֧ +#define NET_DVR_BUSY 24 //æ +#define NET_DVR_MODIFY_FAIL 25 //޸IJɹ +#define NET_DVR_PASSWORD_FORMAT_ERROR 26 //ʽȷ +#define NET_DVR_DISK_FORMATING 27 //Ӳڸʽ +#define NET_DVR_DVRNORESOURCE 28 //DVRԴ +#define NET_DVR_DVROPRATEFAILED 29 //DVRʧ +#define NET_DVR_OPENHOSTSOUND_FAIL 30 //PCʧ +#define NET_DVR_DVRVOICEOPENED 31 //Խռ +#define NET_DVR_TIMEINPUTERROR 32 //ʱ벻ȷ +#define NET_DVR_NOSPECFILE 33 //طʱûָļ +#define NET_DVR_CREATEFILE_ERROR 34 //ļ +#define NET_DVR_FILEOPENFAIL 35 //ļ +#define NET_DVR_OPERNOTFINISH 36 //ϴεIJû +#define NET_DVR_GETPLAYTIMEFAIL 37 //ȡǰŵʱ +#define NET_DVR_PLAYFAIL 38 //ų +#define NET_DVR_FILEFORMAT_ERROR 39 //ļʽȷ +#define NET_DVR_DIR_ERROR 40 //· +#define NET_DVR_ALLOC_RESOURCE_ERROR 41 //Դ +#define NET_DVR_AUDIO_MODE_ERROR 42 //ģʽ +#define NET_DVR_NOENOUGH_BUF 43 //̫С +#define NET_DVR_CREATESOCKET_ERROR 44 //SOCKET +#define NET_DVR_SETSOCKET_ERROR 45 //SOCKET +#define NET_DVR_MAX_NUM 46 //ﵽ +#define NET_DVR_USERNOTEXIST 47 //û +#define NET_DVR_WRITEFLASHERROR 48 //дFLASH +#define NET_DVR_UPGRADEFAIL 49 //DVRʧ +#define NET_DVR_CARDHAVEINIT 50 //뿨Ѿʼ +#define NET_DVR_PLAYERFAILED 51 //òſijʧ +#define NET_DVR_MAX_USERNUM 52 //豸ûﵽ +#define NET_DVR_GETLOCALIPANDMACFAIL 53 //ÿͻ˵IPַַʧ +#define NET_DVR_NOENCODEING 54 //ͨûб +#define NET_DVR_IPMISMATCH 55 //IPַƥ +#define NET_DVR_MACMISMATCH 56 //MACַƥ +#define NET_DVR_UPGRADELANGMISMATCH 57 //ļԲƥ +#define NET_DVR_MAX_PLAYERPORT 58 //·ﵽ +#define NET_DVR_NOSPACEBACKUP 59 //豸û㹻ռб +#define NET_DVR_NODEVICEBACKUP 60 //ûҵָı豸 +#define NET_DVR_PICTURE_BITS_ERROR 61 //ͼλ24ɫ +#define NET_DVR_PICTURE_DIMENSION_ERROR 62 //ͼƬ*ޣ 128*256 +#define NET_DVR_PICTURE_SIZ_ERROR 63 //ͼƬСޣ100K +#define NET_DVR_LOADPLAYERSDKFAILED 64 //뵱ǰĿ¼Player Sdk +#define NET_DVR_LOADPLAYERSDKPROC_ERROR 65 //ҲPlayer Sdkij +#define NET_DVR_LOADDSSDKFAILED 66 //뵱ǰĿ¼DSsdk +#define NET_DVR_LOADDSSDKPROC_ERROR 67 //ҲDsSdkij +#define NET_DVR_DSSDK_ERROR 68 //ӲDsSdkijʧ +#define NET_DVR_VOICEMONOPOLIZE 69 //ռ +#define NET_DVR_JOINMULTICASTFAILED 70 //ಥʧ +#define NET_DVR_CREATEDIR_ERROR 71 //־ļĿ¼ʧ +#define NET_DVR_BINDSOCKET_ERROR 72 //׽ʧ +#define NET_DVR_SOCKETCLOSE_ERROR 73 //socketжϣ˴ͨжϻĿĵزɴ +#define NET_DVR_USERID_ISUSING 74 //עʱûIDڽij +#define NET_DVR_SOCKETLISTEN_ERROR 75 //ʧ +#define NET_DVR_PROGRAM_EXCEPTION 76 //쳣 +#define NET_DVR_WRITEFILE_FAILED 77 //дļʧ +#define NET_DVR_FORMAT_READONLY 78 //ֹʽֻӲ +#define NET_DVR_WITHSAMEUSERNAME 79 //ûýṹдͬû +#define NET_DVR_DEVICETYPE_ERROR 80 /*ʱ豸ͺŲƥ*/ +#define NET_DVR_LANGUAGE_ERROR 81 /*ʱԲƥ*/ +#define NET_DVR_PARAVERSION_ERROR 82 /*ʱ汾ƥ*/ +#define NET_DVR_IPCHAN_NOTALIVE 83 /*ԤʱIPͨ*/ +#define NET_DVR_RTSP_SDK_ERROR 84 /*ظIPCͨѶStreamTransClient.dllʧ*/ +#define NET_DVR_CONVERT_SDK_ERROR 85 /*תʧ*/ +#define NET_DVR_IPC_COUNT_OVERFLOW 86 /*ipͨ*/ +#define NET_DVR_MAX_ADD_NUM 87 /*ӱǩ(һļƬ64)ȸﵽ*/ +#define NET_DVR_PARAMMODE_ERROR 88 //ͼǿǣģʽӲʱͻ˽ʱֵ +#define NET_DVR_CODESPITTER_OFFLINE 89 //Ƶۺƽ̨ +#define NET_DVR_BACKUP_COPYING 90 //豸ڱ +#define NET_DVR_CHAN_NOTSUPPORT 91 // ָ֧ͨò +#define NET_DVR_CALLINEINVALID 92 // ߶λ̫л򳤶߲б +#define NET_DVR_CALCANCELCONFLICT 93 // ȡ궨ͻ˹ȫֵʵʴСߴ +#define NET_DVR_CALPOINTOUTRANGE 94 // 궨㳬Χ +#define NET_DVR_FILTERRECTINVALID 95 // ߴҪ +#define NET_DVR_DDNS_DEVOFFLINE 96 //豸ûעᵽddns +#define NET_DVR_DDNS_INTER_ERROR 97 //DDNS ڲ +#define NET_DVR_FUNCTION_NOT_SUPPORT_OS 98 //˹ָ֧ܲòϵͳ +#define NET_DVR_DEC_CHAN_REBIND 99 //ͨʾ +#define NET_DVR_INTERCOM_SDK_ERROR 100 //صǰĿ¼µԽʧ +#define NET_DVR_NO_CURRENT_UPDATEFILE 101 //ûȷ +#define NET_DVR_USER_NOT_SUCC_LOGIN 102 //ûû½ɹ +#define NET_DVR_USE_LOG_SWITCH_FILE 103 //ʹ־ļ +#define NET_DVR_POOL_PORT_EXHAUST 104 //˿ڳڰ󶨵Ķ˿Ѻľ +#define NET_DVR_PACKET_TYPE_NOT_SUPPORT 105 //װʽ +#define NET_DVR_IPPARA_IPID_ERROR 106 //IPʱIPID + +#define NET_DVR_LOAD_HCPREVIEW_SDK_ERROR 107 //Ԥʧ +#define NET_DVR_LOAD_HCVOICETALK_SDK_ERROR 108 //ʧ +#define NET_DVR_LOAD_HCALARM_SDK_ERROR 109 //ʧ +#define NET_DVR_LOAD_HCPLAYBACK_SDK_ERROR 110 //طʧ +#define NET_DVR_LOAD_HCDISPLAY_SDK_ERROR 111 //ʾʧ +#define NET_DVR_LOAD_HCINDUSTRY_SDK_ERROR 112 //ҵӦʧ +#define NET_DVR_LOAD_HCGENERALCFGMGR_SDK_ERROR 113 //ͨùʧ +#define NET_DVR_LOAD_HCCOREDEVCFG_SDK_ERROR 114 //豸úʧ +#define NET_DVR_LOAD_HCNETUTILS_SDK_ERROR 115 //HCNetUtilsʧ + +#define NET_DVR_CORE_VER_MISMATCH 121 //ʱcore汾ƥ +#define NET_DVR_CORE_VER_MISMATCH_HCPREVIEW 122 //Ԥcore汾ƥ +#define NET_DVR_CORE_VER_MISMATCH_HCVOICETALK 123 //core汾ƥ +#define NET_DVR_CORE_VER_MISMATCH_HCALARM 124 //core汾ƥ +#define NET_DVR_CORE_VER_MISMATCH_HCPLAYBACK 125 //طcore汾ƥ +#define NET_DVR_CORE_VER_MISMATCH_HCDISPLAY 126 //ʾcore汾ƥ +#define NET_DVR_CORE_VER_MISMATCH_HCINDUSTRY 127 //ҵӦcore汾ƥ +#define NET_DVR_CORE_VER_MISMATCH_HCGENERALCFGMGR 128 //ͨùcore汾ƥ + +#define NET_DVR_COM_VER_MISMATCH_HCPREVIEW 136 //ԤHCNetSDK汾ƥ +#define NET_DVR_COM_VER_MISMATCH_HCVOICETALK 137 //HCNetSDK汾ƥ +#define NET_DVR_COM_VER_MISMATCH_HCALARM 138 //HCNetSDK汾ƥ +#define NET_DVR_COM_VER_MISMATCH_HCPLAYBACK 139 //طHCNetSDK汾ƥ +#define NET_DVR_COM_VER_MISMATCH_HCDISPLAY 140 //ʾHCNetSDK汾ƥ +#define NET_DVR_COM_VER_MISMATCH_HCINDUSTRY 141 //ҵӦHCNetSDK汾ƥ +#define NET_DVR_COM_VER_MISMATCH_HCGENERALCFGMGR 142 //ͨùHCNetSDK汾ƥ + +#define NET_ERR_CONFIG_FILE_IMPORT_FAILED 145 //ļʧ +#define NET_ERR_CONFIG_FILE_EXPORT_FAILED 146 //ļʧ +#define NET_DVR_CERTIFICATE_FILE_ERROR 147 //֤ +#define NET_DVR_LOAD_SSL_LIB_ERROR 148 //SSLʧܣǰ汾ƥ䣬ҲDzڣ +#define NET_DVR_SSL_VERSION_NOT_MATCH 149 //SSL汾ƥ + +#define NET_DVR_ALIAS_DUPLICATE 150 //ظ //2011-08-31 ͨк豸°汾ddns +#define NET_DVR_INVALID_COMMUNICATION 151 //Чͨ +#define NET_DVR_USERNAME_NOT_EXIST 152 //ûڣûڣIPC5.1.7зȥˣɾIJƷòϣ +#define NET_DVR_USER_LOCKED 153 //û +#define NET_DVR_INVALID_USERID 154 //ЧûID +#define NET_DVR_LOW_LOGIN_VERSION 155 //¼汾 +#define NET_DVR_LOAD_LIBEAY32_DLL_ERROR 156 //libeay32.dllʧ +#define NET_DVR_LOAD_SSLEAY32_DLL_ERROR 157 //ssleay32.dllʧ +#define NET_ERR_LOAD_LIBICONV 158 //libiconvʧ +#define NET_ERR_SSL_CONNECT_FAILED 159 //SSLʧ +#define NET_ERR_MCAST_ADDRESS_ERROR 160 //ȡಥַ +#define NET_ERR_LOAD_ZLIB 161 //zlib.dllʧ +#define NET_ERR_OPENSSL_NO_INIT 162 //Opensslδʼ + +#define NET_DVR_SERVER_NOT_EXIST 164 //ӦķҲ,ʱĹұŻ߷ʹ +#define NET_DVR_TEST_SERVER_FAIL_CONNECT 165 //ӲԷʧ +#define NET_DVR_NAS_SERVER_INVALID_DIR 166 //NASĿ¼ʧܣĿ¼Ч +#define NET_DVR_NAS_SERVER_NOENOUGH_PRI 167 //NASĿ¼ʧܣûȨ +#define NET_DVR_EMAIL_SERVER_NOT_CONFIG_DNS 168 //ʹûDNSЧ +#define NET_DVR_EMAIL_SERVER_NOT_CONFIG_GATEWAY 169 //ûأɷʼʧܡ +#define NET_DVR_TEST_SERVER_PASSWORD_ERROR 170 //û벻ȷԷû +#define NET_DVR_EMAIL_SERVER_CONNECT_EXCEPTION_WITH_SMTP 171 //豸smtp쳣 +#define NET_DVR_FTP_SERVER_FAIL_CREATE_DIR 172 //FTPĿ¼ʧ +#define NET_DVR_FTP_SERVER_NO_WRITE_PIR 173 //FTPûдȨ +#define NET_DVR_IP_CONFLICT 174 //IPͻ +#define NET_DVR_INSUFFICIENT_STORAGEPOOL_SPACE 175 //洢ؿռ +#define NET_DVR_STORAGEPOOL_INVALID 176 //Ʒ洢Ч,ûô洢ػߴ洢ID +#define NET_DVR_EFFECTIVENESS_REBOOT 177 //ЧҪ +#define NET_ERR_ANR_ARMING_EXIST 178 //Ѿ(ô˽вӽ£ظĶʱء) +#define NET_ERR_UPLOADLINK_EXIST 179 //ϴѾ(EHOMEЭSDKЭDzͬʱֶ֧ģһЭڵʱһӽ롣) +#define NET_ERR_INCORRECT_FILE_FORMAT 180 //ļʽȷ +#define NET_ERR_INCORRECT_FILE_CONTENT 181 //ļݲȷ +#define NET_ERR_MAX_HRUDP_LINK 182 //HRUDP 豸 +#define NET_SDK_ERR_ACCESSKEY_SECRETKEY 183 // ԿԿȷ +#define NET_SDK_ERR_CREATE_PORT_MULTIPLEX 184 //˿ڸʧ +#define NET_DVR_NONBLOCKING_CAPTURE_NOTSUPPORT 185 //֧ץͼ +#define NET_SDK_ERR_FUNCTION_INVALID 186 //ѿ첽ùЧ +#define NET_SDK_ERR_MAX_PORT_MULTIPLEX 187 //Ѵﵽ˿ڸĿ +#define NET_DVR_INVALID_LINK 188 //δЧ +#define NET_DVR_ISAPI_NOT_SUPPORT 189 //ӿڲ֧ISAPIЭ + +// 2010-5-28 +// д +#define RAID_ERROR_INDEX 200 +#define NET_DVR_NAME_NOT_ONLY (RAID_ERROR_INDEX + 0) // Ѵ +#define NET_DVR_OVER_MAX_ARRAY (RAID_ERROR_INDEX + 1 ) // дﵽ +#define NET_DVR_OVER_MAX_VD (RAID_ERROR_INDEX + 2 ) // ̴ﵽ +#define NET_DVR_VD_SLOT_EXCEED (RAID_ERROR_INDEX + 3 ) // ̲λ +#define NET_DVR_PD_STATUS_INVALID (RAID_ERROR_INDEX + 4 ) // ؽ״̬ +#define NET_DVR_PD_BE_DEDICATE_SPARE (RAID_ERROR_INDEX + 5 ) // ؽΪָȱ +#define NET_DVR_PD_NOT_FREE (RAID_ERROR_INDEX + 6 ) // ؽ̷ǿ +#define NET_DVR_CANNOT_MIG2NEWMODE (RAID_ERROR_INDEX + 7 ) // ܴӵǰǨƵµ +#define NET_DVR_MIG_PAUSE (RAID_ERROR_INDEX + 8 ) // ǨƲͣ +#define NET_DVR_MIG_CANCEL (RAID_ERROR_INDEX + 9 ) // ִеǨƲȡ +#define NET_DVR_EXIST_VD (RAID_ERROR_INDEX + 10) // ϴ̣޷ɾ +#define NET_DVR_TARGET_IN_LD_FUNCTIONAL (RAID_ERROR_INDEX + 11) // Ϊɲҹ +#define NET_DVR_HD_IS_ASSIGNED_ALREADY (RAID_ERROR_INDEX + 12) // ָ̱Ϊ +#define NET_DVR_INVALID_HD_COUNT (RAID_ERROR_INDEX + 13) // ָRAIDȼƥ +#define NET_DVR_LD_IS_FUNCTIONAL (RAID_ERROR_INDEX + 14) // ޷ؽ +#define NET_DVR_BGA_RUNNING (RAID_ERROR_INDEX + 15) // ִеĺ̨ +#define NET_DVR_LD_NO_ATAPI (RAID_ERROR_INDEX + 16) // ޷ATAPI̴ +#define NET_DVR_MIGRATION_NOT_NEED (RAID_ERROR_INDEX + 17) // Ǩ +#define NET_DVR_HD_TYPE_MISMATCH (RAID_ERROR_INDEX + 18) // ̲ͬ +#define NET_DVR_NO_LD_IN_DG (RAID_ERROR_INDEX + 19) // ̣޷д +#define NET_DVR_NO_ROOM_FOR_SPARE (RAID_ERROR_INDEX + 20) // ̿ռС޷ָΪȱ +#define NET_DVR_SPARE_IS_IN_MULTI_DG (RAID_ERROR_INDEX + 21) // ѱΪijȱ +#define NET_DVR_DG_HAS_MISSING_PD (RAID_ERROR_INDEX + 22) // ȱ + +// x86 64bit nvr 2012-02-04 +#define NET_DVR_NAME_EMPTY (RAID_ERROR_INDEX + 23) /*Ϊ*/ +#define NET_DVR_INPUT_PARAM (RAID_ERROR_INDEX + 24) /**/ +#define NET_DVR_PD_NOT_AVAILABLE (RAID_ERROR_INDEX + 25) /*̲*/ +#define NET_DVR_ARRAY_NOT_AVAILABLE (RAID_ERROR_INDEX + 26) /*в*/ +#define NET_DVR_PD_COUNT (RAID_ERROR_INDEX + 27) /*ȷ*/ +#define NET_DVR_VD_SMALL (RAID_ERROR_INDEX + 28) /*̫С*/ +#define NET_DVR_NO_EXIST (RAID_ERROR_INDEX + 29) /**/ +#define NET_DVR_NOT_SUPPORT (RAID_ERROR_INDEX + 30) /*ָ֧ò*/ +#define NET_DVR_NOT_FUNCTIONAL (RAID_ERROR_INDEX + 31) /*״̬״̬*/ +#define NET_DVR_DEV_NODE_NOT_FOUND (RAID_ERROR_INDEX + 32) /*豸ڵ㲻*/ +#define NET_DVR_SLOT_EXCEED (RAID_ERROR_INDEX + 33) /*λﵽ*/ +#define NET_DVR_NO_VD_IN_ARRAY (RAID_ERROR_INDEX + 34) /*ϲ*/ +#define NET_DVR_VD_SLOT_INVALID (RAID_ERROR_INDEX + 35) /*̲λЧ*/ +#define NET_DVR_PD_NO_ENOUGH_SPACE (RAID_ERROR_INDEX + 36) /*̿ռ䲻*/ +#define NET_DVR_ARRAY_NONFUNCTION (RAID_ERROR_INDEX + 37) /*ֻд״̬вܽǨ*/ +#define NET_DVR_ARRAY_NO_ENOUGH_SPACE (RAID_ERROR_INDEX + 38) /*пռ䲻*/ +#define NET_DVR_STOPPING_SCANNING_ARRAY (RAID_ERROR_INDEX + 39) /*ִаȫ̻ɨ*/ +#define NET_DVR_NOT_SUPPORT_16T (RAID_ERROR_INDEX + 40) /*ִ֧16T*/ +#define NET_DVR_ARRAY_FORMATING (RAID_ERROR_INDEX + 41) /*ִиʽ޷ɾ*/ +#define NET_DVR_QUICK_SETUP_PD_COUNT (RAID_ERROR_INDEX + 42) /*һҪ*/ + +//豸δʱ¼ʧܣش +#define NET_DVR_ERROR_DEVICE_NOT_ACTIVATED 250//豸δ +//SDK豸û߼ʱΪʱ +#define NET_DVR_ERROR_RISK_PASSWORD 251 //зյ +//Ѽ豸ٴμʱش +#define NET_DVR_ERROR_DEVICE_HAS_ACTIVATED 252//豸Ѽ + + +// ܴ +#define VCA_ERROR_INDEX 300 // ܴ +#define NET_DVR_ID_ERROR (VCA_ERROR_INDEX + 0) // ID +#define NET_DVR_POLYGON_ERROR (VCA_ERROR_INDEX + 1) // βҪ +#define NET_DVR_RULE_PARAM_ERROR (VCA_ERROR_INDEX + 2) // +#define NET_DVR_RULE_CFG_CONFLICT (VCA_ERROR_INDEX + 3) // Ϣͻ +#define NET_DVR_CALIBRATE_NOT_READY (VCA_ERROR_INDEX + 4) // ǰûб궨Ϣ +#define NET_DVR_CAMERA_DATA_ERROR (VCA_ERROR_INDEX + 5) // +#define NET_DVR_CALIBRATE_DATA_UNFIT (VCA_ERROR_INDEX + 6) // Ȳбڱ궨 +#define NET_DVR_CALIBRATE_DATA_CONFLICT (VCA_ERROR_INDEX + 7) // 궨Ϊе㹲߻λ̫ +#define NET_DVR_CALIBRATE_CALC_FAIL (VCA_ERROR_INDEX + 8) // 궨ֵʧ +#define NET_DVR_CALIBRATE_LINE_OUT_RECT (VCA_ERROR_INDEX + 9) // 궨߳Ӿο +#define NET_DVR_ENTER_RULE_NOT_READY (VCA_ERROR_INDEX + 10) // ûý +#define NET_DVR_AID_RULE_NO_INCLUDE_LANE (VCA_ERROR_INDEX + 11) // ͨ¼ûаֵӵºУ +#define NET_DVR_LANE_NOT_READY (VCA_ERROR_INDEX + 12) // ǰûó +#define NET_DVR_RULE_INCLUDE_TWO_WAY (VCA_ERROR_INDEX + 13) // ¼а2ֲͬ +#define NET_DVR_LANE_TPS_RULE_CONFLICT (VCA_ERROR_INDEX + 14) // ݹͻ +#define NET_DVR_NOT_SUPPORT_EVENT_TYPE (VCA_ERROR_INDEX + 15) // ֵ֧¼ +#define NET_DVR_LANE_NO_WAY (VCA_ERROR_INDEX + 16) // ûз +#define NET_DVR_SIZE_FILTER_ERROR (VCA_ERROR_INDEX + 17) // ߴ˿򲻺 +#define NET_DVR_LIB_FFL_NO_FACE (VCA_ERROR_INDEX + 18) // 㶨λʱͼû +#define NET_DVR_LIB_FFL_IMG_TOO_SMALL (VCA_ERROR_INDEX + 19) // 㶨λʱͼ̫С +#define NET_DVR_LIB_FD_IMG_NO_FACE (VCA_ERROR_INDEX + 20) // ͼʱͼû +#define NET_DVR_LIB_FACE_TOO_SMALL (VCA_ERROR_INDEX + 21) // ģʱ̫С +#define NET_DVR_LIB_FACE_QUALITY_TOO_BAD (VCA_ERROR_INDEX + 22) // ģʱͼ̫ +#define NET_DVR_KEY_PARAM_ERR (VCA_ERROR_INDEX + 23) //߼ô +#define NET_DVR_CALIBRATE_DATA_ERR (VCA_ERROR_INDEX + 24) //궨Ŀ󣬻ֵ󣬻㳬ƽ +#define NET_DVR_CALIBRATE_DISABLE_FAIL (VCA_ERROR_INDEX + 25) //ùȡ궨 +#define NET_DVR_VCA_LIB_FD_SCALE_OUTRANGE (VCA_ERROR_INDEX + 26) //˿ĿСֵС˿Ŀֵ +#define NET_DVR_LIB_FD_REGION_TOO_LARGE (VCA_ERROR_INDEX + 27) //ǰΧ󡣼Ϊͼ2/3 +#define NET_DVR_TRIAL_OVERDUE (VCA_ERROR_INDEX + 28) //ðѽ +#define NET_DVR_CONFIG_FILE_CONFLICT (VCA_ERROR_INDEX + 29) //豸ļͻܹзòʾ +//㷨ش +#define NET_DVR_FR_FPL_FAIL (VCA_ERROR_INDEX + 30) // 㶨λʧ +#define NET_DVR_FR_IQA_FAIL (VCA_ERROR_INDEX + 31) // ʧ +#define NET_DVR_FR_FEM_FAIL (VCA_ERROR_INDEX + 32) // ȡʧ +#define NET_DVR_FPL_DT_CONF_TOO_LOW (VCA_ERROR_INDEX + 33) // 㶨λʱŶȹ +#define NET_DVR_FPL_CONF_TOO_LOW (VCA_ERROR_INDEX + 34) // 㶨λŶȹ +#define NET_DVR_E_DATA_SIZE (VCA_ERROR_INDEX + 35) // ݳȲƥ +#define NET_DVR_FR_MODEL_VERSION_ERR (VCA_ERROR_INDEX + 36) // ģеģͰ汾 +#define NET_DVR_FR_FD_FAIL (VCA_ERROR_INDEX + 37) // ʶʧ +#define NET_DVR_FA_NORMALIZE_ERR (VCA_ERROR_INDEX + 38) // һ +// +#define NET_DVR_DOG_PUSTREAM_NOT_MATCH (VCA_ERROR_INDEX + 39) // ܹǰȡ豸Ͳƥ +#define NET_DVR_DEV_PUSTREAM_NOT_MATCH (VCA_ERROR_INDEX + 40) // ǰȡ豸汾ƥ +#define NET_DVR_PUSTREAM_ALREADY_EXISTS (VCA_ERROR_INDEX + 41) // 豸ͨѾӹǰ豸 +#define NET_DVR_SEARCH_CONNECT_FAILED (VCA_ERROR_INDEX + 42) // Ӽʧ +#define NET_DVR_INSUFFICIENT_DISK_SPACE (VCA_ERROR_INDEX + 43) // ɴ洢Ӳ̿ռ䲻 +#define NET_DVR_DATABASE_CONNECTION_FAILED (VCA_ERROR_INDEX + 44) // ݿʧ +#define NET_DVR_DATABASE_ADM_PW_ERROR (VCA_ERROR_INDEX + 45) // ݿû +#define NET_DVR_DECODE_YUV (VCA_ERROR_INDEX + 46) // ʧ +#define NET_DVR_IMAGE_RESOLUTION_ERROR (VCA_ERROR_INDEX + 47) // +#define NET_DVR_CHAN_WORKMODE_ERROR (VCA_ERROR_INDEX + 48) // + +#define NET_DVR_RTSP_ERROR_NOENOUGHPRI 401 //Ȩޣ401ʱת +#define NET_DVR_RTSP_ERROR_ALLOC_RESOURCE 402 //Դʧ +#define NET_DVR_RTSP_ERROR_PARAMETER 403 // +#define NET_DVR_RTSP_ERROR_NO_URL 404 //ָURLַڣ404ʱת +#define NET_DVR_RTSP_ERROR_FORCE_STOP 406 //û;ǿ˳ + +#define NET_DVR_RTSP_GETPORTFAILED 407 //rtsp õ˿ڴ +#define NET_DVR_RTSP_DESCRIBERROR 410 //rtsp decribe +#define NET_DVR_RTSP_DESCRIBESENDTIMEOUT 411 //rtsp decribe ͳʱ +#define NET_DVR_RTSP_DESCRIBESENDERROR 412 //rtsp decribe ʧ +#define NET_DVR_RTSP_DESCRIBERECVTIMEOUT 413 //rtsp decribe ճʱ +#define NET_DVR_RTSP_DESCRIBERECVDATALOST 414 //rtsp decribe ݴ +#define NET_DVR_RTSP_DESCRIBERECVERROR 415 //rtsp decribe ʧ +#define NET_DVR_RTSP_DESCRIBESERVERERR 416 //rtsp decribe ش״̬ + +#define NET_DVR_RTSP_SETUPERROR 420 //rtsp setup +#define NET_DVR_RTSP_SETUPSENDTIMEOUT 421 //rtsp setup ͳʱ +#define NET_DVR_RTSP_SETUPSENDERROR 422 //rtsp setup ʹ +#define NET_DVR_RTSP_SETUPRECVTIMEOUT 423 //rtsp setup ճʱ +#define NET_DVR_RTSP_SETUPRECVDATALOST 424 //rtsp setup ݴ +#define NET_DVR_RTSP_SETUPRECVERROR 425 //rtsp setup ʧ +#define NET_DVR_RTSP_OVER_MAX_CHAN 426 //߷Դ㣬453ʱת롣 +#define NET_DVR_RTSP_SETUPSERVERERR 427 //rtsp setup ش״̬ + +#define NET_DVR_RTSP_PLAYERROR 430 //rtsp play +#define NET_DVR_RTSP_PLAYSENDTIMEOUT 431 //rtsp play ͳʱ +#define NET_DVR_RTSP_PLAYSENDERROR 432 //rtsp play ʹ +#define NET_DVR_RTSP_PLAYRECVTIMEOUT 433 //rtsp play ճʱ +#define NET_DVR_RTSP_PLAYRECVDATALOST 434 //rtsp play ݴ +#define NET_DVR_RTSP_PLAYRECVERROR 435 //rtsp play ʧ +#define NET_DVR_RTSP_PLAYSERVERERR 436 //rtsp play ش״̬ + +#define NET_DVR_RTSP_TEARDOWNERROR 440 //rtsp teardown +#define NET_DVR_RTSP_TEARDOWNSENDTIMEOUT 441 //rtsp teardown ͳʱ +#define NET_DVR_RTSP_TEARDOWNSENDERROR 442 //rtsp teardown ʹ +#define NET_DVR_RTSP_TEARDOWNRECVTIMEOUT 443 //rtsp teardown ճʱ +#define NET_DVR_RTSP_TEARDOWNRECVDATALOST 444 //rtsp teardown ݴ +#define NET_DVR_RTSP_TEARDOWNRECVERROR 445 //rtsp teardown ʧ +#define NET_DVR_RTSP_TEARDOWNSERVERERR 446 //rtsp teardown ش״̬ + +#define NET_PLAYM4_NOERROR 500 //no error +#define NET_PLAYM4_PARA_OVER 501 //input parameter is invalid; +#define NET_PLAYM4_ORDER_ERROR 502 //The order of the function to be called is error. +#define NET_PLAYM4_TIMER_ERROR 503 //Create multimedia clock failed; +#define NET_PLAYM4_DEC_VIDEO_ERROR 504 //Decode video data failed. +#define NET_PLAYM4_DEC_AUDIO_ERROR 505 //Decode audio data failed. +#define NET_PLAYM4_ALLOC_MEMORY_ERROR 506 //Allocate memory failed. +#define NET_PLAYM4_OPEN_FILE_ERROR 507 //Open the file failed. +#define NET_PLAYM4_CREATE_OBJ_ERROR 508 //Create thread or event failed +#define NET_PLAYM4_CREATE_DDRAW_ERROR 509 //Create DirectDraw object failed. +#define NET_PLAYM4_CREATE_OFFSCREEN_ERROR 510 //failed when creating off-screen surface. +#define NET_PLAYM4_BUF_OVER 511 //buffer is overflow +#define NET_PLAYM4_CREATE_SOUND_ERROR 512 //failed when creating audio device. +#define NET_PLAYM4_SET_VOLUME_ERROR 513 //Set volume failed +#define NET_PLAYM4_SUPPORT_FILE_ONLY 514 //The function only support play file. +#define NET_PLAYM4_SUPPORT_STREAM_ONLY 515 //The function only support play stream. +#define NET_PLAYM4_SYS_NOT_SUPPORT 516 //System not support. +#define NET_PLAYM4_FILEHEADER_UNKNOWN 517 //No file header. +#define NET_PLAYM4_VERSION_INCORRECT 518 //The version of decoder and encoder is not adapted. +#define NET_PALYM4_INIT_DECODER_ERROR 519 //Initialize decoder failed. +#define NET_PLAYM4_CHECK_FILE_ERROR 520 //The file data is unknown. +#define NET_PLAYM4_INIT_TIMER_ERROR 521 //Initialize multimedia clock failed. +#define NET_PLAYM4_BLT_ERROR 522 //Blt failed. +#define NET_PLAYM4_UPDATE_ERROR 523 //Update failed. +#define NET_PLAYM4_OPEN_FILE_ERROR_MULTI 524 //openfile error, streamtype is multi +#define NET_PLAYM4_OPEN_FILE_ERROR_VIDEO 525 //openfile error, streamtype is video +#define NET_PLAYM4_JPEG_COMPRESS_ERROR 526 //JPEG compress error +#define NET_PLAYM4_EXTRACT_NOT_SUPPORT 527 //Don't support the version of this file. +#define NET_PLAYM4_EXTRACT_DATA_ERROR 528 //extract video data failed. + +//תװ +#define NET_CONVERT_ERROR_NOT_SUPPORT 581 //convert not support + +//Խ +#define NET_AUDIOINTERCOM_OK 600 //޴ +#define NET_AUDIOINTECOM_ERR_NOTSUPORT 601 //֧ +#define NET_AUDIOINTECOM_ERR_ALLOC_MEMERY 602 //ڴ +#define NET_AUDIOINTECOM_ERR_PARAMETER 603 // +#define NET_AUDIOINTECOM_ERR_CALL_ORDER 604 //ô +#define NET_AUDIOINTECOM_ERR_FIND_DEVICE 605 //δ豸 +#define NET_AUDIOINTECOM_ERR_OPEN_DEVICE 606 //ܴ豸 +#define NET_AUDIOINTECOM_ERR_NO_CONTEXT 607 //豸ij +#define NET_AUDIOINTECOM_ERR_NO_WAVFILE 608 //WAVļ +#define NET_AUDIOINTECOM_ERR_INVALID_TYPE 609 //ЧWAV +#define NET_AUDIOINTECOM_ERR_ENCODE_FAIL 610 //ʧ +#define NET_AUDIOINTECOM_ERR_DECODE_FAIL 611 //ʧ +#define NET_AUDIOINTECOM_ERR_NO_PLAYBACK 612 //ʧ +#define NET_AUDIOINTECOM_ERR_DENOISE_FAIL 613 //ʧ +#define NET_AUDIOINTECOM_ERR_UNKOWN 619 //δ֪ + +#define NET_QOS_OK 700 //no error +#define NET_QOS_ERROR (NET_QOS_OK - 1) //qos error +#define NET_QOS_ERR_INVALID_ARGUMENTS (NET_QOS_OK - 2) //invalid arguments +#define NET_QOS_ERR_SESSION_NOT_FOUND (NET_QOS_OK - 3) //session net found +#define NET_QOS_ERR_LIB_NOT_INITIALIZED (NET_QOS_OK - 4) //lib not initialized +#define NET_QOS_ERR_OUTOFMEM (NET_QOS_OK - 5) //outtofmem +#define NET_QOS_ERR_PACKET_UNKNOW (NET_QOS_OK - 10) //packet unknow +#define NET_QOS_ERR_PACKET_VERSION (NET_QOS_OK - 11) //packet version error +#define NET_QOS_ERR_PACKET_LENGTH (NET_QOS_OK - 12) //packet length error +#define NET_QOS_ERR_PACKET_TOO_BIG (NET_QOS_OK - 13) //packet too big +#define NET_QOS_ERR_SCHEDPARAMS_INVALID_BANDWIDTH (NET_QOS_OK - 20) //schedparams invalid bandwidth +#define NET_QOS_ERR_SCHEDPARAMS_BAD_FRACTION (NET_QOS_OK - 21) //schedparams bad fraction +#define NET_QOS_ERR_SCHEDPARAMS_BAD_MINIMUM_INTERVAL (NET_QOS_OK - 22) //schedparams bad minimum interval + +#define NET_ERROR_TRUNK_LINE 711 //ϵͳѱɸ +#define NET_ERROR_MIXED_JOINT 712 //ܽлƴ +#define NET_ERROR_DISPLAY_SWITCH 713 //ܽʾͨл +#define NET_ERROR_USED_BY_BIG_SCREEN 714 //Դռ +#define NET_ERROR_USE_OTHER_DEC_RESOURCE 715 //ʹϵͳԴ +#define NET_ERROR_DISP_MODE_SWITCH 716 //ʾͨʾ״̬л +#define NET_ERROR_SCENE_USING 717 //ʹ +#define NET_ERR_NO_ENOUGH_DEC_RESOURCE 718 //Դ +#define NET_ERR_NO_ENOUGH_FREE_SHOW_RESOURCE 719 //Դ +#define NET_ERR_NO_ENOUGH_VIDEO_MEMORY 720 //ԴԴ +#define NET_ERR_MAX_VIDEO_NUM 721 //һ϶Դ +#define NET_ERR_WIN_COVER_FREE_SHOW_AND_NORMAL 722 //ڿԽ˳ںͷdz +#define NET_ERR_FREE_SHOW_WIN_SPLIT 723 //Դڲַ֧ +#define NET_ERR_INAPPROPRIATE_WIN_FREE_SHOW 724 //Ĵڲֿ֧ +#define NET_DVR_TRANSPARENT_WIN_NOT_SUPPORT_SPLIT 725 //͸ȵĴڲַ֧ +#define NET_DVR_SPLIT_WIN_NOT_SUPPORT_TRANSPARENT 726 //Ĵڲ֧͸ +#define NET_ERR_MAX_LOGO_NUM 727 //logoﵽ +#define NET_ERR_MAX_WIN_LOOP_NUM 728 //Ѳﵽ +#define NET_ERR_VIRTUAL_LED_VERTICAL_CROSS 729 //LED +#define NET_ERR_MAX_VIRTUAL_LED_HEIGHT 730 //LED߶ȳ +#define NET_ERR_VIRTUAL_LED_ILLEGAL_CHARACTER 731 //LEDݰǷַ +#define NET_ERR_BASEMAP_NOT_EXIST 732 //ͼͼƬ +#define NET_ERR_LED_NOT_SUPPORT_VIRTUAL_LED 733 //LEDĻ֧LED +#define NET_ERR_LED_RESOLUTION_NOT_SUPPORT 734 //LEDֱʲ֧ +#define NET_ERR_PLAN_OVERDUE 735 //Ԥڣٵ +#define NET_ERR_PROCESSER_MAX_SCREEN_BLK 736 //źſԽĻ +#define NET_ERR_WND_SIZE_TOO_SMALL 737 //ڿ̫С +#define NET_ERR_WND_SPLIT_NOT_SUPPORT_ROAM 738 //ڲ֧ +#define NET_ERR_OUTPUT_ONE_BOARD_ONE_WALL 739 //ͬһӰֻܰ󶨵ͬһǽ +#define NET_ERR_WND_CANNOT_LCD_AND_LED_OUTPUT 740 //ڲͬʱLCDLED +#define NET_ERR_MAX_OSD_NUM 741 //OSDﵽ + +#define NET_SDK_CANCEL_WND_TOPKEEP_ATTR_FIRST 751 //ȡöִڵöԲܽõײ +#define NET_SDK_ERR_LED_SCREEN_CHECKING 752 //УLEDĻ +#define NET_SDK_ERR_NOT_SUPPORT_SINGLE_RESOLUTION 753 //LCD/LEDڰֵ֧֮ڵķֱ +#define NET_SDK_ERR_LED_RESOLUTION_MISMATCHED 754 //ڵLEDֱʺڵLEDֱʲƥ䣬Ҫͬеȸߡͬеȿ + + +#define NET_SDK_ERR_MAX_VIRTUAL_LED_WIDTH 755 //LEDȳޣֵСֵ +#define NET_SDK_ERR_MAX_VIRTUAL_LED_IN_SCREEN 756 //LED +#define NET_SDK_ERR_MAX_VIRTUAL_LED_IN_WALL 757 //ǽLED +#define NET_SDK_ERR_VIRTUAL_LED_OVERLAP 758 //LEDص +#define NET_SDK_ERR_VIRTUAL_LED_TYPE 759 //ʹ +#define NET_SDK_ERR_VIRTUAL_LED_COLOUR 760 //ɫ +#define NET_SDK_ERR_VIRTUAL_LED_MOVE_DIRECTION 761 //ƶ +#define NET_SDK_ERR_VIRTUAL_LED_MOVE_MODE 762 //ƶģʽ +#define NET_SDK_ERR_VIRTUAL_LED_MOVE_SPEED 763 //ƶٶȴ +#define NET_SDK_ERR_VIRTUAL_LED_DISP_MODE 764 //ʾģʽ +#define NET_SDK_ERR_VIRTUAL_LED_NO 765 //LEDŴ +#define NET_SDK_ERR_VIRTUAL_LED_PARA 766 //LEDô󣬰ṹ +#define NET_SDK_ERR_BASEMAP_POSITION 767 //ͼڿ߲ +#define NET_SDK_ERR_BASEMAP_PICTURE_LEN 768 //ͼͼƬȳ +#define NET_SDK_ERR_BASEMAP_PICTURE_RESOLUTION 769 //ͼͼƬֱʴ +#define NET_SDK_ERR_BASEMAP_PICTURE_FORMAT 770 //ͼͼƬʽ +#define NET_SDK_ERR_MAX_VIRTUAL_LED_NUM 771 //豸ֵ֧LED +#define NET_SDK_ERR_MAX_TIME_VIRTUAL_LED_IN_WALL 772 //ǽֵ֧ʱLED + +#define NET_ERR_TERMINAL_BUSY 780 //նæն˴ڻ + +#define NET_ERR_DATA_RETURNED_ILLEGAL 790 //豸صݲϷ +#define NET_DVR_FUNCTION_RESOURCE_USAGE_ERROR 791 //豸ռԴ¸ù޷ + +#define NET_DVR_ERR_IMPORT_EMPTY_FILE 792 //ļΪ +#define NET_DVR_ERR_IMPORT_TOO_LARGE_FILE 793 //ļ +#define NET_DVR_ERR_BAD_IPV4_ADDRESS 794 //IPV4ַЧ +#define NET_DVR_ERR_BAD_NET_MASK 795 //ַЧ +#define NET_DVR_ERR_INVALID_NET_GATE_ADDRESS 796 //صַЧ +#define NET_DVR_ERR_BAD_DNS 797 //DNSַЧ +#define NET_DVR_ERR_ILLEGAL_PASSWORD 798 //벻ܰû + +#define NET_DVR_DEV_NET_OVERFLOW 800 //豸 +#define NET_DVR_STATUS_RECORDFILE_WRITING_NOT_LOCK 801 //¼ļ¼޷ +#define NET_DVR_STATUS_CANT_FORMAT_LITTLE_DISK 802 //Ӳ̫С޷ʽ + +//N+1 +#define NET_SDK_ERR_REMOTE_DISCONNECT 803 //Զ޷ +#define NET_SDK_ERR_RD_ADD_RD 804 //ӱ +#define NET_SDK_ERR_BACKUP_DISK_EXCEPT 805 //쳣 +#define NET_SDK_ERR_RD_LIMIT 806 //Ѵ +#define NET_SDK_ERR_ADDED_RD_IS_WD 807 //ӵıǹ +#define NET_SDK_ERR_ADD_ORDER_WRONG 808 //˳ûбΪӹ +#define NET_SDK_ERR_WD_ADD_WD 809 //ӹ +#define NET_SDK_ERR_WD_SERVICE_EXCETP 810 //CVR쳣 +#define NET_SDK_ERR_RD_SERVICE_EXCETP 811 //CVR쳣 +#define NET_SDK_ERR_ADDED_WD_IS_RD 812 //ӵĹDZ +#define NET_SDK_ERR_PERFORMANCE_LIMIT 813 //ܴﵽ +#define NET_SDK_ERR_ADDED_DEVICE_EXIST 814 //ӵ豸Ѿ + +//Ѷ +#define NET_SDK_ERR_INQUEST_RESUMING 815 //Ѷָ +#define NET_SDK_ERR_RECORD_BACKUPING 816 //Ѷ +#define NET_SDK_ERR_DISK_PLAYING 817 //̻ط +#define NET_SDK_ERR_INQUEST_STARTED 818 //Ѷѿ +#define NET_SDK_ERR_LOCAL_OPERATING 819 //ز +#define NET_SDK_ERR_INQUEST_NOT_START 820 //Ѷδ +//Netra3.1.0 +#define NET_SDK_ERR_CHAN_AUDIO_BIND 821 //ͨδ󶨻Խʧ +//ƴ洢 +#define NET_DVR_N_PLUS_ONE_MODE 822 //豸ǰN+1ģʽ +#define NET_DVR_CLOUD_STORAGE_OPENED 823 //ƴ洢ģʽѿ + +#define NET_DVR_ERR_OPER_NOT_ALLOWED 824 //豸N+0ӹ״̬ò +#define NET_DVR_ERR_NEED_RELOCATE 825 //豸N+0ӹ״̬ҪȡضϢ² + +//ͥ +#define NET_SDK_ERR_IR_PORT_ERROR 830 //ڴ +#define NET_SDK_ERR_IR_CMD_ERROR 831 //ڵŴ +#define NET_SDK_ERR_NOT_INQUESTING 832 //豸ڷѶ״̬ +#define NET_SDK_ERR_INQUEST_NOT_PAUSED 833 //豸ڷͣ״̬ +#define NET_DVR_CHECK_PASSWORD_MISTAKE_ERROR 834 //У +#define NET_DVR_CHECK_PASSWORD_NULL_ERROR 835 //У벻Ϊ +#define NET_DVR_UNABLE_CALIB_ERROR 836 // ǰ޷궨 +#define NET_DVR_PLEASE_CALIB_ERROR 837 //ɱ궨 +#define NET_DVR_ERR_PANORAMIC_CAL_EMPTY 838 //Flashȫ궨Ϊ +#define NET_DVR_ERR_CALIB_FAIL_PLEASEAGAIN 839 //궨ʧܣ±궨(Calibration failed. Please calibrate again.) +#define NET_DVR_ERR_DETECTION_LINE 840 //ôùߣȷλںɫ(Please set detection line again. The detection line should be within the red count area.) +#define NET_DVR_ERR_TURN_OFF_IMAGE_PARA 841 //ȹرͼл(Please turn off the image parameters switch first.) +#define NET_DVR_EXCEED_FACE_IMAGES_ERROR 843 //ͼƬ +#define NET_DVR_ANALYSIS_FACE_IMAGES_ERROR 844 //ͼƬʶʧ +#define NET_ERR_ALARM_INPUT_OCCUPIED 845 //A<-1ڴץAlarm Input No. A<-1 is used to trigger vehicle capture. +#define NET_DVR_FACELIB_DATABASE_ERROR 846 //ݿ汾ƥ +#define NET_DVR_FACELIB_DATA_ERROR 847 //ݴ +#define NET_DVR_FACE_DATA_ID_ERROR 848 //PIDЧ +#define NET_DVR_FACELIB_ID_ERROR 849 //IDЧ +#define NET_DVR_EXCEED_FACE_LIBARY_ERROR 850 // +#define NET_DVR_PIC_ANALYSIS_NO_TARGET_ERROR 851 //ͼƬδʶĿ +#define NET_DVR_SUBPIC_ANALYSIS_MODELING_ERROR 852 //ͼģʧ +#define NET_DVR_PIC_ANALYSIS_NO_RESOURCE_ERROR 853 //޶Ӧܷ֧ͼƬʶ +#define NET_DVR_ANALYSIS_ENGINES_NO_RESOURCE_ERROR 854//޷Դ +#define NET_DVR_ANALYSIS_ENGINES_USAGE_EXCEED_ERROR 855//ʹʳɣѴ100% +#define NET_DVR_EXCEED_HUMANMISINFO_FILTER_ENABLED_ERROR 856 //ȥͨ +#define NET_DVR_NAME_ERROR 857 //ƴ +#define NET_DVR_NAME_EXIST_ERROR 858 //Ѵ +#define NET_DVR_FACELIB_PIC_IMPORTING_ERROR 859 //⵼ͼƬ +#define NET_DVR_ERR_CALIB_POSITION 860 //궨λó˶Χ +#define NET_DVR_ERR_DELETE 861 //޷ɾ +#define NET_DVR_ERR_SCENE_ID 862 //IDЧ +#define NET_DVR_ERR_CALIBING 863 //궨 +#define NET_DVR_PIC_FORMAT_ERROR 864 //ͼƬʽ +#define NET_DVR_PIC_RESOLUTION_INVALID_ERROR 865 //ͼƬֱЧ +#define NET_DVR_PIC_SIZE_EXCEED_ERROR 866 //ͼƬ +#define NET_DVR_PIC_ANALYSIS_TARGRT_NUM_EXCEED_ERROR 867 //ͼƬĿ +#define NET_DVR_ANALYSIS_ENGINES_LOADING_ERROR 868//ʼ +#define NET_DVR_ANALYSIS_ENGINES_ABNORMA_ERROR 869//쳣 +#define NET_DVR_ANALYSIS_ENGINES_FACELIB_IMPORTING 870//ڵ +#define NET_DVR_NO_DATA_FOR_MODELING_ERROR 871 //޴ģ +#define NET_DVR_FACE_DATA_MODELING_ERROR 872 //豸ڽͼƬģֲ֧ +#define NET_ERR_FACELIBDATA_OVERLIMIT 873 //豸ֵ֧ƣݣ +#define NET_DVR_ANALYSIS_ENGINES_ASSOCIATED_CHANNEL 874//ѹͨ +#define NET_DVR_ERR_CUSTOMID_LEN 875 //ϲԶIDijС32ַ +#define NET_DVR_ERR_CUSTOMFACELIBID_REPEAT 876 //ϲ·ظԶID +#define NET_DVR_ERR_CUSTOMHUMANID_REPEAT 877 //ϲ·ظԶԱID +#define NET_DVR_ERR_URL_DOWNLOAD_FAIL 878 //urlʧ +#define NET_DVR_ERR_URL_DOWNLOAD_NOTSTART 879 //urlδʼ + +#define NET_DVR_CFG_FILE_SECRETKEY_ERROR 880 //ļȫУԿ +#define NET_DVR_WDR_NOTDISABLE_ERROR 881 //ȹرͨǰҹתģʽµĿ̬ +#define NET_DVR_HLC_NOTDISABLE_ERROR 882 //ȹرͨǰҹתģʽµǿ + +#define NET_DVR_THERMOMETRY_REGION_OVERSTEP_ERROR 883 //Խ + + +#define NET_DVR_ERR_MODELING_DEVICEINTERNAL 884 //ģʧܣ豸ڲ +#define NET_DVR_ERR_MODELING_FACE 885 //ģʧܣģ +#define NET_DVR_ERR_MODELING_FACEGRADING 886 //ģʧܣִ +#define NET_DVR_ERR_MODELING_FACEGFEATURE 887 //ģʧܣȡ +#define NET_DVR_ERR_MODELING_FACEGANALYZING 888 //ģʧܣȡ + +#define NET_DVR_ERR_STREAM_LIMIT 889 //ܳޣȡ· +#define NET_DVR_ERR_STREAM_DESCRIPTION 890 // +#define NET_DVR_ERR_STREAM_DELETE 891 //ʹ޷ɾ +#define NET_DVR_ERR_CUSTOMSTREAM_NAME 892 //ԶΪջ򲻺Ϸ +#define NET_DVR_ERR_CUSTOMSTREAM_NOTEXISTED 893 //Զ + +#define NET_DVR_ERR_TOO_SHORT_CALIBRATING_TIME 894 //궨ʱ̫ +#define NET_DVR_ERR_AUTO_CALIBRATE_FAILED 895 //Զ궨ʧ +#define NET_DVR_ERR_VERIFICATION_FAILED 896 //Уʧ + +#define NET_DVR_NO_TEMP_SENSOR_ERROR 897 //¶ȴ +#define NET_DVR_PUPIL_DISTANCE_OVERSIZE_ERROR 898 //ͫ +#define NET_DVR_ERR_UNOPENED_FACE_SNAP 899 //Чȿץ +//2011-10-25루900-950 +#define NET_ERR_CUT_INPUTSTREAM_OVERLIMIT 900 //źԴüֵ +#define NET_ERR_WINCHAN_IDX 901 // ͨŴ +#define NET_ERR_WIN_LAYER 902 // ڲ󣬵ĻาǵĴڲ +#define NET_ERR_WIN_BLK_NUM 903 // ڵĿ󣬵ڿɸǵĻ +#define NET_ERR_OUTPUT_RESOLUTION 904 // ֱʴ +#define NET_ERR_LAYOUT 905 // ֺŴ +#define NET_ERR_INPUT_RESOLUTION 906 // ֱʲ֧ +#define NET_ERR_SUBDEVICE_OFFLINE 907 // 豸 +#define NET_ERR_NO_DECODE_CHAN 908 // ûпнͨ +#define NET_ERR_MAX_WINDOW_ABILITY 909 // , ֲʽн豸޻ʾ޵ +#define NET_ERR_ORDER_ERROR 910 // ˳ +#define NET_ERR_PLAYING_PLAN 911 // ִԤ +#define NET_ERR_DECODER_USED 912 // ʹ +#define NET_ERR_OUTPUT_BOARD_DATA_OVERFLOW 913 // +#define NET_ERR_SAME_USER_NAME 914 // ûͬ +#define NET_ERR_INVALID_USER_NAME 915 // Чû +#define NET_ERR_MATRIX_USING 916 // ʹ +#define NET_ERR_DIFFERENT_CHAN_TYPE 917 // ͨͲͬͨͿΪͬͣ +#define NET_ERR_INPUT_CHAN_BINDED 918 // ͨѾ +#define NET_ERR_BINDED_OUTPUT_CHAN_OVERFLOW 919 // ʹõľͨ󶨵ͨ +#define NET_ERR_MAX_SIGNAL_NUM 920 // źԴﵽ +#define NET_ERR_INPUT_CHAN_USING 921 // ͨʹ +#define NET_ERR_MANAGER_LOGON 922 // ԱѾ½ʧ +#define NET_ERR_USERALREADY_LOGON 923 // ûѾ½ʧ +#define NET_ERR_LAYOUT_INIT 924 // ڳʼʧ +#define NET_ERR_BASEMAP_SIZE_NOT_MATCH 925 // ͼС +#define NET_ERR_WINDOW_OPERATING 926 // ִβʧ +#define NET_ERR_SIGNAL_UPLIMIT 927 // źԴﵽ +#define NET_ERR_SIGNAL_MAX_ENLARGE_TIMES 928 // źԴŴ +#define NET_ERR_ONE_SIGNAL_MULTI_CROSS 929 // źԴܶο +#define NET_ERR_ULTRA_HD_SIGNAL_MULTI_WIN 930 // źԴظ +#define NET_ERR_MAX_VIRTUAL_LED_WIDTH 931 //LEDȴֵ +#define NET_ERR_MAX_VIRTUAL_LED_WORD_LEN 932 //LEDֵַ +#define NET_ERR_SINGLE_OUTPUTPARAM_CONFIG 933//ֵ֧ʾ +#define NET_ERR_MULTI_WIN_BE_COVER 934//ڱ +#define NET_ERR_WIN_NOT_EXIST 935 //ڲ +#define NET_ERR_WIN_MAX_SIGNALSOURCE 936//źԴֵ +#define NET_ERR_MULTI_WIN_MOVE 937//Զƶ +#define NET_ERR_MULTI_WIN_YPBPR_SDI 938 // YPBPR SDIźԴ֧9/16 +#define NET_ERR_DIFF_TYPE_OUTPUT_MIXUSE 939 //ͬ +#define NET_ERR_SPLIT_WIN_CROSS 940//Կڷ +#define NET_ERR_SPLIT_WIN_NOT_FULL_SCREEN 941 //δڷ +#define NET_ERR_SPLIT_WIN_MANY_WIN 942 //ԵжڵĴڷ +#define NET_ERR_WINDOW_SIZE_OVERLIMIT 943 //ڴС +#define NET_ERR_INPUTSTREAM_ALREADY_JOINT 944 //źԴѼƴ +#define NET_ERR_JOINT_INPUTSTREAM_OVERLIMIT 945 //ƴźԴ + +#define NET_ERR_LED_RESOLUTION 946 //LED ֱʴֱ +#define NET_ERR_JOINT_SCALE_OVERLIMIT 947 //ƴźԴĹģ +#define NET_ERR_INPUTSTREAM_ALREADY_DECODE 948 //źԴǽ +#define NET_ERR_INPUTSTREAM_NOTSUPPORT_CAPTURE 949 //źԴ֧ץͼ +#define NET_ERR_JOINT_NOTSUPPORT_SPLITWIN 950 //źԴַ֧ + +//루951-999 +#define NET_ERR_MAX_WIN_OVERLAP 951 //ﵽ󴰿ص +#define NET_ERR_STREAMID_CHAN_BOTH_VALID 952 //stream IDͨͬʱЧ +#define NET_ERR_NO_ZERO_CHAN 953 //豸ͨ +#define NEED_RECONNECT 955 //Ҫضתϵͳʹã +#define NET_ERR_NO_STREAM_ID 956 //ID +#define NET_DVR_TRANS_NOT_START 957 //תδ +#define NET_ERR_MAXNUM_STREAM_ID 958 //IDﵽ +#define NET_ERR_WORKMODE_MISMATCH 959 //ģʽƥ +#define NET_ERR_MODE_IS_USING 960 //ѹڵǰģʽ +#define NET_ERR_DEV_PROGRESSING 961 //豸ڴ +#define NET_ERR_PASSIVE_TRANSCODING 962 //ڱת + +#define NET_ERR_RING_NOT_CONFIGURE 964 //δ + +#define NET_ERR_CLOSE_WINDOW_FIRST 971 //лȫ֡ʳʱȹرնӦǽĴ +#define NET_ERR_SPLIT_WINDOW_NUM_NOT_SUPPORT 972 //VGA/DVI/DP/HDMI/HDBase_TԴȫ֡ʳ²֧9/16 +#define NET_ERR_REACH_ONE_SIGNAL_PREVIEW_MAX_LINK 973 //źԴ +#define NET_ERR_ONLY_SPLITWND_SUPPORT_AMPLIFICATION 974 //ֻз֧ӴڷŴ +#define NET_DVR_ERR_WINDOW_SIZE_PLACE 975 //λô +#define NET_DVR_ERR_RGIONAL_RESTRICTIONS 976 //Ļ볬 +#define NET_ERR_WNDZOOM_NOT_SUPPORT 977 //ڲ֧Ӵȫ +#define NET_ERR_LED_SCREEN_SIZE 978 //LED߲ȷ +#define NET_ERR_OPEN_WIN_IN_ERROR_AREA 979 //ڷǷ򿪴(LCD/LED) +#define NET_ERR_TITLE_WIN_NOT_SUPPORT_MOVE 980 //ƽģʽ֧ +#define NET_ERR_TITLE_WIN_NOT_SUPPORT_COVER 981 //ƽģʽ֧ͼ㸲 +#define NET_ERR_TITLE_WIN_NOT_SUPPORT_SPLIT 982 //ƽģʽַ֧ +#define NET_DVR_LED_WINDOWS_ALREADY_CLOSED 983 //LEDڵķֱʷ仯豸ѹرոڵLED +#define NET_DVR_ERR_CLOSE_WINDOWS 984 //ʧܣȹرմ +#define NET_DVR_ERR_MATRIX_LOOP_ABILITY 985 //Ѳ +#define NET_DVR_ERR_MATRIX_LOOP_TIME 986 //Ѳʱ䲻֧ +#define NET_DVR_ERR_LINKED_OUT_ABILITY 987 //ͨ +#define NET_ERR_REACH_SCENE_MAX_NUM 988 //ﵽ +#define NET_ERR_SCENE_MEM_NOT_ENOUGH 989 //ڴ治㣬޷½ +#define NET_ERR_RESOLUTION_NOT_SUPPORT_ODD_VOUT 990 //ڲָ֧÷ֱ +#define NET_ERR_RESOLUTION_NOT_SUPPORT_EVEN_VOUT 991 //żڲָ֧÷ֱ + +#define NET_DVR_CANCEL_WND_OPENKEEP_ATTR_FIRST 992 //ҪȡԲܱر +#define NET_SDK_LED_MODE_NOT_SUPPORT_SPLIT 993 //LEDģʽ²ִ֧ڷ +#define NET_ERR_VOICETALK_ONLY_SUPPORT_ONE_TALK 994 //ͬʱֻ֧һ·Խ +#define NET_ERR_WND_POSITION_ADJUSTED 995 //λñ豸ϲҪ»ȡ´λ +#define NET_SDK_ERR_STARTTIME_CANNOT_LESSTHAN_CURTIME 996 //ʼʱ䲻Сڵǰʱ +#define NET_SDK_ERR_NEED_ADJUST_PLAN 997 //ѱԤȽóԤɾ +#define NET_ERR_UnitConfig_Failed 998 //õλͳһѡʱõĵλϵͳµĵλͬصλô + +// +#define XML_ABILITY_NOTSUPPORT 1000 //֧ڵȡ +#define XML_ANALYZE_NOENOUGH_BUF 1001 //ڴ治 +#define XML_ANALYZE_FIND_LOCALXML_ERROR 1002 //޷ҵӦıxml +#define XML_ANALYZE_LOAD_LOCALXML_ERROR 1003 //رxml +#define XML_NANLYZE_DVR_DATA_FORMAT_ERROR 1004 //豸ݸʽ +#define XML_ANALYZE_TYPE_ERROR 1005 //ʹ +#define XML_ANALYZE_XML_NODE_ERROR 1006 //XMLڵʽ +#define XML_INPUT_PARAM_ERROR 1007 //XMLڵֵ + +#define NET_DVR_ERR_RETURNED_XML_DATA 1008 //豸صXML + +//Դ +#define NET_ERR_LEDAREA_EXIST_WINDOW 1051 //LEDдڴ(LEDѾдڴڣ޸LED +#define NET_ERR_AUDIO_EXIST 1052 //ϴƵ +#define NET_ERR_MATERIAL_NAME_EXIST 1053 //زѴ +#define NET_ERR_MATERIAL_APPROVE_STATE 1054 //ز״̬ +#define NET_ERR_DATAHD_SIGNAL_FORMAT 1055 //ʹõӲ̲ʽ + +#define NET_ERR_SCENE_SWITCHING 1056 //л +#define NER_ERR_DATA_TRANSFER 1057 //豸ת +#define NET_ERR_DATA_RESTORE 1058 //豸ݻԭ +#define NET_ERR_CHECK_NOT_ENABLE 1059 //Уʹδ +#define NET_ERR_AREA_OFFLINE 1060 // +#define NET_ERR_SCREEN_TYPE 1061 //ĻͲƥ +#define NET_ERR_MIN_OPERATE_UNIT 1062 //СԪƥ +#define NET_ERR_MAINHD_NOT_BACKUP 1063 //һλϵֹ̣̣ͨóɱ +#define NET_ERR_ONE_BACKUP_HD 1064 //ñʱ豸һͨ +#define NET_ERR_CONNECT_SUB_SYSTEM_ABNORMAL 1065 //ϵͳ쳣 +#define NET_ERR_SERIAL_PORT_VEST 1066 //Ĵڹ +#define NET_ERR_BLOCKLIST_FULL 1067 //б +#define NET_ERR_NOT_MATCH_SOURCE 1068 //ƥźԴ +#define NET_ERR_CLOCK_VIRTUAL_LED_FULL 1069 //ʱӹܵLED +#define NET_ERR_MAX_WIN_SIGNAL_LOOP_NUM 1070 //ѲźԴѴ +#define NET_ERR_RESOLUTION_NO_MATCH_FRAME 1071 //ֱ뵱ǰ֡ƥ +#define NET_ERR_NOT_UPDATE_LOW_VERSION 1072 //֧Ͱ汾 +#define NET_ERR_NO_CUSTOM_TO_UPDATE 1073 //ǶƳ޷ +#define NET_ERR_CHAN_RESOLUTION_NOT_SUPPORT_SPLIT 1074 //ڷֱʲַ֧ +#define NET_ERR_HIGH_DEFINITION_NOT_SUPPORT_SPLIT 1075 //岻֧9/16ָ +#define NET_ERR_MIRROR_IMAGE_BY_VIDEO_WALL 1076 //ǽ +#define NET_ERR_MAX_OSD_FONT_SIZE 1077 //OSDַ֧ +#define NET_ERR_HIGH_DEFINITION_NOT_SUPPORT_VIDEO_SET 1078 //岻֧Ƶ +#define NET_ERR_TILE_MODE_NOT_SUPPORT_JOINT 1079 //ƽģʽ֧ƴӴ +#define NET_ERR_ADD_AUDIO_MATRIX_FAILED 1080 //Ƶʧ +#define NET_ERR_ONE_VIRTUAL_LED_AREA_BIND_ONE_AUDIO_AREA 1081 //һLEDֻܰһƵ +#define NET_ERR_NAT_NOT_MODIFY_SERVER_NETWORK_PARAM 1082 //NAT޷޸ķ +#define NET_ERR_ORIGINAL_CHECH_DATA_ERROR 1083 //ԭʼУݴ +#define NET_ERR_INPUT_BOARD_SPLICED_IN_DIFFERENT_NETWORKAREAS 1084 //ͬ岻ƴ +#define NET_ERR_SPLICINGSOURCE_ONWALL_IN_DIFFERENT_NETWORKAREAS 1085 //ͬƴԴǽ +#define NET_ERR_ONWALL_OUTPUTBOARD_MODIFY_NETWORKAREAS 1086 //Ѱڵǽϵ岻޸ +#define NET_ERR_LAN_AND_WAN_CANNOT_SAME_NET_SEGMENT 1087 //LANIPWANIPܴͬһ +#define NET_ERR_USERNAME_REPETITIVE 1088 //ûظ +#define NET_ERR_ASSOCIATED_SAMEWALL_IN_DIFFERENT_NETWORKAREAS 1089 //ͬڲܹͬһǽ +#define NET_ERR_BASEMAP_ROAM_IN_LED_AREA 1090 //LEDͼ +#define NET_ERR_VIRTUAL_LED_NOT_SUPPORT_4K_OUTPUT 1091 //LED֧4Kʾ +#define NET_ERR_BASEMAP_NOT_SUPPORT_4K_OUTPUT 1092 //ͼ֧4Kʾ +#define NET_ERR_MIN_BLOCK_IN_VIRTUAL_LED_AND_OUTPUT 1093 //LEDཻС +#define NET_ERR_485FIlE_VERSION_INVALID 1094 //485ļ汾Ч +#define NET_ERR_485FIlE_CHECK_ERROR 1095 //485ļУ +#define NET_ERR_485FIlE_ABNORMAL_SIZE 1096 //485ļС쳣Ч +#define NET_ERR_MODIFY_SUBBOARD_NETCFG_IN_NAT 1097 //NAT޷޸Ӱ +#define NET_ERR_OSD_CONTENT_WITH_ILLEGAL_CHARACTERS 1098 //OSDݰǷַ +#define NET_ERR_NON_SLAVE_DEVICE_INSERT_SYNC_LINE 1099 //Ǵ豸ֹͬ +//ô루11001200 +#define NET_ERR_PLT_USERID 1100 //֤ƽ̨userid +#define NET_ERR_TRANS_CHAN_START 1101 //͸ͨѴ򿪣ǰ޷ +#define NET_ERR_DEV_UPGRADING 1102 //豸 +#define NET_ERR_MISMATCH_UPGRADE_PACK_TYPE 1103 //Ͳƥ +#define NET_ERR_DEV_FORMATTING 1104 //豸ڸʽ +#define NET_ERR_MISMATCH_UPGRADE_PACK_VERSION 1105 //汾ƥ +#define NET_ERR_PT_LOCKED 1106 //PT + +#define NET_DVR_LOGO_OVERLAY_WITHOUT_UPLOAD_PIC 1110 //logoʧܣûϴlogoͼƬ +#define NET_DVR_ERR_ILLEGAL_VERIFICATION_CODE 1111 //Ϸ֤ +#define NET_DVR_ERR_LACK_VERIFICATION_CODE 1112 //ȱ֤ +#define NET_DVR_ERR_FORBIDDEN_IP 1113 //IPַѱֹ(豸ֵ֧IPַ˹) +#define NET_DVR_ERR_UNLOCKPTZ 1114 //Ч̨ +#define NET_DVR_ERR_COUNTAREA_LARGE 1116 //ƴ豸ֵ +#define NET_DVR_ERR_LABEL_ID_EXCEED 1117//ǩID +#define NET_DVR_ERR_LABEL_TYPE 1118//ǩʹ +#define NET_DVR_ERR_LABEL_FULL 1119//ǩ +#define NET_DVR_ERR_LABEL_DISABLED 1120//ǩδʹ +#define NET_DVR_ERR_DOME_PT_TRANS_TO_DOME_XY 1121//PTתXYʧ +#define NET_DVR_ERR_DOME_PT_TRANS_TO_PANORAMA_XY 1122//PTתȫXYʧ +#define NET_DVR_ERR_PANORAMA_XY_TRANS_TO_DOME_PT 1123//ȫXYתPT +#define NET_DVR_ERR_SCENE_DUR_TIME_LESS_THAN_INTERV_TIME 1124//ͣʱҪڼ +#define NET_DVR_ERR_HTTP_BKN_EXCEED_ONE 1125//ֻ֧һ· +#define NET_DVR_ERR_DELETING_FAILED_TURN_OFF_HTTPS_ESDK_WEBSOCKETS_FIRST 1126//ɾʧܣȹرHTTPSеǿSDKWebSockets +#define NET_DVR_ERR_DELETING_FAILED_TURN_OFF_HTTPS_ESDK_FIRST 1127//ɾʧܣȹرHTTPSеǿSDK +#define NET_DVR_ERR_PTZ_OCCUPIED_PRIORITY 1128// иȼ̨Ȩû +#define NET_DVR_ERR_INCORRECT_VIDEOAUDIO_ID 1129// ƵͨIDͨID +#define NET_DVR_ERR_REPETITIONTIME_OVER_MAXIMUM 1130// ȥʱ󲻳ֵ +#define NET_DVR_ERR_FORMATTING_FAILED 1131// ʽ +#define NET_DVR_ERR_ENCRYPTED_FORMATTING_FAILED 1132// ܸʽʧܣ +#define NET_DVR_ERR_WRONG_PASSWORD 1133// ,ȷ루SD Уʧܣ +#define NET_DVR_ERR_EXPOSURE_SYNC 1134// ͷعͬѿֶRGB + +//2012-10-16 豸루1200~1300 +#define NET_ERR_SEARCHING_MODULE 1201 // ģ +#define NET_ERR_REGISTERING_MODULE 1202 // עģ +#define NET_ERR_GETTING_ZONES 1203 // ڻȡ +#define NET_ERR_GETTING_TRIGGERS 1204 // ڻȡ +#define NET_ERR_ARMED_STATUS 1205 // ϵͳڲ״̬ +#define NET_ERR_PROGRAM_MODE_STATUS 1206 // ϵͳڱģʽ +#define NET_ERR_WALK_TEST_MODE_STATUS 1207 // ϵͳڲģʽ +#define NET_ERR_BYPASS_STATUS 1208 // ·״̬ +#define NET_ERR_DISABLED_MODULE_STATUS 1209 // δʹ +#define NET_ERR_NOT_SUPPORT_OPERATE_ZONE 1210 // ָ֧ò +#define NET_ERR_NOT_SUPPORT_MOD_MODULE_ADDR 1211 // ģַܱ޸ +#define NET_ERR_UNREGISTERED_MODULE 1212 // ģδע +#define NET_ERR_PUBLIC_SUBSYSTEM_ASSOCIATE_SELF 1213 // ϵͳ +#define NET_ERR_EXCEEDS_ASSOCIATE_SUBSYSTEM_NUM 1214 // ϵͳ +#define NET_ERR_BE_ASSOCIATED_BY_PUBLIC_SUBSYSTEM 1215 // ϵͳϵͳ +#define NET_ERR_ZONE_FAULT_STATUS 1216 // ڹ״̬ +#define NET_ERR_SAME_EVENT_TYPE 1217 // ¼¼رͬ¼ +#define NET_ERR_ZONE_ALARM_STATUS 1218 // ڱ״̬ +#define NET_ERR_EXPANSION_BUS_SHORT_CIRCUIT 1219 //չ߶· +#define NET_ERR_PWD_CONFLICT 1220 //ͻ +#define NET_ERR_DETECTOR_GISTERED_BY_OTHER_ZONE 1221 //̽ѱע +#define NET_ERR_DETECTOR_GISTERED_BY_OTHER_PU 1222 //̽ѱע +#define NET_ERR_DETECTOR_DISCONNECT 1223 //̽ +#define NET_ERR_CALL_BUSY 1224 //豸ͨ +#define NET_DVR_ERR_ZONE_TAMPER_STAUS 1225 //ڷ״̬ +#define NET_DVR_ERR_WIRELESS_DEV_REGISTER 1226 //ѱע +#define NET_DVR_ERR_WIRELESS_DEV_ADDED 1227 //ѱ +#define NET_DVR_ERR_WIRELESS_DEV_OFFLINE 1228 //費 +#define NET_DVR_ERR_WIRELESS_DEV_TAMPER_STATUS 1229 //账ڷ״̬ +#define NET_DVR_ERR_GPRS_PHONE_CONFLICT 1230 //绰߱ijͻ +#define NET_ERR_INIT_PASSWORD_NOT_MODIFY 1231 //ʼδ޸ģ޷װ/Աûڳʼδ޸ʱ޸û⣬ظô +#define NET_ERR_USER_DISABLED 1232 //ûδ +#define NET_ERR_DEVICE_DEBUGGING 1233 //ǰ豸ڵģʽ +//Ϣ +#define NET_ERR_GET_ALL_RETURN_OVER 1300 //ȡзĿ +#define NET_ERR_RESOURCE_USING 1301 //ϢԴʹã޸ +#define NET_ERR_FILE_SIZE_OVERLIMIT 1302 //ļС + +//Ϣ +#define NET_ERR_MATERIAL_NAME 1303 //زƷǷ +#define NET_ERR_MATERIAL_NAME_LEN 1304 //زƳȷǷ +#define NET_ERR_MATERIAL_REMARK 1305 //زǷ +#define NET_ERR_MATERIAL_REMARK_LEN 1306 //زȷǷ +#define NET_ERR_MATERIAL_SHARE_PROPERTY 1307 //زĹԷǷ +#define NET_ERR_UNSUPPORT_MATERIAL_TYPE 1308 //زͲ֧ +#define NET_ERR_MATERIAL_NOT_EXIST 1309 //زIJ +#define NET_ERR_READ_FROM_DISK 1310 //Ӳ̶ȡزļʧ +#define NET_ERR_WRITE_TO_DISK 1311 //Ӳдزļʧ +#define NET_ERR_WRITE_DATA_BASE 1312 //زдݿʧ +#define NET_ERR_NO_APPROVED_NOT_EXPORT 1313 //δݽֹ +#define NET_ERR_MATERIAL_EXCEPTION 1314 //ز쳣 +#define NET_ERR_NO_MISINFO 1315 //Ϣ +#define NET_ERR_LAN_NOT_SUP_DHCP_CLIENT_CONFIGURATION 1316 //·ģʽ£DHCPͻ˷ش +#define NET_ERR_VIDEOWALL_OPTPORT_RESOLUTION_INCONSISTENT 1317 //ǽϸڷֱʲһ(ҪֱΪ4K쳣ʱ) +#define NET_ERR_VIDEOWALL_OPTPORT_RESOLUTION_INCONSISTENT_UNBIND_OPTPORT_FIRST 1318 //ǽϸڷֱʲһ£Ƚ(Ҫڰڳ쳣ʱ) +#define NET_ERR_FOUR_K_OUTPUT_RESOLUTION_UNSUPPORT_NINE_TO_SIXTEEN_SPLIT_SCREEN 1319 //4Kֱʲ֧9/16 +#define NET_ERR_SIGNAL_SOURCE_UNSUPPORT_CUSTOM_RESOLUTION 1320 //źԴָ֧Զֱ +#define NET_ERR_DVI_UNSUPPORT_FOURK_OUTPUT_RESOLUTION 1321 //DVI֧4Kֱ +#define NET_ERR_BNC_UNSUPPORT_SOURCE_CROPPING 1322 //BNC֧źԴü +#define NET_ERR_OUTPUT_NOT_SUPPORT_VIDEOWALL_RESOLUTION 1323 //ڲֵ֧ǽֱ + +// +#define NET_ERR_MAX_SCREEN_CTRL_NUM 1351 //Ļﵽ +#define NET_ERR_FILE_NOT_EXIST 1352 //ļ +#define NET_ERR_THUMBNAIL_NOT_EXIST 1353 //ͼ +#define NET_ERR_DEV_OPEN_FILE_FAIL 1354 //豸˴ļʧ +#define NET_ERR_SERVER_READ_FILE_FAIL 1355 //豸˶ȡļʧ +#define NET_ERR_FILE_SIZE 1356 //ļС +#define NET_ERR_FILE_NAME 1357 //ļƴΪջ򲻺Ϸ + +//ֶδ루1351-1400 +#define NET_ERR_BROADCAST_BUSY 1358 //豸ڹ㲥 + +//2012-12-20ץĻ루1400-1499 +#define NET_DVR_ERR_LANENUM_EXCEED 1400 // +#define NET_DVR_ERR_PRAREA_EXCEED 1401 //ʶ +#define NET_DVR_ERR_LIGHT_PARAM 1402 //źŵƽ +#define NET_DVR_ERR_LANE_LINE_INVALID 1403 //ô +#define NET_DVR_ERR_STOP_LINE_INVALID 1404 //ֹͣô +#define NET_DVR_ERR_LEFTORRIGHT_LINE_INVALID 1405 ///תֽô +#define NET_DVR_ERR_LANE_NO_REPEAT 1406 //ӳظ +#define NET_DVR_ERR_PRAREA_INVALID 1407 //ʶβҪ +#define NET_DVR_ERR_LIGHT_NUM_EXCEED 1408 //Ƶ⽻ͨźŵĿֵ +#define NET_DVR_ERR_SUBLIGHT_NUM_INVALID 1409 //Ƶ⽻ͨźŵӵĿϷ +#define NET_DVR_ERR_LIGHT_AREASIZE_INVALID 1410 //Ƶ⽻ͨźŵƿСϷ +#define NET_DVR_ERR_LIGHT_COLOR_INVALID 1411 //Ƶ⽻ͨźŵɫϷ +#define NET_DVR_ERR_LIGHT_DIRECTION_INVALID 1412 //Ƶ⽻ͨƷԲϷ +#define NET_DVR_ERR_LACK_IOABLITY 1413 //IOʵֵ֧ + +#define NET_DVR_ERR_FTP_PORT 1414 //FTP˿ںŷǷ˿ںظ쳣 +#define NET_DVR_ERR_FTP_CATALOGUE 1415 //FTPĿ¼Ƿö༶Ŀ¼༶Ŀ¼ֵΪգ +#define NET_DVR_ERR_FTP_UPLOAD_TYPE 1416 //FTPϴͷǷftpֻ֧ȫ/˫ftpֻֿ֧ںΥ£ +#define NET_DVR_ERR_FLASH_PARAM_WRITE 1417 //òʱдFLASHʧ +#define NET_DVR_ERR_FLASH_PARAM_READ 1418 //òʱFLASHʧ +#define NET_DVR_ERR_PICNAME_DELIMITER 1419 //FTPͼƬָǷ +#define NET_DVR_ERR_PICNAME_ITEM 1420 //FTPͼƬǷ ָ +#define NET_DVR_ERR_PLATE_RECOGNIZE_TYPE 1421 //ʶͷǷ κͶЧУ飩 +#define NET_DVR_ERR_CAPTURE_TIMES 1422 //ץĴǷ Чֵ05 +#define NET_DVR_ERR_LOOP_DISTANCE 1423 //ȦǷ Чֵ02000ms +#define NET_DVR_ERR_LOOP_INPUT_STATUS 1424 //Ȧ״̬Ƿ Чֵ +#define NET_DVR_ERR_RELATE_IO_CONFLICT 1425 //IOͻ +#define NET_DVR_ERR_INTERVAL_TIME 1426 //ļʱǷ 06000ms +#define NET_DVR_ERR_SIGN_SPEED 1427 //־ֵǷ󳵱־ٲܴС־ +#define NET_DVR_ERR_PIC_FLIP 1428 //ͼ÷ת ýӰ죩 +#define NET_DVR_ERR_RELATE_LANE_NUMBER 1429 // (ظ ЧֵУ199) +#define NET_DVR_ERR_TRIGGER_MODE 1430 //ץĻģʽǷ +#define NET_DVR_ERR_DELAY_TIME 1431 //ʱʱ(2000ms) +#define NET_DVR_ERR_EXCEED_RS485_COUNT 1432 //485 +#define NET_DVR_ERR_RADAR_TYPE 1433 //״ʹ +#define NET_DVR_ERR_RADAR_ANGLE 1434 //״Ƕȴ +#define NET_DVR_ERR_RADAR_SPEED_VALID_TIME 1435 //״Чʱ +#define NET_DVR_ERR_RADAR_LINE_CORRECT 1436 //״Խ +#define NET_DVR_ERR_RADAR_CONST_CORRECT 1437 //״ﳣ +#define NET_DVR_ERR_RECORD_PARAM 1438 //¼ЧԤ¼ʱ䲻10s +#define NET_DVR_ERR_LIGHT_WITHOUT_COLOR_AND_DIRECTION 1439 //ƵźŵźŵƸûйѡźŵƷɫ +#define NET_DVR_ERR_LIGHT_WITHOUT_DETECTION_REGION 1440 //ƵźŵźŵƸûл +#define NET_DVR_ERR_RECOGNIZE_PROVINCE_PARAM 1441 //ʶʡݲĺϷ + +#define NET_DVR_ERR_SPEED_TIMEOUT 1442 //IOٳʱʱǷЧֵ0 +#define NET_DVR_ERR_NTP_TIMEZONE 1443 //ntpʱ +#define NET_DVR_ERR_NTP_INTERVAL_TIME 1444 //ntpУʱ +#define NET_DVR_ERR_NETWORK_CARD_NUM 1445 //Ŀ +#define NET_DVR_ERR_DEFAULT_ROUTE 1446 //Ĭ·ɴ +#define NET_DVR_ERR_BONDING_WORK_MODE 1447 //bondingģʽ +#define NET_DVR_ERR_SLAVE_CARD 1448 //slave +#define NET_DVR_ERR_PRIMARY_CARD 1449 //Primary +#define NET_DVR_ERR_DHCP_PPOE_WORK 1450 //dhcppppoEͬʱ +#define NET_DVR_ERR_NET_INTERFACE 1451 //ӿڴ +#define NET_DVR_ERR_MTU 1452 //MTU +#define NET_DVR_ERR_NETMASK 1453 // +#define NET_DVR_ERR_IP_INVALID 1454 //IPַϷ +#define NET_DVR_ERR_MULTICAST_IP_INVALID 1455 //ಥַϷ +#define NET_DVR_ERR_GATEWAY_INVALID 1456 //زϷ +#define NET_DVR_ERR_DNS_INVALID 1457 //DNSϷ +#define NET_DVR_ERR_ALARMHOST_IP_INVALID 1458 //澯ַϷ +#define NET_DVR_ERR_IP_CONFLICT 1459 //IPͻ +#define NET_DVR_ERR_NETWORK_SEGMENT 1460 //IP֧ͬ +#define NET_DVR_ERR_NETPORT 1461 //˿ڴ + +#define NET_DVR_ERR_PPPOE_NOSUPPORT 1462 //PPPOE֧ +#define NET_DVR_ERR_DOMAINNAME_NOSUPPORT 1463 //֧ +#define NET_DVR_ERR_NO_SPEED 1464 //δòٹ +#define NET_DVR_ERR_IOSTATUS_INVALID 1465 //IO״̬ +#define NET_DVR_ERR_BURST_INTERVAL_INVALID 1466 //ļǷ +#define NET_DVR_ERR_RESERVE_MODE 1467 //ģʽ + +#define NET_DVR_ERR_LANE_NO 1468 //ӳŴ +#define NET_DVR_ERR_COIL_AREA_TYPE 1469 //Ȧʹ +#define NET_DVR_ERR_TRIGGER_AREA_PARAM 1470 // +#define NET_DVR_ERR_SPEED_LIMIT_PARAM 1471 //Υٲ +#define NET_DVR_ERR_LANE_PROTOCOL_TYPE 1472 //Эʹ + +#define NET_DVR_ERR_INTERVAL_TYPE 1473 //ļͷǷ +#define NET_DVR_ERR_INTERVAL_DISTANCE 1474 //ļǷ +#define NET_DVR_ERR_RS485_ASSOCIATE_DEVTYPE 1475 //RS485ͷǷ +#define NET_DVR_ERR_RS485_ASSOCIATE_LANENO 1476 //RS485ŷǷ +#define NET_DVR_ERR_LANENO_ASSOCIATE_MULTIRS485 1477 //ŹRS485 +#define NET_DVR_ERR_LIGHT_DETECTION_REGION 1478 //ƵźŵźŵƸǼΪ0 + +#define NET_DVR_ERR_DN2D_NOSUPPORT 1479 //֧ץ֡2D +#define NET_DVR_ERR_IRISMODE_NOSUPPORT 1480 //ֵ֧ľͷ +#define NET_DVR_ERR_WB_NOSUPPORT 1481 //ֵ֧İƽģʽ +#define NET_DVR_ERR_IO_EFFECTIVENESS 1482 //IOڵЧ +#define NET_DVR_ERR_LIGHTNO_MAX 1483 //źŵƼ/ƵƳ(16) +#define NET_DVR_ERR_LIGHTNO_CONFLICT 1484 //źŵƼ/ƵƳͻ + +#define NET_DVR_ERR_CANCEL_LINE 1485 //ֱд +#define NET_DVR_ERR_STOP_LINE 1486 //ֹͣ +#define NET_DVR_ERR_RUSH_REDLIGHT_LINE 1487 //ƴ +#define NET_DVR_ERR_IOOUTNO_MAX 1488 //IOڱԽ + +#define NET_DVR_ERR_IOOUTNO_AHEADTIME_MAX 1489 //IOǰʱ䳬 +#define NET_DVR_ERR_IOOUTNO_IOWORKTIME 1490 //IOЧʱ䳬 +#define NET_DVR_ERR_IOOUTNO_FREQMULTI 1491 //IOģʽ±Ƶ +#define NET_DVR_ERR_IOOUTNO_DUTYRATE 1492 //IOģʽռձȳ +#define NET_DVR_ERR_VIDEO_WITH_EXPOSURE 1493 //Чʽ֧Ƶ +#define NET_DVR_ERR_PLATE_BRIGHTNESS_WITHOUT_FLASHDET 1494 //ԶʹƽڳȲģʽЧ + +#define NET_DVR_ERR_RECOGNIZE_TYPE_PARAM 1495 //ʶͷǷ ʶ󳵡С򡢳ʶȣ +#define NET_DVR_ERR_PALTE_RECOGNIZE_AREA_PARAM 1496 //ʶǷ ʶʱжϳ +#define NET_DVR_ERR_PORT_CONFLICT 1497 //˿гͻ +#define NET_DVR_ERR_LOOP_IP 1498 //IPΪػַ +#define NET_DVR_ERR_DRIVELINE_SENSITIVE 1499 //ѹȳ(Ƶ羯ģʽ) + + +//2013-3-6VQD루15001550 +#define NET_ERR_VQD_TIME_CONFLICT 1500 //VQDʱγͻ +#define NET_ERR_VQD_PLAN_NO_EXIST 1501 //VQDϼƻ +#define NET_ERR_VQD_CHAN_NO_EXIST 1502 //VQDص㲻 +#define NET_ERR_VQD_CHAN_MAX 1503 //VQDƻѴ +#define NET_ERR_VQD_TASK_MAX 1504 //VQDѴ + +#define NET_SDK_GET_INPUTSTREAMCFG 1551 //ȡźԴ +#define NET_SDK_AUDIO_SWITCH_CONTROL 1552 //ӴƵؿ +#define NET_SDK_GET_VIDEOWALLDISPLAYNO 1553 //ȡ豸ʾ +#define NET_SDK_GET_ALLSUBSYSTEM_BASIC_INFO 1554//ȡϵͳϢ +#define NET_SDK_SET_ALLSUBSYSTEM_BASIC_INFO 1555 //ϵͳϢ +#define NET_SDK_GET_AUDIO_INFO 1556//ȡƵϢ +#define NET_SDK_GET_MATRIX_STATUS_V50 1557 // ȡƵۺƽ̨״̬_V50 +#define NET_SDK_DELETE_MONITOR_INFO 1558//ɾMonitorϢ +#define NET_SDK_DELETE_CAMERA_INFO 1559//ɾCamaeraϢ + + +//ץĻչ(1600~1900) +#define NET_DVR_ERR_EXCEED_MAX_CAPTURE_TIMES 1600 //ץģʽΪƵʱץΪ2(IVTģʽ) +#define NET_DVR_ERR_REDAR_TYPE_CONFLICT 1601 //ͬ485ڹ״ͳͻ +#define NET_DVR_ERR_LICENSE_PLATE_NULL 1602 //ƺΪ +#define NET_DVR_ERR_WRITE_DATABASE 1603 //дݿʧ +#define NET_DVR_ERR_LICENSE_EFFECTIVE_TIME 1604 //Чʱ +//Ƶ羯 +#define NET_DVR_ERR_PRERECORDED_STARTTIME_LONG 1605 //Ԥ¼ʼʱΥץ +//Ͽ +#define NET_DVR_ERR_TRIGGER_RULE_LINE 1606 //ߴ +#define NET_DVR_ERR_LEFTRIGHT_TRIGGERLINE_NOTVERTICAL 1607 ///Ҵֱ߲ +#define NET_DVR_ERR_FLASH_LAMP_MODE 1608 //˸ģʽ +#define NET_DVR_ERR_ILLEGAL_SNAPSHOT_NUM 1609 //Υץ +#define NET_DVR_ERR_ILLEGAL_DETECTION_TYPE 1610 //Υ¼ʹ +#define NET_DVR_ERR_POSITIVEBACK_TRIGGERLINE_HIGH 1611 //򴥷߸߶ȴ +#define NET_DVR_ERR_MIXEDMODE_CAPTYPE_ALLTARGETS 1612 //ģʽֻֻ֧ץ + +#define NET_DVR_ERR_CARSIGNSPEED_GREATERTHAN_LIMITSPEED 1613//С־ٴֵ +#define NET_DVR_ERR_BIGCARSIGNSPEED_GREATERTHAN_LIMITSPEED 1614//󳵱־ٴֵ +#define NET_DVR_ERR_BIGCARSIGNSPEED_GREATERTHAN_CARSIGNSPEED 1615//󳵱־ٴС־ֵ +#define NET_DVR_ERR_BIGCARLIMITSPEED_GREATERTHAN_CARLIMITSPEED 1616//ֵСֵ +#define NET_DVR_ERR_BIGCARLOWSPEEDLIMIT_GREATERTHAN_CARLOWSPEEDLIMIT 1617//󳵵ֵСֵ +#define NET_DVR_ERR_CARLIMITSPEED_GREATERTHAN_EXCEPHIGHSPEED 1618//Сٴ쳣ֵ +#define NET_DVR_ERR_BIGCARLIMITSPEED_GREATERTHAN_EXCEPHIGHSPEED 1619//ٴ쳣ֵ +#define NET_DVR_ERR_STOPLINE_MORETHAN_TRIGGERLINE 1620//ֱֹͣ߳д +#define NET_DVR_ERR_YELLOWLIGHTTIME_INVALID 1621/*ƵƵƳʱ䲻Ϸ*/ +#define NET_DVR_ERR_TRIGGERLINE1_FOR_NOT_YIELD_TO_PEDESTRIAN_CANNOT_EXCEED_TRIGGERLINE2 1622//һ˴ߵλó˵ڶ˴ +#define NET_DVR_ERR_TRIGGERLINE2_FOR_NOT_YIELD_TO_PEDESTRIAN_CANNOT_EXCEED_TRIGGERLINE1 1623//ڶ˴ߵλó˵һ˴ + +//Ž +#define NET_ERR_TIME_OVERLAP 1900 //ʱص +#define NET_ERR_HOLIDAY_PLAN_OVERLAP 1901 //ռƻص +#define NET_ERR_CARDNO_NOT_SORT 1902 //δ +#define NET_ERR_CARDNO_NOT_EXIST 1903 //Ų +#define NET_ERR_ILLEGAL_CARDNO 1904 //Ŵ +#define NET_ERR_ZONE_ALARM 1905 //ڲ״̬(޸IJ) +#define NET_ERR_ZONE_OPERATION_NOT_SUPPORT 1906 //ָ֧ò +#define NET_ERR_INTERLOCK_ANTI_CONFLICT 1907 //ŻͷDZͬʱô +#define NET_ERR_DEVICE_CARD_FULL 1908 //ﵽ10W󷵻أ +#define NET_ERR_HOLIDAY_GROUP_DOWNLOAD 1909 //ʧ +#define NET_ERR_LOCAL_CONTROL_OFF 1910 //͵ؿ +#define NET_ERR_LOCAL_CONTROL_DISADD 1911 //͵ؿδ +#define NET_ERR_LOCAL_CONTROL_HASADD 1912 //͵ؿ +#define NET_ERR_LOCAL_CONTROL_DOORNO_CONFLICT 1913 //ӵľ͵ؿűųͻ +#define NET_ERR_LOCAL_CONTROL_COMMUNICATION_FAIL 1914 //͵ؿͨʧ +#define NET_ERR_OPERAND_INEXISTENCE 1915 //󲻴ڣšزδʱأ +#define NET_ERR_LOCAL_CONTROL_OVER_LIMIT 1916 //͵ؿ豸ضԾ͵ƣ +#define NET_ERR_DOOR_OVER_LIMIT 1917 //ų豸 +#define NET_ERR_ALARM_OVER_LIMIT 1918 //豸 +#define NET_ERR_LOCAL_CONTROL_ADDRESS_INCONFORMITY_TYPE 1919 //͵ؿַͲ +#define NET_ERR_NOT_SUPPORT_ONE_MORE_CARD 1920 //֧һ˶࿨ +#define NET_ERR_DELETE_NO_EXISTENCE_FACE 1921 //ɾ +#define NET_ERR_DOOR_SPECIAL_PASSWORD_REPEAT 1922 //豸ظ +#define NET_ERR_AUTH_CODE_REPEAT 1923 //豸֤ظ +#define NET_ERR_DEPLOY_EXCEED_MAX 1924 // +#define NET_ERR_NOT_SUPPORT_DEL_FP_BY_ID 1925 //ְָ֧IDɾָ +#define NET_ERR_TIME_RANGE 1926 //Чڲ÷Χ +#define NET_ERR_CAPTURE_TIMEOUT 1927 //ɼʱ +#define NET_ERR_LOW_SCORE 1928 //ɼ +#define NET_ERR_OFFLINE_CAPTURING 1929 //߲ɼУ޷Ӧ + +//ӶԽ +#define NET_DVR_ERR_OUTDOOR_COMMUNICATION 1950 //ſڻͨ쳣 +#define NET_DVR_ERR_ROOMNO_UNDEFINED 1951 //δ÷ +#define NET_DVR_ERR_NO_CALLING 1952 //޺ +#define NET_DVR_ERR_RINGING 1953 // +#define NET_DVR_ERR_IS_CALLING_NOW 1954 //ͨ +#define NET_DVR_ERR_LOCK_PASSWORD_WRONG 1955// +#define NET_DVR_ERR_CONTROL_LOCK_FAILURE 1956//ʧ +#define NET_DVR_ERR_CONTROL_LOCK_OVERTIME 1957//ʱ +#define NET_DVR_ERR_LOCK_DEVICE_BUSY 1958//豸æ +#define NET_DVR_ERR_UNOPEN_REMOTE_LOCK_FUNCTION 1959//Զ̿δ + + +//˴ 2100 - 3000 +#define NET_DVR_ERR_FILE_NOT_COMPLETE 2100 //صļ +#define NET_DVR_ERR_IPC_EXIST 2101 //IPCѾ +#define NET_DVR_ERR_ADD_IPC 2102 //ͨIPC +#define NET_DVR_ERR_OUT_OF_RES 2103 // +#define NET_DVR_ERR_CONFLICT_TO_LOCALIP 2104 //IPCipַDVRipַͻ +#define NET_DVR_ERR_IP_SET 2105 //Ƿipַ +#define NET_DVR_ERR_PORT_SET 2106 //ǷĶ˿ں + +#define NET_ERR_WAN_NOTSUPPORT 2107 //ͬһ޷ðȫ򵼳GUIDļ +#define NET_ERR_MUTEX_FUNCTION 2108 //ܻ +#define NET_ERR_QUESTION_CONFIGNUM 2109 //ȫ +#define NET_ERR_FACECHAN_NORESOURCE 2110 //ͨԴ +#define NET_ERR_DATA_CALLBACK 2111 //ݻǨ +#define NET_ERR_ATM_VCA_CHAN_IS_RELATED 2112 //ATMͨѱ +#define NET_ERR_ATM_VCA_CHAN_IS_OVERLAPED 2113 //ATMͨѱ +#define NET_ERR_FACE_CHAN_UNOVERLAP_EACH_OTHER 2114 //ܻͨ +#define NET_ERR_ACHIEVE_MAX_CHANNLE_LIMIT 2115 //ﵽ· +#define NET_DVR_SMD_ENCODING_NORESOURSE 2116 //SMDԴ +#define NET_DVR_SMD_DECODING_NORESOURSE 2117 //SMDԴ +#define NET_DVR_FACELIB_DATA_PROCESSING 2118 //ڴ +#define NET_DVR_ERR_LARGE_TIME_DIFFRENCE 2119 //豸ͷ֮ʱ̫ +#define NET_DVR_NO_SUPPORT_WITH_PLAYBACK 2120 //ѿطţֱ֧ +#define NET_DVR_CHANNEL_NO_SUPPORT_WITH_SMD 2121 //ͨѿSMDֱ֧ +#define NET_DVR_CHANNEL_NO_SUPPORT_WITH_FD 2122 //ͨѿץģֱ֧ +#define NET_DVR_ILLEGAL_PHONE_NUMBER 2123 //Ƿĵ绰 +#define NET_DVR_ILLEGAL_CERITIFICATE_NUMBER 2124 //Ƿ֤ +#define NET_DVR_ERR_CHANNEL_RESOLUTION_NO_SUPPORT 2125 //ֱͨʲ֧ +#define NET_DVR_ERR_CHANNEL_COMPRESSION_NO_SUPPORT 2126 //ͨʽ֧ + +#define NET_DVR_ERR_CLUSTER_DEVICE_TOO_LESS 2127 //豸٣ɾ +#define NET_DVR_ERR_CLUSTER_DEL_DEVICE_CM_PLAYLOAD 2128 //豸ǼȺɾ +#define NET_DVR_ERR_CLUSTER_DEVNUM_OVER_UPPER_LIMIT 2129 //豸ﵽޣ +#define NET_DVR_ERR_CLUSTER_DEVICE_TYPE_INCONFORMITY 2130 //豸Ͳһ +#define NET_DVR_ERR_CLUSTER_DEVICE_VERSION_INCONFORMITY 2131 //豸汾һ +#define NET_DVR_ERR_CLUSTER_IP_CONFLICT 2132 //ȺϵͳIPַͻipv4ַͻipv6ַͻ +#define NET_DVR_ERR_CLUSTER_IP_INVALID 2133 //ȺϵͳIPַЧipv4Ƿipv6Ƿ +#define NET_DVR_ERR_CLUSTER_PORT_CONFLICT 2134 //Ⱥϵͳ˿ڳͻ +#define NET_DVR_ERR_CLUSTER_PORT_INVALID 2135 //Ⱥϵͳ˿ڷǷ +#define NET_DVR_ERR_CLUSTER_USERNAEM_OR_PASSWORD_INVALID 2136 //ûǷ +#define NET_DVR_ERR_CLUSTER_DEVICE_ALREADY_EXIST 2137 //ͬ豸 +#define NET_DVR_ERR_CLUSTER_DEVICE_NOT_EXIST 2138 //豸(ʱ·csбе豸Ϣκһ̨cs϶Ҳɾʱ·id) +#define NET_DVR_ERR_CLUSTER_NON_CLUSTER_MODE 2139 //豸ڷǼȺģʽ +#define NET_DVR_ERR_CLUSTER_IP_NOT_SAME_LAN 2140 //IPַͬһͬ/ + +#define NET_DVR_ERR_CAPTURE_PACKAGE_FAILED 2141 //ץʧ +#define NET_DVR_ERR_CAPTURE_PACKAGE_PROCESSING 2142 //ץ +#define NET_DVR_ERR_SAFETY_HELMET_NO_RESOURCE 2143 //ȫñԴ +#define NET_DVR_NO_SUPPORT_WITH_ABSTRACT 2144 //ѿƵժҪֱ֧ +#define NET_DVR_ERR_TAPE_LIB_NEED_STOP_ARCHIVE 2145 //Ŵ鵵Ҫֹͣ +#define NET_DVR_INSUFFICIENT_DEEP_LEARNING_RESOURCES 2146 //ѧϰԴ +#define NET_DVR_ERR_IDENTITY_KEY 2147 // +#define NET_DVR_MISSING_IDENTITY_KEY 2148 //ȱʧ +#define NET_DVR_NO_SUPPORT_WITH_PERSON_DENSITY_DETECT 2149 //ѿԱܶȼ⣬ֱ֧ +#define NET_DVR_IPC_RESOLUTION_OVERFLOW 2150 //IPCֱʳ +#define NET_DVR_IPC_BITRATE_OVERFLOW 2151 //IPCʳ +#define NET_DVR_ERR_INVALID_TASKID 2152 //ЧtaskID +#define NET_DVR_PANEL_MODE_NOT_CONFIG 2153 //û· +#define NET_DVR_NO_HUMAN_ENGINES_RESOURCE 2154 //Դ +#define NET_DVR_ERR_TASK_NUMBER_OVERFLOW 2155 //ݳ +#define NET_DVR_ERR_COLLISION_TIME_OVERFLOW 2156 //ײʱ䳬 +#define NET_DVR_ERR_CAPTURE_PACKAGE_NO_USB 2157 //δʶỤU̻² +#define NET_DVR_ERR_NO_SET_SECURITY_EMAIL 2158 //δðȫ +#define NET_DVR_ERR_EVENT_NOTSUPPORT 2159 //¼֧ +#define NET_DVR_ERR_PASSWORD_FORMAT 2160 //ʽ +#define NET_DVR_ACCESS_FRONT_DEVICE_PARAM_FAILURE 2161 //ȡǰ豸ʧ +#define NET_DVR_ACCESS_FRONT_DEVICE_STREAM_FAILURE 2162 //ǰ豸ȡʧ +#define NET_DVR_ERR_USERNAME_FORMAT 2163 //ûʽ +#define NET_DVR_ERR_UNOPENED_HIGH_RESOLUTION_MODE 2164 //߷ֱģʽδ +#define NET_DVR_ERR_TOO_SMALL_QUATO 2165 //̫С +#define NET_DVR_ERR_EMAIL_FORMAT 2166 //ʽ +#define NET_DVR_ERR_SECURITY_CODE_FORMAT 2167 //ȫʽ +#define NET_DVR_PD_SPACE_TOO_SMALL 2168 //Ӳ̫С +#define NET_DVR_PD_NUM_TOO_BIG 2169 //ӲĶ֮һ +#define NET_DVR_ERR_USB_IS_FULL 2170 //U +#define NET_DVR_EXCEED_MAX_SMD_TYPE 2171 //ﵽSMD¼ +#define NET_DVR_CHANNEL_NO_SUPPORT_WITH_BEHAVIOR 2172 //ͨѿΪֱ֧ +#define NET_DVR_NO_BEHAVIOR_ENGINES_RESOURCE 2173 //ΪԴ +#define NET_DVR_NO_RETENTION_ENGINES_RESOURCE 2174 //ԱԴ +#define NET_DVR_NO_LEAVE_POSITION_ENGINES_RESOURCE 2175 //ڼԴ +#define NET_DVR_NO_PEOPLE_NUM_CHANGE_ENGINES_RESOURCE 2176 //쳣Դ +#define NET_DVR_PANEL_MODE_NUM_OVER_LIMIT 2177 //·· +#define NET_DVR_SURROUND_MODE_NUM_OVER_LIMIT 2178 //·· +#define NET_DVR_FACE_MODE_NUM_OVER_LIMIT 2179 //·· +#define NET_DVR_SAFETYCABIN_MODE_NUM_OVER_LIMIT 2180 //·· +#define NET_DVR_DETECT_REGION_RANGE_INVALID 2181 //ΧǷ +#define NET_DVR_CHANNEL_CAPTURE_PICTURE_FAILURE 2182 //ͨץͼʧ +#define NET_DVR_VCACHAN_IS_NORESOURCE 2183 //ͨԴ +#define NET_DVR_IPC_NUM_REACHES_LIMIT 2184 // IpcͨĿﵽ +#define NET_DVR_IOT_NUM_REACHES_LIMIT 2185 // IOTͨĿﵽ +#define NET_DVR_IOT_CHANNEL_DEVICE_EXIST 2186 //ǰIOTͨѾ豸 +#define NET_DVR_IOT_CHANNEL_DEVICE_NOT_EXIST 2187 //ǰIOTͨ豸 +#define NET_DVR_INVALID_IOT_PROTOCOL_TYPE 2188 //ǷIOTЭ +#define NET_DVR_INVALID_EZVIZ_SECRET_KEY 2189 //Ƿөʯע֤ +#define NET_DVR_DUPLICATE_IOT_DEVICE 2190 //ظIOT豸 +#define NET_DVR_SADP_MODIFY_FALIURE 2191 // SADP޸ʧ +#define NET_DVR_IPC_NETWORK_ABNORMAL 2192 // IPC쳣 +#define NET_DVR_IPC_PASSWORD_ERROR 2193 // IPCû +#define NET_DVR_ERROR_IPC_TYPE 2194 //IPCͲ +#define NET_DVR_ERROR_IPC_LIST_NOT_EMPTY 2195 //IPCбΪգ֧һ +#define NET_DVR_ERROR_IPC_LIST_NOT_MATCH_PAIRING 2196 //IPCб䵥ƥ +#define NET_DVR_ERROR_IPC_BAD_LANGUAGE 2197 //IPCԺ豸ƥ +#define NET_DVR_ERROR_IPC_IS_LOCKING 2198 //IPCѱ +#define NET_DVR_ERROR_IPC_NOT_ACTIVATED 2199 //IPCδ +#define NET_DVR_FIELD_CODING_NOT_SUPPORT 2200 //벻֧ +#define NET_DVR_ERROR_H323_NOT_SUPPORT_H265 2201 //H323ƵͲ֧H265 +#define NET_DVR_ERROR_EXPOSURE_TIME_TOO_BIG_IN_MODE_P 2202 //Pʽ£عʱ +#define NET_DVR_ERROR_EXPOSURE_TIME_TOO_BIG_IN_MODE_N 2203 //Nʽ£عʱ +#define NET_DVR_ERROR_PING_PROCESSING 2204 //PING +#define NET_DVR_ERROR_PING_NOT_START 2205 //Pingδʼ +#define NET_DVR_ERROR_NEED_DOUBLE_VERIFICATION 2206 //Ҫ֤ +#define NET_DVR_NO_DOUBLE_VERIFICATION_USER 2207 //޶֤û +#define NET_DVR_CHANNEL_OFFLINE 2208 //ͨ +#define NET_DVR_TIMESPAN_NUM_OVER_LIMIT 2209 //ʱγ֧Ŀ +#define NET_DVR_CHANNEL_NUM_OVER_LIMIT 2210 //ͨĿ֧Ŀ +#define NET_DVR_NO_SEARCH_ID_RESOURCE 2211 //ҳѯsearchIDԴ +#define NET_DVR_ERROR_ONEKEY_EXPORT 2212 //ڽеԺ +#define NET_DVR_NO_CITY_MANAGEMENT_ENGINES_RESOURCE 2213 //ǹ㷨Դ +#define NET_DVR_NO_SITUATION_ANALYSIS_ENGINES_RESOURCE 2214 //̬ƷԴ +#define NET_DVR_INTELLIGENT_ANALYSIS_IPC_CANNT_DELETE 2215 //ڽܷIPC޷ɾ +#define NET_DVR_NOSUPPORT_RESET_PASSWORD 2216 //NVRֶ֧IPC +#define NET_DVR_ERROR_IPC_NEED_ON_LAN 2217 // IPCҪھ +#define NET_DVR_CHANNEL_NO_SUPPORT_WITH_SAFETY_HELMET 2218 //ͨѿȫñ⣬ֱ֧ +#define NET_DVR_ERROR_GET_RESETPASSWORDTYPE_IS_ABNORMAL 2219 /*IPCʱȡIPC쳣*/ +#define NET_DVR_ERROR_IPC_NOSUPPORT_RESET_PASSWORD 2220 /* IPC֧*/ +#define NET_DVR_ERROR_IP_IS_NOT_ONLY_ONE 2221 /*IPCIPΨһظ*/ +#define NET_DVR_NO_SUPPORT_WITH_SMD_OR_SCD 2222 //ѿSMD/SCDֱ֧ܣSCDΪ +#define NET_DVR_NO_SUPPORT_WITH_FD 2223 //ѿץģֱ֧ +#define NET_DVR_NO_FD_ENGINES_RESOURCE 2224 //ץԴ +#define NET_DVR_ERROR_ONEKEY_REMOVE 2225 //ڽɾԺ +#define NET_DVR_FACE_PIP_BACKGROUND_CHANNEL_OVERFLOW 2226 //лͨ +#define NET_DVR_MICIN_CHANNEL_OCCUPIED 2227 //micinͨռ +#define NET_DVR_IPC_CHANNEL_IS_IN_PIP 2228 //ʧܣͨѹѶͨȡлù + +#define NET_DVR_CHANNEL_NO_SUPPORT_WITH_FACE_CONTRAST 2229 //ͨѿȶԣֱ֧ + +#define NET_DVR_INVALID_RECHARGE_CARD 2230 //Чijֵ +#define NET_DVR_CLOUD_PLATFORM_SERVER_EXCEPTION 2231 //ƽ̨쳣 +#define NET_DVR_OPERATION_FAILURE_WITHOUT_LOGIN 2232 //δ¼ʧ +#define NET_DVR_INVALID_ASSOCIATED_SERIAL_NUMBER 2233 //кŷǷ +#define NET_DVR_CLOUD_PLATFORM_ACCOUNT_NOT_EXIST 2234 //ƽ̨ʺŲ +#define NET_DVR_DEVICE_SERIAL_NUMBER_REGISTERED 2235 //豸кע +#define NET_DVR_CONFERENCE_ROOM_NOT_EXIST 2236 //Ҳ +#define NET_DVR_NEED_DISABLED_ANALOG_CHANNEL 2237//ģͨ +#define NET_DVR_STUDENT_ROLL_CALL_FAILURE 2238//ѧʧ +#define NET_DVR_SUB_DEVICE_NOT_ENABLE_INDIVIDUAL_BEHAVIOR 2239//豸δøΪģʽ +#define NET_DVR_SUB_DEVICE_CHANNEL_CONTROL_FAILED 2240//豸ͨʧ +#define NET_DVR_DEVICE_NOT_IN_CONFERENCE 2241//豸ڻ +#define NET_DVR_ALREADY_EXIST_CONFERENCE 2242//ǰѾڻ +#define NET_DVR_NO_SUPPORT_WITH_VIDEO_CONFERENCE 2243//ǰƵУֱ֧ +#define NET_DVR_START_INTERACTION_FAILURE 2244//ʼʧ +#define NET_DVR_ASK_QUESTION_STARTED 2245//ѿʼ +#define NET_DVR_ASK_QUESTION_CLOSED 2246//ѽ +#define NET_DVR_UNABLE_OPERATE_BY_HOST 2247//ѱ˽ã޷ +#define NET_DVR_REPEATED_ASK_QUESTION 2248//ظ +#define NET_DVR_SWITCH_TIMEDIFF_LESS_LIMIT 2249/*ػʱСֵ(10)*/ +#define NET_DVR_CHANNEL_DEVICE_EXIST 2250 //ǰͨѾ豸 +#define NET_DVR_CHANNEL_DEVICE_NOT_EXIST 2251 //ǰͨ豸 +#define NET_DVR_ERROR_ADJUSTING_RESOLUTION 2252 //ȹرIJüٵֱ +#define NET_DVR_SSD_FILE_SYSTEM_IS_UPGRADING 2253 //SSDļϵͳ +#define NET_DVR_SSD_FILE_SYSTEM_IS_FORMAT 2254 //SSDڸʽ +#define NET_DVR_CHANNEL_IS_CONNECTING 2255 //ǰͨ + +#define NET_DVR_CHANNEL_STREAM_TYPE_NOT_SUPPORT 2257 //ǰͨͲ֧ +#define NET_DVR_CHANNEL_USERNAME_NOT_EXIST 2258 //ǰͨû +#define NET_DVR_CHANNEL_ACCESS_PARAM_FAILURE 2259 //ǰͨȡʧ +#define NET_DVR_CHANNEL_GET_STREAM_FAILURE 2260 //ǰͨȡʧ +#define NET_DVR_CHANNEL_RISK_PASSWORD 2261 //ǰͨΪ + +#define NET_DVR_NO_SUPPORT_DELETE_STRANGER_LIB 2262 //֧ɾİ˿ +#define NET_DVR_NO_SUPPORT_CREATE_STRANGER_LIB 2263 //ִ֧İ˿ + +#define NET_DVR_NETWORK_PORT_CONFLICT 2264 //ö˿ڳͻ +#define NET_DVR_TRANSCODE_NO_RESOURCES 2265 //תԴ +#define NET_DVR_SSD_FILE_SYSTEM_ERROR 2266 //SSDļϵͳ +#define NET_DVR_INSUFFICIENT_SSD__FOR_FPD 2267 //ԱƵҵSSD +#define NET_DVR_ASSOCIATED_FACELIB_OVER_LIMIT 2268 //Ѵ +#define NET_DVR_NEED_DELETE_DIGITAL_CHANNEL 2269 //ɾͨ +#define NET_DVR_ERR_FALL_DOWN_RULENUM_LIMIT 2270 //Աع +#define NET_DVR_ERR_VIOLENT_MOTION_RULENUM_LIMIT 2271 //˶ +#define NET_DVR_UPGRADE_ENGINE_VERSION_MISMATCH 2272 //汾ƥ(з) + +//ȳش루3001 - 3500 +#define NET_DVR_ERR_NOTSUPPORT_DEICING 3001 //豸ǰ״ֳ̬֧ܣֻPOE+AC24VDC12Vֳ֧ܣ +#define NET_DVR_ERR_THERMENABLE_CLOSE 3002 //¹ʹδ(NET_DVR_THERMOMETRY_BASICPARAMʹδ) +#define NET_DVR_ERR_NOTMEET_DEICING 3003 //ǰǻ¶Ȳֶǻ¶С30Ȳſɿ +#define NET_DVR_ERR_PANORAMIC_LIMIT_OPERATED 3004 //ȫͼλͬʱ +#define NET_DVR_ERR_SMARTH264_ROI_OPERATED 3005 //SmartH264ROIͬʱ +#define NET_DVR_ERR_RULENUM_LIMIT 3006 // +#define NET_DVR_ERR_LASER_DEICING_OPERATED 3007 //Լܲͬʱ +#define NET_DVR_ERR_OFFDIGITALZOOM_OR_MINZOOMLIMIT 3008 //ȹرݱ䱶ܻ䱶ΪСִֵ̻⡢Ϊֻ⡢¡̻ιʱûйرݱ䱶߱䱶ûΪСֵʱʾô롣 +#define NET_DVR_ERR_FIREWAITING 3009 //豸̨ڻȴ +#define NET_DVR_SYNCHRONIZEFOV_ERROR 3010 //ͬӳǴ +#define NET_DVR_CERTIFICATE_VALIDATION_ERROR 3011 //֤֤ͨ +#define NET_DVR_CERTIFICATES_NUM_EXCEED_ERROR 3012 //֤ +#define NET_DVR_RULE_SHIELDMASK_CONFLICT_ERROR 3013 //ͻ +#define NET_DVR_MOTOR_PREHEATING_ERROR 3014 //Ԥ +#define NET_DVR_PT_DEICING_ERROR 3015 //̨ + +//ǰ˲Ʒߴ루3501-4000 +#define NET_DVR_ERR_NO_SAFETY_HELMET_REGION 3501 //δðȫñ +#define NET_DVR_ERR_UNCLOSED_SAFETY_HELMET 3502 //δرհȫñʹ +#define NET_DVR_ERR_MUX_RECV_STATE 3503 //·ý״̬쳣 +#define NET_DVR_UPLOAD_HBDLIBID_ERROR 3504 // ϴIDHBDID or customHBDID +#define NET_DVR_NOTSUPPORT_SMALLER_RATIOS 3505 // С1ʱֹ֧,߱ +#define NET_ERR_ACCOUNT_NOT_ACTIVED 3506// û˻δŲ齨飺ȵ¼˻޸ijʼ룬ٳԲ + +#define NET_ERR_NPQ_BASE_INDEX 8000 //NPQ +#define NET_ERR_NPQ_PARAM (NET_ERR_NPQ_BASE_INDEX + 1) //NPQ +#define NET_ERR_NPQ_SYSTEM (NET_ERR_NPQ_BASE_INDEX + 2) //NPQϵͳô(Դʧܻڲȣ +#define NET_ERR_NPQ_GENRAL (NET_ERR_NPQ_BASE_INDEX + 3) //NPQڲͨô +#define NET_ERR_NPQ_PRECONDITION (NET_ERR_NPQ_BASE_INDEX + 4) //NPQ˳ +#define NET_ERR_NPQ_NOTSUPPORT (NET_ERR_NPQ_BASE_INDEX + 5) //NPQ⹦֧ܲ + +#define NET_ERR_NPQ_NOTCALLBACK (NET_ERR_NPQ_BASE_INDEX + 100) //ûлص +#define NET_ERR_NPQ_LOADLIB (NET_ERR_NPQ_BASE_INDEX + 101) //NPQʧ +#define NET_ERR_NPQ_STEAM_CLOSE (NET_ERR_NPQ_BASE_INDEX + 104) //·NPQδ +#define NET_ERR_NPQ_MAX_LINK (NET_ERR_NPQ_BASE_INDEX + 110) //NPQȡ·ﵽ +#define NET_ERR_NPQ_STREAM_CFG (NET_ERR_NPQ_BASE_INDEX + 111) //ڳͻ +#define NET_ERR_NPQ_PLAYBACK_OVERSPEED (NET_ERR_NPQ_BASE_INDEX + 112) //NPQطűʴﵽ +#define NET_ERR_NPQ_PLAYBACK_BELOWSPEED (NET_ERR_NPQ_BASE_INDEX + 113) //NPQطűʴﵽ + +#define NET_EZVIZ_P2P_BASE_INDEX 8300 //өʯP2P +#define NET_DVR_EZVIZ_P2P_REGISTER_ERROR (NET_EZVIZ_P2P_BASE_INDEX + 1) +#define NET_DVR_EZVIZ_P2P_LOGIN_2C_ERROR (NET_EZVIZ_P2P_BASE_INDEX + 2) +#define NET_DVR_EZVIZ_P2P_LOGIN_2B_ERROR (NET_EZVIZ_P2P_BASE_INDEX + 3) +#define NET_DVR_EZVIZ_P2P_BUILDLINK_ERROR (NET_EZVIZ_P2P_BASE_INDEX + 4) +#define NET_DVR_EZVIZ_P2P_PORTMAPPING_ERROR (NET_EZVIZ_P2P_BASE_INDEX + 5) +#define NET_DVR_EZVIZ_P2P_COULDNT_RESOLVE_HOST (NET_EZVIZ_P2P_BASE_INDEX + 6) //P2PCLOUD_ER_COULDNT_RESOLVE_HOST 1006 +#define NET_DVR_EZVIZ_P2P_COULDNT_CONNECT (NET_EZVIZ_P2P_BASE_INDEX + 7) //P2PCLOUD_ER_COULDNT_CONNECT 1007 +#define NET_DVR_EZVIZ_P2P_OPERATION_TIMEOUT (NET_EZVIZ_P2P_BASE_INDEX + 8) //P2PCLOUD_ER_OPERATION_TIMEOUT 1028 +#define NET_DVR_EZVIZ_P2P_NOT_INITIALIZED (NET_EZVIZ_P2P_BASE_INDEX + 9) //P2PCLOUD_ER_NOT_INITIALIZED 2001 +#define NET_DVR_EZVIZ_P2P_INVALID_ARG (NET_EZVIZ_P2P_BASE_INDEX + 10) //P2PCLOUD_ER_INVALID_ARG 2002 +#define NET_DVR_EZVIZ_P2P_EXCEED_MAX_SERVICE (NET_EZVIZ_P2P_BASE_INDEX + 11) //P2PCLOUD_ER_EXCEED_MAX_SERVICE 2003 +#define NET_DVR_EZVIZ_P2P_TOKEN_NOT_EXIST (NET_EZVIZ_P2P_BASE_INDEX + 12) //P2PCLOUD_ER_TOKEN_NOT_EXIST 2004 +#define NET_DVR_EZVIZ_P2P_DISCONNECTED (NET_EZVIZ_P2P_BASE_INDEX + 13) //P2PCLOUD_ER_DISCONNECTED 2005 +#define NET_DVR_EZVIZ_P2P_RELAY_ADDR_NOT_EXIST (NET_EZVIZ_P2P_BASE_INDEX + 14) //P2PCLOUD_ER_RELAY_ADDR_NOT_EXIST 2006 +#define NET_DVR_EZVIZ_P2P_DEV_NOT_ONLINE (NET_EZVIZ_P2P_BASE_INDEX + 15) //P2PCLOUD_ER_DEV_NOT_ONLINE 3121 +#define NET_DVR_EZVIZ_P2P_DEV_CONNECT_EXCEED (NET_EZVIZ_P2P_BASE_INDEX + 16) //P2PCLOUD_ER_DEV_CONNECT_EXCEED 3123 +#define NET_DVR_EZVIZ_P2P_DEV_CONNECT_FAILED (NET_EZVIZ_P2P_BASE_INDEX + 17) //P2PCLOUD_ER_DEV_CONNECT_FAILED 3209 +#define NET_DVR_EZVIZ_P2P_DEV_RECV_TIMEOUT (NET_EZVIZ_P2P_BASE_INDEX + 18) //P2PCLOUD_ER_DEV_RECV_TIMEOUT 3213 +#define NET_DVR_EZVIZ_P2P_USER_FORCE_STOP (NET_EZVIZ_P2P_BASE_INDEX + 19) //P2PCLOUD_ER_USER_FORCE_STOP 3216 +#define NET_DVR_EZVIZ_P2P_NO_PERMISSION (NET_EZVIZ_P2P_BASE_INDEX + 20) //P2PCLOUD_ER_NO_PERMISSION 3255 +#define NET_DVR_EZVIZ_P2P_DEV_PU_NOT_FOUND (NET_EZVIZ_P2P_BASE_INDEX + 21) //P2PCLOUD_ER_DEV_PU_NOT_FOUND 3297 +#define NET_DVR_EZVIZ_P2P_DEV_CONN_NOLONGER_AVAIL (NET_EZVIZ_P2P_BASE_INDEX + 22) //P2PCLOUD_ER_DEV_CONN_NOLONGER_AVAIL 3351 +#define NET_DVR_EZVIZ_P2P_DEV_NOT_LISTENING (NET_EZVIZ_P2P_BASE_INDEX + 23) //P2PCLOUD_ER_DEV_NOT_LISTENING 3610 +#define NET_DVR_EZVIZ_P2P_DEV_TUNNEL_SOCKET_LIMITED (NET_EZVIZ_P2P_BASE_INDEX + 24) //P2PCLOUD_ER_DEV_TUNNEL_SOCKET_LIMITED 3612 +#define NET_DVR_EZVIZ_P2P_FAIL_CREATE_THREAD (NET_EZVIZ_P2P_BASE_INDEX + 25) //TUNNEL_ER_FAIL_CREATE_THREAD 4001 +#define NET_DVR_EZVIZ_P2P_FAIL_ALLOC_BUFFERS (NET_EZVIZ_P2P_BASE_INDEX + 26) //P2PCLOUD_ER_FAIL_ALLOC_BUFFERS 4002 +#define NET_DVR_EZVIZ_P2P_FAIL_CREATE_SOCKET (NET_EZVIZ_P2P_BASE_INDEX + 27) //P2PCLOUD_ER_FAIL_CREATE_SOCKET 4003 +#define NET_DVR_EZVIZ_P2P_BIND_LOCAL_SERVICE (NET_EZVIZ_P2P_BASE_INDEX + 28) //P2PCLOUD_ER_BIND_LOCAL_SERVICE 4004 +#define NET_DVR_EZVIZ_P2P_LISTEN_LOCAL_SERVICE (NET_EZVIZ_P2P_BASE_INDEX + 29) //P2PCLOUD_ER_LISTEN_LOCAL_SERVICE 4005 +#define NET_DVR_EZVIZ_P2P_SVR_RSP_BAD (NET_EZVIZ_P2P_BASE_INDEX + 30) //P2PCLOUD_ER_SVR_RSP_BAD 5001 +#define NET_DVR_EZVIZ_P2P_SVR_RSP_INVALID (NET_EZVIZ_P2P_BASE_INDEX + 31) //P2PCLOUD_ER_SVR_RSP_INVALID 5002 +#define NET_DVR_EZVIZ_P2P_SVR_LOGIN_FAILED (NET_EZVIZ_P2P_BASE_INDEX + 32) //P2PCLOUD_ER_SVR_LOGIN_FAILED 5003 +#define NET_DVR_EZVIZ_P2P_SVR_TOKEN_EXPIRED (NET_EZVIZ_P2P_BASE_INDEX + 33) //P2PCLOUD_ER_SVR_TOKEN_EXPIRED 5004 +#define NET_DVR_EZVIZ_P2P_SVR_DEV_NOT_BELONG_TO_USER (NET_EZVIZ_P2P_BASE_INDEX + 34) //P2PCLOUD_ER_SVR_DEV_NOT_BELONG_TO_USER 5005 + + +//Դ 8501~9500 +#define NET_ERR_UPGRADE_PROG_ERR 8501 //ִг +#define NET_ERR_UPGRADE_NO_DEVICE 8502 //û豸(ָLEDûнӽտ) +#define NET_ERR_UPGRADE_NO_FILE 8503 //ûҵļ +#define NET_ERR_UPGRADE_DATA_ERROR 8504 //ļݲ +#define NET_ERR_UPGRADE_LINK_SERVER_ERR 8505 //ʧ +#define NET_ERR_UPGRADE_OEMCODE_NOMATCH 8506 //oemCodeƥ +#define NET_ERR_UPGRADE_FLASH_NOENOUGH 8507 //flash +#define NET_ERR_UPGRADE_RAM_NOENOUGH 8508 //RAM +#define NET_ERR_UPGRADE_DSPRAM_NOENOUGH 8509 //DSP RAM +#define NET_ERR_NOT_SUPPORT_CHECK 8510 //ĻͺŲ֧У +#define NET_ERR_LED_DEVICE_BUSY_CHECK 8511 //LED豸æУ +#define NET_ERR_DEVICE_MEM_NOT_ENOUGH 8512 //豸ڴ治 +#define NET_ERR_CHECK_PARAM 8513 //У +#define NET_ERR_RESOLUTION_OVER_LIMIT 8514 //ֱʳ +#define NET_ERR_NO_CUSTOM_BASE 8515 //Զͼ +#define NET_ERR_PRIORITY_LOWER 8516 //ȼڵǰģʽ +#define NET_ERR_SEND_MESSAGE_EXCEPT 8517 //Ϣ쳣 +#define NET_ERR_SENDCARD_UPGRADING 8518 //Ϳ +#define NET_ERR_NO_WIRELESS_NETCARD 8519 //δ +#define NET_ERR_LOAD_FS_FAIL 8520 //Ļʧ +#define NET_ERR_FLASH_UNSTORAGE_RECCARD 8521 //Flashδ洢տ +#define NET_ERR_NOT_SUPPORT_SINGLE_NETWORKCARD_AGGREGA 8522 //ֵ֧ۺ +#define NET_ERR_DISPLAYRESOLUTION_LESSTHAN_SMALLESTRESOLUTION 8523 //ʾֱССֱ +#define NET_ERR_NOT_SUPPORT_LOCAL_SOURCE_DRAG_MORE 8524 //ֱ֧Դһ϶ +#define NET_ERR_CANCEL_CURRENT_LED_AREA 8525 //ȡLED +#define NET_ERR_LED_OUT_ASSOCIATED_AREA 8526 //LEDδڹ +#define NET_ERR_MAX_VIRTUAL_LED_PICTURE_SIZE 8527 //LEDͼƬС +#define NET_ERR_DEVICE_CTRLED_BY_REMOTER 8528 //豸ǰң +/*******************ȫִ end**********************/ + +/************************************************* +NET_DVR_IsSupport()ֵ +19λֱʾϢλTRUE)ʾ֧֣ +**************************************************/ +#define NET_DVR_SUPPORT_DDRAW 0x01//֧DIRECTDRAW֧֣򲥷ܹ +#define NET_DVR_SUPPORT_BLT 0x02//Կ֧BLT֧֣򲥷ܹ +#define NET_DVR_SUPPORT_BLTFOURCC 0x04//ԿBLT֧ɫת֧֣RGBת +#define NET_DVR_SUPPORT_BLTSHRINKX 0x08//ԿBLT֧XС֧֣ϵͳת +#define NET_DVR_SUPPORT_BLTSHRINKY 0x10//ԿBLT֧YС֧֣ϵͳת +#define NET_DVR_SUPPORT_BLTSTRETCHX 0x20//ԿBLT֧XŴ֧֣ϵͳת +#define NET_DVR_SUPPORT_BLTSTRETCHY 0x40//ԿBLT֧YŴ֧֣ϵͳת +#define NET_DVR_SUPPORT_SSE 0x80//CPU֧SSEָIntel Pentium3֧SSEָ +#define NET_DVR_SUPPORT_MMX 0x100//CPU֧MMXָIntel Pentium3֧SSEָ + +/**********************̨ begin*************************/ +#define LIGHT_PWRON 2 /* ͨƹԴ */ +#define WIPER_PWRON 3 /* ͨˢ */ +#define FAN_PWRON 4 /* ͨȿ */ +#define HEATER_PWRON 5 /* ͨ */ +#define AUX_PWRON1 6 /* ͨ豸 */ +#define AUX_PWRON2 7 /* ͨ豸 */ +#define SET_PRESET 8 /* Ԥõ */ +#define CLE_PRESET 9 /* Ԥõ */ + +#define ZOOM_IN 11 /* ٶSS(ʱ) */ +#define ZOOM_OUT 12 /* ٶSSС(ʱС) */ +#define FOCUS_NEAR 13 /* ٶSSǰ */ +#define FOCUS_FAR 14 /* ٶSS */ +#define IRIS_OPEN 15 /* ȦٶSS */ +#define IRIS_CLOSE 16 /* ȦٶSSС */ + +#define TILT_UP 21 /* ̨SSٶ */ +#define TILT_DOWN 22 /* ̨SSٶ¸ */ +#define PAN_LEFT 23 /* ̨SSٶת */ +#define PAN_RIGHT 24 /* ̨SSٶת */ +#define UP_LEFT 25 /* ̨SSٶת */ +#define UP_RIGHT 26 /* ̨SSٶת */ +#define DOWN_LEFT 27 /* ̨SSٶ¸ת */ +#define DOWN_RIGHT 28 /* ̨SSٶ¸ת */ +#define PAN_AUTO 29 /* ̨SSٶԶɨ */ + +#define FILL_PRE_SEQ 30 /* ԤõѲ */ +#define SET_SEQ_DWELL 31 /* Ѳͣʱ */ +#define SET_SEQ_SPEED 32 /* Ѳٶ */ +#define CLE_PRE_SEQ 33 /* ԤõѲɾ */ +#define STA_MEM_CRUISE 34 /* ʼ¼켣 */ +#define STO_MEM_CRUISE 35 /* ֹͣ¼켣 */ +#define RUN_CRUISE 36 /* ʼ켣 */ +#define RUN_SEQ 37 /* ʼѲ */ +#define STOP_SEQ 38 /* ֹͣѲ */ +#define GOTO_PRESET 39 /* תԤõ */ +//dacͨ˽ЭNVRNVRͨOnvifЭʱ˽ЭѲλ·ٶȡʱΪ +//OnvifΪ·еλ˽ЭѲλ·ĿʼͽNVR޷жϺʱOnvifĸǰ豸 +#define SET_SEQ_START 41 /* IP򣬿ʼѲ*/ +#define SET_SEQ_END 42 /* IP򣬽Ѳ*/ + +#define DEL_SEQ 43 /* ɾѲ· */ +#define STOP_CRUISE 44 /* ֹͣ켣 */ +#define DELETE_CRUISE 45 /* ɾ켣 */ +#define DELETE_ALL_CRUISE 46/* ɾй켣 */ + +#define PAN_CIRCLE 50 /* ̨SSٶԶԲɨ */ +#define DRAG_PTZ 51 /* ϶PTZ */ +#define LINEAR_SCAN 52 /* ɨ */ //2014-03-15 +#define CLE_ALL_PRESET 53 /* Ԥõȫ */ +#define CLE_ALL_SEQ 54 /* Ѳȫ */ +#define CLE_ALL_CRUISE 55 /* 켣ȫ */ + +#define POPUP_MENU 56 /* ʾ˵ */ + +#define TILT_DOWN_ZOOM_IN 58 /* ̨SSٶ¸&&ٶSS(ʱ) */ +#define TILT_DOWN_ZOOM_OUT 59 /* ̨SSٶ¸&&ٶSSС(ʱС) */ +#define PAN_LEFT_ZOOM_IN 60 /* ̨SSٶת&&ٶSS(ʱ)*/ +#define PAN_LEFT_ZOOM_OUT 61 /* ̨SSٶת&&ٶSSС(ʱС)*/ +#define PAN_RIGHT_ZOOM_IN 62 /* ̨SSٶת&&ٶSS(ʱ) */ +#define PAN_RIGHT_ZOOM_OUT 63 /* ̨SSٶת&&ٶSSС(ʱС) */ +#define UP_LEFT_ZOOM_IN 64 /* ̨SSٶת&&ٶSS(ʱ)*/ +#define UP_LEFT_ZOOM_OUT 65 /* ̨SSٶת&&ٶSSС(ʱС)*/ +#define UP_RIGHT_ZOOM_IN 66 /* ̨SSٶת&&ٶSS(ʱ)*/ +#define UP_RIGHT_ZOOM_OUT 67 /* ̨SSٶת&&ٶSSС(ʱС)*/ +#define DOWN_LEFT_ZOOM_IN 68 /* ̨SSٶ¸ת&&ٶSS(ʱ) */ +#define DOWN_LEFT_ZOOM_OUT 69 /* ̨SSٶ¸ת&&ٶSSС(ʱС) */ +#define DOWN_RIGHT_ZOOM_IN 70 /* ̨SSٶ¸ת&&ٶSS(ʱ) */ +#define DOWN_RIGHT_ZOOM_OUT 71 /* ̨SSٶ¸ת&&ٶSSС(ʱС) */ +#define TILT_UP_ZOOM_IN 72 /* ̨SSٶ&&ٶSS(ʱ) */ +#define TILT_UP_ZOOM_OUT 73 /* ̨SSٶ&&ٶSSС(ʱС) */ +/**********************̨ end*************************/ + +#define DVR_VEHICLE_CONTROL_LIST 0x1 //(͵)2013-11-04 + + +/************************************************* +طʱſ궨 +NET_DVR_PlayBackControl +NET_DVR_PlayControlLocDisplay +NET_DVR_DecPlayBackCtrlĺ궨 +ֲ֧鿴˵ʹ +**************************************************/ +#define NET_DVR_PLAYSTART 1//ʼ +#define NET_DVR_PLAYSTOP 2//ֹͣ +#define NET_DVR_PLAYPAUSE 3//ͣ +#define NET_DVR_PLAYRESTART 4//ָ +#define NET_DVR_PLAYFAST 5// +#define NET_DVR_PLAYSLOW 6// +#define NET_DVR_PLAYNORMAL 7//ٶ +#define NET_DVR_PLAYFRAME 8//֡ +#define NET_DVR_PLAYSTARTAUDIO 9// +#define NET_DVR_PLAYSTOPAUDIO 10//ر +#define NET_DVR_PLAYAUDIOVOLUME 11// +#define NET_DVR_PLAYSETPOS 12//ıļطŵĽ +#define NET_DVR_PLAYGETPOS 13//ȡļطŵĽ +#define NET_DVR_PLAYGETTIME 14//ȡǰѾŵʱ(ļطŵʱЧ) +#define NET_DVR_PLAYGETFRAME 15//ȡǰѾŵ֡(ļطŵʱЧ) +#define NET_DVR_GETTOTALFRAMES 16//ȡǰļܵ֡(ļطŵʱЧ) +#define NET_DVR_GETTOTALTIME 17//ȡǰļܵʱ(ļطŵʱЧ) +#define NET_DVR_THROWBFRAME 20//B֡ +#define NET_DVR_SETSPEED 24//ٶ +#define NET_DVR_KEEPALIVE 25//豸(ص2뷢һ) +#define NET_DVR_PLAYSETTIME 26//ʱ䶨λ +#define NET_DVR_PLAYGETTOTALLEN 27//ȡʱطŶӦʱڵļܳ +#define NET_DVR_PLAYSETTIME_V50 28//ʱ䶨λ(֧ʱչ) +#define NET_DVR_PLAY_FORWARD 29 //лΪ +#define NET_DVR_PLAY_REVERSE 30 //лΪ +#define NET_DVR_SET_DECODEFFRAMETYPE 31 +#define NET_DVR_SET_TRANS_TYPE 32 //תʽ +#define NET_DVR_PLAY_CONVERT 33 //طת +#define NET_DVR_START_DRAWFRAME 34 //ʼ֡ط +#define NET_DVR_STOP_DRAWFRAME 35 //ֹͣ֡ط +#define NET_DVR_CHANGEWNDRESOLUTION 36 //ڴСı䣬֪ͨſ +#define NET_DVR_RESETBUFFER 37 //վ뻺Զ̻طļ +#define NET_DVR_VOD_DRAG_ING 38 //ط϶ +#define NET_DVR_VOD_DRAG_END 39 //ط϶ +#define NET_DVR_VOD_RESET_PLAYTIME 40 //貥ʱ + + +#define PLAYM4_DECODE_NORMAIL 0 // +#define PLAYM4_DECODE_KEY_FRAME 1 //ֻI֡ +#define PLAYM4_DECODE_NONE 2 //ȫ +#define PLAYM4_DECODE_TEMPORAL_LAYER_0 3 //1/2 +#define PLAYM4_DECODE_TEMPORAL_LAYER_1 4 //1/4 + + +//Զ̰£ +/* key value send to CONFIG program */ +#define KEY_CODE_1 1 +#define KEY_CODE_2 2 +#define KEY_CODE_3 3 +#define KEY_CODE_4 4 +#define KEY_CODE_5 5 +#define KEY_CODE_6 6 +#define KEY_CODE_7 7 +#define KEY_CODE_8 8 +#define KEY_CODE_9 9 +#define KEY_CODE_0 10 +#define KEY_CODE_POWER 11 +#define KEY_CODE_MENU 12 +#define KEY_CODE_ENTER 13 +#define KEY_CODE_CANCEL 14 +#define KEY_CODE_UP 15 +#define KEY_CODE_DOWN 16 +#define KEY_CODE_LEFT 17 +#define KEY_CODE_RIGHT 18 +#define KEY_CODE_EDIT 19 +#define KEY_CODE_ADD 20 +#define KEY_CODE_MINUS 21 +#define KEY_CODE_PLAY 22 +#define KEY_CODE_REC 23 +#define KEY_CODE_PAN 24 +#define KEY_CODE_M 25 +#define KEY_CODE_A 26 +#define KEY_CODE_F1 27 +#define KEY_CODE_F2 28 + +/* for PTZ control */ +#define KEY_PTZ_UP_START KEY_CODE_UP +#define KEY_PTZ_UP_STOP 32 + +#define KEY_PTZ_DOWN_START KEY_CODE_DOWN +#define KEY_PTZ_DOWN_STOP 33 + +#define KEY_PTZ_LEFT_START KEY_CODE_LEFT +#define KEY_PTZ_LEFT_STOP 34 + +#define KEY_PTZ_RIGHT_START KEY_CODE_RIGHT +#define KEY_PTZ_RIGHT_STOP 35 + +#define KEY_PTZ_AP1_START KEY_CODE_EDIT /*Ȧ+*/ +#define KEY_PTZ_AP1_STOP 36 + +#define KEY_PTZ_AP2_START KEY_CODE_PAN /*Ȧ-*/ +#define KEY_PTZ_AP2_STOP 37 + +#define KEY_PTZ_FOCUS1_START KEY_CODE_A /*۽+*/ +#define KEY_PTZ_FOCUS1_STOP 38 + +#define KEY_PTZ_FOCUS2_START KEY_CODE_M /*۽-*/ +#define KEY_PTZ_FOCUS2_STOP 39 + +#define KEY_PTZ_B1_START 40 /*䱶+*/ +#define KEY_PTZ_B1_STOP 41 + +#define KEY_PTZ_B2_START 42 /*䱶-*/ +#define KEY_PTZ_B2_STOP 43 + +//9000 +#define KEY_CODE_11 44 +#define KEY_CODE_12 45 +#define KEY_CODE_13 46 +#define KEY_CODE_14 47 +#define KEY_CODE_15 48 +#define KEY_CODE_16 49 + + + +/************************* begin*******************************/ +//NET_DVR_SetDVRConfigNET_DVR_GetDVRConfig,עӦýṹ + +#define NET_DVR_GET_DEVICECFG 100 //ȡ豸 +#define NET_DVR_SET_DEVICECFG 101 //豸 +#define NET_DVR_GET_NETCFG 102 //ȡ +#define NET_DVR_SET_NETCFG 103 // +#define NET_DVR_GET_PICCFG 104 //ȡͼ +#define NET_DVR_SET_PICCFG 105 //ͼ +#define NET_DVR_GET_COMPRESSCFG 106 //ȡѹ +#define NET_DVR_SET_COMPRESSCFG 107 //ѹ +#define NET_DVR_GET_RECORDCFG 108 //ȡ¼ʱ +#define NET_DVR_SET_RECORDCFG 109 //¼ʱ +#define NET_DVR_GET_DECODERCFG 110 //ȡ +#define NET_DVR_SET_DECODERCFG 111 //ý +#define NET_DVR_GET_RS232CFG 112 //ȡ232ڲ +#define NET_DVR_SET_RS232CFG 113 //232ڲ +#define NET_DVR_GET_ALARMINCFG 114 //ȡ +#define NET_DVR_SET_ALARMINCFG 115 //ñ +#define NET_DVR_GET_ALARMOUTCFG 116 //ȡ +#define NET_DVR_SET_ALARMOUTCFG 117 //ñ +#define NET_DVR_GET_TIMECFG 118 //ȡDVRʱ +#define NET_DVR_SET_TIMECFG 119 //DVRʱ +#define NET_DVR_GET_PREVIEWCFG 120 //ȡԤ +#define NET_DVR_SET_PREVIEWCFG 121 //Ԥ +#define NET_DVR_GET_VIDEOOUTCFG 122 //ȡƵ +#define NET_DVR_SET_VIDEOOUTCFG 123 //Ƶ +#define NET_DVR_GET_USERCFG 124 //ȡû +#define NET_DVR_SET_USERCFG 125 //û +#define NET_DVR_GET_EXCEPTIONCFG 126 //ȡ쳣 +#define NET_DVR_SET_EXCEPTIONCFG 127 //쳣 +#define NET_DVR_GET_ZONEANDDST 128 //ȡʱʱƲ +#define NET_DVR_SET_ZONEANDDST 129 //ʱʱƲ + +//עֻ֧4OSDͣͨV30µ豸汾 +#define NET_DVR_GET_SHOWSTRING 130 //ȡַ +#define NET_DVR_SET_SHOWSTRING 131 //õַ + +#define NET_DVR_GET_EVENTCOMPCFG 132 //ȡ¼¼ +#define NET_DVR_SET_EVENTCOMPCFG 133 //¼¼ +#define NET_DVR_GET_FTPCFG 134 //ȡץͼFTP() +#define NET_DVR_SET_FTPCFG 135 //ץͼFTP() +#define NET_DVR_GET_AUXOUTCFG 140 //ȡ(HS豸2006-02-28) +#define NET_DVR_SET_AUXOUTCFG 141 //ñ(HS豸2006-02-28) +#define NET_DVR_GET_PREVIEWCFG_AUX 142 //ȡ-sϵ˫Ԥ(-sϵ˫2006-04-13) +#define NET_DVR_SET_PREVIEWCFG_AUX 143 //-sϵ˫Ԥ(-sϵ˫2006-04-13) + +#define NET_DVR_GET_PASSWORD_MANAGE_CFG 144 //ȡ +#define NET_DVR_SET_PASSWORD_MANAGE_CFG 145 // +#define NET_DVR_UNLOCK_USER 146 //û +#define NET_DVR_GET_SECURITY_CFG 147 //ȡȫ֤ +#define NET_DVR_SET_SECURITY_CFG 148 //ðȫ֤ +#define NET_DVR_GET_LOCKED_INFO_LIST 149 //ȡбϢ + + +/*********************************ֽܲӿ begin***************************************/ +//ΪӦNET_VCA_RULECFG +#define NET_DVR_SET_RULECFG 152 //Ϊ +#define NET_DVR_GET_RULECFG 153 //ȡΪ +//궨NET_DVR_TRACK_CFG +#define NET_DVR_SET_TRACK_CFG 160//ò +#define NET_DVR_GET_TRACK_CFG 161//ȡò + +//ܷȡýṹ +#define NET_DVR_SET_IVMS_STREAMCFG 162 //ܷȡ +#define NET_DVR_GET_IVMS_STREAMCFG 163 //ȡܷȡ +//ܿƲṹ +#define NET_DVR_SET_VCA_CTRLCFG 164 //ܿƲ +#define NET_DVR_GET_VCA_CTRLCFG 165 //ȡܿƲ +//NET_VCA_MASK_REGION_LIST +#define NET_DVR_SET_VCA_MASK_REGION 166 // +#define NET_DVR_GET_VCA_MASK_REGION 167 //ȡ + +//ATM NET_VCA_ENTER_REGION +#define NET_DVR_SET_VCA_ENTER_REGION 168 //ý +#define NET_DVR_GET_VCA_ENTER_REGION 169 //ȡ + +//궨NET_VCA_LINE_SEGMENT_LIST +#define NET_DVR_SET_VCA_LINE_SEGMENT 170 //ñ궨 +#define NET_DVR_GET_VCA_LINE_SEGMENT 171 //ȡ궨 + +// ivmsNET_IVMS_MASK_REGION_LIST +#define NET_DVR_SET_IVMS_MASK_REGION 172 //IVMS +#define NET_DVR_GET_IVMS_MASK_REGION 173 //ȡIVMS +// ivmsNET_IVMS_ENTER_REGION +#define NET_DVR_SET_IVMS_ENTER_REGION 174 //IVMS +#define NET_DVR_GET_IVMS_ENTER_REGION 175 //ȡIVMS + +#define NET_DVR_SET_IVMS_BEHAVIORCFG 176 //ܷΪ +#define NET_DVR_GET_IVMS_BEHAVIORCFG 177 //ȡܷΪ + +// IVMS طż +#define NET_DVR_IVMS_SET_SEARCHCFG 178 //IVMSطż +#define NET_DVR_IVMS_GET_SEARCHCFG 179 //ȡIVMSطż + +#define NET_DVR_SET_POSITION_TRACK 180 // óϢ +#define NET_DVR_GET_POSITION_TRACK 181 // ȡϢ + +#define NET_DVR_SET_CALIBRATION 182 // ñ궨Ϣ +#define NET_DVR_GET_CALIBRATION 183 // ȡ궨Ϣ + +#define NET_DVR_SET_PDC_RULECFG 184 // ͳƹ +#define NET_DVR_GET_PDC_RULECFG 185 // ȡͳƹ + +#define NET_DVR_SET_PU_STREAMCFG 186 // ǰȡ豸Ϣ +#define NET_DVR_GET_PU_STREAMCFG 187 // ȡǰȡ豸Ϣ + +#define NET_VCA_SET_IVMS_BEHAVIOR_CFG 192 // IVMSΪ ʱ +#define NET_VCA_GET_IVMS_BEHAVIOR_CFG 193 // ȡIVMSΪ ʱ + +#define NET_VCA_SET_SIZE_FILTER 194 // ȫֳߴ +#define NET_VCA_GET_SIZE_FILTER 195 // ȡȫֳߴ + +#define NET_DVR_SET_TRACK_PARAMCFG 196 // ز˵ +#define NET_DVR_GET_TRACK_PARAMCFG 197 // ȡز˵ + +#define NET_DVR_SET_DOME_MOVEMENT_PARAM 198 // о +#define NET_DVR_GET_DOME_MOVEMENT_PARAM 199 // ȡо + +#define NET_DVR_GET_PICCFG_EX 200 //ȡͼ(SDK_V14չ) +#define NET_DVR_SET_PICCFG_EX 201 //ͼ(SDK_V14չ) +#define NET_DVR_GET_USERCFG_EX 202 //ȡû(SDK_V15չ) +#define NET_DVR_SET_USERCFG_EX 203 //û(SDK_V15չ) +#define NET_DVR_GET_COMPRESSCFG_EX 204 //ȡѹ(SDK_V15չ2006-05-15) +#define NET_DVR_SET_COMPRESSCFG_EX 205 //ѹ(SDK_V15չ2006-05-15) + + +#define NET_DVR_GET_NETAPPCFG 222 //ȡӦò NTP/DDNS/EMAIL +#define NET_DVR_SET_NETAPPCFG 223 //Ӧò NTP/DDNS/EMAIL +#define NET_DVR_GET_NTPCFG 224 //ȡӦò NTP +#define NET_DVR_SET_NTPCFG 225 //Ӧò NTP +#define NET_DVR_GET_DDNSCFG 226 //ȡӦò DDNS +#define NET_DVR_SET_DDNSCFG 227 //Ӧò DDNS +//ӦNET_DVR_EMAILPARA +#define NET_DVR_GET_EMAILCFG 228 //ȡӦò EMAIL +#define NET_DVR_SET_EMAILCFG 229 //Ӧò EMAIL + +#define NET_DVR_GET_NFSCFG 230 /* NFS disk config */ +#define NET_DVR_SET_NFSCFG 231 /* NFS disk config */ + +/*עΪƣֻ֧8OSDͣV30豸汾֮ǰ +NET_DVR_GET_SHOWSTRING NET_DVR_SET_SHOWSTRING ʹã*/ +#define NET_DVR_GET_SHOWSTRING_EX 238 //ȡַչ(֧8ַ) +#define NET_DVR_SET_SHOWSTRING_EX 239 //õַչ(֧8ַ) +#define NET_DVR_GET_NETCFG_OTHER 244 //ȡ +#define NET_DVR_SET_NETCFG_OTHER 245 // + +//ӦNET_DVR_EMAILCFGṹ +#define NET_DVR_GET_EMAILPARACFG 250 //Get EMAIL parameters +#define NET_DVR_SET_EMAILPARACFG 251 //Setup EMAIL parameters + + +#define NET_DVR_GET_DDNSCFG_EX 274 //ȡչDDNS +#define NET_DVR_SET_DDNSCFG_EX 275 //չDDNS + +#define NET_DVR_SET_PTZPOS 292 //̨PTZλ +#define NET_DVR_GET_PTZPOS 293 //̨ȡPTZλ +#define NET_DVR_GET_PTZSCOPE 294 //̨ȡPTZΧ + +#define NET_DVR_GET_AP_INFO_LIST 305//ȡԴ +#define NET_DVR_SET_WIFI_CFG 306 //IP豸߲ +#define NET_DVR_GET_WIFI_CFG 307 //ȡIP豸߲ +#define NET_DVR_SET_WIFI_WORKMODE 308 //IP豸ڹģʽ +#define NET_DVR_GET_WIFI_WORKMODE 309 //ȡIP豸ڹģʽ +#define NET_DVR_GET_WIFI_STATUS 310 //ȡ豸ǰwifi״̬ +/*********************************ܽͨ¼begin***************************************/ +#define NET_DVR_GET_REFERENCE_REGION 400 //ȡο +#define NET_DVR_SET_REFERENCE_REGION 401 //òο + +#define NET_DVR_GET_TRAFFIC_MASK_REGION 402 //ȡͨ¼ +#define NET_DVR_SET_TRAFFIC_MASK_REGION 403 //ýͨ¼ +#define NET_DVR_SET_AID_RULECFG 404 //ýͨ¼ +#define NET_DVR_GET_AID_RULECFG 405 //ȡͨ¼ + +#define NET_DVR_SET_TPS_RULECFG 406 //ýͨͳƹ +#define NET_DVR_GET_TPS_RULECFG 407 //ȡͨͳƹ + +#define NET_DVR_SET_LANECFG 408 //ó +#define NET_DVR_GET_LANECFG 409 //ȡ +#define NET_DVR_GET_VCA_RULE_COLOR_CFG 410 //ȡܹɫ +#define NET_DVR_SET_VCA_RULE_COLOR_CFG 411 //ܹɫ +#define NET_DVR_GET_SWITCH_LAMP_CFG 412 //ȡصƼò +#define NET_DVR_SET_SWITCH_LAMP_CFG 413 //ÿصƼò + + +/*********************************ܽͨ¼end***************************************/ +#define NET_DVR_SET_FACEDETECT_RULECFG 420 // +#define NET_DVR_GET_FACEDETECT_RULECFG 421 // ȡ + +#define NET_DVR_SET_VEHICLE_RECOG_TASK 422 //ʶύ +#define NET_DVR_GET_VEHICLE_RECOG_TASK 423 //ʶȡ + +#define NET_DVR_SET_TIMECORRECT 432 //УʱãֻУʱ¼Уʱ eg.NET_DVR_SET_TIMECFG ޸豸УʱãNTPУʱᱻ޸ΪֶУʱ +#define NET_DVR_GET_CONNECT_LIST 433 //ȡ豸бϢ + +/***************************DS9000(_V30) begin *****************************/ +//(NET_DVR_NETCFG_V30ṹ) +#define NET_DVR_GET_NETCFG_V30 1000 //ȡ +#define NET_DVR_SET_NETCFG_V30 1001 // + +//ͼ(NET_DVR_PICCFG_V30ṹ) +#define NET_DVR_GET_PICCFG_V30 1002 //ȡͼ +#define NET_DVR_SET_PICCFG_V30 1003 //ͼ + +//¼ʱ(NET_DVR_RECORD_V30ṹ) +#define NET_DVR_GET_RECORDCFG_V30 1004 //ȡ¼ +#define NET_DVR_SET_RECORDCFG_V30 1005 //¼ + +//û(NET_DVR_USER_V30ṹ) +#define NET_DVR_GET_USERCFG_V30 1006 //ȡû +#define NET_DVR_SET_USERCFG_V30 1007 //û + +//¼ʱ(NET_DVR_RECORD_V40ṹ) +#define NET_DVR_GET_RECORDCFG_V40 1008 //ȡ¼(չ) +#define NET_DVR_SET_RECORDCFG_V40 1009 //¼(չ) + +//9000DDNS(NET_DVR_DDNSPARA_V30ṹ) +#define NET_DVR_GET_DDNSCFG_V30 1010 //ȡDDNS(9000չ) +#define NET_DVR_SET_DDNSCFG_V30 1011 //DDNS(9000չ) + +//EMAIL(NET_DVR_EMAILCFG_V30ṹ) +#define NET_DVR_GET_EMAILCFG_V30 1012 //ȡEMAIL +#define NET_DVR_SET_EMAILCFG_V30 1013 //EMAIL + +#define NET_DVR_GET_NETCFG_V50 1015 //ȡ(V50) +#define NET_DVR_SET_NETCFG_V50 1016 //(V50) + +#define NET_GET_CRUISEPOINT_V40 1018 //ȡѲ· + +//Ѳ (NET_DVR_CRUISE_PARAṹ) +#define NET_DVR_GET_CRUISE 1020 +#define NET_DVR_SET_CRUISE 1021 + + +//ṹ (NET_DVR_ALARMINCFG_V30ṹ) +#define NET_DVR_GET_ALARMINCFG_V30 1024 +#define NET_DVR_SET_ALARMINCFG_V30 1025 + +//ṹ (NET_DVR_ALARMOUTCFG_V30ṹ) +#define NET_DVR_GET_ALARMOUTCFG_V30 1026 +#define NET_DVR_SET_ALARMOUTCFG_V30 1027 + +//Ƶṹ (NET_DVR_VIDEOOUT_V30ṹ) +#define NET_DVR_GET_VIDEOOUTCFG_V30 1028 +#define NET_DVR_SET_VIDEOOUTCFG_V30 1029 + + +/*֧8OSDͣ豸汾ΪV30ʱͨ豸汾ƥ䣬 +ͬʱ֮ǰNET_DVR_GET_SHOWSTRING NET_DVR_SET_SHOWSTRING ʹã*/ +//ַṹ (NET_DVR_SHOWSTRING_V30ṹ) +#define NET_DVR_GET_SHOWSTRING_V30 1030 +#define NET_DVR_SET_SHOWSTRING_V30 1031 + +//쳣ṹ (NET_DVR_EXCEPTION_V30ṹ) +#define NET_DVR_GET_EXCEPTIONCFG_V30 1034 +#define NET_DVR_SET_EXCEPTIONCFG_V30 1035 + +//232ṹ (NET_DVR_RS232CFG_V30ṹ) +#define NET_DVR_GET_RS232CFG_V30 1036 +#define NET_DVR_SET_RS232CFG_V30 1037 + +//Ӳ̽ṹ (NET_DVR_NET_DISKCFGṹ) +#define NET_DVR_GET_NET_DISKCFG 1038 //Ӳ̽ȡ +#define NET_DVR_SET_NET_DISKCFG 1039 //Ӳ̽ +//ѹ (NET_DVR_COMPRESSIONCFG_V30ṹ) +#define NET_DVR_GET_COMPRESSCFG_V30 1040 +#define NET_DVR_SET_COMPRESSCFG_V30 1041 + +//ȡ485 (NET_DVR_DECODERCFG_V30ṹ) +#define NET_DVR_GET_DECODERCFG_V30 1042 //ȡ +#define NET_DVR_SET_DECODERCFG_V30 1043 //ý + +//ȡԤ (NET_DVR_PREVIEWCFG_V30ṹ) +#define NET_DVR_GET_PREVIEWCFG_V30 1044 //ȡԤ +#define NET_DVR_SET_PREVIEWCFG_V30 1045 //Ԥ + +//Ԥ (NET_DVR_PREVIEWCFG_AUX_V30ṹ) +#define NET_DVR_GET_PREVIEWCFG_AUX_V30 1046 //ȡԤ +#define NET_DVR_SET_PREVIEWCFG_AUX_V30 1047 //øԤ + +//IPò NET_DVR_IPPARACFGṹ +#define NET_DVR_GET_IPPARACFG 1048 //ȡIPϢ +#define NET_DVR_SET_IPPARACFG 1049 //IPϢ + +//IPò NET_DVR_IPALARMINCFGṹ +#define NET_DVR_GET_IPALARMINCFG 1050 //ȡIPϢ +#define NET_DVR_SET_IPALARMINCFG 1051 //IPϢ + +//IPò NET_DVR_IPALARMOUTCFGṹ +#define NET_DVR_GET_IPALARMOUTCFG 1052 //ȡIPϢ +#define NET_DVR_SET_IPALARMOUTCFG 1053 //IPϢ + +//Ӳ̹IJȡ (NET_DVR_HDCFGṹ) +#define NET_DVR_GET_HDCFG 1054 //ȡӲ̹ò +#define NET_DVR_SET_HDCFG 1055 //Ӳ̹ò +//IJȡ (NET_DVR_HDGROUP_CFGṹ) +#define NET_DVR_GET_HDGROUP_CFG 1056 //ȡò +#define NET_DVR_SET_HDGROUP_CFG 1057 //ò + +//豸(NET_DVR_COMPRESSION_AUDIOṹ) +#define NET_DVR_GET_COMPRESSCFG_AUD 1058 //ȡ豸Խ +#define NET_DVR_SET_COMPRESSCFG_AUD 1059 //豸Խ + +//IPò NET_DVR_IPPARACFG_V31ṹ +#define NET_DVR_GET_IPPARACFG_V31 1060 //ȡIPϢ +#define NET_DVR_SET_IPPARACFG_V31 1061 //IPϢ + +// ͨԴ (NET_DVR_IPPARACFG_V40ṹ) +#define NET_DVR_GET_IPPARACFG_V40 1062 // ȡIP +#define NET_DVR_SET_IPPARACFG_V40 1063 // IP + +#define NET_DVR_GET_CCDPARAMCFG 1067 //IPCȡCCD +#define NET_DVR_SET_CCDPARAMCFG 1068 //IPCCCD + +#define NET_DVR_GET_IOINCFG 1070 //ȡץĻIO +#define NET_DVR_SET_IOINCFG 1071 //ץĻIO + +#define NET_DVR_GET_IOOUTCFG 1072 //ȡץĻIO +#define NET_DVR_SET_IOOUTCFG 1073 //ץĻIO + +#define NET_DVR_GET_FLASHCFG 1074 //ȡIO +#define NET_DVR_SET_FLASHCFG 1075 //IO + +#define NET_DVR_GET_LIGHTSNAPCFG 1076 //ȡץĻ̵Ʋ +#define NET_DVR_SET_LIGHTSNAPCFG 1077 //ץĻ̵Ʋ + +#define NET_DVR_GET_MEASURESPEEDCFG 1078 //ȡץĻٲ +#define NET_DVR_SET_MEASURESPEEDCFG 1079 //ץĻٲ + +#define NET_DVR_GET_IMAGEOVERLAYCFG 1080//ȡץĻͼϢ +#define NET_DVR_SET_IMAGEOVERLAYCFG 1081//ץĻͼϢ + +#define NET_DVR_GET_SNAPCFG 1082//ȡIOץĹ +#define NET_DVR_SET_SNAPCFG 1083//õIOץĹ + +#define NET_DVR_GET_VTPPARAM 1084//ȡȦ +#define NET_DVR_SET_VTPPARAM 1085//Ȧ + +#define NET_DVR_GET_SNAPENABLECFG 1086//ȡץĻʹܲ +#define NET_DVR_SET_SNAPENABLECFG 1087//ץĻʹܲ + +#define NET_DVR_GET_POSTEPOLICECFG 1088//ȡڵ羯 +#define NET_DVR_SET_POSTEPOLICECFG 1089//ÿڵ羯 + +#define NET_DVR_GET_JPEGCFG_V30 1090//ȡץͼJPEG() +#define NET_DVR_SET_JPEGCFG_V30 1091//ץͼJPEG() + +#define NET_DVR_GET_SPRCFG 1092//ȡʶ +#define NET_DVR_SET_SPRCFG 1093//óʶ +#define NET_DVR_GET_PLCCFG 1094//ȡȲ +#define NET_DVR_SET_PLCCFG 1095//óȲ + +#define NET_DVR_GET_DEVICESTATECFG 1096//ȡ豸ǰ״̬ +#define NET_DVR_SET_CALIBRATE_TIME 1097//չʱУʱ +#define NET_DVR_GET_CALIBRATE_TIME 1098//ȡչʱУʱ + +#define NET_DVR_GET_DEVICECFG_V40 1100//ȡչ豸 +#define NET_DVR_SET_DEVICECFG_V40 1101//չ豸 + +#define NET_DVR_GET_ZEROCHANCFG 1102 //ȡͨѹ +#define NET_DVR_SET_ZEROCHANCFG 1103 //ͨѹ + +#define NET_DVR_GET_ZERO_PREVIEWCFG_V30 1104 // ȡͨԤ +#define NET_DVR_SET_ZERO_PREVIEWCFG_V30 1105 // ͨԤ + +#define NET_DVR_SET_ZERO_ZOOM 1106 //ͨ +#define NET_DVR_GET_ZERO_ZOOM 1107 //ȡͨ + +#define NET_DVR_NATASSOCIATECFG_GET 1110 //ȡNATϢ +#define NET_DVR_NATASSOCIATECFG_SET 1111 //NATϢ + +#define NET_DVR_GET_SNMPCFG 1112 //ȡSNMP +#define NET_DVR_SET_SNMPCFG 1113 //SNMP + +#define NET_DVR_GET_SNMPCFG_V30 1114 //ȡSNMPv30 +#define NET_DVR_SET_SNMPCFG_V30 1115 //SNMPv30 + +#define NET_DVR_VIDEOPLATFORMALARMCFG_GET 1130 //ȡƵۺƽ̨ +#define NET_DVR_VIDEOPLATFORMALARMCFG_SET 1131 //Ƶۺƽ̨ + +#define NET_DVR_GET_RAID_ADAPTER_INFO 1134 // ȡϢ +#define NET_DVR_SET_RAID_ADAPTER_INFO 1135 // Ϣ + +#define NET_DVR_MATRIX_BIGSCREENCFG_GET 1140//ȡƴӲ +#define NET_DVR_MATRIX_BIGSCREENCFG_SET 1141//ôƴӲ + +#define NET_DVR_GET_MB_PLATFORMPARA 1145 //ȡƽ̨¼ +#define NET_DVR_SET_MB_PLATFORMPARA 1146 //ƽ̨¼ +#define NET_DVR_GET_MB_DEVSTATUS 1147 //ȡƶ豸״̬ + +#define NET_DVR_GET_DECODER_JOINT_CHAN 1151//ȡͨ +#define NET_DVR_SET_DECODER_JOINT_CHAN 1152//ýͨ + +// +#define NET_DVR_GET_NETCFG_MULTI 1161 //ȡ +#define NET_DVR_SET_NETCFG_MULTI 1162 //ö +#define NET_DVR_GET_NETCFG_MULTI_V50 1163 //ȡ() +#define NET_DVR_SET_NETCFG_MULTI_V50 1164 //ö() + +#define NET_DVR_GET_CMSPARA 1170//ȡƽ̨ +#define NET_DVR_SET_CMSPARA 1171//ƽ̨ +#define NET_DVR_GET_DIALSTATUS 1172//ȡ״̬ +#define NET_DVR_GET_SMSRELATIVEPARA 1173//ȡز +#define NET_DVR_SET_SMSRELATIVEPARA 1174//öز +#define NET_DVR_GET_PINSTATUS 1175//ȡPin״̬ +#define NET_DVR_SET_PINCMD 1176//PIN +#define NET_DVR_SET_SENSOR_CFG 1180//ģ +#define NET_DVR_GET_SENSOR_CFG 1181//ȡģ +#define NET_DVR_SET_ALARMIN_PARAM 1182//ñ +#define NET_DVR_GET_ALARMIN_PARAM 1183//ȡ +#define NET_DVR_SET_ALARMOUT_PARAM 1184//ñ +#define NET_DVR_GET_ALARMOUT_PARAM 1185//ȡ +#define NET_DVR_SET_SIREN_PARAM 1186//þŲ +#define NET_DVR_GET_SIREN_PARAM 1187//ȡŲ +#define NET_DVR_SET_ALARM_RS485CFG 1188//ñ485 +#define NET_DVR_GET_ALARM_RS485CFG 1189//ȡ485 +#define NET_DVR_GET_ALARMHOST_MAIN_STATUS 1190//ȡҪ״̬ +#define NET_DVR_GET_ALARMHOST_OTHER_STATUS 1191//ȡ״̬ +#define NET_DVR_SET_ALARMHOST_ENABLECFG 1192//ȡʹ״̬ +#define NET_DVR_GET_ALARMHOST_ENABLECFG 1193//ñʹ״̬ +#define NET_DVR_SET_ALARM_CAMCFG 1194//Ƶۺƽ̨CAM +#define NET_DVR_GET_ALARM_CAMCFG 1195//Ƶۺƽ̨CAM +#define NET_DVR_GET_GATEWAY_CFG 1196//ȡŽ +#define NET_DVR_SET_GATEWAY_CFG 1197//Ž + +#define NET_DVR_GET_ALARMDIALMODECFG 1198//ȡŲ +#define NET_DVR_SET_ALARMDIALMODECFG 1199//ñŲ +#define NET_DVR_SET_ALARMIN_PARAM_V50 1200 // ÷V50 +#define NET_DVR_GET_ALARMIN_PARAM_V50 1201 // ȡV50 +#define NET_DVR_SET_WINCFG 1202//ڲ +#define NET_DVR_GET_ALARMHOSTDIALSETUPMODE 1204//ȡ÷ʽ +#define NET_DVR_SET_ALARMHOSTDIALSETUPMODE 1205//ñ÷ʽ + +//Ƶ(Ƶ V1.3) +#define NET_DVR_SET_SUBSYSTEM_ALARM 1210 //ϵͳ/ +#define NET_DVR_GET_SUBSYSTEM_ALARM 1211 //ȡϵͳ/ +#define NET_DVR_GET_ALLOWLIST_ALARM 1215 //ȡ +#define NET_DVR_SET_ALLOWLIST_ALARM 1216 // +#define NET_DVR_GET_ALARMHOST_MODULE_LIST 1222 //ȡģ +#define NET_DVR_SET_PRIOR_ALARM 1223 //ϵͳ/ +#define NET_DVR_GET_PRIOR_ALARM 1224 //ȡϵͳ/ +#define NET_DVR_SET_TAMPER_ALARMIN_PARAM 1225 // ÷ +#define NET_DVR_GET_TAMPER_ALARMIN_PARAM 1226 // ȡ + +#define NET_DVR_GET_HOLIDAY_PARAM_CFG 1240// ȡڼղ +#define NET_DVR_SET_HOLIDAY_PARAM_CFG 1241// ýڼղ + +#define NET_DVR_GET_MOTION_HOLIDAY_HANDLE 1242// ȡƶձʽ +#define NET_DVR_SET_MOTION_HOLIDAY_HANDLE 1243// ȡƶձʽ + +#define NET_DVR_GET_VILOST_HOLIDAY_HANDLE 1244// ȡƵźŶʧձʽ +#define NET_DVR_SET_VILOST_HOLIDAY_HANDLE 1245// ȡƵźŶʧձʽ + +#define NET_DVR_GET_HIDE_HOLIDAY_HANDLE 1246// ȡڸǼձʽ +#define NET_DVR_SET_HIDE_HOLIDAY_HANDLE 1247// ڸǼձʽ + +#define NET_DVR_GET_ALARMIN_HOLIDAY_HANDLE 1248// ȡձʽ +#define NET_DVR_SET_ALARMIN_HOLIDAY_HANDLE 1249// ñձʽ +#define NET_DVR_GET_ALARMOUT_HOLIDAY_HANDLE 1250// ȡձʽ +#define NET_DVR_SET_ALARMOUT_HOLIDAY_HANDLE 1251// ñձʽ +#define NET_DVR_GET_HOLIDAY_RECORD 1252// ȡ¼ +#define NET_DVR_SET_HOLIDAY_RECORD 1253// ü¼ +#define NET_DVR_GET_NETWORK_BONDING 1254// ȡBONDING +#define NET_DVR_SET_NETWORK_BONDING 1255// BONDING +#define NET_DVR_GET_LINK_STATUS 1256// ȡͨIP״̬ +#define NET_DVR_GET_DISK_QUOTA_CFG 1278// ȡϢ +#define NET_DVR_SET_DISK_QUOTA_CFG 1279// ôϢ +#define NET_DVR_GET_JPEG_CAPTURE_CFG 1280// ȡDVRץͼ +#define NET_DVR_SET_JPEG_CAPTURE_CFG 1281// DVRץͼ +#define NET_DVR_GET_SCHED_CAPTURECFG 1282// ȡץͼƻ +#define NET_DVR_SET_SCHED_CAPTURECFG 1283// ץͼƻ +#define NET_DVR_GET_VGA_PREVIEWCFG 1284// ȡVGAԤ +#define NET_DVR_SET_VGA_PREVIEWCFG 1285// VGAԤ +#define NET_DVR_GET_VIDEO_INPUT_EFFECT 1286// ȡͨƵͼ +#define NET_DVR_SET_VIDEO_INPUT_EFFECT 1287// ͨƵͼ + +#define NET_DVR_GET_STORAGE_SERVER_SWITCH 1290//ȡ洢״̬ +#define NET_DVR_SET_STORAGE_SERVER_SWITCH 1291//ô洢״̬ + +#define NET_DVR_GET_DISK_QUOTA_CFG_V60 1292//ȡϢV60 +#define NET_DVR_SET_DISK_QUOTA_CFG_V60 1293//ôϢV60 + +#define NET_DVR_GET_OPTICAL_CHANNEL 1300//ȡϵͳͨϢ +#define NET_DVR_SET_OPTICAL_CHANNEL 1301//ùϵͳͨϢ +#define NET_DVR_GET_FIBER_CASCADE 1302//ȡ˼ģʽ +#define NET_DVR_SET_FIBER_CASCADE 1303//ù˼ģʽ +#define NET_DVR_GET_SPARTAN_STATUS 1304//ȡ״̬ +#define NET_DVR_SET_SPARTAN_STATUS 1305//ó״̬ +#define NET_DVR_GET_ETHERNET_CHANNEL 1306//ȡ˿ھۺϲ +#define NET_DVR_SET_ETHERMET_CHANNEL 1307//ö˿ھۺϲ +#define NET_DVR_OPTICAL_REBOOT 1320//˻ +#define NET_DVR_SET_AUDIOCHAN_CFG 1321//Ƶл +#define NET_DVR_GET_AUDIOCHAN_CFG 1322//ȡƵл +//SDI1.0 +#define NET_DVR_SET_MATRIX_BASE_CFG 1332 //þ +#define NET_DVR_GET_MATRIX_BASE_CFG 1333 //ȡ +#define NET_DVR_SWITCH_MATRIX_IO 1334 //л +#define NET_DVR_GET_MATRIX_IO_RELATION 1335 //ȡϵ + +#define NET_DVR_V6PSUBSYSTEMARAM_GET 1501//ȡV6ϵͳ +#define NET_DVR_V6PSUBSYSTEMARAM_SET 1502//V6ϵͳ +#define NET_DVR_GET_ALLWINCFG 1503 //ڲȡ + +#define NET_DVR_BIGSCREENASSOCIATECFG_GET 1511 //ȡ +#define NET_DVR_BIGSCREENASSOCIATECFG_SET 1512 //ô + +//1200 +#define NET_DVR_GETSCREENINFO 1601 //ȡϢ +#define NET_DVR_SETSCREENINFO 1602 //ôϢ +#define NET_DVR_GET_SCREEN_WINCFG 1603//ڲȡ +#define NET_DVR_LAYOUTLIST_GET 1605//ȡб +#define NET_DVR_SET_LAYOUTCFG 1606 // +#define NET_DVR_LAYOUTCTRL 1607//ֿƣ1-open2-close +#define NET_DVR_INPUTLIST_GET 1608 //ȡźԴб +#define NET_DVR_SET_INPUTSTREAMCFG 1609 //źԴ +#define NET_DVR_OUTPUT_SET 1610 // +#define NET_DVR_OUTPUT_GET 1611 //ȡ +#define NET_DVR_SET_OSDCFG 1612 //OSD +#define NET_DVR_GET_OSDCFG 1613 //OSDȡ +#define NET_DVR_BIGSCREEN_GETSERIAL 1614//ȡϢ +#define NET_DVR_GET_PLANLIST 1615//ȡԤб +#define NET_DVR_SET_PLAN 1616//Ԥ +#define NET_DVR_CTRL_PLAN 1617//Ԥ +#define NET_DVR_GET_DEVICE_RUN_STATUS 1618//ȡ豸״̬ +#define NET_DVR_GET_EXTERNAL_MATRIX_CFG 1619//ȡϢ +#define NET_DVR_SET_EXTERNAL_MATRIX_CFG 1620//þϢ +#define NET_DVR_GET_OUTPUT_SCREEN_RELATION 1621//ȡĻİ󶨹ϵ +#define NET_DVR_SET_OUTPUT_SCREEN_RELATION 1622//Ļİ󶨹ϵ +#define NET_DVR_GET_VCS_USER_CFG 1623//ȡûϢ +#define NET_DVR_SET_VCS_USER_CFG 1624//ûϢ +#define NET_DVR_CONTROL_SCREEN 1625//Ļ +#define NET_DVR_GET_EXTERNAL_MATRIX_CFG_V50 1626 //ȡϢ +#define NET_DVR_SET_EXTERNAL_MATRIX_CFG_V50 1627 //þϢ + +#define NET_DVR_GET_DEV_BASEINFO 1650//ȡ豸Ϣ +#define NET_DVR_SET_DEV_BASEINFO 1651//õ豸Ϣ +#define NET_DVR_GET_DEV_NETINFO 1652//ȡ豸Ϣ +#define NET_DVR_SET_DEV_NETINFO 1653//豸Ϣ +#define NET_DVR_GET_SIGNAL_SOURCE_INFO 1654//ȡźԴϢ +#define NET_DVR_SET_SIGNAL_SOURCE_INFO 1655//źԴϢ +#define NET_DVR_ADJUST_PIC_V40 1656//ͼ΢ +#define NET_DVR_RESTORE_V40 1657//ָĬϲ +#define NET_DVR_SET_NET_SIGNAL 1658//źԴ +#define NET_DVR_REBOOT_V40 1659// +#define NET_DVR_CONTROL_PICTURE_V41 1660//ͼƬV41 + +#define NET_DVR_GET_AUTO_REBOOT_CFG 1710//ȡԶ +#define NET_DVR_SET_AUTO_REBOOT_CFG 1711//Զ +#define NET_DVR_GET_TRUNK_USE_STATE 1713//ȡָʹ״̬ +#define NET_DVR_SET_PTZ_CTRL_INFO 1714//PTZƲ +#define NET_DVR_GET_PTZ_CTRL_INFO 1715//ȡPTZƲ +#define NET_DVR_GET_PTZ_STATUS 1716//ȡPTZ״̬ +#define NET_DVR_GET_DISP_ROUTE_LIST 1717//ȡʾ·б + +#define NET_DVR_GET_DEC_RESOURCE_LIST 1720//ȡýԴб +#define NET_DVR_SET_DEC_RESOURCE_LIST 1721//ԤԴ +#define NET_DVR_GET_DEC_YUV 1722//ȡͨYUV +#define NET_DVR_SET_DEC_YUV 1723//ýͨYUV +#define NET_DVR_GET_DEC_RESOUCE 1724//Ƶۺƽ̨Դ +#define NET_DVR_FREE_DEC_RESOURCE 1725//ͷŽԴ + +#define NET_DVR_SET_VIDEOWALLDISPLAYMODE 1730//õǽƴģʽ +#define NET_DVR_GET_VIDEOWALLDISPLAYMODE 1731//ȡǽƴģʽ +#define NET_DVR_GET_VIDEOWALLDISPLAYNO 1732//ȡ豸ʾ +#define NET_DVR_SET_VIDEOWALLDISPLAYPOSITION 1733//ʾλò +#define NET_DVR_GET_VIDEOWALLDISPLAYPOSITION 1734//ȡʾλò +#define NET_DVR_GET_VIDEOWALLWINDOWPOSITION 1735//ȡǽڲ +#define NET_DVR_SET_VIDEOWALLWINDOWPOSITION 1736//õǽڲ +#define NET_DVR_VIDEOWALLWINDOW_CLOSEALL 1737//ǽرд +#define NET_DVR_SET_VIRTUALLED 1738//LED +#define NET_DVR_GET_VIRTUALLED 1739//LEDȡ +#define NET_DVR_GET_IMAGE_CUT_MODE 1740//ȡͼиģʽ +#define NET_DVR_SET_IMAGE_CUT_MODE 1741//ͼиģʽ +#define NET_DVR_GET_USING_SERIALPORT 1742//ȡǰʹô +#define NET_DVR_SET_USING_SERIALPORT 1743//õǰʹô +#define NET_DVR_SCENE_CONTROL 1744// +#define NET_DVR_GET_CURRENT_SCENE 1745//ȡǰ +#define NET_DVR_GET_VW_SCENE_PARAM 1746//ȡǽģʽ +#define NET_DVR_SET_VW_SCENE_PARAM 1747//õǽģʽ +#define NET_DVR_DISPLAY_CHANNO_CONTROL 1748//ǽʾſ +#define NET_DVR_GET_WIN_DEC_INFO 1749//ȡڽϢ +#define NET_DVR_RESET_VIDEOWALLDISPLAYPOSITION 1750 //ǽӿڰ +#define NET_DVR_SET_VW_AUDIO_CFG 1752 //Ƶл +#define NET_DVR_GET_VW_AUDIO_CFG 1753 //ȡƵл +#define NET_DVR_GET_GBT28181_DECCHANINFO_CFG 1754 //ȡGBT28181Э豸ĽͨϢ +#define NET_DVR_SET_GBT28181_DECCHANINFO_CFG 1755 //GBT28181Э豸ĽͨϢ +#define NET_DVR_SET_MAINBOARD_SERIAL 1756 //ذ崮ڲ +#define NET_DVR_GET_MAINBOARD_SERIAL 1757 //ȡذ崮ڲ +#define NET_DVR_GET_SUBBOARD_INFO 1758 //ȡӰϢ +#define NET_DVR_GET_SUBBOARD_EXCEPTION 1759 //ȡ쳣Ӱ쳣Ϣ + +#define NET_DVR_GET_CAMERACHAN_SERIALCFG 1760 //ȡCameraͨ󶨴 +#define NET_DVR_SET_CAMERACHAN_SERIALCFG 1761 //Cameraͨ󶨴 +#define NET_DVR_GET_MATRIX_STATUS 1762 //ȡƵۺƽ̨״̬ +#define NET_SET_MULTIFUNCTION_SERIALCFG 1763 //ö๦ܴ +#define NET_GET_MULTIFUNCTION_SERIALCFG 1764 //ȡ๦ܴ +#define NET_DVR_PTZ_3D_SPEED 1765 // 3άٶȵ̨ + +#define NET_DVR_GET_SIGNAL_JOINT 1766 //ȡźԴ +#define NET_DVR_SET_SIGNAL_JOINT 1767 //źԴ +#define NET_DVR_SIGNAL_CUT 1768 //źԴü +#define NET_DVR_DYNAMIC_DECODE_BATCH 1769 //̬ +#define NET_DVR_DECSWITCH_SET_BATCH 1770 //ýͨ +#define NET_DVR_DECSWITCH_GET_BATCH 1771 //ȡͨ +#define NET_DVR_GET_ALL_SIGNAL_JOINT 1772 //ȡźԴ +#define NET_DVR_GET_PLAYING_PLAN 1773 //ȡִԤ +#define NET_DVR_WALL_RELATION_GET 1774 //ȡ豸ǽǽĹ +#define NET_DVR_WALL_RELATION_SET 1775 //豸ǽǽĹ +#define NET_DVR_SET_INPUTSTREAMCFG_V40 1776 //źԴ +#define NET_DVR_PTZCFG_INPUTSTREAM_GET 1777 //ȡԴ̨ +#define NET_DVR_PTZCFG_INPUTSTREAM_SET 1778 //Դ̨ +#define NET_DVR_SIGNAL_CUTPARAM_GET 1779 //ȡźԴü + +#define NET_DVR_GET_SUBSYSTEM_NETCFG 1780 //ȡϵͳ +#define NET_DVR_SET_SUBSYSTEM_NETCFG 1781 //ϵͳ +#define NET_DVR_DEL_SIGNAL_JOINT 1782 //ɾƴźԴ + +#define NET_DVR_GET_PICTURE_INFO 1783 //ȡͼƬϢ +#define NET_DVR_SET_PICTURE_INFO 1784 //ͼƬϢ +#define NET_DVR_GET_VIDEO_INFO 1785 //ȡƵϢ +#define NET_DVR_SET_VIDEO_INFO 1786 //ƵϢ +#define NET_DVR_SET_PLAYLIST 1787 //òб +#define NET_DVR_GET_PLAYLIST 1788 //ȡб +#define NET_DVR_GET_ALL_PLAYLIST 1789 //ȡвб +#define NET_DVR_PLAYITEM_CONTROL 1790 // +#define NET_DVR_SET_PLAYPLAN_TEMPLATE 1791 //òżƻģ +#define NET_DVR_GET_PLAYPLAN_TEMPLATE 1792 //ȡżƻ +#define NET_DVR_GET_ALL_PLAYPLAN_TEMPLATE 1793 //ȡвżƻ +#define NET_DVR_SET_WINDOW_PLAYPLAN 1794 //ôڲżƻ +#define NET_DVR_GET_WINDOW_PLAYPLAN 1795 //ȡڲżƻ +#define NET_DVR_TOPLAY_ITEM 1796 //ָ +#define NET_DVR_DEVICE_PLAY_CONTROL 1797 //豸ſ +#define NET_DVR_GET_PLAY_INFO 1798 //ȡǰϢ +#define NET_DVR_GET_ALL_PICTURE_INFO 1799 //ȡͼƬϢ +#define NET_DVR_GET_ALL_VIDEO_INFO 1800 //ȡƵϢ +#define NET_DVR_DELETE_VIDEO_FILE 1801 //ɾƵ + + +#define NET_DVR_GET_ALARMHOSTSUBSYSTEM_CFG 2001//ȡϵͳ +#define NET_DVR_SET_ALARMHOSTSUBSYSTEM_CFG 2002//ϵͳ +#define NET_DVR_GETEXTENDALARMININFO 2003//ȡϢ +#define NET_DVR_MODIFYALARMINNO 2004//޸ķϢ +#define NET_DVR_GET_ALARMHOST_WIRELESS_NETWORK_CFG 2005//ȡ +#define NET_DVR_SET_ALARMHOST_WIRELESS_NETWORK_CFG 2006// +#define NET_DVR_GET_ALARMHOST_NETCFG 2007//ȡ +#define NET_DVR_SET_ALARMHOST_NETCFG 2008// +#define NET_DVR_GET_LED_SCREEN_CFG 2009// ȡLEDĻ +#define NET_DVR_SET_LED_SCREEN_CFG 2010// LEDĻ +#define NET_DVR_GET_LED_CONTENT_CFG 2011// ȡLED +#define NET_DVR_SET_LED_CONTENT_CFG 2012// LED +#define NET_DVR_TURNON_LED 2013// LED +#define NET_DVR_TURNOFF_LED 2014// رLED +#define NET_DVR_GET_LED_TIMER_SWITCH 2015// ȡLEDʱز +#define NET_DVR_SET_LED_TIMER_SWITCH 2016// LEDʱز +#define NET_DVR_SET_LED_BRIGHTNESS 2017// ֶLED +#define NET_DVR_GET_LED_TIMER_BRIGHTNESS 2018//÷ʱLED +#define NET_DVR_SET_LED_TIMER_BRIGHTNESS 2019//ȡʱLED +#define NET_DVR_LED_CHECKTIME 2020//LEDУʱ +#define NET_DVR_GET_ALARMHOST_AUDIO_ASSOCIATE_ALARM 2021//ȡƵ汨¼ +#define NET_DVR_SET_ALARMHOST_AUDIO_ASSOCIATE_ALARM 2022//Ƶ汨¼ +#define NET_DVR_GET_LED_STATUS 2023//ȡLED״̬ +#define NET_DVR_CLOSE_SUBSYSTEM_FAULT_ALARM 2027//رϵͳʾ +#define NET_DVR_SET_SUBSYSTEM_BYPASS 2028//ϵͳ· +#define NET_DVR_CANCEL_SUBSYSTEM_BYPASS 2029//ϵͳ·ָ + +#define NET_DVR_GET_ALARMHOST_SUBSYSTEM_CFG_EX 2030//ȡϵͳչ +#define NET_DVR_SET_ALARMHOST_SUBSYSTEM_CFG_EX 2031//ϵͳչ +#define NET_DVR_GET_ALARMHOST_PRINTER_CFG 2032//ȡӡӡʹ +#define NET_DVR_SET_ALARMHOST_PRINTER_CFG 2033//ôӡӡʹ +#define NET_DVR_GET_ALARMHOST_ZONE_LIST_IN_SUBSYSTEM 2034//ȡָϵͳڵз +#define NET_DVR_GET_ALARMHOST_TRIGGER_LIST 2035//ȡд +#define NET_DVR_ARM_ALARMHOST_SUBSYSTEM 2036//Ͷϵͳ +#define NET_DVR_GET_ALARMHOST_EVENT_TRIG_ALARMOUT_CFG 2037// ȡ¼ +#define NET_DVR_SET_ALARMHOST_EVENT_TRIG_ALARMOUT_CFG 2038// ¼ +#define NET_DVR_GET_ALARMHOST_FAULT_CFG 2039// ȡϴ +#define NET_DVR_SET_ALARMHOST_FAULT_CFG 2040// ùϴ +#define NET_DVR_SEARCH_ARMHOST_EXTERNAL_MODULE 2041//Զ +#define NET_DVR_REGISTER_ALARMHOST_EXTERNAL_MODULE 2042//Զע +#define NET_DVR_CLOSE_ALARMHOST_OVERALL_FAULT_ALARM 2043//رȫֹʾ + +#define NET_DVR_GET_SAFETYCABIN_WORK_MODE 2044 //ȡչģʽ +#define NET_DVR_SET_SAFETYCABIN_WORK_MODE 2045 //÷չģʽ +#define NET_DVR_GET_SAFETYCABIN_PERSON_SIGNAL_CFG 2046 //ȡź̽ +#define NET_DVR_SET_SAFETYCABIN_PERSON_SIGNAL_CFG 2047 //÷ź̽ + +#define NET_DVR_GET_ALARMHOST_MODULE_CFG 2048//ȡģϢ +//#define NET_DVR_SET_ALARMHOST_MODULE_CFG 2049//ģϢ(Ԥ) + +#define NET_DVR_GET_ALARMHOST_EXTERNAL_DEVICE_STATE 2050//ȡ485豸״̬ +#define NET_DVR_SET_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE 2051//豸ֵ +#define NET_DVR_GET_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE 2052//ȡ豸ֵ +#define NET_DVR_GET_ALARMHOST_SENSOR_JOINT_CFG 2053// ȡģ +#define NET_DVR_SET_ALARMHOST_SENSOR_JOINT_CFG 2054// ģ +#define NET_DVR_SET_ALARMHOST_RS485_SLOT_CFG 2055// ñ485λ +#define NET_DVR_GET_ALARMHOST_RS485_SLOT_CFG 2056// ȡ485λ + +#define NET_DVR_GET_ALL_VARIABLE_INFO 2057 // ȡбԪϢ +#define NET_DVR_GET_ALARM_POINT_CFG 2058 // ȡϢ +#define NET_DVR_SET_ALARM_POINT_CFG 2059 // õϢ +#define NET_DVR_GET_HISTORY_VALUE 2060 // ȡʷ +#define NET_DVR_GET_ALARMHOST_ALARM_MODE 2061 // ȡϴʽ +#define NET_DVR_SET_ALARMHOST_ALARM_MODE 2062 // ϴʽ +#define NET_DVR_GET_ALARMHOST_SENSOR_VALUE 2063 // ȡģʵʱ + +#define NET_DVR_GET_ALARMHOST_REPORT_CENTER_V40 2064 // ȡϴʽ +#define NET_DVR_SET_ALARMHOST_REPORT_CENTER_V40 2065 // ϴʽ +#define NET_DVR_GET_OUTPUT_SCHEDULE_RULECFG 2068 // ȡʱ +#define NET_DVR_SET_OUTPUT_SCHEDULE_RULECFG 2069 // ʱ +#define NET_DVR_GET_CMS_CFG 2070 +#define NET_DVR_SET_CMS_CFG 2071 + +#define NET_DVR_GET_PASSTHROUGH_CAP 2073 //ȡ豸͸ + +#define NET_DVR_GET_ALARMHOST_MAIN_STATUS_V40 2072 // ȡҪ״̬V40 +#define NET_DVR_GET_ALARMHOST_MAIN_STATUS_V51 2083 // ȡҪ״̬V51 + +/*************************************Ƶ1.3 begin*************************************/ +#define NET_DVR_GET_ALARM_CAPTRUE_CFG 2074 //ȡץͼ +#define NET_DVR_SET_ALARM_CAPTRUE_CFG 2075 //ñץͼ +#define NET_DVR_GET_ONE_OUTPUT_SCH_RULECFG_V40 2078 // ȡʱV40 +#define NET_DVR_SET_ONE_OUTPUT_SCH_RULECFG_V40 2079 // õʱV40 +#define NET_DVR_GET_OUTPUT_SCHEDULE_RULECFG_V40 2080 // ȡʱV40 +#define NET_DVR_SET_OUTPUT_SCHEDULE_RULECFG_V40 2081 // ʱV40 +#define NET_DVR_ALARMHOST_CLOSE_SUBSYSTEM 2082 //ϵͳ +/*************************************Ƶ1.3 end**************************************/ + + +#define NET_DVR_GET_WEEK_PLAN_CFG 2100 //ȡ״̬ܼƻ +#define NET_DVR_SET_WEEK_PLAN_CFG 2101 //״̬ܼƻ +#define NET_DVR_GET_DOOR_STATUS_HOLIDAY_PLAN 2102 //ȡ״̬ռƻ +#define NET_DVR_SET_DOOR_STATUS_HOLIDAY_PLAN 2103 //״̬ռƻ +#define NET_DVR_GET_DOOR_STATUS_HOLIDAY_GROUP 2104 //ȡ״̬ +#define NET_DVR_SET_DOOR_STATUS_HOLIDAY_GROUP 2105 //״̬ +#define NET_DVR_GET_DOOR_STATUS_PLAN_TEMPLATE 2106 //ȡ״̬ƻģ +#define NET_DVR_SET_DOOR_STATUS_PLAN_TEMPLATE 2107 //״̬ƻģ +#define NET_DVR_GET_DOOR_CFG 2108 //ȡŲ +#define NET_DVR_SET_DOOR_CFG 2109 //Ų +#define NET_DVR_GET_DOOR_STATUS_PLAN 2110 //ȡ״̬ƻ +#define NET_DVR_SET_DOOR_STATUS_PLAN 2111 //״̬ƻ +#define NET_DVR_GET_GROUP_CFG 2112 //ȡȺ +#define NET_DVR_SET_GROUP_CFG 2113 //Ⱥ +#define NET_DVR_GET_MULTI_CARD_CFG 2114 //ȡؿ +#define NET_DVR_SET_MULTI_CARD_CFG 2115 //öؿ +#define NET_DVR_GET_CARD_CFG 2116 //ȡ +#define NET_DVR_SET_CARD_CFG 2117 //ÿ +#define NET_DVR_CLEAR_ACS_PARAM 2118 //Ž +#define NET_DVR_GET_SNEAK_CFG 2119 //ȡDZز +#define NET_DVR_SET_SNEAK_CFG 2120 //÷DZز +#define NET_DVR_GET_MULTI_DOOR_INTERLOCK_CFG 2121 //ȡŻ +#define NET_DVR_SET_MULTI_DOOR_INTERLOCK_CFG 2122 //öŻ +#define NET_DVR_GET_ACS_WORK_STATUS 2123 //ȡŽ״̬ +#define NET_DVR_GET_VERIFY_WEEK_PLAN 2124 //ȡ֤ʽܼƻ +#define NET_DVR_SET_VERIFY_WEEK_PLAN 2125 //ö֤ʽܼƻ +#define NET_DVR_GET_CARD_RIGHT_WEEK_PLAN 2126 //ȡȨܼƻ +#define NET_DVR_SET_CARD_RIGHT_WEEK_PLAN 2127 //ÿȨܼƻ +#define NET_DVR_GET_VERIFY_HOLIDAY_PLAN 2128 //ȡ֤ʽռƻ +#define NET_DVR_SET_VERIFY_HOLIDAY_PLAN 2129 //ö֤ʽռƻ +#define NET_DVR_GET_CARD_RIGHT_HOLIDAY_PLAN 2130 //ȡȨ޼ռƻ +#define NET_DVR_SET_CARD_RIGHT_HOLIDAY_PLAN 2131 //ÿȨ޼ռƻ +#define NET_DVR_GET_VERIFY_HOLIDAY_GROUP 2132 //ȡ֤ʽ +#define NET_DVR_SET_VERIFY_HOLIDAY_GROUP 2133 //ö֤ʽ +#define NET_DVR_GET_CARD_RIGHT_HOLIDAY_GROUP 2134 //ȡȨ޼ +#define NET_DVR_SET_CARD_RIGHT_HOLIDAY_GROUP 2135 //ÿȨ޼ +#define NET_DVR_GET_VERIFY_PLAN_TEMPLATE 2136 //ȡ֤ʽƻģ +#define NET_DVR_SET_VERIFY_PLAN_TEMPLATE 2137 //ö֤ʽƻģ +#define NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE 2138 //ȡȨ޼ƻģ +#define NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE 2139 //ÿȨ޼ƻģ +#define NET_DVR_GET_CARD_READER_CFG 2140 //ȡ +#define NET_DVR_SET_CARD_READER_CFG 2141 //ö +#define NET_DVR_GET_CARD_READER_PLAN 2142 //ȡ֤ƻ +#define NET_DVR_SET_CARD_READER_PLAN 2143 //ö֤ƻ +#define NET_DVR_GET_CASE_SENSOR_CFG 2144 //ȡ¼ +#define NET_DVR_SET_CASE_SENSOR_CFG 2145 //¼ +#define NET_DVR_GET_CARD_READER_ANTI_SNEAK_CFG 2146 //ȡDZز +#define NET_DVR_SET_CARD_READER_ANTI_SNEAK_CFG 2147 //öDZز +#define NET_DVR_GET_PHONE_DOOR_RIGHT_CFG 2148 //ȡֻȨ޲ +#define NET_DVR_SET_PHONE_DOOR_RIGHT_CFG 2149 //ȡֻȨ޲ +#define NET_DVR_GET_FINGERPRINT_CFG 2150 //ȡָƲ +#define NET_DVR_SET_FINGERPRINT_CFG 2151 //ָƲ +#define NET_DVR_DEL_FINGERPRINT_CFG 2152 //ɾָƲ +#define NET_DVR_GET_EVENT_CARD_LINKAGE_CFG 2153 //ȡ¼ò +#define NET_DVR_SET_EVENT_CARD_LINKAGE_CFG 2154 //¼ò +#define NET_DVR_GET_ANTI_SNEAK_HOST_CFG 2155 //ȡ鷴DZز +#define NET_DVR_SET_ANTI_SNEAK_HOST_CFG 2156 //鷴DZز +#define NET_DVR_GET_READER_ANTI_SNEAK_HOST_CFG 2157 //ȡDZز +#define NET_DVR_SET_READER_ANTI_SNEAK_HOST_CFG 2158 //DZز +#define NET_DVR_GET_ACS_CFG 2159 //ȡŽ +#define NET_DVR_SET_ACS_CFG 2160 //Ž +#define NET_DVR_GET_CARD_PASSWD_CFG 2161 //ȡ뿪ʹ +#define NET_DVR_SET_CARD_PASSWD_CFG 2162 //ÿ뿪ʹ +#define NET_DVR_GET_CARD_USERINFO_CFG 2163 //ȡŹûϢ +#define NET_DVR_SET_CARD_USERINFO_CFG 2164 //ÿŹûϢ + +#define NET_DVR_GET_ACS_EXTERNAL_DEV_CFG 2165 //ȡŽ +#define NET_DVR_SET_ACS_EXTERNAL_DEV_CFG 2166 //Ž +#define NET_DVR_GET_PERSONNEL_CHANNEL_CFG 2167 //ȡԱͨ +#define NET_DVR_SET_PERSONNEL_CHANNEL_CFG 2168 //Աͨ +#define NET_DVR_SET_PLATFORM_VERIFY_CFG 2169 //·ƽ̨֤ +#define NET_DVR_GET_PERSON_STATISTICS_CFG 2170 //ȡͳƲ +#define NET_DVR_SET_PERSON_STATISTICS_CFG 2171 //ͳƲ +#define NET_DVR_GET_ACS_SCREEN_DISPLAY_CFG 2172 //ȡĻַʾ +#define NET_DVR_SET_ACS_SCREEN_DISPLAY_CFG 2173 //Ļַʾ +#define NET_DVR_GET_GATE_TIME_CFG 2174 //ȡԱͨբʱ +#define NET_DVR_SET_GATE_TIME_CFG 2175 //Աͨբʱ +#define NET_DVR_GET_LOCAL_CONTROLLER_STATUS 2176 //ȡ͵ؿ״̬ +#define NET_DVR_GET_ONLINE_LOCAL_CONTROLLER 2177 //߾͵ؿ +#define NET_DVR_GET_CARD_CFG_V50 2178 //ȡ¿(V50) +#define NET_DVR_SET_CARD_CFG_V50 2179 //¿(V50) +#define NET_DVR_GET_ACS_WORK_STATUS_V50 2180 //ȡŽ״̬(V50) +#define NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V50 2181 //ȡ¼ò(V50) +#define NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V50 2182 //¼ò(V50) +#define NET_DVR_GET_FINGERPRINT_CFG_V50 2183 //ȡָƲV50 +#define NET_DVR_SET_FINGERPRINT_CFG_V50 2184 //ָƲV50 + +#define NET_DVR_GET_SAFETYCABIN_STATE 2197 //ȡ״̬ +#define NET_DVR_GET_RS485_CASCADE_CFG 2198 //ȡRs485豸 +#define NET_DVR_SET_RS485_CASCADE_CFG 2199 //Rs485豸 + +/*************************************Ƶ2.0 begin*************************************/ +#define NET_DVR_GET_REMOTECONTROLLER_PERMISION_CFG 2200 //ȡңȨ޲ +#define NET_DVR_SET_REMOTECONTROLLER_PERMISION_CFG 2201 //ңȨ޲ +#define NET_DVR_GET_KEYBOARD_CFG 2202 //ȡ̲ +#define NET_DVR_SET_KEYBOARD_CFG 2203 //ü̲ +#define NET_DVR_GET_ALARMHOST_WIRELESS_BUSINNESS_INFO 2204 //ҵѯ +#define NET_DVR_GET_ALL_REMOTECONTROLLER_LIST 2205 //ȡң +#define NET_DVR_GET_PREVIEW_DELAY_CFG 2206 //ȡӳԤ +#define NET_DVR_SET_PREVIEW_DELAY_CFG 2207 //ӳԤ +#define NET_DVR_GET_ZONE_CHANNEL_LINKAGE_CFG 2208 //ȡƵͨ +#define NET_DVR_SET_ZONE_CHANNEL_LINKAGE_CFG 2209 //÷Ƶͨ +#define NET_DVR_GET_CENTER_SERVER_CFG 2210 //ȡķ +#define NET_DVR_SET_CENTER_SERVER_CFG 2211 //ñķ +/*************************************Ƶ2.0 end**************************************/ + +/********************************һʽƷV1.0.0 begin********************************/ +#define NET_DVR_GET_EMERGENCE_ALARM_PRODUCT_CAP 2212 //ȡһʽƷ +#define NET_DVR_GET_CALL_WAITTING_CFG_CAP 2213 //ȡеȴ +#define NET_DVR_GET_CALL_WAITTING_CFG 2214 //ȡеȴ +#define NET_DVR_SET_CALL_WAITTING_CFG 2215 //úеȴ +#define NET_DVR_GET_ALARM_LAMP_CFG_CAP 2216 //ȡƲ +#define NET_DVR_GET_ALARM_LAMP_CFG 2217 //ȡƲ +#define NET_DVR_SET_ALARM_LAMP_CFG 2218 //þƲ +#define NET_DVR_GET_VOICE_PROMPTION_CFG_CAP 2219 //ȡʾ +#define NET_DVR_GET_VOICE_PROMPTION_CFG 2220 //ȡʾ +#define NET_DVR_SET_VOICE_PROMPTION_CFG 2221 //ʾ +#define NET_DVR_GET_EMERGENCE_ALARM_RESPONSE_CAP 2222 //ȡ +#define NET_DVR_EMERGENCE_ALARM_RESPONSE_CTRL 2223 // +/********************************һʽƷV1.0.0 end**********************************/ + +//籨 V2.2 +#define NET_DVR_GET_ALARMHOST_NETCFG_V50 2224 //ȡV50 +#define NET_DVR_SET_ALARMHOST_NETCFG_V50 2225 //ñV50 +#define NET_DVR_REGISTER_ALARM_RS485 2226 //RS485ע +/**********************************V3.0****************************************/ + +#define NET_DVR_GET_ALARMIN_PARAM_LIST 2227 //ȡб +//߱1.0.0 +#define NET_DVR_GET_ALARMHOST_OTHER_STATUS_V50 2228 //ȡ״̬v50 +#define NET_DVR_GET_ALARMHOST_OTHER_STATUS_V51 2236 //ȡ״̬V51 +#define NET_DVR_GET_ALARMIN_ASSOCIATED_CHAN_LIST 2229 //ȡƵͨб +#define NET_DVR_GET_ALARMIN_TRIGGER 2230 //ȡ +#define NET_DVR_SET_ALARMIN_TRIGGER 2231 //ñ +#define NET_DVR_GET_EMERGENCY_CALL_HELP_TRIGGER 2232 //ȡ +#define NET_DVR_SET_EMERGENCY_CALL_HELP_TRIGGER 2233 //ñ +#define NET_DVR_GET_CONSULT_TRIGGER 2234 //ȡҵѯ +#define NET_DVR_SET_CONSULT_TRIGGER 2235 //ñҵѯ +#define NET_DVR_GET_ALARMIN_PARAM_LIST_V50 2237 //ȡбV50 + +#define NET_DVR_GET_CARD_RIGHT_WEEK_PLAN_V50 2304 //ȡȨܼƻV50 +#define NET_DVR_SET_CARD_RIGHT_WEEK_PLAN_V50 2305 //ÿȨܼƻV50 + +#define NET_DVR_GET_CARD_RIGHT_HOLIDAY_PLAN_V50 2310 //ȡȨ޼ռƻV50 +#define NET_DVR_SET_CARD_RIGHT_HOLIDAY_PLAN_V50 2311 //ÿȨ޼ռƻV50 + +#define NET_DVR_GET_CARD_RIGHT_HOLIDAY_GROUP_V50 2316 //Ȩ޼V50 +#define NET_DVR_SET_CARD_RIGHT_HOLIDAY_GROUP_V50 2317 //ÿȨ޼V50 + +#define NET_DVR_GET_CARD_RIGHT_PLAN_TEMPLATE_V50 2322 //ȡȨ޼ƻģV50 +#define NET_DVR_SET_CARD_RIGHT_PLAN_TEMPLATE_V50 2323//ÿȨ޼ƻģV50 + +/**********************************ָŽƷV1.0 豸****************************************/ +#define NET_DVR_GET_SCHEDULE_INFO 2500 //ȡŰϢ +#define NET_DVR_GET_ATTENDANCE_SUMMARY_INFO 2501 //ȡڻϢ +#define NET_DVR_GET_ATTENDANCE_RECORD_INFO 2502 //ȡڼ¼Ϣ +#define NET_DVR_GET_ABNORMAL_INFO 2503 //ȡ쳣ͳϢ +/**********************************ָŽƷV1.0****************************************/ + +/*************************************ƵŽһ1.0 begin**************************************/ +#define NET_DVR_CAPTURE_FINGERPRINT_INFO 2504 //ɼָϢ +/*************************************ƵŽһ1.0 end**************************************/ + +/*************************************Ƕʽն1.0 begin**************************************/ +#define NET_DVR_BULK_UPLOAD_BLOCKLIST_PICTURE 2520 //ϴֹͼƬ +#define NET_DVR_BULK_UPLOAD_ID_BLOCKLIST 2521 //ϴֹ֤ +#define NET_DVR_GET_FAILED_FACE_INFO 2522 //ȡ豸ģʧܵ¼ +#define NET_DVR_GET_FACE_AND_TEMPLATE 2523 //ȡģ +#define NET_DVR_SET_FACE_AND_TEMPLATE 2524 //ģ +/*************************************Ƕʽն1.0 end**************************************/ + +/*************************************ʶŽһ1.0 begin**************************************/ +#define NET_DVR_GET_CARD_READER_CFG_V50 2505 //ȡ(V50) +#define NET_DVR_SET_CARD_READER_CFG_V50 2506 //ö(V50) +#define NET_DVR_GET_FACE_PARAM_CFG 2507 //ȡ +#define NET_DVR_SET_FACE_PARAM_CFG 2508 // +#define NET_DVR_DEL_FACE_PARAM_CFG 2509 //ɾ +#define NET_DVR_CAPTURE_FACE_INFO 2510 //ɼϢ +/*************************************ʶŽһ1.0 end**************************************/ +#define NET_DVR_GET_REGISTER_INFO 2511 //ǼϢȡ + +#define NET_DVR_GET_SMSRELATIVEPARA_V50 2512 //ȡز +#define NET_DVR_SET_SMSRELATIVEPARA_V50 2513 //öز +#define NET_DVR_GET_ACS_EVENT 2514 //豸¼ȡ +#define NET_DVR_GET_MULTI_CARD_CFG_V50 2515 //ȡؿV50 +#define NET_DVR_SET_MULTI_CARD_CFG_V50 2516 //öؿV50 +#define NET_DVR_DEL_FINGERPRINT_CFG_V50 2517 //ɾָƲV50 +#define NET_DVR_GET_EVENT_CARD_LINKAGE_CFG_V51 2518 //ȡ¼ò(V51) +#define NET_DVR_SET_EVENT_CARD_LINKAGE_CFG_V51 2519 //¼ò(V51) + +#define NET_DVR_SET_EXAM_INFO 2530 //Ϣ· +#define NET_DVR_SET_EXAMINEE_INFO 2531 //Ϣ· +#define NET_DVR_SEARCH_EXAM_COMPARE_RESULT 2532 //ԱȶԽѯ +#define NET_DVR_BULK_CHECK_FACE_PICTURE 2533 //УͼƬ +#define NET_DVR_JSON_CONFIG 2550 //JSON͸ +#define NET_DVR_FACE_DATA_RECORD 2551 //ݵ +#define NET_DVR_FACE_DATA_SEARCH 2552 //ѯе +#define NET_DVR_FACE_DATA_MODIFY 2553 //޸е +#define NET_DVR_CAPTURE_DATA_SEARCH 2554 //ѯ߲ɼݼ +#define NET_DVR_SET_FORM_DATA 2555 //ñ +#define NET_DVR_GET_FORM_DATA 2556 //ӻȡ + +#define NET_DVR_GET_CARD 2560 +#define NET_DVR_SET_CARD 2561 +#define NET_DVR_DEL_CARD 2562 +#define NET_DVR_GET_FINGERPRINT 2563 +#define NET_DVR_SET_FINGERPRINT 2564 +#define NET_DVR_DEL_FINGERPRINT 2565 +#define NET_DVR_GET_FACE 2566 +#define NET_DVR_SET_FACE 2567 + +#define NET_DVR_GET_ALL_ALARM_RS485CFG 2705 // ȡ485 +#define NET_DVR_GET_ALL_ALARMHOST_RS485_SLOT_CFG 2706 // ȡб485λ +#define NET_DVR_GET_DEVICE_SELF_CHECK_STATE 2707 //ȡ豸Լ칦 +#define NET_DVR_GET_ALL_ALARM_POINT_CFG 2708 // ȡеŲ +#define NET_DVR_GET_ALL_ALARM_SENSOR_CFG 2709 // ȡģ +#define NET_DVR_GET_ALL_ALARM_SENSOR_JOINT 2710 //ȡģ +#define NET_DVR_GET_AIR_CONDITION_PARAM 2711 //ȡյ +#define NET_DVR_GET_OUT_SCALE_CFG 2712 //ȡ +#define NET_DVR_SET_OUT_SCALE_CFG 2713 // +#define NET_DVR_GET_ALARM_CHAN_ABLITITY 2714 //ȡͨ +/**********************************V3.0****************************************/ + +//D2000 V1.0 +#define NET_DVR_GET_ALARMCENTER_NETCFG 2715 //ȡ +#define NET_DVR_SET_ALARMCENTER_NETCFG 2716 //ȡ + + +#define NET_ITC_GET_TRIGGERCFG 3003 //ȡ +#define NET_ITC_SET_TRIGGERCFG 3004 //ô +#define NET_ITC_GET_IOOUT_PARAM_CFG 3005 //ȡIO3.1֮汾 +#define NET_ITC_SET_IOOUT_PARAM_CFG 3006 //IO3.1֮汾 + +#define NET_DVR_GET_CAMERA_SETUPCFG 3007 //ȡ +#define NET_DVR_SET_CAMERA_SETUPCFG 3008 // + +#define NET_ITC_GET_TRIGGER_DEFAULTCFG 3013 //ȡģʽƼ +#define NET_DVR_GET_STATUS_DETECTCFG 3015 //ȡ״̬ʹܲ +#define NET_DVR_SET_STATUS_DETECTCFG 3016 //״̬ʹܲ +#define NET_ITC_GET_VIDEO_TRIGGERCFG 3017 //ȡƵ羯 +#define NET_ITC_SET_VIDEO_TRIGGERCFG 3018 //Ƶ羯 +#define NET_DVR_GET_TPS_ALARMCFG 3019 //ȡͨͳƱ +#define NET_DVR_SET_TPS_ALARMCFG 3020 //ýͨͳƱ + + +#define NET_DVR_GET_REDAREACFG 3100 //ȡ̵ +#define NET_DVR_SET_REDAREACFG 3101 //ú̵ +#define NET_DVR_GET_TEST_SPOT 3102 //ȡSPOTڲܲ͵ǰڼ +#define NET_DVR_SET_TEST_SPOT 3103 //SPOTڲܲ͵ǰڼ +#define NET_DVR_GET_CABINETCFG 3104 //ûȡ +#define NET_DVR_SET_CABINETCFG 3105 // +#define NET_DVR_VEHICLE_CHECK_START 3106 //ֹݻش +#define NET_DVR_SET_CAPTUREPIC_CFG 3107 //ץͼ +#define NET_DVR_GET_CAPTUREPIC_CFG 3108 //ץͼûȡ +#define NET_DVR_SET_MOBILEPLATE_RECOG_CFG 3109 //سʶ +#define NET_DVR_GET_MOBILEPLATE_RECOG_CFG 3110 //سʶûȡ +#define NET_DVR_SET_MOBILE_RADAR_CFG 3111 //״ +#define NET_DVR_GET_MOBILE_RADAR_CFG 3112 //״ûȡ +#define NET_DVR_SET_MOBILE_LOCALPLATECHK_CFG 3113 //ؽֹضԱ +#define NET_DVR_GET_MOBILE_LOCALPLATECHK_CFG 3114 //ؽֹضԱûȡ + +#define NET_ITC_GET_ICRCFG 3115 //ȡICRл +#define NET_ITC_SET_ICRCFG 3116 //ICRл +#define NET_ITC_GET_RS485_ACCESSINFO 3117 //ȡRs485豸Ϣ +#define NET_ITC_SET_RS485_ACCESSINFO 3118 //Rs485豸Ϣ +#define NET_ITC_GET_EXCEPTIONCFG 3119 //ȡ쳣 +#define NET_ITC_SET_EXCEPTIONCFG 3120 //쳣 +#define NET_ITC_GET_FTPCFG 3121 //ȡITC FTPò +#define NET_ITC_SET_FTPCFG 3122 //ITC FTPò + +#define NET_DVR_VEHICLE_CONTROL_LIST_START 3123 //óֹϢ +#define NET_DVR_GET_ALL_VEHICLE_CONTROL_LIST 3124 //ȡгֹϢ +#define NET_DVR_VEHICLE_DELINFO_CTRL 3125 //ɾ豸ڽֹݿϢ +#define NET_DVR_GET_ENTRANCE_PARAMCFG 3126 //ȡڿƲ +#define NET_DVR_SET_ENTRANCE_PARAMCFG 3127 //óڿƲ +#define NET_DVR_BARRIERGATE_CTRL 3128 //Զ̿Ƶբ +#define NET_DVR_GATELAMP_CTRL 3129 //ƹ +#define NET_DVR_GET_CURTRIGGERMODE 3130 //ȡ豸ǰģʽ +#define NET_DVR_GET_GPSDATACFG 3131 //ȡGPS +#define NET_DVR_SET_GPSDATACFG 3132 //GPS +#define NET_DVR_VEHICLELIST_CTRL_START 3133 //óֹϢ + +#define NET_DVR_GET_GUARDCFG 3134 //ȡʶƻ +#define NET_DVR_SET_GUARDCFG 3135 //óʶƻ +#define NET_DVR_GET_SNAPINFO_CFG 3136 //ȡץͼƬ +#define NET_DVR_SET_SNAPINFO_CFG 3137 //ץͼƬ +#define NET_DVR_GET_SNAPINFO_CFG_V40 3138 //ȡץͼƬչ +#define NET_DVR_SET_SNAPINFO_CFG_V40 3139 //ץͼƬչ +#define NET_DVR_SET_CURTRIGGERMODE 3140 //豸ǰģʽ(IPC/D֧) +#define NET_DVR_GET_TRAFFIC_DATA 3141 //ӻȡͨ +#define NET_DVR_GET_TRAFFIC_FLOW 3142 //ӻȡͨ +#define NET_DVR_PARKING_VEHICLE_SEND 3143 //ͣϢ· +#define NET_DVR_PARKING_CARD_SEND 3144 //ͣ· +#define NET_DVR_PARKING_CARD_CTRL 3145 //ͣͣƽӿ + +#define NET_DVR_GET_ALARMCTRL_CAPABILITIES 3146 //ȡ +#define NET_DVR_SET_ALARMCTRL_CFG 3147 //ñ +#define NET_DVR_GET_ALARMCTRL_CFG 3148 //ȡ + +#define NET_DVR_GET_AUDIO_INPUT 3201 //ȡƵ +#define NET_DVR_SET_AUDIO_INPUT 3202 //Ƶ +#define NET_DVR_GET_CAMERA_DEHAZE_CFG 3203 //ȡ͸ +#define NET_DVR_SET_CAMERA_DEHAZE_CFG 3204 //͸ +#define NET_DVR_REMOTECONTROL_ALARM 3205 //Զ̿ң +#define NET_DVR_REMOTECONTROL_DISALARM 3206 //Զ̿ң +#define NET_DVR_REMOTECONTROL_STUDY 3207 //Զ̿ңѧϰ +#define NET_DVR_WIRELESS_ALARM_STUDY 3208 //Զ̿߱ѧϰ +#define NET_IPC_GET_AUX_ALARMCFG 3209 //ȡ +#define NET_IPC_SET_AUX_ALARMCFG 3210 //ø +#define NET_DVR_GET_PREVIEW_DISPLAYCFG 3211 //ȡԤʾ +#define NET_DVR_SET_PREVIEW_DISPLAYCFG 3212 //Ԥʾ +#define NET_DVR_REMOTECONTROL_PTZ 3213 //Զ̿PTZ +#define NET_DVR_REMOTECONTROL_PRESETPOINT 3214 //Զ̿Ԥõ +#define NET_DVR_REMOTECONTROL_CRUISE 3215 //Զ̿Ѳ + +#define NET_DVR_GET_MULTI_STREAM_COMPRESSIONCFG 3216 //Զ̻ȡѹ +#define NET_DVR_SET_MULTI_STREAM_COMPRESSIONCFG 3217 //Զöѹ + +#define NET_DVR_GET_WPSCFG 3218 //ȡWPS +#define NET_DVR_SET_WPSCFG 3219 //WPS +#define NET_DVR_WPS_CONNECT 3220 //ԶWPS +#define NET_DVR_GET_DEVICE_PIN 3221 //ȡ豸PIN +#define NET_DVR_UPDATE_PIN 3223 //豸PIN +#define NET_DVR_GET_PRESETCFG 3224 //ȡԤõ +#define NET_DVR_GET_PTZCRUISECFG 3225 //ȡѲ· +#define NET_DVR_GET_PRESET_NUM 3226 //ȡԤõ +#define NET_DVR_GET_PTZCRUISE_NUM 3227 //ȡѲ· + +#define NET_DVR_GET_MOTION_TRACK_CFG 3228 //ȡٲ +#define NET_DVR_SET_MOTION_TRACK_CFG 3229 //øٲ +#define NET_DVR_CLEAR_IPC_PARAM 3230 //ǰ˲ +#define NET_DVR_GET_IPADDR_FILTERCFG 3232 //ȡIPַ˲ +#define NET_DVR_SET_IPADDR_FILTERCFG 3233 //IPַ˲ + +#define NET_DVR_GET_LOGO_OVERLAYCFG 3234 //ȡLOGOͼƬӲ +#define NET_DVR_SET_LOGO_OVERLAYCFG 3235 //LOGOͼƬӲ + +#define NET_DVR_GET_IPV6_LIST 3236 //ȡȫIPV6ַϢ +#define NET_DVR_GET_AUDIOOUT_VOLUME 3237 //ȡƵС +#define NET_DVR_SET_AUDIOOUT_VOLUME 3238 //ƵС +#define NET_DVR_GET_FUZZY_UPGRADE 3239 //ȡģƥϢ + +#define NET_DVR_GET_BV_CORRECT_PARAM 3240 //ȡУ +#define NET_DVR_SET_BV_CORRECT_PARAM 3241 //У +#define NET_DVR_GET_OUTPUT_VIDEO_TYPE 3242 //ȡƵ +#define NET_DVR_SET_OUTPUT_VIDEO_TYPE 3243 //Ƶ + +#define NET_DVR_FISHEYE_CFG 3244 //۳ +#define NET_DVR_GET_PTZ_POINT 3245 //ȡPTZ +#define NET_DVR_SET_PTZ_POINT 3246 //PTZ +#define NET_DVR_REMOTECONTROL_DEV_PARAM 3247 //豸¼ͻ˲ +#define NET_DVR_GET_FISHEYE_STREAM_STATUS 3248 //ȡ״̬ + +#define NET_DVR_GET_GBT28181_ACCESS_CFG 3249 //ȡGBT28181Э +#define NET_DVR_SET_GBT28181_ACCESS_CFG 3250 //GBT28181Э +#define NET_DVR_GET_GBT28181_CHANINFO_CFG 3251 //ȡGBT28181Э豸ͨϢ +#define NET_DVR_SET_GBT28181_CHANINFO_CFG 3252 //GBT28181Э豸ͨϢ +#define NET_DVR_GET_GBT28181_ALARMINCFG 3253 //ȡGBT28181Э豸ıϢ +#define NET_DVR_SET_GBT28181_ALARMINCFG 3254 //GBT28181Э豸ıϢ +#define NET_DVR_GET_ISP_CAMERAPARAMCFG 3255 //ȡISPǰ˲ +#define NET_DVR_SET_ISP_CAMERAPARAMCFG 3256 //ISPǰ˲ +#define NET_DVR_GET_DEVSERVER_CFG 3257 //ȡģ +#define NET_DVR_SET_DEVSERVER_CFG 3258 //ģ + +//2013-11-25 +#define NET_DVR_GET_WIPERINFO_CFG 3259 //ˢûȡ +#define NET_DVR_SET_WIPERINFO_CFG 3260 //ˢ +#define NET_DVR_GET_TRACK_DEV_PARAM 3261 //ȡ豸 +#define NET_DVR_SET_TRACK_DEV_PARAM 3262 //ø豸 +#define NET_DVR_GET_PTZ_TRACK_PARAM 3263 //ȡPTZٲ +#define NET_DVR_SET_PTZ_TRACK_PARAM 3264 //PTZٲ +#define NET_DVR_GET_CENTER_POINT_CFG 3265 //ȡĵ +#define NET_DVR_SET_CENTER_POINT_CFG 3266 //ĵ +#define NET_DVR_GET_CENTER_POINT_CFG_CAPABILITIES 3267 //ȡĵ +#define NET_DVR_GET_FISHEYE_CAPABILITIES 3268 //ȡ + +#define NET_DVR_GET_BASICPARAMCFG 3270 //ȡPTZûϢ +#define NET_DVR_SET_BASICPARAMCFG 3271 //PTZûϢ +#define NET_DVR_GET_PTZOSDCFG 3272 //ȡPTZ OSDòϢ +#define NET_DVR_SET_PTZOSDCFG 3273 //PTZ OSDòϢ +#define NET_DVR_GET_POWEROFFMEMCFG 3274 //ȡģʽϢ +#define NET_DVR_SET_POWEROFFMEMCFG 3275 //õģʽϢ +#define NET_DVR_GET_LIMITCFG 3276 //ȡλϢ +#define NET_DVR_SET_LIMITCFG 3277 //λϢ +#define NET_DVR_PTZLIMIT_CTRL 3278 //λ + +#define NET_DVR_PTZ_CLEARCTRL 3279 //Ϣƽӿ +#define NET_DVR_GET_PRIORITIZECFG 3281 //ȡ̨Ϣ +#define NET_DVR_SET_PRIORITIZECFG 3282 //̨Ϣ +#define NET_DVR_PTZ_INITIALPOSITIONCTRL 3283 //㷽λǿ +#define NET_DVR_GET_PRIVACY_MASKSCFG 3285 //ȡ˽ڱβ +#define NET_DVR_SET_PRIVACY_MASKSCFG 3286 //˽ڱβ +#define NET_DVR_GET_PTZLOCKCFG 3287 //ȡ̨Ϣ +#define NET_DVR_SET_PTZLOCKCFG 3288 //̨Ϣ +#define NET_DVR_PTZ_ZOOMRATIOCTRL 3289 //øٱ +#define NET_DVR_GET_PTZLOCKINFO 3290 //ȡ̨ʣ +#define NET_DVR_GET_PRIVACY_MASKS_ENABLECFG 3291 //ȡȫʹ +#define NET_DVR_SET_PRIVACY_MASKS_ENABLECFG 3292 //ȫʹ +#define NET_DVR_GET_SMARTTRACKCFG 3293 //ȡ˶Ϣ +#define NET_DVR_SET_SMARTTRACKCFG 3294 //˶Ϣ +#define NET_DVR_GET_EPTZ_CFG 3295 //ȡEPTZ +#define NET_DVR_SET_EPTZ_CFG 3296 //EPTZ +#define NET_DVR_GET_EPTZ_CFG_CAPABILITIES 3297 //ȡEPTZ + +#define NET_DVR_GET_LOW_LIGHTCFG 3303//ȡնϢ +#define NET_DVR_SET_LOW_LIGHTCFG 3304//ÿնϢ +#define NET_DVR_GET_FOCUSMODECFG 3305//ȡ۽ģʽϢ +#define NET_DVR_SET_FOCUSMODECFG 3306//ÿ۽ģʽϢ +#define NET_DVR_GET_INFRARECFG 3307//ȡϢ +#define NET_DVR_SET_INFRARECFG 3308//ÿϢ +#define NET_DVR_GET_AEMODECFG 3309//ȡϢ +#define NET_DVR_SET_AEMODECFG 3310//ÿϢ +#define NET_DVR_CONTROL_RESTORE_SUPPORT 3311 //ָǰĬϲ(еǰ˲صĶָ) +#define NET_DVR_CONTROL_RESTART_SUPPORT 3312 //о +#define NET_DVR_CONTROL_PTZ_PATTERN 3313//̨ɨ +#define NET_DVR_GET_PTZ_PARKACTION_CFG 3314//ȡ̨ +#define NET_DVR_SET_PTZ_PARKACTION_CFG 3315//̨ +#define NET_DVR_CONTROL_PTZ_MANUALTRACE 3316//ֶٶλ +#define NET_DVR_GET_ROI_DETECT_NUM 3349 //ȡROIĿ +#define NET_DVR_GET_ROI_DETECT 3350 //ȡROI +#define NET_DVR_SET_ROI_DETECT 3351 //ROI +#define NET_DVR_GET_FACE_DETECT 3352 //ȡ +#define NET_DVR_SET_FACE_DETECT 3353 // +#define NET_DVR_GET_CORRIDOR_MODE 3354 //ȡģʽ +#define NET_DVR_SET_CORRIDOR_MODE 3355 //ģʽ +#define NET_DVR_GET_SCENECHANGE_DETECTIONCFG 3356 //ȡ +#define NET_DVR_SET_SCENECHANGE_DETECTIONCFG 3357 //ó +#define NET_DVR_GET_TRAVERSE_PLANE_DETECTION 3360 +#define NET_DVR_SET_TRAVERSE_PLANE_DETECTION 3361 +#define NET_DVR_GET_FIELD_DETECTION 3362 //ȡ +#define NET_DVR_SET_FIELD_DETECTION 3363 // +#define NET_DVR_GET_DEFOCUSPARAM 3364 //ȡ齹 +#define NET_DVR_SET_DEFOCUSPARAM 3365 //齹 +#define NET_DVR_GET_AUDIOEXCEPTIONPARAM 3366 //ȡƵ쳣 +#define NET_DVR_SET_AUDIOEXCEPTIONPARAM 3367 //Ƶ쳣 +#define NET_DVR_GET_CCDPARAMCFG_EX 3368 //ȡCCD +#define NET_DVR_SET_CCDPARAMCFG_EX 3369 //CCD +#define NET_DVR_START_GET_INPUTVOLUME 3370//ʼȡ +#define NET_DVR_SET_SCH_TASK 3380 //ʱ +#define NET_DVR_GET_SCH_TASK 3381 //ȡʱ +#define NET_DVR_SET_PRESET_NAME 3382 //Ԥõ +#define NET_DVR_GET_PRESET_NAME 3383 //ȡԤõ +#define NET_DVR_SET_AUDIO_NAME 3384 // +#define NET_DVR_GET_AUDIO_NAME 3385 //ȡ +#define NET_DVR_RESUME_INITRACKPOS 3386 //ָٳʼλ +#define NET_DVR_NTP_SERVER_TEST 3387 //NTP +#define NET_DVR_NAS_SERVER_TEST 3388 //NAS +#define NET_DVR_EMAIL_SERVER_TEST 3389 //Email +#define NET_DVR_FTP_SERVER_TEST 3390 //FTP +#define NET_DVR_IP_TEST 3391 //IP +#define NET_DVR_GET_NET_DISKCFG_V40 3392 //Ӳ̽ȡv40 +#define NET_DVR_SET_NET_DISKCFG_V40 3393 //Ӳ̽v40 +#define NET_DVR_GET_IOOUT_CFG 3394//ȡƲ +#define NET_DVR_SET_IOOUT_CFG 3395//òƲ +#define NET_DVR_GET_SIGNAL_SYNC 3396//ȡźŵͬò +#define NET_DVR_SET_SIGNAL_SYNC 3397//źŵͬò + +#define NET_DVR_GET_EZVIZ_ACCESS_CFG 3398//ȡEZVIZ +#define NET_DVR_SET_EZVIZ_ACCESS_CFG 3399//EZVIZ +#define NET_DVR_GET_SCHEDULE_AUTO_TRACK_CFG 3400//ȡʱܸٲ +#define NET_DVR_SET_SCHEDULE_AUTO_TRACK_CFG 3401//öʱܸٲ +#define NET_DVR_MAKE_I_FRAME 3402//ǿI֡ +#define NET_DVR_GET_ALARM_RELATE 3403//ȡͨܲ +#define NET_DVR_SET_ALARM_RELATE 3404//ñͨܲ +#define NET_DVR_GET_PDC_RULECFG_V42 3405 //ͳƹ(չ) +#define NET_DVR_SET_PDC_RULECFG_V42 3406 //ȡͳƹ(չ) +#define NET_DVR_GET_HEATMAP_CFG 3407 //ȶͼ +#define NET_DVR_SET_HEATMAP_CFG 3408 //ȡȶͼ +#define NET_DVR_REMOTECONTROL_LINEARSCAN 3409 //ұ߽ 2014-03-15 +#define NET_DVR_DPC_CTRL 3410//У +#define NET_DVR_FFC_MANUAL_CTRL 3411//ǾУ(FFC)ֶģʽ +#define NET_DVR_FFC_BACKCOMP_CTRL 3412//ǾУ(FFC) +#define NET_DVR_GET_FOCUSING_POSITION_STATE 3413//ȡ۽λ״̬ +#define NET_DVR_GET_PRIVATE_PROTOCOL_CFG 3414 //ȡ ˽йؼϢϴýӿ +#define NET_DVR_SET_PRIVATE_PROTOCOL_CFG 3415 // ˽йؼϢϴýӿ +#define NET_DVR_COMPLETE_RESTORE_CTRL 3420 //ȫֵָ + +#define NET_DVR_CLOUDSTORAGE_SERVER_TEST 3421 //ƴ洢 +#define NET_DVR_PHONE_NUM_TEST 3422 //绰 +#define NET_DVR_GET_REMOTECONTROL_STATUS 3423 //ȡ߲״̬ +#define NET_DVR_GET_MONITOR_LOCATION_INFO 3424 //ȡϢ +#define NET_DVR_SET_MONITOR_LOCATION_INFO 3425 //üϢ + + +#define NET_DVR_GET_SMART_CAPABILITIES 3500 //ȡSmart +#define NET_DVR_GET_EVENT_TRIGGERS_CAPABILITIES 3501 //ȡ¼ +#define NET_DVR_GET_REGION_ENTRANCE_CAPABILITIES 3502 //ȡ +#define NET_DVR_GET_REGION_ENTR_DETECTION 3503 //ȡ +#define NET_DVR_SET_REGION_ENTR_DETECTION 3504 //ý +#define NET_DVR_GET_REGION_ENTR_REGION 3505 //ȡĵ +#define NET_DVR_SET_REGION_ENTR_REGION 3506 //ýĵ +#define NET_DVR_GET_REGION_ENTR_TRIGGER 3507 //ȡ +#define NET_DVR_SET_REGION_ENTR_TRIGGER 3508 //ý +#define NET_DVR_GET_REGION_ENTR_SCHEDULE 3509 //ȡ򲼷ʱ +#define NET_DVR_SET_REGION_ENTR_SCHEDULE 3510 //ý򲼷ʱ +#define NET_DVR_GET_REGION_EXITINT_CAPABILITIES 3511 //ȡ뿪 +#define NET_DVR_GET_REGION_EXITING_DETECTION 3512 //ȡ뿪 +#define NET_DVR_SET_REGION_EXITING_DETECTION 3513 //뿪 +#define NET_DVR_GET_REGION_EXITING_REGION 3514 //ȡ뿪ĵ +#define NET_DVR_SET_REGION_EXITING_REGION 3515 //뿪ĵ +#define NET_DVR_GET_REGION_EXIT_TRIGGER 3516 //ȡ뿪 +#define NET_DVR_SET_REGION_EXIT_TRIGGER 3517 //뿪 +#define NET_DVR_GET_REGION_EXIT_SCHEDULE 3518 //ȡ뿪򲼷ʱ +#define NET_DVR_SET_REGION_EXIT_SCHEDULE 3519 //뿪򲼷ʱ +#define NET_DVR_GET_LOITERING_CAPABILITIES 3520 //ȡǻ +#define NET_DVR_GET_LOITERING_DETECTION 3521 //ȡǻ +#define NET_DVR_SET_LOITERING_DETECTION 3522 //ǻ +#define NET_DVR_GET_LOITERING_REGION 3523 //ȡǻĵ +#define NET_DVR_SET_LOITERING_REGION 3524 //ǻĵ +#define NET_DVR_GET_LOITERING_TRIGGER 3525 //ȡǻ +#define NET_DVR_SET_LOITERING_TRIGGER 3526 //ǻ +#define NET_DVR_GET_LOITERING_SCHEDULE 3527 //ȡǻʱ +#define NET_DVR_SET_LOITERING_SCHEDULE 3528 //ǻʱ +#define NET_DVR_GET_GROUPDETECTION_CAPABILITIES 3529 //ȡԱۼ +#define NET_DVR_GET_GROUP_DETECTION 3530 //ȡԱۼ +#define NET_DVR_SET_GROUP_DETECTION 3531 //Աۼ +#define NET_DVR_GET_GROUPDETECTION_REGION 3532 //ȡԱۼĵ +#define NET_DVR_SET_GROUPDETECTION_REGION 3533 //Աۼĵ +#define NET_DVR_GET_GROUPDETECTION_TRIGGER 3534 //ȡԱۼ +#define NET_DVR_SET_GROUPDETECTION_TRIGGER 3535 //Աۼ +#define NET_DVR_GET_GROUPDETECTION_SCHEDULE 3536 //ȡԱۼʱ +#define NET_DVR_SET_GROUPDETECTION_SCHEDULE 3537 //Աۼʱ +#define NET_DVR_GET_RAPIDMOVE_CAPABILITIES 3538 //ȡ˶ +#define NET_DVR_GET_RAPIDMOVE_DETECTION 3539 //ȡ˶ +#define NET_DVR_SET_RAPIDMOVE_DETECTION 3540 //ÿ˶ +#define NET_DVR_GET_RAPIDMOVE_REGION 3541 //ȡ˶ĵ +#define NET_DVR_SET_RAPIDMOVE_REGION 3542 //ÿ˶ĵ +#define NET_DVR_GET_RAPIDMOVE_TRIGGER 3543 //ȡ˶ +#define NET_DVR_SET_RAPIDMOVE_TRIGGER 3544 //ÿ˶ +#define NET_DVR_GET_RAPIDMOVE_SCHEDULE 3545 //ȡ˶IJʱ +#define NET_DVR_SET_RAPIDMOVE_SCHEDULE 3546 //ÿ˶IJʱ +#define NET_DVR_GET_PATKING_CAPABILITIES 3547 //ȡͣ +#define NET_DVR_GET_PARKING_DETECTION 3548 //ȡͣ +#define NET_DVR_SET_PARKING_DETECTION 3549 //ͣ +#define NET_DVR_GET_PARKING_REGION 3550 //ȡͣĵ +#define NET_DVR_SET_PARKING_REGION 3551 //ͣĵ +#define NET_DVR_GET_PARKING_TRIGGER 3552 //ȡͣ +#define NET_DVR_SET_PARKING_TRIGGER 3553 //ͣ +#define NET_DVR_GET_PARKING_SCHEDULE 3554 //ȡͣIJʱ +#define NET_DVR_SET_PARKING_SCHEDULE 3555 //ͣIJʱ +#define NET_DVR_GET_UNATTENDED_BAGGAGE_CAPABILITIES 3556 //ȡƷ +#define NET_DVR_GET_UNATTENDED_BAGGAGE_DETECTION 3557 //ȡƷ +#define NET_DVR_SET_UNATTENDED_BAGGAGE_DETECTION 3558 //Ʒ +#define NET_DVR_GET_UNATTENDED_BAGGAGE_REGION 3559 //ȡƷĵ +#define NET_DVR_SET_UNATTENDED_BAGGAGE_REGION 3560 //Ʒĵ +#define NET_DVR_GET_UNATTENDED_BAGGAGE_TRIGGER 3561 //ȡƷ +#define NET_DVR_SET_UNATTENDED_BAGGAGE_TRIGGER 3562 //Ʒ +#define NET_DVR_GET_UNATTENDED_BAGGAGE_SCHEDULE 3563 //ȡƷIJʱ +#define NET_DVR_SET_UNATTENDED_BAGGAGE_SCHEDULE 3564 //ƷIJʱ +#define NET_DVR_GET_ATTENDEDBAGGAGE_CAPABILITIES 3565 //ȡƷȡ +#define NET_DVR_GET_ATTENDEDBAGGAGE_DETECTION 3566 //ȡƷȡ +#define NET_DVR_SET_ATTENDEDBAGGAGE_DETECTION 3567 //Ʒȡ +#define NET_DVR_GET_ATTENDEDBAGGAGE_REGION 3568 //ȡƷȡĵ +#define NET_DVR_SET_ATTENDEDBAGGAGE_REGION 3569 //Ʒȡĵ +#define NET_DVR_GET_ATTENDEDBAGGAGE_TRIGGER 3570 //ȡƷȡ +#define NET_DVR_SET_ATTENDEDBAGGAGE_TRIGGER 3571 //Ʒȡ +#define NET_DVR_GET_ATTENDEDBAGGAGE_SCHEDULE 3572 //ȡƷIJʱ +#define NET_DVR_SET_ATTENDEDBAGGAGE_SCHEDULE 3573 //ƷȡIJʱ +#define NET_DVR_GET_REGIONCLIP_CAPABILITIES 3574 //ȡü +#define NET_DVR_GET_REGION_CLIP 3575 //ȡü +#define NET_DVR_SET_REGION_CLIP 3576 //ü +#define NET_DVR_GET_NETWORK_CAPABILITIES 3577 //ȡ +#define NET_DVR_GET_WIRELESS_DIAL 3578 //ȡ߲ +#define NET_DVR_SET_WIRELESS_DIAL 3579 //߲ +#define NET_DVR_GET_WIRELESSDIAL_CAPABILITIES 3580 //ȡ߲Ų +#define NET_DVR_GET_WIRELESSDIAL_SCHEDULE 3581 //ȡżƻ +#define NET_DVR_SET_WIRELESSDIAL_SCHEDULE 3582 //òżƻ +#define NET_DVR_GET_WIRELESSDIAL_STATUS 3583 //ȡ״̬ +#define NET_DVR_GET_REGION_ENTRANCE_SCHEDULE_CAPABILITIES 3584 //ȡⲼʱ +#define NET_DVR_GET_REGION_EXITING_SCHEDULE_CAPABILITIES 3585 //ȡ뿪Ⲽʱ +#define NET_DVR_GET_LOITERING_SCHEDULE_CAPABILITIES 3586 //ȡǻⲼʱ +#define NET_DVR_GET_GROUP_SCHEDULE_CAPABILITIES 3587 //ȡԱۼⲼʱ +#define NET_DVR_GET_RAPIDMOVE_SCHEDULE_CAPABILITIES 3588 //ȡ˶Ⲽʱ +#define NET_DVR_GET_PARKING_SCHEDULE_CAPABILITIES 3589 //ȡͣⲼʱ +#define NET_DVR_GET_UNATTENDEDBAGGAGE_SCHEDULE_CAPABILITIES 3590 //ȡƷⲼʱ +#define NET_DVR_GET_ATTENDEDBAGGAGE_SCHEDULE_CAPABILITIES 3591 //ȡƷȡⲼʱ +#define NET_DVR_GET_WIRELESSDIAL_SCHEDULE_CAPABILITIES 3592 //ȡżƻ +#define NET_DVR_WIRELESSDIAL_CONNECT 3593 // + +#define NET_DVR_GET_LITESTORAGE 3594 //ȡ洢 +#define NET_DVR_SET_LITESTORAGE 3595 //洢 +#define NET_DVR_GET_LITESTORAGE_CAPABILITIES 3596 //ȡ洢 + +#define NET_DVR_GET_VEHICLE_CAPABILITIES 3597 //ȡ궨 +#define NET_DVR_GET_VEHICLE_CALIBRATION 3598 //ȡ궨 + +#define NET_DVR_GET_SLAVECAMERA_CAPABILITIES 3599 //ȡIPϢ +#define NET_DVR_GET_SLAVECAMERA 3600 //ȡIPϢ +#define NET_DVR_SET_SLAVECAMERA 3601 //ôIPϢ +#define NET_DVR_GET_SLAVECAMERA_STATUS 3602 //ȡ״̬ +#define NET_DVR_GET_SLAVECAMERA_CALIB_CAPABILITIES 3603 //ȡ&&궨 +#define NET_DVR_GET_SLAVECAMERA_CALIB 3604 //ȡ궨 +#define NET_DVR_SET_SLAVECAMERA_CALIB 3605 //ô궨 +#define NET_DVR_GET_PHY_RATIO 3606 //ȡϢ +#define NET_DVR_SET_PHY_RATIO 3607 //Ϣ +#define NET_DVR_GET_MASTERSLAVETRACKING_CAPABILITIES 3608 //ȡӸ +#define NET_DVR_SET_TRACKINGRATIO 3610 //ôٱ +#define NET_DVR_GET_TRACKING 3611 //ȡӸٹ +#define NET_DVR_SET_TRACKING 3612 //Ӹٹ +#define NET_DVR_GET_TRACKING_CAPABILITIES 3613 //ȡӸٹ + +#define NET_DVR_GET_SLAVECAMERA_CALIB_V50 3614 //ȡ궨V50 +#define NET_DVR_SET_SLAVECAMERA_CALIB_V50 3615 //ô궨V50 +#define NET_DVR_SET_TRACKINGRATIO_MANUAL 3616 //ôֶٱ +#define NET_DVR_GET_TRACKINGRATIO_MANUAL 3617 //ȡֶٱ +#define NET_DVR_SET_TRACK_INITPOSTION 3618 //ôʼλ +#define NET_DVR_GET_PTZ_CAPABILITIES 3619 //ȡptz + +#define NET_DVR_GET_THERMOMETRY_BASICPARAM_CAPABILITIES 3620 //ȡ +#define NET_DVR_GET_THERMOMETRY_BASICPARAM 3621 //ȡò +#define NET_DVR_SET_THERMOMETRY_BASICPARAM 3622 //òò +#define NET_DVR_GET_THERMOMETRY_SCENE_CAPABILITIES 3623 //ȡԤõ +#define NET_DVR_GET_THERMOMETRY_PRESETINFO 3624 //ȡԤõò +#define NET_DVR_SET_THERMOMETRY_PRESETINFO 3625 //òԤõò +#define NET_DVR_GET_THERMOMETRY_ALARMRULE_CAPABILITIES 3626//ȡ±ʽ +#define NET_DVR_GET_THERMOMETRY_ALARMRULE 3627 //ȡԤõ㱨ò +#define NET_DVR_SET_THERMOMETRY_ALARMRULE 3628 //òԤõ㱨ò +#define NET_DVR_GET_REALTIME_THERMOMETRY 3629 //ʵʱ¶ȼ +#define NET_DVR_GET_THERMOMETRY_DIFFCOMPARISON 3630 //ȡԤõ²ò +#define NET_DVR_SET_THERMOMETRY_DIFFCOMPARISON 3631 //òԤõ²ò +#define NET_DVR_GET_THERMOMETRY_TRIGGER 3632 //ȡ +#define NET_DVR_SET_THERMOMETRY_TRIGGER 3633 //ò + +#define NET_DVR_GET_THERMAL_CAPABILITIES 3634 //ȡȳThermal +#define NET_DVR_GET_FIREDETECTION_CAPABILITIES 3635 //ȡ +#define NET_DVR_GET_FIREDETECTION 3636 //ȡ +#define NET_DVR_SET_FIREDETECTION 3637 //û +#define NET_DVR_GET_FIREDETECTION_TRIGGER 3638 //ȡ +#define NET_DVR_SET_FIREDETECTION_TRIGGER 3639 //û + +#define NET_DVR_GET_OIS_CAPABILITIES 3640 //ȡѧ +#define NET_DVR_GET_OIS_CFG 3641 //ȡѧ +#define NET_DVR_SET_OIS_CFG 3642 //ùѧ +#define NET_DVR_GET_MACFILTER_CAPABILITIES 3643 //ȡMACַ +#define NET_DVR_GET_MACFILTER_CFG 3644 //ȡMACַ +#define NET_DVR_SET_MACFILTER_CFG 3645 //MACַ +#define NET_DVR_GET_EAGLEFOCUS_CALCFG_CAPABILITIES 3646 //ӥӾ۽궨 +#define NET_DVR_GET_EAGLEFOCUSING_CALCFG 3647 //ȡӥӾ۽궨 +#define NET_DVR_SET_EAGLEFOCUSING_CALCFG 3648 //ӥӾ۽궨 +#define NET_DVR_GET_EAGLEFOCUSING_CFG_CAPABILITIES 3649 //ȡӥӾ۽ +#define NET_DVR_GET_EAGLEFOCUSING_CTRL 3650 //ȡӥӾ۽ +#define NET_DVR_SET_EAGLEFOCUSING_CTRL 3651 //ӥӾ۽ + +#define NET_DVR_GET_PXOFFLINE_CAPABILITIES 3652 //ȡͣƱѻ² +#define NET_DVR_SET_PXOFFLINE_CFG 3653 //ͣƱѻ²Ϣ +#define NET_DVR_GET_PXOFFLINE_CFG 3654 //ȡͣƱѻ²Ϣ +#define NET_DVR_GET_PAPERCHARGEINFO_CAPABILITIES 3655 //ȡֽͣƱϢ· +#define NET_DVR_SET_PAPERCHARGEINFO 3656 //ֽͣƱϢ· +#define NET_DVR_GET_PARKINGSAPCE_CAPABILITIES 3657 //ȡͣͣλϢ· +#define NET_DVR_SET_PARKINGSAPCE_INFO 3658 //ͣͣλϢ· +#define NET_DVR_GET_PXMULTICTRL_CAPABILITIES 3659 //ȡͣƱ豸ǶȲ +#define NET_DVR_GET_CHARGEACCOUNT_CAPABILITIES 3661 //ȡͣƱ +#define NET_DVR_SET_CHARGE_ACCOUNTINFO 3662 //ýɷѽϢ +#define NET_DVR_SET_PXMULTICTRL_CFG 3663 //ͣƱ豸ǶȲϢ +#define NET_DVR_GET_PXMULTICTRL_CFG 3664 //ȡͣƱ豸ǶȲϢ +#define NET_DVR_GET_TME_CHARGERULE 3665 //ȡͣڳշѹ +#define NET_DVR_SET_TME_CHARGERULE 3666 //ͣڳշѹ +#define NET_DVR_GET_TME_CHARGERULE_CAPABILITIES 3667 //ȡͣ շϢ +#define NET_DVR_GET_ILLEGALCARDFILTERING_CAPABILITIES 3668 //ȡͣƱ +#define NET_DVR_GET_ILLEGALCARDFILTERING_CFG 3669 //ȡͣƱ +#define NET_DVR_SET_ILLEGALCARDFILTERING_CFG 3670 //ͣƱ +#define NET_DVR_GET_LEDDISPLAY_CAPABILITIES 3671 //ȡLEDĻʾò +#define NET_DVR_SET_LEDDISPLAY_CFG 3672 //LEDĻʾ +#define NET_DVR_GET_LEDDISPLAY_CFG 3673 //ȡLEDĻʾ +#define NET_DVR_GET_VOICEBROADCAST_CAPABILITIES 3674 //ȡƲò +#define NET_DVR_SET_VOICEBROADCAST_CFG 3675 //Ʋ +#define NET_DVR_GET_PAPERPRINTFORMAT_CAPABILITIES 3676//ȡֽƱӡʽ +#define NET_DVR_GET_PAPERPRINTFORMAT_CFG 3677 //ȡֽƱӡʽ +#define NET_DVR_SET_PAPERPRINTFORMAT_CFG 3678 //ֽƱӡʽ +#define NET_DVR_GET_LOCkGATE_CAPABILITIES 3679 //ȡբ +#define NET_DVR_GET_LOCKGATE_CFG 3680 //ȡբ +#define NET_DVR_SET_LOCKGATE_CFG 3681 //բ +#define NET_DVR_GET_PARKING_DATASTATE 3682 //ȡͬ״̬ +#define NET_DVR_SET_PARKING_DATASTATE 3683 //ͬ״̬ +#define NET_DVR_GET_TME_CAPABILITIES 3684 //ȡͣ豸 + +#define NET_DVR_GET_TMEVOICE_CAPABILITIES 3686 //ȡϢ +#define NET_DVR_SET_TMEVOICE_CFG 3687 // +#define NET_DVR_GET_TMEVOICE_CFG 3688 //ȡ +#define NET_DVR_DEL_TMEVOICE_CFG 3689 //ɾ +#define NET_DVR_GET_POSITION 3698 // ȡλò +#define NET_DVR_SET_POSITION 3699 // ÷λò +#define NET_DVR_GET_CENTRALIZEDCTRL_CAPABILITIES 3700//ȡв +#define NET_DVR_GET_CENTRALIZEDCTRL 3701//ȡвز +#define NET_DVR_SET_CENTRALIZEDCTRL 3702//üвز +#define NET_DVR_GET_COMPASS_CAPABILITIES 3703//ȡ +#define NET_DVR_GET_VANDALPROOFALARM 3704//ȡƻ +#define NET_DVR_SET_VANDALPROOFALARM 3705//÷ƻ +#define NET_DVR_COMPASS_CALIBRATE_CTRL 3706//̽ƽӿ +#define NET_DVR_COMPASS_NORTH_CTRL 3707//ָƽӿ +#define NET_DVR_GET_AZIMUTHINFO 3708//ȡλǶȲ + + +#define NET_DVR_GET_SATELLITETIME 3709//ȡǶλ +#define NET_DVR_SET_SATELLITETIME 3710//Ƕλ +#define NET_DVR_GET_GISINFO 3711//ȡǰGISϢ +#define NET_DVR_GET_STREAMING_CAPABILITIES 3712//ȡƵ +#define NET_DVR_GET_REFRESHFRAME_CAPABILITIES 3713//ȡˢ֡ +#define NET_DVR_STREAMING_REFRESH_FRAME 3714//ȡԤǿˢ֡ +#define NET_DVR_FACECAPTURE_STATISTICS 3715//Աͳ +#define NET_DVR_GET_WIRELESSSERVER_CAPABILITIES 3716 //ȡȵ㹦Э +#define NET_DVR_GET_WIRELESSSERVER 3717 //ȡȵ㹦Э +#define NET_DVR_SET_WIRELESSSERVER 3718 //ȵ㹦Э +#define NET_DVR_GET_CONNECT_LIST_CAPABILITIES 3719 //ȡ豸бϢ +#define NET_DVR_GET_THSCREEN_CAPABILITIES 3720 //ȡʪЭ +#define NET_DVR_GET_THSCREEN 3721 //ȡʪЭ +#define NET_DVR_GET_EXTERNALDEVICE_CAPABILITIES 3722//ȡЭ +#define NET_DVR_GET_EXTERNALDEVICE 3723//ȡЭ +#define NET_DVR_SET_EXTERNALDEVICE 3724//Э +#define NET_DVR_GET_LEDDISPLAYINFO_CAPABILITIES 3725 //ȡLEDʾϢ +#define NET_DVR_SET_LEDDISPLAYINFO 3726 //LEDʾϢ +#define NET_DVR_GET_SUPPLEMENTLIGHT_CAPABILITIES 3727 //ȡòЭ (֧֣ʵ֣豸ڲ) +#define NET_DVR_GET_SUPPLEMENTLIGHT 3728 //ȡòЭ +#define NET_DVR_SET_SUPPLEMENTLIGHT 3729 //òЭ +#define NET_DVR_SET_THSCREEN 3730 //ʪЭ +#define NET_DVR_GET_LOWPOWER_CAPABILITIES 3731 //ȡ͹Э +#define NET_DVR_GET_LOWPOWER 3732 //ȡ͹Э +#define NET_DVR_SET_LOWPOWER 3733 //õ͹Э +#define NET_DVR_GET_ZOOMLINKAGE_CAPABILITIES 3734 //ȡ䱶Э +#define NET_DVR_GET_ZOOMLINKAGE 3735 //ȡ䱶Э +#define NET_DVR_SET_ZOOMLINKAGE 3736 //ñ䱶Э +#define NET_DVR_THSCREEN_TIMING 3737 //ʪ +#define NET_DVR_GET_OSD_BATTERY_POWER_CFG 3741 //ȡOSDصʾ +#define NET_DVR_SET_OSD_BATTERY_POWER_CFG 3742 //OSDصʾ +#define NET_DVR_GET_OSD_BATTERY_POWER_CFG_CAPABILITIES 3743//OSDصʾ +#define NET_DVR_GET_VANDALPROOFALARM_TRIGGER 3744 //ȡƻ +#define NET_DVR_SET_VANDALPROOFALARM_TRIGGER 3745 //÷ƻ +#define NET_DVR_GET_PANORAMAIMAGE_CAPABILITIES 3746 //ȡȫͼ +#define NET_DVR_GET_PANORAMAIMAGE 3747 //ȡȫͼЭ +#define NET_DVR_SET_PANORAMAIMAGE 3748 //ȫͼЭ +#define NET_DVR_GET_STREAMENCRYPTION 3749 //ȡ +#define NET_DVR_SET_STREAMENCRYPTION 3750 // +#define NET_DVR_GET_STREAMENCRYPTION_CAPABILITIES 3751 //ȡ +#define NET_DVR_GET_REVISE_GPS_CAPABILITIES 3752 //ȡУ׼GPSγ +#define NET_DVR_GET_REVISE_GPS 3753 //ȡУ׼GPSγ +#define NET_DVR_SET_REVISE_GPS 3754 //У׼GPSγ +#define NET_DVR_GET_PDC_RECOMMEND 3755 //ȡͳƱʾƼֵ +#define NET_DVR_REMOVE_FLASHSTORAGE 3756 // +#define NET_DVR_GET_COUNTING_CAPABILITIES 3757 //ȡͳ +#define NET_DVR_SET_SENSOR_ADJUSTMENT 3758 //Sensor ڲЭ +#define NET_DVR_GET_SENSOR_ADJUSTMENT_CAPABILITIES 3759 //ȡSensor ڲЭ +#define NET_DVR_GET_WIRELESSSERVER_FULLVERSION_CFG 3760 //ȡwifiȵ() +#define NET_DVR_SET_WIRELESSSERVER_FULLVERSION_CFG 3761 //wifiȵ() +#define NET_DVR_GET_ONLINEUSER_INFO 3762 //ӻȡûϢ +#define NET_DVR_GET_SENSOR_ADJUSTMENT_INFO 3763 //ȡָsensorڲ +#define NET_DVR_SENSOR_RESET_CTRL 3764 //Sensor ڸλ + +#define NET_DVR_GET_POSTRADAR_CAPABILITIES 3765 //ȡ״ +#define NET_DVR_GET_POSTRADARSPEED_CFG 3766 //ȡ״ +#define NET_DVR_SET_POSTRADARSPEED_CFG 3767 //״ +#define NET_DVR_GET_POSTRADARSPEED_RECOM_CFG 3768 //ȡ״Ƽֵ +#define NET_DVR_GET_POSTRADARPARAM_CFG 3769 //ȡ״ +#define NET_DVR_SET_POSTRADARPARAM_CFG 3770 //״ +#define NET_DVR_GET_POSTRADARPARAM_RECOM_CFG 3771 //ȡ״Ƽֵ + +#define NET_DVR_GET_ENCRYPT_DEVICE_INFO 3772 //ȡ豸Ϣ +#define NET_DVR_GET_ANR_ARMING_HOST 3773 //ȡϢ +#define NET_DVR_GET_FIRMWARE_VERSION 3776 //GET firmware version +/********************************IPCFF****************************/ +#define NET_DVR_GET_FTP_CAPABILITIES 3782 //ȡftp +#define NET_DVR_GET_FTPUPLOAD_CFG 3783 //ȡftpϴϢ +#define NET_DVR_SET_FTPUPLOAD_CFG 3784 //ftpϴϢ +#define NET_DVR_GET_VEHICLE_INFORMATION 3785 //ȡϢ +#define NET_DVR_GET_DDNS_COUNTRY_ABILITY 3800//ȡ豸ֵ֧DDNSб +#define NET_DVR_GET_DEVICECFG_V50 3801 //ȡ豸 +#define NET_DVR_SET_DEVICECFG_V50 3802 //豸 +#define NET_DVR_SET_VEHICLE_RECOG_TASK_V50 3851 //ʶύV50չ +#define NET_DVR_GET_SMARTCALIBRATION_CAPABILITIES 3900// SmartΪ궨˳ߴ繦 +#define NET_DVR_GET_TEMPERATURE_TRIGGER 3903 //ȡ² +#define NET_DVR_SET_TEMPERATURE_TRIGGER 3904 //ò² + +#define NET_DVR_GET_SMARTCALIBRATION_CFG 3910 //ȡSmartΪ궨˳ߴ繦 +#define NET_DVR_SET_SMARTCALIBRATION_CFG 3911 //SmartΪ궨˳ߴ繦 +#define NET_DVR_POST_SETUP_CALIB 3912 //궨 +#define NET_DVR_SET_POS_INFO_OVERLAY 3913//PosϢӿ +#define NET_DVR_GET_POS_INFO_OVERLAY 3914//ȡPosϢӿ +#define NET_DVR_GET_CAMERA_WORK_MODE 3915 //ģʽ +#define NET_DVR_SET_CAMERA_WORK_MODE 3916 //ȡģʽ +#define NET_DVR_GET_RESOLUTION_SWITCH_CAPABILITIES 3917 //ȡֱģʽл +#define NET_DVR_GET_RESOLUTION_SWITCH 3918 //ȡֱģʽл +#define NET_DVR_SET_RESOLUTION_SWITCH 3919 //÷ֱģʽл +#define NET_DVR_GET_CONFIRM_MECHANISM_CAPABILITIES 3920 //ϴȷϻƿ +#define NET_DVR_CONFIRM_MECHANISM_CTRL 3921 //ϴȷϻƿ +#define NET_DVR_GET_VEHICLLE_RESULT_CAPABILITIES 3951 //ȡȡϢ +#define NET_DVR_GET_CALIB_CAPABILITIES 3952//ȡ궨 +#define NET_DVR_GET_POSINFO_OVERLAY_CAPABILITIES 3953//ȡȡPos +#define NET_SDK_FINDMEDICALFILE 3954 //ӰƼǻҽƲ¼ļ +#define NET_SDK_FINDMEDICALPICTURE 3955 //ӰƼǻҽƲͼƬļ +#define NET_DVR_SET_POSINFO_OVERLAY 3960//Pos +#define NET_DVR_GET_POSINFO_OVERLAY 3961//ȡPos +#define NET_DVR_GET_FACELIB_TRIGGER 3962 //ȡȶԿ +#define NET_DVR_SET_FACELIB_TRIGGER 3963 //ȶԿ +#define NET_DVR_GET_FACECONTRAST_TRIGGER 3965//ȡȶ +#define NET_DVR_SET_FACECONTRAST_TRIGGER 3966//ȶ +#define NET_DVR_GET_FACECONTRAST_SCHEDULE_CAPABILITIES 3967 //ȡȶԲʱ +#define NET_DVR_GET_FACECONTRAST_SCHEDULE 3968//ȡȶԲʱ +#define NET_DVR_SET_FACECONTRAST_SCHEDULE 3969//ȶԲʱ +#define NET_DVR_GET_FACELIB_SCHEDULE_CAPABILITIES 3970 //ȡȶԿIJʱ +#define NET_DVR_GET_VCA_VERSION_LIST 3973//ȡ㷨汾 +#define NET_DVR_GET_SETUP_CALIB 3974//ȡ궨 +#define NET_DVR_GET_PANORAMA_LINKAGE 3975//ȡץͼϴʹ +#define NET_DVR_SET_PANORAMA_LINKAGE 3976//ץͼϴʹ +#define NET_DVR_GET_FACELIB_SCHEDULE 3977 //ȡȶԿIJʱ +#define NET_DVR_SET_FACELIB_SCHEDULE 3978 //ȶԿIJʱ +#define NET_DVR_GET_SOFTWARE_SERVICE_CAPABILITIES 3980//ȡ +#define NET_DVR_GET_SOFTWARE_SERVICE 3981//ȡ +#define NET_DVR_SET_SOFTWARE_SERVICE 3982// +#define NET_DVR_GET_PREVIEW_MODE_CAPABILITIES 3983//ȡԤģʽ +#define NET_DVR_SET_EAGLE_FOCUS_GOTOSCENE 3984//ӥʽ۽תָijID +#define NET_DVR_EAGLE_FOCUS_SCENE_DEL 3985//ɾӥʽ۽궨ij +#define NET_DVR_GET_SAFETY_HELMET_TRIGGER 3986 //ȡȫñ +#define NET_DVR_SET_SAFETY_HELMET_TRIGGER 3987 //ðȫñ +#define NET_DVR_GET_SAFETY_HELMET_SCHEDULE_CAPABILITIES 3988 //ȡȫñⲼʱ +#define NET_DVR_GET_SAFETY_HELMET_SCHEDULE 3989//ȡȫñⲼʱ +#define NET_DVR_SET_SAFETY_HELMET_SCHEDULE 3990//ðȫñⲼʱ + +#define NET_DVR_GET_SIGN_ABNORMAL_TRIGGER 4150 //ȡ쳣 +#define NET_DVR_SET_SIGN_ABNORMAL_TRIGGER 4151 //쳣 + +#define NET_DVR_ONE_KEY_CONFIG_SAN_V50 4152 //һSAN(V50) +#define NET_DVR_GET_HDCFG_V50 4153 //ȡӲϢV50 +#define NET_DVR_SET_HDCFG_V50 4154 //ӲϢV50 +#define NET_DVR_GET_HDVOLUME_CFG 4155 //ȡӲ̾Ϣ +#define NET_DVR_SET_HDVOLUME_CFG 4156 //Ӳ̾Ϣ +#define NET_DVR_GET_POWER_SUPPLY_CABINET_TRIGGER 4157 //ȡ񹩵 +#define NET_DVR_SET_POWER_SUPPLY_CABINET_TRIGGER 4158 //û񹩵 +#define NET_DVR_GET_SENSOR_TRIGGER 4159 //ȡ +#define NET_DVR_SET_SENSOR_TRIGGER 4160 //ô +#define NET_DVR_GET_FACESNAP_TRIGGER 4161 //ȡץ +#define NET_DVR_SET_FACESNAP_TRIGGER 4162 //ץ +#define NET_DVR_GET_FACESNAP_SCHEDULE_CAPABILITIES 4163 //ȡץIJʱ +#define NET_DVR_GET_FACESNAP_SCHEDULE 4164 //ȡץIJʱ +#define NET_DVR_SET_FACESNAP_SCHEDULE 4165 //ץIJʱ + +#define NET_DVR_SET_SCREEN_SWITCH 4171 //л +#define NET_DVR_GET_BV_CALIB_PIC 4172 //ȡ豸ץȡͼƬ͸Ϣ +#define NET_DVR_GET_BV_CALIB_RESULT 4173 //ȡ˫Ŀα궨 +#define NET_DVR_GET_BV_HCORRECTION 4174 //ȡ˫Ŀ߶Ƚ +#define NET_DVR_DEL_BV_CALIB_PIC 4175 //ɾͼƬ +#define NET_DVR_GET_TV_SCREEN_CFG 4176 //ȡͣʱ +#define NET_DVR_SET_TV_SCREEN_CFG 4177 //õͣʱ +#define NET_DVR_ADJUST_BV_CALIB 4178 //˫Ŀ궨΢ +#define NET_DVR_GET_HUMAN_CALIB 4179 //ȡ궨 +#define NET_DVR_SET_HUMAN_CALIB 4180 //궨 +#define NET_DVR_GET_USERCFG_V51 4181 //ȡû +#define NET_DVR_SET_USERCFG_V51 4182 //û +#define NET_DVR_GET_SOFTIO_TRIGGER 4183 //ȡSoftIO +#define NET_DVR_SET_SOFTIO_TRIGGER 4184 //SoftIO +#define NET_DVR_GET_SOFTIO_SCHEDULE_CAPABILITIES 4185 //ȡSoftIOʱ +#define NET_DVR_GET_SOFTIO_SCHEDULE 4186 //ȡSoftIOʱ +#define NET_DVR_SET_SOFTIO_SCHEDULE 4187 //SoftIOʱ +#define NET_DVR_GET_HFPD_TRIGGER 4188 //ȡƵԱ +#define NET_DVR_SET_HFPD_TRIGGER 4189 //øƵԱ +#define NET_DVR_GET_HFPD_SCHEDULE_CAPABILITIES 4190 //ȡƵԱⲼʱ +#define NET_DVR_GET_HFPD_SCHEDULE 4191 //ȡƵԱⲼʱ +#define NET_DVR_SET_HFPD_SCHEDULE 4192 //øƵԱⲼʱ +#define NET_DVR_GET_ALARM_INFO 4193 //ȡ¼Ϣ +#define NET_DVR_GET_USERCFG_V52 4194 //ȡû +#define NET_DVR_SET_USERCFG_V52 4195 //û + +/********************************NVR_˲Ʒ****************************/ +#define NET_DVR_GET_MUTEX_FUNCTION 4353 //ȡܻϢ + +#define NET_DVR_GET_SINGLE_CHANNELINFO 4360 //ȡͨ +#define NET_DVR_GET_CHANNELINFO 4361 //ȡͨ +#define NET_DVR_CHECK_LOGIN_PASSWORDCFG 4362 //û¼У +#define NET_DVR_GET_SINGLE_SECURITY_QUESTION_CFG 4363 //ȡ豸ȫ +#define NET_DVR_SET_SINGLE_SECURITY_QUESTION_CFG 4364 //õ豸ȫ +#define NET_DVR_GET_SECURITY_QUESTION_CFG 4365 //ȡ豸ȫ +#define NET_DVR_SET_SECURITY_QUESTION_CFG 4366 //豸ȫ +#define NET_DVR_GET_ONLINEUSERLIST_SC 4367 //Զ̻ȡ½ûϢӣ + +#define NET_DVR_GET_BLOCKLIST_FACECONTRAST_TRIGGER 4368 //ȡֹȶ +#define NET_DVR_SET_BLOCKLIST_FACECONTRAST_TRIGGER 4369 //ýֹȶ +#define NET_DVR_GET_ALLOWLIST_FACECONTRAST_TRIGGER 4370 //ȡȶ +#define NET_DVR_SET_ALLOWLIST_FACECONTRAST_TRIGGER 4371 //ȶ +#define NET_DVR_GET_BLOCKLIST_FACECONTRAST_SCHEDULE_CAPABILITIES 4372 //ȡֹȶԲʱ +#define NET_DVR_GET_BLOCKLIST_FACECONTRAST_SCHEDULE 4373 //ȡֹȶԲʱ +#define NET_DVR_SET_BLOCKLIST_FACECONTRAST_SCHEDULE 4374 //ýֹȶԲʱ +#define NET_DVR_GET_ALLOWLIST_FACECONTRAST_SCHEDULE_CAPABILITIES 4375 //ȡȶԲʱ +#define NET_DVR_GET_ALLOWLIST_FACECONTRAST_SCHEDULE 4376 //ȡȶԲʱ +#define NET_DVR_SET_ALLOWLIST_FACECONTRAST_SCHEDULE 4377 //ȶԲʱ + +#define NET_DVR_GET_HUMAN_RECOGNITION_SCHEDULE_CAPABILITIES 4378 //ȡʶ𲼷ʱ +#define NET_DVR_GET_HUMAN_RECOGNITION_SCHEDULE 4379 //ȡʶ𲼷ʱ +#define NET_DVR_SET_HUMAN_RECOGNITION_SCHEDULE 4380 //ʶ𲼷ʱ +#define NET_DVR_GET_HUMAN_RECOGNITION_TRIGGER 4381 //ȡʶ +#define NET_DVR_SET_HUMAN_RECOGNITION_TRIGGER 4382 //ʶ +#define NET_DVR_GET_GBT28181_AUDIO_OUTPUT_CFG 4383 //ȡGBT28181Э豸ԽϢ +#define NET_DVR_SET_GBT28181_AUDIO_OUTPUT_CFG 4384 //GBT28181Э豸ԽϢ + +#define NET_DVR_GET_STUDENTS_STOODUP_TRIGGER 4386 //ȡѧ +#define NET_DVR_SET_STUDENTS_STOODUP_TRIGGER 4387 //ѧ +#define NET_DVR_GET_FRAMES_PEOPLE_COUNTING_SCHEDULE_CAPABILITIES 4388 //ȡͳƲʱ +#define NET_DVR_GET_FRAMES_PEOPLE_COUNTING_SCHEDULE 4389 //ȡͳƲʱ +#define NET_DVR_SET_FRAMES_PEOPLE_COUNTING_SCHEDULE 4390 //ͳƲʱ +#define NET_DVR_GET_FRAMES_PEOPLE_COUNTING_TRIGGER 4391 //ȡͳ +#define NET_DVR_SET_FRAMES_PEOPLE_COUNTING_TRIGGER 4392 //ͳ + +#define NET_DVR_GET_PERSONDENSITY_TRIGGER 4393 //ȡԱܶȼ +#define NET_DVR_SET_PERSONDENSITY_TRIGGER 4394 //Աܶȼ +#define NET_DVR_GET_PERSONDENSITY_SCHEDULE_CAPABILITIES 4395 //ȡԱܶȼIJʱ +#define NET_DVR_GET_PERSONDENSITY_SCHEDULE 4396 //ȡԱܶȼIJʱ +#define NET_DVR_SET_PERSONDENSITY_SCHEDULE 4397 //ԱܶȼIJʱ + +#define NET_DVR_GET_STUDENTS_STOODUP_SCHEDULE_CAPABILITIES 4398 //ȡѧⲼʱ +#define NET_DVR_GET_STUDENTS_STOODUP_SCHEDULE 4399 //ȡѧⲼʱ +#define NET_DVR_SET_STUDENTS_STOODUP_SCHEDULE 4400 //ѧⲼʱ + +#define NET_DVR_SET_FACE_THERMOMETRY_TRIGGER 4401 // +#define NET_DVR_GET_FACE_THERMOMETRY_SCHEDULE_CAPABILITIES 4402 //ȡ²ʱ +#define NET_DVR_GET_FACE_THERMOMETRY_SCHEDULE 4403 //ȡ²ʱ +#define NET_DVR_SET_FACE_THERMOMETRY_SCHEDULE 4404 //²ʱ +#define NET_DVR_GET_FACE_THERMOMETRY_TRIGGER 4405 //ȡ +#define NET_DVR_GET_PERSONQUEUE_TRIGGER 4406 //ȡԱŶӼ +#define NET_DVR_SET_PERSONQUEUE_TRIGGER 4407 //ԱŶӼ +#define NET_DVR_GET_PERSONQUEUE_SCHEDULE_CAPABILITIES 4408 //ȡԱŶӼIJʱ +#define NET_DVR_GET_PERSONQUEUE_SCHEDULE 4409 //ȡԱŶӼIJʱ +#define NET_DVR_SET_PERSONQUEUE_SCHEDULE 4410 //ԱŶӼIJʱ +#define NET_DVR_SET_START_VIDEOAUDIO 4411 //NVRƵ(豸Բ⹦) + + +/********************************ʶ****************************/ +#define NET_DVR_GET_FACESNAPCFG 5001 //ȡץIJ +#define NET_DVR_SET_FACESNAPCFG 5002 //ץIJ +#define NET_DVR_GET_DEVACCESS_CFG 5005 //ȡ豸 +#define NET_DVR_SET_DEVACCESS_CFG 5006 //ý豸 +#define NET_DVR_GET_SAVE_PATH_CFG 5007 //ȡ洢Ϣ +#define NET_DVR_SET_SAVE_PATH_CFG 5008 //ô洢Ϣ +#define NET_VCA_GET_RULECFG_V41 5011 //ȡΪ(չ) +#define NET_VCA_SET_RULECFG_V41 5012 //Ϊ(չ) +#define NET_DVR_GET_AID_RULECFG_V41 5013 //ȡͨ¼ +#define NET_DVR_SET_AID_RULECFG_V41 5014 //ýͨ¼ +#define NET_DVR_GET_TPS_RULECFG_V41 5015 //ȡͨͳƹ(չ) +#define NET_DVR_SET_TPS_RULECFG_V41 5016 //ýͨͳƹ(չ) +#define NET_VCA_GET_FACEDETECT_RULECFG_V41 5017 //ȡATM(չ) +#define NET_VCA_SET_FACEDETECT_RULECFG_V41 5018 //ATM(չ) +#define NET_DVR_GET_PDC_RULECFG_V41 5019 //ͳƹ(չ) +#define NET_DVR_SET_PDC_RULECFG_V41 5020 //ȡͳƹ(չ) +#define NET_DVR_GET_TRIAL_VERSION_CFG 5021 //ȡðϢ +#define NET_DVR_GET_VCA_CTRLINFO_CFG 5022 //ȡܿƲ +#define NET_DVR_SET_VCA_CTRLINFO_CFG 5023 //ܿƲ +#define NET_DVR_SYN_CHANNEL_NAME 5024 //ͬͨ +#define NET_DVR_GET_RESET_COUNTER 5025 //ȡͳͨͳƣ +#define NET_DVR_SET_RESET_COUNTER 5026 //ͳͨͳƣ +#define NET_DVR_GET_OBJECT_COLOR 5027 //ȡɫ +#define NET_DVR_SET_OBJECT_COLOR 5028 //ɫ +#define NET_DVR_GET_AUX_AREA 5029 //ȡ +#define NET_DVR_SET_AUX_AREA 5030 //ø +#define NET_DVR_GET_CHAN_WORKMODE 5031 //ȡͨģʽ +#define NET_DVR_SET_CHAN_WORKMODE 5032 //ͨģʽ +#define NET_DVR_GET_SLAVE_CHANNEL 5033 //ȡͨ +#define NET_DVR_SET_SLAVE_CHANNEL 5034 //ôͨ +#define NET_DVR_GET_VQD_EVENT_RULE 5035 //ȡƵ¼ +#define NET_DVR_SET_VQD_EVENT_RULE 5036 //Ƶ¼ +#define NET_DVR_GET_BASELINE_SCENE 5037 //ȡ׼ +#define NET_DVR_SET_BASELINE_SCENE 5038 //û׼ +#define NET_DVR_CONTROL_BASELINE_SCENE 5039 //׼ +#define NET_DVR_SET_VCA_DETION_CFG 5040 //ƶ +#define NET_DVR_GET_VCA_DETION_CFG 5041 //ȡƶ +#define NET_DVR_GET_STREAM_ATTACHINFO_CFG 5042 //ȡϢ +#define NET_DVR_SET_STREAM_ATTACHINFO_CFG 5043 //Ϣ + +#define NET_DVR_GET_BV_CALIB_TYPE 5044 //ȡ˫Ŀ궨 +#define NET_DVR_CONTROL_BV_SAMPLE_CALIB 5045 //˫Ŀ궨 +#define NET_DVR_GET_BV_SAMPLE_CALIB_CFG 5046 //ȡ˫Ŀ궨 +#define NET_DVR_GET_RULECFG_V42 5049 //ȡΪ(֧16չ) +#define NET_DVR_SET_RULECFG_V42 5050 //Ϊ(֧16չ) +#define NET_DVR_SET_VCA_DETION_CFG_V40 5051 //ƶ +#define NET_DVR_GET_VCA_DETION_CFG_V40 5052 //ȡƶ +#define NET_DVR_SET_FLASH_CFG 5110 //дݵFlash ʹ +/********************************ʶ end****************************/ + +//2014-12-03 +#define NET_DVR_GET_T1TEST_CFG 5053 //߲ýӿڣȡ +#define NET_DVR_SET_T1TEST_CFG 5054 ////߲ýӿڣã + +/********************************ITS****************************/ +#define NET_ITS_GET_OVERLAP_CFG_V50 5055 //ȡַӲչ +#define NET_ITS_SET_OVERLAP_CFG_V50 5056 //ַӲչ + +#define NET_DVR_GET_PARKLAMP_STATE 5057 //ȡͣźŵ״̬Ϣ +#define NET_DVR_GET_CLOUDSTORAGE_CFG 5058 //ȡƴ洢ò +#define NET_DVR_SET_CLOUDSTORAGE_CFG 5059 //ƴ洢ò + +#define NET_ITS_GET_BASE_INFO 5060 //ȡն˻Ϣ +#define NET_DVR_GET_SENSOR_INFO 5061 //Ϣѯ +#define NET_DVR_SET_SENSOR_SWITCH 5062 //Զ̿ +#define NET_ITS_GET_IMGMERGE_CFG 5063 //ȡͼƬϳò +#define NET_ITS_SET_IMGMERGE_CFG 5064 //ͼƬϳò +#define NET_ITS_GET_UPLOAD_CFG 5065 //ȡϴ +#define NET_ITS_SET_UPLOAD_CFG 5066 //ϴ +#define NET_DVR_GET_SENSOR_PORT_CAPABILITIES 5067 //ȡ +#define NET_ITS_GET_WORKSTATE 5069 //ȡն˹״̬ +#define NET_ITS_GET_IPC_CHAN_CFG 5070 //ȡͨIPCϢ +#define NET_ITS_SET_IPC_CHAN_CFG 5071 //ͨIPCϢ +#define NET_ITS_GET_OVERLAP_CFG 5072 //ȡַӲ +#define NET_ITS_SET_OVERLAP_CFG 5073 //ַӲ +#define NET_DVR_GET_TRIGGEREX_CFG 5074 //ȡITCչ +#define NET_DVR_SET_TRIGGEREX_CFG 5075 //ITCչ +#define NET_ITS_GET_ROAD_INFO 5076 //ȡ·Ϣ + +#define NET_ITS_REMOTE_DEVICE_CONTROL 5077//Զ豸 +#define NET_ITS_GET_GATEIPC_CHAN_CFG 5078//ȡڲ +#define NET_ITS_SET_GATEIPC_CHAN_CFG 5079//óڲ +#define NET_ITS_TRANSCHAN_START 5080//ͬݷ +#define NET_ITS_GET_ECTWORKSTATE 5081//ȡն˹״̬ +#define NET_ITS_GET_ECT_CHAN_INFO 5082//ȡնͨ״̬ +#define NET_DVR_GET_HEATMAP_RESULT 5083//ȶͼݲ +#define NET_DVR_SET_ITS_EXDEVCFG 5084 //ITS豸Ϣ +#define NET_DVR_GET_ITS_EXDEVCFG 5085 //ȡITS豸Ϣ +#define NET_DVR_GET_ITS_EXDEVSTATUS 5086 //ȡITS豸Ϣ +#define NET_DVR_SET_ITS_ENDEVCMD 5087 //ITSն˳ڿ +#define NET_DVR_SET_ENISSUED_DATADEL 5088 //ITSն˳ڿ +#define NET_DVR_GET_PDC_RESULT 5089//ݲѯ 2014-03-21 +#define NET_ITS_GET_LAMP_CTRLCFG 5090 //ȡõƲ +#define NET_ITS_SET_LAMP_CTRLCFG 5091 //õƲ +#define NET_ITS_GET_PARKSPACE_ATTRIBUTE_CFG 5092 //ȡ⳵λ +#define NET_ITS_SET_PARKSPACE_ATTRIBUTE_CFG 5093 //⳵λ +#define NET_ITS_SET_LAMP_EXTERNAL_CFG 5095 //ò +#define NET_ITS_SET_COMPEL_CAPTURE 5096 //óλǿץͼ +#define NET_DVR_SET_TIMESIGN_CFG 5097 //չУʱԶ +#define NET_DVR_GET_TIMESIGN_CFG 5098 //ȡչУʱԶ +#define NET_DVR_GET_SIGNALLAMP_STATUS 5099 //źŵƼ +/********************************ITS end****************************/ + +#define NET_DVR_GET_MONITOR_PLAN_VQD 5100 //ӻȡϷƻ +#define NET_DVR_GET_MONITORID_VQD 5101 //ӻȡӦƻڵļصϢ +#define NET_DVR_SET_MONITOR_INFO 5102 //üƻڵļصϢ +#define NET_DVR_DEL_MONITOR_PLAN_VQD 5103 //ɾƻ +#define NET_DVR_GET_MONITOR_VQD_STATUS 5104 //ƽ̨ѯϷ״̬ +#define NET_DVR_GET_RECORD_INFO 5105 //ȡԴͼƬѯ +#define NET_DVR_GET_MONITOR_VQDCFG 5106 //ȡļصϢ +#define NET_DVR_SET_MONITOR_VQDCFG 5107 //÷ļصϢ +#define NET_DVR_SET_MONITOR_PLAN_VQDCFG 5108 //ùƻ(ļƻ) + +#define NET_DVR_SCENE_CHANGE_UPDATE 5109 //ݸ + +#define NET_DVR_GET_CALIBRATE_POINT 5153 //һתǹ豸 ⲿ ߴ벻ʵֹ֣ͻύߣ/*************************ܶೡ********************************/ +#define NET_DVR_GET_SCENE_CFG 5201 //ȡϢ +#define NET_DVR_SET_SCENE_CFG 5202 //óϢ +#define NET_DVR_GET_SCENE_REFERENCE_REGION 5203 //ȡο +#define NET_DVR_SET_SCENE_REFERENCE_REGION 5204 //òο +#define NET_DVR_GET_SCENE_CALIBRATION 5205 //ȡ궨Ϣ +#define NET_DVR_SET_SCENE_CALIBRATION 5206 //ñ궨Ϣ +#define NET_DVR_GET_SCENE_MASK_REGION 5207 //ȡ +#define NET_DVR_SET_SCENE_MASK_REGION 5208 // +#define NET_DVR_GET_SCENE_LANECFG 5209 //ȡ +#define NET_DVR_SET_SCENE_LANECFG 5210 //ó +#define NET_DVR_GET_SCENE_AID_RULECFG 5211 //ȡͨ¼ +#define NET_DVR_SET_SCENE_AID_RULECFG 5212 //ýͨ¼ +#define NET_DVR_GET_SCENE_TPS_RULECFG 5213 //ȡͨͳƹ +#define NET_DVR_SET_SCENE_TPS_RULECFG 5214 //ýͨͳƹ +#define NET_DVR_GET_SCENE_TIME_CFG 5215 //ȡͨijʱ +#define NET_DVR_SET_SCENE_TIME_CFG 5216 //ͨijʱ +#define NET_DVR_GET_FORENSICS_MODE 5217 //ȡȡ֤ʽ +#define NET_DVR_SET_FORENSICS_MODE 5218 //ȡ֤ʽ +#define NET_DVR_FORCESTOP_FORENSICS_CTRL 5219 //ǿֹͣȡ֤ +#define NET_DVR_GET_ALARM_PROCESS_CFG 5220 //ȡ +#define NET_DVR_SET_ALARM_PROCESS_CFG 5221 //ñ +#define NET_DVR_GET_BLOCKLIST_ALARM_INFO 5222 //ȡ켣 +#define NET_DVR_GET_STORAGE_RESOURCE_CFG 5225 //ȡ洢Դ +#define NET_DVR_SET_STORAGE_RESOURCE_CFG 5226 //ô洢Դ +#define NET_DVR_DEL_BLOCKLIST_ALARM_RECORD 5227 //Զɾ¼ +#define NET_DVR_SET_BLOCKLIST_GROUP_INFO 5229 //Զ̷б +#define NET_DVR_DEL_BLOCKLIST_GROUP_INFO 5230 //Զɾб +#define NET_DVR_GET_BLOCKLIST_GROUP_INFO 5231 //Զ̻ȡȫб +#define NET_DVR_SET_BLOCKLIST_GROUP_RECORD_CFG 5232 //¼ +#define NET_DVR_GET_BLOCKLIST_GROUP_RECORD_CFG 5234 //Զ̻ȡ¼ +#define NET_DVR_DEL_BLOCKLIST_GROUP_RECORD_CFG 5235 //Զɾ¼ +#define NET_DVR_GET_AREA_MONITOR_CFG 5236 //ȡص +#define NET_DVR_SET_AREA_MONITOR_CFG 5237 //ص +#define NET_DVR_DEL_AREA_MONITOR_CFG 5238 //ɾص +#define NET_DVR_RETRIEVAL_SNAP_RECORD 5240 //ץĿ +#define NET_DVR_GET_ALARMLIST 5241 //ȡб +#define NET_DVR_DETECT_IMAGE 5242 //ͼƬ +#define NET_DVR_GET_SNAP_RECORD 5243 //ȡץļ¼ +#define NET_DVR_DEL_SNAP_RECORD 5244 //ɾץļ¼ +#define NET_DVR_GET_FACE_RECORD 5245 //Զ̻ȡ¼б +#define NET_DVR_SET_FACE_RECORD 5246 //¼ +#define NET_DVR_DEL_FACE_RECORD 5247 //ɾ¼ +#define NET_DVR_GET_FACE_DATABASE 5248 //ȡò +#define NET_DVR_SET_FACE_DATABASE 5249 //ò +#define NET_DVR_DEL_FACE_DATABASE 5250 //ɾ +#define NET_DVR_RETRIEVAL_FACE_DATABASE 5251 // +#define NET_DVR_SET_BLOCKLIST_REL_DEV_CFG 5252 //豸 +#define NET_DVR_DEL_BLOCKLIST_REL_DEV 5253 //ɾ 豸Ϣ +/*************************ܶೡend*****************************/ + +#define NET_DVR_GET_DISK_RAID_INFO 6001 //ȡRaidϢ +#define NET_DVR_SET_DISK_RAID_INFO 6002 //ôRaidϢ + +#define NET_DVR_GET_DVR_SYNCHRONOUS_IPC 6005 //ȡǷΪǰIPCͬ豸 +#define NET_DVR_SET_DVR_SYNCHRONOUS_IPC 6006 //ãǷΪǰIPCͬ豸 + +#define NET_DVR_SET_DVR_IPC_PASSWD 6008 //ãIPCû +#define NET_DVR_GET_DEVICE_NET_USING_INFO 6009 //ȡǰ豸Դʹ + +#define NET_DVR_SET_DVR_IPC_NET 6012 //ãǰIPCַ + +#define NET_DVR_GET_RECORD_CHANNEL_INFO 6013 //ȡ¼ͨϢ +#define NET_DVR_SET_RECORD_CHANNEL_INFO 6014 //ã¼ͨϢ + + +#define NET_DVR_MOUNT_DISK 6015 // ش +#define NET_DVR_UNMOUNT_DISK 6016 // жش + +// CVR +#define NET_DVR_GET_STREAM_SRC_INFO 6017 //ȡԴϢ +#define NET_DVR_SET_STREAM_SRC_INFO 6018 //ãԴϢ +#define NET_DVR_GET_STREAM_RECORD_INFO 6019 //ȡ¼Ϣ +#define NET_DVR_SET_STREAM_RECORD_INFO 6020 //ã¼Ϣ +#define NET_DVR_GET_STREAM_RECORD_STATUS 6021 //ȡ¼״̬ +#define NET_DVR_SET_STREAM_RECORD_STATUS 6022 //ã¼״̬ +#define NET_DVR_GET_STREAM_INFO 6023 //ȡӵIDϢ +#define NET_DVR_GET_STREAM_SRC_INFO_V40 6024 //ȡԴϢ +#define NET_DVR_SET_STREAM_SRC_INFO_V40 6025 //ãԴϢ +#define NET_DVR_GET_RELOCATE_INFO 6026 //ȡN+0ģʽضϢ +#define NET_DVR_START_GOP_INFO_PASSBACK 6032 //Ϣ +#define NET_DVR_GET_CHANS_RECORD_STATUS_CFG 6035 //ȡͨ¼״̬Ϣ +#define NET_DVR_SET_CHANS_RECORD_STATUS_CFG 6036 //ͨ¼״̬Ϣ +//NVR96xx +#define NET_DVR_GET_IP_ALARM_GROUP_NUM 6100 //ȡIPͨ +#define NET_DVR_GET_IP_ALARM_IN 6101 //ȡIPͨϢ +#define NET_DVR_GET_IP_ALARM_OUT 6102 //ȡIPͨϢ + +//9000 v2.2 +#define NET_DVR_GET_FTPCFG_SECOND 6103 //ȡͼƬϴFTP +#define NET_DVR_SET_FTPCFG_SECOND 6104 //ͼƬϴFTP + +#define NET_DVR_GET_DEFAULT_VIDEO_EFFECT 6105 // ȡƵЧĬֵ +#define NET_DVR_SET_VIDEO_EFFECT 6106 // ͨƵͼ +#define NET_DVR_DEL_INVALID_DISK 6107 // ɾЧ + +#define NET_DVR_GET_DRAWFRAME_DISK_QUOTA_CFG 6109 //ȡ֡ͨ +#define NET_DVR_SET_DRAWFRAME_DISK_QUOTA_CFG 6110 //ó֡ͨ + +#define NET_DVR_GET_NAT_CFG 6111 //ȡNATӳ +#define NET_DVR_SET_NAT_CFG 6112 //NATӳ +#define NET_DVR_GET_AES_KEY 6113 //ȡ豸AESԿ +#define NET_DVR_GET_POE_CFG 6114 //ȡPOE +#define NET_DVR_SET_POE_CFG 6115 //POE +#define NET_DVR_GET_CUSTOM_PRO_CFG 6116 //ȡԶЭ +#define NET_DVR_SET_CUSTOM_PRO_CFG 6117 //ԶЭ +#define NET_DVR_GET_STREAM_CABAC 6118 //ȡѹѡ +#define NET_DVR_SET_STREAM_CABAC 6119 //ѹѡ +#define NET_DVR_GET_ESATA_MINISAS_USAGE_CFG 6120 //ȡeSATAminiSAS; +#define NET_DVR_SET_ESATA_MINISAS_USAGE_CFG 6121 //eSATAminiSAS; + +#define NET_DVR_GET_HDCFG_V40 6122 //ȡӲϢ +#define NET_DVR_SET_HDCFG_V40 6123 //ӲϢ +#define NET_DVR_GET_POE_CHANNEL_ADD_MODE 6124 //ȡPOEͨӷʽ +#define NET_DVR_SET_POE_CHANNEL_ADD_MODE 6125 //POEͨӷʽ +#define NET_DVR_GET_DIGITAL_CHANNEL_STATE 6126 //ȡ豸ͨ״̬ +#define NET_DVR_GET_BONJOUR_CFG 6127 // ȡBonjourϢ +#define NET_DVR_SET_BONJOUR_CFG 6128 // BonjourϢ + + +#define NET_DVR_GET_SOCKS_CFG 6130//ȡSOCKSϢ +#define NET_DVR_SET_SOCKS_CFG 6131//SOCKSϢ + +#define NET_DVR_GET_QOS_CFG 6132//ȡQoSϢ +#define NET_DVR_SET_QOS_CFG 6133//QoSϢ + +#define NET_DVR_GET_HTTPS_CFG 6134//ȡHTTPSϢ +#define NET_DVR_SET_HTTPS_CFG 6135//HTTPSϢ + +#define NET_DVR_GET_WD1_CFG 6136//Զ̻ȡWD1ʹܿ +#define NET_DVR_SET_WD1_CFG 6137//ԶWD1ʹܿ + +#define NET_DVR_CREATE_CERT 6138//֤ +#define NET_DVR_DELETE_CERT 6139//ɾ֤ + + +#define NET_DVR_GET_RECORD_LOCK_PERCENTAGE 6140 //ȡ¼ +#define NET_DVR_SET_RECORD_LOCK_PERCENTAGE 6141 //¼ + +#define NET_DVR_CMD_TRIGGER_PERIOD_RECORD 6144 //ⲿָʱ¼ +#define NET_DVR_UPLOAD_CERT 6145 //ϴ֤ +#define NET_DVR_DOWNLOAD_CERT 6146 //֤ +#define NET_DVR_GET_CERT 6147 //ȡ֤ + +#define NET_DVR_GET_POS_FILTER_CFG 6148 //ȡPOS˹ +#define NET_DVR_SET_POS_FILTER_CFG 6149 //POS˹ +#define NET_DVR_GET_CONNECT_POS_CFG 6150 //ȡDVRPOSӷʽ +#define NET_DVR_SET_CONNECT_POS_CFG 6151 //DVRPOSӷʽ +#define NET_DVR_GET_CHAN_FILTER_CFG 6152 //ȡͨϢ +#define NET_DVR_SET_CHAN_FILTER_CFG 6153 //ùͨϢ + + +#define NET_DVR_GET_FTPCFG_V40 6162 //ȡFTPϢ +#define NET_DVR_SET_FTPCFG_V40 6163 //FTPϢ + +#define NET_DVR_GET_MONTHLY_RECORD_DISTRIBUTION 6164 //ȡ¼ֲ +#define NET_DVR_GET_ACCESS_DEVICE_CHANNEL_INFO 6165 //ȡ豸ͨϢ +#define NET_DVR_GET_PREVIEW_SWITCH_CFG 6166 //ȡ豸Ԥл +#define NET_DVR_SET_PREVIEW_SWITCH_CFG 6167 //豸Ԥл + +//Netra3.0.0 +#define NET_DVR_GET_N_PLUS_ONE_WORK_MODE 6168 //ȡN+1ģʽ +#define NET_DVR_SET_N_PLUS_ONE_WORK_MODE 6169 //N+1ģʽ + +#define NET_DVR_GET_HD_STATUS 6170 //ȡӲ״̬ +#define NET_DVR_SET_HD_STATUS 6171 //Ӳ״̬ + +#define NET_DVR_IMPORT_IPC_CFG_FILE 6172 //IPCļ +#define NET_DVR_EXPORT_IPC_CFG_FILE 6173 //IPCļ +#define NET_DVR_UPGRADE_IPC 6174 //IPͨ + +#define NET_DVR_GET_RAID_BACKGROUND_TASK_SPEED 6175 //ȡRAID̨ٶ +#define NET_DVR_SET_RAID_BACKGROUND_TASK_SPEED 6176 //RAID̨ٶ + +//marvell 256·NVR +#define NET_DVR_GET_EXCEPTIONCFG_V40 6177 //ȡ쳣 +#define NET_DVR_SET_EXCEPTIONCFG_V40 6178 //쳣 +#define NET_DVR_GET_PICCFG_V40 6179 //ȡͼ ֱ֧䳤 NetSDK_ +#define NET_DVR_SET_PICCFG_V40 6180 //ͼ ֱ֧䳤 +#define NET_DVR_GET_ALARMINCFG_V40 6181 //ȡֱ֧䳤 +#define NET_DVR_SET_ALARMINCFG_V40 6182 //ȡֱ֧䳤 +#define NET_DVR_GET_IPALARMINCFG_V40 6183 //ȡIPϢ +#define NET_DVR_GET_IPALARMOUTCFG_V40 6185 //ȡIPϢ +#define NET_DVR_GET_USERCFG_V40 6187 //ȡû +#define NET_DVR_SET_USERCFG_V40 6188 //û +#define NET_DVR_GET_WORK_STATUS 6189 //ȡ豸״̬ +#define NET_DVR_GET_JPEG_CAPTURE_CFG_V40 6190 //ȡDVRץͼ +#define NET_DVR_SET_JPEG_CAPTURE_CFG_V40 6191 //DVRץͼ +#define NET_DVR_GET_HDGROUP_CFG_V40 6192 //ȡò +#define NET_DVR_SET_HDGROUP_CFG_V40 6193 //ò +#define NET_DVR_GET_SMD_HOLIDAY_HANDLE 6194 //ȡܼռƻ +#define NET_DVR_SET_SMD_HOLIDAY_HANDLE 6195 //üܼռƻ +#define NET_DVR_GET_PIC_MODEL_CFG 6196 //ȡͼƬģò +#define NET_DVR_SET_PIC_MODEL_CFG 6197 //ͼƬģò +#define NET_DVR_START_LOCAL_MOUSE_EVENT 6198 //豸¼¼ +#define NET_DVR_START_SIMULARE_MOUSE_EVENT 6199 //Զģ¼ +#define NET_DVR_GET_WORK_STATUS_V50 6200 //ȡ豸״̬V50 + +//91ϵHD-SDIDVR +#define NET_DVR_GET_ACCESS_CAMERA_INFO 6201 // ȡǰϢ +#define NET_DVR_SET_ACCESS_CAMERA_INFO 6202 // ǰϢ +#define NET_DVR_PULL_DISK 6203 // ȫ +#define NET_DVR_SCAN_RAID 6204 // ɨ +// CVR 2.0.X +#define NET_DVR_GET_USER_RIGHT_CFG 6210 // ȡûȨ +#define NET_DVR_SET_USER_RIGHT_CFG 6211 // ûȨ + +#define NET_DVR_ONE_KEY_CONFIG 6212 // һCVR +#define NET_DVR_RESTART_SERVICE 6213 // CVR + +#define NET_DVR_GET_MAX_MACHINE_NUM_CFG 6214 // ȡ +#define NET_DVR_SET_MAX_MACHINE_NUM_CFG 6215 // ñ + +#define NET_DVR_ADD_DEVICE 6216 //N+1ģʽ豸 +#define NET_DVR_DEL_DEVICE 6217 //N+1ģʽɾ豸 + +#define NET_DVR_GET_DATA_CALLBACK_CFG 6218 // ȡݻǨ״̬ +#define NET_DVR_SET_DATA_CALLBACK_CFG 6219 // ݻǨ״̬ + +#define NET_DVR_CLONE_LUN 6220 //¡LUN +#define NET_DVR_EXPAND_LUN 6221 //չLUN + +#define NET_DVR_GET_N_PLUS_ONE_DEVICE_INFO 6222 //ȡN+1豸Ϣ +#define NET_DVR_MODIFY_DVR_NET_DISK 6223 //޸DVR +//#define NET_DVR_DEL_DVR_NET_DISK 6224 //ɾDVR + +#define NET_DVR_CREATE_NAS 6225 //NAS +#define NET_DVR_DELETE_NAS 6226 //ɾNAS + +#define NET_DVR_OPEN_ISCSI 6227 //iSCSI +#define NET_DVR_CLOSE_ISCSI 6228 //رiSCSI + +#define NET_DVR_GET_FC 6229 //ȡϢ +#define NET_DVR_OPEN_FC 6230 //FC +#define NET_DVR_CLOSE_FC 6231 //رFC +#define NET_DVR_ONE_KEY_CONFIG_SAN 6232 // һSAN, һCVR߼һ + +//CVR2.3.2 +#define NET_DVR_RECORD_CHECK 6233 //¼Լ +#define NET_DVR_ADD_RECORD_PASSBACK_TASK_MANUAL 6234 //ֶ¼ش +#define NET_DVR_GET_ALL_RECORD_PASSBACK_TASK_MANUAL 6235 //ȡֶ¼ش +#define NET_DVR_RECORD_PASSBACK_TASK_MANUAL_CTRL 6236 //ֶ¼ش +#define NET_DVR_DEL_RECORD_PASSBACK_TASK_MANUAL 6237 //ɾֶ¼ش +#define NET_DVR_GET_RECORD_PASSBACK_PLAN_CFG 6238 //ȡ¼شƻ +#define NET_DVR_SET_RECORD_PASSBACK_PLAN_CFG 6239 //¼شƻ +#define NET_DVR_GET_DEV_STORAGE_CFG 6240 //ȡ豸洢Ϣ +#define NET_DVR_GET_ONLINE_USER_CFG 6241 //ȡû +#define NET_DVR_GET_RECORD_SEGMENT_CFG 6242 //ȡ¼ + +#define NET_DVR_GET_REC_PASSBACK_TASK_EXECUTABLE 6243 //ѯֶ¼شִ +#define NET_DVR_GET_STREAM_MEDIA_CFG 6244 //ȡýش¼ãIDʽ +#define NET_DVR_SET_STREAM_MEDIA_CFG 6245 //ýش¼ãIDʽ +#define NET_DVR_GET_USERCFG_V50 6246 //ȡûV50 +#define NET_DVR_SET_USERCFG_V50 6247 //ûV50 + +#define NET_DVR_GET_RECORD_PASSBACK_BASIC_CFG_CAP 6248 //ȡCVRشܻ +#define NET_DVR_GET_RECORD_PASSBACK_BASIC_CFG 6249 //ȡCVRشܻ +#define NET_DVR_SET_RECORD_PASSBACK_BASIC_CFG 6250 //CVRشܻ +#define NET_DVR_ONE_KEY_CONFIG_V50 6251 // һCVR(V50) +#define NET_DVR_GET_RACM_CAP 6252 //ȡ洢RACM +#define NET_DVR_GET_THUMBNAILS 6253 //ȡͼĬ¼ͼ(֧ID) +#define NET_DVR_ADD_RECORD_PASSBACK_TASK_MANUAL_V50 6254 //ֶ¼شV50ID +#define NET_DVR_GET_RECORD_PASSBACK_HISTORY_PLAN_CFG_CAP 6255 //ȡCVRشʷ¼ƻ +#define NET_DVR_GET_RECORD_PASSBACK_HISTORY_PLAN_CFG 6256 //ȡCVRشʷ¼ƻ +#define NET_DVR_SET_RECORD_PASSBACK_HISTORY_PLAN_CFG 6257 //CVRشʷ¼ƻ +#define NET_DVR_ONE_KEY_CONFIG_V51 6258 // һCVR(V51) + + +#define NET_DVR_GET_RECORD_PACK 6301 //ȡ¼ +#define NET_DVR_SET_RECORD_PACK 6302 //¼ + +#define NET_DVR_GET_CLOUD_STORAGE_CFG 6303 //ȡ豸ǰģʽ +#define NET_DVR_SET_CLOUD_STORAGE_CFG 6304 //豸ǰģʽ +#define NET_DVR_GET_GOP_INFO 6305 //ȡGOPϢ +#define NET_DVR_GET_PHY_DISK_INFO 6306 //ȡϢ +//¼ⲿ +#define NET_DVR_GET_RECORDING_AUTO_TRACK_CFG 6307 //ȡSDIԶϢ +#define NET_DVR_SET_RECORDING_AUTO_TRACK_CFG 6308 //SDIԶϢ + +#define NET_DVR_GET_RECORDING_PUBLISH_CFG 6309 //ȡһϢ +#define NET_DVR_SET_RECORDING_PUBLISH_CFG 6310 //һϢ + + +#define NET_DVR_RECORDING_ONEKEY_CONTROL 6311 //¼ + +#define NET_DVR_GET_RECORDING_END_TIME 6312 //ȡ¼ʣʱ + +#define NET_DVR_RECORDING_PUBLISH 6313 //һ¼ + +#define NET_DVR_GET_CURRICULUM_CFG 6314 //ȡαϢ +#define NET_DVR_SET_CURRICULUM_CFG 6315 //ÿαϢ + +#define NET_DVR_GET_COURSE_INDEX_CFG 6316 //ȡγϢ +#define NET_DVR_SET_COURSE_INDEX_CFG 6317 //ÿγϢ + +#define NET_DVR_GET_PPT_CHANNEL 6318 //ȡPPT֧ͨ +#define NET_DVR_GET_PPT_DETECT_CFG 6319 //ȡPPT +#define NET_DVR_SET_PPT_DETECT_CFG 6320 //PPT + +#define NET_DVR_GET_RECORDINGHOST_CFG 6321 //ȡ¼Ϣ +#define NET_DVR_SET_RECORDINGHOST_CFG 6322 //¼Ϣ +#define NET_DVR_GET_BACKUP_RECORD_CFG 6323 //ȡһϢ +#define NET_DVR_SET_BACKUP_RECORD_CFG 6324 //һϢ + +//ͥ +#define NET_DVR_GET_AUDIO_ACTIVATION_CFG 6326 //ȡò +#define NET_DVR_SET_AUDIO_ACTIVATION_CFG 6327 //ò +#define NET_DVR_GET_DECODERCFG_V40 6328 //ȡϢ +#define NET_DVR_SET_DECODERCFG_V40 6329 //ýϢ + +#define NET_DVR_INFRARED_OUTPUT_CONTROL 6330 // +#define NET_DVR_GET_INFRARED_CMD_NAME_CFG 6331 //ȡƲ +#define NET_DVR_SET_INFRARED_CMD_NAME_CFG 6332 //úƲ +#define NET_DVR_START_INFRARED_LEARN 6333 //Զ̺ѧ + +#define NET_DVR_GET_TRIAL_SYSTEM_CFG 6334 //ȡͥϵͳϢ +#define NET_DVR_SET_CASE_INFO 6335 //Ϣ¼ +#define NET_DVR_GET_TRIAL_MICROPHONE_STATUS 6336 //ȡ˷״̬Ϣ +#define NET_DVR_SET_TRIAL_MICROPHONE_STATUS 6337 //ȡ˷״̬Ϣ +#define NET_DVR_GET_TRIAL_HOST_STATUS 6338 //ȡͥ״̬Ϣ +#define NET_DVR_GET_LAMP_OUT 6339 //ȡLAMPϢ +#define NET_DVR_SET_LAMP_OUT 6340 //LAMPϢ +#define NET_DVR_LAMP_REMOTE_CONTROL 6341 // LAMP +#define NET_DVR_REMOTE_CONTROL_PLAY 6342 //Զ̿Ʊػط +#define NET_DVR_GET_LOCAL_INPUT_CFG 6343 //ȡͥ״̬ϢͥϢ +#define NET_DVR_SET_LOCAL_INPUT_CFG 6344 //ͥϢ +#define NET_DVR_GET_CASE_INFO 6345 //ȡǰϢ + +//Ѷⲿ +#define NET_DVR_INQUEST_GET_CDW_STATUS 6350 //ȡѶ¼״̬- +#define NET_DVR_GET_MIX_AUDIOIN_CFG 6351 //ȡڲ +#define NET_DVR_SET_MIX_AUDIOIN_CFG 6352 //ûڲ +#define NET_DVR_GET_MIX_AUDIOOUT_CFG 6353 //ȡڲ +#define NET_DVR_SET_MIX_AUDIOOUT_CFG 6354 //ûڲ +#define NET_DVR_GET_AUDIOIN_VOLUME_CFG 6355 //ȡƵڲ +#define NET_DVR_SET_AUDIOIN_VOLUME_CFG 6356 //Ƶڲ +#define NET_DVR_GET_AREA_MASK_CFG 6357 //ȡ +#define NET_DVR_SET_AREA_MASK_CFG 6358 // +#define NET_DVR_GET_AUDIO_DIACRITICAL_CFG 6359 //ȡƵ +#define NET_DVR_SET_AUDIO_DIACRITICAL_CFG 6360 //Ƶ +#define NET_DVR_GET_WIFI_DHCP_ADDR_CFG 6361 //WIFI DHCP ַΧ +#define NET_DVR_SET_WIFI_DHCP_ADDR_CFG 6362 //WIFI DHCP ַΧ +#define NET_DVR_GET_WIFI_CLIENT_LIST_INFO 6363 //ȡwifiȵӵ豸Ϣ +#define NET_DVR_REMOTECONTROL_POWER_ON 6364 //Զ̿ +#define NET_DVR_GET_MULTISTREAM_RELATION_CHAN_CFG 6365 //ȡͨ +#define NET_DVR_SET_MULTISTREAM_RELATION_CHAN_CFG 6366 //öͨ +#define NET_DVR_GET_VIDEOOUT_RESOLUTION_CFG 6367 //ȡ豸Ƶڷֱ +#define NET_DVR_SET_VIDEOOUT_RESOLUTION_CFG 6368 //豸Ƶڷֱ +#define NET_DVR_GET_AUDIOOUT_VOLUME_CFG 6369 //ȡƵڲ +#define NET_DVR_SET_AUDIOOUT_VOLUME_CFG 6370 //Ƶڲ +#define NET_DVR_INQUEST_PAUSE_CDW 6371 //ͣ¼ +#define NET_DVR_INQUEST_RESUME_CDW 6372 //ָ¼ +#define NET_DVR_GET_INPUT_CHAN_CFG 6373 //ȡͨ +#define NET_DVR_SET_INPUT_CHAN_CFG 6374 //ͨ +#define NET_DVR_GET_INQUEST_MIX_AUDIOIN_CFG 6375 //ȡѶƵ +#define NET_DVR_SET_INQUEST_MIX_AUDIOIN_CFG 6376 //ѶƵ +#define NET_DVR_CASE_INFO_CTRL 6377 //Ϣʾ +#define NET_DVR_GET_INQUEST_USER_RIGHT 6378 //ȡѶûȨ +#define NET_DVR_SET_INQUEST_USER_RIGHT 6379 //ѶûȨ +#define NET_DVR_GET_INQUEST_CASE_INFO 6380 //ȡѶϢ +#define NET_DVR_SET_INQUEST_CASE_INFO 6381 //ѶϢ + +#define NET_DVR_GET_FILM_MODE_CFG 6387 //ȡӰģʽ +#define NET_DVR_SET_FILM_MODE_CFG 6388 //õӰģʽ +#define NET_DVR_GET_FILM_MODE_CFG_CAP 6389 //ȡӰģʽ + +#define NET_DVR_GET_DIRECTED_STRATEGY_CFG 6390 //ȡ +#define NET_DVR_SET_DIRECTED_STRATEGY_CFG 6391 //õ +#define NET_DVR_GET_DIRECTED_STRATEGY_CFG_CAP 6392 //ȡӰģʽ +#define NET_DVR_GET_FRAME_CFG 6393 //ȡ߿ +#define NET_DVR_SET_FRAME_CFG 6394 //û߿ +#define NET_DVR_GET_FRAME_CFG_CAP 6395 //ȡ߿ +#define NET_DVR_GET_AUDIO_EFFECTIVE_CFG 6396 //ȡƵŻ +#define NET_DVR_SET_AUDIO_EFFECTIVE_CFG 6397 //ƵЧ +#define NET_DVR_GET_AUDIO_EFFECTIVE_CFG_CAP 6398 //ȡƵЧŻ +#define NET_DVR_GET_RECORD_VIDEO_CFG 6399 //ȡ¼Ƶ +#define NET_DVR_SET_RECORD_VIDEO_CFG 6400 //¼Ƶ + + +#define NET_DVR_GET_OUTPUT_CFG 6401 //ȡʾ +#define NET_DVR_SET_OUTPUT_CFG 6402 //ʾ +#define NET_DVR_CODER_DISPLAY_START 6403 //ʼ +#define NET_DVR_CODER_DISPLAY_STOP 6404 //ֹͣ +#define NET_DVR_GET_WINDOW_STATUS 6405 //ȡʾ״̬ + +//VQDܽӿ +#define NET_DVR_GET_VQD_LOOP_DIAGNOSE_CFG 6406 //ȡVQDѭò +#define NET_DVR_SET_VQD_LOOP_DIAGNOSE_CFG 6407 //VQDѭò +#define NET_DVR_GET_VQD_DIAGNOSE_INFO 6408 //ֶȡVQDϢ + +#define NET_DVR_RECORDING_PUBLISH_FILE 6421 //ļ +#define NET_DVR_GET_RECORDING_PUBLISH_FILE_CAP 6422 //ȡļ +#define NET_DVR_GET_PUBLISH_PROGRESS 6423 //ȡ +#define NET_DVR_GET_RECORD_VIDEO_CFG_CAP 6424 //ȡ¼Ƶ +#define NET_DVR_GET_RTMP_CFG 6425 //ȡRTMP +#define NET_DVR_SET_RTMP_CFG 6426 //RTMP +#define NET_DVR_GET_RTMP_CFG_CAP 6427 //ȡRTMP +#define NET_DVR_DEL_BACKGROUND_PIC 6428 //ɾͼƬļ +#define NET_DVR_GET_BACKGROUND_PIC_CFG 6429 //ѯͼƬļ +#define NET_DVR_GET_BACKGROUND_PIC_INFO 6430 //ȡͼƬΪͼƬ +#define NET_DVR_SET_BACKGROUND_PIC_INFO 6431 //ͼƬΪͼƬ +#define NET_DVR_GET_BACKGROUND_PIC_INFO_CAP 6432 //ȡͼƬΪͼƬ +#define NET_DVR_GET_RECORD_HOST_CAP 6433 //ȡ¼ +#define NET_DVR_GET_COURSE_LIST 6434 //ȡγб +#define NET_DVR_GET_RECORD_STATUS 6435 //ѯ¼ǰ״̬ +#define NET_DVR_MANUAL_CURRICULUM_CONTROL 6436 //ֶα +#define NET_DVR_GET_IMAGE_DIFF_DETECTION_CFG 6437 //ȡͼּ +#define NET_DVR_SET_IMAGE_DIFF_DETECTION_CFG 6438 //ͼּ +#define NET_DVR_GET_IMAGE_DIFF_DETECTION_CFG_CAP 6439 //ȡͼּ +#define NET_DVR_GET_RECORDING_PUBLISH_FILE_INFO 6440 //ȡļϢ +#define NET_DVR_SET_RECORDING_PUBLISH_FILE_INFO 6441 //÷ļϢ +#define NET_DVR_GET_RECORDING_PUBLISH_FILE_INFO_CAP 6442 //ȡļϢ +#define NET_DVR_MANUAL_CURRICULUM_CONTROL_CAP 6443 //ȡֶγ¼ +#define NET_DVR_GET_STATISTIC_DATA_LIST 6444 //ȡͳб + +#define NET_DVR_GET_DEVICE_LAN_ENCODE 6501 //ȡ豸Ա +#define NET_DVR_GET_GBT28181_SERVICE_CFG 6503 //ȡGB28181 +#define NET_DVR_SET_GBT28181_SERVICE_CFG 6504 //GB28181 +#define NET_DVR_GET_GBT28181_SERVICE_CAPABILITIES 6505 //ȡGB28181 + +#define NET_DVR_GET_CLOUD_URL 6506 //ȡƴ洢URL +#define NET_DVR_GET_CLOUD_URL_CAP 6507 //ȡƴ洢URL- +#define NET_DVR_GET_CLOUD_CFG 6508 //ȡƴ洢ò +#define NET_DVR_SET_CLOUD_CFG 6509 //ƴ洢ò +#define NET_DVR_GET_CLOUD_CFG_CAP 6510 //ȡƴ洢- +#define NET_DVR_GET_CLOUD_UPLOADSTRATEGY 6511 //ȡƴ洢ϴ +#define NET_DVR_SET_CLOUD_UPLOADSTRATEGY 6512 //ƴ洢ϴ +#define NET_DVR_GET_CLOUDSTORAGE_UPLOADSTRATEGY_CAP 6513 //ƴ洢ϴ- + +#define NET_DVR_GET_VIDEO_IMAGE_DB_CFG 6601 //ȡͼϢ +#define NET_DVR_SET_VIDEO_IMAGE_DB_CFG 6602 //ͼϢ +#define NET_DVR_GET_VIDEO_IMAGE_DB_CFG_CAP 6603 //ȡͼ +#define NET_DVR_GET_FILE_INFO_BY_ID 6604 //ļIDȡͼļϢ +#define NET_DVR_QUERY_FILE_INFO_CAP 6605 //ļѯļϢ +#define NET_DVR_DEL_FILE_FROM_DB 6606 //ͼɾļ +#define NET_DVR_GET_VIDEO_IMAGE_DB_CAP 6607 //ȡͼ + +#define NET_DVR_GET_FIGURE 6610 //ȡͼ + +#define NET_DVR_SYNC_IPC_PASSWD 6621 //ͬIPCNVRһ +#define NET_DVR_GET_VEHICLE_BLOCKLIST_SCHEDULE 6622 //ȡֹʱ +#define NET_DVR_SET_VEHICLE_BLOCKLIST_SCHEDULE 6623 //ýֹʱ + +#define NET_DVR_GET_VEHICLE_ALLOWLIST_SCHEDULE 6624 //ȡʱ +#define NET_DVR_SET_VEHICLE_ALLOWLIST_SCHEDULE 6625 //ʱ + +#define NET_DVR_GET_VEHICLE_BLOCKLIST_EVENT_TRIGGER 6626 //ȡֹ +#define NET_DVR_SET_VEHICLE_BLOCKLIST_EVENT_TRIGGER 6627 //ýֹ + +#define NET_DVR_GET_VEHICLE_ALLOWLIST_EVENT_TRIGGER 6628 //ȡ +#define NET_DVR_SET_VEHICLE_ALLOWLIST_EVENT_TRIGGER 6629 // + +#define NET_DVR_GET_TRAFFIC_CAP 6630 //ȡץ +#define NET_DVR_GET_VEHICLE_ALLLIST_EVENT_TRIGGER 6631 //ȡȫⲼ +#define NET_DVR_SET_VEHICLE_ALLLIST_EVENT_TRIGGER 6632 //ȫⲼ +#define NET_DVR_GET_VEHICLE_OTHERLIST_EVENT_TRIGGER 6633 //ȡ +#define NET_DVR_SET_VEHICLE_OTHERLIST_EVENT_TRIGGER 6634 // + +#define NET_DVR_GET_STORAGEDETECTION_EVENT_TRIGGER 6635 //ȡ洢 +#define NET_DVR_SET_STORAGEDETECTION_EVENT_TRIGGER 6636 //ô洢 +#define NET_DVR_GET_STORAGEDETECTION_SCHEDULE_CAPABILITIES 6637 //ȡ洢Ⲽʱ +#define NET_DVR_GET_STORAGEDETECTION_SCHEDULE 6638 //ȡ洢ʱ +#define NET_DVR_SET_STORAGEDETECTION_SCHEDULE 6639 //ô洢ʱ +#define NET_DVR_GET_STORAGEDETECTION_STATE 6640 //ȡ洢״̬ + +#define NET_DVR_GET_STORAGEDETECTION_RWLOCK 6646 //ȡ洢Ķд +#define NET_DVR_GET_STORAGEDETECTION_RWLOCK_CAPABILITIES 6647 //ȡ洢Ķд +#define NET_DVR_SET_STORAGEDETECTION_RWLOCK 6648 //ô洢Ķд +#define NET_DVR_GET_PTZTRACKSTATUS 6649 //ȡ״̬ + +#define NET_DVR_SET_STORAGEDETECTION_UNLOCK 6653 //ô洢Ľ +#define NET_DVR_GET_STORAGEDETECTION_UNLOCK_CAPABILITIES 6654 //ȡ洢Ľ + +#define NET_DVR_SET_SHIPSDETECTION_CFG 6655 //ôֻ +#define NET_DVR_GET_SHIPSDETECTION_CFG 6656 //ȡֻ +#define NET_DVR_GET_SHIPSDETECTION_CAPABILITIES 6657 //ȡֻ +#define NET_DVR_GET_SHIPSDETECTION_COUNT 6658 //ȡֻϢ +#define NET_DVR_SHIPSCOUNT_DELETE_CTRL 6659 //մֻϢ + +#define NET_DVR_GET_BAREDATAOVERLAY_CAPABILITIES 6660 //ȡݵ +#define NET_DVR_SET_BAREDATAOVERLAY_CFG 6661 //ݵ +#define NET_DVR_GET_BAREDATAOVERLAY_CFG 6662 //ȡݵ +#define NET_DVR_GET_SHIPSDETECTION_SCHEDULE 6663 //ȡֻⲼʱ +#define NET_DVR_SET_SHIPSDETECTION_SCHEDULE 6664 //ôֻⲼʱ +#define NET_DVR_GET_SHIPSDETECTION_EVENT_TRIGGER 6665 //ȡֻ +#define NET_DVR_SET_SHIPSDETECTION_EVENT_TRIGGER 6666 //ôֻ +#define NET_DVR_GET_SHIPSDETECTION_SCHEDULE_CAPABILITIES 6667 //ȡֻⲼʱ + +#define NET_DVR_FIRE_FOCUSZOOM_CTRL 6670 //ɼ⾵ͷ۽䱶 + +#define NET_DVR_GET_FIREDETECTION_SCHEDULE_CAPABILITIES 6671 //ȡⲼʱ +#define NET_DVR_GET_FIREDETECTION_SCHEDULE 6672 //ȡⲼʱ +#define NET_DVR_SET_FIREDETECTION_SCHEDULE 6673 //ûⲼʱ +#define NET_DVR_GET_MANUALRANGING_CAPABILITIES 6675 //ȡֶ +#define NET_DVR_SET_MANUALRANGING 6677 //ֶ +#define NET_DVR_GET_MANUALDEICING_CAPABILITIES 6678//ȡֶ +#define NET_DVR_SET_MANUALDEICING 6679 //ֶ +#define NET_DVR_GET_MANUALDEICING 6680 //ȡֶ + +#define NET_DVR_GET_THERMALPOWER_CAPABILITIES 6689 //ȡԴ +#define NET_DVR_GET_THERMALPOWER 6690 //ȡԴò +#define NET_DVR_SET_THERMALPOWER 6691 //Դò +#define NET_DVR_GET_PTZABSOLUTEEX_CAPABILITIES 6695 //ȡ߾PTZλչ +#define NET_DVR_GET_PTZABSOLUTEEX 6696 //ȡ߾PTZλչ +#define NET_DVR_SET_PTZABSOLUTEEX 6697 //ø߾PTZλչ + +#define NET_DVR_GET_CRUISE_CAPABILITIES 6698 //ȡ豸Ѳģʽ +#define NET_DVR_GET_CRUISE_INFO 6699 //ȡ豸Ѳģʽ +#define NET_DVR_GET_TEMP_HUMI_CAPABILITIES 6700 //ʪʵʱȡ +#define NET_DVR_GET_TEMP_HUMI_INFO 6701 //ʪʵʱȡ + +#define NET_DVR_GET_MANUALTHERM_INFO 6706 //ֶʵʱȡ +#define NET_DVR_GET_MANUALTHERM_CAPABILITIES 6707 //ȡֶʵʱ +#define NET_DVR_SET_MANUALTHERM 6708 //ֶ + +//DVR96000 +#define NET_DVR_GET_ACCESSORY_CARD_INFO_CAPABILITIES 6709 //ȡϢ +#define NET_DVR_GET_ACCESSORY_CARD_INFO 6710 //ȡϢ + +#define NET_DVR_GET_THERMINTELL_CAPABILITIES 6711 //ȡȳܻ +#define NET_DVR_GET_THERMINTELL 6712 //ȡȳܻò +#define NET_DVR_SET_THERMINTELL 6713 //ȳܻò +#define NET_GET_CRUISEPOINT_V50 6714 //ȡѲ·չ +#define NET_DVR_GET_MANUALTHERM_BASIC_CAPABILITIES 6715 //ȡֶ» +#define NET_DVR_SET_MANUALTHERM_BASICPARAM 6716 //ֶ» +#define NET_DVR_GET_MANUALTHERM_BASICPARAM 6717 //ȡֶ» + +#define NET_DVR_GET_FIRESHIELDMASK_CAPABILITIES 6718 //ȡ + +#define NET_DVR_GET_HIDDEN_INFORMATION_CAPABILITIES 6720 //Ϣ +#define NET_DVR_GET_HIDDEN_INFORMATION 6721 //ȡϢ +#define NET_DVR_SET_HIDDEN_INFORMATION 6722 //Ϣ + +#define NET_DVR_SET_FIRESHIELDMASK_CFG 6723 //ûβ +#define NET_DVR_GET_FIRESHIELDMASK_CFG 6724 //ȡβ + +#define NET_DVR_GET_SMOKESHIELDMASK_CAPABILITIES 6725 //ȡ +#define NET_DVR_SET_SMOKESHIELDMASK_CFG 6726 //β +#define NET_DVR_GET_SMOKESHIELDMASK_CFG 6727 //ȡβ + +#define NET_DVR_GET_AREASCAN_CAPABILITIES 6728 //ȡɨ +#define NET_DVR_GET_AREASCAN_CFG 6730 //ȡɨ + +#define NET_DVR_DEL_AREASCAN_CFG 6731 //ɨɾ +#define NET_DVR_AREASCAN_INIT_CTRL 6732 //ɨ +#define NET_DVR_AREASCAN_CONFIRM_CTRL 6733 //ɨ +#define NET_DVR_AREASCAN_STOP_CTRL 6734 //ֹͣɨ +#define NET_DVR_SAVE_SCANZOOM_CTRL 6735 //ɨ豶ʣ浱ǰѧΪɨ豶 +#define NET_DVR_GET_SCANZOOM_CTRL 6736 //ȡɨ豶ʣԤеĹѧʷصǰɨ豶ʡ +#define NET_DVR_DEL_FIRESHIELDMASK_CTRL 6737 //ɾ +#define NET_DVR_DEL_SMOKESHIELDMASK_CTRL 6738 //ɾ + +#define NET_DVR_GET_DENSEFOG_EVENT_TRIGGER 6740 //ȡ +#define NET_DVR_SET_DENSEFOG_EVENT_TRIGGER 6741 //ô +#define NET_DVR_SET_DENSEFOGDETECTION_CFG 6742 //ô +#define NET_DVR_GET_DENSEFOGDETECTION_CFG 6743 //ȡ +#define NET_DVR_GET_DENSEFOGDETECTION_CAPABILITIES 6744 //ȡ + +#define NET_DVR_GET_THERMOMETRY_SCHEDULE_CAPABILITIES 6750 //ȡ¼Ⲽʱ +#define NET_DVR_GET_THERMOMETRY_SCHEDULE 6751 //ȡ¼Ⲽʱ +#define NET_DVR_SET_THERMOMETRY_SCHEDULE 6752 //ò¼Ⲽʱ +#define NET_DVR_GET_TEMPERTURE_SCHEDULE_CAPABILITIES 6753 //ȡ²ʱ +#define NET_DVR_GET_TEMPERTURE_SCHEDULE 6754 //ȡ²ʱ +#define NET_DVR_SET_TEMPERTURE_SCHEDULE 6755 //²ʱ +#define NET_DVR_GET_SEARCH_LOG_CAPABILITIES 6756 //־֧ +#define NET_DVR_GET_VEHICLEFLOW 6758 //ȡ +#define NET_DVR_GET_IPADDR_FILTERCFG_V50 6759 //ȡIPַ˲չ +#define NET_DVR_SET_IPADDR_FILTERCFG_V50 6760 //IPַ˲չ +#define NET_DVR_GET_TEMPHUMSENSOR_CAPABILITIES 6761 //ȡʪȴ +#define NET_DVR_GET_TEMPHUMSENSOR 6762 //ȡʪȴЭ +#define NET_DVR_SET_TEMPHUMSENSOR 6763 //ʪȴЭ + +#define NET_DVR_GET_THERMOMETRY_MODE_CAPABILITIES 6764 //ȡģʽ +#define NET_DVR_GET_THERMOMETRY_MODE 6765 //ȡģʽ +#define NET_DVR_SET_THERMOMETRY_MODE 6766 //òģʽ + +#define NET_DVR_GET_THERMAL_PIP_CAPABILITIES 6767 //ȡȳл +#define NET_DVR_GET_THERMAL_PIP 6768 //ȡȳлò +#define NET_DVR_SET_THERMAL_PIP 6769 //ȳлò +#define NET_DVR_GET_THERMAL_INTELRULEDISPLAY_CAPABILITIES 6770 //ȡȳܹʾ +#define NET_DVR_GET_THERMAL_INTELRULE_DISPLAY 6771 //ȡȳܹʾ +#define NET_DVR_SET_THERMAL_INTELRULE_DISPLAY 6772 //ȳܹʾ +#define NET_DVR_GET_THERMAL_ALGVERSION 6773 //ȡȳ㷨汾 +#define NET_DVR_GET_CURRENT_LOCK_CAPABILITIES 6774 //ȡ +#define NET_DVR_GET_CURRENT_LOCK 6775 //ȡò +#define NET_DVR_SET_CURRENT_LOCK 6776 //õò + +#define NET_DVR_DEL_MANUALTHERM_RULE 6778 //ɾֶ¹ + +#define NET_DVR_GET_UPGRADE_INFO 6779 //ȡϢ + +#define NET_DVR_SWITCH_TRANSFER 7000 + +#define NET_DVR_GET_MB_POWERCTRLPARA 8000//ȡƲ +#define NET_DVR_SET_MB_POWERCTRLPARA 8001 //Ʋ +#define NET_DVR_GET_AUTOBACKUPPARA 8002//ȡԶݲ +#define NET_DVR_SET_AUTOBACKUPPARA 8003 //Զݲ +#define NET_DVR_GET_MB_GPSPARA 8004//ȡGPS +#define NET_DVR_SET_MB_GPSPARA 8005 //GPS +#define NET_DVR_GET_MB_SENSORINPARA 8006//ȡSENSOR +#define NET_DVR_SET_MB_SENSORINPARA 8007 //SENSOR +#define NET_DVR_GET_GSENSORPARA 8008//ȡGSENSOR +#define NET_DVR_SET_GSENSORPARA 8009 //GSENSOR +#define NET_DVR_GET_MB_DOWNLOADSVRPARA 8010//ȡط +#define NET_DVR_SET_MB_DOWNLOADSVRPARA 8011//ط +#define NET_DVR_GET_PLATERECOG_PARA 8012//ȡʶ +#define NET_DVR_SET_PLATERECOG_PARA 8013//óʶ +#define NET_DVR_GET_ENFORCESYS_PARA 8014//ȡ +#define NET_DVR_SET_ENFORCESYS_PARA 8015//ó +#define NET_DVR_GET_GPS_DATA 8016 //ȡGPS +#define NET_DVR_GET_ANALOG_ALARMINCFG 8017//ȡģⱨ +#define NET_DVR_SET_ANALOG_ALARMINCFG 8018//ģⱨ + +#define NET_DVR_GET_SYSTEM_CAPABILITIES 8100 //ȡ豸ϵͳ +#define NET_DVR_GET_EAGLEEYE_CAPABILITIES 8101 //ȡ豸ӥ +#define NET_DVR_GET_SLAVECAMERA_CALIB_V51 8102 //ȡ궨V51 +#define NET_DVR_SET_SLAVECAMERA_CALIB_V51 8103 //ô궨V51 +#define NET_DVR_SET_GOTOSCENE 8105 //תָijID + +//IKEϵNVRƷ +#define NET_DVR_GET_PTZ_NOTIFICATION 8201//ȡͨ¼PTZ +#define NET_DVR_SET_PTZ_NOTIFICATION 8202//öͨ¼PTZ +/*****************************ǽ start****************************/ +#define NET_DVR_MATRIX_WALL_SET 9001 //õǽĻ +#define NET_DVR_MATRIX_WALL_GET 9002 //ȡǽĻ +#define NET_DVR_WALLWIN_GET 9003 //ǽлȡڲ +#define NET_DVR_WALLWIN_SET 9004 //ǽôڲ +#define NET_DVR_WALLWINPARAM_SET 9005 //õǽز +#define NET_DVR_WALLWINPARAM_GET 9006 //ȡǽز +#define NET_DVR_WALLSCENEPARAM_GET 9007 //óģʽ +#define NET_DVR_WALLSCENEPARAM_SET 9008 //ȡģʽ +#define NET_DVR_MATRIX_GETWINSTATUS 9009 //ȡڽ״̬ +#define NET_DVR_GET_WINASSOCIATEDDEVINFO 9010 //ǽлȡӦԴϢ +#define NET_DVR_WALLOUTPUT_GET 9011 //ǽлȡʾ +#define NET_DVR_WALLOUTPUT_SET 9012 //ǽʾ +#define NET_DVR_GET_UNITEDMATRIXSYSTEM 9013 //ǽлȡӦԴ +#define NET_DVR_GET_WALL_CFG 9014 //ȡǽȫֲ +#define NET_DVR_SET_WALL_CFG 9015 //õǽȫֲ +#define NET_DVR_CLOSE_ALL_WND 9016 //رд +#define NET_DVR_SWITCH_WIN_TOP 9017 //ö +#define NET_DVR_SWITCH_WIN_BOTTOM 9018 //õ + +#define NET_DVR_CLOSE_ALL_WND_V41 9019 //ǽرдv41жǽ +#define NET_DVR_GET_WALL_WINDOW_V41 9020 //ȡǽеĴv41 +#define NET_DVR_SET_WALL_WINDOW_V41 9021 //õǽеĴv41 +#define NET_DVR_GET_CURRENT_SCENE_V41 9022 //ȡǰǽʹõijv41 +#define NET_DVR_GET_WALL_SCENE_PARAM_V41 9023 //ȡǰǽʹõijv41 +#define NET_DVR_SET_WALL_SCENE_PARAM_V41 9024 //õǰǽʹõijv41 +#define NET_DVR_GET_MATRIX_LOGO_CFG 9025 //ȡlogo +#define NET_DVR_SET_MATRIX_LOGO_CFG 9026 //logo +#define NET_DVR_GET_WIN_LOGO_CFG 9027 //ȡlogo +#define NET_DVR_SET_WIN_LOGO_CFG 9028 //ôlogo +#define NET_DVR_DELETE_LOGO 9029 //ɾlogo +#define NET_DVR_SET_DISPLAY_EFFECT_CFG 9030 //ʾЧv41 +#define NET_DVR_GET_DISPLAY_EFFECT_CFG 9031 //ȡʾЧv41 +#define NET_DVR_DEC_PLAY_REMOTE_FILE 9032 //벥Զļ +#define NET_DVR_DEC_PLAY_REMOTE_FILE_V50 9314 //벥ԶļV50 +#define NET_DVR_GET_WIN_ZOOM_STATUS 9033 //ȡڵӷŴ״̬ +#define NET_DVR_GET_ALL_MATRIX_LOGOCFG 9034 //ȡlogo + +/*****************************ǽ end******************************/ + +/*******************************LCDƴ begin******************************************/ +#define NET_DVR_SIMULATE_REMOTE_CONTROL 9035 //ģңذ 2013-09-05 +#define NET_DVR_SET_SCREEN_SIGNAL_CFG 9036 //ĻźԴ +#define NET_DVR_GET_SCREEN_SIGNAL_CFG 9037 //ȡĻźԴ +#define NET_DVR_SET_SCREEN_SPLICE_CFG 9038 //Ļƴ +#define NET_DVR_GET_SCREEN_SPLICE_CFG 9039 //ȡĻƴ +#define NET_DVR_GET_SCREEN_FAN_WORK_MODE 9040 //ȡȹʽ +#define NET_DVR_SET_SCREEN_FAN_WORK_MODE 9041 //÷ȹʽ +#define NET_DVR_SHOW_SCREEN_WORK_STATUS 9044 //ʾĻ״̬ +#define NET_DVR_GET_VGA_CFG 9045 //ȡVGAź +#define NET_DVR_SET_VGA_CFG 9046 //VGAź +#define NET_DVR_GET_SCREEN_MENU_CFG 9048 //ȡĻ˵ +#define NET_DVR_SET_SCREEN_MENU_CFG 9049 //Ļ˵ +#define NET_DVR_SET_SCREEN_DISPLAY_CFG 9050 //ʾ 2013-08-28 +#define NET_DVR_GET_SCREEN_DISPLAY_CFG 9051 //ȡʾ 2013-08-28 + +#define NET_DVR_SET_FUSION_CFG 9052 //ͼںϲ +#define NET_DVR_GET_FUSION_CFG 9053 //ȡͼںϲ + +#define NET_DVR_SET_PIP_CFG 9060 //ûл +#define NET_DVR_GET_PIP_CFG 9061 //ȡл +#define NET_DVR_SET_DEFOG_LCD 9073 //͸ +#define NET_DVR_GET_DEFOG_LCD 9074 //ȡ͸ +#define NET_DVR_SHOW_IP 9075 //ʾIP +#define NET_DVR_SCREEN_MAINTENANCE_WALL 9076 //Ļάǽ +#define NET_DVR_SET_SCREEN_POS 9077 //Ļλò +#define NET_DVR_GET_SCREEN_POS 9078 //ȡĻλò +/*******************************LCDƴ end******************************************/ + +/*******************************LCDƴV1.2 begin******************************************/ +#define NET_DVR_SCREEN_INDEX_SET 9079 //Ļز +#define NET_DVR_SCREEN_INDEX_GET 9080 //Ļزȡ +#define NET_DVR_SCREEN_SPLICE_SET 9081 //ĻƴӲ +#define NET_DVR_SCREEN_SPLICE_GET 9082 //ȡĻƴӲ +#define NET_DVR_SET_SCREEN_PARAM 9083 //Ļز +#define NET_DVR_GET_SCREEN_PARAM 9084 //ȡĻز +#define NET_DVR_SET_SWITCH_CFG 9085 //öʱػ +#define NET_DVR_GET_SWITCH_CFG 9086 //ȡʱػ +#define NET_DVR_SET_POWERON_DELAY_CFG 9087 //ʱ +#define NET_DVR_GET_POWERON_DELAY_CFG 9088 //ȡʱ +#define NET_DVR_SET_SCREEN_POSITION 9089 //Ļλò +#define NET_DVR_GET_SCREEN_POSITION 9090 //ȡĻλò +#define NET_DVR_SCREEN_SCENE_CONTROL 9091 //Ļ +#define NET_DVR_GET_CURRENT_SCREEN_SCENE 9092 //ȡǰĻ +#define NET_DVR_GET_SCREEN_SCENE_PARAM 9093 //ȡĻģʽ +#define NET_DVR_SET_SCREEN_SCENE_PARAM 9094 //Ļģʽ +#define NET_DVR_GET_EXTERNAL_MATRIX_RELATION 9095 //ȡӾϵ +#define NET_DVR_GET_LCD_AUDIO_CFG 9096 //ȡLCDĻƵ +#define NET_DVR_SET_LCD_AUDIO_CFG 9097 //LCDĻƵ +#define NET_DVR_GET_LCD_WORK_STATE 9098 //ȡLCDĻ״̬ +#define NET_DVR_GET_BOOT_LOGO_CFG 9099 //ȡLCDĻlogoʾ +#define NET_DVR_SET_BOOT_LOGO_CFG 9100 //LCDĻlogoʾ + +/*******************************LCDƴV1.2 end ******************************************/ +#define NET_DVR_GET_STREAM_DST_COMPRESSIONINFO 9101 //ȡĿѹ +#define NET_DVR_SET_STREAM_DST_COMPRESSIONINFO 9102 //Ŀѹ +#define NET_DVR_GET_STREAM_TRANS_STATUS 9103 //ȡ״̬ +#define NET_DVR_GET_DEVICE_TRANS_STATUS 9104 //ȡ豸ת״̬ +#define NET_DVR_GET_ALLSTREAM_SRC_INFO 9105 //ȡϢ +#define NET_DVR_GET_BIG_SCREEN_AUDIO 9106 //ȡƵϢ +#define NET_DVR_SET_BIG_SCREEN_AUDIO 9107 //ôƵϢ +#define NET_DVR_GET_DEV_WORK_MODE 9108 //ȡת豸ģʽ +#define NET_DVR_SET_DEV_WORK_MODE 9109 //ת豸ģʽ +#define NET_DVR_APPLY_TRANS_CHAN 9110 //IDתͨ +#define NET_DVR_GET_DISPCHAN_CFG 9111 //ȡʾͨ +#define NET_DVR_SET_DISPCHAN_CFG 9112 //ʾͨ + +#define NET_DVR_GET_DEC_CHAN_STATUS 9113 //ȡͨ״̬ +#define NET_DVR_GET_DISP_CHAN_STATUS 9114 //ȡʾͨ״̬ +#define NET_DVR_GET_ALARMIN_STATUS 9115 //ȡ״̬ +#define NET_DVR_GET_ALARMOUT_STATUS 9116 //ȡ״̬ +#define NET_DVR_GET_AUDIO_CHAN_STATUS 9117 //ȡԽ״̬ + +#define NET_DVR_GET_VIDEO_AUDIOIN_CFG 9118 //ȡƵƵ +#define NET_DVR_SET_VIDEO_AUDIOIN_CFG 9119 //ƵƵ + +#define NET_DVR_SET_BASEMAP_CFG 9120 //õͼ +#define NET_DVR_GET_BASEMAP_CFG 9121 //ȡͼ +#define NET_DVR_GET_VIRTUAL_SCREEN_CFG 9122 //ȡϵͳ +#define NET_DVR_SET_VIRTUAL_SCREEN_CFG 9123 //óϵͳ +#define NET_DVR_GET_BASEMAP_WIN_CFG 9124 //ȡͼڲ +#define NET_DVR_SET_BASEMAP_WIN_CFG 9125 //õͼڲ +#define NET_DVR_DELETE_PICTURE 9126 //ɾͼ +#define NET_DVR_GET_BASEMAP_PIC_INFO 9127 //ȡͼͼƬϢ +#define NET_DVR_SET_BASEMAP_WIN_CFG_V40 9128 //õͼڲV40 +#define NET_DVR_GET_BASEMAP_WIN_CFG_V40 9129 //ȡͼڲV40 + +#define NET_DVR_GET_DEC_VCA_CFG 9130 //ȡܱ +#define NET_DVR_SET_DEC_VCA_CFG 9131 //ýܱ + +#define NET_DVR_SET_VS_INPUT_CHAN_INIT_ALL 9132 //ʼӰͨ +#define NET_DVR_GET_VS_INPUT_CHAN_INIT_ALL 9133 //ȡӰͨijʼ +#define NET_DVR_GET_VS_INPUT_CHAN_INIT 9134 //ȡͨijʼ +#define NET_DVR_GET_VS_INPUT_CHAN_CFG 9135 //ȡͨò + +#define NET_DVR_GET_TERMINAL_CONFERENCE_STATUS 9136 //ȡն˻״̬ +#define NET_DVR_GET_TERMINAL_INPUT_CFG_CAP 9137 //ȡն +#define NET_DVR_GET_TERMINAL_INPUT_CFG 9138 //ȡնƵ +#define NET_DVR_SET_TERMINAL_INPUT_CFG 9139 //նƵ + +#define NET_DVR_GET_CONFERENCE_REGION_CAP 9140 //ȡն˻ +#define NET_DVR_GET_CONFERENCE_REGION 9141 //ȡն˻ +#define NET_DVR_SET_CONFERENCE_REGION 9142 //ն˻ +#define NET_DVR_GET_TERMINAL_CALL_CFG_CAP 9143 //ȡն˺ +#define NET_DVR_GET_TERMINAL_CALL_CFG 9144 //ȡն˺в +#define NET_DVR_SET_TERMINAL_CALL_CFG 9145 //ն˺в +#define NET_DVR_GET_TERMINAL_CTRL_CAP 9146 //ȡն˺п +#define NET_DVR_TERMINAL_CTRL 9147 //ն˺п +#define NET_DVR_GET_CALL_QUERY_CAP 9148 //ȡ +#define NET_DVR_GET_CALLINFO_BY_COND 9149 //ѯм¼ + +#define NET_DVR_SET_FUSION_SCALE 9150 //ͼںϹģ +#define NET_DVR_GET_FUSION_SCALE 9151 //ȡͼںϹģ + +#define NET_DVR_GET_VCS_CAP 9152 //ȡMCU + + +#define NET_DVR_GET_TERMINAL_GK_CFG_CAP 9153 //ȡնעGK +#define NET_DVR_GET_TERMINAL_GK_CFG 9154 //ȡնעGK +#define NET_DVR_SET_TERMINAL_GK_CFG 9155 //նעGK +#define NET_DVR_GET_MCU_CONFERENCESEARCH_CAP 9156 //ȡMCU豸 +#define NET_DVR_SET_VS_INPUT_CHAN_CFG 9157 //ͨò +#define NET_DVR_GET_VS_NETSRC_CFG 9158 //Դ +#define NET_DVR_SET_VS_NETSRC_CFG 9159 //Դ + +#define NET_DVR_GET_LLDP_CFG 9160 //ȡLLDP +#define NET_DVR_SET_LLDP_CFG 9161 //LLDP +#define NET_DVR_GET_LLDP_CAP 9162 //ȡLLDP +#define NET_DVR_GET_FIBER_CONVERT_BASIC_INFO 9163 //ȡշϢ +#define NET_DVR_GET_FIBER_CONVERT_WORK_STATE 9164 //ȡշ״ +#define NET_DVR_GET_FIBER_CONVERT_TOPOLOGY 9165 //ȡշϢ +#define NET_DVR_GET_FC_PORT_REMARKS 9166 //ȡշ˿עͲ +#define NET_DVR_SET_FC_PORT_REMARKS 9167 //ùշ˿עͲ +#define NET_DVR_GET_PORT_REMARKS_CAP 9168 //ȡշ˿ע + +#define NET_DVR_GET_MCU_CONFERENCECONTROL_CAP 9169 //ȡ +#define NET_DVR_GET_MCU_TERMINALCONTROL_CAP 9170 //ȡն˿ +#define NET_DVR_GET_MCU_TERIMINALGROUP_CAP 9171 //ȡն˷ +#define NET_DVR_GET_MCU_TERMINAL_CAP 9174 //ȡն˹ +#define NET_DVR_GET_MCU_CONFERENCE_CAP 9175 //ȡ +#define NET_DVR_GET_MCU_GK_CFG_CAP 9176 //ȡMCUGK +#define NET_DVR_GET_MCU_GK_SERVER_CAP 9177 //ȡMCUGK + +#define NET_DVR_GET_EDID_CFG_FILE_INFO 9178 //ȡEDIDļϢ +#define NET_DVR_GET_EDID_CFG_FILE_INFO_LIST 9179 //ȡEDIDļϢ +#define NET_DVR_SET_EDID_CFG_FILE_INFO 9180 //EDIDļϢ +#define NET_DVR_DEL_EDID_CFG_FILE_INFO 9181 //ɾEDIDļϢļ +#define NET_DVR_GET_EDID_CFG_FILE_INFO_CAP 9182 //EDIDļϢ + +#define NET_DVR_GET_SUBWND_DECODE_OSD 9183 //ȡӴڽOSDϢ +#define NET_DVR_GET_SUBWND_DECODE_OSD_ALL 9184 //ȡӴڽOSDϢ +#define NET_DVR_SET_SUBWND_DECODE_OSD 9185 //ӴڽOSDϢ +#define NET_DVR_GET_SUBWND_DECODE_OSD_CAP 9186 //ȡӴڽOSDϢ +#define NET_DVR_GET_DECODE_CHANNEL_OSD 9187 //ȡͨOSDϢ +#define NET_DVR_SET_DECODE_CHANNEL_OSD 9188 //ýͨOSDϢ + + +#define NET_DVR_GET_OUTPUT_PIC_INFO 9200 //ȡͼƬ +#define NET_DVR_SET_OUTPUT_PIC_INFO 9201 //ͼƬ +#define NET_DVR_GET_OUTPUT_PIC_WIN_CFG 9202 //ȡͼƬڲ +#define NET_DVR_SET_OUTPUT_PIC_WIN_CFG 9203 //ͼƬڲ +#define NET_DVR_GET_OUTPUT_ALL_PIC_WIN_CFG 9204 //ȡͼƬڲ +#define NET_DVR_DELETE_OUPUT_PIC 9205 //ɾͼƬ +#define NET_DVR_GET_OUTPUT_OSD_CFG 9206 //ȡOSD +#define NET_DVR_SET_OUTPUT_OSD_CFG 9207 //OSD +#define NET_DVR_GET_OUTPUT_ALL_OSD_CFG 9208 //ȡOSD +#define NET_DVR_GET_CHAN_RELATION 9209 //ȡͨԴ +#define NET_DVR_SET_CHAN_RELATION 9210 //ñͨԴ +#define NET_DVR_GET_ALL_CHAN_RELATION 9211 //ȡбͨԴ +#define NET_DVR_GET_NS_RING_CFG 9212 //ȡ˰廷 +#define NET_DVR_SET_NS_RING_CFG 9213 //ù˰廷 +#define NET_DVR_GET_NS_RING_STATUS 9214 //ȡ˰廷״̬ +#define NET_DVR_GET_OPTICAL_PORT_INFO 9220 //ȡϢ +#define NET_DVR_SET_OPTICAL_PORT_INFO 9221 //ùϢ +#define NET_DVR_GET_OPTICAL_CHAN_RELATE_CFG 9222 //ȡͨԴ +#define NET_DVR_SET_OPTICAL_CHAN_RELATE_CFG 9223 //ñͨԴ +#define NET_DVR_GET_WIN_ROAM_SWITCH_CFG 9224 //ȡοز +#define NET_DVR_SET_WIN_ROAM_SWITCH_CFG 9225 //ýοز +#define NET_DVR_START_SCREEN_CRTL 9226 //ʼĻ +#define NET_DVR_GET_SCREEN_FLIE_LIST 9227 //ȡĻļб +#define NET_DVR_GET_SCREEN_FILEINFO 9228 //ȡĻļϢ +#define NET_DVR_SET_SCREEN_FILEINFO 9229 //ĻļϢ + +/*******************************СLEDʾ begin***************************************/ +#define NET_DVR_GET_LED_OUTPUT_CFG 9230 //ȡͿ +#define NET_DVR_SET_LED_OUTPUT_CFG 9231 //÷Ϳ +#define NET_DVR_GET_LED_OUTPUT_PORT_CFG 9232 //ȡLEDͿ˿ڲ +#define NET_DVR_SET_LED_OUTPUT_PORT_CFG 9233 //LEDͿ˿ڲ +#define NET_DVR_GET_LED_DISPLAY_AREA_CFG 9234 //ȡLEDͿʾ +#define NET_DVR_SET_LED_DISPLAY_AREA_CFG 9235 //LEDͿʾ +#define NET_DVR_GET_LED_PORT_CFG 9236 //ȡLEDͿ˿ڲ +#define NET_DVR_SET_LED_PORT_CFG 9237 //LEDͿ˿ڲ +#define NET_DVR_GET_LED_DISPLAY_CFG 9238 //ȡLEDͿʾ +#define NET_DVR_SET_LED_DISPLAY_CFG 9239 //LEDͿʾ +#define NET_DVR_GET_ALL_LED_PORT_CFG 9240 //ȡLEDͿijӦ +#define NET_DVR_SAVE_LED_CONFIGURATION 9241 //̻ +#define NET_DVR_GET_LED_TEST_SIGNAL_CFG 9242 //ȡLEDźŲ +#define NET_DVR_SET_LED_TEST_SIGNAL_CFG 9243 //LEDźŲ +#define NET_DVR_GET_LED_NOSIGNAL_CFG 9244 //ȡLEDźʾģʽ +#define NET_DVR_SET_LED_NOSIGNAL_CFG 9245 //LEDźʾģʽ +#define NET_DVR_GET_LED_INPUT_CFG 9246 //ȡLEDͿ +#define NET_DVR_SET_LED_INPUT_CFG 9247 //LEDͿ +#define NET_DVR_GET_LED_RECV_GAMMA_CFG 9248 //ȡտGAMMA +#define NET_DVR_SET_LED_RECV_GAMMA_CFG 9249 //ýտGAMMA +#define NET_DVR_GET_LED_RECV_CFG 9250 //ȡտ +#define NET_DVR_SET_LED_RECV_CFG 9251 //ýտ +#define NET_DVR_GET_LED_RECV_ADVANCED_CFG 9252 //ȡտ߼ +#define NET_DVR_SET_LED_RECV_ADVANCED_CFG 9253 //ýտ߼ +#define NET_DVR_GET_LED_SCREEN_DISPLAY_CFG 9254 //ȡLEDʾ +#define NET_DVR_SET_LED_SCREEN_DISPLAY_CFG 9255 //LEDʾ +/*******************************СLEDʾ end*****************************************/ + +#define NET_DVR_GET_INSERTPLAY_PROGRESS 9273 //ȡ岥 + +#define NET_DVR_GET_SCREEN_CONFIG 9260 //ȡĻ +#define NET_DVR_SET_SCREEN_CONFIG 9261 //Ļ +#define NET_DVR_GET_SCREEN_CONFIG_CAP 9262 //ȡĻ + +#define NET_DVR_GET_SCHEDULE_PUBLISH_PROGRESS 9271 //ȡճ̷ +#define NET_DVR_GET_PUBLISH_UPGRADE_PROGRESS 9272 //ȡϢն + +#define NET_DVR_GET_INPUT_BOARD_CFG 9281 //ȡϢ +#define NET_DVR_GET_INPUT_BOARD_CFG_LIST 9282 //ȡϢб +#define NET_DVR_SET_INPUT_BOARD_CFG 9283 //Ϣ + +#define NET_DVR_GET_INPUT_SOURCE_TEXT_CAP 9284 //ȡԴַ +#define NET_DVR_GET_INPUT_SOURCE_TEXT_CFG 9285 //ȡԴַӲ +#define NET_DVR_GET_INPUT_SOURCE_TEXT_CFG_LSIT 9286 //ȡԴַӲб +#define NET_DVR_SET_INPUT_SOURCE_TEXT_CFG 9287 //ԴַӲ +#define NET_DVR_SET_INPUT_SOURCE_TEXT_CFG_LIST 9288 //ԴַӲб +#define NET_DVR_GET_INPUT_SOURCE_RESOLUTION_CAP 9289 //ȡԴԶֱ +#define NET_DVR_GET_INPUT_SOURCE_RESOLUTION_CFG 9290 //ȡԴԶֱʲ +#define NET_DVR_GET_INPUT_SOURCE_RESOLUTION_CFG_LIST 9291 //ȡԴԶֱб +#define NET_DVR_SET_INPUT_SOURCE_RESOLUTION_CFG 9292 //ԴԶֱʲ +#define NET_DVR_SET_INPUT_SOURCE_RESOLUTION_CFG_LIST 9293 //ԴԶֱʲ +#define NET_DVR_GET_LED_AREA_INFO_LIST 9295 //ȡLEDб + +#define NET_DVR_GET_DISPINPUT_CFG 9296 //ȡʾ +#define NET_DVR_GET_DISPINPUT_CFG_LIST 9297 //ȡʾ +#define NET_DVR_SET_DISPINPUT_CFG 9298 //ʾ +#define NET_DVR_GET_DISPINPUT_CFG_CAP 9299 //ȡʾ +#define NET_DVR_GET_CURRENT_VALID_PORT 9300 //ȡǰЧ,ӵĶ˿ + +#define NET_DVR_SET_ONLINE_UPGRADE 9301 // +#define NET_DVR_GET_ONLINEUPGRADE_PROGRESS 9302 //ȡ +#define NET_DVR_GET_FIRMWARECODE 9303 //ȡʶ +#define NET_DVR_GET_ONLINEUPGRADE_SERVER 9304 //ȡ״̬ +#define NET_DVR_GET_ONLINEUPGRADE_VERSION 9305 //ȡ°汾Ϣ +#define NET_DVR_GET_RECOMMEN_VERSION 9306 //ǷƼ˰汾 +#define NET_DVR_GET_ONLINEUPGRADE_ABILITY 9309 //ȡ + +#define NET_DVR_GET_FIBER_CONVERT_BASIC_INFO_V50 9310 //ȡԶշϢV50 +#define NET_DVR_GET_FIBER_CONVERT_WORK_STATE_V50 9311 //ȡԶշ״̬ + +#define NET_SDK_LED_SCREEN_CHECK 9312 //LEDĻУ +#define NET_SDK_GENERATE_OUTPUT_CONTROL 9315 //ͨչģ +#define NET_SDK_GET_MATRIX_STATUS_V51 9313 /*ȡƵۺƽ̨״̬*/ + +//DS-19D2000-S V2.0 ò +#define NET_DVR_GET_ALARM_LINKAGE_CFG 9316 //ȡò +#define NET_DVR_SET_ALARM_LINKAGE_CFG 9317 //öò + + +#define NET_DVR_GET_RS485_WORK_MODE 10001 //ȡRS485ڹģʽ +#define NET_DVR_SET_RS485_WORK_MODE 10002 //RS485ڹģʽ +#define NET_DVR_GET_SPLITTER_TRANS_CHAN_CFG 10003 //ȡ͸ͨ +#define NET_DVR_SET_SPLITTER_TRANS_CHAN_CFG 10004 //͸ͨ + +#define NET_DVR_GET_RS485_PROTOCOL_VERSION 10301 //ȡRS485Э汾Ϣ +#define NET_DVR_ALARMHOST_REGISTER_DETECTOR 10302 //Զע̽ + +#define NET_DVR_GET_SIP_CFG 11001 //IPӻȡSIP +#define NET_DVR_SET_SIP_CFG 11002 //IPӻSIP +#define NET_DVR_GET_IP_VIEW_DEVCFG 11003 //ȡIPԽֻ +#define NET_DVR_SET_IP_VIEW_DEVCFG 11004 //IPԽֻ +#define NET_DVR_GET_IP_VIEW_AUDIO_CFG 11005 //ȡIPԽֻƵ +#define NET_DVR_SET_IP_VIEW_AUDIO_CFG 11006 //IPԽֻƵ +#define NET_DVR_GET_IP_VIEW_CALL_CFG 11007 //ȡIPԽֻв +#define NET_DVR_SET_IP_VIEW_CALL_CFG 11008 //IPԽֻв +#define NET_DVR_GET_AUDIO_LIMIT_ALARM_CFG 11009 //ȡò +#define NET_DVR_SET_AUDIO_LIMIT_ALARM_CFG 11010 //ò +#define NET_DVR_GET_BUTTON_DOWN_ALARM_CFG 11011 //ȡť¸澯ò +#define NET_DVR_SET_BUTTON_DOWN_ALARM_CFG 11012 //ðť¸澯ò + +#define NET_DVR_GET_ISCSI_CFG 11070 // ȡISCSI洢Э +#define NET_DVR_SET_ISCSI_CFG 11071 // ȡISCSI洢Э + +#define NET_DVR_GET_SECURITYMODE 12004 //ȡǰȫģʽ +//2013-11-21 ȡ豸ǰ¶Ⱥʪ +#define NET_DVR_GET_TEMP_HUMI 12005 + +//2014-02-15 IPCԶĿ +#define NET_DVR_SET_ALARMSOUNDMODE 12006 //ñģʽ +#define NET_DVR_GET_ALARMSOUNDMODE 12007 //ȡģʽ + +#define NET_DVR_SET_IPDEVICE_ACTIVATED 13000//ͨNVRǰ豸 +#define NET_DVR_GET_DIGITAL_CHAN_SECURITY_STATUS 13001 //ȡͨӦ豸ȫ״̬ +#define NET_DVR_GET_ACTIVATE_IPC_ABILITY 13003 //ȡNVRIPC + + +/*******************************¥ӶԽ start***********************************/ +#define NET_DVR_GET_VIDEO_INTERCOM_DEVICEID_CFG 16001 //ȡӶԽ豸 +#define NET_DVR_SET_VIDEO_INTERCOM_DEVICEID_CFG 16002 //ÿӶԽ豸 +#define NET_DVR_SET_PRIVILEGE_PASSWORD 16003 //ȨϢ +#define NET_DVR_GET_OPERATION_TIME_CFG 16004 //ȡʱ +#define NET_DVR_SET_OPERATION_TIME_CFG 16005 //òʱ +#define NET_DVR_GET_VIDEO_INTERCOM_RELATEDEV_CFG 16006 //ȡ豸 +#define NET_DVR_SET_VIDEO_INTERCOM_RELATEDEV_CFG 16007 //ù豸 +#define NET_DVR_REMOTECONTROL_NOTICE_DATA 16008 //Ϣ· +#define NET_DVR_REMOTECONTROL_GATEWAY 16009 //Զ̿ +#define NET_DVR_REMOTECONTROL_OPERATION_AUTH 16010 //Ȩ֤ + +#define NET_DVR_GET_VIDEO_INTERCOM_IOIN_CFG 16016 //ȡIO +#define NET_DVR_SET_VIDEO_INTERCOM_IOIN_CFG 16017 //IO +#define NET_DVR_GET_VIDEO_INTERCOM_IOOUT_CFG 16018 //ȡIO +#define NET_DVR_SET_VIDEO_INTERCOM_IOOUT_CFG 16019 //IO +#define NET_DVR_GET_ELEVATORCONTROL_CFG 16020 //ȡݿ +#define NET_DVR_SET_ELEVATORCONTROL_CFG 16021 //ݿ +#define NET_DVR_GET_VIDEOINTERCOM_STREAM 16022 //ȡӶԽͨ +#define NET_DVR_SET_VIDEOINTERCOM_STREAM 16023 //ÿӶԽͨ +#define NET_DVR_GET_WDR_CFG 16024 //ȡ̬ +#define NET_DVR_SET_WDR_CFG 16025 //ÿ̬ +#define NET_DVR_GET_VIS_DEVINFO 16026 //ȡ豸Ϣ +#define NET_DVR_GET_VIS_REGISTER_INFO 16027 //ȡ豸ע豸Ϣ +#define NET_DVR_GET_ELEVATORCONTROL_CFG_V40 16028 //ȡݿ-չ +#define NET_DVR_SET_ELEVATORCONTROL_CFG_V40 16029 //ݿ-չ +#define NET_DVR_GET_CALL_ROOM_CFG 16030 //ȡס +#define NET_DVR_SET_CALL_ROOM_CFG 16031 //ðס +#define NET_DVR_VIDEO_CALL_SIGNAL_PROCESS 16032 //ӻԽ +#define NET_DVR_GET_CALLER_INFO 16033 //ȡгϢ +#define NET_DVR_GET_CALL_STATUS 16034 //ȡͨ״̬ +#define NET_DVR_GET_SERVER_DEVICE_INFO 16035 //ȡ豸б +#define NET_DVR_SET_CALL_SIGNAL 16036 //ӶԽֻ˷ +#define NET_DVR_GET_VIDEO_INTERCOM_ALARM_CFG 16037 //ȡӶԽ¼ +#define NET_DVR_SET_VIDEO_INTERCOM_ALARM_CFG 16038 //ÿӶԽ¼ +#define NET_DVR_GET_RING_LIST 16039 //ѯб + +#define NET_DVR_GET_ROOM_CUSTOM_CFG 16040 //Զȡ +#define NET_DVR_SET_ROOM_CUSTOM_CFG 16041 //Զ +#define NET_DVR_GET_ELEVATORCONTROL_CFG_V50 16042 //ȡݿV50 +#define NET_DVR_SET_ELEVATORCONTROL_CFG_V50 16043 //ݿV50 +#define NET_DVR_GET_SIP_CFG_V50 16044 //ȡSIPV50 +#define NET_DVR_SET_SIP_CFG_V50 16045 //SIPV50 +#define NET_DVR_GET_NOTICE_VIDEO_DATA 16050 //Ƶȡ + +/*******************************¥ӶԽ end***********************************/ + +#define NET_DVR_DEBUGINFO_START 18000 //豸Ϣ +#define NET_DVR_AUTO_TEST_START 18001 //ԶԳӻȡ + +#define NET_DVR_GET_SELFCHECK_RESULT 20000 //ȡ豸Լ +#define NET_DVR_SET_TEST_COMMAND 20001 //òԿ +#define NET_DVR_SET_TEST_DEVMODULE 20002 //òӲģ +#define NET_DVR_GET_TEST_DEVMODULE 20003 //ȡӲģ + +#define NET_DVR_SET_AUTOFOCUS_TEST 20004 //ԶԽ 2013-10-26 +#define NET_DVR_CHECK_USER_STATUS 20005 //ûǷ +#define NET_DVR_GET_TEST_COMMAND 20010 //ȡԿ +#define NET_DVR_GET_DIAL_SWITCH_CFG 20200 //ȡ뿪Ϣ +#define NET_DVR_SET_AGING_TRICK_SCAN 20201 //ϻǰ󹤾߲ +#define NET_DVR_GET_ECCENTRIC_CORRECT_STATE 20202 //ȡȡƫУ״̬ + +#define NET_DVR_GET_THERMOMETRYRULE_TEMPERATURE_INFO 23001 //ֶȡ¹¶Ϣ + +#define NET_DVR_T1_TEST_CMD 131073 //ãͨı־ʲô.ݳȲô1024 +//ʽΪ//ָ豸Ĭϲػ + +// ֶƲ˵ģʽⲿ +#define NET_DVR_GET_MEMU_OUTPUT_MODE 155649 // ȡ˵ģʽ +#define NET_DVR_SET_MEMU_OUTPUT_MODE 155650 // ò˵ģʽ + +/***************************DS9000(_V30) end *****************************/ + +#define NET_DVR_GET_DEV_LOGIN_RET_INFO 16777200 //豸½ز + + +#define NET_DVR_GET_TEST_VERSION_HEAD 268435441 //ȡ԰汾ͷ +#define NET_DVR_SET_TEST_VERSION_HEAD 268435442 //ò԰汾ͷ +#define NET_DVR_GET_TEST_VERSION_HEAD_V1 268435443 //ȡ԰汾ͷ-ڶ +#define NET_DVR_SET_TEST_VERSION_HEAD_V1 268435444 //ò԰汾ͷ-ڶ +#define NET_DVR_GET_TEST_VERSION_HEAD_V2 268435445 //ȡ԰汾ͷ- +#define NET_DVR_SET_TEST_VERSION_HEAD_V2 268435446 //ò԰汾ͷ- + +#define NET_DVR_GET_TEST_VERSION_HEAD_ONLY_0 268435447 //ȡ԰汾ͷ,ǰһ汾 +#define NET_DVR_SET_TEST_VERSION_HEAD_ONLY_0 268435448 //ò԰汾ͷ,ǰһ汾 + + +#define MAX_LOCAL_ADDR_LEN 96 //SOCKS󱾵θ +#define MAX_COUNTRY_NAME_LEN 4 //ҼдƳ + +/************************DVR־ begin***************************/ + +/* */ +// +#define MAJOR_ALARM 0x1 +// +#define MINOR_ALARM_IN 0x1 /* */ +#define MINOR_ALARM_OUT 0x2 /* */ +#define MINOR_MOTDET_START 0x3 /* ƶⱨʼ */ +#define MINOR_MOTDET_STOP 0x4 /* ƶⱨ */ +#define MINOR_HIDE_ALARM_START 0x5 /* ڵʼ */ +#define MINOR_HIDE_ALARM_STOP 0x6 /* ڵ */ +#define MINOR_VCA_ALARM_START 0x7 /*ܱʼ*/ +#define MINOR_VCA_ALARM_STOP 0x8 /*ֹܱͣ*/ +#define MINOR_ITS_ALARM_START 0x09 // ͨ¼ʼ +#define MINOR_ITS_ALARM_STOP 0x0A // ͨ¼ +//2010-11-10 籨־ +#define MINOR_NETALARM_START 0x0b /*籨ʼ*/ +#define MINOR_NETALARM_STOP 0x0c /*籨*/ +//2010-12-16 ־"MINOR_ALARM_IN"ʹ +#define MINOR_NETALARM_RESUME 0x0d /*籨ָ*/ +//2012-4-5 IPC PIRߡȱ +#define MINOR_WIRELESS_ALARM_START 0x0e /* ߱ʼ */ +#define MINOR_WIRELESS_ALARM_STOP 0x0f /* ߱ */ +#define MINOR_PIR_ALARM_START 0x10 /* Ӧʼ */ +#define MINOR_PIR_ALARM_STOP 0x11 /* Ӧ */ +#define MINOR_CALLHELP_ALARM_START 0x12 /* ȱʼ */ +#define MINOR_CALLHELP_ALARM_STOP 0x13 /* ȱ */ +#define MINOR_IPCHANNEL_ALARMIN_START 0x14 //ͨ뿪ʼPCNVRڽյͨMINOR_ALARM_INͨ뿪ʼ10sղMINOR_ALARM_INͨ +#define MINOR_IPCHANNEL_ALARMIN_STOP 0x15 //ͨ뿪ʼͬ +#define MINOR_DETECTFACE_ALARM_START 0x16 /* ⱨʼ */ +#define MINOR_DETECTFACE_ALARM_STOP 0x17 /* ⱨ */ +#define MINOR_VQD_ALARM_START 0x18 //VQD +#define MINOR_VQD_ALARM_STOP 0x19 //VQD +#define MINOR_VCA_SECNECHANGE_DETECTION 0x1a //ⱨ 2013-07-16 + +#define MINOR_SMART_REGION_EXITING_BEGIN 0x1b //뿪⿪ʼ +#define MINOR_SMART_REGION_EXITING_END 0x1c //뿪 +#define MINOR_SMART_LOITERING_BEGIN 0x1d //ǻ⿪ʼ +#define MINOR_SMART_LOITERING_END 0x1e //ǻ + +#define MINOR_VCA_ALARM_LINE_DETECTION_BEGIN 0x20 +#define MINOR_VCA_ALARM_LINE_DETECTION_END 0x21 +#define MINOR_VCA_ALARM_INTRUDE_BEGIN 0x22 //⿪ʼ +#define MINOR_VCA_ALARM_INTRUDE_END 0x23 // +#define MINOR_VCA_ALARM_AUDIOINPUT 0x24 //Ƶ쳣 +#define MINOR_VCA_ALARM_AUDIOABNORMAL 0x25 //ǿͻ +#define MINOR_VCA_DEFOCUS_DETECTION_BEGIN 0x26 //齹⿪ʼ +#define MINOR_VCA_DEFOCUS_DETECTION_END 0x27 //齹 + +//NVR +#define MINOR_EXT_ALARM 0x28/*IPCⲿ*/ +#define MINOR_VCA_FACE_ALARM_BEGIN 0x29 /*⿪ʼ*/ +#define MINOR_SMART_REGION_ENTRANCE_BEGIN 0x2a //⿪ʼ +#define MINOR_SMART_REGION_ENTRANCE_END 0x2b // +#define MINOR_SMART_PEOPLE_GATHERING_BEGIN 0x2c //Աۼ⿪ʼ +#define MINOR_SMART_PEOPLE_GATHERING_END 0x2d //Աۼ +#define MINOR_SMART_FAST_MOVING_BEGIN 0x2e //˶⿪ʼ +#define MINOR_SMART_FAST_MOVING_END 0x2f //˶ + +#define MINOR_VCA_FACE_ALARM_END 0x30 /**/ +#define MINOR_VCA_SCENE_CHANGE_ALARM_BEGIN 0x31 /*⿪ʼ*/ +#define MINOR_VCA_SCENE_CHANGE_ALARM_END 0x32 /**/ +#define MINOR_VCA_ALARM_AUDIOINPUT_BEGIN 0x33 /*Ƶ쳣뿪ʼ*/ +#define MINOR_VCA_ALARM_AUDIOINPUT_END 0x34 /*Ƶ쳣*/ +#define MINOR_VCA_ALARM_AUDIOABNORMAL_BEGIN 0x35 /*ǿͻ⿪ʼ*/ +#define MINOR_VCA_ALARM_AUDIOABNORMAL_END 0x36 /*ǿͻ*/ + +#define MINOR_VCA_LECTURE_DETECTION_BEGIN 0x37 //ڿ⿪ʼ +#define MINOR_VCA_LECTURE_DETECTION_END 0x38 //ڿ +#define MINOR_VCA_ALARM_AUDIOSTEEPDROP 0x39 //ǿ 2014-03-21 +#define MINOR_VCA_ANSWER_DETECTION_BEGIN 0x3a //ش⿪ʼ +#define MINOR_VCA_ANSWER_DETECTION_END 0x3b //ش + +#define MINOR_SMART_PARKING_BEGIN 0x3c //ͣ⿪ʼ +#define MINOR_SMART_PARKING_END 0x3d //ͣ +#define MINOR_SMART_UNATTENDED_BAGGAGE_BEGIN 0x3e //Ʒ⿪ʼ +#define MINOR_SMART_UNATTENDED_BAGGAGE_END 0x3f //Ʒ +#define MINOR_SMART_OBJECT_REMOVAL_BEGIN 0x40 //Ʒȡ⿪ʼ +#define MINOR_SMART_OBJECT_REMOVAL_END 0x41 //Ʒȡ +#define MINOR_SMART_VEHICLE_ALARM_START 0x46 //Ƽ⿪ʼ +#define MINOR_SMART_VEHICLE_ALARM_STOP 0x47 //Ƽ +#define MINOR_THERMAL_FIREDETECTION 0x48 //ȳ⿪ʼ +#define MINOR_THERMAL_FIREDETECTION_END 0x49 //ȳ +#define MINOR_SMART_VANDALPROOF_BEGIN 0x50 //ƻ⿪ʼ +#define MINOR_SMART_VANDALPROOF_END 0x51 //ƻ + +#define MINOR_FACESNAP_MATCH_ALARM_START 0x55 /*ȶԱʼ*/ +#define MINOR_FACESNAP_MATCH_ALARM_STOP 0x56 /*ȶԱ*/ +#define MINOR_ALLOWLIST_FACESNAP_MATCH_ALARM_START 0x57 /*ȶԣİˣʼ*/ +#define MINOR_ALLOWLIST_FACESNAP_MATCH_ALARM_STOP 0x58 /*ȶԣİˣ*/ + +#define MINOR_THERMAL_SHIPSDETECTION 0x5a //ȳֻ +#define MINOR_THERMAL_THERMOMETRY_EARLYWARNING_BEGIN 0x5b //ȳԤʼ +#define MINOR_THERMAL_THERMOMETRY_EARLYWARNING_END 0x5c //ȳԤ +#define MINOR_THERMAL_THERMOMETRY_ALARM_BEGIN 0x5d //ȳ±ʼ +#define MINOR_THERMAL_THERMOMETRY_ALARM_END 0x5e //ȳ± +#define MINOR_THERMAL_THERMOMETRY_DIFF_ALARM_BEGIN 0x5f //ȳ²ʼ +#define MINOR_THERMAL_THERMOMETRY_DIFF_ALARM_END 0x60 //ȳ² +#define MINOR_FACE_THERMOMETRY_ALARM 0x63 //± +#define MINOR_SMART_DENSEFOGDETECTION_BEGIN 0x6e //⿪ʼ +#define MINOR_SMART_DENSEFOGDETECTION_END 0x6f // +#define MINOR_RUNNING_ALARM 0x70 //ܼ +#define MINOR_RETENTION_ALARM 0x71 // +#define MINOR_SAFETY_HELMET_ALARM_START 0x72 /*δȫñⱨʼ*/ +#define MINOR_SAFETY_HELMET_ALARM_STOP 0x73 /*δȫñⱨ*/ +#define MINOR_HFPD_ALARM_START 0x74 /*ƵԱⱨʼ*/ +#define MINOR_HFPD_ALARM_STOP 0x75 /*ƵԱⱨ*/ +#define MINOR_MIXED_TARGET_ALARM_START 0x76 /*Ŀⱨʼ*/ +#define MINOR_MIXED_TARGET_ALARM_STOP 0x77 /*Ŀⱨ*/ +#define MINOR_VCA_PLAY_CELLPHONE_ALARM_BEGIN 0x78 //ֻⱨʼ +#define MINOR_VCA_PLAY_CELLPHONE_ALARM_END 0x79 //ֻⱨ +#define MINOR_VCA_GET_UP_ALARM_BEGIN 0x80 //𴲼ⱨʼ +#define MINOR_VCA_GET_UP_ALARM_END 0x81 //𴲼ⱨ +#define MINOR_VCA_ADV_REACH_HEIGHT_ALARM_BEGIN 0x82 //ʸ߱ʼ +#define MINOR_VCA_ADV_REACH_HEIGHT_ALARM_END 0x83 //ʸ߱ +#define MINOR_VCA_TOILET_TARRY_ALARM_BEGIN 0x84 //޳ʱʼ +#define MINOR_VCA_TOILET_TARRY_ALARM_END 0x85 //޳ʱ +#define MINOR_HUMAN_RECOGNITION_ALARM_BEGIN 0x86 //ʶ𱨾ʼ +#define MINOR_HUMAN_RECOGNITION_ALARM_END 0x87 //ʶ𱨾 +#define MINOR_STUDENTS_STOODUP_ALARM_BEGIN 0x88 //ѧʼ +#define MINOR_STUDENTS_STOODUP_ALARM_END 0x89 //ѧ +#define MINOR_FRAMES_PEOPLE_COUNTING_ALARM 0x8a //ͳƱ +#define MINOR_FACE_SNAP_ALARM_BEGIN 0x8b //ץıʼ +#define MINOR_FACE_SNAP_ALARM_END 0x8c //ץı +#define MINOR_TEACHER_BEHAVIOR_DETECT_ALARM_BEGIN 0x8d //ʦΪⱨʼ +#define MINOR_TEACHER_BEHAVIOR_DETECT_ALARM_END 0x8e //ʦΪⱨ +#define MINOR_PERIMETER_CAPTURE_ALARM_BEGIN 0x8f //ܽץıʼ +#define MINOR_PERIMETER_CAPTURE_ALARM_END 0x90 //ܽץı +#define MINOR_UNREGISTERED_STREET_VENDOR_ALARM 0x91 //Ƿ̯ + +#define MINOR_PERSON_QUEUE_TIME_ALARM_BEGIN 0x92 //Ŷʱⱨʼ +#define MINOR_PERSON_QUEUE_TIME_ALARM_END 0x93 //Ŷʱⱨ +#define MINOR_PERSON_QUEUE_COUNTING_ALARM_BEGIN 0x94 //Ŷⱨʼ +#define MINOR_PERSON_QUEUE_COUNTING_ALARM_END 0x95 //Ŷⱨ +#define MINOR_FACE_SNAP_MATCH_FAILURE_ALARM_START 0x96 //ȶʧܱʼ +#define MINOR_FACE_SNAP_MATCH_FAILURE_ALARM_END 0x97 //ȶʧܱ + + +#define MINOR_ACCESS_CONTROLLER_EVENT 0x100 //޼ +#define MINOR_VIDEO_INTERCOM_EVENT 0x101 //ӶԽ豸¼ +#define MINOR_GJD_EVENT 0x102 //GJD¼ +#define MINOR_LUMINITE_EVENT 0x103 // LUMINITE¼ +#define MINOR_OPTEX_EVENT 0x104 // OPTEX¼ +#define MINOR_CAMERA_DETECTOR_EVENT 0x105 // ¼ +#define MINOR_SECURITY_CONTROL_PANEL_EVENT 0x106 //˽б¼ + +#define MINOR_VCA_SPACE_CHANGE_START 0x10c //쳣⿪ʼ +#define MINOR_VCA_SPACE_CHANGE_STOP 0x10d //쳣 +#define MINOR_MANUAL_ALARM 0x10e //ֶ +#define MINOR_DETECTOR_ALARM 0x10f //̽ +#define MINOR_LINKAGE_ALARM 0x110 // +#define MINOR_VCA_SITUATION_ANALYSIS_START 0x111 //̬Ʒ⿪ʼ +#define MINOR_VCA_SITUATION_ANALYSIS_STOP 0x112 //̬Ʒ +#define MINOR_FIRE_ALARM 0x113 //𾯱 +#define MINOR_SUPERVISE_ALARM 0x114 //ܱ +#define MINOR_SHIELD_ALARM 0x115 //α +#define MINOR_ABNORMAL_ALARM 0x116 //ϱ +#define MINOR_RESIDUAL_CURRENT_ALARM 0x117 //ʣ +#define MINOR_TEMPERATURE_ALARM 0x118 //¶ȱ +#define MINOR_ARC_ALARM 0x119 //绡 + +#define MINOR_VCA_YARD_TARRY_ALARM_BEGIN 0x11a //ŷ糡ʼ +#define MINOR_VCA_YARD_TARRY_ALARM_END 0x11b //ŷ糡 +#define MINOR_VCA_KEY_PERSON_GET_UP_ALARM_BEGIN 0x11c //صԱʼ +#define MINOR_VCA_KEY_PERSON_GET_UP_ALARM_END 0x11d //صԱ +#define MINOR_VCA_SIT_QUIETLY_ALARM_BEGIN 0x11e //ʼ +#define MINOR_VCA_SIT_QUIETLY_ALARM_END 0x11f // +#define MINOR_VCA_STAND_UP_ALARM_BEGIN 0x120 //վʼ +#define MINOR_VCA_STAND_UP_ALARM_END 0x121 //վ +#define MINOR_VCA_REACH_HIGHT_ALARM_BEGIN 0x122 //ʸ߱ʼ +#define MINOR_VCA_REACH_HIGHT_ALARM_END 0x123 //ʸ߱ + +#define MINOR_LFPD_ALARM_START 0x124 /*ƵԱⱨʼ*/ +#define MINOR_LFPD_ALARM_STOP 0x125 /*ƵԱⱨ*/ + +#define MINOR_DREDGERDETECTION_ALARM 0x126// ɳⱨ +#define MINOR_STUDENT_BEHAVIOR_ALARM_BEGIN 0x127 //ѧΪʼ +#define MINOR_STUDENT_BEHAVIOR_ALARM_END 0x128 //ѧΪ +#define MINOR_VCA_ALARM_VEHICLEMONITOR 0x129 //ر(ڳصһ⣨Ϣ־) +#define MINOR_WASTEGASDETECTION_ALARM 0x130// ŷż¼ϱ +#define MINOR_GREYSCALE_ALARM 0x131// Ҷȱ +#define MINOR_VIBRATION_DETECTION_ALARM_BEGIN 0x132 //ⱨʼ +#define MINOR_VIBRATION_DETECTION_ALARM_END 0x133 //ⱨ +#define MINOR_SMOKE_DETECT_ALARM_BEGIN 0x134 //̼ⱨʼ +#define MINOR_SMOKE_DETECT_ALARM_END 0x135 //̼ⱨ +#define MINOR_METHANE_CONCENTRATION_ALARM 0x136 //Ũ쳣¼ +#define MINOR_METHANE_LIGHTINTENSITY_ALARM 0x137 //ǿ쳣¼ +#define MINOR_SMOG_BEGIN 0x138 //ʼ +#define MINOR_SMOG_END 0x139 // +#define MINOR_VOCS_ALARM 0x140 //VOCs屨 + +//0x400-0x1000 Ž +#define MINOR_ALARMIN_SHORT_CIRCUIT 0x400 //· +#define MINOR_ALARMIN_BROKEN_CIRCUIT 0x401 //· +#define MINOR_ALARMIN_EXCEPTION 0x402 //쳣 +#define MINOR_ALARMIN_RESUME 0x403 //ָ +#define MINOR_HOST_DESMANTLE_ALARM 0x404 //豸𱨾 +#define MINOR_HOST_DESMANTLE_RESUME 0x405 //豸ָ +#define MINOR_CARD_READER_DESMANTLE_ALARM 0x406 //𱨾 +#define MINOR_CARD_READER_DESMANTLE_RESUME 0x407 //ָ +#define MINOR_CASE_SENSOR_ALARM 0x408 //¼뱨 +#define MINOR_CASE_SENSOR_RESUME 0x409 //¼ָ +#define MINOR_STRESS_ALARM 0x40a //вȱ +#define MINOR_OFFLINE_ECENT_NEARLY_FULL 0x40b //¼90% +#define MINOR_CARD_MAX_AUTHENTICATE_FAIL 0x40c //֤ʧܳα +#define MINOR_SD_CARD_FULL 0x40d //SD洢 +#define MINOR_LINKAGE_CAPTURE_PIC 0x40e //ץ¼ +#define MINOR_SECURITY_MODULE_DESMANTLE_ALARM 0x40f //ſذȫģ𱨾 +#define MINOR_SECURITY_MODULE_DESMANTLE_RESUME 0x410 //ſذȫģָ + +#define MINOR_POS_START_ALARM 0x411 //POS +#define MINOR_POS_END_ALARM 0x412 //POS +#define MINOR_FACE_IMAGE_QUALITY_LOW 0x413 //ͼʵ +#define MINOR_FINGE_RPRINT_QUALITY_LOW 0x414 //ָͼʵ +#define MINOR_FIRE_IMPORT_SHORT_CIRCUIT 0x415 //· +#define MINOR_FIRE_IMPORT_BROKEN_CIRCUIT 0x416 //· +#define MINOR_FIRE_IMPORT_RESUME 0x417 //ָ +#define MINOR_FIRE_BUTTON_TRIGGER 0x418 //ť +#define MINOR_FIRE_BUTTON_RESUME 0x419 //ťָ +#define MINOR_MAINTENANCE_BUTTON_TRIGGER 0x41a //άť +#define MINOR_MAINTENANCE_BUTTON_RESUME 0x41b //άťָ +#define MINOR_EMERGENCY_BUTTON_TRIGGER 0x41c //ť +#define MINOR_EMERGENCY_BUTTON_RESUME 0x41d //ťָ +#define MINOR_DISTRACT_CONTROLLER_ALARM 0x41e //ֿ𱨾 +#define MINOR_DISTRACT_CONTROLLER_RESUME 0x41f //ֿ𱨾ָ + +#define MINOR_PERSON_DENSITY_DETECTION_START 0x420 //Աܶȳֵʼ +#define MINOR_PERSON_DENSITY_DETECTION_END 0x421 //Աܶȳֵ + +#define MINOR_CHANNEL_CONTROLLER_DESMANTLE_ALARM 0x422 //ͨ𱨾 +#define MINOR_CHANNEL_CONTROLLER_DESMANTLE_RESUME 0x423 //ͨ𱨾ָ +#define MINOR_CHANNEL_CONTROLLER_FIRE_IMPORT_ALARM 0x424 //ͨ뱨 +#define MINOR_CHANNEL_CONTROLLER_FIRE_IMPORT_RESUME 0x425 //ͨ뱨ָ + +#define MINOR_HEART_RATE_ABNORMAL_BEGIN 0x426 //쳣ʼ +#define MINOR_HEART_RATE_ABNORMAL_END 0x427 //쳣 +#define MINOR_BLOOD_OXYGEN_ABNORMAL_BEGIN 0x428 //Ѫ쳣ʼ +#define MINOR_BLOOD_OXYGEN_ABNORMAL_END 0x429 //Ѫ쳣 +#define MINOR_SYSTOLIC_BLOOD_PRESSURE_ABNORMAL_BEGIN 0x42a //Ѫѹѹ쳣ʼ +#define MINOR_SYSTOLIC_BLOOD_PRESSURE_ABNORMAL_END 0x42b //Ѫѹѹ쳣 +#define MINOR_DIASTOLIC_BLOOD_PRESSURE_ABNORMAL_BEGIN 0x42c //Ѫѹѹ쳣ʼ +#define MINOR_DIASTOLIC_BLOOD_PRESSURE_ABNORMAL_END 0x42d //Ѫѹѹ쳣 +#define MINOR_VCA_LEAVE_POSITION_START 0x42e//ڼ⿪ʼ +#define MINOR_VCA_LEAVE_POSITION_STOP 0x42f//ڼ +#define MINOR_VCA_STOOODUP_START 0x430//⿪ʼ +#define MINOR_VCA_STOOODUP_STOP 0x431// +#define MINOR_VCA_PEOPLENUM_CHANGE_START 0x434//仯ʼ +#define MINOR_VCA_PEOPLENUM_CHANGE_STOP 0x435//仯 +#define MINOR_VCA_RUNNING_START 0x438//Աܿʼ +#define MINOR_VCA_RUNNING_STOP 0x439//Աܽ +#define MINOR_VCA_VIOLENT_MOTION_START 0x43a//˶ʼ +#define MINOR_VCA_VIOLENT_MOTION_STOP 0x43b//˶ +#define MINOR_VCA_FAIL_DOWN_START 0x43c//Աؿʼ +#define MINOR_VCA_FAIL_DOWN_STOP 0x43d//Աؽ +#define MINOR_VCA_RETENTION_START 0x43e//Աʼ +#define MINOR_VCA_RETENTION_STOP 0x43f//Ա + +#define MINOR_PRINTER_OUT_OF_PAPER 0x440 //ӡȱֽ +#define MINOR_LEGAL_EVENT_NEARLY_FULL 0x442 //ߺϷ¼90% +#define MINOR_FIRE_IMPORT_ALARM 0x443 //뱨 +#define MINOR_TRANSACTION_RECORD_NEARLY_FULL 0x444 //׼¼90% + +#define MINOR_ALARM_CUSTOM1 0x900 //ŽԶ屨1 +#define MINOR_ALARM_CUSTOM2 0x901 //ŽԶ屨2 +#define MINOR_ALARM_CUSTOM3 0x902 //ŽԶ屨3 +#define MINOR_ALARM_CUSTOM4 0x903 //ŽԶ屨4 +#define MINOR_ALARM_CUSTOM5 0x904 //ŽԶ屨5 +#define MINOR_ALARM_CUSTOM6 0x905 //ŽԶ屨6 +#define MINOR_ALARM_CUSTOM7 0x906 //ŽԶ屨7 +#define MINOR_ALARM_CUSTOM8 0x907 //ŽԶ屨8 +#define MINOR_ALARM_CUSTOM9 0x908 //ŽԶ屨9 +#define MINOR_ALARM_CUSTOM10 0x909 //ŽԶ屨10 +#define MINOR_ALARM_CUSTOM11 0x90a //ŽԶ屨11 +#define MINOR_ALARM_CUSTOM12 0x90b //ŽԶ屨12 +#define MINOR_ALARM_CUSTOM13 0x90c //ŽԶ屨13 +#define MINOR_ALARM_CUSTOM14 0x90d //ŽԶ屨14 +#define MINOR_ALARM_CUSTOM15 0x90e //ŽԶ屨15 +#define MINOR_ALARM_CUSTOM16 0x90f //ŽԶ屨16 +#define MINOR_ALARM_CUSTOM17 0x910 //ŽԶ屨17 +#define MINOR_ALARM_CUSTOM18 0x911 //ŽԶ屨18 +#define MINOR_ALARM_CUSTOM19 0x912 //ŽԶ屨19 +#define MINOR_ALARM_CUSTOM20 0x913 //ŽԶ屨20 +#define MINOR_ALARM_CUSTOM21 0x914 //ŽԶ屨21 +#define MINOR_ALARM_CUSTOM22 0x915 //ŽԶ屨22 +#define MINOR_ALARM_CUSTOM23 0x916 //ŽԶ屨23 +#define MINOR_ALARM_CUSTOM24 0x917 //ŽԶ屨24 +#define MINOR_ALARM_CUSTOM25 0x918 //ŽԶ屨25 +#define MINOR_ALARM_CUSTOM26 0x919 //ŽԶ屨26 +#define MINOR_ALARM_CUSTOM27 0x91a //ŽԶ屨27 +#define MINOR_ALARM_CUSTOM28 0x91b //ŽԶ屨28 +#define MINOR_ALARM_CUSTOM29 0x91c //ŽԶ屨29 +#define MINOR_ALARM_CUSTOM30 0x91d //ŽԶ屨30 +#define MINOR_ALARM_CUSTOM31 0x91e //ŽԶ屨31 +#define MINOR_ALARM_CUSTOM32 0x91f //ŽԶ屨32 +#define MINOR_ALARM_CUSTOM33 0x920 //ŽԶ屨33 +#define MINOR_ALARM_CUSTOM34 0x921 //ŽԶ屨34 +#define MINOR_ALARM_CUSTOM35 0x922 //ŽԶ屨35 +#define MINOR_ALARM_CUSTOM36 0x923 //ŽԶ屨36 +#define MINOR_ALARM_CUSTOM37 0x924 //ŽԶ屨37 +#define MINOR_ALARM_CUSTOM38 0x925 //ŽԶ屨38 +#define MINOR_ALARM_CUSTOM39 0x926 //ŽԶ屨39 +#define MINOR_ALARM_CUSTOM40 0x927 //ŽԶ屨40 +#define MINOR_ALARM_CUSTOM41 0x928 //ŽԶ屨41 +#define MINOR_ALARM_CUSTOM42 0x929 //ŽԶ屨42 +#define MINOR_ALARM_CUSTOM43 0x92a //ŽԶ屨43 +#define MINOR_ALARM_CUSTOM44 0x92b //ŽԶ屨44 +#define MINOR_ALARM_CUSTOM45 0x92c //ŽԶ屨45 +#define MINOR_ALARM_CUSTOM46 0x92d //ŽԶ屨46 +#define MINOR_ALARM_CUSTOM47 0x92e //ŽԶ屨47 +#define MINOR_ALARM_CUSTOM48 0x92f //ŽԶ屨48 +#define MINOR_ALARM_CUSTOM49 0x930 //ŽԶ屨49 +#define MINOR_ALARM_CUSTOM50 0x931 //ŽԶ屨50 +#define MINOR_ALARM_CUSTOM51 0x932 //ŽԶ屨51 +#define MINOR_ALARM_CUSTOM52 0x933 //ŽԶ屨52 +#define MINOR_ALARM_CUSTOM53 0x934 //ŽԶ屨53 +#define MINOR_ALARM_CUSTOM54 0x935 //ŽԶ屨54 +#define MINOR_ALARM_CUSTOM55 0x936 //ŽԶ屨55 +#define MINOR_ALARM_CUSTOM56 0x937 //ŽԶ屨56 +#define MINOR_ALARM_CUSTOM57 0x938 //ŽԶ屨57 +#define MINOR_ALARM_CUSTOM58 0x939 //ŽԶ屨58 +#define MINOR_ALARM_CUSTOM59 0x93a //ŽԶ屨59 +#define MINOR_ALARM_CUSTOM60 0x93b //ŽԶ屨60 +#define MINOR_ALARM_CUSTOM61 0x93c //ŽԶ屨61 +#define MINOR_ALARM_CUSTOM62 0x93d //ŽԶ屨62 +#define MINOR_ALARM_CUSTOM63 0x93e //ŽԶ屨63 +#define MINOR_ALARM_CUSTOM64 0x93f //ŽԶ屨64 +#define MINOR_LOCK_HIJIACK_FINGER_ALARM 0x950 //ٳָƱ +#define MINOR_LOCK_HIJIACK_PASSWORD_ALARM 0x951 //ٳ뱨 +#define MINOR_LOCK_PRY_DOOR_ALARM 0x952 //ű +#define MINOR_LOCK_LOCKED_ALARM 0x953 // +#define MINOR_LOCK_BATTERLOW_ALARM 0x954 //͵ѹ +#define MINOR_LOCK_BLOCKLIST_DOOR_ALARM 0x955 //ֹ +#define MINOR_LOCK_OFFLINE_ALARM 0x956 //߱ +#define MINOR_LOCK_UNCLOSED_ALARM 0x957 //ڱ +#define MINOR_LOCK_NO_HOME_ALARM 0x958 //ûδؼұ +#define MINOR_LOCK_MAGNETOMETER_ALARM 0x959 //Ŵ̽ +#define MINOR_LOCK_IR_DETECTOR_ALARM 0x95a //̽ +#define MINOR_LOCK_FP_LOCKED_ALARM 0x95b //ָ +#define MINOR_LOCK_PASSWORD_LOCKED_ALARM 0x95c // +#define MINOR_LOCK_HIJIACK_ALARM 0x95d //ٳֱ + +//2018-04-23 ͨر־ +#define MINOR_ALARMHOST_SHORT_CIRCUIT 0x1001 //· +#define MINOR_ALARMHOST_BROKEN_CIRCUIT 0x1002 //· +#define MINOR_ALARMHOST_ALARM_RESET 0x1003 //λ +#define MINOR_ALARMHOST_ALARM_NORMAL 0x1004 //ָ +#define MINOR_ALARMHOST_PASSWORD_ERROR 0x1005 //3 +#define MINOR_ALARMHOST_ID_CARD_ILLEGALLY 0x1006 //ǷӦID +#define MINOR_ALARMHOST_KEYPAD_REMOVE 0x1007 //̷ +#define MINOR_ALARMHOST_KEYPAD_REMOVE_RESTORE 0x1008 //̷λ + +#define MINOR_ALARMHOST_BELOW_ALARM_LIMIT1 0x1011 //ģڱ1 +#define MINOR_ALARMHOST_BELOW_ALARM_LIMIT2 0x1012 //ģڱ2 +#define MINOR_ALARMHOST_BELOW_ALARM_LIMIT3 0x1013 //ģڱ3 +#define MINOR_ALARMHOST_BELOW_ALARM_LIMIT4 0x1014 //ģڱ4 +#define MINOR_ALARMHOST_ABOVE_ALARM_LIMIT1 0x1015 //ģڱ1 +#define MINOR_ALARMHOST_ABOVE_ALARM_LIMIT2 0x1016 //ģڱ2 +#define MINOR_ALARMHOST_ABOVE_ALARM_LIMIT3 0x1017 //ģڱ3 +#define MINOR_ALARMHOST_ABOVE_ALARM_LIMIT4 0x1018 //ģڱ4 + +#define MINOR_ALARMHOST_VIRTUAL_DEFENCE_BANDIT 0x1021 //˾ +#define MINOR_ALARMHOST_VIRTUAL_DEFENCE_FIRE 0x1022 // +#define MINOR_ALARMHOST_VIRTUAL_DEFENCE_URGENT 0x1023 // + +#define MINOR_UPS_ALARM 0x1028 //UPS +#define MINOR_ELECTRICITY_METER_ALARM 0x1029 //ܵ +#define MINOR_SWITCH_POWER_ALARM 0x1030 //صԴ +#define MINOR_GAS_DETECT_SYS_ALARM 0x1031 //ϵͳ +#define MINOR_TRANSFORMER_TEMPRATURE_ALARM 0x1032 //Ա +#define MINOR_TEMP_HUMI_ALARM 0x1033 //ʪȴ +#define MINOR_UPS_ALARM_RESTORE 0x1034 //UPSָ +#define MINOR_ELECTRICITY_METER_ALARM_RESTORE 0x1035 //ָܵ +#define MINOR_SWITCH_POWER_ALARM_RESTORE 0x1036 //صԴָ +#define MINOR_GAS_DETECT_SYS_ALARM_RESTORE 0x1037 //ϵͳָ +#define MINOR_TRANSFORMER_TEMPRATURE_ALARM_RESTORE 0x1038 //Աָ +#define MINOR_TEMP_HUMI_ALARM_RESTORE 0x1039 //ʪȴָ +#define MINOR_WATER_LEVEL_SENSOR_ALARM 0x1040 //ˮλ +#define MINOR_WATER_LEVEL_SENSOR_ALARM_RESTORE 0x1041 //ˮλָ +#define MINOR_DUST_NOISE_ALARM 0x1042 //ﳾ +#define MINOR_DUST_NOISE_ALARM_RESTORE 0x1043 //ﳾָ +#define MINOR_ENVIRONMENTAL_LOGGER_ALARM 0x1044 //ɼDZ +#define MINOR_ENVIRONMENTAL_LOGGER_ALARM_RESTORE 0x1045 //ɼDZָ + +#define MINOR_TRIGGER_TAMPER 0x1046 //̽ +#define MINOR_TRIGGER_TAMPER_RESTORE 0x1047 //ָ̽ +#define MINOR_EMERGENCY_CALL_HELP_ALARM 0x1048 // +#define MINOR_EMERGENCY_CALL_HELP_ALARM_RESTORE 0x1049 //ָ +#define MINOR_CONSULTING_ALARM 0x1050 //ҵѯ +#define MINOR_CONSULTING_ALARM_RESTORE 0x1051 //ҵѯָ +#define MINOR_ALARMHOST_ZONE_MODULE_REMOVE 0x1052 //ģ +#define MINOR_ALARMHOST_ZONE_MODULE_RESET 0x1053 //ģλ + +#define MINOR_ALARMHOST_ALARM_WIND_SPEED_ALARM 0x1054 //ٴ澯 +#define MINOR_ALARMHOST_ALARM_WIND_SPEED_ALARM_RESTORE 0x1055 //ٴ澯ָ +#define MINOR_ALARMHOST_ALARM_GENERATE_OUTPUT_ALARM 0x1056 //ͨչģ澯 +#define MINOR_ALARMHOST_ALARM_GENERATE_OUTPUT_RESTORE 0x1057 //ͨչģ澯ָ +#define MINOR_ALARMHOST_ALARM_SOAK_ALARM 0x1058 //ˮ澯 +#define MINOR_ALARMHOST_ALARM_SOAK_ALARM_RESTORE 0x1059 //ˮ澯ָ +#define MINOR_ALARMHOST_ALARM_SOLAR_POWER_ALARM 0x1060 //̫ܴ澯 +#define MINOR_ALARMHOST_ALARM_SOLAR_POWER_ALARM_RESTORE 0x1061 //̫ܴ澯ָ +#define MINOR_ALARMHOST_ALARM_SF6_ALARM 0x1062 //SF6澯 +#define MINOR_ALARMHOST_ALARM_SF6_ALARM_RESTORE 0x1063 //SF6澯ָ +#define MINOR_ALARMHOST_ALARM_WEIGHT_ALARM 0x1064 //Ǹ澯 +#define MINOR_ALARMHOST_ALARM_WEIGHT_ALARM_RESTORE 0x1065 //Ǹ澯ָ +#define MINOR_ALARMHOST_ALARM_WEATHER_ALARM 0x1066 //ɼϵͳ澯 +#define MINOR_ALARMHOST_ALARM_WEATHER_ALARM_RESTORE 0x1067 //ɼϵͳ澯ָ +#define MINOR_ALARMHOST_ALARM_FUEL_GAS_ALARM 0x1068 //ȼϵͳ澯 +#define MINOR_ALARMHOST_ALARM_FUEL_GAS_ALARM_RESTORE 0x1069 //ȼϵͳ澯 +#define MINOR_ALARMHOST_ALARM_FIRE_ALARM 0x1070 //ֱϵͳ澯 +#define MINOR_ALARMHOST_ALARM_FIRE_ALARM_RESTORE 0x1071 //ֱϵͳ澯ָ +#define MINOR_ALARMHOST_WIRELESS_OUTPUT_MODULE_REMOVE 0x1072 //ģ +#define MINOR_ALARMHOST_WIRELESS_OUTPUT_MODULE_RESET 0x1073 //ģλ +#define MINOR_ALARMHOST_WIRELESS_REPEATER_MODULE_REMOVE 0x1074 //м + +#define MINOR_ALARMHOST_WIRELESS_SIREN_MODULE_REMOVE 0x1075 //߾ŷ +#define MINOR_ALARMHOST_WIRELESS_SIREN_MODULE_RESET 0x1076 //߾ŷλ + +#define MINOR_RS485_DEV_ALARM 0x1077 //RS485豸豸δ֪豸 +#define MINOR_RS485_DEV_RESTORE 0x1078 //RS485豸ָ豸δ֪豸 +#define MINOR_ALARMHOST_ALARM_HOST_ALARM 0x1079 // +#define MINOR_ALARMHOST_ALARM_HOST_RESTORE 0x107a //ָ + +#define MINOR_AIR_CONDITION_DEV_ALARM 0x107b //յ +#define MINOR_AIR_CONDITION_DEV_RESTORE 0x107c //յָ + +#define MINOR_ALARMHOST_WIRELESS_REPEATER_MODULE_RESET 0x107d //мλ + +#define MINOR_ALARM_ELEVATOR_BREAKDOWN 0x107e//ݹ +#define MINOR_WATER_PRESSURE_SENSOR_ALARM 0x107f //ˮѹ +#define MINOR_FLOW_SENSOR_ALARM 0x1080 // +#define MINOR_SENSOR_LINKAGE_ALARM 0x1081 // +#define MINOR_SENSOR_LINKAGE_ALARM_RESTORE 0x1082 //ָ +#define MINOR_SHELF_ABNORMAL_ALARM 0x1083 //쳣 + +//LED 0x1201 ~ 0x1300 +#define MINOR_SYSTEM_CHECK_ALARM 0x1201 //ϵͳⱨ + +/* 쳣 */ +// +#define MAJOR_EXCEPTION 0x2 +// +#define MINOR_SUBSYSTEM_ERROR 0x0a /* ϵͳ쳣 */ +#define MINOR_RAID_ERROR 0x20 /* 쳣 */ +#define MINOR_VI_LOST 0x21 /* ƵźŶʧ */ +#define MINOR_ILLEGAL_ACCESS 0x22 /* Ƿ */ +#define MINOR_HD_FULL 0x23 /* Ӳ */ +#define MINOR_HD_ERROR 0x24 /* Ӳ̴ */ +#define MINOR_DCD_LOST 0x25 /* MODEM (ʹ) */ +#define MINOR_IP_CONFLICT 0x26 /* IPַͻ */ +#define MINOR_NET_BROKEN 0x27 /* Ͽ*/ +#define MINOR_REC_ERROR 0x28 /* ¼ */ +#define MINOR_IPC_NO_LINK 0x29 /* IPC쳣 */ +#define MINOR_VI_EXCEPTION 0x2a /* Ƶ쳣(ֻģͨ) */ +#define MINOR_IPC_IP_CONFLICT 0x2b /*ipc ip ַ ͻ*/ +#define MINOR_SENCE_EXCEPTION 0x2c // 쳣 + +#define MINOR_PIC_REC_ERROR 0x2d /* ץͼ--ȡͼƬļʧ*/ +#define MINOR_VI_MISMATCH 0x2e /* Ƶʽƥ*/ +#define MINOR_RESOLUTION_MISMATCH 0x2f /*ǰ/¼ֱʲƥ */ + +//2009-12-16 Ƶۺƽ̨־ +#define MINOR_FANABNORMAL 0x31 /* Ƶۺƽ̨״̬쳣 */ +#define MINOR_FANRESUME 0x32 /* Ƶۺƽ̨״ָ̬ */ +#define MINOR_SUBSYSTEM_ABNORMALREBOOT 0x33 /* Ƶۺƽ̨6467쳣 */ +#define MINOR_MATRIX_STARTBUZZER 0x34 /* Ƶۺƽ̨dm6467쳣 */ + +//2010-01-22 Ƶۺƽ̨쳣־ +#define MINOR_NET_ABNORMAL 0x35 /*״̬쳣*/ +#define MINOR_MEM_ABNORMAL 0x36 /*ڴ״̬쳣*/ +#define MINOR_FILE_ABNORMAL 0x37 /*ļ״̬쳣*/ +#define MINOR_PANEL_ABNORMAL 0x38 /*ǰ쳣*/ +#define MINOR_PANEL_RESUME 0x39 /*ǰָ*/ +#define MINOR_RS485_DEVICE_ABNORMAL 0x3a /*RS485״̬쳣*/ +#define MINOR_RS485_DEVICE_REVERT 0x3b /*RS485״̬쳣ָ*/ + +//2012-2-18 Ӵ쳣־ +#define MINOR_SCREEN_SUBSYSTEM_ABNORMALREBOOT 0x3c //Ӱ쳣 +#define MINOR_SCREEN_SUBSYSTEM_ABNORMALINSERT 0x3d //Ӱ +#define MINOR_SCREEN_SUBSYSTEM_ABNORMALPULLOUT 0x3e //Ӱγ +#define MINOR_SCREEN_ABNARMALTEMPERATURE 0x3f //¶쳣 +//2012-07-26 Ƶۺƽ̨v2.1 +#define MINOR_HIGH_TEMPERATURE_PROTECT 0x40 //Ӱȱ + +//Netra 2.2.2 +#define MINOR_RECORD_OVERFLOW 0x41 /**/ +#define MINOR_DSP_ABNORMAL 0x42 //DSP쳣 + +//Netra 3.0.0 +#define MINOR_ANR_RECORD_FAIED 0x43 /*ANR¼ʧ*/ +#define MINOR_SPARE_WORK_DEVICE_EXCEPT 0x44 /*ȱ豸쳣*/ +#define MINOR_START_IPC_MAS_FAILED 0x45 /*IPC MASʧ*/ +// 256·NVR +#define MINOR_IPCM_CRASH 0x46 /*IPCM쳣*/ +#define MINOR_POE_POWER_EXCEPTION 0x47 /*POE 쳣*/ +#define MINOR_UPLOAD_DATA_CS_EXCEPTION 0x48 //ƴ洢ϴʧ/ +#define MINOR_DIAL_EXCEPTION 0x49 /*쳣*/ +#define MINOR_DEV_EXCEPTION_OFFLINE 0x50 //豸쳣 +#define MINOR_UPGRADEFAIL 0x51 //Զ豸ʧ +#define MINOR_AI_LOST 0x52 /* ƵźŶʧ */ +#define MINOR_SYNC_IPC_PASSWD 0x53 /* ͬIPC쳣 */ +#define MINOR_EZVIZ_OFFLINE 0x54 /* өʯ쳣*/ +#define MINOR_VQD_ABNORMAL 0x55 //VQD쳣 +#define MINOR_ACCESSORIES_PLATE 0x57 //쳣 +#define MINOR_KMS_EXPAMSION_DISK_LOST 0x58 // KMS̶ʧ +#define MINOR_ABNORMAL_PORT 0x59 // ˿쳣 +#define MINOR_CAMERA_ANGLE_ANOMALY 0x60// ӽ쳣 +#define MINOR_DATA_DISK_ERROE 0x61// ̴ +#define MINOR_INTELLIGENT_SYSTEM_RUNNING_ERROR 0x62// ϵͳ쳣 +#define MINOR_FACESNAP_RESOLUTION_OVERFLOW 0x63// ץֱʳ +#define MINOR_SMD_RESOLUTION_OVERFLOW 0x64// SMDֱʳ +#define MINOR_AUDIO_LOSS_EXCEPTION 0x65// Ƶʧ쳣 +#define MINOR_SAFETY_HELMET_EXCEPTION 0x66 //δȫñ쳣 +#define MINOR_VCA_PIC_LENGTH_OVERFLOW 0x67 // VCAͼƬȹ糬2MСͼƬ +#define MINOR_FACE_MODEL_EXCEPTION 0x68// ģͬ쳣 +#define MINOR_SSD_EXCEPTION 0x69 // SSD쳣 +//NVRȺ +#define MINOR_CLUSTER_DEVICE_OFFLINE 0x70 // Ⱥ豸 +#define MINOR_CLUSTER_CONFIG_FAILED 0x71 // Ⱥ豸ʧ +#define MINOR_CLUSTER_DISASTER_TOLERANCE_EXCEPT 0x72 // Ⱥ쳣:ȺCMѡʧ,Ⱥ洢ڲ,Ⱥ,ȺͨԴ,Ⱥ豸 +#define MINOR_CLUSTER_STORFULL_EXCEPTION 0x73 //ȺӲ +#define MINOR_CLUSTER_VERSION_EXCEPTION 0x74 //Ⱥ汾쳣 +#define MINOR_CLUSTER_OFFLINENODE_EXCEPTION 0x75 //Ⱥ +#define MINOR_CLUSTER_RECORDCYCLE_EXCEPTION 0x76 //Ⱥ¼ڲ +#define MINOR_CLUSTER_IPCTRANSFER_EXCEPTION 0x77 //ȺIPCǨʧ +#define MINOR_CLUSTER_IPCONFLICT_EXCEPTION 0x78 // ȺIPͻ¼CMIPַ + +#define MINOR_GET_SUB_STREAM_FAILURE 0x79//ȡʧ +#define MINOR_HDD_SHM_DETECT_EXCEPTION 0x7a//ӲSHM쳣 +#define MINOR_DEVICE_FORTIFY_FAILURE 0x7b//ǰ豸ʧ +#define MINOR_EVENT_UPLOAD_EXCEPTION 0x7c //¼쳣豸ϴ¼ʧܻ߶ˣ + +#define MINOR_LORA_EXCEPTION 0x7d//LoRa쳣 +#define MINOR_AK_OR_SK_IS_EMPTY 0x7e//ƴ洢Ϊ + +#define MINOR_HIGH_HD_TEMPERATURE 0x80 /*Ӳ¶ȹ*/ +#define MINOR_LOW_HD_TEMPERATURE 0x81 /*Ӳ¶ȹ*/ +#define MINOR_HD_IMPACT 0x82 /*Ӳܵ*/ +#define MINOR_HD_BAD_BLOCK 0x83 /*Ӳֻ̳*/ +#define MINOR_SEVERE_HD_FAILURE 0x84 /*Ӳع*/ +#define MINOR_RELEASE_FAILED 0x85 //Ϣʧ +#define MINOR_PORT_CONFLICT 0x86 //˿ڳͻ +#define MINOR_MODULE_STARTUP_FAILED 0x87 //ģʧ +#define MINIOR_VCA_RUNNING_EXCEPTION 0x88 //ܰ쳣 + +//0x400-0x1000 Ž쳣 +#define MINOR_DEV_POWER_ON 0x400 //豸ϵ +#define MINOR_DEV_POWER_OFF 0x401 //豸ر +#define MINOR_WATCH_DOG_RESET 0x402 //Źλ +#define MINOR_LOW_BATTERY 0x403 //صѹ +#define MINOR_BATTERY_RESUME 0x404 //صѹָ +#define MINOR_AC_OFF 0x405 //ϵ +#define MINOR_AC_RESUME 0x406 //ָ +#define MINOR_NET_RESUME 0x407 //ָ +#define MINOR_FLASH_ABNORMAL 0x408 //FLASHд쳣 +#define MINOR_CARD_READER_OFFLINE 0x409 // +#define MINOR_CARD_READER_RESUME 0x40a //߻ָ +#define MINOR_INDICATOR_LIGHT_OFF 0x40b //ָʾƹر +#define MINOR_INDICATOR_LIGHT_RESUME 0x40c //ָʾƻָ +#define MINOR_CHANNEL_CONTROLLER_OFF 0x40d //ͨ +#define MINOR_CHANNEL_CONTROLLER_RESUME 0x40e //ָͨ +#define MINOR_SECURITY_MODULE_OFF 0x40f //ſذȫģ +#define MINOR_SECURITY_MODULE_RESUME 0x410 //ſذȫģ +#define MINOR_BATTERY_ELECTRIC_LOW 0x411 //صѹ(豸ʹ) +#define MINOR_BATTERY_ELECTRIC_RESUME 0x412 //صѹָ(豸ʹ) +#define MINOR_LOCAL_CONTROL_NET_BROKEN 0x413 //͵ؿϿ +#define MINOR_LOCAL_CONTROL_NET_RSUME 0x414 //͵ؿָ +#define MINOR_MASTER_RS485_LOOPNODE_BROKEN 0x415 //RS485·ڵϿ +#define MINOR_MASTER_RS485_LOOPNODE_RESUME 0x416 //RS485·ڵָ +#define MINOR_LOCAL_CONTROL_OFFLINE 0x417 //͵ؿ +#define MINOR_LOCAL_CONTROL_RESUME 0x418 //͵ؿ߻ָ +#define MINOR_LOCAL_DOWNSIDE_RS485_LOOPNODE_BROKEN 0x419 //͵RS485·Ͽ +#define MINOR_LOCAL_DOWNSIDE_RS485_LOOPNODE_RESUME 0x41a //͵RS485·ָ +#define MINOR_DISTRACT_CONTROLLER_ONLINE 0x41b //ֿ +#define MINOR_DISTRACT_CONTROLLER_OFFLINE 0x41c //ֿ +#define MINOR_ID_CARD_READER_NOT_CONNECT 0x41d //֤Ķδӣרã +#define MINOR_ID_CARD_READER_RESUME 0x41e //֤Ķӻָרã +#define MINOR_FINGER_PRINT_MODULE_NOT_CONNECT 0x41f //ָģδӣרã +#define MINOR_FINGER_PRINT_MODULE_RESUME 0x420 //ָģӻָרã +#define MINOR_CAMERA_NOT_CONNECT 0x421 //ͷδ +#define MINOR_CAMERA_RESUME 0x422 //ͷӻָ +#define MINOR_COM_NOT_CONNECT 0x423 //COMδ +#define MINOR_COM_RESUME 0x424 //COMӻָ +#define MINOR_DEVICE_NOT_AUTHORIZE 0x425 //豸δȨ +#define MINOR_PEOPLE_AND_ID_CARD_DEVICE_ONLINE 0x426 //֤豸 +#define MINOR_PEOPLE_AND_ID_CARD_DEVICE_OFFLINE 0x427 //֤豸 +#define MINOR_LOCAL_LOGIN_LOCK 0x428 //ص¼ +#define MINOR_LOCAL_LOGIN_UNLOCK 0x429 //ص¼ +#define MINOR_SUBMARINEBACK_COMM_BREAK 0x42a //뷴DZطͨŶϿ +#define MINOR_SUBMARINEBACK_COMM_RESUME 0x42b //뷴DZطͨŻָ +#define MINOR_MOTOR_SENSOR_EXCEPTION 0x42c //򴫸쳣 +#define MINOR_CAN_BUS_EXCEPTION 0x42d //CAN쳣 +#define MINOR_CAN_BUS_RESUME 0x42e //CAN߻ָ +#define MINOR_GATE_TEMPERATURE_OVERRUN 0x42f //բǻ¶ȳ +#define MINOR_IR_EMITTER_EXCEPTION 0x430 //쳣 +#define MINOR_IR_EMITTER_RESUME 0x431 //ָ +#define MINOR_LAMP_BOARD_COMM_EXCEPTION 0x432 //ưͨ쳣 +#define MINOR_LAMP_BOARD_COMM_RESUME 0x433 //ưͨŻָ +#define MINOR_IR_ADAPTOR_COMM_EXCEPTION 0x434 //תӰͨ쳣 +#define MINOR_IR_ADAPTOR_COMM_RESUME 0x435 //תӰͨŻָ +#define MINOR_PRINTER_ONLINE 0x436 //ӡ +#define MINOR_PRINTER_OFFLINE 0x437 //ӡ +#define MINOR_4G_MOUDLE_ONLINE 0x438 //4Gģ +#define MINOR_4G_MOUDLE_OFFLINE 0x439 //4Gģ +#define MINOR_DSP_START_FAILED 0x43a //DSPʧ +#define MINOR_SMART_REGULATION_NOT_ALLOWED 0x43b //ܹ֧ +#define MINOR_AUXILIARY_BOARD_OFFLINE 0x43c // +#define MINOR_AUXILIARY_BOARD_RESUME 0x43d //߻ָ +#define MINOR_IDCARD_SECURITY_MOUDLE_EXCEPTION 0x43e //֤ȫģ쳣 +#define MINOR_IDCARD_SECURITY_MOUDLE_RESUME 0x43f //֤ȫģָ +#define MINOR_FP_PERIPHERAL_EXCEPTION 0x440 //ָƲɼ쳣 +#define MINOR_FP_PERIPHERAL_RESUME 0x441 //ָƲɼָ +#define MINOR_REPLAY_ATTACK 0x442 //ظ +#define MINOR_TLS_ABNORMAL 0x443 //TLSͨ쳣 +#define MINOR_SMART_PLATE_OFFLINE 0x444 // +#define MINOR_SMART_PLATE_ONLINE 0x445 // +#define MINOR_REFUND_LOCKED 0x446 // +#define MINOR_CODER_ONLINE 0x447 // +#define MINOR_CODER_OFFLINE 0x448 // +#define MINOR_KEYBOARD_OFFLINE 0x449 //С +#define MINOR_KEYBOARD_ONLINE 0x44a //С +#define MINOR_5G_MOUDLE_ONLINE 0x44b //5Gģ +#define MINOR_5G_MOUDLE_OFFLINE 0x44c //5Gģ +#define MINOR_EXTEND_MODULE_ONLINE 0x44d //չģߣչģ飺Ҫusbʽָ֤ƴάģ飬֧ȲΣ +#define MINOR_EXTEND_MODULE_OFFLINE 0x44e //չģߣչģ飺Ҫusbʽָ֤ƴάģ飬֧ȲΣ +#define MINOR_INTERLOCK_SERVER_DISCONNECTED 0x44f //ŻͨŶϿ +#define MINOR_INTERLOCK_SERVER_CONNECTED 0x450 //ŻͨŻָ +#define MINOR_QRCODE_READER_OFFLINE 0x451 //άĶ +#define MINOR_QRCODE_READER_ONLINE 0x452 //άĶ +#define MINOR_HEALTH_INFO_ABNORMAL_LOCK 0x453 //Ϣ쳣 +#define MINOR_HEALTH_INFO_ABNORMAL_UNLOCK 0x454 //Ϣ쳣 + +#define MINOR_EXCEPTION_CUSTOM1 0x900 //ŽԶ쳣1 +#define MINOR_EXCEPTION_CUSTOM2 0x901 //ŽԶ쳣2 +#define MINOR_EXCEPTION_CUSTOM3 0x902 //ŽԶ쳣3 +#define MINOR_EXCEPTION_CUSTOM4 0x903 //ŽԶ쳣4 +#define MINOR_EXCEPTION_CUSTOM5 0x904 //ŽԶ쳣5 +#define MINOR_EXCEPTION_CUSTOM6 0x905 //ŽԶ쳣6 +#define MINOR_EXCEPTION_CUSTOM7 0x906 //ŽԶ쳣7 +#define MINOR_EXCEPTION_CUSTOM8 0x907 //ŽԶ쳣8 +#define MINOR_EXCEPTION_CUSTOM9 0x908 //ŽԶ쳣9 +#define MINOR_EXCEPTION_CUSTOM10 0x909 //ŽԶ쳣10 +#define MINOR_EXCEPTION_CUSTOM11 0x90a //ŽԶ쳣11 +#define MINOR_EXCEPTION_CUSTOM12 0x90b //ŽԶ쳣12 +#define MINOR_EXCEPTION_CUSTOM13 0x90c //ŽԶ쳣13 +#define MINOR_EXCEPTION_CUSTOM14 0x90d //ŽԶ쳣14 +#define MINOR_EXCEPTION_CUSTOM15 0x90e //ŽԶ쳣15 +#define MINOR_EXCEPTION_CUSTOM16 0x90f //ŽԶ쳣16 +#define MINOR_EXCEPTION_CUSTOM17 0x910 //ŽԶ쳣17 +#define MINOR_EXCEPTION_CUSTOM18 0x911 //ŽԶ쳣18 +#define MINOR_EXCEPTION_CUSTOM19 0x912 //ŽԶ쳣19 +#define MINOR_EXCEPTION_CUSTOM20 0x913 //ŽԶ쳣20 +#define MINOR_EXCEPTION_CUSTOM21 0x914 //ŽԶ쳣21 +#define MINOR_EXCEPTION_CUSTOM22 0x915 //ŽԶ쳣22 +#define MINOR_EXCEPTION_CUSTOM23 0x916 //ŽԶ쳣23 +#define MINOR_EXCEPTION_CUSTOM24 0x917 //ŽԶ쳣24 +#define MINOR_EXCEPTION_CUSTOM25 0x918 //ŽԶ쳣25 +#define MINOR_EXCEPTION_CUSTOM26 0x919 //ŽԶ쳣26 +#define MINOR_EXCEPTION_CUSTOM27 0x91a //ŽԶ쳣27 +#define MINOR_EXCEPTION_CUSTOM28 0x91b //ŽԶ쳣28 +#define MINOR_EXCEPTION_CUSTOM29 0x91c //ŽԶ쳣29 +#define MINOR_EXCEPTION_CUSTOM30 0x91d //ŽԶ쳣30 +#define MINOR_EXCEPTION_CUSTOM31 0x91e //ŽԶ쳣31 +#define MINOR_EXCEPTION_CUSTOM32 0x91f //ŽԶ쳣32 +#define MINOR_EXCEPTION_CUSTOM33 0x920 //ŽԶ쳣33 +#define MINOR_EXCEPTION_CUSTOM34 0x921 //ŽԶ쳣34 +#define MINOR_EXCEPTION_CUSTOM35 0x922 //ŽԶ쳣35 +#define MINOR_EXCEPTION_CUSTOM36 0x923 //ŽԶ쳣36 +#define MINOR_EXCEPTION_CUSTOM37 0x924 //ŽԶ쳣37 +#define MINOR_EXCEPTION_CUSTOM38 0x925 //ŽԶ쳣38 +#define MINOR_EXCEPTION_CUSTOM39 0x926 //ŽԶ쳣39 +#define MINOR_EXCEPTION_CUSTOM40 0x927 //ŽԶ쳣40 +#define MINOR_EXCEPTION_CUSTOM41 0x928 //ŽԶ쳣41 +#define MINOR_EXCEPTION_CUSTOM42 0x929 //ŽԶ쳣42 +#define MINOR_EXCEPTION_CUSTOM43 0x92a //ŽԶ쳣43 +#define MINOR_EXCEPTION_CUSTOM44 0x92b //ŽԶ쳣44 +#define MINOR_EXCEPTION_CUSTOM45 0x92c //ŽԶ쳣45 +#define MINOR_EXCEPTION_CUSTOM46 0x92d //ŽԶ쳣46 +#define MINOR_EXCEPTION_CUSTOM47 0x92e //ŽԶ쳣47 +#define MINOR_EXCEPTION_CUSTOM48 0x92f //ŽԶ쳣48 +#define MINOR_EXCEPTION_CUSTOM49 0x930 //ŽԶ쳣49 +#define MINOR_EXCEPTION_CUSTOM50 0x931 //ŽԶ쳣50 +#define MINOR_EXCEPTION_CUSTOM51 0x932 //ŽԶ쳣51 +#define MINOR_EXCEPTION_CUSTOM52 0x933 //ŽԶ쳣52 +#define MINOR_EXCEPTION_CUSTOM53 0x934 //ŽԶ쳣53 +#define MINOR_EXCEPTION_CUSTOM54 0x935 //ŽԶ쳣54 +#define MINOR_EXCEPTION_CUSTOM55 0x936 //ŽԶ쳣55 +#define MINOR_EXCEPTION_CUSTOM56 0x937 //ŽԶ쳣56 +#define MINOR_EXCEPTION_CUSTOM57 0x938 //ŽԶ쳣57 +#define MINOR_EXCEPTION_CUSTOM58 0x939 //ŽԶ쳣58 +#define MINOR_EXCEPTION_CUSTOM59 0x93a //ŽԶ쳣59 +#define MINOR_EXCEPTION_CUSTOM60 0x93b //ŽԶ쳣60 +#define MINOR_EXCEPTION_CUSTOM61 0x93c //ŽԶ쳣61 +#define MINOR_EXCEPTION_CUSTOM62 0x93d //ŽԶ쳣62 +#define MINOR_EXCEPTION_CUSTOM63 0x93e //ŽԶ쳣63 +#define MINOR_EXCEPTION_CUSTOM64 0x93f //ŽԶ쳣64 +#define MINOR_SWITCH_WIRED_NETWORK 0x950 //л +#define MINOR_SWITCH_WIRELESS_NETWORK 0x951 //л +#define MINOR_LOCK_ONLINE_RESUME 0x952 //ָ + + + +//2018-04-23 ͨ쳣־ +#define MINOR_ALARMHOST_WDT_RESET 0x1003 //WDT λ +#define MINOR_ALARMHOST_RTC_EXCEPTION 0x1007 //RTCʵʱʱ쳣 + +#define MINOR_ALARMHOST_TEL_LINE_CONNECT_FAILURE 0x100a //绰Ӷ +#define MINOR_ALARMHOST_TEL_LINE_CONNECT_RESTORE 0x100b //绰ӻָ +#define MINOR_ALARMHOST_EXPANDER_BUS_LOSS 0x100c //չģ +#define MINOR_ALARMHOST_EXPANDER_BUS_RESTORE 0x100d //չģ߻ָ +#define MINOR_ALARMHOST_KEYPAD_BUS_LOSS 0x100e //ģ +#define MINOR_ALARMHOST_KEYPAD_BUS_RESTORE 0x100f //ģ߻ָ +#define MINOR_ALARMHOST_SENSOR_FAILURE 0x1010 //ģ +#define MINOR_ALARMHOST_SENSOR_RESTORE 0x1011 //ģָ +#define MINOR_ALARMHOST_RS485_CONNECT_FAILURE 0x1012 //RS485ͨӶ +#define MINOR_ALARMHOST_RS485_CONNECT_RESTORE 0x1013 //RS485ͨӶϻָ + +//쳣͡쳣ָ־Ӷϡӻָ־ʱһģû豸֧֡쳣͡쳣ָ͡ +#define MINOR_ALARMHOST_WIRED_NETWORK_ABNORMAL 0x1015 //쳣 +#define MINOR_ALARMHOST_WIRED_NETWORK_RESTORE 0x1016 //ָ +#define MINOR_ALARMHOST_GPRS_ABNORMAL 0x1017 //GPRSͨ쳣 +#define MINOR_ALARMHOST_GPRS_RESTORE 0x1018 //GPRSָ +#define MINOR_ALARMHOST_3G_ABNORMAL 0x1019 //3Gͨ쳣 +#define MINOR_ALARMHOST_3G_RESTORE 0x101a //3Gָ +#define MINOR_ALARMHOST_SIM_CARD_ABNORMAL 0x101b //SIM쳣 +#define MINOR_ALARMHOST_SIM_CARD_RESTORE 0x101c //SIMָ + +#define MINOR_FORMAT_HDD_ERROR 0x1026 //Զ̸ʽӲʧ +#define MINOR_USB_ERROR 0x1027 //USBͨŹ +#define MINOR_USB_RESTORE 0x1028 //USBͨŹϻָ +#define MINOR_PRINT_ERROR 0x1029 //ӡ +#define MINOR_PRINT_RESTORE 0x1030 //ӡϻָ +#define MINOR_ALARMHOST_SUBSYSTEM_COMMUNICATION_ERROR 0x1031 //ӰͨѶ + +#define MINOR_MCU_RESTART 0x1035 //MCU +#define MINOR_GPRS_MODULE_FAULT 0x1036 //GPRSģ +#define MINOR_TELEPHONE_MODULE_FAULT 0x1037 //绰ģ +#define MINOR_WIFI_ABNORMAL 0x1038 //WIFIͨ쳣 +#define MINOR_WIFI_RESTORE 0x1039 //WIFIָ +#define MINOR_RF_ABNORMAL 0x103a //RFź쳣 +#define MINOR_RF_RESTORE 0x103b //RFźŻָ +#define MINOR_DETECTOR_ONLINE 0x103c //̽ +#define MINOR_DETECTOR_OFFLINE 0x103d //̽ +#define MINOR_DETECTOR_BATTERY_NORMAL 0x103e //̽ +#define MINOR_DETECTOR_BATTERY_LOW 0x103f //̽Ƿѹ +#define MINOR_DATA_TRAFFIC_OVERFLOW 0x1040 // +#define MINOR_ALARMHOST_ZONE_MODULE_LOSS 0x1041 //ģ +#define MINOR_ALARMHOST_ZONE_MODULE_RESTORE 0x1042 //ģ߻ָ +#define MINOR_WIRELESS_OUTPUT_LOSS 0x1043 //ģ +#define MINOR_WIRELESS_OUTPUT_RESTORE 0x1044 //ģָ +#define MINOR_WIRELESS_REPEATER_LOSS 0x1045 //м +#define MINOR_WIRELESS_REPEATER_RESTORE 0x1046 //мָ +#define MINOR_ALARMHOST_TRIGGER_MODULE_LOSS 0x1047 //ģ +#define MINOR_ALARMHOST_TRIGGER_MODULE_RESTORE 0x1048 //ģ߻ָ +#define MINOR_ALARMHOST_WIRELESS_SIREN_LOSS 0x1049 //߾ +#define MINOR_ALARMHOST_WIRELESS_SIREN_RESTORE 0x104a //߾Żָ +#define MINOR_TX1_SUB_SYSTEM_EXCEPTION 0x1050 /*TX1ϵͳ쳣*/ +#define MINOR_TX1_REBOOT_EXCEPTION 0x1051 /*TX1ϵͳ쳣*/ +#define MINOR_TX1_SUB_SYSTEM_LOSS 0x1052 /*ϵͳ쳣*/ +#define MINOR_TX1_SUB_SYSTEM_RESTORE 0x1053 /*ϵͳ߻ָ*/ +#define MINOR_WIRELESS_SPEED_EXCEPTION 0x1054 //ߴ쳣 +#define MINOR_SUB_BOARD_HEARTBEAT_EXCEPTION 0x1055 //Ӱ쳣 +#define MINOR_HOTSTANDBY__EXCEPTION 0x1056 //ȱ쳣 +#define MINOR_PRODUCTIONDATA_EXCEPTION 0x1057 //쳣 + + +//LED 쳣 0x1201~0x1300 +#define MINOR_LED_SYSTEM_EXCEPTION 0x1201 //LEDϵͳ쳣 +#define MINOR_FLASH_NOTENOUGH_EXCEPTION 0x1202 //FLASHռ䲻 + +#define MINOR_LOG_EXCEPTION 0x1301 //־쳣 + +//[add]by silujie 2013-3-22 14:16 +//0x2000~0x3fff Ϊ豸־ +//0x4000~0x5000 Ϊ豸쳣־ +#define MINOR_SUBSYSTEM_IP_CONFLICT 0x4000 //ӰIPͻ +#define MINOR_SUBSYSTEM_NET_BROKEN 0x4001 //Ӱ +#define MINOR_FAN_ABNORMAL 0x4002 //쳣 +#define MINOR_BACKPANEL_TEMPERATURE_ABNORMAL 0x4003 //¶쳣 + +#define MINOR_SDCARD_ABNORMAL 0x4004 //SD +#define MINOR_SDCARD_DAMAGE 0x4005 //SD +#define MINOR_POC_ABNORMAL 0x4006 //豸POCģ쳣 +#define MINOR_MAIN_POWER_FAULT 0x4007 // +#define MINOR_BACK_UP_POWER_FAULT 0x4008 // +#define MINOR_TAMPER_FAULT 0x4009 // +#define MINOR_RS232_FAULT 0x400a //232߹ +#define MINOR_RS485_FAULT 0x400b //485߹ +#define MINOR_LAN_STATUS_FAULT 0x400c //LAN߽״̬ +#define MINOR_LAN_LINK1_FAULT 0x400d //LAN·1 +#define MINOR_LAN_LINK2_FAULT 0x400e //LAN·2 +#define MINOR_SIM_CARD_STATUS_FAULT 0x400f //4G-SIM״̬ +#define MINOR_4G_LINK1_FAULT 0x4010 //4G·1 +#define MINOR_4G_LINK2_FAULT 0x4011 //4G·2 +#define MINOR_OTHER_FAULT 0x4012 // +#define MINOR_FIRE_CONTROL_CONNECT_FAULT 0x4013 //ӹ +#define MINOR_SENSOR_SHORT_CIRCUIT 0x4014 //· +#define MINOR_SENSOR_OPEN_CIRCUIT 0x4015 //· +#define MINOR_SENSOR_MIS_CONNECT 0x4016 // +#define MINOR_SENSOR_FAULT_RESTORE 0x4017 //ϻָ +#define MINOR_DEVICE_FAULT 0x4018 //豸 +#define MINOR_OVERVOLTAGE 0X4019 //Դѹ +#define MINOR_UNDERVOLTAGE 0X401a //Դѹ +#define MINOR_PANLOCKING 0x401b //̨ˮƽת +#define MINOR_TILTLOCKING 0x401c //ֱ̨ת +#define MINOR_SUBBOARD_TEMPERATURE_ABNORMAL 0x401d //Ӱ¶쳣 +#define MINOR_EZVIZ_UPGRADE_EXCEPTION 0x401e //өʯ쳣 + +//өʯز쳣־ +#define MINOR_EZVIZ_OPERATION_ABNORMAL 0x4020 //өʯ쳣 + +#define MINOR_IFRAME_IS_TOO_LARGE 0x4030 //Ԥ/طʱI֡ + +/* */ +// +#define MAJOR_OPERATION 0x3 + +// +#define MINOR_VCA_MOTIONEXCEPTION 0x29 //쳣 +#define MINOR_START_DVR 0x41 /* */ +#define MINOR_STOP_DVR 0x42 /* ػ */ +#define MINOR_STOP_ABNORMAL 0x43 /* 쳣ػ */ +#define MINOR_REBOOT_DVR 0x44 /*豸*/ + +#define MINOR_LOCAL_LOGIN 0x50 /* ص½ */ +#define MINOR_LOCAL_LOGOUT 0x51 /* ע½ */ +#define MINOR_LOCAL_CFG_PARM 0x52 /* ò */ +#define MINOR_LOCAL_PLAYBYFILE 0x53 /* ذļطŻ */ +#define MINOR_LOCAL_PLAYBYTIME 0x54 /* ذʱطŻ*/ +#define MINOR_LOCAL_START_REC 0x55 /* ؿʼ¼ */ +#define MINOR_LOCAL_STOP_REC 0x56 /* ֹͣ¼ */ +#define MINOR_LOCAL_PTZCTRL 0x57 /* ̨ */ +#define MINOR_LOCAL_PREVIEW 0x58 /* Ԥ (ʹ)*/ +#define MINOR_LOCAL_MODIFY_TIME 0x59 /* ޸ʱ(ʹ) */ +#define MINOR_LOCAL_UPGRADE 0x5a /* */ +#define MINOR_LOCAL_RECFILE_OUTPUT 0x5b /* ر¼ļ */ +#define MINOR_LOCAL_FORMAT_HDD 0x5c /* سʼӲ */ +#define MINOR_LOCAL_CFGFILE_OUTPUT 0x5d /* ļ */ +#define MINOR_LOCAL_CFGFILE_INPUT 0x5e /* 뱾ļ */ +#define MINOR_LOCAL_COPYFILE 0x5f /* رļ */ +#define MINOR_LOCAL_LOCKFILE 0x60 /* ¼ļ */ +#define MINOR_LOCAL_UNLOCKFILE 0x61 /* ؽ¼ļ */ +#define MINOR_LOCAL_DVR_ALARM 0x62 /* ֶʹ*/ +#define MINOR_IPC_ADD 0x63 /* IPC */ +#define MINOR_IPC_DEL 0x64 /* ɾIPC */ +#define MINOR_IPC_SET 0x65 /* IPC */ +#define MINOR_LOCAL_START_BACKUP 0x66 /* ؿʼ */ +#define MINOR_LOCAL_STOP_BACKUP 0x67 /* ֹͣ*/ +#define MINOR_LOCAL_COPYFILE_START_TIME 0x68 /* رݿʼʱ*/ +#define MINOR_LOCAL_COPYFILE_END_TIME 0x69 /* رݽʱ*/ +#define MINOR_LOCAL_ADD_NAS 0x6a /*Ӳ nfsiscsi*/ +#define MINOR_LOCAL_DEL_NAS 0x6b /* ɾnas nfsiscsi*/ +#define MINOR_LOCAL_SET_NAS 0x6c /* nas nfsiscsi*/ +#define MINOR_LOCAL_RESET_PASSWD 0x6d /* ػָԱĬ*/ + +#define MINOR_REMOTE_LOGIN 0x70 /* Զ̵¼ */ +#define MINOR_REMOTE_LOGOUT 0x71 /* Զע½ */ +#define MINOR_REMOTE_START_REC 0x72 /* Զ̿ʼ¼ */ +#define MINOR_REMOTE_STOP_REC 0x73 /* Զֹͣ¼ */ +#define MINOR_START_TRANS_CHAN 0x74 /* ʼ͸ */ +#define MINOR_STOP_TRANS_CHAN 0x75 /* ֹͣ͸ */ +#define MINOR_REMOTE_GET_PARM 0x76 /* Զ̻ȡ */ +#define MINOR_REMOTE_CFG_PARM 0x77 /* Զò */ +#define MINOR_REMOTE_GET_STATUS 0x78 /* Զ̻ȡ״̬ */ +#define MINOR_REMOTE_ARM 0x79 /* Զ̲ */ +#define MINOR_REMOTE_DISARM 0x7a /* Զ̳ */ +#define MINOR_REMOTE_REBOOT 0x7b /* Զ */ +#define MINOR_START_VT 0x7c /* ʼԽ */ +#define MINOR_STOP_VT 0x7d /* ֹͣԽ */ +#define MINOR_REMOTE_UPGRADE 0x7e /* Զ */ +#define MINOR_REMOTE_PLAYBYFILE 0x7f /* Զ̰ļطŻ */ +#define MINOR_REMOTE_PLAYBYTIME 0x80 /* Զ̰ʱطŻ */ +#define MINOR_REMOTE_PTZCTRL 0x81 /* Զ̨ */ +#define MINOR_REMOTE_FORMAT_HDD 0x82 /* Զ̸ʽӲ */ +#define MINOR_REMOTE_STOP 0x83 /* Զ̹ػ */ +#define MINOR_REMOTE_LOCKFILE 0x84 /* Զļ */ +#define MINOR_REMOTE_UNLOCKFILE 0x85 /* Զ̽ļ */ +#define MINOR_REMOTE_CFGFILE_OUTPUT 0x86 /* Զ̵ļ */ +#define MINOR_REMOTE_CFGFILE_INTPUT 0x87 /* Զ̵ļ */ +#define MINOR_REMOTE_RECFILE_OUTPUT 0x88 /* Զ̵¼ļ */ +#define MINOR_REMOTE_DVR_ALARM 0x89 /* Զֶʹ*/ +#define MINOR_REMOTE_IPC_ADD 0x8a /* ԶIPC */ +#define MINOR_REMOTE_IPC_DEL 0x8b /* ԶɾIPC */ +#define MINOR_REMOTE_IPC_SET 0x8c /* ԶIPC */ +#define MINOR_REBOOT_VCA_LIB 0x8d /*ܿ*/ +#define MINOR_REMOTE_ADD_NAS 0x8e /* Զnas nfsiscsi*/ +#define MINOR_REMOTE_DEL_NAS 0x8f /* Զɾnas nfsiscsi*/ +#define MINOR_REMOTE_SET_NAS 0x90 /* Զnas nfsiscsi*/ +#define MINOR_LOCAL_OPERATE_LOCK 0x9d /* ز */ +#define MINOR_LOCAL_OPERATE_UNLOCK 0x9e /* ز */ +#define MINOR_REMOTE_DELETE_HDISK 0x9a /* Զɾ쳣ڵӲ */ +#define MINOR_REMOTE_LOAD_HDISK 0x9b /* Զ̼Ӳ */ +#define MINOR_REMOTE_UNLOAD_HDISK 0x9c /* ԶжӲ */ +#define MINOR_SCHEDULE_ANGLECALIBRATION 0x139 /*У׼*/ +#define MINOR_OTHER_OPERATE 0x200 /* */ + +//2010-05-26 ѶDVR־ +#define MINOR_LOCAL_START_REC_CDRW 0x91 /* ؿʼѶ */ +#define MINOR_LOCAL_STOP_REC_CDRW 0x92 /* ֹͣѶ */ +#define MINOR_REMOTE_START_REC_CDRW 0x93 /* Զ̿ʼѶ */ +#define MINOR_REMOTE_STOP_REC_CDRW 0x94 /* ԶֹͣѶ */ + +#define MINOR_LOCAL_PIC_OUTPUT 0x95 /* رͼƬļ */ +#define MINOR_REMOTE_PIC_OUTPUT 0x96 /* Զ̱ͼƬļ */ + +//2011-07-26 81ѶDVR־ +#define MINOR_LOCAL_INQUEST_RESUME 0x97 /* ػָѶ¼*/ +#define MINOR_REMOTE_INQUEST_RESUME 0x98 /* Զָ̻Ѷ¼*/ + +//2013-01-23 86ѶNVR־ +#define MINOR_LOCAL_ADD_FILE 0x99 /*صļ*/ +#define MINOR_LOCAL_DEL_FILE 0x9f /*ɾѶ*/ +#define MINOR_REMOTE_INQUEST_ADD_FILE 0x100 /*Զ̵ļ*/ + +//2009-12-16 Ƶۺƽ̨־ +#define MINOR_SUBSYSTEMREBOOT 0xa0 /*Ƶۺƽ̨dm6467 */ +#define MINOR_MATRIX_STARTTRANSFERVIDEO 0xa1 /*Ƶۺƽ̨лʼͼ*/ +#define MINOR_MATRIX_STOPTRANSFERVIDEO 0xa2 /*Ƶۺƽ̨лֹͣͼ*/ +#define MINOR_REMOTE_SET_ALLSUBSYSTEM 0xa3 /*Ƶۺƽ̨6467ϵͳϢ*/ +#define MINOR_REMOTE_GET_ALLSUBSYSTEM 0xa4 /*Ƶۺƽ̨ȡ6467ϵͳϢ*/ +#define MINOR_REMOTE_SET_PLANARRAY 0xa5 /*Ƶۺƽ̨üƻѲ*/ +#define MINOR_REMOTE_GET_PLANARRAY 0xa6 /*Ƶۺƽ̨ȡƻѲ*/ +#define MINOR_MATRIX_STARTTRANSFERAUDIO 0xa7 /*Ƶۺƽ̨лʼƵ*/ +#define MINOR_MATRIX_STOPRANSFERAUDIO 0xa8 /*Ƶۺƽ̨лֹͣƵ*/ +#define MINOR_LOGON_CODESPITTER 0xa9 /*Ƶۺƽ̨½*/ +#define MINOR_LOGOFF_CODESPITTER 0xaa /*Ƶۺƽ̨˳*/ + +//2010-01-22 Ƶۺƽ̨н־ +#define MINOR_START_DYNAMIC_DECODE 0xb0 /*ʼ̬*/ +#define MINOR_STOP_DYNAMIC_DECODE 0xb1 /*ֹ̬ͣ*/ +#define MINOR_GET_CYC_CFG 0xb2 /*ȡͨѲ*/ +#define MINOR_SET_CYC_CFG 0xb3 /*ýͨѲ*/ +#define MINOR_START_CYC_DECODE 0xb4 /*ʼѲ*/ +#define MINOR_STOP_CYC_DECODE 0xb5 /*ֹͣѲ*/ +#define MINOR_GET_DECCHAN_STATUS 0xb6 /*ȡͨ״̬*/ +#define MINOR_GET_DECCHAN_INFO 0xb7 /*ȡͨǰϢ*/ +#define MINOR_START_PASSIVE_DEC 0xb8 /*ʼ*/ +#define MINOR_STOP_PASSIVE_DEC 0xb9 /*ֹͣ*/ +#define MINOR_CTRL_PASSIVE_DEC 0xba /*Ʊ*/ +#define MINOR_RECON_PASSIVE_DEC 0xbb /**/ +#define MINOR_GET_DEC_CHAN_SW 0xbc /*ȡͨܿ*/ +#define MINOR_SET_DEC_CHAN_SW 0xbd /*ýͨܿ*/ +#define MINOR_CTRL_DEC_CHAN_SCALE 0xbe /*ͨſ*/ +#define MINOR_SET_REMOTE_REPLAY 0xbf /*Զ̻ط*/ +#define MINOR_GET_REMOTE_REPLAY 0xc0 /*ȡԶ̻ط״̬*/ +#define MINOR_CTRL_REMOTE_REPLAY 0xc1 /*Զ̻طſ*/ +#define MINOR_SET_DISP_CFG 0xc2 /*ʾͨ*/ +#define MINOR_GET_DISP_CFG 0xc3 /*ȡʾͨ*/ +#define MINOR_SET_PLANTABLE 0xc4 /*üƻѲ*/ +#define MINOR_GET_PLANTABLE 0xc5 /*ȡƻѲ*/ +#define MINOR_START_PPPPOE 0xc6 /*ʼPPPoE*/ +#define MINOR_STOP_PPPPOE 0xc7 /*PPPoE*/ +#define MINOR_UPLOAD_LOGO 0xc8 /*ϴLOGO*/ +//ģʽ־ +#define MINOR_LOCAL_PIN 0xc9 /* PINܲ */ +#define MINOR_LOCAL_DIAL 0xca /* ֶϿ */ +#define MINOR_SMS_CONTROL 0xcb /* ſ */ +#define MINOR_CALL_ONLINE 0xcc /* п */ +#define MINOR_REMOTE_PIN 0xcd /* ԶPINܲ */ + +//2010-12-16 ־ +#define MINOR_REMOTE_BYPASS 0xd0 /* Զ·*/ +#define MINOR_REMOTE_UNBYPASS 0xd1 /* Զ·ָ*/ +#define MINOR_REMOTE_SET_ALARMIN_CFG 0xd2 /* Զñ*/ +#define MINOR_REMOTE_GET_ALARMIN_CFG 0xd3 /* Զ̻ȡ*/ +#define MINOR_REMOTE_SET_ALARMOUT_CFG 0xd4 /* Զñ*/ +#define MINOR_REMOTE_GET_ALARMOUT_CFG 0xd5 /* Զ̻ȡ*/ +#define MINOR_REMOTE_ALARMOUT_OPEN_MAN 0xd6 /* Զֶ*/ +#define MINOR_REMOTE_ALARMOUT_CLOSE_MAN 0xd7 /* Զֶرձ*/ +#define MINOR_REMOTE_ALARM_ENABLE_CFG 0xd8 /* ԶñRS485ʹ״̬*/ +#define MINOR_DBDATA_OUTPUT 0xd9 /* ݿ¼ */ +#define MINOR_DBDATA_INPUT 0xda /* ݿ¼ */ +#define MINOR_MU_SWITCH 0xdb /* л */ +#define MINOR_MU_PTZ 0xdc /* PTZ */ +#define MINOR_DELETE_LOGO 0xdd /* ɾlogo */ +#define MINOR_REMOTE_INQUEST_DEL_FILE 0xde /*Զɾļ*/ + +#define MINOR_LOCAL_CONF_REB_RAID 0x101 /*Զؽ*/ +#define MINOR_LOCAL_CONF_SPARE 0x102 /*ȱ*/ +#define MINOR_LOCAL_ADD_RAID 0x103 /*ش*/ +#define MINOR_LOCAL_DEL_RAID 0x104 /*ɾ*/ +#define MINOR_LOCAL_MIG_RAID 0x105 /*Ǩ*/ +#define MINOR_LOCAL_REB_RAID 0x106 /* ֶؽ*/ +#define MINOR_LOCAL_QUICK_CONF_RAID 0x107 /*һ*/ +#define MINOR_LOCAL_ADD_VD 0x108 /*ش*/ +#define MINOR_LOCAL_DEL_VD 0x109 /*ɾ*/ +#define MINOR_LOCAL_RP_VD 0x10a /*޸*/ +#define MINOR_LOCAL_FORMAT_EXPANDVD 0X10b /*չ*/ +#define MINOR_LOCAL_RAID_UPGRADE 0X10c /*raid*/ +#define MINOR_LOCAL_STOP_RAID 0x10d /*ͣRAID(ȫ)*/ +#define MINOR_REMOTE_CONF_REB_RAID 0x111 /*ԶԶؽ*/ +#define MINOR_REMOTE_CONF_SPARE 0x112 /*Զȱ*/ +#define MINOR_REMOTE_ADD_RAID 0x113 /*Զ̴*/ +#define MINOR_REMOTE_DEL_RAID 0x114 /*Զɾ*/ +#define MINOR_REMOTE_MIG_RAID 0x115 /*ԶǨ*/ +#define MINOR_REMOTE_REB_RAID 0x116 /* Զֶؽ*/ +#define MINOR_REMOTE_QUICK_CONF_RAID 0x117 /*Զһ*/ +#define MINOR_REMOTE_ADD_VD 0x118 /*Զ̴*/ +#define MINOR_REMOTE_DEL_VD 0x119 /*Զɾ*/ +#define MINOR_REMOTE_RP_VD 0x11a /*Զ޸*/ +#define MINOR_REMOTE_FORMAT_EXPANDVD 0X11b /*Զ*/ +#define MINOR_REMOTE_RAID_UPGRADE 0X11c /*Զraid*/ +#define MINOR_REMOTE_STOP_RAID 0x11d /*ԶͣRAID(ȫ)*/ +#define MINOR_LOCAL_START_PIC_REC 0x121 /*ؿʼץͼ*/ +#define MINOR_LOCAL_STOP_PIC_REC 0x122 /*ֹͣץͼ*/ +#define MINOR_LOCAL_SET_SNMP 0x125 /*SNMP*/ +#define MINOR_LOCAL_TAG_OPT 0x126 /*رǩ*/ +#define MINOR_REMOTE_START_PIC_REC 0x131 /*Զ̿ʼץͼ*/ +#define MINOR_REMOTE_STOP_PIC_REC 0x132 /*Զֹͣץͼ*/ +#define MINOR_REMOTE_SET_SNMP 0x135 /*ԶSNMP*/ +#define MINOR_REMOTE_TAG_OPT 0x136 /*Զ̱ǩ*/ +#define MINOR_REMOTE_LOGIN_LOCK 0x137 //Զ̵¼ +#define MINOR_REMOTE_LOGIN_UNLOCK 0x138 //Զ̵¼ +// 9000 v2.2.0 +#define MINOR_LOCAL_VOUT_SWITCH 0x140 /* л*/ +#define MINOR_STREAM_CABAC 0x141 /* ѹѡò*/ + +//Netra 3.0.0 +#define MINOR_LOCAL_SPARE_OPT 0x142 /*N+1 ȱز*/ +#define MINOR_REMOTE_SPARE_OPT 0x143 /*ԶN+1 ȱز*/ +#define MINOR_LOCAL_IPCCFGFILE_OUTPUT 0x144 /* صipcļ*/ +#define MINOR_LOCAL_IPCCFGFILE_INPUT 0x145 /* صipcļ */ +#define MINOR_LOCAL_IPC_UPGRADE 0x146 /* IPC */ +#define MINOR_REMOTE_IPCCFGFILE_OUTPUT 0x147 /* Զ̵ipcļ*/ +#define MINOR_REMOTE_IPCCFGFILE_INPUT 0x148 /* Զ̵ipcļ*/ +#define MINOR_REMOTE_IPC_UPGRADE 0x149 /* ԶIPC */ + +#define MINOR_LOCAL_UNLOAD_HDISK 0x150 /*жӲ*/ +#define MINOR_LOCAL_AUDIO_MIX 0x151 /*Ƶ*/ +#define MINOR_REMOTE_AUDIO_MIX 0x152 /*ԶƵ*/ +#define MINOR_LOCAL_TRIAL_PAUSE 0x153 /*ͣѶ*/ +#define MINOR_LOCAL_TRIAL_RESUME 0x154 /*ؼѶ*/ +#define MINOR_REMOTE_TRIAL_PAUSE 0x155 /*ԶͣѶ*/ +#define MINOR_REMOTE_TRIAL_RESUME 0x156 /*Զ̼Ѷ*/ +#define MINOR_REMOTE_MODIFY_VERIFICATION_CODE 0x157 /*޸ƽ̨֤*/ + +#define MINOR_LOCAL_MAKECALL 0x180 /*غ*/ +#define MINOR_LOCAL_REJECTCALL 0x181 /*ؾܽ*/ +#define MINOR_LOCAL_ANSWERCALL 0x182 /*ؽ*/ +#define MINOR_LOCAL_HANGUPCALL 0x183 /*عҶ*/ + +#define MINOR_REMOTE_MAKECALL 0x188 /*Զ̺*/ +#define MINOR_REMOTE_REJECTCALL 0x189 /*Զ̾ܽ*/ +#define MINOR_REMOTE_ANSWERCALL 0x18a /*Զ̽*/ +#define MINOR_REMOTE_HANGUPCALL 0x18b /*Զ̹Ҷ*/ + +#define MINOR_LOCAL_CHANNEL_ORDERED 0x19b /*ͨ*/ + +#define MINOR_SET_MULTI_MASTER 0x201 /*ô*/ +#define MINOR_SET_MULTI_SLAVE 0x202 /*ô*/ +#define MINOR_CANCEL_MULTI_MASTER 0x203 /*ȡ*/ +#define MINOR_CANCEL_MULTI_SLAVE 0x204 /*ȡ*/ + +#define MINOR_DISPLAY_LOGO 0x205 /*ʾLOGO*/ +#define MINOR_HIDE_LOGO 0x206 /*LOGO*/ +#define MINOR_SET_DEC_DELAY_LEVEL 0x207 /*ͨʱ*/ +#define MINOR_SET_BIGSCREEN_DIPLAY_AREA 0x208 /*ôʾ*/ +#define MINOR_CUT_VIDEO_SOURCE 0x209 /*ƵԴи*/ +#define MINOR_SET_BASEMAP_AREA 0x210 /*ͼ*/ +#define MINOR_DOWNLOAD_BASEMAP 0x211 /*شͼ*/ +#define MINOR_CUT_BASEMAP 0x212 /*ͼи*/ +#define MINOR_CONTROL_ELEC_ENLARGE 0x213 /*ӷŴ(Ŵԭ)*/ +#define MINOR_SET_OUTPUT_RESOLUTION 0x214 /*ʾֱ*/ +#define MINOR_SET_TRANCSPARENCY 0X215 /*ͼ͸*/ +#define MINOR_SET_OSD 0x216 /*ʾOSD*/ +#define MINOR_RESTORE_DEC_STATUS 0x217 /*ָʼ״̬(лʱָʼ״̬)*/ + +//2011-11-11 Ӵ־ +#define MINOR_SCREEN_OPEN_SCREEN 0x218 //Ļ +#define MINOR_SCREEN_CLOSE_SCREEN 0x219 //رĻ +#define MINOR_SCREEN_SWITCH_SIGNAL 0x21a //źԴл +#define MINOR_SCREEN_MODIFY_NETWORK 0x21b // +#define MINOR_SCREEN_MODIFY_LEDRES 0x21c //LEDֱ +#define MINOR_SCREEN_SHOW_NORMAL 0x21d //ôͨʾģʽ +#define MINOR_SCREEN_SHOW_TILE 0x21e //ôƽʾģʽ +#define MINOR_SCREEN_DEC_NORMAL 0x21f //ͨģʽ +#define MINOR_SCREEN_DEC_LOWLATENCY 0x220 //õʱģʽ +#define MINOR_SCREEN_MODIFY_SELFRES 0x221 //źԴԶֱ +#define MINOR_SCREEN_OUTPUT_POSITION 0x222 //ڹĻ +#define MINOR_SCREEN_IMAGE_ENHANCE 0x223 //ͼǿ +#define MINOR_SCREEN_JOIN_SIGNAL 0x224 //źԴƴ +#define MINOR_SCREEN_SIGNAL_OSD 0x225 //źԴַ +#define MINOR_SCREEN_ASSOCIATED_INTERACTION 0x226 //źԴ +#define MINOR_SCREEN_MODIFY_MATRIX 0x227 //þ +#define MINOR_SCREEN_WND_TOP_KEEP 0x228 //ö +#define MINOR_SCREEN_WND_OPEN_KEEP 0x229 //ڴ򿪱 +#define MINOR_SCREEN_WALL_MIRROR 0x22a //ǽ +#define MINOR_SCREEN_UPLOAD_BASEMAP 0x22b //ϴͼ +#define MINOR_SCREEN_SHOW_BASEMAP 0x22c //ʾͼ +#define MINOR_SCREEN_HIDE_BASEMAP 0x22d //صͼ +#define MINOR_SCREEN_MODIFY_SERIAL 0x22e //ôڲ + +#define MINOR_SCREEN_SET_INPUT 0x251 /*޸Դ*/ +#define MINOR_SCREEN_SET_OUTPUT 0x252 /*޸ͨ*/ +#define MINOR_SCREEN_SET_OSD 0x253 /*޸LED*/ +#define MINOR_SCREEN_SET_LOGO 0x254 /*޸LOGO*/ +#define MINOR_SCREEN_SET_LAYOUT 0x255 /*ò*/ +#define MINOR_SCREEN_PICTUREPREVIEW 0x256 /*Բ*/ + + +//2012-06-14 CVCS2.0, õȲV1.0 V1.1Ѿˣʱ豸־ûж +#define MINOR_SCREEN_GET_OSD 0x257 /*ȡLED*/ +#define MINOR_SCREEN_GET_LAYOUT 0x258 /*ȡ*/ +#define MINOR_SCREEN_LAYOUT_CTRL 0x259 /*ֿ*/ +#define MINOR_GET_ALL_VALID_WND 0x260 /*ȡЧ*/ +#define MINOR_GET_SIGNAL_WND 0x261 /*ȡϢ*/ +#define MINOR_WINDOW_CTRL 0x262 /*ڿ*/ +#define MINOR_GET_LAYOUT_LIST 0x263 /*ȡб*/ +#define MINOR_LAYOUT_CTRL 0x264 /*ֿ*/ +#define MINOR_SET_LAYOUT 0x265 /*ò*/ +#define MINOR_GET_SIGNAL_LIST 0x266 /*ȡźԴб*/ +#define MINOR_GET_PLAN_LIST 0x267 /*ȡԤб*/ +#define MINOR_SET_PLAN 0x268 /*޸Ԥ*/ +#define MINOR_CTRL_PLAN 0x269 /*Ԥ*/ +#define MINOR_CTRL_SCREEN 0x270 /*Ļ*/ +#define MINOR_ADD_NETSIG 0x271 /*źԴ*/ +#define MINOR_SET_NETSIG 0x272 /*޸źԴ*/ +#define MINOR_SET_DECBDCFG 0x273 /*ý*/ +#define MINOR_GET_DECBDCFG 0x274 /*ȡ*/ +#define MINOR_GET_DEVICE_STATUS 0x275 /*ȡ豸Ϣ*/ +#define MINOR_UPLOAD_PICTURE 0x276 /*ͼϴ*/ +#define MINOR_SET_USERPWD 0x277 /*û*/ +#define MINOR_ADD_LAYOUT 0x278 /*Ӳ*/ +#define MINOR_DEL_LAYOUT 0x279 /*ɾ*/ +#define MINOR_DEL_NETSIG 0x280 /*ɾźԴ*/ +#define MINOR_ADD_PLAN 0x281 /*Ԥ*/ +#define MINOR_DEL_PLAN 0x282 /*ɾԤ*/ +#define MINOR_GET_EXTERNAL_MATRIX_CFG 0x283 //ȡӾ +#define MINOR_SET_EXTERNAL_MATRIX_CFG 0x284 //Ӿ +#define MINOR_GET_USER_CFG 0x285 //ȡû +#define MINOR_SET_USER_CFG 0x286 //û +#define MINOR_GET_DISPLAY_PANEL_LINK_CFG 0x287 //ȡʾǽ +#define MINOR_SET_DISPLAY_PANEL_LINK_CFG 0x288 //ʾǽ + +#define MINOR_GET_WALLSCENE_PARAM 0x289 //ȡǽ +#define MINOR_SET_WALLSCENE_PARAM 0x28a //õǽ +#define MINOR_GET_CURRENT_WALLSCENE 0x28b //ȡǰʹó +#define MINOR_SWITCH_WALLSCENE 0x28c //л +#define MINOR_SIP_LOGIN 0x28d //SIPעɹ +#define MINOR_VOIP_START 0x28e //VOIPԽʼ +#define MINOR_VOIP_STOP 0x28f //VOIPԽֹͣ +#define MINOR_WIN_TOP 0x290 //ǽö +#define MINOR_WIN_BOTTOM 0x291 //ǽõ +#define MINOR_SET_USER_ADD_CFG 0x292 //û +#define MINOR_SET_USER_MODF_CFG 0x293 //޸û +#define MINOR_SET_USER_DEL_CFG 0x294 //ɾû + +// Netra 2.2.2 +#define MINOR_LOCAL_LOAD_HDISK 0x300 //ؼӲ +#define MINOR_LOCAL_DELETE_HDISK 0x301 //ɾ쳣ڵӲ + +//KY2013 3.0.0 +#define MINOR_LOCAL_MAIN_AUXILIARY_PORT_SWITCH 0X302 //л +#define MINOR_LOCAL_HARD_DISK_CHECK 0x303 //ӲԼ + +//Netra3.1.0 +#define MINOR_LOCAL_CFG_DEVICE_TYPE 0x310 //豸 +#define MINOR_REMOTE_CFG_DEVICE_TYPE 0x311 //Զ豸 +#define MINOR_LOCAL_CFG_WORK_HOT_SERVER 0x312 //ùȱ +#define MINOR_REMOTE_CFG_WORK_HOT_SERVER 0x313 //Զùȱ +#define MINOR_LOCAL_DELETE_WORK 0x314 //ɾ +#define MINOR_REMOTE_DELETE_WORK 0x315 //Զɾ +#define MINOR_LOCAL_ADD_WORK 0x316 //ӹ +#define MINOR_REMOTE_ADD_WORK 0x317 //Զӹ +#define MINOR_LOCAL_IPCHEATMAP_OUTPUT 0x318 /* صȶͼļ */ +#define MINOR_LOCAL_IPCHEATFLOW_OUTPUT 0x319 /* صȶļ */ +#define MINOR_REMOTE_SMS_SEND 0x350 /*Զ̷Ͷ*/ +#define MINOR_LOCAL_SMS_SEND 0x351 /*طͶ*/ +#define MINOR_ALARM_SMS_SEND 0x352 /*Ͷű*/ +#define MINOR_SMS_RECV 0x353 /*ն*/ +//ע0x3500x351ָ˹GUIIEؼϱ༭Ͷţ +#define MINOR_LOCAL_SMS_SEARCH 0x354 /**/ +#define MINOR_REMOTE_SMS_SEARCH 0x355 /*Զ*/ +#define MINOR_LOCAL_SMS_READ 0x356 /*ز鿴*/ +#define MINOR_REMOTE_SMS_READ 0x357 /*Զ̲鿴*/ +#define MINOR_REMOTE_DIAL_CONNECT 0x358 /*Զֶ̿*/ +#define MINOR_REMOTE_DIAL_DISCONN 0x359 /*Զֶֹͣ*/ +#define MINOR_LOCAL_ALLOWLIST_SET 0x35A /**/ +#define MINOR_REMOTE_ALLOWLIST_SET 0x35B /*Զ*/ +#define MINOR_LOCAL_DIAL_PARA_SET 0x35C /*òŲ*/ +#define MINOR_REMOTE_DIAL_PARA_SET 0x35D /*ԶòŲ*/ +#define MINOR_LOCAL_DIAL_SCHEDULE_SET 0x35E /*òżƻ*/ +#define MINOR_REMOTE_DIAL_SCHEDULE_SET 0x35F /*Զòżƻ*/ +#define MINOR_PLAT_OPER 0x360 /* ƽ̨*/ +#define MINOR_REMOTE_CFG_POE_WORK_MODE 0x361//ԶPOEģʽ +#define MINOR_LOCAL_CFG_POE_WORK_MODE 0x362//POEģʽ +#define MINOR_REMOTE_CFG_FACE_CONTRAST 0x363//Զȶ +#define MINOR_LOCAL_CFG_FACE_CONTRAST 0x364//ȶ +#define MINOR_REMOTE_CFG_ALLOWLIST_FACE_CONTRAST 0x365//Զȶ +#define MINOR_LOCAL_CFG_ALLOWLIST_FACE_CONTRAST 0x366//ȶ +#define MINOR_LOCAL_CHECK_TIME 0x367 //ֶУʱ +#define MINOR_VCA_ONEKEY_EXPORT_PICTURE 0x368 //һͼƬ +#define MINOR_VCA_ONEKEY_DELETE_PICTURE 0x369 //һɾͼƬ +#define MINOR_VCA_ONEKEY_EXPORT_VIDEO 0x36a //һ¼ +#define MINOR_VCA_ONEKEY_DELETE_VIDEO 0x36b //һɾ¼ +#define MINOR_REMOTE_CFG_WIRELESS_DIALPARAM 0x36c /*Զ߲Ų*/ +#define MINOR_LOCAL_CFG_WIRELESS_DIALPARAM 0x36d /*߲Ų*/ +#define MINOR_REMOTE_CFG_WIRELESS_SMSPARAM 0x36e /*Զ߶ò*/ +#define MINOR_LOCAL_CFG_WIRELESS_SMSPARAM 0x36f /*߶ò*/ +#define MINOR_REMOTE_CFG_WIRELESS_SMSSElFHELP 0x370 /*Զ߶ò*/ +#define MINOR_LOCAL_CFG_WIRELESS_SMSSElFHELP 0x371 /*߶ò*/ +#define MINOR_REMOTE_CFG_WIRELESS_NETFLOWPARAM 0x372 /*Զò*/ +#define MINOR_LOCAL_CFG_WIRELESS_NETFLOWPARAM 0x373 /*ò*/ + +//0x400-0x1000 Ž +#define MINOR_REMOTE_OPEN_DOOR 0x400 //Զ̿ +#define MINOR_REMOTE_CLOSE_DOOR 0x401 //Զ̹(ܿ) +#define MINOR_REMOTE_ALWAYS_OPEN 0x402 //Զ̳() +#define MINOR_REMOTE_ALWAYS_CLOSE 0x403 //Զ̳() +#define MINOR_REMOTE_CHECK_TIME 0x404 //ԶֶУʱ +#define MINOR_NTP_CHECK_TIME 0x405 //NTPԶУʱ +#define MINOR_REMOTE_CLEAR_CARD 0x406 //Զտ +#define MINOR_REMOTE_RESTORE_CFG 0x407 //Զָ̻Ĭϲ +#define MINOR_ALARMIN_ARM 0x408 // +#define MINOR_ALARMIN_DISARM 0x409 // +#define MINOR_LOCAL_RESTORE_CFG 0x40a //ػָĬϲ +#define MINOR_REMOTE_CAPTURE_PIC 0x40b //Զץ +#define MINOR_MOD_NET_REPORT_CFG 0x40c //޸IJ +#define MINOR_MOD_GPRS_REPORT_PARAM 0x40d //޸GPRSIJ +#define MINOR_MOD_REPORT_GROUP_PARAM 0x40e //޸ +#define MINOR_UNLOCK_PASSWORD_OPEN_DOOR 0x40f // +#define MINOR_AUTO_RENUMBER 0x410 //Զ± +#define MINOR_AUTO_COMPLEMENT_NUMBER 0x411 //Զ +#define MINOR_NORMAL_CFGFILE_INPUT 0x412 //ͨļ +#define MINOR_NORMAL_CFGFILE_OUTTPUT 0x413 //ͨļ +#define MINOR_CARD_RIGHT_INPUT 0x414 //뿨Ȩ޲ +#define MINOR_CARD_RIGHT_OUTTPUT 0x415 //Ȩ޲ +#define MINOR_LOCAL_USB_UPGRADE 0x416 //U +#define MINOR_REMOTE_VISITOR_CALL_LADDER 0x417 //ÿͺ +#define MINOR_REMOTE_HOUSEHOLD_CALL_LADDER 0x418 //ס +#define MINOR_REMOTE_ACTUAL_GUARD 0x419 //Զʵʱ +#define MINOR_REMOTE_ACTUAL_UNGUARD 0x41a //Զʵʱ +#define MINOR_REMOTE_CONTROL_NOT_CODE_OPER_FAILED 0x41b //ңδʧ +#define MINOR_REMOTE_CONTROL_CLOSE_DOOR 0x41c //ң +#define MINOR_REMOTE_CONTROL_OPEN_DOOR 0x41d //ң +#define MINOR_REMOTE_CONTROL_ALWAYS_OPEN_DOOR 0x41e //ң +#define MINOR_M1_CARD_ENCRYPT_VERIFY_OPEN 0x41f /*M1֤ܿ*/ +#define MINOR_M1_CARD_ENCRYPT_VERIFY_CLOSE 0x420 /*M1֤ܹر*/ +#define MINOR_NFC_FUNCTION_OPEN 0x421 /*NFCŹܿ*/ +#define MINOR_NFC_FUNCTION_CLOSE 0x422 /*NFCŹܹر*/ +#define MINOR_OFFLINE_DATA_OUTPUT 0x423 //߲ɼݵ +#define MINOR_CREATE_SSH_LINK 0x42d //SSH +#define MINOR_CLOSE_SSH_LINK 0x42e //ϿSSH +#define MINOR_LOCAL_IMPORT_USERINFO 0x42f //صԱݣԱȨޣģ壬ͼƬ¼ͣ +#define MINOR_LOCAL_EXPORT_USERINFO 0x430 //صԱ +#define MINOR_CREATE_CERTIFICATE 0x431 //֤飨SSLͨŵ֤飬SDKTLSHTTPSȣ +#define MINOR_UPLOAD_CERTIFICATE 0x432 //ϴ֤ +#define MINOR_DELETE_CERTIFICATE 0x433 //ɾ֤ +#define MINOR_COMSUME_ARM 0x434 //Ѳ +#define MINOR_COMSUME_DISARM 0x435 //ѳ + +#define MINOR_OPERATION_CUSTOM1 0x900 //ŽԶ1 +#define MINOR_OPERATION_CUSTOM2 0x901 //ŽԶ2 +#define MINOR_OPERATION_CUSTOM3 0x902 //ŽԶ3 +#define MINOR_OPERATION_CUSTOM4 0x903 //ŽԶ4 +#define MINOR_OPERATION_CUSTOM5 0x904 //ŽԶ5 +#define MINOR_OPERATION_CUSTOM6 0x905 //ŽԶ6 +#define MINOR_OPERATION_CUSTOM7 0x906 //ŽԶ7 +#define MINOR_OPERATION_CUSTOM8 0x907 //ŽԶ8 +#define MINOR_OPERATION_CUSTOM9 0x908 //ŽԶ9 +#define MINOR_OPERATION_CUSTOM10 0x909 //ŽԶ10 +#define MINOR_OPERATION_CUSTOM11 0x90a //ŽԶ11 +#define MINOR_OPERATION_CUSTOM12 0x90b //ŽԶ12 +#define MINOR_OPERATION_CUSTOM13 0x90c //ŽԶ13 +#define MINOR_OPERATION_CUSTOM14 0x90d //ŽԶ14 +#define MINOR_OPERATION_CUSTOM15 0x90e //ŽԶ15 +#define MINOR_OPERATION_CUSTOM16 0x90f //ŽԶ16 +#define MINOR_OPERATION_CUSTOM17 0x910 //ŽԶ17 +#define MINOR_OPERATION_CUSTOM18 0x911 //ŽԶ18 +#define MINOR_OPERATION_CUSTOM19 0x912 //ŽԶ19 +#define MINOR_OPERATION_CUSTOM20 0x913 //ŽԶ20 +#define MINOR_OPERATION_CUSTOM21 0x914 //ŽԶ21 +#define MINOR_OPERATION_CUSTOM22 0x915 //ŽԶ22 +#define MINOR_OPERATION_CUSTOM23 0x916 //ŽԶ23 +#define MINOR_OPERATION_CUSTOM24 0x917 //ŽԶ24 +#define MINOR_OPERATION_CUSTOM25 0x918 //ŽԶ25 +#define MINOR_OPERATION_CUSTOM26 0x919 //ŽԶ26 +#define MINOR_OPERATION_CUSTOM27 0x91a //ŽԶ27 +#define MINOR_OPERATION_CUSTOM28 0x91b //ŽԶ28 +#define MINOR_OPERATION_CUSTOM29 0x91c //ŽԶ29 +#define MINOR_OPERATION_CUSTOM30 0x91d //ŽԶ30 +#define MINOR_OPERATION_CUSTOM31 0x91e //ŽԶ31 +#define MINOR_OPERATION_CUSTOM32 0x91f //ŽԶ32 +#define MINOR_OPERATION_CUSTOM33 0x920 //ŽԶ33 +#define MINOR_OPERATION_CUSTOM34 0x921 //ŽԶ34 +#define MINOR_OPERATION_CUSTOM35 0x922 //ŽԶ35 +#define MINOR_OPERATION_CUSTOM36 0x923 //ŽԶ36 +#define MINOR_OPERATION_CUSTOM37 0x924 //ŽԶ37 +#define MINOR_OPERATION_CUSTOM38 0x925 //ŽԶ38 +#define MINOR_OPERATION_CUSTOM39 0x926 //ŽԶ39 +#define MINOR_OPERATION_CUSTOM40 0x927 //ŽԶ40 +#define MINOR_OPERATION_CUSTOM41 0x928 //ŽԶ41 +#define MINOR_OPERATION_CUSTOM42 0x929 //ŽԶ42 +#define MINOR_OPERATION_CUSTOM43 0x92a //ŽԶ43 +#define MINOR_OPERATION_CUSTOM44 0x92b //ŽԶ44 +#define MINOR_OPERATION_CUSTOM45 0x92c //ŽԶ45 +#define MINOR_OPERATION_CUSTOM46 0x92d //ŽԶ46 +#define MINOR_OPERATION_CUSTOM47 0x92e //ŽԶ47 +#define MINOR_OPERATION_CUSTOM48 0x92f //ŽԶ48 +#define MINOR_OPERATION_CUSTOM49 0x930 //ŽԶ49 +#define MINOR_OPERATION_CUSTOM50 0x931 //ŽԶ50 +#define MINOR_OPERATION_CUSTOM51 0x932 //ŽԶ51 +#define MINOR_OPERATION_CUSTOM52 0x933 //ŽԶ52 +#define MINOR_OPERATION_CUSTOM53 0x934 //ŽԶ53 +#define MINOR_OPERATION_CUSTOM54 0x935 //ŽԶ54 +#define MINOR_OPERATION_CUSTOM55 0x936 //ŽԶ55 +#define MINOR_OPERATION_CUSTOM56 0x937 //ŽԶ56 +#define MINOR_OPERATION_CUSTOM57 0x938 //ŽԶ57 +#define MINOR_OPERATION_CUSTOM58 0x939 //ŽԶ58 +#define MINOR_OPERATION_CUSTOM59 0x93a //ŽԶ59 +#define MINOR_OPERATION_CUSTOM60 0x93b //ŽԶ60 +#define MINOR_OPERATION_CUSTOM61 0x93c //ŽԶ61 +#define MINOR_OPERATION_CUSTOM62 0x93d //ŽԶ62 +#define MINOR_OPERATION_CUSTOM63 0x93e //ŽԶ63 +#define MINOR_OPERATION_CUSTOM64 0x93f //ŽԶ64 +#define MINOR_OPERATION_REALTIMEBROADCAST 0x940 //ʵʱ㲥 +#define MINOR_OPERATION_PLANBROADCAST 0x941 //ƻ㲥 + +#define MINOR_SET_WIFI_PARAMETER 0x950 //WIFIò +#define MINOR_EZVIZ_LOGIN 0x951 //өʯƵ½ +#define MINOR_EZVIZ_LOGINOUT 0x952 //өʯƵdz +#define MINOR_LOCK_ADD 0x953 // +#define MINOR_LOCK_DELETE 0x954 //ɾ +#define MINOR_LOCK_GET_STATUS 0x955 //״̬ȡ +#define MINOR_LOCK_SET_TMP_PASSWORD 0x956 //ʱ· +#define MINOR_LOCK_SET_SILENT_MODE 0x957 // +#define MINOR_LOCK_SET_LATE_WARNING 0x958 // +#define MINOR_LOCK_IPC_ADD 0x959 //IPC +#define MINOR_LOCK_IPC_REMOVE 0x95a //IPC +#define MINOR_LOCK_DETECTOR_ADD 0x95b //̽ +#define MINOR_LOCK_DETECTOR_REMOVE 0x95c //̽ +#define MINOR_LOCK_MESSAGE_REMINDING_OPEN 0x95d //ϢѴ +#define MINOR_LOCK_MESSAGE_REMINDING_CLOSE 0x95e //Ϣѹر +#define MINOR_LOCK_SET_HEART_BEAT 0x95f // +#define MINOR_LOCK_REBOOT 0x960 // +#define MINOR_LOCK_CLEAR_USER 0x961 //û +#define MINOR_LOCK_FORMAT 0x962 //ʽ +#define MINOR_LOCK_FINGER_CHANGE 0x963 //ָƸĶ +#define MINOR_LOCK_PASSWORD_CHANGE 0x964 //Ķ +#define MINOR_LOCK_CARD_CHANGE 0x965 //ϢĶ +#define MINOR_LOCK_USER_CHANGE 0x966 //ûϢĶ +#define MINOR_LOCK_SYSTEM_CHANGE 0x967 //ϵͳϢĶ +#define MINOR_LOCK_CHANGE_ADD_UESR 0x968 //û +#define MINOR_LOCK_CHANGE_DEL_UESR 0x969 //ɾû +#define MINOR_LOCK_CHANGE_CUSTOM_USER_NAME 0x96a //ԶûûĶ +#define MINOR_LOCK_CHANGE_REMOTE_DEVICE 0x96b //ңϢĶ +#define MINOR_LOCK_CHANGE_ADD_FP 0x96c //ָ +#define MINOR_LOCK_CHANGE_DEL_FP 0x96d //ɾָ +#define MINOR_LOCK_CHANGE_ADD_PASSWORD 0x96e // +#define MINOR_LOCK_CHANGE_DEL_PASSWORD 0x96f //ɾ +#define MINOR_LOCK_CHANGE_ADD_CARD 0x970 //Ƭ +#define MINOR_LOCK_CHANGE_DEL_CARD 0x971 //ɾƬ +#define MINOR_LOCK_NETWORK_SWITCH 0x972 //繦ܿظĶ +#define MINOR_LOCK_CLEAR_NETWORK_DATA 0x973 // +#define MINOR_LOCK_CLEAR_HOST_USER 0x974 //û +#define MINOR_LOCK_CLEAR_GUEST_USER 0x975 //տû +#define MINOR_LOCK_CLEAN_ALL_REMOTE_DEVICE 0x976 //ңûϢ +#define MINOR_LOCK_CLEAN_NORMAL_USER_FINGRT 0x977 //ͨûָ +#define MINOR_LOCK_CLEAN_ALL_CARD 0x978 //пƬ +#define MINOR_LOCK_CLEAN_ALL_PASSWORD 0x979 // +#define MINOR_START_WIRELESSSERVER 0x97a //豸ȵ +#define MINOR_STOP_WIRELESSSERVER 0x97b //ر豸ȵ +#define MINOR_EMERGENCY_CARD_AUTH_NORMAL_CARD 0x97c //ӦȨͨ +#define MINOR_CHANGE_ALWAYS_OPEN_RIGHT 0x97d //ͨģʽĶ +#define MINOR_LOCK_DOOR_BELL_EVENT 0x97e //¼ + +//Ϣ־ +#define MINOR_BACKUP_DATA 0xc41 //ݱ +#define MINOR_TRANSFER_DATA 0xc42 //Ǩ +#define MINOR_RESTORE_DATA 0xc43 //ݻԭ +#define MINOR_SET_INPUT_PLAN 0xc44 //ն˶ʱлƻ +#define MINOR_TERMINAL_ADB 0xc45//նADB +#define MINOR_TERMINAL_VOLUME 0xc46 //ն +#define MINOR_TERMINAL_LOGO 0xc47 //նLOGO +#define MINOR_TERMINAL_DEFAULT_SCHEDULE 0xc48 //Ƭճʹ +#define MINOR_TERMINAL_PASSWORD 0xc49 //ն +#define MINOR_TERMINAL_IP 0xc4a//նIP +#define MINOR_TERMINAL_RELATE_IPC 0xc4b//ն˹IPC +#define MINOR_TERMINAL_SERVER 0xc4c//ն˹ +#define MINOR_TERMINAL_SADP 0xc4d//նSADP +#define MINOR_TERMINAL_TIMEZONE 0xc4e//նʱ +#define MINOR_TERMINAL_TEMP_PROTECT 0xc4f//ն¶ȱ +#define MINOR_ADD_ORGANIZATION 0xc50 //֯ +#define MINOR_DELETE_ORGANIZATION 0xc51 //ɾ֯ +#define MINOR_MODIFY_ORGANIZATION 0xc52 //޸֯ +#define MINOR_WEATHER_FACTORY 0xc53 // +#define MINOR_SADP_ENABLE 0xc54 //sadp +#define MINOR_SSH_ENABLE 0xc55 //SSH +#define MINOR_MODIFY_MATERIAL 0xc56 //زIJ޸ +#define MINOR_INSERT_CHARACTER 0xc57 //岥Ϣ +#define MINOR_TERMINAL_BACKLIGHT 0xc58 //ն˱ +#define MINOR_DOWNLOAD_MATERIAL_THUMBNAIL 0xc59 //زͼ +#define MINOR_UPLOAD_PROGRAM_THUMBNAIL 0xc5a//ϴĿͼ +#define MINOR_TDOWNLOAD_PROGRAM_THUMBNAIL 0xc5b//ؽĿͼ +#define MINOR_BATCH_DELETE_SCHEDULE_PLAN 0xc5c//ɾƻ +#define MINOR_REPUBLISH 0xc5d//· +#define MINOR_CLEAR_TERMINAL_PLAY_INFO 0xc5e//ն˲Ϣ +#define MINOR_GET_TERMINAL_RESOLUTION 0xc5f//ȡն˷ֱ +#define MINOR_SET_TERMINAL_RESOLUTION 0xc60//ն˷ֱ +#define MINOR_GET_BATCH_TERMINAL_UPGRATE_PROGRESS 0xc61//ȡն +#define MINOR_GET_BATCH_PROGRESS 0xc62//ȡն˷ +#define MINOR_GET_TEMPLATE 0xc64//ȡģ +#define MINOR_INIT_TEMPLATE 0xc65//ʼģ +#define MINOR_GET_TERMINAL_NTP_SERVERS 0xc66//ȡնNTP +#define MINOR_SET_TERMINAL_NTP_SERVERS 0xc67//նNTP +#define MINOR_GET_RELEASE_DETAILS 0xc68//ȡϸϢ +#define MINOR_UPLOAD_TEMPLATE_THUMBNAIL 0xc69//ϴģͼ +#define MINOR_DOWNLOAD_TEMPLATE_THUMBNAIL 0xc6a//ģͼ +#define MINOR_ADD_TEMPLATE 0xc6b//ģ +#define MINOR_DELETE_TEMPLATE 0xc6c//ɾģ +#define MINOR_MODIFY_TEMPLATE 0xc6d//޸ģ +#define MINOR_ADD_SCHEDULE_PLAN 0xc6e//ӷƻ +#define MINOR_MODIFY_SCHEDULE_PLAN 0xc6f//޸ķƻ +#define MINOR_CANCEL_SCHEDULE_RELEASE 0xc70//ȡճ̷ +#define MINOR_GET_SCHEDULE 0xc71//ȡճ +#define MINOR_ADD_INSERT 0xc72//½岥 +#define MINOR_CANCEL_INSERT 0xc73//ȡ岥 +#define MINOR_SWITCH_LANGUAGE 0xc74//л +#define MINOR_SET_ADMIN_INITIAL_PASSWORD 0xc75//adminʼ +#define MINOR_MODIFY_PORT 0xc76//޸Ķ˿ +#define MINOR_MODIFY_STORAGE_PATH 0xc77//޸Ĵ洢· +#define MINOR_EXIT_PROGRAM 0xc78//˳ +#define MINOR_MODULE_STARTUP_SUCCESS 0xc79//ģɹ +#define MINOR_APPROVE_SCHEDULE 0xc80//ճ +#define MINOR_GENERAL_DATA_SEND 0xc81//· +#define MINOR_SET_SIGN_INTERFACE 0xc82//ǩ +#define MINOR_GET_SIGN_INTERFACE 0xc83//ȡǩ +#define MINOR_SET_SHOW_MODE 0xc84//ʾģʽ +#define MINOR_GET_SHOW_MODE 0xc85//ȡʾģʽ +#define MINOR_SET_SCREEN_DIRECTION 0xc86//Ļ +#define MINOR_GET_SCREEN_DIRECTION 0xc87//ȡĻ +#define MINOR_SET_LOCK_SCREEN 0xc88// +#define MINOR_GET_LOCK_SCREEN 0xc89//ȡ +#define MINOR_SET_FACE_DATA_LIB 0xc8a// +#define MINOR_DELETE_FACE_DATA_LIB 0xc8b//ɾ +#define MINOR_SET_SPEC_FACE_DATA_LIB 0xc8c//ָ +#define MINOR_DELETE_SPEC_FACE_DATA_LIB 0xc8d//ɾָ +#define MINOR_ADD_FACE_DATA 0xc8e// +#define MINOR_SEARCH_FACE_DATA 0xc8f//ѯ +#define MINOR_MODIFY_FACE_DATA 0xc90//޸ +#define MINOR_DELETE_FACE_DATA 0xc91//ɾ +#define MINOR_DELETE_USERINFO_DETAIL 0xc92//ԱϢȨɾ +#define MINOR_ADD_USERINFO 0xc93//ԱϢ +#define MINOR_MODIFY_USERINFO 0xc94//޸ԱϢ +#define MINOR_DELETE_USERINFO 0xc95//ɾԱϢ +#define MINOR_ADD_CARD_INFO 0xc96//ӿϢ +#define MINOR_MODIFY_CARD_INFO 0xc97//޸ĿϢ +#define MINOR_DELETE_CARD_INFO 0xc98//ɾϢ +#define MINOR_SET_USER_RIGHT_WEEK 0xc99//ԱȨܼƻ +#define MINOR_SET_USER_RIGHT_HOLIDAY 0xc9a//ԱȨ޽ռƻ +#define MINOR_SET_USER_RIGHT_HOLIDAYGROUP 0xc9b//ԱȨ޼ƻ +#define MINOR_SET_USER_RIGHT_TEMPLATE 0xc9c//ԱȨ޼ƻģ + +//2012-03-05 ITC־ +#define MINOR_SET_TRIGGERMODE_CFG 0x1001 /*ôģʽ*/ +#define MINOR_GET_TRIGGERMODE_CFG 0x1002 /*ȡģʽ*/ +#define MINOR_SET_IOOUT_CFG 0x1003 /*IO*/ +#define MINOR_GET_IOOUT_CFG 0x1004 /*ȡIO*/ +#define MINOR_GET_TRIGGERMODE_DEFAULT 0x1005 /*ȡģʽƼ*/ +#define MINOR_GET_ITCSTATUS 0x1006 /*ȡ״̬*/ +#define MINOR_SET_STATUS_DETECT_CFG 0x1007 /*״̬*/ +#define MINOR_GET_STATUS_DETECT_CFG 0x1008 /*ȡ״̬*/ +#define MINOR_SET_VIDEO_TRIGGERMODE_CFG 0x1009 /*Ƶģʽ*/ +#define MINOR_GET_VIDEO_TRIGGERMODE_CFG 0x100a /*ȡƵģʽ*/ + +//2018-04-23 ͨز־ +#define MINOR_ALARMHOST_GUARD 0x1010 //ͨ() +#define MINOR_ALARMHOST_UNGUARD 0x1011 //ͨ +#define MINOR_ALARMHOST_BYPASS 0x1012 //· +#define MINOR_ALARMHOST_DURESS_ACCESS 0x1013 //Ю + +#define MINOR_ALARMHOST_RS485_PARAM 0x1018 //޸485ò +#define MINOR_ALARMHOST_ALARM_OUTPUT 0x1019 //ƴ +#define MINOR_ALARMHOST_ACCESS_OPEN 0x101a //Ž +#define MINOR_ALARMHOST_ACCESS_CLOSE 0x101b //Ž +#define MINOR_ALARMHOST_SIREN_OPEN 0x101c //ƾſ +#define MINOR_ALARMHOST_SIREN_CLOSE 0x101d //ƾŹ +#define MINOR_ALARMHOST_MOD_ZONE_CONFIG 0x101e //޸ķ +#define MINOR_ALARMHOST_MOD_ALARMOUT_CONIFG 0x101f //޸Ĵ +#define MINOR_ALARMHOST_MOD_ANALOG_CONFIG 0x1020 //޸ģ +#define MINOR_ALARMHOST_RS485_CONFIG 0x1021 //޸485ͨ +#define MINOR_ALARMHOST_PHONE_CONFIG 0x1022 //޸IJ +#define MINOR_ALARMHOST_ADD_ADMIN 0x1023 //ӹԱ +#define MINOR_ALARMHOST_MOD_ADMIN_PARAM 0x1024 //޸ĹԱ +#define MINOR_ALARMHOST_DEL_ADMIN 0x1025 //ɾԱ +#define MINOR_ALARMHOST_ADD_NETUSER 0x1026 //Ӻ˲Ա +#define MINOR_ALARMHOST_MOD_NETUSER_PARAM 0x1027 //޸ĺ˲Ա +#define MINOR_ALARMHOST_DEL_NETUSER 0x1028 //ɾ˲Ա +#define MINOR_ALARMHOST_ADD_OPERATORUSER 0x1029 //ǰ˲Ա +#define MINOR_ALARMHOST_MOD_OPERATORUSER_PW 0x102a //޸ǰ˲Ա +#define MINOR_ALARMHOST_DEL_OPERATORUSER 0x102b //ɾǰ˲Ա +#define MINOR_ALARMHOST_ADD_KEYPADUSER 0x102c //Ӽ/û +#define MINOR_ALARMHOST_DEL_KEYPADUSER 0x102d //ɾ/û + + +#define MINOR_ALARMHOST_MOD_HOST_CONFIG 0x1032 //޸ +#define MINOR_ALARMHOST_RESTORE_BYPASS 0x1033 //·ָ + +#define MINOR_ALARMHOST_ALARMOUT_OPEN 0x1034 // +#define MINOR_ALARMHOST_ALARMOUT_CLOSE 0x1035 //ر +#define MINOR_ALARMHOST_MOD_SUBSYSTEM_PARAM 0x1036 //޸ϵͳ +#define MINOR_ALARMHOST_GROUP_BYPASS 0x1037 //· +#define MINOR_ALARMHOST_RESTORE_GROUP_BYPASS 0x1038 //·ָ +#define MINOR_ALARMHOST_MOD_GRPS_PARAM 0x1039 //޸GPRS + +#define MINOR_ALARMHOST_MOD_REPORT_MOD 0x103b //޸ϴʽ +#define MINOR_ALARMHOST_MOD_GATEWAY_PARAM 0x103c //޸Ž + +#define MINOR_STAY_ARM 0x104c //ز +#define MINOR_QUICK_ARM 0x104d //ʱ +#define MINOR_AUTOMATIC_ARM 0x104e //Զ +#define MINOR_AUTOMATIC_DISARM 0x104f //Զ +#define MINOR_KEYSWITCH_ARM 0x1050 //Կײ +#define MINOR_KEYSWITCH_DISARM 0x1051 //Կײ +#define MINOR_CLEAR_ALARM 0x1052 // +#define MINOR_MOD_FAULT_CFG 0x1053 //޸ϵͳ +#define MINOR_MOD_EVENT_TRIGGER_ALARMOUT_CFG 0x1054 //޸¼ +#define MINOR_SEARCH_EXTERNAL_MODULE 0x1055 //ģ +#define MINOR_REGISTER_EXTERNAL_MODULE 0x1056 //עģ +#define MINOR_CLOSE_KEYBOARD_ALARM 0x1057 //رռ̱ʾ +#define MINOR_MOD_3G_PARAM 0x1058 //޸3G +#define MINOR_MOD_PRINT_PARAM 0x1059 //޸Ĵӡ +#define MINOR_ALARMHOST_SD_CARD_FORMAT 0x1060 //SDʽ +#define MINOR_ALARMHOST_SUBSYSTEM_UPGRADE 0x1061 //Ӱ̼ + +#define MINOR_PLAN_ARM_CFG 0x1062 //ƻ +#define MINOR_PHONE_ARM 0x1063 //ֻ +#define MINOR_PHONE_STAY_ARM 0x1064 //ֻز +#define MINOR_PHONE_QUICK_ARM 0x1065 //ֻʱ +#define MINOR_PHONE_DISARM 0x1066 //ֻ +#define MINOR_PHONE_CLEAR_ALARM 0x1067 //ֻ +#define MINOR_ALLOWLIST_CFG 0x1068 // +#define MINOR_TIME_TRIGGER_CFG 0x1069 //ʱش +#define MINOR_CAPTRUE_CFG 0x106a //ץͼ +#define MINOR_TAMPER_CFG 0x106b // + +#define MINOR_REMOTE_KEYPAD_UPGRADE 0x106c //Զ +#define MINOR_ONETOUCH_AWAY_ARMING 0x106d //һ +#define MINOR_ONETOUCH_STAY_ARMING 0x106e //һز +#define MINOR_SINGLE_PARTITION_ARMING_OR_DISARMING 0x106f // +#define MINOR_CARD_CONFIGURATION 0x1070 // +#define MINOR_CARD_ARMING_OR_DISARMING 0x1071 //ˢ +#define MINOR_EXPENDING_NETCENTER_CONFIGURATION 0x1072 //չ +#define MINOR_NETCARD_CONFIGURATION 0x1073 // +#define MINOR_DDNS_CONFIGURATION 0x1074 //DDNS +#define MINOR_RS485BUS_CONFIGURATION 0x1075 // 485߲ +#define MINOR_RS485BUS_RE_REGISTRATION 0x1076 //485ע + +#define MINOR_REMOTE_OPEN_ELECTRIC_LOCK 0x1077 //Զ̴򿪵 +#define MINOR_REMOTE_CLOSE_ELECTRIC_LOCK 0x1078 //Զ̹رյ +#define MINOR_LOCAL_OPEN_ELECTRIC_LOCK 0x1079 //ش򿪵 +#define MINOR_LOCAL_CLOSE_ELECTRIC_LOCK 0x107a //عرյ +#define MINOR_OPEN_ALARM_LAMP 0x107b //򿪾(Զ) +#define MINOR_CLOSE_ALARM_LAMP 0x107c //رվ(Զ) + + +#define MINOR_TEMPORARY_PASSWORD 0x107d //ʱ¼ + +#define MINOR_HIDDNS_CONFIG 0x1082 // HIDDNS +#define MINOR_REMOTE_KEYBOARD_UPDATA 0x1083 //Զ̼־ +#define MINOR_ZONE_ADD_DETECTOR 0x1084 //̽ +#define MINOR_ZONE_DELETE_DETECTOR 0x1085 //ɾ̽ +#define MINOR_QUERY_DETECTOR_SIGNAL 0x1086 //ѯ̽źǿ +#define MINOR_QUERY_DETECTOR_BATTERY 0x1087 //ѯ̽ +#define MINOR_SET_DETECTOR_GUARD 0x1088 //̽ +#define MINOR_SET_DETECTOR_UNGUARD 0x1089 //̽ +#define MINOR_WIRELESS_CONFIGURATION 0x108a //߲ +#define MINOR_OPEN_VOICE 0x108b // +#define MINOR_CLOSE_VOICE 0x108c //ر +#define MINOR_ENABLE_FUNCTION_KEY 0x108d //ùܼ +#define MINOR_DISABLE_FUNCTION_KEY 0x108e //رչܼ +#define MINOR_READ_CARD 0x108f //Ѳˢ +#define MINOR_START_BROADCAST 0x1090 //㲥 +#define MINOR_STOP_BROADCAST 0x1091 //ر㲥 +#define MINOR_REMOTE_ZONE_MODULE_UPGRADE 0x1092 //Զģ +#define MINOR_NETWORK_MODULE_EXTEND 0x1093 //ģ +#define MINOR_ADD_CONTROLLER 0x1094 //ңû +#define MINOR_DELETE_CONTORLLER 0x1095 //ɾңû +#define MINOR_REMOTE_NETWORKMODULE_UPGRADE 0x1096 //Զģ +#define MINOR_WIRELESS_OUTPUT_ADD 0x1097 //עģ +#define MINOR_WIRELESS_OUTPUT_DEL 0x1098 //ɾģ +#define MINOR_WIRELESS_REPEATER_ADD 0x1099 //עм +#define MINOR_WIRELESS_REPEATER_DEL 0x109a //ɾм +#define MINOR_PHONELIST_CFG 0x109b //绰 +#define MINOR_RF_SIGNAL_CHECK 0x109c // RFźŲѯ +#define MINOR_USB_UPGRADE 0x109d // USB +#define MINOR_DOOR_TIME_REMINDER_CFG 0x109f //ŴŶʱѲ +#define MINOR_WIRELESS_SIREN_ADD 0x1100 //ע߾ +#define MINOR_WIRELESS_SIREN_DEL 0x1101 //ɾ߾ +#define MINOR_OUT_SCALE_OPEN 0x1102 //翪 +#define MINOR_OUT_SCALE_CLOSE 0x1103 //ر + +#define MINOR_ALARMHOST_4G_MODULS_START 0x1108 //4Gģ +#define MINOR_ALARMHOST_4G_MODULS_STOP 0x1109 //4Gģͣ + +#define MINOR_EZVIZ_CLOUD_START 0x1110 //өʯ +#define MINOR_EZVIZ_CLOUD_STOP 0x1111 //өʯͣ +#define MINOR_SIPUA_GRID_START 0x1112 //B +#define MINOR_SIPUA_GRID_STOP 0x1113 //Bͣ + +#define MINOR_MODBUS_FILE_DOWNLOAD 0x1114 //modbusЭļ +#define MINOR_MODBUS_FILE_UPLOAD 0x1115 //modbusЭļ + +#define MINOR_RS485_DLL_FILE_DOWNLOAD 0x1116 //485Эļ +#define MINOR_RS485_DLL_FLIE_UPLOAD 0x1117 //485Эļ +#define MINOR_TX1_REBOOT 0x1118 //TX1ϵͳ + +#define MINOR_LORA_PARAM 0x1119 //LoRa +#define MINOR_GB28181_PLATE_CFG_PARAM 0x111a //ƽ̨ +#define MINOR_GB28181_SERVER_START 0x111b // +#define MINOR_GB28181_SERVER_STOP 0x111c //ͣ +#define MINOR_WEB_AUTHENTICATION 0x111d //web֤ʽ +#define MINOR_SADP_ENABLED 0x111e //SADP +#define MINOR_HTTPS_ENABLED 0x111f //HTTPS +#define MINOR_EZVIZ_PARAM_CFG 0x1120 //өʯ +#define MINOR_SET_MOTION_DETECTION_CFG 0x1121 //ƶ +#define MINOR_GET_MOTION_DETECTION_CFG 0x1122 //ȡƶ +#define MINOR_SET_SHELTER_ALARM_CFG 0x1123 //ڵ +#define MINOR_GET_SHELTER_ALARM_CFG 0x1124 //ȡڵ +#define MINOR_SET_VIDEO_LOSS_CFG 0x1125 //Ƶʧ +#define MINOR_GET_VIDEO_LOSS_CFG 0x1126 //ȡƵʧ +#define MINOR_SET_ABNORMAL_CFG 0x1127 //쳣 +#define MINOR_GET_ABNORMAL_CFG 0x1128 //ȡ쳣 +#define MINOR_SET_ALARM_LINKAGE_CFG 0x1129 //ñ +#define MINOR_GET_ALARM_LINKAGE_CFG 0x112a //ȡ +#define MINOR_SET_NETWORK_CFG 0x112b // +#define MINOR_GET_NETWORK_CFG 0x112c //ȡ +#define MINOR_SET_VIDEO_MASK_CFG 0x112d //ƵڸDz +#define MINOR_GET_VIDEO_MASK_CFG 0x112e //ȡƵڸDz + +#define MINOR_BASIC_OPERATION_CFG 0x112f // +#define MINOR_DISPLAY_EFFECT_ADJUST_CFG 0x1130 //ʾЧ +#define MINOR_DISPLAY_PROPERTY_CFG 0x1131 //ʾ +#define MINOR_SIGNAL_CABLE_CFG 0x1132 //ź +#define MINOR_BASIC_CFG 0x1133 // +#define MINOR_IMAGE_ADJUST_CFG 0x1134 //ͼ +#define MINOR_IMAGE_ENHANCE_CFG 0x1135 //ͼǿ +#define MINOR_NOSIGN_SCREEN_SAVER_CFG 0x1136 //ź +#define MINOR_ADVANCED_OPERATION_CFG 0x1137 //߼ +#define MINOR_RECEIVE_CARD_CFG 0x1138 //տ +#define MINOR_INPUT_SUPPORT_CFG 0x1139 //ֹ֧ +#define MINOR_SYSTEM_MAINTAIN_CFG 0x113a //ϵͳά +#define MINOR_SYSTEM_TEST_CFG 0x113b //ϵͳ +#define MINOR_JOINT_CFG 0x113c //ƴ +#define MINOR_SHOW_MODE_CFG 0x113d //ʾģʽ +#define MINOR_ADVANCED_IMAGE_CFG 0x113e //߼ͼ +#define MINOR_SHELF_SIZE_CALIBRATION 0x1140 //ܹ궨 +#define MINOR_CARGO_SENSOR_CALIBRATION 0x1141 //񴫸궨 +#define MINOR_CARGO_PRODUCT_BIND_CFG 0x1142 //Ʒ + +//2013-04-19 ITS־ +#define MINOR_LOCAL_ADD_CAR_INFO 0x2001 /*ӳϢ*/ +#define MINOR_LOCAL_MOD_CAR_INFO 0x2002 /*޸ijϢ*/ +#define MINOR_LOCAL_DEL_CAR_INFO 0x2003 /*ɾϢ*/ +#define MINOR_LOCAL_FIND_CAR_INFO 0x2004 /*زҳϢ*/ +#define MINOR_LOCAL_ADD_MONITOR_INFO 0x2005 /*ӲϢ*/ +#define MINOR_LOCAL_MOD_MONITOR_INFO 0x2006 /*޸IJϢ*/ +#define MINOR_LOCAL_DEL_MONITOR_INFO 0x2007 /*ɾϢ*/ +#define MINOR_LOCAL_FIND_MONITOR_INFO 0x2008 /*زѯϢ*/ +#define MINOR_LOCAL_FIND_NORMAL_PASS_INFO 0x2009 /*زѯͨϢ*/ +#define MINOR_LOCAL_FIND_ABNORMAL_PASS_INFO 0x200a /*زѯ쳣ͨϢ*/ +#define MINOR_LOCAL_FIND_PEDESTRIAN_PASS_INFO 0x200b /*زѯͨϢ*/ +#define MINOR_LOCAL_PIC_PREVIEW 0x200c /*ͼƬԤ*/ +#define MINOR_LOCAL_SET_GATE_PARM_CFG 0x200d /*ñóڲ*/ +#define MINOR_LOCAL_GET_GATE_PARM_CFG 0x200e /*ȡóڲ*/ +#define MINOR_LOCAL_SET_DATAUPLOAD_PARM_CFG 0x200f /*ñϴ*/ +#define MINOR_LOCAL_GET_DATAUPLOAD_PARM_CFG 0x2010 /*ȡϴ*/ + +//2013-11-19־ +#define MINOR_LOCAL_DEVICE_CONTROL 0x2011 /*豸(ؿբ)*/ +#define MINOR_LOCAL_ADD_EXTERNAL_DEVICE_INFO 0x2012 /*豸Ϣ */ +#define MINOR_LOCAL_MOD_EXTERNAL_DEVICE_INFO 0x2013 /*޸豸Ϣ */ +#define MINOR_LOCAL_DEL_EXTERNAL_DEVICE_INFO 0x2014 /*ɾ豸Ϣ */ +#define MINOR_LOCAL_FIND_EXTERNAL_DEVICE_INFO 0x2015 /*زѯ豸Ϣ */ +#define MINOR_LOCAL_ADD_CHARGE_RULE 0x2016 /*շѹ */ +#define MINOR_LOCAL_MOD_CHARGE_RULE 0x2017 /*޸շѹ */ +#define MINOR_LOCAL_DEL_CHARGE_RULE 0x2018 /*ɾշѹ */ +#define MINOR_LOCAL_FIND_CHARGE_RULE 0x2019 /*زѯշѹ */ +#define MINOR_LOCAL_COUNT_NORMAL_CURRENTINFO 0x2020 /*ͳͨϢ */ +#define MINOR_LOCAL_EXPORT_NORMAL_CURRENTINFO_REPORT 0x2021 /*صͨϢͳƱ */ +#define MINOR_LOCAL_COUNT_ABNORMAL_CURRENTINFO 0x2022 /*ͳ쳣ͨϢ */ +#define MINOR_LOCAL_EXPORT_ABNORMAL_CURRENTINFO_REPORT 0x2023 /*ص쳣ͨϢͳƱ */ +#define MINOR_LOCAL_COUNT_PEDESTRIAN_CURRENTINFO 0x2024 /*ͳͨϢ */ +#define MINOR_LOCAL_EXPORT_PEDESTRIAN_CURRENTINFO_REPORT 0x2025 /*صͨϢͳƱ */ +#define MINOR_LOCAL_FIND_CAR_CHARGEINFO 0x2026 /*زѯշϢ */ +#define MINOR_LOCAL_COUNT_CAR_CHARGEINFO 0x2027 /*ͳƹշϢ */ +#define MINOR_LOCAL_EXPORT_CAR_CHARGEINFO_REPORT 0x2028 /*صշϢͳƱ */ +#define MINOR_LOCAL_FIND_SHIFTINFO 0x2029 /*زѯӰϢ */ +#define MINOR_LOCAL_FIND_CARDINFO 0x2030 /*زѯƬϢ */ +#define MINOR_LOCAL_ADD_RELIEF_RULE 0x2031 /*Ӽ */ +#define MINOR_LOCAL_MOD_RELIEF_RULE 0x2032 /*޸ļ */ +#define MINOR_LOCAL_DEL_RELIEF_RULE 0x2033 /*ɾ */ +#define MINOR_LOCAL_FIND_RELIEF_RULE 0x2034 /*زѯ */ +#define MINOR_LOCAL_GET_ENDETCFG 0x2035 /*ػȡڿƻ߼ */ +#define MINOR_LOCAL_SET_ENDETCFG 0x2036 /*óڿƻ߼*/ +#define MINOR_LOCAL_SET_ENDEV_ISSUEDDATA 0x2037 /*óڿƻ·ƬϢ */ +#define MINOR_LOCAL_DEL_ENDEV_ISSUEDDATA 0x2038 /*ճڿƻ·ƬϢ */ + +#define MINOR_REMOTE_DEVICE_CONTROL 0x2101 /*Զ豸*/ +#define MINOR_REMOTE_SET_GATE_PARM_CFG 0x2102 /*Զóڲ*/ +#define MINOR_REMOTE_GET_GATE_PARM_CFG 0x2103 /*ȡԶóڲ*/ +#define MINOR_REMOTE_SET_DATAUPLOAD_PARM_CFG 0x2104 /*Զϴ*/ +#define MINOR_REMOTE_GET_DATAUPLOAD_PARM_CFG 0x2105 /*ȡԶϴ*/ +#define MINOR_REMOTE_GET_BASE_INFO 0x2106 /*Զ̻ȡն˻Ϣ*/ +#define MINOR_REMOTE_GET_OVERLAP_CFG 0x2107 /*Զ̻ȡַӲ*/ +#define MINOR_REMOTE_SET_OVERLAP_CFG 0x2108 /*ԶַӲ*/ +#define MINOR_REMOTE_GET_ROAD_INFO 0x2109 /*Զ̻ȡ·Ϣ*/ +#define MINOR_REMOTE_START_TRANSCHAN 0x210a /*Զ̽ͬݷ*/ +#define MINOR_REMOTE_GET_ECTWORKSTATE 0x210b /*Զ̻ȡն˹״̬*/ +#define MINOR_REMOTE_GET_ECTCHANINFO 0x210c /*Զ̻ȡնͨ״̬*/ + +//Զ̿ 2013-11-19 +#define MINOR_REMOTE_ADD_EXTERNAL_DEVICE_INFO 0x210d /*Զ豸Ϣ */ +#define MINOR_REMOTE_MOD_EXTERNAL_DEVICE_INFO 0x210e /*Զ޸豸Ϣ */ +#define MINOR_REMOTE_GET_ENDETCFG 0x210f /*Զ̻ȡڿƻ߼ */ +#define MINOR_REMOTE_SET_ENDETCFG 0x2110 /*Զóڿƻ߼*/ +#define MINOR_REMOTE_ENDEV_ISSUEDDATA 0x2111 /*Զóڿƻ·ƬϢ */ +#define MINOR_REMOTE_DEL_ENDEV_ISSUEDDATA 0x2112 /*Զճڿƻ·ƬϢ */ + +//ITS 0x2115~0x2120 ͣλĿ +#define MINOR_REMOTE_ON_CTRL_LAMP 0x2115 /*Զ̿Ƴλָʾ*/ +#define MINOR_REMOTE_OFF_CTRL_LAMP 0x2116 /*رԶ̿Ƴλָʾ*/ +//Netra3.1.0 +#define MINOR_SET_VOICE_LEVEL_PARAM 0x2117 /*С */ +#define MINOR_SET_VOICE_INTERCOM_PARAM 0x2118 /*¼ */ +#define MINOR_SET_INTELLIGENT_PARAM 0x2119 /**/ +#define MINOR_LOCAL_SET_RAID_SPEED 0x211a /*raidٶ*/ +#define MINOR_REMOTE_SET_RAID_SPEED 0x211b /*Զraidٶ*/ +//Nerta3.1.2 +#define MINOR_REMOTE_CREATE_STORAGE_POOL 0x211c //ԶӴ洢 +#define MINOR_REMOTE_DEL_STORAGE_POOL 0x211d //Զɾ洢 + +#define MINOR_REMOTE_DEL_PIC 0x2120 //ԶɾͼƬ +#define MINOR_REMOTE_DEL_RECORD 0x2121 //Զɾ¼ +#define MINOR_REMOTE_CLOUD_ENABLE 0x2123 //Զϵͳ +#define MINOR_REMOTE_CLOUD_DISABLE 0x2124 //Զϵͳ +#define MINOR_REMOTE_CLOUD_MODIFY_PARAM 0x2125 //Զ޸Ĵ洢ز +#define MINOR_REMOTE_CLOUD_MODIFY_VOLUME 0x2126 //Զ޸Ĵ洢 +#define MINOR_REMOTE_GET_GB28181_SERVICE_PARAM 0x2127 //Զ̻ȡGB28181 +#define MINOR_REMOTE_SET_GB28181_SERVICE_PARAM 0x2128 //ԶGB28181 +#define MINOR_LOCAL_GET_GB28181_SERVICE_PARAM 0x2129 //ػȡGB28181 +#define MINOR_LOCAL_SET_GB28181_SERVICE_PARAM 0x212a //B28181 +#define MINOR_REMOTE_SET_SIP_SERVER 0x212b //ԶSIP SERVER +#define MINOR_LOCAL_SET_SIP_SERVER 0x212c //SIP SERVER +#define MINOR_LOCAL_BLOCKALLOWFILE_OUTPUT 0x212d // +#define MINOR_LOCAL_BLOCKALLOWFILE_INPUT 0x212e // +#define MINOR_REMOTE_BLOCKALLOWCFGFILE_OUTPUT 0x212f //Զ +#define MINOR_REMOTE_BLOCKALLOWCFGFILE_INPUT 0x2130 //Զ + + +#define MINOR_REMOTE_CREATE_MOD_VIEWLIB_SPACE 0x2200 /*Զ̴/޸ͼռ*/ +#define MINOR_REMOTE_DELETE_VIEWLIB_FILE 0x2201 /*Զɾͼļ*/ +#define MINOR_REMOTE_DOWNLOAD_VIEWLIB_FILE 0x2202 /*Զͼļ*/ +#define MINOR_REMOTE_UPLOAD_VIEWLIB_FILE 0x2203 /*Զϴͼļ*/ +#define MINOR_LOCAL_CREATE_MOD_VIEWLIB_SPACE 0x2204 /*ش/޸ͼռ*/ + +#define MINOR_LOCAL_SET_DEVICE_ACTIVE 0x3000 //ؼ豸 +#define MINOR_REMOTE_SET_DEVICE_ACTIVE 0x3001 //Զ̼豸 +#define MINOR_LOCAL_PARA_FACTORY_DEFAULT 0x3002 //ػظ +#define MINOR_REMOTE_PARA_FACTORY_DEFAULT 0x3003 //Զָ̻ +#define MIMOR_REMOTE_DELETE_ALL_VERIFYORCAP_PICS 0x3004 //Զɾ֤ץͼƬ +#define MIMOR_LOCAL_DELETE_ALL_VERIFYORCAP_PICS 0x3005 //ɾ֤ץͼƬ +#define MIMOR_REMOTE_DELETE_EVENTS_AT_SPECTIME 0x3006 //Զָ̰ʱɾ¼ +#define MIMOR_LOCAL_DELETE_EVENTS_AT_SPECTIME 0x3007 //ذָʱɾ¼ +#define MIMOR_REMOTE_OPEN_SUMMER_TIME 0x3008 //Զ̿ʱ +#define MIMOR_LOCAL_OPEN_SUMMER_TIME 0x3009 //ؿʱ +#define MIMOR_REMOTE_CLOSE_SUMMER_TIME 0x3010 //Զ̹رʱ +#define MIMOR_LOCAL_CLOSE_SUMMER_TIME 0x3011 //عرʱ +#define MIMOR_REMOTE_EZVIZ_UNBIND 0x3012 //Զөʯƽ +#define MIMOR_LOCAL_EZVIZ_UNBIND 0x3013 //өʯƽ +#define MIMOR_ENTER_LOCALUI_BACKGROUND 0x3014 //UĮ +#define MIMOR_REMOTE_DELETE_FACEBASEMAP 0x3015 //Զɾͼ +#define MIMOR_LOCAL_DELETE_FACEBASEMAP 0x3016 //ɾͼ + + +/*Ϣ־*/ +#define MINOR_UPLAOD_STATIC_MATERIAL 0x2401 //̬زϴ +#define MINOR_UPLOAD_DYNAMIC_MATERIAL 0x2402 //̬زϴ +#define MINOR_DELETE_MATERIAL 0x2403 //ɾز +#define MINOR_DOWNLOAD_STATIC_MATERIAL 0x2404 //̬ز +#define MINOR_COVER_STATIC_MATERIAL 0x2405 //̬زĸ +#define MINOR_APPROVE_MATERIAL 0x2406 //ز +#define MINOR_UPLAOD_PROGRAM 0x2407 //ϴĿ +#define MINOR_DOWNLOAD_PROGRAM 0x2408 //ؽĿ +#define MINOR_DELETE_PROGRAM 0x2409 //ɾĿ +#define MINOR_MODIFY_PROGRAM 0x240a //Ŀ޸ +#define MINOR_APPROVE_PRAGRAM 0x240b //Ŀ +#define MINOR_UPLAOD_SCHEDULE 0x240c //ϴճ +#define MINOR_DOWNLOAD_SCHEDULE 0x240d //ճ +#define MINOR_DELETE_SCHEDULE 0x240e //ɾճ +#define MINOR_MODIFY_SCHEDULE 0x240f //޸ճ +#define MINOR_RELEASE_SCHEDULE 0x2410 //ճ +#define MINOR_ADD_TERMINAL 0x2411 //ն +#define MINOR_DELETE_TERMINAL 0x2412 //ɾն +#define MINOR_MODIFY_TERMIANL_PARAM 0x2413 //޸ն˲ +#define MINOR_MODIFY_TERMIANL_PLAY_PARAM 0x2414 //ն˲Ų +#define MINOR_ADD_TERMIANL_GROUP 0x2415 //ն +#define MINOR_MODIFY_TERMINAL_GROUP_PARAM 0x2416 //޸ն +#define MINOR_DELETE_TERMIANL_GROUP 0x2417 //ɾն +#define MINOR_TERMINAL_PLAY_CONTROL 0x2418 //ն˲ſ +#define MINOR_TERMINAL_ON_OFF_LINE 0x2419 //ն +#define MINOR_SET_SWITCH_PLAN 0x241a //ն˶ʱػƻ +#define MINOR_SET_VOLUME_PLAN 0x241b //ն˶ʱƻ +#define MINOR_TERMINAL_SCREENSHOT 0x241c //ն˽ +#define MINOR_SYSTEM_TIME_CFG 0x241d //ϵͳУʱ +#define MINOR_ADD_USER_CFG 0x241e //û +#define MINOR_DEL_USER_CFG 0x241f //ɾû +#define MINOR_REMOTE_MANAGE_HDD 0x2420 //Զ̱༭Ӳ +#define MINOR_TERMINAL_UPDATE_START 0x2421 //ն +#define MINOR_SVR_RESTORE_DEFAULT_PARAM 0x2422 //Զָ̻Ĭ +#define MINOR_SVR_REMOTE_RESTORE_FACTORY 0x2423 //Զָ̻ +#define MINOR_SVR_REMOTE_REBOOT 0x2424 //Զ +#define MINOR_SVR_MODIFY_NETWORK_PARAM 0x2425 //޸ +#define MINOR_SVR_SOFTWARE_UPGRADE 0x2426 // + + + +#define MINOR_REMOTE_CONFERENCE_CONFIG 0x2501 //MCU +#define MINOR_REMOTE_TERMINAL_CONFIG 0x2502 //MCUն +#define MINOR_REMOTE_GROUP_CONFIG 0x2503 //MCU +#define MINOR_REMOTE_CONFERENCE_CTRL 0x2504 //MCU +#define MINOR_REMOTE_TERMINAL_CTRL 0x2505 //MCUն˿ +#define MINOR_ADD_VIDEOWALLSCENE 0x2506 //½ǽ +#define MINOR_DEL_VIDEOWALLSCENE 0x2507 //ɾǽ +#define MINOR_SAVE_VIDEOWALLSCENE 0x2508 //ǽ +#define MINOR_UPLOAD_SCENECFGFILE 0x2509 //ϴǽļ +#define MINOR_DOWNLOAD_SCENECFGFILE 0x250a //صǽļ + + +//NVR +#define MINOR_LOCAL_RESET_LOGIN_PASSWORD 0x2600 /* admin½*/ +#define MINOR_REMOTE_RESET_LOGIN_PASSWORD 0x2601 /* Զadmin¼ */ +#define MINOR_LOCAL_FACE_BASE_CREATE 0x2602 /* Աȿⴴ*/ +#define MINOR_REMOTE_FACE_BASE_CREATE 0x2603 /* ԶԱȿⴴ*/ +#define MINOR_LOCAL_FACE_BASE_MODIFY 0x2604 /* Աȿ޸*/ +#define MINOR_REMOTE_FACE_BASE_MODIFY 0x2605 /* ԶԱȿ޸*/ +#define MINOR_LOCAL_FACE_BASE_DELETE 0x2606 /* Աȿɾ*/ +#define MINOR_REMOTE_FACE_BASE_DELETE 0x2607 /* ԶԱȿɾ*/ +#define MINOR_LOCAL_FACE_DATA_APPEND 0x2608 /* ¼*/ +#define MINOR_REMOTE_FACE_DATA_APPEND 0x2609 /* Զ¼*/ +#define MINOR_LOCAL_FACE_DATA_SEARCH 0x2610 /* ȶݲ*/ +#define MINOR_REMOTE_FACE_DATA_SEARCH 0x2611 /* Զȶݲ*/ +#define MINOR_LOCAL_FACE_DATA_ANALYSIS 0x2612 /* ͼƬ*/ +#define MINOR_REMOTE_FACE_DATA_ANALYSIS 0x2613 /* ԶͼƬ*/ +#define MINOR_LOCAL_FACE_DATA_EDIT 0x2614 /* ޸*/ +#define MINOR_REMOTE_FACE_DATA_EDIT 0x2615 /* Զ޸*/ + +#define MINOR_LOCAL_FACE_DATA_DELETE 0x2616 /* ɾ*/ +#define MINOR_REMOTE_FACE_DATA_DELET 0x2617 /* Զɾ*/ + +#define MINOR_LOCAL_VCA_ANALYSIS_CFG 0x2618 /* ܷ*/ +#define MINOR_REMOTE_VCA_ANALYSIS_CFG 0x2619 /* Զܷ*/ + +#define MINOR_LOCAL_FACE_BASE_IMPORT 0x261a /* ص*/ +#define MINOR_LOCAL_FACE_BASE_EXPORT 0x261b /* ص*/ +//NVRȺ +#define MINOR_REMOTE_CLUSTER_MODE_CONFIG 0x261c /* Զ̼Ⱥģʽò*/ +#define MINOR_LOCAL_CLUSTER_MODE_CONFIG 0x261d /* ؼȺģʽò*/ +#define MINOR_REMOTE_CLUSTER_NETWORK_CONFIG 0x261e /* Զ̼Ⱥò*/ +#define MINOR_LOCAL_CLUSTER_NETWORK_CONFIG 0x261f /* ؼȺò*/ +#define MINOR_REMOTE_CLUSTER_ADD_DEVICE 0x2620 /* Զ̼Ⱥ豸*/ +#define MINOR_LOCAL_CLUSTER_ADD_DEVICE 0x2621 /* ؼȺ豸*/ +#define MINOR_REMOTE_CLUSTER_DEL_DEVICE 0x2622 /* Զ̼Ⱥɾ豸*/ +#define MINOR_LOCAL_CLUSTER_DEL_DEVICE 0x2623 /* ؼȺɾ豸*/ +#define MINOR_REMOTE_HFPD_CFG 0x2624 /* Զ̸ƵԱ*/ +#define MINOR_REMOTE_FACE_CONTRAST_TASK 0x2625 /* Զȶ */ +#define MINOR_REMOTE_LFPD_CFG 0x2626 /* Զ̵ƵԱ*/ +#define MINOR_REMOTE_IOTCFGFILE_INPUT 0x2627//Զ̵IOTļ +#define MINOR_REMOTE_IOTCFGFILE_OUTPUT 0x2628//Զ̵IOTļ +#define MINOR_LOCAL_IOT_ADD 0x2629//IOTͨ +#define MINOR_REMOTE_IOT_ADD 0x262a//ԶIOTͨ +#define MINOR_LOCAL_IOT_DEL 0x262b//ɾIOTͨ +#define MINOR_REMOTE_IOT_DEL 0x262c//ԶɾIOTͨ +#define MINOR_LOCAL_IOT_SET 0x262d//IOTͨ +#define MINOR_REMOTE_IOT_SET 0x262e//ԶIOTͨ +#define MINOR_LOCAL_IOTCFGFILE_INPUT 0x262f //صIOTļ +#define MINOR_LOCAL_IOTCFGFILE_OUTPUT 0x2630//صIOTļ +#define MINOR_LOCAL_VAD_CFG 0x2631 /* */ +#define MINOR_REMOTE_VAD_CFG 0x2632 /* Զ*/ +#define MINOR_LOCAL_ADDRESS_FILTER_CONFIG 0x2633 /* صַ*/ +#define MINOR_REMOTE_ADDRESS_FILTER_CONFIG 0x2634 /* Զ̵ַ*/ +#define MINOR_LOCAL_POE_CFG 0x2635 /* POE*/ +#define MINOR_REMOTE_POE_CFG 0x2636 /* ԶPOE*/ +#define MINOR_LOCAL_RESET_CHANNEL_PASSWORD 0x2637 /* ͨ*/ +#define MINOR_REMOTE_RESET_CHANNEL_PASSWORD 0x2638 /* Զͨ*/ +#define MINOR_LOCAL_SSD_UPGRADE_START 0x2639 /* SSDļϵͳʼ*/ +#define MINOR_LOCAL_SSD_UPGRADE_STOP 0x2640 /* SSDļϵͳ*/ +#define MINOR_REMOTE_SSD_UPGRADE_START 0x2641 /* ԶSSDļϵͳʼ*/ +#define MINOR_REMOTE_SSD_UPGRADE_STOP 0x2642 /* ԶSSDļϵͳ*/ +#define MINOR_LOCAL_SSD_FORMAT_START 0x2643 /*SSDļϵͳʽʼ*/ +#define MINOR_LOCAL_SSD_FORMAT_STOP 0x2644 /*SSDļϵͳʽ*/ +#define MINOR_REMOTE_SSD_FORMAT_START 0x2645 /*ԶSSDļϵͳʽʼ*/ +#define MINOR_REMOTE_SSD_FORMAT_STOP 0x2646 /*ԶSSDļϵͳʽ*/ +#define MINOR_LOCAL_AUTO_SWITCH_CONFIG 0x2647 /* Զػ*/ +#define MINOR_REMOTE_AUTO_SWITCH_CONFIG 0x2648 /* ԶԶػ*/ + +#define MINOR_LOCAL_SSD_INITIALIZATION_START 0x264a /* SSDʼʼ*/ +#define MINOR_LOCAL_SSD_INITIALIZATION_END 0x264b /* SSDʼ*/ +#define MINOR_REMOTE_SSD_INITIALIZATION_START 0x264c /* ԶSSDʼʼ*/ +#define MINOR_REMOTE_SSD_INITIALIZATION_END 0x264d /* ԶSSDʼ*/ + + +//AIƽ̨IJ־ +#define MINOR_REMOTE_AI_MODEL_ADD 0x2650//ģͰ +#define MINOR_REMOTE_AI_MODEL_QUERY 0x2651//ģͰѯ +#define MINOR_REMOTE_AI_MODEL_DELETE 0x2652//ģͰɾ +#define MINOR_REMOTE_AI_MODEL_UPDATE 0x2653//ģͰ +#define MINOR_REMOTE_AI_PICTURE_POLLING_TASK_ADD 0x2654//ͼƬѯ +#define MINOR_REMOTE_AI_PICTURE_POLLING_TASK_QUERY 0x2655//ͼƬѯѯ +#define MINOR_REMOTE_AI_PICTURE_POLLING_TASK_DELETE 0x2656//ͼƬѯɾ +#define MINOR_REMOTE_AI_PICTURE_POLLING_TASK_MODIFY 0x2657//ͼƬѯ޸ +#define MINOR_REMOTE_AI_VIDEO_POLLING_TASK_ADD 0x2658//Ƶѯ +#define MINOR_REMOTE_AI_VIDEO_POLLING_TASK_QUERY 0x2659//Ƶѯѯ +#define MINOR_REMOTE_AI_VIDEO_POLLING_TASK_DELETE 0x265A//Ƶѯɾ +#define MINOR_REMOTE_AI_VIDEO_POLLING_TASK_MODIFY 0x265B//Ƶѯ޸ +#define MINOR_REMOTE_AI_PICTURE_TASK_ADD 0x265C//ͼƬ +#define MINOR_REMOTE_AI_PICTURE_TASK_QUERY 0x265D//ͼƬѯ +#define MINOR_REMOTE_AI_PICTURE_TASK_DELETE 0x265E//ͼƬɾ +#define MINOR_REMOTE_AI_PICTURE_TASK_MODIFY 0x265F//ͼƬ޸ +#define MINOR_REMOTE_AI_VIDEO_TASK_ADD 0x2660//Ƶ +#define MINOR_REMOTE_AI_VIDEO_TASK_QUERY 0x2661//Ƶѯ +#define MINOR_REMOTE_AI_VIDEO_TASK_DELETE 0x2662//Ƶɾ +#define MINOR_REMOTE_AI_VIDEO_TASK_MODIFY 0x2663//Ƶ޸ +#define MINOR_REMOTE_AI_RULE_CONFIG 0x2664//AI + +#define MINOR_REMOTE_LOG_STORAGE_CONFIG 0x2665//־洢 +#define MINOR_REMOTE_LOG_SERVER_CONFIG 0x2666//־ + +#define MINOR_REMOTE_RESET_IPC_PASSWORD 0x2670//NVRIPC־ + +//өʯƽ̨־ +#define MINOR_LOCAL_EZVIZ_OPERATION 0x2671 //өʯ(өʯú) +#define MINOR_REMOTE_EZVIZ_OPERATION 0x2672 //Զөʯ(өʯú) + +#define MINOR_EZVIZ_BITSTREAM_PARAMATERS_CONFIG 0x2673 /* өʯ*/ +#define MINOR_EZVIZ_ALARM_PARAMATERS_CONFIG 0x2674 /* өʯ*/ +#define MINOR_EZVIZ_UPGRADE 0x2675 /* өʯ*/ +#define MINOR_EZVIZ_REGISTER 0x2676 /* өʯע*/ +#define MINOR_EZVIZ_LOCAL_PARAMATERS_CONFIG 0x2677 /* өʯز*/ +#define MINOR_EZVIZ_REMOTE_PARAMATERS_CONFIG 0x2678 /* өʯԶ̲*/ + + +//־ +#define MINOR_STOP_SOUND 0x2700 /**/ +#define MINOR_SELF_CHECK 0x2701 /*Լ*/ +#define MINOR_DUTY_CHECK 0x2702 /**/ +#define MINOR_SWITCH_SIMPLE_WORKMODE 0x2703 /*лģʽ*/ +#define MINOR_SWITCH_NORMAL_WORKMODE 0x2704 /*л׼ģʽ*/ +#define MINOR_LOCAL_SSD_OPERATE_START 0x2705 /* SSDʼ*/ +#define MINOR_LOCAL_SSD_OPERATE_STOP 0x2706 /* SSD*/ +#define MINOR_REMOTE_SSD_OPERATE_START 0x2707 /* ԶSSDʼ*/ +#define MINOR_REMOTE_SSD_OPERATE_STOP 0x2708 /* ԶSSD*/ + +/*־Ϣ*/ +// +#define MAJOR_INFORMATION 0x4 /*Ϣ*/ +// +#define MINOR_HDD_INFO 0xa1 /*ӲϢ*/ +#define MINOR_SMART_INFO 0xa2 /*SMARTϢ*/ +#define MINOR_REC_START 0xa3 /*ʼ¼*/ +#define MINOR_REC_STOP 0xa4 /*ֹͣ¼*/ +#define MINOR_REC_OVERDUE 0xa5 /*¼ɾ*/ +#define MINOR_LINK_START 0xa6 //ǰ豸 +#define MINOR_LINK_STOP 0xa7 //Ͽǰ豸 +#define MINOR_NET_DISK_INFO 0xa8 //ӲϢ +#define MINOR_RAID_INFO 0xa9 //raidϢ +#define MINOR_RUN_STATUS_INFO 0xaa /*ϵͳ״̬Ϣ*/ + +//Netra3.0.0 +#define MINOR_SPARE_START_BACKUP 0xab /*ȱϵͳʼָ*/ +#define MINOR_SPARE_STOP_BACKUP 0xac /*ȱϵͳָֹͣ*/ +#define MINOR_SPARE_CLIENT_INFO 0xad /*ȱͻϢ*/ +#define MINOR_ANR_RECORD_START 0xae /*ANR¼ʼ*/ +#define MINOR_ANR_RECORD_END 0xaf /*ANR¼*/ +#define MINOR_ANR_ADD_TIME_QUANTUM 0xb0 /*ANRʱ*/ +#define MINOR_ANR_DEL_TIME_QUANTUM 0xb1 /*ANRɾʱ*/ + +#define MINOR_PIC_REC_START 0xb3 /* ʼץͼ*/ +#define MINOR_PIC_REC_STOP 0xb4 /* ֹͣץͼ*/ +#define MINOR_PIC_REC_OVERDUE 0xb5 /* ͼƬļɾ */ +//Netra3.1.0 +#define MINOR_CLIENT_LOGIN 0xb6 /*¼ɹ*/ +#define MINOR_CLIENT_RELOGIN 0xb7 /*µ¼*/ +#define MINOR_CLIENT_LOGOUT 0xb8 /*˳ɹ*/ +#define MINOR_CLIENT_SYNC_START 0xb9 /*¼ͬʼ*/ +#define MINOR_CLIENT_SYNC_STOP 0xba /*¼ֹͬ*/ +#define MINOR_CLIENT_SYNC_SUCC 0xbb /*¼ͬɹ*/ +#define MINOR_CLIENT_SYNC_EXCP 0xbc /*¼ͬ쳣*/ +#define MINOR_GLOBAL_RECORD_ERR_INFO 0xbd /*ȫִ¼Ϣ*/ +#define MINOR_BUFFER_STATE 0xbe /*״̬־¼*/ +#define MINOR_DISK_ERRORINFO_V2 0xbf /*Ӳ̴ϸϢV2*/ +#define MINOR_CS_DATA_EXPIRED 0xc0 //ƴ洢ݹ +#define MINOR_PLAT_INFO 0xc1 //ƽ̨Ϣ +#define MINOR_DIAL_STAT 0xc2 /*״̬*/ + +#define MINOR_UNLOCK_RECORD 0xc3 //¼ +#define MINOR_VIS_ALARM 0xc4 // +#define MINOR_TALK_RECORD 0xc5 //ͨ¼ +#define MINOR_ACCESSORIES_MESSAGE 0xc6 //Ϣ +#define MINOR_KMS_EXPAMSION_DISK_INSERT 0xc7// KMS̲ +#define MINOR_IPC_CONNECT 0xc8// IPCϢ +#define MINOR_INTELLIGENT_BOARD_STATUS 0xc9// ܰ״̬ +#define MINOR_IPC_CONNECT_STATUS 0xca// IPC״̬ +#define MINOR_AUTO_TIMING 0xcb //ԶУʱ +#define MINOR_EZVIZ_OPERATION 0xcc //өʯ״̬ +//NVRȺ +#define MINOR_CLUSTER_DEVICE_ONLINE 0xcd //Ⱥ豸 +#define MINOR_CLUSTER_MGR_SERVICE_STARTUP 0xce //Ⱥ +#define MINOR_CLUSTER_BUSINESS_TRANSFER 0xcf //ȺҵǨ +#define MINOR_CLUSTER_STATUS 0xd0 //Ⱥ״̬Ϣ +#define MINOR_CLUSTER_CS_STATUS 0xd1 //ȺCSCM豸״̬ʧܣ¼CSCMIPַ +#define MINOR_CLUSTER_CM_STATUS 0xd2 //CM״̬л¼CMתĽɫleaderfollowercandidate +#define MINOR_VOICE_START_DETECTED 0xd3 /*⵽ʼ*/ +#define MINOR_VOICE_END_DETECTED 0xd4 /*⵽*/ +#define MINOR_DOUBLE_VERIFICATION_PASS 0xd5 /*֤ͨ*/ +#define MINOR_WIRELESS_RUNNING_STATUS 0xd6 /*״̬*/ +#define MINOR_SYSTEM_DATA_SYNCHRONIZATION 0xd7 /*ϵͳͬ*/ +#define MINOR_HD_FORMAT_START 0xd8 /*Ӳ̸ʽʼ*/ +#define MINOR_HD_FORMAT_STOP 0xd9 /*Ӳ̸ʽ*/ + +//0x400-0x4ff ŽϢ־ +#define MINOR_LIVE_DETECT_OPEN 0x400 //˼⿪ +#define MINOR_LIVE_DETECT_CLOSE 0x401 //˼ر +#define MINOR_CLEAR_DATA_COLLECTION 0x402 //ɼ +#define MINOR_DELETE_DATA_COLLECTION 0x403 //ɼɾ +#define MINOR_EXPORT_DATA_COLLECTION 0x404 //ɼݵ +#define MINOR_CARD_LEN_CONFIG 0x405 // +#define MINOR_DATA_BASE_INIT_FAILED 0x406 //ݿʼʧ +#define MINOR_DATA_BASE_PATCH_UPDATE 0x407 //ݿⲹ +#define MINOR_PSAM_CARD_INSERT 0x408 //Psam +#define MINOR_PSAM_CARD_REMOVE 0x409 //Psamγ +#define MINOR_HARD_FAULT_REBOOT 0x40a //Ӳ쳣hardfault +#define MINOR_PSAM_CARD_OCP 0x40b //Psam +#define MINOR_STACK_OVERFLOW 0x40c //ջ +#define MINOR_PARM_CFG 0x40d // +#define MINOR_CLR_USER 0x40e //û +#define MINOR_CLR_CARD 0x40f //п +#define MINOR_CLR_FINGER_BY_READER 0x410 //ָ() +#define MINOR_CLR_FINGER_BY_CARD 0x411 //ָ() +#define MINOR_CLR_FINGER_BY_EMPLOYEE_ON 0x412 //ָ() +#define MINOR_DEL_FINGER 0x413 //ɾһָ +#define MINOR_CLR_WEEK_PLAN 0x414 //Ȩܼƻ +#define MINOR_SET_WEEK_PLAN 0x415 //Ȩܼƻ +#define MINOR_SET_HOLIDAY_PLAN 0x416 //Ȩ޼ռƻ +#define MINOR_CLR_HOLIDAY_PLAN 0x417 //Ȩ޼ռƻ +#define MINOR_SET_HOLIDAY_GROUP 0x418 //Ȩ޼ƻ +#define MINOR_CLR_HOLIDAY_GROUP 0x419 //Ȩ޼ƻ +#define MINOR_CLR_TEMPLATE_PLAN 0x41a //Ȩ޼ƻ +#define MINOR_SET_TEMPLATE_PLAN 0x41b //Ȩ޼ƻ +#define MINOR_ADD_CARD 0x41c // +#define MINOR_MOD_CARD 0x41d //޸Ŀ +#define MINOR_ADD_FINGER_BY_CARD 0x41e //ָ() +#define MINOR_ADD_FINGER_BY_EMPLOYEE_NO 0x41f //ָ() +#define MINOR_MOD_FINGER_BY_CARD 0x420 //޸ָ() +#define MINOR_MOD_FINGER_BY_EMPLOYEE_NO 0x421 //޸ָ() +#define MINOR_IMPORT_USER_LIST 0x422 //ûб루߲ɼ +#define MINOR_USB_LOGIN 0x423 //USB½ +#define MINOR_USB_LOGOUT 0x424 //USBdz +#define MINOR_ISAPI_HTTP_LOGIN 0x425 //ISAPI HTTP½ +#define MINOR_ISAPI_HTTP_LOGOUT 0x426 //ISAPI HTTP dz +#define MINOR_ISAPI_HTTPS_LOGIN 0x427 //ISAPI HTTPS½ +#define MINOR_ISAPI_HTTPS_LOGOUT 0x428 //ISAPI HTTPSdz +#define MINOR_ISUP_ONLINE 0x429 //ISUP +#define MINOR_ISUP_OFFLINE 0x42a//ISUP +#define MINOR_FP_ISSUE_REC 0x42b //ָƷ¼ +#define MINOR_FACE_ISSUE_REC 0x42c//¼ +#define MINOR_ADD_IRIS 0x42d //·Ĥ +#define MINOR_MODIFY_IRIS 0x42e //޸ĺĤ +#define MINOR_DELETE_EMPLOYEE_IRIS 0x42f //ɾûĤɾ +#define MINOR_DELETE_WHOLE_IRIS 0x430 //ɾȫĤ +#define MINOR_MODIFY_IRIS_CFG 0x431 //޸ĺĤ +#define MINOR_ADD_USER_INFO 0x432 //ԱϢŽԱȨޣ +#define MINOR_MODIFY_USER_INFO 0x433 //޸ԱϢŽԱȨޣ +#define MINOR_CLR_USER_INFO 0x434 //ɾԱϢŽԱȨޣţ +#define MINOR_CLR_CARD_BY_CARD_OR_EMPLOYEE 0x435 //ɾŻ򹤺ţ +#define MINOR_CLR_ALL_CARD 0x436 //ɾп +#define MINOR_SIM_CARD_INSERT 0x437 //SIM +#define MINOR_SIM_CARD_PULLOUT 0x438 //SIMγ +#define MINOR_FINGERPRINT_RECOGNITION_OPEN 0x439 //ָʶ +#define MINOR_FINGERPRINT_RECOGNITION_CLOSE 0x43a //ָʶر +#define MINOR_FACE_RECOGNITION_OPEN 0x43b //ʶ +#define MINOR_FACE_RECOGNITION_CLOSE 0x43c //ʶر +#define MINOR_RESET_ONLINE_READER 0x43d //߶ +#define MINOR_CLEAR_IRIS_PICTURE 0x43e //պĤͼ + +//802.1x֤־ +#define MINOR_802_1X_AUTH_SUCC 0x320 /*802.1x֤ɹ*/ +#define MINOR_802_1X_AUTH_FAIL 0x321 /*802.1x֤ʧ*/ + +/*¼*/ +// +#define MAJOR_EVENT 0x5 /*¼*/ +// +#define MINOR_LEGAL_CARD_PASS 0x01 //Ϸ֤ͨ +#define MINOR_CARD_AND_PSW_PASS 0x02 //ˢ֤ͨ +#define MINOR_CARD_AND_PSW_FAIL 0x03 //ˢ֤ʧ +#define MINOR_CARD_AND_PSW_TIMEOUT 0x04 //֤ʱ +#define MINOR_CARD_AND_PSW_OVER_TIME 0x05 //ˢ볬 +#define MINOR_CARD_NO_RIGHT 0x06 //δȨ +#define MINOR_CARD_INVALID_PERIOD 0x07 //Чʱ +#define MINOR_CARD_OUT_OF_DATE 0x08 //Ź +#define MINOR_INVALID_CARD 0x09 //޴˿ +#define MINOR_ANTI_SNEAK_FAIL 0x0a //DZ֤ʧ +#define MINOR_INTERLOCK_DOOR_NOT_CLOSE 0x0b //δر +#define MINOR_NOT_BELONG_MULTI_GROUP 0x0c //ڶ֤Ⱥ +#define MINOR_INVALID_MULTI_VERIFY_PERIOD 0x0d //ڶ֤ʱ +#define MINOR_MULTI_VERIFY_SUPER_RIGHT_FAIL 0x0e //֤ģʽȨ֤ʧ +#define MINOR_MULTI_VERIFY_REMOTE_RIGHT_FAIL 0x0f //֤ģʽԶ֤ʧ +#define MINOR_MULTI_VERIFY_SUCCESS 0x10 //֤ɹ +#define MINOR_LEADER_CARD_OPEN_BEGIN 0x11 //׿ſʼ +#define MINOR_LEADER_CARD_OPEN_END 0x12 //׿Ž +#define MINOR_ALWAYS_OPEN_BEGIN 0x13 //״̬ʼ +#define MINOR_ALWAYS_OPEN_END 0x14 //״̬ +#define MINOR_LOCK_OPEN 0x15 // +#define MINOR_LOCK_CLOSE 0x16 //ر +#define MINOR_DOOR_BUTTON_PRESS 0x17 //Űť +#define MINOR_DOOR_BUTTON_RELEASE 0x18 //Űťſ +#define MINOR_DOOR_OPEN_NORMAL 0x19 //ţŴţ +#define MINOR_DOOR_CLOSE_NORMAL 0x1a //ţŴţ +#define MINOR_DOOR_OPEN_ABNORMAL 0x1b //쳣򿪣Ŵţ +#define MINOR_DOOR_OPEN_TIMEOUT 0x1c //Ŵ򿪳ʱŴţ +#define MINOR_ALARMOUT_ON 0x1d // +#define MINOR_ALARMOUT_OFF 0x1e //ر +#define MINOR_ALWAYS_CLOSE_BEGIN 0x1f //״̬ʼ +#define MINOR_ALWAYS_CLOSE_END 0x20 //״̬ +#define MINOR_MULTI_VERIFY_NEED_REMOTE_OPEN 0x21 //ض֤ҪԶ̿ +#define MINOR_MULTI_VERIFY_SUPERPASSWD_VERIFY_SUCCESS 0x22 //֤֤ɹ¼ +#define MINOR_MULTI_VERIFY_REPEAT_VERIFY 0x23 //֤ظ֤¼ +#define MINOR_MULTI_VERIFY_TIMEOUT 0x24 //֤ظ֤¼ +#define MINOR_DOORBELL_RINGING 0x25 // +#define MINOR_FINGERPRINT_COMPARE_PASS 0x26 //ָƱȶͨ +#define MINOR_FINGERPRINT_COMPARE_FAIL 0x27 //ָƱȶʧ +#define MINOR_CARD_FINGERPRINT_VERIFY_PASS 0x28 //ˢָ֤ͨ +#define MINOR_CARD_FINGERPRINT_VERIFY_FAIL 0x29 //ˢָ֤ʧ +#define MINOR_CARD_FINGERPRINT_VERIFY_TIMEOUT 0x2a //ˢָ֤ʱ +#define MINOR_CARD_FINGERPRINT_PASSWD_VERIFY_PASS 0x2b //ˢָƼ֤ͨ +#define MINOR_CARD_FINGERPRINT_PASSWD_VERIFY_FAIL 0x2c //ˢָƼ֤ʧ +#define MINOR_CARD_FINGERPRINT_PASSWD_VERIFY_TIMEOUT 0x2d //ˢָƼ֤ʱ +#define MINOR_FINGERPRINT_PASSWD_VERIFY_PASS 0x2e //ָƼ֤ͨ +#define MINOR_FINGERPRINT_PASSWD_VERIFY_FAIL 0x2f //ָƼ֤ʧ +#define MINOR_FINGERPRINT_PASSWD_VERIFY_TIMEOUT 0x30 //ָƼ֤ʱ +#define MINOR_FINGERPRINT_INEXISTENCE 0x31 //ָƲ +#define MINOR_CARD_PLATFORM_VERIFY 0x32 //ˢƽ̨֤ +#define MINOR_CALL_CENTER 0x33 //¼ +#define MINOR_FIRE_RELAY_TURN_ON_DOOR_ALWAYS_OPEN 0x34 //̵ͨų +#define MINOR_FIRE_RELAY_RECOVER_DOOR_RECOVER_NORMAL 0x35 //̵ָŻָ +#define MINOR_FACE_AND_FP_VERIFY_PASS 0x36 //ָ֤ͨ +#define MINOR_FACE_AND_FP_VERIFY_FAIL 0x37 //ָ֤ʧ +#define MINOR_FACE_AND_FP_VERIFY_TIMEOUT 0x38 //ָ֤ʱ +#define MINOR_FACE_AND_PW_VERIFY_PASS 0x39 //֤ͨ +#define MINOR_FACE_AND_PW_VERIFY_FAIL 0x3a //֤ʧ +#define MINOR_FACE_AND_PW_VERIFY_TIMEOUT 0x3b //֤ʱ +#define MINOR_FACE_AND_CARD_VERIFY_PASS 0x3c //ˢ֤ͨ +#define MINOR_FACE_AND_CARD_VERIFY_FAIL 0x3d //ˢ֤ʧ +#define MINOR_FACE_AND_CARD_VERIFY_TIMEOUT 0x3e //ˢ֤ʱ +#define MINOR_FACE_AND_PW_AND_FP_VERIFY_PASS 0x3f //ָ֤ͨ +#define MINOR_FACE_AND_PW_AND_FP_VERIFY_FAIL 0x40 //ָ֤ʧ +#define MINOR_FACE_AND_PW_AND_FP_VERIFY_TIMEOUT 0x41 //ָ֤ʱ +#define MINOR_FACE_CARD_AND_FP_VERIFY_PASS 0x42 //ˢָ֤ͨ +#define MINOR_FACE_CARD_AND_FP_VERIFY_FAIL 0x43 //ˢָ֤ʧ +#define MINOR_FACE_CARD_AND_FP_VERIFY_TIMEOUT 0x44 //ˢָ֤ʱ +#define MINOR_EMPLOYEENO_AND_FP_VERIFY_PASS 0x45 //żָ֤ͨ +#define MINOR_EMPLOYEENO_AND_FP_VERIFY_FAIL 0x46 //żָ֤ʧ +#define MINOR_EMPLOYEENO_AND_FP_VERIFY_TIMEOUT 0x47 //żָ֤ʱ +#define MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_PASS 0x48 //żָƼ֤ͨ +#define MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_FAIL 0x49 //żָƼ֤ʧ +#define MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_TIMEOUT 0x4a //żָƼ֤ʱ +#define MINOR_FACE_VERIFY_PASS 0x4b //֤ͨ +#define MINOR_FACE_VERIFY_FAIL 0x4c //֤ʧ +#define MINOR_EMPLOYEENO_AND_FACE_VERIFY_PASS 0x4d //ż֤ͨ +#define MINOR_EMPLOYEENO_AND_FACE_VERIFY_FAIL 0x4e //ż֤ʧ +#define MINOR_EMPLOYEENO_AND_FACE_VERIFY_TIMEOUT 0x4f //ż֤ʱ +#define MINOR_FACE_RECOGNIZE_FAIL 0x50 //ʶʧ +#define MINOR_FIRSTCARD_AUTHORIZE_BEGIN 0x51 //׿Ȩʼ +#define MINOR_FIRSTCARD_AUTHORIZE_END 0x52 //׿Ȩ +#define MINOR_DOORLOCK_INPUT_SHORT_CIRCUIT 0x53 //· +#define MINOR_DOORLOCK_INPUT_BROKEN_CIRCUIT 0x54 //· +#define MINOR_DOORLOCK_INPUT_EXCEPTION 0x55 //쳣 +#define MINOR_DOORCONTACT_INPUT_SHORT_CIRCUIT 0x56 //Ŵ· +#define MINOR_DOORCONTACT_INPUT_BROKEN_CIRCUIT 0x57 //Ŵ· +#define MINOR_DOORCONTACT_INPUT_EXCEPTION 0x58 //Ŵ쳣 +#define MINOR_OPENBUTTON_INPUT_SHORT_CIRCUIT 0x59 //Űť· +#define MINOR_OPENBUTTON_INPUT_BROKEN_CIRCUIT 0x5a //Űť· +#define MINOR_OPENBUTTON_INPUT_EXCEPTION 0x5b //Űť쳣 +#define MINOR_DOORLOCK_OPEN_EXCEPTION 0x5c //쳣 +#define MINOR_DOORLOCK_OPEN_TIMEOUT 0x5d //򿪳ʱ +#define MINOR_FIRSTCARD_OPEN_WITHOUT_AUTHORIZE 0x5e //׿δȨʧ +#define MINOR_CALL_LADDER_RELAY_BREAK 0x5f //ݼ̵Ͽ +#define MINOR_CALL_LADDER_RELAY_CLOSE 0x60 //ݼ̵պ +#define MINOR_AUTO_KEY_RELAY_BREAK 0x61 //Զ̵Ͽ +#define MINOR_AUTO_KEY_RELAY_CLOSE 0x62 //Զ̵պ +#define MINOR_KEY_CONTROL_RELAY_BREAK 0x63 //ݿؼ̵Ͽ +#define MINOR_KEY_CONTROL_RELAY_CLOSE 0x64 //ݿؼ̵պ +#define MINOR_EMPLOYEENO_AND_PW_PASS 0x65 //ż֤ͨ +#define MINOR_EMPLOYEENO_AND_PW_FAIL 0x66 //ż֤ʧ +#define MINOR_EMPLOYEENO_AND_PW_TIMEOUT 0x67 //ż֤ʱ +#define MINOR_HUMAN_DETECT_FAIL 0x68 //˼ʧ +#define MINOR_PEOPLE_AND_ID_CARD_COMPARE_PASS 0x69 //֤ȶͨ +#define MINOR_PEOPLE_AND_ID_CARD_COMPARE_FAIL 0x70 //֤ȶʧ +#define MINOR_CERTIFICATE_BLOCKLIST 0x71 //ֹ¼ +#define MINOR_LEGAL_MESSAGE 0x72 //Ϸ +#define MINOR_ILLEGAL_MESSAGE 0x73 //Ƿ +#define MINOR_DOOR_OPEN_OR_DORMANT_FAIL 0x75 //״̬ջ״̬֤ʧ +#define MINOR_AUTH_PLAN_DORMANT_FAIL 0x76 //֤ƻģʽ֤ʧ +#define MINOR_CARD_ENCRYPT_VERIFY_FAIL 0x77 //Уʧ +#define MINOR_SUBMARINEBACK_REPLY_FAIL 0x78 //DZطӦʧ +#define MINOR_DOOR_OPEN_OR_DORMANT_OPEN_FAIL 0x82 //ųջʱŰťʧ +#define MINOR_HEART_BEAT 0x83 //¼ +#define MINOR_DOOR_OPEN_OR_DORMANT_LINKAGE_OPEN_FAIL 0x84 //ųջʱʧ +#define MINOR_TRAILING 0x85 //βͨ +#define MINOR_REVERSE_ACCESS 0x86 // +#define MINOR_FORCE_ACCESS 0x87 //ײ +#define MINOR_CLIMBING_OVER_GATE 0x88 //Խ +#define MINOR_PASSING_TIMEOUT 0x89 //ͨгʱ +#define MINOR_INTRUSION_ALARM 0x8a //󴳱 +#define MINOR_FREE_GATE_PASS_NOT_AUTH 0x8b //բͨʱδ֤ͨ +#define MINOR_DROP_ARM_BLOCK 0x8c //ڱ۱赲 +#define MINOR_DROP_ARM_BLOCK_RESUME 0x8d //ڱ赲 +#define MINOR_LOCAL_FACE_MODELING_FAIL 0x8e //豸ģʧ +#define MINOR_STAY_EVENT 0x8f //¼ +#define MINOR_CERTIFICATE_ALLOWLIST_PASS 0x90 //Ȩ֤ͨ +#define MINOR_CERTIFICATE_ALLOWLIST_FALL 0x91 //Ȩ֤ʧ +#define MINOR_FACE_COLLECTION 0x92 //ɼ¼֤Զ̺ʱϱ +#define MINOR_CARD_COLLECTION 0x93 //ɼ¼֤Զ̺ʱϱ +#define MINOR_PSW_ERROR_OVER_TIMES 0x94 //֤ʧܳ +#define MINOR_ID_CARD_COLLECTION 0x95 //֤ɼ¼֤Զ̺ʱϱ +#define MINOR_PSW_VERIFY_FAIL 0x96 //֤ʧ +#define MINOR_PASSWORD_MISMATCH 0x97 //벻ƥ +#define MINOR_EMPLOYEE_NO_NOT_EXIST 0x98 //Ų +#define MINOR_COMBINED_VERIFY_PASS 0x99 //֤ͨ +#define MINOR_COMBINED_VERIFY_TIMEOUT 0x9a //֤ʱ +#define MINOR_VERIFY_MODE_MISMATCH 0x9b //֤ʽƥ +#define MINOR_ORCODE_VERIFY_PASS 0x9c //ά֤ͨ +#define MINOR_ORCODE_VERIFY_FAIL 0x9d //ά֤ʧ +#define MINOR_HOUSEHOLDER_AUTHORIZE_PASS 0x9e //Ȩ֤ͨ +#define MINOR_BLUETOOTH_VERIFY_PASS 0x9f //֤ͨ +#define MINOR_BLUETOOTH_VERIFY_FAIL 0xa0 //֤ʧ + +#define MINOR_PASSPORT_VERIFY_FAIL 0xa1 //ϢУʧ +#define MINOR_INFORMAL_MIFARE_CARD_VERIFY_FAIL 0xa2 //Mifare֤ʧ +#define MINOR_CPU_CARD_ENCRYPT_VERIFY_FAIL 0xa3 //CPUУʧ +#define MINOR_NFC_DISABLE_VERIFY_FAIL 0xa4 //NFCܹر֤ʧ + +#define MINOR_LORA_MODULE_ONLINE 0xa5 //LoRaģ +#define MINOR_LORA_MODULE_OFFLINE 0xa6 //LoRaģ +#define MINOR_MQTT_STATUS 0xa7 //Mqtt״̬ + +#define MINOR_EM_CARD_RECOGNIZE_NOT_ENABLED 0xa8 //EMʶδ +#define MINOR_M1_CARD_RECOGNIZE_NOT_ENABLED 0xa9 //M1ʶδ +#define MINOR_CPU_CARD_RECOGNIZE_NOT_ENABLED 0xaa //CPUʶδ +#define MINOR_ID_CARD_RECOGNIZE_NOT_ENABLED 0xab //֤ʶδ +#define MINOR_CARD_SET_SECRET_KEY_FAIL 0xac //װԿʧ +#define MINOR_LOCAL_UPGRADE_FAIL 0xad /* ʧ */ +#define MINOR_REMOTE_UPGRADE_FAIL 0xae /* Զʧ */ +#define MINOR_REMOTE_EXTEND_MODULE_UPGRADE_SUCC 0xaf /*Զչģɹ*/ +#define MINOR_REMOTE_EXTEND_MODULE_UPGRADE_FAIL 0xb0 /*Զչģʧ*/ +#define MINOR_REMOTE_FINGER_PRINT_MODULE_UPGRADE_SUCC 0xb1 /*Զָģɹ*/ +#define MINOR_REMOTE_FINGER_PRINT_MODULE_UPGRADE_FAIL 0xb2 /*Զָģʧ*/ +#define MINOR_PASSWD_VERIFY_PASS 0xb5 //֤ͨ +#define MINOR_COMSUME_TIMEOUT 0xb6 //ѳʱ +#define MINOR_REFUND_TIMEOUT 0xb7 //ʱ +#define MINOR_COMSUME_AMOUNT_OVERLIMIT 0xb8 //ѽֵ +#define MINOR_COMSUME_TIMES_OVERLIMIT 0xb9 //Ѵ +#define MINOR_USER_COMSUME_ENSURE_TIMEOUT 0xba //ûȷϳʱ +#define MINOR_BLOCKLIST_REACH_THRESHOLD 0xbb //ֹﵽֵ +#define MINOR_DESFIRE_CARD_ENCRYPT_VERIFY_FAIL 0xbc //DesfireУʧ +#define MINOR_DESFIRE_CARD_RECOGNIZE_NOT_ENABLED 0xbd //Desfireʶδ +#define MINOR_IRIS_VERIFY_PASS 0xbe //Ĥ֤ͨ +#define MINOR_IRIS_VERIFY_FAIL 0xbf //Ĥ֤ʧ +#define MINOR_IRIS_BIOASSAY_FAIL 0xc0 //Ĥʧ +#define MINOR_FULL_STAFF 0xc1 //Ա¼Ա90%ʱ +#define MINOR_ATTENDANCE_RECORD_EXCEED_THRESHOLD 0xc2 //ؿڼ¼õֵ +#define MINOR_DYNAMICCODE_VERIFY_INVALID 0xc3 // ̬֤֤ +#define MINOR_MEETING_NO_SIGNIN 0xc4 //δǩ +#define MINOR_MEETING_SIGNIN 0xc5 //ǩ +#define MINOR_MEETING_LATE 0xc6 //ٵ + +#define MINOR_INTERLOCK_SERVER_FAILED_RESPONSE 0xc9 //ŻӦʧ +#define MINOR_FINGERPRINT_DISENABELD_VERIFY_FAIL 0xca //ָʶδʹ֤ʧ +#define MINOR_FACE_DISENABELD_VERIFY_FAIL 0xcb //ʶδʹ֤ʧ +#define MINOR_MONITOR_OPEN_DOOR 0xcc //ӿ +#define MINOR_READER_FACTORY_RESET 0xcd //ָ +#define MINOR_READER_ID_CONFLICT 0xce //IDͻ +#define MINOR_FELICA_CARD_RECOGNIZE_NOT_ENABLED 0xcf //Felicaʶδ +#define MINOR_PROPERTY_EXCEPTION_VERIFY_FAIL 0xd0 //쳣֤ʧܣδ֣ȫñ쳣쳣 +#define MINOR_MEETING_NO_PERSON 0xd1 //ǻԱģʽ£״̬ǻԱǩϱ¼ +#define MINOR_MEETING_NOT_START 0xd2 //δʼ״̬Աǩ +#define MINOR_MEETING_SIGNEDIN 0xd3 //ǩǩԱظǩ +#define MINOR_AUTHENTICATION_TIMES_REACHED 0xd4 //Ա֤Ȩ޼ƻĵǰʱڣﵽ֤ƣ +#define MINOR_FACE_MODEL_FAIL_BY_UPGRADE 0xd5 //ģʧ¼ + +#define MINOR_UNCLOCK_RECORD 0xd6 //豸¼¼ϱ +#define MINOR_DOOR_NOT_OPEN 0xd7 //δԽ豸 +#define MINOR_DOOR_UNCLOSED 0xd8 //δرԽ豸 + +#define MINOR_EVENT_CUSTOM1 0x500 //ŽԶ¼1 +#define MINOR_EVENT_CUSTOM2 0x501 //ŽԶ¼2 +#define MINOR_EVENT_CUSTOM3 0x502 //ŽԶ¼3 +#define MINOR_EVENT_CUSTOM4 0x503 //ŽԶ¼4 +#define MINOR_EVENT_CUSTOM5 0x504 //ŽԶ¼5 +#define MINOR_EVENT_CUSTOM6 0x505 //ŽԶ¼6 +#define MINOR_EVENT_CUSTOM7 0x506 //ŽԶ¼7 +#define MINOR_EVENT_CUSTOM8 0x507 //ŽԶ¼8 +#define MINOR_EVENT_CUSTOM9 0x508 //ŽԶ¼9 +#define MINOR_EVENT_CUSTOM10 0x509 //ŽԶ¼10 +#define MINOR_EVENT_CUSTOM11 0x50a //ŽԶ¼11 +#define MINOR_EVENT_CUSTOM12 0x50b //ŽԶ¼12 +#define MINOR_EVENT_CUSTOM13 0x50c //ŽԶ¼13 +#define MINOR_EVENT_CUSTOM14 0x50d //ŽԶ¼14 +#define MINOR_EVENT_CUSTOM15 0x50e //ŽԶ¼15 +#define MINOR_EVENT_CUSTOM16 0x50f //ŽԶ¼16 +#define MINOR_EVENT_CUSTOM17 0x510 //ŽԶ¼17 +#define MINOR_EVENT_CUSTOM18 0x511 //ŽԶ¼18 +#define MINOR_EVENT_CUSTOM19 0x512 //ŽԶ¼19 +#define MINOR_EVENT_CUSTOM20 0x513 //ŽԶ¼20 +#define MINOR_EVENT_CUSTOM21 0x514 //ŽԶ¼21 +#define MINOR_EVENT_CUSTOM22 0x515 //ŽԶ¼22 +#define MINOR_EVENT_CUSTOM23 0x516 //ŽԶ¼23 +#define MINOR_EVENT_CUSTOM24 0x517 //ŽԶ¼24 +#define MINOR_EVENT_CUSTOM25 0x518 //ŽԶ¼25 +#define MINOR_EVENT_CUSTOM26 0x519 //ŽԶ¼26 +#define MINOR_EVENT_CUSTOM27 0x51a //ŽԶ¼27 +#define MINOR_EVENT_CUSTOM28 0x51b //ŽԶ¼28 +#define MINOR_EVENT_CUSTOM29 0x51c //ŽԶ¼29 +#define MINOR_EVENT_CUSTOM30 0x51d //ŽԶ¼30 +#define MINOR_EVENT_CUSTOM31 0x51e //ŽԶ¼31 +#define MINOR_EVENT_CUSTOM32 0x51f //ŽԶ¼32 +#define MINOR_EVENT_CUSTOM33 0x520 //ŽԶ¼33 +#define MINOR_EVENT_CUSTOM34 0x521 //ŽԶ¼34 +#define MINOR_EVENT_CUSTOM35 0x522 //ŽԶ¼35 +#define MINOR_EVENT_CUSTOM36 0x523 //ŽԶ¼36 +#define MINOR_EVENT_CUSTOM37 0x524 //ŽԶ¼37 +#define MINOR_EVENT_CUSTOM38 0x525 //ŽԶ¼38 +#define MINOR_EVENT_CUSTOM39 0x526 //ŽԶ¼39 +#define MINOR_EVENT_CUSTOM40 0x527 //ŽԶ¼40 +#define MINOR_EVENT_CUSTOM41 0x528 //ŽԶ¼41 +#define MINOR_EVENT_CUSTOM42 0x529 //ŽԶ¼42 +#define MINOR_EVENT_CUSTOM43 0x52a //ŽԶ¼43 +#define MINOR_EVENT_CUSTOM44 0x52b //ŽԶ¼44 +#define MINOR_EVENT_CUSTOM45 0x52c //ŽԶ¼45 +#define MINOR_EVENT_CUSTOM46 0x52d //ŽԶ¼46 +#define MINOR_EVENT_CUSTOM47 0x52e //ŽԶ¼47 +#define MINOR_EVENT_CUSTOM48 0x52f //ŽԶ¼48 +#define MINOR_EVENT_CUSTOM49 0x530 //ŽԶ¼49 +#define MINOR_EVENT_CUSTOM50 0x531 //ŽԶ¼50 +#define MINOR_EVENT_CUSTOM51 0x532 //ŽԶ¼51 +#define MINOR_EVENT_CUSTOM52 0x533 //ŽԶ¼52 +#define MINOR_EVENT_CUSTOM53 0x534 //ŽԶ¼53 +#define MINOR_EVENT_CUSTOM54 0x535 //ŽԶ¼54 +#define MINOR_EVENT_CUSTOM55 0x536 //ŽԶ¼55 +#define MINOR_EVENT_CUSTOM56 0x537 //ŽԶ¼56 +#define MINOR_EVENT_CUSTOM57 0x538 //ŽԶ¼57 +#define MINOR_EVENT_CUSTOM58 0x539 //ŽԶ¼58 +#define MINOR_EVENT_CUSTOM59 0x53a //ŽԶ¼59 +#define MINOR_EVENT_CUSTOM60 0x53b //ŽԶ¼60 +#define MINOR_EVENT_CUSTOM61 0x53c //ŽԶ¼61 +#define MINOR_EVENT_CUSTOM62 0x53d //ŽԶ¼62 +#define MINOR_EVENT_CUSTOM63 0x53e //ŽԶ¼63 +#define MINOR_EVENT_CUSTOM64 0x53f //ŽԶ¼64 +#define MINOR_ESD_OK 0x540 //ESDϸ +#define MINOR_ESD_LINKAGE_DISENABLE 0x541 //ESDϸ񣬲 +#define MINOR_ESD_LINKAGE_ENABLE 0x542 //ESDϸ񣬿 +#define MINOR_ESD_OVERTIME 0x543 //ESDⳬʱ + + +#define MINOR_LOCK_FINGER_OPEN_DOOR 0x600 //ָƿ +#define MINOR_LOCK_PASSWORD_OPEN_DOOR 0x601 //뿪 +#define MINOR_LOCK_CARD_OPEN_DOOR 0x602 //ˢ +#define MINOR_LOCK_CENTER_OPEN_DOOR 0x603 //Ŀ +#define MINOR_LOCK_APP_OPEN_DOOR 0x604 //APP +#define MINOR_LOCK_KEY_OPEN_DOOR 0x605 //Կ׿ +#define MINOR_LOCK_REMOTE_DEVICE_OPEN_DOOR 0x606 //ң +#define MINOR_LOCK_TMP_PASSWORD_OPEN_DOOR 0x607 //ʱ뿪 +#define MINOR_LOCK_BLUETOOTH_OPEN_DOOR 0x608 // +#define MINOR_LOCK_MULTI_OPEN_DOOR 0x609 //ؿ + +//2018-04-23 ͨ¼־ +#define MINOR_ALARMHOST_SCHOOLTIME_IRGI_B 0x1001 //BУʱ +#define MINOR_ALARMHOST_SCHOOLTIME_SDK 0x1002 //SDKУʱ +#define MINOR_ALARMHOST_SCHOOLTIME_SELFTEST 0x1003 //ԼУʱ +#define MINOR_ALARMHOST_SUBSYSTEM_ABNORMALINSERT 0x1004 //Ӱ +#define MINOR_ALARMHOST_SUBSYSTEM_ABNORMALPULLOUT 0x1005 //Ӱγ + +#define MINOR_ALARMHOST_AUTO_ARM 0x1006 //Զ +#define MINOR_ALARMHOST_AUTO_DISARM 0x1007 //Զ +#define MINOR_ALARMHOST_TIME_TIGGER_ON 0x1008 //ʱ +#define MINOR_ALARMHOST_TIME_TIGGER_OFF 0x1009 //ʱرմ +#define MINOR_ALARMHOST_AUTO_ARM_FAILD 0x100a //Զʧ +#define MINOR_ALARMHOST_AUTO_DISARM_FAILD 0x100b //Զʧ +#define MINOR_ALARMHOST_TIME_TIGGER_ON_FAILD 0x100c //ʱʧ +#define MINOR_ALARMHOST_TIME_TIGGER_OFF_FAILD 0x100d //ʱرմʧ +#define MINOR_ALARMHOST_MANDATORY_ALARM 0x100e //ǿƲ +#define MINOR_ALARMHOST_KEYPAD_LOCKED 0x100f // +#define MINOR_ALARMHOST_USB_INSERT 0x1010 //USB +#define MINOR_ALARMHOST_USB_PULLOUT 0x1011 //USBγ +#define MINOR_ALARMHOST_4G_MODULS_ONLINE 0x1012 //4Gģ +#define MINOR_ALARMHOST_4G_MODULS_OFFLINE 0x1013 //4Gģ + +#define MINOR_EZVIZ_CLOUD_ONLINE 0x1014 //өʯ +#define MINOR_EZVIZ_CLOUD_OFFLINE 0x1015 //өʯ + +#define MINOR_SIPUA_GRID_ONLINE 0x1016 //B +#define MINOR_SIPUA_GRID_OFFLINE 0x1017 //B + +#define MINOR_INTERNET_ACCESS_CONNECTED 0x1018 // +#define MINOR_INTERNET_ACCESS_BREAK 0x1019 //ڶϿ + +#define MINOR_WIRELESS_CONNECTED 0x101a // +#define MINOR_WIRELESS_BREAK 0x101b //߶Ͽ +#define MINOR_PORT_LINK_DOWN 0x101c //˿down +#define MINOR_PORT_LINK_UP 0x101d //˿up +#define MINOR_POE_PORT_POWER_ON 0x101e //POE˿power on +#define MINOR_POE_PORT_POWER_OFF 0x101f //POE˿power off +#define MINOR_POE_TOTAL_POWER_MAX 0x1020 //POEܹʴﵽpoe-max +#define MINNOR_POE_TOTAL_POWER_RESUME 0x1021 //POEܹʻָ +#define MINNOR_CARGO_ITEMS 0x1022 //Ʒȡ + + +typedef enum tagALARMHOST_MAJOR_TYPE +{ + MAJOR_ALARMHOST_ALARM = 1, + MAJOR_ALARMHOST_EXCEPTION, + MAJOR_ALARMHOST_OPERATION, + MAJ0R_ALARMHOST_EVENT +}ALARMHOST_MAJOR_TYPE; + +typedef enum tagALARMHOST_MINOR_TYPE +{ + // + MINOR_SHORT_CIRCUIT =0x01, // · + MINOR_BROKEN_CIRCUIT, // · + MINOR_ALARM_RESET, // λ + MINOR_ALARM_NORMAL, // ָ + MINOR_PASSWORD_ERROR, // 3 + MINOR_ID_CARD_ILLEGALLY, // ǷӦID + MINOR_KEYPAD_REMOVE, // ̷ + MINOR_KEYPAD_REMOVE_RESTORE, // ̷λ + MINOR_DEV_REMOVE, // 豸 + MINOR_DEV_REMOVE_RESTORE, // 豸λ + MINOR_BELOW_ALARM_LIMIT1, // ģڱ1 + MINOR_BELOW_ALARM_LIMIT2, // ģڱ2 + MINOR_BELOW_ALARM_LIMIT3, // ģڱ3 + MINOR_BELOW_ALARM_LIMIT4, // ģڱ4 + MINOR_ABOVE_ALARM_LIMIT1, // ģڱ1 + MINOR_ABOVE_ALARM_LIMIT2, // ģڱ2 + MINOR_ABOVE_ALARM_LIMIT3, // ģڱ3 + MINOR_ABOVE_ALARM_LIMIT4, // ģڱ4 + MINOR_URGENCYBTN_ON, // ť + MINOR_URGENCYBTN_OFF, // ťλ + MINOR_VIRTUAL_DEFENCE_BANDIT, //˾ + MINOR_VIRTUAL_DEFENCE_FIRE, // + MINOR_VIRTUAL_DEFENCE_URGENT, // + MINOR_ALARMHOST_MOTDET_START, //ƶⱨʼ + MINOR_ALARMHOST_MOTDET_STOP, //ƶⱨ + MINOR_ALARMHOST_HIDE_ALARM_START, //ڵʼ + MINOR_ALARMHOST_HIDE_ALARM_STOP, //ڵ + MINOR_ALARMHOST_UPS_ALARM, //UPS + MINOR_ALARMHOST_ELECTRICITY_METER_ALARM, // + MINOR_ALARMHOST_SWITCH_POWER_ALARM, //صԴ + MINOR_ALARMHOST_GAS_DETECT_SYS_ALARM, //ϵͳ + MINOR_ALARMHOST_TRANSFORMER_TEMPRATURE_ALARM, //Ա + MINOR_ALARMHOST_TEMP_HUMI_ALARM, //ʪȴ + MINOR_ALARMHOST_UPS_ALARM_RESTORE, //UPSָ + MINOR_ALARMHOST_ELECTRICITY_METER_ALARM_RESTORE, //ָ + MINOR_ALARMHOST_SWITCH_POWER_ALARM_RESTORE, //صԴָ + MINOR_ALARMHOST_GAS_DETECT_SYS_ALARM_RESTORE, //ϵͳָ + MINOR_ALARMHOST_TRANSFORMER_TEMPRATURE_ALARM_RESTORE, //Աָ + MINOR_ALARMHOST_TEMP_HUMI_ALARM_RESTORE, //ʪȴָ + MINOR_ALARMHOST_WATER_LEVEL_SENSOR_ALARM, //ˮλ + MINOR_ALARMHOST_WATER_LEVEL_SENSOR_ALARM_RESTORE, //ˮλָ + MINOR_ALARMHOST_DUST_NOISE_ALARM, //ﳾ + MINOR_ALARMHOST_DUST_NOISE_ALARM_RESTORE, //ﳾָ + MINOR_ALARMHOST_ENVIRONMENTAL_LOGGER_ALARM, //ɼDZ + MINOR_ALARMHOST_ENVIRONMENTAL_LOGGER_ALARM_RESTORE, //ɼDZָ + + MINOR_ALARMHOST_TRIGGER_TAMPER, //̽ + MINOR_ALARMHOST_TRIGGER_TAMPER_RESTORE, //ָ̽ + MINOR_ALARMHOST_EMERGENCY_CALL_HELP_ALARM, // + MINOR_ALARMHOST_EMERGENCY_CALL_HELP_ALARM_RESTORE, //ָ + MINOR_ALARMHOST_CONSULTING_ALARM, //ҵѯ + MINOR_ALARMHOST_CONSULTING_ALARM_RESTORE, //ҵѯָ + MINOR_ZONE_MODULE_REMOVE, // ģ + MINOR_ZONE_MODULE_RESET, // ģλ + + MINOR_ALARM_WIND_SPEED_ALARM, //ٴ澯 + MINOR_ALARM_WIND_SPEED_ALARM_RESTORE, //ٴ澯ָ + MINOR_ALARM_GENERATE_OUTPUT_ALARM, //ͨģ澯 + MINOR_ALARM_GENERATE_OUTPUT_RESTORE, //ͨģ澯ָ + MINOR_ALARM_SOAK_ALARM, //ˮ澯 + MINOR_ALARM_SOAK_ALARM_RESTORE, //ˮ澯ָ + MINOR_ALARM_SOLAR_POWER_ALARM, //̫ܴ澯 + MINOR_ALARM_SOLAR_POWER_ALARM_RESTORE, //̫ܴ澯ָ + MINOR_ALARM_SF6_ALARM, //SF6澯 + MINOR_ALARM_SF6_ALARM_RESTORE, //SF6澯ָ + MINOR_ALARM_WEIGHT_ALARM, //Ǹ澯 + MINOR_ALARM_WEIGHT_ALARM_RESTORE, //Ǹ澯ָ + MINOR_ALARM_WEATHER_ALARM, //ɼϵͳ澯 + MINOR_ALARM_WEATHER_ALARM_RESTORE, //ɼϵͳ澯ָ + MINOR_ALARM_FUEL_GAS_ALARM, //ȼϵͳ澯 + MINOR_ALARM_FUEL_GAS_ALARM_RESTORE, //ȼϵͳ澯ָ + MINOR_ALARM_FIRE_ALARM, //ֱϵͳ澯 + MINOR_ALARM_FIRE_ALARM_RESTORE, //ֱϵͳ澯ָ + + MINOR_WIRELESS_OUTPUT_MODULE_REMOVE, // ģ + MINOR_WIRELESS_OUTPUT_MODULE_RESET, // ģλ + MINOR_WIRELESS_REPEATER_MODULE_REMOVE, // м + MINOR_WIRELESS_REPEATER_MODULE_RESET, // мλ + MINOR_WIRELESS_SIREN_MODULE_REMOVE, // ߾ŷ + MINOR_WIRELESS_SIREN_MODULE_RESET, // ߾ŷλ + MINOR_SOUND_INTENSITY_RISE, // ǿ + MINOR_SOUND_INTENSITY_RISE_RESET, // ǿָ + MINOR_SOUND_INTENSITY_DROP, // ǿ + MINOR_SOUND_INTENSITY_DROP_RESET, // ǿָ + MINOR_AUDIO_INPUT_EXCEPTION, // Ƶ쳣 + MINOR_AUDIO_INPUT_EXCEPTION_RESET, // Ƶ쳣ָ + MINOR_FACE_DETECTION_ALARM, // ⱨ + MINOR_FACE_DETECTION_ALARM_RESTORE, // ⱨָ + + // 쳣 + MINOR_POWER_ON = 0x01, // ϵ + MINOR_POWER_OFF, // + MINOR_WDT_RESET, // WDT λ + MINOR_LOW_BATTERY_VOLTAGE, // صѹ + MINOR_AC_LOSS, // ϵ + MINOR_AC_RESTORE, // ָ + MINOR_RTC_EXCEPTION, // RTCʵʱʱ쳣 + MINOR_NETWORK_CONNECT_FAILURE, // Ӷ + MINOR_NETWORK_CONNECT_RESTORE, // ӻָ + MINOR_TEL_LINE_CONNECT_FAILURE, // 绰Ӷ + MINOR_TEL_LINE_CONNECT_RESTORE, // 绰ӻָ + MINOR_EXPANDER_BUS_LOSS, // չģ + MINOR_EXPANDER_BUS_RESTORE, // չģ߻ָ + MINOR_KEYPAD_BUS_LOSS, // ģ + MINOR_KEYPAD_BUS_RESTORE, // ģ߻ָ + MINOR_SENSOR_FAILURE, // ģ + MINOR_SENSOR_RESTORE, // ģָ + MINOR_RS485_CONNECT_FAILURE, // RS485ͨӶ + MINOR_RS485_CONNECT_RESTORE, // RS485ͨӶϻָ + MINOR_BATTERT_VOLTAGE_RESTORE, // صѹָ + MINOR_WIRED_NETWORK_ABNORMAL, //쳣 + MINOR_WIRED_NETWORK_RESTORE, //ָ + MINOR_GPRS_ABNORMAL, //GPRSͨ쳣 + MINOR_GPRS_RESTORE, //GPRSָ + MINOR_3G_ABNORMAL, //3Gͨ쳣 + MINOR_3G_RESTORE, //3Gָ + MINOR_SIM_CARD_ABNORMAL, //SIM쳣 + MINOR_SIM_CARD_RESTORE, //SIMָ + MINOR_ALARMHOST_VI_LOST, // ƵźŶʧ + MINOR_ALARMHOST_ILLEGAL_ACCESS, // Ƿ + MINOR_ALARMHOST_HD_FULL, // Ӳ + MINOR_ALARMHOST_HD_ERROR, // Ӳ̴ + MINOR_ALARMHOST_DCD_LOST, // MODEM (ʹ) + MINOR_ALARMHOST_IP_CONFLICT, // IPַͻ + MINOR_ALARMHOST_NET_BROKEN, // Ͽ + MINOR_ALARMHOST_REC_ERROR, // ¼ + MINOR_ALARMHOST_VI_EXCEPTION, // Ƶ쳣(ֻģͨ) + MINOR_ALARMHOST_FORMAT_HDD_ERROR, //Զ̸ʽӲʧ + MINOR_ALARMHOST_USB_ERROR, //USBͨŹ + MINOR_ALARMHOST_USB_RESTORE, //USBͨŹϻָ + MINOR_ALARMHOST_PRINT_ERROR, //ӡ + MINOR_ALARMHOST_PRINT_RESTORE, //ӡϻָ + MINOR_SUBSYSTEM_COMMUNICATION_ERROR, //ӰͨѶ + MINOR_ALARMHOST_IPC_NO_LINK, /* IPCӶϿ */ + MINOR_ALARMHOST_IPC_IP_CONFLICT, /*ipc ip ַ ͻ*/ + MINOR_ALARMHOST_VI_MISMATCH, /*Ƶʽƥ*/ + MINOR_ALARMHOST_MCU_RESTART, //MCU + MINOR_ALARMHOST_GPRS_MODULE_FAULT, //GPRSģ + MINOR_ALARMHOST_TELEPHONE_MODULE_FAULT, //绰ģ + MINOR_ALARMHOST_WIFI_ABNORMAL, //WIFIͨ쳣 + MINOR_ALARMHOST_WIFI_RESTORE, //WIFIָ + MINOR_ALARMHOST_RF_ABNORMAL, //RFź쳣 + MINOR_ALARMHOST_RF_RESTORE, //RFźŻָ + MINOR_ALARMHOST_DETECTOR_ONLINE, //̽ + MINOR_ALARMHOST_DETECTOR_OFFLINE, //̽ + MINOR_ALARMHOST_DETECTOR_BATTERY_NORMAL, //̽ + MINOR_ALARMHOST_DETECTOR_BATTERY_LOW, //̽Ƿѹ + MINOR_ALARMHOST_DATA_TRAFFIC_OVERFLOW, // + MINOR_ZONE_MODULE_LOSS, // ģ + MINOR_ZONE_MODULE_RESTORE, // ģ߻ָ + MINOR_ALARMHOST_WIRELESS_OUTPUT_LOSS, //ģ + MINOR_ALARMHOST_WIRELESS_OUTPUT_RESTORE, //ģָ + MINOR_ALARMHOST_WIRELESS_REPEATER_LOSS, //м + MINOR_ALARMHOST_WIRELESS_REPEATER_RESTORE, //мָ + MINOR_TRIGGER_MODULE_LOSS, // ģ + MINOR_TRIGGER_MODULE_RESTORE, // ģ߻ָ + MINOR_WIRELESS_SIREN_LOSS, // ߾ + MINOR_WIRELESS_SIREN_RESTORE, // ߾Żָ + MINOR_ALARMHOST_WIRELESS_RS485_LOSS, //RS485ģ + MINOR_ALARMHOST_WIRELESS_RS485_RESTORE, //RS485ģָ + + // + MINOR_GUARD = 0x01, // ͨ + MINOR_UNGUARD, // ͨ + MINOR_BYPASS, // · + MINOR_DURESS_ACCESS, // Ю + MINOR_ALARMHOST_LOCAL_REBOOT, // + MINOR_ALARMHOST_REMOTE_REBOOT, // Զ + MINOR_ALARMHOST_LOCAL_UPGRADE, // + MINOR_ALARMHOST_REMOTE_UPGRADE, // Զ + MINOR_RECOVERY_DEFAULT_PARAM, // ָĬϲ + MINOR_ALARM_OUTPUT, // Ʊ + MINOR_ACCESS_OPEN, // Ž + MINOR_ACCESS_CLOSE, // Ž + MINOR_SIREN_OPEN, // ƾſ + MINOR_SIREN_CLOSE, // ƾŹ + MINOR_MOD_ZONE_CONFIG, // ޸ķ + MINOR_MOD_ALARMOUT_CONIFG, // Ʊ + MINOR_MOD_ANALOG_CONFIG, // ޸ģ + MINOR_RS485_CONFIG, // ޸485ͨ + MINOR_PHONE_CONFIG, // ޸IJ + MINOR_ADD_ADMIN, // ӹԱ + MINOR_MOD_ADMIN_PARAM, // ޸ĹԱ + MINOR_DEL_ADMIN, // ɾԱ + MINOR_ADD_NETUSER, // Ӻ˲Ա + MINOR_MOD_NETUSER_PARAM, // ޸ĺ˲Ա + MINOR_DEL_NETUSER, // ɾ˲Ա + MINOR_ADD_OPERATORUSER, // ǰ˲Ա + MINOR_MOD_OPERATORUSER_PW, // ޸ǰ˲Ա + MINOR_DEL_OPERATORUSER, // ɾǰ˲Ա + MINOR_ADD_KEYPADUSER, // Ӽ/û + MINOR_DEL_KEYPADUSER, // ɾ/û + MINOR_REMOTEUSER_LOGIN, // Զû½ + MINOR_REMOTEUSER_LOGOUT, // Զûע + MINOR_REMOTE_GUARD, // Զ̲ + MINOR_REMOTE_UNGUARD, // Զ̳ + MINOR_MOD_HOST_CONFIG, // ޸ + MINOR_RESTORE_BYPASS, // ·ָ + MINOR_ALARMOUT_OPEN, // + MINOR_ALARMOUT_CLOSE, // ر + MINOR_MOD_SUBSYSTEM_PARAM, // ޸ϵͳ + MINOR_GROUP_BYPASS, // · + MINOR_RESTORE_GROUP_BYPASS, // ·ָ + MINOR_MOD_GRPS_PARAM, // ޸GPRS + MINOR_MOD_NET_REPORT_PARAM, // ޸ϱ + MINOR_MOD_REPORT_MOD, // ޸ϴʽ + MINOR_MOD_GATEWAY_PARAM, // ޸Ž + MINOR_ALARMHOST_REMOTE_START_REC, // Զ̿ʼ¼ + MINOR_ALARMHOST_REMOTE_STOP_REC, // Զֹͣ¼ + MINOR_ALARMHOST_START_TRANS_CHAN, // ʼ͸ + MINOR_ALARMHOST_STOP_TRANS_CHAN, // ֹͣ͸ + MINOR_ALARMHOST_START_VT, // ʼԽ + MINOR_ALARMHOST_STOP_VTM, // ֹͣԽ + MINOR_ALARMHOST_REMOTE_PLAYBYFILE, // Զ̰ļط + MINOR_ALARMHOST_REMOTE_PLAYBYTIME, // Զ̰ʱط + MINOR_ALARMHOST_REMOTE_PTZCTRL, // Զ̨ + MINOR_ALARMHOST_REMOTE_FORMAT_HDD, // Զ̸ʽӲ + MINOR_ALARMHOST_REMOTE_LOCKFILE, // Զļ + MINOR_ALARMHOST_REMOTE_UNLOCKFILE, // Զ̽ļ + MINOR_ALARMHOST_REMOTE_CFGFILE_OUTPUT, // Զ̵ļ + MINOR_ALARMHOST_REMOTE_CFGFILE_INTPUT, // Զ̵ļ + MINOR_ALARMHOST_REMOTE_RECFILE_OUTPUT, // Զ̵¼ļ + + MINOR_ALARMHOST_STAY_ARM, //ز + MINOR_ALARMHOST_QUICK_ARM, //ʱ + MINOR_ALARMHOST_AUTOMATIC_ARM, //Զ + MINOR_ALARMHOST_AUTOMATIC_DISARM, //Զ + MINOR_ALARMHOST_KEYSWITCH_ARM, //Կ׷ + MINOR_ALARMHOST_KEYSWITCH_DISARM, //Կ׷ + MINOR_ALARMHOST_CLEAR_ALARM, // + MINOR_ALARMHOST_MOD_FAULT_CFG, //޸ϵͳ + MINOR_ALARMHOST_MOD_EVENT_TRIGGER_ALARMOUT_CFG, //޸¼ + MINOR_ALARMHOST_SEARCH_EXTERNAL_MODULE, //ģ + MINOR_ALARMHOST_REGISTER_EXTERNAL_MODULE, //עģ + MINOR_ALARMHOST_CLOSE_KEYBOARD_ALARM, //رռ̱ʾ + MINOR_ALARMHOST_MOD_3G_PARAM, //޸3G + MINOR_ALARMHOST_MOD_PRINT_PARAM, //޸Ĵӡ + MINOR_SD_CARD_FORMAT, //SDʽ + MINOR_SUBSYSTEM_UPGRADE, //Ӱ̼ + + MINOR_ALARMHOST_PLAN_ARM_CFG, //ƻ + MINOR_ALARMHOST_PHONE_ARM, //ֻ + MINOR_ALARMHOST_PHONE_STAY_ARM, //ֻز + MINOR_ALARMHOST_PHONE_QUICK_ARM,//ֻʱ + MINOR_ALARMHOST_PHONE_DISARM, //ֻ + MINOR_ALARMHOST_PHONE_CLEAR_ALARM, //ֻ + MINOR_ALARMHOST_ALLOWLIST_CFG, // + MINOR_ALARMHOST_TIME_TRIGGER_CFG, //ʱش + MINOR_ALARMHOST_CAPTRUE_CFG, //ץͼ + MINOR_ALARMHOST_TAMPER_CFG, // + + MINOR_ALARMHOST_REMOTE_KEYPAD_UPGRADE, //Զ + MINOR_ALARMHOST_ONETOUCH_AWAY_ARMING, //һ + MINOR_ALARMHOST_ONETOUCH_STAY_ARMING, //һز + MINOR_ALARMHOST_SINGLE_PARTITION_ARMING_OR_DISARMING, // + MINOR_ALARMHOST_CARD_CONFIGURATION, // + MINOR_ALARMHOST_CARD_ARMING_OR_DISARMING, //ˢ + MINOR_ALARMHOST_EXPENDING_NETCENTER_CONFIGURATION, //չ + MINOR_ALARMHOST_NETCARD_CONFIGURATION, // + MINOR_ALARMHOST_DDNS_CONFIGURATION, //DDNS + MINOR_ALARMHOST_RS485BUS_CONFIGURATION, // 485߲ + MINOR_ALARMHOST_RS485BUS_RE_REGISTRATION, //485ע + + MINOR_ALARMHOST_REMOTE_OPEN_ELECTRIC_LOCK, //Զ̴򿪵 + MINOR_ALARMHOST_REMOTE_CLOSE_ELECTRIC_LOCK, //Զ̹رյ + MINOR_ALARMHOST_LOCAL_OPEN_ELECTRIC_LOCK, //ش򿪵 + MINOR_ALARMHOST_LOCAL_CLOSE_ELECTRIC_LOCK, //عرյ + MINOR_ALARMHOST_OPEN_ALARM_LAMP, //򿪾(Զ) + MINOR_ALARMHOST_CLOSE_ALARM_LAMP, //رվ(Զ) + + + MINOR_ALARMHOST_TEMPORARY_PASSWORD, //ʱ¼ + MINOR_ALARMHOST_ONEKEY_AWAY_ARM, //һ + MINOR_ALARMHOST_ONEKEY_STAY_ARM, //һز + MINOR_ALARMHOST_SINGLE_ZONE_ARM, // + MINOR_ALARMHOST_SINGLE_ZONE_DISARM, // + MINOR_ALARMHOST_HIDDNS_CONFIG, // HIDDNS + MINOR_ALARMHOST_REMOTE_KEYBOARD_UPDATA, //Զ̼־ + MINOR_ALARMHOST_ZONE_ADD_DETECTOR, //̽ + MINOR_ALARMHOST_ZONE_DELETE_DETECTOR, //ɾ̽ + MINOR_ALARMHOST_QUERY_DETECTOR_SIGNAL, //ѯ̽źǿ + MINOR_ALARMHOST_QUERY_DETECTOR_BATTERY, //ѯ̽ + MINOR_ALARMHOST_SET_DETECTOR_GUARD, //̽ + MINOR_ALARMHOST_SET_DETECTOR_UNGUARD, //̽ + MINOR_ALARMHOST_SET_WIFI_PARAMETER, //WIFIò + MINOR_ALARMHOST_OPEN_VOICE, // + MINOR_ALARMHOST_CLOSE_VOICE, //ر + MINOR_ALARMHOST_ENABLE_FUNCTION_KEY, //ùܼ + MINOR_ALARMHOST_DISABLE_FUNCTION_KEY, //رչܼ + MINOR_ALARMHOST_READ_CARD, //Ѳˢ + MINOR_ALARMHOST_START_BROADCAST, //㲥 + MINOR_ALARMHOST_STOP_BROADCAST, //ر㲥 + MINOR_ALARMHOST_REMOTE_ZONE_MODULE_UPGRADE, //Զģ + MINOR_ALARMHOST_NETWORK_MODULE_EXTEND, //ģ + MINOR_ALARMHOST_ADD_CONTROLLER, //ңû + MINOR_ALARMHOST_DELETE_CONTORLLER, //ɾңû + MINOR_ALARMHOST_REMOTE_NETWORKMODULE_UPGRADE, //Զģ + MINOR_ALARMHOST_WIRELESS_OUTPUT_ADD, //עģ + MINOR_ALARMHOST_WIRELESS_OUTPUT_DEL, //ɾģ + MINOR_ALARMHOST_WIRELESS_REPEATER_ADD, //עм + MINOR_ALARMHOST_WIRELESS_REPEATER_DEL, //ɾм + MINOR_ALARMHOST_PHONELIST_CFG, //绰 + MINOR_ALARMHOST_RF_SIGNAL_CHECK, // RFźŲѯ + MINOR_ALARMHOST_USB_UPGRADE, // USB + MINOR_ALARMHOST_DOOR_TIME_REMINDER_CFG,//ŴŶʱѲ + MINOR_ALARMHOST_WIRELESS_SIREN_ADD, //ע߾ + MINOR_ALARMHOST_WIRELESS_SIREN_DEL, //ɾ߾ + MINOR_ALARMHOST_OUT_SCALE_OPEN, //翪 + MINOR_ALARMHOST_OUT_SCALE_CLOSE, //ر + + MINOR_ALARMHOST_TIME_ZONE_CFG,//ʱ޸ + MINOR_ALARMHOST_NTP_START_AND_PARAMETERS_CFG,//NTP޸ + MINOR_ALARMHOST_DST_START_AND_PARAMETERS_CFG,//DST޸ + MINOR_ALARMHOST_DEVINFO_CFG,//豸Ϣ + MINOR_ALARMHOST_VIDEO_OVERLAP_CFG,//¼񸲸 + MINOR_ALARMHOST_SSH_CFG,//SSH + MINOR_ALARMHOST_PASSWORD_MANAGE_CFG,// + MINOR_ALARMHOST_RESTORE_DEFAULT_PARAMETERS,//ָĬϲ + MINOR_ALARMHOST_RESTORECOMPLETELY_DEFAULT_PARAMETERS,//ȫָĬϲ + MINOR_ALARMHOST_AUDIO_AUTO_DETECT_CFG,//Զ + MINOR_ALARMHOST_AUDIO_MANUAL_DETECT_CFG,//ֶ + MINOR_ALARMHOST_NET_PARAMETERS_CFG,// + MINOR_ALARMHOST_MTU_CFG,//MTU + MINOR_ALARMHOST_PORT_CFG,//˿ + MINOR_ALARMHOST_DEFAULT_ROUTER_CFG,//Ĭ· + MINOR_ALARMHOST_DNS_PARAMETERS_CFG,//DNS + MINOR_ALARMHOST_UNPNP_PARAMETERS_CFG,//UNPNP + MINOR_ALARMHOST_SIP_PARAMETERS_CFG,//SIP + MINOR_ALARMHOST_FLOW_LIMIT_CFG,//޶ + MINOR_ALARMHOST_APN_PARAMETERS_CFG,//APN + MINOR_ALARMHOST_MESSAGE_TELEPHONENO_CFG,//ŵ绰 + MINOR_ALARMHOST_EZVIZ_PARAMATERS_CFG,//өʯ + MINOR_ALARMHOST_ISUP_PARAMATERS_CFG,//ISUP + MINOR_ALARMHOST_SIP_SWITCH_CFG,//SIP׼Э˽Эл + MINOR_ALARMHOST_INFO_UPLOAD_TO_PLATFORM_CFG,//ϴƽ̨Ϣ + MINOR_ALARMHOST_ONVIF_CONTROL,//ONVIF(ر) + MINOR_ALARMHOST_ONVIF_USER_ADD,//onvifû + MINOR_ALARMHOST_ONVIF_USER_MOD,//onvifû޸ + MINOR_ALARMHOST_ONVIF_USER_DELETE,//onvifûɾ + MINOR_ALARMHOST_TIME_OF_BELLS_CFG,//ʱ + MINOR_ALARMHOST_CALL_WAITTIME_CFG,//еȴʱ + MINOR_ALARMHOST_PROMPT_PARAMATERS_CFG,//ʾ + MINOR_ALARMHOST_MUTEPLAN_PARAMATERS_CFG,//ƻ + MINOR_ALARMHOST_SD_PARTITION_CFG,//SD + MINOR_ALARMHOST_AUDIO_PARAMETERS_CFG,//Ƶ + MINOR_ALARMHOST_VOICETALK_AUDIO_ENCODING_CFG,//ԽƵ + MINOR_ALARMHOST_RECORD_PLAN_PARAMETERS_CFG,//¼ƻ + MINOR_ALARMHOST_RECORD_ADVANCE_PARAMETERS_CFG,//¼߼ + MINOR_ALARMHOST_PICTURE_PLAN_PARAMETERS_CFG,//ץͼƻ + MINOR_ALARMHOST_PICTURE_ADVANCE_PARAMETERS_CFG,//ץͼ߼ + MINOR_ALARMHOST_AUDIO_EXCEPTION_PARAMETERS_CFG,//Ƶ쳣 + MINOR_ALARMHOST_PATROL_CARD_CFG,//Ѳ + MINOR_ALARMHOST_VOICE_VOLUME_CFG,// + MINOR_ALARMHOST_VOICE_MODE_CFG,//ģʽã룬㲥ģʽ + MINOR_ALARMHOST_AUDIO_OR_MATERIALS_UPLOAD,//Ƶزļϴ + MINOR_ALARMHOST_AUDIO_OR_MATERIALS_DELETE,//Ƶزļɾ + MINOR_ALARMHOST_ALARM_LAMP_FLASH_TIME_CFG,//˸ʱ + MINOR_ALARMHOST_ALARM_LAMP_FLASH_PLAN_CFG,//ƻ˸ + MINOR_ALARMHOST_FRONT_END_VIDEO_PARAMETERS_CFG,//ǰƵ + MINOR_ALARMHOST_WDR_CFG,//̬ + MINOR_ALARMHOST_BPFRAME_CFG,//PN֡ + MINOR_ALARMHOST_PASSWORD_RESET_CFG,// + MINOR_ALARMHOST_ACCOUNT_LOCK,//˻ + MINOR_ALARMHOST_ACCOUNT_UNLOCK,//˻ + MINOR_ALARMHOST_START_LIVEVIEW_REMOTELY,//Զ̿Ԥ + MINOR_ALARMHOST_STOP_LIVEVIEW_REMOTELT,//Զ̹رԤ + MINOR_ALARMHOST_TELEPHONE_CENTER_SETTINGS,//绰IJ + MINOR_ALARMHOST_NATIONAL_STANDARD_CFG,// + MINOR_ALARMHOST_SUPPLEMENTLIGHT_CFG,// + MINOR_ALARMHOST_FACESNAP_CFG,//ץ + MINOR_ALARMHOST_PUBLISHMANAGE_CFG,// + MINOR_ALARMHOST_KEYDIAL_CFG,// + MINOR_ALARMHOST_VOICETALK_SILENT_CFG,//Խ + MINOR_ALARMHOST_START_VIDEO_PROTECT,//Ƶ + MINOR_ALARMHOST_START_AUDIO_PROTECT,//ü + MINOR_ALARMHOST_START_MANUAL_ANSWER,//ֶ + MINOR_ALARMHOST_START_LOG_SERVER,//ðȫ־ + MINOR_ALARMHOST_ADD_CARD,//ӿƬ + MINOR_ALARMHOST_DELETE_CARD,//ɾƬ + MINOR_ALARMHOST_MOTION_DETECTION_CFG,//ƶ + MINOR_ALARMHOST_VIDEO_BLOCK_CFG,//Ƶڵ + MINOR_ALARMHOST_FACE_DETECTION_CFG,// + MINOR_ALARMHOST_LOG_BACKUP,//־ + + + MINOR_ALARMHOST_LOCAL_SET_DEVICE_ACTIVE = 0xf0, //ؼ豸 + MINOR_ALARMHOST_REMOTE_SET_DEVICE_ACTIVE = 0xf1, //Զ̼豸 + MINOR_ALARMHOST_LOCAL_PARA_FACTORY_DEFAULT = 0xf2, //ػظ + MINOR_ALARMHOST_REMOTE_PARA_FACTORY_DEFAULT = 0xf3, //Զָ̻ + + MINOR_ADD_IPC = 0xf4, //IPC(IPC) + MINOR_MODIFY_IPC = 0xf5, //IPC޸ + MINOR_DELETE_IPC = 0xf6, //IPCɾ + MINOR_SYS_CHECK_START = 0xf7, //ϵͳ⿪ʼ + MINOR_SYS_CHECK_STOP = 0xf8, //ϵͳֹ + MINOR_SYS_CHECK_FINISH = 0xf9, //ϵͳ + MINOR_DEVICE_TAMPER_CFG = 0xfa, //豸 + MINOR_ALARMHOST_INDICATORLIGHT_CFG = 0xfb, //ָʾ + MINOR_ALARMHOST_WIRELESSBUTTON_CFG = 0xfc, //߰ť + MINOR_ALARMHOST_IRCUTFILTER_CFG = 0xfd, //ҹл + MINOR_ALARMHOST_KEYWORD_AUDIO_RECOGNITION_CFG = 0xfe, //ؼʶ + MINOR_ALARMHOST_DEVICE_POWER_MODE_SWITCH_CFG = 0xff, //豸ģʽл + + + // ¼ + MINOR_SCHOOLTIME_IRGI_B = 0x01, // BУʱ + MINOR_SCHOOLTIME_SDK, // SDKУʱ + MINOR_SCHOOLTIME_SELFTEST, // ʱԼУʱ + MINOR_SUBSYSTEM_ABNORMALINSERT, //Ӱ + MINOR_SUBSYSTEM_ABNORMALPULLOUT, //Ӱγ + + MINOR_AUTO_ARM, //Զ + MINOR_AUTO_DISARM, //Զ + MINOR_TIME_TIGGER_ON, //ʱ + MINOR_TIME_TIGGER_OFF, //ʱرմ + MINOR_AUTO_ARM_FAILD, //Զʧ + MINOR_AUTO_DISARM_FAILD, //Զʧ + MINOR_TIME_TIGGER_ON_FAILD, //ʱʧ + MINOR_TIME_TIGGER_OFF_FAILD, //ʱرմʧ + MINOR_MANDATORY_ALARM, //ǿƲ + MINOR_KEYPAD_LOCKED, // + MINOR_USB_INSERT, //USB + MINOR_USB_PULLOUT, //USBγ + MINOR_KEYPAD_UNLOCK, //̽ +}ALARMHOST_MINOR_TYPE; + + +//־ΪMAJOR_OPERATION=03ΪMINOR_LOCAL_CFG_PARM=0x52MINOR_REMOTE_GET_PARM=0x76 +//MINOR_REMOTE_CFG_PARM=0x77ʱdwParaType:Ч京£ +#define PARA_VIDEOOUT 0x1 +#define PARA_IMAGE 0x2 +#define PARA_ENCODE 0x4 +#define PARA_NETWORK 0x8 +#define PARA_ALARM 0x10 +#define PARA_EXCEPTION 0x20 +#define PARA_DECODER 0x40 /**/ +#define PARA_RS232 0x80 +#define PARA_PREVIEW 0x100 +#define PARA_SECURITY 0x200 +#define PARA_DATETIME 0x400 +#define PARA_FRAMETYPE 0x800 /*֡ʽ*/ +#define PARA_DETECTION 0x1000 // +#define PARA_VCA_RULE 0x1001 //Ϊ +#define PARA_VCA_CTRL 0x1002 //ܿϢ +#define PARA_VCA_PLATE 0x1003 // ʶ + +#define PARA_CODESPLITTER 0x2000 /**/ +//2010-01-22 Ƶۺƽ̨־Ϣ +#define PARA_RS485 0x2001 /* RS485Ϣ*/ +#define PARA_DEVICE 0x2002 /* 豸Ϣ*/ +#define PARA_HARDDISK 0x2003 /* ӲϢ */ +#define PARA_AUTOBOOT 0x2004 /* ԶϢ*/ +#define PARA_HOLIDAY 0x2005 /* ڼϢ*/ +#define PARA_IPC 0x2006 /* IPͨ */ +/************************* end*******************************/ + + +/*******************ļ־ֵ*************************/ +#define NET_DVR_FILE_SUCCESS 1000 //ļϢ +#define NET_DVR_FILE_NOFIND 1001 //ûļ +#define NET_DVR_ISFINDING 1002 //ڲļ +#define NET_DVR_NOMOREFILE 1003 //ļʱûиļ +#define NET_DVR_FILE_EXCEPTION 1004 //ļʱ쳣 +#define NET_DVR_FIND_TIMEOUT 1005 //ļʱ + +/*********************ص begin************************/ + +//ص +#define COMM_ALARM 0x1100 //8000Ϣϴ + +//ӦNET_VCA_RULE_ALARM +#define COMM_ALARM_RULE 0x1102 //ΪϢ +#define COMM_ALARM_PDC 0x1103 //ͳƱϢ +#define COMM_ALARM_VIDEOPLATFORM 0x1104 //Ƶۺƽ̨ +#define COMM_ALARM_ALARMHOST 0x1105 //籨 +#define COMM_ALARM_FACE 0x1106 //ʶ𱨾Ϣ +#define COMM_RULE_INFO_UPLOAD 0x1107 // ¼Ϣϴ +#define COMM_ALARM_AID 0x1110 //ͨ¼Ϣ +#define COMM_ALARM_TPS 0x1111 //ͨͳƱϢ +//ץĽϴ +#define COMM_UPLOAD_FACESNAP_RESULT 0x1112 //ʶϴ +#define COMM_ALARM_TFS 0x1113 //ͨȡ֤Ϣ +#define COMM_ALARM_TPS_V41 0x1114 //ͨͳƱϢչ +#define COMM_ALARM_AID_V41 0x1115 //ͨ¼Ϣչ +#define COMM_ALARM_VQD_EX 0x1116 //Ƶϱ +#define COMM_ALARM_NOTIFICATION_REPORT 0x1117 //֪ͨ¼ϱ +#define COMM_SENSOR_VALUE_UPLOAD 0x1120 //ģʵʱϴ +#define COMM_SENSOR_ALARM 0x1121 //ģϴ +#define COMM_SWITCH_ALARM 0x1122 // +#define COMM_ALARMHOST_EXCEPTION 0x1123 //ϱ +#define COMM_ALARMHOST_OPERATEEVENT_ALARM 0x1124 //¼ϴ +#define COMM_ALARMHOST_SAFETYCABINSTATE 0x1125 //״̬ +#define COMM_ALARMHOST_ALARMOUTSTATUS 0x1126 ///״̬ +#define COMM_ALARMHOST_CID_ALARM 0x1127 //汨ϴ +#define COMM_ALARMHOST_EXTERNAL_DEVICE_ALARM 0x1128 //豸ϴ +#define COMM_ALARMHOST_DATA_UPLOAD 0x1129 //ϴ +#define COMM_FACECAPTURE_STATISTICS_RESULT 0x112a //ץͳϴ +#define COMM_ALARM_WIRELESS_INFO 0x122b // Ϣϴ +#define COMM_SCENECHANGE_DETECTION_UPLOAD 0x1130 //ϴ()2013-7-16 +#define COMM_CROSSLINE_ALARM 0x1131 //ѹ߱() 2013-09-27 +#define COMM_UPLOAD_VIDEO_INTERCOM_EVENT 0x1132 //ӶԽ¼¼ϴ +#define COMM_ALARM_VIDEO_INTERCOM 0x1133 //ӶԽϴ +#define COMM_UPLOAD_NOTICE_DATA 0x1134 //ӶԽϢϴ +#define COMM_ALARM_AUDIOEXCEPTION 0x1150 //Ϣ +#define COMM_ALARM_DEFOCUS 0x1151 //齹Ϣ +#define COMM_ALARM_BUTTON_DOWN_EXCEPTION 0x1152 //ť±Ϣ +#define COMM_ALARM_ALARMGPS 0x1202 //GPSϢϴ +#define COMM_TRADEINFO 0x1500 //ATMDVRϴϢ +#define COMM_UPLOAD_PLATE_RESULT 0x2800 //ϴϢ +#define COMM_ITC_STATUS_DETECT_RESULT 0x2810 //ʵʱ״̬ϴ(ܸIPC) +#define COMM_IPC_AUXALARM_RESULT 0x2820 //PIR߱ȱϴ +#define COMM_UPLOAD_PICTUREINFO 0x2900 //ϴͼƬϢ +#define COMM_SNAP_MATCH_ALARM 0x2902 //ֹȶԽϴ +#define COMM_ITS_PLATE_RESULT 0x3050 //նͼƬϴ +#define COMM_ITS_TRAFFIC_COLLECT 0x3051 //նͳϴ +#define COMM_ITS_GATE_VEHICLE 0x3052 //ڳץϴ +#define COMM_ITS_GATE_FACE 0x3053 //ץϴ +#define COMM_ITS_GATE_COSTITEM 0x3054 //ڹշϸ 2013-11-19 +#define COMM_ITS_GATE_HANDOVER 0x3055 //ڽӰ 2013-11-19 +#define COMM_ITS_PARK_VEHICLE 0x3056 //ͣϴ +#define COMM_ITS_BLOCKLIST_ALARM 0x3057 //ֹϴ + +#define COMM_VEHICLE_CONTROL_LIST_DSALARM 0x3058 //Ҫͬ2013-11-04 +#define COMM_VEHICLE_CONTROL_ALARM 0x3059 //2013-11-04 +#define COMM_FIRE_ALARM 0x3060 //2013-11-04 + +#define COMM_ITS_GATE_ALARMINFO 0x3061 //ڿƻϴ + +#define COMM_VEHICLE_RECOG_RESULT 0x3062 //ʶϴ 2014-11-12 +#define COMM_PLATE_RESULT_V50 0x3063 //ϴ V50 + +#define COMM_GATE_CHARGEINFO_UPLOAD 0x3064 //ڸϢϴ +#define COMM_TME_VEHICLE_INDENTIFICATION 0x3065 //TMEץͼϴ +#define COMM_GATE_CARDINFO_UPLOAD 0x3066 //ڿƬϢϴ +#define COMM_LOADING_DOCK_OPERATEINFO 0x3067 //̨ҵϴ + +#define COMM_ALARM_SENSORINFO_UPLOAD 0x3077 //ϴϢ +#define COMM_ALARM_CAPTURE_UPLOAD 0x3078 //ץͼƬϴ + +#define COMM_ITS_RADARINFO 0x3079 //״ﱨϴ + +#define COMM_SIGNAL_LAMP_ABNORMAL 0x3080 //źŵ쳣ϴ + +#define COMM_ALARM_TPS_REAL_TIME 0x3081 //TPSʵʱϴ +#define COMM_ALARM_TPS_STATISTICS 0x3082 //TPSͳƹϴ + +#define COMM_ALARM_V30 0x4000 //9000Ϣϴ +#define COMM_IPCCFG 0x4001 //9000豸IPCøı䱨Ϣϴ +#define COMM_IPCCFG_V31 0x4002 //9000豸IPCøı䱨Ϣϴչ 9000_1.1 +#define COMM_IPCCFG_V40 0x4003 // IVMS 2000 NVR IPCøıʱϢϴ +#define COMM_ALARM_DEVICE 0x4004 //豸ݣֵͨ256չ +#define COMM_ALARM_CVR 0x4005 //CVR 2.0.Xⲿ +#define COMM_ALARM_HOT_SPARE 0x4006 //ȱ쳣N+1ģʽ쳣 +#define COMM_ALARM_V40 0x4007 //ƶ⣬ƵʧڵIOźȱϢϴΪɱ䳤 + +#define COMM_UPLOAD_HEATMAP_RESULT 0x4008 //ȶͼϴ 2014-03-21 +#define COMM_ALARM_DEVICE_V40 0x4009 //豸չ +#define COMM_ALARM_FACE_DETECTION 0x4010 //ⱨ +#define COMM_ALARM_TARGET_LEFT_REGION 0x4011 //Ŀ뿪򱨾(ʦѧ(л¼Ƽѧ)) +#define COMM_GISINFO_UPLOAD 0x4012 //GISϢϴ +#define COMM_VANDALPROOF_ALARM 0x4013 //ϴƻϢ +#define COMM_PEOPLE_DETECTION_UPLOAD 0x4014 //ԱϢϴ +#define COMM_ALARM_STORAGE_DETECTION 0x4015 //洢ܼⱨϴ +#define COMM_MVM_REGISTER 0x4016 //شŹMagnetic Vehicle Managerע +#define COMM_MVM_STATUS_INFO 0x4017 //شŹMagnetic Vehicle Manager״̬ϱ +#define COMM_UPLOAD_HEATMAP_RESULT_PDC 0x4018 //ȶͼͳϴ¼ +#define COMM_UPLOAD_HEATMAP_RESULT_DURATION 0x4019 //ȶͼԱͣʱͳϴ¼ +#define COMM_UPLOAD_HEATMAP_RESULT_INTERSECTION 0x4020 //·ڷȶֵϴ +#define COMM_UPLOAD_AIOP_VIDEO 0x4021 //豸֧AIƽ̨룬ϴƵ +#define COMM_UPLOAD_AIOP_PICTURE 0x4022 //豸֧AIƽ̨룬ϴͼƬ +#define COMM_UPLOAD_AIOP_POLLING_SNAP 0x4023 //豸֧AIƽ̨룬ϴѲץͼͼƬ ӦĽṹ(NET_AIOP_POLLING_PICTURE_HEAD) +#define COMM_UPLOAD_AIOP_POLLING_VIDEO 0x4024 //豸֧AIƽ̨룬ϴѲƵ ӦĽṹ(NET_AIOP_POLLING_VIDEO_HEAD) +#define COMM_UPLOAD_AIOP_HISTORY_VIDEO 0x4025 //豸֧AIƽ̨룬ϴʷƵ ӦĽṹ(NET_AIOP_HISTORY_VIDEO_HEAD) + + +#define COMM_ITS_ROAD_EXCEPTION 0x4500 //·豸쳣 +#define COMM_ITS_EXTERNAL_CONTROL_ALARM 0x4520 //ر +#define COMM_ALARM_SHIPSDETECTION 0x4521 // ֻⱨϢ + +#define COMM_VCA_DBD_ALARM 0x4550 //ʻΪϢ +#define COMM_VCA_ADAS_ALARM 0x4551 //߼ʻϢ +#define COMM_VEH_REALTIME_INFO 0x4552 //гʵʱϢ +#define COMM_VCA_ATTEND_ALARM 0x4553 //¼Ϣ + +#define COMM_FIREDETECTION_ALARM 0x4991 //ⱨ +#define COMM_ALARM_DENSEFOGDETECTION 0x4992 //ⱨϢ +#define COMM_VCA_ALARM 0x4993 //ܼⱨ +#define COMM_FACE_THERMOMETRY_ALARM 0x4994 //± + +#define COMM_TAPE_ARCHIVE_ALARM 0x4996 //Ŵ鵵 + +#define COMM_SCREEN_ALARM 0x5000 // +#define COMM_DVCS_STATE_ALARM 0x5001 //ֲʽϴ +#define COMM_ALARM_ACS 0x5002 //Ž +#define COMM_ALARM_FIBER_CONVERT 0x5003 //շ +#define COMM_ALARM_SWITCH_CONVERT 0x5004 // +#define COMM_ALARM_DEC_VCA 0x5010 //ܽ뱨 +#define COMM_ALARM_LCD 0x5011 //Ļ +#define COMM_CONFERENCE_CALL_ALARM 0x5012 //и澯 + +#define COMM_ALARM_WALL_CONFERNECE 0x5015 //MCUѿĻϢ + +#define COMM_DIAGNOSIS_UPLOAD 0x5100 //ϷVQDϴ +#define COMM_HIGH_DENSITY_UPLOAD 0x5101 //Աۼܶϴ + +#define COMM_ID_INFO_ALARM 0x5200 //֤Ϣϴ +#define COMM_PASSNUM_INFO_ALARM 0x5201 //ͨϱ +#define COMM_PASSPORT_ALARM 0x5202 //Ϣϴ + +#define COMM_THERMOMETRY_DIFF_ALARM 0x5211 //²ϴ +#define COMM_THERMOMETRY_ALARM 0x5212 //¶ȱϴ +#define COMM_PANORAMIC_LINKAGE_ALARM 0x5213 //ȫλϴ +#define COMM_TAG_INFO_ALARM 0x5215 // ǩϢϴ +#define COMM_ALARM_VQD 0x6000 //VQDϴ +#define COMM_PUSH_UPDATE_RECORD_INFO 0x6001 //ģʽ¼Ϣϴ +#define COMM_SWITCH_LAMP_ALARM 0x6002 //صƼ +#define COMM_INQUEST_ALARM 0x6005 // Ѷϴ +#define COMM_VIDEO_PARKING_POLE_ALARM 0x6006 //Ƶ׮ +#define COMM_GPS_STATUS_ALARM 0x6010 // GPS״̬ϴ +#define COMM_BASE_STATION_INFO_ALARM 0x6011 //վϢϴ +#define COMM_ALARM_SUBSCRIBE_EVENT 0x6012 //Ľϱ + +#define COMM_FACESNAP_RAWDATA_ALARM 0x6015 //ȶԱ͸ʽ +#define COMM_CLUSTER_ALARM 0x6020 //Ⱥϴ + +#define COMM_ISAPI_ALARM 0x6009 + +//PJ01C20170209084¼NVSܿĿר +#define COMM_FRAMES_PEOPLE_COUNTING_ALARM 0x6069 //֡ͳƽϴ + +#define COMM_SIGN_ABNORMAL_ALARM 0x6120 //쳣 +#define COMM_HFPD_ALARM 0x6121 //ƵԱⱨ + +#define COMM_HCU_ALARM 0x6150 //ܺӱSDKⲻʵ֣豸DVRͨЭ飬ռλֹͻ + +#define COMM_DEV_STATUS_CHANGED 0x7000 //豸״̬ı䱨ϴ + +#define COMM_ALARM_EXCEPTION 0x7fff //쳣 + +/*************쳣(Ϣʽ, صʽ())****************/ +#define EXCEPTION_EXCHANGE 0x8000 //ûʱ쳣 +#define EXCEPTION_AUDIOEXCHANGE 0x8001 //Խ쳣 +#define EXCEPTION_ALARM 0x8002 //쳣 +#define EXCEPTION_PREVIEW 0x8003 //Ԥ쳣 +#define EXCEPTION_SERIAL 0x8004 //͸ͨ쳣 +#define EXCEPTION_RECONNECT 0x8005 //Ԥʱ +#define EXCEPTION_ALARMRECONNECT 0x8006 //ʱ +#define EXCEPTION_SERIALRECONNECT 0x8007 //͸ͨ +#define SERIAL_RECONNECTSUCCESS 0x8008 //͸ͨɹ +#define EXCEPTION_PLAYBACK 0x8010 //ط쳣 +#define EXCEPTION_DISKFMT 0x8011 //Ӳ̸ʽ +#define EXCEPTION_PASSIVEDECODE 0x8012 //쳣 +#define EXCEPTION_EMAILTEST 0x8013 //ʼ쳣 +#define EXCEPTION_BACKUP 0x8014 //쳣 +#define PREVIEW_RECONNECTSUCCESS 0x8015 //Ԥʱɹ +#define ALARM_RECONNECTSUCCESS 0x8016 //ʱɹ +#define RESUME_EXCHANGE 0x8017 //ûָ +#define NETWORK_FLOWTEST_EXCEPTION 0x8018 //쳣 +#define EXCEPTION_PICPREVIEWRECONNECT 0x8019 //ͼƬԤ +#define PICPREVIEW_RECONNECTSUCCESS 0x8020 //ͼƬԤɹ +#define EXCEPTION_PICPREVIEW 0x8021 //ͼƬԤ쳣 +#define EXCEPTION_MAX_ALARM_INFO 0x8022 //ϢѴ +#define EXCEPTION_LOST_ALARM 0x8023 //ʧ +#define EXCEPTION_PASSIVETRANSRECONNECT 0x8024 //ת +#define PASSIVETRANS_RECONNECTSUCCESS 0x8025 //תɹ +#define EXCEPTION_PASSIVETRANS 0x8026 //ת쳣 +#define SUCCESS_PUSHDEVLOGON 0x8030 //ģʽ豸עɹ +#define EXCEPTION_RELOGIN 0x8040 //ûص½ +#define RELOGIN_SUCCESS 0x8041 //ûص½ɹ +#define EXCEPTION_PASSIVEDECODE_RECONNNECT 0x8042 // +#define EXCEPTION_CLUSTER_CS_ARMFAILED 0x8043 //Ⱥ쳣 + +#define EXCEPTION_RELOGIN_FAILED 0x8044 //ص½ʧܣֹͣص½ +#define EXCEPTION_PREVIEW_RECONNECT_CLOSED 0x8045 //رԤ +#define EXCEPTION_ALARM_RECONNECT_CLOSED 0x8046 //رձ +#define EXCEPTION_SERIAL_RECONNECT_CLOSED 0x8047 //ر͸ͨ +#define EXCEPTION_PIC_RECONNECT_CLOSED 0x8048 //رջ +#define EXCEPTION_PASSIVE_DECODE_RECONNECT_CLOSED 0x8049 //رձ +#define EXCEPTION_PASSIVE_TRANS_RECONNECT_CLOSED 0x804a //رձת +#define EXCEPTION_VIDEO_DOWNLOAD 0x804b // [add] by yangzheng 2019/11/09 ¼쳣 + +/********************Ԥص*********************/ +#define NET_DVR_SYSHEAD 1 //ϵͳͷ +#define NET_DVR_STREAMDATA 2 //ƵݣƵֿƵݣ +#define NET_DVR_AUDIOSTREAMDATA 3 //Ƶ +#define NET_DVR_STD_VIDEODATA 4 //׼Ƶ +#define NET_DVR_STD_AUDIODATA 5 //׼Ƶ +#define NET_DVR_SDP 6 //SDPϢ(RstpʱЧ) +#define NET_DVR_CHANGE_FORWARD 10 //ıΪ +#define NET_DVR_CHANGE_REVERSE 11 //ıΪ +#define NET_DVR_PLAYBACK_ALLFILEEND 12 //طļ +#define NET_DVR_VOD_DRAW_FRAME 13 //طų֡ +#define NET_DVR_VOD_DRAW_DATA 14 //϶ƽ +#define NET_DVR_HLS_INDEX_DATA 15 //HLS +#define NET_DVR_PLAYBACK_NEW_POS 16 //ط(ʱ䶨λNET_DVR_PLAYSETTIMENET_DVR_PLAYSETTIME_V50ӿڷسɹ󣬻ҪȴյûصͺſΪɹ) +#define NET_DVR_METADATA_DATA 107 //Metadata +#define NET_DVR_PRIVATE_DATA 112 //˽,Ϣ + +//豸ͺ(DVR) +/* 豸 */ +#define DVR 1 /*δdvrͷDVR*/ +#define ATMDVR 2 /*atm dvr*/ +#define DVS 3 /*DVS*/ +#define DEC 4 /* 6001D */ +#define ENC_DEC 5 /* 6001F */ +#define DVR_HC 6 /*8000HC*/ +#define DVR_HT 7 /*8000HT*/ +#define DVR_HF 8 /*8000HF*/ +#define DVR_HS 9 /* 8000HS DVR(no audio) */ +#define DVR_HTS 10 /* 8016HTS DVR(no audio) */ +#define DVR_HB 11 /* HB DVR(SATA HD) */ +#define DVR_HCS 12 /* 8000HCS DVR */ +#define DVS_A 13 /* ATAӲ̵DVS */ +#define DVR_HC_S 14 /* 8000HC-S */ +#define DVR_HT_S 15 /* 8000HT-S */ +#define DVR_HF_S 16 /* 8000HF-S */ +#define DVR_HS_S 17 /* 8000HS-S */ +#define ATMDVR_S 18 /* ATM-S */ +#define DVR_7000H 19 /*7000Hϵ*/ +#define DEC_MAT 20 /*·*/ +#define DVR_MOBILE 21 /* mobile DVR */ +#define DVR_HD_S 22 /* 8000HD-S */ +#define DVR_HD_SL 23 /* 8000HD-SL */ +#define DVR_HC_SL 24 /* 8000HC-SL */ +#define DVR_HS_ST 25 /* 8000HS_ST */ +#define DVS_HW 26 /* 6000HW */ +#define DS630X_D 27 /* · */ +#define DS640X_HD 28 /*640X*/ +#define DS610X_D 29 /*610X*/ +#define IPCAM 30 /*IP */ +#define MEGA_IPCAM 31 /*IP*/ +#define IPCAM_X62MF 32 /*862MFԽ9000豸*/ +#define ITCCAM 35 /*ܸ*/ +#define IVS_IPCAM 36 /*ܷ*/ +#define ZOOMCAM 38 /*һ*/ +#define IPDOME 40 /*IP */ +#define IPDOME_MEGA200 41 /*IP 200*/ +#define IPDOME_MEGA130 42 /*IP 130*/ +#define IPDOME_AI 43 /*IP ܿ*/ +#define TII_IPCAM 44 /*ȳ*/ +#define IPTC_DOME 45 /*ȳ˫Ŀ*/ +#define DS_2DP_Z 46 /*ӥۣ*/ +#define DS_2DP 47 /*ӥۣС*/ +#define ITS_WMS 48 /*ݹ*/ +#define IPMOD 50 /*IP ģ*/ +#define TRAFFIC_YTDOME 51 //̨ͨ״٣ +#define TRAFFIC_RDDOME 52 //̨ͨ״٣ +#define IDS6501_HF_P 60 // 6501 +#define IDS6101_HF_A 61 //ATM +#define IDS6002_HF_B 62 //˫٣DS6002-HF/B +#define IDS6101_HF_B 63 //ΪDS6101-HF/B DS6101-HF/B_SATA +#define IDS52XX 64 //ܷIVMS +#define IDS90XX 65 // 9000 +#define IDS8104_AHL_S_HX 66 // ʶ ATM +#define IDS8104_AHL_S_H 67 // ˽ʶ ATM +#define IDS91XX 68 // 9100 +#define IIP_CAM_B 69 // ΪIP +#define IIP_CAM_F 70 //IP +#define DS71XX_H 71 /* DS71XXH_S */ +#define DS72XX_H_S 72 /* DS72XXH_S */ +#define DS73XX_H_S 73 /* DS73XXH_S */ +#define DS72XX_HF_S 74 //DS72XX_HF_S +#define DS73XX_HFI_S 75 //DS73XX_HFI_S +#define DS76XX_H_S 76 /* DVR,e.g. DS7604_HI_S */ +#define DS76XX_N_S 77 /* NVR,e.g. DS7604_NI_S */ +#define DS_TP3200_EC 78 /*ܼ*/ +#define DS81XX_HS_S 81 /* DS81XX_HS_S */ +#define DS81XX_HL_S 82 /* DS81XX_HL_S */ +#define DS81XX_HC_S 83 /* DS81XX_HC_S */ +#define DS81XX_HD_S 84 /* DS81XX_HD_S */ +#define DS81XX_HE_S 85 /* DS81XX_HE_S */ +#define DS81XX_HF_S 86 /* DS81XX_HF_S */ +#define DS81XX_AH_S 87 /* DS81XX_AH_S */ +#define DS81XX_AHF_S 88 /* DS81XX_AHF_S */ +#define DS90XX_HF_S 90 /*DS90XX_HF_S*/ +#define DS91XX_HF_S 91 /*DS91XX_HF_S*/ +#define DS91XX_HD_S 92 /*91XXHD-S(MD)*/ +#define IDS90XX_A 93 // 9000 ATM +#define IDS91XX_A 94 // 9100 ATM +#define DS95XX_N_S 95 /*DS95XX_N_S NVR κ*/ +#define DS96XX_N_SH 96 /*DS96XX_N_SH NVR*/ +#define DS90XX_HF_SH 97 /*DS90XX_HF_SH */ +#define DS91XX_HF_SH 98 /*DS91XX_HF_SH */ +#define DS_B10_XY 100 /*Ƶۺƽ̨豸ͺ(X:ƬY:Ƭ)*/ +#define DS_6504HF_B10 101 /*Ƶۺƽ̨ڲ*/ +#define DS_6504D_B10 102 /*Ƶۺƽ̨ڲ*/ +#define DS_1832_B10 103 /*Ƶۺƽ̨ڲ*/ +#define DS_6401HFH_B10 104 /*Ƶۺƽ̨ڲ˰*/ +#define DS_65XXHC 105 //65XXHC DVS +#define DS_65XXHC_S 106 //65XXHC-SATA DVS +#define DS_65XXHF 107 //65XXHF DVS +#define DS_65XXHF_S 108 //65XXHF-SATA DVS +#define DS_6500HF_B 109 //65 rack DVS +#define IVMS_6200_C 110 // iVMS-6200(/C) +#define IVMS_6200_B 111 // iVMS-6200(/B) +#define DS_72XXHV_ST15 112 //72XXHV_ST ˼3515ƽ̨ DVR +#define DS_72XXHV_ST20 113 //72XXHV_ST ˼3520ƽ̨ DVR +#define IVMS_6200_T 114 // IVMS-6200(/T) +#define IVMS_6200_BP 115 // IVMS-6200(/BP) +#define DS_81XXHC_ST 116 //DS_81XXHC_ST +#define DS_81XXHS_ST 117 //DS_81XXHS_ST +#define DS_81XXAH_ST 118 //DS_81XXAH_ST +#define DS_81XXAHF_ST 119 //DS_81XXAHF_ST +#define DS_66XXDVS 120 //66XX DVS + +#define DS_1964_B10 121 /*Ƶۺƽ̨ڲ*/ +#define DS_B10N04_IN 122 /*Ƶۺƽ̨ڲ*/ +#define DS_B10N04_OUT 123 /*Ƶۺƽ̨ڲ*/ +#define DS_B10N04_INTEL 124 /*Ƶۺƽ̨ڲ*/ +#define DS_6408HFH_B10E_RM 125 //V6 +#define DS_B10N64F1_RTM 126 //V6DSP +#define DS_B10N64F1D_RTM 127 //V6DSP +#define DS_B10_SDS 128 //Ƶۺƽ̨ +#define DS_B10_DS 129 //Ƶۺƽ̨ +#define DS_6401HFH_B10V 130 //VGA +#define DS_6504D_B10B 131 /*Ƶۺƽ̨ڲ*/ +#define DS_6504D_B10H 132 /*Ƶۺƽ̨ڲ*/ +#define DS_6504D_B10V 133 /*Ƶۺƽ̨ڲVGA*/ +#define DS_6408HFH_B10S 134 //Ƶۺƽ̨SDIӰ +#define DS_18XX_N 135 /* */ +#define DS_6504HF_B10F_CLASS 136 //˻SD +#define DS_18XX_PTZ 141 /*Ʒ*/ +#define DS_19AXX 142 /*ͨñƷ*/ +#define DS_19BXX 143 /*ñ*/ +#define DS_19CXX 144 /*б*/ +#define DS_19DXX 145 /*ر*/ +#define DS_19XX 146 /*1900ϵб*/ +#define DS_19SXX 147 /*Ƶ*/ +#define DS_1HXX 148 /*CSƷ*/ // +#define DS_PEAXX 149 /*һʽƷ*/ +#define DS_PWXX 150 /*߱Ʒ*/ +#define DS_PMXX 151 /*4Gģ*/ +#define DS_19DXX_S 152 /*Ƶ*/ +#define DS_PWAXX 153 /* Axiom Hub߱ */ +#define DS_PHAXX 154 /* Axiom Hybridϱ */ +#define DS_PHAProXX 155 /* Axiom Hybrid Proϱ*/ + + +//2011-11-30 +#define DS_C10H 161 /**/ +#define DS_C10N_BI 162 //BNC +#define DS_C10N_DI 163 //rbg +#define DS_C10N_SI 164 // +#define DS_C10N_DO 165 //ʾ +#define DS_C10N_SERVER 166 //ֲʽ + + +#define IDS_8104_AHFL_S_H 171 // 8104ATM +#define IDS_65XX_HF_A 172 // 65 ATM +#define IDS90XX_HF_RH 173 // 9000 RH +#define IDS91XX_HF_RH 174 // 9100 RH豸 +#define IDS_65XX_HF_B 175 // 65 Ϊ +#define IDS_65XX_HF_P 176 // 65 ʶ +#define IVMS_6200_F 177 // IVMS-6200(/F) +#define IVMS_6200_A 178 //iVMS-6200(/A) +#define IVMS_6200_F_S 179 // IVMS-6200(/F_S) + +#define DS90XX_HF_RH 181 // 9000 RH 648 +#define DS91XX_HF_RH 182 // 9100 RH豸 648 +#define DS78XX_S 183 // 78ϵ豸 6446 +#define DS81XXHW_S 185 // 81 Resolution 960 KY2011 +#define DS81XXHW_ST 186 // DS81XXHW_ST KY2011 +#define DS91XXHW_ST 187 // DS91XXHW_ST KY2011 +#define DS91XX_ST 188 // DS91XX_ST netra +#define DS81XX_ST 189 // DS81XX_ST netra +#define DS81XXHX_ST 190 // DS81XXHDI_ST,DS81XXHE_ST ky2012 +#define DS73XXHX_ST 191 // DS73XXHI_ST ky2012 +#define DS81XX_SH 192 // Ѷ81SH,81SHF +#define DS81XX_SN 193 // Ѷ81SNL + +#define DS96XXN_ST 194 //NVR:DS96xxN_ST +#define DS86XXN_ST 195 //NVR:DS86xxN_ST +#define DS80XXHF_ST 196 //DVR:DS80xxHF_ST +#define DS90XXHF_ST 197 //DVR:DS90xxHF_ST +#define DS76XXN_ST 198 //NVR:DS76xxN_ST + +#define DS_9664N_RX 199 //NVR:DS_9664N_RX +#define ENCODER_SERVER 200 // 뿨 +#define DECODER_SERVER 201 // 뿨 +#define PCNVR_SERVER 202 // PCNVR洢 +#define CVR_SERVER 203 // ŵCVRԼΪDVR_S-1 +#define DS_91XXHFH_ST 204 // 91ϵHD-SDIDVR +#define DS_66XXHFH 205 // 66 +#define TRAFFIC_TS_SERVER 210 //ն˷ +#define TRAFFIC_VAR 211 //Ƶ¼ +#define IPCALL 212 //IPӶԽֻ +#define SAN_SERVER 213 //CVR_SERVERͬijֻģʽͬ + +#define DS_B11_M_CLASS 301 /*Ƶۺƽ̨豸ͺ*/ +#define DS_B12_M_CLASS 302 /*Ƶۺƽ̨豸ͺ*/ +#define DS_6504HF_B11_CLASS 303 /*Ƶۺƽ̨ڲ*/ +#define DS_6504HF_B12_CLASS 304 /*Ƶۺƽ̨ڲ*/ +#define DS_6401HFH_B11V_CLASS 305 //VGA +#define DS_6401HFH_B12V_CLASS 306 //VGA +#define DS_6408HFH_B11S_CLASS 307 //SDI +#define DS_6408HFH_B12S_CLASS 308 //SDI +#define DS_6504D_B11H_CLASS 309 /*Ƶۺƽ̨ڲ*/ +#define DS_6504D_B11B_CLASS 310 /*Ƶۺƽ̨ڲ*/ +#define DS_6504D_B12B_CLASS 311 /*Ƶۺƽ̨ڲ*/ +#define DS_6504D_B11V_CLASS 312 /*Ƶۺƽ̨ڲVGA*/ +#define DS_6504D_B12V_CLASS 313 /*Ƶۺƽ̨ڲVGA*/ +//B10 +#define DS_6401HFH_B10R_CLASS 314 //B10 RGB +#define DS_6401HFH_B10D_CLASS 315 //B10 DVI +#define DS_6401HFH_B10H_CLASS 316 //B10 HDMI +//B11 +#define DS_6401HFH_B11R_CLASS 317 //B11 RGB +#define DS_6401HFH_B11D_CLASS 318 //B11 DVI +#define DS_6401HFH_B11H_CLASS 319 //B11 HDMI +//B12 +#define DS_6401HFH_B12R_CLASS 320 //B12 RGB +#define DS_6401HFH_B12D_CLASS 321 //B12 DVI +#define DS_6401HFH_B12H_CLASS 322 //B12 HDMI +#define DS_65XXD_B10Ex_CLASS 323 //netra + +//B10 V2.1 +#define DS_6516HW_B10_CLASS 324 //netra߱ +#define DS_6401HFH_B10F_RX_CLASS 326 //˻루֧1/2·˻룩 +#define DS_6502HW_B10F_RX_CLASS 327 //960H˻루֧1/4/8·˻룩 +//2012-5-16 +#define DS_6504D_B11Ex_CLASS 328 //netra +#define DS_6504D_B12Ex_CLASS 329 //netra +#define DS_6512_B11_CLASS 330 //netra߱ +#define DS_6512_B12_CLASS 331 //netra߱ +#define DS_6504D_B10H_CLASS 332 //Ƶۺƽ̨ڲ + +#define DS_65XXT_B10_CLASS 333 //Ƶۺƽ̨תϵͳ +#define DS_65XXD_B10_CLASS 335 //Ƶۺƽ̨ܽ +#define DS_IVMSE_B10X_CLASS 336 //X86ϵͳ +#define DS_6532D_B10ES_CLASS 337 //ǿͽ_SDI(B10) +#define DS_6508HFH_B10ES_CLASS 338 //SDIϵͳ +#define DS_82NCG_CLASS 340 //еϵͳ +#define DS_82VAG_CLASS 341 //еϵͳ +#define DS_1802XXF_B10_CLASS 342 //ڽϵͳ +#define iDS_6504_B10EVAC_CLASS 343 //ϵͳ +#define iDS_6504_B10EDEC_CLASS 344 //ϵͳ +#define DS_6402HFH_B10EV_CLASS 345 //netra(VGA) +#define DS_6402HFH_B10ED_CLASS 346 //netra(DVI) +#define DS_6402HFH_B10EH_CLASS 347 //netra(HDMI) +#define DS_6404HFH_B10T_RX_CLASS 348 //˽ +#define DS_6504D_AIO_CLASS 349 //netra +#define DS_IVMST_B10_CLASS 350 //X86תϵͳ +#define DS_6402_AIO_CLASS 351 //netra +#define DS_iVMSE_AIO_CLASS 352 //x86ϵͳ +#define DS_AIO_M_CLASS 353 //һ + + +#define DS_6508HF_B10E_CLASS 355 //BNCϵͳ +#define DS_6404HFH_B10ES_CLASS 356 //SDIϵͳ +#define DS_6402HFH_B10ER_CLASS 358 //RGBϵͳ +#define DS_6404HFH_B10T_RM_CLASS 361 //ϵͳ +#define DS_6516D_B10EB_CLASS 362 //BNCϵͳ +#define DS_6516D_B10ES_CLASS 363 //SDIϵͳ + +//DVI/HDMI/VGAԽ빫һ +#define DS_6508D_B10FH_CLASS 364 +#define DS_6508D_B10FD_CLASS 364 +#define DS_6508D_B10FV_CLASS 364 + +#define DS_6508_B11E_CLASS 365 //BNCϵͳ +#define DS_6402_B11ES_CLASS 366 //SDIϵͳ +#define DS_6402_B11EV_CLASS 367 //VGAϵͳ +#define DS_6402_B11ER_CLASS 368 //RGBϵͳ +#define DS_6402_B11ED_CLASS 369 //DVIϵͳ +#define DS_6402_B11EH_CLASS 370 //HDMIϵͳ +#define DS_6516D_B11EB_CLASS 371 //BNCϵͳ +#define DS_6516D_B11ES_CLASS 372 //SDIϵͳ + +#define DS_6508_B12E_CLASS 373 //BNCϵͳ +#define DS_6402_B12ES_CLASS 375 //SDIϵͳ +#define DS_6402_B12EV_CLASS 376 //VGAϵͳ +#define DS_6402_B12ER_CLASS 377 //RGBϵͳ +#define DS_6402_B12ED_CLASS 378 //DVIϵͳ +#define DS_6402_B12EH_CLASS 379 //HDMIϵͳ +#define DS_6516D_B12EB_CLASS 380 //BNCϵͳ + +#define DS_iVMSE_AIO_8100x_CLASS 381 //ҵһX86ϵͳ +#define DS_iVMSE_AIO_87x_CLASS 382 //¥һX86ϵͳ +#define DS_6532D_B11ES_CLASS 384 //ǿͽ_SDI(B11) +#define DS_6532D_B12ES_CLASS 385 //ǿͽ_SDI(B12) +//B20 +#define DS_B20_MSU_NP 400 //B20ذ +#define DS_6416HFH_B20S 401 //SDI +#define DS_6416HFH_B20_RM 402 // +#define DS_6564D_B20D 403 //DVI +#define DS_6564D_B20H 404 //HDMI +#define DS_6564D_B20V 405 //VGA +#define DS_B20_6516D_DEV_CLASS 406 //B20ϵͳ +#define DS_6408HFH_B20V 407 //VGA +#define DS_MMC_B20_CLASS 408 //B20 +#define DS_CARD_CHIP_B20_CLASS 409 //B20Ӱ +#define DS_6564D_B20B_DEV_CLASS 410 //BNCϵͳ +#define DS_6564D_B20S_DEV_CLASS 411 //SDIϵͳ +#define DS_6532HF_B20B_DEV_CLASS 412 //BNCϵͳ +#define DS_6408HFH_B20D_DEV_CLASS 413 //DVIϵͳ +#define DS_6408HFH_B20H_DEV_CLASS 414 //HDMIϵͳ +#define DS_IVMSE_B20_CLASS 415 //X86ϵͳ +#define DS_6402HFH_B20Y_DEV_CLASS 416 //YUVϵͳ +#define DS_6508HW_B20_DEV_CLASS 417 //HWϵͳ +#define DS_B20N128Fx_B20_DEV_CLASS 418 //DS_B20N128Fx_M +#define DS_AIO_MCU_NP_DEV_CLASS 419 //IOذ +#define DS_6402_AIO_EV_DEV_CLASS 420 //VGA +#define DS_6508D_AIO_EV_DEV_CLASS 421 //VGA +#define DS_6508D_AIO_ED_DEV_CLASS 422 //DVI +#define DS_6508D_AIO_EH_DEV_CLASS 423 //HDMI +#define DS_6508HD_B20F_DEV_CLASS 424 //Ƶǿ +#define DS_6402HFH_B20ES_DEV_CLASS 425 //3G SID +#define DS_6532D_B20_DEV_CLASS 426 //B20ϵͳ +#define DS_IVMST_B20_DEV_CLASS 427 //X86ϵͳ +#define DS_6416HFH_B20DD_DEV_CLASS 428 //DVI˫· +#define DS_6441VS_B20_DEV_CLASS 429 //ƴ +#define DS_6404HFH_B20T_CLASS 431 //TVI +#define DS_FS22_B20_DEV_CLASS 432 //ϵͳ +#define DS_IVMSE_B20UH_DEV_CLASS 433 //X86 +#define IDS_6524J_B20_DEV_CLASS 434 +#define IDS_6532B_B20_DEV_CLASS 435 +#define DS_6404HFH_B20Fx_DEV_CLASS 436 //˻ϵͳ +#define DS_N128x_B20Fy_CLASS 437 //ϵͳ +#define DS_181600F_B20_CLASS 438 //ϵͳ +#define DS_6904UD_B20H_CLASS 439 //ϵͳ + +#define DS_B21_MCU_NP_CLASS 440 //B21 +#define DS_B21_S10_x_CLASS 441 //B21 x = A/S/D +#define DS_6402HFH_B21D_CLASS 442 //B21ϵͳ +#define DS_6508HD_B21D_CLASS 443 //B21ϵͳ +#define DS_iVMSE_B21HW_CLASS 444 //B21 X86ϵͳ + +#define DS_C10S 501 //C10S ʽ +#define DS_C3X 502 //ʽƴӿ + +#define DS_C10N_SDI 551 //SDI +#define DS_C10N_BIW 552 //8·BNC +#define DS_C10N_DON 553 //ʾ +#define DS_C10N_TVI 554 //TVI +#define DS_C10N_DI2 555 //DVI 2· +#define DS_C10N_AUDIO_OUT 556 //DVIHDMIVGAƵ +#define DS_C10N_AUDIO_IN 557 //DVIHDMIVGAƵ + +//汾ķֲʽ +#define DS_C20N 570 //ֲʽ +#define DS_C20N_BNC 571 //BNC豸 +#define DS_C20N_DVI 572 //DVI豸 +#define DS_C20N_DP 573 //DP豸 +#define DS_C20N_OUT 574 //豸 + +//ʽ 5301 - 5350 50 +#define DS_C30 5301 //C30ʽƴӿ +#define DS_C31 5302 //C31ʽƴӿ +#define DS_M0804 5303 //M0804ƴӿ + +//Ӳ汾ķֲʽ +#define DS_C20N_VWMS 5351 //C20N +#define DS_C20N_DI2 5352 //·DVI豸 +#define DS_C20N_DO2 5353 //·DVI豸 +#define DS_C20N_UHDI 5354 //DP/HDMI 1·4K豸 +#define DS_C20N_YI2 5355 //·YPbPr + +#define DS_C12N_VWMS 5356 //C12N +#define DS_C12N_DO 5357 //1·DVI +#define DS_C12N_HOE 5358 //1·HDMI 4K + +#define DS_C20N_HI2 5359 // HDMIڵ(2·) +#define DS_C20N_VI2 5360 //VGAڵ(2·) +#define DS_C20N_SI2 5361 //SDIڵ(2·) +#define DS_C20N_HO2 5362 //HDMIڵ(2·) +#define DS_C20N_S24G 5363 //C20Nרǧ׽(24·) +#define DS_C20N_S24X 5364 //C20Nר׽(24·) +#define DS_C12A_0104H 5365 //ƴӿ +#define DS_C20N_DO2_V2 5366 //·DVI豸V2 +#define DS_C20N_HO2_V2 5367 //·HDMI豸V2 +#define DS_C21N 5368 //ֲʽ +#define DS_C21K 5369 //ϯKVMϵͳC21 +#define DS_68TS_A 5370 //һ +#define DS_C22N_UHDI 5371 //4K60豸(1·) +#define DS_C21N_UHDI_T 5372 //1·4K60ڵ +#define DS_C22N_HI1 5373 //1·HDMI +#define DS_C22N_HO1 5374 //1·HDMI + + +//ȫϢʾ豸 +#define DS_D1HXX 5591 //ȫϢʾ豸 +#define DS_60SDL_X 5592 //Windows˫ն +#define DS_6043DL_B 5593 //׿˫43ն +#define DS_6049DL_B 5594 //׿˫49ն +#define DS_6055DL_B 5595 //׿˫55ն + +//ߴ豸 +#define ELEVATO_BRIDGE 5751 //ߵ +#define DS_3WF01S_5NG_M 5752 //5.8G1߹ +#define DS_3WF0EC_2N_D 5753 //2.4G500 +#define DS_3WF0EC_5ACT 5754 //5.8G 11ac +#define DS_3WF03S_5AC 5755 //5.8G 3ᆳ +#define DS_3WF0ES_5AC_H 5756 //5.8G500׸ߴ͸ +#define DS_3WF05S_5AC_H 5765 //5.8G 5KMǧڲ +#define DS_3WSXXX 5766 //·ϵУAC +#define DS_3WAXXX 5767 //APϵ +#define DS_3WAXXXP 5768 //APϵ +#define DS_3WRXXX 5769 //ͨ·ϵ +#define DS_3WMRXXX 5770 //MESH·ϵ +#define DS_3WAX18 5881 //AP + +//豸 +#define DS_3CXXXX 5891 //ͳһƽ̨ + + +//豸 +#define DS_19M00_MN 601 //ģ +#define DS_KH8302_A 602 //ڻ +#define DS_KD8101_2 603 //ſڻ +#define DS_KM8301 604 // +#define DS_KVXXXX_XX 605 //ſڻ +#define DS_LHPM1D_C 606 //Ƶ +#define DS_KAM03 607 //תģ +#define DS_KDXXX 608 //ܽնˣҵDS-KD9623-F-JPDS-KD9623-FC-JPDS-KD9803-F-JPҽҵDS-KD9803-3XF5G-HIDS-KD9803-3XFW-HIDS-KD9803-W-HI + +#define DS64XXHD_T 701 //64-T +#define DS_65XXD 703 //65ܽ +#define DS63XXD_T 704 //63-T +#define SCE_SERVER 705 //ץ +#define DS_64XXHD_S 706 //64XXHD-S +#define DS_68XXT 707 //๦Ƶת +#define DS_65XXD_T 708 //65D-Tܽ +#define DS_65XXHD_T 709 //65HD-Tܽ +#define DS_69XXUD 710 //69XXUD +#define DS_65XXUD 711 //65XXUD +#define DS_65XXUD_L 712 //65XXUD_L +#define DS_65XXUD_T 713 //65XXUD_T + + +#define DS_D20XX 750 //LCDĻ 뿨 +//SDI +#define DS_C50S 751 //SDI +#define DS_D50XX 752 //LCDĻ 뿨 + +#define DS_D40 760 //LEDͿ + +#define DS_65VMXX 770 //Ƶ +#define DS_65VTXX 771 //Ƶն +#define DS_65VTA 772 //Ƶһʽն +#define DS_65VT_RX 773 //ѧն +#define DS_65VM_MCU_NP 774 //MCU + + +#define DS_CS_SERVER 800 // +#define DS_68GAP_MCU 831 //Ƶբ +#define DS_K260X 850 //Ž +#define DS_K1TXXX 851 //ָһ +#define DS_K280X 852 //Ž +#define DS_K1T80X 854 //Žһ +#define RAC_6X00 856 //ָŽһ +#define DS_K2602_AX 857 //Աͨ +#define DS_K1T803F 858 //ָŽƷ +#define DS_K2700 859 //ֲʽܹŽ +#define DS_K270X 860 //ֲʽܹ͵ؿ +#define DS_K1T500S 861 //Žһ +#define DS_K1A801F 862 //ָŽƷ +#define DS_K1T600X 863 //ʶŽһ +#define DS_K22X 864 //ݿ +#define DS_K2M0016AX 865 //ݿطֿ +#define DS_K2602S_AX 867 //ԱͨƷ +#define DS_K560XX 870 //ʽ/̨ʽʶն +#define DS_K260X_E 873 //ͶŽ +#define DS_K5603X 874 //̨ʽ/ڹʽǶʽ֤豸 +#define DS_K3M200X 875 //Ȩ޿ +#define DS_K3M100X 879 //ͨ +#define DS_K1T8101XT 881 //ʶŽһ +#define DS_K1T8101XX 882 //ʶŽһ +#define DS_K5604 883 //5604֤豸 +#define DS_K1T607XXXX 884 //жŽһDS_K1T607M/MF/E/EF/MG/MFG?MW/MFW/TM/TMF/TE/TEF/TMG/TMFG/TMW/TMFW +#define DS_K1A850X 885 //Ͷ˾ָƿڻ +#define DS_K1T800X 886 //Ͷ˾ָŽһ +#define DS_K1T610XXXX 887 //жŽһDS_K1T610M/MF/E/EF/MG/MFG?MW/MFW/TM/TMF/TE/TEF/TMG/TMFG/TMW/TMFW +#define DS_K1T8115X 888 //DS-K1T8115DS-K1T8115MDS-K1T8115M-Z ʶһ +#define DS_K1T815LC_M 889 //ʶһ +#define DS_K1T606M_Z 890 //ʶһ +#define DS_K5607_XXX 891 //K5607ᱡͨ +#define DS_K1T950MX 893 //ָŽһ +#define DS_K1T331XX 894 //ͶŽһ +#define DS_K1T671T 895 //Žһ +#define DS_K1T671 896 //Žһ +#define DS_K5671 897 //ᱡͨ +#define DS_K1T640 898 //4.3Žһ +#define DS_K1A802A 899 //ָƿڻ + +#define DS_6800M 900 //68M +#define DS_68NTH 901 //Ϣ +#define DS_D60S 902 //Ϣ +#define DS_D60W 903 //ϢWindowsն +#define DS_D10 931 //Ͷʾ豸 +#define DS_3K0X_NM 951 //շ +#define DS_3E2328 952 //׽ +#define DS_3E1528 953 //ǧ׽ +#define SCREEN_LINK_SERVER 971 //Ļ +#define DS_D51OPSXX 972 //OPSԺ +//һ廯̨ +#define IP_PTSYS_MEGA200 1001 //IP 200һ廯̨ +#define IPCAM_FISHEYE 1002 // +#define IPCAM_FISHEYE_E 1003 // + +//68xxϵ˫Ŀ3D +#define IPCAM_BINOCULAR 1004 //˫Ŀ + +#define IPCAM_365 1010 //֧365ƽ̨IPC CAM +#define IPCAM_R0 1011 //֧A5Sƽ̨IPC CAM +#define IPCAM_R1 1012 //֧385ƽ̨IPC CAM +#define IPCAM_R2 1013 //֧R2ƽ̨IPC CAM +#define IPCAM_R3 1014 //֧8127ƽ̨IPC CAM +#define IPCAM_R4 1015 //֧S2ƽ̨IPC CAM + +#define IPDOME_365 1110 //֧365ƽ̨IPD CAM +#define IPDOME_R0 1111 //֧A5Sƽ̨IPD CAM +#define IPDOME_R1 1112 //֧385ƽ̨IPD CAM +#define IPDOME_R2 1113 //֧R2ƽ̨IPD CAM +#define IPDOME_R3 1114 //֧8127ƽ̨IPD CAM +#define IPDOME_R4 1115 //֧S2ƽ̨IPD CAM +#define ITCCAM_R3 1211 //֧8127ƽ̨ITCCAM + +//˻ҵ豸1300~1350 +#define UAV_S 1300 //˻վ豸 Ummanned Aerial Vehicle C Station + +//豸 2013-11-19 +#define TRAFFIC_ECT 1400 //ECT豸 +#define TRAFFIC_PARKING_SERVER 1401 //ͣ +#define TRAFFIC_TME 1402 //ڿƻ +// DVR +#define DS90XXHW_ST 2001 // DS90XXHW_STDVR +#define DS72XXHX_SH 2002 // DS-72xxHV_SH, DS-72xxHF-SH +#define DS_92XX_HF_ST 2003 // DS-92XX-HF-ST +#define DS_91XX_HF_XT 2004 // 9100DVR_HF_XT +#define DS_90XX_HF_XT 2005 // 9000DVR_HF_XT +#define DS_73XXHX_SH 2006 // 7300DVR_HX_SH +#define DS_72XXHFH_ST 2007 // 7200DVR_HFH_ST +//DS_67ϵ + +#define DS_67XXHF_SATA 2008 // DS-67XXHF-SATA +#define DS_67XXHW 2009 // DS-67XXHW +#define DS_67XXHW_SATA 2010 // DS-67XXHW-SATA +#define DS_67XXHF 2011 // DS-67XXHF + +//Netra2.3 +#define DS_72XXHF_SV 2012 // DS-72xxHF-SV +#define DS_72XXHW_SV 2013 // DS-72xxHW-SV + +#define DS_81XXHX_SH 2014 // 8100DVR_HX_SH + +#define DS_71XXHX_SL 2015 //СDVR + +#define DS_76XXH_ST 2016 //DS_76XXH_ST + + +#define DS_73XXHFH_ST 2017 //73HFHϵ +#define DS_81XXHFH_ST 2018 //81HFHϵ ST + +#define DS_72XXHFH_SL 2019 //hi3521 +#define DS_FDXXCGA_FLT 2020 //2λATM + +#define IDS_91XX_HF_ST_A 2100 //iDS-9100HF-ST/A +#define IDS_91XX_HF_ST_B 2101 //iDS-9100HF-ST/B +#define IDS_90XX_HF_ST_A 2102 //iDS-9000HF-ST/A +#define IDS_90XX_HF_ST_B 2103 //iDS-9000HF-ST/B +#define IDS_81XX_HF_ST_A 2104 //iDS-8100HF-ST/A +#define IDS_81XX_HF_ST_B 2105 //iDS-8100HF-ST/B +#define IDS_80XX_HF_ST_A 2106 //iDS-8000HF-ST/A +#define IDS_80XX_HF_ST_B 2107 //iDS-8000HF-ST/B +#define IDS_8104_AHFL_ST 2108 //ܻATM +#define IDS_2CD6812F_C 2109 //ֱ˫Ŀ + + +// NVR +#define DS_77XXN_ST 2201 // NVR DS-77XXHF-ST +#define DS_95XX_N_ST 2202 // 95XXN_ST NVR +#define DS_85XX_N_ST 2203 // 85XXN_ST NVR +#define DS_96XX_N_XT 2204 // 9600NVR_N_XT +#define DS_76XX_N_SE 2205 // 7600NVR_N_SE + +//Ѷ +#define DS_86XXSN_SX 2206 // 8608NVR_SX4DS-8608SNL-SPDS-8608SNL-STDS-8608SN-SPDS-8608SN-STLʾLCDPPOE + +//#define DS_96XX_N_RX 2207 //DS-96XX-N-RX +#define DS_71XXN_SL 2208 //DS-71XXN-SL òƷ +#define CS_N1_1XX 2209 //CS_N1_1XXҵ + +#define DS_71XXN_SN 2210 //71XX_N_SN òƷ +#define CS_N1_2XX 2211 //N1_2XX ҵ +#define DS_76XX_N_SHT 2212 //76XX_N_SHT ˻߲Ʒ +#define DS_96XXX_N_E 2213 //NVR(256) + +#define DS_76XXN_EX 2214 /* 76 78ϵNVRע 4 8 16·E1һλ 8 16 32· E2λ /N /P豸*/ +#define DS_77XXN_E4 2215/* 77ϵNVR ע8 16 32· /N /P豸*/ +#define DS_86XXN_E8 2216/* 86ϵNVR ע8 16 32· /N /P豸*/ +#define DS_9616N_H8 2217 //DS_9616N_H8 +#define DS_72XXHX_EX_GXY 2218 //ʾ72ϵDVRƷ72xxʾͨHXĿǰHW,Ϊ˺չEXʾλG XYʾ +#define DS_76XXN_EX_GXY 2219 //ʾ76ϵNVRƷ76xxʾͨEXʾλG XYʾ +#define DS_72XXHXH_SH_21 2220 // 72XXHXH_SH_21 +#define DS_72XXHXH_SH_31 2221 // 72XXHXH_SH_31 +#define DS_73XXHXH_SH_31 2222 // 73XXHXH_SH_31 +#define DS_81XXHXH_SH_31 2223 // 81XXHXH_SH_31 +#define DS_71XXHXH_SH_21 2224 // 71XXHXH_SH_21 +#define DS_71XXHXH_SH_31 2225 // 71XXHXH_SH_31 +#define DS_NBXX_N_E1_X 2226 //Яʽ +#define DS_96XXN_FX 2230 +#define DS_86XXN_FX 2231 +#define DS_96XXXN_HX 2232 //96ϵи豸 + + +#define DS_86XXN_I 2233 //DS_86XXN_I +#define DS_77XX_N_I 2234 //DS_77XX_N_I +#define DS_76XX_N_I 2235 //DS_76XX_N_I +#define DS_78XX_N_I 2236 //DS_78XX_N_I +#define DS_96XXXN_IX 2237 //DS-96XXX_N_IDS-96128N-I16DS-96128N-I24DS-96256N-I16DS-96256N-I24 + +#define DS_90XXHXH_XT 2238 //DS_90XXHXH_XTDS-9016HQH-XT + +#define DS_NVR_ALL 2239 //NVR豸ͳһ룬NVRƷѶϵУʹDS_NVR_ALL +#define DS_DVR_ALL 2240 //DVR豸ͳһ룬DVRƷѶϵУʹDS_DVR_ALL + +//PCNVR +#define PCNVR_IVMS_4200 2301 // PCNVR_IVMS_4200 + + +//ܷ +#define IVMS_6200_TP 2401 //IVMS-6200 ͨյ +#define IVMS_6200_TF 2402 //IVMS-6200 ͨȡ֤ +#define IVMS_6200_D 2403 //iVMS-6200(/D) +#define IDS_81XXAHW_ST 2405 //iDS-81xxAHW-ST +#define IDS_81XXAHW_SP 2406 //iDS-81xxAHW-SP +#define IDS_81XXAHWL_ST 2407 //iDS-81xxAHWL-ST +#define IDS_81XXAHWL_SP 2408 //iDS-81xxAHWL-SP +#define IDS_9616N_H8 2409 //iDS_9616N_H8 +#define IVMS_6200_SMD 2500 //IVMS_6200_SMD +//HISI3531ƽ̨ATM DVR LʾҺPʾpoe +#define DS_81XXAHW_ST 2501 +#define DS_81XXAHW_SP 2502 +#define DS_81XXAHWL_ST 2503 +#define DS_81XXAHWL_SP 2504 + +//TVI ATM +#define DS_81XXAHGH_E4 2601 //DS_81XXAHGH_E4 + +/************************************************************************/ +/* ʾƷ豸startϵ豸ͣ */ +/************************************************************************/ + +/** B20ϵУ4001-4100 */ + +#define DS_6904UD_AIOE_H_CLASS 4002 //B20һ +#define DS_6402HFH_B21B_CLASS 4005 //B21 +#define DS_6902UD_B21H_CLASS 4006 //B21 HDMI +#define DS_6902UD_B21D_CLASS 4007 //B21 DVI +#define DS_6902UD_B21V_CLASS 4008 //B21 VGA +#define DS_6904UD_B20D_CLASS 4010 //B20 DVI +#define DS_6904UD_B20V_CLASS 4011 //B20 VGA +#define DS_B30_MCU 4012 //B30ذ +#define DS_B30_SW 4013 //B30 +#define DS_B30_04XI 4014 //B30 +#define DS_B30_04XO 4015 //B30 +#define DS_B31 4016 //B31һ + +//B21һ豸ͺ +#define DS_AIOH_MCU_NP 4042 //ذ +#define DS_6404HFH_AIOH_D 4043 //4·DVI +#define DS_6908UD_AIOH_D 4044 //4·DVI +#define DS_6908UD_AIOH_H 4045 //4·HDMI + +//һ豸ͺ +#define DS_69XXUD_B 4046 //һ +#define DS_6404HFH_I 4047 //4·DVI +#define DS_6904UD_O 4048 //8·HDMI + + +//ʽƴ +#define DS_C12L_0204H 4060 //Сƴ + +//ARһ 4101 - 4120 20 +#define DS_D1A24FDI 4101 //ARһ + +//5001-5050 +#define DS_69XXHD 5001 //69XXHD +#define DS_69UD_V2 5002 //69UDV2 +#define DS_69UD_T 5003 //6볬 +#define DS_6AUD 5004 // + +//ת 5401 - 5450 50 +#define DS_68VTG 5401 //ۺת + +//Ƶ豸 5571 - 5590 20 +#define DS_65VT0010 5571 //һʽն +#define DS_65VM_MCU 5572 //ܶMCUذ +#define DS_65VM_MPC 5573 //ܶMCUýԴ +#define DS_65VT2XXYR_SF 5574 //˾Ѷն +#define DS_65VT0XXY 5575 //Ƶն +#define DS_65VT0010Z 5576 //һʽն +#define DS_65VT0050Z 5577 //ܷʽն +#define DS_65VS0XXXS 5878 //opensips豸 +#define DS_65VS0XXXM 5579 //Ƶƽ̨豸 +#define DS_65VM00XX_X 5580 //ƵX86ϵͳMCU +#define DS_65VA800_BOX 5581 //Ƶ˷ +#define DS_65VT0020S 5582 //һʽĿܻն +#define DS_65VT0020D 5583 //һʽ˫Ŀܻն +#define DS_65VM00XX_G 5584 //ƵMCU +#define DS_65VM0000_GPU 5585 //Ƶý崦 +#define DS_65VTA011 5586 //Ŀ߼ն +#define DS_65VCP1100M_S 5587 //4KĿ(ܻն) +#define Z_MINISMC_01 5588 //4K USB + +#define DS_65VCAXX 5590 //߼ + +#define DS_65VTR00X0 5791 //ʽŴն +#define DS_65VA800AM_S 5792 //Ƶ˷ +#define DS_65VAM0100UB 5793 //Ƶ˷ +#define DS_65VA800SW 5794 //Ƶת +#define DS_65VTA22XX_X 5795 //SmartEye A2200 +#define DS_65VCAXXXX 5796 //Smart Meeting Bar + +//ƵģY10ϵУ +#define DS_Y10_MCU 5771 //ذ +#define DS_Y10_SW1 5772 // +#define DS_6516UD_Y10D 5773 //8·DVIʾӿڽ +#define DS_6532UD_Y10D 5774 //16·DVIʾӿڽ +#define DS_6E2724_Y10 5775 //24׽ӿڱ +#define DS_68SAA_AA_Y10 5776 //˫·2620ڴ32Gҵ +#define DS_68SBA_AA_Y10 5777 //˫·2630ڴ32Gҵ +#define DS_68SCA_AA_Y10 5778 //˫·2650ڴ32Gҵ +#define DS_68GPU_A1_Y10 5779 //P4Կ +#define DS_CPU_SERVER 5780 //CPU +#define DS_GPU_SERVER 5781 //GPU +#define DS_BIGDATA_SERVER 5782 //ݷ + + +//һϵ +#define DS_B80_MCU 5821//ذ +#define DS_B80_SW 5822// +#define DS_B80_SR_01 5823// +#define DS_B80_AI04 5824//ܷ壬֧4· +#define DS_B80_ST 5825//洢壬֧42.52TӲ +#define DS_B80_D04 5826//ݲɼҵ +#define DS_B80_BNC08 5827// +#define DS_B80_SDI08 5828// +#define DS_B80_VP 5829//ת/ +#define DS_B80_VO02 5830//Ƶ +#define DS_B81_MCU 5831//B81ģ +#define DS_B81_AI 5832//B81ܷģ +#define DS_B81_TVI 5833//B81 ģƵģ飨TVI/BNC +#define DS_B81_APL 5834//B81ģ X86ƽ̨ +#define DS_B81_D08T 5835//B81 ݲɼģ +#define DS_B85 5836//B85С +#define DS_B86 5837//B86п +#define AX_GW100_V16A00M 5838//B81Ǹ룩OEM豸 +#define DS_B81_AT_M 5839//B81Ǹ룩 + +// +#define DS_3LGCX 5841//ͨ +#define DS_3LGRX 5842//LoRa +#define DS_3LGT4 5843 //豸 +#define DS_3LGT40_N 5844 //NB-IoT +#define DS_3LGS_I 5845 // + + +// +#define DS_3E11XX 5681 //׽ +#define DS_3E13XX 5682 //ǧн +#define DS_3E15XX 5683 //ǧ׽ +#define DS_3E11XXP 5684 //POE +#define DS_3E13XXP 5685 //ǧPOE +#define DS_3E15XXP 5686 //ǧPOE +#define DS_3E1520U 5687 //USB +#define DS_3EODM_H 5688 // +#define DS_3EODM_W 5689 //ï +#define DS_3T1XXX 5690 //DS-3T1XXXϵн +#define DS_3E2XXX 5861 //ȫܽ +#define DS_3E2XXXP 5862 //ȫܽ-POE +#define DS_3E3XXX 5863 //ȫܽ +#define DS_3E3XXXP 5864 //ȫܽ-POE + +//շ +#define DS_3D01R_NM 5691 //շտ +#define DS_3D01T_NM 5692 //շͻ +#define DS_3K02_RNM 5693 //շܿ + + +/************************************************************************/ +/* ʾƷ豸endϵ豸ͣ */ +/************************************************************************/ + +#define IDS_90XX_HXH_XX_S 6001 //DVRƷ +#define IDS_90XX_HXH_XX_FA 6002 //DVRƷ + +#define DS_81XX_SHXL_K4 6101 //KY2017ƽ̨ѶDS-8104SHFHL-K4/4P + +#define DS_8116THFHL_F4 6201 //׼ͥDS-8116THFHL-F4 + +#define DS_81XXAHQ_E4 6301 //DS_81XXAHQ_E4(TVI ATM) +#define IDS_81XXAHQ_E4 6302 //IDS_81XXAHQ_E4(TVI ATM) + +#define IDS_86XX_NX_A 7501 //ATM NVR(iDS-8632NX-I8/A) +#define IDS_96XX_NX_S 7502 //峬NVR +#define IDS_96XX_NX_V 7503 //ԼվNVR +#define IDS_96XX_NX_FA 7504 //NVR iDS-9632NX-I8/FA +#define IDS_86XX_NX_IX_B 7505 //86ϵаȫñNVRƷ +#define IDS_67XX_NX_S_X 7506 //ܰƷNVR(IDS_67XX_NX/S_X) +#define NP_ST204_X_ 7507 //ڶܰǣNP_ST204_S:NP_ST204_D:NP_ST204_D_4G +#define NP_ST_ANJIAN 7508 // + +#define IDS_ECDXX_HE 8001//ѧĿ +#define IDS_ECDXX_HT 8002//ʦĿ + +#define IDS_ECDXX_E 8101//4K + +#define IDS_EPTXX_HF 8201//ץĻ + + +#define DS_2CD69XXX_I 8351 //3200WȫƴIPCͺ +#define DS_TRIXX 8471 //Ƶ̶ʽDS_TRI900 + +#define DS_K1F600_D6EXX 10501 //๦ܲɼ +#define DS_K1T341 10502 //Ž +#define DS_K1T641XXX 10503 //жͨŽ +#define DS_K1T642XXX 10504 //жͨŽ +#define DS_K1T601 10505 //ƵƷ +#define DS_K1T672XXX 10506 //7糬ŽƷ +#define DS_K56A0X 10507 //׿ж֤ +#define DS_K56Q_F70 10508 //Ͷ) +#define DS_K1T6Q_F70M 10509 //F70ϵʶһ) +#define DS_K1T6Q_F40X 10510 //F40ϵʶһ) +#define DS_K5604A_XXX 10511 //еͶ +#define DS_K1A330X 10512 //Ͷڻ) +#define DS_K1T804A 10513 //ָŽһ +#define DS_K1T202 10514 //ָŽһ +#define DS_K1T343MX 10515 //Žһ) +#define DS_K1T331W_D 10516 //ͶŽһDS-K1T331W(D) +#define DS_K1T671WX_D 10517 //ŽһDS-K1T671M(D) DS-K1T671MW(D) DS-K1T671MG(D) +#define DS_K1T680X 10518 //8.0ŽDS-K1T680M DS-K1T680D +#define DS_K1T640A 10519 //ŽһDS-K1T640AM DS-K1T640AMW +#define DS_K1F600U_D6E_X 10520 //๦ܲɼ(DS-K1F600U-D6E DS-K1F600U-D6E-F DS-K1F600U-D6E-IF) +#define DS_K1T671AMX 10521 //Žһ(DS-K1T671AM DS-K1T671AMW DS-K1T671AM-5G) +#define DS_VISITORXX 10530 //ÿͻ +#define DS_FACE_PAYMENT_TERMINALXX 10531 //ѻ +#define DS_K1T341B_T 10532 //Žһ,ֲ֧£DS-K1T341BMWI-T DS-K1T341BMI-T +#define DS_K1T343 10533 //F1Proƽ̨4.3ŽһDS-K1T343M/MX/MW/MWX/MF/MFX/MFW/MFWX/EX/EWX/EFX/EFWX,D10,D10W/F/FW +#define DS_K1T673 10534 //F1Plusƽ̨7Žһҵ(DS_K1T673M/MG/MW/TMW/TMG/DX/DWX/TDX/TDWX/TDGX) +#define DS_K1T981 10535 //Ĥʶһ +#define DS_K5680X 10536 //K5680ϵ8֤豸 +#define DS_K5022A_X 10537 //5022Aϵа׿ÿͻ +#define DS_K1T342 10538 //F1Proƽ̨4.3ŽһDS-K1T342M/MX/MW/MWX/MF/MFX/MFW/MFWX/EX/EWX/EFWX/DX/DWX,D11,D11S/Pro/Plus +#define DS_K1T690 10539 //DS_K1T690 +#define DS_K1T340 10540 //DS_K1T340 +#define DS_K1T6QT_F72 10541 //F72ϵʶһ) +#define DS_K1T641A 10542 //F1Plusƽ̨4.3Žһl641ϵ +#define DS_K1TACS 10543 //ŽƷֵISAPI¼豸ϢṹwDevTypeֶη +#define DS_K1T6_GS3 10544 //ҵʶһDS-K1T6-GS3ϵ +#define DS_K1T6Q_F41_3XF 10545 //ʶһDS_K1T6Q_F41_3XFϵ +#define DS_K56A1X 10546 //K56A1ϵ֤豸 +#define DS_K1T320MFW 10547 //F2 Proƽ̨2.4糬Ͷ˾Žһ +#define DS_K5033X 10548 //5033ϵа׿ʽÿͻ + +#define DS_K1T681X 10550 //A2Sƽ̨8ŽһDS-K1T681M DS-K1T681MW DS-K1T681MG DS-K1T681M-3Dȣ +#define DS_K5670X 10551 //F2proͶ7繤K5670ϵ + +//ÿͻ1053010601-10650 +#define DS_K3501 10601 //ÿͻK3501ϵ +//ѻ1053110651-10700 + +//ܹ10701-10750 +#define DS_KL_CABINET 10701 //ܹƷֵISAPI¼豸ϢṹwDevTypeֶη + +//ݿ10751-10800 + +//Աͨ10801-10850 +#define DS_K3B961 10801 //ԱͨƷֵISAPI¼豸ϢṹwDevTypeֶη + +#define DS_KBS6XXX_WX 11001 //DS-KBS6100-WV/DS-KBS6101-W/DS-KBS6100-W/DS-KBS6101-W/DS-KBS6200-W/DS-KBS6201-W +#define DS_KBC6XXX_X 11002 //DS-KBC6300/DS-KBC6600 +#define DS_KBI6000_P 11003 //ѰͲDS-KBI6000-P +#define DS_KBA6XXX 11004 //豸()DS-KBA6120/DS-KBA6240/DS-KBA6360/DS-KBA6650/DS-KBA6400-2/DS-KBA6800-2 + +#define DS_IEXX_E_J 11501 //ܷ + +#define IDS_67XX_NX_A 12501 //67ϵNVSƷ(iDS-6704NX/A) +#define IDS_67XX_NX_L 12502 //67ϵ¼NVSƷ +#define IDS_ENIXX_XHE 12503 //¼NVSҵרҵƷ +#define IDS_67XX_NX_V 12504 //ԼվNVS +#define IDS_67XX_NX_B 12505 //67ϵаȫñNVSƷ + +//豸 +#define DS_IE63XX_E_FA 13001 //׵ +#define DS_DS_GPKIA 13002 //ӥ +#define DS_DS_PURE 13003 //״ +#define DS_DS_FS 13004 //̬ݷ +#define DS_DS_FD 13005 //ץļ +#define DS_DS_BLADE 13006 // +#define DS_DS_HMCP 13007 //ģͶԱȷ + +//豸 +#define DS_LNX_RF 13501 // + +//״豸 13551-14000500 +#define DS_PA_RADAR 13551 //PA״ +#define DS_PERIMETER_RADAR 13552 //ܽ״ +#define DS_SECURITY_RADAR 13553 //120װ״ +#define DS_IMAGING_RADAR_PANEL 13554 //״ + +//豸 14001-14500500 +#define DS_N1104X 14001 // +#define DS_N1103X 14002 //ûϢ豸 +#define NP_FSC201 14003 //ˮ豸 +#define NP_FDC240 14004 //ʽ̽ +#define DS_N1107 14005 // +#define NP_FAXXX 14006 // +#define NP_FVY100 14007 //Ƶ̸ +#define NP_FVW100 14008 // +#define NP_FVG100 14009 // +#define NP_FVY300 14010 //Ƶ̸ +#define NP_FVR212_P 14011 //һ̽ +#define NP_FVR213_P 14012 //һ̽() + +//豸 14501-15000500 +#define NP_ST204_X 14501 //ڶܰ +#define ISD_SG2XXL_X 14502 //(ISD-SG206L ISD-SG218L ISD-SG218L-F) +#define ISD_SL300T 14503 //Һ + +//ģƵ豸 15001-15500500 +#define IPA 15001 +/**********************豸 end***********************/ +/**********************豸 begin**********************/ + +/* dvr 1-50 */ +#define DEV_CLASS_DVR 1 //ͨdvr +#define DEV_CLASS_INTERROGATION 2 //Ѷ +#define DEV_CLASS_SIMPLE_TRAIL 3 //ͥ +#define DEV_CLASS_TRAIL 4 //׼ͥ +#define DEV_CLASS_RECORD_PLAY 5 //¼ +#define DEV_CLASS_ATM 6 //ATM + +/* dvs 51-100 */ +#define DEV_CLASS_DVS 51 //ͨdvs + +/* nvr 101-150 */ +#define DEV_CLASS_NVR 101 //ͨnvr + +/* ipc 151-200 */ +#define DEV_CLASS_GUN 151 //ipcǹ +#define DEV_CLASS_BALL 152 //ipc +#define DEV_CLASS_SNAP 153 //ץĻ +#define DEV_CLASS_INTELLI_TILT 154 //̨ +#define DEV_CLASS_FISH_EYE 155 // +#define DEV_CLASS_2DP_Z 156 //ӥ +#define DEV_CLASS_2DP 157 //Сӥ +#define DEV_CLASS_PT 158 //ȫϸ +#define DEV_CLASS_TRI 159 //Ƶ̶ʽ + +/* CVR 201 - 250*/ +#define DEV_CLASS_CVR 201 //CVR + +/* 251 - 300*/ +#define DEV_CLASS_B20 251 //B20ϵ +#define DEV_CLASS_B10 252 //B10ϵ +#define DEV_CLASS_DECODER 253 // +#define DEV_CLASS_MATRIXMANAGEDEVICE 254 // +#define DEV_CLASS_OTICAL 255 //˻ +#define DEV_CLASS_CODESPITTER 256 // +#define DEV_CLASS_ALARMHOST 257 //ҵ +#define DEV_CLASS_MOVING_RING 258 //豸 +#define DEV_CLASS_CVCS 259 //ʽ +#define DEV_CLASS_DVCS 260 //ֲʽ +#define DEV_CLASS_TRANSCODER 261 //ת +#define DEV_CLASS_LCD_SCREEN 262 //LCDĻ +#define DEV_CLASS_LED_SCREEN 263 //LEDĻ +#define DEV_CLASS_MATRIX 264 // +#define DEV_CLASS_CONFERENCE_SYSTEM 265 //Ƶ豸 +#define DEV_CLASS_INFORMATION_RELEASE_EQUIPMENT 266 //Ϣ豸 +#define DEV_CLASS_NET_GAP 267 //բ +#define DEV_CLASS_MERGE 268 // +#define DEV_CLASS_REAR_PROJECTION 269 //Ͷʾ豸 +#define DEV_CLASS_SWITCH 270 // +#define DEV_CLASS_FIBER_CONVERTER 271 //շ +#define DEV_CLASS_SCREEN_SERVER 272 //Ļ +#define DEV_CLASS_SCE_SERVER 273 //ץ +#define DEV_CLASS_WIRELESS_TRANS 274 //ߴ豸 +#define DEV_CLASS_Y10_SERIES 275 //Y10ϵ +#define DEV_CLASS_SAFETY_MAVHINE 276 //һ +#define DEV_CLASS_IOTGATEWAY 277 // +#define DEV_CLASS_NET_MANAGEMENT_EQUIPMENT 278 //豸 +#define DEV_CLASS_PUBLISH_SIGNAGE 279 //Ӱ +#define DEV_CLASS_AR_MACHINE 280 //ARһ +/* 301 - 350*/ +#define DEV_CLASS_VIDEO_ALARM_HOST 301 //Ƶ +#define DEV_CLASS_NET_ALARM_HOST 302 //籨 +#define DEV_CLASS_ONE_KEY_ALARM 303 //һʽƷ +#define DEV_CLASS_WIRELESS_ALARM_HOST 304 //߱ +#define DEV_CLASS_ALARM_MODULE 305 //ģ +#define DEV_CLASS_HOME_ALARM_HOST 306 //ñ +#define DEV_CLASS_HYBRID_ALARM_HOST 307 //ϱ +#define DEV_CLASS_NETWORK_RECEIVER 308 //ӾƷ + +/* Ž 351 - 400*/ +#define DEV_CLASS_ACCESS_CONTROL 351 //ŽƷ +#define DEV_CLASS_VISITOR 352 //ÿͻƷ +#define DEV_CLASS_FACE_PAYMENT_TERMINALXX 353 //ѻƷ +#define DEV_CLASS_CABINET 354 //ܹ +#define DEV_CLASS_LADDER_CONTROL 355 //ݿ +#define DEV_CLASS_PERSONNEL_CHANNEL 356 //Աͨ + +/* ӶԽ 401 - 450*/ +#define DEV_CLASS_VIDEO_INTERCOM 401 //ӶԽ + +/* ˻ 451 - 500*/ +#define DEV_CLASS_UMMANNED_AERIAL_VEHICLE 451 //˻Ʒ + +/* ƶƷ: 501-550*/ +#define DEV_CLASS_MOBILE 501 //ƶƷ + +/* ƶ豸: 551-600*/ +#define DEV_CLASS_MOBILE_VEHICLE 551 //ƶ豸 + +//ܷǣ601-650 +#define DEV_CLASS_INTELLIGENT_ANALYZER 601 //ܷ + +//ܽͨ651-700 +#define DEV_CLASS_INTELLIGENT_TRAFFIC_SERVER 651 //ܽͨ +#define DS_TP2200_EC 652 //ͻ + +/* nvs 701-750 */ +#define DEV_CLASS_NVS 701 //ͨnvs + +/*ԴRFIDϵ 751-800*/ +#define DS_TRI21A_1_P 751 //ԴRFIDȡ + +/* 豸801-850 */ +#define DS_CLASS_FA 801 //׵ +#define DS_CLASS_PURE 802 //״ +#define DS_CLASS_FS 803 //̬ݷ +#define DS_CLASS_FD 804 //ץļ +#define DS_CLASS_HAWK 805 //ӥ +#define DS_CLASS_BLADE 806 // +#define DS_CLASS_HMCP 807 //ģͶԱȷ + +/* 851 - 900*/ +#define DEV_CLASS_SMART_LOCK 851 // + +/* ״ 901 - 950*/ +#define DEV_CLASS_RADAR 901 //״Ʒ + +/* ǻ 951 - 1000*/ +#define DEV_CLASS_FIRE_CONTROL 951 //Ʒ + +/* 1001 - 1050*/ +#define DEV_CLASS_SECURITY_CHECK 1001 //Ʒ + +#define DEV_CLASS_CONFERENCE_TABLET 1051 //ƽ + +#define DEV_CLASS_JUDICIAL_TABLET 1101 //˾ƽ + +/*ȫϸ 8451-8470*/ +#define iDS_PT 8451 //ȫϸ + +/*ӾƷ 9851 - 9900*/ +#define DS_XCM1_IP 9851 //Ӿ + +/* 豸 65534 */ +#define DEV_CLASS_DEFAULT 65534 //Ĭ豸 +/**********************豸 end**********************/ + +/******************************ȡ*********************************/ +//ȡ +#define DEVICE_SOFTHARDWARE_ABILITY 0x001 //豸Ӳ +#define DEVICE_NETWORK_ABILITY 0x002 //豸 +#define DEVICE_ENCODE_ALL_ABILITY 0x003 //豸б +#define DEVICE_ENCODE_CURRENT 0x004 //豸ǰ +#define IPC_FRONT_PARAMETER 0x005 //ipcǰ˲1.0 +#define IPC_UPGRADE_DESCRIPTION 0x006 //ipcϢ +#define DEVICE_RAID_ABILITY 0x007 //RAID +#define DEVICE_ENCODE_ALL_ABILITY_V20 0x008 //豸б2.0 +#define IPC_FRONT_PARAMETER_V20 0x009 //ipcǰ˲2.0 +#define DEVICE_ALARM_ABILITY 0x00a // +#define DEVICE_DYNCHAN_ABILITY 0x00b //豸ͨ +#define DEVICE_USER_ABILITY 0x00c //豸û +#define DEVICE_NETAPP_ABILITY 0x00d //豸Ӧò +#define DEVICE_VIDEOPIC_ABILITY 0x00e //豸ͼ +#define DEVICE_JPEG_CAP_ABILITY 0x00f //豸JPEGץͼ +#define DEVICE_SERIAL_ABILITY 0x010 //RS232RS485 +#define DEVICE_ABILITY_INFO 0x011 //豸ͨͣݷ͵ڵ +#define STREAM_ABILITY 0x012 // +#define SYSTEM_MANAGEMENT_ABILITY 0x013 //豸ϵͳ +#define IP_VIEW_DEV_ABILITY 0x014 //IPӶԽֻ +#define VCA_DEV_ABILITY 0x100 //豸ܷ +#define VCA_CHAN_ABILITY 0x110 //Ϊ +#define TRANSFER_ABILITY 0x120 +#define MATRIXDECODER_ABILITY 0x200 //·ʾ +#define VIDEOPLATFORM_ABILITY 0x210 //Ƶۺƽ̨ +#define VIDEOPLATFORM_SBUCODESYSTEM_ABILITY 0x211 //Ƶۺƽ̨ϵͳ +#define WALL_ABILITY 0x212 //ǽ +#define MATRIX_ABILITY 0x213 //SDI +#define DECODECARD_ABILITY 0x220 //뿨 +#define VIDEOPLATFORM_ABILITY_V40 0x230 //Ƶۺƽ̨ +#define MATRIXMANAGEDEVICE_ABILITY 0x240 // +#define MATRIXDECODER_ABILITY_V41 0x260 // +#define DECODER_ABILITY 0x261 //xml +#define DECODECARD_ABILITY_V41 0x270 //뿨V41 +#define CODECARD_ABILITY 0x271 //뿨 +#define SNAPCAMERA_ABILITY 0x300 //ץĻ +#define ITC_TRIGGER_MODE_ABILITY 0x301 //IPC豸Ĵģʽ +#define COMPRESSIONCFG_ABILITY 0x400 //ȡѹ +#define COMPRESSION_LIMIT 0x401 //ȡѹ +#define PIC_CAPTURE_ABILITY 0x402 //ͼƬֱ +#define ALARMHOST_ABILITY 0x500 //籨 +#define IT_DEVICE_ABILITY 0x501 //ܽͨ +#define SCREENCONTROL_ABILITY 0x600 // +#define SCREENSERVER_ABILITY 0x610 // +#define FISHEYE_ABILITY 0x700 // +#define LCD_SCREEN_ABILITY 0x800 //LCDĻ 2013-10-12 +#define ACS_ABILITY 0x801 //Ž +#define MERGEDEV_ABILITY 0x802 // +#define CAM_FUSION_ABILITY 0x803 //ƴ +#define OPTICAL_DEV_ACCESS_ABILITY 0x805 //˻ +#define NET_RING_ABILITY 0x806 // +#define LED_ABILITY 0x807 //LED +#define PUBLISHDEV_ABILITY 0x80a //Ϣ +#define SCREEN_EXCHANGE_ABILITY 0x80b //Ļ +#define REMOTE_NETMGR_FOT_ABILITY 0x80e //Զշ +/************************************************* +ýṹ(_V30Ϊ9000) +**************************************************/ + +//Ӱ쳣Ϣ +// +#define EXCEPTION_MAJOR_MAINBOARD_BOOT 0x1 // +// +#define EXCEPTION_MINOR_PCIE_SCAN 0x1 // pcie·ɨ쳣 +#define EXCEPTION_MINOR_DOWNLOAD_SUBBOARD 0xa //Ӱ쳣 + +// +#define EXCEPTION_MAJOR_SUBBOARD_BOOT 0x2 //Ӱ +// +#define EXCEPTION_MINOR_INEXISTENCE 0x1 //PCI-EɨǰӰ岻 +#define EXCEPTION_MINOR_UBOOT_DOWNLOAD 0xa // uboot쳣 +#define EXCEPTION_MINOR_UBOOT_INIT 0xe //ubootʼ쳣 +#define EXCEPTION_MINOR_ROOTFS_DOWNLOAD 0x14 //rootfs.img쳣 +#define EXCEPTION_MINOR_UIMAGE_DOWNLOAD 0x19 //uImage쳣 +#define EXCEPTION_MINOR_UBOOT_SETBOOTFLAG 0x1e // uboot־λλ쳣 +#define EXCEPTION_MINOR_ROOTFS_BOOT_SUBBOARD 0x23 // rootfs쳣 +#define EXCEPTION_MINOR_NEED_FILE_FINISH 0x28 //Ӱļ쳣 + +// +#define EXCEPTION_MAJOR_SUBBOARD_HARDWARE 0x3 //ӰӲ +// +#define EXCEPTION_MINOR_AD 0x1 //AD쳣 +#define EXCEPTION_MINOR_DA 0xa // DA쳣 +#define EXCEPTION_MINOR_TIMER 0xb //ʱ쳣 + +// +#define EXCEPTION_MAJOR_FPGA 0x4 //FPGA +// +#define EXCEPTION_MINOR_IDLE 0x1 //޷IDLE +#define EXCEPTION_MINOR_LANE 0xa // LANE OKʧ +#define EXCEPTION_MINOR_REGISTER_ALL_F 0xe //FPGAĴȫF +#define EXCEPTION_MINOR_MEMORY_INIT_FAIL 0x14 //FPGAڴʼʧ +// +#define EXCEPTION_MAJOR_DSP 0x5 //DSP + +// +#define EXCEPTION_MAJOR_ARM 0x6 //ARM + +// +#define EXCEPTION_MAJOR_BACKBOARD 0x7 // +// +#define EXCEPTION_MINOR_BACKBOARD_TYPE 0x1 //ȡ쳣 +#define EXCEPTION_MINOR_SERDES 0xa //ƵоƬ +#define EXCEPTION_MINOR_CLOCK 0xe //ʱӹ +#define EXCEPTION_MINOR_SYNCH 0x14 //ͬźŹ + +// +#define EXCEPTION_MAJOR_SUBBOARD_NET 0x8 //Ӱ +// +#define EXCEPTION_MINOR_IP_CONFLICT 0x1 //IPͻ +#define EXCEPTION_MINOR_DISCONNECT 0x14 // + +//[add]by zengxiaole 2017-09-27 DS-19D2000-S v2.0 +#define MAX_FIRE_ALARM_ZONE 12 // +#define MAX_FIRE_ALARM_POINT_ZONE 32 // + + +typedef enum tagCharEncodeType +{ + ENUM_MEM_CHAR_ENCODE_ERR = -1, //Error + ENUM_MEM_CHAR_ENCODE_NO = 0, //Don't know. + ENUM_MEM_CHAR_ENCODE_CN = 1, //EUC-CN, GB2312 + ENUM_MEM_CHAR_ENCODE_GBK = 2, //GBK + ENUM_MEM_CHAR_ENCODE_BIG5 = 3, //BIG5 + ENUM_MEM_CHAR_ENCODE_JP = 4, //JISX0208-1, EUC-JP + ENUM_MEM_CHAR_ENCODE_KR = 5, //EUC-KR + ENUM_MEM_CHAR_ENCODE_UTF8 = 6, //UTF-8 + ENUM_MEM_CHAR_ENCODE_ISO8859_1 = 7, //ISO-8859-n: ENUM_MEM_CHAR_ENCODE_ISO8859_1 + n -1 + ENUM_MEM_CHAR_ENCODE_UNICODE = 8, //Unicode +}CHAR_ENCODE_TYPE; + + +///////////////////////////////////////////////////////////////////////// +//Уʱṹ +typedef struct +{ + DWORD dwYear; // + DWORD dwMonth; // + DWORD dwDay; // + DWORD dwHour; //ʱ + DWORD dwMinute; // + DWORD dwSecond; // +}NET_DVR_TIME, *LPNET_DVR_TIME; + +typedef struct tagNET_DVR_TIME_V30 +{ + WORD wYear; + BYTE byMonth; + BYTE byDay; + BYTE byHour; + BYTE byMinute; + BYTE bySecond; + BYTE byISO8601; /*Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ */ + WORD wMilliSec; //룬ȲĬΪ0 + char cTimeDifferenceH; //UTCʱСʱ-12 ... +14+ʾ, byISO8601Ϊ1ʱЧ + char cTimeDifferenceM; //UTCʱӣ-30, 30, 45+ʾbyISO8601Ϊ1ʱЧ +}NET_DVR_TIME_V30, *LPNET_DVR_TIME_V30; + +typedef struct tagNET_DVR_TIME_SEARCH +{ + WORD wYear; //꣬豸OSDʱ + BYTE byMonth; //£豸OSDʱ + BYTE byDay; //գ豸OSDʱ + BYTE byHour; //ʱ豸OSDʱ + BYTE byMinute; //֣豸OSDʱ + BYTE bySecond; //룬豸OSDʱ + char cTimeDifferenceH; //ʱ׼ʱʱСʱ-12 ... +14 + char cTimeDifferenceM; //ʱ׼ʱʱӣ-30, 0, 30, 45 + BYTE byLocalOrUTC; //0-ʱЧ豸ʱ䣬豸OSDʱ 1-ʱЧ + WORD wMillisecond; //룬ȲĬΪ0 +}NET_DVR_TIME_SEARCH, *LPNET_DVR_TIME_SEARCH; + +typedef struct tagNET_DVR_TIME_SEARCH_COND +{ + WORD wYear; // + BYTE byMonth; // + BYTE byDay; // + BYTE byHour; //ʱ + BYTE byMinute; // + BYTE bySecond; // + BYTE byLocalOrUTC; //0-ʱЧ豸ʱ䣬豸OSDʱ 1-ʱЧ + WORD wMillisecond; //룬ȲĬΪ0 + char cTimeDifferenceH; //UTCʱСʱ-12 ... +14+ʾbyLocalOrUTCΪ1ʱЧ + char cTimeDifferenceM; //UTCʱӣ-30, 0, 30, 45+ʾbyLocalOrUTCΪ1ʱЧ +}NET_DVR_TIME_SEARCH_COND, *LPNET_DVR_TIME_SEARCH_COND; + + +typedef struct tagNET_DVR_TIME_V50 +{ + WORD wYear; // + BYTE byMonth; // + BYTE byDay; // + BYTE byHour; //ʱ + BYTE byMinute; // + BYTE bySecond; // + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + WORD wMillisecond; //룬ȲĬΪ0 + char cTimeDifferenceH; //UTCʱСʱ-12 ... +14+ʾbyISO8601Ϊ1ʱЧ + char cTimeDifferenceM; //UTCʱӣ-30, 0, 30, 45+ʾbyISO8601Ϊ1ʱЧ +}NET_DVR_TIME_V50, *LPNET_DVR_TIME_V50; + + + +typedef struct tagNET_DVR_CALIBRATE_TIME +{ + DWORD dwSize; + NET_DVR_TIME struTime; + WORD wMilliSec; + BYTE byRes[14]; +}NET_DVR_CALIBRATE_TIME,*LPNET_DVR_CALIBRATE_TIME; + +#define MAX_TIMESIGN_LEN 32 //ԶУʱϢ +typedef struct tagNET_DVR_TIMESIGN_CFG +{ + DWORD dwSize; + BYTE byCustomSetTimeSign[MAX_TIMESIGN_LEN/*32*/];//ԶУʱ + BYTE byRes[96]; +}NET_DVR_TIMESIGN_CFG,*LPNET_DVR_TIMESIGN_CFG; + + +typedef struct tagNET_DVR_TIME_EX +{ + WORD wYear; + BYTE byMonth; + BYTE byDay; + BYTE byHour; + BYTE byMinute; + BYTE bySecond; + BYTE byRes; +}NET_DVR_TIME_EX,*LPNET_DVR_TIME_EX; + +//ʱ(ӽṹ) +typedef struct +{ + //ʼʱ + BYTE byStartHour; + BYTE byStartMin; + //ʱ + BYTE byStopHour; + BYTE byStopMin; +}NET_DVR_SCHEDTIME, *LPNET_DVR_SCHEDTIME; + +/*豸쳣ʽ*/ +/*豸쳣ʽ*/ +#define NOACTION 0x0 /*Ӧ*/ +#define WARNONMONITOR 0x1 /*Ͼ*/ +#define WARNONAUDIOOUT 0x2 /**/ +#define UPTOCENTER 0x4 /*ϴ*/ +#define TRIGGERALARMOUT 0x8 /**/ +#define TRIGGERCATPIC 0x10 /*ץͼϴE-mail*/ +#define SEND_PIC_FTP 0x200 /*ץͼϴftp*/ + +typedef struct tagNET_DVR_STRUCTHEAD +{ + WORD wLength; //ṹ + BYTE byVersion ; /*ߵ4λֱߵͰ汾ݰ汾ͳȽչͬİ汾ijȽ*/ + BYTE byRes; +}NET_DVR_STRUCTHEAD, *LPNET_DVR_STRUCTHEAD; + +typedef struct tagNET_DVR_HANDLEEXCEPTION_V41 +{ + DWORD dwHandleType; //쳣,쳣ʽ"" + /*0x00: Ӧ*/ + /*0x01: Ͼ*/ + /*0x02: */ + /*0x04: ϴ*/ + /*0x08: */ + /*0x10: JPRGץͼϴEmail*/ + /*0x20: ⱨ*/ + /*0x40: ӵͼ(ĿǰֻPCNVR֧)*/ + /*0x200: ץͼϴFTP*/ + /*0x400: 齻 ۽ģʽṩԭ豸ԶɣIPC5.1.0*/ + /*0x800: PTZ(Ŀ)*/ + /*0x4000:׹Ʊ*/ + /*0x10000:ű*/ + /*0x20000:ָʾƱ*/ + DWORD dwMaxRelAlarmOutChanNum ; //ıֻ֧ͨ + DWORD dwRelAlarmOut[MAX_ALARMOUT_V40]; //ͨ + BYTE byRes[64]; // +}NET_DVR_HANDLEEXCEPTION_V41, *LPNET_DVR_HANDLEEXCEPTION_V41; + +typedef struct tagNET_DVR_HANDLEEXCEPTION_V40 +{ + DWORD dwHandleType; //쳣,쳣ʽ"" + /*0x00: Ӧ*/ + /*0x01: Ͼ*/ + /*0x02: */ + /*0x04: ϴ*/ + /*0x08: */ + /*0x10: JPRGץͼϴEmail*/ + /*0x20: ⱨ*/ + /*0x40: ӵͼ(ĿǰֻPCNVR֧)*/ + /*0x80: ¼(ĿǰֻPCNVR֧) */ + /*0x100: ̨Ԥõ (ĿǰֻPCNVR֧)*/ + /*0x200: ץͼϴFTP*/ + /*0x400: 齻 ۽ģʽṩԭ豸ԶɣIPC5.1.0*/ + /*0x800: PTZ(Ŀ)*/ + /*0x1000:ץͼϴ*/ + /*0x2000:ű*/ + /*0x4000:׹Ʊ*/ + /*0x8000:*/ + DWORD dwMaxRelAlarmOutChanNum ; //ıֻ֧ͨ + DWORD dwRelAlarmOutChanNum; //ıͨ ʵ֧ + DWORD dwRelAlarmOut[MAX_CHANNUM_V30]; //ͨ + BYTE byWhiteLightDurationTime;//׹˸ʱ1~60s(˰׹ƱʱЧ) + BYTE byBrightness;//׹ȣΧ0-100Ĭ50 + BYTE byAudioType;// + BYTE byTimes;//Χ0-9Ĭ2, 0xff- + BYTE byRes[60]; // +}NET_DVR_HANDLEEXCEPTION_V40, *LPNET_DVR_HANDLEEXCEPTION_V40; + +//쳣ṹ(ӽṹ)(ദʹ)(9000չ) +typedef struct +{ + DWORD dwHandleType; /*ʽ,ʽ""*/ + /*0x00: Ӧ*/ + /*0x01: Ͼ*/ + /*0x02: */ + /*0x04: ϴ*/ + /*0x08: */ + /*0x10: JPRGץͼϴEmail*/ + /*0x20: ⱨ*/ + /*0x40: ӵͼ(ĿǰֻPCNVR֧)*/ + /*0x200: ץͼϴFTP*/ + /*0x2000:ű*/ + BYTE byRelAlarmOut[MAX_ALARMOUT_V30]; + //ͨ,,Ϊ1ʾ +}NET_DVR_HANDLEEXCEPTION_V30, *LPNET_DVR_HANDLEEXCEPTION_V30; + +//쳣ṹ(ӽṹ)(ദʹ) +typedef struct +{ + DWORD dwHandleType; /*ʽ,ʽ""*/ + /*0x00: Ӧ*/ + /*0x01: Ͼ*/ + /*0x02: */ + /*0x04: ϴ*/ + /*0x08: */ + /*0x10: JpegץͼϴEMail*/ + BYTE byRelAlarmOut[MAX_ALARMOUT]; //ͨ,,Ϊ1ʾ +}NET_DVR_HANDLEEXCEPTION, *LPNET_DVR_HANDLEEXCEPTION; + +//DVR豸 +typedef struct +{ + DWORD dwSize; + BYTE sDVRName[NAME_LEN]; //DVR + DWORD dwDVRID; //DVR ID,ң //V1.4(0-99), V1.5(0-255) + DWORD dwRecycleRecord; //Ƿѭ¼,0:; 1: + //²ɸ + BYTE sSerialNumber[SERIALNO_LEN]; //к + DWORD dwSoftwareVersion; //汾,16λ汾,16λǴΰ汾 + DWORD dwSoftwareBuildDate; //,0xYYYYMMDD + DWORD dwDSPSoftwareVersion; //DSP汾,16λ汾,16λǴΰ汾 + DWORD dwDSPSoftwareBuildDate; // DSP,0xYYYYMMDD + DWORD dwPanelVersion; // ǰ汾,16λ汾,16λǴΰ汾 + DWORD dwHardwareVersion; // Ӳ汾,16λ汾,16λǴΰ汾 + BYTE byAlarmInPortNum; //DVR + BYTE byAlarmOutPortNum; //DVR + BYTE byRS232Num; //DVR 232ڸ + BYTE byRS485Num; //DVR 485ڸ + BYTE byNetworkPortNum; //ڸ + BYTE byDiskCtrlNum; //DVR Ӳ̿ + BYTE byDiskNum; //DVR Ӳ̸ + BYTE byDVRType; //DVR, 1:DVR 2:ATM DVR 3:DVS ...... + BYTE byChanNum; //DVR ͨ + BYTE byStartChan; //ʼͨ,DVS-1,DVR - 1 + BYTE byDecordChans; //DVR · + BYTE byVGANum; //VGAڵĸ + BYTE byUSBNum; //USBڵĸ + BYTE byAuxoutNum; //ڵĸ + BYTE byAudioNum; //ڵĸ + BYTE byIPChanNum; //ͨ +}NET_DVR_DEVICECFG, *LPNET_DVR_DEVICECFG; + +/* +IPַ +*/ +typedef struct +{ + char sIpV4[16]; /* IPv4ַ */ + BYTE byIPv6[128]; /* */ +}NET_DVR_IPADDR, *LPNET_DVR_IPADDR; + +typedef union tagNET_DVR_IPADDR_UNION +{ + char szIPv4[16]; //IPv4ַ + char szIPv6[256]; //IPv6ַ +}NET_DVR_IPADDR_UNION, *LPNET_DVR_IPADDR_UNION; + +typedef struct tagNET_DVR_ADDRESS +{ + NET_DVR_IPADDR struIP; //IPַ + WORD wPort; //˿ں + BYTE byRes[2]; +}NET_DVR_ADDRESS, *LPNET_DVR_ADDRESS; + +/* +ݽṹ(ӽṹ)(9000չ) +*/ +typedef struct +{ + NET_DVR_IPADDR struDVRIP; //DVR IPַ + NET_DVR_IPADDR struDVRIPMask; //DVR IPַ + DWORD dwNetInterface; //ӿ1-10MBase-T 2-10MBase-Tȫ˫ 3-100MBase-TX 4-100Mȫ˫ 5-10M/100MӦ + WORD wDVRPort; //˿ں + WORD wMTU; //MTUãĬ1500 + BYTE byMACAddr[MACADDR_LEN]; // ַ + BYTE byEthernetPortNo; //ںţ0-Ч1-02-1Դƣֻ + BYTE byRes[1]; // +}NET_DVR_ETHERNET_V30, *LPNET_DVR_ETHERNET_V30; + +/* +ݽṹ(ӽṹ) +*/ +typedef struct +{ + char sDVRIP[16]; //DVR IPַ + char sDVRIPMask[16]; //DVR IPַ + DWORD dwNetInterface; //ӿ 1-10MBase-T 2-10MBase-Tȫ˫ 3-100MBase-TX 4-100Mȫ˫ 5-10M/100MӦ + WORD wDVRPort; //˿ں + BYTE byMACAddr[MACADDR_LEN]; //ַ +}NET_DVR_ETHERNET; + +//pppoeṹ +typedef struct +{ + DWORD dwPPPOE; //0-,1- + BYTE sPPPoEUser[NAME_LEN]; //PPPoEû + char sPPPoEPassword[PASSWD_LEN]; // PPPoE + NET_DVR_IPADDR struPPPoEIP; //PPPoE IPַ +}NET_DVR_PPPOECFG, *LPNET_DVR_PPPOECFG; + +//ýṹ(9000չ) +typedef struct +{ + DWORD dwSize; + NET_DVR_ETHERNET_V30 struEtherNet[MAX_ETHERNET]; //̫ + NET_DVR_IPADDR struRes1[2]; /**/ + NET_DVR_IPADDR struAlarmHostIpAddr; /* IPַ */ + BYTE byRes2[4]; /* */ + WORD wAlarmHostIpPort; /* ˿ں */ + BYTE byUseDhcp; /* ǷDHCP 0xff-Ч 0- 1-*/ + BYTE byIPv6Mode; //IPv6䷽ʽ0-·ɹ棬1-ֶã2-DHCP + NET_DVR_IPADDR struDnsServer1IpAddr; /* 1IPַ */ + NET_DVR_IPADDR struDnsServer2IpAddr; /* 2IPַ */ + BYTE byIpResolver[MAX_DOMAIN_NAME]; /* IPIPַ */ + WORD wIpResolverPort; /* IP˿ں */ + WORD wHttpPortNo; /* HTTP˿ں */ + NET_DVR_IPADDR struMulticastIpAddr; /* ಥַ */ + NET_DVR_IPADDR struGatewayIpAddr; /* صַ */ + NET_DVR_PPPOECFG struPPPoE; + BYTE byEnablePrivateMulticastDiscovery; //˽жಥ0~Ĭϣ1~ã2- + BYTE byEnableOnvifMulticastDiscovery; //Onvifಥ0~Ĭϣ1~ã2- + BYTE byEnableDNS; //DNSԶʹ, 0-1-򿪣2-ر + BYTE byRes[61]; +} NET_DVR_NETCFG_V30, *LPNET_DVR_NETCFG_V30; + +//ṹ +typedef struct +{ + NET_DVR_IPADDR struDVRIP; //DVR IPַ + NET_DVR_IPADDR struDVRIPMask; //DVR IPַ + DWORD dwNetInterface; //ӿ1-10MBase-T 2-10MBase-Tȫ˫ 3-100MBase-TX 4-100Mȫ˫ 5-10M/100M/1000MӦ + BYTE byCardType; //ͣ0-ͨ1-2- + BYTE byEnableDNS; //DNSǷԶʹܣ0-1-, 0-ر + WORD wMTU; //MTUãĬ1500 + BYTE byMACAddr[MACADDR_LEN]; //ַֻʾ + BYTE byEthernetPortNo; //ںţ0-Ч1-02-1Դƣֻ + BYTE bySilkScreen; //˿ӡϢ0-Ч1-GE12-GE23-G14-G2ֻ + BYTE byUseDhcp; /* ǷDHCP */ + BYTE byRes3[3]; + NET_DVR_IPADDR struGatewayIpAddr; /* صַ */ + NET_DVR_IPADDR struDnsServer1IpAddr; /* 1IPַ */ + NET_DVR_IPADDR struDnsServer2IpAddr; /* 2IPַ */ +}NET_DVR_ETHERNET_MULTI, *LPNET_DVR_ETHERNET_MULTI; + +//ýṹ +typedef struct +{ + DWORD dwSize; + BYTE byDefaultRoute; //Ĭ·ɣ0ʾstruEtherNet[0]1ʾstruEtherNet[1] + BYTE byNetworkCardNum; //豸ʵʿõĿ + BYTE byWorkMode; //0-ͨģʽ1-ģʽ + BYTE byRes; // + NET_DVR_ETHERNET_MULTI struEtherNet[MAX_NETWORK_CARD]; //̫ + NET_DVR_IPADDR struManageHost1IpAddr; /* IPַ */ + NET_DVR_IPADDR struManageHost2IpAddr; /* IPַ */ + NET_DVR_IPADDR struAlarmHostIpAddr; /* IPַ */ + WORD wManageHost1Port; /* ˿ں */ + WORD wManageHost2Port; /* ˿ں */ + WORD wAlarmHostIpPort; /* ˿ں */ + BYTE byIpResolver[MAX_DOMAIN_NAME]; /* IPIPַ */ + WORD wIpResolverPort; /* IP˿ں */ + WORD wDvrPort; //ͨѶ˿ Ĭ8000 + WORD wHttpPortNo; /* HTTP˿ں */ + WORD wDvrPort2; //ͨѶ˿2 + BYTE byRes2[4]; + NET_DVR_IPADDR struMulticastIpAddr; /* ಥַ */ + NET_DVR_PPPOECFG struPPPoE; + BYTE byRes3[24]; +}NET_DVR_NETCFG_MULTI, *LPNET_DVR_NETCFG_MULTI; + +//ýṹ +typedef struct +{ + DWORD dwSize; + NET_DVR_ETHERNET struEtherNet[MAX_ETHERNET]; /* ̫ */ + char sManageHostIP[16]; //Զַ̹ + WORD wManageHostPort; //Զ̹˿ں + char sIPServerIP[16]; //IPServerַ + char sMultiCastIP[16]; //ಥַ + char sGatewayIP[16]; //صַ + char sNFSIP[16]; //NFSIPַ + BYTE sNFSDirectory[PATHNAME_LEN];//NFSĿ¼ + DWORD dwPPPOE; //0-,1- + BYTE sPPPoEUser[NAME_LEN]; //PPPoEû + char sPPPoEPassword[PASSWD_LEN];// PPPoE + char sPPPoEIP[16]; //PPPoE IPַ(ֻ) + WORD wHttpPort; //HTTP˿ں +}NET_DVR_NETCFG, *LPNET_DVR_NETCFG; + +//ýṹ(V50) +typedef struct tagNET_DVR_NETCFG_V50 +{ + DWORD dwSize; + NET_DVR_ETHERNET_V30 struEtherNet[MAX_ETHERNET]; //̫ + NET_DVR_IPADDR struRes1[2]; /**/ + NET_DVR_IPADDR struAlarmHostIpAddr; /* IPַ */ + BYTE byRes2[4]; /* */ + WORD wAlarmHostIpPort; /* ˿ں */ + BYTE byUseDhcp; /* ǷDHCP 0xff-Ч 0- 1-*/ + BYTE byIPv6Mode; //IPv6䷽ʽ0-·ɹ棬1-ֶã2-DHCP + NET_DVR_IPADDR struDnsServer1IpAddr; /* 1IPַ */ + NET_DVR_IPADDR struDnsServer2IpAddr; /* 2IPַ */ + BYTE byIpResolver[MAX_DOMAIN_NAME]; /* IPIPַ */ + WORD wIpResolverPort; /* IP˿ں */ + WORD wHttpPortNo; /* HTTP˿ں */ + NET_DVR_IPADDR struMulticastIpAddr; /* ಥַ */ + NET_DVR_IPADDR struGatewayIpAddr; /* صַ */ + NET_DVR_PPPOECFG struPPPoE; + BYTE byEnablePrivateMulticastDiscovery; //˽жಥ0~Ĭϣ1~ã2- + BYTE byEnableOnvifMulticastDiscovery; //Onvifಥ0~Ĭϣ1~ã2- + WORD wAlarmHost2IpPort; /* 2˿ں */ + NET_DVR_IPADDR struAlarmHost2IpAddr; /* 2 IPַ */ + BYTE byEnableDNS; //DNSʹ, 0-رգ1- + BYTE byRes[599]; +}NET_DVR_NETCFG_V50, *LPNET_DVR_NETCFG_V50; + +//sip +typedef struct tagNET_DVR_SIP_CFG +{ + DWORD dwSize; + BYTE byEnableAutoLogin; //ʹԶעᣬ0-ʹܣ1-ʹ + BYTE byLoginStatus; //ע״̬0-δעᣬ1-עᣬ˲ֻܻȡ + BYTE byRes1[2]; + NET_DVR_IPADDR stuServerIP; //SIPIP + WORD wServerPort; //SIP˿ + BYTE byRes2[2]; + BYTE byUserName[NAME_LEN]; //עû + BYTE byPassWord[PASSWD_LEN]; //ע + BYTE byLocalNo[MAX_NUMBER_LEN]; + BYTE byDispalyName[MAX_NAME_LEN]; //豸ʾ + WORD wLocalPort; //ض˿ + BYTE byLoginCycle; //עڣ1-99 + BYTE byType;//0-IP/IPV6,1- + BYTE byDomainName[MAX_DOMAIN_NAME]; // + BYTE byRes[64]; +}NET_DVR_SIP_CFG, *LPNET_DVR_SIP_CFG; + +typedef struct tagNET_DVR_SIP_CFG_V50 +{ + DWORD dwSize; + BYTE byEnableAutoLogin; //ʹԶעᣬ0-ʹܣ1-ʹ + BYTE byLoginStatus; //ע״̬0-δעᣬ1-עᣬ˲ֻܻȡ + BYTE byRes1[2]; + NET_DVR_IPADDR stuServerIP; //SIPIP + WORD wServerPort; //SIP˿ + BYTE byRes2[2]; + BYTE byUserName[NAME_LEN]; //עû + BYTE byPassWord[PASSWD_LEN]; //ע + BYTE byLocalNo[MAX_NUMBER_LEN]; + BYTE byDispalyName[MAX_NAME_LEN]; //豸ʾ + WORD wLocalPort; //ض˿ + BYTE byLoginCycle; //עڣ1-99 + BYTE byRes3; + BYTE bySIPServerDomain[MAX_DOMAIN_NAME]; //sipIPֻҪһֵʱIPȣ + NET_DVR_IPADDR stuSTUNServerIP; // STUNIP + BYTE bySTUNServerDomain[MAX_DOMAIN_NAME]; //STUN IPֻҪһֵʱIPȣ + WORD wSTUNServerPort; // STUN˿ + BYTE byRes4[2]; + NET_DVR_IPADDR stuProxyServerIP; //IP + BYTE byProxyServerDomain[MAX_DOMAIN_NAME]; // IPֻҪһֵʱIPȣ + WORD wProxyServerPort; // ˿ + BYTE byNetWork; //ʾͣ0-Ч1-1 2-23- + BYTE byRes5; + BYTE byCalledTargetName[NET_SDK_MAX_CALLEDTARGET_NAME]; + BYTE byRes[224]; +}NET_DVR_SIP_CFG_V50, *LPNET_DVR_SIP_CFG_V50; + +//IPӶԽֻ +typedef struct tagNET_DVR_IP_VIEW_DEVCFG +{ + DWORD dwSize; + BYTE byDefaultRing; //ĬΧ1-6 + BYTE byRingVolume; //Χ0-9 + BYTE byInputVolume; //ֵΧ0-6 + BYTE byOutputVolume; //ֵΧ0-9 + WORD wRtpPort; //Rtp˿ + BYTE byRes1[2]; + DWORD dwPreviewDelayTime; //Ԥʱã0-30 + BYTE byRes2[64]; +}NET_DVR_IP_VIEW_DEVCFG,*LPNET_DVR_IP_VIEW_DEVCFG; + +//IpӶԽƵز +typedef struct tagNET_DVR_IP_VIEW_AUDIO_CFG +{ + DWORD dwSize; + BYTE byAudioEncPri1; //Ƶȼ10-G7221-G711_U2-G711_A 5-MPEG2,6-G7267-AAC + BYTE byAudioEncPri2; //Ƶȼ2sip֧Ƶ1ʱʹƵ20-G7221-G711_U2-G711_A 5-MPEG2,6-G7267-AAC + WORD wAudioPacketLen1; //Ƶ1ݰ + WORD wAudioPacketLen2; //Ƶ2ݰ + BYTE byRes[30]; +}NET_DVR_IP_VIEW_AUDIO_CFG,*LPNET_DVR_IP_VIEW_AUDIO_CFG; + +//IPֻжԽýṹ +typedef struct tagNET_DVR_IP_VIEW_CALL_CFG +{ + DWORD dwSize ; + BYTE byEnableAutoResponse; //ʹԶӦ,0-ʹܣ1-ʹ + BYTE byAudoResponseTime; //ԶӦʱ䣬0-30 + BYTE byRes1[2]; + BYTE byEnableAlarmNumber1; //10-1- + BYTE byRes2[3]; + BYTE byAlarmNumber1[MAX_NUMBER_LEN]; //к1 + BYTE byEnableAlarmNumber2; //20-1- + BYTE byRes3[3]; + BYTE byAlarmNumber2[MAX_NUMBER_LEN]; //к2к1ʧ᳢ܻԺк2 + BYTE byRes4[72]; +}NET_DVR_IP_VIEW_CALL_CFG,*LPNET_DVR_IP_VIEW_CALL_CFG; + +//ͨͼṹ +//ƶ(ӽṹ)(鷽ʽչ) +typedef struct +{ + DWORD dwMaxRecordChanNum; //豸ֵ֧¼ͨ-ֻ + DWORD dwCurRecordChanNum; //ǰʵõĹ¼ͨ + DWORD dwRelRecordChan[MAX_CHANNUM_V30]; /* ʵʴ¼ֵͨʾ,ýУ±0 - MAX_CHANNUM_V30-1Чм0xffffffff,Ч*/ + BYTE byRes[64]; // +}NET_DVR_RECORDCHAN, *LPNET_DVR_RECORDCHAN; + +//ƶ(ӽṹ)(9000չ) +typedef struct +{ + BYTE byMotionScope[64][96]; /*,0-96λ,ʾ64,96*64С,Ϊ1ʾƶ,0-ʾ*/ + BYTE byMotionSensitive; /*ƶ, 0 - 5,ԽԽ,oxffر*/ + BYTE byEnableHandleMotion; /* Ƿƶ 0 1*/ + BYTE byEnableDisplay; /*ƶʾ0-1-*/ + char reservedData; + NET_DVR_HANDLEEXCEPTION_V30 struMotionHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*ʱ*/ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; /* ¼ͨ*/ +}NET_DVR_MOTION_V30, *LPNET_DVR_MOTION_V30; + +//ƶ(ӽṹ) +typedef struct +{ + BYTE byMotionScope[18][22]; /*,22*18С,Ϊ1ʾĺƶ,0-ʾ*/ + BYTE byMotionSensitive; /*ƶ, 0 - 5,ԽԽ,0xffر*/ + BYTE byEnableHandleMotion; /* Ƿƶ */ + BYTE byEnableDisplay; /*ƶʾ0-1-*/ + char reservedData; + NET_DVR_HANDLEEXCEPTION strMotionHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];//ʱ + BYTE byRelRecordChan[MAX_CHANNUM]; //¼ͨ,Ϊ1ʾͨ +}NET_DVR_MOTION, *LPNET_DVR_MOTION; + +//ڵ(ӽṹ)(9000չ) С704*576 +typedef struct +{ + DWORD dwEnableHideAlarm; /* Ƿڵ ,0-,1- 2- 3-*/ + WORD wHideAlarmAreaTopLeftX; /* ڵx */ + WORD wHideAlarmAreaTopLeftY; /* ڵy */ + WORD wHideAlarmAreaWidth; /* ڵĿ */ + WORD wHideAlarmAreaHeight; /*ڵĸ*/ + NET_DVR_HANDLEEXCEPTION_V30 strHideAlarmHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ +}NET_DVR_HIDEALARM_V30, *LPNET_DVR_HIDEALARM_V30; +//ڵ(ӽṹ) С704*576 +typedef struct +{ + DWORD dwEnableHideAlarm; /* Ƿڵ ,0-,1- 2- 3-*/ + WORD wHideAlarmAreaTopLeftX; /* ڵx */ + WORD wHideAlarmAreaTopLeftY; /* ڵy */ + WORD wHideAlarmAreaWidth; /* ڵĿ */ + WORD wHideAlarmAreaHeight; /*ڵĸ*/ + NET_DVR_HANDLEEXCEPTION strHideAlarmHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];//ʱ +}NET_DVR_HIDEALARM, *LPNET_DVR_HIDEALARM; + +//źŶʧ(ӽṹ)(9000չ) +typedef struct +{ + BYTE byEnableHandleVILost; /* ǷźŶʧ */ + NET_DVR_HANDLEEXCEPTION_V30 strVILostHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ +}NET_DVR_VILOST_V30, *LPNET_DVR_VILOST_V30; + +//źŶʧ(ӽṹ) +typedef struct +{ + BYTE byEnableHandleVILost; /* ǷźŶʧ */ + NET_DVR_HANDLEEXCEPTION strVILostHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];//ʱ +}NET_DVR_VILOST, *LPNET_DVR_VILOST; + +//ڵ(ӽṹ) +typedef struct +{ + WORD wHideAreaTopLeftX; /* ڵx */ + WORD wHideAreaTopLeftY; /* ڵy */ + WORD wHideAreaWidth; /* ڵĿ */ + WORD wHideAreaHeight; /*ڵĸ*/ +}NET_DVR_SHELTER, *LPNET_DVR_SHELTER; + +typedef struct +{ + BYTE byBrightness; /*,0-255*/ + BYTE byContrast; /*Աȶ,0-255*/ + BYTE bySaturation; /*Ͷ,0-255*/ + BYTE byHue; /*ɫ,0-255*/ +}NET_DVR_COLOR, *LPNET_DVR_COLOR; + +typedef struct +{ + BYTE byRed; //RGBɫеĺɫ + BYTE byGreen; //RGBɫеɫ + BYTE byBlue; //RGBɫеɫ + BYTE byRes; // +}NET_DVR_RGB_COLOR, *LPNET_DVR_RGB_COLOR; + +//ֵһ,ֵΪǰİٷֱȴС, ΪСλ +//ṹ +typedef struct tagNET_VCA_POINT +{ + float fX; // X, 0.000~1 + float fY; //Y, 0.000~1 +}NET_VCA_POINT, *LPNET_VCA_POINT; + +//ͨͼṹ(9000չ) +typedef struct +{ + DWORD dwSize; + BYTE sChanName[NAME_LEN]; + DWORD dwVideoFormat; /* ֻ Ƶʽ 1-NTSC 2-PAL*/ + BYTE byReservedData[64];/**/ + DWORD dwShowChanName; // ԤͼǷʾͨ,0-ʾ,1-ʾ С704*576 + WORD wShowNameTopLeftX; /* ͨʾλõx */ + WORD wShowNameTopLeftY; /* ͨʾλõy */ + //ƵźŶʧ + NET_DVR_VILOST_V30 struVILost; + NET_DVR_VILOST_V30 struRes; /**/ + // BYTE byRes1[328]; + //ƶ + NET_DVR_MOTION_V30 struMotion; + //ڵ + NET_DVR_HIDEALARM_V30 struHideAlarm; + //ڵ С704*576 + DWORD dwEnableHide; /* Ƿڵ ,0-,1-*/ + NET_DVR_SHELTER struShelter[MAX_SHELTERNUM]; + //OSD + DWORD dwShowOsd;// ԤͼǷʾOSD,0-ʾ,1-ʾ С704*576 + WORD wOSDTopLeftX; /* OSDx */ + WORD wOSDTopLeftY; /* OSDy */ + BYTE byOSDType; /* OSD(Ҫոʽ) */ + /* 0: XXXX-XX-XX */ + /* 1: XX-XX-XXXX */ + /* 2: XXXXXXXX */ + /* 3: XXXXXXXX */ + /* 4: XX-XX-XXXX */ + /* 5: XXXXXXXX */ + /*6: xx/xx/xxxx(//) */ + /*7: xxxx/xx/xx(//) */ + /*8: xx/xx/xxxx(//)*/ + BYTE byDispWeek; /* Ƿʾ */ + BYTE byOSDAttrib; /* OSD:͸˸ */ + /* 1: ͸,˸ */ + /* 2: ͸,˸ */ + /* 3: ˸,͸ */ + /* 4: ͸,˸ */ + BYTE byHourOSDType; /* OSDСʱ:0-24Сʱ,1-12Сʱ */ + BYTE byFontSize;//С16*16()/8*16(Ӣ)1-32*32()/16*32(Ӣ)2-64*64()/32*64(Ӣ) 3-48*48()/24*48(Ӣ) 4-24*24()/12*24(Ӣ) 5-96*96()/48*96(Ӣ) 6-128*128()/64*128(Ӣ) 7-80*80()/40*80(Ӣ) 8-112*112()/56*112(Ӣ) 0xff-Ӧ(adaptive) + BYTE byOSDColorType; //0-Ĭϣڰף1-Զ壻2- + /*뷽ʽѡģʽʱԷֱ½ǡ½ַӡ + ½ + ֧6ַӣͨNET_DVR_SET_SHOWSTRING_V30ַӽӿڣӦNET_DVR_SHOWSTRINGINFOṹеĵ05±ֵַķʽΪµϵķʽ + ½ + ֧2ַӣͨNET_DVR_SET_SHOWSTRING_V30ַӽӿڣӦNET_DVR_SHOWSTRINGINFOṹеĵ6͵7±ֵַķʽΪµϵķʽ + */ + BYTE byAlignment;//뷽ʽ 0-Ӧ1-Ҷ, 2-,3-ģʽ, 4-ȫҶ(ַʱԼOSDַ)5-ȫ(ַʱԼOSDַ) + BYTE byOSDMilliSecondEnable;//Ƶʱֺ֧룻0~, 1- + NET_DVR_RGB_COLOR struOsdColor;//OSDɫ + DWORD dwBoundary; //ֵ߽룬ҶԼģʽıֵ߽0-ʾĬֵλ + NET_DVR_RGB_COLOR struOsdBkColor; //ԶOSDɫ + BYTE byOSDBkColorMode; //OSDɫģʽ0-Ĭϣ1-ԶOSDɫ + BYTE byUpDownBoundary; //Сֵ߽ѡλΪַΧǣ0,1,2, ģʽЧbyAlignment=3ֶЧͨdwBoundaryб߽ã.byAlignment3£ byUpDownBoundary/byLeftRightBoundaryóɹdwBoundaryֵЧ + BYTE byLeftRightBoundary; //Сֵ߽ѡλΪַΧǣ0,1,2, ģʽЧbyAlignment=3ֶЧͨdwBoundaryб߽ã.byAlignment3£ byUpDownBoundary/byLeftRightBoundaryóɹdwBoundaryֵЧ + BYTE byAngleEnabled;//OSDǷӸϢ,0~, 1- + WORD wTiltAngleTopLeftX; /* Ϣʾλõx */ + WORD wTiltAngleTopLeftY; /* Ϣʾλõy */ + BYTE byRes[40]; +}NET_DVR_PICCFG_V30, *LPNET_DVR_PICCFG_V30; + +//ͨͼṹSDK_V14չ +typedef struct +{ + DWORD dwSize; + BYTE sChanName[NAME_LEN]; + DWORD dwVideoFormat; /* ֻ Ƶʽ 1-NTSC 2-PAL*/ + BYTE byBrightness; /*,0-255*/ + BYTE byContrast; /*Աȶ,0-255*/ + BYTE bySaturation; /*Ͷ,0-255 */ + BYTE byHue; /*ɫ,0-255*/ + //ʾͨ + DWORD dwShowChanName; // ԤͼǷʾͨ,0-ʾ,1-ʾ С704*576 + WORD wShowNameTopLeftX; /* ͨʾλõx */ + WORD wShowNameTopLeftY; /* ͨʾλõy */ + //źŶʧ + NET_DVR_VILOST struVILost; + //ƶ + NET_DVR_MOTION struMotion; + //ڵ + NET_DVR_HIDEALARM struHideAlarm; + //ڵ С704*576 + DWORD dwEnableHide; /* Ƿڵ ,0-,1-*/ + NET_DVR_SHELTER struShelter[MAX_SHELTERNUM]; + //OSD + DWORD dwShowOsd;// ԤͼǷʾOSD,0-ʾ,1-ʾ С704*576 + WORD wOSDTopLeftX; /* OSDx */ + WORD wOSDTopLeftY; /* OSDy */ + BYTE byOSDType; /* OSD(Ҫոʽ) */ + /* 0: XXXX-XX-XX */ + /* 1: XX-XX-XXXX */ + /* 2: XXXXXXXX */ + /* 3: XXXXXXXX */ + /* 4: XX-XX-XXXX */ + /* 5: XXXXXXXX */ + /*6: xx/xx/xxxx(//) */ + /*7: xxxx/xx/xx(//) */ + /*8: xx/xx/xxxx(//)*/ + BYTE byDispWeek; /* Ƿʾ */ + BYTE byOSDAttrib; /* OSD:͸˸ */ + /* 1: ͸,˸ */ + /* 2: ͸,˸ */ + /* 3: ˸,͸ */ + /* 4: ͸,˸ */ + BYTE byHourOsdType; /* OSDСʱ:0-24Сʱ,1-12Сʱ */ +}NET_DVR_PICCFG_EX, *LPNET_DVR_PICCFG_EX; + +//ͨͼṹ(SDK_V13֮ǰ汾) +typedef struct +{ + DWORD dwSize; + BYTE sChanName[NAME_LEN]; + DWORD dwVideoFormat; /* ֻ Ƶʽ 1-NTSC 2-PAL*/ + BYTE byBrightness; /*,0-255*/ + BYTE byContrast; /*Աȶ,0-255*/ + BYTE bySaturation; /*Ͷ,0-255 */ + BYTE byHue; /*ɫ,0-255*/ + //ʾͨ + DWORD dwShowChanName; // ԤͼǷʾͨ,0-ʾ,1-ʾ С704*576 + WORD wShowNameTopLeftX; /* ͨʾλõx */ + WORD wShowNameTopLeftY; /* ͨʾλõy */ + //źŶʧ + NET_DVR_VILOST struVILost; + //ƶ + NET_DVR_MOTION struMotion; + //ڵ + NET_DVR_HIDEALARM struHideAlarm; + //ڵ С704*576 + DWORD dwEnableHide; /* Ƿڵ ,0-,1-*/ + WORD wHideAreaTopLeftX; /* ڵx */ + WORD wHideAreaTopLeftY; /* ڵy */ + WORD wHideAreaWidth; /* ڵĿ */ + WORD wHideAreaHeight; /*ڵĸ*/ + //OSD + DWORD dwShowOsd;// ԤͼǷʾOSD,0-ʾ,1-ʾ С704*576 + WORD wOSDTopLeftX; /* OSDx */ + WORD wOSDTopLeftY; /* OSDy */ + BYTE byOSDType; /* OSD(Ҫոʽ) */ + /* 0: XXXX-XX-XX */ + /* 1: XX-XX-XXXX */ + /* 2: XXXXXXXX */ + /* 3: XXXXXXXX */ + /* 4: XX-XX-XXXX */ + /* 5: XXXXXXXX */ + /*6: xx/xx/xxxx(//) */ + /*7: xxxx/xx/xx(//) */ + /*8: xx/xx/xxxx(//)*/ + BYTE byDispWeek; /* Ƿʾ */ + BYTE byOSDAttrib; /* OSD:͸˸ */ + /* 1: ͸,˸ */ + /* 2: ͸,˸ */ + /* 3: ˸,͸ */ + /* 4: ͸,˸ */ + char reservedData2; +}NET_DVR_PICCFG, *LPNET_DVR_PICCFG; + +typedef enum _BITRATE_ENCODE_INDEX_ +{ + BITRATE_ENCODE_def = 0, + BITRATE_ENCODE_8kps = 1, + BITRATE_ENCODE_16kps = 2, + BITRATE_ENCODE_32kps = 3, + BITRATE_ENCODE_64kps = 4, + BITRATE_ENCODE_128kps = 5, + BITRATE_ENCODE_192kps = 6, + BITRATE_ENCODE_40kps = 7, + BITRATE_ENCODE_48kps = 8, + BITRATE_ENCODE_56kps = 9, + BITRATE_ENCODE_80kps = 10, + BITRATE_ENCODE_96kps = 11, + BITRATE_ENCODE_112kps = 12, + BITRATE_ENCODE_144kps = 13, + BITRATE_ENCODE_160kps = 14, + BITRATE_ENCODE_224kps = 15, + BITRATE_ENCODE_256kps = 16, + BITRATE_ENCODE_320kps = 17 +}BITRATE_ENCODE_INDEX; + +//ѹ(ӽṹ)(9000չ) +typedef struct +{ + BYTE byStreamType; // 0-Ƶ, 1-, ʾ¼ѹʱλʾǷѹ + /*ֱ0-DCIF 1-CIF, 2-QCIF, 3-4CIF, + 4-2CIF 5, 6-QVGA(320*240), 7-QQVGA(160*120), + 12-384*288 13-576*576, + 16-VGA640*480, 17-UXGA1600*1200, 18-SVGA(800*600), 19-HD720p(1280*720, + 20-XVGA, 21-HD900p, 22-1360*1024, 23-1536*1536, + 24-1920*1920, 27-HD1080i, + 28-2560*1920, 29-1600*304, 30-2048*1536, 31-2448*2048, + 32-2448*1200, 33-2448*800, 34-XGA1024*768 35-SXGA1280*1024, + 36-WD1(960*576/960*480), 37-1080i, 38-WSXGA(1440*900), 39-HD_F(1920*1080/1280*720), + 40-HD_H(1920*540/1280*360), 41-HD_Q(960*540/630*360), 42-2336*1744, 43-1920*1456, + 44-2592*2048, 45-3296*2472, 46-1376*768, 47-1366*768, + 48-1360*768, 49-WSXGA+, 50-720*720, 51-1280*1280, + 52-2048*768, 53-2048*2048, 54-2560*2048, 55-3072*2048, + 56-2304*1296 57-WXGA(1280*800), 58-1600*600, 59-1600*900, + 60-2752*2208, 61-, 62-4000*3000, 63-4096*2160, + 64-3840*2160, 65-4000*2250, 66-3072*1728, 67-2592*1944, + 68-2464*1520, 69-1280*1920, 70-2560*1440, 71-1024*1024, + 72-160*128, 73-324*240, 74-324*256, 75-336*256, + 76-640*512, 77-2720*2048, 78-384*256, 79-384*216, + 80-320*256, 81-320*180, 82-320*192, 83-512*384, + 84-325*256, 85-256*192, 86-640*360, 87-1776x1340, + 88-1936x1092, 89-2080x784, 90-2144x604, 91-1920*1200, + 92-4064*3040, 93-3040*3040, 94-3072*2304, 95-3072*1152, + 96-2560*2560, 97-2688*1536, 98-2688*1520, 99-3072*3072, + 100-3392*2008, 101-4000*3080, 102-960*720, 103-1024*1536, + 104-704*1056, 105-352*528, 106-2048*1530, 107-2560*1600, + 108-2800*2100, 109-4088*4088, 110-4000*3072, 111-960*1080(1080p Lite) + 112-640*720(half 720p), 113-640*960, 114-320*480, 115-3840*2400, + 116-3840*1680, 117-2560*1120, 118-704*320, 119-1200*1920, + 120-480*768, 121-768*480, 122-320*512, 123-512*320, + 124-4096*1800, 125-1280*560, 126-2400*3840, 127-480*272, + 128-512*272, 129-2592*2592, 130-1792*2880, 131-1600*2560, + 132-2720*1192, 133-3MP(1920*1536/2048*1536) 134-5MP(2560*1944) + 135-2560*960, 136-2064*1544 137-4096*1200, + 138-3840*1080 139-2720*800 140-512*232 141-704*200, + 142-512*152, 143-2048*896 144-2048*600 145-1280*376, + 146-2592*1520, 147-2592*1536, 148-3072*8192, 149-768*2048, + 150-8208*3072, 151-4096*1536, 152-6912*2800, 153-3456*1400 + 154-480*720, 155-800*450, 156-480*270, 157-2560*1536, + 160-3264*2448, 161-288*320, 162-144*176, 163-480*640, + 164-240*320, 165-120*160, 166-576*720, 167-720*1280, + 168-576*960, 169-2944*1656, 170-432*240, 171-2160*3840, + 172-1080*1920, 173-7008*1080, 174-3504*540, 175-1752*270, + 176-876*135, 177-4096*1440, 178-4096*1080, 179-1536*864, + 180-180*240, 181-360*480, 182-540*720, 183-720*960, + 184-960*1280, 185-1080*1440, + 186-3200*1800, 187-1752*272, 188-872*136, 189-1280*1440, + 190-3520*544, 191-1728*256, 192-864*128, 193-5470*3684, + 194-2560*750, 195-1600*480, 196-1024*300, 197-848*480, + 198-8160*3616, 199-8160*2304, 200-4064*2560, 201-1400*1050, + 202-2688*1512, 203-704*288, 204-1560*656, 205-3072*1280, + 206-4320*1808, 207-6120*2560, 208-1280*960, 209-3000*3000, + 210-2032*3616, 211-7680*4320, 212-5760*3240, 213-3264*1836, + 214-2712*1536, 215-1080*720(ռλδ), 216-360x640(ռλδ),217-1440*812, + 218-8160*2416, 219-5760*1712, 220-4080*1200, 221-6144*2560, + 222-1568*656, 223-4096*1808, 224-2720*1200, 225-2896*848 + 226-2048*608 227-3840*1120 228-2720*784 229-1920*560, + 230-1360*400 231-704*208 232-496*144 233-352*128, + 234-512*240 235-512*160 236-368*128 237-256*128 + 238-2048*592 239-1456*416 240-1024*304 241-1280*368 + 242-912*256 243-640*192 244-252*112 δʹã 245-(576*704[P]/480*704[N]) + + 254-ʾֶηΧʹNET_DVR_MULTI_STREAM_COMPRESSIONCFGеdwResolutionʾֱ + 0xff-Auto(ʹõǰֱ) + 256-3888*1696 257-2784*1200 258-496*224 259-352*160 + 260-912*400 261-640*288 262-1456*640 263-1024*448 + 264-2896*1280 265-2544*1080 266-2736*768 267-1920*544 + 268-3840*1696 269-2880*848 270-5424*2400 271-5520*1600 + 272-848*376 273-912*272 274-1360*600 275-1456*432 + 276-2736*1200 277-5760*1696 278-8160*2400 279-5520*2400 + 280-4608*2592 281-4944*3280 282-6016*4008 283-720*480 + 284-3200*2400 285-2784*800 286-1968*848 287-1392*608 + 288-2736*1184 289-1920*848 290-2560*2880 291-1944*1212 + 292-1920*2400 293-384*384 294-768*768 295-4800*2688 + 296-6480*1080 297-8640*1440 298-4800*800 299-6720*1200 + 300-3600*600 301-4800*840 302-2400*400 303-3072*540 + 304-1440*810 305-1920*320 306-2688*480 307-1440*240 + 308-4800*1792 309-3360*1264 310-2304*880 311-3840*1440 + 312-2688*1008 313-1824*704 314-1248*496 315-1920*720 + 316-1344*496 317-912*336 318-1280*480 319-864*336 + 320-576*224 321-2704*1008 322-1904*704 323-1808*672 + 324-1264*464 325-944*336 326-2400*1344 327-2032*1440 + 328-4064*1792 329-304*112 330-960*360 331-672*240 + 332-464*160 333-896*336 334-624*224 335-640*240 + 336-448*160 337-4976*1452 338-1968*560 339-2736*784 + 340-3888*1136 341-6120*1800 342-4320*1280 343-3056*896 + 344-1776*528 345-1392*400 346-7256*1520 347-512*288 + 348-1936*1210 349-640*400 350-2688*1792 351-2464*2056 + 352-2720*1600 353-4800*1600 354-3600*1200 355-δ + 356-2400*800 357-1200*400 358-4096*3008 359-7680*4096 + 360-1080*1520 361-6656*3744 362-5120*1400 363-2560*704 + 364-2688*3040 365-1280*352 366-3376*1008 367-1688*504 + 368-5120*1440 369-1920*2160 370-4080*1808 371-4080*1152 + 372-2688*3888 373-3840*2880 374-2464*3520 375-4416*1696 + 376-1408*540 377-3456*1080 378-1728*540 379-704*1152 + 380-1408*1152 381-5120*2880 382-720*576 383-3984*1168 + 384-1920*1440 385-3840*4096 386-1920*536 387-1536*432 + 388-3072*864 389-1440*1080 390-720*540 391-960*544 + 392-720*544 393-5430*3054 394-8000*6000 395-6560*3690 + 396-2688*1944 397-960*272 398-960*368 399-960*304 + 400-3632*1632 401-1200*536 402-960*432 403-1920*3264 + 404-3040*1368 405-1704*2896 406-768*216 407-360*272 + 408-960*536 409-720*536 410-848*240 411-368*272 + 412-4096*2460 413-536*240 414-2560*1168 415-1920*864 + 416-752*336 417-752*416 418-560*416 419-592*272 + 420-448*336 421-832*464 422-624*464 423-672*304 + 424-672*368 425-496*368 426-832*368 427-592*336 + 428-8032*6032 429-4096*2464 430-8128*2304 431-1480*1664 + 432-1280*1944 433-1024*600 434-1520*2736 435-5328*3040 + 436-192*256 437-8112*2304 + */ + BYTE byResolution; + BYTE byBitrateType; // 0:, 1:,0xfe:ԶԴһ + BYTE byPicQuality; //ͼ 0- 1-κ 2-Ϻ 3-һ 4-ϲ 5-,ԶԴһ + /*Ƶ 0- 1-16K() 2-32K 3-48k 4-64K 5-80K 6-96K 7-128K 8-160k 9-192K 10-224K 11-256K 12-320K + 13 - 384K 14 - 448K 15 - 512K 16 - 640K 17 - 768K 18 - 896K 19 - 1024K 20 - 1280K 21 - 1536K 22 - 1792K 23 - 2048K + 24 - 2560K 25 - 3072K 26 - 4096K 27 - 5120K 28 - 6144K 29 - 7168K 30 - 8192K*/ + DWORD dwVideoBitrate; + DWORD dwVideoFrameRate; //֡ 0-ȫ; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12; 12-16; 13-20; V2.0汾¼14-15; 15-18; 16-22; + //17-2518-3019-3520-4021-4522-5023-5524-6025-3;26-5;27-7;28-9;29-100; 30-120;31-24;32-48,33-8.3,0xfffffffe-ԶԴһ + WORD wIntervalFrameI; //I֡,0xfffe ԶԴһ + BYTE byIntervalBPFrame;//0-BBP֡; 1-BP֡; 2-P֡(2006-08-11 ӵP֡ýӿڣԸʵʱʱ)0xfe-ԶԴһ + BYTE byres1; // + BYTE byVideoEncType; //Ƶ 0-˽2641-׼h2642-׼mpeg47-M-JPEG8-MPEG29-SVAC, 10-׼h265, 0xfe-ԶԴһ£0xff-Ч + BYTE byAudioEncType; //Ƶ 0-G722;1-G711_U;2-G711_A;5-MP2L2;6-G276;7-AAC;8-PCM;12-AAC_LC;13-AAC_LD;14-Opus;15-MP3;0xff-Ч + BYTE byVideoEncComplexity; //Ƶ븴Ӷȣ0-ͣ1-У2,0xfe:ԶԴһ + BYTE byEnableSvc; //0 - SVCܣ1- SVC; 2-ԶSVC + BYTE byFormatType; //װͣ1-2-RTPװ3-PSװ4-TSװ5-˽У6-FLV7-ASF8-3GP,9-RTP+PS꣺GB281810xff-Ч + BYTE byAudioBitRate; //Ƶ ο BITRATE_ENCODE_INDEX + BYTE byStreamSmooth;//ƽ 11001ȼʾ(Clear)100ʾƽ(Smooth) + BYTE byAudioSamplingRate;//Ƶ0-Ĭ,1- 16kHZ, 2-32kHZ, 3-48kHZ, 4- 44.1kHZ,5-8kHZ + BYTE bySmartCodec;///*bit0-ܱ 0-رգ1-򿪣bit1 - ģʽ 0 - رգ1 - */ + BYTE byDepthMapEnable;// ͼʹܿأ0-رգ1-򿪣󣬵ڶͨ˫ĿƵãĬ 960*540 ͼ + //ƽʣSmartCodecʹܿЧ, 0-0K 1-16K 2-32K 3-48k 4-64K 5-80K 6-96K 7-128K 8-160k 9-192K 10-224K 11-256K 12-320K 13-384K 14-448K 15-512K 16-640K 17-768K 18-896K 19-1024K 20-1280K 21-1536K 22-1792K 23-2048K 24-2560K 25-3072K 26-4096K 27-5120K 28-6144K 29-7168K 30-8192K + //λ(15λ)ó1ʾԶ, 0-14λʾֵ(MIN- 0 K) + WORD wAverageVideoBitrate; +}NET_DVR_COMPRESSION_INFO_V30, *LPNET_DVR_COMPRESSION_INFO_V30; + +//ͨѹ(9000չ) +typedef struct +{ + DWORD dwSize; + NET_DVR_COMPRESSION_INFO_V30 struNormHighRecordPara; //¼ Ӧ8000ͨ + NET_DVR_COMPRESSION_INFO_V30 struRes;// char reserveData[28]; + NET_DVR_COMPRESSION_INFO_V30 struEventRecordPara; //¼ѹ + NET_DVR_COMPRESSION_INFO_V30 struNetPara; //() +}NET_DVR_COMPRESSIONCFG_V30, *LPNET_DVR_COMPRESSIONCFG_V30; + +//ѹ(ӽṹ) +typedef struct +{ + BYTE byStreamType; //0-Ƶ,1-,ʾѹʱλʾǷѹ + BYTE byResolution; //ֱ0-DCIF 1-CIF, 2-QCIF, 3-4CIF, 4-2CIF, 5-2QCIF(352X144)(ר) + BYTE byBitrateType; //0:ʣ1:ʣ2 + BYTE byPicQuality; //ͼ 0- 1-κ 2-Ϻ 3-һ 4-ϲ 5- + DWORD dwVideoBitrate; /*Ƶ 0- 1-16K() 2-32K 3-48k 4-64K 5-80K 6-96K 7-128K 8-160k 9-192K 10-224K 11-256K 12-320K + 13 - 384K 14 - 448K 15 - 512K 16 - 640K 17 - 768K 18 - 896K 19 - 1024K 20 - 1280K 21 - 1536K 22 - 1792K 23 - 2048K + 24 - 2560K 25 - 3072K 26 - 4096K 27 - 5120K 28 - 6144K 29 - 7168K 30 - 8192K*/ + DWORD dwVideoFrameRate; //֡ 0-ȫ; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12; 12-16; 13-20; +}NET_DVR_COMPRESSION_INFO, *LPNET_DVR_COMPRESSION_INFO; + +//ͨѹ +typedef struct +{ + DWORD dwSize; + NET_DVR_COMPRESSION_INFO struRecordPara; //¼/¼¼ + NET_DVR_COMPRESSION_INFO struNetPara; /// +}NET_DVR_COMPRESSIONCFG, *LPNET_DVR_COMPRESSIONCFG; + +//ѹ(ӽṹ)(չ) I֡ +typedef struct +{ + BYTE byStreamType; //0-Ƶ, 1- + BYTE byResolution; //ֱ0-DCIF 1-CIF, 2-QCIF, 3-4CIF, 4-2CIF, 5-2QCIF(352X144)(ר) + BYTE byBitrateType; //0:ʣ1:ʣ2 + BYTE byPicQuality; //ͼ 0- 1-κ 2-Ϻ 3-һ 4-ϲ 5- + DWORD dwVideoBitrate; /*Ƶ 0- 1-16K() 2-32K 3-48k 4-64K 5-80K 6-96K 7-128K 8-160k 9-192K 10-224K 11-256K 12-320K + 13 - 384K 14 - 448K 15 - 512K 16 - 640K 17 - 768K 18 - 896K 19 - 1024K 20 - 1280K 21 - 1536K 22 - 1792K 23 - 2048K + 24 - 2560K 25 - 3072K 26 - 4096K 27 - 5120K 28 - 6144K 29 - 7168K 30 - 8192K*/ + DWORD dwVideoFrameRate; //֡ 0-ȫ; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12; 12-16; 13-20, //V2.014-15, 15-18, 16-22; + WORD wIntervalFrameI; //I֡ + //2006-08-11 ӵP֡ýӿڣԸʵʱʱ + BYTE byIntervalBPFrame;//0-BBP֡; 1-BP֡; 2-P֡ + BYTE byRes; +}NET_DVR_COMPRESSION_INFO_EX, *LPNET_DVR_COMPRESSION_INFO_EX; + +//ͨѹ(չ) +typedef struct +{ + DWORD dwSize; + NET_DVR_COMPRESSION_INFO_EX struRecordPara; //¼ + NET_DVR_COMPRESSION_INFO_EX struNetPara; // +}NET_DVR_COMPRESSIONCFG_EX, *LPNET_DVR_COMPRESSIONCFG_EX; + + +//ʱ¼(ӽṹ) +typedef struct +{ + NET_DVR_SCHEDTIME struRecordTime; + BYTE byRecordType; //0:ʱ¼1:ƶ⣬2:¼3:|4:&, 5:, 6: ¼,10-PIR11-߱12-ȱ13-б,14-ܽͨ¼15Խ⣬16⣬17Ƶ쳣 + char reservedData[3]; +}NET_DVR_RECORDSCHED, *LPNET_DVR_RECORDSCHED; + +//ȫ¼(ӽṹ) +typedef struct +{ + WORD wAllDayRecord; /* Ƿȫ¼ 0- 1-*/ + BYTE byRecordType; /* ¼ 0:ʱ¼1:ƶ⣬2:¼3:|4:& 5:, 6: ¼, + 10-PIR11-߱12-ȱ13-ƶ||PIR|߱|ȱ,14-ܽͨ¼,15-Խ,16-,17-쳣, + 18-,19-⣨Խ|||뿪|ʶ,20, 21-POS¼*/ + char reservedData; +}NET_DVR_RECORDDAY, *LPNET_DVR_RECORDDAY; + +//ͨ¼(9000չ) +typedef struct +{ + DWORD dwSize; + DWORD dwRecord; /*Ƿ¼ 0- 1-*/ + NET_DVR_RECORDDAY struRecAllDay[MAX_DAYS]; + NET_DVR_RECORDSCHED struRecordSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; + DWORD dwRecordTime; /* ¼ʱ 0-5룬 1-10룬 2-30룬 3-1ӣ 4-2ӣ 5-5ӣ 6-10*/ + DWORD dwPreRecordTime; /* Ԥ¼ʱ 0-Ԥ¼ 1-5 2-10 3-15 4-20 5-25 6-30 7-0xffffffff(Ԥ¼) */ + DWORD dwRecorderDuration; /* ¼񱣴ʱ */ + BYTE byRedundancyRec; /*Ƿ¼,Ҫ˫ݣ0/1*/ + BYTE byAudioRec; /*¼ʱʱǷ¼Ƶݣд˷*/ + BYTE byStreamType; // 0-1-2-ͬʱ 3- + BYTE byPassbackRecord; // 0:ش¼ 1ش¼ + WORD wLockDuration; // ¼ʱλСʱ 0ʾ0xffffʾ¼εʱijʱ¼񣬽 + BYTE byRecordBackup; // 0:¼񲻴浵 1¼浵 + BYTE bySVCLevel; //SVC֡ͣ0-飬1-֮һ 2-ķ֮ + BYTE byRecordManage; //¼ȣ0-ã 1-; ʱжʱ¼񣻲ʱжʱ¼񣬵¼ƻʹãƶ⣬شڰ¼ƻ + BYTE byExtraSaveAudio; //Ƶ0-ǵ棬1- + /*¼ܺ㷨Զ¼㷨书Ϊ¼Ŀ֣ήʡ֡ʣĿʱָֻȫʼ֡ʣӶﵽԴĵĿ*/ + BYTE byIntelligentRecord;//Ƿ¼ 0- 1- + BYTE byReserve; +}NET_DVR_RECORD_V30, *LPNET_DVR_RECORD_V30; + +//ʱ¼(ӽṹ) +typedef struct +{ + NET_DVR_SCHEDTIME struRecordTime; + /*¼ͣ0:ʱ¼1:ƶ⣬2:¼3:|4:& 5:, + 6-ܱ¼10-PIR11-߱12-ȱ13-ȫ¼,14-ܽͨ¼, + 15-Խ,16-,17-쳣,18-, + 19-(Խ|||쳣|),20,21-POS¼, + 22-, 23-뿪,24-ǻ,25-Աۼ,26-˶,27-ͣ, + 28-Ʒ,29-Ʒȡ,30-⣬31-ƻ,32-ܶʼ(˾),33-¼(˾), 34-˯¼(˾) + 35-ֻ, 36-Ԥ37-±38-²39-߲±,40-41-,42-ҵѯ,43-,44-ʸ,45-޳ʱ46-ץģ47-Ƿ̯,48-Ŀץ, + 49-˶50ڼ⣬51-52仯 53-ŷż 54-Ҷȱ*/ + BYTE byRecordType; + BYTE byRes[31]; +}NET_DVR_RECORDSCHED_V40, *LPNET_DVR_RECORDSCHED_V40; + +//ȫ¼(ӽṹ) +typedef struct +{ + BYTE byAllDayRecord; /* Ƿȫ¼ 0- 1-*/ + /*¼ͣ0:ʱ¼1:ƶ⣬2:¼3:|4:& 5:, + 6-ܱ¼10-PIR11-߱12-ȱ13-ȫ¼,14-ܽͨ¼, + 15-Խ,16-,17-쳣,18-, + 19-(Խ|||쳣|),20,21-POS¼, + 22-, 23-뿪,24-ǻ,25-Աۼ,26-˶,27-ͣ, + 28-Ʒ,29-Ʒȡ,30-⣬31-ƻ,32-ܶʼ(˾),33-¼(˾), 34-˯¼(˾) + 35-ֻ, 36-Ԥ37-±38-²39-߲±,40-41-,42-ҵѯ,43-,44-ʸ,45-޳ʱ,46-ץ,47-Ƿ̯,48-Ŀץ, + 49-˶50ڼ⣬51-52仯 53-ŷż 54-Ҷȱ*/ + BYTE byRecordType; + BYTE byRes[62]; +}NET_DVR_RECORDDAY_V40, *LPNET_DVR_RECORDDAY_V40; + +typedef struct +{ + DWORD dwSize; + DWORD dwRecord; /*Ƿ¼ 0- 1-*/ + NET_DVR_RECORDDAY_V40 struRecAllDay[MAX_DAYS]; + NET_DVR_RECORDSCHED_V40 struRecordSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; + DWORD dwRecordTime; /* ¼ʱ 0-5룬 1-10룬 2-30룬 3-1ӣ 4-2ӣ 5-5ӣ 6-10*/ + DWORD dwPreRecordTime; /* Ԥ¼ʱ 0-Ԥ¼ 1-5 2-10 3-15 4-20 5-25 6-30 7-0xffffffff(Ԥ¼) */ + DWORD dwRecorderDuration; /* ¼񱣴ʱ */ + BYTE byRedundancyRec; /*Ƿ¼,Ҫ˫ݣ0/1*/ + BYTE byAudioRec; /*¼ʱʱǷ¼Ƶݣд˷*/ + BYTE byStreamType; // 0-1-2-ͬʱ 3- + BYTE byPassbackRecord; // 0:ش¼ 1ش¼ + WORD wLockDuration; // ¼ʱλСʱ 0ʾ0xffffʾ¼εʱijʱ¼񣬽 + BYTE byRecordBackup; // 0:¼񲻴浵 1¼浵 + BYTE bySVCLevel; //SVC֡ͣ0-飬1-֮һ 2-ķ֮ + BYTE byRecordManage; //¼ȣ0-ã 1-; ʱжʱ¼񣻲ʱжʱ¼񣬵¼ƻʹãƶ⣬شڰ¼ƻ + BYTE byExtraSaveAudio;//Ƶ洢 + /*¼ܺ㷨Զ¼㷨书Ϊ¼Ŀ֣ήʡ֡ʣĿʱָֻȫʼ֡ʣӶﵽԴĵĿ*/ + BYTE byIntelligentRecord;//Ƿ¼ 0- 1- + BYTE byRes[125]; +}NET_DVR_RECORD_V40, *LPNET_DVR_RECORD_V40; + +//ͨ¼ +typedef struct +{ + DWORD dwSize; + DWORD dwRecord; /*Ƿ¼ 0- 1-*/ + NET_DVR_RECORDDAY struRecAllDay[MAX_DAYS]; + NET_DVR_RECORDSCHED struRecordSched[MAX_DAYS][MAX_TIMESEGMENT]; + DWORD dwRecordTime; /* ¼ʱ䳤 */ + DWORD dwPreRecordTime; /* Ԥ¼ʱ 0-Ԥ¼ 1-5 2-10 3-15 4-20 5-25 6-30 7-0xffffffff(Ԥ¼) */ +}NET_DVR_RECORD, *LPNET_DVR_RECORD; + +//̨Эṹ +typedef struct +{ + DWORD dwType; /*ֵ*/ + BYTE byDescribe[DESC_LEN]; /*8000еһ*/ +}NET_DVR_PTZ_PROTOCOL; + +typedef struct +{ + DWORD dwSize; + NET_DVR_PTZ_PROTOCOL struPtz[PTZ_PROTOCOL_NUM];/*200PTZЭ*/ + DWORD dwPtzNum; /*ЧptzЭĿ0ʼ(ʱ1)*/ + BYTE byRes[8]; +}NET_DVR_PTZCFG, *LPNET_DVR_PTZCFG; + +/***************************̨(end)******************************/ +typedef struct tagNET_DVR_SERIALSTART_V40 //͸ͨ +{ + DWORD dwSize; //ṹС + DWORD dwSerialType; //ںţ1-232ڣ2-485ڣ + BYTE bySerialNum; //ڱ + BYTE byRes[255]; +}NET_DVR_SERIALSTART_V40,*LPNET_DVR_SERIALSTART_V40; + +//ͨ(̨) չ +typedef struct tagNET_DVR_DECODERCFG_V40 +{ + DWORD dwSize; //ṹС + DWORD dwBaudRate; // 0501752110315043005600612007240084800996001019200 11384001257600137680014115.2k; + BYTE byDataBit; //мλ 05λ16λ27λ38λ; + BYTE byStopBit; //ֹͣλ 01λ12λ + BYTE byParity; //У 0У飬1У飬2żУ + BYTE byFlowcontrol; //0ޣ1,2-Ӳ + WORD wDecoderType; //*/ + WORD wDecoderAddress; //ַ0-255 + BYTE bySetPreset [MAX_PRESET_V30]; //ԤõǷ,0-û,1- + BYTE bySetCruise[MAX_CRUISE_V30]; //ѲǷ: 0-û,1- + BYTE bySetTrack [MAX_TRACK_V30]; //켣Ƿ,0-û,1- + BYTE bySerialNO; //ڱ + BYTE byWorkMode; /*ģʽ 1-󴮿ڿƣ2-Ļƣ3-͸ͨģʽ 4-PPPģʽ 5-̨ģʽ 6-ֱ 7-̿ 8-ذ 9-̨ 12-LEDʾ13-ץݴ*/ + BYTE byRes[254]; // +}NET_DVR_DECODERCFG_V40,*LPNET_DVR_DECODERCFG_V40; + +typedef struct tagNET_DVR_THERMOMETRYRULE_TEMPERATURE_INFO +{ + float fMaxTemperature;//£ȷСһλ + float fMinTemperature;//£ȷСһλ + float fAverageTemperature;//ƽ£ȷСһλ + NET_VCA_POINT struHighestPoint; //¶λ + NET_VCA_POINT struLowestPoint; //¶λ + BYTE byIsFreezedata;//Ƿݶ 0- 1- + BYTE byRes[15]; +}NET_DVR_THERMOMETRYRULE_TEMPERATURE_INFO, *LPNET_DVR_THERMOMETRYRULE_TEMPERATURE_INFO; + +//ͨ(̨)(9000չ) +typedef struct +{ + DWORD dwSize; + DWORD dwBaudRate;//(bps)0501752110315043005600612007240084800996001019200 11384001257600137680014115.2k; + BYTE byDataBit;// мλ 05λ16λ27λ38λ; + BYTE byStopBit;// ֹͣλ 01λ12λ; + BYTE byParity;// У 0У飬1У飬2żУ; + BYTE byFlowcontrol;// 0ޣ1,2-Ӳ + WORD wDecoderType;//, 0ʼӦptzЭбNET_DVR_IPC_PROTO_LISTõ + WORD wDecoderAddress; /*ַ:0 - 255*/ + BYTE bySetPreset[MAX_PRESET_V30]; /* ԤõǷ,0-û,1-*/ + BYTE bySetCruise[MAX_CRUISE_V30]; /* ѲǷ: 0-û,1- */ + BYTE bySetTrack[MAX_TRACK_V30]; /* 켣Ƿ,0-û,1-*/ +}NET_DVR_DECODERCFG_V30, *LPNET_DVR_DECODERCFG_V30; + +//ͨ(̨) +typedef struct +{ + DWORD dwSize; + DWORD dwBaudRate; //(bps)0501752110315043005600612007240084800996001019200 11384001257600137680014115.2k; + BYTE byDataBit; // мλ 05λ16λ27λ38λ; + BYTE byStopBit; // ֹͣλ 01λ12λ; + BYTE byParity; // У 0У飬1У飬2żУ; + BYTE byFlowcontrol; // 0ޣ1,2-Ӳ + WORD wDecoderType; // NET_DVR_IPC_PROTO_LISTеõ + WORD wDecoderAddress; /*ַ:0 - 255*/ + BYTE bySetPreset[MAX_PRESET]; /* ԤõǷ,0-û,1-*/ + BYTE bySetCruise[MAX_CRUISE]; /* ѲǷ: 0-û,1- */ + BYTE bySetTrack[MAX_TRACK]; /* 켣Ƿ,0-û,1-*/ +}NET_DVR_DECODERCFG, *LPNET_DVR_DECODERCFG; + +//ppp(ӽṹ) +typedef struct +{ + NET_DVR_IPADDR struRemoteIP; //ԶIPַ + NET_DVR_IPADDR struLocalIP; //IPַ + char sLocalIPMask[16]; //IPַ + BYTE sUsername[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + BYTE byPPPMode; //PPPģʽ, 01 + BYTE byRedial; //Ƿز 0-,1- + BYTE byRedialMode; //زģʽ,0-ɲָ,1-Ԥûز + BYTE byDataEncrypt; //ݼ,0-,1- + DWORD dwMTU; //MTU + char sTelephoneNumber[PHONENUMBER_LEN]; //绰 +}NET_DVR_PPPCFG_V30, *LPNET_DVR_PPPCFG_V30; + +//ppp(ӽṹ) +typedef struct +{ + char sRemoteIP[16]; //ԶIPַ + char sLocalIP[16]; //IPַ + char sLocalIPMask[16]; //IPַ + BYTE sUsername[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + BYTE byPPPMode; //PPPģʽ, 01 + BYTE byRedial; //Ƿز 0-,1- + BYTE byRedialMode; //زģʽ,0-ɲָ,1-Ԥûز + BYTE byDataEncrypt; //ݼ,0-,1- + DWORD dwMTU; //MTU + char sTelephoneNumber[PHONENUMBER_LEN]; //绰 +}NET_DVR_PPPCFG, *LPNET_DVR_PPPCFG; + +//RS232ڲ(9000չ) +typedef struct +{ + DWORD dwBaudRate; /*(bps)0501752110315043005600612007240084800996001019200 11384001257600137680014115.2k;*/ + BYTE byDataBit; /* мλ 05λ16λ27λ38λ */ + BYTE byStopBit; /* ֹͣλ 01λ12λ */ + BYTE byParity; /* У 0У飬1У飬2żУ */ + BYTE byFlowcontrol; /* 0ޣ1,2-Ӳ */ + DWORD dwWorkMode; //ģʽ0232PPPţ1232ڲƣ2͸ͨ 3- ptzģʽ,Ѷʪȴ, 4-ģʽ 5-󴮿ڿ 6-Ļ 7-ֱ 8-̿ 9-ذ 10-̨ +}NET_DVR_SINGLE_RS232; + +typedef struct tagNET_DVR_USB_RS232 +{ + DWORD dwBaudRate; /*(bps)0501752110315043005600612007240084800996001019200 11384001257600137680014115.2k;*/ + BYTE byDataBit; /* мλ 05λ16λ27λ38λ */ + BYTE byStopBit; /* ֹͣλ 01λ12λ */ + BYTE byParity; /* У 0У飬1У飬2żУ */ + BYTE byFlowcontrol; /* 0ޣ1,2-Ӳ */ + BYTE byVirtualSerialPort; //⴮ڱ + BYTE byRes[3]; +}NET_DVR_USB_RS232,*LPNET_DVR_USB_RS232; + +//RS232ڲ(9000չ) +typedef struct +{ + DWORD dwSize; + NET_DVR_SINGLE_RS232 struRs232[MAX_SERIAL_PORT];/*ע⣺˽ṹ޸ˣԭǵṹ޸Ϊṹ*/ + NET_DVR_PPPCFG_V30 struPPPConfig; +}NET_DVR_RS232CFG_V30, *LPNET_DVR_RS232CFG_V30; + +//RS232ڲ +typedef struct +{ + DWORD dwSize; + DWORD dwBaudRate;//(bps)0501752110315043005600612007240084800996001019200 11384001257600137680014115.2k; + BYTE byDataBit;// мλ 05λ16λ27λ38λ; + BYTE byStopBit;// ֹͣλ 01λ12λ; + BYTE byParity;// У 0У飬1У飬2żУ; + BYTE byFlowcontrol;// 0ޣ1,2-Ӳ + DWORD dwWorkMode;// ģʽ0խ(232PPP)1̨(232ڲ)2͸ͨ + NET_DVR_PPPCFG struPPPConfig; +}NET_DVR_RS232CFG, *LPNET_DVR_RS232CFG; + + +typedef struct +{ + DWORD dwEnablePresetChan; /*Ԥõͨ, 0xfffffffʾԤõ*/ + DWORD dwPresetPointNo; /*ԤõͨӦԤõ, 0xfffffffʾԤõ㡣*/ +}NET_DVR_PRESETCHAN_INFO, LPNET_DVR_PRESETCHAN_INFO; + +typedef struct +{ + DWORD dwEnableCruiseChan; /*Ѳͨ*/ + DWORD dwCruiseNo; /*ѲͨӦѲ, 0xfffffffʾЧ*/ +}NET_DVR_CRUISECHAN_INFO, LPNET_DVR_CRUISECHAN_INFO; + +typedef struct +{ + DWORD dwEnablePtzTrackChan; /*̨켣ͨ*/ + DWORD dwPtzTrackNo; /*̨켣ͨӦı, 0xfffffffʾЧ*/ +}NET_DVR_PTZTRACKCHAN_INFO, LPNET_DVR_PTZTRACKCHAN_INFO; + +typedef struct tagNET_DVR_PTZ_NOTIFICATION_COND +{ + DWORD dwSize; + /* + 0-facedetection, + 1-vehicleDetection, + 2-scenechangedetection, + 3-LineDetection, + 4-regionEntrance, + 5-regionExiting, + 6-loitering, + 7-group, + 8-rapidMove, + 9-parking, + 10-unattendedBaggage, + 11-attendedBaggage, + 12-audioDetection, + 13-PIR, + 14-defocusDetection + 15-temperature, + 16-fireDetection, + 17-thermometry, + 18-shipsDetection + 19-fieldDetection + 20-blockListFaceContrast + 21-allowListFaceContrast + 22- humanRecognition + 23- faceContrast + */ + WORD byEventType; + BYTE byRes[2]; + DWORD dwChannel; + BYTE byRes1[128]; +}NET_DVR_PTZ_NOTIFICATION_COND, *LPNET_DVR_PTZ_NOTIFICATION_COND; + +typedef struct tagNET_DVR_PTZ_NOTIFICATION_CFG +{ + DWORD dwSize; + DWORD dwEnablePresetChanNum; //ǰԤõĿ + NET_DVR_PRESETCHAN_INFO struPresetChanInfo[MAX_CHANNUM_V40]; //õԤõϢ( ptz) + DWORD dwEnableCruiseChanNum; //ǰѲͨĿ + NET_DVR_CRUISECHAN_INFO struCruiseChanInfo[MAX_CHANNUM_V40]; //ѲͨϢ( ptz) + DWORD dwEnablePtzTrackChanNum; //ǰ̨켣ͨĿ + NET_DVR_PTZTRACKCHAN_INFO struPtzTrackInfo[MAX_CHANNUM_V40]; //̨켣ͨϢ( ptz) + BYTE byRes1[1024]; +}NET_DVR_PTZ_NOTIFICATION_CFG, *LPNET_DVR_PTZ_NOTIFICATION_CFG; + + +typedef struct tagNET_DVR_PTZ_NOTIFICATION +{ + DWORD dwSize; + /* + 0-facedetection, + 1-vehicleDetection, + 2-scenechangedetection, + 3-LineDetection, + 4-regionEntrance, + 5-regionExiting, + 6-loitering, + 7-group, + 8-rapidMove, + 9-parking, + 10-unattendedBaggage, + 11-attendedBaggage, + 12-audioDetection, + 13-PIR, + 14-defocusDetection + 15-temperature, + 16-fireDetection, + 17-thermometry, + 18-shipsDetection + 19-fieldDetection + 20-blockListFaceContrast + 21-allowListFaceContrast + 22- humanRecognition + */ + WORD byEventType; + BYTE byRes[62]; + DWORD dwEnablePresetChanNum; //ǰԤõĿ + NET_DVR_PRESETCHAN_INFO struPresetChanInfo[MAX_CHANNUM_V40]; //õԤõϢ( ptz) + DWORD dwEnableCruiseChanNum; //ǰѲͨĿ + NET_DVR_CRUISECHAN_INFO struCruiseChanInfo[MAX_CHANNUM_V40]; //ѲͨϢ( ptz) + DWORD dwEnablePtzTrackChanNum; //ǰ̨켣ͨĿ + NET_DVR_PTZTRACKCHAN_INFO struPtzTrackInfo[MAX_CHANNUM_V40]; //̨켣ͨϢ( ptz) + BYTE byRes1[1024]; +}NET_DVR_PTZ_NOTIFICATION, *LPNET_DVR_PTZ_NOTIFICATION; + +#define NET_SDK_MAX_EVENT_NUM 64 //¼ָ֧ + +//(256·NVRչ) +typedef struct tagNET_DVR_ALARMINCFG_V40 +{ + DWORD dwSize; + BYTE sAlarmInName[NAME_LEN]; /* */ + BYTE byAlarmType; //,0,1 + BYTE byAlarmInHandle; /* Ƿ 0- 1-*/ + BYTE byChannel; // 봥ʶͨ + BYTE byInputType; // 0-ʽ 1-źʽ + DWORD dwHandleType; //쳣,쳣ʽ"" + /*0x00: Ӧ*/ + /*0x01: Ͼ*/ + /*0x02: */ + /*0x04: ϴ*/ + /*0x08: */ + /*0x10: JPRGץͼϴEmail*/ + /*0x20: ⱨ*/ + /*0x40: ӵͼ(ĿǰֻPCNVR֧)*/ + /*0x200: ץͼϴFTP*/ + /*0x1000:ץͼϴ*/ + /*0x2000:ű*/ + DWORD dwMaxRelAlarmOutChanNum ; //ıֻ֧ͨ + DWORD dwRelAlarmOutChanNum; //ıͨ ʵ֧ + DWORD dwRelAlarmOut[MAX_ALARMOUT_V40]; //ͨ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + /*¼ͨ*/ + DWORD dwMaxRecordChanNum; //豸ֵ֧¼ͨ-ֻ + DWORD dwCurRecordChanNum; //ǰʵõĹ¼ͨ + DWORD dwRelRecordChan[MAX_CHANNUM_V40]; /* ʵʴ¼ֵͨʾ,ýУ±0 - dwCurRecordChanNum -1Чм0xffffffff,Ч*/ + DWORD dwMaxEnablePtzCtrlNun; //ǫ̃(ֻ) + DWORD dwEnablePresetChanNum; //ǰԤõĿ + NET_DVR_PRESETCHAN_INFO struPresetChanInfo[MAX_CHANNUM_V40]; //õԤõϢ + BYTE byPresetDurationTime[MAX_CHANNUM_V40];//Ԥõͣʱ Χ0-20sĬ10s + BYTE byRes2[4]; /**/ + DWORD dwEnableCruiseChanNum; //ǰѲͨĿ + NET_DVR_CRUISECHAN_INFO struCruiseChanInfo[MAX_CHANNUM_V40]; //ѲͨϢ + DWORD dwEnablePtzTrackChanNum; //ǰѲͨĿ + NET_DVR_PTZTRACKCHAN_INFO struPtzTrackInfo[MAX_CHANNUM_V40]; //̨켣ͨϢ + WORD wEventType[NET_SDK_MAX_EVENT_NUM/*64*/]; /*¼ͣÿһλӦһ¼*/ + BYTE byRes[128]; +}NET_DVR_ALARMINCFG_V40, *LPNET_DVR_ALARMINCFG_V40; + +//(9000չ) +typedef struct +{ + DWORD dwSize; + BYTE sAlarmInName[NAME_LEN]; /* */ + BYTE byAlarmType; //,0,1 + BYTE byAlarmInHandle; /* Ƿ 0- 1-*/ + BYTE byChannel; // 봥ʶͨ + BYTE byInputType; // 0-ʽ 1-źʽ + NET_DVR_HANDLEEXCEPTION_V30 struAlarmHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ,Ϊ1ʾͨ + BYTE byEnablePreset[MAX_CHANNUM_V30]; /* ǷԤõ 0-,1-*/ + BYTE byPresetNo[MAX_CHANNUM_V30]; /* ǫ̃Ԥõ,һԵǫ̈ͨԤõ, 0xffʾԤõ㡣*/ + BYTE byRes2[192]; /**/ + BYTE byEnableCruise[MAX_CHANNUM_V30]; /* ǷѲ 0-,1-*/ + BYTE byCruiseNo[MAX_CHANNUM_V30]; /* Ѳ */ + BYTE byEnablePtzTrack[MAX_CHANNUM_V30]; /* Ƿù켣 0-,1-*/ + BYTE byPTZTrack[MAX_CHANNUM_V30]; /* ǫ̃Ĺ켣 */ + BYTE byRes3[16]; +}NET_DVR_ALARMINCFG_V30, *LPNET_DVR_ALARMINCFG_V30; + + +typedef struct tagNET_DVR_ALARMINFO_FIXED_HEADER +{ + /*0-ź,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-POC쳣,28-ӽ쳣 + 30-ȱSD,32-̨ת쳣34-쳣*/ + DWORD dwAlarmType;// + NET_DVR_TIME_EX struAlarmTime; //ʱ + union + { + BYTE byUnionLen[116]; //ֳȥ8ֽչʱ + struct + { + DWORD dwAlarmInputNo; //ıͨţһֻһ + DWORD dwTrigerAlarmOutNum; /*ıں䳤ݲдıͨţֽڱʾһ*/ + DWORD dwTrigerRecordChanNum; /*¼ͨں䳤ݲд¼ͨţֽڱʾһ*/ + }struIOAlarm; // dwAlarmTypeΪ0ʱЧ + struct + { + DWORD dwAlarmChanNum; /*ͨݸں䳤ݲзıͨţֽڱʾһ*/ + DWORD dwPicLen;//JpegͼƬ + BYTE byPicURL; //ͼƬݲURLʽ 0-ͼƬݣ1-ͼƬURLʽ + BYTE byTarget; /*0-ʶĿ꣬1-ʶĿΪˣ2-ʶĿΪ*/ + BYTE byRes1[2]; // +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pDataBuff; //ͼƬͼƬURL +#else + char* pDataBuff; //ͼƬͼƬURL + BYTE byRes3[4]; +#endif + }struAlarmChannel; // dwAlarmTypeΪ2369101328ʱЧ + struct + { + DWORD dwAlarmHardDiskNum; /*Ӳݳȣں䳤ݲзӲ̺ţĽڱʾһ*/ + }struAlarmHardDisk; // dwAlarmTypeΪ1,4,5ʱЧ + struct + { + BYTE bySubAlarmType; //ͣ1-һӳ¼ + BYTE byRes1[3]; // + NET_DVR_TIME_EX struRecordEndTime; //¼ʱ + }struRecordingHost; //¼רñ + struct + { + float fVoltageValue;//Դѹֵ,λV,ȷ0.1 + BYTE byVoltageAlarmType; //Դѹͣ0-Դѹߣ1-Դѹ + BYTE byRes1[3]; //ֽ + }struVoltageInstable; //dwAlarmType=31ʱЧ + + struct + { + float fTemperature;//¶ȣȷС1λ + DWORD dwCustomInfoLength; //ԶϢ + BYTE* pCustomInfo; //ԶϢ + BYTE byType; //̨ת 1-ˮƽת 2-ֱת + BYTE byDeicingEnabled; // ̨ʹ 0-ر 1- + BYTE byRes2[2]; // + DWORD dwChannel; //ͨ + }struPTLocking; //̨ת쳣 dwAlarmType=32ʱЧ + + struct + { + BYTE byExceptionType; //쳣,0-, 1- ־洢쳣2-־ + }struLogException; //dwAlarmType=33ʱЧ,־쳣Ϣ + + struct + { + NET_DVR_TIME_EX struAlarmTime; //ʱ䣬豸ʱ + BYTE byExceptionType; // 0- 1- ߳ 2- ǰ012 Ϊ + BYTE byRes1[3]; //ֽ + }struAbnormalReboot; //쳣 dwAlarmType=34ʱЧ + + }uStruAlarm; + DWORD* pRes; //ڼ64λ½ṹֽڲ + BYTE byTimeDiffFlag; /*ʱֶǷЧ 0-ʱЧ 1-ʱЧ */ + char cTimeDifferenceH; /*UTCʱСʱ-12 ... +14 +ʾ,byTimeDiffFlagΪ1ʱЧ*/ + char cTimeDifferenceM; /*UTCʱӣ-30, 30, 45 +ʾbyTimeDiffFlagΪ1ʱЧ*/ + BYTE byRes; // + WORD wDevInfoIvmsChannel; //Ӻ͸ǰʱͨ + BYTE byRes2[2]; // +}NET_DVR_ALRAM_FIXED_HEADER, *LPNET_DVR_ALARM_FIXED_HEADER; + +//ϴϢ(256·NVRչ) +typedef struct NET_DVR_ALARMINFO_V40 +{ + NET_DVR_ALRAM_FIXED_HEADER struAlarmFixedHeader; //̶ + DWORD* pAlarmData; //ɱ䲿 +}NET_DVR_ALARMINFO_V40, *LPNET_DVR_ALARMINFO_V40; + +// +typedef struct +{ + DWORD dwSize; + BYTE sAlarmInName[NAME_LEN]; /* */ + BYTE byAlarmType; //,0,1 + BYTE byAlarmInHandle; /* Ƿ 0- 1-*/ + BYTE byChannel; // 봥ʶͨ + BYTE byRes; + NET_DVR_HANDLEEXCEPTION struAlarmHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];//ʱ + BYTE byRelRecordChan[MAX_CHANNUM]; //¼ͨ,Ϊ1ʾͨ + BYTE byEnablePreset[MAX_CHANNUM]; /* ǷԤõ 0-,1-*/ + BYTE byPresetNo[MAX_CHANNUM]; /* ǫ̃Ԥõ,һԵǫ̈ͨԤõ, 0xffʾԤõ㡣*/ + BYTE byEnableCruise[MAX_CHANNUM]; /* ǷѲ 0-,1-*/ + BYTE byCruiseNo[MAX_CHANNUM]; /* Ѳ */ + BYTE byEnablePtzTrack[MAX_CHANNUM]; /* Ƿù켣 0-,1-*/ + BYTE byPTZTrack[MAX_CHANNUM]; /* ǫ̃Ĺ켣 */ +}NET_DVR_ALARMINCFG, *LPNET_DVR_ALARMINCFG; + +//ģⱨ +typedef struct +{ + DWORD dwSize; + BYTE byEnableAlarmHandle; // + BYTE byRes1[3]; + BYTE byAlarmInName[NAME_LEN]; //ģⱨ + WORD wAlarmInUpper; //ģѹޣʵֵ10Χ0~360 + WORD wAlarmInLower; //ģѹޣʵֵ10Χ0~360 + NET_DVR_HANDLEEXCEPTION_V30 struAlarmHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ + BYTE byRes2[100]; +}NET_DVR_ANALOG_ALARMINCFG, *LPNET_DVR_ANALOG_ALARMINCFG; + +//ϴϢ(9000չ) +typedef struct +{ + DWORD dwAlarmType;/*0-ź,1-Ӳ,2-źŶʧ,3ƶ,4Ӳδʽ,5-дӲ̳,6-ڵ,7-ʽƥ, 8-Ƿ, 9-Ƶź쳣, + 10-¼쳣,11- ܳ仯,12-쳣,13-ǰ/¼ֱʲƥ,14-Դʧ,15-, 16-POE쳣,17-쳣, + 18-쳣,19-Ƶʧ20-¼21-ر¼22-㷨쳣23-屨,24-Ӳ쳣,25-,26-ͼƬ,27-POC쳣 + 28-ӽ쳣,29-ͣ30-ȱSD*/ + DWORD dwAlarmInputNumber;/*˿*/ + BYTE byAlarmOutputNumber[MAX_ALARMOUT_V30];/*˿ڣΪ1ʾӦ*/ + BYTE byAlarmRelateChannel[MAX_CHANNUM_V30];/*¼ͨΪ1ʾӦ¼, dwAlarmRelateChannel[0]Ӧ1ͨ*/ + BYTE byChannel[MAX_CHANNUM_V30];/*dwAlarmTypeΪ23,6,9,10,14,19,28ʱʾĸͨdwChannel[0]Ӧ1ͨ*/ + BYTE byDiskNumber[MAX_DISKNUM_V30];/*dwAlarmTypeΪ1,4,5ʱ,ʾĸӲ, dwDiskNumber[0]Ӧ1Ӳ*/ + #ifdef SDK_CHEZAI + NET_DVR_ADDIT_POSITION GPS_pos; /* GPSλϢ */ + #endif +}NET_DVR_ALARMINFO_V30, *LPNET_DVR_ALARMINFO_V30; + +typedef struct tagNET_DVR_ALARM_HOT_SPARE +{ + DWORD dwSize; //ṹ + DWORD dwExceptionCase; //ԭ 0-쳣 + NET_DVR_IPADDR struDeviceIP; //쳣豸IPַ + BYTE byRes[256]; // +}NET_DVR_ALARM_HOT_SPARE, *LPNET_DVR_ALARM_HOT_SPARE; + +typedef struct +{ + DWORD dwAlarmType;/*0-ź,1-Ӳ,2-źŶʧ,3ƶ,4Ӳδʽ,5-дӲ̳,6-ڵ,7-ʽƥ, 8-Ƿ, 9-Ƶź쳣10-¼쳣 11- ܳ仯*/ + DWORD dwAlarmInputNumber;/*˿*/ + DWORD dwAlarmOutputNumber[MAX_ALARMOUT];/*˿ڣһλΪ1ʾӦһ*/ + DWORD dwAlarmRelateChannel[MAX_CHANNUM];/*¼ͨһλΪ1ʾӦһ·¼, dwAlarmRelateChannel[0]Ӧ1ͨ*/ + DWORD dwChannel[MAX_CHANNUM];/*dwAlarmTypeΪ23,6,9,10ʱʾĸͨdwChannel[0]λӦ1ͨ*/ + DWORD dwDiskNumber[MAX_DISKNUM];/*dwAlarmTypeΪ1,4,5ʱ,ʾĸӲ, dwDiskNumber[0]λӦ1Ӳ*/ +}NET_DVR_ALARMINFO, *LPNET_DVR_ALARMINFO; + +////////////////////////////////////////////////////////////////////////////////////// +//IPC +/* IP豸ṹ */ +typedef struct +{ + DWORD dwEnable; /* IP豸Ƿ */ + BYTE sUserName[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + NET_DVR_IPADDR struIP; /* IPַ */ + WORD wDVRPort; /* ˿ں */ + BYTE byRes[34]; /* */ +}NET_DVR_IPDEVINFO, *LPNET_DVR_IPDEVINFO; + +#define DEV_ID_LEN 32 //豸ID + +//ipc豸Ϣչ֧ip豸 +typedef struct tagNET_DVR_IPDEVINFO_V31 +{ + BYTE byEnable; //IP豸ǷЧ + BYTE byProType; //Эͣ0-˽Э飬1-Э飬2- + BYTE byEnableQuickAdd; // 0 ֿ֧ 1 ʹÿ + // Ҫ豸IPЭͣϢ豸Ĭָ + BYTE byCameraType; //ֵͨͣΪ 0-壬1-ʦ٣2-ѧ٣3-ʦȫ4-ѧȫ5-ý壬6Cʦλ,7-ѧλ,8-鶨λ,9- + BYTE sUserName[NAME_LEN]; //û + BYTE sPassword[PASSWD_LEN]; // + BYTE byDomain[MAX_DOMAIN_NAME]; //豸 + NET_DVR_IPADDR struIP; //IPַ + WORD wDVRPort; // ˿ں + BYTE szDeviceID[DEV_ID_LEN]; //豸ID + BYTE byEnableTiming; //0-1-NVRIPCԶУʱ2-NVRIPCԶУʱ + BYTE byCertificateValidation;//֤֤ + // byCertificateValidation:bit0: 0-֤֤ 1-֤֤ + // byCertificateValidation:bit1: 0-ĬͨŶ˿ 1-ĬͨŶ˿ +}NET_DVR_IPDEVINFO_V31, *LPNET_DVR_IPDEVINFO_V31; + +/* IPͨƥ */ +typedef struct +{ + BYTE byEnable; /* ͨǷ */ + BYTE byIPID; //IP豸ID8λ豸IDΪ0ʱʾͨ + BYTE byChannel; /* ͨ */ + BYTE byIPIDHigh; // IP豸IDĸ8λ + BYTE byTransProtocol; //Э0-TCP/auto(豸)1-UDP 2-ಥ 3-TCP 4-auto + BYTE byGetStream; /* ǷԸͨȡ0-ǣ1-*/ + BYTE byres[30]; /* */ +} NET_DVR_IPCHANINFO, *LPNET_DVR_IPCHANINFO; + +/* IPýṹ */ +typedef struct +{ + DWORD dwSize; /* ṹС */ + NET_DVR_IPDEVINFO struIPDevInfo[MAX_IP_DEVICE]; /* IP豸 */ + BYTE byAnalogChanEnable[MAX_ANALOG_CHANNUM]; /* ģͨǷãӵ͵߱ʾ1-32ͨ0ʾЧ 1Ч */ + NET_DVR_IPCHANINFO struIPChanInfo[MAX_IP_CHANNEL]; /* IPͨ */ +}NET_DVR_IPPARACFG, *LPNET_DVR_IPPARACFG; +/* չIPýṹ */ +typedef struct tagNET_DVR_IPPARACFG_V31 +{ + DWORD dwSize; /* ṹС */ + NET_DVR_IPDEVINFO_V31 struIPDevInfo[MAX_IP_DEVICE]; /* IP豸 */ + BYTE byAnalogChanEnable[MAX_ANALOG_CHANNUM]; /* ģͨǷãӵ͵߱ʾ1-32ͨ0ʾЧ 1Ч */ + NET_DVR_IPCHANINFO struIPChanInfo[MAX_IP_CHANNEL]; /* IPͨ */ +}NET_DVR_IPPARACFG_V31, *LPNET_DVR_IPPARACFG_V31; + +typedef struct tagNET_DVR_IPSERVER_STREAM +{ + BYTE byEnable; // Ƿ + BYTE byRes[3]; // ֽ + NET_DVR_IPADDR struIPServer; //IPServer ַ + WORD wPort; //IPServer ˿ + WORD wDvrNameLen; // DVR Ƴ + BYTE byDVRName[NAME_LEN]; // DVR + WORD wDVRSerialLen; // кų + WORD byRes1[2]; // ֽ + BYTE byDVRSerialNumber[SERIALNO_LEN]; // DVRкų + BYTE byUserName[NAME_LEN]; // DVR ½û + BYTE byPassWord[PASSWD_LEN]; // DVR½ + BYTE byChannel; // DVR ͨ + BYTE byRes2[11]; // ֽ +}NET_DVR_IPSERVER_STREAM, *LPNET_DVR_IPSERVER_STREAM; + +//ý +typedef struct tagNET_DVR_STREAM_MEDIA_SERVER_CFG +{ + BYTE byValid; /*Ƿ*/ + BYTE byRes1[3]; + NET_DVR_IPADDR struDevIP; + WORD wDevPort; /*ý˿*/ + BYTE byTransmitType; /*Э 0-TCP1-UDP*/ + BYTE byRes2[69]; +}NET_DVR_STREAM_MEDIA_SERVER_CFG,*LPNET_DVR_STREAM_MEDIA_SERVER_CFG; + +//豸ͨϢ +typedef struct tagNET_DVR_DEV_CHAN_INFO +{ + NET_DVR_IPADDR struIP; //DVR IPַ + WORD wDVRPort; //˿ں + BYTE byChannel; //ͨ + BYTE byTransProtocol; //Э0-TCP1-UDP + BYTE byTransMode; //ģʽ 0 1 + BYTE byFactoryType; /*ǰ豸,ͨӿڻȡ*/ + BYTE byDeviceType; //豸(Ƶۺƽ̨ܰʹ)1-ʱƵۺƽ̨byVcaSupportChanModeֶʹýͨʾͨ2- + BYTE byDispChan;//ʾͨ,ʹ + BYTE bySubDispChan;//ʾͨͨţʱʹ + BYTE byResolution; //; 1-CIF 2-4CIF 3-720P 4-1080P 5-500wʹãݸòԴ + BYTE byRes[2]; + BYTE byDomain[MAX_DOMAIN_NAME]; //豸 + BYTE sUserName[NAME_LEN]; //½ʺ + BYTE sPassword[PASSWD_LEN]; // +}NET_DVR_DEV_CHAN_INFO,*LPNET_DVR_DEV_CHAN_INFO; + +//ֱͨýȡ +typedef struct tagNET_DVR_PU_STREAM_CFG +{ + DWORD dwSize; + NET_DVR_STREAM_MEDIA_SERVER_CFG struStreamMediaSvrCfg; + NET_DVR_DEV_CHAN_INFO struDevChanInfo; +}NET_DVR_PU_STREAM_CFG,*LPNET_DVR_PU_STREAM_CFG; + +typedef struct tagNET_DVR_DDNS_STREAM_CFG +{ + BYTE byEnable; // Ƿ + BYTE byRes1[3]; + NET_DVR_IPADDR struStreamServer; //ýַ + WORD wStreamServerPort; //ý˿ + BYTE byStreamServerTransmitType; //ý崫Э 0-TCP1-UDP + BYTE byRes2; + NET_DVR_IPADDR struIPServer; //IPSERVERַ + WORD wIPServerPort; //IPserver˿ں + BYTE byRes3[2]; + BYTE sDVRName[NAME_LEN]; //DVR + WORD wDVRNameLen; // DVRƳ + WORD wDVRSerialLen; // кų + BYTE sDVRSerialNumber[SERIALNO_LEN]; // DVRк + BYTE sUserName[NAME_LEN]; // DVR ½û + BYTE sPassWord[PASSWD_LEN]; // DVR½ + WORD wDVRPort; //DVR˿ں + BYTE byRes4[2]; + BYTE byChannel; // DVR ͨ + BYTE byTransProtocol; //Э0-TCP1-UDP + BYTE byTransMode; //ģʽ 0 1 + BYTE byFactoryType; //ǰ豸,ͨӿڻȡ +}NET_DVR_DDNS_STREAM_CFG, *LPNET_DVR_DDNS_STREAM_CFG; + +#define URL_LEN 240 //URL +typedef struct tagNET_DVR_PU_STREAM_URL +{ + BYTE byEnable; + BYTE strURL[URL_LEN]; + BYTE byTransPortocol ; // Э 0-tcp 1-UDP + WORD wIPID; //豸IDţwIPID = iDevInfoIndex + iGroupNO*64 +1 + BYTE byChannel; //ͨ + BYTE byRes[7]; +}NET_DVR_PU_STREAM_URL, *LPNET_DVR_PU_STREAM_URL; + +typedef struct tagNET_DVR_HKDDNS_STREAM +{ + BYTE byEnable; // Ƿ + BYTE byRes[3]; // ֽ + BYTE byDDNSDomain[64]; // hiDDNS + WORD wPort; // hiDDNS ˿ + WORD wAliasLen; // + BYTE byAlias[NAME_LEN]; // + WORD wDVRSerialLen; // кų + BYTE byRes1[2]; // ֽ + BYTE byDVRSerialNumber[SERIALNO_LEN]; // DVRк + BYTE byUserName[NAME_LEN]; // DVR ½û + BYTE byPassWord[PASSWD_LEN]; // DVR½ + BYTE byChannel; // DVRͨ + BYTE byRes2[11]; // +}NET_DVR_HKDDNS_STREAM, *LPNET_DVR_HKDDNS_STREAM; + +typedef struct tagNET_DVR_IPCHANINFO_V40 +{ + BYTE byEnable; /* ͨǷ */ + BYTE byRes1; + WORD wIPID; //IP豸ID + DWORD dwChannel; //ͨ + BYTE byTransProtocol; //Э0-TCP1-UDP2- ಥ3-RTSP0xff- auto(Զ) + BYTE byTransMode; //ģʽ 0 1 + BYTE byFactoryType; /*ǰ豸,ͨӿڻȡ*/ + BYTE byRes; + BYTE strURL[URL_LEN/*240*/]; /*RTSPЭȡURL RTSPЭʱЧ*/ +}NET_DVR_IPCHANINFO_V40,*LPNET_DVR_IPCHANINFO_V40; + +// ŵCVR +#define MAX_ID_COUNT 256 +#define MAX_STREAM_ID_COUNT 1024 +#define STREAM_ID_LEN 32 +#define PLAN_ID_LEN 32 +#define DEVICE_NO_LEN 24 +#define MAX_VOLUMENAME_LEN 32 //¼ +#define MAX_VAG_CHANNO_LEN 32 //VAGЭȡʱͨű볤 + +#define MAX_STREAM_ID_NUM 30 //IDĿ + +// Ϣ - 72ֽڳ +typedef struct tagNET_DVR_STREAM_INFO +{ + DWORD dwSize; + BYTE byID[STREAM_ID_LEN]; //ID + DWORD dwChannel; //豸ͨ0xffffffffʱʾ + BYTE byRes[32]; // +}NET_DVR_STREAM_INFO, *LPNET_DVR_STREAM_INFO; + +typedef struct tagNET_DVR_RTSP_PROTOCAL_CFG +{ + BYTE byEnable; + BYTE byLocalBackUp; //Ƿ񱾵ر + BYTE byRes[2]; + BYTE strURL[URL_LEN_V40]; + DWORD dwProtocalType; //Э + BYTE sUserName[NAME_LEN]; //豸½û + BYTE sPassWord[PASSWD_LEN]; // 豸½ + BYTE byAddress[MAX_DOMAIN_NAME]; //ǰIP,Ҫ豸 + //ʽΪĸ'.'Ϊ,ΪIPַ + WORD wPort; + BYTE byRes1[122]; // +}NET_DVR_RTSP_PROTOCAL_CFG, *LPNET_DVR_RTSP_PROTOCAL_CFG; + +typedef union tagNET_DVR_GET_STREAM_UNION +{ + NET_DVR_IPCHANINFO struChanInfo; /*IPͨϢ*/ + NET_DVR_IPSERVER_STREAM struIPServerStream; // IPServerȥ + NET_DVR_PU_STREAM_CFG struPUStream; // ͨǰ豸ȡýȥ + NET_DVR_DDNS_STREAM_CFG struDDNSStream; //ͨIPServerýȡ + NET_DVR_PU_STREAM_URL struStreamUrl; //ͨý嵽urlȡ + NET_DVR_HKDDNS_STREAM struHkDDNSStream; //ͨhiDDNSȥȡ + NET_DVR_IPCHANINFO_V40 struIPChan; //ֱӴ豸ȡչ +}NET_DVR_GET_STREAM_UNION, *LPNET_DVR_GET_STREAM_UNION; + +typedef enum +{ + NET_SDK_IP_DEVICE = 0, + NET_SDK_STREAM_MEDIA, + NET_SDK_IPSERVER, + NET_SDK_DDNS_STREAM_CFG, + NET_SDK_STREAM_MEDIA_URL, + NET_SDK_HKDDNS, + NET_SDK_IP_DEVICE_ADV, + NET_SDK_IP_DEVICE_V40, + NET_SDK_RTSP +}GET_STREAM_TYPE; + +typedef struct tagNET_DVR_STREAM_MODE +{ + BYTE byGetStreamType; //ȡʽGET_STREAM_TYPE0-ֱӴ豸ȡ1-ýȡ2-ͨIPServeripַȡ,3.ͨIPServerҵ豸ͨýȥ豸 + //4-ͨýURLȥȡ,5-ͨhkDDNSȡ6-ֱӴ豸ȡ(չ)ʹNET_DVR_IPCHANINFO_V40ṹ, 7-ͨRTSPЭ鷽ʽȡ + BYTE byRes[3]; //ֽ + NET_DVR_GET_STREAM_UNION uGetStream; // ͬȡʽṹ +}NET_DVR_STREAM_MODE, *LPNET_DVR_STREAM_MODE; + +//չIP豸 +typedef struct tagNET_DVR_IPPARACFG_V40 +{ + DWORD dwSize; /* ṹС */ + DWORD dwGroupNum; // 豸ֵ֧ + DWORD dwAChanNum; //ģͨ + DWORD dwDChanNum; //ͨ + DWORD dwStartDChan; //ʼͨ + BYTE byAnalogChanEnable[MAX_CHANNUM_V30]; /* ģͨǷãӵ͵߱ʾ1-64ͨ0ʾЧ 1Ч */ + NET_DVR_IPDEVINFO_V31 struIPDevInfo[MAX_IP_DEVICE_V40]; /* IP豸 */ + NET_DVR_STREAM_MODE struStreamMode[MAX_CHANNUM_V30]; + BYTE byRes2[20]; // ֽ +}NET_DVR_IPPARACFG_V40, *LPNET_DVR_IPPARACFG_V40; + + +//ΪCVRչı +typedef struct tagNET_DVR_ALARMINFO_DEV +{ + DWORD dwAlarmType; //0-(ͨ)ź1-˽о𻵣2- NVR˳ + //3-״̬쳣4-ϵͳʱ쳣5-¼ʣͣ + //6-(ͨ)ƶⱨ7-(ͨ)ڵ8-¼ʧ; 9-Ƶʵʱⱨ; 10-Դʹʸ澯; 11- CVRԶ޸쳣 12-¼쳣 + NET_DVR_TIME struTime; //ʱ + BYTE byRes[32]; // + DWORD dwNumber; //Ŀ + WORD *pNO; //dwNumberWORD; ÿWORDʾһͨţߴ̺, ЧʱΪ0 +}NET_DVR_ALARMINFO_DEV, *LPNET_DVR_ALARMINFO_DEV; + +/* */ +typedef struct +{ + BYTE byIPID; /* IP豸IDȡֵ1- MAX_IP_DEVICE */ + BYTE byAlarmOut; /* */ + BYTE byRes[18]; /* */ +}NET_DVR_IPALARMOUTINFO, *LPNET_DVR_IPALARMOUTINFO; + +/* IPýṹ */ +typedef struct +{ + DWORD dwSize; /* ṹС */ + NET_DVR_IPALARMOUTINFO struIPAlarmOutInfo[MAX_IP_ALARMOUT];/* IP */ +}NET_DVR_IPALARMOUTCFG, *LPNET_DVR_IPALARMOUTCFG; + +/* IP */ +typedef struct tagNET_DVR_IPALARMOUTINFO_V40 +{ + DWORD dwIPID; /* IP豸ID */ + DWORD dwAlarmOut; /* IP豸IDӦı */ + BYTE byRes[32]; /* */ +}NET_DVR_IPALARMOUTINFO_V40, *LPNET_DVR_IPALARMOUTINFO_V40;/**/ + +typedef struct tagNET_DVR_IPALARMOUTCFG_V40 +{ + DWORD dwSize; //ṹ峤 + DWORD dwCurIPAlarmOutNum; + NET_DVR_IPALARMOUTINFO_V40 struIPAlarmOutInfo[MAX_IP_ALARMOUT_V40];/*IP*/ + BYTE byRes[256]; +}NET_DVR_IPALARMOUTCFG_V40, *LPNET_DVR_IPALARMOUTCFG_V40; /*IP*/ + +/* */ +typedef struct +{ + BYTE byIPID; /* IP豸IDȡֵ1- MAX_IP_DEVICE */ + BYTE byAlarmIn; /* */ + BYTE byRes[18]; /* */ +}NET_DVR_IPALARMININFO, *LPNET_DVR_IPALARMININFO; + +/* IPýṹ */ +typedef struct +{ + DWORD dwSize; /* ṹС */ + NET_DVR_IPALARMININFO struIPAlarmInInfo[MAX_IP_ALARMIN];/* IP */ +}NET_DVR_IPALARMINCFG, *LPNET_DVR_IPALARMINCFG; + +/* IP */ +typedef struct tagNET_DVR_IPALARMININFO_V40 +{ + DWORD dwIPID; /* IP豸ID */ + DWORD dwAlarmIn; /* IP豸IDӦı */ + BYTE byRes[32]; /* */ +}NET_DVR_IPALARMININFO_V40, *LPNET_DVR_IPALARMININFO_V40; /* */ + +typedef struct tagNET_DVR_IPALARMINCFG_V40 +{ + DWORD dwSize; //ṹ峤 + DWORD dwCurIPAlarmInNum; //ǰ + NET_DVR_IPALARMININFO_V40 struIPAlarmInInfo[MAX_IP_ALARMIN_V40];/* IP*/ + BYTE byRes[256]; +}NET_DVR_IPALARMINCFG_V40, *LPNET_DVR_IPALARMINCFG_V40; /*IPԴ*/ + +//ipc alarm info +typedef struct tagNET_DVR_IPALARMINFO +{ + NET_DVR_IPDEVINFO struIPDevInfo[MAX_IP_DEVICE]; /* IP豸 */ + BYTE byAnalogChanEnable[MAX_ANALOG_CHANNUM]; /* ģͨǷã0-δ 1- */ + NET_DVR_IPCHANINFO struIPChanInfo[MAX_IP_CHANNEL]; /* IPͨ */ + NET_DVR_IPALARMININFO struIPAlarmInInfo[MAX_IP_ALARMIN]; /* IP */ + NET_DVR_IPALARMOUTINFO struIPAlarmOutInfo[MAX_IP_ALARMOUT]; /* IP */ +}NET_DVR_IPALARMINFO, *LPNET_DVR_IPALARMINFO; + +//ipcøı䱨Ϣչ 9000_1.1 +typedef struct tagNET_DVR_IPALARMINFO_V31 +{ + NET_DVR_IPDEVINFO_V31 struIPDevInfo[MAX_IP_DEVICE]; /* IP豸 */ + BYTE byAnalogChanEnable[MAX_ANALOG_CHANNUM]; /* ģͨǷã0-δ 1- */ + NET_DVR_IPCHANINFO struIPChanInfo[MAX_IP_CHANNEL]; /* IPͨ */ + NET_DVR_IPALARMININFO struIPAlarmInInfo[MAX_IP_ALARMIN]; /* IP */ + NET_DVR_IPALARMOUTINFO struIPAlarmOutInfo[MAX_IP_ALARMOUT]; /* IP */ +}NET_DVR_IPALARMINFO_V31, *LPNET_DVR_IPALARMINFO_V31; + +typedef struct tagNET_DVR_IPALARMINFO_V40 +{ + NET_DVR_IPDEVINFO_V31 struIPDevInfo[MAX_IP_DEVICE_V40]; // IP豸 + BYTE byAnalogChanEnable[MAX_CHANNUM_V30]; /* ģͨǷã0-δ 1- */ + NET_DVR_IPCHANINFO struIPChanInfo[MAX_CHANNUM_V30]; /* IPͨ */ + NET_DVR_IPALARMININFO struIPAlarmInInfo[MAX_IP_ALARMIN]; /* IP */ + NET_DVR_IPALARMOUTINFO struIPAlarmOutInfo[MAX_IP_ALARMOUT]; /* IP */ + BYTE byRes[20]; // ֽ +}NET_DVR_IPALARMINFO_V40, *LPNET_DVR_IPALARMINFO_V40; + +typedef enum _HD_STAT_ +{ + HD_STAT_OK = 0, /* */ + HD_STAT_UNFORMATTED = 1, /* δʽ */ + HD_STAT_ERROR = 2, /* */ + HD_STAT_SMART_FAILED = 3, /* SMART״̬ */ + HD_STAT_MISMATCH = 4, /* ƥ */ + HD_STAT_IDLE = 5, /* */ + NET_HD_STAT_OFFLINE = 6, /* ̴δ״̬ */ + HD_RIADVD_EXPAND = 7, /* ̿ */ + HD_STAT_REPARING = 10, /* Ӳ޸(9000 2.0) */ + HD_STAT_FORMATING = 11, /* Ӳڸʽ(9000 2.0) */ +}HD_STAT; + + +//ӲϢ +typedef struct +{ + DWORD dwHDNo; /*Ӳ̺, ȡֵ0~MAX_DISKNUM_V30-1*/ + DWORD dwCapacity; /*Ӳ()*/ + DWORD dwFreeSpace; /*Ӳʣռ()*/ + DWORD dwHdStatus; //Ӳ״̬() HD_STAT 0-, 1-δʽ, 2-, 3-SMART״̬, + //4-ƥ, 5- 6-Ӳ̲ 7-̿ 10-Ӳ޸ + //11-Ӳڸʽ 12-Ӳڵȴʽ 13-Ӳж 14-Ӳ̲ + //15-ɾ(Ӳ),16- + BYTE byHDAttr; /*0-ͨ, 1-; 2-ֻ 3-浵CVRרã4-ɶд*/ + BYTE byHDType; /*0-Ӳ,1-ESATAӲ,2-NASӲ,3-iSCSIӲ 4-Array,5-SD,6-minSAS*/ + BYTE byDiskDriver; // ֵ ASCIIַ + BYTE byRes1; + DWORD dwHdGroup; /*ĸ 1-MAX_HD_GROUP*/ + BYTE byRecycling; // Ƿѭ 0ѭã1ѭ + BYTE bySupportFormatType; /*ǰӲֵ֧ĸʽ,ֻǰýڵ֧byHDType=5(SD)ʱ; + bySupportFormatType=0,豸ĬʽӲ; + bySupportFormatType:bit0: 0-֧FAT32ʽ,1-֧; + bySupportFormatType:bit1: 0-֧EXT4ʽ,1-֧;*/ + BYTE byFormatType; /*ǰӲ̸ʽ: 0-豸Ĭϸʽ,1-ָFAT32ʽ(byHDType=5(SD)ʱЧ), + 2-ָEXT4ʽ(byHDType=5(SD)ʱЧ)*/ + BYTE byRes2; + DWORD dwStorageType; //λʾ 0-֧ 0-֧ + // dwStorageType & 0x1 ʾǷͨ¼רô洢 + // dwStorageType & 0x2 ʾǷdz֡¼רô洢 + // dwStorageType & 0x4 ʾǷͼƬ¼רô洢 + + DWORD dwPictureCapacity; //ӲͼƬ()λ:MB + DWORD dwFreePictureSpace; //ʣͼƬռ()λ:MB + BYTE byRes3[104]; +}NET_DVR_SINGLE_HD, *LPNET_DVR_SINGLE_HD; + +typedef struct +{ + DWORD dwSize; + DWORD dwHDCount; /*Ӳ()*/ + NET_DVR_SINGLE_HD struHDInfo[MAX_DISKNUM_V30];//ӲزҪЧ +}NET_DVR_HDCFG, *LPNET_DVR_HDCFG; + +//ӲϢ +typedef struct +{ + DWORD dwHDNo; /*Ӳ̺, ȡֵ0~MAX_DISKNUM_V30-1*/ + DWORD dwCapacity; /*Ӳ()*/ + DWORD dwFreeSpace; /*Ӳʣռ()*/ + DWORD dwHdStatus; //Ӳ״̬() HD_STAT 0-, 1-δʽ, 2-, 3-SMART״̬, + //4-ƥ, 5- 6-Ӳ̲ 7-̿ 10-Ӳ޸ + //11-Ӳڸʽ 12-Ӳڵȴʽ 13-Ӳж 14-Ӳ̲ + //15-ɾ(Ӳ),16-,17-棨ʱɻ̣,18-̣Ѿ𻵵Ӳ̣,19-̣쳣߳Уֻ,20-δ֤δ⣬ҪCVRжԴ̽м⣩ + //21-δ¼иʽ + BYTE byHDAttr; /*0-ͨ, 1-; 2-ֻ3-浵4-ɶд*/ + BYTE byHDType; /*0-Ӳ,1-ESATAӲ,2-NASӲ,3-iSCSIӲ 4-Array,5-SD,6-minSAS*/ + BYTE byDiskDriver; // ֵ ASCIIַ + BYTE byGenusGruop; //飺0-1-У2-洢أ3-̣4-δʼ5-Ч̣6-ȱ7-ȫȱֻ + DWORD dwHdGroup; /*ĸ 1-MAX_HD_GROUP*/ + BYTE byRecycling; // Ƿѭ 0ѭã1ѭ + BYTE bySupportFormatType; /*ǰӲֵ֧ĸʽ,ֻǰýڵ֧byHDType=5(SD)ʱ; + bySupportFormatType=0,豸ĬʽӲ; + bySupportFormatType:bit0: 0-֧FAT32ʽ,1-֧; + bySupportFormatType:bit1: 0-֧EXT4ʽ,1-֧;*/ + BYTE byFormatType; /*ǰӲ̸ʽ: 0-豸Ĭϸʽ,1-ָFAT32ʽ(byHDType=5(SD)ʱЧ), + 2-ָEXT4ʽ(byHDType=5(SD)ʱЧ)*/ + BYTE byRes2; + DWORD dwStorageType; //λʾ 0-֧ 0-֧ + // dwStorageType & 0x1 ʾǷͨ¼רô洢 + // dwStorageType & 0x2 ʾǷdz֡¼רô洢 + // dwStorageType & 0x4 ʾǷͼƬ¼רô洢 + + DWORD dwPictureCapacity; //ӲͼƬ()λ:MB + DWORD dwFreePictureSpace; //ʣͼƬռ()λ:MB + BYTE byDiskLocation[NET_SDK_DISK_LOCATION_LEN/*16*/];//Ӳλãʽעֻ + BYTE bySupplierName[NET_SDK_SUPPLIER_NAME_LEN/*32*/];//Ӧƣֻ + BYTE byDiskModel[NET_SDK_DISK_MODEL_LEN /*64*/];//Ӳͺţֻ + char szHDLocateIP[SDK_MAX_IP_LEN];//IPϢ + BYTE byRes3[80]; +}NET_DVR_SINGLE_HD_V50, *LPNET_DVR_SINGLE_HD_V50; + +typedef struct +{ + DWORD dwSize; + DWORD dwHDCount; /*Ӳ()*/ + NET_DVR_SINGLE_HD_V50 struHDInfoV50[MAX_DISKNUM_V30];//ӲزҪЧ + BYTE byRes[128]; +}NET_DVR_HDCFG_V50, *LPNET_DVR_HDCFG_V50; + +typedef struct tagNET_DVR_HARD_DISK_SINGLE_VOLUME_INFO +{ + DWORD dwSize; + BYTE byHDVolumeNo; /*Ӳ̾ID()*/ + BYTE byType; /*Ӳ̾:0-¼ڱ¼񣩣1-浵ڴ浵¼·¼ƻʱܹ浵, + 2-ļֻڴ洢ͻϴļ·¼ƻʱܹļҪ˵3-ͼƬֻڴ洢ͻϴͼƬ*/ + BYTE byRes1[2]; + DWORD dwCapacity; /*Ӳ̾λMB()*/ + DWORD dwFreeSpace; /*Ӳ̾ʣռ䣬λMB() */ + BYTE byHDVolumeName[NET_SDK_DISK_VOLUME_LEN/*36*/]; /*Ӳ̾()*/ + BYTE byLoopCover; /*Ƿѭǣ0-ѭǣ1-ѭǣӲ֮̾ѭϵ¼*/ + BYTE byRes[63]; +}NET_DVR_HARD_DISK_SINGLE_VOLUME_INFO, *LPNET_DVR_HARD_DISK_SINGLE_VOLUME_INFO; + +typedef struct tagNET_DVR_HARD_DISK_VOLUME_INFO +{ + DWORD dwSize; + DWORD dwHDVolumeCount; /*ǰӲ̾()*/ + NET_DVR_HARD_DISK_SINGLE_VOLUME_INFO struSingleVolumeInfo[NET_SDK_MAX_DISK_VOLUME/*33*/]; /*Ӳ̾Ϣ*/ + BYTE byRes[128]; +}NET_DVR_HARD_DISK_VOLUME_INFO, *LPNET_DVR_HARD_DISK_VOLUME_INFO; + +//Ϣչ +typedef struct tagNET_DVR_SINGLE_HDGROUP_V40 +{ + DWORD dwHDGroupNo; /*() 1-MAX_HD_GROUP*/ + DWORD dwRelRecordChan[MAX_CHANNUM_V40]; //¼ֵͨʾ0xffffffffʱΪЧ + BYTE byRes[64]; /* */ +}NET_DVR_SINGLE_HDGROUP_V40, *LPNET_DVR_SINGLE_HDGROUP_V40; + +typedef struct tagNET_DVR_HDGROUP_CFG_V40 +{ + DWORD dwSize; //ṹС + DWORD dwMaxHDGroupNum; //豸ֵ֧-ֻ + DWORD dwCurHDGroupNum; /*ǰõ*/ + NET_DVR_SINGLE_HDGROUP_V40 struHDGroupAttr[MAX_HD_GROUP]; //ӲزҪЧ + BYTE byRes[128]; // +}NET_DVR_HDGROUP_CFG_V40, *LPNET_DVR_HDGROUP_CFG_V40; + +//Ϣ +typedef struct +{ + DWORD dwHDGroupNo; /*() 1-MAX_HD_GROUP*/ + BYTE byHDGroupChans[MAX_CHANNUM_V30]; /*Ӧ¼ͨ, 0-ʾͨ¼󵽸飬1-ʾ¼󵽸*/ + BYTE byRes[8]; +}NET_DVR_SINGLE_HDGROUP, *LPNET_DVR_SINGLE_HDGROUP; + +typedef struct +{ + DWORD dwSize; + DWORD dwHDGroupCount; /*()*/ + NET_DVR_SINGLE_HDGROUP struHDGroupAttr[MAX_HD_GROUP];//ӲزҪЧ +}NET_DVR_HDGROUP_CFG, *LPNET_DVR_HDGROUP_CFG; + + +//ŲĽṹ +typedef struct +{ + DWORD dwSize; + DWORD dwMajorScale; /* ʾ 0-ţ1-*/ + DWORD dwMinorScale; /* ʾ 0-ţ1-*/ + DWORD dwRes[2]; +}NET_DVR_SCALECFG, *LPNET_DVR_SCALECFG; + + + +//DVR(9000չ) +typedef struct +{ + DWORD dwSize; + BYTE sAlarmOutName[NAME_LEN]; /* */ + DWORD dwAlarmOutDelay; /* ʱ(-1Ϊޣֶر) */ + //0-5,1-10,2-30,3-1,4-2,5-5,6-10,7-ֶ,8-1,9-2,10-3,11-4 + NET_DVR_SCHEDTIME struAlarmOutTime[MAX_DAYS][MAX_TIMESEGMENT_V30];/* ʱ */ + BYTE byAlarmOutHandle; /* Ƿ 0- 1-*/ + BYTE byNormalSatus; /* ̬ 0- 1-*/ + BYTE byRes[14]; +}NET_DVR_ALARMOUTCFG_V30, *LPNET_DVR_ALARMOUTCFG_V30; + +//DVR +typedef struct +{ + DWORD dwSize; + BYTE sAlarmOutName[NAME_LEN]; /* */ + DWORD dwAlarmOutDelay; /* ʱ(-1Ϊޣֶر) */ + //0-5,1-10,2-30,3-1,4-2,5-5,6-10,7-ֶ, 8-1, 9-3 + NET_DVR_SCHEDTIME struAlarmOutTime[MAX_DAYS][MAX_TIMESEGMENT];/* ʱ */ +}NET_DVR_ALARMOUTCFG, *LPNET_DVR_ALARMOUTCFG; + +//DVRԤ(9000չ) +/*лָڵǰԤģʽлʾ棬лԤģʽbyPreviewNumberΪ01棩bySwitchSeq[0][0] = 1,bySwitchSeq[0][1] = 2,bySwitchSeq[0][2] = 3 +򱾵ػһֱ1棬Ȼ水1,2,3ͨ˳л*/ +typedef struct +{ + DWORD dwSize; + BYTE byPreviewNumber;//Ԥģʽ,0-1,1-4,2-9,3-16,0xff: + BYTE byEnableAudio;//ǷԤ,0-Ԥ,1-Ԥ + WORD wSwitchTime;//лʱ,0-л,1-5s,2-10s,3-20s,4-30s,5-60s,6-120s,7-300s + BYTE bySwitchSeq[MAX_PREVIEW_MODE][MAX_WINDOW_V30];//л˳,lSwitchSeq[i]Ϊ 0xffʾ + BYTE byRes[24]; +}NET_DVR_PREVIEWCFG_V30, *LPNET_DVR_PREVIEWCFG_V30; + +//DVRԤ +typedef struct +{ + DWORD dwSize; + BYTE byPreviewNumber;//ԤĿ,0-1,1-4,2-9,3-16,0xff: + BYTE byEnableAudio;//ǷԤ,0-Ԥ,1-Ԥ + WORD wSwitchTime;//лʱ,0-л,1-5s,2-10s,3-20s,4-30s,5-60s,6-120s,7-300s + BYTE bySwitchSeq[MAX_WINDOW];//л˳,lSwitchSeq[i]Ϊ 0xffʾ +}NET_DVR_PREVIEWCFG, *LPNET_DVR_PREVIEWCFG; + +//DVRƵ +typedef struct +{ + WORD wResolution; /* ֱ */ + WORD wFreq; /* ˢƵ */ + DWORD dwBrightness; /* */ +}NET_DVR_VGAPARA; + +/* +* MATRIXṹ +*/ +typedef struct +{ + WORD wOrder[MAX_ANALOG_CHANNUM]; /* Ԥ˳, 0xffʾӦĴڲԤ */ + WORD wSwitchTime; /* Ԥлʱ */ + BYTE res[14]; +}NET_DVR_MATRIXPARA_V30, *LPNET_DVR_MATRIXPARA_V30; + +typedef struct +{ + WORD wDisplayLogo; /* ʾƵͨ */ + WORD wDisplayOsd; /* ʾʱ */ +}NET_DVR_MATRIXPARA; + +typedef struct +{ + BYTE byVideoFormat; /* ʽ,0-PAL,1-NTSC */ + BYTE byMenuAlphaValue; /* ˵뱳ͼԱȶ */ + WORD wScreenSaveTime; /* Ļʱ 0-Ӳ,1-1,2-2,3-5,4-10,5-20,6-30 */ + WORD wVOffset; /* Ƶƫ */ + WORD wBrightness; /* Ƶ */ + BYTE byStartMode; /* Ƶģʽ(0:˵,1:Ԥ)*/ + BYTE byEnableScaler; /* Ƿ (0-, 1-)*/ +}NET_DVR_VOOUT; + +//DVRƵ(9000չ) +typedef struct +{ + DWORD dwSize; + NET_DVR_VOOUT struVOOut[MAX_VIDEOOUT_V30]; + NET_DVR_VGAPARA struVGAPara[MAX_VGA_V30]; /* VGA */ + NET_DVR_MATRIXPARA_V30 struMatrixPara[MAX_MATRIXOUT]; /* MATRIX */ + BYTE byRes[16]; +}NET_DVR_VIDEOOUT_V30, *LPNET_DVR_VIDEOOUT_V30; + +//DVRƵ +typedef struct +{ + DWORD dwSize; + NET_DVR_VOOUT struVOOut[MAX_VIDEOOUT]; + NET_DVR_VGAPARA struVGAPara[MAX_VGA]; /* VGA */ + NET_DVR_MATRIXPARA struMatrixPara; /* MATRIX */ +}NET_DVR_VIDEOOUT, *LPNET_DVR_VIDEOOUT; + + +//û(ӽṹ)(չ) +typedef struct tagNET_DVR_USER_INFO_V40 +{ + BYTE sUserName[NAME_LEN]; /* ûֻ16ֽ */ + BYTE sPassword[PASSWD_LEN]; /* */ + BYTE byLocalRight[MAX_RIGHT]; /* Ȩ */ + /*0: ؿ̨*/ + /*1: ֶ¼*/ + /*2: ػط*/ + /*3: ò*/ + /*4: ز鿴״̬־*/ + /*5: ظ߼(ʽػ)*/ + /*6: ز鿴 */ + /*7: عģIP camera */ + /*8: ر */ + /*9: عػ/ */ + BYTE byRemoteRight[MAX_RIGHT];/* ԶȨ */ + /*0: Զ̨̿*/ + /*1: Զֶ¼*/ + /*2: Զ̻ط */ + /*3: Զò*/ + /*4: Զ̲鿴״̬־*/ + /*5: Զ̸߼(ʽػ)*/ + /*6: Զ̷Խ*/ + /*7: ԶԤ*/ + /*8: Զ󱨾ϴ*/ + /*9: Զ̿ƣ*/ + /*10: Զ̿ƴ*/ + /*11: Զ̲鿴 */ + /*12: Զ̹ģIP camera */ + /*13: Զ̹ػ/ */ + DWORD dwNetPreviewRight[MAX_CHANNUM_V40]; /* Զ̿Ԥͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalRecordRight[MAX_CHANNUM_V40]; /* ؿ¼ͨǰ˳У0xffffffffΪЧ*/ + DWORD dwNetRecordRight[MAX_CHANNUM_V40]; /* Զ̿¼ͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalPlaybackRight[MAX_CHANNUM_V40]; /* ؿԻطŵͨǰ˳У0xffffffffΪЧ*/ + DWORD dwNetPlaybackRight[MAX_CHANNUM_V40]; /* Զ̿Իطŵͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalPTZRight[MAX_CHANNUM_V40]; /* ؿPTZͨǰ˳У0xffffffffΪЧ*/ + DWORD dwNetPTZRight[MAX_CHANNUM_V40]; /* Զ̿PTZͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalBackupRight[MAX_CHANNUM_V40]; /* رȨͨǰ˳У0xffffffffΪЧ*/ + NET_DVR_IPADDR struUserIP; /* ûIPַ(Ϊ0ʱʾκεַ) */ + BYTE byMACAddr[MACADDR_LEN]; /* ַ */ + BYTE byPriority; /* ȼ0xff-ޣ0--ͣ1--У2-- */ + /* ޡʾ֧ȼ + ͡ĬȨ:غԶ̻ط,غԶ̲鿴־ + ״̬,غԶ̹ػ/ + СغԶ̨̿,غԶֶ¼,غ + Զ̻ط,ԽԶԤر,/Զ̹ػ/ + ߡԱ */ + BYTE byAlarmOnRight; // ڲȨ 1-Ȩޣ0-Ȩ + BYTE byAlarmOffRight; // ڳȨ 1-Ȩޣ0-Ȩ + BYTE byBypassRight; // ·Ȩ 1-Ȩޣ0-Ȩ + BYTE byRes1[2]; //ֽڶ + BYTE byPublishRight[MAX_RIGHT]; //ϢרȨ + /*0: زȨ*/ + /*1: ĿȨ*/ + /*2: ճȨ*/ + /*3: ϴزȨ*/ + /*4: ½ĿȨ*/ + /*5: ½ճȨ*/ + /*6: ϢȨ*/ + /*7: ն˹Ȩ*/ + /*8: ҵȨ*/ + BYTE byRes[84]; +}NET_DVR_USER_INFO_V40, *LPNET_DVR_USER_INFO_V40; + +//û(ӽṹ)(չ) +typedef struct tagNET_DVR_USER_INFO_V51 +{ + BYTE sUserName[NAME_LEN/*32*/]; /* ûֻ16ֽ */ + BYTE sPassword[PASSWD_LEN/*16*/]; /* */ + BYTE byLocalRight[MAX_RIGHT/*32*/]; /* Ȩ */ + /*0: ؿ̨*/ + /*1: ֶ¼*/ + /*2: ػط*/ + /*3: ò*/ + /*4: ز鿴״̬־*/ + /*5: ظ߼(ʽػ)*/ + /*6: ز鿴 */ + /*7: عģIP camera */ + /*8: ر */ + /*9: عػ/ */ + /*10: Ԥ */ + BYTE byRemoteRight[MAX_RIGHT/*32*/];/* ԶȨ */ + /*0: Զ̨̿*/ + /*1: Զֶ¼*/ + /*2: Զ̻ط */ + /*3: Զò*/ + /*4: Զ̲鿴״̬־*/ + /*5: Զ̸߼(ʽػ)*/ + /*6: Զ̷Խ*/ + /*7: ԶԤ*/ + /*8: Զ󱨾ϴ*/ + /*9: Զ̿ƣ*/ + /*10: Զ̿ƴ*/ + /*11: Զ̲鿴 */ + /*12: Զ̹ģIP camera */ + /*13: Զ̹ػ/ */ + DWORD dwNetPreviewRight[MAX_CHANNUM_V40/*512*/]; /* Զ̿Ԥͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalRecordRight[MAX_CHANNUM_V40/*512*/]; /* ؿ¼ͨǰ˳У0xffffffffΪЧ*/ + DWORD dwNetRecordRight[MAX_CHANNUM_V40/*512*/]; /* Զ̿¼ͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalPlaybackRight[MAX_CHANNUM_V40/*512*/]; /* ؿԻطŵͨǰ˳У0xffffffffΪЧ*/ + DWORD dwNetPlaybackRight[MAX_CHANNUM_V40/*512*/]; /* Զ̿Իطŵͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalPTZRight[MAX_CHANNUM_V40/*512*/]; /* ؿPTZͨǰ˳У0xffffffffΪЧ*/ + DWORD dwNetPTZRight[MAX_CHANNUM_V40/*512*/]; /* Զ̿PTZͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalBackupRight[MAX_CHANNUM_V40/*512*/]; /* رȨͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalPreviewRight[MAX_CHANNUM_V40/*512*/]; /* ԤȨͨǰ˳У0xffffffffΪЧ*/ + NET_DVR_IPADDR struUserIP; /* ûIPַ(Ϊ0ʱʾκεַ) */ + BYTE byMACAddr[MACADDR_LEN/*6*/]; /* ַ */ + BYTE byPriority; /* ȼ0xff-ޣ0--ͣ1--У2-- */ + /* ޡʾ֧ȼ + ͡ĬȨ:غԶ̻ط,غԶ̲鿴־ + ״̬,غԶ̹ػ/ + СغԶ̨̿,غԶֶ¼,غ + Զ̻ط,ԽԶԤر,/Զ̹ػ/ߡԱ */ + BYTE byAlarmOnRight; // ڲȨ 1-Ȩޣ0-Ȩ + BYTE byAlarmOffRight; // ڳȨ 1-Ȩޣ0-Ȩ + BYTE byBypassRight; // ·Ȩ 1-Ȩޣ0-Ȩ + BYTE byRes1[2]; //ֽڶ + BYTE byPublishRight[MAX_RIGHT/*32*/]; //ϢרȨ + /*0: زȨ*/ + /*1: ĿȨ*/ + /*2: ճȨ*/ + /*3: ϴزȨ*/ + /*4: ½ĿȨ*/ + /*5: ½ճȨ*/ + /*6: ϢȨ*/ + /*7: ն˹Ȩ*/ + /*8: ҵȨ*/ + DWORD dwPasswordValidity; //Ч,Աû޸,λ죬0ʾЧ + BYTE byKeypadPassword[PASSWD_LEN/*16*/]; // + BYTE byUserOperateType; //ûͣ1-û2-û3-û+û + BYTE byRes[1007]; +}NET_DVR_USER_INFO_V51, *LPNET_DVR_USER_INFO_V51; + +typedef struct tagNET_DVR_USER_V51 +{ + DWORD dwSize; //ṹС + DWORD dwMaxUserNum; //豸ֵ֧û-ֻ + NET_DVR_USER_INFO_V51 struUser[MAX_USERNUM_V30/*32*/]; /* û */ + char sloginPassword[PASSWD_LEN/*16*/]; /* ½ȷ */ + BYTE byRes[240]; // +}NET_DVR_USER_V51, *LPNET_DVR_USER_V51; + +//û(ӽṹ)(չ) +typedef struct tagNET_DVR_USER_INFO_V52 +{ + BYTE sUserName[NAME_LEN/*32*/]; /* ûֻ16ֽ */ + BYTE sPassword[PASSWD_LEN/*16*/]; /* */ + BYTE byLocalRight[MAX_RIGHT/*32*/]; /* Ȩ */ + /*0: ؿ̨*/ + /*1: ֶ¼*/ + /*2: ػط*/ + /*3: ò*/ + /*4: ز鿴״̬־*/ + /*5: ظ߼(ʽػ)*/ + /*6: ز鿴 */ + /*7: عģIP camera */ + /*8: ر */ + /*9: عػ/ */ + /*10: Ԥ */ + BYTE byRemoteRight[MAX_RIGHT/*32*/];/* ԶȨ */ + /*0: Զ̨̿*/ + /*1: Զֶ¼*/ + /*2: Զ̻ط */ + /*3: Զò*/ + /*4: Զ̲鿴״̬־*/ + /*5: Զ̸߼(ʽػ)*/ + /*6: Զ̷Խ*/ + /*7: ԶԤ*/ + /*8: Զ󱨾ϴ*/ + /*9: Զ̿ƣ*/ + /*10: Զ̿ƴ*/ + /*11: Զ̲鿴 */ + /*12: Զ̹ģIP camera */ + /*13: Զ̹ػ/ */ + DWORD dwNetPreviewRight[MAX_CHANNUM_V40/*512*/]; /* Զ̿Ԥͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalRecordRight[MAX_CHANNUM_V40/*512*/]; /* ؿ¼ͨǰ˳У0xffffffffΪЧ*/ + DWORD dwNetRecordRight[MAX_CHANNUM_V40/*512*/]; /* Զ̿¼ͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalPlaybackRight[MAX_CHANNUM_V40/*512*/]; /* ؿԻطŵͨǰ˳У0xffffffffΪЧ*/ + DWORD dwNetPlaybackRight[MAX_CHANNUM_V40/*512*/]; /* Զ̿Իطŵͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalPTZRight[MAX_CHANNUM_V40/*512*/]; /* ؿPTZͨǰ˳У0xffffffffΪЧ*/ + DWORD dwNetPTZRight[MAX_CHANNUM_V40/*512*/]; /* Զ̿PTZͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalBackupRight[MAX_CHANNUM_V40/*512*/]; /* رȨͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalPreviewRight[MAX_CHANNUM_V40/*512*/]; /* ԤȨͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalDoubleVerificationPlaybackRight[MAX_CHANNUM_V40/*512*/]; /* ؿԶ֤طŵͨǰ˳У0xffffffffΪЧ*/ + DWORD dwLocalDoubleVerificationBackupRight[MAX_CHANNUM_V40/*512*/]; /* ؿԶ֤ݵͨǰ˳У0xffffffffΪЧ*/ + DWORD dwNetDoubleVerificationPlaybackRight[MAX_CHANNUM_V40/*512*/]; /* Զ̿Զ֤طŵͨǰ˳У0xffffffffΪЧ*/ + NET_DVR_IPADDR struUserIP; /* ûIPַ(Ϊ0ʱʾκεַ) */ + BYTE byMACAddr[MACADDR_LEN/*6*/]; /* ַ */ + BYTE byPriority; /* ȼ0xff-ޣ0--ͣ1--У2-- */ + /* ޡʾ֧ȼ + ͡ĬȨ:غԶ̻ط,غԶ̲鿴־ + ״̬,غԶ̹ػ/ + СغԶ̨̿,غԶֶ¼,غ + Զ̻ط,ԽԶԤر,/Զ̹ػ/ߡԱ */ + BYTE byAlarmOnRight; // ڲȨ 1-Ȩޣ0-Ȩ + BYTE byAlarmOffRight; // ڳȨ 1-Ȩޣ0-Ȩ + BYTE byBypassRight; // ·Ȩ 1-Ȩޣ0-Ȩ + BYTE byRes1[2]; //ֽڶ + BYTE byPublishRight[MAX_RIGHT/*32*/]; //ϢרȨ + /*0: زȨ*/ + /*1: ĿȨ*/ + /*2: ճȨ*/ + /*3: ϴزȨ*/ + /*4: ½ĿȨ*/ + /*5: ½ճȨ*/ + /*6: ϢȨ*/ + /*7: ն˹Ȩ*/ + /*8: ҵȨ*/ + DWORD dwPasswordValidity; //Ч,Աû޸,λ죬0ʾЧ + BYTE byKeypadPassword[PASSWD_LEN/*16*/]; // + BYTE byUserOperateType; //ûͣ1-û2-û3-û+û + BYTE byRes[1007]; +}NET_DVR_USER_INFO_V52, *LPNET_DVR_USER_INFO_V52; + +typedef struct tagNET_DVR_USER_V52 +{ + DWORD dwSize; //ṹС + DWORD dwMaxUserNum; //豸ֵ֧û-ֻ + NET_DVR_USER_INFO_V52 struUser[MAX_USERNUM_V30/*32*/]; /* û */ + char sloginPassword[PASSWD_LEN/*16*/]; /* ½ȷ */ + BYTE byRes[240]; // +}NET_DVR_USER_V52, *LPNET_DVR_USER_V52; + +//û(ӽṹ)(9000չ) +typedef struct +{ + BYTE sUserName[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + BYTE byLocalRight[MAX_RIGHT]; /* Ȩ */ + /*0: ؿ̨*/ + /*1: ֶ¼*/ + /*2: ػط*/ + /*3: ò*/ + /*4: ز鿴״̬־*/ + /*5: ظ߼(ʽػ)*/ + /*6: ز鿴 */ + /*7: عģIP camera */ + /*8: ر */ + /*9: عػ/ */ + BYTE byRemoteRight[MAX_RIGHT];/* ԶȨ */ + /*0: Զ̨̿*/ + /*1: Զֶ¼*/ + /*2: Զ̻ط */ + /*3: Զò*/ + /*4: Զ̲鿴״̬־*/ + /*5: Զ̸߼(ʽػ)*/ + /*6: Զ̷Խ*/ + /*7: ԶԤ*/ + /*8: Զ󱨾ϴ*/ + /*9: Զ̿ƣ*/ + /*10: Զ̿ƴ*/ + /*11: Զ̲鿴 */ + /*12: Զ̹ģIP camera */ + /*13: Զ̹ػ/ */ + BYTE byNetPreviewRight[MAX_CHANNUM_V30]; /* Զ̿Ԥͨ 0-Ȩޣ1-Ȩ*/ + BYTE byLocalPlaybackRight[MAX_CHANNUM_V30]; /* ؿԻطŵͨ 0-Ȩޣ1-Ȩ*/ + BYTE byNetPlaybackRight[MAX_CHANNUM_V30]; /* Զ̿Իطŵͨ 0-Ȩޣ1-Ȩ*/ + BYTE byLocalRecordRight[MAX_CHANNUM_V30]; /* ؿ¼ͨ 0-Ȩޣ1-Ȩ*/ + BYTE byNetRecordRight[MAX_CHANNUM_V30]; /* Զ̿¼ͨ 0-Ȩޣ1-Ȩ*/ + BYTE byLocalPTZRight[MAX_CHANNUM_V30]; /* ؿPTZͨ 0-Ȩޣ1-Ȩ*/ + BYTE byNetPTZRight[MAX_CHANNUM_V30]; /* Զ̿PTZͨ 0-Ȩޣ1-Ȩ*/ + BYTE byLocalBackupRight[MAX_CHANNUM_V30]; /* رȨͨ 0-Ȩޣ1-Ȩ*/ + NET_DVR_IPADDR struUserIP; /* ûIPַ(Ϊ0ʱʾκεַ) */ + BYTE byMACAddr[MACADDR_LEN]; /* ַ */ + BYTE byPriority; /* ȼ0xff-ޣ0--ͣ1--У2-- */ + /* + ޡʾ֧ȼ + ͡ĬȨ:غԶ̻ط,غԶ̲鿴־״̬,غԶ̹ػ/ + СغԶ̨̿,غԶֶ¼,غԶ̻ط,ԽԶԤ + ر,/Զ̹ػ/ + ߡԱ + */ + BYTE byAlarmOnRight; // ڲȨ + BYTE byAlarmOffRight; // ڳȨ + BYTE byBypassRight; // ·Ȩ + BYTE byRes[14]; +}NET_DVR_USER_INFO_V30, *LPNET_DVR_USER_INFO_V30; + +//û(SDK_V15չ)(ӽṹ) +typedef struct +{ + BYTE sUserName[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + DWORD dwLocalRight[MAX_RIGHT]; /* Ȩ */ + /*0: ؿ̨*/ + /*1: ֶ¼*/ + /*2: ػط*/ + /*3: ò*/ + /*4: ز鿴״̬־*/ + /*5: ظ߼(ʽػ)*/ + DWORD dwLocalPlaybackRight; /* ؿԻطŵͨ bit0 -- channel 1*/ + DWORD dwRemoteRight[MAX_RIGHT]; /* Ȩ */ + /*0: Զ̨̿*/ + /*1: Զֶ¼*/ + /*2: Զ̻ط */ + /*3: Զò*/ + /*4: Զ̲鿴״̬־*/ + /*5: Զ̸߼(ʽػ)*/ + /*6: Զ̷Խ*/ + /*7: ԶԤ*/ + /*8: Զ󱨾ϴ*/ + /*9: Զ̿ƣ*/ + /*10: Զ̿ƴ*/ + DWORD dwNetPreviewRight; /* Զ̿Ԥͨ bit0 -- channel 1*/ + DWORD dwNetPlaybackRight; /* Զ̿Իطŵͨ bit0 -- channel 1*/ + char sUserIP[16]; /* ûIPַ(Ϊ0ʱʾκεַ) */ + BYTE byMACAddr[MACADDR_LEN]; /* ַ */ +}NET_DVR_USER_INFO_EX, *LPNET_DVR_USER_INFO_EX; + +//û(ӽṹ) +typedef struct +{ + BYTE sUserName[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + DWORD dwLocalRight[MAX_RIGHT]; /* Ȩ */ + /*0: ؿ̨*/ + /*1: ֶ¼*/ + /*2: ػط*/ + /*3: ò*/ + /*4: ز鿴״̬־*/ + /*5: ظ߼(ʽػ)*/ + DWORD dwRemoteRight[MAX_RIGHT]; /* Ȩ */ + /*0: Զ̨̿*/ + /*1: Զֶ¼*/ + /*2: Զ̻ط */ + /*3: Զò*/ + /*4: Զ̲鿴״̬־*/ + /*5: Զ̸߼(ʽػ)*/ + /*6: Զ̷Խ*/ + /*7: ԶԤ*/ + /*8: Զ󱨾ϴ*/ + /*9: Զ̿ƣ*/ + /*10: Զ̿ƴ*/ + char sUserIP[16]; /* ûIPַ(Ϊ0ʱʾκεַ) */ + BYTE byMACAddr[MACADDR_LEN]; /* ַ */ +}NET_DVR_USER_INFO, *LPNET_DVR_USER_INFO; + +//DVRû(չ) +typedef struct tagNET_DVR_USER_V40 +{ + DWORD dwSize; //ṹС + DWORD dwMaxUserNum; //豸ֵ֧û-ֻ + NET_DVR_USER_INFO_V40 struUser[MAX_USERNUM_V30]; /* û */ +}NET_DVR_USER_V40,*LPNET_DVR_USER_V40; +typedef struct tagNET_DVR_USER_V50 +{ + DWORD dwSize; //ṹС + DWORD dwMaxUserNum; //豸ֵ֧û-ֻ + NET_DVR_USER_INFO_V40 struUser[MAX_USERNUM_V30]; /* û */ + char sloginPassword[PASSWD_LEN/*16*/]; /* ½ȷ */ + BYTE byRes[240]; // +}NET_DVR_USER_V50, *LPNET_DVR_USER_V50; +//DVRû(9000չ) +typedef struct +{ + DWORD dwSize; + NET_DVR_USER_INFO_V30 struUser[MAX_USERNUM_V30]; +}NET_DVR_USER_V30, *LPNET_DVR_USER_V30; + +//DVRû(SDK_V15չ) +typedef struct +{ + DWORD dwSize; + NET_DVR_USER_INFO_EX struUser[MAX_USERNUM]; +}NET_DVR_USER_EX, *LPNET_DVR_USER_EX; + +//DVRû +typedef struct +{ + DWORD dwSize; + NET_DVR_USER_INFO struUser[MAX_USERNUM]; +}NET_DVR_USER, *LPNET_DVR_USER; + +typedef struct tagNET_DVR_EXCEPTION_V40 +{ + DWORD dwSize ; //ṹС + DWORD dwMaxGroupNum ; //豸ֵ֧ + NET_DVR_HANDLEEXCEPTION_V41 struExceptionHandle[MAX_EXCEPTIONNUM_V30]; + BYTE byRes[128]; // +}NET_DVR_EXCEPTION_V40,*LPNET_DVR_EXCEPTION_V40; /*쳣չṹ*/ + +//DVR쳣(9000չ) +typedef struct +{ + DWORD dwSize; + NET_DVR_HANDLEEXCEPTION_V30 struExceptionHandleType[MAX_EXCEPTIONNUM_V30]; + /*0-,1- Ӳ̳,2-߶,3-IP ַͻ, 4-Ƿ, 5-/Ƶʽƥ, 6-Ƶź쳣, 7-¼쳣 8-쳣9-ǰ/¼ֱʲƥ쳣10-г(ר) 11-ȱ쳣N+1ʹã12-¶ȣ13-ϵͳ쳣14-쳣, 15-POE쳣, 16-POC쳣,17-Դѹ쳣*/ +}NET_DVR_EXCEPTION_V30, *LPNET_DVR_EXCEPTION_V30; + + + +//DVR쳣 +typedef struct +{ + DWORD dwSize; + NET_DVR_HANDLEEXCEPTION struExceptionHandleType[MAX_EXCEPTIONNUM]; + /*0-,1- Ӳ̳,2-߶,3-IP ַͻ,4-Ƿ, 5-/Ƶʽƥ, 6-Ƶź쳣*/ +}NET_DVR_EXCEPTION, *LPNET_DVR_EXCEPTION; + +//ͨ״̬(9000չ) +typedef struct +{ + BYTE byRecordStatic; //ͨǷ¼,0-¼,1-¼ + BYTE bySignalStatic; //ӵź״̬,0-,1-źŶʧ + BYTE byHardwareStatic;//ͨӲ״̬,0-,1-쳣,DSP + BYTE byRes1; // + DWORD dwBitRate;//ʵ + DWORD dwLinkNum;//ͻӵĸ + NET_DVR_IPADDR struClientIP[MAX_LINK];//ͻ˵IPַ + DWORD dwIPLinkNum;//ͨΪIP룬ôʾIP뵱ǰ + BYTE byExceedMaxLink; // Ƿ񳬳˵·6· 0 - δ, 1- + BYTE byRes[3]; // ֽ + DWORD dwAllBitRate; //ʵ֮ + DWORD dwChannelNo; //ǰͨţ0xffffffffʾЧ +}NET_DVR_CHANNELSTATE_V30, *LPNET_DVR_CHANNELSTATE_V30; + +//ͨ״̬ +typedef struct +{ + BYTE byRecordStatic; //ͨǷ¼,0-¼,1-¼ + BYTE bySignalStatic; //ӵź״̬,0-,1-źŶʧ + BYTE byHardwareStatic;//ͨӲ״̬,0-,1-쳣,DSP + char reservedData; // + DWORD dwBitRate;//ʵ + DWORD dwLinkNum;//ͻӵĸ + DWORD dwClientIP[MAX_LINK];//ͻ˵IPַ +}NET_DVR_CHANNELSTATE, *LPNET_DVR_CHANNELSTATE; + +//Ӳ״̬ +typedef struct +{ + DWORD dwVolume;//Ӳ̵ + DWORD dwFreeSpace;//Ӳ̵ʣռ + DWORD dwHardDiskStatic; //Ӳ̵״̬,λ:1-,2-,3-Ӳ̳,4-δʽ, 5-δ״̬(Ӳ),6-Ӳڸʽ,7-Ӳ(δѭǵ),8-쳣豸ͳƣ +}NET_DVR_DISKSTATE, *LPNET_DVR_DISKSTATE; + +typedef struct tagNET_DVR_WORKSTATE_V40 +{ + DWORD dwSize ; //ṹС + DWORD dwDeviceStatic; //豸״̬,0-,1-CPUռ̫,85%,2-Ӳ,紮 + NET_DVR_DISKSTATE struHardDiskStatic[MAX_DISKNUM_V30]; //Ӳ״̬,һֻܻȡ33ӲϢ + NET_DVR_CHANNELSTATE_V30 struChanStatic[MAX_CHANNUM_V40/*512*/];//ͨ״̬ǰ˳ + DWORD dwHasAlarmInStatic[MAX_ALARMIN_V40/*512*/]; //бıڣֵʾ±ֵ˳УֵΪ0xffffffffʱǰֵЧ + DWORD dwHasAlarmOutStatic[MAX_ALARMOUT_V40/*512*/]; //бıڣֵʾ±ֵ˳УֵΪ0xffffffffʱǰֵЧ + DWORD dwLocalDisplay; //ʾ״̬,0-,1- + BYTE byAudioInChanStatus[MAX_AUDIO_V30/*2*/]; //λʾͨ״̬ 0-δʹã1-ʹУ0λʾ1ͨ + BYTE byRes1[2]; + float fHumidity; //֪ʪ,Χ:0.0 ~100.0 + float fTemperature; //֪¶ȣΧ-20.0 ~ 90.0 + BYTE byRes[116]; // +}NET_DVR_WORKSTATE_V40, *LPNET_DVR_WORKSTATE_V40; /*豸״̬չṹ*/ + +typedef struct tagNET_DVR_GETWORKSTATE_COND +{ + DWORD dwSize ; //ṹ峤 + BYTE byFindHardByCond; /*0-ȫ(һֻܲ33)ʱdwFindHardStatusNumЧ*/ + BYTE byFindChanByCond ; /*0-ȫͨʱdwFindChanNumЧ*/ + BYTE byRes1[2] ;// + DWORD dwFindHardStatus[MAX_DISKNUM_V30/*33*/] ; /*ҪҵӲ̺ţֵʾֵ˳У 0xffffffffΪЧ */ + DWORD dwFindChanNo[MAX_CHANNUM_V40/*512*/] ; /*Ҫҵͨţֵʾֵ˳У 0xffffffffΪЧ */ + BYTE byRes[64] ; // +}NET_DVR_GETWORKSTATE_COND, *LPNET_DVR_GETWORKSTATE_COND; + +//DVR״̬(9000չ) +typedef struct +{ + DWORD dwDeviceStatic; //豸״̬,0-,1-CPUռ̫,85%,2-Ӳ,紮 + NET_DVR_DISKSTATE struHardDiskStatic[MAX_DISKNUM_V30]; + NET_DVR_CHANNELSTATE_V30 struChanStatic[MAX_CHANNUM_V30];//ͨ״̬ + BYTE byAlarmInStatic[MAX_ALARMIN_V30]; //˿ڵ״̬,0-ûб,1-б + BYTE byAlarmOutStatic[MAX_ALARMOUT_V30]; //˿ڵ״̬,0-û,1-б + DWORD dwLocalDisplay;//ʾ״̬,0-,1- + BYTE byAudioChanStatus[MAX_AUDIO_V30];//ʾͨ״̬ 0-δʹã1-ʹ, 0xffЧ + BYTE byRes[10]; +}NET_DVR_WORKSTATE_V30, *LPNET_DVR_WORKSTATE_V30; + +//DVR״̬ +typedef struct +{ + DWORD dwDeviceStatic; //豸״̬,0-,1-CPUռ̫,85%,2-Ӳ,紮 + NET_DVR_DISKSTATE struHardDiskStatic[MAX_DISKNUM]; + NET_DVR_CHANNELSTATE struChanStatic[MAX_CHANNUM];//ͨ״̬ + BYTE byAlarmInStatic[MAX_ALARMIN]; //˿ڵ״̬,0-ûб,1-б + BYTE byAlarmOutStatic[MAX_ALARMOUT]; //˿ڵ״̬,0-û,1-б + DWORD dwLocalDisplay;//ʾ״̬,0-,1- +}NET_DVR_WORKSTATE, *LPNET_DVR_WORKSTATE; + + + +//־Ϣ(9000չ) +typedef struct +{ + NET_DVR_TIME strLogTime; + DWORD dwMajorType; // 1-; 2-쳣; 3-; 0xff-ȫ + DWORD dwMinorType;// 0-ȫ; + BYTE sPanelUser[MAX_NAMELEN]; //û + BYTE sNetUser[MAX_NAMELEN];//û + NET_DVR_IPADDR struRemoteHostAddr;//Զַ + DWORD dwParaType;//,9000豸MINOR_START_VT/MINOR_STOP_VTʱʾԽĶӺ + DWORD dwChannel;//ͨ + DWORD dwDiskNumber;//Ӳ̺ + DWORD dwAlarmInPort;//˿ + DWORD dwAlarmOutPort;//˿ + DWORD dwInfoLen; + char sInfo[LOG_INFO_LEN]; +}NET_DVR_LOG_V30, *LPNET_DVR_LOG_V30; + +//־Ϣ +typedef struct +{ + NET_DVR_TIME strLogTime; + DWORD dwMajorType; // 1-; 2-쳣; 3-; 0xff-ȫ + DWORD dwMinorType;// 0-ȫ; + BYTE sPanelUser[MAX_NAMELEN]; //û + BYTE sNetUser[MAX_NAMELEN];//û + char sRemoteHostAddr[16];//Զַ + DWORD dwParaType;// + DWORD dwChannel;//ͨ + DWORD dwDiskNumber;//Ӳ̺ + DWORD dwAlarmInPort;//˿ + DWORD dwAlarmOutPort;//˿ +}NET_DVR_LOG, *LPNET_DVR_LOG; + + +typedef struct tagNET_DVR_FIND_LOG_COND +{ + DWORD dwSelectMode; // 0ȫ1ͣ2ʱ䣻3ʱ + DWORD dwMainType; //־ + DWORD dwSubType; //־ + NET_DVR_TIME_V50 struStartTime; //ʼʱ + NET_DVR_TIME_V50 struEndTime; //ʱ + BOOL bOnlySmart; //ǷֻS.M.A.R.TϢ־ + BYTE byRes[128]; +}NET_DVR_FIND_LOG_COND, *LPNET_DVR_FIND_LOG_COND; + + +typedef struct +{ + NET_DVR_TIME_V50 struLogTime; //־ʱ + DWORD dwMajorType; // 1-; 2-쳣; 3-; 0xff-ȫ + DWORD dwMinorType; // 0-ȫ; + BYTE sPanelUser[MAX_NAMELEN];//û + BYTE sNetUser[MAX_NAMELEN]; //û + NET_DVR_IPADDR struRemoteHostAddr; //Զַ + DWORD dwParaType; //,9000豸MINOR_START_VT/MINOR_STOP_VTʱʾԽĶӺ + DWORD dwChannel; //ͨ + DWORD dwDiskNumber; //Ӳ̺ + DWORD dwAlarmInPort; //˿ + DWORD dwAlarmOutPort; //˿ + DWORD dwInfoLen; + char sInfo[LOG_INFO_LEN]; + BYTE byRes[128]; +}NET_DVR_LOG_V50, *LPNET_DVR_LOG_V50; + + +/************************DVR־ end***************************/ + +/************************־ begin************************************************/ +typedef struct tagNET_DVR_ALARMHOST_SEARCH_LOG_PARAM +{ + WORD wMajorType; // + WORD wMinorType; // + NET_DVR_TIME struStartTime; // ʼʱ + NET_DVR_TIME struEndTime; // ʱ + BYTE byRes[8]; // ֽ +}NET_DVR_ALARMHOST_SEARCH_LOG_PARAM, LPNET_DVR_ALARMHOST_SEARCH_LOG_PARAM; + +typedef struct tagNET_DVR_ALARMHOST_LOG_RET +{ + NET_DVR_TIME struLogTime; // ־ʱ + BYTE sUserName[NAME_LEN]; // û + NET_DVR_IPADDR struIPAddr; // IPַ + WORD wMajorType; // + WORD wMinorType; // + WORD wParam; // + BYTE byRes[10]; + DWORD dwInfoLen; // Ϣ + char sInfo[LOG_INFO_LEN]; // Ϣ +}NET_DVR_ALARMHOST_LOG_RET, *LPNET_DVR_ALARMHOST_LOG_RET; + +/*************************־ end***********************************************/ + +//״̬(9000չ) +typedef struct +{ + BYTE Output[MAX_ALARMOUT_V30]; +}NET_DVR_ALARMOUTSTATUS_V30, *LPNET_DVR_ALARMOUTSTATUS_V30; + +//״̬ +typedef struct +{ + BYTE Output[MAX_ALARMOUT]; +}NET_DVR_ALARMOUTSTATUS, *LPNET_DVR_ALARMOUTSTATUS; + +//Ϣ +typedef struct +{ + USHORT m_Year; + USHORT m_Month; + USHORT m_Day; + USHORT m_Hour; + USHORT m_Minute; + USHORT m_Second; + BYTE DeviceName[24]; //豸 + DWORD dwChannelNumer; //ͨ + BYTE CardNumber[32]; // + char cTradeType[12]; // + DWORD dwCash; //׽ +}NET_DVR_TRADEINFO, *LPNET_DVR_TRADEINFO; + + +//ATMר +/****************************ATM(begin)***************************/ +#define NCR 0 +#define DIEBOLD 1 +#define WINCOR_NIXDORF 2 +#define SIEMENS 3 +#define OLIVETTI 4 +#define FUJITSU 5 +#define HITACHI 6 +#define SMI 7 +#define IBM 8 +#define BULL 9 +#define YiHua 10 +#define LiDe 11 +#define GDYT 12 +#define Mini_Banl 13 +#define GuangLi 14 +#define DongXin 15 +#define ChenTong 16 +#define NanTian 17 +#define XiaoXing 18 +#define GZYY 19 +#define QHTLT 20 +#define DRS918 21 +#define KALATEL 22 +#define NCR_2 23 +#define NXS 24 + + +/*֡ʽ*/ +typedef struct +{ + BYTE code[12]; /* */ +}NET_DVR_FRAMETYPECODE; + + +//ATM +typedef struct +{ + DWORD dwSize; + char sATMIP[16]; /* ATM IPַ */ + DWORD dwATMType; /* ATM */ + DWORD dwInputMode; /* 뷽ʽ 0- 1- 2-ֱ 3-ATM*/ + DWORD dwFrameSignBeginPos; /* ı־λʼλ*/ + DWORD dwFrameSignLength; /* ı־λij */ + BYTE byFrameSignContent[12]; /* ı־λ */ + DWORD dwCardLengthInfoBeginPos; /* ųϢʼλ */ + DWORD dwCardLengthInfoLength; /* ųϢij */ + DWORD dwCardNumberInfoBeginPos; /* Ϣʼλ */ + DWORD dwCardNumberInfoLength; /* Ϣij */ + DWORD dwBusinessTypeBeginPos; /* ͵ʼλ */ + DWORD dwBusinessTypeLength; /* ͵ij */ + NET_DVR_FRAMETYPECODE frameTypeCode[10];/* */ +}NET_DVR_FRAMEFORMAT, *LPNET_DVR_FRAMEFORMAT; + +//ATM(9000չ) +typedef struct +{ + DWORD dwSize; + NET_DVR_IPADDR struATMIP; /* ATM IPַ */ + DWORD dwATMType; /* ATM */ + DWORD dwInputMode; /* 뷽ʽ 0- 1- 2-ֱ 3-ATM*/ + DWORD dwFrameSignBeginPos; /* ı־λʼλ*/ + DWORD dwFrameSignLength; /* ı־λij */ + BYTE byFrameSignContent[12]; /* ı־λ */ + DWORD dwCardLengthInfoBeginPos; /* ųϢʼλ */ + DWORD dwCardLengthInfoLength; /* ųϢij */ + DWORD dwCardNumberInfoBeginPos; /* Ϣʼλ */ + DWORD dwCardNumberInfoLength; /* Ϣij */ + DWORD dwBusinessTypeBeginPos; /* ͵ʼλ */ + DWORD dwBusinessTypeLength; /* ͵ij */ + NET_DVR_FRAMETYPECODE frameTypeCode[10]; /* */ + WORD wATMPort; /* Ų׽˿ں(Э鷽ʽ) ()0xffffʾֵЧ*/ + WORD wProtocolType; /* Э() 0xffffʾֵЧ*/ + BYTE byRes[24]; +}NET_DVR_FRAMEFORMAT_V30, *LPNET_DVR_FRAMEFORMAT_V30; + +//SDK_V31 ATM + +/**/ +typedef struct tagNET_DVR_FILTER +{ + BYTE byEnable; //0,;1, + BYTE byMode; //0,ASCII;1,HEX + BYTE byFrameBeginPos; // ҪĿַʼλ + BYTE byRes; // ֽ + BYTE byFilterText[16]; //ַ + BYTE byRes2[12]; // ֽ +}NET_DVR_FILTER, *LPNET_DVR_FILTER; + +//ݰ ݰʶ +typedef struct tagNET_DVR_IDENTIFICAT +{ + BYTE byStartMode; //ʼַģʽ:0,ASCII;1,HEX + BYTE byEndMode; //ַģʽ0,ASCII;1,HEX + BYTE byRes[2]; //ֽ + NET_DVR_FRAMETYPECODE struStartCode; //ݰʼʶַ + NET_DVR_FRAMETYPECODE struEndCode; //ݰʶַ + BYTE byRes1[12]; //ֽ +}NET_DVR_IDENTIFICAT, *LPNET_DVR_IDENTIFICAT; + +typedef struct tagNET_DVR_PACKAGE_LOCATION/*Ϣλ*/ +{ + BYTE byOffsetMode; /*λϢģʽ 0,token(ַ־ģʽ);1,fix̶ģʽ*/ + BYTE byRes1[3]; // ֽ + DWORD dwOffsetPos; /*modeΪ1ʱʹ,̶ƫƴС*/ + NET_DVR_FRAMETYPECODE struTokenCode; /*־λ*/ + BYTE byMultiplierValue; /*־λٴγ*/ + BYTE byEternOffset; /*ַƫ*/ + BYTE byCodeMode; /*0,ASCII;1,HEX*/ + BYTE byRes2[9]; //ֽ +}NET_DVR_PACKAGE_LOCATION, *LPNET_DVR_PACKAGE_LOCATION; + + +typedef struct tagNET_DVR_PACKAGE_LENGTH//Ϣ +{ + BYTE byLengthMode; //ͣ0,ɱ䳤;1,̶;2,(ӿлȡ) + BYTE byRes1[3]; // ֽ + DWORD dwFixLength; //modeΪ1ʱʹ,̶ȴС + DWORD dwMaxLength; //Ϣ󳤶 byLengthModeΪ0ʱʹ + DWORD dwMinLength; //ϢС byLengthModeΪ0ʱʹ + BYTE byEndMode; //ɱ䳤 սģʽ 0,ASCII;1,HEX + BYTE byRes2[3]; //ֽ + NET_DVR_FRAMETYPECODE struEndCode; //ɱ䳤ս + DWORD dwLengthPos; //lengthModeΪ2ʱʹãųڱеλ + DWORD dwLengthLen; //lengthModeΪ2ʱʹãųȵij + BYTE byRes3[8]; // ֽ +}NET_DVR_PACKAGE_LENGTH,* LPNET_DVR_PACKAGE_LENGTH; + +typedef struct tagNET_DVR_OSD_POSITION//OSD ӵλ +{ + BYTE byPositionMode; //ӷ񣬹2֣0ʾ1Զ + BYTE byRes1[3]; // ֽ + DWORD dwPosX; //x꣬ӷΪԶʱʹ + DWORD dwPosY; //y꣬ӷΪԶʱʹ + BYTE byRes2[8]; //ֽ +}NET_DVR_OSD_POSITION, *LPNET_DVR_OSD_POSITION; + +typedef struct tagNET_DVR_DATE_FORMAT//ʾʽ +{ + BYTE byMonth; //Month,0.mm;1.mmm;2.mmmm + BYTE byDay; //Day,0.dd; + BYTE byYear; //Year,0.yy;1.yyyy + BYTE byDateForm; //0~5յ + BYTE byRes[20]; // ֽ + char chSeprator[4]; //ָ + char chDisplaySeprator[4]; //ʾָ + BYTE byDisplayForm; //0~53item + BYTE res[27]; // ֽ +}NET_DVR_DATE_FORMAT, *LPNET_DVR_DATE_FORMAT; +typedef struct tagNET_DVRT_TIME_FORMAT//ʱʾʽ +{ + BYTE byTimeForm; //1. HH MM SS;0. HH MM + BYTE byRes1[23]; // ֽ + BYTE byHourMode; //0,12;1,24 + BYTE byRes2[3]; // ֽ + char chSeprator[4]; //ķָʱû + char chDisplaySeprator[4]; //ʾָ + BYTE byDisplayForm; //0~53item + BYTE byRes3[3]; // ֽ + BYTE byDisplayHourMode; //0,12;1,24 + BYTE byRes4[19]; // ֽ +}NET_DVR_TIME_FORMAT, *LPNET_DVR_TIME_FORMAT; + +typedef struct tagNET_DVR_OVERLAY_CHANNEL +{ + BYTE byChannel[64];//ӵͨ ÿֽڱʶһͨ byChannel[0]ֵΪ1Ӧͨ10ʾͨ1 + DWORD dwDelayTime; //ʱʱ + BYTE byEnableDelayTime; //Ƿõʱ + BYTE byRes[11]; // ֽ +}NET_DVR_OVERLAY_CHANNEL, *LPNET_DVR_OVERLAY_CHANNEL; + +// ATM ΪϢ +typedef struct tagNET_DVR_ATM_PACKAGE_ACTION +{ + NET_DVR_PACKAGE_LOCATION struPackageLocation;// λϢ + NET_DVR_OSD_POSITION struOsdPosition; // OSD λ + NET_DVR_FRAMETYPECODE struActionCode; //Ϊ + NET_DVR_FRAMETYPECODE struPreCode; //ַǰַ + BYTE byActionCodeMode; //Ϊģʽ0,ASCII;1,HEX + BYTE byRes[7]; // ֽ +}NET_DVR_ATM_PACKAGE_ACTION, *LPNET_DVR_ATM_PACKAGE_ACTION; + +// ATM DATAϢ +typedef struct tagNET_DVR_ATM_PACKAGE_DATE +{ + NET_DVR_PACKAGE_LOCATION struPackageLocation;// ڱеλϢ + NET_DVR_DATE_FORMAT struDateForm; //ʾʽ + NET_DVR_OSD_POSITION struOsdPosition; // OSDλϢ + BYTE res[8]; // ֽ +}NET_DVR_ATM_PACKAGE_DATE, *LPNET_DVR_ATM_PACKAGE_DATE; + + +//ATMʱϢ +typedef struct tagNET_DVR_ATM_PACKAGE_TIME +{ + NET_DVR_PACKAGE_LOCATION location; // ʱڱеλϢ + NET_DVR_TIME_FORMAT struTimeForm; // ʱʾʽ + NET_DVR_OSD_POSITION struOsdPosition;// OSD λϢ + BYTE byRes[8]; // ֽ +}NET_DVR_ATM_PACKAGE_TIME, *LPNET_DVR_ATM_PACKAGE_TIME; + + +// ATM Ϣţ׽ţ +typedef struct tagNET_DVR_ATM_PACKAGE_OTHERS +{ + NET_DVR_PACKAGE_LOCATION struPackageLocation; //λϢ + NET_DVR_PACKAGE_LENGTH struPackageLength; //Ϣ + NET_DVR_OSD_POSITION struOsdPosition; // OSDλϢ + NET_DVR_FRAMETYPECODE struPreCode; //ַǰַ + BYTE res[8]; //ֽ +}NET_DVR_ATM_PACKAGE_OTHERS, *LPNET_DVR_ATM_PACKAGE_OTHERS; + + +//ûԶЭ +typedef struct tagNET_DVR_ATM_USER_DEFINE_PROTOCOL +{ + NET_DVR_IDENTIFICAT struIdentification; //ı־ + NET_DVR_FILTER struFilter; //ݰ + NET_DVR_ATM_PACKAGE_OTHERS struCardNoPara; //ӿ + NET_DVR_ATM_PACKAGE_ACTION struTradeActionPara[MAX_ACTION_TYPE]; //ӽΪ 0-9 ζӦInCard OutCard OverLay SetTime GetStatus Query WithDraw Deposit ChanPass Transfer + NET_DVR_ATM_PACKAGE_OTHERS struAmountPara; //ӽ׽ + NET_DVR_ATM_PACKAGE_OTHERS struSerialNoPara; //ӽ + NET_DVR_OVERLAY_CHANNEL struOverlayChan; //ͨ + NET_DVR_ATM_PACKAGE_DATE struRes1; //ڣ + NET_DVR_ATM_PACKAGE_TIME struRes2; //ʱ䣬 + BYTE byRes3[124]; // +}NET_DVR_ATM_USER_DEFINE_PROTOCOL, *LPNET_DVR_ATM_USER_DEFINE_PROTOCOL; + +typedef struct tagNET_DVR_ATM_FRAMEFORMAT_V30 +{ + DWORD dwSize; //ṹС + BYTE byEnable; /*Ƿ0,;1,*/ + BYTE byInputMode; /**뷽ʽ:0-1Э顢2-ڼ3-Э*/ + BYTE byRes1[34]; //ֽ + NET_DVR_IPADDR struAtmIp; /*ATM IP ʱʹ */ + WORD wAtmPort; /* Э鷽ʽʱʹ*/ + BYTE byRes2[2]; // ֽ + DWORD dwAtmType; /*ATMЭͣNET_DVR_ATM_PROTOCOLṹлȡΪԶʱʹûԶЭ*/ + NET_DVR_ATM_USER_DEFINE_PROTOCOL struAtmUserDefineProtocol; //ûԶЭ飬ATMΪԶʱҪʹøö + BYTE byRes3[8]; +}NET_DVR_ATM_FRAMEFORMAT_V30, *LPNET_DVR_ATM_FRAMEFORMAT_V30; + +//ATMЭ +typedef enum _ATM_PROTO_TYPE_ +{ + ATM_PROTO_NCR = 0,//NCR + ATM_PROTO_DIEBOLD = 1,//DIEBOLD + ATM_PROTO_WINCOR_NIXDORF = 2,//WINCOR-NIXDORF + ATM_PROTO_SIEMENS = 4,//SIEMENS + ATM_PROTO_OLIVETTI = 5,//OLIVETTI + ATM_PROTO_FUJITSU = 6,//FUJITSU + ATM_PROTO_HITACHI = 7,//HITACHI + ATM_PROTO_SMI = 8,//SMI + ATM_PROTO_BULL = 9,//BULL + ATM_PROTO_YIHUA = 10,// + ATM_PROTO_LIDE = 11,// + ATM_PROTO_GDYT = 12,//ͨ + ATM_PROTO_MINI_BANL = 13,//Mini-Banl + ATM_PROTO_GUANGLI = 14,// + ATM_PROTO_DONGXIN = 15,// + ATM_PROTO_CHENTONG = 16,//ͨ + ATM_PROTO_NANTIAN = 17,// + ATM_PROTO_XIAOXING = 18,// + ATM_PROTO_GZYY = 19,// + ATM_PROTO_QHTLT = 20,//̩ + ATM_PROTO_DRS918 = 21,//DRS918 + ATM_PROTO_KALATEL = 22,//KALATEL + ATM_PROTO_NCR_2 = 23,//NCR_2 + ATM_PROTO_NXS = 24,//NXS + ATM_PROTO_ICBC = 25,// + ATM_PROTO_PSBC = 26,//й + ATM_PROTO_CUSTOM = 1025//Զ +}ATM_PROTO_TYPE; + +typedef struct tagNET_DVR_ATM_PROTO_TYPE +{ + DWORD dwAtmType; //ATMЭͣͬʱΪ ATM еdwAtmType ԶʱΪ1025 + char chDesc[ATM_DESC_LEN]; //ATMЭ +}NET_DVR_ATM_PROTO_TYPE, *LPNET_DVR_ATM_PROTO_TYPE; //ЭϢݽṹ + +typedef struct tagNET_DVR_ATM_PROTO_LIST //ATM Эб +{ + DWORD dwAtmProtoNum; // Эбĸ + NET_DVR_ATM_PROTO_TYPE struAtmProtoType[MAX_ATM_PROTOCOL_NUM]; //ЭбϢ +}NET_DVR_ATM_PROTO_LIST, *LPNET_DVR_ATM_PROTO_LIST; + +typedef struct tagNET_DVR_ATM_PROTOCOL +{ + DWORD dwSize; + NET_DVR_ATM_PROTO_LIST struNetListenList; // Э + NET_DVR_ATM_PROTO_LIST struSerialListenList; //ڼЭ + NET_DVR_ATM_PROTO_LIST struNetProtoList; //Э + NET_DVR_ATM_PROTO_LIST struSerialProtoList; //Э + NET_DVR_ATM_PROTO_TYPE struCustomProto; //ԶЭ +}NET_DVR_ATM_PROTOCOL, *LPNET_DVR_ATM_PROTOCOL; +// SDK_V31 + +/*****************************DS-6001D/F(begin)***************************/ +//DS-6001D Decoder +typedef struct +{ + BYTE byEncoderIP[16]; //豸ӵķIP + BYTE byEncoderUser[16]; //豸ӵķû + BYTE byEncoderPasswd[16]; //豸ӵķ + BYTE bySendMode; //豸ӷģʽ + BYTE byEncoderChannel; //豸ӵķͨ + WORD wEncoderPort; //豸ӵķĶ˿ں + BYTE reservedData[4]; // +}NET_DVR_DECODERINFO, *LPNET_DVR_DECODERINFO; + +typedef struct +{ + BYTE byEncoderIP[16]; //豸ӵķIP + BYTE byEncoderUser[16]; //豸ӵķû + BYTE byEncoderPasswd[16]; //豸ӵķ + BYTE byEncoderChannel; //豸ӵķͨ + BYTE bySendMode; //豸ӵķģʽ + WORD wEncoderPort; //豸ӵķĶ˿ں + DWORD dwConnectState; //豸ӷ״̬ + BYTE reservedData[4]; // +}NET_DVR_DECODERSTATE, *LPNET_DVR_DECODERSTATE; + +/*豸붨*/ +#define NET_DEC_STARTDEC 1 +#define NET_DEC_STOPDEC 2 +#define NET_DEC_STOPCYCLE 3 +#define NET_DEC_CONTINUECYCLE 4 +/*ӵͨ*/ +typedef struct +{ + char sDVRIP[16]; /* DVR IPַ */ + WORD wDVRPort; /* ˿ں */ + BYTE sUserName[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + BYTE byChannel; /* ͨ */ + BYTE byLinkMode; /* ģʽ */ + BYTE byLinkType; /* 0 1 */ +}NET_DVR_DECCHANINFO, *LPNET_DVR_DECCHANINFO; + +/*ÿͨ*/ +typedef struct +{ + BYTE byPoolChans; /*ÿ·ͨϵѭͨ, 4ͨ 0ʾûн*/ + NET_DVR_DECCHANINFO struchanConInfo[MAX_DECPOOLNUM]; + BYTE byEnablePoll; /*ǷѲ 0- 1-*/ + BYTE byPoolTime; /*Ѳʱ 0- 1-10 2-15 3-20 4-30 5-45 6-1 7-2 8-5 */ +}NET_DVR_DECINFO, *LPNET_DVR_DECINFO; + +/*豸*/ +typedef struct +{ + DWORD dwSize; + DWORD dwDecChanNum; /*ͨ*/ + NET_DVR_DECINFO struDecInfo[MAX_DECNUM]; +}NET_DVR_DECCFG, *LPNET_DVR_DECCFG; + +//2005-08-01 +/* 豸͸ͨ */ +typedef struct +{ + DWORD dwEnableTransPort; /* Ƿ͸ͨ 0 1*/ + char sDecoderIP[16]; /* DVR IPַ */ + WORD wDecoderPort; /* ˿ں */ + WORD wDVRTransPort; /* ǰDVRǴ485/2321ʾ232,2ʾ485 */ + char cReserve[4]; +}NET_DVR_PORTINFO, *LPNET_DVR_PORTINFO; + +typedef struct +{ + DWORD dwSize; + NET_DVR_PORTINFO struTransPortInfo[MAX_TRANSPARENTNUM]; /* 0ʾ232 1ʾ485 */ +}NET_DVR_PORTCFG, *LPNET_DVR_PORTCFG; + +/* ļط */ +typedef struct +{ + DWORD dwSize; + char sDecoderIP[16]; /* DVR IPַ */ + WORD wDecoderPort; /* ˿ں */ + WORD wLoadMode; /* طģʽ 1 2ʱ */ + union + { + BYTE byFile[100]; /* طŵļ */ + struct + { + DWORD dwChannel; + BYTE sUserName[NAME_LEN]; /*Ƶû*/ + BYTE sPassword[PASSWD_LEN]; /* */ + NET_DVR_TIME struStartTime; /* ʱطŵĿʼʱ */ + NET_DVR_TIME struStopTime; /* ʱطŵĽʱ */ + }bytime; + }mode_size; +}NET_DVR_PLAYREMOTEFILE, *LPNET_DVR_PLAYREMOTEFILE; + +/*ǰ豸״̬*/ +typedef struct +{ + DWORD dwWorkType; /*ʽ1Ѳ2̬ӽ롢3ļط 4ʱط*/ + char sDVRIP[16]; /*ӵ豸ip*/ + WORD wDVRPort; /*Ӷ˿ں*/ + BYTE byChannel; /* ͨ */ + BYTE byLinkMode; /* ģʽ */ + DWORD dwLinkType; /* 0 1*/ + union + { + struct + { + BYTE sUserName[NAME_LEN]; /*Ƶû*/ + BYTE sPassword[PASSWD_LEN]; /* */ + char cReserve[52]; + }userInfo; + struct + { + BYTE fileName[100]; + }fileInfo; + struct + { + DWORD dwChannel; + BYTE sUserName[NAME_LEN]; /*Ƶû*/ + BYTE sPassword[PASSWD_LEN]; /* */ + NET_DVR_TIME struStartTime; /* ʱطŵĿʼʱ */ + NET_DVR_TIME struStopTime; /* ʱطŵĽʱ */ + }timeInfo; + }objectInfo; +}NET_DVR_DECCHANSTATUS, *LPNET_DVR_DECCHANSTATUS; + +typedef struct +{ + DWORD dwSize; + NET_DVR_DECCHANSTATUS struDecState[MAX_DECNUM]; +}NET_DVR_DECSTATUS, *LPNET_DVR_DECSTATUS; +/*****************************DS-6001D/F(end)***************************/ + +//ַ(ӽṹ) +typedef struct +{ + WORD wShowString; // ԤͼǷʾַ,0-ʾ,1-ʾ ԤС704*576,ַĴСΪ32*32 + WORD wStringSize; /* ַijȣܴ44ַ */ + WORD wShowStringTopLeftX; /* ַʾλõx */ + WORD wShowStringTopLeftY; /* ַʾλõy */ + char sString[44]; /* Ҫʾַ */ +}NET_DVR_SHOWSTRINGINFO, *LPNET_DVR_SHOWSTRINGINFO; + +//ַ(9000չ) +typedef struct +{ + DWORD dwSize; + NET_DVR_SHOWSTRINGINFO struStringInfo[MAX_STRINGNUM_V30]; /* Ҫʾַ */ +}NET_DVR_SHOWSTRING_V30, *LPNET_DVR_SHOWSTRING_V30; + +//ַչ(8ַ) +typedef struct +{ + DWORD dwSize; + NET_DVR_SHOWSTRINGINFO struStringInfo[MAX_STRINGNUM_EX]; /* Ҫʾַ */ +}NET_DVR_SHOWSTRING_EX, *LPNET_DVR_SHOWSTRING_EX; + +//ַ +typedef struct +{ + DWORD dwSize; + NET_DVR_SHOWSTRINGINFO struStringInfo[MAX_STRINGNUM]; /* Ҫʾַ */ +}NET_DVR_SHOWSTRING, *LPNET_DVR_SHOWSTRING; + +/****************************DS9000ṹ(begin)******************************/ +/* +EMAILṹ +*/ +typedef struct +{ + DWORD dwSize; + BYTE sAccount[NAME_LEN]; /* ˺*/ + BYTE sPassword[MAX_EMAIL_PWD_LEN]; /* */ + struct + { + BYTE sName[NAME_LEN]; /* */ + BYTE sAddress[MAX_EMAIL_ADDR_LEN]; /* ˵ַ */ + }struSender; + BYTE sSmtpServer[MAX_EMAIL_ADDR_LEN]; /* smtp */ + BYTE sPop3Server[MAX_EMAIL_ADDR_LEN]; /* pop3 */ + struct + { + BYTE sName[NAME_LEN]; /* ռ */ + BYTE sAddress[MAX_EMAIL_ADDR_LEN]; /* ռ˵ַ */ + }struReceiver[3]; /* 3ռ */ + BYTE byAttachment; /* Ƿ */ + BYTE bySmtpServerVerify; /* ͷҪ֤ */ + BYTE byMailInterval; /* mail interval */ + BYTE byEnableSSL; //sslǷ9000_1.1 + WORD wSmtpPort; //gmail465ͨΪ25 + BYTE byEnableTLS; /*TLSǷ*/ + BYTE byStartTLS; /*ǷStartTLS*/ + BYTE byRes[72]; /**/ +} NET_DVR_EMAILCFG_V30, *LPNET_DVR_EMAILCFG_V30; + +/* +DVRʵѲݽṹ +*/ +typedef struct +{ + DWORD dwSize; + BYTE byPresetNo[CRUISE_MAX_PRESET_NUMS]; /* Ԥõ */ + BYTE byCruiseSpeed[CRUISE_MAX_PRESET_NUMS]; /* Ѳٶ */ + WORD wDwellTime[CRUISE_MAX_PRESET_NUMS]; /* ͣʱ */ + BYTE byEnableThisCruise; /* Ƿ */ + BYTE res[15]; +}NET_DVR_CRUISE_PARA, *LPNET_DVR_CRUISE_PARA; +/****************************DS9000ṹ(end)******************************/ + +//ʱ +typedef struct +{ + DWORD dwMonth; // 0-11ʾ1-12 + DWORD dwWeekNo; //ڼ 01 12 23 34 4һ + DWORD dwWeekDate; //ڼ 0 1һ 2ڶ 3 4 5 6 + DWORD dwHour; //Сʱ ʼʱ023 ʱ123 + DWORD dwMin; // 059 +}NET_DVR_TIMEPOINT; + +//ʱ +typedef struct +{ + DWORD dwSize; + DWORD dwZoneIndex; //ӦòʹNET_DVR_NTPPARA еcTimeDifferenceH cTimeDifferenceM ʱ˴ûȡֵ䣬ûṩ༭ + BYTE byRes1[12]; // + DWORD dwEnableDST; //Ƿʱ 0 1 + BYTE byDSTBias; //ʱƫֵ30min, 60min, 90min, 120min, ԷӼƣԭʼֵ + BYTE byRes2[3]; + NET_DVR_TIMEPOINT struBeginPoint; //ʱƿʼʱ + NET_DVR_TIMEPOINT struEndPoint; //ʱֹͣʱ +}NET_DVR_ZONEANDDST, *LPNET_DVR_ZONEANDDST; + +//ͼƬ +typedef struct +{ +/*ע⣺ͼѹֱΪVGAʱ֧0=CIF, 1=QCIF, 2=D1ץͼ +ֱΪ3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6=VGA,7=XVGA, 8=HD900p + ֵ֧ǰֱʵץͼ*/ + + /* ͨȡ + 0-CIF 1-QCIF 2-D1 3-UXGA(1600x1200), 4-SVGA(800x600),5-HD720p(1280x720) + 6-VGA 7-XVGA 8-HD900p 9-HD1080 10-2560*1920 + 11-1600*304 12-2048*1536 13-2448*2048, 14-2448*1200 15-2448*800 + 16-XGA(1024*768), 17-SXGA(1280*1024),18-WD1(960*576/960*480), 19-1080i, 20-576*576 + 21-1536*1536, 22-1920*1920, 23-320*240, 24-720*720, 25-1024*768, + 26-1280*1280, 27-1600*600, 28-2048*768, 29-160*120, 55-3072*2048, + 64-3840*2160, 70-2560*1440, 75-336*256, + 78-384*256, 79-384*216, 80-320*256, 82-320*192, 83-512*384, + 127-480*272, 128-512*272, 161-288*320, 162-144*176, 163-480*640, + 164-240*320, 165-120*160, 166-576*720, 167-720*1280, 168-576*960, + 180-180*240, 181-360*480, 182-540*720, 183-720*960, 184-960*1280, + 185-1080*1440, 215-1080*720(ռλδ), 216-360x640(ռλδ),245-576*704(ռλδ) + 500-384*288, + 0xff-Auto(ʹõǰֱ) + */ + WORD wPicSize; + WORD wPicQuality; /* ͼƬϵ 0- 1-Ϻ 2-һ */ +}NET_DVR_JPEGPARA, *LPNET_DVR_JPEGPARA; + +//ṹ +typedef struct tagNET_VCA_RECT +{ + float fX; //߽ϽǵX, 0.000~1 + float fY; //߽ϽǵY, 0.000~1 + float fWidth; //߽Ŀ, 0.000~1 + float fHeight; //߽ĸ߶, 0.000~1 +}NET_VCA_RECT, *LPNET_VCA_RECT; + +typedef struct tagNET_DVR_JPEGPICTURE_WITH_APPENDDATA +{ + DWORD dwSize; + DWORD dwChannel;//ͨ + DWORD dwJpegPicLen;//JpegͼƬ + char *pJpegPicBuff;//JpegͼƬָ + DWORD dwJpegPicWidth; // ͼ + DWORD dwJpegPicHeight; //ͼ߶ + DWORD dwP2PDataLen;//ȫݳ + char *pP2PDataBuff; //ȫָ + BYTE byIsFreezedata;//Ƿݶ 0- 1- + BYTE byRes1[3]; + DWORD dwVisiblePicLen;//ɼͼƬ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char *pVisiblePicBuff;//ɼͼƬָ +#else + char *pVisiblePicBuff;//ɼͼƬָ + BYTE byRes2[4]; +#endif + NET_VCA_RECT struThermalValidRect;//ȳЧ + NET_VCA_RECT struVisibleValidRect;//ɼЧ + BYTE byRes[208]; +}NET_DVR_JPEGPICTURE_WITH_APPENDDATA, *LPNET_DVR_JPEGPICTURE_WITH_APPENDDATA; + +//ץͼ +typedef struct +{ + NET_DVR_JPEGPARA struParam; + BYTE byPicFormat; // 豸ץͼͼƬʽ 0-Jpeg + /* + 豸ץͼ: + 0-豸ͨץͼ1-ӥ۱궨ͼƬFPJAˢ»ȡͼƬ ʱ3min,2-FlashлȡѴӥ۱궨ͼƬ, + 3-ȡԲͼƬ,4-רøץͼ,5-ȡװȫչͼͼ + */ + BYTE byCapturePicType; + BYTE bySceneID; //0-֧֣1-12-2 + BYTE byRes[253]; +}NET_DVR_PICPARAM_V50, *LPNET_DVR_PICPARAM_V50; +/* aux video out parameter */ +// +typedef struct +{ + DWORD dwSize; + DWORD dwAlarmOutChan; /* ѡ񱨾󱨾ͨлʱ䣺1ͨ: 0:/1:1/2:2/3:3/4:4 */ + DWORD dwAlarmChanSwitchTime; /* :1 - 10:10 */ + DWORD dwAuxSwitchTime[MAX_AUXOUT]; /* лʱ: 0-л,1-5s,2-10s,3-20s,4-30s,5-60s,6-120s,7-300s */ + BYTE byAuxOrder[MAX_AUXOUT][MAX_WINDOW]; /* Ԥ˳, 0xffʾӦĴڲԤ */ +}NET_DVR_AUXOUTCFG, *LPNET_DVR_AUXOUTCFG; + + +//ntp +typedef struct +{ + BYTE sNTPServer[64]; /* Domain Name or IP addr of NTP server */ + WORD wInterval; /* adjust time interval(hours) */ + BYTE byEnableNTP; /* enable NPT client 0-no1-yes*/ + signed char cTimeDifferenceH; /* ʱ׼ʱ Сʱƫ-12 ... +13 */ + signed char cTimeDifferenceM;/* ʱ׼ʱ ƫ0, 30, 45*/ + BYTE res1; + WORD wNtpPort; /* ntp server port 9000 豸ĬΪ123*/ + BYTE res2[8]; +}NET_DVR_NTPPARA, *LPNET_DVR_NTPPARA; + +//ddns +typedef struct +{ + BYTE sUsername[NAME_LEN]; /* DDNS˺û/ */ + BYTE sPassword[PASSWD_LEN]; + BYTE sDomainName[64]; /* */ + BYTE byEnableDDNS; /*ǷӦ 0-1-*/ + BYTE res[15]; +}NET_DVR_DDNSPARA, *LPNET_DVR_DDNSPARA; + + +typedef struct +{ + BYTE byHostIndex; /* 0-˽DDNS 1Dyndns 2PeanutHull()*/ + BYTE byEnableDDNS; /*ǷӦDDNS 0-1-*/ + WORD wDDNSPort; /* DDNS˿ں */ + BYTE sUsername[NAME_LEN]; /* DDNSû*/ + BYTE sPassword[PASSWD_LEN]; /* DDNS */ + BYTE sDomainName[MAX_DOMAIN_NAME]; /* 豸䱸ַ */ + BYTE sServerName[MAX_DOMAIN_NAME]; /* DDNS ӦķַIPַ */ + BYTE byRes[16]; +}NET_DVR_DDNSPARA_EX, *LPNET_DVR_DDNSPARA_EX; + +//9000չ +typedef struct +{ + BYTE byEnableDDNS; + BYTE byHostIndex;/*0-IPServer 1Dyndns 2PeanutHull()3- NO-IP, 4- hiDDNS*/ + BYTE byRes1[2]; + struct + { + BYTE sUsername[NAME_LEN]; /* DDNS˺û*/ + BYTE sPassword[PASSWD_LEN]; /* */ + BYTE sDomainName[MAX_DOMAIN_NAME]; /* 豸䱸ַ */ + BYTE sServerName[MAX_DOMAIN_NAME]; /* DDNSЭӦķַIPַ */ + WORD wDDNSPort; /* ˿ں */ + WORD wCountryID; //ұţbyHostIndex = 4ʱЧ0ʾĬ + BYTE byStatus; /* DDNS״ֻ̬ + 0- + 1-ӷʧ(connServerfail) + 2-Ϣʧ(solveServerMesFail) + 3-ʧ(connHeartSrvfail) + 4-Ϣʧ(solveHeartSrvMesFail) + 5-ʧ(connHostSrvfail) + 6-Ϣʧ(solveHostSrvMesFail) + 7-DDNS״̬(updateSuccess) + 8-δ(disable) + 9-עɹ(registHostSuccess) + 10-DNSô(DNSSrvError) + 11-ռ(DomainConflict) + 12-()Ϸ(invalidAlias) + 13-Ȩʧ(authenticationFail) + 14-ע(registServerError) + 15-עʧ(registFail) + */ + BYTE byRes[7]; + } struDDNS[MAX_DDNS_NUMS]; + BYTE byRes2[16]; +}NET_DVR_DDNSPARA_V30, *LPNET_DVR_DDNSPARA_V30; + +//email +typedef struct +{ + BYTE sUsername[64]; /* ʼ˺/ */ + BYTE sPassword[64]; + BYTE sSmtpServer[64]; + BYTE sPop3Server[64]; + BYTE sMailAddr[64]; /* email */ + BYTE sEventMailAddr1[64]; /* ϴ/쳣ȵemail */ + BYTE sEventMailAddr2[64]; + BYTE res[16]; +}NET_DVR_EMAILPARA, *LPNET_DVR_EMAILPARA; + +// +typedef struct +{ + DWORD dwSize; + char sDNSIp[16]; /* DNSַ */ + NET_DVR_NTPPARA struNtpClientParam; /* NTP */ + NET_DVR_DDNSPARA struDDNSClientParam; /* DDNS */ + BYTE res[464]; /* */ +}NET_DVR_NETAPPCFG, *LPNET_DVR_NETAPPCFG; + +//nfsṹ +typedef struct +{ + char sNfsHostIPAddr[16]; + BYTE sNfsDirectory[PATHNAME_LEN]; // PATHNAME_LEN = 128 +}NET_DVR_SINGLE_NFS, *LPNET_DVR_SINGLE_NFS; + +typedef struct +{ + DWORD dwSize; + NET_DVR_SINGLE_NFS struNfsDiskParam[MAX_NFS_DISK]; +}NET_DVR_NFSCFG, *LPNET_DVR_NFSCFG; + +typedef struct tagNET_DVR_ISCSI_CFG +{ + DWORD dwSize; // ṹС + WORD wVrmPort; // VRM ˿ + BYTE byEnable; // Ƿ ISCSI洢 + BYTE byRes[69]; // ֽ + NET_DVR_IPADDR struVrmAddr; // VRM ipַ 16λ + char chNvtIndexCode[64]; //nvt index Code +}NET_DVR_ISCSI_CFG, *LPNET_DVR_ISCSI_CFG; + +//Ѳ(˽IPר) +typedef struct +{ + BYTE PresetNum; //Ԥõ + BYTE Dwell; //ͣʱ + BYTE Speed; //ٶ + BYTE Reserve; // +}NET_DVR_CRUISE_POINT, *LPNET_DVR_CRUISE_POINT; + +typedef struct +{ + NET_DVR_CRUISE_POINT struCruisePoint[32]; //֧32Ѳ +}NET_DVR_CRUISE_RET, *LPNET_DVR_CRUISE_RET; + +/************************************·(begin)***************************************/ +typedef struct +{ + DWORD dwSize; + char sFirstDNSIP[16]; + char sSecondDNSIP[16]; + char sRes[32]; +}NET_DVR_NETCFG_OTHER, *LPNET_DVR_NETCFG_OTHER; + +typedef struct +{ + char sDVRIP[16]; /* DVR IPַ */ + WORD wDVRPort; /* ˿ں */ + BYTE byChannel; /* ͨ */ + BYTE byTransProtocol; /* Э 0-TCP, 1-UDP */ + BYTE byTransMode; /* ģʽ 0 1*/ + BYTE byRes[3]; + BYTE sUserName[NAME_LEN]; /* ½ʺ */ + BYTE sPassword[PASSWD_LEN]; /* */ +}NET_DVR_MATRIX_DECINFO, *LPNET_DVR_MATRIX_DECINFO; + +///ֹ̬ͣ +typedef struct +{ + DWORD dwSize; + NET_DVR_MATRIX_DECINFO struDecChanInfo; /* ̬ͨϢ */ +}NET_DVR_MATRIX_DYNAMIC_DEC, *LPNET_DVR_MATRIX_DYNAMIC_DEC; + +typedef struct +{ + DWORD dwSize; + DWORD dwIsLinked; /* ͨ״̬ 0 1 2 3-ڽ */ + DWORD dwStreamCpRate; /* Stream copy rate, X kbits/second */ + char cRes[64]; /* */ +}NET_DVR_MATRIX_DEC_CHAN_STATUS, *LPNET_DVR_MATRIX_DEC_CHAN_STATUS; + +typedef struct +{ + DWORD dwSize; + NET_DVR_MATRIX_DECINFO struDecChanInfo; /* ͨϢ */ + DWORD dwDecState; /* 0-̬ 1ѭ 2ʱط 3ļط */ + NET_DVR_TIME StartTime; /* ʱطſʼʱ */ + NET_DVR_TIME StopTime; /* ʱطֹͣʱ */ + char sFileName[128]; /* ļطļ */ +}NET_DVR_MATRIX_DEC_CHAN_INFO, *LPNET_DVR_MATRIX_DEC_CHAN_INFO; + +//ӵͨ 2007-11-05 +typedef struct +{ + DWORD dwEnable; /* Ƿ 0 1*/ + NET_DVR_MATRIX_DECINFO struDecChanInfo; /* ѲͨϢ */ +}NET_DVR_MATRIX_DECCHANINFO, *LPNET_DVR_MATRIX_DECCHANINFO; + +//2007-11-05 ÿͨ +typedef struct +{ + DWORD dwSize; + DWORD dwPoolTime; /*Ѳʱ */ + NET_DVR_MATRIX_DECCHANINFO struchanConInfo[MAX_CYCLE_CHAN]; +}NET_DVR_MATRIX_LOOP_DECINFO, *LPNET_DVR_MATRIX_LOOP_DECINFO; + +//2007-12-22 +typedef struct +{ + BYTE baudrate; /* */ + BYTE databits; /* λ */ + BYTE stopbits; /* ֹͣλ */ + BYTE parity; /* żУλ */ + BYTE flowcontrol; /* */ + BYTE res[3]; +}TTY_CONFIG, *LPTTY_CONFIG; + +typedef struct +{ + BYTE byTranChanEnable; /* ǰ͸ͨǷ 0ر 1 */ + /* + * ·1485ڣ1232ڶΪ͸ͨ,豸ŷ£ + * 0 RS485 + * 1 RS232 Console + */ + BYTE byLocalSerialDevice; /* Local serial device */ + /* + * Զ̴,һRS232һRS485 + * 1ʾ232 + * 2ʾ485 + */ + BYTE byRemoteSerialDevice; /* Remote output serial device */ + BYTE res1; /* */ + char sRemoteDevIP[16]; /* Remote Device IP */ + WORD wRemoteDevPort; /* Remote Net Communication Port */ + BYTE res2[2]; /* */ + TTY_CONFIG RemoteSerialDevCfg; +}NET_DVR_MATRIX_TRAN_CHAN_INFO, *LPNET_DVR_MATRIX_TRAN_CHAN_INFO; + +typedef struct +{ + DWORD dwSize; + BYTE by232IsDualChan; /* ·232͸ͨȫ˫ ȡֵ1MAX_SERIAL_NUM */ + BYTE by485IsDualChan; /* ·485͸ͨȫ˫ ȡֵ1MAX_SERIAL_NUM */ + BYTE res[2]; /* */ + NET_DVR_MATRIX_TRAN_CHAN_INFO struTranInfo[MAX_SERIAL_NUM];/*ͬʱֽ֧MAX_SERIAL_NUM͸ͨ*/ +}NET_DVR_MATRIX_TRAN_CHAN_CONFIG, *LPNET_DVR_MATRIX_TRAN_CHAN_CONFIG; + +//2007-12-24 Merry Christmas Eve... +typedef struct +{ + DWORD dwSize; + char sDVRIP[16]; /* DVR IPַ */ + WORD wDVRPort; /* ˿ں */ + BYTE byChannel; /* ͨ */ + BYTE byReserve; + BYTE sUserName[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + DWORD dwPlayMode; /* 0ļ 1ʱ*/ + NET_DVR_TIME StartTime; + NET_DVR_TIME StopTime; + char sFileName[128]; +}NET_DVR_MATRIX_DEC_REMOTE_PLAY, *LPNET_DVR_MATRIX_DEC_REMOTE_PLAY; + +/* ļ */ +#define NET_DVR_PLAYSTART 1//ʼ +#define NET_DVR_PLAYSTOP 2//ֹͣ +#define NET_DVR_PLAYPAUSE 3//ͣ +#define NET_DVR_PLAYRESTART 4//ָ +#define NET_DVR_PLAYFAST 5// +#define NET_DVR_PLAYSLOW 6// +#define NET_DVR_PLAYNORMAL 7//ٶ +#define NET_DVR_PLAYSTARTAUDIO 9// +#define NET_DVR_PLAYSTOPAUDIO 10//ر +#define NET_DVR_PLAYSETPOS 12//ıļطŵĽ +#define NET_DVR_RESETBUFFER 37 //վ뻺Զ̻طļ + +typedef struct +{ + DWORD dwSize; + DWORD dwPlayCmd; /* ļ*/ + DWORD dwCmdParam; /* */ +}NET_DVR_MATRIX_DEC_REMOTE_PLAY_CONTROL, *LPNET_DVR_MATRIX_DEC_REMOTE_PLAY_CONTROL; + +typedef struct +{ + DWORD dwSize; + DWORD dwCurMediaFileLen; /* ǰŵýļ */ + DWORD dwCurMediaFilePosition; /* ǰļIJλ */ + DWORD dwCurMediaFileDuration; /* ǰļʱ */ + DWORD dwCurPlayTime; /* ǰѾŵʱ */ + DWORD dwCurMediaFIleFrames; /* ǰļ֡ */ + DWORD dwCurDataType; /* ǰͣ19-ļͷ20-ݣ 21-Ž־ */ + BYTE res[72]; +}NET_DVR_MATRIX_DEC_REMOTE_PLAY_STATUS, *LPNET_DVR_MATRIX_DEC_REMOTE_PLAY_STATUS; + +//2009-4-11 added by likui ·new +typedef struct tagNET_MATRIX_PASSIVEMODE +{ + WORD wTransProtol; //Э飬0-TCP, 1-UDP, 2-MCAST + WORD wPassivePort; //UDP˿, TCPʱĬ + NET_DVR_IPADDR struMcastIP; //TCP,UDPʱЧ, MCASTʱΪಥַ + BYTE byStreamType;/* ݲģʽ:REAL_TIME_STREAM(1)ʵʱ,RECORD_STREAM(2)ļ */ + BYTE byRes[7]; +}NET_DVR_MATRIX_PASSIVEMODE, *LPNET_DVR_MATRIX_PASSIVEMODE; + +typedef struct tagNET_DVR_MATRIX_TRAN_CHAN_INFO_V30 +{ + BYTE byTranChanEnable; /* ǰ͸ͨǷ 0ر 1 */ + BYTE byLocalSerialDevice; /* Local serial device */ + /* + * ·1485ڣ1232ڶΪ͸ͨ,豸ŷ£ + * 0 RS485 + * 1 RS232 Console + * 2 Dual Scom + */ + BYTE byRemoteSerialDevice; /* Remote output serial device */ + /* + * Զ̴,һRS232һRS485 + * 1 ʾ232 + * 2 ʾ485 + */ + BYTE byRes1; /* */ + NET_DVR_IPADDR struRemoteDevIP; /* Remote Device IP */ + WORD wRemoteDevPort; /* Remote Net Communication Port */ + BYTE byIsEstablished; /* ͸ͨɹ־0-ûгɹ1-ɹ */ + BYTE byRes2; /* */ + TTY_CONFIG RemoteSerialDevCfg; + BYTE byUsername[NAME_LEN]; + BYTE byPassword[PASSWD_LEN]; + DWORD dwLocalSerialNo; /* ش */ + DWORD dwRemoteSerialNo; /* Զ̴ */ + BYTE byRes3[8]; +} NET_DVR_MATRIX_TRAN_CHAN_INFO_V30,*LPNET_DVR_MATRIX_TRAN_CHAN_INFO_V30; + +typedef struct tagMATRIX_TRAN_CHAN_CONFIG +{ + DWORD dwSize; + BYTE by232IsDualChan; /* ·232͸ͨȫ˫ ȡֵ1MAX_SERIAL_NUM */ + BYTE by485IsDualChan; /* ·485͸ͨȫ˫ ȡֵ1MAX_SERIAL_NUM */ + BYTE byRes[2]; /* */ + NET_DVR_MATRIX_TRAN_CHAN_INFO_V30 struTranInfo[MAX_SERIAL_NUM]; /*ͬʱֽ֧MAX_SERIAL_NUM͸ͨ*/ +}NET_DVR_MATRIX_TRAN_CHAN_CONFIG_V30,*LPNET_DVR_MATRIX_TRAN_CHAN_CONFIG_V30; + +typedef struct +{ + DWORD dwEnable; /* Ƿ 0 1*/ + NET_DVR_STREAM_MEDIA_SERVER_CFG streamMediaServerCfg; + NET_DVR_DEV_CHAN_INFO struDevChanInfo; /* ѲͨϢ */ +}NET_DVR_MATRIX_CHAN_INFO_V30,*LPNET_DVR_CYC_SUR_CHAN_ELE_V30; + +typedef struct tagMATRIX_LOOP_DECINFO_V30 +{ + DWORD dwSize; + DWORD dwPoolTime; /*Ѳ*/ + NET_DVR_MATRIX_CHAN_INFO_V30 struchanConInfo[MAX_CYCLE_CHAN_V30]; + BYTE byRes[16]; +} NET_DVR_MATRIX_LOOP_DECINFO_V30,*LPNET_DVR_MATRIX_LOOP_DECINFO_V30; + + +typedef struct tagDEC_MATRIX_CHAN_INFO_V30 +{ + DWORD dwSize; + NET_DVR_STREAM_MEDIA_SERVER_CFG streamMediaServerCfg; /*ý*/ + NET_DVR_DEV_CHAN_INFO struDevChanInfo; /* ͨϢ */ + DWORD dwDecState; /* 0-̬ 1ѭ 2ʱط 3ļط */ + NET_DVR_TIME StartTime; /* ʱطſʼʱ */ + NET_DVR_TIME StopTime; /* ʱطֹͣʱ */ + char sFileName[128]; /* ļطļ */ + DWORD dwGetStreamMode; /*ȡģʽ:1-2-*/ + NET_DVR_MATRIX_PASSIVEMODE struPassiveMode; + BYTE byRes[32]; +}NET_DVR_MATRIX_DEC_CHAN_INFO_V30,*LPNET_DVR_MATRIX_DEC_CHAN_INFO_V30; + +#define MAX_RESOLUTIONNUM 64 //ֱֵ֧Ŀ +typedef struct tagNET_DVR_MATRIX_ABILITY +{ + DWORD dwSize; + BYTE byDecNums; + BYTE byStartChan; + BYTE byVGANums; + BYTE byBNCNums; + BYTE byVGAWindowMode[8][12]; /*VGAֵ֧ĴģʽVGA1ɻ*/ + BYTE byBNCWindowMode[4]; /*BNCֵ֧Ĵģʽ*/ + BYTE byDspNums; + BYTE byHDMINums;//HDMIʾͨ25ʼ + BYTE byDVINums;//DVIʾͨ29ʼ + BYTE byRes1[13]; + BYTE bySupportResolution[MAX_RESOLUTIONNUM];//öٶ,һֽڴһֱ//֧֣1֧֣0֧ + BYTE byHDMIWindowMode[4][8];//HDMIֵ֧Ĵģʽ + BYTE byDVIWindowMode[4][8];//DVIֵ֧Ĵģʽ + BYTE byRes2[24]; +}NET_DVR_MATRIX_ABILITY, *LPNET_DVR_MATRIX_ABILITY; +//ϴlogoṹ +typedef struct tagNET_DVR_DISP_LOGOCFG +{ + DWORD dwCorordinateX; //ͼƬʾX + DWORD dwCorordinateY; //ͼƬʾY + WORD wPicWidth; //ͼƬ + WORD wPicHeight; //ͼƬ + BYTE byRes1[4]; + BYTE byFlash; //Ƿ˸1-˸0-˸ + BYTE byTranslucent; //Ƿ͸1-͸0-͸ + BYTE byRes2[6]; // + DWORD dwLogoSize;//LOGOСBMPļͷ +}NET_DVR_DISP_LOGOCFG,*LPNET_DVR_DISP_LOGOCFG; + +/**/ +#define NET_DVR_ENCODER_UNKOWN 0 /*δ֪ʽ*/ +#define NET_DVR_ENCODER_H264 1 /*˽ 264*/ +#define NET_DVR_ENCODER_S264 2 /*Standard H264*/ +#define NET_DVR_ENCODER_MPEG4 3 /*MPEG4*/ +#define NET_DVR_ORIGINALSTREAM 4 /*Original Stream*/ +#define NET_DVR_PICTURE 5/*Picture*/ +#define NET_DVR_ENCODER_MJPEG 6 +#define NET_DVR_ENCODER_MPEG2 7 +#define NET_DVR_ENCODER_H265 8 +#define NET_DVR_ENCODER_SVAC 9 +#define NET_DVR_ENCODER_SMART264 10/*Smart 264*/ +#define NET_DVR_ENCODER_SMART265 11/*Smart 265*/ + +/* ʽ */ +#define NET_DVR_STREAM_TYPE_UNKOWN 0 /*δ֪ʽ*/ +#define NET_DVR_STREAM_TYPE_PRIVT 1 /*˽иʽ*/ +#define NET_DVR_STREAM_TYPE_TS 7 /* TS */ +#define NET_DVR_STREAM_TYPE_PS 8 /* PS */ +#define NET_DVR_STREAM_TYPE_RTP 9 /* RTP */ +#define NET_DVR_STREAM_TYPE_ORIGIN 10 //δ(Ƶۺƽ̨ϵͳ) + +/*ͨ״̬*/ +typedef struct +{ + BYTE byDecodeStatus; /*ǰ״̬:0:δ1*/ + BYTE byStreamType; /**/ + BYTE byPacketType; /*ʽ*/ + BYTE byRecvBufUsage; /*ջʹ*/ + BYTE byDecBufUsage; /*뻺ʹ*/ + BYTE byFpsDecV; /*Ƶ֡*/ + BYTE byFpsDecA; /*Ƶ֡*/ + BYTE byCpuLoad; /*DSP CPUʹ*/ + BYTE byRes1[4]; + DWORD dwDecodedV; /*Ƶ֡*/ + DWORD dwDecodedA; /*Ƶ֡*/ + WORD wImgW; /*ǰͼС,*/ + WORD wImgH; // + BYTE byVideoFormat; /*Ƶʽ:0-NON,NTSC--1,PAL--2*/ + BYTE byRes2[3]; + DWORD dwDecChan; /*ȡȫͨ״̬ʱЧʱ0*/ + BYTE byRes3[20]; +}NET_DVR_MATRIX_CHAN_STATUS, *LPNET_DVR_MATRIX_CHAN_STATUS; + +/*ʾͨ״̬*/ +#define NET_DVR_MAX_DISPREGION 16 /*ÿʾͨʾĴ*/ +//ֱ +// +typedef enum +{ + /*VGA*/ + VGA_NOT_AVALIABLE, + VGA_THS8200_MODE_SVGA_60HZ, //(800*600) + VGA_THS8200_MODE_SVGA_75HZ, //(800*600) + VGA_THS8200_MODE_XGA_60HZ, //(1024*768) + VGA_THS8200_MODE_XGA_75HZ, //(1024*768) + VGA_THS8200_MODE_SXGA_60HZ, //(1280*1024) + VGA_THS8200_MODE_720P_60HZ, //(1280*720) + VGA_THS8200_MODE_1080I_60HZ, //(1920*1080) + VGA_THS8200_MODE_1080P_30HZ, //(1920*1080) + VGA_THS8200_MODE_UXGA_30HZ, //(1600*1200) + /*HDMI*/ + HDMI_SII9134_MODE_XGA_60HZ, //(1024*768) + HDMI_SII9134_MODE_SXGA_60HZ, //(1280*1024) + HDMI_SII9134_MODE_SXGA2_60HZ, //(1280*960) + HDMI_SII9134_MODE_720P_60HZ, //(1280*720) + HDMI_SII9134_MODE_720P_50HZ, //(1280*720) + HDMI_SII9134_MODE_1080I_60HZ, //(1920*1080) + HDMI_SII9134_MODE_1080I_50HZ, //(1920*1080) + HDMI_SII9134_MODE_1080P_25HZ, //(1920*1080) + HDMI_SII9134_MODE_1080P_30HZ, //(1920*1080) + HDMI_SII9134_MODE_1080P_50HZ, //(1920*1080) + HDMI_SII9134_MODE_1080P_60HZ, //(1920*1080) + HDMI_SII9134_MODE_UXGA_60HZ, //(1600*1200) + /*DVI*/ + DVI_SII9134_MODE_XGA_60HZ, //(1024*768) + DVI_SII9134_MODE_SXGA_60HZ, //(1280*1024) + DVI_SII9134_MODE_SXGA2_60HZ, //(1280*960) + DVI_SII9134_MODE_720P_60HZ, //(1280*720) + DVI_SII9134_MODE_720P_50HZ, //(1280*720) + DVI_SII9134_MODE_1080I_60HZ, //(1920*1080) + DVI_SII9134_MODE_1080I_50HZ, //(1920*1080) + DVI_SII9134_MODE_1080P_25HZ, //(1920*1080) + DVI_SII9134_MODE_1080P_30HZ, //(1920*1080) + DVI_SII9134_MODE_1080P_50HZ, //(1920*1080) + DVI_SII9134_MODE_1080P_60HZ, //(1920*1080) + DVI_SII9134_MODE_UXGA_60HZ, //(1600*1200) + VGA_DECSVR_MODE_SXGA2_60HZ, + HDMI_DECSVR_MODE_1080P_24HZ, + DVI_DECSVR_MODE_1080P_24HZ, + YPbPr_DECSVR_MODE_720P_60HZ, + YPbPr_DECSVR_MODE_1080I_60HZ +}VGA_MODE; + +//֡ʶ +#define LOW_DEC_FPS_1_2 51 +#define LOW_DEC_FPS_1_4 52 +#define LOW_DEC_FPS_1_8 53 +#define LOW_DEC_FPS_1_16 54 + +/*Ƶʽ׼*/ +typedef enum +{ + VS_NON = 0, + VS_NTSC = 1, + VS_PAL = 2 +}VIDEO_STANDARD; + +typedef struct tagNET_DVR_VGA_DISP_CHAN_CFG +{ + DWORD dwSize; + BYTE byAudio; /*ƵǷ,0-1-*/ + BYTE byAudioWindowIdx; /*ƵӴ*/ + BYTE byVgaResolution; /*VGAķֱ*/ + BYTE byVedioFormat; /*1:NTSC,2:PAL,0-NULL*/ + DWORD dwWindowMode; /*ģʽ,ȡ,Ŀǰ֧1,2,4,9,16*/ + BYTE byJoinDecChan[MAX_WINDOWS];/*ӴڹĽͨ*/ + BYTE byEnlargeStatus; /*ǷڷŴ״̬0Ŵ1Ŵ*/ + BYTE byEnlargeSubWindowIndex;//ŴӴں + union + { + BYTE byRes[16]; + struct + { + /*ӴڶӦͨӦĽϵͳIJλ(Ƶۺƽ̨нϵͳЧ)*/ + BYTE byJoinDecoderId[MAX_WINDOWS]; + }struVideoPlatform; + struct + { + BYTE byRes[16]; + }struNotVideoPlatform; + }struDiff; + /*ֹ壬0-Ƶۺƽ̨ڲʾͨã1-ʾͨ*/ + BYTE byUnionType; + BYTE byScale; /*ʾģʽ0---ʵʾ1---ʾ( BNC )*/ +}NET_DVR_VGA_DISP_CHAN_CFG,*LPNET_DVR_VGA_DISP_CHAN_CFG; + + +/*ʾͨ״̬*/ +#define NET_DVR_MAX_DISPREGION 16 /*ÿʾͨʾĴ*/ +typedef struct +{ + BYTE byDispStatus; /*ʾ״̬0δʾ1ʾ*/ + BYTE byBVGA; /*0-BNC1-VGA 2-HDMI3-DVI*/ + BYTE byVideoFormat; /*Ƶʽ:1:NTSC,2:PAL,0-NON*/ + BYTE byWindowMode; /*ǰģʽ*/ + BYTE byJoinDecChan[MAX_WINDOWS]; /*ӴڹĽͨ*/ + BYTE byFpsDisp[NET_DVR_MAX_DISPREGION]; /*ÿӻʾ֡*/ + BYTE byScreenMode; //Ļģʽ0-ͨ 1- + BYTE byRes2[31]; +}NET_DVR_DISP_CHAN_STATUS, *LPNET_DVR_DISP_CHAN_STATUS; + +#define MAX_DECODECHANNUM 32//·ͨ +#define MAX_DISPCHANNUM 24//·ʾͨ + +/*豸״̬*/ +typedef struct tagNET_DVR_DECODER_WORK_STATUS +{ + DWORD dwSize; + NET_DVR_MATRIX_CHAN_STATUS struDecChanStatus[MAX_DECODECHANNUM]; /*ͨ״̬*/ + NET_DVR_DISP_CHAN_STATUS struDispChanStatus[MAX_DISPCHANNUM]; /*ʾͨ״̬*/ + BYTE byAlarmInStatus[MAX_ANALOG_ALARMIN]; /*״̬*/ + BYTE byAlarmOutStatus[MAX_ANALOG_ALARMOUT]; /*״̬*/ + BYTE byAudioInChanStatus; /*Խ״̬*/ + BYTE byRes[127]; +}NET_DVR_DECODER_WORK_STATUS,*LPNET_DVR_DECODER_WORK_STATUS; + +//2009-12-1 ӱ벥ſ +typedef struct tagNET_DVR_PASSIVEDECODE_CONTROL +{ + DWORD dwSize; + DWORD dwPlayCmd; /* ļ*/ + DWORD dwCmdParam; /* */ + BYTE byRes[16];//Reverse +}NET_DVR_PASSIVEDECODE_CONTROL,*LPNET_DVR_PASSIVEDECODE_CONTROL; + +#define PASSIVE_DEC_PAUSE 1 /*ͣ(ļЧ)*/ +#define PASSIVE_DEC_RESUME 2 /*ָ(ļЧ)*/ +#define PASSIVE_DEC_FAST 3 /*ٱ(ļЧ)*/ +#define PASSIVE_DEC_SLOW 4 /*ٱ(ļЧ)*/ +#define PASSIVE_DEC_NORMAL 5 /*(ļЧ)*/ +#define PASSIVE_DEC_ONEBYONE 6 /*뵥֡()*/ +#define PASSIVE_DEC_AUDIO_ON 7 /*Ƶ*/ +#define PASSIVE_DEC_AUDIO_OFF 8 /*Ƶر*/ +#define PASSIVE_DEC_RESETBUFFER 9 /*ջ*/ +//2009-12-16 ӿƽͨ +typedef struct tagNET_DVR_MATRIX_DECCHAN_CONTROL +{ + DWORD dwSize; + BYTE byDecChanScaleStatus;/*ͨʾſ,1ʾʾ0ʾʵʾ*/ + BYTE byDecodeDelay;//ʱ0-Ĭϣ1-ʵʱԺã2-ʵʱԽϺã3-ʵʱУУ4-ԽϺã5-Ժã0xff-Զ + BYTE byEnableSpartan;//ʹܣ0-أ1- + BYTE byLowLight; //նȡ0-أ1-8նȵȼȼԽǿԽ + BYTE byNoiseReduction; //3D룬0-أ1-2-Զ + BYTE byDefog; //͸0-أ1-7͸ȼȼԽǿԽ + BYTE byEnableVcaDec; //Ƿܽ룬0-ã0- + BYTE byEnableAudio; //ǷƵ0-Ч1-2-ر + DWORD dwAllCtrlType; //ӴһͣʱЧλʾ + //dwAllCtrlType & 0x01,رܽ + BYTE byVolume; //volume,[0-100] + BYTE byRes[55]; +}NET_DVR_MATRIX_DECCHAN_CONTROL,*LPNET_DVR_MATRIX_DECCHAN_CONTROL; + +/************************************·(end)***************************************/ +//2009-8-19 Ƶۺƽ̨ӿں +/************************************Ƶۺƽ̨(begin)***************************************/ +#define MAX_SUBSYSTEM_NUM 80 //һϵͳϵͳ +#define MAX_SERIALLEN 36 //кų +#define MAX_LOOPPLANNUM 16//ƻл +#define DECODE_TIMESEGMENT 4//ƻÿʱ +typedef struct tagNET_DVR_SUBSYSTEMINFO +{ + BYTE bySubSystemType;//ϵͳͣ1-ϵͳ2-ϵͳ3-ϵͳ4-ϵͳ5-ϵͳ6-ϵͳ7-ϵͳ0-NULL˲ֻܻȡ + BYTE byChan;//ϵͳͨϵͳ485˲ֻܻȡ + BYTE byLoginType;//עͣ1-ֱ2-DNS3- + BYTE byRes1[5]; + NET_DVR_IPADDR struSubSystemIP; /*IPַ޸ģ*/ + WORD wSubSystemPort; //ϵͳ˿ںţ޸ģ + BYTE byRes2[6]; + NET_DVR_IPADDR struSubSystemIPMask;// + NET_DVR_IPADDR struGatewayIpAddr; /* صַ*/ + BYTE sUserName[NAME_LEN]; /* û ˲ֻܻȡ*/ + BYTE sPassword[PASSWD_LEN]; /*루˲ֻܻȡ*/ + char sDomainName[MAX_DOMAIN_NAME];//(޸) + char sDnsAddress[MAX_DOMAIN_NAME];/*DNSIPַ*/ + BYTE sSerialNumber[SERIALNO_LEN];//кţ˲ֻܻȡ +}NET_DVR_SUBSYSTEMINFO, *LPNET_DVR_SUBSYSTEMINFO; + +typedef struct tagNET_DVR_ALLSUBSYSTEMINFO +{ + DWORD dwSize; + NET_DVR_SUBSYSTEMINFO struSubSystemInfo[MAX_SUBSYSTEM_NUM]; + BYTE byRes[8]; +}NET_DVR_ALLSUBSYSTEMINFO, *LPNET_DVR_ALLSUBSYSTEMINFO; + +typedef struct tagNET_DVR_LOOPPLAN_SUBCFG +{ + DWORD dwSize; + DWORD dwPoolTime; /*Ѳλ*/ + NET_DVR_MATRIX_CHAN_INFO_V30 struChanConInfo[MAX_CYCLE_CHAN_V30]; + BYTE byRes[16]; +}NET_DVR_LOOPPLAN_SUBCFG,*LPNET_DVR_LOOPPLAN_SUBCFG; + +typedef struct tagNET_DVR_ALARMMODECFG +{ + DWORD dwSize; + BYTE byAlarmMode;//ͣ1-Ѳ2- + WORD wLoopTime;//Ѳʱ, λ + BYTE byRes[9]; +}NET_DVR_ALARMMODECFG,*LPNET_DVR_ALARMMODECFG; + +typedef struct tagNET_DVR_CODESPLITTERINFO +{ + DWORD dwSize; + NET_DVR_IPADDR struIP; /*IPַ*/ + WORD wPort; //˿ں + BYTE byRes1[6]; + BYTE sUserName[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + BYTE byChan;//485 + BYTE by485Port;//485ڵַ + BYTE byRes2[14]; +} NET_DVR_CODESPLITTERINFO, *LPNET_DVR_CODESPLITTERINFO; + +typedef struct tagNET_DVR_ASSOCIATECFG +{ + BYTE byAssociateType;//ͣ1- + WORD wAlarmDelay;//ʱ05룻110룻230룻31ӣ42ӣ55ӣ610ӣ + BYTE byAlarmNum;//ţֵӦøͬıֵͬ + BYTE byRes[8]; +} NET_DVR_ASSOCIATECFG,*LPNET_DVR_ASSOCIATECFG; + +typedef struct tagNET_DVR_DYNAMICDECODE +{ + DWORD dwSize; + NET_DVR_ASSOCIATECFG struAssociateCfg;//̬ṹ + NET_DVR_PU_STREAM_CFG struPuStreamCfg;//̬ṹ + BYTE byRes[8]; +}NET_DVR_DYNAMICDECODE,*LPNET_DVR_DYNAMICDECODE; + +typedef struct tagNET_DVR_DECODESCHED +{ + NET_DVR_SCHEDTIME struSchedTime;// + BYTE byDecodeType;/*0-ޣ1-Ѳ룬2-̬*/ + BYTE byLoopGroup;//Ѳ + BYTE byRes[6]; + NET_DVR_PU_STREAM_CFG struDynamicDec;//̬ +} NET_DVR_DECODESCHED, *LPNET_DVR_DECODESCHED; + +typedef struct tagNET_DVR_PLANDECODE +{ + DWORD dwSize; + NET_DVR_DECODESCHED struDecodeSched[MAX_DAYS][DECODE_TIMESEGMENT];//һΪʼ9000һ + BYTE byRes[8]; +} NET_DVR_PLANDECODE,*LPNET_DVR_PLANDECODE; + +//end +/************************************Ƶۺƽ̨(end)***************************************/ +typedef struct +{ /* 12 bytes */ + DWORD dwSize; + char sUserName[32]; + char sPassWord[32]; + char sFromName[32]; /* Sender *///ַеĵһַһַ"@",ַҪ"@"ַ + char sFromAddr[48]; /* Sender address */ + char sToName1[32]; /* Receiver1 */ + char sToName2[32]; /* Receiver2 */ + char sToAddr1[48]; /* Receiver address1 */ + char sToAddr2[48]; /* Receiver address2 */ + char sEmailServer[32]; /* Email server address */ + BYTE byServerType; /* Email server type: 0-SMTP, 1-POP, 2-IMTP*/ + BYTE byUseAuthen; /* Email server authentication method: 1-enable, 0-disable */ + BYTE byAttachment; /* enable attachment */ + BYTE byMailinterval; /* mail interval 0-2s, 1-3s, 2-4s. 3-5s*/ +} NET_DVR_EMAILCFG, *LPNET_DVR_EMAILCFG; + +typedef struct +{ + DWORD dwSize; + NET_DVR_COMPRESSION_INFO_EX struLowCompression; //ʱ¼ + NET_DVR_COMPRESSION_INFO_EX struEventCompression; //¼¼ +}NET_DVR_COMPRESSIONCFG_NEW, *LPNET_DVR_COMPRESSIONCFG_NEW; + +//λϢ +typedef struct +{ + WORD wAction;//ȡʱֶЧ + WORD wPanPos;//ˮƽ + WORD wTiltPos;//ֱ + WORD wZoomPos;//䱶 +}NET_DVR_PTZPOS, *LPNET_DVR_PTZPOS; + +//ΧϢ +typedef struct +{ + WORD wPanPosMin;//ˮƽmin + WORD wPanPosMax;//ˮƽmax + WORD wTiltPosMin;//ֱmin + WORD wTiltPosMax;//ֱmax + WORD wZoomPosMin;//䱶min + WORD wZoomPosMax;//䱶max +}NET_DVR_PTZSCOPE, *LPNET_DVR_PTZSCOPE; + +//rtsp ipcameraר +typedef struct +{ + DWORD dwSize; // + WORD wPort; //rtsp˿ + BYTE byReserve1[40]; //Ԥ + WORD wRtspsPort; //rtsps˿ + BYTE byReserve[12]; +}NET_DVR_RTSPCFG, *LPNET_DVR_RTSPCFG; + +/********************************ӿڲṹ(begin)*********************************/ + +//NET_DVR_Login()ṹ +typedef struct +{ + BYTE sSerialNumber[SERIALNO_LEN]; //к + BYTE byAlarmInPortNum; //DVR + BYTE byAlarmOutPortNum; //DVR + BYTE byDiskNum; //DVRӲ̸ + BYTE byDVRType; //DVR, 1:DVR 2:ATM DVR 3:DVS ...... + BYTE byChanNum; //DVR ͨ + BYTE byStartChan; //ʼͨ,DVS-1,DVR - 1 +}NET_DVR_DEVICEINFO, *LPNET_DVR_DEVICEINFO; + +//NET_DVR_Login_V30()ṹ +typedef struct +{ + BYTE sSerialNumber[SERIALNO_LEN]; //к + BYTE byAlarmInPortNum; // + BYTE byAlarmOutPortNum; // + BYTE byDiskNum; //Ӳ̸ + BYTE byDVRType; //豸, 1:DVR 2:ATM DVR 3:DVS ...... + BYTE byChanNum; //ģͨ + BYTE byStartChan; //ʼͨ,DVS-1,DVR - 1 + BYTE byAudioChanNum; //ͨ + BYTE byIPChanNum; //ͨλ + BYTE byZeroChanNum; //ͨ //2010-01-16 + BYTE byMainProto; //Э 0-private, 1-rtsp,2-ͬʱ֧privatertsp + BYTE bySubProto; //Э0-private, 1-rtsp,2-ͬʱ֧privatertsp + BYTE bySupport; //λΪ0ʾ֧֣1ʾ֧֣ + //bySupport & 0x1, ʾǷ֧ + //bySupport & 0x2, ʾǷֱ֧ + //bySupport & 0x4, ʾǷ֧ѹȡ + //bySupport & 0x8, ʾǷֶ֧ + //bySupport & 0x10, ʾ֧ԶSADP + //bySupport & 0x20, ʾ֧Raid + //bySupport & 0x40, ʾ֧IPSAN Ŀ¼ + //bySupport & 0x80, ʾ֧rtp over rtsp + BYTE bySupport1; // 䣬λΪ0ʾ֧֣1ʾ֧ + //bySupport1 & 0x1, ʾǷ֧snmp v30 + //bySupport1 & 0x2, ֻ֧طź + //bySupport1 & 0x4, Ƿֲ֧ȼ + //bySupport1 & 0x8, 豸Ƿֲ֧ʱչ + //bySupport1 & 0x10, ʾǷֶ֧33 + //bySupport1 & 0x20, ʾǷ֧rtsp over http + //bySupport1 & 0x80, ʾǷֳ֧±Ϣ2012-9-28, һʾǷ֧NET_DVR_IPPARACFG_V40ṹ + BYTE bySupport2; /*λΪ0ʾ֧֣0ʾ֧ + bySupport2 & 0x1, ʾǷ֧ͨURLȡ + bySupport2 & 0x2, ʾ֧FTPV40 + bySupport2 & 0x4, ʾ֧ANR + bySupport2 & 0x8, ʾ֧CCDͨ + bySupport2 & 0x10, ʾֲ֧شϢ֧ץĻ ϱṹ + bySupport2 & 0x20, ʾǷֵ֧ȡ豸״̬ + bySupport2 & 0x40, ʾǷ豸*/ + WORD wDevType; //豸ͺ + BYTE bySupport3; //չλΪ0ʾ֧֣1ʾ֧ + //bySupport3 & 0x1, ʾǷ֧ö + // bySupport3 & 0x4 ʾְ֧ã ͨͼIP롢 + // û豸״̬JPEGץͼʱʱץͼӲ + //bySupport3 & 0x8Ϊ1 ʾ֧ʹTCPԤUDPԤಥԤе"ʱԤ"ֶʱԤʹַʽʱԤbySupport3 & 0x8Ϊ0ʱʹ "˽ʱԤ"Э顣 + //bySupport3 & 0x10 ʾ֧"ȡҪ״̬V40" + //bySupport3 & 0x20 ʾǷ֧ͨDDNSȡ + + BYTE byMultiStreamProto;//Ƿֶ֧,λʾ,0-֧,1-֧,bit1-3,bit2-4,bit7-bit-8 + BYTE byStartDChan; //ʼͨ,0ʾЧ + BYTE byStartDTalkChan; //ʼֶԽͨţģԽͨţ0ʾЧ + BYTE byHighDChanNum; //ͨλ + BYTE bySupport4; //չλΪ0ʾ֧֣1ʾ֧ + //bySupport4 & 0x02 ʾǷ֧NetSDK͸ӿڣNET_DVR_STDXMLConfig͸ʽ + //bySupport4 & 0x4ʾǷ֧ƴͳһӿ + //bySupport4 & 0x80 ֧豸ϴıʹܡʾжϵýӿ NET_DVR_PDC_RULE_CFG_V42 NET_DVR_PDC_RULE_CFG_V41 + BYTE byLanguageType;// ֧,λʾ,ÿһλ0-֧,1-֧ + // byLanguageType 0 ʾ 豸 + // byLanguageType & 0x1ʾ֧ + // byLanguageType & 0x2ʾ֧Ӣ + BYTE byVoiceInChanNum; //Ƶͨ + BYTE byStartVoiceInChanNo; //Ƶʼͨ 0ʾЧ + BYTE bySupport5; //λʾ,0-֧,1-֧,bit0-ֶ֧ + //bySupport5 &0x01ʾ֧wEventTypeEx ,dwEventType ¼֧ͣΪ¼չ--ռסֹͻ + //bySupport5 &0x04ʾǷ֧ʹչijģʽӿ + /* + bySupport5 &0x08 豸ظֵʾǷּ֧ƻ¼V40ӿЭ(DVR_SET_RECORDCFG_V40/ DVR_GET_RECORDCFG_V40)(ڸЭ豸֧13) + ֮ǰIJַ豸֧¼13¼13֧֣ͳһת¼3ݴSDKͨ̽⴦) + bySupport5 &0x10 豸ظֵʾֳ֧255Ԥõ + */ + BYTE bySupport6; //λʾ0-֧,1-֧ + //bySupport6 0x1 ʾ豸Ƿ֧ѹ + //bySupport6 0x2 ʾǷ֧IDʽԴչDVR_SET_STREAM_SRC_INFO_V40 + //bySupport6 0x4 ʾǷ֧¼V40ӿ + //bySupport6 0x8 ʾǷ֧չ + //bySupport6 0x40ʾͼƬѯV40չ + BYTE byMirrorChanNum; //ͨ<¼ڱʾͨ> + WORD wStartMirrorChanNo; //ʼͨ + BYTE bySupport7; //,λʾ,0-֧,1-֧ + // bySupport7 & 0x1 ʾ豸Ƿ֧ INTER_VCA_RULECFG_V42 չ + // bySupport7 & 0x2 ʾ豸Ƿ֧ IPC HVT ģʽչ + // bySupport7 & 0x04 ʾ豸Ƿ֧ ʱ + // bySupport7 & 0x08 ʾ̨PTZλʱǷִ֧ͨ + // bySupport7 & 0x10 ʾ豸Ƿ֧˫ϵͳ + // bySupport7 & 0x20 ʾ豸Ƿ֧ OSDַ V50 + // bySupport7 & 0x40 ʾ豸Ƿ֧ Ӹ٣ + // bySupport7 & 0x80 ʾ豸Ƿ֧ ļ + BYTE byRes2; // +}NET_DVR_DEVICEINFO_V30, *LPNET_DVR_DEVICEINFO_V30; + +typedef struct tagNET_DVR_DEVICEINFO_V40 +{ + NET_DVR_DEVICEINFO_V30 struDeviceV30; + BYTE bySupportLock; //豸֧ܣֶSDK豸ֵֵġbySupportLockΪ1ʱdwSurplusLockTimebyRetryLoginTimeЧ + BYTE byRetryLoginTime; //ʣɳԵ½Ĵûʱ˲Ч + BYTE byPasswordLevel; //admin밲ȫȼ + //0-Ч1-Ĭ룬2-Ч룬3-սϸߵ롣ûΪĬ루12345߷սϸߵʱϲͻҪʾû롣 + //4-ԱһͨûΪ룬ͨûȷ¼豸Ҫʾ޸ijʼ¼롱δ޸ĵ£ûÿε붼ѣ + //5-ͨû뱻Ա޸ģͨûٴȷ¼豸Ҫʾõ¼롱δ޸ĵ£ûÿε붼; + //6-Աһװ/ԱûΪ룬ûȷ¼豸Ҫʾ޸ijʼ¼롱δ޸ĵ£޷г޸ı; + BYTE byProxyType; //ͣ0-ʹô, 1-ʹsocks5, 2-ʹEHome + DWORD dwSurplusLockTime; //ʣʱ䣬λ룬ûʱ˲Ч + BYTE byCharEncodeType; //ַ0-ַϢ(豸),1-GB2312()2-GBK,3-BIG5(),4-Shift_JIS(),5-EUC-KR(),6-UTF-8,7-21:ISO8859-1---15(ŷ),22-Hebrew(ϣ) + BYTE bySupportDev5;//֧v50汾豸ȡ豸ƺ豸ƳչΪ64ֽ + BYTE bySupport; //չλ0- ֧֣1- ֧ + // bySupport & 0x1: + // bySupport & 0x2: 0-ֱ֧仯ϱ 1-ֱ֧仯ϱ + BYTE byLoginMode; //¼ģʽ 0-Private¼ 1-ISAPI¼ + DWORD dwOEMCode; + int iResidualValidity; //ûʣЧλ죬ظֵʾѾʹã硰-3ʾѾʹ3족 + BYTE byResidualValidity; // iResidualValidityֶǷЧ0-Ч1-Ч + BYTE bySingleStartDTalkChan; //豸ʼͨţ0-Ϊֽڣʵʺ壬ͨŲܴ0ʼ + BYTE bySingleDTalkChanNums; //豸ͨ0-ʾ֧ + BYTE byPassWordResetLevel; //0-Ч1-ԱһǹԱûΪ룬÷ǹԱûȷ¼豸Ҫʾ޸ijʼ¼롱δ޸ĵ£ûÿε붼ѣ2-ǹԱû뱻Ա޸ģ÷ǹԱûٴȷ¼豸Ҫʾõ¼롱δ޸ĵ£ûÿε붼ѡ + BYTE bySupportStreamEncrypt; //չλ0- ֧֣1- ֧ bySupportStreamEncrypt & 0x1:ʾǷ֧RTP/TLSȡ bySupportStreamEncrypt & 0x2: ʾǷ֧SRTP/UDPȡ bySupportStreamEncrypt & 0x4: ʾǷ֧SRTP/MULTICASTȡ + BYTE byMarketType;//0-Чδ֪ͣ,1-ͣ2-ҵ + BYTE byTLSCap; //0-Ч;byTLSCap & 0x1: ʾǷ֧TLS·Ԥ;byTLSCap & 0x2: ʾǷ֧TLS·ط;byTLSCap & 0x4: ʾǷ֧TLS·; + BYTE byRes2[237]; +}NET_DVR_DEVICEINFO_V40, *LPNET_DVR_DEVICEINFO_V40; + +typedef void (CALLBACK *fLoginResultCallBack) (LONG lUserID, DWORD dwResult, LPNET_DVR_DEVICEINFO_V30 lpDeviceInfo , void* pUser); + +#define NET_DVR_DEV_ADDRESS_MAX_LEN 129 +#define NET_DVR_LOGIN_USERNAME_MAX_LEN 64 +#define NET_DVR_LOGIN_PASSWD_MAX_LEN 64 + +typedef struct +{ + char sDeviceAddress[NET_DVR_DEV_ADDRESS_MAX_LEN]; + BYTE byUseTransport; //Ƿ͸0--͸Ĭϣ1--͸ + WORD wPort; + char sUserName[NET_DVR_LOGIN_USERNAME_MAX_LEN]; + char sPassword[NET_DVR_LOGIN_PASSWD_MAX_LEN]; + fLoginResultCallBack cbLoginResult; + void *pUser; + BOOL bUseAsynLogin; + BYTE byProxyType; //0:ʹô1ʹñ׼2ʹEHome + BYTE byUseUTCTime; //0-תĬ,1-ӿȫʹUTCʱ,SDKUTCʱ豸ʱת,2-ӿȫʹƽ̨ʱ䣬SDKƽ̨ʱ豸ʱת + BYTE byLoginMode; //0-Private 1-ISAPI 2-Ӧ + BYTE byHttps; //0-tls1-ʹtls 2-Ӧ + LONG iProxyID; //ţӴϢʱӦķ±ֵ + BYTE byVerifyMode; //֤ʽ0-֤1-˫֤2-֤֤ʹTLSʱЧ; + BYTE byRes3[119]; +}NET_DVR_USER_LOGIN_INFO,*LPNET_DVR_USER_LOGIN_INFO; + +//sdk绷öٱԶ +typedef enum _SDK_NET_ENV +{ + LOCAL_AREA_NETWORK = 0, + WIDE_AREA_NETWORK +}SDK_NETWORK_ENVIRONMENT; + +//ʾģʽ +typedef enum +{ + NORMALMODE = 0, + OVERLAYMODE +}DISPLAY_MODE; + +//ģʽ +typedef enum +{ + PTOPTCPMODE = 0, + PTOPUDPMODE, + MULTIMODE, + RTPMODE, + RESERVEDMODE +}SEND_MODE; + +//ץͼģʽ +typedef enum +{ + BMP_MODE = 0, //BMPģʽ + JPEG_MODE = 1 //JPEGģʽ +}CAPTURE_MODE; + +//ʵʱģʽ +typedef enum +{ + MONOPOLIZE_MODE = 1,//ռģʽ + SHARE_MODE = 2 //ģʽ +}REALSOUND_MODE; + +//Ԥ +typedef struct +{ + LONG lChannel;//ͨ + LONG lLinkMode;//λ(31)Ϊ0ʾΪ1ʾӣ030λʾӷʽ: 0TCPʽ,1UDPʽ,2ಥʽ,3 - RTPʽ4-RTP/RTSP,5-RSTP/HTTP + HWND hPlayWnd;//Ŵڵľ,ΪNULLʾͼ + char* sMultiCastIP;//ಥַ + BYTE byProtoType; //ӦòȡЭ飬0-˽Э飬1-RTSPЭ + BYTE byRes[3]; +}NET_DVR_CLIENTINFO, *LPNET_DVR_CLIENTINFO; + +//SDK״̬Ϣ(9000) +typedef struct +{ + DWORD dwTotalLoginNum; //ǰloginû + DWORD dwTotalRealPlayNum; //ǰrealplay· + DWORD dwTotalPlayBackNum; //ǰطŻ· + DWORD dwTotalAlarmChanNum; //ǰͨ· + DWORD dwTotalFormatNum; //ǰӲ̸ʽ· + DWORD dwTotalFileSearchNum; //ǰ־ļ· + DWORD dwTotalLogSearchNum; //ǰ־ļ· + DWORD dwTotalSerialNum; //ǰ͸ͨ· + DWORD dwTotalUpgradeNum; //ǰ· + DWORD dwTotalVoiceComNum; //ǰת· + DWORD dwTotalBroadCastNum; //ǰ㲥· + DWORD dwTotalListenNum; //ǰ· + DWORD dwEmailTestNum; //ǰʼ· + DWORD dwBackupNum; // ǰļ· + DWORD dwTotalInquestUploadNum; //ǰѶϴ· + DWORD dwRes[6]; +}NET_DVR_SDKSTATE, *LPNET_DVR_SDKSTATE; + +//SDK֧Ϣ(9000) +typedef struct +{ + DWORD dwMaxLoginNum; //loginû MAX_LOGIN_USERS + DWORD dwMaxRealPlayNum; //realplay· WATCH_NUM + DWORD dwMaxPlayBackNum; //طŻ· WATCH_NUM + DWORD dwMaxAlarmChanNum; //ͨ· ALARM_NUM + DWORD dwMaxFormatNum; //Ӳ̸ʽ· SERVER_NUM + DWORD dwMaxFileSearchNum; //ļ· SERVER_NUM + DWORD dwMaxLogSearchNum; //־· SERVER_NUM + DWORD dwMaxSerialNum; //͸ͨ· SERVER_NUM + DWORD dwMaxUpgradeNum; //· SERVER_NUM + DWORD dwMaxVoiceComNum; //ת· SERVER_NUM + DWORD dwMaxBroadCastNum; //㲥· MAX_CASTNUM + DWORD dwRes[10]; +}NET_DVR_SDKABL, *LPNET_DVR_SDKABL; + +//豸Ϣ +typedef struct +{ + BYTE byUserIDValid; /* useridǷЧ 0-Ч1-Ч */ + BYTE bySerialValid; /* кǷЧ 0-Ч1-Ч */ + BYTE byVersionValid; /* 汾ǷЧ 0-Ч1-Ч */ + BYTE byDeviceNameValid; /* 豸ǷЧ 0-Ч1-Ч */ + BYTE byMacAddrValid; /* MACַǷЧ 0-Ч1-Ч */ + BYTE byLinkPortValid; /* login˿ǷЧ 0-Ч1-Ч */ + BYTE byDeviceIPValid; /* 豸IPǷЧ 0-Ч1-Ч */ + BYTE bySocketIPValid; /* socket ipǷЧ 0-Ч1-Ч */ + LONG lUserID; /* NET_DVR_Login()ֵ, ʱЧ */ + BYTE sSerialNumber[SERIALNO_LEN]; /* к */ + DWORD dwDeviceVersion; /* 汾Ϣ 16λʾ汾16λʾΰ汾*/ + char sDeviceName[NAME_LEN]; /* 豸 */ + BYTE byMacAddr[MACADDR_LEN]; /* MACַ */ + WORD wLinkPort; /* link port */ + char sDeviceIP[128]; /* IPַ */ + char sSocketIP[128]; /* ϴʱsocket IPַ */ + BYTE byIpProtocol; /* IpЭ 0-IPV4, 1-IPV6 */ + BYTE byRes1[2]; + BYTE bJSONBroken; //JSON־01 + WORD wSocketPort; + BYTE byRes2[6]; +}NET_DVR_ALARMER, *LPNET_DVR_ALARMER; + +//Ӳʾ(ӽṹ) +typedef struct +{ + long bToScreen; + long bToVideoOut; + long nLeft; + long nTop; + long nWidth; + long nHeight; + long nReserved; +}NET_DVR_DISPLAY_PARA, *LPNET_DVR_DISPLAY_PARA; + +//ӲԤ +typedef struct +{ + LONG lChannel;//ͨ + LONG lLinkMode; //λ(31)Ϊ0ʾΪ1ʾӣ030λʾӷʽ:0TCPʽ,1UDPʽ,2ಥʽ,3 - RTPʽ4-绰ߣ5128k6256k7384k8512k + char* sMultiCastIP; + NET_DVR_DISPLAY_PARA struDisplayPara; +}NET_DVR_CARDINFO, *LPNET_DVR_CARDINFO; + +//¼ļ +typedef struct +{ + char sFileName[100];//ļ + NET_DVR_TIME struStartTime;//ļĿʼʱ + NET_DVR_TIME struStopTime;//ļĽʱ + DWORD dwFileSize;//ļĴС +}NET_DVR_FIND_DATA, *LPNET_DVR_FIND_DATA; + +//¼ļ(9000) +typedef struct +{ + char sFileName[100];//ļ + NET_DVR_TIME struStartTime;//ļĿʼʱ + NET_DVR_TIME struStopTime;//ļĽʱ + DWORD dwFileSize;//ļĴС + char sCardNum[32]; + BYTE byLocked;//9000豸֧,1ʾļѾ,0ʾļ + BYTE byFileType; //ļ:0ʱ¼,1-ƶ 2 + //3-|ƶ 4-&ƶ 5- 6-ֶ¼,7𶯱8-9-ܱ10-PIR11-߱12-ȱ,14-ܽͨ¼ + BYTE byRes[2]; +}NET_DVR_FINDDATA_V30, *LPNET_DVR_FINDDATA_V30; + +//¼ļ(cvr) +typedef struct +{ + char sFileName[100];//ļ + NET_DVR_TIME struStartTime;//ļĿʼʱ + NET_DVR_TIME struStopTime;//ļĽʱ + DWORD dwFileSize;//ļĴС + char sCardNum[32]; + BYTE byLocked;//9000豸֧,1ʾļѾ,0ʾļ + BYTE byFileType; //ļ:0ʱ¼,1-ƶ 2 + //3-|ƶ 4-&ƶ 5- 6-ֶ¼,7𶯱8-9-ܱ10-PIR11-߱12-ȱ,14-ܽͨ¼ + BYTE byQuickSearch; //0:ͨѯ1٣ѯ + BYTE byRes; + DWORD dwFileIndex; //ļ + BYTE byStreamType; + BYTE byRes1[127]; +}NET_DVR_FINDDATA_V40, *LPNET_DVR_FINDDATA_V40; + +typedef struct tagNET_DVR_FINDDATA_V50 +{ + char sFileName[100]; + NET_DVR_TIME_SEARCH struStartTime; + NET_DVR_TIME_SEARCH struStopTime; + NET_DVR_ADDRESS struAddr; //ƬڵĵַϢȺطʱõ + DWORD dwFileSize; //ļС //ڴļʱbyBigFileTypeΪ1ֵ + BYTE byLocked; //ļǷ1ļ0ļδ + BYTE byFileType; //ļͣV40ͬ + BYTE byQuickSearch; //0- ͨѯ1- ٣ѯ + BYTE byStreamType; //ͣ0- 1- 2- + DWORD dwFileIndex; //ļ + char sCardNum[32]; // + DWORD dwTotalLenH; // ڴļʱܳȣ32ֽ + DWORD dwTotalLenL; // ڴļʱܳȣ32ֽ + BYTE byBigFileType; // 0ΪͨƬ1Ϊļ + BYTE byRes[247]; +}NET_DVR_FINDDATA_V50, *LPNET_DVR_FINDDATA_V50; + +//¼ļ() +typedef struct +{ + char sFileName[100];//ļ + NET_DVR_TIME struStartTime;//ļĿʼʱ + NET_DVR_TIME struStopTime;//ļĽʱ + DWORD dwFileSize;//ļĴС + char sCardNum[32]; +}NET_DVR_FINDDATA_CARD, *LPNET_DVR_FINDDATA_CARD; + + +//¼ļṹ +typedef struct +{ + LONG lChannel;//ͨ + DWORD dwFileType;//¼ļ + //ţ0xffȫ0ʱ¼,1-ƶ 23-|ƶ 4-&ƶ 5- 6-ֶ¼,7-¼10-PIR11-߱12-ȱ13-ȫ¼14-ܽͨ¼ + //ţ0xffȫ0ʱ¼1-ƶ⣬2ӽ345-6ֶ¼7𶯱8-9-ܱ10-PIR11-߱12-ȱ13-ȫ¼14-ܽͨ¼ + DWORD dwIsLocked;//Ƿ 0-ļ,1-ļ, 0xffʾļ + DWORD dwUseCardNo;//Ƿʹÿ + BYTE sCardNumber[32];// + NET_DVR_TIME struStartTime;//ʼʱ + NET_DVR_TIME struStopTime;//ʱ +}NET_DVR_FILECOND, *LPNET_DVR_FILECOND; + +//̨ѡŴС(˽ ר) +typedef struct +{ + int xTop; //ʼx + int yTop; //y + int xBottom; //x + int yBottom; //y + int bCounter; // +}NET_DVR_POINT_FRAME, *LPNET_DVR_POINT_FRAME; + +//Խ +typedef struct tagNET_DVR_COMPRESSION_AUDIO +{ + BYTE byAudioEncType; //Ƶ 0-OggVorbis(G722.1);1-G711_U;2-G711_A;5-MP2L2;6-G726;7-AAC,8-PCM;9-G722.1.C;12-AAC_LC;13-AAC_LD;14-Opus;15-MP3;16-ADPCM + BYTE byAudioSamplingRate;//Ƶ 0-Ĭϣ1-16kHZ2-32kHZ3-48kHZ, 4- 44.1kHZ,5-8kHZ + BYTE byAudioBitRate;// Ƶ ο BITRATE_ENCODE_INDEX + BYTE byres[4];//ﱣƵѹ + BYTE bySupport;//bySupport Bit0ʾ Mp2l2ǰ4ֽڵĺʾƵݳ +}NET_DVR_COMPRESSION_AUDIO, *LPNET_DVR_COMPRESSION_AUDIO; + +//2009-7-22 + + +#define IW_ESSID_MAX_SIZE 32 +#define WIFI_WEP_MAX_KEY_COUNT 4 +#define WIFI_WEP_MAX_KEY_LENGTH 33 +#define WIFI_WPA_PSK_MAX_KEY_LENGTH 63 +#define WIFI_WPA_PSK_MIN_KEY_LENGTH 8 +#define WIFI_MAX_AP_COUNT 20 +#define WIFI_WPA_PSK_MAX_HEXKEY_LENGTH 68 //WPA16Կ󳤶 + +typedef struct tagNET_DVR_AP_INFO +{ + char sSsid[IW_ESSID_MAX_SIZE]; + DWORD dwMode; /* 0 mange ģʽ;1 ad-hocģʽμNICMODE */ + DWORD dwSecurity; /*0 ܣ1 wepܣ2 wpa-psk;3 wpa-Enterprise;4-WPA2_PSKμWIFISECURITY*/ + DWORD dwChannel; /*1-11ʾ11ͨ*/ + DWORD dwSignalStrength; /*0-100źΪǿ*/ + DWORD dwSpeed; /*,λ0.01mbps*/ +}NET_DVR_AP_INFO,*LPNET_DVR_AP_INFO; + +typedef struct tagNET_DVR_AP_INFO_LIST +{ + DWORD dwSize; + DWORD dwCount; /*AP20*/ + NET_DVR_AP_INFO struApInfo[WIFI_MAX_AP_COUNT]; +}NET_DVR_AP_INFO_LIST,*LPNET_DVR_AP_INFO_LIST; + +typedef struct tagNET_DVR_WIFIETHERNET +{ + char sIpAddress[16]; /*IPַ*/ + char sIpMask[16]; /**/ + BYTE byMACAddr[MACADDR_LEN]; /*ַֻʾ*/ + BYTE byCloseWifi; //Ƿرwifiӣ0-رգ1-ر + BYTE bRes; + DWORD dwEnableDhcp; /*Ƿdhcp 0 1*/ + DWORD dwAutoDns; /*dhcpǷԶȡdns,0Զȡ 1ԶȡdhcpĿǰԶȡdns*/ + char sFirstDns[16]; /*һdns*/ + char sSecondDns[16]; /*ڶdns*/ + char sGatewayIpAddr[16]; /* صַ*/ + BYTE bRes2[8]; +}NET_DVR_WIFIETHERNET,*LPNET_DVR_WIFIETHERNET; + +typedef struct tagNET_DVR_WIFI_CFG_EX +{ + NET_DVR_WIFIETHERNET struEtherNet; /*wifi*/ + char sEssid[IW_ESSID_MAX_SIZE]; /*SSID*/ + DWORD dwMode; /* 0 mange ģʽ;1 ad-hocģʽμ*/ + DWORD dwSecurity; /*0-;1-WEP;2-WPA-personal; 3-WPA-enterprise;4-WPA2-personal;5-WPA2-enterprise */ + union + { + struct + { + DWORD dwAuthentication;/*0 -ʽ 1-ʽ*/ + DWORD dwKeyLength;/* 0 -64λ1- 128λ2-152λ*/ + DWORD dwKeyType;/*0 16;1 ASCI */ + DWORD dwActive;/*0 0---3ʾһԿ*/ + char sKeyInfo[WIFI_WEP_MAX_KEY_COUNT][WIFI_WEP_MAX_KEY_LENGTH]; + }wep; + struct + { + DWORD dwKeyLength;/*8-63ASCIIַ*/ + char sKeyInfo[WIFI_WPA_PSK_MAX_KEY_LENGTH]; + BYTE byEncryptType; /*WPA/WPA2ģʽ¼,0-AES, 1-TKIP*/ + char sNewKeyInfo[WIFI_WPA_PSK_MAX_HEXKEY_LENGTH/*68*/];//Կ֧8-63ASCIIַԼ64ʮַԿ + //byKeyTypeΪ0ʱsKeyInfobyKeyTypeΪ1ʱsNewKeyInfo + //Կͣ0 ~ Կֻ֧ͣ8-63ASCIIַ1 ~Կ֧ͣ8-63ASCIIַԼ64ʮַԿ + BYTE byKeyType; + BYTE byRes[7]; + }wpa_psk; + struct + { + BYTE byEncryptType; /*,0-AES, 1-TKIP*/ + BYTE byAuthType; //֤ͣ0-EAP_TTLS,1-EAP_PEAP,2-EAP_TLS + BYTE byRes[2]; + union + { + struct + { + BYTE byEapolVersion; //EAPOL汾0-汾11-汾2 + BYTE byAuthType; //ڲ֤ʽ0-PAP1-MSCHAPV2 + BYTE byRes1[2]; + BYTE byAnonyIdentity [NAME_LEN]; // + BYTE byUserName[NAME_LEN]; //û + BYTE byPassword[NAME_LEN]; // + BYTE byRes[44]; + }EAP_TTLS; //WPA-enterprise/WPA2-enterprisģʽ + struct + { + BYTE byEapolVersion; //EAPOL汾0-汾11-汾2 + BYTE byAuthType; //ڲ֤ʽ0-GTC1-MD52-MSCHAPV2 + BYTE byPeapVersion; //PEAP汾0-汾01-汾1 + BYTE byPeapLabel; //PEAPǩ0-ϱǩ1-±ǩ + BYTE byAnonyIdentity[NAME_LEN]; // + BYTE byUserName[NAME_LEN]; //û + BYTE byPassword[NAME_LEN]; // + BYTE byRes[44]; + }EAP_PEAP; //WPA-enterprise/WPA2-enterprisģʽ + struct + { + BYTE byEapolVersion; //EAPOL汾0-汾11-汾2 + BYTE byRes1[3]; + BYTE byIdentity[NAME_LEN]; // + BYTE byPrivateKeyPswd[NAME_LEN]; //˽Կ + BYTE byRes[76]; + }EAP_TLS; + }auth_param; + }wpa_wpa2; //WPA-enterprise/WPA2-enterprisģʽ + }key; +}NET_DVR_WIFI_CFG_EX,*LPNET_DVR_WIFI_CFG_EX; + +//wifiýṹ +typedef struct tagNET_DVR_WIFI_CFG +{ + DWORD dwSize; + NET_DVR_WIFI_CFG_EX struWifiCfg; +}NET_DVR_WIFI_CFG,*LPNET_DVR_WIFI_CFG; + +//wifi״̬ +typedef struct tagNET_DVR_WIFI_CONNECT_STATUS +{ + DWORD dwSize; + BYTE byCurStatus; //1-ӣ2-δӣ3- + BYTE byRes1[3]; // + DWORD dwErrorCode; // byCurStatus = 2ʱЧ,1-û,2-޴·,3-δ֪ + BYTE byRes[244]; +}NET_DVR_WIFI_CONNECT_STATUS,*LPNET_DVR_WIFI_CONNECT_STATUS; + +//wifiģʽ +typedef struct tagNET_DVR_WIFI_WORKMODE +{ + DWORD dwSize; + DWORD dwNetworkInterfaceMode; /*0 Զлģʽ1 ģʽ*/ +}NET_DVR_WIFI_WORKMODE,*LPNET_DVR_WIFI_WORKMODE; + +//ṹ궨 +#define VCA_MAX_POLYGON_POINT_NUM 10 //֧10Ķ +#define MAX_RULE_NUM 8 // +#define MAX_RULE_NUM_V42 16 //չ +#define MAX_TARGET_NUM 30 //Ŀ +#define MAX_CALIB_PT 6 //궨 +#define MIN_CALIB_PT 4 //С궨 +#define MAX_TIMESEGMENT_2 2 //ʱ +#define DATA_INDEX_LEN 64 //ˮ +#define MAX_DEV_DATAINDEX_LEN 64 //豸ˮ +#define MAX_TRAFFIC_PICTURE_NUM 8 //ͨͼƬ +#define MAX_LICENSE_LEN 16 //ƺ󳤶 +#define MAX_LICENSE_LEN_EX 32 //ƺ󳤶 +#define MAX_CARDNO_LEN 48 //󳤶 2013-11-04 +#define MAX_OPERATE_INDEX_LEN 32 //󳤶2014-03-03 +#define MAX_PLATE_NUM 3 //Ƹ +#define MAX_MASK_REGION_NUM 4 //ĸ +#define MAX_SEGMENT_NUM 6 //궨Ŀ +#define MIN_SEGMENT_NUM 3 //궨СĿ +#define MAX_REL_SNAPCHAN_NUM 3 //ץͼͨ +#define MAX_PIC_SWITCH_STORAGE_SERVER 64 //ƴ洢洢ͼƬ +#define MAX_INFO_SWITCH_STORAGE_SERVER 64 //ƴ洢洢󸽼Ϣ +#define RTMP_URL_LEN 128 //RTMP URL +#define MAX_ID_LEN_128 128 //ļID +#define MAX_DEBUGCMD_LEN 1024 //豸󳤶 +#define MAX_DEBUGINFO_LEN 1400 //豸Ϣ󳤶 +#define MAX_VEHICLE_ID_LEN 32 //ʶ +#define LEN_PROPERTY 128 +typedef struct +{ + DWORD dwSize; //αij, + NET_DVR_TIME_EX strStartTime; //ʼʱ + NET_DVR_TIME_EX strStopTime; //ʱ + char sLicense[MAX_LICENSE_LEN_EX/*32*/]; //ƺ + DWORD dwChannel; + BYTE byRegion; + BYTE byRes[127]; // ֵ 0-1-ŷ(Europe Region)2-(Russian Region)3-ŷ&˹(EU&CIS) , 4-жMiddle East0xff- +}NET_DVR_VEHICLE_INFO_COND, *LPNET_DVR_VEHICLE_INFO_COND; + +typedef struct +{ + DWORD dwSize; + DWORD dwIndex;// + BYTE byDeviceID[DEVICE_ID_LEN/*48*/]; //豸 + BYTE byBelieve;//Ŷȣ0-100 + BYTE byDir;//0-壬1-2-3-δ֪ + BYTE byLineID;// + BYTE byRes1; + NET_DVR_TIME_EX struSnapTime;//ץʱ + char sLicense[MAX_LICENSE_LEN_EX/*32*/]; //ƺ + BYTE byMonitoringSiteID[MONITORSITE_ID_LEN /*48*/]; // + BYTE byCountry; // ֵöCOUNTRY_INDEX֧֡COUNTRY_ALL = 0xff, //ALL ȫ + BYTE byMatchingResult;//ƥ0-1-2-ֹ3- + BYTE byArea; //ʡݣڲö٣ EMI_AREA + BYTE byPlateType; // ο VCA_PLATE_TYPE + char sDeviceName[NAME_LEN/*32*/]; //豸 + BYTE byPlateColor; //ɫ ο VCA_PLATE_COLOR + BYTE byPlateSize; //Ƴߴ磬0~δ֪1~long, 2~short(жʹ) + BYTE byRes2[2]; + char sPlateCategory[MAX_CATEGORY_LEN/*8*/]; //ƸϢ, СϢ(Ŀǰֻж֧) + char sPlateImageURL[URL_LEN_V40/*256*/]; //СͼURL + char sEffectiveTime[ISO_8601_LEN/*32*/]; //ϢЧʱ䣬ʹISO8601 timeʽ磺2009-11-14T15:27Z + BYTE byRes[176]; +}NET_DVR_VEHICLE_INFO_CFG, *LPNET_DVR_VEHICLE_INFO_CFG; + +//ܿϢ +#define MAX_VCA_CHAN 16//ͨ +typedef struct tagNET_VCA_CTRLINFO +{ + BYTE byVCAEnable; //Ƿ + BYTE byVCAType; //ͣVCA_CHAN_ABILITY_TYPE + BYTE byStreamWithVCA; //ǷϢ + BYTE byMode; //ģʽATMʱVCA_CHAN_MODE_TYPE ,TFSʱTFS_CHAN_MODE_TYPE + BYTE byControlType; //ͣλʾ0-1- + // byControlType &1 ǷץĹ + BYTE byPicWithVCA ;// ץͼĿϢ(Ŀ)0-ӣĬϣ1-ӣ + BYTE byRes[2]; //Ϊ0 +}NET_VCA_CTRLINFO, * LPNET_VCA_CTRLINFO; + +//ܿϢṹ +typedef struct tagNET_VCA_CTRLCFG +{ + DWORD dwSize; + NET_VCA_CTRLINFO struCtrlInfo[MAX_VCA_CHAN]; //Ϣ,0Ӧ豸ʼͨ + BYTE byRes[16]; +}NET_VCA_CTRLCFG, * LPNET_VCA_CTRLCFG; + +//豸 +typedef struct tagNET_VCA_DEV_ABILITY +{ + DWORD dwSize; //ṹ + BYTE byVCAChanNum; //ͨ + BYTE byPlateChanNum; //ͨ + BYTE byBBaseChanNum; //Ϊ + BYTE byBAdvanceChanNum; //Ϊ߼ + BYTE byBFullChanNum; //Ϊ + BYTE byATMChanNum; //ATM + BYTE byPDCChanNum; //ͳͨ + BYTE byITSChanNum; //ͨ¼ͨ + BYTE byBPrisonChanNum; //Ϊ()ͨ + BYTE byFSnapChanNum; //ץͨ + BYTE byFSnapRecogChanNum; //ץĺʶͨ + BYTE byFRetrievalChanNum; // + BYTE bySupport; //λΪ0ʾ֧֣1ʾ֧ + //bySupport & 0x1ʾǷ֧ܸ 2012-3-22 + //bySupport & 0x2ʾǷ֧128·ȡչ2012-12-27 + BYTE byFRecogChanNum; //ʶͨ + BYTE byBPPerimeterChanNum; //Ϊ(ܽ)ͨ + BYTE byTPSChanNum; //ͨյͨ + BYTE byTFSChanNum; //·Υȡ֤ͨ + BYTE byFSnapBFullChanNum; //ץĺΪͨ + BYTE byHeatMapChanNum; //ȶͼͨ + BYTE bySmartVehicleNum; //SMART¼+ͨ + BYTE bySmartHVTNum; //SMART¼+мͨ + BYTE bySmartNum; //SMART¼ + BYTE byVehicleNum; //ͨ + BYTE bySmartRoadDetectionNum ; // SMART¼+·ͨ + BYTE bySmartFaceDetectionNum ; // SMART¼+ͨ + BYTE bySmartHeatMapNum ; // SMART¼+ȶͼͨ + BYTE byHumanRecognitionNum; //ʶͨ + BYTE byEdcationStudentNum; //¼ѧ&&ѧͳƣֵ֧ͨ + BYTE byRoadDetectionNum;//·ͨ + BYTE byPersonDensityDetection; //Աܶȼͨ + BYTE bySafetyHelmetDetection; //ȫñͨ + BYTE byPerimeterCapture;//ܽץͨ + BYTE byHeelPDC;//бͨ + BYTE by12MPLiveView;// 1200W@20fpsԤ4000*3000 + BYTE byTeacherBehaviorDetectNum; //¼ʦΪ⣩ֵ֧ͨ + BYTE byMixedTargetDetection;//Ŀͨ + BYTE byFaceContrast;//ȶԼͨ + BYTE byCityManagement;//ǻ۳ǹܼͨ + BYTE byMixedTargetDetectionSmart;//Ŀ+Smart¼ + BYTE byRes; +}NET_VCA_DEV_ABILITY, *LPNET_VCA_DEV_ABILITY; + + +//Ϊ +typedef enum _VCA_ABILITY_TYPE_ +{ + TRAVERSE_PLANE_ABILITY = 0x01, //Խ + ENTER_AREA_ABILITY = 0x02, // + EXIT_AREA_ABILITY = 0x04, //뿪 + INTRUSION_ABILITY = 0x08, // + LOITER_ABILITY = 0x10, //ǻ + LEFT_TAKE_ABILITY = 0x20, //Ʒȡ + PARKING_ABILITY = 0x40, //ͣ + RUN_ABILITY = 0x80, //ƶ + HIGH_DENSITY_ABILITY = 0x100, //Աۼ + LF_TRACK_ABILITY = 0x200, // + VIOLENT_MOTION_ABILITY = 0x400, //˶ + REACH_HIGHT_ABILITY = 0x800, //ʸ߼ + GET_UP_ABILITY = 0x1000, // + LEFT_ABILITY = 0x2000, //Ʒ + TAKE_ABILITY = 0x4000, //Ʒȡ + LEAVE_POSITION = 0x8000, // + TRAIL_ABILITY = 0x10000, //β + KEY_PERSON_GET_UP_ABILITY = 0x20000, //صԱ + STANDUP_ABILITY = 0x40000, // + FALL_DOWN_ABILITY = 0x80000, // + AUDIO_ABNORMAL_ABILITY = 0x100000, //ǿͻ + ADV_REACH_HEIGHT_ABILITY = 0x200000, //ʸ + TOILET_TARRY_ABILITY = 0x400000, //޳ʱ + YARD_TARRY_ABILITY = 0x800000, //ŷ糡 + ADV_TRAVERSE_PLANE_ABILITY = 0x1000000, //߾ + LECTURE_ABILITY = 0x2000000, //ڿ + ANSWER_ABILITY = 0x4000000, //ش + HUMAN_ENTER_ABILITY = 0x10000000, //˿ATM ,ֻATM_PANELģʽ֧ + OVER_TIME_ABILITY = 0x20000000, //ʱ,ֻATM_PANELģʽ֧ + STICK_UP_ABILITY = 0x40000000, //ֽ + INSTALL_SCANNER_ABILITY = 0x80000000 //װ +}VCA_ABILITY_TYPE; + +typedef enum _VCA_ABILITY_TYPE_EX_ +{ + PEOPLENUM_CHANGE_ABILITY = 0x00000002, //仯 + SPACING_CHANGE_ABILITY = 0x00000004, //仯 + EVENT_COMBINED_ABILITY = 0x00000008, //¼ + EVENT_SIT_QUIETLY = 0x00000010, // + EVENT_HIGH_DENSITY_STATUS_ABILITY = 0x00000020, //Աۼ״̬ + EVENT_RUNNING = 0x00000040, // + EVENT_RETENTION = 0x00000080, // + EVENT_TEACHER_WRITING = 0x00000100, // + EVENT_FAKECARD = 0x00000200 //α쿨 +}VCA_ABILITY_TYPE_EX; + +//ͨ +typedef enum _VCA_CHAN_ABILITY_TYPE_ +{ + VCA_BEHAVIOR_BASE = 1, //Ϊ + VCA_BEHAVIOR_ADVANCE = 2, //Ϊ߼ + VCA_BEHAVIOR_FULL = 3, //Ϊ + VCA_PLATE = 4, // + VCA_ATM = 5, //ATM + VCA_PDC = 6, //ͳ + VCA_ITS = 7, // ͨ¼ + VCA_BEHAVIOR_PRISON = 8, //Ϊ() + VCA_FACE_SNAP = 9, //ץ + VCA_FACE_SNAPRECOG = 10, //ץĺʶ + VCA_FACE_RETRIEVAL = 11, // + VCA_FACE_RECOG = 12, //ʶ + VCA_BEHAVIOR_PRISON_PERIMETER = 13, // Ϊ (ܽ) + VCA_TPS = 14, //ͨյ + VCA_TFS = 15, //·Υȡ֤ + VCA_BEHAVIOR_FACESNAP = 16, //ץĺΪ + VCA_HEATMAP = 17, //ȶͼ + VCA_SMART_VEHICLE_DETECTION = 18, // SMART¼+ + VCA_SMART_HVT_DETECTION = 19, // SMART¼+м + VCA_SMART_EVENT = 20, // SMART¼ + VCA_VEHICLE_DETECTION = 21, // + VCA_SMART_ROAD_DETECTION = 22, // SMART¼+· + VCA_SMART_FACE_DETECTION = 23, // SMART¼+ + VCA_SMART_HEATMAP = 24, // SMART¼+ȶͼ + VCA_HUMAN_RECOGNITION = 25 , // ʶ + VCA_EDUCATION_STUDENT_DETECTION = 26, //¼ѧ&&ѧͳƣ + VCA_ROAD_DETECTION = 27, //· + VCA_PERSON_DENSITY_DETECTION = 28, //Աܶȼ + VCA_PERIMETER_CAPTURE = 29, //ܽץ + VCA_SAFETY_HELMET_DETECTION = 30, //ȫñ + VCA_HEEL_PDC = 31, //б + VCA_12MPLIVE_VIEW = 32, // 1200W@20fpsԤ4000*3000 + VCA_TEACHER_BEHAVIOR_DETECTION = 33, //ʦΪ + VCA_MIXED_TARGET_DETECTION = 34, //Ŀ + VCA_FACE_CONTRAST = 35, //Աȼ(ͬʱ֧ץļԱȹܣ㷨IJͬ㷨ȶΪģȷÿαȶԳɹĿ겻ʺ϶ԱԸĿץġ) + VCA_CITY_MANAGEMENT = 36, //ǻ۳ǹ + VCA_MIXED_TARGET_DETECTION_SMART = 37 //ĿSmart +}VCA_CHAN_ABILITY_TYPE; + +//ATMģʽ(ATM) +typedef enum _VCA_CHAN_MODE_TYPE_ +{ + VCA_ATM_PANEL = 0, //ATM + VCA_ATM_SURROUND = 1, //ATM + VCA_ATM_FACE = 2, //ATM + VCA_ATM_SAFETYCABIN = 3 //ATM +}VCA_CHAN_MODE_TYPE; + +//ͨȡ֤TFSͨģʽ(TFS) +typedef enum _TFS_CHAN_MODE_TYPE_ +{ + TFS_CITYROAD = 0, //TFS е· + TFS_FREEWAY = 1 //TFS ٵ· +}TFS_CHAN_MODE_TYPE; + +//Ϊģʽ +typedef enum _BEHAVIOR_SCENE_MODE_TYPE_ +{ + BEHAVIOR_SCENE_DEFAULT = 0, //ϵͳĬ + BEHAVIOR_SCENE_WALL = 1, //Χǽ + BEHAVIOR_SCENE_INDOOR = 2 // +}BEHAVIOR_SCENE_MODE_TYPE; + +//ģʽ +typedef enum _BEHAVIOR_PRISON_MODE_TYPE_ +{ + BEHAVIOR_PRISON = 0, // + BEHAVIOR_HEARING = 1, //Ѷ + BEHAVIOR_RECFIELD = 2 //ŷ糡 +}BEHAVIOR_PRISON_MODE_TYPE,LPBEHAVIOR_PRISON_MODE_TYPE; + + +//ͨ +typedef struct tagNET_VCA_CHAN_IN_PARAM +{ + BYTE byVCAType; //VCA_CHAN_ABILITY_TYPEöֵ + BYTE byMode; //ģʽATM ʱVCA_CHAN_MODE_TYPE,TFSʱTFS_CHAN_MODE_TYPE,VCA_TYPE Ϊͨ¼ʱTRAFFIC_SCENE_MODE + BYTE byRes[2]; //Ϊ0 +}NET_VCA_CHAN_IN_PARAM, *LPNET_VCA_CHAN_IN_PARAM; + + +//Ϊṹ +typedef struct tagNET_VCA_BEHAVIOR_ABILITY +{ + DWORD dwSize; //ṹ + DWORD dwAbilityType; //ֵ֧ͣλʾVCA_ABILITY_TYPE + BYTE byMaxRuleNum; // + BYTE byMaxTargetNum; //Ŀ + BYTE bySupport; // ֵ֧Ĺ λʾ + // bySupport & 0x01 ֱ֧궨 + BYTE byRes[5]; //Ϊ0 + DWORD dwAbilityTypeEx; //ֵ֧ͣλʾVCA_ABILITY_TYPE_EX +}NET_VCA_BEHAVIOR_ABILITY, *LPNET_VCA_BEHAVIOR_ABILITY; + +//ݸ² +typedef struct tagNET_DVR_SCENE_CHANGE_UPDATE_PARAM +{ + DWORD dwSize; + BYTE byIDCount; //ʵID + BYTE byRes1[3]; + BYTE byStreamID[MAX_STREAM_ID_NUM][STREAM_ID_LEN]; + BYTE byRes[256]; +}NET_DVR_SCENE_CHANGE_UPDATE_PARAM, *LPNET_DVR_SCENE_CHANGE_UPDATE_PARAM; + +// ͨṹ +typedef struct tagNET_DVR_ITS_ABILITY +{ + DWORD dwSize; // ṹС + DWORD dwAbilityType; // ֵ֧б ITS_ABILITY_TYPE + BYTE byMaxRuleNum; // + BYTE byMaxTargetNum; //Ŀ + BYTE byRes[10]; // +}NET_DVR_ITS_ABILITY, *LPNET_DVR_ITS_ABILITY; + +/***********************************end*******************************************/ + +/************************************ܲṹ*********************************/ +//ܹýṹ +//ֵһ,ֵΪǰİٷֱȴС, ΪСλ + +//Ϊ¼ +typedef enum _VCA_EVENT_TYPE_ +{ + VCA_TRAVERSE_PLANE = 0x1, //Խ + VCA_ENTER_AREA = 0x2, //Ŀ,֧ + VCA_EXIT_AREA = 0x4, //Ŀ뿪,֧ + VCA_INTRUSION = 0x8, //ܽ,֧ + VCA_LOITER = 0x10, //ǻ,֧ + VCA_LEFT_TAKE = 0x20, //Ʒȡ,֧ + VCA_PARKING = 0x40, //ͣ,֧ + VCA_RUN = 0x80, //ƶ,֧ + VCA_HIGH_DENSITY = 0x100, //Աۼ,֧ + VCA_VIOLENT_MOTION = 0x200, //˶ + VCA_REACH_HIGHT = 0x400, //ʸ߼ + VCA_GET_UP = 0x800, // + VCA_LEFT = 0x1000, //Ʒ + VCA_TAKE = 0x2000, //Ʒȡ + VCA_LEAVE_POSITION = 0x4000, // + VCA_TRAIL = 0x8000, //β + VCA_KEY_PERSON_GET_UP = 0x10000, //صԱ + VCA_STANDUP = 0x20000, // + VCA_FALL_DOWN = 0x80000, //ؼ + VCA_AUDIO_ABNORMAL = 0x100000, //ǿͻ + VCA_ADV_REACH_HEIGHT = 0x200000, //ʸ + VCA_TOILET_TARRY = 0x400000, //޳ʱ + VCA_YARD_TARRY = 0x800000, //ŷ糡 + VCA_ADV_TRAVERSE_PLANE = 0x1000000, //߾ + VCA_LECTURE = 0x2000000, //ڿ + VCA_ANSWER = 0x4000000, //ش + VCA_HUMAN_ENTER = 0x10000000, //˿ATM ֻATM_PANELģʽ֧ + VCA_OVER_TIME = 0x20000000, //ʱ ֻATM_PANELģʽ֧ + VCA_STICK_UP = 0x40000000, //ֽ,֧ + VCA_INSTALL_SCANNER = 0x80000000 //װ,֧ +}VCA_EVENT_TYPE; + +//Ϊ¼չ +typedef enum _VCA_RULE_EVENT_TYPE_EX_ +{ + ENUM_VCA_EVENT_TRAVERSE_PLANE = 1, //Խ + ENUM_VCA_EVENT_ENTER_AREA = 2, //Ŀ,֧ + ENUM_VCA_EVENT_EXIT_AREA = 3, //Ŀ뿪,֧ + ENUM_VCA_EVENT_INTRUSION = 4, //ܽ,֧ + ENUM_VCA_EVENT_LOITER = 5, //ǻ,֧ + ENUM_VCA_EVENT_LEFT_TAKE = 6, //Ʒȡ,֧ + ENUM_VCA_EVENT_PARKING = 7, //ͣ,֧ + ENUM_VCA_EVENT_RUN = 8, //ƶ,֧ + ENUM_VCA_EVENT_HIGH_DENSITY = 9, //Աۼ,֧ + ENUM_VCA_EVENT_VIOLENT_MOTION = 10, //˶ + ENUM_VCA_EVENT_REACH_HIGHT = 11, //ʸ߼ + ENUM_VCA_EVENT_GET_UP = 12, // + ENUM_VCA_EVENT_LEFT = 13, //Ʒ + ENUM_VCA_EVENT_TAKE = 14, //Ʒȡ + ENUM_VCA_EVENT_LEAVE_POSITION = 15, // + ENUM_VCA_EVENT_TRAIL = 16, //β + ENUM_VCA_EVENT_KEY_PERSON_GET_UP = 17, //صԱ + ENUM_VCA_EVENT_STANDUP = 18, // + ENUM_VCA_EVENT_FALL_DOWN = 20, //ؼ + ENUM_VCA_EVENT_AUDIO_ABNORMAL = 21, //ǿͻ + ENUM_VCA_EVENT_ADV_REACH_HEIGHT = 22, //ʸ + ENUM_VCA_EVENT_TOILET_TARRY = 23, //޳ʱ + ENUM_VCA_EVENT_YARD_TARRY = 24, //ŷ糡 + ENUM_VCA_EVENT_ADV_TRAVERSE_PLANE = 25, //߾ + ENUM_VCA_EVENT_LECTURE = 26, //ڿΣḶ̌ + ENUM_VCA_EVENT_ANSWER = 27, //ش⣨Ḷ̌ + ENUM_VCA_EVENT_HUMAN_ENTER = 29, //˿ATM,ֻATM_PANELģʽ֧ + ENUM_VCA_EVENT_OVER_TIME = 30, //ʱ,ֻATM_PANELģʽ֧ + ENUM_VCA_EVENT_STICK_UP = 31, //ֽ,֧ + ENUM_VCA_EVENT_INSTALL_SCANNER = 32, //װ,֧ + ENUM_VCA_EVENT_PEOPLENUM_CHANGE = 35, //仯¼ + ENUM_VCA_EVENT_SPACING_CHANGE = 36, //仯¼ + ENUM_VCA_EVENT_COMBINED_RULE = 37, //Ϲ¼ + ENUM_VCA_EVENT_SIT_QUIETLY = 38, //һ ¼ + ENUM_VCA_EVENT_HIGH_DENSITY_STATUS= 39, //Աۼ״̬ + ENUM_VCA_EVENT_RUNNING = 40, //ܼ + ENUM_VCA_EVENT_RETENTION = 41, // + ENUM_VCA_EVENT_BLACKBOARD_WRITE = 42, // + ENUM_VCA_EVENT_SITUATION_ANALYSIS = 43, //̬Ʒ + ENUM_VCA_EVENT_PLAY_CELLPHONE = 44, //ֻ + ENUM_VCA_EVENT_DURATION = 45, // + ENUM_VCA_EVENT_FAKECARD = 46 //α쿨 +} VCA_RULE_EVENT_TYPE_EX; + +//洩Խ +typedef enum _VCA_CROSS_DIRECTION_ +{ + VCA_BOTH_DIRECTION, // ˫ + VCA_LEFT_GO_RIGHT, // + VCA_RIGHT_GO_LEFT // +}VCA_CROSS_DIRECTION; + +//߽ṹ +typedef struct tagNET_VCA_LINE +{ + NET_VCA_POINT struStart; // + NET_VCA_POINT struEnd; //յ +}NET_VCA_LINE, *LPNET_VCA_LINE; + +//ͽṹ +typedef struct tagNET_VCA_POLYGON +{ + DWORD dwPointNum; //Ч ڵ33һΪЧ߽ΪЧ + NET_VCA_POINT struPos[VCA_MAX_POLYGON_POINT_NUM]; //α߽,ʮ +}NET_VCA_POLYGON, *LPNET_VCA_POLYGON; + +// +typedef struct tagNET_VCA_TRAVERSE_PLANE +{ + NET_VCA_LINE struPlaneBottom; //ױ + VCA_CROSS_DIRECTION dwCrossDirection; //Խ: 0-˫1-ң2-ҵ + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byPlaneHeight; //߶ + /* + Ŀֶ֧꣬ѡ嶨Ϊ + 0~Ŀ꣨ʾĿ꣬Ŀ궼м⣩ + 0x01 ~ ˣ + 0x02 ~ + 0x04 ~ + ֶֶ֧ѡλȡֵ3ʾ1+2. + */ + BYTE byDetectionTarget; + BYTE byPriority;//ȼ,0~,1~,2~ + BYTE byAlarmConfidence; //Ŷ, 0-,1-ϵ,2-ϸ,3- + BYTE byRecordConfidence; //¼Ŷ, 0-,1-ϵ,2-ϸ,3- + BYTE byRes2[34]; // +}NET_VCA_TRAVERSE_PLANE, *LPNET_VCA_TRAVERSE_PLANE; + +typedef struct tagNET_VCA_SIT_QUIETLY +{ + NET_VCA_POLYGON struRegion;//Χ + //򴥷˳0-˳򴥷1-˳򴥷 + DWORD dwDuration; //ʱ λs Χ1-3600 + BYTE byRes[4]; +} NET_VCA_SIT_QUIETLY, *LPNET_VCA_SIT_QUIETLY; + +///뿪 +typedef struct tagNET_VCA_AREA +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE bySensitivity; //ȲΧ[1,5] + /* + Ŀֶ֧꣬ѡ嶨Ϊ + 0~Ŀ꣨ʾĿ꣬Ŀ궼м⣩ + 0x01 ~ ˣ + 0x02 ~ + 0x04 ~ + ֶֶ֧ѡλȡֵ3ʾ1+2. + */ + BYTE byDetectionTarget; + BYTE byPriority;//ȼ,0~,1~,2~ + BYTE byRes[5]; +}NET_VCA_AREA, *LPNET_VCA_AREA; + +//ݱӳʱʶдͼƬIOһ£1뷢һ +//ֲ +typedef struct tagNET_VCA_INTRUSION +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDuration; //Ϊ¼ʱֵ: 1-120룬5룬жЧʱ ATMϵͳдļֵΪ 1-1000 + BYTE bySensitivity; //ȲΧ[1-100] + BYTE byRate; //ռȣδĿߴĿռıأһΪ + /* + Ŀֶ֧꣬ѡ嶨Ϊ + 0~Ŀ꣨ʾĿ꣬Ŀ궼м⣩ + 0x01 ~ ˣ + 0x02 ~ + 0x04 ~ + ֶֶ֧ѡλȡֵ3ʾ1+2. + */ + BYTE byDetectionTarget; + BYTE byPriority;//ȼ,0~,1~,2~ + BYTE byAlarmConfidence; //Ŷ, 0-,1-ϵ,2-ϸ,3- + BYTE byRecordConfidence; //¼Ŷ, 0-,1-ϵ,2-ϸ,3- +}NET_VCA_INTRUSION, *LPNET_VCA_INTRUSION; + +//ǻ +typedef struct tagNET_VCA_LOITER +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDuration; //ʱֵ1-120룬10 + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byRes[1]; + DWORD dwLoiterDistance; //гֵܾ100-5000Ĭ1000cm +}NET_VCA_LOITER, *LPNET_VCA_LOITER; + +//Ʒ/Ʒȡ +typedef struct tagNET_VCA_TAKE_LEFT +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDuration; //ʱֵ1-120룬10 + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byRes[5]; +}NET_VCA_TAKE_LEFT, *LPNET_VCA_TAKE_LEFT; + +//ͣ +typedef struct tagNET_VCA_PARKING +{ + NET_VCA_POLYGON struRegion; //Χ + WORD wDuration; //ʱֵ1-100룬10 + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byRes[5]; +}NET_VCA_PARKING, *LPNET_VCA_PARKING; + +//ƶ +typedef struct tagNET_VCA_RUN +{ + NET_VCA_POLYGON struRegion; //Χ + float fRunDistance; //˿ƶ, Χ: [0.1, 1.00] ģʽ ʵģʽ(1,20)m/s + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byMode; // 0 ģʽ 1 ʵģʽ + /* + Ŀֶ֧꣬ѡ嶨Ϊ + 0~Ŀ꣨ʾĿ꣬Ŀ궼м⣩ + 0x01 ~ ˣ + 0x02 ~ + 0x04 ~ + ֶֶ֧ѡλȡֵ3ʾ1+2. + */ + BYTE byDetectionTarget; + BYTE byRes; +}NET_VCA_RUN, *LPNET_VCA_RUN; + +//Աۼ +typedef struct tagNET_VCA_HIGH_DENSITY +{ + NET_VCA_POLYGON struRegion; //Χ + float fDensity; //ۼ, Χ: [0.1, 1.0] + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byRes; // ֽ + WORD wDuration; // Աۼֵ 20-360s +}NET_VCA_HIGH_DENSITY, *LPNET_VCA_HIGH_DENSITY; + +//˶ +typedef struct tagNET_VCA_VIOLENT_MOTION +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDuration; //˶ֵ1-50 + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byMode; //0-Ƶģʽ1-Ƶģʽ2-Ƶģʽ + BYTE byRes[4]; // +}NET_VCA_VIOLENT_MOTION, *LPNET_VCA_VIOLENT_MOTION; + +// ʸ߲ +typedef struct tagNET_VCA_REACH_HIGHT +{ + NET_VCA_LINE struVcaLine; //ʸ߾ + WORD wDuration; //ʸֵ߱1-120 + BYTE byRes[6]; // ֽ +}NET_VCA_REACH_HIGHT, *LPNET_VCA_REACH_HIGHT; + +// 𴲲 +typedef struct tagNET_VCA_GET_UP +{ + NET_VCA_POLYGON struRegion; //Χ + WORD wDuration; //𴲱ֵ1-100 + BYTE byMode; //ģʽ,0-ͨģʽ,1-ߵģʽ,2-ͨģʽ + BYTE bySensitivity; //ȲΧ[1,10] + BYTE byRes[4]; //ֽ +}NET_VCA_GET_UP, * LPNET_VCA_GET_UP; + +// Ʒ +typedef struct tagNET_VCA_LEFT +{ + NET_VCA_POLYGON struRegion; // Χ + WORD wDuration; // Ʒֵ 10-100 + BYTE bySensitivity; // ȲΧ[1,5] + BYTE byRes[5]; // ֽ +}NET_VCA_LEFT, *LPNET_VCA_LEFT; + +// Ʒȡ +typedef struct tagNET_VCA_TAKE +{ + NET_VCA_POLYGON struRegion; // Χ + WORD wDuration; // Ʒȡֵ10-100 + BYTE bySensitivity; // ȲΧ[1,5] + BYTE byRes[5]; // ֽ +}NET_VCA_TAKE, *LPNET_VCA_TAKE; + +typedef struct tagNET_VCA_OVER_TIME +{ + NET_VCA_POLYGON struRegion; // Χ + WORD wDuration; // ʱֵ 4s-60000s + BYTE byRes[6]; // ֽ +}NET_VCA_OVER_TIME, *LPNET_VCA_OVER_TIME; + +typedef struct tagNET_VCA_HUMAN_ENTER +{ + DWORD dwRes[23]; //ֽ +}NET_VCA_HUMAN_ENTER, *LPNET_VCA_HUMAN_ENTER; + +//ֽ +typedef struct tagNET_VCA_STICK_UP +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDuration; //ʱֵ4-60룬10 + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byRes[5]; +}NET_VCA_STICK_UP, *LPNET_VCA_STICK_UP; + +// +typedef struct tagNET_VCA_SCANNER +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDuration; //ʱ䣺4-60 + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byRes[5]; +}NET_VCA_SCANNER, *LPNET_VCA_SCANNER; + +//¼ +typedef struct tagNET_VCA_LEAVE_POSITION +{ + NET_VCA_POLYGON struRegion; //Χ + WORD wLeaveDelay; //˱ʱ䣬λs + WORD wStaticDelay; //˯ʱ䣬λs + BYTE byMode; //ģʽ0-¼1-˯¼2-˯¼3-ڸڣԱصλ + BYTE byPersonType; //ֵͣ0-ֵڣ1-˫ֵ + BYTE byOnPosition; //ڸ1-10Ĭ1 + BYTE bySensitivity; //ȲΧ[1,5] +}NET_VCA_LEAVE_POSITION, *LPNET_VCA_LEAVE_POSITION; + +//β +typedef struct tagNET_VCA_TRAIL +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wRes; /* */ + BYTE bySensitivity; /* ȲΧ[1,5] */ + BYTE byRes[5]; +}NET_VCA_TRAIL, *LPNET_VCA_TRAIL; + +//ز +typedef struct tagNET_VCA_FALL_DOWN +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDuration; /* ¼ֵ 1-60s*/ + BYTE bySensitivity; /* ȲΧ[1,5] */ + BYTE byHeightThreshold; //߶ֵΧ[0,250]Ĭ90λ + BYTE byRes[4]; +}NET_VCA_FALL_DOWN, *LPNET_VCA_FALL_DOWN; + +// +typedef struct tagNET_VCA_STANDUP +{ + NET_VCA_POLYGON struRegion; //Χ + BYTE bySensitivity; //ȲΧ[1,100] + BYTE byHeightThreshold; //߶ֵΧ[0,250]Ĭ130λ + WORD wDuration; //¼ֵ[1,3600]Ĭ2λ + BYTE byRes[4]; // +}NET_VCA_STANDUP, *LPNET_VCA_STANDUP; + + +//仯 +typedef struct tagNET_VCA_PEOPLENUM_CHANGE +{ + NET_VCA_POLYGON struRegion; //Χ + BYTE bySensitivity; //ȲΧ[1,100] + BYTE byPeopleNumThreshold; //ֵΧ[0,5]Ĭ1 + BYTE byDetectMode; //ⷽʽֵȽϡ1-ڣ2-Сڣ3-ڣ4- + BYTE byNoneStateEffective; //״̬ǷЧ0-Ч1-Ч + WORD wDuration; //ʱֵ[1,3600]Ĭ2λ + BYTE byPeopleNum; //ֻϱ豸0ʾֱ֧ϱ0xffʾΪ0 + BYTE byRes; // +}NET_VCA_PEOPLENUM_CHANGE, *LPNET_VCA_PEOPLENUM_CHANGE; + +//仯 +typedef struct tagNET_VCA_SPACING_CHANGE +{ + NET_VCA_POLYGON struRegion; //Χ + float fSpacingThreshold; //ֵΧ[0,10.0]Ĭ1.0λ + BYTE bySensitivity; //ȲΧ[1,100] + BYTE byDetectMode; //ⷽʽֵȽϡ1-ڣ2-С + WORD wDuration; //ʱֵ[1,3600]Ĭ2λ +}NET_VCA_SPACING_CHANGE, *LPNET_VCA_SPACING_CHANGE; + + +//ǿͻ +typedef struct tagNET_VCA_AUDIO_ABNORMAL +{ + WORD wDecibel; //ǿ + BYTE bySensitivity; //ȲΧ[1,100] + BYTE byAudioMode; //ģʽ0-ȼ⣬1-ֱֵ⣬2-ֱֵ + BYTE byEnable; //ʹܣǷ(ǿͻ䣬) + BYTE byThreshold; //ֵ[1,100] + BYTE byRes[54]; // +}NET_VCA_AUDIO_ABNORMAL, *LPNET_VCA_AUDIO_ABNORMAL; + +//ǿ 2014-03-21 +typedef struct tagNET_DVR_AUDIO_STEEP_DROP +{ + BYTE bySensitivity; /* ȲΧ[1,100] */ + BYTE byEnable; //ʹܣǷ(ǿͻ䣬) + BYTE byRes[6]; +}NET_DVR_AUDIO_STEEP_DROP, *LPNET_DVR_AUDIO_STEEP_DROP; + + +typedef struct tagNET_DVR_AUDIO_EXCEPTION +{ + DWORD dwSize; + BYTE byEnableAudioInException;//ʹܣǷ + BYTE byRes1[3]; + NET_VCA_AUDIO_ABNORMAL struAudioAbnormal; + NET_DVR_SCHEDTIME struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; //ʱ + NET_DVR_HANDLEEXCEPTION_V40 struHandleException; //쳣ʽ + DWORD dwMaxRelRecordChanNum ; //¼ͨ ֻ֧ + DWORD dwRelRecordChanNum ; //¼ͨ ʵֵ֧ + DWORD byRelRecordChan[MAX_CHANNUM_V30]; + NET_DVR_AUDIO_STEEP_DROP struAudioSteepDrop; //ǿ + BYTE byRes2[24]; +}NET_DVR_AUDIO_EXCEPTION, *LPNET_DVR_AUDIO_EXCEPTION; + +typedef struct tagNET_VCA_TOILET_TARRY +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDelay; //޳ʱʱ[1,3600]λ + BYTE byRes[6]; +}NET_VCA_TOILET_TARRY, *LPNET_VCA_TOILET_TARRY; + +typedef struct tagNET_VCA_YARD_TARRY +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDelay; //ŷ糡ʱ[1,120]λ + BYTE byRes[6]; +}NET_VCA_YARD_TARRY, *LPNET_VCA_YARD_TARRY; + +typedef struct tagNET_VCA_ADV_REACH_HEIGHT +{ + NET_VCA_POLYGON struRegion; //ʸ + DWORD dwCrossDirection; //Խ(VCA_CROSS_DIRECTION): 0-˫1-2-ҵ + BYTE byRes[4]; // ֽ +}NET_VCA_ADV_REACH_HEIGHT, * LPNET_VCA_ADV_REACH_HEIGHT; + +typedef struct tagNET_VCA_ADV_TRAVERSE_PLANE +{ + NET_VCA_POLYGON struRegion; // + DWORD dwCrossDirection; //Խ(VCA_CROSS_DIRECTION): 0-˫1-2-ҵ + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byRes[3]; //ֽ +} NET_VCA_ADV_TRAVERSE_PLANE,*LPNET_VCA_ADV_TRAVERSE_PLANE; + +typedef struct tagNET_VCA_PLAY_CELLPHONE +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDuration; //ֻʱʱ[1,600], Ĭ20 + BYTE byRes[6]; //ֽ +}NET_VCA_PLAY_CELLPHONE, *LPNET_VCA_PLAY_CELLPHONE; + +typedef struct tagNET_VCA_LECTURE +{ + NET_VCA_POLYGON struRegion;//Χ + WORD wDuration; //Ϊ¼ʱֵ: 1-10룬1룬жЧʱ + BYTE bySensitivity; //ȲΧ[1-100] + BYTE byAlarmState;//ֶֻν治ʾ0-,1-ʼ,2- + BYTE byTrackingMode ;//ģʽ0-Զ(Ĭ) , 1-ˮƽ, 2-ֱ + BYTE byZoomMode;//䱶ģʽ, 0-̶(Ĭ), 1-Զ + BYTE byZoomOver;//0-,1-䱶λ(ϴ¼Ϊлж) + BYTE byTrackStatus;//״̬ 0-1-ʼڿΣAȫ 2-ڸ٣2,д3 -ٶʧ2,ȫ +}NET_VCA_LECTURE, *LPNET_VCA_LECTURE; + +typedef struct tagNET_VCA_ANSWER +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE bySensitivity;//ȲΧ[1-100] + BYTE byAlarmState;//ֶֻν治ʾ0-,1-ʼ,2- + BYTE byZoomOver;//0-,1-䱶λ(ϴ¼Ϊлж) + BYTE byAnswerStudent;//0-1-ѧ2-ѧ3-ѧ,4-ѧ, 5-ѧ߶ + BYTE byRes[4]; // +}NET_VCA_ANSWER, *LPNET_VCA_ANSWER; + +//ṹ +typedef struct tagNET_VCA_RELATE_RULE_PARAM +{ + BYTE byRuleID; // 0-ʾ + BYTE byRes; // + WORD wEventType; //Ϊ¼ͣοVCA_RULE_EVENT_TYPE_EX +}NET_VCA_RELATE_RULE_PARAM,*LPNET_VCA_RELATE_RULE_PARAM; + +typedef struct tagNET_VCA_COMBINED_RULE_ +{ + //򴥷˳0-˳򴥷1-˳򴥷 + BYTE byRuleSequence; + BYTE byRes[7]; + DWORD dwMinInterval; //Сʱλ + DWORD dwMaxInterval; //ʱλ + NET_VCA_RELATE_RULE_PARAM struRule1Raram;//1 + NET_VCA_RELATE_RULE_PARAM struRule2Raram;//2 + BYTE byRes1[36]; +} NET_VCA_COMBINED_RULE, *LPNET_VCA_COMBINED_RULE; + +//¼ +typedef struct tagNET_VCA_BLACKBOARD_WRITE +{ + NET_VCA_POLYGON struRegion;//Χ򣬱ви + BYTE byTeacherState;//ʦ״̬0~ʦд1~ʦȫ2~̨״̬ + BYTE byWritingState;//״̬0~鿪ʼ1~ + BYTE byWritingArea;//0~飬1~ߣ2~ұ + BYTE byRes[5]; +}NET_VCA_BLACKBOARD_WRITE, *LPNET_VCA_BLACKBOARD_WRITE; + +//Աۼ״̬ +typedef struct tagNET_VCA_HIGH_DENSITY_STATUS +{ + NET_VCA_POLYGON struRegion; //Χ + float fDensity; //ۼ, Χ: [0.1, 1.0] + BYTE bySensitivity; //ȲΧ[1,5] + BYTE byRes[3]; // ֽ +}NET_VCA_HIGH_DENSITY_STATUS, *LPNET_VCA_HIGH_DENSITY_STATUS; + +//ܼ +typedef struct _NET_VCA_RUNNING_ +{ + NET_VCA_POLYGON struRegion; //Χ + DWORD dwSpeed; //ٶȣΧ[1,10] + WORD wDuration; // ʱֵ + BYTE byRunMode; //ģʽ0-,1˱,2:˱ + BYTE byRes; +}NET_VCA_RUNNING, *LPNET_VCA_RUNNING; + +// +typedef struct tagNET_VCA_RETENTION +{ + NET_VCA_POLYGON struRegion; // Χ + WORD wDuration; //ֵʱ䣨60-3600룩Ĭ1800 + BYTE byRes[6]; // ֽ +}NET_VCA_RETENTION, *LPNET_VCA_RETENTION; + +// ̬Ʒ +typedef struct tagNET_VCA_SITUATION_ANALYSIS +{ + NET_VCA_POLYGON struRegion; // Χ + WORD wPeopleNum; // + BYTE byRes[6]; // ֽ +}NET_VCA_SITUATION_ANALYSIS, *LPNET_VCA_SITUATION_ANALYSIS; + +// +typedef struct _NET_VCA_DURATION_ +{ + WORD wRelationEventType; //οVCA_RULE_EVENT_TYPE_EX + BYTE byRes[90]; +}NET_VCA_DURATION, *LPNET_VCA_DURATION; + +//α쿨 +typedef struct tagNET_VCA_FAKECARD +{ + NET_VCA_POLYGON struRegion; // Χ + BYTE bySensitivity; // ȲС1,5,Ĭ3 + BYTE byRes[7]; // ֽ +}NET_VCA_FAKECARD, *LPNET_VCA_FAKECARD; + +//¼ +typedef union tagNET_VCA_EVENT_UNION +{ + DWORD uLen[23]; // + NET_VCA_TRAVERSE_PLANE struTraversePlane; //Խ + NET_VCA_AREA struArea; ///뿪 + NET_VCA_INTRUSION struIntrusion; //ֲ + NET_VCA_LOITER struLoiter; //ǻ + NET_VCA_TAKE_LEFT struTakeTeft; //Ʒ/Ʒȡ + NET_VCA_PARKING struParking; //ͣ + NET_VCA_RUN struRun; //ƶ + NET_VCA_HIGH_DENSITY struHighDensity; //Աۼ + NET_VCA_VIOLENT_MOTION struViolentMotion; //˶ + NET_VCA_REACH_HIGHT struReachHight; //ʸ + NET_VCA_GET_UP struGetUp; // + NET_VCA_LEFT struLeft; //Ʒ + NET_VCA_TAKE struTake; // Ʒȡ + NET_VCA_HUMAN_ENTER struHumanEnter; //Ա + NET_VCA_OVER_TIME struOvertime; //ʱ + NET_VCA_STICK_UP struStickUp; //ֽ + NET_VCA_SCANNER struScanner; // + NET_VCA_LEAVE_POSITION struLeavePos; //ڲ + NET_VCA_TRAIL struTrail; //β + NET_VCA_FALL_DOWN struFallDown; //ز + NET_VCA_AUDIO_ABNORMAL struAudioAbnormal; //ǿͻ + NET_VCA_ADV_REACH_HEIGHT struReachHeight; //ʸ߲ + NET_VCA_TOILET_TARRY struToiletTarry; //޳ʱ + NET_VCA_YARD_TARRY struYardTarry; //ŷ糡 + NET_VCA_ADV_TRAVERSE_PLANE struAdvTraversePlane;//߾ + NET_VCA_LECTURE struLecture; //ڿ¼ + NET_VCA_ANSWER struAnswer; //ش¼ + NET_VCA_STANDUP struStandUp; // + NET_VCA_PEOPLENUM_CHANGE struPeopleNumChange; //仯 + NET_VCA_SPACING_CHANGE struSpacingChange; //仯 + NET_VCA_COMBINED_RULE struCombinedRule; //Ϲ + NET_VCA_SIT_QUIETLY struSitQuietly; // + NET_VCA_HIGH_DENSITY_STATUS struHighDensityStatus; //Աۼ״̬ + NET_VCA_RUNNING struRunning; //ܲ + NET_VCA_RETENTION struRetention;// + NET_VCA_BLACKBOARD_WRITE struBlackboardWrite; // + NET_VCA_SITUATION_ANALYSIS struSituationAnalysis; //̬Ʒ + NET_VCA_PLAY_CELLPHONE struPlayCellphone; //ֻ + NET_VCA_DURATION struDruation;// + NET_VCA_FAKECARD struFakeCard; //α쿨 +}NET_VCA_EVENT_UNION, *LPNET_VCA_EVENT_UNION; + +// ߴ +typedef enum _VCA_SIZE_FILTER_MODE_ +{ + IMAGE_PIX_MODE, //شС + REAL_WORLD_MODE, //ʵʴС + DEFAULT_MODE // Ĭģʽ +}SIZE_FILTER_MODE; +//ߴ +typedef struct tagNET_VCA_SIZE_FILTER +{ + BYTE byActive; //Ƿ񼤻ߴ 0- 0- + BYTE byMode; //ģʽSIZE_FILTER_MODE + BYTE byRes[2]; //0 + NET_VCA_RECT struMiniRect; //СĿ,ȫ0ʾ + NET_VCA_RECT struMaxRect; //Ŀ,ȫ0ʾ +}NET_VCA_SIZE_FILTER, *LPNET_VCA_SIZE_FILTER; + +//ṹ +typedef struct tagNET_VCA_ONE_RULE +{ + BYTE byActive; //Ƿ񼤻,0-,0- + BYTE byRes[7]; //Ϊ0ֶ + BYTE byRuleName[NAME_LEN]; // + VCA_EVENT_TYPE dwEventType; //Ϊ¼ + NET_VCA_EVENT_UNION uEventParam; //Ϊ¼ + NET_VCA_SIZE_FILTER struSizeFilter; //ߴ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_2];//ʱ + NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //ʽ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ,Ϊ1ʾͨ +}NET_VCA_ONE_RULE, *LPNET_VCA_ONE_RULE; + +//Ϊýṹ +typedef struct tagNET_VCA_RULECFG +{ + DWORD dwSize; //ṹ + BYTE byPicProType; //ʱͼƬʽ 0- 0-ϴ + BYTE byUpLastAlarm; //2011-04-06 Ƿϴһεı + BYTE byPicRecordEnable; /*2012-3-1ǷͼƬ洢, 0-, 1-*/ + BYTE byRes; + NET_DVR_JPEGPARA struPictureParam; //ͼƬṹ + NET_VCA_ONE_RULE struRule[MAX_RULE_NUM]; // +}NET_VCA_RULECFG, *LPNET_VCA_RULECFG; + +//ǰ豸ַϢܷDZʾǰ豸ĵַϢ豸ʾĵַ +/* +豸ģͨ(IPC/DVR/DVS/IVMS)ʱֶд豸IPַ˿ڣbyChannelbyIvmsChannel Ϊǰģͨ +eg: +struDevIP = ģͨӦ豸IPַ +wPort = ģͨӦ豸Ķ˿ +byChannel = Ӧģͨͨ +byIvmsChannel = Ӧģͨͨ + + 豸ͨ(DVR/DVS/IVMS)ʱֶдͨ豸IPַ˿ڣbyChannelΪͨ豸ͨţbyIvmsChannelΪͨ + eg: + struDevIP = ͨ豸IPַ + wPort = ͨ豸Ķ˿ + byChannel = ͨ豸ͨ + byIvmsChannel = ͨ +*/ +typedef struct tagNET_VCA_DEV_INFO +{ + NET_DVR_IPADDR struDevIP; //ǰ豸ַ + WORD wPort; //ǰ豸˿ںţ + BYTE byChannel; //ǰ豸ͨ + BYTE byIvmsChannel; // Ivms ͨ +}NET_VCA_DEV_INFO, *LPNET_VCA_DEV_INFO; + +typedef struct tagNET_DVR_TARGET_LEFT_REGION_ALARM +{ + DWORD dwSize; //ṹС + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + BYTE byTargetType;//Ŀ 0-ЧĿ꣬1-ʦ 2-ѧ + BYTE byLeftDirection;//Ŀ뿪0-,1-,2-,3-,4- + BYTE byTargetStatus;//0-() + BYTE byRes[125]; +}NET_DVR_TARGET_LEFT_REGION_ALARM,*LPNET_DVR_TARGET_LEFT_REGION_ALARM; + +/* ͼƬͼƬϢ */ +typedef struct +{ + /*20-˾ ˾ӳ̿ʼ, 21-˾绰, 22-˾ƣͼʻ, 23-˾ûĿǰڣ,24-˾ⲻͷ, 25-˾ϵȫ, + 26-˾ʰƷ, 27-˾Ƿ, 28-˾Զˮ, 29-˾, 31-˾δ*/ + DWORD dwPicType; /* ͼƬ */ + char *pPicBuf; /*ͼƬָ*/ + DWORD dwPicLen; /* ͼƬȣΪ0ʱʾûͼƬ */ + DWORD dwTime; /* ץͼʱ */ + char *pVideoBuf; /*Ƶָ, xxx.mp4*/ + DWORD dwVideoLen; /* ץͼƵijȣ0ʾûбƵ 20180518 */ + BYTE byRes[12]; /* Ԥ */ +}NET_DVR_DBD_PICTURE_INFO, *LPNET_DVR_DBD_PICTURE_INFO; + +/* λϢ */ +typedef struct +{/* 24 bytes */ + DWORD bValid; /* λϢǷЧ */ + DWORD dwLongitude; /* = ʵʶ*3600*100+ʵʷ*60*100+ʵ*100 */ + DWORD dwLatitude; /* γ = ʵʶ*3600*100+ʵʷ*60*100+ʵ*100 */ + DWORD dwVehicleSpeed; /* ٶ = ʵٶ*1000*100 */ + DWORD dwVehicleDirection; /* ٶȷ = ʵʷ*100 */ + DWORD dwAltitude; /* θ߶() */ +}NET_DVR_DBD_POSITION_INFO, *LPNET_DVR_DBD_POSITION_INFO; + +/* ״̬Ϣ */ +typedef struct +{/* 24 bytes */ + BYTE bySmoke; /* */ + BYTE byPhone; /* 绰 */ + BYTE byTiredDriving; /* ƣͼʻ */ + BYTE byNoVisualFront; /* ûĿǰ */ + BYTE byNoHead; /* */ + BYTE byWithoutBelt; /* ϵȫ */ + BYTE byPickingUpThing; /* ʰƷ */ + BYTE byYawn; /* Ƿ */ + BYTE byEatOrDrink; /* Ժ */ + BYTE byChatting; /* */ + BYTE byTampering; /* ڵIPC */ + BYTE byWithoutUniform; /* δ */ + BYTE byDriverCmpFail; /* ʶ쳣*/ + BYTE byDriverChange; /* ʻԱ*/ + BYTE byDriveLongTime; /*ʱʻ*/ + BYTE byInfraredBlockingSunglasses; /* ī */ + BYTE byOutOfWheel; /* 0-1-뷽̣2-˫뷽 */ + BYTE byRes[7]; +}NET_DVR_DBD_ALARM_STATE, *LPNET_DVR_DBD_ALARM_STATE; + +/* ʻΪϢ */ +typedef struct +{ + DWORD dwSize; /* ϴṹС 4*/ + BYTE byChannel; /* ͨ 1*/ + BYTE byLevel; /*ȼ,ǰֻ1*/ + BYTE byRes1[2]; /* ֽ 3*/ + NET_VCA_DEV_INFO struIpcInfo; /* IPͨϢ 24*/ + NET_DVR_DBD_POSITION_INFO struPosInfo; /* λϢ 24*/ + NET_DVR_DBD_PICTURE_INFO struPicInfo; /* ͼƬϢ*/ + NET_DVR_DBD_ALARM_STATE struAlarmState; /* ״̬Ϣ 24*/ + BYTE byRes2[20]; /* 20*/ +}NET_DVR_DBD_ALRAM_INFO, *LPNET_DVR_DBD_ALRAM_INFO; + +/* ADASͼƬϢ */ +typedef struct +{ + DWORD dwPicType; /* ͼƬ */ + char *pPicBuf; /*ͼƬָ*/ + DWORD dwPicLen; /* ͼƬȣΪ0ʱʾûͼƬ */ + DWORD dwTime; /* ץͼʱ */ + char *pVideoBuf; /*Ƶָ, xxx.mp4*/ + DWORD dwVideoLen; /* ץͼƵijȣ0ʾûбƵ 20180518 */ + BYTE byRes[12]; /* Ԥ */ +} NET_DVR_ADAS_PICTURE_INFO, *LPNET_DVR_ADAS_PICTURE_INFO; + +/* ADASλϢ */ +typedef struct +{/* 24 bytes */ + DWORD dwValid; /* λϢǷЧ */ + DWORD dwLongitude; /* = ʵʶ*3600*100+ʵʷ*60*100+ʵ*100 */ + DWORD dwLatitude; /* γ = ʵʶ*3600*100+ʵʷ*60*100+ʵ*100 */ + DWORD dwVehicleSpeed; /* ٶ = ʵٶ*1000*100 */ + DWORD dwVehicleDirection; /* ٶȷ = ʵʷ*100 */ + DWORD dwAltitude; /* θ߶() */ +}NET_DVR_ADAS_POSITION_INFO, *LPNET_DVR_ADAS_POSITION_INFO; + +/* ADAS״̬Ϣ */ +typedef struct +{/* 24 bytes */ + BYTE dwFcw; /* ǰײ0ޣ1¼ */ + BYTE dwLdw; /* ƫ룬0ޣ1ƫ룬2Ҳƫ */ + BYTE dwHmw; /* ⣬0ޣ1¼ */ + BYTE dwPcw; /* ײ0ޣ1¼ */ + BYTE dwBsd; /* ä⣬0ޣ1¼ , 2-Ҳä3-ä, 4-ä*/ + BYTE byAcc; /* ٣0ޣ1¼ */ + BYTE byBrake; /*٣0ޣ1¼ */ + BYTE byTurn; /* ת䣬0ޣ1Ҽת䣬2ת */ + BYTE byRollover; /* ෭0ޣ1¼ */ + BYTE byNoCourtesy; /* δˣ0ޣ1¼ */ + BYTE byTsr; /*ͨʶ棬0ޣ1٣2޸ߣ3޿ */ + BYTE byRes[13]; +}NET_DVR_ADAS_ALARM_STATE, *LPNET_DVR_ADAS_ALARM_STATE; + +/* ADASʻΪϢ */ +typedef struct +{ + DWORD dwSize; /* ϴṹС 4*/ + BYTE byChannel; /* ͨ 1*/ + BYTE byRes1[3]; /* ֽ 3*/ + NET_VCA_DEV_INFO struIpcInfo; /* IPͨϢ 28*/ + NET_DVR_ADAS_POSITION_INFO struPosInfo; /* λϢ 24*/ + NET_DVR_ADAS_PICTURE_INFO struPicInfo; /* ͼƬϢ*/ + NET_DVR_ADAS_ALARM_STATE struAlarmState; /* ״̬Ϣ 24*/ + BYTE byRes2[20]; /* 20*/ +}NET_DVR_ADAS_ALRAM_INFO, *LPNET_DVR_ADAS_ALRAM_INFO; + +/* гʵʱ */ +typedef struct +{ + DWORD dwSize; /* ϴṹС */ + DWORD dwSpeedValue; /* ٶֵ */ + DWORD dwSpeedPulse; /* */ + BYTE byUpgPercent; /* ȣ0-100ʧܷ255ÿοʼʱҪȽ0űʾ׼ʼ 20180508չ*/ + BYTE byRes1[3]; + DWORD dwVideoLostChans; /*λʾ0ʾ1-ʾƵʧһλʾһͨ*/ + BYTE byRes2[44]; +}NET_DVR_VEH_REALTIME_DATA_INFO, *LPNET_DVR_VEH_REALTIME_DATA_INFO; + +#define VCA_ATTEND_MAX_PIC_NUM 3 //¼ͼƬ +#define VCA_ATTEND_DRIVER_NAME_LEN 64 //Ϣ˾ֳ +#define VCA_ATTEND_CARD_ID_LEN 32 //Ϣ˾֤볤 +#define VCA_ATTEND_MAX_ALARM_ID_LEN 32 //¼Ψһŵ󳤶 + +typedef struct +{ + DWORD dwPicLen; //ͼƬȣΪ0ʱʾûͼƬ + char *pPicBuf; //ͼƬָ + BYTE byRes[12]; //Ԥ +}NET_DVR_VCA_ATTEND_PICDATA, *LPNET_DVR_VCA_ATTEND_PICDATA; + +/* ¼ͼƬϢ */ +typedef struct +{ + BYTE byPicNum; //ͼƬ + BYTE byRes1[3]; //Ԥ + NET_DVR_VCA_ATTEND_PICDATA struPicData[VCA_ATTEND_MAX_PIC_NUM]; //ͼƬ + DWORD dwVideoLen; //ץͼƵijȣ0ʾûбƵ + char *pVideoBuf; //Ƶָ + BYTE byRes[64]; //Ԥ +}NET_DVR_VCA_ATTEND_PICTURE_INFO, *LPNET_DVR_VCA_ATTEND_PICTURE_INFO; + +/* ¼ϴϢ*/ +typedef struct +{ + DWORD dwSize; // ϴṹС + BYTE byMethod; //ڷʽ 0-IC,1- + BYTE byStatus; //״̬ 0-1-ϰ,2-°ࣨ򻻰ࣩ + BYTE byCertIDType; //ʻԱ֤ͣ0-Ӫʸ֤1-֤ + BYTE byCertIDLen; //ʻԱҵʸ֤볤 + char sCertId[VCA_ATTEND_CARD_ID_LEN]; //ʻԱҵʸ֤ + DWORD dwTime; //ʱ + char sName[VCA_ATTEND_DRIVER_NAME_LEN]; //ʻԱ + char sAlarmIdNo[VCA_ATTEND_MAX_ALARM_ID_LEN]; //ʶ + NET_DVR_VCA_ATTEND_PICTURE_INFO struPicInfo; //ͼƬϢ + BYTE byRes[128]; // +}NET_DVR_VCA_ATTEND_ALARM_INFO, *LPNET_DVR_VCA_ATTEND_ALARM_INFO; + +//ߴ˲ +typedef struct tagNET_VCA_FILTER_STRATEGY +{ + BYTE byStrategy; //ߴ˲ 0 - 1-߶ȺͿȹ,2- + BYTE byRes[11]; // +}NET_VCA_FILTER_STRATEGY,*LPNET_VCA_FILTER_STRATEGY; + +//򴥷 +typedef struct tagNET_VCA_RULE_TRIGGER_PARAM +{ + BYTE byTriggerMode; //Ĵʽ0- ã1- 켣 2- Ŀ + BYTE byTriggerPoint; //㣬ʽΪ켣ʱЧ 0- ,1-,2- + BYTE byRes1[2]; // + float fTriggerArea; //Ŀٷֱ [0,100]ʽΪĿʱЧ + BYTE byRes2[4]; // +}NET_VCA_RULE_TRIGGER_PARAM,*LPNET_VCA_RULE_TRIGGER_PARAM; + +//ṹ +typedef struct tagNET_VCA_ONE_RULE_V41 +{ + BYTE byActive; //Ƿ񼤻,0-,0- + BYTE byRes1[4]; //Ϊ0ֶ + BYTE byEventTypeFlag; //־Ϊ¼ֶεЧԣ0-dwEventTypeЧ1-wEventTypeExЧ + //עֶbyEventTypeFlagֻòʱЧ豸ȡʱֱӴwEventTypeExȡ¼ͣжϴֶεֵ + WORD wEventTypeEx; //Ϊ¼չڴֶdwEventTypeοVCA_RULE_EVENT_TYPE_EX + BYTE byRuleName[NAME_LEN]; // + VCA_EVENT_TYPE dwEventType; //Ϊ¼ͣΪ˼ݣʹwEventTypeExȡ¼ + NET_VCA_EVENT_UNION uEventParam; //Ϊ¼ + NET_VCA_SIZE_FILTER struSizeFilter; //ߴ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //ʽ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ,Ϊ1ʾͨ + WORD wAlarmDelay; //ܱʱ0-5s,1-10,2-30s,3-60s,4-120s,5-300s,6-600s + BYTE byRes2[2]; // + NET_VCA_FILTER_STRATEGY struFilterStrategy; //ߴ˲ + NET_VCA_RULE_TRIGGER_PARAM struTriggerParam; //򴥷 + BYTE byRes[32]; +}NET_VCA_ONE_RULE_V41, *LPNET_VCA_ONE_RULE_V41; + +//Ϊýṹ +typedef struct tagNET_VCA_RULECFG_V41 +{ + DWORD dwSize; //ṹ + BYTE byPicProType; //ʱͼƬʽ 0- 0-ϴ + BYTE byUpLastAlarm; //2011-04-06 Ƿϴһεı + BYTE byPicRecordEnable; /*2012-3-1ǷͼƬ洢, 0-, 1-*/ + BYTE byRes1; + NET_DVR_JPEGPARA struPictureParam; //ͼƬṹ + NET_VCA_ONE_RULE_V41 struRule[MAX_RULE_NUM]; // + WORD wRelSnapChan[MAX_REL_SNAPCHAN_NUM]; //ץͼͨͨʱͬʱϴͨץͼƬ0ʾֵΪͨ + BYTE byRes[26]; +}NET_VCA_RULECFG_V41, *LPNET_VCA_RULECFG_V41; + +//ṹ +typedef struct NET_VCA_ONE_RULE_V42_ +{ + BYTE byActive; //Ƿ񼤻, 0-񣬷0- + BYTE byEventPriority;//¼ȼ 0-ͣ1-У2- + BYTE byBackgroundSuppression;// 0-ر 1- 2-Ӧ + BYTE byRes1[3]; //Ϊ0ֶ + WORD wEventType; //Ϊ¼ͣοVCA_RULE_EVENT_TYPE_EX + BYTE byRuleName[NAME_LEN/*32*/]; // + NET_VCA_EVENT_UNION uEventParam; //Ϊ¼ + NET_VCA_SIZE_FILTER struSizeFilter; //ߴ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + NET_DVR_HANDLEEXCEPTION_V40 struAlarmHandleType; /*ʽ*/ + //쳣ʽбŰ󶨣Ϊ0ʱʾıŷΧΪ1-64Ϊ1ʱʾıŷΧΪ65-128 ڽУ0xffffffffʾ ǰļںıЧ + DWORD dwRelRecordChan[MAX_CHANNUM_V30]; /* ¼ֽͨڵͨţʼֵ 0xffffffff*/ + //¼ͨŰ󶨣Ϊ0ʱʾͨŷΧΪ1-64Ϊ1ʱʾͨŷΧΪ65-128 ڽУ0xffffffffʾ ǰļںĹͨЧ + WORD wAlarmDelay; //ܱʱ0-5s,1-10,2-30s,3-60s,4-120s,5-300s,6-600s + BYTE byRes2[2]; // + NET_VCA_FILTER_STRATEGY struFilterStrategy; //ߴ˲ + NET_VCA_RULE_TRIGGER_PARAM struTriggerParam; //򴥷 + BYTE byRes[32]; +}NET_VCA_ONE_RULE_V42, *LPNET_VCA_ONE_RULE_V42; + + +typedef struct tagNET_DVR_PTZ_POSITION +{ + // ǷóóΪʱֶЧóλϢʱΪʹλ + BYTE byEnable; + BYTE byRes1[3]; // + BYTE byPtzPositionName[NAME_LEN]; //λ + NET_DVR_PTZPOS struPtzPos; //ptz + BYTE byRes2[40]; +}NET_DVR_PTZ_POSITION, *LPNET_DVR_PTZ_POSITION; + +//Ϊýṹ +typedef struct tagNET_VCA_RULECFG_V42 +{ + DWORD dwSize; //ṹͼС + BYTE byPicProType; //ʱͼƬʽ 0- 1-ϴ + BYTE byUpLastAlarm; //Ƿϴһεı0-1- + BYTE byPicRecordEnable; //ǷͼƬ洢, 0-, 1- + BYTE byRes1; + NET_DVR_JPEGPARA struPicParam; //ͼƬṹ + NET_VCA_ONE_RULE_V42 struRule[MAX_RULE_NUM_V42 /*16*/]; /* */ + WORD wRelSnapChan[MAX_REL_SNAPCHAN_NUM]; //ץͼͨͨʱͬʱϴͨץͼƬ0ʾֵΪͨ + BYTE byTrackEnable; //Ƿø + BYTE byRes2; + NET_DVR_PTZ_POSITION struPTZPosition; //λϢ + WORD wTrackDuration; //ٳʱ䣬λs + WORD wIntervalTime; //αʱ䣨룩[1-7200]ĬΪ600 + WORD wHeightLimit;//Ŀ߶ޣף[0-250]ĬΪ80cmСڴ˸߶ȵĿ꽫ΪĿм + BYTE byRes[58];// +}NET_VCA_RULECFG_V42, *LPNET_VCA_RULECFG_V42; + + +//Ŀṹ +typedef struct tagNET_VCA_TARGET_INFO +{ + DWORD dwID; //ĿID ,Աۼ߱ʱΪ0 + NET_VCA_RECT struRect; //Ŀ߽ + BYTE byRes[4]; // +}NET_VCA_TARGET_INFO, *LPNET_VCA_TARGET_INFO; + +//򻯵ĹϢ, ĻϢ +typedef struct tagNET_VCA_RULE_INFO +{ + BYTE byRuleID; //ID,0-7 + BYTE bySceneID; //ID,0Ч + WORD wEventTypeEx; //Ϊ¼չڴֶdwEventTypeοVCA_RULE_EVENT_TYPE_EX + BYTE byRuleName[NAME_LEN]; // + VCA_EVENT_TYPE dwEventType; //Ϊ¼ͣΪ˼ݣʹwEventTypeExȡ¼ + NET_VCA_EVENT_UNION uEventParam;//¼ +}NET_VCA_RULE_INFO, *LPNET_VCA_RULE_INFO; + +//Ϊϱṹ +typedef struct tagNET_VCA_RULE_ALARM +{ + DWORD dwSize; //ṹ + DWORD dwRelativeTime; //ʱ,ʷԭʵûã汾byRelativeTimeFlagΪ1ʱʾΪUTCʱ + DWORD dwAbsTime; //ʱ,ʷԭʵΪOSDʱ + NET_VCA_RULE_INFO struRuleInfo; //¼Ϣ + NET_VCA_TARGET_INFO struTargetInfo; //ĿϢ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + DWORD dwPicDataLen; //ͼƬij Ϊ0ʾûͼƬ0ʾýṹͼƬ*/ + BYTE byPicType; // 0-ץͼƬ 1-ԱͼƬ + BYTE byRelAlarmPicNum; //ͨͼƬ + BYTE bySmart;//IDS豸0(Ĭֵ)Smart Functiom Return 1 + BYTE byPicTransType; //ͼƬݴ䷽ʽ: 0-ƣ1-url + DWORD dwAlarmID; //IDԱʶͨϱ0ʾЧ + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byRelativeTimeFlag; //dwRelativeTimeֶǷЧ 0-Ч 1-ЧdwRelativeTimeʾUTCʱ + BYTE byAppendInfoUploadEnabled; //Ϣϴʹ 0-ϴ 1-ϴ + BYTE *pAppendInfo; //ָ򸽼ϢNET_VCA_APPEND_INFOָ룬byAppendInfoUploadEnabledΪ1ʱbyTimeDiffFlagΪ1ʱЧ + BYTE *pImage; //ָͼƬָ +}NET_VCA_RULE_ALARM, *LPNET_VCA_RULE_ALARM; + +//ΪϢ +typedef struct tagNET_VCA_APPEND_INFO +{ + DWORD dwSize; //ṹ + DWORD dwAppendPicLen;//ͼƬ + BYTE* pAppendPicBuff;//ͼƬָ + BYTE byAppendPicType;//ͼƬͣ0-;1-ɼͼƬ;2-ȳͼƬ; + BYTE byUID[64];//豸UID + BYTE byApplicationScene;// Ӧó 0- 1- + BYTE byRes1[2]; // + DWORD dwTargetSpeed; //״⵽Ŀٶ,λ:km/h + DWORD dwTargetDistance; //״⵽Ŀ,λ:m/ + BYTE byAlarmType;// 0-Ƶ 1-״ + BYTE byRadarChannel; //״ͨ1ʼۼ + BYTE byBrokenNetHttp; // ־λ0-شݣ1-ش + BYTE byAppendChannelType;//ͨͣ0-;1-ɼͨ;2-ȳͨ; + DWORD dwAppendChannel; //ͨͨ + BYTE byRes[44]; // +}NET_VCA_APPEND_INFO, *LPNET_VCA_APPEND_INFO; + + +//ΪDSPϢӽṹ +typedef struct tagNET_VCA_DRAW_MODE +{ + DWORD dwSize; + BYTE byDspAddTarget; //ǷĿ + BYTE byDspAddRule; //Ƿӹ + BYTE byDspPicAddTarget; //ץͼǷĿ + BYTE byDspPicAddRule; //ץͼǷӹ + BYTE byRes[4]; +}NET_VCA_DRAW_MODE, *LPNET_VCA_DRAW_MODE; + +// +typedef enum tagOBJECT_TYPE_ENUM +{ + ENUM_OBJECT_TYPE_COAT = 1 // +}OBJECT_TYPE_ENUM; + +//ɫṹ +typedef struct tagNET_DVR_OBJECT_COLOR_COND +{ + DWORD dwChannel; //ͨ + DWORD dwObjType; //ͣμOBJECT_TYPE_ENUM + BYTE byRes[64]; // +}NET_DVR_OBJECT_COLOR_COND,*LPNET_DVR_OBJECT_COLOR_COND; + +//ͼƬ +typedef struct tagNET_DVR_PIC +{ + BYTE byPicType; //ͼƬͣ1-jpg + BYTE byRes1[3]; // + DWORD dwPicWidth; //ͼƬ + DWORD dwPicHeight; //ͼƬ߶ + DWORD dwPicDataLen; //ͼƬʵʴС + DWORD dwPicDataBuffLen; //ͼƬݻС + BYTE* byPicDataBuff; //ͼƬݻ + BYTE byRes2[40]; // +}NET_DVR_PIC,*LPNET_DVR_PIC; + +//ɫ +typedef union tagNET_DVR_OBJECT_COLOR_UNION +{ + NET_DVR_COLOR struColor; //ɫֵ + NET_DVR_PIC struPicture; //ͼƬ + BYTE byRes[64]; // +}NET_DVR_OBJECT_COLOR_UNION,*LPNET_DVR_OBJECT_COLOR_UNION; + +//ɫṹ +typedef struct tagNET_DVR_OBJECT_COLOR +{ + DWORD dwSize; //ṹС + BYTE byEnable; //0-ã1- + BYTE byColorMode; //ȡɫʽ1-ɫֵ2-ͼƬ + BYTE byRes1[2]; // + NET_DVR_OBJECT_COLOR_UNION uObjColor; //ɫ壬ȡֵȡɫʽ + BYTE byRes2[64]; // +}NET_DVR_OBJECT_COLOR, *LPNET_DVR_OBJECT_COLOR; + +// +typedef enum tagAREA_TYPE_ENUM +{ + ENUM_OVERLAP_REGION = 1,//ͬ + ENUM_BED_LOCATION = 2 //λ +}AREA_TYPE_ENUM; + +// +typedef struct tagNET_DVR_AUXAREA +{ + DWORD dwAreaType; //ͣμAREA_TYPE_ENUM + BYTE byEnable; //0-ã1- + BYTE byRes1[3]; // + NET_VCA_POLYGON struPolygon; // + BYTE byRes2[16]; // +}NET_DVR_AUXAREA,*LPNET_DVR_AUXAREA; + +//б +typedef struct tagNET_DVR_AUXAREA_LIST +{ + DWORD dwSize; // ṹС + NET_DVR_AUXAREA struArea[MAX_AUXAREA_NUM]; // + BYTE byRes2[64]; // +}NET_DVR_AUXAREA_LIST,*LPNET_DVR_AUXAREA_LIST; + +//ͨģʽ +typedef enum tagCHAN_WORKMODE_ENUM +{ + ENUM_CHAN_WORKMODE_INDEPENDENT = 1, //ģʽ + ENUM_CHAN_WORKMODE_MASTER = 2, //ģʽ + ENUM_CHAN_WORKMODE_SLAVE = 3 //ģʽ +}CHAN_WORKMODE_ENUM; + +//ͨģʽṹ +typedef struct tagNET_DVR_CHANNEL_WORKMODE +{ + DWORD dwSize; //ṹС + BYTE byWorkMode; //ģʽμCHAN_WORKMODE_ENUM + BYTE byRes[63]; // +}NET_DVR_CHANNEL_WORKMODE,*LPNET_DVR_CHANNEL_WORKMODE; + +//豸ͨṹ +typedef struct tagNET_DVR_CHANNEL +{ + BYTE byAddress[MAX_DOMAIN_NAME]; //豸IP + WORD wDVRPort; //˿ں + BYTE byRes1[2]; // + BYTE sUserName[NAME_LEN]; //û + BYTE sPassword[PASSWD_LEN]; // + DWORD dwChannel; //ͨ + BYTE byRes2[32]; // +}NET_DVR_CHANNEL,*LPNET_DVR_CHANNEL; + +//ͨϢ +typedef union tagNET_DVR_SLAVE_CHANNEL_UNION +{ + BYTE byRes[152]; //С + DWORD dwLocalChannel; //ͨ + NET_DVR_CHANNEL struRemoteChannel; //Զͨ +}NET_DVR_SLAVE_CHANNEL_UNION,*LPNET_DVR_SLAVE_CHANNEL_UNION; + +//ͨṹ +typedef struct tagNET_DVR_SLAVE_CHANNEL_PARAM +{ + BYTE byChanType; //ͨͣ1-ͨ2-Զͨ + BYTE byRes1[3]; // + NET_DVR_SLAVE_CHANNEL_UNION uSlaveChannel; //ͨ壬ȡֵbyChanType + BYTE byRes2[64]; // +}NET_DVR_SLAVE_CHANNEL_PARAM,*LPNET_DVR_SLAVE_CHANNEL_PARAM; + + +//ͨýṹ +typedef struct tagNET_DVR_SLAVE_CHANNEL_CFG +{ + DWORD dwSize; //ṹС + NET_DVR_SLAVE_CHANNEL_PARAM struChanParam[MAX_SLAVE_CHANNEL_NUM];//ͨ + BYTE byRes[64]; // +}NET_DVR_SLAVE_CHANNEL_CFG,*LPNET_DVR_SLAVE_CHANNEL_CFG; + +//Ƶϼ¼ +typedef enum tagVQD_EVENT_ENUM +{ + ENUM_VQD_EVENT_BLUR = 1, //ͼģ + ENUM_VQD_EVENT_LUMA = 2, //쳣 + ENUM_VQD_EVENT_CHROMA = 3, //ͼƫɫ + ENUM_VQD_EVENT_SNOW = 4, //ѩ + ENUM_VQD_EVENT_STREAK = 5, //Ƹ + ENUM_VQD_EVENT_FREEZE = 6, //涳 + ENUM_VQD_EVENT_SIGNAL_LOSS = 7, //źŶʧ + ENUM_VQD_EVENT_PTZ = 8, //̨ʧ + ENUM_VQD_EVENT_SCNENE_CHANGE = 9, //ͻ + ENUM_VQD_EVENT_VIDEO_ABNORMAL = 10, //Ƶ쳣 + ENUM_VQD_EVENT_VIDEO_BLOCK = 11, //Ƶڵ + ENUM_VQD_EVENT_CLARTY = 12, //쳣 + ENUM_VQD_EVENT_JITTER = 13, //涶 + ENUM_VQD_EVENT_FLOWERS = 14, // + ENUM_VQD_EVENT_NOISE = 15, // + ENUM_VQD_EVENT_GHOST = 16, //쳣 + ENUM_VQD_EVENT_PURPLE = 17, //ϱ + ENUM_VQD_EVENT_ICR = 18, // ICR쳣 + ENUM_VQD_EVENT_PROTECTFILM = 19 //Ĥδ˺ +}VQD_EVENT_ENUM; + +//Ƶ¼ṹ +typedef struct tagNET_DVR_VQD_EVENT_COND +{ + DWORD dwChannel; //ͨ + DWORD dwEventType; //¼ͣμVQD_EVENT_ENUM + BYTE byRes[64]; // +}NET_DVR_VQD_EVENT_COND,*LPNET_DVR_VQD_EVENT_COND; + +//Ƶ¼ +typedef struct tagNET_DVR_VQD_EVENT_PARAM +{ + BYTE byThreshold; //ֵΧ[0,100] + BYTE byTriggerMode; //1-2-δ + BYTE byUploadPic; //0-ϴͼƬ1-ϴͼƬǷϴͼƬº󶼿Դ豸ȡ¼ӦµһűͼƬμӿNET_DVR_StartDownload + BYTE byRes1; // + DWORD dwTimeInterval; //ʱΧ[0,3600] λ + BYTE byRes2[64]; // +}NET_DVR_VQD_EVENT_PARAM,*LPNET_DVR_VQD_EVENT_PARAM; + +//Ƶ¼ +typedef struct tagNET_DVR_VQD_EVENT_RULE +{ + DWORD dwSize; //ṹС + BYTE byEnable; //0-ã1- + BYTE byRes1[3]; // + NET_DVR_VQD_EVENT_PARAM struEventParam; //Ƶ¼ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //ʽ + BYTE byRelRecordChan[MAX_IVMS_IP_CHANNEL]; //¼ͨ1ʾͨ0ʾ + BYTE byRes2[128]; // +}NET_DVR_VQD_EVENT_RULE,*LPNET_DVR_VQD_EVENT_RULE; + +//׼ +typedef struct tagNET_DVR_BASELINE_SCENE +{ + DWORD dwSize; //ṹС + BYTE byEnable; //0-ã1- + BYTE byRes[63]; // +}NET_DVR_BASELINE_SCENE,*LPNET_DVR_BASELINE_SCENE; + +//׼ṹ +typedef struct tagNET_DVR_CONTROL_BASELINE_SCENE_PARAM +{ + DWORD dwSize; //ṹС + DWORD dwChannel; //ͨ + BYTE byCommand; //ͣ1-ֶαݲʹã2-»׼ + BYTE byRes[127]; // +}NET_DVR_CONTROL_BASELINE_SCENE_PARAM,*LPNET_DVR_CONTROL_BASELINE_SCENE_PARAM; + +//Ƶϱṹ +typedef struct tagNET_DVR_VQD_ALARM +{ + DWORD dwSize; //ṹС + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + DWORD dwEventType; //¼ͣοVQD_EVENT_ENUM + float fThreshold; //ֵ[0.000,1.000] + DWORD dwPicDataLen; //ͼƬȣΪ0ʾûͼƬ + BYTE *pImage; //ָͼƬָ + BYTE byRes[128]; // +}NET_DVR_VQD_ALARM,*LPNET_DVR_VQD_ALARM; + +//궨ӽṹ +typedef struct tagNET_DVR_CB_POINT +{ + NET_VCA_POINT struPoint; //궨㣬ǹ + NET_DVR_PTZPOS struPtzPos; //PTZ + BYTE byRes[8]; +}NET_DVR_CB_POINT, LPNET_DVR_CB_POINT; + +//궨ýṹ +typedef struct tagNET_DVR_TRACK_CALIBRATION_PARAM +{ + BYTE byPointNum; //Ч궨 + BYTE byRes[3]; + NET_DVR_CB_POINT struCBPoint[MAX_CALIB_PT]; //궨 +}NET_DVR_TRACK_CALIBRATION_PARAM, *LPNET_DVR_TRACK_CALIBRATION_PARAM; + +//ýṹ +typedef struct tagNET_DVR_TRACK_CFG +{ + DWORD dwSize; //ṹ + BYTE byEnable; //궨ʹ + BYTE byFollowChan; // ƵĴͨ + BYTE byDomeCalibrate; //ܸ궨1 0 + BYTE byRes; // ֽ + NET_DVR_TRACK_CALIBRATION_PARAM struCalParam; //궨 +}NET_DVR_TRACK_CFG, *LPNET_DVR_TRACK_CFG ; + +//ģʽ +typedef enum _TRACK_MODE_ +{ + MANUAL_CTRL = 0, //ֶ + ALARM_TRACK // +}TRACK_MODE; + +//ֶƽṹ +typedef struct tagNET_DVR_MANUAL_CTRL_INFO +{ + NET_VCA_POINT struCtrlPoint; + BYTE byRes[8]; +}NET_DVR_MANUAL_CTRL_INFO, *LPNET_DVR_MANUAL_CTRL_INFO ; + +//ģʽṹ +typedef struct tagNET_DVR_TRACK_MODE +{ + DWORD dwSize; //ṹ + BYTE byTrackMode; //ģʽ + BYTE byRuleConfMode; //øģʽ0-ø٣1-Զø + BYTE byRes[2]; //0 + union + { + DWORD dwULen[4]; + NET_DVR_MANUAL_CTRL_INFO struManualCtrl;//ֶٽṹ + }uModeParam; +}NET_DVR_TRACK_MODE,*LPNET_DVR_TRACK_MODE; + +typedef struct tagNET_DVR_ALARM_JPEG +{ + BYTE byPicProType; /*ʱͼƬʽ 0- 1-ϴ*/ + BYTE byRes[3]; //ֽ + NET_DVR_JPEGPARA struPicParam; /*ͼƬṹ*/ +}NET_DVR_ALARM_JPEG, *LPNET_DVR_ALARM_JPEG; + +/**********************ipc/d5.3.0********************************/ +typedef struct tagNET_DVR_PHY_RATIO +{ + DWORD dwSize; + DWORD dwPhysicsRatio;// + BYTE byRes[60]; +}NET_DVR_PHY_RATIO, *LPNET_DVR_PHY_RATIO; + +typedef struct tagNET_DVR_SLAVECAMERA_COND +{ + DWORD dwSize; + DWORD dwChannel; + BYTE byID;//Ӹ ID[1,4] + BYTE byRes1[3]; + DWORD dwSceneID;// scene Id + BYTE byRes[56]; +}NET_DVR_SLAVECAMERA_COND, *LPNET_DVR_SLAVECAMERA_COND; + +typedef struct tagNET_DVR_SLAVECAMERA_CFG +{ + DWORD dwSize; + BYTE byAddressType; //0-ʵipv4 ipv6ַ 1- + // unionServerʹʵʵַ + WORD wPort; /*˿*/ + BYTE byLoginStatus; /*豸ĵ½״̬ 0-logout,1-login*/ + union + { + struct + { + BYTE szDomain[MAX_DOMAIN_NAME/*64*/];//ַ + BYTE byRes1[80]; + }struDomain; + struct + { + NET_DVR_IPADDR struIp;/*IPַ*/ //IPv4 IPv6ַ, 144ֽ + } struAddrIP; + }unionServer; //ʹṹͨbyAddressTypeֶαʾIPַ 64 + BYTE szUserName[NAME_LEN/*32*/]; /*û*/ + BYTE szPassWord[PASSWD_LEN/*16*/]; /**/ + BYTE byRes1[128]; +}NET_DVR_SLAVECAMERA_CFG, *LPNET_DVR_SLAVECAMERA_CFG; + +typedef struct tagNET_DVR_SLAVECAMERA_PARAM +{ + BYTE byLinkStatus ;//״̬ 0- δӣ1- + BYTE byRes[15]; +}NET_DVR_SLAVECAMERA_PARAM, *LPNET_DVR_SLAVECAMERA_PARAM; + +typedef struct tagNET_DVR_SLAVECAMERA_STATUS +{ + DWORD dwSize; + NET_DVR_SLAVECAMERA_PARAM struSlaveCamera[MAX_SLAVECAMERA_NUM/*8*/];//±0ʾID 1, + BYTE byRes[64]; +}NET_DVR_SLAVECAMERA_STATUS, *LPNET_DVR_SLAVECAMERA_STATUS; + +typedef struct tagNET_PTZ_INFO +{ + float fPan; + float fTilt; + float fZoom; + DWORD dwFocus;// ۽۽Χһ0-100000 + BYTE byRes[4]; +}NET_PTZ_INFO, *LPNET_PTZ_INFO; + +typedef struct tagNET_DVR_BV_CALIB_POSITION +{ + DWORD dwSize; //ṹ + NET_PTZ_INFO struInitialPos; //ʼ + NET_PTZ_INFO struAdjustPos; // + BYTE byRes[300]; // +}NET_DVR_BV_CALIB_POSITION, *LPNET_DVR_BV_CALIB_POSITION; + +typedef struct tagNET_DVR_HUMAN_CALIB_CFG +{ + DWORD dwSize; //ṹ + NET_VCA_POINT struLeftPos; // + NET_VCA_POINT struRightPos; // + BYTE byRes[300]; // +}NET_DVR_HUMAN_CALIB_CFG, *LPNET_DVR_HUMAN_CALIB_CFG; + +typedef struct tagNET_DVR_CALIB_PARAM +{ + NET_PTZ_INFO struPtzInfo; + NET_VCA_POINT struCalibCoordinates;//궨 + int iHorValue;//˫Ŀ궨 ˮƽֵ cmֶģʽЧ ˫Ŀã + int iVerValue;//˫Ŀ궨 ֱֵ cmֶģʽЧ ˫Ŀã + BYTE byRes[8]; +}NET_DVR_CALIB_PARAM, *LPNET_DVR_CALIB_PARAM; + +typedef struct tagNET_DVR_SLAVECAMERA_CALIB_CFG +{ + DWORD dwSize; + BYTE byCalibMode;//궨ģʽ: 0-,1-Զ궨, 2-ֶ궨 + BYTE byRes[3]; + //±0ʾID 1 + //ֶ궨ģʽ֧ã&&ȡԶģʽֻ֧ȡ + NET_DVR_CALIB_PARAM struCalibParam[MAX_CALIB_NUM/*6*/];//ֶֻ궨ģʽЧ + BYTE byRes1[64]; +}NET_DVR_SLAVECAMERA_CALIB_CFG, *LPNET_DVR_SLAVECAMERA_CALIB_CFG; + +typedef struct tagNET_DVR_TRACKING +{ + DWORD dwSize; //ṹ + BYTE byEnable; //ʹ 0-false,1-true + BYTE byMode; //ģʽ 0-رգ1-ֶ2-Զ + WORD wTrackingTime;//ʱ䣺[0,60]s + NET_VCA_POLYGON struRegion;//ֶĿΧ + BYTE byRes[64]; +}NET_DVR_TRACKING,*LPNET_DVR_TRACKING; + +typedef struct tagNET_DVR_SLAVECAMERA_CALIB_V50 +{ + DWORD dwSize; + BYTE byCalibMode;//궨ģʽ: 0-,1-Զ궨, 2-ֶ궨 + BYTE byRes[3]; + //±0ʾID 1 + //ֶ궨ģʽ֧ã&&ȡԶģʽֻ֧ȡ + NET_DVR_CALIB_PARAM struCalibParam[MAX_CALIB_NUM_EX/*20*/]; + BYTE byRes1[64]; +}NET_DVR_SLAVECAMERA_CALIB_V50, *LPNET_DVR_SLAVECAMERA_CALIB_V50; + +typedef struct tagNET_DVR_SLAVECAMERA_CALIB_V51 +{ + DWORD dwSize; + BYTE byCalibMode;//궨ģʽ: 0-,1-Զ궨, 2-ֶ궨 + BYTE byRes[3]; + //±0ʾID 1 + //ֶ궨ģʽ֧ã&&ȡԶģʽֻ֧ȡ + NET_DVR_CALIB_PARAM struCalibParam[MAX_CALIB_NUM_EX/*20*/]; + BYTE byRes1[512]; +}NET_DVR_SLAVECAMERA_CALIB_V51, *LPNET_DVR_SLAVECAMERA_CALIB_V51; + +//⹦ץͼṹӥĿ +typedef struct tagNET_DVR_CAPTURE_PICTURE_RESULT +{ + DWORD dwSize;//ṹС + DWORD dwReturnPicSize;//صͼƬС + BYTE byRes[256]; +}NET_DVR_CAPTURE_PICTURE_RESULT, *LPNET_DVR_CAPTURE_PICTURE_RESULT; + +typedef struct tagNET_DVR_GOTOSCENE_COND +{ + DWORD dwSize; + DWORD dwChannel; + DWORD dwSceneID;//ID + BYTE byRes[512]; +}NET_DVR_GOTOSCENE_COND, *LPNET_DVR_GOTOSCENE_COND; + +typedef struct tagNET_DVR_TRACK_INITPOSTION +{ + DWORD dwSize; + DWORD dwChannel; + BYTE byID;//Ӹ ID[1,4] + BYTE byRes[127]; +}NET_DVR_TRACK_INITPOSTION, *LPNET_DVR_TRACK_INITPOSTION; + +typedef struct tagNET_DVR_MANUAL_TRACKRATIO +{ + DWORD dwSize; + BYTE byCoefficient;//ϵ[1,60] + BYTE byRes[127]; +}NET_DVR_MANUAL_TRACKRATIO, *LPNET_DVR_MANUAL_TRACKRATIO; + +/**********************ipc/d5.3.0********************************/ + +//Ϊṹ +//ṹ +typedef struct tagNET_IVMS_ONE_RULE_ +{ + BYTE byActive; /* Ƿ񼤻,0-, 0- */ + BYTE byRes1[7]; //Ϊ0ֶ + BYTE byRuleName[NAME_LEN]; // + VCA_EVENT_TYPE dwEventType; //Ϊ¼ + NET_VCA_EVENT_UNION uEventParam;//Ϊ¼ + NET_VCA_SIZE_FILTER struSizeFilter; //ߴ + BYTE byRes2[68]; /*Ϊ0*/ +}NET_IVMS_ONE_RULE, *LPNET_IVMS_ONE_RULE; + +// ǹṹ +typedef struct tagNET_IVMS_RULECFG +{ + NET_IVMS_ONE_RULE struRule[MAX_RULE_NUM]; // +}NET_IVMS_RULECFG, *LPNET_IVMS_RULECFG; + +// IVMSΪýṹ +typedef struct tagNET_IVMS_BEHAVIORCFG +{ + DWORD dwSize; + BYTE byPicProType; //ʱͼƬʽ 0- 0-ϴ + BYTE byRes[3]; + NET_DVR_JPEGPARA struPicParam; //ͼƬṹ + NET_IVMS_RULECFG struRuleCfg[MAX_DAYS][MAX_TIMESEGMENT];//ÿʱζӦ +} NET_IVMS_BEHAVIORCFG, *LPNET_IVMS_BEHAVIORCFG; + +//ܷȡƻӽṹ +typedef struct tagNET_IVMS_DEVSCHED +{ + NET_DVR_SCHEDTIME struTime; //ʱ + NET_DVR_PU_STREAM_CFG struPUStream; //ǰȡ +}NET_IVMS_DEVSCHED, *LPNET_IVMS_DEVSCHED; + +//ܷDzýṹ +typedef struct tagNET_IVMS_STREAMCFG +{ + DWORD dwSize; + NET_IVMS_DEVSCHED struDevSched[MAX_DAYS][MAX_TIMESEGMENT];//ʱǰȡԼϢ +} NET_IVMS_STREAMCFG, *LPNET_IVMS_STREAMCFG; + +// +typedef struct tagNET_VCA_MASK_REGION +{ + BYTE byEnable; //Ƿ񼤻, 0-񣬷0- + BYTE byRes[3]; //0 + NET_VCA_POLYGON struPolygon; //ζ +}NET_VCA_MASK_REGION, * LPNET_VCA_MASK_REGION; + +//ṹ +typedef struct tagNET_VCA_MASK_REGION_LIST +{ + DWORD dwSize; //ṹ + BYTE byRes[4]; //0 + NET_VCA_MASK_REGION struMask[MAX_MASK_REGION_NUM]; // +}NET_VCA_MASK_REGION_LIST, *LPNET_VCA_MASK_REGION_LIST; + + +//ATM +typedef struct tagNET_VCA_ENTER_REGION//ֹATM +{ + DWORD dwSize; + BYTE byEnable; //Ƿ񼤻0-񣬷0- + BYTE byRes1[3]; + NET_VCA_POLYGON struPolygon; // + BYTE byRes2[16]; +}NET_VCA_ENTER_REGION, * LPNET_VCA_ENTER_REGION; + +//IVMS +typedef struct tagNET_IVMS_MASK_REGION_LIST +{ + DWORD dwSize; //ṹ + NET_VCA_MASK_REGION_LIST struList[MAX_DAYS][ MAX_TIMESEGMENT]; +}NET_IVMS_MASK_REGION_LIST, *LPNET_IVMS_MASK_REGION_LIST; + +//IVMSATM +typedef struct tagNET_IVMS_ENTER_REGION +{ + DWORD dwSize; + NET_VCA_ENTER_REGION struEnter[MAX_DAYS][ MAX_TIMESEGMENT]; // +}NET_IVMS_ENTER_REGION, *LPNET_IVMS_ENTER_REGION; + +// ivms ͼƬϴṹ +typedef struct tagNET_IVMS_ALARM_JPEG +{ + BYTE byPicProType; + BYTE byRes[3]; + NET_DVR_JPEGPARA struPicParam; +}NET_IVMS_ALARM_JPEG, *LPNET_IVMS_ALARM_JPEG; + +// IVMS +typedef struct tagNET_IVMS_SEARCHCFG +{ + DWORD dwSize; + NET_DVR_MATRIX_DEC_REMOTE_PLAY struRemotePlay;// Զ̻ط + NET_IVMS_ALARM_JPEG struAlarmJpeg; // ϴͼƬ + NET_IVMS_RULECFG struRuleCfg; //IVMS Ϊ +}NET_IVMS_SEARCHCFG, *LPNET_IVMS_SEARCHCFG; + +//궨ṹ +typedef struct tagNET_DVR_TRACK_CALIBRATION_PARAM_V41 +{ + BYTE byPointNum; //Ч궨 + BYTE byRes[3]; // + NET_DVR_CB_POINT struCBPoint[MAX_CALIB_PT]; //궨 + NET_DVR_PTZPOS struHorizonPtzPos; //ˮƽPTZ + BYTE byRes2[256]; // +}NET_DVR_TRACK_CALIBRATION_PARAM_V41, *LPNET_DVR_TRACK_CALIBRATION_PARAM_V41; + +//豸ò +typedef struct tagNET_DVR_TRACK_DEV_PARAM_ +{ + DWORD dwSize; //ṹС + BYTE byEnable; //ô˸豸, 0-, 1 - + BYTE byTransMode; //ͨѶʽ0-SDK1-485 + BYTE byRes1[2]; // + NET_DVR_CHANNEL struTrackDevChan; //豸 + NET_DVR_TRACK_CALIBRATION_PARAM_V41 struCalParam; //豸궨 + BYTE byRes2[256]; // +}NET_DVR_TRACK_DEV_PARAM, *LPNET_DVR_TRACK_DEV_PARAM; +/************************************end******************************************/ +//NAS֤ +typedef struct tagNET_DVR_IDENTIFICATION_PARAM +{ + BYTE sUserName[NAME_LEN]; /* û 32*/ + BYTE sPassword[PASSWD_LEN]; /* 16*/ + BYTE byRes1[4]; // +}NET_DVR_IDENTIFICATION_PARAM, *LPNET_DVR_IDENTIFICATION_PARAM; + +typedef union tagNET_DVR_MOUNT_PARAM_UNION +{ + BYTE uLen[52]; //ṹС + NET_DVR_IDENTIFICATION_PARAM struIdentificationParam;//(SMB/CIFSʱЧ) +} NET_DVR_MOUNT_PARAM_UNION, *LPNET_DVR_MOUNT_PARAM_UNION; + +typedef struct tagNET_DVR_NAS_MOUNT_PARAM +{ + BYTE byMountType; //0,1~NFS, 2~ SMB/CIFS + BYTE byRes[3]; + NET_DVR_MOUNT_PARAM_UNION uMountParam; +}NET_DVR_NAS_MOUNT_PARAM, *LPNET_DVR_NAS_MOUNT_PARAM; + +typedef union tagNET_DVR_MOUNTMETHOD_PARAM_UNION +{ + BYTE uLen[56]; //ṹС + NET_DVR_NAS_MOUNT_PARAM struNasMountParam;//NASطʽ (byNetDiskTypeΪNFS(NAS)ʱЧ) +}NET_DVR_MOUNTMETHOD_PARAM_UNION, *LPNET_DVR_MOUNTMETHOD_PARAM_UNION; + +//Ӳ̽ṹ +typedef struct tagNET_DVR_SINGLE_NET_DISK_INFO +{ + BYTE byNetDiskType; //Ӳ, 0-NFS(NAS),1-iSCSI + BYTE byRes1[3]; // + NET_DVR_IPADDR struNetDiskAddr; //Ӳ̵ַ + BYTE sDirectory[PATHNAME_LEN]; // PATHNAME_LEN = 128 + WORD wPort; //iscsiж˿ڣΪĬ + BYTE byRes2[2]; + NET_DVR_MOUNTMETHOD_PARAM_UNION uMountMethodParam; + BYTE byRes3[8]; // +}NET_DVR_SINGLE_NET_DISK_INFO, *LPNET_DVR_SINGLE_NET_DISK_INFO; + +#define MAX_NET_DISK 16//Ӳ̸ + +typedef struct tagNET_DVR_NET_DISKCFG +{ + DWORD dwSize; + NET_DVR_SINGLE_NET_DISK_INFO struNetDiskParam[MAX_NET_DISK]; +}NET_DVR_NET_DISKCFG, *LPNET_DVR_NET_DISKCFG; + +typedef struct tagNET_DVR_SINGLE_NET_DISK_INFO_V40 +{ + BYTE byNetDiskType; //Ӳ, 0-NFS(NAS),1-iSCSI + BYTE byRes1[3]; // + BYTE sDirectory[PATHNAME_LEN]; // PATHNAME_LEN = 128 + BYTE byDevAddr[MAX_DOMAIN_NAME]; /* 64*/ + WORD wPort; //iscsiж˿ڣΪĬ + BYTE byRes2[2]; + NET_DVR_MOUNTMETHOD_PARAM_UNION uMountMethodParam; + BYTE byRes4[80]; +}NET_DVR_SINGLE_NET_DISK_INFO_V40, *LPNET_DVR_SINGLE_NET_DISK_INFO_V40; + +typedef struct tagNET_DVR_NET_DISKCFG_V40 +{ + DWORD dwSize; + NET_DVR_SINGLE_NET_DISK_INFO_V40 struNetDiskParam[MAX_NET_DISK]; +}NET_DVR_NET_DISKCFG_V40, *LPNET_DVR_NET_DISKCFG_V40; +//¼ +// +typedef enum _MAIN_EVENT_TYPE_ +{ + EVENT_MOT_DET = 0, //ƶ + EVENT_ALARM_IN = 1, // + EVENT_VCA_BEHAVIOR = 2, // Ϊ + EVENT_INQUEST = 3, //Ѷ¼ + EVENT_VCA_DETECTION = 4, // + EVENT_POS = 5, + EVENT_TRIAL_CASE = 6,//ͥ󰸼Ϣ + EVENT_ACS_CASE = 7, //޼ + EVENT_IOT_CASE = 8, //Ƶ¼¼ΪƵ豸Ƶ豸¼Ƶ豸¼ + EVENT_STREAM_INFO = 100 //IDϢ +}MAIN_EVENT_TYPE; + +#define INQUEST_START_INFO 0x1001 /*ѶʿʼϢ*/ +#define INQUEST_STOP_INFO 0x1002 /*ѶֹͣϢ*/ +#define INQUEST_TAG_INFO 0x1003 /*صϢ*/ +#define INQUEST_SEGMENT_INFO 0x1004 /*ѶƬ״̬Ϣ*/ +#define INQUEST_CASE_INFO 0x1005 // Ϣ + +typedef enum _VCA_DETECTION_MINOR_TYPE_ +{ + EVENT_VCA_TRAVERSE_PLANE = 1, //Խ + EVENT_FIELD_DETECTION, // + EVENT_AUDIO_INPUT_ALARM, //Ƶ쳣 + EVENT_SOUND_INTENSITY_ALARM, //ǿͻ + EVENT_FACE_DETECTION, // + EVENT_VIRTUAL_FOCUS_ALARM, //齹 + EVENT_SCENE_CHANGE_ALARM, // + EVENT_PIR_ALARM, //PIR + EVENT_ENTER_REGION, // + EVENT_EXIT_REGION, //Ŀ뿪 + EVENT_LOITERING, //ǻ + EVENT_GROUPDETECTION, //Աۼ,֧ + EVENT_RAPIDMOVE, //ƶ + EVENT_PARK, //ͣ + EVENT_UNATTENDED_BAGGAGE, //Ʒ + EVENT_ATTENDEDBAGGAGE, //Ʒȡ + EVENT_VEHICLE_DETECTION, // + EVENT_ALL = 0xffffffff //ʾȫ +}VCA_DETECTION_MINOR_TYPE; + + + +//ΪͶӦĴͣ 0xffffʾȫ +typedef enum _BEHAVIOR_MINOR_TYPE_ +{ + EVENT_TRAVERSE_PLANE = 0, // Խ + EVENT_ENTER_AREA, //Ŀ,֧ + EVENT_EXIT_AREA, //Ŀ뿪,֧ + EVENT_INTRUSION, // ܽ,֧ + EVENT_LOITER, //ǻ,֧ + EVENT_LEFT_TAKE, //Ʒȡ,֧ + EVENT_PARKING, //ͣ,֧ + EVENT_RUN, //ƶ,֧ + EVENT_HIGH_DENSITY, //Աۼ,֧ + EVENT_STICK_UP, //ֽ,֧ + EVENT_INSTALL_SCANNER, //װ,֧ + EVENT_OPERATE_OVER_TIME, // ʱ + EVENT_FACE_DETECT, // 쳣 + EVENT_LEFT, // Ʒ + EVENT_TAKE, // Ʒȡ + EVENT_LEAVE_POSITION, //¼ + EVENT_TRAIL_INFO = 16, //β + EVENT_HUMAN_ENTER = 18, //Ա + EVENT_FALL_DOWN_INFO = 19, // + EVENT_OBJECT_PASTE =20, // ճ + EVENT_FACE_CAPTURE_INFO = 21, // + EVENT_MULTI_FACES_INFO = 22, // + EVENT_AUDIO_ABNORMAL_INFO = 23, //ǿͻ + EVENT_SUNGLASSES_FACE_INFO = 25, //ī + EVENT_CALLING_FACE_INFO = 26, //绰 + EVENT_VIOLENT_MOTION = 27, //˶ + EVENT_SAFETY_HELMET = 28, //ȫñ + EVENT_PEOPLE_NUM_CHANGE = 29, //仯 + EVENT_GET_UP = 30, // + EVENT_ADV_REACH_HEIGHT = 31, //ʸ + EVENT_STOOD_UP = 32, // + EVENT_PERSON_DENSITY = 33, //ԱܶȣԤ + EVENT_MANUAL_ALARM = 34, //ֶ + EVENT_VIOLATION_HIGH_SPEED = 35, // + EVENT_GSENSOR = 36, // G-Sensor¼١١ת䡢ת䡢ײ + EVENT_SENSOR_IN = 37, // Sensor-InΪɲתת + EVENT_VCA_DBD = 38, //˾ʻΪ + EVENT_VCA_ABS = 39, //߼ʻ + EVENT_TOILET_TARRY = 40 //޳ʱ +}BEHAVIOR_MINOR_TYPE; + +//6ӦĴ +typedef enum _TRIAL_CASE_MINOR_TYPE_ +{ + TRIAL_START_INFO = 0x1001, // ͥʼ¼ + TRIAL_STOP_INFO = 0x1002, //ͥ¼ + TRIAL_TAG_INFO = 0x1003, //ͥصע¼ + TRIAL_SEGMENT_INFO = 0x1004, // ͥƬ״̬Ϣ + TRIAL_JUDGE_CASE_INFO=0x1005 //ͥ󰸼Ϣ +}TRIAL_CASE_MINOR_TYPE; + +// 100ӦС +typedef enum _STREAM_INFO_MINOR_TYPE_ +{ + EVENT_STREAM_ID = 0, // ID + EVENT_TIMING = 1, // ʱ¼ + EVENT_MOTION_DETECT = 2, // ƶ + EVENT_ALARM = 3, // ¼ + EVENT_ALARM_OR_MOTION_DETECT = 4, // ƶ + EVENT_ALARM_AND_MOTION_DETECT = 5, // ƶ + EVENT_COMMAND_TRIGGER = 6, //  + EVENT_MANNUAL = 7, // ֶ¼ + EVENT_BACKUP_VOLUME = 8, // 浵¼ + STREAM_EVENT_SEMAPHORE, //ź + STREAM_EVENT_HIDE, //ڵ + STREAM_EVENT_INVERSE, // + STREAM_EVENT_VIDEO_LOST, //Ƶʧ + STREAM_EVENT_WIRELESS_ALARM, //߱ + STREAM_EVENT_PIR_ALARM, //PIR + STREAM_EVENT_CALLHELP_ALARM, //ȱ + + STREAM_EVENT_FACESNAP, //ץ + STREAM_EVENT_FACE_DETECTION, // + STREAM_EVENT_ITS_PLATE, // + STREAM_EVENT_PDC, //ͳ + STREAM_EVENT_SCENECHANGE_DETECTION, // + STREAM_EVENT_DEFOCUS_DETECTION, //齹 + STREAM_EVENT_AUDIOEXCEPTION, //Ƶ쳣 + + //ΪΪCOMM_ALARM_RULEͣVCA_EVENT_TYPE + VCA_EVENT_TRAVERSE_PLANE, //Խ + VCA_EVENT_INTRUSION, //ܽ + VCA_EVENT_ENTER_AREA, // + VCA_EVENT_EXIT_AREA, //뿪 + VCA_EVENT_LOITER, //ǻ + VCA_EVENT_HIGH_DENSITY, //Աۼ + VCA_EVENT_RUN, //ƶ + VCA_EVENT_PARKING, //Ƿͣ + VCA_EVENT_LEFT, //Ʒ + VCA_EVENT_TAKE, //Ʒȡ +}STREAM_INFO_MINOR_TYPE; + +// typedef enum tagITS_MINOR_TYPE +// { +// ITS_EVENT_CONGESTION = 0, // ӵ +// ITS_EVENT_PARKING, // ͣ +// ITS_EVENT_INVERSE, // +// ITS_EVENT_PEDESTRIAN, // +// ITS_EVENT_DEBRIS // Ƭ +// }ITS_MINOR_TYPE; + + +#define SEARCH_EVENT_INFO_LEN 300 //¼Ϣ +#define CASE_NO_LEN 64 +#define CASE_NAME_LEN 128 +#define LITIGANT_LEN 32 +#define CHIEF_JUDGE_LEN 32 +#define SEARCH_CASE_NO_LEN 56 +#define SEARCH_CASE_NAME_LEN 100 +#define SEARCH_LITIGANT_LEN 32 +#define SEARCH_CHIEF_JUDGE_LEN 32 +#define CASE_NO_RET_LEN 52 +#define CASE_NAME_RET_LEN 64 +#define LITIGANT_RET_LEN 24 +#define CHIEF_JUDGE_RET_LEN 24 +#define NET_SDK_CASETYPE_LEN 32 +//¼ +typedef struct tagNET_DVR_SEARCH_EVENT_PARAM +{ + WORD wMajorType; //0-ƶ⣬1-, 2-¼ + WORD wMinorType; //- ͱ仯0xffffʾȫ + NET_DVR_TIME struStartTime; //Ŀʼʱ䣬ֹͣʱ: ͬʱΪ(0, 0) ʾʱ俪ʼǰ4000¼ + NET_DVR_TIME struEndTime; // + BYTE byLockType; // 0xff-ȫ0-δ1- + BYTE byValue; //0-λʾ1-ֵʾ + BYTE byRes[130]; // + union + { + BYTE byLen[SEARCH_EVENT_INFO_LEN]; + struct// + { + BYTE byAlarmInNo[MAX_ALARMIN_V30]; //ţbyAlarmInNo[0]1ʾɱ1¼ + BYTE byRes[SEARCH_EVENT_INFO_LEN - MAX_ALARMIN_V30]; + }struAlarmParam; + + struct//--ֵ + { + WORD wAlarmInNo[128]; /*ţֵʾ,ý*/ + BYTE byRes[44]; // + }struAlarmParamByValue; + + struct//ƶ + { + BYTE byMotDetChanNo[MAX_CHANNUM_V30];//ƶͨbyMotDetChanNo[0]1ʾͨ1ƶⴥ¼ + BYTE byRes[SEARCH_EVENT_INFO_LEN - MAX_CHANNUM_V30]; + }struMotionParam; + + struct//ƶ--ֵ + { + WORD wMotDetChanNo[64]; /* ƶֵͨʾ ,ý*/ + BYTE byRes[172]; /**/ + }struMotionParamByValue; + + struct//Ϊ + { + BYTE byChanNo[MAX_CHANNUM_V30]; //¼ͨ + BYTE byRuleID; //ID0xffʾȫ + BYTE byRes1[43]; // + }struVcaParam; + + struct //Ϊ--ֵʽ + { + WORD wChanNo[64]; //ΪӦֵͨʾ,ý + BYTE byRuleID; //Ϊͣ0xffʾȫ0ʼ + BYTE byRes[171]; /**/ + }struVcaParamByValue; + + struct//Ѷ¼ + { + BYTE byRoomIndex; //Ѷұ,ֵʾ1ʼ + BYTE byRes1[3]; + BYTE sInquestInfo[INQUEST_CASE_LEN]; + BYTE byRes2[232]; // + } struInquestParam; + struct // + { + BYTE byChan [256];//ͨţ±ʾbyChan[0]1ʾͨ1ƶⴥ¼ + }struVCADetectByBit; + + struct// ͨŰֵʾ + { + DWORD dwChanNo[MAX_CHANNUM_V30-1];// ͨ,ֵʾ0xffffffffЧҺҲʾЧֵ + BYTE byAll;//0-ʾȫ1-ʾȫ + BYTE byres[3]; + }struVCADetectByValue; + struct + { + NET_DVR_STREAM_INFO struIDInfo; // idϢ72ֽڳ + DWORD dwCmdType; // ⲿͣNVRƴ洢ʹ + BYTE byBackupVolumeNum; //浵ţCVRʹ + BYTE byRes[223]; + }struStreamIDParam; + struct + { + BYTE byCaseNo[SEARCH_CASE_NO_LEN]; // + BYTE byCaseName[SEARCH_CASE_NAME_LEN]; //ƣ + BYTE byLitigant1[SEARCH_LITIGANT_LEN]; //1 + BYTE byLitigant2[SEARCH_LITIGANT_LEN]; //2 + BYTE byChiefJudge[SEARCH_CHIEF_JUDGE_LEN];//г + BYTE byCaseType; //ͣ0-ȫ1-°2-° + BYTE byRes[47]; + }struTrialParam; + }uSeniorParam; +}NET_DVR_SEARCH_EVENT_PARAM, *LPNET_DVR_SEARCH_EVENT_PARAM; + +#define MAX_POS_KEYWORDS_NUM 3 //ֹ֧ؼֲ +#define MAX_POS_KEYWORD_LEN 128 //ÿؼֳ +#define SEARCH_EVENT_INFO_LEN_V40 800 + +//¼ +typedef struct tagNET_DVR_SEARCH_EVENT_PARAM_V40 +{ + WORD wMajorType; //0-ƶ⣬1-, 2-¼ 5-pos¼ 7-޼ + WORD wMinorType; //- ͱ仯0xffffʾȫ + NET_DVR_TIME struStartTime; //Ŀʼʱ䣬ֹͣʱ: ͬʱΪ(0, 0) ʾʱ俪ʼǰ4000¼ + NET_DVR_TIME struEndTime; // + BYTE byLockType; // 0xff-ȫ0-δ1- + BYTE byQuickSearch; // Ƿÿٲѯ0-ã1-ãٲѯ᷵ļС豸ݿвѯƵӲ̣ + BYTE byRes[130]; // + union + { + BYTE byLen[SEARCH_EVENT_INFO_LEN_V40/*800*/]; + struct// + { + /*ţֵʾ,ýУ0xffffʾЧ*/ + WORD wAlarmInNo[128]; + BYTE byRes[544]; // + }struAlarmParam; + + struct//ƶ + { + /* ƶֵͨʾ ,ýУ0xffffʾЧ*/ + WORD wMotDetChanNo[MAX_CHANNUM_V30]; + BYTE byRes[672]; /**/ + }struMotionParam; + + struct //Ϊ + { + //ΪӦֵͨʾ,ýУ0xffffʾЧ + WORD wChanNo[MAX_CHANNUM_V30]; + BYTE byRuleID; //Ϊͣ0xffʾȫ0ʼ + BYTE byDriverBehaviortType; //˾ʻΪͣ0-1-̡2-Ӵ绰3-ƣͼʻ4-ѡ5-ʻԱ쳣6-δϵȫ7-ī + BYTE byADASType; //߼ʻͣ0-1-ǰײ2-ƫ롢3-ä⡢4-⡢5-˷ײ6-١7-١8-ת䡢9-ת䡢10-11-δ + BYTE byGSensorType; // G-Sensor¼0-1-١2-١3-ת䡢4-ת䡢5-6-ײ + BYTE bySensorInType; // Sensor-InΪ0-1-ɲ2-ת3-ת4- + BYTE byRes[667]; /**/ + }struVcaParam; + + struct//Ѷ¼ + { + BYTE byRoomIndex; //Ѷұ,1ʼ + BYTE byRes[799]; // + } struInquestParam; + + struct// ͨŰֵʾ + { + BYTE byAll; //ȫͨ0-񣬴ʱdwChanNoЧ + //1-ȫͨʱdwChanNoЧ + BYTE byRes1[3]; + WORD wChanNo[MAX_CHANNUM_V30];// ͨ,ֵʾ0xffffЧҺҲʾЧֵ + BYTE byRes[668]; + }struVCADetect; + + struct + { + NET_DVR_STREAM_INFO struIDInfo; // idϢ72ֽڳ + DWORD dwCmdType; // ⲿͣNVRƴ洢ʹ + BYTE byBackupVolumeNum; //浵ţCVRʹ + BYTE byRes1[3]; + BYTE byArchiveLabel[64]; //浵ǩCVRʹ + BYTE byRes[656]; + }struStreamIDParam; + + struct //pos¼ + { + WORD wChannel[MAX_CHANNUM_V30]; //ֵͨʾ,У0xffffʱʾֵЧ + BYTE byAllChan; //Ƿȫͨ0-񣬴ʱwChannelЧ1-ȫͨʱwChannelЧ + BYTE byCaseSensitive; //0-ִСд 1-ִСд + BYTE byCombinateMode; //ؼϷʽ0-1- + BYTE byRes1; // + char sKeyWord[MAX_POS_KEYWORDS_NUM][MAX_POS_KEYWORD_LEN]; + //ؼֲʱ + BYTE byRes[284]; // + }struPosAlarm; + + struct + { + BYTE byCaseNo[SEARCH_CASE_NO_LEN]; // + BYTE byCaseName[SEARCH_CASE_NAME_LEN]; // + BYTE byLitigant1[SEARCH_LITIGANT_LEN]; //1 + BYTE byLitigant2[SEARCH_LITIGANT_LEN]; //2 + BYTE byChiefJudge[SEARCH_CHIEF_JUDGE_LEN]; //г + BYTE byCaseType; + BYTE byRes[47]; + }struTrialParam; + + struct //޼ + { + DWORD dwMajor; //ͣ¼ϴһ£0ȫ + DWORD dwMinor; //ͣ¼ϴһ£0ȫ + BYTE byCardNo[ACS_CARD_NO_LEN]; // + BYTE byName[NAME_LEN/*32*/]; // + BYTE byMACAddr[MACADDR_LEN]; //MACַ + BYTE byRes[722]; + }struACSAlarm; + }uSeniorParam; +}NET_DVR_SEARCH_EVENT_PARAM_V40, *LPNET_DVR_SEARCH_EVENT_PARAM_V40; + +//¼ +typedef struct tagNET_DVR_SEARCH_EVENT_PARAM_V50 +{ + WORD wMajorType; //0-ƶ⣬1-, 2-¼ 5-pos¼ 7-޼, 8-Ƶ¼ + WORD wMinorType; //- ͱ仯0xffffʾȫ + NET_DVR_TIME_SEARCH_COND struStartTime; //Ŀʼʱ䣬ֹͣʱ: ͬʱΪ(0, 0) ʾʱ俪ʼǰ4000¼ + NET_DVR_TIME_SEARCH_COND struEndTime; //Ľʱ + BYTE byLockType; // 0xff-ȫ0-δ1- + BYTE byQuickSearch; // Ƿÿٲѯ0-ã1-ãٲѯ᷵ļС豸ݿвѯƵӲ̣ + BYTE byRes[254]; // + union + { + BYTE byLen[SEARCH_EVENT_INFO_LEN_V40/*800*/]; + struct// + { + /*ţֵʾ,ýУ0xffffʾЧ*/ + WORD wAlarmInNo[128]; + BYTE byRes[544]; // + }struAlarmParam; + + struct//ƶ + { + /* ƶֵͨʾ ,ýУ0xffffʾЧ*/ + WORD wMotDetChanNo[MAX_CHANNUM_V30]; + BYTE byRes[672]; /**/ + }struMotionParam; + + struct //Ϊ + { + //ΪӦֵͨʾ,ýУ0xffffʾЧ + WORD wChanNo[MAX_CHANNUM_V30]; + BYTE byRuleID; //Ϊͣ0xffʾȫ0ʼ + BYTE byDriverBehaviortType; //˾ʻΪͣ0-1-̡2-Ӵ绰3-ƣͼʻ4-ѡ5-ʻԱ쳣6-δϵȫ7-ī + BYTE byADASType; //߼ʻͣ0-1-ǰײ2-ƫ롢3-ä⡢4-⡢5-˷ײ6-١7-١8-ת䡢9-ת䡢10-11-δ + BYTE byGSensorType; // G-Sensor¼0-1-١2-١3-ת䡢4-ת䡢5-6-ײ + BYTE bySensorInType; // Sensor-InΪ0-1-ɲ2-ת3-ת4- + BYTE byRes[667]; /**/ + }struVcaParam; + + struct//Ѷ¼ + { + BYTE byRoomIndex; //Ѷұ,1ʼ + BYTE byRes[799]; // + } struInquestParam; + + struct// ͨŰֵʾ + { + BYTE byAll; //ȫͨ0-񣬴ʱdwChanNoЧ + //1-ȫͨʱdwChanNoЧ + BYTE byRes1[3]; + WORD wChanNo[MAX_CHANNUM_V30];// ͨ,ֵʾ0xffffЧҺҲʾЧֵ + BYTE byRes[668]; + }struVCADetect; + + struct + { + NET_DVR_STREAM_INFO struIDInfo; // idϢ72ֽڳ + DWORD dwCmdType; // ⲿͣNVRƴ洢ʹ + BYTE byBackupVolumeNum; //浵ţCVRʹ + BYTE byRes1[3]; + BYTE byArchiveLabel[64]; //浵ǩCVRʹ + BYTE byRes[656]; + }struStreamIDParam; + + struct //pos¼ + { + WORD wChannel[MAX_CHANNUM_V30]; //ֵͨʾ,У0xffffʱʾֵЧ + BYTE byAllChan; //Ƿȫͨ0-񣬴ʱwChannelЧ1-ȫͨʱwChannelЧ + BYTE byCaseSensitive; //0-ִСд 1-ִСд + BYTE byCombinateMode; //ؼϷʽ0-1- + BYTE byRes1; // + char sKeyWord[MAX_POS_KEYWORDS_NUM][MAX_POS_KEYWORD_LEN]; + //ؼֲʱ + BYTE byRes[284]; // + }struPosAlarm; + + struct + { + BYTE byCaseNo[SEARCH_CASE_NO_LEN]; + BYTE byCaseName[SEARCH_CASE_NAME_LEN]; + BYTE byLitigant1[SEARCH_LITIGANT_LEN]; + BYTE byLitigant2[SEARCH_LITIGANT_LEN]; + BYTE byChiefJudge[SEARCH_CHIEF_JUDGE_LEN]; + BYTE byCaseType; + BYTE byRes[547]; + }struTrialParam; + + struct //޼ + { + DWORD dwMajor; //ͣ¼ϴһ£0ȫ + DWORD dwMinor; //ͣ¼ϴһ£0ȫ + BYTE byCardNo[ACS_CARD_NO_LEN]; // + BYTE byName[NAME_LEN/*32*/]; // + BYTE byMACAddr[MACADDR_LEN]; //MACַ + BYTE byRes[722]; + }struACSAlarm; + struct //Ƶ¼ + { + WORD wDeviceType; //豸,0-˽Ž1-˽пӶԽ豸, 2-˽бԤ 3-GJD 4-Luminite, 5-OPTEX,6-cameraDetectorģ豸 + WORD wEventType; //- ͱ仯0xffffʾȫ + WORD wChannel[MAX_CHANNUM_V30/*64*/]; //ͨţֵʾ,У0xffffʱʾֵЧ + BYTE byAllChan; //Ƿȫͨ0-񣬴ʱwChannelЧ1-ȫͨʱwChannelЧ + BYTE byCaseSensitive; //0-ִСд 1-ִСд + BYTE byCombinateMode; //ؼϷʽ0-1- + BYTE bySearchType; //ʽ0-ƵԴʱͨΪƵͨţ + char sKeyWord[MAX_POS_KEYWORDS_NUM/*3*/][MAX_POS_KEYWORD_LEN/*128*/];//ؼֲʱ + WORD wZoneNo; //ţ豸Ϊ˽бΪwEventTypeΪ1ʱЧ + BYTE byRes[278]; // + }struIOTAlarm; + }uSeniorParam; +}NET_DVR_SEARCH_EVENT_PARAM_V50, *LPNET_DVR_SEARCH_EVENT_PARAM_V50; + + +//ҷؽ +typedef struct tagNET_DVR_SEARCH_EVENT_RET +{ + WORD wMajorType; // + WORD wMinorType; // + NET_DVR_TIME struStartTime; //¼ʼʱ + NET_DVR_TIME struEndTime; //¼ֹͣʱ䣬¼ʱͿʼʱһ + BYTE byChan[MAX_CHANNUM_V30]; + BYTE byChanEx[32]; //ͨλʾʹøֶκbyChanԲʹ + BYTE byRes[4]; + union + { + struct// + { + DWORD dwAlarmInNo; // + BYTE byRes[SEARCH_EVENT_INFO_LEN]; + }struAlarmRet; + struct//ƶ + { + DWORD dwMotDetNo; //ƶͨ + BYTE byRes[SEARCH_EVENT_INFO_LEN]; + }struMotionRet; + struct//Ϊ + { + DWORD dwChanNo; //¼ͨ + BYTE byRuleID; //ID + BYTE byRes1[3]; // + BYTE byRuleName[NAME_LEN]; // + NET_VCA_EVENT_UNION uEvent; //Ϊ¼ + }struVcaRet; + struct//Ѷ¼ + { + BYTE byRoomIndex; //Ѷұ,1ʼ + BYTE byDriveIndex; //¼,1ʼ + BYTE byRes1[6]; // + DWORD dwSegmentNo; //ƬڱѶе,1ʼ + WORD wSegmetSize; //ƬϵĴС, λM + WORD wSegmentState; //Ƭ״̬ 0 ¼1 ¼쳣2 ¼Ѷ + BYTE byRes2[288]; // + }struInquestRet; + struct //id¼ѯ + { + DWORD dwRecordType; /*¼ 0-ʱ¼,1-ƶ,2-,3-|ƶ, 4-&ƶ,5-,6-ֶ¼,7-𶯱,8-, + 9-ܱ,10-PIR,11-߱,12-ȱ,13- PIR|߱|ȱ, 14-ܽͨ¼,15-Խ,16-,17-쳣, + 18-, 19-ȫܣԽ|||뿪|ʶ, 20-ź,21-ش22-Ǩ¼,23-ڵ 24-¼ƴӴ浵*/ + DWORD dwRecordLength; //¼С + BYTE byLockFlag; // ־ 0û 1 + BYTE byDrawFrameType; // 0dz֡¼ 1֡¼ + BYTE byRes1[2]; + BYTE byFileName[NAME_LEN]; //ļ + DWORD dwFileIndex; // 浵ϵļ + BYTE byRes[256]; + }struStreamIDRet; + struct + { + BYTE byRoomIndex; //Ѷұ,1ʼ + BYTE byDriveIndex; //¼,1ʼ + WORD wSegmetSize; //ƬϵĴС, λM + DWORD dwSegmentNo; //ƬڱѶе,1ʼ + BYTE bySegmentState; //Ƭ״̬0-¼1-¼쳣2-¼Ѷ + BYTE byCaseType; //ͣ0-ȫ1-°2-° + BYTE byRes[2]; + BYTE byCaseNo[CASE_NO_RET_LEN]; // + BYTE byCaseName[CASE_NAME_RET_LEN]; //ƣ + BYTE byLitigant1[LITIGANT_RET_LEN]; //1 + BYTE byLitigant2[LITIGANT_RET_LEN]; //2 + BYTE byChiefJudge[CHIEF_JUDGE_RET_LEN];//г + BYTE byRes1[104]; + }struTrialRet; + }uSeniorRet; +}NET_DVR_SEARCH_EVENT_RET, *LPNET_DVR_SEARCH_EVENT_RET; + +#define NET_SDK_MAX_TAPE_INDEX_LEN 32 //Ŵ󳤶 +#define NET_SDK_MAX_FILE_LEN 256 //ļ󳤶 + +//ҷؽ +typedef struct tagNET_DVR_SEARCH_EVENT_RET_V40 +{ + WORD wMajorType; // + WORD wMinorType; // + NET_DVR_TIME struStartTime; //¼ʼʱ + NET_DVR_TIME struEndTime; //¼ֹͣʱ䣬¼ʱͿʼʱһ + WORD wChan[MAX_CHANNUM_V40/*512*/]; //ͨţ0xffffʾЧ + BYTE byRes[36]; + union + { + BYTE byLen[800]; //峤 + struct// + { + DWORD dwAlarmInNo; // + BYTE byRes[796]; + }struAlarmRet; + struct//ƶ + { + DWORD dwMotDetNo; //ƶͨ + BYTE byRes[796]; + }struMotionRet; + struct//Ϊ + { + DWORD dwChanNo; //¼ͨ + BYTE byRuleID; //ID + BYTE byRes1[3]; // + BYTE byRuleName[NAME_LEN]; // + NET_VCA_EVENT_UNION uEvent; //Ϊ¼ + BYTE byRes[668]; // + }struVcaRet; + + struct//Ѷ¼ + { + BYTE byRoomIndex; //Ѷұ,1ʼ + BYTE byDriveIndex; //¼,1ʼ + BYTE byRes1[6]; // + DWORD dwSegmentNo; //ƬڱѶе,1ʼ + WORD wSegmetSize; //ƬϵĴС, λM + WORD wSegmentState; //Ƭ״̬ 0 ¼1 ¼쳣2 ¼Ѷ + BYTE byRes2[784]; // + }struInquestRet; + + struct //id¼ѯ + { + DWORD dwRecordType; //¼ 0-ʱ¼ 1-ƶ 2-¼ 3-|ƶ 4-&ƶ 5- 6-ֶ¼ 7-𶯱 8- 9-ܱ 10-ش¼ + DWORD dwRecordLength; //¼С + BYTE byLockFlag; // ־ 0û 1 + BYTE byDrawFrameType; // 0dz֡¼ 1֡¼ + BYTE byPosition;// ļڴ洢λã0-ϣ1-λϣֱأ2-ŴڣҪѴлλϣ3-ڴŴУҪѴ̲嵽Ŵ + BYTE byRes1; + BYTE byFileName[NAME_LEN]; //ļ + DWORD dwFileIndex; // 浵ϵļ + BYTE byTapeIndex[NET_SDK_MAX_TAPE_INDEX_LEN]; //ļڴŴ + BYTE byFileNameEx[NET_SDK_MAX_FILE_LEN/*256*/]; //ļչ + BYTE byRes[464]; + }struStreamIDRet; + + struct//POS¼ѯ + { + DWORD dwChanNo; //pos¼ͨ + BYTE byRes[796]; + }struPosRet; + + struct + { + BYTE byRoomIndex; //Ѷұ,1ʼ + BYTE byDriveIndex; //¼,1ʼ + WORD wSegmetSize; //ƬϵĴС, λM + DWORD dwSegmentNo; //ƬڱѶе,1ʼ + BYTE bySegmentState; //Ƭ״̬0-¼1-¼쳣2-¼Ѷ + BYTE byCaseType; //ͣ0-ȫ1-°2-° + BYTE byRes[2]; + BYTE byCaseNo[CASE_NO_RET_LEN]; // + BYTE byCaseName[CASE_NAME_RET_LEN]; //ƣ + BYTE byLitigant1[LITIGANT_RET_LEN]; //1 + BYTE byLitigant2[LITIGANT_RET_LEN]; //2 + BYTE byChiefJudge[CHIEF_JUDGE_RET_LEN];//г + BYTE byRes1[600]; + }struTrialRet; + }uSeniorRet; +}NET_DVR_SEARCH_EVENT_RET_V40, *LPNET_DVR_SEARCH_EVENT_RET_V40; + +//ҷؽ +typedef struct tagNET_DVR_SEARCH_EVENT_RET_V50 +{ + WORD wMajorType; // + WORD wMinorType; // + NET_DVR_TIME_SEARCH struStartTime; //¼ʼʱ + NET_DVR_TIME_SEARCH struEndTime; //¼ֹͣʱ䣬¼ʱͿʼʱһ + NET_DVR_ADDRESS struAddr; //ƬڵĵַϢȺطʱõ + WORD wChan[MAX_CHANNUM_V40/*512*/]; //ͨţ0xffffʾЧ + BYTE byRes[256]; + union + { + BYTE byLen[800]; //峤 + struct// + { + DWORD dwAlarmInNo; // + BYTE byRes[796]; + }struAlarmRet; + struct//ƶ + { + DWORD dwMotDetNo; //ƶͨ + BYTE byRes[796]; + }struMotionRet; + struct//Ϊ + { + DWORD dwChanNo; //¼ͨ + BYTE byRuleID; //ID + BYTE byRes1[3]; // + BYTE byRuleName[NAME_LEN]; // + NET_VCA_EVENT_UNION uEvent; //Ϊ¼ + BYTE byRes[668]; // + }struVcaRet; + + struct//Ѷ¼ + { + BYTE byRoomIndex; //Ѷұ,1ʼ + BYTE byDriveIndex; //¼,1ʼ + BYTE byRes1[6]; // + DWORD dwSegmentNo; //ƬڱѶе,1ʼ + WORD wSegmetSize; //ƬϵĴС, λM + WORD wSegmentState; //Ƭ״̬ 0 ¼1 ¼쳣2 ¼Ѷ + BYTE byRes2[784]; // + }struInquestRet; + + struct //id¼ѯ + { + DWORD dwRecordType; //¼ 0-ʱ¼ 1-ƶ 2-¼ 3-|ƶ 4-&ƶ 5- 6-ֶ¼ 7-𶯱 8- 9-ܱ 10-ش¼ + DWORD dwRecordLength; //¼С + BYTE byLockFlag; // ־ 0û 1 + BYTE byDrawFrameType; // 0dz֡¼ 1֡¼ + BYTE byPosition;// ļڴ洢λã0-ϣ1-λϣֱأ2-ŴڣҪѴлλϣ3-ڴŴУҪѴ̲嵽Ŵ + BYTE byRes1; + BYTE byFileName[NAME_LEN]; //ļ + DWORD dwFileIndex; // 浵ϵļ + BYTE byTapeIndex[NET_SDK_MAX_TAPE_INDEX_LEN]; //ļڴŴ + BYTE byFileNameEx[NET_SDK_MAX_FILE_LEN/*256*/]; //ļչ + BYTE byRes[464]; + }struStreamIDRet; + + struct//POS¼ѯ + { + DWORD dwChanNo; //pos¼ͨ + BYTE byRes[796]; + }struPosRet; + + struct + { + BYTE byRoomIndex; //Ѷұ,1ʼ + BYTE byDriveIndex; //¼,1ʼ + WORD wSegmetSize; //ƬϵĴС, λM + DWORD dwSegmentNo; //ƬڱѶе,1ʼ + BYTE bySegmentState; //Ƭ״̬0-¼1-¼쳣2-¼Ѷ + BYTE byCaseType; //ͣ0-ȫ1-°2-° + BYTE byRes[2]; + BYTE byCaseNo[CASE_NO_RET_LEN]; // + BYTE byCaseName[CASE_NAME_RET_LEN]; //ƣ + BYTE byLitigant1[LITIGANT_RET_LEN]; //1 + BYTE byLitigant2[LITIGANT_RET_LEN]; //2 + BYTE byChiefJudge[CHIEF_JUDGE_RET_LEN];//г + BYTE byRes1[600]; + }struTrialRet; + struct//Ƶͨѯ + { + DWORD dwChanNo; //¼ͨţ¼Դͨ + BYTE byRes[796]; + }struIOTRet; + }uSeniorRet; +}NET_DVR_SEARCH_EVENT_RET_V50, *LPNET_DVR_SEARCH_EVENT_RET_V50; + +//SDK_V35 2009-10-26 + +// 궨 +typedef enum tagCALIBRATE_TYPE +{ + PDC_CALIBRATE = 0x01, // PDC 궨 + BEHAVIOR_OUT_CALIBRATE = 0x02, //Ϊⳡ궨 + BEHAVIOR_IN_CALIBRATE = 0x03, // Ϊڳ궨 + ITS_CALBIRETE = 0x04, // ͨ¼궨 + BV_DIRECT_CALIBRATE = 0x05, //˫Ŀֱӱ궨 + PDC_LINE_CALIBRATE = 0x06 //PDC 궨 +}CALIBRATE_TYPE; + +#define MAX_RECT_NUM 6 +typedef struct tagNET_DVR_RECT_LIST +{ + BYTE byRectNum; // οĸ + BYTE byRes1[11]; //ֽ + NET_VCA_RECT struVcaRect[MAX_RECT_NUM]; // Ϊ6Rect +}NET_DVR_RECT_LIST, *LPNET_DVR_RECT_LIST; + +// PDC 궨 +typedef struct tagNET_DVR_PDC_CALIBRATION +{ + NET_DVR_RECT_LIST struRectList; // 궨οб + BYTE byRes[120]; // ֽ +}NET_DVR_PDC_CALIBRATION, *LPNET_DVR_PDC_CALIBRATION; + + +// 궨ߵʾǰ궨ʵʱʾǸ߶߻dzߡ +typedef enum tagLINE_MODE +{ + HEIGHT_LINE, //߶ + LENGTH_LINE // +}LINE_MODE; +/* +ñ궨ϢʱӦλʹܣز +ûʹܣ궨Իȡص +*/ +typedef struct tagNET_DVR_CAMERA_PARAM +{ + BYTE byEnableHeight; // Ƿʹ߶ + BYTE byEnableAngle; // ǷʹǶ + BYTE byEnableHorizon; // Ƿʹƽ + BYTE byRes[5]; // ֽ + float fCameraHeight; // ߶ + float fCameraAngle; // Ƕ + float fHorizon; // еĵƽ +}NET_DVR_CAMERA_PARAM, *LPNET_DVR_CAMERA_PARAM; +/* +fValueʾĿ߶ȵʱstruStartPointstruEndPointֱʾĿͷͽŲ㡣 +fValueʾ߶γȵʱstruStartPointstruEndPointֱʾ߶ʼյ㣬 +modeʾǰ߱ʾ߶߻dzߡ +*/ +typedef struct tagNET_DVR_LINE_SEGMENT +{ + BYTE byLineMode; // LINE_MODE + BYTE byRes[3]; // ֽ + NET_VCA_POINT struStartPoint; + NET_VCA_POINT struEndPoint; + float fValue; +}NET_DVR_LINE_SEGMENT, *LPNET_DVR_LINE_SEGMENT; + +#define MAX_LINE_SEG_NUM 8 + +/* +궨ĿǰҪ4-8ߣԻȡز +*/ +typedef struct tagNET_DVR_BEHAVIOR_OUT_CALIBRATION +{ + DWORD dwLineSegNum; // ߸ + NET_DVR_LINE_SEGMENT struLineSegment[MAX_LINE_SEG_NUM]; // + NET_DVR_CAMERA_PARAM struCameraParam; // + BYTE byRes[20]; +}NET_DVR_BEHAVIOR_OUT_CALIBRATION, *LPNET_DVR_BEHAVIOR_OUT_CALIBRATION; + +/* +ýṹʾIASܿ궨 +аһĿһӦĸ߶ȱ궨ߣ +ĿΪվӾο򣻸߶ʶͷ㵽ŵı궨ߣ +ùһʾ +*/ +typedef struct tagNET_DVR_IN_CAL_SAMPLE +{ + NET_VCA_RECT struVcaRect; // Ŀ + NET_DVR_LINE_SEGMENT struLineSegment; // ߶ȱ궨 +}NET_DVR_IN_CAL_SAMPLE, *LPNET_DVR_IN_CAL_SAMPLE; + +#define MAX_SAMPLE_NUM 5 //ֱӱ궨 +#define MAX_SAMPLE_NUM_EX 7 //궨չ + +typedef struct tagNET_DVR_BEHAVIOR_IN_CALIBRATION +{ + DWORD dwCalSampleNum; // 궨 + NET_DVR_IN_CAL_SAMPLE struCalSample[MAX_SAMPLE_NUM]; // 궨 + NET_DVR_CAMERA_PARAM struCameraParam; // + BYTE byRes[16]; +}NET_DVR_BEHAVIOR_IN_CALIBRATION, *LPNET_DVR_BEHAVIOR_IN_CALIBRATION; + +#define CALIB_PT_NUM 4 +typedef struct tagNET_DVR_ITS_CALIBRATION +{ + DWORD dwPointNum; //궨 + NET_VCA_POINT struPoint[CALIB_PT_NUM]; //ͼ + float fWidth; + float fHeight; + BYTE byRes1[100]; // ֽ +}NET_DVR_ITS_CALIBRATION, *LPNET_DVR_ITS_CALIBRATION; + +typedef struct tagNET_DVR_BV_DIRECT_CALIBRATION +{ + DWORD dwCameraHeight; //߶ȣλcm + float fPitchAngle; //ӽǶ[0, 60], + float fInclineAngle; //бǶ[-20,20] + BYTE byRes1[228]; // +}NET_DVR_BV_DIRECT_CALIBRATION,*LPNET_DVR_BV_DIRECT_CALIBRATION; + +// PDC 궨 +typedef struct tagNET_DVR_PDC_LINE_CALIBRATION +{ + NET_VCA_LINE struCalibrationLine; + BYTE byRes[224];// ֽ +} NET_DVR_PDC_LINE_CALIBRATION, *LPNET_DVR_PDC_LINE_CALIBRATION; + +// 궨 +// ر궨Էڸýṹ +typedef union tagNET_DVR_CALIBRATION_PRARM_UNION +{ + BYTE byRes[240]; //ṹС + NET_DVR_PDC_CALIBRATION struPDCCalibration; //PDC 궨 + NET_DVR_BEHAVIOR_OUT_CALIBRATION struBehaviorOutCalibration; // Ϊⳡ궨 ҪӦIVS + NET_DVR_BEHAVIOR_IN_CALIBRATION struBehaviorInCalibration; // Ϊڳ궨ҪӦIAS + NET_DVR_ITS_CALIBRATION struITSCalibration; + NET_DVR_BV_DIRECT_CALIBRATION struBvDirectCalibration; //˫Ŀֱӱ궨 + NET_DVR_PDC_LINE_CALIBRATION struPDCLineCalibration; //PDC ߱궨 +}NET_DVR_CALIBRATION_PRARM_UNION, *LPNET_DVR_CALIBRATION_PRARM_UNION; + + +// 궨ýṹ +typedef struct tagNET_DVR_CALIBRATION_CFG +{ + DWORD dwSize; //궨ṹС + BYTE byEnable; // Ƿñ궨 + BYTE byCalibrationType; // 궨 ݲͬѡͬı궨 οCALIBRATE_TYPE + BYTE byRes1[2]; + NET_DVR_CALIBRATION_PRARM_UNION uCalibrateParam; // 궨 + BYTE byRes2[12]; +}NET_DVR_CALIBRATION_CFG, *LPNET_DVR_CALIBRATION_CFG; + +//ͳƷṹ +typedef struct tagNET_DVR_PDC_ENTER_DIRECTION +{ + NET_VCA_POINT struStartPoint; //ͳƷʼ + NET_VCA_POINT struEndPoint; // ͳƷ +}NET_DVR_PDC_ENTER_DIRECTION, *LPNET_DVR_PDC_ENTER_DIRECTION; + +typedef struct tagNET_DVR_PDC_RULE_CFG +{ + DWORD dwSize; //ṹС + BYTE byEnable; // Ƿ񼤻; + BYTE byRes1[23]; // ֽ + NET_VCA_POLYGON struPolygon; // + NET_DVR_PDC_ENTER_DIRECTION struEnterDirection; // 뷽 +} NET_DVR_PDC_RULE_CFG, *LPNET_DVR_PDC_RULE_CFG; + +typedef struct tagNET_DVR_PDC_RULE_CFG_V41 +{ + DWORD dwSize; //ṹС + BYTE byEnable; // Ƿ񼤻; + BYTE byRes1[23]; // ֽ + NET_VCA_POLYGON struPolygon; // + NET_DVR_PDC_ENTER_DIRECTION struEnterDirection; // 뷽 + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + NET_DVR_TIME_EX struDayStartTime; //쿪ʼʱ䣬ʱЧ + NET_DVR_TIME_EX struNightStartTime; //ҹʼʱ䣬ʱЧ + BYTE byRes[100]; // ֽ +}NET_DVR_PDC_RULE_CFG_V41, *LPNET_DVR_PDC_RULE_CFG_V41; + +/********* IPC5.1.7 ͳƹ Begin 2014-03-21***********/ +//ṹ +typedef struct tagNET_DVR_PDC_RULE_COND +{ + DWORD dwSize; //ṹС + DWORD dwChannel; //ͨ + DWORD dwID; //IDೡϰ汾SDK豸ʱֽΪ0ֽΪ0ʱҲĬΪ1 + BYTE byRes[60]; +}NET_DVR_PDC_RULE_COND, *LPNET_DVR_PDC_RULE_COND; + +//߽ṹ +typedef struct tagNET_VCA_POLYLINE +{ + NET_VCA_POINT struPoint[4]; //ߵ +}NET_VCA_POLYLINE, *LPNET_VCA_POLYLINE; + +//ýṹ +typedef struct tagNET_DVR_PDC_RULE_CFG_V42 +{ + DWORD dwSize; //ṹС + BYTE byEnable; //Ƿ񼤻; + BYTE byOSDEnable;//ͳOSDʾǷ, 0-0-ޣ1-ǣ0-뿪 2-룬 3-뿪 豸IJOSDӶӦޣöӦ/뿪4-5-; + BYTE byCurDetectType;//ǰͣ0-Σ1-, 2-߼ + BYTE byInterferenceSuppression; //ƣλʾ,0-δѡ,1-ѡbit0-Ӱbit1-ǻbit2-Ƴ + NET_VCA_POINT struOSDPoint;//ͳʾOSDʾϽ + //ϴڣ0-151-12-53-104-205-306-60λ + BYTE byDataUploadCycle; + //ÿϴʹܣ0-رգ1- + BYTE bySECUploadEnable; + BYTE byEmailDayReport;//ձʹ 0-رգ1- + BYTE byEmailWeekReport;//ܱʹ 0-رգ1- + BYTE byEmailMonthReport;//±ʹ0-رգ1- + BYTE byEmailYearReport;//걨ʹ0-رգ1- + BYTE byRes2[6];// ֽ + NET_VCA_POLYGON struPolygon; // + NET_DVR_PDC_ENTER_DIRECTION struEnterDirection; // 뷽 + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + NET_DVR_TIME_EX struDayStartTime; //쿪ʼʱ䣬ʱЧ + NET_DVR_TIME_EX struNightStartTime; //ҹʼʱ䣬ʱЧ + NET_DVR_HANDLEEXCEPTION_V40 struAlarmHandleType; /*ʽ ֧ϴ*/ + BYTE byDetecteSensitivity;//ĿȣΧ1-100Ĭ50 + BYTE byGenerateSpeedSpace;//Ŀٶȣ򣩣Χ1-100Ĭ50 + BYTE byGenerateSpeedTime;// Ŀٶȣʱ򣩣Χ1-100Ĭ50 + BYTE byCountSpeed;// ٶȣΧ1-100Ĭ50 + BYTE byDetecteType;// Ŀͣ0-Զ1-ͷ2-ͷ磬Ĭ0-ԶԶģʽDSP㷨IJø㷨 + BYTE byTargetSizeCorrect;//ĿߴΧ1-100Ĭ50 + BYTE byStreamOverlayRuleInfos;//Ϣ 0-1- + BYTE byRes3;// ֽ + NET_VCA_LINE struLine;// + BYTE byHeightFilterEnable;//߶ȹǷ0-1-رգ2- + BYTE byDetectThreshold;//ֵ,Χ[0,100],Ĭ 90(ڲʹãݲ)趨㷨бĿŶֵŶȵڸֵĿ꣬ڸټ + BYTE byAidedTrackEnabled;//ٿأ0~1~رգĬϿ(ڲʹ) ڿ͹ر㷨ģеĹ٣ٿԱӾ׼ȡ + BYTE byRes4; + float fHeightFilter;//˸߶ȣλףĬֵ120ףΧ40-200סbyHeightFilterEnableΪ2DzЧ + BYTE byCalibrateType;//궨ͣ0-δб궨1-Զ궨2-ֶ궨 + BYTE byCountingType;//ʽ 0-,1-봥,2-Ƶ + BYTE bySignalType;//ź 0-ƽ1- + BYTE byRS485TransmissionEnabled;//485 0-رգ1- + float fTiltAngle;//,λȣĬֵ0ǷΧ0-180,ֻ + float fHeelAngle;//б,λȣбĬֵ0бǷΧ-90-90,ֻ + float fHeight;//߶ȣ߶ȵλף߶Ĭֵ300ף߶ȷΧ200-500,byCalibrateTypeΪ2ʱЧʱֻ + NET_VCA_POLYGON struCountPolygon;//򣺸òĬΪֻԣͨзڵ㣬ò֧á + NET_VCA_POLYGON struAutoCalibPolygon;//궨򣬵byCalibrateTypeΪ1ʱЧ + NET_DVR_TIME_EX struDailyResetTime; //ʱ + NET_VCA_POLYLINE struPolyLine;//߼ߺstruLineʾ + BYTE byRes[4]; //ֽ +}NET_DVR_PDC_RULE_CFG_V42, *LPNET_DVR_PDC_RULE_CFG_V42; +/********* IPC5.1.7 ͳƹ End 2014-03-21***********/ + +//ðϢṹ +typedef struct tagNET_DVR_TRIAL_VERSION_CFG +{ + DWORD dwSize; + WORD wReserveTime; //ʣʱ䣬0xffffʾЧλ + BYTE byRes[62]; +}NET_DVR_TRIAL_VERSION_CFG, *LPNET_DVR_TRIAL_VERSION_CFG; + +typedef struct tagNET_DVR_SYN_CHANNEL_NAME_PARAM +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byRes[64]; +}NET_DVR_SYN_CHANNEL_NAME_PARAM, *LPNET_DVR_SYN_CHANNEL_NAME_PARAM; + +typedef struct tagNET_DVR_RESET_COUNTER_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿã0-ã1- + BYTE byMode; //Чģʽ0-ʱ1-ֶ + BYTE byRes1[2]; + NET_DVR_TIME_EX struTime[MAX_DAYS];//ʱ䣬ʱЧ + BYTE byRes[64]; +}NET_DVR_RESET_COUNTER_CFG, *LPNET_DVR_RESET_COUNTER_CFG; + +typedef struct tagNET_DVR_VCA_CTRLINFO_COND +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struStreamInfo; + BYTE byRes[64]; +}NET_DVR_VCA_CTRLINFO_COND, *LPNET_DVR_VCA_CTRLINFO_COND; + +#define NET_SDK_MAX_RELATED_CHAN_NUM 4 //ͨ + +typedef struct tagNET_DVR_VCA_CTRLINFO_CFG +{ + DWORD dwSize; + BYTE byVCAEnable; //Ƿ + BYTE byVCAType; //ͣVCA_CHAN_ABILITY_TYPE + BYTE byStreamWithVCA; //ǷϢ + BYTE byMode; //ģʽATM ʱVCA_CHAN_MODE_TYPE ,TFS ʱ TFS_CHAN_MODE_TYPEΪʱBEHAVIOR_SCENE_MODE_TYPE + BYTE byControlType; //ͣλʾ0-1- + //byControlType &1 ǷץĹ + //byControlType &2 Ƿǰ豸 + BYTE byRes1[3]; + WORD wRelatedChannel[NET_SDK_MAX_RELATED_CHAN_NUM/*4*/];/*ͨţ0-ǰATM豸ʹãͨģʽΪATMʱԹһ·ATMͨ*/ + BYTE byRes[72]; //Ϊ0 +}NET_DVR_VCA_CTRLINFO_CFG, *LPNET_DVR_VCA_CTRLINFO_CFG; + +//ͳƲ Ϊڲؼֲ +// HUMAN_GENERATE_RATE +// ĿٶȲPDCĿٶȡٶԽ죬ĿԽɡƵϲԱȶȽϵʱõĹСʱӦӿĿٶȣ Ŀ©죻ƵжԱȶȽϸʱ߹ϴʱӦýĿٶȣԼ졣ĿٶȲ51ٶ5죬ĬϲΪ3 +// +// DETECT_SENSITIVE +// ĿȿƲPDCһ򱻼ΪĿȡԽߣԽױΪĿ꣬ԽԽѼΪĿꡣƵϲԱȶȽϵʱӦ߼ȣ Ŀ©죻ƵжԱȶȽϸʱӦýͼȣԼ졣Ӧ51ͣ5ߣĬϼΪ3 +// TRAJECTORY_LEN +// 켣ɳȿƲʾɹ켣ʱҪĿλءӦ51ɳ켣5ɳ̣켣죬ĬϼΪ3 +// TRAJECT_CNT_LEN +// 켣ȿƲʾ켣ʱҪĿλءӦ51Ҫ󳤶켣5Ҫ󳤶̣켣죬ĬϼΪ3 +// PREPROCESS +// ͼԤƲ0 - 1 - ĬΪ0 +// CAMERA_ANGLE +// Ƕ 0 - б 1 - ֱĬΪ0 +typedef enum tagPDC_PARAM_KEY +{ + HUMAN_GENERATE_RATE = 50, // Ŀٶ 50ʼ + DETECT_SENSITIVE = 51, // +}PDC_PARAM_KEY; + +typedef struct tagNET_DVR_PDC_TARGET_INFO +{ + DWORD dwTargetID; // Ŀid + NET_VCA_RECT struTargetRect; // Ŀ + BYTE byRes1[8]; // ֽ +}NET_DVR_PDC_TARGET_INFO, *LPNET_DVR_PDC_TARGET_INFO; + +typedef struct tagNET_DVR_PDC_TARGET_IN_FRAME +{ + BYTE byTargetNum; //Ŀ + BYTE byRes1[3]; + NET_DVR_PDC_TARGET_INFO struTargetInfo[MAX_TARGET_NUM]; //ĿϢ + BYTE byRes2[8]; // ֽ +}NET_DVR_PDC_TARGET_IN_FRAME, *LPNET_DVR_PDC_TARGET_IN_FRAME; + +typedef struct tagNET_DVR_PDC_ALRAM_INFO +{ + DWORD dwSize; // PDCϴṹС + BYTE byMode; // 0 ֡ͳƽ 1Сʱͳƽ 2 źڡͳʼʱ䡱&&ͳƽʱ䡱 + BYTE byChannel; // ϴͨ + /********* IPC5.1.7 Begin 2014-03-21***********/ + BYTE bySmart; //רҵܷ0Smart 1 + BYTE byRes1; // ֽ + /********* IPC5.1.7 End 2014-03-21***********/ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + union + { + struct // ֡ͳƽʱʹ + { + DWORD dwRelativeTime; // ʱ + DWORD dwAbsTime; // ʱ + BYTE byTimeDiffFlag; /*ʱֶǷЧ 0-ʱЧ 1-ʱЧ */ + char cTimeDifferenceH; /*UTCʱСʱ-12 ... +14 +ʾ,byTimeDiffFlagΪ1ʱЧ*/ + char cTimeDifferenceM; /*UTCʱӣ-30, 30, 45 +ʾbyTimeDiffFlagΪ1ʱЧ*/ + BYTE byRes[89]; + }struStatFrame; + struct + { + NET_DVR_TIME tmStart; // ͳʼʱ + NET_DVR_TIME tmEnd; // ͳƽʱ + BYTE byTimeDifferenceFlag; /*0-ĬΪcStartTimeDifferenceH,ʱϢЧ1-ʱϢЧ*/ + char cStartTimeDifferenceH; /*ʼʱUTCʱСʱ-12 ... +14+ʾ*/ + char cStartTimeDifferenceM; /*ʼʱUTCʱӣ-30, 30, 45+ʾ*/ + char cStopTimeDifferenceH; /*ʱUTCʱСʱ-12 ... +14+ʾ*/ + char cStopTimeDifferenceM; /*ʱUTCʱӣ-30, 30, 45+ʾ*/ + BYTE byRes[87]; + }struStatTime; + }uStatModeParam; // Ϊһ ֡ʱ֡ĿϢ СʱͳƽҪͳʱ + DWORD dwLeaveNum; // 뿪 + DWORD dwEnterNum; // + BYTE byBrokenNetHttp; //־λ0-شݣ1-ش + BYTE byRes3; + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + DWORD dwPassingNum; // ǻûд롢뿪 + DWORD dwChildLeaveNum; // С뿪 + DWORD dwChildEnterNum; // С + DWORD dwDuplicatePeople; // ظ + DWORD dwXmlLen;//XML͸ݳ, EventNotificationAlert XML Blockݳ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pXmlBuf; // XMLϢָ,XMLӦEventNotificationAlert XML Block +#else + char* pXmlBuf; // XMLϢָ,XMLӦEventNotificationAlert XML Block + BYTE byRes4[4]; +#endif + BYTE byRes2[8]; // ֽ +}NET_DVR_PDC_ALRAM_INFO, *LPNET_DVR_PDC_ALRAM_INFO; + + +// Ϣѯ +typedef struct tagNET_DVR_PDC_QUERY +{ + NET_DVR_TIME tmStart; + NET_DVR_TIME tmEnd; + DWORD dwLeaveNum; + DWORD dwEnterNum; + BYTE byRes1[256]; +}NET_DVR_PDC_QUERY, *LPNET_DVR_PDC_QUERY; + +typedef struct tagNET_DVR_POSITION_RULE_CFG +{ + DWORD dwSize; // ṹС + NET_DVR_PTZ_POSITION struPtzPosition; // λϢ + NET_VCA_RULECFG struVcaRuleCfg; //Ϊ + BYTE byRes2[80]; // ֽ +}NET_DVR_POSITION_RULE_CFG, *LPNET_DVR_POSITION_RULE_CFG; + +typedef struct tagNET_DVR_POSITION_RULE_CFG_V41 +{ + DWORD dwSize; // ṹС + NET_DVR_PTZ_POSITION struPtzPosition; // λϢ + NET_VCA_RULECFG_V41 struVcaRuleCfg; //Ϊ + BYTE byTrackEnable; //Ƿø + BYTE byRes1; + WORD wTrackDuration; //ٳʱ䣬λs + BYTE byRes2[76]; // ֽ +}NET_DVR_POSITION_RULE_CFG_V41, *LPNET_DVR_POSITION_RULE_CFG_V41; + + +typedef struct tagNET_DVR_LIMIT_ANGLE +{ + BYTE byEnable; // Ƿóλ + BYTE byRes1[3]; + NET_DVR_PTZPOS struUp; // λ + NET_DVR_PTZPOS struDown; // λ + NET_DVR_PTZPOS struLeft; // λ + NET_DVR_PTZPOS struRight; // λ + BYTE byRes2[20]; +}NET_DVR_LIMIT_ANGLE, *LPNET_DVR_LIMIT_ANGLE; + +typedef struct tagNET_DVR_POSITION_INDEX +{ + BYTE byIndex; // + BYTE byRes1; + WORD wDwell; // ͣʱ + BYTE byRes2[4]; // ֽ +}NET_DVR_POSITION_INDEX, *LPNET_DVR_POSITION_INDEX; + +#define MAX_POSITION_NUM 10 +typedef struct tagNET_DVR_POSITION_TRACK_CFG +{ + DWORD dwSize; + BYTE byNum; // + BYTE byRes1[3]; + NET_DVR_POSITION_INDEX struPositionIndex[MAX_POSITION_NUM]; + BYTE byRes2[8]; +}NET_DVR_POSITION_TRACK_CFG, *LPNET_DVR_POSITION_TRACK_CFG; + +//Ѳ·Ϣ +typedef struct tagNET_DVR_PATROL_SCENE_INFO +{ + WORD wDwell; // ͣʱ 30-300 + BYTE byPositionID; // 1-10Ĭ0ʾѲ㲻ӳ + BYTE byRes[5]; +}NET_DVR_PATROL_SCENE_INFO, *LPNET_DVR_PATROL_SCENE_INFO; + +// ѲϢ +typedef struct tagNET_DVR_PATROL_TRACKCFG +{ + DWORD dwSize; // ṹС + NET_DVR_PATROL_SCENE_INFO struPatrolSceneInfo[10]; // Ѳ· + BYTE byRes[16]; // ֽ +}NET_DVR_PATROL_TRACKCFG, *LPNET_DVR_PATROL_TRACKCFG; + +//ع˵ýṹ +typedef struct tagNET_DVR_TRACK_PARAMCFG +{ + DWORD dwSize; // ṹС + WORD wAlarmDelayTime; // ʱʱ䣬Ŀǰֻ֧ȫ Χ1-120 + WORD wTrackHoldTime; // ٳʱ Χ0-300 + BYTE byTrackMode; // IPDOME_TRACK_MODE + BYTE byPreDirection; // ٷԤ 0- 1- + BYTE byTrackSmooth; // 0- 1- + BYTE byZoomAdjust; // ϵ μ± + BYTE byMaxTrackZoom; //ٱϵ,0-ʾĬϱϵ,ȼ6-궨ֵ*1.0(Ĭ),1-5ΪС궨ֵֵԽССıԽ,7-15ΪŴֵԽ󣬷ŴıԽ + BYTE byStopTrackWhenFindFace; //⵽Ƿֹͣ 0- 1- + BYTE byStopTrackThreshold; //ֵֹ + BYTE byRes[9]; // ֽ +}NET_DVR_TRACK_PARAMCFG, *LPNET_DVR_TRACK_PARAMCFG; + +// о +typedef struct tagNET_DVR_DOME_MOVEMENT_PARAM +{ + WORD wMaxZoom; // ϵ + BYTE byRes[42]; // ֽ +}NET_DVR_DOME_MOVEMENT_PARAM, *LPNET_DVR_DOME_MOVEMENT_PARAM; + +/********************************ܽͨ¼ begin****************************************/ +#define MAX_REGION_NUM 8 // бĿ +#define MAX_TPS_RULE 8 // Ŀ +#define MAX_AID_RULE 8 // ¼Ŀ +#define MAX_LANE_NUM 8 // 󳵵Ŀ + +//ͨ¼ͣ +typedef enum tagTRAFFIC_AID_TYPE +{ + CONGESTION = 0x01, //ӵ + PARKING = 0x02, //ͣ + INVERSE = 0x04, // + PEDESTRIAN = 0x08, // + DEBRIS = 0x10, // Ƭ + SMOKE = 0x20, // + OVERLINE = 0x40, //ѹ + VEHICLE_CONTROL_LIST = 0x80, //ֹ + SPEED = 0x100, // + LANECHANGE = 0x200, // + TURNAROUND = 0x400, //ͷ + VEHICLE_OCCUPANCY_NONVEHICLE = 0x800, //ռ÷ǻλ + GASSER = 0x1000, // + ROADBLOCK = 0x2000, //· + CONSTRUCTION = 0x4000, //ʩ + TRAFFIC_ACCIDENT = 0x8000, //ͨ¹ʼ⣨ͨ¹Ŀǰ¹ʣ׷βв㷨жϳ복֮켣н棬򱨾 + PARALLEL_PARKING = 0x10000, //෽λͣ + FOG_DETECTION = 0x20000, //Ũ + OCCUPY_EMERGENCY_LANE = 0x40000, //ռý + CONFLAGRATION = 0X80000, // + TFS_MANUAL_TRIGGER = 0x100000, //ֶΥȡ֤¼ + LOADING_DOCK_TRIGGER_UPLOAD = 0x200000, //̨ϴ + OCCUPY_OVERTAKING_LANE = 0x400000, //ռó + PROHIBITION_MARK_VIOLATION = 0x800000, //Υ־ + CHECK_POINT = 0x1000000, // + SUDDEN_SPEED_DROP = 0x2000000, //ٶ轵 + SLOW_MOVING = 0x4000000 // +}TRAFFIC_AID_TYPE; + +typedef enum tagTRAFFIC_SCENE_MODE +{ + FREEWAY = 0, // ٻⳡ + TUNNEL, // + BRIDGE // +}TRAFFIC_SCENE_MODE; + +typedef enum tagITS_ABILITY_TYPE +{ + ITS_CONGESTION_ABILITY = 0x01, //ӵ + ITS_PARKING_ABILITY = 0x02, //ͣ + ITS_INVERSE_ABILITY = 0x04, // + ITS_PEDESTRIAN_ABILITY = 0x08, // + ITS_DEBRIS_ABILITY = 0x10, // Ƭ + ITS_SMOKE_ABILITY = 0x20, //- + ITS_OVERLINE_ABILITY = 0x40, //ѹ + ITS_VEHICLE_CONTROL_LIST_ABILITY = 0x80, //ֹ + ITS_SPEED_ABILITY = 0x100, // + ITS_LANECHANGE_ABILITY = 0x200, // + ITS_TURNAROUND_ABILITY = 0x400, //ͷ + ITS_LANE_VOLUME_ABILITY = 0x010000, // + ITS_LANE_VELOCITY_ABILITY = 0x020000, //ƽٶ + ITS_TIME_HEADWAY_ABILITY = 0x040000, //ͷʱ + ITS_SPACE_HEADWAY_ABILITY = 0x080000, //ͷ + ITS_TIME_OCCUPANCY_RATIO_ABILITY = 0x100000, //ռʣʱ) + ITS_SPACE_OCCUPANCY_RATIO_ABILITY = 0x200000, //ռʣٷֱȼ㣨ռ) + ITS_LANE_QUEUE_ABILITY = 0x400000, //Ŷӳ + ITS_VEHICLE_TYPE_ABILITY = 0x800000, // + ITS_TRAFFIC_STATE_ABILITY = 0x1000000 //ͨ״̬ +}ITS_ABILITY_TYPE; + +// ͨͳƲ +typedef enum tagITS_TPS_TYPE +{ + LANE_VOLUME = 0x01, // + LANE_VELOCITY = 0x02, //ٶ + TIME_HEADWAY = 0x04, //ͷʱ + SPACE_HEADWAY = 0x08, //ͷ + TIME_OCCUPANCY_RATIO = 0x10, //ռ (ʱ) + SPACE_OCCUPANCY_RATIO = 0x20, //ռʣٷֱȼ(ռ) + QUEUE = 0x40, //Ŷӳ + VEHICLE_TYPE = 0x80, // + TRAFFIC_STATE = 0x100 //ͨ״̬ +}ITS_TPS_TYPE; + +typedef struct tagNET_DVR_REGION_LIST +{ + DWORD dwSize; // ṹС + BYTE byNum; // + BYTE byRes1[3]; // ֽ + NET_VCA_POLYGON struPolygon[MAX_REGION_NUM]; // + BYTE byRes2[20]; // ֽ +}NET_DVR_REGION_LIST,*LPNET_DVR_REGION_LIST; + + +// ṹ +typedef struct tagNET_DVR_DIRECTION +{ + NET_VCA_POINT struStartPoint; // ʼ + NET_VCA_POINT struEndPoint; // +}NET_DVR_DIRECTION, *LPNET_DVR_DIRECTION; + +// +typedef struct tagNET_DVR_ONE_LANE +{ + BYTE byEnable; // Ƿ + BYTE byRes1[11]; // ֽ + BYTE byLaneName[NAME_LEN]; // + NET_DVR_DIRECTION struFlowDirection;// ڳ + NET_VCA_POLYGON struPolygon; // +}NET_DVR_ONE_LANE, *LPNET_DVR_ONE_LANE; + +// +typedef struct tagNET_DVR_LANE_CFG +{ + DWORD dwSize; // ṹС + NET_DVR_ONE_LANE struLane[MAX_LANE_NUM]; // ±ΪID + BYTE byRes1[40]; // ֽ +}NET_DVR_LANE_CFG, *LPNET_DVR_LANE_CFG; + +// ͨ¼ +typedef struct tagNET_DVR_AID_PARAM +{ + WORD wParkingDuration; // Υͣ 10-120s + WORD wPedestrianDuration; // ˳ʱ 1-120s + WORD wDebrisDuration; // ʱ 10-120s + WORD wCongestionLength; // ӵ³ֵ 5-200ף + WORD wCongestionDuration; // ӵ³ 10-120s + WORD wInverseDuration; // гʱ 1-10s + WORD wInverseDistance; // оֵ λm Χ[2-100] Ĭ 10 + WORD wInverseAngleTolerance; // Ƕƫ 90-180,ļн + WORD wIllegalParkingTime; // Υͣʱ[4,60]λ ,TFS(ͨΥȡ֤) ģʽ + WORD wIllegalParkingPicNum; // ΥͣͼƬ[1,6], TFS(ͨΥȡ֤) ģʽ + BYTE byMergePic; // ͼƬƴ,TFS ģʽ 0- ƴ 1- ƴ + BYTE byRes1[23]; // ֽ +}NET_DVR_AID_PARAM, *LPNET_DVR_AID_PARAM; + +// ͨ¼ṹ +typedef struct tagNET_DVR_ONE_AID_RULE +{ + BYTE byEnable; // Ƿ¼ + BYTE byRes1[3]; // ֽ + BYTE byRuleName[NAME_LEN]; // + DWORD dwEventType; // ͨ¼ TRAFFIC_AID_TYPE + NET_VCA_SIZE_FILTER struSizeFilter; // ߴ + NET_VCA_POLYGON struPolygon; // + NET_DVR_AID_PARAM struAIDParam; // ¼ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_2];//ʱ + NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //ʽ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ,Ϊ1ʾͨ + BYTE byRes2[20]; +}NET_DVR_ONE_AID_RULE, *LPNET_DVR_ONE_AID_RULE; + +// ͨ¼ +typedef struct tagNET_DVR_AID_RULECFG +{ + DWORD dwSize; // ṹС + BYTE byPicProType; //ʱͼƬʽ 0- 0-ϴ + BYTE byRes1[3]; // ֽ + NET_DVR_JPEGPARA struPictureParam; //ͼƬṹ + NET_DVR_ONE_AID_RULE struOneAIDRule[MAX_AID_RULE]; + BYTE byRes2[32]; +}NET_DVR_AID_RULECFG, *LPNET_DVR_AID_RULECFG; + +// ͨ¼ṹ(չ) +typedef struct tagNET_DVR_ONE_AID_RULE_V41 +{ + BYTE byEnable; // Ƿ¼ + BYTE byLaneNo; // + BYTE byRes1[2]; // ֽ + BYTE byRuleName[NAME_LEN]; // + DWORD dwEventType; // ͨ¼ TRAFFIC_AID_TYPE + NET_VCA_SIZE_FILTER struSizeFilter; // ߴ + NET_VCA_POLYGON struPolygon; // + NET_DVR_AID_PARAM struAIDParam; // ¼ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];// ʱ + NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //ʽ + BYTE byRelRecordChan[MAX_IVMS_IP_CHANNEL]; //¼ͨ1ʾͨ0ʾ + BYTE byRes2[60]; // +}NET_DVR_ONE_AID_RULE_V41, *LPNET_DVR_ONE_AID_RULE_V41; + +// ͨ¼(չ) +typedef struct tagNET_DVR_AID_RULECFG_V41 +{ + DWORD dwSize; // ṹС + BYTE byPicProType; // ʱͼƬʽ 0- 0-ϴ + BYTE byRes1[3]; // ֽ + NET_DVR_JPEGPARA struPictureParam; // ͼƬṹ + NET_DVR_ONE_AID_RULE_V41 struAIDRule[MAX_AID_RULE]; // + BYTE byRes2[128]; // +} NET_DVR_AID_RULECFG_V41, *LPNET_DVR_AID_RULECFG_V41; + +// ͨͳƲṹ +typedef struct tagNET_DVR_ONE_TPS_RULE +{ + BYTE byEnable; //Ƿʹܳͨ + BYTE byLaneID; //ID + BYTE byRes1[2]; + DWORD dwCalcType; //ͳƲITS_TPS_TYPE + NET_VCA_SIZE_FILTER struSizeFilter; //ߴ + NET_VCA_POLYGON struVitrualLoop; //Ȧ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_2];//ʱ + NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //ʽ,һΪǷϴģܲҪ + BYTE byRes2[20]; //ֽ +}NET_DVR_ONE_TPS_RULE, *LPNET_DVR_ONE_TPS_RULE; + +// ͨͳƹýṹ +typedef struct tagNET_DVR_TPS_RULECFG +{ + DWORD dwSize; // ṹС + NET_DVR_ONE_TPS_RULE struOneTpsRule[MAX_TPS_RULE]; // ±ӦͨID + BYTE byRes2[40]; // ֽ +}NET_DVR_TPS_RULECFG, *LPNET_DVR_TPS_RULECFG; + +// ͨͳƲṹ(չ) +typedef struct tagNET_DVR_ONE_TPS_RULE_V41 +{ + BYTE byEnable; //Ƿʹܳͨ + BYTE byLaneID; //ID + BYTE byRes1[2]; // + DWORD dwCalcType; // ͳƲITS_TPS_TYPE + NET_VCA_SIZE_FILTER struSizeFilter; //ߴ + NET_VCA_POLYGON struVitrualLoop; //Ȧ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //ʽ + BYTE byRes2[60]; // ֽ +}NET_DVR_ONE_TPS_RULE_V41, *LPNET_DVR_ONE_TPS_RULE_V41; + + +// ͨͳƹýṹ(չ) +typedef struct tagNET_DVR_TPS_RULECFG_V41 +{ + DWORD dwSize; // ṹС + NET_DVR_ONE_TPS_RULE_V41 struOneTpsRule[MAX_TPS_RULE]; // ±ӦͨID + BYTE byRes[128]; // +}NET_DVR_TPS_RULECFG_V41, *LPNET_DVR_TPS_RULECFG_V41; + +//ͨ¼չ +typedef enum tagTRAFFIC_AID_TYPE_EX +{ + ENUM_AID_TYPE_CONGESTION = 1, //ӵ + ENUM_AID_TYPE_PARKING = 2, //ͣ + ENUM_AID_TYPE_INVERSE = 3, // + ENUM_AID_TYPE_PEDESTRIAN = 4, // + ENUM_AID_TYPE_DEBRIS = 5, // Ƭ + ENUM_AID_TYPE_SMOKE = 6, // + ENUM_AID_TYPE_OVERLINE = 7, //ѹ + ENUM_AID_TYPE_VEHICLE_CONTROL_LIST = 8, //ֹ + ENUM_AID_TYPE_SPEED = 9, // + ENUM_AID_TYPE_LANECHANGE = 10, // + ENUM_AID_TYPE_TURNAROUND = 11, //ͷ + ENUM_AID_TYPE_VEHICLE_OCCUPANCY_NONVEHICLE = 12, //ռ÷ǻλ + ENUM_AID_TYPE_GASSER = 13, // + ENUM_AID_TYPE_ROADBLOCK = 14, //· + ENUM_AID_TYPE_CONSTRUCTION = 15, //ʩ + ENUM_AID_TYPE_TRAFFIC_ACCIDENT = 16, //ͨ¹ʼ⣨ͨ¹Ŀǰ¹ʣ׷βв㷨жϳ복֮켣н棬򱨾 + ENUM_AID_TYPE_PARALLEL_PARKING = 17, //෽λͣ + ENUM_AID_TYPE_FOG_DETECTION = 18, //Ũ + ENUM_AID_TYPE_OCCUPY_EMERGENCY_LANE = 19, //ռý + ENUM_AID_TYPE_CONFLAGRATION = 20, // + ENUM_AID_TYPE_TFS_MANUAL_TRIGGER = 21, //ֶΥȡ֤¼ + ENUM_AID_TYPE_LOADING_DOCK_TRIGGER_UPLOAD = 22, //̨ϴ + ENUM_AID_TYPE_OCCUPY_OVERTAKING_LANE = 23, //ռó + ENUM_AID_TYPE_PROHIBITION_MARK_VIOLATION = 24, //Υ־ + ENUM_AID_TYPE_CHECK_POINT = 25, // + ENUM_AID_TYPE_SUDDEN_SPEED_DROP = 26, //ٶ轵 + ENUM_AID_TYPE_SLOW_MOVING = 27, // + ENUM_AID_TYPE_NOT_KEEP_DISTANCE = 28, //δֳ + ENUM_AID_TYPE_NOT_SLOW_ZEBRA_CROSSING = 29, //δ + ENUM_AID_TYPE_OVER_TAKE_RIGHT_SIDE = 30, //Ҳ೬ + ENUM_AID_TYPE_LOW_SPEED = 31, //ʻ + ENUM_AID_TYPE_DRAG_RACING = 32, //쭳 + ENUM_AID_TYPE_CHANGE_LANE_CONTINUOUSLY = 33, // + ENUM_AID_TYPE_S_SHARP_DRIVING = 34, //ʻ + ENUM_AID_TYPE_LARGE_VEHICLE_OCCUPY_LINE = 35, //ռ + ENUM_AID_TYPE_ROAD_GROUP = 36, //·ԱۼΪԱۼ㷨ͬӦóͬ, ͨ¼Ӧڸ١ȽͨΪԱۼӦóǽ档 + ENUM_AID_TYPE_SINGLE_VEHICLE_BREAKDOWN = 37, //ê + ENUM_AID_TYPE_BLACK_SMOKE_VEHICLE = 38, //̳ + ENUM_AID_TYPE_VEHNOYIELDPEDEST = 39, // + ENUM_AID_TYPE_ILLEGALMANNEDVEH = 40, //Υ + ENUM_AID_TYPE_ILLEGALMANNEDNONMOTORVEH = 41, //ǻΥ + ENUM_AID_TYPE_UMBRELLATENTINSTALL = 42, //ǻΥװ + ENUM_AID_TYPE_NONMOTORVEHONVEHLANE = 43, //ǻռû + ENUM_AID_TYPE_WEARINGNOHELMET = 44, //ǻδͷ + ENUM_AID_TYPE_PEDESTREDLIGHTRUNNING = 45, //˴ + ENUM_AID_TYPE_PEDESTONNONMOTORVEHLANE = 46, //˷ǻ + ENUM_AID_TYPE_PEDESTONVEHLANE = 47, //˻ + ENUM_AID_TYPE_OCCUPYDEDICATEDLANE = 48,//ռרó + ENUM_AID_TYPE_NOTDRIVEINDEDICATEDLANE = 49,//δרóʻ +}TRAFFIC_AID_TYPE_EX; + +// ͨ¼Ϣ +typedef struct tagNET_DVR_AID_INFO +{ + BYTE byRuleID; // ţΪýṹ±꣬0-16 + BYTE byVisibilityLevel; // ܼȵȼ0-1-~2-~3-~Ũ4-Ũ + BYTE byRes1[2]; + BYTE byRuleName[NAME_LEN]; // + DWORD dwAIDType; // ¼ + NET_DVR_DIRECTION struDirect; // ָ + BYTE bySpeedLimit; //ֵλkm/h[0,255] + BYTE byCurrentSpeed; //ǰٶֵλkm/h[0,255] + BYTE byVehicleEnterState;//״̬ 0-Ч 1-ʻ 2-ʻ + BYTE byState; //0-仯ϴ1-Ѳϴ2-ǰ豸ʱץĵϴʵƽ̨γͼƬУڷ㷨ûм⵽ֵͣ2ڡdwAIDType;//¼͡Ϊ ͣ¼ʱЧ + BYTE byParkingID[16]; //ͣλ + DWORD dwAIDTypeEx; // ¼չ,οTRAFFIC_AID_TYPE_EX + BYTE byRes2[16]; // ֽ +}NET_DVR_AID_INFO, *LPNET_DVR_AID_INFO; + +// ͨ¼ +typedef struct tagNET_DVR_AID_ALARM +{ + DWORD dwSize; // ṹ + DWORD dwRelativeTime; // ʱ + DWORD dwAbsTime; // ʱ + NET_VCA_DEV_INFO struDevInfo; // ǰ豸Ϣ + NET_DVR_AID_INFO struAIDInfo; // ͨ¼Ϣ + DWORD dwPicDataLen; // ͼƬij Ϊ0ʾûͼƬ0ʾýṹͼƬ + BYTE *pImage; // ָͼƬָ + BYTE byRes[40]; // ֽ +}NET_DVR_AID_ALARM, *LPNET_DVR_AID_ALARM; + +// нṹ +typedef struct tagNET_DVR_LANE_QUEUE +{ + NET_VCA_POINT struHead; //ͷ + NET_VCA_POINT struTail; //β + DWORD dwLength; //ʵʶг λΪ [0-500] +}NET_DVR_LANE_QUEUE, *LPNET_DVR_LANE_QUEUE; + +typedef enum tagTRAFFIC_DATA_VARY_TYPE +{ + NO_VARY, //ޱ仯 + VEHICLE_ENTER, //Ȧ + VEHICLE_LEAVE, //뿪Ȧ + UEUE_VARY //б仯 +}TRAFFIC_DATA_VARY_TYPE; + +typedef struct tagNET_DVR_LANE_PARAM +{ + BYTE byRuleName[NAME_LEN]; // + BYTE byRuleID; //ţΪýṹ±꣬0-7 + BYTE byVaryType; //ͨ仯 TRAFFIC_DATA_VARY_TYPE + BYTE byLaneType; //л + BYTE byRes1; + DWORD dwLaneVolume; // ͳжٳͨ + DWORD dwLaneVelocity; //ٶȣ + DWORD dwTimeHeadway; //ͷʱ࣬ + DWORD dwSpaceHeadway; //ͷ࣬ + float fSpaceOccupyRation; //ռʣٷֱȼ㣨ռ) + NET_DVR_LANE_QUEUE struLaneQueue; //г + NET_VCA_POINT struRuleLocation; //Ȧĵλ + BYTE byRes2[32]; +}NET_DVR_LANE_PARAM, *LPNET_DVR_LANE_PARAM; + + +typedef struct tagNET_DVR_TPS_INFO +{ + DWORD dwLanNum; // ͨijĿ + NET_DVR_LANE_PARAM struLaneParam[MAX_TPS_RULE]; +}NET_DVR_TPS_INFO, *LPNET_DVR_TPS_INFO; + +typedef struct tagNET_DVR_TPS_ALARM +{ + DWORD dwSize; //ṹС + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + NET_DVR_TPS_INFO struTPSInfo; //ͨ¼Ϣ + BYTE byRes1[32]; //ֽ +}NET_DVR_TPS_ALARM, *LPNET_DVR_TPS_ALARM; + +typedef enum tagTRAFFIC_DATA_VARY_TYPE_EX_ENUM +{ + ENUM_TRAFFIC_VARY_NO = 0x00, //ޱ仯 + ENUM_TRAFFIC_VARY_VEHICLE_ENTER = 0x01, //Ȧ + ENUM_TRAFFIC_VARY_VEHICLE_LEAVE = 0x02, //뿪Ȧ + ENUM_TRAFFIC_VARY_QUEUE = 0x04, //б仯 + ENUM_TRAFFIC_VARY_STATISTIC = 0x08, //ͳݱ仯ÿӱ仯һΰƽٶȣռ/ʱռʣͨ״̬ +}TRAFFIC_DATA_VARY_TYPE_EX_ENUM; + +typedef struct tagNET_DVR_LANE_PARAM_V41 +{ + BYTE byRuleName[NAME_LEN]; // + BYTE byRuleID; // ţΪýṹ±꣬0-7 + BYTE byLaneType; // л + BYTE byTrafficState; // Ľͨ״̬0-Ч1-ͨ2-ӵ3- + BYTE byLaneNo; // + DWORD dwVaryType; // ͨ仯Ͳ TRAFFIC_DATA_VARY_TYPE_EX_ENUMλ + DWORD dwTpsType; // ݱ仯ͱ־ʾǰϴͳƲУЩЧITS_TPS_TYPE,λ + DWORD dwLaneVolume; // ͳжٳͨ + DWORD dwLaneVelocity; // ٶȣ + DWORD dwTimeHeadway ; // ͷʱ࣬ + DWORD dwSpaceHeadway; // ͷ࣬ + float fSpaceOccupyRation; // ռʣٷֱȼ㣨ռ) + float fTimeOccupyRation; // ʱռʣٷֱȼ + DWORD dwLightVehicle; // Сͳ + DWORD dwMidVehicle; // ͳ + DWORD dwHeavyVehicle; // ͳ + NET_DVR_LANE_QUEUE struLaneQueue; // г + NET_VCA_POINT struRuleLocation; // λȦ + DWORD dwOversizeVehicle; // ͳ + BYTE byRes2[60]; // +}NET_DVR_LANE_PARAM_V41, *LPNET_DVR_LANE_PARAM_V41; + + +typedef struct tagNET_DVR_TPS_INFO_V41 +{ + DWORD dwLanNum; // ͨijĿ + NET_DVR_LANE_PARAM_V41 struLaneParam[MAX_TPS_RULE]; + DWORD dwSceneID;//ID + BYTE byRes[28]; // +}NET_DVR_TPS_INFO_V41, *LPNET_DVR_TPS_INFO_V41; + +// +typedef struct tagNET_DVR_FACEDETECT_RULECFG +{ + DWORD dwSize; // ṹС + BYTE byEnable; // Ƿ + BYTE byEventType; //¼ͣ 0-쳣; 1-;2-쳣&;4-&쳣;5-&; 6-&쳣&; 7- + BYTE byUpLastAlarm; //2011-04-06 Ƿϴһεı + BYTE byUpFacePic; //Ƿϴͼ0-1- + BYTE byRuleName[NAME_LEN]; + NET_VCA_POLYGON struVcaPolygon; // + BYTE byPicProType; //ʱͼƬʽ 0- 0-ϴ + BYTE bySensitivity; // + WORD wDuration; // ʱֵ + NET_DVR_JPEGPARA struPictureParam; //ͼƬṹ + NET_VCA_SIZE_FILTER struSizeFilter; //ߴ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_2];//ʱ + NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //ʽ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ,Ϊ1ʾͨ + BYTE byPicRecordEnable; /*2012-3-1ǷͼƬ洢, 0-, 1-*/ + BYTE byRes1[3]; //ֽ + /* + ¼ͣĿǰ¼Ͱλʾѡ1ֻ߼ֽϣ + 0x00: Ч + 0x01: 쳣 + 0x02: + 0x04: + 0x08: ī + 0x10: 绰 + */ + DWORD dwEventTypeEx; //dwEventTypeExֶΪ0ʱbyEventTypeֶЧdwEventTypeExbyEventTypeֶζֵʱdwEventTypeExֶΪ׼ϲdwEventTypeExֶκ󣬻ὫֵͬbyEventTypeС + BYTE byRes2[32]; //ֽ +}NET_DVR_FACEDETECT_RULECFG, *LPNET_DVR_FACEDETECT_RULECFG; + +typedef struct tagNET_DVR_FACE_PIPCFG +{ + BYTE byEnable; //Ƿл + BYTE byBackChannel; //ͨţͨ + BYTE byPosition; //λã0-,1-,2-,3- + BYTE byPIPDiv; //ϵ(:廭)0-1:4,1-1:9,2-1:16 + BYTE byRes[4]; +}NET_DVR_FACE_PIPCFG, *LPNET_DVR_FACE_PIPCFG; + +typedef struct tagNET_DVR_FACEDETECT_RULECFG_V41 +{ + DWORD dwSize; // ṹС + BYTE byEnable; // Ƿ + BYTE byEventType; //¼ͣ 0-쳣; 1-;2-쳣&;4-&쳣;5-&; 6-&쳣&; 7- + BYTE byUpLastAlarm; //2011-04-06 Ƿϴһεı + BYTE byUpFacePic; //Ƿϴͼ0-1- + BYTE byRuleName[NAME_LEN]; + NET_VCA_POLYGON struVcaPolygon; // + BYTE byPicProType; //ʱͼƬʽ 0- 0-ϴ + BYTE bySensitivity; // + WORD wDuration; // ʱֵ + NET_DVR_JPEGPARA struPictureParam; //ͼƬṹ + NET_VCA_SIZE_FILTER struSizeFilter; //ߴ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + NET_DVR_HANDLEEXCEPTION_V30 struHandleType; //ʽ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ,Ϊ1ʾͨ + BYTE byPicRecordEnable; /*2012-10-22ǷͼƬ洢, 0-, 1-*/ + BYTE byRes1; + WORD wAlarmDelay; //2012-10-22ܱʱ0-5s,1-10,2-30s,3-60s,4-120s,5-300s,6-600s + NET_DVR_FACE_PIPCFG struFacePIP; //2012-11-7л + WORD wRelSnapChan[MAX_REL_SNAPCHAN_NUM]; //ץͼͨͨʱͬʱϴͨץͼƬ0ʾֵΪͨ + BYTE byRes2[2]; //ֽ + /* + ¼ͣĿǰ¼Ͱλʾѡ1ֻ߼ֽϣ + 0x00: Ч + 0x01: 쳣 + 0x02: + 0x04: + 0x08: ī + 0x10: 绰 + */ + DWORD dwEventTypeEx; //dwEventTypeExֶΪ0ʱbyEventTypeֶЧdwEventTypeExbyEventTypeֶζֵʱdwEventTypeExֶΪ׼ϲdwEventTypeExֶκ󣬻ὫֵͬbyEventTypeС + BYTE byRes[16]; //ֽ +}NET_DVR_FACEDETECT_RULECFG_V41, *LPNET_DVR_FACEDETECT_RULECFG_V41; + +typedef struct tagNET_DVR_FACEDETECT_ALARM +{ + DWORD dwSize; //ṹС + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + BYTE byRuleName[NAME_LEN]; // + NET_VCA_TARGET_INFO struTargetInfo;//ĿϢ + NET_VCA_DEV_INFO struDevInfo;//ǰ豸Ϣ + DWORD dwPicDataLen; //ͼƬij Ϊ0ʾûͼƬ0ʾýṹͼƬ*/ + BYTE byAlarmPicType; // 0-쳣ͼƬ 1- ͼƬ,2-, 3-ī, 4-绰 + BYTE byPanelChan; /*2012-3-1ͨͨ*/ + BYTE byRelAlarmPicNum; //ͨͼƬ + BYTE byRes1; + DWORD dwFacePicDataLen;//ͼƬij Ϊ0ʾûͼƬ0ʾýṹͼƬ*/ + DWORD dwAlarmID; //IDԱʶͨϱ0ʾЧ + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byRes2[42]; // ֽ + BYTE *pFaceImage; //ָͼָ + BYTE *pImage; //ָͼƬָ +}NET_DVR_FACEDETECT_ALARM, *LPNET_DVR_FACEDETECT_ALARM; + +typedef struct tagNET_DVR_EVENT_PARAM_UNION +{ + DWORD uLen[3]; // СΪ12ֽ + DWORD dwHumanIn; //˽ӽ 0 - 1- + float fCrowdDensity; // Աۼֵ +}NET_DVR_EVENT_PARAM_UNION, *LPNET_DVR_EVENT_PARAM_UNION; + +// Ŀǰֻ¼Աۼ¼ʵʱϴ +typedef struct tagNET_DVR_EVENT_INFO +{ + BYTE byRuleID; // Rule ID + BYTE byRes[3]; // ֽ + BYTE byRuleName[NAME_LEN]; // + DWORD dwEventType; // VCA_EVENT_TYPE + NET_DVR_EVENT_PARAM_UNION uEventParam; // +}NET_DVR_EVENT_INFO, *LPNET_DVR_EVENT_INFO; + +typedef struct tagNET_DVR_EVENT_INFO_LIST +{ + BYTE byNum; // ¼ʵʱϢ + BYTE byRes1[3]; // ֽ + NET_DVR_EVENT_INFO struEventInfo[MAX_RULE_NUM]; // ¼ʵʱϢ +}NET_DVR_EVENT_INFO_LIST,*LPNET_DVR_EVENT_INFO_LIST; + +typedef struct tagNET_DVR_RULE_INFO_ALARM +{ + DWORD dwSize; // ṹС + DWORD dwRelativeTime; // ʱ + DWORD dwAbsTime; // ʱ + NET_VCA_DEV_INFO struDevInfo; // ǰ豸Ϣ + NET_DVR_EVENT_INFO_LIST struEventInfoList; //¼Ϣб + BYTE byRes2[40]; // ֽ +}NET_DVR_RULE_INFO_ALARM, *LPNET_DVR_RULE_INFO_ALARM; + +//ʱ +typedef struct tagNET_DVR_ONE_SCENE_TIME +{ + BYTE byActive; //0 -Ч,1CЧ + BYTE byRes1[3]; // + DWORD dwSceneID; //ID + NET_DVR_SCHEDTIME struEffectiveTime; //Чʱ + BYTE byRes2[16]; // +}NET_DVR_ONE_SCENE_TIME, *LPNET_DVR_ONE_SCENE_TIME ; + +//Чʱ +typedef struct tagNET_DVR_SCENE_TIME_CFG +{ + DWORD dwSize; //ṹС + NET_DVR_ONE_SCENE_TIME struSceneTime[MAX_SCENE_TIMESEG_NUM]; //ʱ + BYTE byRes[64]; // +}NET_DVR_SCENE_TIME_CFG, *LPNET_DVR_SCENE_TIME_CFG; + + +//Ϣ +typedef struct tagNET_DVR_ONE_SCENE_CFG_ +{ + BYTE byEnable; //Ƿøó,0- 1- + BYTE byDirection; //ⷽ 1-У2-У3-˫4-ɶ5-򱱣6-򶫣7-ɱϣ8- + BYTE byRes1[2]; // + DWORD dwSceneID; //ID(ֻ), 0 - ʾóЧ + BYTE bySceneName[NAME_LEN]; // + NET_DVR_PTZPOS struPtzPos; //ptz + DWORD dwTrackTime; //ʱ[5,300] 룬TFS(ͨȡ֤)ģʽЧ + BYTE byRes2[24]; // +}NET_DVR_ONE_SCENE_CFG, *LPNET_DVR_ONE_SCENE_CFG; + +//ýṹ +typedef struct tagNET_DVR_SCENE_CFG +{ + DWORD dwSize; //ṹС + NET_DVR_ONE_SCENE_CFG struSceneCfg[MAX_ITS_SCENE_NUM]; //Ϣ + BYTE byRes[40]; // +}NET_DVR_SCENE_CFG,*LPNET_DVR_SCENE_CFG; + +//ೡ +typedef struct tagNET_DVR_SCENE_COND +{ + DWORD dwSize; //ṹС + LONG lChannel; //ͨ + DWORD dwSceneID; //ID, 0-ʾóЧ + BYTE byRes[48]; // +}NET_DVR_SCENE_COND, *LPNET_DVR_SCENE_COND; + +//ȡ֤ʽ +typedef struct tagNET_DVR_FORENSICS_MODE +{ + DWORD dwSize; //ṹС + BYTE byMode; // 0-ֶȡ֤ ,1-Զȡ֤2-Զٺ;̬ȡ֤ + BYTE byRes[23]; // +}NET_DVR_FORENSICS_MODE,*LPNET_DVR_FORENSICS_MODE; + +//Ϣ +typedef struct tagNET_DVR_SCENE_INFO_ +{ + DWORD dwSceneID; //ID, 0 - ʾóЧ + BYTE bySceneName[NAME_LEN]; // + BYTE byDirection; //ⷽ 1-У2-У3-˫4-ɶ5-򱱣6-򶫣7-ɱϣ8- + BYTE byRes1[3]; // + NET_DVR_PTZPOS struPtzPos; //Ptz + BYTE byRes2[64] ; // +}NET_DVR_SCENE_INFO,*LPNET_DVR_SCENE_INFO; + +//ͨ¼(չ) +typedef struct tagNET_DVR_AID_ALARM_V41 +{ + DWORD dwSize; //ṹ + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + NET_DVR_AID_INFO struAIDInfo; //ͨ¼Ϣ + NET_DVR_SCENE_INFO struSceneInfo; //Ϣ + DWORD dwPicDataLen; //ͼƬ + BYTE *pImage; //ָͼƬָ + // 0-ֱϴ; 1-ƴ洢URL(3.7Ver)ԭȵͼƬݱURLݣͼƬȱURL + BYTE byDataType; + BYTE byLaneNo; // + WORD wMilliSecond; //ʱ + //ţ·ڱšڲţ + BYTE byMonitoringSiteID[MONITORSITE_ID_LEN/*48*/]; + BYTE byDeviceID[DEVICE_ID_LEN/*48*/];//豸 + DWORD dwXmlLen;//XMLϢ + char* pXmlBuf;// XMLϢָ,XMLӦEventNotificationAlert XML Block + BYTE byTargetType;// Ŀͣ0~δ֪1~ˡ2~ֳ3~ֳ(˼з) + BYTE byRuleID;//ID,1-4,congestion¼˹ʱ + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byBrokenNetHttp; // ־λ0-شݣ1-ش + BYTE byRes[3]; // ֽ + DWORD dwPlateSmallPicDataLen; //СͼͼƬ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pPlateSmallImage; // //ָСͼָ +#else + char* pPlateSmallImage; //ָСͼָ + BYTE byRes1[4]; +#endif +}NET_DVR_AID_ALARM_V41, *LPNET_DVR_AID_ALARM_V41; + +//ͨͳϢ(չ) +typedef struct tagNET_DVR_TPS_ALARM_V41 +{ + DWORD dwSize; // ṹС + DWORD dwRelativeTime; // ʱ + DWORD dwAbsTime; // ʱ + NET_VCA_DEV_INFO struDevInfo; // ǰ豸Ϣ + NET_DVR_TPS_INFO_V41 struTPSInfo; // ͨͳϢ + //ţ·ڱšڲţ + BYTE byMonitoringSiteID[MONITORSITE_ID_LEN/*48*/]; + BYTE byDeviceID[DEVICE_ID_LEN/*48*/];//豸 + DWORD dwStartTime; // ʼͳʱ + DWORD dwStopTime; // ͳʱ + BYTE byRes[24]; // +} NET_DVR_TPS_ALARM_V41,*LPNET_DVR_TPS_ALARM_V41; + +/*******************************ܽͨ¼ end*****************************************/ + +#define XXX_MAJOR_VERSION 2 + +/* Ӱ汾ţŻֲṹģڼ汾ʱ31 */ + +#define XXX_SUB_VERSION 3 + +/* 汾ţbug31 */ + +#define XXX_REVISION_VERSION 4 + +typedef struct tagNET_DVR_VCA_VERSION +{ + WORD wMajorVersion; // 汾 + WORD wMinorVersion; // ΰ汾 + WORD wRevisionNumber; // + WORD wBuildNumber; // + WORD wVersionYear; // 汾- + BYTE byVersionMonth; // 汾- + BYTE byVersionDay; // 汾- + BYTE byType;/*㷨ƣ0-1-,2-Ϊ,3-,4-ץ,5ʶ 6-Ա,7-ѧվ, + 8-ͳ,9-ֿ,10-ȫñ,11-ݼ㷨,12-ͳ,13-(˽Ŀṹ㷨)HMS, + 14-ʦΪ, 15-Աܶȣ16-쳣17-ڼ⣬18-Ա19-ģץģ20-HMSģ,21-̬Ʒ, + 22-ǹ㷨,23-ŶӼ*/ + BYTE byRes[7]; // ֽ +}NET_DVR_VCA_VERSION, *LPNET_DVR_VCA_VERSION; + + +/****************************** end***********************************/ + +/******************************ʶ begin******************************************/ +typedef struct tagNET_DVR_PLATE_PARAM +{ + BYTE byPlateRecoMode; //ʶģʽ,ĬΪ1(Ƶģʽ) + BYTE byBelive; //Ŷֵ, ֻƵʶʽ, ݱӳ̶, 󴥷ʸ߾, ©ʸ߾, 80-90Χ + BYTE byRes[22]; //ֽ +}NET_DVR_PALTE_PARAM, *LPNET_DVR_PALTE_PARAM; + +typedef struct tagNET_DVR_PLATECFG +{ + DWORD dwSize; + DWORD dwEnable; /* ǷƵʶ 0 1 */ + BYTE byPicProType; //ʱͼƬʽ 0- 0-ϴ + BYTE byRes1[3]; // ֽ + NET_DVR_JPEGPARA struPictureParam; //ͼƬṹ + NET_DVR_PALTE_PARAM struPlateParam; // ʶ + NET_DVR_HANDLEEXCEPTION struHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];//ʱ + BYTE byRelRecordChan[MAX_CHANNUM]; //¼ͨ,Ϊ1ʾͨ + BYTE byRes[20]; // ֽ +}NET_DVR_PLATECFG, *LPNET_DVR_PLATECFG; + +// ʶӽṹ +typedef struct tagNET_DVR_PLATE_INFO +{ + BYTE byPlateType; // + BYTE byColor; //ɫ + BYTE byBright; // + BYTE byLicenseLen; //ַ + BYTE byEntireBelieve; //ƵŶȣ-100 + BYTE byRegion; // ֵ 0-1-ŷ(EU)2-(ER)3-ŷ&˹(EU&CIS) ,4-ж(ME),5-̫(APAC),6-(޺,AfandAM),0xff- + BYTE byCountry; // ֵöCOUNTRY_INDEX֧"COUNTRY_ALL = 0xff, //ALL ȫ" + BYTE byArea; //ʡݣڲö٣ EMI_AREA + BYTE byPlateSize; //Ƴߴ磬0~δ֪1~long, 2~short(жʹ) + /*ϢʶǷNET_DVR_VEHICLE_ADDINFOṹ壩,0-޸Ϣ, 1-иϢ*/ + BYTE byAddInfoFlag; + //ֶbyCountryϣչ֮ʹøֶδbyCountryʹwCRIndexֶ + //Ϊ˼ûֵֶ256򣩣byCountryֵΪ0xfdֶЧ + WORD wCRIndex ;///ֵο_CR_ INDEX_ + BYTE byRes[4]; // +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + BYTE* pAddInfoBuffer; +#else + /*Ϣָ,ָNET_DVR_VEHICLE_ADDINFOṹ*/ + BYTE* pAddInfoBuffer; + BYTE byRes2[4]; +#endif + char sPlateCategory[MAX_CATEGORY_LEN/*8*/];//ƸϢ, жгƺԱߵСϢ(Ŀǰֻж֧) + DWORD dwXmlLen; //XMLϢ + char* pXmlBuf; // XMLϢָ,Ϊ COMM_ITS_PLATE_RESULCOMM_PLATE_RESULT_V50ʱЧXMLӦEventNotificationAlert XML Block + NET_VCA_RECT struPlateRect; //λ + char sLicense[MAX_LICENSE_LEN]; //ƺ,עжСҲ복ƺ룬Сֺͳƺмÿոָ + BYTE byBelieve[MAX_LICENSE_LEN]; //ʶַŶȣ⵽"A12345", ŶΪ,20,30,40,50,60,70ʾ""ȷĿֻ%"A"ֵȷĿ% +}NET_DVR_PLATE_INFO, *LPNET_DVR_PLATE_INFO; + +typedef struct tagNET_DVR_PLATERECO_RESULE +{ + DWORD dwSize; + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + NET_VCA_DEV_INFO struDevInfo; // ǰ豸Ϣ + NET_DVR_PLATE_INFO struPlateInfo; + DWORD dwPicDataLen; //ͼƬij Ϊ0ʾûͼƬ0ʾýṹͼƬ*/ + DWORD dwRes[4]; //Ϊ0 + BYTE *pImage; //ָͼƬָ +}NET_DVR_PLATERECO_RESULE, *LPNET_DVR_PLATERECO_RESULE; + +/******************************ʶ end******************************************/ + +/*******************************Ƶۺƽ̨***********************************/ +typedef struct +{ + NET_DVR_TIME strLogTime; + DWORD dwMajorType; //Main type 1-alarm; 2-abnormal; 3-operation; 0xff-all + DWORD dwMinorType; //Hypo-Type 0-all; + BYTE sPanelUser[MAX_NAMELEN]; //user ID for local panel operation + BYTE sNetUser[MAX_NAMELEN];//user ID for network operation + NET_DVR_IPADDR struRemoteHostAddr;//remote host IP + DWORD dwParaType;//parameter type + DWORD dwChannel;//channel number + DWORD dwDiskNumber;//HD number + DWORD dwAlarmInPort;//alarm input port + DWORD dwAlarmOutPort;//alarm output port + DWORD dwInfoLen; + BYTE byDevSequence;//λ + BYTE byMacAddr[MACADDR_LEN];//MACַ,6 + BYTE sSerialNumber[SERIALNO_LEN];//кţ48 + char sInfo[LOG_INFO_LEN - SERIALNO_LEN - MACADDR_LEN - 1 ]; +}NET_DVR_LOG_MATRIX, *LPNET_DVR_LOG_MATRIX; + +//2009-11-21 Ƶۺƽ̨ +typedef struct tagVEDIOPLATLOG +{ + BYTE bySearchCondition;//0-λ1-к2-MACַ + //λţ0-79ӦϵͳIJλţ + //0xffʾе־78K6467 + //0xfeʾ78Kϵ־0xfd־0xfc־ + BYTE byDevSequence; + BYTE sSerialNumber[SERIALNO_LEN];//кţ48 + BYTE byMacAddr[MACADDR_LEN];//MACַ,6 +} NET_DVR_VEDIOPLATLOG, *LPNET_DVR_VEDIOPLATLOG; + +typedef struct tagNET_DVR_CODESYSTEMABILITY +{ + DWORD dwSize; + DWORD dwAbilityVersion;//汾ţ16λʾ汾16λʾΰ汾 + DWORD dwSupportMaxVideoFrameRate;//λ(K) + /*λ: + 0:ʱ¼ + 1:ʱ|¼¼ + 2:ƶ¼ + 3:翪¼ + 4:ƶ|翪¼ + 5:ƶ&翪¼ + 6:ܽ¼ + 7:ⴥ¼ + 8:ʶ𴥷¼ + 9:ֶ¼*/ + DWORD dwSupportRecordType; + BYTE bySupportLinkMode;//λ:0λ:ʾ1λ:ʾ + BYTE bySupportStringRow;//ַ֧ + BYTE bySupportHideNum;//֧Ƶڵ + BYTE byRes1; + /*0-DCIF1-CIF2-QCIF3-4CIF4-2CIF6-QVGA(320*240), 16-VGA17-UXGA18-SVGA19-HD720p20-XVGA21-HD900p22-SXGAp27-HD1080i28-2560*192029-1600*30430-2048*153631-2448*204832-2448*120033-2448*800 34-XGA1024x76835-SXGA1280x1024*/ + BYTE byMainStreamSupportResolution[8];//ֵ֧ķֱʣλ + BYTE bySubStreamSupportResolution[8];//ֵ֧ķֱʣλ + BYTE byEventStreamSupportResolution[8];//¼ֵ֧ķֱʣλ + BYTE byNotSupportPreview;//Ƿ֧Ԥ,1-֧֣0-֧ + BYTE byNotSupportStorage;//Ƿִ֧洢,1-֧֣0-֧ + BYTE byRes2[98];// +}NET_DVR_CODESYSTEMABILITY, *LPNET_DVR_CODESYSTEMABILITY; + +/********************************end*******************************************/ + +/******************************ץĻ*******************************************/ +//IO +typedef struct tagNET_DVR_IO_INCFG +{ + DWORD dwSize; + BYTE byIoInStatus;//IO״̬0-½أ1-أ2-غ½أ3-ߵƽ4-͵ƽ + BYTE byRes[3];//ֽ +}NET_DVR_IO_INCFG, *LPNET_DVR_IO_INCFG; + +//IO +typedef struct tagNET_DVR_IO_OUTCFG +{ + DWORD dwSize; + BYTE byDefaultStatus;//IOĬ״̬0-͵ƽ1-ߵƽ + BYTE byIoOutStatus;//IOЧʱ״̬0-͵ƽ1-ߵƽ2- + WORD wAheadTime;//IOǰʱ䣬λus + DWORD dwTimePluse;//ʱ䣬λus + DWORD dwTimeDelay;//IOЧʱ䣬λus + BYTE byFreqMulti; //ƵֵΧ[1,15] + BYTE byDutyRate; //ռձȣ[0,40%] + BYTE byRes[2]; +}NET_DVR_IO_OUTCFG, *LPNET_DVR_IO_OUTCFG; + +// +typedef struct tagNET_DVR_FLASH_OUTCFG +{ + DWORD dwSize; + BYTE byMode;//˸ģʽ0-1-2-3- + BYTE byRelatedIoIn;//ƹIOţʱ˲Ч + BYTE byRecognizedLane; /*IOţλʾbit0ʾIO1Ƿ0-1-*/ + BYTE byDetectBrightness;/*Զʹ0-⣻1-*/ + BYTE byBrightnessThreld;/*ʹֵΧ[0,100],ֵ*/ + BYTE byStartHour; //ʼʱ-Сʱ,ȡֵΧ0-23 + BYTE byStartMinute; //ʼʱ-,ȡֵΧ0-59 + BYTE byEndHour; //ʱ-Сʱ,ȡֵΧ0-23 + BYTE byEndMinute; //ʱ-,ȡֵΧ0-59 + BYTE byFlashLightEnable; //ʱʹ:0-;1- + BYTE byRes[2]; +}NET_DVR_FLASH_OUTCFG, *LPNET_DVR_FLASH_OUTCFG; + +//̵ƹܣ2IOһ飩 +typedef struct tagNET_DVR_LIGHTSNAPCFG +{ + DWORD dwSize; + BYTE byLightIoIn;//̵ƵIO + BYTE byTrigIoIn;//IO + BYTE byRelatedDriveWay;//IOij + BYTE byTrafficLight; //0-ߵƽƣ͵ƽ̵ƣ1-ߵƽ̵ƣ͵ƽ + BYTE bySnapTimes1; //ץĴ10-ץģ0-Ĵ5 + BYTE bySnapTimes2; //̵ץĴ20-ץģ0-Ĵ5 + BYTE byRes1[2]; + WORD wIntervalTime1[MAX_INTERVAL_NUM];//ļʱ䣬ms + WORD wIntervalTime2[MAX_INTERVAL_NUM];//̵ļʱ䣬ms + BYTE byRecord;//¼־0-¼1-¼ + BYTE bySessionTimeout;//¼ʱʱ䣨룩 + BYTE byPreRecordTime;//¼ƬԤ¼ʱ() + BYTE byVideoDelay;//¼Ƭʱʱ䣨룩 + BYTE byRes2[32];//ֽ +}NET_DVR_LIGHTSNAPCFG, *LPNET_DVR_LIGHTSNAPCFG; + +//ٹ(2IOһ飩 +typedef struct tagNET_DVR_MEASURESPEEDCFG +{ + DWORD dwSize; + BYTE byTrigIo1; //ٵ1Ȧ + BYTE byTrigIo2; //ٵ2Ȧ + BYTE byRelatedDriveWay;//IOij + BYTE byTestSpeedTimeOut;//ģʽʱʱ䣬λs + DWORD dwDistance;//Ȧ,cm + BYTE byCapSpeed;//ģʽٶȣλkm/h + BYTE bySpeedLimit;//ֵλkm/h + BYTE bySnapTimes1; //Ȧ1ץĴ0-ץģ0-Ĵ5 + BYTE bySnapTimes2; //Ȧ2ץĴ0-ץģ0-Ĵ5 + WORD wIntervalTime1[MAX_INTERVAL_NUM];//Ȧ1ļʱ䣬ms + WORD wIntervalTime2[MAX_INTERVAL_NUM];//Ȧ2ļʱ䣬ms + BYTE byRes[32];//ֽ +}NET_DVR_MEASURESPEEDCFG, *LPNET_DVR_MEASURESPEEDCFG; + + +// +typedef struct tagNET_DVR_CLOUDSTORAGE_COND +{ + DWORD dwSize; + DWORD dwChannel; + BYTE byRes1[64]; +}NET_DVR_CLOUDSTORAGE_COND,*LPNET_DVR_CLOUDSTORAGE_COND; + +//ýṹ +typedef struct tagNET_DVR_POOLPARAM +{ + DWORD dwPoolID;// ƴ洢ڵ + BYTE byRes[4]; +}NET_DVR_POOLPARAM,*LPNET_DVR_POOLPARAM; + +typedef struct tagNET_DVR_CLOUDSTORAGE_CFG +{ + DWORD dwSize; + BYTE byEnable;//0-1- + BYTE byRes[3]; + NET_DVR_IPADDR struIP; + WORD wPort;//ݶ˿ + BYTE byRes1[2]; + char szUser[CLOUD_NAME_LEN/*48*/]; //û + char szPassword[CLOUD_PASSWD_LEN/*48*/]; // + NET_DVR_POOLPARAM struPoolInfo[16];//0ʾ¼أ1ʾΥ¼أ2ʾݳأIPC/D + BYTE byRes2[128]; +}NET_DVR_CLOUDSTORAGE_CFG,*LPNET_DVR_CLOUDSTORAGE_CFG; + +typedef struct tagNET_DVR_PARKLAMP_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byParkingIndex; //Գλţ14 + BYTE byRes[15]; // +}NET_DVR_PARKLAMP_COND, *LPNET_DVR_PARKLAMP_COND; + +typedef struct tagNET_DVR_PARKLAMP_INFOCFG +{ + DWORD dwSize; + char sLicense[MAX_LICENSE_LEN/*16*/];//ƺ + char sParkingNo[MAX_LICENSE_LEN/*16*/];//λ(ʵʵijλ) + BYTE byLampFlicker;//0~˸ 1 ˸ (λָʾ˸) + BYTE byLampColor;//0- 1- 2- 3- 4- 5-Ʒ 6- 7-ɫ (λָʾɫ) + BYTE byStatus; //λ״̬ 0-޳1-г + BYTE byColorDepth; //ɫdz0-ɫ1-dzɫ,0xff-δ֪ + BYTE byColor;//ɫ0-ɫ1-ɫ2-ɫ3-ɫ4-ɫ5-ɫ6-7-ɫ8-ɫ9-ɫ10-ɫ11-ɫ12-ɫ0xff-δгɫʶ + //Ʒʶ οö VLR_VEHICLE_CLASS + BYTE byVehicleLogoRecog; + BYTE byRes[250];// +}NET_DVR_PARKLAMP_INFOCFG, *LPNET_DVR_PARKLAMP_INFOCFG; + +//Ƶ +typedef struct tagNET_DVR_VIDEOEFFECT +{ + BYTE byBrightnessLevel; /*0-100*/ + BYTE byContrastLevel; /*0-100*/ + BYTE bySharpnessLevel; /*0-100*/ + BYTE bySaturationLevel; /*0-100*/ + BYTE byHueLevel; /*0-100,*/ + BYTE byEnableFunc; //ʹܣλʾbit0-SMART IR()bit1-ն,bit2-ǿʹܣ0-1- + BYTE byLightInhibitLevel; //ǿƵȼ[1-3]ʾȼ + BYTE byGrayLevel; //Ҷֵ0-[0-255]1-[16-235] +}NET_DVR_VIDEOEFFECT, *LPNET_DVR_VIDEOEFFECT; + +// +typedef struct tagNET_DVR_GAIN +{ + BYTE byGainLevel; /*棺0-100*/ + BYTE byGainUserSet; /*ûԶ棻0-100ץĻCCDģʽµץ*/ + BYTE byRes[2]; + DWORD dwMaxGainValue;/*ֵλdB*/ +}NET_DVR_GAIN, *LPNET_DVR_GAIN; + +//ƽ +typedef struct tagNET_DVR_WHITEBALANCE +{ +BYTE byWhiteBalanceMode; /*0-ֶƽ⣨MWB,1-Զƽ1AWB1,2-Զƽ2 (AWB2),3-ԶƸΪƽ(Locked WB) + 4-(Indoor)5-(Outdoor)6-չ(Fluorescent Lamp)7-Ƶ(Sodium Lamp) + 8-Զ(Auto-Track)9-һΰƽ(One Push)10-Զ(Auto-Outdoor) + 11-ƵԶ (Auto-Sodiumlight)12-ˮ(Mercury Lamp)13-Զƽ(Auto) +14-׳ (IncandescentLamp)15-ů(Warm Light Lamp)16-Ȼ(Natural Light) */ +BYTE byWhiteBalanceModeRGain; /*ֶƽʱЧֶƽ R*/ +BYTE byWhiteBalanceModeBGain; /*ֶƽʱЧֶƽ B*/ +BYTE byRes[5]; +}NET_DVR_WHITEBALANCE, *LPNET_DVR_WHITEBALANCE; + +//ع +typedef struct tagNET_DVR_EXPOSURE +{ + BYTE byExposureMode; /*0 ֶع 1Զع*/ + BYTE byAutoApertureLevel; /* ԶȦ, 0-10 */ + BYTE byRes[2]; + DWORD dwVideoExposureSet; /* ԶƵعʱ䣨λus*//*ע:ԶعʱֵΪعֵ 20-1s(1000000us)*/ + DWORD dwExposureUserSet; /* Զعʱ,ץĻӦʱCCDģʽʱץĿٶ*/ + DWORD dwRes; +} NET_DVR_EXPOSURE, *LPNET_DVR_EXPOSURE; + +//̬ +typedef struct tagNET_DVR_WDR +{ + BYTE byWDREnabled; /*̬0 dsibale 1 enable 2 auto*/ + BYTE byWDRLevel1; /*0-F*/ + BYTE byWDRLevel2; /*0-F*/ + BYTE byWDRContrastLevel; /*0-100*/ + BYTE byRes[16]; +} NET_DVR_WDR, *LPNET_DVR_WDR; + +typedef struct tagNET_DVR_WDR_CFG +{ + DWORD dwSize; //ṹС + NET_DVR_WDR struWDR; //Ϣ +}NET_DVR_WDR_CFG, *LPNET_DVR_WDR_CFG; + + +//ҹת +typedef struct tagNET_DVR_DAYNIGHT +{ + BYTE byDayNightFilterType; /*ҹл0-죬1-ҹ2-Զ3-ʱ4-봥, 5-Զģʽ2޹,6-ڹ⣬7-ڹԶ8-ڹⶨʱ*/ + BYTE bySwitchScheduleEnabled; /*0 dsibale 1 enable,()*/ + //ʱģʽ + BYTE byBeginTime; /*ʼʱ䣨Сʱ0-23*/ + BYTE byEndTime; /*ʱ䣨Сʱ0-23*/ + //ģʽ2 + BYTE byDayToNightFilterLevel; //0-7 + BYTE byNightToDayFilterLevel; //0-7 + BYTE byDayNightFilterTime;//(60) + //ʱģʽ + BYTE byBeginTimeMin; //ʼʱ䣨֣0-59 + BYTE byBeginTimeSec; //ʼʱ䣨룩0-59 + BYTE byEndTimeMin; //ʱ䣨֣0-59 + BYTE byEndTimeSec; //ʱ䣨룩0-59 + //봥ģʽ + BYTE byAlarmTrigState; //봥״̬0-죬1-ҹ +} NET_DVR_DAYNIGHT, *LPNET_DVR_DAYNIGHT; + +//GammaУ +typedef struct tagNET_DVR_GAMMACORRECT +{ + BYTE byGammaCorrectionEnabled; /*0 dsibale 1 enable*/ + BYTE byGammaCorrectionLevel; /*0-100*/ + BYTE byRes[6]; +} NET_DVR_GAMMACORRECT, *LPNET_DVR_GAMMACORRECT; + +//ⲹ +typedef struct tagNET_DVR_BACKLIGHT +{ + BYTE byBacklightMode; /*ⲹ:0 off 1 UP2 DOWN3 LEFT4 RIGHT5MIDDLE6Զ壬10-11-Զ12-򱳹ⲹ*/ + BYTE byBacklightLevel; /*0x0-0xF*/ + BYTE byRes1[2]; + DWORD dwPositionX1; //X1 + DWORD dwPositionY1; //Y1 + DWORD dwPositionX2; //X2 + DWORD dwPositionY2; //Y2 + BYTE byRes2[4]; +} NET_DVR_BACKLIGHT, *LPNET_DVR_BACKLIGHT; + +//ֽ빦 +typedef struct tagNET_DVR_NOISEREMOVE +{ + BYTE byDigitalNoiseRemoveEnable; /*0-ã1-ͨģʽֽ룬2-רģʽֽ*/ + BYTE byDigitalNoiseRemoveLevel; /*ͨģʽֽ뼶0x0-0xF*/ + BYTE bySpectralLevel; /*רģʽ¿ǿȣ0-100*/ + BYTE byTemporalLevel; /*רģʽʱǿȣ0-100*/ + BYTE byDigitalNoiseRemove2DEnable; /* ץ֡2D룬0-ã1- */ + BYTE byDigitalNoiseRemove2DLevel; /* ץ֡2D뼶0-100 */ + BYTE byRes[2]; +} NET_DVR_NOISEREMOVE, *LPNET_DVR_NOISEREMOVE; + +//CMOSģʽǰ˾ͷ +typedef struct tagNET_DVR_CMOSMODCFG +{ + BYTE byCaptureMod; //ץģʽ0-ץģʽ11-ץģʽ2 + BYTE byBrightnessGate;//ֵ + BYTE byCaptureGain1; //ץ1,0-100 + BYTE byCaptureGain2; //ץ2,0-100 + DWORD dwCaptureShutterSpeed1;//ץĿٶ1 + DWORD dwCaptureShutterSpeed2;//ץĿٶ2 + BYTE byRes[4]; +}NET_DVR_CMOSMODECFG, *LPNET_DVR_CMOSMODECFG; + +//ǰ˲ +typedef struct tagNET_DVR_CAMERAPARAMCFG +{ + DWORD dwSize; + NET_DVR_VIDEOEFFECT struVideoEffect;/*ȡԱȶȡͶȡȡɫ*/ + NET_DVR_GAIN struGain;/*Զ*/ + NET_DVR_WHITEBALANCE struWhiteBalance;/*ƽ*/ + NET_DVR_EXPOSURE struExposure; /*ع*/ + NET_DVR_GAMMACORRECT struGammaCorrect;/*GammaУ*/ + NET_DVR_WDR struWdr;/*̬*/ + NET_DVR_DAYNIGHT struDayNight;/*ҹת*/ + NET_DVR_BACKLIGHT struBackLight;/*ⲹ*/ + NET_DVR_NOISEREMOVE struNoiseRemove;/*ֽ*/ + BYTE byPowerLineFrequencyMode; /*0-50HZ; 1-60HZ*/ + /* + 0-ԶȦ, + 1-ֶȦ, + 2-P-Iris1, + 3-Union 3-9mm F1.6-2.7 (T5280-PQ1) [IPC5.1.7] + 4-Union 2.8-12mm F1.6-2.7 (T5289-PQ1) [IPC5.1.7] + 5-private 3.8-16mm F1.5HV3816P-8MPIR) + 6-private 11-40mm F1.7 (HV1140P-8MPIR) + 7-private 2.7-12mm F1.2TV2712P-MPIR + 8- MZ5721D-12MPIR + 9- MZ1555D-12MPIR + 10- MZ5721D-12MPIR(RS485) + 11- MZ1555D-12MPIR(RS485) + */ + BYTE byIrisMode; + BYTE byMirror ; /* 0 off1- leftright2- updown3-center */ + BYTE byDigitalZoom; /*:0 dsibale 1 enable*/ + BYTE byDeadPixelDetect; /*,0 dsibale 1 enable*/ + BYTE byBlackPwl;/*ڵƽ , 0-255*/ + BYTE byEptzGate;// EPTZر:0-ǫ̃1-ǫ̃ + BYTE byLocalOutputGate;//ر0-ر1-BNC 2-HDMIر 11-12-ü13-ü + //20-HDMI_720P50 + //21-HDMI_720P60 + //22-HDMI_1080I60 + //23-HDMI_1080I50 + //24-HDMI_1080P24 + //25-HDMI_1080P25 + //26-HDMI_1080P30 + //27-HDMI_1080P50 + //28-HDMI_1080P60 + //40-SDI_720P50, + //41-SDI_720P60, + //42-SDI_1080I50, + //43-SDI_1080I60, + //44-SDI_1080P24, + //45-SDI_1080P25, + //46-SDI_1080P30, + //47-SDI_1080P50, + //48-SDI_1080P60, + //49-SDI_720P25 + //50-SDI_720P30 + //51-SDI_1080I25 + //52-SDI_1080I30 + //60- YPBPR_720P50 + //61-YPBPR_720P60 + //62-YPBPR_1080I50 + //63-YPBPR_1080I60 + //64-YPBPR_1080P24 + //65-YPBPR_1080P25 + //66-YPBPR_1080P30 + //67-YPBPR_1080P50 + //68-YPBPR_1080P60 + //69-YPBPR_720P25 + //70-YPBPR_720P30 + //71- HDMI_1080Pûо֡ʣ֡豸captureModeһ£ + //72- HDMI_720Pûо֡ʣ֡豸captureModeһ£ + //73- HDMI_2160Pûо֡ʣ֡豸captureModeһ£ + BYTE byCoderOutputMode;//fpgaģʽ0ֱͨ3ذ + BYTE byLineCoding; //Ƿб룺0-1- + BYTE byDimmerMode; //ģʽ0-Զ1-Զ + BYTE byPaletteMode; //ɫ壺0-ȣ1-ȣ2-ɫ28-ɫ8 + BYTE byEnhancedMode; //ǿʽܱ̽ߣ0-ǿ1-12-23-34-4 + BYTE byDynamicContrastEN; //̬Աȶǿ 0-1 + BYTE byDynamicContrast; //̬Աȶ 0-100 + BYTE byJPEGQuality; //JPEGͼ 0-100 + NET_DVR_CMOSMODECFG struCmosModeCfg;//CMOSģʽǰ˲ãͷģʽȡ + BYTE byFilterSwitch; //˲أ0-ã1- + BYTE byFocusSpeed; //ͷٶȣ0-10 + BYTE byAutoCompensationInterval; //ʱԶŲ1-120λ + BYTE bySceneMode; //ģʽ0-⣬1-ڣ2-Ĭϣ3- +}NET_DVR_CAMERAPARAMCFG, *LPNET_DVR_CAMERAPARAMCFG; + +//͸ +typedef struct tagNET_DVR_DEFOGCFG +{ + BYTE byMode; //ģʽ0-ã1-Զģʽ2-ģʽ + BYTE byLevel; //ȼ0-100 + BYTE byRes[6]; +}NET_DVR_DEFOGCFG, *LPNET_DVR_DEFOGCFG; + +//ӷ +typedef struct tagNET_DVR_ELECTRONICSTABILIZATION +{ + BYTE byEnable;//ʹ 0- ã1- + BYTE byLevel; //ȼ0-100 + BYTE byRes[6]; +}NET_DVR_ELECTRONICSTABILIZATION, *LPNET_DVR_ELECTRONICSTABILIZATION; + +//ģʽ +typedef struct tagNET_DVR_CORRIDOR_MODE_CCD +{ + BYTE byEnableCorridorMode; //Ƿģʽ 0ã 1 + BYTE byRes[11]; +}NET_DVR_CORRIDOR_MODE_CCD, *LPNET_DVR_CORRIDOR_MODE_CCD; + +// SMART IR()ò +typedef struct tagNET_DVR_SMARTIR_PARAM +{ + BYTE byMode;//0ֶ1Զ + BYTE byIRDistance;//ȼ(ȼ)level:1~100 Ĭ:50ֶģʽӣ + BYTE byShortIRDistance;// ƾȼ(1~100) + BYTE byLongIRDistance;// Զƾȼ(1~100) +}NET_DVR_SMARTIR_PARAM,*LPNET_DVR_SMARTIR_PARAM; + +//byIrisMode ΪP-Iris1ʱЧúȦСȼģʽ +typedef struct tagNET_DVR_PIRIS_PARAM +{ + BYTE byMode;//0-Զ1-ֶ + BYTE byPIrisAperture;//ȦСȼ(ȼ,ȦС)level:1~100 Ĭ:50ֶģʽӣ + BYTE byRes[6]; +}NET_DVR_PIRIS_PARAM,*LPNET_DVR_PIRIS_PARAM; + + +// 2014-02-25 +typedef struct tagNET_DVR_LASER_PARAM_CFG +{ + //Length = 16 + BYTE byControlMode; //ģʽ 0-Ч1-Զ2-ֶ ĬԶ + BYTE bySensitivity; // 0-100 Ĭ50 + BYTE byTriggerMode; //ƴģʽ 0-Ч1-о2- Ĭϻо + BYTE byBrightness; //ģʽΪֶģʽЧ 0-255 Ĭ100 + BYTE byAngle; //ƽǶ 0-ЧΧ1-36 Ĭ12䷶ΧΪһԲȦڼǶǵԲİ뾶ĴС + BYTE byLimitBrightness; //ģʽΪԶģʽЧ 0~100 2014-01-26 + BYTE byEnabled ; //ֶƼʹ 0-رգ1- + BYTE byIllumination; //ǿ0~100 + BYTE byLightAngle; //Ƕ 0~100 + BYTE byRes[7]; // +} NET_DVR_LASER_PARAM_CFG, *LPNET_DVR_LASER_PARAM_CFG; + +typedef struct tagNET_DVR_FFC_PARAM +{ + //1-Schedule Mode,2-Temperature Mode, 3-Off + BYTE byMode; + //ʱ:ʾλӣѡ10,20,30,40,50,60,120,180,240 + BYTE byRes1; + WORD wCompensateTime; //ʱģʽЧ + BYTE byRes2[4]; +}NET_DVR_FFC_PARAM,*LPNET_DVR_FFC_PARAM; + +typedef struct tagNET_DVR_DDE_PARAM //sensor +{ + BYTE byMode;//1-Off,2-Normal Mode,3-Expert Mode + BYTE byNormalLevel;//ͨģʽȼΧ[1,100]ͨģʽЧ + BYTE byExpertLevel;//רģʽȼΧ[1,100]רģʽЧ + BYTE byRes[5]; +}NET_DVR_DDE_PARAM,*LPNET_DVR_DDE_PARAM; + +typedef struct tagNET_DVR_AGC_PARAM +{ + BYTE bySceneType;//1-Normal Sence,2-Highlight Sence,3-Manual Sence + BYTE byLightLevel;//ȵȼ[1,100]ֶģʽЧ + BYTE byGainLevel; //ȼ[1,100]ֶģʽЧ + BYTE byRes[5]; +}NET_DVR_AGC_PARAM,*LPNET_DVR_AGC_PARAM; + +//ץĻCCD 64ֽ +typedef struct tagNET_DVR_SNAP_CAMERAPARAMCFG +{ + BYTE byWDRMode; // ̬ģʽ;0~رգ1~ֿ̬ 2~̬ + BYTE byWDRType; // ̬лģʽ; 0~ǿã1~ʱã2~ + BYTE byWDRLevel; // ̬ȼ0~6Ӧ1-7Ĭ23 + BYTE byRes1; + NET_DVR_TIME_EX struStartTime; //ʼ̬ʱ + NET_DVR_TIME_EX struEndTime; //̬ʱ + BYTE byDayNightBrightness; //ҹתֵ0-100Ĭ50 + //ɫǿ + BYTE byMCEEnabled;//ɫǿʹܣtruefalseر + BYTE byMCELevel;//ɫǿǿȣ0~100Ĭֵ50 + //ԶԱȶ + BYTE byAutoContrastEnabled;//ԶԱȶʹܣtruefalseر + BYTE byAutoContrastLevel;//ԶԱȵȼ0-100,Ĭ50 + //ϸǿ + BYTE byLSEDetailEnabled;//ϸǿʹܣtruefalseر + BYTE byLSEDetailLevel;//ϸǿȼ0-100,Ĭ50 + // License Plate Definition Enhancementǿ + BYTE byLPDEEnabled;//ǿʹܣtruefalseر + BYTE byLPDELevel;//ǿȼ0-100,Ĭ50 + //Աȶǿ + BYTE byLseEnabled; //Աȶǿʹܣtruefalseر + BYTE byLseLevel; //Աȶǿȼ0-100,Ĭ0 + BYTE byLSEHaloLevel;//ƵȼΧ 0-100,Ĭ0 + BYTE byLseType; //Աȶǿлģʽ; 0~ǿã1~ʱã2~ãֶοͬʱbyLseLevelbyLSEHaloLevel + BYTE byRes2[3]; + NET_DVR_TIME_EX struLSEStartTime; //ʼԱȶǿʱ䣨byLseTypeΪ1ʱЧ + NET_DVR_TIME_EX struLSEEndTime; //Աȶǿʱ䣨byLseTypeΪ1ʱЧ + BYTE byLightLevel;//Ϊȵȼ0-100,Ĭ0byLseTypeΪ2ʱЧ + //ƶԱȶ + BYTE byPlateContrastLevel;//ƶԱȶȵȼ0~100Ĭ0 + //ƱͶ + BYTE byPlateSaturationLevel;//ƱͶȵȼ0~100Ĭ0 + BYTE byRes[9]; +} NET_DVR_SNAP_CAMERAPARAMCFG,*LPNET_DVR_SNAP_CAMERAPARAMCFG; + +//ѧ͸ +typedef struct tagNET_DVR_OPTICAL_DEHAZE +{ + BYTE byEnable; //0~ùѧ͸1~ùѧ͸ + BYTE byRes[7]; +} NET_DVR_OPTICAL_DEHAZE, *LPNET_DVR_OPTICAL_DEHAZE; + +//AGCãAGCģʽΪЧʱNET_DVR_AGC_PARAMòΪ׼AGCģʽΪԶֶʱNET_DVR_AGC_PARAMòЧ +typedef struct tagNET_DVR_THERMOMETRY_AGC +{ + BYTE byMode;//AGCģʽ0~Ч1~Զ2~ֶ + BYTE byRes1[3]; + int iHighTemperature;//¶ȣΧΪ-273~9999϶ȣ1~ֶģʽЧ + int iLowTemperature;//¶ȣΧΪ-273~9999϶ȣ1~ֶģʽЧ + BYTE byRes[8]; +}NET_DVR_THERMOMETRY_AGC, *LPNET_DVR_THERMOMETRY_AGC; + +//ǰ˲ +typedef struct tagNET_DVR_CAMERAPARAMCFG_EX +{ + DWORD dwSize; + NET_DVR_VIDEOEFFECT struVideoEffect;/*ȡԱȶȡͶȡȡɫ*/ + NET_DVR_GAIN struGain;/*Զ*/ + NET_DVR_WHITEBALANCE struWhiteBalance;/*ƽ*/ + NET_DVR_EXPOSURE struExposure; /*ع*/ + NET_DVR_GAMMACORRECT struGammaCorrect;/*GammaУ*/ + NET_DVR_WDR struWdr;/*̬*/ + NET_DVR_DAYNIGHT struDayNight;/*ҹת*/ + NET_DVR_BACKLIGHT struBackLight;/*ⲹ*/ + NET_DVR_NOISEREMOVE struNoiseRemove;/*ֽ*/ + BYTE byPowerLineFrequencyMode; /*0-50HZ; 1-60HZ*/ + /* + 0-ԶȦ, + 1-ֶȦ, + 2-P-Iris1, + 3-Union 3-9mm F1.6-2.7 (T5280-PQ1) [IPC5.1.7] + 4-Union 2.8-12mm F1.6-2.7 (T5289-PQ1) [IPC5.1.7] + 5-private 3.8-16mm F1.5HV3816P-8MPIR) + 6-private 11-40mm F1.7 (HV1140P-8MPIR) + 7-private 2.7-12mm F1.2TV2712P-MPIR + 8- MZ5721D-12MPIR + 9- MZ1555D-12MPIR + 10- MZ5721D-12MPIR(RS485) + 11- MZ1555D-12MPIR(RS485) + */ + BYTE byIrisMode; + BYTE byMirror ; /* 0 off1- leftright2- updown3-center 4-Auto*/ + BYTE byDigitalZoom; /*:0 dsibale 1 enable*/ + BYTE byDeadPixelDetect; /*,0 dsibale 1 enable*/ + BYTE byBlackPwl;/*ڵƽ , 0-255*/ + BYTE byEptzGate;// EPTZر:0-ǫ̃1-ǫ̃ + BYTE byLocalOutputGate;//ر0-ر1-BNC 2-HDMIر + //20-HDMI_720P50 + //21-HDMI_720P60 + //22-HDMI_1080I60 + //23-HDMI_1080I50 + //24-HDMI_1080P24 + //25-HDMI_1080P25 + //26-HDMI_1080P30 + //27-HDMI_1080P50 + //28-HDMI_1080P60 + BYTE byCoderOutputMode;//fpgaģʽ0ֱͨ3ذ + BYTE byLineCoding; //Ƿб룺0-1- + BYTE byDimmerMode; //ģʽ0-Զ1-Զ + BYTE byPaletteMode; //ɫ壺0-ȣ1-ȣ2-ɫ28-ɫ8, 9-ں1,10-ʺ,11-ں2,12-1,13-2,14-ɫ,15-ɫ1,16-ɫ2,17-,18-,19-,20-,21-22-ɫ3 + BYTE byEnhancedMode; //ǿʽܱ̽ߣ0-ǿ1-12-23-34-4 + BYTE byDynamicContrastEN; //̬Աȶǿ 0-1 + BYTE byDynamicContrast; //̬Աȶ 0-100 + BYTE byJPEGQuality; //JPEGͼ 0-100 + NET_DVR_CMOSMODECFG struCmosModeCfg;//CMOSģʽǰ˲ãͷģʽȡ + BYTE byFilterSwitch; //˲أ0-ã1- + BYTE byFocusSpeed; //ͷٶȣ0-10 + BYTE byAutoCompensationInterval; //ʱԶŲ1-120λ + BYTE bySceneMode; //ģʽ0-⣬1-ڣ2-Ĭϣ3- + NET_DVR_DEFOGCFG struDefogCfg;//͸ + NET_DVR_ELECTRONICSTABILIZATION struElectronicStabilization;//ӷ + NET_DVR_CORRIDOR_MODE_CCD struCorridorMode;//ģʽ + BYTE byExposureSegmentEnable; //0~,1~ عʱʽ״عϵʱعʱ䵽мֵȻ浽мֵع⵽ֵ浽ֵ + BYTE byBrightCompensate;//ǿ [0~100] + /* + 0-رա1-640*480@25fps2-640*480@30ps3-704*576@25fps4-704*480@30fps5-1280*720@25fps6-1280*720@30fps + 7-1280*720@50fps8-1280*720@60fps9-1280*960@15fps10-1280*960@25fps11-1280*960@30fps + 12-1280*1024@25fps13--1280*1024@30fps14-1600*900@15fps15-1600*1200@15fps16-1920*1080@15fps + 17-1920*1080@25fps18-1920*1080@30fps19-1920*1080@50fps20-1920*1080@60fps21-2048*1536@15fps22-2048*1536@20fps + 23-2048*1536@24fps24-2048*1536@25fps25-2048*1536@30fps26-2560*2048@25fps27-2560*2048@30fps + 28-2560*1920@7.5fps29-3072*2048@25fps30-3072*2048@30fps31-2048*1536@12.532-2560*1920@6.25 + 33-1600*1200@2534-1600*1200@3035-1600*1200@12.536-1600*900@12.537-1280*960@12.5fps38-800*600@25fps39-800*600@30fps40 + 4000*3000@12.5fps41-4000*3000@15fps42-4096*2160@20fps43-3840*2160@20fps 44-960*576@25fps45-960*480@30fps46-752*582@25fps + 47-768*494@30fps48-2560*1440@25fps49-2560*1440@30fps 50-720P@100fps51-720P@120fps52-2048*1536@50fps53-2048*1536@60fps + 54-3840*2160@25fps55-3840*2160@30fps56-4096*2160@25fps57-4096*2160@30fps 58-1280*1024@50fps59-1280*1024@60fps + 60-3072*2048@50fps61-3072*2048@60fps62-3072*1728@25fps63-3072*1728@30fps64-3072*1728@50fps65-3072*1728@60fps66-336*256@50fps67-336*256@60fps + 68-384*288@50fps69-384*288@60fps 70- 640 * 512@50fps 71- 640 * 512@60fps72-2592*1944@25fps73-2592*1944@30fps74-2688*1536@25fps75-2688*1536@30fps + 76-2592*1944@20fps77-2592*1944@15fps78-2688*1520@20fps79-2688*1520@15fps80-2688*1520@25fps81-2688*1520@30fps82- 2720*2048@25fps 83- 2720*2048@30fps + 84-336*256@25fps85- 384*288@25fps86-640*512@25fps87-1280*960@50fps88-1280*960@60fps89-1280*960@100fps90-1280*960@120fps91-4000*3000@20fps + 92-1920*1200@25fps93-1920*1200@30fps94-2560*1920@25fps95-2560*1920@20fps96-2560*1920@30fps97-1280*1920@25fps98-1280*1920@30fps + 99-4000*3000@24fps100-4000*3000@25fps101-4000*3000@10fps102- 384*288@30fps103-2560*1920@15fps104-2400*3840@25fps105-1200*1920@25fps + 106-4096*1800@30fps107-3840*1680@30fps108-2560*1120@30fps109-704*320@30fps110-1280*560@30fps111-4096*1800@25fps112-3840*1680@25fps + 113-2560*1120@25fps114-704*320@25fps115-1280*560@25fps116-2400*3840@24fps117-3840*2400@24fps118-3840*2400@25fps119-2560*1920@12.5fps + 120-2560*2048@12fps121-2560*2048@15fps122-2560*1536@25fps123-2560*1536@30fps124-2256*2048@25fps125-2256*2048@30fps126-2592*2592@12.5fps127-2592*2592@15fps + 128 - 640*512@30fps129-2048*1520@30fps130-2048*1520@25fps131-3840*2160@24fps132-2592*1520@25fps133-2592*1520@30fps134-2592*1536@25fps135-2592*1536@30fps + 136-640*960@25fps137-640*960@24fps139-3840*1080@25fps140-3840*1080@30fps142-2992*2192@25fps143-2992*2192@30fps144-3008*2160@25fps145-3008*2160@30fps + 146-3072*1728@20fps147-2560*1440@20fps148-2160*3840@25fps149-2160*3840@30fps150-7008*1080@25fps151-7008*1080@30fps152-3072*2048@20fps153-1536*864@25fps + 154-2560*1920@24fps155-2400*3840@30fps156-3840*2400@30fps157-3840*2160@15fps + 158-384*288@8.3fps159-640*512@8.3fps160-160*120@8.3fps161-1024*768@8.3fps162-640*480@8.3fps163-3840*2160@12.5fps164-2304*1296@30fps165-2304*1296@25fps + 166-2560*1440@24fps167-2688*1512@25fps168-2688*1512@30fps169-2688*1512@50fps170-2688*1512@60fps171-1536*864@30fps172-2560*1440@50fps173-2560*1440@60fps + 174-2048*2048@25fps175-2048*2048@30fps176-4000*3060@20fps177-3060*3060@25fps178-3060*3060@30fps179-3000*3000@25fps180-3000*3000@30fps181-8160*3616@30fps + 182-8160*3616@25fps183-3000*3000@20fps184-3000*3000@15fps185-3000*3000@12.5fps186-5472*3648@25fps187-5472*3648@30fps188-7680*4320@25fps189-7680*4320@30fps + 190-8160*2400@25fps191-8160*2400@30fps192-5520*2400@25fps193-5520*2400@30fps194-2560*1440@15fps195-1944*1212@24fps196-1944*1212@25fps197-3456*1920@30fps + 198-4800*2688@25fps199-4800*2688@30fps200-6480*1080@25fps201-6480*1080@30fps202-8640*1440@25fps203-8640*1440@30fps204-3456*1920@25fps205-2688*1520@50fps + 206-2688*1520@60fps207-4976*1452@25fps208-4976*1452@30fps 209-3200*1800@25fps210-3200*1800@30fps211-5472*3648@24fps212-1920*1080@12.5fps213-2944*1656@20fps + 214-1920*1080@24fps215-4800*1600@25fps216-4800*1600@30fps217-2560*1440@12.5fps218-6560*3690@1fps219-5120*1400@20fps220-7680*4320@1fps221-1920*1080@20fps + 222-5120*1440@20fps223-4080*1808@25fps224-4080*1808@30fps225-4080*1152@25fps226-4080*1152@30fps227-2688*1944@20fps228-2592*1944@24fps229-3200*1800@15fps + 230-4416*1696@20fps231-3456*1080@25fps232-3200*1800@12.5fps233-2688*1532@25fps234-2688*1532@30fps235-4416*1696@12.5fps236-3840*2048P12.5fps237-3840*4096P12.5fps + 238-5120*1440@12.5fps239-3840*1080@24fps240-320*256@30fps241-3264*2448@25fps242-3264*2448@30fps243-5430*3054@1fps244-2688*1520@24@24fps245-4000*3000@30fps + 246-1632*1224@25fps247-1632*1224@30fps248-160*120@25fps249-1920*1440@25fps250-1920*1440@30fps-3632*1632@20fps252-3040*1368@25fps253-3040*1368@24fps + 254-5120*1440@25fps255-ֶαʾΧ + 豸ģʽ255ʱ + 1ȡʱֵֶΪ255޾庬壬ڱʾʵģʽֵ255ʵwCaptureModeNwCaptureModePʾ + 2ʱֵҪΪ255ʵwCaptureModeNwCaptureModePʾ + 豸ģʽС255ʱ + 1ȡʱֵֶΪʵģʽֵwCaptureModeNwCaptureModePֵ账 + 2ʱֶΪʵģʽֵwCaptureModeNwCaptureModePֲֵ + */ + BYTE byCaptureModeN; //ƵģʽNƣ + BYTE byCaptureModeP; //ƵģʽPƣ + NET_DVR_SMARTIR_PARAM struSmartIRParam; //ŹϢ + NET_DVR_PIRIS_PARAM struPIrisParam;//PIrisϢӦbyIrisModeֶδ2-PIris1ʼЧ + //2014-02-25 + NET_DVR_LASER_PARAM_CFG struLaserParam; // + NET_DVR_FFC_PARAM struFFCParam; + NET_DVR_DDE_PARAM struDDEParam; + NET_DVR_AGC_PARAM struAGCParam; + BYTE byLensDistortionCorrection;//ͷУ 0-ر,1- + BYTE byDistortionCorrectionLevel;//Уȼ0-1-ȼһ2-ȼ3-ȼ;255-Զ + BYTE byCalibrationAccurateLevel;// Уǿ[0-100] + BYTE byZoomedInDistantViewLevel;//Զ˷Ŵȼ[0-100] + NET_DVR_SNAP_CAMERAPARAMCFG struSnapCCD ; //ץĻCCDֻץĻ + NET_DVR_OPTICAL_DEHAZE struOpticalDehaze;//ѧ͸ + NET_DVR_THERMOMETRY_AGC struThermAGC;//AGC + BYTE byFusionMode;//˫Ƶںģʽ0~ȳģʽ1~ںģʽ2~лģʽ,3~ɼģʽ, 4~ںϺڰģʽ, 5~ںϲɫģʽ-ݵأ6~ںϲɫģʽ-ĵأ7~ںϲɫģʽ-ѩأ8~ںϲɫģʽ-9~ںϲɫģʽ- + BYTE byHorizontalFOV;//ˮƽӳ[0-100] + BYTE byVerticalFOV;//ֱӳ[0-100] + BYTE byBrightnessSuddenChangeSuppression;//ͻ0-ر,1- + BYTE byGPSEnabled;//GPSʹܣ0-أ1- + BYTE byRes; + /* + 256-160*120@50fps257-3200*1800@20fps258-800*480@25fps259-2688*1944@25fps260-640*384@50fps261-8000*6000@1fps262-1440*1080@50fps263-1440*1080@60fps, + 264-8160*3616@24fps265-3632*1632@25fps266-3632*1632@30fps267-3632*1632@20fps268-1760*1320@25fps269-4000*3000@4fps270-192*256@25fps + */ + WORD wCaptureModeN; //ƵģʽNƣģʽС255ʱbyCaptureModeNһ£255ʱԸֶηֵжϡ + WORD wCaptureModeP; //ƵģʽPƣģʽС255ʱbyCaptureModeNһ£255ʱԸֶηֵж + BYTE byRes2[150]; +}NET_DVR_CAMERAPARAMCFG_EX, *LPNET_DVR_CAMERAPARAMCFG_EX; + +typedef struct tagNET_DVR_FOCUSING_POSITION_STATE +{ + DWORD dwSize; + BYTE byState;//۽λ״̬ 0-λ1-λ + BYTE byRes[31]; +}NET_DVR_FOCUSING_POSITION_STATE, *LPNET_DVR_FOCUSING_POSITION_STATE; + +typedef enum _VCA_PLATE_COLOR_ +{ + VCA_BLUE_PLATE = 0, //ɫ + VCA_YELLOW_PLATE, //ɫ + VCA_WHITE_PLATE, //ɫ + VCA_BLACK_PLATE, //ɫ + VCA_GREEN_PLATE, //ɫ + VCA_BKAIR_PLATE, //񺽺ɫ + VCA_RED_PLATE, //ɫ + VCA_ORANGE_PLATE, //ɫ + VCA_BROWN_PLATE = 8, //ɫ + VCA_OTHER = 0xff // +}VCA_PLATE_COLOR; + +// +typedef enum _VCA_PLATE_TYPE_ +{ + VCA_STANDARD92_PLATE = 0, //׼ó + VCA_STANDARD02_PLATE, //02ʽó + VCA_WJPOLICE_PLATE, //侯 + VCA_JINGCHE_PLATE, // + STANDARD92_BACK_PLATE, //ó˫β + VCA_SHIGUAN_PLATE, //ʹݳ + VCA_NONGYONG_PLATE, //ũó + VCA_MOTO_PLATE, //Ħг + NEW_ENERGY_PLATE, //Դ + VCA_CONSULATE_PLATE = 9, //¹ݳ + VCA_EMERGENCY_PLATE = 10, //Ӧ + //2017-05-18 ж + TRANSPORT_PLATE = 0x20, //䳵 + COMMERCIAL_PLATE, //ó + PRIVATE_PLATE, //˽ҳ + LEARNING_PLATE, // + CD_PLATE, //ʹݳ + CC_PLATE, //ʹݳ + ARMY_PLATE, // + PROTOCOL_PLATE, //PROTOCOL + GOVERNMENT_PLATE, // + EXPORT_PLATE, //EXPORT + TAXI_PLATE, //⳵ + TESTING_PLATE, //TESTING + TRANSFER_PLATE, //TRANSFER + TRUCK_PLATE, // + BUS_PLATE, // + PUBLIC_PLATE, //PUBLIC + PUB_TRANS_PLATE, //PUBLIC TRANSFER + PRI_TRANS_PLATE, //PRIVATE TRANSPORT + TUMBREL_PLATE, //ֳ + HONG_KONG_MACAO_PLATE, //۰ + UNKNOWN_PLATE = 0xff, //δ֪δʶ +}VCA_PLATE_TYPE; + +//ʶ +typedef enum _VTR_RESULT +{ + VTR_RESULT_OTHER = 0, //δ֪ + VTR_RESULT_BUS = 1, //ͳ + VTR_RESULT_TRUCK = 2, // + VTR_RESULT_CAR = 3, //γ + VTR_RESULT_MINIBUS = 4, // + VTR_RESULT_SMALLTRUCK = 5, //С + VTR_RESULT_HUMAN = 6, // + VTR_RESULT_TUMBREL = 7, //ֳ + VTR_RESULT_TRIKE = 8, //ֳ + VTR_RESULT_SUV_MPV = 9, //SUV/MPV + VTR_RESULT_MEDIUM_BUS = 10, //Ϳͳ + VTR_RESULT_MOTOR_VEHICLE = 11, // + VTR_RESULT_NON_MOTOR_VEHICLE = 12, //ǻ + VTR_RESULT_SMALLCAR = 13, //Сͽγ + VTR_RESULT_MICROCAR = 14, //΢ͽγ + VTR_RESULT_PICKUP = 15, //Ƥ + VTR_RESULT_CONTAINER_TRUCK = 16, // װ俨 + VTR_RESULT_MINI_TRUCK = 17, // ΢忨 + VTR_RESULT_SLAG_CAR = 18, // + VTR_RESULT_CRANE = 19, // ̳ + VTR_RESULT_OIL_TANK_TRUCK = 20, // ͹޳ + VTR_RESULT_CONCRETE_MIXER = 21, // 賵 + VTR_RESULT_PLATFORM_TRAILER = 22, // ƽϳ + VTR_RESULT_HATCHBACK = 23, // γ + VTR_RESULT_SALOON = 24, // γ + VTR_RESULT_SPORT_SEDAN = 25, // + VTR_RESULT_SMALL_BUS = 26 //СͿͳ +}VTR_RESULT; + + +//ɫ +typedef enum _VCR_CLR_CLASS +{ + VCR_CLR_UNSUPPORT = 0, //֧ + VCR_CLR_WHITE = 1, // + VCR_CLR_SILVER = 2, // + VCR_CLR_GRAY = 3, // + VCR_CLR_BLACK = 4, // + VCR_CLR_RED = 5, // + VCR_CLR_DARKBLUE = 6, // + VCR_CLR_BLUE = 7, // + VCR_CLR_YELLOW = 8, // + VCR_CLR_GREEN = 9, // + VCR_CLR_BROWN = 10, // + VCR_CLR_PINK = 11, // + VCR_CLR_PURPLE = 12, // + VCR_CLR_DARKGRAY = 13, // + VCR_CLR_CYAN = 14 //ɫ +}VCR_CLR_CLASS; + +// 2013-11-04 +typedef enum _VCA_OPERATE_TYPE_ +{ + VCA_LICENSE_TYPE = 0x1, //ƺ + VCA_PLATECOLOR_TYPE = 0x2, //ɫ + VCA_CARDNO_TYPE = 0x4, // + VCA_PLATETYPE_TYPE = 0x8, // + VCA_LISTTYPE_TYPE = 0x10, // + VCA_INDEX_TYPE = 0x20, //ˮ 2014-02-25 + VCA_OPERATE_INDEX_TYPE = 0x40 // 2014-03-03 +}VCA_OPERATE_TYPE; + +typedef enum _VCA_ILLEGAL_TYPE_ +{ + VCA_POSTPIC_TYPE = 0x1, //ͼƬ + VCA_LOWSPEED_TYPE = 0x2, // + VCA_HIGHSPEED_TYPE = 0x4, // + VCA_RETROGRADE_TYPE = 0x8, // + VCA_RUSH_REDLIGHT_TYPE = 0x10, // + VCA_PRESS_LANE_TYPE = 0x20, //ѹ + VCA_VIOLATE_GUIDE_TYPE = 0x40,// + VCA_ROAD_STRAND_TYPE = 0x80,//·(豸֧) + VCA_VEHICLE_ILLEGAL_LANE_TYPE = 0x100,//ռ + VCA_ILLEGAL_LANE_CHANGE_TYPE = 0x200,//Υ + VCA_ILLEGAL_LANE_DRIVE_TYPE = 0x400,// + VCA_VIOLATE_BAN_TYPE = 0x800,//Υ + VCA_CROSS_PARKING_TYPE = 0x1000,//·ͣ + VCA_GREEN_PARKING_TYPE = 0x2000//̵ͣ +}VCA_ILLEGAL_TYPE; + +typedef enum _VCA_VEHICLE_TYPE_ +{ + VCA_OTHER_TYPE = 0x1, // + VCA_SMALLCAR_TYPE = 0x2, //Сͳ + VCA_BIGCAR_TYPE = 0x4, //ͳ + VCA_BUS_TYPE = 0x8, //ͳ + VCA_TRUCK_TYPE = 0x10, // + VCA_CAR_TYPE = 0x20, //γ + VCA_MINIBUS_TYPE = 0x40, // + VCA_SMALL_TRUCK_TYPE = 0x80 //С +}VCA_VEHICLE_TYPE; + +//Ʒ +typedef enum _VLR_VEHICLE_CLASS +{ + VLR_OTHER = 0, // + VLR_VOLKSWAGEN = 1, // + VLR_BUICK = 2, // + VLR_BMW = 3, // + VLR_HONDA = 4, // + VLR_PEUGEOT = 5, // + VLR_TOYOTA = 6, // + VLR_FORD = 7, // + VLR_NISSAN = 8, //ղ + VLR_AUDI = 9, //µ + VLR_MAZDA = 10, //Դ + VLR_CHEVROLET = 11, //ѩ + VLR_CITROEN = 12, //ѩ + VLR_HYUNDAI = 13, //ִ + VLR_CHERY = 14, // + VLR_KIA = 15, // + VLR_ROEWE = 16, // + VLR_MITSUBISHI = 17, // + VLR_SKODA = 18, //˹´ + VLR_GEELY = 19, // + VLR_ZHONGHUA = 20, //л + VLR_VOLVO = 21, //ֶ + VLR_LEXUS = 22, //׿˹ + VLR_FIAT = 23, // + VLR_EMGRAND = 24, //ۺ() + VLR_DONGFENG = 25, // + VLR_BYD = 26, //ǵ + VLR_SUZUKI = 27, //ľ + VLR_JINBEI = 28, // + VLR_HAIMA = 29, // + VLR_SGMW = 30, // + VLR_JAC = 31, // + VLR_SUBARU = 32, //˹³ + VLR_ENGLON = 33, //Ӣ() + VLR_GREATWALL = 34, // + VLR_HAFEI = 35, // + VLR_ISUZU = 36, //ʮ() + VLR_SOUEAST = 37, // + VLR_CHANA = 38, // + VLR_FOTON = 39, // + VLR_XIALI = 40, //(һ) + VLR_BENZ = 41, // + VLR_FAW = 42, //һ + VLR_NAVECO = 43, //ά + VLR_LIFAN = 44, // + VLR_BESTURN = 45, //һ(һ) + VLR_CROWN = 46, //ʹ() + VLR_RENAULT = 47, //ŵ + VLR_JMC = 48, //JMC() + VLR_MG = 49, //MG + VLR_KAMA = 50, // + VLR_ZOTYE = 51, //̩ + VLR_CHANGHE = 52, // + VLR_XMKINGLONG = 53, //Ž() + VLR_HUIZHONG = 54, //Ϻ() + VLR_SZKINGLONG = 55, //ݽ + VLR_HIGER = 56, // + VLR_YUTONG = 57, //ͨ + VLR_CNHTC = 58, //й + VLR_BEIBEN = 59, //ؿ + VLR_XINGMA = 60, // + VLR_YUEJIN = 61, //Ծ + VLR_HUANGHAI = 62, //ƺ + VLR_OLDWALL = 63, //Ͽ + VLR_CHANACOMMERCIAL = 64, // + VLR_PORSCHE = 65, // ʱ + VLR_CADILLAC = 66, // + VLR_INFINITI = 67, // Ӣ + VLR_GLEAGLE = 68, // ȫӥ() + VLR_JEEP = 69, // JEEP() + VLR_LANDROVER = 70, // · + VLR_CHANGFENG = 71, // + VLR_BENNI = 72, // () + VLR_ERA = 73, // ʱ(ʱ) + VLR_TAURUS = 74, // ţ() + VLR_EADO = 75, // ݶ + VLR_SHANQI = 76, // + VLR_HONGYAN = 77, // (άº) + VLR_DRAGON = 78, // () + VLR_JACTEXT = 79, // JAC () + VLR_JACBUS = 80, // ִͳ () + VLR_ANKAI = 81, // ͳ + VLR_SHENLONG = 82, // ͳ + VLR_DAEWOO = 83, // ͳ + VLR_WUZHENG = 84, // + VLR_MAN = 85, // MAN + VLR_ZHONGTONG = 86, // ͨͳ + VLR_BAOJUN = 87, // + VLR_BQWEIWANG = 88, // + VLR_TRUMPCHE = 89, // + VLR_LUFENG = 90, // ½ + VLR_HMZHENGZHOU = 91, // ֣ + VLR_BEIJING = 92, // + VLR_ZHONGSHUN = 93, // ˳ + VLR_WEILIN = 94, // + VLR_OPEL = 95, // ŷ + VLR_KARRY = 96, // + VLR_SMA = 97, // + VLR_SMATEXT = 98, // SMA + VLR_YUWIN = 99, // Ԧʤ + VLR_MINI = 100, // MINI + VLR_MARK = 101, // MARKX + VLR_HAVAL = 102, // HAVAL + VLR_OGA = 103, // ک + VLR_VENUCIA = 104, // + VLR_BYD2 = 105, // ǵʽ2 (ǵ) + VLR_SMART = 106, // SMART + VLR_BAW = 107, // 쳧BAW + VLR_LUXGEN = 108, // ǽ + VLR_YEMA = 109, // Ұ + VLR_ZTE = 110, // + VLR_EVERUS = 111, // + VLR_CHRYSLER = 112, // ˹ + VLR_GONOW = 113, // + VLR_SHJIANG = 114, // ɻ + VLR_RUILIN = 115, // + VLR_FORTA = 116, // + VLR_GAGUAR = 117, // ݱ + VLR_HEIBAO = 118, // ڱ + VLR_TKING = 119, // ƿ + VLR_TKINGTEXT = 120, // ƿ + VLR_FODAY = 121, // + VLR_LOTUS = 122, // + VLR_NANJUN = 123, // Ͽ + VLR_SHUANGHUAN = 124, // ˫ + VLR_SAIBAO = 125, // + VLR_HAWTAI = 126, // ̩ + VLR_LIFO = 127, // Դɵ + VLR_JONWAY = 128, // Դ + VLR_FULONGMA = 129, // + VLR_WEILI = 130, // Ϋ + VLR_ANCHI = 131, // + VLR_PAIXI = 132, // ϲ + VLR_HIGERTEXT = 133, // HIGER + VLR_RIYECAR = 134, // ҰῨ + VLR_RIYETRUCK = 135, // Ұؿ + VLR_JIANGNAN = 136, // + VLR_OLDZOTYE = 137, // Ͽ̩ + VLR_OLDXIALI = 138, // Ͽ + VLR_NEWAOCHI = 139, // °³ + VLR_CDW = 140, // + VLR_CDWTEXT = 141, // + VLR_CIIMO = 142, // ˼ + VLR_CHANADS = 143, // а + VLR_DS = 144, // + VLR_ROHENS = 145, // ִͶ˹ + VLR_YANTAI = 146, // ̨ + VLR_SHUANGLONG = 147, // ˫ + VLR_FENGLING = 148, // ʱ + VLR_XINKAI = 149, // ¿ + VLR_GMC = 150, // GMC + VLR_DATONG = 151, // ͨ + VLR_BQYINXIANG = 152, // + VLR_NEWCHERY = 153, // + VLR_MUDAN = 154, // ĵ + VLR_DAYUN = 155, // + VLR_DONGWO = 156, // + VLR_UNION = 157, // + VLR_CHUNZHOU = 158, // ޿ͳ + VLR_SANY = 159, // һع + VLR_YAXING = 160, // ǿͳ + VLR_HENGTONG = 161, // ͨͳ + VLR_SHAOLIN = 162, // ֿͳ + VLR_YOUNG = 163, // ͳ + VLR_STOM = 164, // ʮͨ + VLR_SANHUAN = 165, // + VLR_XUGONG = 166, // 칤 + VLR_BEIFANG = 167, // + VLR_JIANGHUAN = 168, // + VLR_BJFARM = 169, // ũ + VLR_NEWDADI = 170, // ´ + VLR_SUNWIN = 171, // ֿͳ + VLR_YINGTIAN = 172, // Ӣ + VLR_QINGQI = 173, // + VLR_CHUFENG = 174, // + VLR_SCANIA = 175, // ˹ + VLR_JIULONG = 176, // ͳ + VLR_YOUYI = 177, // ͳ + VLR_SHANGRAO = 178, // Ŀͳ + VLR_JIJIANG = 179, // + VLR_YANGZI = 180, // ӿͳ + VLR_XIWO = 181, // ֿͳ + VLR_CHANGJIANG = 182, // ͳ + VLR_WUYI = 183, // + VLR_CHENGDU = 184, // ɶͳ + VLR_TIANMA = 185, // + VLR_BAOLONG = 186, // + VLR_NEWYATU = 187, // ; + VLR_BARUI = 188, // ǰ + VLR_GUANZHI = 189, // + VLR_XIYATE = 190, // + VLR_BINLI = 191, // + VLR_DADI = 192, // + VLR_FUQI = 193, // + VLR_HANGTIAN = 194, // + VLR_HENGTIAN = 195, // + VLR_JMCCAR = 196, // + VLR_KAERSEN = 197, // ɭ + VLR_KAWEI = 198, // + VLR_LANBOJINI = 199, // + VLR_MASHALADI = 200, // ɯ + VLR_SHUCHI = 201, // ۿͳ + VLR_SHILI = 202, // ʵͳ + VLR_HUABEI = 203, // пͻ + VLR_YIZHENG = 204, // + VLR_CHUNLAN = 205, // + VLR_DAFA = 206, // + VLR_SHENYE = 207, // Ұ + VLR_FALALI = 208, // + VLR_FUXING = 209, // + VLR_ANYUAN = 210, // Դͳ + VLR_JINGHUA = 211, // ͳ + VLR_TAIHU = 212, // ̫ͳ + VLR_WUZHOULONG = 213, // + VLR_CHANGLONG = 214, // ¡ͳ + VLR_YUEXI = 215, // ͳ + VLR_SHENMA = 216, // ͳ + VLR_LUSHAN = 217, // ®ɽ + VLR_WANFENG = 218, // + VLR_GZYUNBAO = 219, // Ʊ + VLR_ZHONGDA = 220, // д + VLR_THREEWHEEL = 221, // ֳ + VLR_TWOWHEEL = 222, // ֳ + VLR_JBC = 223, // JBC + VLR_YZJIANG = 224, // ӽͳ + VLR_CNJ = 225, // ϿCNJ + VLR_FORLAND = 226, // ʱ + VLR_FARMCAR = 227, // ũó + VLR_DONGFANGHONG = 228, // + VLR_STEYR = 229, // ˹̫ + VLR_HONGQI = 230, // + VLR_USER1 = 231, //û1 + VLR_USER2 = 232, //û2 + VLR_USER3 = 233, //û3 + VLR_USER4 = 234, //û4 + VLR_USER5 = 235, //û5 + VLR_USER6 = 236, //û6 + VLR_USER7 = 237, //û7 + VLR_USER8 = 238 //û8 +}VLR_VEHICLE_CLASS; + +/********************ƷBegin*************************/ +//Ʒ +typedef enum _VSB_VOLKSWAGEN_CLASS +{ + VSB_VOLKSWAGEN_OTHER = 0, // + VSB_VOLKSWAGEN_LAVIDA = 1, // + VSB_VOLKSWAGEN_CROSSLAVIDA = 2, // ʾ + VSB_VOLKSWAGEN_TIGUAN = 3, // ; + VSB_VOLKSWAGEN_TOURAN = 4, // ; + VSB_VOLKSWAGEN_SANTANA = 5, // ɣ + VSB_VOLKSWAGEN_SANTANA2000 = 6, // ɣ2000 + VSB_VOLKSWAGEN_SANTANA3000 = 7, // ɣ3000 + VSB_VOLKSWAGEN_VISTA = 8, // ɣ-־ + VSB_VOLKSWAGEN_PASSAT = 9, // + VSB_VOLKSWAGEN_PASSATLINGYU = 10, // -Ԧ + VSB_VOLKSWAGEN_POLO = 11, // + VSB_VOLKSWAGEN_POLOCROSS = 12, // -˶ + VSB_VOLKSWAGEN_POLOGTI = 13, // -GTI + VSB_VOLKSWAGEN_SAGITAR = 14, // + VSB_VOLKSWAGEN_MAGOTAN = 15, // + VSB_VOLKSWAGEN_JETTA = 16, // ݴ + VSB_VOLKSWAGEN_BORA = 17, // + VSB_VOLKSWAGEN_NEWGOLF = 18, // ¸߶ + VSB_VOLKSWAGEN_GOLFGTI = 19, // ߶-GTI + VSB_VOLKSWAGEN_GOL = 20, // ߶ + VSB_VOLKSWAGEN_CADDY = 21, // + VSB_VOLKSWAGEN_PHAETON = 22, // + VSB_VOLKSWAGEN_TOUREG = 23, // ; + VSB_VOLKSWAGEN_SCIROCCO = 24, // п + VSB_VOLKSWAGEN_BEETLE = 25, // ׿dz + VSB_VOLKSWAGEN_SHARAN = 26, // + VSB_VOLKSWAGEN_MULTIVAN = 27, // + VSB_VOLKSWAGEN_CARBONCOPY = 28, // һ-CC + VSB_VOLKSWAGEN_VISTACHANGDA = 29, // ɣ־- + VSB_VOLKSWAGEN_BORASPORTLINE = 30, // -SPORTLINE + VSR_VOLKSWAGEN_CC_1 =31, //-CC-2012,2011,2010 + VSR_VOLKSWAGEN_Cross_POLO_1 = 32, //-Cross-POLO-2010,2007 + VSR_VOLKSWAGEN_Cross_POLO_2 = 33, //-Cross-POLO-2014,2012 + VSR_VOLKSWAGEN_MULTIVAN_1 = 34, //-Multivan-2014,2012,2011 + VSR_VOLKSWAGEN_POLO_1 = 35, //-POLO-2006,2005,2004,2003,2002 + VSR_VOLKSWAGEN_POLO_2 = 36, //-POLO-2013,2012,2011 + VSR_VOLKSWAGEN_POLO_JINQU_1 = 37, //-POLOȡ-2009,2008,2007,2006 + VSR_VOLKSWAGEN_POLO_JINQU_2 = 38, //-POLOȡ-2011 + VSR_VOLKSWAGEN_Tiguan_1 = 39, //-Tiguan-2011,2009 + VSR_VOLKSWAGEN_Tiguan_2 = 40, //-Tiguan-2014,2013,2012 + VSR_VOLKSWAGEN_XIALANG_1 = 41, //--2013,2012 + VSR_VOLKSWAGEN_BAOLAI_1 = 42, //--2005,2004 + VSR_VOLKSWAGEN_BAOLAI_2 = 43, //--2006 + VSR_VOLKSWAGEN_BAOLAI_3 = 44, //--2012,2011,2010,2009,2008 + VSR_VOLKSWAGEN_BAOLAI_4 = 45, //--2014,2013 + VSR_VOLKSWAGEN_SHANGKU_1 = 46, //-п-2014,2013 + VSR_VOLKSWAGEN_PASATE_1 = 47, //--2003,2001Ԧ + VSR_VOLKSWAGEN_PASATE_2 = 48, //--2007,2006,2005Ԧ + VSR_VOLKSWAGEN_PASATE_3 = 49, //--2009,2008,2007,2005,2004,2003,2001,2000 + VSR_VOLKSWAGEN_PASATE_4 = 50, //--2011,2009Ԧ + VSR_VOLKSWAGEN_PASATE_5 = 51, //--2014,2013,2012,2011 + VSR_VOLKSWAGEN_JIEDA_1 = 52, //-ݴ-2005CIF,2002 + VSR_VOLKSWAGEN_JIEDA_2 = 53, //-ݴ-2009,2008,2006,2005,2004 + VSR_VOLKSWAGEN_JIEDA_3 = 54, //-ݴ-2012,2010 + VSR_VOLKSWAGEN_JIEDA_4 = 55, //-ݴ-2013 + VSR_VOLKSWAGEN_LANGYI_1 = 56, //--2012,2011,2010,2009,2008 + VSR_VOLKSWAGEN_LANGYI_2 = 57, //--2013 + VSR_VOLKSWAGEN_SANGTANA_1 = 58, //-ɣ-2007,2002,2000,1999,1995 + VSR_VOLKSWAGEN_SANGTANA_2 = 59, //-ɣ-2014,2013 + VSR_VOLKSWAGEN_SANGTANA_3 = 60, //-ɣ2000-2003,2001,2000,1999,1998,1996 + VSR_VOLKSWAGEN_SANGTANA_4 = 61, //-ɣ3000-2007,2006,2005,2004,2003 + VSR_VOLKSWAGEN_SANGTANAZHIJUN_1 = 62, //-ɣ־(vista)-2011,2010,2009,2008 + VSR_VOLKSWAGEN_SANGTANAZHIJUN_2 = 63, //-ɣ־(vista)-2006 + VSR_VOLKSWAGEN_JIAKECHONG_1 = 64, //-׿dz-2010,2009,2008,2007,2006,2005 + VSR_VOLKSWAGEN_JIAKECHONG_2 = 65, //-׿dz-2014,2013 + VSR_VOLKSWAGEN_HUITENG_2 = 66, //--2010,2009,2007,2006 + VSR_VOLKSWAGEN_MAITENG_1 = 67, //--2011,2010,2009,2008,2007 + VSR_VOLKSWAGEN_MAITENG_2 = 68, //--2013,2012 + VSR_VOLKSWAGEN_TUAN_3 = 69, //-;-2006,2005,2004 + VSR_VOLKSWAGEN_TUAN_1 = 70, //-;-2010,2009,2008 + VSR_VOLKSWAGEN_TUAN_2 = 71, //-;-2013,2012,2011 + VSR_VOLKSWAGEN_TUGUAN_1 = 72, //-;-2012,2011,2010 + VSR_VOLKSWAGEN_TURUI_1 = 73, //-;-2006,2005,2003 + VSR_VOLKSWAGEN_TURUI_2 = 74, //-;-2014,2013,2012,2011 + VSR_VOLKSWAGEN_SUTENG_1 = 75, //--2010,2009,2007,2006 + VSR_VOLKSWAGEN_SUTENG_2 = 76, //--2011 + VSR_VOLKSWAGEN_SUTENG_3 = 77, //--2014,2013,2012 + VSR_VOLKSWAGEN_GAOERFU_1 = 78, //-߶-2008,2007,2006,2005,2004,2003 + VSR_VOLKSWAGEN_GAOERFU_2 = 79, //-߶-2012,2011,2012,2011,2010 + VSR_VOLKSWAGEN_GAOERFU_3 = 80, //-߶GTI-2013,2012,2011,2010 + VSR_VOLKSWAGEN_LANGYI_3 = 81, //--2014 + VSR_VOLKSWAGEN_HUITENG_1 = 82 //--2004 +} VSB_VOLKSWAGEN_CLASS; + +//Ʒ +typedef enum _VBR_BUICK_CLASS +{ + VBR_BUICK_OTHER = 0, // + VBR_BUICK_ENCORE = 1, // + VBR_BUICK_GL8 = 2, // GL8 + VBR_BUICK_LEGAL = 3, // + VBR_BUICK_LACROSS = 4, // Խ + VBR_BUICK_EXCELLE = 5, // Խ + VBR_BUICK_EXCELLEGT = 6, // ӢGT + VBR_BUICK_WXCELLEXT = 7, // ӢXT + VBR_BUICK_ENCLAVE = 8, // + VBR_BUICK_ROYAUM = 9, // + VBR_BUICK_SAIL = 10, // ŷ + VBR_BUICK_EXCELLEHRV = 11, // ԽHRV + VBR_BUICK_PARKAVENUE = 12, // + VBR_BUICK_CENTURY = 13, // + VBR_BUICK_GL8_1 = 14, // -GL8-2004,2003 + VBR_BUICK_GL8_2 = 15, // -GL8-2007,2006,2005 + VBR_BUICK_GL8_3 = 16, // -GL8-2010_2008_2006_2005½ + VBR_BUICK_GL8_4 = 17, // -GL8-2014,2013,2012,2011 + VBR_BUICK_GL8_5 = 18, // -GL8-2014_2013_2011 + VBR_BUICK_ENCORE_1 = 19, // --2014,2013 + VBR_BUICK_ENCLAVE_1 = 20, // --2013,2010,2009 + VBR_BUICK_LEGAL_1 = 21, // --2001,2000,1999 + VBR_BUICK_LEGAL_2 = 22, // --2008,2006,2005,2004,2002 + VBR_BUICK_LEGAL_3 = 23, // --2013,2012,2011,2010,2009 + VBR_BUICK_LEGAL_4 = 24, // --2013_2012_2011˶ + VBR_BUICK_LEGAL_5 = 25, // --2014 + VBR_BUICK_LEGAL_6 = 26, // --2014˶ + VBR_BUICK_LACROSS_1 = 27, // -Խ-2008,2007,2006 + VBR_BUICK_LACROSS_2 = 28, // -Խ-2012,2011,2010,2009 + VBR_BUICK_LACROSS_3 = 29, // -Խ-2013 + VBR_BUICK_EXCELLE_1 = 30, // -Խ-2006,2005,2004 + VBR_BUICK_EXCELLE_2 = 31, // -Խ-2008_2006_2005_2004HRV + VBR_BUICK_EXCELLE_3 = 32, // -Խ-2011,2009,2008 + VBR_BUICK_EXCELLE_4 = 33, // -Խ-2013 + VBR_BUICK_PARKAVENUE_1 = 34, // --2011,2010,2009,2008,2007 + VBR_BUICK_SAIL_1 = 35, // -ŷ-2004,2003 + VBR_BUICK_EXCELLEGT_1 = 36, // -ӢGT-2013,2012,2011,2010 + VBR_BUICK_WXCELLEXT_1 = 37, // -ӢXT-2014,2013,2012,2010 + VBR_BUICK_CENTURY_1 = 38, // --2000 + VBR_BUICK_RONGYU_1 = 39 // --2005,2004 +}VBR_BUICK_CLASS; + +//Ʒ +typedef enum _VSB_BMW_CLASS +{ + VSB_BMW_OTHER = 0, // + VSB_BMW_3SERIES = 1, // 3ϵ + VSB_BMW_5SERIES = 2, // 5ϵ + VSB_BMW_X1 = 3, // X1 + VSB_BMW_1SERIES = 4, // 1ϵ + VSB_BMW_7SERIES = 5, // 7ϵ + VSB_BMW_X3 = 6, // X3 + VSB_BMW_X5 = 7, // X5 + VSB_BMW_X6 = 8, // X6 + VSB_BMW_Z4 = 9, // Z4 + VSB_BMW_MINI = 10, // + VSB_BMW_6SERIES = 11, //6ϵ + VSB_BMW_YIXI_1 = 12, // -1ϵ-2011,2010,2008,2007 + VSB_BMW_YIXI_2 = 13, // -1ϵ-2013,2012 + VSB_BMW_SANXI_1 = 14, // -3ϵ-2004 + VSB_BMW_SANXI_2 = 15, // -3ϵ-2007,2005 + VSB_BMW_SANXI_3 = 16, // -3ϵ-2012,2011,2010,2009 + VSB_BMW_SANXI_4 = 17, // -3ϵ-2014,2013 + VSB_BMW_WUXI_1 = 18, // -5ϵ-2010,2009,2008 + VSB_BMW_WUXI_2 = 19, // -5ϵ-2013,2012,2011 + VSB_BMW_LIUXI_1 = 20, // -6ϵ-δ֪ + VSB_BMW_QIXI_1 = 21, // -7ϵ-2011,2010,2009 + VSB_BMW_QIXI_2 = 22, // -7ϵ-2013 + VSB_BMW_X1_1 = 23, // -X1-2012,2010 + VSB_BMW_X1_2 = 24, // -X1-2014,2013 + VSB_BMW_X3_1 = 25, // -X3-2009,2008,2006 + VSB_BMW_X3_2 = 26, // -X3-2013,2012,2011 + VSB_BMW_X5_1 = 27, // -X5-2010,2009,2008 + VSB_BMW_X5_2 = 28, // -X5-2013,2012,2011 + VSB_BMW_X5_3 = 29, // -X5-2013˶ + VSB_BMW_X6_1 = 30, // -X6-2013,2012,2011,2009,2008 + VSB_BMW_Z4_1 = 31 // -Z4-2004 +}VSB_BMW_CLASS; + +//Ʒ +typedef enum _VSB_HONDA_CLASS +{ + VSB_HONDA_OTHER = 0, // + VSB_HONDA_CRV = 1, // CR-V(˼) + VSB_HONDA_JADE = 2, // ܵ + VSB_HONDA_CIVIC = 3, // ˼ + VSB_HONDA_SPIRIOR = 4, // ˼ + VSB_HONDA_CIIMO = 5, // ˼ + VSB_HONDA_ELYSION = 6, // + VSB_HONDA_OBYSSEY = 7, // + VSB_HONDA_FIT = 8, // ɶ + VSB_HONDA_NEWCITY = 9, // 淶 + VSB_HONDA_CROSSTOUR = 10, // ʫͼ + VSB_HONDA_CRIDER = 11, // + VSB_HONDA_ACCORD = 12, // Ÿ + VSB_HONDA_CITY = 13, // ˼ + VSB_HONDA_ANTILOCK = 14, // µ + VSB_HONDA_CRZ = 15, // CR-Z + VSB_HONDA_CRV_1 = 16, // -CR-V-2004 + VSB_HONDA_CRV_2 = 17, // -CR-V-2005 + VSB_HONDA_CRV_3 = 18, // -CR-V-2008,2007 + VSB_HONDA_CRV_4 = 19, // -CR-V-2010 + VSB_HONDA_CRV_5 = 20, // -CR-V-2013,2012 + VSB_HONDA_CRIDER_1 = 21, // --2014,2013 + VSB_HONDA_OBYSSEY_1 = 22, // -µ-2002 + VSB_HONDA_OBYSSEY_2 = 23, // -µ-2006,2005,2004 + VSB_HONDA_OBYSSEY_3 = 24, // -µ-2008,2007 + VSB_HONDA_OBYSSEY_4 = 25, // -µ-2011 + VSB_HONDA_CIVIC_1 = 26, // -˼-2007 + VSB_HONDA_CIVIC_5 = 27, // -˼-1996 + VSB_HONDA_CIVIC_2 = 28, // -˼-2008,2006 + VSB_HONDA_CIVIC_3 = 29, // -˼-2009 + VSB_HONDA_CIVIC_4 = 30, // -˼-2013,2012,2011 + VSB_HONDA_CITY_1 = 31, // -˼-2008,2007,2006 + VSB_HONDA_SPIRIOR_1 = 32, // -˼-2009 + VSB_HONDA_SIMING_1 = 33, // -˼-2012 + VSB_HONDA_JIEDE_1 = 34, // -ܵ-2013 + VSB_HONDA_CROSSTOUR_1 = 35, // -ʫͼ-2013,2012,2010 + VSB_HONDA_AILISHEN_1 = 36, // --2012 + VSB_HONDA_NEWCITY_1 = 37, // -淶-2009 + VSB_HONDA_NEWCITY_2 = 38, // -淶-2011 + VSB_HONDA_NEWCITY_3 = 39, // -淶-2014,2012 + VSB_HONDA_ACCORD_1 = 40, // -Ÿ-1996 + VSB_HONDA_ACCORD_2 = 41, // -Ÿ-1999 + VSB_HONDA_ACCORD_3 = 42, // -Ÿ-2001 + VSB_HONDA_ACCORD_4 = 43, // -Ÿ-2003 + VSB_HONDA_ACCORD_5 = 44, // -Ÿ-2008 + VSB_HONDA_ACCORD_6 = 45, // -Ÿ-2010 + VSB_HONDA_ACCORD_7 = 46, // -Ÿ-2011 + VSB_HONDA_ACCORD_8 = 47, // -Ÿ-2012 + VSB_HONDA_ACCORD_9 = 48, // -Ÿ-2013 + VSB_HONDA_ACCORD_10 = 49, // -Ÿ-2014 + VSB_HONDA_FIT_1 = 50, // -ɶ-2004 + VSB_HONDA_FIT_2 = 51, // -ɶ-2004 + VSB_HONDA_FIT_3 = 52, // -ɶ-2005 + VSB_HONDA_FIT_4 = 53, // -ɶ-2007 + VSB_HONDA_FIT_5 = 54, // -ɶ-2008 + VSB_HONDA_FIT_6 = 55 // -ɶ-2013,2011 +}VSB_HONDA_CLASS; + +//Ʒ +typedef enum _VSB_PEUGEOT_CLASS +{ + VSB_PEUGEOT_OTHER = 0, // + VSB_PEUGEOT_2008 = 1, // 2008 + VSB_PEUGEOT_207 = 2, // 207 + VSB_PEUGEOT_SENNA = 3, // + VSB_PEUGEOT_3008 = 4, // 3008 + VSB_PEUGEOT_301 = 5, // 301 + VSB_PEUGEOT_307 = 6, // 307 + VSB_PEUGEOT_308 = 7, // 308 + VSB_PEUGEOT_408 = 8, // 408 + VSB_PEUGEOT_508 = 9, // 508 + VSB_PEUGEOT_206 = 10, // 206 + VSB_PEUGEOT_407 = 11, // 407 + VSB_PEUGEOT_206_1 = 12, // -206-δ֪ + VSB_PEUGEOT_207_1 = 13, // -207-2011,2010,2009 + VSB_PEUGEOT_207_2 = 14, // -207-2013 + VSB_PEUGEOT_3008_1 = 15, // -3008-2014,2013 + VSB_PEUGEOT_301_1 = 16, // -301-δ֪ + VSB_PEUGEOT_307_1 = 17, // -307-2007,2006,2005,2004 + VSB_PEUGEOT_307_2 = 18, // -307-2010,2009,2008 + VSB_PEUGEOT_307_3 = 19, // -307-2013_2012_2011CROSS + VSB_PEUGEOT_308_1 = 20, // -308-2014,2013,2012 + VSB_PEUGEOT_407_1 = 21, // -407-δ֪ + VSB_PEUGEOT_408_1 = 22, // -408-2012,2011,2010 + VSB_PEUGEOT_408_2 = 23, // -408-2013 + VSB_PEUGEOT_508_1 = 24, // -508-2014,2013,2012,2011 + VSB_PEUGEOT_207_3 = 25, // -207-2011,2010,2009 + VSB_PEUGEOT_307_4 = 26 // -307-2013,2012,2010,2009,2008 + +}VSB_PEUGEOT_CLASS; + +//Ʒ +typedef enum _VSB_TOYOTA_CLASS +{ + VSB_TOYOTA_OTHER = 0, // + VSB_TOYOTA_HIGHLANDER = 1, // + VSB_TOYOTA_CAMRY = 2, // + VSB_TOYOTA_YARIS = 3, // ʿ + VSB_TOYOTA_YARISL = 4, // YARIS L + VSB_TOYOTA_VERSO = 5, // + VSB_TOYOTA_HUAGUAN = 6, // + VSB_TOYOTA_CROWN = 7, // ʹ + VSB_TOYOTA_COROLLA = 8, // + VSB_TOYOTA_COSTER = 9, // ˹ + VSB_TOYOTA_PRADO = 10, // + VSB_TOYOTA_PRIUS = 11, // ˹ + VSB_TOYOTA_RAV4 = 12, // RAV4 + VSB_TOYOTA_REZI = 13, // ־ + VSB_TOYOTA_VIOS = 14, // + VSB_TOYOTA_PREVIA = 15, // ά + VSB_TOYOTA_HIACE = 16, // ʨ + VSB_TOYOTA_86 = 17, // 86 + VSB_TOYOTA_SPEQUOIA = 18, // ɼ + VSB_TOYOTA_LANDCRUISER = 19, // ½Ѳ(¿·) + VSB_TOYOTA_SIENNA = 20, // + VSB_TOYOTA_CAMRYHYBRID = 21, // -HYBRID + VSB_TOYOTA_GRACE = 22, // ˹ + VSB_TOYOTA_ALPHARD = 23, // + VSB_TOYOTA_RAV4_1 = 24, // -RAV4-2012ֶ,2011,2010,2009 + VSB_TOYOTA_RAV4_2 = 25, // -RAV4-2013 + VSB_TOYOTA_86_1 = 26, // -86-δ֪ + VSB_TOYOTA_JIAMEI_2 = 27, // --2001,2000,1999,1998 + VSB_TOYOTA_JIAMEI_3 = 28, // --2004,2003,2002 + VSB_TOYOTA_LANDEKLZ_1 = 29, // -¿·-2011ж,2010,2007 + VSB_TOYOTA_KAIMEIRUI_1 = 30, // --2008,2007,2006 + VSB_TOYOTA_KAIMEIRUI_2 = 31, // --2012 + VSB_TOYOTA_KAIMEIRUI_3 = 32, // --2012,2011,2010,2009 + VSB_TOYOTA_KAIMEIRUI_4 = 33, // --2013,2012 + VSB_TOYOTA_KAIMEIRUI_5 = 34, // --2013 + VSB_TOYOTA_KAIMEIRUI_6 = 35, // --2014,2012 + VSB_TOYOTA_KALUOLA_1 = 36, // --2010,2009,2008,2007,2006 + VSB_TOYOTA_KALUOLA_2 = 37, // --2013,2012,2011 + VSB_TOYOTA_AIERFA_1 = 38, // --2011,2010 + VSB_TOYOTA_AIERFA_2 = 39, // --2013,2012 + VSB_TOYOTA_WEICHI_1 = 40, // --2004,2003 + VSB_TOYOTA_WEICHI_2 = 41, // --2007,2006,2005 + VSB_TOYOTA_WEICHI_3 = 42, // --2009,2008 + VSB_TOYOTA_WEICHI_4 = 43, // --2013,2012,2011,2010 + VSB_TOYOTA_WEICHI_5 = 44, // --2014 + VSB_TOYOTA_PULADUO_1 = 45, // --2007,2006,2005,2004 + VSB_TOYOTA_PULADUO_2 = 46, // --2010 + VSB_TOYOTA_PULADUO_3 = 47, // --2014 + VSB_TOYOTA_PURUIWEIYA_1 = 48, // -ά-2004 + VSB_TOYOTA_PURUIWEIYA_4 = 49, // -ά-2005 + VSB_TOYOTA_PURUIWEIYA_2 = 50, // -ά-2006 + VSB_TOYOTA_PURUIWEIYA_3 = 51, // -ά-2012,2010,2008,2007 + VSB_TOYOTA_KESIDA_1 = 52, // -˹-2007 + VSB_TOYOTA_KESIDA_2 = 53, // -˹-2011 + VSB_TOYOTA_HANLANDA_1 = 54, // --2011,2009 + VSB_TOYOTA_HANLANDA_2 = 55, // --2012 + VSB_TOYOTA_HANLANDA_3 = 56, // --2013 + VSB_TOYOTA_HAISHI_1 = 57, // -ʨ-2001 + VSB_TOYOTA_HUANGGUAN_1 = 58, // -ʹ-1999 + VSB_TOYOTA_HUANGGUAN_2 = 59, // -ʹ-2009,2008,2007,2006,2005 + VSB_TOYOTA_HUANGGUAN_3 = 60, // -ʹ-2010 + VSB_TOYOTA_HUANGGUAN_4 = 61, // -ʹ-2012,2011 + VSB_TOYOTA_HONGSHAN_1 = 62, // -ɼ-δ֪ + VSB_TOYOTA_HUAGUAN_1 = 63, // --2006,2005,2004 + VSB_TOYOTA_HUAGUAN_2 = 64, // --2009,2008,2007 + VSB_TOYOTA_HUAGUAN_3 = 65, // --2011,2010 + VSB_TOYOTA_YIZHI_1 = 66, // --2014,2012,2011 + VSB_TOYOTA_RUIZHI_1 = 67, // -־-2006,2005 + VSB_TOYOTA_RUIZHI_2 = 68, // -־-2009,2008,2007 + VSB_TOYOTA_RUIZHI_3 = 69, // -־-2010Ȱ + VSB_TOYOTA_RUIZHI_4 = 70, // -־-2012,2010 + VSB_TOYOTA_LUDIXUNYANG_1 = 71, // -½Ѳ-δ֪ + VSB_TOYOTA_YALISHI_1 = 72, // -ʿ-2009,2008,2007 + VSB_TOYOTA_YALISHI_2 = 73, // -ʿ-2012,2011,2010 + VSB_TOYOTA_RAV4_3 = 74, // -RAV4-2013,Ӣ,,2012 + VSB_TOYOTA_YARiSL_1 = 75, // -YARiS-L + VSB_TOYOTA_JIAMEI_1 = 76, // --1996 + VSB_TOYOTA_PLATZ_1 = 77, // -PLATZ-1999 + VSB_TOYOTA_LANDEKLZ_2 = 78 // -¿·-2014,2012ж,2012 +}VSB_TOYOTA_CLASS; + +//Ʒ +typedef enum _VSB_FORD_CLASS +{ + VSB_FORD_OTHER = 0, // + VSB_FORD_FOCUS = 1, // ˹ + VSB_FORD_FIESTA = 2, // 껪 + VSB_FORD_SMAX = 3, // ˹ + VSB_FORD_MONDEO = 4, // ɵŷ + VSB_FORD_ECOSPORT = 5, // + VSB_FORD_ESCAPE = 6, // + VSB_FORD_ZHISHENG = 7, // ʤ + VSB_FORD_ESCORT = 8, // ˹ + VSB_FORD_EXPLORER = 9, // ̽ + VSB_FORD_EDGE = 10, // + VSB_FORD_TRANSIT = 11, // ȫ˳ + VSB_FORD_QUANSHUN_1 = 12, // -ȫ˳-δ֪ + VSB_FORD_JIANIANHUA_1 = 13, // -껪-2006,2005,2004 + VSB_FORD_JIANIANHUA_2 = 14, // -껪-2011,2010,2009 + VSB_FORD_JIANIANHUA_3 = 15, // -껪-2013 + VSB_FORD_JIANIANHUA_4 = 16, // -껪-2012 + VSB_FORD_TANXIANZHE_1 = 17, // -̽-2013,2011 + VSB_FORD_FOCUS_1 = 18, // -˹-2005 + VSB_FORD_FOCUS_2 = 19, // -˹-2005 + VSB_FORD_FOCUS_3 = 20, // -˹-2008,2007,2006 + VSB_FORD_FOCUS_4 = 21, // -˹-2013,2012,2011,2009 + VSB_FORD_FOCUS_5 = 22, // -˹-2012 + VSB_FORD_FOCUS_6 = 23, // -˹-2012,ʱ,2011,2010,2009,2008 + VSB_FORD_YIBO_1 = 24, // --2013 + VSB_FORD_YIHU_1 = 25, // --2013 + VSB_FORD_MENGDIOU_1 = 26, // -ɵŷ-2003 + VSB_FORD_MENGDIOU_2 = 27, // -ɵŷ-2005,2004 + VSB_FORD_MENGDIOU_3 = 28, // -ɵŷ-2006 + VSB_FORD_MENGDIOU_4 = 29, // -ɵŷ-2013 + VSB_FORD_MENGDIOU_5 = 30, // -ɵŷ-ʤ-2010,2008,2007 + VSB_FORD_MENGDIOU_6 = 31, // -ɵŷ-ʤ-2011 + VSB_FORD_RUIJIE_1 = 32, // --2012,2011 + VSB_FORD_MAIKESI_1 = 33 // -˹-2008,2007 +}VSB_FORD_CLASS; + +//ղƷ +typedef enum _VSB_NISSAN_CLASS +{ + VSB_NISSAN_OTHER = 0, // + VSB_NISSAN_XTRAIL = 1, // 濥 + VSB_NISSAN_MURANO = 2, // ¥ + VSB_NISSAN_LIVINA = 3, // + VSB_NISSAN_MARCH = 4, // + VSB_NISSAN_TIIDA = 5, // + VSB_NISSAN_TEANA = 6, // + VSB_NISSAN_QASHQAI = 7, // п + VSB_NISSAN_SYLPHY = 8, // + VSB_NISSAN_SUNNY = 9, // + VSB_NISSAN_D22PICKUP = 10, // D22Ƥ + VSB_NISSAN_D22VAN = 11, // D22ʽ + VSB_NISSAN_CABSTAR = 12, // ˹ + VSB_NISSAN_HV200 = 13, // NV200 + VSB_NISSAN_PALADIN = 14, // + VSB_NISSAN_YIDA = 15, // ô + VSB_NISSAN_DUCK = 16, // + VSB_NISSAN_CEFIRO = 17, // + VSB_NISSAN_FENGSHENBLUEBIRD = 18, // + VSB_NISSAN_FENGSHENSUNNY = 19, // + VSB_NISSAN_SUCCE = 20, // ˧ + VSB_NISSAN_FUGA = 21, // + VSB_NISSAN_BLUEBIRD4 = 22, // 4 + VSB_NISSAN_VENUCIA = 23, // + VSB_NISSAN_QUEST = 24, // ʿ + VSB_NISSAN_GENISS = 25, // + VSB_NISSAN_NV200_1 = 26, // ղ-NV200-2013,2012,2011,2010 + VSB_NISSAN_TIANLAI_1 = 27, // ղ--2005,2004 + VSB_NISSAN_TIANLAI_2 = 28, // ղ--2007,2006 + VSB_NISSAN_TIANLAI_3 = 29, // ղ--2010,2008 + VSB_NISSAN_TIANLAI_4 = 30, // ղ--2012,2011 + VSB_NISSAN_TIANLAI_5 = 31, // ղ--2012ưȫ,2011 + VSB_NISSAN_TIANLAI_6 = 32, // ղ--2014,2013 + VSB_NISSAN_QIJUN_1 = 33, // ղ-濥-2010,2008 + VSB_NISSAN_QIJUN_2 = 34, // ղ-濥-2012,2011 + VSB_NISSAN_PALADING_1 = 35, // ղ--2013,2011,2006,2004 + VSB_NISSAN_LOULAN_1 = 36, // ղ-¥-2013,2011 + VSB_NISSAN_LOULAN_2 = 37, // ղ--2010 + VSB_NISSAN_LANNIAO_1 = 38, // ղ--2002 + VSB_NISSAN_LANNIAO_2 = 39, // ղ--2003 + VSB_NISSAN_LANNIAO_3 = 40, // ղ--2004 + VSB_NISSAN_GUISHI_1 = 41, // ղ-ʿ-2005 + VSB_NISSAN_XUANYI_1 = 42, // ղ--2006 + VSB_NISSAN_XUANYI_2 = 43, // ղ--2012,2009,2007 + VSB_NISSAN_XUANYI_3 = 44, // ղ--2014,2012 + VSB_NISSAN_XIAOKE_1 = 45, // ղ-п-2009,2008 + VSB_NISSAN_XIAOKE_2 = 46, // ղ-п-2013,2012,2011 + VSB_NISSAN_SUNNY_3 = 47, // ղ--2004 + VSB_NISSAN_SUNNY_1 = 48, // ղ--2006,2005 + VSB_NISSAN_SUNNY_2 = 49, // ղ--2012,2011 + VSB_NISSAN_YIDA_1 = 50, // ղ-ô-2008,2006,2005 + VSB_NISSAN_YIDA_2 = 51, // ղ-ô-δ֪ + VSB_NISSAN_FENGDU_1 = 52, // ղ--δ֪ + VSB_NISSAN_FENGYA_1 = 53, // ղ--δ֪ + VSB_NISSAN_LIWEI_1 = 54, // ղ--2008,2007 + VSB_NISSAN_LIWEI_2 = 55, // ղ--2009 + VSB_NISSAN_LIWEI_3 = 56, // ղ--2010 + VSB_NISSAN_LIWEI_4 = 57, // ղ--2011,2010,2008 + VSB_NISSAN_JUNYI_1 = 58, // ղ--2006 + VSB_NISSAN_QIDA_1 = 59, // ղ--2006,2005 + VSB_NISSAN_QIDA_2 = 60, // ղ--2009,2008 + VSB_NISSAN_QIDA_3 = 61, // ղ--2013,2012,2011 + VSB_NISSAN_RUIQI_1 = 62 // ղ-Ƥ-2009 +}VSB_NISSAN_CLASS; + +//µƷ +typedef enum _VSB_AUDI_CLASS +{ + VSB_AUDI_OTHER = 0, // + VSB_AUDI_A3 = 1, // µA3 + VSB_AUDI_A4L = 2, // µA4L + VSB_AUDI_A6L = 3, // µA6L + VSB_AUDI_Q3 = 4, // µQ3 + VSB_AUDI_Q5 = 5, // µQ5 + VSB_AUDI_A1 = 6, // µA1 + VSB_AUDI_A4 = 7, // µA4 + VSB_AUDI_A5 = 8, // µA5 + VSB_AUDI_A6 = 9, // µA6 + VSB_AUDI_A7 = 10, // µA7 + VSB_AUDI_A8L = 11, // µA8L + VSB_AUDI_Q7 = 12, // µQ7 + VSB_AUDI_S5 = 13, // µS5 + VSB_AUDI_TT = 14, // µTT + VSB_AUDI_100 = 15, // µ100 + VSB_AUDI_200 = 16, // µ200 + VSB_AUDI_S7 = 17, // µS7 + VSB_AUDI_S8 = 18, // µS8 + VSB_AUDI_100_1 = 19, // µ-100-δ֪ + VSB_AUDI_200_1 = 20, // µ-200-δ֪ + VSB_AUDI_A1_1 = 21, // µ-A1-2014,2013,2012 + VSB_AUDI_A3_1 = 22, // µ-A3-2013,2010ʰ + VSB_AUDI_A3_2 = 23, // µ-A3-2013,2011,2010 + VSB_AUDI_A4_1 = 24, // µ-A4-2005,2000ڰ + VSB_AUDI_A4_2 = 25, // µ-A4-2007,2006,2004 + VSB_AUDI_A4L_1 = 26, // µ-A4L-2013 + VSB_AUDI_A5_1 = 27, // µ-A5-2011,2010 + VSB_AUDI_A6_1 = 28, // µ-A6-1996,1995,1991 + VSB_AUDI_A6L_1 = 29, // µ-A6L-2008,2007,2006,2005 + VSB_AUDI_A6L_2 = 30, // µ-A6L-2011,2010,2009 + VSB_AUDI_A6L_3 = 31, // µ-A6L-2014,2013,2012 + VSB_AUDI_A7_1 = 32, // µ-A7-2014,2013ȡ,2012,2011 + VSB_AUDI_A8L_1 = 33, // µ-A8L-2006 + VSB_AUDI_A8L_2 = 34, // µ-A8L-2009,2008 + VSB_AUDI_A8L_3 = 35, // µ-A8L-2011 + VSB_AUDI_A8L_4 = 36, // µ-A8L-2013,2012 + VSB_AUDI_Q3_1 = 37, // µ-Q3-2014,2013,2012 + VSB_AUDI_Q5_1 = 38, // µ-Q5-2012,2010˶ + VSB_AUDI_Q5_2 = 39, // µ-Q5-2012,2010ԽҰ + VSB_AUDI_Q5_3 = 40, // µ-Q5-2012ȡ,2011,2010,2009 + VSB_AUDI_Q5_4 = 41, // µ-Q5-2013 + VSB_AUDI_Q7_1 = 42, // µ-Q7-2007 + VSB_AUDI_Q7_2 = 43, // µ-Q7-2014,2013 + VSB_AUDI_S7_1 = 44, // µ-S7-2013 + VSB_AUDI_S8_1 = 45, // µ-S8-2013 + VSB_AUDI_TT_2 = 46, // µ-TT-2010,2008,2007 + VSB_AUDI_TT_3 = 47, // µ-TT-2012,2011 + VSB_AUDI_TT_4 = 48, // µ-TT-2013,2013,2011TTS + VSB_AUDI_TT_1 = 49 // µ-TT-2008TTS +}VSB_AUDI_CLASS; + +//ԴƷ +typedef enum _VSB_MAZDA_CLASS +{ + VSB_MAZDA_OTHER = 0, // + VSB_MAZDA_CX5 = 1, // ԴCX5 + VSB_MAZDA_2 = 2, // Դ2 + VSB_MAZDA_3 = 3, // Դ3 + VSB_MAZDA_6 = 4, // Դ6 + VSB_MAZDA_8 = 5, // Դ8 + VSB_MAZDA_COREWING = 6, // + VSB_MAZDA_CX7 = 7, // ԴCX7 + VSB_MAZDA_X5 = 8, // ԴX5 + VSB_MAZDA_5 = 9, // Դ5 + VSB_MAZDA_PREMACY = 10, // Ͽ + VSB_MAZDA_MPV = 11, // ԴMPV + VSB_MAZDA_CX5_1 = 12, // Դ-CX-5-2014,2013,2012 + VSB_MAZDA_CX7_1 = 13, // Դ-CX-7-2014,2013,2011,2010 + VSB_MAZDA_2_1 = 14, // Դ-Mazda2-2011,2009,2008,2007A + VSB_MAZDA_3_1 = 15, // Դ-Mazda3-2004,2002 + VSB_MAZDA_3_2 = 16, // Դ-Mazda3-2009,2007 + VSB_MAZDA_3_3 = 17, // Դ-Mazda3-2012,2010 + VSB_MAZDA_3_4 = 18, // Դ-Mazda3dz-2013,2012 + VSB_MAZDA_5_1 = 19, // Դ-Mazda5-2010,2008,2007 + VSB_MAZDA_5_2 = 20, // Դ-Mazda5-2013,2012,2011 + VSB_MAZDA_6_2 = 21, // Դ-Mazda6-2006 + VSB_MAZDA_6_3 = 22, // Դ-Mazda6-2007 + VSB_MAZDA_8_1 = 23, // Դ-Mazda8-2013,2011,2010 + VSB_MAZDA_PREMACY_1 = 24, // Դ--2003 + VSB_MAZDA_PREMACY_2 = 25, // Դ--2006,2005,2004 + VSB_MAZDA_COREWING_1 = 26, // Դ--2012,2011,2010,2009 + VSB_MAZDA_COREWING_2 = 27, // Դ--2011,2010 + VSB_MAZDA_COREWING_3 = 28, // Դ--2012 + VSB_MAZDA_2_2 = 29, // Դ-Mazda2()-2011,2010,2008 + VSB_MAZDA_6_1 = 30, // Դ-Mazda6-2004 + VSB_MAZDA_6_4 = 31 // Դ-Mazda6-2014,2013,2012,2011,2010 +}VSB_MAZDA_CLASS; + +//ѩƷ +typedef enum _VSB_CHEVROLET_CLASS +{ + VSB_CHEVROLET_OTHER = 0, // + VSB_CHEVROLET_NEWAVEO = 1, // Ψŷ + VSB_CHEVROLET_EPICA = 2, // + VSB_CHEVROLET_CRUZE = 3, // ³ + VSB_CHEVROLET_CAPTIVA = 4, // + VSB_CHEVROLET_MALIBU = 5, // + VSB_CHEVROLET_SAIL = 6, // ŷ + VSB_CHEVROLET_CAMARO = 7, // + VSB_CHEVROLET_LECHENG = 8, // ֳ + VSB_CHEVROLET_LOVA = 9, // ַ + VSB_CHEVROLET_OLDAVEO = 10, // ֳ-ϿΨŷ + VSB_CHEVROLET_SPARK = 11, // ֳ + VSB_CHEVROLET_SAILSRV = 12, // ŷSRV + VSB_CHEVROLET_LOVA_1 = 13, // ѩ-ַ-2009,2008,2007,2006 + VSB_CHEVROLET_LOVA_2 = 14, // ѩ-ַ-2010 + VSB_CHEVROLET_SPARK_1 = 15, // ѩ-ֳ-2010,2009,2006,2005,2004 + VSB_CHEVROLET_SPARK_2 = 16, // ѩ-ֳ-2010˶ + VSB_CHEVROLET_OLDAVEO_1 = 17, // ѩ-ֳ-2005 + VSB_CHEVROLET_OLDAVEO_2 = 18, // ѩ-ֳ-2010,2009,2008 + VSB_CHEVROLET_EPICA_1 = 19, // ѩ--2005 + VSB_CHEVROLET_EPICA_3 = 20, // ѩ--2012,2011,2010 + VSB_CHEVROLET_EPICA_4 = 21, // ѩ--2012,2011,2010 + VSB_CHEVROLET_EPICA_5 = 22, // ѩ--2013 + VSB_CHEVROLET_NEWAVEO_1 = 23, // ѩ-Ψŷ-2013,2012,2011 + VSB_CHEVROLET_CAPTIVA_1 = 24, // ѩ--2010,2008 + VSB_CHEVROLET_CAPTIVA_2 = 25, // ѩ--2014,2013,2012,2011 + VSB_CHEVROLET_KEMAILUO_1 = 26, // ѩ--2012,2011 + VSB_CHEVROLET_CRUZE_1 = 27, // ѩ-³-2014,2013,2012,2011,2010,2009 + VSB_CHEVROLET_SAIL_1 = 28, // ѩ-ŷ-2005 + VSB_CHEVROLET_SAIL_2 = 29, // ѩ-ŷ-2013,2011,2010 + VSB_CHEVROLET_MALIBU_1 = 30, // ѩ--2014,2013,2012 + VSB_CHEVROLET_EPICA_2 = 31 // ѩ--2009,2008,2007 +}VSB_CHEVROLET_CLASS; + +//ѩƷ +typedef enum _VSB_CITROEN_CLASS +{ + VSB_CITROEN_OTHER = 0, // + VSB_CITROEN_C2 = 1, // ѩC2 + VSB_CITROEN_C4L = 2, // ѩC4L + VSB_CITROEN_C5 = 3, // ѩC5 + VSB_CITROEN_ELYSEE = 4, // + VSB_CITROEN_CQUATRELIANGXIANG = 5, // + VSB_CITROEN_CQUATRESANXIANG = 6, // + VSB_CITROEN_SAEAPICASSO = 7, // -ϼ + VSB_CITROEN_PICASSO = 8, // ϼ + VSB_CITROEN_CTRIOMPHE = 9, // + VSB_CITROEN_XSARA = 10, // + VSB_CITROEN_SHENLONGFUKANG = 11, // + VSB_CITROEN_CHANGANDS = 12, // DS + VSB_CITROEN_C2_1 = 13, // ѩ-C2-2012,2010,2008,2007,2006 + VSB_CITROEN_C4L_1 = 14, // ѩ-C4L-2014,2013 + VSB_CITROEN_C4PICASSO_1 = 15, // ѩ-C4ϼ-2009ʰ + VSB_CITROEN_C5_1 = 16, // ѩ-C5-2012,2011,2010 + VSB_CITROEN_CQUATRESANXIANG_1 = 17, // ѩ--2013,2012 + VSB_CITROEN_CQUATRELIANGXIANG_1 = 18, // ѩ--2011,2010,2009,2008 + VSB_CITROEN_CTRIOMPHE_1 = 19, // ѩ--2010,2009,2008,2006 + VSB_CITROEN_FUKANG_1 = 20, // ѩ--2006,2005,2004,2003,2002 + VSB_CITROEN_ELYSEE_1 = 21, // ѩ--2006,2005,2004,2003,2002 + VSB_CITROEN_ELYSEE_2 = 22, // ѩ--2013,2012,2011,2010,2009,2008,2007 + VSB_CITROEN_SAEAPICASSO_1 = 23 // ѩ--ϼ-2014 +}VSB_CITROEN_CLASS; + +//ִƷ +typedef enum _VSB_HYUNDAI_CLASS +{ + VSB_HYUNDAI_OTHER = 0, // + VSB_HYUNDAI_IX35 = 1, // ִIX35 + VSB_HYUNDAI_LANGDONG = 2, // ʶ + VSB_HYUNDAI_MOINCA = 3, // Ԧ + VSB_HYUNDAI_SHENGDA = 4, // ʤ + VSB_HYUNDAI_VERNA = 5, // + VSB_HYUNDAI_RUIYI = 6, // + VSB_HYUNDAI_SONATAEIGHT = 7, // + VSB_HYUNDAI_TUCSON = 8, // ;ʤ + VSB_HYUNDAI_YUEDONG = 9, // ö + VSB_HYUNDAI_ELANTRA = 10, // + VSB_HYUNDAI_GRANDSANTAFE = 11, // + VSB_HYUNDAI_COUPE = 12, // + VSB_HYUNDAI_MATRIX = 13, // + VSB_HYUNDAI_ACCENT = 14, // + VSB_HYUNDAI_IX30 = 15, // ִIX30 + VSB_HYUNDAI_SONATA = 16, // + VSB_HYUNDAI_REFINE = 17, // ִ + VSB_HYUNDAI_MISTRA = 18, // ͼ + VSB_HYUNDAI_SONATAYUFENG = 19, // - + VSB_HYUNDAI_SANTAFE = 20, // ִʥ + VSB_HYUNDAI_HUIYI = 21, // ڻ + VSB_HYUNDAI_I30_1 = 22, // ִ-i30-2010,2009 + VSB_HYUNDAI_IX35_1 = 23, // ִ-ix35-2012,2011,2010 + VSB_HYUNDAI_YILANTE_1 = 24, // ִ--2006,2005,2004 + VSB_HYUNDAI_YILANTE_2 = 25, // ִ--2007 + VSB_HYUNDAI_YILANTE_3 = 26, // ִ--2011 + VSB_HYUNDAI_SHENGDA_1 = 27, // ִ-ȫʤ-2013,2012 + VSB_HYUNDAI_MINGTU_1 = 28, // ִ-ͼ-2014,2013 + VSB_HYUNDAI_MINGYU_1 = 29, // ִ-Ԧ-2013,2011,2009 + VSB_HYUNDAI_SHENGDAFEI_1 = 30, // ִ-ʥ-δ֪ + VSB_HYUNDAI_YUXIANG_1 = 31, // ִ--2005ʰ + VSB_HYUNDAI_YUXIANG_2 = 32, // ִ--2006,2005 + VSB_HYUNDAI_YUEDONG_1 = 33, // ִ-ö-2010,2009,2008 + VSB_HYUNDAI_YUEDONG_2 = 34, // ִ-ö-2012,2011 + VSB_HYUNDAI_SHENGDA_2 = 35, // ִ-ʤ-2009,2006 + VSB_HYUNDAI_SHENGDA_3 = 36, // ִ-ʤ-2012,2011,2010 + VSB_HYUNDAI_LANGDONG_1 = 37, // ִ-ʶ-2013,2012 + VSB_HYUNDAI_GERUI_1 = 38, // ִ--δ֪ + VSB_HYUNDAI_RUIYI_1 = 39, // ִ--2014 + VSB_HYUNDAI_RUINA_1 = 40, // ִ--2013,2010 + VSB_HYUNDAI_RUINA_2 = 41, // ִ--2014,2013,2011 + VSB_HYUNDAI_RUIFENG_1 = 42, // ִ--δ֪ + VSB_HYUNDAI_SUONATA_1 = 43, // ִ--2008,2007,2006,2004,2003׼ + VSB_HYUNDAI_SUONATA_2 = 44, // ִ--2010,2009,2008,2006,2004 + VSB_HYUNDAI_SOUNATA_3 = 45, // ִ--2011,2010 + VSB_HYUNDAI_WEILAKESI_1 = 46, // ִ-ά˹-2012,2010,2008,2007 + VSB_HYUNDAI_MEIJIA_1 = 47, // ִ--δ֪ + VSB_HYUNDAI_JINKOUHUIYI_1 = 48, // ִ-ڻ-δ֪ + VSB_HYUNDAI_TUSHENG_1 = 49, // ִ-;ʤ-2005 + VSB_HYUNDAI_TUSHENG_2 = 50, // ִ-;ʤ-2011,2009,2008,2006 + VSB_HYUNDAI_TUSHENG_3 = 51, // ִ-;ʤ-2013 + VSB_HYUNDAI_KUPAI_1 = 52, // ִ--δ֪ + VSB_HYUNDAI_YASHENTE_1 = 53, // ִ--2008,2006 + VSB_HYUNDAI_YASHENTE_2 = 54, // ִ--2011 + VSB_HYUNDAI_LINGXIANG_1 = 55, // ִ--2009,2008 + VSB_HYUNDAI_FEISI_1 = 56 // ִ-˼-2011 +}VSB_HYUNDAI_CLASS; + +//Ʒ +typedef enum _VSB_CHERY_CLASS +{ + VSB_CHERY_OTHER = 0, // + VSB_CHERY_A1 = 1, // A1 + VSB_CHERY_A3 = 2, // A3 + VSB_CHERY_EASTAR = 3, // ֮ + VSB_CHERY_FULWIN = 4, // + VSB_CHERY_QQ = 5, // QQ + VSB_CHERY_E5 = 6, // E5 + VSB_CHERY_COWIN = 7, // + VSB_CHERY_TIGGO = 8, // + VSB_CHERY_A5 = 9, // A5 + VSB_CHERY_S16 = 10, // S16 + VSB_CHERY_YOUYA = 11, // + VSB_CHERY_V5 = 12, // V5 + VSB_CHERY_E3 = 13, // E3 + VSB_CHERY_A1_1 = 14, // -A1-2011,2008,2007 + VSB_CHERY_A3LIANGXIANG_1 = 15, // -A3-2012,2010,2009 + VSB_CHERY_A5_1 = 16, // -A5-2009,2007,2006 + VSB_CHERY_QQ_1 = 17, // -QQ-2006,2005,2004 + VSB_CHERY_QQ_2 = 18, // -QQ-2010,2007,2006 + VSB_CHERY_QQ_3 = 19, // -QQ-2012,2011,2010,2009,2007 + VSB_CHERY_QQ_4 = 20, // -QQ-2012˶ + VSB_CHERY_QQ_5 = 21, // -QQ-2013 + VSB_CHERY_DONGFANGZHIZI_1 = 22, // -֮-2005,2004,2003 + VSB_CHERY_DONGFANGZHIZI_2 = 23, // -֮-2007,2006 + VSB_CHERY_DONGFANGZHIZI_3 = 24, // -֮CROSS-2009,2008,2007 + VSB_CHERY_YOUYA_1 = 25, // --δ֪ + VSB_CHERY_E3_1 = 26, // -E3-2013 + VSB_CHERY_E5_1 = 27, // -E5-2014,2012,2011 + VSB_CHERY_QIYUN1_1 = 28, // -1-2010 + VSB_CHERY_QIYUN1_2 = 29, // -1-2012 + VSB_CHERY_QIYUN_1 = 30, // --2004 + VSB_CHERY_QIYUN_2 = 31, // --2009,2008,2007,2006 + VSB_CHERY_QIYUN2_1 = 32, // -2-2012 + VSB_CHERY_QIYUN2_2 = 33, // -2-2012,2010 + VSB_CHERY_QIYUN3_1 = 34, // -3-2010 + VSB_CHERY_RUIHU_1 = 35, // --2007,2006,2005 + VSB_CHERY_RUIHU_2 = 36, // --2009,2007 + VSB_CHERY_RUIHU_3 = 37, // --2012,2011 + VSB_CHERY_RUIHU_4 = 38, // --2013,2012ԶDVVT + VSB_CHERY_RUIHU_5 = 39, // --2013Ӣ,2012Ӣ + VSB_CHERY_FENGYUN2SANXIANG_1 = 40, // -2-2010 + VSB_CHERY_AIRUIZE7_1 = 41 // -7-2014,2013 +}VSB_CHERY_CLASS; + +//Ʒ +typedef enum _VSB_KIA_CLASS +{ + VSB_KIA_OTHER = 0, // + VSB_KIA_K2 = 1, // K2 + VSB_KIA_K3 = 2, // K3 + VSB_KIA_K5 = 3, // K5 + VSB_KIA_RIO = 4, // ŷ + VSB_KIA_CERATO = 5, // ͼ + VSB_KIA_SPORTAGER = 6, // ʨ + VSB_KIA_SOUL = 7, // + VSB_KIA_ZHIPAO = 8, // + VSB_KIA_CARENS = 9, // + VSB_KIA_CARNIVAL = 10, // λ + VSB_KIA_OPTIMA = 11, // Զ + VSB_KIA_OPIRUS = 12, // ŷ˹ + VSB_KIA_MAXIMA = 13, // ǧ + VSB_KIA_FORTE = 14, // + VSB_KIA_SORENTO = 15, // + VSB_KIA_K2_1 = 16, // -K2-2013,2012,2011 + VSB_KIA_K3_1 = 17, // -K3-2012 + VSB_KIA_K5_1 = 18, // -K5-2012,2011 + VSB_KIA_RUIOU_1 = 19, // -RIOŷ-2009,2007 + VSB_KIA_QIANLIMA_1 = 20, // -ǧ-2004 + VSB_KIA_QIANLIMA_2 = 21, // -ǧ-2006,2005 + VSB_KIA_JIAHUA_1 = 22, // -λ-δ֪ + VSB_KIA_XINJIALE_1 = 23, // -¼-2011 + VSB_KIA_ZHIPAO_1 = 24, // --2014,2012,2011,2010 + VSB_KIA_SHIPAO_1 = 25, // -ʨ-2008,2007,2005 + VSB_KIA_SHIPAO_2 = 26, // -ʨ-2011,2009 + VSB_KIA_SHIPAO_3 = 27, // -ʨ-2012 + VSB_KIA_SHIPAO_4 = 28, // -ʨ-2013 + VSB_KIA_FURUIDI_1 = 29, // --2012,2011,2009 + VSB_KIA_FURUIDI_2 = 30, // --2014 + VSB_KIA_XIUER_1 = 31, // --2012,2010 + VSB_KIA_SUOLANTUO_1 = 32, // --2006 + VSB_KIA_SUOLANTUO_2 = 33, // --2012,2010,2009 + VSB_KIA_SAILATU_1 = 34, // -ͼ-2006,2005 + VSB_KIA_SAILATU_2 = 35, // -ͼ-2007 + VSB_KIA_SAILATU_3 = 36, // -ͼ-2012,2010GLS + VSB_KIA_YUANJIAN_1 = 37 // -Զ-δ֪ +}VSB_KIA_CLASS; + +//Ʒ +typedef enum _VSB_BENZ_CLASS +{ + VSB_BENZ_OTHER = 0, // + VSB_BENZ_C = 1, // C + VSB_BENZ_E = 2, // E + VSB_BENZ_GLK = 3, // GLK + VSB_BENZ_WEITING = 4, // -PINYIN + VSB_BENZ_SPRINTER = 5, // + VSB_BENZ_VIANO = 6, // Ψŵ + VSB_BENZ_M = 7, // Mϵ + VSB_BENZ_CLK = 8, // CLKϵ + VSB_BENZ_G = 9, // Gϵ + VSB_BENZ_GL = 10, // GLϵ + VSB_BENZ_R = 11, // Rϵ + VSB_BENZ_S = 12, // Sϵ + VSB_BENZ_A = 13, // Aϵ + VSB_BENZ_SMART = 14, // ˹() + VSB_BENZ_B = 15, // Bϵ + VSB_BENZ_SLK = 16, // SLKϵ + VSB_BENZ_MB100 = 17, // MB100 + VSB_BENZ_VITO = 18, // + VSB_BENZ_CLS = 19, // CLSϵ + VSB_BENZ_SL = 20, // SLϵ + VSB_BENZ_AJI_1 = 21, // -A-2011,2009 + VSB_BENZ_AJI_2 = 22, // -A-2013 + VSB_BENZ_BJI_1 = 23, // -B-2010,2009 + VSB_BENZ_CJI_1 = 24, // -C-2010,2008,2007ʱ + VSB_BENZ_CJI_2 = 25, // -C-2013,2011,CGI + VSB_BENZ_CJI_3 = 26, // -C-2013,2011ʱ + VSB_BENZ_EJI_1 = 27, // -E-2002 + VSB_BENZ_EJI_2 = 28, // -E-2007,2006 + VSB_BENZ_EJI_3 = 29, // -E-2013,2012,2011,2010,2009 + VSB_BENZ_EJI_4 = 30, // -E-2013,2012,2011,2010,2009ʱ + VSB_BENZ_GLKJI_1 = 31, // -GLK-2012,2011 + VSB_BENZ_GLKJI_2 = 32, // -GLK-2012,2011,2008 + VSB_BENZ_GLKJI_3 = 33, // -GLK-2014,2013 + VSB_BENZ_GLJI_1 = 34, // -GL-2011 + VSB_BENZ_GLJI_2 = 35, // -GL-2011,2010 + VSB_BENZ_GLJI_3 = 36, // -GL-2012,2010 + VSB_BENZ_GJI_1 = 37, // -G-2013,2010,2009 + VSB_BENZ_MB100_1 = 38, // -MB100-2000 + VSB_BENZ_MLJI_1 = 39, // -ML-2006,2005 + VSB_BENZ_MLJI_2 = 40, // -ML-2010,2008 + VSB_BENZ_MLJI_3 = 41, // -ML-2014,2012 + VSB_BENZ_RJI_1 = 42, // -R-2006 + VSB_BENZ_RJI_2 = 43, // -R-2007 + VSB_BENZ_RJI_3 = 44, // -R-2014,2011,2010,2009 + VSB_BENZ_SLKJI_2 = 45, // -SLK-2006,2004 + VSB_BENZ_SLKJI_3 = 46, // -SLK-2010,2009 + VSB_BENZ_SLKJI_1 = 47, // -SLK-2011 + VSB_BENZ_SJI_1 = 48, // -S-2004 + VSB_BENZ_SJI_2 = 49, // -S-2009_Hybrid,2008,2006 + VSB_BENZ_SJI_3 = 50, // -S-2009,2008 + VSB_BENZ_SJI_4 = 51, // -S-2012,2011,2010 + VSB_BENZ_LINGTE_1 = 52, // --2013,2012,2011 + VSB_BENZ_WEIYANUO_1 = 53, // -Ψŵ-2010,2006,2004 + VSB_BENZ_WEIYANUO_2 = 54, // -Ψŵ-2014,2013,2012,2011 + VSB_BENZ_WEITING_1 = 55, // --2013,2011,2010 + VSB_BENZ_KECHE_1 = 56 // -ͳ1-A +}VSB_BENZ_CLASS; + +//˹´Ʒ +typedef enum _VSB_SKODA_CLASS +{ + VSB_SKODA_OTHER = 0, // + VSB_SKODA_HAORUI = 1, // + VSB_SKODA_FABIA = 2, // + VSB_SKODA_OCTAVIA = 3, // + VSB_SKODA_SUPERB = 4, // + VSB_SKODA_SPACEBACK = 5, // 꿶 + VSB_SKODA_RAPID = 6, // + VSB_SKODA_YETI = 7, // Ұ + VSB_SKODA_HAORUI_1 = 8, // ˹´--2013,2012,2010,2009 + VSB_SKODA_MINGRUI_1 = 9, // ˹´--2009,2008,2007 + VSB_SKODA_MINGRUI_2 = 10, // ˹´--2014,2013,2012,2011,2010 + VSB_SKODA_MINGRUI_3 = 11, // ˹´-RS-2010 + VSB_SKODA_XINRUI_1 = 12, // ˹´--2013ѡ + VSB_SKODA_JINGRUI_1 = 13, // ˹´--2011,2009,2008 + VSB_SKODA_JINGRUI_2 = 14, // ˹´--2014,2013,2012 + VSB_SKODA_JINGRUI_3 = 15, // ˹´--2014,2013,2012Sport + VSB_SKODA_SUPAI_1 = 16, // ˹´--2013 + VSB_SKODA_YEDI_1 = 17 // ˹´-Ұ-2014,2013 +}VSB_SKODA_CLASS; + +//Ʒ +typedef enum _VSB_DONGFENG_CLASS +{ + VSB_DONGFENG_OTHER = 0, // + VSB_DONGFENG_JOYEARX5 = 1, // X5 + VSB_DONGFENG_LINGZHI = 2, // + VSB_DONGFENG_JOYEARX3 = 3, // X3 + VSB_DONGFENG_JOYEAR = 4, // + VSB_DONGFENG_FENGXINGCM7 = 5, // CM7 + VSB_DONGFENG_YUFENG = 6, // + VSB_DONGFENG_FENGSHENA60 = 7, // A60 + VSB_DONGFENG_FENGSHENS30 = 8, // S30 + VSB_DONGFENG_FENGSHENH30CROSS = 9, // H30-CROSS + VSB_DONGFENG_PICKUP = 10, // Ƥ + VSB_DONGFENG_ZHONGXINGMIANBAOCHE = 11, // + VSB_DONGFENG_XIAOXINGMIANBAOCHE = 12, // С + VSB_DONGFENG_ZHONGXINGVAN = 13, // ͻ + VSB_DONGFENG_QINGXINGXIANGSHIVAN = 14, // ʽ + VSB_DONGFENG_QINGZHONGXINGVAN = 15, // ͨ + VSB_DONGFENG_FENGSHENMERCURY = 16, // ˮ + VSB_DONGFENG_SUCCE = 17, // ˧ + VSB_DONGFENG_ODIN = 18, // ¶ + VSB_DONGFENG_YUMSUN = 19, // + VSB_DONGFENG_RUIQI = 20, // + VSB_DONGFENG_FENGGUANG = 21, // + VBR_DONGFENG_C35_1 = 22, // -C35-2013 + VBR_DONGFENG_K07_1 = 23, // -K07-2008 + VBR_DONGFENG_K07_2 = 24, // -K07-2010,2006 + VBR_DONGFENG_V21_1 = 25, // -V21-2011 + VBR_DONGFENG_JIALONG_1 = 26, // --ػ + VBR_DONGFENG_XKFG_1 = 27, // -С-2013 + VBR_DONGFENG_CV03_1 = 28, // -CV03-2012 + VBR_DONGFENG_KAIPUTE_1 = 29, // --C390 + VBR_DONGFENG_DUOLIKA_1 = 30, // --S2800 + VBR_DONGFENG_DUOLIKA_2 = 31, // --XLп + VBR_DONGFENG_DUOLIKA_3 = 32, // --п + VBR_DONGFENG_TIANJIN_1 = 33, // --4X2ػ + VBR_DONGFENG_TIANJIN_2 = 34, // --A + VBR_DONGFENG_XBW_1 = 35, // -С-Ῠ1 + VBR_DONGFENG_XBW_2 = 36, // -С-Ῠ2 + VBR_DONGFENG_MENGKA_1 = 37, // -ο-Ῠ + VBR_DONGFENG_FURUIKA_1 = 38, // --Ῠ1 + VBR_DONGFENG_RUIQI_1 = 39, // -Ƥ-2013,2010,2009 + VBR_DONGFENG_A60_1 = 40, // -A60-2014,2012 + VBR_DONGFENG_H30_1 = 41, // -H30-Cross-2012,2011 + VBR_DONGFENG_H30_2 = 42, // -H30-Cross-2014,2013 + VBR_DONGFENG_H30_3 = 43, // -H30-2012 + VBR_DONGFENG_JINGYI_1 = 44, // --2014_2012LV,2011 + VBR_DONGFENG_JINGYI_2 = 45, // --2014_2012XL,2011,2010,2009,2008,2007 + VBR_DONGFENG_JINGYI_3 = 46, // -X5-2014,2013 + VBR_DONGFENG_LINGZHI_1 = 47, // --2004 + VBR_DONGFENG_LINGZHI_2 = 48, // --2011,2008,2007 + VBR_DONGFENG_LINGZHI_3 = 49, // --2011Q3׼,2010Q7 + VBR_DONGFENG_LINGZHI_4 = 50, // --2014_2013M3 + VBR_DONGFENG_LINGZHI_5 = 51 // --2014_2013V3,2011M3_ð_ +}VSB_DONGFENG_CLASS; + +//ǵƷ +typedef enum _VSB_BYD_CLASS +{ + VSB_BYD_OTHER = 0, // + VSB_BYD_F0 = 1, // ǵF0 + VSB_BYD_F3 = 2, // ǵF3 + VSB_BYD_F3R = 3, // ǵF3R + VSB_BYD_F6 = 4, // ǵF6 + VSB_BYD_G3 = 5, // ǵG3 + VSB_BYD_G3R = 6, // ǵG3R + VSB_BYD_G6 = 7, // ǵG6 + VSB_BYD_L3 = 8, // ǵL3 + VSB_BYD_M6 = 9, // ǵM6 + VSB_BYD_S6 = 10, // ǵS6 + VSB_BYD_SURUI = 11, // + VSB_BYD_FOLEL = 12, // ش + VSB_BYD_SIRUI = 13, // ˼ + VSB_BYD_MT5 = 14, // ǵMT5() + VSB_BYD_F0_1 = 15, // ǵ-F0-2013,2012,2011,2010,2009,2008 + VSB_BYD_F3R_1 = 16, // ǵ-F3R-2011,2009,2008,2007 + VSB_BYD_F6_1 = 17, // ǵ-F6-2011,2009,2008 + VSB_BYD_G3R_1 = 18, // ǵ-G3R-2011 + VSB_BYD_G6_1 = 19, // ǵ-G6-2013,2012,2011 + VSB_BYD_L3_1 = 20, // ǵ-L3-2013,2012,2011,2010 + VSB_BYD_M6_1 = 21, // ǵ-M6-2013,2011,2010 + VSB_BYD_S6_1 = 22, // ǵ-S6-2014,2013,2012,2011 + VSB_BYD_FULAIER_1 = 23, // ǵ--2005 + VSB_BYD_SURUI_1 = 24 // ǵ--2014,2013,2012 +}VSB_BYD_CLASS; + +//ľƷ +typedef enum _VSB_SUZUKI_CLASS +{ + VSB_SUZUKI_OTHER = 0, // + VSB_SUZUKI_ALTO = 1, // + VSB_SUZUKI_SCROSS = 2, // Ԧ + VSB_SUZUKI_SWIFT = 3, // + VSB_SUZUKI_SX4 = 4, // + VSB_SUZUKI_LINGYANG = 5, // + VSB_SUZUKI_BEIDOUXING = 6, // + VSB_SUZUKI_LIANAA6 = 7, // -A6 + VSB_SUZUKI_LANDY = 8, // ˵ + VSB_SUZUKI_SPLASH = 9, // ϲ + VSB_SUZUKI_GRANDVITARA = 10, // ά + VSB_SUZUKI_JIMNY = 11, // ķ + VSB_SUZUKI_KAZASHI = 12, // + VSB_SUZUKI_LIANA = 13, // + VSB_SUZUKI_LIANA_1 = 14, // ľ--2012,2011,2010,2008,2007,2005 + VSB_SUZUKI_LIANA_2 = 15, // ľ--2013,2012,2011 + VSB_SUZUKI_BEIDOUXING_1 = 16, // ľ--2012,2011,2010,2009,2008,2007,2005,2004׼ + VSB_SUZUKI_BEIDOUXING_2 = 17, // ľ--2013,2012,2011,2010,2009,2008,2007,2005,2004,2003 + VSB_SUZUKI_BEIDOUXING_3 = 18, // ľ--2013,2012,2011,2010,2009,2008,2007,2005,2004,2003 + VSB_SUZUKI_BEIDOUXING_4 = 19, // ľ--2013X5 + VSB_SUZUKI_JIMUNI_1 = 20, // ľ-ķ-2011,2010,2009,2007 + VSB_SUZUKI_JIMUNI_2 = 21, // ľ-ķ-2012 + VSB_SUZUKI_SX4_1 = 22, // ľ-SX4-2008,2006 + VSB_SUZUKI_SX4_2 = 23, // ľ-SX4-2010,2009 + VSB_SUZUKI_SX4_3 = 24, // ľ-SX4-2011A,2009,2008,2007 + VSB_SUZUKI_SX4_4 = 25, // ľ-SX4-2011B + VSB_SUZUKI_SX4_5 = 26, // ľ-SX4-2013,2012,2011 + VSB_SUZUKI_ALTO_1 = 27, // ľ--2006,2001,2000,1999,1993׼ + VSB_SUZUKI_ALTO_2 = 28, // ľ--2006,2004,2001,2000,1999,1993 + VSB_SUZUKI_ALTO_3 = 29, // ľ--2013 + VSB_SUZUKI_ALTO_4 = 30, // ľ--2014,2012,2011,2010,2009 + VSB_SUZUKI_SPLASH_1 = 31, // ľ-ϲ-2013,2012,2011 + VSB_SUZUKI_LANDY_1 = 32, // ľ-˵-2011,2010,2007 + VSB_SUZUKI_LINGYANG_2 = 33, // ľ--2006,2004,2003 + VSB_SUZUKI_LINGYANG_3 = 34, // ľ--2009,2008,2007 + VSB_SUZUKI_LINGYANG_4 = 35, // ľ--2011 + VSB_SUZUKI_LINGYANG_5 = 36, // ľ--2012 + VSB_SUZUKI_GRANDVITARA_1 = 37, // ľ-ά-2011,2008,2007,2006 + VSB_SUZUKI_FENGYU_1 = 38, // ľ-Ԧ-2014 + VSB_SUZUKI_SWIFT_1 = 39, // ľ--2011_1.3L,2009,2008,2007,2005 + VSB_SUZUKI_SWIFT_2 = 40, // ľ--2012,2011 + VSB_SUZUKI_KINGCHANG_1 = 41, // ľ--2004 + VSB_SUZUKI_LINGYANG_1 = 42 // ľ--2002 +}VSB_SUZUKI_CLASS; + +//Ʒ +typedef enum _VSB_SGMW_CLASS +{ + VSB_SGMW_OTHER = 0, // + VSB_SGMW_HONGGUANG = 1, // + VSB_SGMW_HONGGUANGS = 2, // S + VSB_SGMW_ZHIGUANG = 3, // ֮ + VSB_SGMW_RONGGUANGS = 4, // ٹS + VSB_SGMW_RONGGUANG = 5, // ٹ + VSB_SGMW_HONGTU = 6, // ; + VSB_SGMW_XINGWANG = 7, // + VSB_SGMW_YANGGUANG = 8, // + VSB_SGMW_XIAOXUANFENG = 9, // С + VSB_SGMW_WULINGZHIGUANG_1 = 10, // -֮-2010,2009ҵ + VSB_SGMW_WULINGZHIGUANG_2 = 11, // -֮-2010̳, + VSB_SGMW_WULINGZHIGUANG_3 = 12, // -֮-2010,2008ʽ,2007 + VSB_SGMW_XINGWANG_1 = 13, // --2003 + VSB_SGMW_XINGWANG_2 = 14, // --2009׼ + VSB_SGMW_XINGWANG_3 = 15, // --2010,2009,2007,2006,2005,2004 + VSB_SGMW_HONNGUANG_1 = 16, // --2013,2010 + VSB_SGMW_HONNGUANG_2 = 17, // --2014,2013S + VSB_SGMW_XIAOXUANFENG_1 = 18, // -С-2006 + VSB_SGMW_YANGGUANG_1 = 19, // --2006,2005,2004 + VSB_SGMW_YANGGUANG_2 = 20, // --2008,2007 + VSB_SGMW_YANGGUANG_3 = 21, // --2009,2006,2005ֶ׼ + VSB_SGMW_RONGGUANG_1 = 22, // -ٹ-2012,2011,2008 + VSB_SGMW_RONGGUANG_2 = 23, // -ٹ-2012,2011,2008׼ + VSB_SGMW_HONGTU_1 = 24 // -;-2010,2009,2008,2007 +}VSB_SGMW_CLASS; + +//Ʒ +typedef enum _VSB_CHANA_CLASS +{ + VSB_CHANA_OTHER = 0, // + VSB_CHANA_HONOR = 1, // ŷŵ + VSB_CHANA_XINGKA = 2, // ǿ + VSB_CHANA_ZHIXING = 3, // ֮ + VSB_CHANA_PICKUP = 4, // С(Ƥ) + VSB_CHANA_ZHIXING2 = 5, // ֮2 + VSB_CHANA_TAURUS = 6, // ţ + VSB_CHANA_XINGGUANG = 7, // ǹ + VSB_CHANA_BENNI = 8, // + VSB_CHANA_ALSVIN = 9, // + VSB_CHANA_CX20 = 10, // CX20 + VSB_CHANA_CX30 = 11, // CX30 + VSB_CHANA_EADO = 12, // ݶ + VSB_CHANA_ZHIXINGS460 = 13, // ֮S460 + VSB_CHANA_CM8 = 14, // CM8 + VSB_CHANA_XINBAO = 15, // ± + VSB_CHANA_XUNLONG = 16, // ѫ + VSB_CHANA_YUNTONG = 17, // ͨ + VSB_CHANA_LEIMENG = 18, // + VSB_CHANA_XINGYUN = 19, // + VSB_CHANA_OULIWEI = 20, // ŷ + VSB_CHANA_EADOXT = 21, // XT + VSB_CHANA_XINGYUN_1 = 22, // --2004,2003,2000 + VSB_CHANA_OULIWEI_1 = 23, // -ŷ-2013 + VSB_CHANA_YUNTONG_1 = 24, // -ͨ-2004 + VSB_CHANA_TAURUS_1 = 25, // -ţ-2013,2012,2011,2010 + VSB_CHANA_LEIMENG_1 = 26, // --2005,2003 + VSB_CHANA_ZHIXING_1 = 27, // -֮-2010,2009 + VSB_CHANA_ZHIXING_2 = 28, // -֮-2013 + VSB_CHANA_ZHIXING_3 = 29, // -֮2-2009,2008 + VSB_CHANA_ZHIXING_4 = 30, // -֮2-2012 + VSB_CHANA_ZHIXING_5 = 31, // -֮S460-2010,2009 + VSB_CHANA_ZHIXING_6 = 32, // -֮SC6350-2003 + VSB_CHANA_PICKUP_1 = 33, // -΢-2013,2012 + VSB_CHANA_XINGGUANG_1 = 34, // -ǹ4500-2009,2007 + VSB_CHANA_XINGGUANG_2 = 35, // -ǹ4500-2012 + VSB_CHANA_HONOR_1 = 36 // -ŷŵ-2014,2012 +}VSB_CHANA_CLASS; + +//γƷ +typedef enum _VSB_EADO_CLASS +{ + VSB_EADO_OTHER = 0, // + VSB_EADO_CS_1 = 1, // γ-CS35-2014,2013,2012 + VSB_EADO_CX_1 = 2, // γ-CX20-2011 + VSB_EADO_CX_2 = 3, // γ-CX30-2010 + VSB_EADO_BENBEN_1 = 4, // γ--2008,2007,2006 + VSB_EADO_BENBEN_2 = 5, // γ--2008,2007˶ + VSB_EADO_BENBEN_3 = 6, // γ--2010 + VSB_EADO_BENBEN_4 = 7, // γ-MINI-2011,2010 + VSB_EADO_BENBEN_5 = 8, // γ-MINI-2012 + VSB_EADO_YUEXIANG_1 = 9, // γ--2011,2010,2009 + VSB_EADO_YUEXIANG_2 = 10, // γ--2012 + VSB_EADO_YUEXIANG_3 = 11, // γ-V3-2013,2012 + VSB_EADO_YUEXIANG_4 = 12, // γ-V5-2012 + VSB_EADO_YIDONG_1 = 13 // γ-ݶ-2014,2013,2012 +}VSB_EADO_CLASS; + +//Ʒ +typedef enum _VSB_JINBEI_CLASS +{ + VSB_JINBEI_OTHER = 0, // + VSB_JINBEI_GRACE = 1, // 𱭸˹ + VSB_JINBEI_HIACE = 2, // 𱭺ʨ + VSB_JINBEI_HAIXING = 3, // + VSB_JINBEI_BADAO = 4, // 𱭰Ե + VSB_JINBEI_LINGQI = 5, // + VSB_JINBEI_JINQI = 6, // + VSB_JINBEI_LINGCHI = 7, // + VSB_JINBEI_QIYUN = 8, // + VSB_JINBEI_ZHISHANG_1 = 9, // -S30-2014,2013,2012 + VSB_JINBEI_HAIXING_1 = 10, // --2012 + VSB_JINBEI_HAIXING_2 = 11, // --2012A7ػ,2011 + VSB_JINBEI_HIACE_1 = 12, // -ʨ-2008 + VSB_JINBEI_HIACE_2 = 13, // -ʨ-2013,2011,2010 + VSB_JINBEI_HIACE_3 = 14, // -ʨ-2013,2011,2008׼ + VSB_JINBEI_JINDIAN_1 = 15, // --2009 + VSB_JINBEI_GRACE_1 = 16, // -˹MPV-2011,2008,2007 + VSB_JINBEI_GRACE_2 = 17, // -˹MPV-2011,2010,2009,2007׼9 + VSB_JINBEI_BADAO_1 = 18 // -ԵSUV-2011,2008 + +}VSB_JINBEI_CLASS; + +//Ʒ +typedef enum _VSB_GEELY_CLASS +{ + VSB_GEELY_OTHER = 0, // + VSB_GEELY_EC7 = 1, // ۺEC7 + VSB_GEELY_EC8 = 2, // ۺEC8 + VSB_GEELY_SC3 = 3, // SC3 + VSB_GEELY_SC5RV = 4, // SC5-RV + VSB_GEELY_SC6 = 5, // SC6 + VSB_GEELY_JINGYING = 6, // ӥ + VSB_GEELY_JINGGANG = 7, // + VSB_GEELY_SX7 = 8, // SX7 + VSB_GEELY_HAOQING = 9, // + VSB_GEELY_MEIRI = 10, // + VSB_GEELY_YINGLUNSC7 = 11, // ӢSC7 + VSB_GEELY_PANDA = 12, // è + VSB_GEELY_YUANJING = 13, // Զ + VSB_GEELY_ZIYOUJIAN = 14 // ɽ +}VSB_GEELY_CLASS; + +//Ʒ +typedef enum _VSB_MITSUBISHI_CLASS +{ + VSB_MITSUBISHI_OTHER = 0, // + VSB_MITSUBISHI_GALANT = 1, // + VSB_MITSUBISHI_ZINGER = 2, // + VSB_MITSUBISHI_LANCER = 3, // ɪ + VSB_MITSUBISHI_LANCEREX = 4, // + VSB_MITSUBISHI_PAJERO = 5, // + VSB_MITSUBISHI_PAJEROSPORT = 6, // - + VSB_MITSUBISHI_JINGXUANASX = 7, // ASX + VSB_MITSUBISHI_GRANDIS = 8, // + VSB_MITSUBISHI_OUTLANDER = 9, // ŷ + VSB_MITSUBISHI_QINXINGYUEYE = 10, // ԽҰ + VSB_MITSUBISHI_GTO = 11, // GTO + VSB_MITSUBISHI_SOVERAN = 12, // + VSB_MITSUBISHI_LIONVEL = 13, // + VSB_MITSUBISHI_HAFEISIMBO = 14, // + VSB_MITSUBISHI_LANCEREX_1 = 15, // --2012,2011,2010 + VSB_MITSUBISHI_JINGXUAN_1 = 16, // --2012,2011 + VSB_MITSUBISHI_ZINGER_1 = 17, // --2011,2009 + VSB_MITSUBISHI_PAJERO_1 = 18, // --2004 + VSB_MITSUBISHI_PAJERO_2 = 19, // --2004 + VSB_MITSUBISHI_PAJERO_3 = 20, // --2010 + VSB_MITSUBISHI_PAJEROSPORT_1 = 21, // -޾-2011 + VSB_MITSUBISHI_GALANT_1 = 22, // --2009 + VSB_MITSUBISHI_GALANDI_1 = 23, // --2007 + VSB_MITSUBISHI_GALANDI_2 = 24, // --2010 + VSB_MITSUBISHI_OUTLANDER_1 = 25, // -ŷ-2012,2011,2010 + VSB_MITSUBISHI_OUTLANDER_2 = 26, // -ŷ-2013 + VSB_MITSUBISHI_LINGYUE_1 = 27, // --δ֪ + VSB_MITSUBISHI_LANCER_1 = 28 // -ɪ-2010 +}VSB_MITSUBISHI_CLASS; + +//׿˹Ʒ +typedef enum _VSB_LEXUS_CLASS +{ + VSB_LEXUS_OTHER = 0, // + VSB_LEXUS_ES = 1, // ׿˹ES + VSB_LEXUS_CT = 2, // ׿˹CT + VSB_LEXUS_RX = 3, // ׿˹RX + VSB_LEXUS_IS = 4, // ׿˹IS + VSB_LEXUS_LX = 5, // ׿˹LX + VSB_LEXUS_GS = 6, // ׿˹GS + VSB_LEXUS_GX = 7, // ׿˹GX + VSB_LEXUS_LS = 8, // ׿˹LS + VSB_LEXUS_CT_1 = 9, // ׿˹-CT-2013,2012,2011 + VSB_LEXUS_ES_1 = 10, // ׿˹-ES-1994 + VSB_LEXUS_ES_2 = 11, // ׿˹-ES-2010,2009,2006 + VSB_LEXUS_ES_3 = 12, // ׿˹-ES-2013,2012 + VSB_LEXUS_GS_1 = 13, // ׿˹-GS-2011,2010,2009,2008,2005 + VSB_LEXUS_GX_1 = 14, // ׿˹-GX-2012,2010 + VSB_LEXUS_IS_1 = 15, // ׿˹-IS-2011 + VSB_LEXUS_LS_1 = 16, // ׿˹-LS-1994 + VSB_LEXUS_LS_2 = 17, // ׿˹-LS-2005,2004 + VSB_LEXUS_LS_3 = 18, // ׿˹-LS-2009,2007,2006 + VSB_LEXUS_LX_1 = 19, // ׿˹-LX-2013,2012 + VSB_LEXUS_RX_1 = 20, // ׿˹-RX-2011,2010,2009 + VSB_LEXUS_RX_2 = 21, // ׿˹-RX-2013,2012 + VSB_LEXUS_RX_3 = 22 // ׿˹-RX-2007 +}VSB_LEXUS_CLASS; + +//Ʒ +typedef enum _VSB_ROEWE_CLASS +{ + VSB_ROEWE_OTHER = 0, // + VSB_ROEWE_350 = 1, // 350 + VSB_ROEWE_550 = 2, // 550 + VSB_ROEWE_W5 = 3, // W5 + VSB_ROEWE_950 = 4, // 950 + VSB_ROEWE_750 = 5, // 750 + VSB_ROEWE_350_1 = 6, // -350-2011Ѹǰ,2010 + VSB_ROEWE_350_2 = 7, // -350-2014,2013,2012,2011 + VSB_ROEWE_550_1 = 8, // -550-2012,2010,2009,2008 + VSB_ROEWE_750_1 = 9, // -750-2009,2008,2007,2006 + VSB_ROEWE_750_2 = 10, // -750-2012,2011 + VSB_ROEWE_950_1 = 11 // -950-2012 +}VSB_ROEWE_CLASS; + + +//Ʒ +typedef enum _VSB_HAIMA_CLASS +{ + VSB_HAIMA_OTHER = 0, // + VSB_HAIMA_PREMARIN = 1, // + VSB_HAIMA_S7 = 2, // S7 + VSB_HAIMA_PRINCE = 3, // + VSB_HAIMA_CUPID = 4, // 2- + VSB_HAIMA_HATCHBACK = 5, // 3- + VSB_HAIMA_KNIGHT = 6, // ʿ + VSB_HAIMA_HAPPIN = 7, // + VSB_HAIMA_FAMILY = 8, // + VSB_HAIMA_M3 = 9, // M3 + VSB_HAIMA_CUPID_1 = 10, // --2012,2011,2010 + VSB_HAIMA_PREMARIN_1 = 11, // --2007 + VSB_HAIMA_PREMARIN_2 = 12, // --2012,2010 + VSB_HAIMA_HATCHBACK_1 = 13, // --2010,2009 + VSB_HAIMA_HAPPIN_1 = 14, // --2010,2009,2008,2007,2004 + VSB_HAIMA_HAPPIN_2 = 15, // --2012,2011 + VSB_HAIMA_M3_1 = 16, // -3-2010,2008,2007 + VSB_HAIMA_FAMILY_1 = 17, // --2007,2006 + VSB_HAIMA_FAMILY_2 = 18, // --2010,2009,2008 + VSB_HAIMA_FAMILY_3 = 19, // --2011 + VSB_HAIMA_FAMILY_4 = 20, // --2014,2013,2012 + VSB_HAIMA_KNIGHT_1 = 21, // -ʿ-2013_2012A,2011,2010 + VSB_HAIMA_KNIGHT_2 = 22, // -ʿ-2013_2012B + VSB_HAIMA_NEWHONGDA_1 = 23, // ó-º-2009 + VSB_HAIMA_NEWHONDGA_2 = 24, // ó-º-2012 + VSB_HAIMA_PRINCE_1 = 25, // ó--2010 + VSB_HAIMA_RONGDA_1 = 26 // ó-ٴ-2012 + +}VSB_HAIMA_CLASS; + +//Ʒ +typedef enum _VSB_GREATWALL_CLASS +{ + VSB_GREATWALL_OTHER = 0, // + VSB_GREATWALL_SING = 1, // Ӱ + VSB_GREATWALL_SAIJUN = 2, // + VSB_GREATWALL_HAVAL = 3, // + VSB_GREATWALL_SAFE = 4, // + VSB_GREATWALL_SAIKU = 5, // + VSB_GREATWALL_SAILING = 6, // + VSB_GREATWALL_KINGDEER = 7, // ϶ + VSB_GREATWALL_DEER = 8, // ϶ + VSB_GREATWALL_WINGLE = 9, // 翥 + VSB_GREATWALL_COOLBEAR = 10, // + VSB_GREATWALL_LINGAO = 11, // + VSB_GREATWALL_CROSS = 12, // + VSB_GREATWALL_GWPERI = 13, // + VSB_GREATWALL_COWRY = 14, // + VSB_GREATWALL_M4 = 15, // M4 + VSB_GREATWALL_LINGAO_1 = 16, // --2010 + VSB_GREATWALL_HAVAL_1 = 17, // -H3-2010,2009 + VSB_GREATWALL_HAVAL_2 = 18, // -H3-2012,2010,2009 + VSB_GREATWALL_HAVAL_3 = 19, // -H5-2012,2011,2010 + VSB_GREATWALL_HAVAL_4 = 20, // -H5-2012,2011,2010̾ + VSB_GREATWALL_HAVAL_5 = 21, // -H5-2012 + VSB_GREATWALL_HAVAL_6 = 22, // -H5-2014,2013 + VSB_GREATWALL_HAVAL_8 = 23, // -H6-2014,2013 + VSB_GREATWALL_HAVAL_9 = 24, // -M2-2010 + VSB_GREATWALL_HAVAL_10 = 25, // -M2-2013,2012 + VSB_GREATWALL_HAVAL_11 = 26, // -M4-2012 + VSB_GREATWALL_HAVAL_12 = 27, // --2011 + VSB_GREATWALL_CROSS_1 = 28, // --2009,2008 + VSB_GREATWALL_CROSS_2 = 29, // -CROSS-2011,2009 + VSB_GREATWALL_JINGLING_1 = 30, // --δ֪ + VSB_GREATWALL_SING_1 = 31, // -Ӱ-2003 + VSB_GREATWALL_SAIKU_1 = 32, // --2004 + VSB_GREATWALL_SAILING_1 = 33, // --δ֪ + VSB_GREATWALL_DIER_1 = 34, // -϶-δ֪ + VSB_GREATWALL_COOLBEAR_1 = 35, // --2010,2009 + VSB_GREATWALL_KINGDEER_1 = 36, // -϶-2008,2007,2004,2003 + VSB_GREATWALL_GREATWALL_1 = 37, // -C20R-2013,2011 + VSB_GREATWALL_GREATWALL_2 = 38, // -C30-2010 + VSB_GREATWALL_GREATWALL_3 = 39, // -C30-2012 + VSB_GREATWALL_GREATWALL_4 = 40, // -C30-2013 + VSB_GREATWALL_GREATWALL_5 = 41, // -C50-2013,2012 + VSB_GREATWALL_GREATWALL_6 = 42, // -V80-2013,2012,2010,2009,2008 + VSB_GREATWALL_WINGLE_1 = 43, // -翥3-2011,2010,2007,2006 + VSB_GREATWALL_WINGLE_2 = 44, // -翥5-2014,2012,2011,2009 + VSB_GREATWALL_HAVAL_7 = 45 // -H6-2013,2012,2011 +}VSB_GREATWALL_CLASS; + +//Ʒ +typedef enum _VSB_DS_CLASS +{ + VSB_DS_OTHER = 0, // + VSB_DS_KUBO_1 = 1, // -Ძ-2011,2010,2009,2008 + VSB_DS_KUWEI_1 = 2, // --2011,2010,2009 + VSB_DS_KUWEI_2 = 3 // --2013 +}VSB_DS_CLASS; + +//·Ʒ +typedef enum _VSB_LANDROVER_CLASS +{ + VSB_LANDROVER_OTHER = 0, // + VSB_LANDROVER_FAXIAN_1 = 1, // ·--2005,2004 + VSB_LANDROVER_FAXIAN_2 = 2, // ·--2013,2011,2010 + VSB_LANDROVER_LANSHENG_1 = 3, // ·-ʤ-2012,2011,2010 + VSB_LANDROVER_LANSHENG_2 = 4, // ·-ʤ-2014,2013,2012,2011 + VSB_LANDROVER_LANSHENG_3 = 5, // ·-ʤ˶-2013,2012,2011,2010 + VSB_LANDROVER_LANSHENG_4 = 6, // ·-ʤ˶-2013Ԧ + VSB_LANDROVER_SXZ_1 = 7 // ·-2-2014,2013,2011 +}VSB_LANDROVER_CLASS; + +//Ʒ +typedef enum _VSB_MG_CLASS +{ + VSB_MG_OTHER = 0, // + VSB_MG_3SW_1 = 1, // MG-MG-3SW-2009,2008 + VSB_MG_MG3_1 = 2, // MG-MG3-2013,2012,2011 + VSB_MG_MG5_1 = 3, // MG-MG5-2014,2013,2012 + VSB_MG_MG6_1 = 4, // MG-MG6-2012,2011 + VSB_MG_MG7_1 = 5, // MG-MG7-2010,2009,2008,2007 +}VSB_MG_CLASS; + +//һƷ +typedef enum _VSB_FAW_CLASS +{ + VSB_FAW_OTHER = 0, // + VSB_FAW_501_1 = 1, //һ-501-Ῠ + VSB_FAW_N3_1 = 2, //һ-N3+-2006 + VSB_FAW_N3_2 = 3, //һ-N3+-2008 + VSB_FAW_JIABAO_1 = 4, //һ-ѱ-2011T50,T57 + VSB_FAW_JIABAO_2 = 5, //һ-ѱ-2000 + VSB_FAW_JIABAO_3 = 6, //һ-ѱ-2006 + VSB_FAW_JIABAO_4 = 7, //һ-ѱ-2012,2011V50ʰ + VSB_FAW_JIABAO_5 = 8, //һ-ѱ-2012,2011V70 + VSB_FAW_JIABAO_6 = 9, //һ-ѱ-2013,2012,2011V52ʵ + VSB_FAW_JIABAO_7 = 10, //һ-ѱ-2014,2013V80 + VSB_FAW_XIALI_1 = 11, //һ--1999,1997 + VSB_FAW_XIALI_2 = 12, //һ-2000-2003,2002 + VSB_FAW_XIALI_3 = 13, //һ-A+-2011,2010,2006,2005 + VSB_FAW_XIALI_4 = 14, //һ-N3-2012 + VSB_FAW_XIALI_5 = 15, //һ-N5-2014,2013,2011,2010,2009 + VSB_FAW_XIALI_6 = 16, //һ-N7-2013 + VSB_FAW_AOWEI_1 = 17, //һ-J5P-2005,2004,2003 + VSB_FAW_AOWEI_2 = 18, //һ-J5P-4X2ǣ,ж + VSB_FAW_AOWEI_3 = 19, //һ-J5P-4X2ǣ,ж + VSB_FAW_AOWEI_4 = 20, //һ-J5P-6X6ԽҰж + VSB_FAW_AOXING_1 = 21, //һ--2004 + VSB_FAW_WEILE_1 = 22, //һ--2004 + VSB_FAW_WEILE_2 = 23, //һ--2008,2007 + VSB_FAW_WEIZI_1 = 24, //һ--2004 + VSB_FAW_WEIZHI_1 = 25, //һ-־V2-2012ֶCROSS + VSB_FAW_WEIZHI_2 = 26, //һ-־V2-2012ԶCROSS,2010 + VSB_FAW_WEIZHI_3 = 27, //һ-־V5-2013,2012 + VSB_FAW_WEIZHI_4 = 28, //һ-־-2009,2008,2007 + VSB_FAW_WEIZHI_5 = 29, //һ-־-2011 + VSB_FAW_XIAOJIEFANG_1 = 30, //һ-С-90,109Ῠ + VSB_FAW_HANWEI_1 = 31, //һ-J5M-4X4ػ + VSB_FAW_HANWEI_2 = 32, //һ-J5M-6X6ǣ,6X4ж + VSB_FAW_HANWEI_3 = 33, //һ-J5M-8X8ж + VSB_FAW_XINDAWEI_1 = 34, //һ-´-2010 + VSB_FAW_XINHANWEI_1 = 35, //һ-º-2011 + VSB_FAW_SENYA_1 = 36, //һ-ɭM80-2012,2011,2009 + VSB_FAW_TENGWEI_1 = 37, //һ-L5M-ؿ + VSB_FAW_JIEFANG_1 = 38, //һ-J4R-A + VSB_FAW_JIEFANG_2 = 39, //һ-J4R-ж,ǣ + VSB_FAW_JIEFANG_3 = 40, //һ-J6-2004 + VSB_FAW_JIEFANG_4 = 41, //һ-J6-ؿ + VSB_FAW_JIEFANG_5 = 42, //һ-J6L-п + VSB_FAW_JIEFANG_6 = 43, //һ-L5-A + VSB_FAW_SAILONG_1 = 44, //һ--п + VSB_FAW_JUNWEI_1 = 45, //һ-J5K-п + VSB_FAW_B50_1 = 46, //һ-B50-2012,2011,2009 + VSB_FAW_B50_2 = 47 //һ-B50-2013 +}VSB_FAW_CLASS; + + +//Ʒ +typedef enum _VSB_SAICMOTOR_CLASS +{ + VSB_SAICMOTOR_OTHER = 0, // + VSB_HONGYAN_JIESHI_1 = 1, // άº-ʨ-2012 + VSB_DATONG_V80_1 = 2 // ͨ-V80-2014,2013,2012,2011 +}VSB_SAICMOTOR_CLASS; + +//Ʒ +typedef enum _VSB_SOUEAST_CLASS +{ + VSB_SOUEAST_OTHER = 0, // + VSB_SOUEAST_V3_1 = 1, // -V3-2011ֵҸ,2010,2009,2008 + VSB_SOUEAST_V3_2 = 2, // -V3-2012 + VSB_SOUEAST_V3_3 = 3, // -V3-2012콢,2011,2010·ɰ + VSB_SOUEAST_V3_4 = 4, // -V3-2012ɰ + VSB_SOUEAST_V5_1 = 5, // -V5-2014,2013,2012 + VSB_SOUEAST_XIWANG_1 = 6, // -ϣ-2011,2010 + VSB_SOUEAST_DELIKA_1 = 7, // --2003,2002 + VSB_SOUEAST_DELIKA_2 = 8, // --2005 + VSB_SOUEAST_DELIKA_3 = 9, // --2008 + VSB_SOUEAST_DELIKA_4 = 10, // --2009 + VSB_SOUEAST_LINGSHUAI_1 = 11, // -˧-2005,2004GLXi + VSB_SOUEAST_FULIKA_1 = 12, // --2005 + VSB_SOUEAST_FULIKA_2 = 13 // --2007 +}VSB_SOUEAST_CLASS; + + +//Ʒ +typedef enum _VSB_ZTE_CLASS +{ + VSB_ZTE_OTHER = 0, // + VSB_ZTE_WEIHU_1 = 1, // --2012,2010 + VSB_ZTE_WEIHU_2 = 2, // -TUV-2010,2006 + VSB_ZTE_WUXIAN_1 = 3, // --2008 + VSB_ZTE_WUXIAN_2 = 4 // --2012,2011,2010,2009 +}VSB_ZTE_CLASS; + + +//лƷ +typedef enum _VSB_ZHONGHUA_CLASS +{ + VSB_ZHONGHUA_OTHER = 0, // + VSB_ZHONGHUA_H230_1 = 1, // л-H230-2012 + VSB_ZHONGHUA_H320_1 = 2, // л-H320-2012 + VSB_ZHONGHUA_H330_1 = 3, // л-H330-2013 + VSB_ZHONGHUA_H530_1 = 4, // л-H530-2012,2011 + VSB_ZHONGHUA_V5_1 = 5, // л-V5-2012,2011 + VSB_ZHONGHUA_ZUNCHI_1 = 6, // л--2004 + VSB_ZHONGHUA_ZUNCHI_2 = 7, // л--2005,2003 + VSB_ZHONGHUA_KUBAO_1 = 8, // л-ᱦ-2007 + VSB_ZHONGHUA_JUNJIE_1 = 9, // л--2010,2009,2008,2007,2006 + VSB_ZHONGHUA_JUNJIE_2 = 10, // л--2012,2011 + VSB_ZHONGHUA_JUNJIECROSS_1 = 11, // л-cross-2010,2009 + VSB_ZHONGHUA_JUNJIEFRV_1 = 12, // л-FRV-2009,2008 + VSB_ZHONGHUA_JUNJIEFRV_2 = 13, // л-FRV-2010 + VSB_ZHONGHUA_JUNJIEFSV_1 = 14, // л-FSV-2009 + VSB_ZHONGHUA_JUNJIEFSV_2 = 15, // л-FSV-2010 + VSB_ZHONGHUA_JUNJIEFSV_3 = 16 // л-FSV-2011 +}VSB_ZHONGHUA_CLASS; + + +//йƷ +typedef enum _VSB_CNHTC_CLASS +{ + VSB_CNHTC_OTHER = 0, // + VSB_CNHTC_HOKA_2 = 1, // й-HOKA-ǣ,ж + VSB_CNHTC_HOWO_1 = 2, // й-HOWO-A7 + VSB_CNHTC_HOWO_2 = 3, // й-HOWO-T7H + VSB_CNHTC_HOWO_3 = 4, // й-HOWO-Ῠ + VSB_CNHTC_HOWO_4 = 5, // й-HOWOؿ-ǣ + VSB_CNHTC_HOWO_5 = 6, // й-HOWOؿ-жA + VSB_CNHTC_HOWO_6 = 7, // й-HOWOؿ-жB + VSB_CNHTC_HOWO_7 = 8, // й-HOWOؿ-ػA + VSB_CNHTC_HOWO_8 = 9, // й-HOWOؿ-ػC + VSB_CNHTC_SITAIERWANG_1 = 10, // й-˹̫-ǣA,ػ,賵 + VSB_CNHTC_HAOHAN_1 = 11, // й--A + VSB_CNHTC_HAOYUN_1 = 12, // й--ǣB,ػ,ж + VSB_CNHTC_JINWANGZI_1 = 13, // й-ؿ-ǣB + VSB_CNHTC_HOKA_1 = 14 // й-HOKA-H7 +}VSB_CNHTC_CLASS; + +//ͨƷ +typedef enum _VSB_ZHONGTONG_CLASS +{ + VSB_ZHONGTONG_OTHER = 0, // + VSB_ZHONGTONG_KAICHI_1 = 1, // ͨͳ-A-A + VSB_ZHONGTONG_LINGYU_1 = 2, // ͨͳ--A + VSB_ZHONGTONG_LINGXIU_1 = 3, // ͨͳ--A + VSB_ZHONGTONG_LINGHANG_1 = 4, // ͨͳ-캽-A + VSB_ZHONGTONG_SHIJI_1 = 5, // ͨͳ--A + VSB_ZHONGTONG_KAIXUAN_1 = 6, // ͨͳ--A + VSB_ZHONGTONG_LINGYUN_1 = 7, // ͨͳ-A-A + VSB_ZHONGTONG_YANGGUANG_1 = 8 // ͨͳ--A +}VSB_ZHONGTONG_CLASS; + + +//Ʒ +typedef enum _VSB_JIULONG_CLASS +{ + VSB_JIULONG_OTHER = 0, // + VSB_JIULONG_JIULONGA5_1 = 1, // -A5-2011 +}VSB_JIULONG_CLASS; + +//̩Ʒ +typedef enum _VSB_ZOTYE_CLASS +{ + VSB_ZOTYE_OTHER = 0, // + VSB_ZOTYE_2008_2 = 1, // ̩-2008-2011,2010,2008 + VSB_ZOTYE_5008_1 = 2, // ̩-5008-2013,2011,2010,2008 + VSB_ZOTYE_Z300_1 = 3, // ̩-Z300-2013,2012 + VSB_ZOTYE_2008_1 = 4 // ̩-2008-2007 +}VSB_ZOTYE_CLASS; + +//άƷ +typedef enum _VSB_NAVECO_CLASS +{ + VSB_NAVECO_OTHER = 0, // + VSB_NAVECO_Daily_1 = 1, // ά-Daily-2006,2004,2003 + VSB_NAVECO_Power_1 = 2, // ά-Power-Daily + VSB_NAVECO_Turbo_1 = 3, // ά-Turbo-Daily-2014,2012,2011 + VSB_NAVECO_Venice_1 = 4, // ά-Venice-2011,2008 + VSB_NAVECO_BAODI_1 = 5, // ά--2012,2009 + VSB_NAVECO_DEYIHUOCHE_1 = 6, // ά--2011 + VSB_NAVECO_DULING_1 = 7 // ά--2010,2009,2007 +}VSB_NAVECO_CLASS; + +//ʱƷ +typedef enum _VSB_PORSCHE_CLASS +{ + VSB_PORSCHE_OTHER = 0, // + VBR_PORSCHE_PANAMERA_1 = 1, // ʱ-panamera-2013,2012,2010 + VBR_PORSCHE_CAYENNE_1 = 2, // ʱ-Cayenne-2014,2013,2011,2010 +}VSB_PORSCHE_CLASS; + + +//˹Ʒ +typedef enum _VSB_CHRYSLER_CLASS +{ + VSB_CHRYSLER_OTHER = 0, // + VSB_CHRYSLER_300C_1 = 1, // ˹-300C-2007,2006,2004 + VSB_CHRYSLER_PTMANBUZHE_1 = 2, // ˹-PT-2007 +}VSB_CHRYSLER_CLASS; + +//Ʒ +typedef enum _VSB_CADILLAC_CLASS +{ + VSB_CADILLAC_OTHER = 0, // + VSB_CADILLAC_ATS_1 = 1, // -ATS-2014 + VSB_CADILLAC_CTS_1 = 2, // -CTS-2012 + VSB_CADILLAC_CTS_3 = 3, // -CTS-2012Ӣ˶,2011,2010,2009,2008 + VSB_CADILLAC_SLS_1 = 4, // -SLS-2007,2006 + VSB_CADILLAC_SLS_2 = 5, // -SLS-2012,2011,2010 + VSB_CADILLAC_SRX_1 = 6, // -SRX-2012,2011,2010,2009 + VSB_CADILLAC_CTS_2 = 7, // -CTS-2012,2009CTS + VSB_CADILLAC_KAILEIDE_1 = 8 // -׵-2011,2010,2008,2007,2006 +}VSB_CADILLAC_CLASS; + + +//KAMAƷ +typedef enum _VSB_KAMA_CLASS +{ + VSB_KAMA_OTHER = 0, // + VSB_KAMA_QINGKA_2 = 1, // KAMA--ῨD + VSB_KAMA_FULAIKA_1 = 2, // KAMA--ῨA + VSB_KAMA_JINYUNKA_1 = 3, // KAMA-˿-Ῠ + VSB_KAMA_JUNWEIKA_1 = 4, // KAMA--2014,2011 + VSB_KAMA_QINGKA_1 = 5 // KAMA--ῨC +}VSB_KAMA_CLASS; + +//Ʒ +typedef enum _VSB_LIFAN_CLASS +{ + VSB_LIFAN_OTHER = 0, // + VSB_LIFAN_320_1 = 1, // -320-2012,2011,2009 + VSB_LIFAN_520_1 = 2, // -520-2007,2006 + VSB_LIFAN_520_2 = 3, // -520-2013,2011,2010,2008 + VSB_LIFAN_620_1 = 4, // -620-2012,2010,2009,2008 + VSB_LIFAN_X60_1 = 5, // -X60-2013,2012,2011 + VSB_LIFAN_FENGSHUN_1 = 6 // -˳-2011 +}VSB_LIFAN_CLASS; + + +//Ʒ +typedef enum _VSB_BEIJING_CLASS +{ + VSB_BEIJING_OTHER = 0, // + VSB_BEIJING_E_1 = 1, // -Eϵ-2014,2013,2012 +}VSB_BEIJING_CLASS; + +//Ʒ +typedef enum _VSB_BEIBEN_CLASS +{ + VSB_BEIBEN_OTHER = 0, // + VSB_BEIBEN_NG80_1 = 1, // -NG80-ؿA + VSB_BEIBEN_NG80_2 = 2, // -NG80-ؿB + VSB_BEIBEN_NG80_3 = 3, // -NG80-ؿC + VSB_BEIBEN_V3_1 = 4, // -V3-V3H1 + VSB_BEIBEN_V3_2 = 5 // -V3-ؿA +}VSB_BEIBEN_CLASS; + +//ͳƷ +typedef enum _VSB_BEIFANG_CLASS +{ + VSB_BEIFANG_OTHER = 0, // + VSB_BEIFANG_A_1 = 1 // ͳ-ͳ1-A +}VSB_BEIFANG_CLASS; + + +//Ʒ +typedef enum _VSB_BAW_CLASS +{ + VSB_BAW_OTHER = 0, // + VSB_BAW_YUSHENG007_1 = 1, // -ʤ007-2013,2011 + VSB_BAW_QILING_1 = 2, // --A + VSB_BAW_LUBA_1 = 3, // -½-2004 + VSB_BAW_QISHI_1 = 4 // -ʿ-2009,2007 +}VSB_BAW_CLASS; + +//Ʒ +typedef enum _VSB_BQWEIWANG_CLASS +{ + VSB_BQWEIWANG_OTHER = 0, // + VSB_BQWEIWANG_205_1 = 1, // -205-2013 + VSB_BQWEIWANG_306_1 = 2 // -306-2014,2013,2011 +}VSB_BQWEIWANG_CLASS; + + +//Ʒ +typedef enum _VSB_SMA_CLASS +{ + VSB_SMA_OTHER = 0, // + VSB_SMA_HAIYU_1 = 1, // --2007,2005,2004 + VSB_SMA_HAIYU_2 = 2, // --2007MB + VSB_SMA_HAISHANG_1 = 3, // --2008,2005 + VSB_SMA_HAIJING_1 = 5, // --2010,2009 + VSB_SMA_HAIXUN_1 = 4, // -Ѹ-2005,2004쭷 + VSB_SMA_HAIXUN_2 = 6, // -Ѹ-2007,2006 +}VSB_SMA_CLASS; + +//Ʒ +typedef enum _VSB_XINGMA_CLASS +{ + VSB_XINGMA_OTHER = 0, // + VSB_XINGMA_XINGKAIMA_1 = 1 // -ǿ-ǣ1,ػ1 +}VSB_XINGMA_CLASS; + +//˫Ʒ +typedef enum _VSB_SHUANGHUAN_CLASS +{ + VSB_SHUANGHUAN_OTHER = 0, // + VSB_SHUANGHUAN_SCEO_1 = 1, // ˫-SCEO-2011,2009,2006,2005 +}VSB_SHUANGHUAN_CLASS; + +//Ʒ +typedef enum _VSB_JEEP_CLASS +{ + VSB_JEEP_OTHER = 0, // + VSB_JEEP_DAQIENUOJI_1 = 1, // -ŵ()-2014,2013,2012,2011 + VSB_JEEP_DAQIENUOJI_2 = 2, // -ŵ()-2014 + VSB_JEEP_ZHINANZHE_1 = 3, // -ָ-2010,2007 + VSB_JEEP_ZHINANZHE_2 = 4, // -ָ-2014,2013,2012,2011 + VSB_JEEP_MUMAREN_1 = 5, // --2012ʹٻ,2011 + VSB_JEEP_MUMAREN_2 = 6, // --2014,2013,2012,2011,2010,2009,2008 + VSB_JEEP_ZIYOUKE = 7, // -ɿ-2014,2013,2012,2011 +}VSB_JEEP_CLASS; + +//Ʒ +typedef enum _VSB_VENUCIA_CLASS +{ + VSB_VENUCIA_OTHER = 0, // + VSB_VENUCIA_D50_1 = 1 // -D50-2014,2013,2012 +}VSB_VENUCIA_CLASS; + +//Ʒ +typedef enum _VSB_HAFEI_CLASS +{ + VSB_HAFEI_OTHER = 0, // + VSB_HAFEI_XINMINYI_1 = 1, // --2010 + VSB_HAFEI_XINMINYI_2 = 2, // --2012 + VSB_HAFEI_MINYI_1 = 3, // --2006 + VSB_HAFEI_MINYI_2 = 4, // --2008 + VSB_HAFEI_SAIBAO_1 = 5, // --2012 + VSB_HAFEI_SAIMA_1 = 6, // --2002 + VSB_HAFEI_SAIMA_2 = 7, // --2004,2003 + VSB_HAFEI_SAIMA_3 = 8, // --2009 + VSB_HAFEI_LUBAO_1 = 9, // -·-2004 + VSB_HAFEI_LUBAO_2 = 10, // -·-2008,2007 + VSB_HAFEI_LUBAO_3 = 11, // -·-2012 + VSB_HAFEI_LUZUNXIAOBAWANG_1 = 12, // -·С-2011,2010 + VSB_HAFEI_RUIYI_1 = 13, // --2009 + VSB_HAFEI_JUNYI_1 = 14 // --2012,2010 +}VSB_HAFEI_CLASS; + +//ƿŷƷ +typedef enum _VSB_TKING_CLASS +{ + VSB_TKING_OTHER = 0, // + VSB_TKING_OUGUAN_1 = 1, // ƿŷ-ŷ-2011 + VSB_TKING_OUGUAN_2 = 2, // ƿŷ-ŷ-ῨB + VSB_TKING_OUTENG_1 = 3, // ƿŷ-ŷ-ῨA + VSB_TKING_FUXING_1 = 4, // ƿŷ--2006 + VSB_TKING_QINGKAWANG_1 = 5, // ƿŷ-Ῠ-Ῠ + VSB_TKING_AFANDA_1 = 6, // ƿŷ--ؿ + VSB_TKING_JUNQI_1 = 7 // ƿŷ--ؿA +}VSB_TKING_CLASS; + +//Ʒ +typedef enum _VSB_DAEWOO_CLASS +{ + VSB_DAEWOO_OTHER = 0, // + VBR_DAEWOO_6960H3_1 = 1 // -6960H3-A +}VSB_DAEWOO_CLASS; + +//Ʒ +typedef enum _VSB_DAYUN_CLASS +{ + VSB_DAYUN_OTHER = 0, // + VBR_DAYUN_ZHONGKA_1 = 1 // -ؿ-A +}VSB_DAYUN_CLASS; + +//Ʒ +typedef enum _VSB_BESTURN_CLASS +{ + VSB_BESTURN_OTHER = 0, // + VSB_BESTURN_B70_1 = 1, // -B70-2009,2007,2006 + VSB_BESTURN_B70_2 = 2, // -B70-2011 + VSB_BESTURN_B70_3 = 3, // -B70-2011Ӣ,2010 + VSB_BESTURN_B70_4 = 4, // -B70-2012 + VSB_BESTURN_B90_1 = 5, // -B90-2012 + VSB_BESTURN_AOXING_1 = 6 // һ--2004 +}VSB_BESTURN_CLASS; + +//Ʒ +typedef enum _VSB_WEILIN_CLASS +{ + VSB_WEILIN_OTHER = 0, // + VSB_WEILIN_H3_1 = 1, // -H3-2011 + VSB_WEILIN_V5_1 = 2, // -V5-2012,2009 + VSB_WEILIN_X5_1 = 3 // -X5-2012,2011,2010 +}VSB_WEILIN_CLASS; + +//ͨƷ +typedef enum _VSB_YUTONG_CLASS +{ + VSB_YUTONG_OTHER = 0, // + VSB_YUTONG_8XI_1 = 1, // ͨ-8ϵ-2012,2005 + VSB_YUTONG_KECHE_1 = 2, // ͨ-ͳ10-2013,2010 + VSB_YUTONG_KECHE_3 = 3, // ͨ-ͳ2-A + VSB_YUTONG_KECHE_4 = 4, // ͨ-ͳ8-2004 + VSB_YUTONG_KECHE_5 = 5, // ͨ-ͳ9-2014 + VSB_YUTONG_KECHE_2 = 6 // ͨ-ͳ12-A +}VSB_YUTONG_CLASS; + +//Ʒ +typedef enum _VSB_ANKAI_CLASS +{ + VSB_ANKAI_OTHER = 0, // + VSB_ANKAI_KECHE_1 = 1, // -ͳ1-A + VSB_ANKAI_KECHE_2 = 2 // -ͳ3-A +}VSB_ANKAI_CLASS; + +//Ʒ +typedef enum _VSB_BAOJUN_CLASS +{ + VSB_BAOJUN_OTHER = 0, // + VSB_BAOJUN_630_1 = 1 // -630-2014,2013,2012,2011 +}VSB_BAOJUN_CLASS; + +//Ʒ +typedef enum _VSB_BINLI_CLASS +{ + VSB_BINLI_OTHER = 0, // + VSB_BINLI_OULU_1 = 1 // -ŷ½-2009,2008 +}VSB_BINLI_CLASS; + +//Ʒ +typedef enum _VSB_TRUMPCHE_CLASS +{ + VSB_TRUMPCHE_OTHER = 0, // + VSB_TRUMPCHE_GA5_1 = 1, // -GA5-2012,2011 + VSB_TRUMPCHE_GA5_2 = 3, // -GA5-2013,2012ԶӢ + VSB_TRUMPCHE_GS5_1 = 2 // -GS5-2014,2013,2012 +}VSB_TRUMPCHE_CLASS; + +// Ʒ +typedef enum _VSB_GONOW_CLASS +{ + VSB_GONOW_OTHER = 0, // + VSB_GONOW_G3_1 = 1, // -G3-2011 + VSB_GONOW_G5_1 = 2, // -G5-2012,2011 + VSB_GONOW_SHUAIJIAN_1 = 4, // -˧-2012,2009 + VSB_GONOW_XINGWANGM1_1 = 3, // -M1-2012 + VSB_GONOW_CAIYUN500_1 = 5 // -500-2010 +}VSB_GONOW_CLASS; + +//Ʒ +typedef enum _VSB_ISUZU_CLASS +{ + VSB_ISUZU_OTHER = 0, // + VSB_ISUZU_ZHONGXINGSHANGYONG_1 = 1, // -ó-2011 + VSB_ISUZU_WUSHILINGPIKA_1 = 2, // -ʮƤ-2009 + VSB_ISUZU_WUSHILINGPIKA_2 = 3, // -ʮƤ-2014,2009 + VSB_ISUZU_JINGJIZHE_1 = 4 // --2004,2002 +}VSB_ISUZU_CLASS; + + +//Ʒ +typedef enum _VSB_KARRY_CLASS +{ + VSB_KARRY_OTHER = 0, // + VSB_KARRY_YOU_2 = 1, // --2013,2012 + VSB_KARRY_YOUJIN_1 = 2, // -ž-2012,2011,2010 + VSB_KARRY_YOUSHENG_1 = 3, // -ʤ-2010 + VSB_KARRY_YOUSHENG_2 = 4, // -ʤ-2012,2011 + VSB_KARRY_YOUYA = 5, // --2012,2011,2007 + VSB_KARRY_YOU_1 = 6 // --2011,2010,2009 +}VSB_KARRY_CLASS; + +//ݱƷ +typedef enum _VSB_GAGUAR_CLASS +{ + VSB_GAGUAR_OTHER = 0, // + VSB_GAGUAR_XF_1 = 1, // ݱ-XF-2014,2013 + VSB_GAGUAR_XJ_1 = 2 // ݱ-XJ-2014,2013,2012,2011,2010 +}VSB_GAGUAR_CLASS; + +//˹³Ʒ +typedef enum _VSB_SUBARU_CLASS +{ + VSB_SUBARU_OTHER = 0, // + VSB_SUBARU_AOHU_1 = 1, // ˹³--2012,2011,2010 + VSB_SUBARU_LISHI_1 = 2, // ˹³-ʨγ-2008,2006 + VSB_SUBARU_LISHI_2 = 3, // ˹³-ʨγ-2011,2010 + VSB_SUBARU_XV_1 = 4, // ˹³-˹³XV-2014,2012 + VSB_SUBARU_SENLINREN_1 = 5, // ˹³-ɭ-2007,2006 + VSB_SUBARU_SENLINREN_2 = 6 // ˹³-ɭ-2012,2011,2010,2009,2008 +}VSB_SUBARU_CLASS; + +//ʱƷ +typedef enum _VSB_ERA_CLASS +{ + VSB_ERA_OTHER = 0, // + VSB_ERA_XIAOKA_1 = 1, // ʱ-С֮-С֮1,2,Q2 + VSB_ERA_XIAOKA_3 = 2, // ʱ-С֮-С֮5 + VSB_ERA_XIAOKA_4 = 3, // ʱ-С֮- + VSB_ERA_KANGRUI_1 = 4, // ʱ--H1 + VSB_ERA_KANGRUI_2 = 5, // ʱ--H3 + VSB_ERA_KANGRUI_3 = 6, // ʱ--K1,KQ1 + VSB_ERA_RUIWO_1 = 7, // ʱ--RC1 + VSB_ERA_RUIWO_2 = 8, // ʱ--RC2 + VSB_ERA_RUIWO_3 = 9, // ʱ--IIῨA + VSB_ERA_JINGANG = 10, // ʱ--568 + VSB_ERA_LINGHANG_1 = 11, // ʱ-캽-캽2 + VSB_ERA_LINGHANG_2 = 12, // ʱ-캽-캽3 + VSB_ERA_YULING_1 = 13, // ʱ-Ԧ-ԦV1 + VSB_ERA_YULING_2 = 14, // ʱ-Ԧ-ԦV5,VQ5 + VSB_ERA_YULING_3 = 15, // ʱ-Ԧ-ԦVQ1,VQ2 + VSB_ERA_YULING_4 = 17, // ʱ-Ԧ- + VSB_ERA_XIAOKA_2 = 17, // ʱ-С֮-С֮3 +}VSB_ERA_CLASS; + +//Ʒ +typedef enum _VSB_CHANGHE_CLASS +{ + VSB_CHANGHE_OTHER = 0, // + VSB_CHANGHE_CH6321_1 = 1, // -CH6321-2000 + VSB_CHANGHE_DANSHUANGPAI_1 = 2, // -µ˫-1999 + VSB_CHANGHE_AIDIER_1 = 3, // -϶-2004 + VSB_CHANGHE_AIDIER_2 = 4, // -϶-2007,2006 + VSB_CHANGHE_FURUIDA_1 = 5 // --2014,2013,2011,2009 +}VSB_CHANGHE_CLASS; + +//ŷƷ +typedef enum _VSB_OPEL_CLASS +{ + VSB_OPEL_OTHER = 0, // + VSB_OPEL_YATE_1 = 1 // ŷ--2010GTCȫ絲,2007,2006 +}VSB_OPEL_CLASS; + +//ԴƷ +typedef enum _VSB_JONWAY_CLASS +{ + VSB_JONWAY_OTHER = 0, // + VSB_JONWAY_A380_1 = 1 // Դ-A380-2010,2009,2008 +}VSB_JONWAY_CLASS; + +//Ʒ +typedef enum _VSB_JIANGNAN_CLASS +{ + VSB_JIANGNAN_OTHER = 0, // + VSB_JIANGNAN_TT_1 = 1 // -TT-2011,2010,2004 +}VSB_JIANGNAN_CLASS; + +//ȫӥƷ +typedef enum _VSB_GLEAGLE_CLASS +{ + VSB_GLEAGLE_OTHER = 0, // + VSB_GLEAGLE_EAGLE_GC7_1 = 1, // ȫӥ-GC7-2013,2012 + VSB_GLEAGLE_EAGLE_GX2_1 = 2, // ȫӥ-GX2-2012,2011 + VSB_GLEAGLE_EAGLE_GX7_1 = 3, // ȫӥ-GX7-2013,2012 + VSB_GLEAGLE_EAGLE_PANDA_1 = 4, // ȫӥ-è-2013,2011,2010,2009 + VSB_GLEAGLE_EAGLE_ZIYOUJIAN_1 = 5, // ȫӥ-ɽ-2009±׼,2007 + VSB_GLEAGLE_EAGLE_ZIYOUJIAN_2 = 6, // ȫӥ-ɽ-2010,2009,2008,2006,2005 + VSB_GLEAGLE_EAGLE_ZIYOUJIAN_3 = 7, // ȫӥ-ɽ-2012,2011 + VSB_GLEAGLE_EAGLE_YUANJING_1 = 8, // ȫӥ-Զ-2011,2010,2009,2008,2006 + VSB_GLEAGLE_EAGLE_YUANJING_2 = 9, // ȫӥ-Զ-2013,2012 +}VSB_GLEAGLE_CLASS; + +//ۺƷ +typedef enum _VSB_EMGRAND_CLASS +{ + VSB_EMGRAND_OTHER = 0, // + VSB_EMGRAND_EC7_2 = 1, // ۺ-EC7-2013 + VSB_EMGRAND_EC7_3 = 2, // ۺ-EC7-RV + VSB_EMGRAND_EC8_1 = 3, // ۺ-EC8-2013,2011,2010 + VSB_EMGRAND_EC7_1 = 4 // ۺ-EC7-2012,2010,2009 +}VSB_EMGRAND_CLASS; + + +//ӢƷ +typedef enum _VSB_ENGLON_CLASS +{ + VSB_ENGLON_OTHER = 0, // + VSB_ENGLON_SC3_1 = 1, // Ӣ-SC3-2012 + VSB_ENGLON_SC5_1 = 2, // Ӣ-SC5-RV-2012 + VSB_ENGLON_SC6_1 = 3, // Ӣ-SC6-2012 + VSB_ENGLON_SC7_1 = 4, // Ӣ-SC7-2013,2012,2011,2010 + VSB_ENGLON_SX7_1 = 5, // Ӣ-SX7-2014,2013 + VSB_ENGLON_JINGANG_1 = 6, // Ӣ--2010,2007,2006 + VSB_ENGLON_JINYING_1 = 7 // Ӣ-ӥ-2011,2010,2008 +}VSB_ENGLON_CLASS; + + +//-Ʒ +typedef enum _VSB_JAC_CLASS +{ + VSB_JAC_OTHER = 0, // + VSB_JAC_TONGYUE_1 = 1, // -ͬ-2012,2010,2008 + VSB_JAC_HEYUE_1 = 2, // --2012,2011,2010 + VSB_JAC_HEYUEA30_2 = 3, // -A30-2013 + VSB_JAC_HEYUERS_3 = 4, // -RS-2012,2011 + VSB_JAC_HAOYUN_1 = 5, // --Ῠ1 + VSB_JAC_WEILING_2 = 6, // --ŰῨ + VSB_JAC_WEILING_3 = 7, // --ػ + VSB_JAC_WEILING_4 = 8, // --Ῠ + VSB_JAC_KECHE_1 = 9, // -ͳ-A + VSB_JAC_BINYUE_1 = 10, // --2010,2008 + VSB_JAC_SHUAILING_2 = 11, // -˧-Ῠ + VSB_JAC_KANGLING_1 = 12, // --Ῠ1 + VSB_JAC_KANGLING_2 = 13, // --Ῠ2 + VSB_JAC_YUEYUE_1 = 14, // --2013,2012,2011,2010 + VSB_JAC_XINGRUI_1 = 15, // --2012,2011 + VSB_JAC_GEERFA_H_1 = 16, // -H-ػ + VSB_JAC_GEERFA_K_2 = 17, // -K-ؿ1 + VSB_JAC_GEERFA_K_3 = 18, // -K-ؿ2 + VSB_JAC_GEERFA_M_4 = 19, // -M-ػ + VSB_JAC_RUIFENG_1 = 20, // --2011,2009,2007ֶ + VSB_JAC_RUIFENG_2 = 21, // --2013,2012,2011,2010,2007,2005 + VSB_JAC_RUIFENG_3 = 22, // -M5-2012,2011 + VSB_JAC_RUIFENG_4 = 23, // -S5-2013 + VSB_JAC_RUIYING_1 = 24, // -ӥ-2009,2007 + VSB_JAC_RUIYING_2 = 25, // -ӥ-2013,2012,2011 + VSB_JAC_JUNLING_2 = 26, // --խ, + VSB_JAC_WEILING_1 = 27, // --ʽῨ + VSB_JAC_SHUAILING_1 = 28, // -˧-ʮ + VSB_JAC_RUILING_1 = 29, // --2012 + VSB_JAC_JUNLING_1 = 30 // --콢 +}VSB_JAC_CLASS; + + +//Ʒ +typedef enum _VSB_JMC_CLASS +{ + VSB_JMC_OTHER = 0, // + VSB_JMC_KAIYUN_1 = 1, // --102,109Ῠ + VSB_JMC_KAIYUN_2 = 2, // --95Ῠ + VSB_JMC_YUHU_1 = 3, // --2012 + VSB_JMC_BAODIAN_1 = 4, // --2007 + VSB_JMC_BAODIAN_2 = 5, // --2009׼,2008 + VSB_JMC_BAODIAN_3 = 6, // --2014,2012,2009 + VSB_JMC_BAOWEI_1 = 7, // --2005 + VSB_JMC_BAOWEI_2 = 8, // --2009 + VSB_JMC_QUANSHUN_1 = 9, // -ȫ˳-2010,2008 + VSB_JMC_QUANSHUN_2 = 10, // -ȫ˳-2006 + VSB_JMC_QUANSHUN_3 = 11, // -ȫ˳-2013,2011,2010 + VSB_JMC_SHUNDA_1 = 12, // -˳-2004,2003 + VSB_JMC_SHUNDA_2 = 13, // -˳-2011,2010,2008 + VSB_JMC_YUSHENG_1 = 14, // -Ԧʤ-2013 + VSB_JMC_YUSHENG_2 = 15 // -Ԧʤ-2013ֶװ,2012,2011 +}VSB_JMC_CLASS; + +// ֶƷ +typedef enum _VSB_VOLVO_CLASS +{ + VSB_VOLVO_OTHER = 0, // + VSB_VOLVO_C30_1 = 1, // ֶ-C30-2013,2012,2011,2010 + VSB_VOLVO_S40_1 = 2, // ֶ-S40-2012,2011,2010,2009,2008,2007 + VSB_VOLVO_S60_1 = 3, // ֶ-S60-2003 + VSB_VOLVO_S60_2 = 4, // ֶ-S60-2013,2012,2011 + VSB_VOLVO_S80L_1 = 5, // ֶ-S80L-2012,2011,2010,2009 + VSB_VOLVO_XC60_1 = 6, // ֶ-XC60-2013,2012,2011,2010,2009 + VSB_VOLVO_XC90_1 = 7 // ֶ-XC90-2013,2012,2011,2008 +}VSB_VOLVO_CLASS; + +// Ʒ +typedef enum _VSB_HIGER_CLASS +{ + VSB_HIGER_OTHER = 0, // + VSB_HIGER_H8_1 = 1, // -H8-A + VSB_HIGER_H92_1 = 2, // -H92-A + VSB_HIGER_V7_1 = 3, // -V7,V8-2006 + VSB_HIGER_KECHE_1 = 4, // -ͳ5-A + VSB_HIGER_LONGWEI_1 = 5, // --2012,2011 + VSB_HIGER_H7V_1 = 6 // -H7V-2010 +}VSB_HIGER_CLASS; + +// Ʒ +typedef enum _VSB_RUILIN_CLASS +{ + VSB_RUILIN_OTHER = 0, // + VSB_RUILIN_G3_1 = 1, // -G3-2012,2010 + VSB_RUILIN_G5_1 = 2, // -G5-2012,2011,2010 + VSB_RUILIN_M1_1 = 3, // -M1-2013,2011,2010,2009 + VSB_RUILIN_X1_1 = 4, // -X1-2012A,2011,2010 + VSB_RUILIN_X1_2 = 5 // -X1-2012B +}VSB_RUILIN_CLASS; + +// Ʒ +typedef enum _VSB_SHENLONG_CLASS +{ + VSB_SHENLON_OTHER = 0, // + VSB_SHENLONG_KECHE_1 = 1 //ͳ-ͳ4-A +}VSB_SHENLONG_CLASS; + +// Ʒ +typedef enum _VSB_FOTON_CLASS +{ + VSB_FOTON_OTHER = 0, // + VSB_FOTON_AOLING_1 = 1, // --п + VSB_FOTON_AOLING_2 = 2, // --ʽ + VSB_FOTON_AOLING_3 = 3, // --TX,CTX + VSB_FOTON_OUMAN_1 = 4, // -ŷ-GTL6ϵB + VSB_FOTON_OUMAN_2 = 5, // -ŷ-TX6ϵ,9ϵ + VSB_FOTON_OUMAN_3 = 6, // -ŷ-ŷؿ1 + VSB_FOTON_OUMAN_4 = 7, // -ŷ-ʨ6ϵ,9ϵ + VSB_FOTON_OUHUI_1 = 8, // -ŷԿͳ-D + VSB_FOTON_OUMAKE_1 = 9, // -ŷ-3ϵ + VSB_FOTON_OUMAKE_2 = 10, // -ŷ-5ϵ + VSB_FOTON_SAPU_1 = 11, // --2011 + VSB_FOTON_SAPU_3 = 12, // --2011͹ + VSB_FOTON_MENGPAIKE_1 = 13, // -ɿ-2013 + VSB_FOTON_MIDI_1 = 14, // -Ե-2011,2009 + VSB_FOTON_FENGJING_1 = 15, // -羰ϵ-2012,2011,2009 + VSB_FOTON_SAPU_2 = 16 // --2011Z7 +}VSB_FOTON_CLASS; + +//Ʒ +typedef enum _VSB_FODAY_CLASS +{ + VSB_FODAY_OTHER = 0, // + VSB_FODAY_CHAOREN_1 = 1, // -СƤ-2009,2006 + VSB_FODAY_CHAOREN_2 = 2, // -СƤ-2011 + VSB_FODAY_TANSUOZHE_1 = 3, // -̽6-2013,2011,2010 + VSB_FODAY_TANSUOZHE_2 = 4, // -̽ߢ-2011,2010,2009 + VSB_FODAY_TANSUOZHE_3 = 5, // -̽ߢ-2011,2004 + VSB_FODAY_XIONGSHI_1 = 6 // -ʨF16Ƥ-2012 +}VSB_FODAY_CLASS; + +// Ʒ +typedef enum _VSB_HONGQI_CLASS +{ + VSB_HONGQI_OTHER = 0, // + VSB_HONGQI_MINGSHI_1 = 1 // --2007,2003,2001,2000,1999 +}VSB_HONGQI_CLASS; + + +// ǽ Ʒ +typedef enum _VSB_LUXGEN_CLASS +{ + VSB_LUXGEN_OTHER = 0, // + VSB_LUXGEN_DASEVEN_1 = 1 // ǽ-7-SUV +}VSB_LUXGEN_CLASS; + +// Ʒ +typedef enum _VSB_XIALI_CLASS +{ + VSB_XIALI_OTHER = 0, // + VSB_XIALI_QIBING_1 = 1, // ()--2010 +}VSB_XIALI_CLASS; + +// ۿͳƷ +typedef enum _VSB_SHUCHI_CLASS +{ + VSB_SHUCHI_OTHER = 0, // + VSB_SHUCHI_A_1 = 1 // ۿͳ-ͳ-A +}VSB_SHUCHI_CLASS; + +//ӢƷ +typedef enum _VSB_INFINITI_CLASS +{ + VSB_INFINITI_OTHER = 0, // + VSB_INFINITI_EX_1 = 1, // Ӣ-EX-2013,2011,2010,2009,2008 + VSB_INFINITI_FX_1 = 2, // Ӣ-FX-2007 + VSB_INFINITI_FX_2 = 3, // Ӣ-FX-2011,2010,2009 + VSB_INFINITI_FX_3 = 4, // Ӣ-FX-2013,2012FX35 + VSB_INFINITI_G_1 = 5, // Ӣ-G-2013,2010 + VSB_INFINITI_JX_1 = 6 // Ӣ-JX-2013,2011 +}VSB_INFINITI_CLASS; + + +// Ʒ +typedef enum _VSB_LOTUS_CLASS +{ + VSB_LOTUS_OTHER = 0, // + VSB_LOTUS_L3_1 = 1, // -L3-2010,2009 + VSB_LOTUS_L3_2 = 2 // -L5-2012,2011 +}VSB_LOTUS_CLASS; + +//Ʒ +typedef enum _VSB_FIAT_CLASS +{ + VSB_FIAT_OTHER = 0, // + VSB_FIAT_FEIYUE_1 = 1 // -Ծ-2014,2013,2012 +}VSB_FIAT_CLASS; + +//کƷ +typedef enum _VSB_OGA_CLASS +{ + VSB_OGA_OTHER = 0, // + VSB_OGA_MDX_1 = 1, // ک-MDX-2010 + VSB_OGA_MDX_2 = 2 // ک-MDX-2011 +}VSB_OGA_CLASS; + + + +// ԾƷ +typedef enum _VSB_YUEJIN_CLASS +{ + VSB_YUEJIN_OTHER = 0, // + VSB_YUEJIN_SHUAIHU_1 = 1, // Ծ-˧-H100,H300 + VSB_YUEJIN_CAISHEN_1 = 2, // Ծ--S100 + VSB_YUEJIN_CAISHEN_2 = 3, // Ծ--S300 + VSB_YUEJIN_CAISHEN_3 = 4 // Ծ--S500 +}VSB_YUEJIN_CLASS; + +//ҰƷ +typedef enum _VSB_YEMA_CLASS +{ + VSB_YEMA_OTHER = 0, // + VSB_YEMA_F99_1 = 1 // Ұ-F99-2012,2011,2010,2009 +}VSB_YEMA_CLASS; + +//Ʒ +typedef enum _VSB_SZKINGLONG_CLASS +{ + VSB_SZKINGLONG_OTHER = 0, // + VSB_SZKINGLONG_BUS11_1 = 1, // -ͳ11-A + VSB_SZKINGLONG_BUS12_1 = 2, // -ͳ12-A + VSB_SZKINGLONG_BUS13_1 = 3, // -ͳ13-A + VSB_SZKINGLONG_BUS14_1 = 4, // -ͳ14-A + VSB_SZKINGLONG_BUS16_1 = 5, // -ͳ16-A + VSB_SZKINGLONG_BUS18_1 = 6, // -ͳ18-A + VSB_SZKINGLONG_BUS1_1 = 7, // -ͳ1-A + VSB_SZKINGLONG_BUS20_1 = 8, // -ͳ20-A + VSB_SZKINGLONG_BUS2_1 = 9, // -ͳ2-A + VSB_SZKINGLONG_BUS5_1 = 10, // -ͳ5-A + VSB_SZKINGLONG_BUS6_1 = 11, // -ͳ6-A + VSB_SZKINGLONG_BUS9_1 = 12, // -ͳ9-A + VSB_SZKINGLONG_BUS10_1 = 13, // -ͳ10-A + VSB_SZKINGLONG_BUS15_1 = 14 // -ͳ15-A +}VSB_SZKINGLONG_CLASS; + +//ԱƷ +typedef enum _VSB_CHANGFENG_CLASS +{ + VSB_CHANGFENG_OTHER = 0, // + VSB_CHANGFENG_CS7_1 = 1, // Ա-CS7-2009 + VSB_CHANGFENG_QIBING_1 = 2, // Ա--2010,2009 + VSB_CHANGFENG_LIEBAO_1 = 3, // Ա-ԱCS6-2010,2008 + VSB_CHANGFENG_FULING_1 = 4, // Ա-Ƥ-A + VSB_CHANGFENG_FEIYANG_1 = 5, // Ա-Ƥ-2010,2009,2005 + VSB_CHANGFENG_FEITENG_1 = 6, // Ա--2010,2009,2006 + VSB_CHANGFENG_BLACKJINGANG_1 = 7, // Ա-ڽ-2013,2010,2009,2008,2006 +}VSB_CHANGFENG_CLASS; + +//½Ʒ +typedef enum _VSB_LUFENG_CLASS +{ + VSB_LUFENG_OTHER = 0, // + VSB_LUFENG_X6_1 = 1, // ½-X6-2005 + VSB_LUFENG_X6_2 = 2, // ½-X6-2006 + VSB_LUFENG_X6_3 = 3, // ½-X6-2011,2010,2008,2007 + VSB_LUFENG_LUFENGX5_1 = 4, // ½-½X5-2013 + VSB_LUFENG_LUFENGX8_1 = 5, // ½-½X8-2013,2012,2011,2009 + VSB_LUFENG_LUFENGX8_2 = 6, // ½-½X8-2014,2012̽ + VSB_LUFENG_FENGHUA_1 = 7, // ½-绪-2008,2007 + VSB_LUFENG_X6_4 = 8, // ½-X6-2011 + VSB_LUFENG_FENGSHANG_1 = 9 // ½--2011,2006 +}VSB_LUFENG_CLASS; + +//ؿƷ +typedef enum _VSB_SHANQI_CLASS +{ + VSB_SHANQI_OTHER = 0, // + VSB_SHANQI_AOLONG_1 = 1, // ؿ--ؿA + VSB_SHANQI_AOLONG_2 = 2, // ؿ--ؿB + VSB_SHANQI_DELONG_1 = 3, // ؿ-F2000-4X2ǣ + VSB_SHANQI_DELONG_2 = 4, // ؿ-F3000-B + VSB_SHANQI_DELONG_3 = 5, // ؿ-M3000-ؿ +}VSB_SHANQI_CLASS; + + +//ҰƷ +typedef enum _VSB_RENAULT_CLASS +{ + VSB_RENAULT_OTHER = 0, // + VSB_RENAULT_MEIGANNA_1 = 1, // ŵ-÷-2006 + VSB_RENAULT_KELEIAO_1 = 2, // ŵ-װ-2010,2009 + VSB_RENAULT_KELEIAO_2 = 3, // ŵ-װ-2013,2012 + VSB_RENAULT_SCENE_1 = 4, // ŵ-羰-2007 + VSB_RENAULT_FENGLANG_1 = 5, // ŵ--2011 + VSB_RENAULT_TAFEIKE_1 = 6 // ŵ-ƿ-2004 +}VSB_RENAULT_CLASS; + +//ƺƷ +typedef enum _VSB_HUANGHAI_CLASS +{ + VSB_HUANGHAI_OTHER = 0, // + VSB_HUANGHAI_DACAISHEN_1 = 1, // ƺ--2013,2012 + VSB_HUANGHAI_DACAISHEN_2 = 2, // ƺ--2013,2012,2011,2010,2009Ͱ + VSB_HUANGHAI_BUS4_1 = 3, // ƺ-ͳ4-2012,2011 + VSB_HUANGHAI_CHALLENGER_1 = 4, // ƺ-ս-2011,2010,2009,2008 + VSB_HUANGHAI_AOLONGCUV_1 = 5, // ƺ-CUV-2010,2009 + VSB_HUANGHAI_AOJUN_1 = 6, // ƺ--2009 + VSB_HUANGHAI_AOJUN_2 = 7, // ƺ--2010,2009 + VSB_HUANGHAI_QISHENGV3_1 = 8, // ƺ-ʤV3-2011 + VSB_HUANGHAI_LINGHANGZHE_1 = 9, // ƺ-캽-2007,2005 + VSB_HUANGHAI_FENGCHI_1 = 10 // ƺ--A +}VSB_HUANGHAI_CLASS; + +/********************ƷEnd*************************/ + +//Ϣ +typedef struct tagNET_DVR_VEHICLE_INFO_ +{ + DWORD dwIndex; // + BYTE byVehicleType; // 0 ʾͣ1 ʾСͳ2 ʾͳ ,3ʾ˴ ,4ʾֳ 5ʾֳ(3.5Ver) 6ʾ + BYTE byColorDepth; //ɫdz + BYTE byColor; //ɫ,οVCR_CLR_CLASS + /*״쳣״̬ + 0~״ + 1~״ + 2~״һֱijһͬٶֵ + 3~״ͳΪ0 + 4~״ͳݹ߹С + */ + BYTE byRadarState; + WORD wSpeed; //λkm/h + WORD wLength; //ǰһij + /*Υͣ0-1-٣2-٣3-У4-,5-ѹ,6-7-· + 8-ռǣ9-Υ10- 11-Υ12-·ͣ13-̵ͣ, 14-δ(Υ1357), + 15-Υͣ16-Υµͷ,17-ռӦ,18-,19-,20-ѹ,21-δϵȫ,22-˴,23-,24-ΥʹԶƣ + 25-ʻʱֳֵ绰26-תֱУ27-תת28-ͷֱУ29-Сת, 30-̵ƣ31-δͷ + 32-ǻˣ33-ǻռû34-ǻɡ, 35-̳, 36-,37-ѹͣ,38-λͣ,39-ѹҿλͣ, + 40-ҷ·,41-뻷·δ·ڵĻ,42-ѵ·δ,43-ռ,44-ը,45- + */ + BYTE byIllegalType; + BYTE byVehicleLogoRecog; //οö VLR_VEHICLE_CLASS + BYTE byVehicleSubLogoRecog; //Ʒʶ𣻲οVSB_VOLKSWAGEN_CLASSö١ + BYTE byVehicleModel; //Ʒ0-δ֪ο"Ʒ.xlsx" + BYTE byCustomInfo[16]; //ԶϢ + WORD wVehicleLogoRecog; //Ʒƣο"Ʒ.xlsx" (ֶμbyVehicleLogoRecog); + BYTE byIsParking;//Ƿͣ 0-Ч1-ͣ2-δͣ + BYTE byRes;//ֽ + DWORD dwParkingTime; //ͣʱ䣬λs + BYTE byBelieve; //byIllegalTypeŶȣ1-100 + BYTE byCurrentWorkerNumber;//ǰҵ + BYTE byCurrentGoodsLoadingRate;//ǰװ 0- 1- 2- 3- 4- + BYTE byDoorsStatus;//״̬ 0-Źر 1-ſ + BYTE byRes3[4]; +}NET_DVR_VEHICLE_INFO, *LPNET_DVR_VEHICLE_INFO; + +//Ƽ +typedef struct tagNET_DVR_PLATE_RESULT +{ + DWORD dwSize; //ṹ + BYTE byResultType; //0-Ƶʶ1ͼʶ 2 10Mʱ· + BYTE byChanIndex; //ͨ + WORD wAlarmRecordID; //¼ID(ڲѯ¼񣬽byResultTypeΪ2ʱЧ) + DWORD dwRelativeTime; //ʱ + BYTE byAbsTime[32]; //ʱ,yyyymmddhhmmssxxx,e.g.20090810235959999룩 + DWORD dwPicLen; //ͼƬ(ͼ) + DWORD dwPicPlateLen; //СͼƬ + DWORD dwVideoLen; //¼ݳ + BYTE byTrafficLight; //0-Ǻ̵ץģ1-̵ʱץģ2-ʱץ + BYTE byPicNum; //ĵͼƬ + BYTE byDriveChan; // + BYTE byVehicleType; //ͣοVTR_RESULT + DWORD dwBinPicLen; //ƶֵͼ + DWORD dwCarPicLen; //ԭͼ + DWORD dwFarCarPicLen; //Զͼ + BYTE *pBuffer3; //ƶֵͼ + BYTE *pBuffer4; //ԭͼ + BYTE *pBuffer5; //Զͼ + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byCarDirectionType; //ʻķ0ʾ£1ʾϣʵʳʻ֣,2ʾδ֪ + BYTE byRes3[6]; + NET_DVR_PLATE_INFO struPlateInfo; //Ϣṹ + NET_DVR_VEHICLE_INFO struVehicleInfo; //Ϣ + BYTE *pBuffer1; // ϴͼƬ(ͼ)ָָͼƬϢϴƵָָƵϢͼƬƵϢNULL(DVSͼ) + BYTE *pBuffer2; // ϴͼƬ(ͼ)ʱָͼƬָ루DVSƲͼ +}NET_DVR_PLATE_RESULT, *LPNET_DVR_PLATE_RESULT; +//ͼƬݺ¼ݣֻһ֣ͼƬΪͼƬ+СͼƬ + +typedef struct tagNET_VPD_SHUTTER +{ + DWORD dwCommmand; //:0, 1, 2, 3, 4,ֱֵ + DWORD dwCode; //ֵ, dwCommmandΪ4, òΪ + BYTE byRes[60]; // +}NET_VPD_SHUTTER, *LPNET_VPD_SHUTTER; + +//ͼϢ +typedef struct tagNET_DVR_IMAGEOVERLAYCFG +{ + DWORD dwSize; + BYTE byOverlayInfo;//ʹܿأ0-ӣ1- + BYTE byOverlayMonitorInfo;//ǷӼϢ0-ӣ1- + BYTE byOverlayTime;//Ƿʱ䣬0-ӣ1- + BYTE byOverlaySpeed;//Ƿٶȣ0-ӣ1- + BYTE byOverlaySpeeding;//Ƿӳٱ0-ӣ1- + BYTE byOverlayLimitFlag;//Ƿٱ־0-ӣ1- + BYTE byOverlayPlate;//Ƿӳƺţ0-ӣ1- + BYTE byOverlayColor;//Ƿӳɫ0-ӣ1- + BYTE byOverlayLength;//Ƿӳ0-ӣ1- + BYTE byOverlayType;//Ƿӳͣ0-ӣ1- + BYTE byOverlayColorDepth;//Ƿӳɫdz0-ӣ1- + BYTE byOverlayDriveChan;//Ƿӳ0-ӣ1- + BYTE byOverlayMilliSec; //ӺϢ 0-ӣ1- + BYTE byOverlayIllegalInfo; //ΥϢ 0-ӣ1- + BYTE byOverlayRedOnTime; //Ӻʱ 0-ӣ1- + BYTE byFarAddPlateJpeg; //ԶͼǷӳƽͼ,0-,1- + BYTE byNearAddPlateJpeg; //ͼǷӳƽͼ,0-,1- + BYTE byRes1[3]; // + BYTE byMonitorInfo1[32]; //Ϣ1 + BYTE byMonitorInfo2[44]; //Ϣ2 + BYTE byRes2[52]; // +}NET_DVR_IMAGEOVERLAYCFG, *LPNET_DVR_IMAGEOVERLAYCFG; + +//IOץĹ +typedef struct tagNET_DVR_SNAPCFG +{ + DWORD dwSize; + BYTE byRelatedDriveWay;//IOij + BYTE bySnapTimes; //ȦץĴ0-ץģ0-ĴĿǰ5 + WORD wSnapWaitTime; //ץĵȴʱ䣬λmsȡֵΧ[0,60000] + WORD wIntervalTime[MAX_INTERVAL_NUM];//ļʱ䣬ms + DWORD dwSnapVehicleNum; //ץijš + NET_DVR_JPEGPARA struJpegPara;//ץͼƬ + BYTE byRes2[16];//ֽ +}NET_DVR_SNAPCFG, *LPNET_DVR_SNAPCFG; + +typedef enum _ITC_MAINMODE_ABILITY_ +{ + ITC_MODE_UNKNOW = 0x0, // + ITC_POST_MODE = 0x1, //ģʽ + ITC_EPOLICE_MODE = 0x2, //羯ģʽ + ITC_POSTEPOLICE_MODE = 0x4 //ʽ羯ģʽ +}ITC_MAINMODE_ABILITY; + +typedef enum _ITC_RECOG_REGION_TYPE_ +{ + ITC_REGION_RECT = 0x0, // + ITC_REGION_POLYGON = 0x1, // +}ITC_RECOG_REGION_TYPE; + +typedef struct tagNET_DVR_SNAP_ABILITY +{ + DWORD dwSize; + BYTE byIoInNum;//IO + BYTE byIoOutNum;//IO + BYTE bySingleSnapNum;//IO + BYTE byLightModeArrayNum;//̵ģʽ + BYTE byMeasureModeArrayNum;//ģʽ + BYTE byPlateEnable; //ʶ + BYTE byLensMode;//ͷģʽ0-CCD,1-CMOS + BYTE byPreTriggerSupport; //Ƿ֧ԭģʽ0-֧֣1-֧ + DWORD dwAbilityType; //ֵ֧ĴģʽλʾITC_MAINMODE_ABILITY + BYTE byIoSpeedGroup; //ֵ֧IO + BYTE byIoLightGroup; //ֵ֧IO̵ + BYTE byRecogRegionType; //ʶֵ֧ͣITC_RECOG_REGION_TYPE + BYTE bySupport; //豸λʾ0-֧֣1-֧ + // bySupport&0x1ʾǷ֧չַ + // bySupport&0x2ʾǷ֧չУʱýṹ + // bySupport&0x4, ʾǷֶ֧() + // bySupport&0x8, ʾǷ֧bonding(ݴ) + // bySupport&0x10, ʾǷ֧Խ + //2013-07-09 + WORD wSupportMultiRadar;// 豸λʾ0-֧֣1-֧ + // wSupportMultiRadar&0x1ʾ RS485״ ֳ֧״ﴦ + // wSupportMultiRadar&0x2ʾ Ȧ ֳ֧״ﴦ + // wSupportMultiRadar&0x4ʾ п ֳ֧״ﴦ + // wSupportMultiRadar&0x8ʾ Ƶ ֳ֧״ﴦ + BYTE byICRPresetNum; + // ʾֵ֧ICRԤõ㣨˹ƬƫƵ㣩 + BYTE byICRTimeSlot;//ʾֵ֧ICRʱ18 + BYTE bySupportRS485Num;//ʾֵ֧RS485ڵ + BYTE byExpandRs485SupportSensor;// 豸λʾ0-֧֣1-֧ + // byExpandRs485SupportSensor &0x1ʾ羯ֳ֧ + // byExpandRs485SupportSensor &0x2ʾʽ羯ֳ֧ + BYTE byExpandRs485SupportSignalLampDet;// 豸λʾ0-֧֣1-֧ + // byExpandRs485SupportSignalLampDet &0x1ʾ羯֧źŵƼ + // byExpandRs485SupportSignalLampDet &0x2ʾʽ羯֧źŵƼ + BYTE byRelayNum;// ʾ̵ּ֧ĸ 2013-11-04 + BYTE bySupport1; //豸λʾ0-֧֣1-֧ + // bySupport1&0x1ʾǷ֧ԶУʱϢ + // bySupport1&0x2, ʾǷ֧ƵŻ + // bySupport1&0x4, ʾǷ֧DDNS÷ + // bySupport1&0x8, ʾǷֻ֧ȡ豸ǰģʽӿ + // bySupport1&0x10, ʾǷֳ֧ 2014-03-03 + // bySupport1&0x20, ʾǷ֧GPSģ + // bySupport1&0x40, ʾǷ֧NTPУʱַ֧ + // bySupport1&0x80, ʾǷ֧tpsϴ + BYTE bySupport2; //豸λʾ0-֧֣1-֧ + // bySupport2&0x01, ʾǷ֧Ϣ + // bySupport2&0x02, ʾͨͼINTER_PICCFG_V30Ƿ֧ƵʱòbyOSDMilliSecondEnable + // bySupport2&0x04, ʾբƣNET_DVR_BARRIERGATE_CFGbyBarrierGateCtrlֶ֧4~բ֧byUnlockʹܡ֮ʶ֧ + BYTE bySupportWhiteBalance; //ƽĬ϶ֶ֧ƽ⡢Զƽ⡢Զƽ23ģʽ + // bySupportWhiteBalance &0x01, ʾǷ֧չģʽ + // bySupportWhiteBalance &0x02, ʾǷ֧Ȼģʽ + // bySupportWhiteBalance &0x04, ʾǷ֧ůģʽ + // bySupportWhiteBalance &0x08, ʾǷְ֧׳ģʽ + BYTE byRes[9]; +} NET_DVR_SNAP_ABILITY, *LPNET_DVR_SNAP_ABILITY; + +typedef struct tagNET_DVR_TRANSFER_CAP +{ + BYTE byAbility; + BYTE byRes[63]; +}NET_DVR_TRANSFER_CAP, *LPNET_DVR_TRANSFER_CAP; + +typedef struct tagNET_ITC_ICRTIMECFG +{ + NET_DVR_SCHEDTIME struTime; + BYTE byAssociateRresetNo;//Ԥõ18 , 0 + BYTE bySubSwitchMode;//1~죬2~ (Ԥõ0 ʱЧ) + BYTE byRes[10]; +}NET_ITC_ICRTIMECFG, *LPNET_ITC_ICRTIMECFG; + +typedef struct tagNET_ITC_ICR_TIMESWITCH_PARAM //156 +{ + NET_ITC_ICRTIMECFG struAutoCtrlTime[MAX_TIMESEGMENT_V30];//Զлʱ (Զл ʱЧ ֧4飬Ԥ4) + BYTE byICRPreset[MAX_ICR_NUM]; //ʵЧ̬ʾ [0~100] ±ʾԤõ18 07 Ӧ + BYTE byRes[20]; +}NET_ITC_ICR_TIMESWITCH_PARAM, *LPNET_ITC_ICR_TIMESWITCH_PARAM; + +typedef struct tagNET_ITC_ICR_MANUALSWITCH_PARAM +{ + BYTE byICRPreset[MAX_ICR_NUM]; //ʵЧ̬ʾ [0~100] + BYTE bySubSwitchMode;//1~죬2~ + BYTE byRes[147]; +}NET_ITC_ICR_MANUALSWITCH_PARAM, *LPNET_ITC_ICR_MANUALSWITCH_PARAM; + +typedef struct tagNET_ITC_ICR_AOTOSWITCH_PARAM +{ + BYTE byICRPreset[MAX_ICR_NUM]; //ʵЧ̬ʾ [0~100] ±ʾԤõ18 07 Ӧ + BYTE byICRAutoSwitch; // ICRԶлֵѡ, ȡֵΧ[0 100] + BYTE byRes[147]; +}NET_ITC_ICR_AOTOSWITCH_PARAM, *LPNET_ITC_ICR_AOTOSWITCH_PARAM; + +//㷨Զ +typedef struct tagNET_ITC_ICR_ALGAOTOSWITCH_PARAM +{ + BYTE byDetectThreshold;//ֵ,Χ[0,100],Ĭ 58 + BYTE byAbBrightnessThreshold; //쳣ֵΧ[0,100]Ĭ12 + BYTE byRes[154]; +}NET_ITC_ICR_ALGAOTOSWITCH_PARAM, *LPNET_ITC_ICR_ALGAOTOSWITCH_PARAM; + +typedef union tagNET_ITC_ICR_PARAM_UNION +{ + BYTE uLen[156]; + NET_ITC_ICR_AOTOSWITCH_PARAM struICRAutoSwitch; + NET_ITC_ICR_MANUALSWITCH_PARAM struICRManualSwitch; + NET_ITC_ICR_TIMESWITCH_PARAM struICRTimeSwitch; + NET_ITC_ICR_ALGAOTOSWITCH_PARAM strICRAlgorithmAutoSwitch; +}NET_ITC_ICR_PARAM_UNION,*LPNET_ITC_ICR_PARAM_UNION; + +typedef struct tagNET_ITC_ICRCFG +{ + DWORD dwSize; + BYTE bySwitchType;//1~Զл2~ֶл ,3~ʱл,4~㷨Զ + BYTE byRes[3]; + NET_ITC_ICR_PARAM_UNION uICRParam; +}NET_ITC_ICRCFG, *LPNET_ITC_ICRCFG; + +//2013-07-09 쳣 +typedef struct +{ + DWORD dwHandleType; //쳣,쳣ʽ"" + /*0x00: Ӧ*/ + /*0x01: Ͼ*/ + /*0x02: */ + /*0x04: ϴ*/ + /*0x08: ̵*/ + /*0x10: JPRGץͼϴEmail*/ + /*0x20: ⱨ*/ + /*0x40: ӵͼ(ĿǰֻPCNVR֧)*/ + /*0x200: ץͼϴFTP*/ + BYTE byEnable; //0ã1 + BYTE byRes; + WORD wDuration;//ʱ(λ/s) + BYTE byAlarmOutTriggered[MAX_ITC_EXCEPTIONOUT];//ͨ + BYTE byRes1[8]; +} NET_ITC_HANDLEEXCEPTION, *LPNET_ITC_HANDLEEXCEPTION; + +typedef struct +{ + DWORD dwSize; + NET_ITC_HANDLEEXCEPTION struSnapExceptionType[MAX_EXCEPTIONNUM_V30]; //ÿԪضʾһ쳣0- Ӳ̳,1-߶,2-IP ַͻ, 3-쳣, 4-źŵƼ쳣 +}NET_ITC_EXCEPTION,*LPNET_ITC_EXCEPTION; + +typedef struct tagNET_DVR_TRIGCOORDINATE +{ + WORD wTopLeftX; /*ȦϽǺ꣨2ֽڣ*/ + WORD wTopLeftY; /*ȦϽ꣨2ֽڣ*/ + WORD wWdith; /*Ȧȣ2ֽڣ*/ + WORD wHeight; /*Ȧ߶ȣ2ֽڣ*/ +} NET_DVR_TRIGCOORDINATE, *LPNET_DVR_TRIGCOORDINATE; + +typedef enum _PROVINCE_CITY_IDX_ +{ + ANHUI_PROVINCE = 0, // + AOMEN_PROVINCE = 1, // + BEIJING_PROVINCE = 2, // + CHONGQING_PROVINCE = 3, // + FUJIAN_PROVINCE = 4, // + GANSU_PROVINCE = 5, // + GUANGDONG_PROVINCE = 6, //㶫 + GUANGXI_PROVINCE = 7, // + GUIZHOU_PROVINCE = 8, // + HAINAN_PROVINCE = 9, // + HEBEI_PROVINCE = 10, //ӱ + HENAN_PROVINCE = 11, // + HEILONGJIANG_PROVINCE = 12, // + HUBEI_PROVINCE = 13, // + HUNAN_PROVINCE = 14, // + JILIN_PROVINCE = 15, // + JIANGSU_PROVINCE = 16, // + JIANGXI_PROVINCE = 17, // + LIAONING_PROVINCE = 18, // + NEIMENGGU_PROVINCE = 19, //ɹ + NINGXIA_PROVINCE = 20, // + QINGHAI_PROVINCE = 21, //ຣ + SHANDONG_PROVINCE = 22, //ɽ + SHANXI_JIN_PROVINCE = 23, //ɽ + SHANXI_SHAN_PROVINCE = 24, // + SHANGHAI_PROVINCE = 25, //Ϻ + SICHUAN_PROVINCE = 26, //Ĵ + TAIWAN_PROVINCE = 27, //̨ + TIANJIN_PROVINCE = 28, // + XIZANG_PROVINCE = 29, // + XIANGGANG_PROVINCE = 30, // + XINJIANG_PROVINCE = 31, //½ + YUNNAN_PROVINCE = 32, // + ZHEJIANG_PROVINCE = 33 //㽭 +}PROVINCE_CITY_IDX; + +typedef struct tagNET_DVR_GEOGLOCATION +{ + int iRes[2]; /**/ + DWORD dwCity; /*УPROVINCE_CITY_IDX */ +}NET_DVR_GEOGLOCATION, *LPNET_DVR_GEOGLOCATION; + +//ģʽ +typedef enum _SCENE_MODE_ +{ + UNKOWN_SCENE_MODE = 0, //δ֪ģʽ + HIGHWAY_SCENE_MODE = 1, //ٳģʽ + SUBURBAN_SCENE_MODE = 2, //ģʽ() + URBAN_SCENE_MODE = 3, //ģʽ + TUNNEL_SCENE_MODE = 4 //ģʽ() +}SCENE_MODE; +// ˽Ϣģ +typedef enum _PRIDATA_RENDER +{ + RENDER_ANA_INTEL_DATA = 0x00000001, //ܷ + RENDER_MD = 0x00000002, //ƶ + RENDER_ADD_POS = 0x00000004, //POSϢ + RENDER_ADD_PIC = 0x00000008, //ͼƬ + RENDER_FIRE_DETCET = 0x00000010, //ȳϢ + RENDER_TEM = 0x00000020, //¶Ϣ + RENDER_TRACK_TEM = 0x00000040, //켣Ϣ + RENDER_THERMAL = 0x00000080 //̻Ϣ +}PRIDATA_RENDER; + +typedef enum _THERMAL_FLAG +{ + THERMAL_FIREMASK = 0x00000001, //̻ + THERMAL_RULEGAS = 0x00000002, // + THERMAL_TARGETGAS = 0x00000004 //Ŀ +}THERMAL_FLAG; + +typedef enum _FIRE_ALARM{ + FIRE_FRAME_DIS = 0x00000001, //ʾ + FIRE_MAX_TEMP = 0x00000002, //¶ + FIRE_MAX_TEMP_POSITION = 0x00000004, //¶λʾ + FIRE_DISTANCE = 0x00000008, //¶Ⱦ}FIRE_ALARM +}FIRE_ALARM; + +typedef enum _TEM_FLAG{ + TEM_REGION_BOX = 0x00000001, // + TEM_REGION_LINE = 0x00000002, //߲ + TEM_REGION_POINT = 0x00000004, //}TEM_FLAG +}TEM_FLAG; + +typedef enum _TRACK_FLAG +{ + TRACK_PEOPLE = 0x00000001, //˹켣 + TRACK_VEHICLE = 0x00000002 //켣 +}TRACK_FLAG; + +typedef struct tagNET_DVR_VTPARAM +{ + DWORD dwSize; + BYTE byEnable; /* ǷʹȦ0-ʹã1-ʹ*/ + BYTE byIsDisplay; /* ǷʾȦ0-ʾ1-ʾ*/ + BYTE byLoopPos; //䴥Ȧƫ0-ϣ1- + BYTE bySnapGain; /*ץ*/ + DWORD dwSnapShutter; /*ץĿٶ*/ + NET_DVR_TRIGCOORDINATE struTrigCoordinate; // + NET_DVR_TRIGCOORDINATE struRes[MAX_VL_NUM]; + BYTE byTotalLaneNum;/*Ƶij1*/ + BYTE byPolarLenType; /*ƫͣ0ƫ񾵣1ʩ͵ƫ񾵡*/ + BYTE byDayAuxLightMode; /*츨ģʽ0޸1LED2*/ + BYTE byLoopToCalRoadBright; /*Լ·ȵij(Ȧ)*/ + BYTE byRoadGrayLowTh; /*·ȵֵʼֵ1*/ + BYTE byRoadGrayHighTh; /*·ȸֵʼֵ140*/ + WORD wLoopPosBias; /*䴥Ȧλ30*/ + DWORD dwHfrShtterInitValue; /*ͼعʱijʼֵ2000*/ + DWORD dwSnapShtterInitValue; /*ץͼعʱijʼֵ500*/ + DWORD dwHfrShtterMaxValue; /*ͼعʱֵ20000*/ + DWORD dwSnapShtterMaxValue; /*ץͼعʱֵ1500*/ + DWORD dwHfrShtterNightValue; /*ͼعʱֵ3000*/ + DWORD dwSnapShtterNightMinValue; /*ץͼعʱСֵ3000*/ + DWORD dwSnapShtterNightMaxValue; /*ץͼعʱֵ5000*/ + DWORD dwInitAfe; /*ijʼֵ200*/ + DWORD dwMaxAfe; /*ֵ400*/ + WORD wResolutionX;/* 豸ǰֱʿ*/ + WORD wResolutionY;/* 豸ǰֱʸ*/ + DWORD dwGainNightValue; /*棬Ĭֵ70*/ + DWORD dwSceneMode; /*ģʽ SCENE_MODE */ + DWORD dwRecordMode; /*¼־0-¼1-¼*/ + NET_DVR_GEOGLOCATION struGeogLocation; /*ַλ*/ + BYTE byTrigFlag[MAX_VL_NUM]; /*־0-ͷ1-β2-ͷ/β*/ + BYTE byTrigSensitive[MAX_VL_NUM]; /*ȣ1-100*/ + BYTE byRes2[62]; +}NET_DVR_VTPARAM, *LPNET_DVR_VTPARAM; + +typedef struct tagNET_DVR_SNAPENABLECFG +{ + DWORD dwSize; + BYTE byPlateEnable;//Ƿֳ֧ʶ0-֧֣1-֧ + BYTE byRes1[2]; // + BYTE byFrameFlip; //ͼǷת 0-ת1-ת + WORD wFlipAngle; //ͼתǶ 0,90,180,270 + WORD wLightPhase; //λȡֵΧ[0, 360] + BYTE byLightSyncPower; //ǷźŵƵԴͬ0-ͬ1-ͬ + BYTE byFrequency; //źƵ + BYTE byUploadSDEnable; //ǷԶϴSDͼƬ0-1- + BYTE byPlateMode; //ʶģʽ:0-Ƶ,1-ⲿ + BYTE byUploadInfoFTP; //ǷϴץĸϢFTP0-1- + BYTE byAutoFormatSD; //ǷԶʽSD0-1- + WORD wJpegPicSize; //JpegͼƬС[64-8196] + BYTE bySnapPicResolution; //ץͼƬֱ(NET_DVR_COMPRESSION_INFO_V30зֱʱһ) + BYTE byRes[55]; // +}NET_DVR_SNAPENABLECFG, *LPNET_DVR_SNAPENABLECFG; + +/*ftpϴ*/ +typedef struct +{ + DWORD dwSize; + DWORD dwEnableFTP; /*Ƿftpϴ*/ + char sFTPIP[16]; /*ftp */ + DWORD dwFTPPort; /*ftp˿*/ + BYTE sUserName[NAME_LEN]; /*û*/ + BYTE sPassword[PASSWD_LEN]; /**/ + DWORD dwDirLevel; /*0 = ʹĿ¼ṹֱӱڸĿ¼,1 = ʹ1Ŀ¼,2=ʹ2Ŀ¼*/ + WORD wTopDirMode; /* һĿ¼0x1 = ʹ豸,0x2 = ʹ豸,0x3 = ʹ豸ipַ0x4=ʹü,0x5=ʹʱ(),0x=6Զ,0x7=Υ,0x8=,0x9=ص*/ + WORD wSubDirMode; /* Ŀ¼0x1 = ʹͨ,0x2 = ʹͨţ,0x3=ʹʱ(),0x4=ʹó,0x=5Զ,0x6=Υ,0x7=,0x8=ص*/ + BYTE byEnableAnony; //0-1- + BYTE byPicArchivingInterval;//ͼƬ鵵[1~30],0ʾر + BYTE byRes[22]; +}NET_DVR_FTPCFG, *LPNET_DVR_FTPCFG; + +/*ͼƬԪ */ +#define PICNAME_ITEM_DEV_NAME 1 /*豸*/ +#define PICNAME_ITEM_DEV_NO 2 /*豸*/ +#define PICNAME_ITEM_DEV_IP 3 /*豸IP*/ +#define PICNAME_ITEM_CHAN_NAME 4 /*ͨ*/ +#define PICNAME_ITEM_CHAN_NO 5 /*ͨ*/ +#define PICNAME_ITEM_TIME 6 /*ʱ*/ +#define PICNAME_ITEM_CARDNO 7 /**/ +#define PICNAME_ITEM_PLATE_NO 8 /*ƺ*/ +#define PICNAME_ITEM_PLATE_COLOR 9 /*ɫ*/ +#define PICNAME_ITEM_CAR_CHAN 10 /**/ +#define PICNAME_ITEM_CAR_SPEED 11 /*ٶ*/ +#define PICNAME_ITEM_CARCHAN 12 /**/ +#define PICNAME_ITEM_PIC_NUMBER 13 //ͼƬ +#define PICNAME_ITEM_CAR_NUMBER 14 // +#define PICNAME_MAXITEM 15 + +#define PICNAME_ITEM_SPEED_LIMIT_VALUES 15 //ֵ +#define PICNAME_ITEM_ILLEGAL_CODE 16 //Υ +#define PICNAME_ITEM_CROSS_NUMBER 17 //·ڱ +#define PICNAME_ITEM_DIRECTION_NUMBER 18 // + +//(3.7Ver) +#define PICNAME_ITEM_CAR_COLOR 19 //ɫ +#define PICNAME_ITEM_PLATE_COORDINATE 20 // +#define PICNAME_ITEM_CAR_TYPE 21 // +#define PICNAME_ITEM_VIOLATION_TYPE 22 //Υ +#define PICNAME_ITEM_CUSTOM 255//Զ + + + +//ͼƬ +typedef struct +{ + BYTE byItemOrder[PICNAME_MAXITEM]; /* 鶨ļĹ */ + BYTE byDelimiter; /*ָһΪ'_'*/ +}NET_DVR_PICTURE_NAME, *LPNET_DVR_PICTURE_NAME; + +//2013-09-27 +#define PICNAME_ITEM_PARK_DEV_IP 1 /*豸IP*/ +#define PICNAME_ITEM_PARK_PLATE_NO 2 /*ƺ*/ +#define PICNAME_ITEM_PARK_TIME 3 /*ʱ*/ +#define PICNAME_ITEM_PARK_INDEX 4 /*λ*/ +#define PICNAME_ITEM_PARK_STATUS 5 /*λ״̬*/ +#define PICNAME_ITEM_BUILDING_NUMBER 6 /*ŵԪ*/ +#define PICNAME_ITEM_OUTDOOR_UNIT_ID 7 /*ſڻ*/ +#define PICNAME_ITEM_UNLOCK_TYPE 8 /*ʽ*/ +#define PICNAME_ITEM_DEVICE_NAME 9 //豸 +#define PICNAME_ITEM_PERIOD_NO 10 /*ں*/ +#define PICNAME_ITEM_DEV_INDEX 11 /*豸*/ +#define PICNAME_PREFIX 32 /*ͼƬԶǰ׺*/ +//ͼƬչ 2013-09-27 +typedef struct +{ + BYTE byItemOrder[PICNAME_MAXITEM]; /* 鶨ļĹ */ + BYTE byDelimiter; /*ָһΪ'_'*/ + BYTE byPicNamePrefix[PICNAME_PREFIX/*32*/]; //ͼƬԶǰ׺ +}NET_DVR_PICTURE_NAME_EX, *LPNET_DVR_PICTURE_NAME_EX; + +/* ץͼ*/ +typedef struct +{ + BYTE byStrFlag; /*ݿʼ*/ + BYTE byEndFlag; /**/ + WORD wCardIdx; /*ʼλ*/ + DWORD dwCardLen; /*ų*/ + DWORD dwTriggerPicChans; /*ͨţλӵ1λʼƣ0x2ʾһͨ*/ +}NET_DVR_SERIAL_CATCHPIC_PARA, *LPNET_DVR_SERIAL_CATCHPIC_PARA; + +//DVRץͼãߣ +typedef struct +{ + DWORD dwSize; + NET_DVR_JPEGPARA struJpegPara[MAX_CHANNUM_V30]; /*ÿͨͼ*/ + WORD wBurstMode; /*ץͼʽ,λ.0x1=봥0x2=ƶⴥ 0x4=2320x8=4850x10=紥*/ + WORD wUploadInterval; /*ͼƬϴ()[0,65535]*/ + NET_DVR_PICTURE_NAME struPicNameRule; /* ͼƬ */ + BYTE bySaveToHD; /*Ƿ񱣴浽Ӳ*/ + BYTE byRes1; + WORD wCatchInterval; /*ץͼ()[0,65535]*/ + BYTE byRes2[12]; + NET_DVR_SERIAL_CATCHPIC_PARA struRs232Cfg; + NET_DVR_SERIAL_CATCHPIC_PARA struRs485Cfg; + DWORD dwTriggerPicTimes[MAX_CHANNUM_V30]; /* ÿͨһδմ */ + DWORD dwAlarmInPicChanTriggered[MAX_ALARMIN_V30]; /*ץͨ,λãӵ1λʼ*/ +}NET_DVR_JPEGCFG_V30, *LPNET_DVR_JPEGCFG_V30; + +//ץĴṹ() +typedef struct tagNET_DVR_MANUALSNAP +{ + BYTE byOSDEnable;//0-ر(Ĭ)1-ر + BYTE byLaneNo;//, ΧΪ1-6ĬΪ1(ץĻڲʹ) + BYTE byChannel;//ͨ + BYTE byRes[21]; // +}NET_DVR_MANUALSNAP, *LPNET_DVR_MANUALSNAP; + +typedef struct tagNET_DVR_SPRCFG +{ + DWORD dwSize; + BYTE byDefaultCHN[MAX_CHJC_NUM]; /*豸ʡݵĺּд*/ + BYTE byPlateOSD; /*0:ͳƲɫͼ,1:ͳƲɫͼ*/ + BYTE bySendJPEG1; /*0-ͽJPEGͼ,1-ͽJPEGͼ*/ + BYTE bySendJPEG2; /*0-ԶJPEGͼ,1-ԶJPEGͼ*/ + WORD wDesignedPlateWidth; /*ƿ*/ + BYTE byTotalLaneNum; /*ʶij*/ + BYTE byRes1; /**/ + WORD wRecognizedLane; /*ʶijţλʾbit0ʾ1Ƿʶ0-ʶ1-ʶ*/ + NET_VCA_RECT struLaneRect[MAX_LANERECT_NUM]; /*ʶ*/ + DWORD dwRecogMode; /*ʶͣ + bit0-ʶ0-ʶ1-ʶ(βʶ) + bit1-ʶСʶ0-Сʶ1-ʶ + bit2-ɫʶ0-óɫʶڱʶСʶʱֹã1-ɫʶ + bit3-ũóʶ0-ũóʶ1-ũóʶ + bit4-ģʶ0-ģʶ1-ģʶ + bit5-֡λ򳡶λ0-֡λ1-λ + bit6-֡ʶʶ0-֡ʶ1-ʶ + bit7-ϻ죺0-죬1- */ + BYTE bySendPRRaw; //Ƿԭͼ0-ͣ1- + BYTE bySendBinImage; //Ƿͳƶֵͼ0-ͣ1- + BYTE byDelayCapture; //ʱץĿ,λ֡ + BYTE byUseLED; //ʹLEDƣ0-1- + BYTE byRes2[68]; // +}NET_DVR_SPRCFG, *LPNET_DVR_SPRCFG; + +typedef struct tagNET_DVR_PLCCFG +{ + DWORD dwSize; + BYTE byPlcEnable; //ǷóȲĬã0-رգ1- + BYTE byPlateExpectedBright; //ƵԤȣĬֵ50, Χ[0, 100] + BYTE byRes1[2]; // + BYTE byTradeoffFlash; //ǷƵӰ: 0 - ; 1 - (Ĭ); + //ʹƲʱ, ǼƵǿЧӦ, ҪΪ1;Ϊ0 + BYTE byCorrectFactor; //ϵ, Χ[0, 100], Ĭֵ50 (tradeoff_flashлʱ,ָĬֵ + WORD wLoopStatsEn; //ǷȦȣλʾ0-ͳƣ1-ͳ + BYTE byPlcBrightOffset;// Ȳ(ȦģʽЧ)ȡֵΧ1~100 + BYTE byRes[19]; +}NET_DVR_PLCCFG, *LPNET_DVR_PLCCFG; + +typedef struct tagNET_DVR_DEVICESTATECFG +{ + DWORD dwSize; + WORD wPreviewNum; //ԤӸ + WORD wFortifyLinkNum; //Ӹ + NET_DVR_IPADDR struPreviewIP[MAX_LINK]; //ԤûIPַ + NET_DVR_IPADDR struFortifyIP[MAX_FORTIFY_NUM]; //ӵûIPַ + DWORD dwVideoFrameRate; //֡ʣ0-ȫ; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12; 12-16; 13-20; 14-15; 15-18; 16-22; + BYTE byResolution; //ֱ0-DCIF 1-CIF, 2-QCIF, 3-4CIF, 4-2CIF 5,16-VGA640*480, 17-UXGA1600*1200, 18-SVGA 800*600,19-HD720p1280*720,20-XVGA, 21-HD900p, 27-HD1080i, 28-2560*1920, 29-1600*304, 30-2048*1536, 31-2448*2048 + BYTE bySnapResolution; //ץķֱ0-DCIF 1-CIF, 2-QCIF, 3-4CIF, 4-2CIF 5,16-VGA640*480, 17-UXGA1600*1200, 18-SVGA 800*600,19-HD720p1280*720,20-XVGA, 21-HD900p, 27-HD1080i, 28-2560*1920, 29-1600*304, 30-2048*1536, 31-2448*2048 + BYTE byStreamType; //ͣ0-1- + BYTE byTriggerType; //ģʽ0-Ƶ1-ͨ + DWORD dwSDVolume; //SD + DWORD dwSDFreeSpace; //SDʣռ + BYTE byDetectorState[MAX_DRIVECHAN_NUM][MAX_COIL_NUM]; //״̬0-δʹã1-2-쳣 + BYTE byDetectorLinkState; //״̬0-δӣ1- + BYTE bySDStatus; //SD״̬ 01ߣ2쳣3-sd + BYTE byFortifyLevel[MAX_FORTIFY_NUM]; //ȼ0-ޣ1-һȼߣ2-ȼУ3-ȼͣ + BYTE byRes2[116]; // +}NET_DVR_DEVICESTATECFG, *LPNET_DVR_DEVICESTATECFG; + +typedef struct tagNET_DVR_POSTEPOLICECFG +{ + DWORD dwSize; + DWORD dwDistance;//Ȧ,λcmȡֵΧ[0,20000] + DWORD dwLightChan[MAX_SIGNALLIGHT_NUM]; //źŵͨ + BYTE byCapSpeed;//־٣λkm/hȡֵΧ[0,255] + BYTE bySpeedLimit;//ֵλkm/hȡֵΧ[0,255] + BYTE byTrafficDirection;//0-ɶ1-򶫣2-򱱣3-ɱ + BYTE byRes1; // + WORD wLoopPreDist; /*ӳپ λ*/ + WORD wTrigDelay; /*Ӳʱʱ λ*/ + BYTE byRes[124];//ֽ +}NET_DVR_POSTEPOLICECFG, *LPNET_DVR_POSTEPOLICECFG; + + +//źŵ쳣 +typedef struct tagNET_DVR_SIGNALLAMP_DETCFG +{ + DWORD dwSize; //ṹ + //ʱ,yyyymmddhhmmssxxx,e.g.20090810235959999 λΪ + BYTE byAbsTime[32]; + NET_DVR_IPADDR struAlarmCamIP;//IP + DWORD dwPic1Len; //쳣ͼƬ1 + DWORD dwPic2Len; //쳣ͼƬ2 + char *pPic1Buffer; //ָ ӳͼƬ + char *pPic2Buffer; //ָ źŵ״̬ͼƬ + BYTE byRes[128]; +}NET_DVR_SIGNALLAMP_DETCFG, *LPNET_DVR_SIGNALLAMP_DETCFG; + +typedef struct tagNET_DVR_EXDEVDET_COND +{ + DWORD dwSize; // ṹС + DWORD dwChannel; //ͨ + BYTE byExternalDevType;// 0-Чֵ1-źŵ,2- + BYTE byRes[63]; // ֽ +}NET_DVR_EXDEVDET_COND,*LPNET_DVR_EXDEVDET_COND; + +typedef struct tagNET_DVR_EXDEVDET_CFG +{ + DWORD dwSize; // ṹС + BYTE byExternalDevStatus;// 0-1-쳣 + BYTE byRes[63];// ֽ +} NET_DVR_EXDEVDET_CFG,*LPNET_DVR_EXDEVDET_CFG; + +/***************************** end *********************************************/ + +#define IPC_PROTOCOL_NUM 50 //ipc Э + +//Э +typedef struct tagNET_DVR_PROTO_TYPE +{ + DWORD dwType; /*ipcЭֵ*/ + BYTE byDescribe[DESC_LEN]; /*Эֶ*/ +}NET_DVR_PROTO_TYPE, *LPNET_DVR_PROTO_TYPE; + +//Эб +typedef struct tagNET_DVR_IPC_PROTO_LIST +{ + DWORD dwSize; + DWORD dwProtoNum; /*ЧipcЭĿ*/ + NET_DVR_PROTO_TYPE struProto[IPC_PROTOCOL_NUM]; /*ЧipcЭ*/ + BYTE byRes[8]; +}NET_DVR_IPC_PROTO_LIST, *LPNET_DVR_IPC_PROTO_LIST; + +//ЭбV41 +typedef struct tagNET_DVR_IPC_PROTO_LIST_V41 +{ + DWORD dwSize; + DWORD dwProtoNum; //ЧipcЭĿ + BYTE *pBuffer; //Эб, dwProtoNum NET_DVR_PROTO_TYPEṹ + DWORD dwBufferLen; // + BYTE byRes[32]; +}NET_DVR_IPC_PROTO_LIST_V41, *LPNET_DVR_IPC_PROTO_LIST_V41; + +typedef struct tagNET_DVR_PTZPOS_INFO +{ + DWORD dwPanPos; // Pˮƽ + DWORD dwTiltPos; // Tֱ + DWORD dwZoomPos; // Z䱶 +}NET_DVR_PTZPOS_INFO, *LPNET_DVR_PTZPOS_INFO; + +//ʶṹ +typedef struct tagNET_VCA_HUMAN_FEATURE +{ + BYTE byAgeGroup; //,μ HUMAN_AGE_GROUP_ENUM + BYTE bySex; //Ա, 0-ʾδ֪㷨֧֣,1 C , 2 C Ů, 0xff-㷨֧֣ûʶ + BYTE byEyeGlass; //Ƿ۾ 0-ʾδ֪㷨֧֣,1 C, 2 C۾, 3 Cī,0xff-㷨֧֣ûʶ + //ץͼƬʹ÷ʽbyAgeΪ15,byAgeDeviationΪ1,ʾʵͼƬΪ14-16֮ + BYTE byAge;// 0-ʾδ֪㷨֧֣,0xff-㷨֧֣ûʶ + BYTE byAgeDeviation;//ֵ + BYTE byRes0; + BYTE byMask; //Ƿ 0-ʾδ֪㷨֧֣,1 C , 2 C , 0xff-㷨֧֣ûʶ + BYTE bySmile; //Ƿ΢Ц 0-ʾδ֪㷨֧֣,1 C ΢Ц, 2 C ΢Ц, 0xff-㷨֧֣ûʶ + BYTE byFaceExpression; /* ,μFACE_EXPRESSION_GROUP_ENUM*/ + BYTE byRes1; + BYTE byRes2; + BYTE byHat; // ñ, 0-֧,1-ñ,2-ñ, 3-ͷ 0xff-unknowʾδ֪,㷨֧δ + BYTE byRes[4]; // +}NET_VCA_HUMAN_FEATURE ,*LPNET_VCA_HUMAN_FEATURE; + +//ɫ +typedef struct tagNET_DVR_OBJECT_FEATURE +{ + BYTE byColorRatel; //ɫƶеռֵ + BYTE byRed; // RGBɫеĺɫ + BYTE byGreen; // RGBɫеɫ + BYTE byBlue; // RGBɫеɫ + BYTE byRes[32]; +}NET_DVR_OBJECT_FEATURE ,*LPNET_DVR_OBJECT_FEATURE; + +// +typedef union tagNET_DVR_ADVANCE_COND_UNION +{ + BYTE byLen[36]; //峤 + NET_VCA_HUMAN_FEATURE struHumanFeature; // + NET_DVR_OBJECT_FEATURE struObjectFeature; // +}NET_DVR_ADVANCE_COND_UNION,*LPNET_DVR_ADVANCE_COND_UNION; + + +#define MAX_ALERTLINE_NUM 8 //󾯽 + + +typedef struct tagNET_DVR_TRAVERSE_PLANE_SEARCHCOND +{ + NET_VCA_TRAVERSE_PLANE struVcaTraversePlane[MAX_ALERTLINE_NUM/*8*/]; //Խ + DWORD dwPreTime; /*ܱǰʱ λ:*/ + DWORD dwDelayTime; /*ܱӳʱ λ:*/ + NET_DVR_PTZPOS_INFO struPTZPosInfo; //PTZϢ + BYTE byAdvanceType; //Ϸʽ0-ʹţ1-ϣ2-ɫռ + BYTE byRes1[3]; // + NET_DVR_ADVANCE_COND_UNION uAdvanceCond; // + BYTE byRes[5604]; // +}NET_DVR_TRAVERSE_PLANE_SEARCHCOND, *LPNET_DVR_TRAVERSE_PLANE_SEARCHCOND; //Խѯ + +#define MAX_INTRUSIONREGION_NUM 8 // +typedef struct tagNET_DVR_INTRUSION_SEARCHCOND +{ + NET_VCA_INTRUSION struVcaIntrusion[MAX_INTRUSIONREGION_NUM/*8*/]; // + DWORD dwPreTime; /*ܱǰʱ λ:*/ + DWORD dwDelayTime; /*ܱӳʱ λ:*/ + NET_DVR_PTZPOS_INFO struPTZPosInfo; //PTZϢ + BYTE byAdvanceType;//Ϸʽ0-ʹţ1-ϣ2-ɫռ + BYTE byRes1[3]; // + NET_DVR_ADVANCE_COND_UNION uAdvanceCond; // + BYTE byRes[5348]; // +} NET_DVR_INTRUSION_SEARCHCOND, *LPNET_DVR_INTRUSION_SEARCHCOND; // + + +typedef struct tagNET_DVR_FACEDETECTION_SEARCHCOND +{ + NET_VCA_POLYGON struFacePolygon; //ʶ + DWORD dwPreTime; /*¼ǰʱ λ:*/ + DWORD dwDelayTime; /*¼ӳʱ λ:*/ + BYTE byRes[5972]; // +}NET_DVR_FACEDETECTION_SEARCHCOND, *LPNET_DVR_FACEDETECTION_SEARCHCOND; // + + +typedef union tagNET_DVR_AREA_SMARTSEARCH_COND_UNION +{ + BYTE byLen[6144]; //ṹ峤 + BYTE byMotionScope[64][96]; // 0-96λʾ64У96*64С飬1-ƶ0-ƶ + NET_DVR_TRAVERSE_PLANE_SEARCHCOND struTraversPlaneCond; //Խ + NET_DVR_INTRUSION_SEARCHCOND struIntrusionCond; // + NET_DVR_FACEDETECTION_SEARCHCOND struFaceSnapCond; // +}NET_DVR_AREA_SMARTSEARCH_COND_UNION, +*LPNET_DVR_AREA_SMARTSEARCH_COND_UNION; + + +// +typedef struct tagNET_DVR_SMART_SEARCH_PARAM +{ + BYTE byChan; //ͨ + BYTE bySearchCondType; //ܲNET_DVR_AREA_SMARTSEARCH_COND_UNION + /*0-ƶ 1-Խ⣬ 2-, 3- */ + WORD wChan; //ͨţ ֶǶbyChanչʹøֶκbyChanԲʹ + NET_DVR_TIME struStartTime; //¼ʼʱ + NET_DVR_TIME struEndTime; //¼ֹͣʱ + NET_DVR_AREA_SMARTSEARCH_COND_UNION uSmartSearchCond; //ܲ + BYTE bySensitivity; //ƶ,1 >80% 2 40%~80% 3 1%~40% + BYTE byRes2[11]; +}NET_DVR_SMART_SEARCH_PARAM, *LPNET_DVR_SMART_SEARCH_PARAM; + +typedef struct tagNET_DVR_SMART_SEARCH_PARAM_V40 +{ + DWORD dwSize; //ṹС + NET_DVR_STREAM_INFO struIDInfo; //ͨϢ + BYTE bySearchCondType; //ܲ 0-, 1-Խ, 2-,3-, 4-Ƽ + BYTE bySensitivity; //̬,1-100 + BYTE byRes1[2]; + NET_DVR_TIME_EX struStartTime; + NET_DVR_TIME_EX struEndTime; + NET_DVR_AREA_SMARTSEARCH_COND_UNION uSmartSearchCond; //ܲ + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cStartTimeDifferenceH; //ʼʱUTCʱСʱ-12 ... +14 ʾʱbyISO8601Ϊ1ʱЧ + char cStartTimeDifferenceM; //ʼʱUTCʱӣ-30, 0, 30, 45ʾʱbyISO8601Ϊ1ʱЧ + char cStopTimeDifferenceH; //ʱUTCʱСʱ-12 ... +14ʾʱbyISO8601Ϊ1ʱЧ + char cStopTimeDifferenceM; //ʱUTCʱӣ-30, 0, 30, 45ʾʱbyISO8601Ϊ1ʱЧ + BYTE byRes2[251]; +}NET_DVR_SMART_SEARCH_PARAM_V40,*LPNET_DVR_SMART_SEARCH_PARAM_V40; + + + +typedef struct tagNET_DVR_SMART_SEARCH_RET +{ + NET_DVR_TIME struStartTime; //ƶⱨʼʱ + NET_DVR_TIME struEndTime; //¼ֹͣʱ + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cStartTimeDifferenceH; //ʼʱUTCʱСʱ-12 ... +14 ʾʱ + char cStartTimeDifferenceM; //ʼʱUTCʱӣ-30, 0, 30, 45ʾʱ + char cStopTimeDifferenceH; //ʱUTCʱСʱ-12 ... +14ʾʱ + char cStopTimeDifferenceM; //ʱUTCʱӣ-30, 0, 30, 45ʾʱ + BYTE byRes[59]; +}NET_DVR_SMART_SEARCH_RET, *LPNET_DVR_SMART_SEARCH_RET; + +// IPSAN ļĿ¼ +typedef struct tagNET_DVR_IPSAN_SERACH_PARAM +{ + NET_DVR_IPADDR struIP; // IPSAN IPַ + WORD wPort; // IPSAN ˿ + BYTE byRes[10]; // ֽ +}NET_DVR_IPSAN_SERACH_PARAM, *LPNET_DVR_IPSAN_SERACH_PARAM; + +typedef struct tagNET_DVR_IPSAN_SERACH_RET +{ + BYTE byDirectory[128]; // صļĿ¼ + BYTE byRes[20]; +}NET_DVR_IPSAN_SERACH_RET, *LPNET_DVR_IPSAN_SERACH_RET; + +//DVR豸 +typedef struct +{ + DWORD dwSize; + BYTE sDVRName[NAME_LEN]; //DVR + DWORD dwDVRID; //DVR ID,ң //V1.4(0-99), V1.5(0-255) + DWORD dwRecycleRecord; //Ƿѭ¼,0:; 1: + //²ɸ + BYTE sSerialNumber[SERIALNO_LEN]; //к + DWORD dwSoftwareVersion; //汾,16λ汾,16λǴΰ汾 + DWORD dwSoftwareBuildDate; //,0xYYYYMMDD + DWORD dwDSPSoftwareVersion; //DSP汾,16λ汾,16λǴΰ汾 + DWORD dwDSPSoftwareBuildDate; // DSP,0xYYYYMMDD + DWORD dwPanelVersion; // ǰ汾,16λ汾,16λǴΰ汾 + DWORD dwHardwareVersion; // Ӳ汾,16λ汾,16λǴΰ汾 + BYTE byAlarmInPortNum; //DVR + BYTE byAlarmOutPortNum; //DVR + BYTE byRS232Num; //DVR 232ڸ + BYTE byRS485Num; //DVR 485ڸ + BYTE byNetworkPortNum; //ڸ + BYTE byDiskCtrlNum; //DVR Ӳ̿ + BYTE byDiskNum; //DVR Ӳ̸ + BYTE byDVRType; //DVR, 1:DVR 2:ATM DVR 3:DVS ...... + BYTE byChanNum; //DVR ͨ + BYTE byStartChan; //ʼͨ,DVS-1,DVR - 1 + BYTE byDecordChans; //DVR · + BYTE byVGANum; //VGAڵĸ + BYTE byUSBNum; //USBڵĸ + BYTE byAuxoutNum; //ڵĸ + BYTE byAudioNum; //ڵĸ + BYTE byIPChanNum; //ͨ 8λ8λbyHighIPChanNum + BYTE byZeroChanNum; //ͨ + BYTE bySupport; //λΪ0ʾ֧֣1ʾ֧֣ + //bySupport & 0x1, ʾǷ֧ + //bySupport & 0x2, ʾǷֱ֧ + //bySupport & 0x4, ʾǷ֧ѹȡ + //bySupport & 0x8, ʾǷֶ֧ + //bySupport & 0x10, ʾ֧ԶSADP + //bySupport & 0x20, ʾ֧Raid + //bySupport & 0x40, ʾ֧IPSAN + //bySupport & 0x80, ʾ֧rtp over rtsp + BYTE byEsataUseage; //EsataĬ;0-Ĭϱݣ1-Ĭ¼ + BYTE byIPCPlug; //0-رռ弴ã1-򿪼弴 + BYTE byStorageMode; //0-ģʽ,1-, 2֡ģʽ, 3-Զ + BYTE bySupport1; //λΪ0ʾ֧֣1ʾ֧ + //bySupport1 & 0x1, ʾǷ֧snmp v30 + //bySupport1 & 0x2, ֻ֧طź + //bySupport1 & 0x4, Ƿֲ֧ȼ + //bySupport1 & 0x8, 豸Ƿֲ֧ʱչ + //bySupport1 & 0x10, ʾǷֶ֧33 + //bySupport1 & 0x20, ʾǷ֧rtsp over http + WORD wDevType;//豸ͺ + BYTE byDevTypeName[DEV_TYPE_NAME_LEN];//豸ͺ + BYTE bySupport2; //չλΪ0ʾ֧֣1ʾ֧ + //bySupport2 & 0x1, ʾǷ֧չOSDַ(ն˺ץĻչ) + BYTE byAnalogAlarmInPortNum; //ģⱨ + BYTE byStartAlarmInNo; //ģⱨʼ + BYTE byStartAlarmOutNo; //ģⱨʼ + BYTE byStartIPAlarmInNo; //IPʼ + BYTE byStartIPAlarmOutNo; //IPʼ + BYTE byHighIPChanNum; //ͨ8λ + BYTE byEnableRemotePowerOn;//Ƿ豸ߵ״̬Զ̿ܣ0-ã1- + WORD wDevClass; //豸౸ĸƷߣ0 1-50 DVR51-100 DVS101-150 NVR151-200 IPC65534 ෽豸ͶӦкźֵ.docx + BYTE byRes2[6]; // +}NET_DVR_DEVICECFG_V40, *LPNET_DVR_DEVICECFG_V40; + +typedef struct +{ + DWORD dwSize; + BYTE sDVRName[NET_DEV_NAME_LEN]; //DVR + DWORD dwDVRID; //DVR ID,ң //V1.4(0-99), V1.5(0-255) + DWORD dwRecycleRecord; //Ƿѭ¼,0:; 1: + //²ɸ + BYTE sSerialNumber[SERIALNO_LEN]; //к + DWORD dwSoftwareVersion; //汾,16λ汾,16λǴΰ汾 + DWORD dwSoftwareBuildDate; //,0xYYYYMMDD + DWORD dwDSPSoftwareVersion; //DSP汾,16λ汾,16λǴΰ汾 + DWORD dwDSPSoftwareBuildDate; // DSP,0xYYYYMMDD + DWORD dwPanelVersion; // ǰ汾,16λ汾,16λǴΰ汾 + DWORD dwHardwareVersion; // Ӳ汾,16λ汾,16λǴΰ汾 + BYTE byAlarmInPortNum; //DVR + BYTE byAlarmOutPortNum; //DVR + BYTE byRS232Num; //DVR 232ڸ + BYTE byRS485Num; //DVR 485ڸ -- + BYTE byNetworkPortNum; //ڸ + BYTE byDiskCtrlNum; //DVR Ӳ̿ + BYTE byDiskNum; //DVR Ӳ̸ + BYTE byDVRType; //DVR, 1:DVR 2:ATM DVR 3:DVS ......-- + BYTE byChanNum; //DVR ͨ + BYTE byStartChan; //ʼͨ,DVS-1,DVR - 1 + BYTE byDecordChans; //DVR · + BYTE byVGANum; //VGAڵĸ -- + BYTE byUSBNum; //USBڵĸ + BYTE byAuxoutNum; //ڵĸ + BYTE byAudioNum; //ڵĸ + BYTE byIPChanNum; //ͨ -- + BYTE byZeroChanNum; //ͨ + BYTE bySupport; //λΪ0ʾ֧֣1ʾ֧֣ + //bySupport & 0x1, ʾǷ֧ + //bySupport & 0x2, ʾǷֱ֧ + //bySupport & 0x4, ʾǷ֧ѹȡ + //bySupport & 0x8, ʾǷֶ֧ + //bySupport & 0x10, ʾ֧ԶSADP + //bySupport & 0x20, ʾ֧Raid + //bySupport & 0x40, ʾ֧IPSAN + //bySupport & 0x80, ʾ֧rtp over rtsp + BYTE byEsataUseage; //EsataĬ;0-Ĭϱݣ1-Ĭ¼ + BYTE byIPCPlug; //0-رռ弴ã1-򿪼弴 + BYTE byStorageMode; //0-ģʽ,1-,2֡ģʽ + BYTE bySupport1; //λΪ0ʾ֧֣1ʾ֧ + //bySupport1 & 0x1, ʾǷ֧snmp v30 + //bySupport1 & 0x2, ֻ֧طź + //bySupport1 & 0x4, Ƿֲ֧ȼ + //bySupport1 & 0x8, 豸Ƿֲ֧ʱչ + //bySupport1 & 0x10, ʾǷֶ֧33 + //bySupport1 & 0x20, ʾǷ֧rtsp over http + WORD wDevType;//豸ͺչ + BYTE byDevTypeName[NET_DEV_TYPE_NAME_LEN];//豸ͺ + BYTE bySupport2; //չλΪ0ʾ֧֣1ʾ֧ + //bySupport2 & 0x1, ʾǷ֧չOSDַ(ն˺ץĻչ) + BYTE byAnalogAlarmInPortNum; //ģⱨĿ + BYTE byStartAlarmInNo; //ģⱨʼ + BYTE byStartAlarmOutNo; //ģⱨʼ + BYTE byStartIPAlarmInNo; //IPʼ + BYTE byStartIPAlarmOutNo; //IPʼ + BYTE byHighIPChanNum; //ͨ8λ + BYTE byEnableRemotePowerOn;//Ƿ豸ߵ״̬Զ̿ܣ0-ã1- + BYTE byRes[256]; // +}NET_DVR_DEVICECFG_V50, *LPNET_DVR_DEVICECFG_V50; +#define MAX_ZEROCHAN_NUM 16 +//ͨѹò +typedef struct tagNET_DVR_ZEROCHANCFG +{ + DWORD dwSize; //ṹ + BYTE byEnable; //0-ֹͣͨ룬1-ʾͨ + BYTE byRes1[3]; // + DWORD dwVideoBitrate; //Ƶ 0- 1-16K() 2-32K 3-48k 4-64K 5-80K 6-96K 7-128K 8-160k 9-192K 10-224K 11-256K 12-320K + // 13-384K 14-448K 15-512K 16-640K 17-768K 18-896K 19-1024K 20-1280K 21-1536K 22-1792K 23-2048K + //λ(31λ)ó1ʾԶ, 0-30λʾֵ(MIN-32K MAX-8192K) + DWORD dwVideoFrameRate; //֡ 0-ȫ; 1-1/16; 2-1/8; 3-1/4; 4-1/2; 5-1; 6-2; 7-4; 8-6; 9-8; 10-10; 11-12; 12-16; 13-20, //V2.014-15, 15-18, 16-22; + BYTE byRes2[32]; // +}NET_DVR_ZEROCHANCFG, *LPNET_DVR_ZEROCHANCFG; + +//ͨŲ +typedef struct tagNET_DVR_ZERO_ZOOMCFG +{ + DWORD dwSize; //ṹ + NET_VCA_POINT struPoint; //е + BYTE byState; //ڵ״̬0-С1-Ŵ + BYTE byPreviewNumber; //ԤĿ,0-1,1-4,2-9,3-16 òֻ + BYTE byPreviewSeq[MAX_WINDOW_V30];//ͨϢ òֻ + BYTE byRes[30]; // +}NET_DVR_ZERO_ZOOMCFG, *LPNET_DVR_ZERO_ZOOMCFG; + +#define DESC_LEN_64 64 +typedef struct tagNET_DVR_SNMPCFG +{ + DWORD dwSize; //ṹ + BYTE byEnable; //0-SNMP1-ʾSNMP + BYTE byRes1[3]; // + WORD wVersion; //snmp 汾 v1 = 1, v2 =2, v3 =3豸Ŀǰ֧ v3 + WORD wServerPort; //snmpϢն˿ڣĬ 161 + BYTE byReadCommunity[NAME_LEN]; //ͬ壬31,Ĭ"public" + BYTE byWriteCommunity[NAME_LEN];//дͬ,31 ֽ,Ĭ "private" + BYTE byTrapHostIP [DESC_LEN_64]; //ipַ֧IPV4 IPV6 + WORD wTrapHostPort; // trap˿ + BYTE byTrapName[NAME_LEN]; + BYTE byRes2[70]; // +}NET_DVR_SNMPCFG, *LPNET_DVR_SNMPCFG; + +typedef struct tagNET_DVR_SNMPv3_USER +{ + BYTE byUserName[NAME_LEN]; // û + BYTE bySecLevel; // ȫ 0- 1-У 2-ȨУ 3-ȨУ + BYTE byAuthtype; // ֤ 0-MD5֤ 1-SHA֤ 2: none + BYTE byPrivtype; // 0: DES; 1: AES; 2: none; + BYTE byRes[5]; + BYTE byAuthpass[PASSWD_LEN]; // ֤ + BYTE byPrivpass[PASSWD_LEN]; // +}NET_DVR_SNMPv3_USER, *LPNET_DVR_SNMPv3_USER; + +// snmpv30 +typedef struct tagNET_DVR_SNMPCFG_V30 +{ + DWORD dwSize; //ṹ + BYTE byEnableV1; //0-SNMP V11-ʾSNMP V1 + BYTE byEnableV2; //0-SNMP V21-ʾSNMP V2 + BYTE byEnableV3; //0-SNMP V31-ʾSNMP V3 + BYTE byRes1[3]; + WORD wServerPort; //snmpϢն˿ڣĬ 161 + BYTE byReadCommunity[NAME_LEN]; //ͬ壬31,Ĭ"public" + BYTE byWriteCommunity[NAME_LEN]; //дͬ,31 ֽ,Ĭ "private" + BYTE byTrapHostIP [DESC_LEN_64]; //ipַ֧IPV4 IPV6 + WORD wTrapHostPort; // trap˿ + BYTE byRes2[2]; + NET_DVR_SNMPv3_USER struRWUser; // дû + NET_DVR_SNMPv3_USER struROUser; // ֻû + BYTE byTrapName[NAME_LEN]; +}NET_DVR_SNMPCFG_V30, *LPNET_DVR_SNMPCFG_V30; + +#define PROCESSING 0 //ڴ +#define PROCESS_SUCCESS 100 // +#define PROCESS_EXCEPTION 400 //쳣 +#define PROCESS_FAILED 500 //ʧ +#define PROCESS_QUICK_SETUP_PD_COUNT 501 //һ3Ӳ + +#define SOFTWARE_VERSION_LEN 48 +#define NET_SDK_DEVICE_MODEL_LEN 24 //豸ͺų +typedef struct tagNET_DVR_SADPINFO +{ + NET_DVR_IPADDR struIP; // 豸IPַ + WORD wPort; // 豸˿ں + WORD wFactoryType; // 豸 + char chSoftwareVersion[SOFTWARE_VERSION_LEN]; + char chSerialNo[16]; // к + WORD wEncCnt; // ͨ + BYTE byMACAddr[MACADDR_LEN]; // MAC ַ + NET_DVR_IPADDR struSubDVRIPMask; // DVR IPַ + NET_DVR_IPADDR struGatewayIpAddr; // + NET_DVR_IPADDR struDnsServer1IpAddr; /* 1IPַ */ + NET_DVR_IPADDR struDnsServer2IpAddr; /* 2IPַ */ + BYTE byDns; + BYTE byDhcp; + BYTE szGB28181DevID[DEV_ID_LEN]; //GB28181Эʱ豸IDIPCGB28181Э + BYTE byActivated;//0-Ч1-Ѽ2-δ + BYTE byDeviceModel[NET_SDK_DEVICE_MODEL_LEN/*24*/];//豸ͺ + BYTE byRes[101]; // ֽ +}NET_DVR_SADPINFO, *LPNET_DVR_SADPINFO; + +#define MAX_SADP_NUM 256 // 豸Ŀ +typedef struct tagNET_DVR_SADPINFO_LIST +{ + DWORD dwSize; // ṹС + WORD wSadpNum; // 豸Ŀ + BYTE byRes[6]; // ֽ + NET_DVR_SADPINFO struSadpInfo[MAX_SADP_NUM]; // +}NET_DVR_SADPINFO_LIST, *LPNET_DVR_SADPINFO_LIST; + +typedef struct tagNET_DVR_SADP_VERIFY +{ + char chPassword[PASSWD_LEN]; + NET_DVR_IPADDR struOldIP; + WORD wOldPort; + BYTE byRes[62]; +}NET_DVR_SADP_VERIFY, *LPNET_DVR_SADP_VERIFY; + +/*******************************ݽӿ begin********************************/ +//ȡ豸Ϣӿڶ +#define DESC_LEN_32 32 //ֳ +#define MAX_NODE_NUM 256 //ڵ + +typedef struct tagNET_DVR_DESC_NODE +{ + int iValue; + BYTE byDescribe[DESC_LEN_32]; //ֶ + DWORD dwFreeSpace; //ȡбר,λΪM + BYTE byRes[12]; // +}NET_DVR_DESC_NODE, *LPNET_DVR_DESC_NODE; + +typedef struct tagNET_DVR_DISKABILITY_LIST +{ + DWORD dwSize; //ṹ + DWORD dwNodeNum; // + NET_DVR_DESC_NODE struDescNode[MAX_NODE_NUM]; // +}NET_DVR_DISKABILITY_LIST, *LPNET_DVR_DISKABILITY_LIST; + +//ݽб +#define BACKUP_SUCCESS 100 // +#define BACKUP_CHANGE_DEVICE 101 //豸豸 + +#define BACKUP_SEARCH_DEVICE 300 //豸 +#define BACKUP_SEARCH_FILE 301 //¼ļ +#define BACKUP_SEARCH_LOG_FILE 302 //־ļ +#define BACKUP_CHANGE_DISK 303 //ڸ + +#define BACKUP_EXCEPTION 400 //쳣 +#define BACKUP_FAIL 500 //ʧ + +#define BACKUP_TIME_SEG_NO_FILE 501 //ʱ¼ļ +#define BACKUP_NO_RESOURCE 502 //벻Դ +#define BACKUP_DEVICE_LOW_SPACE 503 //豸 +#define BACKUP_DISK_FINALIZED 504 //¼̷ +#define BACKUP_DISK_EXCEPTION 505 //¼쳣 +#define BACKUP_DEVICE_NOT_EXIST 506 //豸 +#define BACKUP_OTHER_BACKUP_WORK 507 //ݲڽ +#define BACKUP_USER_NO_RIGHT 508 //ûûвȨ +#define BACKUP_OPERATE_FAIL 509 //ʧ +#define BACKUP_NO_LOG_FILE 510 //Ӳ־ + +//ݹ̽ӿڶ +typedef struct tagNET_DVR_BACKUP_NAME_PARAM +{ + DWORD dwFileNum; //ļ + NET_DVR_FINDDATA_V30 struFileList[MAX_RECORD_FILE_NUM]; //ļб + BYTE byDiskDes[DESC_LEN_32]; //ݴ + BYTE byWithPlayer; //Ƿ񱸷ݲ + BYTE byContinue; /*Ƿ 0 1*/ + BYTE byRes[34]; // +}NET_DVR_BACKUP_NAME_PARAM, *LPNET_DVR_BACKUP_NAME_PARAM; + +typedef struct tagNET_DVR_BACKUP_TIME_PARAM +{ + LONG lChannel; //ʱ䱸ݵͨ + NET_DVR_TIME struStartTime; //ݵʼʱ + NET_DVR_TIME struStopTime; //ݵֹʱ + BYTE byDiskDes[DESC_LEN_32]; //ݴ + BYTE byWithPlayer; //Ƿ񱸷ݲ + BYTE byContinue; //Ƿ 0 1 + BYTE byDrawFrame; //0 ֡ 1 ֡ + BYTE byUseBackCfgParam; //ʹñеIJ0-Ч1-(úͨЧ)2- + DWORD dwStreamType; //ͣλʾ + //&0x1-ʾ + //&0x2-ʾ + //&0x4-ʾ + BYTE byRes[28]; // ֽ +}NET_DVR_BACKUP_TIME_PARAM, *LPNET_DVR_BACKUP_TIME_PARAM; +/********************************* end *******************************************/ + +typedef enum _COMPRESSION_ABILITY_TYPE_ +{ + COMPRESSION_STREAM_ABILITY = 0, //ѹ + MAIN_RESOLUTION_ABILITY = 1, //ѹֱ + SUB_RESOLUTION_ABILITY = 2, //ѹֱ + EVENT_RESOLUTION_ABILITY = 3, //¼ѹֱ + FRAME_ABILITY = 4, //֡ + BITRATE_TYPE_ABILITY = 5, //λ + BITRATE_ABILITY = 6, //λ + THIRD_RESOLUTION_ABILITY = 7, //ѹֱ + STREAM_TYPE_ABILITY = 8, // + PIC_QUALITY_ABILITY = 9, //ͼ + INTERVAL_BPFRAME_ABILITY = 10, //BP֡ + VIDEO_ENC_ABILITY = 11, //Ƶ + AUDIO_ENC_ABILITY = 12, //Ƶ + VIDEO_ENC_COMPLEXITY_ABILITY = 13, //Ƶ븴Ӷ + FORMAT_ABILITY = 14, //װʽ +}COMPRESSION_ABILITY_TYPE; + +//б +typedef struct tagNET_DVR_ABILITY_LIST +{ + DWORD dwAbilityType; // COMPRESSION_ABILITY_TYPE + BYTE byRes[32]; //ֽ + DWORD dwNodeNum; // + NET_DVR_DESC_NODE struDescNode[MAX_NODE_NUM]; // +}NET_DVR_ABILITY_LIST, *LPNET_DVR_ABILITY_LIST; + +#define MAX_ABILITYTYPE_NUM 12 // +// ѹб +typedef struct tagNET_DVR_COMPRESSIONCFG_ABILITY +{ + DWORD dwSize; //ṹ + DWORD dwAbilityNum; //͸ + NET_DVR_ABILITY_LIST struAbilityNode[MAX_ABILITYTYPE_NUM]; // +}NET_DVR_COMPRESSIONCFG_ABILITY, *LPNET_DVR_COMPRESSIONCFG_ABILITY; +/********************************9000RH begin****************************************/ +#define SUPPORT_PD_NUM 16 +#define SUPPORT_ARRAY_NUM 8 +#define SUPPORT_VD_NUM 128 +#define SUPPORT_PD_NUM_ 16 +#define SUPPORT_PD_NUM_PARTTWO 8 + +typedef enum tagRAID_MODE +{ + RAID0 = 1, + RAID1, + RAID10, + RAID1E, + RAID5, + RAID6, + RAID50, + JBOD, + RAID60 +}RAID_MODE; + +typedef enum tagHD_SUPPORT_TYPE +{ + HD_TYPE_SATA = 0x01, + HD_TYPE_PATA = 0x02, + HD_TYPE_SAS = 0x04, + HD_TYPE_ATAPI = 0x08, + HD_TYPE_TAPE = 0x10, + HD_TYPE_SES = 0x20 +}HD_SUPPORT_TYPE; + +// λʾ λΪ0ʾ֧ 1ʾ֧ +typedef enum tagSUPPORT_RAID_TYPE +{ + RAID0_ABILITY = 0x0001, + RAID1_ABILITY = 0x0002, + RAID10_ABILITY = 0x0004, + RAID1E_ABILITY = 0x0008, + RAID5_ABILITY = 0x0010, + RAID6_ABILITY = 0x0020, + RAID50_ABILITY = 0x0040, + JBOD_ABILITY = 0x0080, + RAID60_ABILITY = 0x0100 +}SUPPORT_RAID_TYPE; + +// +typedef struct tagNET_DVR_PHY_DISK_INFO +{ + WORD wPhySlot; // Ӳ̲λ + BYTE byType; // ӲϢ0 ͨ1ȫȱ2-ȱ 3- + BYTE byStatus; // Ӳ״̬ 0- 1- 2-ɾ 3-̶ʧ 4- 5- 6- 7-쳣 8-SMART״̬쳣 9- 10-л,11-SMRӲ̲֧й,0xff- + BYTE byMode[40]; // Ӳ ַ + DWORD dwHCapacity; // 32λ λkb + DWORD dwLCapacity; // 32λ + BYTE byArrrayName[MAX_NAMELEN]; + WORD wArrayID; // ID + BYTE byArrayInformation; // ǷϢ0 1 + BYTE byRes[101]; // ֽ +}NET_DVR_PHY_DISK_INFO, *LPNET_DVR_PHY_DISK_INFO; + +typedef struct tagNET_DVR_PHY_DISK_LIST +{ + DWORD dwSize; + DWORD dwCount; + NET_DVR_PHY_DISK_INFO struPhyDiskInfo[SUPPORT_PD_NUM]; +}NET_DVR_PHY_DISK_LIST, *LPNET_DVR_PHY_DISK_LIST; + +typedef enum tagBGA_TYPE +{ + BGA_REBUILD = 0x01, // ؽ + BGA_CONSISTENCY_FIX = 0x02, // һԼ鲢޸ + BGA_CONSISTENCY_CHECK = 0x04, // һԼ + BGA_INIT_QUICK = 0x08, // ʼ() + BGA_INIT_BACK = 0x10, // ʼ(ȫ) + BGA_MIGRATION = 0x20, // Ǩ + BGA_INIT_FORE = 0x40, // ʼ + BGA_COPYBACK = 0x80 // Ǩ +}BGA_TYPE; + +typedef enum tagBGA_STATE +{ + BGA_STATE_NONE = 0, // ޺̨ + BGA_STATE_RUNNING, // ̨ + BGA_STATE_ABORTED, // ̨ȡ + BGA_STATE_PAUSED // ̨ͣ +}BGA_STATE; +typedef struct tagNET_DVR_BGA_INFO +{ + BYTE byBga; // ̨ + BYTE byBgaState; /*ֵ--̨״̬*/ + WORD wBgaPercentage; /*ֵ--ִ̨аٷֱ*/ + BYTE byRes[4]; // ֽ +}NET_DVR_BGA_INFO, *LPNET_DVR_BGA_INFO; + +// Ϣ +typedef struct tagNET_DVR_ARRAY_INFO +{ + WORD wArrayID; // ID + BYTE byRaidMode; // raidģʽ RAID_MODE + BYTE byStatus; // 0- 1-̶ʧ 2- 3- 4-쳣 5- 6- 7-ɾ 8-SMART״̬쳣 0xff- + DWORD dwHCapacity; // 32λ + DWORD dwLCapacity; // 32λ + DWORD dwHFreeSpace; // ʣռ32λ + DWORD dwLFreeSpace; // ʣռ32λ + BYTE byArrayName[MAX_NAMELEN]; // + BYTE byPDCount; // Ŀ + BYTE bySpareCount; // ȱĿ + BYTE byRes1[2]; + WORD wPDSlots[SUPPORT_PD_NUM]; // + WORD wSparePDSlots[SUPPORT_PD_NUM]; // ȱ + NET_DVR_BGA_INFO struBgaInfo; // ̨״̬ + WORD wPDSlotsPartTwo[SUPPORT_PD_NUM_PARTTWO]; //չ0ʾЧ + WORD wSparePDSlotsPartTwo[SUPPORT_PD_NUM_PARTTWO]; // ȱչ0ʾЧ + BYTE byRes2[48]; // ֽ +}NET_DVR_ARRAY_INFO, *LPNET_DVR_ARRAY_INFO; + + +typedef struct tagNET_DVR_ARRAY_LIST +{ + DWORD dwSize; // ṹС + DWORD dwCount; // и + NET_DVR_ARRAY_INFO struArrayInfo[SUPPORT_ARRAY_NUM]; +}NET_DVR_ARRAY_LIST, *LPNET_DVR_ARRAY_LIST; + +//Ϣ +typedef struct tagNET_DVR_VD_INFO +{ + WORD wSlot; //̲λ + BYTE byStatus; // ״̬0- 1- 2-ɾ 3-̶ʧ 4- 5- 6- 7-쳣 8-SMART״̬쳣 0xff- + BYTE byRaidMode; // Raid ģʽ RAID_MODE + WORD wArrayID; // ID + BYTE byRepair; // ǷҪ޸ 0 Ҫ 1Ҫ + BYTE byUsage; //LUNʹ÷ʽ 0-IPSAN 1-FCSAN 2-DVR 3-NAS 4-¼ + BYTE byArrayName[MAX_NAMELEN]; + BYTE byName[MAX_NAMELEN]; // + DWORD dwHCapacity; // 32λ + DWORD dwLCapacity; // 32λ + DWORD dwHFreeSpace; // ʣռ32λ + DWORD dwLFreeSpace; // ʣռ32λ + NET_DVR_BGA_INFO struBgaInfo; // ̨״̬ + DWORD dwBlockSize; //С洢ԪС + NET_DVR_IPADDR struWarrantIP; // ȨDVRIP + char szArrayGroup[NAME_LEN]; //ʹõ飬ԶŸΪʹĬ + BYTE byRes[20]; +}NET_DVR_VD_INFO, *LPNET_DVR_VD_INFO; + +typedef struct tagNET_DVR_VD_LIST +{ + DWORD dwSize; // ṹС + DWORD dwCount; // ̸ + NET_DVR_VD_INFO struVDInfo[SUPPORT_VD_NUM]; // +}NET_DVR_VD_LIST, *LPNET_DVR_VD_LIST; + +typedef struct tagNET_DVR_ADAPTER_VERSION +{ + WORD wMajorVersion; + WORD wMinorVersion; + WORD wRevisionNumber; + WORD wBuildNumber; +}NET_DVR_ADAPTER_VERSION, *LPNET_DVR_ADAPTER_VERSION; + +typedef struct tagNET_DVR_VD_SLOT +{ + WORD wVDSlot; + BYTE byAlloc; // ǷѾ + BYTE byRes[5]; + DWORD dwHVDSlotSize; // ̿ռС32λ + DWORD dwLVDSlotSize; // ̿ռС32λ +}NET_DVR_VD_SLOT, *LPNET_DVR_VD_SLOT; + +typedef struct tagNET_DVR_ARRAY_SPACE_ALLOC_INFO +{ + BYTE byVDSlotCount; /*current number of slots in DG*/ + BYTE byRes1[3]; // ֽ + NET_DVR_VD_SLOT struVDSlots[SUPPORT_VD_NUM]; +}NET_DVR_ARRAY_SPACE_ALLOC_INFO, *LPNET_DVR_ARRAY_SPACE_ALLOC_INFO; + +typedef struct tagNET_DVR_RAID_ADAPTER_INFO +{ + DWORD dwSize; // ṹС + NET_DVR_ADAPTER_VERSION struVersion; // 汾 + BYTE bySlotCount; //λ + BYTE bySupportMigrate; // Ǩ(1-֧ 0-֧) + BYTE bySupportExpand; // (1-֧ 0-֧) + BYTE bySupportRebuild; // Ƿ֧ؽ (1֧ 0-֧) + WORD wSlotSupportType; // λʾ HD_SUPPORT_TYPE + WORD wSupportRaidType; // ֧Raid λʾ + BYTE byAutoRebuild; // 0 Զؽ 1Զؽ + BYTE byRes[27]; // ֽ +}NET_DVR_RAID_ADAPTER_INFO, *LPNET_DVR_RAID_ADAPTER_INFO; + +typedef struct tagNET_DVR_OPERATE_ARRAY_PARAM +{ + //Ƿһ Ϊһ򴴽ʱʱ֮ҪarrayƣҪ + // 豸д + BYTE byRaidMode; // /ǨʱRaid + BYTE byPDCount; // Ŀ + WORD wArrayID; // ǨƻؽʱҪָID + WORD wPDSlots[SUPPORT_PD_NUM];// + BYTE byName[MAX_NAMELEN]; // array + BYTE byInitMode; //ʼʽ + BYTE byRes1; + WORD wPDSlotsPartTwo[SUPPORT_PD_NUM_PARTTWO]; //Ϣ + BYTE byRes2[2]; +}NET_DVR_OPERATE_ARRAY_PARAM, *LPNET_DVR_OPERATE_ARRAY_PARAM; + + +#define INIT_QUICK 0 /*ٳʼ*/ +#define INIT_FULLFOREGROUND 1 /*ȫʼ(ǰ̨)*/ +#define INIT_FULLBACKGROUND 2 /*ȫʼ(̨)*/ + +typedef struct tagNET_DVR_OPERATE_VD_PARAM +{ + WORD wArrayID; // ID + BYTE bySlot; // ָλ + BYTE byInitType; // ʱʼ 0 - ٳʼ 1 - ǰ̨ȫʼ 2 - ̨ȫʼ + DWORD dwHCapacity; // ̴С32λ + DWORD dwLCapacity; // ̴С32λ + BYTE byName[MAX_NAMELEN]; // + BYTE byRes2[16]; // ֽ +}NET_DVR_OPERATE_VD_PARAM, *LPNET_DVR_OPERATE_VD_PARAM; + + +typedef struct tagNET_DVR_SPARE_DISK_PARAM +{ + WORD wPDSlot; // ̲λ + WORD wArrayID; // + BYTE bySpareType; // ȱ 1-ȫȱ 2 ָ ΪָеʱҪָеID + BYTE byRes[7]; // ֽ +}NET_DVR_SPARE_DISK_PARAM, *LPNET_DVR_SPARE_DISK_PARAM; + +/********************************9000RH End****************************************/ + + +#define MATRIX_MAXDECSUBSYSTEMCHAN 4//Ƶۺƽ̨ϵͳͨ + +//ȡϵͳϢ +typedef struct tagNET_DVR_DECSUBSYSTEMJIONSTATUS +{ + BYTE byJoinStatus;//״̬0-ûй1-Ѿ + BYTE byJoinSubSystem;//ϵͳλ + BYTE byJoinDispNum;//ʾͨ + BYTE byJoinSubWindowNum;//Ӵں + BYTE byRes[4]; +}NET_DVR_DECSUBSYSTEMJIONSTATUS,LPNET_DVR_DECSUBSYSTEMJIONSTATUS; + +typedef struct tagNET_DVR_SINGLESUBSYSTEMJOININFO +{ + BYTE bySubSystemType;//ϵͳͣ0-ޣ1-ϵͳ2-ϵͳ3-ϵͳ4-ϵͳ,5-ϵͳ6-ϵͳ + BYTE byConnectStatus;//ϵͳ״̬1-2-ӶϿ + BYTE byMatrixNum;//Ƶۺƽ̨ţϵͳ34ʱ + BYTE bySubSystemNum;//ϵͳλţ0~79ϵͳ34ʱ + NET_DVR_DECSUBSYSTEMJIONSTATUS struDecSub [MATRIX_MAXDECSUBSYSTEMCHAN]; + BYTE byBindStatus;//״̬0-ûа󶨣1-Ѿ󶨣ƴʱõ + BYTE byRes[7]; +}NET_DVR_SINGLESUBSYSTEMJOININFO,LPNET_DVR_SINGLESUBSYSTEMJOININFO; + +typedef struct tagNET_DVR_ALLDECSUBSYSTEMJOININFO +{ + DWORD dwSize; + NET_DVR_SINGLESUBSYSTEMJOININFO struSingleSubSystemJoinInfo[MAX_SUBSYSTEM_NUM];//80 + BYTE byRes[8]; +}NET_DVR_ALLDECSUBSYSTEMJOININFO, *LPNET_DVR_ALLDECSUBSYSTEMJOININFO; + +//2010-04-13 NAT +typedef struct tagNET_DVR_NATASSOCIATECFG +{ + DWORD dwSize; + NET_DVR_NETCFG_V30 struNatIpAddress[2];//NAT IPַ + BYTE byNATEnable;//ǷNATܣ0-ã0- + BYTE byNATCfgMode; //NATģʽ0-ֶ䣬1-Զ + BYTE byRes[62]; +}NET_DVR_NATASSOCIATECFG, *LPNET_DVR_NATASSOCIATECFG; + +//2010-06-01 Ƶۺƽ̨ +typedef struct tagNET_DVR_TEMPERATUREALARMCFG +{ + BYTE byEnableTemperatureAlarm;//ʹ¶ȳޱ0-1- + BYTE byRes1[3]; + int iTemperatureUpLimited; //ȷСλ1234ʾ¶12.34 + int iTemperatureDownLimited; + NET_DVR_HANDLEEXCEPTION_V30 struTempHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*ʱ*/ + BYTE byRes2[32]; +}NET_DVR_TEMPERATUREALARMCFG, *LPNET_DVR_TEMPERATUREALARMCFG; + +typedef struct tagNET_DVR_BOARDALARMCFG +{ + BYTE byEnablePullAlarm;//Ȳαʹܣ1-0- + BYTE byRes1[3]; + NET_DVR_HANDLEEXCEPTION_V30 struBoardHandleType; /* ʽ */ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*ʱ*/ + BYTE byRes2[32]; +}NET_DVR_BOARDALARMCFG, *LPNET_DVR_BOARDALARMCFG; + + +typedef struct tagNET_DVR_VIDEOPLATFORMALARMCFG +{ + DWORD dwSize; + NET_DVR_TEMPERATUREALARMCFG struTempAlarmCfg; + NET_DVR_BOARDALARMCFG struBoardAlarmCfg; + NET_DVR_HANDLEEXCEPTION_V30 struHandleException[MAX_EXCEPTIONNUM];//0-쳣1-ϵͳ쳣2-IPַͻ3-߶ϣ4-Ƿʣ5-쳣6-ǰ쳣 + BYTE byRes[32]; +}NET_DVR_VIDEOPLATFORMALARMCFG,*LPNET_DVR_VIDEOPLATFORMALARMCFG; +//2010-05-17 +typedef struct tagNET_DVR_CODESPLITTERASSOCIATE +{ + DWORD dwSize; + NET_DVR_IPADDR struIP; /*IPַ*/ + WORD wPort; //˿ں + BYTE byRes1[6]; + BYTE sUserName[NAME_LEN]; /* û32 */ + BYTE sPassword[PASSWD_LEN]; /* 16*/ + BYTE byChan;//ͨ + BYTE byRes2[15]; +} NET_DVR_CODESPLITTERASSOCIATE, *LPNET_DVR_CODESPLITTERASSOCIATE; + +//2010-06-01 Ƶۺƽ̨ϴṹ +typedef struct tagNET_DVR_MATRIXSUBSYSTEMINFO +{ + BYTE byMatrixNum;//Ƶۺƽ̨ + BYTE bySubSystemNum;//ϵͳλ + BYTE byRes [14]; +} NET_DVR_MATRIXSUBSYSTEMINFO, *LPNET_DVR_MATRIXSUBSYSTEMINFO; + +typedef struct tagNET_DVR_VIDEOPLATFORM_ALRAMINFO +{ + DWORD dwSize; //ṹС + BYTE byAlarmType; // 0-γӰ壬1-Ӱ,2-¶ȳޱ3-¶ȳޱ4-״̬쳣5-ϵͳ쳣,6-Ƿʣ7-쳣,8-ǰ쳣 + BYTE byBoardNum; //Ӱţ1B10ֶָ֧ΣЧΪ0xff + BYTE byRes1[2]; + BYTE bySubSystemChan[8]; //Ӱλ,һӰ8ϵͳֱӦIJλţϵͳ쳣ʱbySubSystemChan[0]ʾӦϵͳ + int iTemperature; //¶ȳޱʱã¶ֵ + BYTE byMainboardSeq;//¶ȳޱʱã0-壬1- + BYTE byRes2[3]; + BYTE byFanSequence[32];//쳣ȣbyFanSequence[i] = 1ʾi+1쳣byFanSequence[i] = 0ʾi+1 + NET_DVR_MATRIXSUBSYSTEMINFO struInputNote;// 쳣ʱʹã + NET_DVR_MATRIXSUBSYSTEMINFO struOutputNote;//쳣ʱʹã + BYTE byRes3[68]; +}NET_DVR_VIDEOPLATFORM_ALRAMINFO,*LPNET_DVR_VIDEOPLATFORM_ALRAMINFO; + +/***************************ѶDVR begin *****************************/ +#define MAX_INQUEST_PIP_NUM 3 //ͨʾĻлĿ +#define MAX_INQUEST_CDRW_NUM 4 //¼Ŀ +#define MAX_INQUEST_PIP_NUM_EX 16 //Ѷл + +typedef struct +{ + DWORD dwSize; + DWORD dwNum; //¼ + DWORD dwRwSelectPara[MAX_CHANNUM_V30];// Ƿѡиù + DWORD dwModeSelect; //0ʾѭ¼ģʽ 1ʾп¼ģʽ(Ĭģʽ) + BYTE byRes[24]; // + DWORD dwStartCDRW; //DVR Ѿʼ¼ + DWORD dwHdExcp; //Ӳ + DWORD dwInterval; //ʱ10(0)20(1)30(2) + char sLable[64]; // +}NET_DVR_INQUEST_CDRW_CFG, *LPNET_DVR_INQUEST_CDRW_CFG; + +typedef struct +{ + char sFileName[36]; //ļ + DWORD dwFileLen; //ļ +}NET_DVR_INQUEST_FILEINFO, *LPNET_DVR_INQUEST_FILEINFO; + +typedef struct +{ + DWORD dwFileNum; // Ҫ¼ɾļһ20 + NET_DVR_INQUEST_FILEINFO struFileInfo[MAX_RECORD_FILE_NUM]; + //ڱʾ¼ļʱʹ + DWORD dwCDIndex; //¼1:ѡ1ſ¼2:ѡ2ſ¼ 3:3ſ¼,4:4ſ¼,5:п¼ + DWORD bFinalizeDisc; // 0=¼֮󲻷̣1=¼֮ +}NET_DVR_INQUEST_FILES, *LPNET_DVR_INQUEST_FILES; + +typedef struct +{ + DWORD dwEnable; //¼״̬ǷЧ,0-Ч,1-Ч + DWORD dwStatus; /* dwType=0ʱ + 0-1-޹̻쳣, + dwType=12ʱ + 0-¼1-޹̻쳣 + 2-ѷ(81֧)3-̿ռ䲻㣬 + 4-쳣Ѷֹ(81֧) + dwType=3ʱ + 0-¼1-޹̻쳣 + 2-ѷ(81֧)3-̿ռ䲻 + dwType=4ʱ + 0-¼1-޹̻쳣 + 2-ѷ(81֧)3-̿ռ䲻 + dwType=5ʱ, + 0- 1-޹̻쳣, + 2-ѷ(81֧) + dwType=67ʱ, + 0-¼, 1-޹̻쳣, + 2-ѷ(81֧), 3-̿ռ䲻*/ + DWORD dwVolumn; //,λM + DWORD dwFreeSpace; //ʣ,λM + DWORD dwTimeLeft; // ʣʱ䣬λ + BYTE byCDType; // + BYTE byRes[3]; //ֽ +}NET_DVR_INQUEST_CDRW, *LPNET_DVR_INQUEST_CDRW; + +typedef struct +{ +/*״̬0-Ѷʼ +1-Ѷп¼2-Ѷֹͣ +3-¼Ѷļ, +4-(º󱸷ݺͱر) +5- +6-ʼӲ + 7-ָѶ*/ + DWORD dwType; + NET_DVR_INQUEST_CDRW strCDRWNum[MAX_INQUEST_CDRW_NUM]; //0ʾ¼1 + NET_DVR_TIME_EX struInquestStartTime; //Ѷʼʱ + BYTE byRes[16]; // +}NET_DVR_INQUEST_CDRW_STATUS, *LPNET_DVR_INQUEST_CDRW_STATUS; + +typedef struct +{ + BYTE byPipChan; //лʾͨ 0xFFر + BYTE byRes[3]; //ֽ + WORD wTopLeftX; //лx + WORD wTopLeftY; //лY +}NET_DVR_INQUEST_PIP_PARAM, *LPNET_DVR_INQUEST_PIP_PARAM; + +typedef struct +{ + BYTE byBaseChan; //ʾлڵͨ + BYTE byBackChan; //ʾлͨ + BYTE byPIPMode; /*Ƿ, + 0 ǰС + 1 ǰ1С + 2 ǰ2С + 3 ǰ3С + */ + BYTE byRes; //ֽ + NET_DVR_INQUEST_PIP_PARAM strPipPara[MAX_INQUEST_PIP_NUM]; //λõIJ +}NET_DVR_INQUEST_PIP_STATUS, *LPNET_DVR_INQUEST_PIP_STATUS; + +//V40չлչΪ32 +typedef struct tagNET_DVR_INQUEST_PIP_PARAM_V40 +{ + BYTE byPipChan; /*лʾͨ 0xFFر*/ + BYTE byRes1[3]; + WORD wTopLeftX; /*лx*/ + WORD wTopLeftY; /*лY*/ + WORD wHeight; /*лĸ */ + WORD wWidth; /*лĿ */ + BYTE byRes2[32]; +}NET_DVR_INQUEST_PIP_PARAM_V40, *LPNET_DVR_INQUEST_PIP_PARAM_V40; + +typedef struct tagNET_DVR_INQUEST_PIP_STATUS_V40 +{ + NET_DVR_STRUCTHEAD struStructHead; + BYTE byBaseChan; /*ʾлڵͨ*/ + BYTE byBackChan; /*ʾлͨ*/ + BYTE byPIPMode; /*Ƿ, 0 ǰС + 1 ǰ1С + 2 ǰ2С + 3 ǰ3С + 4 ǰ4С + 5 ǰ5С + 6 ǰ6С + 7 ǰ7С + 8 ǰ8С + 9 ǰ9С + 255 ǰڹرԤ*/ + BYTE byPipCount; /*Сĸ*/ + BYTE byPicShowMode; /*ʾģʽ0-л1-2-ƴ*/ + BYTE byRes[31]; /**/ + NET_DVR_INQUEST_PIP_PARAM_V40 strPipPara[MAX_INQUEST_PIP_NUM_EX]; /*λõIJ*/ +}NET_DVR_INQUEST_PIP_STATUS_V40, *LPNET_DVR_INQUEST_PIP_STATUS_V40; + +typedef struct +{ + BYTE sSecretKey[16]; /*Կ*/ + BYTE byRes[64]; /*ֽ*/ +}NET_DVR_INQUEST_SECRET_INFO, *LPNET_DVR_INQUEST_SECRET_INFO; + + +/***************************ѶDVR end *****************************/ + + +/********************************ӿڲṹ(end)*********************************/ +#define MAX_BIGSCREENNUM 100//ƴ + +typedef struct tagNET_DVR_SINGLESCREENCFG +{ + BYTE byScreenSeq;//Ļţ0xffʾô,64-Tһʾ + BYTE bySubSystemNum;//ϵͳλ,ֵû + BYTE byDispNum;//ϵͳ϶Ӧʾͨţ64-Tиֵʾʾͨ + BYTE byRes[9]; +}NET_DVR_SINGLESCREENCFG, *LPNET_DVR_SINGLESCREENCFG; + +typedef struct tagNET_DVR_BIGSCREENCFG +{ + DWORD dwSize; + BYTE byEnable;//ƴʹܣ0-ʹܣ1-ʹ + BYTE byModeX;/*ƴģʽ*/ + BYTE byModeY; + BYTE byMainDecodeSystem;//ۺƽ̨Ľиֵʾλţ64-Tиֵʾͨ + BYTE byMainDecoderDispChan;//ʾͨţ1.1netra汾netraʾܹͨΪ64-TиֵЧ + BYTE byVideoStandard; //ÿʽͬ 1:NTSC,2:PAL + BYTE byRes1[2]; + DWORD dwResolution; //ÿֱͬ + //ƴӴĻϢ + NET_DVR_SINGLESCREENCFG struFollowSingleScreen[MAX_BIGSCREENNUM]; + //ʼΪ׼ + WORD wBigScreenX; //ڵǽʼX + WORD wBigScreenY; //ڵǽʼY + BYTE byRes2[12]; +}NET_DVR_BIGSCREENCFG, *LPNET_DVR_BIGSCREENCFG; + + +#define DECODEPIC_LEFTADJUST 1 /*ͼ*/ +#define DECODEPIC_RIGHTADJUST 2 /*ͼ*/ +#define DECODEPIC_UPADJUST 3 /*ͼ*/ +#define DECODEPIC_DOWNADJUST 4 /*ͼ*/ +#define DECODEPIC_REDUCEADJUST 5 /*ͼС*/ +#define DECODEPIC_FULL_SCREEN_ADJUST 6 /*ͼȫ*/ +#define DECODEPIC_CANCEL_FULL_SCREEN_ADJUST 7 /*ͼȡȫʾ*/ +#define DECODEPIC_AUTOADJUST 8 /* ͼԶ */ +#define DECODEPIC_HEIGHTADJUST 9 /* ͼ߶ȵ */ +#define DECODEPIC_WIDTHADJUST 10 /* ͼȵ */ + +#define MAX_UNITEDMATRIX_NUM 8//Ƶۺƽ̨ +#define MAX_SUBDOMAIN_NUM 4// +typedef struct tagNET_DVR_SUBSERVERINFO +{ + BYTE bySequence;//ţţƵۺƽ̨ƽ̨ţ0ʾ޴ƽ̨\ + BYTE byBelongSubDomain;//ƽ̨Чʾĸ + BYTE byRes1[6]; + DWORD dwMaxIpcNums;//ӵIPC + NET_DVR_IPADDR struSubMatrixIP; /*IPַ*/ + WORD wSubMatrixPort; /*ϵͳ˿ں*/ + BYTE byRes2[6]; +}NET_DVR_SUBSERVERINFO, *LPNET_DVR_SUBSERVERINFO; + +typedef struct tagNET_DVR_UNITEDMATRIXINFO +{ + DWORD dwSize; + NET_DVR_SUBSERVERINFO struDomainInfo; + NET_DVR_SUBSERVERINFO struSubDomainInfo[MAX_SUBDOMAIN_NUM];//Ϣ + NET_DVR_SUBSERVERINFO struMatrixInfo[MAX_UNITEDMATRIX_NUM];//Ƶۺƽ̨Ϣ + BYTE byRes[32]; +}NET_DVR_UNITEDMATRIXINFO, *LPNET_DVR_UNITEDMATRIXINFO; + +typedef struct tagNET_DVR_REGCALLBACKPARAM +{ + char sDeviceID[NAME_LEN];//豸ID + char sPassword[PASSWD_LEN]; + BYTE sSerialNumber[SERIALNO_LEN]; /* 豸к */ + DWORD dwDeviceType;//豸 + BYTE nStatus;// ״̬0ߣ1ߣ + /* net type, 0: unknow; 1: 2G wireless networks; 2: 3G wireless networks; 3: line networks */ + BYTE byNetType; + BYTE byRes[14]; +}NET_DVR_REGCALLBACKPARAM, *LPNET_DVR_REGCALLBACKPARAM; + +typedef struct tagNET_DVR_LOGONREPONSEPARAM +{ + //ʱλ, 5ı180ڡĬ15롣 + WORD wHeartbeatTime; + BYTE byOvertimes;// 豸ʱĬ3 + BYTE byRes[13]; +}NET_DVR_LOGONREPONSEPARAM, *LPNET_DVR_LOGONREPONSEPARAM; + + +typedef struct tagNET_DVR_PREVIEWPARAM +{ + BYTE byTransProtol; //Э飬0-TCP, 1-UDP + BYTE byTransMode; ///* ģʽ 0 1*/ + NET_DVR_IPADDR struCuIp; //CUIPַ + WORD wPort;/*CU˿*/ + WORD wUdpPort; + BYTE bySupportQos;//ǷQOS,1-ã0- + //ǷNATԤ0-1-(ֻbyTransModeֶ) + BYTE byNatRequest; + BYTE byPreviewType;// 0-ͨԤ 1-ʱԤ + BYTE byRes[7]; +}NET_DVR_PREVIEWPARAM, *LPNET_DVR_PREVIEWPARAM; +typedef struct tagNET_DVR_DEVICENATINFO +{ + NET_DVR_IPADDR struPuIp; //PUIPַ + WORD wOuterPort;/*PU˿*/ + WORD wInterPort;//PUƵıض˿ + DWORD nSessionID;//CMSsessionID + BYTE byRes[4]; +}NET_DVR_DEVICENATINFO, *LPNET_DVR_DEVICENATINFO; + + +typedef struct tagNET_DVR_PREVIEWCALLBACKPARAM +{ + LONG lChannel; + BYTE nLinkProtocol; + BYTE nTransMode; + BYTE byPreviewType; //0-ͨԤ 1-ʱԤ + BYTE byRes[5]; + DWORD nSessionID;//CMSsessionID +}NET_DVR_PREVIEWCALLBACKPARAM, *LPNET_DVR_PREVIEWCALLBACKPARAM; + +//ط +typedef struct tagNET_DVR_PLAYBACKREQUESTPARAM +{ + BYTE byPlayBackMode; /* طģʽ 1 2ʱ */ + BYTE byRes1[3]; + union + { + char sFileName [100]; /* طŵļ */ + struct + { + LONG lChannel; /*طŵͨ*/ + NET_DVR_TIME struStartTime; /* ʱطŵĿʼʱ */ + NET_DVR_TIME struStopTime; /* ʱطŵĽʱ */ + BYTE byRes[48]; + }struPlayBackbyTime; + }playbackmode; + NET_DVR_IPADDR struCuIp; //CUIPַ + WORD wPort;/*CU˿*/ + BYTE byRes2[2]; + DWORD dwSessionID;//CMSsessionID, + BYTE byRes3[16]; +}NET_DVR_PLAYBACKREQUESTPARAM, *LPNET_DVR_PLAYBACKREQUESTPARAM; + +//2010-10-06 +typedef struct tagNET_DVR_PLAYBACKCALLBACKPARAM +{ + BYTE byPlayBackMode; /* طģʽ 1 2ʱ */ + BYTE byRes1[3]; + union + { + char sFileName [100]; /* طŵļ */ + struct + { + LONG lChannel; /*طŵͨ*/ + NET_DVR_TIME struStartTime; /* ʱطŵĿʼʱ */ + NET_DVR_TIME struStopTime; /* ʱطŵĽʱ */ + BYTE byRes[48]; + }struPlayBackbyTime; + }playbackmode; + DWORD nSessionID;//CMSsessionID + BYTE byRes2[44]; +}NET_DVR_PLAYBACKCALLBACKPARAM, *LPNET_DVR_PLAYBACKCALLBACKPARAM; + +typedef struct tagNET_DVR_VOICEREQUESETPARAM +{ + BYTE nVoiceChannel; //Խͨ + BYTE byRes1[3]; + NET_DVR_IPADDR struCuIp; //CUIPַ + WORD wPort;/*CU˿*/ + BYTE byRes2[10]; +}NET_DVR_VOICEREQUESTPARAM, *LPNET_DVR_VOICEREQUESTPARAM; + +typedef struct tagNET_DVR_ALARMSETUPREQUESETPARAM +{ + NET_DVR_IPADDR struCuIp; //CUIPַ + WORD wPort;/*CU˿*/ + BYTE byRes[2]; +}NET_DVR_ALARMSETUPREQUESTPARAM, *LPNET_DVR_ALARMSETUPREQUESTPARAM; + +typedef struct tagNET_DVR_GPSALARMINFO +{ + BYTE byDeviceID[NAME_LEN];/*豸ID*/ + NET_DVR_TIME_EX struGpsTime; /*GPSϴʱ*/ + DWORD dwLongitude; /* */ + DWORD dwLatitude; /* γ*/ + int iTimeZone; /*ʱ÷ʾ+601+4808-60-4808ֶκGPSTimeһʱ*/ + DWORD dwDirection; /*=ʵʷԶΪλΪ˳ʱ뷽㣩*100*/ + WORD wSatellites; /**/ + WORD wPrecision; /**/ + DWORD dwHeight; /*߶:ףԤ*/ + DWORD dwGPSSeq; /*GPSţGPSʱҪõ*/ + WORD wSpeed;//ٶȣλkm/h + /* direction[0]:'E'or'W'(/), direction[1]:'N'or'S'(γ/γ)*/ + char sDirection[2]; + BYTE byLocateMode;/*λģʽ(ֵ0)1,λ,2,3,,4,Ч65,Чλ78Чλ*/ + BYTE byRes[3]; +}NET_DVR_GPSALARMINFO, *LPNET_DVR_GPSALARMINFO; + +//ͼƬϢϴ +typedef struct tagNET_DVR_PICINFO +{ + DWORD dwSize; //ṹ + BYTE byChanIndex; //ͨ + BYTE byRes1[3]; // + BYTE byDeviceID[NAME_LEN];/*豸ID*/ + BYTE byAbsTime[32]; //ʱ, yyyymmddhhmmssxxx, + DWORD dwPicLen; //ͼƬ + BYTE byRes2[32]; + BYTE *pPicBuffer; +}NET_DVR_PICTUREINFO, *LPNET_DVR_PICTUREINFO; + +//ƽ̨ +typedef struct tagNET_DVR_CMSPARAM +{ + DWORD dwSize; + NET_DVR_IPADDR struCmsAddr; + WORD wCmsPort; + BYTE byRes1[2]; + BYTE sDeviceID[NAME_LEN]; + BYTE byPassword[PASSWD_LEN]; + NET_DVR_IPADDR struPicServerAddr; + WORD wPicServerPort; + WORD wCmsUdpPort;//CMSUDPѯĶ˿ + BYTE byRes2[12]; +}NET_DVR_CMSPARAM, *LPNET_DVR_CMSPARAM; + +///Ź +#define DIALPASSWD_LEN 32 //볤 + +typedef struct tagNET_DVR_QOSPARAM +{ + WORD wMaxBitUL; /* the maximum number of kbits/s in up-link traffic */ + WORD wMaxBitDL; /* the maximum number of kbits/s in down-link traffic */ + BYTE byTrafficClass; /* 0: conversationnal; 1: streaming; 2: interactive;3: background; 4: subscribed value(default) */ + BYTE byRes[7]; +}NET_DVR_QOSPARAM, *LPNET_DVR_QOSPARAM; + + +typedef struct tagNET_DVR_PPPDPARAM +{ + BYTE byDialNum[NAME_LEN]; /* dial number, eg. "#777" */ + BYTE byUserName[NAME_LEN]; /* user name, eg. "card" */ + BYTE byPassword[DIALPASSWD_LEN]; /* password, eg. "card" */ + BYTE byApn[NAME_LEN]; /* access point name, eg. "cmnet" */ + NET_DVR_IPADDR struLocalIp;/* local IP address */ + NET_DVR_IPADDR struRemoteIp;/* remote IP address */ + WORD wMtuSize; /* max transfer unit of ppp interface */ + BYTE byVerifyProtocal; /* IPCP verify protocal: 0: auto; 1: CHAP; 2: PAP */ + BYTE byRes[25]; +}NET_DVR_PPPDPARAM, *LPNET_DVR_PPPDPARAM; + +#define MAX_PHONE_NUM 32//볤 + +typedef struct tagNET_DVR_DIALPARAM +{ + DWORD dwSize; + BYTE bEnable3G; /* 0: disable; 1: enable 3g */ + BYTE byDialMethod; /* dial methold: 0: auto dial; 1: manual dial; */ + BYTE bySwitchMethod; /* switch methold: 0: auto switch;13Gȣ2: manual switch to 2G; 3: manual switch to 3G; */ + BYTE byEnaAlarmInDial; /* ʹܱ봥; 0: disable; 1: enable */ + BYTE byRes1[10]; + WORD wOffLineTime; /* auto off line when no connection exist,λӣΧ5~65535 */ + NET_DVR_PPPDPARAM struPppdParam; + NET_DVR_QOSPARAM struQosParam; + BYTE byUimNumber[MAX_PHONE_NUM]; + BYTE byRes2[24]; +}NET_DVR_DIALPARAM, *LPNET_DVR_DIALPARAM; + +typedef struct tagNET_DVR_DIALREQUEST +{ + BYTE byConnNum; /**/ + BYTE byNetType; /* ָijĬϲŲʱ˲ûá0Զ1CDMA2EVDO3WCDMA4TD-SCDMA */ + BYTE byRes[6]; +} NET_DVR_DIALREQUEST, *LPNET_DVR_DIALREQUEST; + + +/* UIM card information */ +typedef enum +{ + UIM_UNKNOWN = 0, + UIM_VALID = 1, + UIM_NOVALID = 4, + UIM_ROAM = 11, + UIM_NOEXIST = 255 +}UIM_INFO; + +/* real 3g mode */ +typedef enum +{ + /* evdo */ + RMODE_CDMA1X = 12, + RMODE_EVDO = 14, + RMODE_CDMAHYBRID = 18, + /* wcdma */ + RMODE_GSM = 21, + RMODE_GPRS = 22, + RMODE_EDGE = 23, + RMODE_WCDMA = 24, + RMODE_HSDPA = 25, + RMODE_HSUPA = 26, + RMODE_HSPA = 27, + /* tdscdma */ + RMODE_TGSM = 31, + RMODE_TGPRS = 32, + RMODE_TEDGE = 33, + RMODE_TDSCDMA = 34, + RMODE_TDHSDPA = 35, + RMODE_TDHSUPA = 36, + RMODE_TDHSPA = 37 +}REAL_MODE; + +typedef struct tagNET_DVR_DIALSTATUS +{ + BYTE byRealMode; /* REAL_MODE ,real 3g mode networks */ + BYTE byUimCard; /* UIM_INFO ,UIM card information */ + BYTE byRes1[6]; + DWORD dwSignal; /* signal RSSI */ + DWORD dwDialStatus; /* dial status */ + NET_DVR_IPADDR struLocalIp; /* wireless networks IP address */ + NET_DVR_IPADDR struRemoteIp; /* wireless networks gateway */ + NET_DVR_IPADDR struNetMask; /* wireless networks netmask */ + NET_DVR_IPADDR struDns; /* wireless networks DNS */ + BYTE byRes2[16]; +}NET_DVR_DIALSTATUS, *LPNET_DVR_DIALSTATUS; + +//Ź +#define MAX_ALLOWLIST_NUM 8 // +#define NET_SDK_MAX_ALLOWLIST_NUM_32 32 // + +#define HARDDISKFULL_EXCEPTION 0x0 /*Ӳ*/ +#define HARDDISKERROR_EXCEPTION 0x1 /*Ӳ̴*/ +#define ETHERNETBROKEN_EXCEPTION 0x2 /*߶*/ +#define IPADDRCONFLICT_EXCEPTION 0x3 /*IPַͻ*/ +#define ILLEGALACCESS_EXCEPTION 0x4 /*Ƿ*/ +#define VI_EXCEPTION 0x5 /*Ƶź쳣*/ +#define VS_MISMATCH_EXCEPTION 0x6 /*/Ƶʽƥ */ +#define VIDEOCABLELOSE_EXCEPTION 0x7 /*Ƶź*/ +#define AUDIOCABLELOSE_EXCEPTION 0x8 /*Ƶź*/ +#define ALARMIN_EXCEPTION 0x9 /**/ +#define MASKALARM_EXCEPTION 0xa /*ڵ*/ +#define MOTDET_EXCEPTION 0xb /*ƶ*/ +#define RECORDING_EXCEPTION 0xc /*¼쳣*/ +#define WIRELESS_EXCEPTION 0xd /*PIR*/ +#define PIR_EXCEPTION 0xe /*߱*/ +#define CALLHELP_EXCEPTION 0xf /*ȱ*/ + +#define AUDIO_DETECTION_EXCEPTION 0x10 /*Ƶ쳣ⱨ*/ +#define SCENECHANGE_DETECTION_EXCEPTION 0x11 /*ⱨ*/ +#define DEFOCUS_DETECTION_EXCEPTION 0x12 /*齹ⱨ*/ +#define FACE_DETECTION_ENTRANCE_EXCEPTION 0x13 /*ⱨ*/ +#define LINE_DETECTION_ENTRANCE_EXCEPTION 0x14 /*Խⱨ*/ +#define FIELD_DETECTION_ENTRANCE_EXCEPTION 0x15 /*ⱨ*/ +#define REGION_EXITING_EXCEPTION 0x16 /*뿪ⱨ*/ +#define REGION_ENTRANCE_EXCEPTION 0x17 /*򱨾*/ +#define LOITERING_EXCEPTION 0x18 /*Աǻⱨ*/ +#define GROUP_EXCEPTION 0x19 /*Աۼⱨ*/ +#define RAPIDMOVE_EXCEPTION 0x1a /*ƶⱨ*/ +#define PARKING_EXCEPTION 0x1b /*ͣⱨ*/ +#define UNATTENDEDBAGGAGE_EXCEPTION 0x1c /*Ʒⱨ*/ +#define ATTENDEDBAGGAGE_EXCEPTION 0x1d /*Ʒȡⱨ*/ +#define DATATRAFFIC_EXCESS 0x1e /**/ +#define VOLTAGEINSTABLE_EXCEPTION 0x1f /*Դѹ쳣*/ +#define ALL_EXCEPTION 0xff /*¼¼ʽжǷ*/ + + +#define PHONECFG_RECEIVE_SMS 0x0 /* ֽ֧ձ */ +#define PHONECFG_SMS_CONTROL 0x1 /* ֶ֧ſ */ +#define PHONECFG_CALL_CONTROL 0x2 /* ֺ֧п */ +#define PHONECFG_SMS_REBOOT 0x3 /*ֶ֧*/ +#define PHONECFG_DOOR_CONTROL 0x4 /* ֧Ų*/ +#define PHONECFG_SMS_GET_DAIL_STATUS 0x5 /* ֶ֧Żȡ״̬*/ + + +typedef struct tagNET_DVR_PHONECFG +{ + BYTE byAllowList[MAX_PHONE_NUM]; + BYTE byPhonePerssion[32]; /*ֽڱʾǷʹܸúijܣλĺ + PHONECFG_RECEIVE_SMSȶ */ + BYTE byAlarmHandler[32]; /*ֽڱʾǷʹܶij͵Ķŷ*/ + BYTE byRes[128]; +} NET_DVR_PHONECFG, *LPNET_DVR_PHONECFG; + +typedef struct tagNET_DVR_SMSRELATIVEPARAM +{ + DWORD dwSize; + BYTE bEnableSmsAlarm; /* 0: disable; 1: enable 3g */ + BYTE byRes1[7]; + NET_DVR_PHONECFG struAllowList[MAX_ALLOWLIST_NUM]; + BYTE byRes2[32]; +}NET_DVR_SMSRELATIVEPARAM, *LPNET_DVR_SMSRELATIVEPARAM; + +typedef struct tagNET_DVR_PHONECFG_V50 +{ + BYTE byAllowList[MAX_PHONE_NUM]; + BYTE byPhonePerssion[32]; /*ֽڱʾǷʹܸúijܣλĺ + PHONECFG_RECEIVE_SMSȶ */ + BYTE byAlarmHandler[32]; /*ֽڱʾǷʹܶij͵Ķŷ(Žʱò)*/ + BYTE byAcsPassword[16]; /**/ + BYTE byName[NAME_LEN/*32*/]; /**/ + BYTE byRes[80]; +} NET_DVR_PHONECFG_V50, *LPNET_DVR_PHONECFG_V50; + +typedef struct tagNET_DVR_SMSRELATIVEPARAM_V50 +{ + DWORD dwSize; + BYTE bEnableSmsAlarm; /* 0: disable; 1: enable 3g */ + BYTE byRes1[7]; + NET_DVR_PHONECFG_V50 struAllowList[NET_SDK_MAX_ALLOWLIST_NUM_32]; + BYTE byRes2[32]; +}NET_DVR_SMSRELATIVEPARAM_V50, *LPNET_DVR_SMSRELATIVEPARAM_V50; + +#define NET_SDK_MONITOR_ID_LEN 64 //صID + +typedef struct tagNET_DVR_ACS_EVENT_COND +{ + DWORD dwSize; + DWORD dwMajor; //ͣο¼ϴ궨壬0-ȫ + DWORD dwMinor; //ͣο¼ϴ궨壬0-ȫ + NET_DVR_TIME struStartTime; //ʼʱ + NET_DVR_TIME struEndTime; //ʱ + BYTE byCardNo[ACS_CARD_NO_LEN]; // + BYTE byName[NAME_LEN]; //ֿ + BYTE byPicEnable; //ǷͼƬ0-ͼƬ1-ͼƬ + BYTE byTimeType; //ʱͣ0-豸ʱ䣨Ĭϣ1-UTCʱ䣨struStartTimestruEndTimeʱ䣩 + BYTE byRes2[2]; // + DWORD dwBeginSerialNo; //ʼˮţΪ0ʱĬȫ + DWORD dwEndSerialNo; //ˮţΪ0ʱĬȫ + DWORD dwIOTChannelNo; //IOTͨţ0-Ч + WORD wInductiveEventType; //¼ͣ0-Чֵμ2.2½ڣͻжϸֵΪ0ֵ󣬱ͨ¼֣ͨԭбͣdwMajordwMinor + BYTE bySearchType; //ʽ0-1-¼ԴʱͨΪƵͨţ2-صID + BYTE byEventAttribute; //¼ԣ0-δ壬1-Ϸ¼2- + char szMonitorID[NET_SDK_MONITOR_ID_LEN/*64*/]; //صID豸кšͨ͡ɣŽ㣺豸к+DOOR+űţ + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID + BYTE byRes[140]; // +}NET_DVR_ACS_EVENT_COND, *LPNET_DVR_ACS_EVENT_COND; + +typedef struct tagNET_DVR_ACS_EVENT_DETAIL +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //ţmacַΪ0Ч + BYTE byCardType; //ͣ1-ͨ2-Ⱥ忨3-ֹ4-Ѳ5-вȿ6-7-8-Ϊ0Ч + BYTE byAllowListNo; //,1-8Ϊ0Ч + BYTE byReportChannel; //ϴͨ1-ϴ2-1ϴ3-2ϴΪ0Ч + BYTE byCardReaderKind; //һ࣬0-Ч1-IC2-֤3-ά,4-ָͷ + DWORD dwCardReaderNo; //ţΪ0Ч + DWORD dwDoorNo; //űţ¥ţΪ0Ч + DWORD dwVerifyNo; //ؿ֤ţΪ0Ч + DWORD dwAlarmInNo; //ţΪ0Ч + DWORD dwAlarmOutNo; //ţΪ0Ч + DWORD dwCaseSensorNo; //¼ + DWORD dwRs485No; //RS485ͨţΪ0Ч + DWORD dwMultiCardGroupNo; //Ⱥ + WORD wAccessChannel; //Աͨ + BYTE byDeviceNo; //豸ţΪ0ЧЧΧ1-255 + BYTE byDistractControlNo;//ֿţΪ0Ч + DWORD dwEmployeeNo; //ţΪ0Ч + WORD wLocalControllerID; //͵ؿţ0-Ž1-64͵ؿ + BYTE byInternetAccess; //ID1-1,2-2,3-1 + BYTE byType; //ͣ0:ʱ,1-24Сʱ,2-ʱ ,3-ڲ4-Կ׷ 5-𾯷 6-ܽ 7-24Сʱ 8-24Сʱ9-24Сʱ𶯷,10-Žŷ11-Žŷ 0xff- + BYTE byMACAddr[MACADDR_LEN]; //ַΪ0Ч + BYTE bySwipeCardType;//ˢͣ0-Ч1-ά + BYTE byEventAttribute; //¼ԣ0-δ壬1-Ϸ֤2- + DWORD dwSerialNo; //¼ˮţΪ0Ч + BYTE byChannelControllerID; //ͨIDΪ0Ч1-ͨ2-ͨ + BYTE byChannelControllerLampID; //ͨưIDΪ0ЧЧΧ1-255 + BYTE byChannelControllerIRAdaptorID; //ͨתӰIDΪ0ЧЧΧ1-255 + BYTE byChannelControllerIREmitterID; //ͨIDΪ0ЧЧΧ1-255 + DWORD dwRecordChannelNum; //¼ͨĿ + char *pRecordChannelData;//¼ͨСΪsizeof(DWORD)* dwRecordChannelNum + BYTE byUserType; //Աͣ0-Ч1-ͨˣˣ2-ÿͣ3-ֹˣ4-Ա + BYTE byCurrentVerifyMode; //ǰ֤ʽ0-Ч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-룬29-++룬30-ˢ+ˢ31-ָƻ룬32-Ĥ33-ָƻˢĤ34-ˢĤ + BYTE byAttendanceStatus; //״̬0-δ,1-ϰ࣬2-°࣬3-ʼϢ4-Ϣ5-ʼӰ࣬6-Ӱ + BYTE byStatusValue; //״ֵ̬ + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID豸˵ʹ˹ţԱIDֶΣbyEmployeeNoһҪݣbyEmployeeNoתΪdwEmployeeNoôֶҲҪݣϲƽ̨ͻ˵ȽbyEmployeeNoֶΣֶΪգٿǽdwEmployeeNoֶΣ + BYTE byRes1; // + BYTE byMask; //Ƿ֣0-1-δ֪2-֣3- + BYTE byThermometryUnit; //µλ0-϶ȣĬϣ1-϶ȣ2-ģ + BYTE byIsAbnomalTemperature; //ץIJǷ¶쳣1-ǣ0- + float fCurrTemperature; //¶ȣȷСһλ + NET_VCA_POINT struRegionCoordinates; //¶ + WORD wXCoordinate; //x꣬ϽͼƬĹһ꣬Χ0-1000 + WORD wYCoordinate; //y꣬ϽͼƬĹһ꣬Χ0-1000 + WORD wWidth; //ȣΧ0-1000 + WORD wHeight; //߶ȣΧ0-1000 + BYTE byHealthCode; //״̬, 0-, 1-δ, 2-δ, 3-, 4-, 5-, 6-޴Ա, 7-Ϣӿ쳣²ѯʧܣ, 8-ѯ볬ʱ + BYTE byNADCode; //, 0-, 1-δѯ, 2-ԣ, 3-ԣȷ, 4-Чѹ + BYTE byTravelCode; //г̱, 0-, 1-14һֱڵ, 2-14뿪, 3-14ڵ, 4- + BYTE byVaccineStatus; //״̬, 0-, 1-δ, 2-ע, 3- + BYTE byRes[36]; +}NET_DVR_ACS_EVENT_DETAIL, *LPNET_DVR_ACS_EVENT_DETAIL; + +typedef struct tagNET_DVR_ACS_EVENT_CFG +{ + DWORD dwSize; + DWORD dwMajor; //ͣο궨 + DWORD dwMinor; //ͣο궨 + NET_DVR_TIME struTime; //ʱ + BYTE sNetUser[MAX_NAMELEN];//û + NET_DVR_IPADDR struRemoteHostAddr;//Զַ + NET_DVR_ACS_EVENT_DETAIL struAcsEventInfo; //ϸ + DWORD dwPicDataLen; //ͼƬݴСΪ0DZʾ + char *pPicData; + WORD wInductiveEventType; //¼ͣ0-Чֵμ2.2½ڣͻжϸֵΪ0ֵ󣬱ͨ¼֣ͨԭбͣdwMajordwMinor + BYTE byTimeType; //ʱͣ0-豸ʱ䣨Ĭϣ1-UTCʱ䣨struTimeʱ䣩 + BYTE byRes1; + DWORD dwQRCodeInfoLen; //άϢȣΪ0DZʾ + DWORD dwVisibleLightDataLen; //ȳɼͼƬȣΪ0DZʾ + DWORD dwThermalDataLen; //ȳͼƬȣΪ0DZʾ + char *pQRCodeInfo; //άϢָ + char *pVisibleLightData; //ȳɼͼƬָ + char *pThermalData; //ȳͼƬָ + BYTE byRes[36]; +}NET_DVR_ACS_EVENT_CFG, *LPNET_DVR_ACS_EVENT_CFG; + +typedef struct tagNET_DVR_SMSLISTINFO +{ + DWORD dwSize; + DWORD dwTotalSmsNum;// + BYTE byRes[8]; + BYTE *pSmsParam; + DWORD dwBufLen;//ָ볤ȣ +}NET_DVR_SMSLISTINFO, *LPNET_DVR_SMSLISTINFO; + +typedef struct tagNET_DVR_SMSPARAM +{ + DWORD dwIndex; /* the index of sms */ + BYTE byStatus; /* read yet or not */ + BYTE byRes[7]; + NET_DVR_TIME_EX struRecvTime; /* sms receive time */ +}NET_DVR_SMSPARAM, *LPNET_DVR_SMSPARAM; + +#define MAX_SMSCONTENT_LEN 140//ݳ +typedef struct tagNET_DVR_SMSCONTENT +{ + BYTE byPhoneNum[MAX_PHONE_NUM]; + BYTE byMsg[MAX_SMSCONTENT_LEN]; +}NET_DVR_SMSCONTENT, *LPNET_DVR_SMSCONTENT; + +//pin +typedef enum +{ + CPIN_READY = 1, + CPIN_PIN = 2, + CPIN_PUK = 3, + CPIN_PIN2 = 4, + CPIN_PUK2 = 5 +}PIN_READY; + +typedef struct tagNET_DVR_PINSTATUS +{ + DWORD dwSize; + BYTE byStatus; /* PIN status, defination see enum: PIN_READY */ + BYTE byPinTimes; /* remain input PIN times */ + BYTE byPukTimes; /* remain input PUK times */ + BYTE bEnableLock; /* now the PIN locking function is enabled or not: 0, not enabled lock; 1, lock enabled */ + BYTE byRes[4]; +}NET_DVR_PINSTATUS, *LPNET_DVR_PINSTATUS; + +typedef enum +{ + PIN_ENABLE = 1, + PIN_DISABLE = 2, + PIN_VERIFY = 3, + PUK_VERIFY = 4, + PIN_CHANGE = 5 +}PIN_CMD; +#define MAX_PIN_LEN 12 //PIN󳤶 +typedef struct tagNET_DVR_PINCODEPARAM +{ + DWORD dwSize; + BYTE byPinCmd; /* PIN command, defination see enum: PIN_CMD */ + BYTE byRes1[3]; + BYTE byPinCode[MAX_PIN_LEN]; /* pin/puk code */ + BYTE byNewPinCode[MAX_PIN_LEN]; /* new pin code */ + BYTE byRes2[16]; +}NET_DVR_PINCODEPARAM, *LPNET_DVR_PINCODEPARAM; + + +//ͼƬ +typedef struct +{ + /* 0=CIF, 1=QCIF, 2=D1 3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6=VGA*/ + WORD wPicSize; + WORD wPicQuality; /* ͼƬϵ 0- 1-Ϻ 2-һ */ + //ץͼͼƬʽ1-ϴģ2-豸ر棬3-ϴͬʱ豸ر + BYTE byPicTackleMode; + BYTE byRes[11]; +}NET_DVR_PUSHJPEGPARA, *LPNET_DVR_PUSHJPEGPARA; + + +#define COM_PUSHALARM 0x1200 //豸Ϣϴģʽ豸ʹ +#define COM_PUSHALARM_V30 0x1201 //豸Ϣϴv30ģʽ豸ʹ +typedef struct tagNET_DVR_PUSHALARMINFO +{ + DWORD dwAlarmType;/*0-ź,1-Ӳ,2-źŶʧ,3ƶ,4Ӳδʽ,5-дӲ̳,6-ڵ,7-ʽƥ, 8-Ƿ*/ + DWORD dwAlarmInputNumber;/*˿*/ + DWORD dwAlarmOutputNumber[MAX_ALARMOUT];/*˿ڣһλΪ1ʾӦһ*/ + DWORD dwAlarmRelateChannel[MAX_CHANNUM];/*¼ͨһλΪ1ʾӦһ·¼, dwAlarmRelateChannel[0]Ӧ1ͨ*/ + DWORD dwChannel[MAX_CHANNUM];/*dwAlarmTypeΪ23,6ʱʾĸͨdwChannel[0]Ӧ1ͨ*/ + DWORD dwDiskNumber[MAX_DISKNUM];/*dwAlarmTypeΪ1,4,5ʱ,ʾĸӲ, dwDiskNumber[0]λӦ1Ӳ*/ + BYTE byDeviceID[NAME_LEN];/*豸ID*/ + BYTE byRes[4]; +}NET_DVR_PUSHALARMINFO, *LPNET_DVR_PUSHALARMINFO; + +typedef struct +{ + DWORD dwAlarmType;/*0-ź,1-Ӳ,2-źŶʧ,3ƶ,4Ӳδʽ,5-дӲ̳,6-ڵ,7-ʽƥ, 8-Ƿ, 9-Ƶź쳣10-¼쳣 11- ܳ仯 12-쳣 */ + DWORD dwAlarmInputNumber;/*˿*/ + BYTE byAlarmOutputNumber[MAX_ALARMOUT_V30];/*˿ڣΪ1ʾӦ*/ + BYTE byAlarmRelateChannel[MAX_CHANNUM_V30];/*¼ͨΪ1ʾӦ¼, dwAlarmRelateChannel[0]Ӧ1ͨ*/ + BYTE byChannel[MAX_CHANNUM_V30];/*dwAlarmTypeΪ23,6910ʱʾĸͨdwChannel[0]Ӧ1ͨ*/ + BYTE byDiskNumber[MAX_DISKNUM_V30];/*dwAlarmTypeΪ1,4,5ʱ,ʾĸӲ, dwDiskNumber[0]Ӧ1Ӳ*/ + BYTE byDeviceID[NAME_LEN];/*豸ID*/ + BYTE byRes[7]; +}NET_DVR_PUSHALARMINFO_V30, *LPNET_DVR_PUSHALARMINFO_V30; + +//2011-04-20 +// +typedef struct tagNET_DVR_MB_AUTOWORKPARA +{ + /*ǰƷʽ 0: Ԥ, 1: ʱػ, 2: Զػ*/ + BYTE byCurPowerCtrlType; + BYTE byRes[3]; + NET_DVR_SCHEDTIME struWorkTime[MAX_DAYS][2]; +}NET_DVR_MB_AUTOWORKPARA, *LPNET_DVR_MB_AUTOWORKPARA; + +typedef struct tagNET_DVR_MB_POWERCTRLPARA +{ + DWORD dwSize; + DWORD dwHaltDelay; /* ػӳʱ,λmin */ + NET_DVR_MB_AUTOWORKPARA struAutoWorkPara;/*ز*/ + BYTE byEnableUnderVoltProtect; /*ǷǷѹ*/ + BYTE byUnderVoltPercent; /*Ƿѹٷֱȣ859095Чֵ*/ + BYTE byRes[34]; +}NET_DVR_MB_POWERCTRLPARA, *LPNET_DVR_MB_POWERCTRLPARA; +/*ע1ػӳʱ, ѡʱΪ 05ӣ10 20 25 30 35 40 45 50 60 60*2 60*3 60 *4 60*5 60*6 */ + +//Զ +typedef struct tagNET_DVR_MB_AUTOBACKUPPARA +{ + DWORD dwSize; + BYTE byEnableAutoBackup; /* ǷԶ 0 ر 1 */ + BYTE byRes1[3]; + BYTE byBackupChannel[MAX_CHANNUM_V30]; /*Ҫݵͨ*/ + BYTE byBackupDays[MAX_CHANNUM_V30];/**/ + /* ļ + {0,ALL_RECORD_TYPE,ȫ}, + {1,TIMING_REC,ʱ}, + {2,MOTION_DETECT_REC,ƶ }, + {3,ALARM_REC, }, + {4,MANUAL_REC,ֶ¼}*/ + BYTE byBackupFileType[MAX_CHANNUM_V30]; + NET_DVR_SCHEDTIME struBackupTime[MAX_CHANNUM_V30][2]; /* Զʱ*/ + BYTE byRes2[36]; /* ֽ*/ +}NET_DVR_MB_AUTOBACKUPPARA, *LPNET_DVR_MB_AUTOBACKUPPARA; + + +typedef struct tagNET_DVR_MB_GPSPARA +{ + DWORD dwSize; + BYTE byEnableGPS; /*ǷGPS */ + BYTE byGpsInterface;/*gpsսӿ0-rs232, 1-rs485, 2-frontpanel, 3-lcd */ + BYTE bySpeedUnit; /*ٶȵλ0/Сʱ1 Ӣ/Сʱ*/ + BYTE byEnableRetrieve; /* ä(1ã0) */ + int iAdjustTime;/*ʱ*/ + BYTE byEnableAdjustTime;/*ǷGPSУʱ 1-, 0-*/ + BYTE byRes1[5]; + WORD wGpsUploadInterval; /* GPSϴ, */ + BYTE byGpsOsdChannel[MAX_CHANNUM_V30];/*OSD ʾÿֽڴһ· */ + DWORD dwSpeedLimit; /* ٱ*/ + NET_DVR_HANDLEEXCEPTION_V30 struGpsAlarm; + BYTE byRes2[36]; +}NET_DVR_MB_GPSPARA, *LPNET_DVR_MB_GPSPARA; +/*ע1λΪ/Сʱ ʱΧΪ0 ,965Ӣ/Сʱλʱ ٶȷΧΪ0-600*/ + +#define SENSOR_IN_NUMBER 8 +typedef struct tagNET_DVR_MB_SENSORINPARA +{ + DWORD dwSize; + BYTE byTriggerType[SENSOR_IN_NUMBER];/*г״̬شֻú4ֱɲתת0-ߵƽ1-͵ƽ*/ + BYTE byTriggerChannel [SENSOR_IN_NUMBER]; + BYTE byOsdDisplay [MAX_CHANNUM_V30];/*OSDʾ,ÿλһ·*/ + BYTE byRes[32]; +}NET_DVR_MB_SENSORINPARA, *LPNET_DVR_MB_SENSORINPARA; + + +typedef struct tagNET_DVR_ACCELERATIONCFG +{ + DWORD dwMaxXAcc; /* Xٶȱֵ ȡֵΪʵֵ10,СΪ0*/ + DWORD dwMaxYAcc; /* Yٶȱֵ ȡֵΪʵֵ10.СΪ0*/ + DWORD dwMaxZAcc; /* Zٶȱֵ ȡֵΪʵֵ10,СΪ0*/ + BYTE byRes[4]; +}NET_DVR_ACCELERATIONCFG,*LPNET_DVR_ACCERATIONCFG; + +typedef struct tagNET_DVR_GSENSORPARA +{ + DWORD dwSize; + NET_DVR_ACCELERATIONCFG struAccelerationCfg; + BYTE byModuleSelect;/*ģѡ0/1*/ + BYTE byRes1[3]; + NET_DVR_HANDLEEXCEPTION_V30 struHandleException; + BYTE byRes2[24]; /*չֽ*/ +}NET_DVR_GSENSORPARA, *LPNET_DVR_GSENSORPARA; + +typedef struct tagNET_DVR_MB_DOWNLOADSVRPARA +{ + DWORD dwSize; + NET_DVR_IPADDR struDownloadSvrIp; /* Զطַ */ + BYTE byRes[64]; +}NET_DVR_MB_DOWNLOADSVRPARA,*LPNET_DVR_MB_DOWNLOADSVRPARA; + +/* ʶز*/ +typedef struct tagNET_DVR_PLATERECOG_PARA +{ + DWORD dwSize; + BYTE byPrMode; /* ʶģʽ, ̬ͼ0/̬Ƶ1 */ + BYTE byPrScene; /* ʶij, ٳ0/ٳ1 */ + BYTE byPrDetRect; /* 0:ȫĻ;1: */ + BYTE byPrPicQuality; /* ʶ𷵻صͼƬ, 0:/3: */ + BYTE byPrPicMode;/*ʶ𷵻صͼƬֱ: JPEG_MODE_D1, JPEG_MODE_CIF, JPEG_MODE_QCIF */ + BYTE byPlateOsdDisplay; /* OSDǷʾ 0:ʾ/1:ʾ */ + BYTE byPrProvCharIndex; /* ʶʡ׺ֶӦ */ + BYTE byPrProvCharIndex1; /* ʶ𳣼׺1Ӧ */ + BYTE byPrProvCharIndex2; /* ʶ𳣼׺2Ӧ */ + BYTE byRes[7]; +}NET_DVR_PLATERECOG_PARA, *LPNET_DVR_PLATERECOG_PARA; + + +/* ̬ȡ֤ϵͳ,òĽṹ*/ +typedef struct tagNET_DVR_SPEEDLMT_PARA +{ + BYTE bStartMaxSpeedLimit; /* */ + BYTE bStartMinSpeedLimit; /* */ + BYTE byRes[6]; + DWORD dwMaxSpeedLimit; /* */ + DWORD dwMinSpeedLimit; /* */ +}NET_DVR_SPEEDLMT_PARA, *LPNET_DVR_SPEEDLMT_PARA; + +/* ̬ȡ֤ϵͳ,ƱȶԲĽṹ*/ +typedef struct tagNET_DVR_PLATECHECK_PARA +{ + BYTE bAlarmWhenChecked; /* ɹǷ񱨾 */ + BYTE bInformWhenChecked; /* ɹǷԻʾ */ + BYTE byRes[6]; + NET_DVR_IPADDR struBlockFtpServer; /* ֹFTPַ */ +}NET_DVR_PLATECHECK_PARA, *LPNET_DVR_PLATECHECK_PARA; + +typedef struct tagNET_DVR_ENFORCESYS_PARA +{ + DWORD dwSize; + NET_DVR_SPEEDLMT_PARA struSpeedLmtPara; /**/ + NET_DVR_PLATECHECK_PARA struPlateCheckPara; /*Ʊȶ*/ + BYTE bySelPeccType; /*ǷѡΥ*/ + BYTE byEnfOptHabit; /*ȡ֤ϰ, 0:ȡ֤;1:̰ȡ֤*/ + /*Ԥ֡ʵģʽ֣ + A ر adjPrevFpsMode=0 + Թ̶֡(25FPS)Ԥ + B ׼ adjPrevFpsMode=1 + Թ̶֡(6FPS)Ԥ + C Ӧ adjPrevFpsMode=2 + GPSٶϢ̬Ԥ֡ʣ + 3ЧGPS£Թ̶֡Ԥ*/ + BYTE byAdjPrevFpsMode; + BYTE byRes1; + NET_DVR_IPADDR struUploadServerIp; //ϴַ + WORD wUploadServerPort; + BYTE byRes2[18]; +}NET_DVR_ENFORCESYS_PARA, *LPNET_DVR_ENFORCESYS_PARA; + +typedef struct tagNET_DVR_PUSHMODEPARAM +{ + //ֱģʽUDPԤģʽ1-ͬ˿ڶ·2-һ˿һ· + BYTE byUdpPreviewMode; + //Խģʽ0-Խ1-תSDKIJɼͲţ + BYTE byVoiceWorkMode; + BYTE byRes[18]; +}NET_DVR_PUSHMODEPARAM, *LPNET_DVR_PUSHMODEPARAM; + +#define MAX_ALARMHOST_ALARMIN_NUM 512//籨󱨾 +#define MAX_ALARMHOST_ALARMOUT_NUM 512//籨󱨾 + +#define ALARMHOST_MAX_AUDIOOUT_NUM 32//籨 +#define ALARMHOST_MAX_ELECTROLOCK_NUM 32//籨 +#define ALARMHOST_MAX_MOBILEGATE_NUM 32//籨ƶ +#define ALARMHOST_MAX_SIREN_NUM 8 // 󾯺Ŀ +#define MAX_ALARMHOST_SUBSYSTEM 32//ϵͳ +#define ALARMHOST_DETECTOR_SERIAL_LEN 9//̽кų +#define ALARMHOST_DETECTOR_SERIAL_LEN_V50 16 //̽кV50 +#define MAX_DETECTOR_NUM 128//̽ +#define MAX_DETECTOR_NUM_V51 256 //̽ +#define MAX_REPEATER_NUM 16 //м +#define MAX_OUTPUT_MODULE_NUM 64 //ģ +#define MAX_ELECTRIC_LOCK_NUM 64 // + +// +typedef enum tagSENSOR_TYPE +{ + SENSOR_TYPE_NONE = 0, // + SENSOR_TYPE_TEMPERATURE = 1, // ¶ + SENSOR_TYPE_HUMIDITY , // ʪ + SENSOR_TYPE_WINDSPEED, // + SENSOR_TYPE_GAS, // + SENSOR_AC_VOLTAGE, // ѹ + SENSOR_AC_CURRENT, // + SENSOR_DC_VOLTAGE, // ֱѹ + SENSOR_DC_CURRENT, // ֱ + SENSOR_WATER_PRESSURE, // ˮѹ + SENSOR_PRESSURE_TRANSMITTER, // ѹ + SENSOR_FLOW_TRANSMITTER, // + SENSOR_WATER_LEAKAGE, // ©ˮ + SENSOR_INTERGRATED_TEMPERATURE_DETECTOR,//һ廯± + SENSOR_ISOLATION_TEMPERATURE_DETECTOR, //ʽ± + SENSOR_RESIDUAL_CHLORINE, // + SENSOR_TYPE_AC_TERMINAL = 16, // AC + SENSOR_TYPE_AC_SOCKET = 17, // AC + SENSOR_TYPE_HUMITURE, // ʪ + SENSOR_TYPE_FLOW, // + SENSOR_LIQUID_LEVEL, // Һλ + SENSOR_TYPE_ARC, // 绡 + SENSOR_TYPE_UNKNOW = 255 // δ +}SENSOR_TYPE; + +typedef struct tagNET_DVR_SENSOR_INFO +{ + DWORD dwSize; // ṹС + BYTE byName[NAME_LEN]; // + BYTE byEnable; // Ƿ + BYTE byValid; // ǷЧ (òֻܻȡܸ) + BYTE byType; // ģ SENSOR_TYPE + BYTE byAlarmMode;//ģʽ֣15-HHHH14-HHHL12-HHLL8HLLL0-LLLL1111ϣ1110£1100£1000()0000() + float fMeasureHigh; // + float fMeasureLow; // + float fAlarm1; //1,1-4 + float fAlarm2; //2 + float fAlarm3; //3 + float fAlarm4; //4 + DWORD dwOsdCfg; //ģַӣλʾ0-15ӦƵͨ1-16 + float fSensitive; // ȱʾʵʱֵı仯ȵķΧʱʾʵʱֵ˱仯Ϊûз仯磺Ϊ0.1ʾǰֵ֮0.1ʱΪݷ仯0.1ҪϴΪ1ʾ仯1ʱϱ + BYTE bySensorStandard; //0- 0~20mA1- 0~5V2- 0~2.5Mpa3- 0~1.6Mpa4- 0~5m + BYTE byChan; //ģͨ + BYTE byRes3[114]; // ֽ +}NET_DVR_SENSOR_INFO, *LPNET_DVR_SENSOR_INFO; + +typedef struct tagNET_DVR_SIREN_PARAM +{ + DWORD dwSize; // ṹС + BYTE byName[NAME_LEN]; // + WORD wDelay; // ӳ λΪ, Χ 0~5599s 0ʾһֱ + BYTE byRes1[2]; + DWORD dwOverallEventJointSirenOn; //ȫ¼¼Ͱλʾbit0-, bit1-ȫּ̽,bit2-ϵ磬bit3-صѹ,bit4-绰ߵ,bit5-쳣,bit6-쳣, bit7-485ߣbit8- WIFIͨŹϣbit9-RFźŸŹ + DWORD dwSubsystemEventJointSirenOn[MAX_ALARMHOST_SUBSYSTEM/*32*/];//ϵͳ¼±ʾϵͳţÿһԪذλʾ¼ͣbit0- + BYTE byRes2[448]; // ֽڡ +}NET_DVR_SIREN_PARAM, *LPNET_DVR_SIREN_PARAM; + +typedef struct tagNET_DVR_AIR_CONDITION_PARAM +{ + DWORD dwSize; // ṹС + BYTE byEnable; // 0--ػ 1-- + BYTE byMode; // յģʽ + BYTE byTemperature; // ¶ȣֵʾ ͨΪ16-30 + BYTE byAirConditionNo; // յ + BYTE byRes[8]; // ֽ +}NET_DVR_AIR_CONDITION_PARAM, *LPNET_DVR_AIR_CONDITION_PARAM; + +typedef enum tagDETECTOR_TYPE +{ + PANIC_BUTTON = 0, // ť + MAGNETIC_CONTACT, // Ŵ + SMOKE_DETECTOR, // ̸̽ + ACTIVE_INFRARED_DETECTOR, // ̽ + PASSIVE_INFRARED_DETECTOR, // ̽ + GLASS_BREAK_DETECTOR, // ̽ + VIBRATION_DETECTOR, // ̽ + DUAL_TECHNOLOGY_PIR_DETECTOR, // ˫̽ + TRIPLE_TECHNOLOGY_PIR_DETECTOR, // ̽ + HUMIDITY_DETECTOR, // ʪ̽ + TEMPERATURE_DETECTOR, // ¸̽ + COMBUSTIBLE_GAS_DETECTOR, // ȼ̽ + DYNAMIC_SWITCH, //涯 + CONTROL_SWITCH, //ƿ + SMART_LOCK, // + WATER_DETECTOR, //ˮ̽ + DISPLACEMENT_DETECTOR, //λ̽ + SINGLE_INFRARED_DETECTOR, //Ŵ̽ + SINGLE_ZONE_MODULE, //ߵģ + CURTAIN_INFRARED_DETECTOR, //Ļ̽19 + UNKNOWN,//δ֪20 + DOORBELL_SWITCH=21, //忪21 + MEDICAL_HELP_BUTTON, //ҽť + OUTDOOR_DUAL_TECH, //˫ + + OTHER_DETECTOR = 0xffff // ̽ +}DETECTOR_TYPE; + +typedef struct tagNET_DVR_ALARMIN_PARAM +{ + DWORD dwSize; + BYTE byName[NAME_LEN]; + WORD wDetectorType; // DETECTOR_TYPE + BYTE byType; //ͣ0:ʱ,1-24Сʱ,2-ʱ ,3-ڲ4-Կ׷ 5-𾯷 6-ܽ 7-24Сʱ 8-24Сʱ9-24Сʱ𶯷,10-Žŷ11-Žŷ 12-ʱ13-0xff- + BYTE byUploadAlarmRecoveryReport; //Ƿϴָ棬0-ϴ1-ϴ + DWORD dwParam; // ʱʱ೤ʱ, бʱʱͨ , ÷ʽͨеbySupportAlarmInDelayֶ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];/*ʱʱ*/ + BYTE byAssociateAlarmOut[MAX_ALARMHOST_ALARMOUT_NUM]; // + BYTE byAssociateSirenOut[8]; // 0 ʾ1 ֵΪ1ʾ 0 ʾ + BYTE bySensitivityParam;//Ȳ, 0-10ms1-250ms2-500ms3-750ms + BYTE byArrayBypass;//Ƿ·,0-֧·,1-֧· + BYTE byJointSubSystem; //ϵͳţòֻܻȡ + BYTE byModuleStatus; //ģ״̬ 1- 2- + WORD wModuleAddress; //ģַչģ0~2550xFFFFʾЧ + BYTE byModuleChan; //ģͨţ1ʼֵģ0xFFʾЧ + BYTE byModuleType; //ģͣ1-ط2-3-˫4-85-8·ģ, 6-, 7-1ž͵ؿ8-2ž͵ؿ9-4ž͵ؿ10-8ߡ11-̡12-8ߡ13-չ + WORD wZoneIndex; //ţòֻܻȡ + WORD wInDelay; //ʱ0-255 + WORD wOutDelay; //˳ʱ0-255 + BYTE byAlarmType; // 0-Ч1-2- + BYTE byZoneResistor; //裬λǧŷ 0-Ч 1--2.2 2--3.33--4.74--5.6 5--8.2 0xff-Զ + float fZoneResistorManual;/*ֶ裬1.0-10.0ȷСһλλǧŷbyZoneResistorΪ0xffʱЧ*/ + BYTE byDetectorSerialNo[ALARMHOST_DETECTOR_SERIAL_LEN]; //̽кţֻ + BYTE byZoneSignalType; //źŴ(ֻ)0-߷1-߷ + BYTE byDisableDetectorTypeCfg; //̽Ƿ񲻿䣬0-䣬1- + BYTE byTimeOutRange; // ʱʱ䷶Χ0:1~599s,1:1~65535s + BYTE byAssociateLampOut[8];// 0 ʾ1 ֵΪ1ʾ 0 ʾ + WORD wTimeOut; //ʱʱ䣬 + BYTE byDetectorSignalIntensity; // ̽źǿȣֻ0~100 + BYTE byTimeOutMethod; //ʱʱʽ0-ʱ1-ָʱ + BYTE byRes3[8]; // ֽ +}NET_DVR_ALARMIN_PARAM, *LPNET_DVR_ALARMIN_PARAM; + +typedef struct tagNET_DVR_ALARMIN_PARAM_V50 +{ + DWORD dwSize; + BYTE byName[NAME_LEN]; + WORD wDetectorType; // DETECTOR_TYPE + BYTE byType; //ͣ0:ʱ,1-24Сʱ,2-ʱ ,3-ڲ4-Կ׷ 5-𾯷 6-ܽ 7-24Сʱ 8-24Сʱ9-24Сʱ𶯷 12-ʱ13-14-ȼ0xff- + BYTE byUploadAlarmRecoveryReport; //Ƿϴָ棬0-ϴ1-ϴ + DWORD dwParam; // ʱʱ೤ʱ, бʱʱͨ , ÷ʽͨеbySupportAlarmInDelayֶ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT];/*ʱʱ*/ + BYTE byAssociateAlarmOut[MAX_ALARMHOST_ALARMOUT_NUM]; // + BYTE byAssociateSirenOut[8]; // 0 ʾ1 ֵΪ1ʾ 0 ʾ + BYTE bySensitivityParam;//Ȳ, 0-10ms1-250ms2-500ms3-750ms + BYTE byArrayBypass;//Ƿ·,0-֧·,1-֧· + BYTE byJointSubSystem; //ϵͳţòֻܻȡ + BYTE byModuleStatus; //ģ״̬ 1- 2- + WORD wModuleAddress; //ģַչģ0~2550xFFFFʾЧ + BYTE byModuleChan; //ģͨţ1ʼֵģ0xFFʾЧ + BYTE byModuleType; //ģͣ1-ط2-3-˫4-85-8·ģ, 6-, 7-1ž͵ؿ8-2ž͵ؿ9-4ž͵ؿ10-8ߡ11-̡12-8ߡ13-չ + WORD wZoneIndex; //ţòֻܻȡ + WORD wInDelay; //ʱ0-255 + WORD wOutDelay; //˳ʱ0-255 + BYTE byAlarmType; // 0-Ч1-2- + BYTE byZoneResistor; //裬λǧŷ 0-Ч 1--2.2 2--3.33--4.74--5.6 5--8.2 0xff-Զ + float fZoneResistorManual;/*ֶ裬1.0-10.0ȷСһλλǧŷbyZoneResistorΪ0xffʱЧ*/ + BYTE byDetectorSerialNo[ALARMHOST_DETECTOR_SERIAL_LEN_V50]; //̽кţֻ + BYTE byZoneSignalType; //źŴ(ֻ)0-߷1-߷ + BYTE byDisableDetectorTypeCfg; //̽Ƿ񲻿䣬0-䣬1- + WORD wTimeOut; //ʱʱ䣬 + BYTE byAssociateLampOut[8];// 0 ʾ1 ֵΪ1ʾ 0 ʾ + BYTE byVoiceFileName[32]; //ļ + BYTE byTimeOutRange; // ʱʱ䷶Χ0:1~599s,1:1~65535s + BYTE byDetectorSignalIntensity; // ̽źǿȣֻ0~100 + BYTE byTimeOutMethod; //ʱʱʽ0-ʱ1-ָʱ + BYTE byAssociateFlashLamp;// 0-Ч1-2- + BYTE byStayAwayEnabled;// ʱڼ·ʹ 0-Ч1-ʹܣ2-ʹ + BYTE bySilentModeEnabled;// ģʽʹ 0-Ч1-ʹܣ2-ʹ + BYTE byRelativeChannel[RELATIVE_CHANNEL_LEN];// ͨţ0ʾЧһbyteֽڱʾһͨ + BYTE byDetectorVersion[VERSION_INFO_LEN]; //̽汾ֻ + BYTE byDetectorMAC[MACADDR_LEN]; //̽MACַֻ + BYTE byLinkageAlarmType; //ͣ1-𾯣2-ܣ3-4-Σ5- + BYTE byRes3[465]; // ֽ +}NET_DVR_ALARMIN_PARAM_V50, *LPNET_DVR_ALARMIN_PARAM_V50; + +#define MAX_MAX_ALARMIN_NUM 64 /* ȡ*/ +typedef struct tagNET_DVR_MULTI_ALARMIN_COND +{ + DWORD dwSize; + int iZoneNo[MAX_MAX_ALARMIN_NUM]; //,0ʼС0ʾЧ + BYTE byRes[256]; +}NET_DVR_MULTI_ALARMIN_COND, *LPNET_DVR_MULTI_ALARMIN_COND; + +typedef struct tagNET_DVR_SINGLE_ALARMIN_PARAM +{ + DWORD dwSize; + WORD wZoneNo; //ţòֻܻȡ + BYTE byJointSubSystem; //ϵͳţòֻܻȡ + BYTE byType; //ͣ0:ʱ,1-24Сʱ,2-ʱ ,3-ڲ4-Կ׷ 5-𾯷 6-ܽ 7-24Сʱ 8-24Сʱ9-24Сʱ𶯷,12-ʱ,13-14-ȼ0xff- + BYTE byName[NAME_LEN]; + WORD wDetectorType; // DETECTOR_TYPE + WORD wInDelay; //ʱ0-255 + WORD wOutDelay; //˳ʱ0-255 + BYTE byAlarmType; // 0-Ч 1- 1- + BYTE byZoneSignalType; //źŴͣ0-߷1-߷ + BYTE byDetectorSerialNo[ALARMHOST_DETECTOR_SERIAL_LEN]; //̽кţֻ + BYTE byDisableDetectorTypeCfg; //̽Ƿ񲻿䣬0-䣬1- + BYTE byTimeOutRange; // ʱʱ䷶Χ0:1~599s,1:1~65535s + BYTE byDetectorSignalIntensity; // ̽źǿȣֻ0~100 + WORD wTimeOut; //ʱʱ䣬 + BYTE byTimeOutMethod; //ʱʱʽ0-ʱ1-ָʱ + BYTE byAssociateFlashLamp;// 0-Ч1-2- + BYTE byStayAwayEnabled;// ʱڼ·ʹ 0-Ч1-ʹܣ2-ʹ + BYTE bySilentModeEnabled;// ģʽʹ 0-Ч1-ʹܣ2-ʹ + BYTE byRes2[110]; // ֽ +}NET_DVR_SINGLE_ALARMIN_PARAM, *LPNET_DVR_SINGLE_ALARMIN_PARAM; + +typedef struct tagNET_DVR_SINGLE_ALARMIN_PARAM_V50 +{ + DWORD dwSize; + WORD wZoneNo; //ţòֻܻȡ + BYTE byJointSubSystem; //ϵͳţòֻܻȡ + BYTE byType; //ͣ0:ʱ,1-24Сʱ,2-ʱ ,3-ڲ4-Կ׷ 5-𾯷 6-ܽ 7-24Сʱ 8-24Сʱ9-24Сʱ𶯷,12-ʱ,13-14-ȼ0xff- + BYTE byName[NAME_LEN]; + WORD wDetectorType; // DETECTOR_TYPE + WORD wInDelay; //ʱ0-255 + WORD wOutDelay; //˳ʱ0-255 + BYTE byAlarmType; // 0-Ч 1- 1- + BYTE byZoneSignalType; //źŴͣ0-߷1-߷ + BYTE byDetectorSerialNo[ALARMHOST_DETECTOR_SERIAL_LEN]; //̽кţֻ + BYTE byDisableDetectorTypeCfg; //̽Ƿ񲻿䣬0-䣬1- + BYTE byTimeOutRange; // ʱʱ䷶Χ0:1~599s,1:1~65535s + BYTE byDetectorSignalIntensity; // ̽źǿȣֻ0~100 + WORD wTimeOut; //ʱʱ䣬 + BYTE byTimeOutMethod; //ʱʱʽ0-ʱ1-ָʱ + BYTE byAssociateFlashLamp;// 0-Ч1-2- + BYTE byStayAwayEnabled;// ʱڼ·ʹ 0-Ч1-ʹܣ2-ʹ + BYTE bySilentModeEnabled;// ģʽʹ 0-Ч1-ʹܣ2-ʹ + BYTE byRes3[2]; + BYTE byAssociateAlarmOut[MAX_ALARMHOST_ALARMOUT_NUM]; // + BYTE byRes2[128]; // ֽ +}NET_DVR_SINGLE_ALARMIN_PARAM_V50, *LPNET_DVR_SINGLE_ALARMIN_PARAM_V50; + +typedef struct tagNET_DVR_ALARMIN_PARAM_LIST +{ + DWORD dwSize; + NET_DVR_SINGLE_ALARMIN_PARAM struSingleAlarmInParam[MAX_MAX_ALARMIN_NUM]; + BYTE byRes[128]; +}NET_DVR_ALARMIN_PARAM_LIST, *LPNET_DVR_ALARMIN_PARAM_LIST; + +typedef struct tagNET_DVR_ALARMIN_PARAM_LIST_V50 +{ + DWORD dwSize; + NET_DVR_SINGLE_ALARMIN_PARAM_V50 struSingleAlarmInParam[MAX_MAX_ALARMIN_NUM]; + BYTE byRes[128]; +}NET_DVR_ALARMIN_PARAM_LIST_V50, *LPNET_DVR_ALARMIN_PARAM_LIST_V50; + +typedef struct tagNET_DVR_ALARMOUT_PARAM +{ + DWORD dwSize; // ṹС + BYTE byName[NAME_LEN]; // + WORD wDelay; // ӳ λs, Χ0~3599s 0 ʾһֱ + WORD wTriggerIndex; //ţòֻܻȡ + BYTE byAssociateAlarmIn[MAX_ALARMHOST_ALARMIN_NUM]; //ʾŸıͨ ͬʱһ±0ʾ1 0- 1- + BYTE byModuleType; //Ӵͣ1-ش 2-4·3-8· 4-5-32·6-1ž͵ؿ7-2ž͵ؿ8-4ž͵ؿ,9-2·10-̣11-չ + BYTE byModuleStatus; //Ӵ״̬ 1- 2- + WORD wModuleAddress; //Ӵַչģ0~2550xFFFFʾЧ + BYTE byModuleChan; //Ӵͨţ1ʼֵģ0xFFʾЧ + BYTE byWorkMode; //ģʽ1-2-涯 + BYTE byAlarmOutMode; //ģʽ1-ģʽ2-ģʽ + BYTE byTimeOn; //ʱ 1~60s + BYTE byTimeOff; //ʱ 1~60s + BYTE byDurationConstOutputEnable; //̵ʹ + BYTE byRes2[50]; //ֽ +}NET_DVR_ALARMOUT_PARAM, *LPNET_DVR_ALARMOUT_PARAM; + +typedef struct tagNET_DVR_ALARMIN_SETUP +{ + BYTE byAssiciateAlarmIn[MAX_ALARMHOST_ALARMIN_NUM];//ͨ ±0Ӧ1 + BYTE byRes[100];//ֽ +}NET_DVR_ALARMIN_SETUP, *LPNET_DVR_ALARMIN_SETUP; + +typedef struct tagNET_DVR_ALARMHOST_MAIN_STATUS +{ + DWORD dwSize; + BYTE bySetupAlarmStatus[MAX_ALARMHOST_ALARMIN_NUM];//ڲ״̬(֧512ڲѯ)0-Ӧڴڳ״̬1-Ӧڴڲ״̬ + BYTE byAlarmInStatus[MAX_ALARMHOST_ALARMIN_NUM];//ڱ״̬(֧512ڲѯ)0-Ӧڵǰޱ1-Ӧڵǰб + BYTE byAlarmOutStatus[MAX_ALARMHOST_ALARMOUT_NUM];//״̬(֧512ڲѯ)0-Ӧޱ1-Ӧб + BYTE byBypassStatus[MAX_ALARMHOST_ALARMIN_NUM]; // ·״̬ ±ʾ0Ӧ1 0-ʾû· 1-ʾ· + BYTE bySubSystemGuardStatus[MAX_ALARMHOST_SUBSYSTEM]; //ϵͳ״̬,0-Ӧϵͳڳ״̬1-Ӧϵͳڲ״̬ + BYTE byAlarmInFaultStatus[MAX_ALARMHOST_ALARMIN_NUM];//ڹ״̬0-Ӧڴ״̬1-Ӧڴڹ״̬ + BYTE byRes[56]; // ֽ +}NET_DVR_ALARMHOST_MAIN_STATUS, *LPNET_DVR_ALARMHOST_MAIN_STATUS; + +typedef struct tagNET_DVR_ALARMHOST_MAIN_STATUS_V40 +{ + DWORD dwSize; + BYTE bySetupAlarmStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬(֧512ѯ)0-Ӧڳ״̬1-Ӧڲ״̬ + BYTE byAlarmInStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬(֧512ѯ)0-Ӧǰޱ1-Ӧǰб + BYTE byAlarmOutStatus[MAX_ALARMHOST_ALARMOUT_NUM]; //״̬(֧512ѯ)0-Ӧޱ1-Ӧб + BYTE byBypassStatus[MAX_ALARMHOST_ALARMIN_NUM]; //·״̬ ±ʾ0Ӧ1 0-ʾû· 1-ʾ· + BYTE bySubSystemGuardStatus[MAX_ALARMHOST_SUBSYSTEM/*32*/]; //ϵͳ״̬,0-Ӧϵͳڳ״̬1-Ӧϵͳڲ״̬ + BYTE byAlarmInFaultStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬0-Ӧ״̬1-Ӧڹ״̬ + BYTE byAlarmInMemoryStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬ 0-Ӧǰޱ1-Ӧǰб + BYTE byAlarmInTamperStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬0-Ӧޱ1-Ӧб + BYTE byEnableSubSystem[MAX_ALARMHOST_SUBSYSTEM/*32*/]; //ϵͳ״̬0-Ч1-Ӧϵͳδã2-Ӧϵͳ + BYTE bySubSystemGuardType[MAX_ALARMHOST_SUBSYSTEM]; //ϵͳ״̬0-Ч1-2-ʱ3-ڼҲ + BYTE byRes[448]; //ֽ +}NET_DVR_ALARMHOST_MAIN_STATUS_V40, *LPNET_DVR_ALARMHOST_MAIN_STATUS_V40; + +typedef struct tagNET_DVR_ALARMHOST_MAIN_STATUS_V51 +{ + DWORD dwSize; + BYTE bySetupAlarmStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬(֧512ѯ)0xff-Ч0-Ӧڳ״̬1-Ӧڲ״̬2-Ӧڲ + BYTE byAlarmInStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬״̬(֧512ѯ)0xff-Ч0-Ӧǰޱ1-Ӧǰб + BYTE byAlarmOutStatus[MAX_ALARMHOST_ALARMOUT_NUM]; //״̬(֧512ѯ)0xff-Ч0-Ӧޱ1-Ӧб2-δ3-ߣ4-쳣 + BYTE byBypassStatus[MAX_ALARMHOST_ALARMIN_NUM]; //·״̬±ʾ0Ӧ10xff-Ч0-ʾû· 1-ʾ· + BYTE bySubSystemGuardStatus[MAX_ALARMHOST_SUBSYSTEM/*32*/]; //ϵͳ״̬0xff-Ч0-Ӧϵͳڳ״̬1-Ӧϵͳڲ״̬2-Ӧϵͳڲ + BYTE byAlarmInFaultStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬0xff-Ч0-Ӧ״̬1-Ӧڹ״̬ + BYTE byAlarmInMemoryStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬״̬ 0xff-Ч0-Ӧǰޱ1-Ӧǰб + BYTE byAlarmInTamperStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬0xff-Ч0-Ӧޱ1-Ӧб + BYTE byEnableSubSystem[MAX_ALARMHOST_SUBSYSTEM/*32*/]; //ϵͳ״̬0-Ч1-Ӧϵͳδã2-Ӧϵͳ + BYTE bySubSystemGuardType[MAX_ALARMHOST_SUBSYSTEM]; //ϵͳͣ0-Ч1-2-ʱ3-ڼҲ + BYTE bySubSystemAlarm[MAX_ALARMHOST_SUBSYSTEM]; //ϵͳ״̬0-Ч1-2- + BYTE byAlarmOutCharge[MAX_ALARMHOST_ALARMOUT_NUM]; //״̬(֧512ѯ)0-Ч1-2- + BYTE byAlarmOutTamperStatus[MAX_ALARMHOST_ALARMOUT_NUM]; //״̬(֧512ѯ)0-Ч1-2-޷ + BYTE byAlarmInShieldedStatus[MAX_ALARMHOST_ALARMIN_NUM]; //״̬0-Ч1-Σ2- + BYTE byAlarmOutLinkage[MAX_ALARMHOST_ALARMOUT_NUM]; //¼ͣ(֧512ѯ)0-Ч1-2-3-4-ֶ + BYTE byRes[512]; //ֽ +}NET_DVR_ALARMHOST_MAIN_STATUS_V51, *LPNET_DVR_ALARMHOST_MAIN_STATUS_V51; + +typedef struct tagNET_DVR_ALARMHOST_OTHER_STATUS +{ + DWORD dwSize; + BYTE bySirenStatus[ALARMHOST_MAX_SIREN_NUM]; // ״̬ 0-Ŵޱ״̬1-Ŵб״̬ + BYTE byRes[92]; // ֽ +}NET_DVR_ALARMHOST_OTHER_STATUS, *LPNET_DVR_ALARMHOST_OTHER_STATUS; + +typedef struct tagNET_DVR_ALARMHOST_OTHER_STATUS_V50 +{ + DWORD dwSize; + //DS-PEAϵһʽƷ±0Ӧ״̬±1Ӧ״̬,±2ʼӦ״̬ + BYTE bySirenStatus[ALARMHOST_MAX_SIREN_NUM]; //״̬0xff-Ч0-Ŵޱ״̬1-Ŵб״̬2-δ3-ߣ4-쳣 + BYTE byDetetorPower[MAX_DETECTOR_NUM]; //̽״̬0xff-ЧֵΪ0-100ĬϵС20ΪǷѹ״̬ + BYTE byDetetorConnection[MAX_DETECTOR_NUM]; //̽״̬0xff-Ч0-ʾδעᣬ1-ʾߣ 2-ʾߣ3-쳣 + BYTE bySirenPower[ALARMHOST_MAX_SIREN_NUM]; //ŵ״̬0-Ч1-2-Ƿѹ + BYTE bySirenTamperStatus[ALARMHOST_MAX_SIREN_NUM]; //ŷ״̬0-Ч1-2-޷ + BYTE byPowerStausEnabled[MAX_DETECTOR_NUM / 8]; //̽״̬ǷЧλʾ0-Ч1-Ч + BYTE byDetetorPowerStatus[MAX_DETECTOR_NUM / 8]; //̽״̬λʾ0-1- + BYTE byDetetorPowerType; //̽ıʾͣ0-յֵʾʹbyDetetorPower ֶΣ1-յ״̬ʾʹbyPowerStausEnabledbyDetetorPowerStatusֶ + BYTE byRes[975]; //ֽ +}NET_DVR_ALARMHOST_OTHER_STATUS_V50, *LPNET_DVR_ALARMHOST_OTHER_STATUS_V50; + +typedef struct tagNET_DVR_ALARMHOST_OTHER_STATUS_V51 +{ + DWORD dwSize; + //DS-PEAϵһʽƷ±0Ӧ״̬±1Ӧ״̬,±2ʼӦ״̬ + BYTE bySirenStatus[ALARMHOST_MAX_SIREN_NUM]; //״̬0xff-Ч0-Ŵޱ״̬1-Ŵб״̬2-δ3- + BYTE byDetetorPower[MAX_DETECTOR_NUM_V51]; //̽0xff-ЧֵΪ0-100ĬϵС20ΪǷѹ״̬byDetetorPowerTypeΪ0ʱЧ + BYTE byDetetorConnection[MAX_DETECTOR_NUM_V51]; //̽״̬0xff-Ч0-ʾδעᣬ1-ʾߣ 2-ʾ + BYTE bySirenPower[ALARMHOST_MAX_SIREN_NUM]; //ŵ״̬0-Ч1-2-Ƿѹ + BYTE bySirenTamperStatus[ALARMHOST_MAX_SIREN_NUM]; //ŷ״̬0-Ч1-2-޷ + BYTE byPowerStausEnabled[MAX_DETECTOR_NUM_V51 / 8]; //̽״̬ǷЧλʾ0-Ч1-Ч + BYTE byDetetorPowerStatus[MAX_DETECTOR_NUM_V51 / 8]; //̽״̬λʾ0-1- + BYTE byDetetorPowerType; //̽ıʾͣ0-յֵʾʹbyDetetorPower ֶΣ1-յ״̬ʾʹbyPowerStausEnabledbyDetetorPowerStatusֶ + BYTE byRes2[3]; + BYTE byRepeaterStatus[MAX_REPEATER_NUM]; //м״̬0-Ч1-ߣ2-ߣ3-δ + BYTE byRepeaterTamperStatus[MAX_REPEATER_NUM / 8]; //м״̬λʾ0-Ӧмޱ1-Ӧмб + BYTE byAlarmOutTamperStatus[MAX_ALARMHOST_ALARMOUT_NUM / 8]; //̵״̬λʾ0-Ӧޱ1-Ӧб + BYTE byOutputModuleTamperStatus[MAX_OUTPUT_MODULE_NUM / 8]; //ģ״̬λʾ0-Ӧģޱ1-Ӧģб + BYTE byElectricLockStatus[MAX_ELECTRIC_LOCK_NUM]; //״̬ 0-رգ1 C򿪣Ϊȷԣһ״̬bySirenStatus0λҲҪд + BYTE byRes[274]; //ֽ +}NET_DVR_ALARMHOST_OTHER_STATUS_V51, *LPNET_DVR_ALARMHOST_OTHER_STATUS_V51; + + +//ʹ״̬ +typedef struct tagNET_DVR_ALARMHOST_ENABLECFG +{ + DWORD dwSize; + BYTE byAudioOutEnable[ALARMHOST_MAX_AUDIOOUT_NUM];//ʹܣ0-ܣ1-ʹ + BYTE byElectroLockEnable[ALARMHOST_MAX_ELECTROLOCK_NUM];//ʹܣ0-ܣ1-ʹ + BYTE byMobileGateEnable[ALARMHOST_MAX_MOBILEGATE_NUM];//ƶʹܣ0-ܣ1-ʹ + BYTE bySirenEnable[ALARMHOST_MAX_SIREN_NUM];//ʹܣ 0-ܣ1-ʹ + BYTE bySerialPurpose;//;0-ڼ1-PTZ + BYTE byRes[63]; +}NET_DVR_ALARMHOST_ENABLECFG, *LPNET_DVR_ALARMHOST_ENABLECFG; + +typedef struct tagNET_DVR_ALARMHOST_ABILITY +{ + DWORD dwSize; // ṹС + WORD wTotalAlarmInNum; // (), + WORD wLocalAlarmInNum; // ر + WORD wExpandAlarmInNum; // չı + WORD wTotalAlarmOutNum; // 豸ֵ֧ + WORD wLocalAlarmOutNum; // رڸ + WORD wExpandAlarmOutNum; // չı + WORD wTotalRs485Num; // 豸ֵ֧ + WORD wLocalRs485Num; // 485 + WORD wExpandRs485Num; // չ485 + WORD wFullDuplexRs485Num; // ȫ˫485 + WORD wTotalSensorNum; // ģ (豸ֵ֧) + WORD wLocalSensorNum; // ģ + WORD wExpandSensorNum; // չģ + WORD wAudioOutNum; // + WORD wGatewayNum; //Ž + WORD wElectroLockNum; // + WORD wSirenNum; // Ŀ + WORD wSubSystemNum; // ɻϵͳĿ + WORD wNetUserNum; // û + WORD wKeyboardNum; // + WORD wOperatorUserNum; // û + BYTE bySupportDetector;//Ƿֳ֧̽1-֧֣0-֧ + BYTE bySupportSensitivity;//Ƿַ֧ȣ1-֧֣0-֧ + BYTE bySupportArrayBypass;//Ƿ֧·1-֧֣0-֧ + BYTE bySupportAlarmInDelay;//Ƿַ֧ӳ,1-֧֣0-֧ + //bySupportAlarmInDelayΪ1ʱʾͻӦʹNET_DVR_ALARMIN_PARAM еdwParamʱʱ䣬бʹʱʽ; + //bySupportAlarmInDelayΪ0ʱʾͨNET_DVR_ALARMSUBSYSTEMPARAM еwEnterDelay wExitDelay + BYTE bySupportAlarmInType[16];//ֵ֧ķ,0:ʱ,1-24Сʱ,2-ʱ ,3-ڲ4-Կ׷ 5-𾯷 6-ܽ 7-24Сʱ 8-24Сʱ9-24Сʱ𶯷,10-Žŷ11-Žŷ15- + BYTE byTelNum; //ֵ֧绰 + BYTE byCenterGroupNum; // + BYTE byGPRSNum; //GPRS4 + BYTE byNetNum; //4 + BYTE byAudioNum; //Ƶ + BYTE by3GNum; //3Gģ + BYTE byAnalogVideoChanNum; //ģƵͨ + BYTE byDigitalVideoChanNum; //Ƶͨ + BYTE bySubSystemArmType; //ϵͳͣ0-ʾ֧֣1-ʾ֧֡bit0-ͨעСֻ֧ͨмֶεʱСѾСиֶΪ00ʾ֧֣1ʾ֧֡ӿSDKڲݣbit1-ʱbit2-ز + BYTE byPublicSubSystemNum; //ϵͳ + DWORD dwSupport1; //λʾ0ʾ֧֣0ʾ֧ + // bit0: Ƿ֧ϵͳþʱ䣬֧򾯺ʱÿϵͳã֧֣ʱھŲ + // bit1: Ƿ֧¼ + // bit2: Ƿ֧¼ر + // bit3: Ƿ֧ϵͳʹ + // bit4; Ƿַ֧ + // bit5; Ƿ֧ϵͳԶ + // bit6: Ƿ֧־Ϲ + // bit7: Ƿֹ֧״̬ѯ + // bit8: Ƿ֧ϵͳչ + // bit9: Ƿ֧Կ׷ϵͳ + // bit10: Ƿ֧"ʾɹͱ" + // bit11: Ƿֵ֧뵼 + // bit12: Ƿ֧LEDĻ + // bit13: Ƿֹ֧Ϲعϵ + DWORD dwSubSystemEvent; //ϵͳ¼λʾ0ʾ֧֣0ʾ֧,bit0-ʱbit1-˳ʱbit2-bit3-bit4-bit5- + DWORD dwOverallEvent; //ȫ¼λʾ0ʾ֧֣0ʾ֧֣bit0-磬bit1-صѹͣbit2-绰ߵߣbit3-쳣bit4-쳣bit5-Ӳ̹,bit6-3G/4Gź쳣, bit7-ģӣ,bit8-WIFIͨŹϣbit9-RFźŸŹ + DWORD dwFaultType; //豸ֵ֧Ĺͣbit0-ϵ磬bit1-Ƿѹbit2-𿪣bit3-绰ߵߣbit4-̵ߣbit5-ϣbit6-쳣bit7-չ쳣bit8-Ӳ쳣 + BYTE byPublicSubsystemAssociateSubsystemNum; //ϵͳɹϵͳ + BYTE byOverallKeyboard; //ȫ̸ּ + WORD wSafetyCabinSupport; //տλʾ0ʾ֧֣0ʾ֧ + //bit0: Ƿַ֧տģʽ + //bit1: Ƿ֧źŴ + //bit2: Ƿ֧Ļã̽ӳʱ䡢״̬仯Ӧʱ䣩 + //bit3: Ƿֺ֧䴫ã˲ + //bit4: Ƿַ֧ʹóʱʱ + BYTE by485SlotNum; //485λ + BYTE bySubSystemAttributeAbility; // ֵΪ1ֹ1ϵͳرʹ + WORD wKeyboardAddrNum; // ̵ַ + BYTE byAlarmLampNum; //Ŀ + BYTE byRes[117]; // ֽ +}NET_DVR_ALARMHOST_ABILITY, *LPNET_DVR_ALARMHOST_ABILITY; + +#define MAX_485CHAN 256 //485ͨ +#define MAX_485SLOT 256 //485λ +typedef struct tagNET_DVR_485_SLOT_LIST_INFO +{ + DWORD dwSize; + BYTE byAll; //0-ȫȡ1-ȫȡ + BYTE byres[3]; + BYTE byIndex[MAX_485SLOT]; //485λ + BYTE byRes[64]; // +}NET_DVR_485_SLOT_LIST_INFO,* LPNET_DVR_485_SLOT_LIST_INFO; + +typedef struct tagNET_DVR_485LIST_INFO +{ + DWORD dwSize; + BYTE byAll; //0-ȫȡ1-ȫȡ + BYTE byres[3]; + BYTE byIndex[MAX_485CHAN]; //485ͨ ±ʾͨţֵ0-ʾʹã1ʾʹ + BYTE byRes[64]; // +}NET_DVR_485LIST_INFO,*LPNET_DVR_485LIST_INFO; + +typedef struct tagNET_DVR_ALARM_RS485CFG +{ + DWORD dwSize; // ṹС + BYTE sDeviceName[NAME_LEN]; // ǰ豸 + WORD wDeviceType; // ǰ豸,ͨNET_DVR_GetDeviceTypeListȡ + WORD wDeviceProtocol; // ǰ豸Э ͨȡЭбȡ + DWORD dwBaudRate; //(bps)0-501-752-1103-1504-3005-6006-12007-24008-48009-960010-1920011-3840012-5760013-7680014-115.2k + BYTE byDataBit; // мλ0-5λ1-6λ2-7λ3-8λ + BYTE byStopBit; // ֹͣλ0-1λ1-2λ + BYTE byParity; //ǷУ飺0-У飬1-У飬2-żУ + BYTE byFlowcontrol; // Ƿأ0-ޣ1-,2-Ӳ + BYTE byDuplex; // 0 - ˫1- ȫ˫ ֻͨ1ȫ˫ֻǰ˫ + BYTE byWorkMode; // ģʽ 0-̨ 1-͸ͨ,2-ݿأ3-,4-Žȫģ,0xfe-Զ壬0xff- + BYTE byChannel; //485ͨ + BYTE bySerialType; //: 0--485, 1--232 + BYTE byMode; //ģʽ 0-Ӷ 1-ӿͻ 2-չģ 3-Ž 4-ݿ 0xff- + BYTE byOutputDataType; //0-Ч1-ţ2- + BYTE byAddress; //ڵַ + BYTE byStairsOutputDataType; //0-Ч1-¥ţ2-ţbyModeΪݿʱЧ + BYTE byRes[32]; // ֽ +}NET_DVR_ALARM_RS485CFG, *LPNET_DVR_ALARM_RS485CFG; + +#define MAX_DEVICE_PROTO_NUM 256 +#define MAX_DEVICE_TYPE_NUM 256 + +// 485ǰ豸֧Эб +typedef struct tagNET_DVR_DEVICE_PROTO_LIST +{ + DWORD dwSize; // ṹС + DWORD dwProtoNum; // Э + NET_DVR_PROTO_TYPE struProtoType[MAX_DEVICE_PROTO_NUM]; // Э + BYTE byRes[12]; // ֽ +}NET_DVR_DEVICE_PROTO_LIST, *LPNET_DVR_DEVICE_PROTO_LIST; + +typedef struct tagNET_DVR_DEVICE_TYPE +{ + DWORD dwType; + BYTE byDescribe[DESC_LEN]; +}NET_DVR_DEVICE_TYPE, *LPNET_DVR_DEVICE_TYPE; + +typedef struct tagNET_DVR_DEVICE_TYPE_LIST +{ + DWORD dwSize; // ṹС + DWORD dwTypeNum; // ͸ + NET_DVR_DEVICE_TYPE struDeviceType[MAX_DEVICE_TYPE_NUM]; + BYTE byRes[12]; +}NET_DVR_DEVICE_TYPE_LIST, *LPNET_DVR_DEVICE_TYPE_LIST; + +#define MAX_ALARMHOST_VIDEO_CHAN 64 +typedef struct tagNET_DVR_ALARM_DEVICE_USER +{ + DWORD dwSize; // ṹС + BYTE sUserName[NAME_LEN]; // û + BYTE sPassword[PASSWD_LEN]; // + NET_DVR_IPADDR struUserIP; /* ûIPַ(Ϊ0ʱʾκεַ) */ + BYTE byMACAddr[MACADDR_LEN]; /* ַ */ + BYTE byUserType; // 0-ͨûԱ 1-Աû 2-װԱû 3-û + BYTE byAlarmOnRight; // Ȩ + BYTE byAlarmOffRight; // Ȩ + BYTE byBypassRight; // ·Ȩ + BYTE byOtherRight[MAX_RIGHT]; // Ȩ + // 0 -- ־Ȩ + // 1 -- ػ + // 2 -- Ȩ + // 3 -- ȡȨ + // 4 -- ָĬϲȨ + // 5 -- Ȩ + // 6 -- PTZ Ȩ + // 7 -- ԶȨ + // 8 -- ԶԤ + // 9 -- Զֶ¼ + // 10 -- Զ̻ط + // 11 -- + // 12 -- ǿƲ + // 13 -- · + // 14 -- ӸĸȨ + // 15 -- ģʽ + BYTE byNetPreviewRight[MAX_ALARMHOST_VIDEO_CHAN/8]; // Զ̿Ԥͨλʾͨbit0-channel 11-Ȩޣ0-Ȩ + BYTE byNetRecordRight[MAX_ALARMHOST_VIDEO_CHAN/8]; // Զ̿¼ͨλʾͨbit0-channel 11-Ȩޣ0-Ȩ + BYTE byNetPlaybackRight[MAX_ALARMHOST_VIDEO_CHAN/8]; // Զ̿Իطŵͨλʾͨbit0-channel 11-Ȩޣ0-Ȩ + BYTE byNetPTZRight[MAX_ALARMHOST_VIDEO_CHAN/8]; // Զ̿PTZͨλʾͨbit0-channel 11-Ȩޣ0-Ȩ + //BYTE byPriority; // ȼ0xff-ޣ0--ͣ1--У2-- + //ޣʾ֧ȼã + //ͣĬȨޣԶ̻طţԶ̲鿴־״̬Զ̹ػ/ + //УԶ̨̿Զֶ¼Զ̻طţԽԶԤرݣ/Զ̹ػ/ + //ߣԱ + BYTE sOriginalPassword[PASSWD_LEN]; // ԭʼ + BYTE sKeypadPassword[PASSWD_LEN]; // + BYTE byUserEnabled; // ûǷʹã0-Ч1-2- + BYTE byRes2[135]; // ֽ +}NET_DVR_ALARM_DEVICE_USER, *LPNET_DVR_ALARM_DEVICE_USER; + +typedef struct tagNET_DVR_KEYBOARD_USER +{ + DWORD dwSize; // ṹС + DWORD dwID; // ûID + BYTE byDefanceArea[MAX_ALARMHOST_ALARMIN_NUM]; //Ȩ ±ʾ ֧512 0 - Ȩ 1- Ȩ + BYTE byRes[560]; // ֽ +}NET_DVR_KEYBOARD_USER, *LPNET_DVR_KEYBOARD_USER; + +typedef struct tagNET_DVR_OPERATE_USER +{ + DWORD dwSize; // ṹС + BYTE sUserName[NAME_LEN]; // û + BYTE sPassword[PASSWD_LEN]; // + BYTE bySubSystemPermission;/*0-װԱȨ ԱȨޣϵͳ£ 1-޲棬· 2-޳棬· 3-޲棬· + 4-в//棬· 5-г棬· 6-в棬· 7-޲棬· + 8-޲棬· 9-޲棬· 10-в棬· 11-г棬· 1 + 2-в棬·*/ + BYTE byRes[63]; // ֽ +}NET_DVR_OPERATE_USER, *LPNET_DVR_OPERATE_USER; + +typedef struct tagNET_DVR_GATEWAY_CFG +{ + DWORD dwSize; // ṹС + BYTE byName[NAME_LEN]; // Ž + BYTE byEnable; // Ƿ + BYTE byLocalEnable; // Ƿ + WORD wDelayTime; // ʱʱ λΪ0-65535 0Ϊһֱ + BYTE byLockWorkMode;//ģʽ0-ͨ1-ϵ + BYTE byRes[31]; // ֽ +}NET_DVR_GATEWAY_CFG, *LPNET_DVR_GATEWAY_CFG; + +typedef struct tagNET_DVR_SENSOR_ALARM +{ + DWORD dwSize; // ṹС + DWORD dwAbsTime; // ʱϢ OSDʾϢ + BYTE byName[NAME_LEN]; // sensor + BYTE bySensorChannel; // ģͨ + BYTE byType; // ģ + BYTE byAlarmType; // 1-42-33-24-15-16-27-38-4 ͵ǰģʽй + // 統Ϊ1000ʱ,1123ֱ + BYTE byAlarmMode; //ģʽ֣-HHHH-HHHL-HHLLHLLL-LLLL Ϊƽ̶̨жϹ,1111ϣ1110£1100£1000()0000() + float fValue; // ǰģֵ + float fOriginalValue; //ԭʼѹֵСλֵʾǵѹNET_DVR_SENSOR_INFObySensorStandard + BYTE byRes2[28]; // ֽ +}NET_DVR_SENSOR_ALARM, *LPNET_DVR_SENSOR_ALARM; + +#define PROTOCOL_VERTION_LEN 32 + +typedef struct tagNET_DVR_RS485_PROTOCOL_VERSION +{ + DWORD dwSize; + BYTE byProtocleVersion[PROTOCOL_VERTION_LEN];//RS485Э汾Ϣ + BYTE byRes[128]; +}NET_DVR_RS485_PROTOCOL_VERSION, *LPNET_DVR_RS485_PROTOCOL_VESRION; + + +typedef struct +{ + /*ԤĿǰıû(򣬼)*/ + DWORD dwAlarmType; + /*0Ӧ1˿*/ + BYTE byAlarmInputNumber[MAX_ALARMHOST_ALARMIN_NUM]; + BYTE byRes[160]; +}NET_DVR_ALARMHOST_ALARMINFO,*LPNET_DVR_ALARMHOST_ALARMINFO; +// ϴ +typedef struct tagNET_DVR_SWITCH_ALARM +{ + DWORD dwSize; + BYTE byName[NAME_LEN]; // switch + WORD wSwitchChannel; // ͨ, 0-255 + BYTE byAlarmType; // 0--1--·2--·,3-쳣 + BYTE byRes[41]; // ֽ +}NET_DVR_SWITCH_ALARM, *LPNET_DVR_SWITCH_ALARM; + +typedef union tagNET_DVR_ALARMHOST_EXCEPTION_PARAM +{ + DWORD dwUnionSize[20]; // С +}NET_DVR_ALARMHOST_EXCEPTION_PARAM, *LPNET_DVR_ALARMHOST_EXCEPTION_PARAM; + +typedef struct tagNET_DVR_ALARMHOST_EXCEPTION_ALARM +{ + DWORD dwSize; // ṹС + // 쳣 1-豸𱨾 2-豸ָ 3-Դ籨 4-Դָ 5-ڲͨŹϱ + // 6-ڲͨŹϺָ 7-绰߶ 8-绰߶߻ָ 9-Լʧܱ 10-Լʧָܺ + // 11Ƿѹ 12صѹָ13-عϣ14-MBUSģߣ15-MBUSģ߻ָ16-̵ߣ + //17-̵߻ָ18-豸ƶ19-豸ƶλ 20-485·ϱ 21-485·Ϻָ + //25-Ӱ1,26-Ӱ1γ, 27-Ӱ2,28-Ӱ2γ + DWORD dwExceptionType; + BYTE byRes[36]; // +}NET_DVR_ALARMHOST_EXCEPTION_ALARM, *LPNET_DVR_ALARMHOST_EXCEPTION_ALARM; + +//вŲü÷ʽ +#define MAX_CENTERNUM 4 //G1,G2 G3 G4N1N2N3N4T1T2T3T4 +typedef struct tagNET_DVR_PHONECENTERDIALCFG +{ + BYTE sCenterName[NAME_LEN]; + BYTE byPhoneNum[MAX_PHONE_NUM/*32*/]; //ĺ + BYTE byRepeatCall; //ظŴ1~15 + BYTE byPstnProtocol; //ͨЭ飬0-CID + BYTE byDialDelay; //ʱ150s, 0-150 + BYTE byPstnTransMode; //䷽ʽ0-DTMF 5/S1-DTMF 10/S + BYTE byEnable; //ʹܣ0-رգ1- + BYTE byRes1[5]; + BYTE byReceiverId[6]; //ջʶ˺ţ + BYTE byRes2[32]; +}NET_DVR_PHONECENTERDIALCFG, *LPNET_DVR_PHONECENTERDIALCFG; + +typedef struct tagNET_DVR_ALARMHOSTDIALCFG +{ + DWORD dwSize; + NET_DVR_PHONECENTERDIALCFG struPhoneCenterParam[MAX_CENTERNUM];//IJ + WORD wReportPeriod; //ԱϴڣСʱֵ֧7죬168Сʱ), Χ1-168 + WORD wFirstReportTime; //豸һԱϴ1~3600 + BYTE byReportValid; //0-òԱϴ 1-òԱϴ + BYTE byRes[19]; +}NET_DVR_ALARMHOSTDIALCFG, *LPNET_DVR_ALARMHOSTDIALCFG; + +typedef struct tagNET_DVR_ALARMHOSTDIALSETUPMODE +{ + DWORD dwSize; + BYTE byEnableMode;//÷ʽ0ã1һֱã2:߶ãʱرգ + BYTE byCallType; //ϴķʽ1-ģ2-˫ģ3һһ + BYTE byRes1[14]; +}NET_DVR_ALARMHOSTDIALSETUPMODE, *LPNET_DVR_ALARMHOSTDIALSETUPMODE; + +#define MAX_PU_CHAN_NUM 512 + +typedef struct tagNET_DVR_PU_CHAN_INFO +{ + NET_DVR_IPADDR struIpAddr; // ipַ + WORD wPort; // ˿ + WORD wChannel; // ͨ + BYTE byRes[24]; // +}NET_DVR_PU_CHAN_INFO, *LPNET_DVR_PU_CHAN_INFO; + +typedef struct tagNET_DVR_PU_CHAN_LIST +{ + DWORD dwSize; // ṹ + DWORD dwNum; // ǰͨ + NET_DVR_PU_CHAN_INFO struPuChanInfo[MAX_PU_CHAN_NUM]; +}NET_DVR_PU_CHAN_LIST, *LPNET_DVR_PU_CHAN_LIST; + +#define MAX_ALARM_CAM_NUM 32 // CAM + +typedef struct tagNET_DVR_PTZ_CTRL +{ + BYTE byEnable; // ǷPTZ + BYTE byType; // PTZ Ƶ 1- Ԥõ 2 -Ѳ 3-켣 + BYTE byPtzNo; // ptz ƵԤõ Ѳ 켣 + BYTE byRes[5]; // ֽ +}NET_DVR_PTZ_CTRL, *LPNET_DVR_PTZ_CTRL; + +typedef struct tagNET_DVR_ALARM_CAM_INFO +{ + DWORD dwCamID; // CAMͨ + DWORD dwRecordTime; // ¼ʱ λΪs -1ʾһֱ¼ 0 ʾ¼ + DWORD dwMonID; // CamMonʾ + DWORD dwResidentTime; // Ѳͣʱ䵥λΪs -1ʾһֱͣ 0 ʾͣ + NET_DVR_PTZ_CTRL struPtzCtrl; // PTZϢ + BYTE byAlarmOffMode; // лǽȡģʽ 0-ȡ1-Զȡ2-ֶȡ ȡȡʱȡǽ ԶȡȡʱȴһʱȡǽԼ20 ֶȡûֶͨķʽȡ + BYTE byDevType; // 豸Ϊ豸ʱЧʾܱ豸ȡԴ 1-뿨 2-뿨 + BYTE byDecChan; // ΪͨΪͨ + BYTE byRes[17]; // ֽ +}NET_DVR_ALARM_CAM_INFO, *LPNET_DVR_ALARM_CAM_INFO; + +typedef struct tagNET_DVR_ALARM_CAM_CFG +{ + DWORD dwSize; // ṹС + BYTE byEnable; // ǷñCAM 豸Ĭϲ + BYTE byRes[7]; // ֽ + DWORD dwNum; // CAMĸ ȡǰЧ + NET_DVR_ALARM_CAM_INFO struAlarmCam[MAX_ALARM_CAM_NUM]; +}NET_DVR_ALARM_CAM_CFG, *LPNET_DVR_ALARM_CAM_CFG; + +#define MAX_GATEWAY_NUM 8 // Ž +typedef struct tagNET_DVR_ALARMHOST_AUDIO_ASSOCIATE_ALARM +{ + DWORD dwSize; + BYTE byEnterDoor[8]; // ±ʾŽţԪֵʾϢ0ʾ 1-8ʾƵ + BYTE byExitDoor[8]; // ±ʾŽţԪֵʾϢ0ʾ 1-8ʾƵ + BYTE byAlarmIn[MAX_ALARMHOST_ALARMIN_NUM/*512*/]; //룬±ʾţԪֵʾϢ0ʾ 1-8ʾƵ + BYTE byRes[128]; +}NET_DVR_ALARMHOST_AUDIO_ASSOCIATE_ALARM, *LPNET_DVR_ALARMHOST_AUDIO_ASSOCIATE_ALARM; + +//ϴأϴصչ +typedef struct tagNET_DVR_UPLOAD_PARAM +{ + DWORD dwSize; + BYTE byUploadType; /*ϴʽ1-ļԵַȡļϴ 2-ӻȡϴ*/ + BYTE byDataType; //ͣ1-Ƶ + BYTE byDataNum; //ݱţ磺ϴòʾţţεˡڵ + BYTE byAudioType; //ʽ0-wave + char sFileName[260]; //ļȫ· + char *lpBuffer; //ݻ + DWORD dwBufferSize; //С + BYTE byRes2[128]; +}NET_DVR_UPLOAD_PARAM, *LPNET_DVR_UPLOAD_PARAM; + +typedef void (CALLBACK *DATADOWNLOAD)(LONG nDownloadHandle, DWORD dwDataType, void* pBuffer, DWORD dwBufSize, void *pUser); +typedef struct tagNET_DVR_ALARMHOST_PARAM +{ + DWORD dwSize; + BYTE byDownType; /*صݱ淽ʽ1-ļԵַݣ 2-ͨصȡ*/ + BYTE byDataType; //ͣ1-Ƶ + BYTE byDataNum; //ݱţ磺òʾţţεˡڵ + BYTE byRes1; + char sFileName[260]; //ļȫ· + DATADOWNLOAD lpDataCallBack; //ʱĻص + void* pUserData; //ûݣڻصд + BYTE byRes2[128]; +}NET_DVR_DOWNLOAD_PARAM, *LPNET_DVR_DOWNLOAD_PARAM; + + +typedef struct tagNET_DVR_ALARMHOST_DOWNLOAD_PARAM +{ + DWORD dwSize; + BYTE byDownType; /*صݱ淽ʽ1-ļԵַݣ 2-ͨصȡ*/ + BYTE byDataType; //ͣ1-Ƶ + BYTE byDataNum; //ݱţ磺òʾţţεˡڵ + BYTE byRes1; + char sFileName[260]; //ļȫ· + DATADOWNLOAD lpDataCallBack; //ʱĻص + void* pUserData; //ûݣڻصд + BYTE byRes2[128]; +}NET_DVR_ALARMHOST_DOWNLOAD_PARAM, *LPNET_DVR_ALARMHOST_DOWNLOAD_PARAM; + +//LEDĻ +typedef struct tagNET_DVR_LED_SCREEN_CFG +{ + DWORD dwSize; + BYTE sLEDName[NAME_LEN/*32*/]; // LEDĻ + BYTE byTransMode; // ִֻ֧ͨѶ 1-ͨ + BYTE byProtocolType; // ЭͣӦLEDij + BYTE byLEDColor; // 1-ɫ 2-˫ɫ 3-256Ҷ˫ɫ 4- ȫɫĿǰֻõɫ + BYTE byDataPolarity; // ݼ .0-1- + BYTE byOEPolarity; // 0-Ч 1-Ч + BYTE byScanMode; // 1-1/16, 2-1/8, 3-1/4, 4-1/2, 5-̬ + BYTE byRes1[2]; + //ĻȺ͸߶С16*16㣬8 + WORD wLEDWidth; // 16~2048 + WORD wLEDHeight; // 16~2048 + BYTE byRes2[64]; +}NET_DVR_LED_SCREEN_CFG, *LPNET_DVR_LED_SCREEN_CFG; + +//LED +#define MAX_CONTENT_LEN 512 +typedef struct tagNET_DVR_LED_CONTENT_CFG +{ + DWORD dwSize; + BYTE sLEDContent[MAX_CONTENT_LEN]; // LEDĻʾ + BYTE byContentAct; // 1-̬2-ٴ3-ƶ4-ƶ 5-ƶ 6-ƶ + BYTE byContentSpeed; // 1-241죬24 + BYTE byContentStayTime; // 0-127.5s(0.5s SDKʱ*2ֵ0-255豸ʹõʱ2) + BYTE byRes[33]; +}NET_DVR_LED_CONTENT_CFG, *LPNET_DVR_LED_CONTENT_CFG; + +//LEDʱػ +#define LED_TIMER_NUM 3 // LEDػʱ +#define TIME_SEGMENT_A_DAY 48 // ʱθһ24СʱСʱһ + +typedef struct tagNET_DVR_SWITCH_TIME +{ + BYTE byValid; // 鶨ʱʱǷЧʱdzɶõ + BYTE byRes[3]; + NET_DVR_TIME_EX struTimeOn; // ʱ + NET_DVR_TIME_EX struTimeOff; // ػʱ +}NET_DVR_SWITCH_TIME, *LPNET_DVR_SWITCH_TIME; + + +typedef struct tagNET_DVR_LED_SWITCH_TIME +{ + DWORD dwSize; + NET_DVR_SWITCH_TIME struTimer[LED_TIMER_NUM /*3*/]; //ʱػʱ䣬ṹֻСʱͷЧÿ鿪ʱҪڸĹػʱ䣬ǰһĹػʱҪ磺struTimer[0]Ĺػʱ1000ôstruTimer[0]ĿʱΪ10:00֮ǰ struTimer[1]ĿʱΪ10:00Ժ + BYTE byRes[64]; +}NET_DVR_LED_SWITCH_TIME, *LPNET_DVR_LED_SWITCH_TIME; + +//ʱȵ +typedef struct tagNET_DVR_LED_BRIGHTNESS_STEP +{ + DWORD dwSize; + BYTE byValid; //ʱȵǷЧ + BYTE byRes1[3]; + BYTE byBrightnessStep[TIME_SEGMENT_A_DAY /*48*/]; //ȫ24СʱΪ48ʱΣÿ30һʱΣ48ֽڱʾÿʱεȼȹ160~15ʾ + BYTE byRes2[48]; +}NET_DVR_LED_BRIGHTNESS_STEP, *LPNET_DVR_LED_BRIGHTNESS_STEP; + +typedef struct tagNET_DVR_LED_STATUS +{ + DWORD dwSize; + BYTE bySwitchState; //1-״̬ 2-ػ״̬ + BYTE byBrightness; //ֵΧ0-15 + BYTE byRes[62]; +}NET_DVR_LED_STATUS, *LPNET_DVR_LED_STATUS; + +//2010-12-28 뿨 begin +//µĽ뿨 +#define MAX_DECODE_CARD_NUM 6 //뿨 +/********************뿨ģʽ궨********************/ +typedef enum _HD_DISPLAY_FORMAT +{ + HD_DISPLAY_FORMAT_INVALID = 0x00000000, + HD_DISPLAY_FORMAT_CVBS = 0x00000001, + HD_DISPLAY_FORMAT_DVI = 0x00000002, + HD_DISPLAY_FORMAT_VGA = 0x00000004, + HD_DISPLAY_FORMAT_HDMI = 0x00000008, + HD_DISPLAY_FORMAT_YPbPr = 0x00000010 +}HD_DISPLAY_FORMAT,*LPHD_DISPLAY_FORMAT; + +/********************뿨ģʽ궨********************/ +typedef struct tagNET_DVR_DECCARD_ABILITY /*뿨*/ +{ + BYTE byCardType; //뿨(0:MD,1:MD+,2:HD) + BYTE byDecNums; //ͨ + BYTE byDispNums; //ʾͨ + BYTE byDecStartIdx; //׸ͨнͨе + BYTE byDispStartIdx; //׸ʾͨʾͨе + BYTE byDispResolution[80]; //ģʽֵ֧ķֱ + BYTE byDispFormat[8]; //ֵ֧ģʽ(HD_DISPLAY_FORMAT) + BYTE byWindowMode[4][8]; //ֵ֧Ĵģʽ(1,2,4,9,16)) + BYTE byRes[35]; +} NET_DVR_DECCARD_ABILITY,*LPNET_DVR_DECCARD_ABILITY; + +typedef struct tagNET_DVR_DECODESVR_ABILITY +{ + DWORD dwSize; /* ṹС */ + BYTE byCardNums; /* 뿨 */ + BYTE byStartChan; /* ʼͨ */ + BYTE byRes1[2]; + NET_DVR_DECCARD_ABILITY struDecCardAbility[MAX_DECODE_CARD_NUM]; + BYTE byRes2[64]; +}NET_DVR_DECODESVR_ABILITY, *LPNET_DVR_DECODESVR_ABILITY; + +typedef struct tagNET_MATRIX_DEV_CHAN_INFO +{ + NET_DVR_IPADDR struIP; //DVR IPַ + WORD wDVRPort; //˿ں + BYTE byChannel; //ͨ + BYTE byTransProtocol; //Э0-TCP1-UDP + BYTE byTransMode; //ģʽ 0 1 + BYTE byFactoryType; /*ǰ豸,ͨӿڻȡ*/ + BYTE byUsedSlotNum; //Ƿʹòλţ0-ʹã1-ʹ + BYTE bySlotNum;//λ + BYTE byRes[68]; + BYTE sUserName[NAME_LEN]; //½ʺ + BYTE sPassword[PASSWD_LEN]; // +}NET_MATRIX_DEV_CHAN_INFO,*LPNET_MATRIX_DEV_CHAN_INFO; + +typedef struct tagNET_MATRIX_PU_STREAM_CFG +{ + DWORD dwSize; + NET_DVR_STREAM_MEDIA_SERVER_CFG struStreamMediaSvrCfg; + NET_MATRIX_DEV_CHAN_INFO struDevChanInfo; +} NET_MATRIX_PU_STREAM_CFG,LPNET_MATRIX_PU_STREAM_CFG; + +/*cameraõԪṹ*/ +typedef struct tagNET_DVR_MATRIX_CAMERACFG +{ + DWORD dwGlobalIndex;//ȫֱ + DWORD dwInterIndex;//ֲ + BYTE sCamName[NAME_LEN]; + NET_MATRIX_PU_STREAM_CFG struPuStreamCfg; +} NET_DVR_MATRIX_CAMERACFG,*LPNET_DVR_MATRIX_CAMERACFG; + +typedef struct tagNET_DVR_MATRIX_CAMERALIST +{ + DWORD dwSize; + BYTE byRes[12]; + DWORD dwCamNum;//CAM + BYTE *pBuffer; + DWORD dwBufLen;//ָ볤ȣ +} NET_DVR_MATRIX_CAMERALIST,*LPNET_DVR_MATRIX_CAMERALIST; + +typedef struct tagNET_DVR_DISP_CHAN_INFO +{ + NET_DVR_IPADDR struIP; /* IPַ */ + WORD wDVRPort; /* ˿ں */ + BYTE byDispChannel; /* ʾͨ */ + BYTE byUsedSlotNum; //Ƿʹòλţ0-ʹã1-ʹ + BYTE bySlotNum;//λ + BYTE byRes[7]; + BYTE sUserName[NAME_LEN]; /*½ʺ */ + BYTE sPassword[PASSWD_LEN]; /* */ +}NET_DVR_DISP_CHAN_INFO,*LPNET_DVR_DISP_CHAN_INFO; + +/*monitorõԪṹ*/ +typedef struct tagNET_DVR_MATRIX_MONITORCFG +{ + DWORD dwGlobalIndex;//ȫֱ + DWORD dwInterIndex; + BYTE sMonName[NAME_LEN]; + NET_DVR_DISP_CHAN_INFO struDispChanCfg; +} NET_DVR_MATRIX_MONITORCFG,*LPNET_DVR_MATRIX_MONITORCFG; + +typedef struct tagNET_DVR_MATRIX_MONITORLIST +{ + DWORD dwSize; + BYTE byRes[12]; + DWORD dwMonNum;//MON + BYTE *pBuffer; + DWORD dwBufLen;//ָ볤ȣ +} NET_DVR_MATRIX_MONITORLIST,*LPNET_DVR_MATRIX_MONITORLIST; + +#define MAX_SUBMATRIX_NUM 8//ϵͳ +typedef struct tagNET_DVR_SUBMATRIXINFO +{ + BYTE byMainMatrix;//Ƿϵͳ1-ǣ0- + BYTE bySubMatrixSequence;//Ƶۺƽ̨ϵͳ + BYTE byLoginType;//עͣ1-ֱ2-DNS3- + BYTE byRes1[9]; + NET_DVR_IPADDR struSubMatrixIP; /*IPַ޸ģ*/ + WORD wSubMatrixPort; /*ϵͳ˿ںţ޸ģ*/ + BYTE byRes2[6]; + NET_DVR_IPADDR struSubMatrixIPMask; /*IPַ*/ + NET_DVR_IPADDR struGatewayIpAddr; /* صַ */ + BYTE sUserName[NAME_LEN]; /* û ˲ֻܻȡ*/ + BYTE sPassword[PASSWD_LEN]; /* ˲ֻܻȡ*/ + char sDomainName[MAX_DOMAIN_NAME];//(޸) + char sDnsAddress[MAX_DOMAIN_NAME];/*DNSIPַ*/ + BYTE sSerialNumber[SERIALNO_LEN];//кţ˲ֻܻȡ + BYTE byRes3[16]; +}NET_DVR_SUBMATRIXINFO, *LPNET_DVR_SUBMATRIXINFO; + +typedef struct tagNET_DVR_ALLUNITEDMATRIXINFO +{ + DWORD dwSize; + NET_DVR_SUBMATRIXINFO struSubMatrixInfo[MAX_SUBMATRIX_NUM]; + BYTE byRes2[32]; +}NET_DVR_ALLUNITEDMATRIXINFO, *LPNET_DVR_ALLUNITEDMATRIXINFO; + +#define MAX_GATEWAYTRUNKNUM 1024 //Ƶۺƽ̨·ɸ + +typedef struct tagNET_DVR_MATRIXGATEWAYNOTE +{ + WORD wTrunkInToOutAbility;//ߴD1ı׼4ʾ֧4D1 + WORD wTrunkOutToInAbility;//ߴD1ı׼4ʾ֧4D1˫ʱõֵ + BYTE byRes[4]; + NET_DVR_MATRIXSUBSYSTEMINFO struInputNote; + NET_DVR_MATRIXSUBSYSTEMINFO struOutputNote; +}NET_DVR_MATRIXGATEWAYNOTE, *LPNET_DVR_MATRIXGATEWAYNOTE; + +typedef struct tagNET_DVR_MATRIXGATEWAYINFO +{ + DWORD dwSize; + NET_DVR_MATRIXGATEWAYNOTE struGatewayNote[MAX_GATEWAYTRUNKNUM]; + BYTE byRes [32]; +}NET_DVR_MATRIXGATEWAYINFO, *LPNET_DVR_MATRIXGATEWAYINFO; + +typedef struct tagNET_DVR_MATRIXCODESYSTEMINFO +{ + BYTE byMatrixNum;//Ƶۺƽ̨ + BYTE bySubSystemNum;//ϵͳλ + BYTE byChan;//ͨ + BYTE byRes [13]; +}NET_DVR_MATRIXCODESYSTEMINFO,*LPNET_DVR_MATRIXCODESYSTEMINFO; +typedef struct tagNET_DVR_MATRIXDECODESYSTEMINFO +{ + BYTE byMatrixNum;//Ƶۺƽ̨ + BYTE bySubSystemNum;//ϵͳλ + BYTE byDispChan;//ʾͨ + BYTE bySubDispChan;//ʾͨͨ + BYTE byRes [12]; +}NET_DVR_MATRIXDECODESYSTEMINFO,*LPNET_DVR_MATRIXDECODESYSTEMINFO; + +typedef struct tagNET_DVR_MATRIXSWITCH +{ + NET_DVR_MATRIXCODESYSTEMINFO struInputNote; + NET_DVR_MATRIXDECODESYSTEMINFO struOutputNote; + BYTE byRes[32]; +}NET_DVR_MATRIXSWITCH, *LPNET_DVR_MATRIXSWITCH; + +typedef enum { + ENC_CARD = 0, + DEC_CARD, + SD_DEC_CARD, + FPGA_CARD, + CS_CARD, + ALERTOR_CARD, + NAT_0, + NAT_1, + VCA_CARD, + VGA_DEC_CARD, + VGA_ENC_CARD, + ERR_CARD, +} DEV_TYPE; + +typedef struct tagNET_DVR_MATRIXSWITCHCTRL +{ + DWORD dwCamId;//ȫֱ + DWORD dwMonId;//ȫֱ + BYTE bySubWindowNum;//ӦӴں + BYTE bySwitchType;/*лͣ0:л1:л2:ȡ0xff:ʾMONбȫȡ*/ + WORD wAlarmType;//豸ͣ1:2豸 + DWORD dwResidentTime;/* ʾפʱ䣬0xFFFFFFFF ʱ Ϊפʾ*/ + BYTE byVcaDevType;//豸"豸"ʱDEV_TYPE + BYTE byWallNo;//ǽ + BYTE byRes[18]; +}NET_DVR_MATRIXSWITCHCTRL, *LPNET_DVR_MATRIXSWITCHCTRL; + +typedef struct tagNET_DVR_MATRIXDATABASE +{ + //ļͣ1-ݿļ2-ݿļ3-ƽ̨ݿļ4-ļ0xffһʧܵݿ + DWORD dwDevType; + DWORD dwParam; //ššƽ̨ţļʱֵ + BYTE byFileType;//ļͣ1-sql䣬2-db䣬3-ļ + BYTE byRes [3]; +} NET_DVR_MATRIXDATABASE, *LPNET_DVR_MATRIXDATABASE; + +typedef struct tagNET_DVR_SUBSYSTEMINFO_V40 +{ +/*ϵͳͣ1-ϵͳ2-ϵͳ3-ϵͳ4-ϵͳ5-ϵͳ6-ϵͳ7-ϵͳ8-V6ϵͳ + 9-V6ϵͳ10-תϵͳ11-X86ϵͳ12-ϵͳ13-X86ķ壬14- X86ҵ壬15-ƴϵͳ 16-˽ϵͳ17-X86ƴϵͳ18-ͨƴϵͳ19-Ƶϵͳ0-NULL˲ֻܻȡ*/ + BYTE bySubSystemType; + //ϵͳͨϵͳ485˲ֻܻȡ + BYTE byChan; + BYTE byLoginType;//עͣ1-ֱ2-DNS3- + BYTE bySlotNum ;//λţ˲ֻܻȡ + BYTE byRes1[4]; + NET_DVR_IPADDR struSubSystemIP; /*IPַ޸ģ*/ + NET_DVR_IPADDR struSubSystemIPMask;// + NET_DVR_IPADDR struGatewayIpAddr; /* صַ */ + WORD wSubSystemPort; //ϵͳ˿ںţ޸ģ + BYTE byRes2[6]; + BYTE sUserName[NAME_LEN]; /* û ˲ֻܻȡ*/ + BYTE sPassword[PASSWD_LEN]; /*(޸)*/ + char sDomainName[MAX_DOMAIN_NAME];//(޸) + char sDnsAddress[MAX_DOMAIN_NAME];/*DNSIPַ*/ + BYTE sSerialNumber[SERIALNO_LEN];//кţ˲ֻܻȡ + BYTE byBelongBoard;//Ӱţ1ʼ0xffʾЧ + BYTE byInterfaceType;//ӿͣ0-ͣ1-BNC2-VGA3-HDMI4-DVI5-SDI, 6-FIBER, 7-RGB, 8-YPrPb, 9-VGA/HDMI/DVIӦ10-3GSDI, 11-VGA/DVIӦ12-HDTVI13-HDBaseT14-DP15-DVIT16-TVI,17-VSCREEN,18-miniDP,0xff-Ч + BYTE byInterfaceNums;//ӿڸ0xffʾЧ + BYTE byInterfaceStartNum;//ӿʼţ0xffʾЧ + BYTE byDeviceName[20];//ϵͳ + BYTE byAudioChanNums; //Ƶͨ + BYTE byAudioChanStartNum; //Ƶͨʼ + BYTE byAudioChanType;//Ƶͨͣ0-Ч1-Ƶ룬2-Ƶ + BYTE byRes3[33]; +}NET_DVR_SUBSYSTEMINFO_V40, *LPNET_DVR_SUBSYSTEMINFO_V40; + +#define MAX_SUBSYSTEM_NUM_V40 120 +typedef struct tagNET_DVR_ALLSUBSYSTEMINFO_V40 +{ + DWORD dwSize; + NET_DVR_SUBSYSTEMINFO_V40 struSubSystemInfo[MAX_SUBSYSTEM_NUM_V40]; + BYTE byRes[8]; +}NET_DVR_ALLSUBSYSTEMINFO_V40, *LPNET_DVR_ALLSUBSYSTEMINFO_V40; + +typedef struct tagNET_DVR_SUBSYSTEM_BASIC_INFO +{ + DWORD dwSize; + /*ϵͳͣ1-ϵͳ2-ϵͳ3-ϵͳ4-ϵͳ5-ϵͳ6-ϵͳ7-ϵͳ8-Fpgaϵͳ9-Fpgaϵͳ10-תϵͳ11-X86ϵͳ12-ϵͳ13-X86ķ壬 14- X86ҵ壬15-ƴϵͳ 16-˽ϵͳ17-X86ƴϵͳ18-ͨƴϵͳ19-źŽϵͳ,0-NULL˲ֻܻȡ*/ + BYTE bySubSystemType; + //ϵͳͨϵͳ485˲ֻܻȡ + BYTE bySubSystemNo;//ϵͳţ˲ֻܻȡ + BYTE byInterfaceType;//ӿͣ0-ͣ1-BNC2-VGA3-HDMI4-DVI5-SDI, 6-FIBER, 7-RGB, 8-YprPb, 9-VGA/HDMI/DVIӦ10-3GSDI, 11-VGA/DVIӦ12-HDTVI13-HDBaseT14-DP15-DVIT0xff-Ч + BYTE byRes1; + DWORD dwChan; + NET_DVR_IPADDR struSubSystemIP; /*IPַ޸ģ*/ + NET_DVR_IPADDR struSubSystemIPMask;// + NET_DVR_IPADDR struGatewayIpAddr; /* صַ */ + WORD wSubSystemPort; //ϵͳ˿ںţ޸ģ + BYTE byRes2[6]; + BYTE sSerialNumber[SERIALNO_LEN];//кţ˲ֻܻȡ + BYTE byBelongBoard;//Ӱţ1ʼ0xffʾЧbyBelongBoardHΪ0ʱֶοΪ0xff + BYTE byBelongBoardH; //ӰŸλ + BYTE byRes3[2]; + BYTE byDeviceName[20];//ϵͳ + DWORD dwStartChanNo;//ʼͨ + BYTE byDevNo; //豸 + BYTE byRes4[63]; +}NET_DVR_SUBSYSTEM_BASIC_INFO, *LPNET_DVR_SUBSYSTEM_BASIC_INFO; + +typedef struct NET_DVR_SUBSYSTEM_BASIC_INFO_RESPONSE +{ + DWORD dwSize; + DWORD dwErrorCode; // + BYTE byDevNo; //豸 + BYTE bySubSystemNo;//ϵͳ + BYTE byRes[30]; +} NET_DVR_SUBSYSTEM_BASIC_INFO_RESPONSE,*LPNET_DVR_SUBSYSTEM_BASIC_INFO_RESPONSE; + +typedef struct NET_DVR_CAMERA_INFO_RESPONSE +{ + DWORD dwErrorCode; // + DWORD dwCamId; /*cam ͳһ*/ + BYTE byRes[4]; +} NET_DVR_CAMERA_INFO_RESPONSE,*LPNET_DVR_CAMERA_INFO_RESPONSE; + +typedef struct NET_DVR_MONITOR_INFO_RESPONSE +{ + DWORD dwErrorCode; // + DWORD dwMonId; /*mon ͳһ*/ + BYTE byRes[4]; +} NET_DVR_MONITOR_INFO_RESPONSE, *LPNET_DVR_MONITOR_INFO_RESPONSE; + +typedef struct tagNET_DVR_AUDIO_INFO +{ + DWORD dwSize; + BYTE byAudioChanType;//Ƶͨͣ1-Ƶ룬2-Ƶ + BYTE byRes1[3]; + DWORD dwAudioNo; //Ƶ(1ֽ豸+1ֽӰ+2ֽƵں) + BYTE byRes2[16]; +}NET_DVR_AUDIO_INFO, *LPNET_DVR_AUDIO_INFO; + + +typedef struct tagNET_DVR_SINGLESUBSYSTEMJOININFO_V40 +{ + /*ϵͳͣ1-ϵͳ2-ϵͳ3-ϵͳ4-ϵͳ5-ϵͳ6-ϵͳ7-ϵͳ8-V6ϵͳ9-V6ϵͳ0-NULL˲ֻܻȡ*/ + BYTE bySubSystemType; + BYTE byConnectStatus;//ϵͳ״̬1-2-ӶϿ + BYTE byMatrixNum;//Ƶۺƽ̨ţϵͳ34ʱ + BYTE bySubSystemNum;//ϵͳλţ0~79ϵͳ34ʱ + NET_DVR_DECSUBSYSTEMJIONSTATUS struDecSub [MATRIX_MAXDECSUBSYSTEMCHAN]; + BYTE byBindStatus;//״̬0-ûа󶨣1-Ѿ󶨣ƴʱõ + BYTE bySlotNum ;//λţ˲ֻܻȡ + //ϵͳΪ1ʱã0-δ1-D12-7203-1080 + BYTE byDecodeAbility; + BYTE byUsedTrunk; + BYTE byRes[64]; +}NET_DVR_SINGLESUBSYSTEMJOININFO_V40,LPNET_DVR_SINGLESUBSYSTEMJOININFO_V40; + +typedef struct tagNET_DVR_ALLDECSUBSYSTEMJOININFO_V40 +{ + DWORD dwSize; + NET_DVR_SINGLESUBSYSTEMJOININFO_V40 struSingleSubSystemJoinInfo[MAX_SUBSYSTEM_NUM_V40]; + BYTE byRes[48]; +}NET_DVR_ALLDECSUBSYSTEMJOININFO_V40, *LPNET_DVR_ALLDECSUBSYSTEMJOININFO_V40; + +#define MAX_OPTICALFIBER_NUM 16 +typedef struct tagNET_DVR_SUBSYSTEM_ABILITY +{ +/*ϵͳͣ1-ϵͳ2-ϵͳ3-ϵͳ4-ϵͳ5-ϵͳ6-ϵͳ7-ϵͳ8-V6ϵͳ9-V6ϵͳ + 10-תϵͳ11-X86ϵͳ壬 14- X86ҵ壬15-ƴϵͳ 16-˽ϵͳ17-X86ƴϵͳ18-ͨƴϵͳ0-NULL˲0-NULL˲ֻܻȡ*/ + BYTE bySubSystemType; + BYTE byChanNum;//ϵͳͨ + BYTE byStartChan;//ϵͳʼͨ + BYTE bySlotNum ;//λ + BYTE byRes1[4]; + union + { + BYTE byRes[200]; + struct + { + BYTE byDecode; //ǷǴ빦ܵܰ,1-ǣ0- + BYTE byNeedPreAllocDec; //ǷҪԤԴ1-ǣ0- + BYTE byVACType; //ϵͳͣ0-ͨͣ1-ǿ + BYTE byRes[197]; + }struVACSystemAbility; + struct + { + BYTE byVGANums;//VGAʾͨ1ʼ + BYTE byBNCNums;//BNCʾͨ9ʼ + BYTE byHDMINums;//HDMIʾͨ25ʼ + BYTE byDVINums;//DVIʾͨ29ʼ + BYTE byLayerNums ;//ƴУʱ֧ͼ + BYTE bySpartan;//Թܣ0-֧֣1-֧ + BYTE byDecType; //ϵͳͣ0-ͨ,1-ǿ(ͨͷʱǰ4ʹԴǿ޴ƣǿɱϵͳ16·D1Դ + //ǿͱΪԴɱãܱͨ) + //2-ܹϵͳ3-תϵͳܺתϵͳڽǽ + BYTE byOutputSwitch;//Ƿ֧HDMI/DVIл0-֧֣1-֧ + BYTE bySDINums;//SDIʾͨ33ʼ + BYTE byRes1[38]; + BYTE byDecoderType ; //Ƿֶ֧೧룬0-֧֣1-֧ + BYTE byRes2[152]; + }struDecoderSystemAbility; + struct + { + BYTE byCoderType;//ͣ0-壬1-, 2-ģ + BYTE byOptical;//˻룬0-1- + BYTE byOpticalSubChan; //ÿŵ + BYTE bySupportAVSeparate;//Ƿ֧Ƶ룬0-֧֣1-֧ + BYTE byRes[196]; + }struCoderSystemAbility; + struct + { + WORD wTrunkAbility;//ߴD1ı׼4ʾ֧4D1 + BYTE byOpticalFiberNum;// + BYTE byRes[197]; + }struInputSystemAbility; + struct + { + WORD wTrunkAbility;//ߴD1ı׼4ʾ֧4D1 + BYTE byOpticalFiberNum;// + BYTE byRes[197]; + }struOutputSystemAbility; + struct + { + BYTE by485Num;//ϵͳ485 + BYTE bySlotNum;//ÿ485λ + BYTE byRes[198]; + }struCodeSpitterSystemAbility; + struct + { + WORD wAlarmInNums; + WORD wAlarmOutNums; + /* ʶǷӣ 1ʾӣ Ϊ0 ʾδ */ + BYTE byAlarmBoxEnable[4][8]; + BYTE bySupportContact; /* Ƶۺƽ̨ڲ0-֧,1-֧ */ + BYTE byRes[163]; + }struAlarmHostSystemAbility; + struct + { + BYTE byOpticalFiberNum;// + BYTE byRes1[3]; + //˴D1ı׼4ʾ֧4D1 + WORD wTrunkAbility[MAX_OPTICALFIBER_NUM/*16*/]; + BYTE byRes2[164]; + }struInOutputSystemAbility; + struct + { + BYTE bySupportRingProtocol; //Ƿֻ֧Э + BYTE bySupportRingNums; //ֻ֧ + BYTE bySupportPortNums; //ֵ֧Ķ˿ + BYTE byRes[1]; + DWORD dwPortSupportRingProto; //ÿ˿Ƿֻ֧Э飬λ㣬132λֱʾ132˿ڣ0-֧֣1-ʾ֧ + BYTE byRes2[192]; + } struFiberSwitchSystemAbility; + }struAbility; +}NET_DVR_SUBSYSTEM_ABILITY, *LPNET_DVR_SUBSYSTEM_ABILITY; + +typedef struct tagNET_DVR_VIDEOPLATFORM_ABILITY_V40 +{ + DWORD dwSize; + BYTE byCodeSubSystemNums;//ϵͳ + BYTE byDecodeSubSystemNums;//ϵͳ + BYTE bySupportNat;//Ƿ֧NAT0-֧֣1-֧ + BYTE byInputSubSystemNums;//ϵͳ + BYTE byOutputSubSystemNums;//ϵͳ + BYTE byCodeSpitterSubSystemNums;//ϵͳ + BYTE byAlarmHostSubSystemNums;//ϵͳ + BYTE bySupportBigScreenNum;//֧ɴĸ + BYTE byVCASubSystemNums;//ϵͳ + BYTE byV6SubSystemNums;//V6ϵͳ + BYTE byV6DecoderSubSystemNums;//V6ϵͳ + BYTE bySupportBigScreenX;/*ƴӵģʽmn*/ + BYTE bySupportBigScreenY; + BYTE bySupportSceneNums;//ֳ֧ģʽĸ + BYTE byVcaSupportChanMode;//ֵ֧ͨʹģʽ0-ʹýͨ1-ʹʾͨͨ + BYTE bySupportScreenNums;//ֵ֧ĴĻ + BYTE bySupportLayerNums;//ֵ֧ͼ0xff-Ч + BYTE byNotSupportPreview;//Ƿ֧Ԥ,1-֧֣0-֧ + BYTE byNotSupportStorage;//Ƿִ֧洢,1-֧֣0-֧ + BYTE byUploadLogoMode;//ϴlogoģʽ0-ϴͨ1-ϴʾͨ + NET_DVR_SUBSYSTEM_ABILITY struSubSystemAbility[MAX_SUBSYSTEM_NUM_V40]; + BYTE by485Nums;//485ڸ + BYTE by232Nums;//232ڸ + BYTE bySerieStartChan;//ʼͨ + BYTE byScreenMode;//ģʽ0-ɿͻ˷䣬1-豸˷ + BYTE byDevVersion;//豸汾0-B10/B11/B121-B20 + BYTE bySupportBaseMapNums;//ֵ֧ĵͼͼŴ1ʼ + WORD wBaseLengthX;//ÿСĻ׼ֵB20ʹ + WORD wBaseLengthY; + BYTE bySupportPictureTrans; //Ƿ֧ͼƬԣ0-֧֣1-֧ + BYTE bySupportPreAllocDec; //Ƿ֧ܽԴԤ䣬0-֧֣1-֧ + BYTE bySupportDecAutoManage; //Ƿֽ֧Դ + BYTE byTranDevSubSystemNums; //תϵͳ + BYTE byFiberSwitchNums; //ϵͳ + BYTE byRes2[625]; +}NET_DVR_VIDEOPLATFORM_ABILITY_V40, *LPNET_DVR_VIDEOPLATFORM_ABILITY_V40; + +typedef struct tagNET_DVR_VIDEOPLATFORM_ABILITY +{ + DWORD dwSize; + BYTE byCodeSubSystemNums;//ϵͳ + BYTE byDecodeSubSystemNums;//ϵͳ + BYTE bySupportNat;//Ƿ֧NAT0-֧֣1-֧ + BYTE byInputSubSystemNums;//ϵͳ + BYTE byOutputSubSystemNums;//ϵͳ + BYTE byCodeSpitterSubSystemNums;//ϵͳ + BYTE byAlarmHostSubSystemNums;//ϵͳ + BYTE bySupportBigScreenNum;//֧ƴ + BYTE byVCASubSystemNums;//ϵͳ + BYTE byRes1[11]; + NET_DVR_SUBSYSTEM_ABILITY struSubSystemAbility[MAX_SUBSYSTEM_NUM]; + BYTE by485Nums;//485ڸ + BYTE by232Nums;//485ڸ + BYTE bySerieStartChan;//ʼͨ + BYTE byRes2[637]; +}NET_DVR_VIDEOPLATFORM_ABILITY, *LPNET_DVR_VIDEOPLATFORM_ABILITY; +//ȡӿ + +//ģʽA +typedef struct tagNET_DVR_HOLIDATE_MODEA +{ + BYTE byStartMonth; // ʼ 1ʼ + BYTE byStartDay; // ʼ 1ʼ + BYTE byEndMonth; // + BYTE byEndDay; // + BYTE byRes[4]; // ֽ +}NET_DVR_HOLIDATE_MODEA, *LPNET_DVR_HOLIDATE_MODEA; + +typedef struct tagNET_DVR_HOLIDATE_MODEB +{ + BYTE byStartMonth; // 1ʼ + BYTE byStartWeekNum; // ڼ 1ʼ + BYTE byStartWeekday; // ڼ + BYTE byEndMonth; // 1ʼ + BYTE byEndWeekNum; // ڼ 1ʼ + BYTE byEndWeekday; // ڼ + BYTE byRes[2]; // ֽ +}NET_DVR_HOLIDATE_MODEB, *LPNET_DVR_HOLIDATE_MODEB; + +typedef struct tagNET_DVR_HOLIDATE_MODEC +{ + WORD wStartYear; // + BYTE byStartMon; // + BYTE byStartDay; // + WORD wEndYear; // + BYTE byEndMon; // + BYTE byEndDay; // +}NET_DVR_HOLIDATE_MODEC, *LPNET_DVR_HOLIDATE_MODEC; + +typedef union tagNET_DVR_HOLIDATE_UNION +{ + // С 12ֽ + DWORD dwSize[3]; + NET_DVR_HOLIDATE_MODEA struModeA; // ģʽA + NET_DVR_HOLIDATE_MODEB struModeB; // ģʽB + NET_DVR_HOLIDATE_MODEC struModeC; // ģʽC +}NET_DVR_HOLIDATE_UNION, *LPNET_DVR_HOLIDATE_UNION; + +typedef enum tagHOLI_DATE_MODE +{ + HOLIDATE_MODEA = 0, + HOLIDATE_MODEB, + HOLIDATE_MODEC +}HOLI_DATE_MODE; + +typedef struct tagNET_DVR_HOLIDAY_PARAM +{ + BYTE byEnable; // Ƿ + BYTE byDateMode; // ģʽ 0-ģʽA 1-ģʽB 2-ģʽC + BYTE byRes1[2]; // ֽ + NET_DVR_HOLIDATE_UNION uHolidate; // + BYTE byName[NAME_LEN]; // + BYTE byRes2[20]; // ֽ +}NET_DVR_HOLIDAY_PARAM, *LPNET_DVR_HOLIDAY_PARAM; + +#define MAX_HOLIDAY_NUM 32 + +typedef struct tagNET_DVR_HOLIDAY_PARAM_CFG +{ + DWORD dwSize; // ṹС + NET_DVR_HOLIDAY_PARAM struHolidayParam[MAX_HOLIDAY_NUM]; // ղ + DWORD byRes[40]; // +}NET_DVR_HOLIDAY_PARAM_CFG, *LPNET_DVR_HOLIDAY_PARAM_CFG; + +// ձʽ +typedef struct tagNET_DVR_HOLIDAY_HANDLE +{ + DWORD dwSize; // ṹС + NET_DVR_SCHEDTIME struAlarmTime[MAX_TIMESEGMENT_V30]; // ʱ + BYTE byRes2[240]; // ֽ +}NET_DVR_HOLIDAY_HANDLE, *LPNET_DVR_HOLIDAY_HANDLE; + +typedef struct tagNET_DVR_HOLIDAY_HANDLE_COND +{ + DWORD dwSize; // ṹС + DWORD dwChannel; //ͨ + DWORD dwSMDHandleType; //ܼղ 0-Ƶ쳣⣬1-齹⣬2- + BYTE byRes2[32]; // ֽ +}NET_DVR_HOLIDAY_HANDLE_COND, *LPNET_DVR_HOLIDAY_HANDLE_COND; + +typedef struct tagNET_DVR_HOLIDAY_RECORD +{ + DWORD dwSize; + NET_DVR_RECORDDAY struRecDay; // ¼ + NET_DVR_RECORDSCHED struRecordSched[MAX_TIMESEGMENT_V30]; // ¼ʱ + BYTE byRes[20]; // ֽ +}NET_DVR_HOLIDAY_RECORD, *LPNET_DVR_HOLIDAY_RECORD; + +#define MAX_LINK_V30 128 + +typedef struct tagNET_DVR_ONE_LINK +{ + NET_DVR_IPADDR struIP; // ͻIP + LONG lChannel; // ͨ + BYTE byRes[32]; // ֽ +}NET_DVR_ONE_LINK, *LPNET_DVR_ONE_LINK; + +typedef struct tagNET_DVR_LINK_STATUS +{ + DWORD dwSize; // ṹС + WORD wLinkNum; // ӵĿ + BYTE byRes1[2]; // ֽ + NET_DVR_ONE_LINK struOneLink[MAX_LINK_V30]; // ӵĿͻϢ + BYTE byRes[32]; // ֽ +}NET_DVR_LINK_STATUS, *LPNET_DVR_LINK_STATUS; + +#define MAX_BOND_NUM 2 + +typedef struct tagNET_DVR_ONE_BONDING +{ + BYTE byMode; // ģʽ0 - ݴ 1 - ؾ + BYTE byUseDhcp; // Ƿʹdhcp + BYTE byMasterCard; // ָΪ + BYTE byStatus; // BONDING״̬ 0 - 쳣 1- ֻܻȡ + BYTE byBond[MAX_NETWORK_CARD];// byBond[0]== 1 ʾʹeh0 0ʾʹeh0 + NET_DVR_ETHERNET_V30 struEtherNet; // + NET_DVR_IPADDR struGatewayIpAddr; // صַ + BYTE byEnableDNS; //DNSʹ, 0-رգ1- + BYTE byBondMode; //󶨷ʽ, 0-Ч1-ģʽ2-תģʽ3-XORģʽ4-㲥ģʽ5-802.3adģʽ6-T1bģʽ7-⻯ģʽ + BYTE byRes1[2]; + BYTE byBond2[MAX_NETWORK_CARD_EX/*12*/];// byBond2[0]== 1 ʾʹeh4 0ʾʹeh4byBondչ + BYTE byRes[4];// ֽ +}NET_DVR_ONE_BONDING, *LPNET_DVR_ONE_BONDING; + +typedef struct tagNET_DVR_NETWORK_BONDING +{ + DWORD dwSize; // ṹС + BYTE byEnable; // Ƿbonding + BYTE byNum; // Bondingĸ + BYTE byRes1[2]; // ֽ + NET_DVR_ONE_BONDING struOneBond[MAX_BOND_NUM]; + BYTE byRes2[40]; // ֽ +}NET_DVR_NETWORK_BONDING, *LPNET_DVR_NETWORK_BONDING; + + +// +typedef struct tagNET_DVR_DISK_QUOTA +{ + BYTE byQuotaType; // ,1 - 2-3-ʱ + BYTE byRes1[5]; // ֽ + WORD wStoragePeriod; //¼洢ڣλ죬ΪʱʱЧ + DWORD dwHCapacity; // Ĵ32λ λMB + DWORD dwLCapacity; // Ĵ32λ λMB + DWORD dwHUsedSpace; // ʹõĴ̴С32λ λMB + DWORD dwLUsedSpace; // ʹõĴ̴С32λ λMB + BYTE byQuotaRatio; // Ĵ̱,λ:% + BYTE byRes2[21]; // ֽ +}NET_DVR_DISK_QUOTA, *LPNET_DVR_DISK_QUOTA; + +typedef struct tagNET_DVR_DISK_QUOTA_CFG +{ + DWORD dwSize; // ṹС + NET_DVR_DISK_QUOTA struPicQuota; // ͼƬ + NET_DVR_DISK_QUOTA struRecordQuota; // ¼ + NET_DVR_DISK_QUOTA struAddInfoQuota; // Ϣ (ƴ洢Ŀǰֵ֧ĸϢУȶͼ) + BYTE byRes[12]; //ֽ +}NET_DVR_DISK_QUOTA_CFG, *LPNET_DVR_DISK_QUOTA_CFG; + +typedef struct tagNET_DVR_DISK_QUOTA_V60 +{ + BYTE byQuotaType; // ,1 - 2-3-ʱ + BYTE byRes1[5]; // ֽ + WORD wStoragePeriod; //¼洢ڣλ죬ΪʱʱЧ + DWORD dwHCapacity; // Ĵ32λ λMB + DWORD dwLCapacity; // Ĵ32λ λMB + DWORD dwHUsedSpace; // ʹõĴ̴С32λ λMB + DWORD dwLUsedSpace; // ʹõĴ̴С32λ λMB + BYTE byQuotaRatio; // Ĵ̱,λ:% + BYTE byRes2[23]; // ֽ +}NET_DVR_DISK_QUOTA_V60, *LPNET_DVR_DISK_QUOTA_V60; + +typedef struct tagNET_DVR_DISK_QUOTA_CFG_V60 +{ + DWORD dwSize; // ṹС + NET_DVR_DISK_QUOTA_V60 struPicQuota; // ͼƬ + NET_DVR_DISK_QUOTA_V60 struRecordQuota; // ¼ + NET_DVR_DISK_QUOTA_V60 struAddInfoQuota; // Ϣ (ƴ洢Ŀǰֵ֧ĸϢУȶͼ) + NET_DVR_DISK_QUOTA_V60 struPubInfoFile; // Ϣļٷֱ + BYTE byRes[256]; //ֽֽ +}NET_DVR_DISK_QUOTA_CFG_V60, *LPNET_DVR_DISK_QUOTA_CFG_V60; + + +typedef struct tagNET_DVR_TIMING_CAPTURE +{ + NET_DVR_JPEGPARA struJpegPara; // ʱץͼͼƬ + DWORD dwPicInterval; // ʱץͼʱ,λs 1-1s 2-2s 3-3s 4-4s 5-5s + // 6-10m 7-30m 8-1h 9-12h 10-24h + BYTE byRes[12]; // ֽ +}NET_DVR_TIMING_CAPTURE, *LPNET_DVR_TIMING_CAPTURE; + +typedef struct tagNET_DVR_REL_CAPTURE_CHAN +{ + BYTE byChan[16]; // λʾ + BYTE byRes[20]; // ֽ +}NET_DVR_REL_CAPTURE_CHAN, *LPNET_DVR_REL_CAPTURE_CHAN; + +#define MAX_PIC_EVENT_NUM 32 +#define MAX_ALARMIN_CAPTURE 16 + +typedef struct tagNET_DVR_REL_CAPTURE_CHAN_V40 +{ + DWORD dwMaxRelCaptureChanNum; //ɴĹͨ-ֻ + DWORD dwChanNo[MAX_CHANNUM_V40]; //Ĺץͼͨţֵʾý,0xffffffffʾЧ + BYTE byRes[32]; +}NET_DVR_REL_CAPTURE_CHAN_V40, *LPNET_DVR_REL_CAPTURE_CHAN_V40; + +typedef struct tagNET_DVR_EVENT_CAPTURE_V40 +{ + NET_DVR_JPEGPARA struJpegPara; // ¼ץͼͼƬ + DWORD dwPicInterval; // ¼ץͼʱ λΪ + NET_DVR_REL_CAPTURE_CHAN_V40 struRelCaptureChan[MAX_PIC_EVENT_NUM]; // ± 0 ƶⴥץͼ 1 Ƶڵץͼ 2 Ƶʧץͼ,3ʾPIRץͼ4ʾ߱ץͼ5ʾȱץͼ,6ʾץͼ + NET_DVR_REL_CAPTURE_CHAN_V40 struAlarmInCapture[MAX_ALARMIN_CAPTURE]; // 봥ץͼ±0 1 + DWORD dwMaxGroupNum; //豸ֵ֧󱨾ÿ16 + BYTE byCapTimes; //ץͼ + BYTE byRes[59]; +}NET_DVR_EVENT_CAPTURE_V40, *LPNET_DVR_EVENT_CAPTURE_V40; + + +typedef struct tagNET_DVR_EVENT_CAPTURE +{ + NET_DVR_JPEGPARA struJpegPara; // ¼ץͼͼƬ + DWORD dwPicInterval; // ¼ץͼʱ λΪ 1-1s 2-2s 3-3s 4-4s 5-5s + // 6-10m 7-30m 8-1h 9-12h 10-24h + /* + ± 0 ƶⴥץͼ 1 Ƶڵץͼ2 Ƶʧץͼ,3ʾPIRץͼ + 4ʾ߱ץͼ5ʾȱץͼ,6ʾץͼ,7 ʾץͼ + 8 ʾ-Խץͼ9 ʾץͼ,10ʾץͼ, + 11-,12-뿪,13-ǻ,14-Աۼ,15-˶, + 16-ͣ,17-Ʒ,18-Ʒȡ⡣ + */ + NET_DVR_REL_CAPTURE_CHAN struRelCaptureChan[MAX_PIC_EVENT_NUM]; + NET_DVR_REL_CAPTURE_CHAN struAlarmInCapture[MAX_ALARMIN_CAPTURE]; // 봥ץͼ±0 1 + BYTE byCapTimes; //ץͼ + BYTE byRes[59]; +}NET_DVR_EVENT_CAPTURE, *LPNET_DVR_EVENT_CAPTURE; + +typedef struct tagNET_DVR_JPEG_CAPTURE_CFG_V40 +{ + DWORD dwSize; //ṹ峤 + NET_DVR_TIMING_CAPTURE struTimingCapture; + NET_DVR_EVENT_CAPTURE_V40 struEventCapture; + BYTE byStreamType;//ץͼ 0-1- + BYTE byRes3[19]; // ֽ +}NET_DVR_JPEG_CAPTURE_CFG_V40, *LPNET_DVR_JPEG_CAPTURE_CFG_V40; + +typedef struct tagNET_DVR_JPEG_CAPTURE_CFG +{ + DWORD dwSize; // ṹС + NET_DVR_TIMING_CAPTURE struTimingCapture; + NET_DVR_EVENT_CAPTURE struEventCapture; + BYTE byStreamType;//ץͼ 0-1- + BYTE byRes3[19]; // ֽ +}NET_DVR_JPEG_CAPTURE_CFG, *LPNET_DVR_JPEG_CAPTURE_CFG; + +typedef struct tagNET_DVR_CAPTURE_DAY +{ + BYTE byAllDayCapture; // Ƿȫץͼ + BYTE byCaptureType; // ץͼͣ0-ʱץͼ1-ƶץͼ2-ץͼ3-ƶ򱨾ץͼ4-ƶͱץͼ6-ܱץͼ,7-ץͼ8-ȫ¼ ,39-߲ץͼ,40-41-,42ҵѯ 43-ŷż 44-Ҷȱ + BYTE byRes[2]; +}NET_DVR_CAPTURE_DAY, *LPNET_DVR_CAPTURE_DAY; + +typedef struct tagNET_DVR_CAPTURE_SCHED +{ + NET_DVR_SCHEDTIME struCaptureTime; // ץͼʱ + BYTE byCaptureType; // ץͼͣ0-ʱץͼ1-ƶץͼ2-ץͼ3-ƶ򱨾ץͼ4-ƶͱץͼ6-ܱץͼ,7-ץͼ8-ȫ¼ ,39-߲ץͼ ,40-41-,42ҵѯ 43-ŷż 44-Ҷȱ + BYTE byRes[3]; // ֽ +}NET_DVR_CAPTURE_SCHED, *LPNET_DVR_CAPTURE_SCHED; + +// ͨץͼƻ +typedef struct tagNET_DVR_SCHED_CAPTURECFG +{ + DWORD dwSize; // ṹ + BYTE byEnable; // Ƿץͼ + BYTE byRes1[3]; // ֽ + NET_DVR_CAPTURE_DAY struCaptureDay[MAX_DAYS]; // ȫץͼƻ + NET_DVR_CAPTURE_SCHED struCaptureSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; // ʱץͼƻ + NET_DVR_CAPTURE_DAY struCaptureHoliday; // ץͼƻ + NET_DVR_CAPTURE_SCHED struHolidaySched[MAX_TIMESEGMENT_V30]; // ʱμץͼƻ + DWORD dwRecorderDuration; // ץͼʱ 0xffffffffʾֵЧ + DWORD dwDelayTime; /* ץͼʱʱ 0- ʱ 1-3룬 2-4룬 3-5룬 4-10룬 5-30룬 6-60룬 7- 120룬8-300*/ + BYTE byRes[36]; // ֽ +}NET_DVR_SCHED_CAPTURECFG, *LPNET_DVR_SCHED_CAPTURECFG; + + +typedef struct tagNET_DVR_FLOW_TEST_PARAM +{ + DWORD dwSize; //ṹС + LONG lCardIndex; // + DWORD dwInterval; //豸ϴʱ, λ:100ms + BYTE byRes[8]; //ֽ +}NET_DVR_FLOW_TEST_PARAM, *LPNET_DVR_FLOW_TEST_PARAM; + +typedef struct tagNET_DVR_FLOW_INFO +{ + DWORD dwSize; //ṹС + DWORD dwSendFlowSize; //С,λkbps + DWORD dwRecvFlowSize; //С,λkbps + BYTE byRes[20]; // +}NET_DVR_FLOW_INFO, *LPNET_DVR_FLOW_INFO; + +// ¼ǩ +#define LABEL_NAME_LEN 40 +typedef struct tagNET_DVR_RECORD_LABEL +{ + DWORD dwSize; // ṹС + NET_DVR_TIME struTimeLabel; // ǩʱ + BYTE byQuickAdd; // Ƿ ʱǩЧ + BYTE byRes1[3]; // ֽ + BYTE sLabelName[LABEL_NAME_LEN]; // ǩ Ϊ40ֽ + BYTE byRes2[40]; // ֽ +}NET_DVR_RECORD_LABEL, *LPNET_DVR_RECORD_LABEL; + +#define LABEL_IDENTIFY_LEN 64 +typedef struct tagNET_DVR_LABEL_IDENTIFY +{ + BYTE sLabelIdentify[LABEL_IDENTIFY_LEN]; // 64ֽڱʶ + BYTE byRes[8]; // ֽ +}NET_DVR_LABEL_IDENTIFY, *LPNET_DVR_LABEL_IDENTIFY; + +#define MAX_DEL_LABEL_IDENTIFY 20// ɾǩʶ + +typedef struct tagNET_DVR_DEL_LABEL_PARAM +{ + DWORD dwSize; // ṹС + BYTE byMode; // λʾ,0x01ʾʶɾ + BYTE byRes1; + WORD wLabelNum; // ǩĿ + NET_DVR_LABEL_IDENTIFY struIndentify[MAX_DEL_LABEL_IDENTIFY]; // ǩʶ + BYTE byRes2[160]; //ֽ +}NET_DVR_DEL_LABEL_PARAM, *LPNET_DVR_DEL_LABEL_PARAM; + +typedef struct tagNET_DVR_MOD_LABEL_PARAM +{ + NET_DVR_LABEL_IDENTIFY struIndentify; //Ҫ޸ĵıǩʶ + BYTE byRes1[24]; + BYTE sLabelName[LABEL_NAME_LEN]; //޸ĺıǩ + BYTE byRes2[40]; +}NET_DVR_MOD_LABEL_PARAM, *LPNET_DVR_MOD_LABEL_PARAM; + +// ǩṹ +typedef struct tagNET_DVR_FIND_LABEL +{ + DWORD dwSize; // ṹС + LONG lChannel; // ҵͨ + NET_DVR_TIME struStartTime; // ʼʱ + NET_DVR_TIME struStopTime; // ʱ + BYTE sLabelName[LABEL_NAME_LEN]; // ¼ǩ ǩΪգֹʱбǩ + BYTE byDrawFrame; //0:֡1֡ + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cStartTimeDifferenceH; //ʼʱUTCʱСʱ-12 ... +14 ʾʱ + char cStartTimeDifferenceM; //ʼʱUTCʱӣ-30, 0, 30, 45ʾʱ + char cStopTimeDifferenceH; //ʱUTCʱСʱ-12 ... +14ʾʱ + char cStopTimeDifferenceM; //ʱUTCʱӣ-30, 0, 30, 45ʾʱ + BYTE byRes[34]; // ֽ +}NET_DVR_FIND_LABEL, *LPNET_DVR_FIND_LABEL; + +// ǩϢṹ +typedef struct tagNET_DVR_FINDLABEL_DATA +{ + BYTE sLabelName[LABEL_NAME_LEN]; // ǩ + NET_DVR_TIME struTimeLabel; // ǩʱ + NET_DVR_LABEL_IDENTIFY struLabelIdentify; // ǩʶ + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cTimeDifferenceH; //ʼʱUTCʱСʱ-12 ... +14 ʾʱ + char cTimeDifferenceM; //ʼʱUTCʱӣ-30, 0, 30, 45ʾʱ + BYTE byRes[29]; // ֽ +}NET_DVR_FINDLABEL_DATA, *LPNET_DVR_FINDLABEL_DATA; + +#define CARDNUM_LEN_V30 40 +//ö +typedef enum _COUNTRY_INDEX_ +{ + COUNTRY_NONSUPPORT = 0, //0-㷨ⲻ֧ʶ + /* һ235Һ͵ */ + /*ŷ 48Һ͵ ·˹(Cyprus)ŷ޽*/ + COUNTRY_CZE = 1, //Czech Republic ݿ˹͹ + COUNTRY_FRA = 2, //France + COUNTRY_DEU = 3, //Germany ¹ + COUNTRY_ESP = 4, //Spain + COUNTRY_ITA = 5, //Italy + COUNTRY_NLD = 6, //Netherlands + COUNTRY_POL = 7, //Poland + COUNTRY_SVK = 8, //Slovakia ˹工 + COUNTRY_BLR = 9, //Belarus ׶˹ + COUNTRY_MDA = 10, //Moldova Ħ + COUNTRY_RUS = 11, //Russia ˹ + COUNTRY_UKR = 12, //Ukraine ڿ + COUNTRY_BEL = 13, //Belgium ʱ + COUNTRY_BGR = 14, //Bulgaria + COUNTRY_DNK = 15, //Denmark + COUNTRY_FIN = 16, //Finland + COUNTRY_GBR = 17, //United Kingdom Ӣ + COUNTRY_GRC = 18, //Greece ϣ + COUNTRY_HRV = 19, //Croatia ޵ + COUNTRY_HUN = 20, //Hungary + COUNTRY_ISR = 21, //Israel ɫ() + COUNTRY_LUX = 22, //Luxembourg ¬ɭ + COUNTRY_MKD = 23, //Macedonia ٹ͹ + COUNTRY_NOR = 24, //Norway Ų + COUNTRY_PRT = 25, //Portuga + COUNTRY_ROU = 26, //Romania + COUNTRY_SRB = 27, //Serbia ά + COUNTRY_AZE = 28, //Azerbaijan ͹() + COUNTRY_GEO = 29, //Georgia ³() + COUNTRY_KAZ = 30, //Kazakhstan ˹̹() + COUNTRY_LTU = 31, //Lithuania 𹲺͹ + COUNTRY_TKM = 32, //Turkmenistan ˹̹() + COUNTRY_UZB = 33, //Uzbekistan ȱ˹̹() + COUNTRY_LVA = 34, //Latvia ά + COUNTRY_EST = 35, //Estonia ɳ + COUNTRY_ALB = 36, //Albania + COUNTRY_AUT = 37, //Austria µ + COUNTRY_BIH = 38, //Bosnia and Herzegovina ˹Ǻͺά + COUNTRY_IRL = 39, //Ireland + COUNTRY_ISL = 40, //Iceland + COUNTRY_VAT = 41, //Vatican ٸ + COUNTRY_MLT = 42, //Malta + COUNTRY_SWE = 43, //Sweden + COUNTRY_CHE = 44, //Switzerland ʿ + COUNTRY_CYP = 45, //Cyprus ·˹ + COUNTRY_TUR = 46, //Turkey + COUNTRY_SVN = 47, //Slovenia ˹ + COUNTRY_MTG = 48, //Montenegro ɽ͹ + COUNTRY_KOV = 49, //Kosovo + COUNTRY_ADR = 50, //Andorra + COUNTRY_ARM = 51, //Armenia () + COUNTRY_MON = 52, //Monaco Ħɸ + COUNTRY_LIE = 53, //Liechtenstein ֧ʿ + COUNTRY_SMO = 54, //San Marino ʥŵ + COUNTRY_ORN = 55, //Aland () + COUNTRY_RES2 = 56, //ֶ + COUNTRY_RES3 = 57, //ֶ + COUNTRY_RES4 = 58, //ֶ + /* 48 ·˹(Cyprus)ŷ޽*/ + COUNTRY_CHI = 59, //China й + COUNTRY_IBN = 60, //In bahrain + COUNTRY_SKR = 61, //South Korea + COUNTRY_LEB = 62, //Lebanon + COUNTRY_NEP = 63, //Nepal Ჴ + COUNTRY_THA = 64, //Thailand ̩ + COUNTRY_PAK = 65, //Pakistan ͻ˹̹ + COUNTRY_EMI = 66, //The united Arab emirates + COUNTRY_BHU = 67, //Bhutan + COUNTRY_OMA = 68, //Oman + COUNTRY_KOR = 69, //North Korea + COUNTRY_PHI = 70, //The Philippines ɱ + COUNTRY_CAM = 71, //Cambodia կ + COUNTRY_QAT = 72, //Qatar + COUNTRY_KYR = 73, //Kyrgyzstan ˹˹̹ + COUNTRY_MAL = 74, //The maldives + COUNTRY_MLY = 75, //Malaysia + COUNTRY_MOG = 76, //Mongolia ɹ + COUNTRY_ARA = 77, //Saudi Arabia ɳذ + COUNTRY_BRU = 78, //brunei + COUNTRY_LAO = 79, //Laos + COUNTRY_JAP = 80, //Japan ձ + COUNTRY_RES19 = 81, //ֶ + COUNTRY_PAS = 82, //Palestinian state ˹̹ + COUNTRY_TAJ = 83, //Tajikistan ˹̹ + COUNTRY_KUW = 84, //Kuwait + COUNTRY_SYR = 85, //Syria + COUNTRY_IND = 86, //India ӡ + COUNTRY_ISA = 87, //Indonesia ӡ + COUNTRY_AFG = 88, //Afghanistan + COUNTRY_LAN = 89, //Sri Lanka ˹ + COUNTRY_IRQ = 90, //Iraq + COUNTRY_VIE = 91, //Vietnam Խ + COUNTRY_IRA = 92, //Iran + COUNTRY_YEM = 93, //yemen Ҳ + COUNTRY_JOR = 94, //Jordan Լ + COUNTRY_BUR = 95, //Burma + COUNTRY_SIK = 96, //Sikkim + COUNTRY_BAN = 97, //Bangladesh ϼ + COUNTRY_SGA = 98, //Singapore ¼ + COUNTRY_EAT = 99, //East timor 루Ҳϣ + COUNTRY_RES5 = 100, //ֶ + COUNTRY_RES6 = 101, //ֶ + COUNTRY_RES7 = 102, //ֶ + COUNTRY_RES8 = 103, //ֶ + /* 60Һ͵*/ + COUNTRY_EGT = 104, //Egypt + COUNTRY_LIY = 105, //Libya + COUNTRY_SUA = 106, //Sudan յ + COUNTRY_TUN = 107, //Tunisia ͻ˹ + COUNTRY_ALG = 108, //Algeria + COUNTRY_MCC = 109, //Morocco Ħ + COUNTRY_ETH = 110, //Ethiopia + COUNTRY_ERI = 111, //Eritrea + COUNTRY_SDE = 112, //Somalia Democratic + COUNTRY_DJI = 113, //Djibouti + COUNTRY_KEN = 114, //Kenya + COUNTRY_TAI = 115, //Tanzania ̹ɣ + COUNTRY_UGA = 116, //Uganda ڸɴ + COUNTRY_RWA = 117, //Rwanda ¬ + COUNTRY_BUD = 118, //Burundi ¡ + COUNTRY_SEY = 119, //Seychelles + COUNTRY_CHA = 120, //Chad է + COUNTRY_CEA = 121, //Central African з + COUNTRY_CON = 122, //Cameroon ¡ + COUNTRY_EQG = 123, //Equatorial Guinea + COUNTRY_GAB = 124, //Gabon + COUNTRY_TCO = 125, //the Congo չ͹չ + COUNTRY_DRC = 126, //Democratic Republic of the Congo չ͹չ𣩣 + COUNTRY_STP = 127, //Sao Tome and Principe ʥ + COUNTRY_MAN = 128, //Mauritania ë + COUNTRY_WSA = 129, //Western Sahara + COUNTRY_SEL = 130, //Senegal ڼӶ + COUNTRY_TGA = 131, //the Gambia Ա + COUNTRY_MAI = 132, //Mali + COUNTRY_BUF = 133, //Burkina Faso ɷ + COUNTRY_GUI = 134, //Guinea + COUNTRY_GUB = 135, //Guinea-Bissau DZ + COUNTRY_CAV = 136, //Cape Verde ý + COUNTRY_SLE = 137, //Sierra Leone + COUNTRY_LIR = 138, //Liberia + COUNTRY_IVC = 139, //Ivory Coast ص + COUNTRY_GHA = 140, //Ghana + COUNTRY_TGO = 141, //Togo + COUNTRY_BEN = 142, //Benin + COUNTRY_NIG = 143, //Niger ն + COUNTRY_ZAB = 144, //Zambia ޱ + COUNTRY_ANG = 145, //Angola + COUNTRY_ZBE = 146, //Zimbabwe ͲΤ + COUNTRY_MAW = 147, //Malawi ά + COUNTRY_MOQ = 148, //Mozambique Īɣȿ + COUNTRY_BOT = 149, //Botswana + COUNTRY_NAM = 150, //Namibia ױ + COUNTRY_SAF = 151, //South Africa Ϸ + COUNTRY_SWD = 152, //Swaziland ˹ʿ + COUNTRY_LES = 153, //Lesotho + COUNTRY_MAG = 154, //Madagasca ˹ + COUNTRY_UOC = 155, //Union of Comoros Ħ + COUNTRY_MAT = 156, //Mauritius ë˹ + COUNTRY_NGE = 157, //Nigeria + COUNTRY_SSD = 158, //South Sudan յ + COUNTRY_SAH = 159, //Saint Helena ʥãӢʡ + COUNTRY_MYT = 160, //Mayotte Լأʡ + COUNTRY_REN = 161, //Reunion ʡ + COUNTRY_CAI = 162, //Canary Islands Ⱥ + COUNTRY_AZO = 163, //AZORES ٶȺ + COUNTRY_MAD = 164, //Madeira Ⱥ + COUNTRY_RES9 = 165, //ֶ + COUNTRY_RES10 = 166, //ֶ + COUNTRY_RES11 = 167, //ֶ + COUNTRY_RES12 = 168, //ֶ + /* 55Һ͵*/ + COUNTRY_CAD = 169, //Canada ô + COUNTRY_GRE = 170, //Greenland Nuuk ĺ + COUNTRY_PIE = 171, //Pierre and Miquelon ʥƤܿ¡ + COUNTRY_USA = 172, //United States + COUNTRY_BER = 173, //Bermuda ĽӢ + COUNTRY_MEX = 174, //Mexico ī + COUNTRY_GUA = 175, //Guatemala Σ + COUNTRY_BLI = 176, //Belize + COUNTRY_SAR = 177, //El Salvador ߶ + COUNTRY_HOR = 178, //Honduras 鶼˹ + COUNTRY_NIC = 179, //Nicaragua + COUNTRY_COR = 180, //Costa Rica ˹ + COUNTRY_PAN = 181, //Panama + COUNTRY_TBM = 182, //The Bahamas ͹ + COUNTRY_TCI = 183, //The Turks and Caicos Islands ؿ˹ȺͿ˹ȺӢ + COUNTRY_CUB = 184, //Cuba Ű + COUNTRY_JAM = 185, //Jamaica + COUNTRY_CAY = 186, //Cayman Islands ȺӢ + COUNTRY_HAT = 187, //Haiti + COUNTRY_TDO = 188, //The Dominican + COUNTRY_PUR = 189, //Puerto Rico + COUNTRY_VIL = 190, //The United States Virgin IslandsάȺ + COUNTRY_BVI = 191, //The British Virgin Islands ӢάȺ + COUNTRY_ATV = 192, //Anguilla The Valley Ӣ + COUNTRY_ANB = 193, //Antigua and Barbuda ϺͰͲ + COUNTRY_CSM = 194, //Collectivit de Saint-Martin ʥ + COUNTRY_ACY = 195, //Autonomous country ʥι + COUNTRY_SBY = 196, //Saint-Barthlemy ʥ̩׵ + COUNTRY_SKN = 197, //Saint Kitts and Nevis ʥĺά˹ + COUNTRY_MOT = 198, //Montserrat أӢ + COUNTRY_GLP = 199, //Guadeloupe ϵգ + COUNTRY_DOM = 200, //Dominica + COUNTRY_MTE = 201, //Martinique ˣ + COUNTRY_LUC = 202, //St. Lucia ʥ¬ + COUNTRY_SVG = 203, //Saint Vincent and the Grenadines ʥɭغ͸ɶ˹ + COUNTRY_GRD = 204, //Grenada ɴ + COUNTRY_BAR = 205, //Barbados ͰͶ˹ + COUNTRY_TRT = 206, //Trinidad and Tobago Ͷ͸ + COUNTRY_CUR = 207, //Cura?ao һι + COUNTRY_ARB = 208, //Aruba ³ͣһι + COUNTRY_NEA = 209, //Netherlands Antilles ˹ + COUNTRY_COL = 210, //Colombia ױ + COUNTRY_VEN = 211, //Venezuela ί + COUNTRY_GUY = 212, //Guyana + COUNTRY_SUR = 213, //Suriname + COUNTRY_FRN = 214, //Guyane Francaise + COUNTRY_ECU = 215, //Ecuador ϶ + COUNTRY_PER = 216, //Peru ³ + COUNTRY_BOL = 217, //Bolivia ά + COUNTRY_PAR = 218, //Paraguay + COUNTRY_CLE = 219, //Chile + COUNTRY_BRA = 220, //Brazil + COUNTRY_UGY = 221, //Uruguay + COUNTRY_ARG = 222, //Argentina ͢ + COUNTRY_RES13 = 223, //ֶ + COUNTRY_RES14 = 224, //ֶ + COUNTRY_RES15 = 225, //ֶ + COUNTRY_RES16 = 226, //ֶ + /* 25Һ͵ */ + COUNTRY_ATN = 227, //Australien Ĵ + COUNTRY_NED = 228, //Neuseeland + COUNTRY_PNG = 229, //Papua New Guinea Ͳ¼ + COUNTRY_SAN = 230, //Salomonen Ⱥ + COUNTRY_VAU = 231, //Vanuatu Ŭͼ + COUNTRY_NCN = 232, //New Caledonia ¿ǣĺأ + COUNTRY_PAU = 233, //Palau + COUNTRY_FSM = 234, //Federated States of Micronesia ܿ + COUNTRY_MRI = 235, //Marshall Island ܶȺ + COUNTRY_CNM = 236, //Commonwealth of the Northern Mariana Islands Ⱥĺأ + COUNTRY_TEG = 237, //The Territory of Guahan صĺأ + COUNTRY_NUR = 238, //Nauru ³ + COUNTRY_KIB = 239, //Kiribati ˹ + COUNTRY_FID = 240, //Fidschi 쳼Ⱥ + COUNTRY_TNG = 241, //Tonga + COUNTRY_TUV = 242, //Tuvalu ͼ¬ + COUNTRY_WEF = 243, //Wallis et Futuna ˹͸ͼɣĺأ + COUNTRY_TIS = 244, //The Independent State of Samoa Ħ + COUNTRY_EAS = 245, //Eastern Samoa Ħ + COUNTRY_TOE = 246, //Tokelau пͣ + COUNTRY_NUE = 247, //Niue Ŧ + COUNTRY_TCD = 248, //The Cook Islands Ⱥ + COUNTRY_PFP = 249, //Polynsie fran?aiseFrench Polynesia + COUNTRY_PID = 250, //Pitcairn Islands ƤؿȺӢĺأ + COUNTRY_HAW = 251, //Hawaii State ģĺأ + COUNTRY_RES17 = 252, //ֶ + COUNTRY_INVALID = 0xfd, //ֶЧҪʹչֶCRIndex(_CR_INDEX_) + COUNTRY_UNRECOGNIZED = 0xfe, //Unrecognized ޷ʶ + COUNTRY_ALL = 0xff, //ALL ȫ +}COUNTRY_INDEX; + +// / ö +typedef enum _CR_INDEX_ +{ + CR_NONSUPPORT = 0, //0-㷨ⲻ֧ʶ + /* һ235Һ͵ */ + /*ŷ 48Һ͵ ·˹(Cyprus)ŷ޽*/ + CR_CZE = 1, //Czech Republic ݿ˹͹ + CR_FRA = 2, //France + CR_DEU = 3, //Germany ¹ + CR_ESP = 4, //Spain + CR_ITA = 5, //Italy + CR_NLD = 6, //Netherlands + CR_POL = 7, //Poland + CR_SVK = 8, //Slovakia ˹工 + CR_BLR = 9, //Belarus ׶˹ + CR_MDA = 10, //Moldova Ħ + CR_RUS = 11, //Russia ˹ + CR_UKR = 12, //Ukraine ڿ + CR_BEL = 13, //Belgium ʱ + CR_BGR = 14, //Bulgaria + CR_DNK = 15, //Denmark + CR_FIN = 16, //Finland + CR_GBR = 17, //United Kingdom Ӣ + CR_GRC = 18, //Greece ϣ + CR_HRV = 19, //Croatia ޵ + CR_HUN = 20, //Hungary + CR_ISR = 21, //Israel ɫ() + CR_LUX = 22, //Luxembourg ¬ɭ + CR_MKD = 23, //Macedonia ٹ͹ + CR_NOR = 24, //Norway Ų + CR_PRT = 25, //Portuga + CR_ROU = 26, //Romania + CR_SRB = 27, //Serbia ά + CR_AZE = 28, //Azerbaijan ͹() + CR_GEO = 29, //Georgia ³() + CR_KAZ = 30, //Kazakhstan ˹̹() + CR_LTU = 31, //Lithuania 𹲺͹ + CR_TKM = 32, //Turkmenistan ˹̹() + CR_UZB = 33, //Uzbekistan ȱ˹̹() + CR_LVA = 34, //Latvia ά + CR_EST = 35, //Estonia ɳ + CR_ALB = 36, //Albania + CR_AUT = 37, //Austria µ + CR_BIH = 38, //Bosnia and Herzegovina ˹Ǻͺά + CR_IRL = 39, //Ireland + CR_ISL = 40, //Iceland + CR_VAT = 41, //Vatican ٸ + CR_MLT = 42, //Malta + CR_SWE = 43, //Sweden + CR_CHE = 44, //Switzerland ʿ + CR_CYP = 45, //Cyprus ·˹ + CR_TUR = 46, //Turkey + CR_SVN = 47, //Slovenia ˹ + CR_MTG = 48, //Montenegro ɽ͹ + CR_KOV = 49, //Kosovo + CR_ADR = 50, //Andorra + CR_ARM = 51, //Armenia () + CR_MON = 52, //Monaco Ħɸ + CR_LIE = 53, //Liechtenstein ֧ʿ + CR_SMO = 54, //San Marino ʥŵ + CR_ORN = 55, //Aland () + CR_RES2 = 56, //ֶ + CR_RES3 = 57, //ֶ + CR_RES4 = 58, //ֶ + /* 48 ·˹(Cyprus)ŷ޽*/ + CR_CHI = 59, //China й + CR_IBN = 60, //In bahrain + CR_SKR = 61, //South Korea + CR_LEB = 62, //Lebanon + CR_NEP = 63, //Nepal Ჴ + CR_THA = 64, //Thailand ̩ + CR_PAK = 65, //Pakistan ͻ˹̹ + CR_EMI = 66, //The united Arab emirates + CR_BHU = 67, //Bhutan + CR_OMA = 68, //Oman + CR_KOR = 69, //North Korea + CR_PHI = 70, //The Philippines ɱ + CR_CAM = 71, //Cambodia կ + CR_QAT = 72, //Qatar + CR_KYR = 73, //Kyrgyzstan ˹˹̹ + CR_MAL = 74, //The maldives + CR_MLY = 75, //Malaysia + CR_MOG = 76, //Mongolia ɹ + CR_ARA = 77, //Saudi Arabia ɳذ + CR_BRU = 78, //brunei + CR_LAO = 79, //Laos + CR_JAP = 80, //Japan ձ + CR_RES19 = 81, //ֶ + CR_PAS = 82, //Palestinian state ˹̹ + CR_TAJ = 83, //Tajikistan ˹̹ + CR_KUW = 84, //Kuwait + CR_SYR = 85, //Syria + CR_IND = 86, //India ӡ + CR_ISA = 87, //Indonesia ӡ + CR_AFG = 88, //Afghanistan + CR_LAN = 89, //Sri Lanka ˹ + CR_IRQ = 90, //Iraq + CR_VIE = 91, //Vietnam Խ + CR_IRA = 92, //Iran + CR_YEM = 93, //yemen Ҳ + CR_JOR = 94, //Jordan Լ + CR_BUR = 95, //Burma + CR_SIK = 96, //Sikkim + CR_BAN = 97, //Bangladesh ϼ + CR_SGA = 98, //Singapore ¼ + CR_EAT = 99, //East timor 루Ҳϣ + CR_RES5 = 100, //ֶ + CR_RES6 = 101, //ֶ + CR_RES7 = 102, //ֶ + CR_RES8 = 103, //ֶ + /* 60Һ͵*/ + CR_EGT = 104, //Egypt + CR_LIY = 105, //Libya + CR_SUA = 106, //Sudan յ + CR_TUN = 107, //Tunisia ͻ˹ + CR_ALG = 108, //Algeria + CR_MCC = 109, //Morocco Ħ + CR_ETH = 110, //Ethiopia + CR_ERI = 111, //Eritrea + CR_SDE = 112, //Somalia Democratic + CR_DJI = 113, //Djibouti + CR_KEN = 114, //Kenya + CR_TAI = 115, //Tanzania ̹ɣ + CR_UGA = 116, //Uganda ڸɴ + CR_RWA = 117, //Rwanda ¬ + CR_BUD = 118, //Burundi ¡ + CR_SEY = 119, //Seychelles + CR_CHA = 120, //Chad է + CR_CEA = 121, //Central African з + CR_CON = 122, //Cameroon ¡ + CR_EQG = 123, //Equatorial Guinea + CR_GAB = 124, //Gabon + CR_TCO = 125, //the Congo չ͹չ + CR_DRC = 126, //Democratic Republic of the Congo չ͹չ𣩣 + CR_STP = 127, //Sao Tome and Principe ʥ + CR_MAN = 128, //Mauritania ë + CR_WSA = 129, //Western Sahara + CR_SEL = 130, //Senegal ڼӶ + CR_TGA = 131, //the Gambia Ա + CR_MAI = 132, //Mali + CR_BUF = 133, //Burkina Faso ɷ + CR_GUI = 134, //Guinea + CR_GUB = 135, //Guinea-Bissau DZ + CR_CAV = 136, //Cape Verde ý + CR_SLE = 137, //Sierra Leone + CR_LIR = 138, //Liberia + CR_IVC = 139, //Ivory Coast ص + CR_GHA = 140, //Ghana + CR_TGO = 141, //Togo + CR_BEN = 142, //Benin + CR_NIG = 143, //Niger ն + CR_ZAB = 144, //Zambia ޱ + CR_ANG = 145, //Angola + CR_ZBE = 146, //Zimbabwe ͲΤ + CR_MAW = 147, //Malawi ά + CR_MOQ = 148, //Mozambique Īɣȿ + CR_BOT = 149, //Botswana + CR_NAM = 150, //Namibia ױ + CR_SAF = 151, //South Africa Ϸ + CR_SWD = 152, //Swaziland ˹ʿ + CR_LES = 153, //Lesotho + CR_MAG = 154, //Madagasca ˹ + CR_UOC = 155, //Union of Comoros Ħ + CR_MAT = 156, //Mauritius ë˹ + CR_NGE = 157, //Nigeria + CR_SSD = 158, //South Sudan յ + CR_SAH = 159, //Saint Helena ʥãӢʡ + CR_MYT = 160, //Mayotte Լأʡ + CR_REN = 161, //Reunion ʡ + CR_CAI = 162, //Canary Islands Ⱥ + CR_AZO = 163, //AZORES ٶȺ + CR_MAD = 164, //Madeira Ⱥ + CR_RES9 = 165, //ֶ + CR_RES10 = 166, //ֶ + CR_RES11 = 167, //ֶ + CR_RES12 = 168, //ֶ + /* 55Һ͵*/ + CR_CAD = 169, //Canada ô + CR_GRE = 170, //Greenland Nuuk ĺ + CR_PIE = 171, //Pierre and Miquelon ʥƤܿ¡ + CR_USA = 172, //United States + CR_BER = 173, //Bermuda ĽӢ + CR_MEX = 174, //Mexico ī + CR_GUA = 175, //Guatemala Σ + CR_BLI = 176, //Belize + CR_SAR = 177, //El Salvador ߶ + CR_HOR = 178, //Honduras 鶼˹ + CR_NIC = 179, //Nicaragua + CR_COR = 180, //Costa Rica ˹ + CR_PAN = 181, //Panama + CR_TBM = 182, //The Bahamas ͹ + CR_TCI = 183, //The Turks and Caicos Islands ؿ˹ȺͿ˹ȺӢ + CR_CUB = 184, //Cuba Ű + CR_JAM = 185, //Jamaica + CR_CAY = 186, //Cayman Islands ȺӢ + CR_HAT = 187, //Haiti + CR_TDO = 188, //The Dominican + CR_PUR = 189, //Puerto Rico + CR_VIL = 190, //The United States Virgin IslandsάȺ + CR_BVI = 191, //The British Virgin Islands ӢάȺ + CR_ATV = 192, //Anguilla The Valley Ӣ + CR_ANB = 193, //Antigua and Barbuda ϺͰͲ + CR_CSM = 194, //Collectivit de Saint-Martin ʥ + CR_ACY = 195, //Autonomous country ʥι + CR_SBY = 196, //Saint-Barthlemy ʥ̩׵ + CR_SKN = 197, //Saint Kitts and Nevis ʥĺά˹ + CR_MOT = 198, //Montserrat أӢ + CR_GLP = 199, //Guadeloupe ϵգ + CR_DOM = 200, //Dominica + CR_MTE = 201, //Martinique ˣ + CR_LUC = 202, //St. Lucia ʥ¬ + CR_SVG = 203, //Saint Vincent and the Grenadines ʥɭغ͸ɶ˹ + CR_GRD = 204, //Grenada ɴ + CR_BAR = 205, //Barbados ͰͶ˹ + CR_TRT = 206, //Trinidad and Tobago Ͷ͸ + CR_CUR = 207, //Cura?ao һι + CR_ARB = 208, //Aruba ³ͣһι + CR_NEA = 209, //Netherlands Antilles ˹ + CR_COL = 210, //Colombia ױ + CR_VEN = 211, //Venezuela ί + CR_GUY = 212, //Guyana + CR_SUR = 213, //Suriname + CR_FRN = 214, //Guyane Francaise + CR_ECU = 215, //Ecuador ϶ + CR_PER = 216, //Peru ³ + CR_BOL = 217, //Bolivia ά + CR_PAR = 218, //Paraguay + CR_CLE = 219, //Chile + CR_BRA = 220, //Brazil + CR_UGY = 221, //Uruguay + CR_ARG = 222, //Argentina ͢ + CR_RES13 = 223, //ֶ + CR_RES14 = 224, //ֶ + CR_RES15 = 225, //ֶ + CR_RES16 = 226, //ֶ + /* 25Һ͵ */ + CR_ATN = 227, //Australien Ĵ + CR_NED = 228, //Neuseeland + CR_PNG = 229, //Papua New Guinea Ͳ¼ + CR_SAN = 230, //Salomonen Ⱥ + CR_VAU = 231, //Vanuatu Ŭͼ + CR_NCN = 232, //New Caledonia ¿ǣĺأ + CR_PAU = 233, //Palau + CR_FSM = 234, //Federated States of Micronesia ܿ + CR_MRI = 235, //Marshall Island ܶȺ + CR_CNM = 236, //Commonwealth of the Northern Mariana Islands Ⱥĺأ + CR_TEG = 237, //The Territory of Guahan صĺأ + CR_NUR = 238, //Nauru ³ + CR_KIB = 239, //Kiribati ˹ + CR_FID = 240, //Fidschi 쳼Ⱥ + CR_TNG = 241, //Tonga + CR_TUV = 242, //Tuvalu ͼ¬ + CR_WEF = 243, //Wallis et Futuna ˹͸ͼɣĺأ + CR_TIS = 244, //The Independent State of Samoa Ħ + CR_EAS = 245, //Eastern Samoa Ħ + CR_TOE = 246, //Tokelau пͣ + CR_NUE = 247, //Niue Ŧ + CR_TCD = 248, //The Cook Islands Ⱥ + CR_PFP = 249, //Polynsie fran?aiseFrench Polynesia + CR_PID = 250, //Pitcairn Islands ƤؿȺӢĺأ + CR_HAW = 251, //Hawaii State ģĺأ + CR_RES17 = 252, //ֶ + CR_RES18 = 253, //ֶ + CR_UNRECOGNIZED = 0xfe, //Unrecognized ޷ʶ + CR_ALL = 0xff, //ALL ȫ + + // + CR_TAIWAN = 256, //Taiwan(China) ̨壨й +}CR_INDEX; + +//ö +typedef enum _EMI_AREA_ +{ + EMI_AREA_UNKNOWN = 0, //֧ʶ + EMI_AREA_AD, // + EMI_AREA_FJR, // + EMI_AREA_DB, //ϰ + EMI_AREA_RAK, // + EMI_AREA_AM, // + EMI_AREA_SJ, //ɳ + EMI_AREA_UMW, //ķ + EMI_AREA_OTHER = 0xff, //δʶ𣨵豸ָ֧㷨ڻԭδʶ +} EMI_AREA; + +typedef struct tagNET_DVR_FIND_PICTURE_PARAM +{ + DWORD dwSize; // ṹС + LONG lChannel; // ͨ + /* ҵͼƬ:0ʱץͼ1 ƶץͼ 2 ץͼ + 3 | ƶץͼ 4 & ƶץͼ 6 ֶץͼ , + 9-ͼƬ,10- PIR11- ߱12- ȱ, + 0xa Ԥʱͼ0xd , 0xe Խ⣬0xf ⣬ + 0x10 , 0x11-豸ػطʱͼ, 0x12-, + 0x13-,0x14-뿪,0x15-ǻ, + 0x16-Աۼ,0x17-˶,0x18-ͣ, + 0x19-Ʒ,0x1a-Ʒȡ, 0x1b-, + 0x1c-м,0x1d-ȡ֤¼,0x1e-,0x1f-ƻ, + 0x20-ֻ⣬0x21-Ԥ0x22-±, 0x23, + 0x24Υͣ,0x25-ץ,0x26-߲±,0x2a-, + 0x2b-ʸ,0x2c-޳ʱ,0x2d-ȫñ,0x2e-ܽץ, + 0x2f-Ŀץ,0x30-ץĽģ, 0x31-Ŀ, + 0x32-, 0x33-, 0x34-ҵѯ,0x35-Ƿ̯, + 0x36-ԱܶȣԤ,0x37-ڼ,0x38-쳣, + 0x39-˶, 0x3a-Υͣ, 0x3b-,0x3c-ѹ,0x3d-ռ,0x3e-,0x3f-ͷ,0x40-˼,0x41-·, + 0x42-,0x43-Ũ,0x44-ʩ,0x45-ӵ,0x46-ͨ¹ʼ, 0x47-෽ͣ0x48-ֶ, + 0x49-ֻ,0x4b-˾ʻΪ,0x4c-߼ʻ,0x4d-ɳⱨ, + 0x52-ŶӼ,0x53-ŶӼʱ,0x54-(ֶأճԼƽ̨), 0x55-ʱץ, 0x56-ŷż, + 0x57-Ҷȱ, 0x58-,0x59-Ա,0x5a-Ա,0x5b-쳣,0x5c-Ա,0x5d-̼,0x5e-,0x5f-, + 0x60-ռӦ,0x61-ռ,0x62-ֹ,0x63-ռרó,0x64-,0x65-ReIDԱ켣,0x66-ͨʱץͼ¼, + 0x67-AIƽ̨¼,0x68-Ũ쳣,0x69-ǿ쳣,0x70-ͨʱץͼ,0x71-¼,0xff- ȫ*/ + BYTE byFileType; + BYTE byNeedCard; // ǷҪ + /* + 0-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- + 29-أ30-ۣ31-£32-ƣ33-㣬34-0xff-ȫ + */ + BYTE byProvince; //ʡֵ + BYTE byEventType; // ¼ͣ01-ͨ¼2-Υȡ֤3-¼ + BYTE sCardNum[CARDNUM_LEN_V30]; // + NET_DVR_TIME struStartTime;//ͼƬĿʼʱ + NET_DVR_TIME struStopTime;// ͼƬĽʱ + //ITC3.7 + DWORD dwTrafficType; //ͼƬЧ ο VCA_OPERATE _TYPE + DWORD dwVehicleType; // ο VCA_VEHICLE_TYPE + //ΥͲο VCA_ILLEGAL_TYPE ǰָ֧ѡ + DWORD dwIllegalType; + BYTE byLaneNo; //(1~99) + BYTE bySubHvtType ;//0-,1-(ֳ֧Ƽʡݼ),2-ǻ,3- + BYTE bySubDriveType; //ʻ + //byFileTypeΪ0x4b-˾ʻΪʱΪ˾ʻΪͣ嶨壺0-1-̡2-Ӵ绰3-ƣͼʻ4-ѡ5-ʻԱ쳣6-δϵȫ7-ī8-˫뷽̡9-뷽̡10-ʻԱ쳣11-ʱʻ12-ʻԱ + //byFileTypeΪ0x4c-߼ʻʱΪ߼ʻͣ嶨壺0-1-ǰײ2-ƫ()3-ƫ()4-5-˷ײ6-ä(Һ)7-ä()8-ä() + BYTE byRes2;//ֽ + char sLicense[MAX_LICENSE_LEN/*16*/]; //ƺ + BYTE byRegion; // ֵ 0-1-ŷ(Europe Region)2-(Russian Region)3-ŷ&˹(EU&CIS), 4-ж(Middle East),0xff- + BYTE byCountry; // ֵգCOUNTRY_INDEX + BYTE byArea; // + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cStartTimeDifferenceH; //ʼʱUTCʱСʱ-12 ... +14 ʾʱ + char cStartTimeDifferenceM; //ʼʱUTCʱӣ-30, 0, 30, 45ʾʱ + char cStopTimeDifferenceH; //ʱUTCʱСʱ-12 ... +14ʾʱ + char cStopTimeDifferenceM; //ʱUTCʱӣ-30, 0, 30, 45ʾʱ +}NET_DVR_FIND_PICTURE_PARAM, *LPNET_DVR_FIND_PICTURE_PARAM; + +//PC NVRļ +typedef struct tagNET_DVR_FIND_FILE_PCNVR +{ + DWORD dwSize; //ṹС + NET_DVR_IPADDR struIpAddr; //IPַ + WORD wIpPort; //˿ں + BYTE byRes[2]; //ֽ + char sDomainName[MAX_DOMAIN_NAME]; //(ʱû) + char sSerial[SERIALNO_LEN]; //к + + DWORD lChannel; //ͨ + DWORD dwFileType; //¼ļ0xffȫ0ʱ¼,1-ƶ 2 + //3-|ƶ 4-&ƶ 5- 6-ֶ¼ + DWORD dwIsLocked; //Ƿ 0-ļ,1-ļ, 0xffʾļ + DWORD dwUseCardNo; //Ƿʹÿ + BYTE sCardNumber[CARDNUM_LEN_V30]; // + NET_DVR_TIME struStartTime; //ʼʱ + NET_DVR_TIME struStopTime; //ʱ +}NET_DVR_FILE_COND_PCNVR, *LPNET_DVR_FILE_COND_PCNVR; + +//PCNVR¼ļ +typedef struct tagNET_DVR_FINDDATA_PCNVR +{ + char sFileName[100];//ļ + NET_DVR_TIME struStartTime;//ļĿʼʱ + NET_DVR_TIME struStopTime;//ļĽʱ + DWORD dwFileSize;//ļĴС + char sCardNum[CARDNUM_LEN_V30]; + BYTE byLocked;//9000豸֧,1ʾļѾ,0ʾļ + BYTE byFileType; //ļ + BYTE byRes[2]; +}NET_DVR_FINDDATA_PCNVR, *LPNET_DVR_FINDDATA_PCNVR; + +#define PICTURE_NAME_LEN 64 +#define PICTURE_INFO_MAX_SIZE 640*960*1.5 + +typedef struct +{ + char sFileName[PICTURE_NAME_LEN];//ͼƬ + NET_DVR_TIME struTime;//ͼƬʱ + DWORD dwFileSize;//ͼƬĴС + char sCardNum[CARDNUM_LEN_V30]; // + BYTE byPlateColor ;//οṹ VCA_PLATE_COLOR + BYTE byVehicleLogo;//οṹ VLR_VEHICLE_CLASS + BYTE byEventSearchStatus; //ͼƬʾͬһҽʱ0-ʾûͼƬϢ1-ʾ滹ͼƬϢܹͼƬϢһ״̬Ϊ0ͼƬ + BYTE byRecogResult ;//ʶοṹVTR_RESULT + char sLicense[MAX_LICENSE_LEN/*16*/]; //ƺ + BYTE byRes[12]; +}NET_DVR_FIND_PICTURE,*LPNET_DVR_FIND_PICTURE; + +#define MAX_RECORD_PICTURE_NUM 50 // 󱸷ͼƬ + +typedef struct tagNET_DVR_BACKUP_PICTURE_PARAM +{ + DWORD dwSize; // ṹС + DWORD dwPicNum; + NET_DVR_FIND_PICTURE struPicture[MAX_RECORD_PICTURE_NUM]; + BYTE byDiskDes[DESC_LEN_32]; + BYTE byWithPlayer; + BYTE byContinue; /*Ƿ 0 1*/ + BYTE byRes[34]; +}NET_DVR_BACKUP_PICTURE_PARAM, *LPNET_DVR_BACKUP_PICTURE_PARAM; + +typedef struct +{ + DWORD dwSize; //ṹС + DWORD dwChannel; //ͨ + BYTE byCompressType; //ȡѹ1,2,3,¼ + BYTE byRes[15]; // + NET_DVR_COMPRESSIONCFG_V30 struCurrentCfg; //ǰѹ +}NET_DVR_COMPRESSION_LIMIT, *LPNET_DVR_COMPRESSION_LIMIT; + +#define STEP_READY 0 //׼ +#define STEP_RECV_DATA 1 // +#define STEP_UPGRADE 2 //ϵͳ +#define STEP_BACKUP 3 //ϵͳ +#define STEP_SEARCH 255 //ļ + +typedef struct tagNET_DVR_VIDEO_EFFECT +{ + DWORD dwBrightValue; //[0,255] + DWORD dwContrastValue; //Աȶ[0,255] + DWORD dwSaturationValue; //Ͷ[0,255] + DWORD dwHueValue; //ɫ[0,255] + DWORD dwSharpness; //[0,255] + DWORD dwDenoising; //ȥ[0,255] + BYTE byRes[12]; +}NET_DVR_VIDEO_EFFECT, *LPNET_DVR_VIDEO_EFFECT; + +typedef struct tagNET_DVR_VIDEO_INPUT_EFFECT +{ + DWORD dwSize; //ṹС + WORD wEffectMode; //ģʽ 0-׼ 1- 2- 3- 255-Զ + BYTE byRes1[146]; // + NET_DVR_VIDEO_EFFECT struVideoEffect; //ƵЧ + BYTE byRes2[60]; // +}NET_DVR_VIDEO_INPUT_EFFECT, *LPNET_DVR_VIDEO_INPUT_EFFECT; + + +typedef struct tagNET_DVR_VIDEOPARA_V40 +{ + DWORD dwChannel; // ͨ + DWORD dwVideoParamType; // Ƶ 0- 1-Աȶ 2-Ͷ 3-ɫ 4- 5-ȥ + DWORD dwVideoParamValue; //ӦƵֵΧ + BYTE byRes[12]; +}NET_DVR_VIDEOPARA_V40, *LPNET_DVR_VIDEOPARA_V40; + +typedef struct tagNET_DVR_DEFAULT_VIDEO_COND +{ + DWORD dwSize; // ṹС + DWORD dwChannel; // ͨ + DWORD dwVideoMode; // ģʽ + BYTE byRes[32]; // +}NET_DVR_DEFAULT_VIDEO_COND, *LPNET_DVR_DEFAULT_VIDEO_COND; + +typedef struct tagNET_DVR_ENCODE_JOINT_PARAM +{ + DWORD dwSize; // ṹС + BYTE byJointed; // 0 ûй 1 Ѿ + BYTE byDevType; // 豸 1 豸 + BYTE byRes1[2]; // ֽ + NET_DVR_IPADDR struIP; // ıȡ豸IPַ + WORD wPort; // ıȡ豸˿ں + WORD wChannel; // ıȡ豸ͨ + BYTE byRes2[20]; // ֽ +}NET_DVR_ENCODE_JOINT_PARAM, *LPNET_DVR_ENCODE_JOINT_PARAM; + +typedef struct tagNET_DVR_VCA_CHAN_WORKSTATUS +{ + BYTE byJointed; // 0-ûй 1-Ѿ + BYTE byRes1[3]; + NET_DVR_IPADDR struIP; // ȡ豸IPַ + WORD wPort; // ȡ豸˿ں + WORD wChannel; // ȡ豸ͨ + BYTE byVcaChanStatus; // 0 - δ 1 - + BYTE byRes2[19]; // ֽ +}NET_DVR_VCA_CHAN_WORKSTATUS, *LPNET_DVR_VCA_CHAN_WORKSTATUS; + +typedef struct tagNET_DVR_VCA_DEV_WORKSTATUS +{ + DWORD dwSize; // ṹС + BYTE byDeviceStatus; // 豸״̬0 - 1- + BYTE byCpuLoad; // CPUʹ0-100 ֱʹðٷ + NET_DVR_VCA_CHAN_WORKSTATUS struVcaChanStatus[MAX_VCA_CHAN]; + DWORD dwRes[40]; // ֽ +}NET_DVR_VCA_DEV_WORKSTATUS, *LPNET_DVR_VCA_DEV_WORKSTATUS; + +typedef struct tagNET_DVR_VGA_DISP_CHAN_CFG_V40 +{ + DWORD dwSize; + BYTE byAudio; /*ƵǷ*/ + BYTE byAudioWindowIdx; /*ƵӴ*/ + BYTE byVgaResolution; /*ֱʣȡ*/ + BYTE byVedioFormat; /*1:NTSC,2:PAL0-NULL*/ + DWORD dwWindowMode; /*ģʽȡ*/ + BYTE byJoinDecChan[MAX_WINDOWS];/*ӴڹĽͨ*/ + BYTE byEnlargeStatus; /*ǷڷŴ״̬0Ŵ1Ŵ*/ + BYTE byEnlargeSubWindowIndex;//ŴӴں + BYTE byScale; /*ʾģʽ0---ʵʾ1---ʾ( BNC )*/ + /*ֹ壬0-Ƶۺƽ̨ڲʾͨã1-ʾͨ*/ + BYTE byUnionType; + union + { + BYTE byRes[160]; + struct + { + /*ӴڶӦͨӦĽϵͳIJλ(Ƶۺƽ̨нϵͳЧ)*/ + BYTE byJoinDecoderId[MAX_WINDOWS]; + //ʾƵֱʣ1-D1,2-720P,3-1080P豸Ҫݴ//ֱʽнͨķ䣬1ó1080P豸4ͨ + //˽ͨ + BYTE byDecResolution; + BYTE byRes[143]; + }struVideoPlatform; + struct + { + BYTE byRes[160]; + }struNotVideoPlatform; + }struDiff; + BYTE byRes[120]; +}NET_DVR_VGA_DISP_CHAN_CFG_V40,*LPNET_DVR_VGA_DISP_CHAN_CFG_V40; + +typedef struct tagNET_DVR_V6SUBSYSTEMPARAM +{ + BYTE bySerialTrans;//Ƿ͸0-1- + BYTE byRes[35]; +}NET_DVR_V6SUBSYSTEMPARAM, *LPNET_DVR_V6SUBSYSTEMPARAM; + + + + +typedef struct tagNET_DVR_CORRECT_DEADPIXEL_PARAM +{ + DWORD dwSize; + DWORD dwCommand; //0-뻵ģʽ1-ӻ㣬2-滵㣬3-˳ + DWORD dwDeadPixelX; //X + DWORD dwDeadPixelY; //Y + BYTE byRes[12]; // +}NET_DVR_CORRECT_DEADPIXEL_PARAM, *LPNET_DVR_CORRECT_DEADPIXEL_PARAM; + +#define MAX_REDAREA_NUM 6 //̵ + +typedef struct tagNET_DVR_CORRECT_PARAMS +{ + BYTE byYellowIntervalTime;//ƵƵļʱ䣬λ루s + BYTE byDigTrafficLight;//ǷǽֻͨƵƣ0-ǣ1- + BYTE byRes[2]; +}NET_DVR_CORRECT_PARAMS,*LPNET_DVR_CORRECT_PARAMS; + +typedef struct tagNET_DVR_REDAREACFG +{ + DWORD dwSize; + DWORD dwCorrectEnable; //ǷУܣ0-رգ1- + DWORD dwCorrectLevel; //У1(У)-10(У),ĬΪ5 + DWORD dwAreaNum; //У + NET_VCA_RECT struLaneRect[MAX_REDAREA_NUM]; //У + NET_DVR_CORRECT_PARAMS struCorrectParam[MAX_REDAREA_NUM/*6*/]; //УԺУӦ + BYTE byRes2[8]; // +}NET_DVR_REDAREACFG, *LPNET_DVR_REDAREACFG; + +typedef struct tagNET_DVR_HISTORICDATACFG +{ + DWORD dwSize; + DWORD dwTotalNum; //ʷݸ + BYTE byRes[16]; +}NET_DVR_HISTORICDATACFG, *LPNET_DVR_HISTORICDATACFG; + + +#define INQUEST_MESSAGE_LEN 44 //ѶصϢ +#define INQUEST_MAX_ROOM_NUM 2 //ѶҸ +#define MAX_RESUME_SEGMENT 2 //֧ͬʱָƬĿ + +typedef struct tagNET_DVR_INQUEST_ROOM +{ + BYTE byRoomIndex; //Ѷұ + BYTE byFileType; //0-Ѷļ1-ͥϴļ + BYTE byMode; /* 0 ʹг; 0modeֵ 1-Ӱ 2-л1 3-л2 4-˫ 5-1 6-2 7-Ļ1 8-Ļ2 */ + BYTE byQuick; /* ǷΪã 1-ãòflash0-ãòFlash mode 0 Ч*/ + BYTE byRes[20]; // +}NET_DVR_INQUEST_ROOM, *LPNET_DVR_INQUEST_ROOM; + +typedef struct tagNET_DVR_INQUEST_MESSAGE +{ + char sMessage[INQUEST_MESSAGE_LEN]; //صϢ + BYTE byRes[46]; // +}NET_DVR_INQUEST_MESSAGE, *LPNET_DVR_INQUEST_MESSAGE; + +typedef struct tagNET_DVR_INQUEST_SENSOR_DEVICE +{ + WORD wDeviceType; //ݲɼ豸ͺ:0- 1- 2-ز 3- 4- 5-ء6-ϡ7-ά˹ + WORD wDeviceAddr; //ݲɼ豸ַ + BYTE byRes[28]; // +}NET_DVR_INQUEST_SENSOR_DEVICE, *LPNET_DVR_INQUEST_SENSOR_DEVICE; + +typedef struct tagNET_DVR_INQUEST_SENSOR_INFO +{ + NET_DVR_INQUEST_SENSOR_DEVICE struSensorDevice[INQUEST_MAX_ROOM_NUM]; + DWORD dwSupportPro; //֧Э,λʾ, °汾չֶ + //0x1: 0x2:ز 0x4: + BYTE byRes[120]; // +}NET_DVR_INQUEST_SENSOR_INFO, *LPNET_DVR_INQUEST_SENSOR_INFO; + +typedef struct tagNET_DVR_INQUEST_ROOM_INFO +{ + char szCDName[NAME_LEN]; //ƣ˫̹һ + union + { + BYTE byBitRate; // byCalcTypeΪ0ʱЧ(0-321-482-643-804-965-128 + //6-1607-1928-2249-25610-32011-38412-448 + //13-51214-64015-76816-896ǰ16ֵ)17-102418-128019-1536 + //20-179221-204822-307223-409624-8192 + BYTE byInquestTime; // byCalcTypeΪ1ʱЧ0-1Сʱ, 1-2Сʱ,2-3Сʱ,3-4Сʱ, 4-6Сʱ,5-8Сʱ,6-10Сʱ,7-12Сʱ + //8-16Сʱ, 9-20Сʱ,10-22Сʱ,11-24Сʱ + }uCalcMode; + BYTE byCalcType; //¼0- 1-ʱ + BYTE byAutoDelRecord; // ǷԶɾ¼0-ɾʱ¼ 1-ɾ + BYTE byAlarmThreshold; // ֵ + BYTE byInquestChannelResolution; //Ѷֱͨʣ0:720P,1:1080P,2:CIF,3:4CIF,4:WD1,5-VGA + BYTE byAutoOpenTray; //ǷԶ 0-1- + BYTE byCDPrintEnabled; //ָɺǷʹ̷ܹӡ 0- 1- + BYTE byRes[9]; +}NET_DVR_INQUEST_ROOM_INFO, *LPNET_DVR_INQUEST_ROOM_INFO; + +typedef struct tagNET_DVR_INQUEST_SYSTEM_INFO +{ + DWORD dwRecordMode; //¼ģʽ:1 ˫ģʽ 2 ֿģʽ 3 ˫˫ģʽ޸Ҫ豸 + DWORD dwWorkMode; //ģʽ:0 ׼ģʽ 1 ͨģʽ(Ŀǰֻб׼ģʽ) + DWORD dwResolutionMode; //豸ֱʣ0: 1:D1 2:720P 3:1080PѶôֶΣ + NET_DVR_INQUEST_SENSOR_INFO struSensorInfo; //ʪȴ + NET_DVR_INQUEST_ROOM_INFO struInquestRoomInfo[INQUEST_MAX_ROOM_NUM]; + BYTE byEnableHashCheck; //ǷöԹHASHֵУ 0-壬1-ã2- + BYTE byEnableInitCD; //Ƿóʼ 0-壬1-ã2- + BYTE byCDProcessingMode; //1.ģʽ 2-ģʽ ģʽ¼ɵĹ̹鵵Ͱϣ¼ʧܵḶ́е۽ֱͨмijλõģʽ¼õĹ̴мijλọ́¼ʧܵĹ̷ŵͰ + BYTE byRes[21]; // +}NET_DVR_INQUEST_SYSTEM_INFO, *LPNET_DVR_INQUEST_SYSTEM_INFO; + +typedef struct _NET_DVR_INQUEST_ALARM_ +{ + DWORD dwSize; + DWORD dwAlarmType; /* 0- 1-̴ 2-Ѷʱ*/ + BYTE byTrayNo; /**/ + BYTE byRes[3]; + DWORD dwInquestTime; /*Ѷʱ,dwAlarmType=2ʱЧ,λ:*/ + DWORD dwNotifyChannel; /*Ѷʱ䳬ʱͨ*/ + BYTE byRes1[244]; +}NET_DVR_INQUEST_ALARM, *LPNET_DVR_INQUEST_ALARM; + +typedef struct _NET_DVR_VIDEO_PARKING_POLE_ALARM_ +{ + DWORD dwSize; //ṹС + NET_DVR_TIME_V30 struTime; //ʱ + BYTE byParkingNum[32]; //λ + BYTE byAlarmType; //ͣ0-δ֪1-ͷڵ2-ť3-Ƿռñ4-λ״̬仯 + BYTE byVehicleEnterState; //״̬0-δ֪1-룬2-뿪 + BYTE byRes[78]; +}NET_DVR_VIDEO_PARKING_POLE_ALARM, *LPNET_DVR_VIDEO_PARKING_POLE_ALARM; + +typedef struct tagNET_DVR_INQUEST_RESUME_SEGMENT +{ + NET_DVR_TIME struStartTime; //¼ʼʱ + NET_DVR_TIME struStopTime; //¼ֹʱ + BYTE byRoomIndex; //Ѷұ,1ʼ + BYTE byDriveIndex; //¼,1ʼ + WORD wSegmetSize; //ƬϵĴС, λM + DWORD dwSegmentNo; //ƬڱѶе,1ʼ + BYTE byRes[24]; // +}NET_DVR_INQUEST_RESUME_SEGMENT, *LPNET_DVR_INQUEST_RESUME_SEGMENT; + +typedef struct tagNET_DVR_INQUEST_RESUME_EVENT +{ + DWORD dwResumeNum; //ָ¼ + NET_DVR_INQUEST_RESUME_SEGMENT struResumeSegment[MAX_RESUME_SEGMENT]; + BYTE byResumeMode; //ָģʽ0-ָ̻1-˫ָ̻ + BYTE byCDPrintEnbled; //ָɺǷʹ̷ܹӡ 0- 1- + BYTE byRes[198]; // +}NET_DVR_INQUEST_RESUME_EVENT, *LPNET_DVR_INQUEST_RESUME_EVENT; + +typedef struct tagNET_DVR_INQUEST_DEVICE_VERSION +{ +BYTE byMainVersion; /*汾. + 0 : δ֪ + 1 : 8000ѶDVR + ΰ汾: 1 : 8000HD-S + 2 : 8100ѶDVR + ΰ汾: 1 : Ѷ81SNL + 2 : Ѷ81SH + 3 : Ѷ81SFH + 3 : 8608ѶNVR + ΰ汾: 1 : DS-8608SN-SP + 2 : DS-8608SN-ST +*/ +BYTE bySubVersion; //ߴΰ汾 +BYTE byUpgradeVersion; //汾,δΪ0 +BYTE byCustomizeVersion; //ư汾,ǶΪ0 +BYTE byRes[60]; // +}NET_DVR_INQUEST_DEVICE_VERSION, *LPNET_DVR_INQUEST_DEVICE_VERSION; + +typedef struct tagNET_DVR_DISK_RAID_INFO +{ + DWORD dwSize; //ṹС + BYTE byEnable; //RaidǷ + BYTE bySleepStatus; //0-Ч 1-ߣ2- + BYTE byRes[34]; //ֽ +}NET_DVR_DISK_RAID_INFO, *LPNET_DVR_DISK_RAID_INFO; + + +typedef struct tagNET_DVR_SYNCHRONOUS_IPC +{ + DWORD dwSize; //ṹС + BYTE byEnable; //ǷãΪǰIPCͬ豸 + BYTE byRes[7]; // +}NET_DVR_SYNCHRONOUS_IPC, *LPNET_DVR_SYNCHRONOUS_IPC; + +typedef struct tagNET_DVR_IPC_PASSWD +{ + DWORD dwSize; //ṹС + char sOldPasswd[PASSWD_LEN]; //IPCľ룬DVRDVR֤ + char sNewPasswd[PASSWD_LEN]; //IPC + BYTE byRes[32]; +}NET_DVR_IPC_PASSWD, *LPNET_DVR_IPC_PASSWD; + +//ͨȡDVR״̬λbps +typedef struct tagNET_DEVICE_NET_USING_INFO +{ + DWORD dwSize; //ṹС + DWORD dwPreview; //Ԥ + DWORD dwPlayback; //ط + DWORD dwIPCModule; //IPC + DWORD dwNetDiskRW; //̶д + BYTE res[32]; +}NET_DVR_DEVICE_NET_USING_INFO, *LPNET_DVR_DEVICE_NET_USING_INFO; + +//ͨDVRǰIPCIPַ +typedef struct tagNET_DVR_IPC_NETCFG +{ + DWORD dwSize; //ṹС + NET_DVR_IPADDR struIP; //IPCIPַ + WORD wPort; //IPCĶ˿ + char res[126]; +}NET_DVR_IPC_NETCFG, *LPNET_DVR_IPC_NETCFG; + +//ʱ +typedef struct tagNET_DVR_TIME_LOCK +{ + DWORD dwSize; //ṹС + NET_DVR_TIME strBeginTime; + NET_DVR_TIME strEndTime; + DWORD dwChannel; //ͨ, 0xffʾͨ + DWORD dwRecordType; //¼: 0xffffffffȫ0ʱ¼1-ƶ⣬23-ƶ⣬4-ƶ⣬5-6-ֶ¼7-¼(ͬļ) + DWORD dwLockDuration; //ʱ,λ,0xffffffffʾ + NET_DVR_TIME_EX strUnlockTimePoint; //ʱЧdwLockDurationΪʱʱ䵽ʱԶ + BYTE byRes[4]; +}NET_DVR_TIME_LOCK, *LPNET_DVR_TIME_LOCK; + +typedef struct tagNET_DVR_LOCK_RETURN +{ + DWORD dwSize; //ṹС + NET_DVR_TIME strBeginTime; + NET_DVR_TIME strEndTime; + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ,0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cTimeDifferenceH; //UTCʱСʱ-12 ... +14+ʾ, byISO8601Ϊ1ʱЧ + char cTimeDifferenceM; //UTCʱӣ-30, 30, 45+ʾ, byISO8601Ϊ1ʱЧ + BYTE byRes[17]; +}NET_DVR_LOCK_RETURN, *LPNET_DVR_LOCK_RETURN; + +//67DVS +//֤ +typedef enum +{ + UPGRADE_CERT_FILE = 0, + UPLOAD_CERT_FILE = 1, + TRIAL_CERT_FILE = 2, + CONFIGURATION_FILE = 3, + UPLOAD_RECORD_FILE = 4 , //ϴ¼ļ + SCENE_CONFIGURATION_FILE = 5, //ļϴ + UPLOAD_PICTURE_FILE = 6, //ϴͼƬļ + UPLOAD_VIOLATION_FILE = 7, //ϴΥֵļ + UPLOAD_TG_FILE = 8, //ϴTGTiming GeneratorļT1ԣ + UPLOAD_DATA_TO_DB = 9, //ϴļͼ + UPLOAD_BACKGROUND_PIC = 10, //ϴͼƬ + UPLOAD_CALIBRATION_FILE = 11, //ϴ궨ļ + UPLOAD_TME_FILE = 12, //ϴڹļ + + //UPLOAD_TME_FILE = 12, //ϴڹļ + UPLOAD_VEHICLE_BLOCKALLOWLIST_FILE = 13, + UPLOAD_PICTURE_TO_CLOUD = 15, //ϴͼƬƴ洢 + UPLOAD_VIDEO_FILE = 16, //ϴƵļ + UPLOAD_SCREEN_FILE = 17, //ϴĻļ + UPLOAD_PUBLISH_MATERIAL = 18, //ϴϢ̬زļ + UPLOAD_PUBLISH_UPGRADE_FILE = 19, //ϴϢļ + UPLOAD_RING_FILE = 20, //ϴļ + UPLOAD_ENCRYPT_CERT = 21, //ϴ֤ + UPLOAD_THERMOMETRIC_FILE = 22, //ϴ±궨ļ + UPLOAD_SUBBRAND_FILE = 23, //ϴƷļ + UPLOAD_LED_CHECK_FILE = 24, //ϴLEDУļ + BATCH_UPLOAD_PICTURE_FILE = 25, //ϴͼƬļ + UPLOAD_EDID_CFG_FILE = 26, //ϴEDIDļ + UPLOAD_PANORAMIC_STITCH = 27,//ϴȫԶƴļ + UPLOAD_BINOCULAR_COUNTING = 28,//ϴֱ + UPLOAD_AUDIO_FILE = 29, //ϴļ + UPLOAD_PUBLISH_THIRD_PARTY_FILE = 30, //ϴļ + UPLOAD_DEEPEYES_BINOCULAR = 31,//ϴTX1˫Ŀ + UPLOAD_CERTIFICATE_BLOCKLIST = 32, //ϴֹ֤ + UPLOAD_HD_CAMERA_CORRECT_TABLE = 33,//ϴ2400W + UPLOAD_FD_DATA = 35,//ݵ + UPLOAD_FACE_DATA = 36,//ͼƬݵ + UPLOAD_FACE_ANALYSIS_DATA = 37,//ͼƬݵ豸ʶͼƬĿ + UPLOAD_FILEVOLUME_DATA = 38,//ϴļļ(ĿǰֻCVRʵ) + IMPORT_DATA_TO_FACELIB = 39,//ݣͼƬ+ͼƬϢ 豸⣩ + UPLOAD_LEFTEYE_4K_CALIBFILE = 40,//ۡ4K궨ڲϴĿ¼ + UPLOAD_SECURITY_CFG_FILE = 41,//ļȫ + UPLOAD_RIGHT_CONTROLLER_AUDIO = 42, //ϴȨ޿Ƶļ + UPLOAD_MODBUS_CFG_FILE = 43, //ModbusЭļ + UPLOAD_NOTICE_VIDEO_DATA = 44, //Ƶ· + UPLOAD_RS485_PROTOCOL_DLL_FILE = 45, //RS485Э鶯̬ļ + UPLOAD_PIC_BY_BUF = 46,//ͼƬ浼ͼƬļ + UPLOAD_CLIENT_CALIBFILE = 47,//ͻ궨ļ(.ptoʽļ) + UPLOAD_HD_CAMERA_CORRECT_TABLE_3200W = 48,//3200W(.calʽļ) + UPLOAD_DOOR_CONTENT = 49, //ϴԪſϵϢ + UPLOAD_ASR_CONTROL_FILE = 50, //ʶļϴ + UPLOAD_APP_FILE = 51,//ϴHEOP APPļ + UPLOAD_AI_ALGORITHM_MODEL = 52, //AIƽ̨ϴ㷨ģ͵豸 + UPLOAD_PUBLISH_PROGRAM_THUMBNAIL = 53, //ϴϢĿͼ + UPLOAD_PUBLISH_TEMPLATE_THUMBNAIL = 54, //ϴϢģͼ + UPLOAD_AI_PICTURE = 55,//AIƽ̨ͼƬ·ͼƬΪƸʽ + UPLOAD_OFFLINE_CAPTURE_INFO = 56, //߲ɼûб + UPLOAD_FONT_TYPE_DLL_FILE = 57, //⵼ + UPLOAD_CLIENT_CALIBFILE_FILE = 58, //ͻ궨ļ(.ptoʽļ,ͨ) + UPLOAD_HD_CAMERA_CORRECT_TABLE_3200W_FILE = 59, //3200W(.calʽļ,ͨ) + IMPORT_DATA_TO_HBDLIB = 60, /*ݵ⣨ͼƬ+ͼƬϢ 豸⣩*/ + UPLOAD_SCENE_FILE = 61, //볡ļ + UPLOAD_RATIOSTITCHING_FILE = 62, // 뱶ƴļ + UPLOAD_LENS_PARAM_FILE = 63, // 뾵ͷļ + UPLOAD_CUSTOMAUDIO_FILE = 64, //ԶƵزļ + UPLOAD_VIDEOWALL_MATERIAL_FILE = 65 //ǽزļ +}NET_SDK_UPLOAD_TYPE; + +typedef enum +{ + NET_SDK_DOWNLOAD_CERT = 0, //֤ + NET_SDK_DOWNLOAD_IPC_CFG_FILE = 1,//IPCļ + NET_SDK_DOWNLOAD_BASELINE_SCENE_PIC = 2, //ػ׼ͼƬ + NET_SDK_DOWNLOAD_VQD_ALARM_PIC = 3, //VQDͼƬ + NET_SDK_DOWNLOAD_CONFIGURATION_FILE = 4, //ļ + NET_SDK_DOWNLOAD_SCENE_CONFIGURATION_FILE = 5, //سļ + NET_SDK_DOWNLOAD_FILE_FORM_DB = 6, //ͼ + // NET_SDK_DOWNLOAD_TME_FILE = 7 //سڹļ + + NET_SDK_DOWNLOAD_TME_FILE = 7, //سڹļ + NET_SDK_DOWNLOAD_VEHICLE_BLOCKALLOWLIST_FILE = 8, //ļ + NET_SDK_DOWNLOAD_GUID_FILE = 9, //GUIDļ + NET_SDK_DOWNLOAD_FILE_FORM_CLOUD = 10, //ƴ洢ͼƬ + NET_SDK_DOWNLOAD_PICTURE = 11, //ͼƬ + NET_SDK_DOWNLOAD_VIDEO = 12, //Ƶ + NET_DVR_DOWNLOAD_SCREEN_FILE = 13, //Ļļ + NET_SDK_DOWNLOAD_PUBLISH_MATERIAL = 14, //Ϣ̬زļ + NET_SDK_DOWNLOAD_THERMOMETRIC_FILE = 15,//ز±궨ļ + NET_SDK_DOWNLOAD_LED_CHECK_FILE = 16,//LEDУļ + NET_SDK_DOWNLOAD_VEHICLE_INFORMATION = 17,//Ϣ + NET_SDK_DOWNLOAD_CERTIFICATE_BLOCKLIST_TEMPLET = 18, //ֹ֤ģ + NET_SDK_DOWNLOAD_LOG_FILE = 19, //־ + NET_SDK_DOWNLOAD_FILEVOLUME_DATA = 20,//ļļĿǰֻCVR豸֧֣ + NET_SDK_DOWNLOAD_FD_DATA = 21,//ָ + NET_SDK_DOWNLOAD_SECURITY_CFG_FILE = 22,//ļȫ + NET_SDK_DOWNLOAD_PUBLISH_SCHEDULE = 23, //ճ̵ + NET_SDK_DOWNLOAD_RIGHT_CONTROLLER_AUDIO = 24, //Ȩ޿Ƶļ + NET_SDK_DOWNLOAD_MODBUS_CFG_FILE = 25, //ModbusЭļ + NET_SDK_DOWNLOAD_RS485_PROTOCOL_DLL_FILE = 26, //RS485Э鶯̬ļ + NET_SDK_DOWNLOAD_CLUSTER_MAINTENANCE_LOG = 27, //Ⱥά־ + NET_SDK_DOWNLOAD_SQL_ARCHIVE_FILE = 28, //鵵ݿ¼ + NET_SDK_DOWNLOAD_SUBWIND_STREAM = 29,//Ӵ + NET_SDK_DOWNLOAD_DEVTYPE_CALIBFILE = 30,//ͺű궨ļ(.calʽļ) + NET_SDK_DOWNLOAD_HD_CAMERA_CORRECT_TABLE = 31,// 2400W/3200W(.calʽļ) + NET_SDK_DOWNLOAD_CLIENT_CALIBFILE = 32,//ͻ궨ļ(.ptoʽļ) + NET_SDK_DOWNLOAD_FOUE_CAMERAS_PICTURES = 33,//ͨͼƬ(.tarʽļ) + NET_SDK_DOWNLOAD_DOOR_CONTENT = 34, //ſϵϢ + NET_SDK_DOWNLOAD_PUBLISH_MATERIAL_THUMBNAIL = 35, //Ϣ̬زͼ + NET_SDK_DOWNLOAD_PUBLISH_PROGRAM_THUMBNAIL = 36, //ϢĿͼ + NET_SDK_DOWNLOAD_PUBLISH_TEMPLATE_THUMBNAIL = 37, //Ϣģͼ + NET_SDK_DOWNLOAD_DARK_FIGHTER_X_CORRECT_TABLE_MAIN = 38,//ڹļ() + NET_SDK_DOWNLOAD_DARK_FIGHTER_X_CORRECT_TABLE_BACKUP = 39,//ڹļݷ + NET_SDK_DOWNLOAD_OFFLINE_CAPTURE_INFO_TEMPLATE = 40, //زɼûбģ + NET_SDK_DOWNLOAD_CAPTURE_DATA = 41, //߲ɼ + NET_SDK_DOWNLOAD_HD_CAMERA_CORRECT_TABLE_FILE = 42, // 2400W/3200W(.calʽļ, ͨ) + NET_SDK_DOWNLOAD_CLIENT_CALIBFILE_FILE = 43, //ͻ궨ļ(.ptoʽļ, ͨ) + NET_SDK_DOWNLOAD_FOUR_CAMERAS_PICTURES_FILE = 44, //ͨͼƬ(.tarʽļ, ͨ) + NET_SDK_DOWNLOAD_SCENE_FILE = 45, //ļ + NET_SDK_DOWNLOAD_OPEN_SOURCE_CERT = 46, //ԴϹ֤ + NET_SDK_DOWNLOAD_RATIOSTITCHING_FILE = 47, //ƴļ + NET_SDK_DOWNLOAD_LENS_PARAM_FILE = 48, // ͷļ + NET_SDK_DOWNLOAD_SELECT_DEVTYPE_CALIBFILE = 49, //ָͺű궨ļ(.calʽļ) + NET_SDK_DOWNLOAD_VIDEOWALL_MATERIAL_FILE = 50, //ǽزļ +}NET_SDK_DOWNLOAD_TYPE; + +//״̬ +typedef enum +{ + NET_SDK_DOWNLOAD_STATUS_SUCCESS = 1, //سɹ + NET_SDK_DOWNLOAD_STATUS_PROCESSING, // + NET_SDK_DOWNLOAD_STATUS_FAILED, //ʧ + NET_SDK_DOWNLOAD_STATUS_UNKOWN_ERROR, //δ֪ + NET_SDK_DOWNLOAD_STATUS_RESOURCE, //ڴ治 + NET_SDK_DOWNLOAD_STATUS_GUIDFILE_EXPORT_FAIL //GUIDļʧ +}NET_SDK_DOWNLOAD_STATUS; + +//ؿ +typedef enum tagNET_SDK_DOWNLOAD_CONTROL_TYPE_ENUM +{ + ENUM_DOWNLOAD_CONTROL_ERR = -1, + ENUM_DOWNLOAD_CONTROL_QOS = 1 // +}NET_SDK_DOWNLOAD_CONTROL_TYPE_ENUM; + +typedef struct tagNET_DVR_PANORAMIC_STITCH_UPLOAD +{ + DWORD dwSize; + DWORD dwChannel;// ͨ + BYTE byRes[128]; +}NET_DVR_PANORAMIC_STITCH_UPLOAD, *LPNET_DVR_PANORAMIC_STITCH_UPLOAD; + +typedef struct NET_DVR_FD_DATA_COND +{ + DWORD dwSize; + char szFDID[NET_SDK_MAX_FDID_LEN/*256*/]; //ID + char szCheckCode[NET_SDK_CHECK_CODE_LEN/*128*/]; //У + BYTE byCover;//Ƿ񸲸ʽ 0-1- + char szLoginPassword[PASSWD_LEN/*16*/]; //¼ + BYTE byRes[111]; +}NET_DVR_FD_DATA_COND, *LPNET_DVR_FD_DATA_COND; + +typedef struct NET_DVR_UPLOAD_FACE_DATA +{ + DWORD dwSize; + char szFDID[NET_SDK_MAX_FDID_LEN/*256*/]; //ID + BYTE byFDLibType; //0-;1-ֹ2- + BYTE byRes1[3]; + char szCustomInfo[NET_SDK_FDPIC_CUSTOM_INFO_LEN/*96*/]; //ͼƬԶϢ + BYTE byRes[512]; +}NET_DVR_UPLOAD_FACE_DATA, *LPNET_DVR_UPLOAD_FACE_DATA; + +typedef struct NET_DVR_UPLOAD_FACE_DATA_OUT +{ + char szPicID[NET_SDK_MAX_PICID_LEN/*256*/]; //ͼƬID + BYTE byRes[128]; +}NET_DVR_UPLOAD_FACE_DATA_OUT, *LPNET_DVR_UPLOAD_FACE_DATA_OUT; + +typedef struct NET_DVR_UPLOAD_FACE_ANALYSIS_DATA_OUT +{ + DWORD dwSize; + DWORD dwPID;//ͼƬID + DWORD dwFaceAnalysisNum;//ʶ + NET_VCA_RECT struVcaRect[NET_DVR_MAX_FACE_ANALYSIS_NUM]; //ʶĿ꣬ + BYTE byRes[128]; +}NET_DVR_UPLOAD_FACE_ANALYSIS_DATA_OUT, *LPNET_DVR_UPLOAD_FACE_ANALYSIS_DATA_OUT; + +typedef struct NET_DVR_SECURITY_CFG_FILE_COND +{ + DWORD dwSize; + char szSecretKey[NET_SDK_SECRETKEY_LEN/*128*/];//УԿ + BYTE byRes[128]; +}NET_DVR_SECURITY_CFG_FILE_COND, *LPNET_DVR_SECURITY_CFG_FILE_COND; + +typedef struct tagNET_DVR_DOWNLOAD_CLUSTER_MAINTENANCE_LOG_PARAM_ +{ + DWORD dwSize; + BYTE byType; //־ͣ0-ȫ1-2-Ĭ + BYTE byRes[255]; +}NET_DVR_DOWNLOAD_CLUSTER_MAINTENANCE_LOG_PARAM, *LPNET_DVR_DOWNLOAD_CLUSTER_MAINTENANCE_LOG_PARAM; + + +typedef struct tagNET_DVR_BONJOUR_CFG +{ + DWORD dwSize; // ṹС + BYTE byEnableBonjour; // Bonjourʹ 0 1ر + BYTE byRes1[3]; + BYTE byFriendlyName[MAX_DOMAIN_NAME]; // + BYTE byRes2[128]; +}NET_DVR_BONJOUR_CFG, *LPNET_DVR_BONJOUR_CFG; + +typedef struct tagNET_DVR_SOCKS_CFG +{ + DWORD dwSize; // ṹС + BYTE byEnableSocks; // ʹ 0ر 1 + BYTE byVersion; // SOCKS汾 4SOCKS4 5SOCKS5 + WORD wProxyPort; // ˿ڣĬ1080 + BYTE byProxyaddr[MAX_DOMAIN_NAME]; // IPַ + BYTE byUserName[MAX_DOMAIN_NAME]; // û SOCKS + BYTE byPassword[NAME_LEN]; // SOCKS5 + BYTE byLocalAddr[MAX_LOCAL_ADDR_LEN]; //ʹsocksΣʽΪ"ip/netmask;ip/netmask;" + BYTE byRes[128]; +}NET_DVR_SOCKS_CFG, *LPNET_DVR_SOCKS_CFG; + + + +typedef struct tagNET_DVR_QOS_CFG +{ + DWORD dwSize; + BYTE byManageDscp; // ݵDSCPֵ [0-63] + BYTE byAlarmDscp; // ݵDSCPֵ [0-63] + BYTE byVideoDscp; // ƵݵDSCPֵ [0-63]byFlagΪ0ʱʾƵ + BYTE byAudioDscp; // ƵݵDSCPֵ [0-63]byFlagΪ1ʱЧ + BYTE byFlag; // 0Ƶһ1Ƶֿ + BYTE byEnable; + BYTE byRes[126]; +}NET_DVR_QOS_CFG, *LPNET_DVR_QOS_CFG; + +typedef struct tagNET_DVR_HTTPS_CFG +{ + DWORD dwSize; + WORD wHttpsPort; // HTTPS˿ + BYTE byEnable; // ʹ 0ر 1 + BYTE byRes[125]; +}NET_DVR_HTTPS_CFG, *LPNET_DVR_HTTPS_CFG; + +//֤ +typedef struct tagNET_DVR_CERT_NAME +{ + BYTE byCountry[MAX_COUNTRY_NAME_LEN]; //Ҵ CN + BYTE byState[MAX_DOMAIN_NAME]; //޻ʡ + BYTE byLocality[MAX_DOMAIN_NAME]; // + BYTE byOrganization[MAX_DOMAIN_NAME]; //֯ + BYTE byUnit[MAX_DOMAIN_NAME]; //λ + BYTE byCommonName[MAX_DOMAIN_NAME]; + BYTE byEmail[MAX_DOMAIN_NAME]; + BYTE byRes[128]; +}NET_DVR_CERT_NAME, *LPNET_DVR_CERT_NAME ; + +typedef struct tagNET_DVR_CERT_ADDITION_PARAM +{ + DWORD dwSize; + char csCustomID[64]; //ûԶID + BYTE byRes1[2]; + BYTE byCertificateMode;//wCertTypeΪ1-CertificateʱЧ0-ǩ֤飬1-֤˽Կʽ + BYTE byPrivateKeyMode;// byCertificateModeΪ1-֤˽ԿʽʱЧ 0-key 1-PKCS#12 + BYTE byPassword[64]; //룬PrivateKeyModeΪ0ʱΪ˽Կ룬Ϊ1ʱΪPKCS#12 + BYTE byRes[128]; +}NET_DVR_CERT_ADDITION_PARAM, *LPNET_DVR_CERT_ADDITION_PARAM; + + +typedef struct tagNET_DVR_CERT_PARAM +{ + DWORD dwSize; + WORD wCertFunc; //֤࣬0-802.1x(ӦWIFI֤),1-HTTPS, 3-ieee802.1x(ӦLAN֤) + WORD wCertType; //֤ͣ0-CA1-Certificate,2-˽Կļ + BYTE byFileType; //֤ļͣ0-PEM,1-PFX + BYTE byRes1[2];//ֽ + BYTE byAddition;//Ƿʹøӽṹ壬0-ʹ;1-ʹ + NET_DVR_CERT_ADDITION_PARAM * pStruAdditionParam;//Ϣṹָ + BYTE byRes[28]; +}NET_DVR_CERT_PARAM, *LPNET_DVR_CERT_PARAM; + +#define UPLOAD_CERTIFICATE 1 //ϴ֤ + + +typedef struct tagNET_DVR_CERT_INFO +{ + DWORD dwSize; + NET_DVR_CERT_PARAM struCertParam; //֤ + DWORD dwValidDays; //ЧΪǩʱЧ + BYTE byPasswd[NAME_LEN]; //˽Կ + NET_DVR_CERT_NAME struCertName; // ֤ + NET_DVR_CERT_NAME struIssuerName; // ֤鷢ƣǩ֤ϢȡʱЧ + NET_DVR_TIME_EX struBeginTime; //֤鴴ʱ䣨ǩ֤ϢȡʱЧ + NET_DVR_TIME_EX struEndTime; //ֹ֤ʱ䣨ǩ֤ϢȡʱЧ + BYTE serialNumber[NAME_LEN]; //֤ʶ루ǩ֤ϢȡʱЧ + BYTE byVersion; + BYTE byKeyAlgorithm; // 0-RSA 1-DSA + BYTE byKeyLen; //ܳ 0-512 1-1024 2-2048 + BYTE bySignatureAlgorithm; //ǩ㷨ͣǩ֤ϢȡʱЧ + BYTE byRes[128]; +}NET_DVR_CERT_INFO, *LPNET_DVR_CERT_INFO; + + +//channel record status +//***ͨ¼״̬*****// +typedef struct tagNET_DVR_CHANS_RECORD_STATUS +{ + BYTE byValid; //ǷЧ + /*(ֻ)¼:0: ¼1¼ 2- + 3- 4-Ƶ 5-δ 6-浵 7-ش + 8-û 9-δ֤,10-浵к¼ 11-¼شк¼ 12-token֤ʧ*/ + BYTE byRecord; + WORD wChannelNO; //ͨ + DWORD dwRelatedHD; // + BYTE byOffLineRecord; //¼ 0-ر 1- + BYTE byRes[7]; //ֽ +}NET_DVR_CHANS_RECORD_STATUS, *LPNET_DVR_CHANS_RECORD_STATUS; + + +typedef struct tagNET_DVR_IP_ALARM_GROUP_NUM +{ + DWORD dwSize; + DWORD dwIPAlarmInGroup; //IPͨ + DWORD dwIPAlarmInNum; //IPͨ + DWORD dwIPAlarmOutGroup; //IPͨ + DWORD dwIPAlarmOutNum; //IPͨ + BYTE byRes[64]; +}NET_DVR_IP_ALARM_GROUP_NUM, *LPNET_DVR_IP_ALARM_GROUP_NUM; +//****NVR end***// + +typedef struct tagNET_DVR_CHAN_GROUP_RECORD_STATUS +{ + DWORD dwSize; //ṹС + NET_DVR_CHANS_RECORD_STATUS struChanStatus[MAX_CHANNUM_V30]; //һ64 +}NET_DVR_CHAN_GROUP_RECORD_STATUS, *LPNET_DVR_CHAN_GROUP_RECORD_STATUS; + + +typedef struct tagNET_DVR_RECTCFG +{ + WORD wXCoordinate; /*ϽʼX*/ + WORD wYCoordinate; /*ϽY*/ + WORD wWidth; /*ο*/ + WORD wHeight; /*θ߶*/ +}NET_DVR_RECTCFG, *LPNET_DVR_RECTCFG; +/*Ϣ*/ +typedef struct tagNET_DVR_WINCFG +{ + DWORD dwSize; + BYTE byVaild; + BYTE byInputIdx; /*Դ*/ + BYTE byLayerIdx; /*ͼ㣬0Ϊײ*/ + BYTE byTransparency; //͸ȣ0100 + NET_DVR_RECTCFG struWin;//ĿĴ(ʾǽ) + WORD wScreenHeight;// + WORD wScreenWidth;// + BYTE byRes[20]; +}NET_DVR_WINCFG, *LPNET_DVR_WINCFG; + +#define MAX_LAYERNUMS 32 + +typedef struct tagNET_DVR_ALLWINCFG +{ + DWORD dwSize; + NET_DVR_WINCFG struWinCfg[MAX_LAYERNUMS]; + BYTE byRes2[24]; +}NET_DVR_ALLWINCFG, *LPNET_DVR_ALLWINCFG; + +typedef struct tagNET_DVR_SCREENZOOM +{ + DWORD dwSize; + DWORD dwScreenNum;// + NET_DVR_POINT_FRAME struPointFrame; + BYTE byLayer;//ͼ + BYTE byRes[11]; +}NET_DVR_SCREENZOOM, *LPNET_DVR_SCREENZOOM; + +//2011-04-18 +/*Ϣ,99991ʼ */ +typedef struct tagNET_MATRIX_CAMERAINFO +{ + DWORD dwGlobalCamId; /* camȫֱ*/ + BYTE sCamName[NAME_LEN]; /*cam*/ + DWORD dwMatrixId; /*camӦı*/ + DWORD dwLocCamId; /*camӦڲ*/ + BYTE byValid; /*ǷЧ0-1-*/ + BYTE byPtzCtrl; /* Ƿɿأ0-1-*/ + BYTE byUseType; //*ʹͣ0-Ϊʹã1-BNC2-SP3,3-V6ˣ4-*/ + BYTE byUsedByTrunk;//ǰʹ״̬0-ûбʹã1-ʹ + BYTE byTrunkReq; /*ֱ,D1Ϊλ1 - 1D12- 2D1ΪʹʱָǸߵĴ*/ + BYTE byRes1[3]; + NET_DVR_TIME struInstallTime;//װʱ + BYTE sPurpose[NAME_LEN];/*;*/ + BYTE byRes2[20]; +}NET_MATRIX_CAMERAINFO, *LPNET_MATRIX_CAMERAINFO; + +/*Ϣ2048*/ +typedef struct tagNET_MATRIX_MONITORINFO +{ + DWORD dwGloalMonId; /*mon ͳһ*/ + BYTE sMonName[NAME_LEN]; + DWORD dwMatrixId; /*monھı*/ + DWORD dwLocalMonId; /*monڲ*/ + BYTE byValid; /*ǷЧ0-1-*/ + BYTE byTrunkType; /*ʹͣ0-Ϊʹã1-BNC2-SP3,3-V6ˣ4-*/ + BYTE byUsedByTrunk;//ǰʹ״̬0-ûбʹã1-ʹ + BYTE byTrunkReq; /*ֱ, D1Ϊλ1- 1D12- 2D1ΪʹʱָǸߵĴ*/ + NET_DVR_TIME struInstallTime;//װʱ + BYTE sPurpose[NAME_LEN];/*;*/ + BYTE byRes[20]; +}NET_MATRIX_MONITORINFO, *LPNET_MATRIX_MONITORINFO; + +typedef struct tagNET_MATRIX_DIGITALMATRIX +{ + NET_DVR_IPADDR struAddress; /*豸Ϊ豸ʱIPϢ*/ + WORD wPort; + BYTE byNicNum; /*0 - eth0, 1 - eth1, ˫ͨż󶨵*/ + BYTE byRes[69]; +}NET_MATRIX_DIGITALMATRIX, *LPNET_MATRIX_DIGITALMATRIX; +typedef struct tagNET_MATRIX_ANALOGMATRIX +{ + BYTE bySerPortNum; /*ӵĴں 0xff-ͨ*/ + BYTE byMatrixSerPortType;/* صĴģļ̿(Э)ӻͨſڣЭ飩 0 --- ЭͨѶ 1 --- ͨѶ*/ + BYTE byRes1[2]; + NET_DVR_SINGLE_RS232 struRS232; //232ڲ ͨʱ˲Ч + BYTE byRes2[200]; +}NET_MATRIX_ANALOGMATRIX, *LPNET_MATRIX_ANALOGMATRIX; + +typedef union tagNET_MATRIX_UNION +{ + NET_MATRIX_DIGITALMATRIX struDigitalMatrix; + NET_MATRIX_ANALOGMATRIX struAnalogMatrix; +}NET_MATRIX_UNION, *LPNET_MATRIX_UNION; +/*Ϣ20*/ +typedef struct tagNET_MATRIX_MATRIXINFO +{ + DWORD dwSize; + DWORD dwMatrixId; /**/ + BYTE sDevName[NAME_LEN]; + BYTE byCtrlType; /*ָͨѶʽǴͨ, ͨ*/ + BYTE byProtocolType;/*ͨſЭ*/ + BYTE byRes1[6]; /*Ԥ*/ + NET_MATRIX_UNION struMatrixUnion; + DWORD dwMaxPortsIn; /**/ + DWORD dwMaxPortsOut;/**/ + BYTE sUserName[NAME_LEN]; /*¼û*/ + BYTE sPassword[PASSWD_LEN]; /*¼*/ + NET_DVR_TIME struInstallTime;//װʱ + BYTE sPurpose[NAME_LEN];/*;*/ + BYTE byRes2[20]; /*Ԥ*/ +}NET_MATRIX_MATRIXINFO, *LPNET_MATRIX_MATRIXINFO; + + +typedef struct tagNET_DVR_MATRIXLIST +{ + DWORD dwSize; + BYTE byRes[12]; + DWORD dwMatrixNum;//豸صľ + BYTE *pBuffer;//Ϣ + DWORD dwBufLen;//ָ볤ȣ +}NET_DVR_MATRIXLIST,*LPNET_DVR_MATRIXLIST; + +/*Ϣ*/ +typedef struct tagNET_MATRIX_UARTPARAM +{ + DWORD dwSize; + BYTE byPortName[NAME_LEN]; + WORD wUserId; /*ûţ豸ΪʱһûȨ޹*/ + BYTE byPortType; /*ͣ0-RS232/1-RS485/2-RS422*/ + BYTE byFuncType; /*ӵ豸0-У1-̣2-͸ͨ(485ڲó͸ͨ),3-ģ*/ + BYTE byProtocolType; /*ֵ֧Э, Ӽ豸ʱҪϢ,ȡ֧Эıż*/ + BYTE byBaudRate; + BYTE byDataBits; + BYTE byStopBits; /*ֹͣλ*/ + BYTE byParity; /*У*/ + BYTE byFlowCtrl; /*أأ*/ + BYTE byRes[22]; /*Ԥ*/ +}NET_MATRIX_UARTPARAM, *LPNET_MATRIX_UARTPARAM; + +//256û1256 +typedef struct tagNET_MATRIX_USERPARAM +{ + DWORD dwSize; + BYTE sUserName[NAME_LEN]; + BYTE sPassword[PASSWD_LEN/*16*/]; + BYTE byRole;/*ûɫ:0-Ա,1-ԱֻһϵͳԱ255Ա*/ + BYTE byLevel; /*ͳһڲ,1- 255*/ + BYTE byRes[18]; +}NET_MATRIX_USERPARAM, *LPNET_MATRIX_USERPARAM; + +//255Դ +typedef struct tagNET_MATRIX_RESOURSEGROUPPARAM +{ + DWORD dwSize; + BYTE byGroupName[NAME_LEN]; + BYTE byGroupType;/*0-CAM飬1-MON*/ + BYTE byRes1; + WORD wMemNum; + DWORD dwGlobalId[512]; + BYTE byRes2[20]; +}NET_MATRIX_RESOURCEGROUPPARAM,*LPNET_MATRIX_RESOURSEGROUPPARAM; + +//255û +typedef struct tagNET_MATRIX_USERGROUPPARAM +{ + DWORD dwSize; + BYTE sGroupName[NAME_LEN]; + WORD wUserMember[255]; /*ûԱ*/ + WORD wResorceGroupMember[255]; /*ԴԱ*/ + BYTE byPermission[32];//Ȩޣ0-ptzȨޡлȨޡѯȨ + BYTE byRes[20]; +} NET_MATRIX_USERGROUPPARAM, *LPNET_MATRIX_USERGROUPPARAM; + +typedef struct tagNET_MATRIX_TRUNKPARAM +{ + DWORD dwSize; + DWORD dwTrunkId; + BYTE sTrunkName[NAME_LEN]; + DWORD dwSrcMonId; + DWORD dwDstCamId; + BYTE byTrunkType; /*ʹ 1-BNC2-SP3˸壬3-SP3D1 4-V6ˣ5-*/ + BYTE byAbility; /*ʾ˵ĴԴ伸·*/ + BYTE bySubChan; /*Թ˸߶ԣʾͨ*/ + BYTE byLevel; /* ߼ 1-255*/ + WORD wReserveUserID; //ԤûID 1~256 0ʾͷԤ + BYTE byRes[18]; +} NET_MATRIX_TRUNKPARAM, *LPNET_MATRIX_TRUNKPARAM; + +typedef struct tagNET_DVR_MATRIX_TRUNKLIST +{ + DWORD dwSize; + BYTE byRes[12]; + DWORD dwTrunkNum;//豸صĸ + BYTE *pBuffer;//Ϣ + DWORD dwBufLen;//ָ볤ȣ +}NET_DVR_MATRIX_TRUNKLIST,*LPNET_DVR_MATRIX_TRUNKLIST; + +#define MATRIX_PROTOCOL_NUM 20 //ֵ֧Э +#define KEYBOARD_PROTOCOL_NUM 20 //ֵ֧Э +typedef struct tagNET_DVR_PROTO_TYPE_EX +{ + WORD wType; /*ipcЭֵ*/ + WORD wCommunitionType; /*0ģ 1 2ģ⡢*/ + BYTE byDescribe[DESC_LEN]; /*Эֶ*/ +}NET_DVR_PROTO_TYPE_EX, LPNET_DVR_PROTO_TYPE_EX; + +typedef struct tagNET_DVR_MATRIXMANAGE_ABIILITY +{ + DWORD dwSize; + DWORD dwMaxCameraNum;//Camera + DWORD dwMaxMonitorNum;// + WORD wMaxMatrixNum;// + WORD wMaxSerialNum;// + WORD wMaxUser;//û + WORD wMaxResourceArrayNum;//Դ + WORD wMaxUserArrayNum;//û + WORD wMaxTrunkNum;// + BYTE nStartUserNum;//ʼû + BYTE nStartUserGroupNum;//ʼû + BYTE nStartResourceGroupNum;//ʼԴ + BYTE nStartSerialNum;//ʼں + DWORD dwMatrixProtoNum; /*ЧľЭĿ0ʼ*/ + NET_DVR_PROTO_TYPE_EX struMatrixProto[MATRIX_PROTOCOL_NUM];/*Эб*/ + DWORD dwKeyBoardProtoNum; /*ЧļЭĿ0ʼ*/ + NET_DVR_PROTO_TYPE_EX struKeyBoardProto[KEYBOARD_PROTOCOL_NUM];/*Эб*/ + BYTE byDelMonitorLongCfg; //Ƿ֧ɾmonitor + BYTE byDelCamonitorLongCfg;//Ƿ֧ɾcamera + BYTE byAudioSwitchContorl;//Ƿ֧Ƶؿ + BYTE byRes[29]; +} NET_DVR_MATRIXMANAGE_ABILITY, *LPNET_DVR_MATRIXMANAGE_ABILITY; + + +//ץĹ() +typedef struct tagNET_VCA_SINGLE_FACESNAPCFG +{ + BYTE byActive; //Ƿ񼤻0-1- + /********* IPC5.1.7 Begin 2014-03-21***********/ + //ԶROIʹ + BYTE byAutoROIEnable;//0-ر,1- + BYTE byRes[2]; // + /********* IPC5.1.7 End 2014-03-21***********/ + NET_VCA_SIZE_FILTER struSizeFilter; //ߴ + NET_VCA_POLYGON struVcaPolygon; //ʶ +}NET_VCA_SINGLE_FACESNAPCFG, *LPNET_VCA_SINGLE_FACESNAPCFG; + +//ץĹ +typedef struct tagNET_VCA_FACESNAPCFG +{ + DWORD dwSize; + BYTE bySnapTime; //ĿץĴ0-10 + BYTE bySnapInterval; //ץļλ֡ + BYTE bySnapThreshold; //ץֵ0-100 + BYTE byGenerateRate; //Ŀٶ,Χ[1, 5] + BYTE bySensitive; //ĿȣΧ[1, 5] + BYTE byReferenceBright; //2012-3-27ο[0,100] + BYTE byMatchType; //2012-5-3ȶԱģʽ0-Ŀʧ󱨾1-ʵʱ + BYTE byMatchThreshold; //2012-5-3ʵʱȶֵ0~100 + NET_DVR_JPEGPARA struPictureParam; //ͼƬṹ + NET_VCA_SINGLE_FACESNAPCFG struRule[MAX_RULE_NUM]; //ץĹ + //ع̳ʱ䣨ֽڣ + WORD wFaceExposureMinDuration;//Χ(1~3600룬Ĭ60)ЧԶģʽ + //عģʽ + BYTE byFaceExposureMode;//1-رգ2-0-Զжϣ + BYTE byBackgroundPic;//ͼϴʹ 0-Ĭֵ1-ֹ + DWORD dwValidFaceTime; //Ч̳ʱ䣬λ + DWORD dwUploadInterval; //ץͳϴʱ䣬λ룬Ĭ900 + DWORD dwFaceFilteringTime;//ͣʱ,Ĭ5룬Χ0-100롣0ʾ + BYTE bySceneID; //,Ŀǰ֧1~40ΪЧ + BYTE byInvalCapFilterEnable;//ЧץĹʹܣ0Ϊرգ1ΪĬΪ0 + BYTE byInvalCapFilterThreshold;//ЧץĹֵ0~100byInvalCapFilterEnableΪ1ʱЧ + BYTE byRes2[81]; +}NET_VCA_FACESNAPCFG, *LPNET_VCA_FACESNAPCFG; + +typedef struct tagNET_DVR_FIRMWARE_VERSION_IFNO +{ + DWORD dwSize;//ṹС + char szFirmwareVersion[LEN_PROPERTY/*128*/]; //ذ汾 ֻ + BYTE byRes2[128]; +}NET_DVR_FIRMWARE_VERSION_IFNO, *LPNET_DVR_FIRMWARE_VERSION_IFNO; + +// +typedef enum tagHUMAN_AGE_GROUP_ENUM +{ + ENUM_AGE_GROUP_INFANT = 1, //Ӥ׶ + ENUM_AGE_GROUP_CHILD = 2, //ͯ + ENUM_AGE_GROUP_YOUNGSTER = 3, // + ENUM_AGE_GROUP_ADOLESCENT = 4, // + ENUM_AGE_GROUP_YOUTH = 5, // + ENUM_AGE_GROUP_PRIME = 6, //׳ + ENUM_AGE_GROUP_MIDLIFE = 7, // + ENUM_AGE_GROUP_MIDAGE = 8, // + ENUM_AGE_GROUP_OLD = 9, // + ENUM_AGE_GROUP_ALL = 0xfe, //ȫ + ENUM_AGE_GROUP_UNKNOW = 0xff //δ֪,㷨֧δ +}HUMAN_AGE_GROUP_ENUM; + +// +typedef enum tagFACE_EXPRESSION_GROUP_ENUM +{ + ENUM_EXPRESSION_GROUP_SURPRISED = 1, // + ENUM_EXPRESSION_GROUP_PANIC = 2, // + ENUM_EXPRESSION_GROUP_DISGUUSTED = 3, // + ENUM_EXPRESSION_GROUP_HAPPY = 4, // + ENUM_EXPRESSION_GROUP_SAD = 5, //ѹ + ENUM_EXPRESSION_GROUP_ANGRY = 6, //ŭ + ENUM_EXPRESSION_GROUP_POKER = 7, // + ENUM_EXPRESSION_GROUP_ALL = 0xfe, //ȫ + ENUM_EXPRESSION_GROUP_UNKNOW = 0xff //δ֪,㷨֧δ +}FACE_EXPRESSION_GROUP_ENUM; + +typedef struct tagNET_DVR_LLI_PARAM +{ + float fSec;//[0.000000,60.000000] + BYTE byDegree;//:γ[0,90] [0,180] + BYTE byMinute;//[0,59] + BYTE byRes[6]; +}NET_DVR_LLI_PARAM, *LPNET_DVR_LLI_PARAM; + +typedef struct tagNET_DVR_LLPOS_PARAM +{ + BYTE byLatitudeType;//γͣ0-γ1-γ + BYTE byLongitudeType;//ͣ0-1- + BYTE byRes1[2]; + NET_DVR_LLI_PARAM struLatitude; /*γ*/ + NET_DVR_LLI_PARAM struLongitude; /**/ + BYTE byRes[16]; +}NET_DVR_LLPOS_PARAM, *LPNET_DVR_LLPOS_PARAM; + +//ץĸϢṹ +typedef struct tagNET_VCA_FACESNAP_ADDINFO +{ + //ο,ΪСͼ(ͷ) + NET_VCA_RECT struFacePicRect; + int iSwingAngle;//ת, -90~90 + int iTiltAngle;//, -90~90 + DWORD dwPupilDistance;//ͫ,ΧΪСֵΪ10,ֵΪǰֱʿ/1.6 + BYTE byBlockingState;//Ŀڵ״̬ 0-ʾδ֪㷨֧֣,1~ڵ,2~˲ʱڵ3~ڵ4~ڵ + BYTE byFaceSnapThermometryEnabled;//ץIJʹ 1- 0-ر + BYTE byIsAbnomalTemperature;//ץIJǷ¶쳣 1- 0- + BYTE byThermometryUnit;//µλ: 0-϶ȣ棩1-϶ȣH2-(K) + NET_DVR_TIME_EX struEnterTime; // ץ½ʱ + NET_DVR_TIME_EX struExitTime; // ץ뿪ʱ + float fFaceTemperature; // ¶ȣ - 20.0~150.0棬ȷС1λ0xffff65535ʾЧ¶ֵʱأ + float fAlarmTemperature;// ±ֵȷС1λ + DWORD dwThermalPicLen;//ȳͼƬ + BYTE *pThermalPicBuff;// ȳͼƬָ + BYTE szCustomChanID[65];// Զصͨ string max.len = 64 + BYTE byRes1[3];// ֽ + NET_DVR_LLPOS_PARAM struLLPos;//豸γλϢ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pEventNotificationAlertBuff; //BuffӦEventNotificationAlert JSON Block("eventType": "faceCapture") +#else + char* pEventNotificationAlertBuff; //BuffӦEventNotificationAlert JSON Block("eventType": "faceCapture") + BYTE byRes2[4]; +#endif + DWORD dwEventNotificationAlertLen;//ȶӦEventNotificationAlert JSON Block("eventType": "faceCapture")ݳ + BYTE byRes[340];// ֽ +}NET_VCA_FACESNAP_ADDINFO, *LPNET_VCA_FACESNAP_ADDINFO; + +//ץĽ +typedef struct tagNET_VCA_FACESNAP_RESULT +{ + DWORD dwSize; // ṹС + DWORD dwRelativeTime; // ʱ + DWORD dwAbsTime; // ʱ + DWORD dwFacePicID; //ͼID + DWORD dwFaceScore; //,0-100 + NET_VCA_TARGET_INFO struTargetInfo;//ĿϢ + NET_VCA_RECT struRect; //ͼ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + DWORD dwFacePicLen; //ͼijȣΪ0ʾûͼƬ0ʾͼƬ + DWORD dwBackgroundPicLen; //ͼijȣΪ0ʾûͼƬ0ʾͼƬ() + BYTE bySmart; //IDS豸0(Ĭֵ)Smart Functiom Return 1 + BYTE byAlarmEndMark;//0-1-ǣֶνIDֶʹãʾIDӦ±ҪṩNVRʹãжϱȡʶͼƬУߵͼƬ + BYTE byRepeatTimes; //ظ0- + BYTE byUploadEventDataType;//ͼƬݳʽ0-ݣ1-URL + NET_VCA_HUMAN_FEATURE struFeature; // + float fStayDuration; //ͣʱ(λ: ) + char sStorageIP[16]; //洢IPַ + WORD wStoragePort; //洢˿ں + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + /*ͼͼƬȼ0-͵,1-е,2-ߵ, + ץֻԭе + ԭеץʵ֣ĿȷһץлȡõͼЧһͼ֣ץֻѾץɵͼƬʹͼ㷨ͼۣҪϢзͳһı׼ͼƬЧ*/ + BYTE byFacePicQuality; + BYTE byUIDLen; // ϴıʶ + BYTE byLivenessDetectionStatus;// ״̬0-1-δ֪(ʧ)2-3-4-δ + /*ϢʶλǷNET_VCA_FACESNAP_ADDINFOṹ壩,0-޸Ϣ, 1-иϢ*/ + BYTE byAddInfo; + BYTE *pUIDBuffer; //ʶָ + //Ϣָ,ָNET_VCA_FACESNAP_ADDINFOṹ + BYTE *pAddInfoBuffer; + BYTE byTimeDiffFlag; /*ʱֶǷЧ 0-ʱЧ 1-ʱЧ */ + char cTimeDifferenceH; /*UTCʱСʱ-12 ... +14 +ʾ,byTimeDiffFlagΪ1ʱЧ*/ + char cTimeDifferenceM; /*UTCʱӣ-30, 30, 45 +ʾbyTimeDiffFlagΪ1ʱЧ*/ + BYTE byBrokenNetHttp; //־λ0-شݣ1-ش + BYTE* pBuffer1; //ͼͼƬ + BYTE* pBuffer2; //ͼͼƬݣͨұͼӿڿԻȡͼ +}NET_VCA_FACESNAP_RESULT, *LPNET_VCA_FACESNAP_RESULT; + +typedef struct tagNET_VCA_SUB_PROCIMG_V50 +{ + DWORD dwImageLen; //ͼƬݳ + DWORD dwFaceScore; //,0-100 + NET_VCA_RECT struVcaRect; //ͼ + NET_VCA_POINT struLeftEyePoint; //λ + NET_VCA_POINT struRightEyePoint; //λ + BYTE byDistance; //ۼ + BYTE bySex; + BYTE byAgeGroup; + BYTE byEyeGlass; + NET_VCA_RECT struPosRect; //λ + BYTE byRes[20]; // + BYTE *pImage; //ͼƬ +}NET_VCA_SUB_PROCIMG_V50, *LPNET_VCA_SUB_PROCIMG_V50; + +typedef struct tagNET_DVR_FACE_DETECTION +{ + DWORD dwSize; //ṹС + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + DWORD dwBackgroundPicLen; //ͼijȣΪ0ʾûͼƬ0ʾͼƬ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + NET_VCA_RECT struFacePic[MAX_FACE_PIC_NUM/*30*/];//ͼ + BYTE byFacePicNum;//ͼ + BYTE byUploadEventDataType;//ͼƬݳʽ0-ݣ1-URL + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byTimeDiffFlag; /*ʱֶǷЧ 0-ʱЧ 1-ʱЧ */ + char cTimeDifferenceH; /*UTCʱСʱ-12 ... +14 +ʾ,byTimeDiffFlagΪ1ʱЧ*/ + char cTimeDifferenceM; /*UTCʱӣ-30, 30, 45 +ʾbyTimeDiffFlagΪ1ʱЧ*/ + BYTE byRes[249]; + BYTE* pBackgroundPicpBuffer; //ͼͼƬ +}NET_DVR_FACE_DETECTION,*LPNET_DVR_FACE_DETECTION; + +typedef struct tagNET_DVR_UPGRADE_PARAM +{ + DWORD dwUpgradeType; + char *sFileName; + void *pInbuffer; + DWORD dwBufferLen; + char *pUnitIdList[64]; +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64)) + char *sCustomURL; +#else + char *sCustomURL; + BYTE byRes2[4]; +#endif + DWORD dwCustomURLLen; + BYTE byRes[100]; +}NET_DVR_UPGRADE_PARAM, *LPNET_DVR_UPGRADE_PARAM; + + +typedef struct tagNET_VCA_FD_PROCIMG_RESULT_V50 +{ + DWORD dwSize; //ṹС + DWORD dwImageId; //ͼID + BYTE byRes[20]; // + DWORD dwSubImageNum; //ͼ + NET_VCA_SUB_PROCIMG_V50 struProcImg[MAX_TARGET_NUM]; //ͼϢ +}NET_VCA_FD_PROCIMG_RESULT_V50, *LPNET_VCA_FD_PROCIMG_RESULT_V50; + +//齹 +typedef struct tagNET_DVR_DEFOCUS_ALARM +{ + DWORD dwSize; /*ṹ*/ + NET_VCA_DEV_INFO struDevInfo;/*豸Ϣ*/ + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byRes1[2]; //ֽ + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + BYTE byTimeDiffFlag; /*ʱֶǷЧ 0-ʱЧ 1-ʱЧ */ + char cTimeDifferenceH; /*UTCʱСʱ-12 ... +14 +ʾ,byTimeDiffFlagΪ1ʱЧ*/ + char cTimeDifferenceM; /*UTCʱӣ-30, 30, 45 +ʾbyTimeDiffFlagΪ1ʱЧ*/ + BYTE byRes[49]; // ֽ +}NET_DVR_DEFOCUS_ALARM, *LPNET_DVR_DEFOCUS_ALARM; + +// +typedef struct tagNET_DVR_DENSEFOGDETECTION_ALARM +{ + DWORD dwSize; /*ṹ*/ + NET_VCA_DEV_INFO struDevInfo;/*豸Ϣ*/ + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + BYTE byFogLevel; //ĵȼ0-~ 1-~ 2-~Ũ 3-Ũ + BYTE byRes[259]; // ֽ +}NET_DVR_DENSEFOGDETECTION_ALARM, *LPNET_DVR_DENSEFOGDETECTION_ALARM; + +typedef struct tagNET_DVR_AUDIOEXCEPTION_ALARM +{ + DWORD dwSize; /*ṹ*/ + BYTE byAlarmType;//ͣ1-Ƶ쳣2-Ƶͻ䣨ǿ3-ǿ4-Ƶʧ + BYTE byRes1; + WORD wAudioDecibel;//ǿȣƵͻʱõ + NET_VCA_DEV_INFO struDevInfo;/*豸Ϣ*/ + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byRes[62]; // ֽ +}NET_DVR_AUDIOEXCEPTION_ALARM, *LPNET_DVR_AUDIOEXCEPTION_ALARM; + +typedef struct tagNET_BUTTON_DOWN_EXCEPTION_ALARM +{ + DWORD dwSize; /*ṹ*/ + NET_VCA_DEV_INFO struDevInfo;/*豸Ϣ*/ + BYTE byRes[64]; // ֽ +}NET_BUTTON_DOWN_EXCEPTION_ALARM, *LPNET_BUTTON_DOWN_EXCEPTION_ALARM; + +typedef struct tagNET_VCA_FD_IMAGE_CFG +{ + DWORD dwWidth; //Ҷͼݿ + DWORD dwHeight; //Ҷͼ߶ + DWORD dwImageLen; //Ҷͼݳ + BYTE byRes[20]; // + BYTE *pImage; //Ҷͼ +}NET_VCA_FD_IMAGE_CFG, *LPNET_VCA_FD_IMAGE_CFG; + +typedef struct tagNET_VCA_FD_PROCIMG_CFG +{ + DWORD dwSize; //ṹС + BYTE byEnable; //Ƿ񼤻; + BYTE bySensitivity; //ȣ[0,5] + BYTE byRes1[22]; //ֽ + NET_VCA_SIZE_FILTER struSizeFilter; //ߴ + NET_VCA_POLYGON struPolygon; // + NET_VCA_FD_IMAGE_CFG struFDImage; //ͼƬϢ + BYTE byRes2[20]; // +}NET_VCA_FD_PROCIMG_CFG, *LPNET_VCA_FD_PROCIMG_CFG; + +typedef struct tagNET_VCA_SUB_PROCIMG +{ + DWORD dwImageLen; //ͼƬݳ + DWORD dwFaceScore; //,0-100 + NET_VCA_RECT struVcaRect; //ͼ + BYTE byRes[20]; // + BYTE *pImage; //ͼƬ +}NET_VCA_SUB_PROCIMG, *LPNET_VCA_SUB_PROCIMG; + +typedef struct tagNET_VCA_FD_PROCIMG_RESULT +{ + DWORD dwSize; //ṹС + DWORD dwImageId; //ͼID + BYTE byRes[20]; // + DWORD dwSubImageNum; //ͼ + NET_VCA_SUB_PROCIMG struProcImg[MAX_TARGET_NUM]; //ͼϢ +}NET_VCA_FD_PROCIMG_RESULT, *LPNET_VCA_FD_PROCIMG_RESULT; + +typedef struct tagNET_VCA_PICMODEL_RESULT +{ + DWORD dwImageLen; //ͼƬݳ + DWORD dwModelLen; //ģݳ + BYTE byRes[20]; // + BYTE *pImage; //ͼƬָ + BYTE *pModel; //ģָ +}NET_VCA_PICMODEL_RESULT, *LPNET_VCA_PICMODEL_RESULT; + +typedef struct tagNET_VCA_REGISTER_PIC +{ + DWORD dwImageID; //ͼID + DWORD dwFaceScore; //,0-100 + NET_VCA_RECT struVcaRect; //ͼ + BYTE byRes[20]; // +}NET_VCA_REGISTER_PIC, *LPNET_VCA_REGISTER_PIC; + +#define MAX_HUMAN_PICTURE_NUM 10 //Ƭ +#define MAX_HUMAN_BIRTHDATE_LEN 10 //³ + +typedef struct tagNET_DVR_AREAINFOCFG +{ + WORD wNationalityID; // + WORD wProvinceID; //ʡ + WORD wCityID; // + WORD wCountyID; // + /* + if (dwCode != 0) dwCode ֵ ȫʡݳб.txt + else dwCode ֵ PROVINCE_CITY_IDX + */ + DWORD dwCode; +}NET_DVR_AREAINFOCFG, *LPNET_DVR_AREAINFOCFG; + +typedef struct tagNET_VCA_HUMAN_ATTRIBUTE +{ + BYTE bySex; //Ա0-У1-Ů0xff-δ֪ + BYTE byCertificateType; //֤ͣ0-֤1-֤2-֤3-գ4-0xff-δ֪ + BYTE byBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //£磺201106 + BYTE byName[NAME_LEN]; // + NET_DVR_AREAINFOCFG struNativePlace; // + BYTE byCertificateNumber[NAME_LEN]; //֤ + /* + dwPersonInfoExtendLen && pPersonInfoExtend ӦURL(/ISAPI/System/Video/inputs/channels//faceContrast/personInfoExtend)ʾ PersonInfoExtendList XML Block + ڣƽ̨Ĺʱ򣬵pictureݵԶϢ豸ƥ䱨ЯΪƥϢһϴƽ̨Ĺƥ䣻 + */ + DWORD dwPersonInfoExtendLen;// ԱǩϢչ + BYTE *pPersonInfoExtend; //ԱǩϢչϢ + BYTE byAgeGroup;//ΣHUMAN_AGE_GROUP_ENUM紫0xffʾδ֪ + BYTE byRes2[3]; //ֽ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + BYTE* pThermalData;//ȳͼƬָ +#else + BYTE* pThermalData;//ȳͼƬָ + BYTE byRes3[4];//ֽ +#endif +}NET_VCA_HUMAN_ATTRIBUTE, *LPNET_VCA_HUMAN_ATTRIBUTE; + +typedef struct tagNET_VCA_HUMANATTRIBUTE_COND +{ + BYTE bySex; //Ա0-ã1-У2-Ů + BYTE byCertificateType; //֤ͣ0-ã1-֤2-֤ + BYTE byStartBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //ʼ£磺201106 + BYTE byEndBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //ֹ£201106 + BYTE byName[NAME_LEN]; // + NET_DVR_AREAINFOCFG struNativePlace; // + BYTE byCertificateNumber[NAME_LEN]; //֤ + BYTE byRes[20]; +}NET_VCA_HUMANATTRIBUTE_COND, *LPNET_VCA_HUMANATTRIBUTE_COND; + + +typedef struct tagNET_VCA_BLOCKLIST_INFO +{ + DWORD dwSize; //ṹС + DWORD dwRegisterID; //עIDţֻ + DWORD dwGroupNo; // + BYTE byType; //־0-ȫ1-2-ֹ + BYTE byLevel; //ֹȼ0-ȫ1-ͣ2-У3- + BYTE byRes1[2]; // + NET_VCA_HUMAN_ATTRIBUTE struAttribute; //ԱϢ + BYTE byRemark[NAME_LEN]; //עϢ + DWORD dwFDDescriptionLen;//ݳ + BYTE *pFDDescriptionBuffer;//ָ + DWORD dwFCAdditionInfoLen;//ץĿ⸽Ϣ + BYTE *pFCAdditionInfoBuffer;//ץĿ⸽Ϣָ루FCAdditionInfoаPTZꡢGPSϢ + DWORD dwThermalDataLen;//ȳͼƬȣȶ¼ϱ֧ +}NET_VCA_BLOCKLIST_INFO, *LPNET_VCA_BLOCKLIST_INFO; + +typedef struct tagNET_VCA_BLOCKLIST_PARA +{ + DWORD dwSize; //ṹС + NET_VCA_BLOCKLIST_INFO struBlockListInfo; //ֹ + DWORD dwRegisterPicNum; //ֹͼ + NET_VCA_PICMODEL_RESULT struRegisterPic[MAX_HUMAN_PICTURE_NUM]; //ֹͼƬϢ + BYTE byRes[40]; // +}NET_VCA_BLOCKLIST_PARA, *LPNET_VCA_BLOCKLIST_PARA; + +typedef struct tagNET_VCA_BLOCKLIST_COND +{ + LONG lChannel; //ͨ + DWORD dwGroupNo; // + BYTE byType; //־0-ȫ1-2-ֹ + BYTE byLevel; //ֹȼ0-ȫ1-ͣ2-У3- + BYTE byRes1[2]; // + NET_VCA_HUMAN_ATTRIBUTE struAttribute; //ԱϢ + BYTE byRes[20]; +}NET_VCA_BLOCKLIST_COND, *LPNET_VCA_BLOCKLIST_COND; + +typedef struct tagNET_VCA_BLOCKLIST_PIC +{ + DWORD dwSize; //ṹС + DWORD dwFacePicNum; //ͼ + BYTE byRes[20]; // + NET_VCA_PICMODEL_RESULT struBlockListPic[MAX_HUMAN_PICTURE_NUM]; //ƬϢ +}NET_VCA_BLOCKLIST_PIC, *LPNET_VCA_BLOCKLIST_PIC; + +typedef struct tagNET_VCA_FIND_PICTURECOND +{ + LONG lChannel;//ͨ + NET_DVR_TIME struStartTime;//ʼʱ + NET_DVR_TIME struStopTime;//ʱ + BYTE byRes[12]; // +}NET_VCA_FIND_PICTURECOND, *LPNET_VCA_FIND_PICTURECOND; + +#define MAX_FACE_PIC_LEN 6144 //ͼƬݳ +typedef struct tagNET_VCA_SUB_SNAPPIC_DATA +{ + DWORD dwFacePicID; //ͼID + DWORD dwFacePicLen; //ͼݳ + NET_DVR_TIME struSnapTime; //ץʱ + DWORD dwSimilarity; //ƶ + BYTE byRes[16]; // + char sPicBuf[MAX_FACE_PIC_LEN]; //ͼƬ +}NET_VCA_SUB_SNAPPIC_DATA, *LPNET_VCA_SUB_SNAPPIC_DATA; + +typedef struct tagNET_VCA_ADVANCE_FIND +{ + DWORD dwFacePicID; //ͼƬID + BYTE byRes[36]; +}NET_VCA_ADVANCE_FIND, *LPNET_VCA_ADVANCE_FIND; + +typedef struct tagNET_VCA_NORMAL_FIND +{ + DWORD dwImageID; //ͼID + DWORD dwFaceScore; // + NET_VCA_RECT struVcaRect; //ͼ + BYTE byRes[20]; +}NET_VCA_NORMAL_FIND, *LPNET_VCA_NORMAL_FIND; + +typedef union tagNET_VCA_FIND_SNAPPIC_UNION +{ + NET_VCA_NORMAL_FIND struNormalFind; //ͨ + NET_VCA_ADVANCE_FIND struAdvanceFind; //߼ +}NET_VCA_FIND_SNAPPIC_UNION, *LPNET_VCA_FIND_SNAPPIC_UNION; + +typedef enum _VCA_FIND_SNAPPIC_TYPE_ +{ + VCA_NORMAL_FIND = 0x00000000, //ͨ + VCA_ADVANCE_FIND = 0x00000001 //߼ +}VCA_FIND_SNAPPIC_TYPE; + +typedef struct tagNET_VCA_FIND_PICTURECOND_ADVANCE +{ + LONG lChannel;//ͨ + NET_DVR_TIME struStartTime;//ʼʱ + NET_DVR_TIME struStopTime;//ʱ + BYTE byThreshold; //ֵ0-100 + BYTE byRes[23]; // + VCA_FIND_SNAPPIC_TYPE dwFindType;//ͣVCA_FIND_SNAPPIC_TYPE + NET_VCA_FIND_SNAPPIC_UNION uFindParam; // +}NET_VCA_FIND_PICTURECOND_ADVANCE, *LPNET_VCA_FIND_PICTURECOND_ADVANCE; + +typedef struct tagNET_VCA_FACESNAP_INFO_ALARM +{ + DWORD dwRelativeTime; // ʱ + DWORD dwAbsTime; // ʱ + DWORD dwSnapFacePicID; //ץͼID + DWORD dwSnapFacePicLen; //ץͼijȣΪ0ʾûͼƬ0ʾͼƬ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + BYTE byFaceScore; //ָ֣ͼ,0-100 + BYTE bySex;//Ա0-δ֪1-У2-Ů,0xff-㷨֧֣ûʶ + BYTE byGlasses;//Ƿ۾0-δ֪1-ǣ2-,3-ī, 0xff-㷨֧֣ûʶ + /* + ʶηΧ[byAge-byAgeDeviation,byAge+byAgeDeviation] + */ + BYTE byAge;//,0-ʾδ֪㷨֧֣,0xff-㷨֧֣ûʶ + BYTE byAgeDeviation;//ֵ + BYTE byAgeGroup;//ΣHUMAN_AGE_GROUP_ENUM0xffʾδ֪ + /*ͼͼƬȼ0-͵,1-е,2-ߵ, + 㷨ͼͼƬ,̬ͨȡڵȿӰʶܵۺĽ*/ + BYTE byFacePicQuality; + BYTE byRes; + DWORD dwUIDLen; // ϴıʶ + BYTE *pUIDBuffer; //ʶָ + float fStayDuration; //ͣʱ(λ: ) + BYTE *pBuffer1; //ץͼͼƬ +}NET_VCA_FACESNAP_INFO_ALARM, *LPNET_VCA_FACESNAP_INFO_ALARM; + +typedef struct tagNET_VCA_BLOCKLIST_INFO_ALARM +{ + NET_VCA_BLOCKLIST_INFO struBlockListInfo; //ֹϢ + DWORD dwBlockListPicLen; //ֹͼijȣΪ0ʾûͼƬ0ʾͼƬ + DWORD dwFDIDLen;// ID + BYTE *pFDID; //Idָ + DWORD dwPIDLen;// ͼƬID + BYTE *pPID; //ͼƬIDָ + WORD wThresholdValue; //ֵ[0,100] + BYTE byIsNoSaveFDPicture;//0-ͼƬ,1-ͼƬ, ˵ͼƬ߽ģʱԭͼʱ,ֶη1,ʱͼƬٷ + BYTE byRealTimeContrast;//Ƿʵʱ 0-ʵʱ 1-ʵʱ + BYTE *pBuffer1; //ֹͼͼƬ +}NET_VCA_BLOCKLIST_INFO_ALARM, *LPNET_VCA_BLOCKLIST_INFO_ALARM; + +typedef struct tagNET_VCA_FACESNAP_MATCH_ALARM +{ + DWORD dwSize; // ṹС + float fSimilarity; //ƶȣ[0.001,1] + NET_VCA_FACESNAP_INFO_ALARM struSnapInfo; //ץϢ + NET_VCA_BLOCKLIST_INFO_ALARM struBlockListInfo; //ֹϢ + char sStorageIP[16]; //洢IPַ + WORD wStoragePort; //洢˿ں + BYTE byMatchPicNum; //ƥͼƬ0-豸ֵĬ0豸ֵΪ0ʱʾûƥͼƬϢ + BYTE byPicTransType;//ͼƬݴ䷽ʽ: 0-ƣ1-url + DWORD dwSnapPicLen;//豸ʶץͼƬ + BYTE *pSnapPicBuffer;//豸ʶץͼƬָ + NET_VCA_RECT struRegion;//Ŀ߽豸ʶץͼƬУͼ + DWORD dwModelDataLen;//ģݳ + BYTE *pModelDataBuffer;// ģָ + BYTE byModelingStatus;// ģ״̬ + BYTE byLivenessDetectionStatus;//״̬0-1-δ֪ʧܣ2-3-4-δ + char cTimeDifferenceH; /*UTCʱСʱ-12 ... +14 +ʾ,0xffЧ*/ + char cTimeDifferenceM; /*UTCʱӣ-30, 30, 45 +ʾ0xffЧ*/ + BYTE byMask; //ץͼǷ֣0-1-δ֪2-֣3- + BYTE bySmile; //ץͼǷ΢Ц0-1-δ֪2-΢Ц3-΢Ц + BYTE byContrastStatus; //ȶԽ0-1-ȶԳɹ2-ȶʧ + BYTE byBrokenNetHttp; //־λ0-شݣ1-ش +}NET_VCA_FACESNAP_MATCH_ALARM, *LPNET_VCA_FACESNAP_MATCH_ALARM; + +typedef struct tagNET_VCA_BLOCKLIST_INFO_ALARM_LOG +{ + NET_VCA_BLOCKLIST_INFO struBlockListInfo; //ֹϢ + DWORD dwBlockListPicID; //ֹͼIDڲͼƬ + BYTE byRes[20]; // ֽ +}NET_VCA_BLOCKLIST_INFO_ALARM_LOG, *LPNET_VCA_BLOCKLIST_INFO_ALARM_LOG; + +typedef struct tagNET_VCA_FACESNAP_INFO_ALARM_LOG +{ + DWORD dwRelativeTime; // ʱ + DWORD dwAbsTime; // ʱ + DWORD dwSnapFacePicID; //ץͼID + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + BYTE byRes[20]; // ֽ +}NET_VCA_FACESNAP_INFO_ALARM_LOG, *LPNET_VCA_FACESNAP_INFO_ALARM_LOG; + +typedef struct tagNET_VCA_FACESNAP_MATCH_ALARM_LOG +{ + DWORD dwSize; // ṹС + float fSimilarity; //ƶȣ[0.001,1] + NET_VCA_FACESNAP_INFO_ALARM_LOG struSnapInfoLog; //ץϢ + NET_VCA_BLOCKLIST_INFO_ALARM_LOG struBlockListInfoLog; //ֹϢ + BYTE byRes[60]; // ֽ +}NET_VCA_FACESNAP_MATCH_ALARM_LOG, *LPNET_VCA_FACESNAP_MATCH_ALARM_LOG; + +typedef struct tagNET_VCA_FACEMATCH_PICCOND +{ + DWORD dwSize; // ṹС + DWORD dwSnapFaceID; //ץͼID + DWORD dwBlockListID; //ƥĽֹID + DWORD dwBlockListFaceID; //ȶԵĽֹͼID + BYTE byRes[20]; // ֽ +}NET_VCA_FACEMATCH_PICCOND, *LPNET_VCA_FACEMATCH_PICCOND; + +typedef struct tagNET_VCA_FACEMATCH_PICTURE +{ + DWORD dwSize; // ṹС + DWORD dwSnapFaceLen; //ץͼ + DWORD dwBlockListFaceLen; //ȶԵĽֹͼ + BYTE byRes[20]; //ֽ + BYTE *pSnapFace; //ץͼͼƬ + BYTE *pBlockListFace; //ȶԵĽֹͼ +}NET_VCA_FACEMATCH_PICTURE, *LPNET_VCA_FACEMATCH_PICTURE; + +typedef struct tagNET_VCA_BLOCKLIST_FASTREGISTER_PARA +{ + DWORD dwSize; //ṹС + NET_VCA_BLOCKLIST_INFO struBlockListInfo; //ֹ + DWORD dwImageLen; //ͼݳ + BYTE byRes[124]; // + BYTE *pImage; //ͼ +}NET_VCA_BLOCKLIST_FASTREGISTER_PARA, *LPNET_VCA_BLOCKLIST_FASTREGISTER_PARA; + +/*******PJ01C20170209084¼NVSܿĿר******/ +//֡ͳƽϴ +typedef struct tagNET_DVR_FRAMES_PEOPLE_COUNTING +{ + DWORD dwSize; // ṹС + NET_VCA_DEV_INFO struDevInfo;//ǰ豸Ϣ + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; // ʱ + DWORD dwPeopleCountingNum; //еͳ + DWORD dwPicLen; //豸ʶץĵȫͼƬݳ + BYTE *pPicBuffer; //豸ʶץĵȫͼƬָ + BYTE byRes[512]; // ֽ +}NET_DVR_FRAMES_PEOPLE_COUNTING, *LPNET_DVR_FRAMES_PEOPLE_COUNTING; +/*******PJ01C20170209084¼NVSܿĿר******/ + +// +typedef struct tagNET_VCA_SINGLE_PATH +{ + BYTE byActive; // Ƿ,0-,1- + BYTE byType; //0-洢ץģ1-洢ֹȶԱ2-洢ץĺͽֹȶԱ0xff-Ч + BYTE bySaveAlarmPic; //ǷڱıͼƬ0-1- + BYTE byRes1[5]; // + DWORD dwDiskDriver; //̷ţ0ʼ + DWORD dwLeftSpace; //ԤλΪG + BYTE byRes2[8]; // +}NET_VCA_SINGLE_PATH, *LPNET_VCA_SINGLE_PATH; + +//洢· +typedef struct tagNET_VCA_SAVE_PATH_CFG +{ + DWORD dwSize; //ṹС + NET_VCA_SINGLE_PATH struPathInfo[MAX_DISKNUM_V30]; // + BYTE byRes[40]; // +}NET_VCA_SAVE_PATH_CFG, *LPNET_VCA_SAVE_PATH_CFG; + +typedef struct tagNET_DVR_DEV_ACCESS_CFG +{ + DWORD dwSize; + NET_DVR_IPADDR struIP; //豸IPַ + WORD wDevicePort; //˿ں + BYTE byEnable; //Ƿã0-1- + BYTE byRes1; // + BYTE sUserName[NAME_LEN]; //豸ĵ¼ʺ + BYTE sPassword[PASSWD_LEN]; //豸ĵ¼ + BYTE byRes2[60]; +}NET_DVR_DEV_ACCESS_CFG,*LPNET_DVR_DEV_ACCESS_CFG; + +/********************************ʶ end****************************/ +//ֱ +#define MAKE_RESOLUTION(_interlace_, _width_, _height_, _fps_) \ + (((_interlace_)<<28) \ + |((((_width_)>>3)&0x1ff)<<19)| \ + ((((_height_)>>1)&0x7ff)<<8)| \ +((_fps_)&0xff)) +#define GET_RES_INTERLACE(_res_) \ +(((_res_)>>28)&0x1) +#define GET_RES_WIDTH(_res_) \ +((((_res_)>>19)&0x1ff)<<3) +#define GET_RES_HEIGHT(_res_) \ +((((_res_)>>8)&0x7ff)<<1) +#define GET_RES_FPS(_res_) \ +((_res_)&0xff) + +#define NOT_AVALIABLE MAKE_RESOLUTION (0,0,0,0) +#define SVGA_60HZ MAKE_RESOLUTION(0, 800, 600, 60) +#define SVGA_75HZ MAKE_RESOLUTION(0, 800, 600, 75) +#define XGA_60HZ MAKE_RESOLUTION(0, 1024, 768, 60) +#define XGA_75HZ MAKE_RESOLUTION(0, 1024, 768, 75) +#define SXGA_60HZ MAKE_RESOLUTION(0, 1280, 1024, 60) +#define SXGA2_60HZ MAKE_RESOLUTION(0, 1280, 960, 60) +#define _720P_24HZ MAKE_RESOLUTION(0, 1280, 720, 24) +#define _720P_25HZ MAKE_RESOLUTION(0, 1280, 720, 25) +#define _720P_30HZ MAKE_RESOLUTION(0, 1280, 720, 30) +#define _720P_60HZ MAKE_RESOLUTION(0, 1280, 720, 60) +#define _720P_50HZ MAKE_RESOLUTION(0, 1280, 720, 50) +#define _1080I_60HZ MAKE_RESOLUTION(1, 1920, 1080, 60) +#define _1080I_50HZ MAKE_RESOLUTION(1, 1920, 1080, 50) +#define _1080P_60HZ MAKE_RESOLUTION(0, 1920, 1080, 60) +#define _1080P_50HZ MAKE_RESOLUTION(0, 1920, 1080, 50) +#define _1080P_30HZ MAKE_RESOLUTION(0, 1920, 1080, 30) +#define _1080P_25HZ MAKE_RESOLUTION(0, 1920, 1080, 25) +#define _1080P_24HZ MAKE_RESOLUTION(0, 1920, 1080, 24) +#define UXGA_60HZ MAKE_RESOLUTION(0, 1600, 1200, 60) +#define UXGA_30HZ MAKE_RESOLUTION(0, 1600, 1200, 30) +#define WSXGA_60HZ MAKE_RESOLUTION(0, 1680, 1050, 60) +#define WUXGA_60HZ MAKE_RESOLUTION(0, 1920, 1200, 60) +#define WUXGA_30HZ MAKE_RESOLUTION(0, 1920, 1200, 30) +#define WXGA_60HZ MAKE_RESOLUTION(0, 1360, 768, 60) +#define SXGA_PLUS_60HZ MAKE_RESOLUTION(0, 1400, 1050, 60) +#define VGA_MODE_3840x2160_30HZ MAKE_RESOLUTION(0, 3840, 2160, 30) +#define VGA_MODE_3840x2160_60HZ MAKE_RESOLUTION(0, 3840, 2160, 60) + + + +//ʾָͨģʽ +#define MAX_WINDOWS_NUM 12 //ָģʽ +#define MAX_SUPPORT_RES 32 +#define MAX_DISPNUM_V41 32 +#define MAX_SDI_RES 16 //SDIʾֱַ֧ͨ + +typedef struct tagNET_DVR_DISPWINDOWMODE +{ + BYTE byDispChanType;//ʾͨͣ0-BNC, 1-VGA, 2-HDMI, 3-DVI 4-SDI + BYTE byDispChanSeq;//ʾͨ,1ʼVGAʾڼVGA + BYTE byRes[2]; + BYTE byDispMode[MAX_WINDOWS_NUM/*12*/]; +}NET_DVR_DISPWINDOWMODE, *LPNET_DVR_DISPWINDOWMODE; + +typedef struct tagNET_DVR_DISPINFO +{ + BYTE byChanNums;//ͨ + BYTE byStartChan;//ʼͨ + BYTE byRes[2]; + DWORD dwSupportResolution[MAX_SUPPORT_RES/*32*/];//ֱַ֧ +}NET_DVR_DISPINFO, *LPNET_DVR_DISPINFO; + +//ƴϢ +typedef struct tagNET_DVR_SCREENINFO +{ + BYTE bySupportBigScreenNums;//ƴ + BYTE byStartBigScreenNum;//ƴʼ + BYTE byMaxScreenX;//ƴģʽ + BYTE byMaxScreenY; + BYTE byRes[8]; +}NET_DVR_SCREENINFO, *LPNET_DVR_SCREENINFO; + +typedef struct tagNET_DVR_SDI_INFO +{ + BYTE byChanNums;//ͨ + BYTE byStartChan;//ʼͨ + BYTE byRes[2]; + DWORD dwSupportResolution[MAX_SDI_RES/*16*/];//ֱַ֧ +}NET_DVR_SDI_INFO,*LPNET_DVR_SDI_INFO; + +typedef struct tagNET_DVR_MATRIX_ABILITY_V41 +{ + DWORD dwSize; + BYTE byDspNums;//DSP + BYTE byDecChanNums;//ͨ + BYTE byStartChan;//ʼͨ + BYTE byRes1[5]; + NET_DVR_DISPINFO struVgaInfo;//VGAʾͨϢ + NET_DVR_DISPINFO struBncInfo;//BNCʾͨϢ + NET_DVR_DISPINFO struHdmiInfo;//HDMIʾͨϢ + NET_DVR_DISPINFO struDviInfo;//DVIʾͨϢ + NET_DVR_DISPWINDOWMODE struDispMode[MAX_DISPNUM_V41/*32*/]; + NET_DVR_SCREENINFO struBigScreenInfo; + BYTE bySupportAutoReboot; //Ƿ֧Զ0-֧֣1-֧ + BYTE byRes2[3]; + NET_DVR_SDI_INFO struSDIInfo;//SDIʾͨϢ + BYTE byRes3[48]; +} NET_DVR_MATRIX_ABILITY_V41, *LPNET_DVR_MATRIX_ABILITY_V41; + +//ʾͨ +#define MAX_WINDOWS 16 +#define MAX_WINDOWS_V41 36 + +#define STARTDISPCHAN_VGA 1 +#define STARTDISPCHAN_BNC 9 +#define STARTDISPCHAN_HDMI 25 +#define STARTDISPCHAN_DVI 29 + +typedef union tagNET_DVR_VIDEO_PLATFORM +{ + BYTE byRes[160]; + struct + { + /*ӴڶӦͨӦĽϵͳIJλ(Ƶۺƽ̨нϵͳЧ)*/ + //ۺƽ̨֧ԶԴ˲Ҫ + BYTE byJoinDecoderId[MAX_WINDOWS_V41]; + //ʾƵֱʣ1-D1,2-720P,3-1080P豸Ҫݴ˷ֱʽнͨķ䣬1ó1080P豸4ͨ˽ͨ + BYTE byDecResolution[MAX_WINDOWS_V41]; + NET_DVR_RECTCFG struPosition; //ʾͨڵǽλ + BYTE byRes[80]; + }struVideoPlatform; + struct + { + BYTE byRes[160]; + }struNotVideoPlatform; +}NET_DVR_VIDEO_PLATFORM, LPNET_DVR_VIDEO_PLATFORM; + + +typedef struct tagNET_DVR_MATRIX_VOUTCFG +{ + DWORD dwSize; + BYTE byAudio; /*ƵǷ*/ + BYTE byAudioWindowIdx; /*ƵӴ*/ + BYTE byDispChanType; /*ʾͨͣ0-BNC1-VGA2-HDMI3-DVI4-YPbPr(뿨DECODER_SERVERר)*/ + BYTE byVedioFormat; /*1:NTSC,2:PAL0-NULL*/ + DWORD dwResolution;//ֱ + DWORD dwWindowMode; /*ģʽȡ*/ + BYTE byJoinDecChan[MAX_WINDOWS_V41];/*ӴڹĽͨ,豸ֽ֧ԴԶʱ˲*/ + BYTE byEnlargeStatus; /*ǷڷŴ״̬0Ŵ1Ŵ*/ + BYTE byEnlargeSubWindowIndex;//ŴӴں + BYTE byScale; /*ʾģʽ0---ʵʾ1---ʾ( BNC )*/ + BYTE byUnionType;/*ֹ,0-Ƶۺƽ̨ڲʾͨã1-ʾͨ*/ + NET_DVR_VIDEO_PLATFORM struDiff; + DWORD dwDispChanNum; //ʾţ˲ȫȡʱЧ + WORD wLEDWidth; //LEDֱʿ0ΪЧ + WORD wLEDHeight; //LEDֱʸߣ0ΪЧ + BYTE byEnableVideoEffect; //ʾЧʹܣ 0-ʹܣ !0-ʹ + BYTE byRes[3]; //ֶ + NET_DVR_VIDEOEFFECT struVideoEffect; //ʾЧ + BYTE byRes2[60]; +}NET_DVR_MATRIX_VOUTCFG,*LPNET_DVR_MATRIX_VOUTCFG; + +/*豸״̬*/ +typedef struct tagNET_DVR_DISP_CHAN_STATUS_V41 +{ + BYTE byDispStatus; /*ʾ״̬0δʾ1ʾ*/ + BYTE byBVGA; /*0-BNC1-VGA 2-HDMI3-DVI4-SDI 0xff-Ч*/ + BYTE byVideoFormat; /*Ƶʽ1:NTSC,2:PAL,0-NON*/ + BYTE byWindowMode; /*ģʽ*/ + BYTE byJoinDecChan[MAX_WINDOWS_V41]; /*ӻĽͨ*/ + BYTE byFpsDisp[MAX_WINDOWS_V41]; /*ÿӻʾ֡*/ + BYTE byScreenMode; /*Ļģʽ0-ͨ 1-*/ + BYTE byRes1[3]; + DWORD dwDispChan; /*ȡȫʾͨ״̬ʱЧʱ0*/ + BYTE byRes2[24]; +}NET_DVR_DISP_CHAN_STATUS_V41, *LPNET_DVR_DISP_CHAN_STATUS_V41; + +/*豸״̬*/ +typedef struct tagNET_DVR_DECODER_WORK_STATUS_V41 +{ + DWORD dwSize; + NET_DVR_MATRIX_CHAN_STATUS struDecChanStatus[32]; /*ͨ״̬*/ + /*ʾͨ״̬*/ + NET_DVR_DISP_CHAN_STATUS_V41 struDispChanStatus[MAX_DISPNUM_V41/*32*/]; + BYTE byAlarmInStatus[32]; /*״̬*/ + BYTE byAlarmOutStatus[32]; /*״̬*/ + BYTE byAudioInChanStatus; /*Խ״̬*/ + BYTE byRes[127]; +}NET_DVR_DECODER_WORK_STATUS_V41,*LPNET_DVR_DECODER_WORK_STATUS_V41; +/*******************************ļط-Զ̻ط*******************************/ +typedef struct tagNET_DVR_MATRIX_DEC_REMOTE_PLAY_V41 +{ + DWORD dwSize; + NET_DVR_IPADDR struIP; /* DVR IPַ */ + WORD wDVRPort; /* ˿ں */ + BYTE byChannel; /* ͨ */ + BYTE byReserve; + BYTE sUserName[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + DWORD dwPlayMode; /* 0ļ 1ʱ*/ + NET_DVR_TIME StartTime; + NET_DVR_TIME StopTime; + char sFileName[128]; + BYTE byRes[64]; /**/ +}NET_DVR_MATRIX_DEC_REMOTE_PLAY_V41, *LPNET_DVR_MATRIX_DEC_REMOTE_PLAY_V41; + + +#define MAX_BIGSCREENNUM_SCENE 100 +#define MAX_LAYERNUMS 32 + +//ʾͨýṹ +typedef struct tagNET_DVR_RECTCFG_SCENE +{ + WORD wXCoordinate; /*ϽʼX*/ + WORD wYCoordinate; /*ϽY*/ + WORD wWidth; /*ο*/ + WORD wHeight; /*θ߶*/ +}NET_DVR_RECTCFG_SCENE, *LPNET_DVR_RECTCFGSCENE; + +typedef struct tagNET_DVR_SCENEDISPCFG +{ + BYTE byEnable;//Ƿã0-ã1- + BYTE bySoltNum;//λ + BYTE byRes1[2]; + BYTE byDispChanNum; + BYTE byAudio; /*ƵǷ,0-1-*/ + BYTE byAudioWindowIdx; /*ƵӴ*/ + BYTE byVedioFormat; /*1:NTSC,2:PAL0-NULL*/ + BYTE byWindowMode; /*ģʽȡ*/ + BYTE byEnlargeStatus; /*ǷڷŴ״̬0Ŵ1Ŵ*/ + BYTE byEnlargeSubWindowIndex;//ŴӴں + BYTE byScale; /*ʾģʽ0-ʵʾ1-ʾ( BNC )*/ + DWORD dwResolution;//ֱ + BYTE byJoinDecChan[MAX_WINDOWS_V41];/*ӴڹĽͨ*/ + BYTE byJoinDecoderId[MAX_WINDOWS_V41];/*λ*/ + //ʾƵֱʣ1-D1,2-720P,3-1080P豸Ҫݴ//ֱʽнͨķ䣬1ó1080P豸4ͨ˽ͨ + BYTE byDecResolution[MAX_WINDOWS_V41]; + BYTE byRow;//ڵе + BYTE byColumn;//ڵе + BYTE byRes2[5]; + NET_DVR_RECTCFG struDisp; //ǽʾλ +} NET_DVR_SCENEDISPCFG,*LPNET_DVR_SCENEDISPCFG; + +typedef struct tagDEV_CHAN_INFO_SCENE +{ + NET_DVR_IPADDR struIP; /* DVR IPַ */ + WORD wDVRPort; /* ˿ں */ + BYTE byChannel; /* ͨţ9000豸IPC룬ͨŴ33ʼ */ + BYTE byTransProtocol; /* Э0-TCP1-UDP 2-MCAST3-RTP*/ + BYTE byTransMode; /* ģʽ 0 1*/ + BYTE byFactoryType; /*ǰ豸*/ + BYTE byDeviceType; //豸ͣ1-IPC2- ENCODER + BYTE byRes[5]; + BYTE sUserName[NAME_LEN]; /* ½ʺ */ + BYTE sPassword[PASSWD_LEN]; /* */ +} NET_DVR_DEV_CHAN_INFO_SCENE,*LPNET_DVR_DEV_CHAN_INFO_SCENE; + +/*ý*/ +typedef struct tagSTREAM_MEDIA_SERVER_CFG_SCENE +{ + BYTE byValid; /*Ƿýȡ,0ʾЧ*/ + BYTE byRes1[3]; + NET_DVR_IPADDR struDevIP; /*ýַ*/ + WORD wDevPort; /*ý˿*/ + BYTE byTransmitType; /*Э0-TCP1-UDP */ + BYTE byRes2[5]; +}NET_DVR_STREAM_MEDIA_SERVER_CFG_SCENE,*LPNET_DVR_STREAM_MEDIA_SERVER_CFG_SCENE; + +typedef struct tagPU_STREAM_CFG_SCENE +{ + NET_DVR_STREAM_MEDIA_SERVER_CFG_SCENE streamMediaServerCfg; + NET_DVR_DEV_CHAN_INFO_SCENE struDevChanInfo; +}NET_DVR_PU_STREAM_CFG_SCENE,*LPNET_DVR_PU_STREAM_CFG_SCENE; + +typedef struct tagNET_DVR_CYC_SUR_CHAN_ELE_SCENE +{ + BYTE byEnable; /* Ƿ 0 1*/ + BYTE byRes[3]; + NET_DVR_STREAM_MEDIA_SERVER_CFG_SCENE struStreamMediaSvrCfg; + NET_DVR_DEV_CHAN_INFO_SCENE struDecChanInfo; /*ѲͨϢ*/ +}NET_DVR_CYC_SUR_CHAN_ELE_SCENE,*LPNET_DVR_CYC_SUR_CHAN_ELE_SCENE; + +//Ѳṹ +typedef struct tagNET_DVR_MATRIX_LOOP_DECINFO_SCENE +{ + WORD wPoolTime; /*ѯ*/ + BYTE byRes1[2]; + NET_DVR_CYC_SUR_CHAN_ELE_SCENE struChanArray[MAX_CYCLE_CHAN/*16*/]; + BYTE byRes2[4]; +} NET_DVR_MATRIX_LOOP_DECINFO_SCENE,*LPNET_DVR_MATRIX_LOOP_DECINFO_SCENE; + +//ͨýṹ +typedef struct tagNET_DVR_DECODECHANCFG_SCENE/*struct size : 2064*/ +{ + BYTE byDecodeEnable;//ͣ־0-ֹͣ1-ö̬룬2-Ѳ + BYTE bySlotNum;//λ + BYTE byDecChan; + BYTE byJointAllDecodeChan; //Ƿܽͨ 0-1- + BYTE byJointSlotNum; //IJλţܽIJλţ + BYTE byJointChanNum; //ͨţܽͨţ + BYTE byRes[2]; + union + { + NET_DVR_PU_STREAM_CFG_SCENE struSceneDynamicDecCfg; + NET_DVR_MATRIX_LOOP_DECINFO_SCENE struSceneCycDecCfg; + } struDecCfg; +}NET_DVR_DECODECHANCFG_SCENE,*LPNET_DVR_DECODECHANCFG_SCENE; + +typedef struct tagNET_DVR_BIGSCREENCFG_SCENE +{ + BYTE byAllValid; /*ʹܱ־ */ + BYTE byAssociateBaseMap;//ĵͼţ0 + BYTE byEnableSpartan;//ʹܣ1-0- + BYTE byRes; + NET_DVR_WINCFG struWinCfg[MAX_LAYERNUMS]; + NET_DVR_BIGSCREENCFG struBigScreen; +}NET_DVR_BIGSCREENCFG_SCENE, *LPNET_DVR_BIGSCREENCFG_SCENE; + +typedef struct tagNET_DVR_MATRIX_SCENECFG +{ + DWORD dwSize; + BYTE sSceneName[NAME_LEN]; + BYTE byBigScreenNums;//ĸֵͨȡ + BYTE byRes1[3]; + WORD wDecChanNums;//нͨĸ + WORD wDispChanNums;//ʾͨĸ + BYTE byRes2[12]; + BYTE *pBigScreenBuffer;//û, byBigScreenNumssizeof(NET_DVR_BIGSCREENCFG_SCENE) + BYTE *pDecChanBuffer;//ͨû, wDecChanNumssizeof(NET_DVR_DECODECHANCFG_SCENE) + BYTE *pDispChanBuffer;//ʾͨû, wDispChanNumssizeof(NET_DVR_SCENEDISPCFG) +}NET_DVR_MATRIX_SCENECFG, *LPNET_DVR_MATRIX_SCENECFG; + + + +typedef struct tagNET_DVR_BIGSCREENASSOCIATECFG +{ + DWORD dwSize; + BYTE byEnableBaseMap;//ʹܵͼʾ + BYTE byAssociateBaseMap;//ĵͼţ0 + BYTE byEnableSpartan;//ʹܣ1-0- + BYTE byRes[21]; +} NET_DVR_BIGSCREENASSOCIATECFG, *LPNET_DVR_BIGSCREENASSOCIATECFG; +/**************************************************************/ +#define MAX_WIN_COUNT 224 //ֵ֧󿪴 + +typedef struct tagNET_DVR_SCREEN_WINCFG +{ + DWORD dwSize; + BYTE byVaild; + BYTE byInputType; //CAM_MDOE + WORD wInputIdx; /*Դ*/ + DWORD dwLayerIdx; /*ͼ㣬0Ϊײ*/ + NET_DVR_RECTCFG struWin; //ĿĴ(ʾǽ) + BYTE byWndIndex; //ں + BYTE byCBD; //0-ޣ1-2- + BYTE bySubWnd; //0ǣ1 + BYTE byRes1; + DWORD dwDeviceIndex;//豸 + BYTE byRes2[16]; +}NET_DVR_SCREEN_WINCFG, *LPNET_DVR_SCREEN_WINCFG; + +typedef struct tagNET_DVR_WINLIST +{ + DWORD dwSize; + WORD wScreenSeq; //豸 + BYTE byRes[10]; + DWORD dwWinNum; //豸صĴ + BYTE *pBuffer; //ϢΪ224*sizeof(NET_DVR_WINCFG) + DWORD dwBufLen; //ָ볤 +}NET_DVR_WINLIST,*LPNET_DVR_WINLIST; + +#define MAX_LAYOUT_COUNT 16 //󲼾 +typedef struct tagNET_DVR_LAYOUTCFG +{ + DWORD dwSize; + BYTE byValid; //ǷЧ + BYTE byRes1[3]; + BYTE byLayoutName[NAME_LEN/*32*/]; // + NET_DVR_SCREEN_WINCFG struWinCfg[MAX_WIN_COUNT/*224*/]; //ڴڲ + BYTE byRes2[16]; +}NET_DVR_LAYOUTCFG, *LPNET_DVR_LAYOUTCFG; + +typedef struct tagNET_DVR_LAYOUT_LIST +{ + DWORD dwSize; + NET_DVR_LAYOUTCFG struLayoutInfo[MAX_LAYOUT_COUNT/*16*/]; //в + BYTE byRes[4]; +}NET_DVR_LAYOUT_LIST, *LPNET_DVR_LAYOUT_LIST; + +#define MAX_CAM_COUNT 224 +#define MAX_CAM_COUNT_V50 512 + +typedef enum tagNET_DVR_CAM_MODE +{ + NET_DVR_UNKNOW = 0,//Ч + NET_DVR_CAM_BNC, + NET_DVR_CAM_VGA, + NET_DVR_CAM_DVI, + NET_DVR_CAM_HDMI, + NET_DVR_CAM_IP, + NET_DVR_CAM_RGB, + NET_DVR_CAM_DECODER, + NET_DVR_CAM_MATRIX, + NET_DVR_CAM_YPBPR, + NET_DVR_CAM_USB, + NET_DVR_CAM_SDI, + NET_DVR_CAM_HDI, + NET_DVR_CAM_DP, //Ƶۺƽ̨ + NET_DVR_CAM_HDTVI, + NET_DVR_CAM_JOINT, //ƴźԴ + NET_DVR_CAM_HDBASET, + NET_DVR_CAM_DVIT, //DVI˫·Ƶۺƽ̨ + NET_DVR_CAM_FUSION, //IPCƴ + NET_DVR_CAM_VSCREEN, // + NET_DVR_CAM_FIBER, // + NET_DVR_CAM_3GSDI, //3G-SDI + NET_DVR_CAM_DISTRIBUTED_IP, //ֲʽԴ + NET_DVR_CAM_JONIT_X86,// x86ƴϵͳƴͨ + NET_DVR_CAM_TVI, //TVIźԴ +}NET_DVR_CAM_MODE; + +typedef struct tagNET_DVR_INPUTSTREAMCFG +{ + DWORD dwSize ; + BYTE byValid; + BYTE byCamMode; //źԴͣNET_DVR_CAM_MODE + WORD wInputNo; //źԴ0-224 + BYTE sCamName[NAME_LEN] ; //źԴ + NET_DVR_VIDEOEFFECT struVideoEffect; //Ƶ + NET_DVR_PU_STREAM_CFG struPuStream; //ipʱʹ + WORD wBoardNum ; //źԴڵİ忨 + WORD wInputIdxOnBoard; //źԴڰ忨ϵλ + DWORD dwResolution;//ֱ + BYTE byVideoFormat;//ƵʽVIDEO_STANDARD + BYTE byStatus; //źԴ״̬0-ֶЧ 1-ź 2-ź 3-쳣 + BYTE sGroupName[NAME_LEN/*32*/]; //źԴ + BYTE byJointMatrix; // 0- 1- + BYTE byRes; +}NET_DVR_INPUTSTREAMCFG, *LPNET_DVR_INPUTSTREAMCFG; + +typedef struct tagNET_DVR_INPUTSTREAM_LIST +{ + DWORD dwSize; + NET_DVR_INPUTSTREAMCFG struInputStreamInfo[MAX_CAM_COUNT]; //źԴ + BYTE byRes[4]; +}NET_DVR_INPUTSTREAM_LIST, *LPNET_DVR_INPUTSTREAM_LIST; + +/**************************************************************/ +/*ͨ*/ +typedef struct tagNET_DVR_OUTPUTPARAM +{ + DWORD dwSize; + BYTE byMonMode; /*ģʽ,1-BNC,2-VGA,3-DVI,4-HDMI*/ + BYTE byRes1[3]; + DWORD dwResolution; /*ֱʣȡֵ֧Ľ*/ + NET_DVR_VIDEOEFFECT struVideoEffect; /*ͨƵ*/ + BYTE byRes2[32]; +}NET_DVR_OUTPUTPARAM, *LPNET_DVR_OUTPUTPARAM; + +typedef struct tagNET_DVR_OUTPUTCFG +{ + DWORD dwSize; + BYTE byScreenLayX; //- + BYTE byScreenLayY; //- + WORD wOutputChanNum; //ͨ0ʾ豸ֵ֧ͨȡֵʾʵͨ + BYTE byRes1[4]; + NET_DVR_OUTPUTPARAM struOutputParam; /*ͨƵ*/ + BYTE sWallName[16]; //ǽ + BYTE byRes2[8]; +}NET_DVR_OUTPUTCFG, *LPNET_DVR_OUTPUTCFG; + +/**************************************************************/ +#define SCREEN_PROTOCOL_NUM 20 //ֵ֧Э +// +typedef struct tagNET_DVR_SCREENSERVER_ABILITY +{ + DWORD dwSize; /*ṹ*/ + BYTE byIsSupportScreenNum; /*ִ֧Ŀ*/ + BYTE bySerialNums; //ڸ + BYTE byMaxInputNums; + BYTE byMaxLayoutNums; + BYTE byMaxWinNums; + BYTE byRes1[19]; + BYTE byMaxScreenLayX;//- + BYTE byMaxScreenLayY;//- + WORD wMatrixProtoNum; /*ЧĴЭĿ*/ + NET_DVR_PROTO_TYPE struScreenProto[SCREEN_PROTOCOL_NUM];/*Эб*/ + BYTE byRes2[24]; +}NET_DVR_SCREENSERVER_ABILITY, *LPNET_DVR_SCREENSERVER_ABILITY; + +// +typedef struct tagNET_DVR_SCREENCONTROL_ABILITY +{ + DWORD dwSize; /*ṹ*/ + BYTE byLayoutNum; /* ָ*/ + BYTE byWinNum; /*Ļڸ*/ + BYTE byOsdNum; /*OSD*/ + BYTE byLogoNum; /*Logo*/ + BYTE byInputStreamNum; //Դ ---豸֧ͨԴԴ + BYTE byOutputChanNum; //ͨ---豸֧ͨ + BYTE byCamGroupNum; /**/ + BYTE byPlanNum; /*Ԥ*/ + BYTE byRes1[5]; + BYTE byIsSupportPlayBack; /*Ƿֻ֧ط*/ + BYTE byMatrixInputNum; //֧ + BYTE byMatrixOutputNum; //֧ + NET_DVR_DISPINFO struVgaInfo;//VGAϢ + NET_DVR_DISPINFO struBncInfo;//BNCϢ + NET_DVR_DISPINFO struHdmiInfo;//HDMIϢ + NET_DVR_DISPINFO struDviInfo;//DVIϢ + BYTE byMaxUserNums;//֧û + BYTE byPicSpan; //ͼȣһŵͼɸǵĻ + WORD wDVCSDevNum; //ֲʽ豸 + WORD wNetSignalNum; //Դ + WORD wBaseCoordinateX;//׼ + WORD wBaseCoordinateY; + BYTE byExternalMatrixNum; //Ӿ + BYTE byRes2[49]; +}NET_DVR_SCREENCONTROL_ABILITY, *LPNET_DVR_SCREENCONTROL_ABILITY; + +/*******************************ź״̬*******************************/ +typedef struct tagNET_DVR_ANALOGINPUTSTATUS +{ + DWORD dwLostFrame; /*Ƶ붪֡*/ + BYTE byHaveSignal; /*ǷƵź*/ + BYTE byVideoFormat; /*Ƶʽ1NTSC,2PAL,0*/ + BYTE byRes[46]; +} NET_DVR_ANALOGINPUTSTATUS, *LPNET_DVR_ANALOGINPUTSTATUS; + +typedef union tagNET_DVR_INPUTSTATUS_UNION +{ + NET_DVR_MATRIX_CHAN_STATUS struIpInputStatus; + NET_DVR_ANALOGINPUTSTATUS struAnalogInputStatus; +} NET_DVR_INPUTSTATUS_UNION, *LPNET_DVR_INPUTSTATUS_UNION; + +typedef struct tagNET_DVR_INPUTSTATUS +{ + WORD wInputNo; /*źԴ*/ + BYTE byInputType; //NET_DVR_CAM_MODE + BYTE byRes1[9]; + NET_DVR_INPUTSTATUS_UNION struStatusUnion; + BYTE byRes2[16]; +} NET_DVR_INPUTSTATUS, *LPNET_DVR_INPUTSTATUS; + +typedef struct tagNET_DVR_SCREENINPUTSTATUS +{ + DWORD dwSize; + BYTE byRes[12]; + DWORD dwNums; //豸صԴ״̬ + BYTE *pBuffer; // + DWORD dwBufLen; //ָ볤ȣ +}NET_DVR_SCREENINPUTSTATUS,*LPNET_DVR_SCREENINPUTSTATUS; + +typedef struct tagNET_DVR_SCREENALARMCFG +{ + DWORD dwSize; + BYTE byAlarmType; //ͣ1-Ӱγ2-Ӱ룬3-ϵͳ״̬쳣4-ϵͳָָ 5-Դ쳣 6-¶ȱ 7-FPGA汾ƥ 8-Ԥʼ 9-Ԥ 10- 11-IPַͻ12-쳣 + BYTE byBoardType; // 1- 2- 3-壬4-壬Ϊ1236ʱʹ + BYTE bySubException; //쳣ʱ쳣 1- ֱı 2-˿͸ı3-ֱʴ4-ֱʸı䵼½Դ㣬رոԴӦڡ5-ֱʸı䣬ѿű1/88Χ6-ֱʻָ,7-ֱʸı䵼,豸رմ + BYTE byRes1; + WORD wStartInputNum; // 쳣Դ쳣㣩 + WORD wEndInputNum; // 쳣Դ쳣յ㣩 + BYTE byRes2[16]; +}NET_DVR_SCREENALARMCFG, *LPNET_DVR_SCREENALARMCFG; + +typedef struct tagNET_DVR_MATRIX_CFG +{ + BYTE byValid; //жǷģǷЧ + BYTE byCommandProtocol; //ģָ4֣ + BYTE byScreenType; // + BYTE byRes1; + BYTE byScreenToMatrix[32]; //ģĻĶӦϵ + BYTE byRes2[4]; +}NET_DVR_MATRIX_CFG, *LPNET_DVR_MATRIX_CFG; + +typedef struct tagNET_DVR_DIGITALSCREEN +{ + NET_DVR_IPADDR struAddress;/*豸Ϊ豸ʱIPϢ*/ + WORD wPort; //ͨ + BYTE byRes[26]; // +}NET_DVR_DIGITALSCREEN, *LPNET_DVR_DIGITALSCREEN; +typedef struct tagNET_DVR_ANALOGSCREEN +{ + BYTE byDevSerPortNum; /*豸Ĵں*/ + BYTE byScreenSerPort; /*ӴĴں*/ + BYTE byRes[130]; + NET_DVR_MATRIX_CFG struMatrixCfg; +}NET_DVR_ANALOGSCREEN, *LPNET_DVR_ANALOGSCREEN; + +typedef union tagNET_DVR_SCREEN_UNION +{ + NET_DVR_DIGITALSCREEN struDigitalScreen; + NET_DVR_ANALOGSCREEN struAnalogScreen; +}NET_DVR_SCREEN_UNION, *LPNET_DVR_SCREEN_UNION; +typedef struct tagNET_DVR_SCREEN_SCREENINFO +{ + DWORD dwSize; + BYTE byValid; //ǷЧ + BYTE nLinkMode; //ӷʽ0-ڣ1- + BYTE byDeviceType; //豸ͺţȡ + BYTE byScreenLayX; //- + BYTE byScreenLayY; //- + BYTE byRes1[3]; + BYTE sUserName[NAME_LEN]; /*¼û*/ + BYTE sPassword[PASSWD_LEN]; /*¼*/ + BYTE sDevName[NAME_LEN]; /*豸*/ + NET_DVR_SCREEN_UNION struScreenUnion; + BYTE byInputNum; // Դ + BYTE byOutputNum; // Դ + BYTE byCBDNum; //CBD + BYTE byRes2[29]; +} NET_DVR_SCREEN_SCREENINFO, *LPNET_DVR_SCREEN_SCREENINFO; + +/*******************************ͼϴ*******************************/ +typedef struct tagNET_DVR_BASEMAP_CFG +{ + BYTE byScreenIndex; //Ļ + BYTE byMapNum; /*ָ˶ٿ */ + BYTE res[2]; + WORD wSourWidth; /* ԭͼƬĿ */ + WORD wSourHeight; /* ԭͼƬĸ߶ */ +}NET_DVR_BASEMAP_CFG, LPNET_DVR_BASEMAP_CFG; + + +typedef struct tagNET_DVR_PICCFG +{ + DWORD dwSize; //С + BYTE byUseType; //1-ͼ2-GIFͼƬ3-CADͼƬ 4-ͼƬ + BYTE bySequence;// + BYTE byOverlayEnabled; //ͼƬʹܣǷϴͼƬͼƬӲ 1-Ӳ0- + BYTE byRes[1]; + NET_DVR_BASEMAP_CFG struBasemapCfg; //ͼԺ豸Ч + BYTE sPicName[NAME_LEN];//ͼƬ + DWORD dwVideoWall; //ǽţ1ֽǽţں̶ֵΪ1ɣ+1ֽͨͨţ+2ֽڴںţ + BYTE byFlash; //ͼƬ˸ʹܣ1-˸0-˸ + BYTE byTranslucent; //ͼƬ͸ʹܣ1-͸0-͸ + BYTE byShowEnabled; //ͼƬʾʹܣ1-ʾ0- + BYTE byPictureType; //ͼƬͣ1-bmp2-jpg3-png + BYTE byRes2[24]; +}NET_DVR_PICTURECFG, *LPNET_DVR_PICTURECFG; + +/*******************************OSD*******************************/ +#define MAX_OSDCHAR_NUM 256 +typedef struct tagNET_DVR_OSDCFG +{ + DWORD dwSize; + BYTE byValid; /*ǷЧ 0Ч 1Ч*/ + BYTE byDispMode; //ʾģʽ1-͸2-͸3-ģʽ + BYTE byFontColorY; /*ɫY,0-255*/ + BYTE byFontColorU; /*ɫU,0-255*/ + BYTE byFontColorV; /*ɫV,0-255*/ + BYTE byBackColorY; /*ɫY,0-255*/ + BYTE byBackColorU; /*ɫU,0-255*/ + BYTE byBackColorV; /*ɫV,0-255*/ + WORD wXCoordinate; /*OSDĻϽλx*/ + WORD wYCoordinate; /*OSDĻϽλy*/ + WORD wWidth; /*OSD*/ + WORD wHeight; /*OSD߶*/ + DWORD dwCharCnt; /*ַĸ*/ + WORD wOSDChar[MAX_OSDCHAR_NUM]; /*OSDַ*/ + BYTE byRes[32]; +}NET_DVR_OSDCFG, *LPNET_DVR_OSDCFG; + + +/*******************************ȡϢ*******************************/ +typedef struct tagNET_DVR_SERIAL_CONTROL +{ + DWORD dwSize ; + BYTE bySerialNum; // ڸ + BYTE byRes1[3]; + BYTE bySerial[32]; + BYTE byRes2[32]; +}NET_DVR_SERIAL_CONTROL, *LPNET_DVR_SERIAL_CONTROL; + +/*******************************Ļ*******************************/ +//ĻԴ +typedef enum tagINPUT_INTERFACE_TYPE +{ + INTERFACE_VGA = 0, + INTERFACE_SVIDEO, // 2046NL֧֣2046NH֧ + INTERFACE_YPBPR, + INTERFACE_DVI , + INTERFACE_BNC , + INTERFACE_DVI_LOOP,//(ͨ) 2046NH֧֣2046NL֧ + INTERFACE_BNC_LOOP, //(ͨ) 2046NH֧֣2046NL.֧ + INTERFACE_HDMI, + INTERFACE_IP, + INTERFACE_USB, + INTERFACE_SDI, + INTERFACE_DP, + INTERFACE_HDBASET +}INPUT_INTERFACE_TYPE; +typedef struct tagNET_DVR_INPUT_INTERFACE_CTRL +{ + BYTE byInputSourceType; //INPUT_INTERFACE_TYPE + BYTE byRes[15]; +}NET_DVR_INPUT_INTERFACE_CTRL, *LPNET_DVR_INPUT_INTERFACE_CTRL; +//ʾԪɫ +typedef struct tagNET_DVR_DISPLAY_COLOR_CTRL +{ + BYTE byColorType; //1- 2-Աȶ 3-Ͷ 4- + char byScale; //-1 0+1ֵ + BYTE byRes[14]; +}NET_DVR_DISPLAY_COLOR_CTRL, *LPNET_DVR_DISPLAY_COLOR_CTRL; +//ʾԪλÿ +typedef struct tagNET_DVR_DISPLAY_POSITION_CTRL +{ + BYTE byPositionType; //1-ˮƽλ 2-ֱλã + char byScale; //-1 0+1ֵ + BYTE byRes[14]; +}NET_DVR_DISPLAY_POSITION_CTRL, *LPNET_DVR_DISPLAY_POSITION_CTRL; + + +/*******************************ĻV41*******************************/ +typedef struct tagNET_DVR_RECTCFG_EX +{ + DWORD dwXCoordinate; /*ϽʼX*/ + DWORD dwYCoordinate; /*ϽY*/ + DWORD dwWidth; /*ο*/ + DWORD dwHeight; /*θ߶*/ + BYTE byRes[4]; +}NET_DVR_RECTCFG_EX, *LPNET_DVR_RECTCFG_EX; + +/*******************************Ԥ*******************************/ +#define MAX_PLAN_ACTION_NUM 32 //Ԥ +#define DAYS_A_WEEK 7 //һ7 +#define MAX_PLAN_COUNT 16 //Ԥ + + +typedef enum +{ + NET_DVR_SWITCH_LAYOUT = 1, // л Ĭ + NET_DVR_SCREEN_POWER_OFF, // رմĻʾ + NET_DVR_SCREEN_POWER_ON, // 򿪴Ļʾ + NET_DVR_SWITCH_BASEMAP //ͼл +}NET_DVR_PLAN_OPERATE_TYPE; + +/*ԤϢ*/ +typedef struct tagNET_DVR_PLAN_INFO +{ + BYTE byValid; // ǷЧ + BYTE byType; // NET_DVR_PLAN_OPERATE_TYPE + WORD wLayoutNo; // ֺ + BYTE byScreenStyle; //Ļͺţػã1ǵ2Ǹ + BYTE byBaseMapType; //ͼͣ1-ͼƬͼ2-ͼͼлʱЧ + BYTE byRes1[2]; + DWORD dwDelayTime; // һʱ, λ + DWORD dwSerialNo; //ںţĻʱʹ + DWORD dwBaseMapWndNo; //ͼںţͼлʱЧ + DWORD dwBaseMapNo; //ͼţͼлʱЧͼΪ1ʱ˲ΪͼƬţͼΪ2ʱ˲Ϊϵͳţ1ֽ豸+1ֽӰ+2ֽʾţ + BYTE byRes2[20]; +} NET_DVR_PLAN_INFO, *LPNET_DVR_PLAN_INFO; + +typedef struct tagNET_DVR_CYCLE_TIME +{ + BYTE byValid; + BYTE byRes[3]; + NET_DVR_TIME_EX struTime; +}NET_DVR_CYCLE_TIME, *LPNET_DVR_CYCLE_TIME; +/*Ԥ*/ +typedef struct tagNET_DVR_PLAN_CFG +{ + DWORD dwSize; + BYTE byValid; // ԤǷЧ + BYTE byWorkMode; // Ԥģʽ 1ʾֶ2Զ3Ԥѭ + BYTE byWallNo; //ǽţ1ʼ + BYTE byPlanNo; //ԤţȡԤбʱЧ0-Ч֧ + BYTE byPlanName[NAME_LEN/*32*/]; //Ԥ + NET_DVR_TIME_EX struTime; // ģʽΪԶʱʹ + NET_DVR_CYCLE_TIME struTimeCycle[DAYS_A_WEEK/*7*/]; /*ѭʱ䣬Ϊһڣꡢ¡ʹá磺struTimeCycle[0]еbyValidֵ1ʾִиԤȡֵΪ[0,6]0죬1һԴ*/ + DWORD dwWorkCount; // Ԥִд + NET_DVR_PLAN_INFO strPlanEntry[MAX_PLAN_ACTION_NUM/*32*/]; // Ԥִе + DWORD dwPlanNo; //4ֽԤţͻͳһʹ4ֽڵԤţֽڵԤŲʹ + BYTE byRes2[60]; +}NET_DVR_PLAN_CFG, *LPNET_DVR_PLAN_CFG; + + +/*******************************ȡ豸״̬*******************************/ +/*Ԥб*/ +typedef struct tagNET_DVR_PLAN_LIST +{ + DWORD dwSize; + DWORD dwPlanNums; //豸źԴ + BYTE *pBuffer; //ָdwInputSignalNumsNET_DVR_PLAN_CFGṹСĻ + BYTE byWallNo; //ǽţ1ʼ + BYTE byRes1[2]; + DWORD dwBufLen; //仺ȣڵdwInputSignalNumsNET_DVR_PLAN_CFGṹС + BYTE byRes2[64]; +} NET_DVR_PLAN_LIST,*LPNET_DVR_PLAN_LIST; + + +/*******************************Ԥ*******************************/ +//ýṹΪͨÿƽṹ +typedef struct tagNET_DVR_CONTROL_PARAM +{ + DWORD dwSize; + BYTE sDeviceID[NAME_LEN]; //豸豸ID + WORD wChan; //ͨ + BYTE byIndex; //ȷʾʲô + BYTE byRes1; + DWORD dwControlParam; + BYTE byMandatoryAlarm; //1-ʹ 0-ʹ + BYTE byRes2; + WORD wZoneIndex; // + BYTE byOperatorCode[16]; //ؿ + DWORD dwPlanNo; //4ֽԤţͻͳһʹ4ֽڵԤţֽڵԤŲʹ + BYTE byRes3[8]; +}NET_DVR_CONTROL_PARAM, *LPNET_DVR_CONTROL_PARAM; + +/*******************************ȡ豸״̬*******************************/ +typedef struct tagNET_DVR_DEVICE_RUN_STATUS +{ + DWORD dwSize; + DWORD dwMemoryTotal; //ڴλKbyte + DWORD dwMemoryUsage; //ڴʹλKbyte + BYTE byCPUUsage; //CPUʹʣ0-100 + BYTE byMainFrameTemp; //¶ȣλ϶ + BYTE byBackPanelTemp; //¶ȣλ϶ + BYTE byRes1; + BYTE byLeftDecResource[32]; //ʣԴԽD1ֱԴΪλbyLeftDecResource[i],ʾλiʣԴ0xffʾЧǽûӣ + float fNetworkFlow; //λKB/sһСλ + BYTE byRes2[88]; +}NET_DVR_DEVICE_RUN_STATUS, *LPNET_DVR_DEVICE_RUN_STATUS; + +// 91ϵHD-SDIDVR Ϣ +typedef struct tagNET_DVR_ACCESS_CAMERA_INFO +{ + DWORD dwSize; + char sCameraInfo[32]; // ǰϢ + BYTE byInterfaceType; // ǰ˽ӿͣ1:VGA, 2:HDMI, 3:YPbPr 4:SDI 5:FC + BYTE byRes1[3]; + DWORD dwChannel; + BYTE byRes[24]; +}NET_DVR_ACCESS_CAMERA_INFO, *LPNET_DVR_ACCESS_CAMERA_INFO; + +typedef struct tagNET_DVR_AUDIO_INPUT_PARAM +{ + BYTE byAudioInputType; //Ƶͣ0-mic in1-line in + BYTE byVolume; //volume,[0-100] + BYTE byEnableNoiseFilter; //Ƿ-أ- + BYTE byres[5]; +}NET_DVR_AUDIO_INPUT_PARAM, *LPNET_DVR_AUDIO_INPUT_PARAM; + +typedef struct tagNET_DVR_CAMERA_DEHAZE_CFG +{ + DWORD dwSize; + BYTE byDehazeMode; //0-ã1-Զģʽ2- + BYTE byLevel; //ȼ0-100 + BYTE byRes[6]; +}NET_DVR_CAMERA_DEHAZE_CFG, *LPNET_DVR_CAMERA_DEHAZE_CFG; + +typedef struct tagNET_DVR_INPUT_SIGNAL_LIST +{ + DWORD dwSize; + DWORD dwInputSignalNums; //豸źԴ + BYTE *pBuffer; //ָdwInputSignalNumsNET_DVR_INPUTSTREAMCFGṹСĻ + BYTE byRes1[3]; + DWORD dwBufLen; //仺ȣڵdwInputSignalNumsNET_DVR_INPUTSTREAMCFGṹС + BYTE byRes2[64]; +} NET_DVR_INPUT_SIGNAL_LIST,*LPNET_DVR_INPUT_SIGNAL_LIST; + +// ȫ״̬ +#define PULL_DISK_SUCCESS 1 // ȫ̳ɹ +#define PULL_DISK_FAIL 2 // ȫʧ +#define PULL_DISK_PROCESSING 3 // ֹͣ +#define PULL_DISK_NO_ARRAY 4 // в +#define PULL_DISK_NOT_SUPPORT 5 // ְ֧ȫ + +// ɨ״̬ +#define SCAN_RAID_SUC 1 // ɨгɹ +#define SCAN_RAID_FAIL 2 // ɨʧ +#define SCAN_RAID_PROCESSING 3 // ɨ +#define SCAN_RAID_NOT_SUPPORT 4 // ֧ɨ + +// ǰ״̬ +#define SET_CAMERA_TYPE_SUCCESS 1 // ɹ +#define SET_CAMERA_TYPE_FAIL 2 // ʧ +#define SET_CAMERA_TYPE_PROCESSING 3 // ڴ + +//9000 2.2 +typedef struct tagNET_DVR_RECORD_TIME_SPAN_INQUIRY +{ + DWORD dwSize; //ṹС + BYTE byType; //0 Ƶ¼, 1ͼƬͨ¼, 2ANRͨ¼, 3֡ͨ¼ + BYTE byRes[63]; // +}NET_DVR_RECORD_TIME_SPAN_INQUIRY, *LPNET_DVR_RECORD_TIME_SPAN_INQUIRY; + +typedef struct tagNET_DVR_RECORD_TIME_SPAN +{ + DWORD dwSize; //ṹС + NET_DVR_TIME strBeginTime; //ʼʱ + NET_DVR_TIME strEndTime; //ʱ + BYTE byType; //0 Ƶ¼, 1ͼƬͨ¼, 2ANRͨ¼, 3֡ͨ¼ + BYTE byRes[35]; // +}NET_DVR_RECORD_TIME_SPAN, *LPNET_DVR_RECORD_TIME_SPAN; + +typedef struct tagNET_DVR_DRAWFRAME_DISK_QUOTA_CFG +{ + DWORD dwSize; //ṹС + BYTE byPicQuota; //ͼƬٷֱ [0%, 30%] + BYTE byRecordQuota; //ͨ¼ٷֱ [20%, 40%] + BYTE byDrawFrameRecordQuota; //֡¼ٷֱ [30%, 80%] + BYTE byRes[61]; //ֽ +}NET_DVR_DRAWFRAME_DISK_QUOTA_CFG, *LPNET_DVR_DRAWFRAME_DISK_QUOTA_CFG; + +typedef struct tagNET_DVR_NAT_PORT +{ + WORD wEnable; //ö˿Ƿʹӳ + WORD wExtPort; //ӳⲿ˿ں + BYTE byRes[12]; // +}NET_DVR_NAT_PORT, *LPNET_DVR_NAT_PORT; + +typedef struct tagNET_DVR_NAT_CFG +{ + DWORD dwSize; //ṹС + WORD wEnableUpnp; //UPNPǷ + WORD wEnableNat; //UPNP˿ӳ䣨NATǷ(wEnableUpnpһ) + NET_DVR_IPADDR struIpAddr; //NAT·LAN IPַ + NET_DVR_NAT_PORT struHttpPort; //web server http˿ӳ + NET_DVR_NAT_PORT struCmdPort; //˿ӳ(8000) + NET_DVR_NAT_PORT struRtspPort; //rtsp˿ӳ + BYTE byFriendName[64]; // + BYTE byNatType; //UPNP˿ӳͣ0-ֶ1-Զ + BYTE byRes1[3]; // + NET_DVR_NAT_PORT struHttpsPort; //https˿ӳ + NET_DVR_NAT_PORT struSDKOverTLSPort; //SDKOverTLS˿ӳ + NET_DVR_NAT_PORT struRtspsPort; //Rtsps˿ӳ + BYTE byres[44]; // +}NET_DVR_NAT_CFG, *LPNET_DVR_NAT_CFG; + +typedef struct +{ + DWORD dwEnabled; //ö˿Ƿʹӳ + WORD wInternalPort; //ӳǰĶ˿ + WORD wExternalPort; //ӳĶ˿ + DWORD dwStatus; /*˿ӳ״̬ + 0 δЧ + 1 δЧӳԴ˿ĿĶ˿һ + 2 δЧ: ӳ˿ںѱʹ + 3 Ч + */ + NET_DVR_IPADDR struNatExternalIp; //ӳⲿַ + NET_DVR_IPADDR struNatInternalIp; //NAT·LAN IPַ + BYTE byRes[16]; // +}NET_DVR_UPNP_PORT_STATE, *LPNET_DVR_UPNP_PORT_STATE; + + +typedef struct +{ + NET_DVR_UPNP_PORT_STATE strUpnpPort[UPNP_PORT_NUM]; //˿ӳ״̬,0 web server˿ 1 ˿ 2 rtsp˿ + BYTE byRes[200]; // +}NET_DVR_UPNP_NAT_STATE, *LPNET_DVR_UPNP_NAT_STATE; + +typedef struct tagNET_DVR_PLAYCOND +{ + DWORD dwChannel; + NET_DVR_TIME struStartTime; + NET_DVR_TIME struStopTime; + BYTE byDrawFrame; //0:֡1֡ + BYTE byStreamType ; //ͣ0- 1- 2- + BYTE byStreamID[STREAM_ID_LEN]; + BYTE byCourseFile; //γļ0-1- + BYTE byDownload; //Ƿ 0-1- + BYTE byOptimalStreamType; //Ƿͻط 0-1-ǣ˫豸ijһʱڵ¼ļָͲͬ򷵻ʵ͵¼ + BYTE byVODFileType; // ¼ļļʽ 0-PSʽ1-3GPʽ + BYTE byRes[26]; // +}NET_DVR_PLAYCOND, *LPNET_DVR_PLAYCOND; + +typedef struct tagNET_DVR_ATMFINDINFO +{ + BYTE byTransactionType; // 0-ȫ1-ѯ 2-ȡ 3- 4-޸룬5-תˣ 6-޿ѯ 7-޿ 8-̳ 9-̿ 10-Զ + BYTE byRes[3] ; // + DWORD dwTransationAmount ; //׽ ; +} NET_DVR_ATMFINDINFO, *LPNET_DVR_ATMFINDINFO ; + +typedef union tagNET_DVR_SPECIAL_FINDINFO_UNION +{ + BYTE byLenth[8] ; + NET_DVR_ATMFINDINFO struATMFindInfo; //ATMѯ +}NET_DVR_SPECIAL_FINDINFO_UNION, *LPNET_DVR_SPECIAL_FINDINFO_UNION; + + +typedef struct tagNET_DVR_FILECOND_V40 +{ + LONG lChannel; + DWORD dwFileType;/*¼ļ0xff-ȫ0-ʱ¼1-ƶ⣬2-3-ƶ⣬4-ƶ⣬5-6-ֶ¼ + 7-¼10-PIR11-߱12-ȱ13-ȫ¼14-ܽͨ¼15-Խ⣬16-֣17-쳣18-⣬19-⣨Խ|||쳣|⣩ + 20-⣬ 21-ź22-ش23-Ǩ¼24-ڵ25-pos¼26-, 27-뿪,28-ǻ,29-Աۼ,30-˶,31-ͣ,32-Ʒ,33-Ʒȡ, + 34-⣬35-ƻ⣬36-ֻ⣬37-Ԥ,38-±,39-ܶŹ40-⣬41-˯⣬42-²43-߲±,44-45-,46-ҵѯ,47-,48-ʸ,49-޳ʱ50-ܼ⣬51-⣬52-ץ, 53-Ƿ̯, 54-Ŀʶ, + 55-˶56-ڼ⣬57-58-仯59-Υͣ, 60-,61-ѹ,62-ռ,63-,64-ͷ,65-˼,66-·,67-,68-Ũ,69-ʩ,70-ӵ,71-ͨ¹ʼ, 72-෽ͣ73-ֶ,74-ͨΥ£75-ɳⱨ 76-ŷż77-Ҷȱ,78-, + 79-,80-ͨʱ¼¼,81-AIƽ̨¼,82-¼ +*/ + DWORD dwIsLocked; + DWORD dwUseCardNo;//ǷATMϢвѯ0-ATMϢ1-׿Ųѯ2-Ͳѯ3-׽ѯ4-šͼ׽ϲѯ 5-γƲңʱűʾγ + BYTE sCardNumber[CARDNUM_LEN_OUT]; + NET_DVR_TIME struStartTime; + NET_DVR_TIME struStopTime; + BYTE byDrawFrame; //0:֡1֡ + BYTE byFindType; //0:ѯͨ1ѯ浵 + BYTE byQuickSearch; //0:ͨѯ1٣ѯ + BYTE bySpecialFindInfoType ; //רвѯ 0-Ч 1-ATMѯ + DWORD dwVolumeNum; //浵 + BYTE byWorkingDeviceGUID[GUID_LEN]; //GUIDͨȡN+1õ + NET_DVR_SPECIAL_FINDINFO_UNION uSpecialFindInfo ; //רвѯ + BYTE byStreamType; //0-ͬһʱֻһ¼ȼ˳Ϊ1-2-3-254-˫(ȷ¼û¼ʱ¼) + BYTE byAudioFile; //Ƶļ 0-Ƶļ1-Ƶļ + BYTE byRes2[30]; // +}NET_DVR_FILECOND_V40, *LPNET_DVR_FILECOND_V40; + +//¼ļṹV50 +typedef struct tagNET_DVR_FILECOND_V50 +{ + NET_DVR_STREAM_INFO struStreamID; //IDͨ + NET_DVR_TIME_SEARCH_COND struStartTime; //ʼʱ + NET_DVR_TIME_SEARCH_COND struStopTime; //ʱ + BYTE byFindType; //0-ѯͨ1-ѯ浵 2-ѯN+1¼ļ + BYTE byDrawFrame; //Ƿ֡ 0-֡ 1-֡ + BYTE byQuickSearch; //0-ͨѯ1-٣ѯ + BYTE byStreamType; //0-1-2-30xff-ȫ + DWORD dwFileType; // ļ + DWORD dwVolumeNum; //浵ţbyFindTypeΪ1ʱЧ + BYTE byIsLocked; //Ƿ 0-ļ,1-ļ, 0xffʾļ + BYTE byNeedCard; //ǷҪѯ0-Ҫ 1-Ҫ + BYTE byOnlyAudioFile; //Ƶļ 0-Ƶļ 1-Ƶļ + BYTE bySpecialFindInfoType; //0-Ч 1-ATMѯ + char szCardNum[32]; //ţbyNeedCardΪ1ʱЧ + char szWorkingDeviceGUID[16]; //GUIDͨȡN+1õbyFindTypeΪ2ʱЧ + NET_DVR_SPECIAL_FINDINFO_UNION uSpecialFindInfo; //רвѯ + DWORD dwTimeout; //ҳʱʱ䣨ָNET_DVR_FindNextFile_V30/NET_DVR_FindNextFile_V40/NET_DVR_FindNextFile_V50ӿڵijʱʱ䷵أλ룬дĬΪ0ʱӿΪǰһ ;Чֵ0, [5000 C 15000] + BYTE byRes[252]; +}NET_DVR_FILECOND_V50, *LPNET_DVR_FILECOND_V50; + +typedef struct +{ + BYTE sAESKey[16]; /*Կ*/ + BYTE byRes[64]; /*ֽ*/ +}NET_DVR_AES_KEY_INFO, *LPNET_DVR_AES_KEY_INFO; + +typedef struct +{ + NET_DVR_IPADDR struIP; //IPַ + BYTE byRes[128]; // +}NET_DVR_POE_CFG, *LPNET_DVR_POE_CFG; + +#define MAX_PRO_PATH 256 //Э· + +typedef struct +{ + DWORD dwSize; //ṹС + DWORD dwEnabled; //ǷøЭ0 1 + char sProtocalName[DESC_LEN]; //ԶЭ, 16λ + BYTE byRes1[64]; //,Эչ + DWORD dwEnableSubStream; //Ƿ0 1 + + BYTE byMainProType; //Э 1 RTSP + BYTE byMainTransType; // 0Auto 1udp 2rtp over rtsp + WORD wMainPort; //˿ + char sMainPath[MAX_PRO_PATH]; //· + + BYTE bySubProType; //Э 1 RTSP + BYTE bySubTransType; // 0Auto 1udp 2rtp over rtsp + WORD wSubPort; //˿ + char sSubPath[MAX_PRO_PATH]; //· + + BYTE byRes2[200]; // +}NET_DVR_CUSTOM_PROTOCAL, *LPNET_DVR_CUSTOM_PROTOCAL; + + +//B10֧PSIA豸 +//ѭǽṹ壨ʵʱ +typedef struct +{ + DWORD dwEnable; /* Ƿ 0 1*/ + BYTE byType; //豸 0: DEV_SDK 1:DEV_DAHUA 2:DEV_EHOME 3:DEV_OTHERES + BYTE byRes[3]; // + NET_DVR_STREAM_MEDIA_SERVER_CFG streamMediaServerCfg; + NET_DVR_DEV_CHAN_INFO struDevChanInfo; /* ѭͨϢ */ + BYTE sRtspUrl[128];//ַ +}NET_DVR_MATRIX_CHAN_INFO_EX,*LPNET_DVR_MATRIX_CHAN_INFO_EX; + +typedef struct +{ + DWORD dwSize; + DWORD dwPoolTime; /*ѯ*/ + NET_DVR_MATRIX_CHAN_INFO_EX struchanConInfo[MAX_CYCLE_CHAN_V30]; + BYTE byRes[16]; +}NET_DVR_MATRIX_LOOP_DECINFO_EX,*LPNET_DVR_MATRIX_LOOP_DECINFO_EX; + +//ʵʱԤǽṹ +typedef struct +{ + DWORD dwSize; + BYTE byType; //豸 0: DEV_SDK 1:DEV_DAHUA 2:DEV_EHOME 3:DEV_OTHERES + BYTE byRes[3]; // + NET_DVR_STREAM_MEDIA_SERVER_CFG struStreamMediaSvrCfg; + NET_DVR_DEV_CHAN_INFO struDevChanInfo; + BYTE sRtspUrl[128];//ַ +}NET_DVR_PU_STREAM_CFG_EX,*LPNET_DVR_PU_STREAM_CFG_EX; + +typedef struct tagNET_DVR_MATRIX_TRUNKCFG +{ + DWORD dwGlobalIndex; // + DWORD dwInterIndex; //ȫֱ + BYTE sTrunkName[NAME_LEN]; + BYTE byType; //豸1-bnc, 2-SP3, 3-V6 + BYTE byDir; //߷ 1-2- + BYTE byAbility; //D1 + BYTE bySubsys; //ϵͳID + BYTE byChan; //ͨID + BYTE byRes[255]; //Ԥ +} NET_DVR_MATRIX_TRUNKCFG,*LPNET_DVR_MATRIX_TRUNKCFG; + +typedef struct tagNET_DVR_DECSUBSYSTEMJIONSTATUS_V41 +{ + BYTE byJoinStatus;//״̬0-ûй1-ѾֶͨжϱԼϵͳ2-ռãbyDecodeAbility1ʱЧ3-4- + BYTE byJoinSubSystem;// ռõϵͳλ + BYTE byJoinDispNum;// ռõʾͨ + BYTE byJoinSubWindowNum;// ռõӴں + BYTE byDecodeAbility; //ͨĵǰ0-δ1-D12-7203-1080 + BYTE byRes[15]; +}NET_DVR_DECSUBSYSTEMJIONSTATUS_V41,LPNET_DVR_DECSUBSYSTEMJIONSTATUS_V41; + +typedef struct tagNET_DVR_SINGLESUBSYSTEMJOININFO_V41 +{ + /*ϵͳͣ1-ϵͳ2-ϵͳ3-ϵͳ4-ϵͳ5-ϵͳ6-ϵͳ7-ϵͳ8-V6ϵͳ9-V6ϵͳ0-NULL˲ֻܻȡ*/ + BYTE bySubSystemType; + BYTE byConnectStatus;//ϵͳ״̬1-2-ӶϿ + BYTE byMatrixNum;//Ƶۺƽ̨ţϵͳ34ʱ + BYTE bySubSystemNum;//ϵͳλţϵͳ34ʱ + NET_DVR_DECSUBSYSTEMJIONSTATUS_V41 struSubSystem[MAX_DECODECHANNUM]; + BYTE byBindStatus;//״̬0-ûа󶨣1-Ѿ󶨣ƴʱõ + BYTE bySlotNum ;//λţ˲ֻܻȡ + BYTE byUsedTrunk;//Ƿ񱻸ʹã0-δʹã1-ʹ + BYTE byRes[65]; +}NET_DVR_SINGLESUBSYSTEMJOININFO_V41,LPNET_DVR_SINGLESUBSYSTEMJOININFO_V41; + +typedef struct tagNET_DVR_ALLDECSUBSYSTEMJOININFO_V41 +{ + DWORD dwSize; + NET_DVR_SINGLESUBSYSTEMJOININFO_V41 struSingleSubSystemJoinInfo[MAX_SUBSYSTEM_NUM_V40]; + BYTE byRes[48]; +}NET_DVR_ALLDECSUBSYSTEMJOININFO_V41,*LPNET_DVR_ALLDECSUBSYSTEMJOININFO_V41; + +//////////ϵͳ///////////// +#define MAX_ALARMHOSTKEYBOARD 64 //籨 +typedef struct tagNET_DVR_PUBLIC_SUB_SYSTEM +{ + //ϵͳţλʾbit0ʾùϵͳϵͳ1. + DWORD dwJointSubSystem; + BYTE byRes[16]; +}NET_DVR_PUBLIC_SUB_SYSTEM, *LPNET_DVR_PUBLIC_SUB_SYSTEM; + +typedef struct tagNET_DVR_NOAMAL_SUB_SYSTEM +{ + //ʾЩϵͳλʾbit0 ʾϵͳ.ϵͳ1 + DWORD dwBeJoinedSubSystem; + BYTE byRes[16]; +}NET_DVR_NOAMAL_SUB_SYSTEM, *LPNET_DVR_NOAMAL_SUB_SYSTEM; + +typedef union tagNET_DVR_JOINT_SUB_SYSTEM +{ + // byPublicAttributeEnableΪ0ʱʹøñ + NET_DVR_NOAMAL_SUB_SYSTEM struNormalSubSystem; + //byPublicAttributeEnableΪ1ʱʹøñ + NET_DVR_PUBLIC_SUB_SYSTEM struPublicSubSystem; + BYTE byRes[20]; +}NET_DVR_JOINT_SUB_SYSTEM,*LPNET_DVR_JOINT_SUB_SYSTEM; + +#define MAX_SUBSYSTEM_ID_LEN 16 //ϵͳID󳤶 + +//////////GPRS///////////// +#define ACCOUNTNUM_LEN 6 +#define ACCOUNTNUM_LEN_32 32 +#define ACCOUNTNUM_LEN_V40 9 +#define APN_NAME_LEN 32 +#define APN_USERNAME_LEN 24 +#define APN_USERPASSWORD_LEN 16 + +typedef struct tagNET_DVR_ALARMSUBSYSTEMPARAM +{ + DWORD dwSize; + WORD wEnterDelay; //ʱ,λ:, Χ10-150 бʱʱ NET_DVR_ALARMIN_PARAM еdwParamʱʱ + //÷ʽͨеbySupportAlarmInDelayֶ + WORD wExitDelay;//˳ʱ,λ:룬 Χ10-300 + BYTE byHostageReport; //Юֱ棬0 1ʹ + BYTE bySubsystemEnable; //ϵͳʹ + BYTE byKeyToneOfArmOrDisarm; // ɹͲǷʾ0-̲ʾ 1-ʾ + BYTE byKeyToneOfManualTestReport; //ɹͲԱǷʾ0-̲ʾ 1-ʾ + WORD wDelayTime; //ʱdwSupport1еbit0λΪ1ʱʹøòþʱ䡣bit0Ϊ0ʱʹNET_DVR_SIREN_PARAMеwDelayþʱ + BYTE byEnableAlarmInDelay;//0--(ʹϵͳʱ),1--(ʹ÷ʱ)Ĭϲ + BYTE byPublicAttributeEnable; //ǷΪϵͳ + NET_DVR_JOINT_SUB_SYSTEM struJointSubSystem; + BYTE byKeyZoneArm; //Ƿ֧Կ׷ϵͳв + BYTE byKeyZoneArmReport; //Ƿ֧Կ׷ϵͳʱͲ + BYTE byKeyZoneDisarm; //Ƿ֧Կ׷ϵͳг + BYTE byKeyZoneDisarmReport; //Ƿ֧Կ׷ϵͳгʱͳ + BYTE bySubSystemID[MAX_SUBSYSTEM_ID_LEN]; //ϵͳID + BYTE byKeyZoneArmReportEnable; //Կ׷ϴʹ 0- 1-ʹ + BYTE byKeyZoneArmEnable; //Կ׷ʹܣ 0 - 1-ʹ + BYTE byOneKeySetupAlarmEnable; //һʹ + BYTE bySingleZoneSetupAlarmEnable; //ʹ + BYTE byCenterType; //0-Ч, 1-˺(6),2-չ˺(9) + BYTE sCenterAccount[ACCOUNTNUM_LEN/*6*/]; //ʺ + BYTE sCenterAccountV40[ACCOUNTNUM_LEN_32/*32*/]; //˺V40,ʹôֶʱsCenterAccountЧ + BYTE byRes2[565]; // ֽ +}NET_DVR_ALARMSUBSYSTEMPARAM, *LPNET_DVR_ALARMSUBSYSTEMPARAM; + +typedef struct tagNET_DVR_REMIND_TIME//8 +{ + BYTE byEnable;//Ƿñ 0-ã1- + BYTE byHour;//0~24 + BYTE byMinute;//0~60 + BYTE bySecond;//0~60 +}NET_DVR_REMIND_TIME,*LPNET_DVR_REMIND_TIME; + +//ϵͳչ +#define MAX_KEYBOARD_USER_NUM 256 +typedef struct tagNET_DVR_SUBSYSTEM_PARAM_EX +{ + DWORD dwSize; + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS/*7*/][MAX_TIMESEGMENT_V30/*8*/]; //ʱ + BYTE byAlarmInAdvance; // ǰʾʱ0~45 + BYTE byRes1[3]; + BYTE byJointAlarmIn[MAX_ALARMHOST_ALARMIN_NUM / 8];//λʾϵͳıͨţ0-룬1- + BYTE byJointKeyboard[MAX_ALARMHOSTKEYBOARD/*64*/ / 8];//λʾֵ֧ļ̺ţ0-룬1- + BYTE byJointOpetaterUser[MAX_KEYBOARD_USER_NUM/8];//λʾbit0ʾ̲û1 0- 1- + NET_DVR_REMIND_TIME struAlarmRemindTime[MAX_DAYS/*7*/][MAX_TIMESEGMENT_V30/*8*/];//MAX_TIMESEGMENT_V30ʾÿ֧8 + BYTE byJointNetUser[NET_SDK_MAX_NET_USER_NUM / 8];//ûλʾbit0ʾû10- 1- + BYTE byRes2[280]; // ֽ +}NET_DVR_SUBSYSTEM_PARAM_EX, *LPNET_DVR_SUBSYSTEM_PARAM_EX; + + +typedef struct tagNET_DVR_ALARMHOST_PRINTER_CFG +{ + DWORD dwSize; + BYTE byPrinterEnable; //Ƿôӡ + BYTE byPrintTime; //Ƿӡʱ + BYTE byFaultDetect; //Ƿӡ + BYTE byRes1; + DWORD dwAlarmInfo; //Ϣλʾbit0-bit1-ָbit2-bit-3Юֱ + DWORD dwDeviceInfo; //豸Ϣλʾbit0-ϵ硢bit1-ϵָbit2-Ƿѹbit3-Ƿѹָbit4-绰߶ߡbit5-绰߶߻ָbit6-Ա桢bit7-bit8-ָbit9-485豸ߡbit10-485豸߻ָbit11-쳣bit12-ָbit13-쳣bit14-ָbit15-չ쳣bit17-չ߻ָbit17-Ӳ̹ϡbit18-Ӳ̹ϻָbit19- + DWORD dwOperateInfo; //Ϣλʾbit0-bit1-bit2-bit3-·bit4-·ָbit5-̡bit6-˳̡bit7-λ + BYTE byRes2[256]; // ֽ +}NET_DVR_ALARMHOST_PRINTER_CFG, *LPNET_DVR_ALARMHOST_PRINTER_CFG; + +typedef struct tagNET_DVR_ALARMHOST_NETPARAM +{ + DWORD dwSize; + NET_DVR_IPADDR struIP; + WORD wPort; + BYTE byAddressType; //0 - , 1 - ipv4/ipv6ַ2 - + BYTE byRes1[1]; + BYTE byDomainName[MAX_DOMAIN_NAME/*64*/]; //GPRSáʱֶξЧ + BYTE byReportProtocol; //1-private 2-NAL2300, 3-Ehome + BYTE byDevID[ACCOUNTNUM_LEN_32/*32*/]; //ЭΪNAL2300ʱЧ + BYTE byRes2[7]; //GPRSڹ̶ķϽеģԲҪϢԤһЩֶ +}NET_DVR_ALARMHOST_NETPARAM, *LPNET_DVR_ALARMHOST_NETPARAM; + +typedef struct tagNET_DVR_REGISTER_RS485CFG +{ + DWORD dwSize; // ṹС + WORD wDeviceProtocol; // ǰ豸Э ͨȡЭбȡ + BYTE byRes[2]; + DWORD dwBaudRate; //(bps)0-501-752-1103-1504-3005-6006-12007-24008-48009-960010-1920011-3840012-5760013-7680014-115.2k + BYTE byRes1[124]; // ֽ +}NET_DVR_REGISTER_RS485CFG, *LPNET_DVR_REGISTER_RS485CFG; + +typedef struct tagNET_DVR_ALARMHOST_WIRELESS_NETWORK_CFG +{ + DWORD dwSize; + NET_DVR_ALARMHOST_NETPARAM struNetCenter[MAX_CENTERNUM]; // GPRSز + BYTE byAPNName[APN_NAME_LEN/*32*/]; + BYTE byAPNUserName[APN_USERNAME_LEN/*24*/]; + BYTE byAPNPassWord[APN_USERPASSWORD_LEN/*16*/]; + BYTE byReconnTime; //ʱ䣬ʧЧʱ䣬10Ϊλ,ȡֵΧ1-30 + BYTE byOverTime; //ʱʱ䣬OverTimeʱûյЧΧ1-254λ30 + BYTE byDetectLinkTime; // //̽·Ƿ񻹱֣Χ1-30λ10s + BYTE byRes1; + BYTE bySIMNum[NAME_LEN/*32*/]; //SIMţֻţ + NET_DVR_IPADDR struSIMIP; //½IPַֻܻȡ + BYTE byRes2[64]; +}NET_DVR_ALARMHOST_WIRELESS_NETWORK_CFG, *LPNET_DVR_ALARMHOST_WIRELESS_NETWORK_CFG; + + +/////////////////////// +typedef struct tagNET_DVR_ALARMHOST_NETCFG +{ + DWORD dwSize; + NET_DVR_ALARMHOST_NETPARAM struNetCenter[MAX_CENTERNUM]; + BYTE byRes1[32]; +}NET_DVR_ALARMHOST_NETCFG, *LPNET_DVR_ALARMHOST_NETCFG; + +//////////ľϴʽ///////////// +#define MAX_REPORTCHAN_NUM 4 +#define MAX_CENTERGROUP_NUM 16 +typedef struct tagNET_DVR_ALARMHOST_REPORTCENTER_CFG +{ + DWORD dwSize; + BYTE byValid; //Ƿ + BYTE byRes[3]; //1 + BYTE byChanAlarmMode[MAX_REPORTCHAN_NUM/*4*/]; //鱨ͨ 1-T12-T2 3-N1 4-N25-G1 6-G2 + BYTE byDealFailCenter[MAX_CENTERGROUP_NUM/*16*/]; //ָ鷢ʧܱ棬±ʾĸ飬0-ѡ1-ѡ + BYTE byDataType; //1- 2-DZ 3- + BYTE byRes2[15]; //2 +}NET_DVR_ALARMHOST_REPORTCENTER_CFG, *LPNET_DVR_ALARMHOST_REPORTCENTER_CFG; + +#define MAX_EVENT_NUM 32//籨¼ +typedef struct tagNET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40 +{ + DWORD dwSize; + BYTE byValid; //Ƿ + BYTE byDataType; //1-б 2-зDZ 3-ݣ4-棬5-Ƿ + BYTE byRes[2]; //1 + BYTE byChanAlarmMode[MAX_REPORTCHAN_NUM/*4*/]; //鱨ͨ 1-T12-T2 3-N1 4-N25-G1 6-G27-N3 8-N49-CMK-4G10-CMK-NET(豸֧3GG1G2ʾ3Gģ飬֧֣ʾGPRSģ飬һ豸3GģGPRSģֻһ) + BYTE byDealFailCenter[MAX_CENTERGROUP_NUM/*16*/]; //ָ鷢ʧܱ棬±ʾĸ飬0-ѡ1-ѡ + BYTE byZoneReport[MAX_ALARMHOST_ALARMIN_NUM]; //ͣ0-ϴ1-ϴ + BYTE byNonZoneReport[MAX_EVENT_NUM]; //Ƿ, ÿһԪرʾһ¼ͣ0-ϴ1-ϴbyNonZoneReport[0]- byNonZoneReport[1]-ϵͳ״̬ byNonZoneReport[2]-ȡ byNonZoneReport[3]-Ա byNonZoneReport[4]- byNonZoneReport[5]- byNonZoneReport[6]-Юֱ byNonZoneReport[7]-ָ byNonZoneReport[8]-· byNonZoneReport[9]-·ָ档byNonZoneReport[10]-̽״̬棨ߡߣbyNonZoneReport[11]-̽״̬棨ѹǷѹbyNonZoneReport[12]-Ƶ + BYTE byAlarmNetCard[MAX_REPORTCHAN_NUM/*4*/]; //鱨ģ0-11-22-չ1,3-չ2ͨΪN1N2N3N4ʱЧ + BYTE byRes2[252]; //2 +}NET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40, *LPNET_DVR_ALARMHOST_REPORT_CENTER_CFG_V40; + + +//////////״̬ϴ///////////// +typedef struct tagNET_DVR_ALARMHOST_SAFETYCABINSTATE +{ + DWORD dwSize; + BYTE byEnterButton; //Űť״̬ 0- 1-ť + BYTE byExitButton; //Űť״̬ 0- 1-ť + BYTE byDoorState; //״̬ 0-Źر 1-Ŵ + BYTE byLockState; //״̬ 0- 1- + BYTE byUrgencyButton; //ť״̬ 0- 1-ť + BYTE byManState; //״̬ 0-û 1- + BYTE byAbnormal; //쳣״̬ 0- 1-쳣(ʹóʱϴ쳣) + BYTE byLightState; //ƹ״̬ 0- 1- + BYTE byFanState; //״̬ 0-أ1- + BYTE byFollow; //β״̬ 0-β棬1-β + BYTE byFighting; //״̬ 0-޴򶷣1-д + BYTE byFaint; //ε״̬ 0-ε1-ε + BYTE byManyPerson; //״̬ 0-޶˽գ1-˽ + BYTE byRes[59]; // +}NET_DVR_ALARMHOST_SAFETYCABINSTATE,*LPNET_DVR_ALARMHOST_SAFETYCABINSTATE; + +/////////ڣ״̬ϴ///////////// +typedef struct tagNET_DVR_ALARMHOST_ALARMOUTSTATUS +{ + DWORD dwSize; + BYTE byName[32]; //ƻ򾯺 + BYTE byAlarmType; //1-״̬ 2-״̬ + WORD wChan; //DZ״ֵ̬ķΧΪ0-511Ǿ״̬Χ1-8ֻ1 + BYTE byAlarmStatus; //״̬ 0-ޱ 1-б + BYTE byRes[32]; +}NET_DVR_ALARMHOST_ALARMOUTSTATUS,*LPNET_DVR_ALARMHOST_ALARMOUTSTATUS; + +//////////ϴ///////////// +typedef struct tagNET_DVR_AUDIO_PARAM +{ + DWORD dwSize; + BYTE byAudioFormat; //Ƶʽ1-G7112-G722 + BYTE byRes1; + WORD wChannels; // number of channels (i.e. mono, stereo...) + DWORD dwSamplesPerSec; // + BYTE byRes2[20]; // + DWORD dwAudioSize; //ƵȴСѹĴС +}NET_DVR_AUDIO_PARAM,*LPNET_DVR_AUDIO_PARAM; + +//ԤV40ӿ +typedef struct tagNET_DVR_PREVIEWINFO +{ + LONG lChannel;//ͨ + DWORD dwStreamType; // ͣ0-1-2-33-4, 4-5,5-6,7-7,8-8,9-9,10-10 + DWORD dwLinkMode;// 0TCPʽ,1UDPʽ,2ಥʽ,3 - RTPʽ4-RTP/RTSP,5-RSTP/HTTP ,6- HRUDPɿ䣩 ,7-RTSP/HTTPS + HWND hPlayWnd;//Ŵڵľ,ΪNULLʾͼ + DWORD bBlocked; //0-ȡ, 1-ȡ, SDKڲconnectʧܽ5sijʱܹ,ʺѯȡ. + DWORD bPassbackRecord; //0-¼ش,1¼ش + BYTE byPreviewMode;//Ԥģʽ0-Ԥ1-ӳԤ + BYTE byStreamID[STREAM_ID_LEN/*32*/];//IDlChannelΪ0xffffffffʱô˲ + BYTE byProtoType; //ӦòȡЭ飬0-˽Э飬1-RTSPЭ,2-SRTPܣӦ˽ṹdwLinkMode ֶΣ֧·ʽ, Ϊ1ʾudp䷽ʽTLSܣSRTPܣΪ2ʾಥ䷽ʽTLSܣSRTPܣ + BYTE byRes1; + BYTE byVideoCodingType; //ݱ 0-ͨñ 1-ȳ̽ԭʼݣ¶ݵļϢͨȥ㣬ԭʼʵ¶ֵ + DWORD dwDisplayBufNum; //ſⲥŻ󻺳֡Χ1-500ʱĬΪ1 + BYTE byNPQMode; //NPQֱģʽǹý 0-ֱ 1-ý + BYTE byRecvMetaData; //Ƿmetadataݣ豸Ƿָ֧ùͨGET /ISAPI/System/capabilities DeviceCap.SysCap.isSupportMetadataǷΪtrue + BYTE byDataType; //ͣ0-ݣ1-Ƶ + BYTE byRes[213]; +}NET_DVR_PREVIEWINFO, *LPNET_DVR_PREVIEWINFO; + +//ö +typedef enum _NET_DVR_LINK_KIND_ +{ + ENUM_LINK_PREVIEW = 1, //Ԥ + ENUM_LINK_PLAYBACK, //طţ + ENUM_LINK_VOICEPLAY //Խ/ת +}NET_DVR_LINK_KIND; + +//ӵַṹ壬RTSPȡʱһ˿ͨŵ +typedef struct tagNET_DVR_LINK_ADDR +{ + NET_DVR_IPADDR_UNION uLocalIP; //IPַ + WORD wLocalPort[10]; //ض˿ں + BYTE byLocalPortNum; //ض˿ + BYTE byRes1[3]; + NET_DVR_IPADDR_UNION uDevIP; //豸IPַ + WORD wDevPort[10]; //豸˿ں + BYTE byDevPortNum; //豸˿ + BYTE byRes2[3]; + BYTE byRes[80]; +}NET_DVR_LINK_ADDR, *LPNET_DVR_LINK_ADDR; + +//豸ȡ +typedef struct tagNET_DVR_PREVIEWINFO_SPECIAL +{ + char sURL[1024]; //ȡURLӦ/ISAPI/SDT/Management/Region/IDصȡURL豸صURLϷҪûڵ㣬ûϢdeviceUserdevicePasswordڵ + //ʾrtsp://admin:abcd12345@10.7.37.2:554/Streaming/Channels/101?transportmode=unicast + DWORD dwLinkMode;// 0TCPʽ,1UDPʽ,2ಥʽ,3 - RTPʽ4-RTP/RTSP,5-RSTP/HTTP + HWND hPlayWnd;//Ŵڵľ,ΪNULLʾͼ + DWORD bBlocked; //0-ȡ, 1-ȡ, SDKڲconnectʧܽ5sijʱܹ,ʺѯȡ. + DWORD dwDisplayBufNum; //ſⲥŻ󻺳֡Χ1-500ʱĬΪ1 + BYTE byRes[64]; +}NET_DVR_PREVIEWINFO_SPECIAL, *LPNET_DVR_PREVIEWINFO_SPECIAL; + + +//¼ + +typedef struct tagNET_DVR_TRIGGER_EVENT +{ + DWORD dwSize; + DWORD dwOverallEventTriggerAlarmoutOn; //ȫ¼λbit0-磬bit1-صѹͣbit2-绰ߵߣbit3-쳣bit4-쳣 ,bit5-Ӳ̹, bit6-3G/4Gź쳣, bit7-ģӣ bit8- WIFIͨŹϣbit9-RFźŸŹ + DWORD dwOverallEventTriggerAlarmoutOff; //ȫ¼λbit0-磬bit1-صѹͣbit2-绰ߵߣbit3-쳣bit4-쳣 ,bit5-Ӳ̹, bit6-3G/4Gź쳣, bit7-ģӣ bit8- WIFIͨŹϣbit9-RFźŸŹ + DWORD dwSubSystemEventTriggerAlarmoutOn[MAX_ALARMHOST_SUBSYSTEM/*32*/]; //ϵͳ¼,dwSubSystemEvent[0]ʾϵͳ1dwSubSystemEvent[2]ʾϵͳ2ϵͳȡwSubSystemÿϵͳ¼λʾbit0-ʱbit1-˳ʱbit2-bit3-bit4-bit5-,bit6-ָ,bit7-,bit8-ָ + DWORD dwSubSystemEventTriggerAlarmoutOff[MAX_ALARMHOST_SUBSYSTEM/*32*/]; //ϵͳ¼ر,wSubSystemEvent[0]ʾϵͳ1dwSubSystemEvent[2]ʾϵͳ2ϵͳȡwSubSystemÿϵͳ¼λʾbit0-ʱbit1-˳ʱbit2-bit3-bit4-bit5-,bit6-ָ,bit7-,bit8-ָ + BYTE byRes[128]; +}NET_DVR_TRIGGER_EVENT, *LPNET_DVR_TRIGGER_EVENT; + +//ϴ +typedef struct tagNET_DVR_ALARMHOST_FAULT_CFG +{ + DWORD dwSize; + DWORD dwCheckFault; //Ƿϣbit0-ϵ磬bit1-Ƿѹbit2-𿪣bit3-绰ߵߣbit4-485豸쳣bit5-ϣbit6-쳣bit7-չ쳣bit8-Ӳ쳣bit9- FPGAϣbit10- ģ, bit11-չ쳣bit12-WIFIͨŹϣbit13-RFźŸŹϣֵ֧Ĺʹȡ + DWORD dwOverallFaultJointLED; //Ϲȫָּʾ bit0-ϵ磬bit1-Ƿѹbit2-𿪣bit3-绰ߵߣbit4-485豸쳣bit5-ϣbit6-쳣bit7-չ쳣bit8-Ӳ쳣ֵ֧Ĺʹȡ + DWORD dwOverallFaultJointSound; //Ϲȫּ bit0-ϵ磬bit1-Ƿѹbit2-𿪣bit3-绰ߵߣbit4-485豸쳣bit5-ϣbit6-쳣bit7-չ쳣bit8-Ӳ쳣ֵ֧Ĺʹȡ + DWORD dwSubSystemFaultJointLED[MAX_ALARMHOST_SUBSYSTEM]; /*ϹϵͳָʾdwSubSystemFaultJointLED[0]ʾϵͳ1ĹϢdwSubSystemFaultJointLED[0]ÿһλʾһйϣbit0-ϵ磬bit1-Ƿѹbit2-𿪣bit3-绰ߵߣbit4-485豸쳣bit5-ϣbit6-쳣bit7-չ쳣bit8-Ӳ쳣; dwSubSystemFaultJointLED[1]ʾϵͳ2Դ*/ + DWORD dwSubSystemFaultJointSound[MAX_ALARMHOST_SUBSYSTEM];/*ϹϵͳڼdwSubSystemFaultJointLED[0]ʾϵͳ1ĹϢdwSubSystemFaultJointSound [0]ÿһλʾһйϣbit0-ϵ磬bit1-Ƿѹbit2-𿪣bit3-绰ߵߣbit4-485豸쳣bit5-ϣbit6-쳣bit7-չ쳣bit8-Ӳ쳣; dwSubSystemFaultJointSound [1]ʾϵͳ2Դ*/ + DWORD dwFaultJointFaultLight;//Ϲϵ + BYTE byRes[60]; +}NET_DVR_ALARMHOST_FAULT_CFG, *LPNET_DVR_ALARMHOST_FAULT_CFG; + +typedef struct tagNET_DVR_LIST_INFO +{ + DWORD dwSize; + BYTE byIndex; //ϵͳţ0xffʾϵͳ + BYTE byRes[63]; // +}NET_DVR_LIST_INFO, *LPNET_DVR_LIST_INFO; + +#define CID_CODE_LEN 4 +#define DEV_SERIAL_LEN 9 +typedef enum tagNET_DVR_ALARMHOST_REPORT_TYPE +{ + NET_DVR_DEFENCE_ALARM = 1, // + NET_DVR_VIDEO_ALARM, //Ƶ + NET_DVR_VIRTUAL_DEFENCE_ALARM, // + NET_DVR_HOSTAGE_ALARM, //Юֱ + NET_DVR_KNOCK_DOWN_ALARM, //𱨾 + NET_DVR_OPERATE_ALARM, // + NET_DVR_OHTER_ABNORMAL_ALARM //쳣 +}NET_DVR_ALARMHOST_REPORT_TYPE; + + +typedef enum tagNET_DVR_ALARMHOST_CID_MAIN_TYPE +{ + CID_ENTER = 1000, /*Ļ*/ + CID_EXIT = 3000 /*ָĻ*/ +}NET_DVR_ALARMHOST_CID_MAIN_TYPE; + + +typedef enum tagNET_DVR_ALARMHOST_CID_MINOR_TYPE +{ + CID_MEDICAL_ALARM = 100, /*Ȼ*/ + CID_ALARM = 103, /**/ + CID_FIRE_ALARM = 110, /**/ + CID_ABDUCT_REPORT = 121, /*Юֱ*/ + CID_SILENT_24 = 122, /*24Сʱ*/ + CID_AUDIO_24 = 123, /*24Сʱ*/ + CID_AUXILIARY_24 = 124, /*24Сʱ*/ + CID_SHOCK_24 = 125, /*24Сʱ*/ + CID_OVERTIME_ALARM = 126, /*ʱ*/ + CID_EMERGENCE_CALL_HELP = 129, /**/ + CID_BURGLARY_ALARM = 130, /*Ա*/ + CID_PERIMETER_ALARM = 131, /*ܽ*/ + CID_INNET_ALARM = 132, /*ڲ*/ + CID_ENTER_EXIT = 134, /**/ + CID_DEVICE_OPEN = 137, /*豸*/ + CID_ZONE_BUS_BREAK = 141, /*߿·*/ + CID_ZONE_BUS_SHORT = 142, /*߶·*/ + CID_MOTION_ALARM = 148, /*ƶ*/ + CID_GAS_LEAKAGE = 151, /*ȼй©*/ + CID_ZONE_EARLY_WARNING = 207, /*Ԥ*/ + CID_AC_LOSS = 301, /**/ + CID_LOW_BATT_VOL = 302, /*صѹ*/ + CID_DEV_RESET = 305, /*λ*/ + CID_MBUS_MODEL_FAULT = 333, /*չģ*/ + CID_PRINTER_FAIL = 336, /*ӡ*/ + CID_LOW_EXPANDER_VOL = 338, /*չģѹ*/ + CID_EXPANDER_OPEN = 341, /*չģ鱻*/ + CID_EXPANDER_AC_POWER_DOWN = 342, /*չģ齻*/ + CID_WIRELESS_REPEATER_TAMPERED = 343, /*м𴥷*/ + CID_WIRELESS_SIREN_TAMPERED = 344, /*߾ŷ𴥷*/ + CID_WIRELESS_SIREN_DISCONNECTED = 345, /*߾ŵ*/ + CID_LINE_LOSS = 354, /*绰ͨѶʧ*/ + CID_BUS_LOSS = 382, /*չģ*/ + CID_DETECTOR_OPEN = 383, /*Ӧ*/ + CID_ZONE_OPEN_CIRCUIT = 386, /*·*/ + CID_ZONE_SHORT_CIRCUIT = 387, /*·*/ + CID_GUARD = 401, /**/ + CID_GUARD_AUTO = 403, /*Զ*/ + CID_CANCEL_ARM = 406, /**/ + CID_GUARD_IMME = 408, /*ʱ*/ + CID_KEY_ZONE_GUARD = 409, /*Կ׷*/ + CID_GUARD_STAY = 441, /*ز*/ + CID_FORCED_ARM = 442, /*ǿƲ*/ + CID_AUTOCTRL_TRIG = 443, /*ʱ/ش*/ + CID_ONETOUCH_AWAY_ARMING = 444, /*һ*/ + CID_ONETOUCH_STAY_ARMING = 445, /*һز*/ + CID_CARD_ARMING_OR_DISARMING = 446, /*ˢ*/ + CID_LATE_TO_DISARM = 452, /*ٵ*/ + CID_AUTOGUARD_FAIL = 455, /*Զʧ*/ + CID_AOPEN_TRIG_FAIL = 460, /*ʱʧ*/ + CID_ACLOSE_TRIG_FAIL = 461, /*ʱرմʧ*/ + CID_AUTOUNGUARD_FAIL = 462, /*Զʧ*/ + CID_BYPASS = 570, /*·¼*/ + CID_GROUP_BYPASS = 574, /*·*/ + CID_MANUAL_TEST_RPT = 601, /*ֶԱ*/ + CID_AUTO_TEST_RPT = 602, /*ʱԱ*/ + CID_PHONE_CONNET_TEST = 617, /*绰·*/ + CID_ENTER_PROG = 627, /**/ + CID_EXIT_PROG = 628, /*˳*/ + CID_FIELD_DETECTION = 759, /**/ + CID_LINE_DETECTION = 773, /*籨*/ + CID_PIR_ALARM = 774, /*PIR*/ + CID_SOUND_INTENSITY_RISE = 775, /*ǿ*/ + CID_SOUND_INTENSITY_DROP = 776, /*ǿ*/ + CID_AUDIO_INPUT_EXCEPTION = 777, /*Ƶ쳣*/ + CID_SOFT_INSTAND = 810, /**/ + CID_SOFT_FIRE = 811, /**/ + CID_SOFT_MOBS = 812, /*˾mobster*/ + CID_KEYPAD_LOCKED = 862, /**/ + CID_ABSENCE_ALARM = 863, /*ֵ*/ + CID_KEY_FAIL = 910, /*̵*/ + CID_TRIGGER_FAIL = 911, /*ϴ*/ + CID_GPK_FAIL = 912, /*GP/K*/ + CID_MODULE_FAIL = 913, /*MN/K*/ + CID_WIRELESS_DETECTOR_FAIL = 914, /*̽*/ + CID_WIRELESS_DETECTOR_BATTERY_LOW = 915,/*̽Ƿѹ/ָ*/ + CID_EXPANDER_DISCONNECT = 916, /*չģ*/ + CID_WIRELESS_REPEATER_DISCONNECT = 917, /*м*/ + CID_RADAR_TRANS_FAULT = 918, /*״ź쳣*/ + CID_WIRELESS_SIREN_LOW_BATTERY = 919, /*߾ŵ*/ + CID_WRIE_LESS_NET = 920, /**/ + CID_SIM_FAULT = 921, /*SIM*/ + CID_WIFI_ABNORMAL = 922, /*WIFIͨ쳣/ָ*/ + CID_RF_ABNORMAL = 923, /*RFź쳣/ָ*/ + CID_DATE_TRAFFIC_OVERFLOW = 924, /**/ + CID_IPADDR_CONFLICT = 930, /*IPͻ*/ + CID_ETHERNET_BROKEN = 931, /*߶*/ + CID_GROUP_OUT_RP = 932, /*ͨѶʧ*/ + CID_GROUP_IN_RP = 933, /*ͨͨѶʧ*/ + CID_MOTION_DECTECT = 940, /*ƶⱨʼ/*/ + CID_MASK_ALARM = 941, /*ڵʼ/*/ + CID_VI_LOST = 942, /*Ƶʧʼ/*/ + CID_VS_MISMATCH = 943, /*/Ƶʽƥ*/ + CID_VI_EXCEPTION = 944, /*Ƶ쳣/ָ*/ + CID_HD_FULL = 945, /*Ӳ/ָ*/ + CID_HD_ERROR = 946, /*Ӳ̴/ָ*/ + CID_PIC_SEND_FAILED = 947, /*ͼƬϴʧ*/ + CID_KEY_LOCKED = 948, /**/ + CID_NETWORK_CAMERA_DISCONNECT = 949, /*IPCϿ*/ + CID_DUTY_CHECKING = 960, /*ֵز*/ + CID_POST_RESPONSE = 961, /*ֵӦ*/ + CID_ZONE_BUS_SEARCH = 970, /**/ + CID_ZONE_BUS_REGIST = 971, /*ע*/ + CID_GUARD_DELAY_OP = 972, /*Զʱ*/ + CID_GUARD_SINGLE = 973, /**/ + CID_SINGLE_ZONE_CLEARED = 974, /**/ + CID_ZONE_ASSOCIATED_DETECTOR = 975, /*/ɾ̽*/ + CID_ZONE_CONSULTING = 976, /*ҵѯ*/ + CID_EXPANDER_DELETED = 977, /*ɾչģ*/ + CID_WIRELESS_REPEATER_DELETED = 978, /*ɾм*/ + CID_WIRELESS_SIREN_DELETED = 979, /*ɾ߾*/ +}NET_DVR_ALARMHOST_CID_MINOR_TYPE; + +typedef enum tagNET_DVR_ALARMHOST_CID_ALL_MINOR_TYPE +{ + CID_TYPE_MEDICAL_ALARM = 1100, /*˾Ȼ*/ + CID_TYPE_MEDICAL_ALARM_RESET = 3100, /*˾Ȼָ*/ + CID_TYPE_ALARM = 1103, /*ʱ*/ + CID_TYPE_ALARM_RESET = 3103, /*ʱָ*/ + CID_TYPE_FIRE_ALARM = 1110, /*𾯱*/ + CID_TYPE_FIRE_ALARM_RESET = 3110, /*𾯱ָ*/ + CID_TYPE_ABDUCT_REPORT = 1121, /*Юֱ*/ + CID_TYPE_SILENT_24 = 1122, /*24Сʱ*/ + CID_TYPE_SILENT_24_RESET = 3122, /*24Сʱָ*/ + CID_TYPE_AUDIO_24 = 1123, /*24Сʱ*/ + CID_TYPE_AUDIO_24_RESET = 3123, /*24Сʱָ*/ + CID_TYPE_AUXILIARY_24 = 1124, /*24Сʱ*/ + CID_TYPE_AUXILIARY_24_RESET = 3124, /*24Сʱָ*/ + CID_TYPE_SHOCK_24 = 1125, /*24Сʱ𶯱*/ + CID_TYPE_SHOCK_24_RESET = 3125, /*24Сʱ𶯱ָ*/ + CID_TYPE_TIMEOUT = 1126, /*ʱ*/ + CID_TYPE_TIMEOUT_RESET = 3126, /*ʱָ*/ + CID_TYPE_EMERGENCE_CALL_HELP = 1129, /**/ + CID_TYPE_EMERGENCE_CALL_HELP_RESET = 3129, /*ָ*/ + CID_TYPE_BURGLARY_ALARM = 1130, /*Ա*/ + CID_TYPE_BURGLARY_ALARM_RESET = 3130, /*Աָ*/ + CID_TYPE_PERIMETER_ALARM = 1131, /*ܽ籨*/ + CID_TYPE_PERIMETER_ALARM_RESET = 3131, /*ܽ籨ָ*/ + CID_TYPE_INNET_ALARM = 1132, /*ڲʱ*/ + CID_TYPE_INNET_ALARM_RESET = 3132, /*ڲʱָ*/ + CID_TYPE_ENTER_EXIT = 1134, /*ʱ*/ + CID_TYPE_ENTER_EXIT_RESET = 3134, /*ʱָ*/ + CID_TYPE_DEVICE_OPEN = 1137, /*豸𱨾*/ + CID_TYPE_DEVICE_OPEN_RESET = 3137, /*豸𱨾ָ*/ + CID_TYPE_ZONE_BUS_BREAK = 1141, /*߿·*/ + CID_TYPE_ZONE_BUS_BREAK_RESET = 3141, /*߿·ָ*/ + CID_TYPE_ZONE_BUS_SHORT = 1142, /*߶·*/ + CID_TYPE_ZONE_BUS_SHORT_RESET = 3142, /*߶·ָ*/ + CID_TYPE_MOTION_ALARM = 1148, /*豸ƶ*/ + CID_TYPE_MOTION_ALARM_RESET = 3148, /*豸ƶָ*/ + CID_TYPE_GAS_LEAKAGE_ALARM = 1151, /*ȼй©*/ + CID_TYPE_GAS_LEAKAGE_ALARM_RESET = 3151, /*ȼй©ָ*/ + CID_TYPE_ZONE_EARLY_WARNING = 1207, /*Ԥ*/ + CID_TYPE_ZONE_EARLY_WARNING_RESET = 3207, /*Ԥָ*/ + CID_TYPE_AC_LOSS = 1301, /**/ + CID_TYPE_AC_LOSS_RESET = 3301, /*ָ*/ + CID_TYPE_LOW_BATT_VOL = 1302, /*صѹ*/ + CID_TYPE_LOW_BATT_VOL_NORMAL = 3302, /*صѹ*/ + CID_TYPE_DEV_RESET = 1305, /*λ*/ + CID_TYPE_MBUS_MODEL_FAULT = 1333, /*չģ*/ + CID_TYPE_MBUS_MODEL_RESET = 3333, /*չģָ*/ + CID_TYPE_PRINTER_OFF = 1336, /*ӡ*/ + CID_TYPE_PRINTER_ON = 3336, /*ӡָ*/ + CID_TYPE_EXTEND_MODULE_VOL_LOW = 1338, /*չģѹ*/ + CID_TYPE_EXTEND_MODULE_VOL_NORMAL = 3338, /*չģѹ*/ + CID_TYPE_EXTEND_MODULE_REMOVE = 1341, /*չģ𴥷*/ + CID_TYPE_EXTEND_MODULE_RECOVER = 3341, /*չģָ*/ + CID_TYPE_EXTEND_MODULE_AC_LOSS = 1342, /*չģ齻*/ + CID_TYPE_EXTEND_MODULE_AC_LOSS_RESET = 3342, /*չģ齻ָ*/ + CID_TYPE_WIRELESS_REPEATER_TAMPER = 1343, /*м𴥷*/ + CID_TYPE_WIRELESS_REPEATER_RESTORE = 3343, /*мָ*/ + CID_TYPE_WIRELESS_SIREN_TAMPER = 1344, /*߾ŷ𴥷*/ + CID_TYPE_WIRELESS_SIREN_RESTORE = 3344, /*߾ŷָ*/ + CID_TYPE_WIRELESS_SIREN_DISCONNECT = 1345, /*߾ŵ*/ + CID_TYPE_WIRELESS_SIREN_CONNECT = 3345, /*߾ŵ߻ָ*/ + CID_TYPE_LINE_LOSS = 1354, /*绰߶Ͽ*/ + CID_TYPE_LINE_LOSS_RESET = 3354, /*绰*/ + CID_TYPE_BUS_LOSS = 1382, /*չģ*/ + CID_TYPE_BUS_LOSS_RESET = 3382, /*չģ߻ָ*/ + CID_TYPE_SENSOR_TAMPER = 1383, /*Ӧ*/ + CID_TYPE_SENSOR_TAMPER_RESET = 3383, /*Ӧָ*/ + CID_TYPE_ZONE_OPEN_CIRCUIT_ALARM = 1386, /*·*/ + CID_TYPE_ZONE_SHORT_CIRCUIT_ALARM = 1387, /*·*/ + CID_TYPE_DISARM = 1401, /**/ + CID_TYPE_ARM = 3401, /**/ + CID_TYPE_DISARM_AUTO = 1403, /*Զ*/ + CID_TYPE_ARM_AUTO = 3403, /*Զ*/ + CID_TYPE_CANCEL_ARM = 1406, /**/ + CID_TYPE_ARM_IMME = 3408, /*ʱ*/ + CID_TYPE_KEY_ZONE_ARM = 1409, /*Կ׷*/ + CID_TYPE_KEY_ZONE_DISARM = 3409, /*Կ׷*/ + CID_TYPE_GUARD_STAY = 3441, /*ز*/ + CID_TYPE_FORCED_ARM = 3442, /*ǿƲ*/ + CID_TYPE_AUTOCTRL_TRIG_ON = 1443, /*ʱ*/ + CID_TYPE_AUTOCTRL_TRIG_OFF = 3443, /*ʱش*/ + CID_TYPE_LATE_TO_DISARM = 1452, /*ٵ*/ + CID_TYPE_AUTOGUARD_FAIL = 1455, /*Զʧ*/ + CID_TYPE_AOPEN_TRIG_FAIL = 1460, /*ʱʧ*/ + CID_TYPE_ACLOSE_TRIG_FAIL = 1461, /*ʱرմʧ*/ + CID_TYPE_AUTOUNGUARD_FAIL = 1462, /*Զʧ*/ + CID_TYPE_BYPASS = 1570, /*·*/ + CID_TYPE_BYPASS_RESET = 3570, /*·ָ*/ + CID_TYPE_GROUP_BYPASS = 1574, /*ϵͳ·*/ + CID_TYPE_GROUP_BYPASS_RESET = 3574, /*ϵͳ·ָ*/ + CID_TYPE_MANUAL_TEST_RPT = 1601, /*ֶԱ*/ + CID_TYPE_AUTO_TEST_RPT = 1602, /*ʱԱ*/ + CID_TYPE_LINE_TEST = 1617, /*绰·*/ + CID_TYPE_ENTER_PROG = 1627, /**/ + CID_TYPE_EXIT_PROG = 1628, /*˳*/ + CID_TYPE_FIELD_DETECTION = 1759, /**/ + CID_TYPE_FIELD_DETECTION_RESET = 3759, /*ָֻ*/ + CID_TYPE_LINE_DETECTION = 1773, /*籨*/ + CID_TYPE_LINE_DETECTION_RESET = 3773, /*籨ָ*/ + CID_TYPE_PIR_ALARM = 1774, /*PIR*/ + CID_TYPE_PIR_ALARM_RESET = 3774, /*PIRָ*/ + CID_TYPE_SOUND_INTENSITY_RISE = 1775, /*ǿ*/ + CID_TYPE_SOUND_INTENSITY_RISE_RESET = 3775, /*ǿָ*/ + CID_TYPE_SOUND_INTENSITY_DROP = 1776, /*ǿ*/ + CID_TYPE_SOUND_INTENSITY_DROP_RESET = 3776, /*ǿָ*/ + CID_TYPE_AUDIO_INPUT_EXCEPTION = 1777, /*Ƶ쳣*/ + CID_TYPE_AUDIO_INPUT_EXCEPTION_RESET = 3777, /*Ƶ쳣ָ*/ + CID_TYPE_SOFT_INSTAND = 1810, /**/ + CID_TYPE_SOFT_FIRE = 1811, /**/ + CID_TYPE_SOFT_MOBS = 1812, /*˾*/ + CID_TYPE_KEYPAD_LOCK = 1862, /**/ + CID_TYPE_KEYPAD_UNLOCK = 3862, /*̽*/ + CID_TYPE_ABSENCE_ALARM = 1863, /*ֵ*/ + CID_TYPE_KEY_FAIL = 1910, /*̵*/ + CID_TYPE_KEY_RESET = 3910, /*ָ̻*/ + CID_TYPE_TRIGGER_FAIL = 1911, /*ϴ*/ + CID_TYPE_TRIGGER_RESET = 3911, /*ϴָ*/ + CID_TYPE_GPK_FAIL = 1912, /*GP/K*/ + CID_TYPE_GPK_RESET = 3912, /*GP/Kָ*/ + CID_TYPE_MODULE_FAIL = 1913, /*MN/K*/ + CID_TYPE_MODULE_RESET = 3913, /*MN/Kָ*/ + CID_TYPE_WIRELESS_DETECTOR_FAIL = 1914, /*̽*/ + CID_TYPE_WIRELESS_DETECTOR_RESET = 3914, /*̽߻ָ*/ + CID_TYPE_WIRELESS_DETECTOR_BATTERY_LOW = 1915, /*̽ѹ*/ + CID_TYPE_WIRELESS_DETECTOR_BATTERY_NORMAL = 3915, /*̽ѹ*/ + CID_TYPE_EXTEND_MODULE_LOSS = 1916, /*չģ*/ + CID_TYPE_EXTEND_MODULE_LOSS_RESET = 3916, /*չģ߻ָ*/ + CID_TYPE_WIRELESS_REPEATER_DISCONNECT = 1917, /*м*/ + CID_TYPE_WIRELESS_REPEATER_CONNECT = 3917, /*м߻ָ*/ + CID_TYPE_RADAR_TRANS_FAULT = 1918, /*״ź쳣*/ + CID_TYPE_RADAR_TRANS_RESET = 3918, /*״ź쳣ָ*/ + CID_TYPE_WRIELESS_SIREN_LOW_BATTERY = 1919, /*߾ŵ*/ + CID_TYPE_NORMAL_WRIELESS_SIREN_BATTERY = 3919, /*߾ŵ*/ + CID_TYPE_WRIELESS_NET_FAULT = 1920, /**/ + CID_TYPE_WRIELESS_NET_RESET = 3920, /*ϻָ*/ + CID_TYPE_SIM_FAULT = 1921, /*SIM쳣*/ + CID_TYPE_SIM_RESET = 3921, /*SIM쳣ָ*/ + CID_TYPE_WIFI_ABNORMAL = 1922, /*WIFIͨ쳣*/ + CID_TYPE_WIFI_NORMAL = 3922, /*WIFIͨŻָ*/ + CID_TYPE_RF_ABNORMAL = 1923, /*RFź쳣*/ + CID_TYPE_RF_NORMAL = 3923, /*RFź*/ + CID_TYPE_DATE_TRAFFIC_OVERFLOW = 1924, /**/ + CID_TYPE_IPADDR_CONFLICT = 1930, /*IPͻ*/ + CID_TYPE_IPADDR_NORMAL = 3930, /*IP*/ + CID_TYPE_ETHERNET_BROKEN = 1931, /**/ + CID_TYPE_ETHERNET_NORMAL = 3931, /*ϻָ*/ + CID_TYPE_MOTION_DECTECT_START = 1940, /*ƶⱨʼ*/ + CID_TYPE_MOTION_DECTECT_STOP = 3940, /*ƶⱨ*/ + CID_TYPE_MASK_ALARM_START = 1941, /*ڵʼ*/ + CID_TYPE_MASK_ALARM_STOP = 3941, /*ڵ*/ + CID_TYPE_VI_LOST_START = 1942, /*ƵźŶʧ*/ + CID_TYPE_VI_LOST_STOP = 3942, /*ƵźŻָ*/ + CID_TYPE_VS_MISMATCH = 1943, /*/Ƶʽƥ*/ + CID_TYPE_VS_MATCH = 3943, /*/Ƶʽָ*/ + CID_TYPE_VI_EXCEPTION = 1944, /*Ƶ쳣*/ + CID_TYPE_VI_NORMAL = 3944, /*Ƶָ*/ + CID_TYPE_HD_FULL = 1945, /*Ӳ*/ + CID_TYPE_HD_FREE = 3945, /*Ӳ̿*/ + CID_TYPE_HD_ERROR = 1946, /*Ӳ쳣*/ + CID_TYPE_HD_RESET = 3946, /*Ӳָ̻*/ + CID_TYPE_PIC_SEND_FAILED = 1947, /*ͼƬϴʧ*/ + CID_TYPE_SENDING_EMAIL_FAILED = 1948, /*ʼʧ*/ + CID_TYPE_NETWORK_CAMERA_DISCONNECT = 1949, /*IPCϿ*/ + CID_TYPE_NETWORK_CAMERA_CONNECT = 3949, /*IPCָ*/ + CID_TYPE_DUTY_CHECKING = 1960, /*ֵز*/ + CID_TYPE_POST_RESPONSE = 1961, /*ֵӦ*/ + CID_TYPE_ZONE_BUS_SEARCH = 1970, /**/ + CID_TYPE_ZONE_BUS_REGIST = 1971, /*ע*/ + CID_TYPE_GUARD_SINGLE_ARM = 1973, /**/ + CID_TYPE_GUARD_SINGLE_DISARM = 3973, /**/ + CID_TYPE_SINGLE_ZONE_ALARM_CLEARED = 1974, /**/ + CID_TYPE_ZONE_ASSOCIATED_DETECTOR_DEL = 1975, /*ɾ̽*/ + CID_TYPE_ZONE_ASSOCIATED_DETECTOR_ADD = 3975, /*̽*/ + CID_TYPE_ZONE_CONSULT = 1976, /*ҵѯ*/ + CID_TYPE_ZONE_CONSULT_STOP = 3976, /*ҵѯ*/ + CID_TYPE_EXTEND_MODULE_DEL = 1977, /*ɾչģ*/ + CID_TYPE_EXTEND_MODULE_ADD = 3977, /*չģ*/ + CID_TYPE_WIRELESS_REPEATER_DEL = 1978, /*ɾм*/ + CID_TYPE_WIRELESS_REPEATER_ADD = 3978, /*м*/ + CID_TYPE_WIRELESS_SIREN_DEL = 1979, /*ɾ߾*/ + CID_TYPE_WIRELESS_SIREN_ADD = 3979 /*߾*/ +}NET_DVR_ALARMHOST_CID_ALL_MINOR_TYPE; + + +typedef struct tagNET_DVR_CID_ALARM +{ + DWORD dwSize; + BYTE sCIDCode[CID_CODE_LEN/*4*/]; //CID¼ + BYTE sCIDDescribe[NAME_LEN/*32*/]; //CID¼ + NET_DVR_TIME_EX struTriggerTime; //ʱ + NET_DVR_TIME_EX struUploadTime; //ϴʱ + BYTE sCenterAccount[ACCOUNTNUM_LEN/*6*/]; //ʺ + BYTE byReportType; //NET_DVR_ALARMHOST_REPORT_TYPE + BYTE byUserType; //ûͣ0-û 1-û,2-ֻû,3-ϵͳû + BYTE sUserName[NAME_LEN/*32*/]; //ûû + WORD wKeyUserNo; //û 0xFFFFʾЧ + BYTE byKeypadNo; //̺ 0xFFʾЧ + BYTE bySubSysNo; //ϵͳ 0xFFʾЧ + WORD wDefenceNo; // 0xFFFFʾЧ + BYTE byVideoChanNo; //Ƶͨ 0ʾЧʾ豸ԴĬƵͨ + BYTE byDiskNo; //Ӳ̺ 0xFFʾЧ + WORD wModuleAddr; //ģַ 0xFFFFʾЧ + BYTE byCenterType; //0-Ч, 1-˺(6),2-չ˺(9) + BYTE byRelativeChannel; //ӵƵͨţ0ʾЧֽڱʾͨ + BYTE sCenterAccountV40[ACCOUNTNUM_LEN_32/*32*/]; //˺V40,ʹôֶʱsCenterAccountЧ + BYTE byDevSerialNo[DEV_SERIAL_LEN]; /*Ʒк*/ + BYTE byRepeaterNo; //мţΪ0Ч + WORD wRemoteCtrllerUserNo; //ңûţΪ0Ч + DWORD dwIOTChannelNo; //IOTͨ + BYTE standardCIDcode; //׼CID + BYTE byRes2[11]; +}NET_DVR_CID_ALARM, *LPNET_DVR_CID_ALARM; + +typedef struct tagNET_DVR_ALARMHOST_MODULE_CFG +{ + DWORD dwSize; + BYTE byModuleType; //1-2- 3- + BYTE byZoneType; //ͣ1-ط2-3-˫4-85-8·ģ6-0xffʾòЧ + BYTE byTriggerType; //ͣ1-ش 2-4·3-8·4-0xffʾòЧ + BYTE byRes1[1]; + char sModelInfo[MODULE_INFO_LEN]; //ģϢ + char sDeviceVersionInfo[VERSION_INFO_LEN]; /* 汾Ϣ*/ + BYTE byRes[188]; +} NET_DVR_ALARMHOST_MODULE_CFG, *LPNET_DVR_ALARMHOST_MODULE_CFG; + + +#define MAX_DECODE_CARD_SUPPORTDISPNUMS 8//ÿ뿨ֵ֧ʾͨ +#define MAX_SUPPORT_RES 32 +typedef struct tagNET_DVR_DECCARD_ABILITY_V41 /*뿨*/ +{ + BYTE byCardType; //뿨(0:MD,1:MD+,2:HD) + BYTE byDecNums; //ͨ + BYTE byDispNums; //ʾͨ + BYTE byDecStartIdx; //׸ͨнͨе + BYTE byDispStartIdx; //׸ʾͨʾͨе + BYTE byRes1[3]; + DWORD dwVgaSupportResolution[MAX_SUPPORT_RES/*32*/];//ֵ֧ķֱ + DWORD dwHdmiSupportResolution[MAX_SUPPORT_RES/*32*/];//ֵ֧ķֱ + DWORD dwDviSupportResolution[MAX_SUPPORT_RES/*32*/];//ֵ֧ķֱ + DWORD dwYpbprSupportResolution[MAX_SUPPORT_RES/*32*/];//ֵ֧ķֱ + BYTE byDispFormat[MAX_DECODE_CARD_SUPPORTDISPNUMS]; //ֵ֧ģʽ(HD_DISPLAY_FORMATеö) + BYTE byWindowMode[MAX_DECODE_CARD_SUPPORTDISPNUMS][12]; //ֵ֧Ĵģʽ(1,2,4,9,16)) + BYTE byRes2[36]; +} NET_DVR_DECCARD_ABILITY_V41,*LPNET_DVR_DECCARD_ABILITY_V41; + +#define MAX_DECODE_CARD_NUM 6 //뿨 +typedef struct tagNET_DVR_DECODESVR_ABILITY_V41 +{ + DWORD dwSize; /* ṹС */ + BYTE byCardNums; /* 뿨 */ + BYTE byStartChan; /* ʼͨ */ + BYTE byRes1[2]; + NET_DVR_DECCARD_ABILITY_V41 struDecCardAbility[MAX_DECODE_CARD_NUM]; + BYTE byRes2[64]; +}NET_DVR_DECODESVR_ABILITY_V41, *LPNET_DVR_DECODESVR_ABILITY_V41; + +// ¼״̬ +typedef struct tagNET_DVR_STREAM_RECORD_STATUS +{ + DWORD dwSize; + BYTE byRecord; //(ֻ)¼, 0¼1¼ 2- + //3- 4-Ƶ 5-δ 6-浵 + //7-ش 8-û 9-δ֤ + //10-浵к¼ 11-¼شк¼12-token֤ʧ + //13-ǰ¼ƻ 14-ͨ쳣ͨ״̬ 15-Ӳ + //16-Ӳ̴ 17-Ӳ + BYTE byOffLineRecord; //¼ 0-ر 1- + BYTE byRes1[2]; //ֽ + DWORD dwRelatedHD; // + BYTE byRes2[8]; //ֽ +}NET_DVR_STREAM_RECORD_STATUS, *LPNET_DVR_STREAM_RECORD_STATUS; + +#define CHAN_NO_LEN 24 + +typedef struct tagNET_DVR_DIRECT_CONNECT_CHAN_INFO +{ + BYTE byEnable; //Ƿ + BYTE byProType; //Эͣ0-˽Э(default), (Ҫ豸ȡ) + BYTE byZeroChan; //Ƿͨ,0-ǣ1- + BYTE byPriority; //ȼ + BYTE sUserName[NAME_LEN]; //û + BYTE sPassword[PASSWD_LEN]; // + BYTE byDomain[MAX_DOMAIN_NAME]; //豸 + NET_DVR_IPADDR struIP; //IPַ + WORD wDVRPort; //˿ں + BYTE byStreamType; //:0; 1 + BYTE byOnline; //ֻ0- 1- + DWORD dwChannel; //ͨ + BYTE byTransProtocol; //Эͣ0-TCP1-UDP2-ಥ + BYTE byLocalBackUp; //ر: 0-CVRرݣ1-CVRر--طʱһ¼һڴ浵رݣ + WORD wDirectLastTime; //ʱ + BYTE byChanNo[CHAN_NO_LEN]; //ͨ--VAGȡ +}NET_DVR_DIRECT_CONNECT_CHAN_INFO, *LPNET_DVR_DIRECT_CONNECT_CHAN_INFO; + +typedef struct tagNET_DVR_DIRECT_CONNECT_CHAN_INFO_V40 +{ + BYTE byEnable; //Ƿ + BYTE byProType; //Эͣ0-˽Э(default), 1-Э飬2-, 3- (Ҫ豸ȡ) + BYTE byZeroChan; //Ƿͨ,0-ǣ1- + BYTE byRes1; //ֶΣ0 + BYTE sUserName[NAME_LEN]; //û + BYTE sPassword[PASSWD_LEN]; // + BYTE byAddress[MAX_DOMAIN_NAME]; //ǰIP,Ҫ豸 ʽΪĸ'.'Ϊ,ΪIPַ + WORD wDVRPort; //˿ں + BYTE byStreamType; //:0; 1 + BYTE byOnline; //ֻ0- 1- + DWORD dwChannel; //ͨ + BYTE byTransProtocol; //Эͣ0-TCP1-UDP 2-ಥ + BYTE byLocalBackUp; //رݣ0-CVRرݣ1-CVRر--¼ʱһ¼һڴ浵رݣ + BYTE byRes2[2]; //ֶΣ0 + BYTE byVAGChanNo[MAX_VAG_CHANNO_LEN]; //ЭΪVAGʱӦVAGͨ + BYTE byRes[340]; +}NET_DVR_DIRECT_CONNECT_CHAN_INFO_V40, *LPNET_DVR_DIRECT_CONNECT_CHAN_INFO_V40; + + +typedef struct tagNET_DVR_PU_STREAM_URL_CFG +{ + BYTE byEnable; + BYTE byRes[3]; + BYTE byStreamMediaIP[64];//ýIP + WORD wStreamMediaPort; //ý˿ + BYTE byTransmitType; //ý崫Э 0- TCP 1- UDP + BYTE byRes1[33]; + BYTE byDevIP[64]; //豸IP + WORD wDevPort; //豸˿ + BYTE byChannel; //ͨ + BYTE byTransMode; //ģʽ 0- 1- + BYTE byProType; + // 0-˽ 1- 2- 3-ɳ 4-ɫǼ NET_DVR_GetIPCProtoListӿڻȡ + //VQDýֻ֧ 01ʽֱ֧ 01234 + BYTE byTransProtocol; //Э0-TCP, 1-UDP, 2-ಥʽ, 3-RTP + BYTE byRes3[2]; + BYTE sUserName[NAME_LEN]; //豸½û + BYTE sPassWord[PASSWD_LEN]; // 豸½ + BYTE byRes2[28]; //Ԥ +}NET_DVR_PU_STREAM_URL_CFG, *LPNET_DVR_PU_STREAM_URL_CFG; + +typedef struct tagNET_DVR_PU_STREAM_URL_CFG_V40 +{ + BYTE byEnable; + BYTE byRes[3]; + BYTE byStreamMediaIP[64];//ýIP + WORD wStreamMediaPort; //ý˿ + BYTE byTransmitType; //ý崫Э 0- TCP 1- UDP + BYTE byRes1; + BYTE byDevIP[64]; //豸IP + WORD wDevPort; //豸˿ + BYTE byChannel; //ͨ + BYTE byTransMode; //ģʽ 0- 1- + BYTE byProType; + // 0- 1- 2- 3-ɳ 4-ɫǼ NET_DVR_GetIPCProtoListӿڻȡ + //VQDýֻ֧ 01ʽֱ֧ 01234 + BYTE byTransProtocol; //Э0-TCP, 1-UDP 2-ಥʽ + BYTE byRes3[2]; + BYTE sUserName[NAME_LEN]; //豸½û + BYTE sPassWord[PASSWD_LEN]; // 豸½ + BYTE byRes2[308]; //Ԥ +}NET_DVR_PU_STREAM_URL_CFG_V40, *LPNET_DVR_PU_STREAM_URL_CFG_V40; + +typedef struct tagNET_DVR_STREAM_URL_V40 +{ + BYTE byEnable; + BYTE byStreamType; // + BYTE byLocalBackUp; //Ƿ񱾵ر + BYTE byRes; + BYTE strURL[URL_LEN_V40]; //ýURLԼ + DWORD dwProtocalType; //IPCЭֵͨȡIPCЭбõ + BYTE sUserName[NAME_LEN]; //豸½û + BYTE sPassWord[PASSWD_LEN]; // 豸½ + BYTE byAddress[MAX_DOMAIN_NAME]; //ԴIP,Ҫ ʽΪĸ'.'Ϊ,ΪIPַ + WORD wIPPort; //ԴӦĶ˿ں + WORD wChanNo; //Դ豸IPͨ + BYTE byVAGChanNo[MAX_VAG_CHANNO_LEN]; //Դͨ,VAG + BYTE byRes1[88]; +}NET_DVR_STREAM_URL_V40, *LPNET_DVR_STREAM_URL_V40; + +typedef union tagNET_DVR_STREAM_TYPE_UNION +{ + NET_DVR_DIRECT_CONNECT_CHAN_INFO struChanInfo; //IPͨϢ ֵΪ0 + NET_DVR_PU_STREAM_URL struStreamUrl; //ͨý嵽urlȡֵΪ4 + NET_DVR_PU_STREAM_URL_CFG struStreamUrlCfg; //ͨý嵽ָ豸ȡֵΪ6 +}NET_DVR_STREAM_TYPE_UNION, *LPNET_DVR_STREAM_TYPE_UNION; + +typedef union tagNET_DVR_STREAM_TYPE_V40_UNION +{ + NET_DVR_DIRECT_CONNECT_CHAN_INFO_V40 struChanInfo; //IPͨϢֵΪ0 + NET_DVR_PU_STREAM_URL struPuStreamUrl; //ͨý嵽urlȡֵΪ4 + NET_DVR_PU_STREAM_URL_CFG_V40 struStreamUrlCfg; //ͨý嵽urlȡֵΪ6 + NET_DVR_RTSP_PROTOCAL_CFG struRtspCfg; //ɱ׼RTSPȡ ֵ7 + NET_DVR_STREAM_URL_V40 struStreamUrlV40; //ͨý壨ּ֧ʽԴȡֵΪ8 +}NET_DVR_STREAM_TYPE_V40_UNION, *LPNET_DVR_STREAM_TYPE_V40_UNION; + + +typedef struct tagNET_DVR_STREAM_MODE_TYPE +{ + BYTE byGetStreamType; //ȡʽ0-ֱӴ豸ȡ1-ýȡ2-ͨIPServeripַȡ, 3.ͨIPServerҵ豸ͨýȥ豸 4-ͨýURLȥȡ + BYTE byRes[3]; // ֽ + NET_DVR_STREAM_TYPE_UNION uGetStream; // ͬȡʽṹ +}NET_DVR_STREAM_MODE_TYPE, *LPNET_DVR_STREAM_MODE_TYPE; + +// ԴϢ +typedef struct tagNET_DVR_STREAM_SRC_INFO +{ + DWORD dwSize; + NET_DVR_STREAM_MODE_TYPE struStreamSrcInfo; +}NET_DVR_STREAM_SRC_INFO,*LPNET_DVR_STREAM_SRC_INFO; + +typedef struct tagNET_DVR_STREAM_SRC_INFO_V40 +{ + DWORD dwSize; + BYTE byGetStreamType; //ȡʽ0-ֱӴ豸ȡ1-ýȡ2-ͨIPServeripַȡ, 3.ͨIPServerҵ豸ͨýȥ豸 4-ͨýURLȥȡ 6-ͨý嵽ָ豸ȡ + BYTE byRes1[3]; // ֽ + NET_DVR_STREAM_TYPE_V40_UNION uGetStream; // ͬȡʽṹ + BYTE byMonitorName[128];/*صƣ֧ģСдĸ֣»ߵȷַʽݵ¼صbyCharEncodeTypeֶжϣ + ĿǰCVRӢİ汾һвͬѡCVRҪصΪgbkӢİ汾CVRҪصΪiso8859-1硰A¥_ص1*/ + BYTE byRes[384]; // ֽ +}NET_DVR_STREAM_SRC_INFO_V40,*LPNET_DVR_STREAM_SRC_INFO_V40; + + +// ¼Ϣ +typedef struct +{ + DWORD dwSize; + NET_DVR_RECORD_V30 struRecordInfo; +}NET_DVR_STREAM_RECORD_INFO, *LPNET_DVR_STREAM_RECORD_INFO; + +// IDʱμ +typedef struct tagNET_DVR_STREAM_TIME_LOCK +{ + DWORD dwSize; // ṹС + NET_DVR_TIME strBeginTime; // ʼʱ + NET_DVR_TIME strEndTime; // ʱ + NET_DVR_STREAM_INFO struStreamInfo; // Ϣ + DWORD dwRecordType; // ¼: 0xffffffffȫʱ¼-ƶ⣬-ƶ⣬-ƶ⣬--ֶ¼-¼(ͬļ) + DWORD dwLockDuration; // ʱ,λ룬0xffffffffʾ + NET_DVR_TIME_EX strUnlockTimePoint; // ʱЧdwLockDurationΪʱʱ䵽ʱԶ + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ,0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cTimeDifferenceH; //UTCʱСʱ-12 ... +14+ʾ, byISO8601Ϊ1ʱЧ + char cTimeDifferenceM; //UTCʱӣ-30, 30, 45+ʾ, byISO8601Ϊ1ʱЧ + BYTE byRes[1]; +}NET_DVR_STREAM_TIME_LOCK, *LPNET_DVR_STREAM_TIME_LOCK; + +//طų֡ӿ ʼ֡ NET_DVR_START_DRAWFRAMEӦĿƽṹ +typedef struct tagNET_DVR_VOD_DRAWFRAME_PARA +{ + NET_DVR_TIME_EX struTime; + /* + dwDrawTypeֻ豸֧ѡԳ֡ʱЧ֡ʽУ + 0ֻI֡ + 11/2 Pֻ֡svc֧֣ + 23/4P֡ ֻsvc֧֣ + 31/2 I֡(ֻI֡ÿ2I֡һ) + 41/4 I(ֻI֡ÿ4I֡һ) + 51/8 I֡(ֻI֡ÿ8I֡һ) + */ + DWORD dwDrawType; + BYTE byRes[128]; +}NET_DVR_VOD_DRAWFRAME_PARA, *LPNET_DVR_VOD_DRAWFRAME_PARA; + +// ID+ʱطŽṹ +typedef struct tagNET_DVR_VOD_PARA +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struIDInfo; + NET_DVR_TIME struBeginTime; + NET_DVR_TIME struEndTime; + HWND hWnd; + BYTE byDrawFrame; //0:֡1֡ + BYTE byVolumeType; //0-ͨ¼ 1-浵 + BYTE byVolumeNum; //ţĿǰָ浵 + BYTE byStreamType; // 0- 1-2- + DWORD dwFileIndex; //浵ϵ¼ļ浵¼ʱصֵ + BYTE byAudioFile; //Ƶļ0-1- + BYTE byCourseFile; //γļ0-1- + BYTE byDownload; //Ƿ 0-1- + BYTE byOptimalStreamType; //Ƿͻط 0-1-ǣ˫豸ijһʱڵ¼ļָͲͬ򷵻ʵ͵¼ + BYTE byUseAsyn; //0-ʹͬIO1-ʹ첽IO + BYTE byRes2[19]; +}NET_DVR_VOD_PARA, *LPNET_DVR_VOD_PARA; + +typedef struct tagNET_DVR_VOD_PARA_V50 +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struIDInfo; + NET_DVR_TIME_V50 struBeginTime; + NET_DVR_TIME_V50 struEndTime; + HWND hWnd; + BYTE byDrawFrame; //0:֡1֡ + BYTE byVolumeType; //0-ͨ¼ 1-浵 + BYTE byVolumeNum; //ţĿǰָ浵 + BYTE byStreamType; // 0- 1-2- + DWORD dwFileIndex; //浵ϵ¼ļ浵¼ʱصֵ + BYTE byAudioFile; //طƵļ0-طƵļ1-طƵļ + BYTE byCourseFile; //طſγļ0-1- + BYTE byPlayMode; //ŷʽ0-ţ1- + BYTE byLinkMode; //ӷʽ0-TCP1-AdaptiveUDP + BYTE byDownload; //Ƿ 0-1- + BYTE byOptimalStreamType; //Ƿͻط 0-1-ǣ˫豸ijһʱڵ¼ļָͲͬ򷵻ʵ͵¼ + BYTE byDisplayBufNum; //òŻ֡Ϊ0ʱĬΪ3֡hWndΪʱЧ + BYTE byNPQMode; //NPQֱģʽǹý 0-ֱ 1-ý + BYTE sUserName[NAME_LEN/*32*/]; //֤û + BYTE sPassword[PASSWD_LEN/*16*/]; //֤ + BYTE byRemoteFile; //طԶļ0-1- + BYTE byUseAsyn; //0-ʹͬIO1-ʹ첽IO + BYTE byRes2[201]; + BYTE byHls; //HLSطţ0-1- + char* pSavedFileName; //ʱ¼ļ·byDownloadΪ1ʱЧȳ256ᱻض +}NET_DVR_VOD_PARA_V50, *LPNET_DVR_VOD_PARA_V50; + +// ֶ¼ +typedef struct tagNET_DVR_MANUAL_RECORD_PARA +{ + NET_DVR_STREAM_INFO struStreamInfo; + DWORD lRecordType; + BYTE byRes[32]; +}NET_DVR_MANUAL_RECORD_PARA, *LPNET_DVR_MANUAL_RECORD_PARA; + + +// CABACѹѡ20%ֻģͨ +typedef struct tagNET_DVR_STREAM_CABAC +{ + DWORD dwSize; //ṹС + BYTE byCabacEnable; //ѹѡֵ0 1 + BYTE byRes1[31]; // +}NET_DVR_STREAM_CABAC, *LPNET_DVR_STREAM_CABAC; + +#define MAX_IOSPEED_GROUP_NUM 4 //IO +#define MAX_IOOUT_NUM 4 //IOڸ +#define MAX_IOIN_NUM 8 //IOڸ +#define MAX_RELAY_NUM 12 //̵豸 2013-11-04 +#define MAX_VEHICLE_TYPE_NUM 8 //Ϣܿ2013-11-04 +#define MAX_IOIN_NUMEX 10 //IOڸ(չ) +#define MAX_ITC_LANE_NUM 6 //󳵵 +#define MAX_LANEAREA_NUM 2 // +#define ITC_MAX_POLYGON_POINT_NUM 20 //֧20Ķ +#define MAX_ITC_SERIALCHECK_NUM 8 //У͸ +#define MAX_LIGHT_NUM 6 //ͨ +#define MAX_VIDEO_INTERVAL_NUM 2 //ץļ +#define MAX_VIDEO_DETECT_LIGHT_NUM 12 //Ƶ +#define MAX_CALIB_RECOG_NUM 2 //궨 +#define MAX_RS485_NUM 12 //485֧ +#define MAX_MOBILE_POLYGON_NUM 3 //ƶ֧ʶ +#define MAX_MOBILE_DETECTLINE_NUM 3 //ƶ֧Υ߸ +#define MAX_IOOUT_K_NUM 8 //KϵIOڸ + +//IOڲ3.1汾֮ +typedef struct tagNET_ITC_IOOUT_PARAM +{ + DWORD dwSize; + BYTE byDefaultStatus;//IOĬ״̬0-͵ƽ1-ߵƽ + BYTE byIOOutStatus;//IOЧʱ״̬0-͵ƽ1-ߵƽ2- + BYTE byMode; //ƹʽ,λʾ0-ʾ1-ʾbit0-Ƶbit1-ڣbit2-Υ + BYTE byIOWorkMode;//IOڹģʽ0-ƣ1-ƫ, 2- + DWORD dwTimeDelay;//IOЧʱ䣬λus + WORD wAheadTime;//IOǰʱ䣬λus + BYTE byFreqMulti; //ƵֵΧ[1,15] + BYTE byDutyRate; //ռձȣ[0,40%] + BYTE byDetectBrightness;/*Զʹ0-⣻1-*/ + BYTE byBrightnessThreld;/*ʹֵΧ[0,100],ֵ*/ + BYTE byFlashLightEnable; //ʱʹ:0-;1- + BYTE byStartHour; //ʼʱ-Сʱ,ȡֵΧ0-23 + BYTE byStartMinute; //ʼʱ-,ȡֵΧ0-59 + BYTE byEndHour; //ʱ-Сʱ,ȡֵΧ0-23 + BYTE byEndMinute; //ʱ-,ȡֵΧ0-59 + BYTE byAutoPlateBrightness;// Զʹ 0- 1- + BYTE byIncrBrightEnable;//Ƿģʽģʽ£ + BYTE byIncrBrightPercent;//ٷֱȣ0~100%ģʽЧ + WORD wIncrBrightTime;//ʱ,λΪ루ģʽЧ + BYTE byBrightness;//ֵ0~100ģʽ£ + BYTE byEnvironBright;//նֵ0~100ģʽЧòֻնֵֵͻøֵΪοȥӦֵ + WORD wDelayCaptureTime;//ʱץʱ1~1000msģʽЧ +}NET_ITC_IOOUT_PARAM, *LPNET_ITC_IOOUT_PARAM; + +typedef enum _ITC_TRIGGERMODE_TYPE_ +{ + ITC_POST_IOSPEED_TYPE = 0x1, //IO٣ڣ + ITC_POST_SINGLEIO_TYPE = 0x2, //IOڣ + ITC_POST_RS485_TYPE = 0x4, //RS485ڣ + ITC_POST_RS485_RADAR_TYPE = 0x8, //RS485״ﴥڣ + ITC_POST_VIRTUALCOIL_TYPE = 0x10, //Ȧڣ + ITC_POST_HVT_TYPE_V50 = 0x20, //пƵV50 + ITC_POST_MPR_TYPE = 0x40, //֡ʶ()(Ver3.7) + ITC_POST_PRS_TYPE = 0x80, //Ƶⴥ + ITC_EPOLICE_IO_TRAFFICLIGHTS_TYPE = 0x100, //IO̵ƣ羯 + ITC_EPOLICE_RS485_TYPE = 0x200, //RS485羯羯 + ITC_POST_HVT_TYPE = 0x400, //пƵڣ + ITC_PE_RS485_TYPE = 0x10000, //RS485ʽ羯ʽ羯 + ITC_VIDEO_EPOLICE_TYPE = 0x20000, //Ƶ羯ʽ羯 + ITC_VIA_VIRTUALCOIL_TYPE = 0x40000, //VIA + ITC_POST_IMT_TYPE = 0x80000, //ǻۼ + IPC_POST_HVT_TYPE = 0x100000, //IPCֵ֧HVT + ITC_POST_MOBILE_TYPE = 0x200000, //ƶͨģʽ + ITC_REDLIGHT_PEDESTRIAN_TYPE = 0x400000, //˴ƴ + ITC_NOCOMITY_PEDESTRIAN_TYPE = 0x800000 //˴ +}ITC_TRIGGERMODE_TYPE; + +//ӿڵӦpOutBuf +typedef struct tagNET_ITC_TRIGGERMODE_ABILITY +{ + DWORD dwSize; + DWORD dwTriggerType; //ͣλʾITC_TRIGGERMODE_ABILITY壬Ͳͬ˴صĴҲͬ + BYTE byRes[16]; +}NET_ITC_TRIGGERMODE_ABILITY, *LPNET_ITC_TRIGGERMODE_ABILITY; + +typedef struct tagNET_ITC_INTERVAL_PARAM +{ + BYTE byIntervalType; //ͣĬϰʱ䣩0-ʱЧ,1-Ч + BYTE byRes1[3]; + WORD wInterval[MAX_INTERVAL_NUM];//ļʱ䣨λmsļ루λףbyIntervalTypeΪ0ʱʾʱ䣬byIntervalTypeΪ1ʱʾ + BYTE byRes[8]; +}NET_ITC_INTERVAL_PARAM, *LPNET_ITC_INTERVAL_PARAM; + +//ʶ +typedef struct tagNET_ITC_PLATE_RECOG_PARAM +{ + BYTE byDefaultCHN[MAX_CHJC_NUM]; /*豸ʡݵĺּд*/ + BYTE byEnable; //Ƿøʶ0-1- + DWORD dwRecogMode; + /*ʶͣ + bit0-ʶ0-ʶ1-ʶ(βʶ) + bit1-ʶСʶ0-Сʶ1-ʶ + bit2-ɫʶ0-óɫʶڱʶСʶʱֹã1-ɫʶ + bit3-ũóʶ0-ũóʶ1-ũóʶ + bit4-ģʶ0-ģʶ1-ģʶ + bit5-֡λ򳡶λ0-֡λ1-λ + bit6-֡ʶʶ0-֡ʶ1-ʶ + bit7-ϻ죺0-죬1- + bit8-Ħгʶ0-Ħгʶ1-Ħгʶ; + bit9-ģʽ0-羯/֡1-ڣ + bit10-΢Сƣ0-ã1-΢Сʶ(6080) + bit11-ȫ⣺0-ã1-ðȫ + bit12-񺽳ʶ: 0-ã1-񺽳ʶ + bit13-ƹб: 0-ã1-бPRS + bit14-ʶ: 0-ã1-ʶPRS + bit15-⣺0-ã1- + bit16-Ʊ공⣺0-ã1-ûƱ공 + bit17-ΣƷ⣺0-ã1-ΣƷ + bit18-ʹݳʶ0-ã1-ʹݳʶ + bit19-Ʒʶ0-ã1-óƷʶ + bit20-绰ʶ0-ã1- + bit21-ʶ0-ã1- + */ + BYTE byVehicleLogoRecog;//ʶ 0-ã1- + /* + 0-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-29-أ30-ۣ31-£32-ƣ33-㣬 + 34-0xff-ȫ + */ + BYTE byProvince;//ʡֵ + BYTE byRegion;// ֵ 0-1-ŷޣ2-, 3-ŷ&˹(EU&CIS),4-ж(Middle East) + BYTE byCountry;//öCOUNTRY_INDEX(֧֡COUNTRY_ALL = 0xff,//ALL ȫ) + WORD wPlatePixelWidthMin;//ʶСֵλأǰƼΧ[130,500] + WORD wPlatePixelWidthMax;//ʶֵλأǰƼΧ[130,500] + BYTE byRes[24]; +}NET_ITC_PLATE_RECOG_PARAM, *LPNET_ITC_PLATE_RECOG_PARAM; + +//ͽṹ +typedef struct tagNET_ITC_POLYGON +{ + DWORD dwPointNum; //Ч ڵ33һΪЧ߽ΪЧ + NET_VCA_POINT struPos[ITC_MAX_POLYGON_POINT_NUM]; //α߽,20 +}NET_ITC_POLYGON, *LPNET_ITC_POLYGON; + +typedef struct tagNET_ITC_PLATE_RECOG_REGION_PARAM +{ + BYTE byMode; //ͣ0-Σ1- + BYTE byRes1[3]; + union + { + NET_VCA_RECT struRect; // + NET_ITC_POLYGON struPolygon; // + }uRegion; + BYTE byRes[16]; // +}NET_ITC_PLATE_RECOG_REGION_PARAM, *LPNET_ITC_PLATE_RECOG_REGION_PARAM; + +//IOٲ +typedef struct tagNET_ITC_SINGLE_IOSPEED_PARAM +{ + BYTE byEnable; //Ƿã0-ã1- + BYTE byTrigCoil1; //һȦIO0-IO1,1-IO2,2-IO3,3-IO4,4-IO5,5-IO6 + BYTE byCoil1IOStatus;//һȦIO״̬0-½أĬϣ1-أ2-غ½أ3-ߵƽ4-͵ƽ + BYTE byTrigCoil2; //ڶȦIO0-IO1,1-IO2,2-IO3,3-IO4,4-IO5,5-IO6 + BYTE byCoil2IOStatus;//ڶȦIO״̬0-½أĬϣ1-أ2-غ½أ3-ߵƽ4-͵ƽ + BYTE byRelatedDriveWay;//ij + BYTE byTimeOut;//ʱʱ䣨Ĭ10λs + BYTE byRelatedIOOutEx;//0λʾIO1Դƣ0-1- ֹ֧8(byRelatedIOOutֶ) + DWORD dwDistance;//Ȧ루Ĭ1000,λ + BYTE byCapSpeed;//ٶȣĬ30λkm/h + BYTE bySpeedLimit;//ֵĬ60λkm/h + BYTE bySpeedCapEn; //Ƿóץģ0-1- + BYTE bySnapTimes1; //Ȧ1ץĴĬϲץģ0-ץģ0-Ĵ5 + BYTE bySnapTimes2; //Ȧ2ץĴĬ10-ץģ0-Ĵ5 + BYTE byBigCarSpeedLimit; //󳵳ֵ + BYTE byBigCarSignSpeed;//־()λkm/h(3.7Ver) + BYTE byIntervalType; //ͣĬϰʱ䣩0-ʱЧ,1-Ч + WORD wInterval1[MAX_INTERVAL_NUM];//Ȧ1ļʱ䣨λmsļ루λףbyIntervalTypeΪ0ʱʾʱ䣬byIntervalTypeΪ1ʱʾ + WORD wInterval2[MAX_INTERVAL_NUM];//Ȧ2ļʱ䣨λmsļ루λףbyIntervalTypeΪ0ʱʾʱ䣬byIntervalTypeΪ1ʱʾ + BYTE byRelatedIOOut[MAX_IOOUT_NUM]; //IO(ͬʱ)0ʾIO11ʾIO2Դƣ0-1- + BYTE byFlashMode; //˸ģʽ0-ͬʱ1- + BYTE byLaneType; //ͣ0-δá1-ٹ·2-п·0xff-· + BYTE byCarSignSpeed;//־٣λkm/h(3.7Ver) + BYTE byUseageType; //;ͣITC_LANE_USEAGE_TYPE + NET_ITC_PLATE_RECOG_REGION_PARAM struPlateRecog[MAX_LANEAREA_NUM]; //ʶ(ʶ1һ) + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byLowSpeedLimit; //С޵ֵλkm/h + BYTE byBigCarLowSpeedLimit; //޵ֵλkm/h + BYTE byLowSpeedCapEn; //Ƿõץģ0-1- + BYTE byEmergencyCapEn; //ǷӦץģ0-1- + BYTE byRes[27]; +}NET_ITC_SINGLE_IOSPEED_PARAM, *LPNET_ITC_SINGLE_IOSPEED_PARAM; + +//IOٲ +typedef struct tagNET_ITC_POST_IOSPEED_PARAM +{ + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + NET_ITC_SINGLE_IOSPEED_PARAM struSingleIOSpeed[MAX_IOSPEED_GROUP_NUM]; //IO + BYTE byRes[32]; +}NET_ITC_POST_IOSPEED_PARAM, *LPNET_ITC_POST_IOSPEED_PARAM; + +//IO +typedef struct tagNET_ITC_SINGLEIO_PARAM +{ + BYTE byDefaultStatus;//IOĬ״̬0-͵ƽ1-ߵƽ + BYTE byRelatedDriveWay;//ij + BYTE bySnapTimes; //ץĴĬ10-ץģ0-Ĵ5 + BYTE byRelatedIOOutEx;//0λʾIO1Դƣ0-1- ֹ֧8(byRelatedIOOutֶ) + NET_ITC_INTERVAL_PARAM struInterval; //ץļ + BYTE byRelatedIOOut[MAX_IOOUT_NUM]; //IOڣͬʱ + BYTE byFlashMode; //˸ģʽ0-ͬʱ1- + BYTE byEnable;//IOʹܱ־0-ã1- (Remark:֧ bySupport&0x20ʾǷֵ֧IOIOʹ ʱЧ) + BYTE byUseageType; //;ͣITC_LANE_USEAGE_TYPE + BYTE byEmergencyCapEn; //ǷӦץģ0-1- + NET_ITC_PLATE_RECOG_REGION_PARAM struPlateRecog[MAX_LANEAREA_NUM]; //ʶ + BYTE byRes[24]; +}NET_ITC_SINGLEIO_PARAM, *LPNET_ITC_SINGLEIO_PARAM; + +//IO +typedef struct tagNET_ITC_POST_SINGLEIO_PARAM +{ + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + NET_ITC_SINGLEIO_PARAM struSingleIO[MAX_IOIN_NUMEX]; //IO +}NET_ITC_POST_SINGLEIO_PARAM, *LPNET_ITC_POST_SINGLEIO_PARAM; + +typedef struct tagNET_ITC_LANE_PARAM +{ + BYTE byEnable; //Ƿøó0-ã1- + BYTE byRelatedDriveWay;//ij + WORD wDistance; //Ȧ룬ٶ + WORD wTrigDelayTime; //ӳʱ䣨Ĭ200λ + BYTE byTrigDelayDistance; //ӳپ루Ĭ0λ + BYTE bySpeedCapEn; //Ƿóץģ0-1- + BYTE bySignSpeed;//־٣λkm/h + BYTE bySpeedLimit;//ֵλkm/h + BYTE bySnapTimes; //ץĴĬ10-ץģ0-Ĵ5 + BYTE byOverlayDriveWay; //OSDӵij + NET_ITC_INTERVAL_PARAM struInterval; //ץļ + BYTE byRelatedIOOut[MAX_IOOUT_NUM]; //IOڣͬʱ + BYTE byFlashMode; //˸ģʽ0-ͬʱ1- + BYTE byCartSignSpeed;//־()λkm/h + BYTE byCartSpeedLimit;//ֵ󳵣λkm/h + BYTE byRelatedIOOutEx;//0λʾIO1Դƣ0-1- ֹ֧8(byRelatedIOOutֶ) + NET_ITC_PLATE_RECOG_REGION_PARAM struPlateRecog[MAX_LANEAREA_NUM]; //ʶ + BYTE byLaneType; //ͣ0-δá1-ٹ·2-п·0xff-· + BYTE byUseageType; //;ͣITC_LANE_USEAGE_TYPE + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byLowSpeedLimit; //С޵ֵλkm/h + BYTE byBigCarLowSpeedLimit; //޵ֵλkm/h + BYTE byLowSpeedCapEn; //Ƿõץģ0-1- + BYTE byEmergencyCapEn; //ǷӦץģ0-1- + BYTE byRes[9]; +}NET_ITC_LANE_PARAM, *LPNET_ITC_LANE_PARAM; + +//RS485 +typedef struct tagNET_ITC_POST_RS485_PARAM +{ + BYTE byRelatedLaneNum;//ij + BYTE byTriggerSpareMode; //ģʽ0-Ĭϣ1-Ȧģʽ,2-ڻϳģʽ + BYTE byFaultToleranceTime;//ݴʱ(λ:)ڼ⳵Ƿʱ + BYTE byRes1; + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + NET_ITC_LANE_PARAM struLane[MAX_ITC_LANE_NUM]; //ij + BYTE byRes[32]; +}NET_ITC_POST_RS485_PARAM, *LPNET_ITC_POST_RS485_PARAM; + +typedef struct tagNET_ITC_RADAR_PARAM +{ + BYTE byRadarType; //״ͣ0-״,1-״2-άǣ3-΢4,״IOչ(˲ڿȦпڽʹãRS485״ﲻʹ),0xff- + BYTE byLevelAngle; //ˮƽɽǶ,ĬΪ25(090) + WORD wRadarSensitivity; //״ + WORD wRadarSpeedValidTime;//״ٶЧʱ(0~2000] ,0ʾ֧ + BYTE byRes1[2]; + float fLineCorrectParam;//Խ[0.0~2.0] + int iConstCorrectParam;//[-100~100] + BYTE byRes2[8]; +}NET_ITC_RADAR_PARAM, *LPNET_ITC_RADAR_PARAM; + +typedef struct tagNET_ITC_RS485_ACCESS_INFO_COND //ṹ +{ + DWORD dwSize; + DWORD dwChannel; + DWORD dwTriggerModeType; + BYTE byAssociateRS485No;//RS485 15 (Ψһֵ) + // BYTE byModeType; //0Ԥ1״23źŵƼ + BYTE byRes[15]; +}NET_ITC_RS485_ACCESS_INFO_COND,*LPNET_ITC_RS485_ACCESS_INFO_COND; + +typedef struct tagNET_ITC_RADAR_INFO_PARAM +{ + NET_ITC_RADAR_PARAM struRadarParam;//24 + BYTE byAssociateLaneNo;//ij199 (ֵڲͬRS485ظ) + BYTE byRes[103]; +}NET_ITC_RADAR_INFO_PARAM, *LPNET_ITC_RADAR_INFO_PARAM; + +typedef union tagNET_ITC_ACCESS_DEVINFO_PARAM_UNION +{ + BYTE uLen[128]; + NET_ITC_RADAR_INFO_PARAM struRadarInfoParam;//״ +}NET_ITC_ACCESS_DEVINFO_PARAM_UNION, *LPNET_ITC_ACCESS_DEVINFO_PARAM_UNION; + +typedef struct tagNET_ITC_RS485_ACCESS_CFG //144 ýṹ +{ + DWORD dwSize; + BYTE byModeType;//0Ԥbit1״bit2bit3źŵƼ + BYTE byRes[3]; + NET_ITC_ACCESS_DEVINFO_PARAM_UNION uITCAccessDevinfoParam; //64 + BYTE byRes1[12]; +}NET_ITC_RS485_ACCESS_CFG,*LPNET_ITC_RS485_ACCESS_CFG; + +//2013-07-09 ״չ +typedef struct tagNET_ITC_RS485_ACCESS_INFO +{ + DWORD dwSize; + NET_ITC_RADAR_PARAM struRadar[MAX_ITC_LANE_NUM];//೵״Ϣ + //ʾֵ֧ĬΪ0ʾ мּ֧ + BYTE byRes[20]; +}NET_ITC_RS485_ACCESS_INFO, *LPNET_ITC_RS485_ACCESS_INFO; + + +//RS485״ﴥ +typedef struct tagNET_ITC_POST_RS485_RADAR_PARAM +{ + BYTE byRelatedLaneNum;//ij + BYTE byRes1[3]; + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + NET_ITC_LANE_PARAM struLane[MAX_ITC_LANE_NUM]; //ij + NET_ITC_RADAR_PARAM struRadar; //״ + BYTE byRes[32]; +}NET_ITC_POST_RS485_RADAR_PARAM, *LPNET_ITC_POST_RS485_RADAR_PARAM; + +typedef struct tagNET_ITC_VTLANE_PARAM +{ + BYTE byRelatedDriveWay;//ij + BYTE bySpeedCapEn; //Ƿóץģ0-1- + BYTE bySignSpeed;//־٣λkm/h + BYTE bySpeedLimit;//ֵλkm/h + BYTE bySnapTimes; //ץĴĬ10-ץģ0-Ĵ5 + BYTE byBigCarSignSpeed;///*󳵱־٣λkm/h*/ + BYTE byBigCarSpeedLimit;/*ֵλkm/h*/ + BYTE byRelatedIOOutEx;//0λʾIO1Դƣ0-1- ֹ֧8(byRelatedIOOutֶ) + NET_ITC_INTERVAL_PARAM struInterval; //ץļ + BYTE byRelatedIOOut[MAX_IOOUT_NUM]; //IOڣͬʱ + BYTE byFlashMode; //˸ģʽ0-ͬʱ1- + BYTE byLowSpeedLimit;/*޵٣λkm/h*/ + BYTE byBigCarLowSpeedLimit; /*޵٣λkm/h*/ + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + NET_ITC_PLATE_RECOG_REGION_PARAM struPlateRecog[MAX_LANEAREA_NUM]; //ʶ + NET_VCA_LINE struLine; // +}NET_ITC_VTLANE_PARAM, *LPNET_ITC_VTLANE_PARAM; + +typedef struct tagNET_ITC_VTCOIL_INFO +{ + NET_VCA_RECT struLaneRect; /*Ȧ*/ + BYTE byTrigFlag; //־0-ͷ1-β2-ͷ/β + BYTE byTrigSensitive; //ȣ1-100 + BYTE byRelatedIOOut[MAX_IOOUT_NUM]; //IO(ͬʱ)0ʾIO11ʾIO2Դƣ0-1- + BYTE byFlashMode; //˸ģʽ0-ͬʱ1- + BYTE byLaneType; //ͣ0-δá1-ٹ·2-п·0xff-· + BYTE byEnableRadar; //Ƿ״٣0-1- + NET_ITC_VTLANE_PARAM struLane; //ij + //;ͣITC_LANE_USEAGE_TYPEʹ18(3.7Ver) + BYTE byUseageType; + //ʻITC_LANE_CAR_DRIVE_DIRECT(3.7Ver) + BYTE byCarDriveDirect; + BYTE byRes[30]; +}NET_ITC_VTCOIL_INFO, *LPNET_ITC_VTCOIL_INFO; + +//Ȧ +typedef struct tagNET_ITC_POST_VTCOIL_PARAM +{ + BYTE byRelatedLaneNum;//ij + BYTE byIsDisplay; //ƵǷʾȦ0-ʾ1-ʾ + BYTE byLoopPos; //䴥ȦƫĬ10 + BYTE byPolarLenType; /*ƫͣ0ƫ񾵣1ʩ͵ƫ񾵡*/ + BYTE byDayAuxLightMode; /*츨ģʽ0޸1LED2*/ + BYTE byVideoLaneNO; //ƵοȵIJο + BYTE byVideoLowTh; /*ƵοȵֵʼֵĬ40*/ + BYTE byVideoHighTh; /*ƵοȸֵʼֵĬ55*/ + BYTE byRecordMode; //¼־0-¼1-¼ + BYTE bySnapMode;//ץģʽ0-Ƶģʽ1-ģʽ + /*ٷʽ0-٣0x1-״٣0x2-Ƶ*/ + BYTE bySpeedDetector; + BYTE byRes2; + WORD wResolutionX;/* 豸ǰֱʿ*/ + WORD wResolutionY;/* 豸ǰֱʸ*/ + DWORD dwDayInitExp; /*Ƶعʱijʼֵ2000*/ + DWORD dwDayMaxExp; /*Ƶعʱֵ20000*/ + DWORD dwNightExp; /*Ƶعʱֵ3000*/ + DWORD dwSnapExp; /*ץعʱ*/ + BYTE byDayInitGain; /*Ƶijʼֵ200*/ + BYTE byDayMaxGain; /*Ƶֵ400*/ + BYTE byNightGain; /*Ƶ*/ + BYTE bySnapGain; /*ץ*/ + DWORD dwSceneMode; //ģʽ SCENE_MODE + NET_DVR_GEOGLOCATION struGeogLocation; //ַλ(Ĭ㽭) + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + NET_ITC_VTCOIL_INFO struVtCoil[MAX_VL_NUM]; //Ȧ + NET_ITC_RADAR_PARAM struRadar; //״ + NET_VCA_LINE struLine; //ҳ + //ΥͣλʾITC_VIOLATION_DETECT_TYPE0-ã1-(3.7Ver) + DWORD dwVioDetectType; + BYTE byDebugMode; /*ģʽ0-ã1-*/ + BYTE byRes[11]; +}NET_ITC_POST_VTCOIL_PARAM, *LPNET_ITC_POST_VTCOIL_PARAM; + +//IO̵Ʋ +typedef struct tagNET_ITC_SINGLE_IOTL_PARAM +{ + BYTE byEnable; //Ƿã0-ã1- + BYTE byLightIO; //̵IO0-IO1,1-IO2,2-IO3,3-IO4,4-IO5,5-IO6 + BYTE byTrafficLight; //̵Ч״̬0-ߵƽƣ͵ƽ̵ƣ1-ߵƽ̵ƣ͵ƽ + BYTE byTrigIO;//IOţ0-IO1,1-IO2,2-IO3,3-IO4,4-IO5,5-IO6 + BYTE byTrigIOStatus;//IOڵ״̬Ĭ00-½أ1-أ2-غ½أ3-ߵƽ4-͵ƽ + BYTE byRelatedDriveWay;//ij + BYTE byRecordEnable;//¼־0-¼1-¼ + BYTE byRecordType;//¼ͣ0-Ԥ¼1-ʱ¼ + BYTE byPreRecordTime;//¼ƬԤ¼ʱ䣨Ĭ0λ + BYTE byRecordDelayTime;//¼Ƭʱʱ䣨Ĭ0λ + BYTE byRecordTimeOut;//¼ʱʱ䣨룩 + BYTE byRedSnapTimes; //ץĴ0-ץģ0-Ĵ5 + BYTE byGreenSnapTimes; //̵ץĴ0-ץģ0-Ĵ5 + BYTE byRelatedIOOutEx;//0λʾIO1Դƣ0-1- ֹ֧8(byRelatedIOOutֶ) + BYTE byRes1; + BYTE byIntervalType; //ͣĬϰʱ䣩0-ʱЧ,1-Ч + WORD wRedInterval[MAX_INTERVAL_NUM];//ļʱ䣨λmsļ루λףbyIntervalTypeΪ0ʱʾʱ䣬byIntervalTypeΪ1ʱʾ + WORD wGreenInterval[MAX_INTERVAL_NUM];//̵ļʱ䣨λmsļ루λףbyIntervalTypeΪ0ʱʾʱ䣬byIntervalTypeΪ1ʱʾ + BYTE byRelatedIOOut[MAX_IOOUT_NUM]; //IOڣͬʱ + BYTE byFlashMode; //˸ģʽ0-ͬʱ1- + BYTE byRes2[3]; + NET_ITC_PLATE_RECOG_REGION_PARAM struPlateRecog[MAX_LANEAREA_NUM]; //ʶ + BYTE byRes[32]; +}NET_ITC_SINGLE_IOTL_PARAM, *LPNET_ITC_SINGLE_IOTL_PARAM; + +//羯IO̵Ʋ +typedef struct tagNET_ITC_EPOLICE_IOTL_PARAM +{ + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + NET_ITC_SINGLE_IOTL_PARAM struSingleIOTL[MAX_IOSPEED_GROUP_NUM]; //IO̵Ʋ + BYTE byRes[32]; +}NET_ITC_EPOLICE_IOTL_PARAM, *LPNET_ITC_EPOLICE_IOTL_PARAM; + +typedef enum _ITC_SERIAL_PROTOCOL_ +{ + ITC_PROTOCOL_UNKNOW = 0, /*δ֪*/ + ITC_SINGLE_COIL_PROTOCOL_MODE1 = 1, /*ȦЭģʽ1ʾΪ_1_1_1_1뿪뿪ʱץģ뿪ʶϴ3ųͼƬͳƽ*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE1 = 2, /*˫ȦЭģʽ1ʾΪ˫_1_1_2_11뿪1뿪2ץģ뿪1ʶϴ3ųͼƬͳƽĬϣ*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE2 = 3, /*˫ȦЭģʽ2ʾΪ˫_1_2_2_1뿪1뿪2뿪2ʱץģ뿪1ʶϴ3ųͼƬͳƽ*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE3 = 4, /*˫ȦЭģʽ3ʾΪ˫_2_1_2_12뿪1뿪2ʱץģ뿪1ʶϴ3ųͼƬͳƽ*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE4 = 5, /*˫ȦЭģʽ4ʾΪ˫/_2_2_2_12뿪2뿪2ʱץģ뿪1ʶϴ3ųͼƬͳƽ*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE5 = 6, /*˫ȦЭģʽ5ʾΪ˫/_2_2_2_22뿪2뿪2ʱץģ2뿪1ʶϴ3ųͼƬŶȸߵijƽĬϣ*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE6 = 7, /*˫ȦЭģʽ6ʾΪ˫/_1_2_2_21뿪2뿪2ʱץģ1뿪1ʶϴ3ųͼƬŶȸߵijƽ*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE7 = 8, /*˫ȦЭģʽ7ʾΪ˫_1_1_2_11뿪1뿪2ʱץģ뿪1ʶϴͼƬ뿪1Ƶ1뿪1뿪2ʱͳƽ*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE8 = 9, /*˫ȦЭģʽ8ʾΪ˫_1_1_2_21뿪1뿪2ʱץģ1뿪1ʶϴͼƬ뿪1Ƶ1뿪1뿪2ʱŶȸߵijƽĬϣ*/ + ITC_SINGLE_COIL_PROTOCOL_MODE2 = 10, /*ȦЭģʽ2ʾΪ_1_1_1_2뿪뿪ʱץģ뿪ʶϴͼƬ뿪Ƶ뿪뿪ʱŶȸߵijƽĬϣ*/ + ITC_OTHER_PROTOCOL = 0xff /*Э(demoã3.3֮汾demoͿؼִֵ֧)*/ +}ITC_SERIAL_PROTOCOL; + +//߼ץ +typedef enum _ITC_NORMAL_PASS_SERIAL_PROTOCOL_ +{ + ITC_NORMAL_PASS_SERIAL_UNKNOW = 0, //δ֪ + ITC_NORMAL_PASS_PROTOCOL_MODE1 = 1, //Ȧ뿪ץģʶϴĬϣ + ITC_NORMAL_PASS_PROTOCOL_MODE2 =2, //Ȧ뿪ץģʶϴ뿪ͼƬŶȸߵijƽ + ITC_NORMAL_PASS_PROTOCOL_MODE3 =3, //˫Ȧ뿪1ץģʶϴĬϣ + ITC_NORMAL_PASS_PROTOCOL_MODE4 =4, //˫Ȧ1뿪1ץģʶϴ뿪1ͼƬŶȸߵijƽ + ITC_NORMAL_PASS_PROTOCOL_MODE5 =5, //˫Ȧ2뿪1ץģʶϴ뿪1ͼƬŶȸߵijƽ +}ITC_NORMAL_PASS_SERIAL_PROTOCOL; + +//Υ߼ץ +typedef enum _ITC_INVERSE_SERIAL_PROTOCOL_ +{ + ITC_INVERSE_SERIAL_UNKNOW = 0, //δ֪ + ITC_INVERSE_PROTOCOL_MODE1 = 1, //ץ + ITC_INVERSE_PROTOCOL_MODE2 =2, //1ץ2š뿪2ץģ1žʶϴ3ųͼƬŶȸߵijƽ + ITC_INVERSE_PROTOCOL_MODE3 =3, //1뿪2ץģ1ʶϴ2ųͼƬͳƽ +}ITC_INVERSE_SERIAL_PROTOCOL; + +//Υ߼ץ +typedef enum _ITC_SPEED_SERIAL_PROTOCOL_ +{ + ITC_SPEED_SERIAL_UNKNOW = 0, //δ֪ + ITC_SPEED_PROTOCOL_MODE1 = 1, //ץ + ITC_SPEED_PROTOCOL_MODE2 =2, //˫/Ȧ뿪1뿪2뿪2ʱץģ뿪1ʶϴͼƬ뿪1뿪1뿪2뿪2ʱͳƽ + ITC_SPEED_PROTOCOL_MODE3 =3, //˫/Ȧ뿪1뿪2뿪2ʱץģ뿪1ʶϴͼƬ뿪1뿪1뿪2ͳƽ +}ITC_SPEED_SERIAL_PROTOCOL; + +// +typedef struct tagNET_ITC_SERIAL_INFO +{ + BYTE bySerialProtocol; //ЭͣITC_SERIAL_PROTOCOL + BYTE byIntervalType; //ͣĬϰʱ䣩0-ʱЧ,1-Ч + WORD wInterval;//ļʱ䣨λmsļ루λףbyIntervalTypeΪ0ʱʾʱ䣬byIntervalTypeΪ1ʱʾ + BYTE byNormalPassProtocol; //ץЭͣITC_NORMAL_PASS_SERIAL_PROTOCOL + BYTE byInverseProtocol; //ץЭͣITC_INVERSE_SERIAL_PROTOCOL + BYTE bySpeedProtocol; //ץЭͣITC_SPEED_SERIAL_PROTOCOL + BYTE byRes[9]; +}NET_ITC_SERIAL_INFO, *LPNET_ITC_SERIAL_INFO; + +typedef struct tagNET_ITC_EPOLICE_LANE_PARAM +{ + BYTE byEnable; //Ƿøó0-ã1- + BYTE byRelatedDriveWay;//ij + WORD wDistance; //Ȧ룬λ + BYTE byRecordEnable;//¼־0-¼1-¼ + BYTE byRecordType;//¼ͣ0-Ԥ¼1-ʱ¼ + BYTE byPreRecordTime;//¼ƬԤ¼ʱ䣨Ĭ0λ + BYTE byRecordDelayTime;//¼Ƭʱʱ䣨Ĭ0λ + BYTE byRecordTimeOut;//¼ʱʱ䣨룩 + BYTE bySignSpeed;//־(ʽ羯ģʽЧ)λkm/h + BYTE bySpeedLimit;//ֵ(ʽ羯ģʽЧ)λkm/h + BYTE byOverlayDriveWay; //OSDӵij + NET_ITC_SERIAL_INFO struSerialInfo; // + BYTE byRelatedIOOut[MAX_IOOUT_NUM]; //IOڣͬʱ + BYTE byFlashMode; //˸ģʽ0-ͬʱ1- + BYTE bySerialType; //ͣ0-˽г1-˽OEM2- + BYTE byRelatedIOOutEx;//0λʾIO1Դƣ0-1- ֹ֧8(byRelatedIOOutֶ) + BYTE bySnapPicPreRecord; //ץͼƬԤ¼ʱ㣻0-ĬֵڶͼƬ1-һͼƬ2-ڶͼƬ3-ͼƬ + NET_ITC_PLATE_RECOG_REGION_PARAM struPlateRecog[MAX_LANEAREA_NUM]; //ʶ + BYTE byBigCarSignSpeed; ///*󳵱־٣λkm/h*/ + BYTE byBigCarSpeedLimit;/*ֵλkm/h*/ + BYTE byRedTrafficLightChan;//ͨţ116̵Ƽ + BYTE byYellowTrafficLightChan;//Ƶͨţ116̵Ƽ + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byRes3[11]; +}NET_ITC_EPOLICE_LANE_PARAM, *LPNET_ITC_EPOLICE_LANE_PARAM; + +//羯/ʽ羯RS485 +typedef struct tagNET_ITC_EPOLICE_RS485_PARAM +{ + BYTE byRelatedLaneNum;//ij + BYTE byTrafficLightSignalSrc;//ͨźԴ 0 1̵Ƽ + BYTE byRes1[2]; + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + NET_ITC_EPOLICE_LANE_PARAM struLane[MAX_ITC_LANE_NUM]; //ij + BYTE byRes[32]; +}NET_ITC_EPOLICE_RS485_PARAM, *LPNET_ITC_EPOLICE_RS485_PARAM; + +//Բṹ +typedef struct tagNET_ITC_LANE_LOGIC_PARAM +{ + BYTE byUseageType; //;ͣITC_LANE_USEAGE_TYPE + BYTE byDirectionType; //ͣITC_LANE_DIRECTION_TYPE + BYTE byCarDriveDirect; //ʻITC_LANE_CAR_DRIVE_DIRECT + BYTE byRes[33]; // +}NET_ITC_LANE_LOGIC_PARAM, *LPNET_ITC_LANE_LOGIC_PARAM; + +//Ƶ羯߽ṹ +typedef struct tagNET_ITC_LINE +{ + NET_VCA_LINE struLine; //߲ + BYTE byLineType; //ͣITC_LINE_TYPE + BYTE byRes[7]; +}NET_ITC_LINE, *LPNET_ITC_LINE; + +typedef struct tagNET_ITC_SNAPMODE_PARAM +{ + BYTE byVehicleCapMode;//ץģʽ0-Ƶģʽ1-ģʽ + BYTE byNoVehicleCapMode;//ǻץģʽ0-Ƶģʽ1-ģʽ + BYTE byPasserCapMode;//ץģʽ0-Ƶģʽ1-ģʽ + BYTE byRes[29]; +}NET_ITC_SNAPMODE_PARAM, *LPNET_ITC_SNAPMODE_PARAM; + +//size = 128 +typedef struct tagNET_ITC_HVT_EC_PARAM +{ + DWORD dwCapShutter; //ץĿ0~65535 + WORD wCapGain; //ץ0100 + BYTE byRes[2]; + DWORD dwDayTimeVideoShutter; //عʱֵ + WORD wDayTimeVideoGain; //ֵ + WORD wNightVideoGain; //ֵ + DWORD wNightVideoShutter; //عʱֵ + BYTE byRes1[108]; +}NET_ITC_HVT_EC_PARAM, *LPNET_ITC_HVT_EC_PARAM; + +typedef struct tagNET_ITC_LANE_HVT_PARAM +{ + BYTE byLaneNO; //ij 1~255ڵӺϴ + BYTE bySignSpeed; //־٣λkm/h 0255 70 + BYTE bySpeedLimit; //ֵλkm/h 0255 80 ʵЧ + BYTE byBigCarSignSpeed;///*󳵱־٣λkm/h*/ + BYTE byBigCarSpeedLimit;/*ֵλkm/h*/ + BYTE bySpeedCapEn; //Ƿóץģ0-1- + BYTE byCaptureCount;//ץ15() + BYTE byRelatedIOOut; /*IO(ͬʱ)λʾIOڣ0λʾIO1Դƣ0-1-*/ + BYTE byFlashMode; /*˸ģʽ0-ͬʱ1-*/ + BYTE byEnableRadar; //Ƿ״٣0-1- + BYTE byChangeLaneEnable; //Υ±ץʹܣ0-رգ1- + BYTE byChangeLaneCapNo; //Υ±ץ2-3 + DWORD dwCapTarget; //ץ bit0 ʾ bit1 ʾǻ bit2 ʾ 0ʾѡ 1ʾѡ + NET_ITC_INTERVAL_PARAM struInterval; //ץļ + BYTE byRes3[24]; + NET_ITC_LANE_LOGIC_PARAM struLane; //ԣbyUseageTypebyCarDriveDirect + NET_ITC_LINE struLeftLaneLine; //󳵵ߣΪߡʵߡߺ˫ + NET_ITC_LINE struRightLaneLine; //ҳߣΪߡʵߡߺ˫ + NET_ITC_POLYGON struPlateRecog; //ʶ + NET_ITC_POLYGON struTraceArea; //Ƶ + NET_VCA_LINE struForwardTrigLine; //򴥷ߣһ߶ΣĶ˵λãĿǰֻ֧ˮƽãӿڰ߶ε˵㱣档һΪѴλã + NET_VCA_LINE struBackwardTrigLine; //򴥷ߣһ߶ΣĶ˵λãĿǰֻ֧ˮƽãӿڰ߶ε˵㱣棨һΪѴλã + NET_VCA_LINE struLeftTrigLine; //ߴߣһ߶ΣĶ˵λãĿǰֱִֻ֧ãӿڰ߶ε˵㱣棨һΪ߽복Ѵλã + NET_VCA_LINE struRightTrigLine; //ұߴߣһ߶ΣĶ˵λãĿǰֱִֻ֧ãӿڰ߶ε˵㱣棨һΪұ߽복Ѵλã + BYTE byRes4[60]; +}NET_ITC_LANE_HVT_PARAM, *LPNET_ITC_LANE_HVT_PARAM; + +typedef struct tagNET_ITC_POST_HVT_PARAM +{ + BYTE byLaneNum;//ʶij1-6 + BYTE bySceneMode;//0-δ֪1-·2-С + BYTE byRoadExpBright;//·ȣƵع֮һ޻ʱݴֵƵع + BYTE byPlateExpBright;//ȣƵع֮һлͨʶ𵽳ʱݴֵƵع + NET_ITC_POLYGON struDetectArea; //Ƶ + NET_ITC_SNAPMODE_PARAM struCapMode;//ץģʽ + NET_ITC_HVT_EC_PARAM struEcParam; //عƲ + NET_ITC_LANE_HVT_PARAM struLaneParam[MAX_ITC_LANE_NUM]; // + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + NET_DVR_GEOGLOCATION struGeogLocation; //ַλãĬ㽭 + BYTE byRes[324]; +}NET_ITC_POST_HVT_PARAM, *LPNET_ITC_POST_HVT_PARAM; + +/*************************MPRģʽ begin 2013-12-07****************/ +typedef struct tagNET_ITC_LANE_MPR_PARAM +{ + BYTE byLaneNO; + union + { + BYTE uLen[4]; + struct + { + BYTE byIONo;//IO[1, byIoInNum+1] С1ʼֵݽӿNET_DVR_SNAP_ABILITYֶbyIoInNum + BYTE byTriggerType;//0-½أ1- + BYTE byRes1[2]; + }struIO;//IOģʽЧ + struct + { + BYTE byRelateChan;//ͨ[1,16] + BYTE byRes2[3]; + }struRS485; + }uTssParamInfo; + BYTE byCarDriveDirect; //ʻ ITC_LANE_CAR_DRIVE_DIRECT + BYTE byRes[58]; + NET_ITC_LINE struLaneLine;// + NET_ITC_POLYGON struPlateRecog;//ʶ + //ͣοITC_RELA_LANE_DIRECTION_TYPEtypedef struct tagNET_ITS_PICTURE_INFO + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byRes1[255]; +}NET_ITC_LANE_MPR_PARAM,*LPNET_ITC_LANE_MPR_PARAM; + +typedef struct tagNET_ITC_POST_MPR_PARAM +{ + BYTE byEnable; + BYTE byLaneNum; + BYTE bySourceType;//0-MPRƵ,1-IOظȦ,2-RS485Ĵź + BYTE byPicUploadType;//ͼƬϴͣ0~ȫϴ1-ϴ2-ϴ + BYTE byRoadType;//ģʽѡ 0-ڣ1-е·2-Զ壬3-룬4-, 5-ΰ(ģʽ¿Լ⳵Ƚϻûгߵij) + BYTE byRes2; + WORD wCustomDelayTime;//Զץʱʱ䣨byRoadTypeΪ "Զ"ʱЧΧ[0,15000]ms + BYTE byRes[56]; + NET_ITC_LINE struLaneBoundaryLine;//߽ߣ߽߳ߣ + NET_ITC_PLATE_RECOG_PARAM struPlateRecog;//ʶ 40 + NET_ITC_LANE_MPR_PARAM struLaneParam[MAX_ITC_LANE_NUM/*6*/]; + char szSceneName[NAME_LEN/*32*/]; // + NET_VCA_LINE struSnapLine;//ץߣļ跽ʽΪװЧ4.5NET_DVR_CAMERA_SETUPCFGṹbyErectMethodֶΪ1ʱ + BYTE byRes1[392]; +}NET_ITC_POST_MPR_PARAM,*LPNET_ITC_POST_MPR_PARAM; +/*************************MPRģʽ end 2013-12-07****************/ + +typedef struct tagNET_DVR_VIA_LANE_PARAM +{ + BYTE byLaneNO; // + BYTE byRes[63]; // + NET_ITC_LANE_LOGIC_PARAM struLogicParam; //Բ + NET_ITC_LINE struLaneLine;// + NET_ITC_POLYGON struPlateRecog;//ʶ + BYTE byRes1[300]; // +} NET_DVR_VIA_LANE_PARAM,*LPNET_DVR_VIA_LANE_PARAM; + +typedef struct tagNET_DVR_VIA_VTCOIL_PARAM +{ + BYTE byEnable; //ʹ 0- 1- + BYTE byLaneNum; // + BYTE byRes[62]; // + NET_ITC_LINE struLaneBoundaryLine;//߽ߣ߽߳ߣ + NET_DVR_VIA_LANE_PARAM struLaneParam[MAX_ITC_LANE_NUM/*6*/]; + NET_ITC_PLATE_RECOG_PARAM struPlateRecog;//ʶ + BYTE byRes1[624];// +}NET_DVR_VIA_VTCOIL_PARAM,*LPNET_DVR_VIA_VTCOIL_PARAM; + +//ӿ +typedef struct tagNET_DVR_TRIGGER_COND +{ + DWORD dwSize; //ṹС + DWORD dwChannel; //ͨ + DWORD dwTriggerMode;//ʽο ITC_TRIGGERMODE_TYPE + BYTE byDetSceneID;//ⳡ[1,4], IPCĬ0 + BYTE byRes[63]; // +}NET_DVR_TRIGGER_COND,*LPNET_DVR_TRIGGER_COND; + +typedef struct tagNET_ITC_LANE_IMT_PARAM +{ + BYTE byLaneNO;//ӳ + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byRes[146]; + NET_ITC_LINE struLaneLine;// + BYTE byRes1[256]; +}NET_ITC_LANE_IMT_PARAM,*LPNET_ITC_LANE_IMT_PARAM; + +typedef struct tagNET_ITC_POST_IMT_PARAM +{ + BYTE byEnable; + BYTE byLaneNum; + BYTE bySnapMode; //ץͣ0~1~ + BYTE byRes[61]; + NET_ITC_PLATE_RECOG_PARAM struPlateRecog;//ʶ + NET_ITC_LINE struLaneBoundaryLine;//߽ߣұ߳ı߽ߣ + NET_ITC_LANE_IMT_PARAM struLaneParam[MAX_ITC_LANE_NUM/*6*/]; + BYTE byRes1[1584]; +}NET_ITC_POST_IMT_PARAM,*LPNET_ITC_POST_IMT_PARAM; + +typedef struct tagNET_ITC_LANE_PRS_PARAM +{ + BYTE byLaneNO; + union + { + BYTE uLen[4]; + struct + { + BYTE byIONo;//IO[1,4] + BYTE byTriggerType;//0-½أ1- + BYTE byRes1[2]; + }struIO;//IOģʽЧ + struct + { + BYTE byRelateChan;//ͨ[1,16] + BYTE byRes2[3]; + }struRS485; + }uTssParamInfo; + BYTE byRes[59]; + NET_ITC_LINE struLaneLine;// + NET_ITC_POLYGON struPlateRecog;//ʶ + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byRes2[3]; + NET_ITC_LINE struTrigLine;// + BYTE byRes1[228]; +}NET_ITC_LANE_PRS_PARAM,*LPNET_ITC_LANE_PRS_PARAM; + + +typedef struct tagNET_ITC_POST_PRS_PARAM +{ + BYTE byEnable; + BYTE byLaneNum; + BYTE bySourceType;//0-Ƶ,1-IOظȦ,2-RS485Ĵź + BYTE bySnapMode;//0-ȫͼ1-ȫͼ+д + BYTE byCapMode;//bySourceTypeΪ0Ƶʱʹã0-Ƶģʽ1-ģʽ + BYTE byNoPlatCarCap;//Ƿ޳ץ 0- 1- + BYTE bySceneMode;//ģʽ:0-ͨڳ1-շվģʽ(ͣʱϳ)2-ͣڳ(ҹϰ) + BYTE byRes[57]; + NET_ITC_LINE struLaneBoundaryLine;//߽ߣ߽߳ߣ + NET_ITC_PLATE_RECOG_PARAM struPlateRecog;//ʶ 40 + NET_ITC_LANE_PRS_PARAM struLaneParam[MAX_ITC_LANE_NUM/*6*/]; + BYTE byRes1[440]; +}NET_ITC_POST_PRS_PARAM,*LPNET_ITC_POST_PRS_PARAM; + +typedef struct tagNET_IPC_LANE_HVT_PARAM +{ + BYTE byLaneNO; + BYTE byCarDriveDirect; //ʻ ITC_LANE_CAR_DRIVE_DIRECT + BYTE byRes[62]; + NET_ITC_LINE struLaneLine;// + NET_ITC_POLYGON struPlateRecog;//ʶ + BYTE byRes1[256]; +} NET_IPC_LANE_HVT_PARAM,*LPNET_IPC_LANE_HVT_PARAM; + +typedef struct _NET_ITC_PARKING_DETECTION_ +{ + BYTE byEnable; //Ƿã0-ã1- + BYTE byRes; //ֽ + WORD wDuration;//ʱλs + WORD wAlarmIntervalTime;//ϴʱλs + BYTE byRes1[58]; //ֽ +}NET_ITC_PARKING_DETECTION, *LPNET_ITC_PARKING_DETECTION; + +typedef struct tagNET_IPC_POST_HVT_PARAM +{ + BYTE byEnable; + BYTE byLaneNum; + BYTE byEnhancedMode; //ǿģʽ0-ã1- + BYTE byPicRecognition; //ͼƬʶ0-ã1- + BYTE byRes[60]; + NET_ITC_LINE struLaneBoundaryLine;//߽ߣ߽߳ߣ + NET_ITC_PLATE_RECOG_PARAM struPlateRecog;//ʶ 40 + NET_IPC_LANE_HVT_PARAM struLaneParam[MAX_ITC_LANE_NUM/*6*/]; + char szSceneName[NAME_LEN/*32*/]; // + NET_VCA_LINE struSnapLine;//ץߣץļ跽ʽΪװЧ4.5NET_DVR_CAMERA_SETUPCFGṹbyErectMethodֶΪ1ʱ + NET_ITC_PARKING_DETECTION struParkingDetection; //ͣ + BYTE byRes1[328]; +} NET_IPC_POST_HVT_PARAM,*LPNET_IPC_POST_HVT_PARAM; + +//ץĻ4.0 +typedef struct tagNET_ITC_LANE_HVT_PARAM_V50 +{ + BYTE byLaneNO; //ij1255(ڵӺϴ) + BYTE byFlashMode; //˸ģʽ0-ͬʱ1- + BYTE bySignSpeed; //С־޸٣λkm/h + BYTE bySpeedLimit; //С޸ֵλkm/h + BYTE bySignLowSpeed; //С־޵٣λkm/h + BYTE byLowSpeedLimit; //С޵ֵλkm/h + BYTE byBigCarSignSpeed; //󳵱־޸٣λkm/h½棩 + BYTE byBigCarSpeedLimit; //޸ֵλkm/h½棩 + BYTE byBigCarSignLowSpeed; //󳵱־޵٣λkm/h + BYTE byBigCarLowSpeedLimit; //޵ֵλkm/h + BYTE bySnapTimes; //ץ1~3 + BYTE byDriveLineSnapTime;// ѹץ 1~3 + BYTE byHighSpeedSnapTime;// ץ1~3 + BYTE byLowSpeedSnapTime;// ץ1~3 + BYTE byBanSnapTime;// Υץ 1~3 + BYTE byReverseSnapTime;//ץ 1~3 + BYTE byRelatedDriveWay; //ţƥ䳵 + BYTE byLaneType; //ͣ0-δá1-ٹ·2-п·0xff-· + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪbyRelatedDriveWayӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byRes1[27]; + BYTE byChangeLaneEnable; //Υ±ץʹܣ0-رգ1- + BYTE byChangeLaneCapNo; //Υ±ץ2-3 + //ĿǰʹõһģԺܻչΪ೵ֱ + //, λʾ,0-,1-òο ITC_VIOLATION_DETECT_TYPE + DWORD dwVioDetectType; + DWORD dwRelatedIOOut; //IO(ͬʱ)λʾIOڣ0λʾIO1Դƣ0-1- + NET_ITC_LINE struTrigLine; //ߣĿǰʹõһģԺܻչΪ೵ֱ + NET_ITC_LINE struLineLeft; //󳵵 + NET_ITC_POLYGON struPlateRecog; //ʶ + NET_ITC_LANE_LOGIC_PARAM struLane; //ԣbyUseageTypebyCarDriveDirect + NET_ITC_INTERVAL_PARAM struInterval;//ץļ20byte + BYTE byRes2[280]; +}NET_ITC_LANE_HVT_PARAM_V50, *LPNET_ITC_LANE_HVT_PARAM_V50; + +typedef struct tagNET_ITC_POST_HVT_PARAM_V50 +{ + BYTE byLaneNum; //ʶij1-6 + BYTE byCapType; //ץͣ0-ǡˣĬϣ1- + BYTE byCapMode; //ץķʽ0-Ƶ֡1-ץģ2-ģʽ + BYTE bySecneMode; //ģʽ0-·Ĭϣ1-Сڣ2-ٹ· + BYTE bySpeedMode; //ģʽ0-޲٣1-״٣2-Ƶ + BYTE byLineRuleEffect; //Ч,ÿһλһ,0-Ч;1-Чbit0-󴥷;bit1-Ҵ;bit2-Ƶ + BYTE byRes1[78]; + NET_ITC_LINE struLeftTrigLine; //󴥷(һֱ) + NET_ITC_LINE struRigtTrigLine; //Ҵ(һֱ) + NET_ITC_LINE struLaneBoundaryLine; //߽ߣұ߳ҳߣ + NET_ITC_POLYGON struDetectArea; //Ƶ + NET_DVR_GEOGLOCATION struGeogLocation; //λãĬ㽭ʡʱ + NET_ITC_LANE_HVT_PARAM_V50 struLaneParam[MAX_ITC_LANE_NUM/*6*/]; // + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + BYTE byRes2[260]; +} NET_ITC_POST_HVT_PARAM_V50, *LPNET_ITC_POST_HVT_PARAM_V50; + + +// +typedef struct tagNET_ITC_LANE_NOCOMITY_PEDESTRIAN_PARAM +{ + BYTE byRelatedDriveWay;//ij + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byPedestriansNum;//ֵΧ1-100Ĭֵ1 + BYTE byVehicleSpeed;//ٶֵΧ0-100Ĭֵ0 + DWORD dwVehicleInterval; //ֵΧ0-65536Ĭֵ0 + BYTE byPedesDetRule; //˼򣻴˼ʻ 0~ 1~ҡ + BYTE byRes[3]; + NET_ITC_LINE struLaneLine;// + NET_ITC_LINE struStopLine;//ֹͣ + NET_ITC_POLYGON struPlateRecog; //ʶ + BYTE byRes1[280]; +} NET_ITC_LANE_NOCOMITY_PEDESTRIAN_PARAM, +*LPNET_ITC_LANE_NOCOMITY_PEDESTRIAN_PARAM; + +//˲ +typedef struct tagNET_ITC_NOCOMITY_PEDESTRIAN_PARAM +{ + BYTE byEnable; //ʹ + BYTE byLaneNum;// Χ1-3Ĭֵ3 + BYTE byRes[74]; + NET_ITC_LINE struLaneBoundaryLine;//ұ߽ + NET_ITC_LINE struTriggerLine;//˴ + NET_ITC_POLYGON struPedesDetRecog;//˼ + NET_ITC_LANE_NOCOMITY_PEDESTRIAN_PARAM struLaneParam[MAX_ITC_LANE_NUM/*6*/]; // + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + BYTE byRes1[400]; +}NET_ITC_NOCOMITY_PEDESTRIAN_PARAM, +*LPNET_ITC_NOCOMITY_PEDESTRIAN_PARAM; + +//IOźŵƲ +typedef struct tagNET_ITC_SINGLE_IO_LIGHT_PARAM +{ + BYTE byLightType; //ͨƵ,0-ת,1-ֱе,2-ת + BYTE byRelatedIO; //IOں + BYTE byRedLightState; //Ƶƽ״̬0-ߵƽƣ1-͵ƽ + BYTE byRes[17]; +}NET_ITC_SINGLE_IO_LIGHT_PARAM, *LPNET_ITC_SINGLE_IO_LIGHT_PARAM; + +//IOźŵƲ +typedef struct tagNET_ITC_IO_LIGHT_PARAM +{ + NET_ITC_SINGLE_IO_LIGHT_PARAM struIOLight[MAX_LIGHT_NUM]; //IOźŵƲ + BYTE byRes[8]; +}NET_ITC_IO_LIGHT_PARAM, *LPNET_ITC_IO_LIGHT_PARAM; + +//485źŵƲ +typedef struct tagNET_ITC_SINGLE_RS485_LIGHT_PARAM +{ + BYTE byLightType; //ͨƵͣ0-תƣ1-ֱеƣ2-ת + BYTE byRelatedLightChan; //ĺ̵Ƽͨ + BYTE byInputLight; //źŵͣ0-Ӻƣ1-̵ + BYTE byRelatedYLightChan; //ĻƵƼͨ + BYTE byRes[16]; +}NET_ITC_SINGLE_RS485_LIGHT_PARAM, *LPNET_ITC_SINGLE_RS485_LIGHT_PARAM; + +//485źŵƲ +typedef struct tagNET_ITC_RS485_LIGHT_PARAM +{ + NET_ITC_SINGLE_RS485_LIGHT_PARAM struRS485Light[MAX_LIGHT_NUM]; //485źŵƲ + BYTE byRes[8]; +}NET_ITC_RS485_LIGHT_PARAM, *LPNET_ITC_RS485_LIGHT_PARAM; + +typedef struct tagNET_POS_PARAM +{ + WORD wLeft; + WORD wTop; + WORD wRight; + WORD wBottom; +}NET_POS_PARAM, *LPNET_POS_PARAM; + +//Ƶ⽻ͨźŵƲṹ +typedef struct tagNET_ITC_SINGLE_VIDEO_DETECT_LIGHT_PARAM +{ + BYTE byLightNum; //ͨƸ + BYTE byStraightLight; //Ƿֱб־ƣ0- 1- + BYTE byLeftLight; //Ƿת־ƣ0-1- + BYTE byRightLight; //Ƿת־ƣ0-1- + BYTE byRedLight;//Ƿкƣ0-1- + BYTE byGreenLight; //Ƿ̵ƣ0-1- + BYTE byYellowLight; //ǷлƵƣ0-1- + BYTE byYellowLightTime;//ȡֵΧ010sITC3.7Ver + NET_POS_PARAM struLightRect; //ͨ + BYTE byRes[24]; +}NET_ITC_SINGLE_VIDEO_DETECT_LIGHT_PARAM, *LPNET_ITC_SINGLE_VIDEO_DETECT_LIGHT_PARAM; + + +//Ƶ⽻ͨźŵƲṹ(12⣬488ֽ) +typedef struct tagNET_ITC_VIDEO_DETECT_LIGHT_PARAM +{ + NET_ITC_SINGLE_VIDEO_DETECT_LIGHT_PARAM struTrafficLight[MAX_VIDEO_DETECT_LIGHT_NUM]; //ƵźŵƲ + BYTE byRes[8]; +}NET_ITC_VIDEO_DETECT_LIGHT_PARAM, *LPNET_ITC_VIDEO_DETECT_LIGHT_PARAM; + +//ͨźŵƽ +typedef union tagNET_ITC_LIGHT_ACCESSPARAM_UNION +{ + DWORD uLen[122]; + NET_ITC_IO_LIGHT_PARAM struIOLight; //IOźŵƲ + NET_ITC_RS485_LIGHT_PARAM struRS485Light; //485źŵƲ + NET_ITC_VIDEO_DETECT_LIGHT_PARAM struVideoDelectLight; //ƵźŵƲ +}NET_ITC_LIGHT_ACCESSPARAM_UNION, *LPNET_ITC_LIGHT_ACCESSPARAM_UNION; + +//ͨźŵƲṹ +typedef struct tagNET_ITC_TRAFFIC_LIGHT_PARAM +{ + BYTE bySource; //ͨźŵƽԴ0-IO룬1-RS485 + BYTE byRes1[3]; + NET_ITC_LIGHT_ACCESSPARAM_UNION struLightAccess;//źŵƽ + BYTE byRes[32]; +}NET_ITC_TRAFFIC_LIGHT_PARAM, *LPNET_ITC_TRAFFIC_LIGHT_PARAM; + +//Υ߲ṹ +typedef struct tagNET_ITC_VIOLATION_DETECT_LINE +{ + NET_ITC_LINE struLaneLine; //߲ + NET_ITC_LINE struStopLine; //ֹ߲ͣ + NET_ITC_LINE struRedLightLine; //ƴ߲ + NET_ITC_LINE struCancelLine; //ֱдλȡ + NET_ITC_LINE struWaitLine; //ֹ߲ͣ + NET_ITC_LINE struRes[8]; +}NET_ITC_VIOLATION_DETECT_LINE, *LPNET_ITC_VIOLATION_DETECT_LINE; + +//˴Ʋ +typedef struct tagNET_ITC_REDLIGHT_PEDESTRIAN_PARAM +{ + BYTE byEnable; //ʹ + BYTE bySnapNumTimes; //ץ1-3Ĭ3 + BYTE byPedesDir; //˷0~1~2~˫ + BYTE byDelayTime; //ʱʱ1-5s + BYTE byStackTargetEnble;//Ŀ򣨼ץĵһͼƬϿסƵˣ0~ӣ1~ + BYTE byCalibRecogCtrl;//궨ƣ0~Ƴ궨1~ӱ궨 + BYTE byRes1[2]; + NET_ITC_TRAFFIC_LIGHT_PARAM struTrafficLight; //ͨźŵƲ + NET_ITC_LINE struStopLine;//ֹͣ + NET_ITC_POLYGON struCalibRecog[MAX_CALIB_RECOG_NUM/*2*/];//궨 + BYTE byRes[440]; +}NET_ITC_REDLIGHT_PEDESTRIAN_PARAM, +*LPNET_ITC_REDLIGHT_PEDESTRIAN_PARAM; + +typedef struct tagNET_ITC_POST_MOBILE_PARAM +{ + BYTE byEnable; + BYTE bySceneMode;//ģʽ 0-ٹ· 1-е· + /*ץ + bit0-,bit1-ռ,bit2-ѹӲ· + */ + WORD wExpressWayCapType;//ٹ· + /*ץ + bit0-,bit1-ռ,bit2-ռרó + */ + WORD wUrbanRoadCapType;//е· + BYTE byCapNum;//ץ [2,3] + BYTE byRecordEnable;//Υ¼ʹ 0-رգ1- + DWORD dwPreRecordTime;//¼Ԥ¼ʱ(s) + DWORD dwOverRecordTime;//¼ʱʱ(s) + NET_ITC_LANE_LOGIC_PARAM struLane; // + NET_ITC_POLYGON struPolygon[MAX_MOBILE_POLYGON_NUM/*3*/]; //ʶ + NET_ITC_VIOLATION_DETECT_LINE struLine[MAX_MOBILE_DETECTLINE_NUM/*3*/]; //Υ + NET_ITC_LINE struLaneBoundaryLine; //߽ߣұ߳ҳߣ + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + NET_ITC_INTERVAL_PARAM struInterval;//ץļ20byte + BYTE byRes[256]; +}NET_ITC_POST_MOBILE_PARAM,*LPNET_ITC_POST_MOBILE_PARAM; + +typedef union tagNET_ITC_TRIGGER_PARAM_UNION +{ + DWORD uLen[1070]; // + NET_ITC_POST_IOSPEED_PARAM struIOSpeed; //ڣIOٲ + NET_ITC_POST_SINGLEIO_PARAM struSingleIO; //ڣIO + NET_ITC_POST_RS485_PARAM struPostRs485; //ڣRS485 + NET_ITC_POST_RS485_RADAR_PARAM struPostRadar; //ڣRS485״ + NET_ITC_POST_VTCOIL_PARAM struVtCoil; //ڣȦ + NET_ITC_POST_HVT_PARAM struHvt; //ڣпڲ + NET_ITC_EPOLICE_IOTL_PARAM struIOTL; //羯IO̵Ʋ + NET_ITC_EPOLICE_RS485_PARAM struEpoliceRs485; //羯RS485 + NET_ITC_EPOLICE_RS485_PARAM struPERs485; //ʽ羯RS485 + NET_ITC_POST_MPR_PARAM struPostMpr; //֡ⴥMPR + NET_DVR_VIA_VTCOIL_PARAM struViaVtCoil; //(VIA)Ƶ + NET_ITC_POST_IMT_PARAM struPostImt;//ǻۼش + NET_ITC_POST_PRS_PARAM struPostPrs;//Ƶⴥ + NET_IPC_POST_HVT_PARAM struIpcHvt;//(IPC) пڲ + NET_ITC_POST_HVT_PARAM_V50 struHvtV50; /*ڣпڲV50*/ + NET_ITC_POST_MOBILE_PARAM struPostMobile;// ƶͨģʽ + NET_ITC_NOCOMITY_PEDESTRIAN_PARAM struNoComityPed;//˲ + NET_ITC_REDLIGHT_PEDESTRIAN_PARAM struRedLightPed;//˴Ʋ +}NET_ITC_TRIGGER_PARAM_UNION, *LPNET_ITC_TRIGGER_PARAM_UNION; + +//ṹ +typedef struct tagNET_ITC_SINGLE_TRIGGERCFG +{ + BYTE byEnable; //Ƿøôģʽ0-1- + BYTE byRes1[3]; + DWORD dwTriggerType; //ͣITC_TRIGGERMODE_TYPE + NET_ITC_TRIGGER_PARAM_UNION uTriggerParam; // + BYTE byRes[64]; +}NET_ITC_SINGLE_TRIGGERCFG, *LPNET_ITC_SINGLE_TRIGGERCFG; + +//ṹ +typedef struct tagNET_ITC_TRIGGERCFG +{ + DWORD dwSize; //ṹ + NET_ITC_SINGLE_TRIGGERCFG struTriggerParam; // + BYTE byRes[32]; +}NET_ITC_TRIGGERCFG, *LPNET_ITC_TRIGGERCFG; + + +//Υͺ궨 +typedef enum _ITC_VIOLATION_DETECT_TYPE_ +{ + ITC_VIOLATION_POST = 0x01, //ץ + ITC_VIOLATION_DRIVELINE = 0x02,//ѹץ + ITC_VIOLATION_REVERSE = 0x04,//ץ + ITC_VIOLATION_REDLIGHT = 0x08,//ץ + ITC_VIOLATION_DIRECTION = 0x10,//ʻץ + ITC_VIOLATION_INTERSECTION_CONGEST = 0x20,//·ץ + ITC_VIOLATION_NONDRIVEWAY = 0x40, //ռץ + ITC_VIOLATION_CHANGELANE = 0x80, //Υ + ITC_VIOLATION_BAN = 0x100, //Υ + ITC_VIOLATION_INTERSECTION_PARK=0x200,//Խ + ITC_VIOLATION_GREEN_PARK=0x400,//̵ͣ + ITC_VIOLATION_HIGH_SPEED = 0x800, /**/ + ITC_VIOLATION_LOW_SPEED = 0x1000, /**/ + ITC_VIOLATION_EMERGENCY = 0x2000, /*ռӦ*/ + ITC_VIOLATION_TURN_AROUND = 0x8000,/*Υͷ*/ + ITC_VIOLATION_CONGESTION = 0x10000 /*ӵ*/ +}ITC_VIOLATION_DETECT_TYPE; + + +//Υṹ +typedef struct tagNET_ITC_VIOLATION_DETECT_PARAM +{ + DWORD dwVioDetectType; //Υ, λʾ, ITC_VIOLATION_DETECT_TYPE ,0-,1- + BYTE byDriveLineSnapTimes; //ѹץ,2-3 + BYTE byReverseSnapTimes; //ץ,2-3 + WORD wStayTime; //ռͣʱ䣨ʱץģλs + BYTE byNonDriveSnapTimes;//ռץ2-3 + BYTE byChangeLaneTimes;//Υץ 2-3 + BYTE bybanTimes;//Υץ2-3 + BYTE byDriveLineSnapSen;// ѹ(0~100)(3.7Ver) + WORD wSnapPosFixPixel; //2,3ץλСƫ(ΥźŵʱЧ)λأ Ľ + BYTE bySpeedTimes;//Υץ2-3(3.8Ver) + BYTE byTurnAroundEnable;//Υµͷʹ 0~ر 1~ + BYTE byThirdPlateRecogTime;//ʶʱ 0~180s + BYTE byPostSnapTimes;//ץ,1-2 + BYTE byRes1[18]; + WORD wStopLineDis; //羯2ΥͼƬֹͣߵ̾룬[0,300]λ() + BYTE byRes[14]; +}NET_ITC_VIOLATION_DETECT_PARAM, *LPNET_ITC_VIOLATION_DETECT_PARAM; + +//Ͷ +typedef enum _ITC_RELA_LANE_DIRECTION_TYPE_ +{ + ITC_RELA_LANE_DIRECTION_UNKNOW = 0, // + ITC_RELA_LANE_EAST_WEST = 1, //Ӷ + ITC_RELA_LANE_WEST_EAST = 2, // + ITC_RELA_LANE_SOUTH_NORTH = 3, // + ITC_RELA_LANE_NORTH_SOUTH = 4, //ӱ + ITC_RELA_LANE_EASTSOUTH_WESTNORTH = 5, //Ӷ + ITC_RELA_LANE_WESTNORTH_EASTSOUTH = 6, // + ITC_RELA_LANE_EASTNORTH_WESTSOUTH = 7, //Ӷ + ITC_RELA_LANE_WESTSOUTH_EASTNORTH = 8 //򶫱 +} ITC_RELA_LANE_DIRECTION_TYPE; + + +//;Ͷ +typedef enum _ITC_LANE_USEAGE_TYPE_ +{ + ITC_LANE_USEAGE_UNKNOW = 0, //δ֪ + ITC_LANE_CARRIAGEWAY = 1, // + ITC_LANE_BUS = 2, //רõ + ITC_LANE_FAST = 3, //쳵 + ITC_LANE_SLOW = 4, // + ITC_LANE_MOTOR = 5, //Ħг + ITC_LANE_NONMOTOR = 6, //ǻ + ITC_LANE_REVERSE_LANE = 7, //򳵵 + ITC_LANE_BAN_TRUCKS = 8, // ֹ + ITC_LANE_MIX = 9, //ϳ + ITC_LANE_EMERGENCY = 10, //Ӧ + ITC_LANE_BAN_LEFT = 11, // 󳵵 + ITC_LANE_BAN_RIGHT = 12 // ҳ +}ITC_LANE_USEAGE_TYPE; + +//Ͷ +typedef enum _ITC_LANE_DIRECTION_TYPE_ +{ + ITC_LANE_DIRECTION_UNKNOW = 0, //δ֪ + ITC_LANE_LEFT = 1, //ת + ITC_LANE_STRAIGHT = 2, //ֱ + ITC_LANE_LEFT_STRAIGHT = 3, //ת+ֱ + ITC_LANE_RIGHT = 4, //ת + ITC_LANE_LEFT_RIGHT = 5, //ת+ת + ITC_LANE_RIGHT_STRAIGHT = 6, //ת+ֱ + ITC_LANE_LEFT_RIGHT_STRAIGHT = 7, //ת+ת+ֱ + ITC_LANE_LEFT_WAIT = 9, //ת + ITC_LANE_STRAIGHT_WAIT = 10, //ֱд + ITC_LANE_FORWARD = 11, //ʻ + ITC_LANE_BACKWARD = 12, //ʻ + ITC_LANE_BOTHWAY = 13, //˫ʻ + ITC_LANE_STRAIGHT_WAIT_RIGHT = 14 //ֱд + ת +}ITC_LANE_DIRECTION_TYPE; + +//ʻͶ +typedef enum _ITC_LANE_CAR_DRIVE_DIRECT_ +{ + ITC_LANE_DRIVE_UNKNOW = 0, //δ֪ + ITC_LANE_DRIVE_UP_TO_DOWN = 1, //ʻ() + ITC_LANE_DRIVE_DOWN_TO_UP = 2 //ʻ() +}ITC_LANE_CAR_DRIVE_DIRECT; + +//Ͷ +typedef enum _ITC_LINE_TYPE_ +{ + ITC_LINT_UNKNOW = 0, //δ֪ + ITC_LINE_WHITE = 1, //İʵ + ITC_LINE_STOP = 2, //ֹͣ + ITC_LINE_SINGLE_YELLOW = 3, // + ITC_LINE_DOUBLE_YELLOW = 4, //˫ + ITC_LINE_GUARD_RAIL = 5, //л + ITC_LINE_NO_CROSS = 6, //޷Խij + ITC_LINE_DOTTED = 7 // +}ITC_LINE_TYPE; + + +//Ƶ羯ṹ +typedef struct tagNET_ITC_LANE_VIDEO_EPOLICE_PARAM +{ + BYTE byLaneNO; //ij + BYTE bySensitivity; //Ȧȣ[1,100] + BYTE byEnableRadar;//״0-ã1- + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + NET_ITC_LANE_LOGIC_PARAM struLane; // + NET_ITC_VIOLATION_DETECT_PARAM struVioDetect; //Υ + NET_ITC_VIOLATION_DETECT_LINE struLine; //Υ + NET_ITC_POLYGON struPlateRecog; //ʶ + BYTE byRecordEnable;//¼־0-¼1-¼ + BYTE byRecordType;//¼ͣ0-Ԥ¼1-ʱ¼ + BYTE byPreRecordTime;//¼ƬԤ¼ʱ䣨Ĭ0λ + BYTE byRecordDelayTime;//¼Ƭʱʱ䣨Ĭ0λ + BYTE byRecordTimeOut;//¼ʱʱ䣨룩 + BYTE byCarSpeedLimit; //ֵλkm/h + BYTE byCarSignSpeed;//־٣λkm/h + BYTE bySnapPicPreRecord; //ץͼƬԤ¼ʱ㣻0-ĬֵڶͼƬ1-һͼƬ2-ڶͼƬ3-ͼƬ + NET_ITC_INTERVAL_PARAM struInterval;//ץļ20byte + BYTE byRes[36]; +}NET_ITC_LANE_VIDEO_EPOLICE_PARAM, *LPNET_ITC_LANE_VIDEO_EPOLICE_PARAM; + +//Ƶ羯ṹ +typedef struct tagNET_ITC_VIDEO_EPOLICE_PARAM +{ + BYTE byEnable; //Ƿã0-ã1- + BYTE byLaneNum; //ʶij + BYTE byLogicJudge;//Υж߼ֵΪ0-1- + BYTE byRes1; + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ʶ + NET_ITC_TRAFFIC_LIGHT_PARAM struTrafficLight; //ͨźŵƲ + NET_ITC_LANE_VIDEO_EPOLICE_PARAM struLaneParam[MAX_ITC_LANE_NUM]; // + NET_ITC_LINE struLaneBoundaryLine; //߽ߣұ߳ı߽ߣ + NET_ITC_LINE struLeftLine; //תֽ + NET_ITC_LINE struRightLine; //תֽ + NET_ITC_LINE struTopZebraLine; //ϲ + NET_ITC_LINE struBotZebraLine; //² + BYTE byRes[32]; +}NET_ITC_VIDEO_EPOLICE_PARAM, *LPNET_ITC_VIDEO_EPOLICE_PARAM; + +typedef union tagNET_ITC_VIDEO_TRIGGER_PARAM_UNION +{ + DWORD uLen[1150]; + NET_ITC_VIDEO_EPOLICE_PARAM struVideoEP; //Ƶ羯 +}NET_ITC_VIDEO_TRIGGER_PARAM_UNION, *LPNET_ITC_VIDEO_TRIGGER_PARAM_UNION; + +typedef struct tagNET_ITC_VIDEO_TRIGGER_PARAM +{ + DWORD dwSize; + DWORD dwMode; //ģʽITC_TRIGGERMODE_TYPE + NET_ITC_VIDEO_TRIGGER_PARAM_UNION uVideoTrigger; //ģʽ + BYTE byRes[32]; +}NET_ITC_VIDEO_TRIGGER_PARAM, *LPNET_ITC_VIDEO_TRIGGER_PARAM; + +typedef struct tagNET_DVR_STATUS_DETECTCFG +{ + DWORD dwSize; //ṹ + BYTE byEnableTrigIODetect; //IO״̬⣬1-ǣ0- + BYTE byEnableFlashOutDetect; //ͬ״̬⣬1-ǣ0- + BYTE byEnableRS485Detect; //RS485״̬⣬1-ǣ0- + BYTE byEnableTrafficLightDetect;//ͨ״̬⣬1-ǣ0- + BYTE byRes[28]; +}NET_DVR_STATUS_DETECTCFG, *LPNET_DVR_STATUS_DETECTCFG; + +typedef enum _ITC_STATUS_DETECT_TYPE_ +{ + ITC_STATUS_DETECT_NULL = 0, //δ֪ + ITC_STATUS_DETECT_TRIGGERIO, //IO + ITC_STATUS_DETECT_FLASHOUT, //ͬ + ITC_STATUS_DETECT_RS485, //RS485 + ITC_STATUS_DETECT_TRIGGERTYPE, //ͣ + ITC_STATUS_DETECT_TRAFFICLIGHT_COLOR, //ͨƣɫ + ITC_STATUS_DETECT_TRAFFICLIGHT_TURN //ͨƣת +}ITC_STATUS_DETECT_TYPE; + +typedef struct tagNET_ITC_TRIGGERIO_INFO +{ + BYTE byTriggerIOIndex[MAX_IOIN_NUM]; //IO + BYTE byRes[40]; +}NET_ITC_TRIGGERIO_INFO, *LPNET_ITC_TRIGGERIO_INFO; + +typedef struct tagNET_ITC_FLASHOUT_INFO +{ + BYTE byFlashOutIndex[MAX_IOOUT_K_NUM]; //ͬ + BYTE byRes[40]; +}NET_ITC_FLASHOUT_INFO, *LPNET_ITC_FLASHOUT_INFO; + +typedef struct tagNET_ITC_SERIAL_CHECKINFO +{ + BYTE bySerialIndex[MAX_ITC_SERIALCHECK_NUM]; //485У0-Ч,1-Ч, bySerialIndex[0]ʾȷͷ, bySerialIndex[1]ʾȷβ + BYTE byRes[40]; +}NET_ITC_SERIAL_CHECKINFO, *LPNET_ITC_SERIAL_CHECKINFO; + +typedef struct tagNET_ITC_TRIGGERTYPE_INFO +{ + BYTE byTrigTypeIndex; //ֵ + BYTE byRes[47]; +}NET_ITC_TRIGGERTYPE_INFO, *LPNET_ITC_TRIGGERTYPE_INFO; + +//Ƶ羯 +typedef struct tagNET_ITC_TRAFFIC_LIGHT_COLOR +{ + BYTE byLeftLight;//תƣ0 ʾЧ1Ϊ 2Ϊ̵ 3 Ƶ 4ƶ + BYTE byRightLight; //תƣ0 ʾЧ1Ϊ 2Ϊ̵ 3 Ƶ 4ƶ + BYTE byStraightLight; //ֱеƣ0 ʾЧ1Ϊ 2Ϊ̵ 3 Ƶ 4ƶ + BYTE byRes[45]; +}NET_ITC_TRAFFIC_LIGHT_COLOR, *LPNET_ITC_TRAFFIC_LIGHT_COLOR; + +//Ƶ羯 +typedef struct tagNET_ITC_TRAFFIC_LIGHT_TURN +{ + BYTE byLightType[MAX_ITC_LANE_NUM];// 0 ʾЧ1Ϊ 2Ϊ̵ 3 Ƶ 4ƶ + BYTE byRes[42]; +} NET_ITC_TRAFFIC_LIGHT_TURN, *LPNET_ITC_TRAFFIC_LIGHT_TURN; + +typedef union tagNET_ITC_STATUS_UNION +{ + BYTE uLen[48]; // + NET_ITC_TRIGGERIO_INFO struTrigIO; //IOں + NET_ITC_FLASHOUT_INFO struFlashOut; //ͬ + NET_ITC_SERIAL_CHECKINFO struSerial; // + NET_ITC_TRIGGERTYPE_INFO struTrigType; //ͣ + NET_ITC_TRAFFIC_LIGHT_COLOR struTrafficLightColor; //ͨƣɫӦITC_STATUS_DETECT_TRAFFICLIGHT_COLOR + NET_ITC_TRAFFIC_LIGHT_TURN struTrafficLightTurn;//ͨƣת򣩶ӦITC_STATUS_DETECT_TRAFFICLIGHT_TURN +}NET_ITC_STATUS_UNION, *LPNET_ITC_STATUS_UNION; + +typedef struct tagNET_ITC_STATUS_DETECT_RESULT +{ + ITC_STATUS_DETECT_TYPE dwStatusType;//״̬ͣITC_STATUS_DETECT_TYPE + NET_ITC_STATUS_UNION uStatusParam; //״̬ + DWORD dwHoldTime; //ʱ䣨λms + BYTE byRes[32]; +}NET_ITC_STATUS_DETECT_RESULT, *LPNET_ITC_STATUS_DETECT_RESULT; + +typedef struct tagNET_DVR_SETUPALARM_PARAM +{ + DWORD dwSize; + BYTE byLevel; //ȼ0-һȼߣ1-ȼУ2-ȼͣ + BYTE byAlarmInfoType; //ϴϢͣץĻ֧֣0-ϱϢNET_DVR_PLATE_RESULT1-±Ϣ(NET_ITS_PLATE_RESULT)2012-9-28 + BYTE byRetAlarmTypeV40; //0--NET_DVR_ALARMINFO_V30NET_DVR_ALARMINFO, 1--豸֧NET_DVR_ALARMINFO_V40򷵻NET_DVR_ALARMINFO_V40֧򷵻NET_DVR_ALARMINFO_V30NET_DVR_ALARMINFO + BYTE byRetDevInfoVersion; //CVRϴϢصṹ汾 0-COMM_ALARM_DEVICE 1-COMM_ALARM_DEVICE_V40 + BYTE byRetVQDAlarmType; //VQDϴͣ0-ϴNET_DVR_VQD_DIAGNOSE_INFO1-ϴNET_DVR_VQD_ALARM + //1-ʾⱨչ(INTER_FACE_DETECTION),0-ʾԭֽ֧ṹ(INTER_FACESNAP_RESULT) + BYTE byFaceAlarmDetection; + //Bit0- ʾǷϴͼƬ: 0-ϴ1-ϴ + //Bit1- ʾϴȷϻƣ0-1- + //Bit6- ʾ״ⱨ(eventType:radarDetection)Ƿʵʱϴ0-1-webʵʱʾ״Ŀ켣 + BYTE bySupport; + // + //bit0-Ƽ⣨IPC 0-1- + //bit1-ͳƣIPC 0-1- + //bit2-ȶͼͳƣIPC 0-1- + //bit3-ץģIPC 0-1- + //bit4-ԱȣIPC 0-1- + BYTE byBrokenNetHttp; + WORD wTaskNo; // (ϴNET_DVR_VEHICLE_RECOG_RESULTеֶdwTaskNoӦ ͬʱ ·ṹ NET_DVR_VEHICLE_RECOG_CONDеֶdwTaskNoӦ) + BYTE byDeployType; //ͣ0-ͻ˲1-ʵʱ + BYTE bySubScription; //ģλʾδIJϱ //ռλ + //Bit7-ƶ˳Ƿͼ0-ͼ(V30ϱ)1-ͼ(V40ϱ) + BYTE byRes1[2]; + BYTE byAlarmTypeURL;//bit0-ʾץıϴINTER_FACESNAP_RESULT0-ʾƴ䣬1-ʾURL䣨豸ֵ֧£豸֧ݾ屨ж,ͬʱ豸Ҫ֧URLط񣬵ǰǡƴ洢 + //bit1-ʾEVENT_JSONͼƬݳͣ0-ʾƴ䣬1-ʾURL䣨豸ֵ֧£豸֧ݾ屨жϣ + //bit2 - ȶ(ΪCOMM_SNAP_MATCH_ALARM)ͼƬϴͣ0 - ƴ䣬1 - URL + //bit3 - Ϊ(ΪCOMM_ALARM_RULE)ͼƬϴͣ0 - ƴ䣬1 - URL䣬ֶ豸Ƿ֧֣ӦӲڵǷ񷵻Ϊtrue + BYTE byCustomCtrl;//Bit0- ʾָ֧ʻͼϴ: 0-ϴ,1-ϴ +}NET_DVR_SETUPALARM_PARAM, *LPNET_DVR_SETUPALARM_PARAM; + +typedef struct tagNET_DVR_SETUPALARM_PARAM_V50 +{ + DWORD dwSize; + BYTE byLevel; //ȼ0-һȼߣ1-ȼУ2-ȼͣ + BYTE byAlarmInfoType; //ϴϢͣץĻ֧֣0-ϱϢNET_DVR_PLATE_RESULT1-±Ϣ(NET_ITS_PLATE_RESULT)2012-9-28 + BYTE byRetAlarmTypeV40; //0--NET_DVR_ALARMINFO_V30NET_DVR_ALARMINFO, 1--豸֧NET_DVR_ALARMINFO_V40򷵻NET_DVR_ALARMINFO_V40֧򷵻NET_DVR_ALARMINFO_V30NET_DVR_ALARMINFO + BYTE byRetDevInfoVersion; //CVRϴϢصṹ汾 0-COMM_ALARM_DEVICE 1-COMM_ALARM_DEVICE_V40 + BYTE byRetVQDAlarmType; //VQDϴͣ0-ϴNET_DVR_VQD_DIAGNOSE_INFO1-ϴNET_DVR_VQD_ALARM + //1-ʾⱨչ(INTER_FACE_DETECTION),0-ʾԭֽ֧ṹ(INTER_FACESNAP_RESULT) + BYTE byFaceAlarmDetection; + //Bit0- ʾǷϴͼƬ: 0-ϴ1-ϴ + //Bit1- ʾϴȷϻƣ0-1- + //Bit6- ʾ״ⱨ(eventType:radarDetection)Ƿʵʱϴ0-1-webʵʱʾ״Ŀ켣 + BYTE bySupport; + // + //bit0-Ƽ⣨IPC 0-1- + //bit1-ͳƣIPC 0-1- + //bit2-ȶͼͳƣIPC 0-1- + //bit3-ץģIPC 0-1- + //bit4-ԱȣIPC 0-1- + //bit5-JSON͸IPC 0-1- + //bit6-ȶͼԱͣʱͳϴ¼0-1- + //bit7-ȶͼͳϴ¼ȷϻƣ0-1- + BYTE byBrokenNetHttp; + WORD wTaskNo; // (ϴNET_DVR_VEHICLE_RECOG_RESULTеֶdwTaskNoӦ ͬʱ ·ṹ NET_DVR_VEHICLE_RECOG_CONDеֶdwTaskNoӦ) + BYTE byDeployType; //ͣ0-ͻ˲1-ʵʱ + BYTE bySubScription; //ģλʾδIJϱ //ռλBit7-ƶ˳Ƿͼ0-ͼ(V30ϱ)1-ͼ(V40ϱ) + //ӦV60汾 + //bit0-AID¼(COMM_ALARM_AID_V41) 0-1- + //bit1-TFS¼COMM_ALARM_TFS 0-1- + //bit2-TPSͳƹ¼COMM_ALARM_TPS_STATISTICS 0-1- + //bit3-Ϊ(COMM_ALARM_RULE) 0-1- + BYTE byBrokenNetHttpV60; + BYTE byRes1; + BYTE byAlarmTypeURL;//bit0-ʾץıϴINTER_FACESNAP_RESULT0-ʾƴ䣬1-ʾURL䣨豸ֵ֧£豸֧ݾ屨ж,ͬʱ豸Ҫ֧URLط񣬵ǰǡƴ洢 + //bit1-ʾEVENT_JSONͼƬݳͣ0-ʾƴ䣬1-ʾURL䣨豸ֵ֧£豸֧ݾ屨жϣ + //bit2 - ȶ(ΪCOMM_SNAP_MATCH_ALARM)ͼƬϴͣ0 - ƴ䣬1 - URL + //bit3 - Ϊ(ΪCOMM_ALARM_RULE)ͼƬϴͣ0 - ƴ䣬1 - URL䣬ֶ豸Ƿ֧֣ӦӲڵǷ񷵻Ϊtrue + BYTE byCustomCtrl;//Bit0- ʾָ֧ʻͼϴ: 0-ϴ,1-ϴ + BYTE byRes4[128]; +}NET_DVR_SETUPALARM_PARAM_V50, *LPNET_DVR_SETUPALARM_PARAM_V50; + +typedef struct tagNET_ITC_VIDEO_TRIGGER_COND +{ + DWORD dwSize; + DWORD dwChannel; + DWORD dwTriggerMode; //ƵģʽͣITC_TRIGGERMODE_TYPE + BYTE byRes[16]; +}NET_ITC_VIDEO_TRIGGER_COND, *LPNET_ITC_VIDEO_TRIGGER_COND; + +//ṹ +typedef struct tagNET_ITC_FTP_TYPE_COND +{ + DWORD dwChannel;//ͨ + BYTE byWorkMode; // 0-FTP1(FTP)1-FTP2(FTP) + BYTE byRes[7]; +}NET_ITC_FTP_TYPE_COND, *LPNET_ITC_FTP_TYPE_COND; + +//ýṹ +typedef struct tagNET_ITC_FTP_CFG +{ + DWORD dwSize; + BYTE byEnable; /*Ƿftpϴܣ0-1-*/ + BYTE byAddressType; //0-ʵipv4 ipv6ַ 1- + // unionServerʹʵʵַ + WORD wFTPPort; /*˿*/ + union + { + struct + { + BYTE szDomain[MAX_DOMAIN_NAME];//ַ + BYTE byRes1[80]; + }struDomain; + struct + { + NET_DVR_IPADDR struIp;/*IPַ*/ //IPv4 IPv6ַ, 144ֽ + } struAddrIP; + }unionServer; //ʹṹͨbyAddressTypeֶαʾIPַ 64 + BYTE szUserName[NAME_LEN]; /*û*/ + BYTE szPassWORD[PASSWD_LEN]; /**/ + BYTE byRes4; // 0-FTP1(FTP)1-FTP2(FTP) + BYTE byDirLevel; /*0 = ʹĿ¼ṹֱӱڸĿ¼, + 1 = ʹ1Ŀ¼,2=ʹ2Ŀ¼, + 3 = ʹ3Ŀ¼,4=ʹ4Ŀ¼*/ + BYTE byIsFilterCarPic;/*СͼǷϴ0-ϴ,1-ϴ*/ + BYTE byUploadDataType;//0-ȫ1-ڣ2-Υ (FTPʱĬѡȫ˫FTPʱֿ֧ڣΥµѡ) + NET_DVR_PICTURE_NAME struPicNameRule;/* ͼƬ */ + BYTE byTopDirMode; /*һĿ¼, 0x1 = ʹ豸, + 0x2 = ʹ豸,0x3 =ʹ豸ipַ + 0x4=ʹü,0x5=ʹʱ(), + 0x6=ʹʱ(),0x7=Υ,0x8=,0x9=ص, + 0xa=ͨ,0xb=ͨ,0xc=0xff=Զ*/ + BYTE bySubDirMode; /*Ŀ¼, 0x1 =ʹ豸, + 0x2 = ʹ豸,0x3 =ʹ豸ipַ + 0x4=ʹü,0x5=ʹʱ(), + 0x6=ʹʱ(),0x7=Υ,0x8=,0x9=ص, + 0xa=ͨ,0xb=ͨ,0xc=0xff=Զ*/ + BYTE byThreeDirMode; /*Ŀ¼, 0x1 = ʹ豸, + 0x2 = ʹ豸,0x3 =ʹ豸ipַ + 0x4=ʹü,0x5=ʹʱ(), + 0x6=ʹʱ(),0x7=Υ,0x8=,0x9=ص, + 0xa=ͨ,0xb=ͨ,0xc=0xff=Զ*/ + BYTE byFourDirMode; /*ļĿ¼, 0x1 =ʹ豸, + 0x2 = ʹ豸,0x3 =ʹ豸ipַ + 0x4=ʹü,0x5=ʹʱ(), + 0x6=ʹʱ(),0x7=Υ,0x8=,0x9=ص, + 0xa=ͨ,0xb=ͨ,0xc=0xff=Զ*/ + /*ͼƬԶ PICNAME_ITEM_CUSTOM ʱ Ч*/ + BYTE szPicNameCustom[MAX_CUSTOMDIR_LEN];// (3.7Ver Ч) + BYTE szTopCustomDir[MAX_CUSTOMDIR_LEN]; /*ԶһĿ¼*/ + BYTE szSubCustomDir[MAX_CUSTOMDIR_LEN];/*ԶĿ¼*/ + BYTE szThreeCustomDir[MAX_CUSTOMDIR_LEN]; /*ԶĿ¼*/ + BYTE szFourCustomDir[MAX_CUSTOMDIR_LEN]; /*ԶļĿ¼*/ + BYTE byRes3[900]; //12չԤ ֧͸ +}NET_ITC_FTP_CFG, *LPNET_ITC_FTP_CFG; + +typedef struct tagNET_DVR_LATITUDE_PARAM +{ + BYTE byDegree;//[0,179] + BYTE byMinute;//[0,59] + BYTE bySec;//[0,59] + BYTE byRes; +}NET_DVR_LATITUDE_PARAM, *LPNET_DVR_LATITUDE_PARAM; + +typedef struct tagNET_DVR_LONGITUDE_PARAM +{ + BYTE byDegree;//[0,179] + BYTE byMinute;//[0,59] + BYTE bySec;//[0,59] + BYTE byRes; +}NET_DVR_LONGITUDE_PARAM, *LPNET_DVR_LONGITUDE_PARAM; + +typedef struct tagNET_DVR_GPS_DATACFG +{ + DWORD dwSize; + BYTE byGpsDataMode;//GPSݻȡ 0-Զ1-ֶ + BYTE byLongitudeType;// 0-1- + BYTE byLatitudeType;//γ 0-γ1-γ + BYTE byRes; + NET_DVR_LATITUDE_PARAM struLatitude; /*γ*/ + NET_DVR_LONGITUDE_PARAM struLongitude; /**/ + BYTE byRes1[128]; +}NET_DVR_GPS_DATACFG,*LPNET_DVR_GPS_DATACFG; + +typedef enum _VCA_DATABASE_TYPE_ +{ + DATABASE_NULL = 0, //δ֪ + DATABASE_SNAP, //ץݿ + DATABASE_FACE //ݿ +}VCA_DATABASE_TYPE; + +typedef struct tagNET_VCA_DATABASE_PARAM +{ + DWORD dwSize; + DWORD dwDataBaseID; //ݿID豸ɣʱЧ޸ĺɾʱЧ + DWORD dwDataBaseType; //ݿͣVCA_DATABASE_TYPE + BYTE byDataBaseName[NAME_LEN]; //ݿ + BYTE byAttribute[64]; //ݿ + BYTE byRes[20]; +}NET_VCA_DATABASE_PARAM, *LPNET_VCA_DATABASE_PARAM; + +typedef struct tagNET_VCA_FIND_DATABASE_COND +{ + DWORD dwDataBaseType; //ݿͣVCA_DATABASE_TYPE + BYTE byRes[12]; // +}NET_VCA_FIND_DATABASE_COND, *LPNET_VCA_FIND_DATABASE_COND; + +typedef struct tagNET_VCA_DELETE_DATABASE_COND +{ + DWORD dwSize; + DWORD dwDataBaseType; //ݿͣVCA_DATABASE_TYPE + DWORD dwDataBaseID; //ݿID + BYTE byRes[64]; // +}NET_VCA_DELETE_DATABASE_COND, *LPNET_VCA_DELETE_DATABASE_COND; + +typedef struct tagNET_VCA_INQUIRE_SNAPDB_COND +{ + DWORD dwChannel;//ͨ + NET_DVR_TIME struStartTime;//ʼʱ + NET_DVR_TIME struStopTime;//ʱ + BYTE bySex; //Ա0-ã1-У2-Ů + BYTE byRes1[3]; // + BYTE byStartBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //ʼ£磺201106 + BYTE byEndBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //ֹ£201106 + BYTE byAttribute1[NAME_LEN]; //1 + BYTE byAttribute2[NAME_LEN]; //2 + BYTE byRes[12]; // +}NET_VCA_INQUIRE_SNAPDB_COND, *LPNET_VCA_INQUIRE_SNAPDB_COND; + +typedef struct tagNET_VCA_INQUIRE_SNAPRECORD_RESULT +{ + DWORD dwSize; //ṹС + DWORD dwDataBaseID; //ݿID + DWORD dwRecordID; //¼ID + NET_DVR_TIME struSnapTime; //ץʱ + BYTE bySex; //Ա0-ã1-У2-Ů + BYTE byRes1[3]; // + BYTE byStartBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //ʼ£磺201106 + BYTE byEndBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //ֹ£201106 + BYTE byAttribute1[NAME_LEN]; //1 + BYTE byAttribute2[NAME_LEN]; //2 + DWORD dwFacePicID; //ͼID + DWORD dwFacePicLen; //ͼݳ + BYTE byRes[80]; // + BYTE *pFacePic; //ͼ +}NET_VCA_INQUIRE_SNAPRECORD_RESULT, *LPNET_VCA_INQUIRE_SNAPRECORD_RESULT; + +typedef union tagNET_VCA_DELETE_SNAPRECORD_COND_UNION +{ + NET_VCA_INQUIRE_SNAPDB_COND struAttribute; //ԱϢɾ + DWORD dwRecordID; //¼IDɾ +}NET_VCA_DELETE_SNAPRECORD_COND_UNION, *LPNET_VCA_DELETE_SNAPRECORD_COND_UNION; + +typedef enum _VCA_DELETE_RECORD_TYPE_ +{ + DELETE_RECORD_SINGLE = 0, //ɾ + DELETE_RECORD_BATCH //ɾ +}VCA_DELETE_RECORD_TYPE; + +typedef struct tagNET_VCA_DELETE_SNAPRECORD_COND +{ + VCA_DELETE_RECORD_TYPE dwDeleteType; //ɾ¼ + NET_VCA_DELETE_SNAPRECORD_COND_UNION uDeleteCond; //ɾ + BYTE byRes[40]; // +}NET_VCA_DELETE_SNAPRECORD_COND, *LPNET_VCA_DELETE_SNAPRECORD_COND; + +typedef enum _VCA_SEARCH_DATABASE_TYPE_ +{ + VCA_NORMAL_SEARCH_DATABASE = 0x00000000, //ͨ + VCA_ADVANCE_SEARCH_DATABASE = 0x00000001 //߼ +}VCA_SEARCH_DATABASE_TYPE; + +typedef struct tagNET_VCA_ADVANCE_SEARCH_DATABASE_COND +{ + DWORD dwDataBaseType; //ݿͣVCA_DATABASE_TYPE + DWORD dwDataBaseID; //ݿID + DWORD dwFacePicID; //ͼƬID + BYTE byRes[36]; +}NET_VCA_ADVANCE_SEARCH_DATABASE_COND, *LPNET_VCA_ADVANCE_SEARCH_DATABASE_COND; + +typedef union tagNET_VCA_SEARCH_DATABASE_COND_UNION +{ + DWORD uLen[25]; + NET_VCA_REGISTER_PIC struNormalFind; //ͨ + NET_VCA_ADVANCE_SEARCH_DATABASE_COND struAdvanceFind; //߼ +}NET_VCA_SEARCH_DATABASE_COND_UNION, *LPNET_VCA_SEARCH_DATABASE_COND_UNION; + +typedef struct tagNET_VCA_SEARCH_DATABASE_PARAM +{ + DWORD dwSearchType; //ͣVCA_SEARCH_DATABASE_TYPE + NET_VCA_SEARCH_DATABASE_COND_UNION uSearchCond; // + BYTE byRes[16]; +}NET_VCA_SEARCH_DATABASE_PARAM, *LPNET_VCA_SEARCH_DATABASE_PARAM; + +typedef struct tagNET_VCA_SEARCH_SNAPDB_COND +{ + DWORD dwChannel; //ͨ + DWORD dwDataBaseID; //ݿID + NET_DVR_TIME struStartTime;//ʼʱ + NET_DVR_TIME struStopTime;//ʱ + BYTE bySex; //Ա0-ã1-У2-Ů + BYTE byRes1[3]; // + BYTE byStartBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //ʼ£磺201106 + BYTE byEndBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //ֹ£201106 + BYTE byAttribute1[NAME_LEN]; //1 + BYTE byAttribute2[NAME_LEN]; //2 + NET_VCA_SEARCH_DATABASE_PARAM struSearchParam; // + DWORD dwMaxSearchNum; // + WORD wThreshold; //ֵ0-100 + BYTE byRes[78]; // +}NET_VCA_SEARCH_SNAPDB_COND, *LPNET_VCA_SEARCH_SNAPDB_COND; + +typedef struct tagNET_VCA_SEARCH_SNAPRECORD_RESULT +{ + DWORD dwSize; //ṹС + DWORD dwDataBaseID; //ݿID + DWORD dwRecordID; //¼ID + NET_DVR_TIME struSnapTime;//ץʱ + BYTE bySex; //Ա0-ã1-У2-Ů + BYTE byRes1[3]; // + BYTE byStartBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //ʼ£磺201106 + BYTE byEndBirthDate[MAX_HUMAN_BIRTHDATE_LEN]; //ֹ£201106 + BYTE byAttribute1[NAME_LEN]; //1 + BYTE byAttribute2[NAME_LEN]; //2 + float fSimilarity; //ƶȣ[0.001,1] + DWORD dwFacePicID; //ͼID + DWORD dwFacePicLen; //ͼݳ + BYTE byRes[80]; // + BYTE *pFacePic; //ͼ +}NET_VCA_SEARCH_SNAPRECORD_RESULT, *LPNET_VCA_SEARCH_SNAPRECORD_RESULT; + +typedef struct tagNET_VCA_DATARECORD_INFO +{ + DWORD dwSize; //ṹС + DWORD dwRecordID; //¼IDʱЧ޸ʱЧ + NET_VCA_HUMAN_ATTRIBUTE struAttribute; //ԱϢ + NET_VCA_REGISTER_PIC struRegisterPic; //ԱͼƬϢ + BYTE byRemark1[NAME_LEN]; //עϢ1 + BYTE byRemark2[64]; //עϢ2 + BYTE byRes[32]; // +}NET_VCA_DATARECORD_INFO, *LPNET_VCA_DATARECORD_INFO; + +typedef struct tagNET_VCA_FAST_DATARECORD_INFO +{ + DWORD dwSize; //ṹС + NET_VCA_HUMAN_ATTRIBUTE struAttribute; //ԱϢ + BYTE byRemark1[NAME_LEN]; //עϢ1 + BYTE byRemark2[64]; //עϢ2 + DWORD dwImageLen; //ͼݳ + BYTE byRes[80]; // + BYTE *pImage; //ͼ +}NET_VCA_FAST_DATARECORD_INFO, *LPNET_VCA_FAST_DATARECORD_INFO; + +typedef struct tagNET_VCA_INQUIRE_DATARECORD_RESULT +{ + DWORD dwSize; //ṹС + DWORD dwDataBaseID; //ݿID + DWORD dwRecordID; //¼ID + NET_VCA_HUMAN_ATTRIBUTE struAttribute; //ԱϢ + BYTE byRemark1[NAME_LEN]; //עϢ1 + BYTE byRemark2[64]; //עϢ2 + DWORD dwFacePicID; //ͼID + DWORD dwFacePicLen; //ͼݳ + BYTE byRes[80]; // + BYTE *pFacePic; //ͼ +}NET_VCA_INQUIRE_DATARECORD_RESULT, *LPNET_VCA_INQUIRE_DATARECORD_RESULT; + +typedef struct tagNET_VCA_SEARCH_DATARECORD_RESULT +{ + DWORD dwSize; //ṹС + DWORD dwDataBaseID; //ݿID + DWORD dwRecordID; //¼ID + NET_VCA_HUMAN_ATTRIBUTE struAttribute; //ԱϢ + BYTE byRemark1[NAME_LEN]; //עϢ1 + BYTE byRemark2[64]; //עϢ2 + float fSimilarity; //ƶȣ[0.001,1] + DWORD dwFacePicID; //ͼID + DWORD dwFacePicLen; //ͼݳ + BYTE byRes[80]; // + BYTE *pFacePic; //ͼ +}NET_VCA_SEARCH_DATARECORD_RESULT, *LPNET_VCA_SEARCH_DATARECORD_RESULT; + +typedef struct tagNET_VCA_DATARECORD_COND +{ + DWORD dwDataBaseID; //ݿID + NET_VCA_HUMANATTRIBUTE_COND struAttribute; //ԱϢ + BYTE byRes[80]; // +}NET_VCA_DATARECORD_COND, *LPNET_VCA_DATARECORD_COND; + +typedef union tagNET_VCA_DELETE_RECORD_COND_UNION +{ + NET_VCA_HUMANATTRIBUTE_COND struAttribute; //ԱϢɾ + DWORD dwRecordID; //¼IDɾ +}NET_VCA_DELETE_RECORD_COND_UNION, *LPNET_VCA_DELETE_RECORD_COND_UNION; + +typedef struct tagNET_VCA_DELETE_RECORD_COND +{ + VCA_DELETE_RECORD_TYPE dwDeleteType; //ɾ¼ + NET_VCA_DELETE_RECORD_COND_UNION uDeleteCond; //ɾ + BYTE byRes[40]; // +}NET_VCA_DELETE_RECORD_COND, *LPNET_VCA_DELETE_RECORD_COND; + +typedef struct tagNET_VCA_SEARCH_FACEDB_COND +{ + DWORD dwDataBaseID; //ݿID + NET_VCA_HUMANATTRIBUTE_COND struAttribute; //ԱϢ + NET_VCA_SEARCH_DATABASE_PARAM struSearchParam; // + DWORD dwMaxSearchNum; // + WORD wThreshold; //ֵ0-100 + BYTE byRes[78]; // +}NET_VCA_SEARCH_FACEDB_COND, *LPNET_VCA_SEARCH_FACEDB_COND; + +typedef struct tagNET_VCA_FIND_MATCHPIC_COND +{ + DWORD dwSize; + DWORD dwDataBaseType; //ݿͣVCA_DATABASE_TYPE + DWORD dwDataBaseID; //ݿID + DWORD dwRecordID; //¼ID + BYTE byRes[64]; // +}NET_VCA_FIND_MATCHPIC_COND, *LPNET_VCA_FIND_MATCHPIC_COND; + +typedef struct tagNET_VCA_FIND_MATCHPIC_RESULT +{ + DWORD dwSize; + DWORD dwDataBaseType; //ݿͣVCA_DATABASE_TYPE + DWORD dwDataBaseID; //ݿID + DWORD dwRecordID; //¼ID + DWORD dwPicLen; //ͼƬ + BYTE byRes[64]; // + BYTE *pPicBuffer; //ͼƬָ +}NET_VCA_FIND_MATCHPIC_RESULT, *LPNET_VCA_FIND_MATCHPIC_RESULT; + +typedef struct tagNET_DVR_REMOTECONTROL_ALARM_PARAM +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + WORD wDealyTime; //ӳʱ䣬λs + BYTE byRes[30]; +}NET_DVR_REMOTECONTROL_ALARM_PARAM, *LPNET_DVR_REMOTECONTROL_ALARM_PARAM; + +typedef struct tagNET_DVR_REMOTECONTROL_STUDY_PARAM +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byRes[16]; +}NET_DVR_REMOTECONTROL_STUDY_PARAM, *LPNET_DVR_REMOTECONTROL_STUDY_PARAM; + +typedef struct tagNET_DVR_WIRELESS_ALARM_STUDY_PARAM +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byIndex; //߱ţ1-8 + BYTE byRes[15]; +}NET_DVR_WIRELESS_ALARM_STUDY_PARAM, *LPNET_DVR_WIRELESS_ALARM_STUDY_PARAM; + +#define MAX_AUX_ALARM_NUM 8 // +#define MAX_WIRELESS_ALARM_NUM 8 //߱ +typedef enum _IPC_AUX_ALARM_TYPE_ +{ + IPC_AUXALARM_UNKNOW = 0, //δ֪ + IPC_AUXALARM_PIR = 1, //PIR + IPC_AUXALARM_WIRELESS = 2, //߱ + IPC_AUXALARM_CALLHELP = 3 //ȱ +}IPC_AUX_ALARM_TYPE; + +typedef struct tagNET_DVR_AUDIO_LIMIT_ALARM_CFG +{ + DWORD dwSize; + BYTE byEnable;//ʹ + BYTE byRes1[3]; + DWORD dwDecibelLimit; //ֱ澯ֵ + NET_DVR_HANDLEEXCEPTION_V30 struHandleException; //쳣ʽ + BYTE byRes2[24]; +}NET_IPC_AUDIO_LIMIT_ALARM_CFG,*LPNET_IPC_AUDIO_LIMIT_ALARM_CFG; + +typedef struct tagNET_DVR_BUTTON_DOWN_ALARM_CFG +{ + DWORD dwSize; + BYTE byEnable;//ʹ + BYTE byRes1[3]; + NET_DVR_HANDLEEXCEPTION_V30 struHandleException; //쳣ʽ + BYTE byRes2[24]; +}NET_IPC_BUTTON_DOWN_ALARM_CFG,*LPNET_IPC_BUTTON_DOWN_ALARM_CFG; + +typedef struct tagNET_IPC_PIR_ALARMCFG +{ + BYTE byAlarmName[NAME_LEN]; /* */ + BYTE byAlarmHandle; /* Ƿ 0- 1-*/ + BYTE byRes1[3]; + NET_DVR_HANDLEEXCEPTION_V30 struAlarmHandleType; /* ʽ */ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ,Ϊ1ʾͨ + BYTE byRes[64]; +}NET_IPC_PIR_ALARMCFG, *LPNET_IPC_PIR_ALARMCFG; + +typedef struct tagNET_IPC_PIR_ALARMCFG_EX +{ + BYTE byAlarmName[NAME_LEN]; /* */ + BYTE byAlarmHandle; /* Ƿ 0- 1-*/ + BYTE byRes1[3]; + NET_DVR_HANDLEEXCEPTION_V30 struAlarmHandleType; /* ʽ */ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ,Ϊ1ʾͨ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; + BYTE byRes[1464]; +}NET_IPC_PIR_ALARMCFG_EX, *LPNET_IPC_PIR_ALARMCFG_EX; + +//ȱ +typedef struct tagNET_IPC_CALLHELP_ALARMCFG +{ + BYTE byAlarmHandle; /* Ƿ 0- 1-*/ + BYTE byRes1[3]; + NET_DVR_HANDLEEXCEPTION_V30 struAlarmHandleType; /* ʽ */ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ,Ϊ1ʾͨ + BYTE byRes[64]; +}NET_IPC_CALLHELP_ALARMCFG, *LPNET_IPC_CALLHELP_ALARMCFG; + +typedef struct tagNET_IPC_SINGLE_WIRELESS_ALARMCFG +{ + BYTE byAlarmName[NAME_LEN]; /* */ + BYTE byAlarmHandle; /* Ƿ 0- 1-*/ + BYTE byID; //߱ID1-8 + BYTE byRes1[2]; + NET_DVR_HANDLEEXCEPTION_V30 struAlarmHandleType; /* ʽ */ + BYTE byRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ,Ϊ1ʾͨ + BYTE byRes[32]; +}NET_IPC_SINGLE_WIRELESS_ALARMCFG, *LPNET_IPC_SINGLE_WIRELESS_ALARMCFG; + +typedef struct tagNET_IPC_WIRELESS_ALARMCFG +{ + NET_IPC_SINGLE_WIRELESS_ALARMCFG struWirelessAlarm[MAX_WIRELESS_ALARM_NUM]; //߱ + BYTE byRes[32]; +}NET_IPC_WIRELESS_ALARMCFG, *LPNET_IPC_WIRELESS_ALARMCFG; + +typedef union tagNET_IPC_AUX_ALARMCFG_UNION +{ + DWORD uLen[472]; + NET_IPC_PIR_ALARMCFG_EX struPIRAlarm; //PIR + NET_IPC_WIRELESS_ALARMCFG struWirelessAlarm; //߱ + NET_IPC_CALLHELP_ALARMCFG struCallHelpAlarm; //ȱ +}NET_IPC_AUX_ALARMCFG_UNION, *LPNET_IPC_AUX_ALARMCFG_UNION; + +typedef struct tagNET_IPC_SINGLE_AUX_ALARMCFG +{ + BYTE byAlarmType; //ͣIPC_AUX_ALARM_TYPE + BYTE byRes1[3]; + NET_IPC_AUX_ALARMCFG_UNION uAlarm; // + BYTE byRes[16]; +}NET_IPC_SINGLE_AUX_ALARMCFG, *LPNET_IPC_SINGLE_AUX_ALARMCFG; + +typedef struct tagNET_IPC_AUX_ALARMCFG +{ + DWORD dwSize; + NET_IPC_SINGLE_AUX_ALARMCFG struAlarm[MAX_AUX_ALARM_NUM]; // + BYTE byRes[64]; +}NET_IPC_AUX_ALARMCFG, *LPNET_IPC_AUX_ALARMCFG; + +typedef union tagNET_IPC_AUXALARM_UPLOAD_UNION +{ + DWORD uLen[66]; + NET_IPC_PIR_ALARMCFG struPIRAlarm; //PIR + NET_IPC_SINGLE_WIRELESS_ALARMCFG struWirelessAlarm; //߱ + NET_IPC_CALLHELP_ALARMCFG struCallHelpAlarm; //ȱ +}NET_IPC_AUXALARM_UPLOAD_UNION, *LPNET_IPC_AUXALARM_UPLOAD_UNION; + +typedef struct tagNET_IPC_AUXALARM_RESULT +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byAlarmType; //ͣIPC_AUX_ALARM_TYPE + BYTE byRes1[3]; + NET_IPC_AUXALARM_UPLOAD_UNION struAuxAlarm; // + BYTE byDeviceID[NAME_LEN];/*豸ID*/ + BYTE byRes[32]; +}NET_IPC_AUXALARM_RESULT, *LPNET_IPC_AUXALARM_RESULT; + +typedef struct tagNET_DVR_PREVIEW_DISPLAYCFG +{ + DWORD dwSize; // ṹС + BYTE byCorrectMode; //Уģʽ0-У1-оƬУ + BYTE byMountType; //װͣ0-1-棬2-ǽ + /* + 0-ģʽ1+ȫ+3PTZ (ԭзʵʱģʽһ) + 1-ģʽ2+4PTZ(ԭʵʱģʽһ) + 2-ģʽ3()+()+3PTZ + 3-ģʽ4ȫչ(+) + 4-ģʽ54PTZ + 5-ģʽ6ۣ + 6-ģʽ7: γȫչģʽ + 7-ģʽ8: 4PTZںģʽ + */ + BYTE byRealTimeOutput; //ʵʱ0 -ã1- + BYTE byRes[61]; +}NET_DVR_PREVIEW_DISPLAYCFG, *LPNET_DVR_PREVIEW_DISPLAYCFG; + +typedef struct tagNET_DVR_REMOTECONTROL_PTZ_PARAM +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + DWORD dwPTZCommand; //PTZ + NET_VCA_POINT struVcaPoint; //Ԥ + DWORD dwSpeed; //ƵٶȣȡֵΧ[0,7] + DWORD dwStop; //ֹͣʼ0-ʼ1-ֹͣ + BYTE byRes[32]; +}NET_DVR_REMOTECONTROL_PTZ_PARAM, *LPNET_DVR_REMOTECONTROL_PTZ_PARAM; + +typedef struct tagNET_DVR_PRESET_POINT_PARAM +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + DWORD dwPTZPresetCmd; //Ԥõ + NET_VCA_POINT struVcaPoint; //Ԥ + DWORD dwPresetIndex; //Ԥõţ1ʼ֧255Ԥõ + WORD wZoomCoordinate;///<Ԥõ㴰Zoomֵ + BYTE byRes[30]; +}NET_DVR_PRESET_POINT_PARAM, *LPNET_DVR_PRESET_POINT_PARAM; + +typedef struct tagNET_DVR_PTZ_CRUISE_PARAM +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + DWORD dwPTZCruiseCmd; //Ѳ + NET_VCA_POINT struVcaPoint; //Ԥ + WORD wCruiseRoute; //Ѳ·֧32·Ŵ1ʼ + WORD wCruisePoint; //Ѳ㣬֧32㣨Ŵ1ʼ + WORD wInput; //ͬѲʱֵͬԤõ(255)ʱ(255)ٶ(40) + WORD wZoomCoordinate;///<Ԥõ㴰Zoomֵ + BYTE byRes[32]; +}NET_DVR_PTZ_CRUISE_PARAM, *LPNET_DVR_PTZ_CRUISE_PARAM; + +typedef struct tagNET_DVR_WPS_PARAM +{ + DWORD dwSize; + BYTE byEnableWps; //WPS0-1- + BYTE byRes[31]; +}NET_DVR_WPS_PARAM, *LPNET_DVR_WPS_PARAM; + +typedef struct tagNET_DVR_PIN_PARAM +{ + DWORD dwSize; + BYTE byPIN[8]; //PIN + BYTE byRes[32]; +}NET_DVR_PIN_PARAM, *LPNET_DVR_PIN_PARAM; + +typedef struct tagNET_DVR_WPS_CONNECT_PARAM_ +{ + DWORD dwSize; + BYTE byConnectType; //WPSӷʽ0-PBC,1-AP PIN + BYTE byRes1[3]; + BYTE byPIN[8]; //PIN(WPSӷʽΪAP PINʱЧ) + BYTE byEssid[IW_ESSID_MAX_SIZE]; //essid(WPSӷʽΪAP PINʱЧ) + BYTE byRes[32]; +}NET_DVR_WPS_CONNECT_PARAM, *LPNET_DVR_WPS_CONNECT_PARAM; + +typedef struct tagNET_DVR_DECODER_JOINT_PARAM +{ + DWORD dwSize; // ṹС + BYTE byJointed; // 0 ûй 1 Ѿ + BYTE byRes1[3]; // ֽ + NET_DVR_IPADDR struIP; // IPַ + WORD wPort; // Ķ˿ں + WORD wChannel; // Ľͨ + BYTE sDeviceName[NAME_LEN]; //豸 + BYTE sChanName[NAME_LEN]; //Ľͨ + BYTE byRes2[32]; // ֽ +}NET_DVR_DECODER_JOINT_PARAM, *LPNET_DVR_DECODER_JOINT_PARAM; + +typedef struct tagNET_DVR_PIC_VIEW_PARAM +{ + DWORD dwSize; + NET_DVR_IPADDR struCuIp; //CUIPַ + WORD wPort;/*CU˿*/ + BYTE bySourceIndex; //źԴͨ + BYTE byRes[29]; +}NET_DVR_PIC_VIEW_PARAM, *LPNET_DVR_PIC_VIEW_PARAM; + +#define DVCS_DEVICEID_LEN 16 +//2012-03-13ͼƬעϢص +typedef struct tagNET_DVR_PICVIEW_CALLBACKPARAM +{ + DWORD dwUserID; + BYTE sDeviceID[DVCS_DEVICEID_LEN]; + LONG nPicViewHandle; //Ծ + WORD wSignalIndex; //źԴ + WORD wHeadLen; //ļͷ ˽еļͷ40 + BYTE byHeadBuf[100]; //ļͷ + BYTE byRes2[32]; +}NET_DVR_PICVIEW_CALLBACKPARAM, *LPNET_DVR_PICVIEW_CALLBACKPARAM; + +#define DEVICEID_LEN 32 + +typedef struct tagNET_DVR_DEVICEID_INFO +{ + DWORD dwSize; + DWORD dwDeviceIndex; //豸 + BYTE byWallNo; //ǽţ1ʼ + BYTE byRes1[27]; + DWORD dwChan; //ͨ + DWORD dwInputSignalIndex; //źԴʽʹ + BYTE byRes2[60]; +}NET_DVR_DEVICEID_INFO, *LPNET_DVR_DEVICEID_INFO; + + +typedef struct tagNET_DVR_SINGLE_NETPARAM +{ + DWORD dwSize; + BYTE byUseDhcp; //ǷDHCP 0xff-Ч 0- 1- + BYTE byRes1[3]; + NET_DVR_IPADDR struDevIP; // 豸IPַ + NET_DVR_IPADDR struSubnetMask; // 豸 + NET_DVR_IPADDR struGateway; // 豸 + WORD wDevPort; // 豸˿ں + BYTE byMACAddr[MACADDR_LEN]; // MAC ַ(ֻܻȡ) + BYTE byRes2[16]; +} NET_DVR_SINGLE_NETPARAM, *LPNET_DVR_SINGLE_NETPARAM; + +typedef struct tagNET_DVR_CHAN_INFO +{ + DWORD dwSize; + BYTE byValid; //0-Ч 1-Ч + BYTE byRes1[3]; + BYTE sChanName[NAME_LEN]; //ͨ + NET_DVR_COLOR struVideoColor; //źԴɫ + WORD wResolutionX; //ǰֱ--- + WORD wResolutionY; //ǰֱ--- + BYTE byRes2[40]; +} NET_DVR_CHAN_INFO, *LPNET_DVR_CHAN_INFO; + +//豸Ϣ +typedef struct tagNET_DVR_CODEDEV_INFO +{ + NET_DVR_CHAN_INFO struChanInfo[MAX_CHANNUM/*16*/];/*豸ͨϢ*/ +} NET_DVR_CODEDEV_INFO, *LPNET_DVR_CODEDEV_INFO; + +//豸Ϣ +typedef struct tagNET_DVR_DECODEDEV_INFO +{ + BYTE byRes[1408]; +} NET_DVR_DECODEDEV_INFO, *LPNET_DVR_DECODEDEV_INFO; + +//źԴϢ +typedef struct tagNET_DVR_NETSIGNAL_INFO +{ + DWORD dwSize; + BYTE byDevName[NAME_LEN/*32*/];//źԴ + NET_DVR_PU_STREAM_CFG struPuStream; + BYTE byValid; //ǷЧ0-ЧɾʱΪ0 1-ЧӺ޸ʱΪ1/ + BYTE byRes1[3]; // + BYTE sGroupName[NAME_LEN/*32*/];//źԴźԴ + WORD wResolutionX; //ǰֱ--- + WORD wResolutionY; //ǰֱ--- + BYTE byRes2[24]; +}NET_DVR_NETSIGNAL_INFO, *LPNET_DVR_NETSIGNAL_INFO; + +typedef struct tagNET_DVR_NETSIGNALDEV_INFO +{ + NET_DVR_NETSIGNAL_INFO struDevInfo; + BYTE byRes1[816]; +}NET_DVR_NETSIGNALDEV_INFO, *LPNET_DVR_NETSIGNALDEV_INFO; + +typedef union tagNET_DVR_DIFFDEV_INFO +{ + NET_DVR_CODEDEV_INFO struCodeDevInfo; //豸Ϣ + NET_DVR_DECODEDEV_INFO struDecodeDevInfo; //豸Ϣ + NET_DVR_NETSIGNALDEV_INFO struNetSignalInfo; //źԴϢ +} NET_DVR_DIFFDEV_INFO, *LPNET_DVR_DIFFDEV_INFO; + +/*ע豸Ϣ*/ +typedef enum tagNET_DVCS_DEVICE_TYPE +{ + NET_DVR_BNC_PROC = 1, /* BNC */ + NET_DVR_RGB_PROC, /* RGB */ + NET_DVR_STP_PROC, /* ת봦 */ + NET_DVR_DISP_PROC, /* ʾ */ + NET_DVR_NETSIGNAL, //źԴ + NET_DVR_SDI_PROC, //SDI + NET_DVR_BIW_PROC, //8·BNC + NET_DVR_DON_PROC, //ʾ + NET_DVR_TVI_PROC, //TVI + NET_DVR_DI2_PROC, //2·DVI봦 + NET_DVR_DO2_PROC, //2·DVI豸 + NET_DVR_UHDI_PROC, //DP/HDMI 1·4K豸 + NET_DVR_YI2_PROC, //·YPbPr + NET_DVR_HI2_PROC, // HDMIڵ(2·) + NET_DVR_VI2_PROC, // VGAڵ(2·) + NET_DVR_SI2_PROC, // SDIڵ(2·) + NET_DVR_HO2_PROC, // HDMIڵ(2·) + NET_DVR_S24G_PROC, // C20Nרǧ׽(24·) + NET_DVR_S24X_PROC // C20Nר׽(24·) +}NET_DVCS_DEVICE_TYPE; + +typedef struct tagNET_DVR_SINGLE_DEV_INFO +{ + DWORD dwSize; + DWORD dwSoftVersion; /*豸汾(ֻܻȡ) 8λΪ汾ţθ8λΪΰ汾ţ16λΪ޸汾*/ + DWORD dwSoftwareBuildDate; //汾Build, 0xYYYYMMDD + BYTE byUseInSys; /*Ƿϵͳʹ*/ + BYTE byDevStatus; /*豸ǰ״̬0-ߣ1-(ֻܻȡ)*/ + BYTE byDeviceType; /*豸(ֻܻȡ) DEVICE_TYPE*/ + BYTE byRes1[17]; + BYTE sDevName[NAME_LEN]; /*豸*/ + NET_DVR_SINGLE_NETPARAM struEtherNet[MAX_ETHERNET]; /*豸*/ + BYTE sSerialNumber[SERIALNO_LEN]; /*豸к*/ + NET_DVR_DIFFDEV_INFO struSubDevInfo; /*豸Ϣ*/ + DWORD dwDeviceIndex; //豸ţC20NY10豸ȫֱ + DWORD dwSubBoardNo; //ֲʽ豸ӰţC20NY10豸ȫֱţ1ʼΪ0ʱֶЧӰĬΪ1 + BYTE bySubSysNo; //ֲʽ豸ӰϵϵͳţӰȫ֣1ʼΪ0ʱֶЧϵͳĬΪ1 + BYTE byRes3[3]; + WORD wStartAudioTalkChanNo; //ֲʽ豸Խʼͨ + WORD wAudioTalkChanNum; //ֲʽ豸Խͨŵ + BYTE byRes2[36]; +} NET_DVR_SINGLE_DEV_INFO, *LPNET_DVR_SINGLE_DEV_INFO; + +typedef struct tagNET_DVR_DEVLIST +{ + DWORD dwSize; + DWORD dwDevNums;//豸صķֲʽ豸 + BYTE *pBuffer; + BYTE byRes1[3]; + DWORD dwBufLen;//ָ볤ȣ + BYTE byRes2[64]; +} NET_DVR_DEVLIST,*LPNET_DVR_DEVLIST; + +typedef struct tagNET_DVR_DEV_BASE_INFO +{ + DWORD dwSize; + BYTE byEnable; /*Ƿϵͳʹ*/ + BYTE byDeviceType; /*豸(ֻܻȡ)*/ + BYTE byRes1[2]; + BYTE sDevName[NAME_LEN]; /*豸*/ + BYTE byRes2[24]; +} NET_DVR_DEV_BASE_INFO,*LPNET_DVR_DEV_BASE_INFO; + +/*Ϣ*/ +typedef struct tagNET_DVR_NETPARAM +{ + DWORD dwSize; + NET_DVR_SINGLE_NETPARAM struEtherNet[MAX_ETHERNET];//̫ + BYTE byRes[64]; +} NET_DVR_NETPARAM, *LPNET_DVR_NETPARAM; + +// Ļ豸ϵ(16ֽ) +typedef struct tagNET_DVR_DISP_SCREEN +{ + DWORD dwSize; + WORD wScreenID; // ĻID, IDŴ1ʼ + BYTE byWallNo; // ǽ + BYTE byRes1; // 1 + DWORD dwDeviceIndex; // 豸 + BYTE byRes2[16]; // 2 +}NET_DVR_DISP_SCREEN, *LPNET_DVR_DISP_SCREEN; + +// Ļ +typedef struct tagNET_DVR_TEXTSHOW +{ + DWORD dwSize; + BYTE byShowText;//Ƿʾ֣1-ʾ֣0-ʾ + BYTE byRes[35]; +}NET_DVR_TEXTSHOW, *LPNET_DVR_TEXTSHOW; + +typedef struct tagNET_DVR_SCREENLIST +{ + DWORD dwSize; + BYTE byWallNo; //ǽţ1ʼ + BYTE byRes[11]; + DWORD dwScreenNums;//豸صӳʾ + BYTE *pBuffer; + DWORD dwBufLen;//ָ볤ȣ +} NET_DVR_SCREENLIST,*LPNET_DVR_SCREENLIST; + +typedef struct tagNET_DVR_OPERATE_DEVICE +{ + DWORD dwSize; + DWORD dwSubCommand; //豸1-豸ʼ2-ֹͣ + DWORD dwDeviceIndex;//豸 + BYTE byRes[44]; +}NET_DVR_OPERATE_DEVICE, *LPNET_DVR_OPERATE_DEVICE; + +//豸 +typedef struct tagNET_DVR_UPGRADE_STATE +{ + DWORD dwProgress; // 0-100 + BYTE byState; //ȣ1- 2- 3-ʧ + BYTE byRes2[31]; +}NET_DVR_UPGRADE_STATE, *LPNET_DVR_UPGRADE_STATE; +typedef void (CALLBACK *DVCS_UPGRADESTATE_CB)(LONG nUpgradeHandle, BYTE *pBuffer, DWORD dwBufSize, void* pUser); + +typedef enum +{ + NET_DVR_DATA_BMP = 0, + NET_DVR_START_CALLBACK, + NET_DVR_STREAM_SYSHEAD, + NET_DVR_STREAM_DATA +}PIC_PREVIEW_DATATYPE; + +typedef struct tagNET_DVR_START_PIC_VIEW_INFO +{ + DWORD dwSize; + DWORD dwSignalIndex; //źԴţòڴ豸ֵΪ0 + DWORD dwDeviceIndex;//豸 + BYTE byRes1[12]; + BYTE byChanIndex; //ͨ + BYTE byRes2[3]; + //Ƶۺƽ̨Բ + DWORD dwScreenNum; //ţ㿪ʼ + DWORD dwLayer; //ͼţ㿪ʼ + DWORD dwResolution;//Էֱ,1-QCIF,2-CIF,3-D1 + BYTE byFrame;//֡ʣλ֡/ + BYTE bySupportStreamView; //ͻǷ֧ԣ0-֧֣1-֧ + BYTE byRes3[14]; +}NET_DVR_START_PIC_VIEW_INFO, *LPNET_DVR_START_PIC_VIEW_INFO; + +typedef struct tagNET_DVR_DVCS_STATE_ALARM +{ + DWORD dwSize; + BYTE byAlarmType; // ,1-豸ߣ2-豸 3- 4- 5-Ա½ 6-Ԥʼ,7-Ԥ8-ֱʱ仯9-ͼиʧܣ10-豸Դ㣬11-¶쳣 12-ڴСźԴֱʲ*/ + BYTE byDeviceType; // 豸 NET_DVCS_DEVICE_TYPE */ + BYTE byWallNo; // ǽţ1ʼ 0ʾЧ + BYTE byDeviceChanIndex; // 豸ͨţ0ʾЧֵʾͨ + DWORD dwDeviceIndex; // 豸ţ 0ʾЧ + WORD wResolutionX; // ֱ- 0ʾЧ + WORD wResolutionY; // ֱ- 0ʾЧ + WORD wTemperature; // 豸¶ λ϶, 0ʾЧ + BYTE byRes[86]; +}NET_DVR_DVCS_STATE_ALARM, *LPNET_DVR_DVCS_STATE_ALARM; + +typedef struct tagNET_DVR_PIC_ADJUST +{ + DWORD dwSize; + BYTE bySubCommand; //궨DECODEPIC_LEFTADJUST + BYTE byScale; //ֵ + BYTE byPictureProportion; //ͼű 0-Ч 1-4:3, 2-16:9 + BYTE byRes[29]; +}NET_DVR_PIC_ADJUST, *LPNET_DVR_PIC_ADJUST; + +typedef struct tagNET_DVR_PICTURE_PARAM +{ + DWORD dwSize; + BYTE byControlCommand; //л1-ʾ2-أ3-ȫɾGIFͼƬ + BYTE byUseType; //ͼƬͣ1-OSD 2-ͼ3-GIF + BYTE byWallNo; //ǽǽţ1ʼ + BYTE byPictureNo; //ͼƬ + BYTE byRes[64]; +}NET_DVR_PICTURE_PARAM, *LPNET_DVR_PICTURE_PARAM; + +// 76SP豸POEͨӷʽ +typedef struct tagNET_DVR_POE_CHANNEL_ADD_MODE +{ + DWORD dwSize; //ṹС + BYTE byAddMode; //ӷʽ 0: 弴 1: ֶ + BYTE byRes1[127]; // +}NET_DVR_POE_CHANNEL_ADD_MODE, *LPNET_DVR_POE_CHANNEL_ADD_MODE; + +#define MAX_ESATA_NUM 16 +#define MAX_MINISAS_NUM 96 + +typedef struct tagNET_DVR_ESATA_MINISAS_USAGE +{ + DWORD dwSize; + BYTE byESATAUsage[MAX_ESATA_NUM]; // ʾڼeSATA0Ĭϱ 1Ĭ¼ + BYTE byMiniSASUsage[MAX_MINISAS_NUM]; // ʾڼminiSAS0Ĭϱ 1Ĭ¼ + BYTE byRes[32]; +}NET_DVR_ESATA_MINISAS_USAGE, *LPNET_DVR_ESATA_MINISAS_USAGE; + +#define MAX_DISK_NUM 128 + +typedef struct tagNET_DVR_BACKUP_LOG_PARAM +{ + DWORD dwSize; + BYTE byDiskDesc[DESC_LEN_32]; //ݴ + BYTE byHardDisk[MAX_DISK_NUM]; //豸ݵӲ̺ţݼȡǰ + BYTE byBackupHardDiskNum; //豸ݵӲ̸ + BYTE byContinue; //Ƿݣ0-1- + BYTE byAllLogBackUp ; /*Ƿȫݣ0-̺űݣ1-־Ϊ1ʱ豸ݵĴ̺źӲ̸Ч*/ + BYTE byRes[29]; +}NET_DVR_BACKUP_LOG_PARAM, *LPNET_DVR_BACKUP_LOG_PARAM; + +typedef struct tagNET_DVR_DIGITAL_CHANNEL_STATE +{ + DWORD dwSize; + BYTE byDigitalAudioChanTalkState[MAX_CHANNUM_V30]; //ʾͨĶԽ״̬ 0-δʹã1-ʹ, 0xffЧ + BYTE byDigitalChanState[MAX_CHANNUM_V30]; /*ͨ״̬ byDigitalChanErrState[0] + ʾһֵͨʾ״̬룬NET_SDK_DIGITAL_CHANNEL_STATUSԴƣ0ʾЧ*/ + BYTE byDigitalAudioChanTalkStateEx[MAX_CHANNUM_V30*3]; //ʾͨĶԽ״̬ӵMAX_CHANNUM_V30+1 MAX_CHANNUM_V30*4 0-δʹã1-ʹ, 0xffЧ + BYTE byDigitalChanStateEx[MAX_CHANNUM_V30*3]; /*ͨ״̬ byDigitalChanErrStateEx[0]ʾڴӵMAX_CHANNUM_V30+1ֵͨʾ״̬룬NET_SDK_DIGITAL_CHANNEL_STATUSԴƣ0ʾЧ*/ + BYTE byAnalogChanState[MAX_ANALOG_CHANNUM];//ʾģͨǷ,0-,1- + BYTE byRes[32]; +}NET_DVR_DIGITAL_CHANNEL_STATE, *LPNET_DVR_DIGITAL_CHANNEL_STATE; + +//ͨ״̬ +typedef enum +{ + NET_SDK_DC_STATUS_CONNECTED = 1, // + NET_SDK_DC_STATUS_CONNECTING, // + NET_SDK_DC_STATUS_BAND_WIDTH_EXCEED, //ϵͳ + NET_SDK_DC_STATUS_DOMAIN_ERROR, // + NET_SDK_DC_STATUS_CHANNEL_ERROR, //ͨŴ + NET_SDK_DC_STATUS_ACCOUNT_ERROR, //û + NET_SDK_DC_STATUS_STREAM_TYPE_NOT_SUPPORT, //Ͳ֧ + NET_SDK_DC_STATUS_CONFLICT_WITH_DVR, //豸IPַͻ + NET_SDK_DC_STATUS_CONFLICT_WITH_IPC, //IPC IPַͻ + NET_SDK_DC_STATUS_NETWORK_UNREACHBALE, //粻ɴ + NET_SDK_DC_STATUS_IPC_NOT_EXIST, //IPͨδ + NET_SDK_DC_STATUS_IPC_EXCEPTION, //IPͨ쳣 + NET_SDK_DC_STATUS_OTHER_ERROR, // + NET_SDK_DC_STATUS_RESOLUTION_NOT_SUPPORT, //IPCֱʲ֧ + NET_SDK_DC_STATUS_IPC_LAN_ERR = 15, //IPCNVRԲƥ + NET_SDK_DC_STATUS_USER_LOCKED = 16, //û + NET_SDK_DC_STATUS_NOT_ACTIVATED = 17, //豸δ + NET_SDK_DC_STATUS_USER_NOT_EXIST = 18, //û + NET_SDK_DC_STATUS_IPC_UNREGISTERED = 19, //IPͨӦ豸δע(GB28181Э) + NET_SDK_DC_STATUS_POE_PORT_DETECTING = 20, //POEͨ + NET_SDK_DC_STATUS_RESOURCE_EXCEED = 21, /* IPCֱʣʳ*/ + NET_SDK_DC_STATUS_NEED_TO_REPAIR = 22, /* Ҫ*/ + NET_SDK_DC_STATUS_ACTIVATING = 23, /* IPCڼ */ + NET_SDK_DC_STATUS_TOKEN_AUTHENTCATE_FAILED = 24 /* token֤ʧ */ +}NET_SDK_DIGITAL_CHANNEL_STATUS; + +/*************************************ITS****************************/ +#define VERSION_LEN 32 //汾 +#define MAX_OVERLAP_ITEM_NUM 50 //ַ +#define ITS_MAX_DEVICE_NUM 32 //豸 + +//ն˻Ϣ +typedef struct tagNET_ITS_BASEINFO +{ + DWORD dwSize; + BYTE byMainVer[VERSION_LEN]; // 㷨̰汾 + BYTE byMprVer[VERSION_LEN]; // ֡ʶ汾 + BYTE byBvtVer[VERSION_LEN]; // Ƶ汾 + BYTE byLptVer[VERSION_LEN]; // Ƶٿ汾 + BYTE byTvdVer[VERSION_LEN]; // Υ¼汾 + BYTE byTldVer[VERSION_LEN]; // źŵƼ汾 + BYTE byRes[252]; // Ԥֶ +}NET_ITS_BASEINFO,*LPNET_ITS_BASEINFO; + +//ͼƬϳɲ +typedef struct tagNET_ITS_IMGMERGE_CFG +{ + DWORD dwSize; + BYTE byIsMerge; //ǷҪϳɣ0ϳɣ1ϳɣ + BYTE byCloseupProportion;//дͼ 1-ԭʼֱʴС2-ΪԭʼֱԴ(18) + BYTE byRes1[2]; + DWORD dwOneMergeType; //ץĵͼϳɷʽܻȡдͼ + /************************************************************************/ + /* 201 ͼƬкϳ,ϳɺͼƬΪͼ1,Ϊ2 */ + /* 202 ͼƬкϳ,ϳɺͼƬΪͼ2,Ϊ1 */ + /* 203 ºϳɣдϱ. */ + /* 204 ºϳɣд±. */ + /* 205 Һϳɣдұߡ */ + /* 206 Һϳɣд */ + /* 207 Ʒֺϳɣдͼϱ */ + /* 208 Ʒֺϳɣдͼ± */ + /* 209 Σ1Ϊд */ + /* 210 Σұ1Ϊд */ + /* 301 ͼƬкϳ,ϳɺͼƬΪͼ1,Ϊ3 */ + /* 302 ͼƬкϳ,ϳɺͼƬΪͼ3,Ϊ1 */ + /* 303 ͼƬȡһд,ͼƬ;ͼƬ""ͺϳ, + д;ϳɺͼƬΪͼ2,Ϊ2 */ + /* 304 ͼƬȡһд,ͼƬ;ͼƬ""ͺϳ, + д;ϳɺͼƬΪͼ1,Ϊ1 */ + /* 305 ͼƬȡһд,ͼƬ;ͼƬ""ͺϳ, + д;ϳɺͼƬΪͼ2,Ϊ2 */ + /* 306 ͼƬȡһд,ͼƬ;ͼƬ""ͺϳ, + д;ѹͼƬֱ,ϳɺͼƬΪͼ1,Ϊ1 */ + /* 307 ͼƬ"Ʒ"кϳ */ + /* 308 ͼƬ"Ʒ"кϳ */ + /* 309 ͼƬȡһд,ͼƬ;ͼƬ""ͺϳ, + д;ϳɺͼƬΪͼ2,Ϊ2 */ + /* 310 ͼƬȡһд,ͼƬ;ͼƬ""ͺϳ, + д;ϳɺͼƬΪͼ1,Ϊ1 */ + /* 311 ͼƬȡһд,ͼƬ;ͼƬ""ͺϳ, + д;ϳɺͼƬΪͼ2,Ϊ2 */ + /* 312 ͼƬȡһд,ͼƬ;ͼƬ""ͺϳ, + д;ѹͼƬֱ,ϳɺͼƬΪͼ1,Ϊ1 */ + + /* 313 ͼƬȡһдͼƬ + ͼƬ"һ"ͺϳɣ + ˳Ϊдͼͼͼͼ */ + /* 314 ͼƬȡһдͼƬ + ͼƬ"һ"ͺϳɣ + ˳Ϊͼдͼͼͼ */ + /* 315 ͼƬȡһдͼƬ + ͼƬ"һ"ͺϳɣ + ˳Ϊͼͼдͼͼ */ + /* 316 ͼƬȡһдͼƬ + ͼƬ"һ"ͺϳɣ + ˳Ϊͼͼͼдͼ */ + /* 317 ͼƬȡһдͼƬ + ͼƬ"1"ͺϳɣ + ˳Ϊдͼͼͼͼ */ + /* 318 ͼƬȡһдͼƬ + ͼƬ"1"ͺϳɣ + ˳Ϊͼдͼͼͼ */ + /* 319 ͼƬȡһдͼƬ + ͼƬ"1"ͺϳɣ + ˳Ϊͼͼдͼͼ */ + /* 320 ͼƬȡһдͼƬ + ͼƬ"1"ͺϳɣ + ˳Ϊͼͼͼдͼ */ + /************************************************************************/ + DWORD dwTwoMergeType; //ץͼϳɷʽ + DWORD dwThreeMergeType; //ץͼϳɷʽ + DWORD dwJpegQuality; //ѹ0~100 + DWORD dwCloseupIndex; //дͼץĵڼ + DWORD dwMerageMaxSize; //ϳͼƬС,300-10240(λKB) + WORD wCloseupDeviation; // дͼƫ(50~ͼƬ߶)λ: + BYTE byRes[30]; +}NET_ITS_IMGMERGE_CFG,*LPNET_ITS_IMGMERGE_CFG; + +//ͨ +typedef struct tagNET_ITS_TRAFFIC_DATA_HOST +{ + NET_DVR_IPADDR struHostAddr; // ԶIP + WORD wHostPort; // ԶPort + BYTE byRes1[2]; + DWORD dwDataType; // ϴԶͣ£λʾ + BYTE bySuspendUpload; // Ƿͣϴ0-ϴ1-ͣϴ + BYTE byUploadStrategy; // ϴԣ0-ϴ1-ͨʱϴ + WORD wUploadInterval; // ϴʱ䣨ms1~2000òֻʷЧ + DWORD dwUploadTimeOut; //ϴʱʱ + BYTE byRes[24]; +}NET_ITS_TRAFFIC_DATA_HOST,*LPNET_ITS_TRAFFIC_DATA_HOST; + +//ϴ +typedef struct tagNET_ITS_UPLOAD_CFG +{ + DWORD dwSize; + NET_ITS_TRAFFIC_DATA_HOST struRemoteDataHost1; //սͨ1 + NET_ITS_TRAFFIC_DATA_HOST struRemoteDataHost2; //սͨ2 +}NET_ITS_UPLOAD_CFG,*LPNET_ITS_UPLOAD_CFG; + +typedef struct tagNET_DVR_SYSTEM_TIME +{ + WORD wYear; // + WORD wMonth; // + WORD wDay; // + WORD wHour; //ʱ + WORD wMinute; // + WORD wSecond; // + WORD wMilliSec; // + BYTE byRes[2]; +}NET_DVR_SYSTEM_TIME, *LPNET_DVR_SYSTEM_TIME; + +//ͨ״̬Ϣ +typedef struct tagNET_ITS_TRAFFIC_DATA_INFO +{ + DWORD dwDataQuantity; // + DWORD dwDataRsendQuantity; //δҪϴͨģ + NET_DVR_SYSTEM_TIME struStartTime; //δݵʱ + NET_DVR_SYSTEM_TIME struEndTime; //δݵʱ + NET_DVR_IPADDR struDataHost; //սͨ +}NET_ITS_TRAFFIC_DATA_INFO, *LPNET_ITS_TRAFFIC_DATA_INFO; + +//ն˹״̬ +typedef struct tagNET_ITS_WORKSTATE +{ + DWORD dwSize ; + BYTE byDevName[NAME_LEN]; // 豸 + DWORD dwRunTime; // ϵͳʱ䣬λs + NET_ITS_TRAFFIC_DATA_INFO struTrafficDataInfo[2]; //̨֧ϴõ + DWORD dwMemoryUsage; // ڴռʣڴռΪ30%˴30 + DWORD dwCpuUsage; // cpuռʣcpuռΪ30%˴30 + DWORD dwDevTemperature; // ¶ + DWORD dwDeviceStatic; // 豸״̬,0-,1-CPUռ̫,85%,2-Ӳ,紮 + NET_DVR_DISKSTATE struHardDiskStatic[MAX_DISKNUM_V30]; //Ӳ״̬ + NET_DVR_CHANNELSTATE_V30 struChanStatic[MAX_CHANNUM_V30]; //ͨ״̬ + BYTE byAlarmInStatic[MAX_ALARMIN_V30]; //ڵ״̬,0-ûб,1-б + BYTE byAlarmOutStatic[MAX_ALARMOUT_V30]; //˿ڵ״̬,0-û,1-б + DWORD dwLocalDisplay; //ʾ״̬,0-,1- + BYTE byAudioInChanStatus[8]; //ʾͨ״̬ 0-δʹã1-ʹУ0ʾ1ͨ + BYTE byRes[36]; // +}NET_ITS_WORKSTATE, *LPNET_ITS_WORKSTATE; + +//ڽͨûȡ +typedef struct tagNET_ITS_ECT_WORKSTATE_COMMAND +{ + DWORD dwSize; + DWORD dwChannel; + BYTE byRes[256]; // +}NET_ITS_ECT_WORKSTATE_COMMAND, *LPNET_ITS_ECT_WORKSTATE_COMMAND; + +typedef struct tagNET_ITS_ECTWORKSTATE +{ + DWORD dwSize ; + BYTE byDevName[NAME_LEN]; // 豸 + DWORD dwRunTime; // ϵͳʱ䣬λs + NET_ITS_TRAFFIC_DATA_INFO struTrafficDataInfo[2]; //̨֧ϴõ + DWORD dwMemoryUsage; // ڴռʣڴռΪ30%˴30 + DWORD dwCpuUsage; // cpuռʣcpuռΪ30%˴30 + DWORD dwDevTemperature; // ¶ + DWORD dwDeviceStatic; // 豸״̬,0-,1-CPUռ̫,85%,2-Ӳ,紮 + NET_DVR_DISKSTATE struHardDiskStatic[MAX_DISKNUM_V30]; //Ӳ״̬ + BYTE byAlarmInStatic[MAX_ALARMIN_V30]; //ڵ״̬,0-ûб,1-б + BYTE byAlarmOutStatic[MAX_ALARMOUT_V30]; //˿ڵ״̬,0-û,1-б + DWORD dwLocalDisplay; //ʾ״̬,0-,1- + BYTE byRes[256]; // +}NET_ITS_ECTWORKSTATE, *LPNET_ITS_ECTWORKSTATE; + +// ͼƬϢ +typedef struct tagNET_ITS_PICTURE_INFO +{ + DWORD dwDataLen; //ýݳ + // 0:ͼ;1:ͼ;2:ϳͼ; 3:дͼ;4:ֱͼ;5:;6:ͼ(ʻ);7:ͼ(ʻ)ͼ;8-ǻ;9-;10-ԭʼ;11-Ŀͼ;12-ʻͼ ;13-ʻͼ;14-ͼСͼ + //15 - ԶͼƬ(ûԼϴΥͼƬ) + BYTE byType; + // 0-ֱϴ; 1-ƴ洢URL(3.7Ver)ԭȵͼƬݱURLݣͼƬȱURL + BYTE byDataType; + BYTE byCloseUpType;//дͼͣ0-,1-ǻ,2- + BYTE byPicRecogMode; //ͼƬʶ0-ʶ1-ʶ(βʶ) + DWORD dwRedLightTime; //ĺʱ s + BYTE byAbsTime[32]; //ʱ,yyyymmddhhmmssxxx,e.g.20090810235959999 λΪ + NET_VCA_RECT struPlateRect; //λ,byTypeΪ8-ǻ;9-ʱʾ + NET_VCA_RECT struPlateRecgRect; //ʶ꣬ͼƬΪ12-ʻͼ13-ʻͼǣΪʻԱ + BYTE *pBuffer; //ָ + DWORD dwUTCTime;//UTCʱ䶨 + BYTE byCompatibleAblity; //ֶ 0ʾЧ1ʾЧ; bit0-ʾdwUTCTimeֶЧ + BYTE byTimeDiffFlag; /*ʱֶǷЧ 0-ʱЧ 1-ʱЧ */ + char cTimeDifferenceH; /*UTCʱСʱ-12 ... +14 +ʾ,byTimeDiffFlagΪ1ʱЧ*/ + char cTimeDifferenceM; /*UTCʱӣ-30, 30, 45 +ʾbyTimeDiffFlagΪ1ʱЧ*/ + BYTE byRes2[4]; // +}NET_ITS_PICTURE_INFO, *LPNET_ITS_PICTURE_INFO; + + +typedef struct tagNET_ITS_ILLEGAL_INFO +{ + BYTE byIllegalInfo[MAX_ILLEGAL_LEN/*64*/];// ΥϢַʽ + BYTE byRes[256]; +}NET_ITS_ILLEGAL_INFO,*LPNET_ITS_ILLEGAL_INFO; + + +// +typedef struct tagNET_ITS_PLATE_RESULT +{ + DWORD dwSize; //ṹ + DWORD dwMatchNo; //ƥ,(,,)ƥ + BYTE byGroupNum; //ͼƬһץĵһͼƬʱƥݣ + BYTE byPicNo; //ĵͼƬţյͼƬ󣬱ʾ;ճʱͼƬʱҪɾ + BYTE bySecondCam; //ǷڶץģԶץĵԶǰץĵĺĿлõ + BYTE byFeaturePicNo; //Ƶ羯ȡڼͼΪдͼ,0xff-ʾȡ + BYTE byDriveChan; // + BYTE byVehicleType; //ͣοVTR_RESULT + BYTE byDetSceneID;//ⳡ[1,4], IPCĬ0 + //ԣλʾ0- ޸(ͨ)bit1- Ʊ공(ı־)bit2- ΣƷֵ0- 1- + //ýڵѲʹ,ʹbyYellowLabelCarbyDangerousVehiclesжǷƱ공ΣƷ + BYTE byVehicleAttribute; + WORD wIllegalType; //ΥͲù궨 + BYTE byIllegalSubType[8]; //Υ + BYTE byPostPicNo; //ΥʱȡڼͼƬΪͼ,0xff-ʾȡ + //ͨ(Чͨź豸ϴͨһ£ں˺ ͨһ) + BYTE byChanIndex; + WORD wSpeedLimit; //ޣʱЧ + BYTE byChanIndexEx; //byChanIndexEx*256+byChanIndexʾʵͨš + /*λر־,0~Ϊͨʶ𱨾, + 1~Ϊλòش(ͨPUT /ISAPI/Traffic/channels//vehiclePositionControl?format=json) + 2~Ϊܲش(Ԥõ㼰GPS)(ͨPUT /ISAPI/Traffic/channels//vehicleMonitor//startTask, + unarmedVehicleDetectionEnableĿ공ʹܣΪtrueʱֻϱⱨ޳ܲر˸ֶȡֵΪ02) + 3~Ϊֶش(/ISAPI/Traffic/channels//manualVehicleMonitor?format=json) + 4~Ϊճ(ó)ͨǷ֧ճ, + (ͨ/ISAPI/Traffic/channels//vehicleDetect/capabilitiesisSupportDailyVehicleMonitorж,ճʱ,豸ϱANPRʵʱϱvehicleMonitorر) + ظֶΪͨ + */ + BYTE byVehiclePositionControl; + NET_DVR_PLATE_INFO struPlateInfo; //Ϣṹ + NET_DVR_VEHICLE_INFO struVehicleInfo; //Ϣ + BYTE byMonitoringSiteID[48]; // + BYTE byDeviceID[48]; //豸 + BYTE byDir; //ⷽ1-У򣩣2-()3-˫4-ɶ5-,6-򶫣7-ɱϣ8- + BYTE byDetectType; //ⷽʽ,1-ظд2-Ƶ3-֡ʶ4-״ﴥ + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byCarDirectionType; //ʻķ0ʾ£1ʾϣʵʳʻ֣,2ʾδ֪ + //wIllegalTypeΪʱʹøòwIllegalTypeΪֵʱwIllegalTypeΪ׼òЧ + DWORD dwCustomIllegalType; //ΥͶ(ûԶ) + /*Ϊ0~ָʽʱΪϵΥͣwIllegalTypedwCustomIllegalTypeЧֵΥ롣 + Ϊ1~ַʽʱpIllegalInfoBufЧϵΥͣwIllegalTypedwCustomIllegalTypeȻֵΥ*/ + BYTE* pIllegalInfoBuf; //ΥַϢṹָ룻ָNET_ITS_ILLEGAL_INFO + BYTE byIllegalFromatType; //ΥϢʽͣ 0~ָʽ 1~ַʽ + BYTE byPendant;// 0-ʾδ֪,1-2- + BYTE byDataAnalysis; //0-δ, 1-ѷ + BYTE byYellowLabelCar; //0-ʾδ֪, 1-ǻƱ공,2-Ʊ공 + BYTE byDangerousVehicles; //0-ʾδ֪, 1-ΣƷ,2-ΣƷ + //ֶΰPilotַΪʻCopilotַΪʻ + BYTE byPilotSafebelt;//0-ʾδ֪,1-ϵȫ,2-ϵȫ + BYTE byCopilotSafebelt;//0-ʾδ֪,1-ϵȫ,2-ϵȫ + BYTE byPilotSunVisor;//0-ʾδ֪,1-,2- + BYTE byCopilotSunVisor;//0-ʾδ֪, 1-,2- + BYTE byPilotCall;// 0-ʾδ֪, 1-绰,2-绰 + //0-բ1-δբ (רʷƥǷբɹı־)byAlarmDataTypeΪ0-ʵʱʱ 0-δբ 1-բ + BYTE byBarrierGateCtrlType; + BYTE byAlarmDataType;//0-ʵʱݣ1-ʷ + NET_DVR_TIME_V30 struSnapFirstPicTime;//˵ʱ(ms)ץĵһͼƬʱ䣩 + DWORD dwIllegalTime;//Υʱ䣨ms = ץһͼƬʱ - ץĵһͼƬʱ + DWORD dwPicNum; //ͼƬpicGroupNumͬϢͼƬͼƬϢstruVehicleInfoEx + NET_ITS_PICTURE_INFO struPicInfo[6]; //ͼƬϢ,Żص6ͼ +}NET_ITS_PLATE_RESULT, *LPNET_ITS_PLATE_RESULT; + +//ڳץϴ +typedef struct tagNET_ITS_GATE_VEHICLE +{ + DWORD dwSize; //ṹ + DWORD dwMatchNo; //ƥ,(,,)ƥ Ĭ0 + BYTE byGroupNum; //ͼƬһץĵһͼƬʱƥݣĬ 1 ץͼƬ ƺʱ + BYTE byPicNo; //ĵͼƬϴͼƬţյͼƬ󣬱ʾɡ + //ճʱͼƬʱҪɾ + BYTE bySecondCam; //ǷڶץģԶץĵԶǰץĵĺĿлõʾǰץͼƬ + BYTE byRes; //ΪԤ + WORD wLaneid; //132ţԾ + BYTE byCamLaneId; //Ӧ116õijţԾͬ + BYTE byRes1; // + BYTE byAlarmReason[MAX_ALARMREASON_LEN]; //Զ屨 ĬΪ + WORD wBackList; //ΪǷ񱨾 0 ʾΪ 1 ʾֹ + WORD wSpeedLimit; //ޣʱЧkm/h + DWORD dwChanIndex; //ͨ + NET_DVR_PLATE_INFO struPlateInfo; //Ϣṹ + NET_DVR_VEHICLE_INFO struVehicleInfo; //Ϣ ٶ + BYTE byMonitoringSiteID[MAX_ID_LEN]; // + BYTE byDeviceID[MAX_ID_LEN]; //豸 + BYTE byDir; //ⷽ0- 1 볡2 + BYTE byDetectType; //ⷽʽ, 0- 1-ظд2-Ƶ3-֡ʶ4-״ﴥ + BYTE byRes2[2]; + BYTE byCardNo[MAX_ID_LEN]; // + DWORD dwPicNum; //ͼƬpicGroupNumͬϢͼƬͼƬϢstruVehicleInfoEx + NET_ITS_PICTURE_INFO struPicInfo[4]; //ͼƬϢ,Żص4ͼ + //2013-11-19 ڳץϴʽ + BYTE bySwipeTime[MAX_TIME_LEN];//ˢʱ ʱʽΪyyyymmddhh24missfff + BYTE byRes3[224]; +}NET_ITS_GATE_VEHICLE, *LPNET_ITS_GATE_VEHICLE; + +//ʶ +typedef struct tagNET_ITS_GATE_FACE +{ + DWORD dwSize; //ṹ峤 + BYTE byGroupNum; //ͼƬһץĵһͼƬʱƥݣ + BYTE byPicNo; //ĵͼƬţյͼƬ󣬱ʾɡ + //ճʱͼƬʱҪɾ + BYTE byFeaturePicNo; //ץʱȡڼͼΪдͼ,0xff-ʾȡ + BYTE byRes; // + WORD wLaneid; //132ţԾ + BYTE byCamLaneId; //Ӧ116õijţԾͬ + BYTE byDir; //ⷽ0- 1 볡 2 + DWORD dwChanIndex; //ͨ + BYTE byMonitoringSiteID[MAX_ID_LEN]; // + BYTE byDeviceID[MAX_ID_LEN]; //豸 + NET_VCA_FACESNAP_RESULT struFaceInfo; //ץ + BYTE byRes2[256]; //Ԥ +}NET_ITS_GATE_FACE, *LPNET_ITS_GATE_FACE; + +//ͣϴ +typedef struct _tagNET_ITS_PARK_VEHICLE_ +{ + DWORD dwSize; //ṹ + BYTE byGroupNum; //ͼƬѯץĵͼƬ + BYTE byPicNo; //ĵͼƬϴͼƬţյͼƬ󣬱ʾ + //ճʱͼƬʱҪɾ + BYTE byLocationNum; //ͼƬijλ + BYTE byParkError; //ͣ쳣0- 1 쳣 + BYTE byParkingNo[MAX_PARKNO_LEN];//λ + BYTE byLocationStatus; //λ״̬0-޳1г + BYTE bylogicalLaneNum;//߼λţ0-3һܹ4λ 0ߣ3ұߣ + WORD wUpLoadType;//λʾ0~Ѳϴ1~仯ϴ + BYTE byRes1[4]; //ֽ + DWORD dwChanIndex; //ͨͨ + NET_DVR_PLATE_INFO struPlateInfo; //Ϣṹ + NET_DVR_VEHICLE_INFO struVehicleInfo; //Ϣ + BYTE byMonitoringSiteID[MAX_ID_LEN]; // + BYTE byDeviceID[MAX_ID_LEN]; //豸 + DWORD dwPicNum; //ͼƬpicGroupNumͬϢͼƬ + //ͼƬϢstruVehicleInfoEx + NET_ITS_PICTURE_INFO struPicInfo[2]; //ͼƬϢ,Żص2ͼ + BYTE byRes2[256]; +}NET_ITS_PARK_VEHICLE, *LPNET_ITS_PARK_VEHICLE; + +//ͨȡ֤ +typedef struct tagNET_DVR_TFS_ALARM +{ + DWORD dwSize; //ṹС + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + DWORD dwIllegalType; //Υͣù궨壬dwIllegalTypeֵΪ0xffffffffʱʹbyIllegalCode + DWORD dwIllegalDuration; //Υʱ䣨λ룩 = ץһͼƬʱ - ץĵһͼƬʱ + BYTE byMonitoringSiteID[MONITORSITE_ID_LEN];//ţ·ڱšڲţ + BYTE byDeviceID[DEVICE_ID_LEN]; //豸 + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + NET_DVR_SCENE_INFO struSceneInfo; //Ϣ + NET_DVR_TIME_EX struBeginRecTime; //¼ʼʱ + NET_DVR_TIME_EX struEndRecTime; //¼ʱ + NET_DVR_AID_INFO struAIDInfo; //ͨ¼Ϣ + NET_DVR_PLATE_INFO struPlateInfo; //Ϣ + NET_DVR_VEHICLE_INFO struVehicleInfo; //Ϣ + DWORD dwPicNum; //ͼƬ + NET_ITS_PICTURE_INFO struPicInfo[8]; //ͼƬϢ8 + BYTE bySpecificVehicleType; //峵 οʶVTR_RESULT + BYTE byLaneNo; // + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + NET_DVR_TIME_V30 struTime;//ֶٶλǰʱ䡣 + DWORD dwSerialNo;//ţ + BYTE byVehicleAttribute;//ԣλʾ0- ޸(ͨ)bit1- Ʊ공(ı־)bit2- ΣƷֵ0- 1- + BYTE byPilotSafebelt;//0-ʾδ֪,1-ϵȫ,2-ϵȫ + BYTE byCopilotSafebelt;//0-ʾδ֪,1-ϵȫ,2-ϵȫ + BYTE byPilotSunVisor;//0-ʾδ֪,1-,2- + BYTE byCopilotSunVisor;//0-ʾδ֪, 1-,2- + BYTE byPilotCall;// 0-ʾδ֪, 1-绰,2-绰 + BYTE byRes2[2]; // + BYTE byIllegalCode[ILLEGAL_LEN/*32*/];//ΥչdwIllegalTypeֵΪ0xffffffffʹֵ + WORD wCountry; // ֵ,öCOUNTRY_INDEX + BYTE byRegion; //ֵ,0-1-ŷ(Europe Region)2-(Russian Region)3-ŷ&˹(EU&CIS) , 4-жMiddle East0xff- + BYTE byCrossLine;//Ƿѹͣ෽ͣ0-ʾδ֪1-ѹߣ2-ѹ + BYTE byParkingSerialNO[SERIAL_NO_LEN/*16*/];//λ + BYTE byCrossSpaces;//Ƿ粴λͣ෽ͣ0-ʾδ֪1-δ粴λͣ2-粴λͣ + BYTE byAngledParking;//Ƿбͣ෽ͣ, 0-ʾδ֪1-δбͣ2-бͣ + BYTE byAlarmValidity;//ŶȣʻʻŶȣΧ0-100ŶԽߣ¼ʵԽ + BYTE byDoorsStatus;//״̬ 0-Źر 1-ſ + DWORD dwXmlLen;//XMLϢ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pXmlBuf; // XMLϢָ,XMLӦEventNotificationAlert XML Block +#else + char* pXmlBuf; // XMLϢָ,XMLӦEventNotificationAlert XML Block + BYTE byRes3[4]; +#endif + BYTE byVehicleHeadTailStatus;//ͷβ״̬ 0- 1-ͷ 2-β + BYTE byBrokenNetHttp; //־λ0-شݣ1-ش + BYTE byRes[30]; // +}NET_DVR_TFS_ALARM,*LPNET_DVR_TFS_ALARM; + +typedef struct tagNET_DVR_SOFTWARE_SERVICE_CFG +{ + DWORD dwSize;//ṹС + BYTE byThirdStreamEnabled; //Ƿã0-1- + BYTE bySubStreamEnabled; //Ƿã0-1- + BYTE byRes[254]; +}NET_DVR_SOFTWARE_SERVICE_CFG, *LPNET_DVR_SOFTWARE_SERVICE_CFG; + +typedef struct tagNET_ITS_ECT_BLOCKLIST +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE bylogicalLaneNo;//߼ + BYTE byRes1[3]; + BYTE byLaneName[NAME_LEN];// 32 + NET_DVR_PLATE_INFO struPlateInfo; //Ϣṹ + BYTE byRes2[256]; // ֽ +}NET_ITS_ECT_BLOCKLIST, *LPNET_ITS_ECT_BLOCKLIST; + +//IPCͨ +typedef struct tagNET_ITS_IPC_CHAN_CFG +{ + DWORD dwSize; + BYTE byCameraType; //࣬0-1-Ȧ2-Ƶ,3-һ + BYTE byRes1[3]; // + BYTE byMonitoringSiteID[48]; // + BYTE byDeviceID[48]; //豸 + BYTE byDirectionNo; //ⷽ,0-,1-,2-,3-˫,4-ɶ,5-,6-,7-ɱ,8- + BYTE byMonitorInfo[48]; //Ϣ + BYTE byRes2[15]; // +}NET_ITS_IPC_CHAN_CFG, *LPNET_ITS_IPC_CHAN_CFG; + +//豸Ϣ +typedef struct tagNET_ITS_SINGLE_DEVICE_INFO +{ + DWORD dwDeviceType; //豸ͣ0-նˣ1-2-ƣ3-4-Ȧ15-Ȧ26-Ȧ37-̵Ƽ8- + //9-״10-բ11-ڿƻ(Ʊ)12-LEDʾ13-Զ14-15-ɨǹ + //16-Ʊݴӡ17-ڵ(յ) , 18- + DWORD dwDirID; // + DWORD dwLaneID; // + DWORD dwDeviceState; //豸״̬ 0 0 쳣ο豸쳣 + BYTE byDeviceName[32]; //豸 + BYTE byDeviceID[48]; //豸ţһкţõַ + NET_DVR_TIME_V30 struTriggerTime;//ʱ + BYTE byRelateChan; //ͨţ1~8 AC1~4 AC1~2 + BYTE byRes[3]; +}NET_ITS_SINGLE_DEVICE_INFO,*LPNET_ITS_SINGLE_DEVICE_INFO; + +//·Ϣ +typedef struct tagNET_ITS_ROADINFO +{ + DWORD dwSize; + DWORD dwChannel; //ͨ,0xffffffffʾնˣʾӦ + BYTE byTriggerMode; // 0:Ȧ; 1:Ƶ + BYTE byRes1[3]; + DWORD dwDeviceNum; //ʵ豸 + BYTE byMonitoringSiteID[48]; // + BYTE byRoadInfo[48]; //Ϣ + NET_ITS_SINGLE_DEVICE_INFO struSingleDevice[ITS_MAX_DEVICE_NUM]; + BYTE byRes[16]; +}NET_ITS_ROADINFO,*LPNET_ITS_ROADINFO; + +//·Ϣ +typedef struct tagNET_ITS_TRAFFIC_DRIVE_CHAN +{ + BYTE byDriveChan; // + BYTE byRes1[3]; // Ԥ + WORD wCarFlux; // + WORD wPasserbyFlux; // + WORD wShayFlux; //ֳ + float fAverOccpancy; //ƽռʰٷֱ + WORD wAverSpeed; //ƽ(km/h) + WORD wAverCarDis; //ƽ(λ) + BYTE byRes2[16]; // Ԥ +}NET_ITS_TRAFFIC_DRIVE_CHAN,*LPNET_ITS_TRAFFIC_DRIVE_CHAN; + +typedef struct tagNET_ITS_TRAFFIC_COLLECT +{ + DWORD dwSize; //ṹС + BYTE byMonitoringSiteID[48]; // + BYTE byDeviceID[48]; //豸 + BYTE byLaneNum; // + BYTE byDir; //ⷽ + BYTE byDetectType; //ⷽʽ1-ظȦ2-Ƶ3֡ʶ4״ﴥ + BYTE byRes1; //Ԥ + DWORD dwChannel; //ͨ + NET_DVR_SYSTEM_TIME struStartTime; //ͳƿʼʱ + DWORD dwSamplePeriod; //ͳʱ,λ + NET_ITS_TRAFFIC_DRIVE_CHAN struDriveChan[6]; //ͨ,ÿ֧6 + BYTE byRes2[24]; //Ԥ +}NET_ITS_TRAFFIC_COLLECT,*LPNET_ITS_TRAFFIC_COLLECT; + +typedef struct tagNET_ITS_OVERLAPCFG_COND +{ + DWORD dwSize; + DWORD dwChannel; + DWORD dwConfigMode; //ģʽ0-նˣ1-ǰ(ֱǰ˻ն˽ǰ) + BYTE byPicModeType;//0-ʾСͼ(ͼ)1-ʾͼ(ϳͼ) + /* + 0ʾ ץMPRģʽ֡ץ IPCʹã + 1 ʾ ץ HVT ģʽ쿨IPCʹã + */ + BYTE byRelateType; + BYTE byRes[14]; +}NET_ITS_OVERLAPCFG_COND, *LPNET_ITS_OVERLAPCFG_COND; + +typedef enum ITS_OVERLAP_ITEM_TYPE +{ + OVERLAP_ITEM_NULL = 0, //0-δ֪ + OVERLAP_ITEM_SITE, //1-ص + OVERLAP_ITEM_ROADNUM, //2-·ڱ + OVERLAP_ITEM_INSTRUMENTNUM, //3-豸 + OVERLAP_ITEM_DIRECTION, //4- + OVERLAP_ITEM_DIRECTIONDESC, //5- + OVERLAP_ITEM_LANENUM, //6- + OVERLAP_ITEM_LANEDES, //7- + OVERLAP_ITEM_CAPTIME, //8-ץʱ() + OVERLAP_ITEM_CAPTIME_MILLSECOND, //9-ץʱ() + OVERLAP_ITEM_PLATENUM, //10-ƺ + OVERLAP_ITEM_CARCOLOR, //11-ɫ + OVERLAP_ITEM_CARTYPE, //12- + OVERLAP_ITEM_CARBRAND, //13-Ʒ + OVERLAP_ITEM_CARSPEED, //14-ٶ + OVERLAP_ITEM_SPEEDLIMIT, //15-ٱ־ + OVERLAP_ITEM_CARLENGTH, //16-1~99m + OVERLAP_ITEM_ILLEGALNUM, //17-Υ(ΥӦûõģӦֱӵΥϢ١١Сơռѹߵ) + OVERLAP_ITEM_MONITOR_INFO, //18-Ϣ + OVERLAP_ITEM_ILLEGALDES, //19-ΥΪ + OVERLAP_ITEM_OVERSPEED_PERCENT, //20-ٱ + OVERLAP_ITEM_RED_STARTTIME, //21-ƿʼʱ + OVERLAP_ITEM_RED_STOPTIME, //22-ƽʱ + OVERLAP_ITEM_RED_DURATION, //23-ʱ + OVERLAP_ITEM_SECUNITY_CODE, //24-α + OVERLAP_ITEM_CAP_CODE, //25-ץı + OVERLAP_ITEM_SEATBELT, //26-ȫ + OVERLAP_ITEM_MONITOR_ID, //27- + OVERLAP_ITEM_SUN_VISOR, //28- + OVERLAP_ITEM_LANE_DIRECTION, //29-ʻ + OVERLAP_ITEM_LICENSE_PLATE_COLOR, // 30-ɫ + OVERLAP_ITEM_SCENE_NUMBER, //31- + OVERLAP_ITEM_SCENE_NAME, //32- + OVERLAP_ITEM_YELLOW_SIGN_CAR, //33-Ʊ공 + OVERLAP_ITEM_DANGEROUS_CAR, //34-ΣƷ + OVERLAP_ITEM_CAR_SUBBRAND, //35-Ʒ + OVERLAP_ITEM_CAR_DIRECTION, //36- + OVERLAP_ITEM_PENDANT, //37- + OVERLAP_ITEM_CALL, //38-绰 + OVERLAP_ITEM_CAR_VALIDITY, //39-Ŷ + OVERLAP_ITEM_CAR_COUNTRY, //40- + OVERLAP_ITEM_CAR_PLATE_TYPE, //41-ͣοö + OVERLAP_ITEM_CAR_PLATE_SIZE, //42-Ƴߴ + OVERLAP_ITEM_CAR_PLATE_COLOR, //43-ɫ + OVERLAP_ITEM_CAR_PLATE_CATEGORY, //44-ƸϢ + OVERLAP_ITEM_ACCIDENT, //45-ͨ¹ + OVERLAP_ITEM_SMOKING, //46- + OVERLAP_ITEM_HELMET, //47-ͷ + OVERLAP_ITEM_MANNED, //48- + OVERLAP_ITEM_HUMAN, //49- + OVERLAP_ITEM_PLAYMOBILEPHONE, //50-ֻ + OVERLAP_ITEM_ADR //51- ADRƣ ŷ޹ҳеĻ˫ƣҪʾڶƺţADRƵʾ +}ITS_OVERLAP_ITEM_TYPE; + +//ַÿһϢṹ +typedef struct tagNET_ITS_OVERLAP_SINGLE_ITEM_PARAM +{ + BYTE byRes1[2]; // + BYTE byItemType; //ͣOVERLAP_ITEM_TYPE + BYTE byChangeLineNum; //Ļ[0-10](Ĭ0) + BYTE bySpaceNum; //Ŀո[0-255](Ĭ0) + BYTE byRes2[2]; + BYTE byEnablePos; //Ƿʾ + WORD wStartPosTop; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + WORD wStartPosLeft; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + BYTE byRes[8]; +}NET_ITS_OVERLAP_SINGLE_ITEM_PARAM, *LPNET_ITS_OVERLAP_SINGLE_ITEM_PARAM; + +typedef struct tagNET_ITS_OVERLAP_ITEM_PARAM +{ + NET_ITS_OVERLAP_SINGLE_ITEM_PARAM struSingleItem[MAX_OVERLAP_ITEM_NUM]; //ַ + DWORD dwLinePercent; //аٷֱ(0-100),(Ĭ100) + DWORD dwItemsStlye; //ӷʽ0-,1-(ĬϺ) + WORD wStartPosTop; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + WORD wStartPosLeft; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + WORD wCharStyle; //,0-1-κ(Ĭ) + WORD wCharSize; //ַС,0--16x16,1--32x32,2-48x48,3--64x64 (Ĭ),8x128(Ver3.7) + WORD wCharInterval; //ַ࣬[016]赥λ(Ĭ) + BYTE byRes1[2]; + DWORD dwForeClorRGB; //ǰɫRGBֵbit0-1:(B) bit2-3:(G) bit4-5:(G) (Ĭx00FFFFFF-) + DWORD dwBackClorRGB; //ɫRGBֵ,ֻͼƬЧbit0-1:(B) bit2-3:(G) bit4-5:(G) (Ĭx00000000-) + BYTE byColorAdapt; //ɫǷӦ0-1- + //(Ver3.7 ) + // ʹ 0-, 1-㣨ϸעͣٶ,ֵ 3λ0 + BYTE byParamFillZeroEnble; + BYTE byPlateLeftCornerEnable;// СͼϽʹ 0-, 1- + BYTE byRes2; + WORD wStartSPicPosTop; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + WORD wStartSPicPosLeft; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + //OSDλ 0-ͼƬ,1-ͼƬϱԵ,2-ͼƬ±ԵϳͼרõϱԵ⣩V3.7 + BYTE byOsdLocate; + BYTE byRes[23]; +}NET_ITS_OVERLAP_ITEM_PARAM, *LPNET_ITS_OVERLAP_ITEM_PARAM; + +//Ϣ +typedef struct tagNET_ITS_OVERLAP_INFO_PARAM +{ + BYTE bySite[128]; //ص + BYTE byRoadNum[32]; //·ڱ + BYTE byInstrumentNum[32]; //豸 + BYTE byDirection[32]; // + BYTE byDirectionDesc[32]; // + BYTE byLaneDes[32]; // + BYTE byRes1[32]; // + BYTE byMonitoringSite1[44]; //1Ϣ + BYTE byMonitoringSite2[32]; //2Ϣ + BYTE byRes[64]; // +}NET_ITS_OVERLAP_INFO_PARAM, *LPNET_ITS_OVERLAP_INFO_PARAM; + +typedef struct tagNET_ITS_OVERLAP_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿã0-ã1- + BYTE byRes1[3]; + NET_ITS_OVERLAP_ITEM_PARAM struOverLapItem; //ַ + NET_ITS_OVERLAP_INFO_PARAM struOverLapInfo; //ַϢ + BYTE byRes[32]; +}NET_ITS_OVERLAP_CFG, *LPNET_ITS_OVERLAP_CFG; + +//ַÿһϢṹ +typedef struct tagNET_ITS_OVERLAP_SINGLE_ITEM_PARAM_V50 +{ + BYTE byRes1[2]; // + BYTE byItemType; //ͣOVERLAP_ITEM_TYPE + BYTE byChangeLineNum; //Ļ[0-10](Ĭ0) + BYTE bySpaceNum; //Ŀո[0-255](Ĭ0) + BYTE byRes2[2]; + BYTE byEnablePos; //Ƿʾ + WORD wStartPosTop; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + WORD wStartPosLeft; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + //ԶͣbyItemTypeӦɽbyItemTypeԶơԶΪգĬbyItemTypeе + BYTE byItemTypeCustom[32]; + BYTE byRes[8]; +}NET_ITS_OVERLAP_SINGLE_ITEM_PARAM_V50, *LPNET_ITS_OVERLAP_SINGLE_ITEM_PARAM_V50; + +typedef struct tagNET_ITS_OVERLAP_ITEM_PARAM_V50 +{ + NET_ITS_OVERLAP_SINGLE_ITEM_PARAM_V50 struSingleItem[MAX_OVERLAP_ITEM_NUM]; //ַ + DWORD dwLinePercent; //аٷֱ(0-100),(Ĭ100) + DWORD dwItemsStlye; //ӷʽ0-,1-(ĬϺ) + WORD wStartPosTop; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + WORD wStartPosLeft; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + WORD wCharStyle; //,0-1-κ(Ĭ) + WORD wCharSize; //ַС,0--16x16,1--32x32,2-48x48,3--64x64 (Ĭ),8x128(Ver3.7) + WORD wCharInterval; //ַ࣬[016]赥λ(Ĭ) + BYTE byRes1[2]; + DWORD dwForeClorRGB; //ǰɫRGBֵbit0-1:(B) bit2-3:(G) bit4-5:(G) (Ĭx00FFFFFF-) + DWORD dwBackClorRGB; //ɫRGBֵ,ֻͼƬЧbit0-1:(B) bit2-3:(G) bit4-5:(G) (Ĭx00000000-) + BYTE byColorAdapt; //ɫǷӦ0-1- + //(Ver3.7 ) + // ʹ 0-, 1-㣨ϸעͣٶ,ֵ 3λ0 + BYTE byParamFillZeroEnble; + BYTE byPlateLeftCornerEnable;// СͼϽʹ 0-, 1- + BYTE byRes2; + WORD wStartSPicPosTop; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + WORD wStartSPicPosLeft; //ʼ,ֻͼƬڲЧ[0~2448](Ĭ0) + //OSDλ 0-ͼƬ,1-ͼƬϱԵ,2-ͼƬ±ԵϳͼרõϱԵ⣩V3.7 + BYTE byOsdLocate; + BYTE byRes[63]; +}NET_ITS_OVERLAP_ITEM_PARAM_V50, *LPNET_ITS_OVERLAP_ITEM_PARAM_V50; + +typedef struct tagNET_ITS_OVERLAP_CFG_V50 +{ + DWORD dwSize; + BYTE byEnable; //Ƿã0-ã1- + BYTE byRes1[3]; + NET_ITS_OVERLAP_ITEM_PARAM_V50 struOverLapItemV50; //ַ + NET_ITS_OVERLAP_INFO_PARAM struOverLapInfo; //ַϢ + BYTE byRes[120]; +}NET_ITS_OVERLAP_CFG_V50, *LPNET_ITS_OVERLAP_CFG_V50; + +#define MAX_PTZCRUISE_POINT_NUM 32 //֧32Ѳ + + +//ԤõϢ +typedef struct tagNET_DVR_PRESET_INFO +{ + DWORD dwSize; + DWORD dwPresetNum; //Ԥõ + DWORD dwGroupNum; // + BYTE byRes[8]; +}NET_DVR_PRESET_INFO, *LPNET_DVR_PRESET_INFO; + +// +typedef struct tagNET_DVR_PRESET_COND +{ + DWORD dwSize; + DWORD dwChannel; + DWORD dwGroupNO; // + BYTE byRes[8]; +}NET_DVR_PRESET_COND, *LPNET_DVR_PRESET_COND; + +// +typedef struct tagNET_DVR_PRESETCFG +{ + DWORD dwSize; + DWORD dwPresetIndex; //Ԥõ + NET_VCA_POINT struVcaPoint; //Ԥõ + WORD wZoomCoordinate; ///<Ԥõ㴰Zoomֵ + BYTE byRes[30]; +}NET_DVR_PRESETCFG, *LPNET_DVR_PRESETCFG; + +//ȡѲ·Ŀ +typedef struct tagNET_DVR_PTZCRUISE_INFO +{ + DWORD dwSize; + DWORD dwPtzCruiseNum; //· + DWORD dwGroupNum; // + BYTE byRes[8]; +}NET_DVR_PTZCRUISE_INFO, *LPNET_DVR_PTZCRUISE_INFO; + +// +typedef struct tagNET_DVR_PTZCRUISE_COND +{ + DWORD dwSize; + DWORD dwChannel; + DWORD dwGroupNO; // + BYTE byRes[8]; +}NET_DVR_PTZCRUISE_COND, *LPNET_DVR_PTZCRUISE_COND; + +// +typedef struct tagNET_DVR_PTZCRUISE_POINTCFG +{ + DWORD dwSize; + DWORD dwPresetIndex; //Ԥõ + NET_VCA_POINT struVcaPoint; //Ԥõ + BYTE byDwell; //ͣʱ + BYTE bySpeed; //ٶ + WORD wZoomCoordinate;///<Ԥõ㴰Zoomֵ + BYTE byRes[28]; +}NET_DVR_PTZCRUISE_POINTCFG, *LPNET_DVR_PTZCRUISE_POINTCFG; + +typedef struct tagNET_DVR_PTZCRUISECFG +{ + DWORD dwSize; + DWORD dwCruiseRoute; //Ѳ· + NET_DVR_PTZCRUISE_POINTCFG struCruisePoint[MAX_PTZCRUISE_POINT_NUM]; //֧32Ѳ + BYTE byRes[32]; +}NET_DVR_PTZCRUISECFG, *LPNET_DVR_PTZCRUISECFG; + +//ģʽṹ +typedef struct tagNET_DVR_MOTION_TRACK_CFG +{ + DWORD dwSize; + BYTE byEnableTrack; //ø٣0-1- + BYTE byRes[63]; +}NET_DVR_MOTION_TRACK_CFG, *LPNET_DVR_MOTION_TRACK_CFG; + +//һĶʱƻ +typedef struct tagNET_DVR_DAY_SCHEDULE +{ + BYTE byWorkMode ; //0-ȫ쿪1-ȫأ2-ʱ + BYTE byRes1[3] ; + NET_DVR_SCHEDTIME struTime[MAX_TIMESEGMENT_V30/*8*/]; //ʱ + BYTE byRes2[8]; // +}NET_DVR_DAY_SCHEDULE ,*LPNET_DVR_DAY_SCHEDULE; + +//ʱܸٲṹ +typedef struct tagNET_DVR_SCHEDULE_AUTO_TRACK_CFG +{ + DWORD dwSize; //ṹ + BYTE byEnableTrack; //ø٣0- 1- + BYTE byRes1[3] ; + NET_DVR_DAY_SCHEDULE struSchedule[MAX_DAYS/*7*/]; //ʱܸʱΣ8ʱڵʱ䣬Ĭ϶ʱܸٹر + BYTE byRes2[128]; +}NET_DVR_SCHEDULE_AUTO_TRACK_CFG,*LPNET_DVR_SCHEDULE_AUTO_TRACK_CFG; + +typedef struct tagNET_DVR_I_FRAME +{ + DWORD dwSize; //ṹ + BYTE sStreamID[STREAM_ID_LEN/*32*/] ; //ID + DWORD dwChan; //ͨ + BYTE byStreamType; //0-1-2-33-44-5 + BYTE byRes[63]; +} NET_DVR_I_FRAME, *LPNET_DVR_I_FRAME; + +typedef struct tagNET_DVR_REBOOT_TIME +{ + BYTE byDate; //ڼ1-7һ + BYTE byHour; //ʱ + BYTE byMinute; // + BYTE byRes1; + BYTE byRebootMode; //0-1-˲ֻܻȡã + BYTE byDisabled; // 0- 1- + BYTE byRes[10]; // +}NET_DVR_REBOOT_TIME,*LPNET_DVR_REBOOT_TIME; + +typedef struct tagNET_DVR_AUTO_REBOOT_CFG +{ + DWORD dwSize; + NET_DVR_REBOOT_TIME struRebootTime; +}NET_DVR_AUTO_REBOOT_CFG,*LPNET_DVR_AUTO_REBOOT_CFG; + +#define NET_DVR_GPS_FINDING 0 //ڲ +#define NET_DVR_GPS_RECV 1 // +#define NET_DVR_GPS_OVER 2 //ҽ +#define NET_DVR_GPS_EXCEPTION 3 //쳣 +typedef struct tagNET_DVR_MENU_OUTPUT_MODE +{ + DWORD dwSize; + BYTE byMenuOutputMode; //ͬԴ豸0-Auto 1-CVBS 2-HDMI 3-VGA ͬԴ豸0-Auto 1-CVBS 2-HDMI/VGA + BYTE byRes[63]; +}NET_DVR_MENU_OUTPUT_MODE, *LPNET_DVR_MENU_OUTPUT_MODE; + +typedef struct tagNET_DVR_MB_IPADDR +{ + NET_DVR_IPADDR struIP; //IPַ + WORD wPort; //˿ں + BYTE byRes[2]; +}NET_DVR_MB_IPADDR,*LPNET_DVR_MB_IPADDR; + +typedef struct tagNET_DVR_MB_WVSPARA +{ + NET_DVR_MB_IPADDR struWVSAddr; + BYTE byPuid[NAME_LEN]; //豸id + BYTE byPassword[PASSWD_LEN]; // + BYTE byRes[8]; +}NET_DVR_MB_WVSPARA, *LPNET_DVR_MB_WVSPARA; + +typedef struct tagNET_DVR_MB_EHOMEPARA +{ + NET_DVR_MB_IPADDR struEHomeAddr; + BYTE byPuid[NAME_LEN]; //豸id +}NET_DVR_MB_EHOMEPARA, *LPNET_DVR_MB_EHOMEPARA; + +typedef struct tagNET_DVR_MB_PLATFORMPARA +{ + DWORD dwSize; + BYTE byNetEnvironment;/*绷,0-wireless,1-3G,2-wLan,3-lan*/ + BYTE byCurPlatForm; /*< ǰƽ̨0 - WVS, 1 - E, 2 - ģʽ */ + BYTE byRes1[2]; + NET_DVR_MB_WVSPARA struWVSPara; /*ƽ̨(ƽ̨)*/ + NET_DVR_MB_EHOMEPARA struMbEHpara;/*Eƽ̨ƽ̨豸 */ + BYTE byRes2[64]; +}NET_DVR_MB_PLATFORMPARA, *LPNET_DVR_MB_PLATFORMPARA; + +typedef struct tagNET_DVR_MB_GPS_STATUS +{ + BYTE byGPSModule; /*gpsģ, 0: , 1: */ + BYTE byPositionStatus; /*gpsλ״̬, 0: λʧ, 1: λɹ*/ + BYTE bySignalStrength; /*źǿ, 0: , 1: , 2: ǿ*/ + BYTE byres[5]; +}NET_DVR_MB_GPS_STATUS, *LPNET_DVR_MB_GPS_STATUS; + +typedef struct tagNET_DVR_MB_GSENSOR_STATUS +{ + BYTE byGsensorModule; /*g-sensorģ, 0: not exist, 1: , 2: */ + BYTE byCurAccX[10]; /*ǰXٶ*/ + BYTE byCurAccY[10]; /*ǰYٶ*/ + BYTE byCurAccZ[10]; /*ǰZٶ*/ + BYTE byRefAccX[10]; /* Xٶȱ궨ֵ*/ + BYTE byRefAccY[10]; /* Yٶȱ궨ֵ*/ + BYTE byRefAccZ[10]; /* Zٶȱ궨ֵ*/ + BYTE byres[3]; +}NET_DVR_MB_GSENSOR_STATUS, *LPNET_DVR_MB_GSENSOR_STATUS; + +#define IP_ADDR_LEN 16 +#define IW_ESSID_MAX_SIZE 32 + +typedef struct tagNET_DVR_MB_WIFI_STATUS +{ + BYTE byEnableWiFi; /* , 0 , 1 */ + BYTE byWiFiConnectStatus; /* WIFI״̬, 0: ʧ, 1: ӳɹ 2: ģ*/ + BYTE bySignalStrength; /* źǿ, 0 , 1 , 2 ǿ */ + BYTE byIPaddress[IP_ADDR_LEN]; /*WIFI 豸 ip*/ + BYTE byEssid[IW_ESSID_MAX_SIZE]; /*߽essid*/ + BYTE byres[5]; +}NET_DVR_MB_WIFI_STATUS,*LPNET_DVR_MB_WIFI_STATUS; + +typedef struct tagNET_DVR_MB_PLATFORM_STATUS +{ + BYTE byCurPlat; /*ǰƽ̨, 0: wvs, 1: ivms, 2: ģʽ(net_3g_sdk)*/ + BYTE byLoginStatus; /*login ״̬, 0: login failed, 1: login success*/ + BYTE byExceptionInfo; /*쳣Ϣ*/ + /* + WVS :exception info: + 0: ӷʧ + 1: ע + 2: û + 3: עᳬʱ + 4: ʱ + 5: עɹ + iVMS :exception info: + 0δע + 1ע + 2עӳ + 3עᳬʱ + 4ʱûж + 5ע + 6 CMSע豸Ѿ޶̨ + 7 CMSעͨѾ޶ͨ + 8豸WEBû + 9CMSWEBͨʧ + 10¼δ֪ + 11עɹ + ģʽ :exception info: + 0δע + 1: ע + 2: ظע + 3: עʧ + 4: IP仯 + 5: עɹ + 6: ûע + 7: ʱ + */ + BYTE byres[5]; +}NET_DVR_MB_PLATFORM_STATUS, *LPNET_DVR_MB_PLATFORM_STATUS; + + +typedef struct tagNET_DVR_MB_MOBILEDEV_STATUS +{ + DWORD dwSize; /*ṹС*/ + union + { + NET_DVR_MB_GPS_STATUS struGPSStatus; + NET_DVR_MB_GSENSOR_STATUS struGSensorStatus; + NET_DVR_MB_WIFI_STATUS struWiFiStatus; + NET_DVR_MB_PLATFORM_STATUS struPlatformStatus; + }mobileStatus; +}NET_DVR_MB_MOBILEDEV_STATUS, *LPNET_DVR_MB_MOBILEDEV_STATUS; + +#define NET_DVR_GPS_STATUS 0 +#define NET_DVR_GSENSOR_STATUS 1 +#define NET_DVR_WIFI_STATUS 2 +#define NET_DVR_PLATFORM_STATUS 3 + +//GPSϢṹ +typedef struct tagNET_DVR_GPS_INFO +{ + /* γΪS*100 */ + BYTE byDirection[2]; /*direction[0]0or1(/), direction[1]:0or1(γ/γ) */ + BYTE bySvs; /* satellite vehicles(ֵ0)Чλ */ + BYTE byLocateMode; /* λģʽ(ֵ0)NMEA0183 3.00汾0=λ1=֣2=㣬3=Ч */ + WORD wHDOP; /* ˮƽӣGPSȷȣ0.5-99.96ڶλȸߣ20趪洢dz10Ժ */ + WORD wHeight; /* ߶ */ + DWORD dwLatitude; /*γlatitude = ʵʶ*3600*100+ʵʷ*60*100+ʵ*100 */ + DWORD dwLongitude; /*longitude =ʵʶ*3600*100+ʵʷ*60*100+ʵ*100 */ + DWORD dwVehicleSpeed; /* mobile speed =ʵٶ*100000 ʵʵλkph*/ + DWORD dwVehicleDirection; /* mobile direction= ʵʷ*100ʵֵǷǣΪ0ȣ˳ʱ */ + BYTE byRes[8]; // +}NET_DVR_GPS_INFO,*LPNET_DVR_GPS_INFO; //32ֽ + +//GPS״̬ϴ +typedef struct _NET_DVR_GPS_STATUS_ALARM_ +{ + DWORD dwSize; + NET_DVR_TIME_V30 struGPSTime; //GPS ʱ䣬ñʱ + NET_DVR_GPS_INFO struGPSInfo; //GPS + BYTE byRetransFlag; //0- GPS Ϊʵʱ1- GPS Ϊش + BYTE byNeedsResponse; //Ӧǣ0Ӧ1Ӧ + BYTE byType;//ϱ 0-˻ + BYTE byBatteryRemaining;//ʣ-1--100; -1ʾ + int iRollAngle;//Ƕ,Χ-pi - +pi,ʵֵ*100 + int iPitchAngle;//ͷǶ,Χ-pi - +pi,ʵֵ*100 + WORD wRelativeHeight;//Ը߶ȣλ + WORD wVerticalSpeed;//ֱٶȣλ/Сʱ + BYTE byRes2[160]; // +}NET_DVR_GPS_STATUS_ALARM, *LPNET_DVR_GPS_STATUS_ALARM; + +//GPSʱ +typedef struct tagNTE_DVR_GPS_DATA +{ + NET_DVR_GPS_INFO struGPSInfo; //GPS + NET_DVR_TIME struTime; //GPSӦʱ㣬UTCʱ + BYTE byRes[12]; // +}NET_DVR_GPS_DATA,*LPNET_DVR_GPS_DATA; + +//GPSṹ +typedef struct tagNET_DVR_GET_GPS_DATA_PAPAM +{ + DWORD dwCmdType; //0-ʱβGPS,1-ʱGPS + union + { + struct + { + NET_DVR_TIME struBeginTime; //GPSݲʼʱ + NET_DVR_TIME struEndTime; //GPSݲҽʱ + DWORD dwInterval; //GPSʱλ + BYTE byRes[76]; // + }TimeSeg; + struct + { + NET_DVR_TIME struTimePoint; //GPSݲʼʱ䵥λ + BYTE byRes[104]; // + }TimePoint; + }GpsDataParam; +}NET_DVR_GET_GPS_DATA_PARAM,*LPNET_DVR_GET_GPS_DATA_PARAM; + +#define NET_SDK_MAX_CARD_LEN 32 //󿨺ų + +//ǩϢϴ +typedef struct _NET_DVR_TAG_INFO_ALARM_ +{ + DWORD dwSize; + BYTE byCardNo[NET_SDK_MAX_CARD_LEN/*32*/]; // + int iRssi;//źǿ,Χ-100 - +100 + BYTE byIndexCode[64];//ƽ̨index code,൱豸 + NET_DVR_TIME_V30 struAcquisitionTime;//ȡʱ + BYTE byRFIDInfo[32]; //ƬID + BYTE byRFIDInfoLen; //ƬID + BYTE byVoltageLow; //1ʾ͵ѹ0ʾ + BYTE byAlarmFlag; //(֪ͨƽ̨)ǷҪ1Ҫ0Ҫ + BYTE byDirection; //0ʾ,1ʾ,2ʾ,3-255 + BYTE byRes[48]; // +}NET_DVR_TAG_INFO_ALARM, *LPNET_DVR_TAG_INFO_ALARM; + + +typedef struct tagNET_DVR_SDKLOCAL_CFG +{ + BYTE byEnableAbilityParse; //ʹ,0-ʹ,1-ʹ,Ĭϲʹ + BYTE byVoiceComMode; //Խģʽ0-ʹöԽ⣨Ĭϣ1-ʹwindows apiģʽ + BYTE byLoginWithSimXml; //¼ʱʹģ,0-ʹ,1-ʹ,Ĭϲʹ + BYTE byCompatibleType; + BYTE byRes[380]; + BYTE byProtectKey[128]; //ĬΪ0 +}NET_DVR_SDKLOCAL_CFG, *LPNET_DVR_SDKLOCAL_CFG; + +typedef struct tagNET_DVR_LOCAL_ABILITY_PARSE_CFG +{ + BYTE byEnableAbilityParse; //ʹ,0-ʹ,1-ʹ,Ĭϲʹ + BYTE byRes[127]; +}NET_DVR_LOCAL_ABILITY_PARSE_CFG, *LPNET_DVR_LOCAL_ABILITY_PARSE_CFG; + +typedef struct tagNET_DVR_LOCAL_TALK_MODE_CFG +{ + BYTE byTalkMode; //Խģʽ0-ʹöԽ⣨Ĭϣ1-ʹwindows apiģʽ + BYTE byRes[127]; +}NET_DVR_LOCAL_TALK_MODE_CFG, *LPNET_DVR_LOCAL_TALK_MODE_CFG; + + +typedef struct tagNET_DVR_LOCAL_PROTECT_KEY_CFG +{ + BYTE byProtectKey[128]; //ĬΪ0 + BYTE byRes[128]; +}NET_DVR_LOCAL_PROTECT_KEY_CFG, *LPNET_DVR_LOCAL_PROTECT_KEY_CFG; + +typedef struct tagNET_DVR_SIMXML_LOGIN +{ + BYTE byLoginWithSimXml; //¼ʱʹģУṹֶ,0-ʹ,1-ʹ + BYTE byRes[127]; +}NET_DVR_SIMXML_LOGIN, *LPNET_DVR_SIMXML_LOGIN; + +//صò +typedef struct +{ /*JSON͸COMM_VCA_ALARMJSONʽ + 0~JSONʽο4.1.4; + 1~JSONʽο4.1.5 + */ + BYTE byVcaAlarmJsonType; + BYTE byRes[63]; +}NET_DVR_MESSAGE_CALLBACK_PARAM_V51,*LPNET_DVR_MESSAGE_CALLBACK_PARAM_V51; + +typedef enum tagNET_SDK_LOCAL_CFG_TYPE +{ + NET_SDK_LOCAL_CFG_TYPE_TCP_PORT_BIND = 0, //TCP˿ڰãӦṹNET_DVR_LOCAL_TCP_PORT_BIND_CFG + NET_SDK_LOCAL_CFG_TYPE_UDP_PORT_BIND, //UDP˿ڰãӦṹNET_DVR_LOCAL_UDP_PORT_BIND_CFG + NET_SDK_LOCAL_CFG_TYPE_MEM_POOL, //ڴرãӦṹNET_DVR_LOCAL_MEM_POOL_CFG + NET_SDK_LOCAL_CFG_TYPE_MODULE_RECV_TIMEOUT, //ģóʱʱ䣬ӦṹNET_DVR_LOCAL_MODULE_RECV_TIMEOUT_CFG + NET_SDK_LOCAL_CFG_TYPE_ABILITY_PARSE, //Ƿʹ⣬ӦṹNET_DVR_LOCAL_ABILITY_PARSE_CFG + NET_SDK_LOCAL_CFG_TYPE_TALK_MODE, //ԽģʽӦṹNET_DVR_LOCAL_TALK_MODE_CFG + NET_SDK_LOCAL_CFG_TYPE_PROTECT_KEY, //ԿãӦṹNET_DVR_LOCAL_PROTECT_KEY_CFG + NET_SDK_LOCAL_CFG_TYPE_CFG_VERSION, //ڲ԰汾ͷ豸˼NET_DVR_LOCAL_MEM_POOL_CFG, ֻòʱá + NET_SDK_LOCAL_CFG_TYPE_RTSP_PARAMS, //rtspãڽṹNET_DVR_RTSP_PARAMS_CFG + NET_SDK_LOCAL_CFG_TYPE_SIMXML_LOGIN, //ڵ¼ʱʹģsupportֶ, ӦṹNET_DVR_SIMXML_LOGIN + NET_SDK_LOCAL_CFG_TYPE_CHECK_DEV, //ʱ + NET_SDK_LOCAL_CFG_TYPE_SECURITY, //SDKΰȫã + NET_SDK_LOCAL_CFG_TYPE_EZVIZLIB_PATH, //өʯͨſַ + NET_SDK_LOCAL_CFG_TYPE_CHAR_ENCODE, //13.ַشص + NET_SDK_LOCAL_CFG_TYPE_PROXYS, //ûȡ + NET_DVR_LOCAL_CFG_TYPE_LOG, //־ NET_DVR_LOCAL_LOG_CFG + NET_DVR_LOCAL_CFG_TYPE_STREAM_CALLBACK, //ص NET_DVR_LOCAL_STREAM_CALLBACK_CFG + NET_DVR_LOCAL_CFG_TYPE_GENERAL, //ͨò NET_DVR_LOCAL_GENERAL_CFG + NET_DVR_LOCAL_CFG_TYPE_PTZ, //PTZǷ豸 + NET_DVR_LOCAL_CFG_MESSAGE_CALLBACK_V51, //V51صر,ӦṹΪNET_DVR_MESSAGE_CALLBACK_PARAM_V51 (NET_DVR_SetDVRMessageCallBack_V51ϰ汾Ч) + NET_SDK_LOCAL_CFG_CERTIFICATION, //ú֤صIJӦṹṹNET_DVR_LOCAL_CERTIFICATION + NET_SDK_LOCAL_CFG_PORT_MULTIPLEX, //˿ڸãӦṹNET_DVR_LOCAL_PORT_MULTI_CFG + NET_SDK_LOCAL_CFG_ASYNC, //첽ãӦṹNET_DVR_LOCAL_ASYNC_CFG + NET_SDK_P2P_LOGIN_2C, + NET_SDK_P2P_LOGIN_2B, + NET_SDK_P2P_LOGOUT, + NET_SDK_AUDIOCAST_CFG //ù㲥 ,ӦṹNET_LOCAL_AUDIOCAST_CFG +}NET_SDK_LOCAL_CFG_TYPE; + +typedef enum tagNET_SDK_EXCEPTION_CALLBACK_TYPE +{ + NET_SDK_EXCEPTION_CALLBACK_BY_POOL = 0, //̳ͨ߳쳣ص + NET_SDK_EXCEPTION_CALLBACK_DIRECTLY = 1, //ֱ쳣صϲ +}NET_SDK_EXCEPTION_CALLBACK_TYPE; + +typedef struct tagNET_DVR_LOCAL_GENERAL_CFG +{ + BYTE byExceptionCbDirectly; //0-̳ͨ߳쳣ص1-ֱ쳣صϲ + BYTE byNotSplitRecordFile; //طźԤб浽¼ļƬ 0-ĬƬ1-Ƭ + BYTE byResumeUpgradeEnable; //ʹܣ0-رգĬϣ1- + BYTE byAlarmJsonPictureSeparate; //JSON͸ݺͼƬǷ룬0-룬1-루COMM_ISAPI_ALARMصأ + BYTE byRes[4]; // + UINT64 i64FileSize; //λByte + DWORD dwResumeUpgradeTimeout; //ʱʱ䣬λ + BYTE byAlarmReconnectMode; //0-߳Ĭϣ 1-̳߳ + BYTE byStdXmlBufferSize; //ISAPI͸ջС1-1M -Ĭ + BYTE byMultiplexing; //0-ͨӣTLSӣرն·ã1-ͨӣTLSӣ· + BYTE byFastUpgrade; //0-1- + BYTE byRes1[232]; //Ԥ +}NET_DVR_LOCAL_GENERAL_CFG, *LPNET_DVR_LOCAL_GENERAL_CFG; + +typedef struct tagNET_SDK_P2P_SERVER_2C +{ + BYTE byPlatformType; //0- 1- 2-test2 + BYTE byRes1[3]; + char *pAppID; //APP ID + char *pAuthAddr; //֤IPַ + char *pPlatformAddr; //ƽ̨IPַ + char *pUserName; //˺ + char *pPassword; // + BYTE byRes[40]; +} NET_SDK_P2P_SERVER_2C, *LPNET_DVR_P2P_SERVER_2C; + +typedef struct tagNET_SDK_P2P_SERVER_2B +{ + BYTE byPlatformType; //0- 1- 2-test2 + BYTE byRes1[3]; + char *pAppID; //APP ID + char *pAuthAddr; //֤IPַ + char *pPlatformAddr; //ƽ̨IPַ + char *pToken; //Token + BYTE byRes[44]; +} NET_SDK_P2P_SERVER_2B, *LPNET_DVR_P2P_SERVER_2B; + +typedef struct tagNET_DVR_LOCAL_ASYNC_CFG +{ + BOOL bEnable; //첽ʹܣtrue- + BYTE byRes[60]; +}NET_DVR_LOCAL_ASYNC_CFG, *LPNET_DVR_LOCAL_ASYNC_CFG; + +typedef struct tagNET_DVR_LOCAL_STREAM_CALLBACK_CFG +{ + BYTE byPlayBackEndFlag; //0-صطŽǣ1-صطŽ + BYTE byRes[255]; // +}NET_DVR_LOCAL_STREAM_CALLBACK_CFG, *LPNET_DVR_LOCAL_STREAM_CALLBACK_CFG; + +typedef void(CALLBACK *LOGCALLBACK)(char *pContent, unsigned int dwInputLen, int wLogLevel, void *pData); + +typedef struct tagNET_DVR_LOCAL_LOG_CFG +{ + WORD wSDKLogNum; + LOGCALLBACK fnCB; //־ص + void *pUserData; //ûָ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + BYTE byRes[238]; // +#else + BYTE byRes[246]; // +#endif +}NET_DVR_LOCAL_LOG_CFG, *LPNET_DVR_LOCAL_LOG_CFG; + +typedef int(CALLBACK * CHAR_ENCODE_CONVERT)(char * pInput, DWORD dwInputLen, DWORD dwInEncodeType, char *pOutput, DWORD dwOutputLen, DWORD dwOutEncodeType); + +typedef struct tagNET_DVR_LOCAL_BYTE_ENCODE_CONVERT +{ + CHAR_ENCODE_CONVERT fnCharConvertCallBack; + BYTE byRes[256]; +}NET_DVR_LOCAL_BYTE_ENCODE_CONVERT, *LPNET_DVR_LOCAL_BYTE_ENCODE_CONVERT; + +typedef struct tagNET_DVR_LOCAL_SECURITY +{ + BYTE bySecurityLevel;//˽Эͨģʽ //0-ģʽĬϣеSDK¼Эͨ1-ȫģʽMD5, RSAMD5¼У2-ȫģʽRSARSA¼У + BYTE byRes[255]; +}NET_DVR_LOCAL_SECURITY, *LPNET_DVR_LOCAL_SECURITY; + +typedef struct tagNET_DVR_LOCAL_CHECK_DEV +{ + DWORD dwCheckOnlineTimeout; //Ѳʱλms СֵΪ30sֵ120sΪ0ʱʾĬֵ(120s) + DWORD dwCheckOnlineNetFailMax; //ԭʧܵۼӴֵSDKŻصû쳣Ϊ0ʱʾʹĬֵ1 + BYTE byRes[256]; +}NET_DVR_LOCAL_CHECK_DEV,*LPNET_DVR_LOCAL_CHECK_DEV; + +typedef struct tagNET_DVR_LOCAL_PTZ_CFG +{ + BYTE byWithoutRecv; //0-豸أ1-豸 + BYTE byRes[63]; +}NET_DVR_LOCAL_PTZ_CFG, *LPNET_DVR_LOCAL_PTZ_CFG; + +typedef struct tagNET_DVR_LOCAL_CFG_VERSION +{ + BYTE byVersion; //汾Ϣ + BYTE byRes[63]; // +}NET_DVR_LOCAL_CFG_VERSION, *LPNET_DVR_LOCAL_CFG_VERSION; + +typedef struct tagNET_DVR_LOCAL_TCP_PORT_BIND_CFG +{ + WORD wLocalBindTcpMinPort; //ذTcpС˿ + WORD wLocalBindTcpMaxPort; //ذTcp˿ + BYTE byRes[60]; // +}NET_DVR_LOCAL_TCP_PORT_BIND_CFG, *LPNET_DVR_LOCAL_TCP_PORT_BIND_CFG; + + +typedef struct tagNET_DVR_LOCAL_UDP_PORT_BIND_CFG +{ + WORD wLocalBindUdpMinPort; //ذUdpС˿ + WORD wLocalBindUdpMaxPort; //ذUdp˿ + BYTE byRes[60]; // +}NET_DVR_LOCAL_UDP_PORT_BIND_CFG, *LPNET_DVR_LOCAL_UDP_PORT_BIND_CFG; + + +typedef struct tagNET_DVR_LOCAL_MEM_POOL_CFG +{ + DWORD dwAlarmMaxBlockNum; //ģڴϵͳڴ飨blockÿblockΪ64MB, ϵͳ룬0ʾ + DWORD dwAlarmReleaseInterval; //ģڴͷŵļλ룬Ϊ0ʾͷ + DWORD dwObjectReleaseInterval; //ģڴͷŵļλ룬Ϊ0ʾͷ + BYTE byRes[508]; // +}NET_DVR_LOCAL_MEM_POOL_CFG, *LPNET_DVR_LOCAL_MEM_POOL_CFG; + +typedef struct tagNET_DVR_LOCAL_MODULE_RECV_TIMEOUT_CFG +{ + DWORD dwPreviewTime; //Ԥģ鳬ʱʱ + DWORD dwAlarmTime; //ģ鳬ʱʱ + DWORD dwVodTime; //طģ鳬ʱʱ + DWORD dwElse; //ģ + BYTE byRes[512]; // +}NET_DVR_LOCAL_MODULE_RECV_TIMEOUT_CFG, *LPNET_DVR_LOCAL_MODULE_RECV_TIMEOUT_CFG; + +#define MAX_CERTIFICATE_ISSUER_LEN 64 //֤䷢߳ +#define MAX_CERTIFICATE_VALIDITY_LEN 128 //֤Чʱ䳤 +#define MAX_CERTIFICATE_SUBJECT_LEN 64 //֤߳ +typedef struct tagNET_DVR_CETTIFICATE_INFO +{ + DWORD dwSize; + char szIssuer[MAX_CERTIFICATE_ISSUER_LEN]; //֤䷢ + char szSubject[MAX_CERTIFICATE_SUBJECT_LEN]; //֤ + NET_DVR_TIME struStartTime; + NET_DVR_TIME struEndTime; + BYTE byRes1[1024]; +}NET_DVR_CETTIFICATE_INFO, *LPNET_DVR_CETTIFICATE_INFO; + +typedef BOOL(CALLBACK *fnCertVerifyResultCallBack) (DWORD uiResult, LPNET_DVR_CETTIFICATE_INFO lpCertificateInfo, char *pUserData); + +#define MAX_FILE_PATH_LEN 256 //ļ· +typedef struct tagNET_DVR_LOCAL_CERTIFICATION +{ + char szLoadPath[MAX_FILE_PATH_LEN]; + fnCertVerifyResultCallBack fnCB; + void* pUserData; + BYTE byRes[64]; +}NET_DVR_LOCAL_CERTIFICATION, *LPNET_DVR_LOCAL_CERTIFICATION; + +typedef struct tagNET_DVR_LOCAL_PORT_MULTI_CFG +{ + BOOL bEnable; //˿ڸʹܣtrue- + BYTE byRes[60]; +}NET_DVR_LOCAL_PORT_MULTI_CFG, *LPNET_DVR_LOCAL_PORT_MULTI_CFG; + +typedef struct tagNET_DVR_RTSP_PARAMS_CFG +{ + DWORD dwMaxBuffRoomNum; //rtp over udp򿪱ٵ󻺳0ΪЧʹĬֵ20 + //һڴΪ10Kһ㣬Խ࣬ԽǿԽãʱҲԽ + BYTE byUseSort; //Ƿrtp over udp 0- 1- + BYTE byRes[123]; +}NET_DVR_RTSP_PARAMS_CFG, *LPNET_DVR_RTSP_PARAMS_CFG; + +typedef struct tagNET_DVR_OPTICAL_CHANNEL_BIND +{ + WORD wChannelIndex; //ں(0-7) + WORD wSubChannel; //ͨţȡֵΧȡ + BYTE byBind; //0-󶨻󶨣1- + BYTE byRes[3]; +}NET_DVR_OPTICAL_CHANNEL_BIND,*LPNET_DVR_OPTICAL_CHANNEL_BIND; + +typedef struct tagNET_DVR_OPTICAL_CHANNEL_CFG +{ + DWORD dwSize; + NET_DVR_OPTICAL_CHANNEL_BIND struBindVideo;//Ƶ + NET_DVR_OPTICAL_CHANNEL_BIND struBindAudio;//Ƶ + BYTE byRes[16]; // +}NET_DVR_OPTICAL_CHANNEL_CFG,*LPNET_DVR_OPTICAL_CHANNEL_CFG; + +typedef struct tagNET_DVR_OPTICAL_INFO +{ + DWORD dwSize; + BYTE bySlotNum;//ϵͳλ + BYTE byChannel; //ͨ + BYTE byRes[18]; +}NET_DVR_OPTICAL_INFO,*LPNET_DVR_OPTICAL_INFO; + +//Ƶл +typedef struct tagNET_DVR_AUDIO_SURCHAN_CFG +{ + DWORD dwSize; + BYTE byStatus; //ƵǷ1-0- + BYTE byRes1[3]; + //²byStatus == 1ʱЧ + DWORD dwSubWinNum; //Ӵں + DWORD dwSurChanNum; /*ͨ */ + NET_DVR_IPADDR struIpaddr; /*ַͨ */ + WORD wPort; /*ͨ˿ */ + BYTE byRes2[14]; +}NET_DVR_AUDIO_SURCHAN_CFG, *LPNET_DVR_AUDIO_SURCHAN_CFG; + +//˿ھۺ +#define MAX_ETHERNET_PORT_NUM 8//ÿ·˿ +typedef struct tagNET_DVR_ETHERNET_CHANNEL_INFO +{ + DWORD dwSize; + BYTE byConverge[MAX_ETHERNET_PORT_NUM]; + //byConverge[i] = jʾi˿ڼ뵽j·jȡֵΪ1-8,j=0ʾƳ + BYTE byRes[32]; +}NET_DVR_ETHERNET_CHANNEL_INFO,*LPNET_DVR_ETHERNET_CHANNEL_INFO; + +// +typedef struct tagNET_DVR_SPARTAN_INFO +{ + DWORD dwSize; + BYTE bySpartanStatus; //0-Թأ1-Կ + BYTE byRes[31]; +}NET_DVR_SPARTAN_INFO,*LPNET_DVR_SPARTAN_INFO; + +typedef struct tagNET_DVR_IPADDR_FILTERCFG +{ + DWORD dwSize; + BYTE byEnable; //IPַˣ0-1- + BYTE byFilterType; //ͣ0-ã1- + BYTE byRes[18]; + BYTE byIPAddr[1024]; //IPַϢʽ192.168.1.2;192.168.1.3 +}NET_DVR_IPADDR_FILTERCFG, *LPNET_DVR_IPADDR_FILTERCFG; + +typedef struct tagNET_DVR_LOGO_OVERLAYCFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿã0-1- + BYTE byRes1[3]; + DWORD dwCoordinateX; //ͼƬʾX + DWORD dwCoordinateY; //ͼƬʾY + WORD wPicWidth; //ͼƬ + WORD wPicHeight; //ͼƬ + BYTE byLogoName[16];//Logo +}NET_DVR_LOGO_OVERLAYCFG,*LPNET_DVR_LOGO_OVERLAYCFG; + + +typedef struct tagNET_DVR_INVALID_DISK_PARAM +{ + NET_DVR_STRUCTHEAD struStructHead; + DWORD dwDiskNo; // ̺ + BYTE byDelAll; // 0-ɾdwDiskNo 1-ɾȫЧ + BYTE byres[31]; +}NET_DVR_INVALID_DISK_PARAM, *LPNET_DVR_INVALID_DISK_PARAM; + + +typedef struct tagNET_DVR_INVALID_MOUNT_DISK_PARAM +{ + NET_DVR_STRUCTHEAD struStructHead; + DWORD dwDiskNo; // ̺ + BYTE byres[32]; +}NET_DVR_MOUNT_DISK_PARAM, *LPNET_DVR_MOUNT_DISK_PARAM; + +// ӻص +typedef enum +{ + NET_SDK_CALLBACK_TYPE_STATUS = 0, // ص״ֵ̬ + NET_SDK_CALLBACK_TYPE_PROGRESS, // صֵ + NET_SDK_CALLBACK_TYPE_DATA // ص +}NET_SDK_CALLBACK_TYPE; + + +// صΪNET_SDK_CALLBACK_TYPE_STATUSʱ״ֵ̬ +typedef enum +{ + NET_SDK_CALLBACK_STATUS_SUCCESS = 1000, // ɹ + NET_SDK_CALLBACK_STATUS_PROCESSING, // + NET_SDK_CALLBACK_STATUS_FAILED, // ʧ + NET_SDK_CALLBACK_STATUS_EXCEPTION, // 쳣 + NET_SDK_CALLBACK_STATUS_LANGUAGE_MISMATCH, //IPCļ룩Բƥ + NET_SDK_CALLBACK_STATUS_DEV_TYPE_MISMATCH, //IPCļ룩豸Ͳƥ + NET_DVR_CALLBACK_STATUS_SEND_WAIT, // ͵ȴ +}NET_SDK_CALLBACK_STATUS_NORMAL; + + +//һͨ״̬ +#define NET_SDK_OKC_STATUS_SUCCESS 1000 //һóɹ +#define NET_SDK_OKC_STATUS_FAILED 1002 //һʧ + +//һCVR״̬ +#define NET_SDK_OKC_STATUS_START_CONFIG 1003 //ʼ +#define NET_SDK_OKC_CHECK_HD 1004 // +#define NET_SDK_OKC_INIT_HD 1005 //ʼ +#define NET_SDK_OKC_CREATE_RAID_OR_SINGLE_DISK 1006 //лߵģʽ +#define NET_SDK_OKC_INIT_CVR_SERVICE 1007 //ʼCVR +#define NET_SDK_OKC_CREATE_RECORD_VOLUME 1008 //¼ + +//Ϊһʧܵ״̬롪part1 +#define NET_SDK_OKC_ERR_LOAD_CONF_FAILED 1009 //ļʧ +#define NET_SDK_OKC_ERR_NOT_SUPPORT_RAID_LEVLE 1010 //ִ֧͵raid +#define NET_SDK_OKC_ERR_CONFIGURATION_CONFLICT 1011 //ϵͳѾraid洢 +#define NET_SDK_OKC_ERR_GET_DISK_INFO_FAILED 1012 //ȡϢʧ +#define NET_SDK_OKC_ERR_CHECK_DISK_FAILED 1013 //ʧ +#define NET_SDK_OKC_ERR_INIT_DISK_FAILED 1014 //ʼʧ +#define NET_SDK_OKC_ERR_DISK_CAPACITY_SMALL 1015 // +#define NET_SDK_OKC_ERR_BOTH_SV_NS 1016 //ͬʱSV̺NS +#define NET_SDK_OKC_ERR_CREATE_RAID_FAILED 1017 //raidʧ +#define NET_SDK_OKC_ERR_GET_RAID_FAILED 1018 //ȡraidʧ +#define NET_SDK_OKC_ERR_CREATE_SPARE_FAILED 1019 //ȱʧ +#define NET_SDK_OKC_ERR_CREATE_STORAGE_POOL_FAILED 1020 //洢ʧ +#define NET_SDK_OKC_ERR_GET_POOL_INFO_FAILED 1021 //ȡ洢Ϣʧ +#define NET_SDK_OKC_ERR_CREATE_LUN_FAILED 1022 //lunʧ +#define NET_SDK_OKC_ERR_GET_LUN_INFO_FAILED 1023 //ȡlunϢʧ +#define NET_SDK_OKC_ERR_CREATE_BACKUP_FAILED 1024 //Ԥʧ +#define NET_SDK_OKC_ERR_GET_BACKUP_FAILED 1025 //ȡԤʧ +#define NET_SDK_OKC_ERR_CREATE_PRIVATE_LUN_FAILED 1026 //˽оʧ +#define NET_SDK_OKC_ERR_CREATE_RV_FAILED 1027 //¼ʧ +#define NET_SDK_OKC_ERR_CREATE_ARCH_RV_FAILED 1028 //浵ʧ +#define NET_SDK_OKC_ERR_START_CVR_SERVICE_FAILED 1029 //CVRʧ + +//һSAN״̬ +#define NET_SDK_OKC_CREATING_ARRAY 1030 //н׶ +#define NET_SDK_OKC_CREATING_STORAGE_POOL 1031 //洢ؽ׶ +#define NET_SDK_OKC_CREATING_LUN_VOL 1032 //߼׶ +#define NET_SDK_OKC_CREATING_ISCSI 1033 //ISCSI׶ +#define NET_SDK_OKC_ERR_HOT_SPARE_CONFICT 1034 //Ѵȱ +#define NET_SDK_OKC_ERR_STORAGE_POOL_CONFICT 1035 //Ѵڴ洢 +#define NET_SDK_OKC_ERR_RAID_CONFLICT 1036 //ϵͳѾ +#define NET_SDK_OKC_ERR_OPEN_ISCSI_FAILED 1037 //ISCSIʧ +#define NET_SDK_OKC_ERR_DEVICE_NOSUPPORT_SAN 1038 //豸֧san + +//Ϊһʧܵ״̬롪part2 +#define NET_SDK_OKC_ERR_SAPRE_NUM_EXCEED 1101 //ȱ̸ +#define NET_SDK_OKC_ERR_CREATE_PIC_VOLUME_FAILED 1102 //ͼƬʧ + +typedef enum +{ + NET_SDK_GET_NEXT_STATUS_SUCCESS = 1000, // ɹȡݣͻ˴걾ݺҪٴεNET_DVR_RemoteConfigGetNextȡһ + NET_SDK_GET_NETX_STATUS_NEED_WAIT, // ȴ豸ݣNET_DVR_RemoteConfigGetNext + NET_SDK_GET_NEXT_STATUS_FINISH, // ȫȡ꣬ʱͻ˿ɵNET_DVR_StopRemoteConfig + NET_SDK_GET_NEXT_STATUS_FAILED, // 쳣ͻ˿ɵNET_DVR_StopRemoteConfig +}NET_SDK_GET_NEXT_STATUS; + +// ûSendwithRecvӿʱӿڷص״̬ +typedef enum +{ + NET_SDK_CONFIG_STATUS_SUCCESS = 1000, // ɹȡݣͻ˴걾ݺҪٴεNET_DVR_SendWithRecvRemoteConfigȡһ + NET_SDK_CONFIG_STATUS_NEEDWAIT, // õȴͻ˿NET_DVR_SendWithRecvRemoteConfig + NET_SDK_CONFIG_STATUS_FINISH, // ȫȡ꣬ʱͻ˿ɵNET_DVR_StopRemoteConfig + NET_SDK_CONFIG_STATUS_FAILED, // ʧܣͻ˿NET_DVR_SendWithRecvRemoteConfig·һ + NET_SDK_CONFIG_STATUS_EXCEPTION, // 쳣ʱͻ˿ɵNET_DVR_StopRemoteConfig +}NET_SDK_SENDWITHRECV_STATUS; + +//ļ +typedef enum tagNET_SDK_IPC_CFG_FILE_ERR_CODE +{ + NET_SDK_IPC_CFG_FILE_NO_ERR = 0, /* û */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_CHANNEL_INVALID = 1, /* ͨIDǷ */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_CHANNEL_DUPLICATE, /* ͨIDظ */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_IP_INVALID, /* ͨIPǷ */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_IP_DUPLICATE, /* ͨIPظ */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_IP_CONFLICT_WITH_LOCAL, /* ͨIP뱾IPͻ */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_PROTOCOL_INVALID, /* Э */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_PORT_INVALID, /* ˿ڴ */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_DEVICE_CHANNEL_ERR, /* 豸ͨŴ */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_USER_NAME_ERR, /* ûǷַ */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_PASSWD_ERR, /* 뺬Ƿַ */ + NET_SDK_IPC_CFG_FILE_ERR_CODE_TRANSPORT_PROTOCOL_INVALID /*Э*/ +}NET_SDK_IPC_CFG_FILE_ERR_CODE; + +//IPC +typedef enum +{ + NET_SDK_UPGRADE_IPC_INVALID = 0, //Чͨδѡͨ + NET_SDK_UPGRADE_IPC_SUCCESS, //ɹ + NET_SDK_UPGRADE_IPC_OFFLINE, //IPC + NET_SDK_UPGRADE_IPC_NOT_SUPPORT, //IPC֧ + NET_SDK_UPGRADE_IPC_LANGUAGE_MISMATCH, //Բƥ + NET_SDK_UPGRADE_IPC_WRITE_FLASH_FAILED, //дflshʧ + NET_SDK_UPGRADE_IPC_OTHER_ERROR // +}NET_SDK_UPGRADE_IPC_ERR_CODE; + +typedef enum +{ + NET_SDK_REMOTE_CONFIG_STATUS_SUCCESS = 1001,//¼һɹ + NET_SDK_REMOTE_CONFIG_STATUS_FAILED, //¼һʧ + NET_SDK_REMOTE_CONFIG_STATUS_PROCESSING //¼һڻȡ +}NET_SDK_REMOTE_CONFIG_STATUS; + +#define MAX_CODE_CARD_SUPPORTDISPNUMS 8//ÿ뿨ֵ֧ʾͨ +#define MAX_SUPPORT_RES 32 + +typedef enum _BOARD_TYPE +{ + DS4004HC_BOARD =2, //4004HC + DS4008HC_BOARD =3, //4008HC + DS4016HC_BOARD =4, //4016HC + DS4001HF_BOARD =5, //4001HF + DS4004HF_BOARD =6, //4004HF + DS4002MD_BOARD =7, //4002MD + DS4004MD_BOARD =8, //4004MD + DS4016HCS_BOARD =9, //4016HCS + DS4004HC_PLUS_BOARD =13, //4004HC+ + DS4008HC_PLUS_BOARD =14, //4008HC+ + DS4016HC_PLUS_BOARD =15, //4016HC+ + DS4008HF_BOARD =16, //4008HF + DS4008MD_BOARD =17, //4008MD + DS4008HS_BOARD =18, //4008HS + DS4016HS_BOARD =19, //4016HS + + DS4108HCV_BOARD =20, //4108HCV + DS4116HCV_BOARD =21, //4116HCV + DS5016HC_BOARD =22, //5016HC + + DS4208HFV_BOARD =23, //4208HFV + DS4216HC_BOARD =24, //4216HC + DS4216HFV_BOARD =25, //4216HFV + + DS5008HF_BOARD =26, //5008HF + DS5116HF_BOARD =27, //5116HF + + DS5216HC_BOARD =28, //5216HC + DS5208HF_BOARD =29, //5208HF + DS5216HF_BOARD =30, //5216HF + + DS4101HD_BOARD =31, //4101HD + DS4102HD_BOARD =32, //4102HD + DS4104HD_BOARD =33, //4104HD + + DS4002MD_PLUS_BOARD =34, //4002MD+ + DS4004MD_PLUS_BOARD =35, //4004MD+ + + DS4204HFV_BOARD =36, //4204HFV + DS4308HCV_BOARD =37, //4308HCV + DS4308HFV_BOARD =38, //4308HFV + DS4316HCV_BOARD =39, //4316HCV + DS4316HFV_BOARD =40, //4316HFV + DS4304HD_BOARD =41, //4304HD + DS4304HFH_BOARD =42, //4304HFH + DS4304HFV_BOARD =43, //4304HFV + DS4302HFH_BOARD =44, //4302HFH + DS5316HF_BOARD =45, //5316HF + DS4308HW_BOARD =46, //4308HW + DS4316HW_BOARD =47, //4316HW + DS4308MD_BOARD =48, //4308MD + UNKNOWN_BOARD_TYPE =0xffffffff, +}BOARD_TYPE; + +typedef struct tagNET_DVR_CODECARD_ABILITY /*뿨*/ +{ + BYTE byCardType; //뿨(BOARD_TYPEеö) + BYTE byCodeNums; //ͨ + BYTE byDispNums; //ʾͨ + BYTE byCodeStartIdx; //׸ͨбͨе + BYTE byDispStartIdx; //׸ʾͨʾͨе + BYTE byRes1[3]; + DWORD dwVgaSupportResolution[MAX_SUPPORT_RES/*32*/];//ֵ֧ķֱ + DWORD dwHdmiSupportResolution[MAX_SUPPORT_RES/*32*/];//ֵ֧ķֱ + DWORD dwDviSupportResolution[MAX_SUPPORT_RES/*32*/];//ֵ֧ķֱ + DWORD dwYpbprSupportResolution[MAX_SUPPORT_RES/*32*/];//ֵ֧ķֱ + BYTE byDispFormat[MAX_CODE_CARD_SUPPORTDISPNUMS]; //ֵ֧ģʽ(HD_DISPLAY_FORMATеö) + BYTE byWindowMode[MAX_CODE_CARD_SUPPORTDISPNUMS][12]; //ֵ֧Ĵģʽ(1,2,4,9,16)) + BYTE byRes2[36]; +}NET_DVR_CODECARD_ABILITY,*LPNET_DVR_CODECARD_ABILITY; + +#define MAX_CODE_CARD_NUM 8 //뿨 +typedef struct tagNET_DVR_CODESVR_ABILITY +{ + DWORD dwSize; /* ṹС */ + BYTE byCardNums; /* 뿨 */ + BYTE byStartChan; /* ʼͨ */ + BYTE byRes1[2]; + NET_DVR_CODECARD_ABILITY struCodeCardAbility[MAX_CODE_CARD_NUM]; + BYTE byRes2[64]; +}NET_DVR_CODESVR_ABILITY, *LPNET_DVR_CODESVR_ABILITY; + +typedef struct tagNET_DVR_CODER_SERVER_OUTPUT_CFG +{ + DWORD dwSize; + BYTE byDispChanType; /*ʾͨͣ0-BNC1-VGA2-HDMI3-DVI*/ //˲ֻܻȡ + BYTE byVedioFormat; /*1:NTSC,2:PAL0-NULL*/ + BYTE byRes1[2]; + DWORD dwResolution; //ֱ + DWORD dwWindowMode; /*ģʽ֧ģʽȡ*/ + BYTE byRes2[64]; +}NET_DVR_CODER_SERVER_OUTPUT_CFG,*LPNET_DVR_CODER_SERVER_OUTPUT_CFG; + +typedef struct tagNET_DVR_DISPLAY_START_INFO +{ + DWORD dwSize; + DWORD dwDisplayChan; //ʾͨ + DWORD dwCodeChan; //ͨ + DWORD dwWinNum; //ںţ1 + BYTE byEnableAudio; //Ƶ0-أ1- + BYTE byRes[31]; +}NET_DVR_DISPLAY_START_INFO,*LPNET_DVR_DISPLAY_START_INFO; + +typedef struct tagNET_DVR_CODER_WINDOW_INFO +{ + DWORD dwSize; + DWORD dwDisplayChan;//ʾͨ + DWORD dwWinNum; //ںţ1ʼ + BYTE byRes[16]; +}NET_DVR_CODER_WINDOW_INFO,*LPNET_DVR_CODER_WINDOW_INFO; + +typedef struct tagNET_DVR_WINDOW_STATUS +{ + DWORD dwSize; //ṹС + DWORD dwCodeChan; /*ͨ*/ + BYTE byDisplay; /*Ƿ0-1-*/ + BYTE byAudio; /*ƵǷ,0-1-*/ + BYTE byRes[30]; +}NET_DVR_WINDOW_STATUS,*LPNET_DVR_WINDOW_STATUS; + +typedef struct tagNET_DVR_RECORD_LOCK_PERCENTAGE +{ + DWORD dwSize; //ṹС + BYTE byPercentage; //ٷֱȣȡֵΧ[0,100] + BYTE byRes[31]; // +}NET_DVR_RECORD_LOCK_PERCENTAGE, *LPNET_DVR_RECORD_LOCK_PERCENTAGE; + +typedef struct tagNET_DVR_UPDATE_RECORD_INFO +{ + DWORD dwSize; //ṹС + NET_DVR_STREAM_INFO struStreasmInfo; //ID + DWORD dwBeginTime; //¼ܵĿʼʱ + DWORD dwEndTime; //¼ܵĽʱ + BYTE byRes[32]; // +}NET_DVR_UPDATE_RECORD_INFO, *LPNET_DVR_UPDATE_RECORD_INFO; + +typedef struct tagNET_DVR_CMD_TRIGGER_PERIOD_RECORD_PARA +{ + NET_DVR_STREAM_INFO struStreamInfo; + DWORD dwCmdType; //ⲿ + DWORD dwRecordTimeLen; //¼ʱ䣬λ + BYTE byEventID[MAX_EVENTID_LEN]; //¼IDΪϢ + DWORD dwLockDuration; //ʱ䣬λ룬0xffffffff- 0- + BYTE byBackUp; //Ƿ浵0-浵1-浵 + BYTE byPreRecord; //ǷԤ¼0-Ԥ¼1-Ԥ¼ + BYTE byRes[122]; +}NET_DVR_CMD_TRIGGER_PERIOD_RECORD_PARA, *LPNET_DVR_CMD_TRIGGER_PERIOD_RECORD_PARA; + +typedef struct tagNET_DVR_LOCK_FILE_BY_NAME_PARA +{ + BYTE byFileName[NAME_LEN]; // ¼ļЭֻ32ļ + DWORD dwLockDuration; // ʱ,λ룬0xffffffffʾ + BYTE byRes[512]; +}NET_DVR_LOCK_FILE_BY_NAME_PARA, *LPNET_DVR_LOCK_FILE_BY_NAME_PARA; + + +typedef struct tagNET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struStreamInfo; + DWORD dwStreamType; //ͣ0-1-2-¼ͣ3-3ԶͨGET /ISAPI/Streaming/channels//customStreamȡǰͨѾӵԶIDԶΪ6~10ֵ6~10 + BYTE byRes[32]; +}NET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND, *LPNET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND; + + +typedef struct tagNET_DVR_MULTI_STREAM_COMPRESSIONCFG +{ + DWORD dwSize; + DWORD dwStreamType; //ͣ0-1-2-¼ͣ3-3 + NET_DVR_COMPRESSION_INFO_V30 struStreamPara; //ѹ + DWORD dwResolution; //ֱС255ʱbyResolutionһ£255ʱԸֶηֵжϡ + BYTE byRes[76]; +}NET_DVR_MULTI_STREAM_COMPRESSIONCFG, *LPNET_DVR_MULTI_STREAM_COMPRESSIONCFG; + +typedef struct tagNET_DVR_PUSHALARMINFO_V40 +{ + DWORD dwAlarmType; /*0-ź,1-Ӳ,2-źŶʧ,3ƶ,4Ӳδʽ,5-дӲ̳,6-ڵ,7-ʽƥ, 8-Ƿ, 9-Ƶź쳣10-¼쳣 11- ܳ仯 12-쳣 */ + union + { + BYTE byRes[300]; + struct + { + DWORD dwAlarmInputNumber; /*λ,0λӦ0˿,dwAlarmTypeΪ0ʱҪ*/ + BYTE byAlarmOutputNumber[MAX_ALARMOUT_V30]; /*λ,0λӦ0˿, */ + BYTE byAlarmRelateChannel[MAX_CHANNUM_V30]; /*λ,0λӦ0ͨ*/ + BYTE byRes1[97]; + BYTE byDeviceID[NAME_LEN]; /*豸ID*/ + BYTE byRes2[7]; + }struIOAlarm; + struct + { + BYTE byStreamID[STREAM_ID_LEN]; // IDϢ + BYTE byRes1[132]; + BYTE byChannel[MAX_CHANNUM_V30]; /*λ,0x2ʾ1ͨ1λӦ1ͨ(ͨ1ʼ)dwAlarmTypeΪ23, 6910ʱҪ, */ + BYTE byRes2[33]; + BYTE byDeviceID[NAME_LEN]; /*豸ID*/ + BYTE byRes3[7]; + }struStreamIDorChannel; + struct + { + BYTE byRes1[228]; + BYTE byDiskNumber[MAX_DISKNUM_V30]; /*λ,0λӦ0Ӳ,dwAlarmTypeΪ1,4,5ʱҪ*/ + BYTE byDeviceID[NAME_LEN]; /*豸ID*/ + BYTE byRes2[7]; + }struDiskAlarm; + }uAlarmInfo; +}NET_DVR_PUSHALARMINFO_V40, *LPNET_DVR_PUSHALARMINFO_V40; + +typedef struct tagNET_DVR_RECORD_PACK +{ + NET_DVR_STRUCTHEAD struStruceHead; + DWORD dwPackageInterval; // ʱ ʱ䵥λ + BYTE byRes[32]; // +}NET_DVR_RECORD_PACK,*LPNET_DVR_RECORD_PACK; + +#define NET_DVR_FIND_NAS_DIRECTORY 6161 //NASĿ¼ +#define NET_DVR_NAS_FINDING 0 //ڲ +#define NET_DVR_NAS_RECV 1 // +#define NET_DVR_NAS_OVER 2 //ҽ +#define NET_DVR_NAS_EXCEPTION 3 //쳣 +typedef struct tagNET_DVR_NET_DISK_SERACH_PARAM +{ + NET_DVR_IPADDR struIP; // IPַ + WORD wPort; // IP˿ + BYTE byRes[10]; // ֽ +}NET_DVR_NET_DISK_SERACH_PARAM, *LPNET_DVR_NET_DISK_SERACH_PARAM; + + +typedef struct tagNET_DVR_NET_DISK_SERACH_RET +{ + BYTE byDirectory[128]; // صļĿ¼ + BYTE byRes[20]; +}NET_DVR_NET_DISK_SERACH_RET, *LPNET_DVR_NET_DISK_SERACH_RET; + +typedef struct tagNET_DVR_WD1_CFG +{ + NET_DVR_STRUCTHEAD struStruceHead; + BYTE byWD1Enable; //WD1ʹܿ 0 ر 1 + BYTE byRes[31]; // +}NET_DVR_WD1_CFG, *LPNET_DVR_WD1_CFG; + +typedef struct tagNET_DVR_FTPCFG_V40 +{ + NET_DVR_STRUCTHEAD struStruceHead; + BYTE byEnableFTP; /*Ƿftpϴܣ0-1-*/ + BYTE byProtocolType; /*Э 0-FTP1-SFTP*/ + WORD wFTPPort; /*˿*/ + union + { + struct + { + BYTE szDomain[64]; //ַʹIPv4 IPv6 + BYTE byRes1[80]; + }struDomain; + struct + { + NET_DVR_IPADDR struIp; /*IPַ:IPv4 IPv6ַ, 144ֽ*/ + }struAddrIP; + }unionServer; //ʹṹֹIPַ + BYTE szUserName[32]; /*û*/ + BYTE szPassWORD[16]; /**/ + BYTE szTopCustomDir[64]; /*ԶһĿ¼*/ + BYTE szSubCustomDir[64]; /*ԶĿ¼*/ + BYTE byDirLevel; /*0 = ʹĿ¼ṹֱӱڸĿ¼, 1 = ʹ1Ŀ¼,2=ʹ2Ŀ¼*/ + BYTE byTopDirMode; /* һĿ¼0x1 = ʹ豸,0x2 = ʹ豸,0x3 = ʹ豸ipַ + 0x4=ʹü,0x5=ʹʱ(),0x6-ʹԶ ,0x7=Υ,0x8=,0x9=ص*/ + BYTE bySubDirMode; /*Ŀ¼0x1=ʹͨ,0x2=ʹͨ 0x3=ʹʱ(), + 0x4=ʹó,0x5-ʹԶ, 0x6=Υ,0x7=,0x8=ص,0x9 = λ*/ + BYTE byType; /* 0-1-*/ + BYTE byEnableAnony; /* 0- 1*/ + BYTE byAddresType; /*0 ʹIPV4IPV6 1- ʹ*/ + BYTE byFTPPicType; //0-1-ͣץͼƬ + BYTE byPicArchivingInterval; //ͼƬ鵵[1~30],0ʾر + NET_DVR_PICTURE_NAME_EX struPicNameRule; /* ͼƬ: + byFTPPicType ==1ʱ,ڵͣץͼƬ*/ + BYTE byPicNameRuleType; //ͼƬͣ0~Ĭͣ1~ͼƬǰ׺(struPicNameRuleеbyPicNamePrefixֶ) + BYTE byRes[203]; /**/ +}NET_DVR_FTPCFG_V40, *LPNET_DVR_FTPCFG_V40; + +typedef struct tagNET_DVR_FTP_TYPE +{ + BYTE byType; // 0-1- + BYTE byRes[3]; +}NET_DVR_FTP_TYPE, *LPNET_DVR_FTP_TYPE; + +//FTPԲṹ +typedef struct +{ + DWORD dwSize; + BYTE byEnableFTP; /*Ƿftpϴܣ0-1-*/ + BYTE byProtocolType; /*Э 0-FTP1-SFTP*/ + WORD wFTPPort; /*˿*/ + union + { + BYTE byRes[144]; + struct + { + BYTE szDomain[MAX_DOMAIN_NAME]; //ַʹIPv4 IPv6 + BYTE byRes1[80]; + }struDomain; + struct + { + NET_DVR_IPADDR struIp; /*IPַ:IPv4 IPv6ַ, 144ֽ*/ + }struAddrIP; + }unionServer; //ʹṹֹIPַ + + BYTE szUserName[NAME_LEN]; /*û*/ + BYTE szPassWORD[PASSWD_LEN]; /**/ + BYTE szTopCustomDir[MAX_CUSTOM_DIR]; /*ԶһĿ¼*/ + BYTE szSubCustomDir[MAX_CUSTOM_DIR]; /*ԶĿ¼*/ + BYTE byDirLevel; /*0 = ʹĿ¼ṹֱӱڸĿ¼, 1 = ʹ1Ŀ¼,2=ʹ2Ŀ¼*/ + BYTE byTopDirMode; /* һĿ¼0x1 = ʹ豸,0x2 = ʹ豸,0x3 = ʹ豸ipַ + 0x4=ʹü,0x5=ʹʱ(),0x6-ʹԶ ,0x7=Υ, + 0x8=,0x9=ص*/ + BYTE bySubDirMode; /*Ŀ¼0x1=ʹͨ,0x2=ʹͨ 0x3=ʹʱ(), + 0x4=ʹó,0x5-ʹԶ, 0x6=Υ,0x7=,0x8=ص, + 0x9 = λ*/ + BYTE byType; /* 0-1-*/ + BYTE byEnableAnony; /* 0- 1*/ + BYTE byAddresType; /*0 ʹIPV4IPV6 1- ʹ*/ + + BYTE byRes2[198]; +}NET_DVR_FTP_SERVER_TEST_PARA, *LPNET_DVR_FTP_SERVER_TEST_PARA; + +#define NET_SDK_ACCESS_KEY_LEN 64 //볤 +#define NET_SDK_SECRET_KEY_LEN 64 //볤 + +//Խṹ +typedef struct tagNET_DVR_SERVER_TEST_PARA +{ + DWORD dwSize; + union + { + BYTE byRes[740]; + struct + { + NET_DVR_NTPPARA struNtpPara; /*NTPԲ80ֽ*/ + BYTE byRes1[660]; + }struNtpPara; + struct + { + NET_DVR_SINGLE_NET_DISK_INFO_V40 struNasPara; /*NASԲ480ֽ*/ + BYTE byRes1[260]; + }struNasPara; + struct + { + NET_DVR_FTP_SERVER_TEST_PARA struFtpPara; /*FTPԲ528ֽ*/ + BYTE byRes1[212]; + }struFtpPara; + struct + { + NET_DVR_EMAILCFG_V30 struEmailPara; /*EmailԲ660ֽ*/ + BYTE byRes1[80]; + }struEmailPara; + struct + { + NET_DVR_IPADDR struIp; /*IPͻԲ24ֽ*/ + BYTE byRes1[716]; + }struIpPara; + struct + { + NET_DVR_IPADDR struIPAdder; + WORD wPort; //˿ں + BYTE byRes2[2]; + char szUser[CLOUD_NAME_LEN/*48*/]; //û + char szPassword[CLOUD_PASSWD_LEN/*48*/]; // + NET_DVR_POOLPARAM struPoolInfo[16];// 0ʾͼƬݳأ1ʾΥͼƬݳأ2ʾݳأIPC/D + BYTE byProtocolType;//ƴ洢Э汾0- 1.0汾1- 2.0汾 + BYTE byRes3[3]; + char szAccessKey[NET_SDK_ACCESS_KEY_LEN/*64*/]; // + char szSecretKey[NET_SDK_SECRET_KEY_LEN/*64*/]; // + BYTE byRes1[354]; + }struCloudStoragePara; + struct + { + BYTE byPhoneNum[MAX_PHONE_NUM/*32*/]; + BYTE byRes1[708]; + }struPhoneNumPara;//Ų + }unionServerPara; + BYTE byRes2[800]; +}NET_DVR_SERVER_TEST_PARA, *LPNET_DVR_SERVER_TEST_PARA; + +typedef struct tagNET_DVR_GOP_INFO //ȡGOPϢṹ,ʱʹ +{ + DWORD dwSize; //ṹС + LONG lChannel; //ͨ + NET_DVR_TIME_EX struStartTime; //ʼʱ + NET_DVR_TIME_EX struEndTime; //ʱ + BYTE byRes[256]; // ֽ +}NET_DVR_GOP_INFO, *LPNET_DVR_GOP_INFO; + +typedef struct tagNET_DVR_GOP_INFO_RET +{ + NET_DVR_TIME_V30 struGopTime; //GopϢʱ + DWORD dwDuration; //Ϣʱ + DWORD dwDataSize; //ָpBufС + BYTE byRes[128]; + char* pBuf;//GopϢ +}NET_DVR_GOP_INFO_RET, *LPNET_DVR_GOP_INFO_RET; + +typedef struct tagNET_DVR_GOP_INFO_PASSBACK //Ϣ +{ + DWORD dwSize; //ṹС + NET_DVR_TIME_V30 struTime; //ʼʱ,ΪԪʱʾĿʼʱ䣬ΪͼʱʾͼƬʱ + DWORD dwDuration; //Ϣʱ䣬ΪԪʱЧ + DWORD dwMetaDataSize; //ԴĴС + DWORD dwPicDataSize; //ͼƬݴС + char* pMetaDataBuffer; //Ԫݻ + char* pPicDataBuf; //ͼƬ + BYTE byRes[32]; +}NET_DVR_GOP_INFO_PASSBACK, *LPNET_DVR_GOP_INFO_PASSBACK; + +typedef struct tagNET_DVR_SINGLEWALLPARAM +{ + DWORD dwSize; + BYTE byEnable; + BYTE byRes1[3]; + DWORD dwWallNum;//ǽ + //Ϊ׼128128Ⱥ͸߶ֵãΪ׼ֵ + NET_DVR_RECTCFG struRectCfg; + BYTE byRes2[36]; +}NET_DVR_SINGLEWALLPARAM, *LPNET_DVR_SINGLEWALLPARAM; + +/*Ϣ*/ +typedef struct tagNET_DVR_WALLWINCFG +{ + DWORD dwSize; + BYTE byEnable; + BYTE byRes1[7]; + DWORD dwWinNum;//ں + DWORD dwLayerIndex;//Ӧͼ + NET_DVR_RECTCFG struWinPosition;//ĿĴ(ʾǽ) + DWORD dwDeviceIndex;//ֲʽ豸 + WORD wInputIndex;//źԴ + BYTE byRes2[14]; +}NET_DVR_WALLWINCFG, *LPNET_DVR_WALLWINCFG; + +typedef struct tagNET_DVR_WALL_INDEX +{ + DWORD dwSize; + BYTE byWallNo; //ǽţ1ʼ + BYTE bySceneNo; // + BYTE byRes1[2]; + DWORD dwDeviceID; //ֲʽ豸ID + DWORD dwWindowNo; ///źԴ + BYTE byRes2[32]; +}NET_DVR_WALL_INDEX, *LPNET_DVR_WALL_INDEX; + +typedef struct tagNET_DVR_WALLWINPARAM +{ + DWORD dwSize; + BYTE byTransparency; //ʹ͸ȣ0-أ0- + BYTE byWinMode;//ڷģʽȡ + BYTE byEnableSpartan;//ʹܣ0-أ1- + BYTE byDecResource; //ΪڷĽԴ1-D1,2-720P,3-1080P + BYTE byWndShowMode; //ʾģʽ0-ֶβã1-Ӵģʽ2-Ӵȫģʽ + BYTE byEnabledFeature; //Ƿóд0-ã!0- + BYTE byFeatureMode; //дģʽóдʱЧ0-Ч1-1+5ģʽ + BYTE byRes1; + DWORD dwAmplifyingSubWndNo; //ȫӴںţ1ֽǽ+1ֽӴں+2ֽڴںţ + //byWndShowModeΪ2ʱЧʾǰȫʾӴ + BYTE byWndTopKeep; //ö֣0-֣1- + BYTE byWndOpenKeep; //ڴ򿪱֣0-֣1- + BYTE byRes[22]; +}NET_DVR_WALLWINPARAM, *LPNET_DVR_WALLWINPARAM; + +typedef struct tagNET_DVR_WALLSCENECFG +{ + DWORD dwSize; + BYTE sSceneName[NAME_LEN]; // + BYTE byEnable; //ǷЧ0-Ч1-Ч + BYTE bySceneIndex; //ţֻܻȡȡгʱʹøò + BYTE byRes [78]; +}NET_DVR_WALLSCENECFG, *LPNET_DVR_WALLSCENECFG; + +typedef struct tagNET_DVR_WALLWIN_INFO +{ + DWORD dwSize; + DWORD dwWinNum; //ں + DWORD dwSubWinNum;//Ӵں + DWORD dwWallNo; //ǽ + BYTE byRes[12]; +}NET_DVR_WALLWIN_INFO,*LPNET_DVR_WALLWIN_INFO; + +typedef struct tagNET_DVR_WALL_WIN_STATUS +{ + DWORD dwSize ; + BYTE byDecodeStatus; /*ǰ״̬:0:δ,1 :*/ + BYTE byStreamType; /**/ + BYTE byPacketType; /*ʽ*/ + BYTE byFpsDecV; /*Ƶ֡*/ + BYTE byFpsDecA; /*Ƶ֡*/ + BYTE byRes1[7]; + DWORD dwDecodedV; /*Ƶ֡*/ + DWORD dwDecodedA; /*Ƶ֡*/ + WORD wImgW; /*ǰԴͼС*/ + WORD wImgH; + BYTE byStreamMode ; //Դ(˲Ƶۺƽ̨Ч)1-磬2-ۺƽ̨ڲϵͳ3-Ļ0xff-Ч + BYTE byRes2[31]; +}NET_DVR_WALL_WIN_STATUS, *LPNET_DVR_WALL_WIN_STATUS; + +typedef struct tagNET_DVR_WININDEX_INFO +{ + DWORD dwWinIndex; //ں + DWORD dwSubWinIndex;//Ӵں + BYTE byType ;//Դͣ1-룬2- + BYTE byWallNo ; //ǽ + BYTE byRes[6]; +}NET_DVR_WININDEX_INFO, *LPNET_DVR_WININDEX_INFO; + +typedef struct tagNET_DVR_ASSOCIATEDDEV_CHAN_INFO +{ + DWORD dwSize ; + BYTE sAddress[MAX_DOMAIN_NAME];//ipַ + WORD wDVRPort; /* ˿ں */ + WORD wChannel; /* ͨ */ + BYTE sUserName[NAME_LEN]; /* ½ʺ */ + BYTE sPassword[PASSWD_LEN]; /* */ + BYTE byRes[24]; +}NET_DVR_ASSOCIATEDDEV_CHAN_INFO,*LPNET_DVR_ASSOCIATEDDEV_CHAN_INFO; + +typedef struct tagNET_DVR_WALLOUTPUTPARAM +{ + DWORD dwSize; + DWORD dwResolution; //ֱ + NET_DVR_VIDEOEFFECT struRes; + BYTE byVideoFormat; //ƵʽVIDEO_STANDARD + BYTE byDisplayMode;/*ģʽ,1-BNC2-VGA3-HDMI4-DVI5-SDI, 6-FIBER, 7-RGB, 8-YPrPb, 9-VGA/HDMI/DVIӦ0xff-Ч*/ + BYTE byBackgroundColor; //ɫ0-Чֱ֧ɫ1-죬2-̣3-4-ƣ5-ϣ6-࣬7-ڣ8-ף0xff-Զ + BYTE byUseEDIDResolution; //ǷʹEDIDֱʣ0-ʹã1-ʹ + WORD wLEDWidth; //LEDֱʿ + WORD wLEDHeight; //LEDֱʸ + NET_DVR_RGB_COLOR struBackColor;//ɫbyBackgroundColorΪ0xffʱЧ + BYTE byLinkStatus;//״̬0-Ч,1-ʾ,2-δʾ + BYTE byRes2[51]; +}NET_DVR_WALLOUTPUTPARAM, *LPNET_DVR_WALLOUTPUTPARAM; + +#define MAX_UNITEDMATRIX_NUM 8 //Ƶۺƽ̨ + +typedef struct NET_DVR_SUBMATRIXSYSTEMINFO +{ + //ƽ̨ţ0ʾ޴ƽ̨ + DWORD dwSequence; + BYTE sAddress[MAX_DOMAIN_NAME];//ipַ + WORD wSubMatrixPort; /*ϵͳ˿ں*/ + BYTE byRes1[6]; + BYTE sUserName[NAME_LEN]; /*û*/ + BYTE sPassword[PASSWD_LEN]; /* */ + BYTE byRes2[36]; +}NET_DVR_SUBMATRIXSYSTEMINFO,*LPNET_DVR_SUBMATRIXSYSTEMINFO; + +typedef struct tagNET_DVR_UNITEDMATRIXSYSTEMINFO +{ + DWORD dwSize; + //Ƶۺƽ̨Ϣ + NET_DVR_SUBMATRIXSYSTEMINFO struMatrixInfo[MAX_UNITEDMATRIX_NUM]; + BYTE byRes[32]; +}NET_DVR_UNITEDMATRIXSYSTEMINFO,*LPNET_DVR_UNITEDMATRIXSYSTEMINFO; + +typedef struct tagNET_DVR_SUBSTREAM_SWITCH_CFG +{ + BYTE byAutoSwitchEnable; //Զл0 - ã1 - + BYTE byRes1[3]; + WORD wSubWndWidth; //Ӵڿ趨ֵbyAutoSwitchEnableΪ1ʱЧ + WORD wSubWndHeight; //Ӵڸ߶趨ֵbyAutoSwitchEnableΪ1ʱЧ +}NET_DVR_SUBSTREAM_SWITCH_CFG, *LPNET_DVR_SUBSTREAM_SWITCH_CFG; + +typedef struct tagNET_DVR_WALL_CFG +{ + DWORD dwSize; + BYTE byTransparency;//͸,0-100,0Ϊ͸ + BYTE byWinStaticMode; //ڽֹͣʾģʽ1-(֮ǰǺɫ)2-ʾһ֡ͼ + BYTE byStreamFailedMode; //ȡʧʾģʽ1-Ƶźš2-ʾһ֡ͼ3-쳣4- + BYTE byEnabledOverlayLogo; //ʱǷLOGOʾû0-ӣ!0- + NET_DVR_SUBSTREAM_SWITCH_CFG struSubStreamSwitch; //л + BYTE byLEDShowMode; //LEDʾģʽ0-ͨģʽ1-ƽģʽ + BYTE byLowLatencyMode; //ʱģʽ0-ͨģʽ1-ʱģʽ + BYTE byRes[50]; +}NET_DVR_WALL_CFG, *LPNET_DVR_WALL_CFG; + +typedef struct tagNET_DVR_LEDDISPLAYINFO +{ + DWORD dwSize; + BYTE byAddressType; //0-ʵipv4 ipv6ַ 1- + BYTE byRes1[3]; + // unionServerʹʵʵַ + union + { + struct + { + BYTE szDomain[MAX_DOMAIN_NAME/*64*/];//ַ + BYTE byRes1[80]; + }struDomain; + struct + { + NET_DVR_IPADDR struIp;/*IPַ*/ //IPv4 IPv6ַ, 144ֽ + } struAddrIP; + }unionServer; //ʹṹͨbyAddressTypeֶαʾIPַ 64 + char szDisplayInfo[MAX_LEDDISPLAYINFO_LEN/*1024*/]; + BYTE byRes[128]; +}NET_DVR_LEDDISPLAYINFO,*LPNET_DVR_LEDDISPLAYINFO; + + +typedef struct tagNET_DVR_LOW_LIGHT_CFG +{ + DWORD dwSize; + BYTE byLowLightLimt; /* նȵӿ: 0-أ1- */ + BYTE byLowLightLimtLevel; + /*0-أ1-*22-*33-*44-*65-*86-*127-*16 + 8-*249-*3210-*4811-*6412-*9613-*12814-*256 + 15-*512, 16-*1.25, 17-*1.5 */ + BYTE byRes[66]; +}NET_DVR_LOW_LIGHT_CFG, *LPNET_DVR_LOW_LIGHT_CFG; + +typedef struct tagNET_DVR_FOCUSMODE_CFG +{ + DWORD dwSize; + BYTE byFocusMode; /* ۽ģʽ0-Զ1-ֶ2-Զ */ + BYTE byAutoFocusMode; /* Զ۽ģʽ0-أ1-ģʽA2-ģʽB3-ģʽAB4-ģʽC Զ۽ģʽҪھ۽ģʽΪԶʱʾ*/ + WORD wMinFocusDistance; /* С۽룬λCM, 0-Զ0xffff-Զ */ + BYTE byZoomSpeedLevel; /* 䱶ٶȣΪʵȡֵ1-3 */ + BYTE byFocusSpeedLevel; /* ۽ٶȣΪʵȡֵ1-3 */ + BYTE byOpticalZoom; /* ѧ䱶0-255 */ + BYTE byDigtitalZoom; /* ֱ䱶0-255 */ + float fOpticalZoomLevel; /* ѧ䱶(ֵ) [1,32], С0.5 ڲ豸ʱ*1000 */ + DWORD dwFocusPos;/* dwFocusPos focusֵ۽ֵΧΪ[0x1000,0xC000]ֵsonyֵʹֵΪ˶ͳһ֤ͬľͷfocusֵתΧ (ֶ۽ģʽӦ)*/ + BYTE byFocusDefinitionDisplay;// ۽ʾ0~ʾ1~ʾ, ʾǰͷĿֵڰͻʹץܹﵽЧԽԽȷΧΪ0~100.0000 + BYTE byFocusSensitivity; //۽ȣΧ[0,2]۽ģʽΪԶԶʱЧ + BYTE byRes1[2]; + DWORD dwRelativeFocusPos;//focusֵ16λʾ۽ֵ0~400016λǰ۽ֵȡʱ¶ֵ + BYTE byRes[48]; +}NET_DVR_FOCUSMODE_CFG, *LPNET_DVR_FOCUSMODE_CFG; + +typedef struct tagNET_DVR_INFRARE_CFG +{ + DWORD dwSize; + BYTE byIrControlMode; /* -ģʽ0-Զ1-ֶ */ + BYTE byIrBrightness; /* -ȣ0-100 */ + BYTE byIrSensitivity; /* -ȣ0-100 */ + BYTE byIrTrigMode; /* ģʽ 0-о1- ԶģʽЧ*/ + BYTE byIrBrightnessLimit;/* ֵΪ80ʾǵǰƵΪԭȸԶԼֵ80% ԶģʽЧ*/ + BYTE byRes[63]; +}NET_DVR_INFRARE_CFG, *LPNET_DVR_INFRARE_CFG; + +typedef struct tagNET_DVR_AEMODECFG +{ + DWORD dwSize; + int iIrisSet; /* ȦΪʵȡֵ*100ֵ0- */ + int iGainSet; /* 棬عⲹΪʵȡֵ*100ֵпǸֵ */ + int iGainLimit;/* ƣعⲹΪʵȡֵ*100ֵпǸֵ */ + int iExposureCompensate; /* عⲹΪʵȡֵ*100ֵ105010.5dB, -750-7.5dB */ + BYTE byExposureModeSet; /* عģʽ,0-ֶģʽ1-Զع⣬2-Ȧȣ3-ȣ4- */ + BYTE byShutterSet; /* ţ0-أ1-Զx12-Զx23-Զx44-Զx85-Զx166-Զx327-Զx648-Զx1289-1/110-1/2 + 11-1/312-1/413-1/614-1/815-1/1216-1/1517-1/2518-1/3019-1/5020-1/6021-1/75 + 22-1/9023-1/10024-1/12025-1/12526-1/15027-1/18028-1/20029-1/21530-1/25031-1/300 + 32-1/35033-1/42534-1/50035-1/60036-1/72537-1/100038-1/125039-1500,40-1/175041-1/2000 + 42-1/250043-3000,44-1/350045-1/400046-1/600047-1/1000048-1/3000049-1/100000,50-1/175 + 51-1/19552-1/22553-1/230 */ + BYTE byImageStabilizeLevel; /* ȼ: 0-3 */ + BYTE byCameraIrCorrect; /* У: 0-Զ1-2, */ + BYTE byHighSensitivity; /* : 0-أ1- */ + BYTE byInitializeLens; /* ʼͷ: 0-أ1- */ + BYTE byChromaSuppress; /* ɫ :0-255*/ + BYTE byMaxShutterSet; //ֵ;ֵbyShutterSetͬ(Զع⡢ȦģʽЧ) + BYTE byMinShutterSet; //Сֵ;ֵbyShutterSetͬ(Զع⡢ȦģʽЧ) + BYTE byMaxIrisSet; //Ȧֵ(Զع⡢ģʽ) [0,100] ; + BYTE byMinIrisSet; //СȦֵ(Զع⡢ģʽ) [0,100] ; + BYTE byExposureLevel;//عȼعģʽΪԶȦȡЧȼ1-5 Ĭ4ϰ汾SDK豸ʱֽΪ0ֽΪ0ʱҲĬΪعȼΪ1 + BYTE byRes[60]; +}NET_DVR_AEMODECFG, *LPNET_DVR_AEMODECFG; + +typedef struct tagNET_DVR_FLASH_CFG +{ + DWORD dwSize; + DWORD dwChan;//ͨ + DWORD dwInNumbers;// + DWORD dwOutNumbers;//뿪 + DWORD dwStartTime;//ʼʱ + DWORD dwEndTime;//ʱ + DWORD dwEhomeFlag;// + DWORD dwAlarmFlag;// + BYTE byRes[1024]; +}NET_DVR_FLASH_CFG, *LPNET_DVR_FLASH_CFG; + +typedef struct tagNET_DVR_EXTERNAL_MATRIX_CFG +{ + DWORD dwSize; + BYTE byValid; // ЧʱΪãЧʱΪɾ + BYTE byRes1[3]; + BYTE sMatrixName[NAME_LEN/*32*/]; // + DWORD dwMatrixID; // IDţֻܻȡ + WORD wMatrixInputChanNum; // ͨĿ + WORD wMatrixOutputChanNum; // ͨĿ + WORD wMatrixOutputChanRef[MAX_CAM_COUNT]; //// 豸;İ󶨹ϵ±ʾ豸ͨţԪصֵʾͨţ + //Ԫֵ0 ʾ󶨾ͨԪֵΪ0ʱʾ󶨣ĻΪĻź;İ󶨹ϵ + BYTE byMatrixChanType;// ͨ1-BNC2-VGA3-RGB4-DVI + BYTE byMatrixProtocol; // Э1ZT1.02.ZT2.03.Extron4.Creator + BYTE byMatrixType; //1-ģ2-־ + BYTE byRes2; + NET_MATRIX_UNION struMatrixUnion; + BYTE byRes3[128]; +}NET_DVR_EXTERNAL_MATRIX_CFG, *LPNET_DVR_EXTERNAL_MATRIX_CFG; + +typedef struct tagNET_DVR_EXTERNAL_MATRIX_CFG_V50 +{ + DWORD dwSize; + BYTE byValid; // ЧʱΪãЧʱΪɾ + BYTE byRes1[3]; + BYTE sMatrixName[NAME_LEN/*32*/]; // + DWORD dwMatrixID; // IDţֻܻȡ + WORD wMatrixInputChanNum; // ͨĿ + WORD wMatrixOutputChanNum; // ͨĿ + WORD wMatrixOutputChanRef[MAX_CAM_COUNT_V50]; //// 豸;İ󶨹ϵ±ʾ豸ͨţԪصֵʾͨţ + //Ԫֵ0 ʾ󶨾ͨԪֵΪ0ʱʾ󶨣ĻΪĻź;İ󶨹ϵ + BYTE byMatrixChanType;// ͨ1-BNC2-VGA3-RGB4-DVI + BYTE byMatrixProtocol; // Э1ZT1.02.ZT2.03.Extron4.Creator + BYTE byMatrixType; //1-ģ2-־ + BYTE byRes2; + NET_MATRIX_UNION struMatrixUnion; + BYTE byRes3[128]; +}NET_DVR_EXTERNAL_MATRIX_CFG_V50, *LPNET_DVR_EXTERNAL_MATRIX_CFG_V50; + + +#define MAX_INPUTNUMS 1024 +#define MAX_OUTPUTNUMS 256 +typedef struct tagNET_DVR_ASSOCIATE_INPUT_PARAM +{ + BYTE byEnable; + BYTE byRes1[3]; + DWORD dwDeviceIndex;//ֲʽ豸 + WORD wInputIndex;//źԴ + BYTE byRes2[18]; +}NET_DVR_ASSOCIATE_INPUT_PARAM, *LPNET_DVR_ASSOCIATE_INPUT_PARAM; + +typedef struct tagNET_DVR_ASSOCIATE_OUTPUT_PARAM +{ + BYTE byEnable; + BYTE byWallNo; //ǽţ1ʼ + BYTE byRes1[2]; + DWORD dwOutputIndex; //ʾ + BYTE byRes2[20]; +}NET_DVR_ASSOCIATE_OUTPUT_PARAM,*LPNET_DVR_ASSOCIATE_OUTPUT_PARAM; + +typedef struct tagNET_DVR_VCS_USER_INFO +{ + DWORD dwSize; + BYTE sUserName[NAME_LEN]; // û16ֽ + BYTE sPassWord[PASSWD_LEN]; // + NET_DVR_IPADDR struUserIP; // ûIPַ(Ϊ0ʱʾκεַ) + BYTE byMacAddr[MACADDR_LEN]; // ַ + BYTE byPriority; // ȼ1-Ա2-Ա ԱκȨޣԱû"û"Ȩ + BYTE byRes1; + DWORD dwRight;/*Զ̲Ȩޣλʾ0-֧֣1-֧֣32λȨ*/ + //bit0-ȡû + //bit1-ʾ + //bit2-ڹ + //bit3-źԴ + //bit4-ֹ + //bit5-Ԥ + //bit6-ͼ + //bit7-OSD + //bit8-Ȩ + //bit9- + //bit10-Զ + //bit11-ָĬ + //bit12-뵼ļ + //bit13-־ѯ + //bit14-Զ + //bit15-Ļ + NET_DVR_ASSOCIATE_INPUT_PARAM struInputParam[MAX_INPUTNUMS/*1024*/]; + NET_DVR_ASSOCIATE_OUTPUT_PARAM struOutputParam[MAX_OUTPUTNUMS/*256*/]; + NET_DVR_RECTCFG_EX struManageRegion; //Ļ + BYTE byWallNo; //Ļǽţֵֻ֧ǽ豸ֶЧ + BYTE byRes2[3]; + BYTE sLoginPassword[PASSWD_LEN/*16*/]; /* ½*/ + BYTE byRes[88];} NET_DVR_VCS_USER_INFO, *LPNET_DVR_VCS_USER_INFO; + +typedef struct tagNET_DVR_STREAM_MEDIA_SERVER_CFG_V41 +{ + BYTE byValid; //Ƿã0-1- + BYTE byRes1[3]; + BYTE byAddress[MAX_DOMAIN_NAME]; //IP + WORD wDevPort; /*ý˿*/ + BYTE byTransmitType; /*Э 0-TCP1-UDP*/ + BYTE byRes2[69]; +}NET_DVR_STREAM_MEDIA_SERVER_CFG_V41,*LPNET_DVR_STREAM_MEDIA_SERVER_CFG_V41; + +//豸ͨϢ +typedef struct tagNET_DVR_DEV_CHAN_INFO_V41 +{ + BYTE byAddress[MAX_DOMAIN_NAME]; //豸 + WORD wDVRPort; //˿ں + BYTE byChannel; //ͨ + BYTE byTransProtocol; //Э0-TCP1-UDP + BYTE byTransMode; //ģʽ 0 1 + BYTE byFactoryType; /*ǰ豸,ͨӿڻȡ*/ + BYTE byDeviceType; //豸(Ƶۺƽ̨ܰʹ)1-ʱƵۺƽ̨byVcaSupportChanModeֶʹýͨʾͨ2- + BYTE byDispChan;//ʾͨ,ʹ + BYTE bySubDispChan;//ʾͨͨţʱʹ + BYTE byResolution; //; 1-CIF 2-4CIF 3-720P 4-1080P 5-500wʹãݸòԴ + BYTE byUseZeroChan; //Ƿʹͨ0-1- + BYTE byRes; + BYTE sUserName[NAME_LEN]; //½ʺ + BYTE sPassword[PASSWD_LEN]; // +}NET_DVR_DEV_CHAN_INFO_V41,*LPNET_DVR_DEV_CHAN_INFO_V41; + +typedef struct tagNET_DVR_DEV_CHAN_INFO_EX +{ + BYTE byChanType; //ͨͣ0-ͨͨ,1-ͨ,2-ID3-Դ4-ͨ5-ƴͨ6-Ļ7-ֲʽԴ8-ںͨ9-Դ + BYTE byStreamId[STREAM_ID_LEN]; //IDbyChanType=29ʱֶָipcID + BYTE byRes1[3]; + DWORD dwChannel; //ͨţͨΪͨͨͨԴͨƴͨĻֲʽԴʱֶ + BYTE byRes2[24]; + BYTE byAddress[MAX_DOMAIN_NAME]; //豸 + WORD wDVRPort; //˿ں + BYTE byChannel; //ͨ,dwChannelΪ0ʱֶЧ + BYTE byTransProtocol; //Э0-TCP1-UDP + BYTE byTransMode; //ģʽ 0 1 + BYTE byFactoryType; /*ǰ豸,ͨӿڻȡ*/ + BYTE byDeviceType; //豸(Ƶۺƽ̨ܰʹ)1-ʱƵۺƽ̨byVcaSupportChanModeֶʹýͨʾͨ2- + BYTE byDispChan;//ʾͨ,ʹ + BYTE bySubDispChan;//ʾͨͨţʱʹ + BYTE byResolution; //; 1-CIF 2-4CIF 3-720P 4-1080P 5-500wʹãݸòԴ + BYTE byRes[2]; + BYTE sUserName[NAME_LEN]; //½ʺ + BYTE sPassword[PASSWD_LEN]; // +}NET_DVR_DEV_CHAN_INFO_EX,*LPNET_DVR_DEV_CHAN_INFO_EX; + +typedef struct tagNET_DVR_STREAM_MEDIA_SERVER +{ + BYTE byValid; //Ƿã0-1- + BYTE byRes1[3]; + BYTE byAddress[MAX_DOMAIN_NAME]; //IP + WORD wDevPort; /*ý˿*/ + BYTE byTransmitType; /*Э 0-TCP1-UDP*/ + BYTE byRes2[5]; +}NET_DVR_STREAM_MEDIA_SERVER,*LPNET_DVR_STREAM_MEDIA_SERVER; + +typedef struct tagNET_DVR_DEV_DDNS_INFO +{ + BYTE byDevAddress[MAX_DOMAIN_NAME]; //(IPServerhiDDNSʱкŻ߱) + BYTE byTransProtocol; //Э0-TCP1-UDP, 2-MCAST + BYTE byTransMode; //ģʽ 0 1 + BYTE byDdnsType; //ͣ0-IPServer 1Dyndns 2PeanutHull()3- NO-IP, 4- hiDDNS + BYTE byRes1; + BYTE byDdnsAddress[MAX_DOMAIN_NAME]; //DDNSַ + WORD wDdnsPort; //DDNS˿ں + BYTE byChanType; //0-ͨͨ,1-ͨ,2-ID + BYTE byFactoryType; //ǰ豸,ͨӿڻȡ + DWORD dwChannel; //ͨ + BYTE byStreamId[STREAM_ID_LEN]; //ID + BYTE sUserName[NAME_LEN]; //½ʺ + BYTE sPassword[PASSWD_LEN]; // + WORD wDevPort; //ǰ豸ͨŶ˿ + BYTE byRes2[2]; +}NET_DVR_DEV_DDNS_INFO,*LPNET_DVR_DEV_DDNS_INFO; + +typedef struct tagNET_DVR_DEC_STREAM_DEV_EX +{ + NET_DVR_STREAM_MEDIA_SERVER struStreamMediaSvrCfg; + NET_DVR_DEV_CHAN_INFO_EX struDevChanInfo; +}NET_DVR_DEC_STREAM_DEV_EX,*LPNET_DVR_DEC_STREAM_DEV_EX; + + +//DDNSʽȡ +typedef struct tagNET_DVR_DEC_DDNS_DEV +{ + NET_DVR_DEV_DDNS_INFO struDdnsInfo; + NET_DVR_STREAM_MEDIA_SERVER struMediaServer; +}NET_DVR_DEC_DDNS_DEV,*LPNET_DVR_DEC_DDNS_DEV; + +typedef union tagNET_DVR_DEC_STREAM_MODE +{ + NET_DVR_DEC_STREAM_DEV_EX struDecStreamDev; + NET_DVR_PU_STREAM_URL struUrlInfo; + NET_DVR_DEC_DDNS_DEV struDdnsDecInfo; + BYTE byRes[300]; +}NET_DVR_DEC_STREAM_MODE,*LPNET_DVR_DEC_STREAM_MODE; + +typedef struct tagNET_DVR_PU_STREAM_CFG_V41 +{ + DWORD dwSize; + BYTE byStreamMode;/*ȡģʽ0-Ч1-ͨIPȡ2-ͨURLȡ,3-̬ͨ豸ȡ*/ + BYTE byStreamEncrypt; //Ƿܴ,0-֧,1-֧ + BYTE byRes1[2]; + NET_DVR_DEC_STREAM_MODE uDecStreamMode;//ȡϢ + DWORD dwDecDelayTime;//ʱʱ䣬λ + BYTE sStreamPassword[STREAM_PASSWD_LEN]; //,Ϣ + BYTE byRes2[48]; +}NET_DVR_PU_STREAM_CFG_V41,*LPNET_DVR_PU_STREAM_CFG_V41; + +typedef struct tagNET_DVR_MATRIX_CHAN_INFO_V41 +{ + BYTE byEnable; //Ƿã0-1- + BYTE byStreamMode;/*ȡģʽ0-Ч1-ͨIPȡ2-ͨURLȡ,3-̬ͨ豸ȡ*/ + BYTE byRes[2]; + NET_DVR_DEC_STREAM_MODE uDecStreamMode;//ȡϢ +}NET_DVR_MATRIX_CHAN_INFO_V41,*LPNET_DVR_MATRIX_CHAN_INFO_V41; + +typedef struct tagNET_DVR_MATRIX_LOOP_DECINFO_V41 +{ + DWORD dwSize; + DWORD dwPoolTime; /*Ѳ*/ + NET_DVR_MATRIX_CHAN_INFO_V41 struchanConInfo[MAX_CYCLE_CHAN_V30]; + BYTE byStreamEncrypt; //Ƿܴ,0-֧,1-֧ + BYTE byRes[3]; + BYTE sStreamPassword[STREAM_PASSWD_LEN]; //,Ϣ +}NET_DVR_MATRIX_LOOP_DECINFO_V41, *LPNET_DVR_MATRIX_LOOP_DECINFO_V41; + +typedef struct tagNET_DVR_MATRIX_DEC_CHAN_INFO_V41 +{ + DWORD dwSize; + BYTE byStreamMode;/*ȡģʽ0-Ч1-ͨIPȡ2-ͨURLȡ,3-̬ͨ豸ȡ*/ + BYTE byRes1[3]; + NET_DVR_DEC_STREAM_MODE uDecStreamMode;//ȡϢ + DWORD dwPlayMode; /* 0-̬ 1ѭ 2ʱط 3ļط */ + NET_DVR_TIME StartTime; /* ʱطſʼʱ */ + NET_DVR_TIME StopTime; /* ʱطֹͣʱ */ + BYTE sFileName[128]; /* ļطļ */ + DWORD dwGetStreamMode; /*ȡģʽ:1-2-*/ + NET_DVR_MATRIX_PASSIVEMODE struPassiveMode; + BYTE byRes2[32]; +}NET_DVR_MATRIX_DEC_CHAN_INFO_V41,*LPNET_DVR_MATRIX_DEC_CHAN_INFO_V41; + +typedef struct tagNet_DVR_IP_ADDRESS +{ + BYTE byDevAddress[MAX_DOMAIN_NAME]; /*豸IPַ*/ + WORD wDevPort; //豸˿ + BYTE byres[134]; +}NET_DVR_IP_ADDRESS, *LPNET_DVR_IP_ADDRESS; + +typedef struct tagNet_DVR_DDNS_ADDRESS +{ + BYTE byDevAddress[MAX_DOMAIN_NAME]; /*DDNS*/ + BYTE byDevDdns[MAX_DOMAIN_NAME]; /*豸ַ*/ + BYTE byDdnsType; //ͣ0-IPServer 1Dyndns 2PeanutHull()//3- NO-IP, 4- hiDDNS + BYTE byRes1[3]; + WORD wDevPort; //豸˿ + WORD wDdnsPort; //˿ + BYTE byres[64]; +}NET_DVR_DDNS_ADDRESS, *LPNET_DVR_DDNS_ADDRESS; + +typedef struct tagNet_DVR_PLAY_BACK_BY_TIME +{ + NET_DVR_TIME StartTime; + NET_DVR_TIME StopTime; +}NET_DVR_PLAY_BACK_BY_TIME, *LPNET_DVR_PLAY_BACK_BY_TIME; + +typedef struct tagNet_DVR_MATRIX_DEC_REMOTE_PLAY_EX +{ + DWORD dwSize; + DWORD dwDecChannel; //ͨ + BYTE byAddressType; //豸ַͣ0-IP1-DDNS + BYTE byChannelType; //ͨͣ0-ͨͨ1-ͨ2-ID + BYTE byres[2]; + BYTE sUserName[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + DWORD dwChannel; /* 豸ͨ */ + BYTE byStreamId[STREAM_ID_LEN]; //ID,˲ͨΪIDʱЧ + DWORD dwPlayMode; /* 0ļ 1ʱ*/ + union + { + BYTE byRes[200]; + NET_DVR_IP_ADDRESS struIpAddr; + NET_DVR_DDNS_ADDRESS struDdnsAddr; + }unionAddr; + + union + { + BYTE byRes[128]; + NET_DVR_PLAY_BACK_BY_TIME struPlayBackByTime; //ʱطʱļϢ + char sFileName[128]; //ļطʱļϢ + }unionPlayBackInfo; +}NET_DVR_MATRIX_DEC_REMOTE_PLAY_EX, *LPNET_DVR_MATRIX_DEC_REMOTE_PLAY_EX; + +typedef struct tagNET_DVR_MATRIX_DEC_REMOTE_PLAY_V50 +{ + DWORD dwSize; + DWORD dwDecChannel; //ͨ + BYTE byAddressType; //豸ַͣ0-IP1-DDNS2-URL + BYTE byChannelType; //ͨͣ0-ͨͨ1-ͨ2-ID + BYTE byStreamEncrypt; //Ƿܴ,0-֧,1-֧ + BYTE byRes1[1]; + BYTE sUserName[NAME_LEN]; /* û */ + BYTE sPassword[PASSWD_LEN]; /* */ + DWORD dwChannel; /* 豸ͨ */ + BYTE byStreamId[STREAM_ID_LEN]; //ID,˲ͨΪIDʱЧ + DWORD dwPlayMode; /* 0ļ 1ʱ*/ + union + { + BYTE byRes[200]; + NET_DVR_IP_ADDRESS struIpAddr; //IPַbyAddressTypeΪ0ʱЧ + NET_DVR_DDNS_ADDRESS struDdnsAddr; //DDNSַbyAddressTypeΪ1ʱЧ + }unionAddr; + union + { + BYTE byRes[128]; + NET_DVR_PLAY_BACK_BY_TIME struPlayBackByTime; //ʱطʱļϢ + BYTE sFileName[128]; //ļطʱļϢ + }unionPlayBackInfo; + NET_DVR_PU_STREAM_URL struURL; //ȡURLbyAddressTypeΪ2ʱЧ + BYTE sStreamPassword[STREAM_PASSWD_LEN]; //,Ϣ + BYTE byRes2[116]; +}NET_DVR_MATRIX_DEC_REMOTE_PLAY_V50, *LPNET_DVR_MATRIX_DEC_REMOTE_PLAY_V50; + +typedef struct tagNET_DVR_DISPLAY_EFFECT_CFG +{ + DWORD dwSize; + NET_DVR_COLOR struColor; //ʾز/ + BYTE byRes[32]; +}NET_DVR_DISPLAY_EFFECT_CFG,*LPNET_DVR_DISPLAY_EFFECT_CFG; + +//ȡ״̬ +typedef struct tagNET_DVR_TRUNK_USE_STATE +{ + DWORD dwSize; + DWORD dwTrunkID; //ID + WORD wReserveUserID; //ԤûID 1~256 0ʾͷԤ + BYTE byStatus; //1-У2-ռã3- */ + BYTE byRes1; + BYTE byUserId[256]; //±ʾûIDţԪصֵʾǷʹøߡ磺byUserID[0] ֵΪ1ʾûIDΪ0ûʹãbyUserID[0] ֵΪ0ʾûIDΪ0ûûʹ + BYTE byRes2[64]; +}NET_DVR_TRUNK_USE_STATE, *LPNET_DVR_TRUNK_USE_STATE; + + +//PTZƲ +typedef struct tagNET_DVR_PTZ_CTRL_INFO +{ + DWORD dwSize; + DWORD dwCtrlDelayTime; //PTZƳʱ䣬ָPTZƺdwCtrlDelayTimeʱڣͬͼûЧλ + BYTE byRes[64]; +}NET_DVR_PTZ_CTRL_INFO, *LPNET_DVR_PTZ_CTRL_INFO; + +//ʾ· +#define MAX_MATRIX_CASCADE 32 +typedef struct tagNET_DVR_MATRIX_ROUTE_INFO +{ + DWORD dwSize; + DWORD dwCamNo; + DWORD dwMonNo; + DWORD dwSubWin; + DWORD dwUserId; + DWORD dwTrunkId[MAX_MATRIX_CASCADE/*32*/];//trunkIdԱӦ132CAM˿ʼtrunkId[0]ʾһtrunkId[1]ʾڶ, trunkId[i] = 0 ʾ޸ + BYTE byRes[64]; /* Ԥ */ +}NET_DVR_MATRIX_ROUTE_INFO, *LPNET_DVR_MATRIX_ROUTE_INFO; + + +//ȡPTZ״̬ +typedef struct tagNET_DVR_PTZ_STATUS +{ + DWORD dwSize; + DWORD dwUserID; //1~2560 ʾû + DWORD dwStatus; // PTZ״̬0-ֹͣ1- + DWORD dwRestTime; //ʣʱ + BYTE byRes[64]; +}NET_DVR_PTZ_STATUS, *LPNET_DVR_PTZ_STATUS; + +typedef struct tagNET_DVR_SAFETYCABIN_WORK_MODE +{ + DWORD dwSize; + BYTE byWorkMode; //ģʽ0-ų1-ų + BYTE byFaintToUnlock; //εһʱⲿԿ0-1- + BYTE byOvertimeToUnlock; //ʹóʱⲿťǷԿ0-1- + BYTE byRes[13]; +}NET_DVR_SAFETYCABIN_WORK_MODE,*LPNET_DVR_SAFETYCABIN_WORK_MODE; + +typedef struct tagNET_DVR_SAFETYCABIN_PERSON_SIGNAL_CFG +{ + DWORD dwSize; + BYTE bySensorType; //ͣ0-ͣ1-Ļ + BYTE bySensitivity; //жȣΧ0-100% + BYTE byDevUseTimeout; //ʹóʱʱ䣬λ,Χ5-30Ĭϳʱ15min,ʱͨͨϴ + BYTE byRes1; + WORD wCurtainDelayTime; //Ļ̽ʱʱ䣬λ룬Χ0-10 + WORD wCurtainResponseTime; //Ļ״̬仯Ӧʱ䣬λ룬Χ0-300 + WORD wFaintToEmergencyTime; //ε澯Чʱ䣬λ룬Χ10-300 + BYTE byFollowDetectorSensitivity; //βȣΧ0-100% + BYTE byManyPersonSensitivity; //˼ȣΧ0-100% + BYTE byRes2[28]; // +}NET_DVR_SAFETYCABIN_PERSON_SIGNAL_CFG,*LPNET_DVR_SAFETYCABIN_PERSON_SIGNAL_CFG; + +typedef struct tagNET_DVR_ETHERNET_IPV6_COND +{ + DWORD dwSize; + BYTE byMACAddr[MACADDR_LEN]; //ַ + BYTE byRes[64]; // +}NET_DVR_ETHERNET_IPV6_COND,*LPNET_DVR_ETHERNET_IPV6_COND; + +typedef struct tagNET_DVR_ETHERNET_IPV6_CFG +{ + DWORD dwSize; + BYTE byState; //IPv6״̬0-·ɷ䣬1-Զ + BYTE byRes1[3]; + BYTE byIPv6[MAX_IPV6_LEN]; //IPv6ַ + BYTE byRes[64]; // +}NET_DVR_ETHERNET_IPV6_CFG,*LPNET_DVR_ETHERNET_IPV6_CFG; + +typedef struct +{ + BYTE byHour;//0~24 + BYTE byMinute;//0~60 + BYTE bySecond;//0~60 + BYTE byRes; + WORD wMilliSecond; //0~1000 + BYTE byRes1[2]; +}NET_DVR_DAYTIME,*LPNET_DVR_DAYTIME; + +typedef struct +{ + NET_DVR_DAYTIME struStartTime; //ʼʱ + NET_DVR_DAYTIME struStopTime; //ʱ +}NET_DVR_SCHEDULE_DAYTIME, *LPNET_DVR_SCHEDULE_DAYTIME; + +typedef struct +{ + BYTE byObjectSize;//ռȲ(0~100) + BYTE byMotionSensitive; /*ƶ, 0 - 5,ԽԽ,0xffر*/ + BYTE byRes[6]; +}NET_DVR_DNMODE, *LPNET_DVR_DNMODE; + +typedef struct +{ + BYTE byAreaNo;//(IPC- 1~8) + BYTE byRes[3]; + NET_VCA_RECT struRect;//Ϣ() size = 16; + NET_DVR_DNMODE struDayNightDisable;//رģʽ + NET_DVR_DNMODE struDayModeParam;//ģʽ + NET_DVR_DNMODE struNightModeParam;//ҹģʽ + BYTE byRes1[8]; +}NET_DVR_MOTION_MULTI_AREAPARAM, *LPNET_DVR_MOTION_MULTI_AREAPARAM; + +typedef struct +{ + BYTE byDayNightCtrl;//ҹ 0~ر,1~Զл,2~ʱл(ĬϹر) + BYTE byAllMotionSensitive; /*ƶ, 0 - 5,ԽԽ,0xffرգȫȷΧ*/ + BYTE byRes[2];// + NET_DVR_SCHEDULE_DAYTIME struScheduleTime;//лʱ 16 + NET_DVR_MOTION_MULTI_AREAPARAM struMotionMultiAreaParam[MAX_MULTI_AREA_NUM];//֧24 + BYTE byRes1[60]; +}NET_DVR_MOTION_MULTI_AREA,*LPNET_DVR_MOTION_MULTI_AREA; //1328 + +typedef struct +{ + BYTE byMotionScope[64][96]; /*,0-96λ,ʾ64,96*64С,ĿǰЧ22*18,Ϊ1ʾƶ,0-ʾ*/ + BYTE byMotionSensitive; /*ƶ, 0 - 5,ԽԽ,0xffر*/ + BYTE byRes[3]; +}NET_DVR_MOTION_SINGLE_AREA, *LPNET_DVR_MOTION_SINGLE_AREA; + +typedef struct +{ + NET_DVR_MOTION_SINGLE_AREA struMotionSingleArea; //ͨģʽµĵ + NET_DVR_MOTION_MULTI_AREA struMotionMultiArea; //רģʽµĶ +}NET_DVR_MOTION_MODE_PARAM, *LPNET_DVR_MOTION_MODE_PARAM; + +typedef struct +{ + NET_DVR_MOTION_MODE_PARAM struMotionMode; //(5.1.0) + BYTE byEnableHandleMotion; /* Ƿƶ 0 1*/ + BYTE byEnableDisplay; /*ƶʾ0-1-*/ + BYTE byConfigurationMode; //0~ͨ,1~ר(5.1.0) + BYTE byKeyingEnable; //üƶ 0-ã1- + /* 쳣ʽ */ + DWORD dwHandleType; //쳣,쳣ʽ"" + /*0x00: Ӧ*/ + /*0x01: Ͼ*/ + /*0x02: */ + /*0x04: ϴ*/ + /*0x08: */ + /*0x10: JPRGץͼϴEmail*/ + /*0x20: ⱨ*/ + /*0x40: ӵͼ(ĿǰֻPCNVR֧)*/ + /*0x200: ץͼϴFTP*/ + /*0x1000: ץͼϴ*/ + DWORD dwMaxRelAlarmOutChanNum ; //ıֻ֧ͨ + DWORD dwRelAlarmOut[MAX_ALARMOUT_V40]; //ʵʴıţֵʾ,ýУ±0 - dwRelAlarmOut -1Чм0xffffffff,Ч + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*ʱ*/ + /*¼ͨ*/ + DWORD dwMaxRecordChanNum; //豸ֵ֧¼ͨ-ֻ + DWORD dwRelRecordChan[MAX_CHANNUM_V40]; /* ʵʴ¼ֵͨʾ,ýУ±0 - dwRelRecordChan -1Чм0xffffffff,Ч*/ + BYTE byDiscardFalseAlarm; //ȥ 0-Ч1-ã2- + BYTE byRes[127]; //ֽ +}NET_DVR_MOTION_V40,*LPNET_DVR_MOTION_V40; + +typedef struct +{ + DWORD dwEnableHideAlarm; /* Ƿڵ0-1-ȣ2-ȣ3-*/ + WORD wHideAlarmAreaTopLeftX; /* ڵx */ + WORD wHideAlarmAreaTopLeftY; /* ڵy */ + WORD wHideAlarmAreaWidth; /* ڵĿ */ + WORD wHideAlarmAreaHeight; /*ڵĸ*/ + /* źŶʧ */ + DWORD dwHandleType; //쳣,쳣ʽ"" + /*0x00: Ӧ*/ + /*0x01: Ͼ*/ + /*0x02: */ + /*0x04: ϴ*/ + /*0x08: */ + /*0x10: JPRGץͼϴEmail*/ + /*0x20: ⱨ*/ + /*0x40: ӵͼ(ĿǰֻPCNVR֧)*/ + /*0x200: ץͼϴFTP*/ + /*0x1000:ץͼϴ*/ + DWORD dwMaxRelAlarmOutChanNum ; //ıֻ֧ͨ + DWORD dwRelAlarmOut[MAX_ALARMOUT_V40]; /*ţֵʾ,ýУ±0 - dwRelAlarmOut -1Чм0xffffffff,Ч*/ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*ʱ*/ + BYTE byRes[64]; // +}NET_DVR_HIDEALARM_V40,*LPNET_DVR_HIDEALARM_V40; //ڵ + +typedef struct +{ + DWORD dwEnableVILostAlarm; /* ǷźŶʧ ,0-,1-*/ + /* źŶʧ */ + DWORD dwHandleType; //쳣,쳣ʽ"" + /*0x00: Ӧ*/ + /*0x01: Ͼ*/ + /*0x02: */ + /*0x04: ϴ*/ + /*0x08: */ + /*0x10: JPRGץͼϴEmail*/ + /*0x20: ⱨ*/ + /*0x40: ӵͼ(ĿǰֻPCNVR֧)*/ + /*0x200: ץͼϴFTP*/ + /*0x1000:ץͼϴ*/ + DWORD dwMaxRelAlarmOutChanNum ; //ıֻ֧ͨ + DWORD dwRelAlarmOut[MAX_ALARMOUT_V40]; /*ţֵʾ,ýУ±0 - dwRelAlarmOut -1Чм0xffffffff,Ч*/ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*ʱ*/ + BYTE byVILostAlarmThreshold; /*źŶʧֵֵֵΪźŶʧȡֵ0-99*/ + BYTE byRes[63]; // +}NET_DVR_VILOST_V40,*LPNET_DVR_VILOST_V40; //źŶʧ + +typedef struct +{ + NET_DVR_COLOR struColor[MAX_TIMESEGMENT_V30];/*ͼ(һЧ)*/ + NET_DVR_SCHEDTIME struHandleTime[MAX_TIMESEGMENT_V30];/*ʱ()*/ +}NET_DVR_VICOLOR, *LPNET_DVR_VICOLOR; + +typedef struct +{ + DWORD dwSize; + BYTE sChanName[NAME_LEN]; + DWORD dwVideoFormat; /* ֻ Ƶʽ 1-NTSC 2-PAL */ + NET_DVR_VICOLOR struViColor;// ͼʱ + //ʾͨ + DWORD dwShowChanName; // ԤͼǷʾͨ,0-ʾ,1-ʾ + WORD wShowNameTopLeftX; /* ͨʾλõx */ + WORD wShowNameTopLeftY; /* ͨʾλõy */ + //˽ڵ + DWORD dwEnableHide; /* Ƿڵ ,0-,1-*/ + NET_DVR_SHELTER struShelter[MAX_SHELTERNUM]; + //OSD + DWORD dwShowOsd;// ԤͼǷʾOSD,0-ʾ,1-ʾ + WORD wOSDTopLeftX; /* OSDx */ + WORD wOSDTopLeftY; /* OSDy */ + BYTE byOSDType; /* OSD(Ҫոʽ) */ + /* 0: XXXX-XX-XX */ + /* 1: XX-XX-XXXX */ + /* 2: XXXXXXXX */ + /* 3: XXXXXXXX */ + /* 4: XX-XX-XXXX */ + /* 5: XXXXXXXX */ + /*6: xx/xx/xxxx(//) */ + /*7: xxxx/xx/xx(//) */ + /*8: xx/xx/xxxx(//)*/ + BYTE byDispWeek; /* Ƿʾ */ + BYTE byOSDAttrib; /* OSD:͸˸ */ + /* 0: ʾOSD */ + /* 1: ͸˸ */ + /* 2: ͸˸ */ + /* 3: ͸˸ */ + /* 4: ͸˸ */ + BYTE byHourOSDType; /* OSDСʱ:0-24Сʱ,1-12Сʱ */ + BYTE byFontSize; //16*16()/8*16(Ӣ)1-32*32()/16*32(Ӣ)2-64*64()/32*64(Ӣ) 3-48*48()/24*48(Ӣ) 4-24*24()/12*24(Ӣ) 5-96*96()/48*96(Ӣ) 6-128*128()/64*128(Ӣ) 7-80*80()/40*80(Ӣ) 8-112*112()/56*112(Ӣ) 0xff-Ӧ(adaptive) + BYTE byOSDColorType; //0-Ĭϣڰף1-Զ壻2- + /*뷽ʽѡģʽʱԷֱ½ǡ½ַӡ + ½ + ֧6ַӣͨNET_DVR_SET_SHOWSTRING_V30/ NET_DVR_GET_SHOWSTRING_V30ַӽӿڣӦNET_DVR_SHOWSTRINGINFOṹеĵ05±ֵַķʽΪµϵķʽ + ½ + ֧2ַӣͨNET_DVR_SET_SHOWSTRING_V3/ NET_DVR_GET_SHOWSTRING_V30ַӽӿڣӦNET_DVR_SHOWSTRINGINFOṹеĵ6͵7±ֵַķʽΪµϵķʽ + */ + BYTE byAlignment;//뷽ʽ 0-Ӧ1-Ҷ, 2-룬3-ģʽ4-ȫҶ(ַʱԼOSDַ)5-ȫ(ַʱԼOSDַ) + BYTE byOSDMilliSecondEnable;//Ƶʱֺ֧룻0~, 1- + NET_DVR_VILOST_V40 struVILost; //ƵźŶʧ֧飩 + NET_DVR_VILOST_V40 struAULost; /*ƵźŶʧ֧飩*/ + NET_DVR_MOTION_V40 struMotion; //ƶⱨ֧飩 + NET_DVR_HIDEALARM_V40 struHideAlarm; //ڵ֧飩 + NET_DVR_RGB_COLOR struOsdColor;//OSDɫ + DWORD dwBoundary; //ֵ߽룬ҶԼģʽıֵ߽0-ʾĬֵλ;ڹģʽ£λ޸ΪַΧǣ0,1,2 + NET_DVR_RGB_COLOR struOsdBkColor; //ԶOSDɫ + BYTE byOSDBkColorMode; //OSDɫģʽ0-Ĭϣ1-ԶOSDɫ + BYTE byUpDownBoundary; //Сֵ߽ѡλΪַΧǣ0,1,2,ģʽЧbyAlignment=3ֶЧͨdwBoundaryб߽ã.byAlignment3£ byUpDownBoundary/byLeftRightBoundaryóɹdwBoundaryֵЧ + BYTE byLeftRightBoundary; //Сֵ߽ѡλΪַΧǣ0,1,2, ģʽЧbyAlignment=3ֶЧͨdwBoundaryб߽ã.byAlignment3£ byUpDownBoundary/byLeftRightBoundaryóɹdwBoundaryֵЧ + BYTE byAngleEnabled;//OSDǷӸϢ,0~, 1- + WORD wTiltAngleTopLeftX; /* Ϣʾλõx */ + WORD wTiltAngleTopLeftY; /* Ϣʾλõy */ + BYTE byRes[108]; +}NET_DVR_PICCFG_V40,*LPNET_DVR_PICCFG_V40; + +typedef struct // +{ + DWORD dwSize; + BYTE byWorkType;// 0-Ӧ, 1-ʱģʽ + BYTE byRes[3]; + //ʱģʽ + NET_DVR_SCHEDULE_DAYTIME struDayNightScheduleTime;//ҹʱлģʽ(ʱ) + NET_DVR_CAMERAPARAMCFG_EX struSelfAdaptiveParam; //Ӧ + NET_DVR_CAMERAPARAMCFG_EX struDayIspAdvanceParam;// + NET_DVR_CAMERAPARAMCFG_EX struNightIspAdvanceParam;//ҹ + BYTE byRes1[512]; +}NET_DVR_ISP_CAMERAPARAMCFG,*LPNET_DVR_ISP_CAMERAPARAMCFG; + +typedef struct +{ + DWORD dwSize; + BYTE byIrLampServer;// 0ã1 + BYTE bytelnetServer;//telnet 0ã1 + BYTE byABFServer;//ABF 0ã1 + BYTE byEnableLEDStatus;//״ָ̬ʾƿ 0ã1 + BYTE byEnableAutoDefog;//Զ 0ã1 + BYTE byEnableSupplementLight;//ƿ0-ã1- + BYTE byEnableDeicing;// 0-رգ1- + BYTE byEnableVisibleMovementPower;// ɼоԴ 0-رգ1- + BYTE byEnableThermalMovementPower;// ȳоԴ 0-رգ1- + BYTE byEnablePtzPower;// ̨Դ 0-رգ1- + BYTE byPowerSavingControl;// ͹IJ 0- 1-ģʽ 2-͹ģʽ ͹ģʽ ɼоԴȳоԴ̨ԴЧ + BYTE byCaptureWithSupplimentLightEnabled;//ץIJʹ 0-رգ1- + BYTE byRes[244]; +}NET_DVR_DEVSERVER_CFG,*LPNET_DVR_DEVSERVER_CFG; + +typedef struct tagNET_DVR_GBT28181_ACCESS_CFG +{ + DWORD dwSize; + BYTE byEnable;//28181Эʹ 0-ر 1- + BYTE byTransProtocol;//Э:0-UDP1-TCPĬ0-UDP + WORD wLocalSipPort;//1024-65535(IPC豸) + char szServerID[MAX_SERVERID_LEN];//ID64ַֽ + char szServerDomain[MAX_SIPSERVER_ADDRESS_LEN] ;// + char szSipServerAddress[MAX_SIPSERVER_ADDRESS_LEN] ;// SIPַ֧IPַ + WORD wServerSipPort;//SIP˿ڣ1024-65535 + BYTE byProtocolVersion;//Э汾 0-GB/T28181-2011(֧UDP),1-GB/T28181-2015(֧TCP,UDP),2-GB/T28181-2016 + BYTE byTCPConnectMod; //TCPģʽʹTCPЭʱЧ0-Ч1-ģʽ2-ģʽ + char szSipUserName[MAX_SERVERNAME_LEN];//SIPûƣ64ַֽ(SIPնIPCʱʹ) + char szSipAuthenticateID[MAX_AUTHENTICATEID_LEN];//SIPû֤ID64ַֽ + char szSipAuthenticatePasswd[MAX_AUTHENTICATEPASSWD_LEN];//SIPû֤룺32ַֽ(IPC豸עᵽSIPʱʹ) + DWORD dwRegisterValid;//עЧڣλ룬Ĭ3600 + BYTE byHeartbeatInterval;//λ룬Ĭ10룻 + BYTE byMaxHeartbeatTimeOut;//ʱĬ3Σ + BYTE byStreamType;// ȡ0123 + BYTE byDeviceStatus; //豸Ƿ״̬0-1-ߣ2- + DWORD dwRegisterInterval;//ע:עʧܺٴעʱ,Χ60-600sĬ60s + DWORD dwAutoAllocChannelID ; //ǷԶͨID,λʾ0Ϊֶã1ΪԶ䣬bit1-ԶͨID,bit2-Զ䱨ͨ,bit3-ԶͨID + char szDeviceDomain[MAX_SIPSERVER_ADDRESS_LEN] ;// 豸 + BYTE byRes4[116]; +}NET_DVR_GBT28181_ACCESS_CFG,*LPNET_DVR_GBT28181_ACCESS_CFG; + +//GBT28181Э豸ͨ +typedef struct tagNET_DVR_GBT28181_CHANINFO_CFG +{ + DWORD dwSize; + char szVideoChannelNumID[MAX_COMPRESSIONID_LEN];//豸ƵͨID64ַֽ + BYTE byRes[256]; +}NET_DVR_GBT28181_CHANINFO_CFG,*LPNET_DVR_GBT28181_CHANINFO_CFG; + +//GBT28181Эıͨ ṹ +typedef struct tagNET_DVR_ALARMIN_INFO +{ + NET_DVR_STREAM_INFO struStreamInfo; + DWORD dwAlarmInChannel;//ͨ + BYTE byRes[32]; // +}NET_DVR_ALARMIN_INFO, *LPNET_DVR_ALARMIN_INFO; + +//GBT28181Эıͨ ýṹ +typedef struct tagNET_DVR_GBT28181_ALARMINCFG +{ + DWORD dwSize; + char szAlarmInNumID[MAX_COMPRESSIONID_LEN];//豸IDÿһ·벻ͬ20ַֽ + BYTE byRes[256]; +}NET_DVR_GBT28181_ALARMINCFG,*LPNET_DVR_GBT28181_ALARMINCFG; + +typedef struct tagNET_DVR_CAMERA_SETUPCFG +{ + DWORD dwSize; + WORD wSetupHeight; //߶[0,20]λ + BYTE byLensType; //ͷͣ0-δ֪,1-8mm,2-12mm,3-16mm,4-25mm,5-35mm,6-50mm,7-4mm,8-6mm + BYTE bySetupHeightUnit;// ߶ȵλ0M,1~CM + DWORD dwSceneDis; //ͼ±Եλ֮ˮƽ룬λ + float fPitchAngle;//Ƕ[-180, 180], + float fInclineAngle;//бǶ[-180,180] + float fRotateAngle;//תǶ[-180,180] + WORD wVideoDetCoefficient; //Ƶϵ[0,300](3.6) + BYTE byErectMethod; //跽ʽ0-װ1-װ(3.6) + BYTE byCameraViewAngle;//װҰǶ(0-ֱ1-бĬ0-ֱ) + DWORD dwHorizontalDistance;//ˮƽ룺Χ1-1000Ĭ30λcmעǶΪбʱЧ + BYTE byDetailLensType;//Χ1-100Ĭ28λ0.1mm + BYTE byRes[3]; + float fHorFieldAngle; //ˮƽӳǽǶ[0, 360]ץĻ + float fVerFieldAngle; //ֱӳǽǶ[0, 360]ץĻ,ӥ۷Χ-90-90 + float fLableSetupHeight; //ǩĸ߶[0,100]λ + float fMaxViewRadius;//Ӱ뾶,0~10000.00ףĬ5000. + BYTE byRes1[16]; +}NET_DVR_CAMERA_SETUPCFG, *LPNET_DVR_CAMERA_SETUPCFG; + +//ֹڶβṹ +typedef struct tagNET_DVR_SCHEDDATE +{ + BYTE byStartMonth; //ʼ£ + BYTE byStartDay; //ʼգ + BYTE byStopMonth; //£ + BYTE byStopDay; //գ +}NET_DVR_SCHEDDATE,*LPNET_DVR_SCHEDDATE; + +//ʱ +typedef struct tagNET_DVR_OUTPUT_SCHEDULE +{ + NET_DVR_SCHEDTIME struTime; //ʱ + BYTE byState; //0Cر, 1C + BYTE byRes[11]; // +} NET_DVR_OUTPUT_SCHEDULE ,*LPNET_DVR_OUTPUT_SCHEDULE; + +//ʱ +typedef struct tagNET_DVR_ONE_OUTPUT_SCHEDULE_RULE +{ + BYTE byEnable; //Ƿù,0-,1- + BYTE byRes1[3]; // + NET_DVR_SCHEDDATE struDate; // + NET_DVR_OUTPUT_SCHEDULE struOutputSchedule[MAX_TIMESEGMENT_V30]; //֧8ʱεʱ + BYTE byRes2[16]; // +}NET_DVR_ONE_OUTPUT_SCHEDULE_RULE,*LPNET_DVR_ONE_OUTPUT_SCHEDULE_RULE; + +//ʱ +typedef struct tagNET_DVR_OUTPUT_SCHEDULE_RULECFG +{ + DWORD dwSize; //ṹС + NET_DVR_ONE_OUTPUT_SCHEDULE_RULE struOutputRule[MAX_RULE_NUM]; //֧8εĹ + BYTE byRes[64]; // +}NET_DVR_OUTPUT_SCHEDULE_RULECFG,*LPNET_DVR_OUTPUT_SCHEDULE_RULECFG; + +//ͨͳƱ +typedef struct tagNET_DVR_TPS_ALARMCFG +{ + DWORD dwSize; + BYTE byEnable; //ǷýͨͳƱϴ + BYTE byRes1[3]; // + DWORD dwInterval;//ͳƼʱ䣨λӣ + BYTE byRes[248]; +}NET_DVR_TPS_ALARMCFG, *LPNET_DVR_TPS_ALARMCFG; + +typedef struct tagNET_DVR_DOWNLOAD_ALARM_RECORD_COND +{ + DWORD dwSize; + WORD wAlarmRecordID; //¼ID(ڲѯ¼񣬽byResultTypeΪ2ʱЧ) + BYTE byRes[130]; +}NET_DVR_DOWNLOAD_ALARM_RECORD_COND, *LPNET_DVR_DOWNLOAD_ALARM_RECORD_COND; + +typedef struct tagNET_DVR_CABINET_AlARM_PARAMCFG +{ + char sCabinetName[NAME_LEN]; + BYTE byAssociateIO;//1-40xff 1-4ʾIOͨţ0xffʾ + BYTE byCabinetState;//0~͵ƽ,1~ߵƽ + BYTE byAlarmIntervalTime;//ȡֵΧ1-60λ + BYTE byRes1[25]; +}NET_DVR_CABINET_AlARM_PARAMCFG, *LPNET_DVR_CABINET_AlARM_PARAMCFG; + +typedef struct tagNET_DVR_CABINET_CFG +{ + DWORD dwSize; + BYTE byEnable;//0~ã1 + BYTE byRes[3]; + NET_DVR_CABINET_AlARM_PARAMCFG struCabinetCfg[MAX_CABINET_COUNT]; + BYTE byRes1[84]; +} NET_DVR_CABINET_CFG, *LPNET_DVR_CABINET_CFG; + +typedef struct tagNET_ITS_GATE_LANE_CFG +{ + BYTE byGateSiteID[MAX_ID_LEN]; //ڱ + BYTE byGateInfo[MAX_ID_LEN]; //Ϣ + BYTE byLaneName[NAME_LEN]; // + BYTE byValid; //Ƿ 0 ʾδã1ʾ + BYTE byCamLaneId; //Ӧ116õijţԾͬ + WORD wLaneid; //132ţԾ ߼ + BYTE byRelativeIoNum; //߼Źڱ + BYTE byDirection; //; 0 - 1 볡 2 3 ˫ + BYTE byLprMode; //ʶ0 ȫ1 ֹ2 + BYTE byCardMode; //Ƭ0 ȫ1 ֹ2 + BYTE byGateLaneMode;//ڷģʽ 0-ȫ 1-ֻʶƥ2 ֻˢƥ// 3-ʶƬһƥ 4-ʶҿƬͬʱƥ 5-ȫ + //2013-11-19 + BYTE byCharge;//Ƿշ 0-շѣ1-շ + BYTE byChargeMode;//շ 0-շѣ1-շ + BYTE byRes1; + BYTE byLedRelativeIndex[MAX_INDEX_LED];//LED (1~255) У0ʾЧ + BYTE byGateRelativeIndex;//ڿƻ + BYTE byFarRrRelativeIndex;// Զ + BYTE byRes[82]; //Ԥ +}NET_ITS_GATE_LANE_CFG, *LPNET_ITS_GATE_LANE_CFG; + +typedef struct tagNET_ITS_IPC_CHAN_LANE_CFG +{ + DWORD dwSize; + BYTE byIpcType; //0-ޣ1-ץģ2-ץģ3- + BYTE byRes[135]; + NET_ITS_GATE_LANE_CFG struGateLane[4]; //ýṹ +}NET_ITS_IPC_CHAN_LANE_CFG, *LPNET_ITS_IPC_CHAN_LANE_CFG; + +//豸Զ̿ +typedef struct tagNET_ITS_REMOTE_COMMAND +{ + WORD wLaneid; //132ţԾ + BYTE byCamLaneId; //Ӧ116õijţԾͬ + BYTE byRes; //Ԥ + DWORD dwCode; // 0x0 բ 0x1 բչ + BYTE byRes1[128]; +}NET_ITS_REMOTE_COMMAND,*LPNET_ITS_REMOTE_COMMAND; + +typedef struct tagNET_ITS_REMOTE_CONTROL_ +{ + DWORD dwSize; + NET_ITS_REMOTE_COMMAND struRemoteCommand; //Զṹ +}NET_ITS_REMOTE_CONTROL,*LPNET_ITS_REMOTE_CONTROL; + +//ӻȡͨ״̬ +typedef struct tagNET_ITS_ECT_CHANNELSTATE +{ + DWORD dwSize; + BYTE byRecordStatic; //ͨǷ¼,0-¼,1-¼ + BYTE bySignalStatic; //ӵź״̬,0-,1-źŶʧ + BYTE byHardwareStatic;//ͨӲ״̬,0-,1-쳣,DSP + BYTE byChannelArmState; //IPCIJ״̬ + DWORD dwChannel; //ͨ + DWORD dwBitRate;//ʵ + DWORD dwLinkNum;//ͻӵĸ + NET_DVR_IPADDR struClientIP[MAX_LINK];//ͻ˵IPַ + DWORD dwIPLinkNum;//ͨΪIP룬ôʾIP뵱ǰ + BYTE byExceedMaxLink; // Ƿ񳬳128· 0 - δ, 1- + BYTE byRes[139]; // ֽ +}NET_ITS_ECT_CHANNELSTATE, *LPNET_ITS_ECT_CHANNELSTATE; + +//ӵ +typedef struct tagNET_DVR_PARK_EXTERNAL_SUBINFO +{ + BYTE byEnable; //0 1 + BYTE byFlicker;//0 ˸ 1 ˸ + BYTE byIOState;//0 ͵ƽ 1 ߵƽ (õЧ) + BYTE byLampColor;// 0- 1- 2- 3- 4- 5-Ʒ 6- 7-ɫ (õЧ) + BYTE byRes[4]; +}NET_DVR_PARK_EXTERNAL_SUBINFO, *LPNET_DVR_PARK_EXTERNAL_SUBINFO; + +typedef struct tagNET_DVR_PARK_INLAY_SUBINFO +{ + BYTE byEnable; //0 1 + BYTE byFlicker;//0˸ 1 ˸ + BYTE byLampColor;//0- 1- 2- 3- 4- 5-Ʒ 6- 7-ɫ (õЧ) + BYTE byRes[21]; +}NET_DVR_PARK_INLAY_SUBINFO, *LPNET_DVR_PARK_INLAY_SUBINFO; + +typedef struct tagNET_DVR_PARKINFO +{ + NET_DVR_PARK_EXTERNAL_SUBINFO struNormalParkIOState;//гioƽ״̬ + NET_DVR_PARK_EXTERNAL_SUBINFO struNormalNoParkIOState;//޳ioƽ״̬ + NET_DVR_PARK_EXTERNAL_SUBINFO struSpecialParkIOState;//⳵λгioƽ״̬ + NET_DVR_PARK_EXTERNAL_SUBINFO struSpecialNoParkIOState;//⳵λ޳ioƽ״̬ + BYTE byRes[32]; +}NET_DVR_PARKINFO, *LPNET_DVR_PARKINFO; + +typedef struct tagNET_DVR_EXTERNAL_LAMP_CTRL_MODE +{ + NET_DVR_PARKINFO struParkInfo[MAX_PARKING_NUM];/*ӵƵ³λϢһͨ4λ (ҳλ 03)*/ + BYTE byRes[32]; +}NET_DVR_EXTERNAL_LAMP_CTRL_MODE, *LPNET_DVR_EXTERNAL_LAMP_CTRL_MODE; + +typedef struct tagNET_DVR_INLAY_LAMP_CTRL_MODE +{ + NET_DVR_PARK_INLAY_SUBINFO struLampStateCtrl[MAX_PARKING_STATUS]; + BYTE byRes[96]; +}NET_DVR_INLAY_LAMP_CTRL_MODE, *LPNET_DVR_INLAY_LAMP_CTRL_MODE; + +typedef struct tagNET_DVR_LAMP_INFO //8 +{ + BYTE byEnable; //0 1 + BYTE byFlicker;//0~˸ 1 ˸(λָʾ˸) + BYTE byLampColor;//0- 1- 2- 3- 4- 5-Ʒ 6- 7-ɫ (λָʾɫ) + BYTE byRes[5]; +}NET_DVR_LAMP_INFO, *LPNET_DVR_LAMP_INFO; + +//õģʽ +typedef struct tagNET_DVR_PARKLAMP_CTRL_MODE//size == 72 +{ + //λ״̬ 0޳1г2ѹ(ȼ), 3⳵λ + NET_DVR_LAMP_INFO struLampInfo[MAX_PARKING_STATUS/*8*/]; + //λƣ0-õ, 1-õ1, 2-õ2, 3-õ3 + BYTE byLampType; + BYTE byRes[7]; +}NET_DVR_PARKLAMP_CTRL_MODE, *LPNET_DVR_PARKLAMP_CTRL_MODE; + +typedef struct tagNET_DVR_LAMP_PARAM //4 +{ + BYTE byEnable; //0 1 + BYTE byFlicker;//0~˸ 1 ˸ + BYTE byLampColor;//0- 1- 2- 3- 4- 5-Ʒ 6- 7-ɫ + BYTE byRes[3]; +}NET_DVR_LAMP_PARAM, *LPNET_DVR_LAMP_PARAM; + +//õģʽ +typedef struct tagNET_DVR_EXTERNAL_PARKLAMP //size == 56 +{ + //λ״̬ 0޳1г2ѹ(ȼ), 3⳵λ + NET_DVR_LAMP_PARAM struLampParam[MAX_PARKING_STATUS/*8*/]; + //λƣ0-õ, 1-õ1, 2-õ2, 3-õ3 + BYTE byLampType; + BYTE byRes[7]; +}NET_DVR_EXTERNAL_PARKLAMP, *LPNET_DVR_EXTERNAL_PARKLAMP; + +/*õƼõģʽ õƿƽṹϢ */ +typedef struct tagNET_DVR_BUILTIN_PARKLAMP +{ + BYTE byEnable; //0 1 + BYTE byFlicker; //0~˸ 1 ˸ + BYTE byLampColor; //0- 1- 2- 3- 4- 5-Ʒ 6- 7-ɫ (õЧ) + BYTE byRes[5]; +}NET_DVR_BUILTIN_PARKLAMP, *LPNET_DVR_BUILTIN_PARKLAMP; + +/* Ͽģʽṹ */ +typedef struct tagNET_DVR_MIXLAMP_CTRL_MODE +{ + NET_DVR_EXTERNAL_PARKLAMP struExternalParkLamp[MAX_PARKING_NUM/*4*/];//õ ճλŽ֣һͨ4λ (ҳλ 03) + NET_DVR_BUILTIN_PARKLAMP struBuiltInParkLamp[MAX_PARKING_STATUS/*8*/];//õ ճλ״̬֣λ״̬ 0޳1г2ѹ(ȼ), 3⳵λ +}NET_DVR_MIXLAMP_CTRL_MODE, *LPNET_DVR_MIXLAMP_CTRL_MODE; + +/* ӵƿģʽṹ */ +typedef struct tagNET_DVR_SINGLELAMP_CTRL_MODE //õģʽDzֳλϢʾǰλ״̬Уȼõ״̬ѹ>⳵λ>޳״̬ +{ + NET_DVR_PARK_EXTERNAL_SUBINFO struExternLampStateCtrl[MAX_PARKING_STATUS/*4*/];//õ ճλŽ֣һͨ4λ (ҳλ 03) + BYTE byLampType; /* 1-õ12-õ23-õ3*/ + BYTE byRes[23]; +}NET_DVR_SINGLELAMP_CTRL_MODE, *LPNET_DVR_SINGLELAMP_CTRL_MODE; + +typedef union tagNET_DVR_LAMP_CTRL_MODE_UNION +{ + BYTE uLen[288]; + NET_DVR_INLAY_LAMP_CTRL_MODE struInlayLampCtrlMode;/*õƿģʽṹ*/ + NET_DVR_EXTERNAL_LAMP_CTRL_MODE struExternalLampCtrlMode;/*ӵƿģʽṹ*/ + NET_DVR_PARKLAMP_CTRL_MODE struParkLampCtrlMode[MAX_PARKING_NUM/*4*/];/*õģʽһͨ4λ (ҳλ 03) ģʽΪõƵʱЧ*/ + //λõƣϿģʽõģʽģʽõƲΪõʹãõģʽ£õΪõʹã + //Ͽģʽ£õʾǰ⳵λ״̬Уȼߵijλ״̬(ѹ>⳵λ>޳״̬)Ƶ״̬ + NET_DVR_MIXLAMP_CTRL_MODE struMixLampCtrlMode; + //õģʽDzֳλϢʾǰλ״̬Уȼõ״̬ѹ>⳵λ>޳״̬ + NET_DVR_SINGLELAMP_CTRL_MODE struSingleExternalLampCtrlMode; +}NET_DVR_LAMP_CTRL_MODE_UNION, *LPNET_DVR_LAMP_CTRL_MODE_UNION;/*ƿģʽ*/ + +typedef struct tagNET_DVR_LAMP_CTRL_INFO +{ + DWORD dwSize; + BYTE byLampCtrlMode;/*صģʽ1õ,2ӵ,3õ,4ϵģʽõֻȼָʾ),5-õģʽ*/ + BYTE byCtrlChannelIndex;/*ͨ(33~48)*/ + BYTE byRes[2]; + NET_DVR_LAMP_CTRL_MODE_UNION uLampCtrlMode;/*ƿģʽ*/ + BYTE byRes2[32]; +}NET_DVR_LAMP_CTRL_INFO, *LPNET_DVR_LAMP_CTRL_INFO; + +//λãĬ϶normal +typedef struct tagNET_DVR_PARKSPACE_INFO +{ + BYTE byParkSpaceAttribute; //0~ͨλ 1⳵λ + BYTE byRes[23]; +}NET_DVR_PARKSPACE_INFO, *LPNET_DVR_PARKSPACE_INFO; + +typedef struct tagNET_DVR_PARKSPACE_ATTRIBUTE +{ + DWORD dwSize; + NET_DVR_PARKSPACE_INFO struParkSpaceInfo[MAX_PARKING_NUM];//һͨ4λ (ҳλ 03) + BYTE byRes[64]; +}NET_DVR_PARKSPACE_ATTRIBUTE, *LPNET_DVR_PARKSPACE_ATTRIBUTE; + +//ָʾ +typedef struct tagNET_DVR_LAMP_STATE +{ + BYTE byFlicker;//0~˸ 1 ˸ + BYTE byParkingIndex;//λ13 + BYTE byRes1[2]; + DWORD dwIONo;//1~IO1;2~IO2;4~IO3; + BYTE byRes2[8]; +}NET_DVR_LAMP_STATE, *LPNET_DVR_LAMP_STATE; + +typedef struct tagNET_DVR_LAMP_EXTERNAL_CFG +{ + DWORD dwSize; + BYTE byEnable; //ʹ 0 1 + BYTE byRes1[3]; + NET_DVR_LAMP_STATE struLampStateCtrl;//ָʾ + BYTE byRes2[32]; +}NET_DVR_LAMP_EXTERNAL_CFG, *LPNET_DVR_LAMP_EXTERNAL_CFG; + +//λǿץͼ һͨijλ +typedef struct tagNET_DVR_COMPEL_CAPTURE +{ + DWORD dwSize; + BYTE byParkIndex;/*λŴ 0-ʾǰмλϴͼƬ1,2,3,4*/ + BYTE byRes[63]; +}NET_DVR_COMPEL_CAPTURE, *LPNET_DVR_COMPEL_CAPTURE; + +//رṹ +typedef struct tagNET_DVR_EXTERNAL_CONTROL_ALARM +{ + DWORD dwSize; + DWORD dwChannelNo; + NET_DVR_LAMP_STATE struLampStateCtrl;//ָʾ״̬ + NET_DVR_TIME struExternalBeginTime;/*ؿʼʱ*/ + BYTE byRes1[64]; +}NET_DVR_EXTERNAL_CONTROL_ALARM, *LPNET_DVR_EXTERNAL_CONTROL_ALARM; + +/* 豸 */ +typedef enum tagEXTERNAL_DEVICES_TYPE +{ + DEVICES_TYPE_RES1 = 0, //1 + DEVICES_TYPE_FAR_SCR = 1, //Զ + DEVICES_TYPE_ENTRANCE_CONTROL = 2, //ڿƻ + DEVICES_TYPE_WJ_LED_DEV = 3, //LED + DEVICES_TYPE_NJ_LED_DEV = 4, //ڽLED + DEVICES_TYPE_VEH_DETECT_DEV = 5, //豸 + DEVICES_TYPE_DZ_DEV = 6, //բ + DEVICES_TYPE_PX_SCR_DEV = 7, //Ʊ + DEVICES_TYPE_KJ_SCR_DEV = 8, // + DEVICES_TYPE_FKJ_DEV = 9, // + DEVICES_TYPE_SKJ_DEV = 10, //տ + DEVICES_TYPE_HDD_DEV = 11, //Ӳ( 1G) + DEVICES_TYPE_DZ_LOCK = 12, //բբ״̬0ʾδբ1ʾբ + DEVICES_TYPE_PAPER_PRINTER = 13, //ֽƱӡ + DEVICES_TYPE_PAPER_SCANNERS = 14, //ֽƱɨ + DEVICES_TYPE_IPC_ALARM = 15 //IPC״̬ +}EXTERNAL_DEVICES_TYPE; + +/* 豸״̬ */ +typedef enum tagEXTERNAL_DEVICES_STATUS +{ + /* ͨ豸״̬ 0~19*/ + DEVICES_STATUS_NORMAL = 0, //״̬ + DEVICES_STATUS_ABNORMAL = 1, //״̬쳣 + + /* 豸״̬ 20~39*/ + DEVICES_STATUS_TOO_LESS_CARD = 20, //ٿ + DEVICES_STATUS_NO_CARD = 21, //޿ + DEVICES_STATUS_SENDCARD_ERROR = 22, //Ԥ + DEVICES_STATUS_CARD_BLOCKED = 23, //¿ + DEVICES_STATUS_CARD_FULL = 24, //ղֿ + + + /* բ豸״̬ 40~60*/ + DEVICES_STATUS_OPENING = 40, //բڿ + DEVICES_STATUS_CLOSING = 41, //բڹ + DEVICES_STATUS_OPENED = 42, //բλ + DEVICES_STATUS_CLOSED = 43, //բصλ + DEVICES_STATUS_NOSIGNAL = 44, //բź + DEVICES_STATUS_LOCK= 45, //բ + + /* ֽƱӡ״̬ 61~90*/ + PP_STATUS_OFFLINE = 61, //ѻ + PP_STATUS_PRINT_HEADER_UP, // ӡͷ̧ + PP_STATUS_FEED_BUTTON_FEEDING, //ýֽֽ + PP_STATUS_ONLINE_WAITING, //ȴ + PP_STATUS_FEED_BUTTON_ENABLE, //ֽʹΪ + PP_STATUS_JAMR_PAPER_ERROR, //ֽ + PP_STATUS_CUT_PAPER_ERROR, //е + PP_STATUS_AUTO_FEED_ERROR, //Զֽ + PP_STATUS_EXIT_RECOVERY_ERROR, //пɻָ + PP_STATUS_EXIT_AUTO_RECOVERY_ERROR, //пԶָ + PP_STATUS_PULL_PAPER_ERROR, //ֽ + PP_STATUS_LESS_PAPER , //ֽ + PP_STATUS_NO_PAPER, //ֽ + PP_STATUS_PRINT_FAIL, //ӡʧ + PP_STATUS_PRINTING, //ڴӡ +}EXTERNAL_DEVICES_STATUS; + +/* 豸 */ +typedef enum tagEXTERNAL_DEVICESCTRL_TYPE +{ + DEVICES_CTRL_RES = 0, //Ԥ(ȥ־) + DEVICES_CTRL_REMOTE = 1, //ңƣǰΪբʱ֧ͨңբ +}EXTERNAL_DEVICESCTRL_TYPE; + + +typedef struct tagNET_DVR_GATE_ALARMINFO +{ + DWORD dwSize; + //0x1Ƿ뱨 + //0x2բʱδر + //0x3ѹȦʱ + //0x4޿ + //0x5ٿ + //0x6쳣 + BYTE byAlarmType; + BYTE byExternalDevType;//豸(EXTERNAL_DEVICES_TYPE) + BYTE byExternalDevStatus;//豸(EXTERNAL_DEVICES_STATUS) + BYTE byExternalDevCtrlType;//豸(EXTERNAL_DEVICESCTRL_TYPE) + NET_DVR_TIME_V30 struAlarmTime;//ʱ + union + { + BYTE uLen[128]; + struct + { + char sLicense[MAX_LICENSE_LEN/*16*/];//ƺ + /*0- 1-̶2-ʱ3-Ԥ4-쳵5-Ȩ*/ + BYTE byVehicleType; + BYTE byRes1[111]; + }struVehicleInfo;//struAlarmTypeΪ(0x1Ƿ뱨) + }uAlarmInfo; + BYTE byRes2[64]; //Ԥ +}NET_DVR_GATE_ALARMINFO, *LPNET_DVR_GATE_ALARMINFO; + +typedef struct tagNET_DVR_ALARMWIRELESSINFO +{ + BYTE byDeviceID[NAME_LEN]; //豸ID + float fDataTraffic; /* ,λMB,Сλ*/ + BYTE bySignalIntensity; /* źǿȣ0~100*/ + BYTE byRes[127]; +}NET_DVR_ALARMWIRELESSINFO, *LPNET_DVR_ALARMWIRELESSINFO; + +typedef struct tagNET_DVR_VOLTAGE +{ + int iPhaseAVol; //Aѹ + int iPhaseBVol; //Bѹ + int iPhaseCVol; //Cѹ + int iAveragePhaseVol; //ѹƽֵ +}NET_DVR_VOLTAGE, *LPNET_DVR_VOLTAGE; + +typedef struct _tagNET_DVR_LINE_VOLTAGE +{ + int iLineVolAB; //ABߵѹ + int iLineVolBC; //BCߵѹ + int iLineVolCA; //CAߵѹ + int iAverageLineVol; //ߵѹƽֵ +} NET_DVR_LINE_VOLTAGE,*LPNET_DVR_LINE_VOLTAGE; + + +// +typedef struct tagNET_DVR_CURRENT +{ + int iPhaseACurrent; //A + int iPhaseBCurrent; //B + int iPhaseCCurrent; //C + BYTE byRes[4]; +}NET_DVR_CURRENT, *LPNET_DVR_CURRENT; + +// +typedef struct tagNET_DVR_POWER +{ + int iPhaseAPower; //A๦ + int iPhaseBPower; //B๦ + int iPhaseCPower; //C๦ + int iSysTotalPower; //ϵͳܹ +}NET_DVR_POWER, *LPNET_DVR_POWER; + +// +typedef struct tagNET_DVR_POWER_FACTOR +{ + int iPhaseAPowerFactor; //A๦ + int iPhaseBPowerFactor; //B๦ + int iPhaseCPowerFactor; //C๦ + int iTotalPowerFactor; //ܹ +}NET_DVR_POWER_FACTOR, *LPNET_DVR_POWER_FACTOR; + +//Ƶ +typedef struct tagNET_DVR_FREQUENCY +{ + int iPhaseAFrequency; //AƵ + int iPhaseBFrequency; //BƵ + int iPhaseCFrequency; //CƵ + BYTE byRes[4]; +}NET_DVR_FREQUENCY, *LPNET_DVR_FREQUENCY; + +// +typedef struct tagNET_DVR_LOAD_FACTOR +{ + int iPhaseALoadFactor; //Aฺ + int iPhaseBLoadFactor; //Bฺ + int iPhaseCLoadFactor; //Cฺ + BYTE byRes[4]; +} NET_DVR_LOAD_FACTOR, *LPNET_DVR_LOAD_FACTOR; + +//UPS״̬ +typedef struct tagNET_DVR_ALARMHOST_UPS_STATE +{ + NET_DVR_VOLTAGE struInputVoltage; //ѹ + NET_DVR_VOLTAGE struBypassVoltage; //·ѹ + NET_DVR_VOLTAGE struOutputVoltage; //ѹ + int iRectifierVol; //ѹ + int iInverterVol; //ѹ + + NET_DVR_CURRENT struInputCurrent; // + NET_DVR_CURRENT struBypassCurrent; //· + NET_DVR_CURRENT struOutputCurrent; // + int iInverterCurrent; // + + NET_DVR_FREQUENCY struInputFrequency; //Ƶ + NET_DVR_FREQUENCY struBypassFrequency; //·Ƶ + NET_DVR_FREQUENCY struOutputFrequency; //Ƶ + int iInverterFre; //Ƶ + + NET_DVR_POWER struInputPower; //빦 + NET_DVR_POWER struBypassPower; //· + NET_DVR_POWER struOutputPower; // + NET_DVR_POWER struComplexPower; // + + int iNormalPower; //ƹ + int iPowerFacter; // + + NET_DVR_LOAD_FACTOR struBatteryLoadFactor; //ظ + int iBatteryEstimated; //رʱ(min) + int iBatteryTemperature; //¶ + int iBatteryVoltage; //صѹ + + + BYTE byRectifierState; //״̬/*1 2쳣*/ + BYTE byInverterState; //״̬/*1 2쳣*/ + BYTE byChargeState; //״̬/*1 2쳣*/ + BYTE byBatteryState; //״̬/*1 2쳣*/ + BYTE byAutoBypassState; //Զ·״̬/*1 2쳣*/ + BYTE byRes2[247]; +} NET_DVR_ALARMHOST_UPS_STATE, *LPNET_DVR_ALARMHOST_UPS_STATE; + +//صԴ״̬ +typedef struct tagNET_DVR_ALARMHOST_SWITCH_POWER_STATE +{ + NET_DVR_VOLTAGE struACVoltage; //ѹ + int iDCConvertVoltage; //DCתѹ + NET_DVR_CURRENT struACCurrent; // + int iTotalCurrent; //ܵ + int iBattery1Temperature; //1¶ + int iBattery2Temperature; //2¶ + int iBattery1Current; //1 + int iBattery2Current; //2 + int iBattery3Current; //3 + int iBattery4Current; //4 + int iBatteryTestVoltage; //زԵѹ + int iRectifierOutputVoltage; //ģѹ + int iRectifierOutputCurrent; //ģ + int iDCOutputVoltage; //ֱѹ + BYTE byRes[432]; +} NET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_STATE, +*LPNET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_STATE; + +//̽״̬ +typedef struct tagNET_DVR_ALARMHOST_GAS_DETECTOR_STATE +{ + int iSF6; //SF6λppm + int iFlow; //ml/min + int iTemperature; //¶ȣλ϶ + int iO2; //λ% + int iHumidity; //ʪȣλ% + BYTE byRes[492]; +} NET_DVR_ALARMHOST_GAS_DETECTOR_STATE, +*LPNET_DVR_ALARMHOST_GAS_DETECTOR_STATE; + +//ʪȴ״̬ +typedef struct tagNET_DVR_ALARMHOST_TEMP_HUMI_SENSOR_STATE +{ + int iTemperature; //¶ȣλ϶ + int iHumidity; //ʪȣλ% + BYTE byRes[504]; +} NET_DVR_ALARMHOST_TEMP_HUMI_SENSOR_STATE, *LPNET_DVR_ALARMHOST_TEMP_HUMI_SENSOR_STATE; + +//յ״̬ +typedef struct tagNET_DVR_ALARMHOST_AIRCONDITION_STATE +{ + int iTemperature; //¶ȣλ϶ + int iHumidity; //ʪȣλ% + BYTE byRunState; //״̬ 1-2-ͣ + BYTE byRes[503]; +} NET_DVR_ALARMHOST_AIRCONDITION_STATE, *LPNET_DVR_ALARMHOST_AIRCONDITION_STATE; + + +//״̬ +typedef struct tagNET_DVR_ALARMHOST_ELECTRICITY_STATE +{ + int iDCVoltage; //ֱѹ + int iDCCurrent; //ֱ + NET_DVR_VOLTAGE struPhaseVoltage; //ѹ + NET_DVR_LINE_VOLTAGE struLineVoltage; //ߵѹ + NET_DVR_CURRENT struCurrent[4]; //struCurrent[0]ʾ1·, Դ + int iAverageCurrent; //ƽ + int iNeutralCurrent; //ߵ + NET_DVR_POWER struActivePower[4]; //й struActivePower[0]ʾһ·йʣԴ + NET_DVR_POWER struReactivePower[4]; //޹ struReactivePower[0]ʾһ·޹ʣԴ + NET_DVR_POWER struApparentPower[4]; //ڹ struApprentPower[0]ʾһ·ڹʣԴ + NET_DVR_POWER_FACTOR struPowerFactor[4]; //struPowerFactor[0]ʾһ·Դ + NET_DVR_FREQUENCY struFrequency; //Ƶ + BYTE byRes[128]; +}NET_DVR_ALARMHOST_ELECTRICITY_STATE, *LPNET_DVR_ALARMHOST_ELECTRICITY_STATE; + +//Ա״̬ +typedef struct tagNET_DVR_ALARMHOST_TRANSFORMER_TEMP_STATE +{ + int iPhaseATemperature; //A¶ + int iPhaseBTemperature; //B¶ + int iPhaseCTemperature; //C¶ + int iPhaseDTemperature; //D¶ + BYTE byRes[496]; +}NET_DVR_ALARMHOST_TRANSFORMER_TEMP_STATE, *LPNET_DVR_ALARMHOST_TRANSFORMER_TEMP_STATE; + +//ˮλ +typedef struct tagNET_DVR_ALARMHOST_WATERLEVEL_SENSOR +{ + LONG iWaterLevel; //ˮλ + BYTE byRes[508]; +}NET_DVR_ALARMHOST_WATERLEVEL_SENSOR, *LPNET_DVR_ALARMHOST_WATERLEVEL_SENSOR; + +//ﳾ +typedef struct tagNET_DVR_ALARMHOST_DUSTNOISE_SENSOR +{ + LONG iDust; //ﳾ + LONG iNoise; // + LONG iPM25; //PM2.5 + BYTE byRes[500]; +}NET_DVR_ALARMHOST_DUSTNOISE_SENSOR, *LPNET_DVR_ALARMHOST_DUSTNOISE_SENSOR; + +//ɼ +typedef struct tagNET_DVR_ALARMHOST_ENVIRONMENTAL_LOGGER +{ + LONG iAmmoniaNitrogen; // + LONG iCOD; //COD + LONG iPH; //PH + LONG iOxygen; // + LONG iSulfurDioxide; // + LONG iSoot; //̳ + LONG iFluoride; // + LONG iPollutedWater; //ˮ + LONG iTotalPhosphorus; // + LONG iExhaust; // + LONG iNitrogenOxides; // + LONG iFlueGasTemperature;//¶ + LONG iFlueGasPressure; //ѹ + LONG iDustThickness; /*۳Ũ*/ + LONG iAirCleanLevel; /*ྻȵȼ*/ + LONG iPm10Thickness; /*PM10Ũ*/ + BYTE byRes[448]; +}NET_DVR_ALARMHOST_ENVIRONMENTAL_LOGGER, *LPNET_DVR_ALARMHOST_ENVIRONMENTAL_LOGGER; + +//ٴ״̬ +typedef struct +{ + int iWindSpeed; /**/ + BYTE byRes[508]; +}NET_DVR_WIND_SPEED_STATE, *LPNET_DVR_WIND_SPEED_STATE; + +//ͨչģ״̬48·ÿλʾ1·0ʾأ1ʾ +typedef struct +{ + BYTE byOutPutState1; /*output1-8*/ + BYTE byOutPutState2; /*output9-16*/ + BYTE byOutPutState3; /*output17-24*/ + BYTE byOutPutState4; /*output25-32*/ + BYTE byOutPutState5; /*output33-40*/ + BYTE byOutPutState6; /*output41-48*/ + BYTE Res[506]; +}NET_DVR_GENERATE_OUTPUT_STATE, *LPNET_DVR_GENERATE_OUTPUT_STATE; + +//ˮ״̬ +typedef struct +{ + int iWaterLogVal; /* й¶λã100*/ + int iLeakResist1; /*һ·©ˮ*/ + int iTotolResist1; /*һ·ܵ*/ + int iLeakResist2; /*ڶ·©ˮ*/ + int iTotolResist2; /*ڶ·ܵ*/ + BYTE byWaterLogAlarm; /* й©12澯*/ + BYTE byLeakAlarm1; /*һ·©ˮ澯12澯*/ + BYTE byFaultAlarm1; /*һ·ϸ澯12澯*/ + BYTE byLeakAlarm2; /*ڶ·©ˮ澯12澯*/ + BYTE byFaultAlarm2; /*ڶ·ϸ澯12澯*/ + BYTE byRes[487]; +}NET_DVR_SOAK_STATE, *LPNET_DVR_SOAK_STATE; + +//̫ܿ״̬ +typedef struct +{ + int iChangerVolInput; /*豸ѹ*/ + int iChangerCurInput; /*豸*/ + int iChangerPwInput; /*豸빦*/ + int iChangerVolOutput; /*豸ѹ*/ + int iChangerCurOutput; /*豸*/ + int iChangerPwOutput; /*豸*/ + int iDischangerVolOutput; /*ŵ豸ѹ*/ + int iDischangerCurOutput; /*ŵ豸*/ + int iDischangerPwOutput; /*ŵ豸*/ + int iDevTemperatrue; /*豸¶*/ + BYTE byBatteryVolState; /*صѹ״̬12쳣*/ + BYTE byBatteryTmpState; /*¶״̬12쳣*/ + BYTE byChangerVolInputState; /*豸ѹ״̬12쳣*/ + BYTE byChangerRunState; /*豸״̬12*/ + BYTE byChangerChgState; /*豸״̬12쳣*/ + BYTE byBatteryVolFlt; /*صѹ12澯*/ + BYTE byBatteryTmpFlt; /*¶쳣12澯*/ + BYTE byBatteryResistanceFlt; /*쳣12澯*/ + BYTE byVolRcgFlt; /*ѹʶ12澯*/ + BYTE byChangerVolInputFlt; /*豸ѹ쳣12澯*/ + BYTE byChangerMosShort; /*MOSܶ·12澯*/ + BYTE byChangerAntiOrMosShort; /*MOSܶ·12澯*/ + BYTE byChangerAntiShort; /*MOSܶ·12澯*/ + BYTE byInputOverCur; /*12澯*/ + BYTE byLoadOverCur; /*ع12澯*/ + BYTE byLoadShort; /*ض·12澯*/ + BYTE byLoadMosShort; /*MOSܶ·12澯*/ + BYTE byChangerFlt; /*豸12澯*/ + BYTE byRes[454]; +}NET_DVR_SOLAR_POWER_STATE, *LPNET_DVR_SOLAR_POWER_STATE; + +//SF6״̬ +typedef struct +{ + int iSf6Thick1; /*һSF6Ũ*/ + int iO2Thick1; /*һŨ*/ + int iTemprature1; /*һ¶*/ + int iHumidity1; /*һʪ*/ + int iSf6Thick2; /*ڶSF6Ũ*/ + int iO2Thick2; /*ڶŨ*/ + int iTemprature2; /*ڶ¶*/ + int iHumidity2; /*ʪ*/ + int iSf6Thick3; /*SF6Ũ*/ + int iO2Thick3; /*Ũ*/ + int iTemprature3; /*¶*/ + int iHumidity3; /*ʪ*/ + int iSf6Thick4; /*ĵSF6Ũ*/ + int iO2Thick4; /*ĵŨ*/ + int iTemprature4; /*ĵ¶*/ + int iHumidity4; /*ĵʪ*/ + int iSf6Thick5; /*SF6Ũ*/ + int iO2Thick5; /*Ũ*/ + int iTemprature5; /*¶*/ + int iHumidity5; /*ʪ*/ + int iSf6Thick6; /*SF6Ũ*/ + int iO2Thick6; /*Ũ*/ + int iTemprature6; /*¶*/ + int iHumidity6; /*ʪ*/ + int iSf6Thick7; /*ߵSF6Ũ*/ + int iO2Thick7; /*ߵŨ*/ + int iTemprature7; /*ߵ¶*/ + int iHumidity7; /*ߵʪ*/ + int iSf6Thick8; /*ڰ˵SF6Ũ*/ + int iO2Thick8; /*ڰ˵Ũ*/ + int iTemprature8; /*ڰ˵¶*/ + int iHumidity8; /*ڰ˵ʪ*/ + int iSf6Thick9; /*ھŵSF6Ũ*/ + int iO2Thick9; /*ھŵŨ*/ + int iTemprature9; /*ھŵ¶*/ + int iHumidity9; /*ھŵʪ*/ + int iSf6Thick10; /*ʮSF6Ũ*/ + int iO2Thick10; /*ʮŨ*/ + int iTemprature10; /*ʮ¶*/ + int iHumidity10; /*ʮʪ*/ + int iSf6Thick11; /*ʮһSF6Ũ*/ + int iO2Thick11; /*ʮһŨ*/ + int iTemprature11; /*ʮһ¶*/ + int iHumidity11; /*ʮһʪ*/ + int iSf6Thick12; /*ʮSF6Ũ*/ + int iO2Thick12; /*ʮŨ*/ + int iTemprature12; /*ʮ¶*/ + int iHumidity12; /*ʮʪ*/ + BYTE byFanState1; /*״̬1 1У2ֹͣ*/ + BYTE byFanState2; /*״̬2 1У2ֹͣ*/ + BYTE byFanState3; /*״̬3 1У2ֹͣ*/ + BYTE byFanState4; /*״̬4 1У2ֹͣ*/ + BYTE byFanState5; /*״̬5 1У2ֹͣ*/ + BYTE byFanState6; /*״̬6 1У2ֹͣ*/ + BYTE byFanState7; /*״̬7 1У2ֹͣ*/ + BYTE byFanState8; /*״̬8 1У2ֹͣ*/ + BYTE byFanState9; /*״̬9 1У2ֹͣ*/ + BYTE byFanState10; /*״̬10 1У2ֹͣ*/ + BYTE byFanState11; /*״̬11 1У2ֹͣ*/ + BYTE byFanState12; /*״̬12 1У2ֹͣ*/ + BYTE byRes[308]; +}NET_DVR_SF6_ALARMHOST_STATE, *LPNET_DVR_SF6_ALARMHOST_STATE; + +//״̬ +typedef struct +{ + int iWeight; /*ֵ,1000*/ + BYTE byRes[508]; +}NET_DVR_WEIGHT_STATE, *LPNET_DVR_WEIGHT_STATE; + +//ɼϵͳ״̬ +typedef struct +{ + int iAirTemperature; /* ¶*/ + DWORD dwAirHumidity; /* ʪ*/ + DWORD dwWindSpeed; /* */ + DWORD dwWindDirection; /* */ + DWORD dwIlluminationIntensity; /* ǿ*/ + DWORD dwCO2; /* co2Ũ*/ + DWORD dwPM25; /* PM2.5Ũ*/ + DWORD dwAirPressure; /* ѹ*/ + int iSoilTemperature; /* ¶*/ + DWORD dwSoilHumidity; /* ʪ*/ + DWORD dwRainFall; /**/ + BYTE byIsRainSnow; /* ѩ1-ѩ2-ѩ*/ + BYTE byRes[467]; +}NET_DVR_WEATHER_STATION_STATE, *LPNET_DVR_WEATHER_STATION_STATE; + +//ˮʼ״̬ +typedef struct +{ + DWORD dwTurbidity; /* Ƕֵ*/ + DWORD dwChlorine; /* ֵ*/ + DWORD dwPH; /* PH ֵ*/ + BYTE byRes[500]; +}NET_DVR_WATER_QLT_STATE, *LPNET_DVR_WATER_QLT_STATE; + +//ȼϵͳ״̬ +typedef struct +{ + int iNatrualGasThick; /* ȻŨ*/ + BYTE byRes[508]; +}NET_DVR_FUEL_GAS_DETE_STATE, *LPNET_DVR_FUEL_GAS_DETE_STATE; + +//豸 +typedef struct tagNET_DVR_FIRE_ALARM_STATUS +{ + BYTE byFireAlarm[MAX_FIRE_ALARM_ZONE][MAX_FIRE_ALARM_POINT_ZONE]; //״̬λ1-2-澯 + BYTE byRes[128]; //λ +}NET_DVR_FIRE_ALARM_STATUS, *LPNET_DVR_FIRE_ALARM_STATUS; + +typedef union tagNET_DVR_EXTERNAL_DEVICE_STATE_UNION +{ + NET_DVR_ALARMHOST_UPS_STATE struUpsState; //UPS״̬ + NET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_STATE struSwitchPowerState;//صԴ״̬ + NET_DVR_ALARMHOST_GAS_DETECTOR_STATE struGasDetectorState;//ϵͳ״̬ + NET_DVR_ALARMHOST_TEMP_HUMI_SENSOR_STATE struTempHumiSensorState;//ʪȴ״̬ + NET_DVR_ALARMHOST_AIRCONDITION_STATE struAirConditionState;//յ״̬ + NET_DVR_ALARMHOST_ELECTRICITY_STATE struElectricityState;//״̬ + NET_DVR_ALARMHOST_TRANSFORMER_TEMP_STATE struTransformerTempState; //״̬ + NET_DVR_ALARMHOST_WATERLEVEL_SENSOR struWaterLevelSensor;//ˮλ + NET_DVR_ALARMHOST_DUSTNOISE_SENSOR struDustNoiseSensor;//ﳾ + NET_DVR_ALARMHOST_ENVIRONMENTAL_LOGGER struEnvironmentLogger;//ɼ + NET_DVR_WIND_SPEED_STATE struWindSpeedState; //ٴ״̬ + NET_DVR_GENERATE_OUTPUT_STATE struGenerateOutputState; //ͨչģ״̬48·ÿλʾ1· + NET_DVR_SOAK_STATE struSoakState; //ˮ״̬ + NET_DVR_SOLAR_POWER_STATE struSolarPowerState; //̫ܿ״̬ + NET_DVR_SF6_ALARMHOST_STATE struSF6AlarmHostState; //SF6״̬ + NET_DVR_WEIGHT_STATE struWeightState; //״̬ + NET_DVR_WEATHER_STATION_STATE struWeatherStationState; //ɼϵͳ״̬ + NET_DVR_WATER_QLT_STATE struWaterQltState; //ˮʼ״̬ + NET_DVR_FUEL_GAS_DETE_STATE struFuelGasDeteState; //ȼϵͳ״̬ + NET_DVR_FIRE_ALARM_STATUS struFireAlarmStatus; //豸״̬ + BYTE byRes[512]; +} NET_DVR_EXTERNAL_DEVICE_STATE_UNION, *LPNET_DVR_EXTERNAL_DEVICE_STATE_UNION; + +typedef struct tagNET_DVR_ALARMHOST_EXTERNAL_DEVICE_STATE +{ + DWORD dwSize; + BYTE byDevType; //1-UPS2-صԴ3-ϵͳ4-ʪȴ5-յ6-7-״̬, 8-ˮλ9-ﳾ10-ɼǡ11-ٴ״̬12-ͨչģ״̬13-ˮ״̬14-̫ܿ״̬15-SF6״̬16-״̬17-ɼϵͳ״̬18-ˮʼ״̬19-ȼϵͳ״̬20-״̬ + BYTE byRes1[3]; + NET_DVR_EXTERNAL_DEVICE_STATE_UNION struDevState; + BYTE byRes2[32]; +} NET_DVR_ALARMHOST_EXTERNAL_DEVICE_STATE, *LPNET_DVR_ALARMHOST_EXTERNAL_DEVICE_STATE; + +//ͨչģƣ48·ÿλʾ1· +typedef struct +{ + DWORD dwSize; + BYTE byOutPutState1; /*output1-8*/ + BYTE byOutPutState2; /*output9-16*/ + BYTE byOutPutState3; /*output17-24*/ + BYTE byOutPutState4; /*output25-32*/ + BYTE byOutPutState5; /*output33-40*/ + BYTE byOutPutState6; /*output41-48*/ + BYTE byOperateType; //ͣ0-Ч1-2- + BYTE Res[65]; +}NET_DVR_GENERATE_OUTPUT_CTRL, *LPNET_DVR_GENERATE_OUTPUT_CTRL; + +//UPSֵ +typedef struct tagNET_DVR_ALARMHOST_UPS_LIMIT_VALUE +{ + int iInputVolHigh; //Խѹֵ(ֵ) + int iInputVolLow; //Խѹֵ(ֵ) + int iInputFreHigh; //ԽƵֵ(ֵ) + int iInputFreLow; //ԽƵֵ(ֵ) + int iOutputVolHigh; //Խѹֵ(ֵ) + int iOutputVolLow; //Խѹֵ(ֵ) + int iBatteryVoltageLow; //ص͵ѹֵ + int iBatterySurplus; //غʱ ֵ + int iBatteryTemperatureHigh;//¶ȸֵ + BYTE byRes[64]; // +}NET_DVR_ALARMHOST_UPS_LIMIT_VALUE, *LPNET_DVR_ALARMHOST_UPS_LIMIT_VALUE; + +//ʪȴֵ +typedef struct tagNET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_LIMIT_VALUE +{ + int iTemperatureHighLimit; //¶ȸֵλ϶ + int iTemperatureLowLimit; //¶ȵֵλ϶ + int iHumidityHighLimit; //ʪȸֵλ% + int iHumidityLowLimit; //ʪȵֵλ% + BYTE byRes[84]; +} NET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_LIMIT_VALUE, *LPNET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_LIMIT_VALUE; + +typedef union tagNET_DVR_EXTERNAL_DEVICE_LIMIT_VALUE_UNION +{ + NET_DVR_ALARMHOST_UPS_LIMIT_VALUE struUpsLimitValue; + NET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_LIMIT_VALUE struTempHumidityLimitValue; +}NET_DVR_EXTERNAL_DEVICE_LIMIT_VALUE_UNION,*LPNET_DVR_EXTERNAL_DEVICE_LIMIT_VALUE_UNION; + +typedef struct tagNET_DVR_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE +{ + DWORD dwSize; + BYTE byDevType; //1-UPS2-ʪȴ + BYTE byRes1[3]; + NET_DVR_EXTERNAL_DEVICE_LIMIT_VALUE_UNION struAlarmValue; + BYTE byRes2[32]; +}NET_DVR_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE, *LPNET_DVR_ALARMHOST_EXTERNAL_DEVICE_LIMIT_VALUE; + +#define ALARMHOST_ALARMOUT_NUM 64 // +#define MAX_OSD_UNIT_LEN 8 //OSDλ +typedef struct tagNET_DVR_ALARMHOST_SENSOR_JOINT_CFG +{ + DWORD dwSize; + BYTE bySensorJointAlarmOut[MAX_ALARMHOST_ALARMOUT_NUM/*512*/];//ģ0-1- + BYTE bySensorJointSiren[ALARMHOST_MAX_SIREN_NUM/*8*/];//ģ + BYTE bySensorAlarmTypeJointAlarmOut[ALARMHOST_ALARMOUT_NUM/*64*/];//ģֶbySensorJointAlarmOutչ±ʾţԪصֵλʾͣͼ""Ĺϵֵ壺1bit0-1bit1-2bit2-3bit3-4bit4- + BYTE bySesorAlarmTypeJointSiren[ALARMHOST_MAX_SIREN_NUM]; //ģţֶbySensorJointSirenչ±ʾţԪصֵλʾͣͼ""Ĺϵֵ壺bit0-1bit1-2bit2-3bit3-4bit4- + BYTE byChan; //ͨ + BYTE byRes[55]; +}NET_DVR_ALARMHOST_SENSOR_JOINT_CFG, *LPNET_DVR_ALARMHOST_SENSOR_JOINT_CFG; + +//UPSϢϴ +typedef struct tagNET_DVR_ALARMHOST_UPS_ALARMINFO +{ + BYTE byAlarmType;/*ͣ1.AѹԽ 2.BѹԽ 3.CѹԽ 4.AѹԽ5.BѹԽ 6.CѹԽ7.AƵԽ 8.BƵԽ9.CƵԽ10.ѹԽޱ 11.ر 12.صѹͱ 13.غʱ䳬ͱ 14.¶ȳ߱ 15.رձ 16.Զ· 17.ϱ 18.ϱ 19.ϱ 20.عϱ 21.Զ·ϱ */ + BYTE byChanNo; //485ͨţ1ʼ + BYTE bySlotNo; //485λ + BYTE byRes1; // + int iAlarmValue;//ֵ + BYTE byRes2[64]; // +}NET_DVR_ALARMHOST_UPS_ALARMINFO, *LPNET_DVR_ALARMHOST_UPS_ALARMINFO; + +//صԴϴ +typedef struct tagNET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_ALARMINFO +{ + BYTE byAlarmType; /*ͣ1-زʧ 2-AC-DCתϣ3-/ѹAB/AԽޣ4-/ѹBC/BԽޣ5-/ѹCA/CԽޣ6-AԽޣ7-BԽޣ8-CԽޣ9ģϣ10-ȹϣ11-ֱѹԽ*/ + BYTE byChanNo; //485ͨţ1ʼ + BYTE bySlotNo; //485λ + BYTE byRes1; + int iAlarmValue; //ֵ + BYTE byRes2[64]; +}NET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_ALARMINFO, +*LPNET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_ALARMINFO; + +//ϵͳ +typedef struct tagNET_DVR_ALARMHOST_GAS_DETECT_SYS_ALARMINFO +{ + BYTE byAlarmType; /*ͣ1- SF6庬쳣2-쳣3-¶ֵ쳣4-ʪֵ쳣5-*/ + BYTE byChanNo; //485ͨţ1ʼ + BYTE bySlotNo; //485λ + BYTE byRes1; + int iAlarmValue; //ֵ + BYTE byRes2[64]; +}NET_DVR_ALARMHOST_GAS_DETECT_SYS_ALARMINFO, +*LPNET_DVR_ALARMHOST_GAS_DETECT_SYS_ALARMINFO; + + +//ʪȴ +typedef struct tagNET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_ALARMINFO +{ + BYTE byAlarmType; //1-¶쳣2-ʪ쳣 + BYTE byChanNo; //485ͨ + BYTE bySlotNo; //485λ + BYTE byRes1; + int iAlarmValue; //ֵ + BYTE byRes2[64]; +} NET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_ALARMINFO, *LPNET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_ALARMINFO; + +typedef union tagNET_DVR_485_DEVICE_ALARM_UNION +{ + NET_DVR_ALARMHOST_UPS_ALARMINFO struUPSAlarm; //UPS + NET_DVR_ALARMHOST_SWITCH_POWER_SUPPLY_ALARMINFO struSwitchPowerAlarm; //صԴ + NET_DVR_ALARMHOST_GAS_DETECT_SYS_ALARMINFO struGasDetectSystemAlarm; //ϵͳ + NET_DVR_ALARMHOST_TEMP_HUMIDITY_SENSOR_ALARMINFO struTempHumiditySensorAlarm; //ʪȴ + BYTE byRes[72]; +} NET_DVR_485_DEVICE_ALARM_UNION, *LPNET_DVR_485_DEVICE_ALARM_UNION; + +//485豸Ϣ +typedef struct tagNET_DVR_485_EXTERNAL_DEVICE_ALARMINFO +{ + DWORD dwSize; + BYTE byAlarmType; //1-UPS2-صԴ3-ϵͳ4-ʪȴ + BYTE byRes1[3]; + NET_DVR_485_DEVICE_ALARM_UNION struAlarmInfo; + BYTE byRes2[16]; +} NET_DVR_485_EXTERNAL_DEVICE_ALARMINFO, *LPNET_DVR_485_EXTERNAL_DEVICE_ALARMINFO; + +typedef struct tagNET_DVR_ALARMHOST_RS485_SLOT_CFG +{ + DWORD dwSize; // ṹС + BYTE sDeviceName[NAME_LEN]; // ǰ豸 + WORD wDeviceType; // ǰ豸ALARM_FRONT_DEVICE _TYPE + WORD wDeviceProtocol; // ǰ豸Э ͨȡЭбȡ + WORD wAddress; //豸ַ + BYTE byChannel; //485ͨ + BYTE bySlotChan; //λ + BYTE byRes[60]; // ֽ +}NET_DVR_ALARMHOST_RS485_SLOT_CFG, *LPNET_DVR_ALARMHOST_RS485_SLOT_CFG; + +//ģʽ +typedef struct tagNET_DVR_CORRIDOR_MODE +{ + DWORD dwSize; + BYTE byEnableCorridorMode; //Ƿģʽ 0ã 1 + BYTE byMirrorMode; //ʽ0 ر;1 ;2 ;3 м + BYTE byRes[126]; +}NET_DVR_CORRIDOR_MODE, *LPNET_DVR_CORRIDOR_MODE; + +// +typedef struct tagNET_DVR_DETECT_FACE +{ + DWORD dwSize; + BYTE byEnableDetectFace; //Ƿ 0ã 1 + BYTE byDetectSensitive; // 10ȼ 110 + BYTE byEnableDisplay; /*ƶʾ0-1-*/ + BYTE byRes; + NET_DVR_HANDLEEXCEPTION_V40 struAlarmHandleType; /*ʽ*/ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*ʱ */ + DWORD dwMaxRelRecordChanNum; //¼ͨ ֻ֧ + DWORD dwRelRecordChanNum; //¼ͨ ʵ֧ + DWORD dwRelRecordChan[MAX_CHANNUM_V30]; /* ¼ͨ*/ + NET_DVR_SCHEDTIME struHolidayTime[MAX_TIMESEGMENT_V30]; //ղʱ + WORD wDuration; //ʱ 5s + BYTE byRes1[30]; +}NET_DVR_DETECT_FACE, *LPNET_DVR_DETECT_FACE; + +typedef struct tagNET_DVR_MUL_STREAM_CHANNEL_GROUP +{ + DWORD dwSize; // ṹС + DWORD dwGroup ; // + NET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND struMultiStreamCfg; // + BYTE byRes[64] ; +}NET_DVR_MUL_STREAM_CHANNEL_GROUP,*LPNET_DVR_MUL_STREAM_CHANNEL_GROUP; + +typedef struct tagNET_DVR_CHANNEL_GROUP +{ + DWORD dwSize; // ṹС + DWORD dwChannel; //ͨ + DWORD dwGroup; // + BYTE byID; //豸ID + BYTE byRes1[3]; + DWORD dwPositionNo; //λ,IPC0IPDǴ1ʼ + BYTE byRes[56]; +}NET_DVR_CHANNEL_GROUP, *LPNET_DVR_CHANNEL_GROUP; + + +typedef struct tagNET_DVR_TIME_DETECTION +{ + NET_DVR_SCHEDTIME struSchedTime; //ʱ + BYTE byDetSceneID;//ⳡ[1,4],IPCĬ0 + BYTE byRes[15]; +}NET_DVR_TIME_DETECTION,*LPNET_DVR_TIME_DETECTION; + +//ץĴģʽֹ֧ʱκϴ +typedef struct tagNET_DVR_GUARD_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + /* + 0ʾЧ + 1ʾ ץVIAģʽƵץ IPCʹã; + 2 ʾ ץ HVT ģʽ 쿨IPCʹã + */ + BYTE byRelateType; + BYTE byGroupNo; // + BYTE byRes[62]; +}NET_DVR_GUARD_COND,*LPNET_DVR_GUARD_COND; + +//ץĴģʽֹ֧ʱκϴ +typedef struct tagNET_DVR_GUARD_CFG +{ + DWORD dwSize; + //ʱ + NET_DVR_TIME_DETECTION struAlarmSched[MAX_DAYS/*7*/][MAX_TIMESEGMENT_V30/*8*/]; + NET_DVR_HANDLEEXCEPTION_V40 struHandleException; //쳣ʽ + DWORD dwMaxRelRecordChanNum ; //¼ͨ ֻ֧ + DWORD dwRelRecordChanNum ; //ʵʴ¼ͨ + DWORD dwRelRecordChan[MAX_CHANNUM_V30]; //¼ͨ(0xffff ffffʾЧ + NET_DVR_TIME_DETECTION struHolidayTime[MAX_TIMESEGMENT_V30]; //ղʱ + BYTE byDirection;//0-1-ȫ2-3- + BYTE byRes[87]; +}NET_DVR_GUARD_CFG,*LPNET_DVR_GUARD_CFG; + +//ץͼƬչṹ +typedef struct tagNET_DVR_SNAPINFO_COND_ +{ + DWORD dwSize; + DWORD dwChan; + /* + 0 ʾ ץMPRģʽ֡ץ IPCʹã + 1 ʾ ץ HVT ģʽ쿨IPCʹã + */ + BYTE byRelateType; + BYTE byRes[63]; // +}NET_DVR_SNAPINFO_COND, *LPNET_DVR_SNAPINFO_COND; + + +//ץͼƬ +typedef struct tagNET_DVR_SNAPINFOCFG +{ + DWORD dwSize; + BYTE byCurPicType;//0-ʾͼƬ1-ʾͼƬС + BYTE byPicQuality;//ͼƬ[1,100] + BYTE byRes1[2]; + DWORD dwPicSize;//ͼƬС[64k,2048k] + BYTE byRes2[128]; +}NET_DVR_SNAPINFOCFG,*LPNET_DVR_SNAPINFOCFG; + +//ptzٷʽ +typedef enum _PTZ_TRACK_MODE_ +{ + PTZ_TRACK_MODE_ALWAYS = 1, //һֱ + PTZ_TRACK_MODE_BYTIME = 2, //ָʱ + PTZ_TRACK_MODE_NEXT = 3, //һĿ +}PTZ_TRACK_MODE; + +//ptzٲ +typedef struct _NET_DVR_PTZ_TRACK_PARAM_ +{ + DWORD dwSize; //ṹС + BYTE byTrackMode; //ٷʽ,οPTZ_TRACK_MODE + BYTE byLinkageTarget; //Ŀ0-Ĭ,1-1,2-2.. + BYTE byAutoTrackEnable;//ʹ 0-Զٿ1-Զٹرգǹ豸֧Զٹرչܣڴչ + BYTE byRes1; // + DWORD dwTrackTime; //ʱ䣬 + //ģʽΪPTZ_TRACK_MODE_ALWAYSֶЧ + //ģʽΪPTZ_TRACK MODE_BYTIMEʱΧ[1,60]Ĭ10 + //ģʽΪPTZ_TRACK MODE_NEXTʱΧ[1,10]Ĭ2 + BYTE byRes2[256]; // +}NET_DVR_PTZ_TRACK_PARAM,*LPNET_DVR_PTZ_TRACK_PARAM; + +typedef struct tagNET_VCA_TRAVERSE_PLANEPARAM +{ + DWORD dwSize; + BYTE byEnable;//ʹ + BYTE byEnableDualVca;// ֧ܺ 0-ã1- + BYTE byEnableHumanMisinfoFilter;// ȥ 0-ã1- + BYTE byEnableVehicleMisinfoFilter;// óȥ 0-ã1- + NET_VCA_TRAVERSE_PLANE struAlertParam[MAX_ALERTLINE_NUM]; //߲ + NET_DVR_SCHEDTIME struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; + NET_DVR_HANDLEEXCEPTION_V40 struHandleException; //쳣ʽ + DWORD dwMaxRelRecordChanNum ; //¼ͨ ֻ֧ + DWORD dwRelRecordChanNum ; //¼ͨ ʵֵ֧ + DWORD byRelRecordChan[MAX_CHANNUM_V30];//¼ͨ + NET_DVR_SCHEDTIME struHolidayTime[MAX_TIMESEGMENT_V30]; //ղʱ + BYTE byRes2[100]; +}NET_VCA_TRAVERSE_PLANE_DETECTION, *LPNET_VCA_TRAVERSE_PLANE_DETECTION; + + +typedef struct tagNET_VCA_FIELDDETECION +{ + DWORD dwSize; + BYTE byEnable; //ʹܣǷ + BYTE byEnableDualVca;// ֧ܺ 0-ã1- + BYTE byEnableHumanMisinfoFilter;// ȥ 0-ã1- + BYTE byEnableVehicleMisinfoFilter;// óȥ 0-ã1- + NET_VCA_INTRUSION struIntrusion[MAX_INTRUSIONREGION_NUM];//ÿIJ + NET_DVR_SCHEDTIME struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; //ʱ + NET_DVR_HANDLEEXCEPTION_V40 struHandleException; //쳣ʽ + DWORD dwMaxRelRecordChanNum ; //¼ͨ ֻ֧ + DWORD dwRelRecordChanNum ; //¼ͨ ʵֵ֧ + DWORD byRelRecordChan[MAX_CHANNUM_V30];//¼ͨ + NET_DVR_SCHEDTIME struHolidayTime[MAX_TIMESEGMENT_V30/*8*/]; //ղʱ + BYTE byRes2[100]; +}NET_VCA_FIELDDETECION, *LPNET_VCA_FIELDDETECION; + +typedef struct tagNET_DVR_ROI_DETECT_NUM +{ + DWORD dwSize; + DWORD dwGroup; + DWORD dwStreamType; //ͣ0-1-2-¼ͣ3-3 + DWORD dwRoiFixNum; //̶ȷٴλȡ + DWORD dwRoiFixID[MAX_ROIDETECT_NUM];//IPC֧4֧24 + BYTE szFixRoiName[MAX_ROIDETECT_NUM][NAME_LEN];//̶ROI + DWORD dwRoiTrackNum; //Զȷٴλȡ + DWORD dwRoiTrackID[MAX_ROIDETECT_NUM];//IPC֧4֧24 + BYTE byRes[320]; +}NET_DVR_ROI_DETECT_NUM, *LPNET_DVR_ROI_DETECT_NUM; + +typedef enum _DETECT_ROI_TYPE_ +{ + DETECT_FIX_ROI = 0, //ROI̶ + DETECT_TRACK_ROI = 1 //ROI Զ +}DETECT_ROI_TYPE; +// +typedef struct tagNET_DVR_ROI_DETECT_COND +{ + DWORD dwSize; + DWORD dwRoiID; // һPTZ֧4 + NET_DVR_MULTI_STREAM_COMPRESSIONCFG_COND struMultiStreamCfg; // + BYTE byRoiDetectType; // DECTECT_ROI_TYPE ֵ + BYTE byRoiDetectTrackType;//̶ʱֶЧʱ1⣨IPC,2ƶ,3-Ƹ + BYTE byRes[30]; +}NET_DVR_ROI_DETECT_COND,*LPNET_DVR_ROI_DETECT_COND; + +//ò +//ROI̶ģʽ 빦 +typedef struct tagNET_DVR_ROI_FIX_RECT_CFG +{ + BYTE byEnableFixRoi; // ROI̶ģʽ Ƿ 0ã 1 + BYTE byImageQualityLevel; //ͼȼ 16 + BYTE byRes[2]; + BYTE szFixRoiName[NAME_LEN]; + NET_VCA_RECT struRoiRect; //ROI + BYTE byRes1[468]; +}NET_DVR_ROI_FIX_RECT_CFG, *LPNET_DVR_ROI_FIX_RECT_CFG; + +//ROIԶģʽ 빦 +typedef struct tagNET_DVR_ROI_TRACK_RECT_CFG +{ + BYTE byEnableTrackRoi; // ROIԶģʽ Ƿ 0ã 1 + BYTE byImageQualityLevel; //ͼȼ 16 + BYTE byModeType;// 0 ~ , 1ģʽ(ƶ;ֹ), 2~ƶ(ƶ), 3-Ƹ + BYTE byRes[509]; +}NET_DVR_ROI_TRACK_RECT_CFG, *LPNET_DVR_ROI_TRACK_RECT_CFG; + +typedef union tagNET_DVR_ROI_DETECT_UNION +{ + DWORD uLen[128]; + NET_DVR_ROI_FIX_RECT_CFG strRoiFixRectCfg;//̶ģʽ + NET_DVR_ROI_TRACK_RECT_CFG strRoiTrackRectCfg;//Զģʽ +}NET_DVR_ROI_DETECT_UNION,*LPNET_DVR_ROI_DETECT_UNION; + +typedef struct tagNET_DVR_ROI_DETECT_CFG +{ + DWORD dwSize; //560 + DWORD dwStreamType; //ͣ0-1-2-¼ͣ3-3 + BYTE byRoiDetectType; // DECTECT_ROI_TYPE ֵ + BYTE byRes[3]; + NET_DVR_ROI_DETECT_UNION uRoiDetectInfo; //ROI + BYTE byRes1[36]; +}NET_DVR_ROI_DETECT_CFG, *LPNET_DVR_ROI_DETECT_CFG; + +//齹 +typedef struct tagNET_VCA_DEFOCUSPARAM +{ + DWORD dwSize; + BYTE byEnable;//ʹ + BYTE bySensitiveLevel;// 1-100Ĭ50ԽߣԽױ + BYTE byRes1[2]; + NET_DVR_HANDLEEXCEPTION_V40 struHandleException; //쳣ʽ + BYTE byRes2[24]; +}NET_VCA_DEFOCUSPARAM,*LPNET_VCA_DEFOCUSPARAM; + +typedef struct tagNET_PTZ_INFO_EX +{ + float fPan;//Pֵ ȷС3λ Χ[0,360.000] + float fTilt; //Zֵ ȷС3λ Χ[-90.000,90.000] + float fVisibleZoom;//ɼzoom ȷС1λ ᳬ[010000.0] + DWORD dwVisibleFocus;//ɼfocus[0,65535] + float fThermalZoom;//ȳzoom ȷС1λ ᳬ[010000.0] + DWORD dwThermalFocus;//ȳfocus[0,65535] +}NET_PTZ_INFO_EX, *LPNET_PTZ_INFO_EX; + +//IPC5.1.0 +typedef struct tagNET_DVR_PRESET_NAME +{ + DWORD dwSize; + WORD wPresetNum; //Ԥõ + BYTE byRes1[2]; //ֽڶ + char byName[NAME_LEN]; + WORD wPanPos;//ˮƽ ȡݴ360Ĭϼȥ360 + WORD wTiltPos;//ֱ ȡݴ360Ĭϼȥ360 + WORD wZoomPos;//䱶ȡݴ360Ĭϼȥ360 + BYTE byRes2; + BYTE byPTZPosExEnable; /*ǷPTZչ0~ãPTZֵwPanPoswTiltPoswZoomPosΪ׼1~ãPTZֵstruPtzPosExΪ׼*/ + NET_PTZ_INFO_EX struPtzPosEx;// ptzչ(ָ֧߾PTZֵ) + BYTE byRes[32]; +}NET_DVR_PRESET_NAME, *LPNET_DVR_PRESET_NAME; + +typedef struct +{ + NET_DVR_SCHEDTIME struSchedTime; //ʱ + WORD wAction; ///< ʱ嶯 + WORD wActionNum; ///< ⶯ӱţԤõ㣬Ѳҹл + BYTE byres[12]; +}NET_DVR_SCHEDTASK,* LPNET_DVR_SCHEDTASK; + +//ʱ +typedef struct tagNET_DVR_TIME_TASK +{ + DWORD dwSize; + BYTE byTaskEnable; ///< ʹ 1-0- + BYTE byRes[3]; ///< ֽڶ + NET_DVR_SCHEDTASK struTask[MAX_DAYS][MAX_SCH_TASKS_NUM]; ///< 7죬ÿ10ʱ + DWORD dwParkTime; ///< ʱ 5s-720s + BYTE byRes1[64]; +}NET_DVR_TIME_TASK,*LPNET_DVR_TIME_TASK; + +//ṹ +typedef struct tagNET_DVR_CHANNEL_INDEX +{ + DWORD dwSize; // ṹС + DWORD dwChannel ; //ͨ + DWORD dwIndex ; // + BYTE byRes[64] ; +}NET_DVR_CHANNEL_INDEX, *LPNET_DVR_CHANNEL_INDEX; + +typedef struct tagNET_DVR_AUDIO_NAME +{ + DWORD dwSize; // ṹС + char cName[NAME_LEN] ; // + BYTE byRes[64]; +}NET_DVR_AUDIO_NAME, *LPNET_DVR_AUDIO_NAME; + +//¼豸 +typedef struct tagNET_DVR_LOGIN_DEVICE_PARAM_ +{ + DWORD dwSize; //ṹС + BYTE byMobileDev; //豸, 0- ƶ豸, 1 - ƶ豸 + BYTE byRes[63]; // +}NET_DVR_LOGIN_DEVICE_PARAM, *LPNET_DVR_LOGIN_DEVICE_PARAM; + +typedef enum RECV_DATA_TYPE +{ + ENUM_RECV_ERRCODE = 0x0, //ش +} RECV_DATA_TYPE; + +//ģʽ +typedef enum tagFISHEYE_STREAM_OUTPUT_MODE_ +{ + FISHEYE_STREAM_MODE_FISHEYE = 1, //ģʽ + FISHEYE_STREAM_MODE_PTZ = 2, //PTZģʽ + FISHEYE_STREAM_MODE_PANORAMA = 3 //ȫģʽ +}FISHEYE_STREAM_OUTPUT_MODE; + +//صö +typedef enum _CALLBACK_TYPE_DATA_ENUM_ +{ + ENUM_FISHEYE_STREAM_STATUS = 1, //״̬ + ENUM_FISHEYE_PTZPOS = 2, //ptzͨǰģʽµ + ENUM_FISHEYE_REALTIME_OUTPUT = 3 //ʵʱģʽ +}CALLBACK_TYPE_DATA_ENUM; + +//״̬ +typedef struct tagNET_DVR_FISHEYE_STREAM_STATUS_ +{ + DWORD dwSize; //ṹС + BYTE byStreamMode; //ģʽμFISHEYE_STREAM_OUTPUT_MODE + BYTE byRes[63]; // +}NET_DVR_FISHEYE_STREAM_STATUS,*LPNET_DVR_FISHEYE_STREAM_STATUS; + +//ӻصݽṹ +typedef struct tagNET_DVR_CALLBACK_TYPE_DATA +{ + DWORD dwChannel; //ͨ + DWORD dwDataType; //μCALLBACK_TYPE_DATA_ENUM + DWORD dwDataLen; //ݳ + BYTE* pData; //ݣdwTypeDataΪ ENUM_FISHEYE_STREAM_STATUSӦΪNET_DVR_FISHEYE_STREAM_STATUS + BYTE byRes[64]; // +}NET_DVR_CALLBACK_TYPE_DATA,*LPNET_DVR_CALLBACK_TYPE_DATA; + +//ptz϶ +typedef struct tagNET_DVR_DRAG_POS_PARAM +{ + DWORD dwChannel; //ͨ + DWORD dwPtzChannel; //dwChannelָͨģʽΪFISHEYE_STREAM_MODE_FISHEYEģʽʱֵΪ϶ptzͨdwChannelͨģʽΪʱΪ0 + NET_VCA_POINT struToPoint; //϶ҪתĿ㣬ĿλԤϽ + NET_VCA_POINT struOriPoint; //϶ʼ,˵Ϊ϶ʼʱָԤϽǵλ + BYTE byRes[56]; // +}NET_DVR_DRAG_POS_PARAM,*LPNET_DVR_DRAG_POS_PARAM; + +//ƽ̨ѯϷ״̬ +typedef struct tagNET_DVR_QUERY_STATUS +{ + DWORD dwSize; + BYTE byCpuLoad; //CPUԴռ, ȡֵΧ0-100 + BYTE byMemLoad; //MemoryԴռȡֵΧ0-100 + WORD wAbility; //Ϸ0 + WORD wRemainAbility;//ϷʣȡֵΧ 0 ʣصĸ + WORD wTotalPlanNum; //64ƻ> + WORD wCurPlanNum; //ǰƻ 64ƻ> + BYTE byRes[62]; // +}NET_DVR_QUERY_STATUS, *LPNET_DVR_QUERY_STATUS; + +typedef struct tagNET_DVR_MONITOR_VQDCFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿ + BYTE byDevType; //豸ͣ0-̨豸1-̨豸 + BYTE bySignalPoint; //źŶʧֵ0-100 + BYTE byBlurPoint; //ͼģֵ0-100 + BYTE byLumaPoint; //ͼֵ0-100 + BYTE byChromaPoint; //ͼƫɫֵ0-100 + BYTE bySnowPoint; //ŷֵ0-100 + BYTE byStreakPoint; //Ƹŷֵ0-100 + BYTE byFreezePoint; //涳ֵᷧ0-100 + BYTE byPTZPoint; //̨ʧطֵ0-100 + BYTE byMonitorDel; //صɾ 0-ɾ 1-ɾ + BYTE byContrastThreshold; //Աȶ쳣ֵ0-100 + BYTE byMonoThreshold; //ڰͼֵ0-100 + BYTE byShakeThreshold; //Ƶֵ0-100 + BYTE byFlashThreshold; //Ƶֵ0-100 + BYTE byCoverThreshold; //Ƶڵֵ0-100 + BYTE bySceneThreshold; //ֵ0-100 + BYTE byDarkThreshold; //ͼֵ0-100 + BYTE byRes[46]; +}NET_DVR_MONITOR_VQDCFG, *LPNET_DVR_MONITOR_VQDCFG; + +//Ͻ +typedef struct tagNET_DVR_DIAGNOSIS_UPLOAD +{ + DWORD dwSize; + char sStreamID[STREAM_ID_LEN]; ///< IDС32ֽ + char sMonitorIP[64]; ///< صip + DWORD dwChanIndex; ///< صͨ + DWORD dwWidth; ///< ͼ + DWORD dwHeight; ///< ͼ߶ + NET_DVR_TIME struCheckTime; ///< ʱ(ϲںʱֶ)ʽ2012-08-06 13:00:00 + BYTE byResult; ///0-δ 1- 2-쳣 3-¼ʧ 4-ȡ쳣 + BYTE bySignalResult; ///< Ƶʧ 0-δ 1- 2-쳣 + BYTE byBlurResult; ///< ͼģ0-δ 1- 2-쳣 + BYTE byLumaResult; ///< ͼ0-δ 1- 2-쳣 + BYTE byChromaResult; ///< ƫɫ0-δ 1- 2-쳣 + BYTE bySnowResult; ///< ż0-δ 1- 2-쳣 + BYTE byStreakResult; ///< Ƹż0-δ 1- 2-쳣 + BYTE byFreezeResult; ///< 涳0-δ 1- 2-쳣 + BYTE byPTZResult; ///< ̨0-δ 1- 2-쳣 + BYTE byContrastResult; //Աȶ쳣0-δ⣬1-2-쳣 + BYTE byMonoResult; //ڰͼ0-δ⣬1-2-쳣 + BYTE byShakeResult; //Ƶ0-δ⣬1-2-쳣 + char sSNapShotURL[256]; ///<ͼƬURLַ + BYTE byFlashResult; //Ƶ0-δ⣬1-2-쳣 + BYTE byCoverResult; //Ƶڵ0-δ⣬1-2-쳣 + BYTE bySceneResult; //0-δ⣬1-2-쳣 + BYTE byDarkResult; //ͼ0-δ⣬1-2-쳣 + BYTE byStreamType; //ͣ0-Ч1-δ֪2-ͣ3-ǹ + BYTE byRes2[59]; +}NET_DVR_DIAGNOSIS_UPLOAD, *LPNET_DVR_DIAGNOSIS_UPLOAD; + +typedef struct tagNET_DVR_DOWN_LOAD_REQUEST ///< ݽṹƽ̨͵Ϸ +{ + NET_DVR_STREAM_INFO struStreamInfo; + char sSnapShotURL[256]; ///< ץͼURLС256ֽ + BYTE byRes[32]; +}NET_DVR_DOWN_LOAD_REQUEST, *LPNET_DVR_DOWN_LOAD_REQUEST; + +typedef struct tagNET_DVR_VQD_RESULT_INFO ///< ݽṹϷظƽ̨ +{ + DWORD dwSize; + char sStreamID[32]; ///֣1->*/ + BYTE byRes1[7]; + NET_DVR_GENERIC_START struTransactionStart;/*׿ʼ*/ + NET_DVR_GENERIC_END struTransactionEnd;/*׽*/ + NET_DVR_GENERIC_DATA_CFG struLineDeli;/*м*/ + NET_DVR_IGNORE_STRING struIgnoreString[MAX_IGNORE_STRING_NUM];/*ַĿǰΪ4*/ + BYTE byRes[40]; // +}NET_DVR_POS_GENERIC, *LPNET_DVR_GENERIC; + +typedef struct +{ + DWORD dwPosAddr; //posַ + BYTE byRes[948]; +}NET_DVR_POS_AVE, *LPNET_DVR_AVE; + +#define SERIAL_NUM_LEN 8 +typedef struct tagNET_DVR_POS_NUCLEUS/*size 952byte*/ +{ + char szEmployeeNo[SERIAL_NUM_LEN];//Աţ1עe + char szTerminalNo[SERIAL_NUM_LEN];// Posţ1עt + char szShiftNo[SERIAL_NUM_LEN]; //ְࣨעs + BYTE byRes[928]; +}NET_DVR_POS_NUCLEUS, *LPNET_DVR_POS_NUCLEUS; +typedef union _NET_DVR_POS_PROTOCOL_UNION +{ + BYTE byLenth[952]; //ڱʾ峤ȣʵ + NET_DVR_POS_GENERIC struGeneric; + NET_DVR_POS_AVE struAve; + NET_DVR_POS_NUCLEUS struNUCLEUS; +}NET_DVR_POS_PROTOCOL_UNION,*LPNET_DVR_POS_PROTOCOL_UNION; + +typedef enum tagNET_DVR_CHARSET_ENUM //뷽ʽ +{ + ENUM_UTF8 =0, + ENUM_GB2312, + ENUM_LATIN1, + ENUM_LATIN2, + ENUM_LATIN3, + ENUM_LATIN4, + ENUM_CYRILLIC, + ENUM_ARABIC, + ENUM_GREEK, + ENUM_HEBREW, + ENUM_TURKISH, + ENUM_NORDIC, + ENUM_THAI, + ENUM_LATIN7, + ENUM_LATIN8, + ENUM_LATIN9, + ENUM_LATIN10, + ENUM_CENTRAL_EUROPEAN, + ENUM_CYRILLIC_SCRIPT, + ENUM_HEBREW_DOS862 +}NET_DVR_CHARSET_ENUM, *LPNET_DVR_CHARSET_ENUM; + + +typedef struct +{ + DWORD dwSize; + BYTE byEnable; //ʹ + BYTE byCharSetType; //뷽ʽ0-UTF-8,1-GB2312 + BYTE byRes1; // + BYTE byProtocolType;//Эͣ1->generic textЭ(universal Protocol), 2->AVE VSI-ADD 3->AVE Vnet,4-EPSON(账posЭ), 5-NUCLEUS + //6- GilbarcoöӦṹNET_DVR_POS_GENERIC,7- NCRöӦṹNET_DVR_POS_GENERIC + NET_DVR_POS_PROTOCOL_UNION uPosProtocol; //POSЭ + BYTE byRes[32]; // +}NET_DVR_POS_FILTER_CFG, *LPNET_DVR_POS_FILTER_CFG; + +typedef struct tagNET_DVR_NET_SNIFF /*ṹ 312byte*/ +{ + BYTE byEnableSourcePort; //ǷöԴ˿ڹ 0-ã1- + BYTE byEnableDestAddr; //ǷöĿIPַй 0-ã1- + BYTE byEnableDestPort; //ǷöĿַĶ˿ںŽй + BYTE byRes1; // + BYTE bySourceIpAddr[MAX_DOMAIN_NAME]; //Դַ + BYTE byDestinationIpAddr[MAX_DOMAIN_NAME]; //ݷĿַ + WORD wSourcePort; //Դ˿ں + WORD wDestinationPort; //ݷĿ˿ں + BYTE byRes[16]; // +}NET_DVR_NET_SNIFF, *LPNET_DVR_NET_SNIFF; + +typedef struct +{ + WORD wNetPort; /*device net port*/ + BYTE byRes[2]; +}NET_DVR_NET_RECEIVE, *LPNET_DVR_NET_RECEIVE; + +typedef struct tagNET_DVR_MONITOR_INFO /**/ +{ + WORD wPort; //˿ں + BYTE byRes1[2]; + NET_DVR_IPADDR struRestrictRemoteIP;//Զ̷IP + BYTE byRes[164]; +}NET_DVR_MONITOR_INFO, *LPNET_DVR_MONITOR_INFO; + +typedef union tagNET_DVR_POS_CONNECTMODE_UNION +{ + BYTE byLen[312]; //峤ȣʵ + NET_DVR_NET_RECEIVE struNetRecv; //ģʽ + NET_DVR_MONITOR_INFO struTcpMonitor; //ģʽ + NET_DVR_SINGLE_RS232 struRS232; //ڷʽ + NET_DVR_MONITOR_INFO struUdpMonitor; //-UDPģʽ + NET_DVR_NET_SNIFF struSniff; //ģʽ + NET_DVR_ADDRESS struMcast; //ಥģʽ + NET_DVR_USB_RS232 struUSBRS232; //USBתڷʽ +}NET_DVR_POS_CONNECTMODE_UNION, *LPNET_DVR_POS_CONNECTMODE_UNION; + + +//DVRPOSӷʽýṹ +typedef struct tagNET_DVR_CONNECT_POS_CFG +{ + DWORD dwSize; //ṹС + BYTE byConnectMode; //ģʽ:0->(TCP),1->,2->ڽ3-UDP,4-,5-ಥ + BYTE byRes1[3]; // + NET_DVR_POS_CONNECTMODE_UNION uPosConnMode; //ģʽ + BYTE byRes[64]; +}NET_DVR_CONNECT_POS_CFG, *LPNET_DVR_CONNECT_POS_CFG; + +typedef struct tagNET_DVR_CHAN_FILTER_CFG +{ + DWORD dwSize; //ṹС + BYTE byFilterID; //POS˹ID + BYTE byFontSize; //ֺŴС0-- 8*16 1--16*32 2--32*64 + BYTE byShowPosInfo; //ǷposϢ + BYTE byOverlayMode; //ӷʽ0-1-ҳ + DWORD dwDelayTime; /*delay time(5-3600s)*/ + NET_DVR_POS_OSD_REGION struOsdPosInfo; /*overlay osd rect info*/ + NET_DVR_RGB_COLOR struOsdColor; //OSDɫ + NET_DVR_SCHEDTIME struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; + NET_DVR_HANDLEEXCEPTION_V40 struHandleException; //쳣ʽ + //쳣ʽбŰ󶨣Ϊ0ʱʾıŷΧΪ1-64Ϊ1ʱʾıŷΧΪ65-128 ڽУ0xffffffffʾ ǰļںıЧ + DWORD dwMaxRelRecordChanNum ; //¼ֻ֧ͨ + DWORD dwRelRecordChanNum ; //ڹ¼ͨ + DWORD dwRelRecordChan[MAX_CHANNUM_V30];//¼ͨ + //¼ͨŰ󶨣Ϊ0ʱʾͨŷΧΪ1-64Ϊ1ʱʾͨŷΧΪ65-128 ڽУ0xffffffffʾںĹͨЧ + DWORD dwTimeOut; /*time Out(5-3600s)*/ //ݳʱָڶ೤ʱղPOSݼжһݰĽ + BYTE byRes[60]; // +}NET_DVR_CHAN_FILTER_CFG, *LPNET_DVR_CHAN_FILTER_CFG; + +#define MAX_LAN_ENCODE_LEN 32 //Աʽ󳤶 +typedef struct tagNET_DVR_DEVICE_LAN_ENCODE +{ + DWORD dwSize; + BYTE byLanEncode[MAX_LAN_ENCODE_LEN]; //豸Աʽ + BYTE byRes[28]; +}NET_DVR_DEVICE_LAN_ENCODE, *LPNET_DVR_DEVICE_LAN_ENCODE; + +typedef struct tagNET_DVR_SCENECHANGE_DETECTION +{ + DWORD dwSize; + BYTE byEnable; //ʹܣǷ 0~,1~ + BYTE bySensitiveLevel;// 1-100Ĭ50ԽߣԽױ + BYTE byRes1[2]; + NET_DVR_SCHEDTIME struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; + NET_DVR_HANDLEEXCEPTION_V40 struHandleException; //쳣ʽ + DWORD dwMaxRelRecordChanNum ; //¼ͨ ֻ֧ + DWORD dwRelRecordChanNum ; //¼ͨ ʵֵ֧ + DWORD dwRelRecordChan[MAX_CHANNUM_V30];//¼ͨ + //¼ֽͨڵͨţʼֵ 0xffffffff + BYTE byRes2[128]; +}NET_DVR_SCENECHANGE_DETECTION,*LPNET_DVR_SCENECHANGE_DETECTION; + +typedef struct tagNET_DVR_SCENECHANGE_DETECTION_RESULT +{ + DWORD dwSize; // ṹС + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byRes[126]; // ֽ +}NET_DVR_SCENECHANGE_DETECTION_RESULT,*LPNET_DVR_SCENECHANGE_DETECTION_RESULT; + +typedef enum +{ + PREVIEW_MOD = 0, + ALARM_MOD, + PLAYBACK_MOD, + MAX_TYPE +}MODULE_TYPE; + +//λϢ +typedef struct tagNET_DVR_PARK_INFO +{ + char sPlateNo[MAX_PlATE_NO_LEN]; //ƺ + char sParkIndex[MAX_PlATE_NO_LEN]; //λ + BYTE byRes[64]; +}NET_DVR_PARK_INFO, *LPNET_DVR_PARK_INFO; + + +typedef struct tagNET_DVR_CROSSLINE_ALARM +{ + DWORD dwSize; + NET_VCA_DEV_INFO struDevInfo; + NET_DVR_TIME_EX struTriggerTime;/*ʱ*/ + NET_DVR_PARK_INFO struParkInfo; //λϢ + BYTE byRes1[128]; +}NET_DVR_CROSSLINE_ALARM, *LPNET_DVR_CROSSLINE_ALARM; + +typedef struct tagNET_DVR_STREAM_SRC_CFG +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struStreamID; //Ϣ + NET_DVR_STREAM_SRC_INFO struStreamSrcInfo; //ԴϢ +}NET_DVR_STREAM_SRC_CFG,*LPNET_DVR_STREAM_SRC_CFG; + +typedef struct tagNET_DVR_ENCODEINFO +{ + BYTE byFormatType; //װͣ1-2-RTPװ3-PSװ4-TSװ5-˽У6-FLV7-ASF8-3GP, 9-RTP+PS꣺GB281810xff-Ч + BYTE byVideoEncType;//Ƶͣ0-˽2641-׼h2642-׼mpeg47-M-JPEG0xff-Ч + WORD wWidth; //ͼ + WORD wHeight; //ͼ߶ + BYTE byRes1[2]; + DWORD dwVideoBitrate; //Ƶ,λKbps + DWORD dwVideoFrameRate; //֡ʣ200ʾС1֡/״ֵ̬ʾʵֵ֡,200-1/2,201-1/4,202-1/8,203-1/16 + BYTE byAudioEncType;//Ƶͣ0-G7221-G711_U2-G711_A5-MPEG2,6-G7267-AAC,0xff-Ч + BYTE byRes2[15]; +}NET_DVR_ENCODEINFO, *LPNET_DVR_ENCODEINFO; + + +typedef struct tagNET_DVR_TRANSSTATUS +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struStreamInfo;//IDתͨϢ + BYTE byMode;//תģʽ1-ת룬2-ת + BYTE byLinkNums;// + BYTE byPassiveTransMode; //תģʽ0-Ч1-ʵʱ2-ļ + BYTE byRes; + NET_DVR_ADDRESS struDstIPInfo[MAX_LINK];//Ŀתipַ + BYTE byTransResource;//ʹõתԴD1 + BYTE byRes1[15]; + NET_DVR_ENCODEINFO struSrcEncodeInfo;//ԴϢ + NET_DVR_ENCODEINFO struDstEncodeInfo[MAX_LINK /*6*/];//ĿϢ + BYTE byRes2[36]; +}NET_DVR_TRANSSTATUS, *LPNET_DVR_TRANSSTATUS; + +typedef struct tagNET_DVR_TRANSDEVICE_STATUS +{ + DWORD dwSize; + DWORD dwTotalResource;//ȫתԴD1Ϊλ + DWORD dwIdleResource;//ʣתԴD1Ϊλ + BYTE byCpuLoad;//CPU + BYTE byRes[67]; +}NET_DVR_TRANSDEVICE_STATUS, *LPNET_DVR_TRANSDEVICE_STATUS; + +typedef struct tagNET_DVR_DEV_WORK_MODE +{ + DWORD dwSize; + BYTE byWorkMode; //1-ͨģʽ2-IDģʽ + BYTE byDisplayMode; //0-ͨ1- + BYTE byEnableVcaDec; //Ƿܽ룬0-ã0- + BYTE byRes[61]; +}NET_DVR_DEV_WORK_MODE,*LPNET_DVR_DEV_WORK_MODE; + + +typedef struct tagNET_DVR_PASSIVETRANSINFO +{ + DWORD dwSize; + BYTE byStreamType;// ͣ0-1- + BYTE byLinkMode;// 0TCPʽ,1UDPʽ + BYTE byPassiveTransMode; //תģʽ1-ʵʱ2-ļ + BYTE byRes1[5]; + BYTE byDataType;//ͣ1-SDP2-ͷ + BYTE byRes2; + WORD wDataLength;//ݳ + char *pBuffer;// + BYTE byRes3[32]; // +}NET_DVR_PASSIVETRANSINFO, *LPNET_DVR_PASSIVETRANSINFO; + +typedef struct tagNET_DVR_BASEMAP_CONTROL_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿʾ1-ʾ0- + BYTE byBaseMapType; //ͼͣ1-ͼƬͼ2-ͼ3-ͼѵ + BYTE byBaseMapCircleNo; //ͼѵţbyBaseMapTypeΪ3ʱЧ + BYTE byRes1; + DWORD dwBaseMapNo; //ͼţͼΪ1ʱ˲ΪͼƬţͼΪ2ʱ˲Ϊϵͳںţ1ֽھ+1ֽӰ+1ֽں+1ֽڱ + BYTE byRes2[64]; +}NET_DVR_BASEMAP_CONTROL_CFG,*LPNET_DVR_BASEMAP_CONTROL_CFG; + +typedef struct tagNET_DVR_VIRTUAL_SCREEN_CFG +{ + DWORD dwSize; + DWORD dwResolution; //ֱʣMAKE_RESOLUTION궨ֵӵǽȡֵ֧ķֱֵ + BYTE byRes[64]; +}NET_DVR_VIRTUAL_SCREEN_CFG, *LPNET_DVR_VIRTUAL_SCREEN_CFG; + +typedef struct tagNET_DVR_BASEMAP_WINCFG +{ + DWORD dwSize; + BYTE byEnable; + BYTE byWndOperateMode; //ڲģʽ0-ͳһ꣬1-ֱ + BYTE byRes1[6]; + NET_DVR_RECTCFG_EX struWinPosition;//ĿĴ(ʾǽ),ͼڵʼʹСǻ׼ + NET_DVR_RECTCFG_EX struResolution; //ĿĴڷֱ꣬ȡ򰴷ֱЧ + DWORD dwXCoordinate; //LEDϽX꣨ͳһ꣩ȡ򰴷ֱЧ + DWORD dwYCoordinate; //LEDϽY꣨ͳһ꣩ȡ򰴷ֱЧ + BYTE byRes2[36]; +}NET_DVR_BASEMAP_WINCFG, *LPNET_DVR_BASEMAP_WINCFG; + +typedef struct tagNET_DVR_BASEMAP_PIC_INFO +{ + DWORD dwSize; + BYTE sPicName[NAME_LEN];//ͼƬ + BYTE byUsed; //ǷѴڣ0-ڣ1- + BYTE byRes[31]; +}NET_DVR_BASEMAP_PIC_INFO,*LPNET_DVR_BASEMAP_PIC_INFO; + +typedef struct tagNET_DVR_MATRIX_LOGO_INFO +{ + DWORD dwSize; + DWORD dwLogoSize;//LOGOСBMPļͷͼƬСޣ100KߺͿ32ı + BYTE byRes[32]; +}NET_DVR_MATRIX_LOGO_INFO,*LPNET_DVR_MATRIX_LOGO_INFO; + +typedef struct tagNET_DVR_MATRIX_LOGO_CFG +{ + DWORD dwSize; + BYTE byExist; //logoǷڣ0-ڣ1-ڣ˲ֻܻȡ + BYTE byRes1[3]; + DWORD dwLogoSize;//LOGOСBMPļͷ(˲ֻܻȡ) + BYTE byLogoName[NAME_LEN]; //logo + DWORD dwLogoNo; //logoţȡlogoϢʱЧ + BYTE byRes2[28]; +}NET_DVR_MATRIX_LOGO_CFG,*LPNET_DVR_MATRIX_LOGO_CFG; + +typedef struct tagNET_DVR_WIN_LOGO_CFG +{ + DWORD dwSize; + DWORD dwLogoNo; //logo + BYTE byEnable; //logoǷʾ1-ʾ0- + BYTE byRes1[3]; + DWORD dwCoordinateX; //ͼƬʾX + DWORD dwCoordinateY; //ͼƬʾY + BYTE byFlash; //Ƿ˸1-˸0-˸ + BYTE byTranslucent; //Ƿ͸1-͸0-͸ + BYTE byRes2[34]; // +}NET_DVR_WIN_LOGO_CFG,*LPNET_DVR_WIN_LOGO_CFG; + + +typedef struct tagNET_DVR_BIG_SCREEN_AUDIO_CFG +{ + DWORD dwSize; + DWORD dwWinIndex; //ںţ1ʼ0ʾͼ + BYTE byEnable; //ǷƵ1-Ƶ0-رƵ + BYTE byRes[31]; +}NET_DVR_BIG_SCREEN_AUDIO_CFG, *LPNET_DVR_BIG_SCREEN_AUDIO_CFG; + +typedef struct tagNET_DVR_WIN_ZOOM_STATUS +{ + DWORD dwSize; + BYTE byZoomStatus; //0-״̬1-Ŵ״̬ + BYTE byRes1[3]; + NET_DVR_POINT_FRAME struPointFrame; //Ŵ򣬵byZoomStatusΪ1ʱЧ + BYTE byRes2[32]; +}NET_DVR_WIN_ZOOM_STATUS,NET_DVR_WIN_ZOOM_STATUS; + +typedef struct tagNET_DVR_RESUME_INITRACKPOS_CFG +{ + DWORD dwSize; // ṹС + DWORD dwChannel;; // ͨ + BYTE byRes[16]; // ֽ +}NET_DVR_RESUME_INITRACKPOS_CFG,*LPNET_DVR_RESUME_INITRACKPOS_CFG; + +typedef struct tagNet_DVR_TEST_SELFCHECK_RESULT +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE bySelfCheckStatus; //Լ״ֵ̬ 0-δʼ1-ɹ2-ʧܣ3-Լ + BYTE byRes[23]; //ֽ +}NET_DVR_TEST_SELFCHECK_RESULT, *LPNET_DVR_TEST_SELECHECK_RESULT; + + +typedef struct tagNET_DVR_TEST_COMMAND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byTestCommand[MAX_TEST_COMMAND_NUM]; + //0-ʾԣ 1-ʾ + //±0 ϻԳ + //±1 ƽģʽ + //±2 ICRϻԣ0ʾرգ1ʾbit0 ϣ0000_0001(ֻѲϻ)0000_0101ͬʱѲICRϻ0000_0100ֻICRϻ + //±3 -ptԽ״̬0ʾԽδ1ʾԽ + //±4 ɨԳ0ʾرգ1ʾ + //±5 У0ʾرգ1ʾ + WORD wICRIntervalTime;//icrʱ䣨byTestCommand ±2ڵֵΪ1ʱICRؼʱ䣬λ룩 + BYTE byElectronicCompassState;//״̬أ 0- 1- + BYTE byRes1[1]; + float fDeviceTem; //豸о¶ȣȷ0.001 + BYTE byTemp[9]; //ڶ豸 ±0-ȫ 1-4ȫ14sensor 5-8ȫ24sensor,Ŀǰӥȫ + BYTE byRes[3]; //ֽ +}NET_DVR_TEST_COMMAND, *LPNET_DVR_TEST_COMMAND; + +typedef struct tagNET_DVR_AGING_TRICK_SCAN +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byAging; // ʾõIJ Ϊϻǰ߻ϻ󹤾ߣ 0-ϻǰ1-ϻ + BYTE byWriteReadEnalbe; //дָʹܣ0-öָ 1-дָ + BYTE byRes[126]; //ֽ +}NET_DVR_AGING_TRICK_SCAN, *LPNET_DVR_AGING_TRICK_SCAN; + +#define IPC_PARAM_AGING_TRICK_SCAN 0x00000001 //ɨ +typedef struct tagNET_DVR_IPC_PARAM_TYPE +{ + DWORD dwSize; + DWORD dwParamType; //ͣλʾ + // #define IPC_PARAM_AGING_TRICK_SCAN 0x00000001 //ɨ + BYTE byRes[32]; +}NET_DVR_IPC_PARAM_TYPE, *LPNET_DVR_IPC_PARAM_TYPE; + +typedef struct tagNET_DVR_ECCENTRIC_CORRECT_STATE +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byEccentricCorrectState; // ƫĽ״̬0-Уʧܡ1-Уɹ2-У + BYTE byRes[127]; //ֽ +}NET_DVR_ECCENTRIC_CORRECT_STATE, *LPNET_DVR_ECCENTRIC_CORRECT_STATE; + + + +#define MAX_DEVMODULE_NUM 8 +typedef struct tagNET_DVR_TEST_DEVMODULE_CFG +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byDevFanModuleType[MAX_DEVMODULE_NUM]; //Ե豸 + // 0-,1- + // bit0-Է1 + // bit1-Է2 + BYTE byDevHeaterModuleType[MAX_DEVMODULE_NUM]; //Ե豸 + // 0-,1- + // bit0-Լ1 + // bit1-Լ2 + BYTE byRes[22]; //ֽ +}NET_DVR_TEST_DEVMODULE_CFG, *LPNET_DVR_TEST_DEVMODULE_CFG; + +// +typedef struct tagNET_DVR_BARRIERGATE_COND +{ + BYTE byLaneNo;//ţ0-ʾЧֵ(豸ҪЧֵж),1-1 + BYTE byRes[3]; +}NET_DVR_BARRIERGATE_COND,*LPNET_DVR_BARRIERGATE_COND; + +typedef struct tagNET_DVR_VEHICLE_CONTROL +{ + BYTE byGateOperateType;//0-޲,1-բ + BYTE byRes1 ; + WORD wAlarmOperateType;//0-޲,bit0-̵ bit1-ϴ bit3-澯ϴɸѡ(0-ʾأ1-ʾ) + BYTE byRes2[8]; +}NET_DVR_VEHICLE_CONTROL,*LPNET_DVR_VEHICLE_CONTROL; + +typedef struct tagNET_DVR_RELAY_PARAM +{ + BYTE byAccessDevInfo;//0-豸1-բ2-صբ3-ͣբ4-źš5- + BYTE byRes[3]; +}NET_DVR_RELAY_PARAM,*LPNET_DVR_RELAY_PARAM; + +// +typedef struct tagNET_DVR_ENTRANCE_CFG +{ + DWORD dwSize; + BYTE byEnable ;// ʹ0-ʾرգ1-ʾ + BYTE byBarrierGateCtrlMode;//0-Զƣ1-ƽ̨ⲿ + BYTE byRes1[2]; + DWORD dwRelateTriggerMode;//ģʽ οITC_TRIGGERMODE_TYPE + /*0x00: ƥ*/ + /*0x01: ƥ䣨ɫ*/ + /*0x02: ƥ䣨ɫ*/ + /*0x04: ƥ*/ + DWORD dwMatchContent; //쳣,쳣ʽ"" + NET_DVR_RELAY_PARAM struRelayRelateInfo[MAX_RELAY_NUM/*12*/];//̵Ϣ(һ̵ֻܿһ豸) 0ʾ̵1 1ʾ̵2 12 + BYTE byGateSingleIO[MAX_IOIN_NUM/*8*/]; //IOIO0ʾIO11ʾIO2 ; ֵĺ壨0-ޣ1-բλ2-բصλ3- + //Ϣܿ + //0ʾʱõģʽ + //1-ֹģʽ, + //2-ģʽ + NET_DVR_VEHICLE_CONTROL struVehicleCtrl[MAX_VEHICLE_TYPE_NUM/*8*/];//Ϣܿ + BYTE byNotCloseCarFollow;//øբʹܣ0~Ϊã1~ + BYTE byParkingDetectEnabled;//פʹܣ0~Ϊã1~ + BYTE byParkingDetectJudgeTime;//פжʱ䣬λ + BYTE byRes2[61]; +}NET_DVR_ENTRANCE_CFG,*LPNET_DVR_ENTRANCE_CFG; +////////////////////////////ڲ end/////////////////////////////// + +// բ +typedef struct tagNET_DVR_BARRIERGATE_CFG +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byLaneNo; //բţ0-ʾЧֵ(豸ҪЧֵж),1-բ1 + /* + ϵƽ̨֧byUnlockֶΣֶνֵΪ0ͨ0-رյբ,1-բ,2-ֹͣբеκһֲԿɽн + ƽ̨֧byUnlockֶΣbyUnlockֶθֵΪ14~բнbyUnlockֶθֵΪ1󣬡0-رյբ,1-բ,2-ֹͣբڽ + */ + BYTE byBarrierGateCtrl;//0-رյբ,1-բ,2-ֹͣբ 3-բ,4~բ + BYTE byEntranceNo;//ڱ [1,8] + BYTE byUnlock;//ýʹܣ0~Ϊã1~ + BYTE byRes[12]; +}NET_DVR_BARRIERGATE_CFG, *LPNET_DVR_BARRIERGATE_CFG; + +//ͬ +typedef struct tagNET_DVR_VEHICLE_CONTROL_LIST_INFO +{ + DWORD dwSize; + DWORD dwChannel;//ͨ0xff - ȫͨITC Ĭ1 + DWORD dwDataIndex;//ˮţƽ̨άΨһֵͻ˲ʱ򣬸ֵЧֵҪͬ + char sLicense[MAX_LICENSE_LEN]; //ƺ + BYTE byListType;//ԣ0-1-ֹ + BYTE byPlateType; // + BYTE byPlateColor; //ɫ + BYTE byRes[21]; + char sCardNo[MAX_CARDNO_LEN]; // + NET_DVR_TIME_V30 struStartTime;//Чʼʱ + NET_DVR_TIME_V30 struStopTime;//Чʱ + //ƽ̨ͬˮŲظ£ͬͬijһ¼ˣڴ棬02014-03-03 + char sOperateIndex[MAX_OPERATE_INDEX_LEN]; + BYTE byRes1[224]; // ֽ +} NET_DVR_VEHICLE_CONTROL_LIST_INFO,*LPNET_DVR_VEHICLE_CONTROL_LIST_INFO; + +//ȫȡӿ ӻȡ +typedef struct tagNET_DVR_VEHICLE_CONTROL_COND +{ + DWORD dwChannel;//ͨ0xffffffff - ȫͨITC Ĭ1 + DWORD dwOperateType;//ͣVCA_OPERATE _TYPEɸѡ + char sLicense[MAX_LICENSE_LEN];//ƺ + char sCardNo[MAX_CARDNO_LEN]; // + BYTE byListType;//0-1-ֹ0xff-ȫ + //2014-02-25 + BYTE byRes1[3]; + DWORD dwDataIndex;//ˮ + BYTE byRes[116]; +}NET_DVR_VEHICLE_CONTROL_COND,*LPNET_DVR_VEHICLE_CONTROL_COND; + +//Ҫͬ +typedef struct +{ + DWORD dwSize; + DWORD dwDataIndex;//ˮţֵ豸ǰյݵһˮ,ƽ̨ͬʱһˮſʼͬ + char sOperateIndex[MAX_OPERATE_INDEX_LEN]; //ƽ̨ͬˮŲظ£ͬͬijһ¼ˣڴ棬0 2014-03-03 + BYTE byRes[32]; +}NET_DVR_VEHICLE_CONTROL_LIST_DSALARM, *LPNET_DVR_VEHICLE_CONTROL_LIST_DSALARM; + +// +typedef struct tagNET_DVR_VEHICLE_CONTROL_ALARM +{ + DWORD dwSize; + BYTE byListType; //0-1-ֹ2-ʱ + BYTE byPlateType; // + BYTE byPlateColor; //ɫ + BYTE byRes1; + char sLicense[MAX_LICENSE_LEN];//ƺ + char sCardNo[MAX_CARDNO_LEN]; // + NET_DVR_TIME_V30 struAlarmTime; //ʱ + DWORD dwChannel; //豸ͨţֱIPCΪipcͨţDVR\nvr,ΪDVR\NVRͨ + DWORD dwPicDataLen; //ͼƬݴС0ʾͼƬΪ0DZʾͼƬ + BYTE byPicType; //ͼƬͣ0-JPEG + BYTE byPicTransType; //ͼƬݴ䷽ʽ: 0-ƣ1-url + BYTE byRes3[2]; + char *pPicData; + BYTE byRes2[48]; +}NET_DVR_VEHICLE_CONTROL_ALARM,*LPNET_DVR_VEHICLE_CONTROL_ALARM; + +// +typedef struct tagNET_DVR_FIRE_ALARM +{ + DWORD dwSize; + NET_DVR_TIME_V30 struAlarmTime;//ʱ + BYTE byRes[128]; +}NET_DVR_FIRE_ALARM,*LPNET_DVR_FIRE_ALARM; + +//豸ƽֹݿϢ +typedef struct +{ + DWORD dwSize; + DWORD dwDelType;//ɾͣɾͣVCA_OPERATE _TYPEɸѡ + char sLicense[16]; //ƺ + char sCardNo[48]; // + BYTE byPlateType; // + BYTE byPlateColor; //ɫ + BYTE byOperateType; //ɾ(0-ɾ,0xff-ɾȫ) + //2014-02-25 + BYTE byListType;//0-1-ֹ 2014-03-03 + DWORD dwDataIndex;//ˮ + //ƽ̨ͬˮŲظ£ͬͬijһ¼ˣڴ棬02014-03-03 + char sOperateIndex[MAX_OPERATE_INDEX_LEN]; + BYTE byRes[24]; +} NET_DVR_VEHICLE_CONTROL_DELINFO, *LPNET_DVR_VEHICLE_CONTROL_DELINFO; + +//ƹ +typedef struct tagNET_DVR_GATELAMP_INFO +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byLaneNo; //բţ0-ʾЧֵ(豸ҪЧֵж),1-բ1 + BYTE byBrightlampCtrl;//0-رճƣ1- + BYTE byRes[14]; +}NET_DVR_GATELAMP_INFO,*LPNET_DVR_GATELAMP_INFO; + + +//SDI1.0 +#define MATRIX_MAX_OUTPUT_NUM 256 //ͨ +typedef struct tagNET_DVR_MATRIX_BASE_CFG +{ + DWORD dwSize; + DWORD dwValidInputNum; //Чͨ + DWORD dwValidOutputNum; //Чͨ + BYTE byRes[64]; +}NET_DVR_MATRIX_BASE_CFG, *LPNET_DVR_MATRIX_BASE_CFG; + +typedef struct tagNET_DVR_MATRIX_SWITCH_INFO +{ + DWORD dwSize; + DWORD dwInputChan; //ͨţΪ0ʾȡָĹϵ + DWORD dwOutputChan; //Ҫлͨ, (ĻΪĻ(1ֽ豸+1ֽڱ+2ֽĻ)), 0xffffffffʾл + DWORD dwMatrixID; //ID + BYTE byRes[28]; +}NET_DVR_MATRIX_SWITCH_INFO, *LPNET_DVR_MATRIX_SWITCH_INFO; + +typedef struct tagNET_DVR_IO_RELATION_INFO +{ + DWORD dwSize; + DWORD dwIORelation[MATRIX_MAX_OUTPUT_NUM]; //ͨͨ, dwIORelation[i] = jʾͨ(i + 1)ͨj, + //dwIORelation[i] = 0ʾͨi + 1δͨ + BYTE byRes[256]; +}NET_DVR_IO_RELATION_INFO, *LPNET_DVR_IO_RELATION_INFO; + + +//ӿ +typedef struct tagNET_DVR_EXTERNAL_DEVCOND +{ + DWORD dwSize; + BYTE byExternalDevTpye;//0-()1-Զͷ豸2-ڿƻ3-led 0xff-ȫϢӻȡʱʹã + BYTE byRelativeIndex;//0-()(ڽ) Χ 1~8 LedΧǣ1255 0xff-ȫϢӻȡʱʹã + // BYTE byLaneID;// ߼ + BYTE byRes[30]; +}NET_DVR_EXTERNAL_DEVCOND,*LPNET_DVR_EXTERNAL_DEVCOND; + +typedef struct tagNET_DVR_EXTERNAL_DEVCFG +{ + DWORD dwSize; + BYTE byExternalDevTpye;//0-1-Զͷ豸2-ڿƻ3-led + BYTE byRes2[3]; + char sDevName[MAX_DEVNAME_LEN]; + union + { + BYTE byUnionLen[656]; + struct + { + NET_DVR_IPADDR struDevIP;//DEV IPַ 144 + WORD wDevPort;//豸˿ + BYTE byRes[510]; + }struRrReader;//Զͷ豸 + struct + { + BYTE byRs485No; //RS485(豸һñſظͲһñŻ) + BYTE byDevCtrlCode;//ַ豸(1-255) + BYTE byAutoIssuedData;//ǷԶ·Ƭ 0-Զ·1-Զ· + BYTE byOfflineDetEnable;//߼ 0-رգ1- + BYTE byDetCycle;//ڣ060 λ s + BYTE byRes[651]; + }struGateway;//ڿƻ + struct + { + BYTE byExternalMode;//0-RS485,1- + BYTE byRes[3]; + NET_DVR_IPADDR struDevIP;//DEV IPַ 144 (byExternalMode == 1 ʱЧ) + WORD wDevPort;//豸˿(byExternalMode == 1 ʱЧ) + BYTE byRs485No; //RS485(豸һñſظͲһñŻ) + BYTE byDevCtrlCode;//ַ豸(1-255) + //ledͨƿʾģͬĿƿֵ֧ʾʽͬ + BYTE byCtrlCardType;//ƿ 0-(Чֵ) 1- EQ2013 + BYTE byLedScreenType;// 0-ɫ 1-˫ɫ + BYTE byLedScreenUse;//;0- 1-λ 2-ʾ 3-շ + BYTE byLedDisplayMode;//Ļʾʽ: 1 "ʾ", 2 "" ,3 "" ,4 "", 5 "" + char sLedCustomInfo[MAX_LED_INFO];//ĻʾϢ + //ledɿƿƵģledԸĿʵʹøСʱҪն֪ͨƿĿǰʹõ + DWORD dwLedScreenH;//ʾɸ߶ҪLED + DWORD dwLedScreenW;//ʾɿҪLED + BYTE byRes1[236]; + }struLed;//led + }uExternalDevInfo; //byExternalMode ֵĸЧ + BYTE byRes[128]; +}NET_DVR_EXTERNAL_DEVCFG, *LPNET_DVR_EXTERNAL_DEVCFG; + +//ӻȡ +typedef struct tagNET_DVR_EXTERNAL_DEVSTATUS//Զͷ豸 +{ + DWORD dwSize; + char sDevName[MAX_DEVNAME_LEN];//豸 + BYTE byExternalDevTpye;//0-()1-Զͷ豸2-ڿƻ3-led 0xff-ȫϢӻȡʱʹã + BYTE byRelativeIndex;//0-()(ڽ) Χ 1~8 0xff-ȫϢӻȡʱʹã + BYTE byOnline;//0-ߣ1- + BYTE byRes[125]; +}NET_DVR_EXTERNAL_DEVSTATUS,*LPNET_DVR_EXTERNAL_DEVSTATUS; + +//ն˳ڼ +typedef struct tagNET_DVR_ENTRANCEDET_CFG +{ + DWORD dwSize; //ṹ + //߼⿪ʱ⵽豸ߣնƥ俨ƬϢ͵բָڿƻɳڿƻƥƵբ + BYTE byOfflineDetEnable;//߼ 0-رգ1- + BYTE byDetCycle;//ڣ060 λ s + BYTE byDevCtrlCode;//ڿƻַ豸(1-255) + BYTE byRes[61]; +}NET_DVR_ENTRANCEDET_CFG,*LPNET_DVR_ENTRANCEDET_CFG; + +//ն˳ڿ(ƽӿ ·ƬϢ) +typedef struct tagNET_DVR_ENTRANCEDEV_COMMAND +{ + DWORD dwSize; //ṹ + BYTE byDevCtrlCode;//ڿƻַ豸(1-255) + BYTE byManualIssuedData;//ֶ· 0-رգ1- + BYTE byRes[62]; +}NET_DVR_ENTRANCEDEV_COMMAND,*LPNET_DVR_ENTRANCEDEV_COMMAND; + +//ն˳ڿ(ƽӿ ·ƬϢ) +typedef struct tagNET_DVR_ENISSUED_DATADEL +{ + DWORD dwSize; //ṹ + BYTE byDevCtrlCode;//ڿƻַ豸(1-255) + BYTE byRes[27]; +}NET_DVR_ENISSUED_DATADEL,*LPNET_DVR_ENISSUED_DATADEL; + +//ڹշϸʽ +typedef struct _tagNET_ITS_PASSVEHICLE_COST_ITEM +{ + DWORD dwSize; //ṹ + DWORD dwPassVehicleID; //ݵĹ + BYTE byIntime[MAX_TIME_LEN]; //볡ʱʽΪyyyymmddhh24missfff + BYTE byOuttime[MAX_TIME_LEN]; //ʱʽΪyyyymmddhh24missfff + BYTE byCardNo[MAX_CARD_LEN]; // + BYTE byPlateInfo[MAX_LICENSE_LEN]; //ƺ + float fPayCost; //շѽ(λԪ) + BYTE byOperatorName[MAX_OPERATORNAME_LEN]; //Ա + BYTE byVehicleType; // 0-Сͳ 2 ͳ + BYTE byRes1[3]; //Ԥֶ1 + DWORD dwPayRuleID; // շѹˮ + DWORD dwFreeRuleID; // ˮ + BYTE byRes2[256]; // Ԥֶ2 +}NET_ITS_PASSVEHICLE_COST_ITEM, *LPNET_ITS_PASSVEHICLE_COST_ITEM; + +//ڽӰݣʽ +typedef struct _tagNET_ITS_HANDOVER_INFO +{ + DWORD dwSize; //ṹ + BYTE byOperatorName[MAX_OPERATORNAME_LEN]; //Ա + BYTE byOperatorCard[MAX_CARD_LEN]; //Ա + BYTE byStartTime[MAX_TIME_LEN];//ϰʱʽyyyymmddhh24miss + BYTE byEndTime[MAX_TIME_LEN]; //°ʱʽyyyymmddhh24miss + float fTotal_Pay; //ϰڼܵշѽ(λԪ) + DWORD dwTotal_Records; //ϰڼܵĹշѵļ¼ + BYTE byRes[64]; //Ԥ +}NET_ITS_HANDOVER_INFO, *LPNET_ITS_HANDOVER_INFO; + + +typedef struct tagNET_DVR_CURTRIGGERMODE //(3.7Ver) +{ + DWORD dwSize; + DWORD dwTriggerType; //ͣITC_TRIGGERMODE_TYPE + BYTE byRes[24]; +}NET_DVR_CURTRIGGERMODE, *LPNET_DVR_CURTRIGGERMODE; + + + +typedef struct tagNET_DVR_TEMP_HUMI +{ + DWORD dwSize; // ݳ && 汾ںչ + DWORD dwChannel; // ͨţĬ1 + int iHumidity; // ʪȣ֣val/1000С֣val%1000 + int iTemp; // ¶ȣ֣val/1000С֣val%100 + BYTE byRes[8]; // ֽ +}NET_DVR_TEMP_HUMI, *LPNET_DVR_TEMP_HUMI; + + +typedef struct tagNET_DVR_ALARMSOUNDMODE_CFG +{ + DWORD dwSize; // ݳ && 汾ںչ + DWORD dwChannel; // ͨţĬ1 + DWORD dwSoundMode; // ģʽ: 0ģʽ1ģʽ2ģʽ + BYTE byRes[12]; // ֽ +}NET_DVR_ALARMSOUNDMODE_CFG, *LPNET_DVR_ALARMSOUNDMODE_CFG; + +typedef struct tagNET_DVR_SECURITYMODE +{ + DWORD dwSize;// ݳ && 汾ںչ + DWORD dwChannel; // ͨţĬ1 + DWORD dwMode; // ȫģʽ: 1ãܣ2ã + char szRandCode[6]; //豸"֤" + BYTE byRes[6]; // ֽ +}NET_DVR_SECURITYMODE, *LPNET_DVR_SECURITYMODE; + +typedef struct tagNET_DVR_MOBILE_CAPTUREPIC_CFG +{ + DWORD dwSize; + BYTE byPreviewFpsAdjMode; /* Ԥ֡ʵģʽ:0-ڣ׼֡Ԥ,1-׼֡Ԥ,2-GPSٶȽ֡ʵ */ + BYTE bySelPeccType; /* ǷѡΥ */ + BYTE byOptHabit; /* ȡ֤ϰ, 0:ȡ֤;1:̰ȡ֤ */ + BYTE byEnablePeccRec; /* 1: ʹΥ¼ץȡ, 0: ֹΥ¼ץȡ */ + BYTE byPicSize; /*0=CIF,1=QCIF,2=D1,3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6-VGA7-XVGA8-HD900p9-HD108010-2560*192011-1600*30412-2048*153613-2448*2048,14-2448*120015-2448*80016-XGA(1024*768)17-SXGA(1280*1024),18-WD1(960*576/960*480),19-1080i */ + BYTE byPicQuality; /* ͼƬϵ 0- 1-Ϻ 2-һ */ + BYTE byRes[62]; +}NET_DVR_MOBILE_CAPTUREPIC_CFG,*LPNET_DVR_MOBILE_CAPTUREPIC_CFG; + +typedef struct tagNET_DVR_CMS_PARAM +{ + DWORD dwSize; + NET_DVR_IPADDR struAddr; // ƽ̨IP + WORD wServerPort; // ƽ̨˿ڣ + BYTE bySeverProtocolType; //ƽ̨Э 1-˽У2-Ehome + BYTE byStatus; //豸עᵽƽ̨״̬1-δעᣬ2-ע + BYTE sDeviceId[NAME_LEN/*32*/]; //豸IDƽ̨ṩ + char sPassWord[PASSWD_LEN]; // + /********* IPC5.1.7 Begin 2014-03-21***********/ + BYTE sPlatformEhomeVersion[NAME_LEN];//ƽ̨EHOMEЭ汾 + /********* IPC5.1.7 end 2014-03-21***********/ + BYTE byNetWork; //ͣ0- 壬1-Զ2-ȣ3-磬4-3G磨磩5-16-2 + BYTE byAddressType; //0 - , 1 - ipv4/ipv6ַ2 - + BYTE byProtocolVersion; //Э汾 0 - , 1 C v2.02 C v4.0,3-v2.6 + BYTE byRes1; + BYTE sDomainName[MAX_DOMAIN_NAME/*64*/]; //ƽ̨byAddressTypeΪ2ʱЧ + BYTE byEnable; //0-رգ1- + BYTE byRes[139]; // ֽ +}NET_DVR_CMS_PARAM, *LPNET_DVR_CMS_PARAM; + +//ṹ +typedef struct tagNET_DVR_HEATMAP_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byDetSceneID;//ⳡ[1],ǰ֧1, IPCĬ0 + BYTE byRes[63]; +}NET_DVR_HEATMAP_COND, *LPNET_DVR_HEATMAP_COND; + +typedef struct tagNET_DVR_HEATMAP_PARAM +{ + BYTE byTargetTrackEnable;//Ŀ٣0-رգ1-Ĭ0-ر + BYTE bySensitivity; //ȲΧ1-100Ĭ50 + BYTE byBackgroundUpdateRate;//ٶȣΧ1-100Ĭ50 + BYTE bySceneChangeLevel;//仯ȼΧ1-100Ĭ50 + BYTE byMinTargetSize;//СĿߴ磺Χ1-100Ĭ50 + /* + 0- ĬϴͣCOMM_UPLOAD_HEATMAP_RESULT + 1- ϴͣCOMM_UPLOAD_HEATMAP_RESULT_PDC COMM_UPLOAD_HEATMAP_RESULT_DURATION + */ + BYTE byUploadHeatMapResultType; + BYTE byDayReport; + BYTE byWeekReport; + float fConfidence;//Ŷ[0.00,100.00] + BYTE byMonthReport; + BYTE byYearReport; + BYTE byRes[6]; +}NET_DVR_HEATMAP_PARAM, *LPNET_DVR_HEATMAP_PARAM; + +#define MAX_HEATMAPREGION_NUM 8 + +//ȶͼýṹ +typedef struct tagNET_DVR_HEATMAP_CFG +{ + DWORD dwSize; + BYTE byEnable; //ʹܣǷ + BYTE byRes[3]; + NET_VCA_POLYGON struRegion[MAX_HEATMAPREGION_NUM/*8*/];//Χ + NET_DVR_HEATMAP_PARAM struHeatMap ; + NET_DVR_HANDLEEXCEPTION_V40 struHandleException; //쳣ʽ + //ʱ + NET_DVR_SCHEDTIME struAlarmSched[MAX_DAYS/*7*/][MAX_TIMESEGMENT_V30/*8*/]; + BYTE byRes1[512]; +}NET_DVR_HEATMAP_CFG, *LPNET_DVR_HEATMAP_CFG; + +//ȶͼϴ +typedef struct tagNET_DVR_HEATMAP_RESULT +{ + DWORD dwSize; + NET_VCA_DEV_INFO struDevInfo;/*豸Ϣ*/ + NET_DVR_TIME_EX struStartTime;/*ʼʱ*/ + NET_DVR_TIME_EX struEndTime;/*ʱ*/ + DWORD dwMaxHeatMapValue;//ȶֵ + DWORD dwMinHeatMapValue;//Сȶֵ + DWORD dwTimeHeatMapValue;// (ʱȶֵ)ƽȶֵ + WORD wArrayLine;//ͼƬصֵ + WORD wArrayColumn;//ͼƬصֵ ֵΪ0ʱصֵڴϢڣ + BYTE* pBuffer; //ȶͼƬصϢ + BYTE byDetSceneID;//ⳡ[1],ǰ֧1, IPCĬ0 + BYTE byBrokenNetHttp; //־λ0-شݣ1-ش + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byTimeDiffFlag; /*ʱֶǷЧ 0-ʱЧ 1-ʱЧ */ + char cStartTimeDifferenceH; /*ʼʱUTCʱСʱ-12 ... +14+ʾ*/ + char cStartTimeDifferenceM; /*ʼʱUTCʱӣ-30, 30, 45+ʾ*/ + char cStopTimeDifferenceH; /*ʱUTCʱСʱ-12 ... +14 +ʾ*/ + char cStopTimeDifferenceM; /*ʱUTCʱӣ-30, 30, 45+ʾ*/ + BYTE byArrayUnitType; //ԪͣϢÿصݵͣ1-byte2-short,4-int + BYTE byRes1[2]; + DWORD dwTotalTime;//ͣʱܺͣλ룬Աͣʱ䱨ʱϴ + BYTE byRes[112]; +}NET_DVR_HEATMAP_RESULT,*LPNET_DVR_HEATMAP_RESULT; + +//ȶͼ ṹ +typedef struct tagNET_DVR_HEATMAP_QUERY_COND +{ + DWORD dwSize; + DWORD dwChannel ;//ͨ + NET_DVR_TIME_EX struStartTime;/*ʼʱ*/ + NET_DVR_TIME_EX struEndTime;/*ʱ*/ + BYTE byReportType;//0-Чֵ1-ձ2-ܱ3-±4-걨 + BYTE byDetSceneID;//ⳡ[1],ǰ֧1, IPCĬ0 + BYTE byHeatMapInfoType;//0~ȡռȶͼƬʽ1~ȡռȶȾϢʽ2~ȡռȶͼƬͿռȶȾϢ + BYTE byStatisticalModel;//ͳģʽ 0s-Ĭϣ1-ͣʱ䣬2-ͳƣ + BYTE byRes[124]; +}NET_DVR_HEATMAP_QUERY_COND,*LPNET_DVR_HEATMAP_QUERY_COND; + +//ȶͼ +typedef struct tagNET_DVR_HEATMAP_INFO +{ + DWORD dwSize; + NET_DVR_TIME_EX struStartTime;/*ʼʱ*/ + NET_DVR_TIME_EX struEndTime; /*ʱ*/ + DWORD dwHeatMapPicLen; /*ռȶͼƬ(ͼƬʱ򣬸ֶΪ0ûͼƬʱ򣬸ֶΪ0)*/ + BYTE* pBuffer; //ȶͼƬϢ + DWORD dwTimeHeatMapValue ; //ʱȶֵ(пȶͼʱ,ֶβҪֵ) + DWORD dwHeatMapMaxValue;//ȶȵԱʱ(s)(ռȶͼʱЧ) + DWORD dwHeatMapMinValue;//ȶȵԱʱ(s) (ռȶͼʱЧ) + WORD wArrayLine;//ͼƬصֵ ϴȶȾϢʱЧ + WORD wArrayColumn;//ͼƬصֵ ֵΪ0ʱصֵڴϢڣϴȶȾϢʱЧ + BYTE* pArrayBuffer;//ȶȾϢݵ͸ϢΪwArrayLine* wArrayColumn*ԪͳȣbyArrayUnitTypeΪ1ʾΪintͣҪ4ֽڣ + BYTE byArrayUnitType;//ԪͣϢÿصݵͣ0~byte1~int(豸зؾϢʱЧ) + BYTE byRes[107]; +}NET_DVR_HEATMAP_INFO,*LPNET_DVR_HEATMAP_INFO; + + +typedef struct tagNET_DVR_PDC_QUERY_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + NET_DVR_TIME_EX struStartTime; //ʼʱ + NET_DVR_TIME_EX struEndTime; //ʱ + BYTE byReportType; //0-Чֵ1-ձ2-ܱ3-±4-걨 + BYTE byEnableProgramStatistics; //Ƿ񰴽Ŀͳƣ0-1- + BYTE byTriggerPeopleCountingData;//ͳݵʹ, 0-1- + BYTE byMultiChannelSearch;//ͨѯʹ, 0-1-ǣpSearchChannel dwSearchChannelNumЧ + DWORD dwPlayScheduleNo; //Ŀͳʱճ̺ + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cStartTimeDifferenceH; //ʼʱUTCʱСʱ-12 ... +14 ʾʱ + char cStartTimeDifferenceM; //ʼʱUTCʱӣ-30, 0, 30, 45ʾʱ + char cStopTimeDifferenceH; //ʱUTCʱСʱ-12 ... +14ʾʱ + char cStopTimeDifferenceM; //ʱUTCʱӣ-30, 0, 30, 45ʾʱ + BYTE byRes1[3]; + DWORD dwSearchChannelNum; //ѯͨĿ + char* pSearchChannel; //ѯͨţСΪsizeof(DWORD)* dwSearchChannelNum + BYTE byChild;//ֻͯ, 0-1- + BYTE byMinTimeInterva;// Сʱ,0-Ч1-15, 2-30, 3һСʱ, 4-, 5-, 6- + BYTE byStatisticType;//ͳͣ0-Чֵ1-2-뿪3-ȫ,4-뿪ظ,5-(Ҫ·ֵ֧),0-Чֵʾͳ͵ѯ൱ڱֽڡȫʾͳΪ뿪 + BYTE byFaceExpression;//μFACE_EXPRESSION_GROUP_ENUM + BYTE byGender;//Ա1-У2-Ů3-ȫ0xff-㷨֧֣ûʶ + BYTE byMask;//Ƿ 0-ʾδ֪㷨֧֣1-2-3-ȫ0xff-㷨ֵ֧ģûʶ + BYTE byAgeGroup;//ΣμHUMAN_AGE_GROUP_ENUM + BYTE byGlasses; /*Ƿ۾0-δ֪1-ǣ2-3-ī, 4 - ȫ, 0xff-㷨֧֣ûʶ*/ + BYTE byRes[96]; +}NET_DVR_PDC_QUERY_COND,*LPNET_DVR_PDC_QUERY_COND; + +typedef struct tagNET_DVR_PROGRAM_INFO +{ + DWORD dwProgramNo; //Ŀ + BYTE sProgramName[NAME_LEN]; //Ŀ + BYTE byRes[16]; +}NET_DVR_PROGRAM_INFO, *LPNET_DVR_PROGRAM_INFO; +typedef struct tagNET_DVR_POSINFO_OVERLAY +{ + DWORD dwSize; + BYTE byEnable;// PosϢӣ0-ӣ1- + BYTE byBackpackEnanble;//ǷӱϢǷӣ0-ӣ1- + BYTE bySexEnanble;//ǷԱϢǷӣ0-ӣ1- + BYTE byCarryEnanble;//ǷණϢǷӣ0-ӣ1- + BYTE byRideEnanble;//ǷﳵϢǷӣ0-ӣ1- + BYTE byMaskEnanble;//ǷӴϢǷӣ0-ӣ1- + BYTE byHatEnanble;//ǷӴñϢǷӣ0-ӣ1- + BYTE bySleeveEnanble;//Ƿӳ0-ӣ1- + BYTE byPantsTypeEnanble;//ǷӿϢǷӣ0-ӣ1- + BYTE byHairEnanble;//Ƿӳ̷ϢǷӣ0-ӣ1- + BYTE byGlassesEnanble;//ǷӴ۾ϢǷӣ0-ӣ1- + BYTE byAgeEnanble;//ǷϢǷӣ0-ӣ1- + BYTE byHeightEnanble;//ǷϢǷӣ0-ӣ1- + BYTE byRes[511]; +}NET_DVR_POSINFO_OVERLAY, *LPNET_DVR_POSINFO_OVERLAY; + +typedef struct tagNET_DVR_PDC_RESULT +{ + DWORD dwSize; + NET_DVR_TIME_EX struStartTime;/*ʼʱ*/ + NET_DVR_TIME_EX struEndTime;/*ʱ*/ + DWORD dwEnterNum; // + DWORD dwLeaveNum; //뿪 + NET_DVR_PROGRAM_INFO struProgramInfo; //ĿϢ + DWORD dwPeoplePassing; // + BYTE byRes1[8]; //ֽ + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cStartTimeDifferenceH; //ʼʱUTCʱСʱ-12 ... +14 ʾʱ + char cStartTimeDifferenceM; //ʼʱUTCʱӣ-30, 0, 30, 45ʾʱ + char cStopTimeDifferenceH; //ʱUTCʱСʱ-12 ... +14ʾʱ + char cStopTimeDifferenceM; //ʱUTCʱӣ-30, 0, 30, 45ʾʱ + BYTE byRes3[3]; //ֽ + DWORD dwDuplicatePeople; // ظ + DWORD dwExpressionUnknown; //δ֪ + DWORD dwPokerFace; // + DWORD dwHappy; // + DWORD dwSurprised; //龪 + DWORD dwDisgusted; // + DWORD dwSad; //ѹ + DWORD dwAngry; //ŭ + DWORD dwContemptuous; // + DWORD dwPanic; //麦 + DWORD dwGenderUnknown; //Աδ֪ + DWORD dwFemale; //ԱŮ + DWORD dwMale; //Ա + DWORD dwMaskUnknown; //δ֪ + DWORD dwMaskYes; // + DWORD dwMaskNo; // + DWORD dwGlassUnknown; //۾δ֪ + DWORD dwGlassYes; //۾ + DWORD dwGlassNo; //۾ + DWORD dwSunglasses; //ī + DWORD dwAgeGroupUnknown; //δ֪ + DWORD dwChild; // + DWORD dwYoung; // + DWORD dwMiddle; // + DWORD dwOld; // + DWORD dwInfant; //Ӥ׶ + DWORD dwKid; //ζͯ + DWORD dwTeenager; // + DWORD dwPrime; //׳ + DWORD dwMiddleAged; // + BYTE byRes[64]; +}NET_DVR_PDC_RESULT, *LPNET_DVR_PDC_RESULT; + + +typedef struct tagNET_DVR_MOBILE_PLATE_RECOGCFG +{ + DWORD dwSize; + BYTE byDefaultCHN[MAX_CHJC_NUM]; /*豸ʡݵĺּд 3 */ + BYTE byTimeOsd;// ʱϢ 0 - ӣ 1- + BYTE byRecogResultOsd;//ʶ 0 - ӣ 1- + BYTE byRecogHint;//ʶɹʾ 0 - ʾ 1- ʾ + BYTE byRecogDir;//ʶ 0: , 1: + BYTE byRecogEnv;//ʶ𻷾 0: , 1: + BYTE byRecogPlateType;//0-Сʶ1-ʶ + BYTE byUploadPlate;//Ƿϴ 0 -ϴ 1-ϴ + BYTE byRes[62]; +}NET_DVR_MOBILE_PLATE_RECOGCFG,*LPNET_DVR_MOBILE_PLATE_RECOGCFG; + +typedef struct tagNET_DVR_MOBILE_RADAR_CFG +{ + DWORD dwSize; + BYTE byEnableRadar; /* 0:״ 1:״ */ + BYTE byEnableAlarm; /* 0: 1: */ + WORD wOverSpeed; /* ΧΪ20~250 */ + BYTE bySpeedUnits; /* 0:/Сʱ 1:Ӣ/Сʱ */ + BYTE bydirection; /* 0:״복 1:״복 */ + BYTE byMeasureMode; /* 0:̬ (״״̬) 1:̬ (״״̬)*/ + BYTE byTargetType; /* 0:(״ٳ) 1:(״ٳ)*/ + BYTE bySensitivity; /* [0,100] */ + BYTE byCaptureNum; /* ץ[0,255] */ + BYTE byUploadPlate; /*ǷϴץͼƬ 0-ϴ1-ϴ*/ + BYTE byRes[61]; +}NET_DVR_MOBILE_RADAR_CFG,*LPNET_DVR_MOBILE_RADAR_CFG; + +typedef struct tagNET_DVR_MOBILE_LOCALPLATECHK_CFG +{ + DWORD dwSize; + BYTE byCheck; /* Ƿнֹ 0-飬1-*/ + BYTE byCheckAlarm;/* ɹ 0-1-*/ + BYTE byCheckHint; /* ɹʾ (ʾ) 0-ʾ1-ʾ*/ + BYTE byUploadUnlicensedCar; /*ǷϴǷϢ 0-ϴ1-ϴ*/ + BYTE byRes[64]; +}NET_DVR_MOBILE_LOCALPLATECHK_CFG,*LPNET_DVR_MOBILE_LOCALPLATECHK_CFG; + +typedef struct tagNET_DVR_VEHICLE_CHECK +{ + DWORD dwSize; + DWORD dwChannel;//ͨ0xff - ȫͨĬ1,һͨ + NET_DVR_PLATE_INFO struPlateInfo; //Ϣ + WORD wIllegalType; //ΥͲù궨 ο + BYTE byRes[2]; + char sIllegalTypeInfo[128];// ΥϢ128 + NET_DVR_TIME_V30 struIllegalTime;//Υʱ + BYTE byIllegalVehicleNum;//Υ + BYTE byRes1[3]; + char sCustomInfo[64];//ԶϢ + BYTE byRes2[128]; // ֽ +}NET_DVR_VEHICLE_CHECK,*LPNET_DVR_VEHICLE_CHECK; + +typedef enum _LONG_CFG_SEND_DATA_TYPE_ENUM_ +{ + ENUM_DVR_VEHICLE_CHECK = 1, //ֹݻ + ENUM_MSC_SEND_DATA = 2, //Ļ + ENUM_ACS_SEND_DATA = 3, //Ž + ENUM_TME_CARD_SEND_DATA = 4, //ͣ(ڿƻ)Ƭ + ENUM_TME_VEHICLE_SEND_DATA = 5, //ͣ(ڿƻ) + ENUM_DVR_DEBUG_CMD = 6, //Ϣ + ENUM_DVR_SCREEN_CTRL_CMD =7, //Ļ + ENUM_CVR_PASSBACK_SEND_DATA = 8, //CVRȡصشִ + ENUM_ACS_INTELLIGENT_IDENTITY_DATA = 9, //ʶն + ENUM_VIDEO_INTERCOM_SEND_DATA = 10, //ӶԽ + ENUM_SEND_JSON_DATA = 11 //͸JSON +}LONG_CFG_SEND_DATA_TYPE_ENUM; + +typedef enum _LONG_CFG_RECV_DATA_TYPE_ENUM_ +{ + ENUM_DVR_ERROR_CODE = 1, // + ENUM_MSC_RECV_DATA=2, //Ļ + ENUM_ACS_RECV_DATA=3 //Ž +}LONG_CFG_RECV_DATA_TYPE_ENUM; + +typedef struct tagNET_DVR_WIPER_CONTINUEWORK_PARAM +{ + BYTE byWorkTimeInterval;//ʱλ룩[2s~60s] + BYTE byRes[3]; + DWORD dwContinueWorkTime;//ʱ䣨λ룩[2min~24h]ʾӵλ + BYTE byRes1[8]; +}NET_DVR_WIPER_CONTINUEWORK_PARAM,*LPNET_DVR_WIPER_CONTINUEWORK_PARAM; + +typedef union tagNET_DVR_WIPERMODE_PARAM_UNION +{ + BYTE uLen[16]; + //byWiperWorkMode = 1ʱЧ + NET_DVR_WIPER_CONTINUEWORK_PARAM struWiperContinueWorkParam; +}NET_DVR_WIPERMODE_PARAM_UNION,*LPNET_DVR_WIPERMODE_PARAM_UNION; + +typedef struct tagNET_DVR_WIPERINFO_CFG +{ + DWORD dwSize; + //ˢģʽ + //0-ģʽ1-ģʽýṹNET_DVR_ROTATE_OPERATE_PARAM2-ģʽ0xff-ر + BYTE byWiperWorkMode; + BYTE byRes1; + WORD wSensitivity;// + BYTE byRes[20]; + NET_DVR_WIPERMODE_PARAM_UNION ustruWiperModeParam; +}NET_DVR_WIPERINFO_CFG,*LPNET_DVR_WIPERINFO_CFG; + +//ԶԽ +typedef struct tagNET_DVR_AUTOFOCUS_TESTCFG +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byRes[24]; // ֽ +}NET_DVR_AUTOFOCUS_TESTCFG,*LPNET_DVR_AUTOFOCUS_TESTCFG; + + +typedef struct tagNET_DVR_VIDEO_OUT_CFG +{ + BYTE byDisplayMode; //ʾģʽ1-׼2-ɫ3-ůɫ0xff-Զ + BYTE byBrightnessLevel; // ֵ0-100 + BYTE byContrastLevel; // Աȶ0-100 + BYTE bySharpnessLevel; // 0-100 + BYTE bySaturationLevel; // Ͷ0-100 + BYTE byHueLevel; // ɫ0-100 + BYTE byImageMode; // ͼģʽ0-ģʽ1-ҹģʽ12-ҹģʽ23-ҹģʽ34-ģʽ15-ģʽ26-ģʽ3 + BYTE byRes[5]; // +}NET_DVR_VIDEO_OUT_CFG, *LPNET_DVR_VIDEO_OUT_CFG; +//ɫ +typedef struct tagNET_DVR_COLOR_TEMPERATURE_CFG +{ + BYTE byRed; //ɫ 0-100 + BYTE byGreen; //ɫ 0-100 + BYTE byBlue; //ɫ0-100 + BYTE byRedOffset; //ɫƫƣ0-100 + BYTE byGreenOffset; //ɫƫƣ0-100 + BYTE byBlueOffset; //ɫƫƣ0-100 + BYTE byRes[6]; +}NET_DVR_COLOR_TEMPERATURE_CFG, *LPNET_DVR_COLOR_TEMPERATURE_CFG; + +typedef struct tagNET_DVR_ADC_CFG +{ + BYTE byGainR; //R 0-100 + BYTE byGainG; //G0-100 + BYTE byGainB; //B0-100 + BYTE byOffsetR; //ƫR0-100 + BYTE byOffsetG; //ƫG0-100 + BYTE byOffsetB; //ƫB0-100 + BYTE byRes[6]; +}NET_DVR_ADC_CFG, *LPNET_DVR_ADC_CFG; + +typedef struct tagNET_DVR_SCREEN_EDGE_CFG +{ + BYTE byEnable; //ǷĻԵ 0- 1- + BYTE byLeftEdge; //Ե0-100 + BYTE byRightEdge; //ұԵ0-100 + BYTE byTopEdge; //ϱԵ0-100 + BYTE byLowerEdge; //±Ե0-100 + BYTE byRes[7]; +}NET_DVR_SCREEN_EDGE_CFG, *LPNET_DVR_SCREEN_EDGE_CFG; + +typedef struct tagNET_DVR_SCREEN_DISPLAY_CFG +{ + DWORD dwSize; + BYTE byCfgType; /*õIJͣȡʱ˲Ч0-Ч1-2-Ƶ3-ɫ²4-ADC5-ĻԵ*/ + BYTE byBackLight; // 0~100 + BYTE byRes1[2]; + NET_DVR_VIDEO_OUT_CFG struVideoOutCfg; //Ƶģʽ + NET_DVR_COLOR_TEMPERATURE_CFG struColorTempCfg; //ɫ² + NET_DVR_ADC_CFG struAdcCfg; //ADC + NET_DVR_SCREEN_EDGE_CFG struScreenEdgeCfg; //ĻԵ + BYTE byRes[32]; +}NET_DVR_SCREEN_DISPLAY_CFG, *LPNET_DVR_SCREEN_DISPLAY_CFG; +//ģң +typedef enum tagNET_DVR_SCREEN_REMOTE_CTRL_TYPE +{ + REMOTE_CTRL_POWERSUPPLY_OPEN = 1,//1-Դ + REMOTE_CTRL_POWERSUPPLY_CLOSE = 2,//2-Դ + REMOTE_CTRL_SIGNALSOURCE,//3-źԴ + REMOTE_CTRL_MENU,//4-˵ + REMOTE_CTRL_DETERMINATION,//5-ȷ + REMOTE_CTRL_ON,//6- + REMOTE_CTRL_UNDER,//7- + REMOTE_CTRL_LEFT,//8- + REMOTE_CTRL_RIGHT,//9- + REMOTE_CTRL_INFO,//10-INFO + REMOTE_CTRL_RETURN,// 11-һ + REMOTE_CTRL_NUM, //12-ּ +}SCREEN_REMOTE_CTRL_TYPE; + +//ģңذ +typedef struct tagNET_DVR_SIMULATE_SCREEN_REMOTE_CTRL +{ + DWORD dwSize; + BYTE byControlType; //1-Դ2-Դأ3-źԴ4-˵5-ȷ6-ϣ7-£8-9-, 10-INFO, 11-һ,12-ְ,13-һ尴 + BYTE byControlParam; //Ϊ12ʱʾֵ0-9ʱ˲Ч + BYTE byRes[14]; +}NET_DVR_SIMULATE_SCREEN_REMOTE_CTRL,*LPNET_DVR_SIMULATE_SCREEN_REMOTE_CTRL; + +//ĻźԴ +typedef struct tagNET_DVR_SCREEN_SIGNAL_CFG +{ + DWORD dwSize; + BYTE bySignalSourceType; //Դö NET_DVR_CAM_MODE + BYTE byNoSignalPic; //źŻģʽ1-2-3-LOGO + BYTE byRes[14]; +}NET_DVR_SCREEN_SIGNAL_CFG, *LPNET_DVR_SCREEN_SIGNAL_CFG; + +//Ļƴ +typedef struct tagNET_DVRSCREEN_SPLICE_CFG +{ + DWORD dwSize; + BYTE bySpliceIndex; //ƴţ0ûƴӣֵʾƴšƴ0101~020244bySpliceIndexͬҷ0. + BYTE bySpliceX; //Ļƴеλ + BYTE bySpliceY; //Ļƴеλ + BYTE byWidth; //ƴӹģĻΪλ + BYTE byHeight; //ƴӹģߣĻΪλ + BYTE byRes[11]; +}NET_DVR_SCREEN_SPLICE_CFG, *LPNET_DVR_SCREEN_SPLICE_CFG; + +//ȹʽ +typedef struct tagNET_DVR_SCREEN_FAN_WORK_MODE_CFG +{ + DWORD dwSize; + BYTE byWorkMode; //1-2-Զ + BYTE byTemperatureLimitValue; //ȿ¶ȷֵģʽΪԶʱòЧ + BYTE byRes[14]; +}NET_DVR_SCREEN_FAN_WORK_MODE_CFG, *LPNET_DVR_SCREEN_FAN_WORK_MODE_CFG; + +//VGAź +typedef struct tagNET_DVR_SCREEN_VGA_CFG +{ + DWORD dwSize; + BYTE byEnableAutoAdjust; //ǷԶ0-1-ǣԶʱ²Ч + BYTE byHorizontalPosition; //ˮƽλ 0-100 + BYTE byVerticalPosition; //ֱλ 0-100 + BYTE byClock; //ʱ 0-100 + BYTE byPhase; //λ0-100 + BYTE byRes[11]; +}NET_DVR_SCREEN_VGA_CFG, *LPNET_DVR_SCREEN_VGA_CFG; + +//Ļ˵ +typedef struct tagNET_DVR_SCREEN_MENU_CFG +{ + DWORD dwSize; + BYTE byMenuLanguage; //ԣ1-ģ2-Ӣ + BYTE byTransparency; //͸ 0-͸1-ͣ2-У3- + BYTE byDuration; //ʱ䣬0-1-5룬2-15룬3-30 + BYTE byRes[13]; +}NET_DVR_SCREEN_MENU_CFG, *LPNET_DVR_SCREEN_MENU_CFG; + +//л +typedef struct tagNET_DVR_PIP_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿûл 0- 1- + BYTE bySubWindowSource; //ӻźԴοöNET_DVR_CAM_MODE + BYTE bySubWindowBorderColor; //ӻ߿ɫ 1-ɫ2-ɫ + BYTE byRes1; + NET_DVR_RECTCFG struPosition; //ӻλãĻܴСΪ100*100 + BYTE byRes2[12]; +}NET_DVR_PIP_CFG, *LPNET_DVR_PIP_CFG; + +//͸ +typedef struct tagNET_DVR_DEFOG_LCD +{ + DWORD dwSize; + BYTE byDefogEnable; //͸أ0~رգ1~ + BYTE byDefogModel; //͸ģʽ0~Զȥ1~ֶȥ + BYTE byDefogLevel; //͸ǿȵȼ1-7ȼĬϵȼΪ4ȼ1Ϊ0.5ȼ2Ϊ0.55ȼ3Ϊ0.60ȼ4Ϊ0.65ȼ5Ϊ0.70ȼ6Ϊ0.75ȼ7Ϊ0.80ȥģʽΪֶȥʱȥǿȵȼ + BYTE byRes[33]; +}NET_DVR_DEFOG_LCD,*LPNET_DVR_DEFOG_LCD; + +//Ļάǽ +typedef struct tagNET_DVR_SCREEN_WALL_CFG +{ + DWORD dwSize; + BYTE byEnable; //״̬ء0-Ϊرգ1-Ϊ + BYTE byRes[35]; +}NET_DVR_SCREEN_WALL_CFG, *LPNET_DVR_SCREEN_WALL_CFG; + +//Ļλ +typedef struct tagNET_DVR_SCREEN_POS_CFG +{ + DWORD dwSize; + BYTE byScreenRowNum;//Ļкš + BYTE byScreenColNum;//Ļкš + BYTE byRes[34]; +}NET_DVR_SCREEN_POS_CFG, *LPNET_DVR_SCREEN_POS_CFG; + +typedef struct tagNET_DVR_VIDEO_AUDIOIN_CFG +{ + DWORD dwSize; //ṹij + DWORD dwChanNo; //Ƶͨţ ú󣬱󶨵ԽͨΪͨƵԴ + BYTE byEnable; //ǷԽΪƵԴ 0- 1- + BYTE byRes[31]; // +}NET_DVR_VIDEO_AUDIOIN_CFG, *LPNET_DVR_VIDEO_AUDIOIN_CFG; + +typedef struct _NET_DVR_VCA_DETION_CFG +{ + DWORD dwSize; + BYTE byEnable;//ʹ + BYTE byRes1[3]; + NET_DVR_SCHEDTIME struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; + NET_DVR_HANDLEEXCEPTION_V40 struHandleException; //쳣ʽ + DWORD dwMaxRelRecordChanNum ; //¼ͨ ֻ֧ + DWORD dwRelRecordChanNum ; //¼ͨ ʵֵ֧ + DWORD dwRelRecordChan[MAX_CHANNUM_V30/*64*/];//¼ͨ + BYTE byEnablePreset[MAX_CHANNUM_V30]; + BYTE byPresetNo[MAX_CHANNUM_V30]; + BYTE byEnableCruise[MAX_CHANNUM_V30]; + BYTE byCruiseNo[MAX_CHANNUM_V30]; + BYTE byEnablePtzTrack[MAX_CHANNUM_V30]; + BYTE byPTZTrack[MAX_CHANNUM_V30]; + NET_DVR_SCHEDTIME struHolidayTime[MAX_TIMESEGMENT_V30/*8*/]; //ղʱ + BYTE byRes[224];; +}NET_DVR_VCA_DETION_CFG, *LPNET_DVR_VCA_DETION_CFG; + +typedef struct tagNET_DVR_VCA_DETECTION_CFG_V40 +{ + DWORD dwSize; //ṹС + BYTE byEnable;//ʹ + BYTE byRes1[3]; + NET_DVR_SCHEDTIME struAlarmSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; + DWORD dwHandleType; //쳣,쳣ʽ"" + /*0x00: Ӧ*/ + /*0x01: Ͼ*/ + /*0x02: */ + /*0x04: ϴ*/ + /*0x08: */ + /*0x10: JPRGץͼϴEmail*/ + /*0x20: ⱨ*/ + /*0x40: ӵͼ(ĿǰֻPCNVR֧)*/ + /*0x200: ץͼϴFTP*/ + DWORD dwMaxRelAlarmOutChanNum ; //ıֻ֧ͨ + DWORD dwRelAlarmOut[MAX_ALARMOUT_V40/*4128*/]; //* ʵʴıţֵʾ,ýУ±0ʼ˳ȡ0xffffffffЧ*/ + /*¼ͨ*/ + DWORD dwMaxRecordChanNum; //豸ֵ֧¼ͨ-ֻ + DWORD dwRelRecordChan[MAX_CHANNUM_V40/*512*/]; /* ʵʴ¼ֵͨʾ,ýУ±0ʼ˳ȡ0xffffffff,Ч*/ + DWORD dwEnablePresetChanNum; //ǰԤõĿ + NET_DVR_PRESETCHAN_INFO struPresetChanInfo[MAX_CHANNUM_V40/*512*/]; //õԤõϢdwEnablePresetChanNumΪ0ʱ±0-(dwEnablePresetChanNum -1)ЧΪ0ʱʾδԤõ + BYTE byRes2[516]; /**/ + DWORD dwEnableCruiseChanNum; //ǰѲͨĿ + NET_DVR_CRUISECHAN_INFO struCruiseChanInfo[MAX_CHANNUM_V40/*512*/]; //ѲͨϢdwEnableCruiseChanNumΪ0ʱ±0-( dwEnableCruiseChanNum -1)ЧΪ0ʱʾδѲ + DWORD dwEnablePtzTrackChanNum; //ǰ̨켣ͨĿ + NET_DVR_PTZTRACKCHAN_INFO struPtzTrackInfo[MAX_CHANNUM_V40/*512*/]; //̨켣ͨϢdwEnablePtzTrackChanNumΪ0ʱ±0-(dwEnablePresetChanNum -1)ЧΪ0ʱʾδ̨켣 + NET_DVR_SCHEDTIME struHolidayTime[MAX_TIMESEGMENT_V30]; //ղʱ + BYTE byRes[224]; +}NET_DVR_VCA_DETECTION_CFG_V40, *LPNET_DVR_VCA_DETECTION_CFG_V40; + +typedef struct tagNET_DVR_CLOUD_STORAGE_CFG +{ + DWORD dwSize; //ṹС; + BYTE byEnableCS; //ƴ洢 0-ر 1- + BYTE byRes[511]; // +} NET_DVR_CLOUD_STORAGE_CFG, *LPNET_DVR_CLOUD_STORAGE_CFG; + + +typedef struct tagNET_DVR_CHANS_RECORD_STATUS_CFG +{ + DWORD dwSize ; //ṹС + BYTE byValid; //ǷЧ + /*(ֻ)¼ͣ0: ¼1¼ 2- + 3- 4-Ƶ 5-δ 6-浵 7-ش + 8-û 9-δ֤,10-浵к¼ 11-¼شк¼*/ + BYTE byRecord; + DWORD dwRelatedHD; // + BYTE byOffLineRecord; //¼ 0-ر 1- + BYTE byRes[63]; //ֽ +}NET_DVR_CHAN_RECORD_STATUS_CFG, *LPNET_DVR_CHAN_RECORD_STATUS_CFG; + +#define MAX_CAMERAID_LEN 64 +typedef struct tagNET_DVR_UPLOAD_RECORD_INFO +{ + DWORD dwSize; + DWORD dwRecordType; //¼ 0- ʱ¼1- ƶ¼2- ¼3- ƶ¼4- ƶ¼ 5- 6- ֶ¼7- 𶯱8- 9- ܱ10- ش¼ + BYTE sCameraID[MAX_CAMERAID_LEN]; //camera id; + NET_DVR_TIME_EX struStartTime; //¼ʼʱ + NET_DVR_TIME_EX struStopTime; //¼ʱ + DWORD dwStoragePoolID; //洢ID + BYTE byFormatType ; //װͣ1-2-RTPװ3-PSװ4-TSװ5-˽У6-FLV7-ASF8-3GP9-RTP+PS꣺GB281810xff-Ч + BYTE byVideoEncType ; //Ƶͣ0-˽2641-׼h2642-׼mpeg47-M-JPEG8-MPEG20xfe- ԶԴһ£0xff-Ч + BYTE byAudioEncType; //Ƶͣ0-G7221-G711_U2-G711_A5-MP2L26-G7267-AAC0xfe- ԶԴһ£0xff-Ч + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cStartTimeDifferenceH; //ʼʱUTCʱСʱ-12 ... +14 ʾʱ + char cStartTimeDifferenceM; //ʼʱUTCʱӣ-30, 0, 30, 45ʾʱ + char cStopTimeDifferenceH; //ʱUTCʱСʱ-12 ... +14ʾʱ + char cStopTimeDifferenceM; //ʱUTCʱӣ-30, 0, 30, 45ʾʱ + BYTE byRes[120]; +}NET_DVR_UPLOAD_RECORD_INFO,*LPNET_DVR_UPLOAD_RECORD_INFO; + +//Ʋ ṹ +typedef struct tagNET_DVR_IOOUT_COND +{ + DWORD dwSize; + BYTE bySyncOutputNo;//ͬ(0-F1,1-F2,2-F3) + BYTE byRes[63]; +}NET_DVR_IOOUT_COND,*LPNET_DVR_IOOUT_COND; + +//Ʋ +typedef struct tagNET_DVR_IOOUT_CFG +{ + DWORD dwSize; + BYTE byWorkMode;// 0-,1-Ƶ(Ĭ) + BYTE byRes1[3]; + union + { + BYTE byUnionLen[128]; + struct + { + BYTE byDefaultState;//Ĭ״̬ 0-͵ƽ(Ĭ)1-ߵƽ + BYTE byWorkState;//Ч״̬ 0-͵ƽ(Ĭ),1-ߵƽ,2- + BYTE byFreqMulti;//ƵֵΧ[1,15] + BYTE byDutyRatio;//ռձȣ[0,40%] + BYTE byRes[3]; + BYTE byFlashLightEnable; //ʱʹ:0-;1- + NET_DVR_SCHEDTIME struFlashLightTime;//ʱ + BYTE byRes1[116]; + }struStrobeLamp; // Ƶ ʱЧ + }uWorkModeInfo; + BYTE byRes2[128]; +}NET_DVR_IOOUT_CFG,*LPNET_DVR_IOOUT_CFG; + +//źŵͬ +typedef struct tagNET_DVR_SIGNAL_SYNCCFG +{ + DWORD dwSize; + WORD wPhase;//λ(0~360) + BYTE byLineLock;//Դͬ 0-1- + BYTE byRes[125]; +}NET_DVR_SIGNAL_SYNCCFG,*LPNET_DVR_SIGNAL_SYNCCFG; + +// өʯEZVIZṹ +typedef struct +{ + DWORD dwSize; + BYTE byEnable;// EZVIZ 0ã1 + /********* IPC5.1.7 Begin 2014-03-21***********/ + BYTE byDeviceStatus; //豸Ƿ״̬0-1-ߣ2- + BYTE byAllowRedirect; //Ƿض,0-,1-,2-,0ʾֲ,SDK豸 + BYTE byDomainName[MAX_DOMAIN_NAME]; //ַ + BYTE byRes1; + BYTE byVerificationCode[NET_SDK_MAX_VERIFICATION_CODE_LEN/*32*/];//өʯ֤ + BYTE byNetMode; //ģʽ0-壬1-Զ2-ȣ3-(Ĭ)4- + BYTE byOfflineStatus; //豸߾״̬: 0-1-өʯע֤ЧֶΪֻҵDeviceStatusΪ2ʱЧ + BYTE byEnableTiming;// EZVIZУʱ 0ã1 + BYTE byRes2; + BYTE byOperateCode[NET_SDK_MAX_OPERATE_CODE_LEN]; //룬û豸ʱʹ + BYTE byRes[344]; +}NET_DVR_EZVIZ_ACCESS_CFG,*LPNET_DVR_EZVIZ_ACCESS_CFG; + +typedef struct tagNET_DVR_ALARM_RELATE_COND +{ + DWORD dwSize; + /* + 0ʾƶ⣬ + 1ʾƵڵ + 2ʾƵʧ + 3ʾPIR + 4ʾ߱ + 5ʾȱ + 6ʾץͼ + 7ʾ⣬ + 8ʾԽ⣬ + 9ʾ⣬ + 10ʾ⣬ + 11 ʾ쳣⣬ + 0xff ʾ + */ + BYTE byAlarmType; + // 0-Ч,1-ץͼϴFTP,2-JpegץͼϴEmail + BYTE byRelateActType; + BYTE byRes[2]; + //ŻͨŻ߱ + //(byAlarmType ==0xffʱ,dwChannelʾDZ) + //(byAlarmType ==4ʱ,dwChannelʾ߱) + DWORD dwChannel; + BYTE byRes1[64]; +}NET_DVR_ALARM_RELATE_COND,*LPNET_DVR_ALARM_RELATE_COND; + +typedef struct tagNET_DVR_ALARM_RELATE_CFG +{ + DWORD dwSize; + DWORD dwMaxRelateChanNum ; //ıֻ֧ͨ + //dwRelateChanijʼֵ0xffffffff;дʵʵͨ; + DWORD dwRelateChan[MAX_CHANNUM_V40/*512*/]; + BYTE byRes1[256]; +}NET_DVR_ALARM_RELATE_CFG,*LPNET_DVR_ALARM_RELATE_CFG; + +typedef struct tagNET_DVR_PTZ_BASICPARAMCFG +{ + DWORD dwSize; + BYTE byProportionalPan; //ñ䱶 0-1- + BYTE byPresetFreezing; //ԤõƵ 0-1- + BYTE byPresetSpeed;//Ԥõٶȵȼ 1--8Ĭ4 + BYTE byKeyboardCtrlSpeed;//ֿٶȵȼ0-,1-,2- + BYTE byAutoScanSpeed;//ɨٶȵȼ1--40Ĭ28 + BYTE byZoomingSpeed;//䱶ٶȣ1--3Ĭ3 + BYTE byManualControlSpeed;//ֿٶģʽ0-ݣ1-ˣ2-ǻ3-4-Ӧ + BYTE byPTZMotionTrack;//˶٣̨ 0-Ĭϣ1-ر + BYTE byRes[124]; +}NET_DVR_PTZ_BASICPARAMCFG,*LPNET_DVR_PTZ_BASICPARAMCFG; + +typedef struct tagNET_DVR_PTZ_OSDCFG +{ + DWORD dwSize; + BYTE byZoomStatus; //ͷʾ1-2롢2-5롢3-10롢0xff-ء0-Ĭ2 + BYTE byPtStatus; //λʾ1-2롢2-5롢3-10롢0xff-ء0-Ĭ2 + BYTE byPresetStatus;//Ԥõʾ1-2롢2-5롢3-10롢0xff-ء0-Ĭ2 + BYTE byPositionDisplayFormat;//λʾʽ 0-PTʾ( P179|T-02)1-շλʾ(SE123|T-02) + BYTE byRes[124]; +}NET_DVR_PTZ_OSDCFG,*LPNET_DVR_PTZ_OSDCFG; + +typedef struct tagNET_DVR_PTZ_POWEROFFMEMCFG +{ + DWORD dwSize; + BYTE byResumeTimePoint; //ģʽOxff-á1-30롢2-60롢3-300롢4-600룬Ĭ30 + BYTE byRes[127]; +}NET_DVR_PTZ_POWEROFFMEMCFG,*LPNET_DVR_PTZ_POWEROFFMEMCFG; + +typedef struct tagNET_DVR_PTZ_LIMITCOND +{ + DWORD dwSize; + DWORD dwChan; //ͨ + BYTE byLimitMode; //λģʽ 0-1-λ2-ɨλ + BYTE byRes[63]; +}NET_DVR_PTZ_LIMITCOND, *LPNET_DVR_PTZ_LIMITCOND; + +typedef struct tagNET_DVR_PTZ_LIMITCFG +{ + DWORD dwSize; + BYTE byEnable;//ʹܣ0-1- + BYTE byLimitStatus; //λ״̬ 0-δλ1-λɱ༭ + BYTE byRes[122]; +}NET_DVR_PTZ_LIMITCFG,*LPNET_DVR_PTZ_LIMITCFG; + +typedef struct tagNET_DVR_PTZ_LIMITCTRL +{ + DWORD dwSize; + DWORD dwChan;//ͨ + BYTE byLimitMode; //λģʽ 0-1-λ2-ɨλ + BYTE byWorkMode ;//0-ã1- + BYTE byRes[122]; +}NET_DVR_PTZ_LIMITCTRL,*LPNET_DVR_PTZ_LIMITCTRL; + +typedef struct tagNET_DVR_PTZ_LOCKCFG +{ + DWORD dwSize; + BYTE byWorkMode ;//̨ 0-1- + BYTE byRes[123]; +}NET_DVR_PTZ_LOCKCFG,*LPNET_DVR_PTZ_LOCKCFG; + +typedef struct tagNET_DVR_PTZLOCKINFO_COND +{ + DWORD dwSize; + DWORD dwChannel ;//ͨ + BYTE byRes[64]; +}NET_DVR_PTZLOCKINFO_COND,*LPNET_DVR_PTZLOCKINFO_COND; + +typedef struct tagNET_DVR_PTZLOCKINFO +{ + DWORD dwSize; + DWORD dwRemainingSec ;//ʣ + BYTE byRes[128]; //ֽ +}NET_DVR_PTZLOCKINFO, *LPNET_DVR_PTZLOCKINFO; + +typedef struct tagNET_DVR_CRUISEPOINT_COND +{ + DWORD dwSize; + DWORD dwChan;//ͨ + WORD wRouteNo;//Ѳ· + BYTE byRes[30]; +}NET_DVR_CRUISEPOINT_COND,*LPNET_DVR_CRUISEPOINT_COND; + +typedef struct +{ + WORD wPresetNo; //Ԥõ + WORD wDwell; //ͣʱ + BYTE bySpeed; //ٶ + BYTE bySupport256PresetNo;//֮ǰ 256ԤõǷЧ + BYTE byRes[6]; +}NET_DVR_CRUISEPOINT_PARAM,*LPNET_DVR_CRUISEPOINT_PARAM; + +typedef struct +{ + DWORD dwSize; + // ֧128Ѳ + NET_DVR_CRUISEPOINT_PARAM struCruisePoint[MAX_CRUISE_POINT_NUM]; + BYTE Res[64]; // +}NET_DVR_CRUISEPOINT_V40, *LPNET_DVR_CRUISEPOINT_V40; + +typedef struct +{ + DWORD dwSize; + // ֧256Ѳ + NET_DVR_CRUISEPOINT_PARAM struCruisePoint[MAX_CRUISEPOINT_NUM_V50]; + BYTE Res[64]; // +}NET_DVR_CRUISEPOINT_V50, *LPNET_DVR_CRUISEPOINT_V50; + + +typedef struct tagNET_DVR_TEST_VERSION_HEAD +{ + DWORD dwSize; + DWORD dwParam1; + BYTE byParam2; + BYTE byRes[31]; +}NET_DVR_TEST_VERSION_HEAD, *LPNET_DVR_TEST_VERSION_HEAD; + +typedef struct tagNET_DVR_TEST_VERSION_HEAD_V1 +{ + DWORD dwSize; + DWORD dwParam1; + BYTE byParam2; + BYTE byRes[31]; + DWORD dwParam1_1; + BYTE byParam1_2; + BYTE byRes1[31]; +}NET_DVR_TEST_VERSION_HEAD_V1, *LPNET_DVR_TEST_VERSION_HEAD_V1; + +typedef struct tagNET_DVR_TEST_VERSION_HEAD_V2 +{ + DWORD dwSize; + DWORD dwParam1; + BYTE byParam2; + BYTE byRes[31]; + DWORD dwParam1_1; + BYTE byParam1_2; + BYTE byRes1[31]; + DWORD dwParam2_1; + BYTE byParam2_2; + BYTE byRes2[31]; +}NET_DVR_TEST_VERSION_HEAD_V2, *LPNET_DVR_TEST_VERSION_HEAD_V2; + +#define MAX_DISPLAY_NUM 512 //ʾ +#define MAX_LEDCONTENT_NUM 512 //LEDַ󳤶 +#define MAX_PPT_CHAN 128 //PPT + +typedef struct tagNET_DVR_VIDEOWALLDISPLAYMODE +{ + DWORD dwSize; + BYTE byEnable;//ʹ + BYTE byRes1[3]; + NET_DVR_RECTCFG_EX struRect;//귶Χݻ׼ֵ֧ƴģʽ + BYTE sName[NAME_LEN]; //ǽ + BYTE byRes2[100]; +}NET_DVR_VIDEOWALLDISPLAYMODE, *LPNET_DVR_VIDEOWALLDISPLAYMODE; + +typedef struct tagNET_DVR_DISPLAYPARAM +{ + DWORD dwDisplayNo;//ʾ + BYTE byDispChanType;/*ģʽ,1-BNC2-VGA3-HDMI4-DVI5-SDI, 6-FIBER, \ + 7-RGB, 8-YPrPb, 9-VGA/HDMI/DVIӦ10-3GSDI,11-VGA/DVIӦ12-HDBaseT,13-HDTVI, 14-TVI0xff-Ч*/ + + BYTE byRes[11]; +}NET_DVR_DISPLAYPARAM,*LPNET_DVR_DISPLAYPARAM; + +typedef struct tagNET_DVR_DISPLAYCFG +{ + DWORD dwSize; + NET_DVR_DISPLAYPARAM struDisplayParam[MAX_DISPLAY_NUM/*512*/] ; + BYTE byRes[128]; +}NET_DVR_DISPLAYCFG,*LPNET_DVR_DISPLAYCFG; + +typedef struct tagNET_DVR_VIDEOWALLDISPLAYPOSITION +{ + DWORD dwSize; + BYTE byEnable; + BYTE byCoordinateType;//͡0-׼꣬1-ʵ + BYTE byRes1[2]; + //ǽ,1ֽǽţֽڣں豸Ϊͨţ+3ֽڱ + DWORD dwVideoWallNo; + DWORD dwDisplayNo;//ʾ + //Ϊ׼1920*1920Ⱥ͸߶ֵãΪ׼ֵ + NET_DVR_RECTCFG_EX struRectCfg; + BYTE byRes2[64]; +}NET_DVR_VIDEOWALLDISPLAYPOSITION,*LPNET_DVR_VIDEOWALLDISPLAYPOSITION; + +/*Ϣ*/ +typedef struct tagNET_DVR_VIDEOWALLWINDOWPOSITION +{ + DWORD dwSize; + BYTE byEnable; //ʹ,0-ʹܣ1-ʹ + BYTE byWndOperateMode; //ڲģʽ0-ͳһ꣬1-ֱ + BYTE byRes1[6]; + DWORD dwWindowNo;//ں + DWORD dwLayerIndex;//Ӧͼţͼŵöö + NET_DVR_RECTCFG_EX struRect; //ĿĴͳһ(ʾǽ)ȡͳһʱЧ + NET_DVR_RECTCFG_EX struResolution; //ĿĴڷֱ꣬ȡ򰴷ֱЧ + DWORD dwXCoordinate; //LEDϽX꣨ͳһ꣩ȡ򰴷ֱЧ + DWORD dwYCoordinate; //LEDϽY꣨ͳһ꣩ȡ򰴷ֱЧ + BYTE byRes2[36]; +}NET_DVR_VIDEOWALLWINDOWPOSITION,*LPNET_DVR_VIDEOWALLWINDOWPOSITION; + +typedef struct tagNET_DVR_VIDEO_WALL_INFO +{ + DWORD dwSize; + //ںţ1ֽǽţں豸Ϊͨţ+1ֽڱ+2ֽڴں + DWORD dwWindowNo; + DWORD dwSceneNo;// + DWORD dwDestWallNo; //Ŀǽ + DWORD dwDestSceneNo;//Ŀij + BYTE byRes[12]; +}NET_DVR_VIDEO_WALL_INFO,*LPNET_DVR_VIDEO_WALL_INFO; + +typedef struct tagNET_DVR_VIRTUALLED_PARAM +{ + DWORD dwSize; + BYTE byEnable; //ʹ + BYTE byDispMode; //ʾģʽ1-͸2-͸3- + BYTE byWndOperateMode; //ڲģʽ0-ͳһ꣬1-ֱ + BYTE byType; //LEDͣ0-ı1-ʱ + BYTE byDirection; //LED0-ˮƽ1-ֱ + BYTE byTimeType; //ʱͣbyTypeΪ1ʱЧ0-Ч1-ֻʾʱ䣬2-ʾںʱ + BYTE byDateFormat; //ʾʽbyTimeTypeΪ2ʱЧ + //0-Ч1-XXXX-XX-XX()2-XX-XX-XXXX()3-XX-XX-XXXX()4-XXXXXXXXգ5-XXXXXXXX꣬6-XXXXXXXX + BYTE byTimeFormat; //ʱʾʽbyTimeTypeΪʱЧ + //0-Ч1-H:MM:SS2-HH:MM:SS + NET_DVR_RGB_COLOR struContentColor; //ɫ + NET_DVR_RGB_COLOR struBackColor; //ɫ + NET_DVR_RECTCFG_EX struRect; + DWORD dwContentNum; //ıݳȣbyTypeΪ0ʱЧ + BYTE byLedContent[MAX_LEDCONTENT_NUM/*512*/]; //ıݣbyTypeΪ0ʱЧ + BYTE byMoveMode; //ƶģʽ1-ͨ2-ƽ3-ֹ + BYTE byFontSize; //С1-12-23-4 + BYTE byMoveDirection; //ƶ0-Ĭϣң1-ң2-ҵ3-ϵ£4-µϣ̬LEDʱЧ + BYTE byMoveSpeed; //ƶٶȣ1-ٶ12-ٶ2̬LEDʱЧ + NET_DVR_RECTCFG_EX struResolution; //ĿĴڷֱ꣬ȡ򰴷ֱЧ + DWORD dwXCoordinate; //LEDϽX꣨ͳһ꣩ȡ򰴷ֱЧ + DWORD dwYCoordinate; //LEDϽY꣨ͳһ꣩ȡ򰴷ֱЧ + BYTE byHourFormat; //ʱʽbyTimeTypeΪʱЧ0-Ч1-12Сʱƣ2-24Сʱ + BYTE byAMFormat; //AMʽbyHourFormatΪ1ʱЧ0-Ч1-AM2- + BYTE byPMFormat; //PMʽbyHourFormatΪ1ʱЧ0-Ч1-PM2- + BYTE byAlignmentX; //ˮƽ뷽ʽbyDirectionΪ0ʱЧ0-Ч1-룬2-ж룬3-Ҷ + BYTE byAlignmentY; //ֱ뷽ʽbyDirectionΪ1ʱЧ0-Ч1-˶룬2-ж룬3-׶˶ + BYTE byFontType; //ͣ0-Ĭϣ1-壬2-壬3-壬255-Զ + BYTE byRes2[90]; +}NET_DVR_VIRTUALLED_PARAM,*LPNET_DVR_VIRTUALLED_PARAM; + +typedef struct tagNET_DVR_IMAGE_CUT_MODE +{ + DWORD dwSize; + BYTE byCutMode; //ͼиģʽ1-4:3,2-16:9 + BYTE byRes[31]; +}NET_DVR_IMAGE_CUT_MODE,*LPNET_DVR_IMAGE_CUT_MODE; + +typedef struct tagNET_DVR_USING_SERIALPORT +{ + DWORD dwSize ; + DWORD dwSerialPort; //ǰʹôں + BYTE byProtocolType; //Эͣ1-LCD-S1 , 2-LCD-S2 , 3-LCD-L1 4-LCD-DLP 5-LCD-S3 , 6-LCD-D207-LCD-L2,8-LCD-Z19-LCD-D20/D,10-LCD-D20/S,11-LCD-D20/P,12-LCD-D20/T,13-LCD-D20/F,14-LCD-D20/DF,15-LCD-D20/FS,16-LCD-D20/FP,17-LCD-D20/FT,18-LCD-D5022,19-LCD-D5032,20-LCD-D5042+ + BYTE byRes[31]; +}NET_DVR_USING_SERIALPORT,*LPNET_DVR_USING_SERIALPORT; + +typedef struct tagNET_DVR_VIDEOWALLSCENECFG +{ + DWORD dwSize; + BYTE sSceneName[NAME_LEN];// + BYTE byEnable;//ǷЧ 1-Ч0-Ч + BYTE bySceneIndex; //ţֻܻȡȡгʱʹøò + BYTE byRes [78]; +}NET_DVR_VIDEOWALLSCENECFG, *LPNET_DVR_VIDEOWALLSCENECFG; + +typedef struct tagNET_DVR_SCENE_CONTROL_INFO +{ + DWORD dwSize; + NET_DVR_VIDEO_WALL_INFO struVideoWallInfo; //ǽϢ + DWORD dwCmd; //1-ģʽлҪлǵǰ򲻽л2-ʼ˳գǵǰͬʱԵǰ3-ǿлǷǵǰǿл4-浱ǰģʽij 5-ɾ ,6- + BYTE byRes[4]; +}NET_DVR_SCENE_CONTROL_INFO, *LPNET_DVR_SCENE_CONTROL_INFO; + +typedef struct tagNET_DVR_SHOW_CONTROL_INFO +{ + DWORD dwSize; + DWORD dwDisplayNo; //ʾںţ0xffffffffʾڽв + BYTE byEnable; //ʹʾ0-ʾ1-ʾ + BYTE byChanType; //ʾͨͣ1-ʾͨţ2- + BYTE byRes1[2]; + DWORD dwWallNo; //ǽţ1ֽǽţλ+3ֽڱʾĻʱЧ + BYTE byRes2[56]; +}NET_DVR_SHOW_CONTROL_INFO,*LPNET_DVR_SHOW_CONTROL_INFO; + +typedef struct tagNET_DVR_BUF_INFO +{ + void* pBuf; //ָ + DWORD nLen; // +}NET_DVR_BUF_INFO, *LPNET_DVR_BUF_INFO; + +typedef struct tagNET_DVR_IN_PARAM +{ + NET_DVR_BUF_INFO struCondBuf; // + NET_DVR_BUF_INFO struInParamBuf; // + DWORD dwRecvTimeout; //ݳʱʱ䣬λms,0ýӿĬϳʱ + BYTE byRes[32]; +}NET_DVR_IN_PARAM,LPNET_DVR_IN_PARAM; + +typedef struct tagNET_DVR_OUT_PARAM +{ + NET_DVR_BUF_INFO struOutBuf; // + void* lpStatusList; //״̬ + BYTE byRes[32]; +}NET_DVR_OUT_PARAM,LPNET_DVR_OUT_PARAM; + +typedef struct tagNET_DVR_AUDIO_CHAN_INFO +{ + DWORD dwSize; + DWORD dwChannel; //Ƶͨϣ1ֽ豸+1ֽӰ+2ֽƵͨţ + BYTE byRes[48]; +}NET_DVR_AUDIO_CHAN_INFO, *LPNET_DVR_AUDIO_CHAN_INFO; + +typedef struct tagNET_DVR_AUDIO_CHAN_CFG +{ + DWORD dwSize; + BYTE sChanName[NAME_LEN]; //Ƶͨ + BYTE byEnable; //ƵǷ 0-أ 1- + BYTE byAudioSwitchType; //Ƶлʽ1-ǰԴʽ2-ڽԴʽ + BYTE byRes[2]; + NET_DVR_PU_STREAM_CFG_V41 struAudioSrcInfo; //ƵԴϢ byAudioSwitchTypeΪ1ʱЧ + DWORD dwWindowNo; //Ӵںţ1ֽǽ+1ֽӴں+2ֽڴںţbyAudioSwitchTypeΪ2ʱЧ + BYTE byRes2[28]; +}NET_DVR_AUDIO_CHAN_CFG, *LPNET_DVR_AUDIO_CHAN_CFG; + +#define MAX_SUBBOARD_NUM 42 //ʽ豸Ŀ +#define MAX_SINGLE_BOARD_EXCEPTION_NUM 16 //󲢷쳣 +typedef struct tagNET_DVR_MAINBOARD_SERIAL_CFG +{ + DWORD dwSize; + BYTE bySerialWorkMode; //ڹģʽ1-RS484,2-RS232 + BYTE byFunType; //ڹܣ1-̿ƣ2-Ļƣ3-͸ͨģʽ 4-PTZ 5- 6-̨ + BYTE byDataBit;// мλ 05λ16λ27λ38λ; + BYTE byStopBit;// ֹͣλ 01λ12λ; + DWORD dwBaudRate;//0501752110315043005600612007240084800996001019200 11384001257600137680014115.2k; + BYTE byParity;// У 0У飬1У飬2żУ; + BYTE byFlowcontrol;// 0ޣ1,2-Ӳ + WORD wProtocol;//Э飬ͬڹܶӦЭ鲻һ + BYTE byVariable ; //Ƿɱ䣬1-ɱ 2-ɱ ֻȡ + BYTE byGateWayEnable; //Ƿأ0-أ!0 + BYTE byRes[30]; +}NET_DVR_MAINBOARD_SERIAL_CFG, *LPNET_DVR_MAINBOARD_SERIAL_CFG; + +typedef struct tagNET_DVR_SUBBOARD_INFO +{ + DWORD dwSize; + BYTE byBoardType; //ͣ0-壬1-DVI-I룬2-YPbPr룬3-BNC룬4-SDI룬 5-DVI˫·룬 6-ͨ룬 7-DVI-I 8-SDI, 9-ǿͽ룬10-DP룬11-HDTVI룬12-HDBaseT13-HDMI룬14-HDBaseT15-DVI-T룬16-HDMI17-HDMI-HD ,18-HDMI-UHD , 19-DP_UHD,0xff-δ֪ //ͣ0-壬1-DVI-I룬2-YPbPr룬3-BNC룬4-SDI룬 5-DVI˫·룬 6-ͨ룬 7-DVI-I 8-SDI, 9-ǿͽ룬10-DP룬11-HDTVI룬12-HDBaseT13-HDMI룬14-HDBaseT15-DVI-T룬16-HDMI17-HDMI-HD ,18-HDMI-UHD , 19-DP_UHD,0xff-δ֪ + BYTE byInterfaceNum; //ӿ + BYTE byStatus; //״̬0-쳣 1- + BYTE bySyncStatus; // ͬ״̬0-δͬ 1-ͬ + DWORD dwSlotNo; //ڲλ + BYTE byRes2[32]; +}NET_DVR_SUBBOARD_INFO, *LPNET_DVR_SUBBOARD_INFO; + +typedef struct tagNET_DVR_DEVICE_SUBBOARD_INFO +{ + DWORD dwSize; + BYTE byBackBoardType; //ͣ 1-4U 2-8U 3-13U, 0xff-δ֪ + BYTE bySoltNum; //λĿ + BYTE byBoardNum; //ЧĿ + BYTE byRes1[1]; + NET_DVR_SUBBOARD_INFO struSubBoadInfo[MAX_SUBBOARD_NUM]; //ǰbyBoardNumЧ + BYTE byRes2[32]; +}NET_DVR_DEVICE_SUBBOARD_INFO, *LPNET_DVR_DEVICE_SUBBOARD_INFO; + +typedef struct tagNET_DVR_DEVICE_BOARD_EXCEPINFO +{ + DWORD dwSize; + BYTE byExceptNum; //쳣 + BYTE byRes1[3]; + BYTE byMajor[MAX_SINGLE_BOARD_EXCEPTION_NUM]; // + WORD wMinor[MAX_SINGLE_BOARD_EXCEPTION_NUM]; // + BYTE byRes2[32]; +}NET_DVR_DEVICE_BOARD_EXCEPINFO, *LPNET_DVR_DEVICE_BOARD_EXCEPINFO; + + +typedef struct tagNET_DVR_LINEARSCAN +{ + DWORD dwSize; + DWORD dwChan; //ͨ + BYTE byLinearScanType; //λͣ0-,1-߽,2-ұ߽ + BYTE byRes[63]; +}NET_DVR_LINEARSCAN, *LPNET_DVR_LINEARSCAN; + +//Ϣ +typedef struct tagNET_DVR_STREAM_ATTACHINFO_CFG +{ + DWORD dwSize; //ṹС + BYTE byStreamWithVca; //еϢɹк0-,1- + BYTE byRes[127]; // +}NET_DVR_STREAM_ATTACHINFO_CFG,*LPNET_DVR_STREAM_ATTACHINFO_CFG; + +typedef struct tagNET_DVR_SUBSYSTEM_NETCFG +{ + DWORD dwSize; + BYTE byDefaultRoute; //Ĭ·ɣ0ʾstruEtherNet[0]1ʾstruEtherNet[1] + BYTE byNetworkCardNum; //豸ʵʿõĿ + BYTE byRes1[2]; // + NET_DVR_ETHERNET_MULTI struEtherNet [MAX_NETWORK_CARD]; //̫ + BYTE byRes2[128]; +}NET_DVR_SUBSYSTEM_NETCFG, *LPNET_DVR_SUBSYSTEM_NETCFG; + +// +typedef struct tagNET_DVR_CLEARCTRL +{ + DWORD dwSize; + DWORD dwChan;//ͨ + BYTE byAllPreset; //еԤõ㣺0-,1- + BYTE byAllPatrols; //еѲ·0-,1- + BYTE byAllPatterms; //еĻɨ裺0-,1- + BYTE byAllPrivacyMasks; //е˽飺0-,1- + BYTE byAllPTZLimited; //еλã0-,1- + BYTE byAllScheduledTasks; //еĶʱ0-,1- + BYTE byAllParkAction; //е0-,1- + BYTE byRes[125]; +}NET_DVR_CLEARCTRL, *LPNET_DVR_CLEARCTRL; + +//̨Ϣ +typedef struct tagNET_DVR_PTZ_PRIORITIZECFG +{ + DWORD dwSize; + BYTE byPTZPrioritize; //̨ȣ0-Rs4851-磬Ĭ + BYTE byRes[3]; + DWORD dwDelay; //ʱ2---200 + BYTE byRes1[124]; +}NET_DVR_PTZ_PRIORITIZECFG, *LPNET_DVR_PTZ_PRIORITIZECFG; + +//㷽λǿ +typedef struct tagNET_DVR_INITIALPOSITIONCTRL +{ + DWORD dwSize; + DWORD dwChan;//ͨ + BYTE byWorkMode ;//0-ã1- + BYTE byRes[127]; +}NET_DVR_INITIALPOSITIONCTRL,*LPNET_DVR_INITIALPOSITIONCTRL; + +//˽ڱβ +typedef struct tagNET_DVR_PRIVACY_MASKS_COND +{ + DWORD dwSize; + DWORD dwChan; //ͨ + BYTE byRegionalID; //ID 124 + //ɾǰIDӦ˽ڱϢ 0-1-ɾ WriteOnly + BYTE byDelPrivacyMaskCfg; + BYTE byRes[62]; +}NET_DVR_PRIVACY_MASKS_COND, *LPNET_DVR_PRIVACY_MASKS_COND; + +typedef struct tagNET_DVR_PRIVACY_MASKS_CFG +{ + DWORD dwSize; + BYTE byEnable;//Ƿ 0-1- + //˽ڱòǷʾ 0-1- ReadOnly + BYTE byPrivacyMaskCfgEnable; + BYTE byColorType; //0-,1-ҡ2-졢3-̡4-5-ȡ6-ơ0xff- + BYTE byActiveZoomRatio;//αʣ1--100 + char sPrivacyMaskName[NAME_LEN/*32*/];//ڵƣֻʹ16ֽ + NET_VCA_POLYGON struRegion;//Χ + //ǰǷЧ 0-1- ԵϢ͵µĶϢ + BYTE byCurrentRegionEnable; + //ǰʹֶ 0- byActiveZoomRatio ;1- fActiveZoomRatio(֧ڵcurActiveZoomRatioType) + BYTE byCurZoomRatio ; + BYTE byRes[2]; + float fActiveZoomRatio; //α(ȷС1λ)[1.0-100.0] + BYTE byRes1[120]; +}NET_DVR_PRIVACY_MASKS_CFG, *LPNET_DVR_PRIVACY_MASKS_CFG; + +//ȫʹ +typedef struct tagNET_DVR_PRIVACY_MASKS_ENABLECFG +{ + DWORD dwSize; + BYTE byEnable;//ʹܣ0-1- + BYTE byRes[127]; +}NET_DVR_PRIVACY_MASKS_ENABLECFG,*LPNET_DVR_PRIVACY_MASKS_ENABLECFG; + +//˶Ϣ +typedef struct tagNET_DVR_SMARTTRACKCFG +{ + DWORD dwSize; + BYTE byEnable;//ʹ 0-1- + BYTE byRes[3]; + DWORD dwDuration;//ʱ䣺0--300룬Ĭ300 + BYTE byRes1[124]; +}NET_DVR_SMARTTRACKCFG,*LPNET_DVR_SMARTTRACKCFG; + +//ٱ +typedef struct tagNET_DVR_ZOOMRATIOCTRL +{ + DWORD dwSize; + DWORD dwChan;//ͨ + BYTE byRes[128]; +}NET_DVR_ZOOMRATIOCTRL,*LPNET_DVR_ZOOMRATIOCTRL; + + +//뿪Ϣ +typedef struct tagNET_DVR_DIAL_SWITCH_CFG +{ + DWORD dwSize; + DWORD dwSwitchState;//ſ״̬ + BYTE byRes[28]; +}NET_DVR_DIAL_SWITCH_CFG,*LPNET_DVR_DIAL_SWITCH_CFG; + +typedef struct tagNET_ALARM_RECORDFILE_LOSS //¼ʧӽṹ +{ + NET_DVR_TIME_EX struInspectStart; //Ѳ쿪ʼʱ + NET_DVR_TIME_EX struInspectEnd; //Ѳʱ + NET_DVR_IPADDR struIP; //¼ʧӦͨIPַ + DWORD dwChanNo; //ͨ + DWORD dwIDIndex; //ID + BYTE sName[STREAM_ID_LEN]; // + NET_DVR_TIME_EX struLossStartTime; //¼ʧʼʱ + NET_DVR_TIME_EX struLossEndTime; //¼ʧʱ + DWORD dwLostNum; //¼ʧ 0xffffffffʾȫʧ + BYTE byRes[240]; +} NET_ALARM_RECORDFILE_LOSS, *LPNET_ALARM_RECORDFILE_LOSS; + +typedef struct tagNET_ALARM_STREAM_EXCEPTION //ȡ쳣 ӽṹ +{ + NET_DVR_IPADDR struIP; //Ƶ쳣ͨIPַ + DWORD dwChanNo; //ͨ + DWORD dwIDIndex; //ID + BYTE sName[STREAM_ID_LEN]; // + BYTE byExceptionCase; //쳣ԭ0-д쳣 1-쳣 + BYTE byRes[307]; // +} NET_ALARM_STREAM_EXCEPTION, *LPNET_ALARM_STREAM_EXCEPTION; + + +typedef struct tagNET_ALARM_RESOURCE_USAGE //Դʹñ ӽṹ +{ + BYTE byLevel; //ʹس̶ȵ 0-1-һ澯 2-澯 3-澯 + BYTE byRes[491]; // +}NET_ALARM_RESOURCE_USAGE, *LPNET_ALARM_RESOURCE_USAGE; + +typedef struct tagNET_ALARM_RECORD_EXCEPTION //¼쳣 ӽṹ +{ + BYTE byReason; //쳣ԭ 0-¼ 1-¼쳣 2-޿lun + BYTE byRes1[3]; // + BYTE sVolumeName[MAX_VOLUMENAME_LEN]; + DWORD dwVolumeID; //¼IDӲ̺ţ + BYTE byRes[452]; // +}NET_ALARM_RECORD_EXCEPTION, *LPNET_ALARM_RECORD_EXCEPTION; + +typedef union tagNET_ALARM_CVR_SUBINFO_UNION //CVRӽṹ +{ + BYTE byLen[492]; //峤 + NET_ALARM_RECORDFILE_LOSS struRecordLost; //¼ʧ + NET_ALARM_STREAM_EXCEPTION struStreamException; //ȡ쳣 + NET_ALARM_RESOURCE_USAGE struResourceUsage; //Դʹ + NET_ALARM_RECORD_EXCEPTION struRecordException; //¼쳣 +}NET_ALARM_CVR_SUBINFO_UNION, *LPNET_ALARM_CVR_SUBINFO_UNION; + +#define MAX_VARIABLE_DATA_NUM 65535 //ɱݸ + +typedef struct tagNET_DVR_ALARMINFO_DEV_V40 +{ + DWORD dwAlarmType; // 0-(ͨ)ź1-˽о𻵣2- NVR˳3-״̬쳣4-ϵͳʱ쳣5-¼ʣͣ6-(ͨ)ƶⱨ + //7-(ͨ)ڵ; 8-¼ʧ; 9-Ƶʵʱⱨ; 10-Դʹʸ澯; 11- CVRԶ޸쳣 12-¼쳣 + NET_DVR_TIME struTime; + NET_ALARM_CVR_SUBINFO_UNION uSubAlarmInfo; //Ϣӽṹ Ϊ8,9,10,11,12ʱЧ + BYTE byRes[256]; + DWORD dwNumber; //ɱݸ + WORD *pNO; //Ϊ0367ʱܻͨţΪ5ʱܻд̺šɱʾֵΧΪ0~65535 +}NET_DVR_ALARMINFO_DEV_V40, *LPNET_DVR_ALARMINFO_DEV_V40; + +typedef struct tagNET_DVR_CONTROL_START_CFG //һʼϢ +{ + BYTE byUseDefine; //ʹԶ壬 0-ʹĬϣ1-ʹԶ + BYTE byRes1; + WORD wCourseIndex; //γ + BYTE byRes[128]; +}NET_DVR_CONTROL_START_CFG, *LPNET_DVR_CONTROL_START_CFG; + +typedef struct tagNET_DVR_CONTROL_DELAY_CFG//һӳ¼Ϣ +{ + BYTE byUseDefine; //ʹԶ壬 0-ʹĬϣ1-ʹԶ + BYTE byRes1; + WORD wDelayTime; //¼ӳʱ<¼ʱԴΪ׼>λs + BYTE byRes[128]; +}NET_DVR_CONTROL_DELAY_CFG, *LPNET_DVR_CONTROL_DELAY_CFG; + +typedef union tagNET_DVR_CONTROL_INFO_UNION //Ϣ +{ + BYTE byLen[132]; //峤 + NET_DVR_CONTROL_START_CFG struStartCfg; //һʼ + NET_DVR_CONTROL_DELAY_CFG struDelayCfg; //һӳ +}NET_DVR_CONTROL_INFO_UNION, *LPNET_DVR_CONTROL_INFO_UNION; + +typedef struct tagNET_DVR_RECORDING_CONTROL_CFG_ +{ + DWORD dwSize; //ṹС + WORD wCmdType; //ͣ0-һʼ1-һ2-һͣ3-һָ4-һӳ,5-һʼ 6-һֹͣ + BYTE byRes1 [2]; // + NET_DVR_CONTROL_INFO_UNION struControlInfo; //ϢʹýϿ + BYTE byRes[256]; // +}NET_DVR_RECORDING_CONTROL_CFG, *LPNET_DVR_RECORDING_CONTROL_CFG; + +typedef struct tagNET_DVR_RECORDING_HOST_CFG +{ + DWORD dwSize; //ṹС + DWORD dwOneKeyDelayTime; //һӳʱ ¼¼ʱ λ S + BYTE byDirectedMode; //ģʽ0-Զ1ֶ2-Զ + BYTE byClassroomType; //ͣ0-Ч1-ң2-ӽ + BYTE byCourseDataStorageEnabled;//ͳǷ洢Ӳ, 0-洢1-洢 + BYTE byElectronicEnlargeMode;//ǷʹõӷŴ󵼲, 0-ʹã1-ʹ + BYTE byRes[124]; // +}NET_DVR_RECORDING_HOST_CFG, *LPNET_DVR_RECORDING_HOST_CFG; + +typedef struct tagNET_DVR_STATISTIC_DATA_COND +{ + DWORD dwSize; + DWORD dwTypeTarget; //ͳƶͣTARGET_TYPE + NET_DVR_TIME struStartTime;//ʼͳʱ + NET_DVR_TIME struStopTime;//ͳʱ + BYTE byRes[280]; +}NET_DVR_STATISTIC_DATA_COND, *LPNET_DVR_STATISTIC_DATA_COND; + +typedef struct tagNET_DVR_STATISTIC_DATA_CFG +{ + DWORD dwSize; + DWORD dwTypeTarget; //ͳƶͣTARGET_TYPE + NET_DVR_TIME struStartTime;//¼ʼʱ + NET_DVR_TIME struStopTime;//¼ʱ + BYTE byRes[300]; +}NET_DVR_STATISTIC_DATA_CFG, *LPNET_DVR_STATISTIC_DATA_CFG; + +//typedef enum +//{ +// NET_SDK_ALL_TARGET = 0, //ͳж +// NET_SDK_PPT_TARGET_ALARM, //PPT +// NET_SDK_PPT_TARGET_VIEW, //PPTͼ +// NET_SDK_STU_SINGLE_ALARM, //ѧ +// NET_SDK_STU_SINGLE_VIEW, //ѧͼ +// NET_SDK_SUT_MULT_ALARM, //ѧ +// NET_SDK_STU_MULT_VIEW, //ѧͼ +// NET_SDK_STU_TEACHER_VIEW, //ʦͼ +// NET_SDK_TEA_UP_DOWN_ALARM, //ʦ½̨ +// NET_SDK_TEA_START_VIEW, //ʦڿͼ +// NET_SDK_BLA_WRITE_ALARM, //д鱨 +// NET_SDK_BLA_WRITE_VIEW, //дͼ +// NET_SDK_TEA_FULL_VIEW, //ʦȫͼ +// NET_SDK_TEA_START_ALARM, //ʦʼڿα +// NET_SDK_TEA_WALK_ALARM, //ʦ߶ +// NET_SDK_TEA_LEFT_ALARM, //ʦ뿪 +// NET_SDK_TEA_RUN_ALARM, //ʦܱ +// NET_SDK_TEA_MULT_ALARM //ʦ˱ +//}TARGET_TYPE; + +typedef struct tagNET_DVR_AUTO_TRACK_CFG +{ + DWORD dwSize; //ṹС + NET_DVR_DIRECT_CONNECT_CHAN_INFO struSDIInfo[MAX_CHANNUM_V30] ; + //SDIͨ豸ʵʵʽģͨǰʹIPͨ + BYTE byCameraType[MAX_CHANNUM_V30]; //ֵͨͣΪ 0-壬1-ʦ٣2-ѧ٣3-ʦȫ4-ѧȫ5-ý壬6-ʦλ,7-ѧλ,8-鶨λ,9-, 0xff-δ + BYTE byRes[64]; // +}NET_DVR_AUTO_TRACK_CFG, *LPNET_DVR_AUTO_TRACK_CFG; + +typedef struct tagNET_DVR_PUBLISH_FTP_CFG +{ + BYTE byProtocolType; //Э 0-FTP1-SFTP + BYTE byRes1; // + WORD wFTPPort; //˿ + BYTE byAddress[MAX_DOMAIN_NAME]; //IP,Ҫ豸 + //ʽΪĸ'.'Ϊ,ΪIPַ + BYTE szUserName[NAME_LEN/*32*/]; //û<> + BYTE szPassWord[PASSWD_LEN/*16*/]; //<> + BYTE szCustomDir[128]; //Ŀ¼,֧Ŀ¼ṹ + BYTE byRes[12]; // +} NET_DVR_PUBLISH_FTP_CFG, *LPNET_DVR_PUBLISH_FTP_CFG; + +typedef struct tagNET_DVR_PUBLISH_HTTP_CFG +{ + BYTE strUrl[256]; //URLַϢ +}NET_DVR_PUBLISH_HTTP_CFG, *LPNET_DVR_PUBLISH_HTTP_CFG; + +typedef struct tagNET_DVR_PUBLISH_FTP_CFG_DIR +{ + BYTE byProtocolType; //Э 0-FTP1-SFTP + BYTE byRes1; // + WORD wFTPPort; //˿ + BYTE byAddress[MAX_DOMAIN_NAME]; //IP,Ҫ豸 + //ʽΪĸ'.'Ϊ,ΪIPַ + BYTE szUserName[NAME_LEN/*32*/]; //û<> + BYTE szPassWord[PASSWD_LEN/*16*/]; //<> + BYTE byDirLevel; /*0 = ʹĿ¼ṹֱӱڸĿ¼,1 = ʹ1Ŀ¼,2=ʹ2Ŀ¼*/ + BYTE byTopDirMode; /* һĿ¼0x1 = ʹ豸,0x2 = ʹ豸,0x3 = ʹ豸ipַ 0xff=ʹԶ*/ + BYTE bySubDirMode; /*Ŀ¼0x1=ʹͨ,0x2=ʹͨţ0x3=ʹÿγƣ0x4-ʹڿڣ0xff-ʹԶ*/ + BYTE byRes2; + BYTE byTopCustomDir[MAX_CUSTOMDIR_LEN/*32*/];/*ԶһĿ¼*/ + BYTE bySubCustomDir[MAX_CUSTOMDIR_LEN/*32*/];/*ԶĿ¼*/ + BYTE byRes[72]; // +}NET_DVR_PUBLISH_FTP_CFG_DIR, *LPNET_DVR_PUBLISH_FTP_CFG_DIR; + + +typedef union tagNET_DVR_PUBLISH_ADD_UNION +{ + BYTE byLen[256]; //峤 + NET_DVR_PUBLISH_HTTP_CFG struHttpCfg; //httpַϢ + NET_DVR_PUBLISH_FTP_CFG struFtpCfg; //ftpַϢ + NET_DVR_PUBLISH_FTP_CFG_DIR struDirFtpCfg; //Ŀ¼ʽFTP +}NET_DVR_PUBLISH_ADD_UNION, *LPNET_DVR_PUBLISH_ADD_UNION; + +typedef struct tagNET_DVR_CHAN_RECORD_PUBLISH_INFO //ͨ¼񷢲Ϣ +{ + BYTE byPublish; //Ƿ񷢲0- 1- + BYTE byRes1[3]; + DWORD dwStreamType; //һͣλʾ + //&0x1-ʾ + //&0x2-ʾ + //&0x4-ʾ + BYTE byRes[12]; // +}NET_DVR_RECORD_PUBLISH_INFO,*LPNET_DVR_RECORD_PUBLISH_INFO; + + +typedef struct tagNET_DVR_PUBLISH_CFG +{ + DWORD dwSize; //ṹС + BYTE byPublishType; //ʽ0-http,1-ftp,2-Dir FTP + BYTE byRes1[3]; // + NET_DVR_PUBLISH_ADD_UNION struPublishAddr; //һַϢ + NET_DVR_RECORD_PUBLISH_INFO struChanPublish[MAX_CHANNUM_V30]; //ͨ¼񷢲Ϣ struChanPublis[0]ʾͨ1Ӧ¼񷢲Ϣ + NET_DVR_RECORD_PUBLISH_INFO struDirectChanPublish; //ͨ¼񷢲Ϣ + BYTE byUploadTime; //Ƿʱftpϴ 0-壬1-2- + BYTE byTimerMode; //0-壬1-αʱϴһڿε¼2-ʱ㷽ʽϴǰ24Сʱ¼ + BYTE byUploadStartHour; //ʱ䶨ʱϴʼʱ ʱ + BYTE byUoploadStartMin; //ʱ䶨ʱϴ ʼʱ + BYTE byRes[1020]; // +}NET_DVR_PUBLISH_CFG, *LPNET_DVR_PUBLISH_CFG; + +typedef struct tagNET_DVR_ONEKEY_PUBLISH_CFG +{ + DWORD dwSize; //ṹС + BYTE byUseDefine; //ʹԶ 0-ʹĬϷϢ1-ʹԶ巢Ϣ + BYTE byRes1[3]; + NET_DVR_RECORD_PUBLISH_INFO struChanPublish[MAX_CHANNUM_V30]; //ͨ¼񷢲Ϣ struChanPublis[0]ʾͨ1Ӧ¼񷢲Ϣ + NET_DVR_RECORD_PUBLISH_INFO struDirectChanPublish; //ͨ¼񷢲Ϣ + NET_DVR_TIME_EX struStartTime; //γ̿ʼʱ + NET_DVR_TIME_EX struEndTime; //γ̽ʱ + BYTE bySchedulePublish; //Ƿ񰴿α0α1α + BYTE sFileName[COURSE_NAME_LEN/*32*/]; //ļ + BYTE byRes[31]; +}NET_DVR_ONEKEY_PUBLISH_CFG,*LPNET_DVR_ONEKEY_PUBLISH_CFG; + +typedef struct tagNET_DVR_COURSE_RECORDING_INFO +{ + DWORD dwSize; + char sCourseName[COURSE_NAME_LEN/*32*/]; + char sInstructorName[INSTRUCTOR_NAME_LEN/*16*/]; + char sCourseDescription[COURSE_DESCRIPTION_LEN /*256*/]; + BYTE byIndex; //γ + BYTE byRes[15]; +}NET_DVR_COURSE_RECORDING_INFO, *LPNET_DVR_COURSE_RECORDING_INFO; + +typedef struct tagNET_DVR_EACH_LESSON_INFO_ +{ + NET_DVR_SCHEDTIME struSchedTime ; //γֹʱ + WORD wCourseIndex ; //γ + WORD wSessionIndex ; //ڴ + BYTE byRes[4] ; // +}NET_DVR_EACH_LESSON_INFO,*LPNET_DVR_EACH_LESSON_INFO ; +// ¼״̬ +typedef struct tagNET_DVR_CURRICULUM_CFG //αƻ +{ + DWORD dwSize ; //ṹС + NET_DVR_EACH_LESSON_INFO struLessonInfo[MAX_TIMESEGMENT_V40/*16*/] ; //ÿڿϢ + BYTE byRes[256] ; // +}NET_DVR_CURRICULUM_CFG, *LPNET_DVR_CURRICULUM_CFG; + +typedef struct tagNET_DVR_DATE_ +{ + WORD wYear; // + BYTE byMonth; // + BYTE byDay; // +}NET_DVR_DATE,*LPNET_DVR_DATE; + +typedef struct _NET_DVR_PPT_DETECT_CFG_ +{ + DWORD dwSize ; + BYTE byEnablePPTDetect; //ǷPPT + BYTE byPptDetLevel; // + BYTE byEnablePartScreen; //Ƿò + BYTE byRes1; + WORD wX; // + WORD wY; + WORD wWidth; + WORD wHeight; + DWORD dwChangePixelNum;//صֵ[0,1000](ps : һͼжڱ仯) + BYTE byRes[28]; +}NET_DVR_PPT_DETECT_CFG,*LPNET_DVR_PPT_DETECT_CFG; + +typedef struct _NET_DVR_SCREEN_SWITCH_ +{ + DWORD dwSize; + BYTE byRes[64]; // +}NET_DVR_SCREEN_SWITCH, *LPNET_DVR_SCREEN_SWITCH; + +typedef struct _NET_DVR_PPT_CHANNEL_CFG_ +{ + DWORD dwSize ; + BYTE byChan[MAX_PPT_CHAN]; + BYTE byRes[32]; +}NET_DVR_PPT_CHANNEL_CFG,*LPNET_DVR_PPT_CHANNEL_CFG; + +typedef struct tagNET_DVR_BACKUP_RECORD_INFO +{ + BYTE byEnable; //Ƿ + BYTE byRes[11]; + //ͣλʾ + //&0x1-ʾ + //&0x2-ʾ + //&0x4-ʾ + DWORD dwStreamType; +}NET_DVR_BACKUP_RECORD_INFO, *LPNET_DVR_BACKUP_RECORD_INFO; + +typedef struct tagNET_DVR_BACKUP_RECORD_PARAM +{ + DWORD dwSize ; + NET_DVR_BACKUP_RECORD_INFO struChanBackUp[MAX_CHANNUM_V30/*64*/]; //Ҫݵͨ,±ӦӦͨ + NET_DVR_BACKUP_RECORD_INFO struDirectedChanBackUp; //ͨϢ + BYTE byRes[256]; // ֽ +}NET_DVR_BACKUP_RECORD_PARAM, *LPNET_DVR_BACKUP_RECORD_PARAM; + +//ڻ +typedef struct tagNET_DVR_INDOOR_UNIT_DEVICEID +{ + SHORT wFloorNumber; // + WORD wRoomNumber; // + WORD wDevIndex; //ڻţ0-10 + BYTE byRes[122]; // +}NET_DVR_INDOOR_UNIT_DEVICEID,*LPNET_DVR_INDOOR_UNIT_DEVICEID; + +//ſڻ +typedef struct tagNET_DVR_OUTDOOR_UNIT_DEVICEID +{ + WORD wPeriod; //ں, Χ[0,9] + WORD wBuildingNumber; //¥ + WORD wUnitNumber; //Ԫ + SHORT wFloorNumber; // + WORD wDevIndex; //ſڻţÿһſڻΨһ0ʼ + BYTE byRes[118]; // +}NET_DVR_OUTDOOR_UNIT_DEVICEID,*LPNET_DVR_OUTDOOR_UNIT_DEVICEID; + +//Χǽ +typedef struct tagNET_DVR_OUTDOOR_FENCE_DEVICEID +{ + WORD wPeriod; //ں, Χ[0,9] + WORD wDevIndex; //ΧǽţÿһſڻΨһ0ʼ + BYTE byRes[124]; // +}NET_DVR_OUTDOOR_FENCE_DEVICEID,*LPNET_DVR_OUTDOOR_FENCE_DEVICEID; + +// +typedef struct tagNET_DVR_MANAGE_UNIT_DEVICEID +{ + WORD wPeriod; //ںţΧ[0,9] + WORD wDevIndex; //ţÿһйΨһ,0ʼ + BYTE byRes[124]; // +}NET_DVR_MANAGE_UNIT_DEVICEID,*LPNET_DVR_MANAGE_UNIT_DEVICEID; + +//ӶԽ豸 +typedef union tagNET_DVR_VIDEO_INTERCOM_UNIT_DEVICEID_UNION +{ + BYTE byLen[128] ; //С + NET_DVR_INDOOR_UNIT_DEVICEID struIndoorUnit; //ڻ + NET_DVR_OUTDOOR_UNIT_DEVICEID struOutdoorUnit; //ſڻ/Ž豸 + NET_DVR_MANAGE_UNIT_DEVICEID struManageUnit; // + NET_DVR_OUTDOOR_FENCE_DEVICEID struFenceUnit; //Χǽ + NET_DVR_OUTDOOR_UNIT_DEVICEID struVillaOutdoorUnit; //ſڻ + NET_DVR_OUTDOOR_UNIT_DEVICEID struAgainConfirmUnit; //ȷϻ +}NET_DVR_VIDEO_INTERCOM_UNIT_DEVICEID_UNION,*LPNET_DVR_VIDEO_INTERCOM_UNIT_DEVICEID_UNION; + +//豸Ųṹ +typedef struct tagNET_DVR_VIDEO_INTERCOM_DEVICEID_CFG +{ + DWORD dwSize; //ṹС + BYTE byUnitType; //豸ͣ1-ſڻ2- 4-Χǽ,5-ſڻ6-ȷϻ7-Ž豸,8-4200ͻ, 9-APP,10-նˣ11-IPC豸12-豸,13-ģڻ + BYTE byIsAutoReg; //ǷԶעᣬ0-1- + BYTE byRes1[2]; // + NET_DVR_VIDEO_INTERCOM_UNIT_DEVICEID_UNION uVideoIntercomUnit; //ȡֵοbyUnitType + BYTE byRes2[128]; // +}NET_DVR_VIDEO_INTERCOM_DEVICEID_CFG,*LPNET_DVR_VIDEO_INTERCOM_DEVICEID_CFG; + +//Ȩ +typedef enum tagPRIVILEGE_PASSWORD_TYPE_ENUM +{ + ENUM_PRIVILEGE_PASSWORD_ENGINEERING = 1, // + ENUM_PRIVILEGE_PASSWORD_SETUPALARM = 2, /// + ENUM_PRIVILEGE_PASSWORD_HOUSEHOLDER_UNLOCK = 3, // + ENUM_PRIVILEGE_PASSWORD_ANTI_HIJACKING = 4, //ٳ + ENUM_PRIVILEGE_PASSWORD_PUBLIC1 = 5, //1 + ENUM_PRIVILEGE_PASSWORD_PUBLIC2 = 6, //2 + ENUM_PRIVILEGE_PASSWORD_PUBLIC3 = 7, //3 + ENUM_PRIVILEGE_PASSWORD_SENDCARD = 8// +}PRIVILEGE_PASSWORD_TYPE_ENUM; + +//ȨϢ +typedef struct tagNET_DVR_PRIVILEGE_PASSWORD_CFG +{ + DWORD dwSize; //ṹС + BYTE byPwdType; //ͣοPRIVILEGE_PASSWORD_TYPE_ENUM + BYTE byRes1[3]; // + BYTE byOldPassword[PASSWD_LEN]; // + BYTE byNewPassword[PASSWD_LEN]; // + BYTE byRes2[128]; // +}NET_DVR_PRIVILEGE_PASSWORD_CFG,*LPNET_DVR_PRIVILEGE_PASSWORD_CFG; + + +//ڻʱ +typedef struct tagNET_DVR_INDOOR_UNIT_OPERATION_TIME_CFG +{ + DWORD dwMaxMonitoringTime; //ʱ䣬Χ[10,60] + DWORD dwMaxRingTime; //ʱ䣬Χ[15,60] + DWORD dwCallForwardingTime; //תƳʱʱ䣬Χ[0,20] + DWORD dwRingDurationTime; //峬ʱʱ䣬Χ[30,60]룬Ĭ30 + BYTE byRes[112];// +}NET_DVR_INDOOR_UNIT_OPERATION_TIME_CFG,*LPNET_DVR_INDOOR_UNIT_OPERATION_TIME_CFG; + +//ʱ +typedef struct tagNET_DVR_OUTDOOR_UNIT_OPERATION_TIME_CFG +{ + DWORD dwMaxMessageTime; //ʱ䣬Χ[30,60] + DWORD dwMaxTalkTime; //ͨʱ䣬Χ[90,120] + BYTE byRes[120]; // +}NET_DVR_OUTDOOR_UNIT_OPERATION_TIME_CFG,*LPNET_DVR_OUTDOOR_UNIT_OPERATION_TIME_CFG; + +//ʱ +typedef struct tagNET_DVR_MANAGE_UNIT_OPERATION_TIME_CFG +{ + DWORD dwMaxMonitoringTime; //ʱ䣬Χ[10,60] + DWORD dwMaxRingTime; //ʱ䣬Χ[15,60] + DWORD dwMaxTalkTime; //ͨʱ䣬λs + BYTE byRes[116]; // +}NET_DVR_MANAGE_UNIT_OPERATION_TIME_CFG,*LPNET_DVR_MANAGE_UNIT_OPERATION_TIME_CFG; + +//ӶԽʱ +typedef union tagNET_DVR_VIDEO_INTERCOM_OPERATION_TIME_UNION +{ + BYTE byLen[128]; //С + NET_DVR_INDOOR_UNIT_OPERATION_TIME_CFG struIndoorUnit; //ڻ + NET_DVR_OUTDOOR_UNIT_OPERATION_TIME_CFG struOutdoorUnit; //ſڻ/Χǽ/ſڻ/ȷϻ + NET_DVR_MANAGE_UNIT_OPERATION_TIME_CFG struManageUnit; // +}NET_DVR_VIDEO_INTERCOM_OPERATION_TIME_UNION,*LPNET_DVR_VIDEO_INTERCOM_OPERATION_TIME_UNION; + +//ӶԽʱ +typedef struct tagNET_DVR_VIDEO_INTERCOM_OPERATION_TIME_CFG +{ + DWORD dwSize; //ṹС + BYTE byUnitType; //豸ͣ1-ſڻ2-3-ڻ4-Χǽ5-ſڻ6-ȷϻ + BYTE byRes1[3]; // + NET_DVR_VIDEO_INTERCOM_OPERATION_TIME_UNION uVideoIntercomUnit; //ȡֵοbyUnitType + BYTE byRes2[128]; // +}NET_DVR_VIDEO_INTERCOM_OPERATION_TIME_CFG,*LPNET_DVR_VIDEO_INTERCOM_OPERATION_TIME_CFG; + +//ڻ豸 +typedef struct tagNET_DVR_INDOOR_UNIT_RELATEDEV +{ + NET_DVR_IPADDR struOutdoorUnit; //ſڻIP + NET_DVR_IPADDR struManageUnit; //IP + NET_DVR_IPADDR struSIPServer; //SIPIP + NET_DVR_IPADDR struAgainUnit; //ȷϻIP + BYTE byOutDoorType; //ſڻͣ01-Ԫſڻ2-ſڻ + BYTE byOutInConnectMode; //ſڻڷֻģʽ1-ſڻڷֻͬһ,2-ſڻڷֻͬ + BYTE byIndoorConnectMode; //ڷֻģʽ1-ͨ2-ͨ + BYTE byRes1; + NET_DVR_IPADDR struIndoorUnit; //IP + BYTE byManageCenterID[32]; //׼sipģʽʹãID֧֣ĸ@. + BYTE byRes[268]; // +}NET_DVR_INDOOR_UNIT_RELATEDEV,*LPNET_DVR_INDOOR_UNIT_RELATEDEV; + +//ſڻ豸 +typedef struct tagNET_DVR_OUTDOOR_UNIT_RELATEDEV +{ + NET_DVR_IPADDR struMainOutdoorUnit; //ſڻIPſڻʱЧ + NET_DVR_IPADDR struManageUnit; //IP + NET_DVR_IPADDR struSIPServer; //SIPIPſڻʱЧ + BYTE byManageCenterID[32]; //׼sipģʽʹãID֧֣ĸ@. + BYTE byRes[560]; // +}NET_DVR_OUTDOOR_UNIT_RELATEDEV,*LPNET_DVR_OUTDOOR_UNIT_RELATEDEV; + +//ȷϻ豸 +typedef struct tagNET_DVR_AGAIN_RELATEDEV +{ + NET_DVR_IPADDR struSIPServer; //SIPIP + NET_DVR_IPADDR struCenterAddr; //ƽ̨IP + WORD wCenterPort; //ƽ̨˿ + BYTE byRes1[2]; + NET_DVR_IPADDR struIndoorUnit; //IP + NET_DVR_IPADDR struAgainAddr; //ȷϻIPȷϻøֶΣ + BYTE byRes[444];// +}NET_DVR_AGAIN_RELATEDEV,*LPNET_DVR_AGAIN_RELATEDEV; + + +//豸 +typedef struct tagNET_DVR_MANAGE_UNIT_RELATEDEV +{ + NET_DVR_IPADDR struSIPServer; //SIPIP + BYTE byRes[880]; // +}NET_DVR_MANAGE_UNIT_RELATEDEV,*LPNET_DVR_MANAGE_UNIT_RELATEDEV; + + +//ӶԽ豸ṹ +typedef union tagNET_DVR_VIDEO_INTERCOM_UNIT_RELATEDEV_UNION +{ + DWORD dwRes[256] ; //С + NET_DVR_INDOOR_UNIT_RELATEDEV struIndoorUnit; //ڻ + NET_DVR_OUTDOOR_UNIT_RELATEDEV struMainOutdoorUnit; //ſڻ/Χǽ/Ž豸 + NET_DVR_MANAGE_UNIT_RELATEDEV struManageUnit; // + NET_DVR_OUTDOOR_UNIT_RELATEDEV struVillaUnit; //ſڻ + NET_DVR_AGAIN_RELATEDEV struAgainUnit; //ȷϻ +}NET_DVR_VIDEO_INTERCOM_UNIT_RELATEDEV_UNION,*LPNET_DVR_VIDEO_INTERCOM_UNIT_RELATEDEV_UNION; + +//豸ṹ +typedef struct tagNET_DVR_VIDEO_INTERCOM_RELATEDEV_CFG +{ + DWORD dwSize; //ṹС + BYTE byUnitType; //豸ͣ1-ſڻ2-3-ڻ4-Χǽ5-ſڻ6-ȷϻ7-Ž豸 + BYTE byRes1[3]; // + NET_DVR_VIDEO_INTERCOM_UNIT_RELATEDEV_UNION uVideoIntercomUnit; //ȡֵοbyUnitType + BYTE byRes2[128]; // +}NET_DVR_VIDEO_INTERCOM_RELATEDEV_CFG,*LPNET_DVR_VIDEO_INTERCOM_RELATEDEV_CFG; + +typedef struct tagNET_DVR_CONTROL_GATEWAY +{ + DWORD dwSize; //ṹС + DWORD dwGatewayIndex; //Žţ1ʼ + BYTE byCommand; //0-رգ1-򿪣2-ͨ״̬3-ָͨ״̬ + BYTE byLockType; //ͣ0-ͨǰĬ϶Ϊ0,1- + WORD wLockID; //ID1ʼԶ̿ſڻʱ0ʾſڻϽӵ1ʾӿϽӵ + BYTE byControlSrc[NAME_LEN]; //ԴϢ + BYTE byControlType; //ͣ1-ӣ2-ͨ + BYTE byRes3[3]; + BYTE byPassword[PASSWD_LEN]; //룬byLockTypeΪʱЧ + BYTE byRes2[108]; // +}NET_DVR_CONTROL_GATEWAY,*LPNET_DVR_CONTROL_GATEWAY; + + +//ͼƬϢṹ +typedef struct tagNET_DVR_NOTICE_PIC +{ + BYTE* pPicData; //ͼƬָ + DWORD dwPicDataLen; //ͼƬݳ + BYTE byRes[32]; // +}NET_DVR_NOTICE_PIC,*LPNET_DVR_NOTICE_PIC; + +// +typedef struct tagNET_DVR_NOTICE_DATA +{ + DWORD dwSize; //ṹС + NET_DVR_TIME_EX struTime; //ʱ + BYTE byNoticeNumber[MAX_NOTICE_NUMBER_LEN]; // + BYTE byNoticeTheme[MAX_NOTICE_THEME_LEN];// + BYTE byNoticeDetail[MAX_NOTICE_DETAIL_LEN]; // + BYTE byLevel; //ȼ1-Ϣ2-ҵϢ3-Ϣ;4-֪ͨϢ + BYTE byPicNum; //ͼƬ + BYTE byRes1[2]; // + NET_DVR_NOTICE_PIC struNoticePic[MAX_NOTICE_PIC_NUM]; //ͼƬ + BYTE byRes2[128]; // +}NET_DVR_NOTICE_DATA,*LPNET_DVR_NOTICE_DATA; + +//Ȩ֤ +typedef struct tagNET_DVR_OPERATION_AUTH +{ + DWORD dwSize; //ṹС + BYTE byPassword[PASSWD_LEN]; //֤ + BYTE byRes[128]; // +}NET_DVR_OPERATION_AUTH,*LPNET_DVR_OPERATION_AUTH; + +// +typedef enum tagUNLOCK_TYPE_ENUM +{ + ENUM_UNLOCK_PASSWORD = 1, //뿪 + ENUM_UNLOCK_HIJACKING = 2, //ٳֿ + ENUM_UNLOCK_CARD = 3, //ˢ + ENUM_UNLOCK_HOUSEHOLDER = 4, // + ENUM_UNLOCK_CENTER_PLATFORM = 5, //ƽ̨ + ENUM_UNLOCK_BLUETOOTH = 6, // + ENUM_UNLOCK_QR_CODE = 7, //ά뿪 + ENUM_UNLOCK_FACE = 8, // + ENUM_UNLOCK_FINGERPRINT = 9, //ָƿ + ENUM_UNLOCK_DYNAMIC_CODE = 10 //̬Ȩ뿪 +}UNLOCK_TYPE_ENUM; + + +//ͣͲƷȷϣ˶ûʹãʹõDETECTOR_TYPE +// typedef enum tagALARM_ZONE_TYPE_ENUM +// { +// ENUM_ALARM_ZONE_SMOKE = 1, //̸ +// ENUM_ALARM_ZONE_GAS = 2, //ú +// ENUM_ALARM_ZONE_INFRARED = 3, // +// ENUM_ALARM_ZONE_MAGNETIC = 4, //Ŵ +// ENUM_ALARM_ZONE_MANUAL = 5 //ֶ +// }ALARM_ZONE_TYPE_ENUM; + +//¼ +typedef struct tagNET_DVR_UNLOCK_RECORD_INFO +{ + BYTE byUnlockType; //ʽοUNLOCK_TYPE_ENUM + BYTE byRes1[3]; // + BYTE byControlSrc[NAME_LEN]; //ԴϢˢʱΪţʱΪөʯAPP˺ţά뿪ʱΪÿ͵ֻţΪ豸 + DWORD dwPicDataLen; //ͼƬݳ + BYTE* pImage; //ͼƬָ + DWORD dwCardUserID; //ֿID + SHORT nFloorNumber;//ˢʱЧΪ¥ + WORD wRoomNumber; //ԴϢˢʱЧΪţ + WORD wLockID; //ſڻ0-ʾϽӵ1-ʾӿϽӵ + BYTE byRes2[2]; + BYTE byLockName[LOCK_NAME_LEN]; //ˢʱЧƣӦŲ + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID + BYTE byMask; //Ƿ֣0-1-δ֪2-δ֣3- + BYTE byRes[135]; // +}NET_DVR_UNLOCK_RECORD_INFO,*LPNET_DVR_UNLOCK_RECORD_INFO; + +//ϢĶִ +typedef struct tagNET_DVR_NOTICEDATA_RECEIPT_INFO +{ + BYTE byNoticeNumber[MAX_NOTICE_NUMBER_LEN]; // + BYTE byRes[224]; // +}NET_DVR_NOTICEDATA_RECEIPT_INFO,*LPNET_DVR_NOTICEDATA_RECEIPT_INFO; + +//֤¼豸δʵ֣ +typedef struct tagNET_DVR_AUTH_INFO +{ + BYTE byAuthResult; //֤0-Ч1-֤ɹ2-֤ʧ + BYTE byAuthType; //֤ʽ0-Ч1-ָƣ2- + BYTE byRes1[2]; // + BYTE byCardNo[ACS_CARD_NO_LEN/*32*/]; // + DWORD dwPicDataLen; //ͼƬݳȣ֤ʽbyAuthTypeΪʱЧ + BYTE* pImage; //ͼƬָ루֤ʽbyAuthTypeΪʱЧ + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN/*32*/]; //ţԱID + BYTE byRes[180]; // +}NET_DVR_AUTH_INFO, *LPNET_DVR_AUTH_INFO; + +//Ϣϴ +typedef struct tagNET_DVR_UPLOAD_PLATE_INFO +{ + char sLicense[MAX_LICENSE_LEN]; //ƺ + BYTE byColor; //ɫοṹVCA_PLATE_COLOR + BYTE byRes[239]; // +}NET_DVR_UPLOAD_PLATE_INFO, *LPNET_DVR_UPLOAD_PLATE_INFO; + +typedef struct tagNET_DVR_SEND_CARD_INFO +{ + BYTE byCardNo[ACS_CARD_NO_LEN/*32*/]; // + BYTE byRes[224]; // +}NET_DVR_SEND_CARD_INFO, *LPNET_DVR_SEND_CARD_INFO; + +//Ŵ״̬ϱ +typedef struct tagNET_DVR_MAGNETIC_DOOR_STATUS +{ + BYTE byMagneticDoorStatus; //Ŵ״̬ 1- 2-ر + BYTE byRes[255]; // +} NET_DVR_MAGNETIC_DOOR_STATUS, *LPNET_DVR_MAGNETIC_DOOR_STATUS; + +//ӶԽ¼¼Ϣ +typedef union tagNET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON +{ + BYTE byLen[256]; //С + NET_DVR_UNLOCK_RECORD_INFO struUnlockRecord; //¼ + NET_DVR_NOTICEDATA_RECEIPT_INFO struNoticedataReceipt; //ϢĶִ + NET_DVR_AUTH_INFO struAuthInfo; //֤¼豸δʵ֣ + NET_DVR_UPLOAD_PLATE_INFO struUploadPlateInfo; //Ϣϴ + NET_DVR_SEND_CARD_INFO struSendCardInfo; //ſڻ,Ӧ豸ڷ״̬ˢʱϴ¼ + NET_DVR_MAGNETIC_DOOR_STATUS struMagneticDoorStatus; //Ŵ״̬ +}NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON,*LPNET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON; + +//ӶԽ¼¼ +typedef struct tagNET_DVR_VIDEO_INTERCOM_EVENT +{ + DWORD dwSize; //ṹС + NET_DVR_TIME_EX struTime; //ʱ + BYTE byDevNumber[MAX_DEV_NUMBER_LEN]; //豸 + BYTE byEventType; //¼Ϣͣ1-¼2-ϢĶִ3-֤¼4-Ϣϴ5Ƿˢ¼6-ſڻ¼(ҪſڻܣˢʱŻϴ¼)7-ּ¼8-Ŵ״̬¼ + BYTE byPicTransType; //ͼƬݴ䷽ʽ: 0-ƣ1-url + BYTE byRes1[2]; // + NET_DVR_VIDEO_INTERCOM_EVENT_INFO_UINON uEventInfo; //¼ϢݲοbyEventTypeȡֵ + DWORD dwIOTChannelNo; //IOTͨ + BYTE byRes2[252]; // +}NET_DVR_VIDEO_INTERCOM_EVENT,*LPNET_DVR_VIDEO_INTERCOM_EVENT; + + +//Ϣ +typedef struct tagNET_DVR_ZONE_ALARM_INFO +{ + BYTE byZoneName[NAME_LEN]; // + DWORD dwZonendex; // + BYTE byZoneType; //ͣοDETECTOR_TYPE + BYTE byRes[219]; // +}NET_DVR_ZONE_ALARM_INFO,*LPNET_DVR_ZONE_ALARM_INFO; + +//Ϣ +typedef struct tagNET_DVR_LOCK_ALARM_INFO +{ + DWORD dwLockID; //ID0ʼ + BYTE byRes[252]; //ֽ +}NET_DVR_LOCK_ALARM_INFO, *LPNET_DVR_LOCK_ALARM_INFO; + +typedef union tagNET_DVR_VIDEO_INTERCOM_ALARM_INFO_UNION +{ + BYTE byLen[256]; //С + NET_DVR_ZONE_ALARM_INFO struZoneAlarm; // + NET_DVR_LOCK_ALARM_INFO struLockAlarm; //Ϣ +}NET_DVR_VIDEO_INTERCOM_ALARM_INFO_UNION,*LPNET_DVR_VIDEO_INTERCOM_ALARM_INFO_UNION; + + +//ӶԽϢ +typedef struct tagNET_DVR_VIDEO_INTERCOM_ALARM +{ + DWORD dwSize; //ṹС + NET_DVR_TIME_EX struTime; //ʱ + BYTE byDevNumber[MAX_DEV_NUMBER_LEN]; //豸 + BYTE byAlarmType; //ͣ1-2-𱨾3-ٳֱ4-뿪ʧܱ,5-û6-û 7-SOS 8-ͨԽ9-ٳָƱ 10-ٳ뱨11-ű12-13-㱨 ,14-ֹ,15- + //16-Žȫģ𱨾17-豸ʼԽ18-豸ֹͣԽ, 19-ȡSOS ,20-δֱ 21-뱨 22-ָ 23-Ŵű򿪣24-䱨25-ȡ䱨26-ҩѣ27-±28-ȡҩ + BYTE byRes1[3]; // + NET_DVR_VIDEO_INTERCOM_ALARM_INFO_UNION uAlarmInfo; //ϢݲοֶbyAlarmTypeȡֵ + WORD wLockID; //0-ʾſڻϽӵ1-ʾӿϽӵΪ56ʱЧ + BYTE byRes3[2]; // + DWORD dwIOTChannelNo; //IOTͨ + BYTE byRes2[248]; // +}NET_DVR_VIDEO_INTERCOM_ALARM,*LPNET_DVR_VIDEO_INTERCOM_ALARM; + +typedef struct tagNET_DVR_PEOPLE_REGION +{ + BYTE byID;//ID + BYTE byNumber;//еԱ 0-ʾûԱ + BYTE byDressType;//װ 0-δ֪1-ۡ2-¡3-Ʒ + BYTE byRes; + NET_VCA_RECT struRegion; + DWORD dwPicLen;//ͼƬ (0ʾûг) + char* pPicBuffer;//ͼƬ + BYTE byRes1[24];//(Ԥչ) +}NET_DVR_PEOPLE_REGION,*LPNET_DVR_PEOPLE_REGION; + +typedef struct tagNET_DVR_PEOPLE_DETECTION_RESULT +{ + DWORD dwSize; + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + NET_VCA_DEV_INFO struDevInfo;//ǰ豸Ϣ + NET_DVR_PEOPLE_REGION struPeopleRegion[MAX_PEOPLE_DETECTION_NUM/*8*/]; + /*Աⱨ + 0- δ֪ + 1- ѶڴܶŹ + 2- ѶԱ˯ⱨ + 3- ѶԱⱨ + 4- Ա⣩ + */ + BYTE byPeopleAlarmType; + BYTE byRes[255]; +}NET_DVR_PEOPLE_DETECTION_RESULT,*LPNET_DVR_PEOPLE_DETECTION_RESULT; + +typedef struct tagNET_DVR_SUPPLEMENTLIGHT +{ + BYTE byEnable;//ʹ 0-أ1- + BYTE byMode;//ģʽ 0-Զ1-ʱ + BYTE byHighBeamBrightness;//Զ[0,10] + BYTE byLowBeamBrightness;//[0,10] + NET_DVR_SCHEDULE_DAYTIME struSchedTime;//ʱʱ + WORD wFilteringTime;//ʱ(s)[0,120] + BYTE byBrightness;//[0,10]ָ֧òʱ byHighBeamBrightnessbyLowBeamBrightnessЧ + BYTE bySensitivity;//[0,7],Ĭ4byModeΪԶʱЧ + BYTE byBrightnessRegulatMode;// ȵģʽ0-ֶ1-ԶΪԶʱbyBrightnessЧ + BYTE byMaxBrightness;//ȣȵģʽΪԶʱЧ[0,100]Ĭ50 + BYTE byRes[58]; +}NET_DVR_SUPPLEMENTLIGHT,*LPNET_DVR_SUPPLEMENTLIGHT; + +typedef struct tagNET_DVR_EXTERNALDEVICE +{ + DWORD dwSize;//ṹС + NET_DVR_SUPPLEMENTLIGHT struSupplementLight;//ƽṹϢ + BYTE byRes[512]; +}NET_DVR_EXTERNALDEVICE,*LPNET_DVR_EXTERNALDEVICE; +typedef struct tagNET_DVR_TEMPERATURE_TRIGGER_COND +{ + DWORD dwSize;//ṹС + DWORD dwChan;//ͨ + DWORD dwPreset;//Ԥõ + BYTE byRes[256]; +}NET_DVR_TEMPERATURE_TRIGGER_COND, *LPNET_DVR_TEMPERATURE_TRIGGER_COND; +//(֧֣ʵ֣豸ڲ) +typedef struct tagNET_DVR_BUILTIN_SUPPLEMENTLIGHT +{ + DWORD dwSize;//ṹС + BYTE byMode;//ģʽ 0-ʱ1-2-رգ3-Զǹ㷨ʶ + BYTE byBrightnessLimit;//[0,100] + BYTE bySupplementLightMode;//,0~׹ģʽ,1~ģʽ + BYTE byMixedLightRegulatMode;//ϲȵģʽ,0~Զ,1~ֶ,bySupplementLightMode = 1ʱЧ + BYTE byLrLightBrightness;//ȿ[0,100],byMixedLightRegulatMode = 1ʱЧ + BYTE byHighLrLightBrightness;// Զ[0,100],byMixedLightRegulatMode = 1ʱЧ + BYTE byHighBrightnessLimit;// Զ׹[0,100],byMixedLightRegulatMode = 1ʱЧ + BYTE byLowLrLightBrightness;// [0,100],byMixedLightRegulatMode = 1ʱЧ + NET_DVR_SCHEDULE_DAYTIME struSchedTime;//ʱʱ + BYTE byLowBrightnessLimit;//׹[0,100],byMixedLightRegulatMode = 1ʱЧ + BYTE byWhiteLightBrightness;// ׹ + BYTE byIrLightbrightnessLimit;//, + BYTE byWhiteLightbrightnessLimit;//,׹ + BYTE byRes1[252]; +}NET_DVR_BUILTIN_SUPPLEMENTLIGHT,*LPNET_DVR_BUILTIN_SUPPLEMENTLIGHT; +typedef struct tagNET_DVR_OIS_CFG +{ + DWORD dwSize;//ṹС + BYTE byMode; //Ƿѧ0-رգ1-ͨ2-ר + BYTE byOISLevel; //ѧȼ0-ͣ1-У2- + BYTE byOISSensitivity;//ѧȣ0-ͣ1-У2- + BYTE byRes[125]; +}NET_DVR_OIS_CFG, *LPNET_DVR_OIS_CFG; + +typedef struct tagNET_DVR_MACFILTER_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //ǷMACַˣ0-1- + BYTE byPermissionType; //MACַͣ0-ֹ1- + BYTE byRes1[2]; + BYTE szMacAddress[MAC_ADDRESS_NUM][MACADDR_LEN]; + BYTE byRes[128]; +}NET_DVR_MACFILTER_CFG, *LPNET_DVR_MACFILTER_CFG; + +typedef struct tagNET_DVR_EAGLEFOCUSING_SENCE +{ + BYTE byRuleType;//ͣ0- + BYTE bySceneID;//ID0- 1DZʾ1,2ʾ2 + WORD wRate;//ʣ50-100 + NET_VCA_POLYGON struRegion;// Χ + BYTE bySpotNum;//ڱ궨ȡٸб궨3-5Ĭ3 + BYTE byRes[127]; +}NET_DVR_EAGLEFOCUSING_SENCE, *LPNET_DVR_EAGLEFOCUSING_SENCE; + +typedef struct tagNET_DVR_EAGLEFOCUSING_CALCFG +{ + DWORD dwSize; + BYTE byEnabled;//Ƿ궨0-ֹ궨1-ʼ궨ýڵʱЧȡʱЧ + BYTE byRes1[3]; + NET_DVR_EAGLEFOCUSING_SENCE struEagleFoucsing[MAX_SENCE_NUM/*16*/]; + BYTE byRes[512]; +}NET_DVR_EAGLEFOCUSING_CALCFG, *LPNET_DVR_EAGLEFOCUSING_CALCFG; + +typedef struct tagNET_DVR_EAGLEFOCUSING_CTRL +{ + DWORD dwSize; + BYTE byEnable;//ʹܣ0-رӥӾ۽1-ӥӾ۽ + BYTE byHeightCompensationEnable;//߶Ȳʹ + BYTE byHeightCompensationValue;//߶Ȳֵ, Χ1-5,Ĭ3,һֵ0.5 + BYTE byRes[509]; +}NET_DVR_EAGLEFOCUSING_CTRL, *LPNET_DVR_EAGLEFOCUSING_CTRL; + +typedef struct tagNET_DVR_SMARTCALIBRATION_REGION +{ + BYTE byRuleID;// + BYTE byMode;//0-default Mode,1-pix Mode,2-actual Mode + BYTE byStrategy;//˲ 0-area(),1-widthHeight() () + BYTE byPriority;//ȼ 0-Ĭֵ, 1-ͣ2-У3- + NET_VCA_POLYGON struMaxTargetSize;//Ŀߴ + NET_VCA_POLYGON struMinTargetSize;//СĿߴ +}NET_DVR_SMARTCALIBRATION_REGION, *LPNET_DVR_SMARTCALIBRATION_REGION; + +#define RULE_REGION_MAX 128 +typedef struct tagNET_DVR_SMARTCALIBRATION_CFG +{ + DWORD dwSize;//ṹС + /* SmartType: + 0-linedetection, + 1-fielddetection, + 2-regionEntrance, + 3-regionExiting, + 4-loitering, + 5-rapidMove, + 6-parking, + 7-unattendedBaggage, + 8-attendedBaggage + */ + BYTE bySmartType;// + BYTE byRes[3]; + NET_DVR_SMARTCALIBRATION_REGION strRegion[RULE_REGION_MAX/*128*/]; + BYTE byRes1[128]; +}NET_DVR_SMARTCALIBRATION_CFG, *LPNET_DVR_SMARTCALIBRATION_CFG; + +typedef struct tagNET_DVR_SMARTCALIBRATION_COND +{ + DWORD dwSize;//ṹС + /* SmartType: + 0-linedetection, + 1-fielddetection, + 2-regionEntrance, + 3-regionExiting, + 4-loitering, + 5-rapidMove, + 6-parking, + 7-unattendedBaggage, + 8-attendedBaggage + */ + BYTE bySmartType;// + BYTE byRes[3]; + DWORD dwChannel;//ͨ + BYTE byRes1[128]; +}NET_DVR_SMARTCALIBRATION_COND, *LPNET_DVR_SMARTCALIBRATION_COND; + +typedef struct tagNET_DVR_SMARTCALIBRATION_REGION_CFG +{ + DWORD dwSize;//ṹС + NET_DVR_SMARTCALIBRATION_REGION strRegion[RULE_REGION_MAX/*128*/]; + BYTE byRes1[128]; +}NET_DVR_SMARTCALIBRATION_REGION_CFG, *LPNET_DVR_SMARTCALIBRATION_REGION_CFG; + + +typedef struct tagNET_DVR_OSD_BATTERY_POWER_CFG +{ + DWORD dwSize; + NET_VCA_POINT struOSDBatteryPower;//ͳʾOSDʾϽ + BYTE byOSDBatteryPower;//صOSDʾʹ, 0-1- + BYTE byRes[63]; +}NET_DVR_OSD_BATTERY_POWER_CFG, *LPNET_DVR_OSD_BATTERY_POWER_CFG; + +#define CARD_PARAM_CARD_VALID 0x00000001 //ǷЧ +#define CARD_PARAM_VALID 0x00000002 //Чڲ +#define CARD_PARAM_CARD_TYPE 0x00000004 //Ͳ +#define CARD_PARAM_DOOR_RIGHT 0x00000008 //Ȩ޲ +#define CARD_PARAM_LEADER_CARD 0x00000010 //׿ +#define CARD_PARAM_SWIPE_NUM 0x00000020 //ˢ +#define CARD_PARAM_GROUP 0x00000040 //Ⱥ +#define CARD_PARAM_PASSWORD 0x00000080 // +#define CARD_PARAM_RIGHT_PLAN 0x00000100 //Ȩ޼ƻ +#define CARD_PARAM_SWIPED_NUM 0x00000200 //ˢ + +typedef struct tagNET_DVR_VALID_PERIOD_CFG +{ + BYTE byEnable; //ʹЧڣ0-ʹܣ1ʹ + BYTE byBeginTimeFlag; //Ƿʼʱı־0-ƣ1- + BYTE byEnableTimeFlag; //Ƿֹʱı־0-ƣ1- + BYTE byTimeDurationNo; //Ч,0ʼʱͨSDKøƿʱֻҪЧɣԼ + NET_DVR_TIME_EX struBeginTime; //Чʼʱ + NET_DVR_TIME_EX struEndTime; //Чڽʱ + BYTE byTimeType; //ʱͣ0-豸ʱ䣨Ĭϣ1-UTCʱ䣨struBeginTimestruEndTimeֶЧ + BYTE byRes2[31]; +}NET_DVR_VALID_PERIOD_CFG, *LPNET_DVR_VALID_PERIOD_CFG; + +typedef struct tagNET_DVR_CARD_CFG +{ + DWORD dwSize; + DWORD dwModifyParamType; + // Ҫ޸ĵĿÿʱЧλʾÿλһֲ1ΪҪ޸ģ0Ϊ޸ + // #define CARD_PARAM_CARD_VALID 0x00000001 //ǷЧ + // #define CARD_PARAM_VALID 0x00000002 //Чڲ + // #define CARD_PARAM_CARD_TYPE 0x00000004 //Ͳ + // #define CARD_PARAM_DOOR_RIGHT 0x00000008 //Ȩ޲ + // #define CARD_PARAM_LEADER_CARD 0x00000010 //׿ + // #define CARD_PARAM_SWIPE_NUM 0x00000020 //ˢ + // #define CARD_PARAM_GROUP 0x00000040 //Ⱥ + // #define CARD_PARAM_PASSWORD 0x00000080 // + // #define CARD_PARAM_RIGHT_PLAN 0x00000100 //Ȩ޼ƻ + // #define CARD_PARAM_SWIPED_NUM 0x00000200 //ˢ + BYTE byCardNo[ACS_CARD_NO_LEN]; // + BYTE byCardValid; //ǷЧ0-Ч1-ЧɾʱΪ0ɾȡʱֶʼΪ1 + BYTE byCardType; //ͣ1-ͨ2-Ⱥ忨3-ֹ4-Ѳ5-вȿ6-7-8-Ĭͨ + BYTE byLeaderCard; //ǷΪ׿1-ǣ0- + BYTE byRes1; + DWORD dwDoorRight; //Ȩޣλʾ1ΪȨޣ0ΪȨޣӵλλʾ1-NǷȨ + NET_DVR_VALID_PERIOD_CFG struValid; //Чڲ + DWORD dwBelongGroup; //Ⱥ飬λʾ1-ڣ0-ڣӵλλʾǷȺ1-N + BYTE byCardPassword[CARD_PASSWORD_LEN]; // + BYTE byCardRightPlan[MAX_DOOR_NUM][MAX_CARD_RIGHT_PLAN_NUM]; //Ȩ޼ƻȡֵΪƻģţͬŲͬƻģȨ޻ķʽ + DWORD dwMaxSwipeTime; //ˢ0Ϊ޴ + DWORD dwSwipeTime; //ˢ + WORD wRoomNumber; // + SHORT wFloorNumber; // + BYTE byRes2[20]; +}NET_DVR_CARD_CFG, *LPNET_DVR_CARD_CFG; + +typedef struct _NET_DVR_CARD_CFG_COND +{ + DWORD dwSize; + DWORD dwCardNum; //ûȡȡʱΪ0xffffffffʾȡпϢ + BYTE byCheckCardNo; //豸ǷпУ飬0-У飬1-У + BYTE byRes1[3]; + WORD wLocalControllerID; //͵ؿţʾ͵ؿ·߿0Ž + BYTE byRes2[2]; + DWORD dwLockID; //ID + BYTE byRes3[20]; +}NET_DVR_CARD_CFG_COND, *LPNET_DVR_CARD_CFG_COND; + +typedef struct _NET_DVR_CARD_CFG_SEND_DATA +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; // + DWORD dwCardUserId; //ֿID + BYTE byRes[12]; +}NET_DVR_CARD_CFG_SEND_DATA, *LPNET_DVR_CARD_CFG_SEND_DATA; + +typedef struct tagNET_DVR_CARD_USER_INFO_CFG /*Ӧýṹ*/ +{ + DWORD dwSize; + BYTE sUsername[NAME_LEN]; /* û*/ + BYTE byAssociateNetUser; //û + BYTE byRes2[255]; //byRes2[0]--籨û +}NET_DVR_CARD_USER_INFO_CFG, *LPNET_DVR_CARD_USER_INFO_CFG; + +#define ACS_PARAM_DOOR_STATUS_WEEK_PLAN 0x00000001 //״̬ܼƻ +#define ACS_PARAM_VERIFY_WEEK_PALN 0x00000002 //ܼƻ +#define ACS_PARAM_CARD_RIGHT_WEEK_PLAN 0x00000004 //Ȩܼƻ +#define ACS_PARAM_DOOR_STATUS_HOLIDAY_PLAN 0x00000008 //״̬ռƻ +#define ACS_PARAM_VERIFY_HOLIDAY_PALN 0x00000010 //ռƻ +#define ACS_PARAM_CARD_RIGHT_HOLIDAY_PLAN 0x00000020 //Ȩ޼ռƻ +#define ACS_PARAM_DOOR_STATUS_HOLIDAY_GROUP 0x00000040 //״̬ +#define ACS_PARAM_VERIFY_HOLIDAY_GROUP 0x00000080 //֤ʽ +#define ACS_PARAM_CARD_RIGHT_HOLIDAY_GROUP 0x00000100 //Ȩ޼ +#define ACS_PARAM_DOOR_STATUS_PLAN_TEMPLATE 0x00000200 //״̬ƻģ +#define ACS_PARAM_VERIFY_PALN_TEMPLATE 0x00000400 //֤ʽƻģ +#define ACS_PARAM_CARD_RIGHT_PALN_TEMPLATE 0x00000800 //Ȩ޼ƻģ +#define ACS_PARAM_CARD 0x00001000 // +#define ACS_PARAM_GROUP 0x00002000 //Ⱥ +#define ACS_PARAM_ANTI_SNEAK_CFG 0x00004000 //DZز +#define ACS_PAPAM_EVENT_CARD_LINKAGE 0x00008000 //¼ +#define ACS_PAPAM_CARD_PASSWD_CFG 0x00010000 //뿪ʹܲ +#define ACS_PARAM_PERSON_STATISTICS_CFG 0x00020000 //ͳƲ +#define ACS_PARAM_BLOCKLIST_PICTURE 0x00040000 //ֹͼƬ +#define ACS_PARAM_ID_BLOCKLIST 0x00080000 //ֹ֤ +#define ACS_PARAM_EXAM_INFO 0x00100000 //Ϣ +#define ACS_PARAM_EXAMINEE_INFO 0x00200000 //Ϣ +#define ACS_PARAM_FAILED_FACE_INFO 0x00400000 //豸ģʧܼ¼ + +typedef struct tagNET_DVR_ACS_PARAM_TYPE +{ + DWORD dwSize; + DWORD dwParamType; //ͣλʾ + //#define ACS_PARAM_DOOR_STATUS_WEEK_PLAN 0x00000001 //״̬ܼƻ + //#define ACS_PARAM_VERIFY_WEEK_PALN 0x00000002 //ܼƻ + //#define ACS_PARAM_CARD_RIGHT_WEEK_PLAN 0x00000004 //Ȩܼƻ + //#define ACS_PARAM_DOOR_STATUS_HOLIDAY_PLAN 0x00000008 //״̬ռƻ + //#define ACS_PARAM_VERIFY_HOLIDAY_PALN 0x00000010 //ռƻ + //#define ACS_PARAM_CARD_RIGHT_HOLIDAY_PLAN 0x00000020 //Ȩ޼ռƻ + //#define ACS_PARAM_DOOR_STATUS_HOLIDAY_GROUP 0x00000040 //״̬ + //#define ACS_PARAM_VERIFY_HOLIDAY_GROUP 0x00000080 //֤ʽ + //#define ACS_PARAM_CARD_RIGHT_HOLIDAY_GROUP 0x00000100 //Ȩ޼ + //#define ACS_PARAM_DOOR_STATUS_PLAN_TEMPLATE 0x00000200 //״̬ƻģ + //#define ACS_PARAM_VERIFY_PALN_TEMPLATE 0x00000400 //֤ʽƻģ + //#define ACS_PARAM_CARD_RIGHT_PALN_TEMPLATE 0x00000800 //Ȩ޼ƻģ + //#define ACS_PARAM_CARD 0x00001000 // + //#define ACS_PARAM_GROUP 0x00002000 //Ⱥ + //#define ACS_PARAM_ANTI_SNEAK_CFG 0x00004000 //DZز + //#define ACS_PAPAM_EVENT_CARD_LINKAGE 0x00008000 //¼ + //#define ACS_PAPAM_CARD_PASSWD_CFG 0x00010000 //뿪ʹܲ + //#define ACS_PARAM_PERSON_STATISTICS_CFG 0x00020000 //ͳƲ + //#define ACS_PARAM_BLOCKLIST_PICTURE 0x00040000 //ֹͼƬ + //#define ACS_PARAM_ID_BLOCKLIST 0x00080000 //ֹ֤ + //#define ACS_PARAM_EXAM_INFO 0x00100000 //Ϣ + //#define ACS_PARAM_EXAMINEE_INFO 0x00200000 //Ϣ + //#define ACS_PARAM_FAILED_FACE_INFO 0x00400000 //豸ģʧܼ¼ + WORD wLocalControllerID; //͵ؿ[1,64],0Ž + BYTE byRes[30]; +}NET_DVR_ACS_PARAM_TYPE, *LPNET_DVR_ACS_PARAM_TYPE; + +typedef struct tagNET_DVR_VIDEO_INTERCOM_IOIN_CFG +{ + DWORD dwSize; // ṹС + BYTE byIOUseType; //;0-ã1-Űť2-״̬0xff-Զ + BYTE byRes[63]; // ֽ +}NET_DVR_VIDEO_INTERCOM_IOIN_CFG, *LPNET_DVR_VIDEO_INTERCOM_IOIN_CFG; + +typedef struct tagNET_DVR_VIDEO_INTERCOM_IOOUT_CFG +{ + DWORD dwSize; // ṹС + BYTE byIOUseType; //;0-ã1-0xff-Զ + BYTE byRes[63]; // ֽ +}NET_DVR_VIDEO_INTERCOM_IOOUT_CFG, *LPNET_DVR_VIDEO_INTERCOM_IOOUT_CFG; + +typedef struct tagNET_DVR_ELEVATORCONTROL_CFG +{ + DWORD dwSize; // ṹС + BYTE byEnable; //Ƿݿأ0-1- + BYTE byRes1; // + BYTE byInterfaceType; //ӿͣ0-ޣ1-RS485,2- + BYTE byRS485Protocol; //RS485Эͣ0-δ֪1-˽У0xff-Զ壬byInterfaceTypeȡֵΪ1ʱЧ + BYTE byNetworkType; //Эͣ0-δ֪1-˽У0xff-Զ壬byInterfaceTypeȡֵΪ2ʱЧ + BYTE byRes[63]; // ֽ +}NET_DVR_ELEVATORCONTROL_CFG, *LPNET_DVR_ELEVATORCONTROL_CFG; + +typedef struct tagNET_DVR_ELEVATORCONTROL_CFG_V40 +{ + DWORD dwSize; // ṹС + BYTE byEnable; //Ƿݿأ0-1- + BYTE byRes1; // + BYTE byInterfaceType; //ӿͣ0-ޣ1-RS485,2- + BYTE byRS485Protocol; //RS485Эͣ0-δ֪1-˽У0xff-Զ壬byInterfaceTypeȡֵΪ1ʱЧ + BYTE byNetworkType; //Эͣ0-δ֪1-˽У0xff-Զ壬byInterfaceTypeȡֵΪ2ʱЧ + BYTE byRes2; // + WORD wServerPort; //ݿط˿ںţЭΪ1-˽ ʱЧ + NET_DVR_IPADDR struServerIP; //ݿطIPЭΪ1-˽ ʱЧ + BYTE byRes[256]; // ֽ +}NET_DVR_ELEVATORCONTROL_CFG_V40, *LPNET_DVR_ELEVATORCONTROL_CFG_V40; + +typedef struct tagNET_DVR_ELEVATORCONTROL_CFG_V50 +{ + DWORD dwSize; //ṹС + BYTE byEnable; //Ƿݿأ0-1- + BYTE byNegativeFloor; //¥ + BYTE byInterfaceType; //ӿͣ0-ޣ1-RS485,2- + BYTE byRS485Protocol; //RS485Эͣ0-δ֪1-˽У0xff-Զ壬byInterfaceTypeȡֵΪ1ʱЧ + BYTE byNetworkType; //Эͣ0-δ֪1-˽У0xff-Զ壬byInterfaceTypeȡֵΪ2ʱЧ + BYTE byElevatorControlType; //ݿͣ0-Ч1-DS-K22012-DS-K22100xff-Զ + WORD wServerPort; //ݿط˿ںţЭΪ1-˽ ʱЧ + NET_DVR_IPADDR struServerIP; //ݿطIPЭΪ1-˽ ʱЧ + BYTE sUserName[NET_DVR_LOGIN_USERNAME_MAX_LEN]; //ûЭΪ1-˽ ʱЧֻãܻȡ + BYTE sPassword[NET_DVR_LOGIN_PASSWD_MAX_LEN]; //룬ЭΪ1-˽ ʱЧֻãܻȡ + BYTE byRes[256]; //ֽ +}NET_DVR_ELEVATORCONTROL_CFG_V50, *LPNET_DVR_ELEVATORCONTROL_CFG_V50; + +typedef struct tagNET_DVR_ROOM_CUSTOM_COND +{ + DWORD dwSize; + DWORD dwRoomNumber; //ĿʱЧ + BYTE byRes[128]; +}NET_DVR_ROOM_CUSTOM_COND, *LPNET_DVR_ROOM_CUSTOM_COND; + +typedef struct tagNET_DVR_ROOM_CUSTOM_CFG +{ + DWORD dwSize; + DWORD dwFormerRoomNo; //ԭ + DWORD dwCustomRoomNo; //Զ + BYTE byRes[128]; +}NET_DVR_ROOM_CUSTOM_CFG, *LPNET_DVR_ROOM_CUSTOM_CFG; + +typedef struct tagNET_DVR_ROOM_CUSTOM_STATUS +{ + DWORD dwSize; + DWORD dwFormerRoomNo; //ԭ + BYTE byStatus; //·״̬0-Ч1-ʧܣ2-У3-ɹ + BYTE byRes[127]; +}NET_DVR_ROOM_CUSTOM_STATUS, *LPNET_DVR_ROOM_CUSTOM_STATUS; + +typedef struct tagNET_DVR_VIDEOINTERCOM_STREAM +{ + DWORD dwSize; + BYTE byVisDevID[MAX_NAMELEN]; // ӶԽ豸ţţ豸ΪIPCʱȫΪ0 + BYTE byDeviceName[NAME_LEN]; //豸 + BYTE bySourceType; //ƵԴͣ0壬1-IPC2-DVR/DVS/NVR3-ſڻ4-Χǽ5-ȷϻ + BYTE byRes[255]; // +}NET_DVR_VIDEOINTERCOM_STREAM, LPNET_DVR_VIDEOINTERCOM_STREAM; + +#define UNLOCK_PASSWORD_LEN 8 //볤 +#define LOCAL_CONTROLLER_NAME_LEN 32//͵ؿƳ +typedef struct tagNET_DVR_DOOR_CFG +{ + DWORD dwSize; + BYTE byDoorName[DOOR_NAME_LEN]; // + BYTE byMagneticType; //Ŵͣ0-գ1- + BYTE byOpenButtonType; //Űťͣ0-գ1- + BYTE byOpenDuration; //ųʱ䣬1-255s¥̵ʱ䣩 + BYTE byAccessibleOpenDuration; //Ⱥ忨ųʱ䣬1-255s + BYTE byMagneticAlarmTimeout; //Ŵżⳬʱʱ䣬0-255s0ʾ + BYTE byEnableDoorLock; //ǷñŻ0-1- + BYTE byEnableLeaderCard; //Ƿ׿ܣ0-1- + BYTE byLeaderCardMode; //׿ģʽ0-׿ܣ1-׿ģʽ2-׿Ȩģʽʹ˴ֶΣbyEnableLeaderCardЧ + DWORD dwLeaderCardOpenDuration; //׿ʱ䣬1-1440min + BYTE byStressPassword[STRESS_PASSWORD_LEN]; //в + BYTE bySuperPassword[SUPER_PASSWORD_LEN]; // + BYTE byUnlockPassword[UNLOCK_PASSWORD_LEN]; //NET_DVR_LOCAL_CONTROLLER_STATUS + BYTE byUseLocalController; //ֻǷھ͵ؿϣ0-1- + BYTE byRes1; + WORD wLocalControllerID; //ֻ͵ؿţ1-64,0δע + WORD wLocalControllerDoorNumber; //ֻ͵ؿűţ1-4,0δע + WORD wLocalControllerStatus; //ֻ͵ؿ״̬0-ߣ1-ߣ2-·1ϵRS48513-·1ϵRS48524-·2ϵRS48515-·2ϵRS48526-·3ϵRS48517-·3ϵRS48528-·4ϵRS48519-·4ϵRS4852ֻ + BYTE byLockInputCheck; //Ƿ(1ֽڣ0ã1ãĬϲ) + BYTE byLockInputType; //(1ֽڣ0գ1Ĭϳ) + BYTE byDoorTerminalMode; //ضӹģʽ(1ֽڣ0̣1ͨĬϷ) + BYTE byOpenButton; //ǷÿŰť(1ֽڣ0ǣ1Ĭ) + BYTE byLadderControlDelayTime; //ݿطÿӳʱ䣬1-255min + BYTE byRes2[43]; +}NET_DVR_DOOR_CFG, *LPNET_DVR_DOOR_CFG; + +typedef struct tagNET_DVR_VIS_DEV_INFO +{ + DWORD dwSize; + BYTE szDevNumber[MAX_DEV_NUMBER_LEN]; //豸 + BYTE byRes[64]; // +}NET_DVR_VIS_DEV_INFO,*LPNET_DVR_VIS_DEV_INFO; + +typedef struct tagNET_DVR_VIS_REGISTER_INFO +{ + DWORD dwSize; + DWORD dwID; //ID + BYTE szDevNumber[MAX_DEV_NUMBER_LEN]; //豸 + BYTE byMACAddr[MACADDR_LEN]; //macַ + BYTE byRes1[2]; // + BYTE sSerialNumber[SERIALNO_LEN]; //豸к + NET_DVR_IPADDR struDevIP; //豸IPַ + NET_DVR_TIME_EX struRegisterTime; //עʱ + BYTE byRegisterType; //עͣ0-1-ſڻ2-3-ڻ4-Χǽ5-ſڻ6-ȷϻ7-8700ͻˡ8-4200ͻ + BYTE byRes[127]; // +}NET_DVR_VIS_REGISTER_INFO,*LPNET_DVR_VIS_REGISTER_INFO; + +typedef struct tagNET_DVR_CALLER_INFO +{ + DWORD dwSize; //ṹС + WORD wBuildingNo; //¥ + SHORT wFloorNo; // + BYTE byZoneNo; //ں + BYTE byUnitNo; //Ԫ + BYTE byDevNo; //豸 + BYTE byDevType; //豸ͣ1-ſڻ2-3-ڻ4-Χǽ5-ſڻ6-ȷϻ7-8700ͻˣ8-4200ͻˣ9-APP, 10- 11-VOIPͻˣ12-صIPC豸 + BYTE byLockNum;//0-ϵ߼ߣֵ-ʵ + BYTE byHighDevNo; // 豸Ÿ8λ,֧1-9999ķΧ + BYTE byRes1[2]; // + BYTE byVoipNo[16]; // VOIPͻ˺ byDevTypeΪ11ʱЧ + BYTE byRes[80]; // +}NET_DVR_CALLER_INFO,*LPNET_DVR_CALLER_INFO; + +typedef struct tagNET_DVR_CALL_STATUS +{ + DWORD dwSize; //ṹС + BYTE byCallStatus; //ȡͨ״̬1-޺С2-塢3-ͨ + BYTE byRes[127]; +}NET_DVR_CALL_STATUS, *LPNET_DVR_CALL_STATUS; + +#define MAX_SERVER_DEVICE_NUMBER 16 //豸 + +typedef struct tagNET_DVR_SERVER_DEVICE_CFG +{ + BYTE byDeviceName[NAME_LEN]; //豸 + BYTE byDeviceType; ////豸ͣ1-ſڻ2-3-ڻ + BYTE byDeviceID; //ſڻ + BYTE byLockNum; //0-ϵ߼ߣֵ-ʵ + BYTE byRes[5]; // +}NET_DVR_SERVER_DEVICE_CFG,*LPNET_DVR_SERVER_DEVICE_CFG; + +typedef struct tagNET_DVR_SERVER_DEVICE_INFO +{ + DWORD dwSize; //ṹС + DWORD dwDeviceNum; //豸 + NET_DVR_SERVER_DEVICE_CFG struDeviceCfg[MAX_SERVER_DEVICE_NUMBER]; //豸Ϣ + BYTE byRes[200]; // +}NET_DVR_SERVER_DEVICE_INFO,*LPNET_DVR_SERVER_DEVICE_INFO; + +typedef struct tagNET_DVR_VIDEO_CALL_PARAM +{ + DWORD dwSize; + DWORD dwCmdType; // 0-У1-ȡκУ2-κ 3-ܾ 4-峬ʱ 5-ͨ6-豸ͨУ7-ͻͨУ8ڻ + WORD wPeriod; //ں, Χ[0,9] + WORD wBuildingNumber; //¥ + WORD wUnitNumber; //Ԫ + SHORT wFloorNumber; // + WORD wRoomNumber; // + WORD wDevIndex; //豸 + BYTE byUnitType; //豸ͣ1-ſڻ2-3-ڻ4-Χǽ5-ſڻ6-ȷϻ7-8700ͻˣ8-4200ͻˣ9-APP + BYTE byRes[115]; // +}NET_DVR_VIDEO_CALL_PARAM,*LPNET_DVR_VIDEO_CALL_PARAM; + +#define MAX_SCREEN_ADDRESS_LEN 16 //󳤶 +#define MAX_DAY_TIME_POINT 8 //ÿʱ +#define MAX_TIME_POINT 16 //ÿʱ + +typedef struct tagNET_DVR_DEV_IP_INFO +{ + BYTE byUserName[NAME_LEN]; //û + BYTE byPassWord[PASSWD_LEN]; // + NET_DVR_IPADDR struIPAddr; //IPַ + WORD wPort; //˿ں + BYTE byRes[24]; +}NET_DVR_DEV_IP_INFO, *LPNET_DVR_DEV_IP_INFO; + +typedef union tagNET_DVR_SCREEN_BASE_INFO +{ + BYTE byScreenAddress[MAX_SCREEN_ADDRESS_LEN]; //Ļ룬豸ӷʽΪ0ʱЧ + NET_DVR_DEV_IP_INFO struIPInfo; //ĻipַϢ + BYTE byRes[100]; +}NET_DVR_SCREEN_BASE_INFO,*LPNET_DVR_SCREEN_BASE_INFO; + +typedef struct tagNET_DVR_SCREEN_INDEX_CFG +{ + DWORD dwSize; + BYTE byEnbale; //ʹܣ0-ʹܣ1-ʹ + BYTE byDevAddType; //豸ӷʽ0-(Ļʹôͨ)1-IPַ(Ļʹͨ) + BYTE byRes1[2]; + NET_DVR_SCREEN_BASE_INFO struScreenBaseInfo; //Ļ豸Ϣ + BYTE byRes[32]; +}NET_DVR_SCREEN_INDEX_CFG,*LPNET_DVR_SCREEN_INDEX_CFG; + +//ģң +typedef struct tagNET_DVR_SIMULATE_REMOTE_CTRL +{ + BYTE byControlType; //1-Դ2-Դأ3-źԴ4-˵5-ȷ6-ϣ7-£8-9-, 10-INFO, 11-һ,12-ְ + BYTE byControlParam; //Ϊ12ʱʾֵ(0-9)ʱ˲Ч + BYTE byRes[14]; +}NET_DVR_SIMULATE_REMOTE_CTRL, *LPNET_DVR_SIMULATE_REMOTE_CTRL; + +//Ļάǽ +typedef struct tagNET_DVR_SCREEN_WALL_CTRL +{ + BYTE byEnable; //״̬ء0-Ϊرգ1-Ϊ + BYTE byRes[15]; +}NET_DVR_SCREEN_WALL_CTRL, *LPNET_DVR_SCREEN_WALL_CTRL; + +//Ŵԭ +typedef struct tagNET_DVR_AREA_ZOOM_CFG +{ + BYTE byCmd; //Ŵԭָ1-Ŵ2-ԭ + BYTE byRes[3]; + NET_DVR_RECTCFG struArea; //ҪŴ1920*1920ΪĻܴСԭʱ˲Ч +}NET_DVR_AREA_ZOOM_CFG, *LPNET_DVR_AREA_ZOOM_CFG; + +typedef union tagNET_DVR_SCREEN_CONTROL_PARAM +{ + NET_DVR_INPUT_INTERFACE_CTRL struInputCtrl; + NET_DVR_DISPLAY_COLOR_CTRL struDisplayCtrl; + NET_DVR_DISPLAY_POSITION_CTRL struPositionCtrl; + NET_DVR_SIMULATE_REMOTE_CTRL struSimulateRemoteCrtl; //ģңذ + NET_DVR_SCREEN_WALL_CTRL struScreenWallCtrl; //Ļάǽ + NET_DVR_AREA_ZOOM_CFG struZoomArea; //Ŵԭ + BYTE byRes[16]; +}NET_DVR_SCREEN_CONTROL_PARAM, *LPNET_DVR_SCREEN_CONTROL_PARAM; + +typedef struct tagNET_DVR_SCREEN_CONTROL +{ + DWORD dwSize; + DWORD dwCommand ; /* Ʒ 1- 2- 3-ĻԴѡ 4-ʾԪɫ 5-ʾԪλÿ*/ + BYTE byProtocol; //Э,1:LCD-S1,2:LCD-S2 + BYTE byRes1[3]; + NET_DVR_SCREEN_CONTROL_PARAM struControlParam; + BYTE byRes2[52]; +}NET_DVR_SCREEN_CONTROL, *LPNET_DVR_SCREEN_CONTROL; + +typedef struct tagNET_DVR_SCREEN_CONTROL_V41 +{ + DWORD dwSize; + BYTE bySerialNo; //ں + BYTE byRes[2]; + BYTE byProtocol; // Э 1-LCD-S1,2-LCD-S2,3-LCD-L1,4-LCD-DLP,5-LCD-S3,6-LCD-D207-LCD-L2,8-LCD-Z1 + //9-LCD-D20/D,10-LCD-D20/S,11-LCD-D20/P,12-LCD-D20/T,13-LCD-D20/F,14-LCD-D20/DF,15-LCD-D20/FS, + //16-LCD-D20/FP,17-LCD-D20/FT,18-LCD-D5022,19-LCD-D5032,20-LCD-D5042+,21-LCD-D20/Z 0xff-ЧʹԤȰ󶨵Э + DWORD dwCommand ; /* Ʒ 1- 2- 3-ĻԴѡ 4-ʾԪɫ 5-ʾԪλÿƣ6-ģңذ,7-ʾĻ״̬, + 8-ʾĻ루ʼΪ0,0߾Ϊ0xffffffff, 9-Ļάǽ,10-ָĻĬϲ11-ʾIPʼΪ0,0߾Ϊ0xffffffff,12-ĻUSB 13-Ŵԭ*/ + NET_DVR_SCREEN_CONTROL_PARAM struControlParam; + BYTE byWallNo; // ǽ + BYTE byDevNo; //豸 + BYTE bySubboardNo; //Ӱ + BYTE byRes1; + NET_DVR_RECTCFG_EX struRect;//м㣬׼ + BYTE byRes2[28]; +}NET_DVR_SCREEN_CONTROL_V41, *LPNET_DVR_SCREEN_CONTROL_V41; + +typedef struct tagNET_DVR_MSC_SPLICE_CFG +{ + DWORD dwSize; + BYTE bySpliceNo; //ƴ + BYTE byWallNo; //ǽ + BYTE byEnable; //Ƿʹܣ0-1- + BYTE byRes1[1]; + NET_DVR_RECTCFG_EX struRectCfg; //Ҫƴӵ򣬻ȡʱ˲0 + BYTE byRes2[32]; +}NET_DVR_MSC_SPLICE_CFG,*LPNET_DVR_MSC_SPLICE_CFG; + +typedef struct tagNET_DVR_MSC_SCREEN_INTERFACE_CFG +{ + DWORD dwSize; + BYTE byInterfaceType; //Դö INPUT_INTERFACE_TYPE + BYTE byNoSignalPic; //źŻģʽ1-2-3-LOGO + BYTE byRes[30]; +}NET_DVR_MSC_SCREEN_INTERFACE_CFG,*LPNET_DVR_MSC_SCREEN_INTERFACE_CFG; + +// +typedef struct tagNET_DVR_MSC_SCREEN_BACKLIGHT_CFG +{ + DWORD dwSize; + BYTE byBacklight; //⣬0-100 + BYTE byRes[15]; +}NET_DVR_MSC_SCREEN_BACKLIGHT_CFG,*LPNET_DVR_MSC_SCREEN_BACKLIGHT_CFG; + +//л +typedef struct tagNET_DVR_MSC_SCREEN_PIP_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿûл 0- 1- + BYTE bySubWindowSource; //ӻźԴοöINPUT_INTERFACE_TYPE + BYTE bySubWindowBorderColor; //ӻ߿ɫ 1-ɫ2-ɫ + BYTE byRes1; + NET_DVR_RECTCFG_EX struPosition; //ӻλãĻܴСΪ1920*1920 + BYTE byRes2[16]; +}NET_DVR_MSC_SCREEN_PIP_CFG,*LPNET_DVR_MSC_SCREEN_PIP_CFG; + +typedef struct tagNET_DVR_SCREEN_WORK_STATE +{ + DWORD dwSize; + BYTE byFanStatus;//״̬0-أ1- + BYTE byFanExceptionStatus; //쳣״̬0-֧֣1-2-쳣 + BYTE byRes1[2]; + DWORD dwWorkingHours; //ۻʱλСʱ + BYTE byVersion[VERSION_LEN];//汾 + int iTemperature; //忨¶ȣȷλλ϶ + BYTE byTempState; //忨¶״̬0-֧֣1-2-쳣 + BYTE byRes[31]; +}NET_DVR_SCREEN_WORK_STATE,*LPNET_DVR_SCREEN_WORK_STATE; + +//logo +typedef struct tagNET_DVR_BOOT_LOGO_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿʾlogo,0-ʾ1-ʾ + BYTE byRes[31]; +}NET_DVR_BOOT_LOGO_CFG,*LPNET_DVR_BOOT_LOGO_CFG; +//Ƶ +typedef struct tagNET_DVR_LCD_AUDIO_CFG +{ + DWORD dwSize; + BYTE byMute; //Ƿ0-1- + BYTE byVolume; //С0-100 + char byBalance; //ƽ⣬-50-+50 + BYTE byRes[33]; +}NET_DVR_LCD_AUDIO_CFG, *LPNET_DVR_LCD_AUDIO_CFG; + +//Ļ +typedef union tagNET_DVR_MSC_SCREEN_PARAM +{ + NET_DVR_MSC_SCREEN_INTERFACE_CFG struInterfaceCfg; //Դ + NET_DVR_SCREEN_FAN_WORK_MODE_CFG struFanWorkMode; //ȹģʽ + NET_DVR_SCREEN_VGA_CFG struVgaCfg; //VGAźŲ + NET_DVR_SCREEN_MENU_CFG struMenuCfg; //Ļ˵ + NET_DVR_VIDEO_OUT_CFG struOutEffectCfg; //ʾЧ + NET_DVR_COLOR_TEMPERATURE_CFG struColorTemperatureCfg; //ɫ² + NET_DVR_ADC_CFG struAdcCfg; //ADC + NET_DVR_SCREEN_EDGE_CFG struScreenEdgeCfg; //ĻԵ + NET_DVR_MSC_SCREEN_BACKLIGHT_CFG struBacklight; // + NET_DVR_MSC_SCREEN_PIP_CFG struPicInPicCfg; //л + NET_DVR_DEFOG_LCD struDefog; //ȥ + NET_DVR_SCREEN_WORK_STATE struWorkState; //Ļ״̬ + NET_DVR_BOOT_LOGO_CFG struBootLogoCfg; //ʼʾlogo + NET_DVR_LCD_AUDIO_CFG struAudioCfg; //Ƶ + BYTE byRes[256]; +}NET_DVR_MSC_SCREEN_PARAM,*LPNET_DVR_MSC_SCREEN_PARAM; + +typedef struct tagNET_DVR_MSC_SCREEN_PARAM_CFG +{ + DWORD dwSize; + BYTE byParamType; //ͣ1-Դ2-ȹģʽ3-VGAźŲ4-Ļ˵5-ʾЧ6-ɫ²7-ADC8-ĻԵ9-10-л11-͸12-Ļ״ֻ̬ܻȡ13-LOGOǷʾ 14-Ƶ + BYTE byRes1[3]; + NET_DVR_MSC_SCREEN_PARAM struParam; //Ļ + BYTE byRes2[32]; +}NET_DVR_MSC_SCREEN_PARAM_CFG,*LPNET_DVR_MSC_SCREEN_PARAM_CFG; + +typedef struct tagNET_DVR_MSC_SCREEN_REMOTE_CFG +{ + DWORD dwSize; + BYTE byWallNo; //ǽ + BYTE byRes1[3]; + NET_DVR_RECTCFG_EX struRectCfg; //Ļ + NET_DVR_MSC_SCREEN_PARAM_CFG struScreenParam; //õĻ + BYTE byRes2[32]; +}NET_DVR_MSC_SCREEN_REMOTE_CFG,*LPNET_DVR_MSC_SCREEN_REMOTE_CFG; + +typedef struct tagNET_DVR_MSC_SCREEN_PARAM_COND +{ + DWORD dwSize; + BYTE byWallNo; //ǽ + BYTE byParamType; //ͣ1-Դ2-ȹģʽ3-VGAźŲ4-Ļ˵5-ʾЧ6-ɫ²7-ADC8-ĻԵ9-10-л11-͸12-Ļ״ֻ̬ܻȡ13-LOGOǷʾ 14-Ƶ + BYTE byRes1[2]; + NET_DVR_RECTCFG_EX struRectCfg; //Ļ + BYTE byRes2[32]; +}NET_DVR_MSC_SCREEN_PARAM_COND,*LPNET_DVR_MSC_SCREEN_PARAM_COND; + +typedef struct tagNET_DVR_SWITCH_DAY_TIME +{ + BYTE byEnable; //Ƿøʱ,0-ã1- + BYTE bySwitchType; //ػͣ0-ػ1- + BYTE byRes1[2]; + NET_DVR_DAYTIME struTimePoint; //ػʱ + BYTE byRes2[8]; +}NET_DVR_SWITCH_DAY_TIME,*LPNET_DVR_SWITCH_DAY_TIME; + +typedef struct tagNET_DVR_SWITCH_TIME_POINT +{ + BYTE byEnable; //Ƿøʱ,0-ã1- + BYTE bySwitchType; //ػͣ0-ػ1- + BYTE byRes1[2]; + NET_DVR_SYSTEM_TIME struTimePoint; //ػʱ + BYTE byRes2[16]; +}NET_DVR_SWITCH_TIME_POINT,*LPNET_DVR_SWITCH_TIME_POINT; + +typedef struct tagNET_DVR_TIME_SWITCH_CFG +{ + DWORD dwSize; + NET_DVR_SWITCH_DAY_TIME struSwitchDayTime[MAX_DAYS][MAX_DAY_TIME_POINT]; //ܿػƻ + NET_DVR_SWITCH_TIME_POINT struSwitchTimePoint[MAX_TIME_POINT]; //ʱ㿪ػ + BYTE byRes1[3]; + BYTE byEnable;//Ƿöʱػ,0-ã1- + BYTE byRes[60]; +}NET_DVR_TIME_SWITCH_CFG,*LPNET_DVR_TIME_SWITCH_CFG; + +typedef struct tagNET_DVR_VIDEO_WALL_AREA +{ + DWORD dwSize; + BYTE byWallNo; //ǽ + BYTE byRes1[3]; + NET_DVR_RECTCFG_EX struRect; //ĻΧ + BYTE byRes2[32]; +}NET_DVR_VIDEO_WALL_AREA, *LPNET_DVR_VIDEO_WALL_AREA; + +typedef struct tagNET_DVR_DELAY_TIME +{ + DWORD dwSize; + DWORD dwDelayTime; //ʱʱ䣬0-3000λms + BYTE byRes[32]; +}NET_DVR_DELAY_TIME,*LPNET_DVR_DELAY_TIME; + +//˫Ŀ궨 +typedef enum _BV_CALIBRATION_TYPE_ENUM_ +{ + ENUM_BV_CALIBRATION_NONE = 0, //δ궨 + ENUM_BV_CALIBRATION_DIRECT = 1, //˫Ŀֱӱ궨 + ENUM_BV_CALIBRATION_SAMPLE = 2, //˫Ŀ궨 +} BV_CALIBRATION_TYPE_ENUM; + + +//궨 +typedef struct tagNET_DVR_BV_SAMPLE_CALIB_POINT +{ + BYTE byCalibPtID; //궨IDΧ[1,5]ʾ˵˫Ŀ궨е + BYTE byRes1[3]; // + NET_VCA_POINT struPoint; //궨 + BYTE byRes2[16]; // +}NET_DVR_BV_SAMPLE_CALIB_POINT,*LPET_DVR_BV_SAMPLE_CALIB_POINT; + +//ʼ궨 +typedef struct tagNET_DVR_BV_SAMPLE_CALIB_BEGIN_PARAM +{ + DWORD dwCameraHeight; //߶ȣλcm + DWORD dwHumanHeight; //ߣλcm + BYTE byRes[248]; // +}NET_DVR_BV_SAMPLE_CALIB_BEGIN_PARAM,*LPNET_DVR_BV_SAMPLE_CALIB_BEGIN_PARAM; + +//궨 +typedef struct tagNET_DVR_BV_SAMPLE_CALIB_SET_PARAM +{ + NET_DVR_BV_SAMPLE_CALIB_POINT struCalibPoint; //궨㡣Աֱߣضʱ˵ʾߵе㡣 + BYTE byRes[228]; // +}NET_DVR_BV_SAMPLE_CALIB_SET_PARAM,*LPNET_DVR_BV_SAMPLE_CALIB_SET_PARAM; + +//궨 +typedef struct tagNET_DVR_BV_SAMPLE_CALIB_END_PARAM +{ + BYTE byRes[256]; // +}NET_DVR_BV_SAMPLE_CALIB_END_PARAM,*LPNET_DVR_BV_SAMPLE_CALIB_END_PARAM; + +//궨 +typedef union tagNET_DVR_BV_SAMPLE_CALIB_PARAM_UNION +{ + BYTE byRes[256]; // + NET_DVR_BV_SAMPLE_CALIB_BEGIN_PARAM struCalibBegin; //ʼ궨 + NET_DVR_BV_SAMPLE_CALIB_SET_PARAM struCalibSet; //ñ궨 + NET_DVR_BV_SAMPLE_CALIB_END_PARAM struCalibEnd; //궨 +}NET_DVR_BV_SAMPLE_CALIB_PARAM_UNION,*LPNET_DVR_BV_SAMPLE_CALIB_PARAM_UNION; + +//궨ö +typedef enum _BV_SAMPLE_CALIB_CMD_ENUM +{ + ENUM_BV_SAMPLE_CALIB_BEGIN = 1, //ʼ궨 + ENUM_BV_SAMPLE_CALIB_SETTING = 2, //ò + ENUM_BV_SAMPLE_CALIB_END = 3 //궨 +}BV_SAMPLE_CALIB_CMD_ENUM; + +//궨ṹ +typedef struct tagNET_DVR_BV_SAMPLE_CALIBRATION +{ + DWORD dwSize; //ṹС + DWORD dwChannel; //ͨ + BYTE byCommand; //궨μBV_SAMPLE_CALIB_CMD _ENUM + BYTE byRes1[3]; // + NET_DVR_BV_SAMPLE_CALIB_PARAM_UNION uCalibParam; //궨ȡֵֶbyCommand + BYTE byRes2[256] ; // +}NET_DVR_BV_SAMPLE_CALIBRATION,*LPNET_DVR_BV_SAMPLE_CALIBRATION; + + +//˫Ŀ궨Ϣ +typedef struct tagNET_DVR_BV_SAMPLE_CALIB_CFG +{ + DWORD dwSize; //ṹС + DWORD dwCameraHeight; //߶ȣλcm + float fPitchAngle; //ӽǶ[0, 60], + float fInclineAngle; //бǶ[-20,20] + NET_DVR_BV_SAMPLE_CALIB_POINT struCalibPoint[MAX_SAMPLE_NUM]; //궨 + NET_DVR_BV_SAMPLE_CALIB_POINT struCalibPointEx[MAX_SAMPLE_NUM_EX/*7*/]; //궨չ + BYTE byRes[60]; // +}NET_DVR_BV_SAMPLE_CALIB_CFG,*LPNET_DVR_BV_SAMPLE_CALIB_CFG; + +//˫ĿͼУṹ +typedef struct tagNET_DVR_BINOC_RECTIFY_PARAM +{ + float fCamInternalMatrix[3][3]; //ڲξ󣬰༰ + float fDistCoeffs[8]; //ͷϵ + float fRotateMatrix[3][3]; //Уת + float fProjectMatrix[3][4]; //УͶӰ + BYTE byRes[64]; // +}NET_DVR_BINOC_RECTIFY_PARAM, *LPNET_DVR_BINOC_RECTIFY_PARAM; + +//У +typedef struct _tagNET_DVR_BV_CORRECT_PARAM +{ + DWORD dwSize; //ṹС + float fReprojectMatrix[4][4]; //ͶӰ + NET_DVR_BINOC_RECTIFY_PARAM struLCamParam; //У + NET_DVR_BINOC_RECTIFY_PARAM struRCamParam; //У + BYTE byLensType; //ͷͣ0-δ֪,1-8mm,2-12mm,3-16mm,4-25mm,5-35mm,6-50mm,7-4mm,8-6mm,9-2.0mm,10-2.8mm,11-4.3mm + BYTE byRes1[3]; // + /*RotateMatrix ˫Ŀ궨ת, + TransMatrixƽƾ, + RotateMatrixTransMatrixλùϵ*/ + float fRotateMatrix[3][3]; //ת + float fTransMatrix[3]; //ƽƾ + DWORD dwOriImgWidth; //ԭʼ궨ͼĿ1920*1080ֱʵͼΪ1920 + DWORD dwOriImgHeight; //ԭʼ궨ͼĸߣ1920*1080ֱʵͼΪ1080 + BYTE byRes[196]; // +} NET_DVR_BV_CORRECT_PARAM,*LPNET_DVR_BV_CORRECT_PARAM; + +//Ƶ +typedef struct tagNET_DVR_OUTPUT_VIDEO_TYPE +{ + DWORD dwSize; //ṹС + BYTE byType; //Ƶͣ1-ƴͼ2-ͼ + BYTE byRes[63]; // +}NET_DVR_OUTPUT_VIDEO_TYPE,*LPNET_DVR_OUTPUT_VIDEO_TYPE; + +#define MAX_CHECK_485CHAN 64 //485Լ豸ͨŸ + +typedef struct tagNET_DVR_DEVICE_SELF_CHECK_STATE +{ + DWORD dwSize; + DWORD dwRS485Chan[MAX_CHECK_485CHAN];//RS485ͨͨţֵʾͨţλʾλ + DWORD dwSensorChan[4];//ģЧͨţλʾ + BYTE byRes[32]; // ֽ +}NET_DVR_DEVICE_SELF_CHECK_STATE, *LPNET_DVR_DEVICE_SELF_CHECK_STATE; + +//ȫȡֵ +typedef struct tagNET_DVR_COMPLETE_RESTORE_INFO_ +{ + DWORD dwSize ; //ṹ峤 + DWORD dwChannel; //ͨ + BYTE byRes[64]; +}NET_DVR_COMPLETE_RESTORE_INFO, *LPNET_DVR_COMPLETE_RESTORE_INFO; + +typedef struct tagNET_DVR_UPLOAD_PICTURE_INFO +{ + DWORD dwSize; + DWORD dwChannel; //ͼƬӦͨ + BYTE byPictureType;//ͼƬʽ,0-bmp1-jpeg2-PNG 3-SWF 4-GIF + BYTE byRes1[3]; + NET_DVR_TIME_V30 struTime; //ͼƬʱ + char* sPictureBuffer;//ͼƬ + DWORD dwPictureLength;//ͼƬ + DWORD dwPicMangeNo; //ͼƬ + BYTE sPicName[NAME_LEN]; //ͼƬ + BYTE byUseType; //ͼƬʹͣ0-ͼƬ 1-logoͼƬ + BYTE byRes[91]; +}NET_DVR_UPLOAD_PICTURE_INFO,*LPNET_DVR_UPLOAD_PICTURE_INFO; + +#define MAX_UPLOADFILE_URL_LEN 240 + +typedef struct tagNET_DVR_UPLOAD_FILE_RET +{ + BYTE sUrl[MAX_UPLOADFILE_URL_LEN] ; //url + BYTE byRes[260]; +} NET_DVR_UPLOAD_FILE_RET,*LPNET_DVR_UPLOAD_FILE_RET; + +typedef struct tagNET_DVR_FACE_EXTRA_INFO +{ + NET_VCA_RECT struVcaRect[MAX_FACE_PIC_NUM]; //ͼϢ + BYTE byRes[64]; +}NET_DVR_FACE_EXTRA_INFO, *LPNET_DVR_FACE_EXTRA_INFO; +typedef union tagNET_DVR_PIC_EXTRA_INFO_UNION +{ + BYTE byUnionLen[544]; //峤ȣʵ + NET_DVR_FACE_EXTRA_INFO struFaceExtraInfo; //Ϣ +}NET_DVR_PIC_EXTRA_INFO_UNION, *LPNET_DVR_PIC_EXTRA_INFO_UNION; + +typedef struct tagNET_DVR_FIND_PICTURE_V40 //ҽṹ +{ + char sFileName[PICTURE_NAME_LEN];//ͼƬ + NET_DVR_TIME struTime;//ͼƬʱ + DWORD dwFileSize;//ͼƬĴС + char sCardNum[CARDNUM_LEN_V30]; // + BYTE byPlateColor ;//οṹ VCA_PLATE_COLOR + BYTE byVehicleLogo;//οṹ VLR_VEHICLE_CLASS + BYTE byFileType ; //ļͣ :0ʱץͼ1 ƶץͼ 2 ץͼ3 | ƶץͼ 4 & ƶץͼ 6 ֶץͼ ,9-ͼƬ,10- PIR11- ߱12- ȱ, 0xa Ԥʱͼ0xd , 0xe Խ⣬0xf ⣬0x10 , 0x11-豸ػطʱͼ, 0x12-, 0x32-, 0x33-, 0x34-ҵѯ + BYTE byRecogResult ;//ʶοṹVTR_RESULT + char sLicense[MAX_LICENSE_LEN/*16*/]; //ƺ + BYTE byEventSearchStatus; //ͼƬʾͬһҽʱ0-ʾûͼƬϢ1-ʾ滹ͼƬϢܹͼƬϢһ״̬Ϊ0ͼƬ + BYTE byRes1[2]; // ֽ + BYTE byThermometryUnit;//µλ: 0-϶ȣ棩1-϶ȣH2-(K) + float fFaceSnapTemperature; // ץ¶ϢȷС1λ ( + 100 * 10 ȡ䣩λ̶Ϊ϶ȣ棩byFileTypeΪ0x25-ץʱЧ¸ֶΪ0ֵ + BYTE byRes[68]; // ֽ + NET_DVR_PIC_EXTRA_INFO_UNION uPicExtraInfo; //ͼƬϢ +}NET_DVR_FIND_PICTURE_V40,*LPNET_DVR_FIND_PICTURE_V40; + +typedef struct tagNET_DVR_FIND_PICTURE_V50 //ҽṹ +{ + char sFileName[PICTURE_NAME_LEN];//ͼƬ + NET_DVR_TIME struTime;//ͼƬʱ + DWORD dwFileSize;//ͼƬĴС + char sCardNum[CARDNUM_LEN_V30]; // + BYTE byPlateColor;//οṹ VCA_PLATE_COLOR + BYTE byVehicleLogo;//οṹ VLR_VEHICLE_CLASS + BYTE byFileType; //ļͣ :0ʱץͼ1 ƶץͼ 2 ץͼ3 | ƶץͼ 4 & ƶץͼ 6 ֶץͼ ,9-ͼƬ,10- PIR11- ߱12- ȱ,\ + 0xa Ԥʱͼ0xd , 0xe Խ⣬0xf ⣬0x10 , 0x11-豸ػطʱͼ, 0x12-, 0x70-ͨʱץͼ + BYTE byRecogResult;//ʶοṹVTR_RESULT + char sLicense[MAX_LICENSE_LEN/*16*/]; //ƺ + BYTE byEventSearchStatus; //ͼƬʾͬһҽʱ0-ʾûͼƬϢ1-ʾ滹ͼƬϢܹͼƬϢһ״̬Ϊ0ͼƬ + NET_DVR_ADDRESS struAddr; //ͼƬڵĵַϢͼƬʱõ + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cTimeDifferenceH; //UTCʱСʱ-12 ... +14 + char cTimeDifferenceM; //UTCʱӣ-30,0, 30, 45 + BYTE byRes[253]; // ֽ + NET_DVR_PIC_EXTRA_INFO_UNION uPicExtraInfo; //ͼƬϢ +}NET_DVR_FIND_PICTURE_V50, *LPNET_DVR_FIND_PICTURE_V50; + + +typedef struct tagNET_DVR_THUMBNAILS_COND +{ + DWORD dwSize; // ṹС + NET_DVR_STREAM_INFO struStreamInfo; //Ϣ + BYTE bySearchDataType; // 0-I֡ݣCVR һ·£1s28I֡1-ͼƬ + BYTE byRes[3]; // ֽ + NET_DVR_TIME_V30 struStartTime; //ҿʼʱ + NET_DVR_TIME_V30 struStopTime; // ҽʱ + DWORD dwIntervalTime; //ʱ䣬λ룬Χ0~24*60*60ҽʱڲҿʼʱ䣬0ֵЧ + BYTE byRes1[512]; // ֽ +}NET_DVR_THUMBNAILS_COND, *LPNET_DVR_THUMBNAILS_COND; + +typedef struct tagNET_DVR_THUMBNAILS_RESULT //ҽṹ +{ + BYTE byResultDataType; // ҽ0-I֡ݣCVR һ·£1s28I֡1-ϵͳͷݣ 2-ͼƬ + BYTE byIFrameType; // I֡ͣ0-֡1-οֻ֡벥ſ⣬DzҪתΪͼƬʾ + BYTE byRes1[2]; // ֽ + NET_DVR_TIME_SEARCH struTime; //ʱ + BYTE byRes[252]; // ֽ + DWORD dwFileSize; //ݴС + char* pBuffer; //Ϣ(ͺṹNET_DVR_THUMBNAILS_RESULT ֶ byResultDataType ֵ) +}NET_DVR_THUMBNAILS_RESULT, *LPNET_DVR_THUMBNAILS_RESULT; + +typedef struct tagNET_DVR_REGIONENTRANCE_REGION +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE bySensitivity; //ȲΧ[1-100] + /* + Ŀֶ֧꣬ѡ嶨Ϊ + 0~Ŀ꣨ʾĿ꣬Ŀ궼м⣩ + 0x01 ~ ˣ + 0x02 ~ + 0x04 ~ + ֶֶ֧ѡλȡֵ3ʾ1+2. + */ + BYTE byDetectionTarget; + BYTE byAlarmConfidence; // Ŷ, 0-,1-ϵ,2-ϸ,3- + BYTE byRecordConfidence; // ¼Ŷ, 0-,1-ϵ,2-ϸ,3- + BYTE byRes[60]; // +}NET_DVR_REGIONENTRANCE_REGION, *LPNET_DVR_REGIONENTRANCE_REGION; + +typedef struct tagNET_DVR_REGION_ENTRANCE_DETECTION +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byEnableHumanMisinfoFilter;// ȥ 0-ã1- + BYTE byEnableVehicleMisinfoFilter;// óȥ 0-ã1- + BYTE byRes1[1]; + NET_DVR_REGIONENTRANCE_REGION struRegion[MAX_REGION_NUM]; + BYTE byRes2[128]; +}NET_DVR_REGION_ENTRANCE_DETECTION,*LPNET_DVR_REGION_ENTRANCE_DETECTION; + +typedef struct tagNET_DVR_SMART_REGION_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + DWORD dwRegion; //ID +}NET_DVR_SMART_REGION_COND, *LPNET_DVR_SMART_REGION_COND; + +typedef struct tagNET_DVR_ENTRANCE_REGION +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE bySensitivity; //ȲΧ[1-100] + BYTE byDetectionTarget; + BYTE byAlarmConfidence; //Ŷ, 0-,1-ϵ,2-ϸ,3- + BYTE byRecordConfidence; //¼Ŷ, 0-,1-ϵ,2-ϸ,3- + BYTE byRes[60]; // +}NET_DVR_ENTRANCE_REGION, *LPNET_DVR_ENTRANCE_REGION; + +typedef struct tagNET_DVR_DENSEFOGDETECTION_CFG +{ + DWORD dwSize; + BYTE byEnable;//ʹ + BYTE bySensitivity; //ȲΧ[0,100] + BYTE byRes[258]; +}NET_DVR_DENSEFOGDETECTION_CFG, *LPNET_DVR_DENSEFOGDETECTION_CFG; + +typedef struct tagNET_DVR_EVENT_TRIGGER +{ + DWORD dwSize;//ṹС + NET_DVR_HANDLEEXCEPTION_V41 struHandleException; //쳣ʽ + DWORD dwRelRecordChan[MAX_CHANNUM_V40]; //ʵʴ¼ֵͨʾýУ±0ʼ˳ȡм0xffffffffЧ + NET_DVR_PRESETCHAN_INFO struPresetChanInfo[MAX_CHANNUM_V40]; //õԤõϢ + NET_DVR_CRUISECHAN_INFO struCruiseChanInfo[MAX_CHANNUM_V40]; //ѲͨϢ + NET_DVR_PTZTRACKCHAN_INFO struPtzTrackInfo[MAX_CHANNUM_V40]; //̨켣ͨϢ + BYTE byDirection;//0-1-ȫ2-3- + BYTE byRes2[255]; +}NET_DVR_EVENT_TRIGGER,*LPNET_DVR_EVENT_TRIGGER; + +typedef struct tagNET_DVR_EVENT_SCHEDULE +{ + DWORD dwSize;//ṹС + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*ʱ*/ + NET_DVR_SCHEDTIME struHolidayAlarmTime[MAX_TIMESEGMENT_V30]; /*ղʱ*/ + BYTE bySceneID[MAX_DAYS][MAX_TIMESEGMENT_V30];//,Ŀǰ֧1~40ΪЧó벼ʱÿʱһһӦ + BYTE byRes[72]; +}NET_DVR_EVENT_SCHEDULE,*LPNET_DVR_EVENT_SCHEDULE; + +typedef struct tagNET_DVR_ANR_ARMING_HOST +{ + DWORD dwSize;//sizeof(NET_DVR_ANR_ ARMING_HOST) + NET_DVR_IPADDR struANRArmingHostIpAddr; //IPַ + WORD wANRAlarmHostPort; //˿ں + BYTE byANRAlarmType;//ͣ 0-SDK˽жӣ1-ehome + BYTE byConfirmMechanismEnabled;// ǷȷϻƷʽӣ0-1-ûп 2- + BYTE byRes[512]; //ֽ +}NET_DVR_ANR_ARMING_HOST, *LPNET_DVR_ANR_ARMING_HOST; + +typedef struct tagNET_DVR_REGIONEXITING_REGION +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE bySensitivity; //ȲΧ[1-100] + /* + Ŀֶ֧꣬ѡ嶨Ϊ + 0~Ŀ꣨ʾĿ꣬Ŀ궼м⣩ + 0x01 ~ ˣ + 0x02 ~ + 0x04 ~ + ֶֶ֧ѡλȡֵ3ʾ1+2. + */ + BYTE byDetectionTarget; + BYTE byAlarmConfidence; //Ŷ, 0-,1-ϵ,2-ϸ,3- + BYTE byRecordConfidence; //¼Ŷ, 0-,1-ϵ,2-ϸ,3- + BYTE byRes[60]; // +}NET_DVR_REGIONEXITING_REGION, *LPNET_DVR_REGIONEXITING_REGION; + +typedef struct tagNET_DVR_REGION_EXITING_DETECTION +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byEnableHumanMisinfoFilter;// ȥ 0-ã1- + BYTE byEnableVehicleMisinfoFilter;// óȥ 0-ã1- + BYTE byRes1[1]; + NET_DVR_REGIONEXITING_REGION struRegion[MAX_REGION_NUM]; + BYTE byRes2[128]; +}NET_DVR_REGION_EXITING_DETECTION,*LPNET_DVR_REGION_EXITING_DETECTION; + +typedef struct tagNET_DVR_LOITERING_REGION +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE bySensitivity; //ȲΧ[1-100] + BYTE byTimeThreshold; //ʱֵΧ[0-10]λs + BYTE byRes[62]; // +}NET_DVR_LOITERING_REGION, *LPNET_DVR_LOITERING_REGION; + +typedef struct tagNET_DVR_LOITERING_DETECTION +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byRes1[3]; + NET_DVR_LOITERING_REGION struRegion[MAX_REGION_NUM]; + BYTE byRes2[128]; +}NET_DVR_LOITERING_DETECTION,*LPNET_DVR_LOITERING_DETECTION; + +typedef struct tagNET_DVR_GROUPDETECTION_REGION +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE byObjectOccup; //ռȣΧ[1-100] + BYTE bySensitivityLevel; //ȣΧ1-100Ĭ65 + BYTE byDurationTime; //ʱ䣬Χ1-600룬Ĭ3 + BYTE byFilterTime; //ʱ䣬Χ1-10ӣʾڴʱڲٴ + BYTE byMinTriggerNumber; //ʹΧ2-50ˣĬ5 + BYTE byLinkageTime; //ʱ䣬Χ5-30룬Ĭ5루ǹתλúͣʱ䣬òǹǷͬһ˻¼Բͬ + BYTE byRes[58]; // +}NET_DVR_GROUPDETECTION_REGION, *LPNET_DVR_GROUPDETECTION_REGION; +typedef struct tagNET_DVR_POS_HIDDEN_INFORMATION +{ + char szKeyWord[KEY_WORD_NUM/*3*/][KEY_WORD_LEN/*128*/]; + BYTE byRes[128]; +}NET_DVR_POS_HIDDEN_INFORMATION, *LPNET_DVR_POS_HIDDEN_INFORMATION; + +typedef struct tagNET_DVR_HIDDEN_INFORMATION_CFG +{ + DWORD dwSize; + BYTE byFuncType;//0-Pos + BYTE Res1[3]; + NET_DVR_POS_HIDDEN_INFORMATION struPosInfo; + BYTE byRes[1024]; +}NET_DVR_HIDDEN_INFORMATION_CFG, *LPNET_DVR_HIDDEN_INFORMATION_CFG; + +typedef struct tagNET_DVR_GROUP_DETECTION +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byRes1[3]; + NET_DVR_GROUPDETECTION_REGION struRegion[MAX_REGION_NUM]; + BYTE byRes2[128]; +}NET_DVR_GROUP_DETECTION,*LPNET_DVR_GROUP_DETECTION; + +typedef struct tagNET_DVR_RAPIDMOVE_REGION +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE bySensitivity; //ȲΧ[1-100] + /* + Ŀֶ֧꣬ѡ嶨Ϊ + 0~Ŀ꣨ʾĿ꣬Ŀ궼м⣩ + 0x01 ~ ˣ + 0x02 ~ + 0x04 ~ + ֶֶ֧ѡλȡֵ3ʾ1+2. + */ + BYTE byDetectionTarget; + BYTE byRes[62]; // +}NET_DVR_RAPIDMOVE_REGION, *LPNET_DVR_RAPIDMOVE_REGION; + +typedef struct tagNET_DVR_RAPIDMOVE_DETECTION +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byRes1[3]; + NET_DVR_RAPIDMOVE_REGION struRegion[MAX_REGION_NUM]; + BYTE byRes2[128]; +}NET_DVR_RAPIDMOVE_DETECTION,*LPNET_DVR_RAPIDMOVE_DETECTION; + +typedef struct tagNET_DVR_PARKING_REGION +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE bySensitivity; //ȲΧ[1-100] + BYTE byTimeThreshold; //ʱֵΧ[0-10]λs + BYTE byRes[62]; // +}NET_DVR_PARKING_REGION, *LPNET_DVR_PARKING_REGION; + +typedef struct tagNET_DVR_PARKING_DETECTION +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byRes1[3]; + NET_DVR_PARKING_REGION struRegion[MAX_REGION_NUM]; + BYTE byRes2[128]; +}NET_DVR_PARKING_DETECTION,*LPNET_DVR_PARKING_DETECTION; + +typedef struct tagNET_DVR_UNATTENDED_BAGGAGE_REGION +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE bySensitivity; //ȲΧ[1-100] + BYTE byTimeThreshold; //ʱֵΧ[0-10]λs + WORD wTimeThreshold;//ʱֵΧ[5-3600], λs + BYTE byTimeThresholdMode;//(ֻдֶΣڼ)0-ֶbyTimeThresholdЧ1-ֶwTimeThresholdЧ + BYTE byRes[59]; // +}NET_DVR_UNATTENDED_BAGGAGE_REGION, *LPNET_DVR_UNATTENDED_BAGGAGE_REGION; + +typedef struct tagNET_DVR_UNATTENDED_BAGGAGE_DETECTION +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byRes1[3]; + NET_DVR_UNATTENDED_BAGGAGE_REGION struRegion[MAX_REGION_NUM]; + BYTE byRes2[128]; +}NET_DVR_UNATTENDED_BAGGAGE_DETECTION,*LPNET_DVR_UNATTENDED_BAGGAGE_DETECTION; + +typedef struct tagNET_DVR_ATTENDED_BAGGAGE_REGION +{ + NET_VCA_POLYGON struRegion;//Χ + BYTE bySensitivity; //ȲΧ[1-100] + BYTE byTimeThreshold; //ʱֵΧ[0-10]λs + WORD wTimeThreshold;//ʱֵΧ[5-3600], λs + BYTE byTimeThresholdMode;//(ֻдֶΣڼ)0-ֶbyTimeThresholdЧ1-ֶwTimeThresholdЧ + BYTE byRes[59]; // +}NET_DVR_ATTENDED_BAGGAGE_REGION, *LPNET_DVR_ATTENDED_BAGGAGE_REGION; + +typedef struct tagNET_DVR_ATTENDED_BAGGAGE_DETECTION +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byRes1[3]; + NET_DVR_ATTENDED_BAGGAGE_REGION struRegion[MAX_REGION_NUM]; + BYTE byRes2[128]; +}NET_DVR_ATTENDED_BAGGAGE_DETECTION,*LPNET_DVR_ATTENDED_BAGGAGE_DETECTION; + +typedef struct tagNET_DVR_REGION_CLIP_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + DWORD dwStreamType; //ͣ0- 1- 2- + BYTE byRes[8]; +}NET_DVR_REGION_CLIP_COND, *LPNET_DVR_REGION_CLIP_COND; + +typedef struct tagNET_DVR_REGION_CLIP_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byRes1[3]; + WORD wResolutionWidth; //ֱʵij + WORD wResolutionHeight; //ֱʵĿ + NET_VCA_POLYGON struRegion[MAX_REGION_NUM]; + BYTE byRes2[64]; +}NET_DVR_REGION_CLIP_CFG, *LPNET_DVR_REGION_CLIP_CFG; + +#define MAX_DIALNUM_LENGTH 32 +typedef struct tagNET_DVR_WIRELESSDIAL_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿ߲ţ0-1- + BYTE byDialMode; // 0-ԶAuto1-ֶManualĬԶֶģʽ¿òżƻʱ䡢ֶ + BYTE byNetworkMode; //0-Զ1-4Gȣ2-3Gȣ3-ֶл2G4-ֶл3G5-ֶл4G6- + BYTE byRes1; + BYTE byDialNum[MAX_DIALNUM_LENGTH]; //ź + BYTE byUserName[NAME_LEN]; //û + BYTE byPassword[NAME_LEN]; // + BYTE byAPNName[NAME_LEN]; //APN + BYTE byUIMCardNum[NAME_LEN]; //ֻ + BYTE byVerifProtocol; // 0-ԶAuto1-CHAP2-PAP + BYTE byRes2; + WORD wMTU; //MTU + DWORD dwOffineTime; //ʱ䣬30-65535λ룬ֶģʽЧ + BYTE byNetAPN[NAME_LEN]; //˽רAPNֶ + BYTE byEnabled4G; //Ƿ4Gܣ0-1- + BYTE byEnabledDNS; //ǷDNSܣ0-1- + BYTE byRes3[30]; +}NET_DVR_WIRELESSDIAL_CFG, *LPNET_DVR_WIRELESSDIAL_CFG; + +typedef struct tagNET_DVR_WIRELESSDIAL_SCHEDULE +{ + DWORD dwSize;//ṹС + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; /*ʱ*/ + NET_DVR_SCHEDTIME struHolidayAlarmTime[MAX_TIMESEGMENT_V30]; //ղʱ + BYTE byRes[128]; +}NET_DVR_WIRELESSDIAL_SCHEDULE,*LPNET_DVR_WIRELESSDIAL_SCHEDULE; + +#define MAX_LENGTH_32 32 +typedef struct tagNET_DVR_WIRELESSDIAL_STATUS +{ + DWORD dwSize;//ṹС + BYTE byRealtimeMode[MAX_LENGTH_32]; //ʵʱģʽ(CDMA 1xEVDOHYBRIDGSMGPRSEDGEWCDMAHSDPAHSUPAHSPATDSCDMATD-LTEFDD-LTE) + BYTE byUIMStatus[MAX_LENGTH_32]; /*UIM״̬(UNKNOWN-δ֪,VALID-Ч,NOVALID-Ч,ROAM-,NOEXIST-, + WRONGPINCODE-PIN,NONETWORKSERVICE-, + ONLYSUPPORTEMERGENCYCALL-ֽ֧УPINCODELOCKEDPIN*/ + DWORD dwSignalQuality; //ź1-5 + BYTE byDialStatus[MAX_LENGTH_32]; /*״̬(disconnect-ŶϿ,dialing-ڲ,success-ųɹ,shmError-쳣, + certificationFailure-֤ʧ,invalidDialingCharacters-ַЧ, + networkTimeout C糬ʱ,wirelessModemErrorģ,SIMError---SIM,,networkError-unknown Cδ֪)*/ + NET_DVR_IPADDR struIpAddr; //IPַ + NET_DVR_IPADDR struIPMask; //ַ + NET_DVR_IPADDR struGatewayIPMask; //صַ + NET_DVR_IPADDR struDnsServerIpAddr; //DNSַ + BYTE byRes[256]; +}NET_DVR_WIRELESSDIAL_STATUS,*LPNET_DVR_WIRELESSDIAL_STATUS; + +typedef struct tagNET_DVR_WIRELESSDIAL_CONNECT +{ + DWORD dwSize;//ṹС + DWORD dwInterface; //ţ1,2 + BYTE byEnableConnect; //Ƿ0-1- + BYTE byRes[255]; +}NET_DVR_WIRELESSDIAL_CONNECT_PARAM,*LPNET_DVR_WIRELESSDIAL_CONNECT_PARAM; + + +typedef struct tagNET_DVR_LITESTORAGE +{ + DWORD dwSize;//ṹС + BYTE byEnable; /*ʹ 0-,1-*/ + BYTE byStorageTime;/*洢ʱ 1-30 Ĭ7*/ + BYTE byLevel; //ȼ0-Чֵ1-ͣ2-(Ĭ)3-ߣ + BYTE byRes; + float fCapacity;//SD¼ռ䣬ֻ + BYTE byDefLowStorageTime;// ģʽƼ ֻ + BYTE byDefMediumStorageTime; // ģʽƼ ֻ + BYTE byDefHighStorageTime; // ģʽƼ ֻ + BYTE byRes1[61]; +}NET_DVR_LITESTORAGE,*LPNET_DVR_LITESTORAGE; + +typedef struct tagNET_DVR_CALIBRATION +{ + DWORD dwSize;//ṹС + NET_VCA_POLYGON struRegion;//궨 + BYTE byRes[64]; +}NET_DVR_CALIBRATION,*LPNET_DVR_CALIBRATION; + +typedef struct tagNET_DVR_STD_CONFIG +{ + void* lpCondBuffer; //[in](ṹʽ),ͨŵ.ΪNULL + DWORD dwCondSize; //[in] lpCondBufferָڴС + void* lpInBuffer; //[in](ṹʽ),ʱΪNULLȡʱΪNULL + DWORD dwInSize; //[in] lpInBufferָڴС + void* lpOutBuffer; //[out](ṹʽ),ȡʱΪNULL,ʱΪNULL + DWORD dwOutSize; //[in] lpOutBufferָڴС + void* lpStatusBuffer; //[out]ص״̬(XMLʽ),ȡɹʱḳֵ,Ҫ,NULL + DWORD dwStatusSize; //[in] lpStatusBufferָڴС + void* lpXmlBuffer; //[in/out]byDataType = 1ʱЧ,xmlʽ + DWORD dwXmlSize; //[in/out]lpXmlBufferָڴС,ȡʱͬʱΪȡɹ޸ĻʵʳȣʱʾʵʳȣڴС + BYTE byDataType; //[in]/,0-ʹýṹlpInBuffer/lpOutBufferЧ,1-ʹXMLlpXmlBufferЧ + BYTE byRes[23]; +}NET_DVR_STD_CONFIG,*LPNET_DVR_STD_CONFIG; + +typedef struct DWORDtagNET_DVR_STD_ABILITY +{ + void* lpCondBuffer; //[in](ָʽ),ͨŵ.ΪNULL + DWORD dwCondSize; //[in] dwCondSizeָڴС + void* lpOutBuffer; //[out](XMLʽ),ΪNULL + DWORD dwOutSize; //[in] lpOutBufferָڴС + void* lpStatusBuffer; //[out]ص״̬(XMLʽ),ȡɹʱḳֵ,Ҫ,NULL + DWORD dwStatusSize; //[in] lpStatusBufferָڴС + DWORD dwRetSize; //[out]ȡݳ(lpOutBufferlpStatusBufferָʵݳ) + BYTE byRes[32]; //ֽ +}NET_DVR_STD_ABILITY,*LPNET_DVR_STD_ABILITY; + +typedef struct tagNET_DVR_STD_CONTROL +{ + void* lpCondBuffer; //[in](ָʽ),ͨŵ.ΪNULL + DWORD dwCondSize; //[in] dwCondSizeָڴС + void* lpStatusBuffer; //[out]ص״̬(XMLʽ),ȡɹʱḳֵ,Ҫ,NULL + DWORD dwStatusSize; //[in] lpStatusBufferָڴС + void* lpXmlBuffer; //[in/out]byDataType = 1ʱЧ,xmlʽ + DWORD dwXmlSize; //[in/out]lpXmlBufferָڴС,ȡʱͬʱΪȡɹ޸ĻʵʳȣʱʾʵʳȣڴС + BYTE byDataType; //[in]/,0-ʹýṹlpCondBufferЧ,1-ʹXMLlpXmlBufferЧ + BYTE byRes[55]; +}NET_DVR_STD_CONTROL, *LPNET_DVR_STD_CONTROL; + +#define MAX_FILE_PATH_LEN 256 //ļ· +typedef struct tagNET_DVR_MIME_UNIT +{ + //ʽ + //Content-Disposition: form-data; name="upload"; filename="C:\Users\test\Desktop\11.txt" + //Content-Type: text/plain + char szContentType[32]; //ӦContent-Type + char szName[MAX_FILE_PATH_LEN]; //Ӧnameֶ + char szFilename[MAX_FILE_PATH_LEN]; //Ӧfilenameֶ + DWORD dwContentLen; //ContentijȣС512K + char* pContent; //ָ + BYTE bySelfRead; // 0-紫ļ 1-ڲȡݣͨszFilename··ʱֶЧȡʱЧ + BYTE byRes[15]; +}NET_DVR_MIME_UNIT, *LPNET_DVR_MIME_UNIT; + +typedef struct tagNET_DVR_MIME_DATA +{ + BYTE byContentType; //ļ 0-Ч, 1-json, 2-bmp + BYTE byRes1[3]; // + void *lpContent; //ļݣָΪգʾļ + DWORD dwContentSize; //ļݴССΪ512k + char sContentID[32]; //ʽContent-IDͷֵISAPIضڵֵһһӦ + BYTE byRes[512]; // +}NET_DVR_MIME_DATA, *LPNET_DVR_MIME_DATA; + +typedef struct tagNET_DVR_XML_CONFIG_INPUT +{ + DWORD dwSize; //ṹС + void* lpRequestUrl; //ַʽ + DWORD dwRequestUrlLen; //ȣַ + void* lpInBuffer; //XMLʽ + DWORD dwInBufferSize; //С + DWORD dwRecvTimeOut; //ճʱʱ䣬λms0ʹĬϳʱ5s + BYTE byForceEncrpt; //ǷǿƼܣ0-1- + BYTE byNumOfMultiPart; //0-ЧֵʾķֶθʱlpInBufferNET_DVR_MIME_UNITṹָ룬ֵṹ + BYTE byMIMEType; //0-Ч1-ʾʹNET_DVR_MIME_UNITṹ壬2-ʾʹNET_DVR_MIME_DATAṹ壬ֶνbyNumOfMultiPartЧʱЧ + BYTE byRes1; + DWORD dwSendTimeOut; //ͳʱʱ䣬λms0ʹĬϳʱ5s + BYTE byRes[24]; +}NET_DVR_XML_CONFIG_INPUT, *LPNET_DVR_XML_CONFIG_INPUT; + +typedef struct tagNET_DVR_XML_CONFIG_OUTPUT +{ + DWORD dwSize; //ṹС + void* lpOutBuffer; //XMLʽ + DWORD dwOutBufferSize; //С(ڴС) + DWORD dwReturnedXMLSize; //ʵXMLݴС + void* lpStatusBuffer; //ص״̬(XMLʽ),ȡɹʱḳֵ,Ҫ,NULL + DWORD dwStatusSize; //״̬С(ڴС) +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + void* lpDataBuffer; //byNumOfMultiPart>0ʱϱĽṹʹã͸ݣͨNET_DVR_MIME_UNITdwContentLenƫƷ +#else + void* lpDataBuffer; //byNumOfMultiPart>0ʱϱĽṹʹã͸ݣͨNET_DVR_MIME_UNITdwContentLenƫƷ + BYTE byRes2[4]; +#endif + BYTE byNumOfMultiPart; //0-Ч ֵʾķֶθʱlpInBufferNET_DVR_MIME_UNITṹָ룬ֵṹ + BYTE byRes[23]; +}NET_DVR_XML_CONFIG_OUTPUT, *LPNET_DVR_XML_CONFIG_OUTPUT; + +typedef struct tagNET_DVR_FORM_DATA_CFG +{ + DWORD dwSize; //ṹС + void *lpBuffer; //ݻָNET_DVR_MIME_DATAṹ + DWORD dwBufferSize; //ݻС + BYTE byNumOfMultiPart; // 0-ЧֵʾķֶθʱlpBufferNET_DVR_MIME_DATAṹָ룬ֵṹΪ3 + BYTE byRes[67]; // +}NET_DVR_FORM_DATA_CFG, *LPNET_DVR_FORM_DATA_CFG; + +typedef struct tagNET_DVR_JSON_DATA_CFG +{ + DWORD dwSize; //ṹС + void *lpJsonData; //JSON + DWORD dwJsonDataSize; //JSONĴС + void *lpPicData; //ͼƬ + DWORD dwPicDataSize; //ͼƬݴС + DWORD dwInfraredFacePicSize; //ͼƬݴС0ʱͼƬ(JSONΪResponseStatusJSONʱֶ壻Inbound DataJSONûinfraredFaceURLʱֶҪ϶ͼƬݣ + void* lpInfraredFacePicBuffer; //ͼƬݻ + BYTE byRes[248]; // +}NET_DVR_JSON_DATA_CFG, *LPNET_DVR_JSON_DATA_CFG; + +typedef struct tagNET_DVR_SIMPLE_DAYTIME +{ + BYTE byHour; //ʱ + BYTE byMinute; // + BYTE bySecond; // + BYTE byRes; +}NET_DVR_SIMPLE_DAYTIME, *LPNET_DVR_SIMPLE_DAYTIME; + +typedef struct tagNET_DVR_TIME_SEGMENT +{ + NET_DVR_SIMPLE_DAYTIME struBeginTime; //ʼʱ + NET_DVR_SIMPLE_DAYTIME struEndTime; //ʱ +}NET_DVR_TIME_SEGMENT, *LPNET_DVR_TIME_SEGMENT; + +typedef struct tagNET_DVR_SINGLE_PLAN_SEGMENT +{ + BYTE byEnable; //Ƿʹܣ1-ʹܣ0-ʹ + BYTE byDoorStatus; //״̬ģʽݿģʽ0-Ч1-ߣ2-״̬ɣ3-״̬ã4-ͨ״̬״̬ƻʹã + BYTE byVerifyMode; //֤ʽ0-Ч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-,29-++,30-ˢ+ˢ31-ָƻ룬32-Ĥ33-ָƻˢĤ34-ˢĤ + BYTE byRes[5]; + NET_DVR_TIME_SEGMENT struTimeSegment; //ʱβ +}NET_DVR_SINGLE_PLAN_SEGMENT, *LPNET_DVR_SINGLE_PLAN_SEGMENT; + +typedef struct tagNET_DVR_WEEK_PLAN_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿʹܣ1-ʹܣ0-ʹ + BYTE byRes1[3]; + NET_DVR_SINGLE_PLAN_SEGMENT struPlanCfg[MAX_DAYS][MAX_TIMESEGMENT_V30]; //ܼƻ + BYTE byRes2[16]; +}NET_DVR_WEEK_PLAN_CFG, *LPNET_DVR_WEEK_PLAN_CFG; + +typedef struct tagNET_DVR_HOLIDAY_PLAN_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿʹܣ1-ʹܣ0-ʹ + BYTE byRes1[3]; + NET_DVR_DATE struBeginDate; //տʼ + NET_DVR_DATE struEndDate; //ս + NET_DVR_SINGLE_PLAN_SEGMENT struPlanCfg[MAX_TIMESEGMENT_V30]; //ʱβ + BYTE byRes2[16]; +}NET_DVR_HOLIDAY_PLAN_CFG, *LPNET_DVR_HOLIDAY_PLAN_CFG; + +typedef struct tagNET_DVR_HOLIDAY_PLAN_COND +{ + DWORD dwSize; + DWORD dwHolidayPlanNumber; //ռƻ + WORD wLocalControllerID; //͵ؿ[1,64] + BYTE byRes[106]; +}NET_DVR_HOLIDAY_PLAN_COND, *LPNET_DVR_HOLIDAY_PLAN_COND; + +typedef struct tagNET_DVR_WEEK_PLAN_COND +{ + DWORD dwSize; + DWORD dwWeekPlanNumber; //ܼƻ + WORD wLocalControllerID; //͵ؿ[1,64] + BYTE byRes[106]; +}NET_DVR_WEEK_PLAN_COND, *LPNET_DVR_WEEK_PLAN_COND; + +typedef struct tagNET_DVR_HOLIDAY_GROUP_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿã1-ã0- + BYTE byRes1[3]; + BYTE byGroupName[HOLIDAY_GROUP_NAME_LEN]; // + DWORD dwHolidayPlanNo[MAX_HOLIDAY_PLAN_NUM]; //ռƻţǰ䣬0Ч + BYTE byRes2[32]; +}NET_DVR_HOLIDAY_GROUP_CFG, *LPNET_DVR_HOLIDAY_GROUP_CFG; + +typedef struct tagNET_DVR_HOLIDAY_GROUP_COND +{ + DWORD dwSize; + DWORD dwHolidayGroupNumber; // + WORD wLocalControllerID; //͵ؿ[1,64] + BYTE byRes[106]; +}NET_DVR_HOLIDAY_GROUP_COND, *LPNET_DVR_HOLIDAY_GROUP_COND; + +typedef struct tagNET_DVR_PLAN_TEMPLATE +{ + DWORD dwSize; + BYTE byEnable; //Ƿã1-ã0- + BYTE byRes1[3]; + BYTE byTemplateName[TEMPLATE_NAME_LEN]; //ģ + DWORD dwWeekPlanNo; //ܼƻţ0ΪЧ + DWORD dwHolidayGroupNo[MAX_HOLIDAY_GROUP_NUM]; //ţǰ䣬0Ч + BYTE byRes2[32]; +}NET_DVR_PLAN_TEMPLATE, *LPNET_DVR_PLAN_TEMPLATE; + +typedef struct tagNET_DVR_PLAN_TEMPLATE_COND +{ + DWORD dwSize; + DWORD dwPlanTemplateNumber; //ƻģţ1ʼֵŽȡ + WORD wLocalControllerID; //͵ؿ[1,64]0Ч + BYTE byRes[106]; +}NET_DVR_PLAN_TEMPLATE_COND, *LPNET_DVR_PLAN_TEMPLATE_COND; + +typedef struct tagNET_DVR_DOOR_STATUS_PLAN +{ + DWORD dwSize; + DWORD dwTemplateNo; //ƻģţΪ0ʾȡָĬ״̬ͨ״̬ + BYTE byRes[64]; +}NET_DVR_DOOR_STATUS_PLAN, *LPNET_DVR_DOOR_STATUS_PLAN; + +typedef struct tagNET_DVR_CARD_READER_PLAN +{ + DWORD dwSize; + DWORD dwTemplateNo; //ƻģţΪ0ʾȡָĬ״̬ˢţ + BYTE byRes[64]; +}NET_DVR_CARD_READER_PLAN, *LPNET_DVR_CARD_READER_PLAN; + +typedef struct _tagNET_DVR_GROUP_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿã0-ã1- + BYTE byRes1[3]; + NET_DVR_VALID_PERIOD_CFG struValidPeriodCfg; //ȺЧڲ + BYTE byGroupName[GROUP_NAME_LEN]; //Ⱥ + BYTE byRes2[32]; +}NET_DVR_GROUP_CFG, *LPNET_DVR_GROUP_CFG; + +typedef struct tagNET_DVR_GROUP_COMBINATION_INFO +{ + BYTE byEnable; //ǷøȺ + BYTE byMemberNum; //ˢԱ + BYTE bySequenceNo; //Ⱥˢ + BYTE byRes; + DWORD dwGroupNo; //Ⱥ,0xffffffffʾԶ̿ţ0xfffffffeʾ +}NET_DVR_GROUP_COMBINATION_INFO, *LPNET_DVR_GROUP_COMBINATION_INFO; + +typedef struct tagNET_DVR_MULTI_CARD_GROUP_CFG +{ + BYTE byEnable; //Ƿøöؿ0-ã1- + BYTE byEnableOfflineVerifyMode; //Ƿʱ֤ʽԶ̿ţ + BYTE byRes1[2]; + DWORD dwTemplateNo; //öؿܵļƻģ + NET_DVR_GROUP_COMBINATION_INFO struGroupCombination[GROUP_COMBINATION_NUM]; //Ⱥϲ +}NET_DVR_MULTI_CARD_GROUP_CFG, *LPNET_DVR_MULTI_CARD_GROUP_CFG; + +typedef struct tagNET_DVR_MULTI_CARD_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿöؿܣ0-ã1- + BYTE bySwipeIntervalTimeout; //ˢʱʱ䣬1-255sĬ10s + BYTE byRes1[2]; + NET_DVR_MULTI_CARD_GROUP_CFG struGroupCfg[MULTI_CARD_GROUP_NUM]; //Ⱥˢ + BYTE byRes2[32]; +}NET_DVR_MULTI_CARD_CFG, *LPNET_DVR_MULTI_CARD_CFG; + +typedef struct tagNET_DVR_GROUP_COMBINATION_INFO_V50 +{ + BYTE byEnable; //ǷøȺ + BYTE byMemberNum; //ˢԱ + BYTE bySequenceNo; //Ⱥˢ + BYTE byRes; + DWORD dwGroupNo; //Ⱥ,0xffffffffʾԶ̿ţ0xfffffffeʾ +}NET_DVR_GROUP_COMBINATION_INFO_V50, *LPNET_DVR_GROUP_COMBINATION_INFO_V50; + +typedef struct tagNET_DVR_MULTI_CARD_GROUP_CFG_V50 +{ + BYTE byEnable; //Ƿøöؿ0-ã1- + BYTE byEnableOfflineVerifyMode; //Ƿʱ֤ʽԶ̿ţ1-ã0- + BYTE byRes1[2]; + DWORD dwTemplateNo; //öؿܵļƻģ + NET_DVR_GROUP_COMBINATION_INFO_V50 struGroupCombination[GROUP_COMBINATION_NUM]; //Ⱥϲ +}NET_DVR_MULTI_CARD_GROUP_CFG_V50, *LPNET_DVR_MULTI_CARD_GROUP_CFG_V50; + +typedef struct tagNET_DVR_MULTI_CARD_CFG_V50 +{ + DWORD dwSize; + BYTE byEnable; //Ƿöؿܣ0-ã1- + BYTE bySwipeIntervalTimeout; //ˢʱʱ䣬1-255sĬ10s + BYTE byRes1[2]; + NET_DVR_MULTI_CARD_GROUP_CFG_V50 struGroupCfg[NET_SDK_MULTI_CARD_GROUP_NUM_20]; //Ⱥˢ + BYTE byRes2[32]; +}NET_DVR_MULTI_CARD_CFG_V50, *LPNET_DVR_MULTI_CARD_CFG_V50; + +//2014-12-03 T1״̬ṹ +typedef struct +{ + DWORD dwSize;//ṹС + WORD wPort; //˿ں + //(豸ͨ˿ڿƣ˿ں豸˹̶ϲ㲻ãʼsocketӣT1ݣXMLʽ) + //0- ر(ر豸̣߳ͷŶ˿)1- (豸ڲ߳) + BYTE byPortState; + BYTE byRes[61]; // +}NET_DVR_T1TEST_PARAMCFG,*LPNET_DVR_T1TEST_PARAMCFG; + +#define CARD_PARAM_CARD_VALID 0x00000001 //ǷЧ +#define CARD_PARAM_VALID 0x00000002 //Чڲ +#define CARD_PARAM_CARD_TYPE 0x00000004 //Ͳ +#define CARD_PARAM_DOOR_RIGHT 0x00000008 //Ȩ޲ +#define CARD_PARAM_LEADER_CARD 0x00000010 //׿ +#define CARD_PARAM_SWIPE_NUM 0x00000020 //ˢ +#define CARD_PARAM_GROUP 0x00000040 //Ⱥ +#define CARD_PARAM_PASSWORD 0x00000080 // +#define CARD_PARAM_RIGHT_PLAN 0x00000100 //Ȩ޼ƻ +#define CARD_PARAM_SWIPED_NUM 0x00000200 //ˢ +#define CARD_PARAM_EMPLOYEE_NO 0x00000400 // +#define CARD_PARAM_NAME 0x00000800 // +#define CARD_PARAM_DEPARTMENT_NO 0x00001000 //ű +#define CARD_SCHEDULE_PLAN_NO 0x00002000 //Űƻ +#define CARD_SCHEDULE_PLAN_TYPE 0x00004000 //Űƻ +#define CARD_ROOM_NUMBER 0x00008000 // +#define CARD_SIM_NO 0x00010000 //SIMţֻţ +#define CARD_FLOOR_NUMBER 0x00020000 //¥ +#define CARD_USER_TYPE 0x00040000 //û + +typedef struct tagNET_DVR_ANTI_SNEAK_CFG +{ + DWORD dwSize; + BYTE byEnable; //ʹܷDZعܣ1-ʹܣ0-ʹ + BYTE byRes1[3]; + DWORD dwStartCardReaderNo; //DZʼ + BYTE byRes2[64]; +}NET_DVR_ANTI_SNEAK_CFG, *LPNET_DVR_ANTI_SNEAK_CFG; + +typedef struct tagNET_DVR_CARD_READER_ANTI_SNEAK_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿ뷴DZ·1-룬0- + BYTE byRes1[3]; + DWORD dwFollowUpCardReader[MAX_SNEAK_PATH_NODE]; //ţΪ0ʾעʼ + BYTE byRes2[32]; +}NET_DVR_CARD_READER_ANTI_SNEAK_CFG, *LPNET_DVR_CARD_READER_ANTI_SNEAK_CFG; + +typedef struct tagNET_DVR_PHONE_DOOR_RIGHT_CFG +{ + DWORD dwSize; + BYTE byOpenRight[MAX_DOOR_NUM_256]; //ʾ,ǷпȨޣ-Ȩޣ-Ȩ + BYTE byCloseRight[MAX_DOOR_NUM_256]; //ʾ,ǷйȨޣ-Ȩޣ-Ȩ + BYTE byNormalOpenRight[MAX_DOOR_NUM_256]; //ʾ,ǷгȨޣ-Ȩޣ-Ȩ + BYTE byNormalCloseRight[MAX_DOOR_NUM_256]; //ʾ,ǷгȨޣ-Ȩޣ-Ȩ + BYTE byArmRight[MAX_ALARMHOST_ALARMIN_NUM]; //ʾ,ǷвȨޣ-Ȩޣ-Ȩ + BYTE byDisarmRight[MAX_ALARMHOST_ALARMIN_NUM]; //ʾ,ǷгȨޣ-Ȩޣ-Ȩ + BYTE byRes[256]; // +}NET_DVR_PHONE_DOOR_RIGHT_CFG,*LPNET_DVR_PHONE_DOOR_RIGHT_CFG; + +typedef struct tagNET_DVR_MULTI_DOOR_INTERLOCK_CFG +{ + DWORD dwSize; + BYTE byEnable; //ǷöŻܣ1-ã0- + BYTE byRes1[3]; + DWORD dwMultiDoorGroup[MAX_MULTI_DOOR_INTERLOCK_GROUP][MAX_INTER_LOCK_DOOR_NUM]; //ŻȡֵΪű + BYTE byRes2[64]; +}NET_DVR_MULTI_DOOR_INTERLOCK_CFG, *LPNET_DVR_MULTI_DOOR_INTERLOCK_CFG; + +typedef struct tagNET_DVR_CARD_READER_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿʹܣ1-ʹܣ0-ʹ + BYTE byCardReaderType; //ͣ1-DS-K110XM/MK/C/CK2-DS-K192AM/AMP3-DS-K192BM/BMP4-DS-K182AM/AMP5-DS-K182BM/BMP6-DS-K182AMF/ACF7-Τ485,8- DS-K1101M/MK9- DS-K1101C/CK10- DS-K1102M/MK/M-A + //11- DS-K1102C/CK12- DS-K1103M/MK13- DS-K1103C/CK14- DS-K1104M/MK15- DS-K1104C/CK16- DS-K1102S/SK/S-A17- DS-K1102G/GK18- DS-K1100S-B19- DS-K1102EM/EMK20- DS-K1102E/EK + //21- DS-K1200EF22- DS-K1200MF23- DS-K1200CF24- DS-K1300EF25- DS-K1300MF26- DS-K1300CF27- DS-K1105E28- DS-K1105M29- DS-K1105C30- DS-K182AMF31- DS-K196AMF32-DS-K194AMP + //33-DS-K1T200EF/EF-C/MF/MF-C/CF/CF-C,34-DS-K1T300EF/EF-C/MF/MF-C/CF/CF-C35-DS-K1T105E/E-C/M/M-C/C/C-C36-DS-K1T803F/MF/SF/EF37-DS-K1A801F/MF/SF/EF,38-DS-K1107M/MK,39-DS-K1107E/EK, + //40-DS-K1107S/SK,41-DS-K1108M/MK,42-DS-K1108E/EK,43-DS-K1108S/SK,44-DS-K1200F,45-DS-K1S110-I,46-DS-K1T200M-PG/PGC,47-DS-K1T200M-PZ/PZC,48-DS-K1109H + BYTE byOkLedPolarity; //OK LEDԣ0-1- + BYTE byErrorLedPolarity; //Error LEDԣ0-1- + BYTE byBuzzerPolarity; //ԣ0-1- + BYTE bySwipeInterval; //ظˢʱ䣬λ + BYTE byPressTimeout; //ʱʱ䣬λ + BYTE byEnableFailAlarm; //Ƿöʧܳα0-ã1- + BYTE byMaxReadCardFailNum; //ʧܴ + BYTE byEnableTamperCheck; //Ƿַ֧⣬0-disable 1-enable + BYTE byOfflineCheckTime; //߼ʱ λ + BYTE byFingerPrintCheckLevel; //ָʶȼ1-1/10ʣ2-1/100ʣ3-1/1000ʣ4-1/10000ʣ5-1/100000ʣ6-1/1000000ʣ7-1/10000000ʣ8-1/100000000ʣ9-3/100ʣ10-3/1000ʣ11-3/10000ʣ12-3/100000ʣ13-3/1000000ʣ14-3/10000000ʣ15-3/100000000ʣ16-Automatic Normal,17-Automatic Secure,18-Automatic More Secure + BYTE byUseLocalController; //ֻǷھ͵ؿϣ0-1- + BYTE byRes1; + WORD wLocalControllerID; //ֻ͵ؿţ1-64,0δע + WORD wLocalControllerReaderID; //ֻ͵ؿĶID0δע + WORD wCardReaderChannel; //ֻͨͨţ0Τߣ1-RS485A,2-RS485B + BYTE byRes[16]; +}NET_DVR_CARD_READER_CFG, *LPNET_DVR_CARD_READER_CFG; + +typedef struct tagNET_DVR_CARD_READER_CFG_V50 +{ + DWORD dwSize; + BYTE byEnable; //Ƿʹܣ1-ʹܣ0-ʹ + BYTE byCardReaderType; //ͣ1-DS-K110XM/MK/C/CK2-DS-K192AM/AMP3-DS-K192BM/BMP4-DS-K182AM/AMP5-DS-K182BM/BMP6-DS-K182AMF/ACF7-Τ485ߣ8- DS-K1101M/MK9- DS-K1101C/CK10- DS-K1102M/MK/M-A11- DS-K1102C/CK12- DS-K1103M/MK13- DS-K1103C/CK14- DS-K1104M/MK15- DS-K1104C/CK16- DS-K1102S/SK/S-A17- DS-K1102G/GK18- DS-K1100S-B19- DS-K1102EM/EMK20- DS-K1102E/EK21- DS-K1200EF22- DS-K1200MF23- DS-K1200CF24- DS-K1300EF25- DS-K1300MF26- DS-K1300CF27- DS-K1105E28- DS-K1105M29- DS-K1105C30- DS-K182AMF31- DS-K196AMF32-DS-K194AMP33-DS-K1T200EF/EF-C/MF/MF-C/CF/CF-C,34-DS-K1T300EF/EF-C/MF/MF-C/CF/CF-C35-DS-K1T105E/E-C/M/M-C/C/C-C,36-DS-K1T803F/F-M/F-S/F-E,37-DS-K1A801F/F-M/F-S/F-E,38-DS-K1107M/MK,39-DS-K1107E/EK,40-DS-K1107S/SK,41-DS-K1108M/MK,42-DS-K1108E/EK,43-DS-K1108S/SK,44-DS-K1200F,45-DS-K1S110-I,46-DS-K1T200M-PG/PGC,47-DS-K1T200M-PZ/PZC,48-DS-K1109H + BYTE byOkLedPolarity; //OK LEDԣ0-1- + BYTE byErrorLedPolarity; //Error LEDԣ0-1- + BYTE byBuzzerPolarity; //ԣ0-1- + BYTE bySwipeInterval; //ظˢʱ䣬λ + BYTE byPressTimeout; //ʱʱ䣬λ + BYTE byEnableFailAlarm; //Ƿöʧܳα0-ã1- + BYTE byMaxReadCardFailNum; //ʧܴ + BYTE byEnableTamperCheck; //Ƿַ֧⣬0-disable 1-enable + BYTE byOfflineCheckTime; //߼ʱ λ + BYTE byFingerPrintCheckLevel; //ָʶȼ1-1/10ʣ2-1/100ʣ3-1/1000ʣ4-1/10000ʣ5-1/100000ʣ6-1/1000000ʣ7-1/10000000ʣ8-1/100000000ʣ9-3/100ʣ10-3/1000ʣ11-3/10000ʣ12-3/100000ʣ13-3/1000000ʣ14-3/10000000ʣ15-3/100000000ʣ16-Automatic Normal,17-Automatic Secure,18-Automatic More SecureĿǰŽ֧֣ + BYTE byUseLocalController; //ֻǷھ͵ؿϣ0-1- + BYTE byRes1; + WORD wLocalControllerID; //ֻ͵ؿ, byUseLocalController=1ʱЧ1-64,0δע + WORD wLocalControllerReaderID; //ֻ͵ؿĶIDbyUseLocalController=1ʱЧ0δע + WORD wCardReaderChannel; //ֻͨͨţbyUseLocalController=1ʱЧ0Τߣ1-RS485A,2-RS485B + BYTE byFingerPrintImageQuality; //ָͼ0-Ч1-(V1)2-е(V1)3-(V1)4-(V1)5-(V2)6-е(V2)7-(V2)8-(V2) + BYTE byFingerPrintContrastTimeOut; //ָƶԱȳʱʱ䣬0-ЧΧ1-20:1s-20s0xff-޴ + BYTE byFingerPrintRecogizeInterval; //ָʶ0-ЧΧ1-10:1s-10s0xff-ӳ + BYTE byFingerPrintMatchFastMode; //ָƥģʽ0-ЧΧ1-5:ģʽ1-ģʽ50xff-Զ + BYTE byFingerPrintModuleSensitive; //ָģȣ0-ЧΧ1-8ȼ1-ȼ8 + BYTE byFingerPrintModuleLightCondition; //ָģ0-Ч1-⣬2- + BYTE byFaceMatchThresholdN; //ȶԷֵΧ0-100 + BYTE byFaceQuality; //Χ0-100 + BYTE byFaceRecogizeTimeOut; //ʶʱʱ䣬Χ1-201s-20s0xff-޴ + BYTE byFaceRecogizeInterval; //ʶ0-ЧΧ1-101s-10s0xff-ӳ + WORD wCardReaderFunction; //ֻ࣬λʾ1λ-ָƣڶλ-λ-ָλ-Ĥ + BYTE byCardReaderDescription[CARD_READER_DESCRIPTION]; // + WORD wFaceImageSensitometry; //ֻͼعȣΧ0-65535 + BYTE byLivingBodyDetect; //˼⣬0-Ч1-ã2- + BYTE byFaceMatchThreshold1; //1:1ƥ䷧ֵΧ0-100 + WORD wBuzzerTime; //ʱ䣬Χ0s-5999s0- + BYTE byFaceMatch1SecurityLevel; //1:1ʶȫȼ0-Ч1-һ㣬2-ǿ3-ǿ + BYTE byFaceMatchNSecurityLevel; //1:Nʶȫȼ0-Ч1-һ㣬2-ǿ3-ǿ + BYTE byEnvirMode;//ʶ𻷾ģʽ0-Ч1-ڣ2- + BYTE byLiveDetLevelSet;//ֵȼã0-Ч1-ͣ2-У3-ߣ + BYTE byLiveDetAntiAttackCntLimit;// 0-Ч1-255Σͻˡ豸ͳһƣƣ + BYTE byEnableLiveDetAntiAttack;//ʹܣ0-Ч1-ã2- + BYTE bySupportDelFPByID;//ֻǷְָ֧IDɾָƣ0-Ч1-֧֣2-֧ + BYTE byFaceContrastMotionDetLevel;//ȶʱƶ⼶0-Ч1-ͣ2-У3-ߣ0xff- + BYTE byDayFaceMatchThresholdN; //1:Nƥ䷧ֵΧ0-100 + BYTE byNightFaceMatchThresholdN; //ҹ1:Nƥ䷧ֵΧ0-100 + BYTE byFaceRecogizeEnable; //ʶʹܣ0-Ч1-2-ر + BYTE byBlockListMatchThreshold; //ֹƥ䷧ֵΧ0-100 + BYTE byRes3; + BYTE byDefaultVerifyMode; //ֻĬ֤ʽĬϣ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-ˢָƻ + DWORD dwFingerPrintCapacity;//ָֻ + DWORD dwFingerPrintNum;//ֻѴָ + BYTE byEnableFingerPrintNum;//ָֻʹܣ0-ʹܣ1-ʹܣֻеֶΪ1-ʹʱdwFingerPrintCapacitydwFingerPrintNumЧ + BYTE byEnableReverseCardNo; //ŷתʹ 0-ʹ1-ʹ + BYTE byRes2[2]; + DWORD dwIndependSwipeIntervals;//Ա֤ÿ˵ظ֤ + BYTE byRes[224]; +}NET_DVR_CARD_READER_CFG_V50, *LPNET_DVR_CARD_READER_CFG_V50; + +typedef struct tagNET_DVR_FAILED_FACE_COND +{ + DWORD dwSize; + BYTE byRes[128]; // +}NET_DVR_FAILED_FACE_COND, *LPNET_DVR_FAILED_FACE_COND; + +typedef struct tagNET_DVR_FAILED_FACE_INFO +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + BYTE byErrorCode; //ģʧϸ,0-Ч1-ȡļʧܣ2-ļʧܣ3-ڴ治㣬4-עʧܣ5-ۼ̫С6-Ȩ޲ + BYTE byRes1[3]; + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID + BYTE byRes[92]; +}NET_DVR_FAILED_FACE_INFO, *LPNET_DVR_FAILED_FACE_INFO; + +typedef struct tagNET_DVR_FACE_PARAM_COND +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀţʱòɲã + BYTE byEnableCardReader[MAX_CARD_READER_NUM_512]; //ĶǷЧ0-Ч1-Чʱòɲã + DWORD dwFaceNum; //ûȡȡʱΪ0xffffffffʾȡϢ + BYTE byFaceID; //ţЧֵΧΪ1-2 0xffʾÿʱòɲã + BYTE byRes[127]; // +}NET_DVR_FACE_PARAM_COND, *LPNET_DVR_FACE_PARAM_COND; + +typedef struct tagNET_DVR_FACE_PARAM_CFG +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + DWORD dwFaceLen; //ݳ豸˷صļܺ + char* pFaceBuffer; //ָ + BYTE byEnableCardReader[MAX_CARD_READER_NUM_512]; //Ҫ·Ķʾӵλλʾ0-·ö1-·ö + BYTE byFaceID; //ţЧֵΧΪ1-2 + BYTE byFaceDataType; //ͣ0-ģ壨Ĭϣ1-ͼƬ + BYTE byRes[126]; +}NET_DVR_FACE_PARAM_CFG, *LPNET_DVR_FACE_PARAM_CFG; + +typedef struct tagNET_DVR_FACE_PARAM_STATUS +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + BYTE byCardReaderRecvStatus[MAX_CARD_READER_NUM_512]; //״ֽ̬ڱʾ0-ʧܣ1-ɹ2-Ի3-ڴ()4-Ѵڸ5-ǷID + //,6-㷨ģʧܣ7-δ·Ȩޣ8-δ壨9-ۼСС10-ͼƬݳС1KB11-ͼƬʽpng/jpg/bmp,12-ͼƬޣ13-ͼƬޣ14-ͼƬϢУʧܣ15-ͼƬʧܣ16-ʧܣ17-ʧ + BYTE byErrorMsg[ERROR_MSG_LEN]; //·ϢbyCardReaderRecvStatusΪ4ʱʾѴӦĿ + DWORD dwCardReaderNo; //ƶţ·󷵻 + BYTE byTotalStatus; //·ܵ״̬0-ǰδж1-ж(ָŽеĶ·ˣܳɹ) + BYTE byFaceID; //ţЧֵΧΪ1-2 + BYTE byRes[130]; +}NET_DVR_FACE_PARAM_STATUS, *LPNET_DVR_FACE_PARAM_STATUS; + +typedef struct tagNET_DVR_FACE_PARAM_BYCARD +{ + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + BYTE byEnableCardReader[MAX_CARD_READER_NUM_512]; //ĶϢʾ + BYTE byFaceID[MAX_FACE_NUM]; //Ҫɾţ±ֵ꣬ʾ0-ɾ1-ɾ + BYTE byRes1[42]; // +}NET_DVR_FACE_PARAM_BYCARD, *LPNET_DVR_FACE_PARAM_BYCARD; + +typedef struct tagNET_DVR_FACE_PARAM_BYREADER +{ + DWORD dwCardReaderNo; //ֵʾ + BYTE byClearAllCard; //ǷɾпϢ0-ɾϢ1-ɾпϢ + BYTE byRes1[3]; // + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + BYTE byRes[548]; // +}NET_DVR_FACE_PARAM_BYREADER, *LPNET_DVR_FACE_PARAM_BYREADER; + +typedef union tagNET_DVR_DEL_FACE_PARAM_MODE +{ + BYTE uLen[588]; //峤 + NET_DVR_FACE_PARAM_BYCARD struByCard; //ŵķʽɾ + NET_DVR_FACE_PARAM_BYREADER struByReader; //ķʽɾ +}NET_DVR_DEL_FACE_PARAM_MODE, *LPNET_DVR_DEL_FACE_PARAM_MODE; + +typedef struct tagNET_DVR_FACE_PARAM_CTRL +{ + DWORD dwSize; + BYTE byMode; //ɾʽ0-ŷʽɾ1-ɾ + BYTE byRes1[3]; // + NET_DVR_DEL_FACE_PARAM_MODE struProcessMode; //ʽ + BYTE byRes[64]; // +}NET_DVR_FACE_PARAM_CTRL, *LPNET_DVR_FACE_PARAM_CTRL; + +typedef struct tagNET_DVR_LOCAL_CONTROLLER_STATUS_COND +{ + DWORD dwSize; + WORD wLocalControllerID; //͵ؿ(ֿ),Ϊ0ʾ + BYTE byRes[306]; +}NET_DVR_LOCAL_CONTROLLER_STATUS_COND, *LPNET_DVR_LOCAL_CONTROLLER_STATUS_COND; + +typedef struct tagNET_DVR_LOCAL_CONTROLLER_STATUS +{ + DWORD dwSize; + WORD wLocalControllerID; //͵ؿ(ֿ) + BYTE byLocalAntiDismantleStatus; //͵ؿ״̬0-رգ1- + BYTE byPowerSupplyStatus; //豸״̬1-繩磬2-ع + WORD wBatteryVoltage; //صѹֵʵֵ10λ + BYTE byBatteryLowVoltage; //Ƿڵѹ״̬0-1- + BYTE byFireAlarm; //0-1-̽ӱ2-Ͽ + BYTE bySerialNumber[SERIALNO_LEN]; //豸к + BYTE byMagneticStatus[MAX_DOOR_NUM];// Ŵ״̬0رգ12ƻ·3ƻ·4쳣 + BYTE byDoorLockStatus[MAX_DOOR_NUM]; //״̬0رգ12ƻ·3ƻ·4쳣 + BYTE byCardReaderOnlineStatus[MAX_CARD_READER_NUM]; //״̬0-ߣ1- + WORD wLocalControllerStatus; //ֻ͵ؿ״̬(ֿ״̬)0-ߣ1-ߣ2-·1ϵRS48513-·1ϵRS48524-·2ϵRS48515-·2ϵRS48526-·3ϵRS48517-·3ϵRS48528-·4ϵRS48519-·4ϵRS4852ֻ + BYTE byRes2[122]; +}NET_DVR_LOCAL_CONTROLLER_STATUS, *LPNET_DVR_LOCAL_CONTROLLER_STATUS; + +typedef struct tagNET_DVR_ONLINE_LOCAL_CONTROLLER_CFG +{ + DWORD dwSize; + BYTE byLocalControllerName[LOCAL_CONTROLLER_NAME_LEN]; //͵ؿ + WORD wLocalControllerID; //͵ؿ + WORD wDevPort; // 豸˿ں + NET_DVR_IPADDR struDevIP; // 豸IPַ + NET_DVR_IPADDR struSubnetMask; // 豸 + NET_DVR_IPADDR struGateway; // 豸 + BYTE bySearchProgress; //ȣ0ʾδʼ100ʾͬ + BYTE byEffectData;//ǷΪЧ,0ʾЧ1ʾ豸ֻȣΪ + BYTE byRes[302]; +}NET_DVR_ONLINE_LOCAL_CONTROLLER_CFG, *LPNET_DVR_ONLINE_LOCAL_CONTROLLER_CFG; + +typedef struct tagNET_DVR_ACS_WORK_STATUS +{ + DWORD dwSize; + BYTE byDoorLockStatus[MAX_DOOR_NUM]; //״̬0-أ1- + BYTE byDoorStatus[MAX_DOOR_NUM]; //״̬1-ߣ2-״̬3-״̬4-ͨ״̬ + BYTE byMagneticStatus[MAX_DOOR_NUM]; //Ŵ״̬0-պϣ1- + BYTE byCaseStatus[MAX_CASE_SENSOR_NUM]; ////¼״̬0-룬1- + WORD wBatteryVoltage; //صѹֵʵֵ10λ + BYTE byBatteryLowVoltage; //Ƿڵѹ״̬0-1- + BYTE byPowerSupplyStatus; //豸״̬1-繩磬2-ع + BYTE byMultiDoorInterlockStatus; //Ż״̬0-رգ1- + BYTE byAntiSneakStatus; //DZ״̬0-رգ1- + BYTE byHostAntiDismantleStatus; //״̬0-رգ1- + BYTE byIndicatorLightStatus; //ָʾ״̬0-ߣ1- + BYTE byCardReaderOnlineStatus[MAX_CARD_READER_NUM]; //״̬0-ߣ1- + BYTE byCardReaderAntiDismantleStatus[MAX_CARD_READER_NUM]; //״̬0-رգ1- + BYTE byCardReaderVerifyMode[MAX_CARD_READER_NUM]; //ǰ֤ʽ1-ˢ2-ˢ+룬3-ˢ4-ˢ + BYTE bySetupAlarmStatus[MAX_ALARMHOST_ALARMIN_NUM];//ڲ״̬0-Ӧڴڳ״̬1-Ӧڴڲ״̬ + BYTE byAlarmInStatus[MAX_ALARMHOST_ALARMIN_NUM]; //ڱ״̬0-Ӧڵǰޱ1-Ӧڵǰб + BYTE byAlarmOutStatus[MAX_ALARMHOST_ALARMOUT_NUM]; //״̬0-Ӧޱ1-Ӧб + DWORD dwCardNum; //ӵĿ + BYTE byRes2[32]; +}NET_DVR_ACS_WORK_STATUS, *LPNET_DVR_ACS_WORK_STATUS; + +typedef struct tagNET_DVR_ACS_WORK_STATUS_V50 +{ + DWORD dwSize; + BYTE byDoorLockStatus[MAX_DOOR_NUM_256]; //״̬(̵״̬)0-أ1-2-·3-·4-쳣 + BYTE byDoorStatus[MAX_DOOR_NUM_256]; //״̬(¥״̬)1-ߣ2-״̬()3-״̬()4-ͨ״̬(ܿ) + BYTE byMagneticStatus[MAX_DOOR_NUM_256]; //Ŵ״̬0-أ1-2-·3-·4-쳣 + BYTE byCaseStatus[MAX_CASE_SENSOR_NUM]; //¼״̬0-룬1- + WORD wBatteryVoltage; //صѹֵʵֵ10λ + BYTE byBatteryLowVoltage; //Ƿڵѹ״̬0-1- + BYTE byPowerSupplyStatus; //豸״̬1-繩磬2-ع + BYTE byMultiDoorInterlockStatus; //Ż״̬0-رգ1- + BYTE byAntiSneakStatus; //DZ״̬0-رգ1- + BYTE byHostAntiDismantleStatus; //״̬0-رգ1- + BYTE byIndicatorLightStatus; //ָʾ״̬0-ߣ1- + BYTE byCardReaderOnlineStatus[MAX_CARD_READER_NUM_512]; //״̬0-ߣ1- + BYTE byCardReaderAntiDismantleStatus[MAX_CARD_READER_NUM_512]; //״̬0-رգ1- + BYTE byCardReaderVerifyMode[MAX_CARD_READER_NUM_512]; //ǰ֤ʽ1-ߣ2-ˢ+룬3-ˢ4-ˢ + BYTE bySetupAlarmStatus[MAX_ALARMHOST_ALARMIN_NUM];//ڲ״̬0-Ӧڴڳ״̬1-Ӧڴڲ״̬ + BYTE byAlarmInStatus[MAX_ALARMHOST_ALARMIN_NUM]; //λʾڱ״̬0-Ӧڵǰޱ1-Ӧڵǰб + BYTE byAlarmOutStatus[MAX_ALARMHOST_ALARMOUT_NUM]; //λʾ״̬0-Ӧޱ1-Ӧб + DWORD dwCardNum; //ӵĿ + BYTE byFireAlarmStatus; //״̬ʾ0-1-·2-Ͽ + BYTE byBatteryChargeStatus; //س״̬0-Ч1-У2-δ + BYTE byMasterChannelControllerStatus; //ͨ״̬0-Ч1-ߣ2- + BYTE bySlaveChannelControllerStatus; //ͨ״̬0-Ч1-ߣ2- + BYTE byAntiSneakServerStatus; //DZط״̬0-Ч1-δã2-3-Ͽ + BYTE byRes3[3]; + DWORD dwAllowFaceNum; //ӵͨжϣ + DWORD dwBlockFaceNum; //ӵĽֹͨжϣ + BYTE byRes2[108]; +}NET_DVR_ACS_WORK_STATUS_V50, *LPNET_DVR_ACS_WORK_STATUS_V50; + +typedef struct tagNET_DVR_CASE_SENSOR_CFG +{ + DWORD dwSize; + BYTE byHostBuzzer; //0-1- + BYTE byRes1[3]; + BYTE byCardReaderBuzzer[MAX_CARD_READER_NUM]; //1-0- + BYTE byAssociateAlarmOut[MAX_ALARMHOST_ALARMOUT_NUM]; //ı1-0- + BYTE byDoorOpen[MAX_DOOR_NUM]; //1-NŴ򿪣0-1-򿪣 + BYTE byDoorClose[MAX_DOOR_NUM]; //1-NŹرգ0-1-رգ + BYTE byRes2[64]; +}NET_DVR_CASE_SENSOR_CFG, *LPNET_DVR_CASE_SENSOR_CFG; + +typedef enum _ENUM_UPGRADE_TYPE +{ + ENUM_UPGRADE_DVR = 0, //ͨ豸 + ENUM_UPGRADE_ADAPTER = 1, //DVR + ENUM_UPGRADE_VCALIB = 2, //ܿ + ENUM_UPGRADE_OPTICAL = 3, //˻ + ENUM_UPGRADE_ACS = 4, //Žϵͳ + ENUM_UPGRADE_AUXILIARY_DEV = 5,//豸 + ENUM_UPGRADE_LED = 6, //LEDͿͽտ + ENUM_UPGRADE_INTELLIGENT = 7, //豸 + ENUM_UPGRADE_CUSTOM = 8 //ԶURL ISAPI½Ч +}ENUM_UPGRADE_TYPE; + +typedef struct tagNET_DVR_ACS_EVENT_INFO +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //ţΪ0Ч + BYTE byCardType; //ͣ1-ͨ2-Ⱥ忨3-ֹ4-Ѳ5-вȿ6-7-8-Ϊ0Ч + BYTE byAllowListNo; //,1-8Ϊ0Ч + BYTE byReportChannel; //ϴͨ1-ϴ2-1ϴ3-2ϴΪ0Ч + BYTE byCardReaderKind; //һ࣬0-Ч1-IC2-֤3-ά,4-ָͷ + DWORD dwCardReaderNo; //ţΪ0Ч + DWORD dwDoorNo; //ű(¥)Ϊ0Чӵ豸ΪԱͨ豸ʱ1Ϊ2Ϊ + DWORD dwVerifyNo; //ؿ֤ţΪ0Ч + DWORD dwAlarmInNo; //ţΪ0Ч + DWORD dwAlarmOutNo; //ţΪ0Ч + DWORD dwCaseSensorNo; //¼ + DWORD dwRs485No; //RS485ͨţΪ0Ч + DWORD dwMultiCardGroupNo; //Ⱥ + WORD wAccessChannel; //Աͨ + BYTE byDeviceNo; //豸ţΪ0Ч + BYTE byDistractControlNo;//ֿţΪ0Ч + DWORD dwEmployeeNo; //ţΪ0Ч + WORD wLocalControllerID; //͵ؿţ0-Ž1-64͵ؿ + BYTE byInternetAccess; //ID1-1,2-2,3-1 + BYTE byType; //ͣ0:ʱ,1-24Сʱ,2-ʱ ,3-ڲ4-Կ׷ 5-𾯷 6-ܽ 7-24Сʱ 8-24Сʱ9-24Сʱ𶯷,10-Žŷ11-Žŷ 0xff- + BYTE byMACAddr[MACADDR_LEN]; //ַΪ0Ч + BYTE bySwipeCardType;//ˢͣ0-Ч1-ά + BYTE byMask; //Ƿ֣0-1-δ֪2-֣3- + DWORD dwSerialNo; //¼ˮţΪ0Ч + BYTE byChannelControllerID; //ͨIDΪ0Ч1-ͨ2-ͨ + BYTE byChannelControllerLampID; //ͨưIDΪ0ЧЧΧ1-255 + BYTE byChannelControllerIRAdaptorID; //ͨתӰIDΪ0ЧЧΧ1-255 + BYTE byChannelControllerIREmitterID; //ͨIDΪ0ЧЧΧ1-255 + BYTE byHelmet;//ѡǷȫñ0-1-δ֪2-ȫ, 3-ȫñ + BYTE byRes[3]; +}NET_DVR_ACS_EVENT_INFO, *LPNET_DVR_ACS_EVENT_INFO; + +typedef struct tagNET_DVR_ACS_EVENT_INFO_EXTEND +{ + DWORD dwFrontSerialNo; //¼ˮţΪ0ЧֶΪ0ƽ̨dwSerialNoжǷʧ¼ֶβΪ0ƽ̨ݸֶκdwSerialNoֶιͬжǷʧ¼ҪڽĺdwSerialNo + BYTE byUserType; //Աͣ0-Ч1-ͨˣˣ2-ÿͣ3-ֹˣ4-Ա + BYTE byCurrentVerifyMode; //ǰ֤ʽ0-Ч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-룬29-++룬30-ˢ+ˢ31-ָƻ룬32-Ĥ33-ָƻˢĤ34-ˢĤ + BYTE byCurrentEvent; //ǷΪʵʱ¼0-Ч1-ǣʵʱ¼2-¼ + BYTE byPurePwdVerifyEnable; //豸Ƿִ֧֤ 0-֧֣1-֧ + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID豸˵ʹ˹ţԱIDֶΣbyEmployeeNoһҪݣbyEmployeeNoתΪdwEmployeeNoôֶҲҪݣϲƽ̨ͻ˵ȽbyEmployeeNoֶΣֶΪգٿǽdwEmployeeNoֶΣ + BYTE byAttendanceStatus; //״̬0-δ,1-ϰ࣬2-°࣬3-ʼϢ4-Ϣ5-ʼӰ࣬6-Ӱ + BYTE byStatusValue; //״ֵ̬ + BYTE byRes2[2]; + BYTE byUUID[NET_SDK_UUID_LEN/*36*/]; //UUIDֶνڶԽөʯƽ̨вŻʹã + BYTE byDeviceName[NET_DEV_NAME_LEN]; //豸к + BYTE byRes[24]; +}NET_DVR_ACS_EVENT_INFO_EXTEND, *LPNET_DVR_ACS_EVENT_INFO_EXTEND; + +//չṹϢV20 +typedef struct tagNET_DVR_ACS_EVENT_INFO_EXTEND_V20 +{ + BYTE byRemoteCheck; //ǷҪԶ̺飨0-Ч1-ҪĬϣ2-Ҫ + BYTE byThermometryUnit; //µλ0-϶ȣĬϣ1-϶ȣ2-ģ + BYTE byIsAbnomalTemperature; //ץIJǷ¶쳣1-ǣ0- + BYTE byRes2; + float fCurrTemperature; //¶ȣȷСһλ + NET_VCA_POINT struRegionCoordinates; //¶ + DWORD dwQRCodeInfoLen; //άϢȣΪ0DZʾ + DWORD dwVisibleLightDataLen; //ȳɼͼƬȣΪ0DZʾ + DWORD dwThermalDataLen; //ȳͼƬȣΪ0DZʾ + char *pQRCodeInfo; //άϢָ + char *pVisibleLightData; //ȳɼͼƬָ + char *pThermalData; //ȳͼƬָ + BYTE byAttendanceLabel[64]; //Զ + WORD wXCoordinate; //x꣬ϽͼƬĹһ꣬Χ0-1000 + WORD wYCoordinate; //y꣬ϽͼƬĹһ꣬Χ0-1000 + WORD wWidth; //ȣΧ0-1000 + WORD wHeight; //߶ȣΧ0-1000 + BYTE byHealthCode; //״̬, 0-, 1-δ, 2-δ, 3-, 4-, 5-, 6-޴Ա, 7-Ϣӿ쳣²ѯʧܣ, 8-ѯ볬ʱ + BYTE byNADCode; //, 0-, 1-δѯ, 2-ԣ, 3-ԣȷ, 4-Чѹ + BYTE byTravelCode; //г̱, 0-, 1-14һֱڵ, 2-14뿪, 3-14ڵ, 4- + BYTE byVaccineStatus; //״̬, 0-, 1-δ, 2-ע, 3- + BYTE byRes[948]; +}NET_DVR_ACS_EVENT_INFO_EXTEND_V20, *LPNET_DVR_ACS_EVENT_INFO_EXTEND_V20; + +typedef struct tagNET_DVR_ACS_ALARM_INFO +{ + DWORD dwSize; + DWORD dwMajor; //ͣο궨 + DWORD dwMinor; //ͣο궨 + NET_DVR_TIME struTime; //ʱ + BYTE sNetUser[MAX_NAMELEN] ;//û + NET_DVR_IPADDR struRemoteHostAddr ;//Զַ + NET_DVR_ACS_EVENT_INFO struAcsEventInfo; //ϸ + DWORD dwPicDataLen; //ͼƬݴСΪ0DZʾ + char *pPicData; + WORD wInductiveEventType; //¼ͣ0-ЧͻжϸֵΪ0ֵ󣬱ͨ¼֣ͨԭбͣdwMajordwMinor + BYTE byPicTransType; //ͼƬݴ䷽ʽ: 0-ƣ1-url + BYTE byRes1; //ֽ + DWORD dwIOTChannelNo; //IOTͨ + char *pAcsEventInfoExtend; //byAcsEventInfoExtendΪ1ʱʾָһNET_DVR_ACS_EVENT_INFO_EXTENDṹ + BYTE byAcsEventInfoExtend; //pAcsEventInfoExtendǷЧ0-Ч1-Ч + BYTE byTimeType; //ʱͣ0-豸ʱ䣬1-UTCʱ䣨struTimeʱ䣩 + BYTE byRes2; //ֽ + BYTE byAcsEventInfoExtendV20; //pAcsEventInfoExtendV20ǷЧ0-Ч1-Ч + char *pAcsEventInfoExtendV20; //byAcsEventInfoExtendV20Ϊ1ʱʾָһNET_DVR_ACS_EVENT_INFO_EXTEND_V20ṹ + BYTE byRes[4]; +}NET_DVR_ACS_ALARM_INFO, *LPNET_DVR_ACS_ALARM_INFO; + +#define JUDGE_MAX_VIDEOOUT_NUM 9 + +typedef struct tagNET_DVR_AUDIO_ACTIVATION_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿ + BYTE byRes1[3]; + DWORD dwChanNo; //Ƶͨ + BYTE bySensitivity; // 1-100Խߣʾϵ͵ʹܸƵ뼤ܣԽͣʾҪϸߵʹܸƵļ + BYTE byPriority; //ȼ 0-ȼ01-ȼ1 ֵԽ󼶱Խ + WORD wDelayTime; //лӳʱ䣬λs, ʱԶصԤõ1ӦĻ + BYTE byRes2; // + BYTE byEnablePreset; //ǷԤõ + WORD wPreset; //Ԥõ + WORD wBase; /*׼*/ + BYTE byRes3[2]; + BYTE byVoChanNo[JUDGE_MAX_VIDEOOUT_NUM]; //ǷƵڡֵ0ʾ1-ʾ±ʾͨ˳£0-VGA1,1-VGA2, 2-VGA3,3-VGA4,4-VGA5~10,5-HDMI1,6-HDMI2 + BYTE byRes[255]; // +}NET_DVR_AUDIO_ACTIVATION_CFG,*LPNET_DVR_AUDIO_ACTIVATION_CFG; + +typedef struct tagNET_DVR_INFRARED_OUTPUT_CTRL_CFG +{ + DWORD dwSize; //ṹС + BYTE byIROutPort; //1-12-2 + BYTE byIRCmdIndex; //ѧӦ + BYTE byRes[254]; // +}NET_DVR_INFRARED_OUTPUT_CTRL_CFG, *LPNET_DVR_INFRARED_OUTPUT_CTRL_CFG; + +#define MAX_IR_CMD_NAME_LEN 32 //Ƴ +#define MAX_IR_CMD_NUM 32 // + +typedef struct tagNET_DVR_INFRARED_CMD_INFO //Ϣ +{ + char sCmdName[MAX_IR_CMD_NAME_LEN]; // + BYTE byRes[8]; // +} NET_DVR_INFRARED_CMD_INFO,*LPNET_DVR_INFRARED_CMD_INFO; + + +typedef struct tagNET_DVR_INFRARED_LEARN_CODE_CFG_ +{ + DWORD dwSize; //ṹС + BYTE sIROutName[MAX_IR_CMD_NAME_LEN]; // + NET_DVR_INFRARED_CMD_INFO struIRCmdInfo[MAX_IR_CMD_NUM]; //Ϣ + BYTE byRes[256]; +} NET_DVR_INFRARED_CMD_NAME_CFG,*LPNET_DVR_INFRARED_CMD_NAME_CFG; + +typedef enum tagIR_LEARN_SEND_DATA_TYPE_ENUM +{ + ENUM_SENDDATA = 0x0, // + ENUM_SEND_LEARN_IR_CMD_START, //ͺѧ + ENUM_SEND_LEARN_IR_CMD_END = 0x2 //ѧ +}IR_LEARN_SEND_DATA_TYPE_ENUM; + + +typedef struct tagNET_DVR_INFRARED_LEARN_INFO +{ + DWORD dwSize; //ṹС + BYTE byIROutPort; //1-12-2 + BYTE byIRCmdIndex; //ѧӦ + BYTE byRes[30]; // +} NET_DVR_INFRARED_LEARN_INFO, *LPNET_DVR_INFRARED_LEARN_INFO; + +typedef struct tagNET_DVR_INFRARED_LEARN_END +{ + DWORD dwSize; //ṹС + BYTE bySaveLearnInfo; //ѧϢ0-棬1- + BYTE byRes[255]; +} NET_DVR_INFRARED_LEARN_END,*LPNET_DVR_INFRARED_LEARN_END; + +#define MAX_VIDEOIN_TYPE_NUM 10 //ֵ֧ƵԴ + +typedef struct tagNET_DVR_VIDEOIN_TYPE_INFO +{ + WORD wInType; //Դ 0-SDI,1-VGA, 2-HDMI,3-IP,4-PIP + WORD wInNum; //ֵ֧ + WORD wStartNo; //Ӧʼ + BYTE byRes[6]; +}NET_DVR_VIDEOIN_TYPE_INFO, *LPNET_DVR_VIDEOIN_TYPE_INFO; + +typedef struct tagNET_DVR_TRIAL_SYSTEM_INFO +{ + DWORD dwSize ; //ṹС + BYTE byVideoInTypeNum ; //ƵԴ͸ + BYTE byRes1[3]; + NET_DVR_VIDEOIN_TYPE_INFO struVideoIn[MAX_VIDEOIN_TYPE_NUM] ; //ƵԴ + BYTE byRes[512 ] ; // +} NET_DVR_TRIAL_SYSTEM_INFO, *LPNET_DVR_TRIAL_SYSTEM_INFO; + +typedef struct tagNET_DVR_CASE_INFO +{ + DWORD dwSize; //ṹС + BYTE byCaseNo[CASE_NO_LEN]; // + BYTE byCaseName[CASE_NAME_LEN]; //ƣ + BYTE byLitigant1[LITIGANT_LEN]; //1 + BYTE byLitigant2[LITIGANT_LEN]; //2 + BYTE byChiefJudge[CHIEF_JUDGE_LEN];//г + BYTE byCaseType; //ͣ1-°2-°3- sCaseTypeCustomЧ + BYTE byShowCaseInfoTime; /* Ϣʾʱ,λ, ȡֵΧ1~30*/ + BYTE byRes1[2]; // + char sCaseTypeCustom[NET_SDK_CASETYPE_LEN/*32*/];//Զ尸 + BYTE byRes[220]; // +}NET_DVR_CASE_INFO, *LPNET_DVR_CASE_INFO; + +#define MICROPHONE_NUM 16 +#define FAN_NUM 8 +#define FPGA_NUM 8 +#define MAIN_BOARD 8 +#define LOCAL_INPUT_NUM 24 +#define LAMP_STATE_NAME 32 +#define LAMP_NAME 32 +#define FILE_NAME_LEN 32 +typedef struct _NET_DVR_REMOTE_PLAY_ +{ + DWORD dwSize; + BYTE byFileName[FILE_NAME_LEN]; //Ҫŵļ + BYTE byVideoOut[7]; // + BYTE byRes1[5]; + BYTE byType; // 0-壬1-ʼţ2-ֹͣ + BYTE byRes[31]; // +}NET_DVR_REMOTE_PLAY, *LPNET_DVR_REMOTE_PLAY; + +typedef struct _NET_DVR_TRIAL_MICROPHONE_STATUS +{ + DWORD dwSize ; + BYTE byMicrophoneStatus [MICROPHONE_NUM];//˷״̬±ʾ˷0-磬1- + BYTE byRes[32] ; // +}NET_DVR_TRIAL_MICROPHONE_STATUS, *LPNET_DVR_TRIAL_MICROPHONE_STATUS; + +typedef struct _NET_DVR_TRIAL_HOST_STATUS +{ + DWORD dwSize ; + DWORD dwFanSpeed [FAN_NUM];//ת + WORD wMainBoardTemp[MAIN_BOARD]; //¶ + BYTE byFpgaTempWarn [FPGA_NUM]; //0-¶ޱ״̬1-FPGA¶ȱ״̬λ1-ڱ״̬ 0-ޱ״̬ + BYTE byRes[32] ; // +}NET_DVR_TRIAL_HOST_STATUS, *LPNET_DVR_TRIAL_HOST_STATUS; + +typedef struct _NET_DVR_LOCAL_INPUT_INFO_ +{ + DWORD dwSize; + BYTE byChannelName[NAME_LEN] ; //ͨ + BYTE byRes[32] ; // +}NET_DVR_LOCAL_INPUT_INFO, *LPNET_DVR_LOCAL_INPUT_INFO; + +typedef struct tagNET_DVR_LAMP_STATUS +{ + BYTE byEnable; //Ƿ + BYTE byRes1[3]; + BYTE byLampName[LAMP_NAME]; //Lamp ƣ34ΪLamp156Ϊlamp2 + BYTE byLampState1[LAMP_STATE_NAME]; //״̬1Ӧƣ + BYTE byLampState2[LAMP_STATE_NAME]; //״̬2Ӧ + BYTE byLampState3[LAMP_STATE_NAME]; //״̬3Ӧ + BYTE byRes[32]; +}NET_DVR_LAMP_STATUS,*LPNET_DVR_LAMP_STATUS; + +typedef struct _NET_DVR_LAMP_OUT +{ + DWORD dwSize; + NET_DVR_LAMP_STATUS struLampInfo[2]; //0-ʾlamp1,1lamp2 + BYTE byRes[256]; // +}NET_DVR_LAMP_OUT, *LPNET_DVR_LAMP_OUT; + +typedef struct _NET_DVR_LAMP_CONTROL +{ + DWORD dwSize ; + BYTE byLampNo ; //LampţӦLamp± + BYTE byLampStateNo ; //Lamp״̬ 0-壬1-״̬1, 2-״̬2 3-״̬3 ӦLAMP״̬ + BYTE byRes[14] ; // +}NET_DVR_LAMP_CONTROL, *LPNET_DVR_LAMP_CONTROL; + + +//ʵʱϢ +typedef struct tagNET_DVR_TPS_PARAM +{ + BYTE byStart; // ʼ + BYTE byCMD; // ţ01-ָ02-뿪ָ03-ӵ״ָ̬(Ϊ03ʱֻbyLaneStatebyQueueLenЧ)04-Ȧ״̬Ϊ04ʱwLoopStatewStateMaskЧʾbyLane϶ȦĹ״̬ + WORD wSpaceHeadway; //ͷ࣬ + WORD wDeviceID; // 豸ID + WORD wDataLen; // ݳ + BYTE byLane; // Ӧ + BYTE bySpeed; // Ӧ٣KM/H + BYTE byLaneState; // ״̬0-״̬1-ͨ2-ӵ3- + BYTE byQueueLen; // ״̬Ŷӳȣ50ף + WORD wLoopState; //Ȧ״̬ڼλʾȦ״̬״̬1-0-뿪ȦŴӾͷɽԶûڽʱȽţٽȦţȦΨһġ + WORD wStateMask; //Ȧ״̬룬λΪ1ӦwLoopState״̬λЧΪ0ʾЧ + DWORD dwDownwardFlow; //ǰ ϵ³ + DWORD dwUpwardFlow; //ǰ µϳ + BYTE byJamLevel; //ӵµȼbyLaneStateΪ3ʱЧ1-ȣ2-жȣ3-ض + BYTE byVehicleDirection; //0-δ֪1-϶£2-¶ + BYTE byJamFlow; //ӵÿһϱһۼƳϢ + BYTE byChannelizationLane; //ţʾ仯һΪ·ڳĿ + BYTE byVehicleType; //ʶ0- δ֪1- ͳ()2- ()3- γ(С)4- ǻ + BYTE byRes1[5]; // + WORD wTimeHeadway; // ͷʱ࣬ +}NET_DVR_TPS_PARAM, *LPNET_DVR_TPS_PARAM; + +//TPSʵʱϴ +typedef struct tagNET_DVR_TPS_REAL_TIME_INFO +{ + DWORD dwSize; // ṹС + DWORD dwChan;//ͨ + NET_DVR_TIME_V30 struTime; //ʱ + NET_DVR_TPS_PARAM struTPSRealTimeInfo;// ͨͳϢ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + BYTE* pAddInfoBuffer; +#else + /*Ϣָ,ָNET_DVR_TPS_ADDINFOṹ*/ + BYTE* pAddInfoBuffer; + BYTE byRes2[4]; +#endif + /*ϢʶǷNET_DVR_TPS_ADDINFOṹ壩,0-޸Ϣ, 1-иϢ*/ + BYTE byAddInfoFlag; + BYTE byRes1[3]; // + DWORD dwDeviceIDEx; // 豸IDչ + BYTE byRes[8]; // +}NET_DVR_TPS_REAL_TIME_INFO, *LPNET_DVR_TPS_REAL_TIME_INFO; + +//ͳϢ +typedef struct tagNET_DVR_TPS_LANE_PARAM +{ + BYTE byLane; // Ӧ + BYTE bySpeed; // ƽٶ + WORD wArrivalFlow; // + DWORD dwLightVehicle; // Сͳ + DWORD dwMidVehicle; // ͳ + DWORD dwHeavyVehicle; // ͳ + DWORD dwTimeHeadway; // ͷʱ࣬ + DWORD dwSpaceHeadway; // ͷ࣬ + float fSpaceOccupyRation; // ռռʣٷֱȼ,*1000 + float fTimeOccupyRation; // ʱռʣٷֱȼ,*1000 + BYTE byStoppingTimes; //ƽͣ + BYTE byQueueLen; // ״̬Ŷӳȣ50ף + BYTE byFlag; //ϴʶ0-ʾT1ʱͳƽ,1-ʾT2ʱͳ + BYTE byVehicelNum; // + WORD wDelay; //ƽ + BYTE byRes1[6]; // + DWORD dwNonMotor; // ǻ +}NET_DVR_TPS_LANE_PARAM, *LPNET_DVR_TPS_LANE_PARAM; + +typedef struct tagNET_DVR_PANORAMA_LINKAGE +{ + DWORD dwSize; + BYTE byEnable;//0-رգ1- + BYTE byRes[127]; +}NET_DVR_PANORAMA_LINKAGE, *LPNET_DVR_PANORAMA_LINKAGE; + +// ͨͳϢ +typedef struct tagNET_DVR_TPS_STATISTICS_PARAM +{ + BYTE byStart; // ʼ + BYTE byCMD; // ţ 08-ʱָ + BYTE byRes[2]; // Ԥֽ + WORD wDeviceID; // 豸ID + WORD wDataLen; // ݳ + BYTE byTotalLaneNum; // Ч + BYTE byRes2[3]; + DWORD dwDeviceIDEx; // 豸IDչ + BYTE byRes1[8]; + NET_DVR_TIME_V30 struStartTime; //ͳƿʼʱ + DWORD dwSamplePeriod; //ͳʱ,λ + NET_DVR_TPS_LANE_PARAM struLaneParam[MAX_TPS_RULE/*8*/]; +}NET_DVR_TPS_STATISTICS_PARAM, *LPNET_DVR_TPS_STATISTICS_PARAM; + +//TPSͳƹϴ +typedef struct tagNET_DVR_TPS_STATISTICS_INFO +{ + DWORD dwSize; // ṹС + DWORD dwChan ;//ͨ + NET_DVR_TPS_STATISTICS_PARAM struTPSStatisticsInfo;// ͨͳϢ + DWORD dwJsonLen;//JsonϢ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + BYTE* pJsonBuf; +#else + // JsonϢָ,JSONӦEventNotificationAlert Json Block + BYTE* pJsonBuf; + BYTE byRes2[4]; +#endif + BYTE byJsonInfoFlag; //ǷJson͸ݣ0-ޣ1- + BYTE byBrokenNetHttp; //־λ0-شݣ1-ش + BYTE byRes[114]; // +}NET_DVR_TPS_STATISTICS_INFO, *LPNET_DVR_TPS_STATISTICS_INFO; + +#define DPC_CORRECT 1 //У +#define DPC_CORRECT_CANCEL 2 //ȡУ +#define DPC_CROSS_DISPALY_OPEN 3 //ʮֲʾ +#define DPC_CROSS_DISPALY_CLOSE 4 //ʮֲʾر +#define DPC_POINT 5 //У +#define DPC_UP 6 //Уƫ +#define DPC_DOWN 7 //Уƫ +#define DPC_RIGHT 8 //Уƫ +#define DPC_LEFT 9 //Уƫ +#define DPC_ALL_CORRECT 10 //лУ +#define DPC_SAVE 11 //㱣 + +typedef struct tagNET_DVR_DPC_PARAM +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + WORD wCtrlType ;//ο궨 + /* + ֶУĬΪֶУģʽʹwCtrlTypeͽֶУ + ԶУ豸ԶУٽֶУʱwCtrlTypestruPointЧ + */ + BYTE byDPCMode;//Уģʽ0-ֶУ1-ԶУ + BYTE byRes; + NET_VCA_POINT struPoint; /*ͼƽ꣬һ0-1*/ + BYTE byRes1[64]; +}NET_DVR_DPC_PARAM, *LPNET_DVR_DPC_PARAM; + +//ǾУ(FFC)ֶģʽ +typedef struct tagNET_DVR_FFC_MANUAL_INFO +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byRes[64]; +}NET_DVR_FFC_MANUAL_INFO, *LPNET_DVR_FFC_MANUAL_INFO; + +//ǾУ(FFC) +typedef struct tagNET_DVR_FFC_BACKCOMP_INFO +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byRes[64]; +}NET_DVR_FFC_BACKCOMP_INFO, *LPNET_DVR_FFC_BACKCOMP_INFO; + +//洢״̬ +typedef struct tagNET_DVR_STORAGE_SERVER_SWITCH_CFG +{ + DWORD dwSize; + /*洢ͼƬأλʾ0-رգ1- + 0-ƶץͼ(ݲ֧) + 1-ץͼ(ݲ֧) + + */ + BYTE byPicEnable[MAX_PIC_SWITCH_STORAGE_SERVER]; + /*洢Ϣأλʾ0-رգ1- + 0-ȶͼ(ݲ֧) + 1-(ݲ֧) + + */ + BYTE byAddInfoEnable[MAX_INFO_SWITCH_STORAGE_SERVER]; + BYTE byRes[324]; +} NET_DVR_STORAGE_SERVER_SWITCH_CFG, +*LPNET_DVR_STORAGE_SERVER_SWITCH_CFG; + +//ǿֹͣȡ֤ +typedef struct tagNET_DVR_FORCESTOP_FORENSICS_CFG +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byRes[64]; +}NET_DVR_FORCESTOP_FORENSICS_CFG, *LPNET_DVR_FORCESTOP_FORENSICS_CFG; + +typedef struct tagNET_DVR_DEC_VCA_ALARM +{ + DWORD dwSize; + DWORD dwDisplayNo; //ܱʾͨ + BYTE bySubWinNo; //ܱӴں + BYTE byRes1[3]; + NET_DVR_TIME_V30 struTime; //ʱ + NET_DVR_PU_STREAM_CFG_V41 struSourceInfo; //ԴϢ + BYTE *byAlarmPic; //ͼƬ + DWORD dwAlarmPicSize; //ͼƬСλֽ + BYTE byRes2[64]; +}NET_DVR_DEC_VCA_ALARM, *LPNET_DVR_DEC_VCA_ALARM; + +typedef struct tagNET_DVR_DEC_VCA_ALARM_LOGO +{ + BYTE byEnableLogo; //Ƿܱlogo0-ӣ0- + BYTE byFlash; //Ƿ˸0-˸0-˸ + WORD wFlashTime; //˸ʱ䣬λ룬ȡֵΧӽȡ + DWORD dwLogoX; //logo X꣬봰ܴС1920*1920 + DWORD dwLogoY; //logo Y + BYTE byRes[32]; +}NET_DVR_DEC_VCA_ALARM_LOGO, *LPNET_DVR_DEC_VCA_ALARM_LOGO; + +typedef struct tagNET_DVR_DEC_VCA_ALARM_PIC +{ + BYTE byUploadPic; //ܱʱǷϴͼƬ0-ϴ0-ϴ + BYTE byOverlayTargetInfo; //ͼƬǷĿϢ0-ӣ0- + BYTE byOverlayRuleInfo; //ͼƬǷܹϢ0-ӣ0- + BYTE byPicQuality; //ͼƬϵ 0- 1-Ϻ 2-һ + /*ͼƬС ͨȡ + 0-CIF 1-QCIF 2-D1 3-UXGA(1600x1200), 4-SVGA(800x600),5-HD720p(1280x720) + 6-VGA 7-XVGA 8-HD900p 9-HD1080 10-2560*1920 + 11-1600*304 12-2048*1536 13-2448*2048, 14-2448*1200 15-2448*800 + 16-XGA(1024*768), 17-SXGA(1280*1024),18-WD1(960*576/960*480), 19-1080i, 20-576*576 + 21-1536*1536, 22-1920*1920, 23-320*240, 24-720*720, 25-1024*768, + 26-1280*1280, 27-1600*600, 28-2048*768, 0xff-Auto(ʹõǰֱ)*/ + BYTE byPicSize; + BYTE byRes[27]; +}NET_DVR_DEC_VCA_ALARM_PIC, *LPNET_DVR_DEC_VCA_ALARM_PIC; + +typedef struct tagNET_DVR_DEC_VCA_ALARM_CFG +{ + DWORD dwSize; + NET_DVR_DEC_VCA_ALARM_LOGO struAlarmLogo; //ܱlogoӲ + NET_DVR_DEC_VCA_ALARM_PIC struAlarmPic; //ܱͼƬ + BYTE byRes[64]; +}NET_DVR_VCA_ALARM_CFG, *LPNET_DVR_DEC_VCA_ALARM_CFG; + +#define MAX_OSD_LEN 64 //OSD +typedef struct tagNET_DVR_OUTPUT_PIC_INFO +{ + DWORD dwSize; + BYTE sPicName[NAME_LEN];//ͼƬ + BYTE byUsed; //ǷѴڣ0-ڣ1- + BYTE byRes[31]; +}NET_DVR_OUTPUT_PIC_INFO,*LPNET_DVR_OUTPUT_PIC_INFO; + +typedef struct tagNET_DVR_OUTPUT_PIC_CFG +{ + DWORD dwSize; + DWORD dwOutputPicNo; //ͼƬ + BYTE byEnable; //logoǷʾ1-ʾ0- + BYTE byRes1[3]; + NET_DVR_RECTCFG_EX struRect;//logoλãڷΧܴСΪ1920*1920 + BYTE byFlash; //Ƿ˸1-˸0-˸ + BYTE byTranslucent; //Ƿ͸1-͸0-͸ + BYTE byRes2[2]; // + DWORD dwOutputPicWinNo; //ͼƬںţ1ֽ豸+1ֽں+2ֽͼƬںţ,ȡȫʱЧ + BYTE byRes3[28]; +}NET_DVR_OUTPUT_PIC_CFG,*LPNET_DVR_OUTPUT_PIC_CFG; + +typedef struct tagNET_DVR_OUTPUT_OSD_CFG +{ + DWORD dwSize; + BYTE byEnable; //OSDǷʾ0-ʾ1-ʾ + BYTE byFontSize; //С1-2-У3-С + BYTE byOSDColor; //OSDɫã0-Ĭϣ 1-ڣ2-ף3-죬4-̣5- + BYTE byRes1[1]; + BYTE byOsdContent[MAX_OSD_LEN]; //OSD + NET_DVR_RECTCFG_EX struRect;//OSDλãڷΧܴСΪ1920*1920 + DWORD dwOsdWinNo; //OSDںţ1ֽ豸+1ֽں+2ֽOSDںţȡʱЧ + BYTE byRes2[32]; // +}NET_DVR_OUTPUT_OSD_CFG,*LPNET_DVR_OUTPUT_OSD_CFG; + +typedef struct tagNET_DVR_CHAN_RELATION_RESOURCE +{ + DWORD dwSize; + DWORD dwDisplayChan; //ʾͨţ1ֽ豸+1ֽڱ+2ֽʾͨţ + BYTE byRelateAudio; //ǷӴƵ + BYTE byRes1[3]; + DWORD dwSubWinNo; //ƵӴںţ1ֽڵǽ+1ֽӴں+2ֽڴںţ + DWORD dwChannel; //ͨţȡȫʱЧ + BYTE byRes2[32]; +}NET_DVR_CHAN_RELATION_RESOURCE, *LPNET_DVR_CHAN_RELATION_RESOURCE; + +typedef struct tagNET_DVR_ALARM_CHAN_ABLITITY +{ + DWORD dwSize; + BYTE bySensorChan[64];//ģͨ ±ʾͨ 0-ʾ֧֣1-ʾ֧ + BYTE byAlarmInChan[64];//ͨ ±ʾͨ 0-ʾ֧֣1-ʾ֧ + BYTE byAlarmOutChan[64];//ͨ ±ʾͨ 0-ʾ֧֣1-ʾ֧ + BYTE by485Chan[64];//485ͨ ±ʾͨ 0-ʾ֧֣1-ʾ֧ + BYTE byRes[128]; +}NET_DVR_ALARM_CHAN_ABLITITY, *LPNET_DVR_ALARM_CHAN_ABLITITY; + +typedef struct +{ + DWORD dwSize; + BYTE byOutScale[8];//±ʾںţ0-ʾ֧֣1-ʾ12V2-ʾ24V + BYTE byRes[16]; +}NET_DVR_OUT_SCALE_CFG, *LPNET_DVR_OUT_SCALE_CFG; + +typedef struct tagNET_DVR_MONITOR_LOCATION_COND +{ + DWORD dwSize; + DWORD dwChan; + /* + 0 ʾ ץMPRģʽ֡ץ IPCʹã + 1 ʾ ץ HVT ģʽ쿨IPCʹã + */ + BYTE byRelateType; + BYTE byRes[63]; // +}NET_DVR_MONITOR_LOCATION_COND, *LPNET_DVR_MONITOR_LOCATION_COND; + +typedef struct tagNET_DVR_MONITOR_LOCATION_CFG +{ + DWORD dwSize; + BYTE byMonitoringSiteID[MAX_ID_LEN/*48*/]; // + BYTE byDeviceID[MAX_ID_LEN/*48*/]; //豸 + BYTE byDirectionNo; //ⷽ,0-,1-,2-,3-˫,4-ɶ,5-,6-,7-ɱ,8- + BYTE byRes1[3]; // + BYTE byMonitorInfo[MONITORSITE_ID_LEN/*48*/]; //Ϣ + BYTE byRes[128]; // +}NET_DVR_MONITOR_LOCATION_CFG, *LPNET_DVR_MONITOR_LOCATION_CFG; + +typedef struct tagNET_DVR_REMOTECONTROL_COND +{ + DWORD dwSize; //ṹС + DWORD dwChannel; //ͨ + BYTE byRes[64]; +}NET_DVR_REMOTECONTROL_COND, *LPNET_DVR_REMOTECONTROL_COND; + +typedef struct tagNET_DVR_REMOTECONTROL_STATUS_ +{ + DWORD dwSize; //ṹС + BYTE byAlarmStatus;//״̬0-,1-,2- + BYTE byRes[3]; + WORD wAlarmDealyTime;//ӳʱ䣬λs + WORD wDisAlarmDealyTime;//ӳʱ䣬λs + BYTE byRes1[64]; +} NET_DVR_REMOTECONTROL_STATUS, *LPNET_DVR_REMOTECONTROL_STATUS; + +typedef struct tagNET_DVR_SECURITY_CFG +{ + DWORD dwSize; + BYTE byCommuMode;//˽Эͨģʽ0-ģʽ1-ȫģʽ + BYTE byRes1[2]; + BYTE byWebAuthentication; //web֤ 0-digest1-basic2-digest/basic;Ĭbasic֤ + BYTE byRtspAuthentication; //rtsp֤ 0-disable1-basic2-digest3-digest/basic;Ĭbasic֤ + BYTE byTelnetServer; //telnet 0ã1 + BYTE bySSHServer; //SSH 0(Ĭ)1 + BYTE byIllegalLoginLock; //½, 0-ãĬϣ1- + BYTE byStreamEncryption; // 0-ܣ1- + BYTE byAntiAttack; //Ƿܣ0- ã1-(socketʱ5sر) + BYTE byRes[26]; +}NET_DVR_SECURITY_CFG,*LPNET_DVR_SECURITY_CFG; + +typedef struct tagNET_DVR_PASSWORD_MANAGE_CFG +{ + DWORD dwSize; + BYTE byRes[3]; + BYTE byLockCount; //ӦûIPĴ¼󣬶Ըû0-ֵΪĴ ĬΪ01ʾ¼1Ժû + DWORD dwLockTime; //ʱ䣬ʾʱ䣬λ롣Ϊ0byLockCountΪ0ʱdwLockTimeЧ + BYTE byRes1[128]; //4ֽڶ +} NET_DVR_PASSWORD_MANAGE_CFG,*LPNET_DVR_PASSWORD_MANAGE_CFG; + + +typedef struct tagNET_DVR_UNLOCK_INFO +{ + DWORD dwSize; + BYTE byUnlockType; //0-Ч 1-IP2-IP + BYTE byIPVersion; //1-IPV42-IPV6byUnlockTypeΪ1ʱòЧ + BYTE byRes1[2]; + NET_DVR_IPADDR struIPAddr; //IPַ + BYTE byRes[64]; +} NET_DVR_UNLOCK_INFO,*LPNET_DVR_UNLOCK_INFO; + +typedef struct tagNET_DVR_LOCKED_INFO +{ + DWORD dwSize; + BYTE byIPType; //IP 0-Ч1-IPV42-IPV6 + BYTE byRes1[3]; + NET_DVR_IPADDR struIPAddress; + BYTE byRes[20]; +} NET_DVR_LOCKED_INFO,*LPNET_DVR_LOCKED_INFO; + + +typedef struct tagNET_DVR_VEHICLE_PARA +{ + BYTE sLicense[MAX_LICENSE_LEN]; + /*ֵ + 0-㷨ⲻ֧ʶң1-ݿ˹͹(CZ - Czech Republic)2-(FRA - France) + 3-¹(DE - Germany),4-(E - Spain), 5-(IT - Italy)6-(NL - Netherlands)7-(PL - Poland)8-˹工(SVK - Slovakia), 9-׶˹(BY - Belorussia), 10-Ħ(MDA - Moldova)11-˹(RU - Russia)12-ڿ(UA - Ukraine), + 169-ô(Canada), 172-(US), 227-Ĵ(Australia), 0xfe-޷ʶ + */ + BYTE byCountry; // ֵ + + BYTE byRes[239]; +}NET_DVR_VEHICLE_PARA, *LPNET_DVR_VEHICLE_PARA; + +typedef struct tagNET_DVR_FACE_PIC_DATA_INFO +{ + DWORD dwImageLen; //ͼƬС + NET_VCA_RECT struVcaRect; //ͼڴͼеλãһ + DWORD dwFaceScore; //ƶȣȡֵΧ0-100 + BYTE byVcaRectOnly; //Ƿֻϴ꣺0-1- + BYTE byRes1[3]; + DWORD dwPID; //ͼƬID + DWORD dwFaceSearchNum;// + NET_VCA_RECT struMultiVcaRect[NET_DVR_MAX_FACE_SEARCH_NUM];//ͼڴͼеλãһ, byVcaRectOnly=1ʱã + BYTE byRes[136]; + BYTE *pImage; //ͼƬҪΪjpgʽ +}NET_DVR_FACE_PIC_DATA_INFO, *LPNET_DVR_FACE_PIC_DATA_INFO; + +typedef struct tagNET_DVR_BEHAVIOUR_COND +{ + DWORD dwSearchType; // + //&0x1 - Խ + //&0x2 - + //&0x4 - Ʒ + //&0x8 - Ʒȡ + //&0x10 - + //&0x20 - 뿪 + //&0x40 - Ƿͣ + //&0x80 - ǻ + //&0x100 -Աۼ + //&0x200 - ƶ + //&0x400 - ڼ + //&0x800 - 仯 + //&0x1000 - ˶ + //&0x2000 - Ա + //&0x4000 - Ա + //&0x8000 - Ա + //&0x10000 C̬Ʒ + //&0x20000 C ֻ + BYTE byHumanMisinfo;// ֻȡϢ 0-1- + BYTE byRes[251]; // +}NET_DVR_BEHAVIOUR_COND, *LPNET_DVR_BEHAVIOUR_COND; + + +typedef union tagNET_DVR_SMARTSEARCH_PIC_UNION +{ + BYTE byLen[256]; //峤 + NET_DVR_VEHICLE_PARA struVehiclePara; //Ϣ + NET_VCA_HUMAN_FEATURE struHumaFeature; // + NET_DVR_FACE_PIC_DATA_INFO struHumaPic; //ͼϢѯԶͼƬͼͼܣ + NET_DVR_BEHAVIOUR_COND struBehaviourCond; //Ϊ +}NET_DVR_SMARTSEARCH_PIC_UNION,*LPNET_DVR_SMARTSEARCH_PIC_UNION; + +typedef struct tagNET_DVR_SMART_SEARCH_PIC_PARA //ͼƬṹ size 344 +{ + DWORD dwChanNo; //ͨ + DWORD byStreamID[STREAM_ID_LEN] ; //IDϢdwChanNoȣȼϸߣbyStreamIDΪʱʹIDΪյʹdwChanNoֶ + NET_DVR_TIME_EX struStartTime; //¼ʼʱ + NET_DVR_TIME_EX struEndTime; //¼ֹͣʱ + WORD wSearchType; //ܲ 0- 1-ԣ 2-ͼͼ 3-Ϊ + BYTE byRes1[2]; + NET_DVR_SMARTSEARCH_PIC_UNION uSmartSearchCond; //ܲ + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cStartTimeDifferenceH; //ʼʱUTCʱСʱ-12 ... +14 ʾʱ + char cStartTimeDifferenceM; //ʼʱUTCʱӣ-30, 0, 30, 45ʾʱ + char cStopTimeDifferenceH; //ʱUTCʱСʱ-12 ... +14ʾʱ + char cStopTimeDifferenceM; //ʱUTCʱӣ-30, 0, 30, 45ʾʱ + BYTE byRes[59]; +}NET_DVR_SMART_SEARCH_PIC_PARA, *LPNET_DVR_SMART_SEARCH_PIC_PARA; + +//ʶ +typedef struct tagNET_DVR_FACE_SUB_PIC_INFO +{ + DWORD dwSimilarity; //ƶ 0-100 + NET_VCA_RECT struVcaRect; //򣬹һ + BYTE byRes2[236]; // +}NET_DVR_FACE_SUB_PIC_INFO ,*LPNET_DVR_FACE_SUB_PIC_INFO; + + +typedef struct tagNET_DVR_BEHAVIOR_INFO +{ + NET_VCA_RECT struVcaRect; + WORD wPeopleNum; //ͼƬͣNET_DVR_SMART_SEARCH_PIC_RET wPicTypeΪ̬ƷʱЧ + BYTE byRes2[238]; // +}NET_DVR_BEHAVIOR_INFO ,*LPNET_DVR_BEHAVIOR_INFO; + +typedef union tagNET_DVR_PIC_FEATURE_UNION +{ + BYTE byLen[256]; //峤 + NET_DVR_PLATE_INFO struPlateInfo; //Ϣ + NET_DVR_FACE_SUB_PIC_INFO struFaceSubInfo; //ͼϢ + NET_DVR_BEHAVIOR_INFO struBehavior; //ΪӦͼϢ +}NET_DVR_PIC_FEATURE_UNION,*LPNET_DVR_PIC_FEATURE_UNION; + +typedef struct tagNET_DVR_SMART_SEARCH_PIC_RET +{ + char sFileName[PICTURE_NAME_LEN];//ļ + NET_DVR_TIME_EX struTime; //ͼƬץͼʱ + DWORD dwFileSize; //ļĴС + WORD wPicType; //ͼƬ 0- 1-ԣ 2-ͼͼ 3-Խߣ4-֣ 5-Ʒ 6-Ʒȡ 7- 8-뿪 9-Ƿͣ10-ǻ11-Աۼ12-ƶ,13-Աܣ14-˶15-Աأ16-쳣17-ڼ⣬18-Ա19-̬Ʒ 20-ֻ + BYTE byRes1[2]; // + NET_DVR_PIC_FEATURE_UNION uPicFeature; //ͼƬ + BYTE byISO8601; //Ƿ8601ʱʽʱֶǷЧ0-ʱЧʱΪ豸ʱ 1-ʱЧ + char cTimeDifferenceH; //UTCʱСʱ-12 ... +14 ʾʱ + char cTimeDifferenceM; //UTCʱӣ-30, 0, 30, 45ʾʱ + BYTE byRes[29]; +}NET_DVR_SMART_SEARCH_PIC_RET, *LPNET_DVR_SMART_SEARCH_PIC_RET; + +typedef struct tagNET_DVR_T1TEST_SEND_DATA_BUZZER +{ + BYTE byHearSound; //Ƿ 0-δ1- + BYTE byRes[31]; // +}NET_DVR_T1TEST_SEND_DATA_BUZZER,*LPNET_DVR_T1TEST_SEND_DATA_BUZZER; + + +typedef union NET_DVR_T1TEST_DATA_UNION +{ + BYTE byUnionLen[32]; + NET_DVR_T1TEST_SEND_DATA_BUZZER struBuzzer; // + NET_DVR_TIME_V30 struCurTime; //ǰPCʱ +}NET_DVR_T1TEST_DATA_UNION,*LPNET_DVR_T1TEST_DATA_UNION; + + +typedef struct tagNET_DVR_T1TEST_SEND_DATA +{ + DWORD dwSize; //ṹС + BYTE byDataType; // 0-1-pcʱ + BYTE byRes1[3]; + NET_DVR_T1TEST_DATA_UNION uSendData; //͵ + BYTE byRes[64]; +}NET_DVR_T1TEST_SEND_DATA,*LPNET_DVR_T1TEST_SEND_DATA; + +typedef struct tagNET_DVR_PIC_MODEL_CFG //ͼģ +{ + DWORD dwSize; //ṹС + BYTE byEnable; //Ƿ + BYTE byRes[63]; +}NET_DVR_PIC_MODEL_CFG, *LPNET_DVR_PIC_MODEL_CFG; + +typedef struct tagNET_DVR_MOUSE_EVENT_PARAM //Ϣ +{ + DWORD dwSize; //ṹС + BYTE byMouseEvent; //¼ͣ 0-1-˫2-Ҽ3-Ϲ4-¹ + BYTE byRes1[3]; // + NET_VCA_POINT struPoint; //λ꣬һ + BYTE byRes[64]; // +}NET_DVR_MOUSE_EVENT_PARAM, *LPNET_DVR_MOUSE_EVENT_PARAM; + +typedef struct tagNET_DVR_AUTO_LIMIT_WAVE_CFG +{ + BYTE byFBCEnable; //FBC 0-1- + BYTE byMode; //ģʽ, 0-, 1-ͨ,2- + BYTE byFilterQValue; //Ӧ˲QֵλOct, 0-1/40,1-1/10, ĬֵΪ1/40 Oct + BYTE byStaticFilterNum; //̬˲ȡֵΧ0-12 + BYTE byRes[16]; +}NET_DVR_AUTO_LIMIT_WAVE_CFG,*LPNET_DVR_AUTO_LIMIT_WAVE_CFG; + +typedef struct _NET_DVR_DSP_PARAMETER_CFG +{ + BYTE byFBCEnable; //FBC 0-1- + BYTE byVolume; // ȡֵΧ0~255 + BYTE byRes[22]; +}NET_DVR_DSP_PARAMETER_CFG, *LPNET_DVR_DSP_PARAMETER_CFG; + + +typedef struct tagNET_DVR_MIX_AUDIOIN_CFG +{ + DWORD dwSize; //ṹС + DWORD dwHighPassFilter; //ͨ˲ ȡֵΧ 0-127, Ϊ׼ + DWORD dwNoiseMargin; //ޣȡֵΧ 0-127, Ϊ׼ + NET_DVR_AUTO_LIMIT_WAVE_CFG struLimitWave; //Զ޲ƲƵԴΪmacInʱЧ + NET_DVR_DSP_PARAMETER_CFG struDSPParameter; //źŴоƬ + BYTE byRes[40]; +}NET_DVR_MIX_AUDIOIN_CFG,*LPNET_DVR_MIX_AUDIOIN_CFG; + +typedef struct tagNET_DVR_MIX_AUDIOOUT_CFG +{ + DWORD dwSize; //ṹС + BYTE byModulatorEnbale; //Ƿλ + BYTE byPostFilter; //Post Filterأ0-رգ1-ĬϿ + BYTE byLimitPressure; //ѹ޿ 0-رգ1-ĬϿ + BYTE byRes1; // + WORD wModulatorValue; //λ ȡֵΧ 0-127, Ϊ׼Ĭ10 + WORD wTriggerTime; //ѹ޴ʱ䣬ȡֵΧ 0-127, Ϊ׼ + WORD wFreeTime; //ѹͷʱ䣬ȡֵΧ 0-127, Ϊ׼ + BYTE byCompressThreshold; //ѹ 0-1X,1-2X,2-4X,3-8X Xʾ2Xʾ2 + BYTE byCompressMode; //ѹʽ0-Ӳѹ1-ѹĬΪӲѹ + BYTE byCompressRate; //ѹ + BYTE byRecoveryGain; //ظ 0-1X,1-2X,2-4X,3-8X + BYTE byOutputGain; // 0 ~100ֵ + BYTE byOutputMute; //0-رգ1- + int iOutputGainEx; //չֵΪŴ󣬸ֵΪС + BYTE bySoundQualityHanding; //ʴ0-رգ1- + BYTE byRes[55]; +}NET_DVR_MIX_AUDIOOUT_CFG,*LPNET_DVR_MIX_AUDIOOUT_CFG; + +#define MAX_AUDIOOUT_PRO_TYPE 8 //Ƶʽ +typedef struct tagNET_DVR_VOLUME_CFG +{ + DWORD dwSize; //ṹС + WORD wVolume[MAX_AUDIOOUT_PRO_TYPE]; //С ȡֵΧ 0-127, Ϊ׼ + BYTE byPhantomPowerSupply; //ǷʹûԴ(ƵͨΪMICʱЧ)0-壬1-磬2- + BYTE byEnableAEC; //ǷȫֵĻ,0-ã1- + WORD wTalkVolume; //ֶ֧Խ豸ԽʱС + BYTE byEnableFBC[MAX_AUDIOOUT_PRO_TYPE]; //ǷFBC(Х),0-ã1- + WORD wVolumeEx[MAX_AUDIOOUT_PRO_TYPE]; //Сչ ȡֵΧ 0-127, Ϊ׼ + BYTE byRes[4]; // +}NET_DVR_VOLUME_CFG,*LPNET_DVR_VOLUME_CFG; + +typedef struct tagNET_DVR_VIDEOOUT_RESOLUTION_CFG //Ƶڷֱ +{ + DWORD dwSize; //ṹС + BYTE byResolution; //ֱ 0-1024x768, 1-1280x720, 2-1280x1024, 3-1680x1050, 4-1920x1080, 5-3840*2160 + BYTE byRes[63]; +}NET_DVR_VIDEOOUT_RESOLUTION_CFG, *LPNET_DVR_VIDEOOUT_RESOLUTION_CFG; + +typedef struct tagNET_DVR_ADDR_DOMAIN_INFO +{ + BYTE szDomainAddr[MAX_DOMAIN_NAME]; /* IPַ,Ҫ豸,ʽΪĸ'.'Ϊ,ΪIPַ */ + WORD wPort; + BYTE byRes[2]; +}NET_DVR_ADDR_DOMAIN_INFO,*LPNET_DVR_ADDR_DOMAIN_INFO; + +#define MAX_CENTERNUM_V40 6 //ĵַ + +// +typedef struct tagNET_DVR_ALARMCENTER_NETCFG +{ + DWORD dwSize; + BYTE byAuxiliaryAlarmAddr[MAX_DOMAIN_NAME]; /* IPַ,Ҫ豸,ʽΪĸС.Ϊ,ΪIPַ */ + WORD wAuxiliaryAlarmPort; /* ˿ں */ + NET_DVR_ADDR_DOMAIN_INFO struHostAddr[MAX_CENTERNUM_V40]; //ĵַϢ + BYTE byRes[172]; +}NET_DVR_ALARMCENTER_NETCFG, *LPNET_DVR_ALARMCENTER_NETCFG; + +//ṹ +typedef struct tagNET_DVR_ALARM_LINKAGE_PARAM +{ + DWORD dwSize; + WORD wChanRec; //¼NVRͨλʾλʾͨ1λʾͨ16λֵ0-¼1-¼ + BYTE byRes1[2]; + WORD wRecTime[MAX_LINKAGE_CHAN_NUM]; //¼ʱ䣬ֽڱʾbyRecTime[0]ʾͨ1¼ʱ䣬byRecTime[15]ʾͨ16¼ʱ + WORD wChanPic; //ץͼNVRͨλʾλʾͨ1λʾͨ16λֵ0-ץͼ1-ץͼ + BYTE byRes2[2]; + BYTE byPicNum[MAX_LINKAGE_CHAN_NUM]; //ץͼĸֽڱʾbyPicNum[0]ʾͨ1ץͼbyPicNum[15]ʾͨ16ץͼ + BYTE byTriggerEnabled[ALARMHOST_ALARMOUT_NUM];//0-1- + BYTE bySensorJointAlarmOut[ALARMHOST_ALARMOUT_NUM];//ңֵֵΪbyTriggerEnabled䡣±ʾţԪصֵλʾͣͼ""Ĺϵֵ壺1bit0-1bit1-2bit2-3bit3-4bit4- + BYTE byRes3[128]; // +}NET_DVR_ALARM_LINKAGE_PARAM, *LPNET_DVR_ALARM_LINKAGE_PARAM; + + +//״Աϴ ץĻ4.0 +typedef struct tagNET_DVR_ALARM_RADARINFO +{ + DWORD dwSize; + DWORD dwRadarTriggerTimeSecond;//״ﴥʱ䣬 + DWORD dwRadarTriggerTimeMSecond;//״ﴥʱ䣬 + DWORD dwVedioTriggerTimeSecond;//Ƶʱ䣬 + DWORD dwVedioTriggerTimeMSecond;//Ƶʱ䣬 + DWORD dwVedioRadarDiffTimeMSecond;//״Ƶʱ + DWORD dwRadarSpeed;//״ٶ + BYTE byRes[16]; +} NET_DVR_ALARM_RADARINFO, *LPNET_DVR_ALARM_RADARINFO; + +#define MAX_FINGER_PRINT_LEN 768 //ָƳ +typedef struct tagNET_DVR_FINGER_PRINT_CFG +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + DWORD dwFingerPrintLen; //ָݳ + BYTE byEnableCardReader[MAX_CARD_READER_NUM_512]; //Ҫ·ָƵĶʾ0-·ö1-·ö + BYTE byFingerPrintID; //ָţЧֵΧΪ1-10 + BYTE byFingerType; //ָ 0-ָͨƣ1-вָ + BYTE byRes1[30]; + BYTE byFingerData[MAX_FINGER_PRINT_LEN]; //ָ + BYTE byRes[64]; +}NET_DVR_FINGER_PRINT_CFG,*LPNET_DVR_FINGER_PRINT_CFG; + +typedef struct tagNET_DVR_FINGER_PRINT_STATUS +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + BYTE byCardReaderRecvStatus[MAX_CARD_READER_NUM_512]; //ָƶ״ֽ̬ڱʾ0-ʧܣ1-ɹ2-ָģ鲻ߣ3-Իָ4-ڴ5-Ѵڸָƣ6-ѴڸָID7-ǷָID8-ָģ + BYTE byFingerPrintID; //ָţЧֵΧΪ1-10 + BYTE byFingerType; //ָ 0-ָͨƣ1-вָ + BYTE byTotalStatus; //·ܵ״̬0-ǰָδж1-ж(ָŽеĶ·ˣܳɹ) + BYTE byRes1; + BYTE byErrorMsg[ERROR_MSG_LEN]; //·ϢbyCardReaderRecvStatusΪ5ʱʾѴָƶӦĿ + DWORD dwCardReaderNo; //0ʾϢbyErrMsgЧֵbyErrMsgӦĶţʲô鿴byCardReaderRecvStatusӦŵֵ0ʱʾ޴Ϣ + BYTE byRes[24]; +}NET_DVR_FINGER_PRINT_STATUS,*LPNET_DVR_FINGER_PRINT_STATUS; + + +typedef struct tagNET_DVR_FINGER_PRINT_INFO_COND +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + BYTE byEnableCardReader[MAX_CARD_READER_NUM_512]; //ָƵĶϢʾ + DWORD dwFingerPrintNum; //ûȡȡʱΪ0xffffffffʾȡпϢ + BYTE byFingerPrintID; //ָţЧֵΧΪ-10 0xffʾÿָ + BYTE byCallbackMode; //豸صʽ0-豸ж˷Χ1-ʱ˲Ҳ + BYTE byRes1[26]; // +}NET_DVR_FINGER_PRINT_INFO_COND,*LPNET_DVR_FINGER_PRINT_INFO_COND; + +typedef struct tagNET_DVR_FINGER_PRINT_CFG_V50 +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + DWORD dwFingerPrintLen; //ָݳ + BYTE byEnableCardReader[MAX_CARD_READER_NUM_512]; //Ҫ·ָƵĶʾӵλλʾ0-·ö1-·ö + BYTE byFingerPrintID; //ָţЧֵΧΪ1-10 + BYTE byFingerType; //ָ 0-ָͨƣ1-вָƣ2-Ѳָƣ3-ָƣ4-ָ + BYTE byRes1[30]; + BYTE byFingerData[MAX_FINGER_PRINT_LEN]; //ָ + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID + BYTE byLeaderFP[MAX_DOOR_NUM_256]; //Ƿ״֤ܣֽڱʾ0-״֤ܣ1-״֤ + BYTE byRes[128]; +}NET_DVR_FINGER_PRINT_CFG_V50, *LPNET_DVR_FINGER_PRINT_CFG_V50; + +typedef struct tagNET_DVR_FINGER_PRINT_STATUS_V50 +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + BYTE byCardReaderRecvStatus[MAX_CARD_READER_NUM_512]; //ָƶ״ֽ̬ڱʾ0-ʧܣ1-ɹ2-ָģ鲻ߣ3-Իָ4-ڴ5-Ѵڸָƣ6-ѴڸָID7-ǷָID8-ָģã10-ָƶ汾ͣ޷ֹ֧ţ + BYTE byFingerPrintID; //ָţЧֵΧΪ1-10 + BYTE byFingerType; //ָ 0-ָͨƣ1-вָƣ2-Ѳָƣ3-ָƣ4-ָ + BYTE byTotalStatus; //·ܵ״̬0-ǰָδж1-ж(ָŽеĶ·ˣܳɹ) + BYTE byRecvStatus; //״̬0-ɹ1-ָŴ2-ָʹ3-Ŵ󣨿Ź񲻷豸Ҫ󣩣4-ָδŻ򿨺ţŻ򿨺ֶΪգ5-Ųڣ6-ָݳΪ07-Ŵ8-Ŵ + BYTE byErrorMsg[ERROR_MSG_LEN]; //·ϢbyCardReaderRecvStatusΪ5ʱʾѴָƶӦĿ + DWORD dwCardReaderNo; //byCardReaderRecvStatusΪ5ʱʾѴָƶӦָƶţ·󷵻ء0ʱʾ޴Ϣ + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID + BYTE byErrorEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //·ϢbyCardReaderRecvStatusΪ5ʱʾѴָƶӦĹţԱID + BYTE byRes[128]; +}NET_DVR_FINGER_PRINT_STATUS_V50, *LPNET_DVR_FINGER_PRINT_STATUS_V50; + +typedef struct tagNET_DVR_FINGER_PRINT_INFO_COND_V50 +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿţֶλȡʱЧʱЧ + BYTE byEnableCardReader[MAX_CARD_READER_NUM_512]; //ָƵĶǷЧ0-Ч1-Ч + DWORD dwFingerPrintNum; //ûָȡʱΪ0xffffffffʾȡָϢ + BYTE byFingerPrintID; //ָţЧֵΧΪ1-10 0xffʾÿָ + BYTE byCallbackMode; //豸صʽ0-豸ж˷أ1-ʱ˲Ҳ + BYTE byRes2[2]; // + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID + BYTE byRes1[128]; // +}NET_DVR_FINGER_PRINT_INFO_COND_V50, *LPNET_DVR_FINGER_PRINT_INFO_COND_V50; + +typedef struct tagNET_DVR_FINGER_PRINT_BYCARD +{ + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + BYTE byEnableCardReader[MAX_CARD_READER_NUM_512]; //ָƵĶϢʾ + BYTE byFingerPrintID[MAX_FINGER_PRINT_NUM/*10*/]; //ҪȡָϢ±ֵ꣬ʾ0-ɾ1-ɾָ + BYTE byRes1[34]; // +}NET_DVR_FINGER_PRINT_BYCARD,*LPNET_DVR_FINGER_PRINT_BYCARD; + +typedef struct tagNET_DVR_FINGER_PRINT_BYREADER +{ + DWORD dwCardReaderNo; //ֵʾָƶ + BYTE byClearAllCard; //ǷɾпָϢ0-ɾָϢ1-ɾпָϢ + BYTE byRes1[3]; // + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + BYTE byRes[548]; // +}NET_DVR_FINGER_PRINT_BYREADER,*LPNET_DVR_FINGER_PRINT_BYREADER; + +typedef union tagNET_DVR_DEL_FINGER_PRINT_MODE +{ + BYTE uLen[588]; //峤 + NET_DVR_FINGER_PRINT_BYCARD struByCard; //ŵķʽɾ + NET_DVR_FINGER_PRINT_BYREADER struByReader; //ķʽɾ +}NET_DVR_DEL_FINGER_PRINT_MODE,*LPNET_DVR_DEL_FINGER_PRINT_MODE; + +typedef struct tagNET_DVR_FINGER_PRINT_INFO_CTRL +{ + DWORD dwSize; + BYTE byMode; //ɾʽ0-ŷʽɾ1-ɾ + BYTE byRes1[3]; // + NET_DVR_DEL_FINGER_PRINT_MODE struProcessMode; //ʽ + BYTE byRes[64]; // +}NET_DVR_FINGER_PRINT_INFO_CTRL,*LPNET_DVR_FINGER_PRINT_INFO_CTRL; + +typedef struct tagNET_DVR_FINGER_PRINT_BYCARD_V50 +{ + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + BYTE byEnableCardReader[MAX_CARD_READER_NUM_512]; //ָƵĶϢλʾ + BYTE byFingerPrintID[MAX_FINGER_PRINT_NUM/*10*/]; //Ҫɾָţ±ֵ꣬ʾ0-ɾ1-ɾָ + BYTE byRes1[2]; + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID +}NET_DVR_FINGER_PRINT_BYCARD_V50, *LPNET_DVR_FINGER_PRINT_BYCARD_V50; + +typedef struct tagNET_DVR_FINGER_PRINT_BYREADER_V50 +{ + DWORD dwCardReaderNo; //ֵʾָƶ + BYTE byClearAllCard; //ǷɾпָϢ0-ţԱIDɾָϢ1-ɾпԱIDָϢ + BYTE byRes1[3]; // + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID + BYTE byRes[516]; // +}NET_DVR_FINGER_PRINT_BYREADER_V50, *LPNET_DVR_FINGER_PRINT_BYREADER_V50; + +typedef union tagNET_DVR_DEL_FINGER_PRINT_MODE_V50 +{ + BYTE uLen[588]; //峤 + NET_DVR_FINGER_PRINT_BYCARD_V50 struByCard; //ţԱIDķʽɾ + NET_DVR_FINGER_PRINT_BYREADER_V50 struByReader; //ķʽɾ +}NET_DVR_DEL_FINGER_PRINT_MODE_V50, *LPNET_DVR_DEL_FINGER_PRINT_MODE_V50; + +typedef struct tagNET_DVR_FINGER_PRINT_INFO_CTRL_V50 +{ + DWORD dwSize; + BYTE byMode; //ɾʽ0-ţԱIDʽɾ1-ɾ + BYTE byRes1[3]; // + NET_DVR_DEL_FINGER_PRINT_MODE_V50 struProcessMode; //ʽ + BYTE byRes[64]; // +}NET_DVR_FINGER_PRINT_INFO_CTRL_V50, *LPNET_DVR_FINGER_PRINT_INFO_CTRL_V50; + +typedef struct tagNET_DVR_FINGER_PRINT_INFO_STATUS_V50 +{ + DWORD dwSize; + DWORD dwCardReaderNo; //ֵʾָƶ + BYTE byStatus; //״̬0-Ч1-У2-ɾʧܣ3-ɹ + BYTE byRes[63]; // +}NET_DVR_FINGER_PRINT_INFO_STATUS_V50, *LPNET_DVR_FINGER_PRINT_INFO_STATUS_V50; + +typedef enum _ACS_DEV_SUBEVENT_ENUM_ +{ + EVENT_ACS_HOST_ANTI_DISMANTLE = 0, //𱨾 + EVENT_ACS_OFFLINE_ECENT_NEARLY_FULL, //¼90% + EVENT_ACS_NET_BROKEN, //Ͽ + EVENT_ACS_NET_RESUME , //ָ + EVENT_ACS_LOW_BATTERY, //صѹ + EVENT_ACS_BATTERY_RESUME, //صѹָ + EVENT_ACS_AC_OFF, //ϵ + EVENT_ACS_AC_RESUME, //ָ + EVENT_ACS_SD_CARD_FULL, //SD洢 + EVENT_ACS_LINKAGE_CAPTURE_PIC, //ץ¼ + EVENT_ACS_IMAGE_QUALITY_LOW, //ͼʵ + EVENT_ACS_FINGER_PRINT_QUALITY_LOW, //ָͼʵ + EVENT_ACS_BATTERY_ELECTRIC_LOW, //صѹ(豸ʹ) + EVENT_ACS_BATTERY_ELECTRIC_RESUME, //صѹָ(豸ʹ) + EVENT_ACS_FIRE_IMPORT_SHORT_CIRCUIT, //· + EVENT_ACS_FIRE_IMPORT_BROKEN_CIRCUIT, //· + EVENT_ACS_FIRE_IMPORT_RESUME, //ָ + EVENT_ACS_MASTER_RS485_LOOPNODE_BROKEN, //RS485·ڵϿ + EVENT_ACS_MASTER_RS485_LOOPNODE_RESUME, //RS485·ڵָ + EVENT_ACS_LOCAL_CONTROL_OFFLINE, //͵ؿ + EVENT_ACS_LOCAL_CONTROL_RESUME, //͵ؿ߻ָ + EVENT_ACS_LOCAL_DOWNSIDE_RS485_LOOPNODE_BROKEN, //͵RS485·Ͽ + EVENT_ACS_LOCAL_DOWNSIDE_RS485_LOOPNODE_RESUME, //͵RS485·ָ + EVENT_ACS_DISTRACT_CONTROLLER_ONLINE, //ֿ + EVENT_ACS_DISTRACT_CONTROLLER_OFFLINE, //ֿ + EVENT_ACS_FIRE_BUTTON_TRIGGER, //ť + EVENT_ACS_FIRE_BUTTON_RESUME, //ťָ + EVENT_ACS_MAINTENANCE_BUTTON_TRIGGER, //άť + EVENT_ACS_MAINTENANCE_BUTTON_RESUME, //άťָ + EVENT_ACS_EMERGENCY_BUTTON_TRIGGER, //ť + EVENT_ACS_EMERGENCY_BUTTON_RESUME, //ťָ + EVENT_ACS_RES, + EVENT_ACS_SUBMARINEBACK_COMM_BREAK, //뷴DZطͨŶϿ + EVENT_ACS_SUBMARINEBACK_COMM_RESUME, //뷴DZطͨŻָ + EVENT_ACS_REMOTE_ACTUAL_GUARD, //Զʵʱ + EVENT_ACS_REMOTE_ACTUAL_UNGUARD, //Զʵʱ + EVENT_ACS_MOTOR_SENSOR_EXCEPTION, //򴫸쳣 + EVENT_ACS_CAN_BUS_EXCEPTION, //CAN쳣 + EVENT_ACS_CAN_BUS_RESUME, //CAN߻ָ + EVENT_ACS_GATE_TEMPERATURE_OVERRUN, //բǻ¶ȳ + EVENT_ACS_IR_EMITTER_EXCEPTION, //쳣 + EVENT_ACS_IR_EMITTER_RESUME, //ָ + EVENT_ACS_LAMP_BOARD_COMM_EXCEPTION, //ưͨ쳣 + EVENT_ACS_LAMP_BOARD_COMM_RESUME, //ưͨŻָ + EVENT_ACS_IR_ADAPTOR_BOARD_COMM_EXCEPTION, //תӰͨ쳣 + EVENT_ACS_IR_ADAPTOR_BOARD_COMM_RESUME, //תӰͨŻָ + EVENT_ACS_CHANNEL_CONTROLLER_DESMANTLE_ALARM, //ͨ𱨾 + EVENT_ACS_CHANNEL_CONTROLLER_DESMANTLE_RESUME, //ͨ𱨾ָ + EVENT_ACS_CHANNEL_CONTROLLER_FIRE_IMPORT_ALARM, //ͨ뱨 + EVENT_ACS_CHANNEL_CONTROLLER_FIRE_IMPORT_RESUME, //ͨ뱨ָ + EVENT_ACS_STAY_EVENT, //¼ + EVENT_ACS_LEGAL_EVENT_NEARLY_FULL, //ߺϷ¼90% + EVENT_ACS_FIRE_IMPORT_ALARM = 52, //뱨 + EVENT_ACS_NOMASK_ALARM, //δֱ + EVENT_ACS_FIREMATRIX_EVENT, //¼ϴ + EVENT_ACS_HEALTH_INFO_ABNORMAL_LOCK, //Ϣ쳣 + EVENT_ACS_HEALTH_INFO_ABNORMAL_UNLOCK, //Ϣ쳣 + EVENT_ACS_IPC_EVENT //IPC¼ϴ +}ACS_DEV_SUBEVENT_ENUM; + +typedef enum _ACS_ALARM_SUBEVENT_ENUM_ +{ + EVENT_ACS_ALARMIN_SHORT_CIRCUIT = 0, //· + EVENT_ACS_ALARMIN_BROKEN_CIRCUIT, //· + EVENT_ACS_ALARMIN_EXCEPTION, //쳣 + EVENT_ACS_ALARMIN_RESUME, //ָ + EVENT_ACS_CASE_SENSOR_ALARM, //¼뱨 + EVENT_ACS_CASE_SENSOR_RESUME //¼ָ +}ACS_ALARM_SUBEVENT_ENUM; + +typedef enum _ACS_DOOR_SUBEVENT_ENUM_ +{ + EVENT_ACS_LEADER_CARD_OPEN_BEGIN = 0, //׿ſʼ + EVENT_ACS_LEADER_CARD_OPEN_END, //׿Ž + EVENT_ACS_ALWAYS_OPEN_BEGIN , //״̬ʼ + EVENT_ACS_ALWAYS_OPEN_END, //״̬ + EVENT_ACS_ALWAYS_CLOSE_BEGIN, //״̬ʼ + EVENT_ACS_ALWAYS_CLOSE_END, //״̬ + EVENT_ACS_LOCK_OPEN, // + EVENT_ACS_LOCK_CLOSE, //ر + EVENT_ACS_DOOR_BUTTON_PRESS, //Űť + EVENT_ACS_DOOR_BUTTON_RELEASE, //Űťſ + EVENT_ACS_DOOR_OPEN_NORMAL, //ţŴţ + EVENT_ACS_DOOR_CLOSE_NORMAL , //ţŴţ + EVENT_ACS_DOOR_OPEN_ABNORMAL, //쳣򿪣Ŵţ + EVENT_ACS_DOOR_OPEN_TIMEOUT, //Ŵ򿪳ʱŴţ + EVENT_ACS_REMOTE_OPEN_DOOR, //Զ̿ + EVENT_ACS_REMOTE_CLOSE_DOOR, //Զ̹ + EVENT_ACS_REMOTE_ALWAYS_OPEN, //Զ̳ + EVENT_ACS_REMOTE_ALWAYS_CLOSE, //Զ̳ + EVENT_ACS_NOT_BELONG_MULTI_GROUP, //ڶ֤Ⱥ + EVENT_ACS_INVALID_MULTI_VERIFY_PERIOD, //ڶ֤ʱ + EVENT_ACS_MULTI_VERIFY_SUPER_RIGHT_FAIL, //֤ģʽ֤ʧ + EVENT_ACS_MULTI_VERIFY_REMOTE_RIGHT_FAIL, //֤ģʽԶ֤ʧ + EVENT_ACS_MULTI_VERIFY_SUCCESS, //֤ɹ + EVENT_ACS_MULTI_VERIFY_NEED_REMOTE_OPEN, //ض֤ҪԶ̿ + EVENT_ACS_MULTI_VERIFY_SUPERPASSWD_VERIFY_SUCCESS, //֤֤ɹ¼ + EVENT_ACS_MULTI_VERIFY_REPEAT_VERIFY_FAIL, //֤ظ֤ʧ + EVENT_ACS_MULTI_VERIFY_TIMEOUT, //֤ʱʧ + EVENT_ACS_REMOTE_CAPTURE_PIC, //Զץ + EVENT_ACS_DOORBELL_RINGING, // + EVENT_ACS_SECURITY_MODULE_DESMANTLE_ALARM, //ſذȫģ𱨾 + EVENT_ACS_CALL_CENTER, //¼ + EVENT_ACS_FIRSTCARD_AUTHORIZE_BEGIN, //׿Ȩʼ + EVENT_ACS_FIRSTCARD_AUTHORIZE_END, //׿Ȩ + EVENT_ACS_DOORLOCK_INPUT_SHORT_CIRCUIT, //· + EVENT_ACS_DOORLOCK_INPUT_BROKEN_CIRCUIT, //· + EVENT_ACS_DOORLOCK_INPUT_EXCEPTION, //쳣 + EVENT_ACS_DOORCONTACT_INPUT_SHORT_CIRCUIT, //Ŵ· + EVENT_ACS_DOORCONTACT_INPUT_BROKEN_CIRCUIT, //Ŵ· + EVENT_ACS_DOORCONTACT_INPUT_EXCEPTION, //Ŵ쳣 + EVENT_ACS_OPENBUTTON_INPUT_SHORT_CIRCUIT, //Űť· + EVENT_ACS_OPENBUTTON_INPUT_BROKEN_CIRCUIT, //Űť· + EVENT_ACS_OPENBUTTON_INPUT_EXCEPTION, //Űť쳣 + EVENT_ACS_DOORLOCK_OPEN_EXCEPTION, //쳣 + EVENT_ACS_DOORLOCK_OPEN_TIMEOUT, //򿪳ʱ + EVENT_ACS_FIRSTCARD_OPEN_WITHOUT_AUTHORIZE, //׿δȨʧ + EVENT_ACS_CALL_LADDER_RELAY_BREAK, //ݼ̵Ͽ + EVENT_ACS_CALL_LADDER_RELAY_CLOSE, //ݼ̵պ + EVENT_ACS_AUTO_KEY_RELAY_BREAK, //Զ̵Ͽ + EVENT_ACS_AUTO_KEY_RELAY_CLOSE, //Զ̵պ + EVENT_ACS_KEY_CONTROL_RELAY_BREAK, //ݿؼ̵Ͽ + EVENT_ACS_KEY_CONTROL_RELAY_CLOSE, //ݿؼ̵պ + EVENT_ACS_REMOTE_VISITOR_CALL_LADDER, //ÿͺ + EVENT_ACS_REMOTE_HOUSEHOLD_CALL_LADDER, //ס + EVENT_ACS_LEGAL_MESSAGE, //Ϸ + EVENT_ACS_ILLEGAL_MESSAGE, //Ƿ + EVENT_ACS_TRAILING, //βͨ + EVENT_ACS_REVERSE_ACCESS, // + EVENT_ACS_FORCE_ACCESS, //ײ + EVENT_ACS_CLIMBING_OVER_GATE, //Խ + EVENT_ACS_PASSING_TIMEOUT, //ͨгʱ + EVENT_ACS_INTRUSION_ALARM, //󴳱 + EVENT_ACS_FREE_GATE_PASS_NOT_AUTH, //բͨʱδ֤ͨ + EVENT_ACS_DROP_ARM_BLOCK, //ڱ۱赲 + EVENT_ACS_DROP_ARM_BLOCK_RESUME, //ڱ赲 + EVENT_ACS_REMOTE_CONTROL_CLOSE_DOOR, //ң + EVENT_ACS_REMOTE_CONTROL_OPEN_DOOR, //ң + EVENT_ACS_REMOTE_CONTROL_ALWAYS_OPEN_DOOR //ң +}ACS_DOOR_SUBEVENT_ENUM; + +typedef enum _ACS_CARD_READER_SUBEVENT_ENUM_ +{ + EVENT_ACS_STRESS_ALARM = 0, //вȱ + EVENT_ACS_CARD_READER_DESMANTLE_ALARM, //𱨾 + EVENT_ACS_LEGAL_CARD_PASS, //Ϸ֤ͨ + EVENT_ACS_CARD_AND_PSW_PASS, //ˢ֤ͨ + EVENT_ACS_CARD_AND_PSW_FAIL, //ˢ֤ʧ + EVENT_ACS_CARD_AND_PSW_TIMEOUT, //ˢ֤ʱ + EVENT_ACS_CARD_MAX_AUTHENTICATE_FAIL, //֤ʧܳ + EVENT_ACS_CARD_NO_RIGHT, //δȨ + EVENT_ACS_CARD_INVALID_PERIOD, //ǰʱЧ + EVENT_ACS_CARD_OUT_OF_DATE, //Ź + EVENT_ACS_INVALID_CARD, //޴˿ + EVENT_ACS_ANTI_SNEAK_FAIL, //DZ֤ʧ + EVENT_ACS_INTERLOCK_DOOR_NOT_CLOSE, //δر + EVENT_ACS_FINGERPRINT_COMPARE_PASS, //ָƱȶͨ + EVENT_ACS_FINGERPRINT_COMPARE_FAIL, //ָƱȶʧ + EVENT_ACS_CARD_FINGERPRINT_VERIFY_PASS, //ˢָ֤ͨ + EVENT_ACS_CARD_FINGERPRINT_VERIFY_FAIL, //ˢָ֤ʧ + EVENT_ACS_CARD_FINGERPRINT_VERIFY_TIMEOUT, //ˢָ֤ʱ + EVENT_ACS_CARD_FINGERPRINT_PASSWD_VERIFY_PASS, //ˢָƼ֤ͨ + EVENT_ACS_CARD_FINGERPRINT_PASSWD_VERIFY_FAIL, //ˢָƼ֤ʧ + EVENT_ACS_CARD_FINGERPRINT_PASSWD_VERIFY_TIMEOUT, //ˢָƼ֤ʱ + EVENT_ACS_FINGERPRINT_PASSWD_VERIFY_PASS, //ָƼ֤ͨ + EVENT_ACS_FINGERPRINT_PASSWD_VERIFY_FAIL, //ָƼ֤ʧ + EVENT_ACS_FINGERPRINT_PASSWD_VERIFY_TIMEOUT, //ָƼ֤ʱ + EVENT_ACS_FINGERPRINT_INEXISTENCE, //ָƲ + EVENT_ACS_FACE_VERIFY_PASS, //֤ͨ + EVENT_ACS_FACE_VERIFY_FAIL, //֤ʧ + EVENT_ACS_FACE_AND_FP_VERIFY_PASS, //ָ֤ͨ + EVENT_ACS_FACE_AND_FP_VERIFY_FAIL, //ָ֤ʧ + EVENT_ACS_FACE_AND_FP_VERIFY_TIMEOUT, //ָ֤ʱ + EVENT_ACS_FACE_AND_PW_VERIFY_PASS, //֤ͨ + EVENT_ACS_FACE_AND_PW_VERIFY_FAIL, //֤ʧ + EVENT_ACS_FACE_AND_PW_VERIFY_TIMEOUT, //֤ʱ + EVENT_ACS_FACE_AND_CARD_VERIFY_PASS, //ˢ֤ͨ + EVENT_ACS_FACE_AND_CARD_VERIFY_FAIL, //ˢ֤ʧ + EVENT_ACS_FACE_AND_CARD_VERIFY_TIMEOUT, //ˢ֤ʱ + EVENT_ACS_FACE_AND_PW_AND_FP_VERIFY_PASS, //ָ֤ͨ + EVENT_ACS_FACE_AND_PW_AND_FP_VERIFY_FAIL, //ָ֤ʧ + EVENT_ACS_FACE_AND_PW_AND_FP_VERIFY_TIMEOUT, //ָ֤ʱ + EVENT_ACS_FACE_AND_CARD_AND_FP_VERIFY_PASS, //ˢָ֤ͨ + EVENT_ACS_FACE_AND_CARD_AND_FP_VERIFY_FAIL, //ˢָ֤ʧ + EVENT_ACS_FACE_AND_CARD_AND_FP_VERIFY_TIMEOUT, //ˢָ֤ʱ + EVENT_ACS_EMPLOYEENO_AND_FP_VERIFY_PASS, //żָ֤ͨ + EVENT_ACS_EMPLOYEENO_AND_FP_VERIFY_FAIL, //żָ֤ʧ + EVENT_ACS_EMPLOYEENO_AND_FP_VERIFY_TIMEOUT, //żָ֤ʱ + EVENT_ACS_EMPLOYEENO_AND_FP_AND_PW_VERIFY_PASS, //żָƼ֤ͨ + EVENT_ACS_EMPLOYEENO_AND_FP_AND_PW_VERIFY_FAIL, //żָƼ֤ʧ + EVENT_ACS_EMPLOYEENO_AND_FP_AND_PW_VERIFY_TIMEOUT, //żָƼ֤ʱ + EVENT_ACS_EMPLOYEENO_AND_FACE_VERIFY_PASS, //ż֤ͨ + EVENT_ACS_EMPLOYEENO_AND_FACE_VERIFY_FAIL, //ż֤ʧ + EVENT_ACS_EMPLOYEENO_AND_FACE_VERIFY_TIMEOUT, //ż֤ʱ + EVENT_ACS_FACE_RECOGNIZE_FAIL, //ʶʧ + EVENT_ACS_EMPLOYEENO_AND_PW_PASS, //ż֤ͨ + EVENT_ACS_EMPLOYEENO_AND_PW_FAIL, //ż֤ʧ + EVENT_ACS_EMPLOYEENO_AND_PW_TIMEOUT, //ż֤ʱ + EVENT_ACS_HUMAN_DETECT_FAIL, //˼ʧ + EVENT_ACS_PEOPLE_AND_ID_CARD_COMPARE_PASS, //֤ȶͨ + EVENT_ACS_PEOPLE_AND_ID_CARD_COMPARE_FAIL, //֤ȶʧ + EVENT_ACS_DOOR_OPEN_OR_DORMANT_FAIL, //״̬ջ״̬֤ʧ + EVENT_ACS_AUTH_PLAN_DORMANT_FAIL, //֤ƻģʽ֤ʧ + EVENT_ACS_CARD_ENCRYPT_VERIFY_FAIL, //Уʧ + EVENT_ACS_SUBMARINEBACK_REPLY_FAIL, //DZطӦʧ + EVENT_ACS_PASSWORD_MISMATCH, //벻ƥ + EVENT_ACS_EMPLOYEE_NO_NOT_EXIST, //Ų + EVENT_ACS_COMBINED_VERIFY_PASS, //֤ͨ + EVENT_ACS_COMBINED_VERIFY_TIMEOUT, //֤ʱ + EVENT_ACS_VERIFY_MODE_MISMATCH, //֤ʽƥ + EVENT_ACS_PSW_ERROR_OVER_TIMES, //֤ 67 + EVENT_ACS_PSW_VERIFY_PASS, //֤ͨ + EVENT_ACS_PSW_VERIFY_FAIL, //֤ʧ + EVENT_ACS_ORCODE_VERIFY_PASS, //ά֤ͨ + EVENT_ACS_ORCODE_VERIFY_FAIL, //ά֤ʧ + EVENT_ACS_HOUSEHOLDER_AUTHORIZE_PASS, //Ȩ֤ͨ + EVENT_ACS_BLUETOOTH_VERIFY_PASS, //֤ͨ + EVENT_ACS_BLUETOOTH_VERIFY_FAIL, //֤ʧ 74 + EVENT_ACS_INFORMAL_MIFARE_CARD_VERIFY_FAIL, //Mifare֤ʧ + EVENT_ACS_CPU_CARD_ENCRYPT_VERIFY_FAIL, //CPUУʧ + EVENT_ACS_NFC_DISABLE_VERIFY_FAIL, //NFCܹر֤ʧ + EVENT_ACS_EM_CARD_RECOGNIZE_NOT_ENABLED, //EMʶδ + EVENT_ACS_M1_CARD_RECOGNIZE_NOT_ENABLED, //M1ʶδ + EVENT_ACS_CPU_CARD_RECOGNIZE_NOT_ENABLED, //CPUʶδ + EVENT_ACS_ID_CARD_RECOGNIZE_NOT_ENABLED, //֤ʶδ + EVENT_ACS_CARD_SET_SECRET_KEY_FAIL, //װԿʧ + EVENT_ACS_DESFIRE_CARD_ENCRYPT_VERIFY_FAIL, //DesfireУʧ + EVENT_ACS_DESFIRE_CARD_RECOGNIZE_NOT_ENABLED, //Desfireʶδ + EVENT_ACS_IRIS_VERIFY_PASS, //Ĥ֤ͨ + EVENT_ACS_IRIS_VERIFY_FAIL, //Ĥ֤ʧ + EVENT_ACS_IRIS_BIOASSAY_FAIL, //Ĥʧ + EVENT_ACS_FELICA_CARD_RECOGNIZE_NOT_ENABLED, //Felicaʶδ + EVENT_ACS_ORCODE_RECOGNIZE_PASS //άʶɹά¼κ֤ +}ACS_CARD_READER_SUBEVENT_ENUM; + +typedef struct tagNET_DVR_EVENT_LINKAGE_INFO +{ + WORD wMainEventType; //¼ͣ0-豸¼1-¼2-¼3-¼ + WORD wSubEventType; //¼ + BYTE byRes[28]; +}NET_DVR_EVENT_LINKAGE_INFO,*LPNET_DVR_EVENT_LINKAGE_INFO; + +typedef union tagNET_DVR_EVETN_CARD_LINKAGE_UNION +{ + BYTE byCardNo[ACS_CARD_NO_LEN]; // + NET_DVR_EVENT_LINKAGE_INFO struEventLinkage; //¼ʱ + BYTE byMACAddr[MACADDR_LEN]; //MACַ + BYTE byEmployeeNo[NET_SDK_EMPLOYEE_NO_LEN]; //ţԱID +}NET_DVR_EVETN_CARD_LINKAGE_UNION,*LPNET_DVR_EVETN_CARD_LINKAGE_UNION; + +typedef struct tagNET_DVR_EVENT_CARD_LINKAGE_CFG +{ + DWORD dwSize; //ṹС + BYTE byProMode; //ʽ0-¼1- + BYTE byRes1[3]; + DWORD dwEventSourceID; //¼ԴIDΪ豸¼ʱЧ ¼ʱΪű;Ϊ¼ʱΪID;Ϊ¼ʱΪID¼ID + NET_DVR_EVETN_CARD_LINKAGE_UNION uLinkageInfo; //ʽ + BYTE byAlarmout[MAX_ALARMHOST_ALARMOUT_NUM]; //ıţʾΪ0ʾΪ1ʾ + BYTE byRes2[32]; // + BYTE byOpenDoor[MAX_DOOR_NUM_256]; //ʾ,Ƿţ0-1- + BYTE byCloseDoor[MAX_DOOR_NUM_256]; //ʾ,Ƿţ0-1- + BYTE byNormalOpen[MAX_DOOR_NUM_256]; //ʾ,Ƿ0-1- + BYTE byNormalClose[MAX_DOOR_NUM_256]; //ʾ,Ƿأ0-1- + BYTE byMainDevBuzzer; // 0-1- + BYTE byCapturePic; //Ƿץģ0-ץģ1-ץ + BYTE byRecordVideo; //Ƿ¼0-¼1-¼ + BYTE byRes3[29]; // + BYTE byReaderBuzzer[MAX_CARD_READER_NUM_512]; //ʾ0-1- + BYTE byRes[128]; // +}NET_DVR_EVENT_CARD_LINKAGE_CFG,*LPNET_DVR_EVENT_CARD_LINKAGE_CFG; + +typedef struct tagNET_DVR_EVENT_LINKAGE_CARD_CFG_V50 +{ + DWORD dwSize; //ṹС + BYTE byProMode; //ʽ0-¼1-, 2-MACַ + BYTE byRes1[3]; + DWORD dwEventSourceID; //¼ԴIDΪ豸¼ʱЧ ¼ʱΪű;Ϊ¼ʱΪID;Ϊ¼ʱΪID¼ID0xffffffffʾȫ + NET_DVR_EVETN_CARD_LINKAGE_UNION uLinkageInfo; //ʽ + BYTE byAlarmout[MAX_ALARMHOST_ALARMOUT_NUM]; //ıţλʾΪ0ʾΪ1ʾ + BYTE byRes2[32]; // + BYTE byOpenDoor[MAX_DOOR_NUM_256]; //λʾ,Ƿţ0-1- + BYTE byCloseDoor[MAX_DOOR_NUM_256]; //λʾ,Ƿţ0-1- + BYTE byNormalOpen[MAX_DOOR_NUM_256]; //λʾ,Ƿ0-1- + BYTE byNormalClose[MAX_DOOR_NUM_256]; //λʾ,Ƿأ0-1- + BYTE byMainDevBuzzer; // 0-1- + BYTE byCapturePic; //Ƿץģ0-ץģ1-ץ + BYTE byRecordVideo; //Ƿ¼0-¼1-¼ + BYTE byRes3[29]; // + BYTE byReaderBuzzer[MAX_CARD_READER_NUM_512]; //λʾ0-1- + BYTE byAlarmOutClose[MAX_ALARMHOST_ALARMOUT_NUM]; //رգֽڱʾΪ0ʾΪ1ʾ + BYTE byAlarmInSetup[MAX_ALARMHOST_ALARMIN_NUM]; //ֽڱʾΪ0ʾΪ1ʾ + BYTE byAlarmInClose[MAX_ALARMHOST_ALARMIN_NUM]; //ֽڱʾΪ0ʾΪ1ʾ + BYTE byRes[500]; // +}NET_DVR_EVENT_CARD_LINKAGE_CFG_V50, *LPNET_DVR_EVENT_CARD_LINKAGE_CFG_V50; + +typedef struct tagNET_DVR_EVENT_LINKAGE_CARD_CFG_V51 +{ + DWORD dwSize; //ṹС + BYTE byProMode; //ʽ0-¼1-ţ2-MACַ3-ţԱID + BYTE byRes1[3]; + DWORD dwEventSourceID; //¼ԴIDΪ豸¼ʱЧ ¼ʱΪű;Ϊ¼ʱΪID;Ϊ¼ʱΪID¼ID0xffffffffʾȫ + NET_DVR_EVETN_CARD_LINKAGE_UNION uLinkageInfo; //ʽ + BYTE byAlarmout[MAX_ALARMHOST_ALARMOUT_NUM]; //ıţλʾΪ0ʾΪ1ʾ + BYTE byRes2[32]; // + BYTE byOpenDoor[MAX_DOOR_NUM_256]; //λʾ,Ƿţ0-1- + BYTE byCloseDoor[MAX_DOOR_NUM_256]; //λʾ,Ƿţ0-1- + BYTE byNormalOpen[MAX_DOOR_NUM_256]; //λʾ,Ƿ0-1- + BYTE byNormalClose[MAX_DOOR_NUM_256]; //λʾ,Ƿأ0-1- + BYTE byMainDevBuzzer; // 0-1- + BYTE byCapturePic; //Ƿץģ0-ץģ1-ץ + BYTE byRecordVideo; //Ƿ¼0-¼1-¼ + BYTE byMainDevStopBuzzer; //ֹͣ 0-1- + WORD wAudioDisplayID; //ID0-ĿǰΧ1-32 + BYTE byAudioDisplayMode; //ģʽ0-رգ1-βţ2-ѭ + BYTE byRes3[25]; // + BYTE byReaderBuzzer[MAX_CARD_READER_NUM_512]; //λʾ0-1- + BYTE byAlarmOutClose[MAX_ALARMHOST_ALARMOUT_NUM]; //رգֽڱʾΪ0ʾΪ1ʾ + BYTE byAlarmInSetup[MAX_ALARMHOST_ALARMIN_NUM]; //ֽڱʾΪ0ʾΪ1ʾ + BYTE byAlarmInClose[MAX_ALARMHOST_ALARMIN_NUM]; //ֽڱʾΪ0ʾΪ1ʾ + BYTE byReaderStopBuzzer[MAX_CARD_READER_NUM_512]; //ֹֽͣڱʾ0-1- + BYTE byRes[512]; // +}NET_DVR_EVENT_CARD_LINKAGE_CFG_V51, *LPNET_DVR_EVENT_CARD_LINKAGE_CFG_V51; + +typedef struct tagNET_DVR_EVENT_CARD_LINKAGE_COND +{ + DWORD dwSize; + DWORD dwEventID; //¼ID + WORD wLocalControllerID; //͵ؿ[1,64] + BYTE byRes[106]; +}NET_DVR_EVENT_CARD_LINKAGE_COND, *LPNET_DVR_EVENT_CARD_LINKAGE_COND; + +typedef struct tagNET_DVR_RIGHT_CONTROLLER_AUDIO_PARAM +{ + DWORD dwSize; + DWORD dwFileSize; //ļСλֽڣϴƵļʱЧƵļʱЧ + DWORD dwAudioID; //ƵID0xffffffffϴ/ȫƵļĿǰ豸֧ȫϴ/أֵ֧ƵIDϴ/أ + BYTE byRes[256]; +}NET_DVR_RIGHT_CONTROLLER_AUDIO_PARAM, *LPNET_DVR_RIGHT_CONTROLLER_AUDIO_PARAM; + +//ͻ궨ļṹ +typedef struct tagNET_DVR_CLIENT_CALIBFILE_PARAM +{ + DWORD dwSize; + DWORD dwFileLen; //ļС + BYTE byChannel; //ͨ + BYTE byFileType; //0-3200W궨ļ,1-800W궨ļ + BYTE byRes[22]; +}NET_DVR_CLIENT_CALIBFILE_PARAM, *LPNET_DVR_CLIENT_CALIBFILE_PARAM; + +typedef struct tagNET_DVR_RATIOSTITCHING_PARAM +{ + DWORD dwSize; + DWORD dwFileLen; //ļС + BYTE byChannel;// senorƴӺͨ + BYTE byRes[23]; +}NET_DVR_RATIOSTITCHING_PARAM, *LPNET_DVR_RATIOSTITCHING_PARAM; + +//ǽزļ +typedef struct tagNET_DVR_VIDEOWALL_MATERIAL_COND +{ + DWORD dwSize; + BYTE byWallNo; //ǽǽţ1ʼ + BYTE byWindowType; //ͣ0-ͼĴ,1-Ļ + BYTE byFileType; //ļͣ0-ͼƬ + BYTE byRes1; //ֽ + DWORD dwWindowNo; //ڱţ1ʼ + DWORD dwMaterialNo; //زıţ1ʼ + BYTE byRes[32]; +}NET_DVR_VIDEOWALL_MATERIAL_COND, *LPNET_DVR_VIDEOWALL_MATERIAL_COND; + +//3200Wṹ +typedef struct tagNET_DVR_CORRECT_TABLE_3200W_PARAM +{ + DWORD dwSize; + DWORD dwFileLen; //ļС + BYTE byChannel; //ͨ + BYTE byFileType; //0-3200W궨ļ,1-800W궨ļ + BYTE byRes[22]; +}NET_DVR_CORRECT_TABLE_3200W_PARAM, *LPNET_DVR_CORRECT_TABLE_3200W_PARAM; + +//ͨץͼļṹ +typedef struct tagNET_DVR_FOUR_CAMERAS_PICTURES +{ + DWORD dwSize; + DWORD dwFileLen; //ļС + BYTE byChannel; //ͨ + BYTE byRes[23]; +}NET_DVR_FOUR_CAMERAS_PICTURES, *LPNET_DVR_FOUR_CAMERAS_PICTURES; + +// ָͺű궨ļṹ +typedef struct tagNET_DVR_DEVTYPE_CALIBFILE_PARAM +{ + DWORD dwSize; + DWORD dwFileLen; //ļ + BYTE byChannel; //ͨ + BYTE byFileType; //0-3200W궨ļ,1-800W궨ļ + BYTE byRes[22]; +}NET_DVR_DEVTYPE_CALIBFILE_PARAM, *LPNET_DVR_DEVTYPE_CALIBFILE_PARAM; + +typedef struct tagNET_DVR_ANTI_SNEAK_HOST_INFO +{ + NET_DVR_ADDRESS struDVRIP; //IPַ + BYTE byIsStartAddr; //ǷΪʼַ0-1- + BYTE byHostNo; //ţ1-8Ҫڶ˳ + BYTE byRes[34]; // +}NET_DVR_ANTI_SNEAK_HOST_INFO,*LPNET_DVR_ANTI_SNEAK_HOST_INFO; + +typedef struct tagNET_DVR_ANTI_SNEAK_HOST_READER_INFO +{ + BYTE byAntiSnealHostNo; //DZ + BYTE byRes[5]; // + WORD wFollowUpCardReader; //÷DZµĶ +}NET_DVR_ANTI_SNEAK_HOST_READER_INFO, *LPNET_DVR_ANTI_SNEAK_HOST_READER_INFO; + +typedef struct tagNET_DVR_ANTI_SNEAK_MULTI_HOST_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿ뷴DZ·1-룬0- + BYTE byRes1[3]; + NET_DVR_ANTI_SNEAK_HOST_INFO struSneakHost[MAX_SNEAK_PATH_NODE]; //ַϢ + NET_DVR_ANTI_SNEAK_HOST_READER_INFO struStartReader; //ʼ ȫΪ0ʱʾעĸʼ + BYTE byRes2[128]; +}NET_DVR_ANTI_SNEAK_MULTI_HOST_CFG, *LPNET_DVR_ANTI_SNEAK_MULTI_HOST_CFG; + +typedef struct tagNET_DVR_ANTI_SNEAK_READER_CFG +{ + BYTE byEnable; //Ƿ뷴DZ·1-룬0- + BYTE byAntiSnealHostNo; //DZ + WORD wReaderID; //ID + NET_DVR_ANTI_SNEAK_HOST_READER_INFO struSneakReaderInfo[MAX_SNEAK_PATH_NODE]; // + BYTE byRes2[8]; +}NET_DVR_ANTI_SNEAK_READER_CFG, *LPNET_DVR_ANTI_SNEAK_READER_CFG; + +typedef struct tagNET_DVR_ANTI_SNEAK_MULTI_HOST_READERS_CFG +{ + DWORD dwSize; + NET_DVR_ANTI_SNEAK_READER_CFG struReaderCfg[MAX_READER_ROUTE_NUM]; //Ϣ + BYTE byRes[128]; +}NET_DVR_ANTI_SNEAK_MULTI_HOST_READERS_CFG, *LPNET_DVR_ANTI_SNEAK_MULTI_HOST_READERS_CFG; + +typedef struct tagNET_DVR_ACS_CFG +{ + DWORD dwSize; //ṹС + BYTE byRS485Backup; //ǷRS485ͨűݹܣ0-ã1- + BYTE byShowCapPic; //ǷʾץͼƬ 0-ʾ1-ʾ + BYTE byShowCardNo; //Ƿʾţ0-ʾ1-ʾ + BYTE byShowUserInfo; //ǷʾûϢ0-ʾ1-ʾ + BYTE byOverlayUserInfo;//ǷûϢ0-ӣ1- + BYTE byVoicePrompt; //Ƿʾ0-ã1- + BYTE byUploadCapPic; //ץǷϴͼƬ0-ϴ1-ϴ + BYTE bySaveCapPic; //Ƿ񱣴ץͼƬ0-棬1- + BYTE byInputCardNo; //ǷǷ뿨ţ0-1- + BYTE byEnableWifiDetect; //Ƿwifi̽룬0-1- + BYTE byEnable3G4G; //3G4Gʹܣ0-ʹܣ1-ʹ + BYTE byProtocol;//ͨЭͣ0-˽Э飨Ĭϣ1-OSDPЭ + BYTE byRes[500]; +}NET_DVR_ACS_CFG, *LPNET_DVR_ACS_CFG; + +typedef struct tagNET_DVR_PLATFORM_VERIFY_CFG +{ + DWORD dwSize; + DWORD dwDoorNo; //ű + BYTE byResultType; //֤ͣ0Ƿ1Ϸ + BYTE byRes1[3]; + BYTE byScreenDisplay[MAX_SCREEN_DISPLAY_LEN]; //LEDĻʾʾ֤Ϣ + BYTE byRes[300]; // ֽ +}NET_DVR_PLATFORM_VERIFY_CFG, *LPNET_DVR_PLATFORM_VERIFY_CFG; + +typedef struct tagNET_DVR_PERSON_STATISTICS_CFG +{ + DWORD dwSize; + BYTE byEnableStatistics; //Ƿͳƣ01 + BYTE byEnableOfflineStatistics; //Ƿͳƣ01 + BYTE byCountSignalStatisticalStandard; //źͳƱ׼0Ч1ͨͳƣ2֤ͳ + BYTE byRes[605]; +}NET_DVR_PERSON_STATISTICS_CFG, *LPNET_DVR_PERSON_STATISTICS_CFG; + +typedef struct tagNET_DVR_ACS_SCREEN_DISPLAY_CFG +{ + DWORD dwSize; + DWORD dwFontSize; //С[1,10] + DWORD dwRowSpacing; //м࣬λص㣻 + DWORD dwColumnSpacing; //м࣬λص㣻 + DWORD dwFirstRowPosition; //ʼλĻһֿ飬00 11/8: 22/8 33/8 44/8 55/8 66/8: 77/8 + BYTE byDegree; //ַʾǶȣ0-0ȣ1-90ȣţ + BYTE byScreenType; //Ļͣ0-DC48270RS043_01T1-DC80480B070_03T + BYTE byRes[306]; +}NET_DVR_ACS_SCREEN_DISPLAY_CFG, *LPNET_DVR_ACS_SCREEN_DISPLAY_CFG; + +typedef struct tagNET_DVR_GATE_TIME_CFG +{ + DWORD dwSize; + DWORD dwHoldOnALarmTime; //ʱ䣬λms + DWORD dwHoldOnGateOpenTime; //բյرǰִ״̬ʱ䣬λms + DWORD dwPostponeIntrusionAlarmTime; //ƳٴƭΪʱ䣬λms + DWORD dwNoLaneAccessTimeLimitTime; //ͨյЧ֤ͨźţͨгʱʱ䣬λs + DWORD dwSafetyZoneStayTime; //ͨյЧ֤ͨźţ˿͵ﰲȫͨʱʱ䣬λs + BYTE byIRTriggerTimeoutTime; //ⴥʱʱ䣬λ루0-255 + BYTE byRes[299]; +}NET_DVR_GATE_TIME_CFG, *LPNET_DVR_GATE_TIME_CFG; + + +typedef struct tagNET_DVR_CARD_PASSWD_CFG +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; // + BYTE byCardPassword[CARD_PASSWORD_LEN]; // + DWORD dwErrorCode; //ȡ뿪ʹ÷صĴ룬ɹΪ0ʧܷش + BYTE byCardValid; //ǷЧ0-Ч1-ЧɾʱΪ0ɾȡʱֶʼΪ1 + BYTE byRes2[23]; +}NET_DVR_CARD_PASSWD_CFG, *LPNET_DVR_CARD_PASSWD_CFG; + +typedef struct tagNET_DVR_CARD_PASSWD_STATUS +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; // + DWORD dwErrorCode; //Ϳ뿪ʹ÷صĴ룬ɹΪ0ʧܷش + BYTE byRes2[24]; +}NET_DVR_CARD_PASSWD_STATUS, *LPNET_DVR_CARD_PASSWD_STATUS; + +//ṹ +typedef struct tagNET_DVR_VEHICLE_RECOG_COND +{ + DWORD dwSize; + DWORD dwChannel; + BYTE byRes[64]; +} NET_DVR_VEHICLE_RECOG_COND, *LPNET_DVR_VEHICLE_RECOG_COND; + +//ṹ +typedef struct tagNET_DVR_VEHICLE_RECOG_CFG +{ + DWORD dwSize; + //ˮ ͣϴNET_DVR_VEHICLE_RECOG_RESULTеֶsDataIndexӦ + char sDataIndex[DATA_INDEX_LEN]; + // (ϴNET_DVR_VEHICLE_RECOG_RESULTеֶdwTaskNoӦ) + WORD wTaskNo; + BYTE byRes1[2]; + NET_VCA_RECT struPlateRect;//λ + char sLicense[MAX_LICENSE_LEN/*16*/];//ƺ + /* + ͼƬʶ + bit0-ʶ0-ʶ1-ʶ + bit1-ʶ0-ʶ1-ʶ + bit2-ɫʶ0-ʶ1-ʶ + bit3-Ʒʶ0-ʶ1-ʶ + bit4-ڵʶ(ʻ)0-ʶ1-ʶ + bit5-ȫʶ(ʻ)0-ʶ1-ʶ + bit6-ڵʶ(ʻ)0-ʶ1-ʶ + bit7-ȫʶ(ʻ)0-ʶ1-ʶ + bit8-ͼƬʹܣ0-ʶ1-ʶ + bit9-ϴͼƬʹ(ͨSDK)0-ʶ1-ʶ + bit10-ϴͼƬʹ(ͨURL)0-ʶ1-ʶ + bit11-Ʊ공0-ʶ1-ʶ + bit12-ֻ0-ʶ1-ʶ + bit13-Ҽ0-ʶ1-ʶ + bit14-ΣƷ: 0-ʶ1-ʶ + bit15-촰վ˼: 0-ʶ1-ʶ + */ + DWORD dwRecogOperate; + /* + ͼƬϴ + bit0-ͼƬ0-ϴ1-ϴ + bit1-ͼƬ0-ϴ1-ϴ + bit2-ͼ(ʻ)0-ϴ1-ϴ + bit3-ͼ(ʻ)0-ϴ1-ϴ + bit4-ȫͼ(ʻ)0-ϴ1-ϴ + bit5-ȫͼ(ʻ)0-ϴ1-ϴ + */ + DWORD dwDataUploadType; + DWORD dwPostID;//ID + NET_DVR_TIME_V30 struPostTime;//ʱ + DWORD dwJsonLen; //Json͸ݳ + BYTE *pJsonBuffer;//Jsonָ,ο4.2.4Jsonݸʽ + BYTE byRes[107]; + BYTE byPicDataType;//ͼƬͣ0-ͼƬݣ1-URL + //ͼƬ + //byPicDataType == 0ʱ򣬸ֶڵЧͼƬڽṹ + //byPicDataType == 1ʱָͼƬURLϢ + char sPicDataPath[256]; +}NET_DVR_VEHICLE_RECOG_CFG, *LPNET_DVR_VEHICLE_RECOG_CFG; + +typedef struct tagNET_DVR_VEHICLERECOG_TASK_RESULT +{ + DWORD dwSize; + //豸ˮ,ÿύ豸Ψһˮŷظϲ㡣 + char sDevDataIndex[MAX_DEV_DATAINDEX_LEN/*64*/]; + BYTE byRes[256]; +}NET_DVR_VEHICLERECOG_TASK_RESULT, *LPNET_DVR_VEHICLERECOG_TASK_RESULT; + +//ṹ +typedef struct tagNET_DVR_VEHICLE_RECOG_TASK_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + char sDataIndex[DATA_INDEX_LEN];//ˮ ȫ0ʱʾȡȫ + WORD wTaskNo;// ֵΪ0ʱʾȫ + /* + ״̬ + bit0-״̬0-ѯ1-ѯ + bit1-ִе0-ѯ1-ѯ + bit2-ȴе0-ѯ1-ѯ + */ + BYTE byTask; + BYTE byRes1; + //豸ˮŲѯ,ÿύ豸Ψһˮš + char sDevDataIndex[MAX_DEV_DATAINDEX_LEN/*64*/]; + BYTE byRes[60]; +}NET_DVR_VEHICLE_RECOG_TASK_COND, *LPNET_DVR_VEHICLE_RECOG_TASK_COND; + +//ṹ +typedef struct tagNET_DVR_VEHICLE_RECOG_TASK_INFO +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + char sDataIndex[DATA_INDEX_LEN];//ˮ + WORD wTaskNo;// + WORD wTaskProgress;//ִнȣʵʽ*1000 + BYTE byTaskState;//״̬0-ȴУ1-ִУ2- + BYTE byRes1[3]; + /* + ͼƬʶ + bit0-ʶ0-ʶ1-ʶ + bit1-ʶ0-ʶ1-ʶ + bit2-ɫʶ0-ʶ1-ʶ + bit3-Ʒʶ0-ʶ1-ʶ + bit4-ڵʶ(ʻ)0-ʶ1-ʶ + bit5-ȫʶ(ʻ)0-ʶ1-ʶ + bit6-ڵʶ(ʻ)0-ʶ1-ʶ + bit7-ȫʶ(ʻ)0-ʶ1-ʶ + bit8-ͼƬʹܣ0-ʶ1-ʶ + bit9-ϴͼƬʹ(ͨSDK)0-ʶ1-ʶ + bit10-ϴͼƬʹ(ͨURL)0-ʶ1-ʶ + bit11-Ʊ공0-ʶ1-ʶ + bit12-ֻ0-ʶ1-ʶ + bit13-Ҽ0-ʶ1-ʶ + bit14-ΣƷ: 0-ʶ1-ʶ + bit15-촰վ˼: 0-ʶ1-ʶ + */ + DWORD dwRecogOperate; + DWORD dwPostID;//ID + NET_DVR_TIME_V30 struPostTime;//ʱ + DWORD dwJsonLen; //Json͸ݳȣԤJSONݲʵ֣ + BYTE *pJsonBuffer;//Jsonָ, ԤJSONݲʵ֣ + BYTE byRes[104]; +}NET_DVR_VEHICLE_RECOG_TASK_INFO, *LPNET_DVR_VEHICLE_RECOG_TASK_INFO; + +typedef struct tagNET_DVR_VEHICLE_RECOG_RESULT +{ + DWORD dwSize; //ṹ + //ˮ ͣύNET_DVR_VEHICLE_RECOG_CFGеֶsDataIndexӦ + char sDataIndex[DATA_INDEX_LEN]; + // (ύNET_DVR_VEHICLE_RECOG_CFGеֶwTaskNoӦ) + WORD wTaskNo; + BYTE byRes[2]; + NET_VCA_RECT struPlateRect;//λ + char sLicense[MAX_LICENSE_LEN/*16*/];//ƺ + BYTE byVehicleType; //ͣοVTR_RESULT + BYTE byColorDepth; //ɫdzο 0-ɫ1-dzɫ + BYTE byColor; //ɫ, οVCR_CLR_CLASS + BYTE byVehicleLogoRecog; //Ʒ + BYTE byVehicleSubLogoRecog; //Ʒ + BYTE byPilotSafebelt;//0-ʾδ֪,1-ϵȫ,2-ϵȫ + BYTE byCopilotSafebelt;//0-ʾδ֪,1-ϵȫ,2-ϵȫ + BYTE byPilotSunVisor;//0-ʾδ֪,1-,2- + BYTE byCopilotSunVisor;//0-ʾδ֪, 1-,2- + BYTE byVehicleModel;// οĵ Ʒ + WORD wVehicleLogoRecog; //Ʒƣο"Ʒ.xlsx" + BYTE byRes1[251]; + // 0-ֱϴ; 1-ƴ洢URLԭȵͼƬݱURLݣͼƬȱURL + BYTE byDataType; + /* + ϴͼƬϢ: + bit0-ͼ0-ϴ1-ϴ + bit1-ͼ0-ϴ1-ϴ + bit2-ͼ(ʻ)0-ϴ1-ϴ + bit3-ͼ(ʻ)0-ϴ1-ϴ + bit4-ȫʶ(ʻ)0-ϴ1-ϴ + bit5-ȫʶ(ʻ)0-ϴ1-ϴ + */ + DWORD dwPicType; //0:ͼƬϢ;: ͼ;:ͼ; + BYTE *pVehicleBuffer; //ͼƬָ + DWORD dwVehicleBufferLen ;// ͼƬݳ + BYTE *pPlateBuffer; //ͼƬָ + DWORD dwPlateBufferLen ;// ͼƬݳ + BYTE *pPilotFaceBuffer; //ͼ(ʻ)ͼƬָ + DWORD dwPilotFaceBufferLen ;// ͼ(ʻ)ͼƬݳ + BYTE *pCopilotFaceBuffer; //ͼ(ʻ)ͼƬָ + DWORD dwCopilotFaceBufferLen ;// ͼ(ʻ)ͼƬݳ + BYTE *pPilotSafebeltBuffer; //ȫʶ(ʻ)ͼƬָ + DWORD dwPilotSafebeltBufferLen ;// ȫʶ(ʻ)ͼƬݳ + BYTE *pCopilotSafebeltBuffer;// ȫʶ(ʻ)ͼƬָ + DWORD dwCopilotSafebeltBufferLen ;// ȫʶ(ʻ)ͼƬݳ + NET_VCA_RECT struVehicleRect ;// + NET_VCA_RECT struPilotRect ;//ʻ + NET_VCA_RECT struCopilotRect ;//ʻ + BYTE *pJsonBuffer;//Jsonָ,οJSONݸʽ + DWORD dwJsonBufferLen;// Jsonݳ + DWORD dwPostID;//ID + NET_DVR_TIME_V30 struPostTime;//ʱ + BYTE Res2[56]; +}NET_DVR_VEHICLE_RECOG_RESULT, *LPNET_DVR_VEHICLE_RECOG_RESULT; + +#define MAX_ZONE_LINKAGE_CHAN_NUM 4 /* ͨ*/ + +typedef struct tagNET_DVR_CENTER_SERVER_CFG_ +{ + DWORD dwSize; + BYTE byAddressType; //0 - ipv4/ipv6ַ1 - + BYTE byRes1; + WORD wServerPort; //˿ + union + { + struct + { + BYTE szDomain[MAX_DOMAIN_NAME]; + BYTE byRes2[80]; + }struDomain; // + struct + { + NET_DVR_IPADDR struIp; + }struAddrIP; //IPַ + }unionServer;//ʹṹͨbyAddressTypeֶαʾIPַ + WORD wInterval; //ʱ,0-30s + BYTE byRes3[514]; +}NET_DVR_CENTER_SERVER_CFG,*LPNET_DVR_CENTER_SERVER_CFG; + +typedef struct tagNET_DVR_SINGLE_CHANNEL_LINKAGE_CFG_ +{ + BYTE byDDNSType; //ͣ0 - Ч1 - IPServer(˽DNS)2 - hiDDNS + BYTE byRes1; + WORD wDDNSPort; //˿ں + BYTE byServerAddr[MAX_DOMAIN_NAME]; //ַ + BYTE byDevName[MAX_DOMAIN_NAME]; //豸 + BYTE byDevSerialNum[SERIALNO_LEN]; //豸к + BYTE byAddressType; //0 - ipv4/ipv6ַ1 - + BYTE byRes2; + WORD wDevPort; //豸˿ں + union + { + struct + { + BYTE szDomain[MAX_DOMAIN_NAME]; + BYTE byRes2[80]; + }struDomain; // + struct + { + NET_DVR_IPADDR struIp; + }struAddrIP; //IPַ + }unionDevAddr;//ʹṹͨbyAddressTypeֶαʾIPַ + BYTE sUserName[NAME_LEN/*32*/]; //û + BYTE sPassword[PASSWD_LEN/*16*/];// + DWORD dwChannel; //ͨ + BYTE byRes3[32]; +}NET_DVR_SINGLE_CHANNEL_LINKAGE_CFG,*LPNET_DVR_SINGLE_CHANNEL_LINKAGE_CFG; + +typedef struct tagNET_DVR_REGION_CHANNEL_LINKAGE_CFG_ +{ + DWORD dwSize; + NET_DVR_SINGLE_CHANNEL_LINKAGE_CFG struLinkChannels[MAX_ZONE_LINKAGE_CHAN_NUM]; // ÿԹĸƵͨ + BYTE byRes[64]; +}NET_DVR_ZONE_CHANNEL_LINKAGE_CFG,*LPNET_DVR_ZONE_CHANNEL_LINKAGE_CFG; + +typedef struct tagNET_DVR_SINGLE_ASSOCIATED_CHAN_CFG +{ + BYTE byDevSerialNo[SERIALNO_LEN]; //豸к + DWORD dwChannel; //ͨ + BYTE byRes[64]; +}NET_DVR_SINGLE_ASSOCIATED_CHAN_CFG, *LPNET_DVR_SINGLE_ASSOCIATED_CHAN_CFG; + +typedef struct tagNET_DVR_ALARMIN_ASSOCIATED_CHAN_CFG +{ + WORD wZoneNo; + BYTE byRes1[2]; + NET_DVR_SINGLE_ASSOCIATED_CHAN_CFG struSingleChanCfg[MAX_ZONE_LINKAGE_CHAN_NUM]; + BYTE byRes2[64]; +}NET_DVR_ALARMIN_ASSOCIATED_CHAN_CFG, *LPNET_DVR_ALARMIN_ASSOCIATED_CHAN_CFG; + +typedef struct tagNET_DVR_ALARMIN_ASSOCIATED_CHAN_CFG_LIST_ +{ + DWORD dwSize; + NET_DVR_ALARMIN_ASSOCIATED_CHAN_CFG struAssociatedChanCfg[MAX_MAX_ALARMIN_NUM]; + BYTE byRes[64]; +}NET_DVR_ALARMIN_ASSOCIATED_CHAN_CFG_LIST, *LPNET_DVR_ALARMIN_ASSOCIATED_CHAN_CFG_LIST; + +typedef struct tagNET_DVR_LCD_ALARM +{ + DWORD dwSize; + DWORD dwScreenID; //Ļ + BYTE byOnOffLine; //ĻǷߣ0-ߣ1-ߣĻʱṹЧ + BYTE byTempState; //忨¶״̬0-1-쳣 + BYTE byFanState; //״̬0-أ1- + BYTE byFanException; //쳣״̬0-֧ 1-2-쳣 + BYTE byTemperature; //Ļ忨¶ȣλ϶ + BYTE byRes[27]; +}NET_DVR_LCD_ALARM, *LPNET_DVR_LCD_ALARM; + +//ϴϢ +typedef struct tagNET_DVR_SENSOR_INFO_UPLOAD +{ + DWORD dwSize; + NET_DVR_TIME_V30 struTime; + char szSensorName[MAX_SENSORNAME_LEN]; // + char szSensorChan[MAX_SENSORCHAN_LEN]; //ͨ + BYTE byReboot; //֮ǰǷһĺĵһݴ־0-ʾû1-й + BYTE byPowerSupply;//Ƿ 0-ڹ磬1-ڹ + BYTE byStatusType;//豸״̬:0:1쳣2 + BYTE bySensorType;//οöSENSOR_TYPE + float fVoltageValue;//ѹֵ ȷ0.001 + float fCurrentValue;//ֵȷ0.001 + float fActualValue;//ģźתֵȷ0.001 + char szDescription[MAX_DESCRIPTION_LEN /* 32*/]; //Ϣ;豸״̬byStatusTypeΪ0ʱЧ + BYTE byRes1[128]; +}NET_DVR_SENSOR_INFO_UPLOAD,*LPNET_DVR_SENSOR_INFO_UPLOAD; + +//ץͼƬϴ +typedef struct tagNET_DVR_CAPTURE_UPLOAD +{ + DWORD dwSize; + NET_DVR_TIME_V30 struTime; + DWORD dwChannel;//ͨ + char szDevName[MAX_DEVNAME_LEN_EX]; + DWORD dwPicLen;//ͼƬ + BYTE *pBuffer; //ͼƬָ + BYTE byRes[124]; +}NET_DVR_CAPTURE_UPLOAD,*LPNET_DVR_CAPTURE_UPLOAD; + +//ȫλϴ +typedef struct tagNET_DVR_PANORAMIC_LINKAGE +{ + DWORD dwSize; + DWORD dwChannel;//ͨ + BYTE byType;//ͼƬͣ0-壬1-ȫλͼƬ + BYTE byRes1[3]; + BYTE byMACAddr[MACADDR_LEN]; //macַ + BYTE byRes2[2]; + NET_DVR_IPADDR struDevIP; //豸IPַ + DWORD dwPicLen;//ȫλץͼƬ + char *pPicBuff; //ȫλץͼƬָ + BYTE byRes[128]; +}NET_DVR_PANORAMIC_LINKAGE, *LPNET_DVR_PANORAMIC_LINKAGE; + +#define MAX_MASK_AREA_NUM 8 // + +typedef struct tagNET_DVR_AREA_MASK_CFG // +{ + DWORD dwSize; //ṹС + BYTE byEnable;//Ƿ 0-1- + BYTE byMaskThick; //˺ 0-룬1-룬2-룬СΪ8*816*1632*32ĬΪ + BYTE byAutoMask;//ǷԶ 0-1- + BYTE byRes1; + NET_VCA_RECT struRegion[MAX_MASK_AREA_NUM];//Χ + BYTE byRes[64]; +}NET_DVR_AREA_MASK_CFG, *LPNET_DVR_AREA_MASK_CFG; + +typedef struct tagNET_DVR_AUDIO_DIACRITICAL_CFG //Ƶ +{ + DWORD dwSize; //ṹС + BYTE byEnable; //Ƿñ 0-ã1- + char byBassValue; //ߵֵΧΪ-12-12 ֵԽԽϸ֮ԽС0-ʾ + BYTE byRes[62]; +}NET_DVR_AUDIO_DIACRITICAL_CFG, *LPNET_DVR_AUDIO_DIACRITICAL_CFG; + +typedef struct tagNET_DVR_RESOLUTION_SWITCH +{ + DWORD dwSize; + BYTE byResolutionType;//0-all,1-20:9,2-20:6,3-ԭʼģʽ + BYTE byRes[127]; +}NET_DVR_RESOLUTION_SWITCH, *LPNET_DVR_RESOLUTION_SWITCH; + +typedef struct tagNET_DVR_WIFI_DHCP_ADDR_CFG //wifiģʽDHCPΧ +{ + DWORD dwSize; + NET_DVR_IPADDR struStartAddr; //ʼIPַ + NET_DVR_IPADDR struEndAddr; //IPַ + BYTE byRes[256]; +}NET_DVR_WIFI_DHCP_ADDR_CFG, *LPNET_DVR_WIFI_DHCP_ADDR_CFG; + + +typedef struct tagNET_DVR_WIFI_CLIENT_INFO //Ƶ +{ + DWORD dwSize; + NET_DVR_IPADDR struAddress; //IPַ + BYTE byMACAddr [MACADDR_LEN]; + WORD wConnSpeed; //ٶ λKB + BYTE byRSSIValue; //յźǿȣȡֵΪֵʱֵΧΪ0~-110dbm,ֵԽ󣬴źԽǿ + BYTE byRes1; // + WORD wBandwidth; // λKB + BYTE byRes[32]; +}NET_DVR_WIFI_CLIENT_INFO, *LPNET_DVR_WIFI_CLIENT_INFO; + +typedef struct tagNET_DVR_MULTISTREAM_RELATION_CHAN_CFG //ͨ +{ + DWORD dwSize; //ṹС + DWORD dwChannel; //ıͨ + BYTE byRes[64]; +}NET_DVR_MULTISTREAM_RELATION_CHAN_CFG, *LPNET_DVR_MULTISTREAM_RELATION_CHAN_CFG; + +typedef struct +{ + BYTE byPort; //˿ + BYTE byMasterSlaveProperty; //˿ 1- 2- + BYTE byPortEthernetType; //˿ͣ1-׶˿ڣ2-ǧ׶˿ + BYTE byRes[9]; +}NET_DVR_RING_PORT_PROPERTY, *LPNET_DVR_RING_PORT_PROPERTY; +typedef struct +{ + DWORD dwSize; + BYTE byEnable; //Ƿã 0-ã !0- + BYTE byProtoType; //Эͣ 1-˻Э(˽)2-ۺƽ̨Э飨˽У3-G8032Э飨У + BYTE byBandWidth; //ͣ1-ף2-ǧ + BYTE byRes1; //ֶ + NET_DVR_RING_PORT_PROPERTY struRingPort[PER_RING_PORT_NUM]; //˿ + BYTE byRes2[60]; //ֶ +}NET_DVR_NS_RING_CFG, *LPNET_DVR_NS_RING_CFG; +typedef struct // +{ + DWORD dwSize; //ṹС + BYTE byStatus; //״̬1- 2-Ͽ + BYTE byMasterSlaveProperty ; //˰ 1- 2- + BYTE byRes[62]; //ֶ +} NET_DVR_NS_RING_STATUS, *LPNET_DVR_NS_RING_STATUS; + +//ⱨ +typedef struct tagNET_DVR_FIREDETECTION_ALARM +{ + DWORD dwSize; //ṹС + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + WORD wPanPos; + WORD wTiltPos; + WORD wZoomPos; + BYTE byPicTransType; //ͼƬݴ䷽ʽ: 0-ƣ1-url + BYTE byRes1; + DWORD dwPicDataLen;//ץͼƬ + BYTE *pBuffer; //ָ + NET_VCA_RECT struRect;// + NET_VCA_POINT struPoint ;//¶ȵ + WORD wFireMaxTemperature ;//¶[300~4000] + WORD wTargetDistance ;//Ŀ[100m ~ 10000m] + BYTE byStrategyType;//ͣ0~ⱨ1~Эͬ2~ϵͳ3~ָ㱨4~ָ + BYTE byAlarmSubType;//͡0~ⱨ1~ⱨ2~̻𱨾 + /*ǷPTZչ + 0~ãPTZֵwPanPoswTiltPoswZoomPosΪ׼ + 1~ãPTZֵstruPtzPosExΪ׼PTZ践ءstruPtzPosExֵתΪwPanPoswTiltPoswZoomPosֵ + */ + BYTE byPTZPosExEnable; + BYTE byRes2; + NET_PTZ_INFO struPtzPosEx;// ptzչ(ָ֧߾PTZֵȷСλ) + DWORD dwVisiblePicLen;//ɼͼƬ + BYTE *pVisiblePicBuf; //ɼͼƬָ + // pSmokeBufbyAlarmSubTypeΪ1ⱨ2̻𱨾ʱЧ + BYTE *pSmokeBuf; //ⱨָ룬ָһNET_DVR_SMOKEDETECTION_ALARMṹ + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byRes3; + BYTE byFireScanWaitMode; //ɨȴģʽ 0-Զ 1-ֶ + DWORD dwVisibleChannel; //ɼͨͨ + BYTE byTimeDiffFlag; /*ʱֶǷЧ 0-ʱЧ 1-ʱЧ */ + char cTimeDifferenceH; /*UTCʱСʱ-12 ... +14 +ʾ,byTimeDiffFlagΪ1ʱЧ*/ + char cTimeDifferenceM; /*UTCʱӣ-30, 30, 45 +ʾbyTimeDiffFlagΪ1ʱЧ*/ + BYTE byRes[49]; +} NET_DVR_FIREDETECTION_ALARM,*LPNET_DVR_FIREDETECTION_ALARM; + +// +typedef struct tagNET_DVR_SMOKEDETECTION_CFG +{ + BYTE byEnable;//ʹ + BYTE bySensitivity; //: 1~100Ĭ50 + BYTE byPatrolSensitivity; //Ѳ: 1~100Ĭ50 + BYTE byDoubleCheckSensitivity; //ι: 1~100Ĭ50 + BYTE byRes[56]; +}NET_DVR_SMOKEDETECTION_CFG, *LPNET_DVR_SMOKEDETECTION_CFG; + +typedef struct tagNET_DVR_ALARMSTRATEGY_PARAM +{ + BYTE byStrategyType;//ͣ0~ⱨ1~Эͬ2~ϵͳ, 3~ָ㱨4~ָ + BYTE byRes[15]; +}NET_DVR_ALARMSTRATEGY_PARAM, *LPNET_DVR_ALARMSTRATEGY_PARAM; + +typedef struct tagNET_DVR_FIREDETECTION_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE bySensitivity; //: 1~100Ĭ5s + BYTE byFireComfirmTime;//ֻȴʱ: 0-120 Ĭ5s + BYTE byFireRegionOverlay;//ӻ: 0- 1- + BYTE byDetectionMode;// ģʽ0~б1~֡⡣ + BYTE byFireFocusMode;//۽ģʽ0~Զģʽ,1~ Ѳģʽ + BYTE byFireZoomMode;//ѧ䱶ģʽ0~ΪԶģʽ1~Ϊֶģʽ + BYTE byFirezoomLevel;//ѧ䱶ʣ1~100ѧ䱶ģʽΪֶģʽʱЧ + BYTE bySmokeFireEnabled; //̻ʹܣ0ã1- + /* + ֶȴʹܣΪ1ʱ󣬻ȴʱbyFireComfirmTimeЧ + 󣬵豸ֻʱ̨һֱͣڷֻλãͨɨõȴģʽɨ衣 + ֶȴʹΪ0ʱ豸ΪԶȴģʽģʽ¿ɸbyFireComfirmTimeֶõĵȴʱлȴõȴʱ豸Զлɨ衣 + */ + BYTE byFireManualWaitEnabled;// ֶȴʹܣ0~ΪԶȴģʽ1~ֶȴģʽ + BYTE byCancelRepeatedAlarmEnabled;// ȡظʹ 0-ر 1- + BYTE byApplicationSceneMode;//Ӧóģʽ0-1-ɭַ, 2-ոȼ,3-Ƹߵ, 4-ڻܽ + DWORD dwInstallationHeight;// װ߶ + BYTE byFireSourceDetection;// ģʽ 0-̬ 1-ģʽ + BYTE bySmokeAuxiliaryDetectionEnabled;// жʹ,ģʽǶбʱЧ 0- 1- + BYTE byverificationSensitivity; //ȷȣΧ1~100sĬ50s + BYTE byFireAlgorithmMode; //㷨ģʽ0Ч1ģʽʶ-patternRecognition,:2ѧϰ-machineLearning + BYTE byAgriculturalMachineryFilterEnabled; //ũģʹܣ0ã1 + BYTE byWaterReflectionEnabled; //ˮⷴģʹ, 0ã1 + BYTE byPatrolSensitivity; //Ѳ Ի⣩, Χ1~100sĬ50s + BYTE byRes[33]; + NET_DVR_ALARMSTRATEGY_PARAM struAlarmStrategy;// + NET_DVR_SMOKEDETECTION_CFG struSmokeCfg;// +}NET_DVR_FIREDETECTION_CFG,*LPNET_DVR_FIREDETECTION_CFG; + +typedef struct tagNET_DVR_THERMALPOWER_PARAM +{ + DWORD dwSize;//ṹС + BYTE byPowerSwitch;//ʹܣ1Ϊ0Ϊر + BYTE byRes[123]; +}NET_DVR_THERMALPOWER_PARAM, *LPNET_DVR_THERMALPOWER_PARAM; + +typedef struct tagNET_DVR_PTZABSOLUTEEX_CFG +{ + DWORD dwSize;//ṹС + NET_PTZ_INFO struPTZCtrl;//豸PTZFϢ + DWORD dwFocalLen;//෶Χ0-100000MM + float fHorizontalSpeed;//ˮƽתٶȣ0.01-1000.00/S + float fVerticalSpeed;//ֱתٶȣ0.01-1000.00/S + /*ͷ䱶ͣabsoluteZoom:ͨ䱶ãѡΪʱstruPTZCtrlеfZoomЧfocalLen:ͨãѡΪʱdwFocalLenЧ*/ + BYTE byZoomType;// ͷ䱶0~ absoluteZoom1~ focalLen + BYTE byRes[123]; +}NET_DVR_PTZABSOLUTEEX_CFG, *LPNET_DVR_PTZABSOLUTEEX_CFG; + +#define MAX_PLAYLIST_NUM 50 //󲥷бĿ +#define MAX_PLAYPLAN_NUM 50 //󲥷żƻĿ + +#define MAX_LEN_256 256 +#define MAX_GROUP_RECORD_NUM 10 //¼ +typedef struct tagNET_DVR_AREA_MONITOR_COND +{ + DWORD dwSize; + DWORD dwAreaID; //ID + DWORD dwMonitorID; //ǰʼȡļصţ1ʼ + BYTE byIsNeedGroup; //ǷѯϢ + BYTE byRes [127]; +}NET_DVR_AREA_MONITOR_COND,*LPNET_DVR_AREA_MONITOR_COND; + +typedef struct tagNET_DVR_DEL_MONITOR_COND +{ + DWORD dwSize; + BYTE byDelType; //ɾͣ0-ɾָмص㣬1-ɾָָص + DWORD dwAreaID; //ID + DWORD dwMonitorID; //صIDbyDelTypeΪ0ʱЧbyDelTypeΪ1ʱЧ1ʼ + BYTE byRes[64]; +}NET_DVR_DEL_MONITOR_COND,*LPNET_DVR_DEL_MONITOR_COND; + +typedef struct tagNET_DVR_BLOCKLIST_ALARM_COND +{ + DWORD dwSize; //ṹС + BYTE byType; //־- ȫ- - ֹ + BYTE byRes1[3]; // + DWORD dwFaceID; //ID + DWORD dwMaxSnapNum; //ץ0-ʾ + BYTE byRes[256]; +}NET_DVR_BLOCKLIST_ALARM_COND, *LPNET_DVR_BLOCKLIST_ALARM_COND; + +typedef struct tagNET_DVR_STORAGE_RESOURCE_COND +{ + DWORD dwSize; //ṹС + DWORD dwStorageID; //ӵǰſʼȡʣԴ1ʼ + BYTE byRes[64]; +}NET_DVR_STORAGE_RESOURCE_COND, *LPNET_DVR_STORAGE_RESOURCE_COND; + +typedef struct tagNET_DVR_BLOCKLIST_ALARM_RECORD +{ + DWORD dwSize; //ṹС + DWORD dwSnapFacePicID; //ץID + DWORD dwRegisterID; //עIDţֻ + DWORD dwGroupNo; // + BYTE byRes[128]; +}NET_DVR_BLOCKLIST_ALARM_RECORD, *LPNET_DVR_BLOCKLIST_ALARM_RECORD; + +typedef struct tagNET_DVR_BLOCKLIST_GROUP_INFO //Ϣ +{ + DWORD dwSize; //ṹС + DWORD dwGroupID; //ţȡʱЧʱЧ1ʼ + DWORD dwGroupNo; // + BYTE byGroupType; //ͣ0-ֹ飬1- + BYTE byRes1; + WORD wThreshold; //ֵȡֵΧΪ0-1000 + DWORD dwListNum; // + BYTE szGroupName[NAME_LEN]; // + BYTE szRemark[MAX_LEN_256]; + BYTE byStorageAddr[MAX_DOMAIN_NAME]; //洢IPַϢ + WORD wStoragePort; //洢IPӦĶ˿ں + BYTE byRes[126]; +}NET_DVR_BLOCKLIST_GROUP_INFO, *LPNET_DVR_BLOCKLIST_GROUP_INFO; + + +typedef struct tagNET_DVR_SINGLE_BLOCKLIST_GROUP_RECORD +{ + DWORD dwSize; //ṹС + DWORD dwGroupRecordID; //¼ID޸ĺͲѯʱЧʱЧ1ʼ + DWORD dwGroupNo; // + DWORD dwFaceDBID; //ID + DWORD dwFaceRecordID; //¼ID + BYTE byAlarmLevel; //ȼ0-high,1-medium,2-low + BYTE byRes1[3]; // + NET_DVR_ADDR_DOMAIN_INFO struStorageAddr; //洢IPַϢ + BYTE byRes[256]; +}NET_DVR_SINGLE_BLOCKLIST_GROUP_RECORD,*LPNET_DVR_SINGLE_BLOCKLIST_GROUP_RECORD; + +typedef struct tagNET_DVR_BLOCKLIST_GROUP_RECORD_COND +{ + DWORD dwSize; //ṹС + DWORD dwRecordID; //ӵǰſʼȡ1ʼ + BYTE byRes[64]; +}NET_DVR_BLOCKLIST_GROUP_RECORD_COND, *LPNET_DVR_BLOCKLIST_GROUP_RECORD_COND; + +typedef struct tagNET_DVR_BLOCKLIST_GROUP_RECORD_CFG //¼Ϣ +{ + DWORD dwSize; //ṹС + DWORD dwRecordNum; //¼ܸ + NET_DVR_SINGLE_BLOCKLIST_GROUP_RECORD struRecord[MAX_GROUP_RECORD_NUM]; //¼ + BYTE byRes[256]; +}NET_DVR_BLOCKLIST_GROUP_RECORD_CFG,*LPNET_DVR_BLOCKLIST_GROUP_RECORD_CFG; + +typedef struct tagNET_DVR_BLOCKLIST_GROUP_CFG //¼Ϣ +{ + DWORD dwSize; //ṹС + DWORD dwGroupNum; //ܸ + NET_DVR_BLOCKLIST_GROUP_INFO struGroup[MAX_GROUP_RECORD_NUM]; //¼ + BYTE byRes[256]; +}NET_DVR_BLOCKLIST_GROUP_CFG,*LPNET_DVR_BLOCKLIST_GROUP_CFG; + +typedef struct tagNET_DVR_BLOCKLIST_GROUP_COND +{ + DWORD dwSize; //ṹС + DWORD dwGroupID; //ӵǰſʼȡ1ʼ + BYTE byRes[64]; +}NET_DVR_BLOCKLIST_GROUP_COND, *LPNET_DVR_BLOCKLIST_GROUP_COND; + + + +typedef struct tagNET_DVR_SENSOR_VALUE +{ + float fMinValue; //Сֵȷ0.001Ϊ0xfffffffffʾѯ + float fMaxValue; //ֵȷ0.001Ϊ0xfffffffffʾѯ + BYTE byRes[8]; +}NET_DVR_SENSOR_VALUE, *LPNET_DVR_SENSOR_VALUE; + +typedef struct tagNET_DVR_HISTORICAL_QUERY_PARAM //ʷݲѯӽṹ +{ + NET_DVR_TIME_V30 struStartTime;//ʼʱ + NET_DVR_TIME_V30 struEndTime;//ʱ + NET_DVR_SENSOR_VALUE struVoltageValue; //ѹ; λ + NET_DVR_SENSOR_VALUE struCurrentValue; //; λ + NET_DVR_SENSOR_VALUE struTemperatureValue;//¶Ȳλ϶ + NET_DVR_SENSOR_VALUE struHumidityValue;//ʪȲ + BYTE bySwitchStatus;//ͨ״̬ 0~δͨ磬1~ͨ磬0xffѯ + BYTE bySensorStatus; //״̬ 0-1-쳣2-0xffѯ + BYTE byRes[66]; +}NET_DVR_HISTORICAL_QUERY_PARAM, *LPNET_DVR_HISTORICAL_QUERY_PARAM; + +typedef struct tagNET_DVR_SENSOR_COND //ṹ +{ + DWORD dwSize; + BYTE byQueryType; //ѯʽ0~ʵʱݲѯ1~ʷݲѯ + BYTE byDeviceType; //豸;0~δ֪,1~ģ, 2~ϵ,3~ϵ0xffʾѯ + BYTE byDeviceID; //豸IDAnalog(ģ)Χ1-8Terminal(ϵ)Χ1-4Socket(ϵ)Χ1-20xffʾѯ + BYTE byRes1; + // INTER_HISTORICAL_QUERY_PARAMӽṹbyQueryTypeΪ1ʱЧ + NET_DVR_HISTORICAL_QUERY_PARAM struHistoricalQueryParam; //ʷݲѯ + BYTE byRes[64]; +}NET_DVR_SENSOR_COND,*LPNET_DVR_SENSOR_COND; + +typedef struct tagNET_DVR_SENSOR_CFG//ýṹ +{ + DWORD dwSize; + BYTE byEnable; //ǰѯĴǷʹܣ0-ʹܣ1-ʹܣ + BYTE byDeviceType; //豸;0~δ֪,1~ģ, 2~ϵ,3~ϵ + BYTE byDeviceID; //豸IDAnalog(ģ)Χ1-8Terminal(ϵ)Χ1-4Socket(ϵ)Χ1-2 + BYTE byRes1; + NET_DVR_TIME_V30 struTime;//ʱ + BYTE byIsFirst; //Ƿһ(Ƿ)0-, 1-ǣ + BYTE byIsSwitchOn; //Ƿͨ磬0-, 1-ǣ + BYTE bySensorStatus; //״̬ 0-1-쳣2- + BYTE bySensorType; //ͣ SENSOR_TYPE + float fVoltage; //ѹλأȷ0.001Ϊ0xffʾЧֵ + float fCurrent; //λȷ0.001Ϊ0xffʾЧֵ + float fTemperatureValue;//¶ֵλ϶ȣȷ0.001Ϊ0xffʾЧֵ + float fHumidityValue;//ʪֵȷ0.001Ϊ0xffʾЧֵ + BYTE bySensorName[SENSORNAME_LEN/*32*/]; // + BYTE byDescription[MAX_SENSORDESCR_LEN/*64*/]; //ݵϢstatusTypeΪʱdescriptionΪ + float fActualValue; //ģźתֵȷ0.0001 + BYTE byUnit[SENSORUNIT_LEN/*32*/]; //λַ + BYTE byRes[220]; +}NET_DVR_SENSOR_CFG,*LPNET_DVR_SENSOR_CFG; + +typedef struct tagNET_DVR_SENSOR_SWITCH_COND +{ + DWORD dwSize;//ṹС + BYTE byDeviceType; //豸;0~δ֪, 1~ϵTerminal,2~ϵSocket + BYTE byDeviceID; //豸IDTerminal(ϵ)Χ1-4Socket(ϵ)Χ1-2 + BYTE bySwitch; //أ0-ϵ, 1-ϵ磬2- + BYTE byRes[125]; +}NET_DVR_SENSOR_SWITCH_COND,*LPNET_DVR_SENSOR_SWITCH_COND; + +typedef struct tagNET_DVR_GB28181_SERVICE_CFG +{ + DWORD dwSize; //ṹС + BYTE byServerID[DEV_ID_LEN]; //SIPID + WORD wPort; //SIP˿ں + BYTE byRes1[2]; // + BYTE byAuthPasswd[PASSWD_LEN]; + DWORD dwRegisterValid; //ڣλ룬Ĭϣ3600 + BYTE byMaxHeartbeatTimeOut; //ʱĬϣ3 + BYTE byAutoAddIpc; //ǷԶipc,0-ã1- + BYTE byAuthPasswdEx[MAX_PASSWD_LEN_EX]; //չΪ64λʱbyAuthPasswdExΪǿգ˲ЧbyAuthPasswdЧȡʱbyAuthPasswdExbyAuthPasswd + BYTE byRes[190]; // +}NET_DVR_GB28181_SERVICE_CFG,*LPNET_DVR_GB28181_SERVICE_CFG; +typedef struct tagNET_DVR_ACTIVATECFG +{ + DWORD dwSize; //ṹС + BYTE sPassword[PASSWD_LEN]; //ʼ + BYTE byLoginMode; //0-Private 1-ISAPI + BYTE byHttps; //0-ʹhttps1-ʹhttps + BYTE byRes[106]; +}NET_DVR_ACTIVATECFG,*LPNET_DVR_ACTIVATECFG; + +typedef struct tagNET_DVR_IPDEVICE_ACTIVATE_CFG +{ + DWORD dwSize; //ṹС + BYTE byMode; //0-ͨ1-ַ + BYTE bySelfDefinePassword;//ǷԶ,0-,1-,2-,ΪIPCԶ + BYTE sPassword[PASSWD_LEN];//Զ + BYTE sUserName[NAME_LEN];//û + BYTE byRes[78]; + union + { + BYTE byLen[512];//unionС + struct + { + DWORD dwChannelNo;//ͨ + BYTE byRes[508]; + }struChannelInfo;//ͨϢ + struct + { + NET_DVR_IPADDR struIp;//IPַ + WORD wPort;//˿ں + BYTE sProtocolDesc[DESC_LEN];//Э + BYTE byMacAddr[MACADDR_LEN];//macַ + BYTE byRes[344]; + }struAddrInfo;//IPַNET_DVR_SADPINFO + }unActivateDeviceInfo;//ʹṹͨbyModeֶαʾǰͨǰַ +}NET_DVR_IPDEVICE_ACTIVATE_CFG,*LPNET_DVR_IPDEVICE_ACTIVATE_CFG; + +typedef struct tagNET_DVR_DIGITAL_CHANNEL_SECURITY_STATUS_ +{ + DWORD dwSize; + BYTE byDigitalChanPasswordStatus[MAX_CHANNUM_V30*4];//0-,1-IPCδ2-룬3-ǿ4-ǿУ5-ǿǿ;byDigitalChanPasswordStatus[0]ʾһͨ + BYTE byRes[1140]; +}NET_DVR_DIGITAL_CHANNEL_SECURITY_STATUS, *LPNET_DVR_DIGITAL_CHANNEL_SECURITY_STATUS; + +typedef struct tagNET_DVR_CAMERACHAN_SERIALCFG +{ + DWORD dwSize; + DWORD dwBaudRate; //(bps)0-501-752-1103-1504-3005-6006-12007-24008-48009-960010-1920011-3840012-5760013-7680014-115.2k + BYTE byDataBit; //мλ0-5λ1-6λ2-7λ3-8λ + BYTE byStopBit; //ֹͣλ0-1λ1-2λ + BYTE byParity; //ǷУ飺0-У飬1-У飬2-żУ + BYTE byFlowcontrol;// Ƿأ0-ޣ1-,2-Ӳ + WORD wPTZProtocol; //Эֵͣ + BYTE byRes1[6]; + DWORD dwSerialPort; //ں,λΪ0ʾǰ崮ڣλΪ1ʾ崮 + BYTE bySerialAddress; //ڵַ0~255 + BYTE byRes[15]; +}NET_DVR_CAMERACHAN_SERIALCFG, *LPNET_DVR_CAMERACHAN_SERIALCFG; + +#define MAX_MATRIX_SUBBOARD_NUM 16 //ۺƽ̨Ӱ +#define MAX_MATRIX_SUBBOARD_NUM_V51 32 //ۺƽ̨Ӱ +#define MAX_BOARD_SUBSYSTEM_NUM 12 //ÿӰϵͳ +typedef struct tagNET_DVR_SUBSYSTEM_STATUS +{ + /*ϵͳͣ1-ϵͳ2-ϵͳ3-ϵͳ4-ϵͳ5-ϵͳ6-ϵͳ7-ϵͳ8-Fpgaϵͳ9-Fpgaϵͳ10-תϵͳ + 11-X86ϵͳ12-ϵͳ13-X86ķ壬 14- X86ҵ 15-ƴϵͳ16-˽ϵͳ17-X86ƴϵͳ18-ͨƴϵͳ19-Ƶϵͳ0-NULL*/ + BYTE bySubSystemType; + BYTE bySubSystemNo; //ϵͳţӰϵı + BYTE byOnlineStatus; //״̬ 1- 2- + BYTE byRes[49]; +}NET_DVR_SUBSYSTEM_STATUS, *LPNET_DVR_SUBSYSTEM_STATUS; + + +typedef struct tagNET_DVR_MATRIX_SUBBOARD +{ + BYTE byBoardNo; //Ӱ + BYTE byPcieConnectStatus; //pcie״̬ 1- 2-Ͽ + BYTE byRes[2]; + DWORD dwHardwareVersion; //ӰӲ汾 + DWORD dwPcieBandwidth; //pcie Link + DWORD dwTemperature; //Ӱ¶ λ϶ + NET_DVR_SUBSYSTEM_STATUS struSubsystemStatus[MAX_BOARD_SUBSYSTEM_NUM]; //ϵͳ״̬ + BYTE byRes2[16]; +}NET_DVR_MATRIX_SUBBOARD, *LPNET_DVR_MATRIX_SUBBOARD; +typedef struct tagNET_DVR_MATRIX_STATUS +{ + DWORD dwSize; + BYTE byMainFrameType; // 1-18U(V1.0) 2-18U 3-14U 4-11U 5-8U 6-7U 7-5U + BYTE bySoltNum; //λ + BYTE byBoardNum; //Ӱ + BYTE byRes; + NET_DVR_MATRIX_SUBBOARD struMatrixSubboard[MAX_MATRIX_SUBBOARD_NUM]; + BYTE byRes2[48]; +}NET_DVR_MATRIX_STATUS, *LPNET_DVR_MATRIX_STATUS; + + +typedef struct tagNET_DVR_MATRIX_SUBBOARD_V50 +{ + BYTE byBoardNo; //Ӱ + BYTE byPcieConnectStatus; //pcie״̬ 1- 2-Ͽ + BYTE byRes; + BYTE byTemperatureAlarm; //¶ȱ0-ֶЧ1-¶2-¶ȳޱ3-¶ȳޱ + DWORD dwHardwareVersion; //ӰӲ汾 + DWORD dwPcieBandwidth; //pcie Link + DWORD dwTemperature; //Ӱ¶ λ϶ + NET_DVR_SUBSYSTEM_STATUS struSubsystemStatus[MAX_BOARD_SUBSYSTEM_NUM]; //ϵͳ״̬ + BYTE bySubboardModel[32]; //Ӱͺ + BYTE byRes1[32]; +}NET_DVR_MATRIX_SUBBOARD_V50, *LPNET_DVR_MATRIX_SUBBOARD_V50; + +typedef struct tagNET_DVR_MATRIX_STATUS_V50 +{ + DWORD dwSize; + BYTE byMainFrameType; // 1-18U(V1.0) 2-18U 3-14U 4-11U 5-8U 6-7U 7-5U + BYTE bySoltNum; //λ + BYTE byBoardNum; //Ӱ + BYTE byLCDPanelStatus; //Һ״̬1-2-쳣 + NET_DVR_MATRIX_SUBBOARD_V50 struMatrixSubboard[MAX_MATRIX_SUBBOARD_NUM]; + DWORD dwFanSequence; //ȱţλʾλʹã0xffffff04ʾΪ1ķȣӦȱλʱdwFanConnectStatusdwFanOperationStatusĶӦλЧΪ޴˱ŵķ + DWORD dwFanConnectStatus; //״̬λʾλʹã0xffffff00ʾΪ1ķ0xffffff04ʾΪ1ķ쳣 + DWORD dwFanOperationStatus; //״̬λʾλʹã0xffffff00ʾΪ1ķ״̬0xffffff04ʾΪ1ķ쳣 + BYTE byDeviceModel[32]; //豸ͺ + BYTE byPowerNums; //Դ + BYTE byMainBoardNums; // + BYTE byHotStandbyMode; // byMainBoardNumsΪ2ʱ0-M1λ1-M2λ + BYTE byRes[29]; +}NET_DVR_MATRIX_STATUS_V50, *LPNET_DVR_MATRIX_STATUS_V50; + +typedef struct tagNET_DVR_MATRIX_SUBBOARD_V51 +{ + BYTE byBoardNo; //Ӱ + BYTE byPcieConnectStatus; //pcie״̬1-ӣ2-Ͽ + BYTE byRes1; + BYTE byTemperatureAlarm; //¶ȱ0-ֶЧ1-¶2-¶ȳޱ3-¶ȳޱ + DWORD dwHardwareVersion; //ӰӲ汾 + DWORD dwPcieBandwidth; //pcie Link + DWORD dwTemperature; //Ӱ¶ȣλ϶ + NET_DVR_SUBSYSTEM_STATUS struSubsystemStatus[MAX_BOARD_SUBSYSTEM_NUM]; //ϵͳ״̬ + BYTE bySubboardModel[32]; //Ӱͺ + BYTE byRes2[128]; +}NET_DVR_MATRIX_SUBBOARD_V51, *LPNET_DVR_MATRIX_SUBBOARD_V51; + +typedef struct tagNET_DVR_MATRIX_STATUS_V51 +{ + DWORD dwSize; + BYTE byMainFrameType; // 1-18U䣨V1.02-18U䣬3-14U䣬4-11U䣬5-8U䣬6-7U + BYTE bySoltNum; //λ + BYTE byBoardNum; //Ӱ + BYTE byLCDPanelStatus; //Һ״̬1-2-쳣 + NET_DVR_MATRIX_SUBBOARD_V51 struMatrixSubboard[MAX_MATRIX_SUBBOARD_NUM_V51]; + DWORD dwFanSequence; //ȱţλʾ0x00000001ʾ豸ֻһȣΪ10x00000101ʾ豸ȣŷֱΪ19ӦȱűλʱdwFanConnectStatusdwFanOperationStatusĶӦλЧΪ޴˱ŵķ + DWORD dwFanConnectStatus; //״̬λʾ0x00000001ʾΪ1ķ״̬쳣0x00000101ʾΪ19ķ״̬쳣 + DWORD dwFanOperationStatus; //״̬λʾ0x00000001ʾΪ1ķ״̬쳣0x00000101ʾΪ19ķ״̬쳣 + BYTE byDeviceModel[32]; //豸ͺ + BYTE byFanSpeed[32]; //ת٣ֽڱʾbyFanSpeed[0]ʾΪ1ķȵת٣תٵȼΧΪ[1,3] + BYTE byMainMemUsed; //ڴʹʣλٷֱ + BYTE byMainCpuUsed; //CPUʹʣλٷֱ + BYTE byNetwordUsed; //ʹʣλٷֱ + BYTE byRes1; + DWORD dwMainSoftwareVer; //汾 + BYTE byPowerNums; //Դ + BYTE byMainBoardNums; // + BYTE byHotStandbyMode; // byMainBoardNumsΪ2ʱ0-M1λ1-M2λ + BYTE byRes2[125]; +}NET_DVR_MATRIX_STATUS_V51, *LPNET_DVR_MATRIX_STATUS_V51; + +typedef struct _NET_DVR_SUBWIND_INFO +{ + DWORD dwSize; + DWORD dwSubWndNo; //Ӵں + BYTE byRes[8]; +} NET_DVR_SUBWIND_INFO, *LPNET_DVR_SUBWIND_INFO; + + +typedef struct tagNET_DVR_FUSION_SCALE +{ + DWORD dwSize; + WORD wWidth; //ͼںϿ(ͼĿ) + WORD wHeight; //ͼںϸ(ͼĿ) + BYTE byRes[32]; +}NET_DVR_FUSION_SCALE, *LPNET_DVR_FUSION_SCALE; + +typedef struct tagNET_DVR_FUSION_CFG +{ + DWORD dwSize; + BYTE byFusion; //Ƿںϣ0-δںϻȡںϣ0-ں + BYTE byUseHistoryMap; //Ƿʹʷںӳ0-ʹã0-ʹ + BYTE byRes[30]; +}NET_DVR_FUSION_CFG, *LPNET_DVR_FUSION_CFG; + +typedef struct tagNET_DVR_MULTIFUNCTION_SERIALCFG +{ + DWORD dwSize ; + BYTE byVariable ; //Ƿɱ䣬1-ɱ 2-ɱ ֻȡ + BYTE bySerialWorkMode; //ģʽ1-RS485, 2-RS232ֻڿɱ£޸Ĺģʽ + BYTE byFunType; //ڹܣ 1-̿ƣ2-Ļƣ3-͸ͨģʽ 4-PTZ 5- 6-̨ + BYTE byDataBit;// λ 05λ16λ27λ38λ; + BYTE byStopBit;// ֹͣλ 01λ12λ; + BYTE byParity;// У 0У飬1У飬2żУ; + BYTE byFlowcontrol;// 0ޣ1,2-Ӳ + BYTE byRes1 ; + DWORD dwBaudRate;//0501752110315043005600612007240084800996001019200 11384001257600137680014115.2k; + WORD wProtocol; //Э ͬڹܶӦЭ鲻һ + BYTE byRes[34]; +}NET_DVR_MULTIFUNCTION_SERIALCFG, *LPNET_DVR_MULTIFUNCTION_SERIALCFG; + +typedef struct tagNET_DVR_PTZ_3D_SPEED_CONTROL +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byPSpeed; // Xٶ ȡֵ164 + BYTE byTSpeed; // Yٶ ȡֵ164 + BYTE byZSpeed; // Zٶ + BYTE byPDirect; // P 1- 2- + BYTE byTDirect; // T 1-ϣ 2- + BYTE byZDirect; //Z 1-ZOOM+, 2-ZOOM- + BYTE byRes[18]; //ֽ +}NET_DVR_PTZ_3D_SPEED_CONTROL, *LPNET_DVR_PTZ_3D_SPEED_CONTROL; + +//SensorϢ +typedef struct tagNET_DVR_SENSOR_PARAM +{ + BYTE bySensorType;//SensorType:0-CCD,1-CMOS + BYTE byRes[31]; + float fHorWidth;//ˮƽ ȷСλ *10000 + float fVerWidth;//ֱ ȷСλ *10000 + float fFold;//zoom=1ûʱĽ ȷСλ *100 +}NET_DVR_SENSOR_PARAM,*LPNET_DVR_SENSOR_PARAM; + +//תϢ +typedef struct tagNET_DVR_TURN_DIRECTION_PARAM +{ + BYTE byLine;//ת߱ + BYTE byStatus;//ת״̬0-δ֪1-룬2-뿪 + BYTE byRes[38]; +}NET_DVR_TURN_DIRECTION_PARAM, *LPNET_DVR_TURN_DIRECTION_PARAM; +//ֹͣϢ +typedef struct tagNET_DVR_STOP_LINE_PARAM +{ + BYTE byStatus;//ֹͣ״̬0-δ֪1-룬2-뿪 + BYTE byRes[39]; +}NET_DVR_STOP_LINE_PARAM, *LPNET_DVR_STOP_LINE_PARAM; + +//TPSϢ +typedef struct tagNET_DVR_TPS_ADDINFO +{ + NET_DVR_LLPOS_PARAM struFirstLLPos;//һľγλϢ(byLaneState=3byQueueLen>0ʱŷ) + NET_DVR_LLPOS_PARAM struLastLLPos;//һľγλϢ(byLaneState=3byQueueLen>0ʱŷ) + char sLicense[MAX_LICENSE_LEN/*16*/];//ƺ + NET_DVR_TURN_DIRECTION_PARAM struTurnDirection;//תϢ + NET_DVR_STOP_LINE_PARAM struStopLine;//ֹͣϢ + BYTE byRes[884]; +}NET_DVR_TPS_ADDINFO, *LPNET_DVR_TPS_ADDINFO; + +//Ϣ +typedef struct tagNET_DVR_VEHICLE_ADDINFO +{ + NET_DVR_LLPOS_PARAM struLLPos;//ǰγλϢ + char sVehicleNo[LEN_64]; /*ϴijΨһʶ,󳤶Ϊ64*/ + BYTE byVehicleMonitorTaskID[64];//ܲID,64λַ,ʱϲ·豸,ϲȷIDΨһ + BYTE byUUID[LEN_64]; //ͨΨһʶ,64λַ,豸ȷΨһԣڿͬһץ,vehicleMonitormanualVehicleMonitordailyVehicleMonitorеlinkageANPRUUIDй + BYTE byRes[832]; +}NET_DVR_VEHICLE_ADDINFO, *LPNET_DVR_VEHICLE_ADDINFO; + +// +typedef struct tagNET_DVR_SMOKEDETECTION_ALARM +{ + NET_PTZ_INFO struPTZPos;//ɼ豸PTZFλ + NET_PTZ_INFO struThermalPTZPos;//ȳ豸PTZFλ + NET_DVR_LLPOS_PARAM struLLPos;//豸γλ + NET_VCA_RECT struSmokePos;//λ + BYTE byRes[256]; +}NET_DVR_SMOKEDETECTION_ALARM, *LPNET_DVR_SMOKEDETECTION_ALARM; + +//λϢ +typedef struct +{ + float fPanPos;//ˮƽȷС1λ + float fTiltPos;//ֱȷС1λ + float fZoomPos;//䱶ȷС1λ + BYTE byRes[16] ; +}NET_DVR_PTZPOS_PARAM, *LPNET_DVR_PTZPOS_PARAM; + +//GISϢϴ +typedef struct tagNET_DVR_GIS_UPLOADINFO +{ + DWORD dwSize;//ṹС + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + NET_VCA_DEV_INFO struDevInfo;//ǰ豸 + float fAzimuth;//̵ķλϢλ[0.00,360.00) + BYTE byLatitudeType ;//γͣ0-γ1-γ + BYTE byLongitudeType ;// ͣ0-ȣ1- + BYTE byRes1[2] ; + NET_DVR_LLI_PARAM struLatitude; /*γ*/ + NET_DVR_LLI_PARAM struLongitude; /**/ + float fHorizontalValue;//ˮƽӳǣȷСλ + float fVerticalValue;//ֱӳǣȷСλ + float fVisibleRadius;//ǰӰ뾶ȷСλ + float fMaxViewRadius;//Ӱ뾶ȷС0λԤ + NET_DVR_SENSOR_PARAM struSensorParam;//SensorϢ + NET_DVR_PTZPOS_PARAM struPtzPos; //ptz + BYTE byRes[256]; +}NET_DVR_GIS_UPLOADINFO,*LPNET_DVR_GIS_UPLOADINFO; + +//ƻϢϴ +typedef struct tagNET_DVR_VANDALPROOF_ALARM +{ + DWORD dwSize;//ṹС + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + NET_VCA_DEV_INFO struDevInfo;//ǰ豸 + BYTE byRes[256]; +}NET_DVR_VANDALPROOF_ALARM,*LPNET_DVR_VANDALPROOF_ALARM; + +//вز +typedef struct tagNET_DVR_CENTRALIZEDCTRL_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnable;//0-1-ʼ + BYTE byLatitudeType ;//γͣ0-γ1-γ + BYTE byLongitudeType ;// ͣ0-1- + BYTE byRes1; + NET_DVR_LLI_PARAM struLatitude; /*γ*/ + NET_DVR_LLI_PARAM struLongitude; /**/ + DWORD dwTimeOut;//ʱʱ [60s, 6*60*60s] + BYTE byControlType;//вطʽ 0-ǿƲأ1-ǿƲ + BYTE byRes[127]; +}NET_DVR_CENTRALIZEDCTRL_CFG,*LPNET_DVR_CENTRALIZEDCTRL_CFG; + +//GISϢ +typedef struct tagNET_DVR_GIS_INFO +{ + DWORD dwSize;//ṹС + float fAzimuth;//̵ķλϢλ[0.00,360.00) + float fHorizontalValue;//ˮƽӳǣȷСλ + float fVerticalValue;//ֱӳǣȷСλ + float fVisibleRadius;//ǰӰ뾶ȷСλ + float fMaxViewRadius;//Ӱ뾶ȷС0λԤ + BYTE byLatitudeType ;//γͣ0-γ1-γ + BYTE byLongitudeType ;// ͣ0-1- + BYTE byPTZPosExEnable;//ǷPTZչ0~ãPTZֵstruPtzPos Ϊ׼1~ãPTZֵstruPtzPosExΪ׼ + BYTE byRes1; + NET_DVR_LLI_PARAM struLatitude; /*γ*/ + NET_DVR_LLI_PARAM struLongitude; /**/ + NET_DVR_PTZPOS_PARAM struPtzPos; //ptz + NET_DVR_SENSOR_PARAM struSensorParam;//SensorϢ + NET_PTZ_INFO struPtzPosEx;// ptzչ(ָ֧߾PTZֵȷСλ) + float fMinHorizontalValue;//СˮƽӳǣȷСλ0.0-360.00 + float fMaxHorizontalValue;//ˮƽӳǣȷСλ0.0-360.00 + float fMinVerticalValue;//СֱӳǣȷСλ0.0-360.00 + float fMaxVerticalValue;//ֱӳǣȷСλ0.0-360.00 + BYTE byRes[220]; +}NET_DVR_GIS_INFO,*LPNET_DVR_GIS_INFO; + +//豸Ѳģʽ +typedef struct tagNET_DVR_CRUISE_PARAM +{ + DWORD dwSize;//ṹС + BYTE byCruiseMode;// Ѳģʽ0~1~Ԥõ + BYTE byRes[123]; +}NET_DVR_CRUISE_PARAM, *LPNET_DVR_CRUISE_PARAM; + +//ȡ豸ʪϢṹ +typedef struct tagNET_DVR_TEMP_HUMI_INFO +{ + DWORD dwSize; + NET_DVR_TIME_V30 struCurrentTime; // ǰʱ + float fTemperature;//豸¶ȣȷСλ-273 C 1000϶ȣ + float fHumidity;// 豸ʪȣȷСλλΪ% + BYTE byRes[256]; +}NET_DVR_TEMP_HUMI_INFO, *LPNET_DVR_TEMP_HUMI_INFO; + +typedef struct tagNET_SDK_POINT_THERMOMETRY +{ + float fPointTemperature;/*µǰ¶, 궨Ϊ0-ʱЧȷСһλ(-40-1000),+100*10 */ + NET_VCA_POINT struPoint;//꣨궨Ϊ㡱ʱЧ + BYTE byRes[20]; +}NET_SDK_POINT_THERMOMETRY, *LPNET_SDK_POINT_THERMOMETRY; + + +typedef struct tagNET_SDK_REGION_THERMOMETRY +{ + float fMaxTemperature;//¶,ȷСһλ(-40-1000),+100*10 */ + float fMinTemperature;//¶,ȷСһλ(-40-1000),+100*10 */ + float fAverageTemperature;//ƽ¶,ȷСһλ(-40-1000),+100*10 */ + float fTemperatureDiff;//²,ȷСһλ(-40-1000),+100*10 */ + NET_VCA_POLYGON struRegion;//ߣ궨Ϊ򡱻ߡߡʱЧ + BYTE byRes[20]; +}NET_SDK_REGION_THERMOMETRY, *LPNET_SDK_REGION_THERMOMETRY; + +typedef struct tagNET_SDK_MANUALTHERM_RULE +{ + BYTE byRuleID;//ID 0-ʾЧ1ʼ listڲжЧԣ + BYTE byEnable;//Ƿ + BYTE byRes1[2]; + char szRuleName[NAME_LEN/*32*/];// + BYTE byRuleCalibType;//궨 0-㣬1-2- + BYTE byRes2[3]; + NET_SDK_POINT_THERMOMETRY struPointTherm;//£궨Ϊ0-ʱЧ + NET_SDK_REGION_THERMOMETRY struRegionTherm; //£궨Ϊ1-2-ʱЧ + BYTE byRes[512]; +}NET_SDK_MANUALTHERM_RULE, *LPNET_SDK_MANUALTHERM_RULE; + +typedef struct tagNET_SDK_MANUAL_THERMOMETRY +{ + DWORD dwSize;//ṹС + DWORD dwChannel;//ͨ + DWORD dwRelativeTime; // ʱֻ꣨ + DWORD dwAbsTime; // ʱֻ꣨ + BYTE byThermometryUnit;//µλ: 0-϶ȣ棩1-϶ȣH2-(K) + BYTE byDataType;//״̬:0-У1-ʼ2-ֻ + BYTE byRes1[6]; + NET_SDK_MANUALTHERM_RULE struRuleInfo; + BYTE byRes[512]; +}NET_SDK_MANUAL_THERMOMETRY, *LPNET_SDK_MANUAL_THERMOMETRY; + +typedef struct tagNET_SDK_MANUALTHERM_BASICPARAM +{ + DWORD dwSize; + WORD wDistance;//(m)[0, 10000] + BYTE byDistanceUnit;//뵥λ: 0-ףm1-Ӣߣfeet,2-(centimeter) + BYTE byRes1[1]; // + float fEmissivity;//( ȷСλ)[0.01, 1.00](ı) + BYTE byRes[64]; // +}NET_SDK_MANUALTHERM_BASICPARAM, *LPNET_SDK_MANUALTHERM_BASICPARAM; + +typedef struct tagNET_SDK_FIRESHIELDMASK_REGION +{ + DWORD dwSize; + BYTE byMaskID;//ID1~24 + BYTE byEnabled;// ʹܣ0~ã1~ + BYTE byShieldZoom;//αʣ0~32δڵڸֵĹѧ䱶 + BYTE byMaskType;//ɫͣ0-ɫ1-ɫ2-ɫ3-ɫ4-ɫ5-ɫ6-͸7-͸8- + BYTE byRegionType;//ͣԤ0-ı + BYTE byShowEnabled; //ʾʹܣòΪֻʹΪfalseϲ㲻ʾϢTrueΪʾϢ + BYTE byRes1[2]; // + char szMaskName[NAME_LEN/*32*/];//α + NET_VCA_POLYGON struRegion;// + BYTE byRes[32]; // +}NET_SDK_FIRESHIELDMASK_REGION, *LPNET_SDK_FIRESHIELDMASK_REGION; + +#define MAX_FIRESHIELDMASK_REGION 24 +typedef struct tagNET_SDK_FIRESHIELDMASK_CFG +{ + DWORD dwSize; + BYTE byEnabled;// ʹܣ0~ã1~ + BYTE byShieldAreaTransparency;//͸ 0-͸ 1-͸ 2-͸ + BYTE byDisplayShieldAreaEnabled;//ʹ + BYTE byRes1[1]; // + NET_SDK_FIRESHIELDMASK_REGION struMaskRegion[MAX_FIRESHIELDMASK_REGION/*24*/];// + BYTE byRes[256]; // +}NET_SDK_FIRESHIELDMASK_CFG, *LPNET_SDK_FIRESHIELDMASK_CFG; + +typedef struct tagNET_SDK_SMOKESHIELDMASK_REGION +{ + DWORD dwSize; + BYTE byMaskID;//ID1~24 + BYTE byEnabled;// ʹܣ0~ã1~ + BYTE byShieldZoom;//αʣ0~32δڵڸֵĹѧ䱶 + BYTE byMaskType;//ɫͣ0-ɫ1-ɫ2-ɫ3-ɫ4-ɫ5-ɫ6-͸7-͸8- + BYTE byRegionType;//ͣԤ0-ı + BYTE byShowEnabled;// ʾʹܣòΪֻʹΪfalseϲ㲻ʾϢTrueΪʾϢ + BYTE byRes1[2]; // + char szMaskName[NAME_LEN/*32*/];//α + NET_VCA_POLYGON struRegion;// + BYTE byRes[32]; // +}NET_SDK_SMOKESHIELDMASK_REGION, *LPNET_SDK_SMOKESHIELDMASK_REGION; + +#define MAX_SMOKESHIELDMASK_REGION 24 +typedef struct tagNET_SDK_SMOKESHIELDMASK_CFG +{ + DWORD dwSize; + BYTE byEnabled;// ʹܣ0~ã1~ + BYTE byShieldAreaTransparency;//͸ 0-͸ 1-͸ 2-͸ + BYTE byDisplayShieldAreaEnabled;//ʹ + BYTE byRes1[1]; // + NET_SDK_SMOKESHIELDMASK_REGION struMaskRegion[MAX_SMOKESHIELDMASK_REGION/*24*/];// + BYTE byRes[256]; // +}NET_SDK_SMOKESHIELDMASK_CFG, *LPNET_SDK_SMOKESHIELDMASK_CFG; + +typedef struct tagNET_SDK_AREASCAN_CFG +{ + DWORD dwSize; + BYTE byScanState;//ɨ赱ǰ״̬0Ϊδã1ΪãòΪֻ + BYTE byRes[259]; // +}NET_SDK_AREASCAN_CFG, *LPNET_SDK_AREASCAN_CFG; + +typedef struct tagNET_SDK_FIRESHIELDMASK_COND +{ + DWORD dwSize; + DWORD dwChannel;//ͨ + BYTE byRegionID;//ID1~24. + BYTE byRes[127]; // +}NET_SDK_FIRESHIELDMASK_COND, *LPNET_SDK_FIRESHIELDMASK_COND; + +typedef struct tagNET_SDK_SMOKESHIELDMASK_COND +{ + DWORD dwSize; + DWORD dwChannel;//ͨ + BYTE byRegionID;//ID1~24. + BYTE byRes[127]; // +}NET_SDK_SMOKESHIELDMASK_COND, *LPNET_SDK_SMOKESHIELDMASK_COND; + +//̹ƻ +typedef struct tagNET_DVR_VANDALPROOFALARM_CFG +{ + DWORD dwSize;//ṹС + BYTE bySensitivity;//[1,100] (֧ãֵԽ״ֵԽСԽѴ) + BYTE byUploadEnabled;//÷ƻϴʹ 0-ã1- + BYTE byVoiceWarningEnabled;//÷ƻʾʹ 0-ã1- + BYTE byEnable;// üƻ 0-رգ1-ʼ + BYTE byRes[124]; +}NET_DVR_VANDALPROOFALARM_CFG,*LPNET_DVR_VANDALPROOFALARM_CFG; + +typedef struct tagNET_DVR_AZIMUTHINFO +{ + DWORD dwSize;//ṹС + float fDegree;//λǶ(ȷСλ) + BYTE byAzimuth; //λϢ 0-,1-,2-,3-,4-,5-,6-,7- + BYTE byRes[127]; +}NET_DVR_AZIMUTHINFO,*LPNET_DVR_AZIMUTHINFO; + +//ָ̽ṹ +typedef struct tagNET_DVR_COMPASS_COND +{ + DWORD dwSize;//ṹС + DWORD dwChannel;//ͨ + BYTE byRes[128]; +}NET_DVR_COMPASS_COND,*LPNET_DVR_COMPASS_COND; + +typedef struct tagNET_DVR_POSITION_CFG +{ + DWORD dwSize;//ṹС + BYTE bySoftWorkMode;//ģʽ 0-Զ1-ֶ + BYTE byRes[127]; +}NET_DVR_POSITION_CFG,*LPNET_DVR_POSITION_CFG; + +typedef struct tagNET_DVR_STREAMING_COND +{ + DWORD dwSize;//ṹС + DWORD dwChannel;//ͨ + BYTE byStreamType;//0-1-2-3 + BYTE byRes[127]; +}NET_DVR_STREAMING_COND,*LPNET_DVR_STREAMING_COND; + +//Ƕλ +typedef struct tagNET_DVR_SATELLITETIME_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnable;//ǶλУʱʹ 0-1- + BYTE byRes; + WORD wTimeInterval;//Уʱʱ(s) + BYTE byRes1[124]; +}NET_DVR_SATELLITETIME_CFG,*LPNET_DVR_SATELLITETIME_CFG; + +#define MAX_SIGNAL_JOINT_NUM 64 //ƴӹģ +typedef struct tagNET_DVR_SIGNAL_JOINT_CFG +{ + DWORD dwSize; + BYTE sCamName[NAME_LEN] ; //ƴӺźԴ + BYTE byEnable; //ʹܣ0-ʹ !0-ʹ + BYTE byCamMode ; //ƴӺźԴͣNET_DVR_CAM_JOINT + BYTE byRows ; //ƴ + BYTE byColumns ; //ƴ + DWORD dwSignalNo[MAX_SIGNAL_JOINT_NUM]; //źԴ,ǰbyRows* byColumnsЧ + DWORD dwJointNo; //ƴӱţȡЧ + DWORD dwSignalNoJoint; //ƴӺźԴţȡЧ + BYTE byRes[64]; +} NET_DVR_SIGNAL_JOINT_CFG, *LPNET_DVR_SIGNAL_JOINT_CFG; + +typedef struct tagNET_DVR_SIGNAL_CUTPARAM +{ + DWORD dwSize; + DWORD dwSignalNo; //źԴ + DWORD dwCutTop; //Ϸüֵ,0ԭ + DWORD dwCutBottom; //·üֵ,0ԭ + DWORD dwCutLeft; //߲üֵ,0ԭ + DWORD dwCutRight; //ұ߲üֵ,0ԭ + BYTE byRes2[32]; +} NET_DVR_SIGNAL_CUTPARAM, *LPNET_DVR_SIGNAL_CUTPARAM; + +typedef struct tagNET_DVR_WALL_RELATION_CFG +{ + DWORD dwSize; + BYTE byEnable; // 0- !0- + BYTE byRealWallNo ; //ǽ + BYTE byRes[14] ; +}NET_DVR_WALL_RELATION_CFG, *LPNET_DVR_WALL_RELATION_CFG; + + +typedef struct tagNET_DVR_INPUTSTREAMCFG_V40 +{ + DWORD dwSize ; + BYTE byValid ; // + BYTE byCamMode ;//NET_DVR_CAM_MODE + WORD wInputNo ; //źԴ + BYTE sCamName[NAME_LEN] ; + NET_DVR_VIDEOEFFECT struVideoEffect ;//Ƶ + NET_DVR_PU_STREAM_CFG struPuStream ; //ipʱʹ + WORD wBoardNum ; //źԴڵİ忨ţֻܻȡ + WORD wInputIdxOnBoard ; //źԴڰ忨ϵλãֻܻȡ + DWORD dwResolution ;//ֱ + BYTE byVideoFormat ;//ƵʽVIDEO_STANDARD + BYTE byStatus; //źԴ״̬0-ֶЧ 1-ź 2-ź 3-쳣 + BYTE sGroupName[NAME_LEN/*32*/]; //źԴ + BYTE byJointMatrix ; //0- 1-źԴΪNET_DVR_CAM_BNCNET_DVR_CAM_VGANET_DVR_CAM_DVINET_DVR_CAM_HDMI,еһʱòЧ + BYTE byJointNo ; //ƴźԴƴӱ(ֻܻȡ) + BYTE byColorMode; //ɫģʽ 0-Զ 1- 2-ͨ 3-ͣΪԶʱʹstruVideoEffect + BYTE byScreenServer; //Ļ0-1- + BYTE byDevNo; //豸 + BYTE byRes1; + DWORD dwInputSignalNo; //źԴţ£ + BYTE byVideoEnctype; //Ƶͣ0-Ĭϣ1-Smart264 + BYTE byAudioEnctype; //Ƶ࣬0-Ĭϣ1-AUDIO_G711_A2-AUDIO_G711_U3- AUDIO_G722_1 + BYTE byWallStatus; //źԴǽ״̬0-Ч 1-ǽ 2- ǽ + BYTE byRes[117]; +}NET_DVR_INPUTSTREAMCFG_V40, *LPNET_DVR_INPUTSTREAMCFG_V40 ; + +typedef struct tagNET_DVR_AUDIO_CONTROL_INFO +{ + DWORD dwSize; + DWORD dwMonId;//ȫֱ + BYTE bySubWindowNum;//ӦӴں + BYTE byWallNo; //ǽ + BYTE byEnable; //Ƶأ0-أ1- + BYTE byRes[13]; +}NET_DVR_AUDIO_CONTROL_INFO,*LPNET_DVR_AUDIO_CONTROL_INFO; + + + +typedef struct tagNET_DVR_INPUTSTREAM_PTZCFG_PARAM +{ + DWORD dwSize; + WORD wPTZProtocol; //Эֵͣ + BYTE byRes[34]; +}NET_DVR_INPUTSTREAM_PTZCFG_PARAM, *LPNET_DVR_INPUTSTREAM_PTZCFG_PARAM; + +//·Ͷ ա2016γ1133.xlsx +typedef enum +{ + AXLE_TYPE_UNKNOWN = 0x0000, //δ֪ + //2 + AXLE_TYPE_2AXLE_12 = 0x0200, //2ػ + //3 + AXLE_TYPE_3AXLE_122_1 = 0x0300, //3ҳг + AXLE_TYPE_3AXLE_122_2, //3½г + AXLE_TYPE_3AXLE_15, //3ػ + AXLE_TYPE_3AXLE_112, //3ػ + //4 + AXLE_TYPE_4AXLE_125_1 = 0x0400, //4ҳг + AXLE_TYPE_4AXLE_152, //4ҳг + AXLE_TYPE_4AXLE_125_2, //4½г + AXLE_TYPE_4AXLE_1222, //4ȫг + AXLE_TYPE_4AXLE_115, //4ػ + //5 + AXLE_TYPE_5AXLE_155_1 = 0x0500, //5ҳг + AXLE_TYPE_5AXLE_1125_1, //5ҳг + AXLE_TYPE_5AXLE_155_2, //5г + AXLE_TYPE_5AXLE_1125_2, //5г + AXLE_TYPE_5AXLE_129, //5г + AXLE_TYPE_5AXLE_1522, //5ȫг + AXLE_TYPE_5AXLE_11222, //5ȫг + //6 + AXLE_TYPE_6AXLE_159_1 = 0x0600, //6ҳг + AXLE_TYPE_6AXLE_159_2, //6ҳг + AXLE_TYPE_6AXLE_1155_1, //6ҳг + AXLE_TYPE_6AXLE_1155_2, //6ҳг + AXLE_TYPE_6AXLE_159_3, //6г + AXLE_TYPE_6AXLE_159_4, //6г + AXLE_TYPE_6AXLE_1129, //6г + AXLE_TYPE_6AXLE_11522_1, //6ȫҳ + AXLE_TYPE_6AXLE_11522_2, //6ȫҳ +}TRUCK_AXLE_MODEL; + +//շѹ·ͨзѳͷ +typedef enum _TOOLWAY_VEHICLE_TYPE +{ + TOOLWAY_RESULT_OTHER = 0, //δ֪ + TOOLWAY_PASSENGER_VEHICLE_CLASS_1_MINI = 1, //1ͳ΢ + TOOLWAY_PASSENGER_VEHICLE_CLASS_1_SMALL = 2, //1ͳС + TOOLWAY_PASSENGER_VEHICLE_CLASS_2_MIDDLE = 3, //2ͳ + TOOLWAY_PASSENGER_VEHICLE_CLASS_2_TRAILER = 4, //2ͳóг + TOOLWAY_PASSENGER_VEHICLE_CLASS_3_LARGR = 5, //3ͳ + TOOLWAY_PASSENGER_VEHICLE_CLASS_4_LARGR = 6, //4ͳ + TOOLWAY_GOODS_VEHICLE_CLASS_1 = 7, //12 + TOOLWAY_GOODS_VEHICLE_CLASS_2 = 8, //22 + TOOLWAY_GOODS_VEHICLE_CLASS_3 = 9, //33 + TOOLWAY_GOODS_VEHICLE_CLASS_4 = 10, //44 + TOOLWAY_GOODS_VEHICLE_CLASS_5 = 11, //55 + TOOLWAY_GOODS_VEHICLE_CLASS_6 = 12, //66 + TOOLWAY_MOTOR_VEHICLE_CLASS_1 = 13, //1ҵ2 + TOOLWAY_MOTOR_VEHICLE_CLASS_2 = 14, //2ҵ2 + TOOLWAY_MOTOR_VEHICLE_CLASS_3 = 15, //3ҵ3 + TOOLWAY_MOTOR_VEHICLE_CLASS_4 = 16, //4ҵ4 + TOOLWAY_MOTOR_VEHICLE_CLASS_5 = 17, //5ҵ5 + TOOLWAY_MOTOR_VEHICLE_CLASS_6 = 18 //6ҵڵ6 +}TOOLWAY_VEHICLE_TYPE; + +// +typedef struct tagNET_DVR_VEHICLE_WEIGHT_RESULT_ +{ + BYTE byIsOverWeight; //Ƿ + BYTE byAxleNum; // + WORD wAxleModel; //ο enum TRUCK_AXLE_MODEL,Ըͽĸ + float fOverWeight; //()ʵֵ1000䣨ʵֵȷСλ + float fWeight; //()ʵֵ1000䣨ʵֵȷСλ + float fLimitWeight; //()ʵֵ1000䣨ʵֵȷСλ + float fAxleLen; //()ʵֵ100䣨ʵֵȷСλ + char sDevDescInfo[MAX_DEVDESC_LEN/*64*/]; //豸Ϣ + WORD wAxleWeight[MAX_TRUCK_AXLE_NUM/*10*/]; //λǧˣkgiԪرʾi + WORD wAxleDistance[MAX_TRUCK_AXLE_NUM/*10*/]; //࣬λ(mm).iԪرʾi͵i+1ļ + DWORD dwLength; //λcm + DWORD dwWidth; //λcm + DWORD dwHeight; //ߣλcm + BYTE byTollwayVehicleType; //շѹ·ͣοTOOLWAY_VEHICLE_TYPE + BYTE byRes2[11]; //Ԥ +}NET_DVR_VEHICLE_WEIGHT_RESULT, *LPNET_DVR_VEHICLE_WEIGHT_RESULT; + +// Ƽ +typedef struct tagNET_DVR_PLATE_RESULT_V50 +{ + DWORD dwSize; //ṹ + DWORD dwMatchNo; //ƥ,(,,)ƥ + BYTE byGroupNum; //ͼƬһץĵһͼƬʱƥݣ + BYTE byPicNo; //ĵͼƬţյͼƬ󣬱ʾ;ճʱͼƬʱҪɾ + BYTE bySecondCam; //ǷڶץģԶץĵԶǰץĵĺĿлõ + BYTE byFeaturePicNo; //Ƶ羯ȡڼͼΪдͼ,0xff-ʾȡ + BYTE byDriveChan; // + BYTE byVehicleType; //ͣοVTR_RESULT + BYTE byDetSceneID;//ⳡ[1,4], IPCĬ0 + //ԣλʾ0- ޸(ͨ)bit1- Ʊ공(ı־)bit2- ΣƷֵ0- 1- + //ýڵѲʹ,ʹbyYellowLabelCarbyDangerousVehiclesжǷƱ공ΣƷ + BYTE byVehicleAttribute; + WORD wIllegalType; //ΥͲù궨 + BYTE byIllegalSubType[8]; //Υ + BYTE byPostPicNo; //ΥʱȡڼͼƬΪͼ,0xff-ʾȡ + BYTE byChanIndex; //ͨţ + WORD wSpeedLimit; //ޣʱЧ + BYTE byChanIndexEx; //byChanIndexEx*256+byChanIndexʾʵͨš + BYTE byVehiclePositionControl; /*λòر־,0~Ϊͨʶ𱨾,1~Ϊλòش + (ͨPUT /ISAPI/Traffic/channels//vehiclePositionControl?format=json)*/ + NET_DVR_PLATE_INFO struPlateInfo; //Ϣṹ + NET_DVR_VEHICLE_INFO struVehicleInfo; //Ϣ + BYTE byMonitoringSiteID[48]; // + BYTE byDeviceID[48]; //豸 + BYTE byDir; //ⷽ1-У򣩣2-()3-˫4-ɶ5-,6-򶫣7-ɱϣ8- + BYTE byDetectType; //ⷽʽ,1-ظд2-Ƶ3-֡ʶ4-״ﴥ + //ͣοITC_RELA_LANE_DIRECTION_TYPE + //òΪŶӦȷΨһԡ + BYTE byRelaLaneDirectionType; + BYTE byCarDirectionType; //ʻķ0ʾ£1ʾϣʵʳʻ֣,2ʾδ֪ + //wIllegalTypeΪʱʹøòwIllegalTypeΪֵʱwIllegalTypeΪ׼òЧ + DWORD dwCustomIllegalType; //ΥͶ(ûԶ) + /*Ϊ0~ָʽʱΪϵΥͣwIllegalTypedwCustomIllegalTypeЧֵΥ롣 + Ϊ1~ַʽʱpIllegalInfoBufЧϵΥͣwIllegalTypedwCustomIllegalTypeȻֵΥ*/ + BYTE* pIllegalInfoBuf; //ΥַϢṹָ룻ָNET_ITS_ILLEGAL_INFO + BYTE byIllegalFromatType; //ΥϢʽͣ 0~ָʽ 1~ַʽ + BYTE byPendant;// 0-ʾδ֪,1-2- + BYTE byDataAnalysis; //0-δ, 1-ѷ + BYTE byYellowLabelCar; //0-ʾδ֪, 1-ǻƱ공,2-Ʊ공 + BYTE byDangerousVehicles; //0-ʾδ֪, 1-ΣƷ,2-ΣƷ + //ֶΰPilotַΪʻCopilotַΪʻ + BYTE byPilotSafebelt;//0-ʾδ֪,1-ϵȫ,2-ϵȫ + BYTE byCopilotSafebelt;//0-ʾδ֪,1-ϵȫ,2-ϵȫ + BYTE byPilotSunVisor;//0-ʾδ֪,1-,2- + BYTE byCopilotSunVisor;//0-ʾδ֪, 1-,2- + BYTE byPilotCall;// 0-ʾδ֪, 1-绰,2-绰 + //0-բ1-δբ (רʷƥǷբɹı־) + BYTE byBarrierGateCtrlType; + BYTE byAlarmDataType;//0-ʵʱݣ1-ʷ + NET_DVR_TIME_V30 struSnapFirstPicTime;//˵ʱ(ms)ץĵһͼƬʱ䣩 + DWORD dwIllegalTime;//Υʱ䣨ms = ץһͼƬʱ - ץĵһͼƬʱ + DWORD dwPicNum; //ͼƬpicGroupNumͬϢͼƬͼƬϢstruVehicleInfoEx + NET_ITS_PICTURE_INFO struPicInfo[6]; //ͼƬϢ,Żص6ͼ + NET_DVR_VEHICLE_WEIGHT_RESULT struWeightResult; // + BYTE byRes[256]; //Ԥ +}NET_DVR_PLATE_RESULT_V50, *LPNET_DVR_PLATE_RESULT_V50; + + +typedef struct _NET_DVR_NORMAL_SCHEDTIME_ +{ + NET_DVR_SCHEDTIME struTime; + BYTE byAlarmType;//0-1-ز2-ʱ + BYTE byRes[3]; +}NET_DVR_NORMAL_SCHEDTIME,*LPNET_DVR_NORMAL_SCHEDTIME; + +typedef struct tagNET_DVR_SUBSYSTEM_ALARM +{ + DWORD dwSize; + NET_DVR_NORMAL_SCHEDTIME struNormalSchedtime[MAX_DAYS][MAX_TIMESEGMENT_V30]; + //ճƻʱ + BYTE byNormalSchedTimeOn; //ճƻǷ + BYTE byMandatoryAlarm;//0-ǿƲ1-ǿƲ ָǷΪ· + BYTE byRes[254]; +}NET_DVR_SUBSYSTEM_ALARM,*LPNET_DVR_SUBSYSTEM_ALARM; + + +#define MAX_ALLOWLIST_PHONE_NUM 16 + +typedef struct _NET_DVR_ALARM_PHONECFG +{ + DWORD dwSize; + BYTE byEnable;//Ƿ 0-ã1- + BYTE byRes1[3]; + BYTE byPhoneNumber[MAX_PHONE_NUM/*32*/]; + DWORD dwArmRight; //Ȩޣλbit0Ϊ1ʾϵͳ1вȨޣ + DWORD dwDisArmRight; //Ȩޣλbit0Ϊ1ʾϵͳ1гȨޣ + DWORD dwClearAlarmRight; //Ȩޣλbit0Ϊ1ʾϵͳ1Ȩޣ + BYTE byZoneReport[MAX_ALARMHOST_ALARMIN_NUM/*512*/]; //ͣ0-ϴ1-ϴ + DWORD dwNonZoneReport; //Ƿ bit0- bit1-ϵͳ״̬ bit2-ȡ bit3-Ա,bit4- bit5- bit6-Юֱ bit7-ָ bit8-· bit9-·ָ,bit10-̽״̬棨ߡߣ,bit11-̽״̬棨ѹǷѹ,bit12-Ƶ + BYTE byIntervalTime; //0-0s,1-10s,2-30s,3-1min,4-5min,5-10min,6-Զ壨1~5999s + BYTE byRes2; + WORD wDefineIntervalTime; //byIntervalTimeΪ6ʱЧԶʱ䣨1~5999s + BYTE byRes3[128]; +}NET_DVR_ALARM_PHONECFG, *LPNET_DVR_ALARM_PHONECFG; + +typedef struct tagNET_DVR_MODULE_INFO +{ + DWORD dwSize; + BYTE byModuleType; //Ӵͣ1-̣2-3- 4-ģ + BYTE byKeyBoardType; //1-LCD,2-LED + BYTE byTriggerType; // 1-ش 2-4·3-8·4-5-32· + BYTE byZoneType; //ͣ1-ط2-3-˫4-85-8·ģ, 6- + WORD wModuleAddress; //Ӵַչģ0~2550xFFFFʾЧ + BYTE byRes2[2]; // + char sModelInfo[32]; //ģϢ + char sDeviceVersionInfo[32]; //汾Ϣ + BYTE byRes[128]; // +}NET_DVR_MODULE_INFO,*LPNET_DVR_MODULE_INFO; + +typedef struct tagNET_DVR_ALARMHOST_DETECTOR_INFO +{ + DWORD dwSize; + BYTE byDetectorSerialNo[16]; //̽к + DWORD dwAlarmIn; // + WORD wDetectorType; // ̽ͣDETECTOR_TYPE + BYTE byRes[126]; // +}NET_DVR_ALARMHOST_DETECTOR_INFO, *LPNET_DVR_ALARMHOST_DETECTOR_INFO; + +typedef struct tagNET_DVR_ONE_OUTPUT_SCHEDULE_RULE_V40 +{ + BYTE byEnable;// 0- 1- + BYTE byRes1[3]; + NET_DVR_SCHEDDATE struDate; + NET_DVR_OUTPUT_SCHEDULE struOutputSchedule[MAX_TIMESEGMENT_V30/*8*/]; + BYTE byTriggerIndex[MAX_ALARMHOST_ALARMOUT_NUM];//±ʾţֵ0-ã1- + BYTE byRes2[64]; +}NET_DVR_ONE_OUTPUT_SCHEDULE_RULE_V40,*LPNET_DVR_ONE_OUTPUT_SCHEDULE_RULE_V40; +//ʱ +typedef struct tagNET_DVR_OUTPUT_SCHEDULE_RULECFG_V40 +{ + DWORD dwSize; //ṹС + NET_DVR_ONE_OUTPUT_SCHEDULE_RULE_V40 struOutputRule[MAX_RULE_NUM/*8*/]; //֧8εĹãڶʱ/شֻҪʹһξͿ + BYTE byRes[64]; // +}NET_DVR_OUTPUT_SCHEDULE_RULECFG_V40,*LPNET_DVR_OUTPUT_SCHEDULE_RULECFG_V40; + +//ʱ +typedef struct tagNET_DVR_ONE_OUTPUT_SCH_RULECFG_V40 +{ + DWORD dwSize; + NET_DVR_ONE_OUTPUT_SCHEDULE_RULE_V40 struOutputRule; + BYTE byRes[256]; // +}NET_DVR_ONE_OUTPUT_SCH_RULECFG_V40,*LPNET_DVR_ONE_OUTPUT_SCH_RULECFG_V40; + +typedef struct tagNET_DVR_ALARM_CAPTRUE_CFG +{ + DWORD dwSize; + BYTE byBeforeAlarmPic; //Ӧֱ¿ñǰͼƬ4CIF10ţ2CIF20ţCIF40ţQCIF80ţWD1:10,XVGA:10,720P:10,1080P:10 + BYTE byAfterAlarmPic; //Ӧֱ¿ñͼƬ 4CIF10ţ2CIF20ţCIF40ţQCIF80ţWD1:10,XVGA:10,720P:10,1080P:10 + WORD wInterval; //ʱ λs + BYTE byResolution; //ͼƬֱ1-CIF2-2CIF3-4CIF4-QCIF5-WD16-VGA,7-XVGA8-720P9-1080P + BYTE byRes[63]; // ֽ +}NET_DVR_ALARM_CAPTRUE_CFG, *LPNET_DVR_ALARM_CAPTRUE_CFG; + +#define PRIOR_SCHEDTIME 30 + +typedef struct _NET_DVR_PRIOR_SCHEDTIME_ +{ + DWORD dwSize; + NET_DVR_SCHEDDATE struData; + NET_DVR_NORMAL_SCHEDTIME struOneDayTime[8]; + BYTE byEnable; //Ƿ 0-ã1- + BYTE byRes1[3]; + BYTE bySubSystem[32];//ϵͳ±ʾϵͳ 0-֧֣1-֧ + BYTE byMandatoryAlarm;//0-ǿƲ1-ǿƲ ָǷΪ· + BYTE byRes[63]; +}NET_DVR_PRIOR_SCHEDTIME,*LPNET_DVR_PRIOR_SCHEDTIME; + +typedef struct tagNET_DVR_TAMPER_ALARMIN_PARAM +{ + DWORD dwSize; + BYTE byTamperType; // 0-,1-2- + BYTE byUploadAlarmRecoveryReport; //Ƿϴָ棬0-ϴ1-ϴ + BYTE byRes1[2]; + BYTE byAssociateAlarmOut[MAX_ALARMHOST_ALARMOUT_NUM]; // BYTE byAssociateSirenOut[8]; // 0 ʾ1 ֵΪ1ʾ 0 ʾ + BYTE byAssociateSirenOut[8]; // 0 ʾ1 ֵΪ1ʾ 0 ʾ + BYTE byTamperResistor; //裬λǧŷ 0-Ч 1-2.2 2--3.3, 3-4.7 4-5.6 5-8.2 0xff-Զ + BYTE byRes2[3]; + float fTamperResistorManual;/*ֶ裬1.0-10.0ȷСһλλǧŷbyTamperResistorΪ0xffʱЧ*/ + BYTE byRes3[36]; // ֽ +}NET_DVR_TAMPER_ALARMIN_PARAM, *LPNET_DVR_TAMPER_ALARMIN_PARAM; + + +typedef struct tagNET_DVR_REMOTECONTROLLER_PERMISSION_CFG +{ + DWORD dwSize; + BYTE byEnable; + BYTE byAssociateNetUser;//û + WORD wRemoteCtrllerID;//ң 1ʼ + BYTE sDevSn[16];/*Ʒк*/ + BYTE byArmRight; /*0-޲Ȩޣ1-вȨ*/ + BYTE byDisArmRight; /*0-޳Ȩޣ1-гȨ*/ + BYTE byArmReportRight; /*0-޴Ȩޣ1-дȨ*/ + BYTE byDisArmReportRight;/*0-ϴȨޣ1-ϴȨ*/ + BYTE byClearAlarmRight; /*0-Ȩޣ1-Ȩ*/ + BYTE bySubSystemID; /* 豸(ң)ϵͳ,1~8 */ + BYTE byKeyboardAddr; /* ռ̵ĵַ,ʱ */ + BYTE byEnableDel; //ɾңû0-ɾ1-ɾ + BYTE byAlwaysOpenRight; /*Ƿ0-Ч1-2-*/ + BYTE byOpeningDirection; /*ŷ0-Ч1-ŷ2-ŷ*/ + BYTE byRes3[2]; + BYTE byName[NAME_LEN]; //ң + BYTE byRes2[28]; +}NET_DVR_REMOTECONTROLLER_PERMISSION_CFG, *LPNET_DVR_REMOTECONTROLLER_PERMISSION_CFG; + + +typedef struct tagNET_DVR_KEYBOARD_CFG +{ + DWORD dwSize; + BYTE byEnableLock; //Ƿü,0--, 1-- + BYTE byErrorTimes; //ụ̂ + WORD wLockTime; //ʱ䣬λ + BYTE byRes[128]; +}NET_DVR_KEYBOARD_CFG, *LPNET_DVR_KEYBOARD_CFG; + + +typedef struct tagNET_DVR_ALARMHOST_WIRELESS_BUSINESS_COND +{ + DWORD dwSize; + BYTE byCommOperatorNum[NAME_LEN/*32*/];//ͨӪ̺ + BYTE byQueryCode[16];//ҵѯ + BYTE byBusinessType;//ҵ 0-ѣ1- + BYTE byRes[35]; +}NET_DVR_ALARMHOST_WIRELESS_BUSINESS_COND, *LPNET_DVR_ALARMHOST_WIRELESS_BUSINESS_COND; + +typedef struct tagNET_DVR_ALARMHOST_WIRELESS_BUSINESS_INFO +{ + DWORD dwSize; + BYTE by3GBusiness[1024];//3GҵͨŲѯ + BYTE byRes[32]; +}NET_DVR_ALARMHOST_WIRELESS_BUSINESS_INFO, *LPNET_DVR_ALARMHOST_WIRELESS_BUSINESS_INFO; + +typedef struct tagNET_DVR_PREVIEW_DELAY_CFG +{ + DWORD dwSize; + WORD wdelayTime;//ӳԤʱ䣬λ + BYTE byRes[130]; +}NET_DVR_PREVIEW_DELAY_CFG, *LPNET_DVR_PREVIEW_DELAY_CFG; + +typedef struct tagNET_DVR_AUXILIARY_DEV_UPGRADE_PARAM +{ + DWORD dwSize; + DWORD dwDevNo; //豸 + BYTE byDevType; //豸 0-,1-о,2-ģ,3-· 4-5-RS485չģ飬6-¿ģ飬7-ģ,8-ڹģ + BYTE byRes[131]; +}NET_DVR_AUXILIARY_DEV_UPGRADE_PARAM,*LPNET_DVR_AUXILIARY_DEV_UPGRADE_PARAM; + +typedef struct tagNET_DVR_CALL_ROOM_CFG +{ + DWORD dwSize; + SHORT nFloorNumber; // + WORD wRoomNumber; // + BYTE byManageCenter; //Ƿй + BYTE byRes1[3]; + BYTE byCalledName[64]; //׼sipģʽЧû, ֧֡ĸ@͡. + BYTE byRes[60]; +}NET_DVR_CALL_ROOM_CFG,*LPNET_DVR_CALL_ROOM_CFG; + +typedef struct tagNET_DVR_VIDEO_CALL_COND +{ + DWORD dwSize; + BYTE byRes[128]; +}NET_DVR_VIDEO_CALL_COND,*LPNET_DVR_VIDEO_CALL_COND; + +//ѶϢ +typedef struct tagNET_DVR_INQUEST_CASE_INFO +{ + DWORD dwSize; + BYTE sCaseNo[INQUEST_CASE_NO_LEN]; // + BYTE sCaseName[INQUEST_CASE_NAME_LEN]; //ƣ + BYTE sCustomInfo1[CUSTOM_INFO_LEN]; //ԶϢ1 + BYTE sCustomInfo2[CUSTOM_INFO_LEN]; //ԶϢ2 + BYTE sCustomInfo3[CUSTOM_INFO_LEN]; //ԶϢ3 + BYTE byShowCaseInfoTime; /* Ϣʾʱ,λ, ȡֵΧ1~60*/ + BYTE byShowCaseInfo; //ʼǷʾϢ0-ʾ1-ʾ + BYTE byPosition; //ʾλã0-ϣ1- + BYTE byRes1; // + BYTE byCustomInfo4[CUSTOM_INFO_LEN]; //ԶϢ4ʱֶЧ + BYTE byCustomInfo5[CUSTOM_INFO_LEN]; //ԶϢ5ʱֶЧ + BYTE byRes[128]; // +}NET_DVR_INQUEST_CASE_INFO, *LPNET_DVR_INQUEST_CASE_INFO; + +typedef struct tagNET_DVR_CASE_INFO_CTRL_PARA +{ + DWORD dwSize; + DWORD dwChannel;//Ѷͨ + BYTE byShowCaseInfoTime; //ʾʱ + BYTE byRes[131]; +}NET_DVR_CASE_INFO_CTRL_PARAM, *LPNET_DVR_CASE_INFO_CTRL_PARA; + +typedef struct tagNET_DVR_INQUEST_USER_RIGHT_CFG +{ + DWORD dwSize; + /*0: Ѷ¼ɾȨ*/ + BYTE byLocalRight[MAX_RIGHT]; /* Ȩ */ + /*0: ԶƵԤȨ*/ + BYTE byRemoteRight[MAX_RIGHT];/* ԶȨ */ + BYTE byNetAudioRight[MAX_CHANNUM_V40]; /* ԶƵԤȨޣ±ʾֵͨʾȨޣ0-Ȩޣ1-Ȩ*/ + BYTE byRes[512*9]; //9Ȩ޿չ +}NET_DVR_INQUEST_USER_RIGHT_CFG, *LPNET_DVR_INQUEST_USER_RIGHT_CFG; + +typedef struct tagNET_DVR_INQUEST_MIX_AUDIOIN_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿû0-ã1- + BYTE byRes1[3]; // + DWORD dwMixCnt; /*ͨ*/ + BYTE bySrcChan[MAX_MIX_CHAN_NUM]; /*±ʾͨţģͨIPͨ,ֵ0ʾ죬ֵ1ʾ*/ + BYTE byLineIn[MAX_LINE_IN_CHAN_NUM]; /*±ʾLine Inͨ,ֵ0ʾ죬ֵ1ʾ*/ + BYTE byMic[MAX_MIC_CHAN_NUM]; /*±ʾMicͨ,ֵ0ʾ죬ֵ1ʾ*/ + BYTE byMixAudioDelay; //ӳ٣λ֡Χ0-63 + BYTE byRes2[127]; // +}NET_DVR_INQUEST_MIX_AUDIOIN_CFG, *LPNET_DVR_INQUEST_MIX_AUDIOIN_CFG; + +typedef struct tagNET_DVR_FACECAPTURE_STATISTICS_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + NET_DVR_TIME_EX struStartTime; //ʼʱ + BYTE byReportType; //ͳƱͣ1-ձ2-ܱ3-±4-걨 + BYTE byStatType; //ͳƣBit0-ΣBit1-ԱBit2- + BYTE byEnableProgramStatistics; //Ƿ񰴽Ŀͳƣ0-1- + BYTE byRes1; + DWORD dwPlayScheduleNo; //Ŀͳʱճ̺ + BYTE byRes[120]; +}NET_DVR_FACECAPTURE_STATISTICS_COND,*LPNET_DVR_FACECAPTURE_STATISTICS_COND; + +typedef struct tagNET_DVR_AGEGROUP_PARAM_ +{ + DWORD dwTeenage;//꣨ + DWORD dwYouth;//꣨ + DWORD dwMidLife;//꣨ + DWORD dwElderly;//꣨ + DWORD dwChild;//ͯ + DWORD dwAdolescent;//꣨ + DWORD dwPrime;//׳꣨ + DWORD dwMidage;//꣨ + BYTE byRes[48]; +}NET_DVR_AGEGROUP_PARAM, *LPNET_DVR_AGEGROUP_PARAM; + +typedef struct tagNET_DVR_FILECOND_MEDICAL +{ + LONG lChannel;//ͨ + DWORD dwFileType;//¼ļ + //ţ0xffȫ0ʱ¼,1-ƶ 23-|ƶ 4-&ƶ 5- 6-ֶ¼,7-¼10-PIR11-߱12-ȱ13-ȫ¼14-ܽͨ¼ + //ţ0xffȫ0ʱ¼1-ƶ⣬2ӽ345-6ֶ¼7𶯱8-9-ܱ10-PIR11-߱12-ȱ13-ȫ¼14-ܽͨ¼ + DWORD dwIsLocked;//Ƿ 0-ļ,1-ļ, 0xffʾļ + DWORD dwUseCardNo;//Ƿʹÿ + BYTE sCardNumber[32];// + NET_DVR_TIME_SEARCH_COND struStartTime;//ʼʱ + NET_DVR_TIME_SEARCH_COND struStopTime;//ʱ + char szPatientID[64]; + DWORD dwBigFileType; // 0ΪͨƬ1Ϊļ + BYTE byRes[252]; +}NET_DVR_FILECOND_MEDICAL, *LPNET_DVR_FILECOND_MEDICAL; + +typedef struct tagNET_DVR_FIND_PICTURE_MEDICAL_PARAM +{ + DWORD dwSize; // ṹС + LONG lChannel; // ͨ + /* ҵͼƬ:0ʱץͼ1 ƶץͼ 2 ץͼ + 3 | ƶץͼ 4 & ƶץͼ 6 ֶץͼ , + 9-ͼƬ,10- PIR11- ߱12- ȱ, + 0xa Ԥʱͼ0xd , 0xe Խ⣬0xf ⣬ + 0x10 , 0x11-豸ػطʱͼ, 0x12-, + 0x13-,0x14-뿪,0x15-ǻ, + 0x16-Աۼ,0x17-˶,0x18-ͣ, + 0x19-Ʒ,0x1a-Ʒȡ, 0x1b-, + 0x1c-м,0x1d-ȡ֤¼,0x1e-,0x1f-ƻ, + 0x20-ֻ⣬0x21-Ԥ0x22-±, 0x23, 0x24Υͣ,0x25-ץ,0x26-߲±,0x2a-,0x2b-ʸ,0x2c-޳ʱ,0x2d-ȫñ,0x2e-ܽץ,0x2f-Ŀץ,0x30-ץĽģ, 0x31-Ŀ,0x32-, 0x33-, 0x34-ҵѯ,0x35-Ƿ̯,0xff- ȫ*/ + BYTE byFileType; + BYTE byNeedCard; // ǷҪ + /* + 0-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- + 29-أ30-ۣ31-£32-ƣ33-㣬34-0xff-ȫ + */ + BYTE byProvince; //ʡֵ + BYTE byRes1; //ҽǷҪ󷵻Ϣ0-أ1- + NET_DVR_TIME struStartTime;//ͼƬĿʼʱ + NET_DVR_TIME struStopTime;// ͼƬĽʱ + char szPatientID[64]; + BYTE byRes[256]; +}NET_DVR_FIND_PICTURE_MEDICAL_PARAM, *LPNET_DVR_FIND_PICTURE_MEDICAL_PARAM; + +typedef struct tagNET_DVR_SEXGROUP_PARAM_ +{ + DWORD dwMale;//У + DWORD dwFemale;//Ů + BYTE byRes[64]; +}NET_DVR_SEXGROUP_PARAM,*LPNET_DVR_SEXGROUP_PARAM; + +typedef struct tagNET_DVR_FACECAPTURE_STATISTICS_RESULT_ +{ + DWORD dwSize; + NET_DVR_TIME_EX struStartTime;/*ʼʱ*/ + NET_DVR_TIME_EX struEndTime;/*ʱ*/ + BYTE byStatType;//ͳƣBit0-ЧBit1-ԱЧBit2-Ч + BYTE byRes[7]; + DWORD dwPeopleNum;//ͳ + NET_DVR_AGEGROUP_PARAM struAgeGroupParam;//ͳ + NET_DVR_SEXGROUP_PARAM struSexGroupParam;//Աͳ + NET_DVR_PROGRAM_INFO struProgramInfo; //ĿϢ + BYTE byRes1[76]; +}NET_DVR_FACECAPTURE_STATISTICS_RESULT,*LPNET_DVR_FACECAPTURE_STATISTICS_RESULT; + +//ȡͨṹ +typedef struct tagNET_DVR_TRAFFIC_DATA_QUERY_COND_ +{ + DWORD dwSize; + /* + Bit0-ͨЧ + Bit1-ʱЧ + Bit2-ƺЧ + Bit3-Ч + Bit4-ɫЧ + Bit5-ɫЧ + Bit6-Ч + Bit7-ƷЧ + Bit8-Ч + Bit9-ⷽЧ + Bit10-ٶЧ + Bit11-ٶЧ + Bit12-Ч + Bit13-طʽЧ + Bit14-Υȡ֤Ч + Bit15-¼Ч + Bit16-ȡ֤Ч + */ + DWORD dwQueryCond;//ѯ 0ʾЧ1ʾЧ + DWORD dwChannel;//Ĭ1[1~32]bit0ʾͨ1bit31ʾͨ32 + NET_DVR_TIME_V30 struStartTime;//ʼʱ + NET_DVR_TIME_V30 struEndTime;//ʱ + char sLicense[MAX_LICENSE_LEN/*16*/];//(豸֧ģѯ, GB2312) + /* + Bit0-δ֪ + Bit1-׼ó + Bit2-02ʽó + Bit3-侯 + Bit4- + Bit5-ó˫β + Bit6-ʹݳ + Bit7-ũó + Bit8-Ħг + */ + DWORD dwPlateType;//ְ֧ͣλʾԸѡ + /* + Bit0-δ֪ + Bit1-ɫ + Bit2-ɫ + Bit3-ɫ + Bit4-ɫ + Bit5-ɫ + */ + DWORD dwPlateColor;//ɫְ֧λʾԸѡ + /* + Bit0-δ֪ + Bit1-ɫ + Bit2-ɫ + Bit3-ɫ + Bit4-ɫ + Bit5-ɫ + Bit6-ɫ + Bit7-ɫ + Bit8-ɫ + Bit9-ɫ + Bit10-ɫ + Bit11-ɫ + Bit12-ɫ + Bit13-ɫ + */ + DWORD dwVehicleColor;//ɫְ֧λʾԸѡ + /* + Bit0-δ֪ + Bit1-ͳ + Bit2- + Bit3-γ + Bit4- + Bit5-С + Bit6- + Bit7-ֳ + Bit8-ֳ + Bit9-SUV/MPV + Bit10-Ϳͳ + */ + DWORD dwVehicleType;//ְ֧ͣλʾԸѡ + /** + Bit0- + Bit1- + Bit2- + Bit3- + Bit4- + Bit5-ѹ + Bit6- + Bit7-· + Bit8-ռ + Bit9-Υ + Bit10- + Bit11-Υ + Bit12-·ͣ + Bit13-̵ͣ + Bit14-δ + Bit15-Υͣ + Bit16-Υµͷ + Bit17-ռӦ + Bit18-δϵȫ + */ + DWORD dwIllegalType; + /** + Bit0- + Bit1-ӵ + Bit2-ͣ + Bit3- + Bit4- + Bit5- + Bit6- + Bit7-ѹ + Bit8-ֹ + Bit9- + Bit10- + Bit11-ͷ + Bit12-ռ + Bit13- + */ + DWORD dwEventType; + /** + Bit0- + Bit1-й·Υͣ + Bit2-ٹ·Υͣ + Bit3-ѹ + Bit4- + Bit5-Υ + Bit6-ռ + */ + DWORD dwForensiceType; + WORD wVehicleLogoRecog; //Ʒƣο"Ʒ.xlsx" ѡ + BYTE byLaneNo;//ţ0~255,0ų ʾ δ֪ + BYTE byDirection;//ⷽ1-У2-У3-˫4-ɶ5-,6-򶫣7-ɱ + WORD wMinSpeed;//ٶȣ0~999λkm/h + WORD wMaxSpeed;//ٶȣ0~999λkm/h + BYTE byDataType;// 0-ݣ1-Υݣ2-ͨ¼3-ȡ֤ ѡ + BYTE byExecuteCtrl;// 0-1-ֹ0xff- + BYTE byRes[254]; +}NET_DVR_TRAFFIC_DATA_QUERY_COND,*LPNET_DVR_TRAFFIC_DATA_QUERY_COND; + +//ͨͼƬӽṹ +typedef struct tagNET_DVR_TRAFFIC_PICTURE_PARAM_ +{ + NET_DVR_TIME_V30 struRelativeTime; //ץʱ + NET_DVR_TIME_V30 struAbsTime; //ץľʱ + char szPicName[PICTURE_NAME_LEN/*64*/]; + BYTE byPicType;//ͼƬ 0-ͼ1-ץԭͼ2-ϳͼ3-дͼ + BYTE byRes[63]; +}NET_DVR_TRAFFIC_PICTURE_PARAM,*LPNET_DVR_TRAFFIC_PICTURE_PARAM; + +//ͨݽṹ +typedef struct tagNET_DVR_TRAFFIC_DATA_QUERY_RESULT_ +{ + DWORD dwSize; + DWORD dwChannel;//Ĭ1[1~32] + char sLicense[MAX_LICENSE_LEN/*16*/]; + /* + Bit0-δ֪ + Bit1-׼ó + Bit2-02ʽó + Bit3-侯 + Bit4- + Bit5-ó˫β + Bit6-ʹݳ + Bit7-ũó + Bit8-Ħг + */ + DWORD dwPlateType;// + /* + Bit0-δ֪ + Bit1-ɫ + Bit2-ɫ + Bit3-ɫ + Bit4-ɫ + Bit5-ɫ + */ + DWORD dwPlateColor;//ɫ + /* + Bit0-δ֪ + Bit1-ɫ + Bit2-ɫ + Bit3-ɫ + Bit4-ɫ + Bit5-ɫ + Bit6-ɫ + Bit7-ɫ + Bit8-ɫ + Bit9-ɫ + Bit10-ɫ + Bit11-ɫ + Bit12-ɫ + Bit13-ɫ + */ + DWORD dwVehicleColor;//ɫ + /* + Bit0-δ֪ + Bit1-ͳ + Bit2- + Bit3-γ + Bit4- + Bit5-С + Bit6- + Bit7-ֳ + Bit8-ֳ + Bit9-SUV/MPV + Bit10-Ϳͳ + Bit11- + Bit12-ǻ + Bit13-Сͽγ + Bit14-΢ͽγ + Bit15-Ƥ + Bit16-װ俨 + Bit17-΢忨 + Bit18- + Bit19-̳ + Bit20-͹޳ + Bit21-賵 + Bit22-ƽϳ + Bit23-γ + Bit24-γ + Bit25- + Bit26-СͿͳ + */ + DWORD dwVehicleType;// + /** + Bit0- + Bit1- + Bit2- + Bit3- + Bit4- + Bit5-ѹ + Bit6- + Bit7-· + Bit8-ռ + Bit9-Υ + Bit10- + Bit11-Υ + Bit12-·ͣ + Bit13-̵ͣ + Bit14-δ + Bit15-Υͣ + Bit16-Υµͷ + Bit17-ռӦ + Bit18-δϵȫ + */ + DWORD dwIllegalType; + /** + Bit0- + Bit1-ӵ + Bit2-ͣ + Bit3- + Bit4- + Bit5- + Bit6- + Bit7-ѹ + Bit8-ֹ + Bit9- + Bit10- + Bit11-ͷ + Bit12-ռ + Bit13- + */ + DWORD dwEventType; + /** + Bit0- + Bit1-й·Υͣ + Bit2-ٹ·Υͣ + Bit3-ѹ + Bit4- + Bit5-Υ + Bit6-ռ + */ + DWORD dwForensiceType; + WORD wVehicleLogoRecog; //Ʒƣο"Ʒ.xlsx" + BYTE byLaneNo;//ţ0~255,0ų ʾ δ֪ + BYTE byDirection;//ⷽ1-У2-У3-˫4-ɶ5-,6-򶫣7-ɱ + WORD wSpeed;//ٶȣ0~999λkm/h + BYTE byDataType;//: 0- 1-Υ 2-¼ 3-ȡ֤ + BYTE byRes[253]; + NET_DVR_TRAFFIC_PICTURE_PARAM struTrafficPic[MAX_TRAFFIC_PICTURE_NUM/*8*/]; +}NET_DVR_TRAFFIC_DATA_QUERY_RESULT,*LPNET_DVR_TRAFFIC_DATA_QUERY_RESULT; + +//ӻȡͨṹ +typedef struct tagNET_DVR_TRAFFIC_FLOW_QUERY_COND_ +{ + DWORD dwSize; + /** + Bit0-ͨЧ + Bit1-ʱЧ + Bit2-Ч + */ + DWORD dwQueryCond;//ѯ 0- + DWORD dwChannel;//Ĭ1[1~32]bit0ʾͨ1bit31ʾͨ32 + DWORD dwResChan[10];//Ԥչͨ + NET_DVR_TIME_V30 struStartTime;//ʼʱ + NET_DVR_TIME_V30 struEndTime;//ʱ + BYTE byLaneNo;//ţ0~255,0ų ʾ δ֪ + BYTE byRes[255]; +}NET_DVR_TRAFFIC_FLOW_QUERY_COND,*LPNET_DVR_TRAFFIC_FLOW_QUERY_COND; + +//ӻȡͨṹ +typedef struct tagNET_DVR_TRAFFIC_FLOW_QUERY_RESULT_ +{ + DWORD dwSize; + NET_DVR_TIME_V30 struStartTime;//ʼʱ + NET_DVR_TIME_V30 struEndTime;//ʱ + DWORD dwChannel;//Ĭ1[1~32] + DWORD dwFlow;// + BYTE byLaneNo;//ţ0~255,0ų ʾ δ֪ + BYTE byRes[511]; +}NET_DVR_TRAFFIC_FLOW_QUERY_RESULT,*LPNET_DVR_TRAFFIC_FLOW_QUERY_RESULT; + +//ͼƬ +typedef struct tagNET_DVR_PIC_INFO +{ + BYTE byPicType; //ͼƬͣ0-jpg + BYTE byRes1[3]; // + DWORD dwPicWidth; //ͼƬ + DWORD dwPicHeight; //ͼƬ߶ + DWORD dwPicDataLen; //ͼƬݴС + char* byPicDataBuff; //ͼƬݻ + BYTE byRes2[32]; // +}NET_DVR_PIC_INFO,*LPNET_DVR_PIC_INFO; + +typedef struct tagNET_DVR_VCA_RULE_COLOR_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnable; //Ƿã 0-ã1- + BYTE byRuleID; //ĹID + BYTE byColorBlockNo; //ɫţ1ʼ + BYTE byRes1; // + NET_DVR_PIC_INFO struPicInfo; //ͼƬɫϢ + BYTE byRes[64]; +}NET_DVR_VCA_RULE_COLOR_CFG,*LPNET_DVR_VCA_RULE_COLOR_CFG; + +typedef struct tagNET_DVR_VCA_RULE_COLOR_COND +{ + DWORD dwSize;//ṹС + DWORD dwChannel; //ͨ + BYTE byRuleID; //ĹID 0ʾ + BYTE byRes[127]; +}NET_DVR_VCA_RULE_COLOR_COND,*LPNET_DVR_VCA_RULE_COLOR_COND; + +//LLDP +typedef struct tagNET_DVR_LLDP_PORT_CFG +{ + BYTE byCardNo; // + BYTE byPortNo; //˿ں + BYTE byEnabledTx; //ʹܷlldp0-ʹܣ1-ʹ + BYTE byEnabledRx; //ʹܽlldp0-ʹܣ1-ʹ + BYTE byRes[12]; +}NET_DVR_LLDP_PORT_CFG, *LPNET_DVR_LLDP_PORT_CFG; + +typedef struct tagNET_DVR_LLDP_CFG +{ + DWORD dwSize; + BYTE byEnabled; //ʹLLDPܣ0-ʹܣ1-ʹ + BYTE byRes1[3]; + DWORD dwHoldTime; //ʱ䣬λ + DWORD dwReiniTime; //³ʼʱ䣬λ + DWORD dwPacketTime; //ʱ䣬λ + NET_DVR_LLDP_PORT_CFG struLLDPPortCfg[MAX_PORT_NUM]; //˿LLDP + BYTE byRes2[32]; +}NET_DVR_LLDP_CFG, *LPNET_DVR_LLDP_CFG; + +//շϢ +typedef struct tagNET_DVR_CARD_PORT_INFO +{ + DWORD dwPortNo; //˿ںţ0-Ч + BYTE byPortName[NAME_LEN]; //˿ + BYTE byWorkMode; //ģʽ1-ACCESS2-TRUNK3-HYPRID + BYTE byBandWidth; //1-100M2-1G3-10G + BYTE byPortType; //˿ͣ1-ڣ2-ڣ3-縴ÿ + BYTE byRes[13]; +}NET_DVR_CARD_PORT_INFO, *LPNET_DVR_CARD_PORT_INFO; + +typedef struct tagNET_DVR_NETMGR_CARD_INFO +{ + BYTE byTypeName[NAME_LEN]; //ͺ + BYTE bySerialNo[SERIALNO_LEN]; //к + BYTE bySoftwareVersion[VERSION_LEN]; //汾 + NET_DVR_IPADDR struIPAddr; //IPַ + DWORD dwSlotNo; //ܿλţλ + BYTE byStructureType; //ṹͣ1-2U2-4U + BYTE byRes1[3]; + NET_DVR_CARD_PORT_INFO struNetPortInfo[MAX_SINGLE_CARD_PORT_NO]; //Ϣ + BYTE byRes2[32]; +}NET_DVR_NETMGR_CARD_INFO, *LPNET_DVR_NETMGR_CARD_INFO; + +typedef struct tagNET_DVR_FUNC_CARD_INFO +{ + DWORD dwCardNo; //ţ1ʼ + BYTE byTypeName[NAME_LEN]; //ͺ + BYTE bySerialNo[SERIALNO_LEN]; //к + BYTE bySoftwareVersion[VERSION_LEN]; //汾 + DWORD dwMainSlot; //λ1ʼ + BYTE byStructureType; //ṹͣ1-2U2-4U + BYTE byRes1[3]; + NET_DVR_CARD_PORT_INFO struFuncPortInfo[MAX_SINGLE_CARD_PORT_NO]; //˿ڲ + BYTE byRes2[32]; +}NET_DVR_FUNC_CARD_INFO, *LPNET_DVR_FUNC_CARD_INFO; + +typedef struct tagNET_DVR_FIBER_CONVERT_BASIC +{ + DWORD dwSize; + BYTE byPowerType; //Դͣ1-Դ2-˫Դ + BYTE byRes1[3]; + DWORD dwSlotNum; //ܿλţλ + NET_DVR_NETMGR_CARD_INFO struNetCardInfo; //ܿϢ + NET_DVR_FUNC_CARD_INFO struFuncCardInfo[MAX_FUNC_CARD_NUM]; //ܿϢ + BYTE byRes2[64]; +}NET_DVR_FIBER_CONVERT_BASIC, *LPNET_DVR_FIBER_CONVERT_BASIC; + +//շ״̬Ϣ +typedef struct tagNET_DVR_CARD_PORT_STATE +{ + BYTE byValid; //ǷЧ0-Ч1-Ч + BYTE byPortType; //˿ͣ1-ڣ2-ڣ3-縴ÿ + BYTE byLinkState; //״̬0-δӣ1- + BYTE byRes1; + DWORD dwSendBytes; //͵ֽ + DWORD dwRecvBytes; //ݰ + DWORD dwRecvLostPackets; //ն + DWORD dwRecvCrcErrPackets; //CRCУ + DWORD dwRecvFragmentPackets; //ƬͻֽڰȾС64ֽڣ + BYTE byRes2[16]; +}NET_DVR_CARD_PORT_STATE, *LPNET_DVR_CARD_PORT_STATE; + +typedef struct tagNET_DVR_NET_CARD_STATE +{ + NET_DVR_CARD_PORT_STATE struNetPortState[MAX_SINGLE_CARD_PORT_NO]; //˿״̬ + BYTE byRes[64]; +}NET_DVR_NET_CARD_STATE, *LPNET_DVR_NET_CARD_STATE; + +typedef struct tagNET_DVR_FUNC_CARD_STATE +{ + BYTE byEnabled; //˽ṹǷЧ0-Ч1-Ч + BYTE byRes1[3]; + DWORD dwCardNo; // + NET_DVR_CARD_PORT_STATE struFuncCardPortState[MAX_SINGLE_CARD_PORT_NO]; + BYTE byRes[32]; +}NET_DVR_FUNC_CARD_STATE, *LPNET_DVR_FUNC_CARD_STATE; + +typedef struct tagNET_DVR_FIBER_CONVERT_STATE +{ + DWORD dwSize; + NET_DVR_NET_CARD_STATE struNetCardState; //ܿ״̬ + NET_DVR_FUNC_CARD_STATE struFuncCardState[MAX_FUNC_CARD_NUM]; //ܿ״̬ + BYTE byRes[32]; +}NET_DVR_FIBER_CONVERT_STATE, *LPNET_DVR_FIBER_CONVERT_STATE; + +//Զշ1.0 Ϣ +typedef struct tagNET_DVR_NETMGR_CARD_INFO_V50 +{ + BYTE byMainSlotNo; //ܿλţλ + BYTE byRes1[3]; + BYTE byTypeName[NAME_LEN]; //ͺ + BYTE bySerialNo[SERIALNO_LEN]; //к + BYTE bySoftwareVersion[VERSION_LEN]; //汾 + BYTE byHardwareVersion[VERSION_LEN]; //Ӳ汾 + NET_DVR_IPADDR struIPAddr; //IPַ + NET_DVR_IPADDR struMask; // + NET_DVR_IPADDR struGateway; //Ĭ + BYTE byMacAddr[6]; //MACַ + BYTE bySlotNums; //λ + BYTE byStructureType; //ṹͣ1-2U2-4U + NET_DVR_CARD_PORT_INFO struPortInfo[MAX_SINGLE_CARD_PORT_NO]; //˿Ϣ + BYTE byRes2[64]; +}NET_DVR_NETMGR_CARD_INFO_V50, *LPNET_DVR_NETMGR_CARD_INFO_V50; + +typedef struct tagNET_DVR_FUNC_CARD_INFO_V50 +{ + BYTE byCardNo; //տ + BYTE byMainSlotNo; //տλţλ + BYTE byRes1[2]; + BYTE byTypeName[NAME_LEN]; //ͺ + BYTE bySerialNo[SERIALNO_LEN]; //к + BYTE bySoftwareVersion[VERSION_LEN]; //汾 + BYTE byIsVerMismatch; //汾ܿбش洢汾Ƿһ£0-ƥ䣬!0-ƥ + BYTE byRes2[3]; + BYTE byNewestSoftwareVersion[VERSION_LEN]; //µ汾汾ƥʱЧ + BYTE byHardwareVersion[VERSION_LEN]; //Ӳ汾 + BYTE bySlotNums; //λ + BYTE byStructureType; //ṹͣ1-2U2-4U + BYTE byRes3[2]; + NET_DVR_CARD_PORT_INFO struPortInfo[MAX_SINGLE_CARD_PORT_NO]; //˿Ϣ + BYTE byRes4[64]; +}NET_DVR_FUNC_CARD_INFO_V50, *LPNET_DVR_FUNC_CARD_INFO_V50; + +typedef struct tagNET_DVR_REMOTE_SEND_CARD_INFO_V50 +{ + BYTE byCardNo; //ţͻӵĽտĿ + BYTE byMainSlotNo; //λţͻӵĽտλ + BYTE byRes1[2]; + BYTE byTypeName[NAME_LEN]; //ͺ + BYTE bySoftwareVersion[VERSION_LEN]; //汾 + BYTE byIsVerMismatch; //汾ܿбش洢汾Ƿһ£0-ƥ䣬!0-ƥ + BYTE byRes2[3]; + BYTE byNewestSoftwareVersion[VERSION_LEN]; //µ汾汾ƥʱЧ + BYTE byHardwareVersion[VERSION_LEN]; //Ӳ汾 + NET_DVR_CARD_PORT_INFO struPortInfo[MAX_SINGLE_CARD_PORT_NO]; //˿Ϣ + BYTE byRes3[64]; +}NET_DVR_REMOTE_SEND_CARD_INFO_V50, *LPNET_DVR_REMOTE_SEND_CARD_INFO_V50; + +typedef struct tagNET_DVR_FIBER_CONVERT_BASIC_V50 +{ + DWORD dwSize; + BYTE byPowerType; //Դͣ1-Դ2-˫Դ + BYTE byRes1[3]; + DWORD dwSlotNum; //ܲλ + NET_DVR_NETMGR_CARD_INFO_V50 struNetCardInfo; //ܿϢ + NET_DVR_FUNC_CARD_INFO_V50 struFuncCardInfo[MAX_FUNC_CARD_NUM]; //տϢ + NET_DVR_REMOTE_SEND_CARD_INFO_V50 struRemoteSendCardInfo[MAX_FUNC_CARD_NUM]; //ͻϢ + BYTE byRes2[64]; +}NET_DVR_FIBER_CONVERT_BASIC_V50, *LPNET_DVR_FIBER_CONVERT_BASIC_V50; + +//Զշ1.0 ״̬Ϣ +typedef struct tagNET_DVR_CARD_PORT_STATE_V50 +{ + BYTE byPortNo; //˿ںţ1ʼ + BYTE byPortType; //˿ͣ1-ڣ2-ڣ3-縴ÿ + BYTE byLinkState; //״̬0-δӣ1- + BYTE byPortSpeed; //0-Ч1-Զ2-100M3-1000M4-10G + BYTE byPortDuplexMode; //˿˫ģʽ0-Ч1-Զ2-ȫ˫3-˫ + BYTE byRes1[3]; + BYTE byPortName[NAME_LEN]; //˿ + DWORD dwSendBytes; //͵ֽ + DWORD dwSendByteSpeed; //ֽʣλbps + DWORD dwSendPackets; //͵ֽ + DWORD dwSendPacketSpeed; //ʣλ/ + DWORD dwRecvBytes; //յֽ + DWORD dwRecvByteSpeed; //ֽʣλbps + DWORD dwRecvPackets; //յİ + DWORD dwRecvPacketSpeed; //հʣλ/ + DWORD dwRecvLostPackets; //ն + DWORD dwRecvCrcErrPackets; //CRCУ + DWORD dwRecvFragmentPackets; //ƬͻֽڰȾС64ֽڣ + BYTE byRes2[48]; +}NET_DVR_CARD_PORT_STATE_V50, *LPNET_DVR_CARD_PORT_STATE_V50; + +typedef struct tagNET_DVR_NET_CARD_STATE_V50 +{ + BYTE byMainSlotNo; //ܿλ + BYTE byRes1[3]; + NET_DVR_CARD_PORT_STATE_V50 struPortState[MAX_SINGLE_CARD_PORT_NO]; //ܿ˿״̬ + BYTE byRes2[344]; +}NET_DVR_NET_CARD_STATE_V50, *LPNET_DVR_NET_CARD_STATE_V50; + +typedef struct tagNET_DVR_FUNC_CARD_STATE_V50 +{ + BYTE byCardNo; //տ + BYTE byMainSlotNo; //տλ + BYTE byRes1[2]; + NET_DVR_CARD_PORT_STATE_V50 struPortState[MAX_SINGLE_CARD_PORT_NO]; //տ˿״̬ + BYTE byRes2[64]; +}NET_DVR_FUNC_CARD_STATE_V50, *LPNET_DVR_FUNC_CARD_STATE_V50; + +typedef struct tagNET_DVR_REMOTE_SEND_CARD_STATE_V50 +{ + BYTE byCardNo; //ͻӵĽտĿ + BYTE byMainSlotNo; //ͻӵĽտλ + BYTE byRes1[2]; + NET_DVR_CARD_PORT_STATE_V50 struPortState[MAX_SINGLE_CARD_PORT_NO]; //տ˿״̬ + BYTE byRes[64]; +}NET_DVR_REMOTE_SEND_CARD_STATE_V50, *LPNET_DVR_REMOTE_SEND_CARD_STATE_V50; + +typedef struct tagNET_DVR_FIBER_CONVERT_STATE_V50 +{ + DWORD dwSize; + NET_DVR_NET_CARD_STATE_V50 struNetCardState; //ܿ״̬ + NET_DVR_FUNC_CARD_STATE_V50 struFuncCardState[MAX_FUNC_CARD_NUM]; //տ״̬ + NET_DVR_REMOTE_SEND_CARD_STATE_V50 struRemoteSendCardState[MAX_FUNC_CARD_NUM]; //ͻ״̬ + BYTE byRes[64]; +}NET_DVR_FIBER_CONVERT_STATE_V50, *LPNET_DVR_FIBER_CONVERT_STATE_V50; + +//շϢ +typedef struct tagNET_DVR_FC_PORT_TOPOLOGY +{ + DWORD dwPortNo; //˿ںţ0-Ч0Ϊܿ˿ں + BYTE byPortType; //˿ͣ1-ڣ2-ڣ3-縴ÿ + BYTE byLocalWorkMode; //عģʽ1-ACCESS2-TRUNK3-HYPRID + BYTE byLocalBandWidth; //ش1-100M2-1G3-10G + BYTE byRes1[1]; + BYTE byPeerTypeName[NAME_LEN]; //Զ豸 + BYTE byPeerMac[MACADDR_LEN]; //ԶMACַ + DWORD dwPeerPortNo; //Զ˶˿ں + BYTE byPeerWorkMode; //Զ˹ģʽ1-ACCESS2-TRUNK3-HYPRID + BYTE byPeerBandWidth; //Զ˴1-100M2-1G3-10G + BYTE byRes2[30]; +}NET_DVR_FC_PORT_TOPOLOGY, *LPNET_DVR_FC_PORT_TOPOLOGY; + +typedef struct tagNET_DVR_FC_CARD_TOPOLOGY +{ + BYTE byEnable; //˽ṹǷЧ0-Ч0-Ч + BYTE byRes1[3]; + DWORD dwCardNo; //ţ0-ܿ0-ܿ + DWORD dwSlotNum; //ռõIJλ + BYTE byTypeName[NAME_LEN]; // + BYTE byLocalMac[MACADDR_LEN]; //MACַ + NET_DVR_FC_PORT_TOPOLOGY struFCPortTopology[MAX_SINGLE_CARD_PORT_NO]; //˿Ϣ + BYTE byRes[32]; +}NET_DVR_FC_CARD_TOPOLOGY, *LPNET_DVR_FC_CARD_TOPOLOGY; + +typedef struct tagNET_DVR_FIBER_CONVERT_TOPOLOGY +{ + DWORD dwSize; + NET_DVR_FC_CARD_TOPOLOGY struFCCardTopology[MAX_FC_CARD_NUM]; //Ϣ + BYTE byRes[64]; +}NET_DVR_FIBER_CONVERT_TOPOLOGY, *LPNET_DVR_FIBER_CONVERT_TOPOLOGY; + +//շ˿עϢ +typedef struct tagNET_DVR_FC_COND +{ + DWORD dwSize; + DWORD dwSlotNo; //λ + DWORD dwPortNo; //˿ں + BYTE byRes[32]; +}NET_DVR_FC_COND, *LPNET_DVR_FC_COND; + +typedef struct tagNET_DVR_FC_PORT_REMARKS +{ + DWORD dwSize; + BYTE byLocalRemarks[MAX_REMARKS_LEN]; //ض˿עϢ + BYTE byPeerRemarks[MAX_REMARKS_LEN]; //Զ˶˿עϢ + BYTE byRes[32]; +}NET_DVR_FC_PORT_REMARKS, *LPNET_DVR_FC_PORT_REMARKS; + +typedef enum _EN_FIBER_CONVERT_ALARM +{ + FC_OPTICAL_PORT_LOST = 1, + FC_ELECTRICAL_PORT_LOST, + FC_FUNC_CARD_LOST, + FC_CARD_DISCONNECTED, //߸澯 + FC_MAX_TEMP_LIMITED, //¶ȳ޸澯 + FC_MIN_TEMP_LIMITED, //¶ȳ޸澯 + FC_MAX_VOLTAGE_LIMITED, //ѹ޸澯 + FC_MIN_VOLTAGE_LIMITED, //ѹ޸澯 +}EN_FIBER_CONVERT_ALARM; + +typedef enum _EN_FIBER_CONVERT_NOTIFICATION +{ + FC_OPTICAL_PORT_CONNECTED = 1, + FC_ELECTRICAL_PORT_CONNECTED, + FC_FUNC_CARD_INSERT, + FC_CARD_CONNECTED, //֪ͨ + FC_TEMP_RECOVERY, //¶Ȼָ֪ͨ + FC_VOLTAGE_RECOVERY, //ѹָ֪ͨ +}EN_FIBER_CONVERT_NOTIFICATION; + +typedef struct tagNET_DVR_FIBER_CONVERT_ALARM +{ + DWORD dwSize; + DWORD dwEventType; //¼ͣ1-澯2-֪ͨ + DWORD dwEvent; //¼澯ʱοöFIBER_CONVERT_ALARM֪ͨʱοöFIBER_CONVERT_NOTIFICATION + BYTE bySlotNum; //λţΪͻʱλΪ÷ͻӵĽտIJλţ澯֪ͨʱЧ + BYTE byCardType; //ͣ0-Ч1-ܿ2-տ3-ͻ4- + BYTE byPortNo; //˿ںţ1ʼ澯֪ͨʱЧ + BYTE byCurTemperature; //¼¶ȣ¶ȸ澯֪ͨʱЧλ϶ + WORD wCurVoltage; //¼ĵѹʵʵѹ*10ѹ澯֪ͨʱЧλ + BYTE byRes1[30]; +}NET_DVR_FIBER_CONVERT_ALARM, *LPNET_DVR_FIBER_CONVERT_ALARM; + +//澯¼ϴ +typedef enum _EN_SWITCH_CONVERT_ALARM +{ + SC_OPTICAL_PORT_LOST = 1, + SC_NETWORK_PORT_LOST, + SC_WIRELESS_SPEED_UP_EXCEPTION,//쳣 + SC_WIRELESS_SHUTDOWN, //ӶϿ¼ + SC_DEVICE_POE_MAX, //POE-MAX澯 + SC_PORT_POE_POWER_OFF, //˿POE澯 +}EN_SWITCH_CONVERT_ALARM; + +typedef enum _EN_SWICH_CONVERT_NOTIFICATION +{ + SC_OPTICAL_PORT_CONNECTED = 1, + SC_NETWORK_PORT_CONNECTED, + SC_DEVICE_POE_MAX_RECOVERY, //POE-MAX澯ָ + SC_PORT_POE_POWER_ON, //˿POEϵ֪ͨ + SC_WIRELESS_CONNECTED, //¼ +}EN_SWITCH_CONVERT_NOTIFICATION; + +typedef struct tagNET_DVR_SWITCH_CONVERT_ALARM +{ + DWORD dwSize; + BYTE byPortNo; //ӿ1ʼʾ8λ + BYTE byPortNoEx; //ӿ255ʱֶαʾĸ8λ + BYTE byRes1[2]; + DWORD dwEventType; //¼ͣ1-澯2-֪ͨ + DWORD dwEvent; //¼澯ʱοöEN_SWITCH_CONVERT_ALARM֪ͨʱοöEN_SWITCH_CONVERT_NOTIFICATION + BYTE byRes2[32]; +}NET_DVR_SWITCH_CONVERT_ALARM, *LPNET_DVR_SWITCH_CONVERT_ALARM; + +typedef struct tagNET_DVR_SWITCH_LAMP_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnable; //Ƿã 0-ã1- + BYTE byTriggerMode; // 1-2-δ + BYTE byUploadPic; //0-ϴͼƬ1-ϴͼƬ + BYTE byRes1; // + DWORD dwTimeInterval; //ʱΧ[0,3600]λ + NET_DVR_HANDLEEXCEPTION_V30 struHandleType;//ʽ + BYTE byRelRecordChan[MAX_IVMS_IP_CHANNEL]; //¼ͨ1ʾͨ0ʾ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30];//ʱ + BYTE byRes[256]; +}NET_DVR_SWITCH_LAMP_CFG,*LPNET_DVR_SWITCH_LAMP_CFG; + +typedef struct tagNET_DVR_SWITCH_LAMP_ALARM +{ + DWORD dwSize;//ṹС + NET_VCA_DEV_INFO struDevInfo; //豸Ϣ + NET_DVR_TIME_EX struTime; //ʱ + BYTE byLampStatus; //ص״̬0-ѹر 1-Ѵ + BYTE byRes1[3]; // + DWORD dwPicDataLen; //ͼƬݳȣ0ʾͼƬϴ + char* pPicData; //ͼƬ + BYTE byRes[64]; +}NET_DVR_SWITCH_LAMP_ALARM,*LPNET_DVR_SWITCH_LAMP_ALARM; + +//ռ +typedef struct tagNET_DVR_RS485_CASCADE_CFG +{ + DWORD dwSize; + BYTE byDevAddr; //豸ַ0-1-15Ϊӻ + BYTE byRes[131]; +}NET_DVR_RS485_CASCADE_CFG,*LPNET_DVR_RS485_CASCADE_CFG; + +//˽йؼϢϴ +typedef struct tagNET_DVR_PRIVATE_PROTOCOL_CFG +{ + DWORD dwSize; + NET_DVR_IPADDR struIP; //ϢϴIPַ + WORD wPort;//ϢϴĶ˿ں + BYTE byEnable;//ʹ, 0-1-ã2- + BYTE byRes; + DWORD dwInterval;//Ϣϴ(0-ʱƣ豸Ϊ׼; >=0,Ϊλʱ) + BYTE byServerType;// 0-ޣ1- + BYTE byEcryptedSMSEnable;//0-ܣ1- + BYTE byAlgorithm;//㷨0-ޣ1-RSA + BYTE byAcauisitionMode;//ɼģʽ0-Ϣ1-Ϣ2-Ϣ+Ϣ + DWORD dwDistanceLimit;//ƣλm + BYTE byPKModeEnable;//PKģʽʹ, 0-1-ã2- + BYTE byMACAddrReductionEnable;//MACַԭʹ, 0-1-ã2- + BYTE byRes1[214]; + char szIndexCode[MAX_INDEX_CODE_LEN]; + DWORD dwSecretKeyLen;//Կ + char szSecretKey[MAX_SECRETKEY_LEN/*512*/];//Կ +}NET_DVR_PRIVATE_PROTOCOL_CFG,*LPNET_DVR_PRIVATE_PROTOCOL_CFG; + +// +typedef struct tagNET_DVR_DEBUG_CMD +{ + DWORD dwSize; + char szDebugCMD[MAX_DEBUGCMD_LEN/*1024*/]; + BYTE byRes[400]; +}NET_DVR_DEBUG_CMD,*LPNET_DVR_DEBUG_CMD; + +//Ϣ +typedef struct tagNET_DVR_DEBUG_INFO +{ + DWORD dwSize; + char szDebugInfo[MAX_DEBUGINFO_LEN/*1400*/]; + BYTE byRes[32]; +}NET_DVR_DEBUG_INFO,*LPNET_DVR_DEBUG_INFO; + + + +#define MAX_SSID_LEN 32 //SSIDų +#define MAX_WS_PASSWD_LEN 64 //볤 +typedef struct tagNET_DVR_WIRELESSSERVER +{ + DWORD dwSize;//ṹС + BYTE byWLanShare;//WLanȵʹ 0-رգ1-ʹ + BYTE byBroadcastSSID;//SSID㲥ʹ 0-رգ1-ʹ + BYTE bySecurityMode;//ȫģʽ 0- not-encrypted1-WPA2-WPA2(ʱֻ֧2) + BYTE byAlgorithmType; //ģʽ 1-TKIP2-AES + char szSSID[MAX_SSID_LEN/*32*/];//SSIDϢ + char szPassWord[MAX_WS_PASSWD_LEN/*64*/]; + BYTE byDefaultPassword;//ǷĬ 0-1- + BYTE byWifiApModeType;//WlanAPȵģʽ0-رգ1-2-Զ + BYTE byRes[254]; +}NET_DVR_WIRELESSSERVER,*LPNET_DVR_WIRELESSSERVER; + +typedef struct tagNET_DVR_CONNECTDEV_COND +{ + DWORD dwSize; + DWORD dwChannel; + BYTE byRes[128]; +}NET_DVR_CONNECTDEV_COND,*LPNET_DVR_CONNECTDEV_COND; + +typedef struct tagNET_DVR_CONNECTDEV_CFG +{ + DWORD dwSize; + BYTE byID;//к + BYTE byRes[1]; + BYTE byMACAddr[MACADDR_LEN/*6*/]; // ַ + NET_DVR_IPADDR struDVRIP;//豸IP + NET_DVR_TIME struConnectTime;//ʱ + BYTE byRes1[256]; +}NET_DVR_CONNECTDEV_CFG,*LPNET_DVR_CONNECTDEV_CFG; + +typedef struct tagNET_DVR_GIS_SERVER_INFO +{ + BYTE byUserName[NAME_LEN]; + BYTE byPassword[PASSWD_LEN]; + NET_DVR_IPADDR struServerIP; //GISIPַ + WORD wPort; //GIS˿ + BYTE byRes[30]; +}NET_DVR_GIS_SERVER_INFO, *LPNET_DVR_GIS_SERVER_INFO; + +typedef struct tagNET_DVR_BASEMAP_CONTROL_CFG_V40 +{ + DWORD dwSize; + BYTE byEnable; //Ƿʾ1-ʾ0- + BYTE byBaseMapType; //ͼͣ1-ͼƬͼ2-ͼ3-GISͼ + BYTE byRes1[2]; + DWORD dwBaseMapNo; //ͼţͼΪ1ʱ˲ΪͼƬţͼΪ2ʱ˲Ϊϵͳںţ1ֽھ+1ֽӰ+1ֽں+1ֽڱ + NET_DVR_GIS_SERVER_INFO struGisServer; //GISϢ,ͼΪGISͼʱЧ + BYTE byRes2[64]; +}NET_DVR_BASEMAP_CONTROL_CFG_V40,*LPNET_DVR_BASEMAP_CONTROL_CFG_V40; + +typedef struct tagNET_DVR_VIDEO_IMG_DB_CFG +{ + DWORD dwSize; //NET_DVR_VIDEO_IMG_DB_CFGṹС + INT64 i64Capacity; //ͼλλMB + INT64 i64UsedSpace; //ֻÿռ䣬λλMB + INT64 i64AvailableSpace; //ֻÿռ䣬λλMB + BYTE byRes[256]; // +}NET_DVR_VIDEO_IMG_DB_CFG, *LPNET_DVR_VIDEO_IMG_DB_CFG; + +typedef struct tagNET_DVR_FILE_QUERY_INFO +{ + DWORD dwSize; //NET_DVR_FILE_QUERY_INFOṹС + INT64 i64FileLen; //ļС + BYTE byRes[256]; // +}NET_DVR_FILE_QUERY_INFO, *LPNET_DVR_FILE_QUERY_INFO; + +typedef struct tagNET_DVR_FILE_INFO_IN +{ + char szFileID[MAX_FILE_ID_LEN]; //ϴ֮豸ļID + BYTE byRes[256]; +}NET_DVR_FILE_INFO_IN, *LPNET_DVR_FILE_INFO_IN; + +typedef struct tagNET_DOWNLOAD_CB_INFO +{ + DWORD dwType; //, 0-Ϣ,1-ͼƬϢ(ƴ洢),2-ͼƬϢ(ƴ洢) + BYTE *pData; //ָ + DWORD dwDataLen; //ݳ + void* pFileInfo; //ļϢṹ(ƴ洢ʱЧ) + DWORD dwFileInfoLen; //ļϢṹ峤(ƴ洢ʱЧ) + BYTE byRes[120]; // +}NET_DOWNLOAD_CB_INFO, *LPNET_DOWNLOAD_CB_INFO; + +typedef BOOL (*DOWNLOAD_DATA_CB)( LONG lHandle, NET_DOWNLOAD_CB_INFO *pCBInfo, void *pUserData); + +typedef struct tagNET_DVR_DOWNLOAD_CB_PARAM +{ + DOWNLOAD_DATA_CB fnDownloadDataCB; //ݻص + void *pUserData; //û, fnPreviewDataCBص + INT64 i64Offset; //ļƫڶϵ + BYTE byRes[256]; +}NET_DVR_DOWNLOAD_CB_PARAM, *LPNET_DVR_DOWNLOAD_CB_PARAM; + +typedef struct tagNET_DVR_UPLOAD_DB_IN +{ + INT64 i64FileLen; //ϴļҪļȣļԲ + BYTE byContinueUpload; //0-ļϴ1-ļļ + BYTE byRes[255]; +}NET_DVR_UPLOAD_DB_IN, *LPNET_DVR_UPLOAD_DB_IN; + + +typedef struct tagNET_DVR_UPLOAD_DB_OUT +{ + char szFileID[MAX_FILE_ID_LEN]; //ϴ֮豸ļID + BYTE byRes[256]; +}NET_DVR_UPLOAD_DB_OUT, *LPNET_DVR_UPLOAD_DB_OUT; + +typedef struct tagNET_DVR_SEND_PARAM_IN +{ + BYTE *pSendData; //͵Ļ,PicURL == 1 ʱڴд洢 URL ַ,byUploadModeling == 1 ʱڴд洢 ģbase64 + DWORD dwSendDataLen; //ݳ,PicURL == 1 ʱ򣬱ʾ URL ַij,byUploadModeling == 1 ʱ򣬱ʾΪģbase64ļܳ + NET_DVR_TIME_V30 struTime; //ͼƬʱ + BYTE byPicType; //ͼƬʽ,1-jpg,2-bmp,3-png,4-SWF,5-GIF + BYTE byPicURL; //ͼƬݲURLʽ 0-ͼƬݣ1-ͼƬURLʽ + /*Ƿϴģݣ + 0- ͼƬݷʽ(pSendDataָͼƬ, dwPicDataLenΪͼƬݳ) + 1- ֱϴģ(pSendDataָģbase64, dwPicDataLenΪģbase64ļܳ) + עģݲbase64ܷʽ,ѡΪģϴbyPicURL 衣 + /ISAPI/Intelligent/channels//faceContrast/capabilitiesзisSupportUploadModelingڵʱ֧ϴģ. */ + BYTE byUploadModeling; + BYTE byRes1; + DWORD dwPicMangeNo; //ͼƬ + BYTE sPicName[NAME_LEN]; //ͼƬ + DWORD dwPicDisplayTime; //ͼƬʱλ + BYTE *pSendAppendData; //ͼƬĸϢӦFaceAppendData XML + DWORD dwSendAppendDataLen; //ͼƬĸϢݳ FaceAppendData XMLijȣ + BYTE byRes[192]; +}NET_DVR_SEND_PARAM_IN, *LPNET_DVR_SEND_PARAM_IN; + + +typedef struct tagNET_DVR_DOWNLOAD_QOS +{ + DWORD dwMaxSpeed; //ٶȣλkbps + BYTE byRes[256]; +}NET_DVR_DOWNLOAD_QOS, *LPNET_DVR_DOWNLOAD_QOS; + + +#define NET_SDK_MAX_FILE_NAME 100 //ļ + +typedef struct tagNET_DVR_UPLOAD_FILEVOLUME_PRARAM_ +{ + DWORD dwSize; + BYTE byFileType; //ļ 0-¼1-Ƶ + BYTE byFileVolnumeID; //ļIDͨNET_DVR_GET_HDVOLUME_CFG ȡ + BYTE byArchive; //0-鵵1-鵵 + BYTE byRes1; + DWORD dwFileSize; //ļС + char szFileName[NET_SDK_MAX_FILE_NAME/*100*/]; //ļ + BYTE byRes[300]; +}NET_DVR_UPLOAD_FILEVOLUME_PRARAM, *LPNET_DVR_UPLOAD_FILEVOLUME_PRARAM; + +typedef struct tagNET_DVR_DOWNLOAD_FILEVOLUME_PARAM_ +{ + DWORD dwSize; + BYTE sUrl[MAX_UPLOADFILE_URL_LEN/*240*/]; //url + BYTE byRes[248]; + DOWNLOAD_DATA_CB fnDownloadDataCB; //ݻص + void *pUserData; //û, fnPreviewDataCBص +}NET_DVR_DOWNLOAD_FILEVOLUME_PARAM, *LPNET_DVR_DOWNLOAD_FILEVOLUME_PARAM; + + +//Ӱģʽ +typedef struct tagNET_DVR_FILM_MODE_CFG +{ + DWORD dwSize; //ṹС + BYTE byScreenType; //ͣ0-棬1-棬2-л + BYTE byRes[255]; // +}NET_DVR_FILM_MODE_CFG, *LPNET_DVR_FILM_MODE_CFG; + +// +typedef struct tagNET_DVR_DIRECTED_STRATEGY_CFG +{ + DWORD dwSize; //ṹС + BYTE byDirectedStrategyType; //ͣ0-̬ԣ1-Ʒ,2-Ʒ12,3-Ʒ13 + BYTE byRes[255]; // +}NET_DVR_DIRECTED_STRATEGY_CFG, *LPNET_DVR_DIRECTED_STRATEGY_CFG; + +//߿ӽṹ +typedef struct NET_DVR_FRAME +{ + BYTE byFrameWide; /*߿ȺϷȡֵΧΪ[0,14]ֻȡżֵ*/ + BYTE byRed; /*߿ɫΪRGB ģʽRGBֱӦλ*/ + BYTE byGreen; + BYTE byBlue; + BYTE byRes[256]; +}NET_DVR_FRAME, *LPNET_DVR_FRAME; + +//û߿ +typedef struct tagNET_DVR_FRAME_CFG +{ + DWORD dwSize; //ṹС + NET_DVR_FRAME struTopFrame; //ϱ߿ + NET_DVR_FRAME struBottomFrame;//±߿ + NET_DVR_FRAME struLeftFrame; //߿ + NET_DVR_FRAME struRightFrame; //ұ߿ + BYTE byFrameEnable; //ӱ߿0-1-ӱ߿ + BYTE byRes[256]; // +}NET_DVR_FRAME_CFG, *LPNET_DVR_FRAME_CFG; + +//û߿ +typedef struct tagNET_DVR_FRAME_COND +{ + DWORD dwSize; + DWORD dwPicNo;// + BYTE byRes[256]; +}NET_DVR_FRAME_COND, *LPNET_DVR_FRAME_COND; + +//ƵŻ +typedef struct tagNET_DVR_AUDIO_EFFECTIVE_CFG +{ + DWORD dwSize; //ṹС + DWORD dwCheckDelay; //ʱӣλs0ʾԶŻ + BYTE byThreshold; //ֵ[0,100] + BYTE byVolumePercent;// [0,100] + BYTE byPriority; //ȼ[0100] + BYTE byRes[301]; +}NET_DVR_AUDIO_EFFECTIVE_CFG, *LPNET_DVR_AUDIO_EFFECTIVE_CFG; + +//¼Ƶ +typedef struct tagNET_DVR_RECORD_VIDEO_CFG +{ + DWORD dwSize; //ṹС + BYTE byExportType; //ֵ0-MP4 1-AVI + BYTE byRes[255]; //ֽ +} NET_DVR_RECORD_VIDEO_CFG, *LPNET_DVR_RECORD_VIDEO_CFG; + +//RTMP Cond +typedef struct tagNET_DVR_RTMP_COND +{ + DWORD dwSize; + DWORD dwChannel; + BYTE byStreamType; //ͣ1-2-3- + BYTE byRes[303]; +}NET_DVR_RTMP_COND, *LPNET_DVR_RTMP_COND; + +//RTMP Cfg +typedef struct tagNET_DVR_RTMP_CFG +{ + DWORD dwSize; //ṹС + BYTE byEnable; //ǷRTMP0-ã1- + BYTE byRes1[3]; + DWORD dwPacketLen; //RTMP + char szURL[RTMP_URL_LEN]; //RTMP URL + BYTE byRes[256]; //ֽ +}NET_DVR_RTMP_CFG, *LPNET_DVR_RTMP_CFG; + +//ļ +typedef struct tagNET_DVR_RECORDING_PUBLISH_FILE_CFG +{ + DWORD dwSize; //ṹС + BYTE byFileID[MAX_ID_LEN_128/*128*/]; //ļID + NET_DVR_TIME_EX struStartTime; //γ̿ʼʱ + NET_DVR_TIME_EX struEndTime; //γ̽ʱ + BYTE byCmdType; // 1--ʼ 2--ȡ + BYTE byFileType; //ļ 0 1ʱγ 2ֶγ + BYTE byRes[254]; +}NET_DVR_RECORDING_PUBLISH_FILE_CFG, *LPNET_DVR_RECORDING_PUBLISH_FILE_CFG; + +//ļ +typedef struct tagNET_DVR_PUBLISH_PROGRESS_COND +{ + DWORD dwSize; + DWORD dwChannel; + BYTE byFileID[MAX_ID_LEN_128/*128*/]; //ļID + BYTE byRes[256]; +}NET_DVR_PUBLISH_PROGRESS_COND, *LPNET_DVR_PUBLISH_PROGRESS_COND; + +//ļȲ +typedef struct tagNET_DVR_PUBLISH_PROGRESS_CFG +{ + DWORD dwSize; //ṹС + BYTE byPublishPercent; //ٷֱ 0-100 + BYTE byPublishStatus; //״̬ 0-ɹ 1--ڷ 2--ȴ 3-FTP 4--ûҵļ 5--ʧܣ + BYTE byRes[302]; +}NET_DVR_PUBLISH_PROGRESS_CFG, *LPNET_DVR_PUBLISH_PROGRESS_CFG; + +//ɾͼеļ +typedef struct tagNET_DVR_BACKGROUND_PIC_COND +{ + DWORD dwSize; + char szFileID[MAX_ID_LEN_128/*128*/]; //ϴ֮豸ļID, ָͼƬ + BYTE byRes[256]; +}NET_DVR_BACKGROUND_PIC_COND, *LPNET_DVR_BACKGROUND_PIC_COND; + +//ѯͼƬļ +typedef struct tagNET_DVR_BACKGROUND_PIC_CFG +{ + DWORD dwSize; //ṹС + DWORD dwPicSize; //ͼƬС + DWORD dwPicType; //ͼƬͣYUV:0 JPEG:1 + WORD wPicWidth; //ͼƬ + WORD wPicHeight; //ͼƬ + BYTE byPicName[MAX_PIC_NAME_LEN/*128*/]; //ͼƬ + BYTE byRes[128]; +}NET_DVR_BACKGROUND_PIC_CFG,*LPNET_DVR_BACKGROUND_PIC_CFG; + +typedef struct tagNET_DVR_BACKGROUND_PIC_INFO +{ + DWORD dwSize; //ṹС + BYTE byEnable; //ǷñͼƬӣ0-1- + BYTE byRes1[3]; + BYTE byPicID[MAX_ID_LEN_128/*128*/]; + BYTE byRes[300]; // +}NET_DVR_BACKGROUND_PIC_INFO,*LPNET_DVR_BACKGROUND_PIC_INFO; + + +//ϴͼƬļ +typedef struct tagNET_DVR_BACKGROUND_PIC_PRARAM +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + DWORD dwPicSize; //ͼƬС + WORD wPicWidth; //ͼƬ + WORD wPicHeight; //ͼƬ + char szPicName[MAX_PIC_NAME_LEN/*128*/]; //ͼƬ + BYTE byPicType; //ͼƬͣYUV:0 JPEG:1 + BYTE byRes[303]; +}NET_DVR_BACKGROUND_PIC_PRARAM,*LPNET_DVR_BACKGROUND_PIC_PRARAM; + +//͹ +typedef struct tagNET_DVR_LOWPOWER +{ + DWORD dwSize;//ṹС + BYTE byMode;//ģʽ 0-ֶ1-ʱ + BYTE byEnabled;//ֶģʽµʹܿ 0-رգ1- + BYTE byRes[6]; + NET_DVR_SCHEDULE_DAYTIME struSchedTime;//ʱʱ + BYTE byRes1[256]; +}NET_DVR_LOWPOWER,*LPNET_DVR_LOWPOWER; + +typedef struct tagNET_DVR_POINT +{ + DWORD dwX; //X + DWORD dwY; //Y +}NET_DVR_POINT, *LPNET_DVR_POINT; + +//䱶 +typedef struct tagNET_DVR_ZOOMLINKAGE +{ + DWORD dwSize;//ṹС + BYTE byEnable;//ʹ 0-أ1- + BYTE byRes[255]; +}NET_DVR_ZOOMLINKAGE,*LPNET_DVR_ZOOMLINKAGE; + +typedef struct tagNET_DVR_ONLINEUPGRADE_STATUS +{ + DWORD dwSize; + BYTE byUpgradeStatus;//0-δʼ,1-,2-ɹ,3-Բƥ,4-дfalshʧ,5-Ͳƥ,6-汾ƥ,7-粻ɴ,8-, + //9-ȡļ,10-ûҵļ,11-ļд,12-豸ڴ治,0xff-δ֪ + BYTE byProgress; //,0~100 + BYTE byRes[250]; +}NET_DVR_ONLINEUPGRADE_STATUS,*LPNET_DVR_ONLINEUPGRADE_STATUS; + +typedef struct tagNET_DVR_FIRMWARECODE_COND +{ + DWORD dwSize; + DWORD dwStartIndex; //ʼ + DWORD dwMaxNum; //32 + BYTE byRes[52]; +}NET_DVR_FIRMWARECODE_COND,*LPNET_DVR_FIRMWARECODE_COND; + +typedef struct tagNET_DVR_FIRMWARECODE +{ + WORD wIndex; + WORD wCodeLen; //ʶ볤ȣϲӦÿʱһжϣֶδ128뱨ʾû¹/ͻ˰汾 + BYTE byCode[MAX_IDCODE_LEN];//ʶ + BYTE byVersion[MAX_VERSIIN_LEN];//汾 + BYTE byRes[12]; +}NET_DVR_FIRMWARECODE,*LPNET_DVR_FIRMWARECODE; + +typedef struct tagNET_DVR_FIRMWARECODE_LIST +{ + DWORD dwSize; + DWORD dwValidCodeNum; //Ч + NET_DVR_FIRMWARECODE struCode[MAX_IDCODE_NUM]; + BYTE byRes[64]; +}NET_DVR_FIRMWARECODE_LIST,*LPNET_DVR_FIRMWARECODE_LIST; + +typedef struct tagNET_DVR_ONLINEUPGRADE_SERVER +{ + DWORD dwSize; + BYTE byConnectStatus; //0-δ,1- + BYTE byRes[1019]; +}NET_DVR_ONLINEUPGRADE_SERVER,*LPNET_DVR_ONLINEUPGRADE_SERVER; + +typedef struct tagNET_DVR_ONLINEUPGRADE_VERSION_COND +{ + DWORD dwSize; + BYTE byCheckFromSvr; //ǷҪӷ⣬0-Ҫ豸ԼĽ;1-Ҫ豸ἴʱӷǷ°汾 + BYTE byRes[59]; +}NET_DVR_ONLINEUPGRADE_VERSION_COND,*LPNET_DVR_ONLINEUPGRADE_VERSION_COND; + +typedef struct tagNET_DVR_ONLINEUPGRADE_VERSION_RET +{ + DWORD dwSize; + BYTE byNewVersionAvailable; //Ƿ°汾,0-,1- + BYTE byNewVersion[MAX_VERSIIN_LEN]; //°汾İ汾 + BYTE byChangeLog[SDK_LEN_2048]; //°汾µ + BYTE byRes[971]; +}NET_DVR_ONLINEUPGRADE_VERSION_RET,*LPNET_DVR_ONLINEUPGRADE_VERSION_RET; + +typedef struct tagNET_DVR_RECOMMEN_VERSION_COND +{ + DWORD dwSize; + BYTE byFirmwareCode[MAX_IDCODE_LEN]; + BYTE byFirmwareVersion[MAX_VERSIIN_LEN]; + BYTE byRes[60]; +}NET_DVR_RECOMMEN_VERSION_COND,*LPNET_DVR_RECOMMEN_VERSION_COND; + +typedef struct tagNET_DVR_RECOMMEN_VERSION_RET +{ + DWORD dwSize; + BYTE byRecommenUpgrade; //Ƽ,0-,1- + BYTE byRes[123]; +}NET_DVR_RECOMMEN_VERSION_RET,*LPNET_DVR_RECOMMEN_VERSION_RET; + +//ʪ +typedef struct tagNET_DVR_THSCREEN +{ + DWORD dwSize;//ṹС + BYTE byEnable;//öʱʹ + BYTE byTHOSDDisplay;//ʪʾOSDʾǷ, 0-1- + BYTE byRes[2]; // ֽ + NET_VCA_POINT struTHOSDPoint;//ʪʾOSDʾϽ + BYTE byTimingMode;//Уʱģʽ 0-ֶ1-Զ + BYTE byRes1; + WORD wInterval;//Уʱʱģʽ£ʱ[1,10080]m + BYTE byRes2[254]; +}NET_DVR_THSCREEN,*LPNET_DVR_THSCREEN; + +typedef struct tagNET_DVR_SENSOR_ADJUSTMENT +{ + DWORD dwSize;//ṹС + BYTE byType;//ģʽ0-£1-ң2-ת3-ͼӳǣ4-RGB, 5-, 6-RGB_Ex + BYTE bySensorNo;//Sensor [1,8] + BYTE byRes[2]; + int iAdjustMentRange;// [-100,100] תʱ[-30,30] ͼӳ[-10,10] + BYTE byR;//RGBRɫΧ0-100 + BYTE byG;//RGBGɫΧ0-100 + BYTE byB;//RGBBɫΧ0-100 + BYTE byRgbType;//RGBͣ0-1-ģʽ2-ֶģʽ + BYTE byBrightness;//ȣΧ0-100,Ĭֵ50 + BYTE byRes1[3]; + WORD wRex;//RGB(չ)RɫΧ0-2048 + WORD wGex;//RGB(չ)GɫΧ0-2048 + WORD wBex;//RGB(չ)BɫΧ0-2048 + BYTE byRes2[114]; +}NET_DVR_SENSOR_ADJUSTMENT,*LPNET_DVR_SENSOR_ADJUSTMENT; + +typedef struct tagNET_DVR_SENSOR_ADJUSTMENT_INFO +{ + DWORD dwSize;//ṹС + int iPan;//ֵ + int iTilt;//ֵ + int iRotation;//תֵ + int iFieldAngle;//ͼӳֵ + BYTE byR;//RGBRɫΧ0-100 + BYTE byG;//RGBGɫΧ0-100 + BYTE byB;//RGBBɫΧ0-100 + BYTE byRgbType;//RGBͣ0-1-ģʽ2-ֶģʽ + BYTE byBrightness;//ȣΧ0-100,Ĭֵ50 + BYTE byRes[3]; + WORD wRex;//RGB(չ)RɫΧ0-2048 + WORD wGex;//RGB(չ)GɫΧ0-2048 + WORD wBex;//RGB(չ)BɫΧ0-2048 + BYTE byRes1[114]; +}NET_DVR_SENSOR_ADJUSTMENT_INFO,*LPNET_DVR_SENSOR_ADJUSTMENT_INFO; + +typedef struct tagNET_DVR_SENSOR_RESET +{ + DWORD dwSize;//ṹС + BYTE bySensorNo;//Sensor[1,8];Sensor NoΪ0ʱ򣬱ʾȫ±ʾ + BYTE byRes[127]; +}NET_DVR_SENSOR_RESET,*LPNET_DVR_SENSOR_RESET; + +typedef struct tagNET_DVR_PANORAMAIMAGE +{ + DWORD dwSize;//ṹС + BYTE byFusionMode;//ģʽ0-ԭʼͼ1-ȫͼ + BYTE byPreviewMode;//ģʽ1-Ŀ٣2-̶ʾ + BYTE byRes[126]; +}NET_DVR_PANORAMAIMAGE,*LPNET_DVR_PANORAMAIMAGE; + +typedef struct tagNET_DVR_RELOCATE_INFO +{ + DWORD dwSize;//ṹС + BYTE byTakeOverAddr[MAX_DOMAIN_NAME/*64*/]; //ӹ豸ĵַ + WORD wPort ; //豸˿ں + BYTE byRes[254] ; // +}NET_DVR_RELOCATE_INFO, *LPNET_DVR_RELOCATE_INFO; + +typedef struct tagNET_DVR_CONFERENCE_REGION +{ + DWORD dwSize; + BYTE byEnabled; //Ƿû0-1- + BYTE byRes1[3]; + NET_DVR_POINT struRegion[RECT_POINT_NUM]; //򣬾ΣʼΪ½ǣ˳ʱ뷽 + DWORD dwOutputWidth; //ڻ׼ֻܻȡ + DWORD dwOutputHeight; //ڻ׼ߣֻܻȡ + BYTE byRes2[32]; +}NET_DVR_CONFERENCE_REGION, *LPNET_DVR_CONFERENCE_REGION; + +typedef struct tagNET_DVR_TERMINAL_CALL_CFG +{ + DWORD dwSize; + BYTE byAnswerType; //Ӧʽ1-Զ2-Զܽӣ3-ֶ + BYTE byProtocolType; //ʹõЭͣ1-SIP2-H232 + BYTE byTransmissionProtocol; //Эͣ0-Ч1-TCP2-UDP + BYTE byRes[29]; +}NET_DVR_TERMINAL_CALL_CFG, *LPNET_DVR_TERMINAL_CALL_CFG; + +typedef struct tagNET_DVR_TERMINAL_CALL_INFO +{ + BYTE byTermianlURL[MAX_URL_LEN]; + DWORD dwCallRate;//ʣΧΪ32~6144λKbps () + BYTE byRes[124]; +}NET_DVR_TERMINAL_CALL_INFO, *LPNET_DVR_TERMINAL_CALL_INFO; + +typedef struct tagNET_DVR_TERMINAL_AUDIO_CTRL +{ + BYTE byMute; //Ƿ0-1- + BYTE byVolume; //ǾʱЧ1-100 + BYTE byAudioInputDisabled; //ֹƵ룬0-Ƶ룬1-ֹƵ + BYTE byAudioInputVolume; //ƵƵʱЧ1-100 + BYTE byRes[636]; +}NET_DVR_TERMINAL_AUDIO_CTRL, *LPNET_DVR_TERMINAL_AUDIO_CTRL; + +typedef struct tagNET_DVR_HOWLING_SUPPRESSION +{ + BYTE byEnabled; //ǷʹХ + BYTE byHsSensibility; //Х + BYTE byHsMode; //Хģʽ0-Ĭϣ1-٣2- + BYTE byRes1; + DWORD dwHsTime; //Хʱ䣬λms + BYTE byRes2[16]; +}NET_DVR_HOWLING_SUPPRESSION, *LPNET_DVR_HOWLING_SUPPRESSION; + +typedef struct tagNET_DVR_TERMINAL_INPUT_AUDIO +{ + DWORD dwChannel; //ͨ + BYTE byGainType; //ͣ1-棬2-ģ,3- + BYTE byEnableSimulate; //Ƿģ棬0-1- + BYTE byVolumeSimulate; //ģʱЧ1-100 + BYTE byEnableDigital; //Ƿ棬0-1- + BYTE byVolumeDigital; //ʱЧ1-100 + BYTE byRes1[3]; + NET_DVR_HOWLING_SUPPRESSION struHsParam; //ХƲ + BYTE byRes[604]; +}NET_DVR_TERMINAL_INPUT_AUDIO, *LPNET_DVR_TERMINAL_INPUT_AUDIO; + + +typedef union tagNET_DVR_TERMINAL_DETAIL_CTRL_PARAM +{ + BYTE byRes[640]; + NET_DVR_TERMINAL_CALL_INFO struCallInfo; + NET_DVR_TERMINAL_AUDIO_CTRL struAudioCtrl; + NET_DVR_TERMINAL_INPUT_AUDIO struInputAudio; +}NET_DVR_TERMINAL_DETAIL_CTRL_PARAM, *LPNET_DVR_TERMINAL_DETAIL_CTRL_PARAM; + +typedef struct tagNET_DVR_TERMINAL_CTRL_PARAM +{ + DWORD dwSize; + BYTE byOperateType; //ͣ1-2-ܽӣ3-У4-Ƶڣ5-Ҷϣ6-˫7-˫ + BYTE byRes1[3]; + NET_DVR_TERMINAL_DETAIL_CTRL_PARAM struCtrlParam; //Ʋ + BYTE byRes2[32]; +}NET_DVR_TERMINAL_CTRL_PARAM, *LPNET_DVR_TERMINAL_CTRL_PARAM; + +typedef struct tagNET_DVR_POS_INFO_OVERLAY +{ + DWORD dwSize; + BYTE byPosInfoOverlayEnable;// PosϢӿƣ0-ӣ1- + BYTE byOverlayType;//0-ӽ뿪1-ӽ롢뿪PASSID߶ + BYTE byRes[126]; +}NET_DVR_POS_INFO_OVERLAY, *LPNET_DVR_POS_INFO_OVERLAY; + + +typedef struct tagNET_DVR_CAMERA_WORK_MODE +{ + DWORD dwSize; + BYTE byWorkMode;//ģʽ0-ģʽ1-궨ģʽ + BYTE byPreviewImageMode;//Ԥͼģʽ0-ͼ1-ͼ2-ҵͼ + BYTE byRes[126]; +}NET_DVR_CAMERA_WORK_MODE, *LPNET_DVR_CAMERA_WORK_MODE; + +typedef struct tagNET_DVR_VCA_VERSION_LIST +{ + DWORD dwSize; //ṹ峤 + NET_DVR_VCA_VERSION struVcaVersion[NET_SDK_VERSION_LIST_LEN/*64*/];//㷨汾Ϣ + BYTE byRes[128]; +}NET_DVR_VCA_VERSION_LIST, *LPNET_DVR_VCA_VERSION_LIST; + +typedef struct tagNET_DVR_SETUP_CALIB_COND +{ + DWORD dwSize; + BYTE byCalibrateType;//궨ͣ0-δб궨1-Զ궨2-ֶ궨,3-ܱ궨 + BYTE byRes1[3]; + float fTiltAngle;//,λȣĬֵ0ǷΧ0-180,byCalibrateTypeΪ2ʱЧ + float fHeelAngle;//б,λȣбĬֵ0бǷΧ-90-90,byCalibrateTypeΪ2ʱЧ + float fHeight;//߶ȣ߶ȵλף߶Ĭֵ300ף߶ȷΧ200-500,byCalibrateTypeΪ2ʱЧ + NET_VCA_POLYGON struAutoCalibPolygon;//Զ궨򣬵byCalibrateTypeΪ1ʱЧ + BYTE byIntelligentType;//궨ͣ0- 1-2-ԣ3-Ϊֻڱ궨ʱNET_DVR_SETUP_CALIB_RESULTصݲЧ + BYTE byRes[127]; +}NET_DVR_SETUP_CALIB_COND, *LPNET_DVR_SETUP_CALIB_COND; + +typedef struct tagNET_DVR_SETUP_CALIB_RESULT +{ + DWORD dwSize; + BYTE byCalibrateType;//궨ͣ0-δб궨1-Զ궨2-ֶ궨,3-ܱ궨 + BYTE byRes1[3]; + float fTiltAngle;//,λȣĬֵ0ǷΧ0-180,byCalibrateTypeΪ2ʱЧ + float fHeelAngle;//б,λȣбĬֵ0бǷΧ-90-90,byCalibrateTypeΪ2ʱЧ + float fHeight;//߶ȣ߶ȵλף߶Ĭֵ300ף߶ȷΧ200-500,byCalibrateTypeΪ2ʱЧ + NET_VCA_POLYGON struCountPolygon;// + NET_DVR_PDC_ENTER_DIRECTION struEnterDirection; // 뷽 + NET_VCA_LINE struLine;// + BYTE byRes[128]; +}NET_DVR_SETUP_CALIB_RESULT, *LPNET_DVR_SETUP_CALIB_RESULT; + +typedef struct tagNET_DVR_CALL_QUERY_COND +{ + DWORD dwSize; + BYTE bySearchID[MAX_SEARCH_ID_LEN]; //ʶ + NET_DVR_TIME struStartTime; //ʼʱ + NET_DVR_TIME struEndTime; //ʱ + BYTE byCallType; //ͣ1-ѽӣ2-δӣ3-Ѳ4- + BYTE byRes1[3]; + DWORD dwMaxResults; //β෵ظ + DWORD dwSearchPos; //ʼ + BYTE byRes2[32]; +}NET_DVR_CALL_QUERY_COND, *LPNET_DVR_CALL_QUERY_COND; + +typedef struct tagNET_DVR_CALL_QUERY_SINGLE +{ + DWORD dwSize; + BYTE byCallType; //ͣ1-ѽӣ2-δӣ3-Ѳ + BYTE byRes1[3]; + BYTE byTerminalName[TERMINAL_NAME_LEN]; //ն + BYTE byAddressURL[MAX_URL_LEN]; //ԶURLַ + NET_DVR_TIME struStartTime; //пʼʱ + NET_DVR_TIME struEndTime; //нʱ + BYTE byRes2[32]; +}NET_DVR_CALL_QUERY_SINGLE, *LPNET_DVR_CALL_QUERY_SINGLE; + + +typedef enum tagCALL_QUERY_RESULT_STATUS +{ + CALL_QUERY_RESULT_OK = 0, //ɹѯ + CALL_QUERY_RESULT_FAIL, //ѯʧܣδ֪ + CALL_QUERY_RESULT_MORE, //ɹѯ иûз + CALL_QUERY_RESULT_NOMATCH, //ûвѯƥ + CALL_QUERY_RESULT_PARAMERROR, //ѯ + CALL_QUERY_RESULT_INVALIDTIME, //ѯʱЧ + CALL_QUERY_RESULT_TIMEOUT, //ѯʱ +}CALL_QUERY_RESULT_STATUS; + +typedef struct tagNET_DVR_CALL_QUERY_RESULT +{ + DWORD dwSize; + BYTE bySearchID[MAX_SEARCH_ID_LEN]; //ʶ + BYTE byStatus; //ѯ״̬ οCALL_QUERY_RESULT_STATUSṹ + BYTE byRes[3]; // + DWORD dwCount; //ʵʲѯĽ + BYTE *pResults; //ݣdwCountNET_DVR_CALL_QUERY_SINGLE,ҪԤȷڴ + BYTE byRes2[32]; +}NET_DVR_CALL_QUERY_RESULT, *LPNET_DVR_CALL_QUERY_RESULT; + +typedef struct tagNET_DVR_CONFERENCE_CALL_INFO +{ + BYTE byConferenceID[MAX_ID_LEN]; //ID + BYTE byConferenceName[NAME_LEN]; // + NET_DVR_TIME struStartTime; //鿪ʼʱ + NET_DVR_TIME struEndTime; //ʱ + BYTE byRes[512]; +}NET_DVR_CONFERENCE_CALL_INFO, *LPNET_DVR_CONFERENCE_CALL_INFO; + +typedef union tagNET_DVR_CALL_INFO +{ + BYTE byRes[640]; + NET_DVR_TERMINAL_CALL_INFO struTerminalCallInfo; //ն˵ԵϢ + NET_DVR_CONFERENCE_CALL_INFO struConferenceCallInfo; //Ϣ +}NET_DVR_CALL_INFO, *LPNET_DVR_CALL_INFO; + +typedef struct tagNET_DVR_CONFERENCE_CALL_ALARM +{ + DWORD dwSize; + BYTE byAlarmType; //ͣ1-У 2-״̬л3-ն + BYTE byCallType; //ͣΪ1ʱЧ1-ն˵ԵУ2- + BYTE byAutoAnswer; //ǷԶ0-1- + BYTE byCallStatusSwitch; //״̬лͣΪ2ʱЧ1-ʼУ2-гɹ3-н4-Զ˹Ҷ + NET_DVR_CALL_INFO struCallInfo; //Ϣ + BYTE byRes2[32]; +}NET_DVR_CONFERENCE_CALL_ALARM, *LPNET_DVR_CONFERENCE_CALL_ALARM; + +typedef struct tagNET_DVR_TERMINAL_INPUT_CFG +{ + DWORD dwSize; + DWORD dwInputNo; //ΪƵڱ + BYTE byStreamType;//ͣ0-1-2- + BYTE byRes[31]; +}NET_DVR_TERMINAL_INPUT_CFG, *LPNET_DVR_TERMINAL_INPUT_CFG; + +typedef struct tagNET_DVR_AUDIO_STATUS +{ + BYTE byMute; //Ƿ0-1- + BYTE byVolume; //1-100ǾʱЧ + BYTE byAudioInputDisabled; //Ƶ룬0-1- + BYTE byAudioInputVolume; //Ƶ1-100ƵʱЧ + BYTE byRes[32]; +}NET_DVR_AUDIO_STATUS, *LPNET_DVR_AUDIO_STATUS; + +typedef struct tagNET_DVR_TERMINAL_CONFERENCE_STATUS +{ + DWORD dwSize; + BYTE byConferenceState; //״̬0-У1-æµУ2-У3- + BYTE byConferenceType; //ͣ1-Ե㣬2-MCU + BYTE byDualStreamEnabled; //Ƿ˫0-δ1- + BYTE byMicPowerEnabled; //˷ԴǷ0-δ1- + DWORD dwInputNo; //ʹõƵں + NET_DVR_CALL_INFO struCallInfo; //Ϣ + NET_DVR_AUDIO_STATUS struAudioStatus; //Ƶ״̬ + BYTE byRes2[32]; +}NET_DVR_TERMINAL_CONFERENCE_STATUS, *LPNET_DVR_TERMINAL_CONFERENCE_STATUS; + +//նעGKϢ +typedef struct tagNET_DVR_TERMINAL_GK_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿ + BYTE byRegisterState; //ע״̬0-δעᣬ1-עᣬֻ + BYTE byRes1[2]; + NET_DVR_IPADDR struGKIP; //GK IP + WORD wGKPort; //GK˿ں + BYTE byRes2[2]; + BYTE byRegisterName[REGISTER_NAME_LEN]; //նעᵽGK + BYTE byPassword[PASSWD_LEN]; //նעᵽGK + BYTE byRes3[16]; +}NET_DVR_TERMINAL_GK_CFG, *LPNET_DVR_TERMINAL_GK_CFG; + +//οز +typedef struct tagNET_DVR_WIN_ROAM_SWITCH_CFG +{ + DWORD dwSize; + BYTE byEnableRoam; //ǷΣ0-񣬷0- + BYTE byRes[31]; +}NET_DVR_WIN_ROAM_SWITCH_CFG,*LPNET_DVR_WIN_ROAM_SWITCH_CFG; + +typedef struct tagNET_DVR_LED_OUTPUT_CFG +{ + DWORD dwSize; + BYTE byEnableZoom; //Ƿţ0-1- + BYTE byAutoCutBlackEdge; //ǷԶüڱߣ0-1- + BYTE byRes1[2]; + WORD wLEDWidth; //ֱʿ + WORD wLEDHeight; //ֱʸ + DWORD dwRefreshRate; //ˢƵ + DWORD dwInputNO; //ͨ + BYTE byRes2[32]; +}NET_DVR_LED_OUTPUT_CFG, *LPNET_DVR_LED_OUTPUT_CFG; + +typedef struct tagNET_DVR_LED_OUTPUT_PORT_CFG +{ + DWORD dwSize; + BYTE byEnabled; //Ƿʹܣ0-1- + BYTE byRes1[3]; + DWORD dwPortNum; //Ķ˿ڸ + DWORD dwPortNo[MAX_OUTPUT_PORT_NUM]; //Ķ˿ں + BYTE byRes2[64]; +}NET_DVR_LED_OUTPUT_PORT_CFG, *LPNET_DVR_LED_OUTPUT_PORT_CFG; + +typedef struct tagNET_DVR_LINE_COLUMN_INFO +{ + WORD wLine; //к + WORD wColumn; //к +}NET_DVR_LINE_COLUMN_INFO, *LPNET_DVR_LINE_COLUMN_INFO; + +typedef struct tagNET_DVR_LED_DISPLAY_AREA +{ + DWORD dwSize; + NET_DVR_LINE_COLUMN_INFO struLCInfo; //ʾʼλ(տк) + WORD wWidth; //տ + WORD wHeight; //տ + WORD wRecvCardWidth; //տȴСΪ0ʹö˿ڲнտС + WORD wRecvCardHeigt; //տ߶ȴСΪ0ʹö˿ڲнտС + BYTE byRes[32]; +}NET_DVR_LED_DISPLAY_AREA, *LPNET_DVR_LED_DISPLAY_AREA; + +typedef struct tagNET_DVR_LED_RECV_CARD_INFO +{ + NET_DVR_LINE_COLUMN_INFO struPos; //տλ + WORD wRecvCardWidth; //տȴС + WORD wRecvCardHeigt; //տ߶ȴС +}NET_DVR_LED_RECV_CARD_INFO, *LPNET_DVR_LED_RECV_CARD_INFO; + +typedef struct tagNET_DVR_LED_PORT_BACKUP +{ + BYTE byEnabled; //Ƿö˿ڱݣ0-1- + BYTE byPortMode; //˿ģʽ1-ڣ2-ݿ + BYTE byRes1[2]; + DWORD dwPairPort; //Զ˿ںţ˿Ϊʱ˲Ϊݿڶ˿ںţ˿Ϊݿʱ˲Ϊڶ˿ں + BYTE byRes2[16]; +}NET_DVR_LED_PORT_BACKUP, *LPNET_DVR_LED_PORT_BACKUP; + +typedef struct tagNET_DVR_LED_PORT_CFG +{ + DWORD dwSize; + BYTE byEnabled; //Ƿøö˿ڣ0-1- + BYTE byRes1[3]; + NET_DVR_LED_PORT_BACKUP struLedPortBackup; //˿ڱݲ + DWORD dwRecvCardNum; //˿ӵĽտ + NET_DVR_LED_RECV_CARD_INFO struRecvCard[MAX_SINGLE_PORT_RECVCARD_NUM]; //տϢ + DWORD dwPortNo; //˿ںţȡж˿ڲʱЧ + BYTE byRes2[64]; +}NET_DVR_LED_PORT_CFG, *LPNET_DVR_LED_PORT_CFG; + +typedef struct tagNET_DVR_LED_DISPLAY_CFG +{ + DWORD dwSize; + NET_DVR_COLOR_TEMPERATURE_CFG struColorTemp; //ɫ² + NET_DVR_VIDEO_OUT_CFG struVoutCfg; //ʾЧ + BYTE byRes[32]; +}NET_DVR_LED_DISPLAY_CFG, *LPNET_DVR_LED_DISPLAY_CFG; + +typedef struct tagNET_DVR_LED_TEST_SIGNAL_CFG +{ + DWORD dwSize; + BYTE byEnabled; //Ƿòźţ0-ã1- + BYTE bySignalType; //źͣ1-2-ƣ3-״4-5-ˮƽʹֱҽ壬6-̣0xff-Զɫ + BYTE byRes1[2]; + NET_DVR_RGB_COLOR struSignalColor; //źɫźΪ0xffʱЧ + BYTE byRes[32]; +}NET_DVR_LED_TEST_SIGNAL_CFG, *LPNET_DVR_LED_TEST_SIGNAL_CFG; + +typedef struct tagNET_DVR_LED_NOSIGNAL_CFG +{ + DWORD dwSize; + BYTE byNoSignalMode; //źʾģʽ1-2-ʾLOGO3-ʾԶͼƬ + BYTE byRes[63]; +}NET_DVR_LED_NOSIGNAL_CFG, *LPNET_DVR_LED_NOSIGNAL_CFG; + +typedef struct tagNET_DVR_LED_INPUT_CFG +{ + DWORD dwSize; + DWORD dwResolutionWidth; //ֱʿֻ + DWORD dwResolutionHeight; //ֱʸߣֻ + DWORD dwRefreshRate; //źˢƵʣֻ + NET_DVR_SCREEN_VGA_CFG struVgaCfg; //VGAźŵVGAʱɵ + BYTE byRes[32]; +}NET_DVR_LED_INPUT_CFG, *LPNET_DVR_LED_INPUT_CFG; + +typedef struct tagNET_DVR_LED_RECV_CARD_CFG_COND +{ + DWORD dwSize; + DWORD dwOutputNo; // + NET_DVR_LINE_COLUMN_INFO struPosStart; //տʼλ + NET_DVR_LINE_COLUMN_INFO struPosEnd; //տλ + BYTE byRes[32]; +}NET_DVR_LED_RECV_CARD_CFG_COND, *LPNET_DVR_LED_RECV_CARD_CFG_COND; + +typedef struct tagNET_DVR_LED_GAMMA_CFG_COND +{ + DWORD dwSize; + DWORD dwOutputNo; //; + NET_DVR_LINE_COLUMN_INFO struPosStart; //տʼλ + NET_DVR_LINE_COLUMN_INFO struPosEnd; //տλ + BYTE byGammaType; //GammaͣGammaʱЧ0-RGBGamma1-ɫGamma2-ɫGamma3-ɫGamma + BYTE byRes[31]; +}NET_DVR_LED_GAMMA_CFG_COND, *LPNET_DVR_LED_GAMMA_CFG_COND; + +typedef struct tagNET_DVR_LED_GAMMA_CFG +{ + DWORD dwSize; + WORD wGammaValue[MAX_GAMMA_X_VALUE]; //GAMMAYȡֵÿԪȡֵ0-65535ԶģʽʱЧ + BYTE byGammaModel; //GAMMAģʽ0-Զģʽ1-ҹģʽ12-ҹģʽ23-ģʽ4-ģʽ15-ģʽ2 + BYTE byRes[127]; +}NET_DVR_LED_GAMMA_CFG, *LPNET_DVR_LED_GAMMA_CFG; + +typedef struct tagNET_DVR_LED_CLOCK_CFG +{ + DWORD dwDclkRate; //ʱdclkƵʣʵֵ10λMHzʵֵΧ1.0-31.3 + DWORD dwGclkRate; //ˢʱgclkƵʣʵֵ10λMHzʵֵΧ1.0-31.3 + DWORD dwGclkCountNum; //300ns gclkֵ + BYTE byDclkDutyRatio; //dclkʱռձȣȡֵ255075 + BYTE byDclkPhase; //dclkλȡֵ0,1,2,3 + BYTE byGclkNum; //ˢ1ҪЧgclk0-255 + BYTE byRes[17]; +}NET_DVR_LED_CLOCK_CFG, *LPNET_DVR_LED_CLOCK_CFG; + +typedef struct tagNET_DVR_LED_RECV_CFG +{ + DWORD dwSize; + NET_DVR_LED_CLOCK_CFG struClockCfg; //ʱز + BYTE byGrayLevel; //Ҷȵȼȡֵ1314 + BYTE byRefreshRate; //ˢ±ʣȡֵ1-6 + BYTE byLineScanNum; //ɨ0-255 + BYTE byRefreshCompleteGrayNum; //ˢҽ0-255 + DWORD dwHBlank; //ʱ䣬λgclkʱӸȡֵ1-65535 + DWORD dwAfterglowCtrl; //Ϳƽʱ䣬λgclkʱӸȡֵ1-65535 + DWORD dwLineFeedTime; //ʱ䣬λgclkʱӸȡֵ1-65535 + BYTE byRes[128]; +}NET_DVR_LED_RECV_CFG, *LPNET_DVR_LED_RECV_CFG; + +typedef struct tagNET_DVR_LED_REGISTOR_VALUE +{ + BYTE byChip1High; //оƬ1ֽ + BYTE byChip1Low; //оƬ1ֽ + BYTE byChip2High; //оƬ2ֽ + BYTE byChip2Low; //оƬ2ֽ + BYTE byChip3High; //оƬ3ֽ + BYTE byChip3Low; //оƬ3ֽ + BYTE byChip4High; //оƬ4ֽ + BYTE byChip4Low; //оƬ4ֽ + BYTE byChip5High; //оƬ5ֽ + BYTE byChip5Low; //оƬ5ֽ + BYTE byChip6High; //оƬ6ֽ + BYTE byChip6Low; //оƬ6ֽ + BYTE byRes[4]; +}NET_DVR_LED_REGISTOR_VALUE, *LPNET_DVR_LED_REGISTOR_VALUE; + +typedef struct tagNET_DVR_LED_RECV_REGISTOR +{ + BYTE byEliminateGhostShadowLevel; //¹Ӱȼ0-5 + BYTE byEliminateShadowy; //һɨƫȼ0-15 + BYTE byGrayEqualize1; //ͻƫɫ10-3 + BYTE byGrayEqualize2; //ͻƫɫ20-15 + BYTE byEnableGrayUniformity; //ͻҾǷ0-أ1- + BYTE byDisableHGrayStripes; //ͻҺǷ0-أ1- + BYTE byGhostShadowEnhancedMode1; //¹Ӱǿģʽ1Ƿ0-أ1- + BYTE byGhostShadowEnhancedMode2; //¹Ӱǿģʽ2Ƿ0-أ1- + BYTE byClearBadPoint; //ȥʹܣ0-ʹܣ1-ʹ + BYTE byEnableSelfDefineRegistor; //ǷԶĴֵ0-1- + BYTE byRes1[2]; + NET_DVR_LED_REGISTOR_VALUE struRegistorValue; //ԶĴ + BYTE byEnabledExGradientOptimition; //Żأ0-رգ!0- + BYTE byDummyGClockCycle; //Dummy GClockڣŻʱЧλgclk + BYTE byDummyGClockHighTime; //Dummy GClockߵƽʱ䣬ŻʱЧλ8ns + BYTE byFirstGClockExtendedTime; //һGClockչʱ䣬ŻʱЧλ8ns + BYTE byRes[28]; +}NET_DVR_LED_RECV_REGISTOR, *LPNET_DVR_LED_RECV_REGISTOR; + +typedef struct tagNET_DVR_LED_RECV_ADVANCED_CFG +{ + DWORD dwSize; + NET_DVR_LED_RECV_REGISTOR struFirstRegistor; //һտ߼ԶĴֵΪоƬĴֵ + NET_DVR_LED_RECV_REGISTOR struSecondRegistor; //ڶտ߼ԶĴֵΪоƬĴֵ + NET_DVR_LED_RECV_REGISTOR struThirdRegistor; //տ߼ԶĴֵΪоƬĴֵ + BYTE byRes2[64]; +}NET_DVR_LED_RECV_ADVANCED_CFG,*LPNET_DVR_LED_RECV_ADVANCED_CFG; + +typedef struct tagNET_DVR_LED_CHECK_COND +{ + DWORD dwSize; + DWORD dwOutputNo; // + NET_DVR_LINE_COLUMN_INFO struPosStart; //տʼλ + BYTE byStartPosType; //ʼλͣ0-ʹýտʼλã1-ʹλ + BYTE byRes1[3]; + DWORD dwXCoordinate; /*ϽʼX*/ + DWORD dwYCoordinate; /*ϽY*/ + DWORD dwWidth; /**/ + DWORD dwHeight; /*߶*/ + BYTE byRes[8]; +}NET_DVR_LED_CHECK_COND, *LPNET_DVR_LED_CHECK_COND; + +//ѯʽ +enum ADDR_QUERY_TYPE +{ + QUERYSVR_BY_COUNTRYID = 0, //ұŲѯַ + QUERYSVR_BY_SERVERTYPE = 1, // + QUERYDEV_BY_NICKNAME_DDNS = 2, //dzƴhiDDNSϲѯ豸Ϣ + QUERYDEV_BY_SERIAL_DDNS = 3, //кŴhiDDNSϲѯ豸Ϣ + CHECKDEV_BY_NICKNAME_DDNS = 4,//dzƴhiDDNS豸Ϣ + CHECKDEV_BY_SERIAL_DDNS = 5, //кŴhiDDNS豸Ϣ + QUERYDEV_BY_NICKNAME_IPSERVER = 6, //dzƴIPServerϲѯ豸Ϣ + QUERYDEV_BY_SERIAL_IPSERVER = 7 //dzƴIPServerϲѯ豸Ϣ +}; +#define CLIENT_VERSION_LEN 64 +//ұŲѯṹ +typedef struct tagNET_DVR_QUERY_COUNTRYID_COND +{ + WORD wCountryID; //ұ,ȡֵһ + char szSvrAddr[MAX_DOMAIN_NAME];//ַ,ʾȥĸϲѯĿϢ + char szClientVersion[CLIENT_VERSION_LEN];//ͻ˰汾Ϣ,:iVMS4500 V4.0.0.0 build20150112 + BYTE byRes[382]; +}NET_DVR_QUERY_COUNTRYID_COND,*LPNET_DVR_QUERY_COUNTRYID_COND; + +//ұŲѯķؽṹ +typedef struct tagNET_DVR_QUERY_COUNTRYID_RET +{ + char szResolveSvrAddr[MAX_DOMAIN_NAME];//ַ(豸ע) + char szAlarmSvrAddr[MAX_DOMAIN_NAME];//ַ + BYTE byRes[1024]; +}NET_DVR_QUERY_COUNTRYID_RET,*LPNET_DVR_QUERY_COUNTRYID_RET; + +//Ͳѯṹ +typedef struct tagNET_DVR_QUERY_SERVERTYPE_COND +{ + WORD wSvrType; //, 6-ֻͷ + char szSvrAddr[MAX_DOMAIN_NAME];//ַ,ʾȥĸϲѯĿϢ + char szClientVersion[CLIENT_VERSION_LEN];//ͻ˰汾Ϣ + BYTE byRes[382]; +}NET_DVR_QUERY_SERVERTYPE_COND, *LPNET_DVR_QUERY_SERVERTYPE_COND; + +//Ͳѯķؽṹ +typedef struct tagNET_DVR_QUERY_SERVERTYPE_RET +{ + char szSvrAddr[MAX_DOMAIN_NAME]; //ַ + WORD wSvrPort; //˿ + BYTE byRes[446]; +}NET_DVR_QUERY_SERVERTYPE_RET, *LPNET_DVR_QUERY_SERVERTYPE_RET; + +//hiDDNSϲѯϵṹ +typedef struct tagNET_DVR_QUERY_DDNS_COND +{ + char szResolveSvrAddr[MAX_DOMAIN_NAME];//ַ + char szDevNickName[MAX_DOMAIN_NAME]; //豸ڽϵı + char szDevSerial[SERIALNO_LEN]; //豸к + char szClientVersion[CLIENT_VERSION_LEN];//ͻ˰汾Ϣ,:iVMS4500 V4.0.0.0 build20150112 + BYTE byRes[272]; // +}NET_DVR_QUERY_DDNS_COND,*LPNET_DVR_QUERY_DDNS_COND; + +//hiDDNSϲѯصĽṹ +typedef struct tagNET_DVR_QUERY_DDNS_RET +{ + char szDevIP[SDK_MAX_IP_LEN]; //豸IPַ + WORD wCmdPort; //ƶ˿ڣSDKӶ˿ڣ + WORD wHttpPort; //http˿ + BYTE byRes[460]; +}NET_DVR_QUERY_DDNS_RET,*LPNET_DVR_QUERY_DDNS_RET; + +//hiDDNSϷصĽṹ +typedef struct tagNET_DVR_CHECK_DDNS_RET +{ + BYTE byDevStatus; //豸״̬,0-,1-Ҳ,2-豸,3-豸ڵǰ + BYTE byRes1; + NET_DVR_QUERY_DDNS_RET struQueryRet; //ַϢ + WORD wRegionID; //ǰ豸ע[1,2,3̫,4й,5ŷ,6] + BYTE byRes2[508]; +}NET_DVR_CHECK_DDNS_RET,*LPNET_DVR_CHECK_DDNS_RET; + +//IPServerϲѯṹ +typedef struct tagNET_DVR_QUERY_IPSERVER_COND +{ + char szResolveSvrAddr[MAX_DOMAIN_NAME];//ַ + WORD wResolveSvrPort; //˿ + char szDevNickName[MAX_DOMAIN_NAME]; //豸ڽϵı + char szDevSerial[SERIALNO_LEN]; //豸к + BYTE byRes[334]; // +}NET_DVR_QUERY_IPSERVER_COND,*LPNET_DVR_QUERY_IPSERVER_COND; + +//IPServerϲѯصĽṹ +typedef struct tagNET_DVR_QUERY_IPSERVER_RET +{ + char szDevIP[SDK_MAX_IP_LEN]; //豸IPַ + WORD wCmdPort; //ƶ˿ڣSDKӶ˿ڣ + BYTE byRes[462]; +}NET_DVR_QUERY_IPSERVER_RET,*LPNET_DVR_QUERY_IPSERVER_RET; + +typedef struct tagNET_DVR_CURRENT_VALID_PORT +{ + DWORD dwSize; + WORD wHTTPPort; + BYTE byRes[122]; +}NET_DVR_CURRENT_VALID_PORT,*LPNET_DVR_CURRENT_VALID_PORT; + +typedef struct tagNET_DVR_AUDIO_CHANNEL +{ + DWORD dwChannelNum; //ͨ + BYTE byres[32]; // +}NET_DVR_AUDIO_CHANNEL, *LPNET_DVR_AUDIO_CHANNEL; + +//ṹ +typedef struct tagNET_DVR_STREAMENCRYPTION_COND +{ + DWORD dwSize; //ṹС + DWORD dwChan; //Ԥͨ + BYTE byRes[128]; +}NET_DVR_STREAMENCRYPTION_COND, *LPNET_DVR_STREAMENCRYPTION_COND; + +//Ϣṹ +typedef struct tagNET_DVR_STREAMENCRYPTION_CFG +{ + DWORD dwSize; //ṹС + BYTE byEnable; //ܣ0~رգ1~ + BYTE byRes[255]; +}NET_DVR_STREAMENCRYPTION_CFG, *LPNET_DVR_STREAMENCRYPTION_CFG; + +//У׼GPSγȲ +typedef struct tagNET_DVR_REVISE_GPS_CFG +{ + DWORD dwSize; //ṹС + BYTE byLatitudeType ;//γͣ0-γ1-γ + BYTE byLongitudeType ;// ͣ0-ȣ1- + BYTE byMode ;//ģʽ 0-Ĭϣ1-Զ2-ֶ + BYTE byRes; + NET_DVR_LLI_PARAM struLatitude; /*γ*/ + NET_DVR_LLI_PARAM struLongitude; /**/ + BYTE byRes1[300]; +}NET_DVR_REVISE_GPS_CFG, *LPNET_DVR_REVISE_GPS_CFG; + +typedef struct tagNET_DVR_PDC_RECOMMEND +{ + DWORD dwSize; + WORD wWidth;//Ƽֵ[0, 1000] + BYTE byRes[126]; +}NET_DVR_PDC_RECOMMEND,*LPNET_DVR_PDC_RECOMMEND; + +typedef struct tagNET_DVR_FLASHSTORAGE_REMOVE +{ + DWORD dwSize; + DWORD dwChannel; + BYTE byPDCRemoveEnable;//ʹ 0-1- + BYTE byRes[127]; +}NET_DVR_FLASHSTORAGE_REMOVE,*LPNET_DVR_FLASHSTORAGE_REMOVE; + +/********************************DS-TME4XXƻ Begin****************************/ +typedef struct tagNET_DVR_PARKING_CARD +{ + DWORD dwSize; + DWORD dwChannel;//Ĭ1ݶͨ豸 + char szCardNo[MAX_CARDNO_LEN/*48*/];// + BYTE byCardType;//Ƭ 0-ʱ1-̶ + BYTE byCardStatus;//Ƭ״̬ 0-1-ʧ2-ע + BYTE byChargeRuleID;//շѹID + BYTE byDelete;//Ƿɾ 0-ɾ1-ɾ + NET_DVR_TIME_V30 struStartTime;//Чʼʱ + NET_DVR_TIME_V30 struEndTime;//Чʱ + BYTE byRes[128]; +}NET_DVR_PARKING_CARD,*LPNET_DVR_PARKING_CARD; + +//ڿƬϢϴ +typedef struct tagNET_DVR_GATE_CARDINFO +{ + DWORD dwSize; + NET_VCA_DEV_INFO struDevInfo; + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + char szCardNo[MAX_CARDNO_LEN/*48*/];// + char szPassVehicleID[MAX_VEHICLE_ID_LEN];//Ψһʶ + char szInVehicleID[MAX_VEHICLE_ID_LEN];//ʱΨһʶ + NET_DVR_TIME_V30 struSwipeTime;//ˢʱ + NET_DVR_TIME_V30 struCardTime;//Ƭʱ䣬볡ʱдʱ䣬ֻԳƱã0ʾ볡ʱ + BYTE byLetPass;//ڷзʽ 0-(CardType == ֽƱ)Ҫշѣ1-У2-շѷ + BYTE byCardType;// 0-̶1-ʱ2-ֽƱ + BYTE byRes[126]; +}NET_DVR_GATE_CARDINFO, *LPNET_DVR_GATE_CARDINFO; + +//̨ҵϴ +typedef struct _tagNET_LOADING_DOCK_OPERATEINFO_ +{ + DWORD dwSize; //ṹ + BYTE byAbsTime[32]; //ʱ,yyyymmddhhmmssxxx,e.g.20090810235959999 λΪ + BYTE byParkingNo[MAX_PARKNO_LEN/*16*/];//λ + DWORD dwIndex; // + char sLicense[MAX_LICENSE_LEN/*16*/]; //ƺ,עжСҲ복ƺ룬Сֺͳƺмÿոָ + BYTE byCurrentWorkerNumber;//ǰҵ + BYTE byCurrentGoodsLoadingRate;//ǰװ 0- 1- 2- 3- 4- + BYTE byDoorsStatus;//״̬ 0-Źر 1-ſ + BYTE byRes1; //ֽ + DWORD dwBackPicDataLength;//ͼƬ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64)) //win64linux64ָΪ8ֽ + BYTE *pBackPicDataBuffer; //ͼƬָ +#else + BYTE* pBackPicDataBuffer; // ͼƬָ + BYTE byRes2[4]; +#endif + DWORD dwChannel; //ͨţ0-֧֣ϵ豸֧ͨŷأ + BYTE byRes[508]; +}NET_LOADING_DOCK_OPERATEINFO, *LPNET_LOADING_DOCK_OPERATEINFO; + +//ڸϢϴ(COMM_GATE_CHARGEINFO_UPLOAD) +typedef struct tagNET_DVR_GATE_CHARGEINFO +{ + DWORD dwSize; + NET_VCA_DEV_INFO struDevInfo; + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + char sLicense[MAX_LICENSE_LEN]; // + char szCardNo[48]; + NET_DVR_TIME_V30 struEntranceTime; + NET_DVR_TIME_V30 struDepartureTime; + char szDepartureID[32]; //Ψһʾ + char szEntranceID[32]; //볡Ψһʾ + DWORD dwTotalCost; //ʵշѽ*100 + char szOperateName[32]; //ѻΪ"offline" + BYTE byChargeRuleId; //շѹcenterId + BYTE byVehicleType;//ͣ0-1-Сͳ2-ͳ + BYTE byRes[127];//Ԥ +}NET_DVR_GATE_CHARGEINFO,*LPNET_DVR_GATE_CHARGEINFO; + +//ͣͣƽṹ +typedef struct tagNET_DVR_PARKING_CARD_CTRL_PARAM +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byCardType;//Ƭ 0-ʱ + BYTE byDeleteALL;//Ƿȫɾ 0-ɾ1-ɾ + BYTE byRes[62]; +}NET_DVR_PARKING_CARD_CTRL_PARAM,*LPNET_DVR_PARKING_CARD_CTRL_PARAM; + + +//TMEץͼϴ +typedef struct tagNET_DVR_TME_VEHICLE_RESULT_ +{ + DWORD dwSize; + WORD wLaneid; //132ţԾ + BYTE byCamLaneId; //Ӧ116õijţԾͬ + BYTE byRes1; // + DWORD dwChanIndex; //ͨ + NET_DVR_PLATE_INFO struPlateInfo; //Ϣṹ + NET_DVR_VEHICLE_INFO struVehicleInfo; //Ϣ + BYTE byMonitoringSiteID[48]; // + BYTE byDeviceID[48]; //豸 + BYTE byDir; //ⷽ0- 1 볡2 + BYTE byRes2; + WORD wBackList; //ΪǷ񱨾 0 ʾΪ 1 ʾֹ + DWORD dwPicNum; //ͼƬpicGroupNumͬϢͼƬͼƬϢstruVehicleInfoEx + NET_ITS_PICTURE_INFO struPicInfo[4]; //ͼƬϢ,ݶ4ͼ + BYTE byPassVehicleID[32]; //ΨһID + BYTE byCardNo[48]; // + BYTE bySwipeTime[32];//ˢʱ ʱʽΪyyyymmddhh24missfff + DWORD dwCharge; //շѽ ֣ + BYTE byHistory; //Ƿʷ 0- 1- + BYTE byLetPass; //ǷѷУ0-δУ1- 2-δ֪ + BYTE byRes3[186]; +} NET_DVR_TME_VEHICLE_RESULT, *LPNET_DVR_TME_VEHICLE_RESULT; + +//شŹעϢ +typedef struct tagNET_DVR_MVMRegisterInfo_ +{ + DWORD dwSize; //ṹС + char sDetectorID[16]; //ID + char sManagerID[16]; //ID + char sSim[20]; //Ϣ + DWORD dwLocalIP; //IPv4ַdwLocalIP=0x01020304,IPַΪ1.2.3.4 + DWORD dwLocalIPMask; //룬ʽͬdwLocalIP + DWORD dwLocalGateway; //أʽͬdwLocalIP + DWORD dwDstIP; //ĿIPʽͬdwLocalIP + BYTE byMACAddr[6]; //macַ + WORD wLocalPort; //ض˿ + WORD wFirmwareYear; //汾 + BYTE byFirmwareMonth; //汾· + BYTE byFirmwareDay; //汾 + BYTE byMajorVersion; //汾Сǰ + BYTE byMinorVersion; //汾С + BYTE byRes[170]; +}NET_DVR_MVMRegisterInfo, *LPNET_DVR_MVMRegisterInfo; + +//ش״̬Ϣ +typedef struct tagNET_DVR_SingleMagneticStatus_ +{ + DWORD dwSize; //ṹС + char sDetectorID[16]; //ID + char sManagerID[16]; //ID + char sParkNum[16]; //λ + NET_DVR_TIME_V30 struDetectorTime; //ʱ + DWORD dwRssi; //źǿȣʵֵΧ-137~0dbm˴ûзţΪʵֵľֵ + BYTE byParkinglotState; //λ״̬0-޳1-г + BYTE byBatteryState; //״̬0-100%1-75%2-50%3-25%4-С5% + BYTE byDeviceState; //豸״̬ 0-1- + BYTE byCMD; //0-λ仯1- + BYTE byRes[184]; +}NET_DVR_SingleMagneticStatus, *LPNET_DVR_SingleMagneticStatus; + +//Ϣͬ +typedef struct tagNET_DVR_PARKING_VEHICLE +{ + DWORD dwSize; + DWORD dwChannel;//Ĭ1ݶͨ豸 + char szLicense[MAX_LICENSE_LEN/*16*/];//ƺ + char szRelateCardNo[MAX_CARDNO_LEN/*48*/];// + NET_DVR_TIME_V30 struStartTime;//Чʼʱ + NET_DVR_TIME_V30 struEndTime;//Чʱ + BYTE byVehicleType;//ͣ0-1-Сͳ2-ͳ + BYTE byPlateColor;//ɫο VCA_PLATE_COLOR + BYTE byRes[126]; +}NET_DVR_PARKING_VEHICLE,*LPNET_DVR_PARKING_VEHICLE; + +//ɷѽϢ +typedef struct tagNET_DVR_CHARGEACCOUNT_CFG +{ + DWORD dwSize;//ṹС + float fAccount;//ʵշѽ + BYTE byRes[128]; +}NET_DVR_CHARGEACCOUNT_CFG,*LPNET_DVR_CHARGEACCOUNT_CFG; + +//ͣƱ豸ǶȲ +typedef struct tagNET_DVR_PXMULTICTRL_CFG +{ + DWORD dwSize;//ṹС + DWORD dwMultiChansWaitTime;//Ƕץƥʱ䣨1~300s + BYTE byMultiChansCapEnabled;//ǷöǶץ 0-1- + BYTE byRes[127]; +}NET_DVR_PXMULTICTRL_CFG,*LPNET_DVR_PXMULTICTRL_CFG; + +//ͣƱѻ² +typedef struct tagNET_DVR_PXOFFLINE_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnabled;//ǷƱѻģʽ0- 1- + BYTE byChargeEnabled;//Ƿѻշ 0-1- + BYTE byAlarmEnabled;//Ƿѻ 0-1- + BYTE byRecordSource;//¼ 0-ʶ 1- + DWORD dwTimeWait;//Ʊѻģʽǰĵȴʱ䣨1-300룩 + /** + realeaseMode&(0x1<<0) ̶ + realeaseMode&(0x1<<1) ̶ + realeaseMode&(0x1<<2) ʱ + realeaseMode&(0x1<<3) ʱ + realeaseMode&(0x1<<4) ޳Ʒ + realeaseMode&(0x1<<5) ̶Զ + realeaseMode&(0x1<<6) ʱԶ + */ + DWORD dwRealeaseMode; //зʽλʾ + BYTE byVehCardmatch;//һ 0-1- + BYTE bySingleInSingleOut;// 0-1- + BYTE byRes[126]; +}NET_DVR_PXOFFLINE_CFG,*LPNET_DVR_PXOFFLINE_CFG; + +typedef struct tagNET_DVR_PARKINGSAPCE_CFG +{ + DWORD dwSize;//ṹС + DWORD dwTotalParkingLot;//ͣλ + DWORD dwCurrParkingLot;//ǰʣͣλ + BYTE byRes[128]; +}NET_DVR_PARKINGSAPCE_CFG,*LPNET_DVR_PARKINGSAPCE_CFG; + +typedef struct tagNET_DVR_PAPERCHARGEINFO_CFG +{ + DWORD dwSize;//ṹС + char szBarCode[LEN_16];//루16λַ + char szLicense[MAX_LICENSE_LEN]; //ƺ + char szVehicleInTime[LEN_32];//볡ʱ䣨32λַ YYYY-MM-DD HH:MM:SS + char szPaymentTime[LEN_32];//ɷʱ䣨32λַ YYYY-MM-DD HH:MM:SS + float fPaymentAmount;//ɷѽ + DWORD dwPaymentOutFailureTime;//ɷѳʧЧʱ䣨DWORD + BYTE byVehicleOutEnabled; //Ƿ: 0- 1- + BYTE byRes[128]; +}NET_DVR_PAPERCHARGEINFO_CFG,*LPNET_DVR_PAPERCHARGEINFO_CFG; + +//ͣƱ +typedef struct tagNET_DVR_ILLEGALCARDFILTERING_CFG +{ + DWORD dwSize;//ṹС + char sLEDDefaultInfo[MAX_LED_INFO_LEN/*512*/]; // LEDĬʾ + BYTE byillegalCardFilteringEnabled;//÷Ƿ,0~ã1~ + BYTE bySendCardSensingCoilEnabled;//ǷظȦ + BYTE byWiegendSensingCoilEnabled;//Զ뿨ǷظȦ + BYTE byGateSwitchEnabled; //ǷеբϢ + BYTE byVerifyKeyWriteCardEnabled;//Ƿ֤Կд + BYTE byNoplateTakeCardEnabled;// Ƿ޳ȡƾݷ + BYTE byRes[126]; +}NET_DVR_ILLEGALCARDFILTERING_CFG,*LPNET_DVR_ILLEGALCARDFILTERING_CFG; + + +//ͣڳշѹṹ +typedef struct tagNET_DVR_TME_CHARGERULE_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + char szCardNo[32];// + BYTE byRes[128]; +}NET_DVR_TME_CHARGERULE_COND, *LPNET_DVR_TME_CHARGERULE_COND; + +//LEDĻʾ +typedef struct tagNET_DVR_LEDDISPLAY_CFG +{ + DWORD dwSize;//ṹС + char sDisplayInfo[MAX_LED_INFO_LEN/*512*/]; // LEDʾ + BYTE byDisplayMode;//ʾʽ:0~,1~,2~ʾ + BYTE bySpeedType;//ٶ:0~,1~,2~ + BYTE byShowPlateEnable;//ʾʹܣ0~رգ1~ + BYTE byRes1; + DWORD dwShowTime;//ʾʱ1~60 + BYTE byRes[128]; +}NET_DVR_LEDDISPLAY_CFG,*LPNET_DVR_LEDDISPLAY_CFG; + +//Ʋ +typedef struct tagNET_DVR_VOICEBROADCAST_CFG +{ + DWORD dwSize;//ṹС + char sInfo[MAX_VOICE_INFO_LEN/*128*/]; // + BYTE byBroadcastNum;// 1~10 + BYTE byIntervalTime;// ʱ,1~5s + BYTE byRes[126]; +}NET_DVR_VOICEBROADCAST_CFG,*LPNET_DVR_VOICEBROADCAST_CFG; + +//ֽƱӡʽ +typedef struct tagNET_DVR_PAPERPRINTFORMAT_CFG +{ + DWORD dwSize;//ṹС + char sTitleInfo[MAX_LITLE_INFO_LEN/*64*/]; //ֽƱ + char sCustomInfo[MAX_CUSTOM_INFO_LEN/*64*/]; //ֽƱԶϢ + char sPhoneNum[MAX_PHONE_NUM_LEN/*16*/];//ϵ绰 + BYTE byPrintInTimeEnabled; //Ƿӡ볡ʱ + BYTE byRes[127]; +}NET_DVR_PAPERPRINTFORMAT_CFG,*LPNET_DVR_PAPERPRINTFORMAT_CFG; + + +//բʱ +typedef struct tagNET_DVR_LOCKGATE_TIME_CFG +{ + char sBeginTime[LEN_32];//ʼʱ䣨32λַ HH:MM:SS + char sEndTime[LEN_32];//ʱ䣨32λַ HH:MM:SS + BYTE byRes[64]; +}NET_DVR_LOCKGATE_TIME_CFG,*LPNET_DVR_LOCKGATE_TIME_CFG; + +//բ +typedef struct tagNET_DVR_LOCKGATE_CFG +{ + DWORD dwSize;//ṹС + NET_DVR_LOCKGATE_TIME_CFG struTime[LOCKGATE_TIME_NUM]; //բʱ + BYTE byRes[128]; +}NET_DVR_LOCKGATE_CFG,*LPNET_DVR_LOCKGATE_CFG; + +//ͬ״̬ +typedef struct NET_DVR_PARKING_DATASTATE_INFO +{ + DWORD dwSize; + char szAppSerialNum [MAX_APP_SERIALNUM_LEN/*32*/];//Ӧк, ǰӵӦ + DWORD dwParkingNum; //ǰͣ + DWORD dwUpdataSerialNum; //к; µкš + BYTE byRes[256]; +} NET_DVR_PARKING_DATASTATE_INFO,*LPNET_DVR_PARKING_DATASTATE_INFO; + +//EPTZ +typedef struct tagNET_DVR_EPTZ_CFG +{ + DWORD dwSize; + BYTE byEnableEPTZ; //ǷEPTZ, 0-ã1 - + BYTE byRes[503]; +}NET_DVR_EPTZ_CFG, *LPNET_DVR_EPTZ_CFG; + +//ĵ +typedef struct tagNET_DVR_CENTER_POINT_CFG +{ + DWORD dwSize; + NET_VCA_POLYGON struRegion;//Χ + BYTE byRes[512]; +}NET_DVR_CENTER_POINT_CFG, *LPNET_DVR_CENTER_POINT_CFG; + +/********************************DS-TME4XXƻ End****************************/ + +/********************************IPC FF Start****************************/ +typedef struct tagNET_DVR_FTPUPLOAD_PARAM +{ + char szRuleTypeItem[MAX_SINGLE_FTPPICNAME_LEN/*20*/]; + char szCameraName[MAX_CAMNAME_LEN/*32*/]; + BYTE byRes[64]; +}NET_DVR_FTPUPLOAD_PARAM, *LPNET_DVR_FTPUPLOAD_PARAM; + +//char szRuleTypeItem[MAX_SINGLE_FTPPICNAME_LEN/*20*/]; +//ǹ̶ַ capture_time,plate_No,alarm_type,camera_name +//±ʾȺ˳ + +//char szCameraName[MAX_CAMNAME_LEN/*32*/]; +//szRuleTypeItemֶαʾΪ camera_name + +typedef struct tagNET_DVR_FTPUPLOADCFG +{ + DWORD dwSize; + BYTE byEventType; //¼ͣ0-Ĭϣ1- + BYTE byMode; //ͼƬģʽ0-Ĭϣ1-Զ + BYTE byRes[62]; + NET_DVR_FTPUPLOAD_PARAM struCustomVehicle[MAX_FTPNAME_NUM/*12*/]; + BYTE byRes1[1024] ; +}NET_DVR_FTPUPLOADCFG, *LPNET_DVR_FTPUPLOADCFG; + +/********************************IPC FF End****************************/ + +//Ϣն +typedef struct tagNET_DVR_PUBLISH_UPGRADE_COND +{ + DWORD dwSize; + DWORD dwUpgradeType; //ͣ1-ն2-ն + DWORD dwTerminalNum; //ն˸ʽնʱЧ + DWORD *pTerminalNo; //Ҫն˺ţնʱЧ + DWORD dwGroupNo; //նţնʱЧ + BYTE byRes[32]; +}NET_DVR_PUBLISH_UPGRADE_COND, *LPNET_DVR_PUBLISH_UPGRADE_COND; +//WEPԿ +typedef struct tagNET_DVR_WEP_KEY_CFG +{ + char csWEPKey[WEP_KEY_MAX_SIZE/*32*/];//Կ + BYTE byRes[64]; +}NET_DVR_WEP_KEY_CFG, *LPNET_DVR_WEP_KEY_CFG; + +typedef struct tagNET_DVR_SUB_UPGRADE_PROGRESS +{ + DWORD dwTerminalNo; //ն˺ + DWORD dwProgress; //նȣ0-100101ʾն쳣,,102-ն˽ѹʧܣ103-汾ƥ䣬104-ļ105-Ƿǩ +}NET_DVR_SUB_UPGRADE_PROGRESS, *LPNET_DVR_SUB_UPGRADE_PROGRESS; + +typedef struct tagNET_DVR_UPGRADE_PROGRESS_RESULT +{ + DWORD dwSize; + DWORD dwMainProgress; //ȣ0-100 + DWORD dwSubProgressNum; //ӽȸ + LPNET_DVR_SUB_UPGRADE_PROGRESS lpStruSubProgress; //նӽȣdwSubProgressNumNET_DVR_SUB_UPGRADE_PROGRESS + BYTE byRes[32]; +}NET_DVR_UPGRADE_PROGRESS_RESULT, *LPNET_DVR_UPGRADE_PROGRESS_RESULT; + +//Ϣճ̷ +typedef struct tagNET_DVR_SCHEDULE_PROGRESS_COND +{ + DWORD dwSize; + DWORD dwScheduleNo; //ճ̺ + BYTE byProgressType; //ȡĽͣ1-ȡȣ2-ն˻ȡȣ3-֯ȡ + BYTE byRes1[3]; + DWORD dwGroupNo; //նŻ֯Ϊ13ʱЧ + DWORD dwTerminalNo; //ն˺ţΪ2ʱЧ + BYTE byRes2[32]; +}NET_DVR_SCHEDULE_PROGRESS_COND, *LPNET_DVR_SCHEDULE_PROGRESS_COND; + +typedef struct tagNET_DVR_SUB_SCHEDULE_PROGRESS +{ + DWORD dwTerminalNo; //ն˺ + DWORD dwProgress; //նճ̷ȣ0-100101ʾնճ̷쳣,102ʾն˴洢ռ䲻,103-ն˲ߣ104-ն˾ܾ105-նж +}NET_DVR_SUB_SCHEDULE_PROGRESS, *LPNET_DVR_SUB_SCHEDULE_PROGRESS; + +typedef struct tagNET_DVR_SCHEDULE_PROGRESS_RESULT +{ + DWORD dwSize; + DWORD dwMainProgress; //ȣ0-100ȡʱΪճ̷ȣն˻ȡʱΪնճ̷ + DWORD dwSubProgressNum; //ӽȸȡʱЧʾ¸ն˽ȸ + LPNET_DVR_SUB_SCHEDULE_PROGRESS lpStruSubProgress; //նճ̷ӽȣȡʱЧdwSubProgressNumNET_DVR_SUB_SCHEDULE_PROGRESS + BYTE byRes[32]; +}NET_DVR_SCHEDULE_PROGRESS_RESULT, *LPNET_DVR_SCHEDULE_PROGRESS_RESULT; + +//Ϣ岥 +typedef struct tagNET_DVR_INSERTPLAY_PROGRESS_COND +{ + DWORD dwSize; + BYTE byInsertType; //岥ͣ1-زģ2-Ŀ + BYTE byRes3[3]; + DWORD dwInsertNo; //岥زģΪزıţ岥ǽĿΪĿ + BYTE byProgressType; //ȡĽͣ1-ȡȣ2-ն˻ȡ + BYTE byRes1[3]; + DWORD dwGroupNo; //նţΪ1ʱЧ + DWORD dwTerminalNo; //ն˺ţΪ2ʱЧ + BYTE byRes2[32]; +}NET_DVR_INSERTPLAY_PROGRESS_COND, *LPNET_DVR_INSERTPLAY_PROGRESS_COND; + +typedef struct tagNET_DVR_SUB_INSERTPLAY_PROGRESS +{ + DWORD dwTerminalNo; //ն˺ + DWORD dwProgress; //ն˲岥ȣ0-100101ʾն˲岥쳣,102ʾն˴洢ռ䲻,103ʾȡ岥,104岥زı滻 +}NET_DVR_SUB_INSERTPLAY_PROGRESS, *LPNET_DVR_SUB_INSERTPLAY_PROGRESS; + +typedef struct tagNET_DVR_INSERTPLAY_PROGRESS_RESULT +{ + DWORD dwSize; + DWORD dwMainProgress; //ȣ0-100ȡʱΪ岥ȣն˻ȡʱΪն˲岥 + DWORD dwSubProgressNum; //ӽȸȡʱЧʾ¸ն˽ȸ + LPNET_DVR_SUB_INSERTPLAY_PROGRESS lpStruSubProgress; //ն˲岥ӽȣȡʱЧdwSubProgressNumNET_DVR_SUB_INSERTPLAY_PROGRESS + BYTE byRes[32]; +}NET_DVR_INSERTPLAY_PROGRESS_RESULT, *LPNET_DVR_INSERTPLAY_PROGRESS_RESULT; + + + + +//WEP +typedef struct tagNET_DVR_WEP_CFG +{ + BYTE byAuthenticationType;//֤ͣ0~֤1~Կ2~Զ֤ + BYTE byDefaultTransmitKeyIndex;//ĬϴԿ1~4ӦstruEncryptionKeyCfgԿĸ + /* + Ϊ64λԿʱASCIIԿַΪ5 + Ϊ128λԿʱASCIIԿַΪ13 + */ + BYTE byWepKeyLenType;//Կͣ0~ 64λԿ1~ 128λԿ + BYTE byKeyType;// Կͣ0~ ASCII룬1~ 16ơ + NET_DVR_WEP_KEY_CFG struWEPKeyCfg[WEP_KEY_MAX_NUM/*4*/];// WEPԿ֧4 + BYTE byRes[128]; +}NET_DVR_WEP_CFG, *LPNET_DVR_WEP_CFG; + +//WPA +typedef struct tagNET_DVR_WPA_CFG +{ + BYTE byAlgorithmType; //㷨ͣ0~TKIP, 1~AES, 2~TKIP/AES + BYTE byWPAKeyLen;// WPAԿȣΪ8~63ӦcsSharedKeyַ + BYTE byDefaultPassword;//ǷĬWPAԿ + BYTE byRes1; + char csSharedKey[WPA_KEY_MAX_SIZE/*64*/];//WPAԿ,Ϊ8-63ASCIIַ + BYTE byRes[128]; +}NET_DVR_WPA_CFG, *LPNET_DVR_WPA_CFG; + + +typedef struct tagNET_DVR_WIRELESS_SECURITY_CFG +{ + BYTE bySecurityMode; //ȫģʽ0~,1~WEP,2~WPA-personal, 3~WPA2-personal + NET_DVR_WEP_CFG struWEPCfg; //ȫģʽѡΪWEPʱЧ + NET_DVR_WPA_CFG struWPACfg; //ȫģʽѡΪWPA-personalWPA2-personalʱЧ + BYTE byRes[256]; +} NET_DVR_WIRELESS_SECURITY_CFG,*LPNET_DVR_WIRELESS_SECURITY_CFG; + +//wifiȵ() +typedef struct tagNET_DVR_WIRELESSSERVER_FULLVERSION_CFG +{ + DWORD dwSize;//ṹС + BYTE byWifiAPEnabled; //ǷAP0-1- + BYTE byBroadcastEnabled; // Ƿù㲥0-1- + BYTE byWlanShareEnabled; //Ƿù0-1- + BYTE byDHCPEnabled; //ǷDHCP0-1- + BYTE bySSID[IW_ESSID_MAX_SIZE]; //SSID + BYTE byRes1[11]; + BYTE byIPType; //IPַͣ0-IPv4,1-IPv6 + NET_DVR_IPADDR struIPAddr; //IPַ + NET_DVR_IPADDR struIPMask; //ַ + NET_DVR_IPADDR struGatewayIPMask; //صַ + NET_DVR_IPADDR struStartIPAddrPool; //IPʼַ + NET_DVR_IPADDR struEndIPAddrPool; // IPνַ + NET_DVR_IPADDR struDNSServerIpAddr[MAX_DNS_SERVER_NUM]; //DNSַ + NET_DVR_WIRELESS_SECURITY_CFG struWirelessSecurityCfg;//߰ȫܲ + BYTE byRes[256]; +}NET_DVR_WIRELESSSERVER_FULLVERSION_CFG, *LPNET_DVR_WIRELESSSERVER_FULLVERSION_CFG; + +typedef struct tagNET_DVR_OPTICAL_DEV_CHAN_INFO +{ + DWORD dwChannel; //ͨţ0ΪЧ + BYTE byChannelName[NAME_LEN]; + BYTE bySignal; //Ƿźţ0-ޣ1-Уֻ + BYTE bySignalType; //źԴͣ1-壬2-壬źʱЧֻ + BYTE byRes[10]; +}NET_DVR_OPTICAL_DEV_CHAN_INFO, *LPNET_DVR_OPTICAL_DEV_CHAN_INFO; + +typedef struct tagNET_DVR_OPTICAL_DEV_NODE +{ + BYTE byValid; //ǷЧ0-Ч1-Ч + BYTE byRes1[3]; + DWORD dwDevNo; //˻ + BYTE byDevName[NAME_LEN]; //ڵ˻ + BYTE byDevID[MAX_ID_LEN]; //˻ID豸Ψһʶֻ + NET_DVR_OPTICAL_DEV_CHAN_INFO struChannel[MAX_CHANNUM]; + BYTE byRes2[32]; +}NET_DVR_OPTICAL_DEV_NODE, *LPNET_DVR_OPTICAL_DEV_NODE; + +#define MAX_OPTICAL_DEV_NODE 32 //ڵ˻ + +typedef struct tagNET_DVR_OPTICAL_PORT_INFO +{ + DWORD dwSize; + BYTE byValid; //ǷźŽ룬0-ޣ1-Уֻ + BYTE byLinkType; //·ͣ1-2-ֻ + BYTE byPortWorkMode; //˿ڹģʽ0-Ч1-ڣ2-ڣ·ΪʱЧֻ + BYTE byRes1[1]; + DWORD dwPairPort; //Թںţ·ΪʱЧʱ˲Ϊںţʱ˲Ϊں + NET_DVR_OPTICAL_DEV_NODE struDevInfo[MAX_OPTICAL_DEV_NODE]; //ڵ˻豸Ϣ + BYTE byRes2[32]; +}NET_DVR_OPTICAL_PORT_INFO, *LPNET_DVR_OPTICAL_PORT_INFO; + +typedef struct tagNET_DVR_OPTICAL_CHAN_RELATE_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿ˻룬0-񣬷0- + BYTE byRes1[3]; + DWORD dwDevNo; //˻ + DWORD dwOpticalPort; //ں + BYTE byDevID[MAX_ID_LEN]; //˻ID + DWORD dwInputChanNo; //˻ͨ + BYTE byRes2[64]; +}NET_DVR_OPTICAL_CHAN_RELATE_CFG, *LPNET_DVR_OPTICAL_CHAN_RELATE_CFG; + +typedef struct tagNET_DVR_START_FILE_TO_CLOUD_COND +{ + DWORD dwSize; + BYTE aCameraID[MAX_CAMERAID_LEN]; //ID + DWORD dwPoolID; //洢ID + DWORD dwRepPoolID; //ID + WORD wReplication; // + BYTE byRes [178]; +}NET_DVR_START_FILE_TO_CLOUD_COND,*LPNET_DVR_START_FILE_TO_CLOUD_COND; + +typedef struct tagNET_DVR_START_PICTURE_FROM_CLOUD_COND +{ + DWORD dwSize; + BYTE aCameraID[MAX_CAMERAID_LEN]; //ID + NET_DVR_TIME_V30 struBeginTime; //ʼʱ + NET_DVR_TIME_V30 struEndTime; //ʱ + DWORD dwPicType; //ͼƬͣλʾ + //bit0-JPG + //bit1-BMP + //bit2-PNG + BYTE byRes1[3]; + BYTE byZoomType; //0-,1-,2-С,3-ֱ + union + { + BYTE uLen[32]; + struct + { + BYTE byScale; //1~99 + }struScale; + struct + { + BYTE byQuality; //1~99 + }struQuality; + struct + { + DWORD dwWidth; + DWORD dwHeight; + }struResolution; //Ŀֱ + }uZoomParam; + DOWNLOAD_DATA_CB fnDownloadFileCallBack; //ݻص + void* pUser; //ûָ + BYTE byRes [372]; +}NET_DVR_START_PICTURE_FROM_CLOUD_COND,*LPNET_DVR_START_PICTURE_FROM_CLOUD_COND; + +typedef struct tagNET_DVR_START_PICTURE_FROM_CLOUD_RET +{ + DWORD dwSize; + DWORD dwFileCount; //ļ + BYTE byRes[120]; +}NET_DVR_START_PICTURE_FROM_CLOUD_RET,*LPNET_DVR_START_PICTURE_FROM_CLOUD_RET; + +typedef struct +{ + DWORD dwSize; + NET_DVR_TIME_V30 struTime; //ͼƬʱ + DWORD dwPicLen; //ͼƬ + BYTE byPicType; //ͼƬʽ,1-jpg,2-bmp,3-png + BYTE byRes[107]; +}NET_DVR_PICTURE_FROM_CLOUD_RET,*LPNET_DVR_PICTURE_FROM_CLOUD_RET; + +typedef struct tagNET_DVR_ACS_EXTERNAL_DEV_CFG +{ + DWORD dwSize; + BYTE byIDCardUpMode; //֤Ϣϱ0ϴ18λ֤ţ1ϴȫϢ + BYTE byRes1; + BYTE byCardVerifyMode; //ˢ֤ģʽ0Զ֤1ͻƽ̨֤2ˢ + BYTE byACSDevType; //豸ͺţ1֤2IC3ά4ָƶ5ַ+ά6տ7ַ8ָͷ9ģ飻10֤豸 + BYTE byDoorMode; //ųͣ0ţ1ţ + BYTE byRes2; + WORD wDevDetailType; //ľ豸ͺţ0-iDR2101-IDM102-˽֤Ķ + BYTE byRes[300]; +}NET_DVR_ACS_EXTERNAL_DEV_CFG, *LPNET_DVR_ACS_EXTERNAL_DEV_CFG; + +typedef struct tagNET_DVR_PERSONNEL_CHANNEL_CFG +{ + DWORD dwSize; + BYTE byInMode; //ģʽ0ܿأ1ֹ2ɣ + BYTE byOutMode; //ģʽ0ܿأ1ֹ2ɣ + BYTE byWorkMode; //ģʽ01ά2գ3 + BYTE byRes[301]; +}NET_DVR_PERSONNEL_CHANNEL_CFG, *LPNET_DVR_PERSONNEL_CHANNEL_CFG; + +#define MAX_ID_NUM_LEN 32 //֤ų +#define MAX_ID_NAME_LEN 128 // +#define MAX_ID_ADDR_LEN 280 //סַ +#define MAX_ID_ISSUING_AUTHORITY_LEN 128 //ǩس + +//֤Ϣ +typedef struct tagNET_DVR_ID_CARD_INFO +{ + DWORD dwSize; //ṹ + BYTE byName[MAX_ID_NAME_LEN]; // + NET_DVR_DATE struBirth; // + BYTE byAddr[MAX_ID_ADDR_LEN]; //סַ + BYTE byIDNum[MAX_ID_NUM_LEN]; //֤ + BYTE byIssuingAuthority[MAX_ID_ISSUING_AUTHORITY_LEN]; //ǩ + NET_DVR_DATE struStartDate; //Чʼ + NET_DVR_DATE struEndDate; //Чֹ + BYTE byTermOfValidity; //ǷЧ 0-1-ǣЧֹЧ + BYTE bySex; //Ա1-У2-Ů + BYTE byNation; + BYTE byRes[101]; +}NET_DVR_ID_CARD_INFO, *LPNET_DVR_ID_CARD_INFO; + +//֤Ϣ +typedef struct tagNET_DVR_ID_CARD_INFO_ALARM +{ + DWORD dwSize; //ṹ + NET_DVR_ID_CARD_INFO struIDCardCfg ;//֤Ϣ + DWORD dwMajor; //ͣο궨 + DWORD dwMinor; //ͣο궨 + NET_DVR_TIME_V30 struSwipeTime; //ʱ + BYTE byNetUser[MAX_NAMELEN] ;//û + NET_DVR_IPADDR struRemoteHostAddr ;//Զַ + DWORD dwCardReaderNo; //ţΪ0Ч + DWORD dwDoorNo; //űţΪ0Ч + DWORD dwPicDataLen; //ͼƬݴСΪ0DZʾ + char *pPicData; + BYTE byCardType; //ͣ1-ͨ2-Ⱥ忨3-ֹ4-Ѳ5-вȿ6-7-8-Ϊ0Ч + BYTE byDeviceNo; // 豸ţΪ0ʱЧЧΧ1-255 + BYTE byMask; //Ƿ֣0-1-δ֪2-֣3- + BYTE byCurrentEvent; //ǷΪʵʱ¼0-Ч1-ǣʵʱ¼2-¼ + DWORD dwFingerPrintDataLen; // ָݴСΪ0DZʾ + char *pFingerPrintData; + DWORD dwCapturePicDataLen; // ץͼƬݴСΪ0DZʾ + char *pCapturePicData; + DWORD dwCertificatePicDataLen; //֤ץͼƬݴСΪ0DZʾ + char *pCertificatePicData; + BYTE byCardReaderKind; //һ࣬0-Ч1-IC2-֤3-ά,4-ָͷ + BYTE byHelmet;//ѡǷȫñ0-1-δ֪2-ȫ, 3-ȫñ + BYTE byRes3; + BYTE byIDCardInfoExtend; //pIDCardInfoExtendǷЧ0-Ч1-Ч + char *pIDCardInfoExtend; //byIDCardInfoExtendΪ1ʱʾָһNET_DVR_ID_CARD_INFO_EXTENDṹ + DWORD dwSerialNo; //¼ˮţΪ0Ч + BYTE byRes[168]; +}NET_DVR_ID_CARD_INFO_ALARM, *LPNET_DVR_ID_CARD_INFO_ALARM; + +//չṹϢ +typedef struct tagNET_DVR_ID_CARD_INFO_EXTEND +{ + BYTE byRemoteCheck; //ǷҪԶ̺飨0-Ч1-ҪĬϣ2-Ҫ + BYTE byThermometryUnit; //µλ0-϶ȣĬϣ1-϶ȣ2-ģ + BYTE byIsAbnomalTemperature; //ץIJǷ¶쳣1-ǣ0- + BYTE byRes2; + float fCurrTemperature; //¶ȣȷСһλ + NET_VCA_POINT struRegionCoordinates; //¶ + DWORD dwQRCodeInfoLen; //άϢȣΪ0DZʾ + DWORD dwVisibleLightDataLen; //ȳɼͼƬȣΪ0DZʾ + DWORD dwThermalDataLen; //ȳͼƬȣΪ0DZʾ + char *pQRCodeInfo; //άϢָ + char *pVisibleLightData; //ȳɼͼƬָ + char *pThermalData; //ȳͼƬָ + WORD wXCoordinate; //x꣬ϽͼƬĹһ꣬Χ0-1000 + WORD wYCoordinate; //y꣬ϽͼƬĹһ꣬Χ0-1000 + WORD wWidth; //ȣΧ0-1000 + WORD wHeight; //߶ȣΧ0-1000 + BYTE byHealthCode; //״̬, 0-, 1-δ, 2-δ, 3-, 4-, 5-, 6-޴Ա, 7-Ϣӿ쳣²ѯʧܣ, 8-ѯ볬ʱ + BYTE byNADCode; //, 0-, 1-δѯ, 2-ԣ, 3-ԣȷ, 4-Чѹ + BYTE byTravelCode; //г̱, 0-, 1-14һֱڵ, 2-14뿪, 3-14ڵ, 4- + BYTE byVaccineStatus; //״̬, 0-, 1-δ, 2-ע, 3- + BYTE byRes[1012]; +}NET_DVR_ID_CARD_INFO_EXTEND, *LPNET_DVR_ID_CARD_INFO_EXTEND; + +//֤Ϣֹṹ +typedef struct tagNET_DVR_ID_CARD_BLOCKLIST_COND +{ + DWORD dwSize; + BYTE byRes[256]; // +}NET_DVR_ID_CARD_BLOCKLIST_COND, *LPNET_DVR_ID_CARD_BLOCKLIST_COND; + +//֤Ϣֹ +typedef struct tagNET_DVR_ID_CARD_BLOCKLIST_CFG +{ + DWORD dwSize; + NET_DVR_ID_CARD_INFO struIDCardCfg; // ֤Ϣ + DWORD dwFingerPrintDataLen; // ָ֤ݴСΪ0DZʾ + char *pFingerPrintData; + DWORD dwPicDataLen; // ֤ͼƬݴСΪ0DZʾ + char *pPicData; + BYTE byRes[128]; +}NET_DVR_ID_CARD_BLOCKLIST_CFG, *LPNET_DVR_ID_CARD_BLOCKLIST_CFG; + +//A =ĸַ [a..z, A..Z]N = ַ [0..9]S = ַ [<]B= +typedef struct tagNET_DVR_PASSPORT_INFO +{ + DWORD dwSize; //ṹ + BYTE byOCR; //0-ӻݣ1- OCRʶݣ + BYTE byRes1[3]; // + BYTE byType[MAX_PASSPORT_TYPE_LEN]; //֤ͣAS + BYTE byCountryIssue[MAX_PASSPORT_INFO_LEN]; //ǩǩAS + BYTE byName[MAX_PASSPORT_NAME_LEN]; //AS + BYTE byPassportNo[MAX_PASSPORT_NUM_LEN]; //֤룬ANS + BYTE byNationality[MAX_NATIONALITY_LEN]; // AS + NET_DVR_DATE struBirth; // + NET_DVR_DATE struExpireDate; //Чֹ + BYTE bySex; //Ա1-У2-Ů + BYTE byRes2[35]; // + BYTE byLocalName[MAX_PASSPORT_INFO_LEN]; //B + BYTE byNumber[MAX_PASSPORT_INFO_LEN]; //˺룬ANS + BYTE byPlaceOfBirth[MAX_PASSPORT_INFO_LEN]; //أB + BYTE byAddr[MAX_PASSPORT_INFO_LEN]; //ַANSB + BYTE byPhone[MAX_PASSPORT_INFO_LEN]; //绰NS + BYTE byJob[MAX_PASSPORT_INFO_LEN]; //ְҵB + BYTE byTitle[MAX_PASSPORT_INFO_LEN]; //ְΣB + BYTE byResume[MAX_PASSPORT_INFO_LEN]; //B + BYTE byOtherNumber[MAX_PASSPORT_INFO_LEN]; //֤룬ANSB + BYTE byMonitoring[MAX_PASSPORT_MONITOR_LEN]; //໤ϢB + BYTE byRes[128]; +}NET_DVR_PASSPORT_INFO, *LPNET_DVR_PASSPORT_INFO; + +//Ϣϴ +typedef struct tagNET_DVR_PASSPORT_ALARM +{ + DWORD dwSize; //ṹ + DWORD dwMajor; //ͣο궨 + DWORD dwMinor; //ͣο궨 + NET_DVR_TIME_V30 struSwipeTime; //ʱ + BYTE byNetUser[MAX_NAMELEN];//û + NET_DVR_IPADDR struRemoteHostAddr;//Զַ + DWORD dwCardReaderNo; //ţΪ0Ч + BYTE byCardType; //ͣ1-ͨ2-Ⱥ忨3-ֹ4-Ѳ5-вȿ6-7-8-Ϊ0Ч + BYTE byRes2[11]; + NET_DVR_PASSPORT_INFO struPassportInfo;//Ϣ + DWORD dwFaceDataLen; //ݴСΪ0DZʾ + char *pFaceData; + DWORD dwPicDataLen; //֤ͼƬݴСΪ0DZʾ + char *pPicData; // [ISO/IEC 10918-1] ʽĹ֤ͼ + DWORD dwCapturePicDataLen; //ץͼƬݴСΪ0DZʾ + char *pCapturePicData; + BYTE byRes[128]; +}NET_DVR_PASSPORT_ALARM, *LPNET_DVR_PASSPORT_ALARM; + +typedef struct tagNET_DVR_PASSNUM_INFO_ALARM +{ + DWORD dwSize; //ṹ + DWORD dwAccessChannel; //Աͨ + NET_DVR_TIME_V30 struSwipeTime; //ʱ + BYTE byNetUser[MAX_NAMELEN] ;//û + NET_DVR_IPADDR struRemoteHostAddr ;//Զַ + DWORD dwEntryTimes; //Ա + DWORD dwExitTimes; //Ա + DWORD dwTotalTimes; //Աܴ + BYTE byRes[300]; +}NET_DVR_PASSNUM_INFO_ALARM, *LPNET_DVR_PASSNUM_INFO_ALARM; +typedef struct tagNET_DVR_UPLOAD_VIDEO_INFO +{ + DWORD dwSize; + DWORD dwVideoMangeNo; //Ƶ + BYTE byVideoType; //Ƶʽ 0-AVI 1-WMV 2-MP4 3-FLV 3-VOD 4-MKV 5-RMVB + BYTE byRes1[3]; // + BYTE sVideoName[NAME_LEN]; //Ƶ + NET_DVR_TIME_V30 struTime; //ͼƬϴʱ + BYTE byRes[132]; +} NET_DVR_UPLOAD_VIDEO_INFO, *LPNET_DVR_UPLOAD_VIDEO_INFO; + +typedef struct tagNET_DVR_DEVICE_FILE_INFO +{ + DWORD dwSize; + BYTE sFileName[NAME_LEN]; //ļ + DWORD dwManageNo; //(ֻܻȡ) + NET_DVR_TIME_EX struTime; //ĵϴʱ + BYTE byUsed; //ǷѴڣ0-ڣ1- ֻܻȡ + BYTE byRes[127]; +} NET_DVR_DEVICE_FILE_INFO, *LPNET_DVR_DEVICE_FILE_INFO; + +typedef struct tagNET_DVR_PLAY_ITEM +{ + DWORD dwSize; + BYTE byItemType; //ͣ1-ͼƬ 2-Ƶ 3-б + BYTE byRes[3]; // + DWORD dwPlayManageNo; //Ź + DWORD dwPlayPicTime; //ͼƬʱ䣬λ, (ΪͼƬЧ) + BYTE byRes2[64]; +} NET_DVR_PLAY_ITEM, *LPNET_DVR_PLAY_ITEM; + +typedef struct tagNET_DVR_DEVICE_PLAYLIST +{ + DWORD dwSize; + BYTE byEnable; //ǷЧ 0-Ч !0-Ч + BYTE byPlayType; //ģʽ1-ѭ + BYTE byVaildItemNum; //Ч + BYTE byRes[1]; + NET_DVR_PLAY_ITEM struPlayItem[PLAYLIST_ITEM_NUM]; //ǰbyVaildItemNumЧ + BYTE byPlaylistName[PLAYLIST_NAME_LEN]; //б + DWORD dwPlaylistNo; //бţȡЧ + BYTE byRes2[128]; +} NET_DVR_DEVICE_PLAYLIST, *LPNET_DVR_DEVICE_PLAYLIST; +typedef struct tagNET_DVR_PLAYLIST_ITEM_CTRL +{ + DWORD dwSize; + BYTE byCtrlType; //ͣ 1-Ӳ 2-ɾ 3-ƶλ + BYTE byPlayIndex; //ţ 1ʼ + NET_DVR_PLAY_ITEM struPlayItem; // + BYTE byNewPlayIndex; //²ţ0Ч + BYTE byRes[63]; +}NET_DVR_PLAYLIST_ITEM_CTRL, *LPNET_DVR_PLAYLIST_ITEM_CTRL; +typedef struct tagNET_DVR_PLAN_ITEM +{ + NET_DVR_PLAY_ITEM struPlanPlayItem; // + NET_DVR_TIME_SEGMENT struTimeSegment; //ʱβ + BYTE byRes[16]; +} NET_DVR_PLAN_ITEM, *LPNET_DVR_PLAN_ITEM; + +typedef struct tagNET_DVR_PLAYPLAN_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿʹ, 0-ʹ !0-ʹ + BYTE byPlanMode; //ƻģʽ1-ܼƻ 2-ռƻ + BYTE byRes[2]; + NET_DVR_PLAN_ITEM struPlanItem[MAX_DAYS][MAX_TIMESEGMENT_V30]; + DWORD dwPlayPlanNo; //żƻţȡʱЧ + BYTE byPlayPlanName[NAME_LEN]; //żƻ + BYTE byRes2[32]; +} NET_DVR_PLAYPLAN_CFG, *LPNET_DVR_PLAYPLAN_CFG; +typedef struct tagNET_DVR_WINDOW_PLAYPLAN_CFG +{ + DWORD dwSize; + BYTE byEnable; //Ƿòżƻ 0- !0- + BYTE byRes[3]; + DWORD dwPlayPlanNo; //żƻ + BYTE byRes2[32]; +} NET_DVR_WINDOW_PLAYPLAN_CFG, *LPNET_DVR_WINDOW_PLAYPLAN_CFG; +typedef struct tagNET_DVR_DEV_PLAYCTRL +{ + DWORD dwSize; + BYTE byControlType; //ͣ1-Ƶ2-Ƶأ3-ֹͣţ4-ͣţָ + BYTE byRes[131]; +} NET_DVR_DEV_PLAYCTRL, *LPNET_DVR_DEV_PLAYCTRL; + +typedef union tagNET_DVR_PLAYITEM_INFO +{ + struct // + { + DWORD dwPlayItem; // + BYTE byPlayItemName[NAME_LEN]; // + BYTE byRes2[8]; + } struPlayItem; + struct //б + { + DWORD dwPlaylistNo; //б + BYTE byPlaylistName[NAME_LEN]; //б + WORD wPlayIndex; //λ + BYTE byPlayType; //бڲ 1-ͼƬ 2-Ƶ + BYTE byRes[3]; + DWORD dwPlayItem; // + BYTE byPlayItemName[NAME_LEN]; // + BYTE byRes2[16]; + } struPlaylistItem; + struct //żƻ + { + DWORD dwPlayPlanNo; //żƻ + NET_DVR_TIME_SEGMENT struTime; //ڲʱ + BYTE byPlayType; //żƻڲ 1-ͼƬ 2-Ƶ 3-б + BYTE byRes[3]; + DWORD dwPlaylistNo; //б + BYTE byPlaylistName[NAME_LEN]; //б + DWORD dwPlayItem; // + BYTE byPlayItemName[NAME_LEN]; // + WORD wPlayIndex; //λ + BYTE byRes2[18]; + } struPlayPlanItem; +}NET_DVR_PLAYITEM_INFO, *LPNET_DVR_PLAYITEM_INFO; +typedef struct tagNET_DVR_PLAYING_INFO +{ + DWORD dwSize; + BYTE byPlayWay; //ŷʽ 1- 2-б 3-żƻ 4-̬ 5-岥 + BYTE byCurPlayType; //ڲزͣ 1-ͼƬ 2-Ƶ̬ͽ岥ʱЧ + BYTE byPlayState; //״̬1-ڲţ2-ֹͣ3-ͣ + BYTE byAudioState; //Ƶ״̬0-أ1- + NET_DVR_PLAYITEM_INFO struPlayItemInfo; //Ϣ + BYTE byRes2[16]; +} NET_DVR_PLAYING_INFO, *LPNET_DVR_PLAYING_INFO; + +typedef struct tagNET_DVR_ONLINEUSER_COND //ṹ +{ + DWORD dwSize; + DWORD dwChannel;//ͨţǰĬ1 + BYTE byRes [128]; +}NET_DVR_ONLINEUSER_COND,*LPNET_DVR_ONLINEUSER_COND; + +typedef struct tagNET_DVR_ONLINEUSER_CFG //ýṹ +{ + DWORD dwSize; + BYTE byID;//ûк + BYTE byUserType;//û 0-ͨû1-Ա2-û + BYTE byDataType;//״̬:0-У1-ʼ2- + BYTE byRes; + NET_DVR_IPADDR struIpAddr;//IPַ + NET_DVR_TIME_V30 struLoginTime;//½ʱ + char szUserName[NAME_LEN/*32*/];//û + BYTE byRes1[128]; +}NET_DVR_ONLINEUSER_CFG,*LPNET_DVR_ONLINEUSER_CFG; + +//洢״̬ +typedef struct tagNET_DVR_STORAGE_DETECTION +{ + DWORD dwSize;//ṹС + BYTE byHealthState;//״̬0-ã1-2-𻵣3-δ֪ + BYTE bySDCardState;//SDcard״̬ 0-ߣ1-,2-δ֪,3- + WORD wAbnormalPowerLoss;//쳣 + WORD wBadBlocks;// + BYTE byRemainingLife; //SDʣ; 0~100% + BYTE byRes[125]; +}NET_DVR_STORAGE_DETECTION,*LPNET_DVR_STORAGE_DETECTION; + +//洢ܼⱨϴ +typedef struct tagNET_DVR_STORAGE_DETECTION_ALARM +{ + DWORD dwSize; + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + DWORD dwCardID; //ID + WORD wAbnormalPowerLoss;//쳣 + WORD wBadBlocks;// + BYTE byHealthState;//״̬0-ã1-2-𻵣3-δ֪ + BYTE byRes1[3]; + float fResidualLife; //SD Ԥʣ + BYTE byRes[118]; +}NET_DVR_STORAGE_DETECTION_ALARM,*LPNET_DVR_STORAGE_DETECTION_ALARM; + + +//洢Ķд +typedef struct tagNET_DVR_STORAGE_RWLOCK +{ + DWORD dwSize;//ṹС + BYTE byEnabled;//ʹ 0-رգ1- + BYTE byRes[3]; + char szPassWD[PASSWD_LEN/*16*/]; //д + char szOriginalPassWD[PASSWD_LEN/*16*/]; //ԭʼ + BYTE byRes1[128]; +}NET_DVR_STORAGE_RWLOCK,*LPNET_DVR_STORAGE_RWLOCK; + +//洢Ľ +typedef struct tagNET_DVR_STORAGE_UNLOCK +{ + DWORD dwSize;//ṹС + char szPassWD[PASSWD_LEN/*16*/]; // + BYTE byRes1[128]; +}NET_DVR_STORAGE_UNLOCK,*LPNET_DVR_STORAGE_UNLOCK; + + +typedef struct tagNET_DVR_PTZTRACKSTATUS +{ + DWORD dwSize;//ṹС + BYTE byID;//豸ID (ֶbyLinkageType0ʱЧ) + BYTE byLinkageType;//0-1-豸 + BYTE byRes[254]; +}NET_DVR_PTZTRACKSTATUS,*LPNET_DVR_PTZTRACKSTATUS; + +#define MAX_PROXY_COUNT 32 + +typedef struct tagNET_DVR_SOCKS_PROXY_PARA +{ + BYTE byIP[129]; //ַ + BYTE byAuthType; //֤ʽʱȲʹøֶ + WORD wPort; //˿ + BYTE byRes2[64]; //Ҫʹ֤ʽȻҪһЩֽڣһЩ +}NET_DVR_SOCKS_PROXY_PARA, *LPNET_DVR_SOCKS_PROXY_PARA; + +typedef struct tagNET_DVR_SOCKS_PROXYS +{ + NET_DVR_SOCKS_PROXY_PARA struProxy[MAX_PROXY_COUNT]; +}NET_DVR_SOCKS_PROXYS, *LPNET_DVR_SOCKS_PROXYS; + +typedef struct tagNET_DVR_GET_FIGURE_COND +{ + DWORD dwLength; //ṹ + DWORD dwChannel; //ͨ + NET_DVR_TIME_V30 struTimePoint; //ʱ + BYTE byID[STREAM_ID_LEN/*32*/]; //ID + BYTE byRes[32]; +}NET_DVR_GET_FIGURE_COND, *LPNET_DVR_GET_FIGURE_COND; + +typedef struct tagNET_DVR_FIGURE_INFO +{ + DWORD dwPicLen; //ͼƬ + char *pPicBuf; //ͼƬ +}NET_DVR_FIGURE_INFO, *LPNET_DVR_FIGURE_INFO; + +//ֶ +typedef struct tagNET_DVR_MANUALRANGING_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿֶࣺ0- 1- + BYTE byRes[127]; +}NET_DVR_MANUALRANGING_CFG,*LPNET_DVR_MANUALRANGING_CFG; + +typedef struct tagNET_DVR_VIDEO_INTERCOM_ALARM_CFG +{ + DWORD dwSize; //ṹС + BYTE byDoorNotCloseAlarm; //Ƿϴδر0-ϴ1-ϴ + BYTE byRes[603]; // +}NET_DVR_VIDEO_INTERCOM_ALARM_CFG, *LPNET_DVR_VIDEO_INTERCOM_ALARM_CFG; + +typedef struct tagNET_DVR_PACKET_INFO_EX +{ + WORD wWidth; //width + WORD wHeight; //height + DWORD dwTimeStamp; //lower time stamp + DWORD dwTimeStampHigh;//higher time stamp + DWORD dwYear; //year + DWORD dwMonth; //month + DWORD dwDay; //day + DWORD dwHour; //hour + DWORD dwMinute; //minute + DWORD dwSecond; //second + DWORD dwMillisecond; //millisecond + DWORD dwFrameNum; //frame num + DWORD dwFrameRate; //frame rate,֡С0ʱ0x80000002:ʾ1/2֡ʣͬ0x80000010Ϊ1/16֡ + DWORD dwFlag; //flag E֡ + DWORD dwFilePos; //file pos + DWORD dwPacketType; //Packet type:0 -file head1 -video I frame2- video B frame 3- video P frame 10- audio packet 11- private packet + DWORD dwPacketSize; //packet size + unsigned char* pPacketBuffer; //packet buffer + BYTE byRes1[4]; + DWORD dwPacketMode; //ʽ:0-1-FU_Aʽ + BYTE byRes2[16]; + DWORD dwReserved[6]; //reserved[0] ʾ˽ + //reserved[1] ʾ˽ݵַλ + //reserved[2] ʾ˽ݵַλ + //reserved[3] ʾ˽ݳ + //reserved[4] ˽֡/ʱ\ʱ + //reserved[5].һbitλǷΪP֡P1ΪP0; lizhonghu 20150203 +}NET_DVR_PACKET_INFO_EX, *LPNET_DVR_PACKET_INFO_EX; + +typedef BOOL(CALLBACK * DEV_WORK_STATE_CB)(void* pUserdata, int iUserID, LPNET_DVR_WORKSTATE_V40 lpWorkState); + +typedef struct tagNetDVRCheckDevState +{ + DWORD dwTimeout; //ʱ豸״̬λmsΪ0ʱʾʹĬֵ(30000)СֵΪ1000 + DEV_WORK_STATE_CB fnStateCB; + void* pUserData; + BYTE byRes[60]; +}NET_DVR_CHECK_DEV_STATE,*LPNET_DVR_CHECK_DEV_STATE; + +#define COURSE_NAME_LEN_128 128 //γ +#define INSTRUCTOR_NAME_LEN_64 64 //ڿνʦ +#define MAX_UUID_LEN 64 //ֶγUUID + +//ȡṹ +typedef struct tagNET_DVR_COURSE_LIST_COND +{ + DWORD dwSize; + NET_DVR_TIME_V30 struStartTime; //γ̿ʼʱ + NET_DVR_TIME_V30 struEndTime; //γ̽ʱ + BYTE byCourseName[COURSE_NAME_LEN_128]; //γ + BYTE byInstructorName[INSTRUCTOR_NAME_LEN_64]; //ڿʦ + BYTE byCourseType; //αͣ0-ȫ1-ֶ + BYTE byRes[603]; +}NET_DVR_COURSE_LIST_COND,*LPNET_DVR_COURSE_LIST_COND; + +typedef struct tagNET_DVR_COURSE_CFG +{ + DWORD dwSize; + NET_DVR_TIME_V30 struStartTime; //γ̿ʼʱ + NET_DVR_TIME_V30 struEndTime; //γ̿ʼʱ + BYTE byCourseName[COURSE_NAME_LEN_128]; + BYTE byInstructorName[INSTRUCTOR_NAME_LEN_64]; + BYTE byCourseDescription[COURSE_DESCRIPTION_LEN /*256*/]; + BYTE byRecUUID[MAX_UUID_LEN/*64*/]; //ֶαUUID + BYTE byCourseType;//αͣ0-ȫ1-ֶα + BYTE byRes[303]; +}NET_DVR_COURSE_CFG, *LPNET_DVR_COURSE_CFG; + +typedef struct tagNET_DVR_RECORD_STATUS +{ + DWORD dwSize; //ṹС + BYTE byRecUUID[MAX_UUID_LEN/*64*/]; //ֶαUUID + BYTE byRecordStatus; //¼״̬0-ͣ1-,2-¼3- + BYTE byRes1[3]; //ֽ + DWORD dwRecordingTime; //¼ʱλ룬Ϊ12*60*60 + BYTE byRes[596]; //ֽ +}NET_DVR_RECORD_STATUS, *LPNET_DVR_RECORD_STATUS; + +typedef struct tagNET_DVR_MANUAL_CURRICULUM_CFG +{ + DWORD dwSize; //ṹС + BYTE byRecUUID[MAX_UUID_LEN/*64*/]; //ֶαUUID + BYTE byCourseName[COURSE_NAME_LEN_128]; //γ + BYTE byInstructorName[INSTRUCTOR_NAME_LEN_64]; //ڿʦ + BYTE byCourseDescription[COURSE_DESCRIPTION_LEN /*256*/]; + BYTE byCmdType; //0-ʼ¼ 1- 2-ͣ 3-,4-ʼΣ5- + BYTE byRes[303]; //ֽ +}NET_DVR_MANUAL_CURRICULUM_CFG, *LPNET_DVR_MANUAL_CURRICULUM_CFG; + +typedef struct tagNET_DVR_IMAGE_DIFF_DETECTION_CFG +{ + DWORD dwSize; //ṹС + NET_VCA_POLYGON struRegion; //Χ + BYTE byEnabled; //Ƿã0-ã1- + BYTE byThreshold; //ֵ[0,100] + BYTE bySensitivity; // [0,100] + BYTE byVideoInputType; //Ƶͣ0-Զ1-HDMI2-VGA + BYTE byRes[300]; //ֽ +}NET_DVR_IMAGE_DIFF_DETECTION_CFG, *LPNET_DVR_IMAGE_DIFF_DETECTION_CFG; + +typedef struct tagNET_DVR_RECORDING_PUBLISH_FILE_COND +{ + DWORD dwSize; + DWORD dwChannel; + BYTE byFileID[MAX_ID_LEN_128/*128*/]; //ļID + BYTE byRes[300]; +}NET_DVR_RECORDING_PUBLISH_FILE_COND, *LPNET_DVR_RECORDING_PUBLISH_FILE_COND; + +typedef struct tagNET_DVR_RECORDING_PUBLISH_FILE_INFO +{ + DWORD dwSize; + NET_DVR_TIME_V30 struStartTime; //γ̿ʼʱ + NET_DVR_TIME_V30 struEndTime; //γ̿ʼʱ + BYTE byCourseName[COURSE_NAME_LEN_128]; + BYTE byInstructorName[INSTRUCTOR_NAME_LEN_64]; + BYTE byCourseDescription[COURSE_DESCRIPTION_LEN /*256*/]; + BYTE byRes[300]; //ֽ +}NET_DVR_RECORDING_PUBLISH_FILE_INFO, *LPNET_DVR_RECORDING_PUBLISH_FILE_INFO; + +//Ļ +typedef struct tagNET_DVR_SCREEN_POINT +{ + WORD wX; //X + WORD wY; //Y +}NET_DVR_SCREEN_POINT,*LPNET_DVR_SCREEN_POINT; + +typedef struct tagNET_DVR_MOUSE_PARAM +{ + BYTE byMouseEvent; //¼1-£2-ɿ3-Ҽ£4-Ҽɿ + //5-ƶ6-7-˫8-Ҽ9-ְ£ + //10-ɿ11-£12- + BYTE byRes1[3]; + NET_DVR_SCREEN_POINT struMousePoint; //Ϣ + BYTE byRes2[8]; +}NET_DVR_MOUSE_PARAM, *LPNET_DVR_MOUSE_PARAM; + +typedef struct tagNET_DVR_MARK_PARAM +{ + BYTE byMarkEvent; //ע¼1-ע2-ע3-±ע״̬ + BYTE byMarkTool; //עߣ0-Ч1-ʣ2-Ƥע¼Ϊ1ʱЧ + BYTE byLineWidth; //ϸ0-Ч1-ϸ2-У3-֣ע¼Ϊ1ʱЧ + BYTE byMouseEvent; //¼ע¼Ϊ1ʱЧ0-Ч1-£2-ɿ3-ƶ + NET_DVR_RGB_COLOR struColor; //עɫעΪʱЧ + NET_DVR_SCREEN_POINT struPoint; //עϢ + BYTE byRes[4]; +}NET_DVR_MARK_PARAM, *LPNET_DVR_MARK_PARAM; + +typedef struct tagNET_DVR_KEYBOARD_PARM +{ + DWORD dwKeyValue; //ʹASCIIеֵⰴȷ + BYTE byRes[12]; +}NET_DVR_KEYBOARD_PARAM, *LPNET_DVR_KEYBOARD_PARAM; + +typedef struct tagNET_DVR_PPT_PARAM +{ + BYTE byPPTAction; //PPT1-򿪷ӳ2-ֹͣӳ3-һ4-һ + //5-һҳ6-һҳ7-Xҳ8-ʿ9-ʹأ10-ƶ + BYTE byRes1[3]; + NET_DVR_SCREEN_POINT struPoint; //ϢPPTΪ10ʱЧ + DWORD dwPPTNo; //PPTҳPPTΪ7ʱЧ + BYTE byRes2[4]; +}NET_DVR_PPT_PARAM, *LPNET_DVR_PPT_PARAM; + +typedef struct tagNET_DVR_REMOTE_CTRL_PARAM +{ + BYTE byRemoteCtrlCmd; //Զ̿1-лöڣ2-رĻǰڣ3-ļ4-رļ5-ɾļ6-ػ7-ʾ棬8- + BYTE byRes1[3]; + DWORD dwCtrlParam; //byRemoteCtrlCmdΪ345ʱʾļbyRemoteCtrlCmdΪ8ʱʾͣ0-Ч1- + BYTE byRes2[8]; +}NET_DVR_REMOTE_CTRL_PARAM, *LPNET_DVR_REMOTE_CTRL_PARAM; + +typedef struct tagNET_DVR_SPOTLIGHT_PARAM +{ + BYTE byCmd; //۹0-رվ۹ƣ1-۹ƣ2-۹λƶ + BYTE byRes1[3]; + NET_DVR_SCREEN_POINT struPoint; //۹ĵ꣬۹λƶʱЧ + DWORD dwRadius; //۹ư뾶 + BYTE byRes2[4]; +} NET_DVR_SPOTLIGHT_PARAM, *LPNET_DVR_SPOTLIGHT_PARAM; + +typedef struct tagNET_DVR_TOUCHPAD_PARAM +{ + BYTE byMouseEvent; //¼1-£2-ɿ3-Ҽ£4-Ҽɿ + //5-ƶ6-7-˫8-Ҽ9-ְ£ + //10-ɿ11-£12- + BYTE byRes1[3]; + int iXDisplacement; //XλƣʾƶʾƶƶʱЧ + int iYDisplacement; //YλƣʾƶʾƶƶʱЧ + BYTE byRes2[4]; +}NET_DVR_TOUCHPAD_PARAM, *LPNET_DVR_TOUCHPAD_PARAM; + +typedef struct tagNET_DVR_MEDIA_LIST_PARAM +{ + BYTE byOperateCmd; //1-ʾͼƬزģ2-ʾƵزģ3-ʾpptزģ4-رնýļ + BYTE byRes[15]; +}NET_DVR_MEDIA_LIST_PARAM, *LPNET_DVR_MEDIA_LIST_PARAM; + +typedef union tagNET_DVR_SCREEN_CTRL_PARAM +{ + NET_DVR_MOUSE_PARAM struMouseParam; //Ϊ1ʱЧ + NET_DVR_MARK_PARAM struMarkParam; //עΪ2ʱЧ + NET_DVR_KEYBOARD_PARAM struKeyboardInfo; //̲Ϊ3ʱЧ + NET_DVR_PPT_PARAM struPPTParam; //PPTΪ4ʱЧ + NET_DVR_REMOTE_CTRL_PARAM struRemoteCtrlParam; //Զ̲Ϊ5ʱЧ + NET_DVR_SPOTLIGHT_PARAM struSpotLight; //۹ƲΪ6ʱЧ + NET_DVR_TOUCHPAD_PARAM struTouchPadParam; //Ϊ7ʱЧ + NET_DVR_MEDIA_LIST_PARAM struMediaListParam; //ýΪ8ʱЧ + BYTE byRes[16]; +}NET_DVR_SCREEN_CTRL_PARAM, *LPNET_DVR_SCREEN_CTRL_PARAM; + +typedef struct tagNET_DVR_SCREEN_CTRL_CMD +{ + DWORD dwSize; + BYTE byCmdType; //ͣ1-꣬2-ע3-̣4-PPT5-Զ̲6-۹ƣ7-ذ壬8-ʾý + BYTE byRes1[3]; + NET_DVR_SCREEN_CTRL_PARAM struScreenCtrlParam; //ĻƲ +}NET_DVR_SCREEN_CTRL_CMD, *LPNET_DVR_SCREEN_CTRL_CMD; + +typedef struct tagNET_DVR_FILE_RESPONSE_PARAM +{ + BYTE byFileState; //ļ״̬1-ļڣ2-ļʧܣ3-ļɹ + BYTE byRes1[3]; + DWORD dwErrorFileIndex; //ļļֵ + BYTE byRes2[24]; +} NET_DVR_FILE_RESPONSE_PARAM, *LPNET_DVR_FILE_RESPONSE_PARAM; + +typedef struct tagNET_DVR_PPT_RESPONSE_PARAM +{ + BYTE byCurrentState; //ǰPPT״̬1 - ڷӳ2 - ӳֹͣ3 - PPTѹرգ4 - pptܱԤͼʧܣ5 - 򿪷ӳɹ6 - 򿪷ӳʧܣ7 - pptΪգ8 - ͼʧܣ9 - ͼɳɹ + BYTE byRes1[3]; + DWORD dwCurrentPage; //PPTҳPPT״̬Ϊ1,7,8ʱЧ + DWORD dwFileIndex; //PPTļֵ + DWORD dwTotalPageNum; //PPTҳPPT״̬Ϊ5ʱЧ + BYTE byRes2[16]; +}NET_DVR_PPT_RESPONSE_PARAM, *LPNET_DVR_PPT_RESPONSE_PARAM; + +typedef union tagNET_DVR_SCREEN_RESPONSE_PARAM +{ + BYTE byRes[32]; + NET_DVR_PPT_RESPONSE_PARAM struPPTParam; //PPT + NET_DVR_FILE_RESPONSE_PARAM struFileParam; //ļӦ +}NET_DVR_SCREEN_RESPONSE_PARAM,*LPNET_DVR_SCREEN_RESPONSE_PARAM; + +typedef struct tagNET_DVR_SCREEN_RESPONSE_CMD +{ + DWORD dwSize; + BYTE byResponseCmd; //ĻӦͣ1-PPT2-ļ + BYTE byRes1[3]; + NET_DVR_SCREEN_RESPONSE_PARAM struResonseParam; //ĻӦ + BYTE byRes2[16]; +}NET_DVR_SCREEN_RESPONSE_CMD, *LPNET_DVR_SCREEN_RESPONSE_CMD; + +typedef struct tagNET_DVR_SCREEN_FILE_COND +{ + DWORD dwSize; + BYTE byFileType; //ļͣ1-ͼƬ2-Ƶ3-ĵ0xff-ļ + BYTE byRes[127]; +}NET_DVR_SCREEN_FILE_COND, *LPNET_DVR_SCREEN_FILE_COND; + +typedef struct tagNET_DVR_SCREEN_FILE_INFO +{ + DWORD dwSize; + DWORD dwFileIndex; //ļȫΨһ + BYTE byFileType; //ļͣ1-ͼƬ2-Ƶ3-ĵ4- + BYTE byPictureFormat; //ͼƬʽļΪͼƬʱЧ1-bmp,2-jpeg,3-png,4-swf,5-gif + BYTE byVideoFormat; //ƵʽļΪƵʱЧ1-avi,2-wmv,3-mp4,4-flv,5-vod,6-mkv,7-rmvb + BYTE byDocumentFormat; //ĵʽ0-ppt1-txt2-doc3-xlsļΪ3ʱЧ + BYTE byFileName[NET_SDK_MAX_FILE_PATH]; //Ļļ + DWORD dwFileSize; //ļСλֽ + DWORD dwPPTPage; //pptҳֵȡѴ򿪵PPTļϢʱЧ + BYTE byOtherFileFormat[8]; //͵ļĸʽ.dat.dllȣļΪ4ʱЧ + BYTE byRes1[56]; +}NET_DVR_SCREEN_FILE_INFO, *LPNET_DVR_SCREEN_FILE_INFO; + +typedef struct tagNET_DVR_SCREEN_CONFIG +{ + DWORD dwSize; + BYTE byVolume; //0-100 + BYTE byContrast; //Աȶȣ0-100 + BYTE byBrightness; //ȣ0-100 + BYTE byScreenShowEnabled; //Ļʾ0-أ0- + BYTE byScreenLocked; //Ļ0-0- + BYTE byBlackScreenEnabled; //Ļ0-ȡ0- + BYTE byRes[30]; +}NET_DVR_SCREEN_CONFIG, *LPNET_DVR_SCREEN_CONFIG; + +typedef struct tagNET_DVR_SCREEM_FILE_UPLOAD_PARAM +{ + DWORD dwSize; + BYTE byFileType; //ļͣ1-ͼƬ2-Ƶ3-ĵ4- + BYTE byPictureFormat; //ͼƬʽ1-BMP2-JPEG3-PNG4-SWF5-GIFļΪ1ʱЧ + BYTE byVideoFormat; //Ƶʽ1-AVI2-WMV3-MP44-FLV5-VOD6-MKV7-RMVBļΪ2ʱЧ + BYTE byDocumentFormat; //ĵʽ0-ppt1-txt2-doc3-xlsļΪ3ʱЧ + BYTE byFileName[NET_SDK_MAX_FILE_PATH]; //ļ + BYTE byOtherFileFormat[8]; //͵ļĸʽ.dat.dllȣļΪ4ʱЧ + BYTE byRes1[56]; +}NET_DVR_SCREEM_FILE_UPLOAD_PARAM, *LPNET_DVR_SCREEM_FILE_UPLOAD_PARAM; + +typedef struct tagNET_DVR_SCREEM_FILE_DOWNLOAD_PARAM +{ + DWORD dwSize; + DWORD dwFileIndex; //ļ + DWORD dwPPTPageNo; //PPTҳͼƬʱЧΪ0ʾPPTֵʾPPTҳֵ + BYTE byRes2[64]; +}NET_DVR_SCREEM_FILE_DOWNLOAD_PARAM, *LPNET_DVR_SCREEM_FILE_DOWNLOAD_PARAM; + +typedef struct tagNET_DVR_TV_SCREEN_COND +{ + DWORD dwSize;//ṹ + DWORD dwChannel;//ͨ + WORD wTVScreenNo;// 0-ȫ + BYTE byRes[62]; // +}NET_DVR_TV_SCREEN_COND, *LPNET_DVR_TV_SCREEN_COND; + +typedef struct tagNET_DVR_TV_SCREEN_CFG +{ + DWORD dwSize;//ṹ + DWORD dwPicStayTime;//ͣʱ 0~255s + BYTE byRes[256]; // +}NET_DVR_TV_SCREEN_CFG, *LPNET_DVR_TV_SCREEN_CFG; + +//ȡ豸ץȡͼƬ͸Ϣṹ +typedef struct tagNET_DVR_BV_CALIB_COND +{ + DWORD dwSize; //ṹ + DWORD dwChannels; //ͨ + BYTE byRes[300]; // +}NET_DVR_BV_CALIB_COND, *LPNET_DVR_BV_CALIB_COND; + +typedef struct tagNET_DVR_BV_CALIB_PIC +{ + DWORD dwSize; //ṹ + DWORD dwPicID; + DWORD dwPicLen1;//ͼƬ1 + DWORD dwPicLen2;//ͼƬ2 + char* pPicBuffer1;//ͼƬ + char* pPicBuffer2;//ͼƬ + BYTE byRes[600]; // +}NET_DVR_BV_CALIB_PIC, *LPNET_DVR_BV_CALIB_PIC; + + +//ȡ˫Ŀα궨 +typedef struct tagNET_DVR_BV_CALIB_PARAM +{ + DWORD dwPicID; + NET_VCA_POINT struPoint;//ü + BYTE byRes[32]; // +}NET_DVR_BV_CALIB_PARAM, *LPNET_DVR_BV_CALIB_PARAM; + +typedef struct tagNET_DVR_BV_CALIB_INFO +{ + DWORD dwSize; //ṹ + DWORD dwBVCalibNumber; // + NET_DVR_BV_CALIB_PARAM struBVCalibParam[12]; + DWORD dwHumanHeight; //ʵߣλcm + DWORD dwChannel; //ͨ + BYTE byRes[300]; // +}NET_DVR_BV_CALIB_INFO, *LPNET_DVR_BV_CALIB_INFO; + +typedef struct tagNET_DVR_BV_CALIB_RESULT +{ + DWORD dwSize; //ṹ + DWORD dwCameraHeight; //߶ȣλcm + float fPitchAngle; //ӽǶ[0, 60], + 360* 1000 + float fInclineAngle; //бǶ[-20,20] + 360 * 1000 + BYTE byRes[300]; // +}NET_DVR_BV_CALIB_RESULT, *LPNET_DVR_BV_CALIB_RESULT; + +//ȡ˫Ŀ߶Ƚ +typedef struct tagNET_DVR_BV_HCORRECTION_COND +{ + DWORD dwSize; //ṹ + DWORD dwChannels; //ͨ + DWORD dwPicID; + BYTE byRes[300]; // +}NET_DVR_BV_HCORRECTION_COND, *LPNET_DVR_BV_HCORRECTION_COND; + +typedef struct tagNET_DVR_BV_HCORRECTION_CFG +{ + DWORD dwSize; //ṹ + DWORD dwHumanHeight; //ʵߣλcm + BYTE byRes[300]; // +}NET_DVR_BV_HCORRECTION_CFG, *LPNET_DVR_BV_HCORRECTION_CFG; + + +// +typedef struct tagNET_DVR_TMEVOICE_CFG +{ + DWORD dwSize;//ṹС + BYTE byVoiceSpeed;// 0~100 + BYTE byVoicePitch; // 0~100 + BYTE byVoiceVolum; //0~100 + BYTE byVoicePlateEnable;//ʹ ,0~رգ1~ + /*ࣻ + 3 = Xiaoyan (female, Chinese) + 51 = Jiu Xu (male, Chinese) + 52 = Duo Xu (male, Chinese) + 53 = Xiaoping (female, Chinese) + 54 = Donald Duck (male, Chinese) + 55 = Baby Xu (child, Chinese) + */ + DWORD dwVoiceRole; // + char sInfo[MAX_TMEVOICE_LEN/*64*/]; //ݣѹȦݣ + char sFileName[MAX_TMEVOICE_LEN/*64*/]; //ļ + BYTE byRes[64]; +}NET_DVR_TMEVOICE_CFG,*LPNET_DVR_TMEVOICE_CFG; + +// +typedef struct tagNET_DVR_INPUT_BOARD_CFG +{ + DWORD dwSize; + DWORD dwSlotNo; //λ + BYTE byFullFrameEnable; //Ƿȫ֡ʳԣ0-1- + BYTE byRes[3]; //ֽڶ + BYTE byRes1[64]; // +}NET_DVR_INPUT_BOARD_CFG, *LPNET_DVR_INPUT_BOARD_CFG; + +typedef struct tagNET_DVR_INPUT_BOARD_CFG_LIST +{ + DWORD dwSize; + NET_DVR_INPUT_BOARD_CFG struBoardList[MAX_NUM_INPUT_BOARD]; //Ϣб +}NET_DVR_INPUT_BOARD_CFG_LIST, *LPNET_DVR_INPUT_BOARD_CFG_LIST; + +/******************************ȫƵϢȫ begin******************************************/ +//ȡ豸Ϣṹ +typedef struct _NET_DVR_ENCRYPT_DEVICE_COND +{ + DWORD dwSize; //ṹС + DWORD dwChannel; //ͨ + BYTE byAlgorithm; //㷨0-1-RSA,2-SM2 + BYTE byModelLen; //ģ0-1-1024λ,2-2048λ,3-256λ + BYTE byCERTSaveLocation; //֤鱣λã豸صѡ0-1-оƬ(ͨUSB豸),2-豸 + BYTE byRes[29]; +}NET_DVR_ENCRYPT_DEVICE_COND, *LPNET_DVR_ENCRYPT_DEVICE_COND; +//ȡ豸Ϣṹ +typedef struct _NET_DVR_ENCRYPT_DEVICE_INFO +{ + DWORD dwSize; //ṹС + BYTE byAlgorithm; //㷨0-1-RSA,2-SM2 + BYTE byModelLen; //ģ0-1-1024λ,2-2048λ,3-256λ + BYTE byRes1[30]; // + DWORD dwPublicKeyLen; //Կ + char szPublicKey[MAX_PUBLIC_KEY_LEN]; //Կ + char szChipSerialNumber[CHIP_SERIALNO_LEN]; //оƬк + char szDeviceID[ENCRYPT_DEV_ID_LEN]; //豸ID + BYTE byRes2[128]; +}NET_DVR_ENCRYPT_DEVICE_INFO, *LPNET_DVR_ENCRYPT_DEVICE_INFO; +//֤ṹ +typedef struct _NET_DVR_ENCRYPT_CERT_PARAM +{ + DWORD dwSize; + WORD wCertType; //֤ͣ0-CA֤飬1-ǩ֤,2-֤飬3- SM2Կ + BYTE byRes1[2]; // + DWORD dwCertLen; //֤鳤 + BYTE byRes2[32]; + char* pCertBuf; //֤黺 +}NET_DVR_ENCRYPT_CERT_PARAM, *LPNET_DVR_ENCRYPT_CERT_PARAM; +/******************************ȫƵϢȫ end******************************************/ +#define MAX_RING_NAME_LEN_128 128 //Ƴ +typedef struct tagNET_DVR_RING_UPLOAD_CFG +{ + DWORD dwSize; + DWORD dwRingID; //ţ[1,8] + BYTE byRingName[MAX_RING_NAME_LEN_128/*128*/]; // + DWORD dwRingSize; //ļС + BYTE byRingType; //ͣ0-wav + BYTE byRes[363]; +}NET_DVR_RING_UPLOAD_CFG,*LPNET_DVR_RING_UPLOAD_CFG; + +typedef struct tagNET_DVR_RING_SEARCH_COND +{ + DWORD dwSize; + DWORD dwRingID; //ţɵʽңô˲Ϊ0ʾŲ + BYTE byRes[300]; +}NET_DVR_RING_SEARCH_COND,*LPNET_DVR_RING_SEARCH_COND; + +typedef struct tagNET_DVR_RING_SEARCH_CFG +{ + DWORD dwSize; + DWORD dwRingID; //ţ[1,8] + BYTE byRingName[MAX_RING_NAME_LEN_128/*128*/]; // + DWORD dwRingSize; //ļС + BYTE byRingType; //ͣ0-wav + BYTE byRes[303]; +}NET_DVR_RING_SEARCH_CFG,*LPNET_DVR_RING_SEARCH_CFG; + +// +typedef struct tagNET_DVR_ALARMCTRL_CFG +{ + DWORD dwSize; + BYTE byListenPicUploadEnabled;//ͼƬϴʹ + BYTE byRes [259]; +}NET_DVR_ALARMCTRL_CFG,*LPNET_DVR_ALARMCTRL_CFG; + +typedef struct tagNET_DVR_VEHICLEFLOW_COND +{ + DWORD dwSize; + DWORD dwChannel;//ͨ + BYTE byLane;//ţ1~6,0Ϊг + BYTE byRes1[3]; + NET_DVR_TIME_V30 struStartTime;//ʼʱ + NET_DVR_TIME_V30 struEndTime;//ʱ + BYTE byRes[256]; +}NET_DVR_VEHICLEFLOW_COND, *LPNET_DVR_VEHICLEFLOW_COND; + +typedef struct tagNET_DVR_VEHICLEFLOW_INFO +{ + DWORD dwVehicleFlowValue;//Ϊһʱڵ + BYTE byRes[64]; +}NET_DVR_VEHICLEFLOW_INFO, *LPNET_DVR_VEHICLEFLOW_INFO; + +typedef struct tagNET_DVR_VEHICLEFLOW_CFG +{ + DWORD dwSize; + NET_DVR_VEHICLEFLOW_INFO struVehFlow[MAX_VEHICLEFLOW_INFO/*24*/]; + BYTE byRes[512]; +}NET_DVR_VEHICLEFLOW_CFG, *LPNET_DVR_VEHICLEFLOW_CFG; + +//ṹ +typedef struct tagNET_DVR_IPADDR_FILTER_COND +{ + DWORD dwSize; + DWORD dwChannel;//ͨ + BYTE byRes[64]; +}NET_DVR_IPADDR_FILTER_COND, *LPNET_DVR_IPADDR_FILTER_COND; + +typedef struct tagNET_DVR_TEMPHUMSENSOR +{ + DWORD dwSize;//ṹ峤 + BYTE byEnable;//ʹ 0-أ1- + BYTE byCtrlMode;//ģʽ 0-¶ֵƣ1-ʪֵƣ2-ʪֵ + BYTE byTemperatureValue;//¶ֵ0~100϶,ģʽΪ02ʱЧ + BYTE byHumidityValue;//ʪֵ0~100ģʽΪ12ʱЧ + BYTE byFanSwitch;//ȿأ0-أ1- + BYTE byThermometryUnit;//µλ: 0-϶ȣ棩1-϶ȣH2-(K) + BYTE byRes[62]; +}NET_DVR_TEMPHUMSENSOR, *LPNET_DVR_TEMPHUMSENSOR; + +//״ +typedef struct tagNET_DVR_POSTRADARSPEED_CFG +{ + DWORD dwSize;//ṹС + BYTE byLaneType; //·ͣ0~δ,1~ٹ·,2~п·,0xff~· + BYTE byRes1[3]; + DWORD dwInterval; //ץļλms + DWORD dwSignSpeed;//־(С)λkm/h + DWORD dwSpeedLimit;//ֵ(С)λkm/h + DWORD dwBigCarSignSpeed;//־()λkm/h + DWORD dwBigCarSpeedLimit;//ֵ󳵣λkm/h + DWORD dwLowSpeedLimit;// С޵٣λkm/h + DWORD dwBigCarLowSpeedLimit;// ޵٣λkm/h + BYTE byCheckPostEnabled; //ÿץ + BYTE byOverSpeedEnabled; //óץ + BYTE byRes[246]; +}NET_DVR_POSTRADARSPEED_CFG, *LPNET_DVR_POSTRADARSPEED_CFG; + +//״ +typedef struct tagNET_DVR_POSTRADARPARAM_CFG +{ + DWORD dwSize;//ṹС + BYTE bySoftWareVersion[32];//汾 ֻ + BYTE byID; //ں + BYTE byWorkMode; //ģʽ0~,1~ͷ,2~β,3~Ѳ߳β,4~˫,0xff~ + BYTE bySpeedType; //ٶȸʽ0~ֽ,1~˫ֽ,2~ֽ,0xff~ + BYTE byDirectionFilter; //ˣ0~,1~,2~ȥ + DWORD dwAngleCorrect;//Ƕ[0,70] + DWORD dwSensitivity;// [11,240] + DWORD dwSpeedLowLimit;// [1,150km/h] + DWORD dwTrigDistance;// [0,40m] + BYTE byRes[256]; +}NET_DVR_POSTRADARPARAM_CFG, *LPNET_DVR_POSTRADARPARAM_CFG; + +typedef struct tagNET_DVR_CLOUD_URL_COND +{ + DWORD dwSize; + BYTE byType; //0-1- OneDrive 2-GoogleDrive 3-DropBox + BYTE byRes[63]; +}NET_DVR_CLOUD_URL_COND, *LPNET_DVR_CLOUD_URL_COND; + +typedef struct tagNET_DVR_CLOUD_URL +{ + DWORD dwSize; + char szURL[256]; //ƴ洢URL + BYTE byRes[256]; +}NET_DVR_CLOUD_URL, *LPNET_DVR_CLOUD_URL; + +typedef struct tagNET_DVR_CLOUD_CFG +{ + DWORD dwSize; + BYTE byEnable; //0-1- + BYTE byType; //0-1- OneDrive 2-GoogleDrive 3-DropBox + BYTE byStatus; //״ֻ̬ 0- 1- 2- + BYTE byRes1; + char szAuthCode[CODE_LEN]; //Ȩ + char szAlias[ALIAS_LEN]; //ֻ + INT64 i64TotalCapability; //ֻλMB + INT64 i64UsedSpace; //ֻλMB + BYTE byRes2[256]; +}NET_DVR_CLOUD_CFG, *LPNET_DVR_CLOUD_CFG; + +typedef struct tagNET_DVR_CLOUD_UPLOADSTRATEGY_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + BYTE byRes[254]; //ΪʹID +}NET_DVR_CLOUD_UPLOADSTRATEGY_COND, *LPNET_DVR_CLOUD_UPLOADSTRATEGY_COND; + +typedef struct tagNET_DVR_CLOUD_UPLOADSTRATEGY +{ + DWORD dwSize; + BYTE byStrategyType; //0-壬1-¼2-ͼƬ + BYTE byRes1[3]; + DWORD dwRecordType; //byStrategyType Ϊ1ʱЧλʾ + /*0x00: */ + /*0x01: ȫ¼*/ + /*0x02: ƶ*/ + /*0x04: ź*/ + /*0x08: */ + BYTE byRes[256]; +}NET_DVR_CLOUD_UPLOADSTRATEGY, *LPNET_DVR_CLOUD_UPLOADSTRATEGY; + +//¼Լ +typedef struct tagNET_DVR_RECORD_CHECK_COND +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struStreamInfo; + BYTE byCheckType; //ⷽʽ,0--¼Ƿ,1--¼Ƿ&ȱʧ¼ֹʱ + BYTE byRes1[3]; + NET_DVR_TIME_EX struBeginTime; //¼Ŀʼʱ + NET_DVR_TIME_EX struEndTime; //¼Ľʱ + BYTE byRes[128]; +}NET_DVR_RECORD_CHECK_COND, *LPNET_DVR_RECORD_CHECK_COND; + +//¼Լ +typedef struct tagNET_DVR_RECORD_CHECK_RET +{ + DWORD dwSize; + BYTE byRecordNotComplete; //¼Ƿ0--,1-- + BYTE byRes1[3]; + NET_DVR_TIME_EX struBeginTime; //ȱʧ¼Ŀʼʱ䣬byCheckTypebyRecordNotCompleteֵΪ1ʱЧ + NET_DVR_TIME_EX struEndTime; //ȱʧ¼Ľʱ䣬byCheckTypebyRecordNotCompleteֵΪ1ʱЧ + BYTE byRes[128]; +}NET_DVR_RECORD_CHECK_RET, *LPNET_DVR_RECORD_CHECK_RET; + +//ֶش +typedef struct tagNET_DVR_ADD_RECORD_PASSBACK_MANUAL_COND +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struStreamInfo; + BYTE byRes[128]; +}NET_DVR_ADD_RECORD_PASSBACK_MANUAL_COND, *LPNET_DVR_ADD_RECORD_PASSBACK_MANUAL_COND; + +//ֶش +typedef struct tagNET_DVR_ADD_RECORD_PASSBACK_MANUAL_CFG +{ + DWORD dwSize; + NET_DVR_TIME_EX struBeginTime; //ش¼ʼʱ + NET_DVR_TIME_EX struEndTime; //ش¼ʱ + BYTE byRes[128]; +}NET_DVR_ADD_RECORD_PASSBACK_MANUAL_CFG, *LPNET_DVR_ADD_RECORD_PASSBACK_MANUAL_CFG; + +//ش +typedef struct tagNET_DVR_RECORD_PASSBACK_TASK_CFG +{ + DWORD dwSize; + DWORD dwTaskID; //ID + BYTE byRes[160]; +}NET_DVR_RECORD_PASSBACK_TASK_CFG, *LPNET_DVR_RECORD_PASSBACK_TASK_CFG; + +//ȡֶش +typedef struct tagNET_DVR_RECORD_PASSBACK_MANUAL_COND +{ + DWORD dwSize; + BYTE byType; //ȡʽ,0--ȡȫʣ1--IDȡʣ, 2--ȡȫ3--IDȡ4IDȡ + BYTE byTimeSegmentQuety; //Ƿʱ䷶Χѯ0-ã1- + BYTE byRes1[2]; // + NET_DVR_STREAM_INFO struStreamInfo; //idϢ72ֽڣIDȡʣʱЧ + NET_DVR_TIME_EX struBeginTime; //ѯʼʱ䣬byTimeSegmentQuetyʱЧ + NET_DVR_TIME_EX struEndTime; //ѯʱ䣬byTimeSegmentQuetyʱЧ + DWORD dwTaskID; //ID, byType4ʱЧ + BYTE byRes[108]; // +}NET_DVR_RECORD_PASSBACK_MANUAL_COND, *LPNET_DVR_RECORD_PASSBACK_MANUAL_COND; + +//ȡֶش +typedef struct tagNET_DVR_RECORD_PASSBACK_MANUAL_TASK_RET +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struStreamInfo; //idϢ72ֽڣIDȡʣʱЧ + DWORD dwTaskID; //ID + NET_DVR_TIME_EX struStartTime; //ش¼ʼʱ + NET_DVR_TIME_EX struStopTime; //ش¼ʱ + BYTE byTaskStatus; //״̬0--δִУ1--ͣУ2--ִ, 3--ش, 4--شʧ, 5--ִгɹֻش˲¼, 6--ִгɹǰ¼ + BYTE byRes1[3]; + NET_DVR_TIME_EX struExecuteStartTime;//ʵִпʼʱ䣬byTaskStatusΪ12Ч + NET_DVR_TIME_EX struExecuteStopTime;//ʵִнʱ䣬byTaskStatusΪ2Ч + BYTE byRes[128]; // +}NET_DVR_RECORD_PASSBACK_MANUAL_TASK_RET, *LPNET_DVR_RECORD_PASSBACK_MANUAL_TASK_RET; + +//ֶش +typedef struct tagNET_DVR_RECORD_PASSBACK_MANUAL_CTRL +{ + DWORD dwSize; + BYTE byControlType; //Ʒʽ,0--ֶͣ1--ֶָ + BYTE byRes[131]; // +}NET_DVR_RECORD_PASSBACK_MANUAL_CTRL, *LPNET_DVR_RECORD_PASSBACK_MANUAL_CTRL; + +//ɾֶش +typedef struct tagNET_DVR_DEL_RECORD_PASSBACK_MANUAL_COND +{ + DWORD dwSize; + BYTE byDelType; //ɾʽ,0--IDɾ1--IDɾ2--ɾȫ + BYTE byRes[131]; // +}NET_DVR_DEL_RECORD_PASSBACK_MANUAL_COND, *LPNET_DVR_DEL_RECORD_PASSBACK_MANUAL_COND; + +//ɾֶش +typedef struct tagNET_DVR_DEL_RECORD_PASSBACK_MANUAL_CFG +{ + DWORD dwSize; + DWORD dwTaskID; //ֶشIDIDɾʱЧ + NET_DVR_STREAM_INFO struStreamInfo; //idϢ72ֽڣIDɾʱЧ + BYTE byRes[128]; // +}NET_DVR_DEL_RECORD_PASSBACK_MANUAL_CFG, *LPNET_DVR_DEL_RECORD_PASSBACK_MANUAL_CFG; + +typedef struct tagNET_DVR_PASSBACK_DAY +{ + BYTE byAllDay; //Ƿȫش + BYTE byRes[3]; // +}NET_DVR_PASSBACK_DAY, *LPNET_DVR_PASSBACK_DAY; + +typedef struct tagNET_DVR_PASSBACK_SCHED +{ + NET_DVR_SCHEDTIME struPassBackTime; //شʱΣʼʱ-ʱ + BYTE byRes[4]; // +}NET_DVR_PASSBACK_SCHED, *LPNET_DVR_PASSBACK_SCHED; + +//¼شƻ +typedef struct tagNET_DVR_RECORD_PASSBACK_SCH_CFG_ +{ + DWORD dwSize; + BYTE byEnable; //Ƿã0--ã1-- + BYTE byPassBackWeek; //Ƿܻش0--1--ǣֵΪ1ʱstruPassBackDaystruPassBackSchedЧ + BYTE byRes1[2]; // + NET_DVR_PASSBACK_DAY struPassBackDay[MAX_DAYS]; //ȫشƻ + NET_DVR_PASSBACK_SCHED struPassBackSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; //ʱλشƻ + BYTE byRes[128]; // +}NET_DVR_RECORD_PASSBACK_SCH_CFG, *LPNET_DVR_RECORD_PASSBACK_SCH_CFG; + +//شʷ¼ƻ +typedef struct tagNET_DVR_RECORD_PASSBACK_HISTORY_PLAN_CFG_ +{ + DWORD dwSize; //汾ͷ + BYTE byEnable; //Ƿã0--ã1-- + BYTE byRes1[3]; // + NET_DVR_PASSBACK_DAY struPassBackDay[MAX_DAYS]; //ȫشƻ + NET_DVR_PASSBACK_SCHED struPassBackSched[MAX_DAYS][MAX_TIMESEGMENT_V30]; //ʱλشƻ + BYTE byRes[256]; // +}NET_DVR_RECORD_PASSBACK_HISTORY_PLAN_CFG, *LPNET_DVR_RECORD_PASSBACK_HISTORY_PLAN_CFG; + +//¼ +typedef struct tagNET_DVR_DEV_STORAGE_CFG +{ + DWORD dwSize; + DWORD dwCapacityTotal; //豸洢(CVRʾ¼)(ֻ)λMB + DWORD dwFreeSpaceTotal; //豸洢(CVRʾ¼)ʣܿռ(ֻ)λMB + DWORD dwLockedRecordSpace; //豸Ѽ¼洢(CVRʾ¼)(ֻ)λMB + DWORD dwUnLockedSpace; //豸δ洢(CVRʾ¼)(ֻ),δ¼ʣ洢ռ䣬λMB + BYTE byRes[512]; // +}NET_DVR_DEV_STORAGE_CFG, *LPNET_DVR_DEV_STORAGE_CFG; + +//һCVRV50 +typedef struct tagNET_DVR_ONE_KEY_CFG_V50 +{ + DWORD dwSize;//ṹС + BYTE byRaidType; //RAIDͣ0-raid5,1-raid6,2-raid95Vraid,3-ģʽraid + BYTE bySpareRaidProportion; //ọ̇̄raidУı,0--0:1,1--1:1,2--1:2,3--1:3,4--1:4,5--1:5,6--1:6,7--6:1,8--5:1,9--4:1,10--3:1,11--2:1 + BYTE byPicQuota; //ͼƬΧ0~100 + BYTE byRes[257]; +}NET_DVR_ONE_KEY_CFG_V50, *LPNET_DVR_ONE_KEY_CFG_V50; + +typedef struct tagNET_DVR_ONE_KEY_RESULT_V51 +{ + DWORD dwState; //״ֵ̬ע״ֵ̬ + BYTE byProgress; //ȣ0~100 + BYTE byRes[259]; +}NET_DVR_ONE_KEY_RESULT_V51, *LPNET_DVR_ONE_KEY_RESULT_V51; + +typedef struct tagNET_DVR_ONE_KEY_CFG_SAN_V50 +{ + DWORD dwSize;//ṹС + BYTE byRaidType; //RAIDͣ0-raid5,1-raid6 + BYTE bySpareRaidProportion; //ọ̇̄raidУı,0--0:1,1--1:1,2--1:2,3--1:3,4--1:4,5--1:5,6--1:6,7--6:1,8--5:1,9--4:1,10--3:1,11--2:1 + BYTE byRes[254]; +}NET_DVR_ONE_KEY_CFG_SAN_V50, *LPNET_DVR_ONE_KEY_CFG_SAN_V50; + +typedef struct tagNET_DVR_REC_PASSBACK_BASIC_CFG +{ + DWORD dwSize;//ṹС + DWORD dwStartTime; //ⴰڿʼʱ䣨λӣ + DWORD dwStopTime; //ⴰڽʱ䣨λӣ + WORD wMaxTotalConcurrenceNum; //ش·,ԵDZ·ǻش + WORD wMaxDvrConcurrenceNum; //̨DVRشͨ + DWORD dwSyncSpeed; //شʣλMbpsΪ12Mbps + DWORD dwRecordType; //¼: 0xffffffffȫ0ʱ1-ƶ,20xff- + BYTE byRes[248]; +}NET_DVR_REC_PASSBACK_BASIC_CFG, *LPNET_DVR_REC_PASSBACK_BASIC_CFG; + +//豸ӵû +typedef struct tagNET_DVR_ONLINE_USER_INFO_ +{ + DWORD dwSize; + WORD wOnlineUserCount; //¼豸û + BYTE byRes[514]; // +}NET_DVR_ONLINE_USER_INFO, *LPNET_DVR_ONLINE_USER_INFO; + +//ѯ¼ܴС +typedef struct tagNET_DVR_RECORD_SEGMENT_COND_ +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struStreanInfo; + NET_DVR_TIME_EX struStartTime; //ʼʱ + NET_DVR_TIME_EX struStopTime; //ʱ + BYTE byRes[256]; // +}NET_DVR_RECORD_SEGMENT_COND, *LPNET_DVR_RECORD_SEGMENT_COND; + +//ѯ¼ܴСز +typedef struct tagNET_DVR_RECORD_SEGMENT_RET_ +{ + DWORD dwSize; + DWORD dwRecordTotalSize; //¼ܴСλMB + BYTE byRes[256]; // +}NET_DVR_RECORD_SEGMENT_RET, *LPNET_DVR_RECORD_SEGMENT_RET; +typedef struct tagNET_DVR_ACCESSORY_CARD_INFO +{ + DWORD dwSize; + BYTE szAccessoryCardInfo[MAX_ACCESSORY_CARD/*256*/];//(ܰƴذ)ͺϢ + BYTE byRes[512]; +}NET_DVR_ACCESSORY_CARD_INFO, *LPNET_DVR_ACCESSORY_CARD_INFO; +//ѯϢṹ +typedef struct tagNET_DVR_SEARCH_INFO_COND +{ + DWORD dwSize; + BYTE byCommand; //ѯ0-ˣ1- + BYTE byRes1[3]; + DWORD dwEmployeeNo; //ţѯΪ0-ʱЧ + BYTE byName[NAME_LEN]; //ѯΪ0-ʱЧ + NET_DVR_TIME_V30 struStartTime; //ʼʱ + NET_DVR_TIME_V30 struEndTime; //ʱ + BYTE byRes[128]; // +}NET_DVR_SEARCH_INFO_COND, *LPNET_DVR_SEARCH_INFO_COND; + +//ȡŰϢ +typedef struct tagNET_DVR_SCHEDULE_CHOICE +{ + BYTE byScheduleType; //ͣ0-Űࡢ1-ͨࡢ2-ʱ + BYTE byScheduleNo; //α + BYTE byRes[14]; // +}NET_DVR_SCHEDULE_CHOICE, *LPNET_DVR_SCHEDULE_CHOICE; +// B20 V1.5 +typedef struct tagNET_DVR_DISPINPUT_CFG +{ + DWORD dwSize; + DWORD dwDispInputNo; //ʾ + DWORD dwEDIDFileNo; //EDIDļ + BYTE byRes[32]; +}NET_DVR_DISPINPUT_CFG, *LPNET_DVR_DISPINPUT_CFG; + +//Űƻṹ +typedef struct tagNET_DVR_SCHEDULE_PLAN +{ + DWORD dwSize; + BYTE bySchedulePlanNo; //Űƻ,ʼΧ + BYTE bySchedulePlanType; //Űƻͣ0-ˡ1- + BYTE byEnable; //ʹ + BYTE byRes1; + NET_DVR_SCHEDULE_CHOICE struScheduleChoice[DAYS_A_WEEK]; //ѡ + NET_DVR_TIME_V30 struStartTime; //ʼʱ + NET_DVR_TIME_V30 struEndTime; //ʱ + BYTE byHolidayNo; // + BYTE byRes[63]; // +}NET_DVR_SCHEDULE_PLAN, *LPNET_DVR_SCHEDULE_PLAN; +typedef struct tagNET_DVR_DISPINPUT_CFG_LIST +{ + DWORD dwSize; + DWORD dwDispInputNum; //صNET_DVR_DISPINPUT_CFGṹĸ + LPNET_DVR_DISPINPUT_CFG lpstruBuffer; //ָ + DWORD dwBufferSize; //С + BYTE byRes[32]; +}NET_DVR_DISPINPUT_CFG_LIST, *LPNET_DVR_DISPINPUT_CFG_LIST; + +//ȡŰϢ +typedef struct tagNET_DVR_SCHEDULE_INFO_CFG +{ + DWORD dwSize; + DWORD dwEmployeeNo; // + BYTE byName[NAME_LEN]; // + BYTE byDepartmentName[NAME_LEN]; // + NET_DVR_SCHEDULE_PLAN struSchedulePlan; //Űƻ + BYTE byRes[128]; // +}NET_DVR_SCHEDULE_INFO_CFG, *LPNET_DVR_SCHEDULE_INFO_CFG; + +//ȡڻϢ +typedef struct tagNET_DVR_ATTENDANCE_SUMMARY_CFG +{ + DWORD dwSize; + DWORD dwEmployeeNo; // + BYTE byName[NAME_LEN]; // + BYTE byDepartmentName[NAME_LEN]; // + DWORD dwWorkStandard; //׼ʱ䣨ӣ + DWORD dwWorkActual; //ʵʹʱ䣨ӣ + DWORD dwLateTimes; //ٵ + DWORD dwLateMinutes;//ٵۼʱ䣨ӣ + DWORD dwLeaveEarlyTimes; //˴ + DWORD dwLeaveEarlyMinutes; //ۼʱ䣨ӣ + DWORD dwOvertimeStandard; //׼Ӱʱ䣨ӣ + DWORD dwOvertimeActual; //ʵʼӰʱ䣨ӣ + DWORD dwAttendanceStandard; //׼죩 + DWORD dwAttendanceActual; //ʵʳ죩 + DWORD dwAbsentDays; //죩 + BYTE byRes[128]; // +}NET_DVR_ATTENDANCE_SUMMARY_CFG, *LPNET_DVR_ATTENDANCE_SUMMARY_CFG; + +//ȡڼ¼Ϣ +typedef struct tagNET_DVR_ATTENDANCE_RECORD_CFG +{ + DWORD dwSize; + DWORD dwEmployeeNo; // + BYTE byName[NAME_LEN]; // + BYTE byDepartmentName[NAME_LEN]; // + NET_DVR_TIME_V30 struAttendanceTime; //ʱ + BYTE byRes[128]; // +}NET_DVR_ATTENDANCE_RECORD_CFG, *LPNET_DVR_ATTENDANCE_RECORD_CFG; + +//ʱϢ +typedef struct tagNET_DVR_ATTENDANCE_TIME +{ + NET_DVR_TIME_V30 struOnDutyTime; //ϰʱ + NET_DVR_TIME_V30 struOffDutyTime; //°ʱ +}NET_DVR_ATTENDANCE_TIME, *LPNET_DVR_ATTENDANCE_TIME; + +//ȡ쳣ͳϢ +typedef struct tagNET_DVR_ABNORMAL_CFG +{ + DWORD dwSize; + DWORD dwEmployeeNo; // + BYTE byName[NAME_LEN]; // + BYTE byDepartmentName[NAME_LEN]; // + NET_DVR_ATTENDANCE_TIME struAttendanceTime[ABNORMAL_INFO_NUM]; //쳣ʱ + DWORD dwLateMinutes; //ٵʱ䣨ӣ + DWORD dwLeaveEarlyMinutes; //ʱ䣨ӣ + DWORD dwAbsenceMinutes; //ȱʱ䣨ӣ + DWORD dwTotalMinutes; //ϼʱ䣨ӣ + BYTE byRes[128]; // +}NET_DVR_ABNORMAL_CFG, *LPNET_DVR_ABNORMAL_CFG; + +typedef struct tagNET_DVR_CARD_CFG_V50 +{ + DWORD dwSize; + DWORD dwModifyParamType; + // Ҫ޸ĵĿÿʱЧλʾÿλһֲ1ΪҪ޸ģ0Ϊ޸ + // #define CARD_PARAM_CARD_VALID 0x00000001 //ǷЧ + // #define CARD_PARAM_VALID 0x00000002 //Чڲ + // #define CARD_PARAM_CARD_TYPE 0x00000004 //Ͳ + // #define CARD_PARAM_DOOR_RIGHT 0x00000008 //Ȩ޲ + // #define CARD_PARAM_LEADER_CARD 0x00000010 //׿ + // #define CARD_PARAM_SWIPE_NUM 0x00000020 //ˢ + // #define CARD_PARAM_GROUP 0x00000040 //Ⱥ + // #define CARD_PARAM_PASSWORD 0x00000080 // + // #define CARD_PARAM_RIGHT_PLAN 0x00000100 //Ȩ޼ƻ + // #define CARD_PARAM_SWIPED_NUM 0x00000200 //ˢ + // #define CARD_PARAM_EMPLOYEE_NO 0x00000400 // + // #define CARD_PARAM_NAME 0x00000800 // + // #define CARD_PARAM_DEPARTMENT_NO 0x00001000 //ű + // #define CARD_SCHEDULE_PLAN_NO 0x00002000 //Űƻ + // #define CARD_SCHEDULE_PLAN_TYPE 0x00004000 //Űƻ + // #define CARD_ROOM_NUMBER 0x00008000 // + // #define CARD_SIM_NO 0x00010000 //SIMţֻţ + // #define CARD_FLOOR_NUMBER 0x00020000 //¥ + // #define CARD_USER_TYPE 0x00040000 //û + BYTE byCardNo[ACS_CARD_NO_LEN]; // + BYTE byCardValid; //ǷЧ0-Ч1-ЧɾʱΪ0ɾȡʱֶʼΪ1 + BYTE byCardType; //ͣ1-ͨ2-Ⱥ忨3-ֹ4-Ѳ5-вȿ6-7-8-9-Ա10-Ӧ11-ӦȨʱȨޣܿţ12-ESDȫ쿨13-ESD쿨14-ESD쿨15-ESDּ쿨Ĭͨ + BYTE byLeaderCard; //ǷΪ׿1-ǣ0- + BYTE byUserType; // 0 C ͨû1 - Աû; + BYTE byDoorRight[MAX_DOOR_NUM_256]; //Ȩ(¥ȨޡȨ)λʾ1ΪȨޣ0ΪȨޣӵλλʾţ1-NǷȨ + NET_DVR_VALID_PERIOD_CFG struValid; //Чڲ + BYTE byBelongGroup[MAX_GROUP_NUM_128]; //Ⱥ飬ֽڱʾ1-ڣ0- + BYTE byCardPassword[CARD_PASSWORD_LEN]; // + WORD wCardRightPlan[MAX_DOOR_NUM_256][MAX_CARD_RIGHT_PLAN_NUM]; //Ȩ޼ƻȡֵΪƻģţͬţͬƻģȨ޻ķʽ + DWORD dwMaxSwipeTime; //ˢ0Ϊ޴ƣ + DWORD dwSwipeTime; //ˢ + WORD wRoomNumber; // + SHORT wFloorNumber; // + DWORD dwEmployeeNo; //ţûID + BYTE byName[NAME_LEN]; // + WORD wDepartmentNo; //ű + WORD wSchedulePlanNo; //Űƻ + BYTE bySchedulePlanType; //Űƻͣ0-塢1-ˡ2- + BYTE byRightType; //·Ȩͣ0-ͨȨޡ1-άȨޡ2-ȨޣӶԽ豸άȨšţ⿨ţˢЧڲȨޣţөʯAPP˺ţͨȨһ£ + BYTE byRes2[2]; + DWORD dwLockID; //ID + BYTE byLockCode[MAX_LOCK_CODE_LEN]; // + BYTE byRoomCode[MAX_DOOR_CODE_LEN]; // + //λʾ0-Ȩޣ1-Ȩ + //0λʾ籨 + //1λʾʾ + //2λʾƿͿ + //3λʾͨ + //4λʾ + //5λʾѲ + DWORD dwCardRight; //Ȩ + DWORD dwPlanTemplate; //ƻģ(ÿ)ʱǷãλʾ0--ã1- + DWORD dwCardUserId; //ֿID + BYTE byCardModelType; //0-գ1- MIFARE S502- MIFARE S703- FM1208 CPU4- FM1216 CPU5-CPU6-֤7- NFC + BYTE byRes3[51]; + BYTE bySIMNum[NAME_LEN/*32*/]; //SIMţֻţ +}NET_DVR_CARD_CFG_V50, *LPNET_DVR_CARD_CFG_V50; + +typedef struct tagNET_DVR_CAPTURE_FINGERPRINT_COND +{ + DWORD dwSize; + BYTE byFingerPrintPicType; //ͼƬͣ0- + BYTE byFingerNo; //ָţΧ1-10 + BYTE byRes[126]; +}NET_DVR_CAPTURE_FINGERPRINT_COND, *LPNET_DVR_CAPTURE_FINGERPRINT_COND; + +typedef struct tagNET_DVR_CAPTURE_FINGERPRINT_CFG +{ + DWORD dwSize; + DWORD dwFingerPrintDataSize; //ָݴС + BYTE byFingerData[MAX_FINGER_PRINT_LEN]; //ָ + DWORD dwFingerPrintPicSize; //ָͼƬС0ʱָͼƬ + char* pFingerPrintPicBuffer; //ָͼƬ + BYTE byFingerNo; //ָţΧ1-10 + BYTE byFingerPrintQuality; //ָΧ1-100 + BYTE byRes[62]; +}NET_DVR_CAPTURE_FINGERPRINT_CFG, *LPNET_DVR_CAPTURE_FINGERPRINT_CFG; + +typedef struct tagNET_DVR_CAPTURE_FACE_COND +{ + DWORD dwSize; + BYTE byRes[128]; +}NET_DVR_CAPTURE_FACE_COND, *LPNET_DVR_CAPTURE_FACE_COND; + +typedef struct tagNET_DVR_FACE_FEATURE +{ + NET_VCA_RECT struFace; //ͼ + NET_VCA_POINT struLeftEye; // + NET_VCA_POINT struRightEye; // + NET_VCA_POINT struLeftMouth; // + NET_VCA_POINT struRightMouth; // ұ + NET_VCA_POINT struNoseTip; // +}NET_DVR_FACE_FEATURE, *LPNET_DVR_FACE_FEATURE; + + +typedef struct tagNET_DVR_CAPTURE_FACE_CFG +{ + DWORD dwSize; + DWORD dwFaceTemplate1Size; //ģ1ݴС0ʱģ1 + char* pFaceTemplate1Buffer; //ģ1ݻ棨2.5k + DWORD dwFaceTemplate2Size; //ģ2ݴС0ʱģ2 + char* pFaceTemplate2Buffer; //ģ2ݻ棨2.5K + DWORD dwFacePicSize; //ͼƬݴС0ʱͼƬ + char* pFacePicBuffer; //ͼƬݻ + BYTE byFaceQuality1; //Χ1-100 + BYTE byFaceQuality2; //Χ1-100 + BYTE byCaptureProgress; //ɼȣĿǰֵֻֽ0-δɼ100-ɼֻڽΪ100ʱŽϢ + BYTE byFacePicQuality; //ͼƬ + DWORD dwInfraredFacePicSize; //ͼƬݴС0ʱͼƬ + char* pInfraredFacePicBuffer; //ͼƬݻ + BYTE byInfraredFacePicQuality; //ͼƬ + BYTE byRes1[3]; + NET_DVR_FACE_FEATURE struFeature; //ͼϢ + BYTE byRes[56]; +}NET_DVR_CAPTURE_FACE_CFG, *LPNET_DVR_CAPTURE_FACE_CFG; + +//ѯֶشִ +typedef struct tagNET_DVR_REC_PASSBACK_MANUAL_EXECUTABLE_SEND +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struStreamInfo; //idϢ72ֽڣ + BYTE byRes[128]; // +}NET_DVR_REC_PASSBACK_MANUAL_EXECUTABLE_SEND, *LPNET_DVR_REC_PASSBACK_MANUAL_EXECUTABLE_SEND; + +//ѯֶشִ +typedef struct tagNET_DVR_REC_PASSBACK_MANUAL_EXECUTABLE_RET +{ + DWORD dwSize; + NET_DVR_STREAM_INFO struStreamInfo; //idϢ72ֽڣ + BYTE byExecutable; //0-ش1-ִлش + BYTE byUnexecutableReason; //شԭ, 0-ҪŶӣ1-ӣ2-IDڣ3-CVR쳣4-Ƶ, 5-û, 6-ǰ豸, 7-ԭ + BYTE byRes[254]; // +}NET_DVR_REC_PASSBACK_MANUAL_EXECUTABLE_RET, *LPNET_DVR_REC_PASSBACK_MANUAL_EXECUTABLE_RET; + +typedef struct tagNET_DVR_STREAM_MEDIA_CFG +{ + DWORD dwSize; + BYTE sUrl[MAX_URL_LEN]; + NET_DVR_IPADDR struDMSIP; /* dms IPַ */ + WORD wDMSPort; /*dms ˿ں */ + BYTE byRes1[2]; + DWORD dwDomainID; /*IDֶ֧ƽ̨*/ + BYTE byRes[360]; // +}NET_DVR_STREAM_MEDIA_CFG, *LPNET_DVR_STREAM_MEDIA_CFG; + +//ֻⵥ +typedef struct tagNET_DVR_SHIPSDETECTION_REGION_CFG +{ + + BYTE byRuleID; + BYTE byEnable; //ʹ + BYTE bySensitivity; //ȲΧ[1,100] + BYTE byFrameOverlayEnabled;//ƵǷӼ + BYTE byRes[36]; + NET_ITC_POLYGON struPolygon; // + NET_VCA_LINE struTriggerLine; // +}NET_DVR_SHIPSDETECTION_REGION_CFG, *LPNET_DVR_SHIPSDETECTION_REGION_CFG; + +typedef struct tagNET_DVR_SHIPSDETECTION_CFG +{ + DWORD dwSize; + BYTE byEnable;//ʹ + BYTE byRes1[3]; + float fLookDownUpAngle;//豸ǶȣȷСһλ + float fHorizontalHeight;//豸ˮƽ߶ȣȷСһλ + NET_DVR_SHIPSDETECTION_REGION_CFG struShipsDetectionRegion[MAX_SHIPSDETE_REGION_NUM];//ֻⵥ + BYTE byRes[256]; +}NET_DVR_SHIPSDETECTION_CFG, *LPNET_DVR_SHIPSDETECTION_CFG; + +typedef struct tagNET_DVR_TEMPERATURE_COLOR +{ + /* + ѡ0~±ʱֶЧ,ڸ¶ֵʱнɫע + ѡ1~±ʱ, ֶЧ,ڸ¶ֵʱнɫע + ѡ2~䱨ʱֶЧ¶ڸ¶ʱнɫע + ѡ3~±ʱֶЧ¶Ȳڸ¶ʱнɫע + ѡ4~ΪޱֶͣЧرձ*/ + BYTE byType;//±ɫͣ0~ޱͣرգ1~±ͣ2~±ͣ3~䱨ͣ4~± + BYTE byRes1[3]; + int iHighTemperature;//ֵ-273~10000 + int iLowTemperature;//ֵ-273~10000 + BYTE byRes[8]; +}NET_DVR_TEMPERATURE_COLOR, *LPNET_DVR_TEMPERATURE_COLOR; + +typedef struct tagNET_DVR_THERMOMETRY_BASICPARAM +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byStreamOverlay; //¶Ϣ0- 1- + BYTE byPictureOverlay;//ץͼ¶Ϣ0- 1- + BYTE byThermometryRange;//·Χ: 0-Ĭֵ,1-(-20~150),2-(0~550)϶Ϊλ㣩,3-(϶:0-650棻¶:32-1200H),4-϶: -40-150棩,5-(϶: 0~1200)϶Ϊλ㣬ݲµλ趨ͬ·Χʾ6-(϶: -20-120,7-(϶:20~350), 8-(϶:20~45),9-(϶:30~45),0xff-Զ + BYTE byThermometryUnit;//µλ: 0-϶ȣ棩1-϶ȣH2-(K) + BYTE byThermometryCurve;//ģʽʾʽ0-رգ1-ģʽ1¶ģʽ2-ģʽ2¶ģʽ + BYTE byFireImageModea;//ͼģʽ0-1-ڰģʽ2-̽ģʽ3-ģʽ(ֶ0Ŀǰ֮ǰӿڲ) + BYTE byShowTempStripEnable;//ʾ¶ʹܣ0- 1- + float fEmissivity;//( ȷСλ)[0.01, 1.00](ı) + BYTE byDistanceUnit;//뵥λ: 0-ףm1-Ӣߣfeet,2-(centimeter) + BYTE byEnviroHumidity;//ʪȣȡֵΧ0~100% + BYTE byRes2[2]; + NET_DVR_TEMPERATURE_COLOR struTempColor;//±ɫ + int iEnviroTemperature;//¶ȣȡֵΧ-273~10000϶ + int iCorrectionVolume;//ȡֵΧ-100~100 + /* bit0-ĵ£0-ʾ1-ʾ + bit1-ߵ£0-ʾ1-ʾ + bit2-͵£0-ʾ1-ʾ + */ + BYTE bySpecialPointThermType;// µʾ + BYTE byReflectiveEnabled;//¶ʹܣ0- 1- + WORD wDistance;//(m)[0, 10000] + float fReflectiveTemperature;//¶ ȷСһλ + float fAlert;//Ԥ¶ֵ-100.0-1000.0ȣȷСһλ + float fAlarm;//¶ֵ-100.0-1000.0ȣȷСһλ + float fThermalOpticalTransmittance;// ѧ͸, ȷС3λΧ0.001-1.000Ĭ1.000 + float fExternalOpticsWindowCorrection;//ⲿѧ¶ȣĬֵ20棬ΧΪ-40.0~80.0棬ʵʾλԽʾΪ׼ + BYTE byDisplayMaxTemperatureEnabled;// ʾ 0-ʾ 1-ʾ + BYTE byDisplayMinTemperatureEnabled;// ʾ 0-ʾ 1-ʾ + BYTE byDisplayAverageTemperatureEnabled;// ʾƽ 0-ʾ 1-ʾ + BYTE byThermometryInfoDisplayposition;// Ϣʾλ 0- 1- 2-ĻϽ + DWORD dwAlertFilteringTime;//¶Ԥȴʱ,λ + DWORD dwAlarmFilteringTime;//¶ȱȴʱ,λ + BYTE byemissivityMode; // 1-ֲڣ2-ϴֲڣ3-Ϲ⻬, 4-⻬, 0xff-Զ + BYTE bydisplayTemperatureInOpticalChannelEnabled;//ɼʾ¶Ϣʹܣ0-ã1 + BYTE byDisplayCentreTemperatureEnabled;// ʾĵ¶ 0-ʾ 1-ʾ + BYTE byRes[49]; +}NET_DVR_THERMOMETRY_BASICPARAM, *LPNET_DVR_THERMOMETRY_BASICPARAM; + +typedef struct tagNET_DVR_THERMOMETRY_COND +{ + DWORD dwSize;//ṹС + DWORD dwChannel; + WORD wPresetNo;//0- + BYTE byRes[62]; +}NET_DVR_THERMOMETRY_COND, *LPNET_DVR_THERMOMETRY_COND; + +typedef struct tagNET_DVR_THERMOMETRY_PRESETINFO_PARAM +{ + BYTE byEnabled; //Ƿʹܣ0- 1- + BYTE byRuleID;//ID 0-ʾЧ1ʼ listڲжЧԣ + WORD wDistance;//(m)[0, 10000] + float fEmissivity;//( ȷСλ)[0.01, 1.00](ı) + BYTE byDistanceUnit;//뵥λ: 0-ףm1-Ӣߣfeet,2-(centimeter) + BYTE byRes[2]; + BYTE byReflectiveEnabled;//¶ʹܣ0- 1- + float fReflectiveTemperature;//¶ ȷС2λ + char szRuleName[NAME_LEN/*32*/];// + BYTE byemissivityMode; // 1-ֲڣ2-ϴֲڣ3-Ϲ⻬, 4-⻬, 0xff-Զ + BYTE byRes1[62]; + BYTE byRuleCalibType;//궨 0-㣬1-2- + NET_VCA_POINT struPoint;//꣨궨Ϊ""ʱЧ + NET_VCA_POLYGON struRegion;//ߣ궨Ϊ""""ʱЧ +}NET_DVR_THERMOMETRY_PRESETINFO_PARAM, *LPNET_DVR_THERMOMETRY_PRESETINFO_PARAM; + + +typedef struct tagNET_DVR_THERMOMETRY_PRESETINFO +{ + DWORD dwSize;//ṹС + WORD wPresetNo;//0- + BYTE byRes[2]; + NET_DVR_THERMOMETRY_PRESETINFO_PARAM struPresetInfo[MAX_THERMOMETRY_REGION_NUM/*40*/]; +}NET_DVR_THERMOMETRY_PRESETINFO, *LPNET_DVR_THERMOMETRY_PRESETINFO; + + +typedef struct tagNET_DVR_BASE_STATION_INFO_ALARM +{ + DWORD dwSize; + DWORD dwChannel;//ͨ + char sNetBarWaCode[16];// + char sCollectionEquipmentID[24];//ɼ豸 + char sMCC[4];//ƶ + char sMNC[4];//ƶ + char sLAC[36];//λ + char sCI[36];//Сʶ + char sBSCI[36];//վʶ + char sBCCH[36];//㲥ŵ + char sLEV[36];//ձƽ + char sCollectionEquipmentLongitude[12];//ɼ豸 + char sCollectionEquipmentLatitude[12];//ɼ豸γ + char sCaptureTime[20];//ɼʱ ʱʽyyyy-MM-dd hh:mm:ss + BYTE byRes[256]; +}NET_DVR_BASE_STATION_INFO_ALARM, *LPNET_DVR_BASE_STATION_INFO_ALARM; + + +typedef struct tagNET_DVR_THERMOMETRY_ALARMRULE_PARAM +{ + BYTE byEnable; + BYTE byRuleID;//ID + BYTE byRule;//¶ȱȽϷʽ 0-´,1-С,2-´,3-С,4-ƽ´,5-ƽС,6-²,7-²С + BYTE byRes; + char szRuleName[NAME_LEN];// + float fAlert;//Ԥ¶ + float fAlarm;//¶ + float fThreshold;//¶ + DWORD dwAlertFilteringTime;//¶Ԥȴʱ,λ + DWORD dwAlarmFilteringTime;//¶ȱȴʱ,λ + BYTE byRes1[56]; +}NET_DVR_THERMOMETRY_ALARMRULE_PARAM, *LPNET_DVR_THERMOMETRY_ALARMRULE_PARAM; + +typedef struct tagNET_DVR_THERMOMETRY_ALARMRULE +{ + DWORD dwSize;//ṹС + NET_DVR_THERMOMETRY_ALARMRULE_PARAM struThermometryAlarmRuleParam[THERMOMETRY_ALARMRULE_NUM]; + BYTE byRes[128]; +}NET_DVR_THERMOMETRY_ALARMRULE, *LPNET_DVR_THERMOMETRY_ALARMRULE; + + +typedef struct tagNET_DVR_THERMOMETRY_DIFFCOMPARISON_PARAM +{ + BYTE byEnable; + BYTE byRuleID;//ID,0-ʾЧΧֵ1ʼ + BYTE byAlarmID1; + BYTE byAlarmID2; + BYTE byRule;//¶ȱȽϷʽ0-´,1-С,2-´,3-С,4-ƽ´,5-ƽС,6-²,7-²С + BYTE byRes[3]; + float fTemperatureDiff;//²ֵ + DWORD dwAlarmFilteringTime;//¶ȱȴʱ,λ + BYTE byRes1[28]; +}NET_DVR_THERMOMETRY_DIFFCOMPARISON_PARAM, *LPNET_DVR_THERMOMETRY_DIFFCOMPARISON_PARAM; + +typedef struct tagNET_DVR_THERMOMETRY_DIFFCOMPARISON +{ + DWORD dwSize;//ṹС + NET_DVR_THERMOMETRY_DIFFCOMPARISON_PARAM struDiffComparison[MAX_THERMOMETRY_DIFFCOMPARISON_NUM/*8*/]; + BYTE byRes[64]; +}NET_DVR_THERMOMETRY_DIFFCOMPARISON, *LPNET_DVR_THERMOMETRY_DIFFCOMPARISON; + + +//ʵʱ¶ȼṹ +typedef struct tagNET_DVR_REALTIME_THERMOMETRY_COND +{ + DWORD dwSize; + DWORD dwChan;//ͨţ1ʼ0xffffffffȡȫͨ + BYTE byRuleID; //ID 0-ȡȫ򣬾ID1ʼ + /* + 1-ʱģʽ豸ÿһϴݵ¡ºƽ¶ֵ² + 2-²ģʽһһ»»ƽ»²ֵ²ڵ2϶ȣϴ¡ºƽ¶ֵڵһСʱ²ֵС2϶ȣϴ¡¡ƽº²ֵ + */ + BYTE byMode; //ģʽ 0-Ϊ豸1-ʱģʽ2-²ģʽ + WORD wInterval; //ϴ²ģʽ֧֣1~3600S0Ĭ3600Sϴһ + float fTemperatureDiff;//² + BYTE byRes[56]; // +}NET_DVR_REALTIME_THERMOMETRY_COND, *LPNET_DVR_REALTIME_THERMOMETRY_COND; + +typedef struct tagNET_DVR_POINT_THERM_CFG +{ + float fTemperature;//ǰ¶ + NET_VCA_POINT struPoint;//꣨궨ΪʱЧ + BYTE byRes[120]; +}NET_DVR_POINT_THERM_CFG, *LPNET_DVR_POINT_THERM_CFG; + +typedef struct tagNET_DVR_LINEPOLYGON_THERM_CFG +{ + float fMaxTemperature;// + float fMinTemperature;// + float fAverageTemperature;//ƽ + float fTemperatureDiff;//² + NET_VCA_POLYGON struRegion;//򣨵궨Ϊ/ߵʱЧ + BYTE byRes[32]; +}NET_DVR_LINEPOLYGON_THERM_CFG, *LPNET_DVR_LINEPOLYGON_THERM_CFG; + +typedef struct tagNET_DVR_THERMOMETRY_UPLOAD +{ + DWORD dwSize; + DWORD dwRelativeTime; // ʱ + DWORD dwAbsTime; // ʱ + char szRuleName[NAME_LEN/*32*/];// + BYTE byRuleID;//ID + BYTE byRuleCalibType;//궨 0-㣬1-2- + WORD wPresetNo; //Ԥõ + NET_DVR_POINT_THERM_CFG struPointThermCfg; + NET_DVR_LINEPOLYGON_THERM_CFG struLinePolygonThermCfg; + BYTE byThermometryUnit;//µλ: 0-϶ȣ棩1-϶ȣH2-(K) + BYTE byDataType;//״̬:0-У1-ʼ2- + BYTE byRes1; + /* + bit0-ĵ£0-֧֣1-֧֣ + bit1-ߵ£0-֧֣1-֧֣ + bit2-͵£0-֧֣1-֧֣ + */ + BYTE bySpecialPointThermType;// Ƿ֧ + float fCenterPointTemperature;//ĵ¶,ȷСһλ(-40-1500),+100*10 bySpecialPointThermTypeжǷ֧ĵ㣩 + float fHighestPointTemperature;//ߵ¶,ȷСһλ(-40-1500),+100*10bySpecialPointThermTypeжǷ֧ߵ㣩 + float fLowestPointTemperature;//͵¶,ȷСһλ(-40-1500),+100*10bySpecialPointThermTypeжǷ֧͵㣩 + NET_VCA_POINT struHighestPoint;//ߡ¶λ꣨궨ΪߡʱЧ + NET_VCA_POINT struLowestPoint;//ߡ¶λ꣨궨ΪߡʱЧ + BYTE byIsFreezedata;//Ƿݶ 0- 1- + BYTE byFaceSnapThermometryEnabled;//ץIJʹ 1- 0-ر + BYTE byRes2[2]; + DWORD dwChan; //ͨţѯͨΪ0xffffffffʱֶЧ + NET_VCA_RECT struFaceRect; //ͼ + DWORD dwTimestamp;//DSPʱ + BYTE byRes[68]; +}NET_DVR_THERMOMETRY_UPLOAD, *LPNET_DVR_THERMOMETRY_UPLOAD; + +//¶ȱ¶Ⱥ¶ȱȽϱ +typedef struct tagNET_DVR_THERMOMETRY_ALARM +{ + DWORD dwSize; + DWORD dwChannel;//ͨ + BYTE byRuleID;//ID + BYTE byThermometryUnit;//µλ: 0-϶ȣ棩1-϶ȣH2-(K) + WORD wPresetNo; //Ԥõ + NET_PTZ_INFO struPtzInfo;//ptzϢ + BYTE byAlarmLevel;//0-Ԥ 1- + BYTE byAlarmType;/* 0-¶ 1-¶ 2-ƽ¶ 3-² 4-¶ͻ 5-¶ͻ*/ + BYTE byAlarmRule;//0-ڣ1-С + BYTE byRuleCalibType;//궨 0-㣬1-2 + NET_VCA_POINT struPoint;//꣨궨ΪʱЧ + NET_VCA_POLYGON struRegion;//򣨵궨ΪʱЧ + float fRuleTemperature;/*ù¶,ȷСһλ(-40-1000),+100 */ + float fCurrTemperature;/*ǰ¶,ȷСһλ(-40-1000),+100 */ + DWORD dwPicLen;//ɼͼƬ + DWORD dwThermalPicLen;//ȳͼƬ + DWORD dwThermalInfoLen;//ȳ񸽼Ϣ + char* pPicBuff; ///ɼͼƬָ + char* pThermalPicBuff;// ȳͼƬָ + char* pThermalInfoBuff; //ȳ񸽼Ϣָ + NET_VCA_POINT struHighestPoint;//ߡ¶λ꣨궨ΪߡʱЧ + float fToleranceTemperature;/* ݲ¶,ȷСһλ(-40-1000),+100 */ + DWORD dwAlertFilteringTime;//¶Ԥȴʱ λ ΧΪ0-200룬ĬΪ0 + DWORD dwAlarmFilteringTime;//¶ȱȴʱ λ ΧΪ0-200룬ĬΪ0 + DWORD dwTemperatureSuddenChangeCycle;//¶ͻ¼ڣλ + float fTemperatureSuddenChangeValue;//¶ͻֵ,ȷСһλ(0) + BYTE byPicTransType; //ͼƬݴ䷽ʽ: 0-ƣ1-url + BYTE byRes1[3]; + DWORD dwVisibleChannel; //ɼͨͨ + DWORD dwRelativeTime; // ʱ + DWORD dwAbsTime; // ʱ + float fAlarmRuleTemperature;/* TMAù¶,ȷСһλ(-40-1000),+100 */ + BYTE byRes[20]; +}NET_DVR_THERMOMETRY_ALARM, *LPNET_DVR_THERMOMETRY_ALARM; + + +//² +typedef struct tagNET_DVR_THERMOMETRY_DIFF_ALARM +{ + DWORD dwSize; + DWORD dwChannel;//ͨ + BYTE byAlarmID1;//AlarmID1 + BYTE byAlarmID2;//AlarmID2 + WORD wPresetNo; //Ԥõ + BYTE byAlarmLevel;//0-Ԥ 1- + BYTE byAlarmType;/* 0-¶ 1-¶ 2-ƽ¶*/ + BYTE byAlarmRule;//0-ڣ1-С + BYTE byRuleCalibType;//궨 0-㣬1-2 + NET_VCA_POINT struPoint[2];//꣨궨ΪʱЧ±0AlarmID1±1AlarmID2. + NET_VCA_POLYGON struRegion[2];//򣨵궨ΪʱЧ±0AlarmID1±1AlarmID2. + float fRuleTemperatureDiff;/*ù²,ȷСһλ(-40-1000)*/ + float fCurTemperatureDiff;/*ǰ²,ȷСһλ(-40-1000),+100 */ + NET_PTZ_INFO struPtzInfo;//ptzϢ + DWORD dwPicLen;//ɼͼƬ + DWORD dwThermalPicLen;//ȳͼƬ + DWORD dwThermalInfoLen;//ȳ񸽼Ϣ + char* pPicBuff; ///ɼͼƬָ + char* pThermalPicBuff;// ȳͼƬָ + char* pThermalInfoBuff; //ȳ񸽼Ϣָ + BYTE byThermometryUnit;//µλ: 0-϶ȣ棩1-϶ȣH2-(K) + BYTE byPicTransType; //ͼƬݴ䷽ʽ: 0-ƣ1-url + BYTE byRes1[2]; + float fToleranceTemperature;/*ݲ¶,ȷСһλ(-40-1000),+100 */ + DWORD dwAlarmFilteringTime;//¶ȱȴʱ λ ΧΪ0-200룬ĬΪ0 + DWORD dwVisibleChannel; //ɼͨͨ + BYTE byRes[48]; +}NET_DVR_THERMOMETRY_DIFF_ALARM, *LPNET_DVR_THERMOMETRY_DIFF_ALARM; + +typedef struct //ṹ +{ + DWORD dwSize; + DWORD dwChannel;//ͨţǰĬ1 + BYTE byRes[128]; +}NET_DVR_SHIPSCOUNT_COND, *LPNET_DVR_SHIPSCOUNT_COND; + + +//ȡֻϢṹ +typedef struct tagNET_DVR_SHIPSCOUNT_CFG +{ + DWORD dwSize; + DWORD dwUpShipsCount; //дֻ + DWORD dwDownShipsCount; //дֻ + DWORD dwLeftShipsCount; //дֻ + DWORD dwRightShipsCount; //дֻ + DWORD dwTotalCount;//ֻܼ + DWORD dwRelativeTime; //豸ʼʱ + DWORD dwAbsTime; //豸ʼľʱ + BYTE byDataType;//״̬:0-У1-ʼ2- + BYTE byRes[255]; +}NET_DVR_SHIPSCOUNT_CFG, *LPNET_DVR_SHIPSCOUNT_CFG; + +//ֻϢ +typedef struct tagNET_DVR_SHIPSINFO +{ + float fShipsLength; //ֻȣ1~1000.0mȷСһλ + float fShipsHeight; //ֻ߶ȣ1~1000.0mȷСһλ + float fShipsWidth; //ֻȣ1~1000.0mȷСһλ + float fShipsSpeed; //ֻٶȣ1~1000.0m/sȷСһλ + BYTE byShipsDirection;//ֻ0~up,1~down,2~left,3~right + BYTE byShipsDetState;//ֻ״̬0~Խߣ1~ͷ⣬2~β + BYTE byTriggerLineID;//ID + BYTE byRes[61]; + NET_VCA_POLYGON struShipsRect; //ֻ򣬹һֵڴͼɼͼȳͼ)ķֱ +} NET_DVR_SHIPSINFO, *LPNET_DVR_SHIPSINFO; + +//ֻץͼϢ +typedef struct tagNET_DVR_SHIPIMAGE_INFO +{ + DWORD dwShipImageLen;//ֻץͼƬݳ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pXmlBuf; //ֻץͼƬָ +#else + char* pXmlBuf; //ֻץͼƬָ + BYTE byRes[4]; +#endif +}NET_DVR_SHIPIMAGE_INFO, *LPNET_DVR_SHIPIMAGE_INFO; + +//ֻⱨϴ +typedef struct tagNET_DVR_SHIPSDETECTION_ALARM +{ + DWORD dwSize; + NET_VCA_DEV_INFO struDevInfo; //豸Ϣ + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + BYTE byShipsNum; //ֻ(ԽߵĴֻ) + BYTE byShipsNumHead;//ֻ(ͷ⴬ֻ) + BYTE byShipsNumEnd; //ֻ(β⴬ֻ) + BYTE byPicTransType; //ͼƬݴ䷽ʽ: 0-ƣ1-url + NET_DVR_SHIPSINFO struShipInfo[MAX_SHIPS_NUM/*20*/];//ֻϢ֧20 + DWORD dwPicLen;//ɼͼƬ + DWORD dwThermalPicLen;//ȳͼƬ + BYTE* pPicBuffer; //ɼͼƬָ + BYTE* pThermalPicBuffer; //ȳͼƬָ + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byTimeDiffFlag; /*ʱֶǷЧ 0-ʱЧ 1-ʱЧ */ + char cTimeDifferenceH; /*UTCʱСʱ-12 ... +14 +ʾ,byTimeDiffFlagΪ1ʱЧ*/ + char cTimeDifferenceM; /*UTCʱӣ-30, 30, 45 +ʾbyTimeDiffFlagΪ1ʱЧ*/ + BYTE bySID;//ID + BYTE byRes1[2]; + char szSceneName[NAME_LEN];//ƣ32ַ + BYTE byRes[132]; + DWORD dwXmlLen;//XML͸ݳ, EventNotificationAlert XML Blockݳ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pXmlBuf; // XMLϢָ,XMLӦEventNotificationAlert XML Block +#else + char* pXmlBuf; // XMLϢָ,XMLӦEventNotificationAlert XML Block + BYTE byRes2[4]; +#endif + NET_DVR_SHIPIMAGE_INFO struShipImageInfo[MAX_SHIPIMAGE_NUM/*6*/];//ֻץͼƬϢ,±Ϊ0ʱΪһŴֻץͼƬԴƣ֧6ͼƬ +}NET_DVR_SHIPSDETECTION_ALARM, *LPNET_DVR_SHIPSDETECTION_ALARM; + +typedef struct tagNET_DVR_THERMAL_PIP +{ + DWORD dwSize;//ṹС + BYTE byEnable;//Ƿ + BYTE byPipMode;// лģʽ0~ģʽ1~ںģʽ2-ͨģʽ + BYTE byOverlapType;//ͣѡлģʽЧ0~ɼȳͼƬ1~ȳӿɼͼƬ + BYTE byTransparency;//͸ 0~100 + NET_VCA_POLYGON struPipRegion;//лλ + BYTE byImageFusionRatio;//ͼںϱ,ںģʽЧ 0-100 Ĭ75 + BYTE byBorderFusionRatio;//Եںϱ,ںģʽЧ 0-100 Ĭ100 + BYTE byRes1[2]; + float fDistance;//ںϾ,ںģʽЧ,Χ0.1-4.0 + BYTE byRes[632]; +}NET_DVR_THERMAL_PIP, *LPNET_DVR_THERMAL_PIP; + +typedef struct tagNET_DVR_RULESLINE_CFG +{ + NET_DVR_RGB_COLOR struRGB;// RGBRɫGɫBɫ Χ0-255 + BYTE byRes[128]; +}NET_DVR_RULESLINE_CFG, *LPNET_DVR_RULESLINE_CFG; + +typedef struct tagNET_DVR_THERMAL_INTELRULE_DISPLAY +{ + DWORD dwSize;//ṹС + /* + fontSizeType:ΪСſݸñԼԤڵĿȶ̬ıĴСʽΪ屶ֵ/8*(0.01*Ԥڿ) + Ӧ£ + 0~8ʣС + 1~12ʣ׼ + 2~16ʣ + 3~20ʣ + 4~24ʣش + */ + BYTE byFontSizeType; + BYTE byRes1[3]; + NET_DVR_RULESLINE_CFG struNormalRulesLineCfg;//Բ + NET_DVR_RULESLINE_CFG struAlertRulesLineCfg;//ԤԲ + NET_DVR_RULESLINE_CFG struAlarmRulesLineCfg;//Բ + BYTE byRes[640]; +}NET_DVR_THERMAL_INTELRULE_DISPLAY, *LPNET_DVR_THERMAL_INTELRULE_DISPLAY; + +typedef struct tagNET_DVR_BAREDATAOVERLAY_CFG +{ + DWORD dwSize; + BYTE byEnable;//ʹ + BYTE byIntervalTime;// ϴʱã1 2 3 4 5.λΪ룬ĬΪ3 + BYTE byRes[258]; +}NET_DVR_BAREDATAOVERLAY_CFG, *LPNET_DVR_BAREDATAOVERLAY_CFG; + +//ṹ +typedef struct tagNET_DVR_THERMOMETRY_TRIGGER_COND +{ + DWORD dwSize;//ṹС + DWORD dwChan;//ͨ + DWORD dwPreset;//ԤõţĿǰ֧,踳ֵ + BYTE byRes[256]; +}NET_DVR_THERMOMETRY_TRIGGER_COND, *LPNET_DVR_THERMOMETRY_TRIGGER_COND; + +//ֶ +typedef struct tagNET_DVR_MANUALDEICING_CFG +{ + DWORD dwSize;//ṹС + BYTE byEnabled; //Ƿֶ 0~رգ1~ + BYTE byRes[127]; +}NET_DVR_MANUALDEICING_CFG, *LPNET_DVR_MANUALDEICING_CFG; + +//СLED +typedef struct tagNET_DVR_INPUT_SOURCE_TEXT_COND +{ + DWORD dwSize; + DWORD dwInputSourceNo; //Դ + DWORD dwTextNo; //ı + BYTE byRes[32]; +}NET_DVR_INPUT_SOURCE_TEXT_COND, *LPNET_DVR_INPUT_SOURCE_TEXT_COND; + +typedef struct tagNET_DVR_INPUT_SOURCE_TEXT +{ + DWORD dwSize; + DWORD dwTextNo; //ı + BYTE byEnable; //Ƿʹܣ0-ʹܣ1-ʹ + BYTE byFontSize; //С + BYTE byBkGroudMode; //ģʽ1-͸2- + BYTE byRes[1]; + DWORD dwXPosition; //ַʾλõϽX꣬Դ + DWORD dwYPosition; //ַʾλõϽY꣬Դ + NET_DVR_RGB_COLOR struForegroudColor; //ַǰɫ + NET_DVR_RGB_COLOR struBackgroudColor; //ַɫ + BYTE byTextContent[MAX_LEN_TEXT_CONTENT]; //ַ + BYTE byRes1[64]; +}NET_DVR_INPUT_SOURCE_TEXT, *LPNET_DVR_INPUT_SOURCE_TEXT; + +typedef struct tagNET_DVR_INPUT_SOURCE_TEXT_LIST +{ + DWORD dwSize; + NET_DVR_INPUT_SOURCE_TEXT struTextList[MAX_NUM_INPUT_SOURCE_TEXT]; //ıб + BYTE byRes[64]; +}NET_DVR_INPUT_SOURCE_TEXT_LIST, *LPNET_DVR_INPUT_SOURCE_TEXT_LIST; + +typedef struct tagNET_DVR_INPUT_SOURCE_RESOLUTION +{ + DWORD dwSize; + DWORD dwInputSignalNo; //Դ + BYTE byEnabled; //ԶֱǷʹ + BYTE byRes; + WORD wImageWidth; //ͼ + WORD wImageHeight; //ͼ߶ + WORD wRefreshRate; //ˢƵ + BYTE byColorDepth; //ɫȣ32λ16λ8λֿѡ + BYTE byScanType; //ɨͣ1-ɨ裬2-ɨ + BYTE byRes1[62]; +}NET_DVR_INPUT_SOURCE_RESOLUTION, *LPNET_DVR_INPUT_SOURCE_RESOLUTION; + +typedef struct tagNET_DVR_INPUT_SOURCE_RESOLUTION_LIST +{ + DWORD dwSize; + DWORD dwInputSignalCnt; //豸źԴ + LPNET_DVR_INPUT_SOURCE_RESOLUTION lpstruBuffer; //ָ + DWORD dwBufferSize; //С + BYTE byRes[32]; +}NET_DVR_INPUT_SOURCE_RESOLUTION_LIST, *LPNET_DVR_INPUT_SOURCE_RESOLUTION_LIST; + +typedef struct tagNET_DVR_LED_AREA_COND +{ + DWORD dwSize; + DWORD dwVideoWallNo; //ǽ + DWORD dwLEDAreaNo; //LED + BYTE byRes[32]; +}NET_DVR_LED_AREA_COND, *LPNET_DVR_LED_AREA_COND; + +typedef struct tagNET_DVR_LED_AREA_INFO +{ + DWORD dwSize; + DWORD dwLEDAreaNo; //LED + NET_DVR_RECTCFG_EX struRect; // + DWORD dwaOutputNo[MAX_NUM_OUTPUT_CHANNEL]; //б + BYTE byAreaType; //ͣ0-LED1-LCD + BYTE byRes[31]; +}NET_DVR_LED_AREA_INFO, *LPNET_DVR_LED_AREA_INFO; + +typedef struct tagNET_DVR_LED_AREA_INFO_LIST +{ + DWORD dwSize; + DWORD dwLEDAreaNum; //LED + LPNET_DVR_LED_AREA_INFO lpstruBuffer; //ָ + DWORD dwBufferSize; //С + BYTE byRes[32]; +}NET_DVR_LED_AREA_INFO_LIST, *LPNET_DVR_LED_AREA_INFO_LIST; + +//еȴ +typedef struct tagNET_DVR_CALL_WAITTING_CFG +{ + DWORD dwSize; //ṹС + BYTE byEnable; //Ƿúеȴ, 0--ã1-- + BYTE byRes1; + WORD wWaitTime;//еȴʱ䣬λ + WORD wCalledWaitTime;/*λ룬еȴʱ*/ + BYTE byRes[510]; +}NET_DVR_CALL_WAITTING_CFG, *LPNET_DVR_CALL_WAITTING_CFG; + +//Ʋ +typedef struct tagNET_DVR_ALARM_LAMP_CFG +{ + DWORD dwSize; //ṹС + BYTE byEnable; //Ƿþƶʱ˸, 0--ã1-- + BYTE byRes1; + WORD wFlashDuration;//ƶʱ˸ʱ䣬λ + WORD wFlashIntervalTime;//˸ʱ䣬λ + BYTE byRes[510]; +}NET_DVR_ALARM_LAMP_CFG, *LPNET_DVR_ALARM_LAMP_CFG; + +//ʾ +typedef struct tagNET_DVR_VOICE_PROMPTION_CFG +{ + DWORD dwSize; //ṹС + BYTE byEnable; //Ƿʾ, 0--ã1-- + BYTE byRes1[3]; + BYTE byCenterBusyFile[NAME_LEN];//ķæʾļ + BYTE byRefusedFile[NAME_LEN];//ܾʾļ + BYTE byHangUpFile[NAME_LEN];//Խʾļ + BYTE byCallWaittingFile[NAME_LEN];//еȺļ + BYTE byConsultWaittingFile[NAME_LEN];//ҵѯȺļ + BYTE byWelcomeFile[NAME_LEN];//ӭʾļ + BYTE byFarewellFile[NAME_LEN];//ļ + BYTE byCalledVoicePromptName[NAME_LEN];//ʾ + BYTE byRes[384]; +}NET_DVR_VOICE_PROMPTION_CFG, *LPNET_DVR_VOICE_PROMPTION_CFG; + +// +typedef struct tagNET_DVR_EMERGENCE_ALARM_RSP_CTRL_CFG +{ + DWORD dwSize; //ṹС + BYTE byCommand; //0--centerbusy1--refuse + BYTE byType; //ͣ01ҵѯ + BYTE byRes[510]; +}NET_DVR_EMERGENCE_ALARM_RSP_CTRL_CFG, *LPNET_DVR_EMERGENCE_ALARM_RSP_CTRL_CFG; + +///////////*_V50///////////// +typedef struct _tagNET_DVR_ALARMHOST_NETPARAM_V50 +{ + DWORD dwSize; + NET_DVR_IPADDR struIP; + WORD wPort; + BYTE byAddressType; //0 - , 1 - ipv4/ipv6ַ2 - + BYTE byEnable; //ʹܣ0-ã1- + BYTE byDomainName[MAX_DOMAIN_NAME/*64*/]; //GPRSáʱֶξЧ + BYTE byReportProtocol; //1-private 2-NAL2300, 3-Ehome + BYTE byDevID[ACCOUNTNUM_LEN_32/*32*/]; //ЭΪNAL2300ʱЧ + BYTE byProtocolVersion; //EHomeЭ汾0-,1Cv2.02Cv4.03-v5.0 + BYTE byRes1[3]; + BYTE byEHomeKey[NET_SDK_EHOME_KEY_LEN]; //EHome KeyEHome 5.0汾 + BYTE byRes2[28]; //GPRSڹ̶ķϽеģԲҪϢԤһЩֶ +} NET_DVR_ALARMHOST_NETPARAM_V50, *LPNET_DVR_ALARMHOST_NETPARAM_V50; + +typedef struct _tagNET_DVR_ALARMHOST_NETCFG_V50 +{ + DWORD dwSize; + NET_DVR_ALARMHOST_NETPARAM_V50 struNetCenter[MAX_CENTERNUM]; + BYTE byRes1[128]; +} NET_DVR_ALARMHOST_NETCFG_V50, *LPNET_DVR_ALARMHOST_NETCFG_V50; +//Ŀװʽ +typedef enum tagSTREAM_TYPE{ + STREAM_PS = 0x1, //PSļ㣬Ҫڴ洢Ҳڴ + STREAM_3GPP = 0x2, //3GPPļ㣬ڴ洢 +}STREAM_TYPE; +typedef enum tagNET_SDK_INIT_CFG_TYPE +{ + NET_SDK_INIT_CFG_TYPE_CHECK_MODULE_COM = 0, //ӶԱļ + NET_SDK_INIT_CFG_ABILITY = 1, //sdkֵ֧ҵ + NET_SDK_INIT_CFG_SDK_PATH = 2, //HCNetSDKĿ¼ + NET_SDK_INIT_CFG_LIBEAY_PATH = 3, //OpenSSLlibeay32.dll/libcrypto.so/libcrypto.dylib· + NET_SDK_INIT_CFG_SSLEAY_PATH = 4 //OpenSSLssleay32.dll/libssl.so/libssl.dylib· +}NET_SDK_INIT_CFG_TYPE; + +typedef struct tagNET_DVR_INIT_CHECK_MODULE_COM +{ + BYTE byEnable; //ñ 0-ã1- + BYTE byRes[255]; +}NET_DVR_INIT_CHECK_MODULE_COM, *LPNET_DVR_INIT_CHECK_MODULE_COM; +//SDKֵ֧· +typedef enum _INIT_CFG_MAX_NUM +{ + INIT_CFG_NUM_2048 = 2048, // 2048· + INIT_CFG_NUM_5120 = 5120, //5120· + INIT_CFG_NUM_10240 = 10240, // 10240· + INIT_CFG_NUM_15360 = 15360, // 15360· + INIT_CFG_NUM_20480 = 20480, // 20480· +}INIT_CFG_MAX_NUM; + +typedef struct tagNET_DVR_INIT_CFG_ABILITY +{ + INIT_CFG_MAX_NUM enumMaxLoginUsersNum; //עû + INIT_CFG_MAX_NUM enumMaxAlarmNum; //ĸ澯· + BYTE byRes[64]; +}NET_DVR_INIT_CFG_ABILITY, *LPNET_DVR_INIT_CFG_ABILITY; + +typedef struct tagNET_DVR_LOCAL_SDK_PATH +{ + char sPath[NET_SDK_MAX_FILE_PATH];//ַ + BYTE byRes[128]; +}NET_DVR_LOCAL_SDK_PATH, *LPNET_DVR_LOCAL_SDK_PATH; + +typedef struct tagNET_DVR_SDKMEMPOOL_CFG +{ + BYTE byRes[256]; +}NET_DVR_SDKMEMPOOL_CFG, *LPNET_DVR_SDKMEMPOOL_CFG; + + +typedef struct tagNET_DVR_RES_INFO +{ + DWORD dwImageWidth; //ͼ + DWORD dwImageHeight; //ͼ߶ +}NET_DVR_RES_INFO, *LPNET_DVR_RES_INFO; + +typedef struct tagNET_DVR_VS_INPUT_CHAN_INIT +{ + DWORD dwSize; + DWORD dwVSInputChan; //ͨ + DWORD dwResNums; //ֱʵĸ + NET_DVR_RES_INFO struResList[MAX_RES_NUM_ONE_VS_INPUT_CHAN]; //ֱб + BYTE byRes[32]; +}NET_DVR_VS_INPUT_CHAN_INIT, *LPNET_DVR_VS_INPUT_CHAN_INIT; + +typedef struct tagNET_DVR_VS_INPUT_CHAN_INIT_LIST +{ + DWORD dwSize; + NET_DVR_VS_INPUT_CHAN_INIT struChanList[MAX_VS_INPUT_CHAN_NUM]; //ͨб + BYTE byRes[32]; +}NET_DVR_VS_INPUT_CHAN_INIT_LIST, *LPNET_DVR_VS_INPUT_CHAN_INIT_LIST; + +typedef struct tagNET_DVR_VS_INPUT_CHAN_CFG +{ + DWORD dwSize; + DWORD dwVSInputChan; //ͨ + NET_DVR_RES_INFO struResolutin; //ֱ + BYTE byRes[64]; +}NET_DVR_VS_INPUT_CHAN_CFG, *LPNET_DVR_VS_INPUT_CHAN_CFG; + +typedef struct tagNET_DVR_VS_NETSRC_CFG +{ + DWORD dwSize; + DWORD dwVSInputChan; //ͨ + BYTE byDispUrl[MAX_URL_LEN]; //ʾURL + BYTE byEnabled; //ǷURL + BYTE byRes[127]; +}NET_DVR_VS_NETSRC_CFG, *LPNET_DVR_VS_NETSRC_CFG; + +typedef struct tagNET_DVR_EDID_FILE_INFO +{ + DWORD dwSize; + DWORD dwEDIDFileNo; //EDIDļţ1ʼ + BYTE byFileName[FILE_NAME_LEN]; //EDIDļ + BYTE byRes[32]; +}NET_DVR_EDID_FILE_INFO, *LPNET_DVR_EDID_FILE_INFO; + +typedef struct tagNET_DVR_EDID_FILE_INFO_LIST +{ + DWORD dwSize; + DWORD dwEDIDFileNum; //صNET_DVR_EDID_FILE_INFO + LPNET_DVR_EDID_FILE_INFO lpstruBuffer; //ָ + DWORD dwBufferSize; //С + BYTE byRes[32]; +}NET_DVR_EDID_FILE_INFO_LIST, *LPNET_DVR_EDID_FILE_INFO_LIST; + +//ӴڽOSD +typedef struct tagNET_DVR_OSD_INFO +{ + BYTE byEnabled; //Ƿʹܣ-ʹܣ-ʹ + BYTE byEnabledFlash; //Ƿ˸-˸-˸ + BYTE byFontSize; //С1-2-У3-С + BYTE byTransparent; //͸ȣȡֵΧ0-100 + NET_DVR_RGB_COLOR struColor; //ɫ + WORD wCoordinateX; //OSDϽX + WORD wCoordinateY; //OSDϽY + BYTE byContent[MAX_LEN_OSD_CONTENT]; //OSDϢ + BYTE byRes[32]; +}NET_DVR_OSD_INFO, *LPNET_DVR_OSD_INFO; + +typedef struct tagNET_DVR_SUBWND_DECODE_OSD +{ + DWORD dwSize; + DWORD dwSubWndNo; //Ӵںţ4ֽϷʽ + DWORD dwOSDNums; //ӴõOSDϢĸ + NET_DVR_OSD_INFO struOSDList[MAX_NUM_OSD_ONE_SUBWND]; //OSDϢб + BYTE byRes[32]; +}NET_DVR_SUBWND_DECODE_OSD, *LPNET_DVR_SUBWND_DECODE_OSD; + +typedef struct tagNET_DVR_SUBWND_DECODE_OSD_LIST +{ + DWORD dwSize; + NET_DVR_SUBWND_DECODE_OSD struSubWndList[MAX_NUM_SPLIT_WND]; //ӴڵĽOSD + BYTE byRes[32]; +}NET_DVR_SUBWND_DECODE_OSD_LIST, *LPNET_DVR_SUBWND_DECODE_OSD_LIST; + +typedef struct tagNET_DVR_DECODE_CHANNEL_OSD +{ + DWORD dwSize; + NET_DVR_OSD_INFO struOSDInfo[MAX_NUM_OSD]; //OSDϢб + BYTE byRes[32]; +}NET_DVR_DECODE_CHANNEL_OSD, *LPNET_DVR_DECODE_CHANNEL_OSD; + +//ȳܻò +typedef struct tagNET_DVR_THERMINTELL_PARAM +{ + DWORD dwSize;//ṹС + BYTE byIntellType; //ܹԴ,0~+Ϊ(Ĭ)1~ֻ⣬2~,3~л, 4~£5-+̻⣬6-+ 7-Ϊ 8- + BYTE byRes[127]; +}NET_DVR_THERMINTELL_PARAM, *LPNET_DVR_THERMINTELL_PARAM; + +typedef struct tagNET_DVR_FACE_THERMOMETRY_ALARM +{ + DWORD dwSize; + DWORD dwChannel;//ͨ + BYTE byRuleID; //¹ID:1-40 + BYTE byRes1[3]; + BYTE byRuleName[NAME_LEN]; // + DWORD dwRelativeTime; //ʱ + DWORD dwAbsTime; //ʱ + BYTE byFaceDetectionState;//״̬0~δ⵽1~Ѽ⵽ + BYTE byThermometryUnit;//µλ: 0-϶ȣ棩1-϶ȣH2-(K) + BYTE byAlarmRule;//0-´ڣ1-С + BYTE byRes2[1]; + float fAlarmTemperature;//¶ȣ-20.0~120.0棬ȷС1λ + float fRuleTemperature;// ñ¶ȣ-20.0~60.0棬ȷС1λ + DWORD dwVisibleLightImageLen;// ɼͼƬ + BYTE *pVisibleLightImage; //ɼͼƬָ + DWORD dwFaceImageLen;// ͼ + BYTE *pFaceImage; //ͼָ + NET_VCA_RECT struFaceRegion;//Ŀ߽豸ʶץͼƬУͼ + float fMinTemperature;// ¶ȣ-20.0~120.0棬ȷС1λ + float fAverageTemperature;//ƽ£-20.0~120.0棬ȷС1λ + NET_VCA_POINT struMinTemperaturePoint; //¶λ + NET_VCA_POINT struMaxTemperaturePoint;//¶λ + BYTE byRes[720]; +}NET_DVR_FACE_THERMOMETRY_ALARM, *LPNET_DVR_FACE_THERMOMETRY_ALARM; + +//GUIDļ +typedef struct tagNET_DVR_GUID_FILE_EXPORT +{ + DWORD dwSize; + char sLoginPassWord[NET_SDK_MAX_LOGIN_PASSWORD_LEN/*128*/]; //û¼ + BYTE byRes[128]; +}NET_DVR_GUID_FILE_EXPORT, *LPNET_DVR_GUID_FILE_EXPORT; + +//û¼У +typedef struct tagNET_DVR_LOGIN_PASSWORDCFG +{ + DWORD dwSize; + char sLoginPassWord[NET_SDK_MAX_LOGIN_PASSWORD_LEN/*128*/]; //û¼ + BYTE byRes[256]; +}NET_DVR_LOGIN_PASSWORDCFG, *LPNET_DVR_LOGIN_PASSWORDCFG; + +//ȫ +typedef struct tagNET_DVR_SINGLE_SECURITY_QUESTION_CFG +{ + DWORD dwSize; + DWORD dwId;//ţȫţֻ + char sAnswer[NET_SDK_MAX_ANSWER_LEN/*256*/];//𰸣ȡʱֻ + BYTE byMark;// 0-δ 1- + BYTE byRes[127]; +}NET_DVR_SINGLE_SECURITY_QUESTION_CFG, *LPNET_DVR_SINGLE_SECURITY_QUESTION_CFG; + +//ȫ +typedef struct tagNET_DVR_SECURITY_QUESTION_CFG +{ + DWORD dwSize; + NET_DVR_SINGLE_SECURITY_QUESTION_CFG struSecurityQuestion[NET_SDK_MAX_QUESTION_LIST_LEN/*32*/];//ȫб + char sLoginPassWord[NET_SDK_MAX_LOGIN_PASSWORD_LEN/*128*/];//adminû¼ + BYTE byRes[512]; +}NET_DVR_SECURITY_QUESTION_CFG, *LPNET_DVR_SECURITY_QUESTION_CFG; + +typedef struct tagNET_DVR_ALARMIN_TRIGGER_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨţ1ʼ + DWORD dwAlarmInNo;//ţ0ʼ + BYTE byRes[256]; +}NET_DVR_ALARMIN_TRIGGER_COND, *LPNET_DVR_ALARMIN_TRIGGER_COND; + +typedef struct tagNET_DVR_FACELIB_GUARD_COND +{ + DWORD dwSize; + DWORD dwChannel; //ͨ + char szFDID[68];//ID + BYTE byRes[128]; +}NET_DVR_FACELIB_GUARD_COND, *LPNET_DVR_FACELIB_GUARD_COND; + +typedef struct tagNET_DVR_GUID_FILE_STATUS_INFO +{ + DWORD dwSize; + BYTE byLockStatus; //0δ1 + BYTE byPasswd; //0:1ȷע:ֵδʱЧ + BYTE byRetryNum; //ʣೢԴע:ֵδʱЧ + BYTE byRes1; + DWORD dwLockTime; //ʣʱ䣺λ롣ע:ֵʱЧ + BYTE byRes[128]; +}NET_DVR_GUID_FILE_STATUS_INFO, *LPNET_DVR_GUID_FILE_STATUS_INFO; + + +//ģʽ +typedef struct tagNET_DVR_THERMOMETRY_MODE +{ + DWORD dwSize;//ṹС + BYTE byMode;//ģʽ0~ͨģʽ1~רģʽ + BYTE byThermometryROIEnabled; //ROIʹ 0- 1- 2-ڻݿǣ + BYTE byRes[62]; +}NET_DVR_THERMOMETRY_MODE, *LPNET_DVR_THERMOMETRY_MODE; + +//ȳ㷨汾ȡ +typedef struct tagNET_DVR_THERMAL_ALGINFO +{ + DWORD dwSize;//ṹС + char sThermometryAlgName[NET_SDK_MAX_THERMOMETRYALGNAME/*128*/];//㷨汾 + char sShipsAlgName[NET_SDK_MAX_SHIPSALGNAME /*128*/];//ֻ㷨汾 + char sFireAlgName[NET_SDK_MAX_FIRESALGNAME /*128*/];//㷨汾 + BYTE byRes[768]; +}NET_DVR_THERMAL_ALGINFO, *LPNET_DVR_THERMAL_ALGINFO; + +// +typedef struct tagNET_DVR_CURRENT_LOCK +{ + DWORD dwSize;//ṹС + BYTE byCurrentLock;//ֱ̨0~1~ȫ2~3/43~ + BYTE byRes[255]; +}NET_DVR_CURRENT_LOCK, *LPNET_DVR_CURRENT_LOCK; + +//ȶԱ͸ʽ +typedef struct tagNET_VCA_FACESNAP_RAWDATA_ALARM_ +{ + DWORD dwSize; //ṹС + DWORD dwRelativeTime; // ʱ + DWORD dwAbsTime; // ʱ + NET_VCA_DEV_INFO struDevInfo; //ǰ豸Ϣ + DWORD dwJsonDataLen; //jsonݶϢ0-ûݣ0ʾݣṹŵjsonݳȣ + BYTE* pJsonBuff;// jsonָ + BYTE byRes[256]; // ֽ +}NET_VCA_FACESNAP_RAWDATA_ALARM, *LPNET_VCA_FACESNAP_RAWDATA_ALARM; + +//߼У +typedef struct tagNET_DVR_ADVANCE_SCREEN_CHECK_PARAM +{ + BYTE byDelFullScreenGamut; /*Ƿɾɫ,0-,1-ǣbyOperateType Ϊ3-ɾУʱЧ*/ + BYTE byDelLightPanelGamut; /*Ƿɾưɫ,0-,1-ǣbyOperateType Ϊ3-ɾУʱЧ*/ + BYTE byDelLightPanelWhiteBalance; /*Ƿɾưƽ,0-,1-ǣbyOperateType Ϊ3-ɾУʱЧ*/ + BYTE byRes[13]; +}NET_DVR_ADVANCE_SCREEN_CHECK_PARAM, *LPNET_DVR_ADVANCE_SCREEN_CHECK_PARAM; + +//LEDĻУ +typedef struct tagNET_SDK_LED_SCREEN_CHECK_PARAM +{ + DWORD dwSize; + BYTE byOperateType; //ͣ1-дУݣ2-УԤ3-ɾУݣ4-ԭʼݣ5-УԭʼԤ + BYTE byIsRGBSynChk; //RGBǷͬ0-֧֣!0-֧֣byOperateTypeΪ12ʱЧ + BYTE byScreenCheckType; //ĻУ,0-ͨУ,1-߼У + BYTE byRes1; + WORD wRgbPermil; //RGBͬǧֱȣbyOperateTypeΪ12byIsRGBSynChkʱЧ + WORD wRedPermil; //ɫǧֱȣbyOperateTypeΪ12byIsRGBSynChkΪʱЧ + WORD wGreenPermil; //ɫǧֱȣbyOperateTypeΪ12byIsRGBSynChkΪʱЧ + WORD wBluePermil; //ɫǧֱȣbyOperateTypeΪ12byIsRGBSynChkΪʱЧ + DWORD dwRectCount; // + NET_DVR_RECTCFG_EX struRectList[MAX_SCREEN_AREA_NUM]; //б˳ + NET_DVR_ADVANCE_SCREEN_CHECK_PARAM struAdvanceScreenCheckParam;//߼У,byScreenCheckTypeΪ1ʱЧ + BYTE byRes2[48]; +}NET_SDK_LED_SCREEN_CHECK_PARAM, *LPNET_SDK_LED_SCREEN_CHECK_PARAM; + +//LEDĻУӦ +typedef struct tagNET_SDK_SCREEN_CHECK_RESPONSE_DATA +{ + DWORD dwSize; + BYTE byDataType; //ͣ1-ȣȣ2-״̬ + BYTE byOperateType; //ͣ1-дУݣ2-УԤ3-ɾУ + BYTE byProgress; //ȣbyDataTypeΪ1ʱЧ0-100 + BYTE byStatus; //״̬byDataTypeΪ2ʱЧ1-LEDĻУʧܣ2-LEDĻӦĽտڣ3-Уʧܣԭʼ쳣 + //4-ĻͺŲ֧У5-豸æУ6-豸ڴ治 + NET_DVR_RECTCFG_EX struRect; //LEDĻbyDataTypeΪ2ʱЧ + BYTE byRes[64]; +}NET_SDK_SCREEN_CHECK_RESPONSE_DATA, *LPNET_SDK_SCREEN_CHECK_RESPONSE_DATA; + +typedef struct tagNET_DVR_PLAY_BY_NAME_PARA +{ + char szFileName[100]; //طļ + BYTE byDownload; //Ƿ 0-1- + BYTE byRes1[127]; + HWND hWnd; //طŵĴھΪգSDKյݣʾ + NET_DVR_ADDRESS struAddr; //ļڼȺCSַϢϢļʱ᷵ + //Ϊձʾ¼ַ + BYTE byRes2[256]; +}NET_DVR_PLAY_BY_NAME_PARA, *LPNET_DVR_PLAY_BY_NAME_PARA; + +typedef struct tagNET_DVR_PLAYBCK_BYTIME_COND_PCNVR +{ + DWORD dwSize; + NET_DVR_IPADDR struIpAddr; + WORD wIpPort; + BYTE byRes[2]; + char sDomainName[MAX_DOMAIN_NAME]; + char sSerial[SERIALNO_LEN]; + LONG iChannel; + NET_DVR_TIME struStartTime; + NET_DVR_TIME struStopTime; + HWND hWnd; +}NET_DVR_PLAYBCK_BYTIME_COND_PCNVR, *LPNET_DVR_PLAYBCK_BYTIME_COND_PCNVR; + +//ļؼȺ¼ļ +typedef struct tagNET_DVR_DOWNLOAD_BY_NAME_COND +{ + char *pFileName; //طļ\0100ֽ + char *pSavedFileName;//ļλ + NET_DVR_ADDRESS struAddr; //ļڼȺCSַϢϢļʱ᷵ + //Ϊձʾ¼ַ + BYTE byRes[256]; +}NET_DVR_DOWNLOAD_BY_NAME_COND, *LPNET_DVR_DOWNLOAD_BY_NAME_COND; + +typedef struct tagNET_DVR_PIC_PARAM //ҽṹ +{ + char *pDVRFileName; //ͼƬ\064ֽ + char *pSavedFileBuf; //ͼƬĻڴⲿͷ + DWORD dwBufLen; //С + DWORD *lpdwRetLen; //ʵյݳָ룬ΪNULL + NET_DVR_ADDRESS struAddr; //ͼƬڵĵַϢͼƬʱ᷵ + BYTE byRes[256]; //ֽ +}NET_DVR_PIC_PARAM, *LPNET_DVR_PIC_PARAM; + +#define NET_SDK_MAX_INDENTITY_KEY_LEN 64 // + +// +typedef struct tagNET_DVR_FACELIB_COND +{ + DWORD dwSize; + char szFDID[NET_SDK_MAX_FDID_LEN/*256*/];//ID + BYTE byConcurrent;//豸 0-1-ʼ + BYTE byCover;//Ƿ񸲸ʽ 0-1- + BYTE byCustomFaceLibID;//FDIDǷԶ壬0-ǣ1-ǣ + /*/ISAPI/Intelligent/channels//faceContrast/capabilitiesзisSupportNoSaveUploadPictureڵʱ + Dzģʽ£ֲ֧ϴԭͼIJ:ϴɹͼƬ豸ģɹ󣬻Ὣϴԭͼɾ + עò޷벢ͬʱС*/ + BYTE byPictureSaveMode;//ϴԭͼģʽ0-棬1-; + BYTE byIdentityKey[NET_SDK_MAX_INDENTITY_KEY_LEN/*64*/];// + BYTE byRes[60]; +}NET_DVR_FACELIB_COND, *LPNET_DVR_FACELIB_COND; + +// +typedef struct tagNET_DVR_HBDLIB_COND +{ + DWORD dwSize; + char szHBDID[NET_SDK_MAX_HBDID_LEN/*256*/];//ID + BYTE byConcurrent;//豸 0-1-ʼ + BYTE byCover;//Ƿ񸲸ʽ 0-1- + BYTE byCustomHBDID;// HBDIDǷԶ壬0-ǣ1-ǣ + BYTE byRes[125]; +}NET_DVR_HBDLIB_COND, *LPNET_DVR_HBDLIB_COND; + +typedef struct tagNET_DVR_EXPORT_PUBLISH_SCHEDULE +{ + DWORD dwScheduleID;// ճ + DOWNLOAD_DATA_CB fnDownloadFileCallBack; //ݻص + void* pUser; //ûָ + BYTE byRes[32]; +}NET_DVR_EXPORT_PUBLISH_SCHEDULE, *LPNET_DVR_EXPORT_PUBLISH_SCHEDULE; + +typedef struct tagNET_DVR_GBT28181_AUDIO_OUTPUT_COND +{ + DWORD dwSize; + DWORD dwAudioChannel;//Խͨ + BYTE byRes[128]; +}NET_DVR_GBT28181_AUDIO_OUTPUT_COND, *LPNET_DVR_GBT28181_AUDIO_OUTPUT_COND; + +//GBT28181Эͨ ýṹ +typedef struct tagNET_DVR_GBT28181_AUDIO_OUTPUT_CFG +{ + DWORD dwSize; + char szAudioOutNumID[MAX_COMPRESSIONID_LEN];//豸ID + BYTE byRes[256]; +}NET_DVR_GBT28181_AUDIO_OUTPUT_CFG, *LPNET_DVR_GBT28181_AUDIO_OUTPUT_CFG; + +typedef struct tagNET_DVR_NOTICE_VIDEO_DATA +{ + DWORD dwSize; + DWORD dwFileSize; //ļСλֽ + BYTE byNoticeNumber[MAX_NOTICE_NUMBER_LEN]; // + BYTE byRes[2016]; +}NET_DVR_NOTICE_VIDEO_DATA, *LPNET_DVR_NOTICE_VIDEO_DATA; + +typedef struct tagNET_DVR_NOTICE_VIDEO_DATA_COND +{ + DWORD dwSize; + BYTE byRes[256]; // +}NET_DVR_NOTICE_VIDEO_DATA_COND, *LPNET_DVR_NOTICE_VIDEO_DATA_COND; + +typedef struct tagNET_DVR_NOTICE_VIDEO_DATA_CFG +{ + DWORD dwSize; + DWORD dwDataLen; //ݳ + char* pDataBuffer; //ָ + BYTE byDataType; //ͣ0-Ч1-ṹݣNET_DVR_NOTICE_VIDEO_DATA2-Ƶ + BYTE byRes[63]; +}NET_DVR_NOTICE_VIDEO_DATA_CFG, *LPNET_DVR_NOTICE_VIDEO_DATA_CFG; + +typedef struct tagNET_DVR_UPGRADE_FIRMWARE_INFO +{ + DWORD dwMagicNumber; /* ħֶΣ̶ֵ0x484b5753 */ + DWORD dwCheckSum; /* ļͷУ */ + DWORD dwHeadLen; /* ļͷ */ + DWORD dwFileNums; /* ļ */ + DWORD dwLanguage; /* ԣ1-ӢĻԣ2- */ + DWORD dwDeviceClassID; /* 1 C DS9000 DVR */ + DWORD dwOemCode; /* 1 C private */ + BYTE byUpgradeVersion; /* 汾: 0xFE - жflash, ram, DSP ram */ + BYTE byResFeature[15]; /* ֶ */ + BYTE byFlashSize; /* 0 - do not need check; 1 - 16M; 2 - 32M; 3 - 64M */ + BYTE byRamSize; /* 0 - do not need check; 1 - 128M; 2 - 256M; 3 - 512M; 4 - 1024M*/ + BYTE byDspRamSize; /* 0 - do not need check; 1 - 64M; 2 - 128M; 3 - 256M */ + BYTE byRes[17]; /* */ +}NET_DVR_UPGRADE_FIRMWARE_INFO, *LPNET_DVR_UPGRADE_FIRMWARE_INFO; + + +typedef struct tagNET_DVR_SCHEDULE_FILE_RET +{ + DWORD dwSize; + char szFileName[32]; //ļ + DWORD dwFileLen; //ļ + BYTE byRes[64]; +}NET_DVR_SCHEDULE_FILE_RET, *LPNET_DVR_SCHEDULE_FILE_RET; + +#define NET_SDK_MAX_EXAM_ROUND_NO 64 //Գα󳤶 +#define NET_SDK_MAX_EXAM_NO 64 //Ա󳤶 +#define NET_SDK_MAX_EXAM_SUBJECT 64 //ԿĿ󳤶 +#define NET_SDK_MAX_TEACHER_NO 64 //࿼ʦ󳤶 +#define NET_SDK_MAX_TEACHER_NAME 64 //࿼ʦ󳤶 +#define NET_SDK_MAX_EXAMINEE_NO 64 //󳤶 +#define NET_SDK_MAX_ADMISSION_TICKET 64 //׼֤󳤶 + +typedef struct tagNET_DVR_EXAM_INFO_COND +{ + DWORD dwSize; + DWORD dwExamNumber; //ϢĿ + BYTE byRes[128]; +}NET_DVR_EXAM_INFO_COND, *LPNET_DVR_EXAM_INFO_COND; + +typedef struct tagNET_DVR_EXAM_INFO_CFG +{ + DWORD dwSize; + BYTE byExamRoundNo[NET_SDK_MAX_EXAM_ROUND_NO/*64*/]; //Գαţijþ忼ԣ + BYTE byExamNo[NET_SDK_MAX_EXAM_NO/*64*/]; //Աţijοԣೡԣ + BYTE byExamSubject[NET_SDK_MAX_EXAM_SUBJECT/*64*/]; //ԿĿ + BYTE byTeacherNo[NET_SDK_MAX_TEACHER_NO/*64*/]; //࿼ʦ + BYTE byTeacherName[NET_SDK_MAX_TEACHER_NAME/*64*/]; //࿼ʦ + NET_DVR_TIME struStartTime; //Կʼʱ + NET_DVR_TIME struEndTime; //Խʱ + BYTE byExamInfoValid; //ϢǷЧ0-Ч1-ЧڿԳαɾϢֶΪ0ʱɾ + BYTE byRes[127]; +}NET_DVR_EXAM_INFO_CFG, *LPNET_DVR_EXAM_INFO_CFG; + +typedef struct tagNET_DVR_EXAM_INFO_STATUS +{ + DWORD dwSize; + BYTE byExamRoundNo[NET_SDK_MAX_EXAM_ROUND_NO/*64*/]; //Գαţijþ忼ԣ + BYTE byStatus; //·״̬0-Ч1-ʧܣ2-ɹÿԳ·Ƿɹ + BYTE byRes[127]; +}NET_DVR_EXAM_INFO_STATUS, *LPNET_DVR_EXAM_INFO_STATUS; + +typedef struct tagNET_DVR_EXAMINEE_INFO_COND +{ + DWORD dwSize; + DWORD dwExamineeNumber; //ϢĿ + BYTE byRes[128]; +}NET_DVR_EXAMINEE_INFO_COND, *LPNET_DVR_EXAMINEE_INFO_COND; + +typedef struct tagNET_DVR_EXAMINEE_INFO_CFG +{ + DWORD dwSize; + BYTE byExamineeNo[NET_SDK_MAX_EXAMINEE_NO/*64*/]; // + BYTE byAdmissionTicket[NET_SDK_MAX_ADMISSION_TICKET/*64*/]; //׼֤ + BYTE byExamRoundNo[NET_SDK_MAX_EXAM_ROUND_NO/*64*/]; //Գαţijþ忼ԣ + BYTE byName[NAME_LEN/*32*/]; // + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + BYTE bySex; //Ա0-Ч1-У2-Ů + BYTE byExamineeInfoValid; //ϢǷЧ0-Ч1-ЧڿźͿԳαɾϢֶΪ0ʱɾ + BYTE byRes[126]; +}NET_DVR_EXAMINEE_INFO_CFG, *LPNET_DVR_EXAMINEE_INFO_CFG; + +typedef struct tagNET_DVR_EXAMINEE_INFO_STATUS +{ + DWORD dwSize; + BYTE byExamineeNo[NET_SDK_MAX_EXAMINEE_NO/*64*/]; // + BYTE byExamRoundNo[NET_SDK_MAX_EXAM_ROUND_NO/*64*/]; //Գαţijþ忼ԣ + BYTE byStatus; //·״̬0-Ч1-ʧܣ2-ɹÿϢ·Ƿɹ + BYTE byRes[127]; +}NET_DVR_EXAMINEE_INFO_STATUS, *LPNET_DVR_EXAMINEE_INFO_STATUS; + +typedef struct tagNET_DVR_EXAM_COMPARE_RESULT_COND +{ + DWORD dwSize; + BYTE byExamRoundNo[NET_SDK_MAX_EXAM_ROUND_NO/*64*/]; //Գαţijþ忼ԣ + BYTE byExamNo[NET_SDK_MAX_EXAM_NO/*64*/]; //Աţijοԣೡԣ + NET_DVR_TIME struStartTime; //ʼʱ + NET_DVR_TIME struEndTime; //ʱ + BYTE byRes[512]; +}NET_DVR_EXAM_COMPARE_RESULT_COND, *LPNET_DVR_EXAM_COMPARE_RESULT_COND; + +typedef struct tagNET_DVR_EXAM_COMPARE_RESULT_CFG +{ + DWORD dwSize; + NET_DVR_TIME struTime; //ʱ + BYTE byExamineeNo[NET_SDK_MAX_EXAMINEE_NO/*64*/]; // + BYTE byAdmissionTicket[NET_SDK_MAX_ADMISSION_TICKET/*64*/]; //׼֤ + BYTE byExamNo[NET_SDK_MAX_EXAM_NO/*64*/]; //Աţijοԣೡԣ + BYTE byExamRoundNo[NET_SDK_MAX_EXAM_ROUND_NO/*64*/]; //Գαţijþ忼ԣ + BYTE byName[NAME_LEN/*32*/]; // + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + DWORD dwPicDataLen; //ȶץͼƬݴСΪ0DZʾ + char *pPicData; //ȶץͼƬָ + BYTE byRes[256]; +}NET_DVR_EXAM_COMPARE_RESULT_CFG, *LPNET_DVR_EXAM_COMPARE_RESULT_CFG; + +typedef struct tagNET_DVR_BLOCKLIST_PICTURE_COND +{ + DWORD dwSize; + DWORD dwPictureNum; //ͼƬ + BYTE byRes[128]; +}NET_DVR_BLOCKLIST_PICTURE_COND, *LPNET_DVR_BLOCKLIST_PICTURE_COND; + +typedef struct tagNET_DVR_BLOCKLIST_PICTURE_STATUS +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN/*32*/]; // + BYTE byStatus; //״̬0-Ч1-У2-ϴʧܣ3-ɹ + BYTE byRes[63]; +}NET_DVR_BLOCKLIST_PICTURE_STATUS, *LPNET_DVR_BLOCKLIST_PICTURE_STATUS; + +typedef struct tagNET_DVR_BLOCKLIST_PICTURE_CFG +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN/*32*/]; // + BYTE byName[NAME_LEN/*32*/]; // + BYTE bySex; //Ա0-Ч1-У2-Ů + BYTE byPictureValid; //ֹͼƬǷЧ0-Ч1-ЧڰɾֹͼƬֶΪ0ʱɾɾʱݽֹͼƬ + BYTE byRes1[2]; + DWORD dwPictureLen; //ֹͼƬȣͼƬС1M + char* pPictureBuffer; //ֹͼƬָ + BYTE byRes[128]; +}NET_DVR_BLOCKLIST_PICTURE_CFG, *LPNET_DVR_BLOCKLIST_PICTURE_CFG; + +typedef struct tagNET_DVR_UPLOAD_ID_BLOCKLIST_COND +{ + DWORD dwSize; + DWORD dwBlockListNum; //ֹ + BYTE byRes[128]; +}NET_DVR_UPLOAD_ID_BLOCKLIST_COND, *LPNET_DVR_UPLOAD_ID_BLOCKLIST_COND; + +typedef struct tagNET_DVR_UPLOAD_ID_BLOCKLIST_CFG +{ + DWORD dwSize; + NET_DVR_ID_CARD_INFO struIDCardCfg;//֤Ϣýṹ֤ΪֶΪѡ + BYTE byBlockListValid; //ֹ֤ǷЧ0-Ч1-Чڰ֤ɾֶֹ֤Ϊ0ʱɾ + BYTE byRes[127]; +}NET_DVR_UPLOAD_ID_BLOCKLIST_CFG, *LPNET_DVR_UPLOAD_ID_BLOCKLIST_CFG; + +typedef struct tagNET_DVR_UPLOAD_ID_BLOCKLIST_STATUS +{ + DWORD dwSize; + BYTE byIDNum[MAX_ID_NUM_LEN]; //֤ + BYTE byStatus; //״̬0-Ч1-У2-ϴʧܣ3-ɹ + BYTE byRes[63]; +}NET_DVR_UPLOAD_ID_BLOCKLIST_STATUS, *LPNET_DVR_UPLOAD_ID_BLOCKLIST_STATUS; + +typedef struct tagNET_DVR_ALARM_ISAPI_INFO +{ + char * pAlarmData; // + DWORD dwAlarmDataLen; // ݳ + BYTE byDataType; // 0-invalid,1-xml,2-json + BYTE byPicturesNumber; // ͼƬ + BYTE byRes[2]; + void * pPicPackData; // ͼƬ䳤 + BYTE byRes1[32]; +}NET_DVR_ALARM_ISAPI_INFO, *LPNET_DVR_ALARM_ISAPI_INFO; + +typedef struct tagNET_DVR_ALARM_ISAPI_PICDATA +{ + DWORD dwPicLen; + BYTE byPicType; //ͼƬʽ: 1-jpg, 2-wav, 3-mp4 + BYTE byRes[3]; + char szFilename[MAX_FILE_PATH_LEN]; + BYTE *pPicData; +}NET_DVR_ALARM_ISAPI_PICDATA, *LPNET_DVR_ALARM_ISAPI_PICDATA; + +typedef struct tagNET_DVR_FORMAT_HDD +{ + DWORD dwSize;//ṹ峤 + DWORD dwDiskNo;//Ӳ̺ţ0ʼ0xffʾӲЧֻӲ̣ + NET_DVR_IPADDR struLocateIP;//Ӳ豸IPӦӲ̹V50лȡszHDLocateIPϢ + BYTE byRes[16]; +}NET_DVR_FORMAT_HDD, *LPNET_DVR_FORMAT_HDD; + +typedef struct tagNET_DVR_CHECK_FACE_PICTURE_COND +{ + DWORD dwSize; + DWORD dwPictureNum; //ͼƬ + BYTE byCheckTemplate; //0-УͼƬǷϷĬϣ1-УͼƬͽģǷƥ + BYTE byRes[127]; +}NET_DVR_CHECK_FACE_PICTURE_COND, *LPNET_DVR_CHECK_FACE_PICTURE_COND; + +typedef struct tagNET_DVR_CHECK_FACE_PICTURE_CFG +{ + DWORD dwSize; + DWORD dwPictureNo; //ͼƬ + DWORD dwPictureLen; //ͼƬȣͼƬС200k + char* pPictureBuffer; //ͼƬָ + DWORD dwFaceTemplateLen; //ģݳ + char* pFaceTemplateBuffer; //ģָ + BYTE byRes[248]; +}NET_DVR_CHECK_FACE_PICTURE_CFG, *LPNET_DVR_CHECK_FACE_PICTURE_CFG; + +typedef struct tagNET_DVR_CHECK_FACE_PICTURE_STATUS +{ + DWORD dwSize; + DWORD dwPictureNo; //ͼƬ + BYTE byCheckStatus; //У0-Ч1-ģɹ2-ģʧܣ3-ģͨѶ쳣4-ͼ5-ϣ6-£7-ƫ8-ƫң9-˳ʱת + //10 - ʱת11-ۼС12-ģƥ䣬13-ģ岻ƥ,14- + BYTE byRes[127]; +}NET_DVR_CHECK_FACE_PICTURE_STATUS, *LPNET_DVR_CHECK_FACE_PICTURE_STATUS; + +typedef struct tagNET_SDK_NPQ_STATE_SINGLE +{ + DWORD dwRttUs; //rttλus + DWORD dwRealRttUs; //ʵʱrttλus + DWORD dwBitRate; //ʣλbps + BYTE byLossFraction; //ʣλ1/256 + BYTE byLossFraction2; //ָ֮Ķʣֻڽն˻ȡλ1/256 + BYTE byRes[126]; +}NET_SDK_NPQ_STATE_SINGLE, *LPNET_SDK_NPQ_STATE_SINGLE; + + +typedef struct tagNET_SDK_NPQ_STATE +{ + DWORD dwSize; + NET_SDK_NPQ_STATE_SINGLE struAudioState; //Ƶ״̬ + NET_SDK_NPQ_STATE_SINGLE struVideoState; //Ƶ״̬ + BYTE byRes[256]; +}NET_SDK_NPQ_STATE, *LPNET_SDK_NPQ_STATE; + +typedef struct tagNET_SDK_NPQ_NOTIFY_PARAM +{ + LONG iVersion; //ṹ汾Ժ + DWORD dwBitRate; // λbps + BOOL bHaveBitrate; //ֶǷЧ־ + BOOL bHaveForceIframe; //ǿIֶ֡ǷЧ־ + BOOL bForceIframe; //ǿI֡ + BOOL bHaveScale; //scaleֶǷЧ־,طʱֶЧ,ͨSDKŽӿʵ + float fScale; //scaleϢ 1248,طʱֶЧ,ͨSDKŽӿʵ + BYTE res[240]; +}NET_SDK_NPQ_NOTIFY_PARAM, *LPNET_SDK_NPQ_NOTIFY_PARAM; + +//Ϣѯṹ +typedef struct tagNET_DVR_ALARM_SEARCH_COND +{ + DWORD dwSize; + NET_DVR_TIME_SEARCH_COND strStartTime; //ʼʱ,ʱΪͨʱɸѡ + NET_DVR_TIME_SEARCH_COND strStopTime; //ʱ, ʱΪͨʱɸѡ + /* + ֵֶ뱨ͬĿǰ֧֣ + COMM_VCA_ALARM 0x4993 ܼⱨ + COMM_UPLOAD_FACESNAP_RESULT 0x1112 ʶϴ + COMM_SNAP_MATCH_ALAR 0x2902 ȶԽϴ + */ + DWORD dwAlarmComm; //Ϊбˡ + char sAlarmUID[64]; //UIDʶϴʱ豸صUIDʶ64ֽڵijȣʹʱ䣨ȷ룩漴ķʽɣ,ΪUID + WORD wEventType;//¼ͣdwAlarmCommΪCOMM_VCA_ALARM 0x4993 ܼⱨЧ0-ʾ¼,1-Ŀ⣨mixedTargetDetection,2-Ŀ⣨radarVideoDetection + WORD wSubEventType;//¼ͣ0-ʾ¼ֵwEventTypeȡֵ仯仯μ + BYTE bySupport; // + BYTE byNoBoundary; //Ƿ񲻴boundary0-1-ǣdwAlarmCommΪܼⱨʱЧΪ1ʱ¼ΪCOMM_ISAPI_ALARM + BYTE byRes[122]; +}NET_DVR_ALARM_SEARCH_COND, *LPNET_DVR_ALARM_SEARCH_COND; +//Ϣѯṹ +typedef struct tagNET_DVR_ALARM_SEARCH_RESULT +{ + DWORD dwSize; + /* + ֵֶ뱨ͬĿǰ֧֣ + COMM_VCA_ALARM 0x4993 ܼⱨ + COMM_UPLOAD_FACESNAP_RESULT 0x1112 ʶϴ + COMM_SNAP_MATCH_ALARM 0x2902 ȶԽϴ + COMM_ISAPI_ALARM 0x6009 ISAPI + */ + DWORD dwAlarmComm; + /* + Ϣֵֶ뱨ϢͬĿǰ֧֣ + COMM_VCA_ALARMʱñϢΪJSON + COMM_UPLOAD_FACESNAP_RESULTʱñϢΪNET_VCA_FACESNAP_RESULT + COMM_SNAP_MATCH_ALARMʱñϢΪNET_VCA_FACESNAP_MATCH_ALARM + COMM_ISAPI_ALARMʱñϢΪNET_DVR_ALARM_ISAPI_INFO + */ + DWORD dwAlarmLen;//ϢpAlarmInfoָָݳ + char *pAlarmInfo; + NET_DVR_ALARMER struAlarmer; + BYTE byRes[128]; +}NET_DVR_ALARM_SEARCH_RESULT, *LPNET_DVR_ALARM_SEARCH_RESULT; + +typedef struct tagNET_DVR_FACE_AND_TEMPLATE_COND +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀţʱòã + DWORD dwFaceNum; //ûȡȡʱΪ0xffffffffʾȡϢ + BYTE byRes[128]; // +}NET_DVR_FACE_AND_TEMPLATE_COND, *LPNET_DVR_FACE_AND_TEMPLATE_COND; + +typedef struct tagNET_DVR_FACE_AND_TEMPLATE_CFG +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + DWORD dwFaceLen; //ͼƬȣͼƬС200k + char* pFaceBuffer; //ͼƬָ + DWORD dwFaceTemplateLen; //ģݳ + char* pFaceTemplateBuffer; //ģָ + BYTE byRes[116]; +}NET_DVR_FACE_AND_TEMPLATE_CFG, *LPNET_DVR_FACE_AND_TEMPLATE_CFG; + +typedef struct tagNET_DVR_FACE_AND_TEMPLATE_STATUS +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + BYTE byRecvStatus;//·״ֽ̬ڱʾ0-ʧܣ1-ɹ2-ڴ + BYTE byRes[131]; +}NET_DVR_FACE_AND_TEMPLATE_STATUS, *LPNET_DVR_FACE_AND_TEMPLATE_STATUS; + +typedef struct tagNET_DVR_SINGLE_HEATMAP_RESULT_PDC +{ + DWORD dwMaxHeatMapValue;//ȶֵ + DWORD dwMinHeatMapValue;//Сȶֵ + DWORD dwTimeHeatMapValue;// (ʱȶֵ)ƽȶֵ + WORD wArrayLine;//ͼƬصֵ + WORD wArrayColumn;//ͼƬصֵ ֵΪ0ʱصֵڴϢڣ + BYTE* pBuffer; //ȶͼƬصϢ + BYTE byRes[32]; +}NET_DVR_SINGLE_HEATMAP_RESULT_PDC, *LPNET_DVR_SINGLE_HEATMAP_RESULT_PDC; + +//ȶͼϴ +typedef struct tagNET_DVR_HEATMAP_RESULT_PDC +{ + DWORD dwSize; + NET_DVR_TIME_EX struStartTime;/*ʼʱ*/ + NET_DVR_TIME_EX struEndTime;/*ʱ*/ + NET_VCA_DEV_INFO struDevInfo;/*豸Ϣ*/ + WORD wDevInfoIvmsChannelEx; //NET_VCA_DEV_INFObyIvmsChannelܱͬʾֵϿͻbyIvmsChannelܼݣ255¿ͻ˰汾ʹwDevInfoIvmsChannelEx + BYTE byBrokenNetHttp; //־λ0-شݣ1-ش + BYTE byArrayUnitType;//ԪͣϢÿصݵͣ,1-byte, 2-short,4- int + /* + struSingleHeatMap[0]:ʾͳеĻͣȶֵ + struSingleHeatMap[1]:ʾͳеĻ뿪ȶֵ + */ + NET_DVR_SINGLE_HEATMAP_RESULT_PDC struSingleHeatMap[2]; + WORD wCurNumber;//ǰ + WORD wLeaveNumber;//뿪 + #if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pEventNotificationAlertBuff; //BuffӦEventNotificationAlert JSON Block("eventType": "heatmap") +#else + char* pEventNotificationAlertBuff; //BuffӦEventNotificationAlert JSON Block("eventType": "heatmap") + BYTE byRes2[4]; +#endif + DWORD dwEventNotificationAlertLen;//ȶӦEventNotificationAlert JSON Block("eventType": "heatmap")ݳ + BYTE byRes1[48]; +}NET_DVR_HEATMAP_RESULT_PDC, *LPNET_DVR_HEATMAP_RESULT_PDC; + +//豸֧AIƽ̨룬ϴƵ +typedef struct _NET_AIOP_VIDEO_HEAD_ +{ + DWORD dwSize; //dwSize = sizeof(NET_AIOP_VIDEO_HEAD) + DWORD dwChannel; //豸ͨͨţ + NET_DVR_SYSTEM_TIME struTime; //ʱ + char szTaskID[64]; //ƵIDƵɷ + DWORD dwAIOPDataSize; //ӦAIOPDdataݳ + DWORD dwPictureSize; //ӦͼƬ + char szMPID[64]; //ģͰIDƥAIOPļݽͨURI(GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/management?format=json)ȡǰ豸صģͰlabel descriptionϢ + BYTE *pBufferAIOPData; //AIOPDdata + BYTE *pBufferPicture;//ӦͼƬ + BYTE byPictureMode;//ͼƬݴģʽ 0-ƣ1-人ƴ洢byPictureModeΪ0ʱpBufferPictureΪݣbyPictureModeΪ1ʱpBufferPictureΪ人URL + BYTE byCompressedDotMatrixMode;//ѹĵͼģʽ 0-ƣ1-人ƴ洢byCompressedDotMatrixModeΪ0ʱpCompressedDotMatrixBuffΪݣbyCompressedDotMatrixModeΪ1ʱpCompressedDotMatrixBuffΪ人URL + BYTE byRes2[2];//ֽ + DWORD dwPresetIndex; //Ԥõ + DWORD dwAddInfoPictureSize; //ӦĸͼƬ + BYTE *pAddInfoPictureBuffer;//ӦĸͼƬ(ȳ˫ͨ豸ýڵʾDZͨͼƬ) +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pFacePicBuff; //СͼͼƬָ +#else + char* pFacePicBuff; //СͼͼƬָ + BYTE byRes3[4]; +#endif + DWORD dwFacePicBuffLen;//ȶӦpFacePicBuffݳ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pComparisonPicBuff; //׿ȶͼͼƬָ +#else + char* pComparisonPicBuff; //׿ȶͼͼƬָ + BYTE byRes4[4]; +#endif + DWORD dwComparisonPicBuffLen;//ȶӦpComparisonPicBuffݳ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pCompressedDotMatrixBuff; //ѹĵͼϢָ +#else + char* pCompressedDotMatrixBuff; //ѹĵͼϢָ + BYTE byRes5[4]; +#endif + DWORD dwCompressedDotMatrixBuffLen; //ȶӦpCompressedDotMatrixBuffݳ + BYTE byRes[132]; +}NET_AIOP_VIDEO_HEAD, *LPNET_AIOP_VIDEO_HEAD; + +//豸֧AIƽ̨룬ϴͼƬ +typedef struct _NET_AIOP_PICTURE_HEAD_ +{ + DWORD dwSize; //dwSize = sizeof(NET_AIOP_PICTURE_HEAD) + NET_DVR_SYSTEM_TIME struTime; //ʱ + char szPID[64]; //͸·ͼƬIDͼƬɷ + DWORD dwAIOPDataSize; //ӦAIOPDdataݳ + BYTE byStatus; //״ֵ̬0-ɹ1-ͼƬС + BYTE byPictureMode;//ͼƬݴģʽ(dwPictureSize>0ʱЧ) 0-ƣ1-人ƴ洢byPictureModeΪ0ʱpBufferPictureΪݣbyPictureModeΪ1ʱpBufferPictureΪ人URL + BYTE byCompressedDotMatrixMode;// /ѹĵͼģʽ 0-ƣ1-人ƴ洢byCompressedDotMatrixModeΪ0ʱpCompressedDotMatrixBuffΪݣbyCompressedDotMatrixModeΪ1ʱpCompressedDotMatrixBuffΪ人URL + BYTE byRes1[1]; + char szMPID[64]; //ģͰIDƥAIOPļݽ + BYTE *pBufferAIOPData;//AIOPDdata + DWORD dwPresetIndex; //Ԥõ + DWORD dwPictureSize; //ͼƬURL +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + BYTE *pBufferPicture;//ӦͼƬݻURL +#else + BYTE *pBufferPicture;//ӦͼƬݻURL + BYTE byRes2[4]; +#endif + char szTaskID[64]; //ID, ͼƬϱЯֶ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pCompressedDotMatrixBuff; //ѹĵͼϢָ +#else + char* pCompressedDotMatrixBuff; //ѹĵͼϢָ + BYTE byRes5[4]; +#endif + DWORD dwCompressedDotMatrixBuffLen; //ȶӦpCompressedDotMatrixBuffݳ + BYTE byRes[92]; +}NET_AIOP_PICTURE_HEAD, *LPNET_AIOP_PICTURE_HEAD; + +#define MAX_FILE_NAME_LEN 100 //ļ +typedef struct tagNET_DVR_DOOR_FILE_UPLOAD_PARAM +{ + DWORD dwSize; + DWORD dwFileSize; //ļСλֽ + BYTE byFileName[MAX_FILE_NAME_LEN]; //ļ + BYTE byRes1[256]; +}NET_DVR_DOOR_FILE_UPLOAD_PARAM, *LPNET_DVR_DOOR_FILE_UPLOAD_PARAM; + +#define AUDIO_FILE_NAME_LEN 32 //ƵļƳ +//ϴƵļ +typedef struct tagNET_DVR_TRANS_AUDIO_INFO +{ + DWORD dwSize; //ṹС + char sAudioName[AUDIO_FILE_NAME_LEN]; //Ƶļ + BYTE byAudioFormat; //Ƶݸʽ0-wav + BYTE byRes[127]; +}NET_DVR_TRANS_AUDIO_INFO,*LPNET_DVR_TRANS_AUDIO_INFO; + +typedef struct _NET_AIOP_POLLING_VIDEO_HEAD_ +{ + DWORD dwSize; //dwSize = sizeof(NET_AIOP_POLLING_VIDEO_HEAD) + DWORD dwChannel; //豸ͨͨ(SDKЭ) + NET_DVR_SYSTEM_TIME struTime; //ʱ + char szTaskID[64]; //ѯץͼIDѯץͼɷ + DWORD dwAIOPDataSize; //ӦAIOPDdataݳ + DWORD dwPictureSize; //ӦͼƬ + char szMPID[64]; //ģͰIDƥAIOPļݽ + BYTE *pBufferAIOPData;//AIOPDdata + BYTE *pBufferPicture;//ӦͼƬ + BYTE byPictureMode;//ͼƬݴģʽ 0-ƣ1-人ƴ洢byPictureModeΪ0ʱpBufferPictureΪݣbyPictureModeΪ1ʱpBufferPictureΪ人URL + BYTE byCompressedDotMatrixMode;// /ѹĵͼģʽ 0-ƣ1-人ƴ洢byCompressedDotMatrixModeΪ0ʱpCompressedDotMatrixBuffΪݣbyCompressedDotMatrixModeΪ1ʱpCompressedDotMatrixBuffΪ人URL + BYTE byRes2[2];//ֽ + DWORD dwPresetIndex; //Ԥõ +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pCompressedDotMatrixBuff; //ѹĵͼϢָ +#else + char* pCompressedDotMatrixBuff; //ѹĵͼϢָ + BYTE byRes5[4]; +#endif + DWORD dwCompressedDotMatrixBuffLen; //ȶӦpCompressedDotMatrixBuffݳ + BYTE byRes[164]; +} NET_AIOP_POLLING_VIDEO_HEAD, *LPNET_AIOP_POLLING_VIDEO_HEAD; + +typedef struct _NET_AIOP_HISTORY_VIDEO_HEAD_ +{ + DWORD dwSize; //dwSize = sizeof(_NET_AIOP_HISTORY_VIDEO_HEAD_) + DWORD dwChannel; //豸ͨͨ(SDKЭ) + NET_DVR_SYSTEM_TIME struTime; //ʱ + char szTaskID[64]; //ʷƵIDƵɷ + DWORD dwAIOPDataSize; //AIOP dataݳ + DWORD dwPictureSize; //ӦͼƬ + char szMPID[64]; //ģͰIDƥAIOPļݽͨURI(GET /ISAPI/Intelligent/AIOpenPlatform/algorithmModel/management?format=json)ȡǰ豸صģͰlabel descriptionϢ + BYTE *pBufferAIOPData;//AIOPDdata + BYTE *pBufferPicture;//ӦͼƬ + BYTE byPictureMode;//ͼƬݴģʽ 0-ƣ1-人ƴ洢byPictureModeΪ0ʱpBufferPictureΪݣbyPictureModeΪ1ʱpBufferPictureΪ人URL + BYTE byRes[183]; +}NET_AIOP_HISTORY_VIDEO_HEAD, *LPNET_AIOP_HISTORY_VIDEO_HEAD; + + +typedef struct _NET_AIOP_POLLING_SNAP_HEAD_ +{ + DWORD dwSize; //dwSize = sizeof(NET_AIOP_POLLING_SNAP_HEAD) + DWORD dwChannel; //豸ͨͨ(SDKЭ) + NET_DVR_SYSTEM_TIME struTime; //ʱ + char szTaskID[64]; //ѯץͼIDѯץͼɷ + DWORD dwAIOPDataSize; //ӦAIOPDdataݳ + DWORD dwPictureSize; //ӦͼƬ + char szMPID[64]; //ģͰIDƥAIOPļݽ + BYTE *pBufferAIOPData;//AIOPDdata + BYTE *pBufferPicture;//ͼƬ + BYTE byPictureMode;//ͼƬݴģʽ 0-ƣ1-人ƴ洢byPictureModeΪ0ʱpBufferPictureΪݣbyPictureModeΪ1ʱpBufferPictureΪ人URL + BYTE byCompressedDotMatrixMode;// /ѹĵͼģʽ 0-ƣ1-人ƴ洢byCompressedDotMatrixModeΪ0ʱpCompressedDotMatrixBuffΪݣbyCompressedDotMatrixModeΪ1ʱpCompressedDotMatrixBuffΪ人URL + BYTE byRes2[2];//ֽ + DWORD dwPresetIndex; //Ԥõ + DWORD dwAddInfoPictureSize; //ӦĸͼƬ + BYTE *pAddInfoPictureBuffer;//ӦĸͼƬ(ȳ˫ͨ豸ýڵʾDZͨͼƬ) + #if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64linux64ָΪ8ֽ + char* pCompressedDotMatrixBuff; //ѹĵͼϢָ +#else + char* pCompressedDotMatrixBuff; //ѹĵͼϢָ + BYTE byRes5[4]; +#endif + DWORD dwCompressedDotMatrixBuffLen; //ȶӦpCompressedDotMatrixBuffݳ + BYTE byRes[156]; +} NET_AIOP_POLLING_SNAP_HEAD, *LPNET_AIOP_POLLING_SNAP_HEAD; + +typedef struct tagNET_DVR_AI_ALGORITHM_MODEL +{ + DWORD dwSize; + DWORD dwDescribeLength; //{AlgorithmModel} ļ + char* pDescribeBuffer; //{AlgorithmModel}ļ + BYTE byRes1[3];//ֽڣʹֽڶ + DWORD dwLicenseKeyLength; //licenseKeyļ + char* pLicenseKeyBuffer; //licenseKeyļ + BYTE byRes[120]; +}NET_DVR_AI_ALGORITHM_MODEL, *LPNET_DVR_AI_ALGORITHM_MODEL; + +typedef struct tagNET_DVR_AI_PICTUR_UPLOAD +{ + DWORD dwSize; + char szTaskID[64]; //idstrlen.max = 64,ҵƽ̨ͳһά + char szPID[64]; //ͼƬidstrlen.max = 64ҵƽ̨ͳһά + BYTE byRes[128]; +}NET_DVR_AI_PICTUR_UPLOAD, *LPNET_DVR_AI_PICTUR_UPLOAD; + + +typedef struct _NET_DVR_CARD_RECORD +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; + BYTE byCardType; + BYTE byLeaderCard; + BYTE byUserType; + BYTE byRes1; + BYTE byDoorRight[MAX_DOOR_NUM_256]; + NET_DVR_VALID_PERIOD_CFG struValid; + BYTE byBelongGroup[MAX_GROUP_NUM_128]; + BYTE byCardPassword[CARD_PASSWORD_LEN]; + WORD wCardRightPlan[MAX_DOOR_NUM_256]; + DWORD dwMaxSwipeTimes; + DWORD dwSwipeTimes; + DWORD dwEmployeeNo; + BYTE byName[NAME_LEN]; + //λʾ0-Ȩޣ1-Ȩ + //0λʾ籨 + //1λʾʾ + //2λʾƿͿ + //3λʾͨ + //4λʾ + //5λʾѲ + DWORD dwCardRight; + BYTE byRes[256]; +}NET_DVR_CARD_RECORD, *LPNET_DVR_CARD_RECORD; + +typedef struct _NET_DVR_CARD_COND +{ + DWORD dwSize; + DWORD dwCardNum; //ûȡȡʱΪ0xffffffffʾȡпϢ + BYTE byRes[64]; +}NET_DVR_CARD_COND, *LPNET_DVR_CARD_COND; + +typedef struct _NET_DVR_CARD_SEND_DATA +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; // + BYTE byRes[16]; +}NET_DVR_CARD_SEND_DATA, *LPNET_DVR_CARD_SEND_DATA; + +typedef struct _NET_DVR_CARD_STATUS +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; + DWORD dwErrorCode; + BYTE byStatus; // ״̬0-ʧܣ1-ɹ + BYTE byRes[23]; +}NET_DVR_CARD_STATUS, *LPNET_DVR_CARD_STATUS; + +typedef struct _NET_DVR_FACE_RECORD +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + DWORD dwFaceLen; //ݳ + BYTE* pFaceBuffer; //ָ + BYTE byRes[128]; +}NET_DVR_FACE_RECORD, *LPNET_DVR_FACE_RECORD; + +typedef struct _NET_DVR_FACE_STATUS +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀ + BYTE byErrorMsg[ERROR_MSG_LEN]; //·ϢbyCardReaderRecvStatusΪ4ʱʾѴӦĿ + DWORD dwReaderNo; //ţ·󷵻 + BYTE byRecvStatus; //״ֽ̬ڱʾ0-ʧܣ1-ɹ2-Ի3-ڴ()4-Ѵڸ5-ǷID + //,6-㷨ģʧܣ7-δ·Ȩޣ8-δ壨9-ۼСС10-ͼƬݳС1KB11-ͼƬʽpng/jpg/bmp,12-ͼƬޣ13-ͼƬޣ14-ͼƬϢУʧܣ15-ͼƬʧܣ16-ʧܣ17-ʧ + BYTE byRes[131]; +}NET_DVR_FACE_STATUS, *LPNET_DVR_FACE_STATUS; + +typedef struct _NET_DVR_FACE_COND +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //Ŀţʱòɲã + DWORD dwFaceNum; // ûȡȡʱΪ0xffffffffʾȡϢ + DWORD dwEnableReaderNo; // + BYTE byRes[124]; // +}NET_DVR_FACE_COND, *LPNET_DVR_FACE_COND; + +typedef struct _NET_DVR_FINGERPRINT_RECORD +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + DWORD dwFingerPrintLen; //ָݳ + DWORD dwEnableReaderNo; //Ҫ·ָƵĶ + BYTE byFingerPrintID; //ָţЧֵΧΪ1-10 + BYTE byFingerType; //ָ 0-ָͨƣ1-вָ + BYTE byRes1[30]; + BYTE byFingerData[MAX_FINGER_PRINT_LEN]; //ָ + BYTE byRes[96]; +}NET_DVR_FINGERPRINT_RECORD, *LPNET_DVR_FINGERPRINT_RECORD; + +typedef struct _NET_DVR_FINGERPRINT_STATUS +{ + DWORD dwSize; + BYTE byCardNo[ACS_CARD_NO_LEN]; //ָƹĿ + BYTE byCardReaderRecvStatus; //ָƶ״ֽ̬ڱʾ0-ʧܣ1-ɹ2-ָģ鲻ߣ3-Իָ4-ڴ5-Ѵڸָƣ6-ѴڸָID7-ǷָID8-ָģ + BYTE byFingerPrintID; //ָţЧֵΧΪ1-10 + BYTE byFingerType; //ָ 0-ָͨƣ1-вָ + BYTE byRecvStatus; //״̬0-ɹ1-ָŴ2-ָʹ3-Ŵ󣨿Ź񲻷豸Ҫ󣩣4-ָδŻ򿨺ţŻ򿨺ֶΪգ5-Ųڣ6-ָݳΪ07-Ŵ8-Ŵ + BYTE byErrorMsg[ERROR_MSG_LEN]; //·ϢbyCardReaderRecvStatusΪ5ʱʾѴָƶӦĿ + DWORD dwCardReaderNo; //byCardReaderRecvStatusΪ5ʱʾѴָƶӦָƶţ·󷵻ء0ʱʾ޴Ϣ + BYTE byRes[20]; +}NET_DVR_FINGERPRINT_STATUS, *LPNET_DVR_FINGERPRINT_STATUS; + +typedef struct tagNET_DVR_FINGERPRINT_COND +{ + DWORD dwSize; + DWORD dwFingerprintNum; + BYTE byCardNo[ACS_CARD_NO_LEN]; + DWORD dwEnableReaderNo; + BYTE byFingerPrintID; + BYTE byRes[131]; +}NET_DVR_FINGERPRINT_COND, *LPNET_DVR_FINGERPRINT_COND; + +typedef struct tagNET_DVR_CAPTURE_DATA_COND +{ + DWORD dwSize; + char szPassword[128]; //Կַ + BYTE byRes[128]; +}NET_DVR_CAPTURE_DATA_COND, *LPNET_DVR_CAPTURE_DATA_COND; + +#define EZVIZ_CLASSSESSION_LEN 64 +#define EZVIZ_DEVICEID_LEN 32 +typedef struct tagNET_DVR_EZVIZ_USER_LOGIN_INFO +{ + char sEzvizServerAddress[NET_DVR_DEV_ADDRESS_MAX_LEN]; //Ʒַ + WORD wPort; //Ʒ˿ + BYTE byLogin; + BYTE byRes1[1]; + char sClassSession[EZVIZ_CLASSSESSION_LEN]; //ClassSession, һַÿͨʱҪ͸ + char sDeviceID[EZVIZ_DEVICEID_LEN]; //豸ID ɷ + BYTE byRes2[128]; +}NET_DVR_EZVIZ_USER_LOGIN_INFO, *LPNET_DVR_EZVIZ_USER_LOGIN_INFO; + +#define EZVIZ_REQURL_LEN 64 +#define EZVIZ_ACCESSTOKEN_LEN 128 +#define EZVIZ_CLIENTTYPE_LEN 32 +#define EZVIZ_FEATURECODE_LEN 64 +#define EZVIZ_OSVERSION_LEN 32 +#define EZVIZ_NETTYPE_LEN 32 +#define EZVIZ_SDKVERSION_LEN 32 +#define EZVIZ_APPID_LEN 64 +typedef struct tagNET_DVR_OPEN_EZVIZ_USER_LOGIN_INFO +{ + char sEzvizServerAddress[NET_DVR_DEV_ADDRESS_MAX_LEN]; //Ʒַ + BYTE byRes1[3]; + WORD wPort; //Ʒ˿ + BYTE byRes2[2]; + char sUrl[EZVIZ_REQURL_LEN]; + char sAccessToken[EZVIZ_ACCESSTOKEN_LEN]; //accessToken, һַÿͨʱҪ͸ + char sDeviceID[EZVIZ_DEVICEID_LEN]; //豸ID ɷ + char sClientType[EZVIZ_CLIENTTYPE_LEN]; //ͻ: 0: PC-ؼ 1: ios 2: android + char sFeatureCode[EZVIZ_FEATURECODE_LEN]; //Ӳ + char sOsVersion[EZVIZ_OSVERSION_LEN]; //նϵͳ汾, : IOS 7.0.4, Android 2.3. + char sNetType[EZVIZ_NETTYPE_LEN]; //, UNKNOWN GPRS EDGE UMTS HSDPA HSUPA HSPA CDMAEVDO_0 EVDO_A EVDO_B 1xRTT IDEN WIFI + char sSdkVersion[EZVIZ_SDKVERSION_LEN]; //Sdk汾, v.1.0.20140720.45xx + char sAppID[EZVIZ_APPID_LEN]; //AppIDiosϱBundleIDAndroidϱ + BYTE byRes3[512]; +}NET_DVR_OPEN_EZVIZ_USER_LOGIN_INFO, *LPNET_DVR_OPEN_EZVIZ_USER_LOGIN_INFO; + + +#define MAX_ERROR_MSG_LEN 256 //󱨾Ϣ +//쳣 +typedef enum tagALARM_EXCEPTION_ERROR_ENUM +{ + ENUM_AEE_PARAM_ERROR = 1, // + ENUM_AEE_LENS_ERROR = 2, //Ȳƥڲṹ + ENUM_AEE_PIC_LENS_ERROR = 3, //ͼƬȲƥ + ENUM_AEE_DEVID_LENS_ERROR = 4, //DeviceIDȲƥ + ENUM_AEE_NEW_ALLOC_ERROR = 5, //ڴʧ + ENUM_AEE_JSON_FORMAT_ERROR = 6, //JOSNʽ + ENUM_AEE_XML_FORMAT_ERROR = 7, //XMLʽ + ENUM_AEE_BINARY_PIC_ERROR = 8, //ͼƬݴ쳣 + ENUM_AEE_PIC_NUM_ERROR = 9, //ͳͼƬ쳣 + ENUM_AEE_GET_BOUNDARY_ERROR = 10, //ȡboundary쳣 + ENUM_AEE_BOUNDARY_NUM_ERROR = 11, //ȡboundaryĿ쳣 +}ALARM_EXCEPTION_ERROR_ENUM; + +//쳣ṹ +typedef struct tagNET_ALARM_EXCEPTION +{ + DWORD dwAlarmType; // + BYTE byExceptionType; //쳣,μ ALARM_EXCEPTION_ERROR_ENUM + BYTE byRes[3]; // + char szErrMsg[MAX_ERROR_MSG_LEN]; //Ϣ + BYTE byRes1[248]; // +}NET_ALARM_EXCEPTION, *LPNET_ALARM_EXCEPTION; + + +enum ADDITIONAL_LIB +{ + PLAYCTRL = 0, + DSSDK, + STREAMCONVERT, + STREAMTRANS, + QOSSDK, + DLL_PATH_AUDIO, + EZVIZ_SSL_SDK, + ANALYZE_DATA_LIB, + DLL_LIBICONV, + SSLEAY32_SDK, + LIBEAY32_SDK, + HCNETUTILS_SDK, + NPQ_LIB, + LOAD_DLL_COUNT, +}; + +typedef struct tagNET_DVR_AUTOTEST_CFG_HEAD +{ + DWORD dwSize; + DWORD dwInfoType; //1ʾƵԣ3ʾԽ + DWORD dwRetResult; + DWORD dwDataBodySize; //ĽṹݴС + void* lpDataBody; //Ľṹ + BYTE byRes[32]; +}NET_DVR_AUTOTEST_CFG_HEAD,*LPNET_DVR_AUTOTEST_CFG_HEAD; + +//ƵԽṹ +typedef struct tagNET_DVR_AUTOTEST_VIDEO_CFG +{ + DWORD dwSplitScreenNums; //֧149 + DWORD dwVoCh; //Ĭд1 + DWORD dwInterface; //1ʾCVBS2ʾHDMI3ʾVGA4ʾHDMI +}NET_DVR_AUTOTEST_VIDEO_CFG,*LPNET_DVR_AUTOTEST_VIDEO_CFG; + +//ƵԽṹ +typedef struct tagNET_DVR_AUTOTEST_AUDIO_CFG +{ + DWORD dwVoCh; //Ĭд2 + DWORD dwOpen; //10 +}NET_DVR_AUTOTEST_AUDIO_CFG, *LPNET_DVR_AUTOTEST_AUDIO_CFG; + +typedef struct tagNET_LOCAL_AUDIOCAST_PARAM +{ + BYTE byAudioBitRate; //Ƶ ο BITRATE_ENCODE_INDEX + BYTE byAudioSamplingRate; //Ƶ 0-Ĭϣ1-16kHZ2-32kHZ3-48kHZ, 4- 44.1kHZ,5-8kHZ + BYTE byRes[30]; +}NET_LOCAL_AUDIOCAST_PARAM, *LPNET_LOCAL_AUDIOCAST_PARAM; + +typedef struct tagNET_LOCAL_AUDIOCAST_CFG +{ + NET_LOCAL_AUDIOCAST_PARAM struAudioCastParam[MAX_AUDIOCAST_CFG_TYPE]; //13Ԫطֱʾ MP3MPEG2AAC㲥ãӦԪزΪĬϲ͹㲥 + BYTE byRes[64]; +}NET_LOCAL_AUDIOCAST_CFG, *LPNET_LOCAL_AUDIOCAST_CFG; + +#if ((defined __linux__) || (defined _WIN64)) +typedef struct _NET_DVR_AUDIOENCInfo /* Ϣ */ +{ + DWORD in_frame_size; /* һ֡ݴС(BYTES)GetInfoParam */ + int reserved[16]; /* */ +} NET_DVR_AUDIOENC_INFO; +/* ģʽ */ +typedef enum _ENUM_AUDIO_ENC_MODE +{ + AMR_MR475_ = 0, /* 4.75 kb/s */ + AMR_MR515_, /* 5.15 kb/s */ + AMR_MR59_, /* 5.90 kb/s */ + AMR_MR67_, /* 6.70 kb/s */ + AMR_MR74_, /* 7.40 kb/s */ + AMR_MR795_, /* 7.95 kb/s */ + AMR_MR102_, /* 10.2 kb/s */ + AMR_MR122_, /* 12.2 kb/s */ + + AMR_MRDTX_, /* ֡ */ + AMR_N_MODES_ +}ENUM_AUDIO_ENC_MODE; +// Ƶ +typedef struct _NET_DVR_AUDIOENC_PROCESS_PARAM_ +{ + unsigned char *in_buf; /* buf */ + unsigned char *out_buf; /* buf */ + DWORD out_frame_size; /* һ֡BYTE */ + + int g726enc_reset; /* ÿ */ + int g711_type; /* g711,0 - U law, 1- A law */ + ENUM_AUDIO_ENC_MODE enc_mode; /* ƵģʽAMR */ + int reserved[16]; /* */ +}NET_DVR_AUDIOENC_PROCESS_PARAM; + +typedef struct _NET_DVR_AUDIODECInfo /* Ϣ */ +{ + int nchans; /* */ + int sample_rate; /* */ + int aacdec_profile; /* õĿ */ + int reserved[16]; /* */ +} NET_DVR_AUDIODEC_INFO; + +// Ƶ +typedef struct _NET_DVR_AUDIODEC_PROCESS_PARAM +{ + unsigned char *in_buf; /* buf */ + unsigned char *out_buf; /* buf */ + DWORD in_data_size; /* in_bufbyte */ + DWORD proc_data_size; /* ⴦in_bufݴСbytes */ + DWORD out_frame_size; /* һ֡BYTE */ + NET_DVR_AUDIODEC_INFO dec_info; /* Ϣ */ + + int g726dec_reset; /* ÿ */ + int g711_type; /* g711,0 - U law, 1- A law */ + int reserved[16]; /* */ +} NET_DVR_AUDIODEC_PROCESS_PARAM; + +const unsigned int G726_EBCIN_DECOUT_SIZE = 640; // G726һ֡һ֡ĴС +#if (defined __x86_64__) +const unsigned int G726_ENC_OUT_SIZE = 160; // G726һ֡С +const unsigned int G726_DEC_IN_SIZE = 200; // G726һ֡볤ȣ +#else // if (defined __i386__) +const unsigned int G726_ENC_OUT_SIZE = 80; // G726һ֡С +const unsigned int G726_DEC_IN_SIZE = 80; // G726һ֡볤ȣ +#endif // (defined __x86_64__) +#endif // (defined __linux__) + +/********************************SDKӿں*********************************/ +NET_DVR_API BOOL __stdcall NET_DVR_Init(); +NET_DVR_API BOOL __stdcall NET_DVR_Cleanup(); + +//NET_DVR_SetDVRMessageչ +#ifdef _WIN32 +NET_DVR_API BOOL __stdcall NET_DVR_SetDVRMessage(UINT nMessage,HWND hWnd); +NET_DVR_API BOOL __stdcall NET_DVR_SetExceptionCallBack_V30(UINT nMessage, HWND hWnd, void (CALLBACK* fExceptionCallBack)(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser), void *pUser); +#elif defined(__linux__) || defined(__APPLE__) +NET_DVR_API BOOL __stdcall NET_DVR_SetExceptionCallBack_V30(UINT reserved1, void* reserved2, void (CALLBACK* fExceptionCallBack)(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser), void *pUser); +/*Linuxר */ +#if defined(__linux__) +NET_DVR_API BOOL NET_DVR_DrawAreaInit(INITINFO InitInfo, DWORD iUseSDL = 1); +NET_DVR_API BOOL NET_DVR_DrawAreaRelease(); +#endif +#endif + +NET_DVR_API BOOL __stdcall NET_DVR_LoadAllCom(); +NET_DVR_API BOOL __stdcall NET_DVR_SetDVRMessCallBack(BOOL (CALLBACK *fMessCallBack)(LONG lCommand,char *sDVRIP,char *pBuf,DWORD dwBufLen)); +NET_DVR_API BOOL __stdcall NET_DVR_SetDVRMessCallBack_EX(BOOL (CALLBACK *fMessCallBack_EX)(LONG lCommand,LONG lUserID,char *pBuf,DWORD dwBufLen)); +NET_DVR_API BOOL __stdcall NET_DVR_SetDVRMessCallBack_NEW(BOOL (CALLBACK *fMessCallBack_NEW)(LONG lCommand,char *sDVRIP,char *pBuf,DWORD dwBufLen, WORD dwLinkDVRPort)); +NET_DVR_API BOOL __stdcall NET_DVR_SetDVRMessageCallBack(BOOL (CALLBACK *fMessageCallBack)(LONG lCommand,char *sDVRIP,char *pBuf,DWORD dwBufLen, DWORD dwUser), DWORD dwUser); +typedef void (CALLBACK *MSGCallBack)(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetDVRMessageCallBack_V30(MSGCallBack fMessageCallBack, void* pUser); +typedef BOOL (CALLBACK *MSGCallBack_V31)(LONG lCommand, NET_DVR_ALARMER *pAlarmer, char *pAlarmInfo, DWORD dwBufLen, void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetDVRMessageCallBack_V31(MSGCallBack_V31 fMessageCallBack, void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetDVRMessageCallBack_V50(int iIndex, MSGCallBack fMessageCallBack, void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetDVRMessageCallBack_V51(int iIndex, MSGCallBack fMsgCallBack, void* pUser); + +NET_DVR_API BOOL __stdcall NET_DVR_SetConnectTime(DWORD dwWaitTime = 3000, DWORD dwTryTimes = 3); +NET_DVR_API BOOL __stdcall NET_DVR_SetReconnect(DWORD dwInterval = 30000, BOOL bEnableRecon = TRUE); +NET_DVR_API DWORD __stdcall NET_DVR_GetSDKVersion(); +NET_DVR_API DWORD __stdcall NET_DVR_GetSDKBuildVersion(); +NET_DVR_API int __stdcall NET_DVR_IsSupport(); +NET_DVR_API BOOL __stdcall NET_DVR_StartListen(char *sLocalIP,WORD wLocalPort); +NET_DVR_API BOOL __stdcall NET_DVR_StopListen(); + +NET_DVR_API LONG __stdcall NET_DVR_StartListen_V30(char *sLocalIP, WORD wLocalPort, MSGCallBack DataCallback, void* pUserData = NULL); +NET_DVR_API BOOL __stdcall NET_DVR_StopListen_V30(LONG lListenHandle); +NET_DVR_API LONG __stdcall NET_DVR_Login(char *sDVRIP,WORD wDVRPort,char *sUserName,char *sPassword,LPNET_DVR_DEVICEINFO lpDeviceInfo); +NET_DVR_API LONG __stdcall NET_DVR_Login_V30(char *sDVRIP, WORD wDVRPort, char *sUserName, char *sPassword, LPNET_DVR_DEVICEINFO_V30 lpDeviceInfo); + +NET_DVR_API LONG __stdcall NET_DVR_Login_V40(LPNET_DVR_USER_LOGIN_INFO pLoginInfo,LPNET_DVR_DEVICEINFO_V40 lpDeviceInfo); +NET_DVR_API BOOL __stdcall NET_DVR_Login_Check(char *sDVRIP, WORD wDVRPort, char *sUserName, char *sPassword, LPNET_DVR_DEVICEINFO_V30 lpDeviceInfo); +NET_DVR_API BOOL __stdcall NET_DVR_Logout(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_Logout_V30(LONG lUserID); +NET_DVR_API DWORD __stdcall NET_DVR_GetLastError(); +NET_DVR_API void __stdcall NET_DVR_GetLastErrorModelCode(DWORD *pModelCode, DWORD *pMErrDevSelfEx); +NET_DVR_API char* __stdcall NET_DVR_GetErrorMsg(LONG *pErrorNo = NULL); +NET_DVR_API BOOL __stdcall NET_DVR_SetShowMode(DWORD dwShowType,COLORREF colorKey); +NET_DVR_API BOOL __stdcall NET_DVR_GetDVRIPByResolveSvr(char *sServerIP, WORD wServerPort, BYTE *sDVRName,WORD wDVRNameLen,BYTE *sDVRSerialNumber,WORD wDVRSerialLen,char* sGetIP); +NET_DVR_API BOOL __stdcall NET_DVR_GetDVRIPByResolveSvr_EX(char *sServerIP, WORD wServerPort, BYTE *sDVRName, WORD wDVRNameLen, BYTE *sDVRSerialNumber, WORD wDVRSerialLen, char* sGetIP, DWORD *dwPort); +NET_DVR_API BOOL __stdcall NET_DVR_GetDVRNAMEByResolveSvr(char const *sServerIP, WORD wServerPort, char const *sIP, char *sDVRName); + +//Ԥؽӿ +NET_DVR_API LONG __stdcall NET_DVR_PlayDirect(char *sDVRIP, char *sUserName, char *sPassword, \ + LPNET_DVR_CLIENTINFO lpClientInfo, void(CALLBACK *fRealDataCallBack_V30) (LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void* pUser) = NULL, void* pUser = NULL, BOOL bBlocked = FALSE); +NET_DVR_API LONG __stdcall NET_DVR_RealPlay(LONG lUserID,LPNET_DVR_CLIENTINFO lpClientInfo); +NET_DVR_API LONG __stdcall NET_DVR_RealPlay_V30(LONG lUserID, LPNET_DVR_CLIENTINFO lpClientInfo, void(CALLBACK *fRealDataCallBack_V30) (LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void* pUser) = NULL, void* pUser = NULL, BOOL bBlocked = FALSE); +NET_DVR_API BOOL __stdcall NET_DVR_StopRealPlay(LONG lRealHandle); +NET_DVR_API BOOL __stdcall NET_DVR_StopPlayDirect(LONG lRealHandle); +NET_DVR_API BOOL __stdcall NET_DVR_RigisterDrawFun(LONG lRealHandle,void (CALLBACK* fDrawFun)(LONG lRealHandle,HDC hDc,DWORD dwUser),DWORD dwUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetPlayerBufNumber(LONG lRealHandle,DWORD dwBufNum); +NET_DVR_API BOOL __stdcall NET_DVR_ThrowBFrame(LONG lRealHandle,DWORD dwNum); +NET_DVR_API BOOL __stdcall NET_DVR_SetAudioMode(DWORD dwMode); +NET_DVR_API BOOL __stdcall NET_DVR_OpenSound(LONG lRealHandle); +NET_DVR_API BOOL __stdcall NET_DVR_CloseSound(); +NET_DVR_API BOOL __stdcall NET_DVR_OpenSoundShare(LONG lRealHandle); +NET_DVR_API BOOL __stdcall NET_DVR_CloseSoundShare(LONG lRealHandle); +NET_DVR_API BOOL __stdcall NET_DVR_Volume(LONG lRealHandle,WORD wVolume); +NET_DVR_API BOOL __stdcall NET_DVR_SaveRealData(LONG lRealHandle,char *sFileName); +NET_DVR_API BOOL __stdcall NET_DVR_StopSaveRealData(LONG lRealHandle); +NET_DVR_API BOOL __stdcall NET_DVR_SetRealDataCallBack(LONG lRealHandle,void(CALLBACK *fRealDataCallBack) (LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,DWORD dwUser),DWORD dwUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetRealDataCallBackEx(LONG lRealHandle,void(CALLBACK *fRealDataCallBack) (LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,void *pUser),void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetStandardDataCallBack(LONG lRealHandle,void(CALLBACK *fStdDataCallBack) (LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,DWORD dwUser),DWORD dwUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetStandardDataCallBackEx(LONG lRealHandle,void(CALLBACK *fStdDataCallBack) (LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,void *pUser),void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetTransparentDataCallBack(LONG lRealHandle, void(CALLBACK *fTpDataCallBack) (LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void *pUser), void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_CapturePicture(LONG lRealHandle,char *sPicFileName);//bmp +NET_DVR_API BOOL __stdcall NET_DVR_SetCapturePictureMode(DWORD dwCaptureMode); + +//̬I֡ +NET_DVR_API BOOL __stdcall NET_DVR_MakeKeyFrame(LONG lUserID, LONG lChannel);// +NET_DVR_API BOOL __stdcall NET_DVR_MakeKeyFrameSub(LONG lUserID, LONG lChannel);// + +//̨ؽӿ +NET_DVR_API BOOL __stdcall NET_DVR_PTZControl(LONG lRealHandle,DWORD dwPTZCommand,DWORD dwStop); +NET_DVR_API BOOL __stdcall NET_DVR_PTZControl_Other(LONG lUserID,LONG lChannel,DWORD dwPTZCommand,DWORD dwStop); +NET_DVR_API BOOL __stdcall NET_DVR_TransPTZ(LONG lRealHandle,char *pPTZCodeBuf,DWORD dwBufSize); +NET_DVR_API BOOL __stdcall NET_DVR_TransPTZ_Other(LONG lUserID,LONG lChannel,char *pPTZCodeBuf,DWORD dwBufSize); +NET_DVR_API BOOL __stdcall NET_DVR_PTZPreset(LONG lRealHandle,DWORD dwPTZPresetCmd,DWORD dwPresetIndex); +NET_DVR_API BOOL __stdcall NET_DVR_PTZPreset_Other(LONG lUserID,LONG lChannel,DWORD dwPTZPresetCmd,DWORD dwPresetIndex); +NET_DVR_API BOOL __stdcall NET_DVR_TransPTZ_EX(LONG lRealHandle,char *pPTZCodeBuf,DWORD dwBufSize); +NET_DVR_API BOOL __stdcall NET_DVR_PTZControl_EX(LONG lRealHandle,DWORD dwPTZCommand,DWORD dwStop); +NET_DVR_API BOOL __stdcall NET_DVR_PTZPreset_EX(LONG lRealHandle,DWORD dwPTZPresetCmd,DWORD dwPresetIndex); +NET_DVR_API BOOL __stdcall NET_DVR_PTZCruise(LONG lRealHandle,DWORD dwPTZCruiseCmd,BYTE byCruiseRoute, BYTE byCruisePoint, WORD wInput); +NET_DVR_API BOOL __stdcall NET_DVR_PTZCruise_Other(LONG lUserID,LONG lChannel,DWORD dwPTZCruiseCmd,BYTE byCruiseRoute, BYTE byCruisePoint, WORD wInput); +NET_DVR_API BOOL __stdcall NET_DVR_PTZCruise_EX(LONG lRealHandle,DWORD dwPTZCruiseCmd,BYTE byCruiseRoute, BYTE byCruisePoint, WORD wInput); +NET_DVR_API BOOL __stdcall NET_DVR_PTZTrack(LONG lRealHandle, DWORD dwPTZTrackCmd); +NET_DVR_API BOOL __stdcall NET_DVR_PTZTrack_Other(LONG lUserID, LONG lChannel, DWORD dwPTZTrackCmd); +NET_DVR_API BOOL __stdcall NET_DVR_PTZTrack_EX(LONG lRealHandle, DWORD dwPTZTrackCmd); +NET_DVR_API BOOL __stdcall NET_DVR_PTZControlWithSpeed(LONG lRealHandle, DWORD dwPTZCommand, DWORD dwStop, DWORD dwSpeed); +NET_DVR_API BOOL __stdcall NET_DVR_PTZControlWithSpeed_Other(LONG lUserID, LONG lChannel, DWORD dwPTZCommand, DWORD dwStop, DWORD dwSpeed); +NET_DVR_API BOOL __stdcall NET_DVR_PTZControlWithSpeed_EX(LONG lRealHandle, DWORD dwPTZCommand, DWORD dwStop, DWORD dwSpeed); +NET_DVR_API BOOL __stdcall NET_DVR_GetPTZCruise(LONG lUserID,LONG lChannel,LONG lCruiseRoute, LPNET_DVR_CRUISE_RET lpCruiseRet); + + +//ļط +NET_DVR_API LONG __stdcall NET_DVR_FindFile(LONG lUserID,LONG lChannel,DWORD dwFileType, LPNET_DVR_TIME lpStartTime, LPNET_DVR_TIME lpStopTime); +NET_DVR_API LONG __stdcall NET_DVR_FindNextFile(LONG lFindHandle,LPNET_DVR_FIND_DATA lpFindData); +NET_DVR_API LONG __stdcall NET_DVR_FindNextFile_Card(LONG lFindHandle, LPNET_DVR_FINDDATA_CARD lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_FindClose(LONG lFindHandle); +NET_DVR_API LONG __stdcall NET_DVR_FindNextFile_V30(LONG lFindHandle, LPNET_DVR_FINDDATA_V30 lpFindData); +NET_DVR_API LONG __stdcall NET_DVR_FindNextFile_V40(LONG lFindHandle, LPNET_DVR_FINDDATA_V40 lpFindData); +NET_DVR_API LONG __stdcall NET_DVR_FindNextFile_V50(LONG lFindHandle, LPNET_DVR_FINDDATA_V50 lpFindData); +NET_DVR_API LONG __stdcall NET_DVR_FindFile_V30(LONG lUserID, LPNET_DVR_FILECOND pFindCond); +NET_DVR_API LONG __stdcall NET_DVR_FindFile_V50(LONG lUserID, LPNET_DVR_FILECOND_V50 pFindCond); +NET_DVR_API BOOL __stdcall NET_DVR_FindClose_V30(LONG lFindHandle); + +NET_DVR_API BOOL __stdcall NET_DVR_LockFileByName(LONG lUserID, char *sLockFileName); +NET_DVR_API BOOL __stdcall NET_DVR_UnlockFileByName(LONG lUserID, char *sUnlockFileName); +NET_DVR_API BOOL __stdcall NET_DVR_LockFileByNameV40(LONG lUserID, BOOL bLock, const NET_DVR_LOCK_FILE_BY_NAME_PARA *lpLockFilePara); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackByName(LONG lUserID,char *sPlayBackFileName, HWND hWnd); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackByTime(LONG lUserID,LONG lChannel, LPNET_DVR_TIME lpStartTime, LPNET_DVR_TIME lpStopTime, HWND hWnd); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackReverseByName(LONG lUserID, char *sPlayBackFileName, HWND hWnd); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackByName_V50(LONG lUserID, LPNET_DVR_PLAY_BY_NAME_PARA pParam); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackReverseByName_V50(LONG lUserID, LPNET_DVR_PLAY_BY_NAME_PARA pParam); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackByTime_PCNVR(LONG lUserID, NET_DVR_PLAYBCK_BYTIME_COND_PCNVR const *pPlaybackParams); + +NET_DVR_API BOOL __stdcall NET_DVR_PlayBackControl(LONG lPlayHandle,DWORD dwControlCode,DWORD dwInValue,DWORD *LPOutValue); +NET_DVR_API BOOL __stdcall NET_DVR_StopPlayBack(LONG lPlayHandle); +NET_DVR_API BOOL __stdcall NET_DVR_SetPlayDataCallBack(LONG lPlayHandle,void(CALLBACK *fPlayDataCallBack) (LONG lPlayHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,DWORD dwUser),DWORD dwUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetPlayBackESCallBack(LONG lPlayHandle, void (CALLBACK *fPlayESCallBack)(LONG lPlayHandle, NET_DVR_PACKET_INFO_EX *struPackInfo, void* pUser), void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetPlayDataCallBack_V40(LONG lPlayHandle,void(CALLBACK *fPlayDataCallBack_V40) (LONG lPlayHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,void *pUser),void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_PlayBackSaveData(LONG lPlayHandle,char *sFileName); +NET_DVR_API BOOL __stdcall NET_DVR_StopPlayBackSave(LONG lPlayHandle); +NET_DVR_API BOOL __stdcall NET_DVR_GetPlayBackOsdTime(LONG lPlayHandle, LPNET_DVR_TIME lpOsdTime); +NET_DVR_API BOOL __stdcall NET_DVR_PlayBackCaptureFile(LONG lPlayHandle,char *sFileName); +NET_DVR_API LONG __stdcall NET_DVR_GetFileByName(LONG lUserID,char *sDVRFileName,char *sSavedFileName); +NET_DVR_API LONG __stdcall NET_DVR_GetFileByName_V50(LONG lUserID, LPNET_DVR_DOWNLOAD_BY_NAME_COND pParam); +NET_DVR_API LONG __stdcall NET_DVR_GetFileByTime(LONG lUserID,LONG lChannel, LPNET_DVR_TIME lpStartTime, LPNET_DVR_TIME lpStopTime, char *sSavedFileName); +NET_DVR_API BOOL __stdcall NET_DVR_StopGetFile(LONG lFileHandle); +NET_DVR_API int __stdcall NET_DVR_GetDownloadPos(LONG lFileHandle); +NET_DVR_API int __stdcall NET_DVR_GetPlayBackPos(LONG lPlayHandle); + +// +NET_DVR_API LONG __stdcall NET_DVR_AdapterUpgrade(LONG lUserID, char *sFileName); +NET_DVR_API LONG __stdcall NET_DVR_Upgrade(LONG lUserID, char *sFileName); +NET_DVR_API LONG __stdcall NET_DVR_VcalibUpgrade(LONG lUserID, LONG lChannel, char const *sFileName); +NET_DVR_API int __stdcall NET_DVR_GetUpgradeState(LONG lUpgradeHandle); +NET_DVR_API int __stdcall NET_DVR_GetUpgradeProgress(LONG lUpgradeHandle); +NET_DVR_API BOOL __stdcall NET_DVR_CloseUpgradeHandle(LONG lUpgradeHandle); +NET_DVR_API BOOL __stdcall NET_DVR_SetNetworkEnvironment(DWORD dwEnvironmentLevel); +//Զ̸ʽӲ +NET_DVR_API LONG __stdcall NET_DVR_FormatDisk(LONG lUserID,LONG lDiskNumber); +NET_DVR_API LONG __stdcall NET_DVR_FormatDisk_V50(LONG lUserID, NET_DVR_FORMAT_HDD *lpStruHddFormatCond); +NET_DVR_API BOOL __stdcall NET_DVR_GetFormatProgress(LONG lFormatHandle, LONG *pCurrentFormatDisk,LONG *pCurrentDiskPos,LONG *pFormatStatic); +NET_DVR_API BOOL __stdcall NET_DVR_CloseFormatHandle(LONG lFormatHandle); +// +NET_DVR_API LONG __stdcall NET_DVR_SetupAlarmChan(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_CloseAlarmChan(LONG lAlarmHandle); +NET_DVR_API LONG __stdcall NET_DVR_SetupAlarmChan_V30(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_CloseAlarmChan_V30(LONG lAlarmHandle); +//Խ +NET_DVR_API LONG __stdcall NET_DVR_StartVoiceCom(LONG lUserID, void(CALLBACK *fVoiceDataCallBack)(LONG lVoiceComHandle, char *pRecvDataBuffer, DWORD dwBufSize, BYTE byAudioFlag, DWORD dwUser), DWORD dwUser); +NET_DVR_API LONG __stdcall NET_DVR_StartVoiceCom_V30(LONG lUserID, DWORD dwVoiceChan, BOOL bNeedCBNoEncData, void(CALLBACK *fVoiceDataCallBack)(LONG lVoiceComHandle, char *pRecvDataBuffer, DWORD dwBufSize, BYTE byAudioFlag, void* pUser), void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetVoiceComClientVolume(LONG lVoiceComHandle, WORD wVolume); +NET_DVR_API BOOL __stdcall NET_DVR_StopVoiceCom(LONG lVoiceComHandle); +//ת +NET_DVR_API LONG __stdcall NET_DVR_StartVoiceCom_MR(LONG lUserID, void(CALLBACK *fVoiceDataCallBack)(LONG lVoiceComHandle, char *pRecvDataBuffer, DWORD dwBufSize, BYTE byAudioFlag, DWORD dwUser), DWORD dwUser); +NET_DVR_API LONG __stdcall NET_DVR_StartVoiceCom_MR_V30(LONG lUserID, DWORD dwVoiceChan, void(CALLBACK *fVoiceDataCallBack)(LONG lVoiceComHandle, char *pRecvDataBuffer, DWORD dwBufSize, BYTE byAudioFlag, void* pUser), void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_VoiceComSendData(LONG lVoiceComHandle, char *pSendBuf, DWORD dwBufSize); +NET_DVR_API BOOL __stdcall NET_DVR_GetCurrentAudioCompress(LONG lUserID, LPNET_DVR_COMPRESSION_AUDIO lpCompressAudio); +NET_DVR_API BOOL __stdcall NET_DVR_GetCurrentAudioCompress_V50(LONG lUserID, LPNET_DVR_AUDIO_CHANNEL lpAudioChannel, LPNET_DVR_COMPRESSION_AUDIO lpCompressAudio); +//㲥 +NET_DVR_API BOOL __stdcall NET_DVR_ClientAudioStart(); +NET_DVR_API BOOL __stdcall NET_DVR_ClientAudioStart_V30(void(CALLBACK *fVoiceDataCallBack)(char *pRecvDataBuffer, DWORD dwBufSize, void * pUser), void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_ClientAudioStop(); +NET_DVR_API BOOL __stdcall NET_DVR_AddDVR(LONG lUserID); +NET_DVR_API LONG __stdcall NET_DVR_AddDVR_V30(LONG lUserID, DWORD dwVoiceChan); +NET_DVR_API BOOL __stdcall NET_DVR_DelDVR(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_DelDVR_V30(LONG lVoiceHandle); +//͸ͨ +NET_DVR_API LONG __stdcall NET_DVR_SerialStart(LONG lUserID,LONG lSerialPort,void(CALLBACK *fSerialDataCallBack)(LONG lSerialHandle,char *pRecvDataBuffer,DWORD dwBufSize,DWORD dwUser),DWORD dwUser); +//485Ϊ͸ͨʱҪָͨţΪͬͨ485ÿԲͬ(粨) +NET_DVR_API LONG __stdcall NET_DVR_SerialStart_V40(LONG lUserID,void* lpInBuffer, LONG dwInBufferSize, void(CALLBACK *fSerialDataCallBack)(LONG lSerialHandle, LONG lCHannel, char *pRecvDataBuffer, DWORD dwBufSize, void* pUser), void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SerialSend(LONG lSerialHandle, LONG lChannel, char *pSendBuf,DWORD dwBufSize); +NET_DVR_API BOOL __stdcall NET_DVR_SerialStop(LONG lSerialHandle); +NET_DVR_API BOOL __stdcall NET_DVR_SendTo232Port(LONG lUserID, char *pSendBuf, DWORD dwBufSize); +NET_DVR_API BOOL __stdcall NET_DVR_SendToSerialPort(LONG lUserID, DWORD dwSerialPort, DWORD dwSerialIndex, char *pSendBuf, DWORD dwBufSize); + +#if (!defined __linux__) && (!defined _WIN64) +//Decoding nBitrate = 16000 +NET_DVR_API void* __stdcall NET_DVR_InitG722Decoder(int nBitrate = 16000); +NET_DVR_API BOOL __stdcall NET_DVR_DecodeG722Frame(void *pDecHandle, BYTE* pInBuffer, BYTE* pOutBuffer); +//Encoding +NET_DVR_API void* __stdcall NET_DVR_InitG722Encoder(); +NET_DVR_API BOOL __stdcall NET_DVR_EncodeG722Frame(void *pEncodeHandle, BYTE* pInBuffer, BYTE* pOutBuffer); +#elif ((defined __linux__) || (defined _WIN64)) +NET_DVR_API void* __stdcall NET_DVR_InitG722Decoder(); +NET_DVR_API BOOL __stdcall NET_DVR_DecodeG722Frame(void *handle, NET_DVR_AUDIODEC_PROCESS_PARAM * param); +//Encoding +NET_DVR_API void* __stdcall NET_DVR_InitG722Encoder(NET_DVR_AUDIOENC_INFO* enc_info); +NET_DVR_API BOOL __stdcall NET_DVR_EncodeG722Frame(void *handle, NET_DVR_AUDIOENC_PROCESS_PARAM* param); +#endif // _WIN32 +NET_DVR_API void __stdcall NET_DVR_ReleaseG722Decoder(void *pDecHandle); +NET_DVR_API void __stdcall NET_DVR_ReleaseG722Encoder(void *pEncodeHandle); + +// +NET_DVR_API void* __stdcall NET_DVR_InitG726Decoder(void** pDecMoudle); +NET_DVR_API void __stdcall NET_DVR_ReleaseG726Decoder(void *pDecHandle); +NET_DVR_API BOOL __stdcall NET_DVR_DecodeG726Frame(void *pDecMoudle, BYTE* pInBuffer, BYTE* pOutBuffer, BYTE byReset); + +// +NET_DVR_API void* __stdcall NET_DVR_InitG726Encoder(void** pEncMoudle); +NET_DVR_API BOOL __stdcall NET_DVR_EncodeG726Frame(void *pEncMoudle, BYTE* pInBuffer, BYTE* pOutBuffer, BYTE byReset); +NET_DVR_API void __stdcall NET_DVR_ReleaseG726Encoder(void *pEncHandle); + +//Զ̿Ʊʾ +NET_DVR_API BOOL __stdcall NET_DVR_ClickKey(LONG lUserID, LONG lKeyIndex); + +NET_DVR_API BOOL __stdcall NET_DVR_DoorBellControl(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_Preview(LONG lUserID, LONG lPicNum); +NET_DVR_API BOOL __stdcall NET_DVR_PreviewOne(LONG lUserID, LONG lChannel); +NET_DVR_API BOOL __stdcall NET_DVR_PlayBackByNameLocDisplay(LONG lUserID, char *sFileName); +NET_DVR_API BOOL __stdcall NET_DVR_PlayBackByTimeLocDisplay(LONG lUserID, LONG lChannel, NET_DVR_TIME const *lpStartTime, NET_DVR_TIME const *lpStopTime); +NET_DVR_API BOOL __stdcall NET_DVR_StopLocDisplayPlay(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_PlayControlLocDisplay(LONG lUserID, DWORD dwControlCode); +//Զ̿豸ֶ¼ +NET_DVR_API BOOL __stdcall NET_DVR_StartDVRRecord(LONG lUserID,LONG lChannel,LONG lRecordType); +NET_DVR_API BOOL __stdcall NET_DVR_StopDVRRecord(LONG lUserID,LONG lChannel); +//뿨 +NET_DVR_API BOOL __stdcall NET_DVR_InitDevice_Card(long *pDeviceTotalChan); +NET_DVR_API BOOL __stdcall NET_DVR_ReleaseDevice_Card(); +NET_DVR_API BOOL __stdcall NET_DVR_InitDDraw_Card(HWND hParent,COLORREF colorKey); +NET_DVR_API BOOL __stdcall NET_DVR_ReleaseDDraw_Card(); +NET_DVR_API LONG __stdcall NET_DVR_RealPlay_Card(LONG lUserID,LPNET_DVR_CARDINFO lpCardInfo,long lChannelNum); +NET_DVR_API BOOL __stdcall NET_DVR_ResetPara_Card(LONG lRealHandle,LPNET_DVR_DISPLAY_PARA lpDisplayPara); +NET_DVR_API BOOL __stdcall NET_DVR_RefreshSurface_Card(); +NET_DVR_API BOOL __stdcall NET_DVR_ClearSurface_Card(); +NET_DVR_API BOOL __stdcall NET_DVR_RestoreSurface_Card(); +NET_DVR_API BOOL __stdcall NET_DVR_OpenSound_Card(LONG lRealHandle); +NET_DVR_API BOOL __stdcall NET_DVR_CloseSound_Card(LONG lRealHandle); +NET_DVR_API BOOL __stdcall NET_DVR_SetVolume_Card(LONG lRealHandle,WORD wVolume); +NET_DVR_API BOOL __stdcall NET_DVR_AudioPreview_Card(LONG lRealHandle,BOOL bEnable); +NET_DVR_API LONG __stdcall NET_DVR_GetCardLastError_Card(); +NET_DVR_API BOOL __stdcall NET_DVR_SetDspErrMsg_Card(DWORD dwMessage, HANDLE hWnd); +NET_DVR_API BOOL __stdcall NET_DVR_ResetDSP_Card(LONG iChannelNum); +NET_DVR_API HANDLE __stdcall NET_DVR_GetChanHandle_Card(LONG lRealHandle); +NET_DVR_API BOOL __stdcall NET_DVR_CapturePicture_Card(LONG lRealHandle, char *sPicFileName); +NET_DVR_API BOOL __stdcall NET_DVR_GetSerialNum_Card(long lChannelNum,DWORD *pDeviceSerialNo); +NET_DVR_API LONG __stdcall NET_DVR_FindDVRLog(LONG lUserID, LONG lSelectMode, DWORD dwMajorType,DWORD dwMinorType, LPNET_DVR_TIME lpStartTime, LPNET_DVR_TIME lpStopTime); +NET_DVR_API LONG __stdcall NET_DVR_FindNextLog(LONG lLogHandle, LPNET_DVR_LOG lpLogData); +NET_DVR_API BOOL __stdcall NET_DVR_FindLogClose(LONG lLogHandle); +NET_DVR_API LONG __stdcall NET_DVR_FindDVRLog_V30(LONG lUserID, LONG lSelectMode, DWORD dwMajorType,DWORD dwMinorType, LPNET_DVR_TIME lpStartTime, LPNET_DVR_TIME lpStopTime, BOOL bOnlySmart = FALSE); +NET_DVR_API LONG __stdcall NET_DVR_FindNextLog_V30(LONG lLogHandle, LPNET_DVR_LOG_V30 lpLogData); +NET_DVR_API LONG __stdcall NET_DVR_FindDVRLog_V50(LONG lUserID, LPNET_DVR_FIND_LOG_COND pFindCond); +NET_DVR_API LONG __stdcall NET_DVR_FindNextLog_V50(LONG lLogHandle, LPNET_DVR_LOG_V50 lpLogData); +NET_DVR_API BOOL __stdcall NET_DVR_FindLogClose_V30(LONG lLogHandle); +NET_DVR_API LONG __stdcall NET_DVR_FindAlarmHostLog(LONG lUserID, LONG lSelectMode, NET_DVR_ALARMHOST_SEARCH_LOG_PARAM *lpSearchParam); +NET_DVR_API LONG __stdcall NET_DVR_FindNextAlarmHostLog(LONG lFindHandle, NET_DVR_ALARMHOST_LOG_RET *lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_FindAlarmHostLogClose(LONG lFindHandle); +NET_DVR_API LONG __stdcall NET_DVR_FindFile_PCNVR(LONG lUserID, LPNET_DVR_FILE_COND_PCNVR const pFindCond); +NET_DVR_API LONG __stdcall NET_DVR_FindNextFile_PCNVR(LONG lFindHandle, LPNET_DVR_FINDDATA_PCNVR lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_FindClose_PCNVR(LONG lFindHandle); +NET_DVR_API LONG __stdcall NET_DVR_FindFileByCard(LONG lUserID,LONG lChannel,DWORD dwFileType, int nFindType, BYTE *sCardNumber, LPNET_DVR_TIME lpStartTime, LPNET_DVR_TIME lpStopTime); +NET_DVR_API BOOL __stdcall NET_DVR_CaptureJPEGPicture(LONG lUserID, LONG lChannel, LPNET_DVR_JPEGPARA lpJpegPara, char *sPicFileName); +NET_DVR_API BOOL __stdcall NET_DVR_CaptureJPEGPicture_NEW(LONG lUserID, LONG lChannel, LPNET_DVR_JPEGPARA lpJpegPara, char *sJpegPicBuffer, DWORD dwPicSize, LPDWORD lpSizeReturned); +NET_DVR_API BOOL __stdcall NET_DVR_CapturePicture_V50(LONG lUserID, LONG lChannel, LPNET_DVR_PICPARAM_V50 lpPicParam, char *sPicBuffer, DWORD dwPicSize, LPDWORD lpSizeReturned); +NET_DVR_API BOOL __stdcall NET_DVR_CaptureJPEGPicture_WithAppendData(LONG lUserID, LONG lChannel, NET_DVR_JPEGPICTURE_WITH_APPENDDATA *lpJpegWithAppend); +NET_DVR_API BOOL __stdcall NET_DVR_GetRealPlayOsdTime(LONG iRealHandle, LPNET_DVR_TIME lpOsdTime); +NET_DVR_API BOOL __stdcall NET_DVR_RealPlayPause(LONG iRealHandle); +NET_DVR_API BOOL __stdcall NET_DVR_RealPlayRestart(LONG iRealHandle, HWND hPlayWnd); +NET_DVR_API int __stdcall NET_DVR_GetRealPlayerIndex(LONG lRealHandle); +NET_DVR_API int __stdcall NET_DVR_GetPlayBackPlayerIndex(LONG lPlayHandle); +NET_DVR_API BOOL __stdcall NET_DVR_SetScaleCFG(LONG lUserID, DWORD dwScale); +NET_DVR_API BOOL __stdcall NET_DVR_GetScaleCFG(LONG lUserID, DWORD *lpOutScale); +NET_DVR_API BOOL __stdcall NET_DVR_SetScaleCFG_V30(LONG lUserID, LPNET_DVR_SCALECFG pScalecfg); +NET_DVR_API BOOL __stdcall NET_DVR_GetScaleCFG_V30(LONG lUserID, LPNET_DVR_SCALECFG pScalecfg); +NET_DVR_API BOOL __stdcall NET_DVR_SetATMPortCFG(LONG lUserID, WORD wATMPort); +NET_DVR_API BOOL __stdcall NET_DVR_GetATMPortCFG(LONG lUserID, WORD *LPOutATMPort); +NET_DVR_API BOOL __stdcall NET_DVR_InitDDrawDevice(); +NET_DVR_API BOOL __stdcall NET_DVR_ReleaseDDrawDevice(); +NET_DVR_API LONG __stdcall NET_DVR_GetDDrawDeviceTotalNums(); +NET_DVR_API BOOL __stdcall NET_DVR_SetDDrawDevice(LONG lPlayPort, DWORD nDeviceNum); + +NET_DVR_API BOOL __stdcall NET_DVR_PTZSelZoomIn(LONG lRealHandle, LPNET_DVR_POINT_FRAME pStruPointFrame); +NET_DVR_API BOOL __stdcall NET_DVR_PTZSelZoomIn_EX(LONG lUserID, LONG lChannel, LPNET_DVR_POINT_FRAME pStruPointFrame); +NET_DVR_API BOOL __stdcall NET_DVR_StartDecode(LONG lUserID, LONG lChannel, LPNET_DVR_DECODERINFO lpDecoderinfo); +NET_DVR_API BOOL __stdcall NET_DVR_StopDecode(LONG lUserID, LONG lChannel); +NET_DVR_API BOOL __stdcall NET_DVR_GetDecoderState(LONG lUserID, LONG lChannel, LPNET_DVR_DECODERSTATE lpDecoderState); +NET_DVR_API BOOL __stdcall NET_DVR_SetDecInfo(LONG lUserID, LONG lChannel, LPNET_DVR_DECCFG lpDecoderinfo); +NET_DVR_API BOOL __stdcall NET_DVR_GetDecInfo(LONG lUserID, LONG lChannel, LPNET_DVR_DECCFG lpDecoderinfo); +NET_DVR_API BOOL __stdcall NET_DVR_SetDecTransPort(LONG lUserID, LPNET_DVR_PORTCFG lpTransPort); +NET_DVR_API BOOL __stdcall NET_DVR_GetDecTransPort(LONG lUserID, LPNET_DVR_PORTCFG lpTransPort); +NET_DVR_API BOOL __stdcall NET_DVR_DecPlayBackCtrl(LONG lUserID, LONG lChannel, DWORD dwControlCode, DWORD dwInValue,DWORD *LPOutValue, LPNET_DVR_PLAYREMOTEFILE lpRemoteFileInfo); +NET_DVR_API BOOL __stdcall NET_DVR_StartDecSpecialCon(LONG lUserID, LONG lChannel, LPNET_DVR_DECCHANINFO lpDecChanInfo); +NET_DVR_API BOOL __stdcall NET_DVR_StopDecSpecialCon(LONG lUserID, LONG lChannel, LPNET_DVR_DECCHANINFO lpDecChanInfo); +NET_DVR_API BOOL __stdcall NET_DVR_DecCtrlDec(LONG lUserID, LONG lChannel, DWORD dwControlCode); +NET_DVR_API BOOL __stdcall NET_DVR_DecCtrlScreen(LONG lUserID, LONG lChannel, DWORD dwControl); +NET_DVR_API BOOL __stdcall NET_DVR_GetDecCurLinkStatus(LONG lUserID, LONG lChannel, LPNET_DVR_DECSTATUS lpDecStatus); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixStartDynamic(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_DYNAMIC_DEC lpDynamicInfo); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixStopDynamic(LONG lUserID, DWORD dwDecChanNum); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDecChanInfo(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_DEC_CHAN_INFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetLoopDecChanInfo(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_LOOP_DECINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetLoopDecChanInfo(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_LOOP_DECINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetLoopDecChanEnable(LONG lUserID, DWORD dwDecChanNum, DWORD dwEnable); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetLoopDecChanEnable(LONG lUserID, DWORD dwDecChanNum, LPDWORD lpdwEnable); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetLoopDecEnable(LONG lUserID, LPDWORD lpdwEnable); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetDecChanEnable(LONG lUserID, DWORD dwDecChanNum, DWORD dwEnable); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDecChanEnable(LONG lUserID, DWORD dwDecChanNum, LPDWORD lpdwEnable); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDecChanStatus(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_DEC_CHAN_STATUS lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetVideoStandard(LONG lUserID, DWORD dwDecChanNum, LPDWORD lpdwVideoStandard); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetVideoStandard(LONG lUserID, DWORD dwDecChanNum, DWORD dwVideoStandard); + +//2007-12-22 ֽ֧ӿ +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetTranInfo(LONG lUserID, LPNET_DVR_MATRIX_TRAN_CHAN_CONFIG lpTranInfo); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetTranInfo(LONG lUserID, LPNET_DVR_MATRIX_TRAN_CHAN_CONFIG lpTranInfo); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetRemotePlay(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_DEC_REMOTE_PLAY lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetRemotePlayControl(LONG lUserID, DWORD dwDecChanNum, DWORD dwControlCode, DWORD dwInValue, DWORD *LPOutValue); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetRemotePlayStatus(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_DEC_REMOTE_PLAY_STATUS lpOuter); +//2009-4-13 +NET_DVR_API BOOL __stdcall NET_DVR_MatrixStartDynamic_V30(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_PU_STREAM_CFG lpDynamicInfo); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetLoopDecChanInfo_V30(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_LOOP_DECINFO_V30 lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetLoopDecChanInfo_V30(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_LOOP_DECINFO_V30 lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDecChanInfo_V30(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_DEC_CHAN_INFO_V30 lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetTranInfo_V30(LONG lUserID, LPNET_DVR_MATRIX_TRAN_CHAN_CONFIG_V30 lpTranInfo); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetTranInfo_V30(LONG lUserID, LPNET_DVR_MATRIX_TRAN_CHAN_CONFIG_V30 lpTranInfo); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDisplayCfg(LONG lUserID, DWORD dwDispChanNum, LPNET_DVR_VGA_DISP_CHAN_CFG lpDisplayCfg); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetDisplayCfg(LONG lUserID, DWORD dwDispChanNum, LPNET_DVR_VGA_DISP_CHAN_CFG lpDisplayCfg); + +NET_DVR_API LONG __stdcall NET_DVR_MatrixStartPassiveDecode(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_PASSIVEMODE lpPassiveMode /*, void(CALLBACK *fPassiveDataCallBack)(LONG lPassiveHandle, char * pSendBuf, DWORD dwBufSize, DWORD dwStatus, DWORD dwUser), DWORD dwUser*/); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSendData(LONG lPassiveHandle, char *pSendBuf, DWORD dwBufSize); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixStopPassiveDecode(LONG lPassiveHandle); +NET_DVR_API BOOL __stdcall NET_DVR_UploadLogo(LONG lUserID, DWORD dwDispChanNum, LPNET_DVR_DISP_LOGOCFG lpDispLogoCfg, char *sLogoBuffer); +#define NET_DVR_SHOWLOGO 1 /*ʾLOGO*/ +#define NET_DVR_HIDELOGO 2 /*LOGO*/ +NET_DVR_API BOOL __stdcall NET_DVR_LogoSwitch(LONG lUserID, DWORD dwDecChan, DWORD dwLogoSwitch); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDeviceStatus(LONG lUserID, LPNET_DVR_DECODER_WORK_STATUS lpDecoderCfg); + +#define DISP_CMD_ENLARGE_WINDOW 1 /*ʾͨŴij*/ +#define DISP_CMD_RENEW_WINDOW 2 /*ʾͨڻԭ*/ +#define DISP_CMD_OPENAUDIO 3 /*ʾͨƵ*/ +#define DISP_CMD_CLOSEAUDIO 4 /*ʾͨرƵ*/ + +NET_DVR_API BOOL __stdcall NET_DVR_MatrixDiaplayControl(LONG lUserID, DWORD dwDispChanNum, DWORD dwDispChanCmd, DWORD dwCmdParam); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixPassiveDecodeControl(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_PASSIVEDECODE_CONTROL lpInter); +NET_DVR_API LONG __stdcall NET_DVR_MatrixGetPassiveDecodeStatus(LONG lPassiveHandle); + +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDecChanCfg(LONG lUserID, DWORD dwDecChan, LPNET_DVR_MATRIX_DECCHAN_CONTROL lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetDecChanCfg(LONG lUserID, DWORD dwDecChan, LPNET_DVR_MATRIX_DECCHAN_CONTROL lpInter); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackByTime_NEW(LONG lUserID, LONG lChannel, NET_DVR_TIME const *lpStartTime, NET_DVR_TIME const *lpStopTime, LONG lLongitude, LONG lLatitude, HWND hWnd); +NET_DVR_API BOOL __stdcall NET_DVR_RefreshPlay(LONG lPlayHandle); + +//ָĬֵ +NET_DVR_API BOOL __stdcall NET_DVR_RestoreConfig(LONG lUserID); +// +NET_DVR_API BOOL __stdcall NET_DVR_SaveConfig(LONG lUserID); +// +NET_DVR_API BOOL __stdcall NET_DVR_RebootDVR(LONG lUserID); +//رDVR +NET_DVR_API BOOL __stdcall NET_DVR_ShutDownDVR(LONG lUserID); + +// begin +NET_DVR_API BOOL __stdcall NET_DVR_GetDVRConfig(LONG lUserID, DWORD dwCommand,LONG lChannel, LPVOID lpOutBuffer, DWORD dwOutBufferSize, LPDWORD lpBytesReturned); +NET_DVR_API BOOL __stdcall NET_DVR_SetDVRConfig(LONG lUserID, DWORD dwCommand,LONG lChannel, LPVOID lpInBuffer, DWORD dwInBufferSize); +NET_DVR_API BOOL __stdcall NET_DVR_GetDVRWorkState_V30(LONG lUserID, LPNET_DVR_WORKSTATE_V30 lpWorkState); +NET_DVR_API BOOL __stdcall NET_DVR_GetDVRWorkState(LONG lUserID, LPNET_DVR_WORKSTATE lpWorkState); +NET_DVR_API BOOL __stdcall NET_DVR_SetVideoEffect(LONG lUserID, LONG lChannel, DWORD dwBrightValue, DWORD dwContrastValue, DWORD dwSaturationValue, DWORD dwHueValue); +NET_DVR_API BOOL __stdcall NET_DVR_GetVideoEffect(LONG lUserID, LONG lChannel, DWORD *pBrightValue, DWORD *pContrastValue, DWORD *pSaturationValue, DWORD *pHueValue); +NET_DVR_API BOOL __stdcall NET_DVR_ClientGetframeformat(LONG lUserID, LPNET_DVR_FRAMEFORMAT lpFrameFormat); +NET_DVR_API BOOL __stdcall NET_DVR_ClientSetframeformat(LONG lUserID, LPNET_DVR_FRAMEFORMAT lpFrameFormat); +NET_DVR_API BOOL __stdcall NET_DVR_ClientGetframeformat_V30(LONG lUserID, LPNET_DVR_FRAMEFORMAT_V30 lpFrameFormat); +NET_DVR_API BOOL __stdcall NET_DVR_ClientSetframeformat_V30(LONG lUserID, LPNET_DVR_FRAMEFORMAT_V30 lpFrameFormat); +NET_DVR_API BOOL __stdcall NET_DVR_GetAtmFrameFormat_V30(LONG lUserID, LONG lAtmChannel, LPNET_DVR_ATM_FRAMEFORMAT_V30 lpFrameFormat); +NET_DVR_API BOOL __stdcall NET_DVR_SetAtmFrameFormat_V30(LONG lUserID, LONG lAtmChannel, LPNET_DVR_ATM_FRAMEFORMAT_V30 lpFrameFormat); +NET_DVR_API BOOL __stdcall NET_DVR_GetAtmProtocol(LONG lUserID, LPNET_DVR_ATM_PROTOCOL lpAtmProtocol); +NET_DVR_API BOOL __stdcall NET_DVR_GetAlarmOut_V30(LONG lUserID, LPNET_DVR_ALARMOUTSTATUS_V30 lpAlarmOutState); +NET_DVR_API BOOL __stdcall NET_DVR_GetAlarmOut(LONG lUserID, LPNET_DVR_ALARMOUTSTATUS lpAlarmOutState); +NET_DVR_API BOOL __stdcall NET_DVR_SetAlarmOut(LONG lUserID, LONG lAlarmOutPort,LONG lAlarmOutStatic); + +//Ƶ +NET_DVR_API BOOL __stdcall NET_DVR_ClientSetVideoEffect(LONG lRealHandle,DWORD dwBrightValue,DWORD dwContrastValue, DWORD dwSaturationValue,DWORD dwHueValue); +NET_DVR_API BOOL __stdcall NET_DVR_ClientGetVideoEffect(LONG lRealHandle,DWORD *pBrightValue,DWORD *pContrastValue, DWORD *pSaturationValue,DWORD *pHueValue); + +//ļ +NET_DVR_API BOOL __stdcall NET_DVR_GetConfigFile(LONG lUserID, char *sFileName); +NET_DVR_API BOOL __stdcall NET_DVR_SetConfigFile(LONG lUserID, char *sFileName); +NET_DVR_API BOOL __stdcall NET_DVR_GetConfigFile_V30(LONG lUserID, char *sOutBuffer, DWORD dwOutSize, DWORD *pReturnSize); + +NET_DVR_API BOOL __stdcall NET_DVR_GetConfigFile_EX(LONG lUserID, char *sOutBuffer, DWORD dwOutSize); +NET_DVR_API BOOL __stdcall NET_DVR_SetConfigFile_EX(LONG lUserID, char *sInBuffer, DWORD dwInSize); + +//־ļдӿ +NET_DVR_API BOOL __stdcall NET_DVR_SetLogToFile(DWORD nLogLevel = 0, char * strLogDir = NULL, BOOL bAutoDel = TRUE); +NET_DVR_API BOOL __stdcall NET_DVR_GetSDKState(LPNET_DVR_SDKSTATE pSDKState); +NET_DVR_API BOOL __stdcall NET_DVR_GetSDKAbility(LPNET_DVR_SDKABL pSDKAbl); +NET_DVR_API BOOL __stdcall NET_DVR_GetPTZProtocol(LONG lUserID, NET_DVR_PTZCFG *pPtzcfg); +NET_DVR_API BOOL __stdcall NET_DVR_GetPTZCtrl_Other(LONG iUserID, LONG iChannel); +NET_DVR_API BOOL __stdcall NET_DVR_GetPTZCtrl(LONG iRealHandle); +//ǰ +NET_DVR_API BOOL __stdcall NET_DVR_LockPanel(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_UnLockPanel(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_StartPanelKey(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_StopPanelKey(LONG lUserID); + +NET_DVR_API BOOL __stdcall NET_DVR_SetRtspConfig(LONG lUserID, DWORD dwCommand, LPNET_DVR_RTSPCFG lpInBuffer, DWORD dwInBufferSize); +NET_DVR_API BOOL __stdcall NET_DVR_GetRtspConfig(LONG lUserID, DWORD dwCommand, LPNET_DVR_RTSPCFG lpOutBuffer, DWORD dwOutBufferSize); + +//ȡ +NET_DVR_API BOOL __stdcall NET_DVR_GetDeviceAbility(LONG lUserID, DWORD dwAbilityType, char* pInBuf, DWORD dwInLength, char* pOutBuf, DWORD dwOutLength); +NET_DVR_API BOOL __stdcall NET_DVR_SetSimAbilityPath(char * szSimAbilityPath, char *szSDCard); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetSubSystemInfo(LONG lUserID, LPNET_DVR_ALLSUBSYSTEMINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetSubSystemInfo(LONG lUserID, LPNET_DVR_ALLSUBSYSTEMINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetCodeSplitter(LONG lUserID, DWORD dwCodeChan, LPNET_DVR_CODESPLITTERINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetCodeSplitter(LONG lUserID, DWORD dwCodeChan, LPNET_DVR_CODESPLITTERINFO lpInter); + +// +///ȡؼ +NET_DVR_API BOOL __stdcall NET_DVR_SetBehaviorParamKey(LONG lUserID, LONG lChannel, DWORD dwParameterKey,int nValue); +NET_DVR_API BOOL __stdcall NET_DVR_GetBehaviorParamKey(LONG lUserID, LONG lChannel, DWORD dwParameterKey,int *pValue); + +//ȡ/ΪĿӽӿ +NET_DVR_API BOOL __stdcall NET_DVR_GetVCADrawMode(LONG lUserID, LONG lChannel, LPNET_VCA_DRAW_MODE lpDrawMode); + + + +NET_DVR_API BOOL __stdcall NET_DVR_SetVCADrawMode(LONG lUserID, LONG lChannel, LPNET_VCA_DRAW_MODE lpDrawMode); + +//ģʽýӿ +NET_DVR_API BOOL __stdcall NET_DVR_SetTrackMode(LONG lUserID, LONG lChannel, LPNET_DVR_TRACK_MODE lpTrackMode); +NET_DVR_API BOOL __stdcall NET_DVR_GetTrackMode(LONG lUserID, LONG lChannel, LPNET_DVR_TRACK_MODE lpTrackMode); + +//ܿ +NET_DVR_API BOOL __stdcall NET_VCA_RestartLib(LONG lUserID, LONG lChannel); + +NET_DVR_API BOOL __stdcall NET_DVR_SaveRealData_V30(LONG lRealHandle, DWORD dwTransType, char *sFileName); + +#if ((!defined __linux__) && (!defined _WIN64)) +NET_DVR_API BOOL __stdcall NET_DVR_EncodeG711Frame(DWORD iType, BYTE *pInBuffer, BYTE *pOutBuffer); +NET_DVR_API BOOL __stdcall NET_DVR_DecodeG711Frame(DWORD iType, BYTE *pInBuffer, BYTE *pOutBuffer); +#elif ((defined __linux__) || (defined _WIN64)) +NET_DVR_API BOOL __stdcall NET_DVR_EncodeG711Frame(LPVOID handle, NET_DVR_AUDIOENC_PROCESS_PARAM *p_enc_proc_param); +NET_DVR_API BOOL __stdcall NET_DVR_DecodeG711Frame(LPVOID handle, NET_DVR_AUDIODEC_PROCESS_PARAM *p_dec_proc_param); +NET_DVR_API LPVOID __stdcall NET_DVR_InitG711Decoder(); +NET_DVR_API LPVOID __stdcall NET_DVR_InitG711Encoder(NET_DVR_AUDIOENC_INFO *enc_info); +NET_DVR_API BOOL __stdcall NET_DVR_ReleaseG711Encoder(LPVOID pEncodeHandle); +NET_DVR_API BOOL __stdcall NET_DVR_ReleaseG711Decoder(LPVOID pDecHandle); +#endif //(defined _WIN32) + +NET_DVR_API LONG __stdcall NET_DVR_FindFileByEvent(LONG lUserID, LPNET_DVR_SEARCH_EVENT_PARAM lpSearchEventParam); +NET_DVR_API LONG __stdcall NET_DVR_FindFileByEvent_V40(LONG lUserID, LPNET_DVR_SEARCH_EVENT_PARAM_V40 lpSearchEventParam); +NET_DVR_API LONG __stdcall NET_DVR_FindFileByEvent_V50(LONG lUserID, LPNET_DVR_SEARCH_EVENT_PARAM_V50 lpSearchEventParam); +NET_DVR_API LONG __stdcall NET_DVR_FindNextEvent(LONG lSearchHandle, LPNET_DVR_SEARCH_EVENT_RET lpSearchEventRet); +NET_DVR_API LONG __stdcall NET_DVR_FindNextEvent_V40(LONG lSearchHandle, LPNET_DVR_SEARCH_EVENT_RET_V40 lpSearchEventRet); +NET_DVR_API LONG __stdcall NET_DVR_FindNextEvent_V50(LONG lFindHandle, LPNET_DVR_SEARCH_EVENT_RET_V50 lpSearchEventRet); +//ֹͣ NET_DVR_FindClose + +NET_DVR_API LONG __stdcall NET_DVR_FindPDCInfo(LONG lUserID, LONG lChannel, LPNET_DVR_TIME lpStartTime, LPNET_DVR_TIME lpStopTime); +NET_DVR_API LONG __stdcall NET_DVR_FindNextPDCInfo(LONG lFindHandle,LPNET_DVR_PDC_QUERY lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_FindPDCClose(LONG lFindHandle); + +// 궨У +#define NET_DVR_PDC_VERIFY_CALIBRATION 1 //ֵΪ1ΪPDC궨У pdcֵΪNET_VCA_POINT ֵΪ NET_VCA_RECTṹ +#define NET_DVR_VERIFY_BEHAVIOR_CALIBRATION 2 // Ϊ궨У +#define NET_DVR_VERIFY_ITS_CALIBRATION 3 // ܽͨ궨У +#define NET_DVR_VERIFY_BV_CALIBRATION 5 //˫Ŀ궨У + +NET_DVR_API BOOL __stdcall NET_DVR_VerifyCalibration(LONG lUserID, DWORD dwCommand, LONG lChannel, LPVOID lpInBuffer, DWORD dwInBufferSize, LPVOID lpOuterBuffer, DWORD dwOuterBufferSize); +NET_DVR_API BOOL __stdcall NET_DVR_ResetCounter(LONG lUserID,LONG lChannel); + +NET_DVR_API BOOL __stdcall NET_DVR_GetPtzPosition(LONG lUserID, LONG lChannel, LONG lPositionID, LPNET_DVR_PTZ_POSITION lpPtzPosition); +NET_DVR_API BOOL __stdcall NET_DVR_SetPtzPosition(LONG lUserID, LONG lChannel, LONG lPositionID, LPNET_DVR_PTZ_POSITION lpPtzPosition); +NET_DVR_API BOOL __stdcall NET_DVR_SetPatrolTrack(LONG lUserID, LONG lChannel, LONG lPatrolIndex, LPNET_DVR_PATROL_TRACKCFG lpPatrolTrack); +NET_DVR_API BOOL __stdcall NET_DVR_GetPatrolTrack(LONG lUserID, LONG lChannel, LONG lPatrolIndex, LPNET_DVR_PATROL_TRACKCFG lpPatrolTrack); +NET_DVR_API LONG __stdcall NET_DVR_FindNextLog_MATRIX(LONG lLogHandle, LPNET_DVR_LOG_MATRIX lpLogData); +NET_DVR_API LONG __stdcall NET_DVR_FindDVRLog_Matrix(LONG lUserID, LONG lSelectMode, DWORD dwMajorType, DWORD dwMinorType, LPNET_DVR_VEDIOPLATLOG lpVedioPlatLog, LPNET_DVR_TIME lpStartTime, LPNET_DVR_TIME lpStopTime); + +NET_DVR_API BOOL __stdcall NET_DVR_ManualSnap(LONG lUserID, NET_DVR_MANUALSNAP const* lpInter, LPNET_DVR_PLATE_RESULT lpOuter); +NET_DVR_API BOOL __stdcall NET_DVR_ContinuousShoot(LONG lUserID, LPNET_DVR_SNAPCFG lpInter); + +NET_DVR_API BOOL __stdcall NET_DVR_GetPTZProtocol_Ex(LONG lUserID, LONG lChannel, NET_DVR_PTZCFG *pPtzcfg); + +NET_DVR_API LONG __stdcall NET_DVR_StartEmailTest(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_StopEmailTest(LONG lEmailTestHandle); +NET_DVR_API BOOL __stdcall NET_DVR_GetEmailTestProgress(LONG lEmailTestHandle, DWORD* pState); +NET_DVR_API BOOL __stdcall NET_DVR_GetIPCProtoList(LONG lUserID, LPNET_DVR_IPC_PROTO_LIST lpProtoList); +NET_DVR_API BOOL __stdcall NET_DVR_GetIPCProtoList_V41(LONG lUserID, LPNET_DVR_IPC_PROTO_LIST_V41 lpProtoList); +NET_DVR_API LONG __stdcall NET_DVR_SmartSearch(LONG lUserID, LPNET_DVR_SMART_SEARCH_PARAM lpSmartSearchParam); +NET_DVR_API LONG __stdcall NET_DVR_SmartSearch_V40(LONG lUserID, LPNET_DVR_SMART_SEARCH_PARAM_V40 lpSmartSearchParam); +NET_DVR_API LONG __stdcall NET_DVR_SearchNextInfo(LONG lSearchHandle, LPNET_DVR_SMART_SEARCH_RET lpSmartSearchRet); +NET_DVR_API BOOL __stdcall NET_DVR_StopSearch(LONG lSearchHandle); + +// IP San ļĿ¼ +NET_DVR_API LONG __stdcall NET_DVR_FindIpSanDirectory(LONG lUserID, LPNET_DVR_IPSAN_SERACH_PARAM lpIpsanSearchParam); +NET_DVR_API LONG __stdcall NET_DVR_FindNextDirectory(LONG lFindHandle, LPNET_DVR_IPSAN_SERACH_RET lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_FindDirectoryClose(LONG lFindHandle); + +typedef void (CALLBACK *REALDATACALLBACK) (LONG lPlayHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void* pUser); + +NET_DVR_API LONG __stdcall NET_DVR_ZeroStartPlay(LONG lUserID, LPNET_DVR_CLIENTINFO lpClientInfo, REALDATACALLBACK fRealDataCallBack_V30 = NULL, void* pUser = NULL, BOOL bBlocked = TRUE); + +NET_DVR_API BOOL __stdcall NET_DVR_ZeroStopPlay(LONG lPlayHandle); +NET_DVR_API BOOL __stdcall NET_DVR_ZeroMakeKeyFrame(LONG lUserID, LONG lZeroChan); +NET_DVR_API BOOL __stdcall NET_DVR_PlayBackControl_V40(LONG lPlayHandle,DWORD dwControlCode, LPVOID lpInBuffer = NULL, DWORD dwInLen = 0, LPVOID lpOutBuffer = NULL, DWORD *lpOutLen = NULL); +NET_DVR_API BOOL __stdcall NET_DVR_ZeroTurnOver(LONG lUserID, LONG lChannel, BOOL bNextPreview); +NET_DVR_API LONG __stdcall NET_DVR_RealPlay_Card_V30(LONG lUserID, NET_DVR_CARDINFO const *lpCardInfo, LONG lChannelNum, DWORD dwMode, BOOL bBlock, REALDATACALLBACK fRealDataCallBack_V30, void* pUser); + + +NET_DVR_API BOOL __stdcall NET_DVR_GetDiskList(LONG lUserID, LPNET_DVR_DISKABILITY_LIST lpDiskList); +NET_DVR_API LONG __stdcall NET_DVR_Backup(LONG lUserID, DWORD dwBackupType, LPVOID lpBackupBuff, DWORD dwBackupBuffSize); +NET_DVR_API LONG __stdcall NET_DVR_BackupByName(LONG lUserID, LPNET_DVR_BACKUP_NAME_PARAM lpBackupByName); +NET_DVR_API LONG __stdcall NET_DVR_BackupByTime(LONG lUserID, LPNET_DVR_BACKUP_TIME_PARAM lpBackupBytime); +NET_DVR_API BOOL __stdcall NET_DVR_GetBackupProgress(LONG lHandle, DWORD* pState); +NET_DVR_API BOOL __stdcall NET_DVR_StopBackup(LONG lHandle); + +NET_DVR_API BOOL __stdcall NET_DVR_GetSadpInfoList(LONG lUserID, LPNET_DVR_SADPINFO_LIST lpSadpInfoList); +NET_DVR_API BOOL __stdcall NET_DVR_UpdateSadpInfo(LONG lUserID, LPNET_DVR_SADP_VERIFY lpSadpVerify, LPNET_DVR_SADPINFO lpSadpInfo); + +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetSubDecSystemJoinInfo(LONG lUserID, LPNET_DVR_ALLDECSUBSYSTEMJOININFO lpInter); + +NET_DVR_API BOOL __stdcall NET_DVR_SetCodeSplitterAssociate(LONG lUserID, DWORD dwDecoderChan, DWORD dwSlotNum, LPNET_DVR_CODESPLITTERASSOCIATE lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_GetCodeSplitterAssociate(LONG lUserID, DWORD dwDecoderChan, DWORD dwSlotNum, LPNET_DVR_CODESPLITTERASSOCIATE lpInter); + +NET_DVR_API BOOL __stdcall NET_DVR_InquestGetCDRWScheme(LONG lUserID, LPNET_DVR_INQUEST_CDRW_CFG lpCDRWCfg); +NET_DVR_API BOOL __stdcall NET_DVR_InquestSetCDRWScheme(LONG lUserID, LPNET_DVR_INQUEST_CDRW_CFG lpCDRWCfg); +NET_DVR_API BOOL __stdcall NET_DVR_InquestDeleteFile(LONG lUserID, LPNET_DVR_INQUEST_FILES lpDeleteFile); +NET_DVR_API BOOL __stdcall NET_DVR_InquestCDWByFile(LONG lUserID, LPNET_DVR_INQUEST_FILES lpCdrwFile); +NET_DVR_API LONG __stdcall NET_DVR_InquestUploadFile(LONG lUserID, char *sFileName); +NET_DVR_API BOOL __stdcall NET_DVR_InquestUploadClose(LONG lUploadHandle); +NET_DVR_API LONG __stdcall NET_DVR_InquestGetUploadState(LONG lUploadHandle, LPDWORD pProgress); +NET_DVR_API BOOL __stdcall NET_DVR_InquestStartCDW( LONG lUserID, BOOL bPause); +NET_DVR_API BOOL __stdcall NET_DVR_InquestStopCDW(LONG lUserID, BOOL bCancelWrite); +NET_DVR_API BOOL __stdcall NET_DVR_InquestGetCDWState(LONG lUserID, LPNET_DVR_INQUEST_CDRW_STATUS pStatus); +NET_DVR_API BOOL __stdcall NET_DVR_InquestGetPIPStatus(LONG lUserID, LPNET_DVR_INQUEST_PIP_STATUS pStatus); +NET_DVR_API BOOL __stdcall NET_DVR_InquestSetPIPStatus(LONG lUserID, LPNET_DVR_INQUEST_PIP_STATUS pStatus); +NET_DVR_API BOOL __stdcall NET_DVR_InquestCheckSecretKey(LONG lUserID, BOOL *bSecretSet); +NET_DVR_API BOOL __stdcall NET_DVR_InquestSetSecretKey(LONG lUserID, LPNET_DVR_INQUEST_SECRET_INFO pSecretInfo); +NET_DVR_API BOOL __stdcall NET_DVR_InquestStreamEncrypt(LONG lUserID, LONG lChannel, BOOL bEncrypt); +NET_DVR_API BOOL __stdcall NET_DVR_InquestGetEncryptState(LONG lUserID, LONG lChannel, BOOL *bEncrypt); +NET_DVR_API LONG __stdcall NET_DVR_InquestFindFile(LONG lUserID); +NET_DVR_API LONG __stdcall NET_DVR_InquestFindNextFile(LONG lFindHandle, LPNET_DVR_INQUEST_FILEINFO lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_InquestFindClose(LONG lFindHandle); + +// 9000RH +NET_DVR_API LONG __stdcall NET_DVR_RaidFastConfig(LONG lUserID, char *sName); +NET_DVR_API BOOL __stdcall NET_DVR_FastConfigProcess(LONG lHandle, DWORD *pState); +NET_DVR_API BOOL __stdcall NET_DVR_CloseFastConfig(LONG lHandle); +NET_DVR_API BOOL __stdcall NET_DVR_GetArraySpaceAlloc(LONG lUserID, DWORD dwSlot, LPNET_DVR_ARRAY_SPACE_ALLOC_INFO lpOutBuf); +NET_DVR_API BOOL __stdcall NET_DVR_DelArray(LONG lUserID, DWORD dwID); +NET_DVR_API BOOL __stdcall NET_DVR_CreateArray(LONG lUserID, LPNET_DVR_OPERATE_ARRAY_PARAM lpArrayParam); +NET_DVR_API BOOL __stdcall NET_DVR_CalcArraySize(LONG lUserID, LPNET_DVR_OPERATE_ARRAY_PARAM lpArrayParam, UINT64* lpArraySize); +NET_DVR_API BOOL __stdcall NET_DVR_MigrateArray(LONG lUserID, LPNET_DVR_OPERATE_ARRAY_PARAM lpArrayParam); +NET_DVR_API BOOL __stdcall NET_DVR_RebuildArray(LONG lUserID, LPNET_DVR_OPERATE_ARRAY_PARAM lpArrayParam); +NET_DVR_API BOOL __stdcall NET_DVR_CreateVD(LONG lUserID, LPNET_DVR_OPERATE_VD_PARAM lpVDParam); +NET_DVR_API BOOL __stdcall NET_DVR_CreateVDEx(LONG lUserID, LPNET_DVR_OPERATE_VD_PARAM_EX lpVDParamEx); +NET_DVR_API BOOL __stdcall NET_DVR_DelVD(LONG lUserID, DWORD dwID); +NET_DVR_API BOOL __stdcall NET_DVR_RepairVD(LONG lUserID, DWORD dwID); +NET_DVR_API BOOL __stdcall NET_DVR_SetSpareDisk(LONG lUserID, LPNET_DVR_SPARE_DISK_PARAM lpSpareDisk); +NET_DVR_API BOOL __stdcall NET_DVR_GetPDList(LONG lUserID, LPNET_DVR_PHY_DISK_LIST lpPDList); +NET_DVR_API BOOL __stdcall NET_DVR_GetArrayList(LONG lUserID, LPNET_DVR_ARRAY_LIST lpArrayList); +NET_DVR_API BOOL __stdcall NET_DVR_GetVDList(LONG lUserID, LPNET_DVR_VD_LIST lpVDList); +NET_DVR_API LONG __stdcall NET_DVR_ExpandDisk(LONG lUserID,DWORD dwVDSLot); +NET_DVR_API BOOL __stdcall NET_DVR_GetExpandProgress(LONG lExpandHandle, DWORD* pState); +NET_DVR_API BOOL __stdcall NET_DVR_CloseExpandHandle(LONG lExpandHandle); +NET_DVR_API LONG __stdcall NET_DVR_AlgoDebugStart(LONG lUserID, LONG lCHannel, void(CALLBACK *fAlgoLibInfoCallBack)(LONG lHandle, LONG lChannel,char *pRecvDataBuffer, DWORD dwBufSize, void* pUser), void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_AlgoDebugSend(LONG lHandle, LONG lChannel, char *pSendBuf, DWORD dwBufSize); +NET_DVR_API BOOL __stdcall NET_DVR_AlgoDebugStop(LONG lHandle); +NET_DVR_API BOOL __stdcall NET_DVR_SetLogPrint(BOOL bLogPrint); +NET_DVR_API BOOL __stdcall NET_DVR_SetLogPrintAction(DWORD nLogLevel, DWORD nToDevice, BOOL bEnable, int Reserve1, int Reserve2); + +NET_DVR_API BOOL __stdcall NET_DVR_GetPositionRule(LONG lUserID, LONG lChannel, LONG lPositionIndex, LPNET_DVR_POSITION_RULE_CFG lpPositionRule); +NET_DVR_API BOOL __stdcall NET_DVR_GetPositionRule_V41(LONG lUserID, LONG lChannel, LONG lPositionIndex, LPNET_DVR_POSITION_RULE_CFG_V41 lpPositionRule); +NET_DVR_API BOOL __stdcall NET_DVR_SetPositionRule(LONG lUserID, LONG lChannel, LONG lPositionIndex, LPNET_DVR_POSITION_RULE_CFG lpPositionRule); +NET_DVR_API BOOL __stdcall NET_DVR_SetPositionRule_V41(LONG lUserID, LONG lChannel, LONG lPositionIndex, LPNET_DVR_POSITION_RULE_CFG_V41 lpPositionRule); +NET_DVR_API BOOL __stdcall NET_DVR_SetPositionLimitAngle(LONG lUserID, LONG lChannel, LONG lPositionIndex, LPNET_DVR_LIMIT_ANGLE lpLimitAngle); +NET_DVR_API BOOL __stdcall NET_DVR_GetPositionLimitAngle(LONG lUserID, LONG lChannel, LONG lPositionIndex, LPNET_DVR_LIMIT_ANGLE lpLimitAngle); +NET_DVR_API BOOL __stdcall NET_DVR_GetPtzPosition(LONG lUserID, LONG lChannel, LONG lPositionID, LPNET_DVR_PTZ_POSITION lpPtzPosition); +NET_DVR_API BOOL __stdcall NET_DVR_SetPtzPosition(LONG lUserID, LONG lChannel, LONG lPositionID, LPNET_DVR_PTZ_POSITION lpPtzPosition); +NET_DVR_API BOOL __stdcall NET_DVR_SetPatrolTrack(LONG lUserID, LONG lChannel, LONG lPatrolIndex, LPNET_DVR_PATROL_TRACKCFG lpPatrolTrack); +NET_DVR_API BOOL __stdcall NET_DVR_GetPatrolTrack(LONG lUserID, LONG lChannel, LONG lPatrolIndex, LPNET_DVR_PATROL_TRACKCFG lpPatrolTrack); +NET_DVR_API BOOL __stdcall NET_DVR_SetPatrolLimitAngle(LONG lUserID, LONG lChannel, LONG lPatrolIndex, LPNET_DVR_LIMIT_ANGLE lpLimitAngle); +NET_DVR_API BOOL __stdcall NET_DVR_GetPatrolLimitAngle(LONG lUserID, LONG lChannel, LONG lPatrolIndex, LPNET_DVR_LIMIT_ANGLE lpLimitAngle); +NET_DVR_API BOOL __stdcall NET_DVR_SetSceneMode(LONG lUserID, LONG lChannel, DWORD dwSceneMode); +NET_DVR_API BOOL __stdcall NET_DVR_GetSceneMode(LONG lUserID, LONG lChannel, DWORD *pSceneMode); +NET_DVR_API BOOL __stdcall NET_DVR_GetVCAVersion(LONG lUserID, LONG lChannel, LPNET_DVR_VCA_VERSION lpVersion); + +NET_DVR_API BOOL __stdcall NET_DVR_ContinuousShoot(LONG lUserID, LPNET_DVR_SNAPCFG lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixPicAdjust(LONG lUserID, DWORD dwDispChan, DWORD dwPicAdjust, DWORD dwCmdParam); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmJoinedRecord(LONG lUserID, DWORD dwChan, DWORD dwAlarmSeq, DWORD dwRecordTime, DWORD dwRes); +NET_DVR_API BOOL __stdcall NET_DVR_GetUnitedMatrixInfo(LONG lUserID, LPNET_DVR_UNITEDMATRIXINFO lpInter); +typedef LONG(CALLBACK * REGCallBack)(LONG lUserID, LPNET_DVR_REGCALLBACKPARAM pRegCallbackParam, LPNET_DVR_LOGONREPONSEPARAM pInterParam, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetRegisterCallBack(REGCallBack fRegCallBack, void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_PreviewRequest(LONG lUserID, LONG lChannel, LPNET_DVR_PREVIEWPARAM lpPreviewParam, LPNET_DVR_DEVICENATINFO lpOuter); +typedef LONG(CALLBACK * PREVIEWRESPONSECallBack)(LONG lUserID, LONG lStreamHandle, LPNET_DVR_PREVIEWCALLBACKPARAM pPewviewCallbackParam,void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetPreviewResponseCallBack(PREVIEWRESPONSECallBack fPreviewResponseCallBack, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_PlaybackRequest(LONG lUserID, LPNET_DVR_PLAYBACKREQUESTPARAM lpPlayBackRequestParam); +typedef LONG(CALLBACK * PLAYBACKRESPONSECallBack)(LONG lUserID, LONG lPlaybackHandle, LPNET_DVR_PLAYBACKCALLBACKPARAM lpPlaybackParam,void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetPlaybackResponseCallBack(PLAYBACKRESPONSECallBack fPlaybackResponseCallBack, void *pUser); +typedef LONG(CALLBACK * VOICERESPONSECallBack)(LONG lUserID, LONG lVoiceHandle, LONG lVoiceChannel, BYTE nAudioType, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetVoiceResponseCallBack(VOICERESPONSECallBack fVoiceResponseCallBack, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_VoiceRequest(LONG lUserID, LPNET_DVR_VOICEREQUESTPARAM lpVoiceParam); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmSetupRequest(LONG lUserID, LPNET_DVR_ALARMSETUPREQUESTPARAM lpAlarmSetupParam); +NET_DVR_API BOOL __stdcall NET_DVR_GetDialParam(LONG lUserID, LPNET_DVR_DIALREQUEST lpDialRequest, LPNET_DVR_DIALPARAM lpDialParam); +NET_DVR_API BOOL __stdcall NET_DVR_SetDialParam(LONG lUserID, LPNET_DVR_DIALREQUEST lpDialRequest, LPNET_DVR_DIALPARAM lpDialParam); +NET_DVR_API BOOL __stdcall NET_DVR_GetSmsListInfo(LONG lUserID, LPNET_DVR_TIME_EX lpStartTime, LPNET_DVR_TIME_EX lpStopTime, LPNET_DVR_SMSLISTINFO lpSmsListInfo); +NET_DVR_API BOOL __stdcall NET_DVR_GetSmsContent(LONG lUserID, DWORD dwSmsIndex, LPNET_DVR_SMSCONTENT lpSmsContent); +NET_DVR_API BOOL __stdcall NET_DVR_SendSms(LONG lUserID, LPNET_DVR_SMSCONTENT lpSmsContent); +NET_DVR_API LONG __stdcall NET_DVR_StartServer(char *sLocalIP, WORD wLocalPort, BYTE byMode); +NET_DVR_API BOOL __stdcall NET_DVR_StopServer(LONG lServerHandle); +NET_DVR_API LONG __stdcall NET_DVR_StartRecvNakedDataListen(NAKED_DATA_TYPE type, LPNET_DVR_NAKED_DATA_PARAM pParams); +NET_DVR_API BOOL __stdcall NET_DVR_StopRecvNakedDataListen(LONG lNakedDataRecvHandle); +typedef void(CALLBACK * NAKEDDAtACALLBACK)(DWORD typeInfo, char *pInfo, DWORD dwInfoLen,DWORD dwIPLen, void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetNakedDataRecvCallBack(LONG lNakedDataRecvHandle, void(CALLBACK *fNakedDataCallBack)(DWORD dwTypeInfo, NET_DVR_NAKED_DATA_INFO *pStruNakedDataInfo, char *pInfo, DWORD dwInfoLen, void* pUser), void* pUser); + +typedef LONG(CALLBACK * ALARMSETUPRESPONSECallBack)(LONG lUserID, LONG lAlarmHandle, void * pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetAlarmSetupResponseCallBack(ALARMSETUPRESPONSECallBack fAlarmSetupResponseCallBack, void * pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SpringJPEGPicture(LONG lUserID, LONG lChannel, NET_DVR_PUSHJPEGPARA const *lpJpegPara); +NET_DVR_API BOOL __stdcall NET_DVR_SetPushModeParam(LPNET_DVR_PUSHMODEPARAM pPushParam); + +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostSetupAlarmChan(LONG lUserID, NET_DVR_ALARMIN_SETUP *lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostCloseAlarmChan(LONG lUserID, NET_DVR_ALARMIN_SETUP *lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_BypassAlarmChan(LONG lUserID, NET_DVR_ALARMIN_SETUP *lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_UnBypassAlarmChan(LONG lUserID, NET_DVR_ALARMIN_SETUP *lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostAssistantControl(LONG lUserID, DWORD dwType, DWORD dwNumber, DWORD dwCmdParam); +NET_DVR_API BOOL __stdcall NET_DVR_SetAirCondition(LONG lUserID, LONG l485Index, NET_DVR_AIR_CONDITION_PARAM* lpAirConditionParam); +NET_DVR_API BOOL __stdcall NET_DVR_GetAirCondition(LONG lUserID, LONG l485Index, NET_DVR_AIR_CONDITION_PARAM* lpAirConditionParam); +NET_DVR_API BOOL __stdcall NET_DVR_GetDeviceTypeList(LONG lUserID, NET_DVR_DEVICE_TYPE_LIST *lpDeviceTypeList); +NET_DVR_API BOOL __stdcall NET_DVR_GetDeviceProtoList(LONG lUserID, LONG lDeviceType, NET_DVR_DEVICE_PROTO_LIST *lpDeviceProtoList); +NET_DVR_API BOOL __stdcall NET_DVR_GetBatteryVoltage(LONG lUserID, float *pVoltage); +NET_DVR_API BOOL __stdcall NET_DVR_SetAlarmDeviceUser(LONG lUserID, LONG lUserIndex, NET_DVR_ALARM_DEVICE_USER* lpDeviceUser); +NET_DVR_API BOOL __stdcall NET_DVR_GetAlarmDeviceUser(LONG lUserID, LONG lUserIndex, NET_DVR_ALARM_DEVICE_USER* lpDeviceUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetKeyboardUser(LONG lUserID, LONG lUserIndex, NET_DVR_KEYBOARD_USER* lpKeyboardUser); +NET_DVR_API BOOL __stdcall NET_DVR_GetKeyboardUser(LONG lUserID, LONG lUserIndex, NET_DVR_KEYBOARD_USER* lpKeyboardUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetOperateUser(LONG lUserID, LONG lUserIndex, NET_DVR_OPERATE_USER* lpOperateUser); +NET_DVR_API BOOL __stdcall NET_DVR_GetOperateUser(LONG lUserID, LONG lUserIndex, NET_DVR_OPERATE_USER* lpOperateUser); +NET_DVR_API BOOL __stdcall NET_DVR_ControlGateway(LONG lUserID, LONG lGatewayIndex, DWORD dwStaic); +NET_DVR_API BOOL __stdcall NET_DVR_SetAlarmHostOut(LONG lUserID, LONG lAlarmOutPort, LONG lAlarmOutStatic); +typedef void(CALLBACK *fAlarmHostSerialDataCallBack) +(LONG lSerialHandle, LONG lPort, LONG lDateType, char *pRecvDataBuffer, DWORD dwBufSize,void *pUser); +NET_DVR_API LONG __stdcall NET_DVR_AlarmHostSerialStart(LONG lUserID, LONG lSerialType, fAlarmHostSerialDataCallBack cbSerialDataCallBack, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostSerialSend(LONG lSerialHandle,LONG lPort,char *pSendBuf,DWORD dwBufSize); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostSerialStop(LONG lSerialHandle); +NET_DVR_API BOOL __stdcall NET_DVR_GetMatrixPuChan(LONG lUserID, LONG lChanType, NET_DVR_PU_CHAN_LIST* lpChanList); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixAlarmOffMonitor(LONG lUserID, DWORD dwMonID, DWORD dwCamID); +NET_DVR_API BOOL __stdcall NET_DVR_GetCameraListInfo(LONG lUserID, DWORD dwCamNum, DWORD dwStartCam, LPNET_DVR_MATRIX_CAMERALIST lpCamListInfo); +NET_DVR_API BOOL __stdcall NET_DVR_GetMonitorListInfo(LONG lUserID, DWORD dwMonNum, DWORD dwStartMon, LPNET_DVR_MATRIX_MONITORLIST lpMonListInfo); +NET_DVR_API BOOL __stdcall NET_DVR_GetGlobalNum(LONG lUserID, DWORD *dwCamNum, DWORD *dwMonNum); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetUnitedMatrixInfo(LONG lUserID, LPNET_DVR_ALLUNITEDMATRIXINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetUnitedMatrixInfo(LONG lUserID, LPNET_DVR_ALLUNITEDMATRIXINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetGatewayInfo(LONG lUserID, LPNET_DVR_MATRIXGATEWAYINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetGatewayInfo(LONG lUserID, LPNET_DVR_MATRIXGATEWAYINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSpanSwitch(LONG lUserID, BYTE nSwitchMode, LPNET_DVR_MATRIXSWITCH lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixStartSwitch(LONG lUserID, LPNET_DVR_MATRIXSWITCHCTRL lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetConfigFile(LONG lUserID, LPNET_DVR_MATRIXDATABASE lpInter, char *sInBuffer, DWORD dwInSize); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetConfigFile(LONG lUserID, LPNET_DVR_MATRIXDATABASE lpInter, char *sOutBuffer, DWORD dwOutSize, DWORD *pReturnSize); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetSubSystemInfo_V40(LONG lUserID, LPNET_DVR_ALLSUBSYSTEMINFO_V40 lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetSubSystemInfo_V40(LONG lUserID, LPNET_DVR_ALLSUBSYSTEMINFO_V40 lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetSubDecSystemJoinInfo_V40(LONG lUserID, LPNET_DVR_ALLDECSUBSYSTEMJOININFO_V40 lpInter); +typedef void (CALLBACK *FLOWTESTCALLBACK)(LONG lFlowHandle, LPNET_DVR_FLOW_INFO pFlowInfo, void *pUser); +NET_DVR_API LONG __stdcall NET_DVR_StartNetworkFlowTest(LONG lUserID, NET_DVR_FLOW_TEST_PARAM* pFlowTest, FLOWTESTCALLBACK fFlowTestCallback, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_StopNetworkFlowTest(LONG lHandle); +NET_DVR_API LONG __stdcall NET_DVR_FindRecordLabel(LONG lUserID, LPNET_DVR_FIND_LABEL lpFindLabel); +NET_DVR_API LONG __stdcall NET_DVR_FindNextLabel(LONG lFindHandle, LPNET_DVR_FINDLABEL_DATA lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_StopFindLabel(LONG lFindHandle); +NET_DVR_API BOOL __stdcall NET_DVR_InsertRecordLabel(LONG lPlayHandle, NET_DVR_RECORD_LABEL* lpRecordLabel, NET_DVR_LABEL_IDENTIFY *lpLableIdentify); +NET_DVR_API BOOL __stdcall NET_DVR_DelRecordLabel(LONG lUserID, NET_DVR_DEL_LABEL_PARAM* lpDelLabelParam); +NET_DVR_API BOOL __stdcall NET_DVR_ModifyRecordLabel(LONG lUserID, NET_DVR_MOD_LABEL_PARAM * lpModLabelParam); +NET_DVR_API BOOL __stdcall NET_DVR_CapturePlaybackPictureBlock(LONG lPlayHandle, char *sPicFileName, DWORD dwTimeOut); +NET_DVR_API BOOL __stdcall NET_DVR_CapturePlaybackPictureBlock_New(LONG lPlayHandle, char *pPicBuf, DWORD dwPicSize, DWORD *lpSizeReturned); +NET_DVR_API LONG __stdcall NET_DVR_FindPicture(LONG lUserID, NET_DVR_FIND_PICTURE_PARAM* pFindParam); +NET_DVR_API LONG __stdcall NET_DVR_FindNextPicture(LONG lFindHandle,LPNET_DVR_FIND_PICTURE lpFindData); +NET_DVR_API LONG __stdcall NET_DVR_FindNextPicture_V40(LONG lFindHandle,LPNET_DVR_FIND_PICTURE_V40 lpFindData); +NET_DVR_API LONG __stdcall NET_DVR_FindNextPicture_V50(LONG lFindHandle, LPNET_DVR_FIND_PICTURE_V50 lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_CloseFindPicture(LONG lFindHandle); +NET_DVR_API BOOL __stdcall NET_DVR_GetPicture(LONG lUserID,char *sDVRFileName,const char *sSavedFileName); +NET_DVR_API BOOL __stdcall NET_DVR_GetPicture_V30(LONG lUserID, char *sDVRFileName, char *sSavedFileBuf, DWORD dwBufLen, DWORD *lpdwRetLen); +NET_DVR_API BOOL __stdcall NET_DVR_GetPicture_V50(LONG lUserID, LPNET_DVR_PIC_PARAM lpPicParam); +NET_DVR_API LONG __stdcall NET_DVR_BackupPicture(LONG lUserID, NET_DVR_BACKUP_PICTURE_PARAM *lpBackupPicture); +NET_DVR_API LONG __stdcall NET_DVR_GetUpgradeStep(LONG lUpgradeHandle, LONG *pSubProgress); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetEncodeJoint(LONG lUserID, LONG lChannel, LPNET_DVR_ENCODE_JOINT_PARAM lpEncodeJoint); +NET_DVR_API BOOL __stdcall NET_DVR_GetLocalIP(char strIP[16][16], DWORD *pValidNum, BOOL *pEnableBind); +NET_DVR_API BOOL __stdcall NET_DVR_SetValidIP(DWORD dwIPIndex, BOOL bEnableBind); +NET_DVR_API BOOL __stdcall NET_DVR_GetLocalIPv6(BYTE strIP[16][16], DWORD *pValidNum, BOOL *pEnableBind); +NET_DVR_API BOOL __stdcall NET_DVR_SetValidIPv6(DWORD dwIPIndex, BOOL bEnableBind); +NET_DVR_API BOOL __stdcall NET_DVR_GetVcaDevWorkState(LONG lUserID, LPNET_DVR_VCA_DEV_WORKSTATUS lpWorkState); +NET_DVR_API BOOL __stdcall NET_DVR_SetRecvTimeOut(DWORD nRecvTimeOut = 5000); //С3000 +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDisplayCfg_V40(LONG lUserID, DWORD dwDispChanNum, LPNET_DVR_VGA_DISP_CHAN_CFG_V40 lpDisplayCfg); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetDisplayCfg_V40(LONG lUserID, DWORD dwDispChanNum, LPNET_DVR_VGA_DISP_CHAN_CFG_V40 lpDisplayCfg); +NET_DVR_API BOOL __stdcall NET_DVR_ShutterCompensation(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_CorrectDeadPixel(LONG lUserID, LONG lChannel, LPNET_DVR_CORRECT_DEADPIXEL_PARAM lpInParam); +NET_DVR_API BOOL __stdcall NET_DVR_CustomConfig(LONG lUserID, LONG lChannel, LPVOID lpInBuffer, DWORD dwInBufferSize, LPVOID lpOutBuffer, DWORD dwOutBufferSize, LPDWORD lpBytesReturned); +NET_DVR_API BOOL __stdcall NET_DVR_GetHistoricDataInfo(LONG lUserID, LONG lChannel, LPNET_DVR_HISTORICDATACFG lpHisData); +NET_DVR_API BOOL __stdcall NET_DVR_GetHistoricData(LONG lUserID, LONG lChannel, LPNET_DVR_PLATE_RESULT lpOuter); +NET_DVR_API BOOL __stdcall NET_DVR_ClearHistoricData(LONG lUserID, LONG lChannel); +NET_DVR_API BOOL __stdcall NET_VPD_SetShutter(LONG lUserID, LONG lChannel, LPNET_VPD_SHUTTER lpShutter); +NET_DVR_API BOOL __stdcall NET_VPD_SendPicture(LONG lUserID, DWORD dwFields, BYTE const *sImageBuffer, DWORD dwWidth, DWORD dwHeight); +NET_DVR_API LONG __stdcall NET_DVR_InquestUploadFile_V30(LONG lUserID, LPNET_DVR_INQUEST_ROOM lpInquestRoom, char *sFileName); +NET_DVR_API BOOL __stdcall NET_DVR_InquestDeleteFile_V30(LONG lUserID, LPNET_DVR_INQUEST_ROOM lpInquestRoom, LPNET_DVR_INQUEST_FILES lpDeleteFile); +NET_DVR_API BOOL __stdcall NET_DVR_InquestGetPIPStatus_V30(LONG lUserID, LPNET_DVR_INQUEST_ROOM lpInquestRoom, LPNET_DVR_INQUEST_PIP_STATUS lpStatus); +NET_DVR_API BOOL __stdcall NET_DVR_InquestSetPIPStatus_V30(LONG lUserID, LPNET_DVR_INQUEST_ROOM lpInquestRoom, LPNET_DVR_INQUEST_PIP_STATUS lpStatus); +NET_DVR_API BOOL __stdcall NET_DVR_InquestGetPIPStatus_V40(LONG lUserID, NET_DVR_INQUEST_ROOM const *lpInquestRoom, LPNET_DVR_INQUEST_PIP_STATUS_V40 lpStatus); +NET_DVR_API BOOL __stdcall NET_DVR_InquestSetPIPStatus_V40(LONG lUserID, NET_DVR_INQUEST_ROOM const *lpInquestRoom, LPNET_DVR_INQUEST_PIP_STATUS_V40 lpStatus); +NET_DVR_API BOOL __stdcall NET_DVR_InquestGetSystemInfo(LONG lUserID, LPNET_DVR_INQUEST_SYSTEM_INFO lpSystemInfo); +NET_DVR_API BOOL __stdcall NET_DVR_InquestSetSystemInfo(LONG lUserID, LPNET_DVR_INQUEST_SYSTEM_INFO lpSystemInfo); +NET_DVR_API BOOL __stdcall NET_DVR_InquestSendMessage(LONG lUserID, LPNET_DVR_INQUEST_ROOM lpInquestRoom, LPNET_DVR_INQUEST_MESSAGE lpInquestMessage); +NET_DVR_API BOOL __stdcall NET_DVR_InquestStartCDW_V30(LONG lUserID, LPNET_DVR_INQUEST_ROOM lpInquestRoom, BOOL bNotBurn); +NET_DVR_API BOOL __stdcall NET_DVR_InquestStopCDW_V30(LONG lUserID, LPNET_DVR_INQUEST_ROOM lpInquestRoom, BOOL bCancelWrite); +NET_DVR_API BOOL __stdcall NET_DVR_InquestGetCDWState_V30(LONG lUserID, LPNET_DVR_INQUEST_ROOM lpInquestRoom, LPNET_DVR_INQUEST_CDRW_STATUS pStatus); +NET_DVR_API LONG __stdcall NET_DVR_InquestResumeEvent(LONG lUserID, LPNET_DVR_INQUEST_RESUME_EVENT lpResumeEvent); +NET_DVR_API BOOL __stdcall NET_DVR_InquestGetResumeProgress(LONG lHandle, DWORD* pState); +NET_DVR_API BOOL __stdcall NET_DVR_InquestStopResume(LONG lHandle); +NET_DVR_API LONG __stdcall NET_DVR_InquestFindFile_V30(LONG lUserID, LPNET_DVR_INQUEST_ROOM pInquestRoom); +NET_DVR_API BOOL __stdcall NET_DVR_InquestGetDeviceVersion(LONG lUserID, LPNET_DVR_INQUEST_DEVICE_VERSION lpVersionInfo); +NET_DVR_API BOOL __stdcall NET_DVR_SetSDKSecretKey(LONG lUserID, char *sSecretKey); +NET_DVR_API BOOL __stdcall NET_DVR_LockFileByTime(LONG lUserID, LPNET_DVR_TIME_LOCK lpLockPara, LPNET_DVR_LOCK_RETURN lpLockReturn); +NET_DVR_API BOOL __stdcall NET_DVR_UnlockFileByTime(LONG lUserID, LPNET_DVR_TIME_LOCK lpLockPara, LPNET_DVR_LOCK_RETURN lpLockReturn); +NET_DVR_API BOOL __stdcall NET_DVR_ScreenZoomIn(LONG lUserID, LPNET_DVR_SCREENZOOM pStruScreen); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetAllCameraInfo(LONG lUserID, LPNET_DVR_MATRIX_CAMERALIST lpCamListInfo); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetSingleCameraInfo(LONG lUserID, DWORD dwCameraId, LPNET_MATRIX_CAMERAINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixAddCamera(LONG lUserID, DWORD dwCameraNum, BYTE *pBuffer, DWORD dwBufLength); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixModCameraInfo(LONG lUserID, LPNET_MATRIX_CAMERAINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixDelCamera(LONG lUserID, DWORD dwCameraId); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetAllMonitorInfo(LONG lUserID, LPNET_DVR_MATRIX_MONITORLIST lpMonListInfo); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetSingleMonitorInfo(LONG lUserID, DWORD dwMonitorId, LPNET_MATRIX_MONITORINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixAddMonitor(LONG lUserID, DWORD dwMonitorNum, BYTE *pBuffer, DWORD dwBufLength); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixModMonitorInfo(LONG lUserID, LPNET_MATRIX_MONITORINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixDelMonitor(LONG lUserID, DWORD dwMonitorId); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetAllMatrixInfo(LONG lUserID, LPNET_DVR_MATRIXLIST lpMatrixListInfo); +NET_DVR_API BOOL __stdcall NET_DVR_GetSingleMatrixInfo(LONG lUserID, DWORD dwMatrixId, LPNET_MATRIX_MATRIXINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_AddMatrix(LONG lUserID, LPNET_MATRIX_MATRIXINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_ModMatrixInfo(LONG lUserID, LPNET_MATRIX_MATRIXINFO lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_DelMatrix(LONG lUserID, DWORD dwMatrixId); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetUartParam(LONG lUserID, DWORD dwSerialChan, LPNET_MATRIX_UARTPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetUartParam(LONG lUserID, DWORD dwSerialChan , LPNET_MATRIX_UARTPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetUserInfo(LONG lUserID, DWORD dwUserNum, LPNET_MATRIX_USERPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixAddUser(LONG lUserID, DWORD dwUserNum, LPNET_MATRIX_USERPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixModUserInfo(LONG lUserID, DWORD dwUserNum, LPNET_MATRIX_USERPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixDelUser(LONG lUserID, DWORD dwUserNum); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetResourceInfo(LONG lUserID, DWORD dwResourceNum, LPNET_MATRIX_RESOURSEGROUPPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixAddResourceInfo(LONG lUserID, DWORD dwResourceNum, LPNET_MATRIX_RESOURSEGROUPPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixModResourceInfo(LONG lUserID, DWORD dwResourceNum, LPNET_MATRIX_RESOURSEGROUPPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixDelResourceInfo(LONG lUserID, DWORD dwResourceNum); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetUserGroupInfo(LONG lUserID, DWORD dwUserGroupNum, LPNET_MATRIX_USERGROUPPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixAddUserGroupInfo(LONG lUserID, DWORD dwUserGroupNum, LPNET_MATRIX_USERGROUPPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixModUserGroupInfo(LONG lUserID, DWORD dwUserGroupNum, LPNET_MATRIX_USERGROUPPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixDelUserGroup (LONG lUserID, DWORD dwUserGroupNum); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetAllTrunkInfo(LONG lUserID, LPNET_DVR_MATRIX_TRUNKLIST lpTrunkListInfo); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetTrunkInfo(LONG lUserID, DWORD dwTrunkNum, LPNET_MATRIX_TRUNKPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixAddTrunk(LONG lUserID, LPNET_MATRIX_TRUNKPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixModTrunkInfo(LONG lUserID, LPNET_MATRIX_TRUNKPARAM lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixTrunkCtrl(LONG lUserID, DWORD dwTrunkNum, BYTE byCtrlMode); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixTrunkStatusQuery(LONG lUserID, DWORD dwTrunkNum, BYTE *byTrunkStatus); + +NET_DVR_API BOOL __stdcall NET_DVR_FindBackgroundPic(LONG lUserID, DWORD dwPicID, BYTE *pPicBuffer, DWORD *lpPicLen); +NET_DVR_API BOOL __stdcall NET_DVR_DetectImage(LONG lUserID, LPNET_VCA_FD_PROCIMG_CFG lpFDProcImg,LPNET_VCA_FD_PROCIMG_RESULT lpOutBuf); +NET_DVR_API BOOL __stdcall NET_DVR_GetPictureModel(LONG lUserID, LPNET_VCA_REGISTER_PIC lpInBuf, LPNET_VCA_PICMODEL_RESULT lpOutBuf); +NET_DVR_API BOOL __stdcall NET_DVR_AddBlockList(LONG lUserID,LONG lChannel,LPNET_VCA_BLOCKLIST_PARA lpInter); +NET_DVR_API LONG __stdcall NET_DVR_FindBlockList(LONG lUserID, LPNET_VCA_BLOCKLIST_COND lpBlockListCond); +NET_DVR_API LONG __stdcall NET_DVR_FindNextBlockList(LONG lFindHandle,LPNET_VCA_BLOCKLIST_INFO lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_FindBlockListClose(LONG lFindHandle); +NET_DVR_API BOOL __stdcall NET_DVR_GetBlockListPicture(LONG lUserID, DWORD dwRegisterID, LPNET_VCA_BLOCKLIST_PIC lpOutBuffer); +NET_DVR_API BOOL __stdcall NET_DVR_UpdateBlockList(LONG lUserID,LONG lChannel, LPNET_VCA_BLOCKLIST_PARA lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_DelBlockList(LONG lUserID,LONG lChannel, DWORD dwRegisterID); +NET_DVR_API LONG __stdcall NET_DVR_FindSnapPicture(LONG lUserID, LPNET_VCA_FIND_PICTURECOND lpFindParam); +NET_DVR_API LONG __stdcall NET_DVR_FindNextSnapPic(LONG lFindHandle,LPNET_VCA_SUB_SNAPPIC_DATA lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_FindSnapPicClose(LONG lFindHandle); +NET_DVR_API LONG __stdcall NET_DVR_AdvanceFindSnapPicture(LONG lUserID, LPNET_VCA_FIND_PICTURECOND_ADVANCE lpFindParam); +NET_DVR_API LONG __stdcall NET_DVR_FindFaceMatchAlarm(LONG lUserID, LPNET_VCA_FIND_PICTURECOND lpFindParam); +NET_DVR_API LONG __stdcall NET_DVR_FindNextFaceMatchAlarm(LONG lFindHandle, LPNET_VCA_FACESNAP_MATCH_ALARM_LOG lpFaceMatchAlarmLog); +NET_DVR_API BOOL __stdcall NET_DVR_FindFaceMatchAlarmClose(LONG lFindHandle); +NET_DVR_API BOOL __stdcall NET_DVR_GetFaceMatchPic(LONG lUserID, LPNET_VCA_FACEMATCH_PICCOND lpMatchCond, LPNET_VCA_FACEMATCH_PICTURE lpMatchPic); +NET_DVR_API BOOL __stdcall NET_DVR_FastAddBlockList(LONG lUserID,LONG lChannel,LPNET_VCA_BLOCKLIST_FASTREGISTER_PARA lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetRemotePlay_V41(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_DEC_REMOTE_PLAY_V41 lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDisplayCfg_V41(LONG lUserID, DWORD dwDispChanNum, LPNET_DVR_MATRIX_VOUTCFG lpVoutCfg); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetDisplayCfg_V41(LONG lUserID, DWORD dwDispChanNum, LPNET_DVR_MATRIX_VOUTCFG lpDisplayCfg); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDeviceStatus_V41(LONG lUserID, LPNET_DVR_DECODER_WORK_STATUS_V41 lpDecoderCfg); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetSceneCfg(LONG lUserID, DWORD dwSceneNum, LPNET_DVR_MATRIX_SCENECFG lpSceneCfg); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetSceneCfg(LONG lUserID, DWORD dwSceneNum, LPNET_DVR_MATRIX_SCENECFG lpSceneCfg); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSceneControl(LONG lUserID, DWORD dwSceneNum, DWORD dwCmd, DWORD dwCmdParam); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetCurrentSceneMode(LONG lUserID, DWORD *dwSceneNum); +NET_DVR_API BOOL __stdcall NET_DVR_GetAllValidWinInfo(LONG lUserID, LPNET_DVR_WINLIST lpWinListInfo); +NET_DVR_API BOOL __stdcall NET_DVR_ScreenWinCtrl(LONG lUserID, DWORD dwWinIndex, DWORD dwCommand, LPNET_DVR_SCREEN_WINCFG lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_GetScreenInputStatus(LONG lUserID, LPNET_DVR_SCREENINPUTSTATUS lpStatus); +NET_DVR_API LONG __stdcall NET_DVR_PicUpload(LONG lUserID, char const *sFileName, LPNET_DVR_PICTURECFG lpPictureCfg); +NET_DVR_API LONG __stdcall NET_DVR_GetPicUploadProgress(LONG lUploadHandle); +NET_DVR_API BOOL __stdcall NET_DVR_CloseUploadHandle(LONG lUploadHandle); +NET_DVR_API BOOL __stdcall NET_DVR_PicControl(LONG lUserID, BYTE byUseType, BYTE byPicIndex, BYTE byCtrlCmd); +NET_DVR_API LONG __stdcall NET_DVR_GetPicUploadState(LONG lUploadHandle); +NET_DVR_API BOOL __stdcall NET_DVR_ScreenCtrl(LONG lUserID, DWORD dwDeviceNum, LPNET_DVR_SCREEN_CONTROL lpStruScreenCtrl); +typedef void (CALLBACK *SCREENPICDATACB)(LONG nScreenPicHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void *pUser); +NET_DVR_API LONG __stdcall NET_DVR_StartScreenPic(LONG nUserID, DWORD nInputNum, SCREENPICDATACB PicDataCallback, void *pUserData); +NET_DVR_API BOOL __stdcall NET_DVR_StopScreenPic(LONG nScreenPicHandle); +NET_DVR_API BOOL __stdcall NET_DVR_FocusOnePush(LONG lUserID, LONG lChannel); +NET_DVR_API BOOL __stdcall NET_DVR_ResetLens(LONG lUserID, LONG lChannel); + +typedef void(CALLBACK *fRemoteConfigCallback)(DWORD dwType, void* lpBuffer, DWORD dwBufLen, void* pUserData); +NET_DVR_API LONG __stdcall NET_DVR_StartRemoteConfig(LONG lUserID, DWORD dwCommand, LPVOID lpInBuffer, DWORD dwInBufferLen, fRemoteConfigCallback cbStateCallback, LPVOID pUserData); +NET_DVR_API BOOL __stdcall NET_DVR_StopRemoteConfig(LONG lHandle); +NET_DVR_API LONG __stdcall NET_DVR_GetNextRemoteConfig(LONG lHandle, void* lpOutBuff, DWORD dwOutBuffSize); +NET_DVR_API BOOL __stdcall NET_DVR_GetRemoteConfigState(LONG lHandle, void *pState); +NET_DVR_API BOOL __stdcall NET_DVR_SendRemoteConfig(LONG lHandle, DWORD dwDataType, char *pSendBuf, DWORD dwBufSize); +NET_DVR_API LONG __stdcall NET_DVR_SendWithRecvRemoteConfig(LONG lHandle, void* lpInBuff, DWORD dwInBuffSize, void* lpOutBuff, DWORD dwOutBuffSize, DWORD *dwOutDataLen); + +typedef void(CALLBACK *fLongCfgStateCallback)(LONG lHandle, DWORD dwState, LPVOID pUserData); +NET_DVR_API BOOL __stdcall NET_DVR_CloseLongCfgHandle(LONG lHandle); +NET_DVR_API LONG __stdcall NET_DVR_RaidPullDiskStart(LONG lUserID, LONG lRaidID, fLongCfgStateCallback cbStateCallback, LPVOID pUserData); +NET_DVR_API LONG __stdcall NET_DVR_ScanRaidStart(LONG lUserID, fLongCfgStateCallback cbStateCallback, LPVOID pUserData); +NET_DVR_API LONG __stdcall NET_DVR_SetAccessCameraInfo(LONG lUserID, DWORD dwChannel, LPNET_DVR_ACCESS_CAMERA_INFO lpCameraInfo, fLongCfgStateCallback cbStateCallback, LPVOID pUserData); + +NET_DVR_API BOOL __stdcall NET_DVR_InquiryRecordTimeSpan(LONG lUserID, DWORD dwChannel, NET_DVR_RECORD_TIME_SPAN_INQUIRY const *lpInquiry, LPNET_DVR_RECORD_TIME_SPAN lpResult); +NET_DVR_API BOOL __stdcall NET_DVR_UpdateRecordIndex(LONG lUserID, DWORD dwChannel); +NET_DVR_API BOOL __stdcall NET_DVR_GetUpnpNatState(LONG lUserID, LPNET_DVR_UPNP_NAT_STATE lpState); + +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetLoopPlanArray(LONG lUserID, DWORD dwArrayNum, LPNET_DVR_MATRIX_LOOP_DECINFO_V30 lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetLoopPlanArray(LONG lUserID, DWORD dwArrayNum, NET_DVR_MATRIX_LOOP_DECINFO_V30 const *lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetAlarmShowMode(LONG lUserID, LPNET_DVR_ALARMMODECFG lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetAlarmShowMode(LONG lUserID, NET_DVR_ALARMMODECFG const *lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixStartDynamicAssociateDecode(LONG lUserID, DWORD dwDecChanNum, NET_DVR_DYNAMICDECODE const *lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixAlarmTurn(LONG lUserID, DWORD dwDecChanNum, DWORD dwTurnParam); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixAlarmShowControl(LONG lUserID, DWORD dwDecChanNum, DWORD dwShowMode); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetPlanDecode(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_PLANDECODE lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetPlanDecode(LONG lUserID, DWORD dwDecChanNum, NET_DVR_PLANDECODE const *lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetLoopDecChanInfo_EX(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_LOOP_DECINFO_EX lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetLoopDecChanInfo_EX(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_LOOP_DECINFO_EX lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixStartDynamic_EX(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_PU_STREAM_CFG_EX lpDynamicInfo); +NET_DVR_API BOOL __stdcall NET_DVR_GetTrunkListInfo(LONG lUserID, DWORD dwTrunkNum, DWORD dwStartTrunk, LPNET_DVR_MATRIX_TRUNKLIST lpTrunkListInfo, DWORD *pReturnSize); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetSubDecSystemJoinInfo_V41(LONG lUserID, LPNET_DVR_ALLDECSUBSYSTEMJOININFO_V41 lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostSubSystemSetupAlarmChan(LONG lUserID, DWORD dwSubSystemNum); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostSubSystemCloseAlarmChan(LONG lUserID, DWORD dwSubSystemNum); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostClearAlarm(LONG lUserID, DWORD dwSubSystemNum); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostArrayBypass(LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostArrayBypassResume (LONG lUserID); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostSetReportMode(LONG lUserID, LONG lCenterNum, LPVOID lpInputBuf, DWORD dwInputBufLen); +NET_DVR_API BOOL __stdcall NET_DVR_AlarmHostGetReportMode(LONG lUserID, LPVOID lpOutputBuf, DWORD dwOutputBufLen); +NET_DVR_API LONG __stdcall NET_DVR_StartUploadAudio(LONG lUserID, DWORD dwAudioNum, DWORD dwAudioType, char const *sAudioFileName); +NET_DVR_API LONG __stdcall NET_DVR_StartDownloadAudio(LONG lUserID, DWORD dwAudioNum, char const *sAudioFileName); +NET_DVR_API BOOL __stdcall NET_DVR_StopAudioOperate(LONG lAudioHandle); +NET_DVR_API LONG __stdcall NET_DVR_GetAudioProgress(LONG lAudioHandle); +NET_DVR_API BOOL __stdcall NET_DVR_AudioCtrl(LONG lUserID, DWORD dwAudioNum, DWORD dwCtrlParam); +NET_DVR_API BOOL __stdcall NET_DVR_GetDeviceConfig(LONG lUserID, DWORD dwCommand, DWORD dwCount, LPVOID lpInBuffer, DWORD dwInBufferSize, LPVOID lpStatusList, LPVOID lpOutBuffer, DWORD dwOutBufferSize); +NET_DVR_API BOOL __stdcall NET_DVR_SetDeviceConfig(LONG lUserID, DWORD dwCommand, DWORD dwCount, LPVOID lpInBuffer, DWORD dwInBufferSize, LPVOID lpStatusList, LPVOID lpInParamBuffer, DWORD dwInParamBufferSize); +NET_DVR_API BOOL __stdcall NET_DVR_LockStreamFileByTime(LONG lUserID, LPNET_DVR_STREAM_TIME_LOCK lpLockPara, LPNET_DVR_LOCK_RETURN lpLockReturn); +NET_DVR_API BOOL __stdcall NET_DVR_UnlockStreamFileByTime(LONG lUserID, LPNET_DVR_STREAM_TIME_LOCK lpLockPara, LPNET_DVR_LOCK_RETURN lpLockReturn); +NET_DVR_API BOOL __stdcall NET_DVR_StartManualRecord(LONG lUserID, LPNET_DVR_MANUAL_RECORD_PARA lpManualRecPara); +NET_DVR_API BOOL __stdcall NET_DVR_StopManualRecord(LONG lUserID, LPNET_DVR_STREAM_INFO pIDInfo); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackReverseByName(LONG lUserID, char *sPlayBackFileName, HWND hWnd); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackByTime_V40(LONG lUserID, NET_DVR_VOD_PARA const* pVodPara); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackByTime_V50(LONG lUserID, NET_DVR_VOD_PARA_V50 const* pVodPara); +NET_DVR_API LONG __stdcall NET_DVR_PlayBackReverseByTime_V40(LONG lUserID, HWND hWnd, LPNET_DVR_PLAYCOND pPlayCond); +NET_DVR_API LONG __stdcall NET_DVR_GetFileByTime_V40(LONG lUserID, char *sSavedFileName, LPNET_DVR_PLAYCOND pDownloadCond); +NET_DVR_API LONG __stdcall NET_DVR_FindFile_V40(LONG lUserID, LPNET_DVR_FILECOND_V40 pFindCond); +NET_DVR_API LONG __stdcall NET_DVR_SetupAlarmChan_V41(LONG lUserID, LPNET_DVR_SETUPALARM_PARAM lpSetupParam); +NET_DVR_API BOOL __stdcall NET_DVR_AddDataBase(LONG lUserID, LPNET_VCA_DATABASE_PARAM lpInBuf); +NET_DVR_API LONG __stdcall NET_DVR_FindDataBase(LONG lUserID, LPNET_VCA_FIND_DATABASE_COND lpInBuf); +NET_DVR_API LONG __stdcall NET_DVR_FindNextDataBase(LONG lFindHandle, LPNET_VCA_DATABASE_PARAM lpOutBuf); +NET_DVR_API BOOL __stdcall NET_DVR_FindDataBaseClose(LONG lFindHandle); +NET_DVR_API BOOL __stdcall NET_DVR_UpdateDataBase(LONG lUserID, LPNET_VCA_DATABASE_PARAM lpInBuf); +NET_DVR_API BOOL __stdcall NET_DVR_DeleteDataBase(LONG lUserID, LPNET_VCA_DELETE_DATABASE_COND lpCond); +typedef void(CALLBACK *fSearchDBCallBack)(LONG lHandle, DWORD dwType, DWORD dwResultNum, BYTE* pBuffer, DWORD dwBufSize,void *pUser); +NET_DVR_API LONG __stdcall NET_DVR_InquireSnapDBRecord(LONG lUserID, DWORD dwDataBaseID, LPNET_VCA_INQUIRE_SNAPDB_COND lpInBuf, fSearchDBCallBack cbSearchDBCallBack, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_GetInquireSnapDBProgress(LONG lInquireHandle, DWORD* pState); +NET_DVR_API BOOL __stdcall NET_DVR_DeleteSnapDBRecord(LONG lUserID, DWORD dwDataBaseID, LPNET_VCA_DELETE_SNAPRECORD_COND lpInBuf); +NET_DVR_API LONG __stdcall NET_DVR_SearchSnapDB(LONG lUserID, LPNET_VCA_SEARCH_SNAPDB_COND lpInBuf, fSearchDBCallBack cbSearchDBCallBack, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_GetSearchSnapDBProgress(LONG lSearchHandle, DWORD* pState); +NET_DVR_API BOOL __stdcall NET_DVR_AddFaceDBRecord(LONG lUserID, DWORD dwDataBaseID, LPNET_VCA_DATARECORD_INFO lpInBuf); +NET_DVR_API BOOL __stdcall NET_DVR_FastAddFaceDBRecord(LONG lUserID, DWORD dwDataBaseID, LPNET_VCA_FAST_DATARECORD_INFO lpInBuf); +NET_DVR_API LONG __stdcall NET_DVR_InquireFaceDBRecord(LONG lUserID, LPNET_VCA_DATARECORD_COND lpInBuf,fSearchDBCallBack cbInquireDBCallBack, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_GetInquireFaceDBProgress(LONG lInquireHandle, DWORD* pState); +NET_DVR_API BOOL __stdcall NET_DVR_UpdateFaceDBRecord(LONG lUserID, DWORD dwDataBaseID, LPNET_VCA_DATARECORD_INFO lpInBuf); +NET_DVR_API BOOL __stdcall NET_DVR_DeleteFaceDBRecord(LONG lUserID, DWORD dwDataBaseID, LPNET_VCA_DELETE_RECORD_COND lpInBuf); +typedef void(CALLBACK *fSearchDBCallBack)(LONG lSearchHandle, DWORD dwType, DWORD dwResultNum, BYTE* pBuffer, DWORD dwBufSize,void *pUser); +NET_DVR_API LONG __stdcall NET_DVR_SearchFaceDB(LONG lUserID, LPNET_VCA_SEARCH_FACEDB_COND lpInBuf,fSearchDBCallBack cbSearchDBCallBack, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_GetSearchFaceDBProgress(LONG lSearchHandle, DWORD* pState); +NET_DVR_API BOOL __stdcall NET_DVR_StopSearchDB(LONG lHandle); +NET_DVR_API BOOL __stdcall NET_DVR_FindMatchPicture(LONG lUserID, LPNET_VCA_FIND_MATCHPIC_COND lpFindCond, LPNET_VCA_FIND_MATCHPIC_RESULT lpFindResult); +NET_DVR_API BOOL __stdcall NET_DVR_RemoteControl(LONG lUserID, DWORD dwCommand, LPVOID lpInBuffer, DWORD dwInBufferSize); +NET_DVR_API LONG __stdcall NET_DVR_GetBMPByTime(LONG lUserID, LONG lChannel, NET_DVR_TIME const *lpTime, char const *sFilename); +NET_DVR_API BOOL __stdcall NET_DVR_CommandDevice(LONG lUserID, DWORD dwOutCommand, LPVOID lpInBuffer, DWORD dwInBufferSize); +NET_DVR_API BOOL __stdcall NET_DVR_TestDVRAlive(LONG lUserID); + +NET_DVR_API BOOL __stdcall NET_DVR_PicViewRequest(LONG lUserID, NET_DVR_PIC_VIEW_PARAM *lpPicViewParam); +typedef LONG (CALLBACK *PicViewCallBack)(LPNET_DVR_PICVIEW_CALLBACKPARAM pStruPicViewParam, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetPicViewResponseCallBack(PicViewCallBack fPicViewResponseCallBack, void *pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetPicViewDataCallBack(LONG lPicViewHandle, SCREENPICDATACB fPicDataCallback, void *pUserData); +NET_DVR_API BOOL __stdcall NET_DVR_GetDevList(LONG lUserID, LPNET_DVR_DEVLIST lpDevListInfo); +NET_DVR_API BOOL __stdcall NET_DVR_GetScreenList(LONG lUserID, LPNET_DVR_SCREENLIST lpScreenListInfo); +NET_DVR_API BOOL __stdcall NET_DVR_SetScreenRelation(LONG lUserID, NET_DVR_DISP_SCREEN const* lpScreenInfo); +NET_DVR_API BOOL __stdcall NET_DVR_TextShowCtrl(LONG lUserID, DWORD dwDeviceIndex, LPNET_DVR_TEXTSHOW lpText); +NET_DVR_API LONG __stdcall NET_DVR_StartUpgrade(LONG lUserID, LPNET_DVR_OPERATE_DEVICE lpStruOperate, DVCS_UPGRADESTATE_CB UpgradeStateCallback, void *pUserData); +NET_DVR_API BOOL __stdcall NET_DVR_StopUpgrade(LONG lUserID, LPNET_DVR_OPERATE_DEVICE lpStruOperate, LONG lUpgradeHandle); +NET_DVR_API BOOL __stdcall NET_DVR_AddNetSignal(LONG lUserID, LPNET_DVR_NETSIGNAL_INFO lpStruSignal, void* lpOutBuf , DWORD dwBufLen); +NET_DVR_API LONG __stdcall NET_DVR_StartPicPreview(LONG lUserID, NET_DVR_START_PIC_VIEW_INFO const* lpStruStartPicView, SCREENPICDATACB PicDataCallback, void *pUserData); +NET_DVR_API BOOL __stdcall NET_DVR_GetDeviceStatus(LONG lUserID, DWORD dwCommand, DWORD dwCount, LPVOID lpInBuffer, DWORD dwInBufferSize, LPVOID lpStatusList, LPVOID lpOutBuffer, DWORD dwOutBufferSize); +NET_DVR_API BOOL __stdcall NET_DVR_GetPlanList(LONG lUserID, DWORD dwDevNum, LPNET_DVR_PLAN_LIST lpPlanList); +NET_DVR_API BOOL __stdcall NET_DVR_GetInputSignalList(LONG lUserID, DWORD dwDevNum, LPNET_DVR_INPUT_SIGNAL_LIST lpInputSignalList); +NET_DVR_API BOOL __stdcall NET_DVR_GetInputSignalList_V40(LONG lUserID, DWORD dwDevNum, LPNET_DVR_INPUT_SIGNAL_LIST lpInputSignalList); + +NET_DVR_API LONG __stdcall NET_DVR_UploadFile(LONG lUserID, DWORD dwUploadType, LPVOID lpInBuffer, DWORD dwInBufferSize, char* sFileName); +NET_DVR_API LONG __stdcall NET_DVR_UploadFile_V40(LONG lUserID, DWORD dwUploadType, LPVOID lpInBuffer, DWORD dwInBufferSize, char const * sFileName, LPVOID lpOutBuffer, DWORD dwOutBufferSize); +NET_DVR_API LONG __stdcall NET_DVR_GetUploadState(LONG lUploadHandle, LPDWORD pProgress); +NET_DVR_API BOOL __stdcall NET_DVR_GetUploadResult(LONG lUploadHandle, LPVOID lpOutBuffer, DWORD dwOutBufferSize); +NET_DVR_API BOOL __stdcall NET_DVR_UploadClose(LONG lUploadHandle); +NET_DVR_API LONG __stdcall NET_DVR_StartUploadFile(LONG lUserID, LPNET_DVR_UPLOAD_PARAM lpStruUploadParam); +NET_DVR_API LONG __stdcall NET_DVR_GetUploadFileProgress(LONG lFileHandle); +NET_DVR_API LONG __stdcall NET_DVR_GetUploadFileState(LONG lFileHandle); +NET_DVR_API BOOL __stdcall NET_DVR_StopUploadFile (LONG lFileHandle); +NET_DVR_API LONG __stdcall NET_DVR_StartDownloadFile(LONG lUserID, LPNET_DVR_DOWNLOAD_PARAM lpStruDownloadParam); +NET_DVR_API LONG __stdcall NET_DVR_GetDownloadFileProgress(LONG lFileHandle); +NET_DVR_API LONG __stdcall NET_DVR_GetDownloadFileState(LONG lFileHandle); +NET_DVR_API BOOL __stdcall NET_DVR_StopDownloadFile (LONG lFileHandle); +NET_DVR_API BOOL __stdcall NET_DVR_DownloadControl(LONG lDownloadHandle, NET_SDK_DOWNLOAD_CONTROL_TYPE_ENUM enumDownloadType, void* lpInBuffer, DWORD dwInBufferLen, void* lpOutBuffer, DWORD dwOutBufferLen); +NET_DVR_API LONG __stdcall NET_DVR_UploadSend(LONG lUploadHandle, const NET_DVR_SEND_PARAM_IN *pstruSendParamIN, void* lpOutBuffer); + + +NET_DVR_API BOOL __stdcall NET_DVR_GetMobileDevStatus(LONG lUserID, DWORD dwStatusType, LPNET_DVR_MB_MOBILEDEV_STATUS lpstruMobileDevStatus); +NET_DVR_API BOOL __stdcall NET_DVR_SetVoiceDataCallBack(LONG lVoiceComHandle, BOOL bNeedCBNoEncData, void(CALLBACK *fVoiceDataCallBack)(LONG lVoiceComHandle, char *pRecvDataBuffer, DWORD dwBufSize, BYTE byAudioFlag, void* pUser), void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetTransparentParam(LONG lUserID, char *sInBuffer, DWORD dwInSize); +NET_DVR_API BOOL __stdcall NET_DVR_GetTransparentParam(LONG lUserID, char *sInBuffer, DWORD dwInSize, char *sOutBuffer, DWORD dwOutSize); + +NET_DVR_API BOOL __stdcall NET_DVR_SetSDKLocalConfig(LPNET_DVR_SDKLOCAL_CFG lpSdkLocalCfg); +NET_DVR_API BOOL __stdcall NET_DVR_GetSDKLocalConfig(LPNET_DVR_SDKLOCAL_CFG lpSdkLocalCfg); + +NET_DVR_API BOOL __stdcall NET_DVR_SetSDKLocalCfg(NET_SDK_LOCAL_CFG_TYPE enumType, const void *lpInBuff); +NET_DVR_API BOOL __stdcall NET_DVR_GetSDKLocalCfg(NET_SDK_LOCAL_CFG_TYPE enumType, void* lpOutBuff); + +NET_DVR_API LONG __stdcall NET_DVR_OpticalUpgrade(LONG lUserID, char const *sFileName, LPNET_DVR_OPTICAL_INFO lpOpticalInfo); +typedef void(CALLBACK *fGPSDataCallback)(LONG nHandle, DWORD dwState, void* lpBuffer, DWORD dwBufLen, void* pUserData); +NET_DVR_API LONG __stdcall NET_DVR_GetVehicleGpsInfo(LONG nUserID, LPNET_DVR_GET_GPS_DATA_PARAM lpGPSDataParam, fGPSDataCallback cbGPSDataCallback, void* pUser); + +NET_DVR_API BOOL __stdcall NET_DVR_ClosePreview(LONG lUserID, DWORD nSessionID); +NET_DVR_API BOOL __stdcall NET_DVR_ClosePlayBack(LONG lUserID, DWORD nSessionID); +NET_DVR_API LONG __stdcall NET_DVR_RealPlay_V40(LONG lUserID, LPNET_DVR_PREVIEWINFO lpPreviewInfo, REALDATACALLBACK fRealDataCallBack_V30 = NULL, void* pUser = NULL); +NET_DVR_API LONG __stdcall NET_DVR_RealPlaySpecial(LONG lUserID, LPNET_DVR_PREVIEWINFO_SPECIAL lpPreviewInfo, REALDATACALLBACK fRealDataCallBack_V30 = NULL, void* pUser = NULL); +NET_DVR_API BOOL __stdcall NET_DVR_GetLinkAddr(LONG lLinkHandle, NET_DVR_LINK_KIND enumLinkKind, LPNET_DVR_LINK_ADDR lpLinkAddr); + +NET_DVR_API LONG __stdcall NET_DVR_StartDownload(LONG lUserID, DWORD dwDownloadType, LPVOID lpInBuffer, DWORD dwInBufferSize, const char *sFileName); +NET_DVR_API LONG __stdcall NET_DVR_GetDownloadState(LONG lDownloadHandle, LPDWORD pProgress); +NET_DVR_API int __stdcall NET_DVR_GetDownloadStateInfo(LONG lDownloadHandle, void* pStatusInfo); +NET_DVR_API BOOL __stdcall NET_DVR_StopDownload(LONG lHandle); + +NET_DVR_API BOOL __stdcall NET_DVR_MatrixStartDynamic_V41(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_PU_STREAM_CFG_V41 lpDynamicInfo); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetLoopDecChanInfo_V41(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_LOOP_DECINFO_V41 lpOuter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixSetLoopDecChanInfo_V41(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_LOOP_DECINFO_V41 lpInter); +NET_DVR_API BOOL __stdcall NET_DVR_MatrixGetDecChanInfo_V41(LONG lUserID, DWORD dwDecChanNum, LPNET_DVR_MATRIX_DEC_CHAN_INFO_V41 lpOuter); + +NET_DVR_API LONG __stdcall NET_DVR_StartT1Test(LONG lUserID, LPNET_DVR_ALARMHOST_DOWNLOAD_PARAM lpStruDownloadParam); +NET_DVR_API BOOL __stdcall NET_DVR_StopTT1Test(BOOL lHandle); +NET_DVR_API BOOL __stdcall NET_DVR_GetT1TestStatus(LONG lHandle, LONG *pStatus); +NET_DVR_API BOOL __stdcall NET_DVR_SendT1TestData(LONG lHandle, DWORD dwDataType, char *pSendBuf, DWORD dwSendBufLen); + +NET_DVR_API BOOL __stdcall NET_DVR_UploadLogo_NEW(LONG lUserID, DWORD dwLogoNo, LPNET_DVR_MATRIX_LOGO_INFO lpLogoInfo, char *sLogoBuffer); +NET_DVR_API BOOL __stdcall NET_DVR_DownloadLogo(LONG lUserID, DWORD dwLogoNo, LPNET_DVR_MATRIX_LOGO_INFO lpLogoInfo, char *sLogoBuffer, DWORD dwLogoBufferSize); +NET_DVR_API LONG __stdcall NET_DVR_StartPassiveTransCode(LONG lUserID, NET_DVR_STREAM_INFO const *pStreamInfo, NET_DVR_COMPRESSIONCFG_V30 const *pDstTransInfo, NET_DVR_PASSIVETRANSINFO const *pPassiveTransInfo, void(CALLBACK *fTransCodeDataCallBack) (LONG lPassiveHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void* pUser) = NULL, void* pUser = NULL); +NET_DVR_API BOOL __stdcall NET_DVR_TransCodeInputData(LONG lPassiveHandle, BYTE *pBuffer, DWORD dwBufSize); +NET_DVR_API BOOL __stdcall NET_DVR_StopPassiveTransCode(LONG lPassiveHandle); +NET_DVR_API LONG __stdcall NET_DVR_GetPassiveTransChanNum(LONG lPassiveHandle); +NET_DVR_API BOOL __stdcall NET_DVR_SetDeviceConfigEx(LONG lUserID, DWORD dwCommand, DWORD dwCount, NET_DVR_IN_PARAM *lpInParam, NET_DVR_OUT_PARAM *lpOutParam); + +NET_DVR_API BOOL __stdcall NET_DVR_GetSTDConfig(LONG lUserID, DWORD dwCommand, LPNET_DVR_STD_CONFIG lpConfigParam); +NET_DVR_API BOOL __stdcall NET_DVR_SetSTDConfig(LONG lUserID, DWORD dwCommand, LPNET_DVR_STD_CONFIG lpConfigParam); +NET_DVR_API BOOL __stdcall NET_DVR_GetSTDAbility(LONG lUserID, DWORD dwAbilityType, LPNET_DVR_STD_ABILITY lpAbilityParam); +NET_DVR_API BOOL __stdcall NET_DVR_STDControl(LONG lUserID, DWORD dwCommand, LPNET_DVR_STD_CONTROL lpControlParam); +NET_DVR_API BOOL __stdcall NET_DVR_STDXMLConfig(LONG lUserID, NET_DVR_XML_CONFIG_INPUT* lpInputParam, NET_DVR_XML_CONFIG_OUTPUT* lpOutputParam); +NET_DVR_API LONG __stdcall NET_DVR_Upgrade_V40(DWORD lUserID, DWORD dwUpgradeType, char const *sFileName, void *pInbuffer, DWORD dwBufferLen); +NET_DVR_API LONG __stdcall NET_DVR_Upgrade_V50(DWORD lUserID, LPNET_DVR_UPGRADE_PARAM lpUpgradeParam); + +NET_DVR_API BOOL __stdcall NET_DVR_DetectImage_V50(LONG lUserID, LPNET_VCA_FD_PROCIMG_CFG lpFDProcImg,LPNET_VCA_FD_PROCIMG_RESULT_V50 lpOutBuf); + +NET_DVR_API LONG __stdcall NET_DVR_SmartSearchPicture(LONG lUserID, NET_DVR_SMART_SEARCH_PIC_PARA * pFindParam); +NET_DVR_API LONG __stdcall NET_DVR_FindNextSmartPicture(LONG lFindHandle,LPNET_DVR_SMART_SEARCH_PIC_RET lpFindData); +NET_DVR_API BOOL __stdcall NET_DVR_CloseSmartSearchPicture(LONG lFindHandle); +NET_DVR_API BOOL __stdcall NET_DVR_SetESCallBack(LONG iRealHandle, void (__stdcall *fnESCallback)(LONG lPreviewHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void* pUser), void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_SetESRealPlayCallBack(LONG iRealHandle, void(__stdcall *fPlayESCallBack)(LONG lPreviewHandle, NET_DVR_PACKET_INFO_EX *pstruPackInfo, void* pUser), void* pUser); +NET_DVR_API BOOL __stdcall NET_DVR_ActivateDevice(char* sDVRIP, WORD wDVRPort, LPNET_DVR_ACTIVATECFG lpActivateCfg); +NET_DVR_API BOOL __stdcall NET_DVR_GetAddrInfoByServer(DWORD dwQueryType, void* pInBuf, DWORD dwInBufLen, void* pOutBuf, DWORD dwOutBufLen); +NET_DVR_API BOOL __stdcall NET_DVR_StartGetDevState(LPNET_DVR_CHECK_DEV_STATE pParams); +NET_DVR_API BOOL __stdcall NET_DVR_StopGetDevState(); +NET_DVR_API BOOL __stdcall NET_DVR_RigisterPlayBackDrawFun(LONG lPlayHandle, void (__stdcall *fDrawFun)(LONG lPlayHandle, HDC hDc, DWORD dwUser), DWORD dwUser); + +NET_DVR_API BOOL __stdcall NET_DVR_SetSDKInitCfg(NET_SDK_INIT_CFG_TYPE enumType, void* const lpInBuff); +NET_DVR_API BOOL __stdcall NET_DVR_ReleaseSDKMemPool(LPNET_DVR_SDKMEMPOOL_CFG lpSdkMemPoolCfg); + +NET_DVR_API BOOL __stdcall NET_DVR_CapturePictureBlock(LONG iRealHandle, char const *sPicFileName, DWORD dwTimeOut); + + +NET_DVR_API BOOL __stdcall NET_DVR_CapturePictureBlock_New(LONG iRealHandle, char *pPicBuf, DWORD dwPicSize, DWORD *lpSizeReturned); + +NET_DVR_API BOOL __stdcall NET_DVR_ChangeWndResolution(LONG iRealHandle); + +NET_DVR_API LONG __stdcall NET_DVR_SDKChannelToISAPI(LONG lUserID, LONG lInChannel, BOOL bSDKToISAPI); + +NET_DVR_API BOOL __stdcall NET_DVR_STDXMLConfig_Conv(LONG lUserID, NET_DVR_XML_CONFIG_INPUT* lpInputParam, NET_DVR_XML_CONFIG_OUTPUT* lpOutputParam); + +NET_DVR_API BOOL __stdcall NET_DVR_SetDevXmlLen(LONG lUserID, const WORD wDevXmlLen); + +NET_DVR_API LONG __stdcall NET_DVR_SetupAlarmChan_V50(LONG iUserID, LPNET_DVR_SETUPALARM_PARAM_V50 lpSetupParam, char *pSub, DWORD dwSubSize); + +NET_DVR_API BOOL __stdcall NET_DVR_GetAlarmSubscribe(LONG lAlarmHandle, char *pData, DWORD dwDataLen); + +NET_DVR_API BOOL __stdcall NET_DVR_SetAlarmSubscribe(LONG lAlarmHandle, char *pData, DWORD dwDataLen); + +NET_DVR_API BOOL __stdcall NET_DVR_GetNPQStat(LONG lHandle, NET_SDK_NPQ_STATE* pStruStat); + +NET_DVR_API BOOL __stdcall NET_DVR_SetNPQNotifyParam(LONG lHandle, NET_SDK_NPQ_NOTIFY_PARAM* pNotifyParam); + +NET_DVR_API BOOL __stdcall NET_DVR_PlaybackGetNPQStat(LONG lHandle, NET_SDK_NPQ_STATE* pStruStat); +NET_DVR_API BOOL __stdcall NET_DVR_RenderPrivateData(LONG lRealHandle, int iIntelType, BOOL bTrue); +NET_DVR_API BOOL __stdcall NET_DVR_RenderPrivateDataEx(LONG lRealHandle, int iIntelType, int iSubType, BOOL bTrue); + +NET_DVR_API BOOL __stdcall NET_DVR_PlaybackSetNPQNotifyParam(LONG lHandle, NET_SDK_NPQ_NOTIFY_PARAM* pNotifyParam); + +NET_DVR_API BOOL __stdcall NET_DVR_EnableRelogon(BOOL bEnable, DWORD dwReserved); + +NET_DVR_API LONG __stdcall NET_DVR_CreateEzvizUser(LPNET_DVR_EZVIZ_USER_LOGIN_INFO pLoginInfo, LPNET_DVR_DEVICEINFO_V30 pDeviceInfo); +NET_DVR_API BOOL __stdcall NET_DVR_DeleteEzvizUser(LONG iUserID); + +NET_DVR_API LONG __stdcall NET_DVR_CreateOpenEzvizUser(LPNET_DVR_OPEN_EZVIZ_USER_LOGIN_INFO pLoginInfo, LPNET_DVR_DEVICEINFO_V40 pDeviceInfo); +NET_DVR_API BOOL __stdcall NET_DVR_DeleteOpenEzvizUser(LONG iUserID); + +NET_DVR_API BOOL __stdcall NET_DVR_LoadAdditionalLib(ADDITIONAL_LIB libType, char const *sDllName); + +#endif // + diff --git a/src/include/Hik/arm64/LinuxPlayM4.h b/src/include/Hik/arm64/LinuxPlayM4.h new file mode 100644 index 0000000..1043213 --- /dev/null +++ b/src/include/Hik/arm64/LinuxPlayM4.h @@ -0,0 +1,955 @@ +#ifndef __LINUX_PLAYM4_H__ +#define __LINUX_PLAYM4_H__ + +#ifdef __cplusplus + extern "C" + { +#endif + +typedef unsigned int PLAYM4_HWND; +typedef void * PLAYM4_HWNDEX; +typedef void * PLAYM4_HDC; + +#define PLAYM4_API + +#define __stdcall + +#ifndef CALLBACK +#define CALLBACK +#endif + +//Max channel numbers +#define PLAYM4_MAX_SUPPORTS 500 + +//Wave coef range; +#define MIN_WAVE_COEF -100 +#define MAX_WAVE_COEF 100 + +//Timer type +#define TIMER_1 1 //Only 16 timers for every process.Default TIMER; +#define TIMER_2 2 //Not limit;But the precision less than TIMER_1; + +//BUFFER AND DATA TYPE +#define BUF_VIDEO_SRC (1) //mixed input,total src buffer size;splited input,video src buffer size +#define BUF_AUDIO_SRC (2) //mixed input,not defined;splited input,audio src buffer size +#define BUF_VIDEO_RENDER (3) //video render node count or node cout for decoded data +#define BUF_AUDIO_RENDER (4) //audio render node count +#define BUF_VIDEO_DECODED (5) //video decoded node count to render +#define BUF_AUDIO_DECODED (6) //audio decoded node count to render + +//Error code +#define PLAYM4_NOERROR 0 //no error +#define PLAYM4_PARA_OVER 1 //input parameter is invalid; +#define PLAYM4_ORDER_ERROR 2 //The order of the function to be called is error. +#define PLAYM4_TIMER_ERROR 3 //Create multimedia clock failed; +#define PLAYM4_DEC_VIDEO_ERROR 4 //Decode video data failed. +#define PLAYM4_DEC_AUDIO_ERROR 5 //Decode audio data failed. +#define PLAYM4_ALLOC_MEMORY_ERROR 6 //Allocate memory failed. +#define PLAYM4_OPEN_FILE_ERROR 7 //Open the file failed. +#define PLAYM4_CREATE_OBJ_ERROR 8 //Create thread or event failed +//#define PLAYM4_CREATE_DDRAW_ERROR 9 //Create DirectDraw object failed. +//#define PLAYM4_CREATE_OFFSCREEN_ERROR 10 //failed when creating off-screen surface. +#define PLAYM4_BUF_OVER 11 //buffer is overflow +#define PLAYM4_CREATE_SOUND_ERROR 12 //failed when creating audio device. +#define PLAYM4_SET_VOLUME_ERROR 13 //Set volume failed +#define PLAYM4_SUPPORT_FILE_ONLY 14 //The function only support play file. +#define PLAYM4_SUPPORT_STREAM_ONLY 15 //The function only support play stream. +#define PLAYM4_SYS_NOT_SUPPORT 16 //System not support. +#define PLAYM4_FILEHEADER_UNKNOWN 17 //No file header. +#define PLAYM4_VERSION_INCORRECT 18 //The version of decoder and encoder is not adapted. +#define PLAYM4_INIT_DECODER_ERROR 19 //Initialize decoder failed. +#define PLAYM4_CHECK_FILE_ERROR 20 //The file data is unknown. +#define PLAYM4_INIT_TIMER_ERROR 21 //Initialize multimedia clock failed. +#define PLAYM4_BLT_ERROR 22 //Display failed. +//#define PLAYM4_UPDATE_ERROR 23 //Update failed. +#define PLAYM4_OPEN_FILE_ERROR_MULTI 24 //openfile error, streamtype is multi +#define PLAYM4_OPEN_FILE_ERROR_VIDEO 25 //openfile error, streamtype is video +#define PLAYM4_JPEG_COMPRESS_ERROR 26 //JPEG compress error +#define PLAYM4_EXTRACT_NOT_SUPPORT 27 //Don't support the version of this file. +#define PLAYM4_EXTRACT_DATA_ERROR 28 //extract video data failed. +#define PLAYM4_SECRET_KEY_ERROR 29 //Secret key is error //add 20071218 +#define PLAYM4_DECODE_KEYFRAME_ERROR 30 //add by hy 20090318 +#define PLAYM4_NEED_MORE_DATA 31 //add by hy 20100617 +#define PLAYM4_INVALID_PORT 32 //add by cj 20100913 +#define PLAYM4_NOT_FIND 33 //add by cj 20110428 +#define PLAYM4_NEED_LARGER_BUFFER 34 //add by pzj 20130528 +#define PLAYM4_FAIL_UNKNOWN 99 //Fail, but the reason is unknown; + +//۹ܴ +#define PLAYM4_FEC_ERR_ENABLEFAIL 100 // ģʧ +#define PLAYM4_FEC_ERR_NOTENABLE 101 // ģûм +#define PLAYM4_FEC_ERR_NOSUBPORT 102 // Ӷ˿ûз +#define PLAYM4_FEC_ERR_PARAMNOTINIT 103 // ûгʼӦ˿ڵIJ +#define PLAYM4_FEC_ERR_SUBPORTOVER 104 // Ӷ˿Ѿ +#define PLAYM4_FEC_ERR_EFFECTNOTSUPPORT 105 // ðװʽЧ֧ +#define PLAYM4_FEC_ERR_INVALIDWND 106 // ǷĴ +#define PLAYM4_FEC_ERR_PTZOVERFLOW 107 // PTZλԽ +#define PLAYM4_FEC_ERR_RADIUSINVALID 108 // ԲIJǷ +#define PLAYM4_FEC_ERR_UPDATENOTSUPPORT 109 // ָİװʽͽЧò²֧ +#define PLAYM4_FEC_ERR_NOPLAYPORT 110 // ſ˿û +#define PLAYM4_FEC_ERR_PARAMVALID 111 // Ϊ +#define PLAYM4_FEC_ERR_INVALIDPORT 112 // ǷӶ˿ +#define PLAYM4_FEC_ERR_PTZZOOMOVER 113 // PTZΧԽ +#define PLAYM4_FEC_ERR_OVERMAXPORT 114 // ֵ֧ͨͣĽͨΪĸ +#define PLAYM4_FEC_ERR_ENABLED 115 //ö˿Ѿģ +#define PLAYM4_FEC_ERR_D3DACCENOTENABLE 116 // D3Dûп +#define PLAYM4_FEC_ERR_PLACETYPE 117 // װʽ.һſportӦһְװʽ +#define PLAYM4_FEC_ERR_CorrectType 118 // ʽʽ,ܿһſport,趨PTZ۰ʽ,Ľʽֻܿһ·;180Ƚܺptzһ𿪣޹ԡ +#define PLAYM4_FEC_ERR_NULLWND 119 // ۴Ϊ +#define PLAYM4_FEC_ERR_PARA 120 // ۲ + +//Max display regions. +#define MAX_DISPLAY_WND 4 + +//Display type +#define DISPLAY_NORMAL 0x00000001 +#define DISPLAY_QUARTER 0x00000002 +#define DISPLAY_YC_SCALE 0x00000004 //add by gb 20091116 +#define DISPLAY_NOTEARING 0x00000008 +//Display buffers +#define MAX_DIS_FRAMES 50 +#define MIN_DIS_FRAMES 1 + +//Locate by +#define BY_FRAMENUM 1 +#define BY_FRAMETIME 2 + +//Source buffer +#define SOURCE_BUF_MAX 1024*100000 +#define SOURCE_BUF_MIN 1024*50 + +//Stream type +#define STREAME_REALTIME 0 +#define STREAME_FILE 1 + +//frame type +#define T_AUDIO16 101 +#define T_AUDIO8 100 +#define T_UYVY 1 +#define T_YV12 3 +#define T_RGB32 7 + +//capability +#define SUPPORT_DDRAW 1 +#define SUPPORT_BLT 2 +#define SUPPORT_BLTFOURCC 4 +#define SUPPORT_BLTSHRINKX 8 +#define SUPPORT_BLTSHRINKY 16 +#define SUPPORT_BLTSTRETCHX 32 +#define SUPPORT_BLTSTRETCHY 64 +#define SUPPORT_SSE 128 +#define SUPPORT_MMX 256 + +// º궨HIK_MEDIAINFOṹ +#define FOURCC_HKMI 0x484B4D49 // "HKMI" HIK_MEDIAINFOṹ +// ϵͳװʽ +#define SYSTEM_NULL 0x0 // ûϵͳ㣬ƵƵ +#define SYSTEM_HIK 0x1 // ļ +#define SYSTEM_MPEG2_PS 0x2 // PSװ +#define SYSTEM_MPEG2_TS 0x3 // TSװ +#define SYSTEM_RTP 0x4 // rtpװ +#define SYSTEM_RTPHIK 0x401 // rtpװ + +// Ƶ +#define VIDEO_NULL 0x0 // ûƵ +#define VIDEO_H264 0x1 // ׼H.264ͺH.264 +#define VIDEO_MPEG2 0x2 // ׼MPEG2 +#define VIDEO_MPEG4 0x3 // ׼MPEG4 +#define VIDEO_MJPEG 0x4 +#define VIDEO_AVC264 0x0100 + +// Ƶ +#define AUDIO_NULL 0x0000 // ûƵ +#define AUDIO_ADPCM 0x1000 // ADPCM +#define AUDIO_MPEG 0x2000 // MPEG ϵƵӦMPEGƵ +#define AUDIO_AAC 0x2001 +// GϵƵ +#define AUDIO_RAW_DATA8 0x7000 //Ϊ8kԭʼ +#define AUDIO_RAW_UDATA16 0x7001 //Ϊ16kԭʼݣL16 +#define AUDIO_G711_U 0x7110 +#define AUDIO_G711_A 0x7111 +#define AUDIO_G722_1 0x7221 +#define AUDIO_G723_1 0x7231 +#define AUDIO_G726_U 0x7260 +#define AUDIO_G726_A 0x7261 +#define AUDIO_G726_16 0x7262 +#define AUDIO_G729 0x7290 +#define AUDIO_AMR_NB 0x3000 + +#define SYNCDATA_VEH 1 //ͬ:Ϣ +#define SYNCDATA_IVS 2 //ͬ:Ϣ + +//motion flow type +#define MOTION_FLOW_NONE 0 +#define MOTION_FLOW_CPU 1 +#define MOTION_FLOW_GPU 2 + +//Ƶ +#define ENCRYPT_AES_3R_VIDEO 1 +#define ENCRYPT_AES_10R_VIDEO 2 +#define ENCRYPT_AES_3R_AUDIO 1 +#define ENCRYPT_AES_10R_AUDIO 2 + +typedef struct tagSystemTime +{ + short wYear; + short wMonth; + short wDayOfWeek; + short wDay; + short wHour; + short wMinute; + short wSecond; + short wMilliseconds; +}SYSTEMTIME; + +typedef struct tagHKRect +{ + unsigned long left; + unsigned long top; + unsigned long right; + unsigned long bottom; +}HKRECT; + +//Frame position +typedef struct +{ + long long nFilePos; + int nFrameNum; + int nFrameTime; + int nErrorFrameNum; + SYSTEMTIME *pErrorTime; + int nErrorLostFrameNum; + int nErrorFrameSize; +}FRAME_POS,*PFRAME_POS; + +//Frame Info +typedef struct +{ + int nWidth; + int nHeight; + int nStamp; + int nType; + int nFrameRate; + unsigned int dwFrameNum; +}FRAME_INFO; + +//Frame +typedef struct +{ + char *pDataBuf; + int nSize; + int nFrameNum; + int bIsAudio; + int nReserved; +}FRAME_TYPE; + +//Watermark Info //add by gb 080119 +typedef struct +{ + char *pDataBuf; + int nSize; + int nFrameNum; + int bRsaRight; + int nReserved; +}WATERMARK_INFO; + +typedef struct SYNCDATA_INFO +{ + unsigned int dwDataType; //ͬĸϢͣĿǰУϢϢ + unsigned int dwDataLen; //Ϣݳ + unsigned char* pData; //ָϢݽṹָ,IVS_INFOṹ +} SYNCDATA_INFO; + +#ifndef _HIK_MEDIAINFO_FLAG_ +#define _HIK_MEDIAINFO_FLAG_ +typedef struct _HIK_MEDIAINFO_ // modified by gb 080425 +{ + unsigned int media_fourcc; // "HKMI": 0x484B4D49 Hikvision Media Information + unsigned short media_version; // 汾ţָϢṹ汾ţĿǰΪ0x0101,1.01汾01汾ţ01Ӱ汾š + unsigned short device_id; // 豸IDڸ/ + + unsigned short system_format; // ϵͳװ + unsigned short video_format; // Ƶ + + unsigned short audio_format; // Ƶ + unsigned char audio_channels; // ͨ + unsigned char audio_bits_per_sample; // λ + unsigned int audio_samplesrate; // + unsigned int audio_bitrate; // ѹƵ,λbit + unsigned char flag; //8bit,0x81ʾ smartǣΪsmart,ʶintraķʽ media_version >= 0x0103&& video_fortmat = (H.264 or H.265) && ((flag & 0x02) ==0x2) + unsigned char stream_tag; //8bit,0x81ʾкSDPϢ + unsigned char reserved[14]; // +}HIK_MEDIAINFO; +#endif + +typedef struct +{ + int nPort; + char* pBuf; + int nBufLen; + int nWidth; + int nHeight; + int nStamp; + int nType; + void* nUser; +}DISPLAY_INFO; + +typedef struct +{ + int nPort; + char *pVideoBuf; + int nVideoBufLen; + char *pPriBuf; + int nPriBufLen; + int nWidth; + int nHeight; + int nStamp; + int nType; + void* nUser; +}DISPLAY_INFOEX; + +typedef struct PLAYM4_SYSTEM_TIME //ʱ +{ + unsigned int dwYear; // + unsigned int dwMon; // + unsigned int dwDay; // + unsigned int dwHour; //ʱ + unsigned int dwMin; // + unsigned int dwSec; // + unsigned int dwMs; // +} PLAYM4_SYSTEM_TIME; + +#ifndef CROP_PIC_INFO_TAG +#define CROP_PIC_INFO_TAG +typedef struct +{ + unsigned char* pDataBuf; //ץͼbuffer + unsigned int dwPicSize; //ʵͼƬС + unsigned int dwBufSize; //bufferС + unsigned int dwPicWidth; //ͼ + unsigned int dwPicHeight; //ͼ + unsigned int dwReserve; //һreserveֶ + HKRECT* pCropRect; //ѡNULL, ͬϵץͼӿ +}CROP_PIC_INFO; +#endif + +////////////////////////////////////////////////////////////////////////////// +//API +////////////////////////////////////////////////////////////////////////////// +int PlayM4_GetPort(int* nPort); +int PlayM4_FreePort(int nPort); + +int PlayM4_OpenFile(int nPort,char * sFileName); +int PlayM4_CloseFile(int nPort); +int PlayM4_SetStreamOpenMode(int nPort,unsigned int nMode); +int PlayM4_GetStreamOpenMode(int nPort); +int PlayM4_OpenStream(int nPort,unsigned char * pFileHeadBuf,unsigned int nSize,unsigned int nBufPoolSize); +int PlayM4_CloseStream(int nPort); + +int PlayM4_Play(int nPort, PLAYM4_HWND hWnd); +int PlayM4_PlayEx(int nPort, PLAYM4_HWNDEX hWnd); +int PlayM4_Stop(int nPort); +int PlayM4_Pause(int nPort,unsigned int nPause); +int PlayM4_Fast(int nPort); +int PlayM4_Slow(int nPort); +int PlayM4_RefreshPlay(int nPort); +int PlayM4_InputData(int nPort,unsigned char * pBuf,unsigned int nSize); + +int PlayM4_PlaySound(int nPort); +int PlayM4_StopSound(); +int PlayM4_PlaySoundShare(int nPort); +int PlayM4_StopSoundShare(int nPort); +int PlayM4_SetVolume(int nPort,unsigned short nVolume); +unsigned short PlayM4_GetVolume(int nPort); + +int PlayM4_OneByOne(int nPort); +int PlayM4_OneByOneBack(int nPort); + +int PlayM4_SetPlayPos(int nPort,float fRelativePos); +float PlayM4_GetPlayPos(int nPort); + +unsigned int PlayM4_GetFileTime(int nPort); +unsigned int PlayM4_GetPlayedTime(int nPort); +unsigned int PlayM4_GetPlayedFrames(int nPort); +unsigned int PlayM4_GetFileTotalFrames(int nPort); +unsigned int PlayM4_GetCurrentFrameRate(int nPort); +unsigned int PlayM4_GetCurrentFrameNum(int nPort); +unsigned int PlayM4_GetSpecialData(int nPort); +unsigned int PlayM4_GetAbsFrameNum(int nPort); +unsigned int PlayM4_GetFileHeadLength(); +unsigned int PlayM4_GetSdkVersion(); +unsigned int PlayM4_GetLastError(int nPort); +unsigned int PlayM4_GetPlayedTimeEx(int nPort); + +int PlayM4_GetSystemTime(int nPort, PLAYM4_SYSTEM_TIME *pstSystemTime); +int PlayM4_GetFileTimeEx(int nPort, unsigned int* pStart, unsigned int* pStop, unsigned int* pRev); +int PlayM4_GetCurrentFrameRateEx(int nPort, float* pfFrameRate); +int PlayM4_GetPictureSize(int nPort,int *pWidth,int *pHeight); +int PlayM4_GetKeyFramePos(int nPort,unsigned int nValue, unsigned int nType, PFRAME_POS pFramePos); +int PlayM4_GetNextKeyFramePos(int nPort,unsigned int nValue, unsigned int nType, PFRAME_POS pFramePos); + +int PlayM4_ConvertToBmpFile(char * pBuf,int nSize,int nWidth,int nHeight,int nType,char *sFileName); +int PlayM4_ConvertToJpegFile(char * pBuf,int nSize,int nWidth,int nHeight,int nType,char *sFileName); +int PlayM4_SetJpegQuality(int nQuality); +int PlayM4_GetBMP(int nPort,unsigned char * pBitmap,unsigned int nBufSize,unsigned int* pBmpSize); +int PlayM4_GetJPEG(int nPort,unsigned char * pJpeg,unsigned int nBufSize,unsigned int* pJpegSize); + +int PlayM4_SetPlayedTimeEx(int nPort,unsigned int nTime); +int PlayM4_SetCurrentFrameNum(int nPort,unsigned int nFrameNum); +int PlayM4_SetDisplayRegion(int nPort,unsigned int nRegionNum, HKRECT *pSrcRect, PLAYM4_HWND hDestWnd, int bEnable); +int PlayM4_SetDisplayRegionOnWnd(int nPort,unsigned int nRegionNum, HKRECT *pSrcRect, int bEnable);///<രڷָӿ +int PlayM4_SetDecodeFrameType(int nPort,unsigned int nFrameType); +int PlayM4_SetSecretKey(int nPort, int lKeyType, char *pSecretKey, int lKeyLen); + +int PlayM4_SetDecCBStream(int nPort,unsigned int nStream); +int PlayM4_SetDecCallBackMend(int nPort,void (CALLBACK* DecCBFun)(int nPort,char * pBuf,int nSize,FRAME_INFO * pFrameInfo, void* nUser,int nReserved2), void* nUser); +int PlayM4_SetDecCallBackExMend(int nPort, void (CALLBACK* DecCBFun)(int nPort, char* pBuf, int nSize, FRAME_INFO* pFrameInfo, void* nUser, int nReserved2), char* pDest, int nDestSize, void* nUser); + +int PlayM4_SetDisplayCallBack(int nPort,void (CALLBACK* DisplayCBFun)(int nPort,char * pBuf,int nSize,int nWidth,int nHeight,int nStamp,int nType,int nReserved)); +int PlayM4_SetDisplayCallBackEx(int nPort,void (CALLBACK* DisplayCBFun)(DISPLAY_INFO *pstDisplayInfo), void* nUser); +int PlayM4_SetFileRefCallBack(int nPort, void (CALLBACK *pFileRefDone)(unsigned int nPort,void* nUser),void* nUser); +int PlayM4_SetEncTypeChangeCallBack(int nPort, void(CALLBACK *funEncChange)(int nPort, void* nUser), void* nUser); +int PlayM4_SetCheckWatermarkCallBack(int nPort, void(CALLBACK* funCheckWatermark)(int nPort, WATERMARK_INFO* pWatermarkInfo, void* nUser), void* nUser); +int PlayM4_SetFileEndCallback(int nPort, void(CALLBACK*FileEndCallback)(int nPort, void *pUser), void *pUser); + +int PlayM4_ResetSourceBuffer(int nPort); +int PlayM4_SetDisplayBuf(int nPort, unsigned int nNum); +int PlayM4_ResetBuffer(int nPort,unsigned int nBufType); +unsigned int PlayM4_GetSourceBufferRemain(int nPort); +unsigned int PlayM4_GetDisplayBuf(int nPort); +unsigned int PlayM4_GetBufferValue(int nPort,unsigned int nBufType); + +int PlayM4_GetRefValue(int nPort,unsigned char *pBuffer, unsigned int *pSize); +int PlayM4_SetRefValue(int nPort,unsigned char *pBuffer, unsigned int nSize); +int PlayM4_GetRefValueEx(int nPort,unsigned char *pBuffer, unsigned int *pSize);///< ֡ͻص + +int PlayM4_RegisterDrawFun(int nPort,void (CALLBACK* DrawFun)(int nPort,PLAYM4_HDC hDc,void* nUser),void* nUser); + +int PlayM4_ThrowBFrameNum(int nPort,unsigned int nNum); +int PlayM4_SkipErrorData(int nPort, int bSkip); + +int PlayM4_ReversePlay(int nPort); + + +#ifndef PLAYM4_SESSION_INFO_TAG +#define PLAYM4_SESSION_INFO_TAG +//nProtocolType +#define PLAYM4_PROTOCOL_RTSP 1 +//nSessionInfoType +#define PLAYM4_SESSION_INFO_SDP 1 + +typedef struct _PLAYM4_SESSION_INFO_ //Ϣṹ +{ + int nSessionInfoType; //ϢͣSDP纣˽Ϣͷ + int nSessionInfoLen; //Ϣ + unsigned char* pSessionInfoData; //Ϣ + +} PLAYM4_SESSION_INFO; +#endif + +PLAYM4_API int __stdcall PlayM4_OpenStreamAdvanced(int nPort, int nProtocolType, PLAYM4_SESSION_INFO* pstSessionInfo, unsigned int nBufPoolSize); + +#define R_ANGLE_0 -1 //ת +#define R_ANGLE_L90 0 //ת90 +#define R_ANGLE_R90 1 //ת90 +#define R_ANGLE_180 2 //ת180 + +PLAYM4_API int __stdcall PlayM4_SetRotateAngle(int nPort, unsigned int nRegionNum, unsigned int dwType); + +#ifndef PLAYM4_ADDITION_INFO_TAG +#define PLAYM4_ADDITION_INFO_TAG +typedef struct _PLAYM4_ADDITION_INFO_ //Ϣṹ +{ + unsigned char* pData; // + unsigned int dwDatalen; //ݳ + unsigned int dwDataType; // + unsigned int dwTimeStamp; //ʱ +} PLAYM4_ADDITION_INFO; +#endif + +//dwGroupIndex Լȡֵ0~3һ汾ȡֻͬͬclosestream +PLAYM4_API int __stdcall PlayM4_SetSycGroup(int nPort, unsigned int dwGroupIndex); +//ݲʵִ˺ͬõʼʱ䲻һ£СʱΪ㣬ͬһֻһ· +PLAYM4_API int __stdcall PlayM4_SetSycStartTime(int nPort, PLAYM4_SYSTEM_TIME *pstSystemTime); + +// ʵصĽӿ +#ifndef FISH_EYE_TAG +#define FISH_EYE_TAG + +// +typedef enum tagFECPlaceType +{ + FEC_PLACE_WALL = 0x1, // װʽ (ˮƽ) + FEC_PLACE_FLOOR = 0x2, // 氲װ () + FEC_PLACE_CEILING = 0x3, // װʽ () + +}FECPLACETYPE; + +typedef enum tagFECCorrectType +{ + FEC_CORRECT_NULL = 0x0, // (ԭͼ) + FEC_CORRECT_PTZ = 0x100, // PTZ + FEC_CORRECT_180 = 0x200, // 180Ƚ Ӧ2P + FEC_CORRECT_360 = 0x300, // 360ȫ Ӧ1P + FEC_CORRECT_LAT = 0x400, // γչ + FEC_CORRECT_SEMISPHERE = 0x500, // 3D + FEC_CORRECT_CYLINDER = 0x0600, // Բʾ - װ/װ + FEC_CORRECT_CYLINDER_SPLIT = 0x0700, // пԲʾ - װ/װ + FEC_CORRECT_PLANET = 0x0800, // С + FEC_CORRECT_ARCSPHERE_HORIZONTAL = 0x0900, // ˮƽ - װ + FEC_CORRECT_ARCSPHERE_VERTICAL = 0x0A00, // ۴ֱ - װ + +}FECCORRECTTYPE; + +typedef enum tagFECCorrectEffect +{ + FEC_CORRECT_EFFECT_BACK_FACE_CULLING = 0x100, // ޳0ʾãΪ0ʾãǿת + +}FECCORRECTEFFECT; + + +typedef struct tagCycleParam +{ + float fRadiusLeft; // ԲX + float fRadiusRight; // ԲұX + float fRadiusTop; // ԲϱY + float fRadiusBottom; // Բ±Y + +}CYCLEPARAM; + +typedef struct tagPTZParam +{ + float fPTZPositionX; // PTZ ʾλ X + float fPTZPositionY; // PTZ ʾλ Y + +}PTZPARAM; + +// PTZԭʼͼʾģʽ +typedef enum tagFECShowMode +{ + FEC_PTZ_OUTLINE_NULL, // ʾ + FEC_PTZ_OUTLINE_RECT, // ʾ + FEC_PTZ_OUTLINE_RANGE, // ʵʾ +}FECSHOWMODE; + +// ±DZ + +#define FEC_UPDATE_RADIUS 0x1 +#define FEC_UPDATE_PTZZOOM 0x2 +#define FEC_UPDATE_WIDESCANOFFSET 0x4 +#define FEC_UPDATE_PTZPARAM 0x8 +#define FEC_UPDATT_PTZCOLOR 0x10 + +// ɫʽṹ +typedef struct tagFECColor +{ + unsigned char nR; // R + unsigned char nG; // G + unsigned char nB; // B + unsigned char nAlpha; // Alpha +}FECCOLOR; + +typedef struct tagFECParam +{ + unsigned int nUpDateType; // µ + unsigned int nPlaceAndCorrect; // װʽͽʽֻڻȡSetParamʱЧ,ֵʾװʽͽʽĺ + PTZPARAM stPTZParam; // PTZ УIJ + CYCLEPARAM stCycleParam; // ͼԲIJ + float fZoom; // PTZ ʾķΧ + float fWideScanOffset; // 180360УƫƽǶ + FECCOLOR stPTZColor; // PTZɫ + int nResver[15]; // ֶ + +}FISHEYEPARAM; + +#define FEC_JPEG 0 // JPEGץͼ +#define FEC_BMP 1 // BMP ץͼ + +///<µ3d۰ӽDZ仯(źת) +typedef enum tagPLAYM4HRViewParamType +{ + PLAYM4_HR_VPT_ROTATION_X = 0x1, ///<ˮƽת + PLAYM4_HR_VPT_ROTATION_Y = 0x2, ///<ֱת + PLAYM4_HR_VPT_SCALE = 0x3, ///<(ֵΪ0ֵʱΪ-Ч) +}PLAYM4HRVIEWPARAMTYPE; + +// 3DģͲ +typedef enum tagPLAYM4FEC3DModelParam +{ + PLAYM4_FEC_3DMP_CYLINDER_HEIGHT = 0x1, ///< Բģ͸ + PLAYM4_FEC_3DMP_CYLINDER_RADIUS = 0x2, ///< ԲģͰ뾶 +}PLAYM4FEC3DMODELPARAM; + +// ضӽ״̬ +typedef enum tagPLAYM4FECSpecialViewType +{ + PLAYM4_FEC_SVT_EDGE = 0x1 ///<ģ봰ӽ +}PLAYM4FECSPECIALVIEWTYPE; + + +#endif + +typedef void (__stdcall * FISHEYE_CallBack )( void* pUser , unsigned int nPort , unsigned int nCBType , void * hDC , unsigned int nWidth , unsigned int nHeight); + +// +PLAYM4_API int __stdcall PlayM4_FEC_Enable(int nPort); + +// رģ +PLAYM4_API int __stdcall PlayM4_FEC_Disable(int nPort); + +// ȡ۽Ӷ˿ [1~31] +PLAYM4_API int __stdcall PlayM4_FEC_GetPort(int nPort , unsigned int* nSubPort , FECPLACETYPE emPlaceType , FECCORRECTTYPE emCorrectType); + +// ɾ۽Ӷ˿ +PLAYM4_API int __stdcall PlayM4_FEC_DelPort(int nPort , unsigned int nSubPort); + +// ۽ +PLAYM4_API int __stdcall PlayM4_FEC_SetParam(int nPort , unsigned int nSubPort , FISHEYEPARAM * pPara); + +// ȡ۽ +PLAYM4_API int __stdcall PlayM4_FEC_GetParam(int nPort , unsigned int nSubPort , FISHEYEPARAM * pPara); + +// ʾڣʱл +PLAYM4_API int __stdcall PlayM4_FEC_SetWnd(int nPort , unsigned int nSubPort , void * hWnd); + +// ۴ڵĻͼص +PLAYM4_API int __stdcall PlayM4_FEC_SetCallBack(int nPort , unsigned int nSubPort , FISHEYE_CallBack cbFunc , void * pUser); + +PLAYM4_API int __stdcall PlayM4_FEC_Capture(int nPort, unsigned int nSubPort , unsigned int nType, char *pFileName); + +PLAYM4_API int __stdcall PlayM4_FEC_GetCurrentPTZPort(int nPort, float fPositionX,float fPositionY, unsigned int *pnPort); + +PLAYM4_API int __stdcall PlayM4_FEC_SetCurrentPTZPort(int nPort, unsigned int nSubPort); + +PLAYM4_API int __stdcall PlayM4_FEC_SetPTZOutLineShowMode(int nPort,FECSHOWMODE nPTZShowMode); + +//µ۰ӽDZ仯(ת)ؽӿ +//ȡӽDz(ǰȻȡǰֵ) +PLAYM4_API int __stdcall PlayM4_FEC_GetViewParam(int nPort, unsigned int nSubPort, PLAYM4HRVIEWPARAMTYPE enViewParamType, float* fValue); +//ðӽDZ仯(õֵΪȡֵҪƫֵ) +PLAYM4_API int __stdcall PlayM4_FEC_SetViewParam(int nPort, unsigned int nSubPort, PLAYM4HRVIEWPARAMTYPE enViewParamType, float fValue); + +//۵ӷŴ nType = 0 +//۴ڷָ nType = 1 +//ע⣬ڷָʱhDestWndЧΪNULL20180813ݲ֧֣ +//ĿǰӷŴ֧ϷŴnRegionNumΪ0hDestWndΪNULLbEnableΪ0ȡӷŴ󣬷0ΪӷŴ +//pSrcRectһ1000Կ߸ߣֵ0-1000֮䣩 +//ֻƼԭͼ180360γչPTZʾӷŴٿptzᵼµӷŴʧЧ-3D۲ʹô˽ӿ(ӽDZ仯ӿڽţ +PLAYM4_API bool __stdcall PlayM4_FEC_SetDisplayRegion(int nPort, unsigned int nSubPort,unsigned int nType, unsigned int nRegionNum, HKRECT *pSrcRect, PLAYM4_HWND hDestWnd, int bEnable); +//޳0ʾãΪ0ʾãǿת +PLAYM4_API bool __stdcall PlayM4_FEC_SetCorrectEffect(int nPort, unsigned int nSubPort, FECCORRECTEFFECT nCorrectEffect, float fValue); + +// 3DģͲ-3DԲչЧ +PLAYM4_API bool __stdcall PlayM4_FEC_Set3DModelParam(int nPort, unsigned int nSubPort, PLAYM4FEC3DMODELPARAM enType, float fValue); + +// ȡضӽDz - ֻڻ棬SetViewParamӿʹ +PLAYM4_API bool __stdcall PlayM4_FEC_GetSpecialViewParam(int nPort, unsigned int nSubPort, PLAYM4FECSPECIALVIEWTYPE enSVType, PLAYM4HRVIEWPARAMTYPE enVPType, float* pValue); + + +//ͼǿ-Linux汾֧ +#ifndef PLAYM4_HIKVIE_TAG +#define PLAYM4_HIKVIE_TAG + +typedef struct _PLAYM4_VIE_DYNPARAM_ +{ + int moduFlag; //õ㷨ģ飬PLAYM4_VIE_MODULESж + // PLAYM4_VIE_MODU_ADJ | PLAYM4_VIE_MODU_EHAN + //ģú󣬱ӦIJ + //PLAYM4_VIE_MODU_ADJ + int brightVal; //ȵֵ[-255, 255] + int contrastVal; //Աȶȵֵ[-256, 255] + int colorVal; //Ͷȵֵ[-256, 255] + //PLAYM4_VIE_MODU_EHAN + int toneScale; //˲Χ[0, 100] + int toneGain; //ԱȶȵڣȫֶԱȶֵ[-256, 255] + int toneOffset; //ȵڣƽֵƫƣ[-255, 255] + int toneColor; //ɫڣɫֵ[-256, 255] + //PLAYM4_VIE_MODU_DEHAZE + int dehazeLevel; //ȥǿȣ[0, 255] + int dehazeTrans; //͸ֵ[0, 255] + int dehazeBright; //Ȳ[0, 255] + //PLAYM4_VIE_MODU_DENOISE + int denoiseLevel; //ȥǿȣ[0, 255] + //PLAYM4_VIE_MODU_SHARPEN + int usmAmount; //ǿȣ[0, 255] + int usmRadius; //񻯰뾶[1, 15] + int usmThreshold; //ֵ[0, 255] + //PLAYM4_VIE_MODU_DEBLOCK + int deblockLevel; //ȥǿȣ[0, 100] + //PLAYM4_VIE_MODU_LENS + int lensWarp; //[-256, 255] + int lensZoom; //[-256, 255] + //PLAYM4_VIE_MODU_CRB + //Ӧ +} PLAYM4_VIE_PARACONFIG; + +typedef enum _PLAYM4_VIE_MODULES +{ + PLAYM4_VIE_MODU_ADJ = 0x00000001, //ͼ + PLAYM4_VIE_MODU_EHAN = 0x00000002, //ֲǿģ + PLAYM4_VIE_MODU_DEHAZE = 0x00000004, //ȥģ + PLAYM4_VIE_MODU_DENOISE = 0x00000008, //ȥģ + PLAYM4_VIE_MODU_SHARPEN = 0x00000010, //ģ + PLAYM4_VIE_MODU_DEBLOCK = 0x00000020, //ȥ˲ģ + PLAYM4_VIE_MODU_CRB = 0x00000040, //ɫƽģ + PLAYM4_VIE_MODU_LENS = 0x00000080, //ͷģ +}PLAYM4_VIE_MODULES; +#endif + +//ùر/ģ -- NO SUPPORT +//dwModuFlagӦPLAYM4_VIE_MODULES, +//ģ鿪ģڼĬϵIJ; +//رģϴõIJ +//ӿڵãڸýӿڿģ󣻷򣬷ش +PLAYM4_API int __stdcall PlayM4_VIE_SetModuConfig(int nPort, int nModuFlag, int bEnable); + +//ͼǿNULLȫͼȫͼȫͼС16*16 -- NO SUPPORT +//֧Ƚ˵4һ汾ֻ֧һҪصصͱ +PLAYM4_API int __stdcall PlayM4_VIE_SetRegion(int nPort, int nRegNum, HKRECT* pRect); + +//ȡģ -- NO SUPPORT +PLAYM4_API int __stdcall PlayM4_VIE_GetModuConfig(int nPort, int* pdwModuFlag); + +//ò +//δģIJñ -- NO SUPPORT +PLAYM4_API int __stdcall PlayM4_VIE_SetParaConfig(int nPort, PLAYM4_VIE_PARACONFIG* pParaConfig); + +//ȡģIJ -- NO SUPPORT +PLAYM4_API int __stdcall PlayM4_VIE_GetParaConfig(int nPort, PLAYM4_VIE_PARACONFIG* pParaConfig); + +// ˽Ϣģ +typedef enum _PLAYM4_PRIDATA_RENDER +{ + PLAYM4_RENDER_ANA_INTEL_DATA = 0x00000001, //ܷ + PLAYM4_RENDER_MD = 0x00000002, //ƶ + PLAYM4_RENDER_ADD_POS = 0x00000004, //POSϢ + PLAYM4_RENDER_ADD_PIC = 0x00000008, //ͼƬϢ + PLAYM4_RENDER_FIRE_DETCET = 0x00000010, //ȳϢ + PLAYM4_RENDER_TEM = 0x00000020, //¶Ϣ +}PLAYM4_PRIDATA_RENDER; + +typedef enum _PLAYM4_FIRE_ALARM +{ + PLAYM4_FIRE_FRAME_DIS = 0x00000001, //ʾ + PLAYM4_FIRE_MAX_TEMP = 0x00000002, //¶ + PLAYM4_FIRE_MAX_TEMP_POSITION = 0x00000004, //¶λʾ + PLAYM4_FIRE_DISTANCE = 0x00000008, //¶Ⱦ +}PLAYM4_FIRE_ALARM; + +typedef enum _PLAYM4_TEM_FLAG +{ + PLAYM4_TEM_REGION_BOX = 0x00000001, // + PLAYM4_TEM_REGION_LINE = 0x00000002, //߲ + PLAYM4_TEM_REGION_POINT = 0x00000004, // +}PLAYM4_TEM_FLAG; + +// Ϣ +PLAYM4_API int __stdcall PlayM4_RenderPrivateData(int nPort, int nIntelType, int bTrue); +///<Ϣӿ +PLAYM4_API int __stdcall PlayM4_RenderPrivateDataEx(int nPort, int nIntelType, int nSubType, int bTrue); + +//ENCRYPT Info +typedef struct{ + long nVideoEncryptType; //Ƶ + long nAudioEncryptType; //Ƶ + long nSetSecretKey; //Ƿã1ʾԿ0ʾûԿ +}ENCRYPT_INFO; + +// ص,nType=0ʾܱλ仯ͻصnType=1ʾмλص +PLAYM4_API int __stdcall PlayM4_SetEncryptTypeCallBack(int nPort, unsigned int nType, void (CALLBACK* EncryptTypeCBFun)(int nPort, ENCRYPT_INFO* pEncryptInfo, void* nUser, int nReserved2), void* nUser); + +#define PLAYM4_MEDIA_HEAD 1 //ϵͳͷ +#define PLAYM4_VIDEO_DATA 2 //Ƶ +#define PLAYM4_AUDIO_DATA 3 //Ƶ +#define PLAYM4_PRIVT_DATA 4 //˽ + +//Ԥ¼Ϣ- NO SUPPORT +typedef struct +{ + long nType; // ͣļͷƵƵ˽ݵ + long nStamp; // ʱ + long nFrameNum; // ֡ + long nBufLen; // ݳ + char* pBuf; // ֡ݣ֡Ϊλص + PLAYM4_SYSTEM_TIME stSysTime; // ȫʱ +}RECORD_DATA_INFO; + +//Ԥ¼񿪹أbFlag=1bFlag=0ر-- NO SUPPORT +PLAYM4_API int __stdcall PlayM4_SetPreRecordFlag(int nPort, int bFlag); + +//Ԥ¼ݻص- NO SUPPORT +PLAYM4_API int __stdcall PlayM4_SetPreRecordCallBack(int nPort, void (CALLBACK* PreRecordCBfun)(int nPort, RECORD_DATA_INFO* pRecordDataInfo, void* pUser), void* pUser); + +typedef struct +{ + long lDataType; //˽ + long lDataStrVersion; //ݷصĽṹ汾ҪΪ˼ + long lDataTimeStamp; + long lDataLength; + char* pData; +}AdditionDataInfo; + +PLAYM4_API int __stdcall PlayM4_SetAdditionDataCallBack(int nPort, unsigned int nSyncType, void (CALLBACK* AdditionDataCBFun)(int nPort, AdditionDataInfo* pstAddDataInfo, void* pUser), void* pUser); + +//lType: 1 ʾȡǰʾ֡PTZϢضṹʽ洢pInfoڣplLenسϢ;ȴpInfo = nullԻȡҪڴ泤plLen +PLAYM4_API int __stdcall PlayM4_GetStreamAdditionalInfo(int nPort, int lType, unsigned char* pInfo, int* plLen); + +#define PLAYM4_SOURCE_MODULE 0 // Դģ +#define PLAYM4_DEMUX_MODULE 1 // ģ +#define PLAYM4_DECODE_MODULE 2 // ģ +#define PLAYM4_RENDER_MODULE 3 // Ⱦģ + +#define PLAYM4_RTINFO_HARDDECODE_ERROR 0 // Ӳ(Ҫ) +#define PLAYM4_RTINFO_SOFTDECODE_ERROR 1 // 󣨲֧֣ +#define PLAYM4_RTINFO_MEDIAHEADER_ERROR 2 // ýͷ +#define PLAYM4_RTINFO_SWITCH_SOFT_DEC 3 // л +#define PLAYM4_RTINFO_ALLOC_MEMORY_ERROR 4 // ڴʧ +#define PLAYM4_RTINFO_ENCRYPT_ERROR 5 // Կ +#define PLAYM4_RTINFO_RENDER_OVER 8 // Ⱦһ֡ +#define PLAYM4_RTINFO_ERR_PRESENT 16 // Ⱦʾ[ǰȾȾʧ,ϲл] +#define PLAYM4_RTINFO_IDMX_DATA_ERROR 32 // ,ʧ +#define PLAYM4_RTINFO_DECODE_PARAM_ERROR 64 // ,ʧ +#define PLAYM4_RTINFO_SOFTDECODE_DATA_ERROR 128 // ݴ + +typedef struct +{ + int nRunTimeModule; //ǰģ飬ݶ2Ϊģ飬չ + int nStrVersion; //ݷصĽṹ汾ҪΪ˼,һ汾0x0001 + int nFrameTimeStamp; //֡ + int nFrameNum; //ʱ + int nErrorCode; //,0ΪӲ + unsigned char reserved[12]; //ֽ +}RunTimeInfo; + +///<ʵʱϢصӿ +PLAYM4_API int __stdcall PlayM4_SetRunTimeInfoCallBackEx(int nPort, int nModule, void (CALLBACK* RunTimeInfoCBFun)(int nPort, RunTimeInfo* pstRunTimeInfo, void* pUser), void* pUser); + +// 1SetRunTimeInfoCallBackExӿڣnErrorCode6Ϊ8Ժչʽ 163264Ҵ8ʼϢĬϹرղ͡ +// 2Ϣƽӿڣƴ8ԺϢִ֧8ʼϢƴģʽ 8|16|32 ַʽϲѡ͡ +// 3nTypeͨķʽʹ룬nFlagʾΪ0߽лص0 +PLAYM4_API int __stdcall PlayM4_SetRunTimeInfoCallbackType(int nPort, int nModule, unsigned int nType, int nFlag); + + +///<Ⱦʾؽӿ +#ifndef PLAYM4_HIKD3D11_TAG +#define PLAYM4_HIKD3D11_TAG + +///<Ⱦץͼṹ +typedef struct _tagD3D11_PIC_INFO_ +{ + unsigned int nPicMode; //ץͼģʽ0-ʵʷֱץͼ(֮ǰץͼģʽ)1-洫ĿץͼnPicWidth*nPicHeightΪʾڿʱЧѣ + unsigned char* pBuf; //ץͼbuffer + unsigned int nBufSize; //bufferС-nPicModeΪ0Ϊ֮ǰĸݻȡֱл룻nPicModeΪ1ϲõķֱ뻺棩 + unsigned int* pPicSize; //ʵͼƬС + unsigned int nPicWidth; //ץͼ-nPicModeΪ1ʱЧҿ>=32,nPicWidth*nPicHeight<5000wֱʡ + unsigned int nPicHeight; //ץͼ-nPicModeΪ1ʱЧҸ>=32,nPicWidth*nPicHeight<5000wֱʡ + unsigned char chReserve[8]; //reserveֶ +}D3D_PIC_INFO; + +/*Ⱦͼ*/ +typedef enum tagPLAYM4PostProcType +{ + PLAYM4_PPT_BRIGHTNESS = 0x1, ///< [-1.0, 1.0] + PLAYM4_PPT_HUE = 0x2, ///< ɫ [0.0, 1.0]----0.166ۼΪһɫ仯01Ϊͬһɫ + PLAYM4_PPT_SATURATION = 0x3, ///< Ͷ [-1.0, 1.0] + PLAYM4_PPT_CONTRAST = 0x4, ///< Աȶ [-1.0, 1.0] + PLAYM4_PPT_SHARPNESS = 0x5, ///< [ 0.0, 1.0] +}PLAYM4PostProcType; + +#endif + +///<Ⱦץͼ:nType:0-jpeg,1-bmp. +PLAYM4_API int __stdcall PlayM4_GetD3DCapture(int nPort, unsigned int nType, D3D_PIC_INFO* pstPicInfo); + +///<Ⱦ-ò +PLAYM4_API int __stdcall PlayM4_SetD3DPostProcess(int nPort, PLAYM4PostProcType nPostType, float fValue); + +///<Ⱦ-ȡ +PLAYM4_API int __stdcall PlayM4_GetD3DPostProcess(int nPort, PLAYM4PostProcType nPostType, float* fValue); + +///<ַӵ·ʱĬ⣩-playǰ +PLAYM4_API int __stdcall PlayM4_SetConfigFontPath(int nPort, char* pFontPath); + +// ʱȡmp4װ߶λƫ +PLAYM4_API int __stdcall PlayM4_GetMpOffset(int nPort, int nTime, int* nOffset); + +///<ʱıʾΪλΪΪ-ͬط +PLAYM4_API bool __stdcall PlayM4_SetSupplementaryTimeZone(int nPort, int nTimeZone); +///<Ѿʱ򷵻ʱʧ-ͬط +PLAYM4_API bool __stdcall PlayM4_GetSupplementaryTimeZone(int nPort, int* pTimeZone); + +//////////////////////////////////// + +///<ڴСı֪ͨӿ +PLAYM4_API int __stdcall PlayM4_WndResolutionChange(int nPort);//new add + +//ʹ +PLAYM4_API int __stdcall PlayM4_SetRunTimeInfoCallBack(int nPort, void (CALLBACK* RunTimeInfoCBFun)(int nPort, RunTimeInfo* pstRunTimeInfo, void* pUser), void* pUser); +int PlayM4_RigisterDrawFun(int nPort,void (CALLBACK* DrawFun)(int nPort,PLAYM4_HDC hDc,void* nUser),void* nUser); +int PlayM4_SetDecCallBack(int nPort,void (CALLBACK* DecCBFun)(int nPort,char* pBuf,int nSize,FRAME_INFO * pFrameInfo, void* nReserved1,int nReserved2)); +int PlayM4_SetDecCallBackEx(int nPort,void (CALLBACK* DecCBFun)(int nPort,char * pBuf,int nSize,FRAME_INFO * pFrameInfo, void* nReserved1,int nReserved2), char* pDest, int nDestSize); +int PlayM4_SetTimerType(int nPort,unsigned int nTimerType,unsigned int nReserved); +int PlayM4_GetTimerType(int nPort,unsigned int *pTimerType,unsigned int *pReserved); + +int PlayM4_SetDisplayMode(int nPort, unsigned int dwType); +int PlayM4_SetVideoWindow(int nPort, unsigned int nRegionNum, PLAYM4_HWND hWnd); +///////////////////////////////////////////////////////////////////////////// + +////////////////NO SUPPORT/////////////////////////////////////////////////// + +int PlayM4_InitDDraw(PLAYM4_HWND hWnd); +int PlayM4_RealeseDDraw(); +#if (WINVER >= 0x0400) +//Note: These funtion must be builded under win2000 or above with Microsoft Platform sdk. +//You can download the sdk from "http://www.microsoft.com/msdownload/platformsdk/sdkupdate/"; +int PlayM4_InitDDrawDevice(); +void PlayM4_ReleaseDDrawDevice(); +int PlayM4_SetDDrawDevice(int nPort, unsigned int nDeviceNum); +int PlayM4_SetDDrawDeviceEx(int nPort,unsigned int nRegionNum,unsigned int nDeviceNum); +int PlayM4_GetDDrawDeviceInfo(unsigned int nDeviceNum, char* lpDriverDescription, unsigned int nDespLen, char* lpDriverName, unsigned int nNameLen, HMONITOR* hhMonitor); +int PlayM4_GetCapsEx(unsigned int nDDrawDeviceNum); +unsigned int PlayM4_GetDDrawDeviceTotalNums(); +#endif +int PlayM4_GetCaps(); +int PlayM4_OpenStreamEx(int nPort, unsigned char* pFileHeadBuf, unsigned int nSize, unsigned int nBufPoolSize); +int PlayM4_CloseStreamEx(int nPort); +int PlayM4_InputVideoData(int nPort, unsigned char* pBuf, unsigned int nSize); +int PlayM4_InputAudioData(int nPort, unsigned char* pBuf, unsigned int nSize); +int PlayM4_GetFileSpecialAttr(int nPort, unsigned int* pTimeStamp, unsigned int* pFileNum, unsigned int* pReserved); +//int PlayM4_SetOverlayMode(int nPort, int bOverlay, COLORREF colorKey); +int PlayM4_GetOverlayMode(int nPort); +int PlayM4_SetOverlayFlipMode(int nPort, int bTrue); +//COLORREF PlayM4_GetColorKey(int nPort); +int PlayM4_SetPicQuality(int nPort, int bHighQuality); +int PlayM4_GetPictureQuality(int nPort, int* bHighQuality); +int PlayM4_ResetSourceBufFlag(int nPort); +int PlayM4_SetDisplayType(int nPort, int nType); +int PlayM4_GetDisplayType(int nPort); +int PlayM4_SyncToAudio(int nPort, int bSyncToAudio); +int PlayM4_RefreshPlayEx(int nPort, unsigned int nRegionNum); +int PlayM4_AdjustWaveAudio(int nPort, int nCoefficient); +int PlayM4_SetPlayMode(int nPort, int bNormal); +int PlayM4_SetColor(int nPort, unsigned int nRegionNum, int nBrightness, int nContrast, int nSaturation, int nHue); +int PlayM4_GetColor(int nPort, unsigned int nRegionNum, int* pBrightness, int* pContrast, int* pSaturation, int* pHue); +int PlayM4_SetImageSharpen(int nPort, unsigned int nLevel); +int PlayM4_SetDeflash(int nPort, int bDefalsh); +int PlayM4_CheckDiscontinuousFrameNum(int nPort, int bCheck); +int PlayM4_SetFileEndMsg(int nPort, PLAYM4_HWND hWnd, unsigned int nMsg); +int PlayM4_SetVerifyCallBack(int nPort, unsigned int nBeginTime, unsigned int nEndTime, void (__stdcall* funVerify)(int nPort, FRAME_POS* pFilePos, unsigned int bIsVideo, unsigned int nUser), unsigned int nUser); +int PlayM4_SetEncChangeMsg(int nPort, PLAYM4_HWND hWnd, unsigned int nMsg); +int PlayM4_SetGetUserDataCallBack(int nPort, void(CALLBACK* funGetUserData)(int nPort, unsigned char* pUserBuf, unsigned int nBufLen, unsigned int nUser), unsigned int nUser); +int PlayM4_SetSourceBufCallBack(int nPort, unsigned int nThreShold, void (CALLBACK* SourceBufCallBack)(int nPort, unsigned int nBufSize, unsigned int dwUser, void* pResvered), unsigned int dwUser, void* pReserved); +int PlayM4_GetOriginalFrameCallBack(int nPort, int bIsChange, int bNormalSpeed, int nStartFrameNum, int nStartStamp, int nFileHeader, void(CALLBACK *funGetOrignalFrame)(int nPort, FRAME_TYPE* frameType, int nUser), int nUser); +int PlayM4_GetThrowBFrameCallBack(int nPort, void(CALLBACK* funThrowBFrame)(int nPort, unsigned int nBFrame, unsigned int nUser), unsigned int nUser); +int PlayM4_SetAudioCallBack(int nPort, void (__stdcall* funAudio)(int nPort, char* pAudioBuf, int nSize, int nStamp, int nType, int nUser), int nUser); +//motionflow +PLAYM4_API int __stdcall PlayM4_MotionFlow(int nPort, unsigned int dwAdjustType); + + +//////////////////////////////////////////////////////////////////////////////// + +#ifdef __cplusplus + } +#endif + +#endif //_PLAYM4_H_ diff --git a/src/json.hpp b/src/json.hpp new file mode 100644 index 0000000..50e5c80 --- /dev/null +++ b/src/json.hpp @@ -0,0 +1,23761 @@ +/* + __ _____ _____ _____ + __| | __| | | | JSON for Modern C++ +| | |__ | | | | | | version 3.10.5 +|_____|_____|_____|_|___| https://github.com/nlohmann/json + +Licensed under the MIT License . +SPDX-License-Identifier: MIT +Copyright (c) 2013-2022 Niels Lohmann . + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +/****************************************************************************\ + * Note on documentation: The source files contain links to the online * + * documentation of the public API at https://json.nlohmann.me. This URL * + * contains the most recent documentation and should also be applicable to * + * previous versions; documentation for deprecated functions is not * + * removed, but marked deprecated. See "Generate documentation" section in * + * file docs/README.md. * +\****************************************************************************/ + +#ifndef INCLUDE_NLOHMANN_JSON_HPP_ +#define INCLUDE_NLOHMANN_JSON_HPP_ + +#ifndef JSON_SKIP_LIBRARY_VERSION_CHECK + #if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH) + #if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 10 || NLOHMANN_JSON_VERSION_PATCH != 5 + #warning "Already included a different version of the library!" + #endif + #endif +#endif + +#define NLOHMANN_JSON_VERSION_MAJOR 3 // NOLINT(modernize-macro-to-enum) +#define NLOHMANN_JSON_VERSION_MINOR 10 // NOLINT(modernize-macro-to-enum) +#define NLOHMANN_JSON_VERSION_PATCH 5 // NOLINT(modernize-macro-to-enum) + +#include // all_of, find, for_each +#include // nullptr_t, ptrdiff_t, size_t +#include // hash, less +#include // initializer_list +#ifndef JSON_NO_IO + #include // istream, ostream +#endif // JSON_NO_IO +#include // random_access_iterator_tag +#include // unique_ptr +#include // accumulate +#include // string, stoi, to_string +#include // declval, forward, move, pair, swap +#include // vector + +// #include + + +#include +#include + +// #include + + +#include // transform +#include // array +#include // forward_list +#include // inserter, front_inserter, end +#include // map +#include // string +#include // tuple, make_tuple +#include // is_arithmetic, is_same, is_enum, underlying_type, is_convertible +#include // unordered_map +#include // pair, declval +#include // valarray + +// #include + + +#include // nullptr_t +#include // exception +#include // runtime_error +#include // to_string +#include // vector + +// #include + + +#include // array +#include // size_t +#include // uint8_t +#include // string + +// #include + + +#include // declval, pair +// #include + + +/* Hedley - https://nemequ.github.io/hedley + * Created by Evan Nemerson + * + * To the extent possible under law, the author(s) have dedicated all + * copyright and related and neighboring rights to this software to + * the public domain worldwide. This software is distributed without + * any warranty. + * + * For details, see . + * SPDX-License-Identifier: CC0-1.0 + */ + +#if !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < 15) +#if defined(JSON_HEDLEY_VERSION) + #undef JSON_HEDLEY_VERSION +#endif +#define JSON_HEDLEY_VERSION 15 + +#if defined(JSON_HEDLEY_STRINGIFY_EX) + #undef JSON_HEDLEY_STRINGIFY_EX +#endif +#define JSON_HEDLEY_STRINGIFY_EX(x) #x + +#if defined(JSON_HEDLEY_STRINGIFY) + #undef JSON_HEDLEY_STRINGIFY +#endif +#define JSON_HEDLEY_STRINGIFY(x) JSON_HEDLEY_STRINGIFY_EX(x) + +#if defined(JSON_HEDLEY_CONCAT_EX) + #undef JSON_HEDLEY_CONCAT_EX +#endif +#define JSON_HEDLEY_CONCAT_EX(a,b) a##b + +#if defined(JSON_HEDLEY_CONCAT) + #undef JSON_HEDLEY_CONCAT +#endif +#define JSON_HEDLEY_CONCAT(a,b) JSON_HEDLEY_CONCAT_EX(a,b) + +#if defined(JSON_HEDLEY_CONCAT3_EX) + #undef JSON_HEDLEY_CONCAT3_EX +#endif +#define JSON_HEDLEY_CONCAT3_EX(a,b,c) a##b##c + +#if defined(JSON_HEDLEY_CONCAT3) + #undef JSON_HEDLEY_CONCAT3 +#endif +#define JSON_HEDLEY_CONCAT3(a,b,c) JSON_HEDLEY_CONCAT3_EX(a,b,c) + +#if defined(JSON_HEDLEY_VERSION_ENCODE) + #undef JSON_HEDLEY_VERSION_ENCODE +#endif +#define JSON_HEDLEY_VERSION_ENCODE(major,minor,revision) (((major) * 1000000) + ((minor) * 1000) + (revision)) + +#if defined(JSON_HEDLEY_VERSION_DECODE_MAJOR) + #undef JSON_HEDLEY_VERSION_DECODE_MAJOR +#endif +#define JSON_HEDLEY_VERSION_DECODE_MAJOR(version) ((version) / 1000000) + +#if defined(JSON_HEDLEY_VERSION_DECODE_MINOR) + #undef JSON_HEDLEY_VERSION_DECODE_MINOR +#endif +#define JSON_HEDLEY_VERSION_DECODE_MINOR(version) (((version) % 1000000) / 1000) + +#if defined(JSON_HEDLEY_VERSION_DECODE_REVISION) + #undef JSON_HEDLEY_VERSION_DECODE_REVISION +#endif +#define JSON_HEDLEY_VERSION_DECODE_REVISION(version) ((version) % 1000) + +#if defined(JSON_HEDLEY_GNUC_VERSION) + #undef JSON_HEDLEY_GNUC_VERSION +#endif +#if defined(__GNUC__) && defined(__GNUC_PATCHLEVEL__) + #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__) +#elif defined(__GNUC__) + #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, 0) +#endif + +#if defined(JSON_HEDLEY_GNUC_VERSION_CHECK) + #undef JSON_HEDLEY_GNUC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_GNUC_VERSION) + #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GNUC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_MSVC_VERSION) + #undef JSON_HEDLEY_MSVC_VERSION +#endif +#if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 140000000) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 10000000, (_MSC_FULL_VER % 10000000) / 100000, (_MSC_FULL_VER % 100000) / 100) +#elif defined(_MSC_FULL_VER) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 1000000, (_MSC_FULL_VER % 1000000) / 10000, (_MSC_FULL_VER % 10000) / 10) +#elif defined(_MSC_VER) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_VER / 100, _MSC_VER % 100, 0) +#endif + +#if defined(JSON_HEDLEY_MSVC_VERSION_CHECK) + #undef JSON_HEDLEY_MSVC_VERSION_CHECK +#endif +#if !defined(JSON_HEDLEY_MSVC_VERSION) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (0) +#elif defined(_MSC_VER) && (_MSC_VER >= 1400) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch))) +#elif defined(_MSC_VER) && (_MSC_VER >= 1200) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch))) +#else + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_VER >= ((major * 100) + (minor))) +#endif + +#if defined(JSON_HEDLEY_INTEL_VERSION) + #undef JSON_HEDLEY_INTEL_VERSION +#endif +#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && !defined(__ICL) + #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, __INTEL_COMPILER_UPDATE) +#elif defined(__INTEL_COMPILER) && !defined(__ICL) + #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0) +#endif + +#if defined(JSON_HEDLEY_INTEL_VERSION_CHECK) + #undef JSON_HEDLEY_INTEL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_INTEL_VERSION) + #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_INTEL_CL_VERSION) + #undef JSON_HEDLEY_INTEL_CL_VERSION +#endif +#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && defined(__ICL) + #define JSON_HEDLEY_INTEL_CL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER, __INTEL_COMPILER_UPDATE, 0) +#endif + +#if defined(JSON_HEDLEY_INTEL_CL_VERSION_CHECK) + #undef JSON_HEDLEY_INTEL_CL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_INTEL_CL_VERSION) + #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_CL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_PGI_VERSION) + #undef JSON_HEDLEY_PGI_VERSION +#endif +#if defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__) + #define JSON_HEDLEY_PGI_VERSION JSON_HEDLEY_VERSION_ENCODE(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__) +#endif + +#if defined(JSON_HEDLEY_PGI_VERSION_CHECK) + #undef JSON_HEDLEY_PGI_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_PGI_VERSION) + #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PGI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_SUNPRO_VERSION) + #undef JSON_HEDLEY_SUNPRO_VERSION +#endif +#if defined(__SUNPRO_C) && (__SUNPRO_C > 0x1000) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_C >> 16) & 0xf) * 10) + ((__SUNPRO_C >> 12) & 0xf), (((__SUNPRO_C >> 8) & 0xf) * 10) + ((__SUNPRO_C >> 4) & 0xf), (__SUNPRO_C & 0xf) * 10) +#elif defined(__SUNPRO_C) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_C >> 8) & 0xf, (__SUNPRO_C >> 4) & 0xf, (__SUNPRO_C) & 0xf) +#elif defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x1000) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_CC >> 16) & 0xf) * 10) + ((__SUNPRO_CC >> 12) & 0xf), (((__SUNPRO_CC >> 8) & 0xf) * 10) + ((__SUNPRO_CC >> 4) & 0xf), (__SUNPRO_CC & 0xf) * 10) +#elif defined(__SUNPRO_CC) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_CC >> 8) & 0xf, (__SUNPRO_CC >> 4) & 0xf, (__SUNPRO_CC) & 0xf) +#endif + +#if defined(JSON_HEDLEY_SUNPRO_VERSION_CHECK) + #undef JSON_HEDLEY_SUNPRO_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_SUNPRO_VERSION) + #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_SUNPRO_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) + #undef JSON_HEDLEY_EMSCRIPTEN_VERSION +#endif +#if defined(__EMSCRIPTEN__) + #define JSON_HEDLEY_EMSCRIPTEN_VERSION JSON_HEDLEY_VERSION_ENCODE(__EMSCRIPTEN_major__, __EMSCRIPTEN_minor__, __EMSCRIPTEN_tiny__) +#endif + +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK) + #undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) + #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_EMSCRIPTEN_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_ARM_VERSION) + #undef JSON_HEDLEY_ARM_VERSION +#endif +#if defined(__CC_ARM) && defined(__ARMCOMPILER_VERSION) + #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCOMPILER_VERSION / 1000000, (__ARMCOMPILER_VERSION % 1000000) / 10000, (__ARMCOMPILER_VERSION % 10000) / 100) +#elif defined(__CC_ARM) && defined(__ARMCC_VERSION) + #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCC_VERSION / 1000000, (__ARMCC_VERSION % 1000000) / 10000, (__ARMCC_VERSION % 10000) / 100) +#endif + +#if defined(JSON_HEDLEY_ARM_VERSION_CHECK) + #undef JSON_HEDLEY_ARM_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_ARM_VERSION) + #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_ARM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_IBM_VERSION) + #undef JSON_HEDLEY_IBM_VERSION +#endif +#if defined(__ibmxl__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ibmxl_version__, __ibmxl_release__, __ibmxl_modification__) +#elif defined(__xlC__) && defined(__xlC_ver__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff) +#elif defined(__xlC__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, 0) +#endif + +#if defined(JSON_HEDLEY_IBM_VERSION_CHECK) + #undef JSON_HEDLEY_IBM_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_IBM_VERSION) + #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IBM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_VERSION) + #undef JSON_HEDLEY_TI_VERSION +#endif +#if \ + defined(__TI_COMPILER_VERSION__) && \ + ( \ + defined(__TMS470__) || defined(__TI_ARM__) || \ + defined(__MSP430__) || \ + defined(__TMS320C2000__) \ + ) +#if (__TI_COMPILER_VERSION__ >= 16000000) + #define JSON_HEDLEY_TI_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif +#endif + +#if defined(JSON_HEDLEY_TI_VERSION_CHECK) + #undef JSON_HEDLEY_TI_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_VERSION) + #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL2000_VERSION) + #undef JSON_HEDLEY_TI_CL2000_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C2000__) + #define JSON_HEDLEY_TI_CL2000_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL2000_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL2000_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL2000_VERSION) + #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL2000_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL430_VERSION) + #undef JSON_HEDLEY_TI_CL430_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__MSP430__) + #define JSON_HEDLEY_TI_CL430_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL430_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL430_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL430_VERSION) + #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL430_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION) + #undef JSON_HEDLEY_TI_ARMCL_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && (defined(__TMS470__) || defined(__TI_ARM__)) + #define JSON_HEDLEY_TI_ARMCL_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION_CHECK) + #undef JSON_HEDLEY_TI_ARMCL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION) + #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_ARMCL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL6X_VERSION) + #undef JSON_HEDLEY_TI_CL6X_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C6X__) + #define JSON_HEDLEY_TI_CL6X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL6X_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL6X_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL6X_VERSION) + #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL6X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL7X_VERSION) + #undef JSON_HEDLEY_TI_CL7X_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__C7000__) + #define JSON_HEDLEY_TI_CL7X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL7X_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL7X_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL7X_VERSION) + #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL7X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION) + #undef JSON_HEDLEY_TI_CLPRU_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__PRU__) + #define JSON_HEDLEY_TI_CLPRU_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CLPRU_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION) + #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CLPRU_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_CRAY_VERSION) + #undef JSON_HEDLEY_CRAY_VERSION +#endif +#if defined(_CRAYC) + #if defined(_RELEASE_PATCHLEVEL) + #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, _RELEASE_PATCHLEVEL) + #else + #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, 0) + #endif +#endif + +#if defined(JSON_HEDLEY_CRAY_VERSION_CHECK) + #undef JSON_HEDLEY_CRAY_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_CRAY_VERSION) + #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_CRAY_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_IAR_VERSION) + #undef JSON_HEDLEY_IAR_VERSION +#endif +#if defined(__IAR_SYSTEMS_ICC__) + #if __VER__ > 1000 + #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE((__VER__ / 1000000), ((__VER__ / 1000) % 1000), (__VER__ % 1000)) + #else + #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE(__VER__ / 100, __VER__ % 100, 0) + #endif +#endif + +#if defined(JSON_HEDLEY_IAR_VERSION_CHECK) + #undef JSON_HEDLEY_IAR_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_IAR_VERSION) + #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IAR_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TINYC_VERSION) + #undef JSON_HEDLEY_TINYC_VERSION +#endif +#if defined(__TINYC__) + #define JSON_HEDLEY_TINYC_VERSION JSON_HEDLEY_VERSION_ENCODE(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100) +#endif + +#if defined(JSON_HEDLEY_TINYC_VERSION_CHECK) + #undef JSON_HEDLEY_TINYC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TINYC_VERSION) + #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TINYC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_DMC_VERSION) + #undef JSON_HEDLEY_DMC_VERSION +#endif +#if defined(__DMC__) + #define JSON_HEDLEY_DMC_VERSION JSON_HEDLEY_VERSION_ENCODE(__DMC__ >> 8, (__DMC__ >> 4) & 0xf, __DMC__ & 0xf) +#endif + +#if defined(JSON_HEDLEY_DMC_VERSION_CHECK) + #undef JSON_HEDLEY_DMC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_DMC_VERSION) + #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_DMC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_COMPCERT_VERSION) + #undef JSON_HEDLEY_COMPCERT_VERSION +#endif +#if defined(__COMPCERT_VERSION__) + #define JSON_HEDLEY_COMPCERT_VERSION JSON_HEDLEY_VERSION_ENCODE(__COMPCERT_VERSION__ / 10000, (__COMPCERT_VERSION__ / 100) % 100, __COMPCERT_VERSION__ % 100) +#endif + +#if defined(JSON_HEDLEY_COMPCERT_VERSION_CHECK) + #undef JSON_HEDLEY_COMPCERT_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_COMPCERT_VERSION) + #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_COMPCERT_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_PELLES_VERSION) + #undef JSON_HEDLEY_PELLES_VERSION +#endif +#if defined(__POCC__) + #define JSON_HEDLEY_PELLES_VERSION JSON_HEDLEY_VERSION_ENCODE(__POCC__ / 100, __POCC__ % 100, 0) +#endif + +#if defined(JSON_HEDLEY_PELLES_VERSION_CHECK) + #undef JSON_HEDLEY_PELLES_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_PELLES_VERSION) + #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PELLES_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_MCST_LCC_VERSION) + #undef JSON_HEDLEY_MCST_LCC_VERSION +#endif +#if defined(__LCC__) && defined(__LCC_MINOR__) + #define JSON_HEDLEY_MCST_LCC_VERSION JSON_HEDLEY_VERSION_ENCODE(__LCC__ / 100, __LCC__ % 100, __LCC_MINOR__) +#endif + +#if defined(JSON_HEDLEY_MCST_LCC_VERSION_CHECK) + #undef JSON_HEDLEY_MCST_LCC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_MCST_LCC_VERSION) + #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_MCST_LCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_GCC_VERSION) + #undef JSON_HEDLEY_GCC_VERSION +#endif +#if \ + defined(JSON_HEDLEY_GNUC_VERSION) && \ + !defined(__clang__) && \ + !defined(JSON_HEDLEY_INTEL_VERSION) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_ARM_VERSION) && \ + !defined(JSON_HEDLEY_CRAY_VERSION) && \ + !defined(JSON_HEDLEY_TI_VERSION) && \ + !defined(JSON_HEDLEY_TI_ARMCL_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL430_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL2000_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL6X_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL7X_VERSION) && \ + !defined(JSON_HEDLEY_TI_CLPRU_VERSION) && \ + !defined(__COMPCERT__) && \ + !defined(JSON_HEDLEY_MCST_LCC_VERSION) + #define JSON_HEDLEY_GCC_VERSION JSON_HEDLEY_GNUC_VERSION +#endif + +#if defined(JSON_HEDLEY_GCC_VERSION_CHECK) + #undef JSON_HEDLEY_GCC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_GCC_VERSION) + #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_ATTRIBUTE +#endif +#if \ + defined(__has_attribute) && \ + ( \ + (!defined(JSON_HEDLEY_IAR_VERSION) || JSON_HEDLEY_IAR_VERSION_CHECK(8,5,9)) \ + ) +# define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) __has_attribute(attribute) +#else +# define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE +#endif +#if defined(__has_attribute) + #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE +#endif +#if defined(__has_attribute) + #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE +#endif +#if \ + defined(__has_cpp_attribute) && \ + defined(__cplusplus) && \ + (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS) + #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS +#endif +#if !defined(__cplusplus) || !defined(__has_cpp_attribute) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) +#elif \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_IAR_VERSION) && \ + (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) && \ + (!defined(JSON_HEDLEY_MSVC_VERSION) || JSON_HEDLEY_MSVC_VERSION_CHECK(19,20,0)) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(ns::attribute) +#else + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE +#endif +#if defined(__has_cpp_attribute) && defined(__cplusplus) + #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE +#endif +#if defined(__has_cpp_attribute) && defined(__cplusplus) + #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_BUILTIN) + #undef JSON_HEDLEY_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_HAS_BUILTIN(builtin) __has_builtin(builtin) +#else + #define JSON_HEDLEY_HAS_BUILTIN(builtin) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_BUILTIN) + #undef JSON_HEDLEY_GNUC_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) +#else + #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_BUILTIN) + #undef JSON_HEDLEY_GCC_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) +#else + #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_FEATURE) + #undef JSON_HEDLEY_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_HAS_FEATURE(feature) __has_feature(feature) +#else + #define JSON_HEDLEY_HAS_FEATURE(feature) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_FEATURE) + #undef JSON_HEDLEY_GNUC_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) +#else + #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_FEATURE) + #undef JSON_HEDLEY_GCC_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) +#else + #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_EXTENSION) + #undef JSON_HEDLEY_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_HAS_EXTENSION(extension) __has_extension(extension) +#else + #define JSON_HEDLEY_HAS_EXTENSION(extension) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_EXTENSION) + #undef JSON_HEDLEY_GNUC_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) +#else + #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_EXTENSION) + #undef JSON_HEDLEY_GCC_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) +#else + #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_WARNING) + #undef JSON_HEDLEY_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_HAS_WARNING(warning) __has_warning(warning) +#else + #define JSON_HEDLEY_HAS_WARNING(warning) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_WARNING) + #undef JSON_HEDLEY_GNUC_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) +#else + #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_WARNING) + #undef JSON_HEDLEY_GCC_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) +#else + #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ + defined(__clang__) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,17) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(8,0,0) || \ + (JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) && defined(__C99_PRAGMA_OPERATOR)) + #define JSON_HEDLEY_PRAGMA(value) _Pragma(#value) +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_PRAGMA(value) __pragma(value) +#else + #define JSON_HEDLEY_PRAGMA(value) +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_PUSH) + #undef JSON_HEDLEY_DIAGNOSTIC_PUSH +#endif +#if defined(JSON_HEDLEY_DIAGNOSTIC_POP) + #undef JSON_HEDLEY_DIAGNOSTIC_POP +#endif +#if defined(__clang__) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("clang diagnostic pop") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH __pragma(warning(push)) + #define JSON_HEDLEY_DIAGNOSTIC_POP __pragma(warning(pop)) +#elif JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("pop") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,4,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("diag_push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("diag_pop") +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") +#else + #define JSON_HEDLEY_DIAGNOSTIC_PUSH + #define JSON_HEDLEY_DIAGNOSTIC_POP +#endif + +/* JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ is for + HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ +#endif +#if defined(__cplusplus) +# if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat") +# if JSON_HEDLEY_HAS_WARNING("-Wc++17-extensions") +# if JSON_HEDLEY_HAS_WARNING("-Wc++1z-extensions") +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ + _Pragma("clang diagnostic ignored \"-Wc++1z-extensions\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# endif +# else +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# endif +# endif +#endif +#if !defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x) x +#endif + +#if defined(JSON_HEDLEY_CONST_CAST) + #undef JSON_HEDLEY_CONST_CAST +#endif +#if defined(__cplusplus) +# define JSON_HEDLEY_CONST_CAST(T, expr) (const_cast(expr)) +#elif \ + JSON_HEDLEY_HAS_WARNING("-Wcast-qual") || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_CONST_CAST(T, expr) (__extension__ ({ \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL \ + ((T) (expr)); \ + JSON_HEDLEY_DIAGNOSTIC_POP \ + })) +#else +# define JSON_HEDLEY_CONST_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_REINTERPRET_CAST) + #undef JSON_HEDLEY_REINTERPRET_CAST +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) (reinterpret_cast(expr)) +#else + #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_STATIC_CAST) + #undef JSON_HEDLEY_STATIC_CAST +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_STATIC_CAST(T, expr) (static_cast(expr)) +#else + #define JSON_HEDLEY_STATIC_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_CPP_CAST) + #undef JSON_HEDLEY_CPP_CAST +#endif +#if defined(__cplusplus) +# if JSON_HEDLEY_HAS_WARNING("-Wold-style-cast") +# define JSON_HEDLEY_CPP_CAST(T, expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wold-style-cast\"") \ + ((T) (expr)) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# elif JSON_HEDLEY_IAR_VERSION_CHECK(8,3,0) +# define JSON_HEDLEY_CPP_CAST(T, expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("diag_suppress=Pe137") \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_CPP_CAST(T, expr) ((T) (expr)) +# endif +#else +# define JSON_HEDLEY_CPP_CAST(T, expr) (expr) +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wdeprecated-declarations") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warning(disable:1478 1786)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:1478 1786)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1216,1444,1445") +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:4996)) +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1291,1718") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && !defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,E_DEPRECATED_ATT,E_DEPRECATED_ATT_MESS)") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,symdeprecated,symdeprecated2)") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress=Pe1444,Pe1215") +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warn(disable:2241)") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("warning(disable:161)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:161)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 1675") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:4068)) +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(16,9,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress=Pe161") +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 161") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-attributes") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("clang diagnostic ignored \"-Wunknown-attributes\"") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("warning(disable:1292)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:1292)) +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:5030)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097,1098") +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("error_messages(off,attrskipunsup)") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1173") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress=Pe1097") +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wcast-qual") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("clang diagnostic ignored \"-Wcast-qual\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("warning(disable:2203 2331)") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("GCC diagnostic ignored \"-Wcast-qual\"") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunused-function") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("clang diagnostic ignored \"-Wunused-function\"") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("GCC diagnostic ignored \"-Wunused-function\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(1,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION __pragma(warning(disable:4505)) +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("diag_suppress 3142") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION +#endif + +#if defined(JSON_HEDLEY_DEPRECATED) + #undef JSON_HEDLEY_DEPRECATED +#endif +#if defined(JSON_HEDLEY_DEPRECATED_FOR) + #undef JSON_HEDLEY_DEPRECATED_FOR +#endif +#if \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated("Since " # since)) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated("Since " #since "; use " #replacement)) +#elif \ + (JSON_HEDLEY_HAS_EXTENSION(attribute_deprecated_with_message) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__("Since " #since))) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__("Since " #since "; use " #replacement))) +#elif defined(__cplusplus) && (__cplusplus >= 201402L) + #define JSON_HEDLEY_DEPRECATED(since) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since)]]) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since "; use " #replacement)]]) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(deprecated) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__)) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_PELLES_VERSION_CHECK(6,50,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated) +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DEPRECATED(since) _Pragma("deprecated") + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) _Pragma("deprecated") +#else + #define JSON_HEDLEY_DEPRECATED(since) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) +#endif + +#if defined(JSON_HEDLEY_UNAVAILABLE) + #undef JSON_HEDLEY_UNAVAILABLE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(warning) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_UNAVAILABLE(available_since) __attribute__((__warning__("Not available until " #available_since))) +#else + #define JSON_HEDLEY_UNAVAILABLE(available_since) +#endif + +#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT) + #undef JSON_HEDLEY_WARN_UNUSED_RESULT +#endif +#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT_MSG) + #undef JSON_HEDLEY_WARN_UNUSED_RESULT_MSG +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(warn_unused_result) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) __attribute__((__warn_unused_result__)) +#elif (JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) >= 201907L) + #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard(msg)]]) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) + #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) +#elif defined(_Check_return_) /* SAL */ + #define JSON_HEDLEY_WARN_UNUSED_RESULT _Check_return_ + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) _Check_return_ +#else + #define JSON_HEDLEY_WARN_UNUSED_RESULT + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) +#endif + +#if defined(JSON_HEDLEY_SENTINEL) + #undef JSON_HEDLEY_SENTINEL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(sentinel) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_SENTINEL(position) __attribute__((__sentinel__(position))) +#else + #define JSON_HEDLEY_SENTINEL(position) +#endif + +#if defined(JSON_HEDLEY_NO_RETURN) + #undef JSON_HEDLEY_NO_RETURN +#endif +#if JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_NO_RETURN __noreturn +#elif \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) +#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L + #define JSON_HEDLEY_NO_RETURN _Noreturn +#elif defined(__cplusplus) && (__cplusplus >= 201103L) + #define JSON_HEDLEY_NO_RETURN JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[noreturn]]) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(noreturn) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,2,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_NO_RETURN _Pragma("does_not_return") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_NO_RETURN __declspec(noreturn) +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) + #define JSON_HEDLEY_NO_RETURN _Pragma("FUNC_NEVER_RETURNS;") +#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) + #define JSON_HEDLEY_NO_RETURN __attribute((noreturn)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) + #define JSON_HEDLEY_NO_RETURN __declspec(noreturn) +#else + #define JSON_HEDLEY_NO_RETURN +#endif + +#if defined(JSON_HEDLEY_NO_ESCAPE) + #undef JSON_HEDLEY_NO_ESCAPE +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(noescape) + #define JSON_HEDLEY_NO_ESCAPE __attribute__((__noescape__)) +#else + #define JSON_HEDLEY_NO_ESCAPE +#endif + +#if defined(JSON_HEDLEY_UNREACHABLE) + #undef JSON_HEDLEY_UNREACHABLE +#endif +#if defined(JSON_HEDLEY_UNREACHABLE_RETURN) + #undef JSON_HEDLEY_UNREACHABLE_RETURN +#endif +#if defined(JSON_HEDLEY_ASSUME) + #undef JSON_HEDLEY_ASSUME +#endif +#if \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_ASSUME(expr) __assume(expr) +#elif JSON_HEDLEY_HAS_BUILTIN(__builtin_assume) + #define JSON_HEDLEY_ASSUME(expr) __builtin_assume(expr) +#elif \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) + #if defined(__cplusplus) + #define JSON_HEDLEY_ASSUME(expr) std::_nassert(expr) + #else + #define JSON_HEDLEY_ASSUME(expr) _nassert(expr) + #endif +#endif +#if \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) && (!defined(JSON_HEDLEY_ARM_VERSION))) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,10,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,5) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(10,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_UNREACHABLE() __builtin_unreachable() +#elif defined(JSON_HEDLEY_ASSUME) + #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) +#endif +#if !defined(JSON_HEDLEY_ASSUME) + #if defined(JSON_HEDLEY_UNREACHABLE) + #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, ((expr) ? 1 : (JSON_HEDLEY_UNREACHABLE(), 1))) + #else + #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, expr) + #endif +#endif +#if defined(JSON_HEDLEY_UNREACHABLE) + #if \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (JSON_HEDLEY_STATIC_CAST(void, JSON_HEDLEY_ASSUME(0)), (value)) + #else + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) JSON_HEDLEY_UNREACHABLE() + #endif +#else + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (value) +#endif +#if !defined(JSON_HEDLEY_UNREACHABLE) + #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) +#endif + +JSON_HEDLEY_DIAGNOSTIC_PUSH +#if JSON_HEDLEY_HAS_WARNING("-Wpedantic") + #pragma clang diagnostic ignored "-Wpedantic" +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat-pedantic") && defined(__cplusplus) + #pragma clang diagnostic ignored "-Wc++98-compat-pedantic" +#endif +#if JSON_HEDLEY_GCC_HAS_WARNING("-Wvariadic-macros",4,0,0) + #if defined(__clang__) + #pragma clang diagnostic ignored "-Wvariadic-macros" + #elif defined(JSON_HEDLEY_GCC_VERSION) + #pragma GCC diagnostic ignored "-Wvariadic-macros" + #endif +#endif +#if defined(JSON_HEDLEY_NON_NULL) + #undef JSON_HEDLEY_NON_NULL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(nonnull) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) + #define JSON_HEDLEY_NON_NULL(...) __attribute__((__nonnull__(__VA_ARGS__))) +#else + #define JSON_HEDLEY_NON_NULL(...) +#endif +JSON_HEDLEY_DIAGNOSTIC_POP + +#if defined(JSON_HEDLEY_PRINTF_FORMAT) + #undef JSON_HEDLEY_PRINTF_FORMAT +#endif +#if defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && !defined(__USE_MINGW_ANSI_STDIO) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(ms_printf, string_idx, first_to_check))) +#elif defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && defined(__USE_MINGW_ANSI_STDIO) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(gnu_printf, string_idx, first_to_check))) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(format) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(__printf__, string_idx, first_to_check))) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(6,0,0) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __declspec(vaformat(printf,string_idx,first_to_check)) +#else + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) +#endif + +#if defined(JSON_HEDLEY_CONSTEXPR) + #undef JSON_HEDLEY_CONSTEXPR +#endif +#if defined(__cplusplus) + #if __cplusplus >= 201103L + #define JSON_HEDLEY_CONSTEXPR JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(constexpr) + #endif +#endif +#if !defined(JSON_HEDLEY_CONSTEXPR) + #define JSON_HEDLEY_CONSTEXPR +#endif + +#if defined(JSON_HEDLEY_PREDICT) + #undef JSON_HEDLEY_PREDICT +#endif +#if defined(JSON_HEDLEY_LIKELY) + #undef JSON_HEDLEY_LIKELY +#endif +#if defined(JSON_HEDLEY_UNLIKELY) + #undef JSON_HEDLEY_UNLIKELY +#endif +#if defined(JSON_HEDLEY_UNPREDICTABLE) + #undef JSON_HEDLEY_UNPREDICTABLE +#endif +#if JSON_HEDLEY_HAS_BUILTIN(__builtin_unpredictable) + #define JSON_HEDLEY_UNPREDICTABLE(expr) __builtin_unpredictable((expr)) +#endif +#if \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect_with_probability) && !defined(JSON_HEDLEY_PGI_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(9,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PREDICT(expr, value, probability) __builtin_expect_with_probability( (expr), (value), (probability)) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) __builtin_expect_with_probability(!!(expr), 1 , (probability)) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) __builtin_expect_with_probability(!!(expr), 0 , (probability)) +# define JSON_HEDLEY_LIKELY(expr) __builtin_expect (!!(expr), 1 ) +# define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect (!!(expr), 0 ) +#elif \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,27) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PREDICT(expr, expected, probability) \ + (((probability) >= 0.9) ? __builtin_expect((expr), (expected)) : (JSON_HEDLEY_STATIC_CAST(void, expected), (expr))) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) \ + (__extension__ ({ \ + double hedley_probability_ = (probability); \ + ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 1) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 0) : !!(expr))); \ + })) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) \ + (__extension__ ({ \ + double hedley_probability_ = (probability); \ + ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 0) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 1) : !!(expr))); \ + })) +# define JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1) +# define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0) +#else +# define JSON_HEDLEY_PREDICT(expr, expected, probability) (JSON_HEDLEY_STATIC_CAST(void, expected), (expr)) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) (!!(expr)) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) (!!(expr)) +# define JSON_HEDLEY_LIKELY(expr) (!!(expr)) +# define JSON_HEDLEY_UNLIKELY(expr) (!!(expr)) +#endif +#if !defined(JSON_HEDLEY_UNPREDICTABLE) + #define JSON_HEDLEY_UNPREDICTABLE(expr) JSON_HEDLEY_PREDICT(expr, 1, 0.5) +#endif + +#if defined(JSON_HEDLEY_MALLOC) + #undef JSON_HEDLEY_MALLOC +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(malloc) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_MALLOC __attribute__((__malloc__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_MALLOC _Pragma("returns_new_memory") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_MALLOC __declspec(restrict) +#else + #define JSON_HEDLEY_MALLOC +#endif + +#if defined(JSON_HEDLEY_PURE) + #undef JSON_HEDLEY_PURE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(pure) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(2,96,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PURE __attribute__((__pure__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) +# define JSON_HEDLEY_PURE _Pragma("does_not_write_global_data") +#elif defined(__cplusplus) && \ + ( \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) \ + ) +# define JSON_HEDLEY_PURE _Pragma("FUNC_IS_PURE;") +#else +# define JSON_HEDLEY_PURE +#endif + +#if defined(JSON_HEDLEY_CONST) + #undef JSON_HEDLEY_CONST +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(const) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(2,5,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_CONST __attribute__((__const__)) +#elif \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_CONST _Pragma("no_side_effect") +#else + #define JSON_HEDLEY_CONST JSON_HEDLEY_PURE +#endif + +#if defined(JSON_HEDLEY_RESTRICT) + #undef JSON_HEDLEY_RESTRICT +#endif +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && !defined(__cplusplus) + #define JSON_HEDLEY_RESTRICT restrict +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,4) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ + defined(__clang__) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_RESTRICT __restrict +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,3,0) && !defined(__cplusplus) + #define JSON_HEDLEY_RESTRICT _Restrict +#else + #define JSON_HEDLEY_RESTRICT +#endif + +#if defined(JSON_HEDLEY_INLINE) + #undef JSON_HEDLEY_INLINE +#endif +#if \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ + (defined(__cplusplus) && (__cplusplus >= 199711L)) + #define JSON_HEDLEY_INLINE inline +#elif \ + defined(JSON_HEDLEY_GCC_VERSION) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(6,2,0) + #define JSON_HEDLEY_INLINE __inline__ +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,1,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_INLINE __inline +#else + #define JSON_HEDLEY_INLINE +#endif + +#if defined(JSON_HEDLEY_ALWAYS_INLINE) + #undef JSON_HEDLEY_ALWAYS_INLINE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(always_inline) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) +# define JSON_HEDLEY_ALWAYS_INLINE __attribute__((__always_inline__)) JSON_HEDLEY_INLINE +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_ALWAYS_INLINE __forceinline +#elif defined(__cplusplus) && \ + ( \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) \ + ) +# define JSON_HEDLEY_ALWAYS_INLINE _Pragma("FUNC_ALWAYS_INLINE;") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +# define JSON_HEDLEY_ALWAYS_INLINE _Pragma("inline=forced") +#else +# define JSON_HEDLEY_ALWAYS_INLINE JSON_HEDLEY_INLINE +#endif + +#if defined(JSON_HEDLEY_NEVER_INLINE) + #undef JSON_HEDLEY_NEVER_INLINE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(noinline) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_NEVER_INLINE __attribute__((__noinline__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(10,2,0) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("noinline") +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("FUNC_CANNOT_INLINE;") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("inline=never") +#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) + #define JSON_HEDLEY_NEVER_INLINE __attribute((noinline)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) + #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) +#else + #define JSON_HEDLEY_NEVER_INLINE +#endif + +#if defined(JSON_HEDLEY_PRIVATE) + #undef JSON_HEDLEY_PRIVATE +#endif +#if defined(JSON_HEDLEY_PUBLIC) + #undef JSON_HEDLEY_PUBLIC +#endif +#if defined(JSON_HEDLEY_IMPORT) + #undef JSON_HEDLEY_IMPORT +#endif +#if defined(_WIN32) || defined(__CYGWIN__) +# define JSON_HEDLEY_PRIVATE +# define JSON_HEDLEY_PUBLIC __declspec(dllexport) +# define JSON_HEDLEY_IMPORT __declspec(dllimport) +#else +# if \ + JSON_HEDLEY_HAS_ATTRIBUTE(visibility) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + ( \ + defined(__TI_EABI__) && \ + ( \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) \ + ) \ + ) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PRIVATE __attribute__((__visibility__("hidden"))) +# define JSON_HEDLEY_PUBLIC __attribute__((__visibility__("default"))) +# else +# define JSON_HEDLEY_PRIVATE +# define JSON_HEDLEY_PUBLIC +# endif +# define JSON_HEDLEY_IMPORT extern +#endif + +#if defined(JSON_HEDLEY_NO_THROW) + #undef JSON_HEDLEY_NO_THROW +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(nothrow) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_NO_THROW __attribute__((__nothrow__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) + #define JSON_HEDLEY_NO_THROW __declspec(nothrow) +#else + #define JSON_HEDLEY_NO_THROW +#endif + +#if defined(JSON_HEDLEY_FALL_THROUGH) + #undef JSON_HEDLEY_FALL_THROUGH +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(fallthrough) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(7,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_FALL_THROUGH __attribute__((__fallthrough__)) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(clang,fallthrough) + #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[clang::fallthrough]]) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(fallthrough) + #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[fallthrough]]) +#elif defined(__fallthrough) /* SAL */ + #define JSON_HEDLEY_FALL_THROUGH __fallthrough +#else + #define JSON_HEDLEY_FALL_THROUGH +#endif + +#if defined(JSON_HEDLEY_RETURNS_NON_NULL) + #undef JSON_HEDLEY_RETURNS_NON_NULL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(returns_nonnull) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_RETURNS_NON_NULL __attribute__((__returns_nonnull__)) +#elif defined(_Ret_notnull_) /* SAL */ + #define JSON_HEDLEY_RETURNS_NON_NULL _Ret_notnull_ +#else + #define JSON_HEDLEY_RETURNS_NON_NULL +#endif + +#if defined(JSON_HEDLEY_ARRAY_PARAM) + #undef JSON_HEDLEY_ARRAY_PARAM +#endif +#if \ + defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ + !defined(__STDC_NO_VLA__) && \ + !defined(__cplusplus) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_TINYC_VERSION) + #define JSON_HEDLEY_ARRAY_PARAM(name) (name) +#else + #define JSON_HEDLEY_ARRAY_PARAM(name) +#endif + +#if defined(JSON_HEDLEY_IS_CONSTANT) + #undef JSON_HEDLEY_IS_CONSTANT +#endif +#if defined(JSON_HEDLEY_REQUIRE_CONSTEXPR) + #undef JSON_HEDLEY_REQUIRE_CONSTEXPR +#endif +/* JSON_HEDLEY_IS_CONSTEXPR_ is for + HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ +#if defined(JSON_HEDLEY_IS_CONSTEXPR_) + #undef JSON_HEDLEY_IS_CONSTEXPR_ +#endif +#if \ + JSON_HEDLEY_HAS_BUILTIN(__builtin_constant_p) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,19) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) && !defined(__cplusplus)) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_IS_CONSTANT(expr) __builtin_constant_p(expr) +#endif +#if !defined(__cplusplus) +# if \ + JSON_HEDLEY_HAS_BUILTIN(__builtin_types_compatible_p) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,24) +#if defined(__INTPTR_TYPE__) + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0)), int*) +#else + #include + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((intptr_t) ((expr) * 0)) : (int*) 0)), int*) +#endif +# elif \ + ( \ + defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) && \ + !defined(JSON_HEDLEY_SUNPRO_VERSION) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_IAR_VERSION)) || \ + (JSON_HEDLEY_HAS_EXTENSION(c_generic_selections) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,3,0) +#if defined(__INTPTR_TYPE__) + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0), int*: 1, void*: 0) +#else + #include + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((intptr_t) * 0) : (int*) 0), int*: 1, void*: 0) +#endif +# elif \ + defined(JSON_HEDLEY_GCC_VERSION) || \ + defined(JSON_HEDLEY_INTEL_VERSION) || \ + defined(JSON_HEDLEY_TINYC_VERSION) || \ + defined(JSON_HEDLEY_TI_ARMCL_VERSION) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(18,12,0) || \ + defined(JSON_HEDLEY_TI_CL2000_VERSION) || \ + defined(JSON_HEDLEY_TI_CL6X_VERSION) || \ + defined(JSON_HEDLEY_TI_CL7X_VERSION) || \ + defined(JSON_HEDLEY_TI_CLPRU_VERSION) || \ + defined(__clang__) +# define JSON_HEDLEY_IS_CONSTEXPR_(expr) ( \ + sizeof(void) != \ + sizeof(*( \ + 1 ? \ + ((void*) ((expr) * 0L) ) : \ +((struct { char v[sizeof(void) * 2]; } *) 1) \ + ) \ + ) \ + ) +# endif +#endif +#if defined(JSON_HEDLEY_IS_CONSTEXPR_) + #if !defined(JSON_HEDLEY_IS_CONSTANT) + #define JSON_HEDLEY_IS_CONSTANT(expr) JSON_HEDLEY_IS_CONSTEXPR_(expr) + #endif + #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (JSON_HEDLEY_IS_CONSTEXPR_(expr) ? (expr) : (-1)) +#else + #if !defined(JSON_HEDLEY_IS_CONSTANT) + #define JSON_HEDLEY_IS_CONSTANT(expr) (0) + #endif + #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (expr) +#endif + +#if defined(JSON_HEDLEY_BEGIN_C_DECLS) + #undef JSON_HEDLEY_BEGIN_C_DECLS +#endif +#if defined(JSON_HEDLEY_END_C_DECLS) + #undef JSON_HEDLEY_END_C_DECLS +#endif +#if defined(JSON_HEDLEY_C_DECL) + #undef JSON_HEDLEY_C_DECL +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_BEGIN_C_DECLS extern "C" { + #define JSON_HEDLEY_END_C_DECLS } + #define JSON_HEDLEY_C_DECL extern "C" +#else + #define JSON_HEDLEY_BEGIN_C_DECLS + #define JSON_HEDLEY_END_C_DECLS + #define JSON_HEDLEY_C_DECL +#endif + +#if defined(JSON_HEDLEY_STATIC_ASSERT) + #undef JSON_HEDLEY_STATIC_ASSERT +#endif +#if \ + !defined(__cplusplus) && ( \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) || \ + (JSON_HEDLEY_HAS_FEATURE(c_static_assert) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(6,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + defined(_Static_assert) \ + ) +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message) +#elif \ + (defined(__cplusplus) && (__cplusplus >= 201103L)) || \ + JSON_HEDLEY_MSVC_VERSION_CHECK(16,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(static_assert(expr, message)) +#else +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) +#endif + +#if defined(JSON_HEDLEY_NULL) + #undef JSON_HEDLEY_NULL +#endif +#if defined(__cplusplus) + #if __cplusplus >= 201103L + #define JSON_HEDLEY_NULL JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(nullptr) + #elif defined(NULL) + #define JSON_HEDLEY_NULL NULL + #else + #define JSON_HEDLEY_NULL JSON_HEDLEY_STATIC_CAST(void*, 0) + #endif +#elif defined(NULL) + #define JSON_HEDLEY_NULL NULL +#else + #define JSON_HEDLEY_NULL ((void*) 0) +#endif + +#if defined(JSON_HEDLEY_MESSAGE) + #undef JSON_HEDLEY_MESSAGE +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") +# define JSON_HEDLEY_MESSAGE(msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ + JSON_HEDLEY_PRAGMA(message msg) \ + JSON_HEDLEY_DIAGNOSTIC_POP +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message msg) +#elif JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(_CRI message msg) +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#else +# define JSON_HEDLEY_MESSAGE(msg) +#endif + +#if defined(JSON_HEDLEY_WARNING) + #undef JSON_HEDLEY_WARNING +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") +# define JSON_HEDLEY_WARNING(msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ + JSON_HEDLEY_PRAGMA(clang warning msg) \ + JSON_HEDLEY_DIAGNOSTIC_POP +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,8,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(GCC warning msg) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#else +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_MESSAGE(msg) +#endif + +#if defined(JSON_HEDLEY_REQUIRE) + #undef JSON_HEDLEY_REQUIRE +#endif +#if defined(JSON_HEDLEY_REQUIRE_MSG) + #undef JSON_HEDLEY_REQUIRE_MSG +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(diagnose_if) +# if JSON_HEDLEY_HAS_WARNING("-Wgcc-compat") +# define JSON_HEDLEY_REQUIRE(expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ + __attribute__((diagnose_if(!(expr), #expr, "error"))) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ + __attribute__((diagnose_if(!(expr), msg, "error"))) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_REQUIRE(expr) __attribute__((diagnose_if(!(expr), #expr, "error"))) +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) __attribute__((diagnose_if(!(expr), msg, "error"))) +# endif +#else +# define JSON_HEDLEY_REQUIRE(expr) +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) +#endif + +#if defined(JSON_HEDLEY_FLAGS) + #undef JSON_HEDLEY_FLAGS +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(flag_enum) && (!defined(__cplusplus) || JSON_HEDLEY_HAS_WARNING("-Wbitfield-enum-conversion")) + #define JSON_HEDLEY_FLAGS __attribute__((__flag_enum__)) +#else + #define JSON_HEDLEY_FLAGS +#endif + +#if defined(JSON_HEDLEY_FLAGS_CAST) + #undef JSON_HEDLEY_FLAGS_CAST +#endif +#if JSON_HEDLEY_INTEL_VERSION_CHECK(19,0,0) +# define JSON_HEDLEY_FLAGS_CAST(T, expr) (__extension__ ({ \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("warning(disable:188)") \ + ((T) (expr)); \ + JSON_HEDLEY_DIAGNOSTIC_POP \ + })) +#else +# define JSON_HEDLEY_FLAGS_CAST(T, expr) JSON_HEDLEY_STATIC_CAST(T, expr) +#endif + +#if defined(JSON_HEDLEY_EMPTY_BASES) + #undef JSON_HEDLEY_EMPTY_BASES +#endif +#if \ + (JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,23918) && !JSON_HEDLEY_MSVC_VERSION_CHECK(20,0,0)) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_EMPTY_BASES __declspec(empty_bases) +#else + #define JSON_HEDLEY_EMPTY_BASES +#endif + +/* Remaining macros are deprecated. */ + +#if defined(JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK) + #undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK +#endif +#if defined(__clang__) + #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) (0) +#else + #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_CLANG_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_BUILTIN) + #undef JSON_HEDLEY_CLANG_HAS_BUILTIN +#endif +#define JSON_HEDLEY_CLANG_HAS_BUILTIN(builtin) JSON_HEDLEY_HAS_BUILTIN(builtin) + +#if defined(JSON_HEDLEY_CLANG_HAS_FEATURE) + #undef JSON_HEDLEY_CLANG_HAS_FEATURE +#endif +#define JSON_HEDLEY_CLANG_HAS_FEATURE(feature) JSON_HEDLEY_HAS_FEATURE(feature) + +#if defined(JSON_HEDLEY_CLANG_HAS_EXTENSION) + #undef JSON_HEDLEY_CLANG_HAS_EXTENSION +#endif +#define JSON_HEDLEY_CLANG_HAS_EXTENSION(extension) JSON_HEDLEY_HAS_EXTENSION(extension) + +#if defined(JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_WARNING) + #undef JSON_HEDLEY_CLANG_HAS_WARNING +#endif +#define JSON_HEDLEY_CLANG_HAS_WARNING(warning) JSON_HEDLEY_HAS_WARNING(warning) + +#endif /* !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < X) */ + +// #include + + +#include + +// #include + + +namespace nlohmann +{ +namespace detail +{ +template struct make_void +{ + using type = void; +}; +template using void_t = typename make_void::type; +} // namespace detail +} // namespace nlohmann + + +// https://en.cppreference.com/w/cpp/experimental/is_detected +namespace nlohmann +{ +namespace detail +{ +struct nonesuch +{ + nonesuch() = delete; + ~nonesuch() = delete; + nonesuch(nonesuch const&) = delete; + nonesuch(nonesuch const&&) = delete; + void operator=(nonesuch const&) = delete; + void operator=(nonesuch&&) = delete; +}; + +template class Op, + class... Args> +struct detector +{ + using value_t = std::false_type; + using type = Default; +}; + +template class Op, class... Args> +struct detector>, Op, Args...> +{ + using value_t = std::true_type; + using type = Op; +}; + +template class Op, class... Args> +using is_detected = typename detector::value_t; + +template class Op, class... Args> +struct is_detected_lazy : is_detected { }; + +template class Op, class... Args> +using detected_t = typename detector::type; + +template class Op, class... Args> +using detected_or = detector; + +template class Op, class... Args> +using detected_or_t = typename detected_or::type; + +template class Op, class... Args> +using is_detected_exact = std::is_same>; + +template class Op, class... Args> +using is_detected_convertible = + std::is_convertible, To>; +} // namespace detail +} // namespace nlohmann + + +// This file contains all internal macro definitions +// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them + +// exclude unsupported compilers +#if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK) + #if defined(__clang__) + #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 + #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" + #endif + #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) + #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800 + #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" + #endif + #endif +#endif + +// C++ language standard detection +// if the user manually specified the used c++ version this is skipped +#if !defined(JSON_HAS_CPP_20) && !defined(JSON_HAS_CPP_17) && !defined(JSON_HAS_CPP_14) && !defined(JSON_HAS_CPP_11) + #if (defined(__cplusplus) && __cplusplus >= 202002L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 202002L) + #define JSON_HAS_CPP_20 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) + #define JSON_HAS_CPP_14 + #endif + // the cpp 11 flag is always specified because it is the minimal required version + #define JSON_HAS_CPP_11 +#endif + +#ifdef __has_include + #if __has_include() + #include + #endif +#endif + +#if !defined(JSON_HAS_FILESYSTEM) && !defined(JSON_HAS_EXPERIMENTAL_FILESYSTEM) + #ifdef JSON_HAS_CPP_17 + #if defined(__cpp_lib_filesystem) + #define JSON_HAS_FILESYSTEM 1 + #elif defined(__cpp_lib_experimental_filesystem) + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #elif !defined(__has_include) + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #elif __has_include() + #define JSON_HAS_FILESYSTEM 1 + #elif __has_include() + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #endif + + // std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/ + #if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before GCC 8: https://en.cppreference.com/w/cpp/compiler_support + #if defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 8 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before Clang 7: https://en.cppreference.com/w/cpp/compiler_support + #if defined(__clang_major__) && __clang_major__ < 7 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before MSVC 19.14: https://en.cppreference.com/w/cpp/compiler_support + #if defined(_MSC_VER) && _MSC_VER < 1914 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before iOS 13 + #if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 130000 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before macOS Catalina + #if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + #endif +#endif + +#ifndef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 0 +#endif + +#ifndef JSON_HAS_FILESYSTEM + #define JSON_HAS_FILESYSTEM 0 +#endif + +#ifndef JSON_HAS_THREE_WAY_COMPARISON + #if defined(__cpp_impl_three_way_comparison) && __cpp_impl_three_way_comparison >= 201907L \ + && defined(__cpp_lib_three_way_comparison) && __cpp_lib_three_way_comparison >= 201907L + #define JSON_HAS_THREE_WAY_COMPARISON 1 + #else + #define JSON_HAS_THREE_WAY_COMPARISON 0 + #endif +#endif + +#ifndef JSON_HAS_RANGES + // ranges header shipping in GCC 11.1.0 (released 2021-04-27) has syntax error + #if defined(__GLIBCXX__) && __GLIBCXX__ == 20210427 + #define JSON_HAS_RANGES 0 + #elif defined(__cpp_lib_ranges) + #define JSON_HAS_RANGES 1 + #else + #define JSON_HAS_RANGES 0 + #endif +#endif + +#ifdef JSON_HAS_CPP_17 + #define JSON_INLINE_VARIABLE inline +#else + #define JSON_INLINE_VARIABLE +#endif + +#if JSON_HEDLEY_HAS_ATTRIBUTE(no_unique_address) + #define JSON_NO_UNIQUE_ADDRESS [[no_unique_address]] +#else + #define JSON_NO_UNIQUE_ADDRESS +#endif + +// disable documentation warnings on clang +#if defined(__clang__) + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wdocumentation" + #pragma clang diagnostic ignored "-Wdocumentation-unknown-command" +#endif + +// allow disabling exceptions +#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION) + #define JSON_THROW(exception) throw exception + #define JSON_TRY try + #define JSON_CATCH(exception) catch(exception) + #define JSON_INTERNAL_CATCH(exception) catch(exception) +#else + #include + #define JSON_THROW(exception) std::abort() + #define JSON_TRY if(true) + #define JSON_CATCH(exception) if(false) + #define JSON_INTERNAL_CATCH(exception) if(false) +#endif + +// override exception macros +#if defined(JSON_THROW_USER) + #undef JSON_THROW + #define JSON_THROW JSON_THROW_USER +#endif +#if defined(JSON_TRY_USER) + #undef JSON_TRY + #define JSON_TRY JSON_TRY_USER +#endif +#if defined(JSON_CATCH_USER) + #undef JSON_CATCH + #define JSON_CATCH JSON_CATCH_USER + #undef JSON_INTERNAL_CATCH + #define JSON_INTERNAL_CATCH JSON_CATCH_USER +#endif +#if defined(JSON_INTERNAL_CATCH_USER) + #undef JSON_INTERNAL_CATCH + #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER +#endif + +// allow overriding assert +#if !defined(JSON_ASSERT) + #include // assert + #define JSON_ASSERT(x) assert(x) +#endif + +// allow to access some private functions (needed by the test suite) +#if defined(JSON_TESTS_PRIVATE) + #define JSON_PRIVATE_UNLESS_TESTED public +#else + #define JSON_PRIVATE_UNLESS_TESTED private +#endif + +/*! +@brief macro to briefly define a mapping between an enum and JSON +@def NLOHMANN_JSON_SERIALIZE_ENUM +@since version 3.4.0 +*/ +#define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \ + template \ + inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \ + { \ + static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ + static const std::pair m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [e](const std::pair& ej_pair) -> bool \ + { \ + return ej_pair.first == e; \ + }); \ + j = ((it != std::end(m)) ? it : std::begin(m))->second; \ + } \ + template \ + inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \ + { \ + static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ + static const std::pair m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [&j](const std::pair& ej_pair) -> bool \ + { \ + return ej_pair.second == j; \ + }); \ + e = ((it != std::end(m)) ? it : std::begin(m))->first; \ + } + +// Ugly macros to avoid uglier copy-paste when specializing basic_json. They +// may be removed in the future once the class is split. + +#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ + template class ObjectType, \ + template class ArrayType, \ + class StringType, class BooleanType, class NumberIntegerType, \ + class NumberUnsignedType, class NumberFloatType, \ + template class AllocatorType, \ + template class JSONSerializer, \ + class BinaryType> + +#define NLOHMANN_BASIC_JSON_TPL \ + basic_json + +// Macros to simplify conversion from/to types + +#define NLOHMANN_JSON_EXPAND( x ) x +#define NLOHMANN_JSON_GET_MACRO(_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, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, NAME,...) NAME +#define NLOHMANN_JSON_PASTE(...) NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_GET_MACRO(__VA_ARGS__, \ + NLOHMANN_JSON_PASTE64, \ + NLOHMANN_JSON_PASTE63, \ + NLOHMANN_JSON_PASTE62, \ + NLOHMANN_JSON_PASTE61, \ + NLOHMANN_JSON_PASTE60, \ + NLOHMANN_JSON_PASTE59, \ + NLOHMANN_JSON_PASTE58, \ + NLOHMANN_JSON_PASTE57, \ + NLOHMANN_JSON_PASTE56, \ + NLOHMANN_JSON_PASTE55, \ + NLOHMANN_JSON_PASTE54, \ + NLOHMANN_JSON_PASTE53, \ + NLOHMANN_JSON_PASTE52, \ + NLOHMANN_JSON_PASTE51, \ + NLOHMANN_JSON_PASTE50, \ + NLOHMANN_JSON_PASTE49, \ + NLOHMANN_JSON_PASTE48, \ + NLOHMANN_JSON_PASTE47, \ + NLOHMANN_JSON_PASTE46, \ + NLOHMANN_JSON_PASTE45, \ + NLOHMANN_JSON_PASTE44, \ + NLOHMANN_JSON_PASTE43, \ + NLOHMANN_JSON_PASTE42, \ + NLOHMANN_JSON_PASTE41, \ + NLOHMANN_JSON_PASTE40, \ + NLOHMANN_JSON_PASTE39, \ + NLOHMANN_JSON_PASTE38, \ + NLOHMANN_JSON_PASTE37, \ + NLOHMANN_JSON_PASTE36, \ + NLOHMANN_JSON_PASTE35, \ + NLOHMANN_JSON_PASTE34, \ + NLOHMANN_JSON_PASTE33, \ + NLOHMANN_JSON_PASTE32, \ + NLOHMANN_JSON_PASTE31, \ + NLOHMANN_JSON_PASTE30, \ + NLOHMANN_JSON_PASTE29, \ + NLOHMANN_JSON_PASTE28, \ + NLOHMANN_JSON_PASTE27, \ + NLOHMANN_JSON_PASTE26, \ + NLOHMANN_JSON_PASTE25, \ + NLOHMANN_JSON_PASTE24, \ + NLOHMANN_JSON_PASTE23, \ + NLOHMANN_JSON_PASTE22, \ + NLOHMANN_JSON_PASTE21, \ + NLOHMANN_JSON_PASTE20, \ + NLOHMANN_JSON_PASTE19, \ + NLOHMANN_JSON_PASTE18, \ + NLOHMANN_JSON_PASTE17, \ + NLOHMANN_JSON_PASTE16, \ + NLOHMANN_JSON_PASTE15, \ + NLOHMANN_JSON_PASTE14, \ + NLOHMANN_JSON_PASTE13, \ + NLOHMANN_JSON_PASTE12, \ + NLOHMANN_JSON_PASTE11, \ + NLOHMANN_JSON_PASTE10, \ + NLOHMANN_JSON_PASTE9, \ + NLOHMANN_JSON_PASTE8, \ + NLOHMANN_JSON_PASTE7, \ + NLOHMANN_JSON_PASTE6, \ + NLOHMANN_JSON_PASTE5, \ + NLOHMANN_JSON_PASTE4, \ + NLOHMANN_JSON_PASTE3, \ + NLOHMANN_JSON_PASTE2, \ + NLOHMANN_JSON_PASTE1)(__VA_ARGS__)) +#define NLOHMANN_JSON_PASTE2(func, v1) func(v1) +#define NLOHMANN_JSON_PASTE3(func, v1, v2) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2) +#define NLOHMANN_JSON_PASTE4(func, v1, v2, v3) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3) +#define NLOHMANN_JSON_PASTE5(func, v1, v2, v3, v4) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4) +#define NLOHMANN_JSON_PASTE6(func, v1, v2, v3, v4, v5) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5) +#define NLOHMANN_JSON_PASTE7(func, v1, v2, v3, v4, v5, v6) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE6(func, v2, v3, v4, v5, v6) +#define NLOHMANN_JSON_PASTE8(func, v1, v2, v3, v4, v5, v6, v7) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE7(func, v2, v3, v4, v5, v6, v7) +#define NLOHMANN_JSON_PASTE9(func, v1, v2, v3, v4, v5, v6, v7, v8) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE8(func, v2, v3, v4, v5, v6, v7, v8) +#define NLOHMANN_JSON_PASTE10(func, v1, v2, v3, v4, v5, v6, v7, v8, v9) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE9(func, v2, v3, v4, v5, v6, v7, v8, v9) +#define NLOHMANN_JSON_PASTE11(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE10(func, v2, v3, v4, v5, v6, v7, v8, v9, v10) +#define NLOHMANN_JSON_PASTE12(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE11(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) +#define NLOHMANN_JSON_PASTE13(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE12(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) +#define NLOHMANN_JSON_PASTE14(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE13(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) +#define NLOHMANN_JSON_PASTE15(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE14(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) +#define NLOHMANN_JSON_PASTE16(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE15(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) +#define NLOHMANN_JSON_PASTE17(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE16(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) +#define NLOHMANN_JSON_PASTE18(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE17(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) +#define NLOHMANN_JSON_PASTE19(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE18(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) +#define NLOHMANN_JSON_PASTE20(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE19(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) +#define NLOHMANN_JSON_PASTE21(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE20(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) +#define NLOHMANN_JSON_PASTE22(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE21(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) +#define NLOHMANN_JSON_PASTE23(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE22(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) +#define NLOHMANN_JSON_PASTE24(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE23(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) +#define NLOHMANN_JSON_PASTE25(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE24(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) +#define NLOHMANN_JSON_PASTE26(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE25(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) +#define NLOHMANN_JSON_PASTE27(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE26(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) +#define NLOHMANN_JSON_PASTE28(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE27(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) +#define NLOHMANN_JSON_PASTE29(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE28(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) +#define NLOHMANN_JSON_PASTE30(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE29(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) +#define NLOHMANN_JSON_PASTE31(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE30(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) +#define NLOHMANN_JSON_PASTE32(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE31(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) +#define NLOHMANN_JSON_PASTE33(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE32(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) +#define NLOHMANN_JSON_PASTE34(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE33(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) +#define NLOHMANN_JSON_PASTE35(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE34(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) +#define NLOHMANN_JSON_PASTE36(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE35(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) +#define NLOHMANN_JSON_PASTE37(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE36(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) +#define NLOHMANN_JSON_PASTE38(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE37(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) +#define NLOHMANN_JSON_PASTE39(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE38(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) +#define NLOHMANN_JSON_PASTE40(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE39(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) +#define NLOHMANN_JSON_PASTE41(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE40(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) +#define NLOHMANN_JSON_PASTE42(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE41(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) +#define NLOHMANN_JSON_PASTE43(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE42(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) +#define NLOHMANN_JSON_PASTE44(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE43(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) +#define NLOHMANN_JSON_PASTE45(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE44(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) +#define NLOHMANN_JSON_PASTE46(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE45(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) +#define NLOHMANN_JSON_PASTE47(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE46(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) +#define NLOHMANN_JSON_PASTE48(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE47(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) +#define NLOHMANN_JSON_PASTE49(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE48(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) +#define NLOHMANN_JSON_PASTE50(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE49(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) +#define NLOHMANN_JSON_PASTE51(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE50(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) +#define NLOHMANN_JSON_PASTE52(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE51(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) +#define NLOHMANN_JSON_PASTE53(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE52(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) +#define NLOHMANN_JSON_PASTE54(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE53(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) +#define NLOHMANN_JSON_PASTE55(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE54(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) +#define NLOHMANN_JSON_PASTE56(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE55(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) +#define NLOHMANN_JSON_PASTE57(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE56(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) +#define NLOHMANN_JSON_PASTE58(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE57(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) +#define NLOHMANN_JSON_PASTE59(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE58(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) +#define NLOHMANN_JSON_PASTE60(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE59(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) +#define NLOHMANN_JSON_PASTE61(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE60(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) +#define NLOHMANN_JSON_PASTE62(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE61(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) +#define NLOHMANN_JSON_PASTE63(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE62(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) +#define NLOHMANN_JSON_PASTE64(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE63(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) + +#define NLOHMANN_JSON_TO(v1) nlohmann_json_j[#v1] = nlohmann_json_t.v1; +#define NLOHMANN_JSON_FROM(v1) nlohmann_json_j.at(#v1).get_to(nlohmann_json_t.v1); +#define NLOHMANN_JSON_FROM_WITH_DEFAULT(v1) nlohmann_json_t.v1 = nlohmann_json_j.value(#v1, nlohmann_json_default_obj.v1); + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_INTRUSIVE +@since version 3.9.0 +*/ +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...) \ + friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(Type, ...) \ + friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { Type nlohmann_json_default_obj; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE +@since version 3.9.0 +*/ +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Type, ...) \ + inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(Type, ...) \ + inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { Type nlohmann_json_default_obj; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + + +// inspired from https://stackoverflow.com/a/26745591 +// allows to call any std function as if (e.g. with begin): +// using std::begin; begin(x); +// +// it allows using the detected idiom to retrieve the return type +// of such an expression +#define NLOHMANN_CAN_CALL_STD_FUNC_IMPL(std_name) \ + namespace detail { \ + using std::std_name; \ + \ + template \ + using result_of_##std_name = decltype(std_name(std::declval()...)); \ + } \ + \ + namespace detail2 { \ + struct std_name##_tag \ + { \ + }; \ + \ + template \ + std_name##_tag std_name(T&&...); \ + \ + template \ + using result_of_##std_name = decltype(std_name(std::declval()...)); \ + \ + template \ + struct would_call_std_##std_name \ + { \ + static constexpr auto const value = ::nlohmann::detail:: \ + is_detected_exact::value; \ + }; \ + } /* namespace detail2 */ \ + \ + template \ + struct would_call_std_##std_name : detail2::would_call_std_##std_name \ + { \ + } + +#ifndef JSON_USE_IMPLICIT_CONVERSIONS + #define JSON_USE_IMPLICIT_CONVERSIONS 1 +#endif + +#if JSON_USE_IMPLICIT_CONVERSIONS + #define JSON_EXPLICIT +#else + #define JSON_EXPLICIT explicit +#endif + +#ifndef JSON_DIAGNOSTICS + #define JSON_DIAGNOSTICS 0 +#endif + +#ifndef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON + #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0 +#endif + +#ifndef JSON_DISABLE_ENUM_SERIALIZATION + #define JSON_DISABLE_ENUM_SERIALIZATION 0 +#endif + +#if JSON_HAS_THREE_WAY_COMPARISON + #include // partial_ordering +#endif + +namespace nlohmann +{ +namespace detail +{ +/////////////////////////// +// JSON type enumeration // +/////////////////////////// + +/*! +@brief the JSON type enumeration + +This enumeration collects the different JSON types. It is internally used to +distinguish the stored values, and the functions @ref basic_json::is_null(), +@ref basic_json::is_object(), @ref basic_json::is_array(), +@ref basic_json::is_string(), @ref basic_json::is_boolean(), +@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), +@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), +@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and +@ref basic_json::is_structured() rely on it. + +@note There are three enumeration entries (number_integer, number_unsigned, and +number_float), because the library distinguishes these three types for numbers: +@ref basic_json::number_unsigned_t is used for unsigned integers, +@ref basic_json::number_integer_t is used for signed integers, and +@ref basic_json::number_float_t is used for floating-point numbers or to +approximate integers which do not fit in the limits of their respective type. + +@sa see @ref basic_json::basic_json(const value_t value_type) -- create a JSON +value with the default value for a given type + +@since version 1.0.0 +*/ +enum class value_t : std::uint8_t +{ + null, ///< null value + object, ///< object (unordered set of name/value pairs) + array, ///< array (ordered collection of values) + string, ///< string value + boolean, ///< boolean value + number_integer, ///< number value (signed integer) + number_unsigned, ///< number value (unsigned integer) + number_float, ///< number value (floating-point) + binary, ///< binary array (ordered collection of bytes) + discarded ///< discarded by the parser callback function +}; + +/*! +@brief comparison operator for JSON types + +Returns an ordering that is similar to Python: +- order: null < boolean < number < object < array < string < binary +- furthermore, each type is not smaller than itself +- discarded values are not comparable +- binary is represented as a b"" string in python and directly comparable to a + string; however, making a binary array directly comparable with a string would + be surprising behavior in a JSON file. + +@since version 1.0.0 +*/ +#if JSON_HAS_THREE_WAY_COMPARISON + inline std::partial_ordering operator<=>(const value_t lhs, const value_t rhs) noexcept // *NOPAD* +#else + inline bool operator<(const value_t lhs, const value_t rhs) noexcept +#endif +{ + static constexpr std::array order = {{ + 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, + 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */, + 6 /* binary */ + } + }; + + const auto l_index = static_cast(lhs); + const auto r_index = static_cast(rhs); +#if JSON_HAS_THREE_WAY_COMPARISON + if (l_index < order.size() && r_index < order.size()) + { + return order[l_index] <=> order[r_index]; // *NOPAD* + } + return std::partial_ordering::unordered; +#else + return l_index < order.size() && r_index < order.size() && order[l_index] < order[r_index]; +#endif +} + +// GCC selects the built-in operator< over an operator rewritten from +// a user-defined spaceship operator +// Clang, MSVC, and ICC select the rewritten candidate +// (see GCC bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105200) +#if JSON_HAS_THREE_WAY_COMPARISON && defined(__GNUC__) +inline bool operator<(const value_t lhs, const value_t rhs) noexcept +{ + return std::is_lt(lhs <=> rhs); // *NOPAD* +} +#endif +} // namespace detail +} // namespace nlohmann + +// #include + + +// #include + + +namespace nlohmann +{ +namespace detail +{ + +/*! +@brief replace all occurrences of a substring by another string + +@param[in,out] s the string to manipulate; changed so that all + occurrences of @a f are replaced with @a t +@param[in] f the substring to replace with @a t +@param[in] t the string to replace @a f + +@pre The search string @a f must not be empty. **This precondition is +enforced with an assertion.** + +@since version 2.0.0 +*/ +template +inline void replace_substring(StringType& s, const StringType& f, + const StringType& t) +{ + JSON_ASSERT(!f.empty()); + for (auto pos = s.find(f); // find first occurrence of f + pos != StringType::npos; // make sure f was found + s.replace(pos, f.size(), t), // replace with t, and + pos = s.find(f, pos + t.size())) // find next occurrence of f + {} +} + +/*! + * @brief string escaping as described in RFC 6901 (Sect. 4) + * @param[in] s string to escape + * @return escaped string + * + * Note the order of escaping "~" to "~0" and "/" to "~1" is important. + */ +template +inline StringType escape(StringType s) +{ + replace_substring(s, StringType{"~"}, StringType{"~0"}); + replace_substring(s, StringType{"/"}, StringType{"~1"}); + return s; +} + +/*! + * @brief string unescaping as described in RFC 6901 (Sect. 4) + * @param[in] s string to unescape + * @return unescaped string + * + * Note the order of escaping "~1" to "/" and "~0" to "~" is important. + */ +template +static void unescape(StringType& s) +{ + replace_substring(s, StringType{"~1"}, StringType{"/"}); + replace_substring(s, StringType{"~0"}, StringType{"~"}); +} + +} // namespace detail +} // namespace nlohmann + +// #include + + +#include // size_t + +namespace nlohmann +{ +namespace detail +{ +/// struct to capture the start position of the current token +struct position_t +{ + /// the total number of characters read + std::size_t chars_read_total = 0; + /// the number of characters read in the current line + std::size_t chars_read_current_line = 0; + /// the number of lines read + std::size_t lines_read = 0; + + /// conversion to size_t to preserve SAX interface + constexpr operator size_t() const + { + return chars_read_total; + } +}; + +} // namespace detail +} // namespace nlohmann + +// #include + +// #include + + +#include // size_t +#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type +#include // index_sequence, make_index_sequence, index_sequence_for + +// #include + + +namespace nlohmann +{ +namespace detail +{ + +template +using uncvref_t = typename std::remove_cv::type>::type; + +#ifdef JSON_HAS_CPP_14 + +// the following utilities are natively available in C++14 +using std::enable_if_t; +using std::index_sequence; +using std::make_index_sequence; +using std::index_sequence_for; + +#else + +// alias templates to reduce boilerplate +template +using enable_if_t = typename std::enable_if::type; + +// The following code is taken from https://github.com/abseil/abseil-cpp/blob/10cb35e459f5ecca5b2ff107635da0bfa41011b4/absl/utility/utility.h +// which is part of Google Abseil (https://github.com/abseil/abseil-cpp), licensed under the Apache License 2.0. + +//// START OF CODE FROM GOOGLE ABSEIL + +// integer_sequence +// +// Class template representing a compile-time integer sequence. An instantiation +// of `integer_sequence` has a sequence of integers encoded in its +// type through its template arguments (which is a common need when +// working with C++11 variadic templates). `absl::integer_sequence` is designed +// to be a drop-in replacement for C++14's `std::integer_sequence`. +// +// Example: +// +// template< class T, T... Ints > +// void user_function(integer_sequence); +// +// int main() +// { +// // user_function's `T` will be deduced to `int` and `Ints...` +// // will be deduced to `0, 1, 2, 3, 4`. +// user_function(make_integer_sequence()); +// } +template +struct integer_sequence +{ + using value_type = T; + static constexpr std::size_t size() noexcept + { + return sizeof...(Ints); + } +}; + +// index_sequence +// +// A helper template for an `integer_sequence` of `size_t`, +// `absl::index_sequence` is designed to be a drop-in replacement for C++14's +// `std::index_sequence`. +template +using index_sequence = integer_sequence; + +namespace utility_internal +{ + +template +struct Extend; + +// Note that SeqSize == sizeof...(Ints). It's passed explicitly for efficiency. +template +struct Extend, SeqSize, 0> +{ + using type = integer_sequence < T, Ints..., (Ints + SeqSize)... >; +}; + +template +struct Extend, SeqSize, 1> +{ + using type = integer_sequence < T, Ints..., (Ints + SeqSize)..., 2 * SeqSize >; +}; + +// Recursion helper for 'make_integer_sequence'. +// 'Gen::type' is an alias for 'integer_sequence'. +template +struct Gen +{ + using type = + typename Extend < typename Gen < T, N / 2 >::type, N / 2, N % 2 >::type; +}; + +template +struct Gen +{ + using type = integer_sequence; +}; + +} // namespace utility_internal + +// Compile-time sequences of integers + +// make_integer_sequence +// +// This template alias is equivalent to +// `integer_sequence`, and is designed to be a drop-in +// replacement for C++14's `std::make_integer_sequence`. +template +using make_integer_sequence = typename utility_internal::Gen::type; + +// make_index_sequence +// +// This template alias is equivalent to `index_sequence<0, 1, ..., N-1>`, +// and is designed to be a drop-in replacement for C++14's +// `std::make_index_sequence`. +template +using make_index_sequence = make_integer_sequence; + +// index_sequence_for +// +// Converts a typename pack into an index sequence of the same length, and +// is designed to be a drop-in replacement for C++14's +// `std::index_sequence_for()` +template +using index_sequence_for = make_index_sequence; + +//// END OF CODE FROM GOOGLE ABSEIL + +#endif + +// dispatch utility (taken from ranges-v3) +template struct priority_tag : priority_tag < N - 1 > {}; +template<> struct priority_tag<0> {}; + +// taken from ranges-v3 +template +struct static_const +{ + static constexpr T value{}; +}; + +#ifndef JSON_HAS_CPP_17 + + template + constexpr T static_const::value; // NOLINT(readability-redundant-declaration) + +#endif + +} // namespace detail +} // namespace nlohmann + +// #include + + +#include // numeric_limits +#include // false_type, is_constructible, is_integral, is_same, true_type +#include // declval +#include // tuple + +// #include + + +// #include + + +#include // random_access_iterator_tag + +// #include + +// #include + + +namespace nlohmann +{ +namespace detail +{ +template +struct iterator_types {}; + +template +struct iterator_types < + It, + void_t> +{ + using difference_type = typename It::difference_type; + using value_type = typename It::value_type; + using pointer = typename It::pointer; + using reference = typename It::reference; + using iterator_category = typename It::iterator_category; +}; + +// This is required as some compilers implement std::iterator_traits in a way that +// doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341. +template +struct iterator_traits +{ +}; + +template +struct iterator_traits < T, enable_if_t < !std::is_pointer::value >> + : iterator_types +{ +}; + +template +struct iterator_traits::value>> +{ + using iterator_category = std::random_access_iterator_tag; + using value_type = T; + using difference_type = ptrdiff_t; + using pointer = T*; + using reference = T&; +}; +} // namespace detail +} // namespace nlohmann + +// #include + + +// #include + + +namespace nlohmann +{ +NLOHMANN_CAN_CALL_STD_FUNC_IMPL(begin); +} // namespace nlohmann + +// #include + + +// #include + + +namespace nlohmann +{ +NLOHMANN_CAN_CALL_STD_FUNC_IMPL(end); +} // namespace nlohmann + +// #include + +// #include + +// #include +#ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_ +#define INCLUDE_NLOHMANN_JSON_FWD_HPP_ + +#include // int64_t, uint64_t +#include // map +#include // allocator +#include // string +#include // vector + +/*! +@brief namespace for Niels Lohmann +@see https://github.com/nlohmann +@since version 1.0.0 +*/ +namespace nlohmann +{ +/*! +@brief default JSONSerializer template argument + +This serializer ignores the template arguments and uses ADL +([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl)) +for serialization. +*/ +template +struct adl_serializer; + +/// a class to store JSON values +/// @sa https://json.nlohmann.me/api/basic_json/ +template class ObjectType = + std::map, + template class ArrayType = std::vector, + class StringType = std::string, class BooleanType = bool, + class NumberIntegerType = std::int64_t, + class NumberUnsignedType = std::uint64_t, + class NumberFloatType = double, + template class AllocatorType = std::allocator, + template class JSONSerializer = + adl_serializer, + class BinaryType = std::vector> +class basic_json; + +/// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document +/// @sa https://json.nlohmann.me/api/json_pointer/ +template +class json_pointer; + +/*! +@brief default specialization +@sa https://json.nlohmann.me/api/json/ +*/ +using json = basic_json<>; + +/// @brief a minimal map-like container that preserves insertion order +/// @sa https://json.nlohmann.me/api/ordered_map/ +template +struct ordered_map; + +/// @brief specialization that maintains the insertion order of object keys +/// @sa https://json.nlohmann.me/api/ordered_json/ +using ordered_json = basic_json; + +} // namespace nlohmann + +#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_ + + +namespace nlohmann +{ +/*! +@brief detail namespace with internal helper functions + +This namespace collects functions that should not be exposed, +implementations of some @ref basic_json methods, and meta-programming helpers. + +@since version 2.1.0 +*/ +namespace detail +{ +///////////// +// helpers // +///////////// + +// Note to maintainers: +// +// Every trait in this file expects a non CV-qualified type. +// The only exceptions are in the 'aliases for detected' section +// (i.e. those of the form: decltype(T::member_function(std::declval()))) +// +// In this case, T has to be properly CV-qualified to constraint the function arguments +// (e.g. to_json(BasicJsonType&, const T&)) + +template struct is_basic_json : std::false_type {}; + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +struct is_basic_json : std::true_type {}; + +// used by exceptions create() member functions +// true_type for pointer to possibly cv-qualified basic_json or std::nullptr_t +// false_type otherwise +template +struct is_basic_json_context : + std::integral_constant < bool, + is_basic_json::type>::type>::value + || std::is_same::value > +{}; + +////////////////////// +// json_ref helpers // +////////////////////// + +template +class json_ref; + +template +struct is_json_ref : std::false_type {}; + +template +struct is_json_ref> : std::true_type {}; + +////////////////////////// +// aliases for detected // +////////////////////////// + +template +using mapped_type_t = typename T::mapped_type; + +template +using key_type_t = typename T::key_type; + +template +using value_type_t = typename T::value_type; + +template +using difference_type_t = typename T::difference_type; + +template +using pointer_t = typename T::pointer; + +template +using reference_t = typename T::reference; + +template +using iterator_category_t = typename T::iterator_category; + +template +using to_json_function = decltype(T::to_json(std::declval()...)); + +template +using from_json_function = decltype(T::from_json(std::declval()...)); + +template +using get_template_function = decltype(std::declval().template get()); + +// trait checking if JSONSerializer::from_json(json const&, udt&) exists +template +struct has_from_json : std::false_type {}; + +// trait checking if j.get is valid +// use this trait instead of std::is_constructible or std::is_convertible, +// both rely on, or make use of implicit conversions, and thus fail when T +// has several constructors/operator= (see https://github.com/nlohmann/json/issues/958) +template +struct is_getable +{ + static constexpr bool value = is_detected::value; +}; + +template +struct has_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +// This trait checks if JSONSerializer::from_json(json const&) exists +// this overload is used for non-default-constructible user-defined-types +template +struct has_non_default_from_json : std::false_type {}; + +template +struct has_non_default_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +// This trait checks if BasicJsonType::json_serializer::to_json exists +// Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion. +template +struct has_to_json : std::false_type {}; + +template +struct has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +template +using detect_key_compare = typename T::key_compare; + +template +struct has_key_compare : std::integral_constant::value> {}; + +// obtains the actual object key comparator +template +struct actual_object_comparator +{ + using object_t = typename BasicJsonType::object_t; + using object_comparator_t = typename BasicJsonType::default_object_comparator_t; + using type = typename std::conditional < has_key_compare::value, + typename object_t::key_compare, object_comparator_t>::type; +}; + +template +using actual_object_comparator_t = typename actual_object_comparator::type; + +/////////////////// +// is_ functions // +/////////////////// + +// https://en.cppreference.com/w/cpp/types/conjunction +template struct conjunction : std::true_type { }; +template struct conjunction : B { }; +template +struct conjunction +: std::conditional(B::value), conjunction, B>::type {}; + +// https://en.cppreference.com/w/cpp/types/negation +template struct negation : std::integral_constant < bool, !B::value > { }; + +// Reimplementation of is_constructible and is_default_constructible, due to them being broken for +// std::pair and std::tuple until LWG 2367 fix (see https://cplusplus.github.io/LWG/lwg-defects.html#2367). +// This causes compile errors in e.g. clang 3.5 or gcc 4.9. +template +struct is_default_constructible : std::is_default_constructible {}; + +template +struct is_default_constructible> + : conjunction, is_default_constructible> {}; + +template +struct is_default_constructible> + : conjunction, is_default_constructible> {}; + +template +struct is_default_constructible> + : conjunction...> {}; + +template +struct is_default_constructible> + : conjunction...> {}; + + +template +struct is_constructible : std::is_constructible {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + + +template +struct is_iterator_traits : std::false_type {}; + +template +struct is_iterator_traits> +{ + private: + using traits = iterator_traits; + + public: + static constexpr auto value = + is_detected::value && + is_detected::value && + is_detected::value && + is_detected::value && + is_detected::value; +}; + +template +struct is_range +{ + private: + using t_ref = typename std::add_lvalue_reference::type; + + using iterator = detected_t; + using sentinel = detected_t; + + // to be 100% correct, it should use https://en.cppreference.com/w/cpp/iterator/input_or_output_iterator + // and https://en.cppreference.com/w/cpp/iterator/sentinel_for + // but reimplementing these would be too much work, as a lot of other concepts are used underneath + static constexpr auto is_iterator_begin = + is_iterator_traits>::value; + + public: + static constexpr bool value = !std::is_same::value && !std::is_same::value && is_iterator_begin; +}; + +template +using iterator_t = enable_if_t::value, result_of_begin())>>; + +template +using range_value_t = value_type_t>>; + +// The following implementation of is_complete_type is taken from +// https://blogs.msdn.microsoft.com/vcblog/2015/12/02/partial-support-for-expression-sfinae-in-vs-2015-update-1/ +// and is written by Xiang Fan who agreed to using it in this library. + +template +struct is_complete_type : std::false_type {}; + +template +struct is_complete_type : std::true_type {}; + +template +struct is_compatible_object_type_impl : std::false_type {}; + +template +struct is_compatible_object_type_impl < + BasicJsonType, CompatibleObjectType, + enable_if_t < is_detected::value&& + is_detected::value >> +{ + using object_t = typename BasicJsonType::object_t; + + // macOS's is_constructible does not play well with nonesuch... + static constexpr bool value = + is_constructible::value && + is_constructible::value; +}; + +template +struct is_compatible_object_type + : is_compatible_object_type_impl {}; + +template +struct is_constructible_object_type_impl : std::false_type {}; + +template +struct is_constructible_object_type_impl < + BasicJsonType, ConstructibleObjectType, + enable_if_t < is_detected::value&& + is_detected::value >> +{ + using object_t = typename BasicJsonType::object_t; + + static constexpr bool value = + (is_default_constructible::value && + (std::is_move_assignable::value || + std::is_copy_assignable::value) && + (is_constructible::value && + std::is_same < + typename object_t::mapped_type, + typename ConstructibleObjectType::mapped_type >::value)) || + (has_from_json::value || + has_non_default_from_json < + BasicJsonType, + typename ConstructibleObjectType::mapped_type >::value); +}; + +template +struct is_constructible_object_type + : is_constructible_object_type_impl {}; + +template +struct is_compatible_string_type +{ + static constexpr auto value = + is_constructible::value; +}; + +template +struct is_constructible_string_type +{ + // launder type through decltype() to fix compilation failure on ICPC +#ifdef __INTEL_COMPILER + using laundered_type = decltype(std::declval()); +#else + using laundered_type = ConstructibleStringType; +#endif + + static constexpr auto value = + is_constructible::value; +}; + +template +struct is_compatible_array_type_impl : std::false_type {}; + +template +struct is_compatible_array_type_impl < + BasicJsonType, CompatibleArrayType, + enable_if_t < + is_detected::value&& + is_iterator_traits>>::value&& +// special case for types like std::filesystem::path whose iterator's value_type are themselves +// c.f. https://github.com/nlohmann/json/pull/3073 + !std::is_same>::value >> +{ + static constexpr bool value = + is_constructible>::value; +}; + +template +struct is_compatible_array_type + : is_compatible_array_type_impl {}; + +template +struct is_constructible_array_type_impl : std::false_type {}; + +template +struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t::value >> + : std::true_type {}; + +template +struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t < !std::is_same::value&& + !is_compatible_string_type::value&& + is_default_constructible::value&& +(std::is_move_assignable::value || + std::is_copy_assignable::value)&& +is_detected::value&& +is_iterator_traits>>::value&& +is_detected::value&& +// special case for types like std::filesystem::path whose iterator's value_type are themselves +// c.f. https://github.com/nlohmann/json/pull/3073 +!std::is_same>::value&& + is_complete_type < + detected_t>::value >> +{ + using value_type = range_value_t; + + static constexpr bool value = + std::is_same::value || + has_from_json::value || + has_non_default_from_json < + BasicJsonType, + value_type >::value; +}; + +template +struct is_constructible_array_type + : is_constructible_array_type_impl {}; + +template +struct is_compatible_integer_type_impl : std::false_type {}; + +template +struct is_compatible_integer_type_impl < + RealIntegerType, CompatibleNumberIntegerType, + enable_if_t < std::is_integral::value&& + std::is_integral::value&& + !std::is_same::value >> +{ + // is there an assert somewhere on overflows? + using RealLimits = std::numeric_limits; + using CompatibleLimits = std::numeric_limits; + + static constexpr auto value = + is_constructible::value && + CompatibleLimits::is_integer && + RealLimits::is_signed == CompatibleLimits::is_signed; +}; + +template +struct is_compatible_integer_type + : is_compatible_integer_type_impl {}; + +template +struct is_compatible_type_impl: std::false_type {}; + +template +struct is_compatible_type_impl < + BasicJsonType, CompatibleType, + enable_if_t::value >> +{ + static constexpr bool value = + has_to_json::value; +}; + +template +struct is_compatible_type + : is_compatible_type_impl {}; + +template +struct is_constructible_tuple : std::false_type {}; + +template +struct is_constructible_tuple> : conjunction...> {}; + +template +struct is_json_iterator_of : std::false_type {}; + +template +struct is_json_iterator_of : std::true_type {}; + +template +struct is_json_iterator_of : std::true_type +{}; + +// checks if a given type T is a template specialization of Primary +template