From 3f50c8dd9ae06fac88d11ca32a1fa722ad5ebbd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=B9=BF?= Date: Fri, 24 Mar 2023 19:34:36 +0800 Subject: [PATCH] add --- .vscode/c_cpp_properties.json | 19 + .vscode/settings.json | 65 + HkStreamer.cpp | 109 + HkStreamer.o | Bin 0 -> 18176 bytes include/DataType.h | 111 + include/DecodeCardSdk.h | 451 + include/HCNetSDK.h | 52626 ++++++++++++++++++++++ include/HkStreamer.h | 38 + include/plaympeg4.h | 760 + lib/HCNetSDKCom/libAudioIntercom.so | Bin 0 -> 1971631 bytes lib/HCNetSDKCom/libHCAlarm.so | Bin 0 -> 530432 bytes lib/HCNetSDKCom/libHCCoreDevCfg.so | Bin 0 -> 486600 bytes lib/HCNetSDKCom/libHCDisplay.so | Bin 0 -> 620512 bytes lib/HCNetSDKCom/libHCGeneralCfgMgr.so | Bin 0 -> 1485656 bytes lib/HCNetSDKCom/libHCIndustry.so | Bin 0 -> 997880 bytes lib/HCNetSDKCom/libHCPlayBack.so | Bin 0 -> 379152 bytes lib/HCNetSDKCom/libHCPreview.so | Bin 0 -> 263976 bytes lib/HCNetSDKCom/libHCVoiceTalk.so | Bin 0 -> 246352 bytes lib/HCNetSDKCom/libStreamTransClient.so | Bin 0 -> 422672 bytes lib/HCNetSDKCom/libSystemTransform.so | Bin 0 -> 882519 bytes lib/HCNetSDKCom/libanalyzedata.so | Bin 0 -> 348664 bytes lib/HCNetSDKCom/libiconv2.so | Bin 0 -> 1268171 bytes lib/HCNetSDK_Log_Switch.xml | 12 + lib/libAudioRender.so | Bin 0 -> 31120 bytes lib/libHCCore.so | Bin 0 -> 2330712 bytes lib/libNPQos.so | Bin 0 -> 2024584 bytes lib/libPlayCtrl.so | Bin 0 -> 4705408 bytes lib/libSuperRender.so | Bin 0 -> 1032864 bytes lib/libcrypto.so.1.1 | Bin 0 -> 3106935 bytes lib/libhcnetsdk.so | Bin 0 -> 548336 bytes lib/libhpr.so | Bin 0 -> 400144 bytes lib/libopenal.so.1 | Bin 0 -> 1956138 bytes lib/libssl.so.1.1 | Bin 0 -> 660083 bytes lib/libz.so | Bin 0 -> 126954 bytes 34 files changed, 54191 insertions(+) create mode 100644 .vscode/c_cpp_properties.json create mode 100644 .vscode/settings.json create mode 100644 HkStreamer.cpp create mode 100755 HkStreamer.o create mode 100644 include/DataType.h create mode 100644 include/DecodeCardSdk.h create mode 100644 include/HCNetSDK.h create mode 100644 include/HkStreamer.h create mode 100644 include/plaympeg4.h create mode 100644 lib/HCNetSDKCom/libAudioIntercom.so create mode 100644 lib/HCNetSDKCom/libHCAlarm.so create mode 100644 lib/HCNetSDKCom/libHCCoreDevCfg.so create mode 100644 lib/HCNetSDKCom/libHCDisplay.so create mode 100644 lib/HCNetSDKCom/libHCGeneralCfgMgr.so create mode 100644 lib/HCNetSDKCom/libHCIndustry.so create mode 100644 lib/HCNetSDKCom/libHCPlayBack.so create mode 100644 lib/HCNetSDKCom/libHCPreview.so create mode 100644 lib/HCNetSDKCom/libHCVoiceTalk.so create mode 100644 lib/HCNetSDKCom/libStreamTransClient.so create mode 100644 lib/HCNetSDKCom/libSystemTransform.so create mode 100644 lib/HCNetSDKCom/libanalyzedata.so create mode 100644 lib/HCNetSDKCom/libiconv2.so create mode 100644 lib/HCNetSDK_Log_Switch.xml create mode 100644 lib/libAudioRender.so create mode 100644 lib/libHCCore.so create mode 100644 lib/libNPQos.so create mode 100644 lib/libPlayCtrl.so create mode 100644 lib/libSuperRender.so create mode 100644 lib/libcrypto.so.1.1 create mode 100644 lib/libhcnetsdk.so create mode 100644 lib/libhpr.so create mode 100644 lib/libopenal.so.1 create mode 100644 lib/libssl.so.1.1 create mode 100644 lib/libz.so diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..b4269a9 --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,19 @@ +{ + "configurations": [ + { + "name": "Mac", + "includePath": [ + "${workspaceFolder}/**" + ], + "defines": [], + "macFrameworkPath": [ + "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks" + ], + "compilerPath": "/usr/bin/clang", + "cStandard": "c17", + "cppStandard": "c++17", + "intelliSenseMode": "macos-clang-x64" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..e9a0125 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,65 @@ +{ + "files.associations": { + "__bit_reference": "cpp", + "__bits": "cpp", + "__config": "cpp", + "__debug": "cpp", + "__errc": "cpp", + "__hash_table": "cpp", + "__locale": "cpp", + "__mutex_base": "cpp", + "__node_handle": "cpp", + "__nullptr": "cpp", + "__split_buffer": "cpp", + "__string": "cpp", + "__threading_support": "cpp", + "__tuple": "cpp", + "array": "cpp", + "atomic": "cpp", + "bitset": "cpp", + "cctype": "cpp", + "chrono": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "compare": "cpp", + "complex": "cpp", + "concepts": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "exception": "cpp", + "initializer_list": "cpp", + "ios": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "list": "cpp", + "locale": "cpp", + "memory": "cpp", + "mutex": "cpp", + "new": "cpp", + "optional": "cpp", + "ostream": "cpp", + "ratio": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "string": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "typeinfo": "cpp", + "unordered_map": "cpp", + "variant": "cpp", + "vector": "cpp", + "algorithm": "cpp" + } +} \ No newline at end of file diff --git a/HkStreamer.cpp b/HkStreamer.cpp new file mode 100644 index 0000000..d71a224 --- /dev/null +++ b/HkStreamer.cpp @@ -0,0 +1,109 @@ +#include +#include +#include +#include +#include "HCNetSDK.h" +#include "HkStreamer.h" + + +void CALLBACK fPlayDataCallBack(LONG lPlayHandle, DWORD dwDataType, BYTE *pBuffer,DWORD dwBufSize,DWORD dwUser) +{ + if(dwBufSize>0){ + char pb[dwBufSize] = {0}; + memcpy(pb, pBuffer, dwBufSize); + std::cout.write(pb, dwBufSize); + } + int pos = NET_DVR_GetDownloadPos(lPlayHandle); + if (pos > 98) + { + fprintf(stderr, "pyd---Current Time:%d, data size:%d\n", time(NULL), dwBufSize); + printf("Play over!%d\n", pos); + } +} + +int login(LPLoginInfo loginInfo) +{ + NET_DVR_Init(); + long lUserID; + // login + NET_DVR_USER_LOGIN_INFO struLoginInfo = {0}; + struLoginInfo.bUseAsynLogin = false; + + struLoginInfo.wPort = 8000; + memcpy(struLoginInfo.sDeviceAddress, loginInfo->sDeviceAddress, NET_DVR_DEV_ADDRESS_MAX_LEN); + memcpy(struLoginInfo.sUserName, loginInfo->sUserName, NAME_LEN); + memcpy(struLoginInfo.sPassword, loginInfo->sPassword, NAME_LEN); + lUserID = NET_DVR_Login_V40(&struLoginInfo, nullptr); + return lUserID; +} +void cpTime(NET_DVR_TIME *nvrTime, StreamDate date){ + nvrTime->dwYear = date.dwYear; + nvrTime->dwMonth = date.dwMonth; + nvrTime->dwDay = date.dwDay; + nvrTime->dwHour = date.dwHour; + nvrTime->dwMinute = date.dwMinute; + nvrTime->dwSecond = date.dwSecond; +} +int playback(LPLoginInfo loginInfo, LPStream stream) +{ + long lUserID = login(loginInfo); + if (lUserID < 0) + { + printf("pyd1---Login error, %d\n", NET_DVR_GetLastError()); + return HPR_ERROR; + } + NET_DVR_VOD_PARA struVodPara = {0}; + StreamDate start = stream->start; + cpTime(&struVodPara.struBeginTime, start); + cpTime(&struVodPara.struEndTime, stream->end); + int hPlayback = NET_DVR_PlayBackByTime_V40(lUserID, &struVodPara); + if (hPlayback < 0) + { + printf("pyd1---PlayBack error, %d\n", NET_DVR_GetLastError()); + return HPR_ERROR; + } + + if (!NET_DVR_SetPlayDataCallBack(hPlayback, fPlayDataCallBack, 1)) + { + printf("NET_DVR_SetPlayDataCallBack fail!\n"); + } + + if (!NET_DVR_PlayBackControl(hPlayback, NET_DVR_PLAYSTART, 0, NULL)) + { + printf("play back control failed [%d]\n", NET_DVR_GetLastError()); + return HPR_ERROR; + } + + int pos = 0; + for (pos = 0; pos < 100 && pos >= 0; pos = NET_DVR_GetDownloadPos(hPlayback)) + { + sleep(10); + } + printf("have got %d\n", pos); + if (!NET_DVR_StopGetFile(hPlayback)) + { + printf("failed to stop get file [%d]\n", NET_DVR_GetLastError()); + return HPR_ERROR; + } + + printf("StopGetFile\n"); + if (pos < 0 || pos > 100) + { + printf("download err [%d]\n", NET_DVR_GetLastError()); + return HPR_ERROR; + } + else + { + return 0; + } + + // sleep(180); //˯3���� + NET_DVR_Logout_V30(lUserID); + // cleanup + NET_DVR_Cleanup(); + + return HPR_OK; +} +int main() +{ +} \ No newline at end of file diff --git a/HkStreamer.o b/HkStreamer.o new file mode 100755 index 0000000000000000000000000000000000000000..297ffb98eb93eed2df61d5a4ffd8c9563c595f66 GIT binary patch literal 18176 zcmeHP4{%#WdS6)yF%V<}3Fq*q5jk>~6fA6$7zYSQwv{|nC+K1)bpzo=mgHDLwp8gk z*jxjqCQNib(HsRP!*Db1mEMIbOv9C2!+(=xl5oc`hP$Km4tnk#v@+yq_&cbOyvL zn#7qn{+_rBe~@1!H(+ryCx3%23=mc zxEQ+rOey}9E{{dK8&_N&3)jY?{R4xwgH4UKjVnBU(x zO)eVPwl+L^&y)9k`u56WRBx&S`6C@lq|f1`{Fm?}IkjuI?{T^+&LHf3{HPx``+s&~ zBJy(I)4#s=Pntd$z3?CYxa-1&d*`=6R5nH6lgc9srARb z%Dx)BOzZufX6vR6W*`_^ti1crYA@r}A(|#3G~C zpcQNh#$sfgm$A2&c)yj5$MSfG6;Ht3nrJMN$J+X%R-S2(Z;SR9m);&sS^i`)o)o6J ztuNkhrmSGnGEHH&b*?kRkz{0BG-XASo$Fd+@%~6>up92Bth8kF`VOlp8c&(s!Bk`g zmET(L-yuxk@s+nGqgKQp_=8YP0!4}~O0mOQ5sD93A~9g4goS{iW}(5L8MGpUXiZ;Mhg3*2fzBkk#u~Ok%FuoBB zKcP!6rNOR|*pSMZkuX9J2i>WZvKMBgKP=X^w>7tPb(vRqR;aw$;HjU^Hh5Oz#M8J( zKPQevDXFo&0#qUDI0s{5h5k|AA-*H~m=JE*Sj+E4*PA1LqWcr+KCb2D^S*CAfZ^0B zeyOp6^P{Iz$?s@=zAtkBtvYnFpQ~KTW7dY#y@u0C8@`Z1&{H=2JR3glRSZ3g@Usmed>s=`_Zv<%UX_~% zqC+MDw+&b4N$D-K;dD>qROeMW^27IVLYlmE6oPR1d?Yy`yk3Y{45(jY{OkPe76m+vf+Dd zI6te9c&`oDU5((`G#i202+T&{|9u3EkrS21=-f9i7sA*zZdK$ajFBUihx6^qt^5^4 zxutL6Shd)T9Pzy*pPI}eE&Vz1bZeTLko>E}(=BOgT=G96o^C}``z3#fc)A5mjY<9~ z;_22iwMX(lAf9eHQ^S(~KJj#$m`X_gJH*p1W@@YCA0(b`EmHx>-%C8*Ql`9;{|51N zE19a3{GSp}w~#5fH%VGQB)$gMmF>v`tV`TNqG|6D3-?ru(qpKf;NwyX(%=Y4Nbnc7Lb8KNd zrc+;sa3gGd8-1M}=siYy=QHVngGPGe{`9&>Thso1BRd}zRd@ZZbUkUL50CmEH8Mud zNUwX{NFO&w#vN_xBfe)LN7VVP#}|IRtI+tfLh$KI9+=@4h#>@lj)R-G0(D(k~n7W7(n4b2*6; zaufljxrppxpho(QQU5bg`7W5W|D}oM}}e@VLiM+g*p?6X{MkCBOFZ}i>d+p^^_#jnG-^TcsnHb(l{CiJ81PoQID z?)M@ujh5u5;UrT z)&LDCv`e9Gpv!=6RcNn5>wq=^O(=9wp)n?pNqRkg6XJ52F>kca2LG)r8FMJAoOQU0wp`-Ua3KLgiKlFM}XC?a#VSCY2vgiT$Z8`O#3_rTnYjr11D8m6?ZHvh@}dl3-6p1LrbzzR8e-Ar!i`&4)egj zp%>ts=ccZ}NQ!PjLzn6n^zxy)1)`#S8`KG^5o#K+&f{nzbBV58B9KcMxr8^DXhLnXY1SY0PatKZ zf|34|gYgvvcGUmIQy??~4p885Jwv{0yz0L3yT&n)WmZ1|%WNzBK=n!L2Xgdyj*OuF zv`u?S_BY^UaS!E-J3n9C-@)RT{{*?vWMt=w&>f3$6oZSNr+Z9xKD1E|94E<@|HQk$ z81H%>$*4_ClhMy^?B8Ypn8x({q8lu1Jo31pDgk;9K*LS&Ni{x z>bzMbZ#GvJIo;7EtNJEJ>+1B*&(Z^@Ms|MY7-+b2C#-NUSdNn3T#k}*;El|}J@ZfnIq(iWi`=+{22J11J`?vKK~E;~nWf+J8-dvf%tqjMi~!Bo za~ei=49s!-5<}tI+S-th1!K5BG zas|hYb&q)RGPe!qB_X>=8*D}zik8-)Kpf7#`JQ;jPswrH2H_a2c3d!jUgaLgylTQ}ePBPzzmyboDy=WXC6JST;JsYV z4gbPby~b5@ebt$_Rt}5n&cFKiuef9hxgh&i{0#V|Nfb_Ge-nO7(LQR2@VTn*u4p;y zw6=`%n{!6yIvX6QnGkM>sQs(a{yXe?#)#9IR610TefaG~Y`Q@6zA8HMK8^#Pfc#t3 z{kSahaaV=ZAs_VQz53%^POby6&KfC}ZKbv5WstW)FYlwGHE(|zzJ=_YUDbb9(dMeT$LV*uGjsf|W#63J>Z-f@G{e<2GH*dLn_ZRin}Yk`rx$)eX47m0W+N~gf!PSmMqoAqvk{n$z-$EmS0cdQN%414{2dfO zgZ{bBFi+oXQDUCH(V|4}I5N>P8xns*^F)o}7b%kee)$5;YxVrMO8i|GJ-1WhcZ-j| z$i*eEKSr7>r8v+E?=%sHmeZsYe!VxiK~9BB)&+D zm&DJX;e>{vIpTe}dT$rfxLbjE4j0AQrSbhmIE97ud7NioS0dxUci>r{La01SE%-S~ z#AiEj^27HJ(xtQmKZlqZ=lg+|s{g}MzgkqfkwM~epO^VXVydVn?oa&#|1G$|0fy!Eq^Zk(T6M#$BpT4(upucr~S^2jg zOSN~H9F^#|=b|AM*bP;DebN2bfxA_4KYU2~Id?|CeN5y0Jv7&6T>6>WKM!EsIfs>O z^fl<0+F$Sp^xY-;^PA8=n=0>CPWZf>0KUZLm$UOKs9cwLQ^%k0&+~zwT~Q-=oM!z+ zQlGhLx)}wXQ!#VgSXoAYZ5g~%;x5syPq>^wR3~ypKce19FL#x>I;@{wOV% z^;CKLaZMR~v&3EEBmLkc=Wk(nhc1`DQ|ITTd&~Iw9&qZ1V_tiym={L9s!{*q{VY$E z@pD}ISu`UKKP{twstkTQ^*8j}fPRpabH1qBB8eB)k+>DW-7{ek(0=x7KRV1}YZ*Vc zm+_M+gMY7#9}!AgDQlpo#}g9M8(vJS&kWI)mlU>vgyZJ6SiCzJGs9LqnKFX|gCZ2~ zOT;2pB3S^bqtw!XzIfEy(YWfL}9c}2ZRn_sMGNY*b(yK2B;lTfffjJ-js0>sxv zqrzOmRN6t!rz6tROPsLO||S$`^dYnl&BRanQvn9Mf+^Ks7frLsSQU3_PnL5O`U}%T2`Y~wZJO5Y}eM` z6A!FXCly<_^ggD%2kauUZ*$7yR5RKHRREZqSH@^Fm(6v4wQuGwFJ2ui-Y{0Q_slf0 z$BR!1x|`gErHa)%o{Bed6$rWc_BB9rb7Lq$3!H)a29|fWt@GE{sW_l(MD$Lsg7&d4 zYG~h|Mk}OxHNPP-EI)R^)(ofSIAxfb4boka7TR`}h9S-EnH$ z8M&bm0OwV@RU7N5mlYK{bKBj2XKP(SlY}QV)Mo{|L9L{sy_~~7xkxf0JpFMi;@Q?e z;OQQSV$W|htRY`>Tdft`CZw!4nCcat@K8VeDQYE^1WVE>T=E5s30X1{3zC7(C1RHF z$N|ZNtOx7I!h;QbILerKl5skl!V~G$<6v(XPMA}sYCu#LoJR@4zGw)=$1U=V%1J-i zs3$xalKU{ymbkb4Pav9)p?eS>BV^+DTBbZ7qs3B}^F+UlA5BfLJ-`1ly@Zr(3Ad+$ z)CkUQ&+o}h-38jy&-VW~iCU&G=yWayl*JnU!UXZ)Wa zpuWfU{JzcqpTU9Q{>gS+uf4FPCg$z01A{bixuSK7fmp|rJdSlw2>#5M`_A~z}GUSWvKkikM{o1~+==^E1Qo`{I{76Ns=W(|GY93J; zc4w#D_w1^#YljoMp>!WwfgiV<#~->rxbAlQeXA7r + #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¸öÓ²ÅÌ(°üÀ¨16¸öÄÚÖÃSATAÓ²ÅÌ¡¢1¸öeSATAÓ²Å̺Í16¸öNFSÅÌ) */ +#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 //WIFIµÄSSIDºÅ³¤¶È +#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 //Ö§³Ö¹ã²¥²ÎÊýÅäÖõÄÀàÐÍÊýÁ¿ MP3¡¢MPEG2¡¢AAC +//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¸ö³µÎ» (´Ó×óµ½ÓÒ³µÎ» Êý×é0¡«3) + +#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 //×î´ó·þÎñÆ÷IDµÄ³¤¶È +#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 //GAMMA±íXÖáÈ¡Öµ¸öÊý +#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 SdkÖÐij¸öº¯ÊýÈë¿Ú +#define NET_DVR_LOADDSSDKFAILED 66 //ÔØÈ뵱ǰĿ¼ÏÂDSsdk³ö´í +#define NET_DVR_LOADDSSDKPROC_ERROR 67 //ÕÒ²»µ½DsSdkÖÐij¸öº¯ÊýÈë¿Ú +#define NET_DVR_DSSDK_ERROR 68 //µ÷ÓÃÓ²½âÂë¿âDsSdkÖÐij¸öº¯Êýʧ°Ü +#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Öз¢²¼³öÈ¥ÁË£¬ËùÒÔɾ²»µô¡£ºóÐøµÄ²úÆ·Õâ¸ö´íÎóÂëÓò»ÉÏ£© +#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 //´°¿Ú¿çÔ½Á˳©ÏÔÊä³ö¿ÚºÍ·Ç³©ÏÔÊä³ö¿Ú +#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 //´°¿Ú²»ÄÜͬʱ¿çLCDºÍLEDÊä³ö¿Ú +#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 //Éϲã×Ô¶¨ÒåIDµÄ³¤¶È×îС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 //LAN¿ÚIPºÍWAN¿ÚIP²»ÄÜ´¦ÓÚͬһÍø¶Î +#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 //·Ç´ÓÉ豸½ûÖ¹²åÈëͬ²½Ïß +//ÃñÓôíÎóÂ루1100¡«1200£© +#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ºÍÍøÂç·þÎñÖеÄÔöÇ¿ÐÍSDK·þÎñ¼°WebSockets·þÎñ¡£ +#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 //×¥ÅÄ´ÎÊý·Ç·¨ £¨ÓÐЧֵÊÇ0¡«5£© +#define NET_DVR_ERR_LOOP_DISTANCE 1423 //ÏßȦ¾àÀë·Ç·¨ £¨ÓÐЧֵÊÇ0¡«2000ms£© +#define NET_DVR_ERR_LOOP_INPUT_STATUS 1424 //ÏßȦÊäÈë״̬·Ç·¨ £¨ÓÐЧֵ£© +#define NET_DVR_ERR_RELATE_IO_CONFLICT 1425 //²âËÙ×éIO¹ØÁª³åÍ» +#define NET_DVR_ERR_INTERVAL_TIME 1426 //Á¬Åļä¸ôʱ¼ä·Ç·¨ £¨0¡«6000ms£© +#define NET_DVR_ERR_SIGN_SPEED 1427 //±êÖ¾ÏÞËÙÖµ·Ç·¨£¨´ó³µ±êÖ¾ÏÞËÙ²»ÄÜ´óÓÚС³µ±êÖ¾ÏÞËÙ £© +#define NET_DVR_ERR_PIC_FLIP 1428 //ͼÏñÅäÖ÷­×ª £¨ÅäÖý»»¥Ó°Ï죩 +#define NET_DVR_ERR_RELATE_LANE_NUMBER 1429 //¹ØÁª³µµÀÊý´íÎó (Öظ´ ÓÐЧֵУÑé1¡«99) +#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 //dhcpºÍpppoE²»ÄÜͬʱÆô¶¯ +#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´íÎóÂ루1500¡«1550£© +#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 //¶àÃÅ»¥ËøºÍ·´Ç±»ØͬʱÅäÖôíÎó +#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 //IPCµÄipµØÖ·¸úDVRµÄipµØÖ·³åÍ» +#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ÅÌ£¬Çë²åÈë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 /*IPCµÄIP²»Î¨Ò»£¬ÓÐÖظ´*/ +#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 //ÎÞЧµÄ³äÖµ¿¨ +#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 //ÏȹرÕÉãÏñ»úµÄ²Ã¼ô£¬ÔÙµ÷Õû·Ö±æÂÊ +#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+¡¢AC24V¡¢DC12V¹©µçÏÂÖ§³Ö³ý±ù¹¦ÄÜ£© +#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 //SmartH264ºÍROI²»¿Éͬʱ²Ù×÷ +#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 // ÉÏ´«ÈËÌå¿âID£¨HBDID 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()·µ»ØÖµ +1£­9λ·Ö±ð±íʾÒÔÏÂÐÅÏ¢£¨Î»ÓëÊÇ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ͨ¹ý˽ÓÐЭÒé½ÓÈëNVR£¬NVRͨ¹ý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_SetDVRConfigºÍNET_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 //ÉèÖÃʱÇøºÍÏÄʱÖƲÎÊý + +//×¢£º¸ÃÃüÁîÖ»Ö§³Ö4ÌõOSDµÄÀàÐÍ£¬Í¨³£ÓÃÓÚ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 //»ñÈ¡±ê¶¨Ïß + +// ivmsÆÁ±ÎÇøÓòNET_IVMS_MASK_REGION_LIST +#define NET_DVR_SET_IVMS_MASK_REGION 172 //ÉèÖÃIVMSÆÁ±ÎÇøÓò²ÎÊý +#define NET_DVR_GET_IVMS_MASK_REGION 173 //»ñÈ¡IVMSÆÁ±ÎÇøÓò²ÎÊý +// ivms½øÈë¼ì²âÇøÓòNET_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 */ + +/*×¢£º¸ÃÃüÁîΪ¶¨ÖÆ£¬Ö»Ö§³Ö8ÌõOSDµÄÀàÐÍ£¬²»»á¼æÈÝ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 + + +/*¸ÃÃüÁîÖ§³Ö8ÌõOSDµÄÀàÐÍ£¨¼´É豸°æ±¾Îª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±¨¾¯Êä³ö½ÓÈëÅäÖÃÐÅÏ¢ + +//Ó²Å̹ÜÀíµÄ²ÎÊý»ñÈ¡ (NET_DVR_HDCFG½á¹¹) +#define NET_DVR_GET_HDCFG 1054 //»ñÈ¡Ó²Å̹ÜÀíÅäÖòÎÊý +#define NET_DVR_SET_HDCFG 1055 //ÉèÖÃÓ²Å̹ÜÀíÅäÖòÎÊý +//ÅÌ×é¹ÜÀíµÄ²ÎÊý»ñÈ¡ (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 //IPCÉèÖÃCCD²ÎÊýÅäÖà + +#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//»ñÈ¡ÒôƵÇл»²ÎÊý +//SDI¾ØÕó1.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-open£¬2-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 //»ñÈ¡·´Ç±»Ø²ÎÊý +#define NET_DVR_SET_SNEAK_CFG 2120 //ÉèÖ÷´Ç±»Ø²ÎÊý +#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 //»ñÈ¡¶Á¿¨Æ÷·´Ç±»Ø²ÎÊý +#define NET_DVR_SET_CARD_READER_ANTI_SNEAK_CFG 2147 //ÉèÖöÁ¿¨Æ÷·´Ç±»Ø²ÎÊý +#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 //»ñÈ¡Ö÷»ú×é¶Á¿¨Æ÷·´Ç±»Ø²ÎÊý +#define NET_DVR_SET_READER_ANTI_SNEAK_HOST_CFG 2158 //ÉèÖÃÖ÷»ú×é¶Á¿¨Æ÷·´Ç±»Ø²ÎÊý +#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 //»ñÈ¡IOÊä³ö²ÎÊý£¨3.1º¬Ö®ºó°æ±¾£© +#define NET_ITC_SET_IOOUT_PARAM_CFG 3006 //ÉèÖÃIOÊä³ö²ÎÊý£¨3.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 //»ñÈ¡¿ìËÙÔ˶¯µÄ²¼·Àʱ¼äÅäÖà +#define NET_DVR_SET_RAPIDMOVE_SCHEDULE 3546 //ÉèÖÿìËÙÔ˶¯µÄ²¼·Àʱ¼äÅäÖà +#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 //»ñÈ¡Í£³µÕì²âµÄ²¼·Àʱ¼äÅäÖà +#define NET_DVR_SET_PARKING_SCHEDULE 3555 //ÉèÖÃÍ£³µÕì²âµÄ²¼·Àʱ¼äÅäÖà +#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 //»ñÈ¡ÎïÆ·ÒÅÁôÕì²âµÄ²¼·Àʱ¼äÅäÖà +#define NET_DVR_SET_UNATTENDED_BAGGAGE_SCHEDULE 3564 //ÉèÖÃÎïÆ·ÒÅÁôÕì²âµÄ²¼·Àʱ¼äÅäÖà +#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 //»ñÈ¡ÎïÆ·ÒÅÁôÕì²âµÄ²¼·Àʱ¼äÅäÖà +#define NET_DVR_SET_ATTENDEDBAGGAGE_SCHEDULE 3573 //ÉèÖÃÎïÆ·ÄÃÈ¡Õì²âµÄ²¼·Àʱ¼äÅäÖà +#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 +/********************************IPC»ùÏßFF³µÅÆ****************************/ +#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 //»ñÈ¡ÈËÁ³±È¶Ô¿âµÄ²¼·Àʱ¼äÄÜÁ¦ +#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 //»ñÈ¡ÈËÁ³±È¶Ô¿âµÄ²¼·Àʱ¼äÅäÖà +#define NET_DVR_SET_FACELIB_SCHEDULE 3978 //ÉèÖÃÈËÁ³±È¶Ô¿âµÄ²¼·Àʱ¼äÅäÖà +#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//ӥʽ¾Û½¹ÉèÖÃÉãÏñ»úתÏòÖ¸¶¨µÄ³¡¾°ID +#define NET_DVR_EAGLE_FOCUS_SCENE_DEL 3985//ɾ³ýӥʽ¾Û½¹±ê¶¨µÄ³¡¾° +#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 //»ñÈ¡ÈËÔ±Ãܶȼì²âµÄ²¼·Àʱ¼äÄÜÁ¦ +#define NET_DVR_GET_PERSONDENSITY_SCHEDULE 4396 //»ñÈ¡ÈËÔ±Ãܶȼì²âµÄ²¼·Àʱ¼äÅäÖà +#define NET_DVR_SET_PERSONDENSITY_SCHEDULE 4397 //ÉèÖÃÈËÔ±Ãܶȼì²âµÄ²¼·Àʱ¼äÅäÖà + +#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 //»ñÈ¡ÈËÔ±ÅŶӼì²âµÄ²¼·Àʱ¼äÄÜÁ¦ +#define NET_DVR_GET_PERSONQUEUE_SCHEDULE 4409 //»ñÈ¡ÈËÔ±ÅŶӼì²âµÄ²¼·Àʱ¼äÅäÖà +#define NET_DVR_SET_PERSONQUEUE_SCHEDULE 4410 //ÉèÖÃÈËÔ±ÅŶӼì²âµÄ²¼·Àʱ¼äÅäÖà +#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 //»ñȡͨµÀµÄ³¡¾°Ê±¼ä¶ÎÅäÖà +#define NET_DVR_SET_SCENE_TIME_CFG 5216 //ÉèÖÃͨµÀµÄ³¡¾°Ê±¼ä¶ÎÅäÖà +#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 //ÉèÖÃͨµÀ¼Ïñ״̬ÐÅÏ¢ +//NVR£º96xx +#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 //»ñÈ¡eSATAºÍminiSASÓÃ; +#define NET_DVR_SET_ESATA_MINISAS_USAGE_CFG 6121 //ÉèÖÃeSATAºÍminiSASÓÃ; + +#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 //»ñÈ¡DVRÓëPOSÁ¬½Ó·½Ê½ +#define NET_DVR_SET_CONNECT_POS_CFG 6151 //ÉèÖÃDVRÓëPOSÁ¬½Ó·½Ê½ +#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-SDI¸ßÇåDVR +#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 //ÊÖ¶¯Ìí¼Ó¼Ïñ»Ø´«ÈÎÎñV50£¨·µ»ØÈÎÎñID£© +#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 //ͬ²½IPCÃÜÂëÓëNVRÒ»Ö +#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 //ÉèÖÃÖ÷ÉãÏñ»úתÏòÖ¸¶¨µÄ³¡¾°ID + +//I¡¢K¡¢EϵÁÐ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 //»ñÈ¡µ±Ç°µçÊÓǽÖÐÕýÔÚʹÓõij¡¾°v41 +#define NET_DVR_GET_WALL_SCENE_PARAM_V41 9023 //»ñÈ¡µ±Ç°µçÊÓǽÖÐÕýÔÚʹÓõij¡¾°v41 +#define NET_DVR_SET_WALL_SCENE_PARAM_V41 9024 //ÉèÖõ±Ç°µçÊÓǽÖÐÕýÔÚʹÓõij¡¾°v41 +#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 //»ñÈ¡ÐéÄâÆÁ×Ó°åµÄËùÓÐÊäÈëͨµÀµÄ³õʼ»¯²ÎÊý +#define NET_DVR_GET_VS_INPUT_CHAN_INIT 9134 //»ñÈ¡ÐéÄâÆÁÊäÈëͨµÀµÄ³õʼ»¯²ÎÊý +#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·¢ËÍ¿¨Ä³¸öÊä³ö¶ÔÓ¦ +#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 //»ñÈ¡NVR¼¤»îIPCÄÜÁ¦¼¯ + + +/*******************************Â¥Óî¿ÉÊÓ¶Ô½²»ú 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 //»ñÈ¡SIP²ÎÊýV50 +#define NET_DVR_SET_SIP_CFG_V50 16045 //ÉèÖÃSIP²ÎÊýV50 +#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³åÍ»£¬¼Ç¼CMµÄIPµØÖ· + +#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 /*±¾µØÌí¼ÓÍøÂçÓ²ÅÌ £¨nfs¡¢iscsi£©*/ +#define MINOR_LOCAL_DEL_NAS 0x6b /* ±¾µØɾ³ýnasÅÌ £¨nfs¡¢iscsi£©*/ +#define MINOR_LOCAL_SET_NAS 0x6c /* ±¾µØÉèÖÃnasÅÌ £¨nfs¡¢iscsi£©*/ +#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ÅÌ £¨nfs¡¢iscsi£©*/ +#define MINOR_REMOTE_DEL_NAS 0x8f /* Ô¶³Ìɾ³ýnasÅÌ £¨nfs¡¢iscsi£©*/ +#define MINOR_REMOTE_SET_NAS 0x90 /* Ô¶³ÌÉèÖÃnasÅÌ £¨nfs¡¢iscsi£©*/ +#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 /*½ÓÊÕ¶ÌÐÅ*/ +//£¨±¸×¢£º0x350¡¢0x351ÊÇÖ¸È˹¤ÔÚGUI»òIE¿Ø¼þÉϱ༭²¢·¢ËͶÌÐÅ£© +#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 //ÐÞ¸ÄGPRSÖÐÐIJÎÊýÅäÖà +#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ͨÐŵÄÖ¤Ê飬°üÀ¨SDKµÄTLSºÍHTTPSµÈ£© +#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 //½øÈëUIºǫ́ +#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¿ª·Åƽ̨µÄ²Ù×÷ÈÕÖ¾ +#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//NVRÖØÖÃIPCÃÜÂëÈÕÖ¾ + +//¶¨Òåөʯƽ̨²Ù×÷ÈÕÖ¾ +#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 //¼¯ÈºCSÏòCM·¢ËÍÉ豸״̬ʧ°Ü£¬¼Ç¼CSºÍCMµÄIPµØÖ· +#define MINOR_CLUSTER_CM_STATUS 0xd2 //CM״̬Çл»£¬¼Ç¼CMת±äµÄ½ÇÉ«£¬Èçleader¡¢follower¡¢candidate +#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 //USBµÇ³ö +#define MINOR_ISAPI_HTTP_LOGIN 0x425 //ISAPI HTTPµÇ½ +#define MINOR_ISAPI_HTTP_LOGOUT 0x426 //ISAPI HTTP µÇ³ö +#define MINOR_ISAPI_HTTPS_LOGIN 0x427 //ISAPI HTTPSµÇ½ +#define MINOR_ISAPI_HTTPS_LOGOUT 0x428 //ISAPI HTTPSµÇ³ö +#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 //·´Ç±»ØÈÏ֤ʧ°Ü +#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 //·´Ç±»Ø·þÎñÆ÷Ó¦´ðʧ°Ü +#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_ORCODE_KEY_VERIFY_FAIL 0xd9 //¶þάÂëÃÜÔ¿Ñé֤ʧ°Ü + +#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_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=0x52»òÕßMINOR_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_PLAYSETTIMEºÍNET_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 //V6¼¶Áª²»´øDSP +#define DS_B10N64F1D_RTM 127 //V6¼¶Áª´øDSP +#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-SDI¸ßÇåDVR +#define DS_66XXHFH 205 // 66¸ßÇå±àÂëÆ÷ +#define TRAFFIC_TS_SERVER 210 //Öն˷þÎñÆ÷ +#define TRAFFIC_VAR 211 //ÊÓƵ·ÖÎö¼Ç¼ÒÇ +#define IPCALL 212 //IP¿ÉÊÓ¶Ô½²·Ö»ú +#define SAN_SERVER 213 //ÓëCVR_SERVERÏàͬµÄ³ÌÐò£¬Ö»ÊÇģʽ²»Í¬ + +#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 //DVI£¬HDMI£¬VGAÊä³ö°å´øÒôƵ +#define DS_C10N_AUDIO_IN 557 //DVI£¬HDMI£¬VGAÊäÈë°å´øÒôƵ + +//Èí·þÎñÆ÷°æ±¾µÄ·Ö²¼Ê½´óÆÁ¿ØÖÆÆ÷ +#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.8GÊÒÍâ1¹«ÀïÎÞÏß¹¤µØÍø +#define DS_3WF0EC_2N_D 5753 //2.4GÊÒÍâ500Ã×ÍøÇÅ +#define DS_3WF0EC_5ACT 5754 //5.8G 11acµçÌÝÍøÇÅ +#define DS_3WF03S_5AC 5755 //5.8G 3¹«Àï¾­¼ÃÐÍÍøÇÅ +#define DS_3WF0ES_5AC_H 5756 //5.8GÊÒÍâ500Ã׸ߴ©Í¸ÍøÇÅ +#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-JP£¬DS-KD9623-FC-JP£¬DS-KD9803-F-JPÒ½ÁÆÐÐÒµ£ºDS-KD9803-3XF5G-HI£¬DS-KD9803-3XFW-HI£¬DS-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_K1T607£¨M/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_K1T610£¨M/MF/E/EF/MG/MFG?MW/MFW/TM/TMF/TE/TEF/TMG/TMFG/TMW/TMFW£© +#define DS_K1T8115X 888 //DS-K1T8115¡¢DS-K1T8115M¡¢DS-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_ST»ìºÏDVR +#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_SX£¬°üÀ¨4ÖÐÀàÐÍDS-8608SNL-SP¡¢DS-8608SNL-ST¡¢DS-8608SN-SP¡¢DS-8608SN-ST£¬L±íʾ´øLCD£¬P±íPOE + +//#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²úÆ·£¬ÆäÖÐ72ºóÃæµÄxx±íʾͨµÀÊý£¬HºóµÄXÄ¿Ç°½öÓÐHW,ΪÁ˺óÐøÀ©Õ¹±£Áô£¬EºóÃæµÄX±íʾµÄÊÇÅÌλÊý£¬G XY±íʾµÄÊÇÎÞÏßÀàÐÍ +#define DS_76XXN_EX_GXY 2219 //±íʾÊÇ76ϵÁÐÎÞÏßNVR²úÆ·£¬ÆäÖÐ76ºóÃæµÄxx±íʾͨµÀÊý£¬EºóÃæµÄX±íʾµÄÊÇÅÌλÊý£¬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_I£¨DS-96128N-I16¡¢DS-96128N-I24¡¢DS-96256N-I16¡¢DS-96256N-I24£© + +#define DS_90XXHXH_XT 2238 //DS_90XXHXH_XT£¨DS-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 //69UD³¬¸ßÇå½âÂëÆ÷V2 +#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//´æ´¢°å£¬Ö§³Ö4¸ö2.5´ç2TÓ²ÅÌ +#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-8104SHFH£¨L£©-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´çÈËÁ³ÃŽûÒ»Ìå»úl£¬641ϵÁÐ +#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ϵÁÐ + +//·Ã¿Í»ú10530£¬10601-10650 +#define DS_K3501 10601 //¾­Ïú·Ã¿Í»úK3501ϵÁÐ +//Ïû·Ñ»ú10531£¬10651-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-14000£¨500£© +#define DS_PA_RADAR 13551 //PAÀ×´ï +#define DS_PERIMETER_RADAR 13552 //ÖܽçÀ×´ï +#define DS_SECURITY_RADAR 13553 //120Ã×°²·ÀÀ×´ï +#define DS_IMAGING_RADAR_PANEL 13554 //³ÉÏñÀ×´ïÖ÷»ú + +//Ïû·ÀÉ豸 14001-14500£¨500£© +#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-15000£¨500£© +#define NP_ST204_X 14501 //µÚ¶þ´úÖÇÄÜ°²¼ì·ÖÎöÒÇ +#define ISD_SG2XXL_X 14502 //°²¼ìÃÅ(ISD-SG206L ISD-SG218L ISD-SG218L-F) +#define ISD_SL300T 14503 //ÒºÌå·ÖÎöÒÇ + +//Ä£ÄâºÍÒôƵÉ豸 15001-15500£¨500£© +#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 //RS232ºÍRS485´®¿ÚÄÜÁ¦ +#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λ·Ö±ð´ú±í¸ßµÍ°æ±¾£¬ºóÐø¸ù¾Ý°æ±¾ºÍ³¤¶È½øÐÐÀ©Õ¹£¬²»Í¬µÄ°æ±¾µÄ³¤¶È½øÐÐÏÞÖÆ*/ + 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-Íø¿Ú0£¬2-Íø¿Ú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; /* ÓòÃû·þÎñÆ÷1µÄIPµØÖ· */ + NET_DVR_IPADDR struDnsServer2IpAddr; /* ÓòÃû·þÎñÆ÷2µÄIPµØÖ· */ + BYTE byIpResolver[MAX_DOMAIN_NAME]; /* IP½âÎö·þÎñÆ÷ÓòÃû»òIPµØÖ· */ + 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-Íø¿Ú0£¬2-Íø¿Ú1ÒÔ´ËÀàÍÆ£¬Ö»¶Á + BYTE bySilkScreen; //Ë¿Ó¡ÐÅÏ¢£¬0-ÎÞЧ£¬1-GE1£¬2-GE2£¬3-G1£¬4-G2£¬Ö»¶Á + BYTE byUseDhcp; /* ÊÇ·ñÆôÓÃDHCP */ + BYTE byRes3[3]; + NET_DVR_IPADDR struGatewayIpAddr; /* Íø¹ØµØÖ· */ + NET_DVR_IPADDR struDnsServer1IpAddr; /* ÓòÃû·þÎñÆ÷1µÄIPµØÖ· */ + NET_DVR_IPADDR struDnsServer2IpAddr; /* ÓòÃû·þÎñÆ÷2µÄIPµØÖ· */ +}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]; /* IP½âÎö·þÎñÆ÷ÓòÃû»òIPµØÖ· */ + 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]; //NFSÖ÷»úIPµØÖ· + 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; /* ÓòÃû·þÎñÆ÷1µÄIPµØÖ· */ + NET_DVR_IPADDR struDnsServer2IpAddr; /* ÓòÃû·þÎñÆ÷2µÄIPµØÖ· */ + BYTE byIpResolver[MAX_DOMAIN_NAME]; /* IP½âÎö·þÎñÆ÷ÓòÃû»òIPµØÖ· */ + 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; //SIP·þÎñÆ÷IP + 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; //SIP·þÎñÆ÷IP + 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]; //sip·þÎñÆ÷ÓòÃû£¨IPºÍÓòÃûÖ»ÐèÒªÌîÆäÒ»£¬¶¼ÓÐֵʱIPÓÅÏÈ£© + NET_DVR_IPADDR stuSTUNServerIP; // STUN·þÎñÆ÷IP + 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-ÓÐÏßÍøÂç2£¬3-ÎÞÏßÍøÂç + 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; //ÒôƵ±àÂëÓÅÏȼ¶1£¬0-G722£¬1-G711_U£¬2-G711_A£¬ 5-MPEG2,6-G726£¬7-AAC + BYTE byAudioEncPri2; //ÒôƵ±àÂëÓÅÏȼ¶2£¬µ±sip·þÎñÆ÷²»Ö§³ÖÒôƵ±àÂë1ʱ»áʹÓÃÒôƵ±àÂë2£¬0-G722£¬1-G711_U£¬2-G711_A£¬ 5-MPEG2,6-G726£¬7-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; //Æô¶¯±¨¾¯ºÅÂë1£¬0-²»Æô¶¯£¬1-Æô¶¯ + BYTE byRes2[3]; + BYTE byAlarmNumber1[MAX_NUMBER_LEN]; //ºô½ÐºÅÂë1 + BYTE byEnableAlarmNumber2; //Æô¶¯±¨¾¯ºÅÂë2£¬0-²»Æô¶¯£¬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; /* OSDµÄx×ø±ê */ + WORD wOSDTopLeftY; /* OSDµÄy×ø±ê */ + BYTE byOSDType; /* OSDÀàÐÍ(Ö÷ÒªÊÇÄêÔÂÈÕ¸ñʽ) */ + /* 0: XXXX-XX-XX ÄêÔÂÈÕ */ + /* 1: XX-XX-XXXX ÔÂÈÕÄê */ + /* 2: XXXXÄêXXÔÂXXÈÕ */ + /* 3: XXÔÂXXÈÕXXXXÄê */ + /* 4: XX-XX-XXXX ÈÕÔÂÄê*/ + /* 5: XXÈÕXXÔÂXXXXÄê */ + /*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½á¹¹ÌåÊý×éÖеĵÚ0ÖÁµÚ5¸öϱêµÄÖµ¡£µþ¼Ó×Ö·ûµÄ·½Ê½Îª´Óϵ½Éϵķ½Ê½¡£ + ×óϽÇÇøÓò£º + ¹²Ö§³Ö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½øÐб߽çÅäÖã¬.byAlignment²»µÈÓÚ3µÄÇé¿öÏ£¬ byUpDownBoundary/byLeftRightBoundaryÅäÖóɹ¦ºó£¬dwBoundaryÖµ½«²»ÉúЧ + BYTE byLeftRightBoundary; //×óÓÒ×îС±ß½çֵѡÏµ¥Î»Îª×Ö·û¸öÊý£¨·¶Î§ÊÇ£¬0,1,2£©, ¹ú±êģʽÏÂÎÞЧ¡£byAlignment=3¸Ã×Ö¶ÎÎÞЧ£¬Í¨¹ýdwBoundary½øÐб߽çÅäÖã¬.byAlignment²»µÈÓÚ3µÄÇé¿öÏ£¬ 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; /* OSDµÄx×ø±ê */ + WORD wOSDTopLeftY; /* OSDµÄy×ø±ê */ + BYTE byOSDType; /* OSDÀàÐÍ(Ö÷ÒªÊÇÄêÔÂÈÕ¸ñʽ) */ + /* 0: XXXX-XX-XX ÄêÔÂÈÕ */ + /* 1: XX-XX-XXXX ÔÂÈÕÄê */ + /* 2: XXXXÄêXXÔÂXXÈÕ */ + /* 3: XXÔÂXXÈÕXXXXÄê */ + /* 4: XX-XX-XXXX ÈÕÔÂÄê*/ + /* 5: XXÈÕXXÔÂXXXXÄê */ + /*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; /* OSDµÄx×ø±ê */ + WORD wOSDTopLeftY; /* OSDµÄy×ø±ê */ + BYTE byOSDType; /* OSDÀàÐÍ(Ö÷ÒªÊÇÄêÔÂÈÕ¸ñʽ) */ + /* 0: XXXX-XX-XX ÄêÔÂÈÕ */ + /* 1: XX-XX-XXXX ÔÂÈÕÄê */ + /* 2: XXXXÄêXXÔÂXXÈÕ */ + /* 3: XXÔÂXXÈÕXXXXÄê */ + /* 4: XX-XX-XXXX ÈÕÔÂÄê*/ + /* 5: XXÈÕXXÔÂXXXXÄê */ + /*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-VGA£¨640*480£©, 17-UXGA£¨1600*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-XGA£¨1024*768£©£¬ 35-SXGA£¨1280*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 + */ + 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-25£»18-30£»19-35£»20-40£»21-45£»22-50£»23-55£»24-60£»25-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-˽ÓÐ264£¬1-±ê×¼h264£¬2-±ê×¼mpeg4£¬7-M-JPEG£¬8-MPEG2£¬9-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-FLV£¬7-ASF£¬8-3GP,9-RTP+PS£¨¹ú±ê£ºGB28181£©£¬0xff-ÎÞЧ + BYTE byAudioBitRate; //ÒôƵÂëÂÊ ²Î¿¼ BITRATE_ENCODE_INDEX + BYTE byStreamSmooth;//ÂëÁ÷ƽ»¬ 1¡«100£¨1µÈ¼¶±íʾÇåÎú(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.0Ôö¼Ó14-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-PIR±¨¾¯£¬11-ÎÞÏß±¨¾¯£¬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-PIR±¨¾¯£¬11-ÎÞÏß±¨¾¯£¬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±íʾÓÀ¾ÃËø¶¨£¬Â¼Ïñ¶ÎµÄʱ³¤´óÓÚËø¶¨µÄ³ÖÐøʱ³¤µÄ¼Ïñ£¬½«²»»áËø¶¨ + 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-PIR±¨¾¯£¬11-ÎÞÏß±¨¾¯£¬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-PIR±¨¾¯£¬11-ÎÞÏß±¨¾¯£¬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±íʾÓÀ¾ÃËø¶¨£¬Â¼Ïñ¶ÎµÄʱ³¤´óÓÚËø¶¨µÄ³ÖÐøʱ³¤µÄ¼Ïñ£¬½«²»»áËø¶¨ + 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];/*×î´ó200ÖÐPTZЭÒé*/ + 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; //²¨ÌØÂÊ 0£­50£¬1£­75£¬2£­110£¬3£­150£¬4£­300£¬5£­600£¬6£­1200£¬7£­2400£¬8£­4800£¬9£­9600£¬10£­19200£¬ 11£­38400£¬12£­57600£¬13£­76800£¬14£­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 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)£¬0£­50£¬1£­75£¬2£­110£¬3£­150£¬4£­300£¬5£­600£¬6£­1200£¬7£­2400£¬8£­4800£¬9£­9600£¬10£­19200£¬ 11£­38400£¬12£­57600£¬13£­76800£¬14£­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 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)£¬0£­50£¬1£­75£¬2£­110£¬3£­150£¬4£­300£¬5£­600£¬6£­1200£¬7£­2400£¬8£­4800£¬9£­9600£¬10£­19200£¬ 11£­38400£¬12£­57600£¬13£­76800£¬14£­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 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ģʽ, 0£­Ö÷¶¯£¬1£­±»¶¯ + 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ģʽ, 0£­Ö÷¶¯£¬1£­±»¶¯ + 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)£¬0£­50£¬1£­75£¬2£­110£¬3£­150£¬4£­300£¬5£­600£¬6£­1200£¬7£­2400£¬8£­4800£¬9£­9600£¬10£­19200£¬ 11£­38400£¬12£­57600£¬13£­76800£¬14£­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-Ó²Á÷¿Ø */ + DWORD dwWorkMode; //¹¤×÷ģʽ£¬0£­232´®¿ÚÓÃÓÚPPP²¦ºÅ£¬1£­232´®¿ÚÓÃÓÚ²ÎÊý¿ØÖÆ£¬2£­Í¸Ã÷ͨµÀ 3- ptzģʽ,ÉóѶÎÂʪ¶È´«¸ÐÆ÷, 4-±¨¾¯ºÐģʽ 5-¾ØÕó´®¿Ú¿ØÖÆ 6-ÆÁÄ»¿ØÖÆ 7-´®¿ÚÖ±Á¬ 8-¼üÅÌ¿ØÖÆ 9-¼à¿Ø°å¹ÜÀí 10-¿ØÖÆÔÆ̨ +}NET_DVR_SINGLE_RS232; + +typedef struct tagNET_DVR_USB_RS232 +{ + DWORD dwBaudRate; /*²¨ÌØÂÊ(bps)£¬0£­50£¬1£­75£¬2£­110£¬3£­150£¬4£­300£¬5£­600£¬6£­1200£¬7£­2400£¬8£­4800£¬9£­9600£¬10£­19200£¬ 11£­38400£¬12£­57600£¬13£­76800£¬14£­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 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)£¬0£­50£¬1£­75£¬2£­110£¬3£­150£¬4£­300£¬5£­600£¬6£­1200£¬7£­2400£¬8£­4800£¬9£­9600£¬10£­19200£¬ 11£­38400£¬12£­57600£¬13£­76800£¬14£­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-Ó²Á÷¿Ø + DWORD dwWorkMode;// ¹¤×÷ģʽ£¬0£­Õ­´ø´«Êä(232´®¿ÚÓÃÓÚPPP²¦ºÅ)£¬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))//win64¼°linux64ÏÂÖ¸ÕëΪ8×Ö½Ú + char* pDataBuff; //±¨¾¯Í¼Æ¬»òÕßͼƬURL +#else + char* pDataBuff; //±¨¾¯Í¼Æ¬»òÕßͼƬURL + BYTE byRes3[4]; +#endif + }struAlarmChannel; // dwAlarmTypeΪ2£¬3£¬6£¬9£¬10¡¢13»ò28ʱÓÐЧ + 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-ÎÞÂëÁ÷ µ±Ç°0¡¢1¡¢2 ÒÔÍâΪÆäËû + 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Ϊ2»ò3,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Ϊ2»ò3,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-¶àýÌ壬6¨C½Ìʦ¶¨Î»,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-²»ÆôÓÃNVR¶ÔIPC×Ô¶¯Ð£Ê±£¬2-ÆôÓÃNVR¶ÔIPC×Ô¶¯Ð£Ê± + 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É豸IDµÍ8룬µ±É豸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-TCP£¬1-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-TCP£¬1-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-TCP£¬1-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-TCP£¬1-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-TCP£¬1-UDP£¬2- ¶à²¥£¬3-RTSP£¬0xff- 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_TYPE£¬0-Ö±½Ó´ÓÉ豸ȡÁ÷£¬1-´ÓÁ÷ýÌåÈ¡Á÷¡¢2-ͨ¹ýIPServer»ñµÃipµØÖ·ºóÈ¡Á÷,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; //dwNumber¸öWORD; ÿ¸ö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Ϊ0£¨1»­Ã棩£¬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; /* ±¨Îıê־λµÄ³¤¶È */ + BYTE byFrameSignContent[12]; /* ±¨Îıê־λµÄÄÚÈÝ */ + DWORD dwCardLengthInfoBeginPos; /* ¿¨ºÅ³¤¶ÈÐÅÏ¢µÄÆðʼλÖà */ + DWORD dwCardLengthInfoLength; /* ¿¨ºÅ³¤¶ÈÐÅÏ¢µÄ³¤¶È */ + DWORD dwCardNumberInfoBeginPos; /* ¿¨ºÅÐÅÏ¢µÄÆðʼλÖà */ + DWORD dwCardNumberInfoLength; /* ¿¨ºÅÐÅÏ¢µÄ³¤¶È */ + 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; /* ±¨Îıê־λµÄ³¤¶È */ + BYTE byFrameSignContent[12]; /* ±¨Îıê־λµÄÄÚÈÝ */ + DWORD dwCardLengthInfoBeginPos; /* ¿¨ºÅ³¤¶ÈÐÅÏ¢µÄÆðʼλÖà */ + DWORD dwCardLengthInfoLength; /* ¿¨ºÅ³¤¶ÈÐÅÏ¢µÄ³¤¶È */ + DWORD dwCardNumberInfoBeginPos; /* ¿¨ºÅÐÅÏ¢µÄÆðʼλÖà */ + DWORD dwCardNumberInfoLength; /* ¿¨ºÅÐÅÏ¢µÄ³¤¶È */ + 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µÄʱºòʹÓ㬿¨ºÅ³¤¶ÈµÄ³¤¶È + 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~5£¬3¸öitemµÄÅÅÁÐ×éºÏ + 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~5£¬3¸öitemµÄÅÅÁÐ×éºÏ + 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¶ÔÓ¦µþ¼ÓͨµÀ1£¬0±íʾ²»µþ¼ÓͨµÀ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/232Êä³ö£¬1±íʾ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; /* ¸ÃÐÐ×Ö·ûµÄ³¤¶È£¬²»ÄÜ´óÓÚ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; //gmailµÄ465£¬ÆÕͨµÄΪ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; //µÚ¼¸ÖÜ 0£­µÚ1ÖÜ 1£­µÚ2ÖÜ 2£­µÚ3ÖÜ 3£­µÚ4ÖÜ 4£­×îºóÒ»ÖÜ + DWORD dwWeekDate; //ÐÇÆÚ¼¸ 0£­ÐÇÆÚÈÕ 1£­ÐÇÆÚÒ» 2£­ÐÇÆÚ¶þ 3£­ÐÇÆÚÈý 4£­ÐÇÆÚËÄ 5£­ÐÇÆÚÎå 6£­ÐÇÆÚÁù + DWORD dwHour; //Сʱ ¿ªÊ¼Ê±¼ä0£­23 ½áÊøʱ¼ä1£­23 + DWORD dwMin; //·Ö 0£­59 +}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))//win64¼°linux64ÏÂÖ¸ÕëΪ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-³¡¾°1£¬2-³¡¾°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-no£¬1-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 1£­Dyndns 2£­PeanutHull(»¨Éú¿Ç)*/ + 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 1£­Dyndns 2£­PeanutHull(»¨Éú¿Ç)£¬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£º´ò¿ª */ + /* + * ¶à·½âÂëÆ÷±¾µØÓÐ1¸ö485´®¿Ú£¬1¸ö232´®¿Ú¶¼¿ÉÒÔ×÷Ϊ͸Ã÷ͨµÀ,É豸ºÅ·ÖÅäÈçÏ£º + * 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͸Ã÷ͨµÀÊÇÈ«Ë«¹¤µÄ È¡Öµ1µ½MAX_SERIAL_NUM */ + BYTE by485IsDualChan; /* ÉèÖÃÄÄ·485͸Ã÷ͨµÀÊÇÈ«Ë«¹¤µÄ È¡Öµ1µ½MAX_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; /* µ±Ç°²¥·ÅÎļþµÄ²¥·ÅλÖà */ + 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 */ + /* + * ¶à·½âÂëÆ÷±¾µØÓÐ1¸ö485´®¿Ú£¬1¸ö232´®¿Ú¶¼¿ÉÒÔ×÷Ϊ͸Ã÷ͨµÀ,É豸ºÅ·ÖÅäÈçÏ£º + * 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͸Ã÷ͨµÀÊÇÈ«Ë«¹¤µÄ È¡Öµ1µ½MAX_SERIAL_NUM */ + BYTE by485IsDualChan; /* ÉèÖÃÄÄ·485͸Ã÷ͨµÀÊÇÈ«Ë«¹¤µÄ È¡Öµ1µ½MAX_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 + { + /*¸÷¸ö×Ó´°¿Ú¶ÔÓ¦½âÂëͨµÀËù¶ÔÓ¦µÄ½âÂë×ÓϵͳµÄ²ÛλºÅ(¶ÔÓÚÊÓƵ×ÛºÏƽ̨ÖнâÂë×ÓϵͳÓÐЧ)*/ + 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-BNC£¬1-VGA£¬ 2-HDMI£¬3-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-DNS£¬3-»¨Éú¿Ç + 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];/*DNSÓòÃû»òIPµØÖ·*/ + 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;//±¨¾¯ÑÓʱ£¬0£­5Ã룻1£­10Ã룻2£­30Ã룻3£­1·ÖÖÓ£»4£­2·ÖÖÓ£»5£­5·ÖÖÓ£»6£­10·ÖÖÓ£» + 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-ͬʱ֧³ÖprivateºÍrtsp + BYTE bySubProto; //×ÓÂëÁ÷´«ÊäЭÒéÀàÐÍ0-private, 1-rtsp,2-ͬʱ֧³ÖprivateºÍrtsp + 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±íʾÊÇ·ñÖ§³ÖʹÓÃÀ©Õ¹µÄ³¡¾°Ä£Ê½½Ó¿Ú + /* + bySupport5 &0x08 É豸·µ»Ø¸ÃÖµ±íʾÊÇ·ñÖ§³Ö¼Æ»®Â¼ÏñÀàÐÍV40½Ó¿ÚЭÒé(DVR_SET_RECORDCFG_V40/ DVR_GET_RECORDCFG_V40)(ÔÚ¸ÃЭÒéÖÐÉ豸֧³ÖÀàÐÍÀàÐÍ13µÄÅäÖÃ) + ֮ǰµÄ²¿·Ö·¢²¼µÄÉ豸£¬Ö§³Ö¼ÏñÀàÐÍ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ʱ£¬dwSurplusLockTimeºÍbyRetryLoginTimeÓÐЧ + 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ʱ¼ä,SDKÍê³ÉUTCʱ¼äÓëÉ豸ʱÇøµÄת»»,2-½Ó¿ÚÉÏÊäÈëÊä³öÈ«²¿Ê¹ÓÃƽ̨±¾µØʱ¼ä£¬SDKÍê³Éƽ̨±¾µØʱ¼äÓëÉ豸ʱÇøµÄת»» + BYTE byLoginMode; //0-Private 1-ISAPI 2-×ÔÊÊÓ¦ + BYTE byHttps; //0-²»ÊÊÓÃtls£¬1-ʹÓÃ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±íʾ×Ó£¬0£­30λ±íʾÂëÁ÷Á¬½Ó·½Ê½: 0£ºTCP·½Ê½,1£ºUDP·½Ê½,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¶ÏÍøÐø´«±êÖ¾¡£0£º²»Ðø´«£»1£ºÐø´« + 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±íʾ×Ó£¬0£­30λ±íʾÂëÁ÷Á¬½Ó·½Ê½:0£ºTCP·½Ê½,1£ºUDP·½Ê½,2£º¶à²¥·½Ê½,3 - RTP·½Ê½£¬4-µç»°Ïߣ¬5£­128k¿í´ø£¬6£­256k¿í´ø£¬7£­384k¿í´ø£¬8£­512k¿í´ø£» + 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-PIR±¨¾¯£¬11-ÎÞÏß±¨¾¯£¬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-PIR±¨¾¯£¬11-ÎÞÏß±¨¾¯£¬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-Òƶ¯Õì²â £¬2£­±¨¾¯´¥·¢£¬3-±¨¾¯|Òƶ¯Õì²â 4-±¨¾¯&Òƶ¯Õì²â 5-ÃüÁî´¥·¢ 6-ÊÖ¶¯Â¼Ïñ,7-ÖÇÄܼÏñ£¬10-PIR±¨¾¯£¬11-ÎÞÏß±¨¾¯£¬12-ºô¾È±¨¾¯£¬13-È«²¿Ê¼þ£¬14-ÖÇÄܽ»Í¨Ê¼þ + //´ø¿¨ºÅ£¬0xff£­È«²¿£¬0£­¶¨Ê±Â¼Ïñ£¬1-Òƶ¯Õì²â£¬2£­½Ó½ü±¨¾¯£¬3£­³ö³®±¨¾¯£¬4£­½ø³®±¨¾¯£¬5-ÃüÁî´¥·¢£¬6£­ÊÖ¶¯Â¼Ïñ£¬7£­Õ𶯱¨¾¯£¬8-»·¾³±¨¾¯£¬9-ÖÇÄܱ¨¾¯£¬10-PIR±¨¾¯£¬11-ÎÞÏß±¨¾¯£¬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-16kHZ£¬2-32kHZ£¬3-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; /*ÎÞÏßAPÊýÁ¿£¬²»³¬¹ý20*/ + 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-63¸öASCII×Ö·û*/ + 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-63¸öASCII×Ö·ûÒÔ¼°64¸öÊ®ÁùÖÆ×Ö·ûÃÜÔ¿£© + //µ±byKeyTypeΪ0ʱ£¬ÆôÓÃsKeyInfo£¬µ±byKeyTypeΪ1ʱ£¬ÆôÓÃsNewKeyInfo + //ÃÜÔ¿ÀàÐÍ£»0 ~ ÀÏÃÜÔ¿ÀàÐÍ£¨Ö»Ö§³Ö8-63¸öASCII×Ö·û£©£¬1 ~ÐÂÃÜÔ¿ÀàÐÍ£¨Ö§³Ö8-63¸öASCII×Ö·ûÒÔ¼°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-°æ±¾1£¬1-°æ±¾2 + BYTE byAuthType; //ÄÚ²¿ÈÏÖ¤·½Ê½£¬0-PAP£¬1-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-°æ±¾1£¬1-°æ±¾2 + BYTE byAuthType; //ÄÚ²¿ÈÏÖ¤·½Ê½£¬0-GTC£¬1-MD5£¬2-MSCHAPV2 + BYTE byPeapVersion; //PEAP°æ±¾£¬0-°æ±¾0£¬1-°æ±¾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-°æ±¾1£¬1-°æ±¾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 East£©£¬0xff-ËùÓÐ +}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; //ÓÐЧµã ´óÓÚµÈÓÚ3£¬ÈôÊÇ3µãÔÚÒ»ÌõÏßÉÏÈÏΪÊÇÎÞЧÇøÓò£¬Ïß½»²æÈÏΪÊÇÎÞЧÇøÓò + 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µØÖ·£¬¶Ë¿Ú£¬byChannelºÍbyIvmsChannel ¾ùΪµ±Ç°µÄÄ£ÄâͨµÀºÅ +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; /* ץͼÊÓƵµÄ³¤¶È£¬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; /* ץͼÊÓƵµÄ³¤¶È£¬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; //ץͼÊÓƵµÄ³¤¶È£¬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; //·µ»ØͼƬµÄ³¤¶È Ϊ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_INFOÀïµÄbyIvmsChannelº¬ÒåÏàͬ£¬Äܱíʾ¸ü´óµÄÖµ¡£ÀÏ¿Í»§¶ËÓÃ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; + +//IVMSµÄATM½øÈëÇøÓò²ÎÊý +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-ÍøÂçSDK£¬1-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; //¹æÔòID£¬0xff±íʾȫ²¿ + 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; // 0£º·Ç³é֡¼Ïñ 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; // 0£º·Ç³é֡¼Ïñ 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; // 0£º·Ç³é֡¼Ïñ 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]; // ×î´óΪ6¸öRect +}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±íʾĿ±ê¸ß¶ÈµÄʱºò£¬struStartPointºÍstruEndPoint·Ö±ð±íʾĿ±êÍ·²¿µãºÍ½Å²¿µã¡£ +µ±fValue±íʾÏ߶γ¤¶ÈµÄʱºò£¬struStartPointºÍstruEndPoint·Ö±ð±íʾÏ߶ÎÆðʼµãºÍÖյ㣬 +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-À뿪 ¶ÔÓÚÀÏÉ豸µÄ²»ÆôÓÃOSDµþ¼Ó¶ÔÓ¦£¨ÎÞ£©£¬ÆôÓöÔÓ¦£¨½øÈë/À뿪£©£¬4-¾­¹ýÈËÊý£¬5-½øÈëºÍ¾­¹ý¡£ + BYTE byCurDetectType;//µ±Ç°¼ì²âÇøÓòÀàÐÍ£¬0-¶à±ßÐΣ¬1-¼ì²âÏß, 2-ÕÛÏß¼ì²â + BYTE byInterferenceSuppression; //¸ÉÈÅÒÖÖÆ£¬°´Î»±íʾ,0-δ¹´Ñ¡,1-¹´Ñ¡£¬bit0-ÒõÓ°£¬bit1-ÅÇ»²£¬bit2-ÍƳµ + NET_VCA_POINT struOSDPoint;//¿ÍÁ÷ͳ¼ÆÏÔʾOSDÏÔʾ×óÉϽÇ×ø±ê + //¿ÍÁ÷Á¿¼ì²âÊý¾ÝÉÏ´«ÖÜÆÚ£¨0-15¡¢1-1¡¢2-5¡¢3-10¡¢4-20¡¢5-30¡¢6-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µ÷ÕûËã·¨µÄ²ÎÊýÅäÖøøËã·¨¿â + 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Ϊ2ÊDzÅÓÐЧ + 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¿âÉú³ÉÄ¿±êµÄËٶȡ£ËÙ¶ÈÔ½¿ì£¬Ä¿±êÔ½ÈÝÒ×Éú³É¡£µ±ÊäÈëÊÓƵ¹âÕÕÌõ¼þ½Ï²î£¬¶Ô±È¶È½ÏµÍʱ£¬»òÕßÉèÖõĹæÔòÇøÓò½ÏСʱ£¬Ó¦¼Ó¿ìÄ¿±êÉú³ÉËٶȣ¬ ±ÜÃâÄ¿±êµÄ©¼ì£»µ±ÊäÈëÊÓƵÖжԱȶȽϸßʱ£¬»òÕß¹æÔòÇøÓò½Ï´óʱ£¬Ó¦¸Ã½µµÍÄ¿±êÉú³ÉËٶȣ¬ÒÔ¼õÉÙÎó¼ì¡£Ä¿±êÉú³ÉËٶȲÎÊý¹²ÓÐ5¼¶£¬1¼¶ËÙ¶È×îÂý£¬5¼¶×î¿ì£¬Ä¬ÈϲÎÊýΪ3¡£ +// +// DETECT_SENSITIVE +// Ä¿±ê¼ì²âÁéÃô¶È¿ØÖƲÎÊý£¬¿ØÖÆPDC¿âÖÐÒ»¸ö¾ØÐÎÇøÓò±»¼ì²âΪĿ±êµÄÁéÃô¶È¡£ÁéÃô¶ÈÔ½¸ß£¬¾ØÐÎÇøÓòÔ½ÈÝÒ×±»¼ì²âΪĿ±ê£¬ÁéÃô¶ÈÔ½µÍÔòÔ½ÄѼì²âΪĿ±ê¡£µ±ÊäÈëÊÓƵ¹âÕÕÌõ¼þ½Ï²î£¬¶Ô±È¶È½ÏµÍʱ£¬Ó¦Ìá¸ß¼ì²âÁéÃô¶È£¬ ±ÜÃâÄ¿±êµÄ©¼ì£»µ±ÊäÈëÊÓƵÖжԱȶȽϸßʱ£¬Ó¦¸Ã½µµÍ¼ì²âÁéÃô¶È£¬ÒÔ¼õÉÙÎó¼ì¡£¶ÔÓ¦²ÎÊý¹²ÓÐ5¼¶£¬¼¶±ð1ÁéÃô¶È×îµÍ£¬5¼¶×î¸ß£¬Ä¬Èϼ¶±ðΪ3¡£ +// TRAJECTORY_LEN +// ¹ì¼£Éú³É³¤¶È¿ØÖƲÎÊý£¬±íʾÉú³É¹ì¼£Ê±ÒªÇóÄ¿±êµÄ×î´óλÒÆÏñËØ¡£¶ÔÓ¦²ÎÊý¹²ÓÐ5¼¶£¬¼¶±ð1£¬Éú³É³¤¶È×£¬¹ì¼£Éú³É×îÂý£¬5¼¶Éú³É³¤¶È×î¶Ì£¬¹ì¼£Éú³É×î¿ì£¬Ä¬Èϼ¶±ðΪ3¡£ +// TRAJECT_CNT_LEN +// ¹ì¼£¼ÆÊý³¤¶È¿ØÖƲÎÊý£¬±íʾ¹ì¼£¼ÆÊýʱҪÇóÄ¿±êµÄ×î´óλÒÆÏñËØ¡£¶ÔÓ¦²ÎÊý¹²ÓÐ5¼¶£¬¼¶±ð1£¬¼ÆÊýÒªÇ󳤶È×£¬¹ì¼£¼ÆÊý×îÂý£¬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; //רҵÖÇÄÜ·µ»Ø0£¬Smart ·µ»Ø 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_INFOÀïµÄbyIvmsChannelº¬ÒåÏàͬ£¬Äܱíʾ¸ü´óµÄÖµ¡£ÀÏ¿Í»§¶ËÓÃbyIvmsChannelÄܼÌÐø¼æÈÝ£¬µ«ÊÇ×î´óµ½255¡£Ð¿ͻ§¶Ë°æ±¾ÇëʹÓÃwDevInfoIvmsChannelEx + DWORD dwPassingNum; // ¾­¹ýÈËÊý£¨½øÈëÇøÓòºóÅÇ»²Ã»Óд¥·¢½øÈë¡¢À뿪µÄÈËÊý£© + DWORD dwChildLeaveNum; // Сº¢À뿪ÈËÊý + DWORD dwChildEnterNum; // Сº¢½øÈëÈËÊý + DWORD dwDuplicatePeople; // Öظ´ÈËÊý + DWORD dwXmlLen;//XML͸´«Êý¾Ý³¤¶È, ¼´EventNotificationAlert XML BlockµÄÊý¾Ý³¤¶È +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64¼°linux64ÏÂÖ¸ÕëΪ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; // ·µ»ØͼƬµÄ³¤¶È Ϊ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; // ½»Í¨²ÎÊýµÄ³µµÀÊýÄ¿ + 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; // ½»Í¨²ÎÊýµÄ³µµÀÊýÄ¿ + 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×Ö¶ÎÉúЧ¡£ÈôdwEventTypeEx¡¢byEventType×ֶζ¼ÓÐֵʱ£¬ÒÔ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×Ö¶ÎÉúЧ¡£ÈôdwEventTypeEx¡¢byEventType×ֶζ¼ÓÐֵʱ£¬ÒÔ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; //·µ»ØͼƬµÄ³¤¶È Ϊ0±íʾûÓÐͼƬ£¬´óÓÚ0±íʾ¸Ã½á¹¹ºóÃæ½ô¸úͼƬÊý¾Ý*/ + BYTE byAlarmPicType; // 0-Òì³£ÈËÁ³±¨¾¯Í¼Æ¬ 1- ÈËÁ³Í¼Æ¬,2-¶àÕÅÈËÁ³, 3-´÷Ä«¾µÈËÁ³, 4-´òµç»°ÈËÁ³ + BYTE byPanelChan; /*2012-3-1ÈËÁ³Í¨µÀ¹ØÁªµÄÃæ°åͨµÀ*/ + BYTE byRelAlarmPicNum; //¹ØÁªÍ¨µÀ±¨¾¯Í¼Æ¬ÊýÁ¿ + BYTE byRes1; + DWORD dwFacePicDataLen;//ÈËÁ³Í¼Æ¬µÄ³¤¶È Ϊ0±íʾûÓÐͼƬ£¬´óÓÚ0±íʾ¸Ã½á¹¹ºóÃæ½ô¸úͼƬÊý¾Ý*/ + DWORD dwAlarmID; //±¨¾¯ID£¬ÓÃÒÔ±êʶͨµÀ¼ä¹ØÁª²úÉúµÄ×éºÏ±¨¾¯£¬0±íʾÎÞЧ + WORD wDevInfoIvmsChannelEx; //ÓëNET_VCA_DEV_INFOÀïµÄbyIvmsChannelº¬ÒåÏàͬ£¬Äܱíʾ¸ü´óµÄÖµ¡£ÀÏ¿Í»§¶ËÓÃ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 -ÎÞЧ,1¨CÓÐЧ + 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_INFOÀïµÄbyIvmsChannelº¬ÒåÏàͬ£¬Äܱíʾ¸ü´óµÄÖµ¡£ÀÏ¿Í»§¶ËÓÃbyIvmsChannelÄܼÌÐø¼æÈÝ£¬µ«ÊÇ×î´óµ½255¡£Ð¿ͻ§¶Ë°æ±¾ÇëʹÓÃwDevInfoIvmsChannelEx¡£ + BYTE byBrokenNetHttp; // ¶ÏÍøÐø´«±ê־룬0-²»ÖØ´«Êý¾Ý£¬1-ÖØ´«Êý¾Ý + BYTE byRes[3]; // ±£Áô×Ö½Ú + DWORD dwPlateSmallPicDataLen; //³µÅÆСͼͼƬ³¤¶È +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64¼°linux64ÏÂÖ¸ÕëΪ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 + +/* ÐÞÕý°æ±¾ºÅ£¬ÐÞÕýbugºóµÝÔö£¬×î´ó31 */ + +#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))//win64¼°linux64ÏÂÖ¸ÕëΪ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_RESUL¡¢COMM_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; //·µ»ØͼƬµÄ³¤¶È Ϊ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£º¶ÔÓ¦×ÓϵͳµÄ²ÛλºÅ£» + //0xff£º±íʾËÑË÷ËùÓеÄÈÕÖ¾£¬°üÀ¨78KºÍËùÓÐ6467£» + //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-DCIF£¬1-CIF£¬2-QCIF£¬3-4CIF£¬4-2CIF£¬6-QVGA(320*240), 16-VGA£¬17-UXGA£¬18-SVGA£¬19-HD720p£¬20-XVGA£¬21-HD900p£¬22-SXGAp£¬27-HD1080i£¬28-2560*1920£¬29-1600*304£¬30-2048*1536£¬31-2448*2048£¬32-2448*1200£¬33-2448*800 £¬34-XGA£¨1024x768£©£¬35-SXGA£¨1280x1024£©*/ + 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; + +//ºìÂ̵ƹ¦ÄÜ£¨2¸öIOÊäÈëÒ»×飩 +typedef struct tagNET_DVR_LIGHTSNAPCFG +{ + DWORD dwSize; + BYTE byLightIoIn;//ºìÂ̵ƵÄIO ºÅ + BYTE byTrigIoIn;//´¥·¢µÄIOºÅ + BYTE byRelatedDriveWay;//´¥·¢IO¹ØÁªµÄ³µµÀºÅ + BYTE byTrafficLight; //0-¸ßµçƽºìµÆ£¬µÍµçƽÂ̵ƣ»1-¸ßµçƽÂ̵ƣ¬µÍµçƽºìµÆ + BYTE bySnapTimes1; //ºìµÆ×¥ÅÄ´ÎÊý1£¬0-²»×¥ÅÄ£¬·Ç0-Á¬ÅÄ´ÎÊý£¬×î´ó5´Î + BYTE bySnapTimes2; //Â̵Æ×¥ÅÄ´ÎÊý2£¬0-²»×¥ÅÄ£¬·Ç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; + +//²âËÙ¹¦ÄÜ(2¸öIOÊäÈëÒ»×飩 +typedef struct tagNET_DVR_MEASURESPEEDCFG +{ + DWORD dwSize; + BYTE byTrigIo1; //²âËÙµÚ1ÏßȦ + BYTE byTrigIo2; //²âËÙµÚ2ÏßȦ + BYTE byRelatedDriveWay;//´¥·¢IO¹ØÁªµÄ³µµÀºÅ + 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; //Ïà¶Ô³µÎ»ºÅ£¨1¡«4£© + 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*/];//³µÎ»±àºÅ(ʵ¼ÊµÄ³µÎ»±àºÅ) + BYTE byLampFlicker;//0~²»ÉÁ˸ 1 ¡«ÉÁ˸ (³µÎ»Ö¸Ê¾µÆÉÁ˸) + BYTE byLampColor;//0- Ãð 1-ºì 2-ÂÌ 3-»Æ 4-À¶ 5-Æ·ºì 6-Çà 7-°×É« (³µÎ»Ö¸Ê¾µÆÑÕÉ«) + BYTE byStatus; //³µÎ»×´Ì¬ 0-ÎÞ³µ£¬1-Óгµ + BYTE byColorDepth; //³µÉíÑÕÉ«Éîdz£¬0-ÉîÉ«£¬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-×Ô¶¯°×ƽºâ1£¨AWB1£©,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 UP¡¢2 DOWN¡¢3 LEFT¡¢4 RIGHT¡¢5MIDDLE¡¢6×Ô¶¨Ò壬10-¿ª£¬11-×Ô¶¯£¬12-¶àÇøÓò±³¹â²¹³¥*/ + BYTE byBacklightLevel; /*0x0-0xF*/ + BYTE byRes1[2]; + DWORD dwPositionX1; //£¨X×ø±ê1£© + DWORD dwPositionY1; //£¨Y×ø±ê1£© + DWORD dwPositionX2; //£¨X×ø±ê2£© + DWORD dwPositionY2; //£¨Y×ø±ê2£© + 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-×¥ÅÄģʽ1£»1-×¥ÅÄģʽ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.5£¨HV3816P-8MPIR) + 6-private 11-40mm F1.7 (HV1140P-8MPIR) + 7-private 2.7-12mm F1.2£¨TV2712P-MPIR£© + 8- MZ5721D-12MPIR + 9- MZ1555D-12MPIR + 10- MZ5721D-12MPIR(RS485) + 11- MZ1555D-12MPIR(RS485) + */ + BYTE byIrisMode; + BYTE byMirror ; /* ¾µÏñ£º0 off£¬1- leftright£¬2- updown£¬3-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-µ÷É«°å2£¬¡­£¬8-µ÷É«°å8 + BYTE byEnhancedMode; //ÔöÇ¿·½Ê½£¨Ì½²âÎïÌåÖܱߣ©£º0-²»ÔöÇ¿£¬1-1£¬2-2£¬3-3£¬4-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£¬Ä¬ÈÏË÷Òý2£¨¼´3¼¶£©£» + BYTE byRes1; + NET_DVR_TIME_EX struStartTime; //¿ªÊ¼¿í¶¯Ì¬Ê±¼ä + NET_DVR_TIME_EX struEndTime; //½áÊø¿í¶¯Ì¬Ê±¼ä + BYTE byDayNightBrightness; //ÈÕҹת»»ÁÁ¶ÈãÐÖµ£¬0-100£¬Ä¬ÈÏ50£» + //¼ÇÒäÉ«ÔöÇ¿ + BYTE byMCEEnabled;//¼ÇÒäÉ«ÔöǿʹÄÜ£¬true£º¿ªÆô£¬false£º¹Ø±Õ + BYTE byMCELevel;//¼ÇÒäÉ«ÔöÇ¿Ç¿¶È£¬0~100£¬Ä¬ÈÏÖµ50 + //×Ô¶¯¶Ô±È¶È + BYTE byAutoContrastEnabled;//×Ô¶¯¶Ô±È¶ÈʹÄÜ£¬true£º¿ªÆô£¬false£º¹Ø±Õ + BYTE byAutoContrastLevel;//×Ô¶¯¶Ô±ÈµÈ¼¶£¨0-100£©,ĬÈÏ50 + //ϸ½ÚÔöÇ¿ + BYTE byLSEDetailEnabled;//ϸ½ÚÔöǿʹÄÜ£¬true£º¿ªÆô£¬false£º¹Ø±Õ + BYTE byLSEDetailLevel;//ϸ½ÚÔöÇ¿µÈ¼¶£¨0-100£©,ĬÈÏ50 + // License Plate Definition Enhancement³µÅÆÔöÇ¿ + BYTE byLPDEEnabled;//³µÅÆÔöǿʹÄÜ£¬true£º¿ªÆô£¬false£º¹Ø±Õ + BYTE byLPDELevel;//³µÅÆÔöÇ¿µÈ¼¶£¨0-100£©,ĬÈÏ50 + //¶Ô±È¶ÈÔöÇ¿ + BYTE byLseEnabled; //¶Ô±È¶ÈÔöǿʹÄÜ£¬true£º¿ªÆô£¬false£º¹Ø±Õ + BYTE byLseLevel; //¶Ô±È¶ÈÔöÇ¿µÈ¼¶£¨0-100£©,ĬÈÏ0 + BYTE byLSEHaloLevel;//¹âÔÎÒÖÖƵȼ¶¡£·¶Î§ 0-100,ĬÈÏ0 + BYTE byLseType; //¶Ô±È¶ÈÔöÇ¿Çл»Ä£Ê½; 0~Ç¿ÖÆÆôÓã¬1~°´Ê±¼äÆôÓã¬2~°´ÁÁ¶ÈÆôÓ㨸Ã×ֶοÉͬʱ¿ØÖÆbyLseLevel¡¢byLSEHaloLevelÁ½¸ö²ÎÊý£© + BYTE byRes2[3]; + NET_DVR_TIME_EX struLSEStartTime; //¿ªÊ¼¶Ô±È¶ÈÔöǿʱ¼ä£¨µ±byLseTypeΪ1ʱÉúЧ£© + NET_DVR_TIME_EX struLSEEndTime; //½áÊø¶Ô±È¶ÈÔöǿʱ¼ä£¨µ±byLseTypeΪ1ʱÉúЧ£© + BYTE byLightLevel;//ΪÁÁ¶ÈµÈ¼¶²ÎÊý£¨0-100£©,ĬÈÏ0£¬£¨µ±byLseTypeΪ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.5£¨HV3816P-8MPIR) + 6-private 11-40mm F1.7 (HV1140P-8MPIR) + 7-private 2.7-12mm F1.2£¨TV2712P-MPIR£© + 8- MZ5721D-12MPIR + 9- MZ1555D-12MPIR + 10- MZ5721D-12MPIR(RS485) + 11- MZ1555D-12MPIR(RS485) + */ + BYTE byIrisMode; + BYTE byMirror ; /* ¾µÏñ£º0 off£¬1- leftright£¬2- updown£¬3-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-µ÷É«°å2£¬¡­£¬8-µ÷É«°å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-1£¬2-2£¬3-3£¬4-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@25fps¡¢2-640*480@30ps¡¢3-704*576@25fps¡¢4-704*480@30fps¡¢5-1280*720@25fps¡¢6-1280*720@30fps¡¢ + 7-1280*720@50fps¡¢8-1280*720@60fps¡¢9-1280*960@15fps¡¢10-1280*960@25fps¡¢11-1280*960@30fps¡¢ + 12-1280*1024@25fps¡¢13--1280*1024@30fps¡¢14-1600*900@15fps¡¢15-1600*1200@15fps¡¢16-1920*1080@15fps¡¢ + 17-1920*1080@25fps¡¢18-1920*1080@30fps¡¢19-1920*1080@50fps¡¢20-1920*1080@60fps¡¢21-2048*1536@15fps¡¢22-2048*1536@20fps¡¢ + 23-2048*1536@24fps¡¢24-2048*1536@25fps¡¢25-2048*1536@30fps¡¢26-2560*2048@25fps¡¢27-2560*2048@30fps¡¢ + 28-2560*1920@7.5fps¡¢29-3072*2048@25fps¡¢30-3072*2048@30fps¡¢31-2048*1536@12.5¡¢32-2560*1920@6.25¡¢ + 33-1600*1200@25¡¢34-1600*1200@30¡¢35-1600*1200@12.5¡¢36-1600*900@12.5¡¢37-1280*960@12.5fps¡¢38-800*600@25fps¡¢39-800*600@30fps40¡¢ + 4000*3000@12.5fps¡¢41-4000*3000@15fps¡¢42-4096*2160@20fps¡¢43-3840*2160@20fps ¡¢44-960*576@25fps¡¢45-960*480@30fps¡¢46-752*582@25fps¡¢ + 47-768*494@30fps¡¢48-2560*1440@25fps¡¢49-2560*1440@30fps ¡¢50-720P@100fps¡¢51-720P@120fps¡¢52-2048*1536@50fps¡¢53-2048*1536@60fps¡¢ + 54-3840*2160@25fps¡¢55-3840*2160@30fps¡¢56-4096*2160@25fps¡¢57-4096*2160@30fps ¡¢58-1280*1024@50fps¡¢59-1280*1024@60fps¡¢ + 60-3072*2048@50fps¡¢61-3072*2048@60fps¡¢62-3072*1728@25fps¡¢63-3072*1728@30fps¡¢64-3072*1728@50fps¡¢65-3072*1728@60fps¡¢66-336*256@50fps¡¢67-336*256@60fps¡¢ + 68-384*288@50fps¡¢69-384*288@60fps ¡¢70- 640 * 512@50fps ¡¢71- 640 * 512@60fps¡¢72-2592*1944@25fps¡¢73-2592*1944@30fps¡¢74-2688*1536@25fps¡¢75-2688*1536@30fps + 76-2592*1944@20fps¡¢77-2592*1944@15fps¡¢78-2688*1520@20fps¡¢79-2688*1520@15fps¡¢80-2688*1520@25fps¡¢81-2688*1520@30fps¡¢82- 2720*2048@25fps¡¢ 83- 2720*2048@30fps¡¢ + 84-336*256@25fps¡¢85- 384*288@25fps¡¢86-640*512@25fps¡¢87-1280*960@50fps¡¢88-1280*960@60fps¡¢89-1280*960@100fps¡¢90-1280*960@120fps¡¢91-4000*3000@20fps¡¢ + 92-1920*1200@25fps¡¢93-1920*1200@30fps¡¢94-2560*1920@25fps¡¢95-2560*1920@20fps¡¢96-2560*1920@30fps¡¢97-1280*1920@25fps¡¢98-1280*1920@30fps + 99-4000*3000@24fps¡¢100-4000*3000@25fps¡¢101-4000*3000@10fps¡¢102- 384*288@30fps¡¢103-2560*1920@15fps¡¢104-2400*3840@25fps¡¢105-1200*1920@25fps + 106-4096*1800@30fps¡¢107-3840*1680@30fps¡¢108-2560*1120@30fps¡¢109-704*320@30fps¡¢110-1280*560@30fps¡¢111-4096*1800@25fps¡¢112-3840*1680@25fps + 113-2560*1120@25fps¡¢114-704*320@25fps¡¢115-1280*560@25fps¡¢116-2400*3840@24fps¡¢117-3840*2400@24fps¡¢118-3840*2400@25fps¡¢119-2560*1920@12.5fps + 120-2560*2048@12fps¡¢121-2560*2048@15fps¡¢122-2560*1536@25fps¡¢123-2560*1536@30fps¡¢124-2256*2048@25fps¡¢125-2256*2048@30fps¡¢126-2592*2592@12.5fps¡¢127-2592*2592@15fps¡¢ + 128 - 640*512@30fps¡¢129-2048*1520@30fps¡¢130-2048*1520@25fps¡¢131-3840*2160@24fps¡¢132-2592*1520@25fps¡¢133-2592*1520@30fps¡¢134-2592*1536@25fps¡¢135-2592*1536@30fps + 136-640*960@25fps¡¢137-640*960@24fps¡¢139-3840*1080@25fps¡¢140-3840*1080@30fps¡¢142-2992*2192@25fps¡¢143-2992*2192@30fps¡¢144-3008*2160@25fps¡¢145-3008*2160@30fps¡¢ + 146-3072*1728@20fps¡¢147-2560*1440@20fps¡¢148-2160*3840@25fps¡¢149-2160*3840@30fps¡¢150-7008*1080@25fps¡¢151-7008*1080@30fps¡¢152-3072*2048@20fps¡¢153-1536*864@25fps¡¢ + 154-2560*1920@24fps¡¢155-2400*3840@30fps¡¢156-3840*2400@30fps¡¢157-3840*2160@15fps¡¢ + 158-384*288@8.3fps¡¢159-640*512@8.3fps¡¢160-160*120@8.3fps¡¢161-1024*768@8.3fps¡¢162-640*480@8.3fps¡¢163-3840*2160@12.5fps¡¢164-2304*1296@30fps¡¢165-2304*1296@25fps¡¢ + 166-2560*1440@24fps¡¢167-2688*1512@25fps¡¢168-2688*1512@30fps¡¢169-2688*1512@50fps¡¢170-2688*1512@60fps¡¢171-1536*864@30fps¡¢172-2560*1440@50fps¡¢173-2560*1440@60fps¡¢ + 174-2048*2048@25fps¡¢175-2048*2048@30fps¡¢176-4000*3060@20fps¡¢177-3060*3060@25fps¡¢178-3060*3060@30fps¡¢179-3000*3000@25fps¡¢180-3000*3000@30fps¡¢181-8160*3616@30fps¡¢ + 182-8160*3616@25fps¡¢183-3000*3000@20fps¡¢184-3000*3000@15fps¡¢185-3000*3000@12.5fps¡¢186-5472*3648@25fps¡¢187-5472*3648@30fps¡¢188-7680*4320@25fps¡¢189-7680*4320@30fps¡¢ + 190-8160*2400@25fps¡¢191-8160*2400@30fps¡¢192-5520*2400@25fps¡¢193-5520*2400@30fps¡¢194-2560*1440@15fps¡¢195-1944*1212@24fps¡¢196-1944*1212@25fps¡¢197-3456*1920@30fps¡¢ + 198-4800*2688@25fps¡¢199-4800*2688@30fps¡¢200-6480*1080@25fps¡¢201-6480*1080@30fps¡¢202-8640*1440@25fps¡¢203-8640*1440@30fps¡¢204-3456*1920@25fps¡¢205-2688*1520@50fps¡¢ + 206-2688*1520@60fps¡¢207-4976*1452@25fps¡¢208-4976*1452@30fps¡¢ 209-3200*1800@25fps¡¢210-3200*1800@30fps¡¢211-5472*3648@24fps¡¢212-1920*1080@12.5fps¡¢213-2944*1656@20fps¡¢ + 214-1920*1080@24fps¡¢215-4800*1600@25fps¡¢216-4800*1600@30fps¡¢217-2560*1440@12.5fps¡¢218-6560*3690@1fps¡¢219-5120*1400@20fps¡¢220-7680*4320@1fps¡¢221-1920*1080@20fps + 222-5120*1440@20fps¡¢223-4080*1808@25fps¡¢224-4080*1808@30fps¡¢225-4080*1152@25fps¡¢226-4080*1152@30fps¡¢227-2688*1944@20fps¡¢228-2592*1944@24fps¡¢229-3200*1800@15fps¡¢ + 230-4416*1696@20fps¡¢231-3456*1080@25fps¡¢232-3200*1800@12.5fps¡¢233-2688*1532@25fps¡¢234-2688*1532@30fps¡¢235-4416*1696@12.5fps¡¢236-3840*2048P12.5fps¡¢237-3840*4096P12.5fps¡¢ + 238-5120*1440@12.5fps¡¢239-3840*1080@24fps¡¢240-320*256@30fps¡¢241-3264*2448@25fps¡¢242-3264*2448@30fps¡¢243-5430*3054@1fps¡¢244-2688*1520@24@24fps¡¢245-4000*3000@30fps¡¢ + 246-1632*1224@25fps¡¢247-1632*1224@30fps¡¢248-160*120@25fps¡¢249-1920*1440@25fps¡¢250-1920*1440@30fps¡¢-3632*1632@20fps¡¢252-3040*1368@25fps¡¢253-3040*1368@24fps¡¢ + 254-5120*1440@25fps¡¢255-³¬³ö×ֶαíʾ·¶Î§ + É豸ÊäÈëģʽË÷Òý³¬¹ý255ʱ£º + 1£©»ñȡʱ£¬¸Ã×Ö¶ÎֵΪ255£¨ÎÞ¾ßÌ庬Ò壬ÓÃÓÚ±íʾʵ¼ÊÊäÈëģʽË÷ÒýÖµ³¬¹ý255£©£¬Êµ¼ÊÓÉwCaptureModeN¡¢wCaptureModeP±íʾ£» + 2£©ÉèÖÃʱ£¬¸ÃÖµÈÔÐèÒªÉèÖÃΪ255£¬Êµ¼ÊÓÉwCaptureModeN¡¢wCaptureModeP±íʾ¡£ + É豸ÊäÈëģʽË÷ÒýСÓÚ255ʱ£º + 1£©»ñȡʱ£¬¸Ã×Ö¶ÎֵΪʵ¼ÊÊäÈëģʽֵ£¬wCaptureModeN¡¢wCaptureModePÖµÎÞÐè´¦Àí£» + 2£©ÉèÖÃʱ¸Ã×Ö¶ÎΪʵ¼ÊÊäÈëģʽֵ£¬wCaptureModeN¡¢wCaptureModePÖµ±£³Ö²»±ä + */ + 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@50fps¡¢257-3200*1800@20fps¡¢258-800*480@25fps¡¢259-2688*1944@25fps¡¢260-640*384@50fps¡¢261-8000*6000@1fps¡¢262-1440*1080@50fps¡¢263-1440*1080@60fps, + 264-8160*3616@24fps¡¢265-3632*1632@25fps¡¢266-3632*1632@30fps¡¢267-3632*1632@20fps¡¢268-1760*1320@25fps¡¢269-4000*3000@4fps¡¢270-192*256@25fps¡¢271-720*576@25fps¡¢ + 272-720x576@30fps¡¢273-960*432@25fps¡¢274-960*432@30fps¡¢275-1200*536@25fps¡¢276-1200*536@30fps¡¢277-1760*1320@12.5fps¡¢278-2560*480@25fps¡¢279-2048*384@25fps¡¢ + 280-96*96@25fps¡¢281-320*256@25fps,282-6128*1800@25fps,283-6128*1800@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, //ʹ¹Ý³µ + 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, // ¼×¿Ç³æ + 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, //´óÖÚ-¼×¿Ç³æ-2010,2009,2008,2007,2006,2005 + VSR_VOLKSWAGEN_JIAKECHONG_2 = 65, //´óÖÚ-¼×¿Ç³æ-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, // Âí×Ô´ï-Mazda3ÐdzÒÁ½Ïá-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, // »ªÆÕ-º£Óò-2007º£ÓòMB + 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 // ¸£Ìï-ÈøÆÕ-2011ËÄÇýÕ÷·þÕßZ7 +}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; //Ç°Ò»Á¾³µµÄ³µÉí³¤¶È + /*Î¥¹æÀàÐÍ£¬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;//ÊÇ·ñµþ¼Ó³µÉíÑÕÉ«Éîdz£¬0-²»µþ¼Ó£¬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;//´¥·¢IO¹ØÁªµÄ³µµÀºÅ + 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µÄʱ¼ä¶ÎÊý£¨1¡«8£© + 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_CFG£©ÖÐbyBarrierGateCtrl×Ö¶ÎÖ§³ÖË÷Òý4~½âËøµÀÕ¢£¬ÇÒÖ§³ÖbyUnlock½âËøʹÄÜ¡£·´Ö®Ôò±êʶ²»Ö§³Ö + BYTE bySupportWhiteBalance; //°×ƽºâÄÜÁ¦£¬Ä¬È϶¼ÊÇÖ§³ÖÊÖ¶¯°×ƽºâ¡¢×Ô¶¯°×ƽºâ¡¢×Ô¶¯°×ƽºâ2Õâ3ÖÖģʽ¡£ + // 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;//Ô¤ÖõãºÅ1¡«8 , 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] Êý×éϱê±íʾԤÖõãºÅ1¡«8 £¨0¡«7 Ïà¶ÔÓ¦£© + 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] Êý×éϱê±íʾԤÖõãºÅ1¡«8 £¨0¡«7 Ïà¶ÔÓ¦£© + 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;/*ÊÓƵ´¥·¢µÄ³µµÀÊý1*/ + BYTE byPolarLenType; /*Æ«Õñ¾µÀàÐÍ£¬0£º²»¼ÓÆ«Õñ¾µ£»1£º¼ÓÊ©Ä͵ÂÆ«Õñ¾µ¡£*/ + BYTE byDayAuxLightMode; /*°×Ì츨ÖúÕÕÃ÷ģʽ£¬0£ºÎÞ¸¨ÖúÕÕÃ÷£»1£ºLEDµÆÕÕÃ÷£»2£ºÉÁ¹âµÆÕÕÃ÷*/ + BYTE byLoopToCalRoadBright; /*ÓÃÒÔ¼ÆËã·ÃæÁÁ¶ÈµÄ³µµÀ(ÐéÄâÏßȦ)*/ + BYTE byRoadGrayLowTh; /*·ÃæÁÁ¶ÈµÍãÐÖµ³õʼ»¯Öµ1*/ + BYTE byRoadGrayHighTh; /*·ÃæÁÁ¶È¸ßãÐÖµ³õʼ»¯Öµ140*/ + WORD wLoopPosBias; /*Íí¼ä´¥·¢ÏßȦλÒÆ30*/ + DWORD dwHfrShtterInitValue; /*Á¬ÐøͼÏñÆعâʱ¼äµÄ³õʼֵ2000*/ + DWORD dwSnapShtterInitValue; /*×¥ÅÄͼÏñÆعâʱ¼äµÄ³õʼֵ500*/ + DWORD dwHfrShtterMaxValue; /*Á¬ÐøͼÏñÆعâʱ¼äµÄ×î´óÖµ20000*/ + DWORD dwSnapShtterMaxValue; /*×¥ÅÄͼÏñÆعâʱ¼äµÄ×î´óÖµ1500*/ + DWORD dwHfrShtterNightValue; /*Íí¼äÁ¬ÐøͼÏñÆعâʱ¼äµÄÉèÖÃÖµ3000*/ + DWORD dwSnapShtterNightMinValue; /*Íí¼ä×¥ÅÄͼÏñÆعâʱ¼äµÄ×îСֵ3000*/ + DWORD dwSnapShtterNightMaxValue; /*Íí¼ä×¥ÅÄͼÏñÆعâʱ¼äµÄ×î´óÖµ5000*/ + DWORD dwInitAfe; /*ÔöÒæµÄ³õʼֵ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; //ÊÇ·ñÉÏ´«×¥Åĸ½¼ÓÐÅÏ¢µ½FTP£¬0-·ñ£¬1-ÊÇ + BYTE byAutoFormatSD; //ÊÇ·ñ×Ô¶¯¸ñʽ»¯SD¿¨£¬0-·ñ£¬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=232´¥·¢£¬0x8=485´¥·¢£¬0x10=ÍøÂç´¥·¢*/ + 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; /*ʶ±ðµÄ³µµÀÊý*/ + BYTE byRes1; /*±£Áô*/ + WORD wRecognizedLane; /*ʶ±ðµÄ³µµÀºÅ£¬°´Î»±íʾ£¬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-VGA£¨640*480£©, 17-UXGA£¨1600*1200£©, 18-SVGA £¨800*600£©,19-HD720p£¨1280*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-VGA£¨640*480£©, 17-UXGA£¨1600*1200£©, 18-SVGA £¨800*600£©,19-HD720p£¨1280*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 DVR£¬51-100 DVS£¬101-150 NVR£¬151-200 IPC£¬65534 ÆäËû£¬¾ßÌå·ÖÀà·½·¨¼û¡¶É豸ÀàÐͶÔÓ¦ÐòÁкźÍÀàÐÍÖµ.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.0Ôö¼Ó14-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-½ûÓÃSNMP£¬1-±íʾÆôÓÃ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 V1£¬1-±íʾÆôÓÃSNMP V1 + BYTE byEnableV2; //0-½ûÓÃSNMP V2£¬1-±íʾÆôÓÃSNMP V2 + BYTE byEnableV3; //0-½ûÓÃSNMP V3£¬1-±íʾÆôÓÃ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; /* ÓòÃû·þÎñÆ÷1µÄIPµØÖ· */ + NET_DVR_IPADDR struDnsServer2IpAddr; /* ÓòÃû·þÎñÆ÷2µÄIPµØÖ· */ + BYTE byDns; + BYTE byDhcp; + BYTE szGB28181DevID[DEV_ID_LEN]; //GB28181ЭÒé½ÓÈëʱµÄÉ豸ID£¬ÓÃÓÚIPCÒÔGB28181ЭÒé½ÓÈë + 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; //ʹÓñ¸·ÝÅäÖÃÖеIJÎÊý£¬0-ÎÞЧ£¬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; // ÊÚȨµÄDVRÍøÅÌIP + 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;//¼¶ÁªÊÓƵ×ÛºÏƽ̨ºÅ£¬×ÓϵͳÀàÐÍÊÇ3»ò4ʱ¿ÉÓà + BYTE bySubSystemNum;//¼¶Áª×Óϵͳ²ÛλºÅ£¬0~79£¬×ÓϵͳÀàÐÍÊÇ3»ò4ʱ¿ÉÓà + 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; //×Ó°åºÅ£¬´Ó1Æð£¬B10²»Ö§³Ö¸Ã×ֶΣ¬ÎÞЧ£¬ÖÃΪ0xff + BYTE byRes1[2]; + BYTE bySubSystemChan[8]; //×Ó°å²ÛλºÅ,Ò»¸ö×Ó°åÖÐÓÐ8¸ö×Óϵͳ£¬Æä·Ö±ð¶ÔÓ¦µÄ²ÛλºÅ£¬×ÓϵͳÒ쳣ʱ£¬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=1»ò2ʱ£¬ + 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=6»ò7ʱ, + 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; //CU¶ËIPµØÖ· + 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; //PU¶ËÍâÍøIPµØÖ· + WORD wOuterPort;/*PUÍâÍø¶Ë¿Ú*/ + WORD wInterPort;//PU·¢ËÍÊÓƵµÄ±¾µØ¶Ë¿Ú + DWORD nSessionID;//CMS·ÖÅäµÄsessionID + 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;//CMS·ÖÅäµÄsessionID +}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; //CU¶ËIPµØÖ· + WORD wPort;/*CU¶Ë¿Ú*/ + BYTE byRes2[2]; + DWORD dwSessionID;//CMS·ÖÅäµÄsessionID,Êä³ö²ÎÊý + 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;//CMS·ÖÅäµÄsessionID + BYTE byRes2[44]; +}NET_DVR_PLAYBACKCALLBACKPARAM, *LPNET_DVR_PLAYBACKCALLBACKPARAM; + +typedef struct tagNET_DVR_VOICEREQUESETPARAM +{ + BYTE nVoiceChannel; //¶Ô½²Í¨µÀºÅ + BYTE byRes1[3]; + NET_DVR_IPADDR struCuIp; //CU¶ËIPµØÖ· + WORD wPort;/*CU¶Ë¿Ú*/ + BYTE byRes2[10]; +}NET_DVR_VOICEREQUESTPARAM, *LPNET_DVR_VOICEREQUESTPARAM; + +typedef struct tagNET_DVR_ALARMSETUPREQUESETPARAM +{ + NET_DVR_IPADDR struCuIp; //CU¶ËIPµØÖ· + 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; /*ʱÇø£¬Ó÷ÖÖÓÊý±íʾ£¬+60´ú±í¶«1Çø£¬+480´ú±í¶«8Çø£¬-60´ú±íÎ÷Çø£¬-480´ú±íÎ÷8Çø£¬¸Ã×ֶκÍ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;//CMSÓÃÓÚUDPÍâÍø²éѯµÄ¶Ë¿Ú + 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;1£º3GÓÅÏÈ£¬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£º×Ô¶¯£»1£ºCDMA£»2£ºEVDO£»3£ºWCDMA£»4£ºTD-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ʱ¼ä£¨struStartTimeºÍstruEndTimeµÄʱ¼ä£© + BYTE byRes2[2]; //±£Áô + DWORD dwBeginSerialNo; //ÆðʼÁ÷Ë®ºÅ£¨Îª0ʱĬÈÏÈ«²¿£© + DWORD dwEndSerialNo; //½áÊøÁ÷Ë®ºÅ£¨Îª0ʱĬÈÏÈ«²¿£© + DWORD dwIOTChannelNo; //IOTͨµÀºÅ£¬0-ÎÞЧ + WORD wInductiveEventType; //¹éÄÉʼþÀàÐÍ£¬0-ÎÞЧ£¬ÆäËûÖµ²Î¼û2.2Õ½ڣ¬¿Í»§¶ËÅжϸÃֵΪ·Ç0Öµºó£¬±¨¾¯ÀàÐÍͨ¹ý¹éÄÉʼþÀàÐÍÇø·Ö£¬·ñÔòͨ¹ýÔ­Óб¨¾¯Ö÷´ÎÀàÐÍ£¨dwMajor¡¢dwMinor£©Çø·Ö + 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-IC¶Á¿¨Æ÷£¬2-Éí·ÝÖ¤¶Á¿¨Æ÷£¬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; //Íø¿ÚID£º£¨1-ÉÏÐÐÍø¿Ú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; //ͼƬÊý¾Ý´óС£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + char *pPicData; + WORD wInductiveEventType; //¹éÄÉʼþÀàÐÍ£¬0-ÎÞЧ£¬ÆäËûÖµ²Î¼û2.2Õ½ڣ¬¿Í»§¶ËÅжϸÃֵΪ·Ç0Öµºó£¬±¨¾¯ÀàÐÍͨ¹ý¹éÄÉʼþÀàÐÍÇø·Ö£¬·ñÔòͨ¹ýÔ­Óб¨¾¯Ö÷´ÎÀàÐÍ£¨dwMajor¡¢dwMinor£©Çø·Ö + BYTE byTimeType; //ʱ¼äÀàÐÍ£º0-É豸±¾µØʱ¼ä£¨Ä¬ÈÏ£©£¬1-UTCʱ¼ä£¨struTimeµÄʱ¼ä£© + BYTE byRes1; + DWORD dwQRCodeInfoLen; //¶þάÂëÐÅÏ¢³¤¶È£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + DWORD dwVisibleLightDataLen; //ÈȳÉÏñÏà»ú¿É¼û¹âͼƬ³¤¶È£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + DWORD dwThermalDataLen; //ÈȳÉÏñͼƬ³¤¶È£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + 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Ϊ2»ò3,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Ϊ2»ò3,6£¬9£¬10ʱ£¬±íʾÄĸöͨµÀ£¬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; /*Ƿѹ±£»¤°Ù·Ö±È£¬ÓÐ85¡¢90¡¢95Èý¸öÓÐЧֵ*/ + BYTE byRes[34]; +}NET_DVR_MB_POWERCTRLPARA, *LPNET_DVR_MB_POWERCTRLPARA; +/*×¢£º1£©¡¢¹Ø»úÑÓ³Ùʱ¼ä, ¿Éѡʱ¼äΪ 0£¬5·ÖÖÓ£¬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; /* ³µÅÆʶ±ðµÄ³¡¾°, µÍËÙ³¡¾°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-ÓïÒôת·¢£¨SDK²»½øÐÐÓïÒôµÄ²É¼¯ºÍ²¥·Å£© + 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-HHHH¡¢14-HHHL¡¢12-HHLL¡¢8HLLL¡¢0-LLLL£¬¼´£º1111£¨ÉÏÉÏÉÏÉÏ£©£¬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~20mA£¬1- 0~5V£¬2- 0~2.5Mpa£¬3- 0~1.6Mpa£¬4- 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-10ms¡¢1-250ms¡¢2-500ms¡¢3-750ms + BYTE byArrayBypass;//ÊÇ·ñ¼ÓÈëÅÔ·×é,0-²»Ö§³Ö×éÅÔ·,1-Ö§³Ö×éÅÔ· + BYTE byJointSubSystem; //·ÀÇøËùÊôµÄ×ÓϵͳºÅ£¬¸Ã²ÎÊýÖ»ÄÜ»ñÈ¡ + BYTE byModuleStatus; //Ä£¿é״̬ 1-ÔÚÏß 2-ÀëÏß + WORD wModuleAddress; //Ä£¿éµØÖ·£¬À©Õ¹Ä£¿é´Ó0~255£¬0xFFFF±íʾÎÞЧ + BYTE byModuleChan; //Ä£¿éͨµÀºÅ£¬´Ó1¿ªÊ¼£¬×î´óÖµ¸ù¾ÝÄ£¿éÀàÐÍÀ´¾ö¶¨£¬0xFF±íʾÎÞЧ + BYTE byModuleType; //Ä£¿éÀàÐÍ£¬1-±¾µØ·ÀÇø£¬2-µ¥·ÀÇø£¬3-Ë«·ÀÇø£¬4-8·ÀÇø£¬5-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.3£¬3--4.7£¬4--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-10ms¡¢1-250ms¡¢2-500ms¡¢3-750ms + BYTE byArrayBypass;//ÊÇ·ñ¼ÓÈëÅÔ·×é,0-²»Ö§³Ö×éÅÔ·,1-Ö§³Ö×éÅÔ· + BYTE byJointSubSystem; //·ÀÇøËùÊôµÄ×ÓϵͳºÅ£¬¸Ã²ÎÊýÖ»ÄÜ»ñÈ¡ + BYTE byModuleStatus; //Ä£¿é״̬ 1-ÔÚÏß 2-ÀëÏß + WORD wModuleAddress; //Ä£¿éµØÖ·£¬À©Õ¹Ä£¿é´Ó0~255£¬0xFFFF±íʾÎÞЧ + BYTE byModuleChan; //Ä£¿éͨµÀºÅ£¬´Ó1¿ªÊ¼£¬×î´óÖµ¸ù¾ÝÄ£¿éÀàÐÍÀ´¾ö¶¨£¬0xFF±íʾÎÞЧ + BYTE byModuleType; //Ä£¿éÀàÐÍ£¬1-±¾µØ·ÀÇø£¬2-µ¥·ÀÇø£¬3-Ë«·ÀÇø£¬4-8·ÀÇø£¬5-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.3£¬3--4.7£¬4--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~255£¬0xFFFF±íʾÎÞЧ + 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¶ÔÓ¦·ÀÇø1£¬0xff-ÎÞЧ£¬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-°´ÕÕµçÁ¿×´Ì¬±íʾ£¬Ê¹ÓÃbyPowerStausEnabledºÍbyDetetorPowerStatus×ֶΠ+ 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-°´ÕÕµçÁ¿×´Ì¬±íʾ£¬Ê¹ÓÃbyPowerStausEnabledºÍbyDetetorPowerStatus×ֶΠ+ 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´ò¿ª£¬ÎªÈ·±£¼æÈÝÐÔ£¬µÚÒ»¸öµçËøµÄ״̬ÔÚbySirenStatusµÚ0λҲÐèÒªÌîд + 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; //GPRSÖÐÐÄÊý£¬×î¶à4¸ö + BYTE byNetNum; //ÍøÂçÖÐÐÄÊý£¬×î¶à4¸ö + BYTE byAudioNum; //ÒôƵ¸öÊý + BYTE by3GNum; //3GÄ£¿é¸öÊý + BYTE byAnalogVideoChanNum; //Ä£ÄâÊÓƵͨµÀ¸öÊý + BYTE byDigitalVideoChanNum; //Êý×ÖÊÓƵͨµÀ¸öÊý + BYTE bySubSystemArmType; //×Óϵͳ²¼·ÀÀàÐÍ£¬0-±íʾ²»Ö§³Ö£¬1-±íʾ֧³Ö¡£bit0-ÆÕͨ²¼·À£¨×¢£ºÍøÂçСÖ÷»úÖ»Ö§³ÖÆÕͨ²¼·À£¬ÔÚÄÜÁ¦¼¯ÖмÓÕâ¸ö×ֶεÄʱºòÍøÂçСÖ÷»úÒѾ­·¢²¼£¬ËùÒÔÍøÂçСÖ÷»úÖиÃ×Ö¶ÎΪ0£¬ËùÒÔÓÃ0±íʾ֧³Ö£¬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-50£¬1-75£¬2-110£¬3-150£¬4-300£¬5-600£¬6-1200£¬7-2400£¬8-4800£¬9-9600£¬10-19200£¬11-38400£¬12-57600£¬13-76800£¬14-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 1£©£¬1-ÓÐȨÏÞ£¬0-ÎÞȨÏÞ + BYTE byNetRecordRight[MAX_ALARMHOST_VIDEO_CHAN/8]; // Ô¶³Ì¿ÉÒÔ¼ÏñµÄͨµÀ£¬°´Î»±íʾ¸÷ͨµÀ£¨bit0-channel 1£©£¬1-ÓÐȨÏÞ£¬0-ÎÞȨÏÞ + BYTE byNetPlaybackRight[MAX_ALARMHOST_VIDEO_CHAN/8]; // Ô¶³Ì¿ÉÒԻطŵÄͨµÀ£¬°´Î»±íʾ¸÷ͨµÀ£¨bit0-channel 1£©£¬1-ÓÐȨÏÞ£¬0-ÎÞȨÏÞ + BYTE byNetPTZRight[MAX_ALARMHOST_VIDEO_CHAN/8]; // Ô¶³Ì¿ÉÒÔPTZµÄͨµÀ£¬°´Î»±íʾ¸÷ͨµÀ£¨bit0-channel 1£©£¬1-ÓÐȨÏÞ£¬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-ÉÏ4¡¢2-ÉÏ3¡¢3-ÉÏ2¡¢4-ÉÏ1¡¢5-ÏÂ1¡¢6-ÏÂ2¡¢7-ÏÂ3¡¢8-ÏÂ4 ºÍµ±Ç°Ä£Ê½ÓÐ¹Ø + // ÀýÈ統Ϊ1000ʱ,ÓÐÉÏ1ÏÂ1£¬2£¬3±¨¾¯ËÄÖÖ±¨¾¯ + BYTE byAlarmMode; //±¨¾¯Ä£Ê½£¬ÎåÖÖ£¬-HHHH¡¢-HHHL¡¢-HHLL¡¢HLLL¡¢-LLLL£¬ ×÷Ϊƽ̨±¨¾¯³Ì¶ÈÅжϹ¦ÄÜ,¼´£º1111£¨ÉÏÉÏÉÏÉÏ£©£¬1110£¨ÉÏÉÏÉÏÏ£©£¬1100£¨ÉÏÉÏÏÂÏ£©£¬1000(ÉÏÏÂÏÂÏÂ)£¬0000(ÏÂÏÂÏÂÏÂ) + float fValue; // µ«Ç°Ä£ÄâÁ¿µÄÖµ + float fOriginalValue; //ԭʼµçÁ÷µçѹֵ£¬±£ÁôСÊýµãºóÈý룬¾ßÌåÖµ±íʾµçÁ÷»¹Êǵçѹ¸ù¾ÝNET_DVR_SENSOR_INFOµÄbySensorStandardÀàÐÍ + 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 G4»òÕßN1£¬N2£¬N3£¬N4»òÕßT1£¬T2£¬T3£¬T4 +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/S£¬1-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; // ´¥·¢Camµ½MonºÅÏÔʾ + 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; // ЭÒéÀàÐÍ£¬¶ÔÓ¦LEDÆÁµÄ³§¼Ò + 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-24£¨1×î¿ì£¬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]µÄ¹Ø»úʱ¼äÊÇ10£º00ÄÇô£¬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¸ö×Ö½Ú±íʾÿ¸öʱ¶ÎµÄÁÁ¶È¼¶±ð£¬ÁÁ¶È¹²16¼¶£¬ÓÃ0~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-TCP£¬1-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-DNS£¬3-»¨Éú¿Ç + 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];/*DNSÓòÃû»òIPµØÖ·*/ + 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±íʾ֧³Ö4¸öD1 + WORD wTrunkOutToInAbility;//¸ÉÏß´ø¿í£¬°´D1µÄ±ê×¼ºâÁ¿£¬Èç4±íʾ֧³Ö4¸öD1£¬Ë«Ïò¹âÏËʱÓõ½´ËÖµ + 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-DNS£¬3-»¨Éú¿Ç + 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];/*DNSÓòÃû»òIPµØÖ·*/ + BYTE sSerialNumber[SERIALNO_LEN];//ÐòÁкţ¨´Ë²ÎÊýÖ»ÄÜ»ñÈ¡£© + BYTE byBelongBoard;//ËùÊô×Ó°åºÅ£¬´Ó1¿ªÊ¼£¬0xff±íʾÎÞЧ + BYTE byInterfaceType;//½Ó¿ÚÀàÐÍ£¬0-ÎÞÀàÐÍ£¬1-BNC£¬2-VGA£¬3-HDMI£¬4-DVI£¬5-SDI, 6-FIBER, 7-RGB, 8-YPrPb, 9-VGA/HDMI/DVI×ÔÊÊÓ¦£¬10-3GSDI, 11-VGA/DVI×ÔÊÊÓ¦£¬12-HDTVI£¬13-HDBaseT£¬14-DP£¬15-DVIT£¬16-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-BNC£¬2-VGA£¬3-HDMI£¬4-DVI£¬5-SDI, 6-FIBER, 7-RGB, 8-YprPb, 9-VGA/HDMI/DVI×ÔÊÊÓ¦£¬10-3GSDI, 11-VGA/DVI×ÔÊÊÓ¦£¬12-HDTVI£¬13-HDBaseT£¬14-DP£¬15-DVIT£¬0xff-ÎÞЧ + 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;//¼¶ÁªÊÓƵ×ÛºÏƽ̨ºÅ£¬×ÓϵͳÀàÐÍÊÇ3»ò4ʱ¿ÉÓà + BYTE bySubSystemNum;//¼¶Áª×Óϵͳ²ÛλºÅ£¬0~79£¬×ÓϵͳÀàÐÍÊÇ3»ò4ʱ¿ÉÓà + NET_DVR_DECSUBSYSTEMJIONSTATUS struDecSub [MATRIX_MAXDECSUBSYSTEMCHAN]; + BYTE byBindStatus;//°ó¶¨×´Ì¬£¬0-ûÓа󶨣¬1-ÒѾ­°ó¶¨£¨´óÆÁÆ´½ÓʱÓõ½£© + BYTE bySlotNum ;//²ÛλºÅ£¬´Ë²ÎÊýÖ»ÄÜ»ñÈ¡ + //×ÓϵͳÀàÐÍΪ1µÄʱ¿ÉÓã¬0-δ¹ØÁª£¬1-D1£¬2-720£¬3-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±íʾ֧³Ö4¸öD1 + BYTE byOpticalFiberNum;//¹âÏËÌõÊý + BYTE byRes[197]; + }struInputSystemAbility; + struct + { + WORD wTrunkAbility;//¸ÉÏß´ø¿í£¬°´D1µÄ±ê×¼ºâÁ¿£¬Èç4±íʾ֧³Ö4¸öD1 + 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±íʾ֧³Ö4¸öD1 + WORD wTrunkAbility[MAX_OPTICALFIBER_NUM/*16*/]; + BYTE byRes2[164]; + }struInOutputSystemAbility; + struct + { + BYTE bySupportRingProtocol; //ÊÇ·ñÖ§³Ö»·ÍøЭÒé + BYTE bySupportRingNums; //Ö§³Ö»·ÍøÊýÁ¿ + BYTE bySupportPortNums; //Ö§³ÖµÄ¶Ë¿ÚÊýÁ¿ + BYTE byRes[1]; + DWORD dwPortSupportRingProto; //ÿ¸ö¶Ë¿ÚÊÇ·ñÖ§³Ö»·ÍøЭÒ飬°´Î»Ë㣬1¡«32λ·Ö±ð±íʾ1¡«32¶Ë¿Ú£¬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;//ÊÇ·ñÖ§³ÖNAT£¬0-²»Ö§³Ö£¬1-Ö§³Ö + BYTE byInputSubSystemNums;//¼¶ÁªÊäÈë×ÓϵͳÊýÁ¿ + BYTE byOutputSubSystemNums;//¼¶ÁªÊä³ö×ÓϵͳÊýÁ¿ + BYTE byCodeSpitterSubSystemNums;//Âë·Ö×ÓϵͳÊýÁ¿ + BYTE byAlarmHostSubSystemNums;//±¨¾¯×ÓϵͳÊýÁ¿ + BYTE bySupportBigScreenNum;//ËùÖ§³Ö×î¶à×é³É´óÆÁµÄ¸öÊý + BYTE byVCASubSystemNums;//ÖÇÄÜ×ÓϵͳÊýÁ¿ + BYTE byV6SubSystemNums;//V6×ÓϵͳÊýÁ¿ + BYTE byV6DecoderSubSystemNums;//V6½âÂë×ÓϵͳÊýÁ¿ + BYTE bySupportBigScreenX;/*´óÆÁÆ´½ÓµÄģʽ£ºm¡Án*/ + 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/B12£¬1-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;//ÊÇ·ñÖ§³ÖNAT£¬0-²»Ö§³Ö£¬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±íʾ²»Ê¹ÓÃeh4£¬»ùÓÚbyBondÀ©Õ¹ + 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-Barth¨¦lemy Ê¥°ÍÌ©ÀÕÃ×µº£¨·¨¹úº£ÍâÁìÍÁ£© + 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, //Polyn¨¦sie 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-Barth¨¦lemy Ê¥°ÍÌ©ÀÕÃ×µº£¨·¨¹úº£ÍâÁìÍÁ£© + 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, //Polyn¨¦sie 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- PIR±¨¾¯£¬11- ÎÞÏß±¨¾¯£¬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; // ʼþÀàÐÍ£º0±£Áô£¬1-½»Í¨Ê¼þ£»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:PAL£¬0-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 + { + /*¸÷¸ö×Ó´°¿Ú¶ÔÓ¦½âÂëͨµÀËù¶ÔÓ¦µÄ½âÂë×ÓϵͳµÄ²ÛλºÅ(¶ÔÓÚÊÓƵ×ÛºÏƽ̨ÖнâÂë×ÓϵͳÓÐЧ)*/ + 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 ʹÓÃÒÑÓг£¹æÅäÖÃ; ·Ç0£¬°´ÕÕmodeÖµ£¬ 1-µçÓ° 2-»­Öл­1 3-»­Öл­2 4-Ë«»­Ãæ 5-Èý»­Ãæ1 6-Èý»­Ãæ2 7-ËÄ»­Ãæ1 8-ËÄ»­Ãæ2 */ + BYTE byQuick; /* ÊÇ·ñΪ¿ìËÙÅäÖ㬠1-¿ìËÙÅäÖ㨲»ÅäÖòÎÊýµ½flash£©£¬0-³£¹æÅäÖã¨ÅäÖòÎÊýµ½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-32¡¢1-48¡¢2-64¡¢3-80¡¢4-96¡¢5-128¡¢ + //6-160¡¢7-192¡¢8-224¡¢9-256¡¢10-320¡¢11-384¡¢12-448¡¢ + //13-512¡¢14-640¡¢15-768¡¢16-896Ç°16¸öÖµ±£Áô)17-1024¡¢18-1280¡¢19-1536¡¢ + //20-1792¡¢21-2048¡¢22-3072¡¢23-4096¡¢24-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-³öÅÌģʽ ´æÅÌģʽ£º¿Ì¼Íê³ÉµÄ¹âÅ̹鵵µ½³öÅÌÍ°ÉÏ£»¿Ì¼ʧ°ÜµÄ¹âÅÌ£¬»úе±Û½«»µÅÌÖ±½Óͨ¹ýÖмäµÄ³öÅÌλÖõ¯³ö¡£³öÅÌģʽ£º½«¿Ì¼ºÃµÄ¹âÅÌ´ÓÖмäµÄ³öÅÌλÖóöÅÌ£¬¿Ì¼ʧ°ÜµÄ¹âÅ̷ŵ½³öÅÌÍ°Àï + 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µÄ¾ÉÃÜÂ룬´«¸øDVRÈÃDVRÑéÖ¤ + 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ÉèÖÃÇ°¶ËIPCµÄIPµØÖ· +typedef struct tagNET_DVR_IPC_NETCFG +{ + DWORD dwSize; //½á¹¹Ìå´óС + NET_DVR_IPADDR struIP; //IPCµÄIPµØÖ· + 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-Òƶ¯Õì²â£¬2£­±¨¾¯´¥·¢£¬3-±¨¾¯´¥·¢»òÒƶ¯Õì²â£¬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, //ÉÏ´«TG£¨Timing 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°æ±¾ 4£ºSOCKS4 5£ºSOCKS5 + 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-CA£¬1-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; //͸Ã÷¶È£¬0¡«100 + 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 +/*ÉãÏñ»úÐÅÏ¢,×î¶à9999¸ö£¬´Ó1¿ªÊ¼ */ +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-BNC£¬2-SP3,3-V6¹âÏË£¬4-ÆäËû¹âÏË*/ + BYTE byUsedByTrunk;//µ±Ç°Ê¹ÓÃ״̬£¬0-ûÓб»Ê¹Óã¬1-±»¸ÉÏßʹÓà + BYTE byTrunkReq; /*ÉãÏñ»ú·Ö±æÂÊ,ÒÔD1Ϊµ¥Î»£º1 - 1¸öD1£¬2- 2¸öD1£¬×÷Ϊ¸ÉÏßʹÓÃʱ£¬Ö¸µÄÊǸÉÏߵĴø¿í*/ + 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-BNC£¬2-SP3,3-V6¹âÏË£¬4-ÆäËû¹âÏË*/ + BYTE byUsedByTrunk;//µ±Ç°Ê¹ÓÃ״̬£¬0-ûÓб»Ê¹Óã¬1-±»¸ÉÏßʹÓà + BYTE byTrunkReq; /*·Ö±æÂÊ, ÒÔD1Ϊµ¥Î»£º1- 1¸öD1£¬2- 2¸öD1£¬×÷Ϊ¸ÉÏßʹÓÃʱ£¬Ö¸µÄÊǸÉÏߵĴø¿í*/ + 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¸öÓû§£¬1¡«256 +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-BNC£¬2-SP3¹âÏ˸ßÇ壬3-SP3¹âÏËD1£¬ 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~4³¡¾°£¬0ΪÎÞЧ + BYTE byInvalCapFilterEnable;//ÎÞЧץÅĹýÂËʹÄÜ£¬0Ϊ¹Ø±Õ£¬1Ϊ¿ªÆô£¬Ä¬ÈÏΪ0 + BYTE byInvalCapFilterThreshold;//ÎÞЧץÅĹýÂËãÐÖµ£¬0~100£¬µ±byInvalCapFilterEnableΪ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-»ªÊ϶ȣ¨¨H£©£¬2-¿ª¶ûÎÄ(K) + NET_DVR_TIME_EX struEnterTime; // ×î¼Ñ×¥ÅÄϽøÈëʱ¼ä + NET_DVR_TIME_EX struExitTime; // ×î¼Ñ×¥ÅÄÏÂÀ뿪ʱ¼ä + float fFaceTemperature; // ÈËÁ³Î¶ȣ¨ - 20.0¡æ~150.0¡æ£¬¾«È·µ½Ð¡Êýµãºó1λ¡£ÆäÖÐ0xffff£¨65535£©±íʾÎÞЧ£¬¿ªÆôÒþ²ØζÈÖµ¹¦ÄÜʱ·µ»Ø£© + 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))//win64¼°linux64ÏÂÖ¸ÕëΪ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; //ÈËÁ³×ÓͼµÄ³¤¶È£¬Îª0±íʾûÓÐͼƬ£¬´óÓÚ0±íʾÓÐͼƬ + DWORD dwBackgroundPicLen; //±³¾°Í¼µÄ³¤¶È£¬Îª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_INFOÀïµÄbyIvmsChannelº¬ÒåÏàͬ£¬Äܱíʾ¸ü´óµÄÖµ¡£ÀÏ¿Í»§¶ËÓÃ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; //±³¾°Í¼µÄ³¤¶È£¬Îª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_INFOÀïµÄbyIvmsChannelº¬ÒåÏàͬ£¬Äܱíʾ¸ü´óµÄÖµ¡£ÀÏ¿Í»§¶ËÓÃ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_INFOÀïµÄbyIvmsChannelº¬ÒåÏàͬ£¬Äܱíʾ¸ü´óµÄÖµ¡£ÀÏ¿Í»§¶ËÓÃ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_INFOÀïµÄbyIvmsChannelº¬ÒåÏàͬ£¬Äܱíʾ¸ü´óµÄÖµ¡£ÀÏ¿Í»§¶ËÓÃ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))//win64¼°linux64ÏÂÖ¸ÕëΪ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; //×¥ÅÄÈËÁ³×ÓͼµÄ³¤¶È£¬Îª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_ENUM£¬Èô´«Èë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; //½ûÖ¹Ãûµ¥ÈËÁ³×ÓͼµÄ³¤¶È£¬Îª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 + { + /*¸÷¸ö×Ó´°¿Ú¶ÔÓ¦½âÂëͨµÀËù¶ÔÓ¦µÄ½âÂë×ÓϵͳµÄ²ÛλºÅ(¶ÔÓÚÊÓƵ×ÛºÏƽ̨ÖнâÂë×ÓϵͳÓÐЧ)*/ + //Èç¹û×ÛºÏƽ̨֧³Ö×Ô¶¯·ÖÅä½âÂë×ÊÔ´£¬´Ë²ÎÊý²»ÐèÒªÌî³ä + 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-BNC£¬1-VGA£¬2-HDMI£¬3-DVI£¬4-YPbPr(½âÂ뿨·þÎñÆ÷DECODER_SERVERרÓÃ)*/ + BYTE byVedioFormat; /*1:NTSC,2:PAL£¬0-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-BNC£¬1-VGA£¬ 2-HDMI£¬3-DVI£¬4-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:PAL£¬0-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-TCP£¬1-UDP £¬2-MCAST£¬3-RTP*/ + BYTE byTransMode; /* ´«ÊäÂëÁ÷ģʽ 0£­Ö÷ÂëÁ÷ 1£­×ÓÂëÁ÷*/ + BYTE byFactoryType; /*Ç°¶ËÉ豸³§¼ÒÀàÐÍ*/ + BYTE byDeviceType; //É豸ÀàÐÍ£¬1-IPC£¬2- 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-TCP£¬1-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; //¹ØÁªµÄ²ÛλºÅ£¨ÍòÄܽâÂë°åµÄ²ÛλºÅ£© + 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;//´óÆÁÅäÖûº³åÇø, byBigScreenNums¡Ásizeof(NET_DVR_BIGSCREENCFG_SCENE) + BYTE *pDecChanBuffer;//½âÂëͨµÀÅäÖûº³åÇø, wDecChanNums¡Ásizeof(NET_DVR_DECODECHANCFG_SCENE) + BYTE *pDispChanBuffer;//ÏÔʾͨµÀÅäÖûº³åÇø, wDispChanNums¡Ásizeof(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; /*ÊÓƵÖÆʽ£¬1£ºNTSC,2£ºPAL,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-±³°å£¬±¨¾¯ÀàÐÍΪ1£¬2£¬3£¬6µÄʱºòʹÓà + BYTE bySubException; //ÊäÈëÒ쳣ʱ¾ßÌå×ÓÒì³£ 1- ·Ö±æÂÊÕý³£¸Ä±ä 2-ÊäÈë¶Ë¿ÚÀàÐ͸ıä3-·Ö±æÂÊ´íÎó4-·Ö±æÂʸı䵼Ö½âÂë×ÊÔ´²»×㣬¹Ø±Õ¸ÃÊäÈëÔ´¶ÔÓ¦´°¿Ú¡£5-·Ö±æÂʸı䣬µ¼ÖÂÒÑ¿ª´°µÄËõ·Å±ÈÀý²»ÔÚ1/8µ½8±¶·¶Î§¡£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-bmp£¬2-jpg£¬3-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; //Ö¸ÏòdwInputSignalNums¸öNET_DVR_PLAN_CFG½á¹¹´óСµÄ»º³åÇø + BYTE byWallNo; //ǽºÅ£¬´Ó1¿ªÊ¼ + BYTE byRes1[2]; + DWORD dwBufLen; //Ëù·ÖÅ仺³åÇø³¤¶È£¬ÊäÈë²ÎÊý£¨´óÓÚµÈÓÚdwInputSignalNums¸öNET_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-SDI¸ßÇåDVR Ïà»úÐÅÏ¢ +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 in£¬1-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; //Ö¸ÏòdwInputSignalNums¸öNET_DVR_INPUTSTREAMCFG½á¹¹´óСµÄ»º³åÇø + BYTE byRes1[3]; + DWORD dwBufLen; //Ëù·ÖÅ仺³åÇø³¤¶È£¬ÊäÈë²ÎÊý£¨´óÓÚµÈÓÚdwInputSignalNums¸öNET_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-ÊÇ£¨¶ÔÓÚË«ÂëÁ÷É豸£¬Ä³Ò»¶Îʱ¼äÄڵļÏñÎļþÓëÖ¸¶¨ÂëÁ÷ÀàÐͲ»Í¬£¬Ôò·µ»Øʵ¼ÊÂëÁ÷ÀàÐ͵ļÏñ£© + 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-PIR±¨¾¯£¬11-ÎÞÏß±¨¾¯£¬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-3ÂëÁ÷£¬0xff-È«²¿ + 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½Ó¿ÚµÄ³¬Ê±Ê±¼ä·µ»Ø£©£»µ¥Î»£ººÁÃ룬²»Ìîд£¨Ä¬ÈÏΪ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; //Ö÷ÂëÁ÷´«ÊäÀàÐÍ 0£ºAuto 1£ºudp 2£ºrtp over rtsp + WORD wMainPort; //Ö÷ÂëÁ÷¶Ë¿Ú + char sMainPath[MAX_PRO_PATH]; //Ö÷ÂëÁ÷·¾¶ + + BYTE bySubProType; //×ÓÂëÁ÷ЭÒéÀàÐÍ 1 RTSP + BYTE bySubTransType; //×ÓÂëÁ÷´«ÊäÀàÐÍ 0£ºAuto 1£ºudp 2£ºrtp 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-±»Õ¼Óã¬byDecodeAbility´óÓÚ1ʱÓÐЧ£¬3-±»´óÆÁÖ÷ÆÁ¹ØÁª£¬4-±»´óÆÁ×ÓÆÁ¹ØÁª + BYTE byJoinSubSystem;// Ëù¹ØÁª»òÕ¼ÓõÄ×Óϵͳ²ÛλºÅ + BYTE byJoinDispNum;// Ëù¹ØÁª»òÕ¼ÓõÄÏÔʾͨµÀºÅ + BYTE byJoinSubWindowNum;// Ëù¹ØÁª»òÕ¼ÓõÄ×Ó´°¿ÚºÅ + BYTE byDecodeAbility; //½âÂëͨµÀµÄµ±Ç°½âÂëÄÜÁ¦£¬0-δ¹ØÁª£¬1-D1£¬2-720£¬3-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;//¼¶ÁªÊÓƵ×ÛºÏƽ̨ºÅ£¬×ÓϵͳÀàÐÍÊÇ3»ò4ʱ¿ÉÓà + BYTE bySubSystemNum;//¼¶Áª×Óϵͳ²ÛλºÅ£¬×ÓϵͳÀàÐÍÊÇ3»ò4ʱ¿ÉÓà + 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±íʾÍøÂçÓû§1£»0-²»¹ØÁª 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-50£¬1-75£¬2-110£¬3-150£¬4-300£¬5-600£¬6-1200£¬7-2400£¬8-4800£¬9-9600£¬10-19200£¬11-38400£¬12-57600£¬13-76800£¬14-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-T1¡¢2-T2¡¢ 3-N1¡¢ 4-N2¡¢5-G1¡¢ 6-G2 + BYTE byDealFailCenter[MAX_CENTERGROUP_NUM/*16*/]; //ÏòÖ¸¶¨ÖÐÐÄ×é·¢ËÍʧ°Ü±¨¸æ£¬ÓÃÊý×éϱê±íʾÊÇÄĸöÖÐÐÄ×飬0-²»Ñ¡Ôñ¡¢1-Ñ¡Ôñ + BYTE byDataType; //1-±¨¾¯Êý¾Ý 2-·Ç±¨¾¯Êý¾Ý 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-T1¡¢2-T2¡¢ 3-N1¡¢ 4-N2¡¢5-G1¡¢ 6-G2¡¢7-N3¡¢ 8-N4¡¢9-CMK-4G¡¢10-CMK-NET(Èç¹ûÉ豸֧³Ö3G£¬G1£¬G2±íʾ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-Ö÷Íø¿¨ÖÐÐÄ1£¬1-Ö÷Íø¿¨ÖÐÐÄ2£¬2-À©Õ¹Íø¿¨ÖÐÐÄ1,3-À©Õ¹Íø¿¨ÖÐÐÄ2£¨±¨¾¯Í¨µÀΪN1¡¢N2¡¢N3¡¢N4ʱÓÐЧ£© + 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-G711£¬2-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-ÂëÁ÷3£¬3-ÂëÁ÷4, 4-ÂëÁ÷5,5-ÂëÁ÷6,7-ÂëÁ÷7,8-ÂëÁ÷8,9-ÂëÁ÷9,10-ÂëÁ÷10 + DWORD dwLinkMode;// 0£ºTCP·½Ê½,1£ºUDP·½Ê½,2£º¶à²¥·½Ê½,3 - RTP·½Ê½£¬4-RTP/RTSP,5-RSTP/HTTP ,6- HRUDP£¨¿É¿¿´«Ê䣩 ,7-RTSP/HTTPS + HWND hPlayWnd;//²¥·Å´°¿ÚµÄ¾ä±ú,ΪNULL±íʾ²»²¥·ÅͼÏó + DWORD bBlocked; //0-·Ç×èÈûÈ¡Á÷, 1-×èÈûÈ¡Á÷, Èç¹û×èÈûSDKÄÚ²¿connectʧ°Ü½«»áÓÐ5sµÄ³¬Ê±²ÅÄܹ»·µ»Ø,²»ÊʺÏÓÚÂÖѯȡÁ÷²Ù×÷. + DWORD bPassbackRecord; //0-²»ÆôÓüÏñ»Ø´«,1ÆôÓüÏñ»Ø´« + BYTE byPreviewMode;//Ô¤ÀÀģʽ£¬0-Õý³£Ô¤ÀÀ£¬1-ÑÓ³ÙÔ¤ÀÀ + BYTE byStreamID[STREAM_ID_LEN/*32*/];//Á÷ID£¬lChannelΪ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-50£¬ÖÃ0ʱĬÈÏΪ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²»ºÏ·¨£¬ÐèÒªÔö¼ÓÓû§ÃûÃÜÂë½Úµã£¬ÆäÖÐÓû§ÃûºÍÃÜÂëÐÅÏ¢À´×ÔdeviceUserºÍdevicePassword½Úµã + //ʾÀý£ºrtsp://admin:abcd12345@10.7.37.2:554/Streaming/Channels/101?transportmode=unicast + DWORD dwLinkMode;// 0£ºTCP·½Ê½,1£ºUDP·½Ê½,2£º¶à²¥·½Ê½,3 - RTP·½Ê½£¬4-RTP/RTSP,5-RSTP/HTTP + HWND hPlayWnd;//²¥·Å´°¿ÚµÄ¾ä±ú,ΪNULL±íʾ²»²¥·ÅͼÏó + DWORD bBlocked; //0-·Ç×èÈûÈ¡Á÷, 1-×èÈûÈ¡Á÷, Èç¹û×èÈûSDKÄÚ²¿connectʧ°Ü½«»áÓÐ5sµÄ³¬Ê±²ÅÄܹ»·µ»Ø,²»ÊʺÏÓÚÂÖѯȡÁ÷²Ù×÷. + DWORD dwDisplayBufNum; //²¥·Å¿â²¥·Å»º³åÇø×î´ó»º³åÖ¡Êý£¬·¶Î§1-50£¬ÖÃ0ʱĬÈÏΪ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]±íʾ×Óϵͳ1£¬dwSubSystemEvent[2]±íʾ×Óϵͳ2£¬¾ßÌåµÄ×Óϵͳ¸öÊý´ÓÄÜÁ¦¼¯»ñÈ¡£¨wSubSystem£©£¬Ã¿¸ö×ÓϵͳµÄʼþ°´Î»±íʾ£¬bit0-½øÈëÑÓʱ£¬bit1-Í˳öÑÓʱ£¬bit2-²¼·À£¬bit3-³··À£¬bit4-±¨¾¯£¬bit5-Ïû³ý±¨¾¯¼ÇÒä,bit6-±¨¾¯»Ö¸´,bit7-·ÀÇø·À²ð,bit8-·ÀÇø·À²ð»Ö¸´ + DWORD dwSubSystemEventTriggerAlarmoutOff[MAX_ALARMHOST_SUBSYSTEM/*32*/]; //×Óϵͳʼþ´¥·¢±¨¾¯Êä³ö¹Ø±Õ,wSubSystemEvent[0]±íʾ×Óϵͳ1£¬dwSubSystemEvent[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-8·ÀÇø£¬5-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-TCP£¬1-UDP£¬2-¶à²¥ + 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-TCP£¬1-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Á÷ýÌåÏÂÖ»Ö§³Ö 0£¬1·½Ê½£»Ö±Á¬Ö§³Ö 0£¬1£¬2£¬3£¬4 + 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Á÷ýÌåÏÂÖ»Ö§³Ö 0£¬1·½Ê½£»Ö±Á¬Ö§³Ö 0£¬1£¬2£¬3£¬4 + 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-ͨ¹ýIPServer»ñµÃipµØÖ·ºóÈ¡Á÷, 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-ͨ¹ýIPServer»ñµÃipµØÖ·ºóÈ¡Á÷, 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Ö¡ + 1£º¶ª1/2 PÖ¡£¨Ö»ÓÐsvcÂëÁ÷Ö§³Ö£© + 2£º¶ª3/4PÖ¡ £¨Ö»ÓÐsvcÂëÁ÷Ö§³Ö£© + 3£º´«1/2 IÖ¡(Ö»´«IÖ¡£¬ÇÒÿ2¸öIÖ¡´«Ò»¸ö¡£) + 4£º´«1/4 IÕñ(Ö»´«IÖ¡£¬ÇÒÿ4¸öIÖ¡´«Ò»¸ö¡£) + 5£º´«1/8 IÖ¡(Ö»´«IÖ¡£¬ÇÒÿ8¸öIÖ¡´«Ò»¸ö¡£) + */ + 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-ÊÇ£¨¶ÔÓÚË«ÂëÁ÷É豸£¬Ä³Ò»¶Îʱ¼äÄڵļÏñÎļþÓëÖ¸¶¨ÂëÁ÷ÀàÐͲ»Í¬£¬Ôò·µ»Øʵ¼ÊÂëÁ÷ÀàÐ͵ļÏñ£© + BYTE byUseAsyn; //0-ʹÓÃͬ²½IO£¬1-ʹÓÃÒì²½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-TCP£¬1-AdaptiveUDP + BYTE byDownload; //ÊÇ·ñÏÂÔØ 0-·ñ£¬1-ÊÇ + BYTE byOptimalStreamType; //ÊÇ·ñ°´×îÓÅÂëÁ÷ÀàÐͻطŠ0-·ñ£¬1-ÊÇ£¨¶ÔÓÚË«ÂëÁ÷É豸£¬Ä³Ò»¶Îʱ¼äÄڵļÏñÎļþÓëÖ¸¶¨ÂëÁ÷ÀàÐͲ»Í¬£¬Ôò·µ»Øʵ¼ÊÂëÁ÷ÀàÐ͵ļÏñ£© + 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-ʹÓÃͬ²½IO£¬1-ʹÓÃÒì²½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-ÆôÓÃ΢С³µÅÆʶ±ð(ÏñËØ60¡«80) + 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; //ÓÐЧµã ´óÓÚµÈÓÚ3£¬ÈôÊÇ3µãÔÚÒ»ÌõÏßÉÏÈÏΪÊÇÎÞЧÇøÓò£¬Ïß½»²æÈÏΪÊÇÎÞЧÇøÓò + 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; //µÚÒ»ÏßȦ¹ØÁªIO£¬0-IO1,1-IO2,2-IO3,3-IO4,4-IO5,5-IO6 + BYTE byCoil1IOStatus;//µÚÒ»ÏßȦIOÊäÈë¿Ú״̬£¬0-ϽµÑØ£¨Ä¬ÈÏ£©£¬1-ÉÏÉýÑØ£¬2-ÉÏÉýÑغÍϽµÑØ£¬3-¸ßµçƽ£¬4-µÍµçƽ + BYTE byTrigCoil2; //µÚ¶þÏßȦ¹ØÁªIO£¬0-IO1,1-IO2,2-IO3,3-IO4,4-IO5,5-IO6 + BYTE byCoil2IOStatus;//µÚ¶þÏßȦIOÊäÈë¿Ú״̬£¬0-ϽµÑØ£¨Ä¬ÈÏ£©£¬1-ÉÏÉýÑØ£¬2-ÉÏÉýÑغÍϽµÑØ£¬3-¸ßµçƽ£¬4-µÍµçƽ + BYTE byRelatedDriveWay;//¹ØÁªµÄ³µµÀºÅ + BYTE byTimeOut;//³¬Ê±Ê±¼ä£¨Ä¬ÈÏ10£©£¬µ¥Î»s + BYTE byRelatedIOOutEx;//µÚ0λ±íʾIOÊä³ö¿Ú1£¬ÒÔ´ËÀàÍÆ£¬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×¥ÅÄ´ÎÊý£¨Ä¬ÈÏ1£©£¬0-²»×¥ÅÄ£¬·Ç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±íʾIOÊä³ö¿Ú1£¬Êý×é1±íʾIOÊä³ö¿Ú2£¬ÒÔ´ËÀàÍÆ£¬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;//¹ØÁªµÄ³µµÀºÅ + BYTE bySnapTimes; //×¥ÅÄ´ÎÊý£¨Ä¬ÈÏ1£©£¬0-²»×¥ÅÄ£¬·Ç0-Á¬ÅÄ´ÎÊý£¬×î´ó5 + BYTE byRelatedIOOutEx;//µÚ0λ±íʾIOÊä³ö¿Ú1£¬ÒÔ´ËÀàÍÆ£¬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£¬±íʾÊÇ·ñÖ§³Öµ¥IO´¥·¢½çÃæIOʹÄÜÅäÖà ʱÉúЧ) + 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;//¹ØÁªµÄ³µµÀºÅ + WORD wDistance; //ÏßȦ¾àÀ룬¼ÆËãËÙ¶È + WORD wTrigDelayTime; //´¥·¢ÑÓ³Ùʱ¼ä£¨Ä¬ÈÏ200£©£¬µ¥Î»£ººÁÃë + BYTE byTrigDelayDistance; //´¥·¢ÑÓ³Ù¾àÀ루ĬÈÏ0£©£¬µ¥Î»£º·ÖÃ× + BYTE bySpeedCapEn; //ÊÇ·ñÆôÓó¬ËÙ×¥ÅÄ£¬0-·ñ£¬1-ÊÇ + BYTE bySignSpeed;//±êÖ¾ÏÞËÙ£¬µ¥Î»km/h + BYTE bySpeedLimit;//ÏÞËÙÖµ£¬µ¥Î»km/h + BYTE bySnapTimes; //×¥ÅÄ´ÎÊý£¨Ä¬ÈÏ1£©£¬0-²»×¥ÅÄ£¬·Ç0-Á¬ÅÄ´ÎÊý£¬×î´ó5 + BYTE byOverlayDriveWay; //OSDµþ¼ÓµÄ³µµÀºÅ + 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λ±íʾIOÊä³ö¿Ú1£¬ÒÔ´ËÀàÍÆ£¬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;//¹ØÁªµÄ³µµÀ¸öÊý + BYTE byTriggerSpareMode; //´¥·¢±¸ÓÃģʽ£¬0-ĬÈÏ£¬1-¿¨¿ÚÐéÄâÏßȦģʽ,2-¿¨¿Ú»ìºÏ³µµÀģʽ + BYTE byFaultToleranceTime;//ÈÝ´íʱ¼ä(µ¥Î»:·ÖÖÓ)£¬ÓÃÓÚ¼ì²â³µ¼ìÆ÷ÊÇ·ñÕý³£µÄ×î´óʱ¼ä + BYTE byRes1; + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ÅÆʶ²ÎÊý + NET_ITC_LANE_PARAM struLane[MAX_ITC_LANE_NUM]; //¹ØÁªµÄ³µµÀ²ÎÊý + 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¡ã(0µ½90¶È) + 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ºÅ 1¡«5 (Ψһֵ) + // BYTE byModeType; //0¡«Ô¤Áô£¬1¡«À״2¡«³µ¼ìÆ÷£¬3¡«ÐźŵƼì²âÆ÷ + 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;//¹ØÁªµÄ³µµÀºÅ1¡«99 (Õâ¸öÖµ¿ÉÒÔÔÚ²»Í¬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¡«À״bit2¡«³µ¼ìÆ÷£¬bit3¡«ÐźŵƼì²âÆ÷ + 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;//¹ØÁªµÄ³µµÀ¸öÊý + BYTE byRes1[3]; + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ÅÆʶ²ÎÊý + NET_ITC_LANE_PARAM struLane[MAX_ITC_LANE_NUM]; //¹ØÁªµÄ³µµÀ²ÎÊý + 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;//¹ØÁªµÄ³µµÀºÅ + BYTE bySpeedCapEn; //ÊÇ·ñÆôÓó¬ËÙ×¥ÅÄ£¬0-·ñ£¬1-ÊÇ + BYTE bySignSpeed;//±êÖ¾ÏÞËÙ£¬µ¥Î»km/h + BYTE bySpeedLimit;//ÏÞËÙÖµ£¬µ¥Î»km/h + BYTE bySnapTimes; //×¥ÅÄ´ÎÊý£¨Ä¬ÈÏ1£©£¬0-²»×¥ÅÄ£¬·Ç0-Á¬ÅÄ´ÎÊý£¬×î´ó5 + BYTE byBigCarSignSpeed;///*´ó³µ±êÖ¾ÏÞËÙ£¬µ¥Î»km/h*/ + BYTE byBigCarSpeedLimit;/*´ó³µÏÞËÙÖµ£¬µ¥Î»km/h*/ + BYTE byRelatedIOOutEx;//µÚ0λ±íʾIOÊä³ö¿Ú1£¬ÒÔ´ËÀàÍÆ£¬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±íʾIOÊä³ö¿Ú1£¬Êý×é1±íʾIOÊä³ö¿Ú2£¬ÒÔ´ËÀàÍÆ£¬0-²»¹ØÁª£¬1-¹ØÁª + BYTE byFlashMode; //ÉÁ¹âµÆÉÁ˸ģʽ£¬0-ͬʱÉÁ£¬1-ÂÖÁ÷ÉÁ + BYTE byLaneType; //³µµÀÀàÐÍ£¬0-δÅäÖá¢1-¸ßËÙ¹«Â·¡¢2-³ÇÊпìËÙ·¡¢0xff-ÆäËûµÀ· + BYTE byEnableRadar; //ÊÇ·ñÆôÓÃÀ×´ï²âËÙ£¬0-·ñ£¬1-ÊÇ + NET_ITC_VTLANE_PARAM struLane; //¹ØÁªµÄ³µµÀ²ÎÊý + //³µµÀÓÃ;ÀàÐÍ£¬Ïê¼ûITC_LANE_USEAGE_TYPE£¬Ê¹ÓÃ1ºÍ8Á½ÖÖÀàÐÍ(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;//¹ØÁªµÄ³µµÀ¸öÊý + BYTE byIsDisplay; //ÊÓƵÖÐÊÇ·ñÏÔʾÐéÄâÏßȦ£¬0-²»ÏÔʾ£¬1-ÏÔʾ + BYTE byLoopPos; //Íí¼ä´¥·¢ÏßȦµÄÆ«Ïò£¨Ä¬ÈÏ10£© + BYTE byPolarLenType; /*Æ«Õñ¾µÀàÐÍ£¬0£º²»¼ÓÆ«Õñ¾µ£»1£º¼ÓÊ©Ä͵ÂÆ«Õñ¾µ¡£*/ + BYTE byDayAuxLightMode; /*°×Ì츨ÖúÕÕÃ÷ģʽ£¬0£ºÎÞ¸¨ÖúÕÕÃ÷£»1£ºLEDµÆÕÕÃ÷£»2£ºÉÁ¹âµÆÕÕÃ÷*/ + BYTE byVideoLaneNO; //ÊÓƵ²Î¿¼ÁÁ¶ÈµÄ²Î¿¼³µµÀºÅ + 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; /*ÊÓƵ°×ÌìÆعâʱ¼äµÄ³õʼֵ2000*/ + DWORD dwDayMaxExp; /*ÊÓƵ°×ÌìÆعâʱ¼äµÄ×î´óÖµ20000*/ + DWORD dwNightExp; /*Íí¼äÊÓƵÆعâʱ¼äµÄÉèÖÃÖµ3000*/ + DWORD dwSnapExp; /*×¥ÅÄÆعâʱ¼ä*/ + BYTE byDayInitGain; /*ÊÓƵ°×ÌìÔöÒæµÄ³õʼֵ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_TYPE£¬0-²»ÆôÓã¬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; //ºìÂ̵ÆIO£¬0-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¿ÚµÄ״̬£¨Ä¬ÈÏ0£©£¬0-ϽµÑØ£¬1-ÉÏÉýÑØ£¬2-ÉÏÉýÑغÍϽµÑØ£¬3-¸ßµçƽ£¬4-µÍµçƽ + BYTE byRelatedDriveWay;//¹ØÁªµÄ³µµÀºÅ + 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λ±íʾIOÊä³ö¿Ú1£¬ÒÔ´ËÀàÍÆ£¬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_1£©£¬µ½´ï1¡¢À뿪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_1£©£¬½øÈë2¡¢À뿪1¡¢À뿪2ÑÓʱץÅÄ£¬À뿪1ÅÆʶ£¬ÉÏ´«3ÕųµÁ¾Í¼Æ¬ºÍ³µÅƽá¹û*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE4 = 5, /*Ë«ÏßȦ³µ¼ìÆ÷ЭÒéģʽ4£¨ÏÔʾΪ£ºË«/Èý_½ø2_³ö2_ÑÓ2_1£©£¬µ½´ï2¡¢À뿪2¡¢À뿪2ÑÓʱץÅÄ£¬À뿪1ÅÆʶ£¬ÉÏ´«3ÕųµÁ¾Í¼Æ¬ºÍ³µÅƽá¹û*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE5 = 6, /*Ë«ÏßȦ³µ¼ìÆ÷ЭÒéģʽ5£¨ÏÔʾΪ£ºË«/Èý_½ø2_³ö2_ÑÓ2_2£©£¬µ½´ï2¡¢À뿪2¡¢À뿪2ÑÓʱץÅÄ£¬µ½´ï2¡¢À뿪1¾ùÅÆʶ£¬ÉÏ´«3ÕųµÁ¾Í¼Æ¬ºÍÖÃÐŶȸߵijµÅƽá¹û£¨Ä¬ÈÏ£©*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE6 = 7, /*Ë«ÏßȦ³µ¼ìÆ÷ЭÒéģʽ6£¨ÏÔʾΪ£ºË«/Èý_½ø1_³ö2_ÑÓ2_2£©£¬µ½´ï1¡¢À뿪2¡¢À뿪2ÑÓʱץÅÄ£¬µ½´ï1¡¢À뿪1¾ùÅÆʶ£¬ÉÏ´«3ÕųµÁ¾Í¼Æ¬ºÍÖÃÐŶȸߵijµÅƽá¹û*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE7 = 8, /*Ë«ÏßȦ³µ¼ìÆ÷ЭÒéģʽ7£¨ÏÔʾΪ£ºË«_½ø1_³ö1_ÑÓ2_1£©£¬µ½´ï1¡¢À뿪1¡¢À뿪2ÑÓʱץÅÄ£¬À뿪1ÅÆʶ£¬ÉÏ´«³µÁ¾Í¼Æ¬£¨¿¨¿ÚÀ뿪1£¬´³ºìµÆµ½´ï1¡¢À뿪1¡¢À뿪2ÑÓʱ£©ºÍ³µÅƽá¹û*/ + ITC_DOUBLE_COIL_PROTOCOL_MODE8 = 9, /*Ë«ÏßȦ³µ¼ìÆ÷ЭÒéģʽ8£¨ÏÔʾΪ£ºË«_½ø1_³ö1_ÑÓ2_2£©£¬µ½´ï1¡¢À뿪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;//¹ØÁªµÄ³µµÀºÅ + 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µþ¼ÓµÄ³µµÀºÅ + NET_ITC_SERIAL_INFO struSerialInfo; //³µ¼ìÆ÷²ÎÊý + BYTE byRelatedIOOut[MAX_IOOUT_NUM]; //¹ØÁªµÄIOÊä³ö¿Ú£¬¿ÉÒÔͬʱ¹ØÁª¶à¸ö + BYTE byFlashMode; //ÉÁ¹âµÆÉÁ˸ģʽ£¬0-ͬʱÉÁ£¬1-ÂÖÁ÷ÉÁ + BYTE bySerialType; //³µ¼ìÆ÷ÀàÐÍ£¬0-˽Óгµ¼ìÆ÷£¬1-˽ÓÐOEM³µ¼ìÆ÷£¬2-ÆäËû³µ¼ìÆ÷ + BYTE byRelatedIOOutEx;//µÚ0λ±íʾIOÊä³ö¿Ú1£¬ÒÔ´ËÀàÍÆ£¬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;//ºìµÆͨµÀºÅ£º1¡«16£¨ºìÂ̵Ƽì²âÆ÷£© + BYTE byYellowTrafficLightChan;//»ÆµÆͨµÀºÅ£º1¡«16£¨ºìÂ̵Ƽì²âÆ÷£© + //¹ØÁª³µµÀ·½ÏòÀàÐÍ£¬²Î¿¼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;//¹ØÁªµÄ³µµÀ¸öÊý + BYTE byTrafficLightSignalSrc;//½»Í¨µÆÐźÅÀ´Ô´ 0¡«³µ¼ìÆ÷ 1¡«ºìÂ̵Ƽì²âÆ÷ + BYTE byRes1[2]; + NET_ITC_PLATE_RECOG_PARAM struPlateRecog; //ÅÆʶ²ÎÊý + NET_ITC_EPOLICE_LANE_PARAM struLane[MAX_ITC_LANE_NUM]; //¹ØÁªµÄ³µµÀ²ÎÊý + 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; //×¥ÅÄÔöÒæ0¡«100 + 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; //¹ØÁªµÄ³µµÀºÅ 1~255£¨ÓÃÓÚµþ¼ÓºÍÉÏ´«£© + BYTE bySignSpeed; //±êÖ¾ÏÞËÙ£¬µ¥Î»km/h 0¡«255 70 + BYTE bySpeedLimit; //ÏÞËÙÖµ£¬µ¥Î»km/h 0¡«255 80 ʵ¼ÊÆðЧ + BYTE byBigCarSignSpeed;///*´ó³µ±êÖ¾ÏÞËÙ£¬µ¥Î»km/h*/ + BYTE byBigCarSpeedLimit;/*´ó³µÏÞËÙÖµ£¬µ¥Î»km/h*/ + BYTE bySpeedCapEn; //ÊÇ·ñÆôÓó¬ËÙ×¥ÅÄ£¬0-·ñ£¬1-ÊÇ + BYTE byCaptureCount;//×¥ÅÄÕÅÊý1¡«5(Õý³£) + BYTE byRelatedIOOut; /*¹ØÁªµÄIOÊä³ö¿Ú(¿ÉÒÔͬʱ¹ØÁª¶à¸ö)£¬°´Î»±íʾIOÊä³ö¿Ú£¬µÚ0λ±íʾIOÊä³ö¿Ú1£¬ÒÔ´ËÀàÍÆ£¬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; //³µµÀÊôÐÔ£¬ÓÃbyUseageTypeºÍbyCarDriveDirect + 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;//ʶ±ðµÄ³µµÀ¸öÊý£¬1-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.5ÖÐNET_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.5ÖÐNET_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; //¹ØÁªµÄ³µµÀºÅ1¡«255(ÓÃÓÚµþ¼ÓºÍÉÏ´«) + 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λ±íʾIOÊä³ö¿Ú1£¬ÒÔ´ËÀàÍÆ£¬0-²»¹ØÁª£¬1-¹ØÁª + NET_ITC_LINE struTrigLine; //´¥·¢Ïߣ¬Ä¿Ç°½öʹÓõÚÒ»¸ö³µµÀµÄ£¬ÒÔºó¿ÉÄÜ»áÀ©Õ¹Îª¶à³µµÀ·Ö±ðÅäÖà + NET_ITC_LINE struLineLeft; //×ó³µµÀÏß + NET_ITC_POLYGON struPlateRecog; //ÅÆʶÇøÓò + NET_ITC_LANE_LOGIC_PARAM struLane; //³µµÀÊôÐÔ£¬ÓÃbyUseageTypeºÍbyCarDriveDirect + 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; //ʶ±ðµÄ³µµÀ¸öÊý£¬1-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;//¹ØÁªµÄ³µµÀºÅ + //¹ØÁª³µµÀ·½ÏòÀàÐÍ£¬²Î¿¼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;//È¡Öµ·¶Î§£¨0¡«10s£©£¨ITC3.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, //³µÁ¾ÎÞ·¨¿çÔ½µÄ³µµÀÏß + ITC_LINE_DOTTED = 7 //ÐéÏß +}ITC_LINE_TYPE; + + +//µ¥¸ö³µµÀÊÓƵµç¾¯´¥·¢²ÎÊý½á¹¹ +typedef struct tagNET_ITC_LANE_VIDEO_EPOLICE_PARAM +{ + BYTE byLaneNO; //¹ØÁªµÄ³µµÀºÅ + 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; //ʶ±ðµÄ³µµÀ¸öÊý + 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_RESULT£©£¬1-б¨¾¯ÐÅÏ¢(NET_ITS_PLATE_RESULT)2012-9-28 + BYTE byRetAlarmTypeV40; //0--·µ»ØNET_DVR_ALARMINFO_V30»òNET_DVR_ALARMINFO, 1--É豸֧³ÖNET_DVR_ALARMINFO_V40Ôò·µ»ØNET_DVR_ALARMINFO_V40£¬²»Ö§³ÖÔò·µ»ØNET_DVR_ALARMINFO_V30»òNET_DVR_ALARMINFO + BYTE byRetDevInfoVersion; //CVRÉÏ´«±¨¾¯ÐÅÏ¢»Øµ÷½á¹¹Ìå°æ±¾ºÅ 0-COMM_ALARM_DEVICE£¬ 1-COMM_ALARM_DEVICE_V40 + BYTE byRetVQDAlarmType; //VQD±¨¾¯ÉÏ´«ÀàÐÍ£¬0-ÉÏ´«±¨±¨¾¯NET_DVR_VQD_DIAGNOSE_INFO£¬1-ÉÏ´«±¨¾¯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_RESULT£©£»0-±íʾ¶þ½øÖÆ´«Ê䣬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_RESULT£©£¬1-б¨¾¯ÐÅÏ¢(NET_ITS_PLATE_RESULT)2012-9-28 + BYTE byRetAlarmTypeV40; //0--·µ»ØNET_DVR_ALARMINFO_V30»òNET_DVR_ALARMINFO, 1--É豸֧³ÖNET_DVR_ALARMINFO_V40Ôò·µ»ØNET_DVR_ALARMINFO_V40£¬²»Ö§³ÖÔò·µ»ØNET_DVR_ALARMINFO_V30»òNET_DVR_ALARMINFO + BYTE byRetDevInfoVersion; //CVRÉÏ´«±¨¾¯ÐÅÏ¢»Øµ÷½á¹¹Ìå°æ±¾ºÅ 0-COMM_ALARM_DEVICE£¬ 1-COMM_ALARM_DEVICE_V40 + BYTE byRetVQDAlarmType; //VQD±¨¾¯ÉÏ´«ÀàÐÍ£¬0-ÉÏ´«±¨±¨¾¯NET_DVR_VQD_DIAGNOSE_INFO£¬1-ÉÏ´«±¨¾¯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_RESULT£©£»0-±íʾ¶þ½øÖÆ´«Ê䣬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; //ÎÞÏß±¨¾¯ID£¬1-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-ģʽ5£º4PTZ£» + 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; //ÆôÓÃWPS£¬0-·ñ£¬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; //CU¶ËIPµØÖ· + 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; //É豸ÐòºÅ£¬Ïà¶ÔÓÚC20N»òY10µÈÉ豸µÄÈ«¾Ö±àºÅ + DWORD dwSubBoardNo; //·Ö²¼Ê½É豸ËùÊôµÄ×Ó°å±àºÅ£¬Ïà¶ÔÓÚC20N»òY10µÈÉ豸µÄÈ«¾Ö±àºÅ£¬´Ó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]; // Êý×éË÷Òý±íʾµÚ¼¸¸öeSATA£¬0£ºÄ¬Èϱ¸·Ý 1£ºÄ¬ÈϼÏñ + BYTE byMiniSASUsage[MAX_MINISAS_NUM]; // Êý×éË÷Òý±íʾµÚ¼¸¸öminiSAS£¬0£ºÄ¬Èϱ¸·Ý 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, //IPCÓïÑÔÓëNVRÓïÑÔ²»Æ¥Åä + 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-¿í¸ßΪԭʼ·Ö±æÂÊÁ½±¶£¬ÒÔ´ËÀàÍÆ(1¡«8) + 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; // ÉÏ´«¼ä¸ôʱ¼ä£¨ms£¬1~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- ÊÇ + //¸Ã½ÚµãÒѲ»ÔÙʹÓÃ,ʹÓÃÏÂÃæµÄbyYellowLabelCarºÍbyDangerousVehiclesÅжÏÊÇ·ñ»Æ±ê³µºÍΣÏÕÆ·³µ + 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ʱ£¬Ö»Éϱ¨³µÁ¾¼ì²â±¨¾¯£¬ÎÞ³µÁ¾ÖÇÄܲ¼¿Ø±¨¾¯£¬Òò´Ë¸Ã×Ö¶ÎȡֵΪ0£¬¶ø²»ÊÇ2)¡£ + 3~ΪÊÖ¶¯³µÁ¾²¼¿Ø´¥·¢±¨¾¯(/ISAPI/Traffic/channels//manualVehicleMonitor?format=json) + 4~ΪÈÕ³£²¼¿Ø(¸´ÓóµÁ¾¼ì²âÅäÖÃ)¿Éͨ¹ý³µÁ¾¼ì²âÄÜÁ¦ÖÐÇø·ÖÊÇ·ñÖ§³ÖÈÕ³£³µÁ¾²¼¿Ø, + (¼´Í¨¹ý/ISAPI/Traffic/channels//vehicleDetect/capabilitiesÖÐisSupportDailyVehicleMonitorÅжÏ,ÈÕ³£³µÁ¾²¼¿Øʱ,É豸²»½ö»áÉϱ¨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~Êý×Ö¸ñʽʱ£¬ÎªÀϵÄÎ¥ÕÂÀàÐÍ£¬wIllegalType¡¢dwCustomIllegalType²ÎÊýÉúЧ£¬¸³Öµ¹ú±êÎ¥·¨´úÂë¡£ + Ϊ1~×Ö·û¸ñʽʱ£¬pIllegalInfoBuf²ÎÊýÉúЧ¡£ÀϵÄÎ¥ÕÂÀàÐÍ£¬wIllegalType¡¢dwCustomIllegalType²ÎÊýÒÀÈ»¸³Öµ¹ú±êÎ¥·¨´úÂë*/ + 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; //³µµÀºÅ1¡«32£¨Ë÷Òý³µµÀºÅ£¬¿ÉÒÔÌøÔ¾£© + BYTE byCamLaneId; //¶ÔÓ¦Ïà»ú³µµÀºÅ1¡«16£¨Ïà»úÅäÖõ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; //³µµÀºÅ1¡«32£¨Ë÷Òý³µµÀºÅ£¬¿ÉÒÔÌøÔ¾£© + BYTE byCamLaneId; //¶ÔÓ¦Ïà»ú³µµÀºÅ1¡«16£¨Ïà»úÅäÖõ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; //µ¥ÕÅͼƬËù¹ÜÀíµÄ³µÎ»Êý + 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_INFOÀïµÄbyIvmsChannelº¬ÒåÏàͬ£¬Äܱíʾ¸ü´óµÄÖµ¡£ÀÏ¿Í»§¶ËÓÃ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 East£©£¬0xff-ËùÓÐ + 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))//win64¼°linux64ÏÂÖ¸ÕëΪ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-ÏßȦ1£¬5-ÏßȦ2£¬6-ÏßȦ3£¬7-ºìÂ̵Ƽì²âÆ÷£¬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 AC¶Ë×Ó1~4 AC²å×ù1~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; //×Ö·û¼ä¾à£¬[0¡«16]£¬¿ÉÉ赥λ£ºÏñËØ(ĬÈÏ) + 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; //×Ö·û¼ä¾à£¬[0¡«16]£¬¿ÉÉ赥λ£ºÏñËØ(ĬÈÏ) + 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-ÂëÁ÷3£¬3-ÂëÁ÷4£¬4-ÂëÁ÷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¹ÜÀíÖÐÐÄÖÐûÓÐÅäÖà + 9CMSºÍWEB¹ÜÀíÖÐÐÄͨÐÅʧ°Ü + 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.9£¬6ÒÔÄÚ¶¨Î»¾«¶È¸ß£¬20ÒÔÉÏÐ趪Æú£¬ÕâÀï´æ´¢µÄÊdzËÒÔ10ÒÔºóµÄÕûÊý */ + 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_ALARM£©µÄJSON¸ñʽ¡£ + 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, //ÅäÖúÍÖ¤ÊéÏà¹ØµÄ²ÎÊý£¬¶ÔÓ¦½á¹¹Ìå½á¹¹Ìå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))//win64¼°linux64ÏÂÖ¸ÕëΪ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£©, ÔÊÐíRSAºÍMD5µÇ¼£¬¿ªÆôУÑé2-°²È«Ä£Ê½£¨RSA£©RSAµÇ¼£¬¿ªÆôУÑé + 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-BNC£¬1-VGA£¬2-HDMI£¬3-DVI*/ //´Ë²ÎÊýÖ»ÄÜ»ñÈ¡ + BYTE byVedioFormat; /*1:NTSC,2:PAL£¬0-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Ϊ2»ò3, 6£¬9£¬10ʱÐèÒªÉèÖÃ, */ + 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-FTP£¬1-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 ʹÓÃIPV4¡¢IPV6 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-FTP£¬1-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 ʹÓÃIPV4¡¢IPV6 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;//µçÊÓǽÊä³öºÅ + //×ø±êÐëΪ»ù×¼×ø±êµÄÕûÊý±¶£¨128¡Á128£©£¬¿í¶ÈºÍ¸ß¶ÈÖµ²»ÓÃÉèÖ㬼´Îª»ù×¼Öµ + 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-BNC£¬2-VGA£¬3-HDMI£¬4-DVI£¬5-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-Âý¿ìÃÅ*2£¬2-Âý¿ìÃÅ*3£¬3-Âý¿ìÃÅ*4£¬4-Âý¿ìÃÅ*6£¬5-Âý¿ìÃÅ*8£¬6-Âý¿ìÃÅ*12£¬7-Âý¿ìÃÅ*16£¬ + 8-Âý¿ìÃÅ*24£¬9-Âý¿ìÃÅ*32£¬10-Âý¿ìÃÅ*48£¬11-Âý¿ìÃÅ*64£¬12-Âý¿ìÃÅ*96£¬13-Âý¿ìÃÅ*128£¬14-Âý¿ìÃÅ*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-ģʽA£¬2-ģʽB£¬3-ģʽAB£¬4-ģʽ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~4000£»¸ß16λ´ú±íµ±Ç°¾Û½¹Öµ»ñȡʱµÄζÈÖµ + 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µÄÖµ£¬±ÈÈç1050´ú±í10.5dB, -750´ú±í-7.5dB */ + BYTE byExposureModeSet; /* Çò»úµÄÆعâģʽ,0-ÊÖ¶¯Ä£Ê½£¬1-×Ô¶¯Æع⣬2-¹âȦÓÅÏÈ£¬3-¿ìÃÅÓÅÏÈ£¬4-ÔöÒæÓÅÏÈ */ + BYTE byShutterSet; /* ¿ìÃÅ£¬0-¹Ø£¬1-×Ô¶¯x1£¬2-×Ô¶¯x2£¬3-×Ô¶¯x4£¬4-×Ô¶¯x8£¬5-×Ô¶¯x16£¬6-×Ô¶¯x32£¬7-×Ô¶¯x64£¬8-×Ô¶¯x128£¬9-1/1£¬10-1/2£¬ + 11-1/3£¬12-1/4£¬13-1/6£¬14-1/8£¬15-1/12£¬16-1/15£¬17-1/25£¬18-1/30£¬19-1/50£¬20-1/60£¬21-1/75£¬ + 22-1/90£¬23-1/100£¬24-1/120£¬25-1/125£¬26-1/150£¬27-1/180£¬28-1/200£¬29-1/215£¬30-1/250£¬31-1/300£¬ + 32-1/350£¬33-1/425£¬34-1/500£¬35-1/600£¬36-1/725£¬37-1/1000£¬38-1/1250£¬39-1500,40-1/1750£¬41-1/2000£¬ + 42-1/2500£¬43-3000,44-1/3500£¬45-1/4000£¬46-1/6000£¬47-1/10000£¬48-1/30000£¬49-1/100000,50-1/175£¬ + 51-1/195£¬52-1/225£¬53-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-BNC¡¢2-VGA¡¢3-RGB¡¢4-DVI + BYTE byMatrixProtocol; // ¾ØÕóËùÓÃЭÒé1¡¢ZT1.0¡¢2.ZT2.0¡¢3.Extron¡¢4.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-BNC¡¢2-VGA¡¢3-RGB¡¢4-DVI + BYTE byMatrixProtocol; // ¾ØÕóËùÓÃЭÒé1¡¢ZT1.0¡¢2.ZT2.0¡¢3.Extron¡¢4.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-TCP£¬1-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-TCP£¬1-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-Á÷ID£¬3-±¾µØÊäÈëÔ´£¬4-ÐéÄâÆÁ·þÎñÆ÷ͨµÀ£¬5-Æ´½ÓͨµÀ£¬6-ÆÁÄ»·þÎñÆ÷£¬7-·Ö²¼Ê½ÍøÂçÔ´£¬8-¶àÏà»úÈÚºÏͨµÀ£¬9-ÍøÂçÊäÈëÔ´ + BYTE byStreamId[STREAM_ID_LEN]; //Á÷ID£¬µ±byChanType=2¡¢9ʱ£¬¸Ã×Ö¶ÎÓÃÓÚÖ¸¶¨Á÷»òÕßÍøÂçipcµÄIDºÅ + BYTE byRes1[3]; + DWORD dwChannel; //ͨµÀºÅ£¬Í¨µÀÀàÐÍΪÆÕͨͨµÀ£¬ÁãͨµÀ£¬±¾µØÊäÈëÔ´£¬ÐéÄâÆÁ·þÎñÆ÷ͨµÀ£¬Æ´½ÓͨµÀ£¬ÆÁÄ»·þÎñÆ÷£¬·Ö²¼Ê½ÍøÂçԴʱÌî´Ë×ֶΠ+ BYTE byRes2[24]; + BYTE byAddress[MAX_DOMAIN_NAME]; //É豸ÓòÃû + WORD wDVRPort; //¶Ë¿ÚºÅ + BYTE byChannel; //ͨµÀºÅ,dwChannel²»Îª0ʱ´Ë×Ö¶ÎÎÞЧ + BYTE byTransProtocol; //´«ÊäЭÒéÀàÐÍ0-TCP£¬1-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-TCP£¬1-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]; //ÓòÃû(IPServer»òhiDDNSʱ¿ÉÌîÐòÁкŻòÕß±ðÃû) + BYTE byTransProtocol; //´«ÊäЭÒéÀàÐÍ0-TCP£¬1-UDP, 2-MCAST + BYTE byTransMode; //´«ÊäÂëÁ÷ģʽ 0£­Ö÷ÂëÁ÷ 1£­×ÓÂëÁ÷ + BYTE byDdnsType; //ÓòÃû·þÎñÆ÷ÀàÐÍ£¬0-IPServer 1£­Dyndns 2£­PeanutHull(»¨Éú¿Ç)£¬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 1£­Dyndns 2£­PeanutHull(»¨Éú¿Ç)£¬//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-IP£¬1-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-IP£¬1-DDNS£¬2-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; //È¡Á÷URL£¬byAddressTypeΪ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³ÉÔ±¶ÔÓ¦¼¶Áª¼¶Êý´Ó1µ½32£¬´ÓCAM¶Ë¿ªÊ¼£¬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~256£¬0 ±íʾÎÞÓû§ + 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; /* OSDµÄx×ø±ê */ + WORD wOSDTopLeftY; /* OSDµÄy×ø±ê */ + BYTE byOSDType; /* OSDÀàÐÍ(Ö÷ÒªÊÇÄêÔÂÈÕ¸ñʽ) */ + /* 0: XXXX-XX-XX ÄêÔÂÈÕ */ + /* 1: XX-XX-XXXX ÔÂÈÕÄê */ + /* 2: XXXXÄêXXÔÂXXÈÕ */ + /* 3: XXÔÂXXÈÕXXXXÄê */ + /* 4: XX-XX-XXXX ÈÕÔÂÄê*/ + /* 5: XXÈÕXXÔÂXXXXÄê */ + /*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½á¹¹ÌåÊý×éÖеĵÚ0ÖÁµÚ5¸öϱêµÄÖµ¡£µþ¼Ó×Ö·ûµÄ·½Ê½Îª´Óϵ½Éϵķ½Ê½¡£ + ×óϽÇÇøÓò£º + ¹²Ö§³Ö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½øÐб߽çÅäÖã¬.byAlignment²»µÈÓÚ3µÄÇé¿öÏ£¬ byUpDownBoundary/byLeftRightBoundaryÅäÖóɹ¦ºó£¬dwBoundaryÖµ½«²»ÉúЧ + BYTE byLeftRightBoundary; //×óÓÒ×îС±ß½çֵѡÏµ¥Î»Îª×Ö·û¸öÊý£¨·¶Î§ÊÇ£¬0,1,2£©, ¹ú±êģʽÏÂÎÞЧ¡£byAlignment=3¸Ã×Ö¶ÎÎÞЧ£¬Í¨¹ýdwBoundary½øÐб߽çÅäÖã¬.byAlignment²»µÈÓÚ3µÄÇé¿öÏ£¬ 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;// µÍ¹¦ºÄ²ßÂÔ 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-UDP¡¢1-TCP¡¢Ä¬ÈÏ0-UDP + WORD wLocalSipPort;//1024-65535(IPCÉ豸¶Ë) + char szServerID[MAX_SERVERID_LEN];//·þÎñÆ÷ID£º64×Ö½Ú×Ö·û´®£¬½öÏÞÊý×Ö + 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Óû§ÈÏÖ¤ID£º64×Ö½Ú×Ö·û´® + char szSipAuthenticatePasswd[MAX_AUTHENTICATEPASSWD_LEN];//SIPÓû§ÈÏÖ¤ÃÜÂ룺32×Ö½Ú×Ö·û´®(IPCÉ豸ע²áµ½SIP·þÎñÆ÷ʱʹÓÃ) + DWORD dwRegisterValid;//×¢²áÓÐЧÆÚ£ºµ¥Î»Ã룬ĬÈÏ3600£» + BYTE byHeartbeatInterval;//ÐÄÌø¼ä¸ô£ºµ¥Î»Ã룬ĬÈÏ10Ã룻 + BYTE byMaxHeartbeatTimeOut;//×î´óÐÄÌø³¬Ê±´ÎÊý£ºÄ¬ÈÏ3´Î£» + BYTE byStreamType;// È¡Á÷ÀàÐÍ0¡«Ö÷ÂëÁ÷£¬1¡«×ÓÂëÁ÷£¬2¡«3ÂëÁ÷ + 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];//É豸ÊÓƵͨµÀ±àÂëID£º64×Ö½Ú×Ö·û´®£¬½öÏÞÊý×Ö + 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;// ¼ÜÉè¸ß¶Èµ¥Î»0¡«M,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; //0¨C¹Ø±Õ, 1¨C¿ªÆô + 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-4£¬0xff£¬ ÆäÖÐ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; //¶ÔÓ¦Ïà»ú³µµÀºÅ1¡«16£¨Ïà»úÅäÖõijµµÀºÅ£¬¿ÉÒÔÌøÔ¾£¬¿ÉÒÔÏàͬ£© + WORD wLaneid; //³µµÀºÅ1¡«32£¨Ë÷Òý³µµÀºÅ£¬¿ÉÒÔÌøÔ¾ Âß¼­³µµÀ£© + 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; //³µµÀºÅ1¡«32£¨Ë÷Òý³µµÀºÅ£¬¿ÉÒÔÌøÔ¾£© + BYTE byCamLaneId; //¶ÔÓ¦Ïà»ú³µµÀºÅ1¡«16£¨Ïà»úÅäÖõ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; //½ÓÈëIPCµÄ²¼·À״̬ + 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¸ö³µÎ» (´Ó×óµ½ÓÒ³µÎ» Êý×é0¡«3)*/ + 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¸ö³µÎ» (´Ó×óµ½ÓÒ³µÎ» Êý×é0¡«3) + 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¸ö³µÎ» (´Ó×óµ½ÓÒ³µÎ» Êý×é0¡«3) + BYTE byLampType; /* 1-ÍâÖõÆ1£¬2-ÍâÖõÆ2£¬3-ÍâÖõÆ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¸ö³µÎ» (´Ó×óµ½ÓÒ³µÎ» Êý×é0¡«3) µ±Ä£Ê½ÎªÄÚÍâÖõƵÄʱºòÉúЧ*/ + //³µÎ»¼ì²âÏà»úÄÚÍâÖõƣ¬»ìºÏ¿ØÖÆģʽ£¨Çø·ÖÓëÉÏÃæÄÚÍâÖõÆģʽ£¬¸ÃģʽÏÂÄÚÖõƲ»×÷ΪÍâÖõÆʹÓã¨ÄÚÖÃÍâÖõÆģʽÏ£¬ÄÚÖõÆ×÷ΪÍâÖõÆʹÓã©£©£» + //»ìºÏ¿ØÖÆģʽÏ£¬ÄÚÖõÆÏÔʾµ±Ç°¼à²â³µÎ»×´Ì¬ÖУ¬ÓÅÏȼ¶×î¸ßµÄ³µÎ»×´Ì¬(ѹÏß>ÌØÊ⳵λ>ÓÐÎÞ³µ×´Ì¬)¹ØÁªµÆµÄ״̬ + 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¸ö³µÎ» (´Ó×óµ½ÓÒ³µÎ» Êý×é0¡«3) + BYTE byRes[64]; +}NET_DVR_PARKSPACE_ATTRIBUTE, *LPNET_DVR_PARKSPACE_ATTRIBUTE; + +//ָʾµÆÍâ¿Ø +typedef struct tagNET_DVR_LAMP_STATE +{ + BYTE byFlicker;//0~²»ÉÁ˸ 1 ¡«ÉÁ˸ + BYTE byParkingIndex;//³µÎ»ºÅ1¡«3 + 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; /* й©±¨¾¯1£ºÕý³££¬2£º¸æ¾¯*/ + BYTE byLeakAlarm1; /*µÚһ·©ˮ¸æ¾¯1£ºÕý³££¬2£º¸æ¾¯*/ + BYTE byFaultAlarm1; /*µÚһ·¹ÊÕϸ澯1£ºÕý³££¬2£º¸æ¾¯*/ + BYTE byLeakAlarm2; /*µÚ¶þ·©ˮ¸æ¾¯1£ºÕý³££¬2£º¸æ¾¯*/ + BYTE byFaultAlarm2; /*µÚ¶þ·¹ÊÕϸ澯1£ºÕý³££¬2£º¸æ¾¯*/ + 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; /*Ðîµç³Øµçѹ״̬1£ºÕý³££¬2£ºÒì³£*/ + BYTE byBatteryTmpState; /*Ðîµç³ØζÈ״̬1£ºÕý³££¬2£ºÒì³£*/ + BYTE byChangerVolInputState; /*³äµçÉ豸ÊäÈëµçѹ״̬1£ºÕý³££¬2£ºÒì³£*/ + BYTE byChangerRunState; /*³äµçÉ豸ÔËÐÐ״̬1£ºÕý³££¬2£º´ý»ú*/ + BYTE byChangerChgState; /*³äµçÉ豸³äµç״̬1£ºÕý³££¬2£ºÒì³£*/ + BYTE byBatteryVolFlt; /*Ðîµç³Øµçѹ¹ÊÕÏ1£ºÕý³££¬2£º¸æ¾¯*/ + BYTE byBatteryTmpFlt; /*Ðîµç³ØζÈÒì³£1£ºÕý³££¬2£º¸æ¾¯*/ + BYTE byBatteryResistanceFlt; /*Ðîµç³ØÄÚ×èÒì³£1£ºÕý³££¬2£º¸æ¾¯*/ + BYTE byVolRcgFlt; /*¶î¶¨µçѹʶ±ð´íÎó1£ºÕý³££¬2£º¸æ¾¯*/ + BYTE byChangerVolInputFlt; /*³äµçÉ豸ÊäÈëµçѹÒì³£1£ºÕý³££¬2£º¸æ¾¯*/ + BYTE byChangerMosShort; /*³äµçMOS¹Ü¶Ì·1£ºÕý³££¬2£º¸æ¾¯*/ + BYTE byChangerAntiOrMosShort; /*³äµç»ò·À·´MOS¹Ü¶Ì·1£ºÕý³££¬2£º¸æ¾¯*/ + BYTE byChangerAntiShort; /*·À·´MOS¹Ü¶Ì·1£ºÕý³££¬2£º¸æ¾¯*/ + BYTE byInputOverCur; /*ÊäÈë¹ýÁ÷1£ºÕý³££¬2£º¸æ¾¯*/ + BYTE byLoadOverCur; /*¸ºÔعýÁ÷1£ºÕý³££¬2£º¸æ¾¯*/ + BYTE byLoadShort; /*¸ºÔضÌ·1£ºÕý³££¬2£º¸æ¾¯*/ + BYTE byLoadMosShort; /*¸ºÔØMOS¹Ü¶Ì·1£ºÕý³££¬2£º¸æ¾¯*/ + BYTE byChangerFlt; /*³äµçÉ豸¹ÊÕÏ1£ºÕý³££¬2£º¸æ¾¯*/ + 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-UPS£¬2-¿ª¹ØµçÔ´£¬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-UPS£¬2-ÎÂʪ¶È´«¸ÐÆ÷ + 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-ÏÞ1£»bit1-ÏÞ2£»bit2-ÏÞ3£»bit3-ÏÞ4£»bit4-¹ÊÕÏ + BYTE bySesorAlarmTypeJointSiren[ALARMHOST_MAX_SIREN_NUM]; //Ä£ÄâÁ¿°´ÀàÐÍÁª¶¯¾¯ºÅ£¬¸Ã×Ö¶ÎÊÇbySensorJointSirenµÄÀ©Õ¹¡£Êý×éϱê±íʾ¾¯ºÅÐòºÅ£¬Êý×éÔªËصÄÖµ°´Î»±íʾ±¨¾¯ÀàÐÍ£¬¸÷¸öÀàÐͼäÊÇ"»ò"µÄ¹Øϵ¡£ÀàÐÍÖµ¶¨Ò壺bit0-ÏÞ1£»bit1-ÏÞ2£»bit2-ÏÞ3£»bit3-ÏÞ4£»bit4-¹ÊÕÏ + 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-UPS±¨¾¯£¬2-¿ª¹ØµçÔ´±¨¾¯£¬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¸öµÈ¼¶ 1¡«10 + 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; //³¡¾°Î»ÖÃË÷ÒýºÅ,IPCÊÇ0£¬IPDÊÇ´Ó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];//ÿ¸öÇøÓòµÄ²ÎÊýÉèÖà + 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; //ͼÏñÖÊÁ¿ÌáÉýµÈ¼¶ 1¡«6 + 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; //ͼÏñÖÊÁ¿ÌáÉýµÈ¼¶ 1¡«6 + 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λ ²»»á³¬¹ý[0£¬10000.0] + DWORD dwVisibleFocus;//¿É¼û¹âfocus[0,65535] + float fThermalZoom;//ÈȳÉÏñzoom ¾«È·µ½Ð¡Êýµãºó1λ ²»»á³¬¹ý[0£¬10000.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×ø±êÖµÒÔwPanPos¡¢wTiltPos¡¢wZoomPosΪ׼¡£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]; ///<Á÷ID(¼à¿ØµãID)£¬³¤¶ÈСÓÚ32¸ö×Ö½Ú + DWORD dwPicLength; ///ͼƬ³¤¶È + BYTE byStatus; ///< ÉèÖýá¹û:0-³É¹¦,1-Êý¾ÝÓÐÎó£¬2-ͼƬ²»´æÔÚ£¬3-»ñȡͼƬʧ°Ü + BYTE byRes[31]; + char *pSnapShot; ///< Õï¶Ïץͼ£¬ÊÇÒ»¿éͼƬ»º´æÊý¾Ý(700k) +}NET_DVR_VQD_RESULT_INFO, *LPNET_DVR_VQD_RESULT_INFO; + +typedef struct tagNET_DVR_PLAN_VQD_CFG +{ + DWORD dwSize; + BYTE sPlanID[PLAN_ID_LEN]; ///< ¼Æ»®id£¬³¤¶ÈСÓÚ32¸ö×Ö½Ú + NET_DVR_SCHEDTIME struDetectTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; ///< ¼ì²âʱ¼ä + BYTE byPlanMode; ///0:¼´Ê±¼Æ»®£¬1:ÖÜÆڼƻ® + BYTE byRes1;// + BYTE byCheckFlag; ///< ÊÇ·ñ¼ì²â£¬0-²»¼ì²â£¬1-¼ì²â + BYTE bySignal; ///<ÊÓƵ¶ªÊ§ ÊÇ·ñ¼ì²â£¬0-²»¼ì²â£¬1-¼ì²â + BYTE byBlur; ///< ͼÏñÄ£ºý ÊÇ·ñ¼ì²â£¬0-²»¼ì²â£¬1-¼ì²â + BYTE byLuma; ///< ͼÏñ¹ýÁÁÊÇ·ñ¼ì²â£¬0-²»¼ì²â£¬1-¼ì²â + BYTE byChroma; ///< Æ«É«¼ì²â ÊÇ·ñ¼ì²â£¬0-²»¼ì²â£¬1-¼ì²â + BYTE bySnow; ///<ÔëÉù¸ÉÈÅ ÊÇ·ñ¼ì²â£¬0-²»¼ì²â£¬1-¼ì²â + BYTE byStreak; ///<ÌõÎƸÉÈÅ ÊÇ·ñ¼ì²â£¬0-²»¼ì²â£¬1-¼ì²â + BYTE byFreeze; ///<»­Ã涳½áÊÇ·ñ¼ì²â£¬0-²»¼ì²â£¬1-¼ì²â + BYTE byPTZ; ///<ÔÆ̨ÊÇ·ñ¼ì²â£¬0-²»¼ì²â£¬1-¼ì²â + BYTE byEnablePlanRound; ///¼Æ»®Ñ­»·ÊÇ·ñ¿ªÆô + BYTE byContrast; //¶Ô±È¶ÈÒì³£ÊÇ·ñ¼ì²â£¬0-²»¼ì²â£¬1-¼ì²â + BYTE byMono; //ºÚ°×ͼÏñÊÇ·ñ¼ì²â£¬0-²»¼ì²â£¬1-¼ì²â + BYTE byShake; //ÊÓƵ¶¶¶¯ÊÇ·ñ¼ì²â£¬0-²»¼ì²â£¬1-¼ì²â + BYTE byFlash; //ÊÓƵ¾ç±äÊÇ·ñ¼ì²â£¬0-²»¼ì²â£¬1-¼ì²â + BYTE byCover; //ÊÓƵÕÚµ²ÊÇ·ñ¼ì²â£¬0-²»¼ì²â£¬1-¼ì²â + BYTE byScene; //³¡¾°±ä¸üÊÇ·ñ¼ì²â£¬0-²»¼ì²â£¬1-¼ì²â + BYTE byDark; //ͼÏñ¹ý°µÊÇ·ñ¼ì²â£¬0-²»¼ì²â£¬1-¼ì²â + BYTE byRes[13]; +}NET_DVR_PLAN_VQD_CFG, *LPNET_DVR_PLAN_VQD_CFG; + + +typedef struct tagNET_DVR_TEST_SPOTCFG +{ + DWORD dwSize; + BYTE byStepCount; //×ܲ½Êý + BYTE byStepIndex; //µ±Ç°µÚ¼¸²½ + BYTE byRes[14]; +}NET_DVR_TEST_SPOTCFG, *LPNET_DVR_TEST_SPOTCFG; + +//µÚÈý·½IPCÁбí +typedef enum tagNET_DVR_IPC_ENUM +{ + ENUM_BUSINESS_INVALID = -1, + + ENUM_BUSINESS_HIKVISION = 0, + ENUM_BUSINESS_PANASONIC, + ENUM_BUSINESS_SONY, + ENUM_BUSINESS_AXIS, + ENUM_BUSINESS_SANYO, + ENUM_BUSINESS_BOSCH, + ENUM_BUSINESS_ZAVIO, + ENUM_BUSINESS_GRANDEYE, + ENUM_BUSINESS_PROVIDEO, + ENUM_BUSINESS_ARECONT, // 9 + ENUM_BUSINESS_ACTI, + ENUM_BUSINESS_PELCO, + ENUM_BUSINESS_VIVOTEK, + ENUM_BUSINESS_INFINOVA, + ENUM_BUSINESS_DAHUA, //14 + + ENUM_BUSINESS_HIK_STD_H264 = 0x20, + ENUM_BUSINESS_HIK_STD_MPEG4, + ENUM_BUSINESS_SUNELL , //¾°Ñô + ENUM_BUSINESS_ATEME , + ENUM_BUSINESS_LAUNCH, //ÀÊ³Û + ENUM_BUSINESS_YAAN, //ÑÅ°² + ENUM_BUSINESS_BLUESKY, //À¶É«ÐÇ¼Ê + ENUM_BUSINESS_BLUESKYLIMIT,//À¶É«ÐǼÊLIMIT + ENUM_BUSINESS_TDWY, //ÌìµØΰҵ + ENUM_BUSINESS_HBGK, //ºº°î¸ß¿Æ + ENUM_BUSINESS_SANTACHI, //½ðÈýÁ¢ + ENUM_BUSINESS_HIGHEASY, //ºãÒä + ENUM_BUSINESS_SAMSUNG, + + ENUM_BUSINESS_URL_RTSP = 0x40, /* urlÀàÐÍÈ¡Á÷ */ + ENUM_BUSINESS_ONVIF, + + ENUM_MAX_BUSINESS_TYPE, //×î´ó³§ÉÌÀàÐÍ +} NET_DVR_IPC_ENUM, *LPNET_DVR_IPC_ENUM; + +//ºó¶Ë´«ÏÔͳһºóµÚÈý·½IPCÁбí +typedef enum tagNET_DVR_IPC_ENUM_UNIFY +{ + ENUM_IPC_PROTOCOL_INVALID = -1, + ENUM_IPC_PROTOCOL_HIKVISION = 0, //º£¿µÍþÊÓ + ENUM_IPC_PROTOCOL_PANASONIC , //ËÉÏ + ENUM_IPC_PROTOCOL_SONY , //Ë÷Äá + + ENUM_IPC_PROTOCOL_AXIS = 4, //°²Ñ¶Ê¿ + ENUM_IPC_PROTOCOL_SANYO , //ÈýÑó + ENUM_IPC_PROTOCOL_BOSCH , //²©ÊÀ + ENUM_IPC_PROTOCOL_ZAVIO , //ZAVIO + ENUM_IPC_PROTOCOL_GRANDEYE , //GRANDEYE + ENUM_IPC_PROTOCOL_PROVIDEO , //´´ÊÓ + ENUM_IPC_PROTOCOL_ARECONT , //°®Èñ¿µÌØ + ENUM_IPC_PROTOCOL_ACTI , //´óÎÀͨ + ENUM_IPC_PROTOCOL_PELCO , //ÅÁ¶û¸ß + ENUM_IPC_PROTOCOL_VIVOTEK , //¾§î£Í¨Ñ¶ + ENUM_IPC_PROTOCOL_DAHUA , //´ó»ª + ENUM_IPC_PROTOCOL_SAMSUNG , //ÈýÐÇ + + ENUM_IPC_PROTOCOL_PSIA = 17, //PSIA + ENUM_IPC_PROTOCOL_ONVIF , //ONVIF + ENUM_IPC_PROTOCOL_BRICKCOM , //½ðשͨÐÅ + ENUM_IPC_PROTOCOL_GB28181 , //GB28181 + + ENUM_IPC_PROTOCOL_CANON = 23 , //¼ÑÄÜ + + ENUM_IPC_PROTOCOL_HUINT = 32, //HUINT + ENUM_IPC_PROTOCOL_INFINOVA , //Ó¢·ÉÍØ + ENUM_IPC_PROTOCOL_HIK_STD_H264, //º£¿µ±ê×¼264 + ENUM_IPC_PROTOCOL_HIK_STD_MPEG4 , //º£¿µ±ê×¼MPEG4 + ENUM_IPC_PROTOCOL_SUNELL , //¾°Ñô + ENUM_IPC_PROTOCOL_ATEME , //°²ÌØÄ· + ENUM_IPC_PROTOCOL_LAUNCH , //ÀÉ³Û + ENUM_IPC_PROTOCOL_YAAN, //ÑÇ°² + ENUM_IPC_PROTOCOL_BLUESKY , //À¶É«ÐÇ¼Ê + ENUM_IPC_PROTOCOL_BLUESKYLIMIT , //À¶É«ÐǼÊLIMIT + ENUM_IPC_PROTOCOL_TDWY , //ÌìµØΰҵ + ENUM_IPC_PROTOCOL_HBGK , //ºº°î¸ß¿Æ + ENUM_IPC_PROTOCOL_SANTACHI, //½ðÈýÁ¢ + ENUM_IPC_PROTOCOL_HIGHEASY, //ºãÒÚ + ENUM_IPC_PROTOCOL_HANBANG , //ºº°î¸ß¿Æ + ENUM_IPC_PROTOCOL_SAMSUNG_3120 , //ÈýÐÇ3120 + ENUM_IPC_PROTOCOL_SAMSUNG_3080 , //ÈýÐÇ3080 + ENUM_IPC_PROTOCOL_SAMSUNG_2000, //ÈýÐÇ2000 + ENUM_IPC_PROTOCOL_SAMSUNG_5200 , //ÈýÐÇ5200 + ENUM_IPC_PROTOCOL_JINGYUAN , //¾¯Ôº + ENUM_IPC_PROTOCOL_VIDEOTREC , //¶¯Á¦Ó¯¿Æ + ENUM_IPC_PROTOCOL_CHENOVA , //ÉϺ£³Ï·á + ENUM_IPC_PROTOCOL_FENGHUO , //·é»ð + ENUM_IPC_PROTOCOL_ZB_5301 , //Õã½­±´¶û5301 + ENUM_IPC_PROTOCOL_ZB_5401 , //Õã½­±´¶û5401 + ENUM_IPC_PROTOCOL_HAIXIN, //º£ÐÅ + ENUM_IPC_PROTOCOL_ZHONGYINGXIN , //ÖÐå­öÎ + ENUM_IPC_PROTOCOL_AVUN , //ÐÅŵ°²´ï + ENUM_IPC_PROTOCOL_GOVTY , //¹ãÖݼªÌï + ENUM_IPC_PROTOCOL_SAE , //°¬Àï¿Ë + ENUM_IPC_PROTOCOL_DONGFANGWANGLI, //¶«·½ÍøÁ¦ + ENUM_IPC_PROTOCOL_CHANGHONG, //³¤ºç + ENUM_IPC_PROTOCOL_H3C , //»ªÈý + ENUM_IPC_PROTOCOL_BAIAN , //°Ù°² + ENUM_IPC_PROTOCOL_HAT , //»ª°²Ì© + ENUM_IPC_PROTOCOL_YUANYE, //Ô¶Òµ + ENUM_IPC_PROTOCOL_HIKCARD , //º£¿µ°å¿¨ + ENUM_IPC_PROTOCOL_HAIXINCAP , //º£ÐÅ×¥ÅÄ»ú + ENUM_IPC_PROTOCOL_WENANCAP , //ÎÄ°²×¥ÅÄ»ú + ENUM_IPC_PROTOCOL_XUNMEI , //ѶÃÀ + ENUM_IPC_PROTOCOL_BAIWO , //°ÛÎÖ + ENUM_IPC_PROTOCOL_APD , //°²ÆÕ´ï + ENUM_IPC_PROTOCOL_REACHDEV , //ÈñÈ¡ + ENUM_IPC_PROTOCOL_XUNMEI_DAHUA , //ѶÃÀ´ó»ªOEM + ENUM_IPC_PROTOCOL_HUANGHE, //»ÆºÓÉ豸 + ENUM_IPC_PROTOCOL_LIANCHEN , //Áªå· + ENUM_IPC_PROTOCOL_CHENGYE, //³ÏÒµ + ENUM_IPC_PROTOCOL_VISIONDIGI , //ÍþǬ + ENUM_IPC_PROTOCOL_HENGHE , //ºãºÓ + ENUM_IPC_PROTOCOL_KODAK , //¿Æ´ï + ENUM_IPC_PROTOCOL_AIRONIX, //°ÂÄá¿Ë˹ + ENUM_IPC_PROTOCOL_LG, //ÀÖ½ð + ENUM_IPC_PROTOCOL_HASEE , //ÉñÖÝ + ENUM_IPC_PROTOCOL_8000ME , //8000ME + ENUM_IPC_PROTOCOL_POVITEL , //ÆÕÌ첩Íþ + ENUM_IPC_PROTOCOL_YIVIEW, //ÒÚά + ENUM_IPC_PROTOCOL_TIANYUE , //ÌìÔ¾ + ENUM_IPC_PROTOCOL_HOWELL , //ºÆά + ENUM_IPC_PROTOCOL_WAPA, //²¨Á£ + ENUM_IPC_PROTOCOL_SANLE , //ÈýÀÖ + ENUM_IPC_PROTOCOL_HIKCARD_ENCRYPTION, //¼ÓÃܺ£¿µ°å¿¨ + ENUM_IPC_PROTOCOL_JUNSDA , //ÖæÊÓ´ï + ENUM_IPC_PROTOCOL_LIYUAN , //Á¢Ôª + ENUM_IPC_PROTOCOL_XINCHAN , //ÐŲú + ENUM_IPC_PROTOCOL_BITE , //±ÈÌØ + ENUM_IPC_PROTOCOL_MEIAN, //ÃÀ°² + ENUM_IPC_PROTOCOL_ROSEEK, //ÈñÊÆ + ENUM_IPC_PROTOCOL_AEBELL , //ÃÀµç±´¶û + ENUM_IPC_PROTOCOL_JSL_ST , //½ðÈýÁ¢ST + ENUM_IPC_PROTOCOL_VIMICRO, //ÖÐÐÇ΢µç×Ó + ENUM_IPC_PROTOCOL_UNIVIEW, //ÓîÊÓ + + ENUM_IPC_PROTOCOL_TYPE, //×î´ó³§ÉÌÀàÐÍ +}NET_DVR_IPC_ENUM_UNIFY, *LPNET_DVR_IPC_ENUM_UNIFY; + + + +typedef struct tagNET_DVR_MRD_SEARCH_PARAM +{ + DWORD dwSize; // ½á¹¹Ìå´óС + NET_DVR_STREAM_INFO struStreamInfo; // ¼à¿Øµã + WORD wYear; // Äê + BYTE byMonth; // Ô + BYTE byDrawFrame; // 0-²»³éÖ¡ 1-³éÖ¡ + BYTE byStreamType; //0-Ö÷ÂëÁ÷ 1-×ÓÂëÁ÷ + BYTE byLocalOrUTC; //0-É豸±¾µØʱÇø 1-UTC + BYTE byRes[30]; +}NET_DVR_MRD_SEARCH_PARAM, *LPNET_DVR_MRD_SEARCH_PARAM; + +typedef struct tagNET_DVR_MRD_SEARCH_RESULT +{ + DWORD dwSize; // ½á¹¹Ìå´óС + BYTE byRecordDistribution[LEN_32]; // ¼Ïñ·Ö²¼£¬byRecordDistribution[0]=1±íʾ1ÈÕ´æÔÚ¼Ïñ£¬byRecordDistribution[0]=0±íʾûÓмÏñ£¬ + //byRecordDistribution[1]±íʾ2ÈÕ£¬ÒÔ´ËÀàÍÆ + BYTE byHasEventRecode[LEN_31]; //ʼþ¼Ïñ 0-ÎÞʼþ¼Ïñ£¬1-ÓÐʼþ¼Ïñ + BYTE byRes; //±£Áô +}NET_DVR_MRD_SEARCH_RESULT, *LPNET_DVR_MRD_SEARCH_RESULT; + + +typedef struct tagNET_DVR_ACCESS_DEVICE_INFO +{ + DWORD dwSize; // ½á¹¹Ìå´óС + BYTE byGroup; // ×éºÅ£¬Ã¿×é¿É»ñÈ¡ 64¸öͨµÀ£¬´Ó0¿ªÊ¼, 0±íʾµÚ1×飬ÒÔ´ËÀàÍÆ + BYTE byProType; //ЭÒéÀàÐÍ£¬0-˽ÓÐЭÒ飬1-ËÉÏÂЭÒ飬2-Ë÷Äá + BYTE byAccessMode; //½ÓÈëģʽ£¬0-IPµØÖ·£¬1-ÓòÃû + BYTE byRes1; //±£Áô×ֶΣ¬ÖÃ0 + char szUserName[NAME_LEN]; //Óû§Ãû + char szPassword[PASSWD_LEN]; //ÃÜÂë + char szDomain[MAX_DOMAIN_NAME]; //É豸ÓòÃû + NET_DVR_IPADDR struIP; //IPµØÖ· + WORD wPort; // ¶Ë¿ÚºÅ + BYTE szGB28181DevID[DEV_ID_LEN]; //GB28181ЭÒé½ÓÈëʱµÄÉ豸·þÎñÆ÷ID + BYTE byRes2[2]; //±£Áô×ֶΣ¬ÖÃ0 +}NET_DVR_ACCESS_DEVICE_INFO, *LPNET_DVR_ACCESS_DEVICE_INFO; + +typedef struct tagNET_DVR_ACCESS_DEVICE_CHANNEL_INFO +{ + DWORD dwSize; // ½á¹¹Ìå´óС + DWORD dwTotalChannelNum; //É豸×ÜͨµÀ¸öÊý£¬É豸²»ÔÚÏßʱ·µ»Ø0£¬byChannelÎÞЧ + BYTE byChannel[MAX_CHANNUM_V30]; /*byChannel[i]Ϊ0±íʾµÚ£¨byGroup+1£©*£¨i-1£©Í¨µÀδ½ÓÈëµ½NVR£¬ + Ϊ1±íʾ¸ÃͨµÀÒѽÓÈëµ½NVR byGroupÔÚNET_DVR_ACCESS_DEVICE_INFOÖÐ*/ + BYTE byRes[32]; //±£Áô +}NET_DVR_ACCESS_DEVICE_CHANNEL_INFO, *LPNET_DVR_ACCESS_DEVICE_CHANNEL_INFO; + +typedef struct tagNET_DVR_PREVIEW_SWITCH_COND +{ + DWORD dwSize; //×éºÅ + BYTE byGroup; //×éºÅ£¬Ã¿×é¿ÉÅäÖÃ64¸ö»­Ãæ + BYTE byVideoOutType; /*ÊÓƵÊä³ö½Ó¿ÚÀàÐÍ,0-Ö÷CVBS,1-HDMI 2-VGA 3-¸¨ÖúÊä³öÒ» + 4-¸¨ÖúÊä³ö¶þ 5-¸¨ÖúÊä³öÈý 6-¸¨ÖúÊä³öËÄ, 7-¸¨ÖúHDMI, 8-À©Õ¹HDMI1, + 9-À©Õ¹HDMI2, 10-À©Õ¹HDMI3, 11-À©Õ¹HDMI4, 12-·ÇͬԴVGA1£¬ + 13-·ÇͬԴVGA2£¬14-·ÇͬԴVGA3£¬15-·ÇͬԴVGA4£¬16-ͬԴVGA, 17-Ö÷LCD,18-¸¨ÖúVGA,19-¸¨ÖúLCD*/ + BYTE byGetDefaultPreviewSet;//ÊÇ·ñ»ñÈ¡Ô¤É裬0-·ñ£¬1-ÊÇ£»ÈôΪÊÇʱ£¬byPreviewNumber×Ö¶ÎÓÐЧ + BYTE byPreviewNumber;//Ô¤ÀÀÊýÄ¿,0-1»­Ãæ,1-4»­Ãæ,2-9»­Ãæ,3-16»­Ãæ, 4-6»­Ãæ, 5-8»­Ãæ6-25»­Ãæ,7-32»­Ãæ, 8-36»­Ãæ 0xfb-×Ô¶¨Òå·ÖÆÁ4, 0xfc-×Ô¶¨Òå·ÖÆÁ3, 0xfd-×Ô¶¨Òå·ÖÆÁ2, 0xfe-×Ô¶¨Òå·ÖÆÁ1,0xff:×î´ó»­Ãæ +}NET_DVR_PREVIEW_SWITCH_COND, *LPNET_DVR_PREVIEW_SWITCH_COND; + +typedef struct tagNET_DVR_PREVIEW_SWITCH_CFG +{ + DWORD dwSize; // °æ±¾¹ÜÀí¼°½á¹¹Ìå´óС + WORD wSwitchSeq[MAX_WINDOW_V40];/*bySwitchSeq [i]=6£¬±íʾµÚ£¨×éºÅ*64+i+1£©¸ö´°¿Ú + ÏÔʾµÚÁùͨµÀ£¬Îª0xff±íʾ¸Ã´°¿Ú²»ÏÔʾ*/ + BYTE byPreviewNumber;/*Ô¤ÀÀÊýÄ¿,0-1»­Ãæ,1-4»­Ãæ,2-9»­Ãæ,3-16»­Ãæ, 4-6»­Ãæ, 5-8»­Ã棬6-25»­Ãæ,7-32»­Ãæ, 8-36»­Ãæ, 9-64»­Ãæ + 0xff:×î´ó»­Ãæ*/ + BYTE byEnableAudio;//ÊÇ·ñÉùÒôÔ¤ÀÀ,0-²»Ô¤ÀÀ,1-Ô¤ÀÀ + BYTE bySwitchTime;//Çл»Ê±¼ä,0-²»Çл»,1-5s,2-10s,3-20s,4-30s, 5-60s 6-120s,7-300s + BYTE bySameSource ; //ÊÇ·ñͬԴ£¬µ±ÊÓƵÊä³ö¿ÚÀàÐÍΪ·ÇͬԴVGA1-·ÇͬԴVGA4ʱÓÐЧ + BYTE byRes[32]; //±£Áô +}NET_DVR_PREVIEW_SWITCH_CFG,* LPNET_DVR_PREVIEW_SWITCH_CFG; + +typedef struct tagNET_DVR_USER_COND +{ + char szUserName[NAME_LEN]; + BYTE byRes[48]; +}NET_DVR_USER_COND, *LPNET_DVR_USER_COND; + +typedef struct tagNET_DVR_USER_RIGHT_CFG +{ + DWORD dwSize; + BYTE byAddMonitoringPointRight; // Ìí¼Ó¼à¿Øµã£¨Ç°¶ËÉ豸£©È¨ÏÞ0-ÎÞ 1-ÓÐ + BYTE byModMonitoringPointRight; // Ð޸ļà¿Øµã£¨Ç°¶ËÉ豸£©È¨ÏÞ0-ÎÞ 1-ÓÐ + BYTE byDelMonitoringPointRight; // Ìí¼Ó¼à¿Øµã£¨Ç°¶ËÉ豸£©È¨ÏÞ0-ÎÞ 1-ÓÐ + BYTE bySetRecordPlanRight; // Öƶ¨Â¼Ïñ²ßÂÔȨÏÞ0-ÎÞ 1-ÓÐ + BYTE byDelRecordPlanRight; // ɾ³ý¼Ïñ²ßÂÔȨÏÞ0-ÎÞ 1-ÓÐ + BYTE byEnableOrDisableRecordPlanRight; // ÆôÓúͽûÓüÏñ¼Æ»®È¨ÏÞ0-ÎÞ 1-ÓÐ + BYTE byManualRecordRight; // Æô¶¯ºÍÍ£Ö¹ÊÖ¶¯Â¼ÏñȨÏÞ0-ÎÞ 1-ÓÐ + BYTE bySetAlarmRecordRight; // ±¨¾¯Â¼ÏñÉ趨ȨÏÞ0-ÎÞ 1-ÓÐ + BYTE byRecordBackupRight; // ¼Ïñ´æµµÈ¨ÏÞ0-ÎÞ 1-ÓÐ + BYTE byRecordDownloadRight; // ¼ÏñÏÂÔØȨÏÞ0-ÎÞ 1-ÓÐ + BYTE byRecordDeleteRight; // ¼Ïñɾ³ýȨÏÞ0-ÎÞ 1-ÓУ¨±£Áô£© + BYTE byDelBackupRecordRight; // ɾ³ý´æµµÂ¼ÏñȨÏÞ0-ÎÞ 1-ÓУ¨±£Áô£© + BYTE bySetBackupVolumeRight; // ÉèÖô浵¾íȨÏÞ0-ÎÞ 1-ÓÐ + BYTE byRecordPlayBackRight; // ¼Ïñ»Ø·ÅȨÏÞ0-ÎÞ 1-ÓÐ DWORD dwZoneIndex + BYTE byLogDeleteRight; // ÈÕÖ¾Çå¿ÕȨÏÞ0-ÎÞ 1-ÓУ¨±£Áô£© + BYTE byLogDownloadRight; // ÈÕÖ¾ÏÂÔØȨÏÞ0-ÎÞ 1-ÓУ¨±£Áô£© + BYTE byAddUserRight; // Ìí¼ÓÓû§È¨ÏÞ0-ÎÞ 1-ÓÐ + BYTE byDelUserRight; // ɾ³ýÓû§È¨ÏÞ0-ÎÞ 1-ÓÐ + BYTE byModUserRight; // ÐÞ¸ÄÓû§È¨ÏÞ0-ÎÞ 1-ÓÐ + BYTE byAllocUserRight; // Óû§È¨ÏÞ·ÖÅäȨÏÞ0-ÎÞ 1-ÓÐ + BYTE byRes[128]; +}NET_DVR_USER_RIGHT_CFG, *LPNET_DVR_USER_RIGHT_CFG; + +typedef struct tagNET_DVR_MACHINE_MAX_NUM_CFG +{ + DWORD dwSize; + DWORD dwMaxNum; // ×î´ó±¸»úÊýÄ¿ + BYTE byRes[32]; +}NET_DVR_MACHINE_MAX_NUM_CFG, *LPNETDVR_MACHINE_MAX_NUM_CFG; + +//ÅäÖÃN+1É豸¹¤×÷»úģʽ£¬NVRÐèÒªÕâ²½£¬CVR²»ÐèÒª +typedef struct tagNET_DVR_N_PLUS_ONE_WORK_MODE_CFG +{ + DWORD dwSize ; + BYTE byWorkMode; //0-¹¤×÷»ú 1-±¸»ú + BYTE byRes[127]; //±£Áô +}NET_DVR_N_PLUS_ONE_WORK_MODE_CFG, *LPNET_DVR_N_PLUS_ONE_WORK_MODE_CFG; + +typedef struct tagNET_DVR_ADD_PARAM +{ + NET_DVR_IPADDR struIP; // É豸IP + char szPassword[PASSWD_LEN]; //±¸»úÃÜÂ룬Ðè¼òÒ×¼ÓÃÜ + BYTE byAddType; // 0-£¨¹¤×÷»úÉÏ£©Ìí¼Ó±¸»ú£¬1-£¨±¸»úÉÏ£©Ìí¼Ó¹¤×÷»ú + BYTE byDisableBackup; //±¸·Ý¹¦ÄÜʹÄÜ¿ª¹Ø 0-¿ªÆô1-¹Ø±Õ CVRĬÈÏ¿ªÆô +}NET_DVR_ADD_PARAM, *LPNET_DVR_ADD_PARAM; + +typedef struct tagNET_DVR_DEL_PARAM +{ + NET_DVR_IPADDR struIP; // É豸IP + BYTE byDelType; // 0-ɾ³ýÖ¸¶¨µÄ»úÆ÷£¨±¸»ú»ò¹¤×÷»ú£©1-ȫɾ +}NET_DVR_DEL_PARAM, *LPNET_DVR_DEL_PARAM; + +typedef union tagNET_DVR_NPO_PARAM_UNION +{ + NET_DVR_ADD_PARAM struAddParam; //Ìí¼ÓÐÅÏ¢ + NET_DVR_DEL_PARAM struDelParam; //ɾ³ýÐÅÏ¢ +}NET_DVR_NPO_PARAM_UNION, *LPNET_DVR_NPO_PARAM_UNION; + +// N+1ģʽÉ豸²ÎÊý +typedef struct tagNET_DVR_N_PLUS_ONE_DEVICE_PARAM +{ + DWORD dwSize; + NET_DVR_NPO_PARAM_UNION unionParam; + BYTE byType; /* 0-Ìí¼Ó£¬¶ÔÓ¦unionParamÖеÄstruAddParam 1-ɾ³ý£¬¶ÔÓ¦unionParamÖеÄstruDelParam 2-Ìí¼ÓÇÒÓû§ÃûÉúЧ£¬¶ÔÓ¦unionParamÖеÄstruAddParam ºÍszUserName*/ + BYTE byRes[3]; + char szUserName[NAME_LEN]; //Óû§Ãû + BYTE byRes2[220]; // ±£Áô +}NET_DVR_N_PLUS_ONE_DEVICE_PARAM, *LPNET_DVR_N_PLUS_ONE_DEVICE_PARAM; + +// Êý¾Ý»ØǨ +typedef struct tagNET_DVR_DATA_CALLBACK_CFG +{ + DWORD dwSize; + BYTE byEnable; // 0-²»ÆôÓÃÊý¾Ý»ØǨ 1-ÆôÓÃÊý¾Ý»ØǨ + BYTE byDelData; // µ±byEnableΪ1ÊÇÓÐЧ 0-²»É¾³ý±¸»ú¼ÏñÊý¾Ý 1-ɾ³ý±¸»ú¼ÏñÊý¾Ý + BYTE byRes[30]; +}NET_DVR_DATA_CALLBACK_CFG, *LPNET_DVR_DATA_CALLBACK_CFG; + +typedef struct tagNET_DVR_HD_STATUS +{ + DWORD dwSize; + BYTE bySleepStatus;/*ÐÝÃß״̬0-²»ÐÝÃß 1-ÐÝÃß*/ + BYTE byRes[127]; +}NET_DVR_HD_STATUS, *LPNET_DVR_HD_STATUS; + +typedef struct tagNET_DVR_RAID_BTS_CFG +{ + DWORD dwSize; + BYTE bySpeed; /*0-¸ßËÙ 1-ÖÐËÙ 2-µÍËÙ*/ + BYTE byRes[127]; +}NET_DVR_RAID_BTS_CFG, *LPNET_DVR_RAID_BTS_CFG; + +typedef struct tagNET_DVR_LUN_CLONE +{ + DWORD dwSize; + DWORD dwSrcLunID; // Ô´LUN ID + DWORD dwDstLunID; // Ä¿µÄLUN ID + BYTE byRes[32]; +}NET_DVR_LUN_CLONE, *LPNET_DVR_LUN_CLONE; + +typedef struct tagNET_DVR_LUN_EXPAND +{ + DWORD dwSize; + DWORD dwLunID; // LUN ID + DWORD dwHSize; // À©Õ¹µÄ´óС¸ß32λ + DWORD dwLSize; // À©Õ¹µÄ´óСµÍ32λ + char szArrayIDGroup[NAME_LEN]; // ʹÓõÄÕóÁÐID×飬ÒÔ¶ººÅ¸ô¿ª£¬Îª¿ÕÔòΪĬÈÏ + char szNewLunName[MAX_NAMELEN]; // ÐÂLUNÃû + BYTE byRes[32]; +}NET_DVR_LUN_EXPAND, *LPNET_DVR_LUN_EXPAND; + + +typedef struct tagNET_DVR_DVR_NET_DISK_MODIFY +{ + DWORD dwSize; + char szOldDvrNetDiskName[MAX_NAMELEN]; // Ô­DVRÍøÅ̹²ÏíÃû + char szNewDvrNetDiskName[MAX_NAMELEN]; // ÐÂDVRÍøÅ̹²ÏíÃû + NET_DVR_IPADDR struWarrantIP; // ÐÂÊÚȨµÄDVRÍøÅÌIP + BYTE byRes[32]; +}NET_DVR_DVR_NET_DISK_MODIFY, *LPNET_DVR_DVR_NET_DISK_MODIFY; + + +typedef struct tagNET_DVR_NAS_PARAM +{ + DWORD dwSize; + DWORD dwLunID; // LUN ID + BYTE byRes[32]; +}NET_DVR_NAS_PARAM, *LPNET_DVR_NAS_PARAM; + +typedef struct tagNET_DVR_ISCSI_PARAM +{ + DWORD dwSize; + DWORD dwTargetID; // iSCSI·þÎñµÄTarget ID + DWORD dwLunID; // LUN ID + DWORD dwAccessMode; //¶Áд·½Ê½ 0-¶Áд 1-ͬ²½¶Áд 2-Ö»¶Á 3-ÖÇÄÜÖ»¶Á; + NET_DVR_IPADDR struClientIP; // ¿Í»§¶ËIP£¬0.0.0.0ΪËùÒÔIP + BYTE byRes[32]; +}NET_DVR_ISCSI_PARAM, *LPNET_DVR_ISCSI_PARAM; + +typedef struct tagNET_DVR_FC_PARAM +{ + DWORD dwSize; + DWORD dwStoreLunID; // ´æ´¢LUN ID + DWORD dwLogicLunID; // Âß¼­LUN ID£¬-1±íʾ×Ô¶¯Éú³É + DWORD dwHbaID; // ¹âÏËͨµÀºÅ + DWORD dwAccessMode; //¶Áд·½Ê½ 0-¶Áд 1-ͬ²½¶Áд 2-Ö»¶Á 3-ÖÇÄÜÖ»¶Á; + char szClientWWWPN[NAME_LEN]; // ¿Í»§¹âÏË¿¨ + BYTE byRes[32]; +}NET_DVR_FC_PARAM, *LPNET_DVR_FC_PARAM; + + +// Âß¼­¾í 60×Ö½Ú +typedef struct tagNET_DVR_LUN_PARAM +{ + DWORD dwHCapacity; // Âß¼­¾í´óС¸ß32λ + DWORD dwLCapacity; // Âß¼­¾í´óСµÍ32λ + char szName[MAX_NAMELEN]; // Âß¼­¾íÃû³Æ + DWORD dwBlockSize; // Âß¼­¾íµÄ×îС´æ´¢µ¥Ôª¿é´óС + char szArrayIDGroup[NAME_LEN]; //ʹÓõÄÕóÁÐID×飬ÒÔ¶ººÅ¸ô¿ª£¬Îª¿ÕÔòʹÓÃĬÈÏÕóÁÐ +}NET_DVR_LUN_PARAM, *LPNET_DVR_LUN_PARAM; + +typedef struct tagNET_DVR_DVR_PARAM_ +{ + DWORD dwHCapacity; // DVRÍøÅÌ´óС¸ß32λ + DWORD dwLCapacity; // DVRÍøÅÌ´óСµÍ32λ + char szName[MAX_NAMELEN]; // DVRÍøÅÌÃû³Æ + DWORD dwBlockSize; // Âß¼­¾íµÄ×îС´æ´¢µ¥Ôª¿é´óС + NET_DVR_IPADDR struWarrantIP; // ÊÚȨµÄDVRÍøÅÌIP + char szArrayIDGroup[NAME_LEN]; //ʹÓõÄÕóÁÐID×飬ÒÔ¶ººÅ¸ô¿ª£¬Îª¿ÕÔòʹÓÃĬÈÏÕóÁÐ +}NET_DVR_DVR_PARAM, *LPNET_DVR_DVR_PARAM; + +typedef union tagNET_DVR_VD_UNION +{ + BYTE byUnionLen[256]; // ÁªºÏÌå´óС + NET_DVR_OPERATE_VD_PARAM struHikVDParam; // ÐéÄâ´ÅÅÌ + NET_DVR_LUN_PARAM struLunParam; // Âß¼­¾í + NET_DVR_DVR_PARAM struDvrParam; // DVRÍøÅÌ +}NET_DVR_VD_UNION, *LPNET_DVR_VD_UNION; + +typedef struct tagNET_DVR_OPERATE_VD_PARAM_EX +{ + BYTE byVDType; //ÐéÄâ´ÅÅÌÀàÐÍ£º0-˽ÓÐÐéÄâ´ÅÅÌ 1-Âß¼­¾í 2-DVRÍøÅÌ + BYTE byRes1[3]; + NET_DVR_VD_UNION uVDParam; + BYTE byRes2[32]; +}NET_DVR_OPERATE_VD_PARAM_EX, *LPNET_DVR_OPERATE_VD_PARAM_EX; + +typedef struct tagNET_DVR_CVR_ALARM +{ + char szFirstType[NAME_LEN]; //Ö÷ÀàÐÍ£¬²»ÄÜΪ¿Õ + char szFirstIndex[NAME_LEN]; //Ö÷ÀàÐͱàºÅ + char szSecondType[NAME_LEN]; //´ÎÀàÐÍ£¬¿ÉÒÔΪ¿Õ + NET_DVR_TIME struTime; //±¨¾¯Ê±¼ä + BYTE byStatus; //״̬ 0-Õý³£ ·Ç0-²»Õý³££¬²»Í¬ÀàÐÍÖµ±íʾÒâÒ岻ͬ£¬¼ûϱí + BYTE byAlarmLevel; //±¨¾¯¼¶±ð + BYTE byRes1[2]; + char szSecondIndex[NAME_LEN]; //´ÎÀàÐͱàºÅ£¬¿ÉÒÔΪ¿Õ + char szThirdType[NAME_LEN]; //µÚÈýÀàÐÍ£¬¿ÉÒÔΪ¿Õ + char szThirdIndex[NAME_LEN]; //µÚÈýÀàÐͱàºÅ + char szFourthType[NAME_LEN]; //µÚËÄÀàÐÍ£¬¿ÉÒÔΪ¿Õ + char szFourthIndex[NAME_LEN]; //µÚËÄÀàÐͱàºÅ + BYTE byRes2[92]; //±£Áô +}NET_DVR_CVR_ALARM, *LPNET_DVR_CVR_ALARM; + +typedef struct tagNET_DVR_WORKING_DEVICE_INFO +{ + NET_DVR_IPADDR struIP; //É豸IP + BYTE byLinkStatus; //Á¬½Ó״̬ 0-Á¬½Óʧ°Ü1-Á¬½Ó³É¹¦ + BYTE byWorkStatus; //¹¤×÷״̬ 0-Õý³£1-Òì³£ + BYTE byBacupStatus; //±¸·Ý״̬0-²»ÔÚ±¸·Ý1-ÕýÔÚ±¸·Ý + BYTE bySyncProgress; //¼Ïñͬ²½½ø¶È£¬0±íʾδ¿ªÊ¼£¬100±íʾͬ²½Íê³É + NET_DVR_TIME_EX struSyncBeginTime; //ͬ²½¿ªÊ¼Ê±¼ä + NET_DVR_TIME_EX struSyncEndTime; //ͬ²½½áÊøʱ + char szSerialNumber[SERIALNO_LEN] ; //É豸ÐòÁкŠ+ DWORD dwSoftwareVersion ; //É豸Èí¼þ°æ±¾ + BYTE byWorkingDeviceGUID[GUID_LEN]; //¹¤×÷»úGUID£¬·Ç×Ö·û´®£¬ÓÃÓÚ±¸»úÉÏËÑË÷¹¤×÷»ú¼Ïñ + char szDevTypeName[DEV_TYPE_NAME_LEN]; //É豸ÀàÐÍÃû³Æ + WORD wDevType; //É豸ÀàÐÍÖµ +}NET_DVR_WORKING_DEVICE_INFO, *LPNET_DVR_WORKING_DEVICE_INFO; + +typedef struct tagNET_DVR_REDUNDANT_DEVICE_INFO +{ + NET_DVR_IPADDR struIP; //É豸IP + BYTE byWorkStatus; //¹¤×÷״̬ 0-Õý³£1-Òì³£ + BYTE byBackupStatus; //±¸·Ý״̬0-²»ÔÚ¼à¿Ø 1-ÕýÔÚ¼à¿Ø2-ÕýÔÚ±¸·ÝÖÐ2-ÕýÔÚͬ²½ + WORD wBackupPort; //±¸·Ý¶Ë¿Ú +}NET_DVR_REDUNDANT_DEVICE_INFO, *LPNET_DVR_REDUNDANT_DEVICE_INFO; + +typedef struct tagNET_DVR_WORKING_DEVICE_INFO_V50 +{ + NET_DVR_WORKING_DEVICE_INFO struWorkingDeviceInfo; //¹¤×÷»úÐÅÏ¢ + char szUserName[NAME_LEN]; //Óû§Ãû + BYTE byRes[32]; +}NET_DVR_WORKING_DEVICE_INFO_V50, *LPNET_DVR_WORKING_DEVICE_INFO_V50; + +typedef struct tagNET_DVR_REDUNDANT_DEVICE_INFO_V50 +{ + NET_DVR_REDUNDANT_DEVICE_INFO struRedundantDeviceInfo; //±¸»úÐÅÏ¢ + char szUserName[NAME_LEN]; //Óû§Ãû + BYTE byRes[32]; +}NET_DVR_REDUNDANT_DEVICE_INFO_V50, *LPNET_DVR_REDUNDANT_DEVICE_INFO_V50; + +typedef union tagNET_DVR_NPO_DEV_INFO_UNION +{ + BYTE byUnionLen[512]; //ÁªºÏÌ峤¶È + NET_DVR_WORKING_DEVICE_INFO struWorkingDeviceInfo; //¹¤×÷»úÐÅÏ¢ + NET_DVR_REDUNDANT_DEVICE_INFO struRedundantDeviceInfo; //±¸»úÐÅÏ¢ + NET_DVR_WORKING_DEVICE_INFO_V50 struWorkingDeviceInfoV50; //¹¤×÷»úÐÅÏ¢V50 + NET_DVR_REDUNDANT_DEVICE_INFO_V50 struRedundantDeviceInfoV50; //±¸»úÐÅÏ¢V50 +}NET_DVR_NPO_DEV_INFO_UNION, *LPNET_DVR_NPO_DEV_INFO_UNION; + + +typedef struct tagNET_DVR_N_PLUS_ONE_DEVICE_INFO +{ + DWORD dwSize; + NET_DVR_NPO_DEV_INFO_UNION unionDevInfo; + BYTE byType; /*ÀàÐÍ 0-¹¤×÷»ú£¬¶ÔÓ¦unionDevInfoÖеÄstruWorkingDeviceInfo 1-±¸»ú£¬¶ÔÓ¦unionDevInfoÖеÄstruRedundantDeviceInfo + 2-¹¤×÷»úV50£¬¶ÔÓ¦unionDevInfoÖеÄstruWorkingDeviceInfoV50 3-±¸»úV50£¬¶ÔÓ¦unionDevInfoÖеÄstruRedundantDeviceInfoV50*/ + BYTE byRes[127]; +}NET_DVR_N_PLUS_ONE_DEVICE_INFO, *LPNET_DVR_N_PLUS_ONE_DEVICE_INFO; + +//ipcÉý¼¶²ÎÊý +typedef struct tagNET_DVR_UPGRADE_IPC_PARAM +{ + NET_DVR_STREAM_INFO struStreamInfo[MAX_CHANNUM_V30]; // 64¸ö¼à¿Øµã + char szFileName[260]; // Éý¼¶ÎļþÃû +}NET_DVR_UPGRADE_IPC_PARAM, *LPNET_DVR_UPGRADE_IPC_PARAM; + + +typedef struct tagNET_DVR_UPGRADE_IPC_ERR_INFO_SINGLE +{ + NET_DVR_STREAM_INFO struStreamInfo; //¼à¿Øµã + WORD wErrCode; //¶ÔÓ¦´íÎóÂë + BYTE byRes[30]; //±£Áô +}NET_DVR_UPGRADE_IPC_ERR_INFO_SINGLE, *LPNET_DVR_UPGRADE_IPC_ERR_INFO_SINGLE; + +typedef struct tagNET_DVR_UPGRADE_IPC_ERR_INFO +{ + NET_DVR_UPGRADE_IPC_ERR_INFO_SINGLE struErrInfoSingle[MAX_CHANNUM_V30]; +}NET_DVR_UPGRADE_IPC_ERR_INFO, *LPNET_DVR_UPGRADE_IPC_ERR_INFO; + +//IPCÅäÖÃÎļþµ¼Èë +typedef struct tagNET_DVR_IPC_CFG_FILE_PARAM +{ + char szFileName[260]; // ÅäÖÃÎļþÃû + BYTE byRes[32]; +}NET_DVR_IPC_CFG_FILE_PARAM, *LPNET_DVR_IPC_CFG_FILE_PARAM; + +typedef struct tagNET_DVR_IPC_CFG_FILE_ERR_INFO_SINGLE +{ + WORD wRow; //³ö´íµÄÐУ¬0±íʾû³ö´í£¬1±íʾµÚ1Ðгö´í£¬ÒÔ´ËÀàÍÆ + WORD wErrCode; //´íÎóÂë + BYTE byRes[32]; +}NET_DVR_IPC_CFG_FILE_ERR_INFO_SINGLE, *LPNET_DVR_IPC_CFG_FILE_ERR_INFO_SINGLE; + +typedef struct tagNET_DVR_IPC_CFG_FILE_ERR_INFO +{ + NET_DVR_IPC_CFG_FILE_ERR_INFO_SINGLE struErrInfoSingle[MAX_CHANNUM_V30]; +}NET_DVR_IPC_CFG_FILE_ERR_INFO, *LPNET_DVR_IPC_CFG_FILE_ERR_INFO; + +typedef struct tagNET_DVR_TRANSFER_SWITCH +{ + DWORD dwEnable; + BYTE byRes[64]; +}NET_DVR_TRANSFER_SWITCH, *LPNET_DVR_TRANSFER_SWITCH; + +typedef struct tagNET_DVR_PTZ_PATTERN +{ + DWORD dwSize; + DWORD dwChannel; //ͨµÀºÅ + DWORD dwPatternCmd; //ÔÆ̨¹ì¼£²Ù×÷ÃüÁîÂë,Ïê¼ûÏÂÃ涨Òå + DWORD dwPatternID; //ÔÆ̨¹ì¼£ID£¨É¾³ýËùÓй켣ʱÎÞЧ£© + BYTE byRes[64]; +}NET_DVR_PTZ_PATTERN, *LPNET_DVR_PTZ_PATTERN; + +typedef struct tagNET_DVR_PTZ_PARKACTION_CFG +{ + DWORD dwSize; + BYTE byEnable; //ÊÇ·ñÆôÓã¬0-²»ÆôÓã¬1-ÆôÓà + BYTE byOneTouchSwitch;//Ò»¼ü¿ª¹Ø, 0-²»ÆôÓã¬1-ÆôÓà (ºÍwActionType×éºÏʹÓÃ) + BYTE byRes1[2]; + DWORD dwParkTime; //ÊØÍûµÈ´ýʱ¼ä£¬µ¥Î»s + WORD wActionType; //ÊØÍû¶¯×÷ÀàÐÍ£¬0-×Ô¶¯É¨Ã裬1-֡ɨÃ裬2-Ëæ»úɨÃ裬3-Ѳº½É¨Ã裬4-»¨ÑùɨÃ裬5-Ô¤Öõ㣬6-È«¾°É¨Ã裬7-´¹Ö±É¨Ãè, 8-ÇøÓòɨÃè + WORD wID; //IDºÅ£¨Ñ²º½É¨Ãè¡¢Ô¤Öõ㡢»¨ÑùɨÃèµÄID£© + BYTE byRes[128]; +}NET_DVR_PTZ_PARKACTION_CFG, *LPNET_DVR_PTZ_PARKACTION_CFG; + +typedef struct tagNET_DVR_PTZ_MANUALTRACE +{ + DWORD dwSize; + DWORD dwChannel; //ͨµÀºÅ + NET_VCA_POINT struPoint; //¶¨Î»×ø±ê + BYTE byTrackType; //¸ú×ÙÀàÐÍ0¡¢·Ç×Ô¶¯È¡Ö¤(ÆÕͨȡ֤) 1¡¢¸ßËÙµÀ·¸ú×Ù 2¡¢³ÇÊеÀ·¸ú×Ù£¨ÊÖ¶¯¸ú×ÙÈ¡Ö¤£©3¡¢¾²Ì¬È¡Ö¤ + BYTE byLinkageType;//Áª¶¯¶¯×÷: 0-ÊÖ¶¯¸ú×Ù 1-Áª¶¯²»¸ú×Ù + BYTE byRes[2]; + NET_VCA_POINT struPointEnd;/*¶¨Î»×ø±êÖÕµã*/ + NET_DVR_TIME_V30 struTime;//ÊÖ¶¯¸ú×Ù¶¨Î»£¬µ±Ç°Ê±¼ä¡£ + DWORD dwSerialNo;//ÐòºÅ£» + BYTE byRes1[36]; +}NET_DVR_PTZ_MANUALTRACE, *LPNET_DVR_PTZ_MANUALTRACE; + +typedef enum tagVQD_TYPE +{ + VQD_BLUR_FLAG = 0x00000001, //ͼÏñÄ£ºý + VQD_LUMA_FLAG = 0x00000002,//ÁÁ¶ÈÒì³£ + VQD_CHROMA_FLAG = 0x00000004,//ͼÏñÆ«É« + VQD_SNOW_FLAG = 0x00000008,//Ñ©»¨¸ÉÈÅ + VQD_STREAK_FLAG = 0x00000010,//ÌõÎƸÉÈÅ + VQD_FREEZE_FLAG = 0x00000020,//»­Ã涳½á + VQD_SIGLOSE_FLAG = 0x00000040,//ÐźŶªÊ§ + VQD_PTZ_FLAG = 0x00000080//ÔÆ̨ʧ¿Ø +}VQD_TYPE; + +typedef struct tagNET_DVR_VQD_LOOP_DIAGNOSE_CFG +{ + DWORD dwSize ; //½á¹¹Ìå´óС + BYTE byEnable; // Õï¶ÏʹÄÜ 0 :¹Ø±Õ£¬¿ªÆô 1:¿ªÆô + BYTE byRes1[3] ; //±£Áô + BYTE byVQDTypeEnable[32]; //VQDÕï¶Ïģʽ£¬0 --²»ÆôÓà 1--ÆôÓà ÿÖÖÕï¶ÏÀàÐͶÔÓ¦ÓÐÁéÃô¶È£¬ÁéÃô¶ÈµÄϱêÓëÕï¶ÏÀàÐ͵ÄϱêÒ»Ö + /*Êý×é0 ͼÏñÄ£ºý Êý×é1 ÁÁ¶ÈÒì³£ Êý×é2 ͼÏñÆ«É«*/ + /*Êý×é3 Ñ©»¨¸ÉÈÅ Êý×é4 ÌõÎƸÉÈÅ Êý×é5 »­Ã涳½á*/ + /*Êý×é6 ÐźŶªÊ§ Êý×é7 ÔÆ̨ʧ¿Ø*/ + BYTE byThresholdValue[32] ; //ãÐÖµ0~100£¬²»Í¬Õï¶ÏģʽÓи÷×Ô¶ÔÓ¦µÄãÐÖµ + NET_DVR_HANDLEEXCEPTION_V40 struAlarmHandleType; //±¨¾¯´¦Àí·½Ê½ + NET_DVR_SCHEDTIME struAlarmTime[MAX_DAYS][MAX_TIMESEGMENT_V30]; + NET_DVR_SCHEDTIME struHolidayAlarmTime[MAX_TIMESEGMENT_V30]; //¼ÙÈÕ²¼·Àʱ¼ä¶Î + BYTE byRes[324]; //±£Áô +}NET_DVR_VQD_LOOP_DIAGNOSE_CFG, *LPNET_DVR_VQD_LOOP_DIAGNOSE_CFG; + + +typedef struct tagNET_DVR_VQD_DIAGNOSE_EXCEPTION_INFO +{ + DWORD dwChannelNO; //ͨµÀºÅ + DWORD dwVQDType; // VQDÕï¶ÏÀàÐÍ + NET_DVR_TIME struDiagnoseTime; //Õï¶Ïʱ¼ä + BYTE byScoreValue; //·ÖÊýÖµ £¬°Ù·ÖÖÆ + BYTE byRes[27]; +}NET_DVR_VQD_DIAGNOSE_EXCEPTION_INFO,*LPNET_DVR_VQD_DIAGNOSE_EXCEPTION_INFO; + + +typedef struct tagNET_DVR_VQD_DIAGNOSE_INFO +{ + DWORD dwSize ; //½á¹¹Ìå´óС + NET_DVR_VQD_DIAGNOSE_EXCEPTION_INFO struVQDDiagnoseExceptionInfo ; //Õï¶ÏÒì³£ÐÅÏ¢½á¹¹Ìå +}NET_DVR_VQD_DIAGNOSE_INFO, *LPNET_DVR_VQD_DIAGNOSE_INFO; + +typedef struct tagNET_DVR_DEC_RESOURCE_LIST +{ + DWORD dwSize; + BYTE byDecStatus[MAX_SUBSYSTEM_NUM_V40/*120*/]; + //½âÂë×ÊԴ״̬ÁÐ±í£¬byDecStatus[i]±íʾ²ÛλºÅiµÄ×Óϵͳ״̬£¬0-ÎÞЧ£¬1-¿ÕÏУ¬2-ÆÕͨ½âÂë(°üÀ¨ÆÕͨ½âÂëÉÏǽºÍ´óÆÁÖ÷´ÓÆÁ)£¬3-ÖÇÄܽâÂë + BYTE byRes[32]; +}NET_DVR_DEC_RESOURCE_LIST,*LPNET_DVR_DEC_RESOURCE_LIST; + +typedef struct tagNET_DVR_DEC_APPLICANT_INFO +{ + DWORD dwSize; + DWORD dwDecResource; /*ÉêÇëµÄ½âÂë×ÊÔ´£¬ÒÔ·Ö±æÂʺâÁ¿£¬0-DCIF 1-CIF, 2-QCIF, 3-4CIF, 4-2CIF 5£¨±£Áô£©, + 6-QVGA(320*240), 7-QQVGA(160*120), 16-VGA£¨640*480£©, 17-UXGA£¨1600*1200£©, 18-SVGA £¨800*600£©, + 19-HD720p£¨1280*720£©,20-XVGA, 21-HD900p, 27-HD1080i, 28-2560*1920, 29-1600*304, 30-2048*1536, + 31-2448*2048,32-2448*1200,33-2448*800,34-XGA£¨1024*768£©£¬35-SXGA£¨1280*1024£©,36-WD1(960*576/960*480), + 37-1080i,38-WXGA(1440*900),39-HD_F(1920*1080/1280*720),40-HD_H(1920*540/1280*360),41-HD_Q(960*540/630*360)*/ + DWORD dwChannel; //ÖÇÄÜͨµÀºÅ + NET_DVR_IPADDR struIP; //ÉêÇëÕßIP + WORD wPort; //ÉêÇëÕ߶˿ںÅ(ÖÇÄÜ·ÖÎöÒÇͨѶ¶Ë¿Ú) + BYTE byRes[18]; +}NET_DVR_DEC_APPLICANT_INFO,*LPNET_DVR_DEC_APPLICANT_INFO; + +typedef struct tagNET_DVR_DEC_RESOURCE_INFO +{ + DWORD dwSize; + DWORD dwSlotNum; //²ÛλºÅ£¬´Ë²ÎÊý×öÊͷŽâÂë×ÊÔ´ºÍµÇ½½âÂë×ÓϵͳУÑéÓà + NET_DVR_IPADDR struIP; //½âÂë×ÓϵͳIPµØÖ· + WORD wPort; //¶Ë¿ÚºÅ + BYTE byRes1[2]; + DWORD dwDecChan; //½âÂëͨµÀºÅ + BYTE sUserName[NAME_LEN]; /* ½âÂë×ÓϵͳµÇ½ÕʺŠ*/ + BYTE sPassword[PASSWD_LEN]; /* ½âÂë×ÓϵͳµÇ½ÃÜÂë */ + BYTE byRes2[32]; +}NET_DVR_DEC_RESOURCE_INFO,*LPNET_DVR_DEC_RESOURCE_INFO; + +typedef struct tagNET_DVR_DEC_CHAN_COND +{ + DWORD dwSize; + DWORD dwSlotNum; //²ÛλºÅ,ÌîÉêÇë½âÂë×ÊԴʱ·µ»ØµÄ²ÛλºÅ + DWORD dwDecChan; //½âÂëͨµÀºÅ + BYTE byRes[16]; +}NET_DVR_DEC_CHAN_COND,*LPNET_DVR_DEC_CHAN_COND; + +typedef struct tagNET_DVR_DEC_YUV_CFG +{ + DWORD dwSize; + BYTE byEnable; //¹ØÁªÊ¹ÄÜ£¬0-ÎÞ¹ØÁª£¬1-¹ØÁª + BYTE byRes1[3]; + //byEnable = 1ʱÒÔϲÎÊýÓÐЧ + DWORD dwYUVAddress[3]; //YUVÊä³öµØÖ· + WORD wWidth; //YUVÊä³ö¿í + WORD wHeight; //YUVÊä³ö¸ß + BYTE byEnableAudio; //ʹÄÜÒôƵ£¬0-²»ÆôÓã¬1-ÆôÓà + BYTE byRes2[3]; + DWORD dwAudioAddr; //ÒôƵÊä³öµØÖ· + BYTE byRes3[16]; +}NET_DVR_DEC_YUV_CFG,*LPNET_DVR_DEC_YUV_CFG; + +typedef struct tagNET_DVR_INPUT_INFO +{ + DWORD dwSize; + BYTE byChanType; //½ÓÈëÀàÐÍ£¬1-±¾µØÄ£ÄâÁ¿Í¨µÀ£¬2-±¾µØ¿ª¹ØÁ¿Í¨µÀ£¬3-485ͨµÀ£¬4-ÍøÂçͨµÀ + BYTE byRes1[3]; + DWORD dwChanNo; //ͨµÀºÅ£¬É豸ͨµÀºÅ£¬Ö§³ÖbyChanTypeËùÓÐÀàÐÍ + DWORD dwSubChanNo; //²ÛλºÅ£¬485²ÛλºÅ£¬ÔÚbyChanTypeΪ3-485ͨµÀʱÓÐЧ£¬±íʾͨµÀºÅϵÄ×ÓͨµÀºÅ + DWORD dwVariableNo; //±äÁ¿±àºÅ£¬µ±byChanTypeΪ2-±¾µØ¿ª¹ØÁ¿Í¨µÀʱ(1-ÊäÈ룬2-Êä³ö) + BYTE byRemoteType; //»ñÈ¡±äÁ¿ÀàÐÍ£¬0-È«²¿ÀàÐÍ£¬1-Ò£ÐÅ£¬2-Ò£²â + BYTE byLinkageIPCType; //Áª¶¯IPCÅäÖÃÀàÐÍ£º0-ĬÈÏ£¬1-°´±äÁ¿ºÅÅäÖã¬2-°´Í¨µÀºÅÅäÖà + BYTE byLinkageTriggerType; //Áª¶¯´¥·¢Æ÷ÅäÖÃÀàÐÍ£º0-ĬÈÏ£¬1-°´±äÁ¿ºÅÅäÖã¬2-°´Í¨µÀºÅÅäÖà + BYTE byRes2[57]; +}NET_DVR_INPUT_INFO, *LPNET_DVR_INPUT_INFO; + +typedef struct tagNET_DVR_ALARM_VARIABLE_CFG +{ + DWORD dwSize; + WORD wVariableIndex; //±äÁ¿±àºÅ£¬Ö»ÄÜ»ñÈ¡ + WORD wVariableType; //±äÁ¿ÀàÐÍ 1-Ä£ÄâÁ¿ 2-¿ª¹ØÁ¿£¬Ö»ÄÜ»ñÈ¡ + BYTE sDescribe[NAME_LEN];//±äÁ¿ÃèÊö + BYTE byLimitLineType; //±¨¾¯ÏÞÖµÅäÖÃÀàÐÍ£¬0-²»Ö§³Ö±¨¾¯ÏÞÖµÅäÖã¬1-Á½ÏÞÖµÅäÖ㨼´ÉÏÏÞ¡¢ÏÂÏÞ£©£¬2-ËÄÏÞÖµÅäÖà + BYTE byRemoteType; //±äÁ¿Ô¶¶¯ÏµÍ³ÀàÐÍ£º0-È«²¿ÀàÐÍ£¬1-Ò£ÐÅ£¬2Ò£²â + BYTE byOsdEnabled; //±äÁ¿ÊÇ·ñÖ§³ÖOSDµþ¼Ó:0-ĬÈÏ£¬1-Ö§³Ö£¬2-²»Ö§³Ö + BYTE byRes[29]; //±£Áô +}NET_DVR_ALARM_VARIABLE_CFG, *LPNET_DVR_ALARM_VARIABLE_CFG; + + +//Ä£ÄâÁ¿µãºÅÏà¹Ø²ÎÊý +typedef struct tagNET_DVR_ALARM_SENSOR_POINT_CFG +{ + int nMeasureHigh; // Á¿³ÌÉÏÏÞ Íⲿֵ*1000´«Èë ¿ÉÒÔΪ¸ºÊý + int nMeasureLow; // Á¿³ÌÏÂÏÞ Íⲿֵ*1000´«Èë + BYTE byAlarmMode; // ±¨¾¯Ä£Ê½£¬ÎåÖÖ£¬-HHHH¡¢-HHHL¡¢-HHLL¡¢HLLL¡¢-LLLL£¬ + // ¼´£º1111£¨ÉÏÉÏÉÏÉÏ£©£¬1110£¨ÉÏÉÏÉÏÏ£©£¬1100£¨ÉÏÉÏÏÂÏ£©£¬1000(ÉÏÏÂÏÂÏÂ)£¬0000(ÏÂÏÂÏÂÏÂ) + BYTE byRes1[3]; + int nAlarmValue[4]; // ±¨¾¯ÏÞ + DWORD dwOsdCfg; // Ä£ÄâÁ¿×Ö·ûµþ¼Ó£¬°´Î»±íʾ0-15¶ÔÓ¦ÊÓƵͨµÀ1-16 + DWORD dwSensitive; // ÁéÃô¶È·¶Î§10~1000¡£Íⲿ float*1000¡£ ÁéÃô¶È±íʾµ±ÊµÊ±ÖµµÄ±ä»¯³¬¹ýÁéÃô¶ÈµÄ·¶Î§Ê±£¬Ôò±íʾʵʱֵ·¢ÉúÁ˱仯£¬·ñÔòÈÏΪûÓз¢Éú±ä»¯¡£È磺ÁéÃô¶ÈΪ0.1£¬Ôò±íʾǰºó¼ì²âµÄÁ½¸öÖµÖ®²î´óÓÚ0.1ʱ£¬ÔòÈÏΪÊý¾Ý·¢Éú±ä»¯£¬ÐèÒªÉÏ´«¡£Èç¹ûΪ1£¬Ôò±íʾ±ä»¯³¬¹ý1ʱÉϱ¨¡£ + DWORD dwIPChanOsd; // Êý×ÖͨµÀµþ¼ÓÄ£ÄâÁ¿×Ö·û£¬°´Î»±íʾ£¬0~31¶ÔÓ¦Êý×ÖͨµÀ1-32 + char szOSDUnit[MAX_OSD_UNIT_LEN]; //OSDµþ¼Óµ¥Î» + BYTE byRes[16]; +}NET_DVR_ALARM_SENSOR_POINT_CFG,*LPNET_DVR_ALARM_SENSOR_POINT_CFG; + +//¿ª¹ØÁ¿µãºÅÏà¹Ø²ÎÊý»ò485Ò£ÐÅÐźŠ+typedef struct tagNET_DVR_ALARM_SWITCH_POINT_CFG +{ + DWORD dwIPCChanOsd;//Ö§³Öosd¿ª¹ØÁ¿µþ¼ÓµÄIPCͨµÀÐÅÏ¢£¬°´Î»±íʾ£¬0~31¶ÔÓ¦Êý×ÖͨµÀ1-32 + BYTE byRes[60]; +}NET_DVR_ALARM_SWITCH_POINT_CFG,*LPNET_DVR_ALARM_SWITCH_POINT_CFG; + +//Ä£ÄâÁ¿µãºÅÏà¹Ø²ÎÊý»ò485Ò£²âÐźŠ+typedef union tagNET_DVR_ALARM_POINT_PARAM_UNION +{ + BYTE byLength[64]; //ÁªºÏÌ峤¶ÈΪ64 + NET_DVR_ALARM_SENSOR_POINT_CFG struSensor; //Ä£ÄâÁ¿£¨»ò485Ò£²âÐźţ©Ïà¹Ø²ÎÊý + NET_DVR_ALARM_SWITCH_POINT_CFG struSwitch; //¿ª¹ØÁ¿£¨»ò485Ò£ÐÅÐźţ©Ïà¹Ø²ÎÊý +}NET_DVR_ALARM_POINT_PARAM_UNION,*LPNET_DVR_ALARM_POINT_PARAM_UNION; + +//µãºÅÐÅÏ¢ +typedef struct tagNET_DVR_ALARM_POINT_CFG +{ + DWORD dwSize; + DWORD dwPointNo; //µãºÅ + BYTE sPointDescribe[NAME_LEN]; //µãºÅÃèÊö + NET_DVR_ALARM_POINT_PARAM_UNION struPointParam; //µ±±äÁ¿ÀàÐÍΪģÄâÁ¿»ò485Ò£ÐÅÐźÅʱ£¬Ê¹ÓýṹÌåstruSensor£¬µ±±äÁ¿ÀàÐÍΪ¿ª¹ØÁ¿»ò485Ò£ÐÅÐźÅʱ£¬Ê¹ÓýṹÌåstruSwitch + BYTE byPointType; //µãºÅÀàÐÍ£¬1-Ä£ÄâÁ¿£¬2-¿ª¹ØÁ¿ + BYTE byChanType; //½ÓÈëÀàÐÍ£¬1-±¾µØÄ£ÄâÁ¿Í¨µÀ£¬2-±¾µØ¿ª¹ØÁ¿Í¨µÀ£¬3-485ͨµÀ£¬4-ÍøÂçͨµÀ + BYTE byRes1[2]; + DWORD dwChanNo; //ͨµÀºÅ + DWORD dwSubChanNo; //²ÛλºÅ + DWORD dwVariableNo; //±äÁ¿±àºÅ£¬µ±byChanTypeΪ¿ª¹ØÁ¿Ê±(1-ÊäÈëÐźţ¬2-Êä³öÐźÅ) + BYTE byRes[16]; //±£Áô +}NET_DVR_ALARM_POINT_CFG, *LPNET_DVR_ALARM_POINT_CFG; + +//ÀúÊ·Êý¾Ý²éѯ +typedef struct _NET_DVR_SEARCH_CONDITION +{ + DWORD dwSize; + BYTE byMajorType; //²éѯ·½Ê½£¬1-È«²¿£¬2-°´Ê±¼ä£¬ 3-°´ÀàÐÍ£¬4-ʱ¼ä+ÀàÐÍ + BYTE byMinorType; //1-µãºÅ£¬2-ͨµÀ+²Ûλ+±äÁ¿ºÅ + BYTE byRes1[2]; + NET_DVR_TIME struStartTime; //Æðʼʱ¼ä + NET_DVR_TIME struStopTime; //½áÊøʱ¼ä + BYTE byChanType; //ͨµÀÀàÐÍ£¬1-Ä£ÄâÁ¿£¬2-485ͨµÀ£¬3-ÍøÂçͨµÀ£¬0xff±íʾÎÞЧ + BYTE byRes2[3]; + DWORD dwChanNo; //ͨµÀºÅ£¬´Ó1¿ªÊ¼£¬0xffffffff±íʾÎÞЧ + DWORD dwSubChanNo; //²ÛλºÅ£¬´Ó1¿ªÊ¼£¬0xffffffff±íʾÎÞЧ + DWORD dwVariableNo; //±äÁ¿ºÅ£¬´Ó1¿ªÊ¼£¬0xffffffff±íʾÎÞЧ + DWORD dwPointNo; //µãºÅ£¬0xffffffff±íʾÎÞЧ + BYTE byRes3[32]; //±£Áô +}NET_DVR_SEARCH_CONDITION, *LPNET_DVR_SEARCH_CONDITION; + +typedef struct _NET_DVR_HISTORY_DATA +{ + DWORD dwSize; + NET_DVR_TIME struTime; //ʱ¼äµã + BYTE byChanType; //ͨµÀÀàÐÍ£¬1-Ä£ÄâÁ¿£¬2-485ͨµÀ£¬3-ÍøÂçͨµÀ£¬0xff±íʾÎÞЧ + BYTE byRes1[3]; + DWORD dwChanNo; //ͨµÀºÅ£¬´Ó1¿ªÊ¼£¬0xffffffff±íʾÎÞЧ + DWORD dwSubChanNo; //²ÛλºÅ£¬´Ó1¿ªÊ¼£¬0xffffffff±íʾÎÞЧ + DWORD dwVariableNo; //±äÁ¿ºÅ£¬´Ó1¿ªÊ¼£¬0xffffffff±íʾÎÞЧ + DWORD dwPointNo; //µãºÅ£¬0xffffffff±íʾÎÞЧ + int iData; //ÀúÊ·Êý¾Ý + BYTE byDataType; //0-Õý³£Êý¾Ý£¬1-Ô½ÉÏÏÞÊý¾Ý£¬2-Ô½ÏÂÏÞÊý¾Ý + BYTE byRes2[31]; +}NET_DVR_HISTORY_DATA, *LPNET_DVR_HISTORY_DATA; + +typedef struct tagNET_DVR_ALARMHOST_ALARM_MODE_CFG +{ + DWORD dwSize; + BYTE byDataUploadMode; //1-°´Í¨µÀÉÏ´«£¬2-°´¼à²âµãÉÏ´« + BYTE byRes[31]; +}NET_DVR_ALARMHOST_ALARM_MODE_CFG,*LPNET_DVR_ALARMHOST_ALARM_MODE_CFG; + + +typedef struct tagNET_DVR_ALARMHOST_POINT_VALUE +{ + BYTE byChanType; //½ÓÈëÀàÐÍ£¬1-±¾µØÄ£ÄâÁ¿Í¨µÀ£¬2-±¾µØ¿ª¹ØÁ¿Í¨µÀ£¬3-485ͨµÀ£¬4-ÍøÂçͨµÀ + BYTE byPointType; //µãÀàÐÍ£¬1-Ò£²â£¨Ä£ÄâÁ¿£©£¬2-Ò£ÐÅ£¨¿ª¹ØÁ¿£© + BYTE byRes1[2]; //±£Áô + DWORD dwChanNo; //485ͨµÀºÅ£¬0xffffffff±íʾÎÞЧ£¬Í¨µÀÀàÐÍΪ1ʱ£º±íʾ±¾µØÄ£ÄâÁ¿Í¨µÀºÅ£¬Í¨µÀÀàÐÍΪ2ʱ±íʾ±¾µØ¿ª¹ØÁ¿Í¨µÀºÅ£¬Í¨µÀÀàÐÍΪ3ʱ±íʾ485ͨµÀºÅ¡£ + DWORD dwSubChanNo; //²ÛλºÅ£¬ 0xffffffff±íʾÎÞЧ£¬Í¨µÀÀàÐÍΪ3ʱʹÓà + DWORD dwVariableNo; //±äÁ¿±àºÅ£¬0xffffffff±íʾÎÞЧ + DWORD dwPointNo; //104µãºÅ£¬0xffffffff±íʾÎÞЧ + int iValue; //¼à²âµãµÄÖµ£¬±íʾµÍ32λ + int iValueEx; //¼à²âµãµÄÖµ£¬±íʾ¸ß32λ + BYTE byRes[12]; +}NET_DVR_ALARMHOST_POINT_VALUE,*LPNET_DVR_ALARMHOST_POINT_VALUE; + +typedef union tagNET_DVR_ALARMHOST_DATA_UNION +{ + BYTE byLength[40]; + NET_DVR_ALARMHOST_POINT_VALUE struPointValue; //¼à²âµãʵʱÊý¾Ý +}NET_DVR_ALARMHOST_DATA_UNION,*LPNET_DVR_ALARMHOST_DATA_UNION; + +typedef struct tagNET_DVR_ALARMHOST_DATA_UPLOAD +{ + DWORD dwSize; + BYTE byDataType; //Êý¾ÝÀàÐÍ£¬1-¼à²âµãʵʱÊý¾ÝÉÏ´« + BYTE byRes1[3]; + NET_DVR_ALARMHOST_DATA_UNION struAlarmData; + BYTE byRes2[32]; +}NET_DVR_ALARMHOST_DATA_UPLOAD, *LPNET_DVR_ALARMHOST_DATA_UPLOAD; + +typedef struct tagNET_DVR_INPUTVOLUME +{ + DWORD dwSize; /*½á¹¹³¤¶È*/ + BYTE byAudioInputChan;//ÒôƵÊäÈëͨµÀºÅ + BYTE byRes[63]; // ±£Áô×Ö½Ú +}NET_DVR_INPUTVOLUME, *LPNET_DVR_INPUTVOLUME; + +typedef struct tagNET_DVR_AUDIOOUT_VOLUME +{ + DWORD dwSize; + BYTE byAudioOutVolume;// Êä³öÒôÁ¿µÈ¼¶£º¹éÒ»»¯Îª0-100£» + BYTE byRes[63]; +}NET_DVR_AUDIOOUT_VOLUME,*LPNET_DVR_AUDIOOUT_VOLUME; + +typedef struct tagNET_DVR_FUZZY_UPGRADE +{ + DWORD dwSize; + char sUpgradeInfo[MAX_UPGRADE_INFO_LEN]; + BYTE byRes[64]; +}NET_DVR_FUZZY_UPGRADE,*LPNET_DVR_FUZZY_UPGRADE; + +typedef struct tagNET_DVR_RS485_WORK_MODE +{ + DWORD dwSize; + BYTE byWorkMode; //¹¤×÷ģʽ£¬0-¿ØÖÆ̨£¬1-˽ÓÐ͸Ã÷ͨµÀ£¬2-͸Ã÷ͨµÀ + BYTE byRes[31]; +}NET_DVR_RS485_WORK_MODE, *LPNET_DVR_RS485_WORK_MODE; + +typedef struct tagNET_DVR_TRANSPARENT_CLIENT_SINGLE +{ + BYTE byEnable; //ʹÄÜ͸Ã÷ͨµÀ£¬0-²»Ê¹ÄÜ£¬1-ʹÄÜ + BYTE byRes1[3]; + NET_DVR_IPADDR struIP; //Ô¶³ÌÉ豸IPµØÖ· + WORD wPort; //Ô¶³ÌÉ豸¶Ë¿Ú + BYTE byRes2[18]; +}NET_DVR_TRANSPARENT_CLIENT_SINGLE, *LPNET_DVR_TRANSPARENT_CLIENT_SINGLE; + +typedef struct tagNET_DVR_TRANSPARENT_SERVER_SINGLE +{ + BYTE byEnable; //ʹÄÜ͸Ã÷ͨµÀ£¬0-²»Ê¹ÄÜ£¬1-ʹÄÜ + BYTE byRes1[3]; + NET_DVR_IPADDR struIP; //ÔÊÐí½ÓÈëµÄÔ¶³ÌÉ豸IP + BYTE byRes2[16]; +}NET_DVR_TRANSPARENT_SERVER_SINGLE, *LPNET_DVR_TRANSPARENT_SERVER_SINGLE; + +typedef struct tagNET_DVR_TRANSPARENT_CLIENT_MODE +{ + NET_DVR_TRANSPARENT_CLIENT_SINGLE struClientSingle[MAX_TRANSPARENT_CHAN_NUM]; + BYTE byRes[320]; +}NET_DVR_TRANSPARENT_CLIENT_MODE, *LPNET_DVR_TRANSPARENT_CLIENT_MODE; + +typedef struct tagNET_DVR_TRANSPARENT_SERVER_MODE +{ + WORD wPort; //±¾µØ¼àÌýµÄ¶Ë¿ÚºÅ£¬ºÍRS485¿ÚÒ»Ò»¶ÔÓ¦ + BYTE byRes1[2]; + NET_DVR_TRANSPARENT_SERVER_SINGLE struServerSingle[MAX_TRANSPARENT_ACCESS_NUM]; + BYTE byRes2[332]; +}NET_DVR_TRANSPARENT_SERVER_MODE, *LPNET_DVR_TRANSPARENT_SERVER_MODE; + +typedef union tagNET_DVR_TRANSPARENT_CHAN_WORK_MODE_UNION +{ + BYTE byRes[512]; + NET_DVR_TRANSPARENT_CLIENT_MODE struClientMode; //¿Í»§¶Ëģʽ²ÎÊý + NET_DVR_TRANSPARENT_SERVER_MODE struServerMode; //·þÎñÆ÷ģʽ²ÎÊý +}NET_DVR_TRANSPARENT_CHAN_WORK_MODE_UNION, *LPNET_DVR_TRANSPARENT_CHAN_WORK_MODE_UNION; + +typedef struct tagNET_DVR_TRANSPARENT_CHAN_CFG +{ + DWORD dwSize; + BYTE byWorkMode; //¹¤×÷ģʽ£¬1-¿Í»§¶Ëģʽ£¬2-·þÎñÆ÷ģʽ + BYTE byRes[3]; + NET_DVR_TRANSPARENT_CHAN_WORK_MODE_UNION struTransparentPara; +}NET_DVR_TRANSPARENT_CHAN_CFG, *LPNET_DVR_TRANSPARENT_CHAN_CFG; + +typedef struct tagNET_DVR_NAKED_DATA_INFO +{ + char sSocketIP[128]; + WORD wSocktPort; + BYTE byRes[258]; +}NET_DVR_NAKED_DATA_INFO, *LPNET_DVR_NAKED_DATA_INFO; + +typedef enum tagNAKED_DATA_TYPE +{ + NAKED_DATA_TYPE_NOT_DEFINED = 0, //䶨Òå + NAKED_DATA_TYPE_POS_INFO //½ÓÊÕµÄÊÇPosÐÅÏ¢ +}NAKED_DATA_TYPE; + + +typedef struct tagNET_DVR_NAKED_DATA_PARAM +{ + WORD wPort; //IP¶Ë¿ÚºÅ£¬¶ÔÓÚPosÐÅÏ¢½ÓÊÕ£¬¸ÃֵΪ0£¬ÔòʹÓÃĬÈ϶˿Ú7050 + BYTE byRes[130]; //±£Áô×Ö½Ú +}NET_DVR_NAKED_DATA_PARAM, *LPNET_DVR_NAKED_DATA_PARAM; + +#define UPLOAD_POS_INFO 1001 //ÉÏ´«PosÐÅÏ¢ + +typedef struct tagNET_DVR_POS_INFO +{ + NET_DVR_STRUCTHEAD struVerHead; //°æ±¾Í· + DWORD dwChannelNum; //ͨµÀºÅ + BYTE byRes[60]; +}NET_DVR_POS_INFO, *LPNET_DVR_POS_INFO; + + +#define MAX_IGNORE_STRING_NUM 4 +#define FILTERRULE_NUM 4 +#define MAX_POS_FILTER_DATA_LEN 128 + +typedef struct tagNET_DVR_POS_OSD_REGION +{ + NET_VCA_POINT struStart; //Æðµã×ø±ê + NET_VCA_POINT struEnd; //ÖÕµã×ø±ê +}NET_DVR_POS_OSD_REGION, *LPNET_DVR_POS_OSD_REGION; + + +typedef struct +{ + DWORD dwDelayTime; /*delay time(5-3600s)*/ + BYTE byPrevOsd; /*overlay osd on preview*/ + BYTE byRes1[3]; /*preserve*/ + NET_DVR_POS_OSD_REGION struOsdPosInfo; /*overlay osd rect info*/ + BYTE byRes[64]; /*preserve*/ +}NET_DVR_POS_ACTION, *LPNET_DVR_POS_ACTION; + +typedef struct +{ + BYTE sData[MAX_POS_FILTER_DATA_LEN];/*½»Ò׿ªÊ¼±êÖ¾£¬Ä¿Ç°×î´óΪ32£¬Ö»ÓÐanyCharacterΪ·ñʱ²ÅÉúЧ*/ + BYTE byExclusive; //ÊÇ·ñ°üº¬±êÖ¾±¾Éí 0-°üº¬ 1-²»°üº¬ + BYTE byFlagType; //±êÖ¾ÀàÐÍ£º0-×Ö·û´®£»1-Ê®Áù½øÖÆ + BYTE byRes[2]; /*±£Áô*/ +}NET_DVR_GENERIC_START, *LPNET_DVR_GENERIC_START; + +typedef struct +{ + BYTE sData[MAX_POS_FILTER_DATA_LEN];/*½»Ò×½áÊø±êÖ¾£¬Ä¿Ç°×î´óΪ32*/ + BYTE byExclusive; //ÊÇ·ñ°üº¬±êÖ¾±¾Éí 0-°üº¬ 1-²»°üº¬ + BYTE byFlagType; //±êÖ¾ÀàÐÍ£º0-×Ö·û´®£»1-Ê®Áù½øÖÆ + BYTE byRes[6]; +} NET_DVR_GENERIC_END, *LPNET_DVR_GENERIC_END; + +typedef struct +{ + BYTE sData[MAX_POS_FILTER_DATA_LEN];/*Êý¾Ý±êÖ¾£¬Ä¿Ç°×î´óΪ32*/ + BYTE byFlagType; //±êÖ¾ÀàÐÍ£º0-×Ö·û´®£»1-Ê®Áù½øÖÆ + BYTE byRes[3]; +}NET_DVR_GENERIC_DATA_CFG, *LPNET_DVR_GENERIC_DATA_CFG; + +typedef struct +{ + BYTE sData[MAX_POS_FILTER_DATA_LEN];/*ºöÂÔµÄ×Ö·û£¬Ä¿Ç°×î´óΪ32*/ +}NET_DVR_IGNORE_STRING, *LPNET_DVR_IGNORE_STRING; + +typedef struct +{ + BYTE byCaseSensitive;/*ÊÇ·ñÇø·Ö´óСд£¬0->²»Çø·Ö£¬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; + + +//DVRÓëPOSÁ¬½Ó·½Ê½ÅäÖýṹÌå +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_INFOÀïµÄbyIvmsChannelº¬ÒåÏàͬ£¬Äܱíʾ¸ü´óµÄÖµ¡£ÀÏ¿Í»§¶ËÓÃ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-FLV£¬7-ASF£¬8-3GP, 9-RTP+PS£¨¹ú±ê£ºGB28181£©£¬0xff-ÎÞЧ + BYTE byVideoEncType;//ÊÓƵ±àÂëÀàÐÍ£¬0-˽ÓÐ264£¬1-±ê×¼h264£¬2-±ê×¼mpeg4£¬7-M-JPEG£¬0xff-ÎÞЧ + 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-G722£¬1-G711_U£¬2-G711_A£¬5-MPEG2,6-G726£¬7-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;// 0£ºTCP·½Ê½,1£ºUDP·½Ê½£¨±£Áô£© + BYTE byPassiveTransMode; //±»¶¯×ªÂëģʽ£¬1-ʵʱÁ÷£¬2-ÎļþÁ÷ + BYTE byRes1[5]; + BYTE byDataType;//»º³åÇøÀàÐÍ£¬1-SDP£¬2-ÂëÁ÷Í· + 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£ºÈ«¾°1µÄ4¸ösensorµÄÎÂÃô£¬ ±ê5-8£ºÈ«¾°2µÄ4¸ösensorµÄÎÂÃô,Ä¿Ç°ÓÃÓÚÓ¥ÑÛÈ«¾° + 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*/]; //µ¥¸öIO´¥·¢²ÎÊý£¬µ¥¸öIO´¥·¢²ÎÊý£¬Êý×é0±íʾIO1£¬Êý×é1±íʾ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×ֶθ³ÖµÎª1£¬²¢½áºÏ4~½âËøµÀÕ¢À´½øÐнâËø¡£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һÌõ¼Ç¼ÁË£¬´æÔÚÏà»úÄڴ棬ÖØÆôºó»áÇå0£©2014-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±íʾÎÞͼƬ£¬²»Îª0ÊDZíʾºóÃæ´øͼƬÊý¾Ý + 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һÌõ¼Ç¼ÁË£¬´æÔÚÏà»úÄڴ棬ÖØÆôºó»áÇå0£©2014-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; + + +//SDI¾ØÕó1.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µÄÏà¶ÔË÷Òý·¶Î§ÊÇ£¨1¡«255£© 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;//¼ì²âÖÜÆÚ£¨0¡«60 µ¥Î» 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;//¼ì²âÖÜÆÚ£¨0¡«60 µ¥Î» 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-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 */ + 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-ÓÐÏßÍøÂç1£¬6-ÓÐÏßÍøÂç2 + BYTE byAddressType; //0 - ÎÞÒâÒå, 1 - ipv4/ipv6µØÖ·£¬2 - ÓòÃû + BYTE byProtocolVersion; //ЭÒé°æ±¾ 0 - ÎÞÒâÒå, 1 ¨C v2.0£¬2 ¨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_INFOÀïµÄbyIvmsChannelº¬ÒåÏàͬ£¬Äܱíʾ¸ü´óµÄÖµ¡£ÀÏ¿Í»§¶ËÓÃ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-byte£¬2-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~byte£¬1~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_PARAM£©£¬2-ÖÇÄÜģʽ£¬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-ҹģʽ1£¬2-ҹģʽ2£¬3-ҹģʽ3£¬4-ÈÕÕÕģʽ1£¬5-ÈÕÕÕģʽ2£¬6-ÈÕÕÕģʽ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; //ÔöÒæG£¬0-100 + BYTE byGainB; //ÔöÒæB£¬0-100 + BYTE byOffsetR; //Æ«ÒÆÁ¿R£¬0-100 + BYTE byOffsetG; //Æ«ÒÆÁ¿G£¬0-100 + BYTE byOffsetB; //Æ«ÒÆÁ¿B£¬0-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-ADC²ÎÊý£¬5-ÆÁÄ»±ßÔµ²ÎÊý*/ + 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~0202Õâ4¿éÆÁ£¬ÔòÕâ4¿éÆÁµÄbySpliceIndex±ØÐëÏàͬ£¬ÇÒ·Ç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; //½á¹¹ÌåµÄ³¤¶È + 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-FLV£¬7-ASF£¬8-3GP£¬9-RTP+PS£¨¹ú±ê£ºGB28181£©£¬0xff-ÎÞЧ + BYTE byVideoEncType ; //ÊÓƵ±àÂëÀàÐÍ£º0-˽ÓÐ264£¬1-±ê×¼h264£¬2-±ê×¼mpeg4£¬7-M-JPEG£¬8-MPEG2£¬0xfe- ×Ô¶¯£¨ºÍÔ´Ò»Ö£©£¬0xff-ÎÞЧ + BYTE byAudioEncType; //ÒôƵ±àÂëÀàÐÍ£º0-G722£¬1-G711_U£¬2-G711_A£¬5-MP2L2£¬6-G726£¬7-AAC£¬0xfe- ×Ô¶¯£¨ºÍÔ´Ò»Ö£©£¬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 ; //´¥·¢µÄ±¨¾¯¹ØÁªÍ¨µÀÊý£¨Ö»¶Á£©×î´óÖ§³ÖÊýÁ¿ + //dwRelateChanµÄ³õʼֵÊÇ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-BNC£¬2-VGA£¬3-HDMI£¬4-DVI£¬5-SDI, 6-FIBER, \ + 7-RGB, 8-YPrPb, 9-VGA/HDMI/DVI×ÔÊÊÓ¦£¬10-3GSDI,11-VGA/DVI×ÔÊÊÓ¦£¬12-HDBaseT,13-HDTVI, 14-TVI£¬0xff-ÎÞЧ*/ + + 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;//Ä¿µÄ³¡¾°ºÅ + 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; //ÐéÄâLED·½Ïò£¬0-ˮƽ·½Ïò£¬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-XXXXÄêXXÔÂXXÈÕ£¬5-XXÔÂXXÈÕXXXXÄ꣬6-XXÈÕXXÔÂXXXXÄê + BYTE byTimeFormat; //ʱ¼äÏÔʾ¸ñʽ£¬byTimeType²»ÎªÁãʱÓÐЧ + //0-ÎÞЧ£¬1-H:MM:SS£¬2-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-1±¶£¬2-2±¶£¬3-4±¶ + BYTE byMoveDirection; //Òƶ¯·½Ïò£¬0-ĬÈÏ£¨´Ó×óµ½ÓÒ£©£¬1-´Ó×óµ½ÓÒ£¬2-´ÓÓÒµ½×ó£¬3-´ÓÉϵ½Ï£¬4-´Óϵ½ÉÏ£¬¶¯Ì¬ÐéÄâLEDʱÓÐЧ + BYTE byMoveSpeed; //Òƶ¯Ëٶȣ¬1-ËÙ¶È1£¬2-ËÙ¶È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-AM£¬2-ÉÏÎç + BYTE byPMFormat; //PM¸ñʽ£¬byHourFormatΪ1ʱÓÐЧ£¬0-ÎÞЧ£¬1-PM£¬2-ÏÂÎç + 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-D20£¬7-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+ + 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-±£´æµ±Ç°Ä£Ê½µ½Ä³³¡¾° 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;// Êý¾ÝÓм¸Î» 0£­5룬1£­6룬2£­7룬3£­8λ; + BYTE byStopBit;// ֹͣλ 0£­1룬1£­2λ; + DWORD dwBaudRate;//²¨ÌØÂÊ0£­50£¬1£­75£¬2£­110£¬3£­150£¬4£­300£¬5£­600£¬6£­1200£¬7£­2400£¬8£­4800£¬9£­9600£¬10£­19200£¬ 11£­38400£¬12£­57600£¬13£­76800£¬14£­115.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-HDBaseTÊä³ö£¬13-HDMIÊäÈ룬14-HDBaseT£¬15-DVI-TÊäÈ룬16-HDMIÊä³ö£¬17-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-HDBaseTÊä³ö£¬13-HDMIÊäÈ룬14-HDBaseT£¬15-DVI-TÊäÈ룬16-HDMIÊä³ö£¬17-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-Rs485£¬1-ÍøÂ磬ĬÈÏÍøÂç + 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ºÅ 1¡«24 + //ɾ³ýµ±Ç°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; //µ±ÀàÐÍΪ0¡¢3¡¢6¡¢7ʱ£¬¿ÉÄÜ»áÓÐͨµÀºÅ£»µ±ÀàÐÍΪ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-FTP£¬1-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-FTP£¬1-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; //SIP·þÎñÆ÷IP + NET_DVR_IPADDR struAgainUnit; //¶þ´ÎÈ·ÈÏ»úIP + BYTE byOutDoorType; //Ö÷ÃÅ¿Ú»úÀàÐÍ£¬0±£Áô£¬1-Ö÷µ¥ÔªÃÅ¿Ú»ú£¬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; //SIP·þÎñÆ÷IP£¬¸±ÃÅ¿Ú»úʱÎÞЧ + 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; //SIP·þÎñÆ÷IP + 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; //SIP·þÎñÆ÷IP + 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; //ËøID£¬´Ó1¿ªÊ¼£¨Ô¶³Ì¿ªÃÅ¿Ú»úËøʱ£¬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; //ËøID£¬´Ó0¿ªÊ¼ + 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-±íʾÍâ½Ó¿ØÖÆÆ÷ÉϽӵÄËø£©£¨±¨¾¯ÀàÐÍΪ5ºÍ6ʱÓÐЧ£© + 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]£¨µ±Ö§³Ö¸Ã²ÎÊýʱ£¬ byHighBeamBrightness¡¢byLowBeamBrightness²»ÉúЧ£© + BYTE bySensitivity;//²¹¹âµÆÁéÃô¶È[0,7],ĬÈÏ4£¨µ±byModeΪ×Ô¶¯Ê±ÉúЧ£© + 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;//³¡¾°ID£¬0-±£Áô£¬ 1ÊDZíʾ³¡¾°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ʱ¼ä£¨¶ÔÓÚstruBeginTime£¬struEndTime×Ö¶ÎÓÐЧ£© + 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 //·´Ç±»Ø²ÎÊý +#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 //·´Ç±»Ø²ÎÊý + //#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-K2201£¬2-DS-K2210£¬0xff-×Ô¶¨Òå + 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-IPC¡¢2-DVR/DVS/NVR¡¢3-ÃÅ¿Ú»ú¡¢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-255s£¬0±íʾ²»±¨¾¯ + 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ÉϵÄRS485´®¿Ú1£¬3-»·Â·1ÉϵÄRS485´®¿Ú2£¬4-»·Â·2ÉϵÄRS485´®¿Ú1£¬5-»·Â·2ÉϵÄRS485´®¿Ú2£¬6-»·Â·3ÉϵÄRS485´®¿Ú1£¬7-»·Â·3ÉϵÄRS485´®¿Ú2£¬8-»·Â·4ÉϵÄRS485´®¿Ú1£¬9-»·Â·4ÉϵÄRS485´®¿Ú2£¨Ö»¶Á£© + 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-D20£¬7-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-ADC²ÎÊý£¬8-ÆÁÄ»±ßÔµ²ÎÊý£¬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-ADC²ÎÊý£¬8-ÆÁÄ»±ßÔµ²ÎÊý£¬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ÊÇƽÒƾØÕó, + RotateMatrixºÍTransMatrixÁªºÏÆðÀ´ÃèÊöµÄÊÇ×óÏà»úÏà¶ÔÓÚÓÒÏà»úµÄλÖùØϵ*/ + 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-bmp£¬1-jpeg£¬2-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- PIR±¨¾¯£¬11- ÎÞÏß±¨¾¯£¬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-»ªÊ϶ȣ¨¨H£©£¬2-¿ª¶ûÎÄ(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- PIR±¨¾¯£¬11- ÎÞÏß±¨¾¯£¬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 һ·µÄÇé¿öÏ£¬1s×î¶à28¸öIÖ¡£©£¬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 һ·µÄÇé¿öÏ£¬1s×î¶à28¸öIÖ¡£©£¬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~4³¡¾°£¬0ΪÎÞЧ¡£¸Ã³¡¾°ºÅÓë²¼·Àʱ¼äÖÐÿ¸öʱ¼ä¶ÎÒ»Ò»¶ÔÓ¦¡£ + 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-×Ô¶¯£¨Auto£©¡¢1-ÊÖ¶¯£¨Manual£©£¬Ä¬ÈÏ×Ô¶¯£¬ÊÖ¶¯Ä£Ê½Ï¿ÉÉèÖò¦ºÅ¼Æ»®¡¢ÏÂÏßʱ¼ä¡¢ÊÖ¶¯²¦ºÅ + BYTE byNetworkMode; //0-×Ô¶¯£¬1-4GÓÅÏÈ£¬2-3GÓÅÏÈ£¬3-ÊÖ¶¯Çл»2G£¬4-ÊÖ¶¯Çл»3G£¬5-ÊÖ¶¯Çл»4G£¬6-ÓÐÏßÓÅÏÈ + 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-×Ô¶¯£¨Auto£©£¬1-CHAP£¬2-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 1x¡¢EVDO¡¢HYBRID¡¢GSM¡¢GPRS¡¢EDGE¡¢WCDMA¡¢HSDPA¡¢HSUPA¡¢HSPA¡¢TDSCDMA¡¢TD-LTE¡¢FDD-LTE) + BYTE byUIMStatus[MAX_LENGTH_32]; /*UIM״̬(UNKNOWN-δ֪,VALID-ÓÐЧ,NOVALID-ÎÞЧ,ROAM-ÂþÓÎ,NOEXIST-²»´æÔÚ, + WRONGPINCODE-PINÂë´íÎó,NONETWORKSERVICE-ÎÞÍøÂç·þÎñ, + ONLYSUPPORTEMERGENCYCALL-ÍøÂç½öÖ§³Ö½ô¼±ºô½Ð£¬PINCODELOCKED¡ªPINÂëËø¶¨*/ + 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-ʹÓÃXMLÀàÐÍlpXmlBufferÓÐЧ + 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]»ñÈ¡µ½µÄÊý¾Ý³¤¶È(lpOutBuffer»òÕßlpStatusBufferÖ¸ÏòµÄʵ¼ÊÊý¾Ý³¤¶È) + 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-ʹÓÃXMLÀàÐÍlpXmlBufferÓÐЧ + 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; //ContentµÄ³¤¶È£¬´óСÏÞÖÆ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; //½ÓÊÕ³¬Ê±Ê±¼ä£¬µ¥Î»£ºms£¬Ìî0ÔòʹÓÃĬÈϳ¬Ê±5s + BYTE byForceEncrpt; //ÊÇ·ñÇ¿ÖƼÓÃÜ£¬0-·ñ£¬1-ÊÇ + BYTE byNumOfMultiPart; //0-ÎÞЧ£¬ÆäËûÖµ±íʾ±¨ÎķֶθöÊý£¬·ÇÁãʱlpInBuffer´«ÈëµÄÊÇNET_DVR_MIME_UNIT½á¹¹ÌåÊý×éµÄÖ¸Õ룬¸ÃÖµ¼´´ú±í½á¹¹Ìå¸öÊý + BYTE byMIMEType; //0-ÎÞЧ£¬1-±íʾʹÓÃNET_DVR_MIME_UNIT½á¹¹Ì壬2-±íʾʹÓÃNET_DVR_MIME_DATA½á¹¹Ì壬¸Ã×ֶνöÔÚbyNumOfMultiPartÓÐЧʱÉúЧ + BYTE byRes1; + DWORD dwSendTimeOut; //·¢Ëͳ¬Ê±Ê±¼ä£¬µ¥Î»£ºms£¬Ìî0ÔòʹÓÃĬÈϳ¬Ê±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))//win64¼°linux64ÏÂÖ¸ÕëΪ8×Ö½Ú + void* lpDataBuffer; //µ±byNumOfMultiPart>0ʱ£¬ÅäºÏ±¨ÎĽṹÌåʹÓ㬴æ·Å͸´«Êý¾ÝÄÚÈÝ£¬Í¨¹ýNET_DVR_MIME_UNITµÄdwContentLenÆ«ÒÆ·ÃÎÊ +#else + void* lpDataBuffer; //µ±byNumOfMultiPart>0ʱ£¬ÅäºÏ±¨ÎĽṹÌåʹÓ㬴æ·Å͸´«Êý¾ÝÄÚÈÝ£¬Í¨¹ýNET_DVR_MIME_UNITµÄdwContentLenÆ«ÒÆ·ÃÎÊ + BYTE byRes2[4]; +#endif + BYTE byNumOfMultiPart; //0-ÎÞЧ¡£ ÆäËûÖµ±íʾ±¨ÎķֶθöÊý£¬·ÇÁãʱlpInBuffer´«ÈëµÄÊÇNET_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-ÎÞЧ£¬ÆäËûÖµ±íʾ±¨ÎķֶθöÊý£¬·ÇÁãʱlpBuffer´«ÈëµÄÊÇNET_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±¨ÎÄΪµ±ResponseStatus£¨JSON£©±¨ÎÄʱ£¬¸Ã×Ö¶ÎÎÞÒâÒ壻µ±Inbound Data£¨JSON£©±¨ÎÄÖÐûÓÐ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; //ʹÄÜ·´Ç±»Ø¹¦ÄÜ£¬1-ʹÄÜ£¬0-²»Ê¹ÄÜ + BYTE byRes1[3]; + DWORD dwStartCardReaderNo; //·´Ç±»ØÆðʼ¶Á¿¨Æ÷±àºÅ + 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/CK£¬2-DS-K192AM/AMP£¬3-DS-K192BM/BMP£¬4-DS-K182AM/AMP£¬5-DS-K182BM/BMP£¬6-DS-K182AMF/ACF£¬7-Τ¸ù»ò485²»ÔÚÏß,8- DS-K1101M/MK£¬9- DS-K1101C/CK£¬10- DS-K1102M/MK/M-A + //11- DS-K1102C/CK£¬12- DS-K1103M/MK£¬13- DS-K1103C/CK£¬14- DS-K1104M/MK£¬15- DS-K1104C/CK£¬16- DS-K1102S/SK/S-A£¬17- DS-K1102G/GK£¬18- DS-K1100S-B£¬19- DS-K1102EM/EMK£¬20- DS-K1102E/EK£¬ + //21- DS-K1200EF£¬22- DS-K1200MF£¬23- DS-K1200CF£¬24- DS-K1300EF£¬25- DS-K1300MF£¬26- DS-K1300CF£¬27- DS-K1105E£¬28- DS-K1105M£¬29- DS-K1105C£¬30- DS-K182AMF£¬31- DS-K196AMF£¬32-DS-K194AMP + //33-DS-K1T200EF/EF-C/MF/MF-C/CF/CF-C,34-DS-K1T300EF/EF-C/MF/MF-C/CF/CF-C£¬35-DS-K1T105E/E-C/M/M-C/C/C-C£¬36-DS-K1T803F/MF/SF/EF£¬37-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; //Ö»¶Á£¬¾ÍµØ¿ØÖÆÆ÷µÄ¶Á¿¨Æ÷ID£¬0´ú±íδע²á + 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/CK£¬2-DS-K192AM/AMP£¬3-DS-K192BM/BMP£¬4-DS-K182AM/AMP£¬5-DS-K182BM/BMP£¬6-DS-K182AMF/ACF£¬7-Τ¸ù»ò485²»ÔÚÏߣ¬8- DS-K1101M/MK£¬9- DS-K1101C/CK£¬10- DS-K1102M/MK/M-A£¬11- DS-K1102C/CK£¬12- DS-K1103M/MK£¬13- DS-K1103C/CK£¬14- DS-K1104M/MK£¬15- DS-K1104C/CK£¬16- DS-K1102S/SK/S-A£¬17- DS-K1102G/GK£¬18- DS-K1100S-B£¬19- DS-K1102EM/EMK£¬20- DS-K1102E/EK£¬21- DS-K1200EF£¬22- DS-K1200MF£¬23- DS-K1200CF£¬24- DS-K1300EF£¬25- DS-K1300MF£¬26- DS-K1300CF£¬27- DS-K1105E£¬28- DS-K1105M£¬29- DS-K1105C£¬30- DS-K182AMF£¬31- DS-K196AMF£¬32-DS-K194AMP£¬33-DS-K1T200EF/EF-C/MF/MF-C/CF/CF-C,34-DS-K1T300EF/EF-C/MF/MF-C/CF/CF-C£¬35-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; //Ö»¶Á£¬¾ÍµØ¿ØÖÆÆ÷µÄ¶Á¿¨Æ÷ID£¬byUseLocalController=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-20s£¬0xff-ÎÞÏÞ´ó + BYTE byFingerPrintRecogizeInterval; //Ö¸ÎÆÁ¬Ðøʶ±ð¼ä¸ô£¬0-ÎÞЧ£¬·¶Î§1-10´ú±í:1s-10s£¬0xff-ÎÞÑÓ³Ù + BYTE byFingerPrintMatchFastMode; //Ö¸ÎÆÆ¥Åä¿ìËÙģʽ£¬0-ÎÞЧ£¬·¶Î§1-5´ú±í:¿ìËÙģʽ1-¿ìËÙģʽ5£¬0xff-×Ô¶¯ + BYTE byFingerPrintModuleSensitive; //Ö¸ÎÆÄ£×éÁéÃô¶È£¬0-ÎÞЧ£¬·¶Î§1-8´ú±í£ºÁéÃô¶È¼¶±ð1-ÁéÃô¶È¼¶±ð8 + BYTE byFingerPrintModuleLightCondition; //Ö¸ÎÆÄ£×é¹âÏßÌõ¼þ£¬0-ÎÞЧ£¬1-ÊÒÍ⣬2-ÊÒÄÚ + BYTE byFaceMatchThresholdN; //ÈËÁ³±È¶Ô·§Öµ£¬·¶Î§0-100 + BYTE byFaceQuality; //ÈËÁ³ÖÊÁ¿£¬·¶Î§0-100 + BYTE byFaceRecogizeTimeOut; //ÈËÁ³Ê¶±ð³¬Ê±Ê±¼ä£¬·¶Î§1-20´ú±í£º1s-20s£¬0xff-ÎÞÏÞ´ó + BYTE byFaceRecogizeInterval; //ÈËÁ³Á¬Ðøʶ±ð¼ä¸ô£¬0-ÎÞЧ£¬·¶Î§1-10´ú±í£º1s-10s£¬0xff-ÎÞÑÓ³Ù + 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-5999s£¨0-´ú±í³¤Ãù£© + 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-ʹÄÜʱ£¬dwFingerPrintCapacityºÍdwFingerPrintNum²ÅÓÐЧ£© + 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-ͼƬÊý¾Ý³¤¶ÈСÓÚ1KB£¬11-ͼƬ¸ñʽ²»·û£¨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Õý³£¹Ø±Õ£¬1Õý³£¿ªÆô£¬2ÆÆ»µ¶Ì·±¨¾¯£¬3ÆÆ»µ¶Ï·±¨¾¯£¬4Òì³£±¨¾¯ + BYTE byDoorLockStatus[MAX_DOOR_NUM]; //ÃÅËø״̬£¬0Õý³£¹Ø±Õ£¬1Õý³£¿ªÆô£¬2ÆÆ»µ¶Ì·±¨¾¯£¬3ÆÆ»µ¶Ï·±¨¾¯£¬4Òì³£±¨¾¯ + BYTE byCardReaderOnlineStatus[MAX_CARD_READER_NUM]; //¶Á¿¨Æ÷ÔÚÏß״̬£¬0-²»ÔÚÏߣ¬1-ÔÚÏß + WORD wLocalControllerStatus; //Ö»¶Á£¬¾ÍµØ¿ØÖÆÆ÷ÔÚÏß״̬(·Ö¿ØÆ÷ÔÚÏß״̬)£º0-ÀëÏߣ¬1-ÍøÂçÔÚÏߣ¬2-»·Â·1ÉϵÄRS485´®¿Ú1£¬3-»·Â·1ÉϵÄRS485´®¿Ú2£¬4-»·Â·2ÉϵÄRS485´®¿Ú1£¬5-»·Â·2ÉϵÄRS485´®¿Ú2£¬6-»·Â·3ÉϵÄRS485´®¿Ú1£¬7-»·Â·3ÉϵÄRS485´®¿Ú2£¬8-»·Â·4ÉϵÄRS485´®¿Ú1£¬9-»·Â·4ÉϵÄRS485´®¿Ú2£¨Ö»¶Á£© + 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; //·´Ç±»Ø״̬£¬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; //·´Ç±»Ø״̬£¬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; //·´Ç±»Ø·þÎñÆ÷״̬£º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-IC¶Á¿¨Æ÷£¬2-Éí·ÝÖ¤¶Á¿¨Æ÷£¬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; //Íø¿ÚID£º£¨1-ÉÏÐÐÍø¿Ú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; //¶þάÂëÐÅÏ¢³¤¶È£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + DWORD dwVisibleLightDataLen; //ÈȳÉÏñÏà»ú¿É¼û¹âͼƬ³¤¶È£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + DWORD dwThermalDataLen; //ÈȳÉÏñͼƬ³¤¶È£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + 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; //ͼƬÊý¾Ý´óС£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + char *pPicData; + WORD wInductiveEventType; //¹éÄÉʼþÀàÐÍ£¬0-ÎÞЧ£¬¿Í»§¶ËÅжϸÃֵΪ·Ç0Öµºó£¬±¨¾¯ÀàÐÍͨ¹ý¹éÄÉʼþÀàÐÍÇø·Ö£¬·ñÔòͨ¹ýÔ­Óб¨¾¯Ö÷´ÎÀàÐÍ£¨dwMajor¡¢dwMinor£©Çø·Ö + 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-ÓÅÏȼ¶0£¬1-ÓÅÏȼ¶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-ºìÍâÊä³ö¿Ú1£¬2-ºìÍâÊä³ö¿Ú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-ºìÍâÊä³ö¿Ú1£¬2-ºìÍâÊä³ö¿Ú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 Ãû³Æ£¬±¨¾¯Êä³ö3¡¢4¿ÚΪLamp1¡£±¨¾¯5¡¢6Êä³ö¿ÚΪ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,Êý×é1±íÊölamp2 + 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ʱ£¬Ö»ÓÐbyLaneStateºÍbyQueueLenÓÐЧ)£¬04-¶àÏßȦ״̬£¨Îª04ʱ£¬wLoopStateºÍwStateMaskÓÐЧ£¬±íʾ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))//win64¼°linux64ÏÂÖ¸ÕëΪ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))//win64¼°linux64ÏÂÖ¸ÕëΪ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²Ù×÷ÀàÐͽøÐÐÊÖ¶¯Ð£Õý¡£ + ×Ô¶¯Ð£Õý£ºÉ豸½«×Ô¶¯½øÐÐУÕý£¬ÎÞÐèÔÙ½øÐÐÊÖ¶¯Ð£Õý£¬´ËʱwCtrlType¡¢struPoint²ÎÊýÎÞЧ¡£ + */ + 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; //ÊÇ·ñµþ¼ÓÖÇÄܱ¨¾¯logo£¬0-²»µþ¼Ó£¬·Ç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-±íʾ12V£¬2-±íʾ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-digest¡¢1-basic¡¢2-digest/basic;ĬÈÏbasicÈÏÖ¤ + BYTE byRtspAuthentication; //rtspÈÏÖ¤ÅäÖà 0-disable¡¢1-basic¡¢2-digest¡¢3-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-²»Ëø¶¨£¬ÆäËûֵΪËø¶¨µÄ´ÎÊý¡£ ĬÈÏΪ0£¬ÀýÈç1±íʾ´íÎóµÇ¼1´ÎÒÔºó¾ÍËø¶¨¸ÃÓû§Ãû¡£ + DWORD dwLockTime; //Ëø¶¨Ê±¼ä£¬±íʾ´íÎóºóËø¶¨µÄʱ¼ä£¬µ¥Î»£ºÃë¡£²»ÄÜΪ0£¬byLockCount²»Îª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-°´IP½âËø£¬2-½âËøËùÓÐIP + BYTE byIPVersion; //1-IPV4£¬2-IPV6£¬µ±byUnlockTypeΪ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-IPV4£¬2-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-ÏÞ1£»bit1-ÏÞ2£»bit2-ÏÞ3£»bit3-ÏÞ4£»bit4-¹ÊÕÏ + 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-ÒÑ´æÔÚ¸ÃÖ¸ÎÆID£¬7-·Ç·¨Ö¸ÎÆID£¬8-¸ÃÖ¸ÎÆÄ£×éÎÞÐèÅäÖà + 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-ÒÑ´æÔÚ¸ÃÖ¸ÎÆID£¬7-·Ç·¨Ö¸ÎÆID£¬8-¸ÃÖ¸ÎÆÄ£×éÎÞÐèÅäÖã¬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-Ö¸ÎÆÊý¾Ý³¤¶ÈΪ0£¬7-¶Á¿¨Æ÷±àºÅ´íÎó£¬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, //·´Ç±»ØÈÏ֤ʧ°Ü + 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, //·´Ç±»Ø·þÎñÆ÷Ó¦´ðʧ°Ü + 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, //¶þάÂëʶ±ð³É¹¦£¨´¿¶þάÂëʼþ£¬²»´øÈκÎÈÏÖ¤£© + EVENT_ACS_VP_ANTI_SPOOFING_FAIL, //ÉùÎÆ»îÌå¼ì²âʧ°Ü + EVENT_ACS_VP_VERIFY_FAIL //ÉùÎÆÈÏ֤ʧ°Ü +}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»òʼþ±¨¾¯ÊäÈëID¡£0xffffffff±íʾÁª¶¯È«²¿ + 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»òʼþ±¨¾¯ÊäÈëID¡£0xffffffff±íʾÁª¶¯È«²¿ + 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; //Áª¶¯ÓïÒô²¥·ÅID£º0-²»Áª¶¯£¬Ä¿Ç°·¶Î§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; //ÒôƵID£¨0xffffffff´ú±íÉÏ´«/ÏÂÔØÈ«²¿ÒôƵÎļþ£¬Ä¿Ç°É豸½öÖ§³ÖÈ«Á¿ÉÏ´«/ÏÂÔØ£¬²»Ö§³Öµ¥¸öÒôƵ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; //·´Ç±»ØÖ÷»ú±àºÅ + BYTE byRes[5]; //±£Áô + WORD wFollowUpCardReader; //¸Ã·´Ç±»ØÖ÷»úϵĶÁ¿¨Æ÷±àºÅ +}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; //·´Ç±»ØÖ÷»ú±àºÅ + 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; //ÊÇ·ñ¿ªÆôÈËÊýͳ¼Æ£¬0£º²»¿ªÆô£»1£º¿ªÆô£» + BYTE byEnableOfflineStatistics; //ÊÇ·ñ¿ªÆôÀëÏßÈËÊýͳ¼Æ£¬0£º²»¿ªÆô£»1£º¿ªÆô£» + 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; //ÆðʼÐÐλÖÃÔÚÆÁÄ»ÄÄÒ»¸ö·Ö¿é£¬0£º0¡¢ 1£º1/8:¡¢ 2£º2/8¡¢ 3£º3/8¡¢ 4£º4/8¡¢ 5£º5/8¡¢ 6£º6/8:¡¢ 7£º7/8£» + BYTE byDegree; //×Ö·ûÏÔʾ·½Ïò½Ç¶È£¬0-0¶È£¨Õý³££©£¬1-90¶È£¨²à×Å£©£» + BYTE byScreenType; //ÆÁÄ»ÀàÐÍ£¬0-DC48270RS043_01T£¬1-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*8£¬ÖÐÂë16*16£¬ºñÂë32*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×ø±êÖµÒÔwPanPos¡¢wTiltPos¡¢wZoomPosΪ׼¡£ + 1~ÆôÓã¬PTZ×ø±êÖµÒÔstruPtzPosExΪ׼¡£µ«ÊÇÐÂÀÏPTZ¶¼Ðè·µ»Ø¡£struPtzPosExµÄÖµÐèת»¯ÎªwPanPos¡¢wTiltPos¡¢wZoomPosÖµ¡£ + */ + BYTE byPTZPosExEnable; + BYTE byRes2; + NET_PTZ_INFO struPtzPosEx;// ptz×ø±êÀ©Õ¹(Ö§³Ö¸ß¾«¶ÈPTZÖµ£¬¾«È·µ½Ð¡ÊýµãºóÈýλ) + DWORD dwVisiblePicLen;//¿É¼û¹âͼƬ³¤¶È + BYTE *pVisiblePicBuf; //¿É¼û¹âͼƬÊý¾ÝÖ¸Õë + // pSmokeBuf²ÎÊýµ±byAlarmSubType±¨¾¯×ÓÀàÐÍΪ1£¨ÑÌÎí¼ì²â±¨¾¯£©¡¢2£¨Ñ̻𱨾¯£©Ê±ÉúЧ¡£ + BYTE *pSmokeBuf; //ÑÌÎí¼ì²â±¨¾¯Êý¾ÝÖ¸Õ룬ָÏòÒ»¸öNET_DVR_SMOKEDETECTION_ALARM½á¹¹Ìå + WORD wDevInfoIvmsChannelEx; //ÓëNET_VCA_DEV_INFOÀïµÄbyIvmsChannelº¬ÒåÏàͬ£¬Äܱíʾ¸ü´óµÄÖµ¡£ÀÏ¿Í»§¶ËÓÃ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~ absoluteZoom£¬1~ 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; //¼à¿ØµãID£¨µ±byDelTypeΪ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; //É豸ID£»Analog(Ä£ÄâÁ¿´«¸ÐÆ÷)·¶Î§£º1-8¡¢Terminal(Éϵç¶Ë×Ó)·¶Î§£º1-4¡¢Socket(Éϵç²å×ù)·¶Î§£º1-2£¬0xff±íʾ²éѯËùÓÐ + 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; //É豸ID£»Analog(Ä£ÄâÁ¿´«¸ÐÆ÷)·¶Î§£º1-8¡¢Terminal(Éϵç¶Ë×Ó)·¶Î§£º1-4¡¢Socket(Éϵç²å×ù)·¶Î§£º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; //É豸ID£»Terminal(Éϵç¶Ë×Ó)·¶Î§£º1-4¡¢Socket(Éϵç²å×ù)·¶Î§£º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]; //SIP·þÎñÆ÷ID£» + 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ÎÞЧ£¬»ñȡʱ£¬byAuthPasswdExºÍbyAuthPasswd¶¼·µ»Ø + 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-²»Ê¹ÓÃhttps£¬1-ʹÓÃ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-50£¬1-75£¬2-110£¬3-150£¬4-300£¬5-600£¬6-1200£¬7-2400£¬8-4800£¬9-9600£¬10-19200£¬11-38400£¬12-57600£¬13-76800£¬14-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µÄ·çÉÈ£¬µ±¶ÔÓ¦·çÉȱ»ÖÃλʱ£¬dwFanConnectStatusºÍdwFanOperationStatusµÄ¶ÔӦλ²ÅÓÐЧ£¬·ñÔòÈÏΪÎ޴˱àºÅµÄ·çÉÈ + 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.0£©£¬2-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±íʾÉ豸ֻÓÐÒ»¸ö·çÉÈ£¬±àºÅΪ1£¬0x00000101±íʾÉ豸ÓÐÁ½¸ö·çÉÈ£¬±àºÅ·Ö±ðΪ1ºÍ9£¬µ±¶ÔÓ¦·çÉȱàºÅ±»ÖÃλʱ£¬dwFanConnectStatusºÍdwFanOperationStatusµÄ¶ÔӦλ²ÅÓÐЧ£¬·ñÔòÈÏΪÎ޴˱àºÅµÄ·çÉÈ + DWORD dwFanConnectStatus; //·çÉÈÁ¬½Ó״̬£¬°´Î»±íʾ£¬ÀýÈç0x00000001±íʾ±àºÅΪ1µÄ·çÉÈÁ¬½Ó״̬Òì³££¬0x00000101±íʾ±àºÅΪ1ºÍ9µÄ·çÉÈÁ¬½Ó״̬¾ùÒì³£ + DWORD dwFanOperationStatus; //·çÉÈÔËÐÐ״̬£¬°´Î»±íʾ£¬ÀýÈç0x00000001±íʾ±àºÅΪ1µÄ·çÉÈÔËÐÐ״̬Òì³££¬0x00000101±íʾ±àºÅΪ1ºÍ9µÄ·çÉÈÔËÐÐ״̬¾ùÒì³£ + 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;// Êý¾Ýλ 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 byRes1 ; + DWORD dwBaudRate;//²¨ÌØÂÊ0£­50£¬1£­75£¬2£­110£¬3£­150£¬4£­300£¬5£­600£¬6£­1200£¬7£­2400£¬8£­4800£¬9£­9600£¬10£­19200£¬ 11£­38400£¬12£­57600£¬13£­76800£¬14£­115.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Öá¿ØÖÆËÙ¶È £¨È¡Öµ1£­64£© + BYTE byTSpeed; // YÖá¿ØÖÆËÙ¶È £¨È¡Öµ1£­64£© + 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=3ÇÒbyQueueLen>0ʱ²Å·µ»Ø) + NET_DVR_LLPOS_PARAM struLastLLPos;//³µÁ÷Á¿×îºóÒ»Á¾³µµÄ¾­Î³¶ÈλÖÃÐÅÏ¢(byLaneState=3ÇÒbyQueueLen>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]; /*ÉÏ´«µÄ³µÁ¾Î¨Ò»±êʶ,×î´ó³¤¶ÈΪ64*/ + BYTE byVehicleMonitorTaskID[64];//³µÁ¾ÖÇÄܲ¼¿ØÈÎÎñID,64λ×Ö·û´®,´´½¨ÈÎÎñʱÓÉÉϲãÏ·¢¸øÉ豸,ÉϲãÈ·±£IDΨһÐÔ + BYTE byUUID[LEN_64]; //ͨÓÃΨһʶ±ðÂë,64λ×Ö·û´®,É豸ȷ±£Î¨Ò»ÐÔ£¬ÓÃÓÚ¿ç·þÎñÆ÷¹ØÁªÍ¬Ò»´Î×¥ÅÄ,vehicleMonitor£¬manualVehicleMonitor£¬dailyVehicleMonitor±¨¾¯ÖеÄ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-»ªÊ϶ȣ¨¨H£©£¬2-¿ª¶ûÎÄ(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-Ã×£¨m£©£¬1-Ó¢³ß£¨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;//ÇøÓòID£¬1~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;//ÇøÓòID£¬1~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;//ÇøÓòID£¬1~24. + BYTE byRes[127]; //±£Áô +}NET_SDK_FIRESHIELDMASK_COND, *LPNET_SDK_FIRESHIELDMASK_COND; + +typedef struct tagNET_SDK_SMOKESHIELDMASK_COND +{ + DWORD dwSize; + DWORD dwChannel;//ͨµÀºÅ + BYTE byRegionID;//ÇøÓòID£¬1~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_BNC£¬NET_DVR_CAM_VGA£¬NET_DVR_CAM_DVI£¬NET_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_A£¬2-AUDIO_G711_U£¬3- 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, //1Àà»õ³µ2Öá + TOOLWAY_GOODS_VEHICLE_CLASS_2 = 8, //2Àà»õ³µ2Öá + TOOLWAY_GOODS_VEHICLE_CLASS_3 = 9, //3Àà»õ³µ3Öá + TOOLWAY_GOODS_VEHICLE_CLASS_4 = 10, //4Àà»õ³µ4Öá + TOOLWAY_GOODS_VEHICLE_CLASS_5 = 11, //5Àà»õ³µ5Öá + TOOLWAY_GOODS_VEHICLE_CLASS_6 = 12, //6Àà»õ³µ6Öá + 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*/]; //³µÖáÖØÁ¿£¬µ¥Î»Ç§¿Ë£¨kg£©µÚi¸öÔªËرíʾµÚ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- ÊÇ + //¸Ã½ÚµãÒѲ»ÔÙʹÓÃ,ʹÓÃÏÂÃæµÄbyYellowLabelCarºÍbyDangerousVehiclesÅжÏÊÇ·ñ»Æ±ê³µºÍΣÏÕÆ·³µ + 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~Êý×Ö¸ñʽʱ£¬ÎªÀϵÄÎ¥ÕÂÀàÐÍ£¬wIllegalType¡¢dwCustomIllegalType²ÎÊýÉúЧ£¬¸³Öµ¹ú±êÎ¥·¨´úÂë¡£ + Ϊ1~×Ö·û¸ñʽʱ£¬pIllegalInfoBuf²ÎÊýÉúЧ¡£ÀϵÄÎ¥ÕÂÀàÐÍ£¬wIllegalType¡¢dwCustomIllegalType²ÎÊýÒÀÈ»¸³Öµ¹ú±êÎ¥·¨´úÂë*/ + 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-8·ÀÇø£¬5-8·ģÄâÁ¿·ÀÇø, 6-µ¥·ÀÇø´¥·¢Æ÷ + WORD wModuleAddress; //Íâ½Ó´¥·¢Æ÷µØÖ·£¬À©Õ¹Ä£¿é´Ó0~255£¬0xFFFF±íʾÎÞЧ + 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; //¶ÔÓ¦·Ö±æÂÊÏ¿ÉÉèÖñ¨¾¯Ç°Í¼Æ¬×î´óÊý4CIF£º10ÕÅ£¬2CIF£º20ÕÅ£¬CIF£º40ÕÅ£¬QCIF£º80ÕÅ£»WD1:10ÕÅ,XVGA:10ÕÅ,720P:10ÕÅ,1080P:10ÕÅ + BYTE byAfterAlarmPic; //¶ÔÓ¦·Ö±æÂÊÏ¿ÉÉèÖñ¨¾¯ºóͼƬ×î´óÊý 4CIF£º10ÕÅ£¬2CIF£º20ÕÅ£¬CIF£º40ÕÅ£¬QCIF£º80ÕÅ£»WD1:10ÕÅ,XVGA:10ÕÅ,720P:10ÕÅ,1080P:10ÕÅ + WORD wInterval; //¼ä¸ôʱ¼ä µ¥Î»s + BYTE byResolution; //ͼƬ·Ö±æÂÊ1-CIF£¬2-2CIF£¬3-4CIF£¬4-QCIF£¬5-WD1£¬6-VGA,7-XVGA£¬8-720P£¬9-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-Òƶ¯Õì²â £¬2£­±¨¾¯´¥·¢£¬3-±¨¾¯|Òƶ¯Õì²â 4-±¨¾¯&Òƶ¯Õì²â 5-ÃüÁî´¥·¢ 6-ÊÖ¶¯Â¼Ïñ,7-ÖÇÄܼÏñ£¬10-PIR±¨¾¯£¬11-ÎÞÏß±¨¾¯£¬12-ºô¾È±¨¾¯£¬13-È«²¿Ê¼þ£¬14-ÖÇÄܽ»Í¨Ê¼þ + //´ø¿¨ºÅ£¬0xff£­È«²¿£¬0£­¶¨Ê±Â¼Ïñ£¬1-Òƶ¯Õì²â£¬2£­½Ó½ü±¨¾¯£¬3£­³ö³®±¨¾¯£¬4£­½ø³®±¨¾¯£¬5-ÃüÁî´¥·¢£¬6£­ÊÖ¶¯Â¼Ïñ£¬7£­Õ𶯱¨¾¯£¬8-»·¾³±¨¾¯£¬9-ÖÇÄܱ¨¾¯£¬10-PIR±¨¾¯£¬11-ÎÞÏß±¨¾¯£¬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- PIR±¨¾¯£¬11- ÎÞÏß±¨¾¯£¬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±íʾͨµÀ1£¬ÒÀ´ÎÀàÍÆbit31±íʾͨµÀ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±íʾͨµÀ1£¬ÒÀ´ÎÀàÍÆbit31±íʾͨµÀ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; //ʹÄÜ·¢ËÍlldp°ü£¬0-²»Ê¹ÄÜ£¬1-ʹÄÜ + BYTE byEnabledRx; //ʹÄܽÓÊÕlldp°ü£¬0-²»Ê¹ÄÜ£¬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-ACCESS£¬2-TRUNK£¬3-HYPRID + BYTE byBandWidth; //´ø¿í£¬1-100M£¬2-1G£¬3-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-2U£¬2-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-2U£¬2-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-2U£¬2-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-2U£¬2-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-100M£¬3-1000M£¬4-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-ACCESS£¬2-TRUNK£¬3-HYPRID + BYTE byLocalBandWidth; //±¾µØ´ø¿í£¬1-100M£¬2-1G£¬3-10G + BYTE byRes1[1]; + BYTE byPeerTypeName[NAME_LEN]; //¶Ô¶ËÉ豸ÀàÐÍÃû³Æ + BYTE byPeerMac[MACADDR_LEN]; //¶Ô¶ËMACµØÖ· + DWORD dwPeerPortNo; //¶Ô¶Ë¶Ë¿ÚºÅ + BYTE byPeerWorkMode; //¶Ô¶Ë¹¤×÷ģʽ£¬1-ACCESS£¬2-TRUNK£¬3-HYPRID + BYTE byPeerBandWidth; //¶Ô¶Ë´ø¿í£¬1-100M£¬2-1G£¬3-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; //²ÛλºÅ£¬µ±¿¨ÀàÐÍΪ·¢ËÍ»úʱ£¬²ÛλºÅΪ¸Ã·¢ËÍ»úÁ¬½ÓµÄ½ÓÊÕ¿¨µÄ²ÛλºÅ£¬»úÏä¸æ¾¯¼°Í¨ÖªÊ±ÎÞЧ + 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-encrypted£¬1-WPA£¬2-WPA2(ÔÝʱֻ֧³Ö2) + BYTE byAlgorithmType; //¼ÓÃÜģʽ 1-TKIP£¬2-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; //GIS·þÎñÆ÷IPµØÖ· + 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 ×Ö·û´®µÄ³¤¶È,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 XMLµÄ³¤¶È£» + 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-¾«Æ·µ¼²¥1Ìæ2,3-¾«Æ·µ¼²¥²ßÂÔ1Ìæ3 + 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 ģʽ£¬R£¬G£¬B£¬·Ö±ð¶ÔӦλÓÚÈçÏÂ*/ + 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; //¼ì²âʱÑÓ£¬µ¥Î»s£¬0±íʾ²»×Ô¶¯ÓÅ»¯ + BYTE byThreshold; //ãÐÖµ[0,100] + BYTE byVolumePercent;//ÒôÁ¿ [0,100] + BYTE byPriority; //µÈ¼¶£¬[0£¬100] + 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; //ÊÇ·ñÆôÓÃRTMP£¬0-²»ÆôÓã¬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;//RGB²ÎÊý£¬R£¨ºìÉ«£©£¬·¶Î§0-100 + BYTE byG;//RGB²ÎÊý£¬G£¨ÂÌÉ«£©£¬·¶Î§0-100 + BYTE byB;//RGB²ÎÊý£¬B£¨À¶É«£©£¬·¶Î§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;//RGB²ÎÊý£¬R£¨ºìÉ«£©£¬·¶Î§0-100 + BYTE byG;//RGB²ÎÊý£¬G£¨ÂÌÉ«£©£¬·¶Î§0-100 + BYTE byB;//RGB²ÎÊý£¬B£¨À¶É«£©£¬·¶Î§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-SIP£¬2-H232 + BYTE byTransmissionProtocol; //´«ÊäЭÒéÀàÐÍ£¬0-ÎÞЧ£¬1-TCP£¬2-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-µþ¼Ó½øÈë¡¢À뿪¡¢PASS¡¢ID¡¢¸ß¶È + 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; //½á¹ûÄÚÈÝ£¬dwCount¸öNET_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-ÏÔʾ³§¼ÒLOGO£¬3-ÏÔʾ×Ô¶¨ÒåͼƬ + 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-RGB»ìºÏGamma±í£¬1-ºìÉ«Gamma±í£¬2-ÂÌÉ«Gamma±í£¬3-À¶É«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]; //GAMMA±íYÈ¡Öµ£¬Ã¿¸öÔªËØÈ¡Öµ0-65535£¬×Ô¶¨ÒåģʽʱÓÐЧ + BYTE byGammaModel; //GAMMA±íģʽ£¬0-×Ô¶¨Òåģʽ£¬1-ҹģʽ1£¬2-ҹģʽ2£¬3-Õý³£Ä£Ê½£¬4-ÈÕÕÕģʽ1£¬5-ÈÕÕÕģʽ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ʱÖÓÕ¼¿Õ±È£¬È¡Öµ£º25£¬50£¬75 + BYTE byDclkPhase; //dclkÏàλ£¬È¡Öµ£º0,1,2,3 + BYTE byGclkNum; //Ë¢ÐÂ1ÐÐÐèÒªµÄÓÐЧgclk¸öÊý£¬0-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; //»Ò¶ÈµÈ¼¶£¬È¡Öµ13£¬14 + 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; //µÍ»ÒÆ«É«²¹³¥1£¬0-3 + BYTE byGrayEqualize2; //µÍ»ÒÆ«É«²¹³¥2£¬0-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)) //win64¼°linux64ÏÂÖ¸ÕëΪ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; //³µµÀºÅ1¡«32£¨Ë÷Òý³µµÀºÅ£¬¿ÉÒÔÌøÔ¾£© + BYTE byCamLaneId; //¶ÔÓ¦Ïà»ú³µµÀºÅ1¡«16£¨Ïà»úÅäÖõ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-100£¬101±íʾ´ËÖÕ¶ËÉý¼¶³öÏÖÒì³£,,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; //¸÷ÖÕ¶ËÉý¼¶µÄ×Ó½ø¶È£¬dwSubProgressNum¸öNET_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; //ÖÕ¶Ë×éºÅ»ò×éÖ¯£¬½ø¶ÈÀàÐÍΪ1£¬3ʱÓÐЧ + 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-100£¬101±íʾ´ËÖÕ¶ËÈճ̷¢²¼³öÏÖÒì³£,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; //¸÷ÖÕ¶ËÈճ̷¢²¼µÄ×Ó½ø¶È£¬°´×é»ñȡʱÓÐЧ£¬dwSubProgressNum¸öNET_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-100£¬101±íʾ´ËÖն˲岥³öÏÖÒì³£,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; //¸÷Öն˲岥µÄ×Ó½ø¶È£¬°´×é»ñȡʱÓÐЧ£¬dwSubProgressNum¸öNET_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-63¸öASCII×Ö·û + 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-personal¡¢WPA2-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; //ÊÇ·ñÆôÓÃÎÞÏßAP£º0-·ñ£¬1- ÊÇ + BYTE byBroadcastEnabled; // ÊÇ·ñÆôÓù㲥£¬0-·ñ£¬1-ÊÇ + BYTE byWlanShareEnabled; //ÊÇ·ñÆôÓù²Ïí£¬0-·ñ£¬1-ÊÇ + BYTE byDHCPEnabled; //ÊÇ·ñÆôÓÃDHCP£¬0-·ñ£¬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£ºÉí·ÝÖ¤¶Á¿¨Æ÷£¬2£ºIC¶Á¿¨Æ÷£¬3£º¶þάÂë¶Á¿¨Æ÷£¬4£ºÖ¸ÎƶÁ¿¨Æ÷£¬5£º×Ö·ûÆÁ+¶þάÂë¶Á¿¨Æ÷£¬6£ºÊÕ¿¨Æ÷£¬7£º×Ö·ûÆÁ£¬8£ºÖ¸ÎÆÍ·£¬9£ºÓïÒôÄ£¿é£»10£ºÈËÖ¤É豸 + BYTE byDoorMode; //ÃųöÈëÀàÐÍ£¬0£º½øÃÅ£¬1£º³öÃÅ£» + BYTE byRes2; + WORD wDevDetailType; //ÍâÉèµÄ¾ßÌåÉ豸Ðͺţ¬0-iDR210£¬1-IDM10£¬2-˽ÓÐÉí·ÝÖ¤ÔĶÁÆ÷ + 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; //¹¤×÷ģʽ£¬0½ô¼±£»1ά»¤£»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; //ͼƬÊý¾Ý´óС£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + 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; // Ö¸ÎÆÊý¾Ý´óС£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + char *pFingerPrintData; + DWORD dwCapturePicDataLen; // ×¥ÅÄͼƬÊý¾Ý´óС£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + char *pCapturePicData; + DWORD dwCertificatePicDataLen; //Ö¤¼þ×¥ÅÄͼƬÊý¾Ý´óС£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + char *pCertificatePicData; + BYTE byCardReaderKind; //¶Á¿¨Æ÷ÊôÓÚÄÄÒ»À࣬0-ÎÞЧ£¬1-IC¶Á¿¨Æ÷£¬2-Éí·ÝÖ¤¶Á¿¨Æ÷£¬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; //¶þάÂëÐÅÏ¢³¤¶È£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + DWORD dwVisibleLightDataLen; //ÈȳÉÏñÏà»ú¿É¼û¹âͼƬ³¤¶È£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + DWORD dwThermalDataLen; //ÈȳÉÏñͼƬ³¤¶È£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + 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; // Éí·ÝÖ¤Ö¸ÎÆÊý¾Ý´óС£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + char *pFingerPrintData; + DWORD dwPicDataLen; // Éí·Ý֤ͼƬÊý¾Ý´óС£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + 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]; //Ö¤¼þÀàÐÍ£¬Êý¾ÝÀàÐÍA£¬S + BYTE byCountryIssue[MAX_PASSPORT_INFO_LEN]; //Ç©·¢¹ú»òÇ©·¢»ú¹¹£¬Êý¾ÝÀàÐÍA£¬S + BYTE byName[MAX_PASSPORT_NAME_LEN]; //ÐÕÃû£¬Êý¾ÝÀàÐÍA£¬S + BYTE byPassportNo[MAX_PASSPORT_NUM_LEN]; //Ö¤¼þºÅÂ룬Êý¾ÝÀàÐÍA£¬N£¬S + BYTE byNationality[MAX_NATIONALITY_LEN]; //¹ú¼® £¬Êý¾ÝÀàÐÍA£¬S + 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]; //¸öÈ˺ÅÂ룬Êý¾ÝÀàÐÍA£¬N£¬S + BYTE byPlaceOfBirth[MAX_PASSPORT_INFO_LEN]; //³öÉúµØ£¬Êý¾ÝÀàÐÍB + BYTE byAddr[MAX_PASSPORT_INFO_LEN]; //µØÖ·£¬Êý¾ÝÀàÐÍA£¬N£¬S£¬B + BYTE byPhone[MAX_PASSPORT_INFO_LEN]; //µç»°£¬Êý¾ÝÀàÐÍN£¬S + 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]; //ÆäËûÂÃÐÐÖ¤¼þºÅÂ룬Êý¾ÝÀàÐÍA£¬N£¬S£¬B + 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; //ÈËÁ³Êý¾Ý´óС£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + char *pFaceData; + DWORD dwPicDataLen; //¹«ÃñÖ¤¼þͼƬÊý¾Ý´óС£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + char *pPicData; //°´ÕÕ [ISO/IEC 10918-1] ¸ñʽ»¯µÄ¹«ÃñÖ¤¼þͼÏñ + DWORD dwCapturePicDataLen; //×¥ÅÄͼƬÊý¾Ý´óС£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + 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 (×Ö¶ÎbyLinkageType·Ç0µÄʱºòÉúЧ) + 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 head£¬1 -video I frame£¬2- 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Ö¡£¬ÉîP£º1£¬²»ÎªÉîP£º0; 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-HDMI£¬2-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; //PPT¶¯×÷£¬1-´ò¿ª·ÅÓ³£¬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Ϊ3¡¢4¡¢5ʱ£¬±íʾ²Ù×÷µÄÎļþË÷Òý£»µ±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-PPT£¬5-Ô¶³Ì²Ù×÷£¬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-PPT£¬2-Îļþ²Ù×÷ + 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-ppt£¬1-txt£¬2-doc£¬3-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-BMP£¬2-JPEG£¬3-PNG£¬4-SWF£¬5-GIF£¬ÎļþÀàÐÍΪ1ʱÓÐЧ + BYTE byVideoFormat; //ÊÓƵ¸ñʽ£¬1-AVI£¬2-WMV£¬3-MP4£¬4-FLV£¬5-VOD£¬6-MKV£¬7-RMVB£¬ÎļþÀàÐÍΪ2ʱÓÐЧ + BYTE byDocumentFormat; //Îĵµ¸ñʽ£¬0-ppt£¬1-txt£¬2-doc£¬3-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ÉãÊ϶È,µ±¿ØÖÆģʽΪ0»òÕß2ʱÉúЧ + BYTE byHumidityValue;//ʪ¶ÈãÐÖµ£¬0~100£¬µ±¿ØÖÆģʽΪ1»òÕß2ʱÉúЧ + BYTE byFanSwitch;//·çÉÈ¿ª¹Ø£¬0-¹Ø£¬1-¿ª + BYTE byThermometryUnit;//²âε¥Î»: 0-ÉãÊ϶ȣ¨¡æ£©£¬1-»ªÊ϶ȣ¨¨H£©£¬2-¿ª¶ûÎÄ(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; //ȱʧ¼ÏñµÄ¿ªÊ¼Ê±¼ä£¬byCheckType¡¢byRecordNotCompleteÖµ¶¼Îª1ʱÓÐЧ + NET_DVR_TIME_EX struEndTime; //ȱʧ¼ÏñµÄ½áÊøʱ¼ä£¬byCheckType¡¢byRecordNotCompleteÖµ¶¼Îª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»ñÈ¡ÈÎÎñ£¬4¡ª¸ù¾ÝÈÎÎñID»ñÈ¡ÈÎÎñ + 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, byTypeµÈÓÚ4ʱÓÐЧ + 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Ϊ1ºÍ2ÓÐЧ + 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; //ÊÖ¶¯»Ø´«ÈÎÎñID£¬¸ù¾ÝÈÎÎñIDɾ³ýÈÎÎñʱÓÐЧ + 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ʱstruPassBackDay¡¢struPassBackSchedÎÞЧ + 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; + +//Ò»¼üÅäÖÃCVR£¨V50£© +typedef struct tagNET_DVR_ONE_KEY_CFG_V50 +{ + DWORD dwSize;//½á¹¹Ìå´óС + BYTE byRaidType; //RAIDÀàÐÍ£º0-raid5,1-raid6,2-raid95£¨Vraid£©,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-Òƶ¯Õì²â,2£­±¨¾¯£¬0xff-ÆäËû + 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 S50£¬2- MIFARE S70£¬3- FM1208 CPU¿¨£¬4- FM1216 CPU¿¨£¬5-¹úÃÜCPU¿¨£¬6-Éí·ÝÖ¤£¬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-1200¨H),4-£¨ÉãÊ϶È: -40-150¡æ£©,5-(ÉãÊ϶È: 0~1200¡æ)£¨ÕâÀïÒÔÉãÊ϶ÈΪµ¥Î»¼ÆË㣬¸ù¾Ý²âε¥Î»É趨²»Í¬²âη¶Î§µÄÏÔʾ£©£¬6-(ÉãÊ϶È: -20-120¡æ,7-(ÉãÊ϶È:20~350¡æ), 8-(ÉãÊ϶È:20~45),9-(ÉãÊ϶È:30~45),0xff-×Ô¶¯ + BYTE byThermometryUnit;//²âε¥Î»: 0-ÉãÊ϶ȣ¨¡æ£©£¬1-»ªÊ϶ȣ¨¨H£©£¬2-¿ª¶ûÎÄ(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-Ã×£¨m£©£¬1-Ó¢³ß£¨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-Ã×£¨m£©£¬1-Ó¢³ß£¨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-´ú±í»ñÈ¡È«²¿¹æÔò£¬¾ßÌå¹æÔòID´Ó1¿ªÊ¼ + /* + 1-¶¨Ê±Ä£Ê½£ºÉ豸ÿ¸ôÒ»ÃëÉÏ´«¸÷¸ö¹æÔò²âÎÂÊý¾ÝµÄ×î¸ßΡ¢×îµÍκÍƽ¾ùζÈÖµ¡¢Î²î + 2-βîģʽ£ºÈôÉÏÒ»ÃëÓëÏÂÒ»ÃëµÄ×î¸ßλòÕß×îµÍλòÕßƽ¾ùλòÕßβîÖµµÄβî´óÓÚµÈÓÚ2ÉãÊ϶ȣ¬ÔòÉÏ´«×î¸ßΡ¢×îµÍκÍƽ¾ùζÈÖµ¡£Èô´óÓÚµÈÓÚÒ»¸öСʱβîÖµ¾ùСÓÚ2ÉãÊ϶ȣ¬ÔòÉÏ´«×î¸ßΡ¢×îµÍΡ¢Æ½¾ùκÍβîÖµ + */ + BYTE byMode; //³¤Á¬½Óģʽ£¬ 0-±£Áô£¨Îª¼æÈÝÀÏÉ豸£©£¬1-¶¨Ê±Ä£Ê½£¬2-βîģʽ + WORD wInterval; //ÉÏ´«¼ä¸ô£¬½öβîģʽ֧³Ö£¬1~3600S£¬Ìî0ÔòĬÈÏ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-»ªÊ϶ȣ¨¨H£©£¬2-¿ª¶ûÎÄ(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£©*10£¨ÓÉbySpecialPointThermTypeÅжÏÊÇ·ñÖ§³Ö×î¸ßµã£© + float fLowestPointTemperature;//×îµÍµãζÈ,¾«È·µ½Ð¡Êýµãºóһλ(-40-1500),£¨¸¡µãÊý+100£©*10£¨ÓÉbySpecialPointThermTypeÅжÏÊÇ·ñÖ§³Ö×îµÍµã£© + 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-»ªÊ϶ȣ¨¨H£©£¬2-¿ª¶ûÎÄ(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];//µã²âÎÂ×ø±ê£¨µ±¹æÔò±ê¶¨ÀàÐÍΪµãµÄʱºòÉúЧ£©Êý×éϱê0´ú±í×ÅAlarmID1£¬Êý×éϱê1´ú±í×ÅAlarmID2. + NET_VCA_POLYGON struRegion[2];//ÇøÓò£¨µ±¹æÔò±ê¶¨ÀàÐÍΪ¿òµÄʱºòÉúЧ£©Êý×éϱê0´ú±í×ÅAlarmID1£¬Êý×éϱê1´ú±í×ÅAlarmID2. + 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-»ªÊ϶ȣ¨¨H£©£¬2-¿ª¶ûÎÄ(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))//win64¼°linux64ÏÂÖ¸ÕëΪ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_INFOÀïµÄbyIvmsChannelº¬ÒåÏàͬ£¬Äܱíʾ¸ü´óµÄÖµ¡£ÀÏ¿Í»§¶ËÓÃ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))//win64¼°linux64ÏÂÖ¸ÕëΪ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;// RGB²ÎÊý£ºR£¨ºìÉ«£©£¬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-LEDÇøÓò£¬1-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--centerbusy£¬1--refuse + BYTE byType; //´¦ÀíÀàÐÍ£¬0¡ª½ô¼±±¨¾¯£¬1¡ªÒµÎñ×Éѯ + 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-ÎÞÒâÒå,1¨Cv2.0£¬2¨Cv4.0£¬3-v5.0 + BYTE byRes1[3]; + BYTE byEHomeKey[NET_SDK_EHOME_KEY_LEN]; //EHome Key£¨ÓÃÓÚEHome 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, //ÉèÖÃOpenSSLµÄlibeay32.dll/libcrypto.so/libcrypto.dylibËùÔÚ·¾¶ + NET_SDK_INIT_CFG_SSLEAY_PATH = 4 //ÉèÖÃOpenSSLµÄssleay32.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-»ªÊ϶ȣ¨¨H£©£¬2-¿ª¶ûÎÄ(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/4Á÷Ëø¶¨£¬3~°ëÁ÷Ëø¶¨ + 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Ϊ1¡¢2ʱÓÐЧ + BYTE byScreenCheckType; //ÆÁĻУÕýÀàÐÍ,0-ÆÕͨУÕý,1-¸ß¼¶Ð£Õý + BYTE byRes1; + WORD wRgbPermil; //RGBͬ²½µ÷ÕûµÄǧ·Ö±È£¬byOperateTypeΪ1¡¢2ÇÒbyIsRGBSynChk·ÇÁãʱÓÐЧ + WORD wRedPermil; //ºìÉ«µ÷ÕûµÄǧ·Ö±È£¬byOperateTypeΪ1¡¢2ÇÒbyIsRGBSynChkΪÁãʱÓÐЧ + WORD wGreenPermil; //ÂÌÉ«µ÷ÕûµÄǧ·Ö±È£¬byOperateTypeΪ1¡¢2ÇÒbyIsRGBSynChkΪÁãʱÓÐЧ + WORD wBluePermil; //À¶É«µ÷ÕûµÄǧ·Ö±È£¬byOperateTypeΪ1¡¢2ÇÒbyIsRGBSynChkΪÁãʱÓÐЧ + 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; //»Ø·ÅÎļþÃû£¬°üº¬\0£¬×î´ó100×Ö½Ú + 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; //ͼƬÃû£¬°üº¬\0£¬×î´ó64×Ö½Ú + 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ÄÜÁ¦½Úµãʱ£¬ + ´ú±í·Ç²¢·¢´¦ÀíģʽÏ£¬Ö§³Ö²»±£´æÉÏ´«Ô­Í¼µÄ²Ù×÷:µ±ÉÏ´«³É¹¦Í¼Æ¬²¢É豸½¨Ä£³É¹¦ºó£¬»á½«ÉÏ´«µÄԭͼ½øÐÐɾ³ý¡£ + ×¢£º¸Ã²Ù×÷ÎÞ·¨Óë²¢·¢´¦Àíͬʱ½øÐС£*/ + 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_DATA£©£¬2-ÊÓƵÊý¾Ý + 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*/]; //¿¼ÊÔ³¡´Î±àºÅ£¨Ä³ÌþßÌ忼ÊÔ£© + BYTE byExamNo[NET_SDK_MAX_EXAM_NO/*64*/]; //¿¼ÊÔ±àºÅ£¨Ä³´Î¿¼ÊÔ£¬°üº¬¶à³¡¿¼ÊÔ£© + 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*/]; //¿¼ÊÔ³¡´Î±àºÅ£¨Ä³ÌþßÌ忼ÊÔ£© + 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*/]; //¿¼ÊÔ³¡´Î±àºÅ£¨Ä³ÌþßÌ忼ÊÔ£© + 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*/]; //¿¼ÊÔ³¡´Î±àºÅ£¨Ä³ÌþßÌ忼ÊÔ£© + 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*/]; //¿¼ÊÔ³¡´Î±àºÅ£¨Ä³ÌþßÌ忼ÊÔ£© + BYTE byExamNo[NET_SDK_MAX_EXAM_NO/*64*/]; //¿¼ÊÔ±àºÅ£¨Ä³´Î¿¼ÊÔ£¬°üº¬¶à³¡¿¼ÊÔ£© + 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*/]; //¿¼ÊÔ±àºÅ£¨Ä³´Î¿¼ÊÔ£¬°üº¬¶à³¡¿¼ÊÔ£© + BYTE byExamRoundNo[NET_SDK_MAX_EXAM_ROUND_NO/*64*/]; //¿¼ÊÔ³¡´Î±àºÅ£¨Ä³ÌþßÌ忼ÊÔ£© + BYTE byName[NAME_LEN/*32*/]; //ÐÕÃû + BYTE byCardNo[ACS_CARD_NO_LEN]; //¿¼Éú¹ØÁªµÄ¿¨ºÅ + DWORD dwPicDataLen; //±È¶Ô×¥ÅÄͼƬÊý¾Ý´óС£¬²»Îª0ÊDZíʾºóÃæ´øÊý¾Ý + 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ÐÅÏ¢ 1¡¢2¡¢4¡¢8,»Ø·Åʱ´Ë×Ö¶ÎÎÞЧ,Çëͨ¹ý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; //ÊÇ·ñ²»´øboundary£¬0-·ñ£¬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_INFOÀïµÄbyIvmsChannelº¬ÒåÏàͬ£¬Äܱíʾ¸ü´óµÄÖµ¡£ÀÏ¿Í»§¶ËÓÃ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))//win64¼°linux64ÏÂÖ¸ÕëΪ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;//¶ÔÓ¦·ÖÎöµÄ¸½¼ÓͼƬÊý¾Ý(¶ÔÓÚÈȳÉÏñ˫ͨµÀÉ豸£¬¸Ã½Úµã±íʾ·Ç±¨¾¯Í¨µÀµÄͼƬ) +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64¼°linux64ÏÂÖ¸ÕëΪ8×Ö½Ú + char* pFacePicBuff; //ÈËÁ³Ð¡Í¼Í¼Æ¬Ö¸Õë +#else + char* pFacePicBuff; //ÈËÁ³Ð¡Í¼Í¼Æ¬Ö¸Õë + BYTE byRes3[4]; +#endif + DWORD dwFacePicBuffLen;//³¤¶È¶ÔÓ¦pFacePicBuffÊý¾Ý³¤¶È +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64¼°linux64ÏÂÖ¸ÕëΪ8×Ö½Ú + char* pComparisonPicBuff; //µ×¿â±È¶ÔͼͼƬָÕë +#else + char* pComparisonPicBuff; //µ×¿â±È¶ÔͼͼƬָÕë + BYTE byRes4[4]; +#endif + DWORD dwComparisonPicBuffLen;//³¤¶È¶ÔÓ¦pComparisonPicBuffÊý¾Ý³¤¶È +#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64¼°linux64ÏÂÖ¸ÕëΪ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))//win64¼°linux64ÏÂÖ¸ÕëΪ8×Ö½Ú + BYTE *pBufferPicture;//¶ÔÓ¦·ÖÎöͼƬÊý¾Ý»òURL +#else + BYTE *pBufferPicture;//¶ÔÓ¦·ÖÎöͼƬÊý¾Ý»òURL + BYTE byRes2[4]; +#endif + char szTaskID[64]; //ÈÎÎñID, Êý¾ÝÖÐÐÄͼƬÈÎÎñ·ÖÎö½á¹ûÉϱ¨Ð¯´ø´Ë×ֶΠ+#if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64¼°linux64ÏÂÖ¸ÕëΪ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))//win64¼°linux64ÏÂÖ¸ÕëΪ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;//¶ÔÓ¦·ÖÎöµÄ¸½¼ÓͼƬÊý¾Ý(¶ÔÓÚÈȳÉÏñ˫ͨµÀÉ豸£¬¸Ã½Úµã±íʾ·Ç±¨¾¯Í¨µÀµÄͼƬ) + #if (defined(OS_WINDOWS64) || defined(OS_POSIX64))//win64¼°linux64ÏÂÖ¸ÕëΪ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]; //ÈÎÎñid£¬strlen.max = 64,ÒµÎñƽ̨ͳһά»¤¹ÜÀí + char szPID[64]; //ͼƬid£¬strlen.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-ͼƬÊý¾Ý³¤¶ÈСÓÚ1KB£¬11-ͼƬ¸ñʽ²»·û£¨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-ÒÑ´æÔÚ¸ÃÖ¸ÎÆID£¬7-·Ç·¨Ö¸ÎÆID£¬8-¸ÃÖ¸ÎÆÄ£×éÎÞÐèÅäÖà + BYTE byFingerPrintID; //ÊÖÖ¸±àºÅ£¬ÓÐЧֵ·¶Î§Îª1-10 + BYTE byFingerType; //Ö¸ÎÆÀàÐÍ 0-ÆÕָͨÎÆ£¬1-вÆÈÖ¸ÎÆ + BYTE byRecvStatus; //Ö÷»ú´íÎó״̬£º0-³É¹¦£¬1-ÊÖÖ¸±àºÅ´íÎó£¬2-Ö¸ÎÆÀàÐÍ´íÎó£¬3-¿¨ºÅ´íÎ󣨿¨ºÅ¹æ¸ñ²»·ûºÏÉ豸ҪÇ󣩣¬4-Ö¸ÎÆδ¹ØÁª¹¤ºÅ»ò¿¨ºÅ£¨¹¤ºÅ»ò¿¨ºÅ×Ö¶ÎΪ¿Õ£©£¬5-¹¤ºÅ²»´æÔÚ£¬6-Ö¸ÎÆÊý¾Ý³¤¶ÈΪ0£¬7-¶Á¿¨Æ÷±àºÅ´íÎó£¬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]; //AppID£¬iosÉϱ¨BundleID£¬AndroidÉϱ¨°üÃû + 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; //·ÖÆÁÊý£¬Ö§³Ö1¡¢4¡¢9 + DWORD dwVoCh; //ĬÈÏÌîд1 + DWORD dwInterface; //1±íʾCVBS¡¢2±íʾHDMI¡¢3±íʾVGA¡¢4±íʾ¸¨¿ÚHDMI +}NET_DVR_AUTOTEST_VIDEO_CFG,*LPNET_DVR_AUTOTEST_VIDEO_CFG; + +//ÒôƵ²âÊԽṹÌåÈçÏ +typedef struct tagNET_DVR_AUTOTEST_AUDIO_CFG +{ + DWORD dwVoCh; //ĬÈÏÌîд2 + DWORD dwOpen; //1¿ªÆô£¬0²»¿ªÆô +}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-16kHZ£¬2-32kHZ£¬3-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]; //µÚ1µ½3¸öÔªËØ·Ö±ð±íʾ£º MP3¡¢MPEG2¡¢AAC¹ã²¥²ÎÊýµÄÅäÖ㬶ÔÓ¦ÔªËز»ÌîÔòΪĬÈϲÎÊý¡£ÆäÓà±àÂëÀàÐ͹㲥²ÎÊý²»¿ÉÅäÖà + 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_bufÄÚÊý¾ÝbyteÊý */ + 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/include/HkStreamer.h b/include/HkStreamer.h new file mode 100644 index 0000000..38a884d --- /dev/null +++ b/include/HkStreamer.h @@ -0,0 +1,38 @@ +#ifndef _HK_STREAMER_ +#define _HK_STREAMER_ + +// // #ifdef __LINUX__ +// typedef unsigned char UCHAR; +// typedef unsigned char* PBYTE; +// typedef char* LPTSTR; +// typedef unsigned short USHORT; + +// typedef unsigned long ULONG; +// typedef unsigned long unsigned long ; +// // #endif //#ifdef __LINUX__ + +typedef struct { + char sDeviceAddress[129]; + char sUserName[64]; + char sPassword[64]; +} LoginInfo, *LPLoginInfo; + +typedef struct +{ + unsigned long dwYear; //å¹´ + unsigned long dwMonth; //月 + unsigned long dwDay; //æ—¥ + unsigned long dwHour; //æ—¶ + unsigned long dwMinute; //分 + unsigned long dwSecond; //秒 +} StreamDate, *LStreamDate; +typedef struct { + unsigned long lChannel; + StreamDate start; + StreamDate end; +} StreamCon, *LPStream; + +#define HPR_OK 0 +#define HPR_ERROR -1 +int playback(LPLoginInfo loginInfo, LPStream stream); +#endif \ No newline at end of file diff --git a/include/plaympeg4.h b/include/plaympeg4.h new file mode 100644 index 0000000..7a5682a --- /dev/null +++ b/include/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 // ûÓгõʼ»¯¶ÔÓ¦¶Ë¿ÚµÄ²ÎÊý +#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; + + +// ´íÎóÂë +/********************************************* + + + ********************************************/ + + +// ¸üбê¼Ç±äÁ¿¶¨Òå + + +#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 УÕýµÄ²ÎÊý + + CYCLEPARAM stCycleParam; // ÓãÑÛͼÏñÔ²ÐIJÎÊý + + float fZoom; // PTZ ÏÔʾµÄ·¶Î§²ÎÊý + + float fWideScanOffset; // 180»òÕß360¶ÈУÕýµÄÆ«ÒÆ½Ç¶È + + 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 + //Ä£¿éÆôÓú󣬱ØÐëÉèÖÃÏàÓ¦µÄ²ÎÊý£» + //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); + +//ÉèÖòÎÊý +//먦ÆôÄ£¿éµÄ²ÎÊýÉèÖñ»ºöÂÔ +PLAYM4_API BOOL __stdcall PlayM4_VIE_SetParaConfig(LONG lPort,PLAYM4_VIE_PARACONFIG* pParaConfig); + +//»ñÈ¡¿ªÆôÄ£¿éµÄ²ÎÊý +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; //P£¨0~3600£© + DWORD dwT; //T£¨0~3600£© + DWORD dwZ; //Z£¨0~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/lib/HCNetSDKCom/libAudioIntercom.so b/lib/HCNetSDKCom/libAudioIntercom.so new file mode 100644 index 0000000000000000000000000000000000000000..49685d9b0a9e69e4875112e0b5e34df296f56db1 GIT binary patch literal 1971631 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%0D$@E;6q)rj#9A0t(fe%hwzNJA zLAa+Anapz-f`L2kZ%G%6e~z`mG~%6fh26l2Mch6_Vqu;j>Za(FXy-^R9)w$17+4c1(dMaEQJTjteDu7 zF3Kq#3cuXf*T>B$52l1}X(B=h##5Lxmdps-myQPO!q^mQf#W3Y*5Y4buJqWaMABL- zI@QvUX6z5T);jHi4*5Ysjq*F9c&)&@Jo3CI`o(bMLcb$H}mDvC5i#mh^Tz)4AUb|IvVEyh(+3aS`nsM()iIB|gQ(=nFWcQgfGN z*iL-v)I4)e&0XaYys!Z~3re-+Gg}9(vR_t$WjEbX6=b$Mj%R@!A6D7OQWh4j|OKPK> zLq#&+naDQ81>69WfX5JE4;UAU{87P30chelcgWm{CDoff0K^6-4In*nhP>iu$t%7m z4WWSlm_Ue;w01!#m^fRM^JT++5C9zrn4eJN;>1}h3V>2wpe21X&;b?#nDPi_;z@UK zFlXH~wzDT#%r6L3496@^fkm|I0+tb}?=nL4quh6&wRG;$7Ni{Kz9lJOwH znxM9#G&>x503@vhNgD-8aeFG2xp1jDo4qrk_%eibSRXh*2B z!u>|XUX96;N0RRKQwj2<1)9rU2P6yTezt8wsPdI~06XfUx8;#}y#+5rk>R7tBNIot ztsyQ(eV9@2BqU#v?|29^wAdOl2&T+dz(+pAfr(FX4cSo z_Za3!pp-Mvv)!Nx`1feW@f?YMFtps21SqU$^Sum6dX$8JhawY4yD2UKTX7;~Q9?o9 zr#oNE!g!JCk)TlSo_&zDYTl@pX@9kliTFFGB#n=QQtPQE6jLz`kSR?dQEEPNBO|wO z`WJLT0#ML$`C#D#R%pE7T*%xsD)y=(l)x#jXrm%%!m1FdJmCl@LqKig>_@X*;`B;p z>TlZPug?nh@Н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


X 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

ds;{F+V13*<^CFYR(!9! ze53;4*}Yy5qK5J?mcsNil(V)v9)q}A3?hUHIC!-QEMZz00VC zyq;bM%@Ol3hfl#Y7)Fx07#s7f|MFJKhsNbXW;H&`DYSP~(Mfu2Z8d%ANzQtmRLWsV5m_wED|@SY^-~FyqhU(TK;t-5@E&JB4nQx5SN}hIQ0F)45qo=U@_zB-)V-bWko1g& zd{}4^YP=-je*Cjk$ENP{$T&PclwL#TS*|$i+Nvv8uR~~gFw({mA(-R8B5%gmf5CF%X2)EqZ- z0NuBq9tYh=Ngv)fbicok^7+~EpYP){66v88{&x>VVXNg{2*8eHFU^Oo-z7EZnc4MK z6yHp7Yip-z+)mC1I)dHjsHZjgd(&Iy{+9Tq9wu<4rXr+omBA4n$w?IWGR;=Y4f^JO z{LnMwIy{-0oYi8{n8~>Fz#46F_Mv_$r5rS^BCh?#I$BB}VCgZt!8@7Pk~sj2N#;G> zNj6$};&H!~*5r2elV1OfFLrlpawqSOnQ4y4QLv+WL5U^>d?SXzp(>|*kEu1?Kmkq5 z1`2>8o~*?bY&_HY-D=e{v`ca?m^!P4Wd{s*kqF`#7-nP^ukW<+^kZYA=4_olpSnHF z&0McN%fN|#-@I=uU;2$1tjT^h9X>?If7s85Rx@9j1Z^ZA*37^I{)iXyes27vuP5&s z2twO3df)$2ES3X+z@)hVv>NO)onKb+!dabtScYGwyEE zT1&Y9ROt)j<4`@VB8W`f{hm0NxO-PVUO&D6Z%ck%l^~EByNTJQ?b#=5~>ox2?tkQ9I8n&Ga&n4cIA(*0~Hq9-2SSv!zJTH{d z@Z>ce_q8u(r<*1#ztR}!B2+oU%U~8&(?9WLhe0>wTRo{(O6!mH5%<MU+b)`iL=68FPv6q&%G747ah0b zP5-XG2=$OjUhxzpsH0%6eUAV*4tQfMQ}TH3^;XNz_zXV-IoswvWh+)%vp0wADX(ms zh$R4~QB=2+22e>jg<;GjH*aTk?f$4+FbVaj>9gD^#D=uCmW7^+L41+fS7t>jFynt> z>7-}{c8UZ@J893nTReOs^fU%8jej5HZrX#hX>u%mK3efOCCEt@KeJ3>_LOxR|M2v( zzFfSQ>0!eVy<22@rvpdkreNPC`5zxur$4OZt29UMghM7pmpz$slac=2X!rGxL~bBp zm~IoyN^E|0A6cX#0M3_p#&bUYt3@TcS}5^|d7^k)l#P2zdL?pAjxSTXPK3ENdLfL` z&y>dZA*G#i=Yu$w0Df8Q$vTg$K`8C!b<&5a5EyK7<5t_F5Ot}YxEubH<`V9@pO{v; z@b{I{WG_am`KDDPPJ4b9-03p1=`Wp6^U0C3XVI7G4VOGZby=&DZ=Vj0G$pF6*qd-j zvpB^qQ}!1wCHwYJP@?|Hs^qqC;__RH^BaC7LmXad6_>^nB#lb~I=XJyc0kR!Vj|-VylkyeE#pm-1xy zC+v~`<>C5!enXtGX{(`K8XRzfnwe?n{TLsj8w-|^z$IE9dP8PMBdJ z@|{*<-eaMFg+VI$d_*@5{g;6Bq3yAXHyU2hsH66@zmF%kbIf?V68-?rT8>92L?_)6 zo*qx~#+R^SUdyPS+h&;2uYyIerTB4(7Gr6h;PMG{&{?~PR?<(bKsIN!!%-*D&qjg7=(pH! z8Z~VNwctXDP_?>F%C%A-03V~yFGQrU0c6{|jb+0v?90+K;Lhj@_iMP_35j}O%@x|=wzj?CkKVT0mJFfOQx12?HeTjcwAir zwC?kH6Kcj~FE`oYlgYnmT>k$I^1pNS{F3Y*zxWP`#R^l)GP=g>Yi6kK;R*aA@Q{fN z=el>+llR{B44GE_dW2u9C#HHjGTY5Jt-7$cx3;9sIxgwhvx!?7low zgQ-Q?F&M_D9?}lhs{HQv$~M$8hb$@A`J5| z#aTVYJQO*ri_Jr^v-)0qOxO!boYkw$!!&30BJ*jwv-%C{K?`;9PSF#)8jh(?HCM;W zc49PCZ`sue(aC_nbFQDFkg71jLoW+2%t(ixWfEH$14w>jmAyA&4%t=q8^Qi9Q}UkW ztsF4**Rwn>VHAH7Tg3Smw}%lx)JvGMP`UzlR=M9?X3}x`O1|`hyL4GH3f5Qn7J;gV zFMmKli?9>bs6K0@?lWUh|HA0yNkN7$^T`a^+|6EvzEAxlA}SHKqlg4Hd|#sPwyDTk z|F&%=gfO5ZGEYBFj~4Zhz(Op_wi4v!eF@bs;wFdSo~c_9LhxGOmA+6^ZUL{l2(8~7 zW^u#1_eK^E2(Y-(Sy^T}&3;7G>wy#8`_&XDtTvHaNx^Q7+s|@xliH3wJcfZ)i{BRV zFe{9c%`9OqG~uYZ&g5<%s;Z( zt^!|#K|>(_P__N4;#r~zZm;guv;eGl*={GP97$YVwfq|-e2w5fBcjnS?i6g4Eoy`= zr&%4zd;Nm*NAJ;vJma=%k6v&E&W%Na3BA>7IRh!F^MG2p{DJZrh=vM)e#16#0gK}9 z>a`MVxX!X!jJ&0I^z33kTW!Cr+o25%FphtQ%>v4cA-3IR$rnQU((8Ze;}<>Dmf}tx zuz}&}KAynR!6#JK6H(IKlHq+O-wM7uZY6+qe)Jaoa#C9CrN1Y_hzeTsykGA!kSI+4 zMIaTe8DbHzod+V16|Zk>p)r9$R_TrL!{1{B#|^Vn#V&{X?#~Gf=aVQfuWP zp7t`fn~VrCW1V0?+)XVaSDeVHpE-p7%a2rskTmAkN_`V5=%m!~h_fK8;?bUz&`*B= zWg9=%3Xxn~$K;vb5)m|1KiP3-0{jYh8Su7Jr{L?k%~!oRs(AyHljP#nD@=hY5vQT> zp@Hg~^PNXFQ#F@c!a}| z1(wa1&>_~^VdtJLR5koeYNuO%L*oY}i(SY%#n;LFBF{BaBxinM>50-lxBRN+rNxO> z4h2?Q6(r;GdacDPeJBI@&y(n++NsY@Z4tm~4LF>ZnBHvj1;$=O+If~o)URbni8yzK zayH&KNP5GEWVQbi zPpD=z7Rc)c1x4Am6t7UZ&<=R@JF03&bb^{8F>qyk@hPou={Eh!3{#WM8H)6Us`6?dS|4Gz zO(s=!s3*A)nCj0cPxT~)jOG<+R&g}IEwbu?;I_Rgg5gw`$67ETA9TyBEW@ftw*E7E zmIPfsd0}Mub@=N@KQT0qWqvO#mE6vGV6$e?eOMKxFC$8A@?q_~**(cs{OGSIxn}ff z+2~UXPfP}1TSwDY_-S=L$$vMAJcw@LVuEPN>L6QFrh!{d^jU=0(s)@IciYX4MA~8#^&VKW& zxcG^O_9eHh>f!=woPtZD_GM)j(k-lB{E{Zv-1uDW&b%nSqR?BM8<~u&-RLh70l&}M z`W5si66_6TTDk@&Vr3D|Kkxr>_BQZQR%hOSCK*Dokvp}iVoN33X=PTrB^95N6}!1% z1|~WYtWfE;yUT8TQfPg4sV0@yn3v8(a_=xe7p%0~-L>6z*WGp(TPz?#k_nOoq?!-~ zv{r*6%n*fuLSBUA|NWhNCW+d8{@o`ZnEUO#pX*%bI@hb37S2VJh}w`_LgRvj`6Kfd{+^;&iv^99yf9rFuxu}gy9y2A!NgPTj`dn%GFvU9MnZ`5Xx>S3(Y ze0^0^PaajY#N7#$aZTJF4Q;WSqmwjDPNPszFjgRX2laBZ<^m;bJI|U`Vzxj(WE%5b zCG>nAM9<)BCyTfUlqKlyy|G`5jtFfjkI!3_DjC3rn2EAMPq>ww#xZom4s9OLZ{lz(#%SIkEzgG7!_t)!Icy%q!eMRyE*R>{t3s| z`Fbfvn7N3Ard{!M%YMSQQ2gO6*zWo?jSy%cZsd-nIY`@ek1-1yX~6ON!f|(ulG%tx zb@up=v|OAyt>0~iFRS{0r;)f7UB||S=vT8R-u_z*lrmM1XX-1ppS+u9vE!aiISdeM z-|VER#Ds_RID|93{~6y9|If0?8H#&L(-`rIpn8*h=rUIf@3zS#LIOY*7J_La3*nm9 z_bh}SAAs^5l1M-1QA&;dTAPU!SZ4z>dPC5hGg83zfKO1VK%$4>y-*GTH!n1Fn;@0& z>aREA=D^THR`gB)1}1QZe3H=rF^Yn2D%aFx$SLTi>rSwY(sUDkT@ZXT{vv>4|0n_| z5c`=(QB6izLQpk`9kce2)Ausoat)}={zS``E|LxH=G=7Cj1g6mKxmn^Wa`c|iC#YL zHZ3SvNPh1Pcdqu!6_~a4r-oP+82FFIOgqsjx2@Zs_B5(}F5smQOpm6A3qy#KiH#!$ ziLtMkvj_!u8s|CZ9PS=QQPy+reeE2qK5De_%ot{xn;Ejq5N4Xs(49Q)wsZz9jqK4; z0gCI(tf$z++WOt5d3s!GH1%zU)|{tOXWquD;sWg~Bjg(@`o$Q*G2d9>G)J#|lT8oN zJlx&DlvW}UoU)p~uZ_^tDmRLuhIYa96f6{mtMX#&h0^*G=&ZAII>QDU0qE}JEWio` zqC=3h)fz1ilg}WoiOt1qUsNm9$8Qm-&3(-U*VTmFaADJhQ+mDrOB5G~J#1Dy!E6vFqSt4~ z=j6?g&-*a2B^N3S{#JzW67 zuIcP16vwpvJ%zXhWKw&znA|{qKz5UL3#mGC=wx!4evwzmCR2Ufyl) zo+qX5+8b-={$=frH`wO=aZ`eaw3|sw(~v2#2Njnyc;f6G6}Ww4LqKtCcZIHvOFUAV)o9zL&|af}XsZ{2{qaW30w1&MvV{gNzX; zTS#$YqX(Ufh}d(s(0PPOGUoNzo`Zx@NR`3l3dQ4V%(C0GQDrkJ+80o-GyJ!xuZUie zE-&O9&KwZcs+sOg-b?~O4uAUe|Krq6TVa2SJJ4Y$+@kca*A6y2_NTqmylQ_H7RiOPu-FM zWtZODwwY?-A@q?-98KYVHHh1v>J@*`Dh9Em;852L$ov}*yju{JaH*v=PFnxP#d(@0R zv1rWbLj!2gnf`*1_vZFHx!Th?on|(%+^D{GV(A}4>cwW$2~nrSzTYI>0x*Jp+FB8(*@uJ zhoLhMUSIN;f9{egpUtJw1_7JJuaIy?$+Uri5}{`C9c{{Og5BnALgeTPs88x1Xh%3s zs>|wH^5qY?nO@SYTYIXD?8t=~cI0$XFsGUznpM8Lt@slZh`mCt75yisD*!L`ZfpI0 zG>exWYrUVB42OVC)ql)=)aU?rf~hp@{vK#_+6boH#R5@k!cW`)>PFed<(5CChT>i% zk7hRBpaqkajbB=R2=ZZCQ9HF^_%~rs)=vFc;Vvlew>SlctgSB~zY8Va;>e8pg&|;T z7xMLd@u3zPR8LTz&0gC1ByFoBdAkVp&@DV<)lJ38<*~dF71iU9^*LwVW;2ECg{ThK z?Gs?hc_IQ6@qZCN%!7jjeIXQ>!Jcqyn<9D-o=kq(r}22q z&@lY2R}lAvZv}7kWwrao;MO(neUaYRyY~jSHo5l(w{GO#THB^l;Iyns{_`2OL+(~) zR)AT?!UtC4AZgvDeAK;TDd&-M;!?&hINyYP&olo*zQ5y&zM_Us-mZml6*^Xh?1F(yYdKG zU7C#vI!VhO4sX;$(Pl;0ObwK{W6SA*k3z%(5+QkkMh2N1@Ngc~vq9(vMA8V|fJhpl z8xTn&bb*KvIz`rSdy7EMTC332Avk<%oVMiG-xAPdwv#H~$_YSoFX>#M`3Lt7pm~tH zi9qv*;{SC9Mw()RrEz-F6;`rbe^dl=@z&?K#M~CxbI^Y-Zj3*%Kwp#nr_Q4;sfF7S zk=Rv#g7kW>V()B;MWe#?PULygaMBR2ZHn}<%ft5!itnjV#F6CHatxlEx(QxP+8iu( z)fgO&n~SA}%^a)vtTCIiluUoe+n>q*XND&!IGm9G7W49b`HOfdk<$*?Ebl+){8TKs z4_Jvr^>%x1)8x!F?ff|XQ_nkTnHX+ZhImqU{@%=2s1I&t5W`qbLp)@19*5oW{-*rC zcXw*QKG3`y%`irU6FB31+dbBOkEfH$xw^K(L~IEedw4 zxED8BKVAD62POmq0pARMt9;ksmVT$2C_f78UjWRwF$xlOA3_zun8bh&V4S}EAGukP z)7h>N0fPMpmUd>@RV(~)nbo}1ca3drM`YzDiBG!zQ7Hhu3e0zvwvObKqF|b=P%c$W zsH=~DnIbdgMNUjkF63imk5+=Gb~cKC+y7Zc3KtfTe$FJ5FbtE8x<8>(;tMfRX!n#f zDns2%p;+Te76whAAtW-jQq4bWa5AM}50$)`V)}Maxr=YzQ9;@6M#h>h z27K4xeSNX7?ugu=yKcc8> zraIFxW-s~IBuiaowvqsCa9%YZo1wn4k_-7}CR;;$(}cn!r@cwPGXBJ5EKLJmFPYGA zoa2kd%^BKxwVP1G=o|MNr5hn@F1eO3F$0Y-=s(X0uenigwg6SdsQAnbMONp|?}Bm19OdgXFfoh=kU^O=$38rTQ;s%XIBJKEL~~6F%?I z=WkL7A3mO$4R;azNT2W&IGX(K@$-`R;jgsZdDbXf2b_J0OWr%3B%B{2@1U%@5>0PT zFmvHf%#%yAA~8>9N!nYg#_1-Mxml9AS+1MfKe8i(YYc+o$jl}$nQ4c;#!b{vuPc8} zl8VGf6(y%V6L2pw?%U=VCsI-Zs#ij*d0w_cgWy@-c6LA1^=*d6zs_8(=9+BJgm2HM zzv-%P6Z0KSf74apawg<^IsHvn_!Rgy?5}P@#iy$l`sgilV6)cG1<@is|M#Eg5}xy+ zqB@G%o@Z@e;=#0I1r9E^ugt-1LkO92d3<+n!FRwZl%SG3)D4U+T)Y&Uw>qb0wU=1f z>-O{7shLwMbIMR;q^SCJR5ZrY)l`+{)Kmp<>~^rL#wE&k#b7 zs)cqWi)bR<^JaI~%=Yp>kN-ISYR8G^NNM%S)aNI_r-?_9`j&YEUT~X`x<$YjX)P^d z9K*yfY`g@>si|`{I`Ny%1C{cj`V{HvWUv&UXXe}P9xksqv^buBD4cWo?9xkYic2`U}goDSG<+HAEd@47l43JQh19-U?H#s zoeS-|*+a=M_i7CHF>h~F zACW|&Nb6j9-spR98kCz)yt{=sMImV3ovp6G5~}@nIR2UHpRjpE&UiqdItPVf`M&uO zrNvGgQo7!Om)M1x2`_&8Yhk%|2Ps3SYz^jk(G1Dd9 zn_jhhk|-FnWsek8|6tr6fRhNKaQUc3C3+d)B~6dn;)H;~Ugdr+O`oO1Mp5!rL>Mwq ze|qHv{X&*c>Q&LyuHMjHMNbycb4H-|;h4D||2)Jh&&koBnd_V0Uz=F%ul!yXgB4^RGo>P)$<>Qx9oR3H<&)-?HbX~9Y_X-Q|*RhCA5AvD0CbXZ%giE1&k&OaRoTPLqs^?NwU~QkuE0#=_bD$fgJF3O| ze#fHOyva&^k~-DD#YM%3oX!Da&ZGRdXl87YZ{V!LaU}-2@h$jBo98T}GVs#12RvN^ zU7r5E@8ka~@CJFDv&Dz(o}@j{Zw&VthM7b*4tbpRfx{&SuHNrCeC=6JCj~IP`Wur+ z#1_r;ccXsgU+inVQ2pW9T}A!_&Rs>RXqsN}pTjAzUfgG1WRZX>sqfC>-x69V$p&ft z{oZ>&WcvwzM72Jr%UM*E43gS8`jx#K)jp^DPA18Ri&y-;_nhj>rQf#Gs-qgt;>9?U zKgW{9y{Bw{f`XVSA4L@<3%6r;dNRb64{r449X5Plw;(T1{mh8Xps&MQorke1} zbYOA5gWBWv!Yg`S12XI>U6H|Qwa@$e9gM$-;#p|U2|cHJdY!upJoj?~^#rb!OSn>2 z_}#uFD(=RF#g5`dhEi#-}`#1LPX(Y7qTjYOQ zKH_^$+fYYPXvt{|2Bw-$J1+O6U&K00YJ5rMYR%g{ZzKf|fhoz7efI|be~cpPsU|DA zS7T$!JeDr9SYw{-OPF=hu|NW4=!?Ezj!!n@4(Y>dEBXY#EGC;4C5G}ETi1LhcGq-9 zHb1s_Hl9TTH!sSwB5O&+uoAB~;OS(Z7BqRYox7$xi)RBiC}DoZZb+y&YaN7FzOvFd3kJ_A$ zo-=4ARa|g}YVQfh1D_jZ+*r|b@u^EdYI6_eS@=1k>upUibY__E|GdV;z<+vNF8@Q@ zkvXrbOuWE>t(lJhz#rS?74mf`~yVehu%4f^c+R6)h4g^cu?tO;ThVmO7Pgr+^IzHTU0=!q~xog^#cIW;A z!DDteSt64UY9>3NnmK2NF^svjLoQTK`+d1Eqksh^?9b7{i#coTAICfcP{ z(Nr}##^FEqfXXwW7jtgD;m-Wz%{}MUmD)YA1^Ij_>AEjq54;>KdGo;;vD>D55+w)j zztTV%gU2SN`g=|QW!IiZ{omgf%K1oX9%ip&)u-Vgopi#7G#uPj7H_C$tK%3S|K-d} z+$_U?j=i+ZIk+tB{3dNcEgPEHhCFe}ILn80m|YTk#7O#FB?leszv?;QX~W-ong3}L zEyrn0sN#{MoJ!c?9S>Jf)zsuFzx-g!(}V-b^91z@*MHE_7#dk%&?c&V8)H|!Zr?x6Wd z>gJJJ1_)o380{jdVlib6#j(x`qqgGA@<9lDlAUVSQkni#=_jowNpGA)h}hyZ(3U(e z9?15@HmOh=w<39{D=W)P49W~U=TW+~xSvL?cyb2!Hme!t1JqST+w(Axuh$ z3?GQkpYC*Mk<92hY3+HIUH|M1xL9~7WL09Vf|f+Z1%;`z2ZnIzK-k!hGH`Y%kt~oV zK3-TtiIJkji5&kxsNx8px+aPs=y}&SnULgR{3q$0v;^}l*DhkS z`I;VN#uzia6B6A4Dqdf*9j0deQ{pUURb3V{!Vbuv1!Wz<8eZX;wK1wIe^^3@^C%Ue zU+Rk4?x*!gOB$YjpCy+$A6hM&q*{dKm%4?Sma@g3Qmbg31Se(j>Y8xelq0M*8|Ct6 z4_+K4dJ;jM61|gRPYntR7&KlK#h#i=)_AnwMj7{P-y~@Z@2AC{5~tB{l6fp>QP_@E zhvpz@!0S1UFna2%4*dgi05kq>I1lXK2;~vqq(0rEEW|pEMM`<15U?f#r15#^iyZR? zJu>UXBT$nO^rSunOl)NCcG3CzW*+JWUhEm}8G)&M1(M>)CH>Ah!gKVzmQv)llK$E$ z&N&_w{0kpc=0kzDnz6lB<0bpbQP;jw#+7g5JL@Rr2V(zb27z_ELX5g4TF>{$lrjYF zwbq{jR$#a6q7|N4VZ<)s2)_6boDw;ju6rvGyJ6>b$P(m4ZT)%!a$N!TTMRugIw1NZ zxHtX_BW4v5B(BYjU~v~Dp+VTNyKv3V0!FOW%85V$)LN(8&eM3C?OW;YS5CJxWcLi& z4MX3c{GIvTPR<;}r*uxk z@4@_m#Yqf}ZUCW`rgVi8rwYOq=gJA8QY97`Q% zrj@>AxOSE^*q6%CV`f^?9t$QgDaPmz1E77o#-8Pw5$g<@8?nAap-J^wcimlXNfUEaHp6pK;{;u@a4*!H$!Yng!_y=l11VW9(T-qdb$_H z3V(qbHhV*I(K!a(O^`0sj#nEWL(q*frI@o&n@RkhAj#GWP)qvj_5dI9F%Tk*AguO^ z=d~?ddgeS%y!vUN{_KvmVJbDZv9(LNee$v+{~|4ts8nEN2oh4`ONHrI%VX@Hf6X;= zIKXg*;}t}TBS~3&>o0^M;;6Zi2tb`1k|N%Tk+vG?9@$Wk-Kkn*9 zg`H#CHPQTjL}-ayJl8&=vEvq1ibvEV$F*@QO}+#dNM)`ra~?6(a=(WAC)5N)j`ehh z$KB~iTA;_Ld8Dm#Q(E$3x`kwCLmYtnYC`dEECB^+P-GIKg;4H5oG7R--27 z+Y$}#Mp~B{c|f*Q8if^I6s__MJ|ltw^r~}81s{_f=^aWn`$mO<67=YoEu%zj=dLEu z18_Qp&yO=)tSuKAuyq^M0D1C7vxk?jYL!lYSpx%9aD5qjv3B+Rv0Xj>o$2C~w6l@- zoG@A80Tj3TyQ-$7QCw&g^4@IwLL&(UZ)?>qPY$6k!nKDg+QB7l+UUa-o#2v0Sz-`e z(wh_Tw?h-~@vytq3zvM@8R{8CX$XvRduQreokoU!&(2Z!o}I(#P7T0VWbg1g=laf= zZKE$azGJxZ9SL`A$U$_T%$C8a09>gZBHvnn8{<@l9w`K@3H|IsFq1{+WV?jz8iU)G(?~*5YBiDVW8- z1NK*NkKgu(xcU9{%6rW5+o!R!(@HN`GSDC8v`x z3ivjwoRpPkRR3C9*~6dLy3Z^YgB%&YvH3;~_WHg0ZHb6HHE2Y7 zfLp*gKfKz7QBS9{ATN0of0aL+%UtD#H$(&RIl&kr7RU+9=d8GS!7@Dwln zV)JhRQF!U)=ZJxnx`BuB8QK_fMs~>=Z|Q}0)azcPL|4D+HTMqvs?+M)|I7t*Y`y#d znW%Cd4+XfTNi5|K#5Eo)q-Mmw?HL$t++RCGLDJm*gz-=c2z8WnSI&2KFFXhy!6n5* z@|)A~&@39LzmA7yb63A+Hg`+SJM29kT0VAnH+Paqpd#Aw&bKY(O$uOy!@EcB-o#rZIrlDPnF6w}r`f7NEN#?hA0Ay7w4}aAV`>&Uz}W`i`|{ z;7ReS#N9d@8Oo}@DRQ#zmouC}4vGG=obirLHo&+|#ZIdKGQa7~#xv;Ygni_$&zc*1 zp4&A;<(#bZpHuGV60c3hOU027<~CM72vR2k4XH;%5kykWFfTL>MgtDW>VUqlBRAQ(;zO^&=)*VEfDI?CAB zeZIL~9jKs!&PxAbAXK}espX4gH|x|hOxF&C$Z0yJ3|UX=w-V7!%YJ<$7Qm|gZib-( z&jH1upUg>G;+_fEi1vYxIo})qG&(=wf>`@tFZ&?-P%)cgy9ivtoq?a$p1 zCVVI{qIw~^k|MJpAPo;>FviP}hqw;|xTgDDs3FmL71=m7?G%C53Lnr-t~h-)StH~6 z3_F(Q5^pb=J@8Vc^F5Qv1Zy3vegl=A8efvgdHcY9l3wa08t&+q(rv4L1@0+>A zvC7pM?@@6@z_NrWQ_@zO&Dth*UI6JJpWlSzk&b~E@O7%iZj3x5puh;V8$I&E7XVZ- zLXL+#5L}8@265Y^G6|ShDrXkGIXY52ioM-Re46f9bCI9bBi4GM=yZ(KRu(iaY>rE` zk0vWBK4^0hpwq;inmr*d>Sg5pI_eTTzC%dVw_(Fyz=ALATTc!gFcKiuM7uj5^t?=r zRL#&vBG|oz-CU`ccR>?3^{Bafo8&L@@$6U>JOUgK1f9dYzc4Z69q$z2IDrg|_^Pyw zOv-HHq7v|QBohoZK%Y0$w0m>e)!# zwOoPup&4r2Mw)L|rL|K4JrRtXeC zE8HlmYS3efqKcEn%d%<6$XM*s@i3|{Oen-E-={p3QRREA!NfmR=u>9IfO(F$EPoZ z{z4)@x;XCh)P7m(lG)uH6#C$1PC)odQFFUXI_lmaTB$duA)&!<7V9c8l+UTebD&{Z zPqm+7467zVp0^U~w5$4GCs3^>C%$M~x;AQ=M@vV zKQVGSr={)@|Jn4?xXN8wp^gqsMNM9%?LQ0aOnft_5Y|7@c!n6yX8V^<99a}pcA|_|8Y~)RVTdU>!;y$2? z*{0|eUM7HJ?Q7l;L5~FrW|ziGa^2L~fM=-j(3(k3H^;E14cm3xkAE~!n~O^gd>YSp z7OsIDD9vhLt558>eZ3QRXasv5=D2M*@lq~G6t{K{^_<9zZ@h3}&ub+|?)7^5{YSb_ z!^r#gn-h;5@eKx6TlTL?lyJl#7JTJrel0N)*^tUAH6+Hf#7cx!$q1+%&sh9C(K}W75HrN$s|1nM z=8D`Yr5{HsA)=5G`0-~O4=H+Kg=c@yXeCIf9%x#1WF^ZaF>F;fwEYWqCFnOFF;A!V z5>RpMsm=cx^EA8*7JQb8hB!)=jz<}fS_Pv!G2VSI-lYKwP zj90@+IKCXrMS0gwfft#bh5WcYFs2tF_@l3a3%l)=`>Q%DA1Ow?|gB$pn3p zdBH$VT2>?w$UMiJK7rzpOMro9lxxUxIuRYW8I0P{rm`D`M^wZ5P1NxAUhr3C<7o8- z48yK&jr5LGerB}JjMu=czo+^Gs(!5K%7(s6 z$8SB`(<^#8ertcvNdqf#abKGCB=mF^tr&C#wBtnWp7v#XOoRJpRQmVb2||jOzs|vg zNTT>(A`{94=X>7mxfI`%RnHWS79_>8Ku41J?mK$0Jb`KDoZe#XcndZ-N8-p{D2dL* zyV*cv9ADK($U;D0!eDNFHgU;{-vftb#{oSIS)P>t85Q$e${-Vt?C6a|fQ8>R#6Me& zf>lE7h>KwQmH#kp0xG~Ky*d)qTjhzd&!t%dFPiqg-t$K4HuAzhDXU0~(d&^nmxF#g z@(`)7vN#N`;vI)1!S6ulxbGD0!`=cA#rRUrNJ^NH`fX@>YmOC;eQBX zCY#8n>%&e*sG+TQD|Y;i|I1Fw|Fy|-dSJ|E8D;`qED;0H2Z^=l9$K}(6LnOV<}c9+95E$kptYXnD^ z<;3vlVRt!XC*Cap+C=ugVl#D%;)Q<}boTN|K-iJ~{HlO)QQW&6vKE&aZIqM<#=N(O zI5E7ppjXLt1hp6y00i*Vu41jNBa7nG|4hXMV?colCQ8v1!pO1L*I?DXge2MA5`_jAHCO3Fkc zZiaj#`nBY)b3R1NZfDmn^fH=@Z0B8T2Z(eeJ>svh-0=nSm+u{2#BW<)%1l$he}oQ} zlH0apHRYT--#;0zko>SSLcwN@4!bjPPID}5GVgxdGaPi5mTGL!TTkMclz9+uft6u2 zb?Kz~Co;;%maWbe0r;h^;))Io3)LkPow07Vk&pG--B4-BN<$S0S{27Pb}%thR8>i~9LJZC=}X6BGi@%P$QgE=pV!$m~;LH|)L5L)jpI~T9|{tCWc{sI9T3D5EWh1=sl`i<5cEO5@LZrI=waGjp+l|SW&eKVb##>XozsUcCfCQIAK;8Y|X#WV~u`oVsmF*A_pzzPiJ%a(yDckvQIEO~5 zqt=GMQ70o$FUO}pzJBdLH@x1l4$nnE1es>qJx-sq$1E2fHkcP*{OTiXT{zbrgxFQJ zAL9_=>M`LsD&c|2hpOtW@#zb|yWNT5Y$$e?RvrUb+C4;mR6mhw-5v`+m)8wP2+d<5 z`S`5wks_}w_U+js>t{K1Q~dx2PoNj?oh{_ z-)ZB&#Bl7_hyZxD1JSefyt`QEd=mAOJ-Mnd2pkp*(J1^c-b- z>0?eH<}Zu%5pTWa3R|~r*#=+kc*_AHjT9g|(tsM=${m}^MaKI`X7w|&^z|YGMfc9J z;On^d`bV5%d|^@k))&CRKo>ZdrGGE{h!vi$vXY~=gZJcw8!zDl>wd!Gn8CrmVYL1! zjtbXEt!~I$-On;Y4=%SO8?YSJVW*yf$l@H*drK>vKuksyTVv9lr>@Vc>UBL$PoTHQ z@Q31rqy66S<}?8J?$B5OuBcC1LhwL`3vhALtFpNs<6?1rjcXp)*SSvSdYr45>l<7@ z#8ns}pX*7kIb4%mv$>|YUd~kxS1#k)$8{3dH@W6=eT(Z9t`c@k<$8uIo`{Th4%L4) z{rwzQrGJ~N%72He>Oap_5qEMK})6!HSo&HBYE}$bZ1b6*u0z>+`DqmmUA& zNLl>8i?_wSk13##WcL-Ji?JnxAIRlF+mr}`nArVJ?)d`#pPB}hMfMV6{6N@AR!v30 z@@MGT8{XiP%%NvgW$f!TiqsM8l8jIwVL+yB@E4;}3Hv6QGWA>|sv3uUhXD30c zvEmY~I0CPNwsQuMNy-8zuq{u5X?3FN3vTvzc6*n=!$++-Mk>? z-L@dMbelJIuR0O%c_%a;E!W2V_|s5pYwylXL#CJ5)7SHX1Bf~szipJWK>TiBY2Osh zi-UUp>0oSW1gi6%dM}}R0-n?UBhIjYVBjVHIom0WYDWrHbc>iPNjNo|OY8QdOS@ic z$P{EZU&bw3K6cAUUA8-3@E48UmK`gM+Ohm7(z@bqe|O2V4^EN^$FnN4WN%$>Vg#8n z94hQ7%<=xyz){19ic$Dsw5M%r@j(0`9l{~OoL3UPQ&H_2;!ufG{awwY;$1+l5K&s|y^M0|!!U)D zQ~&)uv#9db&)-{qY5{OEj)J8#@J?ED15V%5^;YxL3D^?Hl$6&pKO1+xTl=L{l5;QC zEVb8X{PBWHauN7dI)!Yb<=N;%m>KM@JAvtNzRy*Wm7U;<=!MTCI6F_>{ z_+!!r(Cu-$iQhh88Bc0O74TzZD!Mu0`&exjn{NvQN9 zQ1*Q;cpKFpPr~JX4QXN2!G^(%#wx?jqxU|IE>`2v7#?&x)~#TsL$PYO7_TO&i$fXH zISx(NKw;Mll=k)4eyDO44bSflqdw%=&7b(qUxL)nWyCxW}kMNjRV;zNc5yOB@xKElt^k7gq^ z`bc)rGt9UJ(5?X=bUOWXMf~SL$%*Rc;eA)@EHgFe9I#rDLfC%UdpwxSX)EAh3(;yh zZ8U;w<3X;7{63DQsMRR^?plH+4}$9$CjRFb)kd|Z(#fg)tokwnxXLLl&6z}V@^d`M zf0yPES<))+W|ig`Ihebt0PSkal?ZacHJuc8dmF%*OG6;**4zRQ$iaPV2x&oDHcR1` z!@GHgeqKrG3$p#4R?CMFx2QpFsAu1DC&qJ0qBZ=PX4a3-pRCH}m=6 zEOpKJL@h1pq~j0p%vM{oU&DnH$1B@2&B`10%=?^J+t7p5G$bqJo>P zmUCi(iP}6O7rsQe=pON$LjsUj^H+q03pvlioougkW>?xdpJRw_OnuGhq%dwQeU&p? zR;W0uP}aB;gc;sF6s~v?9*sx*L}(>%PQcmQ)d!^$iv8I% zJ92C?1pa=2D}SvkqY7RNZ(!>I+e2`?{R>@N*u8dZ(%afM$!6K}u`SS)zmO7?+lCpN z$W|Gs^ifQBZFV?z>$F8U@9=m6O@W0TCUw3*jeWJ#+VE|lSI#QUcv&sEe7!xJJ&LVR zi_lP0pwnfj+*ylTG4Uh@L*xECv4K9|9AH00UC_OvMX2BwyM#C}ICS;R7q_tl0KUoY zNN5>cD&B9b?rkU^DtSujyOSJ~4R89@C8Ri<0O=yX;tbn?Fj#v6l|3Ht6* zo-_K34R3B?p~cqbBSDHi5|xOFMN=f+!`(X7&Xu<%rizz=Gq=A>x@`~4T^buABunWD6wwWR|rj0vjLPjUsir#@;HL|?5>d3CF zQt;vpn^ambwnHWhEiJ$oT4$9+zEZW?dP0-3$mDKBNwKU;(+acQgOyq{zoq9PsCtb; z5bcyW(LT7v{uU3Scw2ClSC%CIiIW{3(UdIU4D^iVxasg(spQGO{jD+FEvslp%DRFw zL60yA@m$zywh@psYWeQ)W>TmSE6ew;G#1>lDRwGSQ;4m~hf_F%SZr_^YhCNKOegFQI;mIO_5IC={o{>V7MiJ7NJYrW=4hjsqX zq{a8(yh{c%&7ho7BVlx9n6d_%Z-x|6jINV(ns7Q2qcfc0;x_*c0gy*wkD7ognw-|qs;;d1AADOHQPOGRtkmK@4;3Yj<@le2u;FEgD)O}9 zmbmG9;1J{W)}GTMGn{3>uV4 zl}dvLg~tBf0skA_mz-3xs7GJKn5sB$^!HJNVnZDW<&Zl0lYf>Uw@fSSxObLh$8+Wb zF18wAln5y0r9&bxjW)WQ9LjEWFt&C!m19kyHi+Q`(Q9C>aK6Z-xia)}n@kln-s?+t z(;OaFi>Bpgx35*u(UlnVs^a`oX1d7)20w@andU4tYUW(tE9~t^1Ywh)3`67pqd1W$9aMR+azO}Z@+B4{C z@eR!I523~9CUJ)FZ>v-I(A5_ry-=GCCtPB)Rm5gPyGRxsVN^T|tQh3sdA57l$RUkX z&EL)8C957=qCv=-^~p)5cGC&7skU?mt&U{S{bdS}cp+ux-t(Rx|^f@C`u`X(c6JB59wStfzoy2ufjfa#YoXzk5 z=)N@H4IS}x-5yiqGK#c!-Uy$_m|mHPa2LYPzB1=kLmw5lK1r9y?T=$_$+0I)T@u#L zC_a)nHN$hnImc)eqvJ5cbGT%{3XhZwJvfPz55dXPHSTQ~y1#i8MZ<3OtMLN6G|Xiy z0E@4z;uV*UAkvuIbQI+#_Jr4_@#C*2_GN$kmyVrvF&GaT2l%dx0`=070&re*8r4~Q zM#iSPhqLIOPBWEQXrYyu@`%>JkXn`%OsFL7#(wgDIHjp8t){(zb!2G9PT4)yd3#{` zj4cglq7$tAY00nU8i@{!a(6B0eOvMl-fDL1DFJZ)e;Nn;=v0OpE`64zNrVK*>Wn?t z7RF!#n_!IIF^k2llHv=g*T?Dbfft);MZH=7JtHjqc58hIC}H8RZ{RBatCKLj^mnGD ziWo-UK877w8eqYmD~ekaC%k}JZOvGHz>g*_o}X)!mJ-94O=P&>KUZuP_AuBu<-=)U zW5cU-cHg#+2K@n<1Z_&5Pcfwq5ocAi`Z33%alERb+=6Yz*(TkSdo3yy$TVQ!OTHv^k;u8`{D)mrnh zwW0tqB{0+lP4hyCpbOCtu=2>&pMWJ;U%iA~ylYOjl=FyZ4Qh|sk!H)dWs8#k)o zM(o>J-3No^5t;h6NS7&|FSfLrJ@3=nL=BB<2ypy{`8)AhFLPvA$MfU)aiv613C&6q zP^LB{SK8JAk~ZsySDO#4!}?(qS_|{6=wWJRB4$rF`{o=j_-u@=oy!d;evZ7DKeKx2 zWo4z?HO|06r1k!;_rK;$F$nkJ{jXc$G3b0Ogw;J5a3a4@m9VBJzB_2%wZ7-wZr+99 zB}YcEVE9{BgYB4h*^X&0Tn^_EH8}N6*mB~>v5{`r#eE4HRoFPC{!91$*1G>3`^i?bu!j|>v_s=-7TZs=YHO!sWb?;bt&_B| zq<#X>vz94+fhnZ!M7jlizavX)svGaDrs%%kIA@u=_nVRiCYX};^rrUU#MSH*I#6iV zSz$Bnc0(FthagH>e@x|MG&{q-ds4@7aEf!e^+7&4gB0-{ioi(CGA3e>lpg~LfuFlv zItH~UxMn^j?uH?_-z8*%Qs$~dWV^~xFm^+)=ovQnhE~xsU>(HnWfih^M^QM-n}sq3 z&?hVS;er582QufHRjt1{2o`_{zwt)FTRfVj6#@ar8NJNeTbAf6NHsyj@B9r1poy!h zalfmT>g=ukQn=y>EU{ML5w_9+wBT8M12s?8AR?irq`Ua2{?vq(7ebQhKV?>&v-v5l zH#xE`8NyCAy`~t_R|+qoZSd5qiVWlpwGPMBoP|70Mx!x*F@sF}&DSga7t5r{qImm{8qlE7X0sD$Z;*HBd>#T$4L;hVWmr^VLU!v6Yx@@ovgd|$ z>*Cnbj07+L4iq=Pw=@@4T>h=Djcel}Kqeg9;041tv3zQCVtM>p>z_wEQNes4rEoiT zCCu2SH<_RS8&DWl0-k}@B#;XN=yKzi zrF!8CcPJFfu#4{lN746v!dFCN$`U6~fn%2{_YCOWY~F?A-?~gmB~VmMI;GRM0$tU? zE^f*_qtuqi9Y{jstQ@7f#vd$F>JaxVLcN~Gt+vJxIV9f!sX2$GZKfIRh)iQx^+y~_ zK+8^?Kt8_xJJ;A#+U@#L9LS!=kEfjUw^Gc)*mS?{cXF@)Sz%8q5SwC{B5<0J#3Z1s zo%WsJ!5L6pP8%dPOQPq5a~6CK`zc{;Ra;9y$t30MZ0;Pb+r)D zWwq9q(g5fxYr`lfSlj8BUJZw;Xg`k`P;zaIIR`N{2`tURbnhq)#5hMu1lYxgkRzgI z2T5V@R;a@J2=##&V6Z#Uzwg}#aWY>#W>3jOS`l@>iG`sS{!N!9!uDAq!==9J)n7e!t4a2Vva**nqZxqLk)rnl<-IjK`tK6YBPslf{0(g`9%TaS@+iLt!V8myOBk7Vgbl;>)L;GbY^b&9M_M7UCZsZtN);I{t$sBFX`*zCGOH)x zq_O3X%p#1n$ml#6o2+&FIL#Ke!wLW#Se41YAeR4GeSVD3O-p?b#9DO7BgN_kv3Z}h z)}I1FAtt&34kJh7DkT;Ca6Ziq#C|Tk%hZelOYDIx?k3tFW??_dHME8KuF)i|MzU+d z*}H)(Kv}CpTe^{$N7p8SuW-C(*$51u&r+9A`(tDlKLfncsdB6qtyUpX@I73&NR7r1 zbiakKkyCKN^}YKP+wuj2Y6~A0S{1UX=c<%D&DD*Uptv9|mqYYVaMfEkMYny3yj8wz ze$gCg*!PW!tN&NPG2M&J4Of(23{?y$Iy2|!c9YUuMvbCbgPsK62Lq^-)r@`39slyq z*vq`}m;GZeFB^aP=Ge>p@t4W5ms7`I9v^!-p$WZXFRyS@c7`iLFZ1$QH5C;=4B24m zMGGM@#4s)*KS{e${!E6UcER6;asg?AqnV zS#MMs0s7tdJx$8;ivEBTHMbN~bCZ|fz)g(o)_$Tv-q)!jcbf}X2Hm@MhVpcQ$bR&} z@WUG_Ib6L>J8HcOg*Y(je!geZw6P}2&1OAa4cw+Cc*8iN;!B|c(X8{D<0~e*B zVKNJpXau#Vy-ZMust$NM49fA0+I}eZ4z%EiF3Vw{8}#pD-IlC1Ds%ICA$QwQDbRu4qnO)I1s1f_oq>T@MID1#i>%N9+|CdLvlr_<1m$LM9@V5JMz1ol z5W3;w8Z(Q!4|AiVwB)twUiovXcBM{lHoBso3zb19|8~tB`vai#l<;v-!)P$)IMz9a zM5+o0EpoXReJTrBCb2d-+j*izdsP~jMFxw_T(otw>ro`V z%&o?^-<2&|hR}hop(|yv$z@J%86Nz~oQ3FNF2c|8!UC?SxG$W>wTNpG*O^>ra-Gd} zHrKga=W;FOTFN!VHNeWtGR)(W5@8QRqL12|T!J<1A;!ebn@v6f5djuyazUVINH>ztCAsvBr|C*1dXL3I z)VwI_9+bz^?FbbQ+Q7OAc*5~HZ}g)pYoOrr?j)4VEoE{U+y*VJ`{ni%7^ zgaMi*nmkIZ@hvH@$ODn)^8Z`H4IGyjT@(h(;MGO(um>&KMT3TwL$dq5`m6$$q%mQ6 z#X_)a%l)~gK=DWm;1%1Ejq(M1;CC*%;Nh**L9)VkRHeO?F0?~MqUr-TxMv4OUvuBj z*VN;rHfJkzf0mPG0#nZ=5nbw2gks|nj@IdwnVQeRe&9vJ$QQv^m*M6oD756TwO*Qp zIuqb>v^Vt=&XOXYTd5!o!R4M)7_!Gc2XNkPJ8xT!!*6qNrd3DDsMd)-agS;N*X>Rq zwn5Gb!p=N=!ebPGom4-ngYhLu8ruBbNCwN|yBCS}MNG3Gc?b?tro0SgrFetW+`|c_ zBZ4(2L4#z>@gx}gSn6Kd0Y_tlO|LSXlbg8zU}tMf@EUU(LNcbXxWrbP00PV{69(--i(DM%Lv-%yGP8 zt#PENfGLdIOW$?l7ik`dAnE#8d_)6hCZrYl+e9(xzIeJ(OmZHhp2Iroc4^8|Nrk+pXySHLI-ccqEFv zwjwgTqRQ8r%84Ayi45gb75ALjHKVcb4lHL*B}Q;lI0>H+^4yU1SYG-=)f?$gUh~O# zLNwuyphF*1YC#5i`dm1a@4$w&npCo|tCk9{ADFH!Cg@rnFuvHyWDjV`O4I-HBuH?FYmHjr9I01V<1h zkmv}7bCg#HVSMyAjMNhs$l9=q+>v9Y@#+yPs_~GVWf|`%<}29@VotpJlHKs`s2Uhu zL>U49E2a>u>5oYk#J5t@ zvl>-k-+!X>O5)mY@cHV7(;8k8SDBG+{605zn95zZU zA_asn$R<6?OCnV38Fowc5?(HsSbio-L0FhaMTw`s=UdUoSkYmv%O37w6X4y z(NEa;S=q5WTVXj_1!M@_~qQD}12RS!XgyuP$8D zS-neA@-S6PGAQPq(V!VlR&HVQTW7vt*L|bRa4vAXR?6B>MfNQgN2%&FXi{y?Q5$-O zD;@Vv+#{*$y@4?ezD|=l40L?c2r}BGO9P&y)E5|?V{qn; zv&&qD5$DMmJpMdH0k-iwiOPHsLrb!i#RHS(+j{_|87`*)+*uk(^9Kn_tlbTzXnUv4 zcs@CkpXB%P%n*w_{-5I3pujkRLk&6jQPl7Dd!ExB{tb@^aj#e?r*e#v0SImIC05tDR&%&g$g z?U#@KVLWsW8wtWh51oe~9}hrH7TIXma2n!3%5l0?%s(Xhsj2wSWf>Xm8d#MmfX;WK z51e4kZjVPF(BR{D?NbInji(6_D~&~G9AgmgrrwIyGp%US-E^8ExakWnpN}*AFBmSy z!glszY=?=_4F3VsEe~e1FRA-4y~j=P7ft`AqCoHdyZ*nM>Hq6Whx)AZa(TsXVFDV% zpMi@X@KK7Vv#l?eCEjHOUS|YeWVjds!#;IKz`2g;#^?iu#I*PrEoPhvmn5w98#GlV z2kNGjv@w&MMNKN{7SUsqDz$ zQ1xNa_+t491$^JibU>L@%lj^?e&xT-?<+)44jl$By9Y@d_jIbLEswmWBeE;uOggQy- zYo~@PhS=a~^8*?iRV#itC|$n6mKa5$%%-93E3Idt_rSxU0omdU*mhvq_Y<8@aG%>;r7Z%@q(_)5qy0}; zRub41fxq1X49$=OSQ_Q6XQyD+qB%SHs%>JX7!we6_<3G%1wA8L4Qx%~(R#0Rk$$V~ zX*XE^O%}@%#dc8;@Q(=g<4Frm&OJT3p12MntmW!-lC@@OkXGYdX^RHR8NE65|0BbNofWbalM zCOL)mtmsNohvSpp{&cRE$r2rwM6)di>JSE7(H}E2mG-KqD|5B~GxpDiA!42<8Fa!P zU;!!r34$jaqc>YnuE$*dUtwA4@E|$s7P6Pc3m?JuRKf@d9&~I8Q)D<6qV8r=*$N=Y zU;?qVmIq=p_mHff=9F?3(5XeU@})Gv*BsJn^XNC0Xz}Qc9@@OYE)kGssCad zXz6lJGYb8yHNrXeDAbs|AotcYo_>VstV#v*5=_ zN2$>=7#Q`p2M`^8rUYK{gV&3SEk!>5nNQ_r)z8Z=uom9~&1>Dx*z=3={_StzOJQdC zW;c#8+(9e)7DK`o=1n~ZC=|by`XOvCF%|0dzT$aYtcxM=?&|aKHE5G~E+W)-G7)T0 zE`e^l2DO|fFpCA|KEQKY5D$FhTxbi(cY%PCZS`)pf%Goo>PE5o_Y4L~uu)+nnSufd zQbJS~SY2{NK8xhMtDVH#zCN>;^c@eyFJItu;S8}a_yWw9+C)mm)z|!`Wy_X%_M>Gn zG-Kd2aW@#<)NLw8jtmY)E`cTr0XINorsj@!!l#={ym5VdyMDnUdRkwX3QdQ6##M0 z9|fAGq@H2uX>*#Qc^`3~+^}v8M~7%_2-2d6eL&7;XnQT3AK%H7I z6#g1=*px8yU#>hBu-anxJuf99f@s_Sw|GHDeTVH+hf z*hVQ=V^{ur*fX( zwD~d8;La`mB>YoW(LpBdT&TghS`(Tk4xC^jP7Og^1K>;&;|8X9wPwT2Ge4X*#|}WC z($K90cI7nRTzH3oL^T=YArv#sYQ~htYX_W^{{=vKrJ{@Z+qs*K;+cB5Ciyj_+m!Ch z;fRcQ+by1~2E))*I^c)?W4rs3pwjGi%vIfKBdUiZHQVDv9^FnMn>StL;%qAAm&gk= zB)*L05BlX6ZAP}%pYjQ(Y6CCb9`|Ccu=EN%H$>BtTpAUQdwvg&ON4V}q$ zY;#D(Vs=TmvPapNyrG*>@vkb@(ojOH<(|t%;Ok)NgZs0$I5No|BVl{Gzy0eeU4|cx zYGk5so1!`{Q>ROdX%@pQ$DYmkbJfIF3c3MBoib0C5jW?@Vo!L~5ob;|cj}+*%+U%! zSU*@;eauM1B5j3s$!OiLB&e8+bJTQKY1reG7xD-SFb65s#5`)=pd%W%`EL2E^Jx!- z3GBS^|FQNq@KKd#-hU<;AYkM~jT&t#X*+EhO>3f5Gc~R`VFDAGAeJa>ODj*qX7MSz zVofaFLIO^roDL_@ik0o!*4^#y<8EK*c2!V;B)lX6LLzx&LD zVBKe*|Nryw`H(s1emnQebzk>&U$2$UD`Bb#zA7C|zqa)e#`5ClC!B>&?YG(M>qdZl zN?XkHgaI^86nYf+!u42+81PSmt2HPF$V#E{v+}f|x52AX%ZbYJulKj2|ns}8+{W~cp#TeGB+m5=^yDK>OQEP1Sr0cU?hy7cR;=j zaM2NzXj`fx+?~*1Ih=a~45Y?uIC+Af9nF*=kKtUwJGzes19oVe6{P?o;u zgDW5uTN)?fb)S=RH##u{W?>(sd;hw)Pu#aLu%r9vF?xh#@+Rhy@;XKL^gWN1qk4BA zvRZ(nWC-wJxf^S$YTr+tbw~qC_Vj%zw9QE__CA9_Yq$2sQhFTqbvik#Qpa24XRS@6 znSnwWl}*ptI=p)pzZgn5Now>xYpo;elLug3Fu?_{e0c~#!w$qwy0bn8oUvov&j_uX z1K{k*U=9MncE;y5Uy8g;$$KcN69HBfhC}A?&=$kc=HlgQ1ejQ4_FVEPDy?q#E9nC* zb((oc+3-OIvOa39td#a^g3ZD`|5);R-mJE5t{)F8eI1^j5d6$%CeRJLi$D4)=dRCh z%7e4DQAi$EW`bRL$S}gV9@N=E9G|rvv}1kaq4T}~Qle}O7I{1=r zpE0`PdNutt*wcqEphH&cW^Ulk?Zz)7t+pflJdfEGt)wYuZ zr&6wm*5UCTPvthM8OBM@x_5N@kt?3I1MqR>{rDri%;0%zQlkw=&{}&0JoqtQ{wmxB zOHlm6XWdLeGTg7g>G*=cn{ZR>18>p@-gGGXI#uvCcgEuRFiv)Gr!&-Fo+~-& zyhyQfYjtPO$G+pSkA02Ty0;CMoQ%42F3e29TfF9vemkq?k2yW3^@ATO-M?$Dg+bB@ zPxux5mBhc{SLTJvqCIDCopX`Ze8TJ~cDQk@gpLjYUu`F8ulLgl4seY8heC!5E);@2 zpHtHX6|rv$4TI~fL0HbF(Sty~GgI1*vA8&ZXz4KjD zKq7U3$o6epbRzMcwq#bp`U8Z`cWt7JG2Y6qco(wjgkOS{5WckREB{4=*!8U za>o%6K_LAg+pQdg6x2na$~kfNev7ae`}CjX^bGJfyJw(xpw1V*2w>6zoNhQ|t-IEa zSNO4K$jVf%?-+gtl8@7JlsM0QZ`iZskzpX~>;_qk|7i}A0pXo?P|Suf^Y{TsDIvsY zwQgh&aCZY-M~mhbRfW#6Uv(Zs2e%`UNqHFgNXf+l;)N&}6i~)yrMl65+2FjiL-->p zhwzW;gZtIYA^3a{u^Ws(_{V^kbN#{VZmKgJl-g}(S4SRX!@)Q2xANhno`1OqPlm6g+ zyTG?78dS=!;IoV`<|8kCgL%<^WHB)`p~)l;5U4lKX~G^e8L~RapNv` z@G0-^KSvSK^9R4-zw-z0IgtN(rEkEi?zNrr2fv~5s+2!?P4%bygZJ%%D68}xNx6g9 zAlk#BcXSr*#%0|&9KuJ>+`tiRMfo$u@sF!;7L4;xapsN7h94IFI2`H%Lw6Ca0PY`i zkzEzSDGC59O!)_^&|)M|`t{oG^BCdD{T53fpCz zDT1_3XP}X%;B@Ui@fqbEeVSX4*$8Iw_>TDQ5gHM|r(L5TW`|F9a`5RFea-WKzQ3VU zoY4eJl^B5_)O`0ycjqa17A5d=bJRdmUB^K;tUmy~;vll$$9|Rh>R_e`$2r-ZbSWWJ z<@1c=Z9dXMiDMsSu)0KRo6g`_SA`n=LSM~A??rpFl;;5qh4hS&G`5O>D0(h#yozf+ z$UZ90!&!U-ZSq1FYazY*CP{Fwhi!Vh2n2C58`!-!e;6}~~6eezjUX+(xXmZLig%S~Pv*G{^qhjI5o$7%^ zKH5m45%cYy)AG?lb#8*I87$yfBjvRjVq(+GM1rp=3VSI9OSapFOzht;MYcAGt05mp zMIU}hPokykgR{%MIP5%M(bXIm*ytaen(LiTw0O7-9)osiyddm*&l$kXx}+=E6&uQI zx=Cj`MDs+?4;Usr;)0fFR-8XvCDCssF(r= z8tyYe4a9ua{}IC{NL|>;3nZ>UuZ@Avz>7NWo0ii-mBaowv}4Hiy%ZcfC&B97RauBOU!!ES2Y zIiP$_$U6M{j3|ybV-!Pv*^cf7EIr>Ia17HQallzy=a0Y%EQL4mJ*ShOW72Koi^WLZ z6a^u93)l>}PWkhTKVU)_Jun=u=z-a}S_ouY52V8tbv-bbG&TqN6=R$S%6UO0t69aM zk5ebV!5zzvBuI-tkj*sQ@W31j8cV7)gI-8=hVg(>e;KGXKha44;w>u8yyiPCs=>}| zvH6(w$IqIk=ln8-$@{i zC~4z-CB-_+C4llYod1Z!UXC z<|1_aTraQEx1X>lbjl{8=Ne$PF4zIKa&sJ%1CgA3BN881<&4Fj5z!i)TeH29P~O=W z?84k8UbYEej?PBSC@SqqMK4-5^lTBcFk=4gE<0QExN!x=tkxti%Z7HLV_~&Q{b_wh z`L$NdkWnv#pLYwcWGD0!$>t%=1Wwj=cbpzy=a@GVf2=mrY38ME-|)NnK-)vDBg>eV zwub})&;T6+v}NESc}hoiiu~BqZL5*yMtJYtIbESqg z5!Vy_N8FVDtaCVVUwyiN0%*?R4S_%LbrUCb^%RXxwO$}8F-t{Pm}j_5`$>Xzqr$zX zN#3moJaxp)D6ADv${E1g7L8oIri}Q;QXU~N-JkM{T3Iwu9&2Apus`t#FU~&??h4e- zycWN~X4do;m5*)Ij)h?f1EGQwqnH~g4O8L0akAMoiG}eev{OycXI(&F!Qdjjdl}E8 zd>tQpPZjEy-Fwq4Jbyf))>}?C{AKD3R?BpCc-=z+5a5k2W*LC03+}GF%7DYux+L-} zaN$RgRd?gA9GG74#DF{D0KrcJ_<o+B=M>ur^<<(t$z(XD&yw-Oh3%K`01BDPoS~v#IETr+BhfQ^w zUPpJ#L`kWPi7E}_THk8>g;s~(CxjvRHOtDctHlG(tTwZx^b4*+#BIK>ovu{XzQ{EH zM7?5~MOQ~_OCz;2&d}>S4|;}UYX_HYk--?F=&gd|B-8Fnck!i}lp7!s$5kkC`S$Vp z0k0;?x%aBes5UM#cvHf8spIfv;M=O&ywz}2<+2sCBD^7FI+x&HCD!T3eN@OC8(y3n z`mE7-VC8YC@%?h=o|PPPhT&ndDdizR!*cy=)H`wipyBCbyUBVMGJfrcp1| z!--~+Mx+`P*#>YcZ3b~c45af(9lqY-3H#WZevAuHA+(v<0RnVz3oL5`={G!~vu+8} z&|O9WHd5On$dPyK(y03{et@dVeSFzM!A87AuTi%#J7P?7!uUsbu+M>H!8iv49UidG z!9s@z%yTf&;Q{?EY;<_QKnEio9Rb~y(@I%ebM0|om)5v39oz;PV*8^Z$YFhX$Z=zCWm}V5CMD^yX z-h7o>Xe$39UHOlCs9j->4ON59+#Fb{#9>udPdF~PjMPq_7^%HI0Nlu_mDoXr9&T~E zFvMb03z~d81c$fNOY%!iirx#%`;6iDeDgkc_&v|O&mVrzHSY_D-*e3SqT%;!-aVQ1 zaFUGYQVO{0$G+IWxW-T{ah`D1<7Q09tKBG9))f60sr4~S9=|A-)Glc^7^f>5+R^a3 z<2eh2kCQc}$eAJ!Tj>x4l*0TBb`C)tyt8n;cNQ95SxGU>qDui9^5i1zDsBy#NEA?x zhO)pvgX@1F63>N96R1VvGk`EOD0l$EY80Dc1`x)zg$E!^iyof=gmHV}0SGhKqjDe& zFf&}nl6J=+_&Vna9d$y8v%}7HVdq|)6y6K_`re$FIoy276Woc`XH5FfjFH5R)%Luh zZy;>CJCf+NdFPPhdK(vFXWXX{J4*95_*vpcY3C3(sk++6$pXI3rE(L`8H#2fLH8s1 zGQtV&1<8s5lyElVi-UvYre1j_=GVGqcQQxn99=D0wW$vT*0IkCjUrhIPp(q zo;~rCW7WaqYSYsi#Er;l^af8f7M>G2+VuZy@24|7bPJ0JBmD*_KKXCnXoObvZ}=Wi zvYl076iWdSPptKL9sh>)c@%IUp*SMPh>seDrJ{Jh6T|U`MOEO+7}2dv43_8=i?0lm zh+ccc=elBg)W1~Fk_E(Gf$LMqt74RCElqebtK|wBm$8j6cG`E@No+NmdImg)ZaA;< z9HJ~6cInnRyn{PUdsvtTk4c$SdXJ8Th&chl_{YZ8)!H6p(k0tbyaQRFrcMXgta*XP ztCNawFMUhhHOguz?dt?lj7cA(slv{s*2+gI$vGX`)wCzM+SCd&&F(r)Uc_zFTsgA- zO02q5o+q>rj3^`deaf!#<}%o!+3X$iW+wSBrj?}>;u=@t(NoFCNvvC?a=~t|mebKY znEWBhw&w?BACG7vbAQJXN~-^g$GSbu+_qY8;L8AeCi9ShHLr6)Jh@VQ?Z6e3%$bw0 z>;Z~|D+ZOT0IaCsWc4JXZlJ|ak32a}I6e!x+a1~5)h69pUAq}OWq2XS@SkXml(WV- zV@&L#seW#CWbz#pt$BDEW$KhYIgvs6D4g!n%*MOKPGsKVbEf7n&o!Bu;o!kY?LqME z%Mog1&6x`R;t#E$L-2T@$Xl@3-D^YJwA09q;DKd|~+nYM``X$WlIT_k4th z6G+K&k*kiY-eYAMg7no=08OG%a1g_M(;<9m~OO;-y@uxoQVyi-p?}sJphp|L`F!%A4JF=8QksY`zh0J`;at z1&@yTXgs!@XKxQ-kvjxSB8>Zce0ynI$em!J%S2D@m*Q%unVEW4OlSzegjY!Na=k_3G3_wU z$CWQ&)F3*?s8+9uhwoqP#LT{fsrZR#OEe#!zc{&8HOMud0!M7G;#i5K7?`(uBG`QUIP=ql)GW=if2BcWPHUle(niu>h7wJWUg+d4ZIr*wny|p zz=_^dmF}%v-%)_r7p={CChVL7EpD%Ns4`FpbX&_iXsWVh^P)0vp1o{9VImvxG`_Lh z9Ilm|xp;#N2Vqx^F&JY9#(_4+Z1VS1Ow-5sO#oY;$_09T3WkLL9Hao&#-9Jc6L`wU z|7YnFYBHXyG9K{pZ%*m7lmFBqZ7)0P2nBy1`4FSNmNK>jY5?v-dO$A|rJ9Xvn16~` zt2>s*q(ufBL<^IcvY5mD$%nM2FlVjido|)sPy8qE+|(!Xv;H|&%5&AFo^sKYYeGDe zO}dtTuzlPWzFq8la$<+5O^&>}o4bQ_-i>c-5}y;aiG^WYK)HFaQ${_KJzDkrGsxfd zEOiZw!-@S#?O?(<0w`B8o#C-8W+{yiizJLRqUkA&%0Tp-_87391{ZCwyljsqet5oL zzaLW4UbZ=7DL=iKckM_|d)U{*tP2FKTXx9;miP@`2wY5|&~!@P$MpxJ5B3qll z7OiGaZL1R5l=}d!r*#r*2m47{iaXFKx=}Y|%pa4AV7b;hN#4VWX1#7Ck#l563sD8m_D1#(4h5dxjF% zN3}_{(&A`UvjqM70S&b6R>dd9J<4ylxiX$`^5QZm4L#rVRx&_ANf-NHl87irL-BS5 zJJ5Mh6M{lejyk_WeK6w{J&w?R0fCr3dfdp5jzNjbt%Zp5*^o194e&TGRy&>5cfR|# z?|d{=B{PX-+iuQb%x&svW&`w10zC!aw)lf`s3dxv%i+<)*ni~9n_>c1PUaaV>zPOO z6Mt~Nc|#MwQkIQJtK9|CkAZ;K@jL_5lT=&IQJBDqS0BDv*B1KZ>;=q#AJ&fJgXX)_9^W!Mz@HWs(~r{2VfBvYqN3SCWWz55k5Kq z3t{eyg;pSayKWT=?SP|kh$n7ibNLZZHXOK;w|RPl2M0bv(0uS|xo~W_Ld=Q%WN;Jv z@Z>0dzV&Iw7AVLr55X=ph>-pmkrQwsS(M8&`i z`c#Af;#-Vhk~&Z<4ZUNOj$bdbhv0kd)yui~nbAc!C}ksp`M;7{H+>bR}`iD60Bf1=XaDt!X1XvRR$KwS{# zXDRHi?8@K=cJNuE_R#6#x~pmeSK96)0o^z{KDvM%uBPV%7NAnlTNm25q z?ezrt-GldMZuq`lTz65VaU3(cfB|NpZfk9vRVb6H0&srpaG{+wE8h<84m+E1Z8|P? z>a$H(rZ>+QorMvCYIg8l&4~MUYU8znzQ4r7!eb1D=gz<0K?c2vw3QFJH66 zH!KL$7`v8#V+rW*+~iX71uN{+IUr(duA5%1F~w? zQf4$6V1+D(Em!}f7A^P8Go8O2Lub6=r(ZV&{G*1gF{5e;Q47K zCU+0x!_*dP(QTf67iLqkwerCyi$)x4XYqH$>3W*&YT`)wjo*~)MB=YBP8KJ^QYGau z>1=sVUR&jSjJk(BT`W5y)`CKX7IMBjt3CE9_klGuDqo#T`IRzAhB^L!9mwWaf{y0f z4AZSSFp-4d2`p<@QIfXgBV&GCqO~Ku*zwzlLa|MrP?qwF%^qx6h-nHflpe4?Q|&{g zy{y7XR0a1b)U+(*)A|mfT}z6qUH?t#_>a~)|D|l_Nl3jnXVwu=uC8M+3&A=pHyHqm z>-Z<}45PkRD>1e~dv9?3dST7@w0wKnpuwNkEyv=M3mMyEq|?ve^5ZFKxM%>9@F)qf z_N)--i~(8qMg86sX@uePHUx?pGS}|;@lqBopCl6;0}=U+8RgWvWwWqnIq7R` zvqX{jMe%8bhCUd!!n-5!$=Tu$|A8j;Tg->zGjr+G3#7!S<%x-0N+JcZxAlZ}GXvzm zY4Rs3zue2uCx5q6XBLzHC(~lH(Hp07p$g9M3Yto@y=N}aT>5y9PtM`VOwr^5o>r)( z$wfRJ;)$l8Rf1Wr6@duD(K+P(J|0*~o(}uj+>~Cx>*9>8%#6sWKj^RLCt$ulBUlC( zON3YS7qS3Fgt{S+OIuPanLW+*w^hN+wOZBy%2h5916wKTe)heioK}GULZB-_8~Ufo zYB#^Hnh)zBn49=;4tUvfZ5oMZ#b;*6r@@Q!U{b#ey+LPFIlv>+gc~6yEDx|y{vt15 zGcEn?_)LLEj-IBWV$mE}>g8*u^LZpQS1IHy_i_sLyvlnv)4axeHq-nl&ss({i+R#C zXPBpnJQe84OSmdE{WFW=(~9|4Az9ibX1XbQjDb^BOBBiSMn_kQREpdIlI?gU+x~Iy z8EqKuv~F{SSrFP$eK3aRbW!3T%cKjD0)iE$QLGYI8vr!x5^*L&+<1me&a?tV#ex!t z$z5%rFyds9yI*P3a>zB?i7EA<(V3h}uJ)EQEuUP$r86@?t^mrJTuAOAlPhZ#?Gp$1 zom@n+AcJG7Tnk(Z<}9X|EMX=}2d+>PGN3v03~+?Z=SH*U1QyDK>KGY1W|mSz7^E>qr3)2>Pt%3A}LsctX32C&g~Lv9ayuQYEE!7SOPbB#QQy_S z8hzQjHng|>oUOkEc_9wPImnPzDZy8X0^s(kjr({+O3R5*vWdN z-FmW}(yR2LdE%ebsJb<>(F=h(HIVwA_le|nl&*5CweVUSZBMf=8J8B0ts3srR!v#X zF*n-s&Qbb@tOeY`;&Hxv%Oj#Tm*+<*0-NcgD|IH%Pkk`GIA-ZtyY!-+-Rpt}=8(x0 zEUFFgF55Vl_zQRmwDVygjxA1#oYL`cL}0 zS*&b|SnmIVGSNyKM6ue#4J!<$5^rXa`l`*H-jHU9GYc53@QE`mo7oiF@;0O}n=><) z+&a?ozLLkoMd~$`0oS8)$;xRtxfQ2ScO#Gnq!=dD6 z(I~_Ids6(`osyp5MGd8P%k5DYYddWR#vOMrg48ctWydd-u>YTx#WLq^HxcI-O3l z`X7873KcNmdk~>c&nQ!NKupL@mx= ze4hl}GJy_b6JKDp+yrd~6J+oWJg@PluRuYFhDPZL@l`g(u<=Gt88-j(fTKYsECF*le4%VovYD z5TVH(*=0PWiNR5x0eiB@2klgpX|-f~(;FEvy(##rc6LFZN*5WETh3Ve%d`~%kkK#65<=e-F)VmR1LTcYT zAT0O%Kk>uu5Yv(zTW2RSOxC`LCCRni9{{XIXLyhEA)n6E(n+CL7AA^lc>v zv8P2ET{8x%b3m&JT0-p1rLVG(Rm8UG6-05d1lPXG{9tEnkSp2;)Rnim)-9&{Uz

  • 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 N^na={65B!h{{ghxa4!G= literal 0 HcmV?d00001 diff --git a/lib/HCNetSDKCom/libHCCoreDevCfg.so b/lib/HCNetSDKCom/libHCCoreDevCfg.so new file mode 100644 index 0000000000000000000000000000000000000000..def388709083c485ab1741eeb8257042858b0ff8 GIT binary patch literal 486600 zcmeEvdwi6|)&C>jXuKib@P^^0c*E=_fq=J!WJ3Z;ShFD@BAZRJNftJ{>t+*z*N8W? zR#R&&YPFP7i`FV$Uuv!5rIuPRNUf#bO0BiTT1&OH)Oz`S&zv*6XP;~c?fZHE`wcvq zIo~l~vbz*iw`-I<8<;3@|eK-^6TlWRbj+}pTL2R0M_7joYj689DOw+Med!nL@51D>hy zw*bFO;yx7rWW+rHIpYv--9IF-8axk*{PDo38Rvuk2K;9b_Xk{)5xy1J^SBm(w(bms zZv$3|YXIRg$UhR-y~1-c!VAEBj--1c{56RC39d5*drx>t<~GQ=64x6DkAnYm_&&sc z6IV5^>u?nUKNk1)!T$y5JrKSI{>`|az;&?5y$|;$an%Dm57*yGCgLg(UWcm&S2^f| z;rAo19RA*NFG%C=2lhjxLvDun{{prb_-f%lit9kcH6rd>_=f_28Q5f8<8b{R*EC!K z#6JuF3tTVZIs$z2fNj9F1ou4x{}5b{AnsSVoRG|sG z2G=K`rvv{gE)VXx0`xri+d~euFr6lg6A0U+=aM1;gdTM*c`;Yf~yi& z3Ft8V+3??ne;W8w;QJi@ZJ@t}>)W`#K;Ilwqg6n#O2XKu>_yfcp4H@LtgRVii z8rQE8ehEBlapmE<2Ujuh0QmlmIC3MzKLc@_K);FWdSG9})rfE>t^*ObMEF2DuM!6O z`wDXqz6#fma8-bx+%FNH2mf05<9iS z!d{6do>d4J04sz)20XKHMG?Lo7`dkr?#6XAu8AZM*h+-0yBy(DK-`LJ2I9%>z`cLN zRf+Ja@K3~b1+K#pKOfi~xMzRRoL3O{ z1Kjg(kuw_DR}ps@{CDC1590TLPwoxz_eb0>!T)uk3qYTR>s-(m0zX0UW$@>S+;b2< z3Dsb-D0f zDn5A^sIU$8*#P_+37@Di8~mybDF0v;{@(=iar3fa1gw|%9`Vmr{B@o@eSYhs90zeV2MXrbsU33-bKe#X=U&M8u!f%xD zR`Fkhf2@SZ!5=GO^5VGmgq@fnSONTfmEBk^_@m-KBYrNgUcjG;|9$Z<$;B*Kv5I>V z;nQ*5Ay_T^!zBE!_~ace`8x^Wa$F;Y-awJc{TkseMN{xN@ct407F=@(fE%mI%LxB{ z4BmUVW-IV!kZ=jY53bDJe1dj`_@V1c#-i#&^y!($GY!vAgfXM!G$%ep%e@PIDHb+HA--|3=>9KdxsczbZ&BJtNCOzt^cEfQ`+xF6v~ zxMm9W88N{fAoP_?I?F*%!_@%#23*G@+=|PK%epFr!$O}6|14bpw2|=7QQ=bITMX=b z5)LE0LU_Ihe;?pc_}{{H46eh3?N9;Kh;eQ9$MBo?Tnj-NOU5)TwxcmtJ4cA|B z%?JHE_|~lu{vz=$PW~C1KzJi~9>euVTtC7!0vEYu@L$CBw$PWs{|HwM*FSLm8P_kE z)me@3L%7IY&7N}#=muQ-(HsPB0>aJ0L-cxt{{_Drei{5HRUE~Wdtb1B!rvm{Jdt;w z(0jwb0oNM7#d%%uYsDAXIbQ-l5&ZY?zh)!h{|1*A*DDhLON5WYMQ$OmKf^y1*Jg<) z+`8i=Pc;&EHzM`|b_}k$!ZZot*|@53ZBjDoKu1CUN?~-%A;7;Q*vH~O4ZjumdGLP< zo&dsEOWfWFAB^yAk{)?~0DYCjM+84x{Dk1Ai%)P9WbC16AHq|B{~i89#F4AUbr`~5 z!2b&Y;#PuZB=Du`{tkrS#Pt=y4nX`j5WY@mdoTIF#dQU)HHiBbu35r!EAIIV!lj6N z8P~T3N6 zi2G+EoR90LxX7I?K7|Vqz5v$(@LnWxzl47Ru04Stg{u!2xi0wc0Dm6gON94V2)~E$ z;qccY{?`cC;<^X);llG{_;2AFgZP)>pNzO4;Cd7E4qW8gfxj=|%isrb{R#N*1S6hN zxYmL1N`<`ytO8dXupcV?uizv14`6@6HJwT4IpF^UJz`Jvf8n91>A<$*nuYLLxIRYs zS@_=+p4Z?n1^p#(a=q~LAmdPp{|MN_z~+q+- ze?abeA3R$nd=cU{;v(0A>v-Jvd-$&cI}ZLSp#KNqo50@;n%p#C=g9pD#03$42>z+S z&xcPHne|P3V%4elFS+C#F7oL%g+j-`uQ?hZI4;*}2Ysm^2W+S10Rj&H*OcIWflgo%io;0Q;POBPRXC|J*s8&rW7{el?l# z1G~6^JaQ06EJQI!3lDi0OZbS>vhhm6Kft6|^VbUgP#MerdtCG*_;>bayjKj;Re2oo z`8dYS;s>Bxh5z3e6tw(PrI|iFpZO0zfy;ZX@Xu{#eCxLv--p%b+;=YH6{j%%SN5E{ zQGC+R&ZV5s@ggUR!9}N=FF4s4jn5T)G7O)_AC!FdqMAtlv(nkg?vV?hi8V^Bv=`KK zyBfo=v;PF2}P@n_smM1GrT=jhjCS7!!=2M`d$6bj+xb%08)96p+#gk+way!82{uv*4t7R=Oi)k5&wbh zT&^Z_7sm4Ag>Tpa@r>U@11jA2h5vf#cO}QO{I>*uaUt<%+_4h8%4Huu75oEf zCtt`U(At4hF_EQwF0hkj(Zd-?PRqYY>38GDvL4nj>|Be7UVAS=6@t$?JsbB4{xcW< zIKh{=?A~F5uQU9p$4j{#+VSOP42`CKzt0)GQQBb<%!|$sh6Ce{lzKcopYw0$6^qec zG(XM#$jvtWk;C*CYBBEXEZe{eScO2Nmvc z=zwhguL=G-CUQFe|C0I|Gc_CkGbisHm&Cjr?d^sF)+f55ai6&Q?{vXupdpc-_oodx zIFHDWAyL9d$i(wvj&^*;4$IB()=IDq4+o~5`#B>$g1>PP<7-;E<3P5_%rS|lArS?v7EKEc>;HyEao;Q)xrRNHAUn|X)^Qu8HCw0wdP89qxqn|wI zmMH73Q}7;$)%oGxglA;a{_~u~`HZ|G5o@KtchCbNT!YB@Suxj3iHt9}-MH_cnk|2C z$^SaEchct;c~B7ZsAl4|Jupv-67gC$OBgv9d@FS_>d| ziPYD{^w0-q(~3=EezW-s{4$aMIWkH0vhfAs7da=-W4r+;XvqCd49yAS82{+ElCFux zA7l3{fqgUyo-6a%4YWxLN6$Ru?n`p}ne5?mrR_{9%dd-Z1GMvpW04K5&ufho%tuT= z6$0KjB$zs$?ba{)In-qzt`zySo<(|_d>k`ABKW&9pD(KC z{9C*63nhPku3~6t!BOl zySjwS^`hX{g}Htoev8|Wop1aV@+d#+Cvkr6mwZl{z<3=!q{Ce%a%h^Q^JB-y17ton ziVh*bogs2gIE3YFd5Hl`FO8ck_TemA_=3CF{KfvX>8E+lJKMRwMoK&11~$rP$8^RI z5dP{@vh(wp;N>VF@wY`-zMY3e$20zSIyeD$hwy*a%=oHBthYxb|4$*qy1Y=kaosbS z|M3LpXM^BVj6KYAUOJj_S`#JL+{n)_8|C>0-Nd+eq`W)7Wd8F6e^UDCb~!|Io7DTu z(yk7q1rNA8ME(qEKU0>loLdC{vy6``=uimUaiGcF=BmeA7AYZNH>jYxso;-Un;>%+h zU){y^GL}83b|T}?(|`+iH?uoFmwkIk@X`|IukmvRWf|AW!vIJ5fByx}|DQzuFI{pl zy)^D2>F?h8%=n?;kBELAm*@SP1TQ*_<=;h{_i&w3kG~$zc>cdx&Sk>?l$Y_h#eSAa zJ<=YwZdVX%+!d|dFB;@|!P@_Bm)(Y0Hty%>7gXMFyXFb6LM>YUjl%y%3(J4$P1X<0 zmvPPL_nN;!@TGfs_gXkV2`}T;-X3J~pXaQg!|-s&>|s3T zDCv*SNd=zCuv3i=PkKJVzjSo+tCV7lr@s6yX_nGujQgKc3J03&p@lw|9Or zmho3tuzp5Jey%)2>iwJ}%>5naFQ0qY@>dA{mDwz(cNHs!&J2(ny}zWJWZ-VGKd(<^ zJSFROFc-%4dqs}y`_v2m?xUhs+H>{CH*(waN`WW z>8C=#n=bj>1P0TdWkG0};2WjhpO=?VZW5f%?`u6gFCyO#vYftmSn;)z&(BT%GwEI< z!JY!<-+U_TExsQ|90Fg$Kh^xFi~P1E>)}z?diC`lmQ(3! z=PzPlB0aox2PgPfkyCRn;|osYbnSlG=zPWxl;;$f7vty*kIqk?=mPs;T+Is!e9l)9crekJYsC0P$gH!*IldG5$_sy<}_L2lO0doo^3mi^FQ3jf*Y zzdAp3hK$_#v26Tw$i5h;c+K%{ySuSlC2re zCP6rrYq2bRHp{IMv4`(p#(Mi$aNqIS`Pn9Vdq$okR>*?4)o0^*+586!e}S>88<_MPm%Vsm#iyV{Mrf3f1ktc#Ll}u6@AXQiqm~d zZLa#A+`62T8Yk@>H`n$xBC9m)L^36Y%se{e=tG3>l2?d1I= z>)}zsrL3X|=%o?`%{R>$BqRFhE&xF4g8K!yH2lAkHsNf&8GJdm+ z`!HX|T@}wR*DS%O!Y)$&uat$=n>f49d~_VGH#^_^Z9eml{S7mIMfm>*{Z8|ji2S>Z zK5-6b94qWusjodvxr7NGhF#;fi@m+=L*{=*fzlV?e6G zIr`-6{IK?LwtrqWZs#E%x$=+f85gNy`E@sO!>p40uNS-OY~pl}mj-$#6ifNp@HOWD zuH^rAm;LM)`S+GG|H4k@zfka_Con!j_Ft@iRw5me|HXeT?6yK{{`#eK+*HUv$FYZzn&`fzTgdJd|c%GzKq9( ze%Cp%4@`Y!(v@m)UQKfT*SPjQ%jR=_I>xac?0JuU{fuw@G3QgN&H2uZ?0lXsNsaDi z`8T+pkG?ed+}|1X2-{DXW#dkl_CIPBm+Mr?=tJIY`Ii44SG(;MIR}~chITlC^?#e- zS4Okt*!FM_DuvqBrN88Ke<%DiWc)hj63&R-Cw<%WM`40@qXd6a$Z|fE`47ydaqCUL z!}IkKtj_~kea=J~m$xlu`L{@U*U0#|zL9~;Mb5PtuWA2%+e56ke8F#+!s#CP4=(R? zPR6M($}TUe&$xRgOL^&qVYns2e;_K3^w2PmGbqQ)oCD9!meX$T!n?2&nEzQiL=AV1 z;0sYfBxi}7H={G%n!7R=hJBo4V2F}P?lI{y)hi7kRe5v4p8QJpt zM1EdpHr^~at&eIwpg6`&lJ?fr!x?!{Qk3nrDuZb$~I#zsjZODOL~TSpN9!EPp`on6#_w7jV0> z_Ha4ugVsZZ$Uh1hp!N`z3YiMKKyDH2z2>*`y(Y|a$PPO)kG1*#j_7C0<(wb;ym^E4 zud(!U1e|@YuQuayp0oM{?hrpQv3QqcBIoDzy|~`TOSycqzOhK2k1iGdo6wvn|D);U z0JuEqU%z$P;f2Eg+jE$|P0pi+1z%ju<@&6a^#(N>_iL9OD;4}IvCoxHFn@uh`xTjw zT`B8JGljoa`q7q^oX;BsPhw!A{9iqe|~yE(p{`zTdp~nP*J&FE#(Z_^B7-<9scA4Za?S_#{IHX_+9hKZzZzx zUn2Y;9>V-Ly~^diTl9%x8TKUOel5ZC=Vi-@3qBeTU|P?%pI#~U=j}dLh#S;232Hf?MpI;xAE#LO9oe1c3pD7EjI#@V%=xkF z6&Ibz{C8c;>3%8cUT4N%oE!Hu&?a&|J|H{Yy9HkfrBQvA>}2_eiJUvjviWVE4_?Cj zZ-=W{p2}QkK%GI7u+Z5zR;ST z?&s1^Xa9`(9})TMQ`zahE9I?EX5+ShDqDOpYj|u(=|VN zX(Hz*NgtVl`?dLtZw0yRgMH8I=!R_hcHSF>0i<$GZszu8^;`>u5Wf1ST;5;Fd?4tW zKfEF7UN8A^_UHVZBJJ~eWB;)~DDQXJ=jD$Ougi;SGS1VTjh`v_*|4`-&tn8XYCq2B z-xqL&tVMm0d#Hl(8NHm5ja&@#-Yw1B*SpSHO+sdOr! zc@pD&u66sTn;Cz0G1p^@|7S-v`x+CxBc;c z)86D}cu=EppLDRCn;KZpebU~x&1QVZ?Ocz~2>+*tGrs)*PVhZR_lGr%zwlk=x9g(s z&15_!?G4jE$hiN(7hJ9{C8KMOC;p7Kls6OMKE?_x5 zVh60f`j*RHRS5sXVV1MSwcb7-_Jqn+AP;=k2>(Y?k1N-)9*V_|y(RPTeYUXPzAEkH z1QbWt*J&K>oOKw>KU6xp)$?6~zbA^c^Z9e69Tqq&c#g=~Tk!FpGw^l6YvL@w@gc64 z8G`#oKNp|OdJafFPwdJ4T>ObQJO9!=ol{)xQ;uIaKY)Ci{}jmlXO!q|lB$aykZ*T&&%_dt&7figlC+c*Xs|fgQ7(pay^Q1Q z;s487+3AX!oo1=urfXTi7?Be%<@rXF?Bl>J825t?&QISttN{APBe`W_A4YmufGoQ^ zooFw*To~4kYnT2~>gq3l2(vxkCidhE;iuyeTFxrL$B4a6{+UaJW^CLQfoy(s2jdn` zGq9u>QU zW?`?`Ke>F0b7`Jsb)r{@cn} z&%a>t&W(m2&x0qjfJ3EYd^(Z&6ZBzLxX~hiTrK1M@?KJ_$a#i%Apg>_%y_rpKX%QZ zFB1GC=#!qyO69o>-PyRxGLn;V)?US3{{dG%?Rb5GwA;}Oxm>pWpKa`ao)c?DMZ?+mUtZal<>&u^ z(|v%WoqbMX{D}v+-tRex3(#TeG0$1m%o%xF@O?3kkUo>LFLNTZJFiV5JmapD;0==Q zPC1zT94F)a5(*(XD`b830_iXFg#QWJFohE{;mkMBJ0cVwk~8kbGg!_R*ZHMynf@qD z@Wx571LdW9DUx+94EM&->*qTE4-5W^)O*dIobmaBFT`L<`M>!A*3UDdpT2y?Yo6x( zw{f)dH7JVspZz+^Irl3p=oaaxC2}4K!=iDcPR-6wiO4w_vH8rB^>-Z#Lh@sBVAJli zd?xr<*@uD|H11!f-ZLU*N$^~QqkYcdcJ&)+CwuM7@>?I{a%~a*i8yO8159IX{0E{5}k1gpb_J8Eh5& z7jed~llfb(;D;bN;=fs*JE{eL-(|P$^V-_enE#eZobH*ThnG;@TF*C$oR3}hDkAmr z2csWhg7>({c~aWdJ~Dr{?dl1cKg8raJR3z0bt|1NreVfSM8`4uxtbZD75w`F#+S&3 z>N1p*T$Plo;@E6`eiaRfH z;4irPJLeYf-An$*(?iI{we*H47>Y(N3_HQuJ;C~L zd!#EBPL@YQU0vZWr#zkv2Ls_$AktaZ9EnC!%l)BLM;fjPb)|gCWIRd9^!5f5;bd2w z#HE%8@rDH7T`{M;BNU5;qYd%uK$*YVDW6*#oYxgj2Fp9bElaB_oLS+Ni4i`c1L?b1 ziod(7BM=THTRQ5)UEQ7G`fy8+6I@s~wa)N*rqVqozA_RG*S05pCVGyIFDkDMcQ%KU zh?yDc3VRA_;w?)V@<9_BK`zGWkgM1ls?#Z!lxNZlguA*T@t6;S6o*IBqy!NaY+W7; zbw*l(Ezp`y(n=yek>n}J6myu8c<05Ux-6`8s_w#BoWtSLDhz0DUnIgRN6GyS3(J$; zk*=^)<*yG`rQ)$D$JK?Gl_is*z#bxh@s&K+0%0R65*K-qs$hG;KItbKXK^ zcvdvt9ExU`%2UZG^yj*>+Vp{Wv1O51E1EpDCr%V1Tg#(ylvlNg!g7*AGO2>5bEAa> zt{2Mpr>Sfd3HM;B&Nbc z1*QHY$_?(Uf86N_YD-UTkFea5LQ%=o*TzgmmMJhC3~*R9{+9Np&n0Hw;?r)iLNS z)akSb+n{*#&P0-}SYu%UT0l2fFemI!#!>BQB;8}HV{LJgSDosTj6qaSIGG}FX1F8N z6Nx7W$Dk->%``|@?%F67FB?P8h_{BzL&?@`ye7VEh^U5mW0A)R#6pSeI|yk=M%vrM z$cs+4G13~2`=g;$IZ_HN$H0eCE+@n8z>P%(4lAD zQGu=~($C&f>5uuhqMgt8dGb=#5X+fj%M_S55iBxyeHeW{~Y^#&xa#)?L zR-fGf+tS%g<*X+FYYC={HRXobx};--b0 zf?_}lr^4!;MvOS%h5r3<1>QaAvnWq5vH8j?F3TSHA z8)}a9c)SRAMS?9fp$n##C&HKkw#Cg%C16eV(BneZd?v>{h2(fjxOEu~pnzmn>gRZh ztYz|-)tA*`=E;nxmth!QxWv5!U7n+I$uMu zq7gF%UqgB2tRR8j0vA|2uco0oLQ|HO#BvfhRg1$d4RMy-SUi+SPb$>zk_u+bm>|u= z(oD9fvp^Q6Dac!OT?6d2EY?~P>&mJJS8n{?UDd%5!j^Hp4k}vChQqa4z&0e^AR6Lxqpdlb zwQ8+_?gUMJE0gg~OkJ%tM5|;`2Eema20-ZtCxdpFBN;akB%jeeDS69rf57y4D@MUK+D=H!rH#8SEG?p&5wA3HUVCyf3O|}gX>O>{(qE%%Y zAhTjR!wqndP%_<(^$i$m>YzJ%m{%mMrF42|fk#6?W_HAsu}EHzZ7&tR#_DpPG3hYM zIdQHsYmm}1*|bgPmb4pUV8)jigG7(s@hGYqlZa@fC1ut^QvQx5^(ixzhTtw(WT>~O zBGQ8?B$CuT&=dxiOz}uj!<7v!GSf%WnKeyOECfr~MFkBuMCoY}?iJhQ$$`;BiA#G$ z<_W-${%QJQIzvI!`jC}iwC9mARTbEpgS3=g78Si#nrjd;FhR^|3_a7N6ZyL_jcysz zI@#v!5;>^NLIX6AqOT}{Ik*C;cruXk6b7r~UBS7DaIBN&fA8{$>rUV3`-^@L+7>cnR5FHd!*je(ofZ-|r6nKlw< zE>DHcqD^(z%y>LXVye2a=;NcgtEj{=y{kKgB?OCouQOd7HQ3y=itIXsu1^9FY(pSX$S_q^xri3@|l%E znQz;r4=hr&WVDkBk#^8Vc$py(iM3;m5lMr4iQnrLlRvMax+V~;YH08WYpZKzQ3bh; z;bJYp7S={uTccD42ywa)Npn%Fs7kDq;3>%#8!39tEu;x7BvEpK0%>hV(Xp~n5|8xd zQ7nDRU1lZKJWi6PyOS+cLq=IxGo{vxB)Uk`4K%R~V+8=oPjs$z-W-cM)8}@l=C);)lri|=Z@QMNJUTA3v_;Cdk8D{iC1@n*K;2=V zzb+8;6r3~9SAQ<%D3x;=pb7Zwz}&iEV_D5SA3d|>6eG(|u$gEb?cv7qGRh(JmV##M zbKc_9t8`g;@_MR5UA%H$9iyeYxy?($Eh)QNmP-p>FFHBqSk+jE+1-0Q)5}_0bKPJx z;VQVFRtG)Bq^x@HdQvSzQ&e{ruCUZ`R7T2f?&xmR8|x{#HKSr>6t3(1RK+jF}Z}iJLXAx`Jqv9V?_f+D*G;wIN!SiG^Y)SG+xoBM@%sM&{|xd8CJ| z$jScADHVKbwby(c9|!9df^f&?Lo^O|E0 z#gm_*q8Uet{BcxY+)O$uB1sgKnrk{_S&V9MUkw)UEM^oFYU!wow0ERsX&s8@ zY+=i)%cAXZY@2k@Lmcgm8I4xN<4LM{-Nx$TDJV9@7WuVW@sdcVNOPIY%@0MRS$v_E zrL(YT5Nkz0*AYhIpq^2Q83#Wy)2c7o1zL|XTB#?y5lGR#ATpm-n(}A_LyVEwHmI+0 zi5f!9(Qu)+pkRL1o%K>v)NP|!5T;I$#o!O2N6@w_WtBB%Glafl3WSwiGlMYqNoFk% z4TadcCJiKUwGP7V^Qw!sbY69IjEoTb7pl#w&EeYthI;s`m*X2aGf!axnc%kQgBv!AZZ#u3hcmK zrW=A$oG{udAiZU0$E*hQ3>r`U@#ymQ%wrI8XVd{(yu3UdjV3yv6SCC?4MbAiX5cNu zCcyHpNLM-r>*F-@MZHy08@_Gk-Dqh@*!du+?|d<~$DtK>gu3 zcI)vN#45SIm;x7>P%r?OIs#teR7LR>Dvbib7jl3Vkbtvg1k+T{78C8|;dWW(0~v zQ#hwP5>7>zyQ&VWCA1yY>VgA_Pz$ANX7x%=Sw$o24@&9^qs?WFf{3aQ(?A&3BOz5{ z9A^Zy+J}-rc`yyv*Q=6DqZZR9(sZUOG$0&XKqqSqcSKrv5VhP?%`M?r)=ULhx;s+0 zv%K8t$dH(=RTe9e7-^za;b_8kS$?9QkI6z5+m+@98|AOA&!T5`w>88`m6pLAOW=8< z6F^VHhBqZ>vmri>8piHXfnl_QW+Rd0V05vffKz)dLlW&%WxX=#lt%d z^r94l((PG;2(!rmNZZzI{1_JDX(4Ec^_ag$RLcTC$ut?F7TMiQrX4rZEX`&K5oSb* zv|uCxsBMfyWTEF&R767UF`PYeH6Q2zU6E#AB)%pbGu1(BkCaD4P=KtvAyeIxd9>?5ZZSnbb> zwA&dnqoJc=LEi#9&1ozTUO=o^txpXnW{0=L&l8)#GXD2qlBaZ6wuI-Qo*` z@W<}Mt{>NJ2kzlGbo%)Kd3Npq+R2QcI-})zfX95*`&ek%pizP#h!;(0xfLZt#t)Np&~I z6mz#xt1mDuSPvZsih__tO6EdM=aeFN*vTQ&SBxPxl%$ft4q#IQ7c5Db?j?0$veTaG zkkfAep@K|3NQL4#7mqDvnS(DhK%t;~62q=7rcc6o3iy0ZeLS9CGPGxTGfZCWrqilO zq`4ah452(;*&ifr8u*N)oM#88;YovzS7CdA7T2lZ?o)vtI`&uIfzyvkIz82i6V*O{ zOQfF6;Gop#>@F>18ksp$^myoaW+2j>Srs0fWP#a}XozFNA!%Vq5!+%7idh4UVRs%U zbFq8VL-UC&gVPNaqY-DBKF>4;={ZsaMQ{*8p6=LI%kHz?*}!bjF0;|Lbi@oaGzOZp z4tTntu+zCTMV^eHDj&we;`l`Fs2nJG&6aSEC>auXje(!;+S+L^jHX1WC1^qRI?Yj+ z;&}~~B`7b=JZKjdjidwBX1JlPB)3bePYjU7BtZD-Ub!K-aB7)XXjAP|iSU*o8l(?X znM9c8+396a9>q}~q$0D)5Xb4X^q~-Qm=noj(*-sU6CfNNqeX*dsBRo=%iRj;P_b== zrb`A=m<#9V)w{5{QdFMt%Beyq$E-=^Xw2!(A-!wR?WPRadTF8gkQFqD%ZRsKzB6Ik z51ojeTI7UM@itWItavo*dhEYJC3wE9#T4YlL`CD`v( zMq;R36=9Ya$-Fm#`l2C|cIs$>C2eDdyqylI54s(O%x+aycE^lFKFpprLqo|cF)4Q^ zV1j8dr+qSx;9Y*U39KJ>##fJ zNsgWmI^aJ<^%s){T*a~?c27AK1*SLQA(UuFRAHHJ-U^_HzY4FpyEW?9#(oG9 zc5brkghb>p*|GDWK{+ZnIWlkeU?}gU7k-9oAAE~?du53H=T<=x>Dg$(W;vrC(+^m` znFFV}tCECg-k-^c(1{LpRu#(7qcIMpa=W4$l9y^wMq*LbJmmWjN?$|ph%j5;p|T}S z%d+LlmaDR{i^^N2l=If8FS}I@ksDXD^589|cq>+5?CV5@W;a}Q{7eCJWvLiXlSxdx zbc4>tSA_F0394Ju))H9V3-&~kSg4Gu7MJTrPa%fxt}s0a)6kIBbaL_+Vd$HS!46x) zX46&gqGH23V?)H;N5dWuO-f`W!rX3JFxb|BV;S}7^BOd(A;g}P$>=1v#B^yhohfI^ zc*7;ayE&MXY8B=d>+$+wY%vP4Ds(Fz;s)C9_v0{q6#Eg_V&7ebl(3d)?m2ULm01wu z&1>6N%sPU+%0^q&=74Tyq{>-XPhoWzDcToGViP9`MGvK4`^0BW-!8?W-cs0I-L*JK z6rsD8S-@GOcVKoQkeaNWh7Y0mqUx@?a2QKDIKLFbaSPK5?LFvpnP!L=pUgo6RF5A= zp{ir8;a+a#ik*)~fR(zshiVlFUeR&gvFpMW@{^MEbi8JzTU?egi7oSW>eiL+XsX`b zW^|A-f&kOmoAIV-46icMTYik70b4rVL6ANd(v*-oF_TIkQaTqWCKZ}fXM3o+fpFHp zc`ERA)O%=SiciJ`%}WT%C=DT`Sa%Vud%y(RZea82GOhH2D7`XLjlHblG;6l z1ajvrmqpIa>A`6yI_O8;e0Qbepf{Ze%sD;`IkNGz$Bt~dGc$N*m9y7p4e&WRTm#$? zsqIddsDjq*syT7#+Vyn(6XcTJ{vyXQ53jgW`%#MU7M2@0BgM{0U6WS# z2(pWA3FYz>&ki5M@anhUr&r=FKsLdHx`O8O6qqRnb7Cr!J+!zoJE*I>tKZeWvvTjA z1G{BszxL~vJj~tb@k=~~7z;Q_T0&Qq<5ncP^f266Dw5ZmxjE3l?ZX+nLfPrSiVxm` ztM|<;3;2SyzS_Asmg%26w}yu!QV2aY4sN7FG`!qd%h(>bUMPWvwAINOoB5uBt3B!3 z8nXSGIZMu&sO@IC<`{Ui_449RpsWtla=blM6|DC)_`TEA zUKF;DvSN*y-erQ`>evO{SZyGiqt+#Ligh?N8)yhtR@eCW(UqCcCHRn6i6^N))T9yGoRLhJD>eC;Hzd zXg1S|3x-ON-XGDL)d`XgIMH2J=JawbuE%7qCp%XuEIxK)$=D>U<;(QX*XXNjFfFN2 zzdq=Wr5uoH*j4(4*iIcPeY9fA2x<%E|KDT-$BZ&hqr2O}c-5R#;F-q#NHwtR{QT!? zFZ2#oY~DYmWQWl$>V6mw*1olVx!Sll_Xz+}x81;~Evv_C9_ED@>OVPZJqO3|jUCO- z94D~$std0llRXLg%j+8JkpcVGqBS8Lk$pUl^j=ZcP{wh?)p4O+ACaWZE6S#g+n0*d zX(1~6McZ^r)TxF`sKAww^dwIaHzS+Mf1iTKe0YPFdeB;=G-#&sYP6N_dTl#X1b)TO zK5FFZ4=RDe;Sz8gJX0Z1;Bad46uZ=f5)9H%f!msr^x-6Xje2y`=AA8WacEoV-8pyD zrRQ3IVb(rfE|%dk;F(HAGpArPwPSmfF%~stGkrKF}tzj{;n*)d}Tt${dDQl=C{b&f42NwQZmii2boNx%|s42+GFZFXs#;NnSKpC zYd)Hz-42c)t|~p#)7_D5CTAgQh^ebE9WqGPW$+M_i5o5@ua{B^gxfnYrOKWfXIks5 zTADqX6W`fGK){!Y8ZISep^KG;o-Wl!Rl;Y=X(F84MDNB(mhOObP>_3}sV*}m>%n)W zI)=+I?rT>Onvw% z-S9)Vw`i!cYdg)oI$iMW>8x0burz9MM(UuV3*1|Jbu9>{CAQU}p zQt1|HR%J7G3lk1gKAoOvOEe4mPsReQII@YNg){RKD~@4!ac0QwcnvrE8#0IHX$pHR z+M=4V1C281nswyj8CEy;Eq<;B^DJk&8Z~Pu$J&Oh>J=TqN)&1ul|s$L+gkCxMC{mw@Yy1~vY&L?J0&p8qn;gt+**Q$?3YLemp*&yG&nx% zysDg-DjcSzRIWf9x<wygqVJZmrrs@ zP}=a)8b0>0=|C8r@{&*PNay9Pnp`5tWY~TD;dXv=JsJ(U9i3)YnWWvLbd~8%_B6A~ z&fq2A9FOdJAu*>A*V=9l5w7*!A(tZuU|~m#dJpPo(O0$Ru}{ z&m2faTcS3UZa|q2p6MrNN;cg|z2)W0ap0E^8BVM2@?}0)Y3JTqEJgLSwSsTosLbao zpQo5Q0k*~I?AS~kXFzk-w@fXsiY%>($J+6>?Na)js;7j{)S+L}yQzGSR#C201|Pt{ zS6keI4HJo#eIcAv8h+{zYM_U`UbO~KXIteMH|4rrxh zX__`EbfnFX>TbFAfYWNy`7Y#ds$@;|%6TAExd+fb6;&2Ma}B><6RMEg~~!4A~P0 zjdfz|=iz$*=J+ZfcO_$Ppp3}$&Z0g$tE-ld3{bVw=dtkG6dm88=^757mn|-tF#=l{KeN^^&r4-Y|7uOm4v;b+5ctVb1hYA|8(*bo7h>Z%Kl`y^0x5=Ci@{ zfKL-AUdQt-z(@A#@NDO&?*!At9$#PXz&jMM_w?}-Z%JAxzD$apcKeB3{t&!b3mjI) zbdiCt;QZG@3X4RD`A%;ll7bcg@3K>9HD`|J)0_JLrJMqrqY#e%;}c;2opPp$6!R`3 zeS@P7ucu36+08ndYBR#Gl2*quACcXa1Rm18w%O2kNa1a##K?m$g3$u+ZWUs8?%!1r?EM~_etjr{FLMuT z3S3o|{o(3e6<66I+iAI*;EmedO*WlbI*_y5cR>woJMqqGSppvu|4$1^U)sS3uXq1O zn_wWE#D}VP`@XvA_}PtEH+}0FpMwwbr+!Pl}=@n8-{{H#GGZa~5~m6b>( zNeoE{q;_>Dzsu;aMD-)r<~eP5a&1nbBOz>cq!mD?QN#E=&+_WsQIrn{cT%2Wt3CSy zD_+d>OiP1SBI&evw{?nl3yscj7;RTYhi+P;{G7NuHC05j5*D1%P-ldy-4jI3(?O(M z%>o*RVm-yJ5qi^%-rO?Z1?M8wmvtMQsH-Xk@iio*dqoSerdK`_#`dx{*kl=xP6 zU@HBmWK!O#_|cHocxN!wLLZCIR3FSSH=h5y)Tviwl!q6XO`oB+m4{Yd0rY}*ZL@F1 zs|o+nt<<@a<~7k^3%<3s`?|$)>~M|9M=x0ikwwz5>G`NbN$mfm4xtKqpAOF-@#Xx6 z9wyZE#S3#nRl;C0ztZDkFvm1aTzXKJuVSRX%a?wjGS)yIXVRdj0LS|9-AD5tiM*v4 zTv*5tHS{(}lHX{cr4sW}JibE}o*To*Q|yyyS`2ahDU$K-Ce_-Rka6ewMOb2tg5$&m>1 zlvco?g6vuWraZ-xR%S-D>%`K_VVU~WuWXY{PYE|Fe9kIeg4{VDMi|eP3+)oVts;Ei zCxC-uE%;CvUi=OAcnfk!_jh2@In)#hnXC&?3pH&OEy+`8%w$^x>j%Mjn=k#zgQ70_ zN~L*9#K)QOfQl6D^208qdy30uHU#;xts>mq-R_wd;+aq|8gCCq!#&|BN_Qb;#N8)L zYVgSvO2e+u59&c)`mk*!<<)icnkN@s#peAInQC+u;@uL2BVAqQ6>BOwerzX6_-!aQD44>UUmu~*;SJYeZ8A1{^rJZRCP>tL zq?yck?j)PdB9&Pm@)qkH%Em^$8QyZ=OJ>%*yv5la)PV3fmJAQ`frM$C0Dnp$x~oqq zUR$2^D3jw(krCNX)GpS~}9VudVcWe6)W0;hVJB4e#A$Ky(ln(dT9BUN0 z?=i)r8w06Cbm-4A=gN#KQ}j2ea`? zuPxeUhhOZWuSdsHGz9Fb2|DqN!`XJ7Kxr~{fUNvINE&bLW zz8siyQfq9je-2Ja+hhKhlqBmN8&HC3`%+?-lE(3~h!Se-!Pcq7fw5_H<)=zC6EdpOnQwBhiE z)7BzC3`swqM6+RRzf!x&VGF3s(H=@IK1 z$Xl>N6QS*mu2gHw$tPobW6D$_JJX@|7JTB0C=cN+j0eN5IBAGid7JSF-bJtfJ3$y9 zXX4!Y>RHuwr_Hc|DN{~!W|fx*3#Sw~vudhmmM>UT#VRQ zO^q;lvT5jaDa`R`YTk|K(I|+LnvsbPjZk%~N)+NCy9|x4kG?{ttWj>~8(bEnma=aYg~m$K^kMIexi)Z>JF$IV!`>ZjLViojUQR zk<_La%RRrke<^->eNSgentu=HIEkbCyN`#Juv^N(@irT23_t6cbMk?VKiC3P%kfeZgk+QTLnUQjRPb>X)(OL<-RLczDW@R@>d zci|h)V>vrq_o+a6+lmb!4O&kh&f zFLc6%FYM&}^t$kEQO5gR__IqHU+Kc9EMa_=3m^4}v`-hlJ|Okw!uyWp{EWb(uFTLk@0>PUgTwbl?z{+;Bswn;iZppeQk8%wq0#? z;Z4H7&4pWjr!m`}Z+VHvH|XDmZ6h^?8#&|F8#B>g_nw) z5*NPs11tNc)3vUwruXo|eKeHY-xbRX**Vd2iN0weG^=9#2sh8C*JS5}7Iu{-le7y@_ zCin&yevRN8UHDqTH@Wb~1mEn!HwnJgg>Mynn+tze@a-=AuY&Jz;X4K2>B7Gh+zDp) zm;Kjse;nz;j}Uy63qMxyF)nMpkl?&f0_-Ysa55d>D z@cka(`d#nBj}&}^3qMitjV`=c@J%kfRPfC%yjt+BF1%6jZ7w_{_;wfGF8B@?o)mni z3%^WorzyLgUn%%V7k;haqg;5u;A33)?SkjK@Vf<{?81L4c!3LlQScHM{-)riF8qDL zt6ca$1^2t~y&mLxU*N*`6THcVA1Zi<3!f->!i7&2yw`E!J5pBpcb zao&yF=L0ux=NE2#vyA_4e7%hGgok;l%H(I8!hc1P;4;Y!X=mHeIa*#46hyiDPKnP(EdT9vCq;rU9ReF~qi z@YM=`N#Pq6ehe?;n$$Nbyg}jpGEbwdOjh`I;oledK}G`q*`aXT7b#|^!Vgyb&V1Gb z$>9)3j#T&<#Xm~nx;>9k__2yVU*Y2wK3U-t6kee4i3%@K_{j<{Rrsk2uTprS!u<-@ zn_&wSK2`BIDSW!ZI}|=c;R%JGsqkKfS17zs;XZ}0RCtxb`xQQ0;j0urN8zg#K3C!E z6z*5}dWD~(@C^#DSNKMS&r|p&h0j;`W`!?M_*R9VtMF|KU#Rfy3SXq~9ST2R;X4(+ zSmDlsO#2Tie5Asg6+TMgVTF%Tc!$FC6&_LeWQ9i+UZC(!g_kHiuJBTYcPYF|;mZ{6 zSNO#WU!d?y72c%ql?v}r`1J};DEw;*?^Sre!uu5db%n1~`0WbsSNL}ozDnUgQ21(v z|4`xU6#lTn*DL%Hg>O*!;|kxX@Fx_$N#Rc^e6zxTuJEl2-=y$u3V%W2+ZFzj!gnbA zWrgol_$vx`&ds#{tqLEh@V68`O5xiSK1SicS9rd{-%2Cr0}mOyhGuKD?Fj_BNg7O@Z%KTr|@wKU#aj33h!6= zB!#b1`0)x~t?3O!s`^i zUEzL(?@)NX!gnfsfx?}Inf8CK!bd7RsPIt=Z&LUeg*PiaU*RnZpRDkh!V450S9poS z6ACX?_yr2DQh1NT{R;0@_yUDrrSK+&_ba?Z;WsHfq3~}gyjS7hRCu4lZ&mn8h2N?0 zeub}5_$r03RrqR!uT%Ish2O34^$Nd7;TsfwpTajP{KpF4r0}08e6zxzQ217bKdta> z3V%-F+ZFzEh3`=KFBHC0;j*>BmhZew`+rUGk5u??6+TMgZzz0>!rxMOzQW&D_+*8@ zqwoTS|3Tp;3V&DOr3&A!@G6CWpm4v!|Ell>3jdqJn-u;pg?A|YGleGK;b0{KUd+U3SXq~Duth~aKFNv6uv;=EedZ^c&oxY6dqN0LgC94 z-mCD772c=tOBB9R;e874SNKYWuTuE63SX`8uPc0=!oQ*L^$Nd5;TsfwyTUgr{Cf)D zr0}&0->mR;3g4>mdlbG+;XhRPc7?B3_zs0Xs_>l(|FOcI^E2)LafOdm_!9~rrSOdk zAEWS}D?DG}n-o4-;m<3)K;bVayhP!@Qh2GtUsHIM!nZ2iukbe&zCht`DZEMHzf*XJ z!hf&ugu=HgyjS5LDZEeNI~BfC;h!qJU*Z2&_$q~euJF|g|5D-W6mAYh%5%_qg^y6{ zjT;ockHR-9`~Zb-Qux6N->mRM6uwpAhberU!jD$?c7-3O@Er=DsPLT%KSAM+tgq7g z=ZOj*sqg}Yk5YKC!pA6ln!@uHUZU{H3ZJg<0)?NU@Dhdl6ke+EYK2!Re2&8X3a?Z6 z0)@|2c$31K>lI#g#Rns|Ps57z_BHh9faKmz)fLZJ0b|eH+nvM3)-+CZcin)EOu+^mRn< zPjtSaR}g&w(W4A~A<+jC?HD>qG<4z&?Dzt}q$Nbt68*q7LpKvmOY;Mp4ZV=)(L`@F zbUo3B5WU{evxz>G=+%avN%Ubv_ZxZ!(T5Y=XJ{|cWb6kLhCYdCTG}6IGW2+&X-R*; zZ|I|lK8om4Lysoka)p(X>S{u-ed16FrIOenUS-^zlUZ8Tvt@ zParyB=zEBsOmvf>*ARUo(SAeUM)XNUmm2yeqG{`4puo`A5q%2L`G#IWG;Ki)j573v zL{A~wF?5pX(}>>jnW=xG3y9uk=w_llL~l0qLZZDyZ!~m0(X^E@u-?$Ki7p~~wV`Jc zO9nE+=}up`Rz3wo(RG8~SOYX$xhb-_VZ{T}gDGp&ulA7SRbq-$Qg2(M^V4Lv%IK zena0zG;OgAlp6XbqG@Yopuo`A5nV%czM)qTT}$*RLtjXA9np@VlSI!YddH`x{)wio zmw|1DZYKI1qBk3QAHULwkvy zPjtf2ClS4X=q5vtCz`fi2KwRL@y#b-_Rq7rY)C&QHK81 z2YNBlj-fvynzmR5cKplKKhaG@Z!`2eM2CppZ0OgCZYFx8p|=p-LiBn=KTmWk(W?#p zG|{vrGth77$B1qty3f!L65UR8!qE2+O#{$ClcCoT9Uf=(H9WC+0YA#P7=M*(Dg)j z5xw5fvx!a-z1q+-iS8!4-_SFN?jgF*&|adK5uGsfNksP&-DK$TL@y`WZ|I|lzL4lr zLysoEbn{~vqr0$x{9 zwE>@#OPk&}p_Ed&1}M-XV88+eT1;yWZfXnR5(NdRw3c$U;z?S8K*Gssv)Kd#wpg%Y zg(Aq!dg+BqX_D5YV8sAcBk*a2hzyJRp`#|=rHEXR| zvu0+^n#}g%>tiK_*;Zm3p|7HQo<_*o=$if z;UIT7gd@{B6Pu1U{DVa>BC(K7#N)gewF-knp{P%LE=x_&bD41s+a#1>q8b z^9X;JaIwJee;V+8gku7~MfiJ!d*6}vC%lqym%y(Q{yyOjfnOqgKjCJ9Um*Md;ne~^ zOL!IGl>)aCevojJz#9nvfN-tAKOy`O;ROOeLil0Avjx7N@DB-B2z)Q$M+lb*d>7$I z36~0d8{x+Ymk4|-;l~LV3w#6NCkV#`zMk-p2>0%g_9wiWaF@WB6aF#b4uQWw_$P#$ z1wNnfPYJIUcn0C05nd_qbi!*0HwkHMCK9=x$!m|ZFg7A}sD+E4} z@CL$V0*@yAbHb$p4=4N-;Sz!K2yY}@Eb#l&0Y6PRCh%K?HxcfATiTy+GvO|QUnSf^ zxI^HV2)7b$7Wf6in+dNL_*ueR2(J{lmGCbJHwnCfa2w%Tfqz1{o$vyIA0fPz@N9wa zC;SZI3W4t>{4C)zf$t*xOTwiB-$r;F;SzywCHyPG#RA_z_&LHcfv+e0Yr?&6N&6G- zAlxPJ<%FLn+#&E62){tMS>W>tzesqsz%vMMC%jVN>4bknxJlsC3ICRGt-vP{{vF{3 z0v}7blkjYTk0AVe!W9A^NcbhfWde^T{4(KEfrk@*g>Z?$d4&ImaIwJePXqi1!ZCs0 zBK$|fy>CkU6Ye71CGe|+|3tV$;Fk!$O1N3z7YM&bc(uUK67D9vQs7p?eO;WB~mBAg{$D)4QDdkB{Zd@JF<5-t|_ z2Eu!U$ z(z5?tb%vFmdL#&Ase>$M>Pe92CJ}07M_K9SBFiqE0L-ozAnhwOdSZ?kL!~6u^OlT5gBLOo1dAs>$PV#H-XmvGxRI5?3zBy zuIjbYHGQ$vP&|5LRr_t)7Zq^FW3FpY(k!v;P$c3=ILRKc8*aO%$F6ei%5JBo$6W*0 zm}yQdZLV)l4Qo$!!7#hBbJ8_#>>FC(i0c5(-;r8M{p_FuFHpZh!Y-4WGPS6{Me?65b2&0E$*d!7PFE2K^rbYK4-s}dm$eay1U#}_%t?RLTVv+d`nak7s+SwuGbt*47IZrr1=G||>h)L(^Gax%w3db)2^ zBE#b&ux`?QU1W%cS3@l z>?Q<9RRGK_f^os!L>2K|&S!hFmXCSu$$DMWbZe2-IIGEW@+>=UIn&|grommp2ISl_Ma=d-l_HH9b4QR&}}&LP!ajv6n(9y1DW9 z(=SHqA?-1|Mw*j=w?d`y7c;a<6K^>gDVvSx47Y4F=L|Hf#b+^|#dwaxa~z%}c$VNf z0nZ6|mf~58=VUx5<5`Ah8J-rN7M>M&R^WLNo)_Uc8_(Hz&c|~;o(u3?U^(Y6vh0dQ z;l6wy2fOaePI8MaZpe|pR^1kQvoC6&>^?9?ytU85(xNOsB|6J`5ML&8d9M za;jFtHtsaLdD^b$;mbIAD;19ow7BOlDpILB6`W4xQ`790X*LWz%DT8Pw&B1+^!>(@ zZ$f$#$H983VFq)LHbAyiHP;KMjFa4ECznbqHDIP{Kr3~)A49{Sm4K*eaBpV~h|QPg zT8idcWcn!E>mv7k9K*4RF7F9C6Pid2>^0MZotmP=rC|1_4tEErQMXSFiw{YxMa-7$ zJ}QO@*=}j^U=RR+?6#J_6)PaN%WiM^`#7ty@ZF1W@`L%O*uHRlkv($!H2ckIb{}g0 z6J%`oA5P4TC*O?pCQO>T_DeYI8Vk1yYtn^CJGo8NI3AOWRKFS3Zx+;noNsIZPEE7h z2)n^ZsP#qRT2IC(LND!bKPXm}|4KGmdFh|rG;v?n6i1@f%wT#C)aVKwv8t1y_}8fT z4yE`nJ|Ahe=Mcf`_*d+;jdHW6x(8$QaT;+dJDjRl+=-v&VB8j|NSAw_bUs~?En)%; z%QJvgHJTi*(R{mR8*0>S*_G=pd)DfiHhU%LU#1gqkU`)N9As?1DjDnOJj>HH%ZDfG zPsZ%e)WQ+?J1lj$cfxQ%?3<|H0xQ(jERPMv3nlf}4uh8-jXa7&L#;r4-TBas!|i=! zN-?Lhhxf)29_#UYGz`|BTq#yPIN-jL+{c1DLi`VCY>5AEM2`QnF@J|Ufla|${0JQ~ zD5NFCw~l;Ha(z2K1Ots{YcbIHjnARXwP+V=%xx^uIP-dr5~+}|s{-zIQTn+J}@dr>n&^Qs|D~xLV1R8{zLF4mSWhzE8eD;~9a*qgW=_ClQUmiYAPh z?MoqH7Y5uLE(G`G;EoWV7$QE#Xne`5fsJRghtS4hZ`UsL_nd43jc=8?M|?#S%j|@=jcEK3nlPgA-63JO2i$L+2kv{p9U;ClM0}Yh zc9;G!u<>&C5Zd^#h{h*|_>PHc+#w5M(fB=<$@w9o@jEa`M2T)RpQ*lDP78M#xm~!? z2=TfQ@#DHE_tifH8oy3^Q{!u4?7+sig!rn+7ufjFK;tj6OwJGW%~ch;t-nm%Y=y%@ zQgkaIZl=Ov5h}PD#7$PXF&Zaz7%#ZgkhbJQ@oWM9#u96j578#8u&N-X`zM$@Qq2yS z+t`H5X)W(Kd}_?y4&NFfejr4Aj}iIY{{%L9fh|g#T#V)nY;tvo@5|&1Y%)A3^DdS- z8)Z`Cw=n05#-GU5_|TBBF#-3N$$f-yr#>T`Cx;X}%_!E4Rtpq+0ZnIWzm+8hit&X9 zZH!`yZigq17~}2`@9jq0I&_c-)q)V!yg=kn&xOcTuE>>s+2?D>JZOgS;^O&=;eFG|(hU5BmbRIax3K=5!| zEDlywGnPF73#ukW?M*^Hmm|`?vhxSg6N z_XlvQPI3jp{Q3S`w614;AuM2TY``XuWv{7~$FfCyqy-sES=eQeY^Sz?7RWSLVbe-b zPAxYhfEeG8CUtBsjoxMa6tr&7%tZ-cjd@pK=i5-0%}@8mtByp;)WhGG92Mm_ImEFj z<^Bj=#;otL=jjXHCq!1e5=CKAW-79tOIr6RSiL>@Fp^j#>m5N|tyGG zQN&oPB1kXXN2QC=N~wdhixdyO$MmV$FPXZDrLbd%B?k)wWA>6rp33Mb-Zz&0 z^Z*&pGvipOd%IG1?!JI=<`8O!h;;10$j+@(^RWAv^jGZQ%65U?eq9He}ZxmX6jZ%imy?E6KJmpm1M4Uwql$zT94++U>^2s2+q@QQo}wn?J? zA3g)yB~jl9*n16>In_Z|=FSUpW8TMQa#QwQUki-83UgU#q7!)05;-Cfoj<@z^93{+CY{ypo#>|_FT?N8!mpI>iX8IH zlsPm*EP8I}kmr-gXiql7SjLzRI?o5d8jpX3Q4;vfZ!vlI#nl1OXTgUyjb*2YC^m!B zr@$Vvq9_Sbd|xQ^ArdwwrR;P~bF2ynNuPv**a2#erRMs^kU8;e-#U);V5?D8rg1^O zpTs77W98Db?cSO8bM94G;h8F6-y4RS4~vBiRlyA)J-9h7=2d;8Eprvh$H|Qz@>@|m zJ2R6;GpG(hRS0UC%-MCV-M|G(Oo|@z7^3YFBFyIDGa`K;VGfv7VdaiYs=DZMry_-e z5XKGS0dS~R^Oz}>8<|!k;uxN&m50yMaFk|$SZ@E$eMvQ`+L1n?h=W58KKz>1O3irr zvTh^)s!8P$tfNEll7~R0U^?+ z6cI;yqW(Ugh%hG}Dx+qx>wxjfdS{##Lfch4obnBjy^H3woWaN* z!0xa2YavsP1t!VW8F&87xQpfM3 z8Fq1I?XW8faQC6JK%ZTCT<1HNc5AvfUIHCv%*qaH&SvY%<_VL~3~^jXYA(VdE&2GT zBw%=Qw+zQ=hW4aOjXm@cL|HgYa;-TX7S6=t&6M2ImB&Zpm<*|`IW4Bt#)3Q)TVmy- zW{nGqG1+vg{;>t0D!?g`D7oBFD;=F!y00ja85$JjRG}vL@0s0}cx8)JlEuYwyQ#U9 zLgH0Pt?R!apq({|d3E^nuM43T`Bi2Ax&U=L!seQkPP*}dEq0s}J0s~PzBvc+aXQ(J zNjll#logzj>`r|1^$&22%gI4^HTs;}wnySiL@@&oF!wZk_rg1o%#9g(9L7gu&@9R$ z?FTUfd89NvL~h5%%0wKRy8-uNy>L8UyAl?jdKn5?sMqM<>4*d)n^9nYamwerX?)?s z`{rO2g%&#`wWL-ogP7lZ7qfJ~3xAnsH?Q$-oU3WwHk7<;B}HU?Jv2w!#N+Q(EE z(_q!*CQmAx?)z$Wg)y8XyB_Y6=OrYQ3u~i5%`FJs_6m@F8-K-(Myy1rM>BBAUj z`e!e_F~}~~{*R~WTTmE`ji_=o8dC0Ha9hNY%@N$e;GR!#E?U zWt@$yp?j}1OtKj}LRi}99iaz(Sr8TTE(4phhUDl<&F*`@L;|&ehuhGLd}V_>e=XP& zEIBq*_}CkPZO^O#DSAV!J+mAs>W2$*5NBt&so-R2emk=oX>@JY-Lf<5B}ZB^)2wo6 zBIIn99I9hyIwYsE89^3H)@r#Ea6*DB0_mDqaZjU+jR`1(3c|b~iX?aB~CG-`m!s_5o;13waHh>+u)B*#dlB0W$c=6~YUoqQCY%l3Qs_WceG`Kd))~hP1!~Qn?Hg<;4 zIG;t|b85EP8)Y=M!Cm2UDO6(i7vaQgC0R0t85X zJW-EJCdld`h3S!e_yl85g&3Da)-xOW@3*3yz_S zH_Il%F7EAHF`V^fr?Jo!m&MU6U2Zo}wzV4%xK9FJW zx>Jf3Lq^NHf%5l}@`_mARe&+euXOKZ|4}oUg12CF_F(v$k&VEpU9?<>PA+x>0$<0W}!!N|8IwxM<8`l#+6@G^f! zCFp(3UC(8x3oj2!3?Q}1Z$-6dU>tU$&sffP<-uydfdOjS0%wQz%U|t2f-35K%h^aa z_W&3LLRY(YAP?7L*){66Fcf2Grr!9lYuxr^pNxI1_nfj~ysLqmu2XyI9rCiM1|4)P zI|@{A*wD5Q7b>wt@o&+V;(e1&?cXp4I-RnShWk{)mQ%I>P3)Efoy zB@kMwhvO%U__BwJ$crheEWDVa@9MG?7dPv=?8;a4&0J2ciTcw~9f)?F*wj@BC(Kp1 zGtet=LzwcsqZnIZ=ssP96Dar2%`gL8Lwk%MQ*C7h`dNr$QS2eWU4EY2cO0_d$?V_p$SslHE7L2q!f~9Kv^cIpTs$oSj8rS z6Eo}ce(J@yT7~0TgCh8tE^AJk(Gis>oPZ3wXzzqDc1^6ah7TZyS@UdbpTX)!8dX1Q zWW-j5I;RU(EOz2{USi!eycICLz?p@LVV%2n^*qLuqCGbn#KP2`jAacAMx~QG4HLcD>=Qla z6Y*PKVWMq91ijZa(Y!2fp54?mN|MB0Lt#Kva*=K~;8r4$;Iw#WA`bP|*rh92;O~1lVx_cBWuO;VFn!(E+=xx|VYU8xF|& z#fQ%H62yrmz)!$)0-hMo(-2iopN!{Z=t~pbBr?TtcLe3%9ANJX%CFT}tMFbTLk63^ z$#1Tee#0NPk59CP9UdXO1!=+|Zx0;|WH3#=K1iM856B;5wzX#jb=8oNOH-lwiryau|cRVbb$)YpFd zl=L->f>!YwLL{CfMD*i;NW6v+i6;pW-5wB$2M{9h3L&B^0wVDMLL^=xL^M4h5)U9m z;uS(fhX_%UHZu+Y)-i4YSmOYIHEsb|I}Wh8HzaUS%`2X zFi=6q&z0-Q4LaIH6n0GET`I9JAwdVvS>1z069ydwjq4Zka2MIsmVg{E4I{*o^ED5xBQ+pM5MV#rG zPws8lHK=6cS{Z~z6Bb(=S= z^Q#twUAbxdFloOF?FGOr8BGF!mQDzX4J*V*@sT=3q?*Y{*@tXzZ4mX)6`81K1T2XiFL7P>3WA!x)=#b!Nu8XxF+;#Pf z+R{JUE7!Fr$;Nf{lYb=ToAu+MRtUMSLG7?x*TvXCyDr2|xvuNppUS8pk#=1m%5_~; z0g-lHAj)-J6+$GzjCNfNP>dG~To1WtaB)U(yj|i=DMzTe(cvoyDkvrx~`6Z zNV_f&<+`p%g-A?n9G368Xm{hV8cd2vIxH>@RXDCU2 z$9~Yqv=783#dd@NQ!m64PJJU}>?W)SWA5QFe0vhR`3Takl^vj(PPH?%Q0dqi>UqPO8=?;AM0~4=WR^85B94xES&682;c_>vbW^}5H8QomAn?)D) zU1sfuw=}VK!AQsi+dvy0BX?V9X<}X3K8baG?vgdTDOn9sY}M?p>@t+it)kqrOA(%7 zvjuC}9kPIwn&RSx>~%GA<)-jbN8`&o5r#(hbi!2me6L+e>~Fs!*zd=fZz6Kj&BZ9s z=i)+E^pJJ-qLFUdqd5%5`S~pU3o1cDR&GIsE7_0(6{S>w(_J*ieg2W$;+nZ?RBV{* z2I?1cQQYs*I+1!6cI5E+HA^>FC<`wd=U(2gxC(ZtL5sTy#a-2}xY;>;q2dn3 zf0(N!`#`w35L=mM8|hSTe-dPPd+3k6puL+O&R#ZbfL_M#$t}IzGID5)-96*jK^bwr z*RNme5)VixcVH87M}Fdti96}(syeN@HoXAva@J3V#oWU&W9poTxjBc8WUH=y3bWcC z_OtYY987E;w@2nA5jUCpaEj?dX5ASu=>KM z4}ygX)}23Kry*qz zig1rW`zh<$O=^=u8mt$2y1`0Cz~GxI!cz?Knx~>4k9UQd7&~*eJ4eHNn(6RM=AeX= zraK>=XOpD%fm0A2yKJ1jCp&fZyF%0AJK*qVsLp|Q8{MtwjxsSK?BtC_apG#)3{8tU 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

    &QcBR{@=zt8G-r^Dq63sKgPd~2JVB3J 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\)oE7P7!6s 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 z

  • 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

    y4dZg7QA$gQGgAI7E=M4bF-~1m{&; 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≥PgE9Z&cak8CyplN)u%4C6k8E-Kvgo>=ruc$JO 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

    ;oi_6 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 #C zW~p-+$ci={mmHcHf>Bi|MpdehjT>~gMxfxuEcjI)N+Ev7%cPtg>HOe-%*d~C1E<8& zQseq@1wdi^S0?Fp1o%Z)mHQp0s$OX+j>RBt1UeF}o;W13C?U=CvTukf&lzy03n4O~ z5GQDq0i$PXlmVk>Xp{kb!T8`ZxPI#@WC)j>KQWl*B~Hxn89mk##D+!|?X7V_J4c|k zZLp}Wj>c)v)1Y?>6t9`4By$ezX(J4^0WxkMm#p9R-{5*l@L$>OJ2OwH9%E2EiMnZf zrH{Yiw6`5a*6}J>@X9u8D;yS!Ns0QZ7SqD~nGv=4r>=%*aZhp$l{UD?rMFS72`#yX zN*mndW$E4qEWL4qsxFMZalIF=RZ=nRBfyxL2gn4QknRfXqFRmBPQ zwnY^gucW4cE;aa2tHJchaqJxwR^QnHMS;x5jZx^0sCQ#~2Y_(Zu6`RH@zb^KA4AXK ziIIUEJZ)FhuX8A**ygWwoJ7Q1>KM@cq;J=GJfoPQGnWDTgeA5|>k&(VxsMKRbZNTU z!v65{ULtHs9M*Zp4bRMVvPrAtbk%Un;;Iq$qdY7P?;@qa&0?i9?<)0Fg1l7>AzP_u zZr&<}kge4BfcpQ2XtYmNKSAn$;L?P884a{~iKL$93#!F@!37`Jkb0IO^)&JRsb^_W zEv3N)A7XEF&(pMAHM%0ReJ2gNq#q43%kNZ*ywx%qA#_A+F;8U-OOY#_MbuX}u=F%I zWYbsB^~zZCNSCI=2=aL!FLAU{D44s5|K!N(p)=64uc{r|GI^-UgmFsdwYl60`8{}T zgF6w3Q*$Ba^V`1pT|nFN+?B6hhEs56i!X>jUQIL1kv5ziU8P6af(=_!B6z_|Btb~5 z2%hv33lO9$WR<~PEJlLN3YkaHfM>L`FGQnsxFgZsdb3#}zZs<2*{qId8@kuV$(VDH zgNohZ%(RDOZ-##}PP?u&i@kR^8LYC$@w}|S8}Hy{Cqff@6xhE(hfepNe$@a7`#g;Q zTpI672WXz%vs;-?H09<5vs4L>%!*g9b1w?fRQ& zq5+?Un$rnxbtI-eG zV86k4z1n=wT9yhvj2u+O)Rj>I0-9C;is_A%rI=02=Iry|kl_vK zg{w@Bz$$n=@zN7AwU`0g?I6E>~csEdLU9nr!NYWPtl!#Sd5~x zKoKwnju0|FnP|@OjKczb7r^6BPD-WC?Ew@3^(=`xI%@)NlZLTzp1fd zlOVh|eh9ilv&Z2$OB&yC3eNpA#E9c8Jk2xZRfqhi{Odm;K~_MUo~hvp#Bgul z-*ufW1GLDh3IOSD;r|paR&Xg?28?2y#OTnhY_MtJ9w|)SmQq@nQ5J@(4>jGf$TWAS z7YBs^59TDwDJ_Uo(lcXhuuL0d(34anf-PmSAV@PDYs?S@Sr3g#byE*fsjl^~bX4wR z(zLBY_MK4;2NL;B>E=`kWPG%tu%hd`Ws{u+2B8$-?By>eYe@xNyV>8 z&GsH`p8O|A-F?8!1209b3yk-bL0Mbixd`cb4G3tuS0sgFdC!965HVV=_htawR5L1TsA zNU%>q^X*ptBU!z~&Wvz&;EVly78hp$v7aq0f!KvbM(ip1{2pHE9=x>A{i7rCrv|kU zDip&qb3oD-JU%EP3vi20wHe-HPsNQCLOb`lw>w6|>k8Ir^o?$-ars6w;$_E1o|dAN zJa1#>A9OKMqkYiH3Zs*|%<%q84L5)>QW~ zcI$T?TYvBLWWzA)Fyf`~`7DhCTJC2~*AW(w?m^1-(Tij*H*kF`5Kn3m`<$?)->w5Q z@38BWr=z9oDB9iJXbz+P`z1%_A9MSVLOQDt{ae}RmIyU@kljiS6mtsDnZ@q*EIiVo z0;@dQDaG-suUFV13)@|83{=Xh>w`7-ybi zbIcPM`GaLk!a#}qAi67GrQFO|7mA`SSTt&C2*OX7f9nOxS$23b-xPW=L2cSt8d-&c zn5DLtj)wG0Cd=e-@*4ieZH)sa4a5EO&h0xFr6PBx@YS|G4U8-%6at{U7l0~)S;Mg_ z0Q_zu0Nhsyz<#i2tU|$wp>N&F_HuTfFvstMlIH=_8|vn}}3;h~S93a)Ter zA};8}%YikB9OFeN4zc^apY__kTk4?Q#*M7giwDRC5BNWL@X`b{{jKK*#YDaoA2RVi z0+?P1fMH?_O8ZRgR~wQ5X6YZeHk1*M&fg4<5aEPTr!8j!!0m+q7(&LPv`>iaLvnp& zx?R(YC#I#K+*_dBDSQYNl1k|ktQkxE4AAkS43|hUuL%F~#lmZm7;nX)&el^eAqr2z z>1q7H3lK;0`Ak0Wmq<>^M^R}PTjH(t={&orRgrE#1I0J~IxJ2r$Sq!lf|J*LREs~) z;`gvPAfkm1EDd!AGk}F>SAui)81o!X_QP20S;=cjL^L?_SE!uey`qMd!L%0%38|xz znv6Y(^N7>E^N4-$iUUmWY7&*j>U0xuvfPq)%n0=(f~auo<3#*6(_Fmuz~d1Ix2l=^ zdPhipU)=h*lK<-(6koc@6c0@%mtiOhhE3KQ-)D^(wno#&-uzVqG5o!W#ZPB(pTEO_ z_dxmk@^h$c`TGx8y72cIqz;(Bp)QWK+#LgqEO$d)OjDAoi~l+uXpe(q*7$+HMjYJz zC6g2FNFIC>kqAvv2h)6tJ~wSqsA#ZUj z74@uqa$e<2{mQGP@+wwd#mWod$4$2p4|l4zHl>E>=xBY~e1?3OE`Lx0nAD%K0gn$H z57q~j9+gSJQYz!+$@;CjoEO$_EgizeZn)J=vc%pxr!yG&&d$)D(R-`TOd%Mm$qIO_ z%s0?V6GjslN(>yUo1wWD+`p(H!ux?@wGf}`wAvYBB_G%%R{N_j?F_yG(tRPl`;3i4 zNUMdVLl14R@%}jU?Y=p5g}Bum4qfVS5EXJ9`XO2jIrIdbG&%GQq~>u54C;F{ zKSbcCDHOAuJ&@7-*T#Vb9|OxQ$6$F1L;6{s0ckz;r!4g8(C)Bz)zBR@t~Y#|4L-dt zn)Es~>2+vQ2!wBBK{A{mu{SL;K{}spJO!<=h(PBAkt~+Y1i*;m0ICS!ra}M?5qw{e zQI_4W2XOd1Z^wH;+IJtoTRjT3Z#oh~?fV>MX-P2Jca>Mm)4s2r1cbN4c75$TK4s(m zX!&3p$`kmJsu{&Z!zyd4aj^C!QP`KLurCqXYrx1Y1E8;E7d#9b z<8pL>>#=jNu>hj`q~$KQxdUv=qvdLlXAaq9R-+X{>Yp>8A+$$&Lp#)icC|nQWpBgu zGcSRq=A6-jiVl0q3qBk~>ENTc+Fh1T6*gvt2Or#xx?UZnYZO7r*Z_TR!4XwZt03*^<6z=v#D<$1Wd>;c+e zv3W1GJ=XLpBXPkShA0o{2W=ck)6Jm?JmjHV*Rh$A=eUs3o-?Wpx?q zZN)(qJJd6Sn+Kt5c8tiujT`-K1MqP4w-YKVz+OV?E{y)pl4kNofA2xc&>0>5{Trgp z*O@)NT3+w+sbirE_jyLcF~zU{+v7#i(cj+hIq~N8E-m7MQeb@8yDS2dg?pD@p~bLw z`7vg8IV;SChe$Ieap^qso$Yh{gDE(dTILK*HOT#-G#d}$KAgg%&Y_U zzG5v{W8+Y){5kG=c1BP~_FBiFGW*j(&2jG#>o#-T15rD39YCsEI>;j^A-$fPv^S48 z31*Hv#vwA5h}@EA9#5?HsK}q=Zg;Nbj-yd|T3+P_zjD57S&GU<=eV*VWKYcu?PI2U z90Y2GcOTKopHt>RDKy_b4KFuYod|tZouMsQ1Fw|158B*&zMBVI_9}YK#ap1v7Q^uQ zprkkJ&4W@1!#gttFbwCu2eGT5Z)*TEd=>on<2GKvx1CUM?)yu)3p@Ay4K&#LH8c19 zg_qRt-1iMMA9}wb04zv$A$1qL-(+by&-?9wf`#61=PE?39F1-7?bY(U-&Q=29()HT zCh*REWfS5i=Z+LOIoe7D0K`1 z>pSzdbd2IuR{`cfDFAKbdyM}Uio`ZfL>uO$xIHlb7m>c8^D!1(VTwMDbe^-turw8K z9U*5G6EC{Wjfl6qy7(+^j zRoz&tPsFx0Hf(D@3Y)pjYoTc-GVfCSctlb!f)1F-yuNQ-30nFCmh-VwjYB zR#Jv2D2XgNMI%3zoJUy}`&NYcCrN=Hv5|RWk@`nTwvg8?!yev8Oh-BW@luwU_ zxqkxXKEoe#@uQAE$}%q@AA=991n~GckAZf_lM5=a6%tQuWDMKh6A_E7>IwFcmn(ye z>~svU&O2C5#6o>$j%x=8D{=G$_ZaYa3)^9nWmN@Rdz667{Z$&teq!+W{qrwc71zb2Gs^CPANph*u1baH z1bB}kjh>NjH?>Ubgab&c18{48w?9G$ut^-itKgO1`FjDsjB5vSc&}IPSs#VoPhLWX z(I8P?41Wj9HSgf0ue=z(t+b2~w#kd(+a|=i=R_ErGYStmF$-UxM@L)|9O4?y&LV&_ zW1VyNz>m(Bm;?AJc(<;#tQS1@6Sz2BWoa*A)Dn$Xx&!G*@qP{;nl23{qel>P>yn42 z@%`EWk4ObvAes9j$V7;)7hA7-$HSZqfnw;}dT6kFEe@#Te2F%QYZr{7>F$lu(cIGH z<+(q?X{z(U6G`T}guNrq8&_aBhJc+IigZlD8>wJ>uT7$nfNvL}`CzwWHb#!{5bd!Z zq=J`QO61EckR2ZZi}hr&42J73=GNBixw3wH6cF!N3!j4V^25R@qB%Z9Gf|P9!V5w? z!VEXp&=Jf>G1F%D2t!t>S3Zt+h)VHa4_LSj8;B5Q*A2f1#>9%+CS!aIfZYl50aE^9 zX<4TT--FZIMam=1d{vv&uo1y;y+q#VVnzQh4x+;qECXH;JBZH}Y=P_*7A}ZkAyjfInX|#qsWcEr zDhLK_U=NKl01~5uPkKm<%0$5mz98nE&Xbv|ll;v;3MHQzZrt(v%BrV+YRU6hwZcmr z1gm}qWhu<6d;FXMvg#-giBZ(>@zn6~PQxP$Ich7a<#q5CFwr@wME#R3)7HSYJJhA7 z!ZFpvhsfc_#HF&sF2`ND39YA1qL9G!`Re+yD;~2{}q}CE> za4qU06~_-5HI0^K?m)y8roSh~JqUYQN3=ZA9(077tG76N_zG@&@G~!2#Eu0mB;V^L zR}f}0T8ZQ)FIhyI#LdO_;94(vBp3_4#03e5ld;Fbn~+hF4N>JyNRZ1zUX1vk&ba@F z#aTXCOp}ekoJ4TENlDBQOhEvmCd78! zKr%3>j1I$5mqRtp-VHv`A(Fir(nzmmz2MIeQW|*UkY?P^CI4ECF(yNzwbcl#5spJR z4k0@J$u-H^Xku~{2;eb2f;O)hV_!sOlXsyZ!w5WV?EE-j;5#SSBTUq9F*LCoiZsht z7DP|Res%~{1JnA(4W%zqOQzxM=lY|O>c0bJDrfjIS~9kS@5RF{!4v5fI}?;)!k6Z* z1dA+Uf`$7zp_OdoGF0wifkV1iM=(HD`*;vr}fYR9~NO?!75Yx)4fKefkXBv<`>nMaWGInFMv=?8!%(7yc z!;59^foby&%yxHtDstNn%yu&u5Dc=ux-ByhHDg+MhVZ@ULKFXcP~T4cw}NVYq>dYUkPv)4-Eto{oL5JO z((@e%drZg_8pD{OQpgqE4)AjhH z<=o{+Ggq4W9ddLVXfMfZ7FNh02(lz-1pluPe^h9fAfDsjYdQYC)*t^?!Ay#de+M+i zI`jT;XpwmwJO-yaWK5kpZxdvCKOzavV#iw*l$|W{mY?Xq=3(-ZIl-1Q$UN zI2|$})+1vqoQ;(+)`v9>YyGm&@U#0IBKi&jRuot@n1>vw9)?(4f-RE*0)Q!o29+UawQlOUl}TI zg;vbqEByO|Dd=LNLoq1EE?!m+{$x4x$YLyKMECZ$9mtmj5Y}d7g#09O00C<=j1JEH zv}Juw56@l8Vx7ENGzG(Q85ZB{+Ra{xVR?@>`f()dX99i#ZIm7hFV?U(Vy8yWNB`cB z=Ofmb!jC2vXx(hA=iKzV1e{)heEhjN3?u#==H+|Io8>aYe3`>#l*e3!n@hKV`{vS2 z2qh6q;djc2;bLf;SW|~2%2e}t@cwx_)qJuUY|Z(e8NUkOghV^rywGd^efnS-+YDa) zmPod(V!DLZQFqds9yn3XTAZ*aV^lXmmN#XP`w zB#L?b6sq`BYaYwSUQhE_CMz+^Cd5|ovzRN6N1`>4310i}?V&9hIiDH(seBf*#l%}; zKP4VHS};@&Gb&MX>#bqsTDBQH4F;j~O1$ZVsKKc$GkaJ_40UD=0SbGp-K%-5QS(T_ zTDVAwC<8{hI*BNQ6a~H=zD|@H_jk(MV;$s{Sv)r}*=WPfJ?Yo$Q!*c)4>TgHrdCiJ z*6383Ni9f8UfioB=VeW)3M^B%vbFVE>1oWbS;^!k%Gm&CO_DeaeylZKnU}^RjaX*E z4H=99F+NXVoSvMFF*?TS$;lX_*N)7o(Uhvf9Jx0nO&Kt+F8TZIqUtbd1q7V3NWG>nuiC@ zupfN(<(uP||Em8=i5k<8&XaRmkVTNNk)~9gA$p{UZIfBC$gRTVjl3%4$H;!T+W?wl zgQt1cl*p<$V3S@j>G^)?oi(K;J`%eZyWZNtgKX{Krr0K|U~Gy+ZaWfF?50=;VjYJ^ zZY$yLeX_m+qwHrb@#c3UY7Y?uIYAp0Mhu)2P$dm;_lPA?*64a zoRhmt!I%=_?&WtPwiusO6W{R;d=lLKVn9V!{bK!QU6<)P@$nPsL5*)fl)izvbP9+v z=%R0ke8c#LwD<0-8SPJ_~xZm zPW2r04Z09$d_$M|hMY7mEcWXgyc+5QdPCCm0YK~R8_c{>d_w@=unmi)*iVBZ;yW(` z_6+9${iq56}eH#s1kL277wb8j0JK;FS zW#}g^x)V!(d0%_$@G4!2N|?Bq+0t#uLB(*kBx@HmcC1~%CIns3cLRTWq(|%{eu9wo8NA zE=@&E+P>f=3T>R&o#Q2vP%1GT6A5O(D6E@N28`l5A)|+6zs?^(;PhK^)r$xm<2=hT-Md;$_<7!y1BQ{gxnwahBQUIDGDdpouMEC{obwTCfdS;EdzLK-Ml!aY>!Z zhqHhW;-{?djKz=ODioq^U{)2h)M6$ZV`gBO?B#PDJ1^57{iF;u7(ULqL06)1vi?^_hUMznAR1Fsv&Mf7xd z4&kvD(!E)<;5z9@xQolVin%07F`HR$9NtH_u_aMvy*t4RoJiH9U2jcAJ$zbAX1!c? zoil>5IitYvsdnO9>$ON_Ab>MtU2+Pct0iUumSreL@IJkkP=hRpMYB**Mu`BKH3uHk z>Le9UUcA1$dPe0~co)#HJ;S5IH1zkQ@FTb%IjD&Ko>2h-w5u&Gem`-5msp;i$y(&eD9e)@ zT_gOuE&60>VIq>($*-Z7Ztns2H<}CR_#eDPFi2(%kZ3_GE@Z+PG-S!;Enn?F-mnDL z1k_)Adpd_lk9n1ThDxBId+j*#=&Q(49x+ND86Sr(K?W5R>c6a`2g_)e=#xeSX)jTF z8XgY&m6s^J7fyP~d9F7hR#9Pom_|;t*fU^VevY02%k8pwwChF>?x@V`imHfcoZUL; z1Y<2@_}IBfNoc$qIr_Qsi<&}-5IgohLZs3vo!S|$h`t|9T1R_{(y5Wwh?l6)46S$D zE`blZ>#-Me-t8tohqMv{zjq|9s~3hy){WW)4QU5nmJxhJRyCy4h!<9LG_aVo4DlQt zY4fVxXmy08g7c9>T-!?+rTpc@LAc(Jg{HmYxFHr#oCEEMqhmV<{J?rf;vCQx$7tuA zDuh@eI;R>T{Pj8G5MtPLP7T5+!YINx!Z^Y@gmnm~Bb<)#5`>o^oQZHIR`X_IrD;~? zIYk9JAf#9=_$8QUiPs~`uvMX=4LR$Sp2m>DA~!<~2ZPWCknw*`%`Qm!6%b(w-6xc? z?wP@eb)V@bXg>Cts&fSWL$9Wua)2|arl7xs92pIBWIVvpaM)G_+KR01q@v)E?OcX* zq1D!fj&sdszaYjbZN9re+C+Ppn+&u~4pZB{Zl$PwQV;j=d`9*?+FoeX7*Gy@2XE@B z%wf=Cpk!IA8~)V&N>eG%KO!pAtU_}}ai)8c6D@TN=v!eSjFxBlB)o8_(sF2D*KYQT zb!;#A@y(V2X;m9%T{e!wh58*>6?WSabCxISm$gh=imqpcj-r-_ zqp0h^@%C7ojH2Eam0N~U)V}!TZ?oB@cGbZ5Aob!~Y;n+;v&DwfoE;yxa13a)Dk!^M{$AGISllEdgF}D~7B}w(OgMr1 zyVW*i$o++zLR}Kte1#wiAk|kF(l*wsg0XiSTEJ+o&5h>rPU4v1Ih3c@G5?c=4n1u8 ziqg@cOoGV3jK+p7d<=Uwc96DA!jC!U8(`Uw0y+7XOxV@`4QQG3nwh&4mdxE6zGf)o z)VV1ZjN{1;9NU+7zj$o_@$6;c6ip@)az@DjH@n^~4tRC~o5skw43i(6R7f`L2oCPA zjYs@L1J(zTPcSY}THj%hAr)ZK2-mh<9wL*dDP$53)^4K+?1ALm0nqcn%yOk!xk8^f zM29{@V2C-hFo@e9`yeWdUS`#Z!@d*0YO8p=odat7a3;E(R~` zOzCS5uPB?~sqYQzUlnYU(eg38c(XoTv8ObHdxc|mB4y7`qg7AOHy8xyJCBw6@J2uJ zQZ=nS_?AoKSE1YltH0BZM!g^U3UQYCRklGUS7!h;Csz^Mp?V8X+im}2Crid3N)L8A zDzYaYZc*~)K5x!*x<-3HRV*L9^+#!4tVWd?p9%_v9u|AOxl{QwuJKS-<$(q5vS(2V41&^Z>OgR=Bhqp|& zE7OOWA_xnuVkT=x>H*DBSfd<;svmBd{Nc>m%42aO6YU7P1(LIzJqZQYk*UFvb3=KO z0~BWw?}1#m<}8JUwaQ^%6$pwPetJ#_UO0@z%HR<%(N3d;!>5MbQa*bup({LE0 z9&lKezsXIE_1E{oO{_s~AU9cLFx)Jl)tI?7tbyBKnW%rbW!egKi)(aDwK5!29Rj|# z#~zR|72oe{YIqo9s-wYo<3Yh8fZ(CQSce(aKM38IF;%A|$_mx*;eLK^SE!z;fynqN zv)Sdi&oCj@$s01Ar`s{rgW#)e^IK?%RnLsAkTKPYmY4-qmYJjau@dcf89dSpFfN<} zt;Xp=wi28HV93MCK1T6N#!*jOP48nI#lgjQyfU0rqhdvHixqc|rr6Y>!(uL5!;=05Iz+Sra39CyNdToBcm@a+2xGu>u<3GS5Z~(f*D1K4g zbTg1X0y(7ycFHL=goPX(wqr)($ffy=RA}&ec0V?#u-RuF-^`S?S4Gnpc*KKIfP7Ht=ecSh7 zecQK&_%E6Q(BkCAh&t{7PfOyhPt_q=F0HI(LNE&2WWbnAY?A1umPSy5tTtkr*Z?z0 zU}r+3O}r1RKa-0Vuz;rUr@dNpE89~9!xLs5CLzgQ`f-7re2SHVmL2k7j%*~2aL8w` zfvbGTZiK*SZTnMA`&pdl%}+y$!HK2#le;+B^})_TWZ_IOMH?UkvU|D4lESml{;T@g zD}Uj7s)??fe^rcs8#GhB}GI+pCq^Zh)>UJ+t{90`3&_%3bPMtlV)AHn}1*sba&}r#jZbJ?c54)Fs<_WT& z1@C2bnqHMvIJCuxeR!r(@yzwtao2wKi!dmB3>L+L{gAAiY4a>dyB}&gxjuEIJb2)X zp;qZ2!(f3b!_6{@Y>DDGeLmpcbX5585>!L@!2KfffjPp5 zC;c4qfs+&Rff)492bLxuSUQgnyI`x=gBjMaxGXM<2lG{IC6wB}z!r8IADEq1dEjmV zIO%(24fC~`)=n8^0~~kHf{(S9SeiYLY~ua`zp*X1RXS12pqHH_b|=8Tg=AeC-D#D| z+8v>ubCu;iM)STY$;uti*;k|EO=A+rmt!!4OY02IJsUG!+U=CV&C$~FZbrvzKKGYS zj$AhyhfRW4XKdej#?#j11mVNIivNICx}yjf0JD-w$gD$V@?!ZSFK@%^DaP>fcv)Ot zR4avPPa}mmKhE=%zx9rttWTp5lp$5hqoQy1h9Fm{<9+4fJS4qNv18@=hdmJ=7f;lV zLs)~breE}y$Gv?&$E$!;9Qj8_z-Qu9d-jJX&!ebm0BALz_4 z0NuV~9l7mvc~YYjN{y*qCyql_o3Hag&HSEHdqFNxi}Ke5v*DfdxAD?fI*+9z$!ANX{oC)-=J4ZuD0W>;T~mA3kB#zNlLKk3K+Bey5sWDZUq>C3TcJMS;!@Y z>@JB2qD9uDkSnCQZ8ITFDa24{L~x*MJUrtjq_rrafIy_soPCuFYsv#2$?pLoZCBI< zs>RP~%$ZTMp}Pz@B-m*JecsVDF|I=wTGYLa={Xy>^Bj0S z&}C&2MY76b_+`1WU>k2<8m5IKU-%I6q|ol8ul;bc?r}csI_aEd1e~DSMWaz_aN{Dl z(59Zz)~!lU-T`cEC9@j``bV2e5DoQ2EkOnf7>LWj2BAMtz(PU=1~L`NLMx})uUamR zw%yOCU9;KC*Ri?ajY~ov^wv@7%GowM=fSiM+5j95q)(0N)-I|iTx5J4!mupi%v&^y z`_I&~-NdPZ6vibgei6@G;Z{~vqr0v}a%wGR&@!KmN_iHa?)QBhG*u!=?noggD4 zic%HDR;?%^v{q3;@Pa00Vlo|~(R!gRTG~>@7L~S&5xFFYBr2_`TBS-gRjg;4^le({ z+j!-Bp0)Nq`^+r~`u6?4-}nFX)6ChIwbtHiuiL(yec0QU&`^EqF=`f;Ldk@s_zkiY zM`TN|{9Mv8*K%*D<=zlSu;ZfjB;>99Ru9}09R}AZPxujLk}8>*hidP9%OQ0q_%rFD zkUzt*zra3aO5NEQYs=yynMsplzSNoPAUdt4a05V1@lz381JUih94tW(#7t6QAgTBf zw!$juHbD5P{xcK(u!`Tmt^%tdsQXj|`(54Mq97Kvy-!8VXUGzjzFHb)q1!siG~GINoa75 z7px!+ZXsnTrc}{S*GZK%VlI1bhQN#!vd%r|;bLuPgg}YU^?{a8sqB+s^ zN_V2U`p^9UfEiRv-J+740bpKk`qnKEDLce)Z;?O~c&j(iiEqKE7v<`w-m514JXf0E zb3egZxh<~RIzJvNB3T?ENZ|grKsLPs$q(lcLnP-08FJ1AGW4>gc3c1mnyOqnGcT7W z^v9jheP+=a{Y!oRtT4z^Ve~Y45k~>6$(pd@Jzv}=HWs4}nf@Ux9WR#whtj63^`$i& zO}_sqGhIONHnha(mS`6XIUpKbyaJvkY)y3$5`9>{j*xZtWQ)~`EOG#aR|*IptW z?aC($oOg%zZ(-w3yX+r)`_8?|k=;ICn$-rpk-7yXI2MDqW4pc;zT*PurF%Q>eM|sT z!wRV#@2ZdBzg8^Ee=cv}%JYF}PgStg79M zfNg<3TP?2hH9Ofz_4UR&{0&raLqqq0g$7kSQ_k58Rbr_!3{2?R>>9M9#gJ_X18D{H z`5v^xO6uk5%FNfosm^#~TJ>3^46G0Zr@rV{E!&m&vXA{sNiU8)_%Do-f+-%`z_Wh|$TYo?owhd$B!_y=bqXU`@u0 zv%vX!z*ZOo<~N}(1_QAj24Xu5#OO2wv95;|qD$n2ZW3ok0~dZU5xnr@1u(P4+=qkD zLDJAHH(R>=0$1>$F0rH^)}0Ks>-n(m6X1T@VO`#b!?$kid4Nd)`o9t@JM|^D!QXUk z!dG7zY1c&}!M=Fxm%B(I&%HUv068m) zVAxZ}I@XBnxwbQo%*%Dwxc=)-c&Kftj;SSY)(M_9eh6ocDF@zT5SQNX%>nbtW}T>m zJh=UH>t?#;P=-w7z~#Qg&fqp9ZF0LCW0TEolnS>|YPpTJhPu?YOo8z{nJm6AGo>WiFM&HhD+*`w>&qPNDY#Q7P`Lo(fp5y#JV7km0ttu5e93_>Nm}HYT-?Q=4`PfvE@HD`yDPmh-|uevf4z zh&5b}ELOgbGOL5_Y&}NBSxLlk{nrbQ9h4%fd%K>RqV9Ad$u%DirFjdSN%0H$bfZfo z#usBsKeVIY=|)Bo#ZWr}x)aci3|Pvq(GGx7I~>^PG~LJrXtd)Hs~uUCN2lpV1`3Xn z(T*(Ik)Up*=|Gq6u4QQrFF@&oZU8(>HvnpNW9!78bt4;Gb%Q93Zu}r03ZolDkxMs- z!sy0%`A`_$$c2KsK@>(ehU7zGbR!oE>P7%X+o_qlVQyXaGSOyVk9w1v?cb)SH$NlX#N-`8I?z zqF#1aiJtzMKql<)JbGvN0=eK}U?3KHH!3K(kUgBP`B`ccbrlQc4NE{J^@x&U_(H07 z*8E1yb*)~iV1G&u?=D4&9^;*f!B9WXSu;bBLho#sryD|S?YKZ@p4Ngy$Qz@rWh}wA zvB5t@c%d{9OW-=ozORRxF&Z4`$hZA5dR)3BV>Aa80%IhmkNRQa&p-t|n_7th0=31MzmHpfAS95d(IoWv^!QmdFg41=88r^ybO@u```|iDtXv69FH3;h~Ckb z7JQp{>1t$!yuZzK-*DthY#8lO#|5OKfxcE{uD2mjmG9^*PG+`a@>0`)pR)n0&@ z`CI}QPG$lEQ9Ku}vOkxgYkUh3QNw0ni2ab1OIN%;4I;uN9QzdlT%T5$rzU)PM$Mu; zHL<~zQF8!EGd`3RGl{`?_C)iz9;qgKN-?8Cn=f^%i<_X5^mK-$*AqFxo>e!Q*e;V^dtQ3BUDDg4kk-r5;yI2>JK5qi z3Vr~a*+S#i;W&HaNb;gANz%zp8N5y*t;e5e|IOkcV>lTx&Tv+ud-{EgfH)L2LD_N- z6IYu4XNSoN8>5$Web8PEgeopU%wXB3;?|&T1bgzqjRf3`EVwd%;Pb&v0NhBzb^od-pFVbK%G7y(uAJAiky67_QIZ&6!X27i z12F|Mh8c)4<@QT8vZSyQC}sZBGpMocxj+Z?Le&`iT%dcH?VI_SlH$vk@Ss>PX_z7Y z3bVw9;quKN$-LapJP4VoA7E8xJzb&q&#@*D*&;hN+_gm{zrRAV|kwiiq4ba*tmaCne~?S7S5z%}rLF4 z!?7cttSG~88Gc9L7vWRJA&NSFJ+FzA0tn~yT zd^Zct2rSIln3|PBlCG$yds$#e}FNO&@FgVYFHVjb=!}4Mn z2@JUfmyRG^aCb>g&JuAM9<|?M5CB2dw1XnnM-4)cpfm`1Kw%Ji1T_kliz?O^djvII z%mo^@;;M4wOl5}X2h3~c>11O>)0B_)(I|vZLFJJ~6(xwoc*eCSbq}wqD61P^malIl zVb-QHIZ7HBjKW?(aieC|U>MM%UO=%!ln-=(**k-E{yo0G3+vnt>uhauoo}a+Nt;aT zUDrT6joAo-Ax!sHV)-OyPF`o8z0ujtU+orsx%c5X%x)G<2QPxxN?umZ*^M5$nO+Qz zqZKWof${}79#Dw`09~Nj*U!RXd%M3qy08$~GrSXbPQ$C_mcSQcpD53Fx$q6Qa_~IO znOZ;ye$Rm5cuqiweb0dY{Dq`cvSJb%q;2o|yRG&kcDsl@UR6<8H=e)Ui%kQZ5(w!IItgx;NCT3^!UO?k;XUzs^cNn=gcG%7E`Illg9 zBJ9oUq!G-RRpll3xhGjNNa|GWBx?bE$R?TjXK(lOw2!>dBEvs3p_31~M8T9b<;vS) z=dgE{LD^9cw)5L!?&wdZsHabmT#q>++x>W*kmW;Av=kOe4LQtdAV_v-I6vD6bHmcS zXh!?;oevGCYYTzK#J2blAuc!Ak$Rv25i8A`7x@~-g-fmyv0^2|Z$2f-lWW-s!3f^^|;1acw?y zvQ|TTso|_3GTu4OK=#le7l^sw*EFcic>0{dZ~jq{19(JhW8rPbrpK0oK0OxB*FiZ| zqY|9KuYj_C;Q`a|HeVaezKQo;cB93+epJ5RxJWr4DjSC}a4z(QDZ+#DB6NXsUW7}* zXXOtNzBoo&`0A1QT8KE>#5d5;C0K_>lmP^YTG|5di^-a7V&SVen$U`)2~CN~Yw&sX zM(q8#PcWCq>IaQo(m%BN#eL9#`Z3e+EGHTpiO>5p)Lr*a??>6~ur=Bq zGrJgaYYmU=w93I}oI~m0)&U6PYHU4?Y38py85EB13mgoi=HcBPo)ZbB_CSsee*Qww z#VfYTy$6p$Xf=>wW-zoW4m9TvS{b3$R*lHyX0Dll!;7D3P%nd{wi7?LP?5qI$RiHJ zW!M|gW@topGk((#=wJdI_=u&n4e!AB0}(NY?TIOv2@8sm1_ge5LxIhVGk^+v%KX6{ za#JR2l0QtIsY(7Yd6p*6vMT|+y9P!BEpV4@_>QMP24aeTefV}1$-gXe3nZPY@a;&W= ze0zi&DAKitZZ?RlXlNDb0xPRFd?=Z+`v1J-lA+1*#o3=Om4ks*o3=iyIzP7< z>U?Avt*alC!1H=g3aL8p39V6eZatiuAQvrm%mCl1r&tAr{lM)lyiji*ZyDmfZD&Fl zM8t7#TgTVzdE5O>>F7YI+@r{Q{&1OMCpy-7Vsz`ZuV>!zXRVUC=P;I-+ytw%Ce13D z-OdB0k&UuD^f7v2-n<5BnjR0Prwd&ZGcq@5db)hm)1}6y2xG;I6lrXP6R8zI$KHOY zX)fhk6T&smYWL(u%eiwWszj_pABiNH)}f{Mp+i?|hsNSL z(4pr>x(;0=%78E43cF4RDrMZ@5k`3Awm>nD>?XR~hi=m1N&mE)OtPEUsXj=qV+xL6 ztM?j6+3|ZOt%DP^gMUDU><+HK7ahD!JNQjJ2RgXTiC@R9+MkL;{xki_J#5Eg*o?p? z>9^C?Be2;T^z6Cx=UuecirjlxG|to?qxPyJ??5JHU8Ck)8BCG>DU|**4h~2^2Y@2- zsxR|T-UALkxx2{xzIYCB@TX7`RhMajrhEfUp~|fj>|aF*hsFO+i=4bz4&f53V?G-| z8OIVdMV>!Q@?B~q`NJeP+L7cB#H$Go+&XklNKB<6T8Te=y-zNkUkGVcQaF@>SM;Q0 zZ|?M67Ay%~#11-G2N$xuJ`hQJiy*&Rf+T;~DBjnIV?LpWL0s_rs`w@@8E7K~4nT5$Bl6>61X_e~HsW ztTn&~BGNhiq17vv0{C7dN9 z;e&%E_!Bq9=DINsB?bJ=9sSBKSvv>Vj<90GIQ$!%JxPK1^ z&-B|oshBDsL#)wsGVkvfa58GUh8xgyvvgMKa{jRGd8N_FlKQ2Itp3D~ z42hS?{kF!ir3-hfcPTn$1$ulgZcj&rY;Hf31h=b{+wXrbjoWhqipWdIl)oq7z_h_^(WWa^lLDKPU^j77#wcO%xK=(=Rii|Jt#tVJlb3Lweo zR;-vj$27j-X;(}nW^46k0Y8xOSoEhDGR$=CLX#Z1ogE+Mmtn z-V-R%L&Z1lYj|MpqBm>`9x6WHRnbGmmQ8Pg;le+@4<=5-vT0+mglyszL)i3-V2Sl9 z!ls5`$)2g>(BK~AuFdO0v+RqspXnfjNqP8n4tTVB54AJ5-k!#35KjbO@-;wnl$EgeAzPRC+MR+I^QT(g7@W`3!|v~A+#>=ZCO$ND+55)B7r<_ zKLL#s1qt3Q1%1i7FcxzERG;2$BnzCW}YC|bKdSfX0%?jAMtaKwWc`9pfbUY%ty zX=fR!Hf^EE(**nK#EEdiKLRe(xT|!*t5N&50zo_xN%re<(}R6nD|TSdR3W zJu2IoJsEk;VR z>K|!epRY>m>)E1N+SiE0qF-bUwa4Bu!p>euJ)8@v+#l10)K=}IMA-g9>UYsmax8rW z&qq&I|5|(X0oDluYY8`tifOO-QV-U~%tC5^pwflM);+BOpgrFCg;dv97y^zY=kES$ z>fg|h;7GQ5bwk`pKAWqTwWyHY%WKfH)vemgLFv7`FQ86wVAOtf4gL@IEB6>4m2XuQ zudqxBe1R!5vgF>%*V(^^b*uDPjuz;mm7cVjEw z`{sTR&(6?yC8AsH7R%`5)Q$3P5?-V7iorem_RX#q`BxZLQAoS7+VAhU;O+1=Kn84U zdiR88r{!r3gY|P)N@6K%x1e_f#LO+pET1743w zJR$Nd^j<|DY~+cVxV$6=qb@Ir6$iE-KN%#@3?*giyA`5lonOOZAK`GX+98zJ|DYI% zvNw#79fqprrBb!0Z8^3vRwVTjE$hlq-}_bxi3^^X!PA8N%)MN~Nj~682zLnJQiqB5 z(s++!$E^?jCdw>#`5`>^dEEj+?T?c6^7Q^5rjsTlCBt5Ed0e{4#V{ZVc`puBcHbpQzjgzuSPVObA?yXS7c^eERv2EoX5>B-_A#Z9>; z0AOU#0C=M^gL}-F(F^Z-kNFtg(fTYGH3c@ZNDjJhc&D}%L}Y0Cd< z${T{^%w%~oa!GY}zj>#Mi(*#$AkA9VAR51Z* z+SlOAuzQLx)XeL`yYP9&@geZTj#`i7xB>+2I9?L~^2d=CyyH-Uz6Hlo@?Y8&<0wxx zFr}8US>xDRYzxizq&SYh31s@?_+TLO65)34aojsVuJ>{De76CEnPVJVgXKFpj>C$2 z9mfv~bB$wFr<~PEto1Pe#}{aRZmHP@Sp2smbueqz*K`qAqGdI0sJ`iaABS4{-kgDe{Tu<+17=j}m!SZZ^P^3gnxkX>qJd$eSQ-I#) zrXX%iRLZYABVS#5c13%y@Thvj&Hvk9$BxaxH^1j#92dkA;}-~9=Yabv4t$|rTIQWr z^eIE=d*luJC?W+NWpHOl3NAH69^fE&!8qPd;bN>B>wPu8UqquK5+bmL8gyVOB};fx z0e+_m&jnD@G~ofco`naYOJ%z7bO(h8@VJ7^AFkeohXi{R9-w!^(~Y>MufoH+eH9+u zvibit;ptB15}tttzVOV&x4vi|_>Z6B;xn{5l$0m?)#IwpIVV7-5^EPfw_``*$$Rh@ zBFRK7Sy_qdv6`lNhnuWqB?Yj$d&gWOVu#Y+)ij_s|D`4&mNUM{1SMvYXx5-&^=p@+ z?&^)D);e|5rq-_=jd!0`FNFzHoAr+7&iN~Hn{Yxc%n_@9lI30zWIQdGP4xb*jMRH9W@9E@y_UQw3fEqU zM6yO0*1U>Fz@Os8 zjor4x9gliZEO%m#Z@w<9`n;w;rfzTT?ZfM>8XF7-ypTnI7fSsWf3R*6tFLEA@?ggO zY`Bks)<=gr0^78S>ovKWQC~P9*6W1?nXek*bzAvlN`OFfeggdv=VIS|LwHrq@4*k; zoLCU`661$qb*rCt@I)*H)efhWZO&k!Wv4JXPk$X3ukQygF5Zj6qx`x8=mY ziROaIosLBa#_*{=Pp9hlDf2)@&7Mg|6MH*h4=MoI>>8faiK!1hq809GOV zRLxdo%^deUmZ4AK0lfNqX$CChg2IZYX%S9Kw7L6l*6{^0Zx9C7`pufBhPVN40CKxn zbqbFA;%&`-%@|0Wub$n6gMhgA&x;+=0Fi)e92j2J1__u4nh-(^b7DgQV(-?(JvFp3 zx_*@#bTV+Q8mE&p~zh}-w)MUtaa_V-cmUgE%r-k_8XCLiI zt=TinLg3K2Zyxpr_T1(n19ed)X5cVmy%~xOu+L>IGG9|eI)Wf6g5MZ^u})Jl1;119 zI}N|n@Ouegmx{=9hoHaBuM#;DgDiDjEiFzkSw})?g3j&xLG05j4 z0yf^GA_A@+Flb~lC^$ni=u-^FD2To_G#5bBjK}i*S0`jMl-gBFxD*#kJ+3B51+Wd` znomqcIANi>T=&azS*UNwfOi#OPM7TxGFtz6$9!i^7RGNh#&0x!%khgT!GCzXn|+<` zjim*+*9F4Xqdnt5nX9F+vdvcrat@LjgsyPyNE*u?D)r;L44;JN;jWHOn1)W6hQIOC zs?7V`ru8mfKsjADj_+lBWhIyi#B7c3ez?*eFypjdwn0Ui!9nx+vIRTb<%=gqvbhHo+EB5;n=Fd* z01Dc1Bu%yYf&Gz)YBzE=$#juTdfMW{h1<5N0^{%nxuUqA?*X@AC2>C*G(9gsQ0zE4 zhoDEc)c#1!*k^~3=!OmYCC{i@d8Ua(6cca=uRxgpf94Q^EZv_W<2QEkS@1cn`N{tV zC#U0#iWTsGz&rZZT+R4=HQiRu`w%@=h;7alJ^mkHm=gh`3`H_*L&#MCQ@K+nxD%g` zvU&-f3fEo_Ju*6*N`l9BIQ&H3x?p?fO5{g=UPDVc_Q;DQBs}wU-7) z>WBVF{Y?38&2t|{icyXmsSM+cmj2&?19uERKli{nml&=+Copgi`2%O7SL^%wFmN+< z;EYVzfiv+ynpge5gD6u|!`sh2h%WXB*G|MBez7R?!)`Z$ACIUqJ9_ys;tQLL=!MZE zXIO|NWhF({xHi}|t}TCuoBaqIis=E1gYhS_9ml3uVF<%_%BkzRmLyX=d|0Pw*&l^m zqCevThYAZ2^Pfo_0r?9y&pzvFlD6@9zkTIwA8!k>VZaud3aI~&;~D790#@&;p2nPwl(Ac9?lGn|bGC@t&rFW2k|RCc-MT&|o1XT?|-4%g%u?YHxe z_Fw-7ZVq&K%!(!&YhXUlXm89IZG-CbjP@k9?@9>B|Ke!-&EJX9_Pgjt+hzTajCKb; z*=tvF%XpBxcs`E326C`VFi@AN_v-v;N5=`S5EG6~7}0GqENw2IXuN*-P+i+A-PP^= z5(A82VFNrNTM9|}>z@t7f&nf}NX%7Ay*mof&_iceMW;9WA~2u?MGyP_gBB|Ja|VtgK63p zyKj^08{6jCF3%v9bdevh$7%eyQE=)fh~E*rhm&xNu$<~eP{JL_mJpNR40gvhyd`#6 zc3IDq+}xZQKQxxW%5-u(mY*unmGL-sRe=LqSl&rgj82X(PgIoSYq?|bwOsE0V*|2b zt6;`)r-m~Gv1IR12sN@8sB!c|!D@SXHOTx{0+z;Z$Ht_`{_k;tXCbhSt*_u9{>FU4x>9v^YhvVb$SIe26e~>

    fwXz;384g6L2T%cm1a2&BOHSS9eJ_p;!kSX>Aax&#suym9 z`H3YjLWO7>tjG(nl8J&2So({=P`Mxf{cX%@5g^bHr7p?^cvm*yW0`=%r7q zFe0m0V8nFa`jx-XI0yQGP!}6Wdg=q`_tQ>&+y_1@PsHu51ICsbA|yTxqL+*mCTfNw zg9#o6sjC^`QoGjG94aZf<7Hs1USP5PJ22MErlcJ9AL#?cM#eHuJCgKR@G?DDfr8&IIkNUe(Mnf%S`A0CcEhm7IC4)_(!wLBSaO8)NRF{( zNrR;F^hm0k<1fm=21(_q4vDiTV5D}{21Q;ROY9a)#_%(#7{4X>g~yE{BA5iVi-BE} zz^)h~f=P%7V$irrqw$MPpGoETg>9aMVUNY|8^iAu{7%8|H2hA(?enoWG<*&WK&o6TZtfN#T=vUf`w#&xebC?c2rR z?Lu5xC;pZKA#Sj}YGJ$hulPUEQInWI9S`coo`(G~iTV5CLH!rGfP^})3RFo=h4Dj< zdae%@NZr=+noyth3s{%bp<0(tC>*~5jRYVQLO`5roO|`iRloI1R7q`DG;~zqxcJ(I z?dqxUT0iTm|KrYRsugwF!!+mna3C(Q@=E|ARhdN=v){qG9^~sU1(#+ z8{cMRqbHnib4ZWbcd$i@OpBC{sq=bAdQbrA5f15?{7C!tj#znc;w?zWXqrI^|f~RL+y{^601+IGo;W$j%q($y2oV z?8!Z^ zl;)Sa4tSy5M2D!YKEx62_?khtx8oQz-ExeN9hlI`namDcME;3PMYg3|^lqN^*E7BR zIBS>xan^NjkYzgW{Y$Z6#j)%{{et8h2hxo0#~H=KPA2AGg@?x_cQOc@#Qc$XcvNz! z*)~zj>->>eAtjHZBy}<>edlwM;B{fCAzJq>$tl5H2Y^h_{&#Mb z+(p_lNz~qhDycs!ny(LM!b%)_8EVGmSC49m44Zw`oOvygvboodx~wHKeAe`L7}goq_G59dq%TCIP2F&|tZE zwa!gw@#@=Yit5Mga#Gq|7Yz`24e(CIcX?W(tuh_hM;f+WdO>875-dDdE!;frKtwUM zeCHU6u}oBVVkD6mjl}%Z@i0nqLz=q=Mn4?yKub`<#QZ(+u$sBIN%*x2MOdXi;!r># zo(b39Ux0vTgA(`}QN?*bC4eMx+j*KeT1tMT)sB(G3rM6c05s}0NKVux=8s119n7sY zjj3m%T5n9*e8kB};SJYt?NGp^_EjQ_kvad%0K6X$*Byn2`|uEsAB#4p{;qvm!kpW0 zRDcJh_z@&hZ79ZKa(i;&R_}q|aV1%XW*CO19UpbXKFCy$Wl#PL>m$+asimlIFOip% z`UZA-53n~F*cqfH%cQ&_9O$P3eUzJp2MV;sJ675>4>OB}?fSy*ty7iy0a6mh`v8?Z z9xE$D!FvBVN9%oru2Hz$Ecr~^$;RK>PR{#ku#>u!z2a;|z)#QzOUZ%;Q}zJLgh>Z# z4S7Af4Yv|;~wi^{IbC*09PI;N%}pRs37BO2XWFzzB1NTeZ|gkFTM*mfBAQ z4EO3oEHamO(_gkXjqkYDGX7*~Ste6|0A&W%j?-mcyq_D-d z9qogjZcjv8d0}7m#&WwpC-*nOS~Z~s_}}hH$ukx`xgiy8N=C37h0gH_mSmee>A4e3 zhohaw&fpM;OtR~uA7~Apyg)CwQ66oqTG%+A3Re3iyj)9|m_HG@_et&>1yY3xnykiqC3gjKQ;*^{ z9pwB-a$eASKb6E+fGTx|7Jn=`?U)>)E)#<0za{riL^D(C9W2fJSkW9Ji2+12QH#eQ zI-WlcD2~BHxcVgR(_vC?q_$iVx6$(9rr9HIMW$G?0YH#ip!AO;aQrI@EQ#CR*F>Y3 z;x~{;&Ct3>9mu-B0tBcsF@G8!4&wuiXd?}ExcUYqt>*ok03_+{z$K)UM0ctZ7|Hs# z&(Qkf8*aOj#VrLwfDUE;3Baq)t9?+@bO5r5Q=>}x# zNCj6r+#E>MZq_0HJ`vvxa(5G`xLeP+}o3ydzw_~C;*X1l}~p{ z&QO<-28&y{?R&^gy`z$;zGx5TT&I=AuaE-$O1K(#+_Mq)GI9II07@O8kUta(zt9Fq zqV_o?QgbxtGbt{HL;;$K`IqD2VadI-KysOoQCrH~+dfddKVjnbv8cjPTZWX3+8;>z zB;*3iBU0rDTK^L!Zd=9TgtBqh2y)^nWiS(5Z)q$X&U$w!P!SWiU#^K=n5dmg4AV8| zI;>lUm(tK__yB&&l@2D#^|J{uIaZ^4O#4l##zw&LZ|C@~b%O-36A7$hpvQ_I> zXXO8gySr%kcQW$#xkB^LLB7Ox!F}oj#KooUQ=hy^J<}QtO(^x13~cAjP;5mR`CqwJ z^Zy2B2DuTwO!NOB`LNfOw81r6dt>orO}8hLyw7dPd> zJF?!s_>?^B(JTe&ti43(d^aP1+{KzdH6#C-M>T&O^3z-6EqFvp@IXvPQF56UaUUY1 z=+p}AP2nBLRFv{2{SPPU$#ruje4K=yBmuhyh$GxD!E zRO?@zi^v8EbJnEJ79fcDF6V0Pid?m0XKCT^3=-csL-Pj`C~f$>c@j5vrWgr}pUpFN z7d=K4ovCMgske5h*85Q}_5O9B*1N8kde`lv^-f1U#g3P3o;cCPv?zbBg9~%E;eiyyicak$=enn$Nhw zA}5~5p3wYTGVB1CR!l1GEE{cgf`c3cxg zc*7V$*l}qv^Nyo66QACi+GGp7q1S3I&WS-a7GI^QLnU>e`hpHDK%(r*L$quV0!+@& zdCWM9Z_DG$M*eqO%nfHbcb7S%4aZmD7#lWeB~d#P%7g@ivT*$3gIuCE0oJ1A*Dy5U z_=gghXrlI4-~>wOwZd^-=$8b8&2|Pg`1G2@1(Ki}Z0BBVIKB}MEOij}gpl)X$=OHi zeMb_fF`^it#g&rd9Uyg?kR9oHl6$)X(Ex|zx1&nx_lHY81{UG?B<%(Fl*93BkVySn zi}#gIek5UNI}`KIMML(M+^=aa6GEv}av#xd?VZu?jR)5|<&7ifJ*o z)zMuoWDN?^{xD_x+{b+mhJKaayRwkK;KUAE0QMkgo8Q zTsVH7l6*|6EZYx2F$IzsJbtm_d|HYdkVqY>#SFc}@pDuTnUH~CupN${b%->C385s@ zp!l1LN~7~Z9P+mgm3sdYpsN)~BKi1`5)`l3;vqA~vC zijs->$D@j_2Hl9e6KvwP8r)EVgv=7+ub@##=xR_c?gmJCBP2&B2-knbPe`|p74ius za-1ZdK_c}V1(Mli{7u}I0Gu-Kj1NLnQ}<|by#Q3Id@&(|GEs7`{;B{mA(Uhy5&yY% z^i-)b6jf5EDJq>>{2TW;fD&gP;rQO9beItegpHTWb72$xT{-t9p z)0_A<3^#x{=>blNU+Oh2X3QUspP{UjL@k#mP*>+1Ddj5@(l42)#EXFeRhW=A$c!bv zSX-t`WB;O9U!z1g%?Zc56zB(%IE?)|TZ?s)cF~swCliA6M^f)~oO1ysSzL?v{}O<{ zqChf_iI*v_WF8Zrh(zi$m9I|)`rq0WCgx88n&pyv(m{fg38D0J$*omXoG69kj}g^x z6qU??;y=*NaRxN^g4ALylBrF6x#D9&@ac5yIi)RAq4;Q2NnNHu15hsA^9L6KjpoMuM>$vl)sX^o1c7zT!Gu)UVJiJ%n4Uu`O`G;|m?pS3 z`H#J|=_ZG%eX#9a2^Uioe>sD8(@{N-4^FrfBx8N>08HtheM|zL+S{*H`i@^zq9GU= zTfU^gCqgGA^c<1bF*4eO08Ht-J|+QA{mQRZTC}I%6D|Uop0v51_>Vq&QrG(6B@U)^ zfRCv>2h2$h=Ft9@PU*hxU>MJf80Ptpu3tMKw5DGH@Uk4>4(3H4rnJ9*M5TnQR;HJH zal?@GA6+jO`QRm7Pt%H}Lxxy>mBXZIu7jE8!<3del3Y-;BrQxt&az0Z1K-yNFL5xX z`}>&6dHy8><~^8AMP6d24^+RBP=8Ajj5m)l|Iv|rC@1*f9N-S-S_i{LKBZo|mm7>i zN78>3aO8(lN9P3JI|sOf*|EQ+Q^I9WLvkMn<998RtCvkV!H4DmcfDNXV7Mx2Nbc!i z%55(l%(R>^Lvp}GVw`XYQU|`T1E={-@l176p!JX(h9pxK(2D&q^!9o2aIs zfsIck5CO0P6zX`#9L53xunoNC=|9nd^fpe(?qFg6JbldUM>8Tc(~ps^AB=BZKRC#@ zFo}JSIWc!G=#$@YXGc%p-s$>l!*mIXPHimw{fDskf| zD)Y}X&5@Hnr!j%EH_8>QhWmT?^6>E+uEkx4e#_@_&kj}b*0Ma{tyC z^y^`S)0tH*_k$AHBwzFutce`sA)93hkd`}1d zwOru2VBW&S!t`>ugW(LDxz3KCY+CR+?0D)%L&H}-E82k%m>K0r7l-V6zTwKYYWcLN zhOAXvOD*y-^sGjk_VxL4pyLad3mjiyMzUL&Td?!j%j$?lpzZr23eey6;b7MXE@ikr z(0qT9v3(G;REG_14_ql)XuA>|)$|(vXk@X$FPWAPy}dZqui5j6ZpVC{s9>88a@^or zPCf#CXus{DHvjVt)|8&xJ=V4RFxPG__hh!4K25@){0+~pvJ;H=fi354?|bgRO<3@7 zO{Kuy%p~FkanL-HM+a?Ba^z8Y^n~ zfh<>Jy;u3qi5+P}Qx0_!$2G;&<5(^;MWb9%z`-?Grbo)%)M&%nm(h{x% z8vGad_{+!o;4%NvpNg=0j`vcE98xZr8KhGj(lablA5-f0So_k7C0tiCFkjCB6N%*j zzuSRxJ<))l>%cFuBqK5Z(NRCgfpcBXfKSZW zq)WKgYrrQuaKD#1JNy#|&edT99?JplNPgGBaPix~Omi^)^f(gpA07CSK6vS+K1>N$ zj1^OPsM0>h>|^#iq15$}YRaEzzKAt+MOMO9Yke#|&8JqLqgnU+Fr`QO6-#(>NWq=l zMgr12t=JccSx&I+{5Lh;Amv+dYab52I~I1-bB*j(Y*%sl}|h#u`f#paW3+XC)Ixo0Cvy&BqbFb}J9 zSMDpjfxP)0+@SA1H*BKyp1EC(Jv8AqXYSt3KUQvEC%MXPZ&^CG2RLqzciiT7NFHt% zY6+IN3;oBm#RQw{I~yWu$tTpm$KIEtq^ktEI2)9#95G++nFyA8EUupUcDl3zQd&U1 zO^`D>+fpamwn0i){wy!wPH}wW&XMa)nv`0${15T%2LpqY{@>!;5NQSYhTes|fe)y> z71*|cZwr1J)Ydo;r_ z!jg2o+{eKT$OY5OTF(}{BNizQ`E4uViDg4_xFwmnO@RDR>IXh}0H(B`kEz@TcbvK0 z!RWa_iMQtz*|qW5CqBvYxP5dTKG=cttcw|!YkcrrF#kljp%qJb+`_;V`EN|emRLI2 zF0_xX#lLajJfLB~2l(K*U~Y9VJb+?g3VfK@XiFzj?jENN^K)nUxlYRtb4YpC!yqm6 zkp?mO0jvY>z;3+4l<;(j0q^I)7x>g;UH;=VKkAFj@+&x`_c^3I1z?a4c00!yB$FGk zEYr&TTx@`t3Jz(7kF@k1Cro~qGGlTe5E6DXyuSl~HwU;svTUq{`JLm)dk&`1?Rff+ zIl=Gr!Ao|H*bbK-=eBqoEG8$)-^>Y9o&zQl%K<*j2QTgKv%7@HQP?kk3XfHM>weSY zo1SCk;KBvhW}atB!yaf_dYflAt-)C5X%iMJY)^X* zG~RKBqtLa22Wea@0$~Fbz&B3rG2J7Y3cd&vQQmOtQbXS#quEWo9@I8Iv&&mi-IneA zNCA>TtPE5U?~S#ndgPI7KYW3(rA6jINQ6>9EihS;(jvz{9#0amNMJE4utYVDuv%f( z6#JNmVX2cHiCrBD9wAc-yTvI@$B>)O=epQd;GZ@+jUHKx*FD<2_%~fghKRRk!!Yw$&ul{Js2} zIZAkv$xxCv-YAxl@+Z=IZ%0^7VZYR~;{I{n%8#aK9M@>#flPWPJS#1A^mxKb>GeY7 zVoT&$LqtE&DZxOQ?~+P*mddvOYWr9|(mwXa{%+e*+^OV{^4OMXWS=qdMlFRYJ-}h& z!7kIhxL+Yh2*Ntq($R6D!FZs<$kSn(+jlg4^Apy_N-{3P(Ie0P)hknDiT5IP3p-JQ zRzhH+oe-D)ym9rDH5dro(qiss$yWM1;g}CA`{(?$NHzpV# ztH|TA-Sx!O4En~t95nVdUhiXhc-ZW&Rs!sdyzUofJ~F7+70{MP8ro`>VpW>2XrT7btt2( z$Wk4Vy2Op7IR*h7`7iP7;d#B3vU$w)Z@lswXH!@JKf&uje-*i#ymXLCv;jWt#W7;fb(D3=0R z19RnQVPBe`OY59Kq)~KzZdi=Q2Ze<;9d`H<*x}`X!T)&u8dja($Yp|qZ{Ka7bti`x z@5A8=+}Ub@w0G;x>!K~V83NQnelvfn7dGKEbBW?viPyYw zHwCT*cuGDoz7~=ceyUY+Rz(W%O|3**b9)KS9~Ab(3*jx%t%_-D`JwbETX+L9UfJQb z0ug+x3O~`7<2TIvsutl&Lr7Z4d-x95f#o8f3mexFgZEvO0KBm!#3Y_phF8ftWMiHD zFj>S3b@Ia`K0L`JZeo{SrH%$dyx5L0mmt}!;+q3@g}Cf|rQGX*m)Lu()o5yYK;Ir- zg_{eaULF4;F{PiRF zXhezJ&z``Y;=NSzFm|xA_!Rc4DgE)=T_-KiyDyu z2;=dJ8e_6GhoK7IRm1HErhbYS8)7K%b|a6&IXMmNDB)%XUcxq#unRHvteh^?e&z70 zGm0T#^V$+0<-%2W#^`~4K><_K1ByX?L4g~)dO)#9@}izQ66?oam*9?$q6R1wZoLM7 z-pJJ_Q!_ETFRcpq*s8F84Y5l;qj`nMe^=(u zjyrYrM-4Xw!KTG_n~zVgAhsI3$u0jp>+yK>EjNipZ^?m~_ zQPo?VL-m##qk*4uA+pKn(i5Z0#1pW#@dUN-1p8|dzQrwC`9NJ7JHpc9wdBFNtuvsT z7oi+oU`9)bIc%A#r(~*zG6$+@a;T)tfs&dWsw;DL@pJGLZAdl_L|eTd)T{B9%87=7 zhDx%rgrzs7mzMaY#Voxjy|h?Lr#9d_6s0JRCF^B4tC~xtpnog@6Fj~+mZ&JkF9O2~ zh{^b&_#LWEY&b^1wA~FC8e;ea!OiZfiP&JdXcy<-BIbcV<* z_Vx>8f+0jbr2xOchM%d+!Ny84)st7^igJDIiHAld=ua2*=uekJxEp(`#8{{at!YH7 z=uex}pE5~DiX?xK#26w4f4T@>bdmVeIy}|EpWX<2k{Ts_uu5)yAAMUJAZ@61Hbngk zhFV6!7=>8{8w-68*c*MxJ)mHp#IqF){)_(4C=Wd$bJ7)zIROQ;Qg=cQsq4X4cRL ziHl&vlJewclV!3}gZp+9Q#)}7Rd;BvxpH@iTGZ34>8|9;-Huc6S>DiGd~=M^1HO)f z%jFZVt&Tw)y(eyypr>n7bXxx2z?)oFrSKEBI5ra2e(!4=5zP&`Ln9G+yWk zx-XfJtjyts)>JKA!+Arv<}Sz~BD}@x=#9L6w6lv_LQDc3odM-~ahm^NGT=OzM1&`8 zOC2SGy}Va*+5{_>x6)!`Mq5F;N$p0fm{BCen6#=*X`&hJUu)#KRm~_e2YP?I-DOgq zky-3*31mW^g^QHu6+PO(Ca|`xw@NfpTR^7`4Wtd+qBf988b2iYgJg-MU;|gc@~sdX zxExQ*VFRC|4crLP!sw9y;hJSgxY4q(ZZ|Ary$UEn-43Nt1SQvONoU2p}$vY-LIIgsfa&?^F&#fn<|wx@o(-T7^P zTBI+2dj&PWcbPRdxM#uMc^jN9v$sKJJB&sBaG`I|I=%$UCQUVy<3G8wWHfH9bf0I( zKNjdUVk-9&i{;=@exGFipXG{EBul@p^~ zc6Pj1pe6STcFc}h&3p4^(N4^cnIu&xTySECu}QY*d;`P78*L&HyXdzaq|S!+gSTVl)1#2Mp^fj+Xx zqn!7>=-u;J(7>$mr79eZ>W=B>rnvFK=*I)!er|A9=ZV>d>Ky4qDIKTOh5Bgr2o zd9yZ>_(4=qy#aOse5r26Z!eY&^hSHLNUuqRj~5p$81z9bd|0&ogYaNn26O;Wx5s|( z0d;%zJN;t2wz0G+Jfii3@HG5Ccyi|l;gX`xj(#EhGI4QhcmzZt+J(Z%XcK=(*kQjK zb4g!TMbEyGtkhLey>iT~qJDu@(NAP*j0hw>RDT#U)u&LMGge*t?8B<)T{pN6+#`gs zDk`(!^HBl@VO7*jfma$GZ0vPa6kx1O*NDpeS&3;cn&tiU79&cH{+t&@oZou2fg&^E zMG+^r-j#tOGuy@7Y=h2kCpXeVqFQfqG?g&NNJW9s$6jO){b)E>V9*u&#LTIFrg>uK zd48sOLJy`P&-(>Tov0A{%?#y`oofTLnROG1nP?-^JTa5AY+plwm#jCj$;C~ zSy|+-UfMU`b)|b}oj3XbgBFT6%{>yR;bbZj%@r7d`ayTR-!HU!2#(<4qU;CpydElL zzIt#4^vSM%hi{(%*J4({_Y2=%&e>P`3V8QCUorg^aO~Bg3!7t*neC?v;h8MEx9e7VTXWt6s~;(A@nn(dQGs$hTZdkkuwuOSZ4x009pZ6JZ@d1Z9dR5-_zR{EEzws|GZZr)m^I1N z<0wi-UxjDVOAfGfr39M>Lh`nlW`6u0u-#{{EdU4@z6H$A)u0M(P#Zz6yN+GJWqZ|| z@U7~esz1W&6Ii_^+F%;G*!(UvzcQ(W?1FNn|JZ)>_C)I%z^xkzyZ9PhML*3i?eCXf z%F-KIicb|A*aE-wbe3MoQeK&@m<#8X7|chr^dywp#>eXCHTVNihIUmno`Sy+u0gC? zeXSkIF$0*s46?}qs6-tTq8TcXY;1LGGpQm;!Tn1MbQ`3Tw?1!ZerG7WI(83tbvz^eK4zE?5YpUt`61qdD{6ds*kdrp!`)wU&Y+n>e`9XSHra@eG2_x zC$C326$CmXdYfEW>Aj3Rtl8hw1Y0-I>0-yR`ixG5Iu45^YH%AXdi;R=5Z4c{0lQBVP0hc`rcMUGq{+ zYAV{i+h_yo@hOD*G4H*!MsA$@%sv+_EH9Wj5S!v z{yz3y%3#sscm~5);_(T6Z0v)rW)lXZQQS@h=)wl?@85y3%bPhq3>l}0UW^D1F-tE1bTRVX|$x-DGWELI_1=AT1VYYYx>^4@WV`Thq`26B5g z5pCZ5Z-XuACL*q;s?GZ*$}&xa%*$va=++QlG$0D9izOykBC=S5NT@P2m!FKOOyV~3 zDb_Ch8j9UgbF%~xSP&G~TfeZ~`!*FG4=@04y#;oxR?0~4bqvzTK8o2xW{G51n)qP} z6rnw1q>Uo%#_Aive+&kzQ#f)}H;VAjKcV`)t~wPVS9K$*QDUFzs#6hqsJ=g|ALpu5 z5qhZp85>iK>YJi(QxPhiBD}4NpgE!lZ>u6`jwr(0eqSMTZ)dQ_D8j=e@pF!NebGaB zh9WfK@t6A83Po6oQKb>nAf+X`(xe;ZR~uy&0iX+)dVj&-h$65pgU6~Ov`W#7D6)M< zqn7%ODg!p(J)Xcul}MxHqV75@4>x#k!^B!Chs(3FLzl;AHb-2Zgn7va52{jeenQE~ zRo!SwE8BgwtG;WV>PE<3Aohr>PNm9)-BiDZ*ay4nRH|InjfN+Q{T&XncD1DE>N8pW zH>hsTTN%dfMxu)#a|o!eFh+cDMz4reIX9+J-wSDpSWUWA(nA@!Zni`r)th~(rc72e zns&bOM^HF{?Zi-dKT$(R;dqcO8k|o0OBtm1%^*E=r$|pD>Gd-W>4PPxl6mMb+ibtd zmD1!>@Rv~pTUKk~{tIG7k5s*I8>YrHd`C2IIrMX-cQVjg{lurUL>W2`!2@uGI=%{- zZNT?w8l?9_W}qzzB&gU2(;$*3pI!!SjKXJZT;TMuC%?iKO!$>?)D7!drlGmcI;42F zK9IM2CEAU4FuZ#Ux^;l^0XjA7o?-p${=votl}e%clBfR^J!Zon~^h=8zNr#ON8#q*n=Q zCeuO9WI97Lg=l`wJf4J?f&(HbyQtYF=|Ym8pH4ccnIsj|Or|q5vlr6q{s0OGS<;Kt z=rK;AW~TG15<>2~$Q#(?zg@~E2VCSDz*`mE85bG91c=gIm-w>9+iG;V9qY&C8xVcb?q503p7xrqd=;%Ub0cxA}dJ*#Q{yt=wGW;tlM z*QO^pT74!a(2|yDlSCF==n@JOv^Ui1c5fmF&$i8+Z#^dfB|CVi2zj1H&b<$#Qr*=r zjuYepzYjR6X-u$M`gLFm)e_=SZRpz=;T0BAp*-#0;12hRZZJU_)p5Kac^OENBisO6 zw1_sp5p3ZksNLI-BbGoSxvc3f!F;LDT3mnX@W zCmC9O6~N|zF^K`kCocm>G6TmmK^&_D$137jMI65exA^S}v#KD6(%nLM0a%B(B`^S+ z!TdJwo|I!gzVxm=Z&itC^UfyWXlK8U$$iH-K7bL!DHuC$5Z)CSbds0}rUe=Emv7oM z81s~L3R}*rqEA7jssv&q4Vr9G6(XoMa|Q_k5Gq`>T_6zSiu<5pAU3|6@(N0t6~BU7=A zW|eDlR4EW+MnXea<;)ya3OkIT`~!k&d2zd(+ZI9beha{wfWpZ5PYaBHjf{T{$G?W- z-waNe!x#a6b>$Y@JBj|kAx@S7rZtxZTEh?KVgJ0@8!Eei-PjeDWQk1{NwU}`ac~nd zI#^97rGqQ!xugU7!7&T74cEFh%p2Mf zHvaeL+BBSEt>}0yb-dQ;cqh3P;7Vt19slL?K)>htS)+L?vMm4ksxi0C(sUfjppGM% zq2ouO%|-@#(ecCChC9yl+u(HkLuA@k+ySLft$a6-y8yX;)A8T8g31U-#p?LI0c?jk zY`y4sJ+Zwp)o-)KHZg!r7SYrP_M+pb5!<3{Y#$=a??0uV#`9H}5qUTfV-%E%XU?{1 zNX6|U6}M9=ZiiIVbbQQHY}>1wu*N^NE`c{eh^r2`aM)0c9qAil9m65XbuA%o%OeY1 z;X6rEYo@D(FW5Cy7=boHm z(^&y?xaK>U!U)uz1ec(B_+|akUs-7HI7-L(HVlLf(K)R`*lgnHRv`D|=r6^IaHmm=bLSQS;**Y^DSjuyZ0J|7!skg%|BwGG9}_YR4{YC)Q=4mB;tmR80Z@U z8o^oMBWDG8(c^4$#|LgS{n_Rz=v})vLrh^4NQEqern@%CM8nNH9|lE#-nkmaKv3L; z+>CiArk!&z&5$L3Fo?_j%l&CaKf%9@BvW_5`hp?L%`{^T)OTfWTfPYQt$3$`WmbnU zb5k6X91dM<&&EMoh_}8)9Q||Q7~pW|l6p1{#1+Kx0CB8?Ok}lV0~J&ILW`KIF9yd9 z;zXQvVs8c+Tew}p+u&(+GAcb1BirlF+tq~by{mhS}l6oLZI`Rv270VLuNa6@Ur_KXPwW&u2I&_Vw zlIu`>n90x%#Rs{D9LI+I6y_kHI1IoUuKK zEkOhgcHPLomt7`w907R9<2S&;9S+ueF$|?0wj>(@KJ|F;1RA&*77gNuRi|wqIV0?^ zI!!SB@wUP$rS1Y1ZVT;HtA2fkYt_FfAv@J744khteyijbCkij^t&I1h=z4IFjyTPx zbNJ!o;fJ*g=zL>hJnjYtu8&}=Iu2HO`3#b3eeeW5TG0{6I*NV3RTbzBYT>W03p-E! zRgm{R^-(}96pE4iIXv|>LOH`zk3=RchkEK!kg7~iePRGA;Hj@$3#ohws^YlS?(LXp z)8JN*o_c+^8;%T5y;@97lW@a?GEbphxmSok1x4RemjDtBYWLnp?#_7X^9BD>l1zOj zcB(I)`kiOMf+ZLWYm6aRiet6I(Tk`474F;erscwMy~Ck<<=LJZHDDwLJ;-*H=ECtc z;;1ibKm~ZJE<9F(9v-`Q(o;cu;g`$!*RI2TMye0Sa`b+U*g+g^rZXA~#k2e|&T6-Q z9U~xe-BLa*M|uAa}!!BIsVzk}e|*7~E_ zi5hm{9{V#0Q%l(Qmtl{r@N?Uyf7GTS{11s&dWc@>A$p}d(a=Dgl4lC{mF(Vrev^;1i;@?Dnibmu5D~cJ zCIq_juyo~NcI9Dqg?6gYZap;zJ0AdidRK6)*I$T0+xJcH%9o@`%hXPBAoT=7 za3Cvz(ihCTNV&*Sp0`)WFtx^WkZJnL7x9(?3NvEZU_?fo<|B*3kc=+fi5c;i1*y)6 zKO+O_173qHK*XCQ@keko)2hCQ3f9H0H&7U*n;X&g8+_l+-L^LGk@11i$P5&|?tsrF z@YoFCD}%t9fkL-*dK>Y;M?en1OD7Q@!b!wz5NlvB4>1UQwx%@nS=%+8uG0C)#?uh{R73F?D+G|Ofg zuT$Y#p0N>C3p&1A{vqs+wB{P*I=5`jIQC(`_K&BKLm7Vg9%TA{`F;#yrUd;g02T1d zXRU$|9ET=Z(?oxGMZ~6i^UJ@_@0Sk%QnPzwXVCk(He}48F9${6FE42?<4*W)h)UT`y(%{@oE?n&TZhQZFl|4Z?=GI2Sdl}-+ravnTd zys2^+_U=L*XH#IH?_*eN-`utOb&QPF^VN91oMbit9s^a&kdq`p@NvRQE(ON-+4cEG`lnX~xaG+rgXlbg3tumU6-$o>vZZf~J%V;TK zOx>zW8EW`WYV@*dfs^ycV!L3jP!1? zB|dAWlh7585SGagQ1A3IGVR!23ZnM;JZXRkKF%ohgnM`5-reEGYaaRnQEE>+mKV_% zsibWCHEIt+S|!Dg2qp#E@dlbMGH}pXTMrU+zev#il%V@57(YWTbC+z@!cTU9)-7fx z`58pVw&4!c!p*X=#q!b7>L%Vxw>VZmCtD6s(J}1im1yR%zyn#jm+!6&sg8bvS@9(%K;ogS88~3w%J3n%iK&mhLkQyiF=7ei! zpa8wbr%vf{(8Z$Eqy0ijNW*3Dt+QFM{EOLV420V7fl9eS4J9rx*FVCzT zi&S`3w>NSNuT$?#@r|>-!j$|`Vct?TBb^fY^5WDkybwQvbV#zOEGNYUuPO9W2i>no8b|EvJx z4Zu$H>3huzifh9<@diDn3AhTS?{lbokEJQem_toLray-|XABZH9yMoPzZHNA%%R?U z1m5NY-@(#OwtEL29k7!1AiCtO|;9jJYx>EKPdWhsAB*r?bsc; zS#zk)OJLs`Whb(FVWS=hUg=Mx76^$I5`s+AFGQ_$_H8-#EMeb1!uB{;LIU>f0+@5( zzMX-DZ{OgKLg3|G`T_V*yy#zGzu+}6K&z8G?&3jV4PAA7;`Ve~{ZGfR_u90ze)UkY z1c4lmbhaSW9&_3+Y?%ExOnd4Zel^9)yJ*me5#tILV+q}K%Snoms0-5D*RiP3Y* zu*Wp&v~wz2BE?fq8+A@gWZ(_g&Aq%OQu5tV5M;ZlM2cWf|?>If}&_9)|T6nxu)IXC0o68tF5XwvyP-K6Oty; z++DG2!)h1<|Cp(}0U+x_g}##e(Eb&T;Km^D2; z$VQ-t`5kcNTwa@vj>#g*OJFrilsQg)l@1^t-~&r>qx~3+H02cbsZQR}nztQik0l?k zZ}NNRgC!Qh-H700vSpNr2#4fCP{?6=ZRA83!KaT42y(vzNH2Tt3?X=jleagxGpb*S=7huc`#18 zUNa4zbS`E$9UG9Y+5x23?{$YTo9*O{Y2NNIW-s4uJ9Ppvd!xV#vUDo<6{*-CId`PX zbv(37Q4Fq{|8Q)8*54c`TsOzQ(c~fDuuJzIS4cIeX=>SAm9^#`lY%UK~ z`@&$<6!eb&g7!sDT@?YCkls1huk8fZW}b=40rdpS9uWuXTk4GUr*%$+*16=0IhR7~ zTzKWFP(H+$S22Fj|sZz^8uI;IevJT<%v>ocKTU$ zTS<;As6ILJ9H=SHZpcwtm8FFL2jq~&FX4hLrX99Dri~pPP@~juW>_yj_8Uu$&q12f zPpE_2m-a{Y$BI6cUOXzOt<3?0kq4OA3yH|@oxHlG2pK{;rP{}90hlp;lmjrN?S}PZ zFA}h>mYt(cZ6yI9T++vTn6ODYhvHo5-;XXAq;38tFQRidxIyg*rL8zMgxD0ytkpU?d!oV9SL}e?c*nCtp zkPDSEAC>cg3MbI+qt~6808k>Mu?{%o*k%~7SS$qG%9*uyejkf>#@_9UHF(@hf~@gm zA=Cv*)1}2_u=bwe`pq-QF!2>jaOM|tg958%#ZrXi{@|6&@4W?*;;t0tNkm6X?13$+ zxz>*u35Eq?QZ_T&L_^&~c@J^R!vYI@kmntAcQE}DwZ-eofdG+I@bj@bqlHB#weptY zm8YXF?^-apomRxaV=JM_<5%W271UJQiDu&e;J#u8qHw$~R z-njX1@SOBH?%TxXso5ygrDfhL)iT0<4YgZKtIaiLc|kRqlQCI_wTy~4nkNrkB~={< z#uI>Dv*K{~aov-tX&)z{G9RP`Cg_&6mbV%<52{}l04>`uUsrv>z8DJ%Lr+N`0gl{G zJV3vgZE4y4@(*Z}YW7+1SM* zH*abGEP;GL9vi7%%|Tf-b&2Vrfo@Zn9GSv*3RK0&ikD*Zhrt337Nk40 z*DWbL!~?S=A7sL(r?+ZbTot>5^pAr=M6id23@v-{-9y)6G%xVO6^P68Wpfh5dAShH2#rNWGfPH6;>lCdh&76idCi-8ve+U&Bx z?ChZU<-yTDQt5rQ-IiZUx63bOVE2Lfg*vGZzZ_=yrOc`Pw$GAZL=`SS*zya5KEE7| zia@;n`Nb&AX<+6+HKPQcJHi7(P}(QCDZ|q|6=499=?2F|OM*iEa#3k6E*gSXSuXl6 zsx?fO%|$|iL!hj4agk}^Tri}xu$RUMuzG9@FK|)@8fkDM520XQ>j}Edis)KCE z>Yx&kV{usjTnxyF&DK9pp*beA>Yl!OCw-6R!39Rb9;hr!$z)g0cRN|VY8Uf*MZcQm zpCx{qGclCR!4tPw&9WPq7d&x`W~;iTuVyjJzQH;!bV;Smgks#6(04E^)}uT;e&6u( zn~Y2nV6p-Z*(R`sxkaJdXNyw=(}#pDeyBw0GDPWSbIpP`Znnv*9%lkL5Xcc*xwmY8 z!>>JXZ5k@PeEjLj=fXAI%kdTKFMlC(oLi;`Wfs^nUVmjeDjotN;O>WXe;QhghHT$M zoqqs{t{$pcRq1pH!f#8EP9aDN&FIYbP`8DNU_I2Az-xo@gvtf=L3%<@fEX5KIT=O| zl@PoHQh**jR0i?Y#m6r8ge8ypq&8T1!J@!mVg0IdJ8wF|L7Y1tT-QoUj<-;)+e`GX8)cB{QuMp|R>$|9NMee} zLhk}6l5Ij{k$0LCN%Rp}>>cMs7WeVe%#9hC#^r#|8Qw794sXWq$DYs``WMygYJOFQ znqB=cEGj^nHV~rEJTI9i9vf;mV3hN1)vxUkAo3XOlz4ML1%oON!RhHU%Gn$|JTM34 zu`+~*2V|7P+-8*Xl8$niWJfvmAb`bOr!Q(dR}zBI3)Odary z23BTjCpP`y7YqJa|DIfkJNrTM$wl}r!tY4@jx>ci*@nXWAuP^pAjlsE57i)l+7qqx zR=k-I8)3uFc#;vCG=@p1J4uW%6wDlwn7%Plv61-2+Y?tWDD@6t&ee$MjCaSUEGTWL z*oc#g8&975Tv}n)wrhjGx~~WgX3#NNQeV4;&9)qS9?~qC-cybR&J{0lpeEFcLlX+B z?W%#H8H8APz>35Ik%U+v+8~IA=btFSPXn(btYPcSW}#& z+{D7O5kjnkn3Ke6&n8wdePJ#U(RTytH@B1D<11pAHo!arf572Q7@&M8bdng#4z%}8 zU}2pI!uAs7DpR0b&(@d+>ox<6j;2!qN-Rq!02xCNYgti==(feERHsL}q}Q|-O~ft& zN%zVC1}N1LGuf#tpVp*IHL$$hF?j-fW#1HTce2%H&OzBE%N7W#aSa%FHjco3lhu3q zy;>d!=Vgj@k?4R>V-f=YV~)}{jwJV~Z5pZSh4yGHG(;DrMzqm(N9lX31X%-ZZPUph z;Gk^NSTqXrhl86vIov_{BB>a*X&fMUZ|!Yu6N5m%dtDS)^Kur&AKDd|Ab&B^8_pmV z``OU5A-jYkOhld?OcDMfNVQLZViTGxcQiq6Fhwd4S#)FFvIzTK+XV~QEVj=((_m+9 z);OyHrXj)h!A(*mn5vPI3w={!r)qR)it#_xBQNUKcIfk0V!R&O(=-PbjR-T3v_qTB zptM6<$Dp)BUmRhO?Ew5;`dBV_J>ZU7x^MU&oPv?Kv|U&wn3r3y7hAPK#B2}c56!Q( zhu`#iJi-yfg*Rr1rg`P~1H2~V>&VYLuyiP1n_5{yqHaYyQ4Z7en0v+KSBWL+FsFzi zY6@!g1FBUic^sHiIy|LB_2>xH7TZX51Uy5hly*CVq!WVtVUTn}kUtD^2@XO2Fi0Lj zkUtEPP6&di8-P4me#6J}B#%aGEvHQT#L{ZUwb{~oBiL|I(n{ePw6y*J6tyU0H3Cv; zrF9ZgKo5A51c)z3O3Bs?8Y#6xYXs5=?FjES+7wQNcgKasEMlb83av1IAhhf@NU1P8 zGK;io?{TKJh=cYxI7fkEuv?T)3vv)*V(DGKhazqH%@^XIAi=hCg%k;dSW2#e+7htV z@kI5~%s_~xnMR0_D$O+VN{2MHn}wjQrI;F-mPR9JWLg@Hpfpok>&Ub;+P3yc2d&DY zT+$9H-ToNorrm?)fAJG@<{`Q5$h+W_L2)MMG6v0=uY#Pm$9`ftQ)WZ%Mhf{Pn1!cq zI2Q6@na%R&$KWp24d6ZM1~S_SGTSJta5$|`H34H(?5*=zFkV?K*_Tz0Bu34ZBhxA2 zE-<9v`aw~cAxo_S9O^Xhp)7`!lE>OgEJL!9S4RRKv$o}9FqJkEc7u)VwvFuYjge`j z43Ktns$wI_p==~dkIcn~Gh}7~w>`wG?rWZklW2W+TI~vAbeK1!3ecr^$`GR-9{vMd z?9ZYhbs7nDIHce_t z;Wro{@5?xm_EG1<*6t%2x%;QL%(}O9rr4S&s44Zn5HC z!0BZ*D|Ru}@C`s<$QJlF4RCfQj*B$S4WRL;M#kpfbJGZ-XM!SNzwY67-n@Q~THZFE|10}ES~BvOhz z#w`_Hf}n9r`9r0%E0xaOR`RHHxXQwsF{Gw`;SYm6mxETKt$cXjK(ACDJy=FvM z`HZ#7rwIv`2VhzRn5?Vau+p@r=6{R{TYY6;Y!$(p)zEhyMND68bp+Vr%3JvrT zJ*p-l#TW+5T4)UNc zP6udAv$BCK1dX)P|D~Wv=G!23@5+(L=Iw##Rq}NucvCtZlkvo~hl0O$M;ob*YY*@y z8G6x?d#$<~w6<;N?$fGuPOJR=jMYw&-$({DYz!Or z1*EK!uf>)vgNBXvGKE3IMyuyO-^r(|5oCZhPDZvIWEtW8&WR*9AhO6?;pa#tu&?M?;PAJSy-Q?TlE6ksu0}RJ=aXz=gj0y@^_A9ZyeSuSq2QGkMq4(|% zrp-DP-BZHp>k>y#wz{mSvn6s9QZ3dE^eiV(T%srjD=j@}qFrg3sJkcaO3N~Av+94P zWgd8M;FXs9pmIa2cRSYCcHWCfyMR~i)V&%@z-GaBkS2K54})Y(1o^|DRmUc{yQcC7?nSY8GxV)B1oWj4Int|hBI#Hm zvc&t26Ir5>qr9&=k)t%S)SKi)mck85VWM#i61y?uHO9O}p2r?29WFfpG?QZxW|n6A z#Yl7d1d-;8k;nKs%@-rhb~)rUU#UbZuaNK_1_zqRw9OYIr}~lRi;-XUBh42h z_0bO!&3rMk($8tW7^c!c%<^ z0%l3jZm)VYKTsNlTD+e{LqhO2LZ1!1Xvq4&(3CouAO0{%sY8%I3{vV4|? zMXxV)j5M-_Nb|)=BWs8>UyL-ehDh_(W2EkT0WMbRkR(!fj+11h4oM<)Cpt++>X0N- zx4)BQqz*|Ub;Fz_BXvj;sq^xDk|d4P5p5%DK-+vV(#RSj%@-q$tRd2TG1AByBFz^g zjjSQkd@<5U9U}SVE_#a>h;<713RtI@jlohZ{_qU>xp^9Y8YD8WdMA7_KCi~SJ~tE1 z?P!W3ivQBTC;(vpQKXKFIzWVWX(AA_=J5}yyU`>_U9$3kYlm^oC?q+F{8~58b!*gO z{4O@b-3NymBYvMm%9gD^z+C>pZrN&_4cKOl+x(_SKP-f zUiV!*&#bg8K(9G1Y|Hl>6xe*Jn)0v+6|}3>qX0(m&9l2s5`M znOJq=7ef=V>FqjpV32ABLH=~o53DILEYz;EEQl=fW;l_QctjR^XE>3RX+)0nKJP?Q zrV&}<9q2@|4Tv1&jc_6<(}*nf-h~bo>xJ4O(~KPBz2-#HtRixp_mmSkP9w*9txn`v zjhx`!;Y3c*$f$RN6B%t-aW%LnuXXm;9R7&bIu^KN{atSNItl=(>?semXyA$BWB zzphNw4d&?q-BS4N#jgy)X3HTKYXOa@KJwvvE+fCK<*gAUB}VCZmWcYPX!0h z(kRVvGgHlg&G0Ks35UE;F(GS6e*Mn}@0l^4@+(Y3k(Y8JSuG-qy+1jTz71ODM3P^{ z2L0NJB)=kZly|)o>D!=rP9*siImdY4bRx;Gh#colbt1{Hh#c#cJCWp9L{9Jyb|T5I zh>Uu>I+1<(wUYD%zw%cZkzalI^&FFpznYC-S^U~I-071DdBfC%{N~b6J6-u%yF4-7c9H0-me1{ zA$!#SR_`ZG)FS*YGJ3xa>??z}#S$rc|8A(%yG8keycGYL#6cenG^_Er7=Vabbn50n zpilyQCnAZ}yAn=ZF3B<&-6D5lk6a|md?c(^+F7;9_=?3e8;ieX&Bht;hsd-G45O(s zB*#NDC1?&UK&zMyHo$x9z4wgSV9>O&AdSaK0YfskEjx6B7IzscOrdU z_je+FTz7OLvvF-$AskPe#E-B|Vy9V~#MFirA{5NbkFaIZ%wn1JZS-)5R*!C|U7A;Y zyw;Otp$uPh8@1iDjaqz7%Vi4)RV7_#Mi$f2t7feTM4?Vyg5M>^eq8mgu^&q%QtZca=+@)`*@xnw+xJYE#lp^pfHnsIIUo%2{7{0!C1MlIQ`^)r!iU;fO)&^T&wp&k)*aqu< z@`7{^P(wx{o-&Ag_{CZ6iEN-qDK}X0yol-Ey+Hz}ds`KP$wZTlH8&K9H(i6?hleV3 zJFZuxlu?@DW`4p$4HmZmN2tWJotyy7rqWm5HdONB-C0x$7qL|GTq)`&NIpFXm1I=w0zXKAOQv|D(z3tpKUpMK0Zu{rp&4K5(7Xy<%bKAVG#LjIm z0vT-Gyd3W{ncHTq-u{4$&cWO^gW&C_Aq55Lzba2HHarEw>ey-Wc{dxk@KZ!iZZjF;n^aik^?0w0JH0GzsD{~@AH_qabZkWZ}9^LxPFAZX4XRo&cGQ6TxwA^2aVE^3zOEB2L z++Pa1g}9&R`22HOzeGDN>+{0O&xG|^rFSqOgYIB`27T6l9|1)7VSTQFCZPr`uXA9X z!oZq+2Sr<$UabWO&yC5TrYvr3=*@ZF>c)Tiw8%_Hwf!)nwC-W3s~n8TR=l4HIL}TG zuoajsD9phdm9i@ab7hH7c;3cr_;_|Rv403A08j3qx-KKO;w##X%_rEM9=LhVI}knO zZuZc!2gm9wylV1bJ&pq4*I%|=fB9-NSaeU&P_wr}vk$PVr(96`1yM`$5fb zZs6I8-%jJM{0UeMYF7_$C_^)yT|Hf(ymd{CI79>EN=QFiafAKwhf zz}tbKzC6gE>_B2ZuNT@zpoVuKRYAGQNd#|DClPuLNpN_UlwpvxK#)HO8j{=z*K$a8 zA^r}nJ}UD?a3JatdY~Sq$4}95mLAok4J|UVm}Lm@8_%K~7eXKpT894rg_+X{oyW1F zw3Z~2JlgOBHw=$Pt zGu11JDsUU#kwIsBFKrEPrV74MO=;k9uy6<7zs-`b#d>LSjiO2UmuXek~> ze036KTDN!D;-2|EJ#(1JDK6Sl85v}X?w>^~O-v4XAg$pMy*#&KC zDf{4DTsVnp&3zwh(It9F;VO_GuZ@cImKIWa*JIyRBwr}e4PX1O(3=yxuLs6*PQsiJ zKgB8bwrp0wrlZOhu-}eIL4#l!7zB4hK7{Y!ybt08jJWt%zSjNY*S|qv0s>q(l_2mN zmS*&KL;GkJDMI_abAuvNq)7ehwdAFt@gb4rlk;cAC*=dZZt(M2M6)?*920DMJjdG% z(G}V0iYIkr6yE-5ST_zmj%IX>djyd3c-9T?Wp5(kWTRP{lZ1&{b*iU!!w>hb!OZ8S z?s>7pyJACd5~#g0vMg2z7V3)k=FEf3DZ7xrxiB$(5YR3__k4jEuNIIPz1rJ1ooWG+ zJ0&qT8Vtxv?7Wg~)(1f@wg;D}&Wgt{q|(6xW(1q^6Am~z1IfnwVUCJQW zpeR#t0dj&i`_oo$k2c5(+HAk`ERtB=9q3MkUBIMEoumzZ(o80u=_GCRlV&jK^G*^aRrx!4seXdRH^~>osD8~H`Gh3ZulD4# zk1!QTycMUNz~*V*Vnbnpt52b}rsyOQ0o5Ix3a6B;Bm!POQdY^=ldqY^c5^pe6{Ja& z0iPz#@S%m|~06ub~n!rKV&lgD$LKSuN14Y9Z0O z9{IhE)-d4&!#V8uzRCb57wt{;qYS$GRR$vHk!92d-Ti6?ws9H$S_UIzQI9SR6 z9w;*jU9_DRh~99N!FG|14H>Za43;}ul8~NO8FVFDDf`}UU-9K5N$ntF)=Js;e&i%k zJ7^MR->Y_#s2wy(1nyiXiQ0il;BQp{+{L770g_n1Ml}E=seZNUg)C*zjT4XrVU@v$ zfNh>8r<>HUw%p7C$y=E5+70kZ;5}iwZR%sEVj8fcB84`?{oTYLygT5T-yZ&Q+!|?o zNrns?^6iT#X{kd-E9q|+Fc)rY^YT?`pE5w!G`Y?0j943ETr*{frI`5 zw`BvuA-Cmv2e__Xp>W>ysD{Ph6VNy4k%eEp*VeEGHBIe-p22UJG<}Xad)!IzJE%R; z>^-`Z0P}j$F%+K-6w5V)jV;|{q^{-BqnXm?rW|c3l{q3YeG_k0hi@Nmk1RiR@>u4* z!3cL%PaIprr%WEpE7R+1H@$+k&wWZ;knGVhL{D>atZHpED`{565qWG7`Hr9SIF0Oq ztIW>{Ln2Mf0MkJHkDsqBD7?jw9A_dEt-Xlz?t#iRG)R{FNwO311}BN{7#jFneNepo z+eFG^LF|jvPm)DITe}J%M z)D5P4l4~U$M<(jmY13-GSbYcEtKJ_zu;2Sd*dh$2$zdEylZ6^8QgGf=7_vqd%*E1E z`cAEr;|ULFgjn@zgAYt9%UY9~*+>af?!OdSRuZx%yUjgMF;up+3d3{ zA}xD1`z(t{!=7Gq(z2}W-+)mG(XwZA(y}ZfEqgX6Ez4rJ8@kvVi!PK-_u@%%E(x1x zC0}}bI!WYQrFqh_XLHiBEZ|%AY))F1MWkiV=A>m=M3OxL3C$qO=3-Pf!m?*`(z0x1 zc^!F@j5^9PD!M00?uGs7mr=o|dEU2Q7?@G#b0dX+a|%>?3@SaiS^Trn>7=LS>QAB5 zzYOg?u^7@4(&?>#4S@d-boyUkwz?rpr{_Ubt;4sGzVF8blgVL8KKLBP!4R%{Dde=yVa4 zHYdr^=|)rl$_fqO8&N@|6&geuQ9+~?8blgVLF7O>{mUv)$Yq5FqB6yZ%7s>j(Fy(N zbhgsb=_hYcQ6YzYmO6cJh@jaXze0 zpX4MNMkRd9o<5^8(z2(|sEoAi=`$)L1D)Om}OMzbaHQBogOf% z==58j8JJQ3ujq8r({lBv(CJq}d-wIzH$58w4|MtznPd12{PY4;s;WCnr;mBwCS?2R zySphlM8(zVuTv6p==6U4bmOsy{dD88GtxReA@_%o{rc&~{b6D2^!VUV@BT2-Iz7Jo!^pr-54k_mkX(NHb?SIw4CVXj zEmnr9(;EZ#M;n>TPyf!J!|o4R=#%>CENlJrQy_wt`vX7yZ%-S-eO5aC`T$^9r|)6e zv5!uF&o=|Poex*1KV=y;OQ-vcO66tQGvudR_6+&yhEcB6Yrb&?!E-7qRZS(ZhmhEWk|Sr(CoQ4wib7LkTg5!oN3vJsX&Lw-7W zl74!%Wz;M`Jtw1zPG9qYcVhM5y)bX3%rVNj=?am^Ceh@hTdtR5x}yi*sgY2!+JtSa@fhi zaq)I0Z6=rCj=B=uRac7NQv8m^?^yhn!L%6BO}Jf7y*>=gpT;(B@|(1172xSmgbmw0RYq>wWa3Zx@Q#9ocPX#HVZfo@l#yofPvW!8_B~ zh2YLDX3Z-q-}qB3IwYQ ze*-IMck(OV(G~?6^!B;4gy%LPoR{7k;B~eR$`vmmc992lvtmac1Bn`)&70~$k;SnV z*v{nDsiFEa3>)wYF@u9KV2>%zor-*PI%jr}xf0KV;`$cHryA&pN|lB=P8M_I~R)DYC30 zK<{F7jxmrFOHUVk!|ZwoMAu9%rz^;=(>Li!s3TZ-9cK^YFXm!RrCfe|Y+|aJkq&q~ zvaFiBYiqsulevmUo2$!(iG5N!{2AM|fBy5?yK?wv#KaU+?;C5g+3piEu|V6c542Cn z!~*T{#{(vY8t^FwH6cX9EUa8ewJ$k$yWLeeD?UeLKDYXyd}niX?wqzK8rnzn%iIra zhq=ee3}Y*s$(>rx3?n=j_uh`}c?8{nU~S@~_@GM0E2(06k6gsil zQBw%(JOzvi&bM>f2SIl>9fo`mv*|SV!$ma^0s^I3bb=3{wjZ`WN?RXwZT*R~^)%nM zUH2=BV(X(;?4Jj#S^tI)U#yDak2eP_BVx~6v{AWf6;`jLapA=*ptc60I>^N=Dm=ec z4D{D3w=ETD3mRxznQg_<*YK_|M2pv?;#C{XmPK603s*0#J;Y_Z@B9(w`D+MAZo%m; z5CG@!^1SEJ)Q*a7G0#tmQN{(6JZtX#94Tmgsw0mU1v$C; z{}dPvAs()m_xR4^Jk@b$!8#dxI5AQLg5Hr)MSny(}GAO;NotmEZfv4zqd0Tk%k5|*?{(dnSA$gaxH7}@EB&^Im|tcp-jgf>>9_1nd;4@Dg;49LI1yPwLM6*wvP~?R{P7;E2Y!>3==D==b!2eNj zBitnY#ykK90r-|(#ak0qTV;-(cPd8V-Q?t8HEn;ky0F|!t^rdP9yKI9@_Zj{vh-gf znPJ)rG4bTJBZbJu3i46NXtR8zU{^S-4Q(Ft+0Fk|XbvA+$MAA>YM2>V+Mi+A9^XQj za4WVYU(zn!r=z@lO4#|m!A0np+z|oG?8l=4^|f0${cz3gh{bPS1`okWvIwrfPK*hY zS~7AM9;%D;5`Ii3DG5{Nn2cZ)+2vj`XT&5=Oce@Dp9q?o4phVNh{XdquqGJ zc4W|EIO>)V9p2LAfK#zPQ-h*iUge!qE_1PjruII$$l`a-Oa? zp$9G!bF}GZ=ES>b*#{Wr4AIM5VFkBst^I+poq$LT46V z9w1j9z_Fj}|{?qF>I?$i@;S^sRK+onHDy7^E;sc%F0Id&z z9`?EZSTQp#H^jZ?nS)+$F7t_yInH#?-Xnc*BmGKZ{N&T5o3OilTLu$>TkuvBCRKu2 z(`gX#rGT+C`@~Eoc&(EOhVQ!cWX!&@Xizf+6Y$%rzo-RiTp=kuPx6&xah~KxPzmQr z?maAYo}?N)tt#gT!GDP`te6t%d=Sj?LO+H@&zhLs= zn!HY84$ul1m^TK6eju@TXrU)0zzII2Tq%J#A@IF##B@r`uQgc$3#h@6@{FY1gFyOG z%{%{KRPX~N&BI5e;ZiO1hU7a>voJ7kEV4W&v8QVm2`s2V7TiQ}R5y~S0~XFiM0&c? zEY182&Qd5D2Clmpodigm5vZP?K0%Wf5Ql>iT`xFrD=uNyA|x=22=haQ*~l!7?M`69 z+Y0kKrYziqK)M9U=JlQQvt*0J^v*=>TJMDiX`h6N4uso6zo1jRkJ`05ZumTS1YSb= zHWab|e(V6aMF8Y1`oY6m^jl8$i%oW|g~f=)>OW}C6P=tB1I%#TH=Ms};YWhhjt)|! zhHcf50m|-U%94w9;jK&dFgTi#>V=!m4#~CTQe-pwvJ=j21N35FJQ0zQPVjo z-Y(s^3LJ|2feo4ef=m|ub@;YqdvYloW*~)(?-guQ4USehl~5@Oudp&a4DD3(4CxQ1 zxkP~HE(1;18kO{*w719<9E*h9WNgI?$pp;}m$nT<1&lKEaJLOg4WFrjFxhQVyi0J! zl_B0Sw<|aj$dci4aDd9h;9L9(dkJXG6F48E#dn#4CuJAxrw`|v{AP%_-9BG=;fI3Q z%c4To`sYk&X`-c=ygqTwydBh*m>Hg8P!JbbiB48lnr4J1L?U)!0?!bIXw9n(~X&vR2=C_5x0ikVb;*rqel!% z84N+Ell3Tx`v@#kUWO@4c-cY2+G*}t2Uu1RvjYFiK#}agZ;o;}fNYmh&L;hW)kAAG z8#CB$jd72p)|~@JlL3*30~7VNtxr>fFT5OGhrpj1X!sJ82m&>dvIgWspjuKMgyrFa$r5#$L_B0L^CWRzQw4p02Un^$=-12Z1z=GLkC^xA9f2QBCZR z72KYZax1OG-I|wHl@_H{Y;D70m%ZZW#B^{rxO z8#*;sE$|6JK#-!{i0KY2b0mdm59^S1^BK%)%Lp$de2- z9H0R)+Y7tdrVBN%7|?}pDv{rmy!(m$Z2cPo^DaVd8zuG#g+Q_iihq&VI)$Phz?X@` z545ye^*uFNt@?#XA-#O7UP(Ouu326sT(~5yDS?}(wY|(h<1?D&6$w1YO7_x9#D`!f zzb=JJw9spk?`h`ym&S<8(8yhd>5UrmZ^_dX1m>LvFmEANkocFtdq?Y~TM=p8pn-o% zU}u7&YluQU60<*J4%3)B4h9(V$?f=vG~5KHW4kXvNcdzL^L|s|tz?!3U(|xD7`VgQcM8?fr@- zeZ6ne^BCo_ZKw22x(9wWlS+|fw%VjeIp0N6#L(!7qc!sfXgFF5Rb>)Rd{h%&lZ2od ze~i+zcr5*7c7dH*wE(wQgdpwwuqG_ZPMH0BO}I8YVLI#q>zE}8)R|EJhBDF%kAP9~ zypbljF4;QyH@&Pk9L%C2F%Hm5hE zsN{>G&Y;<^t=lSKo|R;WPA4o@B-%7VnM}KH7B(KS>R)A-x%E0txK0xAsLGQ+(})@y zao{SAm}w(E+E*jawh=oYsS%TH#PC}*0%I{W06-7iMC#c~rJ>|-|NEWBmoBnTH{x(0${ur+ z=EfX4LXYmJA-v_bnd4(@N<$xEFIv|6vzZ0!1!T0V0yFgVAF-$*0Xrooy1jAtgQ?$A z5?FXVvLP^6l-<6&2Z4pVfbK}qLF;u$Hvt;x)R!gyZ}*Z|2B=X*{_Ewf^c@iJ|urY5b*PD6S0WWyO_g+{g}} zr}@;ws5w*$sfV!wf%G&@riT$}Tn~OkX>m8mQR-pbq=-vk!EqW8N2KvI^6y>>L42yl zi;ofr3Fjx^q@y~BWr*V}^LAC8ei z4A3=8(T#~TE=Fk^Shy#$q)*fs^?eRexDr^fP9aQ?N``7B6D9C0m?M3L<`s9Q@eSov z2BcTWRFTGqOQp8y5_m@gQ3*Up2sq+n|V&!OGM{SOn`6f65mg6_oo!o_n89Nl|tRY?3iMGAeaQb-YCM3 zXe{`g9ehqhx)!Tz<|qCMkUCBj@?ZKCQ-!KhT>Mir(LvG9Pz-gD+8ZUXj0G)bV9|C% zB=XWNCQ4yVWaPYa4K$fwpTYnKojkp3wKs2z9Ew5c;hW|2iO7E!fWitY!hUJ3FA=!=N44)fA2bk5{4)qc)%+a*KKeUVJMLAdxC& zc9+ht0T9YPo4GrDBBwV)Vh9vX^C3>tTDWu2Ry^C}G2tXTDZLbBgUUZK8D&AnkWueO z4Jh7+j0Y|b$oP3vKPX4DC@qT?FEdKNI?RBg8Y zz%=>wooR}@?96L8h=5q>3mBl4UM(Lw#>&0p_{7zNwA!1(R{OzQ1M+noYOyWixI_^z zUfY*92*dV&%t4K&s2J3?X^y5qRE`52zD}8z1!bfIMKp-dec5(rghBc^hV9iyP2Bh=rS#R$ug;zJIaA&)dg z#l_}!HSlt_8@W0)+%dwVe;N?-M1u^3i{oY%hj6XQCL{n@b_=tjldyf->Au)_Wtb1` zMPRZwET4}i*s2DmBbTkExgxQj86AZu4IQ)n$S@r@-W<^J?Sm}wimnLg`1q%#qxg+s za(p&Cs_tZ&!P*t;xrU!aH;SShG%JobMTHe*ctcj~qgEj)-1=wFnGK7bxY`bH;x`2( zz3o7sq@2hythp{sQc-x>04>2>Rvj?oCuQC5;I=v$+r_sd^Xp6c^6FQyKfoPyD^~KhnU+^ zVij>((9mtj4#Ui63?8d|<}j;fbokj&LWOy@LFcn=@Vm*N!6SkObL!JH_-Vr^n3S;% z#x6(uY1;mA9Fsv?(z%$jB@!^4qH@f3%=rzyr&-6f+(Cb;$qqi}g0n&Yp#Xj2ud(I) zOz-6vC?4W(nk(XTs^*H71_k_2@jPwo&8|OYH+uoot4G=5#X|$2oR<9*Kri)y7ICUi zAr+tHH%;1O;QOr%eB`5o;+)A zsL3iC{CLgUzXrE1k~xNxn0Yd z!&&)clVGCHh;)wqvkS0J!X&ivKS3+GhLXEL(01PP-t@F#N~1FDgzs+G2Xs8tuK|)$ zWGch1ZTl&6qKd+7Kh~cLWrAUWNaJ%O4e`0TCqL5kgbhn)2tp6qD7zhRcyso4JRa0R zd#4pzfs%*kFm}sJSKHE#5Bv$ZP_(Dv!u}n$Fb6nZ+p|9msOMo(E1)@;O5A#J_`>Bs z9>4j6u09Osr?{hvfz8cq2SJx<)sAwFF32#@xFYAYzV$J-h7 z#%lK$zZ3Rv=0C>*rD^wngLZRq zma%;c1k@0zx-Kl{)uSanIv=Z0`|#5$Y2z`-);qJpLiw{B{rB~;fGWs02tgIt&p;%j zPz5H|R|Vw2jxEJcpl{>` z5||+$&cGtsg4M=sLVo5eZA<7A1}kkJH3hWW!_*I>lOOnOT;UF|l4T&muwoO-O5+w^ zn>IMIai)*+n6}iwM4G+3qGL>(J)8t@*gp|+gwv*zP4?`K)pG0z4ShclJ8lzTW8mTY z%b@N#rfDTc+&U-*Ca+i|F;Y)s6lWZN{LV-A?x#rOOvGB@ z{kqLj{FakrvXf(iT4TpeG~lR#oPQcMcis*h=yrV^I7hH`sgxGj-Ge}TaFAOd4ZOA>eB)Ju>b|1fBknK z27G=sVlAJ~wK=vfadMpJS-y-gFGAyv8X^`*uT+&V$R+on@z$NWlkmg&%X@atj*jxv7;3+Q_%E6YE z2E9*1kL(2nZHq&Xu4@8%{9|WJgd%PYGxXSLV0vU*%l>KAx8wSu8%VwSwc%J$cuq{o z;a!&Y1KQDksJN5gsN!7%R^^5?ZC`B04)(L$|J*MB?_|pqM*^VS*k*uE3xvx5+#b*w z0npt7pxnM^fR+Y8{m<EhapMt4$ zXl{1D&<7ejXN-ZgoibWmxt~2+w5P!Vk1FaRxjFOAsC=m1*jr>U-xud!)0+z|&eD?f zMn4?eIP+s6;b)H)aVs4wArb{>v6q>by}Q^VF=7;uxY$(cBmJn&pBw2Dd?Xd=!-8;8 z(SfE9in#I55UA8LP8PTD)S2Wl+9&-tUlxjY3m|cyU^b*^Fo(K5pv?i$-2Dx)WZs|GB+3-(-qg-93^3 zV9Vgs&kbg~egFPTR|Z=68-C5j-w*KNuGs$ZNkq%Ty0oKi3A#4lbZ^2Rv77a-zT@!p zYv5F^pm=UjEw{*;YV*)|{fybqL^S4CE4n$@zQLS*YmxGDI1MyaXu%fG836|K0}TEZ zV1R+J#lZjEUPtU40KGB*%Dua$Sw5s_%>UdT&}ASji`(8knSp+%jQe#>s>xWvz_kKW zZ+*k_Obr;%T@j#dS=Dh(2*aAkY*Xx}h2555rN*DKbzsg1Out{%rSY?Yfzr!|g_}QN zz~=Y6B+t#Xc6sjfxk1~%Zos4M)j`|2saxvF;a!Cr9yG4+)R!TZ-yFZyxZP%;Ca*OE zJlo@gYI3&o#p(N?$zQDrn*1Gq{8(HQG?|;#|EEn3rg5~FExno{XhZD!c)F8p3I<1i z%nOj?83T>Qyqf(CrWt$@O7nIDX2g8O3^Y?ttQXpAQULP@0Zbn9GcddTN@JatI6h3~ z>8o7Q2S^zVx&9gBIh{@EVjoEH)j=)X!Eb8u4dcf!XOH-;Ev^lKzVoSo^1>b=@HGKM zo*6J`mitx4{Lk$WBg4A@%yv4I#-OuTPb~G?`#h3z&r&Q=Q1(k+1d_*{{@7DraA*)L zL2z#qM23d;!dL>HOTjRSE8q4Pe82k(l(NvEtr>JYkK@! zt%`8ixi?<31qZ8o6E$0S1TN1Tdf9uyy;n1kqcdK!HjWc>@u{s-;<#Bv-fiP4@TGZn z324{LDM$CQy7XPFrK6&Y0sMBG-<0|F%&*{$YyI z!9^;9SO(y#mSWRxd?;erR9uo_UPQvJNkR(}!n^T`_c&P~6{7GKBFx*dwrH6x&MQj1 z9V;ad_9k$J7*3aMwp0hCl(z%$#KlmFn)R#L1>WA@!^K~0aLs0r?(c!uY%{F z=Up}Dy=~rqzVqI;%;zj*?{x%Y@#zZeuhnu58EygfU;7K_P;mCo!BZ_!60KJ*!31Sq zxb(ekt*i@Ou_F-b^?m~d+J}Y(d*>+obCxBFe%VWMmVN1Gee3;3pRz{J8H+AA{FfQx_iM=IkZK5C^K#s&XfUqOoH@9+QIaIOy`>lSveJqc4 zuuM2yX|P-bNd=bsI9UEI9l~-M_$3R=JzOlGM=P?iECtE#S_EW79o1CF5@jy{w^buS z2e0hAC?FR))TZ*PC%0i>k89J#IH1wr)#q>_5qQh-DE#dPaqxfHEo>ag@`Um<;%d9S zX{?=hc}lkx94nQg2YKsl!NCCv#o8(Nux_K&AT5c4Jd?#L3l`h_Q`Q8vXnU0E^aY6& z?OK9hrwK|qqfQ^P<&eIF->Oa#`kBeC7X?yUO3i%{V7y8&UU$5P$_s6Blva13wDwY^ z^(L6uywQ**a4$h>fl|<#D$*X~((hB#S?IW2v zB+#rq9`B=&V|0&#SR;`JfQbHLx8ap%QI z9-mhX@H!goebpNf!auP!EoC3Q9%AnoKptCqXOu=OdT=AZcK|rWl8qqd5yW2<#G_#l zH#s0Wg=7k1%(sP3{S$V)P_*p&n+;+2Ro!k0i))!{d-G~euqZt?3-DTYDI+E?DJI8; zG1)1=Br_>d1?tJ^^BUDE8KnHU+>aVa1qRMB7Z2anQSSTh5)w`Z%d&Edpn||0S~mrXI+w?_=g(N!j4LB z<|Swsl5idXr|{9jKcQ7^t2umVDSLx0gmN&psTAFkHkX(72bPumLaNXzeYnpOF0T>+ z+#iMEc0sbzJ4yfB;v|8OV>_5Sgya2$#cMMF>y$98M#5StrO_y9Z%gG6mX0Ucc!49) z+T2Eh;!Pa@)%%Z7b58`Q3^%F<#JPpJyEXTd;oLhTH}e{DXLz&{HwKoVpC-ju;}#;& zb|H)ZO^YYO#n+1!@r#R<_T{n&a@nhxFNPn2yD{k3P}}g5Nw#wln#L1xJE^WZ$x=)b zO43-UGXa1JXzc2dx3?bJUT^-sVw1+OtFyQr2jns?2V zM)Shlk-Q@II!K)i5AnEY^4mZa*mc1Z9ED2;jsW*)T0A*Nle!ai*9+o9YR@?wR*VThwFR9HES8qEY`bQ-*f z9QZguLTZP(T|RF~H}9DlHTINtT|*u8+$iA$QB5j6|-{80K}q;oP*B6#x4n2{ zg^i@iOJ76V@M+Y>+h8k)pC_GjcC3DLl;R#=(MlWI zvZ4e$XZoWM<^2BWs7NXN7468_HVpyFcAocL*e{fu5tIw{V@neu3h!o*WD@ZB;KJh? zsZs!nC7OsrqV6UH^q96ptgEX>#1Lzb@k@a~SJx&Do|qH!@r>^sYpF;AY&-HnN-$XC zH6|8%hwu=>xS22CkM%k0OoK$sFjv!j;;x8+8!1M!;!T$_(zdH37qM(2U0NlqvP7(< zg>({jR~Fp{>RA>&$&$cw>2c`2Ho2pwrR?=oh)WMcxsIlXKrm^{#q4fNKqDr&Kig1r z4)7LfOf?r};FR*(UP(GNF=K|o(EGq3W|(Y-rn#^$VTi5i=AjRt46;^W9$^A#5o(AcG(U=CL>EnzT!23{t6 zhp-~)>rk3!|7^bX%OO_T3hj}e0N{SJ$RMm-Ziv<@O+P2j0_W+qV$I2JXbf!^$&)E= zsNI|wX?p$xJhY6 zj6gO(5o}9uWeyqfM9X7v8>-<&z$Iwth@IlR<*O5P(Ka<3Xm?RSlk3c8ptvr#o^LaH+GIcZF zD?OjpS9QDm(Fpc#`}$C}uq?JQ)I;%a(uT_I(}Kq8UPxu_CJd`qu}bf7G>uOiRcuIL zwyI%mG@v6wbs*v*ctuIHevwNudMJ76J=mWOwMpMudg<$|O%r*oA56qz=EUz3^Sjji zN-KR+(lT{18ii^GQfhe8t^`lom7pPuyePUsH0h!^{K*;=N96fvZKCQUhe`og(oucYE6>3Oz*5Mc<93n*M*ui_|Ja%KvA|%a@!SV7IO9ZGq zf3|mO08Tb|0HMmEtP>7oGeAgNpLkc4kg!EL6a7)e?;u}o5oL!HUktIsRTNXxK~x}gj757LlGApSl5J=h|5G3(s^{KAs|^7&FzW$1+NVhZ$(X3PUVT*Rp>l{2 z-1LG%;Af^Ddt|~6&bzNckb`<=j5JaLmEHl$5GY&MNtS{mHWeL&a4W;!0bmjdcSt&E zkr_jG3s|*#laT6-;-8MMf~tFH!t{2p6+zCHX7-c91$1kX*ojh|9_2T4h|QZLLmM)< zrRjDfI|K_X{L37rLm95NrS}!ke6CBT)1V$N1o<)thiZ0{CnH(vwI!p-nnJB9@334Y zgXBV661@fD=_tkXeob5t4b^9pt}|E)9pebNv%@{!-PHfV?6TX(qnozh$1&oAsSTNE z7%u_#Y3@EAZ+ReRA5TZBSI$3wKPS}38xVARDb&aBf++^<W{`~|4gOOQ^ZgJsk&cMD zxO8u&L0Knp7_~^Eh{R%)FlkE*w!eP;HA3AW7(P94#a`~_hp zNTStuEXMarZZ+~|8sfzY#JLL3x>y*jqM)0WQXBxN`eZ9Zf?qqn@=7&ib9J;aW+iL% zjkY)g%z$x19m9sNXZ>Y;CKu0kKIZ@kgyNXECJ9 zsD!**NXz*2lq~Tg#ZRRU@#g1F<+S^BvRdDQ^o%CwO!8hbz)*e4dzk@U$nsx$3Q6=+ z!bSzx)P7Ql9z~klZj49(9rpjVME`Y)K{=4pD=(}>KQlb-NwcHXtCufqkBlQeQh(wQIz>#PSr;1>rF`&mTjd$Om3C72=FM%K( z-YNjJGh2LcN_5mnQK886Q!g0Cawt(h;pQmaB57fYR8Kh%^dvk?I^^`stl9c{+kM2~kW z=m1edyBg0&NubK|nAKYgsu(;q)P2A1`S7?FT!UbMYeoQ5% zm4E~(@0A$HyiTUX;xDe6TnF2+{&Y4JX>Vac9oWc15Bj>B=;;1~xa}OR(+us;X0?2K z2`26^R?7n74tldut#>v`;coxxoxIcK>ln)ND`K5rp>=)*)|sc_edH#GkUO2o9V5u$ zox?ghL#!ZktnP_Q$>9E4u&KehW~4lvx4S?zt1OYGXE6h6ww7@k(&2l%8z=>mcRq!t z90}-X$_1SvlK&F6o*+5M^?Op~U=Ow(+aZX_%9$wb^#ENNdbxoVe{U9PT_=TAE}8zv9WY=1VhS-P!I5WdeO_ z)`XwL)U8raB1sbrT^Q57zkbEB`14!;eJ2*EhsY$YsWralNWNIgnzT+lUs=CSefio{ zTh|Vt?l*xaxK}1Wsb+&-YljMN6VJJ&Y{C;Ey40eOp-V;%{c8gNr-`@j2ao9ZJy0S& zK)Erzb{?&ktvK8v3t2JsCOYKtwV{ghrQ%IOeVArWhxagmU(++a9OnqJ3Kla#m-g|v zE-B!RBYSZTA0)X`GGaqn{Tdkz@#*LK)lw)ld7hYD6rWUto+u`~pb1dwJ(x2E)cv85 zcsD{0BGL}Fy~~0vW$!*7YD+mvnPnA<(I&E;JmaUke)Xl!UT|$s99tG>0PRXk*zEQ| zf3(%=Z0k+oDxQOC>ZpLh2LE2j9HJ+7tgpqRL_6foHPBJ=?6^deIyN@1>CZgB0_JS;v0ZSBL}oZB_TRAAmC0F0g=r!lz~U{ zU0Bk#KWG;|vl`e@x2g)-9Vluuo1q7DG!ycNbrGkTg^FnA3T@+=xr^cGt`zgz_Y9UU zL7mJ5!QQIworxK34*2&3Vuscm%;p2I=`QlGhXnAi7wmUbtMxb!J8@9}42}2kl@(kfrgDo?xVts>$XTz{Y4qOEcYtC@REL;+(%&kmJMaGX& zwc@pA7}wyb0ogRO8z{}E;h{v?z3Fe@ud#6fZVkOfHG46rlQh^XwVa#~@M{l@>d&;`x{|fj^0TQoDQ$E=}8Q%-B-)0%XT=Z$?655;d@2 za9Pg5Q%+%2zRO@}^2{KXH8a*wyB=>UOhk+Hs{wW4D>AQEsArp#)lXF(@mxRxrH5$Q z$lM(pzPr8%J4kwp6cjn0U)9G6z%hdbxKzsZf}ej1W10T71Uq-CIYU|~uK;@q&9zm3S|NXZl@e{iG( z{v_Q2>{0g~1>GPE4YhitL?IU;shhh7ainAexCrWTgYOX)K|A(}0X%t9;DQZsq9hoz z7t~(jPrSiFfRcfIIu`_R*VlTz!%oe0`eIU!viq?tiDA}ldc6$V6KHaSYe7Mdvafz2 zyX^fzSv%h9d-~!C6a$a^VYc6r9((%YZQ10#4z23({xCV9jXBrQ4$g)=oCqV)b}?{< zJbV}5j%9i|3K0mOz8KHy>}<$KAh;PI`16}1(H(uUY&=o0+$9H=XE<2y(ih9mDV9HZ zJixL8-wu}LeX+cm)mbd3<-oEWSf=0-c7tbgoG5yD0=ZC56j6A*C#2QEiJ~*%hM{B^ z?Oop!Maz{&?unvPwG|a?#W_mrA>meB4$07Iuu@d+-Eo4lkWwL@+%^hG1Sd*vWgnPvdgw&SsR9r4 z8&|Laah@{4()e&ez&}xP_bgTl`za?%Zj}&qS&cbS@-;|>9bm|blDQ^}C^QH+{ww&V z#ATf*nd-yh?%9Hq+;W9l?g(2B>HG6r6(K@JCb!v?Y^E>FNVbwb6;703Vu@Zo*&w94 zoP#CsrS-_jA3!tj2AG-{LCT2^KkcXNR0tZ6lk9*FgzqDBL08+z$-5vf>q zJMM=5NZZJBa3+b2UE({y5MlLm>L*UX#eJLkLZ~-66zBU^+vHNMnPOP*yH&Yekz{ z^*jx2xpSUooKT_c=5GlxTD{T2etd5o|NF!^EK#)Iv?kxgkkoS_MvFyXe1WO5MXWOI7Y;ySM{XA)o0+00(pQkgndF$C5@eu@Gs5 zkz*fl{TG|+unVsp10!i!boBTNZ|=7-gVB)A7gx4nO+G|gV05XHR4k5!x&yAjf<35% z52iHqMj{J$l&ZBQ7}NxKxr3PW-xZDSSivZ;Zftx-k36v@@cS)gCc@?TFNPK*cLpBr zR-UpPW*Yn9Sii9~do&=EXZQ9B?-r)ee|&g=Oqnx42^N&Kh-W?{=^<#WHgSu1b z5GW6WY#rXg^cSK6Ne)nf-2Qm}ErR(_!JH8Wv-R@|2KaM4FMhAKo*qRE9RdYZ(;2T? z8=u+^=m=G$8fx1y=GuV(F}6YsX_*R0fQ1f{py^<=84t!!h&09ln|TrjH$3-lHj+0G zH$M6d1#&-T0UZT0LvVwe#&x@I9VdvU5{pPDP&DOL9s?)MUyeDn4)mQkR&#Yk$01kV zsvYsi>qgOz3Qq(w+!AB>mYlB+^)q%z~tI?rb#CODcLrVf0pmw~2?K zxAxdR=sj?BAM|bm#!4zd4{YJ>dwhVLdB>N?6#==$=u)U>uzjhuo}i$E9O>2eD@E=K zEK51G8|@-@SYPCd`yw|4$gP4R%Jc3v`3)68J5k~tqSdNWSfz_kE=^2@m_Z3PtSM%b zVg;?#@m32UDTVo9#!1H7l)N?U?T!N+N&y}^$V*>Jm<<&klx+ncqQ4J)4mYNu_OT(= zh4?$PdiP9;6sS7~Hi-W+(}OT!WVi>FW#_Ogr!RdXnYFg%piSEfrPCSU14oRug8X4{ z4EahW()cIT029@aE;OwLrf3Y>mFHDpf-wDCd_f>~s+pNp@GG9uuqgc0y|SHP=? znK>c(!154g-!zzk8AQM*BP;^$3sJi-M3)iF3);YMhry7)q=72n=u6U!cR)0(joDN4 z!H8HEdZ&TX-tI^FzMFq?O%nDIh(X4Ez)GMASAqHFt@qb4eG5uLN<=uwm_iLAm4OAA z0fn;!3%pBnpZZ&Zb5@n81E>BTLzPQRmDtF>R2QFjUyLo+ov6py`f55XOI(?`0yVbr zeL3ixlb3~LrUz`_QE{j6x}0KmYDiQqfp7luG=RSq*(~@yiG}xw*fTA7E2z7!Vp|o) zJ1Kl(IHD7}_#xq~uhLRM-#!&;L`@3v3<8cs1^y}sJuj#O znM=x3LW7C=3!OX-k_WcAVq<*47-SR6NV`#2A}!-s(qHM&MPY9a7|EYKmAE-8iI>-L zWY7a>8dQoX6|A_Gs~;>e8FMGS9EsuN5gd?;?i}rxCfW(Dd!G4co;=`$AybYp~k2j*C1L0tg~{ggxyYd$>p**HT9E=*Dg|S5!|P&P5n2U1-=?X>V<}vgR&m19;!=a?qMa zNfybyRC60f{z|Ug{~~-e2<(Q;4ZY#@P4@hvF4`{ zF4Q^`WyT0`cZX;ZSe2#M)p7hlyzsdnEjT|-2@G+xB`}H;4Fkr-lU-2ZX zmxT|5irEqiY?&hOMWw8kh_B&o3bJBvn`cR_^{~hgWC_)wkPa8e0D@;~HYUEYy$0Jv za<*KSB(FysY|E=B*rocf^({gRryBvzb&FtTKy}Gz#gNsbtD8DGiv%=r-UbwORDnB7 zRlm81BkTBzQaBp0iuO!1J$3)=b<2ve5O?Ry^?TGieU4K%5k{ay3aCPGc0N(N(OYx~ z3do5Wurd_r`QBF#rqGFwmU3!9-5t6&VR+Ma3giZ6wDrWV$(sC0 zrl{*w{CO#;A^QSa%HI54h#Egfa~v9sqLUV`Dsi)PZ=$U8OjI=<`E6C_gmZfLkETF5 zJ)(0kb*z21_Qj>)+V>0Bew$>1rdABR>zq@=C**+qbwa*OA@3fB{5a{!i~qwolJ@9p z_e8f)a0^%g&7$FmG^%IZryV7%ty*il^FB}!pJpzp3bjF8+QAX9xEQyWdkfGf?0o?f zPjW8H1bpwk<^blUN=E*(-2AY>^drGXOa8Kg4x z3+S}A2^7|rvXSA&{1NKX0{fLgC1APl3ART8TMHWs!%j3Q>^X#es=|Kko)DqFOI6I~ z&U%NtzjU@1SJe1}rnVB)xH5`A-UDc)zyDTjH7$vz-HbHD+`*n&xR)iMr{{0+Qvag` z^JOil@@>=&Oo4VIMiSsrnOp?&7#V0s!}Z+d?@$Bw+KFvTLJYYS>M3(+c7YdJU{7uB zpTh;N6@7+X3A@4?qF&j##JO}-pO^W9PUK;R0n%}t=3uX9uxE8^UbVRSiRd_3 zt_G9RXZM#!tbFC+G-oEUI~diWpT~x=dlmd??(K<|Kt8YKIbe=*h1NuIWg(5jt@~@A z0nZsLoA*G^9Hz*!IW?=Yd;fE+@o24aCB{yUM1K!8ngOw_*1-NVUwj3JFpy#X_@lH) zN7FcjiAS0ztL;b$ZbDlOk!nphLj+9KTo6KTAd!&7EQkvjAt)h+QtEJp7WgNEOV9_RiGn} z`X3QWV5eHvs@C+HN6ANs-8`V~e4btuZrtP)AZ(!=lM-j{u5{g9qwc0uC!eHS=yV>N zr2Ly4EJ{RKshxysA4$Qdpg5D$Dd*XI>cS=B%_#bj5dq*3P-D z$Mf<`Mx(J@=_uu%tP?MGJuAo?dS!lS#6guZ7shfnc_0t$8YCxviD6q>Ubt$?! zhIv4$HO-KRQi{8J12h3_k-)oD$Q*%$r%n&8=;ykbsLwH{@`eI#mPMU%vpPN0iCiAQ z1I}1RvS=c=)yfP=k7{j9l|(Z|*JE+DxrLC-%t$5P+$~_OIRPuH4zpO-%(jVj47GBs zHT8I%5m8P1vendCW(D(Mk9b zq4It9VNb9jf^`BLrUH{plFCRWKb*E6i;ob#MD@b1NSm7$9aWk{HA+X7;f<z$1zR5QZpYIcYB5))NgabNq;nnqn!O%o8YwbTltk$9r~q!OttQ%Wx&PV0+f zor2<6#|-bSqkY(rrL|u1kjFr&XszwuO13(ta*W}$QbA(VJ%U9lXVtQCX}_#XV z>hFkP>2Z=ibuQ1e)?qPjRDxV}V<(1KnTjE9lqxjrbXAgiZ3y*K3^7p|qH-sO`1qJO zhWPtq7(&ez)D5XwK9&*MQLPk74!fuRseq`!EXFh9BMs4C(XqKU0y1OU* z=8G!PNY|%~0J-aJCh1&VhI>R88KA;z_t61#HQ-OF`q}KV{YD#-AtCxN&5@Jo)}JFM zrPdqjM8@0nP$=V6r(hz^*UQkT^@j2{rIDP=pB6jCHvA3_DaO{lk=x~5{?t1-)?no| z){983mGWQe(e!TQ9UKUzuCWGl%JQBy&O10HhY_xawceUcvefQ-b+3v&(R0I4NwdDSp#A*BjTP8)BC=FUz2?GzJN#?)r=}N(lTQi zLSJM3oD(&9W7Zb#v7VL+T~Fgkf6?vX-ADch9{xO4yyM{~@-XT0@U6$T@=dc|=jks|8k2>}6j}XW4@K<6nBOd;6G&ADDx5Z*c z#0AmJhzpO6#f*siJ4~;KZ>9-}Br>LXS>8yzNL6ufvSE@F$3T zwSPq15Y3FZ@T0Mq5%I0j%!mumj>U|KGaaVa!~Z5Vzr6FsUx&Y8YJKJ5Z*k)F@Ll2> zUJviXAWit4FHb06NE~s2&)XyGZCHJjo*cMWtvwO{V)7w!!wCJ; zIDVs~({cRgBPY|X$0H}D*8S>4d1@8>IK3zRK5LiI@oJ@ndlZkixMb3IaBk&&G%`%9 z+k?&F6(CA6Jq{!9gIRKz(N!-%kV}>7lDtr29(?Ht>Zoo~p~;ynlHF~+=#(`5SjzO8 zJdf(3lV_yC5G$!ox{gZWbuJr1gsShn&D_b9n>-N8BwaU0Haj9?W=_e-Ak7;emIcwv zS-2c|buX`RQPXi|MYBhsmJF(X^&TGP%&eWX#3@!c3LL#i=CxF2PPhI=E^*QmBtYS+t|m2)`83ag`%qx!H;pSH*16UhZ@ zUpLdi=iM*D6Z`7EwR>`D+P&1yQcUP!-+PCrx1Wj0bZ@^4wcXB5a+B(QO>I(%F>6pB z70deH@}PajQu*bVF4|mb6^Y}-5>2-*izmvmhQ<@6SSQ95SI(5L^%RO~K1}4*Wz<#QexOKooVp)GtHg$l?FTYgkfC6!x zSfc6H*m$BWYfwB~p3_b43&{4W)?CckJVV?_h9eLf) zJU!Sx^u{$r=B-AUg1?CGa#Icy9@uX3fmRzKNGGvm{OG z&i(wasA_&>flPFHbQ~|iWa?nvUFOlTnqcI1Gp1)IL}hNiM|CQ}%F8c$EI!|fph_BU z)Lr}&b47OsIME6?i-Ildf`jp{@S@-y13&#L*iXSD7&t=YDg+?a?#P|McXL*PHZ$<CMR zoySJg57jnu#WK|s%Ow)aB}#WJsca+`F~(F03cp^bci5 z%_U(pTRuKzS)-Adz)GzT2}ftsldP{-?+@>_TM%uKj} zo)*qpYEybeW_@}pE9k2-b0tqLEw%G{S%X!Xkm>YZ(zA^)ro&Jxa5rQTysj&Ll_plDK)DDtv z*uX1Cp0lLAa&0x%G4x~}YPHOwvDJ7Lx}*H6uyq=%u#TfWAL?7hhx%4#){I@w64J;k z#|!XY=Z)6S5<+KbG@I*&xF}UZ=`@*`nochxr0J``ZQx392gxLVn#54G>Ad`aiGJ2v zsInVL^p({6u0&Ii$S6tla+B!Wb&i?$MLR3QqrYC5wyy=JF?njdj5P!=l2=X*iyQ1! zp)(e*+Kb3a1R1H6){Vl+$26jPwQP#GNVe`AMVgwZclf>^*0EM}v`C%6(~iueP%S-! z3hJ4go22*e65WMJT5!d_9Pjmxn@*PYIPzX2w>FtEv{{1{UD{la+gl0I+MFI=n{IAx z-lX7pM*v<&zc|{wbdKLPr+Ky66+oN0?NPS56ZPWQ<_6K+vCV}(Z7ztTjqj^}YgL?y zCq}DCXIa-N7@wR}%lPyb^kgD)oWpEEztBdRx+A`#bFiUE`TY>p-w+>ERDxu?JNxV?lX~@C#-bqSgN0QtXEyrQ?N|C<DWZ{eFE=@ z(zlyi-#1B5l)l3#2~F&>+JO(p*o%G^ahkp8Qt?~os|<|nMZfMiRmE(hV8qyqevZy= z_g?h%IuW1J+t_fqHu|H|^N1wkbDT=|uatqrpVVVyK##B8_3`WtDW?!vghB6 zp4A6at46TL;>iTg28w@j>E)oLB3q}TN$)QhwSh#?+URa-lXZ*UYKc{%zHs=Q3X?kF zuaXF7Kl)sygzO=ZU73l0{)t4)&l)PW#MjlC+P-?cPSj?J+w|{tz9|-{O?<@Mg}&^* z(p$@armnfRr2mu~ZwLpcwxrK?^SWu?WQWJ?m&$M5mhYmYlz4%bS#>Ruz9Geb z@QfDZ^cZuh)G@&ZG*x|ycJGpL11@SEjdPoh+-CB@$=v`;!Xq^k;-p8YE&|7%%r4z-x@PXJK@Oy8li7g zXBDhMROFq{sq!F_)lrgPIuhr@-P|LsG%xjB*vrVA*L16b&pJp6Lv)h3m`7eCKc%}z z8sx%yxnN!PFYGDjo7D}vXMhGNyc&lN(Ge#sr9LQ>5?D862)|tqeeX$u;Wbxr*E}4X z#8m%sRV1ZDh-sHACA|9dSiDXYY1vDKrfySlo3#$#))2i}YrKx%uIgyAie46cN)6uLyrga0z!tF7pgFSN1cvuv^0sNZL*OYbE~cb@GQw{QNX+(4SRt zh|2YFuR*Mm1XIWDTAy_ie6{`{YlbHR=;*^RC{>f6H!_0W~j9Q9VEf*2$vHX6q*e zy=IjtJ<(OB!+i+%gtr~kE|!3Kh+NLq5eMkqiqES|2EN_^^6%6iS>0(GVWm;(AoSs~Qv)a@fzmxs8lgrL1nqSbn=4?JHU~mp#@fwl>{gzg4DtvZcko zu%S;Np~u~^TNZ7+EH|kSt40Giry|uB*R||qDHA1Nv$#} z8BEToOJ60`D*g3gq>ZJ65+?IIl0;s|Qa6!+O(I6rbaCCD;JJN`vWUL1G?-BvwvFDE z#=QaS36kjKea6d@Mb>(8Nhf?$8Fbu=k=99dQ#Yg!zg1d@}n^G=2NJLf+VZ&BCDde>^veLWMI*c6O$?hV) zCqM+U36ER<_DzdDvgUo=Q1ukO%~zdnXGF;5oBhz+>IE-6;C6=6B15zoEq!|ouvxXn zVl3wgHC=Xqi2}E5UMVrpBsxd4@MCOHg{0Ec!M+(~N+-S5r&C~MFswpe#c911l=$A` zF4@|~`KfZg$*>~Lm?t}~#daG;=O1AR|zGD>Z+_EOT-X%^YU`~IA7qA~QR-UGO0iL(S5mKv=>fh@RmW^1#0 z3WsxQWWt*FwXSmrMsrOo$C%-0L+Hl$F1KVXdS%$ZTj9^&ZH**T88*~?&W$pvCaV@V zt{g6X%Z-fDh%!U0BCYZakoaA1X@6yu1)=f@O7}MFSGywh+K)x19~ZE!iqht*tU4Or{Ge5|a(1gM z5+`9qPmc^q?K6d}UQbr9shRj>&Dhms>l*zEL0{uX^Z!8=C+|Fl0Qh-u zkLoGt#IJ-N)xYA`&UWoT-jJIzYE$~K^|9h=i8Qk|Lk!2ojO5zNCl`H1ZWDQ3mS9uu zyreNTTWY>huYlmaOzN6brT(RgGW-XWq1pUq0cDt!nNH*i<-}?{bmy{I$z#iFBX>)E zx>7=L1~KcVZhN^K7pw+s%=Y6ts`9!i397cXp48WTyDC+6-@tgNFgK@f6(F;C+?JkF zWrN(Va! zrDFtV9uLa~>)2NlA(hIRau%t%!h`b1N)mK~G=#hwta~|SoM)S}Fj*B1XQ}Q>gsB#_se4syW)k15<-K1b6}GdutW;Nb3?MC} zy;6(IB3!++m~xLePnt7fdKY?i2ul`vMOdm^MIYr;!%*pI=48E;lkif;E+UTlfWafr=h+PHx%vhJ1tM*q!YBI0PsTbu>pGke`guh7*Q5XS}$VL#Ux^{?hRRmIX%AcIM%8(X{ z8JsZnBZPBnIdQKfT~n5vuc!G?+v)3u+%nhGR-Z;T?3#>EHRyGr^mH7~AY zcA)0Bcc?jnJD12wUA3Il&95@ z1S%PctwJsN+xZX{t({+O-A{fnd~EDEk+(_mM7{Ro@DpE;YW=XWSPUtPi&vqjw&k~Y zwFDvUca4&x#u8Cu34S!QMt#*@-p8dsS&#qoXw{FK5p9sr&^)2X^Xj+ksjbs-ENVDO z*&w``)?Ba4;CtffRXinikFt->W$PWh&bWBR5oSVZQ~J7tcJ<_c-m$9Fw&W8TR8C*l zV;%2gZIB7ZH$IW4y#^k*n;3c{^Exv=gLgqJAaj3uD|+pV;)2$llo(z=VORFn7qp4& zk7RgIZje8oCv~CPQ%<2OCK&qUeXpfZMIPeb5~K2>WtCI4>VLBeqBimU!>RCiLgq12 zCiLEjoCZ1lojK)(@S2}rscU-8&%N?{Gm*x5hyOMN4DR#_C_0&|>GuySYX6zlTT3N!Xl_~;S?U@N&9a(&1W&-cS`kNQugn0-hz_>!>-F)t% zsaDsJH)mtvKR(cE437Ha?n#TQ>< zVGQmW!W9ddu4s$(4^rmm_KU&Y`9U=I`3TqDx~i#4W?3g%vUOn)H2mtrZsC;d(J9$u zy(qKiHG0v-@9=!5*qKEPTmB-o>=Bpa+G-O6ZeAyDE=E>~us)~BjatNzD$zMzfUeRd z(@ntly!Ze1_m!4IVrY51OUq;ZTArr0e6}>A-9b5UB-7wc@T z#f#JkX063GtYN*SQXN@q@y(A^@!N(!$5?CevbK?Xtwp9z#Z*bf1VY5tr+QOy10_uN z?~;k!dg9NRKC;&0K2Awc10LF7{mk@)NYpUTlX`99Rfjm0k9zNa9jE%e|GRVw82Fjb zdmKk?H~}Rh>n!exx6UF{g-2_Dqa?stXK|!bAiU1vi>?x>v(Dmub*9!?nD_oqqg2oU z?;*;7dhh=_bBn43d+Nm!536ggMHW(d)`i1Tt05M+d5pqAO}xh8@%w7|tt(H?vdrDm z9gvQ^XEj6?4&bbYFs%?bF&HZKGU1Y-`ThkFcVb1BK1xD%{*M1FX{j?L0%s+Jmg%m$ zUI}p!*-6RMue_>)M9Av%0K=4%(xj;|?!%m}%C4ZArpu^3wuefo$JxAL*5>y} zkDRapO*aY5Or%Vq;gtCc2}v*Nm$`?OzM_fTy*WkRgkXN==&PM9NmzmPtbNLR&60$y zVOj&NPvtbLWILtZEJWZ7i)Lo=pgEM)uO%kNKl$ydao!e()~e|EMJuI>F2Th+#6o*T zCS&Ks#0nAJe|&7@Ah z5KXSg`>f}vD;*MEM&fcwgDDlx-m%SbK5ss8kF>T6g+lsht@$|E@ja@q!s7huRnde0 zc}4cGk?;JJi#mooB!-&J`fbPusj6N*W~yMAwfG8qs5|u}k93V>V0cfaITtl+mn@M` zA{tA>g*oO0HzXk#X>U`f&Ue(_noaJE5e@2w{EXkO&RMc5q}w3{c79@vmXYY_D86G& zRSJc5)ZZP=Fj|Jci+Q8OF;2&Ej>JJ=re)l!5-Dm|RdJCN^{D=%{P@AC+R3)#C^Jew z)7l_4z8+W=GwPn|qw1nKiTM)f?rTs{Evl;u-ejsrzW3B*_0<{IR~Fu=)%CT`rAT2LA?Z*f{)~SY zdQ6?`WQ)T}mL*Wq57psjVf)2s|{ zA+~PF1)_xbitY)0gyBiyS?bFd@~(cU;kkl83$I%H$-!P;Jv?J2c}0~(?x8jcRlSv{ zZpfAbPn3n>ye5T}GBLi#`V~{xPHB!m1WiMgr5MyU#OPZ;7AR>mox@; zjYl`?FqtG1vqoxbrVrGzqZDf=L1__HclSS!C%{XS0F`}5p^RfXAmI6 zvtY<0iCTxma-Lx8uePNR_4^E6hLS)OD1YlDpX6UWNJ42 zMRk`pn`(gd)Yu~0D5u{npIW?tOxp0G(qPE(vpg9l?X7Ed#uO(inQM24&gzjpJoz-4 z)gzx$kenEJ_6e`<=wxZX28pMq@qceT^(0Qk zBi|q+1nC7;=6cwqIO^k> z=9OUAZIi;Tg=$HXUTs4o!RutsMt9Z8;JYe80@N!Oc37j7h1Azo-c;+hkj(389sV|k z)AzF=VV-C}4{9C_4XYu}B6{mkS8Um$iiDZclOn|r7Bk2!wdRD!Xw(H0SWQ-eVyHzA z=u}~7y%eoxc@=S(OQJ4z&~uJ;ELm74`Qj{D*y=1<*s7N-Y}HE^c9<$iRxOO9wy@5p z{%{PCtW5G3z3@lv!wXw=iHaAy>!QeW1&J7PM_W(cr$`7+NnyS#e2?|OTZI4XH=NPX zS>)`7r4mlvkn%i_M;${D+I(+dV3S!gw-*WQ=Wi;3_!UbYj5oMvLU*+EB;=Hydi;w) z12Ol!c~&2CSerxY!vTGeDlEcn8(;n*yalY7g z?ekr1yUvTarPp77D#{&@T`LK~%98)uH+k&3o71>1Q$ptM}n5D`D;qQ=O0>u5ruG;qMPCKtv}fF&Bbl$SPKo@yD)Mu>^OM41 za#t0OD!I;|jw)PM@G4otA!(OE#S4FL;#3_)sS4Hoiy8`|A0$QNAM}K2QZ*YNbL#S0 zDj_N=QO!47C0bb@h`0Ktq*S-yW$kQH6PeZ&$r@)6@Jcy}%vQO_Qzh-zrK&DT?D+P- zmXFtOHa1Q9-^<6!*G!!MwS0Vp0{4UR@hIJ*L}ixB$A2~I4BI7NRB3XitF7gRK|VEE zzmStiK4!45>l?C+@j5f#vLSLBMEZm|RpWYQ$nb7;P0zQ~%J0qMcCo*iY~lR$k9#5) zFZGUVMbEbkebx1}HJxf=OHE}XlP&AnZ?%Tm7FqYmf=AO`%)o6~b|uxp&eb~nEuQhm zEs<#$vj_Uv2xZqi1`M}}-rx>{O$IH4dj$FJh^j92!b(!H2J`NSOv5mzH*p)C|3+&x zh0>XZk%eNS+AitmtTvm1rT~%++cqM(+5IWOWy_nywF^2*S8a4a!dx_4e(w0bD7d5Zp zv`t^52^JdJh9$E(7)jcYMxUq-6Cr@Cif-qxu& zUQ%IZUp~CtlZp-+JpEj-mNIPhdx=CvW?xR`6tg!FdxP~OQ;(CV=-HQx{*HlFRitKL zdSGuo`!YwTfZ^HsYWC$=GW-B$U*1;XQS0rK1UR!V%cZ%K@9L>cPJDg0MC#1G{7#*@ zXJ0;*xZSfaE6pvcN~Co2FR@x(i<*5Y35TU-U#7cxrYg;Jc!ZH6zjam0*&uWG_s+hE z4|u9Q*R%^yh0m$_@l_1Q?1KEZmip#g)Gh8gmpU?$^5&m&X?$4>*~y&CY^C;)q+McE za{F1;CdHp~ITr_Y&AFs)^v}5@hp&0&T(T$x&J5HKw!y8c*wXh3&pY{SP(!}Qv_XUN z=1y!dOC^3t@JnNZrx z%jRuFutDy9NuCO?UWQRoK}wu}^A>bbErSbsE@BLB?fBQ?C%L?6 z{zrix)$+Z$+KJm1eVM?(G$Zw+Usb~tQ@1cuv1oIG)diaRcp7S}PvA~o^&%<8E+5u}9YO608ca>yT{@zd{ z<`^C!_gH*C6jxr-xmu(0(@N8cQbS%tt?!=qC#AO}rK@CI-H?y7NeVyBB*bLMyV6aj zkc_j^w^Q-2#LhJfD@enl`P&1PCpxb_ml*>m$E+u%LF3CiR-nh?K~jH4Y;FZfnmXTH zC3zs819givMXnpCbtT4HzCn2yYT?9p&D^VSHF}U01W;5maCXAi(>02%`BYJ}V)vF?L=URRe7SF+| zI&$VgTcvbzxpukKBkEU`3zoCvFvC&2p(} zB21oeXsgwOy11-0`2`b$W35S8Xv5{gsT=a}WgcstsH%nS$O1br74PyWESIeerLYQK z;?u5Rl{zFQySL@H%YxbG0whCCha z=UId+I%)TqM!0H*D%!+%MF;Y@1Tsqp@{j})@v+_n!i<@Ox>J9xP^EMm7p(m%9Ca=Q z+S*UKG_z|vPv(N2+teu|LzM?P)0@l1om5I9zp9G3cK)knMQ%gfcGnhMOglx*>0k_ZWOMnPc?ab-hX4u2OfTgQFr%iXG`#CsNr26`9zqk*JsI zs3&-%ep6Kf+tHXxV0)y^?WtOHnKRVQm~|R4ni6`;?gnmWg>Z&cF>z)Bzh}O$?!_#~ zu9uP>C93;p0nuEVFM*7@#loTPZ(>SK;;vmUrOvwUx0HI?adnNYl#$Aq;*Hh;pTO_?jK8Qwds&!43||7MLV7gWV>7T`=7N7B@b9_xl| z&-5g1EP?9o&cWoN))3ufrIJS%tMM68PbE51@kj2jRcZ5iuXOTEZ&6kvNyt0p%`Fu3 zNYnHc*52@%T;)9}qF$sTd`g$H7FLH06RR&`-}O%^mQpB`)$S+Z=3G@cb?RKEZ`TXK z`i)XsRz|4+B>&`g>u%FN5^%B;@F}8|=|5RHDmxTWZV(~~;1{KIZzP?jm1ehE9w9n? z9`zj}C#1u4NERwYLTZu#Rh5__pNhMcY#?&oWp8%o0h{$aV6&bFl+Ec^i<*^yT- zsvZ3qwWZQUV4!hxAGM#Kb^N{NfoL>OqkO+7EIu5tQ8tHZq_u1T**87Cr@>djOG z?~xxH7D+I)e;MRWq)i{~c)ObIW?T6!uc&JKf4IKJ;*G9i!lQvQhb-;857jAJ_vzf0 zXFnO++LKY6`1prBJx9$F>!JihlFPGuLm%0zkw6&wk!mzqPwvS~jH(va;jHFdRU40~ zbC{88K}{ZS;ifH?g)>;M$$!O9&|#9vV+2#TSkpLV^k|E-cUFoc!fmj&Sqmv7YBEmU ztMp3r+>k4!$i)^-VDEsv!%F*&pY6HfbZ&67C0($aU^iJ^W3W9p{Ow7@_D<(55S?W@ zFQRje6nm-9jJBL?v1W3zo(P=*;XPKhSXd9-g;%UQIo9(256`hXFgH*}KK zl>|s$$IP*zlpX6w^54c^dvfeIoVu;%$&hUnuTFF9X=y#;<=6`G4cTKFv0b7k$F7a? z7Egxc#9(`FIM-o&b8M^V96QIJG1{sedyW&;=@0MaeMc-DC&xzb_~AMBS)@#f;?@LF z*p*|W)Ooxdt0sS~Y4YD;t35f^{wuG|JvnwVX^6JD=Z1Y!Nyp2vCh?8Va_r?OZ}DWv z!!g*N8*Xvf-W=;KI>*j2+i0tDtPA&fb1W$0s2uAhwW4}M8gs3ms6vvs

  • h(SQK1be~{g#>yzy}T3vhc zW;gF%a|y0n_VtWE)mhcoNMoMMZ60@9uC`&{+rCc8-MV27;=^~VR1hY{I?K`WsB^Bd zgU^CeA1Nj*g)j6-U@84V`!-HW@*1;vO37fM*(yc#cSz^GIQgNtI+8m*rF#uXe-KxQ z-{jFSpEQ>5-6rl)veYzDZniZ7dFIG^@>1)`Vv2OUJ{m_4iSPDtEL~uV(H`4wBwP&N zzr;UzepuynS4w1*Z%|Oq5)3{;KOa`Rla{9COY!T_qqbQ!nxI|oZHd`*2@=tcUk4x? zL;(!H0D6dR1&W0&Jl+A8Ft=sMw0Fj0IE3543~2T+`kaP;qkALSj3e(?Bk@D*NNH#< zI6+e<9C5Y55s)g?ZV`5q-2xMXE29qf%|}2F69H-XuO3!FYhjo3vOx`xlf>l-)NnO2 zzQDwW!sI`aw2H+t-4a^RwhnO~dM+y~VrAEiX?oSnH5+s?(B+q&NXYywrA6$Wc>lr!8*m+-aoffT{GA!C zZDP|u4})9+BMctt@SB8(=TU*MZ_U(-Q2EN1S7`ee#Qlxl$am(wYGML>% zecw;PMJ#FcepI(?3(5>_2V;lNzjNmU&^R5hv&pQwWgW-IYTvKjY2K3mBX7i8$9*@N zw*%M{)-CIEF0bqO$nSfpt^&LBT=)ic!5!jK*ivqZhW6Lr7%zC>X~miDcq6mrVEsO8 zW3O`*Hc(w~FD5z830OSV%D-W1pcI17Imdh7Fx^VdBgx3C4><~k`lfNfbB6FxwR@r< zZqKj+JziAnfa|(0L>{=TX~%4pYvUwTX_j6{)9!P_!Jn zHR;|aJg(3l@Ln$d!ry$^Pz3N4{b;h+h}j8NhrCWMP);6KWHi+To#?h+{J2S^q&=o4)#s(_CJV#{W1=z^gP2rT7V{2 zD~={I+HT9IbHR5KFX5^(mbg|;(i=|+m9OQ~n`p%K+?5-Zw}|gO%pJ`3iMXo+kI+ce zIZjc!BXXC4auE1ggFB4!TFWgQCt02@8k4N@QgUgsBKu=q*Czf69vke38=JTTTdnNH zp;RGdwvbur{@TA3G@HDEyfi-wmzgxNo@H&a!uxLkwJf>DdQ!7V9~P;>@Tcm0i&B4#!QYwQ2DM zctGQEQKp_Vy=T9kv%Kfg)~1>Z{3bg1416xN<4>f&>G%4?Y&ucz;5J3W5nK|LI?n)V z!)2n$Nf`mhoO4lOu8-{JRux`y*Nj4RdA3f%9F0=YkPZN?>L=_ zozaDM*6O=83Iq&lmKXq8c?<2(>bu){ZG3?1Wy5_KsHAoI#`HCwk%*k zqOV6?|5(}z;*RpS-kp~@Hrvv7Obl~_PH~#Y*M4nqjhQ}aC{2`&fhLdH=bC0aeF7qS zPi?%?%tM3)TK9FMw^dT*+Y!l{TpZ1sS*)n3XhR-1_FkTPtd>%k*sO}yR5*8TUoGda zG&#!c_@sw%Lv&tN^TTEaWioJ**T>VZC$NXBjF+u$%nJLsJ`93K9RI_3r`j3pWTsD4 z0l7~7!|?j)F%CEKMR)$FsM6WV60#O;3kmgx15lNIGAu`+W+^*+4@qSw#Qa(A_nBVx zW+I`u%itZa?FW(vGn2KXbG`yoG|ouy>kfL;A(k(A8J9KDpwhgBf)`ZkgvAyjI>iINyO%wvkwYPRG^$~EE0oVAF6f>d=Xrz z5NRw6WW&D6MINi~^EiBTOK;VjxWwT6B@8? z=`tcDxx_o{hlzeY&Y>cP$RNN3AcV@}6Ekh066>h;-iAIKxrt0_m zcAkY_K(q{)9>AddSZo1&goYMT{)Mu71$yA_&@W964vaJ)(4(0-HyjX9103a+yMX~< zC?kpAQjLX@vxA(R;4h%P5Vcj2wCwEu{hGsx%#fSYq8o+awLIeN(u`HRdHC2uELY{j z>r!Xxj-A0qVN&{n9v)yU*D{JF*O#=%b1p&e@)kMY%F`?mS|}1aTpzIG{)?=&Tg)W* zFSKv)U$A()nXJBD$S0jd$xz=`53|uX4HorKZ5D_y0DOgEtXDdpvs$;Kl#Xlz_us7M zYj{-(Gn(9plNu#sFSOlC#L`JdbBUUHF@9qP`OLk3Nag zo&?jEXx<_Wvoih#+l>a0aUIFjwFGQ&p4IwOa;oFN<{a=tZ3jzHhJ=NFYG&9X{t8?a zOu9VyDvn_3(tH#ig74e?@8i-<8fWvlEd2!c%#za1r+CpfD&v=^m-9h6-NB=FuuoQ+ z>`sD#F!{cIg9ojM;+pk^eJ}bxt_+p^1W}#;C!uYN4HH)UIoPOH^DkL#d=Nz}_fc$g z0GZIQjZj010Oi;+VzMjw>wdfU4f%(~M3p1xWozX;SqgFdioIp9xdd)v@|{1;6X9jk z$=DXIE!ma6!{J~rihK2W;j36H=$DE6M-lqv%_-KCMQHN$LHTl*{|%cP-`sR4BdO=q zJs|y+)O}Uocxnpr&~~j>cKw?4f(y&)e77;51<652d8^Db;K6cg4?q{Oes+9pU+Mpc z@)8rRpy{x0PM|EbYyB1IV_5E>p98>)nj>jjJ~JY|FcZSXrsV{=?%lYj^5#h5_w3-& z#4B`N80V0h(*U^DIhpt(T5%!LIx%2Hu7rKjK$!-X;KlBuNq%BOY%UMDBk^zLTfYhi z?$R>dWyde@b}AsjK?Hwg8fK2TAz$a8Y^}TAa-U&R1+HZX*I$w4P(kX9;wq}!0ffea zKpB?DK@1!TY$Gq31XMm?_hXEFK(Lwu?_h^0N3)?(O9lF{53a;*hI6 z3tyTkPKfi00?cd=v(2Y-L&v`!>U?$(-<`J4KSL5iJD!Ebz~b$pZDM2%#J%LUN~fOvJT)3d^`a6pGG5w*cJ5K^<|nfPt_C(>`$qtDTploDJgNvhpZ% zbr>xT>?jmc4_^*bIZ*civ{)NdMU$c5MHO*Pu-SV zN89T7Li8FlD}6gv$n`Im-W+F7&Llb%!RV|1ct?T{`#nsmWcvx8D5GU~Wh zu78r6oQOYdzSMi_DK!_wff@a*5ZB2{%ZGJU>sRoS&x1SjFA zf{@SM7_iIP(#n3Lc)-$D$3HU_4f^w>p)fc6y#swfIVPl97<{z*c2dD=35pCEURD4c zibOFMeOr>BQ5M*S6Qp1Af&sqiltLxLJ#KxLmuM}3?hVjvUU-5n>X;CPKowsp@zD|A zzFth~v+%^n+PFE}RN{v59^z?Hd2`HEiGjgdXhXtYG3^MssGamm2a{F4ZtaLF4(PsX zxbMaDxQCQwR=JbVLY+-OYXdcTqTu&&$*^z8BMyC3UBLwlUK0#Pj$_8qa*z`N0X}du z>7s^p-0hZaeT=@0xX7hZo4y`V6Djm($1{P9Tfi6N?D$2_b3v^4L4F{F;NiqK4NhEP zHk!eSz$6&aJqo{v(Fq~ys5+w8)gFS~V>PRX`kZ!b`ZM0WB7Ti&JaJ!GYr$ud?Nm+U zC+)H_DP;n!X6ro!8I#_6S*fj;)HU9tR|H=~n$mVhi8&|RgA4-|X5|-p`(JzCZ2IJR zR24rzE_NUg?_>g8X6cOc(5oQ3*VAV@@9iQYNC)w2pKEvdCn=rZ62_L1{9AR5^SGQh zYenmTuJ+z(!Wn0VYR<&;L1qU1-yMC4znQE9$U8<-lRY*$5&hJ3+o?90w#2PBsjP<- zy|Q=~s;8{HN4w{LclW4_pj5c5Cvz@rgOs0i0*b&i2T0?u@|AV$hxsNDpuqq}?Ps~H*fpW&e#_GkTtJSbbzhGkZZ2vwZm zm+a{n$Vuf`zuFu`LHShsw`t^89lZl3+hh2At=)||$v{r3@n3ZWyO#|P7f}H;1N=Be zfTcES{PS>pHu<>=F5OCpl5)K7!RN9;b;oL{AJMmqQhl>p8cFra{Xgu}Qm;?WbLaG_ zt+)ESxx@u}PotWkqiJ*yLZZ9>J=36Tyti#8*-E=2( z+-muvu50e7AMF~Yc@++#T*g!5`NO;97Xkj43{^QxCz4}Ky*MwtB_PKu%5Kz1Xy_ZP zf2tvMZe&9!?T%<@8s&%QE7jicr)lr1k@;tL;o(g7Fn-FX2p13A2YQ>9+oJYu@=E2I z^|U+1ty|>#(ioq~EUn1>yOaFR*O8@$h)SuD6enAE~19Ik*kQg=`Z__5La!xwC%vEgt z#Q>)rdfr-T^eZ3UO0FH+XRY|T9)kO#?%Hmiz~9xiL)beJd%B7MvTTggi7(?(C?3<+ z6T#EG-#lbl%@3Fd;tY*vMp3lZ7mcEIzf{MLUyANUZLFO{=kQe~bDBG;j4wcNOi_vF zDG`sUCx{h;+vL!t_FXa{MiwOgNTwLZx|MJZC={n_q8L`iVgQyJhLxm_9$g)en~&>! zM>ZFgO2ey(R{_Ly50Y1%Eiui_D#){K+?A&^l)(y!iGUr0nqHf&P_WXN|)_W~Qok zD}&F0=X|A^FHLzastgsJ)62}_7;EBR z^c|Y&2J%t;#~83J`pwMAZb6<`xVth)w2O8Mulf?m0$0paVcOYvA~IHTSci_YxmCcf zw3iK-IUmo1W(ZHDuo=6tWXPGq{P;L{R!VLdb|!?KS$++Jjad%SM6`A+LN4R~t$3CT z$1O81I$VM2Qy4%0IrrnjP;H>&!)+Wm*vT3y3=?sYZ}IEACit6k3pV{$Qx|9LF!C2& zJuBi)&DT~jI?~vo5Gv=knNeqpQAUAk%#YMQtkVpr&#Q8mFBNzL_G}*$7^~1kNvOQ& z!=bA9?{v^r#-A|Mg1ZEpyky^BdUzo=7_ge}@`C{fFSMG!!yX8R19_2J#ee38)M``> zfp@+Jo0+wZs9k-?)1E*QupCX!#GfwIhg^NAs`erE%Z|5*=m7&FddRb;t6BH)2Teb< z4Y3rbmF&bHfgYhZJN|@M?IE4nm_dU7i&@Ux*dTU?l0%}i%?+vbTRg79zMZJk+01_B zXm)~RF|o~asvtk`YLezz)&)71N(CpU-O8CsrH zPR?*nE;-Q=Ipc?O^2k9FGF*q9m})JbobZU83x{(G$SEI@lQ*1GNDfEGaBG(g=LE

    Qvr#O{k5>Lg;9%Mr1M3AI_zvNZJxQX%g7*qkK08#XuN}-AI z9+pUXzL3tFGzbD!v90*KIBu_12Db^{+kO!AprtotSy zc5Lh4Q!DI#gEeZyKVQ3!{fWTBB*DG4ZZ|&X2z9Nlie_EI7MdHaofAVF`*5zCvnRNh z#TO;ad75*JR^Dp6n~}BM$!$Mx7Uq_ygw)40)(>S4uAI>kEM{%r`^u2_kq?zfgTsk( zQDPDSj^RZ4F)@k2#c-mWotQ*GVmMJAQB0z~Hg-ftp~O-%%&Zsk#Mxvej(K6Y8JLlM;Yv}x zqH`t!Ad`~6LQTNn$<$t6nSTF2?B@*+HiHmGZs`>d>H-c7{8zhr#e++|0*uFO`Exh+ z;t`wY+>O0xM9#SzyM9E@xf^@oh@5jb_JR>P=Wc8`*uz`?+>JeNM9#Szd+vyw0<%a$ zVa05Dw)b#rR}AM&B1fn%JqMf!DMVFD4mff+=kvokW#o)Rh=Jjpa&kr@#4io!z$zL> zh$hh>oed94mhk@u@4O1WNX~>4QpJJQ7yP02wR#*ve| zG;t~YfUwLrf_kMw!6_uWmjlg$^bp-MLr@xG5=JNW224E&%W(WZbaEQFO;JSR!;9UH z3kDr>hWZJIK8CdX7^Z7N{D?~DG&&a-h`ZAIk;=Fi|MezmfO>Sox(;0NmJr3%qK|LZ?-?Fke1^=L0aafNK1nNpe{SY3LTgQUCEiT!&-TfAuB(|S%OhzGBjc~ zKItlbLtMy2R>IT$p|>=0qI8z5{7H(e%*LePCXtr;hE-Hyh|60cKOjF@w~6KgaIQL^ z^vOoLOOeJ?IDU0F{?~ra8(f&j@5sUHNiIZZo<|2s#!-QWA#_J&FbSij`p)fp;0cRr zpX!zc(TT~fbWT;8P-o=*`0MGsNuPrXwJM!{JNRC8?epaQW{n6`#cF@P(#^SgvRm{Q zI1B)RGJRt|F?|=LrVp(S5GbVQahxzrx}V@YcJLLHX{+x%*?GA>brdIYIaeSaM~u}? zcyH$7&h~$s2V6njPH`upeN*78lys|yARy$O+z;Xfx`-Cc1YQ6EJl>;zI|jx=l%_p% zST`E7H|+(Yo6kq@&#a$KF4~7(U*UvR>2-#5x3?9`+VXsc?8N|PklqgzX zC5ar}(yN^_;s!)eN3C-9;%MJ_9?utU*>%y{PSW!tSaYcyXP1c0=0&Dy-^uA>Fp8Ws zbgMqk71C_%6~^$5o3(6)RTVJH(=A)KLPRfx5zey2dllXVCttRjbFjD89{=&@C>;)9 z8G~jZEQJ7K9CFEmUdry@?}T5@Nc>f*P!y$=Vv`0#2fbzqb5<^5YZy->eEU(p4Hvyt zN1a5G$fadOqU1hX^SZGcFAvf@Mc=0PkaN7ktsjlLckeqK&+R%KI|f8+C{Se~2k^tb z`iJ21D%97W#%qvDJzO%hX@dDk{dv~LV+8&@IU#lw5u5)fE$t1D!n0lvcQ?cMeC+$> zDyX>mBbIpB-a`H~q@ro&YP5R%58N3LXQ3#;Edt)R1X+JiT8i(GH`=KQqp=Pm!Z(YQ zLXVipi}zAQa(_^0O&|}y)dYhT)AaC!aLIn(ZuwVholTjDi{@^`MX8|58H6mfpYrh; zX=JrAeI{~mHt~YO&Z`Em_P=UBQ4-uR!9Q zh(En=p>>9;f$h9&Sg-GTu@H9>3(-5z+L`FxsX&OFuJ1y_6?VLp6@1SlQoLZHoAEI{ z!CJmWlLEtsID8YDE^r`j5A@=YrDJG3D$PA;tL?U(vY#Ppz-pT-H=2vs7N9OgxF1~| zfvY@3zde1~srkI#&AG0cN@P~VYhD1o;}F64;3)L<7$fxxCrYyCCbH0X!oj^=S9Ub? zYQq*-9(lHNqB8WF)x3#*#cu!@vuzxZ5JcjXWjY(CNlS&OqNgRkho3ZXQKa$bA^I)AcI} z@xAHpk2z7NcM^%t@mr0>=#t=J+z!3~J%6*C^DlxW4u^-+_(W>ON=m`dF(5$}Pf|j- zrSs1vbS55OQo-J7FBLIxdxjWqeS0(ueVa?R8`)Cwdz8_=1Ap{APhCNaDWoNgl^+*` zx7@*pbn{$ZA((Zr3l0aC<4ivV@CNSUd82z@x1E}D;<)6MtDDi#?gsqBb74J?YG8_0 zl9;Y=Hgm!_3bLum-i&ZL^n%rTluuNB7dqo@36ozmG*McpbNsXDZ!iI~VjiLvxL5DSw)v{vx&Ej-X-nVu z5%g3%C*bCdjn;llfr@ze%yK3U*nZKt*Vv58(i*(yo>@-PHk~S{Hh>w0>8e8?G;{#8 zD~Mr;tix(nI7K9(h#|7w+kMV9I@0m+1iRzi2_@UYzIV~avfPK6Xy-%b!P#q^gL|73 zNp{oMg+C4`d$*bAvxp@<&%~4&InP2V$)wzR7^(H|1QdH#S<4^#v^Lm8!mzAI-snGT zr7u}cE6__39}>-{BFhkHu5T2WcH5yI;-g%T&wNm@;IxP7ndU~vqIsM*3-~d5?*dOx z@0~Sl*=_(7#V>H_NFxo+Ro`nRCk_1d{mhLFCVweb_z3n-Iq=9=(#I#!5Ii>N*)s9G z$yqg%{Z5VF!>h4@!iGL07L@`}emH9ZNEMy?0s$QqEEXN%ta*Vzn1iT@;FmW7$grHH z5H@MDn}_3!d5Q~$mL0669G_6pl?Xpuwv6I5-9xBA0*GSR`DES&MoA))b@86+FJ~kg zz6A5e9{|1r(6_TxdW|Un1xgjlXHxVX6}_3Fz%LsixA7_pUrFKW+IO8!uR+s(1r@HO z!r!XGW$Cu#*EW8R3a2&?w|=(iW|e#obVIv&@q4oAiOTN!w6e2Rb_-=u@6=S~H+~6u z$UjjON_0f8)r(Skk%&_MK~w(S_&vFeU!ZioDgAD`&nh~Rq93d1e6Je?X!oYNG3C>` z(WA0uUfCQ9njon;bUL5XscyV|c7*?~;^&)Qys2InnqD92P_N(oM6V0!$~7wga=@GH zdkRgjH<{9Z*6XP%`bUZ~d4c#n6H~ojMd{Qsp6$kGRQ7(;>`B4YMAMDGG7X;`(QC~J zI=UDCW*X&hH|5`q-&1V5as7x+)3S=H$L%V5mDi1;_&ud`15V?`V@)?GXIiJMKxs8) z&*d;BkADGv;JInYBR&6L9AGt=THpc<64ZG0%Ll)#+zSRUE+F0oBD*Bk%jlY{BL~lz z-xszgeo4#8uF2V6PL7u&fuqV#&h?V>yyQ3172fQcEQuIR6?i#55I$T_f)6~fN+I1>?w<+AE-c9DJ^P@bg^|M|Ne_+1!$sYPtsVv>Ye0o@5dibW* zI`lCVzI)?Mrry@GJ$x%Y(Yqql%}Do7^Y<)OKCvLFk^H5~zEI%JpDu{bvt}J3!T-Dt z^L?kv|C;i4uoH;F(?Qs|C%_d$rQM7FeWRvr>nEmrk}BP0Ds9E&I_%UI83@MnY8~|$ z%=b;bZD$8F3|{M}QukV~ZVJ4v`P800uY%)7^o(=po=H}#B*OG8_fvcJb5(lrGX{8_ z$(&WSWuMprXHUnvRV_n{%9aha0sn?~(Ktrh4q>Q@(;)Fzf6oqa&mZ7NqPKS@aKv%{ zU&Zw)%l{K2-|2s~q}{9Ev<*g+d+~3)I?bvxVCpEMzEsB-p15lQME2;oA^sfVY; z{a4trQ$sxetYLekYcpTO8WOt(2tRJTey8B!uoL*1jS(v0pRAU@BcG_aM=V#f8FueR zy4iv7-Cg{^8GOk;P+fZz?Y>mUYVc<)31>|@exn^P2-r7FSkeGK<(j?7SY{2xvqL+V z%+?+J7;aX$1XHgX$(wU5LWH%x&teae!*IUIa3W_Y%4jx6afvAZyDuqnjtw{K;`n4w%{&UbnE1Fht>3&2ZE_*7y?rTM=-J8u?XbtLEgj-mUpP9vYZbbL%=($sHzcJ0- zni=Y~T4ZNBaxGS2&^5F19xSY6Sml1l2itUtwQkNVEE<5|-HWPZ89$53+gV3ctH!Ta zxfQ_v-oDSK&ONVx<;1}{j;LzMcSwu6 zqZZNv@A&SFIEQdAPt2Sw?)@j6Ty0zQz~C4!)>1kS z4w@rZiPFk(-k1OKV^Yz9BY$L~wdr0gDJPFIWE+_CC$vFSCU?@4zRpDWat-M#vq-Zx zUCTgCDKJCgN|W=&NhaqW&hK>A>j{f2Ytubh6iX*3KDx}L`Ekfin$&6F24fK6wFiNk zFP)k~jV}2-WzBX!dqU8!4<8?e)%7NicuoFBWrnX{hJK8?_nxtDvujX7g6CyG0?P`| z)mwz${bnAFU;*0_ZMGS*M=Ql?Ajeosc_JfY@f|jC(W7qk!c1JQfCpHn`n)sjBFvs_ z6y5CLF@hS|u|q!Rxt^h(Q?a*wK6rbR#=yx3bT2w%6c*&Fmjj{l`8sFC#cCIXO(?k? z4Sz6v@%XKI&df9MTl1ZVl&L5rT=??QID&|=L6Oe%ym(%&b2|*oC%O;QQtOS_4AC{# z0t?O(?#pe9FFJ$r!bQGQdK`3fen@8|8`dXHopmJF1?j?uizDx*yRf-oTf}uECwO-s z>V8jv0qYVW$GS!GRh>-}{FEbc=;rr%%*7(oy5Q*Jr!E}qVk<6Pjz(&ovp!quNZg>q zp=3iF%DdgnFGA1_9@E&Bkss`^`MAi8I(f#&T(0YP%nV@jgvr=ysr$o3U?mD8m$jpD zG4#c$9Ho&_5&j|=#y$8DmP{zd;~qQl7`pNht;i*H0Oi(S1Tvfiz$_YpnM~_q@s@*e z;P5_ShE6vYNE#rsYkzFBATR0T~lGXOO znJ2@{wB2PH8Rus>U3Z>r=2D};J*P`HFYDaR{02|gkF_@L!QdaC{+M8`2Ln&Q-pSbv z>r~vRq1=9>#RC_)ZJ?@l3mimL1rFze*$P22yq+7qoXJA&sPuioZk$$wWUz)Uj3qC! zmg9tpm`)|_1TnX!8>{-#P^W`x)nV4b^pZ(&PC3^Ek9+J|=Vm_w4XaI3f5ME7HNy!K zcm`jNr(p6j6Wvm#D%l+lc7KAG+xxmHt$vPV_%hmdZ}NKI@dg{*iJ^zaD>+uKVWOP^ zzPe@HR|sQ^F_@U`Ofc&msqKQ3BA)tY@zgOLG2zH4cS>Sscq`?xWUjUR5yomp+H_Gb zfypw;AvyKOYW+`g1UmUFe><>jt-HB^;}h2j3R5v#12%2LOfz8CGF0c-xK{;_pyg?` zd?e6S{kquST|r2~JXofrH%lYX^*`zQrzi-?c=HvuJFH}D-4rwt7?I)zDQLx1A6gqU zqYutqBdh?PO2sl`!saS{9=#xB8SphP@dS|4g^iCs#P2-)mTa%%vD_p?l#tX#n4~#3 z@Dkynkl%9KXf1msGs=y>U?Un~or4`_Mp)$J5pGhh|6bRBzxo~n<_)U)w7y@HWv$#v z%m251KZUqXlZR{vgV&PnbY(8phsW`WQG}h+u5!Mgkbj;Brh2-x6u6l|M!fm#I00$M(kZ#ty2cAx{bGZw0Fk*4{$nTf6Mj=zMiFTW!PK1) zu22zxS35e11hWpq-KF$AOyenMBG;7G1qrH$v!A^kr^){&hJk=Dkqf~6H(!B|a>8%` zo4e_2u@DA+P9#Elj!{F}wPWWbx?+Y{le6vq{Rnf={VO>cc6x2+MRR|{t4%ogYNZb? zy|$Vu1bt}RP+5^+l!U*wg9wobJ$9Za6WLKk%nz^=B~i;|#~W5Q#$0XDDSjNjg$D^b zHpR`ml^_~8&VGGtH6BgaIOfDvjEOMbXHSoT#v0bl9Pepn8eyqby#sd=*d-U&IoZ}q znQ@B>nIRsX@%mb9wMxih)T3lqQfTAd29#17z6#E(H29$!7$wJa|EsX(+i!7ezLLp6 zh9bV+i0?()C_`5HUJ%{DXtM^%dwi5e%XH4kIx}Ld(kMOdjZr!}(1KX9zv521-Ba^= zdn{)LMUJIac*cxW`^xduzQWF7ltb%ai~9$43`>Bq+^oLAP8LDWOY5Aw0T<37Fx7>; zT#@V^kTY;y4VMbbHuVk>!>_CH&d_PARjJNE@1f*rbT|HQxA8Tp-IZ^(MGBnfAc6wr z9dC~V#3IQ{#UL;kv8$pm_shvb-Vs6lB9swD5c#{SJShhea>#Hx~p#s1l~DR z4;V5T=~p3T|620zJ+|x(JtqFl_*B0$IzBbq$wWMFt-CtnYq!?jk%=4vwNj+8nM5Uv z`{Gr8cH)3XHE5y-kQd=!h<&;^aK;>219f)rDF0stu21rRXbl<~$M`>hk6Fv^7_w~O zQVx>{3TXGh>}H2O!W1C?OJu0fRw?A&iw6ARr4tv|K#E6al(&zKMC^IHjjqN)qg*soKTQJS^ zv*QhR#X*MoiUQMweFr-}8p9Q}=OcXCG@*u_v+N^%m-EZ2-br_H2CQx2k=}WpTJda&ewydjlOqE-Ew%}0WzmN-S0YQ@sv!{ zJ3eo;z{4;FtL4clT49ulZCFPCK7v3^+xO0bH8=IKQ4(Jg-YDh2>b99B2Z5(ElK-4B zVF$EDiSL8;XZB1(r|vYJu*my$y>Kb-sh?fh-8A7ghUGGiT? z>Zmh5jA`q)4L?zp6)}Na+VD1H*!>@a)wMf}yYuO8!OfMy7wn!RIH-uYMJd^GUvB!o zZ3N$m`mfT_qAdPIvv3@<7IE-eB6=k4-Xu4yA07Ze{iz;ALWzbwQ{9^HqKEa8)$%Q7 zj{{D6PTyc?#DMU%CoxGS8bv#El>9P}UIh1~bgfONl6gESMsqpWy3?B$GQyLaF`E@$ z_Y4nrc~2M~9^}b6ZVV60Pj-IN@{pu+Ob_4oOb@#%=F7oaSH)+ zv2<0;ljNnVqI5a&1G*~8wsL9hswgjq{^_a+>%!Dk5n1n!<|lghXU^wm#%q6<$4||& z>7U_eV#YibDe``by`M??0e%0SuQM~F{K>n_K$-_Gk0SP#RnaJSAcM0AG0N;O65aQt;7F-@wKI{FtgsW#%GdUUCuz0dJ_M=*t!M?f zkN?YZb#vL7cj&&=`U??2sFEQAt)6W^O-an%-Ult^#{VMghsg4M*77-&G31s%Cl(BQ5Lz_mP4d^x-6D;a)WFxKv|eS6s{ z?8c0y@4^H5&=c(`1x|8KILBd~V!#Xy(jFt6;GWpqO_(v5Ksk{+Prk@3 zc;Rw-PebW&<#^6$Chx$9J7Qf+6W6{a5(JLT*2F{}-DXWD#^R0%xPvllO>^;8HL+4R z!V0xBv3_ife9uQ>1OA3L#7l~UbK(zuz`lt;q1^+Q+P4SQ7LhpjIs+Z=Si}s%j<&K( zgrdCoSQ`ht;q*@ko-&jEKS^~?5f2Di6>P7|+RczqGSy)0Wrw`@MC}J=!nE&QC?cM%=^gOwK5$HormBv&3#&Q? z(M&nkGZ5Mvw!+5%GU`c=Bv>og3Ppm4haR<_|uY)@k6=sDurHu)`p&s^c#SnH00Ec7$jeB+txU}w zV_@%{@~43r#o?q(co$!9_wGu5lVV;l$M<>aKfoXeH}nqA-cr~-XGW|>vJb8Z5g&WE zB|k@z#bbKAldegkQZo-wlzjUsp3?M2%XaCF>;Z>)_~vHLb%JDj{3IkX{;4Sy-ln&V zoj3YCU*HZX?Q@!9L2CUgDXt02c6ekMp&d<0l{NX&<81tbiUV-`gO>8&!k?V!Dhkzs zo_9Mn-bu+-P5CeVpUQ)TqNd85n7YAV$I7RFfBJS*2O=1BjsChW!!N13EukHS}D5G2)g|*M2HHYvC z8^IOhlmy?;stY@E;>h(j(eRWQjQt0uxH;3I3mX@^_~AlM$~_`5h?5m27_=Yk6eAr3 zA-<~{{=p!UyXxT1s#ssr>leSQ`Mjvr~p$wZ-w@2x&EIYCW!UsW_gHv$M_#%!JMTtV< zV70E!fR`;lkV`3JXsYHwGmo&;jY~)#p)SCmH*#`t@D#wZeAmboxkP;>qpv8n?sZ+w z{$qYIsJp`9a%w;kHT&mM379dncBuYFYh7MeUCW-PJ^e4G%Y(t4ysW+*((&HS$GWsz zpy*J|RIf)2j-6Y;hQ|LkM_neJiK;VbOdw95EEHz@UgVB*ToIaz76(YTd}pkdW&Gsi2U0zM-#aiMsV)gg`P2 zfIu?~OwKf;c=*3*dl&d9uJi6+D=i=#*&|%pAqfd`y0zJuCXz!ERFgylv#_#PfMaZv z8mA=URZ&Ay;z%)WFp|8IVX_P;F{yc5H+5UTssD*v{5I5Fd_fWy32cLeFvi9gfidhN z?j}gcSo(i|XLf~f(>DMA=TkmtXXebAbA8Tpp7UID9(<>Fo>QvoRKYyGSd>0wjKr7?v;Hx$tgz2YQjb8`p%Ot-j^=%EK4=F&2Nbb~4B)J`6F*K((fb1pX8Hal7 zdscWmYza*HqHFQg*q}uStQ@uj=NSRRHwZw0oCe?#66^8xX4^kBAV8*+DqPlFF~i%%v?NF&?>I01mj zh4loqja&MM5@MA8d!S`7yC>V-?nMHy`PM;b0U3dQdGWSiEFRhpWE-LCN@SQ#{U=5&nQD`-I zlmozqh;e9iULBV${8;iLEH&Kab&5ASf%iqIwfJw|;Z4sbg8);{sS(o8-gtxXp>ev7 z6~JA%SLej01UVhaC$>Fhb_lM;3J1+FgcwpT;IJ>h zlX0qc3Yp6@fq|}pN_P@G3vDs&HAi8qilwGl)n;I~)l_kMuvSUW5W@hrWH4HjhsJ5e z-o%_Wh3F^#9KZ}%&*JZP^nSZ!TkT;MqZ2rWSahH8tD+ORFp$Bm>h&<(x(V?O4$J~O z;aE-tkU1mbWhVL1DmWY4*&IqWFl6D@;Z~c2+sZ?f2W=0)T)5TtW(-0C1IgC9^$q&O z3`_uLR=vp}v^rPx=#m#d;g6C5XJXL0y+A5MfYmO%|0%PR2gpG086UwizIum%SzcD* z@o6~=^QzzX}{KFiam?Po{!1eAGWv}m+^OmB>75~~0cIKMmR@WXC;(s_YlWR2(z z%*aeHlbc9a567y9+f$0&a+w~{0zvoH#8xwUuetI=FD)&3YK5n>B?xZTo$DG*wqNHr{G{Bn86Sscte_*hj;N!F-aIUMr()|M&1x8Cgs5uVRo$G^bhTb%g>x2&hy2p}#Mn#P$Yai`- zZHsnx$o`(5kLYjMFj)G;@-y@t`a&ZihVZ>0)qy0S5(^)4IKZ*Dz_T zJxNa)gM(>)#FpUQnQ_=kz`q}&4P(1+ zg3)<6qlcDDFv&keIMNJMpFoFo12pTp?qnA)H5}`&x=w#= zwy!w>b*tU*_rRmpmIL&I4GT9ilT9a1s1xrbZ~h&fc*ojs(sbgQOeeN~q!WWcOr{g7 zZ>5zWnr-SxRYw$_-M#m53TFmejuWEb_&ad)xIFVP**3Byx z2r;RIKC6UigCtBVcrO=|~6-#2o z14QX~-j}c%SeOSxt<`*x&3Sq+uPRZ*Q2{w{AO_8ItF;0DI=to3e!McAv^IprBvHIu zQ2Bf174!90QlDdGz}Dgr9i~a+*Ip^jOHt_w=MiKr09Vx*(L~E4@haN7fH9 zhR%FFj-+8_kIfXO&msBwM+UIuf)I{j=1=AU^`3!r6Y%z73OdhV6!EH8ulTZ(=O~5~ z`qWRFw2a}IkEyL+fN>MjX1ni*mEhdG6z}g=^ut)iqR^ZAhB(?+aXl81@a%v}pjpSA zz!_Di_9OWsdP1y%u9465S0QfPkFn2e#FDpu*mli&%se4BLYgtePHqB!clIH=6NW+k*+{o> zq4R1a{1$>bA{U1~2N$H}Bm)xrG)(1jpY!9GgGO$ERm*6L}j756ia`z_;32kD5v z9%NNF;-4QKK@7L6ySdsZQ<%dYT4RB=PNp5K+)-__?Ko+`WEq%f1 z+IM&o?%%^5XLtd&q!HORidg}Q9rsEuZ!-K0V0YX|Jj-QwUi7sEUMj0NAU+(Ytx>#; zjYJaf`@%p1Jqq7Kc@S1n_YL078ySS1x>tNcZ_bzigF^)zK02=`59WnmUTl<{lf*`j z9A4l^FYj6>+*0Nq0DfBK&Is1Bd=OC-5!72CAF-kbcJ#|Kd81ZU>o zD}GFx(cr#st$TxEZ2TF61q9G+g%x$j3tXt4R_Sw!)<$Zc_0-ld9UW>#)HdljQ3zpM-Z7$WvB5f z=ie-S0Xt!ozLI(0@ysegY%?PJXRvE4jyDoktNN+FWt(XTE|Q=Tq5;|?0dTrKUz(A~ z`z0Q}ICH`YLX0uX!=cL%KWoG2Xdp$v-<8>y8+f4R7)(W}!6T(RT)R2-O-A3x_jjX^ z$$1hBUx^ywIzfQEdZ&|^xQQ{Jo|sf0DItQ#89X3h2$L4LztFr1c4HRgRJcW;DXT|L zvIr!YOUdp}LiutyV0+RzaKKwSDv;cp$2qz2$g-K72-l87tN@rC?;`FzPM0Wa(`UfpSXCK zRn&-zBH{pGZGxg|-=r6lt%koN`>ppBz)me>SHs_{1UV8Uh=f~cHahW6+=5W@SH}hh z4MT%+COV0Nkkv4XGYUDY!D<9pD75Q$WEBbn4O~M!s+(YL&7_3*^Tw|#C#+mf;VQUc z9XDDFvg)UBxb_7hP+YR@)Bu!qK`8YtzRT>(97LtEGr<&zPmsxIqCTOvZVArz^4hJ& zZ*w9tN+@poG;itG2Rr*fR8Arr>k)XOX@Lx4?eH$|wnGHjMzvvPYrOC4>NKkx0pQ0N z@OWR&&?v0xXLG<0aas>dm#MoV@x!BZ=X@%r%k;r-=n{SSPj$KNH{VgrVeVr8_+4FQ z&aW|^DM9yhN-?b}zR=ZA7vqPCWwDo8;28c7R6-|xeoF*`Vv5V|c@cRcKDx}1|MPjB zGzvnT{!>3Bx6a-28@}pU9*iL=UlnpLpiGXzcuMr3ZXzW|r+ITKbEbLKmE`?KP{Wg% z#eK*9A+}qNUIRZ0$Ei%58CtOz8lKblnxcQ>hIP}hkFO<{8(dc6uRDM`!q^u~tGe*; zpJruM?bR=0(C|4Jb7JSB84(e-@Og*Q(J{3r|AH7(MzQB+;3pg)=yFymgWqrqHQ*=1 zIOKpv-pygw`)L;P=9c4E6K}mT{F+nMvI;`au5Z>CAY3Y`Z@#OL1uIn2GVF!zHGTT9 zxFk@kooNcT-wN~-h3&b1O}PGE*Y2m&eVnaGo5X6^Pq);JEjw+)dqcjBV}4W)tQYoJFYI?8 z3d(=Px$$mIt{rZVr^aBz+;z;m?KA{m*U<>BXkqGjcQFkS{MlCRIQUx~Y7Twu%FbT; zj9<&T{X?B~0=ueuO>R^l;Rr$@jiP^pEKWubCY`s+{|W_+i{5IJc+rBhMWA}zAlmh9 ze%}Wz$9*U-HK3)IhPy^NtrqD!HZj?4@9cB?!+TIRyclTp>~8O`toZSK9Dl}IQ@TipG2 z_yVwOtuA7LPxB^y*}xI1pkGFp?n1Jk;;w*V0N97Ltak-zC^{NQlUUGd^Z+2SN1yfM zkeEYzTO=rosVyQxL|Cuua1`Y73=ar}Zy3`S$;)bnI*JrH?tQER$F0G*d)wR$>K?A| z;v>9o49sYP^MWVDoYXB6&Wn*_#4LMA=gN2 z(Eloz(N8`BtBOKWHydKZ?=LJ|f4kxsm|P8j2`4|qh@|&>1K7L4@C1(XrUsxPJNv>r zXtuPzSwCiQSO?I0S_>~QKzx#`l|YQi&i;~)rHh!{LgE?bg~Dy#ln$fGBY_9YUSM>o;aP3Y*qJI#kFat+^!kiLb{Jw--wC z7)wkW+ot9L12Y-R+t76+2FSy8q;NXmC=ratavolx3~?fhHtYsN5XK214~8Hdt1-cP zwg79aJO{PcmAMopJ#cdDwH1{Fp4(KI%ox+eD$XjhS5X8<*0VZs7lt#|o8v=t~T4_{Ls*vJ^uPfqxvT|%s>S$nltp3#a+zv=DFxqX6r`vge!FUvbT{&OM? zd#gW(dvHLKx(bjt#>NE5Qhks_lVbPobpoBx1-DPA-K7$LL5cDHQOmBkUF2N^aqAu> zD-q5h&@o+y6;;n4GppfURSwLcMTF4@+^=uEtMw>3A053CRRQ<$0Z4+=%p$s|s0_s_ z-i9$UyF73ZBdGw;Ip;Rd`7{Nhx@0x1W>{Gob0XeD0imbaQLiD?O|dZDnKzHfZ78&2 z{t73QnKZt{<|=afWED^d88nv6?6`}-TJDrk^2?wch0q~~)hJq?Zq$)Om9rd{Qpf^p zLo8G+E#rl{TcW$aSXR`F@x$QP@q2$G9)uSNsamU6(7a9T=(r|v!e_hs;GqoR2U@$x zN!&TXZNUVPELk=T;FeS4?Z9rS;g;;+9Ck(uBSaH(ZeA18DwkYMfJj&onm_+`FNopz z!ScoC32ZR%eT47XIWH@Xiq7VKS-09sz`Xhlk-DD#Nl{#HA-?wQ5yWnK*UL* zbQu@SEq7lxwPWz^3>JMd!wSkH&G&>aJ0PvqLCdlJv@yI7#=)`p-}uCzA-Z6 z2p@5x46yg3rPpQW_hP)f}x*Cs=@1i5GNEP&}JIlksjaF-R3px z8)&r}wlK0V0KT5Moft4a9agpT>dH@K)wlfF``@49?y5hWRVNH1MXkeq@z!9aom1c- zFpgwqWRH70b~`?jaa=So<^avN`g+gti+b1IbH17AhKB< zsUOlZvt&zIgPt=IyXMH5)Hc9cpvlNCnC?{<;}HpkqO)>%Ge7ldCY0v?v6_!|JT2v% zF}(eIS_TWy%)X1pwgyV}*B&;F^%pOeJ+nY8z~|0opQ^m|Yh~`)hw^&Hz{1VO+`6Pz zO7O5SPQ(0q=#ywhK^dc4fD(PdZGm$ouc3$6EPan<vt$og zzjN=Xil3WXv!Vn;OG!})5+CGk9T=hqQ8XOhcMa;J9KhNej_~)Pxe4*d&O$kY3ysNwG zFe5rP(9%dG%$?}zc%VrC!=0cp^efcPX^EHziM7i?-;gZ~Ecm)q!_h#jJ!1DB#FU(f zes7?EV695gm?(1)v0gZ6xmx5L{K%6fXrzPX%Nvck^n@3@L8elzGAJz zzlc0t!N__f>cWGV{sBa+e8d-oz%tDNj5lBpIVB51kHv7F>eW&*x% z^?iT{Cp_OX+S=m1gavdkW2V^i(Td&CoV*ZjRacjL!C6viDrHmY>|((UA{>B{mIfB? z_J}IBC3c^&556Fkz#Kd&X)z z*2pCpb!vup+(l5*Iid4@d>(Au@B)ZpS~))dNbXZzNg)k*aELE-wk8_k-euzzXuUM6 zEx6H4M;tM4Nq_Ab+xsglYL;#c>g4Zz0l33BKpM$Otn=UbUn7XLHR*0@5J3{yJJSn| zi3PC0L-o6PI>`Cc*_+^)WJ&x~Jp!I%7boM9l{0cCjZ?j_c`9+Szc$2t&L6 z=pf`1*@AY}jyG>I^1Bi5mXHKQh{ZCZ;F}V|`S*ighhOR*yaei6*9%L*Fe`_{9t;UT6jn7Jb$qYOD zm$hLeFkZZ~XSBa>@x1nOK|4?j87k<=u!3qf2#AxKa3C}|hO-gcHs_b!M8bIpZ!Bs& z=ds{r`ogy#P@AG9Z8c|y0fJvI-NEE(WY5Ft{fB;~CeTPB?ml`9I!4(O#M+#?7GTQw zw?aDPzJz9=jwaAW&0KD6@GU%9m~*v6fuj9doAO+6hWDr%1r4&KS;KtvI4?yGAYTSx=FB*9vCxkpVnRp=g z@_e}G)Vc#?h(UF9a|Lepvwg(iZ8*MHjSYFTF>aW0ht=>Xd}G@w8u z1$V&7Dmz!aw|+p!h1yT_zP(u@eYdx=WspwoF`cUAd&)(luim7C)~ZKn zp!m5U<>H;aZxiDe#+TN=W($uP92ll?CPYo@pZf2QB4#k&RF{1X?Mt8TL9gehup>-O zI7vP11o|&*tD~MWFLqa!`$i4XCC{N>Q|XSukz-AV`Ci6`&aG%7)~szLY$BD{+(>kL zq|p$vG1MH39Cky;N9v}>%th)!;FvKLbo0p~BTa-8?Q%N!+FQH|hI%%`N3H+UP4%#R zvFgBf-e>=|9KR-|Q1kdQ#3ea`lnuefxP@tfm}<|QkeIniiz_*1#|Bb1c?pDm@vOD- zN8BR9bzf zUari77)4rJ8SX%pq@|nYbyT&c@nt0lb1kf%47!wtglX6=lR~@pu3c8aj)&E#QBuzs zE+c?I!r0Pnr6sz!*4ay=TcxsDnDW$wmTdee2!zcyT;Wg9tLZd{v%T=kFr1~_-93MU z>crQ@KPgPzMiJ7`89EQ!bMWB2_pUpaEkSG;t2kVIvOI7Eb4ygY4Zeonz7s#M$c6gA zY{WYzjy8Xvkmxy5)hs4|r0Sq9=x&eAD&;YJV2Bre5j$753^cjcHc~o^Sa359hdQ;e}*N_UP>nAwn8X z^3-^6M?*--SzLe0CBRkkWL+OkU!|~~&GXN>=5YP%^i?uaJ+Do_|KI87ze!*JHhq;v zv%dek^z$#$*T2`*YLND$Fiq6&(@=*N0MF`BN-{W&1WUQ$Gi-1;+DB!dzwT`acO=^bHOG(FEqLMV9%5^9@czZ=kCG*4AWtz;#Vv&wcJg@ zrG*XF)g9P5dOLoz1IY)&s;1@->BGdv=IX8K?|RL5_ou(>d0P7b)l5=rCzrDnI6tB? zyX+SKJFD>ZX2192P( zzxVO!< zk4B$`li4maVJ$FbN_sTaHJy%`B{AsO<6+dkLsvMMi*GSeuH#ia0u5@It7BP_(Nr_% ziNq)thgpQ~8{BCbYFTL+=DDZ1(?YbkY9SVN9p+9;@rzuw6sL3zaHqxib*@^B%`}%= zt;elgwH{yQs`a>stJdQgu3C@pbJcph#8vANa>BY(8S971l-Vx+5D zHxtd=+h~*`$QRbls-8wi=e8WXKDhxqDVeCwm9fqrYk@{_tz%I07DADlegkzhyQ&g}Z`o%nh#oeUU*i8Z(o;HVJ8y*ud8P@s*aBpD6 zoY4H5+y)dDenlq8x=H93x5J$>%ibV>%<4`(&f@#%Vmd8klvzv-Z^BVrK`ubpTJ=+~ zQ^cDKn|!~>@c^#xP6N%HUNFXJcF$hkU&U|A!1A&J^m%_L{Kf*W3555iCR6YZP+K51 zo`wSN$zT7U^Z!wvViaoG8QDCr+{Xu-FE!CF*+E~CC#?xR$xVzHxEi@npcu5$q|l$) zEJ>`~iOVsz5#M|bX3w+P(D>+iGPAwrlErceO!91V42jG_En+er;O%W5VaZm8j&Lhk zTa;Jg=C<=}n|V{lu{2DCg1fcr-A1$tTCB)RZfjZnj*WlFi*;QT@B|-dVoiH}=4G_v zj$9?F8jgQ=43JY+p%v-Zw9nt>cSUdZZ;2yyx3+Y%+tcno>UEzt$0Y!+&@_8ZXfdfG z8cKQQ?Hu#?e8@yC;N$t}*J_Chi}IZKIN#?h|C-Pep80I9lAjOF_X}C-KWUIlp7%#% zReQc)k7x)P?_ku##0Wy873(+1zReW?RSS%@^dQZ7f;Mn@T$ddp!pG7Mu!i;XX4R}2v>Mvk?i$!jZVs9m zXrcg#8EUTQT!+rdx~;IzZf-EJQHHZE7NQ;RAFLi#Ml4Ye1#F6~;~R~#fn?8z5bXhr zLC{!g(-4zkz3H=Ilkt&YTQnpF-fK(~`B-4^Y^{!5xNcS%04yYd!(*4juAEGDSQ9c;!9?vwIPS6Fv=}S>9(msF5pDaxb zC8!e07k1F`cZm&mRlsF%3?#-vHBfLQjl5ytwIX*$bUeb@9%Y_i_Rap~)13rIK7|GVPDIq(KxGavDex zbW-|L6hoHpWjpSZq1m*&)LPTV2^%$0ma(Qltu0lX;GQ&> zy{I4Bp_kUoGdDkPO5F&kXWfkRL`|`VEtVd(_+XATt1sP-wCPC1a6rGhP?8-L8UTn~(aRl`a23PNOi#?N-O!_j92_ace%G;Vrf@B!a< za4*8qG%Cr1b8BTDu8=m;-FcL4t=z$8H8h4Xu#(D(f|lyI>R-7P8Av@tu7>97KNlFP zeQc%Gv;2mw+j_Gv5yY-|3Zv4^Ycm8CFULV@f8KO{3Q94+kK*YIg04Ub686YyqzhA^ zU9|_OQz%6L%CV|%h#`AY=L`hVsN zVjZHSdUuQ|RieO&hGtNPM~EUlG82MFjYZ63`z1|ocnB!3*9M6IkT3IE06CvDpf6v` zjU)z9A4I+Np*pTqueGRuQ9hbrUisB(;TG~`F6%hvUIZXD;aSN;uWBi$5zxdDG-!>f z3_oo;AvchTYMXRf8Ct^y!WH*=E4X9D?1+DuO-1=U(Uc-C9N`;6U)BxXp2U^%)I_TR z#|-prujJ(`NziyN)YaW@BQKH7dS~-OUAmOPx zJA~$_Nb`^$UorSJ>KRO@{!aj;G^hs63FbBE!_i%?dtAdLY*fc9gYux-Gsv7l8^YgX zlMkHsNA5EIK1s78NVwQG)iWSs?6NkeZ)-_LPsszf7~W zX>0oExmq&XA6s)ukyGkMEQhwNG4pDz`ZzUc)HQn8XkCCU$&#C)#aHStvt6>!+7sAc zvc2|*3umrPPB`Fi@wXRJ-V4rlTjBBcz7YVJ(%^!Pj?C9u1MPuxfgSbzp_*)zYe%y( zB|v%r;L#TC*D31(Ep2niqmt7i3bX)36g18wug?dekpdAQ@(Ep9QulFG0Z&9Le59ro zb%0(NxE=B7-ONg57BJXZ>X;>FB zRHb?*oIn@APkys~;*vP>tbVnYFQ1^+gt(osJ)uZ_+@EQ`1|v7Q#c*wW+jzdXa)C?% zN-CRt$G7Z@RM^1mAgPoxHY`eptkg!1PTS?>;}}DS)JgtDfF4GXfhZ6XO&s8 zJ>^#UYmLo1F9-=%|B#9`)nfjfB0)XU3vkF)>gfdTtu52DEzu(Fq)tT$l|jQ|l=D6- z+ya}FQ!FG^@-}$-^n1RhgC=Ega_{S2o+?#S{=>lfea{SR21xKjZ-7S2P@rYBVE@Aq zuQZ*!Vw8s(I0P^Lc+W}+XiS@|#$DoA`a_fHbMFC+_0~A79>!HhHYJ|YorJi!QhROnWnX6Mm7=;m?>b+kBgyVN0L^_?7gGz{mf{RV0^>Pb%%+aT#3v zK5f1drjiKO{dIx7a{~jAnPFpaJTz=`lh+{z>OEj+5i?w#lNA7WYeZ6CgF9P4U^azS zJ;LHIwA#L>=+}@Sq8V>ck{xcgUf97JnUBF8=`%1PI%lH-59H6qwAMr>#D5R6n%)Cl zI9TX9ENzvU{mD%Sd~Vci2(tNWsa5M2J>}8o++LiEcBZo*h5VU0kW84|lqm+*Y^1$L zd}+>dcD#?!tTUU50ikQVMoYeap23SJf>Q84s<1FS+*bT`qt*j?qm|HgSQN3=fCLO$ zP||W$BT#gP)D|el+^5aT;Dm{M!99;rxIeD=#GNJ)*$m1BbozZQ{Fc*}i(j^LNViDb z?*!iHq9{CE77!!sD}L%eCvY5V?qPfBZ*Y0x6HZU$sd`NnPJjk1go-o`>amIEo`yx)L&Au6{z*$j6EB1HIGSI|z z5q`WhLOwJzUY&h`R=Z?p?W->OT|?9b|Q3*T~?G`~`pFL&hWGC3=&hC?{*h?Xo3HCYYwg91dFf-mnV z5#OWnZL=?LbE%%D^P;25D$vvElVG@s(C|NsdQ)nNwigYcqqAtr1Z*p(e2!DZqDkB? zoidTz>PbpiI%y)xKOqFOr|{QWzdfrIY`?CzeyeU;PFgKJaC=c+sibRtj`s^C+e$RX z2>63V*R0YZj16iI2WNT(f5&)0s(m+5=G{9uEiq-Sa7rP;SO)CGq^IOr5UB@&p5}$R z^=51&5nMYxF$dMFhWnXBmhh9%jjMjl{GyO1MSwObrtx>7_YJy&qyu-jVluL^G;x2n zEc}x6aNB2iPycaN9lP?P(DRUJJg@(%eXqR>WKDbG76 z#RtvKW-3k7VIf==Xc}Bjw)EeId!Nf(>HlM^n%+YfSDd59M;1q5U z$577^>N&ytW3*$sxAdVb>_YuHxa?p}@JTGN`q+xS1OqF%?H^r(?E%n3b7Twe)I9hMiefxTHZ z2#GJRl0Ol;u2>p+61doRGuh3OiMAXw?5)5+G)H+^KB?!S7%#7XLTNWX0vg2~jMXSR z5SHMRz%Yokhajm8C=1?2&weKQhsP~1#>4MV}7i<(#k6soc@KE5K1titiOv5n#%dBbbin->9@ zkwol~T%v|DNw~at1?s^oxDB)Dk#^3UMx9UIwKiY}_7ZbR>bC>Cu&W*u3GC8z=yUij z4EamGVNl*}fn97f%XLCTyJ}zUPp-r%TOkhCGS-576!Xx8a=dwW;+}CGN1lVRoWB?H zgYjd>(4IkaO8L-!3Fe^Anl}{}$hcIFHqhFX^XF%1Ul}m#s=qq%{??{=|5ep% z8@BrQ^o3QcZ3hFE|ctSUFw3j39WY zg~&uesPH+_0abh7gfl7M5nYF5l4ABc{x`QA9%1|~&LkZ8W%s4V-{&vM zEhnr0y$4fFiliYZuM>6v=LCoIQNFL15oej__0dFYbpwTgQL0}YBsD|-cMhO^-LK@t za{?7%n7;#Pkb2IAg7d1V!NT0mva(%s!57mGMe} z1Pb9rqb8u|k22-^<$#leA1UTO;!Z7z`u0LZS zW0I!ANSMQvx&Dn(@-r#sMk(l7`gzQaQVKIE=0+(KGAZUpDMgtSbEA~WnUu-EOG9WC z?ZuJ4-*9f$haUD*o(?tmH&2G7N60JxSi#Mj5TvqFRvJ?sb*zxW))@NIlnSZNKFapdf?BLGiUuaD^b5@KSh>)AL6y;D5Rqy!NVh=mqIx&myc6m*@1$3t zcgV?*XQOZBw)fmw+0=3`6Pk9fM)ti<(&Y z75rM|XDi+6>%{6uDHYi@ikV}rhUI3HUc#{<+L!o^CLIVtlkyA~%(?m$|3|((aI;$x zJ&$7u(q9=$P_CDUo=))e($G_qr(Hu&M|j#f^wiDDMJHnD`AzdYVd(jQc`h=~7vlps zCLRTnj8-h^h*m7#$IGP}$92^Vsc9d9K)^wZUp8q`6Zu2W?dEy*(DOF)Ja_21**woT z&jW$8secqTV<7({FrS?J+V27BnA8D+00iEI1mvy_gaF#E4O9crt_>^$#;y$n1H7&c z+yb($J=yTfh|N^(!!K~P5b5Q^(FCQ8i4q7e>PoObo5wpSbT)Ld6m$upkY;Xb2NkQo2J;!WBmO=ftw<03b3!QTNcMyE=h0_PeUa&3`mwHdeU~by04xfc zQw}#>yE&b>-{*br>+V3;j#P!VQ-in+7Eb+~OqYpE_H*`U_+F0pSGo4xhR7Zadcjv{ zZI*o(HrsQeYwwD=uNVv4_z4CUwjjP(zC2?@Ry4ppw&tjpjLBM7i;5+BhfPxxbN*fa zW4_~dZiFGv7>th}8c)E8XgVNRuI!7R4Q8Wom*4ZTrZVGpUBQAMxkOM0Eu(altbiYc~ucnXmt4T-G4s%Y0jFOgTQcB-v+~3L@D`(cF zScKrI#YwD_=kGFie`0wzH+IQytp-6VR#P=!ta>%cmK*h+n|~datsp&=C6Yh;Ut&Ji zd@T{z2X6cbztH`kPt*O@mfx0pzwG`*fVf~)7xX<5)e_J3kxNcJ=a{c0AD+hsz`3tT zT5uQ(ERu<7HQ~oN49%uDb78|cBKlOm)wl=%?fKbdkeuO7*;3{`Qb(g?faN{uZ%EI=r>b45Bo1xY(NWC*B$_LT=Ji*4D-EF4sJM)#=L)0M-#tM$NavV zPOIIIFYvQES}1(GsjK`u`KDAI(DKRBYuuy~bE%J*pXXXGjtq-&wkJ8&ucYB+@MLO) zYEr*6KL<2F-Rb#3HL{vH@h1p3NGB#FrcX@VofjdLE;SUn%bTvJZPU4#5BZmvp6foA zq@9Vo^IbD_?qes+V}bkF8FMqiee7|4a=rUlOx?OW=&tV2o7HnEz;Tz)A=Q0sHouKK zt7j%2TR?K--Wumtf6N;;2FbiZ@PUkf)vtJ>W6=Z=f0(UY%^M@INM-|)Ah57fI)SF~ zk})q%{(PYUCA`z~X~c@WXDnWiChsF7dY(I~Zz81ce^DYp&;Z!cj`Fd$CdSgh>IdT& z3#v!QFJ5Ie-b9mhv-RPV*=mBMDI1U*K$~uZqmZ%%={v=~#Dr}1vP_6#q?K015{EqlLrchkyTa8hyOq^T) zNkv%=mAqrQl#b)l7BAwWf80(^-)^2qONl6g&Tl_x&kvGvz`vugXSs7bO^}oetsjk% za-sE#5GjZK5GhpGL>-&Q(Ez{TZw?jwm7#*K`~O}rz0IZNPgAb`al8KV?emv!w+-D+ zgHGpY7cXT3{JZGTU1kj1;`_+Iz~r05xC*JX#n%@4X*=Rm7^th-;%kO7J!y&$WbKIe zFeQL(dZ_;i%n~D&y^0%o#qPN!d9!{7Uo2Ku^J|r*%@)@xf`i+5|yjH z%=JQU{TZF+O?eWV9QU~_l1#V>g@fDYc)_1JULMDnZrpkAWZoS&9wZAdu5}XvD#uN{ zX)f_xecEt>x-cHWPl*p-v>@MVc$QS$FQAuY@alDozBYoUMD>Mf%A*J9W6u|~--`4jG56el3{lK4JN3Dd-cshdM2MtY4urA!uTqfrEpgyMZyS=Te@3@Ph7&xXUwX6S$)k(k7;J!<=zh zZ#?N=TYNTmx!gsncD_dGZX%BaDVrzeag%sXWA5eM;l@KsPvrAU7!uo>*@s6!LzO=_ zg*0pR-FzMIpKYx!=cfMR8OpR)+uSE2g>CUCz-s!}78fE@v)%YO?u?>O`kar*;2)vE zhW7XP#VJ-p2PyH36NCWjW%b=G0hl*p@T(&@+C%%9RiDOR-iQY`W#B|(l7^F17Zbt! z;9gJxpW6%~V31A3XHY-hF~TS%Y}w{MDm>&B)Df`?b{+1vhwzQy#f|$|M|vwX!J`T3 z`csXxswwg4M<+%D>rc$;R^4f0{K?Y9XcYX3;YKk$J~}UIV_RJFpnvY8W@&NVXc z24%|{4v2cT4OQs(_Z6gBet-Qj_+9-i^ZV-$gW%AI)J%T?RKLrqtIQ6pF~3NEGGji* zkk^ixi!;O0<%8Vcuf6Nm|4F9*SJS{KePywxYE36p-p*m)J;WTE?_LB5>Qf)57$2_U zeWR?^H_^=BvGn|9rlt1{ICXxHwO6&p)nlNayZ>tG37!4!rI)HRt)zc1enRb8E@_%+ zUpj8pacD~7R=qydP7~)UejF)HTXt%r8HGBE2Mssr!mjgEF8}ta)X&VjtSie=G(^Ar zE6UL@q}S(;xHd_ZV{`qtdsAm=QoJwQYFNk3i(}QwLl_!fF-)3Md!xGP1I8DBlNlyI zO~d5F`F}M`g?#^?4AVE6Hox8V1BxlOSw9C?Z@UCCS-AQ;HmiNcS|9&G{bZ6wxy}b2K z`2X7}zPaSw^h91AuA_+Ww=`R??UFNubd_n(b~yF19db#KD5xu|fW8kd$F=72OGbc+ z!?%cwe0&Eoknt$uMT*-a;r5;}2Hv2^2#gX$4U9N07^0)(#2Byx@Cm*%X+k^VkPp?t zsX3EY+lgD<4_ZDLZxfTb_@W(tJrZbd9DHz-?Jd!F#A~k2hW(1u%@TBQ`HqIQQwN`` z8WllRwLic2zNot=)r(8h^my8LYXleo`z{RHKfnG)G5zM0sc*Ks&pme+jym@#Mq9<+ zJKgsalbY}qf=~03H{Di71K$KCZ&0GiZ^f_{*qbw{DLD#h0~<;F15|(y`940Q74OHq z@}SKpEk_9{mhm4FK~A%hvkC&wj>q!<6@jF4!yDm_TZ3P* z;z!AdrzQ3sDTP(+Doey($x7rEm$cu1DiU~;_}au}4eyH-ziH%c?zb-?DLE1e9HuWe z{7?C{h{jI^(Im*OX^8jaM7>3S7o6cO2;u77De1NzZ6&Dj4f~vMH(o{E-pwdAg(p@pWDhR_LU_F zlAOr91r@6hjo#}&7u-_P@xwc4csXo?Hv5u*ozY6&<>Td;H_5Qd6M3s0_b_Bld>k)s z^Ok<)l8=YurxhU$`36OtOAWHCnDpYol8#dA(YD@qZs=!CxQEm8{2#~54qVENmtA}* z^^z$;@gu-PABm@vq;0Y@c#5lhm#z=hap$1Q@eEhl=Pnk*UB2n9XP56_TZ~#SKGw#y z+mDOemq#aZ3~5FRku-u*!aVXc<_bHd8_vwy|`Rp?Yfxv>!6NE ziMTFO9C?CbbO2lo?^<1zK8MoE5)n>^bhOOX%}}B_Eh>?lp+ruPeok(N5(_hl+zcg7 z$Ru(zlvtEWBvP`)Dx$9Sw%iU-0ws`F7s+M>e( zsz_dRFpS3o0w|-S<2G;PtMQ2UC8(&_iT_{r0a)ThllNK5UV-7)MJw6~=+^rNE0Q-x z=OxggKyaE?g0~eP!Qso`codDg6FHkjS=z)bZg`72ZR*)Lg&Wg2p?AmKRov=?cU50) zy|5SWp~xQ{Z|XQjPHwzla#fGEUf38PI@tScED1_r>U0l9-a6ZrX(IUGCp8SKm(3gH3!tyje$zZj zQUH`rFvTBGk|a5Aq`xaQ-@TpwZmxv>i;eWAog{7=Lc7en7%~=#f}~GYyi;sLnB}f>FP zxbgnuc^-`ycK=aw7X$A8qXaJiS|)Q6z#?WBw*2kgwZJhil5+1U}j%V@I^32WiUqO;soS; zRMGzo-ZAJ;o2!Q!29l357sC`pA6$*-gR2pJa5bV2u7whPa5bV2u154BWSN#;3;qSR zaUcCLBM6TnAAH0(qTE~52zk0FGK3W6IYx-mDfzX~tF>BsduBD3`763>MwbXplO`HN^lprma7ZY?X$a%qz+~}ik74ziJnWN zo>U#1vjm+>oWz*))*y}B#{g(dzBE|bHP_TVZ?<}vGV=f8hY6^jDXX8QQ5(uTT0xOm z0FoPA)_VYjxJJ%#qQFtd_6i8REW3lN&Z9{POtl$>$Mj=7g(IP}HQoN=5(e7Kp*(}q zGMd#iO{GhIwpd);#o|a8vi=v$oR15-dEZwE@NkDhx_^HpzjMAH+9NPrR-j@-~BCS^FKF;RDdM>kY2`!VpzkMv`#Z?IN~k+ILb|C@eW(9TD-$n z>lxvN%!*~bMG{M|MtQ&B95H;iVbNptF&=)uIavj9xmsIqIw#X>76Cnk zl2h}M7wDtZy-Z^wZU}`$T;g1u>Eh%v65b(S(DK*3>feXWoYnAuc_NgWzd+3BS?i2i z2i^vy-24oMOM5s!>f-DxaE9n1(Y3dE&)?rpRB`3UBw+nCQ4-1DJc*jQUyzi2^AW9# z&rB0>NWi|2te`Z|i3yxSxRz`|h_&*wpnwc`7>KaF`?K{0=OJ%plYj!pDH(ds?_Rh= zsF*!)OT&yEG=%}(W}t>eo(ke1tnW zt-QYu1ACXVdm6qm$34MQ-E*R7*cRX6A?iEPt!%S%1#~__$#m99JQ`%^(H)(>APbxY z(sA7U)QdoTNr$!iC%WR{+bZu!Ez^CgwfaHYXO3~@t*P(nzC&;4`)^76CTWJOPhC%% zD%wcXIp~_H@up1ob#e6KDPE*q`(-7+urQ;hlSmAMip=LIpJjs62cJrWx>@)Si_%qgl+ zVpT#EvIFNQmW#6x_3(@o^_JqpirOAy4JIB{DN1MmKb>6jMIPeYmfTAql_6ze@t2Li zo3uTDF5s*RC&=C-%7bxnquo8KLyp`>;iMP#l&qX)D>Eo`uCCttP`8GZ_|xts#rv3I zD^IE3RduWu(Zi@x^kfOMjS{WTUy(Ncgfef^zp`3PZns~A1O-| zN6_G%eV78NblVO7D~CJX%2sVYZ3Yn3m~y#vT#BHO%@qG8Cf5CC7AtESr;mZz!#=>e z-;9H=-EY1!E`TwiQ|3sbJS$l^i^{lRa8()c9#(%(NQO>CD?S#jxN|;IF;SOeqg6W{ z$VU_b%munw;(O9y%8NOwQH965T@Ox~V@D}z)zvH+#JC@uS(&#{hx(!b^Gaj~KPuYow#Osk8nYtH+;Os=f zuZUv7fv1g~Z?BD+FL)7Kii=$XLXI|mi&pJ}zAvxnjDccSNyg!zKwW`SST{;xtn6BA z^;_oXz#`>rbCJ+JZij(9a+G!T$K1}qS#&OD?lK&@-izL>5pZ6}wWGM1fRIgzJOT$Q z=DN`|>RV8A3YYz#^bb|>{!i9g-fclsUe{s#(a$=^+-`=Ii{bmWtCC-Tg#Bw;kyLdj z<-pmRI)U|@qWyIlDX;z}(k&-Svtx~@<8QE^} zjg)0I+~cnbeWGpfRk|*vVNCkhm~t{0AeMMMU7mvMT`0qTq`s`8;1T$CH|NEnPF@p} z6JR!nfv*0*e)g`0X468>#cA3*{n8F}*d?vCo54G_uXb>Tm`Ck82DcUWhB=M?1M*Dk zg~535cyHEVylq_9(OAU}d;sp$mNg!HKot2@Kxg2tL*YFHU4|j(UPLpHgJwV5A2>-i zBGCUjXtqL=5cc+BAptFNoG>$cffl8Yn(-7T&3Y!ctH1c9{8i384qkoyZ$a$d6It5T z05MRlIBx_HTj02#O)ldtavuZ5Umbjmwyw&j1Y!o65MNd!dNIbLP{WFyz&CiQ&7%~& zs-cbn)SA5*78*XDecaF#ip_}b>83*7SzDsO?3OIzLU9}PFC+a+F4K4ws%&f^www1T zEP?S(aSPyvox;ybc3ZKtxQgWbdJVpGn=#*LxT+ zsB;?Itrh>kqg~JP9vo%;qPYQtzlM~mmNTFxI67D_O|74DW93Mg$dyyA@`4*dbW`0q z3l@VvvICtcN?lb0YukQ7A5bIQ7;DQlUsZXvW4}r@ePwOiRol|52nT7mycZ-;oX!cM z#hd4U57dZ3g^A7=fbaRCQfeoguQ#i}+Urdb(KazM>Xzn$0}qQuzzW=FZ~~q%kgjM@ zV5XbzD&6a8!OU#GMgL73s{g0jaJMv5X9j<-MlAUsYeZ0u82NiOV(I@_BgChgnfrS* z;>l1Qv;3d6ZMrrirnhz6VaD?#3ZVjoJ;p>Phb575P4a}*=Wfb*s>K!U}9&7ZSJf7 zkkdA)3_N&BmjuNSB2m3JE0wlJv4AY?J_%5 z>etMTnJ7pXpWZ-wWF6B=%$@Uq3gulxd4JE5lS8Haq?@~*RhLgxiZ_IC52?{Vc2tGLGabZ{D)Sp+SH^yG*RK^VU{So3yb zqIHubG;o%ir=YUe;t&1b^^C#TnWJg=x&Cvl&CxkPI6v?q2 zVvs|I6Y7J0B~>+ij~cjtQzxOM^dtL3E_O@qfemFW^n`w}b_urWrl~B@9P`%JQBKTj zYEBpTjLxDP{c#i%t;tE~U|6l2*w~=8g#~j+W_;F`W!apO9QPI9VsEF6ab#439rK51 z%(kEs%;n@%Z_;$E9@*%L#mehT{B`2%-J3E?7HAXy0%|aN^PJE#NKIP;AFAzZVT3&e z-DFKoEczr>VyGBgI6X1(lTMgWEf~Jr?um$didLNDzq?1~k;wBY_(R#YQP6GzBvQvz zDv>xG3jh)?$u4k)m-is|XGlBbg!gEGp5S>q#a~M{)oOB0S`1AYnC^wXJv9-#HpoL6 z>SyQE)he*<)3*CE26K$$0g*Sffq?g>ep;lWu!l8fk?Ssbc~vlM4p2`w^*W&gyi4(P z));I0wNCXGJ%m49f{P@w!YMV?@g`mq-aW&c^aBc}olk{7MBXSfo2Tf-jZR{I5Q)4) z@H!+%?lC8aHbufI#l?Mkx|{b&CvZB#TtRpSx~IFbPX^W5W_%!rnsnE$yS46Q4`!a@ zmIlMP81Wu4|GRlOvP?Y0-hr5CzDDOfF3N_&v zCT9_5(Ab=aV@2_9Uaq?+myUl695k$#hM&{8bNKRq!dfK)T4;q4eIn+C%p%90x{Yx4 zay9(~+?Vsx22X0CZ;Vwm2il`+aW6&GCNz=pVAtXWjVxYR$&2mDjjk>Cf?H+EbY{q& zPV4gtt<5K#1P%b^W#io8&x484i61de@3TCR?tPFSao;0iG9PY3NhMqMwNydC+6}S| z{t$;7f>eCCuj}zwY|5MTefKS%Uj|kW0*Bnbjqz@k3^OB%TX;NywJmnI_eNZdgjLI> zeAeZ>so8emEkN3R$pEwM60l(r>xA#A>QeZW&20Lg{#fyf-FHZSS1r;qo`*5CE5l-C zW+8td^pPR}a)q>=H?pE=i`ro)%7QZc4Pg1ZWn4&gJQGQT(*=hq2OYq9A+UtjCo7h| zKQ3f}!#jVOzNHq^tXCKqE>|v7vaWlVs^^6sXH2+xpDvM$kFYULOaQ1VB8j;{(?^oR zDU5R;&Ytc~`XSAE_(~-4c*I35WCOO-3PCRvu^_ZwcJIx$>FZkrsuyc~J(V6+1?sQt z!JDaAX!N)Iy+`dQWi9?R#gHSklosi$XJ|tWKC0f;7wgISuA1HKkAx}a8M7j$dJ{k6 zgx{8R`P2M86$$(n7&u};ClY>NzEPhd7?uMMzWC(XUz+}Nzwr->}FWsbgEu=VB^rzt?QwJHZV3- zuPB9=M@$XlzG+vztd~3iuT1t2s&*?!B=9yfX=eBXW_Mobh$coKIaP0&3{@x9PCE5X zr|O`J0N|}i)u3*B0Z23FKh{@|J76N_XT9cx4$=SddftcYG{&DE{26GDIgGePwi^vH z=1)bc-dFKeJM{~M5wkIGrY7_m&0wVJZH-l=s@Kc}b#y2Xd&;*|(91N#jAdXqWuf9S zX!!+2yhV%~6V+~4z2tw2$wY+hlzgC1JX|qsFibT9RY!D@r1FW}XbyNAgq{oOgvSJY z5O|>&WvH`}s<-^^f1pO*?hm#dewiYVR2@_qG|exQL8&^a%-*=$QFOjB5k zHmmnQVo`va4G|^8M5Xu~Kf!9_?rou~h`UEc0V(cFzL$kdObeBs1@-@!Yj^l<`gp+c zrhJ8`S7-y|kMI3oL<`%tPtHK^L;^>h!299eL@{1_*pXw5M{_Jk9xuYX(JypwN&Fxv zhd$xm?)^cG_d5l%kNmQNLYB4I>qHFk*hp zppGYZ;X}!N-4_&)7uK44d=va9Xod^+M(H9a?}3;STax08V}b&O?N}NQ(aOy$V{G| zSd^uPKqJ2Agio6GPRvRyf)4a1(HxqaMRN)IKvH5+Q7|zMOnU-i#dc5A&NqACvcpg< z8;*d3+_%%sRLkiAyDIo}sKKU*cJEujTPa@<7%jBaq3w3nTfd|6?zp0K(`k6%EfJn< zC$xapqzTW)G_Z0U)8q=WHt7^-AT9a8Ss#?m+f9W^7iO|I&gVBdniIc)rcHV@03|R= ztq01Q>^X^9vd^9oyi4R}$^JX5f1LP2XS zK1C3uvJ~j;vTytX^Hv& zIXnJAp!Q=upB29>Qu5NWPecN6+gk!NygB)Z76@eS=d8h_S#$NLZEtp<_thI-B~JEr zu-gKyn>77|9d7#G03k@~*yF=5`Qn-mltuyv6!;!3ZG6kjJTT33J{1TPjG`mlYDGFD zf!EE~Xmq2@SDbR(Yup|8-j|9{l-a+CD(Ajx&%q^`0j;}=Po~XpbCY*e4aj|EN%#Ff z+N_TI{l<%C_>hkE$1T_-M*J%a1uyT~(ti)IY28rL_rvQ`D@ZcslkQC_DLHfhO>VDu z#{g0?pySn{k89p>Tf>Um^Qt%H9wT@2CjE)@-$U2mKM6*=dTY9j9L~0;@7tt=WbZ-@ z-kCBt>Epy67&B zbv}$%oFejfB8WcjxPPG>lwg{Eae5H-p(*bS2CU`3QXVgY?Q>5M(%?KfN)1)v<7HHc zM?I%ByB8-o%`sQJCKx<@h2gDM!`*!BSTA(>5+?V6jY_9DRS{yrcN3ilyf+>`gS%}b z2T-GHdMT}ITIQazdoS7Xqk%H44q{M_eK3qW5EdY6F&=0TuDypi`(nPln6xKGVJ?&w z0vTxz77Gy_%%xt3Yc|g9|(Q2!7m2pcxlGiQr-{(h7Mb`3yu`pbTet*ipbe zt9cH)dqq+}DgiKT=M7w4Aog-WOE)kp)$?a0f}hcr4TB2;%l7It0Z~-Vzp6QSz}Ph> z<>7@UCsQssv&r-krXW7zHy1Mgsi#RTZoa&CZY^^MGV^68t}kx(eqyHeqABvVmcyf> z6-=juN~Ia)-M#u;qZ3A+h9)^H_CEVt_Md4wVcBgR7HX4!*?*luR6A;WikmUZW05Z#4arf5Vt*;@zGKPRAZ(NHk@BNB zggIo2kG32d871=P1qGNl>n%~R+%2e27mW1!Sn{e&DdxSCuo5$1X0|-^y*6ZIup_4j zwM=XTx&7J8%HWk6>3vV3Ki>{!%}BHEhJFOe?_|csC@txz9&ab2xlYN>rEfVUoev#z zr~kjiy$f87+ZR9lJT+Y;Cd3I*$fa{axfY?RsV1fiLaxauw^VAPs3t0UOp}o7!QpUR z4(H$;hd3^k$XyrrYjSIZLa3y9zw4PPoZtEV-p~7g-_Pf5KHp}Z+kW<5d+)W^T6^ua z1&!CR|8?{uF$dLboSgxrJC zTZm0?^sq9*#u)1brlNMSqes~=-J~MjW{%j}6_Ukg{bIpjZt%k|rr#kh9dDrrqb@`_ z>~|teA3}E5WSd01SNj4qR0-Ns4=Pk)H4-mD;>ZMzz|M$awI08vbYSnJI&|O(|7J{M zifHK-6Oy4Vio5be#3_i0*oGEiE@T=na3W)jSJ;e7x4r^X zR(hV3i>K;_yZaIqV%FlMM5T3#FSFi4dv#)WJG~Gx86U*8^$s6+n{phZr>kGMsP)Un z6>MurKJBGuu&0Z;f`svy6NWF(8xbb?VRsa!6r#wO62>ex>_5_eQ~&Q{5>ePa$N+qx z6l@wtao#X&G)GnRrx@e?67gCX2zgHp_|S)N$^A-jih?Ukoa%)sQ^EYGP}X=e6^h|= zP$T6^%Tlny2&6;NNCC5#s*?Gu#4LJv(;0d$5s88N7E}{>z6I5!M3tsXPa72)*CB}_ zAw&E!=6?w|flXO*Z)&6N6xLQ?BZM7SB3bVRg%{+}2vZ&)Wdw3QMLDv~FZ;NV24=Kt zQjB|;VdOoPOV3C}tUGO)Adq5P0~cY6u%TJOdp=vak{W~4N@_0&O*#JC<*?ZSM3E+c zZUg_0NDoEvlYq$wCaEsu&B3~b27%f29lD7DbehJ@rSK;9}NBS>tw9Qw4hsr3c zABxRtzH)DKVc^;3@G9l}=!7Vd%0*LHCRI&`7orvK?*eHiVWh78V$B71OGIzI5fSUYzC z8P@KyD@$p||N4QIfg^MiIC}+?GOp%u$=;-gE9wh`r}?0kx4l z3hBVZhMeux2H>y|>&}xK2_`+fkfHPBNJM*iTKW!`*)2yXS`ThgS~k6iw#vfTTrPoz z!j@CcZowfBE8kEnF!`t!V$cW^NL6-ghzHYtt3_N*akcHOFLjEM+TpGUQ=PV6T)BuV z#9XbHtSL#W5HsY5vS}&|o%#yjsV}-a75ChS~EPJ*SXetP^=Eru@$y~E+)1|J5lvbYwRDsj5O<&*R?4DMnL4fZrV za)nxX_Go*Q04v(DS!w%k2?SQRg7`N|j*$XorXrT7^AD(h!-X$})r~*8ot3p?4mJan z+vJf%fk2G@^b2Nq8e-0osc0+CzogX;vLdDbx;l89!AGPB)J)06Ah4Uk=n&Ht7AMK9 z?8l?ge{;&nmvr|Kx{yWxgx)x$Q(#JY#FcMj45Hs8isd1VGSoh`R1rY0iW9E#7nTbO3dkB(BCRJ7 z{4ws%Zs2D|k)L5^b7;SM?73@6J;;l#wZ$Zm z);aD5?m?Mq%}JbO3pjlV`^np>JbDMZdbUI+Zw6f?)0C)=^4}nmahay{4if8WS(WZA zTOdVuyh5__ddl)GlGG$L1xQB)RLBytePu~uoWwwtiVZt2zz&ACh6c1=T?s)EyB!Ch z(|x>s4CyC|_#O#`9?_?riV|F$3KVdDC=hc+@c$NZH~1=g_8(Q$SU<>FF6xV_NF9Kl zhi8T9yO1(cC_hD3X=A|j6g5|JAjK}%;B=JHYVb^AI!f`NIxkr`;XNrVi(QRLL1shYj`txH_Yu9x|s6K}ri!)cPOhNStm) zKO$pg0Y+JYdOpaY^>c59U)1-?DD`s==V>_-EMON{GvbPn32sq76qUGI2C|k>jMO~D z%7NK|cV$tpqWtORJ88x-kLsh+;R6KJm$Wb&E4$q}@aO$Rpbv{IK8$3_OL2Yc>1=eIedq5i%H>McK-( z7{+tCd~h-gFe1@W@(JSgK@b;@7&}zMg%PutC&0?yK;QO)uVaoS_ZBV-bboP)?q-Kd zt*ayN@2+M=+&iAhAvi4tTSVF7?&Eeuw#6v>@iTEd?0iX09o!yms|;M}zE{pC=;4p` zu~{x@|I`oQ;VdS*kGh#Kbu2~#sKVHj-5kFlQWsYbVO*#cW9t+Q6p%<@Y@+{v(`h(S z`2f&Uz;zj11ulh)D}4t zbJ=JzP?q^%eM!%eH9l0IWR`|q=77Q1sQJtvZ5_mDgjg7pR-_ncO%A|_s!qn%;I((dxG*$`=cti8idr`ww zV#Ts`>(nHpQ1QX6nRt zRJEx1jM{>3Li}m&yq0xS!4z0i1m<0ht}k4%5ig|>5b5XX2RaJ8(6o(ig%X?}Z7iEO z^f?L*fr`HEjd?S^pk**l=ki1pJ7n7ysLAyMLNRe&G_4x`btfC%2EVkoisA50n-AI- z=!#y_So9SXm@NcF!xl0^uWa=PKG$OCLGTTnjcdpu-bTxdCefW47;>`UEBF>?%J-vu zC{e!pEOMZe>$NP}p6=!C8`|R~jmKZs-*Cl+pI}!gL#Cy&(qFLnlDa{AQ8efKRKD6q2I!EeOR!EtE5Zoytp^8_FyXk zZ#L(Ph>2M+r8Dd?Y6185;~m>t+mD=oa)gL;PUhA2(~1YGMZDGq{}_Zhz-$iIAHoO+ zZ!zr}L>6Jnp!GD+TiK7bm9urqetOuppiYuhCV+cnG`tBBdnyKtU1;z`QdnZ>qw*I_ z7x8Oq5HlomrcU37{n?hIbrRtA7{vG;0&EK#>k~^_ZLxNs467Q?MZZ;g7}F@sX4@K) zL!8*@V*E*JxE2^z1(~3LlzXOqg}2H-xtiKvL;5*VIF0|Gq%Tz&7(EwIGzNR3yEQqt zfycjbRf7HqFPrqq7;(LfQB+wWFA{?9R-5T3YXjnvjM#93ALGA1K~46XM-sn1A-0M8 z>N16L{_-@1KmGa$E8tTg1)|P`sh&n8zaX2cITV)!g10F;D|z~%Wm874Q_JA16(#Dy z-%2u0bdZ?U_V)!d^d+D6L^ibxY)D^tpP*?DVLtVie z4s``@IMfwfci1AOD8`s{HsbGycGDy!J449b!9i9c{<(8E;P;H}feX-Ol4`IsYEKkW zm7&pqP3A1Ft=E8GEc+XGifwD;t+35ci9um41b$+!Sa-l?qw-CO9`^7&#UVd#h!$7V zxPj3uTOvCf0ux0Drn_B*si6YsiDy|S7!!r*BXEG0C*iP5J%!`Lh{`u5Y>kvxfHzXg z+}os5J+l6-M+58ULf3onW2kLGPKha+AoMIWK{fX^e;08#-MQ=P?@mVpEinR+;6^PE?z60~XLkHl{i{};cdCoQ-#p4}3& zRXOvF7K1R@E_R;enJx35d{*LAt>d#bC>)j-v#{(nuvw>1@#nsz4;IU(?u*o`r8>Ub$glt3q)&{- zo_`Ud1Sdy;$7}Wh#~^c@ z3Pa;S!wIr0d~@Q^KTjO^=ZSs)JhA(qCwBbv#8#Z(OXCeMUxy-oQvY8Fa0MRr&>dZ} zm_*Wr&`H6Hu*QgZ3YQbYK{`Q)bYT;$55RbIqa3@dG>5GT_Qw!zIAYM{>cR8ZC0fmE zhh=zYgXK*Wcv`zG<2j#;e``2g0rtyE^@Tu3x4?;n!W_VK?I@LDhx9l>DE3CBVNhzD z57o4RfRHO*L)NH|E?1l5QJ5Y3oo*0yA}5^se%=z=EHG^0_>;|2!caE z^JjXr<%|>^jeQG>^$V5Q*7MY%sbVvIR0$#mB3?kbT7@T5UV&+1mE=OakZc5w+zUtn z7*R1t&5x)KMN;f{jQJzs{%TUk^qpH!3R0&#(Q36APf-;uM&7kmgnlsIv!v7#wtEsY89CEGP!%M0F*>hVA_@_0o@$Q>|q!#d6z)Ba2|$^HiW7Mg<}(xA;6AmzB~n_JL?yL9j*8%gv-Tr^hCz=L1- z?H73;vOev)NVA4i<5&f_l|RJZnv^+&rr@g?lPXwZ3|nXnjec_2;$iEQ!kqBOa1;+N zR5>rKVQ5G`36Cr+6Go@A>w@QD3$^vPu|sdNGZLnsff7K{9=acG2xJE_1@l8v8#|Z` z`33KoE$97rpsC_5Q&EjmC9}?+-KEV)B4r4sVpXUS?V6WChulMKN+#LM?X$_oA--rQ zH!+rhQYmN>Dt!&zCc|h+p}b@8T4S7G;P2<6iv?f}`dDDVCt6eNnBDx7uM*(bGad4y zDqPP2e$v>zj%+VtWxu_cszT6vhMs@GVRq+)PI^nmCK0fO5a!#_V1)8y(*C6?%Ki(uOyCc7> z)B!sXV4BY114jN6g`9Tl4m2RNOyX8B*-K|1jnmE{J{44 zQ`v;ckLaQ*laCWdu{x!y<2L5F;)N9e4(CzX#uBcWmzQ0YnWjVshYx&XBjpBji0*Lt zaVUUsP~Mu1P%ej!_}M;a4MsxWE4Ej>Wp}W^YPc+O6TJ_F;Sd0YOmC!uSr?az*c)_l zD!uZnlh;M6QP`)FLRVsjDl?PH_2oKy-A!pO1PcWTF>AnY7(`}CYoyOxCK2r>MG6jv zt^pqW*h3}msU-o_3{(=l*2LT)|2&i(asK?Nys+INI31h<9CB?hz{sS!D?!!%4$b^;cWwb_^snl>Cfgpp% zs0%CLEh|Q)lTj7UMK8>}_<~$$SXvI>I7}Fz9q>anyo!?4R>IU{$d@}GR)EY^E{Zm^ zy1MwYmyFz|Xsorih4s8hDnlSU-K-MKd(RO_6b^9MNJ*GBl!}Xq^)x*HrF@u`mA60( zqJE5v)PIxCSfbfPfcL^Xd6JDBd3PviDDO9G=xGPi2)?XZ7l`6VDC+-NIYn$PS7v)I zsjQ6s&Irh0>zcm$j5T7e2xiX5>c+PZS)qz)q$#gkisweqbJ?aAV^&DBN(& z#w05=!SmkS?Y2dtq(_PdTk-k-v=wXTcnfLg2@pxdi$lC-i1lp7qC%|fc?yRK*aqS$ zE0u-Sct13xWE<)d7@53euT(zuQjD^giox2cB@{$35xM2(W*|6v%Piog>Y>c!nF%IJ zP+e!Jx)2t~jSTG~4xJ9|;FGn~sT2!pCU|h0_A_|4 z_eNv#1M&(kWAwoPP;9YE|Lytzj{JFvU@#;PjEdUG3q0rlmIYCCuLz;47QzH=F0LH~ z?h4bxc)wn92toS_pz(kw6viRrFY*tqLNk_PJqVb;ls6^yYeHOB><*{2oM$c2*Llei z%el~{MIW(Z>6Bf=9TliA-0|EUQ~w_yA~G%phuPYx6NLGFL4F;$y)y<8OAG@q^k~T; zII);DRl3uPoBdbCY#Pu0(Nh}PKl-~7SrKVD09IlG7qLdboxO|^-~cTvqqp6|+YnTX z_6tPmjA0?>YRX%NVE>xrWU3@r3W|MO1DF>@XC}g9W)J&2?ZS|tu0Vaz z3^nXtCy=2;VfsT<2+uJ@C%~{22(&hgc!oM3=P?XuBO>vA57Rj4fk(f?e^K#8^+s5~ zxE$VaPTik3(J>7>#L?HIbi=rFc2DBB#QHelXSx z)7^11xG21MdCn#(e)>&I zOgTgHu3+7ruE*~a!L69~+Ub{qQ45|_9G~r>NovEk@lRD@3$2C$vZaje=T( zdLe#0X_-}mCFD`63D_XX=y(HjAjD4TFS?u@&JN%gGy%E?bMMKSbTy~i7(K2K0j@d0 zO7KiPr+9)K+mVxX58MEui+UMGh2f-=OrK8zB_Z4z-Hq3q!s{gfZu#oREixq1c8pcQ4~ ziz0kcG05**+wM-0VN#jK7nR~Dk?fOGV+>|ih%mZuKHkP~gr)GNFgU`Cf}B}sBAib0 z2QZcAD6+X)tsgPswPoP>uk+TBB|O24D{L8O#5IST-b_&CE87dQLv+F{FI;6TQK`I+ zfkG0w!D^_DBqMEx{K5o2en+>T>>~vL8&JO?}Kbd1Jic4(8Hd6;{)r)9IJ!AyX zh1^zWlkf`-13cL7p~y1$P4jJ7OUz3RSoENk8)!@9^|rQUGo zuz$Gn2xZji2)#+@!+(`SvS;E4h?O3AQMNofsm3_p(*iGm*62wblM$}T!ON(72oIlE znW|tqV9F2h`he2YG9^29hwgIukBD}3iYR2JE2c0r2M-W$RmUN-8I&>-YDih#0VjEW zFwPQNNM$J#`iZhYbB*{14~u*ce|o1%a7rsreynDzIgft){&WrPL*&na`JYcYFO{7e zGkUmcl5c&26bcS@=jHPU<033Ca6Rs<)xR*TI*&%9vKh;>DlAtlMiAgna0gO6apx>| zlUV@Hje1UHiacttr|IeJgsO)3p>ZOyPVk!1%5_L?1mp*EA5zRt*Ei7eG@IHT_KiPAuA?xeNKn2f%Pf(p;R4lww^t zmc{f&yMy=bF>6o*HDm~m$NR3SZ404qP=;EjWb;=c4x$IamjrGm)sUJb?kay9GEPa+ zhLD&f!3v%=XfK$zhz1Wo3tMSXF(TiKFwI>~_fb!DRJMT+d`s>Ih8_u)HNGjX<_hVe zw+u@)>fk|Qh`E9I`h?l;7$jH<)DNK-Q1nVvU$nxCo(W$Jb7 z9EcwJSW$jTE~v*6s<-gs!EY88jC!#xc0fBNXF#noJv6Zo#r5nBZXjY=tgDl<6%wbi z=p1jZ-V0YrP&X6MDjI9@{IY5EC^?d*G>Q(LhbJ25O>Z*~4cFG(GzbO_7f;H0=SJW?D0$b(jY%@_$_l661ssAP(LC+Y9AV;d})xP#c#CXcQr;Tct9&2eY^X$7%g`k7)lm` z18EvpZ!dmn56Y53t_%wqckmWL;gRDu5p&hpdsXg>%e6SoJzWc2j_2Di5M!DF660+-Mym!22q|MWte#m@k2O? z8&AkkN}1T|CCkG|Om+bfbDvENWrNM}V$bqsSUB0DZk(|QNJ3`{u-QQYZl%8v{3hm3 zy>YtD0ny*|n_A9#I)?(3Ao)Y&1aXcGhy~QqZt3_a8SoJldOCUU!X1^WzF-8%Dkg`- zER2RkXb*Z~H+k^G>4+A)&;z$fWjR36i*ueEOLQf|3Z&-@##?H$!Rf^dn4}JeM7pd$j?$g6U5I*e?DA7`SiEu?PR1YqF7OI+S6RQ&@lel_< z;!L3~;5vlm=c<{ZqNHpQj!UqoWMlu}t{}K>GLaZFsv_GPU^}$H;|8%z;r>_f8UO=* z%3g=j%C<<%p20c;ZXbWYwnKrp7K_hyf&K&~8L#6L&v&{IZ-Ab}(HUYq4O^xoz$7G7 zdiEOPQKoOkC3q`>a9E#r9{1AgFaSZEr*tS`_?rvh;>6oqaS=L#fXF~M!kEeDzJV;R z4f!XNP6lp}ve_ZH$k!tU$;W&$yrH}}>=NvPQ28QbwKHD9%P$o3N_O?EVH45ub|B!1 z3cMaoLkv!G=s((onpUXr;|sOm-CnXXlmMF#VJFJNp>_gK;o<25fttZhAS@LhWajCT z%okAoH?HXH;!yc0r`Un8y_mZtW#RRBj(P#{6e1O}EMeaW5BGt-Vn(V?wQK4jr>V$x z^mTU@PRXD270%i&q)O9q10+);JnTTRgH^}*lrYgx>){~em`Si{LA3yh4B`{Hi7^Ii zeDHrgmeRdu)qS9qf6*7IN(Dq~3PH)3FGclXJ#)2LG$JHTw{eDsLX3tU{3;z{A0_DO zhty9Y3+m`3x7mGy26T7f;Sg5+1aFD%tK)!huGaEC=pFZo_eprme2p0v&ws`H)Tb~_ zo>YzatD{5kWC*&YFeMM?a6qe_#9VRtA%`N~gyEp0uQDyO02##kLIHOU3m8c2NUAlC zehw!11dDSVC0xCvfpFkqPm-SLlg+Bk9x>^kf%I3j^@R0qZA7W2n7)L949%c|I9yqd zM$d&A3jK&`>#JcI+(JLPHSxsVqT^I(w2PTW>I%|Ej{kuC5Z6Gz&*Qnq;%r2UrBlQ> z)E98m7y66FDNW#Tr&N#$3PTPy&p>KpVDd>sTK?Mo>c=SeQyUu1UM`Q<@nfuw6mb{b zA%^6rg`&le$!Et`W$KHiOyE9k@iH%3>P^fC(L2&i7#Ac<5i}OpP|DzwmvwtHA_DIv zxcHcQc+23YoXxuGOIP^w_8*2b!Je_neBRx1sAD@_Ua<5lGGM%uq-ZEKbD}WW1Y}Tp z8ow2qwXS$3fc9gC2k~W2Uswe?P5?#q`)sABX^5~_u25Nu)A(g@0XHwyleeMYXYpIO z+yyBKQwHIGNCrJ~4wo)0oE$w7npMh0JoZ*NAcl6>9jQqx47XS3mk ze*ix?4`Z%?E#lwIjWc^I9G~-67?6u&yKHz)d7AS(vx)hfG;`7BWCLE;%$a@*LNeq^ zIvPMnhQj1U=$3TcOLsg+ciaufLgg8}kQTEhf-Vp&_s$6bE94cF}ma3y5k5OFEZqFd^(y!7J?3HC0+c|KB2Hs{u|fesbjvq zP8&;<(C$~2w5b{<(r@vh$Go`fG_=!R)RKlKBFEb5jtBH52yI|a!Nd?)?0}(ioUzi^ z6mzoCT_q60AybBu!{T&ul?jCj480JNXP%^CT`$#SE>TALL_mei6)xX^;tEq%<3C+I zkCPXKN@r?4sHsrgCS3lEzoi8Km54WrsqPPNg)Ja45gG^;;$Fzj>(;m?mvfPp^|1-__|UTqY4`25A2$X z456@$Is~^PifONAiMr>_w9hw-(H%3o;|SexrM4Y3n@PtzqJLIDd^bD#LfN}4?~WsT5r0yWHGr;38EahQ+~AyJpnst|{d7TVzKxB6 z=_&ky++E+43a|trkq)NZLjE7mmnz*PxYAPyw?6H?R6wfT0`%ZwH2Le)gZXxF8c)+n z4v)||#6i&AsJkgdIIf6GN<{+j_Oy|xl87(lyJ@+T8_%8c-E8OucsFET?4c*{Lr#r_ zNuD^1lZC>hA^3$VM>|WxuTyZpz=8>S7DjLbhTmLQ+kZGW3(n1wOX9_Iu7q2iiJNjt zgh=Kbmz046;ZhQ@LWJg6={e!4n$#ajFmR;gi{{F`79fW z(=~_;x$HZT0k|OSk@HSCKJT4yQtmsUT_rcqpRI%dAQ1Mty#SM^dEDP*O@?uilUaLl zlNt4o7?Z!$8!|!lHpjRJ)f@a2@Fh87udO#QQ(e7{Fz>3&qCL2U_DXn;Y>Ma25d zQS=GfC|@?`=CAI?w_xH^afq5)FG%?A6dpsmNL?GZ1L?+6Muk1DA?ad}y>vl$B-?tm zHrdw7g?dQdE*C+bFpa1J)$?;og=#S#It9BJs+D*!Vt^PkS#+%a9#@1ZOF%pICK|f= zzsCMREDwzaL9h7z-XRweGc4oxdzaf(lGTNnU<@%qcz-0yEhQ-*4j9N=OThUgN`%^* z;U|G*t#=l>cOtPscqoTrjWt*x+$}8|H41kLbZA*tOJIaRYgR?EN5bMj#ly24(txAS%5AuXbT|u^dcfJo03q!T> zJwQzZ96t_7WGkrkC_NGLXMh9|BvsC?+Jwv0dbF=yw6W67%p3EZ?&f^fg~@->{iAyj zlcdNCV&xobWfC=i@;-BxatLYgP^y$+(xU>hqjMPxbFD}2~3ft0LRW?lAl&<(SBOi;~VXNm83&W%>wJ zT&Ug`e#Kqk?S4o4$wN32v9Z#>Hu?p&`KFACxe*rB4&2T1lc==x=a8+QPc^RVZxZDQ zR8wEA7mjmm*-I7_9btj8E2A)24Q9{TR$^lT-btt50?y5>>;mpk-{X@&I|bQ=M@IVz zk0^;FNR@Li8MK|=jZ%O-#0NuQ+Ugbp_1gy4>J(Dpl&g70al}oMFR;NKP*h4qPSK)Lxve+M2kjU<&+5*my%ovx=U1cB2wevVfMO=jQv!X zs%XTqJQK3`twzCz_rZN&FWP6y+;EeKJp;y!TFUuM!el7SW{b}-Xf-&|OtknjUBkNc zvLt~Gt8*Uz%r80;`kcWo9)@1Bd@oFIA$n|*zX13V#jcWB*+VoAVwo{B6a6=TBoxMo{Kpx`J?cnd^L-DQYwks7;==WX_ROr`6H3j zCDaPWfmzfmjudIBPPG7{W2GVJL6q-7`XyOK%!ux2%mQRnM{FWI^_zx@cwP31x&~Lu z-$ymTlONT<*8uX2O3>8+1;9WJAOsN>cJgFxs0NFFtp+t!18U{}X$=?)mkrg`0N4l0 z!*fubd`f(aIFq~sW)i-Y>GM5#p22xqz;m#HFJ(o2pKSb9j0CuONR{Ipm7aDXG%pY1 z8jLvSz1j1=DuIbq-`7QWL?QK7nJ?sSVl^JE(sF+of}lOZWb(IxQ$IT|!<6S4RyWno~}#5nC%fHIz@gmaAP{%BOuZN7J0GrnK{rb_V$d zgwXU47ME(iO+-yp#Xa=bI9`lFKrKlTtFV8gD9sQ46lauQd!0d zlXJ8L@P^qSr_2bRt|FA)sd&EASA@Vk!61;q9ro&fBY~K^lkvC3h(8>@Fzsk(`SW`3J#kd z9Er0Gf9Mq^4~~?D&!rR6@Sy3|c<|f%tV4okg?3^@qXIpHC2{R9o}LXU&%*6U?8^(Kv!dj|VZo6h^BdpJ6CSDR zX!+$m+RT2H5w9rs7(7j_!Y?v7DmaYK4HZxxIV)@iQv6cAluz%VIl;Q*+@d2Rwf8sD zgYu?L9L?$5(#zc=Bf}#buk)GpiqhUp2_p?^%rk-`sTg$V7a1-SO`ncj@g&0;-5b9Y zN9Gn3A&-s>{y%6tn4~w2VHYhY2txoC| z=OWKNZ(30EfPAe&LaF|8QNS zKj2=and+v+Epe5`55Hr8-L6%dY#f_;;GMuspxP5@;Qr&ot2Fn3I>2&7mBtyE1jGTG zfaAbDpbkjJJ(~bWH}9aZAdsBzKZ(N%CRb_7fF4t-Gyy;=kOh>Ut-%j@Xx0C(*E{fj$XvNK)8C8dT?5_d3)I1%M&T*) z8D%{;cy4%PthEdrJY2?e;o#|=n4qvoYZ*T>HJ*}qjR?d8ff$j{@xN*+%zs|dwU>Xn zqH8q&az)p28m|za`Nw-kTYuX~8A;=r#y2*eX?#=TnZ`FXp3ybTuhP-A%CF80)V9;F z&N%AM4DfObpB^k@oZR?tk;sj4aA^E36@NJrqZu>QJn4SVfesFhmpljd=_C8U(Zw8INjybq`2876x&!*m{tbJ#w%1h==qEQN~|!yLA3cu@Oo#27P8 z7!#%`W6CsRnnT%Z!L(vpGv6_78B4~B>CALxY?+=6XvR1*u8bGs#{@7z%p7JuvxHf} zY-WCAPBMkeGv+h%9ov^3$wsm3*&OyYYppj{ZnNL6U));a4>pk_#tZ8ymcE0|D$o^TcCQWI?sE#UTuH`H~dWB#P1|$=bh` zZRcnF_HfMTou@i~XgK%vw;t1j>CU`ml9}Fuw@i7n#f6zGfbR7Jg|jOe?p23a_75zn)pD31rlbrTNFhI5cFY zG98%hY(I9M;FZC+CT5m_u04vUvIXzg=vCIuVtqBUnaBV0`Nz1!S2K&PtXrd3@O~=W zqd3sj%yL|lR|fM0{n+hn2fX3G|9wWB^<$bt^(!@NKXqlzs(x=OJ0m;udsDNjuI$=R zD{fN=M6xe zKu~EtGp#zOTVczvM2v{K%>h2ODHzGiFCqHLM7Y+L4kmH)G57;{V`Wmjru3%atE zO@D8?d64YPs4BCnyY*{7g)@ihJ(&Mhe;UoNn&+B9^*1#&HFKDQ6&`|${b?_%gxfx? zWT(~7)GXC()BLaYTdSFh_PL$CR6kG9s&-tH%Ey7Ox9p~}_9koe%=Blm2btMu-~avZ z|L^Djd(Qqpz5*-Vq_#-Ynqj(k#c#ybD!0S2J!X;m;9P%(nJ^INofxM7U|e&?+yZej z7Z@Z(xW^THL%QKUcZTuwz`dRf6C}a?Uhv--j%P+Nj5&mwa^RRZp7p_49nc>Ndl;}2xDS|z!bcKF1P%k`fYn@-5m*Ks16~1EVGJ`8NCFN4Pk`3pC^sMn zwgW`~6TvXOfJp!c90p1O;XH;J41@ryfD^!Tpd}O_XMhx;6+jm72r!9am_EP+Um}R*?tnNFWSY4(tSSfcroVU>?UXy@BCC2#^T;2pk3qfO5bf9`ywb0{nrw zz%pPPa16KxyaEgpa3A0Zj09!_Nx+Z5A>b151gHaAD;TCHAOZECJR6dw>%_A@BsK2AU@08K4i~4g>&m zfCOMAumd;(TmbF?6@Xp}>IUczH~}MoDL@3U1jqz-0!M+1z&+qKz$`_X02`n`;0Xi( zvw=l`3fKZ10CIpL;4x4I7%W4(1-b){fEO?Um;)>V(typtZ@@|53h)r905pJED%v$* z54Zq+KoBqwSPWzUTY&>WHc$YR02P1+5OSas&cmtDwIlv-dIj{lP4P*iNzzyIj zPzC5ON7;c+fITo2@CGIUbAVVN6<7!S0vrNzfkNOR@EWKCOqA$5KzE=&;0BBY0)a3f z4pI*633HSq3fw{m!U>T4JYy*A=jsf|=HJ}7|1=IqD=?v2fumbD=N5CBz z2}}WI1M`6-U>=zQIvx7ae@Gj`DZdNI8j2WWtOnSRUw=z)%m6Ehgv;1Fgg6d@6`LN`XtxHF!N z1p47{W(4ES_%OZ@4MsAf7=LCAB+PM405hJMz)WH$GgBauPK6FRjgc|aG3d@|%B^d+_;{*~{#MKKnbfpE;0hDS+A{L3q4~!Mz5N!WYugbdzZb&USacLIry9Xi`~!u%I;u)VmGpD*bG+5E@hXn z@oX$BXCv59b|yQWoytyT$FpPDQLGO;0*e#H2k_%64Y0 z*bZzv)`D%rwqjebLbe%e!Wy%Ntbo;H8MYp@ss-&nfR67#)e2DgCForS+CN1-l%iH1 zqK59Fwr-==ZlDH>QJaOR*(<2wOQ`MhsP%lbfIPH>T(pR6w2c#JC4Zx}97Vf1g7)(l z+R>kAPY2Pm_M?UUhL*Mu?d?~zyWMDkJJAw;2$UYppUIZ9zQWX*+6y`o5y}&d+1HnQ|X=3d!uKg zKUP0g|Cs(OeJjC8L6YFGpiI!tKx&X+aM0kfL2E-#!-a?%5L?xRTuLy=1a}9%wL$dZ|&VWq4j~*k6O2CBW^Rl z&8{}L+n9Xk{N3E|e)_K9JJzDF#dM1`7Wo#{7Pf6CwoPk$qV4Op*6l{NThi{&c2C;1 zZtu}Prv0AwciK0#bheypxyAA-7@$LkX&qK~INhPDL)VUDJ1*;()v>H&TdUz#i>&rq z-LqCR-8{Q3=(eld&2C2B2X>#)eO>pn-9L2i)?;jslpcTe zc-q6S@+%Sg){Nn|odARolz9cR=r@z5nX{q<2euk$t%R7W+%~pX_ZN0vwh) z9CCQ<(4x<T{t_b)Rm1{rfKId!X-wzNY;K^_$smZNJm~-t@ET@7;f4|K0s> z^w%HYFks4nv;jv4JRe{_P&6=n;HH7+2Ywi6<2ceW!EvwSEk^^VK2Cv7X--F-o;kG~ zG;C1lpbdl040=1rYVe4`F@tvuE*$)Mu&wi0=Oxa+JKuFS8q#-2;1K1IBSRh!5e^+Z zbjHxtLr)DYAKGS^>#(q48-|@3RyoYl#nUCqWsA!Nm-jB#BB^MB=x5PoQMIUxtB-4} z>kikeuC=aR-Td4Zy8Yr-;8yF_RqQKXDBdByDy|WCarbeLasS!gXh z<@3y^xo>~p$-c?H`+SRiYkfQUdHF^7t@AtS_tejHWZ#kFM<$NkHS)^Hs*&wSiAK#F zl|JgPQFlkNqkD|@87&{Zadh_RXQNI1`}ha=$NO*hKkr}RZ$4(wn7}b9V}2cTbxhTm zc4LQ)oj#Tu`}^49vDITcjB_0qGEO<}z_@GUYQ}X4a196vSRSxHpg7=TK>P8-#>>Vp z8^3q_)$#Afx0x_#!juV%C;T$u+=Q1CgcJKr96K>~;--nGCYDY#nABs^h)HuNWlZ{W z(v3;gliE)nGC6SalF2(JpPj6p+;mFMDZW$YO<6tV(3Bffs;9II92__~Fd=YjU`}9Z zpkQj(sUA~jOii7-XX=Hit?o{)qmEgSz)u3vv$qOn^iKaZkEODezW~%ht5u&y<>Lv?7Oo+&TciQ*PP*Vg6Aa8 z*)-?KoT53e<`{=|2^|_55E>Pl9=bd9bm;xi>d=;R?dE#U4Vt@X?wYy#=boSYcy8U? zHevQ*USYDZxUe;0`@_zKJqoK0YZY!6?jAlRe17AcPJ4$ZqbuXJ9`JhRAdkwYT=BWFi0j$9Y{ zdt_eZoyf{a!zjzBK2egWDN*t$F6yVKzoITgJ&bxEWg@qd_mg|cr^ut^sq)S8gYvWT zyYdRTezZljU9?NIfAq}gxaf@N9no3Qm!cm=zl%1U-)?@-`7ZNE&z~`W;e6Hnt@Hnw ze`fxz`7h>wo^Q6G^MZa0JQs{#FlRyhf)xw4E%nBE#YoLX+l{-MZ)`px&%Fiv7))cT+vQp zt>~t(Q#dFFDx4Lr3QvVpF-kE`F-Z}m2vN*dge&BV7)88dv0|xWxguS$O0ib4QL#nw zvtp-WkK#AQ0mUK35yjt%lZqTgo+4jyL2+4eRZ*n4uDGeVt+=OnpeRw4DxN5wDasTt z6fYI86%~p%inoe)iuZ~SijRtFMUA3X@d=+g#bc|ImH57H$6Ln{aI&7Mtmr#Q`eU7@ljyldoT^~T5 zZ$jO3Xamt`3qfcT-e?<+Xd_+FR+`7_$5*56l%fq?LR&hFHuV$QRw~+91lrnov^f#l zo-Nv-S)3s5BiiHxw9P!U(YqwP*Y8y2B0cSV~vSyYGiU4nL=hxWb;?S47h z|6KF~U-XAQ=ojV-1q?!Iky@-`ZRcTI(T*fcz2gj&v9AnI4j5Y2Ub4+Hu#Q1Xn zKHhxgTR?7{<(=L8d|F7(@49ES-Tdwd+*D)KZMGTQSy7#+chK zuo~m*!?HQ@VOYvdrUHzREn{E6UO+l80&=- zUt-+<1>^q|$N_C8yn{@z7qWp2GD7?DA0aR7hujbX`JqEV4P=P}kSRhSTXYy#4LRd? z$Q#okceEQ@1sUX5$RdG|NzBJoKt98CDKC zb~WVL!9#^ZA49%XLeA|w#AwJ}$h}J-|Jpi#hAg}TGVzGPR)gO{M&1BfdDx(qgPuWl zPJ;~H$H~Cy7G&xK$ksNFA0TIMg1jvnXg=^cst-EeiP*TVSQTkc?@}fDdc`zhfmM}wm=sU*|)TR0^MLKbOhVp zwa^zfLvI+?%dFQU=n+ZKC%X3h0Nr9ebc{iEP3`VN=ZJ^y(eZ~0=ph-2MV~+g#{wO)c+0kBfmm*Sh@^=ypq><5{SdY^6EYUqG# zpbPf3U@Z!u8_tD}X!6}{=!^5AH@0f?2s&f}bjkLuUqG*13jMN+`CI6k>CicUXjKFK zb1n4HJ}sG+SD}~AfqrV#;s$ipNa(E1&F(>ejfEcDTKE_`tpd7j`{rusxhc?hJ2k6- z?yH0j+}-p&^x>7zi+eWx1RZ%DbmcxKjL8+~&a)puu$RqV-YfsLJht4kymk4L7k|81{KEG|#}_Zvf2%olfV!Ldec9=< zRb^AldY9Edzx4da=d+(XJ~w)PF-bDpGu#$fBNFd(I?BEjD6De zN!8=ik5@eodTjq#Q+lOzb7^R)b7|AkJCF7}ih1Pu=(|VHO8zQIF7YqvQu6j;?!%Q2 zr#`fQsCjVp!IlSM4~9Hw_Tb+AefJmLA926^{TKI+-CKTd{5{)yHFwY7U4M7xUB|n| zcW>RN*122jZ_T{rbgRj&+c)>zTzGT%&2~4-Z~T2D z?Z%`VJ#T!ze&za>>*3djT{pY_=-R<+ORkN+W^=8o_)PKI;u*z`#Z8Lu6zwgFEAlSt zSX5D%UAVGvT4CQpgTfmHy9#0ph8MIicy;yU)r_k_SNmQST)lB+*Ok~SBd%Cpd3`zi z@~X?S%l$7KUA}#3@1^)lzLz>(dUx^6#dQ~FU39+K{9?(4KQ5$P7l zI@9b-N#3EnWqA|xdgbZm-8jAHbo}X&r)^GG=U&R)nk&zhbJ>75iuI7wvDi|K0DGe&6}K;`e~x9e!{6 z`;*^J{dPw)@`gy}WnV-X(h{?H#b!Y;XCmXMWxK z>%w2h{A&Me(_f$N$=>thp80!5?y=irw5N3UiQOA^%XjfO!#HsFRgy5+;Mrwo*hef$ac8w=&+-9 z`_1i#wy)YAzFoTAcDvE`CqL)@y!Ge!pC|t8^mCh^tF{$wJFqQ%Tj;hC+ibTPZF{;k zZ|l!n7jF&RI&^D?t)G6n^V89v*8jBNr?Efv|H=HPcUy|K{IO-_mU&zJw%BhGZmHOO zb@T6=(>I50_SxKPbMwuwH(lMdf76Oh5u5xrIc#dN>Ftk2KmPe+=8w@oj{R}qj}|}H zY`nAa?~R)`CTtAcDB9S0qhRB+4fz}PY*22PyTNyZ!-iHH-mky8{@D6W>l4-ot#@1B zZN2gO@^x3%9bA{WZo#?<>xQheUZ=nA+1d+he_Ok9t$c03+QDnB*6Oc)zUJbZ{cBdQ zS+Hi}nqg~f))=pOnOT_mSLVh{MW!rMlG!t}W#-4#_g3eu-nBYy^}N;NRy(imyxM5> zt5wCTvQ}+bmAq>9D!)|&R#~pnU!`7ob>-oen^q>RoW0U-<-nC4R~oE*nNgf^EMr>+ zml2UME@N0mw~Xc)A6DF7ac0GDE7q)tUlF{*dqw{h9ak8xc%6PT{Z#ty^p)wc>C@6j zr1wkjkZzb>p}MWgRqa)+Q6;Emsz#~?tGcQX88Pi~+U2w(Y1`72Y4g*jrVUT)pJttA zlJ;I%qP(a)tlXwdQ!Y?WQ~D^Klr~B;W!>`U%ZrzvTE2Jry5&jB!C*X2XDl7J)N`rh(jH6OE;U*DDWyE+UdrW^lPL#Mwxz5}NlJ-M2}ub^8J;pYrDuv& zN{bZzl=sQclkX&7N^qQpo-fCP7UXxt%z1W$0+V8QzqGm~#J?>95|&i{YwuDkyGR@Tlr zEvI^)UAy*v9@efpak6p3aqMwaarkk^v7528u|u(4vGuXVvFWjiv5#V7V?$%TV(ns0 zVl`tGV#Q+lVwqzv#Nx%C#Qca^jG2h}9Mc|C7gHRQ8Iu%~5OXgE850uY72_ClBStSq zJw`r8EJh%PJ%%oZECx5`G^0mb@Y?yyV23n5zztB zp3#ocR?#NWI??LUiqTThqS1oUT+z(Yw9(|zgwa^hr^uhkAIMeYJaQ5_iX24tAv=)G z$U0;tvILoj%tU@bCLv!VpCcb5?;~#`V~_}BI5HUNkMu^mBb|}k`YOdq(xFADUlRNawI8|1WAk} zL=qtJk$6a4Bn}cA{KGSbzBz4){JExQ+l^PYn7Y1^rQgeyKtK^x$`x z!SAty-{k?nF97rq0s2S)y<~xYSAm`yKwmwew<*xy8r+97xF2tDU%}x15a2#k{|~?pdB7f(z%I?eK7GJWqrhJCz-~W){Z5fsz?S5|rp&;$g22X7z}D)(<|e@Q zj$jM|z*t0sF?j;UCIyU95g4mRFlGZ_>}J6j?na+Ri2+~I1U_X4d@B_A*dyR;>A>gef$t3g zAKZ*Rj>QK)$qsx|7Wk+!@Kqn+vv+~-egHmP4}5tH`1D>J7VvLY;ODZy-_3#F2Lu0q z3g$r}m=C>RUaa0czDWq?2_Kj**TB4S1@q??m`CYgKDB{)wQ%d_Ej%#K_`rPA1oO@l z%)fXr4-3G2{0!#h?rmH!NBO~A)dq9c56s;JFo!F_T>f@v^A0AM+q__o>wvi)0OtHF zF!vik44A)rc$XN&1ThdBEJ2Kj1+gLr#Ed}@J5KJAgE%4$;)w%@D-S??DF<<8>i*t+ zLJ)T(K>V=-ap*pXM-?D0%|1AMKnCKJEQnWbAZ|Se@v8~MvCVi~5Yxm#Y;yoH?g@x> z4It)iJj4a@PXfe2XAlpcgSglV;^Y1!QV=T@LCo|6u`>n4(80%Rk8wauy#ivZ2Z*t6 zL9Fe6vit-K#9m1dgFQejP69D`@ag(fJP@PhK& z5aZVp@Iky+1aUtU#Qy@22Ns`Wft(-_!YK|X4Kz3>_v_oOT`1ZTN~u? zry!RPe>nQU405|8$njYq*Kd8K1bN>A0VXg8*x)U|2y^N9059kR-0&LU zhnWmqfF<+*rg#mo#Y`q1z!?SrZ@dAxV?K)rU=S04MUnv~S(e zc5wz6rU+n}vs^BKYy1Jesn46sBLaBG9N?aGfPZ%K82}b?1DL41;ClfMz(_^_E2RR= z^rMg-;3qeLqbiCfi|_!hG6VQ31K_Nm#jF5x`2p;ODp@X}09eccV6u|ZiBcSZ(M$nW z%LJJ1sEiZfw_t$d+RJ~GGXPxY4e%YRV!476;5`?B`>HBuD@gzjvPiuffOX?@<2>~v( z2l%wIVYYz`;8hoZTkBBEC@O$sy#StVY20dL0{Auv;M|_3gC;J3d*J~84mD!}ENlrd zacRp`3kkr;E&wZ|TGw0Y0d@`q7`nIZsErq3>S%zi$J+@2&UOTNyS`(!gAU;DK!C&h zI!`+J0WQA@@cC31DZuLP0JFDt?{u>R3=aobezXS<;Ce@Z?@_%Qy-Wb_hXdR{)Q1f? zfIZ*>_5JJpjDQ=21CB8C2?y{62f!OppEp0V03Hzq_{7)%0pJ#{fMc`{?hbMR&JhE+ z$MhF+z(afiAL;vg`t>5D1pXnGm7~uo_<__RFOQUpv z^MnEJGctw`c#s?5L!IM?52F?k({EzIYe##*#e6z)KSVKRwvs2V6BCaMmB2oPfXH0z7tQiwSUA zB;dAlKWG5YjR1W2`!+e?zCnNkkL(ZvKI{W{@xU%N;K*)(EBEf9_e24AehxVF;l3c? z(~kkK-u=k~IQD(OwKosg0q?#E`1i^o6X4>}fRoQ3(E@%R1$g?@@dd!yLjiXmKOqG? zJ^=9f;Zp*@?Y#lVA2`DXeBT}L{$B7%xWBF`0SDOm`5)W);)!41!2%y*1351b!3Ba3 z1oj`UFUc&~LvI052J)Bl(mnJiaQ?XL?`tm3yZvX41ibl6n85kD2>m8<;QYTgY@jDG zShqq2Dw)_o)shHI2~-&&!59Dj2@|Mk5(0Hgs-Pyx4pbNY44pcaq|I^R^dj0R8|D&b?;HAai1eB|R8j-)s7C8QrzwGD>UjJkJ`(2#t$p$p# z1GB9!&1URVxi89 z!G5#MzwXls*eMFsRGs&T0+laYFk%c540F(DCdMa>0}Sv00!%;5SD@!5P>C;vWe5Hq zRfsk6FZ&nyr}`#?dYG2K^p20g1vIt;{U-yhr-0sUKyy2wdouWqDWE?axC1+I56S

    RJ6EOxG&`|@!3e;9T05w-Aj0vD8 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 z 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 z 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 HDX8;*pOkNn literal 0 HcmV?d00001 diff --git a/lib/HCNetSDKCom/libHCAlarm.so b/lib/HCNetSDKCom/libHCAlarm.so new file mode 100644 index 0000000000000000000000000000000000000000..92a580054b3cd5a60aa6d363dc9fbff069d86144 GIT binary patch literal 530432 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�dR3qSNOFgtc6TwxUt8h^v0Ja_gSP$))w(|w{o1}V)m~vZXD!Hk)1-Z;h#gC6K`Cr`+?IKOZPCH3? zV;=vqKwwivDt7wBA8&YG)YyUjkR2^`Eltt9SY<_ZMNvhW&G%HH=?i(~i3GOu(#I_L zr#b?KpDIiQgE;pK3BgiGm92htP42A3o~RTxgtmap#K)#+he_d5*<)hWPbIwf4yjaJ zf!dcMMd5u>sbqvV?WN=i?P^NJ6W+X+LY?sDsFY%Kqh4}fR4T5}2B~x`{)UvaKTY9J z$^9c-^t+b53_2B;d+(f9mTyOMrs=z%FDS>?X*cD#MI^S#{n*pAsgkd9?DB>(wHIl{ z^{UuuIc?=m%M_};>G^^+I4z%6(d3TJw470|sc~LIYumW?7J4e-Pq_vN?8wEoIfdFg z>g!HA3BT7%_1zG{hwdTi*%-pF{gm31=WPz*<%(|&;lp+c|Bet| z{J!8Hh43f-E4ZieyZl`9f#4%Tc+H!le`W}e4HErJLU^~*u@HWKHjPv~Z%zm=iwNEj z!ZQvNyfuU`8!GsU5WaDn=y`t_S9)y-Z`5WeL^ z!MBF+0~P-$gl83rK4S(4?M$oESs{GfccgstLipPI1TP8Um)!LOvN{ZaHs#q5bpHf9KxOcTSEBsMii$GcMyN`U9IOKe7%-yehAMk6#HBf!rwnt+HWj`Z$41ss|n%x+Rht7 z_(tV#4dFWu5IJ2Tyhr79hwu@5O8Kq`;UA%ICATt!$27gGL--cerzeExD}H|%*M4Gc z2zT}8sSy6)XVPD+58+Q9Ao;l=g!gE?n?rcF>c1s~dx~!j;XPV!c7*WfG=IE(g7sw1 z4yh+YLU_08IUDprOBRNI#ug2(U z@k}j$l5g>qhQGteuQB`<-(vXxVdC{nx-8yfy(&%yA9rB_*WSG9)qtm z_=5&tZScno-ed3|8~lEQZ!q{;ga6XtPZ|7I248RRmkqwb;I9~bqrqP__-2Fu&fr@N z{<^`p8vIWN-(m2#4E~Y9|6*`&-(>xN*Wg18{(-@V8hoe0M;QE5gJ&B2bAyjDI2K!c zmu2w144!B3eGHy&@C<{O7<@m2#|*x|!RHwK0E5>Ue5k=23_il(tp-2N;9UmKHF&qd ziwwTP;L{Ag(%>ZqUv2PGgZCJGhQaSQc$vZ18ob=#PZ|6ygReJumBBX{e3rpC8hp0F zHyivMgKsf-ox!&nJYn!1247(Cj||>ma4#cS{~HZH#NZ1JKGfig3_il(Ee6jtc&ow3 z7`(&aSqASic%H#8GI+khFEMzD!MhC}Gx%i&pJVXL4PImLs|?;?@T(2pYVd0e-evIX z4c=|=n+?9g;CC8)rNQqv_-cbcWbht?KWy;(4gRFT*Bbl>27k)n&l!BZ!Cx@=27|w7 z@Qnt4#o(I_{+hwJ82k-`Z#DQI4Zg$RZyEd}gTHNXZ@*;y-)8V32H$S*p$31?;3EwF zk-;+!Zs#3i48DgM|7RI|AA{!^e2BsG4ZfejOANlh!D9wL(BN|nKGfhf20z%~4F*5L z;H?Hf(%@YNKic5k2LH0bR~USx!B-kQ+u*AWo@4MHgWLJn{RYoB{A&$fWbmg99yR!S zgO?b5gTbd8e51k348Gam6$am8@R-538vHDS?=bk;2LH(5a}Dn8pRE7q8hnVs7Z`k~ z!P^Z!!r)y7&oubu1|MVa>kXb|@EZ)CXYd;ho^SB48N9^cHyb==@Y@VN$KbacyvE>n z7`(yYcN)Ca;P)B4%is?gyxZW98GMDoA2;|)gMZ)Ps|~)+;5`Qak-_gb__GFIYw#Bg z{*=LgZt(R6|CPZv82r};-)QjP7<{wAe{1k92H#}xtp6|p247+D41=#U`2Gf8ZSW%u-ed41 z4Sv7Dk1_aKgO4=$QwBfT;Oh;puShvBHW)nD@NYEu1cPrjc%H$x82n6wZ#8(a!AmZG zXUNti2YBArx9H!|SM24LT>ku!pMF06$UhwBeSX|g_`eeF^W%u-m7{H2K8HJQ7|}Fx z*|w4C45F#Tx2u3`&Ts2s`aPoQCC9dvOm8QemNB<=GyN9P)XcWE zGW|NyLx`?ndK1yuGvIBDG5sRZ8ARtZ{T$Kz5uL^KI->U{I+N+giAI{eZ9|!UkZ4-^ z+~zTT57D&bxoyX10FGNjG%a;*+rsoJq7No|Bh%LsJ&fq}OfM(;5Te&Iy^QGLME5Y= zM)aXXuVi{5(X?c`t()n2L?2FcE7Nm{rp|X;4bzoGA3=1C>FGq%()qT0rVEMw646;q zPbT^(qBEJ!Ci-ZihcZ2u=wpcXm>xy+mx#3(G!U7W_ljc6NzqR zdM?pzN)zbRE%a zncn$3(Dg+3F#R6U38Ggry`AX!M0Yd&7SRicZe{v)qNxMgR>Slrq8o{hG5sRZ3yIEW z`Z=O6AUccbbwoE2oyqj$L@y$GDANxT-AuH{^gTqk5WV9gE`Oq1iQdBWDxxnWdLz@< z65U4hdZw2X-A?pcrk4@jL39t(ZA5nxy^`sLL@y?~o9TH(FCn^>>A6IA5naP{CDHUM zWLu2s=|nFhI-lu6qAwyki|NTkUrcl+)7eB{LiA9k#}a)h(H_&Ii2f?kJO0b%PjolY zTbLe3^kqbEWIBWBQeqOT^p zmFd@sUO{vX)0>FChUgg6FA{w%(fLe2NAz_>XED8w=FGqTBRZeyLZW{}bQaT-iGG^sOs2Dm{xQ)*nI22@Gemn#k0Sb6qIdj<%b)1=L~mhw z7|}l=dLz>rME^hbzCOOr@%}$)6HN(8DLP7nASg20DOygloH@2;3!3Sytmvxf=q#~p zlS-YI+>UH9539{XHnnADTUpnpnR1eKP0&qDM@Bct)7KU02s#T&fA9C_bKUp3@8sm< zlzspCzJ7g?>%N{o*XR0NpQr2bbTS^7_!!3j$oOiBzrO|Xjf}TQ{B6en#CWsBUuS$1 z;|&sjiSaJRmq`3M#=9AxFY&)J{utv`5`UcW#~BYvyp!=K7%!E0JL8)fFOv8}jQ^SO zLW$qc_+J>$lK9UUf0FTmw`Kep?_oS4@gFk&6yrS-zmf63G9H)sb&NmF_-cuNm+>u( zw;+yC{&D^liRIq)=l!xGE8;a{cJ|2hi&HN7*D&ilsFzh8abB%GH4>e5APQ#H92kks zIsxfsU$`p$dq$%1yoi%qf|Q+q1+*#nh{OsbEB;#h%BI{Ih-E+a$At@<@n1Dy9KQ)L z0I=o&l-%58*-`Tuh7NQb!>Ia?L?a}(}S#`VN zZ}!shUEu*xXJ>z5EWAAus~(K3j8$A0a>4_#@PMyY+wtSGceC+x(CJ9TsZT^=Vf-JO zfu0wvSey-{Vn~d36`Fs5L`b|fzC2#A{A|hb73GFt1Pzmdk=XQ7Aoyq@zRmT}ToET6 zk3{R^Sv4~NE^ZFRXriGw(!2YQ#ox9_?0oz`{kXJu_}R(lDXZ<>BHz8}SB7KJj)d>%vL;lC$b2w+Hd$?Bt0Mb5w@A$*wY z-txLua}hvZMUbTm^0Xkx{}3_I5jgY$hu*B3y#c4!d<_#6`M8}Q9w994Zie}G+wMOc zW0Fu9<)nv__X-wqiSLAa@J+speAOMX=(ZvZkm(BV0LoeYGh*Q#0AzG}dUt?4_MasD*$!h}Q7G413L|y@*R^>EnR;o{U5NfO$v< zWH8bdnn7f!qOu;{4S&qDFw~|5+aczy{;?$SpfJyB5Q;e`T;#3qv z%E7_-D8z^1$0TzSSjOp$#8$8srz&K>VxiEA_;(7rR@5Mw4fIhhMw;py+9UW70+^qm z?_J>rUXbVtFK564W(&C83Qmn50v)edc)1ha0c^QpgW&>KEvw(bs#imdx9|o{|2TZG z7nz`62ln)#U*Vx&0rc~e==blg-;|Y@bn3A`iZ-!aW{w9tx=81DgxAeKqLjm?QrM9(N!*(fYxxS_ONbuMmeA!v@jvfgMbOrS351Tge*z z)zE^cLg%YAIq0s7!ZawRqrM5nM27*o?!F}fU3UTXETJ9lg9g@-ozhtN6>og4yywnB zE0LxU`U(r-j6vN&a|g)Z#t~c|uNf~XUEl*(0;Aj9y4fk}p3l0dnyed3Rd?2gKVd{4 z5W%(_=R*Aza)x3wZWz?*0jNdLUPk);;WiQ=cVQ9;L>k?KWLq`ms?L2!){C$D`s&p0 zaB2ssE^CinR*zP3B?`J@){c$nKs}XEY~MJ(MfhQ=CnCvQ^14T_M_5Cwk@=-`SM9Zx zFv0mu#rYvXu^s;;I4|2apCaLGXv1ou^ZPaU8*y%HWu$2pBVFOu93X@;Pzd8T-YsF% zh9y9B2R+uTHt3)%rz7I@yc79Vq-h0nX!NYabcGEPc1D^iS4U#fMkF>S;$%l+<#`dO z463yp!&(OJDxZXK(x&jbhE3t$7i|i!8QT@6&j-O+K}2IS%-P^wC%i4vv>}d!b|R@7 z^-NfaO)I*Qm>pZeE;uVT;;(ry$1l!Msx3(6zrHsKxal^+iPdfckq6A&F=MizWHFFC zYj@ieUVBLY;j!8svHET1IiF_U6FnkUD3INsgTFZiYr|^`*2dwx&?7nSU&JvUiBVXlKJbbl&;>T>OREY_?pO zi$1$t=PGjACJLe^+X=67Qzk?cQ=D*% z8_k#Koo;luXySAyyi%j`eQRt5k+hJ-QE*dS;9^nTM1e2za;_ePL$+toUi% z6m9Q2Tv+k<`1Y~l|GdfZs_o&Jneo(TO|{*2e9U|OG_hNO3zTJbH`uKw;ye{Os-tT~ z1ZmGtTl;L+irM(O?w<#K7W#mRk^l5XI^N$q;&ewk22a=Gh&bV`%j&nz|KUeFmtKI6 zdvJ2?+Ui*4R)zGZ-~H@nt^S|BrkvfK&W`tYce*Xoq%*ZW2{3A7uRCy`OV~(i1T|2PK6V1yp7_~*hE%tlz!StOILV1`vOrD zeTY!{hVgAlEpGvm<_A7Q873is2L&BK>LkWN@vLe28I&6rE6g+Yp*{m&V)h*9N3Vz#z z1W_xIOXFEL+%h)Olmi3vc;u)~SYUB6n{Hcz@~~)wYBefhkYeG++{NVRa1Uk@(KyuF zmRPs}W;(Xw8kC06*qIFYP?VAreg#5!Y!51RBn}uK-X05Yfkx~|>?hy7P<|bW3G%&F zzVqcffo^pqc9ZW{@Qn|ceW7o7JGt*R8N%=Y7*NKHy^qOP(xdVu#;M*4kJ)6^j6;y% zG+rjY)#gm6<4kn7Y0tV#pm63-5rtEMZ{MW8R&H}R_Q?+M*w*En zg}z4e`{zq?s1Od1yP#6H=R1*tqr<)L6if)e(tjul^hTaC&~Lrbm$D<{;f@v@9WN;9 zey3nA{-03!$~y&xx#sJ+SqK@qpu3=?gPlWWsL=1lM7NbX_1oYcB_d8W99daN5%^A5 z`zlPeRj{_aCbF6U!PkQogd)8TMobr8P6j7+n6Xs2PP|}k#TYn>kiH#GNA$&UPS4YW z(L^?eXD=iXX(zr3MY6f_f|>nJkmc$}0ye~@qs$>iBCxP^9AscJ`qVxbf(rjHv>?Eu z-^7r>$K<&5aX&!^fIBUuCwPyH2^Wt6qq!PoKt6g2d@usVO$HP6DRWvln%gH)epR!0fQryupEiq?GOhX>hrOV;jqg z4vw$gUvi<=wnLt6HU|A9w@)Q*KIJ`Dx#MZ0g6rpy-R*+ul%;=ls~xM=^2}YqYROJw zu{96KW!bu8m;TwU`(>?LXf8}scP{H{!F)3#O~FaNMhcd~(@k& zZ@QLWx00if#Ia!M<9#O}E_!5zET)sRg+K$6$G=KbekNj~R(fG0`cH5hJxnq}IllH% z)A3oihLS&&=c|#1gdX|7qzx6KTC^kE9kW2qBmqPDBS8<+?pH2S$0+oPzG~^o_GFTO zLzoZr!npJ})tf7v@W#f{MISd z{?$7?ALuY*Gexm^;rswLg+6S)t?*2joGlc{kgB^0nyT4|8w5W$x+#zAEm+LOpl*y+ zZ#JKYYXcjIq|Qm=^hP@nrdv3{a#0bMi;57IAOw??!)q)9Ph+dZDVw3K&oxE9*5_*C zJhO){ah`2=zHJxbCv4ZmLUS>b+YhZ_1*q9l86(o%q5_Ko^HAUj(gbB`V8wKaD<7yp ztxcp0)_Qdto4M*`7vyL>g%hwx=J^Vl@Rx&8Y~N4}=uOl2oEI3;(-KMk;^|=JuReSM zlK_A5j+gS+U-OgvbqCmFWd1sl*gUD&T>I4kHmhGqVzXFr0DrM%(uL0GX#_nA zf4%;<|1JKCL$ch~J^uQYFY$k!zbutA=PzG{5&6q9-A^sUHa7FHgiyR~6~4@4U=rKy zW}b`CEP^w?@nzAeMwW>+@C!VDg2enhpDjZNiQrNurm{`VKK$ZZe<0Sz!yo1xA80P` zDQJEHbXi)^wi&@ARZHCfl2WK#k2Djhy7xTr@m0#l>*fad*lbPmakD2?*QSuFq}Hx^ zeiW(tEQDiZsj4J4%N3iWg4mqr!v>4qLdc-jHjrqSuQ54DskLwY>;INiUFK`uld5W8 z;{Q#l`qn=@q7Rj-xxTEp$NK!*b*Z8(eqvrf5**b&vk1J?H2sO{0I%=(dy?1x>G3*m z20=sv7KEa%7Nk);0B*PYJrsIqs6!9sT(IoOy#Ca=z~+mJ&8#3cSNO2utvafSt}InD z!q#AKaYo>iiZim|Nsq0ul!_I&Xa~Yi=oG+I%`vw?pk1Mw!+v4LP4+g85-|D|jWS^L zJdGj{=Ll>s_#pg*_`va)1I}@s6iaBI5rNLV6MSM`c+SJQ*)^kq>$6W3S+ zzW~{KH*}f1NN@~q&dWgVwN%!P~;a-#QG`_4*5`Y ztpxkvSqUG;gGm3xl2Z--Y=2o-6mLE|AUU1SBqb+1$MwAiu%8E11CmqcNzNC=w;3uq z%HJY62SETvmYo000XF|uY{mw$ndZahTZ#iDhb;pe@x3}BwJt-CWF@ZH?1|GP%f1Ld z@%YxwH5IP^-|@Yk1v9uF-!R_`TXK{n-&Dr$ z*11wejI31U3V$j*OpNG#2~V|ACz#89Z6!1d-QX9b_Uv70%Waw%r*67e;X`52k2M33 zCbyddnuVtMg{Ck31Wmh`BmgQkCI&evm5V+7;`cyPtr?tu79{zYNuXrY^pn3B&?}e0 zQ^QV^tQp)1`PDgHOeL8%SJn(*W#8I@?$ZLx)*b>{ObGj_;q6=%*bXz~tqL5@_D?1JXJ^~j%5k(*nu`DC?O10jRNr*FT&P>hOQ*v<5EZPZ;UI}bE z5Dpn5Hn2z=V8H058fAcJbF+4Ipi#ck?ojzDtW^57GOX->fRATggShUbl@mOqn<{bDJA34d}k&2}eGyMsVTfek_- z1;QXHf=8!pWjhq0xqm3+ur4TdoPy>=oP?9zy~e5&ZIqQTZjcknWhF%ED6udrA^I5` zWhF#UViboV;n9kdI-iFa<)8tFkuEETami5JrDuyZx36JnuCzxq&;X=V8i?2i5VC=k z!|FSm>dK9d>NA%2F?{(Dj_Ba*;F$ggUVqv8*(jxB`WghPePDMP)BZ?cOeg<2Ii}YO zSoDx1HOlCWwqjWx!pdbRR*t{uBF>mb;}f7QcdS1ZjnH^zy>ma)yRwL8%I>?X6-%7@ z2cR}uuz$G{RaR2z)}fLr-2%dsMKtdJR#* zW+TtR-vGf7wqNN`(^jqokCa53!mA@qRe7VeE2VR7>D+>KV-`Bu1#8R4G?tCApk~`l z2tz87iIq>nS;K;L<&zgWWs_0$;Kni@!dV#$@hZo`IMVk4j`ZomY>O^TRn1mPRxM%f z%%ZEO+fvFfZ$R+d7;jNLT zi7VJ}q$&3tbR~whxQlVZBKLEMkN`Uq?&im=Sp5!SQ?NFKE$wt$o!siiAwt|@xVWov z_Lv;I(=~4ChQ7Vf>VFj=uS5Me0rp?{$*A0ayo*f{Pm#KpFbdX!4oZ?uK9b}veNH6Y zTg5N(S$=A;nktYSN|+oVCp1NWk^`t+5vF2u?1oH&Hkrh#vASZjHw53cHN^xJiy#ma zU1AM!NvwLCISor~79Cfkl)9(ba3+T*X=(~kA1ojo*;t5+OyEq7nnv#o#OKj(db^gj zaH6IokrO$pCo&cnDw>w$jGT?*P<1)6>aAwmN6^-K9cA3rtA}9ar_wP0=z%jJk<;{C zM9F6Z68V*`qzXR|oTxV9Oly{XR2Dk~7N#9Skjg*$3W$~3KRR70zccOSH;o$w|lbM7ajORPKu zL#zy~d)RtH2K*h$#gQG$>!IAn@UuJu{wz`Mg@JpvQBKgHT-8J-HC9cuJ?)1Qz!AFb zBKa$+1YqRQy^E;?@}lAGxNfz5+|uXV;w7>3Q5JjXb(73IFl(%G`_sl%r>OSF#@U6F zY&9G@5U|nC$+rJ9hW1~mLmnjQB13a=SU-zHAPwS-RhQ}8WEBN=@AYUDu9%hJirEPM zRSnb#F3E9W&HU?88N#HlO34zgUhzw?=($-*NcRdPI#zVB(s5ShT&^z|aViti z3OL2ZcUGEKMEq6dRzaz41(D>Q6&9m;(rs&Urk1Leg5`e@s-mSlQs(JLhEN6s2bsKc z_87%Ma50qmt|;|ce+npd0Re3;AWGAd4ebxaLdEcS^3gVE48e2COHy`pq>=ZH*E<{7 zzfU?|evXh)DghDAj|6tW0uG@aOt}u3)_XfXX5R~zA85S_%shVxDAB?B z!I@`063f=l2V>|&;@H#Sw%oJ_J@M(^JSE_^{0s^Ns*cL1kJsacrC8I{wYy{$g9WxB z^J5DslruBC7Ir~A7x2EU!{q5|%M%}ALUOfNZp=vK4rjS9dgaEBRPNdjQH~ow+HOuQ zPSdAq_wPHT8^BwXY4X@`8jW4B{3M~Ht4nWK?{-+#GyZ-Y<(U;vjw@^!t?$k&xZ$@*;8l9pg>TAzY^HB^_%I?m zJH${Yz+MIz_wY;?UoOM8Q-7VC!Nhg%Y2w9hqFZ|Hpk`oMH3;S;n}MY$%^;XK?)efn z`C1xf;)OO53#s5Qn&%xU{guEx;TWEuMjzTgI7kF8>!g6deH!}03S9qp#BqSjO;*U_ zc>fMU=kf^nPlg-kj5*v4XxjZc98nR<)W@xn3y+s|cT4BZaNOWC%jv;Xy8z!l6`i?m zvUKLe&jdQN0O-2A00%&rbQfT}swcpN@#h>)`}Qp4t6*KXq^u2%#nE+~mrfKO)zg%N z%Oj>Myp61afSwIzf~SVJafe_VRwle1f&+<5v*PlL=>c4N0p7)h5BH!Q?hp)+0-O;L zs?G?mXcIxlsu$CcPfXzw(q8A7kSB7fR!>U&6 zI=cPO2MEPGrUiQWHgI=)$(K2m;(W8!_QOx{ucL5A6rY6pBT)QP#N~O#WqJ^og+5#^ zR15+XCsd{Qjb@a4_8~h04QH zMrSFOro`nz+BBOsP16M03=0imYG}ITf%BnqJXGpHeF}b~s8N5N*Bi9X@TF-N>tXG9 z#~3)1))NgGVz{hRcR+#UvJU;sxF+RLP+iucpR5@x&y%~==>4+J!DI>j99AMnBuiS? zPk-yN@s5dZKgk)iq^#NYhh zgV;9~{HQY2lhg&UIALDrnhplHdzZ+B9!a%nxrhxtrVULDHWcL7>C1>NoqiHuSB^Q$h+0sPlr>(6E&qHz%`g4`?(!IJFrh1*VHrU7n^P|so zGfl{sI8zft<``dMNE0i}e!j#C+it|Ri)OKazOFn6tKl?J242t?Y2ltiPsPFw!V97Y z$eb$Xtn=qoNzU3T?#*N8lmWL&&(SCYM(1dh0i)F#t@d-)&9D;fFYEBs9v|SWpQFJP zoHZZzup9O;?o>bASlI^S-mNF;<9d>wcBlPE`wM3s7KAuQAg&Q_dNu|(TK_Ok(w~Yi zzNjKX1ILHg&A7UwW-i(#qSXDAJ>JvKmt)ek0Vz~A1`F}gbK7)?f< z|LPcha3b)VqxiirHGp5C55Lzer86C)jSr+4qujn`fJrq>ba&2jrOw?f=0ME!CBg!W z-$_3Q11jzg29zt7h%(^#;?6Up3>f87KB5db|0$$=Kl@vE$RYXA{wao+x}C2wG!kK_ z9voQP=2Wj~#7iIYh8OR%w5b%nbpj~(;=Uq6LE9QmZF%cM+F26_*J? zT*`g8oT(VJ0fPiEz~x@-0=okvHV2fW+$3-%!=8>q3PlGg54tJqLRh~ZG>wo)k)Xsv zr}-h9$-%o841^sLC)^BbHD}pNtRM->$a(X+S#-ZaWQZ zr&Zc%&~_S9x6{gYjccF7r zc@EERh6k{wKQR7k-0G9f4%W3>0JiR8*1cj#-APhc_5)DY8tO?f)Cu^8Di(ep0Xs+5 zi&lRW@gjKDFbU<@ZAp1C%Ea0lAhIUM74d}AJQb~ibCI>2S$!V6I?bhC76sk>#g{eB zX5q-qO~_N$pMgXOG~!|oM6zSyJMlUO>nHaR=8s~zkA<~vzj_~lZJK`RkpZ3Y<6kAM z!UE4K@He?ew%og+PI{|Q0`!Ji?j!w{nNgU!F7J>PJ6Q%( zyOb*5-L(mgvI_AOta$sqdNl3VhX-i$PrPwu{kXm=89UxzJRM(Xc<3s`Sty**oOmi| z1@=v~3QrZ^3u06URDxe4j{{4YkuJl4&3=+#(2;ke?SnC!Qt~7-x~V7 zMu<2(p*So*EP%uB0p8-!|1ESq!ATfF=_KsSDkrqd7A>-HDI`zrtgcRQW(Km$F&TvE zG$+~uAkkUUad4xzepodMzdr~+qWwJW#)d-!-FO3dy8M2euBVX466g`R$LM@^PvlrT zVK3-z3hx9z*7rO@#xyH`My*hv(AbTL+0p>xjz=+CQejCs9#T>!EIXl9@cxZXShf>B zUxnp_Wjn6_))p{U`vp8@$1LhUocqNao;k&gd;0HRN2AZzYM&oFB+%#g?@RXi6i7C< z#@S}~$(=HJ>23^5R8XL9!XOf~MJu=OT|}(qgNK#b87G-$7u(VZQxCP2!bDkMB1~P% zHKkG-i$+o!VfxZx%*d}XzX996Q*d-QJ&N~_%FQY$c?$kSPeBP4E8VitH5>_RgBwuV z@@sPgdYx99N8`d<&|Le#ULw#Z6$M6Q(W>N#@VB#oLJBTiGBOvoU>MEbEtU%`G4?p!#l)gH?}6V13eMaY4dSGK+tZRmdLtMJX*Pt^U?LkTG z#nd_Q0Y;$&OmVS^gU4k0hJ!VD!@>V1QN}Oi)B!nJYpcL9^xBGnDR2}6 z^$IO>;KiIGSg1i*diO=gg602_4#8uXVGaP6!%jTsBGG^1`QPx3+6$FV?;RMR)6pX7 zy6^l83l{z(w5%Ye^bZ}u>C8R%SQZ$-x&ils>1f&>NT8>e!FRiM)CF4u@uMPGab@#e zp*$NF+HexXbo*w7E`5me2ynVW0){2JvL*wdMIZdYellQh{HtS#y1RCgyDpSRD%^3m zj|zD(6oh@^RV#0-=id<>+sIgp*1?8@92V>XmTig-q^jxCXosapd_>Jmb2E zF@4gG4pS*4M;)fa??MJ2qF#(znzXkhRW{&Rwk1-{-`1|rEXy%1;JLZ-2*L9Kr1!uhfCMNZiwXxZy~QNoWWr^HSj>`KcR_hArYF&zCZhRr$DSR966rxaN{B6t}LU3gfRwHsj4{|%-E;ujFb~%B7 zmlj4-b*9{HsufMOx=ppRscvbiRhw!Zp((UinESVbwJAh~H&v%iU1Og8vF%k0nrd;I zYGG47(o~B!)iOd;J#6YSZK@KH3#9F@AOXF5>g|Gg!+MEn5{FJU;=v@NZN!7oC=%R* z6ON08A5QK-4fl>{0MR#kM?1i#(ZQ}SBuNx%*4b*i`E zV3(bqaaFTmd8;m;^Ci6T=-sR(5X9tBL?*wzlAUI{cKYqf==2r%y$;Cs|4ayUdVk=E z_t{0ZzpQ|9ikwx^Zw!~5Vun*Z`qh-7>(x?w8swF=5vG^dp|yDlrD_3ahQs#^82!3N z88Es~qYQAqev#RM@sn8#4!bYX#B0oJzC>_hEs)s+Q!YQkvRIC|Z85jRNCU2qW%bQ~ zev8%X`hH~s;N-5$*hn_7yo`xtcSoY8ph`7mA1 zF3y5S@|3Y>WY`RJ%lQeGwnTX8X3VRdv8*u$e-eV7tO^cXwMFJ0L$N9G=^ML8rpji+ zIMJ`vDtCfeXSL8bmiLIu(IAsoAh~Qk(^c7QfN$MiQY^~mJ9`F{&Hca&FZzqJxm*C( z_dYU!nx>(NvmIVwVU&;|;5kh3uI$Ks4N=*dMK0%Sh%#Vd&b<)j+>2@p0xF6JVNmf% zVIgf}6$94&l-6YcO;ThYBI|RV51OP%l*Y16jUcqu8#S@&E#?uySoBGWO)qBpyOItZ zyklg&*zhCKhhj2xO=hSH6c}5iBD%7y!+Z=F=uaDuf|(b{#@eOkNuu4+^L3#E$l|~I zft!c9{sC4KS}y4OC3ef*%~H5txJ#PUh}m(UUd)vfq%%w{TiPV#zxZhu_LZU%g)W6; z(|dGEajcxvc=~i{0B50W!P>ffh51Zcn4v~oH{2DdI7QWl)-mLVhaZbS&ob=A~${ zgx=+EquCJ!eeqMN)xv;n&%y8KQPHHuOxw!lk0gvt3v!^+Vo83ooai;bu5)PyOzS4< zJ)Q3@<6`f~kgGC;T&m>=IbR_k0?78DN_N5bE8iD03v(eJh}c^?8G7~8n`4Y<^ZPkd zpedYTT5p2QZ@|1DX!CDIa@l&OtIdC}5H|m&!%(eh`ik6u&0p&zZT=ks7&bpE2PWyJ z6=L(*Oc~%=>jX}s5zaBkCe!qM77R7mjYggU?KY1`Aj*JIF2f?qfKeWgK$HPZT|P}+ zcca@7OdVKR3iA9M3Nm0lo}WV$fp`)?2wW5GKp6BS!1TT!ypqc6LZxiwB7ZBTHs=K9 zMEp4?Fo$m&m16?p`Wu)j!KqlbX{A_u%u|+i(ed}DP||||qo-+<0i&mD6oDYN$WjXk4#f(K!ShiH zwCqHwEKwo?BBUS~z;%-cXjrJqEhLVRdQcdNOitEgjT%b@Wkm?VpD-pjm;$#Lm@)*r}PtvN6DA8Hd#KUHGMp5S6hp<@i?<7h6K5;+dL!; zanSw^6_}Y-rhb92Z6Obi>Y&X>;Y=Mg0)~SIe;vI|W0VO~9JGv_2tL>dbPvxQT{sb* zdL6Eit$KypjQAAyFcYP3+WohT-D-3qb7MyWjcn|wZ$~qB(q2Z!PTLyA*fkJ+p+$OQ zw?xbNOw#wio8H(pX9(G1K*;tXvuS{AjosLS?`O+&djR5`)qjNRK|%hoEpk&~gSZD! zITvqgys0n?^s^PGEZt&%T8?w{kt`(kyV4$qK4Ev5y?ZBtL`~Db|51+rIP{~}(d<1S zQ{6o<)wREYsHdXeQ3D&tbiW50#61;#4C-WbDtZn&0-c=dRP>YMfzm^Y(gz;~P@3vP zsZKFylLZH=U2HM-0;=vOb~dPG?#f~sFeIi1A&w~N!c_wt4t2y}M>$XD3c5_ibw-Y5 z?L2e&a<`B}lU)ntz6n+oC)uK1__c^N=JBO$N79$r^m$CbNYb%tysVQeKu{|%gB>mM zxob*PU~oa%!sz)JFxaA)m?oV)3-U(eX9HzeLVG~7}QDp#^NJ4jG zd;s$8)K0Vosq?AKVRAZ^0Zh!MGKa~@R0c3Hm&zO_r&1ZfEXZh_cIY@=Ndd`hoC-1c zBMf{lM+f>BuP8;5#fFW!Zyv`7Ytqlp$Y^$9dl(=x56!M;u|_LQPK$-|a02kOSS2WK zr)R*IzX8xjMMVL}58I_&2*T`4nxnzWuqiQEmR`f~_f5K%U_v`0Sqs@mA!}Ws&Y)iS z7R}X&a7(oUtWa9GMM=2!ZH5~FHyYlIZSc)w3$EXL2Nj+urD8EnqS#vHGreMyIu*$} z-5Jyw>c0w%nk0cI~*(W$;XdMm#hH zjVfR`9R(N$IBJ$}s*^2o1}Z0o(4<^!Mwp%rh7IW;CQ2b&8{w|i7W_Cr27U~H-xBkC zoI}!1II?qVA$ORUk7btdLZ#C(s{uQ6Bq60zZi#I^>EzPTWo-pmBe;;hbm)|VBc z1W7GgZBydQ;-Vt524W2?1eLQN3*v2Fase~&0=0ORQii2b=BQ*1p6}xdII74Gl=!Nx zR0zOzIa_@Q9Ain)%mk<~+~{_<00zA&`8LyfrFbyRC6mL6VeXyy!c_ za~GrT$h*MU1TKYKm{h0!W!_Fb;{AT+j4ZJKzWV%o&h`NNPsepB_YMFLN9jqDdsM=B z;d&#vR(?OTftcy`C*B-)>&hdhOFiVuv{9yrPYizGRs%Ys%}% zlyfzuKbbODQ??~jzM?7rN~Yi!EeM&8Fupk0U)7X1lPU8wMO+yzbH1j$l`M0Cro4@m zboV!QK_afl~>3biaVK z`_laa@-tt$UqEj3rTYcsDqp%^K+f}}`vs)jm;V0+1VWTnKrsFkw6Ceiypt57`I@pl znR20~{5zR)k*4U)9D##3oG8Nfm^mRY(3C;cN-2z)-X6U8eMpF-4>Dc(uYd@)fUDg* z9gAQo^!C)bYBPG>RSA2XVILIE==R_=$Qp=~>h@p(aru$r^76I-E)#vYY*kA20D}Qg z0WL*XJB_BUi`*~Po(IF2hJ0c=DBgkZxqUuj6}m#C79LTNS%4{k>rJdw_((4{vwi8- z+#$WhO!K9;c;%;>$-Z!za*ya z_`w&KNA<8Wwb?W*cE>NrtO9@7@e@}DgOq1};7b%wpCk9(WTN{+j~F42p>KqAFF?Fi z>fW>?R0R(ZJT~GhVQ*ok(_X4C`0V+5V1!Ns2jXW)WQ6GHs)Rk3>~{im!oHX+U_A)J zWHdt5{v(XgUBqRU;-1dHP=>^ zQrH?@HxpP+Gc|03E2eEYV%z54C2HeK1{>w+gf=~5+m`wbgN?j#xcuE5xl4qI`-TC3 z-&}r`%l&Z~KH)U*ZxH<~C3?OI5PcRfwnWDQu02D`lV@{BS=G)*+wHOaK%A!OZLbAj z_FYbx4+vA;4S#7<_(?DpANp|Adt$eHD1er+=Ay#LOWIqz!U>QPGVqE9iAJa|yz_zg zc6dNNff<5#L-5z^>W>wzLxO0X?L%vvBGLv#3=lE+jkqLgqSGn9J>Wkqy}PFAo^y@{NJQ=PhAec7U&JK5#FZvoAMwe?Tp_Q#Vl`F0Oj;Do6E5CGQGqVb}F zwGlF=!Rz^WfALT3DyE=+lkg}M$0}G0B8_>w1QM&Oql1j#_Y`&kO)OGm0CS9Vdu6J= zNJn&KZ3%u<0Mr?QG9U|z4e$s9SN!MC2cN7xKQn?(s`X|Q~Tpz`b7g-joZ;h%QM-f%a(h0e{_ z&dqr#Ke-LM-Irpr;`x98r_t`SBx>9os*iUe21TG)*4W<{~R9yH5lYLY` zaIw>I;)0VvbS>;eoGJVPC#3w^!)2x!=i<@;Tt4PIP3Kr#_)e1_mo-VcgtTSRlS-*F zO`TTXt|;$E|}O^(|v9KoGR zb>>cpxO8}~w#>k7ncr;rVQE-IZp-{;%NwO-DIhKLD|O4_ z*S~_PD?3cT-p|imYXQYE-DtQTpPX?Vgi-U|m|2UOfrlSNUF=BKYqa%V{o2l*E8TlG z4Jm77sV!t{H`-diMJ-=zk(BlH`~uf1#PW%a!joX${k)A0FnjR4Yggk3%UYevRTWOW zG29~4pc+0SxLThPd>d2M_A@7<%T3e2{CvRT+yFf6Z*2A5i*qy4`c;@+{7^27U_yoW z%t5AZJG*%Q0@wO=r?~fuTXS28DgtUUOiE4-Z{f584|w)?(~7%^%ejinT{hq)^p|>foG3yVoXfGs0_Bm{& z(^x4StaM|_N~($EAgtOPxv)2lbeTTKqf3bJ{yop_1n6S*73osW%wB)yUtRRqR#mV^ zjm_i_!EJ3-SX2I%O!=IqJY!R0AuI-(AAvtz;d&Ai?&1CI^~%pi`AdA|?@3wSE;%M* zp(>O=$yff$l;sm1{5dE;4&@!?t!7T5*_&A1JoBc;gWdJW?s_CIzVCcicUD%ZwJR=JGQkc8tRkdY^ zxVDS~5}ImJ;L;e{WIz<~%MXk)017iqrHjIF&-Km>UKqWTD4b|4BI9*%F!kR zqQE2Uh$5(Mg}TK?sjT?Up<4OpmprvHpPJ)txGoEw@EZ%G^>1X=%GE&Fm?IbB7Zd;m z&x6WAz<%Bm=*8P5Z!C1Kvt~7cmbj?`{W4aq0VHyPIUo95c&Jwo0-^*Mv4V`Ei0+Lcr0bXPc! znLlC1yCSaVYYxSt;vX>EZeKeQvfVU&-O~Y+XwDUrh-SqDz|~J4o5D|Ax+@H&@BmVt zS>Q{B_Y?4{LIHe15bzHKa4+HY9RO@~Pu9`^$4;|2CcC4M&UUd)mF}GjnlKD`%6Be^ z!)nFhxxWTFw}%gh+m*5js;DC1qjvt6)ygF9>lb01AILG$uh@}I*t4*-?^pN|L2%h> zD?x~@wiboWtu_iIQhq8aviZveN25N#R`cFDBsVRJkXy)u0ruWAECRI$;cq2hi&98* zB!yzVKzO0|Q$@6BZq6gff$jGHVo?+e5$&hwyK|2|6(G$3O4~D3{SiQclE#5ypk@6Z zwaJ+MtM!vbcqm&DFZ}%DHgml6#JD{%$~eaBiJxzD>|aA!wB(NcUhK)N7JCfrOkd7+ zG%h`9K@B|(_7;{g+MnH1813IZfu0;8JyAxBX%jNYJg=gi*$7kt-aEr0!@|yRSmd`X zFFIRF@HBK0`SL1Y0A2ABbj3%iE6ATytghfw(JRrC=!yh%#YfN;OxTr?t@#G2?$VbU zw8)TOMWYO811N#?V)M?Ilj-ipB6yA5ht-1?>GbdsYC21X7`ei08H~`+Kr+DO8KMR> z>9JY4O}re5e*U^8fl-;Oqw=*U1EbQcj4tATwt@xym6<4H#pYnQQ$x-^?B+|iU4siP zKYs3w*F%^O5+`@OIx&79W4r`}t`R|Its_k-J{CDhv1>$3p?*e+)z8q_4a`)9%osDQ zerA-gR6paO`zGy%T>awkSuH&U^I*T0u6+U2{H9WK!e0W^EJy!RGMB5RLq097(pGQB z(&~*CFau;t55dr78$p{E5s4G>MbK{ga{!4A!cSXdNRJTcc=mJ#KFlqZu7EL0s#1&2 zf)EKe`?Y9^FHy88w^{c|CVIM*PR$2kB5`WEG1csLH{S4q=Y(*tcof~b@z$Msf{xir zVeYs8DNao#BJRdpg0mQRv}OH|?TFLtoiD=yE#I_>=eevS4c%g=O~bYOfnVe>Z2@&f z;)GO~oq9TPxORUGML{nfSltUq%;Ii;@LcSFF!W{XnXa1fxBtKZZQ=}PFN!3`+z((@!6bLSZ}TN$NQUmWZZj1!yh!&r8HZH6N@xYXeM3^m zaQm{1*!@GXs|;ed6#kgS4h-VaWVoI9f+9>U^gdW_*5m+9nEW!5%hoepY4X8Vw0csG z(B#?212oB#R@FMZr_2dG)T}#*!lt(a*f2I-=1a6}nr{~S5@FS4{0praDdgG5181{~ zJ7oNE0DcGdr}(qVxh))wd!SWC<(Mgs()Jwe4;sd?N{G`%khEHh{qN_Bcn?QD1BXFJC z0ZbhI>hd(KGqumtL4T<`FzEZBiz(Hm{xXK|_m1%z6I4q=f0?E?tCkZBEC*F5yo0#o z*vw6OPWF4jW*(5??h%DJ4TRPQRt{5=^A_}}U_R_xHf1#0seXV^PoE(rq42;IwMK< zvp{XEjWi(L-ucqk58WS+NI3D>!`HE4Qw|1{-<{}ndZ7Yxd5AzBA#x&l@|f}z+^mV3 zZ1lGm2F_n17Rt-U=>_>k>J)hp^CR(_)8eq(Wu9qc1WdOFrUfWOoKn7E6zo2Jc&p$B z@DzO~mq>WA^JrfbM6!5^mP%r-c%dX7prI3EE&w3Q2F-(Pky#DQ0*>-*glg4@E*e1@ zaXLNnB~AOr@NgT+*&~3v^PFcO3YY=eXW`_htgMgoFmhzxPz5B^GQ9UJ26+$lsWxm3 z4DuT&t->`8n%A|P*2)jU-5&$ed{!F9H<^bkUVA=Eh!Yj!nTLZT#jS_99YPQ=oGR@ti6=Nw;uVcuy~75j4(AIEv>zIRC~Pu1)!{cJRWMOcX-)V zKE$MoH@M61&))YrU=@6S_J@*G+2FpGI*J$$y~Hw9sLMkT?hu4Lf-r)x3Skw(xd`VX zoR4sX_h(-NDh0dp{_OcUgn_4OxrWm~d-rnzF!cS|&@&ju{dNauHBDdD8DNaRp@K5T zfu9A%lP}ToNCtrqdx`cK0-K`1&J6-<1TY_ngDi-GwcRdlM|_FazE>KnUvAz8XHlB| z|I4w1(L^@n5_bW&C7-7KKmKwo&-g8J>K}IZ;h;HWrJatZu5i3m4iUD;2oZKuMggyKM^Jo86y-zZ8gjF(Bt5 zL8~PsYEE4MF%1VU$=ChSF{Dxh2!HUno+{EfPnx(J` zV!>MF0%2<`D>^v7cAr>%x4Af(g=d#fbRQNjX5Jadi&buW+9;#KwFjeyvCWXvzq@@Z zc*@de+$u-K>NlH-!7BQWadm5CWmm;@T~f~E=?gWk-5MNmOkJDpNiFFb8WDm3Y;LdT-Le*RsYhrKjQKmfGhUISFC!YbQ-gx zuq7M_0hOnOIL>VeZcw+c2dRnmyj!{$_j!G#1N{xs$)oQX+#Igl7VXG(2P9BSsTA%R z32Kl)zjF~e67G|)N_yHn4PFG9;r_3}E!jn>Z^=59Mt@M@T`(-j#07y5A=I zFk7YLhMD3+u)tOnC|l1GDqRb(Fxr0BVIo~Ue+bA#c8D_ZipbQDwTS_)__DI9kb6#3 zxNxX>ga9~TY0-Yc8*;sDB;KUiO#FdY(ta_~F2bUu{bC~BVufkHnAqqg+Ak(LUZVYC zVw0C>znJ)aFVTKsv2=miRA%KCKbEyXNLjboJm^bY{3v^E?oK9=O;LA|xiOi>eH^*U zTP){+qa6s-Pew-bf&^NQg@!OaG?ZS}d8_SVBv-yfU&-&?nwFC}T;e7!v2NlLyf>kD z-=ovKvAo%%k^Lg!e&{9IFDBmNCE710-U>?Tu-Pvr-sUCRFDBmZCE710{>V$TUrb!- zCGsofk7uNq3qV3JQy4F5t~fZ+>gB^jQx6O}Hz1>sI5Vvr?F zC6=gwaSOuD`6hB?DzOB0Rk{|kvB}!lRl&yYMQK;Ml;`2`v!?mZ3>gV5!!fFCmSYZs zg%i_~{I$@0vzIS1Ur^Ea&@ed|Z=-n#5k(*aKgkaKBn&(k<8C@Z&_F}7{3y~M_$?B+ z+1_vRRybk&B4`_E8vI?}-)=@X57Sfmv2_8OK71C8#6o z&I#b&%URXX-{ox;NWS0Y9lxwT@e3sSf8dXWycLrQqIjC3Xx0W${FD#H>%m>{88Z24 zUV=A&{)~(jE*LP%nwZGu_8qV68pq!H0Q%7Fo@TI%E_Ut)#!mbDBl?~#3d>K5fDXCz zvaE`cam9LI9#nF~d8R#!=sYqV{?9|oHJlmd&Ky&);%5>UO@d1D!~nwdnq;V6lG<2m zk=h8;*A`C098G4Tb7PfjV$~0uLrYU>AITbrEHH`7gu*R&T0iA_FUV;uITN%-5!6y^ zG(qKtR_#5ff#rDI@HsYf= z(3_4x5PINFcRSS^oyvH$ek0DLRf6g$?%s5{0w^fwLbSVcX}}YwhF{@%vsbW8<#FR1 zkAWKxP^)|1ngBP(0K)y9g?ELG>boB)#Dbo=P&IUSR~Dn_5q3Cai>pVrBrD_apv+A| ztx^=hjSvAO58IrTrdU%m%b_>m%Q0!nx!|xQlpQwSTjAe77RoWj z4<5kri@0xv4|xZ|sqEDayAxE;xZC4zLi~mO_-h}fU`_CKs^bs$bb6nGP_Qrshh zDK<~nNw>&CT>c8~vJJft2Q&9Tsvo{?!HRGDB?k-HR;><@?Qf9Hu5hc64FrXm<9)am zdI)pe4(JI^}qb+ZsHa6eyrmSmNiBHxz$X~k=z#~( z?jC_*WU=`zNQ28TL; za2I6^&i88%Bftv*-rkwR8x=o{PG}=?xDCrZ6*OI6ugG$Di%vT;JiLY0jX zCbVb4Z#(g%*vi0lK0o|H6hjRttEBy3s!n8LV>1)^6>A{> zVIy++3Y%iPl%jFPW~~6k>KU-{;gXMS8|goLmaNQv3Fav)H|1mpDO4iDK=~78C|V1v zEW!74Y0c+Ue|z_JvM@IgE~AebR=;Sgb%5vw z2L|X|;_{s0a!wGJD!^BJ& zCY!lHGBI~w%f}KqL)KH;b(76{@P>>DX4-nd8prHb`4WpbUObNW17BjXCgS}EUt)#2QI#Ys0vk!;3nU*c<(9d+vdrIc9 z>n2qh%=2HvqIvr{g=n#9`n|sh@Xi*PdUu}xAY3w?=eMYH){T+tMPIPe4?Q(#&Ol-1 z9nS8D{#0GUF7F_Sqjykvsisgd;&PGVvVRblh!2;;6$97Bfs5|Hvh&ZQL^z2bISbSH zkZ=|*lm~?TVN+8g%!JoyhX}b$VD~%B%WaVXk>>(R?96xYP-z89tJKT`Ukh^?&jUjG zG*jVAe?UM`LCi2yed()hI?SrvyvaJ+g#~wNO)^t%*u0FcX+y|d>t?R4Dq}wzn>#dx zz7#WE+sZg0F;3gs4a*U?MWKO|@p$XJDx`31<^XV#yEco_Z17Yi3VWwu4RGlMI5{bV zw&WBn699}rD-`I)WD0NO0Np<&Q+R$EDVvfhXJ|@SG9{uZ-8LmwH`}}nrf>*c89ri$V#Hmco2KQDtm0JK54n|jd3#zMexcf*uvNKH7g`eQokLM|?m8jgJD(Q_P zEsx2rT@iW8ta@%R1y(r3as3FpcND94R zx%xh^EJQrsho%xdRs#?IWaT^Zla)LGyIJrE{$wR{VKi1Z$(-Y>Qryo=IexPD(@6TDU@&DI&|~`&i#rZK zIY>kbG7%jts>Mwlu&oSeuT$8syiB&m@Ae6TNJSB_G91RM$NNtfVJIO+w%w(FEaVUDWegcn9hDB%FQ*F|t!KK@ei2bPXAg0M?z}rN@P7t9U5a06l@}>a*Ig-oxzLlhIGAQ>ha;rA zvK|}bWEZR}&spe{VXYeT5ian@s$oSsbD(}P{S(qbJ4t!urStb>+@hO6Xz_lhdYgR< z53qw8-BfBbr+JxYN~XBR<&?rk`L!2%$~@VI=;;;z1hw4Jx8r!SIqxA}<-Q8ByAmy9zoZN5#vfL+7g z_#}ceeF!$+Zu4VpE%-8};AcfXd9?@lUMcv>b##E zNC|A&iGO`OeTx>}#7Usj81g{o`XUcr9^oxfcw2rPfR_t+E|fhil;n9J$c&H@`))hl zSp}rw$_|=uf|@d1t>Enn9@4qe7#B0;Qz7X7YO& zyR!96SGKwIAq?|vdcWjfD+9xPFnW(e|H3REi2>vyIIS$YAU8c805G8%JR53cB<7hP z`4S=JySm*GtD9@)Btf`~i`)j8hbG|YZw2yf3@P>%*ncEb>@&&#v?;N=`DQmCw1k(w zz`WtIB<{;mQxJNjtAPvY{AZ(+e9>4#FEZ@xj~7EoM=9qt+x2%WXC}0aTwK)}^f>7N zqKdq$?yE-d%yD)3nUK)n6p?GG=lU*_7=ZUKlklP>6RZaav5{?wsoZY*?uTN>u+6jy z#z@jgN@s+p$B^{s(1&*KZH7z=5JKgazOirsh0vziqnL6;a;T!cu0k z-*yI@uQ(KaXqtX`u=zUy!rgDv5ygHR_q5Da5IGXQD@(VyyeTEtCcOQ&yY^4Fe2}tWQ%N{Q6TayJM!#MQi5A+NR;l90JL-qR`9)LcqYK+;ywmYA)JWdM0BK z*m864ANpk*6vk}D=<0GpSC`NHEvWX&Awsq3w*>}mA<%TGHVdezYOs&0LSN`QpGt0Mi8mFA)wc$acu|;a%TE03YXbx@VB!&iGV4Go zQl~46Q6aJa0eq3`To%wDGNzdCrcnlr^27&n5y-GZ$p~}j*=^R{)I}rtdH5f@rNRQ3 z?%=mXq8$i>ZlS;|R+z;g9I#5U4+@uIzHb#U)k&W{Ne(kv#^k5B1jzAMDE6-K8X?C_ zFtDxw9)mC2Ae!$UvJiM0>WBa(klBmg3_I!54NQ4QswNMn4KIS$@}y4}68$HASjanD z@#9|u#jytoiXZ(jfa38!6z>4rz$eJ$qz}QHmqpUJM93&>LP_TKl>-cLhxQYmV+RK@ z8gSe@VJ^fyMi?B8@Dz2@dyK?R@=uhxDs(K@((R~M)Jyppbe zi;_R`68Qzb!CzrXVW3!eO;Qtwz?1GyRH|L5zhmdAy-j&?&zl1Sewyf@jlz@pq9-6exdyKYCm|eVWT-nzWmqI&ly9wImh|bgZ%q5; zexy@=FJcR=eIM=ieLo0v`x$h~UH#|rd6oUE)5?B1>ZF(b1PC-t_Fq7vU-ntZll?1* z;&F=Nm>`NL`cQl&bJ-_&^V(iAW{`bGJ=t$cDf>f~Q1tLywORyDH!+AD4+e}*&?o~& zxr2;c28@c=+$aI(w6aG(9-2t(Fz3)v^(bif+25St%i;1pwwWfGKD4dn9a$7b;$*YM zm*{PBJ?cv=((1+LeqSQAlAz^dF=FYmn9b#J4)lQmb5GPL11P#_P;}?|Ku*)-8PtEi zWK2b*U$W7$zrSBtE0G-8<@m7B?Hg!uTDmp;(X`0LtzezOPeCM`rgz;G;O;>*;tF-l z(;{os(n8Tq7&%c|)3D90#^g$j6L6*0sUXgcx}k$8w{Z}a-5f+er%?the1=BPa8(pt z_NRXiG99R7Iw=+yk45Ob9S?bO*Y04BHo`9w;-X11!mr*KfVf{0V&AQzzi20-_yT4e z;RM2j^(P%@gN$~*d6)_vO!Z3?D~L<2;_{UsE;j^8gWgRV&6yy!@P#~$Y{H42-!2&}) zouN(&FkQAOA&_0a#IjPcFu3GzOXk;jtd=ABMBw!Xi@;zC42L3s3d=fMq@W1CMzVr-veJCdl zWo40txt0}sq^rZ6dag%6dFm%eknBVNN2-N{24~Qa3aR4Y5KQU1URsDJV!k)Uir7tl%5S+ zm>k!HPum`d!WnU3FZ-(6b{axm`+N1Lz~W%V;;rQYEDrTy@s@TyzL^$t^~y``_bQ%5r_E|Uw)Vw9*x0>SR;+-W7uYF-?ER4=zY-uEuR5}+_`@)P9*4vZcnXK&P3si zMzjbVF>FM?M=V}aET#mpsPbWPZ3@dtcsip0lk1Ks(?%K5J4B(#;9(Fmn}`k74nqe| zpjBCD2-B+yaif=T92@m8Abh58YLo$;?5i}&fYEPhlmXbJ#=MF?$e{o%@7K4whXPu8 zD4B8>ur5ZX?(rsBdu_X<;J|OCv4X zNK5KQ>3qW>tICt8q$wb%0&#TF-v{>7^&7e|8W<%`mMc1w$5w_$kumrC|g@Z zTONYVDqZU=p~Ic zybTPnp5VUy`_7$1p5jfAS0hTZ(C1kr9<0%kvc_y%V>WAiKUm`jDQiHSIWD0uvc|k% zjq_91fZ~=(7!?BP1vet75M-7#A8@fIj5R!oUZ~MaZIrv`$mOOsr&QcMN0fWwj4sgV zVjKOsM!#XB3pL7(a2DncI_h$tnNc=~DD@AcY!Fc@9`^Dw_VVg%->6UrVXhRqiiZe! z-bW*|c4mE>W=Uc?gut&~Zu;2LwMCM@Hgq|k>u|r58$+VyfJ5^osWr@MX1lS#`|1*_XB2%esbHSNpQ!UKU$5 zU-f16cv*KcE9A>6RQm-AH!MdUi98`Iz~Fmh$2#y3HW|EOiv@{#a+ekL{=V}gzhFFf zN2+?g$$E{py`Ki_{VZj@t;u>f+Ip7;>s^+zULskKze>aYeL7h0gp~ETbO**DUA}MY zz4uX|fA3?9cQ{>4vK~j6?R5m}b*8MhEm`k}ww@ELcVo(W1Ic=~+InXN>z$pl-u7fY z-iarkp92CnZ5)qym=+#y2*%)LBcC3NY;M-@WVPXbO8B@Bn42KG3>^?JV4Bcn; zRU_YOwHB>5BiT^0nw%{~^8}4l-L3XPA@#K0YK6kZDU0riP+XvFI2F)V4`^J0etFk{ zx@{1xRBg0*ZS-gxqU4p%nIb-<4L3@pQ#IM`HA!`afubw8i?njvu-$T_wn;b2E~UbN z3uGhiXJ&e@vj_XS?Vq23ac`Qw`Rah<^Wpm+!SQJo=j+gMbiR16a{|85(>N9edl2?m zCu|7{>%^ufg%jqx*GXz&T`|?Y&TELvR}_~}5SMTIaJgM>fa9pK?_MXb<*G9_?mZPU z_o}X7%B?Or((?BmAGzYHM_ORi^EhzwN`%<>@fu}7lV7M&1~mEk)Jjpb;W=XYHfJy9 zT1zBs4-HQIh+aU;7mx~f=rLky3pRF&KCwjw+?~$Tq?|P zv2yRsP%FhxN=_LOwNPVZpUhC>FDd>Byp;|sCo(ZJV7xe6H!846nE~Uq*<(fpHaRn3 zyfgbxvgXLdFLl5c_G!+_wCq&@U^kBnEJK>{p6n#@#_{h4EcPnwE&Dy0%7inNWxB!4 zrJUGgNKrO*0GrzQ??6*0??O|PGiOiiERG<7V9yLm9RkXQM0o;GPBVBRNY2E}Q9CFd zY7;Vtb8tF1duPT?bHPoY{ZIPdIg!csW;A~NbMSqcZDZEc48v%~u`W;F;g}!osAyyF zAtua{Xib@ovww6G_>a+8153khAI=zFz-2j{C*syI&;Hp-2z@f^U2yVcA8-QL4itxV zBsdNbH{T3T3dixStx8n;~4&9sk z*W0cMMt6p-gWwerZYBZeZB+=+$y9rDmlBtk6_*WH1aNr+;9Xn}R15-Z#)PUSc==mm z%5cnsX%^E#gjmGNF<&MtbHMa5CoJ3R+tt|4>dLbhhY#H@5V)GhsW6uQ7%)!^9{99#1GDCRKi@MKQjWS@Aa|RR+F#rdJun>Ec(BZgqXM)xYDhzukVga@-g2G>-2k(KQ3)I9>hQ3{KM3zdtBX!5Nbo;(y+B zxgPR4jO%&A5#_o1*NgzjbM@~eyfu#<3GZ0K^Vo%M|Fq)Jb$I}XL4db7^nU@Jhd$_P zCn#n0JKk`;O{P&Df}64Arze{1iN!e>;gpWLt0hLG(dEQ%TY+eZBZK(OP2$)02vm~N z=-2oHvM!CD2A1lak3u6JXR|cI(TxC&rVxig#o^w|0yNqJ@a{OBqAd%VxJjpEy6Rsp znV2S+Wqv4BmIvXa%km(?;PRm4LVzU~VK8^J#a0=wh#fBgk%xR%fu_VUhCQZM@SyNH z&cM&n#JT1cU*cTbn|TN^i(tTMgC1SiAQqYnJHz!q8Wz%+Wg$)TN9GF7-)6vgpjd4$ zUfp*p@oSFTQ57S+1=Fy6%mxSr)-xB_%xb``u;f($CclARl&xpFZU^4phykq6N42Ku zFD(iT;650huJC4=>9u1E3xHufobpRji7n0x&eWppnP~|Z+A;iJU_F#INQJGEQ zVSS7fki(VCOMGQ8RjP)7bV94h>-PwEZMdX%$ks-!P(+=_3}s7(bb^^IiXtOB;S}x1Fr_~&dUT|O=j@w0B`q9;MHXY z?;5~s2P2Hy-)jI5&+V^FL64|uh@k%1%0$`{osqHCy^&aUgqQkoSIj8~yWmu?196Sv zRIpQy_wZA)+b_>J+bO7 z=Btnz&zl~RHF60Y^I1p-ex2@Oyl9w;&!kjiB;Pv1QwqL+5-xy1YEfA{P!V6e_=^il zGe&qj%^E|s5q5i=XZQXHJZH^;=2i_d8?wvf2asI0p6RMVmg5jX`>zfG{hOw@EC^_j zr_4w84%+^&CXE4Cf1z6wj}V5r>lN1sFe+_8hn#^%Tm?%VLggvSLv#qV`?Ai7QXC3? zS%-e66Z<}EVQ?v0x>R$9{=~qww)I$+ze_J-7rp)AL!?W8zBtgOk6uf5-Pp&YU@O=FFKh zx2jV7JFaR5{vA^_w(m@9LO>S8gqXw=J+t5Z=hnW8d@;wPtiDg=i`gYQ)F9E%1 zda8E}>M7jt9C~A^oU5~`>P>jC7+yLVVb}`Xdf9gge@WvE9=aZo>^mNrx)a%TEDo`qEfml#s88p64<}NciNAIw_+rMG3b_VQ z^L`(lDi2*4goeF?X*aFg3e?lhN*?iNNcZHQAw3I%N45K65N{Kp>YO3%rbjEwL*<+r zo&A7HZc}yJ8ek{Kc}xNWDDNhn0#xPzv=i8Z8BvBur(t4Y4QB?#niGIBP$f*pp61MB z+BFzoZsT_i$J@E6%%mov(`iN>egP~re}&jOAo`I^uP9BNUhxVb-plkP1j-T&i%E8M z;2Z5#lCjigEahG+kP|a4uSrc%RJpl5D9YWAg6)D=vBKAdq6PqvD(lWz?6G=+>;V(7 zaLL58Ly3EAVvFa{P?W>twJc(;9Yawu<>~-V=OGHlmdpZSY_TE9c+BFB{plr%2x-u7 zuw_VcxHSSyb@)WD4PSqw5#!jX|^f{fy=576boQ;6Kd&XjWf_4)2#ybK!? zS~uwFo{}#{l+|aYi$BCZCpUShul{}&rgjKu7if0A`VElfQTgh*a5#*wzL2!MsI=U9 zQG}MKq^l?`rAk2yDChwNJ+vwpV*7?#mFH`>z{Ux}5Kl_ob*Ii=^^5hW%5RNx>zTHWU-hqzN zV=q%3N(66AzlOPa*aqaW#ULa`0+QI!Zq zUhmQQq~*Ix%gq-=XlVv|M~gkr+XV^+zzk?byV7hmDLo7Y<_L(iQ)Dm<^7@JXE&??2 z-a^SZ)he>7z9M_)Wv9qym?t5zwkUU(lqk5Lgy0;;KrG<1&38j^>at;bb+wa``?f1^>qinxs5NyY`+&k&Uk(N&@Eo;9J zp=AK*9WAdaEBy9jr=A9?v{T>uJ2%!529||dwb0CWUBF%C4s(xYAN)=jt)wL}TFHV9{+)tuP#^~w0o_jj?MS;HLGWdapD z&ypjlU^UlQ450l5v2~pdc!F9R*Sv_FNCW!>Ejisxk?g#uToGgn>8}tZ>9$2ExV6UT z@|NGSR7vM0nGU1%nD#iClY(=rfz_Zp@O1s@&D-L81i$lDu$vU1byuDjY27zb7qvYP z?*_*jDuG3sx&$RCrg~E{lbgF2e`;v)Fnn>ZWdlityh8@XN+i){iwLsP8%s5ugCzBB z{C7gplADph25#I@e-u_t?d26@8k$(Ng!@u7FsW$C1O$375lhuEcW-5E!ZHdNV`l!Z z$s?Cys!O5tVc67GI4Y9ra7TZ-rdY;QO>{S!%4=H&dd>9^Ny?mUBkD-6?Jma5kH)l% z#H2-H>eg*w$nqvl?{w58J*hZ)c37#d>)1r}DvmC5O{LQGRf>a~CY$TC9VvGnCEnz)YEP9jqpb1ZltzTCXl!<;g62rZ=J6VbELH+~w zRF-4oae9Zxv0bC}4KgWR)^JXwzpO$pflfHh!;?uwLupm*z~S#MF}&>q21 zq{4F`3QJILmlvk8rW$I83?hle3Z4Y;MIo@PX7QB7X(1q09G77jiQy1yO)}&`5@g7m zqGi30J3DNQo1K+t%qtQjDC{bkTc6^<2aIlgYIhCp#}B*_`^>;AUItQvFwC1$^B62- zPHZq~sITpE+swPT&HOdlX5OXS%)9b$Gk=ZS%qLarZGH&oHuJ4jc0u3W<|o_C(Z^Zl z;ilY`3D;}R)73pv=EzT1WB+Gyd>M+scP;{2rkA(Oqph8Ruh%5)5&44e7g1i^H7RC)d;;`DOu3oHB1$LCaUtQ3UN<2 zaqE8x(Xvh2!Jl^5ChcsKO~RjcZIkx=ZL*2{N#3C63lIn&Vvx6ANj}!MsVubcJFP$f zSmy)n9S4}WHv(on^baAb1w=)!eKbN;ixSn6pD073`mR@^5Qq?US5W@#e)&xS&@u;% z`=JGTEwuQ|hZsd|17zAY3ML?bp&8I+q(w+IyQrP;ORH!muJNrhs@*QTCvhl5s={VMzLEm>OxMbj{(U z2wCLfr%<*=n++RFNV&YuA#VtiYPf&JUDS5&3u%^6b(riKMSAVOgcNTzIHcQ=(x-kE zss5h-5>mWhuSi!dD#SR_oq92}A2Ww#wDZav7Zn6qu(@i#KiKEQ29lU6e`(Sfu zh?w{QC`pWiT&EYo*pu626KXv4JdLhgU(r%kU(r4WC{C!@P;^V1Trno6R*oj;yyySP z+sod%qQ3U6ST%1IM(6V{xbBAgIs<`}+snFf$=+MIy^H`&S9uJ36fSZOAjc}?y8(nF zCeqv)KfL0-=D0H0Ez~0pb-s@K)Va&vr_0$CQ&WOX(oK zn4%PzyPvZn5^`Na_gmMc%)5AK023{Kxbtr!mFBt7tRh*wvItt7(?re(&jdPmU~^|s zA090$I5|pop}LyB80q&7rRV;gq3LP%Y5K`X|Ms&1{zvns@3!fo+)9uSgv0eJ_1Is7 zJJ{d>8svEfOcE*&)L@Zq+dgckdkt0y2b%i!;slmT##IkE*jT_yFy_G0t|`#5=1w$7 zeZ^~Iun%F(;wK%J`OFa=xa4pH%@Cpp(1sJ?xuP+;4ipqKNsHOx$xt!(k#?_T394*1 zqI}v?6*SzVXSE-aY0JoGwIAZN<+3m7ToVDEYn}&yG)Z`Vo9uK=q7$YsxRRHlFoWCXP2-vKbRQ=us1=i>a&{5TZV zuThvw(ccD*j5U*g#`+i=;L6Lj z0T9pzxB!5m4KT?sxe1jrUu4O)0g3}k|I1drF*CtWFVol~L+K|YD$ibX=il0pguce; zFMB2OtuZ}`%{r}L()*mUiW)d0irU*SN=5w;YBh|a zzLvC9D=p_oX}KNf9W6gp3cA9Inqs1g`T%roibytQMTeC7ih6U0&uUp)qRtwHqW&q6 zY70db^#efX6!ja}BQ!+umW$f-%BiJmLWx`QCblj?s^~L9iM_mu#ZegOXR2w|#_DH& z7_|DC9|o;{#z!28Q>_DWs;b4^(Bd}ca2r#qF|V}=S25U~W15jlI?4)kl<1`y+EGTn zG($Sd6PM(4lt%y<+EJ3)1yJmKbDS%7sA|@`I!0E_a#u%%EtYq6;8~C2`1HKRaws6f zyqXKldPtt@oQ*zwf%$O=PBp6OFEe+9;MAdjLoqRDNH4MzFaip0nV*JO0=>u_xq2~_ zt;x^ELIS-Q&F1tXQTuu^gk^-{8Yy>8otYqVq2L@LQ%ez*1`re zr-q`s{akEsbGWNeBl=*Y8>|{RSZ$EOs!<24#{7fT29bU26T){c0@@y*0AOf)a13`h zNb&~4?_f($>q^zqE02$i7;moewRHHM>P2qOfQ^JLskx8MPPOCRsD~Qiz07?w{UIX% z%M|pEblLnU@{}N7F2m6r?61;&Oef$MdJ^XiUHH0vOk1F@MzxQriz~DF&m32hmVYQM z&m9-3=tn@Gtx#IpgZ)W8pa46T;4~vmEuhI*+H^)yFRzxs^SK^lPGKSilRtsa=?Eo? z@rC|ROu=^wzOZUfFTuAI-%@<1;X4iA>G;A1N|fVUj&B0r1iqE{R^mG!-}(41z;^+@ z3-MiuFB;+WMG3FGCXqU+22{c0Ct8W~kmsMU;)%^i8A_$ZugZK=f8t1+{e?B5jOPRO z*F0#C^^{j+>Pf`qm)+k8+r*sI!jVG~Ef+IJHtXuoZTLm7TXKVBflH-sz5WEd{?lBW z4eu$rw(J)nt`TUtc8dN4*X%EH&29_@(EcL-6Bg5%VN3*COsD&p>@Q+E!w1@51kUk+ z_7{Qn6?T+qe-U`5pVIys@LC=N%)A1b79EAtk_33z((Lr7Ej1exC-mC z{Ao|C*Fl(UgLg^-X>k1+ZE!)-9U$RP?!`l!$IO=>6^jET3;=9S2$8T*R#{2iW=55S zqOS6z1{oC(MJ=*X;K3HeQCb@_$pH9~53KW%#PG|s`@JKTS>i_(FzSI&RK|~*#HeqE zqMB?JiZ0flD7rZS?&Jf19svL8({oDz-0B1C1K`en_Mcgx*D@Ku%yuCf+HE5EMOg?J zcK>cuC*ocFWzFQGRZv5CN|683WE>+Q`7k(EgZyBKE-?2|cH8q>1}jD}Z(YHWXlLwN z;z)$RMV&>Z>sW*=BtX!xg}ej$Q4ABi<>cB{XN*oV2fD6f+=@Du&UXv}#Z2Z+3x7i{ zk#D4gf<@izdC#uZE&|3qRI9|udCyhh7;f!lp1s-k?+VAj*()*oGUk?W%x5G0Ls>-{ zddYhR`_@_is!UZ;BjbKbbhqU z6s^Hr3bf7p_&8k=q-tmp2CMERKnnbmf&b$FHGV0M)aEY>LpsZv!q=~_kwI>oyml3^ zJaR!>pKy8Z_vHL#PwU-chwCAN)TLbhn1Up^{tbc@#q)0yq$pYn5^OhcK>XZd#Ca9V z{auZ;ueaeexdPjmT3?uqbm_83kBnG`fBHEsL*3#2F6=;cn)Ike*bOz=L&>tMt>+@~ zsJz>=K{Mnf-?99iNz3n*mV=|ToEM@6eyA8q?g9k^_zuv!Js()rY4Vq!>0q0U5r%kD zI*6~R__Zsog3RmPj&97|)`l5kJltFz!U#_Tfz!l}7LubnB9T|D1EZ&jpZJE9s@$$T7&ggw6RM|aT!9(Y`>K_?-jw}9=zkOCJJLE1? zzjlv7q=chG=bh>Y7-=UWFj+RHG?!$W7Wko9a^y;XkzCcpw~0>H9- z&Ybx_&H$)12RMq7m`o&o_U{`nA!`FW121gnK5P^5$0Bahvc@&+FF7lMU_<}0BRi~D3#A~!v5Tww{p zg9?RGCs=+S-oJbHVOK}r8pNiFe)Ds{=`o5qk9YsHoHC1+%v7TpgwV1?#Zi}$4j7Y0 zXqOTuZj=v$G};j4he6>@qkI@VKx6qq{iYhPIp8R~tOS;t#UUW1gTTYh#UY@t3+IG@ zq6_&L`mrIPXhiC`142N*o9;j$6(4q6)pom1(M`G3EtB2aDZ2AZWDh&V2Xj>-5pYI% zw41Jgcu65$C?vWURQDZ@ycZN(4U6L$TL=P?Ldumpv(3pYgt7-+z%3A9S;8C<0$LfK zWA+FE=V;0WrXU2o%Jv-yxXdOhDL-fHQ+ZS|mj!(X?=3#WaokX{cnZtV?Sv6HB4w}{ z{TCRkxM77Sqwjz~3c>Q=IY2E1Sg$Z&55Sqr0I=t+`*1-@H*xnN`xbEX%Jzp)Bo;-n zi2~b#01Gc^uIq^-iig%9{I8jbAiln03sy_Fj9X%^*G^ryyV?8U|_t3AdH=-4vrW*AO2XFMEZNn6fxFamg^;aXsH6T z1jtej70N1#y$ z!%4-_QvtcVbp^+q0LRpS0SDD?$0RE{IFsFP7RcxXcwI*m+ft>ilu>KtT>i*X71ozU zOU|(E^>5W(xytJGp9HPsE32nNKwnus76SUp>fR90S61I7Fuw{??J%+m676swc3g2# z%+(H1e!_O>JL$>O$=lT5{N3;9{sNy(_;)a*e5{^~-SyIwJ0ab!C%f)?s_U+2Xm{ma ztK7aC>^qR{2jjv$b~27h_&xTCQT5mkks)-F>E;+vH1l?h-_ZkM`vE-bal*C7UYkIV z?W9?a=(sZZ5|tdFiyUxcorn~CP)m)+`&nsv%J z2(@TuT|EzQ)`eRZdJx%-dBc#`6`vDKIj<`|3t;$#H74@+OrJv%f2Jfh?H?iW1r+B< z`~})_l&>rH0KIAWp%}V+VGTk1!rItA-bBu>HDGHuh_AHYuFibQJ5$SPIemidMR3qI z>J-~;rr;SwbNu~6HVBphP*^OBIF=>c4L<>X$>VQp zWwxo1ZsY_*)uTRmue3Bh_m4>ixkjWkC)JCRN?1h&k19SVi3K9J(l=&)89;b_9MU`= zKzM^3AioMA91{TH!e_6Yo(t)it~b~N-?&h#)SQQ&;@Y9fW~VKEVhDa$fYy??Jb+m8 z9ta?oyayG6Qj?6-J;4ky!fp{}khpY||^ZxO};l(dtPWxzeZP0vPS%b^R<5-Fz7g-3%6Q8xyIy z$=Rufo6z}Yr#c(${1@BRs&>R2AfpFe8e`R;!aDIQCxI{BdS!EZ?+9PkG@%POEMgbN zU+)LJLAs4dal+ws1gv`wRH9@&DUZuDt?r(RoT9s%1t_|EHT2?Y)O{@LuzUkZ<`J2y zLOAtKsA%TPxXn)jc;i_Bc=MVQ*@CG|JQBy_V9x@oTnp}V3uz2xQmyCNi?1S(nV z@xp?|6N^^KkH!iRBfo?m*dZ0*8&-n7+Lkp7z-{yMABZY!!Gj>$B;YA@xmVl1W(9~c z-_`gepq+qru9;o{Xf2?&mhs+Zu~G$b7YZPPZhV=g2Vb(x;EOI*XbSGL!qTPpzyLVO zyaO2&2?CG@Rm}F`M4I`Cdm@c{xy%T#mta+rJ%meTvn+jBk!Eq$iHd>ien^P$vRkfs z!V0SlJhT=qx zZVUm@nOK3z=8_N)2AFu$@x`Kf{krM@YkqUVaz4kMzW;UvVUe>&n7O+A3ygUo9P>3B za{*&khhuKCF&8oB?r_XEBxY6R0(>#dC$*EZu`X6fT>!a6A-4pOOBGVD5XzuPgDh2K zDz)2n;euu!bKoD6cX>%F1*q7|81hA`8hjHeUSc~iq?p=f+QJtE$4Is z!XsrAHT*$|z@^dUC6=HbU6f=$w6swq*DE@%vAa!Sbi8R*5JO@=>Rbv4Ijt*e5@aw?6|n_j)04AIxbEo7vBc&*2=G`8At#B0WRv1 zpho$yZuuBE&h^Z}|1ASY!?B_zcAkxKMHIuGcS77}Zm_fY)5v@q^EJf4QlIrWO$zOu z-#!+-^WjO-JHK8W>75TDwUgK_!fU#wDy3OuNW_>cH!|QmvI)Xbb%vRQZYcT(XIdUp ze1Mmm%`gfbTqi=}6q!oGIn~@G-C1BXXgRuIGxfV80?k>Kv-5_gfQtZD4RMhpTY(O9&4R>>8(H8_$VZ;@#3`N9<1c9^6My~(#TQQyv2XU;-r;11f?%{-{< z98@F`b>iAke*S7{UwCr@+L>CH8u;~KYF+&wV3AXPvW>SF z$8g!BE9M&y3ZlC81@>@hB3^=Mh%B!>O%_0X9(gTmWEELmY~xN+I43*CI;0pF`zealz$p(=sZbaB{|-y-eRgHR3wt^1*5^DcNSkot}iLZLEBH0I?XrrgGqYYcCL zvUy-vOP-rF=6)CByYjfbmLs;t*9Y-Wu-?p!?YDmXr9u2_K|FtI{*#0FEkQhgYW#r` zFH} zGK{1%Z$}Qb>*lDl(7#|Q3TcB3_J?1!>J0q7%t2mxuah>PU85RhgGfW>BY2uM2vz=XLk0E&lG;d9J4 zL-36tAMhSe&h6R(gfk7+ixC(=O4I~F8m6`bh|S>!5M+_dL_*n0H5*(k<&|&?(`M2w zjMY4$+tZQk2DUMMgxdfMsGm&tg@o&PZ%Zs7)6zffkNb?XL%!03o8p5V_B zVPodES^+xN&sNB*0pzm^dBsA!n#)Ypw^3d@=K9ceId?gA%WmP3?{dNp2HYPtO;-gG z2v5tC{jTKI`>Sxmw4f!Vy!P0AbInO3rst!GZu%tB|-t=q~0@Tof^# z5!$vvOW7Hgv?icK8m`bsoVisAM`_j$C2sx%Zkklv!mUMFdT?RP(87v?!fx{m+sg-5 zate>)rv#9j6|#p9$t3-Zdj`NdAGnMK_zt!wSLlmG5v|0r0HH z30LKI3~Sp&_inoE3-L&8y%b4#PNsA_3F6xBHO=EN{#*>Ti^jrDOALy*K-F#UI`%N{ zZ=l0+uGXzL5}?&&mVqE=YYb9jASj9hK`KE6`RRf3C}s!yKE?`B9=P5`CSJ_Pi5L>{ z16H?V)&?t~em%ai1mAQJ2vVhNQ{RZK8}&8n zCTbfz;WQUPeu&L#CScpyVgqoTU&Jnc5mZ=ahfooELY#^mGYt{X-p#O`ybJqzVGE2= z&>~j?$?e&p%?r5EiEcK?=^6;1+;VMiY6>Od1q;ZCwDcFJrg_z)K+CbNXjKiyP+WEN z9!nnoVu|Q14R5X3WJ4NA+S^WwpcO`%6paQ+efuOB+PH>pO$h|mY`KNr zzO6-fwqp!D%-jtfrz-N~QmDwMRYe{fgNlUmjL8(hEL_6L5=FXOt2TsYxr!aUN@S6V zR_eAAQ>Hx{W1oSQ3u{=Nx;;9;%IPy$!`*oIBCiPJ{9=ZsrKXRzBwPSI0<#tnna=(u z`N`}ZUO`=5!+^>fdok#~UlYy@!d( zMYoQXS28hx)~{c{%vfkzlZ4`aC>8bN*-EYTo7 zQc$HW2n9yR*J>2sfmrys>az(It7~r*i-u?pQZ)Q9c(4ZfVek+Q^21=M2Kk}s0qajp z518l9^xzHs??SbpCxBYLXB9c!2#wM8Ac%^ha|11a2M0hq&;oc!0OSxWWxMS|#JQ^v zJXC(Mrm{buHC@CvpuT^TSf0F%jsvYQp)N}U**+3=jF_gd|68U4XpRjicZ)DAXgA3V z=4TGmUj**%13wV}?VJNCspEqueXt2GNeJFJJtSAlWoVwVa+sr%G~_B*jCjeXJV8Cm zSWnIv92m;Yd*wFUsYrlB&K!`y9W0W@%>Md|z#V@>l&y8JMjyDMs);K1BHjJSdHV0V3|Bx*ly zebp5%X2wTVUy$F3x}u?7o{yC*b_PnT`LI5@=nzKlVOPxD8oQA${%(d;LK`a&?xV9= zKuoZh9*XXc@`FDb{&}x?iPRf#91mShv*LltdNHu*5<6$^@Z=%HkL>e+XGB(?@s0M? zTzk3#4v?wlhc{ccz^OuIK#an-MmbE&Aa^C9fa7fJQ5rnn20yLA6KwJDyG!xtzR}`Y z+-!4HsJJ=I>6Om`b45dVOR@LQI+8uZf(;$umdR$?*)%=|L{6f(7VTGoORQ zE;>0r4Pcx@09-A<@9Yc9Zzr|{2J^vV6vMWzlEJyK#b{dIn%NTOoz8X)jFjQ z&JtK?{u~0bUjaDDychz)t{|}3w1t4ucf1w@aWW4C@Jx;BNvg3q>V1TsZP%R$1mdKN z5Qg`m9dLCL*DK39+8kI?N+0}i>utQ(asi@Ed8m*smvvQUfsb!v0KC`-{w4rk;saj_ zfVfl2lJjx^w0prpcy|E2+)w$607XvVauLe`->97ADv2RyE-2&>9m$RF$Ie~19yb<( zbeZA5XR1#0vT6X+10D3-ftE)M#ItfaTiG)Qq6OeRK5*wC<-I;|mjJlj2bKiD2YlfE0u*zq%9>MEG%{YS@{J4~ z{$)RF21<{y=PdSPYh)ai*cg6V6Xfh`{RGJ%0WsMGM+FHQg9IF&iGPtE%AkqE4r5K6 zg*Nuh8+_z?>xq=!Vq1Ji= zci6+W<%J+(PV(@!WBxXZlarY2Vz!xp7s4hBX1VrgO`M2E>xE$BjpQ2WA};3|*j8c| z>|6t2c#dm;!xo0ekz4~(8eIdUD@j}f!?K~tXTu`628Ly7Op}RgfZa3xWjY3i#o9bN zti=IV+O8*a)~mPBACGagr3p+i*E;q}GY4w(bR(|zOmhtKp=lQ7*p$lhH&jpqS!M_K1*5ib$rE%77Ty$Uyrptc)mx!fN za6MIy?yOqLYJ=cxtWbYp2T6gs1IT26aYt}yY1D>*v@~$yk@ljwJb-5wQQ*0MW>tnu z^u&zKlmYMqA6VyrtCJrB$YE{Lb*@y{54UJMcApTZU2eqYlZ>i(ve^EF#ap+2P!P)@ z$|aIBI-qTHKqrn;$tXA;`xkJKA@h;XoCBS2xtG}_h`5P{zwC;rt(045L#<>*G*mMk zXM~RzSPYGs0sTehUg!hgb->k0o*g3}H()f=^1;XVY`oX90KZHN+TPJNs8OJXzd##p z?jf|v+|ttTPcK8HN_W&Izsw?R%utO&bzmPs^jPVHt7WjvcdT^cd-mvKT}MoEb7lUW zBu_uyaE%BonmGSC=Ar$?dJfnzIv`aun<-*)A^u4sxzo)f0MB}yaNA#YL4R4J{pEf< zfwUGhSfA`hEnb$bo&uCy%EqQ^Wu?Dd;!Ccs$pctu=7xZ_za){{lm&3N=rVx4!G$ak zf7%9QK}hIHCnF&AOqY+f4}WD?);=;Y%mK#GEZglgQGN4k>|U{qx^)rwHwT4QO|g(F zLMjQ_uA}1BF?|L27Y0MctME-6fkO(1?+jL^sj+bXVQ++$DYQQ>#1>XA)-u4#DOUBs zXCUv0jzcPJyK|S)CV)>aD~a5+!5I+vJjuM_i@WZ=6y|q@fXaN#fPN7Iat4Hylg)!6 z;AG2K)KvC`;1FTInTPR(iP7y&5#Cd$?dG&)3pJ0qI6#tVat&11(Iw3$s4z9{H($QW zqFODkDt6Z00rER*k7N~vRxCe78Fk6es6wN%nF_f1GlbK1Xsc{MsUFQ}%=}TZ%1#*B z^V*pClR(fj>pE1QfV#RYRUZj_{1R7JdreK|rz&~Gc?`IKsy`e+==TBS5g(G7tpx%& z*){5_Oob2J)d$*JaWW72d1cCvj8@iJBAqRO*dsQCaN-Y$Jw$^BoMGO8v^Wkt7GR@K z04aZNAzsTgP+?j^iJj*1T3DpHI~3)2?iTJUGPi`HmTP6efA&%HrBGC}jlxu|06*Eh z(;+;5^S1k0HxcXMp{!P+0_*LJ+9?!e9kYlsjQY?Q7+iPeBjlQ>c{LQZ%+azcV|O)x z8S4X}+b!Ifc~XJ6E`=NT=_jJv{5Em5>srxZLI(k8pH7rR#(GJLInp0t(|<8fdSC>K zAg?RPjfFhYz_Je9MqVu}jLP_^*oYv5UNoZWh8D~vJ4{9nDjk-?n5`Lv3Q`7u`FxA{ z8~-cJcw8HVh6^h9t3aVeL08#=cKvr2q}2$Q%XLQCN;S}tq)$K-LOb&E`l4jJWf4r0qb>iiZO0#5GwvQ6Y}*Ndr}`;(4}i0M;5NqV*g5F_jkJD`!$ zbcdarLvT-Wq1|D(8Bxc3ZgFgRDn48k zllSF{V0mc-R@BBa0b{u2cDN;rFj>GEgq4aSJH}#h$iC3}sV`!2s2E&ETKvlePS!Y- zaI-Gu6e1z^#9IP-?ac*#S%>D9g+(8~tN~ptdg>x979HUiB)hRfsrt2`dyxtjr7cM6 zBP({@!pJVmNUUsf%?Py-MuMTESTpJ(BdAz%Rrg21_#A-fvwX=VZbP^A;V zS=zTy+;YIo%f1|?tT8V82Qb}{bMN>@Cla}y5h$l@az14Uf5MU^&pyI5kTqO5V61)K z1#6J$luCK$5qr1yV9-n6h0G9L&KR*QU5KCD64=#|JPA2;C$|k~{@|46cnByqJim=M z_}-3H?`^UF0Ql^RGf!_OfJOE^qg9bKbqfKS)V-t!&YTaUr5hFx_ zIqG67qn*}YfbPIqYG)(2pkn@4zaAS~=VE{PI(W=SZm`_7sgtJRzOZRH#y%b2=`0b* zPgCTd<;N>8Kx=aQN#07O-L{NQobn}6c+YE&bSO}Fj)W^Ki6>P#pCMo;6pF=Q(8|M<2Vq7Phk4IRIxU z%A|pP_V4HV$%Qol7MM3eK=xTw!0)O4yRHPfp6WmCisCr_n)?F`8Fpf;5g`h)z=-e2 zA|ORNX?Jf)iWbA-uc$fP>9)a4)OD;bO#M|DB?`NEHkchgBhEKQtq=kjMd#ZFbMEIu zx{sbVgVD0bjuZCNhiggvOa5dFZs>7UtfP#p?g=H3t(V*dzcq{V)7z>8t9e|j6(r{-e+Ai#d&;-ARoQyemu6PxBsR91lkBFUp=Yckibzq`bTpqKi!hH zV}8m%VWWR_RzUgvNa`rhUO6htUmAh(O(fP){(Z=xQ2soiLn)tc{#)vqH5Z*7a2jXt zpCcc8+wqU7u_^WrkvxFZAo<7%W40?=HIE!TD7F>M#4*Z32_Tf}Soe0Z24Xntx$d1Q ziFEw9kH(>8W=}0noinvCHEHUs)Vs4%SmD^=`7PsOtuIlbr_0{L@3k1>UQMSQ+zM&gB#F1(o86GaQGn{R?Q5VG102P~fVB>X0c`N*ZcG(S zJuUSDCcEf2N8p8%))TegJo>jtzc~SVrEj15itaH*s~aYx9f9bCitfb|abI##(XD&) zp3d6WFgdvog-~1}80MJIg$yS39%#hfXR>283_^}^2N6FpSnb({0sg{Y-@$SxRl?i# z7YFVNbY(ZmM^c(5kb=xii@M2&H+j|9_Qa}+(1nsHzQ;WOB|8fzK1a~yr@Z|W)%_Dr@=--ZZ6!_M9 zneyt6w?Qnh!%{LYw0se9JUfnITzJCx5&U;&m=jnbZ(b5dZ0jp}F!7MMMtn0EDLH4QgYP%2sW-3jiqu%_Vk!aD9trho z?=q$6Dl>mj5*t_aJ)XJ)gZpCz<6?b>BXUh4(wZw~^BT(b`W`&Nq#k4@+P`=w@elWx z;0Je)r{^{C1QS@6g)xhasKM;1#1O;XoBYg@;c%AJ%JhVk@uYwyedXGQe@Hk+fkiQq z$VDoV@?pE}$ZDnTR&X0X<`+OJZTcRyzBCXdl5F)`w!VL%omKH&O7l}ek~P;sd$^{B zWG*MYy_49ko=tJ&$t+GKa~!GDhwRNkCyfmWsGpZR3OR&BPR(YO8}Yv1U?QJYEwqjoWy-~us8ur=< zHalWu0`)zn0&$o~F~`tRv5+bvC8Kj9wNysgRGRs(NUaphs829w%_HDJh~Zmc%kr<6 zXWLANP4wk*lxc=&-SB?%9{uy~DyrLtRJbd1HrKr`C` zH|Ga9`o4z5XZR&nA$xpA7+;~{D;3!EtuG>eZ~oS;-8!mxU<7bq2DsS@T0tMU5EBL1 z1qBFIf&RFXd`%$$m$_NU{y^xxfI?qF0s41N(Q`s87X7nSWPasTe9Y%5Rgjf^&>dWr z>|6zjW4*`2tzeF}iMnSnF~z0FJVbTq&3tNCkhchMpY!3|@6%21#mkXMnO}8~GXG)C zeH(Khz{-iCEhX~2ytxT-mT==n^@={s)#})HK&80@tuH!O8o(lu@v8X4nH)Im$7W=blGq4J9N{;KiRan zRuAZV-w`f{Hqv9IE~$v%g=z<)P9oCfwX)lzh*nBRtr*M-NyJBzbfX=*d=*c&4|>f+ zC%;;n@XH)Ioor+-2Ei5yC3Is`g87a_PvzcJnHFcLSI7@+)@1gQ<83%AJE2^DFZl#w zvAhWZk<13Yz`+CftqAB!Pc>WmX3K37YGt0`_*uf_d(7#RAAu-ERL$0BaFwF-Du z3p9uTph}sW00U7tBmsfKR+t#}G7t&(yd%Da@n*4BbfBYr45E>W2AF)QBN#5Q-|_gu z(^$VAr>_Og!VsD-V(5a#qS0Nn z)>|v(3y!RG6oiqhtqFH(wsL=}3ixvNwQNNX^WaN5!5hN_iF5-Kqn{Or0xX)57z_P3ug6Z$uLD}g-9?V_J;#iVnekvz3LCN%Q{xaerzT?w>uKfmC&1m- z2gsFl*=>J{aJm@n zULmu!-U+a+AffH3?Et>;>d?@HlE9#cn@F31(>!pjs6zI7ETPQn^iMi`5c}ubzO)r^_K3 zFkj#}#ISF6!d})E=AZ{qAm0I&p?SZaC+}~t5mg3EKkvM}c~8uf_rHeZ-D7CpRP|<( zgcHu@6^MJni*GK>sY1oz6)) z-3V {f6PebFu7kj`FVvU0yGfD(`GUt5rsi^=vT9V8%H;v<5Dmz1HCDr7$e=*gH# z5O@h^C4sdGK@{Des=?pI=HS*o4(jQ$PyQZ)2J-ACgtw2OpkdqWSe%4H6IGkAgV%a7 zXAW!!Juwcg>Ym0(Wz?LB&{fn>fV!El9B#FPPlFw@|41^%#)XUr@jGdm@hDBPWiOdelRPs z6k^{R%^)7uXboU6SorZ#6gAw-NbVp>;)fb?uVN6*Rx~#5LLpkBpX5V)S;XdUSs|IK zlO~B$#S9|Wls%OfEuy;I{1!FRj&upw*}9pXJ6*Qv)kw7;04nt)^c{)v<>ew2Bafz3 z0lV-+pjIPuht(9QoPktzKNvCKEhC3TKYji%kk#SU_Dlau{ni-B6MR-v;Lvp1in`5e zDRvYXp?%l0$)G2wGw|pvjMCt;dfDhwphvE;1;uNoe-wq8R?xQ9JS!K=jW&01Y?m9& zi|%c&zj_Ny-=c=E1D6mHr*4J0W~UA`?EU>dBIBf)e@vZ~lO1G`FDIX4YY^;C}V zPM`=&TMhl}sg;ZHNiDsKf%-NEWY^e2{NP{jI%%;6Mz94k&@9^LzC>cuZAnCg+U2u^ zdP|wyYamiuDh({kwUnTe-Qbc6M!d?U5TZMtHNEs%Q~602vy#PNIzvR}Sx(IG8WBNp zuJt9-OC?_C3UpwYucG^88(0g_kLd`1xt>(lFBd(f+UBDRq*k88j*wcK;HSQgpIG(r zUIW3Z0%~7@3iz68zCXMi(ct$<$DhqS`0L$Qh>#M}Hw7 z(`^G=A`{bZBemAPv0*c!urCV#PFO(9@)NU;LU3Fvpd6?6G2@}Z&`?b5NZ>GO?w!h( zAd8R+Ex}(wOEhsLO|>mlQWoJ8BD_EeClrJ;O)KdzM+=}qGFi0)M|_*)o{mDyCs3x? zw*H9HQy}FeIH69rRYI~`n~+i)=q{Kqgd(yvhJ*^el~AvNSv-}+sRu(z(>15SWH)LA z8*m;N!@Swpk*A$KD_dSrdD@W`+4920mtRwrEuVDcHP_-(eB~8aUYaeRd~wy4*JjJ7 zTyx|N)!FjBFS+5;>$Bx0S6*^CGE8NL4m>p0+W^w)Y6m-yip3Ux3O{~@A2*g-5;2Xa zg%l*xyDpJW+5PxPZOyMia^D&M5;+%N1#&LGzUpj{Q+5627heH-u7<9TU%O>8S_ltU zY9--lpAYW2kaNB@Oa}vm2>9RH7zn%IQVk23NBIV1nOqirs-uBzLR}$Ejh z$mbgid$0j{E(;j*R<172Pr$bwr+6-vsWoZ(tC@jek|!@x7@Rs1aWq7tC}y6cJyUHWbtUGmZ(_U zA%km)GNmY=eKDdHZ+9r)$Hu|lIuK%g(S0?7Wtk|3#m-{3#HRL!1Iik-|4rme75Oz$ z@cN-taK)93H+5p1)HxnrZ4#Hd5_UB(AcFR0 zqWy%T-JWPEEviPJJH%G$(?HvIg?SFeh~LUbV8!$X;y6ZeWPcUG(Fh#oyU6H^Dc(Uq zT}4da0bbG*h-u#(u7n@~ECi}5)40EHYRdEBNc$MzB(kqWFbUTlu$X+VE@>0Pf^}tj ztnur;4%U@XJvWyRe}+0}l{+xgW#d?fvB;);*nsg)iV`tCp3Gnu8dNbp%&$a9a(xa_ zMLb5-^OZd-o{ylu5~!sR-~JEH7GDDep#`<&2ny9Lj4-e7O{&N|2BFT~yfGxhjvZB} zASL=jJ5IaKGu|CU<*ymeBzecGT{R&}-ZKYrLb-|D?sYHUW<_ub0uPL-kbxxPrQoV6 z%X4mlqQ(yZF=MC=;4YslU+Xfh;t@qN?2P^oP$Vx&Wk6B6va`H*o&-c$h zKOZAP`Pyy1{S;3N!{!9=%NE11pFF>u#L2qrm34o3HX_FN9q7vm4)gf3JPjJS+dOqN zsQ3L;@F8wwLA|nqMHTg)ja_bd>P(IIOokA0N6K%cQC|rEp`cy?GhK5_TkF^C3>C z(nX11V~du2sJ~)W@!qk}6(}LpuGNP#48cL76Dl@cPlu0j_wVinu1ke65@odE!)bMl zvLXV$^*#b55p+fMbk*0@ZrZx_$XL;B-?s4~v2x8!?B*ONr-3wiwVTX7dFcp{xZ}7` z7&uRN3#&pZTmn*NuZt(l3Z|?0AX0}a&Y*c{&v3<6a#?Yg)>T|$h@OXwwBj~NQT_b@ zNyXQWE4s}tU4)AF9mK?8&fnLUZ-)8Dicif;M^J~VS)wIbX_jj%?WpQI5aq{WJ!5X% zlgM6%m{Gd>CNcE14I$5SYq`Zz%m{G>Kew=?SJpyi`aH&qp~PnH$;4Y1y*b8bcDD)cuT{Nw4Ivp*y=v zcH=JTrISUQ3&zF_-SU`N2-$WfLJQ_yptWGHg>w<}>nY>`y0E6j!=m|eR-d8ue2Nrl zQm33bO1=bb-1-VDoi4j28&UNqLx4k^c|5>wCqsVGZo-t^l1RNE1MB-g_RAuzeEqXQ zTOhM6s0bQgXqJimmiL$2JXonf9{h(2uM|GicVGyWYU*TI7xN!QmD~)$Zk7K%ge*jJ zTxb>%Fq^3qyyHplR+6Ou8y;gHvFp7glGGUVDbn8D4GC zv;!EA9JRO>z&0?KQA=dyQ&Mg13efeP?o!Ffu#}w0F(Rfvht~T@TW`Ztk-?z>!=mCM zBRwH9=o`gkOiDINp>I$iA+5#uw4#$)X&pyXr(R?@R()n7tw(U`+b_$;7R|l#YPcFo zW|o|Zse0kOIUVH_af$v?VgPTr{|XxrAfprhf*J7_q*1njeE#)5EqYtF_Ik|=ILXx< zt$^cX4v){HXY11LWnclR^O8)Mk{xV0DqUk?2f-slHqT2|8b?`XS#3auna(`BbT zgUyCZsm>wK;xRn&Um?3-3^rwr>7~95aDVVLa32@O4a?FV7yB4I72IR{a4Ci(`avS@ z;XvVtKK@@uJWjWmgK%^#ijvx1v(Dk(-b!iswr+sYwYuc9w3DB7TMs^=9`-}1B=j(* z(H_QlD1;Gun56IoyY{gEfeJE%XrF9DJ96`{cXffZIt%5jKmtO~h|44mOwy6ug7lEc z22!QnF1-k0DN^-rg6<1ZrCP}h4MpUT5Nr~Lz~qKo6dWL`Zy%Ft*bKbr!r_WY7k=FU zZi`*U-fr&Lk^Omtc?PWp|4c>d59$(s3*%Jl!(?;1?D_Uc@Ba3b2qPYr{u!!@bVz9v z*LfpUhXx|8jH_Bu2W|!{7>kj?(V9^eCU{brLDpIJgYUvFW3e|2PYAvSI*QB@x7KHK z_`qc=^U|Nupf95yTG_d*>@T#kf52*T$Ww6N?vcv2h`z(k_vx~ek;!}-Y^xu@I$8A| zLec$2E{t>Z9cTqPN6#NTN6#-eJ&HoiU6}^uz*<18zXN61v~jGUY~KO3(PIm(MI^qc z7yzD|cyK2>+LDirnU4_J%Tb-#fU2_tsO|`(s?J5V0ptp*^Yfre2dI`1)v1E2Xi2re zv4C#n9)lA~mQu|wxg}g;OK8P`b0jI7O-#Q;D%U<=wbYg|ViUMc2JJjT5zUiw_^}lt z%u2M93>5Jp25Ixv^F)i`JPp<8`LiwvYu29a!741A!B>|^t*n&K z(gZ*0wsK$!Y1UKO`|8`6Ml~zrN7k&80t;oxqMCIsCVJ)`2w%3L96-^mUqd^h-YnGD ztU}Monw3dZvtn#+AXQ<_%2?H`Zx66)w5tVa%Bdd-4b`jxBGIhpu#V}a;fjc6UGgWu zZLz9Zr%zDLx@dA#v(`KbWh0OMrpu~+5m7c};An^u*Fje~oN71G)R8vvHEWpakY-h| zt6ETpux1sg)2z(kG;7-e1WY0OnXQparDZpZNrqKOCVK(O)`=^1ZJ09@YxCtlBGp$= zGu5>(tVi`_Mwc$DZjDs`7@!JO{|aP>qk^^zzcS~+x7~(2`E}80Su~=ME9k?DjG=d4#$DuK7l*Nanpi#TY_V$R800f+3t29o%xWt~W~auEWZeB42MtsKX3Jp0AJjnnLIdrL zHqx#F-0)>e35v*SmA_&5HeV1#7!u{?vDzf`r>S&+ryAxmIj0Qj@DTd|hlHf?21X{lxY1AoAus+X1X2x^ z_+7L*{#yiaImJ0lmu@>3pDmBWO{oh4bScC)Y2GALc=6XY)Trq*Os`#x(&cwCFaEBk zYu8+T8tT;08yf1;(C;Itz>IcUa-FiBeiBtJWQMi6S#Cf6M>=_PcX&5I1+rYU4aZV7Nn}C!3 z8~a3Q+``JFxK};>?|ljPMAgVv8`Mnwxfc)HpZC! zX)M|3H(;Q7Vu-*vq9r88k=s=@)Sr`D%84m*7gKLDe2c)j z3gj^s>nUjmt!ml+9SCJy;ScIderbc>iX=F9!u`Y85Tm4jZ6H{MrGt)c7jxpv5yIdK zLU-5%C8BjLht}Y|)ZE1E_8ul(Yo`m8z7oD!0I@LjCeq_S`6qc!>s+<)-LsdC0fWjw>>?poLw}M2R zF9aVT!?=JgUR?A+t2OG_!nDx(^*H#OUEYLbiD^sTVhKhZWKq`+u}jk`ctq^Ox&prk z5jN-j^CN51Jpend_3Nx&y6lI|5u5H3=v5~uyZt7@-5-pij?%-WGS1r<^%(}Dd7Ju| zMS=V6xqM@!M1A?!c7YAxnCz97a4N&F>mT7jz@g*TUyox+l04Yn+IM*b1SBySEKxTt zC#L2SbOI~}ta}{1`o8k2`jH5)j)7I<+Nkrhw3dYHmxu2^=2fn;6ChoEAW zEaZA*gb>^Xr%=d=av=)oogmFk+Bj-a4F8HRuT`r)4vuIOD_ZiV05-*{A+2UL*ZzQzH1U`2 z%YRz;e7iklSmBMweuKqcJ^q8O&|^_gylkUeMLxOpqpf{AgWX+#cA0y|V&}<^{{9h5 z#iRDJ-&D>|VM+Q?EZ+7Vq)B;E!jJ^tK?2^PphsR4aZaO<9K$!f0~f23GPP% z$<1|VkjX_;EdM`8&K(>n)kXb`+;Mj{Jcd9ERTT_!9%mXb>kAMa+T9f9$lJdjmLq#X z_k=id`xtQK`+v*Jk){u}!I7JhU|5bkx@8+2`3@4~;Ycg$H4I1YWtAOA?n8ir5^$t> z-0&QE?Zsg^GJ#DO$jH}VB%21<&Ur-OTR1kJ+sY9kx*7?FDsd!lPfh|K8%utQ9t%QLF&K4~;ap9`!cGz}H3|1bduT51 zW7Tx?26&asEh_-fRuT_({wXQT7NbF{!%#Q!@lVnA;MaD3NSr1%l*on;ks%|ujqy)2 zKA`~{;wZ>JjdT02lsxg;pjJe#wVDn7XiBs{bCTqP|vU{eMZS z-j*IJA|8?(h*3{8_9uD$1@|E;Wnq`peOX)FGn1 z1Cjb-pNf=IWLb#ZzekK}sj)@F1Y$(?Q!}Zm+LrbSD+;s|@;P0UqkR%1I`LUdSatn7 zb=5L!FhOxf#pvHIRj`RJq+P@zN0h-nR0gRFjp(XytmvwG-bS?te`lc(LMK7Xd42&qQE|~{cWUlN-;EXT&uUSrtXI9soC|deQPc&Q zZvp{|dnS_NvG-UTobH#q@Of2dI|~Y~>U>p_m)#{F+;Z`x*aa2ski>Rm)ah&0uDApn zb4yHWF}J)26O>fNW?s{|naEJ+yhx!p<5*qz&ZS{%vu`9@BRXDgZMJlT>-(lO*$B1S zL2L88w(_e{uly;Cq}WfZ z(Tzsw*85Yt$j6{jPLbqgk(QF&Q`mEMv;RE=6S4?<KLcM`lZ+C%0*#)HaqYzQ-8TDUTvR%Ur5#kbzEVj_3*u$RdE zDrk_ElDurOeDD^<-5ew20w}y6;`b7~nl-mG+*4`_qjfqWQtJG-Y{R%Z6{Ak@B*Pg} zK7}U^=t96VN>j`c6d3%*sYzNJPV?0D(-h!l1OOB1+UC{-!aDJI79F2!zn~yn@fbf$ zU)RCE(#lptaJ+kOBs;;xRqAh#xbFImDR8`zIIR$FTMJ4=W|mIz!&zJW3VD1Mf)Nn(Y9}l`sC3JVps!n_POJ#el7 zY@l}vXuywUyha!~B*E>H;lgFT51=rXj;r$v;FC$L0i|2lwoC%j`HHkzkv5yLt%9^! zkUq(L7OCU`+GbN`(e~l!3;IOI+a&V|ulk9#yaL8-rx@|34asabXa0(&hbZEKzAA?f z$tBjHPhg~4CPove$DPLyP>|C*T=W2Zao;5c>9XtbJLGA6AEKmtv5!OHX33x7tJu?F zHq{6cr64Oszd`A^jX*9=c2Zixp6A*D&7qe)VX#~Vfx(&6I^2!`Nm-18cbhpwl}=r( zY#i{trB>E4oLmP@;zUyNAgSaL(csm6u4Ks*+>4`6CyfQkKGtbMTMAc^Vc^8OL~Jb7 z1%o+W#={L|<}#(xf2#;*1tpIiYhAVES(<@d1US-X4h$g>y8Ih05?*|9JM>P}LupEQ z8k}5o{=P9-#T7RXq?!}$P}G~segHB1{t;RVBW=j>^;eXg-^Pt^Sv$1k2XPWNg8nu( zHl2_|OTH>x@{ueV1qUv-+TlySB~QtR=a#&~@Fl`0b+!Fl zu_@<9SXKR!$t(LG6tuPk$;?NP8MIplqirTuRgU_$A}y%EP5N(O5dzJeLHsf<>sBNo zSNOk7=|qZqRqFs&n>3%Jity$k`8;&<_z&7x8T{m{;0vF?(r9EqdVQYJ}W|fPTf5P8>X?NSyJlyZ$|N0Fz?zS1fUk{PAMSl`WOEGV_ zvqvTEd91)VNjnp&Hb>I_K_t#4vIZjKBrSR;EVk@JLVW#JEEWQ9h~X7zxHkm)RlB&{ z5y)qwOda}~)0y@@8Quhzn%e{E8HiOKD0?SvUc48#WL(-QnCjPmIzS^Q2;|aC`auEj zxgu4ZgHci8B<);~v96Q7fL9gfycl&7=$!>QIcW;MQ}D&uF$=A9QYpTr_)f!j8otx< zo$l9i5o)<2RlPhluc^Ma3CmuxO6zvA4YSb=U8)P@qH)ziz;{r>X*^VbVIInSvPSm^ z*q$)-YPXmos17JauXed9ke{2@8mtbQziuKN??cSR{uG=EjMk2L>)TO7Y_w>S<){^K zXBd`&fkL-ZmZ^y%?(xrnlPf&AIuJeHUpL$N9*ou3(Y>24I|jc)WA&-XovpZw8Iz-67-q}cO&*h_?npp_GqWSS{x8Y8HU35A=>+W%=E(~sODXW)|hJ|Ql zD>632GW%_^-xd5Knv6s8403n66Q=)ZeERh>z)$Z>_y=Qqs-h|3*1995eK{l=hasUZzFu_~q~VZ5NN!mveut#tI5bz^ z&F*C*jCsbkT1Lbak7f0rP+_Vr`3xFQTc?RTN(twFX#TFzwT-xHgaI5sax;_f9| z_>|yhN$|7OC&^Emj>om4%z>g9fohX@>p8Fr3W|xidtbpna*qn>0|;M%V~&65t|AD>E1Tk*aMFbIKDcHdAH>Q<5lu zxz9rchL*d4<=&*_-V`l24K*5)nJti+*N&^$Qgq8+s9QbG&{my*wimVJt)!wz*gm)s zvg}I2Y|$x0{pO^(!Fzf4F-S@Vct%|2w5b%9t{jK?qQ= zAV?XC#iC8Hf#46MK*55b1u7IptkMDwg_QP6<0V>zXcd9VAVnFf5J)cs0s<*>LBuKu zL5rMFh6q)HRQi6tYwa^7H)+c6|Gv-j{_{M!=bU}^UVF`Z?eWk*ov!#Pcdplu)He4y z*X!HX?3X{+>w8is2Q{d3y_7$?;AN^|jibeH8XTl0L@BceeXUs*BiP?5Uzg*w{!g9q zb>9L6dhp(|j4{9YX-<*ufp|Z{3Z{ic)J?rl`T7D%g&@NzUyJC`^3BO^BQJZ(*RxL# z(drgkh?G0!>mt=(>-B#;U;iQb`mdAd7_lJ6${d#UCo#0CrOzo}ut@Ukb;{RGI##hroM}6)1qE*%BsINPg$9$5i#z%eG`2w?FA1*D)?RWL{k&R6~Flj=( zE3Nlp$qGYMYmNNdb+o9ObgGznk?-H0Zn$jP2**l0I``ga&PneBV@!5IW$oFgvUT=b zUq9j;7F3?`jp|QxN*DWRk7pz8@barGe+?5k2n{Su1Fkgkw7PSgZ6f~GhI88VR59~A zVUM&e{Y=7~Ers339J{0Q*i8Yu`!pLC{R$WDdl|#0Hw?6Y+AV3#Y*p92ggzC~HaVQ+ z7=)j5UUx}ESslmCM8ZXa;c(JSZR^mQii#z}Cje_Q`D4%XamG-t{Rs&Fl_jni!_`;h z*m+y0;<5-Cn3J>CpVJYNxU5>y9DDw)2hh^ZrLp;Ssh0iHEGY>?QHI*q-G#ywkdFQc zIWY?Rfx;g~pXuIwzn0aZZ?jgIq7}m@;t@z6_a1RG~n01GQujl^fSc!jpf3P3kFV zmEO#Qqc1%hFZ`UOir@2!C+90Z%cPTtaI|2l3k4Vg&h!ieCx{h|<6-bxMI?7WuX4|B+0Jq&fft~_rpS5aw#=vLrHoXjqU*rae}psUMM={4`kJZ+}yv! zdXG5puVUYaw7Zei<#u-pK(coC(&Y$krVH)5`8jR51DrDoK!a7r?v8#wwma1^Si9Sf zQnB3~C3>6U*srhMz5l_0c6TqTH5j{lj$`yP)I8eD?$|<5n21jFV}IG#gS5kcT?S__ zbIu;|qa0^Xg8V_-;Yag`Z!W~K!^5z<)DBOIo?8~%;p3|K8n1ZS4|5g2j7q7a7WbL5 z-U&y}ep7auXSj6z{|$!fg2fknRbfx?1z+-1ITd|KEcFFg`_SW~;3?X(R^P#3QPwH+ zlg+Cr?;M_%(E2!sjm>4WWSxVIDcW*XALmf>lne*wa3-yl3ktC%&cSC7IEiPSTIJoS z%)P^S#GmyJ+u;#PTe~V1F3qXZPb~UNT>8Np66w<_??+?dt+MJE*gH%|*SuAJUoCNH zmG>3F19*o^m@Wom3$V+y$_r8W!FY#OPPfbG{nzky+2&W~FD=n^O7IfGw^u7&F54iz z#RhnY(tghA9f~LJ7m4ZqQ_%z@gg3g^ck=C+8^X9z8yIX z=q)bJS2jkK{V$t!akW>o?nxiESx*2C)U1apJSdQ$@fKglTc|})2y&{6-@Jv=26O|V z#$Mh+4ng{%Ag?j_l~AoilwP69a~mq)08`1K>KU$aR<+Xlt2)-bJnVsdR{0WMaUb_3 zRHH4VMSa}Yk=}r3-Pdkddo+pjmwLrEvmcdZUCw=lzGJr{4L;VW*+jlF&!w?> zM}CX;i^KMLM$1s!dTbrui~5)i;M~Ei_xdaztF)5+taNKSF3G9(a&Yb_i~y+qx;_xk zo7&ppZ)WG-xz8w*5>*H9N0UDj)E&ore3MdfS3jL{e0R6@b9R0n~@2w|J-FzP{) zVJAAf%~@mQy$j7`#C~ji=u-ThPEupxLF(@)JkGC(q)Q=$LVez)c%S-GVpbkl@B7#d zTa}46dL#wTNK;I0h^LCMt`!SB@2cnUYdgRBG;5gP>DA(KkfgQTXGLY3f*+a=-s-S}v5lNZ$yRJ$gshlC;FrL1PSl`Ji50}hadoTDJ=foOuEzE4 zJmgjfzv;fX;?h&jw~Y%qzU_$ZIFPs($AQ$tsI(VW){A=yKBQQ!JS?y59XbJlRvC#gt;{q?3*N%Np>Z={&QR2a9#}_!VG?hcw|57`io(JC+ zIN#p5ILEgSzuvTTL zZC&qJd`HhlNacQbl+}(eipmP7a)UgTBTVqq0AR+p%A?PP*jdJZ-%gOzQBb1lKsy@9 zUz)#h>;f+5Jz8McFee%&wTMz}&?q1n-2(mSkjmmH*aVmz6#B@kiAq$>orj@BKLj(M zt9YFzr?i=)Uq3r1q!XV|&8)P#i?8_hM6ZEJ)m=7`Z44*tzTZ594zTjK|#ghefZ`F<4>;e$~)7a8=({AT$}$T=q3+E5on4=LCBc+Y^7Q`i( zmQsU0mt?8Y_OB>mrdn+;As*MYr+(;Tz9z#z_I7dyP=e8BWY~#ZNgi;%ocD{#rhLo7 zb-7)A0)3e*ve+=gY-TmntzlI~d&s*~*W#=fq9wnl6{u^s8SLn0d%!Y|n$Og1d!MBg ztZWKPDOPJKh5N~5HN`StP4Oxkn&IvT%-jz+dw z7L{puB=X&JwsTTfh8iCgTt%hD!jZTNc}{s-c~0-hGb&&HwQ8`@dGR}p&Rb4neKI=cXOPb0Qt-aQ9O?8`i#yS;^r(j$Ri$)3XaA|viVlDkzHaEaQ<#ja)7F4Bso&T%e_?Z)x1jxWF{Y$~pHb ztl|5(6VC9xWMb~myUYeR4BtyU1~74d;jQw=!}p%aAi7|wLZgBU0yjJJG=sI0l8>95ll=*4w8g+-aEYUdfq!2VX1fc0Sce>4kpQD3QXj?ceoZ-XQ&wp zHN|GeJ<$v1M$9{mMN8x*q>#E!3D@adGq538zXJfFX zL_Vc2x=3C)FDH^W;2VWiz@{h5O!^tc=2jNJn4@@e;%ZGc{8{`?CjCx|&T5U_%5AFn zEU)YyiYv_w~_!%+)8+xbt|C?FD;Fr3Jo9Dgen+5RI0fZr6pAW#QcRJ z5d1}`(cDVDF6md_oWWsA0Ws3Kb1;0Wt`Ak8@2Y84E3Ln(1>1037c9ybvbx<8gwR!v z&}2ubYHkzH{??FE`XG=}RU$DCK?lX941VRy+h8a0D}aUS?T+fS7}e_xRlPM-mA-DM zs@5qg{vo-V!MZ#s`_iGeZ@$FLn-y^RY}1TtrdheV&0MFgUT{}m+NFlvzxp%8 zCC!RnM}N43tZG*NgZaB3gdqq|{yiBBs_<52l-emqYq>C5%P*s~N@BFuE^W$C+qxZf zEolcz^oQq->9$^2BZXIe7fK_3BYgOp+k;xVYWqSJ$-4nMe zs)P5ms%uI$aKhV<8+hMOTf^Wju%q9L-li6nqg4^w`BtTHS*EjJga)u4FRb5ktWW=D z4(l1>G{eBa!FSp^kk7ji}xFE9oH_0!p7}X;pU>&f`_pUCX$eVR!9Sw=HAIvr1Im%fkbe;u@{ipz;by zYpNt}nyRWfvq?#cE={X(jcDA2fzJDDIgr0;(}M{_OB;FXvHSEK_YQ(b#e!h=+iV#_ z&;|P6cBWjSAZLKSnyp=1kU*x{`rU8iW^1%69^n<={Eb}2Z76%0X3HwGX6w>?W$%GN z*=8%S;0zjrvjP)ze+nYG09LCJJ0@Y%0Md}}X|@v9#7Q>2nmA7it1A`jHk%H+FVM?q z@|{xcw$ZRN;|qSg#1vksD7+{v$#$Zjb2eM*3-mhbSS)467rc2_Y>Uv1FA&ocUl1Zp zg`M~UIgx=@gN>lBCF*ZS9k4VTVLnY%S^BP9)u!j<#IqA#Ei+U519_i5zFh+NB0FEJS$(IpvrvXcZk?fs?R4TuC7ScU9#%N`+4#G3N9rQH%B0K#q;p#}dj2z0-(u#~jIrWy zf8!N@F<|)Y$7y=GA>`)UHwg?2WG?$MeK+jibA8x{e2l7>x)2(N(G9%F-kPGSLP6j z2Q-O`*S(aX=xQxG{^5AH#(3NQ6;pbP^OQcwI&iT=XGLUQJI(Ek8f*}+Ak@74V5_*l ze&|tyuVP4Ch0QvK&`|ErMeK_dk1+4ndy(Rt+s)@ycyl2AEXjRF#iz2(fnGn^H*mDNf^-;I3|DKsM>&*z-GOyp0h!DHuw^~W9S!}C~A7OTs~hA)E3VA_NBifnse(FuN| zB6{=5|4U-SC+Gu|4s-5pct%d<+ry(l$A*7>BFB(8HvGtMkU++j|K!Hll|QbECway5 zzmlu?muPz#SDwa()AN=6{~|U#l|4kNg&!?APu!2&wn~TDnf?aw|FP4cGZ0=Ynuu7_N(SjbArap64YOP{Q8SCp$+Y zE5KLaMQuO3LiLV#6BagGHeYvSoH!pr7{T^Iq#2vBRf^2fd>AC7D;6Z*VykT?YpQ#e ziL&Ls_qavHk7V&B7rxzl1pUOuw;Mk=vhh#RKYx$P)V)53(*tIfW#Ze9xu1g1r_2q2vTeI@)uvK^E>69EY^AqtAH?Aa6d$}@W<1+gOD9PmXE_5wR zm7~O=F?FZrH1z~*MY{uMZpEPvu`1ky*rUJQ4`=u)r>U_WUcU@paCp64f$`=8K+UX*$>L_*ya|Io@(p7sH@%0=*or%Ry#N~7p z763qhUAIfyAuMmEt7vk4my_y1Lro>)iQaG?7kj#e9t$%vTXnYjRMHsFI4h+fI|Oq+ zwDsT2Y6F^oa?T8~$v-#hBzw2(k`CoaDB%22{M{r%rb_WoBmVxR^48%Ii#3qXmN8{> zW+nq6OX)6_TAf!remTdheZcg-ZRmhR=h8$K3j*ZZ=WHauN1h~)pbd%q zn5yfgH&~!;-uWGF?^NoD9f5rsM z4vvJt)P(2b6yjU7_y&lUhdDNKtk=Mz}Yv1cQSi(C|&ostv9&Ns;@CR0{_ zE6>1ert^?#z1q+c=u>K_rDT;ng!e4waPXqh>sP0Kkkz3HY?lA&-YL~xO6fwaw_=5t zT1ZxSabbm*9#~_=C4Ue$5E-iuX7$ausM7~xItHyuOxB!!c3g9 zrD%8c>RnDXA2A%NGfnw2(?`}nDxF>8#U`P_LNg)5LNmJYKJI@Bq-trmqgID6&88bOu!`8+gzR^_or$RD202-n)_DJ_(9l4OT4ok|j2L5r&u2 zsoa|l^ya5}llc^hi1Nr~mfq~&tIRN!IbCl?^m? z%+kp@?fx?uru-kQcF(!*!)f>bT-!&xr=jqJ*6s};B+>5w(2?$6ySqWLU+w+_FUxE9 z61^#_-Ph<%S?w<9O!8gEkWu0^}g`Po{u`@guxKH4pPiQZ}JN4vKNrX%pb((ZGy ztG?QOilt_>`|$;9)9&iBzI!VG4PLvihpAcZ-i#rE(v7a&uN|M$?)L$l@_(?}eZxH; zPP@NOkkHF_{{V#_w06&Ch#}GL89el_-CH2=ezp5w;9p+5pVynR+I_#?l-2GV^`@+L zH}NLr?pm~a{!iAT-8X?tVSp~gAeN#SWYy*Fr5DTHufViCm^l(a7K$sKn_`nHEPA!Y zcmbC%QVj9}?91x$)eK;i{yoyX^sdL{^!NZYtD~?!1@+gpNu{+B)jVectS7G$*4;An zdmX}tXt@l#Tx_DzWb#c1v^Yca?2%S~^+f;i^zCyzPK#Km^a6qr1+QjzGS*52}OvgHKPY`}JnrxdhT zR22>-jLgvfw|;2f7;pp8ZYO-u@1Y;nR1g<~8ZYez@6o=fKB+vaZo}Ss zqoybOWE0(@BoZ527II-+i(f`sl*F)=UD}kPwsmXmI$A2A z|AX#j9r9Ng`zW=!L%!^&oI}1A6=2W@0OrI-nl`tM=Ak4|-W+_|%%EVkY1vPoPi60@ zc*$1n2?@+W0I~sX{i~ zp&T&_k(ZhF_jkjJ|(62?5to$k=!54|Agj31~(SbPpaHC*dv~ zJs9nhic|#?0bG~};FnQaB{2nHmo{anZT-j;B-H?z=$9>dNo~x~NNK)H>ec_rNva1b z7)}R({II;eq&B)ZmDG4iiY=q^ zuZ=cM-ch)e(y9_^2oO9KSuTx3;c1GcNu!&W8EJGkn>3UfN|uC5)bm>s0zM3!s*oy) zs+)4sh#8=*oVq6q($HNhjm0jFX{w^JWeOKYt@vfENJ)%W*`-YxYFjI(APuoI+7eaD z+Rb0Th%`=hX`J}EoHV{_e4Gpb{dEPqsSvXT%B4{$Qdusk+FTmL$()hK3St*OpHN6Z zy#Vx*#tF}-^k?m69>Dvzo2{s*qp%~tt|;;Fhe&owEr8z)hXo2uQqy_JNa`@KlSG6* zgL`@@G^5WiCL!R;fSb~dediTZOf~Ap3;jt_x<^n*N_VNG=DVckk%*)kxHL9@kKdyG zA}J+NxiZwY4yX1doq&nX`dwa9b5251pK?jvR-cnpyYct}0O+sFK2aWqB?QVP^+gMg zY)fH~RJBC8BFXS6GIZFAYatOZil#y_oRCx{wfx%3k6|2Wlbz#{72H#R>R)gpskfuB zH^0IT6B8n#J{R0ew<$+VkO^)+)MW(Mq$q=xUMcTN!a8cc6;J_P7LcisDv8<}bAn4i zBRJiY1;ObqX_=-F{xVwHs-f)0mc<&zZoZk{qWvN_C4sdv&@xRyZhOnZev9g4Eo_Gq zkz4z2B6Q5Vhvnop%s9RX0Q&2C!~)Z{iS%JgixUgG&Z3cm)ut(cKFj7VCWCLx5E4Xf z*=_{`SfUM<2rLqeGVRrAyQbp%lES#qUJZx2F1~2Mm9C-}@rCn<#0VE(HA3hpBy{;S zOE>jbiY(j&YwGl*^0v2LeAV81rdjmDS)5F>9Lz9S>95Ygmbx4VABJ|HX4!-mtymDC zc;#uI{q=^RO|x8dOAbMwX6cC*{Q#v(cB@W}#$FOnvwZLcPp*gucLXNAI^@HlG3 zjoV&Xd8S@`L7DhYVZK_QX3_js`TeRUu`ta7r=lY+6^UX{m}cqWHcYc9)uvf2O%RRO z*=ZI9>PfPHvXCV;Ff3zM2mQ#*N~uA$OH!)nGrvJ99O&)aJM}vH+V{z-$*CVhcA|AA zb!f$!B>%*k7H@&7G`1~x1Hg?f^SLxOU&?RMez7JcQKd4li>VH4I#4v9eoNk(T24R^ zN4g+x`fN@YO5om6mu6s^h&k*_`l^4EPY~Bjb=RIrfSWrL*EH)@tigS&1EAlxQf_SU`Ywa_7 z(2t1l;v95sRE zqSX@`wQh70>qd`c-ROa=8-0(NpbAD1OVeE$eo>oKhFefdcMR{~`5j zwtH%MsGwba*90T&o+_`3K@V4j=B!KmI2eWQtJl>0z5I*e@&iTt`~v3>lqu49e?Hj@ z3};Nx$TdC-vvOsJ)UBFRw;D5AU0L^BcCc~jZfu*PvsY%sw8}>T`WUw>v2@- zJ436`wrqs*?PJm5^<9UL|4hz|&Y(ra_W(zKU0ZmBvXJLYqcOxORH`V{OH~$a2!&{b zVd0U>Xj-Y#Qrv`xq)SC+pLphXqzZ3Q6~_GeC0X{gBRZ)604i(aRbxoI=Gfr%)-0Q>g6HrVO>Mn@>S6N5G)y zeAt@R%Ow*b^MPF@gE4L6a%4V9WX2IV0MK98^VW2>b;|Mt%GK*Ei%<$yTiM9Do(!&O zLL!M_l8{;OqJB*?IJ{Pvv;@YfuX7e=b)0Lp+=hOs#fgRS|t7U;CvJ>hY`l4NQ$M z-u{^27Rztp!=NVP7G9gH)E1@U7F1bDY>wVuD4hoS%T><+EE7bgE8j#Y`XxkQx>)4;)dbTs1f7Qc`>7RkqG576&2!~xY{!M7I*otPGFJ+m zdT9N;7B6g_oJ!-e&fnfa=(ftCa9j2LCcyY(u~|DvicMBs%W4=*j5n-tD7+RdQD%wc~A)gf%{M~v%Z16LV0EHhq3X2ZP zv1bWp?gqaGr)`s)`2~N*5;OP<^VJ@wYL8!~rn67Lsf~%IsBZ8Qd34__kti7wZz+Q^2_(lq2AjURc1XGzU%#Iy6^42{@&nfKb4>Fn}Q7 zRH_A>N=rakz!`-K+CAV57!lTCwZpNJjNjT{&NhF9hs-zn)Gq)kCfTXqDioc0zB~Za zTR(*1iG7>jK;zLed62|!Et41FTbS;*CUR+PK9b*}{n9Qf39D5G))>lf-3*lI%U9?9 z)@6*EmpXTmp^v%Yz?=%)3GN+*dH|T;8smOTg9D`=KzX}(3?0v)s`)K3Z6B2|&vk(b`+NM# zb2V_4=knKhuJW(N4f9-j9Xyvn1kWWX8PBCh#%uN4Wbj&qLT}Htp-gj)%VpC8a&p-T zHn``S`dyih6}RqS8P8?Zo9Ft|&vVqf=Tg~>=NcStUuVR)w5hv|Z|a zo=f5io@)WOsv6IwRP$U)OF+b)%PI(-D?oJ5H3e13c&-c3Ej*V}gBvNyfTM<=0yObl zdL7;JE%^XE*RwDrv2ZgqNXB!?kxUa z8EPkPKv>y`{>;NsfjiwoR_>cqfz{y7SUdpCbL~WN98NSV)-=C$PD?5j=F$lTmDtFvNI{73*@mxMZV)eP_ z+5x7g1g)G1vg!$E#Px_+&m0D+0n?JOj-GBNA)p%yi3QPn(_!KuD7rR&nwrEL4%WyK$kOg@e?Z6yG>Ce?7YRuuE$jNB3akm~gCZpR} zV*piCcrHz+rEwX(L#RUPvUf=xo233#skAx5!P}gLXnH1AzK0AQ)|d;mzNdPMuINv2 z0A35W^jyH~aL@Z8h(A7*4nfQNX^K7tyZdj7t_K}IuTxx6%tL~#h)P_bpF=D(MLZkz zzhx+Z^(3m74*iy(bjXmZLIaP*=4Jnu6|dk|O;UHbR**-}o#DD7TqCY(vK9?foAmmJ zEiSwf~Xl+kQSZ4ms1m-c61uU(`Iyqpv0ea{HW+JHjDaV zlVD_zzN(ynmJQv-wCv@N=d|o?S`b=Ds_XaoQ4dUzBP=eY(O5=!e2 zx(rn`P%p-i@L>Ra%9pT;4K>x~sL25cwO=@D-8_O?)!a*YcK2ZDDSZ&=#V+PUVOqX$ zK~)>lx^blCt%T(79O)h&4e4tQX}xuxa41l*S%=$x{+tc9i1=lH{9E# z-{MLgklcl_Og93T_>F;mMFO#`uL#~vF2aEK@fGXjA3|LN*rSoG&)v8MQ_&aCwm8a*&!l(xK|y(aSG?9T@Q}aT?HcB50Ba+=I^h#Zm~a%ffZJU3~|7IC^=Q zMIr+oz5JQ4YW;aQdU-#4SjtNE`K(lLU+dA!qB{MMbvSzYY%#_@AMWQ%uNM1qL<&#( zH55+zHOtf@H`?bg=-1THJv%b zz#K{G^VKG)vv$cz>O02cX~5B6*C>nD+8TH+EeDiKYHO(#XHTj&EePl{cDCwkl2kXH z2O)t5c8Z+*r?->ILhC)iAytAjmuDuL{?V24ND~3e!$iOg5b$2i@&P9TL_N|JBJ^U! zH<#wzd6H&A<)LH?y_l6>&`J?DqjGq|koNi^%b31g&o4u57PEmR;LKvupzJxgoarKy zp%-39tXe5Ps^`J2@UsCp$xmDC&(|g#lV-B;Ya){}r3+kG_w1Y#))TPV2d%c8rtX5E z^t->_sHZ;GLtm1kegb|~-G$pwNb8o)nblb_b80mH)OgTpYoRdDQ8+k{!smp7t?!tB zX6QEL2d%7H>o!#7t9?R^vz#@9uf5lIbRslU2k#+>W6?xBd06=nWMzJ2a6(X^^ER}v zCHE+V>&qmn=Kg-|*@G@!nb~pI~r=e9pd`4E#=S+bk&>W0UhXw=_DamG|W9G(fDZ;RW2%-zWEVG~08Qp*= z5~DUVf>(Ge8C2@68hpHLfkt-LzA|H~ywx;0#+l#Gd#k6I;3-vCo42}q$D9E?4)U2b z2=T54wJV)~a&L7eiix+f5vH=^WrvZ$+Z7=JGe-AqS3Z*Yyi#_6>@~^`W`InTrR|D% z;-2U~b7YGepwpkVD+_tZv@46mY^F)Y#;~wNXhw@KmN*^PuvS4dN6Sx1eJ1Tn0(yY8 z3d5!Le0xDvFqh1QZ!d5@1m9lZmv%)-RIUuQt!GM76LA{RW9Ue>U70xsNv+t~B(?bt zIZ5qmJnjLU{<^L-cC;-->q?W8xUTIhCMl~;;}(5Z#r%Q{zE(j!(r5-(5bvr5-cGH3ng*;$lKL572GMnNu- z-zFMPWmFP(q8~Mwf*6a4hE+(cj_&$m${-XZrdEqtbnm9DyCg!K=$5=xH8i%gb7^e8 zhu@<8q8~~^Ka`=i^$h99XsP0FU}si8HWhd7aPItbM2+o`egZb)P6r0iS3#%*$%Z0nE;o&T~!a*e0hb%c&Gi1)OP0g_-h9I!rk)aL?kD zchfp-NL{rVUcMrEG;mzr!nF5E*6B#N@I&5VBwUEQylaqJ1`j*cJ?WDwTS*m08_p8< z!OuISB_sF1$q9B^kU7N#)6c25zjQj7#E7cbL^}EI^I>4?|#;ajp zNKuo!3W7Ix#Xa;8c_=ltg8oiHDSNn1>v~gQ>vX_G?}KAj3oA#%)@_`vwOi%bdMutL zJxZXfWLoH_sdNL%{nZ;^GJiE4{@x84BnmziKM6Q6DpX=1(b|lJ;B_@aO=d( zit?L}?%6l>X4$29#}cc#xCY+6BD&L-Q1!WXpY~meYZ}jHWjaKtXrCaf6nQvbf11-i z-S)1WO~$Zy%ttFul7M$ zVH-klpS`;_q6T|HF;uFaN)`>Z!kC*1^Wq5Qsi>*1a~ze#Rn!=x*4PwV$i@f$1xEl7@{LvUyJKTM(so*iw7b zuQ1cSjOMx|P;NiBpb~J&YAf5`UrGjV?}bFbD7sVB(#`@*ZZ2;y<3EuaOg50;1#b55 z-_n_GVV5@l;(!~>esDb{$Y#1Vl$Md#OX7V~{PkItED7uA)$_nJpv#VHr5iV^j*VI5 zG8)C3jEtChC1xMX_^D*X1sU;+jFg0o>|z;eTMv|smZHPaw%^Xn=+wQD(f3?Nr&Q%+ zbdGU%6mU#N6MQVFhUb!c3@)P$MHMnqZDscoMJT=RB@z-SpN*Afrx2ja*I|T`1T;1y$)QMayiANmAnI!En;PBs+M%uk+w(ZF=qC*~O!fu!BbmP?9}Idwxr;4coM4Y8+UvqZ5vjP+`L? z@gp|)f*grVj13*!rJiivc1j!|Pc|Agi;kL+_hgrhLPQf?M3--r6Vde`&#*dOCA0T^ z%!m6<34yv-Xhq{CH0B@3g~gPaf7po(-r5KWTvt6=qk5<{*VPH_kR85?z8fDcKtucN z3SR<{!L&2ND{W^~le?}*z9}t;N%4sYUS`^v^TqZ2mIL7%T{K;CZ80>%J_Y0BjsKGi zuoKXlhyb#SOn1q6Kn12t+cSbR+8&K8a8eb&9QvXp4vw;mWvFf4Katp#=t?#|*!^Qj z?Cp<=&@nGFUzRy$_ic#aycFP=#D?PIP_M=6R*g+0)?{H#!D=hJhWBhT_&kJ=Kox_J zS2QL8ih}48=r;ihIs)wUw&(4SrUJ}vLg)de3vl2~2tj~h?m;!V0EZ!l3}t&lO}rUG zJ00$<+53v}51A_mZO zD>N)bmuNzWE(k8Gq(ORncSNzR8_x+F;5TJOLfq|M?IjfSMUwn1gRz%(mlM~| z$yNI(Y02?Sy>^jmQNPLD8zeC;dJStfMvrwyhd_OpVo49wjr|JLEzK6ls$}9wQPXNT zlrhMEOf-X3YS6io)G>PVY`IQ$q}y70y^eN(8>nCu9SWU^zM37lkYy2x9aj5%U=PFY z*kLypzFEX?(SET*B~hg^)V6L_gXf$lBDX{|Sv#D`M`B9z+zwBy%yIs!$H;;r0GJ(q z+GD^9Mh8oriyb^?r3hq6k!n+{QFgxX;ktKa!qSt>ipNKx(=Al!;hqE<4rFHm?_7~O zsO&7@IaKSGIPff>XhzgQL&XfY#0%knhPG3oM@X(bo~_;Qva7aftB1sNmOlN_u6r^i z$ma2hc)w!J`e?(bL1knDu%YhVAq}(M-Qc_%(A`QgE=&LlHS0`EY^=3Ecb3}ZeU!t6 z$T{-CEO0)W`=s?EzbLGvuEJDw+md zBo&l54by;Q>tX}FRVdu&DD0m{;j==)BF09%sjVK&8>m%l20AQX?MnHD0j2>>AKXC2 zmFS4ip)kHVQNrp{Xg4S^C|uO>!~1=ZpI^T6f8bl6+(bI0q@S(q?g zSorDYC9CA9Gv!Me7$DiF62iITGY(Bz!I&f+0Q*yWta~R^cWIO>kwEEExi{uexG;yp zFLNm7@hpkjm4SUv(70p~%!$rCDvTR>`-zc5ip8QgJM`DU`V(3m`YU|DrLu1o&eNfVqIaE#=7Ew zJLtcjArBQ3WU+2TUVV#47+OjVn3jZfbop0E2mk(hw(U zmpn=PBbbiDQUI7PR#7~rY9aToi%%SGx@fhP?Qz{q2G>O)kuV@PpLa!PD$=a-O@w8G zQ9eW; z+119)dH`f)(kOreRHbEQGJ*`jKe$W;Kt3Te2Y*ICGP#GcgOQ0SOJyRG zT_%s8CYi((m`tYdG9#1k5Un5+r6LoREQwdq#ix?c)MB{Oo+({4N54Kq)Ci)>M0bfy z)@>YoOO~Me%E;SMfUHc$?0`(>xJ=&T!%mslZ6o8RhIUORx0okvTSn7S(nPb{$qf@s zCSe@B%skRuGWa}_kf2HK7Byik6S4&l5oOPCcjj7?+Q)h;MUTb0Gl)bgRo?ognpg<^QoZmwhNNG5EQ=^g3!QcM_T*Ui z6hwR2yLGL?UIFTN>c|kZuy@{+9D?!G(QiKukCV+ZQ={5X#bNKZLg6+?VO$=CBZY#6 zy+5X5DKm9s)mqrQdA{1UO&yuUJnR+UqGR#r&d1Ory+Gld_ejMyn>w;Ibs&t_NrZ{x z?KKrK$y;-!VkI^eA;pPK{t^O6rjGPFYCKrFN5_3J6egNwGdI#PKQ1Y;nBm?d9i}jW z^#@#7e?Y*;{6D|6EEdi)|IeG+)+>&{V%UqHWH5@U*eOvb_(#wRd{qO{Q>Xg?UEXuDoqlrFQP_JY`G*c3fgDF`-V|rpruWk!Z z>z$|P{wv4Rx!~@m^eAS)+9Uw=Yf6SPRaQiw&ZB&xY@J!yGccX3DgFDP*pzM-3SV#( zx>w~;7$OwRlnxgPeP>~QIPHmeetx!7C0 z&g`DpM_)`M#q5ag9`N5SS3|D7R|2iVyZQ&!#2YL(j3bGwZn*~`r_2Y{{)pwW^|3%X zMshcfZ`Yf-84a??2icRQv(1yq!dKDw#kz+wSSyxk+_v|d)s?C{`!TkvIX{rRn^m~j zWPnvfjQeXLw5t#s*q_n$fGT?&WY?w`TU5BdXbbtmQsULj)8$#bxC>^?cK z<%9iWyT3yy{Krw~>CU0Bp-?cpKUygC9ojWMo83P-Ialr1Rc(Coez~Dtses$P_!?D> z6^UY1u=^?82D?|P*}bLNpsvbf>|Trxc5h3;xX135YId(Q2X1!Hc`r%%VE3FdS;6kl zqgXj(wYB?J&L{wB_Z^m2iqp@f#fH1iI4B-PuC*0voUM%%GCtHG<6Wl78^_-oG+$7X zIYrY?0OMrzS%spj_LD_2`urfQO6;xAN8>^-(zb}RZ^%$>5ytEr;+GT7l*9>VcCiec za5fR|G71c%X2h8FE>E!>r*yR|$MbLIl;d@9XBG-L=3NvCfz~ph=xPfIxORqTa}PXs z+cPtHs^9xCoroth>O2Wm^EC-VtG;O_d$w{Nn9Dh?6de1^-n~!3{yQ)$sKt*l6`{Ba zRf|g(i`-Rg4AWDBR-T5qCh{^Pt|el9a#Es7mV{$;|0F;O(NMxz`TD*onv6rmjM6xi z?!^c85OJ4|Lsfg5(1W~b6S}!DXTUGR%}QdI$8>(2xsjr+`Qq$R z1h1`+qrlyF_h72mI*4)-ta$jNi7IxVJ?R20)qk8ay1cBlVhola?j^Zurl zIo_AxntSw$1Lf{iJe~{aGg)V(SR{AuaXC^n46PHmelZ#$Wjy-c2@2N=h2tEBJ@P1g zQYe^5pLKvddY^M_tXlKvtB=i9+Xc}Boxo*cb&oDqMW3dDDHevq!{E_}aT`3kQq7}V znt61UNt~+7D0uV{p&TAvk~5F4GzT7g^rU>UvsdB;gihcZ6+m!~jZ#&0i_#Jh03CWf ze%vZ(cW)mc+Wy@dhjkRN#s*lm_^=q3()xoHYZ{2!e%~zEi4Jx$VCw_eBMDGruu2;Q zSk+*tl&N8g*Kj&DOb#`CfrvP+L22t&gDNuw%T%_|D?5kE7KF-9^W)Eq<4XI`m8o7s zyHCBiuL=f+GH!YcR2w&~R2;lCx+FIhZGSWfB&Q7Nb#(Y%@^rMS=g_>mzi`Ja&ymFH z>vp=(aGHcAk1MJ<{FuC7uH6K~d~SPrtT9cm=6u7|;G7=D)Ad=ILpWWi6HxA#55}fo zZi5Ib+jAa42Jblw35cI3A`caj$>~D97Ac>}nRIb$njLGp1yFuxT^-7_k4oZ3?VD9UwCy~zR!0wi99)y39-WIaX=9l7wli(=KXObv z3mn~>-S!E2vpxri8an39K9NV~?`nP7@^|`D77G|ZXFp(+ct^Fq@i~j_)N8d*Um5IH zDRrMilCGB@&L5H_=0`UlsoZ|1Qz#@!M$djMi3?`dto$6ObHR+HLtklJ>2)BkkzsAY znMY;0x^iddu$a1XOZ2!q`W1{w6FI00;E5i00)sxMf)3(~(Og)U$}i)3)+k#NTB8iL zt=}Gv9`6n4=pvYxjW6C~V5fAmi{zmdIgvaEHyC0BfQfw*(~e|+i$sAhXk7MA{cjq# zMU{m^2m_bF-AovG6!AhwL5aeH=&Bw1vg6n~8#h+m?A*dC3iclcJ`2E(!VCP0G89)e z1d?5G*GFzC1uKt2;tEzX{^fV@7|DhZTFfd5$Efr$j?1H z^9xx)&Lx$2o4+Oo~XP8;i9SXl??r4D*0K3&3H zb(+%BqR>m9tkUbbGa8#OeS}Is0~XGSw6yr*rO#36VP5(_FXigqSf#J9(&Aqz zO&F>tFFjACH}lf>ln1`t%V?uBy?kBYmf2jrGrta~AQ*w}o**~;O}$ipcB z$2$#=(QxQ{q1{q>9V9aI5C_lFWl0^7g@~J8I%)03zK7@3=5Oi_u?TqbNQ_K9JX=qs z*7i%nWKYNBwHI^zc%LxBTiaSNVPQCZm%i0mYukQUuDWwo-SNvYiB4kt%qVc8x>W^z zQo=G+N{M2V_YQ?TQuMkUf*_a{uM#fKX6LAkmIV9j#}wjGF*hW6WTiKumfjR&DNWLB$NX zZXCFD6yQ@_cP)Zmo&|1wmd;Rhdl;c|?5)odYUw{)LEx-X-FT%^Z7St#Jl$EPo!lf8 z^@0}rn7DHjXdR&b@+AtYq)R~=M?~pf*mV7YpVR|g=+fv%JD%Jv){czu*CK2AvR<w3dT-(ESsa>1u8gLxMWOWhiEg2Z;sC#@X-T-KE$Y?V?#aWL>Z&%~^>K5C~ zdi07tv~reGLw(cni~F3V)Ig&-oZ(lEO{^E%)$}Z-_L6`{)#6Hq!o}iUjzVRl8w$UY z=(ii!M65N6h?wZNT2XiNj{Fwwmsm?l)Tj)#trw3b)*6n6M6*AekF`!8f{Q%Uo2!mL z=Un7+3-(3;z*^@viYH@Z3QNSEZoBefE99S9FMo=J#0Z3N@NrR1-)92iL&)HLJE0cv zjLz7RVofaqMqt!y?bndKlCa3m>W_nvrvcS}h^)n-9feK!75O+?Ark8I2u6PzZP&`5z?w8zdORJ_8Kj7Q)XsQaOff9{JVAiC@Lve*u(Jk)7t9eA z(Z@u8lWn>0H7;^QW-n@XT%?)m`|lm3d+miVwxcnzP?_7#4WE|&Bn0YP-;ki(ke~~z zhnEq{Z#KKGdvD^V*>$UQDHg=yadq9=vB)H(o|4rAU99gbjdFgDVTv=ehUqZS^*!8| zVh|1`KDCye8jFNp9!oQ^HHYM|d`c$9nDZ!X*}Rh`%x0bxwQdvJ_N_wUAV=YM&*o70 zy_pmv&3E*z%uMRX`N~dHW%jLyo_w^(TpK&Tj-TJF%_ts9dr>>QzIf;et|PcsbFJn& zit8w@qq&aeI+p8Lt~Fe1xYl#6cYaqDek6ev>y~1S;Y?Q62g2o&*zc;hWGAT}SukkU z7V0IqRz$lWowmHx%QB0d<$Z!KW~6{8HxafAf?Ky$5^cDH!S~mV)DzBHNW+0o z3WMZy2B~mK>Ku*#l)?dh`oZ?b(HcZ&Z!KWpa=Ds_94=siLP-bHk%)Gv#I`4E*%50T zwO(t0Z$E5agKb+_emcU-+V&q=*I0UC1i+fc-1JON5lSGR`BZ{FAq0ipgjJ<#?w!ZS zi*t-I8y@9$`W;9HU*jkwV1@vQP?yD=hf`T(hlT!1vHshALMb7%VWEzbMn~BI5`3U`s?De z*OEuOY|6pI)G3V>a;BkqNNZOG6YAvEFs)<@58CIwYB-YF0&O(r2u6f<6 zxed@loBc^)|3ka>U&BnHxS_XvBdHS;_I8N%}lXtGcUj9wfGz3R3H!jci9uJW&i zip?WRqRb;!&6!O~l6z?i%!S^#2_GQ}TaG@@Qq|J0oH2(!m1E3taDrG0m~kw{xOlHv zikBWsZS%<-*(V}*`Hb;f!Q3QzIw^W;cgX|=UPc$o za}p(icgDQ$8DY9>3w>RkOH%mg!2{)bdvLwLvO>{6tE8GlRU@{QZAhsgRnZi8X*A^? zcR6W_rnnGI@k`^bB%&$1v?)Vv>lEDllKDW1{s|Ye7XJ5lk;n-ykxxF6lSn<`4b2Y# z%)&>A8@M1IN&@8`_wOJHXRS8xc_=*1^gJFgDwHTB6wLrIdL1I+HtV?o2erZfZpp-I zu;Lk6|9cAT>)-!snQVuBr$l%m6V(=Ka{K%`Y)(n>CI6t25zr2zgJzl3P_iU^qumZ5 zA)rZD^rJ*jJpFNh7&aaKHi-4oQu3yXLFxkL;X#t>II(39tNXKepq^|dOCs=Wk z7uMF~@31La;RGW@K{Os(O<01Cu)^w#AABqoR(93hVt}}?I?JrOn`FW|nO{+iu!KUW z$%WOvzl4=gwoG27Zb7B8o5K?ewQyo4qbl4s76j7f*d_~99-;-L=Kv89f%_fnj})xL z8#b_Hwlvb2eBh%wCX0U=RO$jMVz4@@Y^pp?)|&V_^%OUM8*uwLxK|#@f%`YU!F!5_ zY$0z)H+5=Xl+D}Syjk}jhN7@yYFos>RVax^UQ=7t@q)k~jueCu9Qn(a0MpvN(St-0K3pmWB z@b`yvQdngyydL436wXpB7QEI%5OP8MXmgOPTfsBk+D={2ph(xaquxh9Po@Y=kk-cf zDg2_T`-lm>-P|Wsfw?(l3I(Fc@P;Ak;GCO|S`jdt5d21yCLowQY<&8NMtX7YO=x_^ zM?`_D3iLmer=ObhZi^#$`g2=%fqX|HVHTglg#kVD%?Yh&d|;@~ z7w%+cZcfA)s-Ivghj^ZFc!%}CrD=}Cm-9GG?}Gy&UVk_okjJ5wW`<*fipO^jS%%2x z-hog!Bu01~vR-u9Mo2+%zJ1rR#$DYpn?kZ@VLe>G4)4*ubHpC4ijq=D1*kd4$Fe0< zXiiV{%uW4efz_vLR_+0IIJ;q<#$01vCy(sVUJ(|1H5R6j4@HvdIuJ%OVB4HF{Z?09 z@^gEk2exV#AP^O;{8RUO6-B<3!U5tS=#TJ$dt~pZcc=@2Vw8tA;xRF_) z-uU*BjZa1q`c*6_Kd5l{INwX=>+!-mn`%HHR_nbQA07zmgvLiB*>hKygwQf^(1?6l zg-mkmP-rj1UX>)+L#%kI#^o&dtW$}yJQyNwSO#mDnAcf(sA#*_=fby{OhFb{S?s1=XL)37;}uedGmza&Py`O+c0inp~mT8BXR*v(rEZ zAF~h=csT*6S4ZpG%o&m6(fA&|41OprzjvZK3OfQwIMc8QCXQ}7wRppF(w?%nr2#h& ziFwF0EW?CYeiy6|h=z{>RKS9eScODQGCju?3p$3k9a#PMx8R}RKb`BV~y(d<0{70~1$UlkI$(M>}{h#>NW zICPgrThN8# zWG&4`u(N-G%{77Pi@RYLxv&bAyTG=G?OoTHG~1>_Uuib?u47LP6HU}~XU%$5cWNM3 z8S0z1-Uepf+d#fn{wtyzD<#o_z3jMOOk%;HW?$?zpAfeRnzwJQC){|KcBfvs4UswR zQ&A!-82eV9vp7O~MReZoQmR-2rc@IFpHZrjLN$M+nAjZcJyHngjuey3qDgC32Z*Ae z*O$xJZ4`L4bZVi{JOx%}b!uCdotLg~ox1LxoKD>VzUe?}Y~$VXs2ZPe{vW-8>C{A7 zire^b31|g%d4^Ar!9A*wfKCBOwW#HHi5BHz`9D#tf0fyaI^5-osMO_71`Su4S9ep6 zdY<)X;+VoiMjXu_F>xpr>8oT(7)Dp^YT__7!zi%GjUM{1#36`Oi8yqZ+IY45+#W$= zM+g^ogz(Fb5GAoA#4c^hP}^EvhdibOCVB$lXXWu~7xFmE<+0`6IeCmUPDTLGUsn}K z)i=#*C<%`9`T;39+d)*73uAuXz<)`G4*SHmFo0~K6FmlHGVqxVsa#Hdq`X|l!?ph9 za)p_)_Hzj-7=k4s8&&QCDB;L5 za+NUljb1IG2pshx6y1HucJS2E$mCg|L0__ctn(SguremCDLesg7c$=m>t{w0&Pioy%Y z^l25<_zv7Eo=(t#WU{TI@QuEP!Vz<*vQMix-z`S3v6u!fdOGM~Ij6JD-Mg1N)toAAnun?+AyI`UY)VebcOknYA$^L{hQPztefw zq769=VL-dLFxCDgX}_py?nBbD?GSR=$a_BZ^luQUgA#@19MnQs+;xJgxD%S@^lWb5 zzpI*iz2$dTI-7ep>q9|W(ochNbCpe7Zw{|A!T9zx420MAG6}|~qoPSLu7_U1xH(S` z#;sr`7|;4uaIJ{Cwgc^J%Hnu6t!lt=eeW;?9DmBzgA9)6;Yj=7I4z5#9{v|N)`4Tj z_iOu#x$!g-dgpzikn{aghUoomrT1t=C}HZk$2;X5f7oR{+Wmfn^P#QPFhXPV3;Y)C zm$p_(v`orS+xi6>^(Ehv(D&Uwuk)9^jLx6qIzMx9PUpXGk=SwoWc^Ho{Jus}T|ssc zMa6>ER<^fLK?d(F2nmQ6fK>B4_U`Lv+EDTAAdC=CeY+@f-~LCq#`miOg67-1dC2(o zIi{8^N)5ay35%$>4G94imcdvdap(4b3Ryu!(`ajTm-_awE@T8+0?&tY;e2O)IWt&E zobPOxHf5-7Z4l2Nlj7`KK2z<55@{7lI}E)GbPi(UPG_DdMc59F-)EVu~KD{8A2zOygDE!UP!@y7BN8M-c3piV8Q`8 zN%{1EoN9QP(e4|FM3AOZ1LI2)aCFO-z&aknY*~a}M}K)!D#MK85SWxGj0s0NQ?$EO z)2p`-?rlA9hyyL%Ts_w3z(D?9NWcZ596b)T*3S|+$PS~A z`)t%Vu0IAP&-xnGo%$Lp%OO# z8Ltk1BW8e0K&(h5ux@M6woy!T2XLaJ35l~3=z0MO-0u=-W|>3Aa(-pJlX>Vb{`O$I ze9hRz*VO*YBw#uw)9mA1s>$GM(1Zkp3IIIscIUG7^{Ic?GKcQ4X6zA)xpOJ^nXz=u zn21W9%P5d_dHi{E$s2q?E+6=z}U#5aU}|`Xv5Gd#n^^1rZdW zPIn)2B&1>r`cVUvXkWB3s~=~Hq9&(k=As-$-^bsjVSLy9@@Gx67Kg9l4FeiBX8VaT z(fOjvO;mk~OzX4eZGlmuupr8@dH*HSxzPTghoIz(4{g|aM|fE__`Mt!_8gpBHadRNFrT5 z^ok-45s!4OU?$Sd;s}Q;qBWaIv*!Use>R@BkcW&S-9nUtA}KXcR}yQZmQ97Qty!=V z;zHCJ#Zu%6EfU~Fi~9R6V)^e9j*^#|BA{LHF{?$tVJ}YUbl0MNf0fgs8WVp{AgAjU zilasIOM>H0{>5%_KK|mO7Ev$EYfu{*I&A-dFo44O_?O_*|FnPVU&c#*jMdCSaebkE zN8x5bsVcNVP~q1w+_q~&GyKYYIZyHW@Vrm|tWZnVe5+(hC`A9m79GPQlu!-Pd9Mmh zQOXmX)?LEs#okAqMj9>Z6fT_T%`fL@D~WTo?b4KsmF&DfMMyS+xa!o@e$%GT_fi6cX@D7)9TKHfvG4 zjft^$-}8x-`-jTA!+qI1t6#~-P9}auhCH|xG-%HKZQ&v3g2(8}@Dadto-?ZcfZ`Tr zONFkZQW9FxqZ^UH%!7c2LZUHx`xWwc)Gg#*%U+bG>*8=V8|Aq@Ja>j`WY?y;h46%R zeilcw+z&RZ^sM zdq{(h6xdJ0=d1?Z#jc;yYg?-3F>|iXY0wp5K*SCJ)1Y9h3rm9I>a#yV3*=Z;?(G*N zf{eG{+@cyK3ImACjB;FeRH`lGgRMS|()#w4j>0{ZQdMY+03dMD;@Z-+p|mAN&AehY zFEgt0)7MQ^lp0EwghF%;>#q$DM)6g`nDXe~V@jzHTNU6B$?4q_PX7U=%yRk$_5+pf zb53vf%N(coGB(BJ#9lGW>7}&(19JLC3lGF7VUXwa;cRsS6Fa9Z=Jc5u_Fy=D5&RmM z)B6ZD`W+cg3x#OR24y%spzyTzH070LiY10W)jUD zCcO_a@I%05yF%EV<*~=URd=?}X&>Ea#!$`>IzK{C;H$gutWj<@+k+WH@BEf(sBlhC zP1WHKfEuT+NknrV7+v3F=;Mz@CSB5A!0|2>(HwveEc^X%eZ6EarbGu7xtTzjK^{*iMM<@W3sp4R9MD;BtL)`(<(ws8D9T9%dltL$_tO>)`aepOEP4}vT+ z_y90}ra5?8i%#`$Msx2j?aPsg-)bw{$NUT#d<08Kz%~I0__@qK^UI9PUlWoiA=*Ud zI^iUi`O^UFKY~r?Gejy?*+{1I!2RIMbd6SOKfVIhubKEgPPJoR>MJ)CjY(XpzD5$4 z>Y-O$>I0<{N1`7_loxOO6Km&m2vfd((~wiCKV_+Pb0z{eQbY)IUuC};MO>$OChRd832)LFU{14NT>4rzS`K=LTa4iuMVjTd`5|wZ* zdF|TXT5=%DP*zKR1F*qpiAYVQBqq6*+`V2#OLop`iD6Z#NG8=11%ru}=%Ift$rSIa zC04&_$vEmyKa=dECBV&SN!JR~k_J-I5|u28Z_z(1q#i9+52GbYmk^@uUJ!dFB%aU` z-KAQxZvB`c6VZ}sg1QSjnbnd5oc{-cf{umgg)pcO{g~+1my`alwxwGarlfega6MVQ3!_>Pw93M+VYqb{^fRz4#md4W z`TPu{8>mza^~PEyOR7DZx8?)V=}LtzjPc|4zr;jRU($t{ALbkww$`X1$AiiiM|0r} zGk!V4Oi6rO*DjWUQ9*HeN5DjP56N?RclNH8{^(pDvLMIhE#M(1fC0yBajwYj6@c^H zNivJMBVFLQRco%>53G$&nxHA&wi>`>IB^~gHk?o@JQNir;TT=`fpLN*VqU^^29^w@J`dj(dfNzX7qz8LinWb*n0cqE2vS zAN!Q&!7*9oJ~it8Q#{Cj>*Fxv*UpUBnsdx}AH02#zn0cQ=aUrFRQAH75=lkv|IOj? zprmIz+Iy{lhdh>vHyZ!k%$(utL#T_)xFYGrkOk=(s7jGZYfwrC1v@u=e=cNypXC ze%(KM);3JjTYOf63!jyEPim-N)KE$C7hE{PZco%ua*6grR#`Qi!RENqz1E8uGyRGj z=Vx08r-MB8*Y&dv%^(*GrH;CL{L=0hu^QEATPPnh0yS~BxJLBg77a<;SZ|T)3Nm|! z7cBr#qA)}*OBqF2qUgHr+1az66~;4;=SCAEGmgBEbCxQiPthENoIg^|!h_~2ALm#3 z5v+aF5Xy!;DzEFXn z_VFhUic{_5>Xx7XEk{AOXF3+TJ=qb_?J8+qik>nyXN;j{ekA>hGmNxQ2@8EAQnrs0mH!1 zdrI14X`6uGa%ml(RGI$q7NWd5qH|q&%TNQyW5urX`awn}EYT@(7zZbGA zz#th<8AD^C`KWKux@9{sA}j4UOa>8;4=;h=E2mqbiF@0nX0$e80;J}U_@*YlnGoL` zXaSjhr$UhJjD;fs+V24{R-?reTT^3(VK)jf-?tKN^f*ZKvEzbK-*mwy_g3>ZI_?i5 zaE&e5oUvE53f1w`a9?BVWa)Yr%dPVe3qB(3le$kF58GbS)hcHJ3Fd0FC)8OIzoT!y zrOvQ3Jrt7gqMtn)3m3p>nnq<)?HW!*fOZWNG&&+8zj-wpOF(35ZAps8c~jeZ%xJW0 zx}g3N4j@9?`>ijho+~oG>}0%pNlv?ZKp0gAoc`kVLJOr`0_ECuIVz#PhT&0el$_telnHgRXI5sdKGMHMUX_2XoNq+Zf$VjQiMESoz>)Cssy=Trr?EiiJ z|F7Tw&+EnP^W4_6)_T@j&wB3u9T0~JVKgAq60I%2eNuTid@_QdwdMU0vG{%=)r~X- z^R%MRNz?K0v5c?MX^F*pAKcjv5z*tU&7FQ1wQKPeS1*F@ie(JXd^^emGMm)`_+ z1Hya9B?p8;VBal-e{2%|XMxX^x_WQC)m^C6!%w*<<6)Tn#^GgiruYRvQ+`)pS^nw} z%k};zL}kdlGU|f??Z!}?(pImzf{I??2Q$Bzr&@6U!&I()Z+EUrw;*g}A0tk*vdNot z3(zO#BsDX*i&)?S&;`ZCug?A=d@OF|wDtJbgshxK%XtQ*svWe3Fgv)zxBl4YO(IlWAwv&DxwhN6r7!bdtr<&-8zvG!|v$Tx$U6OaS!- zfEcfkLet>M^p0UB=9?OuW2&?POd+>!%18%R@+WJjXQ10U*6-9&&A{d<5%mr;iuiFJgp z(EDQd6iY`a{VK}b`>($)2ROXlP09YwE66HCcmkba(h$OZ8bj7R+Q-o*i=MZKc<2+G z=`T5t$Y0JQ@)yZb6jjdQ!wFvbyk`r|?Mul%@t>R!E#B<<#51l>7>Un4r59>sj#m#k}7q>vCV5`M^IuSWeqx^)*}_zu-ZjxN`# znrm_+ql3K7SajuX0+tY<5d=0M()D|H!PjsTu&a^>1El4wmsacpb=^{n2G%TY>?yB-oKGeX#d?4wQd&i3nK+ zv#}15hkLOo`n;p4Hc8QLM$riDhRISd#j}O~=KY=mYUbYW5gys#{T}C2?9604_#}1) zO+uR7{&$l#=0NI<;+&=Utz{=!uQnfz~>Ha=1o;xIXoWKrapoHn+(SFy@Weo{Ss zbecxFi>ldw_7#(4t3EhQBQpHAmxN?GK8xTopL?7nk2e3tPGGQefdD%f6vfU3`*bM7 z*u`6m&vSv}*B}6KKEK7O;Np)RpHICy!RPagLn8oSe9nN>zzaidusi~lc8Ma06iBB(^6UgA0CKW_!3^-;4=}kA6i5Y!BA!MWAE*To{S<4e@OUDX)D# z8o(WF{MC3+hz1vR-iH{MM^GoYb)$tCaJz;xxfXAA*a+#EWE~$>9h29ggq0868F9{C zRMmcChp}h9)DoY6jAwV|^NYcgFqNMj8$79u^EPd2T;nMhh6( zB|hy`*je^z)iO?$^(*QZr#PQ>F}?{FV*wxT#^o=!EGmlY7wyxb3}YA9N|H5n@{gk_ zLPuG84==h{{P=pUO6xi6AHk<$i&+#Zgn6jsGbJBeDNr- zlMA5#Z+6&kRMS;S`ppjv=`S7a=D8X~)DT3>sqP^n3h5E@oEf0qd|_L@Vsi@O6f>Z2 zBgl=#sDMUvj3Qe60zhkzr`iWF;Q|CRNO`Z36 z!PGfF+|)Tg+|)Tg+|)TgDoveBiXFvvl=l)*T1XIVQ${cT0X@novzz}O$1&>So=%(} z_*$Ylml@|H-h4q_f#aQj&m*u`v+TyBXqNqNa3?m)eltz&Y8k9r>Rc^Z)q=PNBce}J z3-5`-YxvswE8&snk#Ffh?{SQw z!IVKQe>DYhQ}AsIzPANm@xbO5DHZGhyJ#UK#CCwa@nFc`W1zKolH;%c)kG`44Ub%} zb21#T9bnT3%7*niOPOMgQGjx9b_bZXz3X*En!gG26Sm~^6T(((9ErAPRU_TT*Ic^w zKNe?u!Bjfxe|jf{Fd9D*!kB)1#7R3p9)df-MQ;vV2qK-!Qj23di0CwVLx2>g$<-Lv zmnkm5QN0x#)gt7gzDz9!2>gcJTz-l!9_d!B&0i@l0s&Baq}wX!bn{dJM4RkWt5aT^ zI_3qi*wmp|gQd7?utMPpr@!K0B}9Nd53utCusqVOSOcrLEdZ+;43z0>o1$bSQhO@j|p;c{$7Rg|5`Jv6o-mRX_O3uS~e2 ztA5DTuhxy}svkP0?)1r1yXuEcoLC;zsA4y@ayO(bqyJ6$|HS+;aw0|lN}U{c>&nPq zgiXxA%vl}Etwn-#?j23NvSLI; z?CIJ+iG88dKy9vneNwSrPBddH=F=g~r$hQtkq&bKnOuiCGl;&4==gX}Ir@<C+S$yF?kCY2Qg?9O%gS%4LwDZpLh?e;rK`W7Btah=2}6m~o4wM4pTDT}XB1Gk18IJ5J20&1Xz=32YK16!Ek3ryz2qLuBox2^;uN zvrNkEhy_$Ww^*_eja{vot%qFvoUCBfxUaDXjLG)B!0V)%bnae|@p98aeh`lXv>9q3 z>LTu_ozovzR)UnqY9atUliB!6(C3Bp$qwnGl1SHo5TpkskvA!1{qlpG|P!Rb5QzQ&#fi*l$K6${};qZs~#^JU?Qk{ZXq z6lAhIJ`hwF&z!%Z0d!safSuNcW=bge&G1I8W?h2flBL&E%m|LUgg7ED)q!H5tpRx1 zr9bRpc+)P;M)sA4LP+%dkNrk=5+>VSMoRHNd*8-QrE$Y}PR&fgATtG%(MObCQ#Hl& zz{4s1^E7E$=@*1R-vt634i7Q#>;NTF{-1X=m)@o_HTqqEfw%!_i(7&rWb7v!W(mFr zo-yrs0-wX}Osf?(rnG0nuv%GweoEV}1ojz0ZlttNapt`^Cy@UyC6u;atg_r&ptOUM zXdNlEB>(rv<^KZb2OTG+DD1F6RkypUADNn{`ib|`klTKp;KDM7Lz~kOn^&% zp;4KBLgS)bxdB4+?FXs|&D>uN5Sk}`jL^*AJ`|drOlY35rgct=#){4|odDRfW$Hv| zth?}bs{wXVq6m!nw!l131^wDr#4%(<5P*&IUa;Cjr}a{5_GMiGIT!a zCPd8^yHY~i_wRwYr?v};+hqW8_b{*Fh`Z3~ao}rl<90|~a4KS-K}q6tDq@d*#63-y zTS+563fp6%cL4|uB<>~2TqR9^ZS?@+gtouEh}aorGi63P{CxtS8eq>p7ScQ(9_5qCWZdF}P`kaCakR|AjLd~N(o z0d*@?l2ro+VOEE_6`fJnnGM&)bYkSs;`V^z?ryf~H&YUZK>F&=GJF_yj++FxwowiD zxv(~d`{VSKuJ92K7dB{%k`ps8>1>C{;b;2B7SzK915yU~g4+n!4?A2BOyYV>gzMMm zCvn}ZEBm*u1ggU$R8P#@p>r2^^mC#AHV+I&IShXA*#x&9!umLF_0eO*xwTmgE=ywY z9X8vkU%m}7jQORTHJc*<;X3Z?s5!>@2?Dkm0~+&7CDs0C?-k-|8;s^B5bZ2KWk8Q} zv1ULm&J3u^#0;ozE6Ctyy679!)~-1LaE|mO0LG*1YIAcP6&Jt`9M1@7;5uf_H5E<_ z;|Imy`vzZ10Q@U}-_1`U`#Gl?LUy6zBKXueNPe!>j_hkoOi-Oo>rWyrsHl3@St(IH zz=%$l)K#)G*RCAUIn2Ks6XRjkoJX;2YGRTHgGA(nB2^R$_=fnCLG;29I09YH6Ucy^ZKDas`+$MJWe3p1Q9v|o_W zg?mBU>B2hXIIauMa#Ta&q9hV|>U4#VPze@{0+dRBldZ`3G*iAiTf;$yZav)NK7+C~ ze)fn3bO&CF$I8<;YLawIGJBK#f#Xlz`%s+isQktG2`W3$Hb>>wqEfHMY2kNEs;WM? zKL7DVJKRXm-jeZactmHL^o`t2!f~hd&=W2Pgf9TQHGi_2c|(Xg*cAE%K7}1XnxeiT5qGc2#aXi z11lb4cEfP^J$T?rP4IW< zEYq%)Qr&}5{H~+@taB2ye}VRcb^z#Ki6vEQWJD%5lf8*<&^f0?TeHlPQ-IeJ8vzj|ePXT$_AC%WC%NcJ{U z5nf77XRXN1+g3@O`)05X0J}BStKoW#xZj#5qr$n)#(mUGsxF{L`1vz#$7A?mlx@s= ztly_+cc#=dQKk7V{~}4UwtKWR^`)kd#RceN4y4EE=M8xzMHF1b>t~f}8AdHxZE8R6 zE~-14>in-D2W}Soo!e=v<*u!Ma(1Gv7Q?tW9=Y2@aFTA^32q#O?=ian7~$`#Sgk6a zc2$f|Rx#OHvj2Ndo4}KE-Xf1#e&mEZH6H^=Y&+>o-%MNhR5C&Esc}#cAr@&d~>D(i(D=wWe8~*A~CDHn<+G*&8ta@8Mc#F{Cv$V$(#& zrhU#zw8WA0d*us0ORRZHE9SwVm{vS_r&yA><5QLS&n_{o7@5?u?~~izv8qg2ZfT9Z z%zB+b1uxJ%)Gn~Pg4M33&#&nM1y%t0x>p{|SsLxcL=^@=-0S7% z6*1A7bxtTg$=xNziygH`otdDvp5~8H+bR9XtV4(PG&};rv*O{X+mLA6h?H3uXpi#> z*O|VeItNPlBh_K>Bh_J}k7s(*2Il^Ud9rK(Si#6cNYVqn+=qy>7B$>0w?WNpN6n0e1U0ko zh&P;cMw9^oozbtd&U~-r^9uf z#c7LVV1^LZze?9r_F<$^=sMTAt7K7l_^C&w(6(HnG`DN?uy2RtQXl*l;QyB2brHXh zrsd=OzVKG~{f%#a3c8QMXsdL@uc|RN%0rYLs58A_OT3Hvr~_J zw;n=OkJGdvzqRLX)GhG4!|{9DNeO=MY0O#-9Fre;k=+D}^G1h`&tmKMJFF_44-);I zFp^}n^^Nk{+_#i5T+}d}ibBc1{bA*{l3^i1_m|x)+EsOmfAoj^D$82K(T?_~9qoLe zoxjkoC}_7&$7(*@(nv*1TK5NP7Y!7rJ^yWJpXX@bVPb;zeQ7BW06>{`0>ybFL)w3d z^+nyRDkvb)|K#9GwBM?XW!eQrDEZ%i$k9$jL_5&^#|vTA0qtZc(>~Jq0zSr$c9(<3 z8!PD<&W|;pJ z_^*ccqc?@PIA#c|Xe3pqRVeO$d&_t+k`Ftm`O6M!MX`h0K9+&E-C*vL4LCObGNdlf zi)X(DFN(GbFsk;n1TS`@@z{|J9OK1}O!KO-{tey>%Kkq-0%pf*%V*Zmm-h(UX#3?l zg($XOEL_WP$HK2utjqQR3pM?jxc{(BQKZJ9}81$5>Rwxy{0v;uQ_ykV@tGlEp%2P3tLj}E7;T+ zpDv;{cA5)I*43zmt##4#(|WO^_v@N;sXhy*k)oGkOn>^8{%IKpWY7zNv)lY+XQip;h~}?vo8F>^E0{c5=HSHDSkL= zNmhNloTTpv(az?=fa+l0@%<@2F|#3@cYOcM-sJUOLAAyAy?nBOG;iZH`?ymR(wxPc za5H8%)4AA&MTyjwurBWo_a;RS4M_Q~J&Ij`#T{GY z4;nH)Ka@+hp3UUfVA}4x2?p%$7;x+<2?m@>_wM$Y73g7HOF8id$?7Dgk|b(8rcHK- zc<8-0TDLUyaK)A8v2ug46a5s^Job*C*gIx z))Pc3ysfI8>|+snSUibs7K)~FO|wdSA;VkJq?o|gUK(Wcc~fRMH1nHo?RekZPHi=J zxH;){Fqu2-WA3mgTPsr3@k3B16vG6nnva3Jy|;qqrHM6RTs8;(BvM?p4#$P)MUTjI5EHct$V6waZovo zf|)AHJ~}2eA={A&P3ImJr`V|LFi5xF8w)dVfANJBMV-pPJ-GGwLSF!k|L}cfUr6JDUFTq!zVCdYx9byzX*)AV zSpevtoxw4WW@seY^VJYRRj#LSXK;qHsRg>GP&CGjuPZl`&t=4l!ppzmC*}*9Zxa+! z75;rU$X`U*v|L z;&lQ2CnxDQUvwq_BKmC}WesqgP|sIW1y%75FWDUZBUq_|{x*un=~r&ff|n613NQbL zdyRgZGzki+3je-YqF?nBf`0vq=%454R~+H^P92*)@_ajOzP%f&tsoVBB|2S^X>hnnr=DVf>DHwf7+S?o_70lP<=`sBSgI z2%AHQ6b+A?ehk&TIY&fx*7ChInf3cT5y@jF&5=6;_e5ZdlE!xsoWA-38 zH}o~|JfiPVO{9N;TrC~?TbrK!gt1M5Y+;ui0nn@M%WakNSkV7G+i+@o3CJ{T>OrMN zSiq~L+mYFS8x%{;RxFW7H=goeBC&UBzhd;ADSw4hwCz0(aBHQ^SIWowr7*-`JfxK2 z{ZeR@ls}!6aw7oO2|~8km}DJ=ahzc^{nhm*kdBS398<0Fv$MLC-`|>^#6crFGNr~1 zWU6IdT{ho@;pbQ&9&@U3C?35v{H1DmdR**XaeAcuKf}2pw$E#`w=vZtHw;m>RjC>b z8$ebKwe-dI=;s|^X{q%!B$EqcWQW}Tl|`AOW*ZZZ>Q|5>bI`x9p--321swsw+TR9mn=Pj(tgv8kW1gXgJo;J1h&=m z?o$q=1_B5O!!wPvyn*gXvp(uSnDybq%m;s&`LHg#!TZ+#jLsUexEG3YV(iK=1|mYT_r}5IQ zN=J6MKzY=MmAt=8M!PUe=~nr9uwnfk(kA1kpMUm{<@wcxnKgc{$w0Y<&Bl6v*RO{| zuy>lF^HxV^I!R|;Yd8d(ij@lKe9+Lqz%bCu=AX?T!b^jzF%>oPjm^=F56WOhzno$a zjv>#3P!eUvqL_Rh-)n5i)~#R?+|Z zt_CY?8{X8iddM965rvywc$HmKQ$zI2maS%v{Rr6OHLnB^_J4R7u~-rQ>(^?2?RiQB z@#v0J*oNEB=!avk*E|dn&=}lOgUGhdcn;Iy6*EpmHg3NT+305C0hKv=R6;h!(|S&a zzlmye*-ctNNtN!CbcD4Du;kSpGDUS@XP(dEj=~#&_}}Jl_WAdcOXBX;3q@(;j411_(gASD0ek? z;~q$5h%iYHZr^u9G~23jAG{B;hct=7(y$0oS*${vvJ-`;yeU5{_`w!IyX4Mn=0~_S zskq+p`|+a_{C*x6%uPA%XFab}zG4A8E%xT0>9Noy|{PjZN)Q9igoaO)XQ*Fopz9RYDN=;y>C@r|+CL=RH}>{w~Irid~)q zT+Hvvr4Dp4YsxW)x)?LYuGC>J=EZWJ!(Gg4Va%cio~+KSnVN5VDU5owVWi8XJs$c6 ziXU|`e=f&-%*DK7F^y}ovsQ_!Y@w;A$d}&Sm%?WL+Om4^oXlU{uOZQ|W_~%)PVX~+ zSIBdI;%ze!xy;5{O&dSUkZSt2{P-F_8n<&$hFMv+2u-NzBetSWXgYlAy4lV zLvXGT^e@EN*_OscRlLnGHvgo<{Q*)V%*_M?f z&JWs9Z=&>p5*_bwbuY|q^YNPJJ4#zWj&R|LD$;L8rGwwJn|M*Ir|44BSY5hpD{ASz@MpzC#@Xz=Uf#oI>)6(7Hq@uc zkR4>)$rc)hg}@8hos+r}CbV?!?1pT6g)xPhJ45t0xogUoyfHZ3c2#b7NT})E#{JM- zuOgV7wae!>i_owbLV7gS&FC<^1fe0>JVU=MpVJuQW{2@beY3;)(!*!#_}1}7iB22A z7cD*wyOtfzcQjwD^=b8dvwX9B8~8TxJ&*5se5de5db5}Cy@c;HzSFW^{mg8B+)N?O z^Cgf`m6@h-%9wh5_h!QP|l@%NsCA}tSF^Yf4AZ!#q_;I4&3 zebglz7X*XRP~h5hL@mT()^Zc@P=q9l`CSg05GvMIS0j-NoJ8JxIEsbbr55u)i0yPt5q~Z}D#BCaHSkUZILy$oMNJ!vYf&r4OGbq;yM4?mHI0P)r(Y z*RwO{$3Oc?7on+!F+a@i%zaL1mHF>Z@bYa2!;un$*hnh{id$B-ug!q4<&Lmt4og^! zSFqD=5$7QKi88|4vZQGsX$Bir)P}QGihG!g;6<}eLKutll*UZ1ecH47c0 zF5A+fgjAze^tTr_w@If9qfSm@(*QPIx$$JxztXQ%L*Ujo^V=zRZ{x;IQ@b*6ST{nf zdJ}zY1AylJy>`PX6pLKv%*zKt`7uxunFHHh$h?6BYS17v&cvPD)Z9GFhTSgSi1ByE z$b?`0IJ?5-+)8H-qn~N>YFTBkxYEFSJn?Mrd z!CKB!aTfxP_P^6eNSLzu2Yy8zJHr6w@!Mfth)udH*G8N%WetBZCdxxczY}fa>d>r| zt0TH4Q7+rsEcpx^v}7XjPB4fy1jT_0fN7zYz$aevvwTopUbTPSCddptpCaq3rklMi%53r zBxr0qbxb-#(%537$`o0c+)nwsB(of;EDjh$={khWz{k3j zLCo~hV%-2O3Uk+DW3E!{Ld80`_g|_7rS`RDhT19PXzf- zU}N0Vwxu7);)j$;&#@)b1H3N)jTmVt8(Hr(mdtuw8XUrV4Mdn2B?g|o;;*G#C_n+I zosyu?)u`}pw4Y`ZjJtWe+aw6+^i50W2z?ylo4P}=r$$-aybB|%gQKX$8cq0jiHQN5 zyDXRRi_vqhn%Dsj<;iO|>by}u7>A*J>B=%4hlHREr@A;!F_32g(%-e!92Os!(N8sQ zS;0LG7Z%uGx`sZg%#C@94;_|%ni62-+)-&#K&ZzHEB1lH(`=}uJ}>{=7&wnsgzxR1Ly zn#JONsJKI29PPu%wJ^$4+-@$8hO)T4;eK5?1?Y*ySGU$uHQ5?P&^ejuMUsp)&0 zkWJr}Pj_nij(mDj)3@Q{7B3tHYT97bi8;S^cx_6zvy z73{D5W@S?e=$*20Z~7F#uVJVdsVN&jv7y55v z{gv7*+Q_MjidN5ab1-pUhapfHHI`cZPvJvo3ePqv9PCxV(Qjj=%~c8Asov4aOl}9Q zzv%O3ISdTlx$Y#0!c|LtC2Wr)F;5 z(sY078qJ)xUxtvp>wNmR_e%)LcC^2{GO+<8%1#7$rGKT5AX8lRb4aGGD|3@#vNRuw z#bMy>boOSP0&rKWc+K( z@HE}F)%4GlIpI13*Nk(TXtnl-_m2?{r=(j)>=))eC9Gh4y7lacfbr?shwMS2-Uv)K-Fj_QD4U*r z6M@nNQI(gaTlZzX%i(%iNXnPk#Yms(V!w3t;qJ%8bnDs()Wq}+OQOKkbZb5NOGibx zemULxO(=B*znq@^eUW_&jpkxzrdv;7=n@3N3a&`Eek4NXYM4Ac%yN0U_3wi4>!`|W z)2$b>$m}3oo1T3|6u2hcS_ACT56SD={AOAXE&(7Gp8Y1VE}XOUgQ&V3zIuxLJDGToY`Q)@`*cJI+TVZ{vjb?Y5Znwz&qf824J;SBlVrg9w zK!rn$)Ze9Bb->2uweakVMfc9s;3CxDGf;adGM2weWW&_&<*T-eZwh?ipsX@a*O&{3A<0hHz#Eeh|smBFnTPs>Q;y7a|^|uOnRg&0ZnEPK&IG09yEl-$p|Fq@^!TQ|Nn9p_eW4AgrpxO5qTT-&xw{ zqBJezq+9Qbuy`RVTbd97{F6ogB*MbNH@p?G;}T6mPiu@TVyWEWZ@gOk1D9O z^cEF5Jt}mIMLr$Lj=~`p@;1}0$3Zs6S2Ps0`!ZBWHMJU}mG0LxSh^3}y(yh%=g%+Ou&By}DRZh1u%aJOb z8v*!*Mb<=EJ!s){6n?S>>SX>!N3F8<^cRZmWNIUye$vuhh}v3WtYJ&;1PgZDud=< z{%4jV7)#7*YI{o<-}n)SPCra9eiB@UR>Sm*6G?qz_i9wGA+@_&>ZVnsK2$CBFHewq zTeZ|vuVd%xjB2R|UrpKbs-?a1-FZO{=)itd#5 z@4CnC<6uLClQ!E|uoQ1Q<$q+dCaF7HdWJaZ`&1}>`XTAlSBsOsLLF?!pvnKzsVY43 zN*eJ&B~+?fci8#|R;(IvP5Jkq9aLTCs%{9Y)(=&!ud4nOH3S19X7&~{L9^Ivdjt?6 zkzW$HAAJpE4l*n&=<7TAN-V$xr2K*b4;v)ws|1sj=SGXv682 z&SRJydI+;>v+}Ak-{uPmSASRYx&U&>(q^S<3TS&MOGJ*@wCQfHqIrwD6Y+(`LdSoG z25{@LMp(YhXbs5>DQ`@>*@I>0a7)K`=-3jVbj&B%SrliF{JE6BF~%b=0X^R){sfTV zvI{vqck5Dy;brJ@zf8&65^%bj*8>zLq)Km~smlz6f93}v@=>_4rLB@QWB+{Ei*fn6wie37_FxJ@3Wr2`b^D_mV)pP1DF42^pHD#ee zdlsAui0+a-CKu{~Vq#QyaV>FJ9>1dTr~rUxT9OnVFWxf#t@K#E=Y`mm6+hE23I**7 z7p{cb`$Ik+$o+s+Fesmm$;{>qN&qR=Xf=##D)v{p4%@#@%r15h1IYl0tDS&Ki4PUIw|NFYn+#eyq+D(tA0pc^_9&(T9s%c zzw4H-qlx|RUW$d^Qwasl{ta{rbWNw9zoSx*XimY0LIk#QJ>ulBcKuN8`l@!#*u`pZ zR_%MK_B$-0LO=ZNZ^N1Es-KRV@cE>^CgW6z8~2?<>J!yc=blCCPpYMEeI}{-YN=~a zC-t&wsUs$lI;mRfj8Bq!RJGLA6G+{uTIxBclKR$mRp_0cA@zl7se7}-r?jYA>Nm%b z`rT@&C!Ij*wbfFaN0WMC)zo7uDXqEF7fuMQM&QQs!ipP5>W7q8Uny-0;OLiIj?lh@ zOt;teOH?;BA}33Y&z_1Jzrd7QMQOO?W1_!W>J>+d{%WZ^9#)A4bQH^#4QLqb49~eC z4f-J(^c4*!8Su#LEmGkhei4ihBtd?{K;QAO{XuGQHKZQio7C5t0;ovth5M1Zx?1X= zb|dw^YN^}rO6pD3QoqHHyV4caQePWNYD2ZuTel_kW7Se$-Gb?OdqM&RZIQD+oVpZmU{AAq>ihW+Vl@n52}{B-y5WE zT`l#Uzmn=R#a@vcNAuEo=~vZK|M@zp_g70j;xDA$TrKtD9#W@OOWm~wKA%}F_0-=| z_Lyp^xo1h;ty=2IymMLVV`q6qdcVcn6{Q!erGA?8Eu~*pOZ^dd8JF&=mfFPi?j?J7 zu~HYaa|fxPt5){!Tpm{%Up4h1Qa@ZRbzANjD-EfZdf_9a{*~2%iriSDPUPuosjpp2 z*$1kn{)FvfrM7CRwKGY*vRdk*#iX8HEw%Q3Z6)dNK4RUl+@BcWKAsoaQT>n|)mL_O z1FOF=2kyHn{~3CQ(jP6Mf&=%!U8HtYOMUSrn00rx)GOyxc2>3289yfV^VL$n&OzEz zrdsNi9F{G8q-yH-NZqzt>cnN>+)E!?vH5r8d;^T`H+P0lk@9=T28<3Sus$7fSwF;O zeZ}RQ0bcHL*U;mxN%pw)0{3S&W|eeWw;~?5e5)!RpYMmqXF@#mLwM*bJho2Y(E}bl zMS4uw?Vl!fa^j*6)ZS0D_pR7-9DDrGyXrGEM{Qh!)2 z_3!tAGK*c8wQV4Q<-W>gu|OU&pUV->{4vE=C-IQ@NiHi1~gL z<1kF;^2CH#syV3Rkj9U@I@|`DH4zt|;j*rx7VzL=(|_P1KZDIOH=hC*9kIRjaV#2j z$}r*xmtZT@CY<#vZ*+tOIp=1K^fJ$v_sb1Y)_g~wn#FUMoUwg4IIHHLg9}Vc^cY(k zPX=ap{KVVI!gvX$4ve3AJAv^_8K&9X^?p#1D*eK&L9%$gip#oF{3aDAPeAaU6fa$5 zWtzI#1G*R+=x!l-{N!j)AfCB$bY(hKg+tCA;ObnJS*ZhDnhc5^;M!)qkP0pf@Yw0; zPH`!h+bd;x{Wh#i*5jbitW`6qH(SVA4$fB8!OqZvE&+h0 zTPexJW!N4$5}gQCE#3N0Qp2NxFY?>VAeNK6^PT16fO$=CMp!g({)&5& zyrypd$)}m8;JlAENTzc~(UjhWFJ*(5|L6S+g z!}l3>QWRfyjq~?^CmJUuHd4Ra;ror}(4U8ep|RwCSYnfdneKd>0;StYYvG6`O34io z41EI2!ZZ7%}u%!0Zws(<(vdp3n>z%cdl2ou(oHbsPpY(iiP^foz&dRQa*6D{X zW7d!HC6cOBJ5=I(c8397yEX+A3M|+&iL@#4w8k^tR_WKAu+eSl>I#>`wNkJZ`?OEc zQ0Gb!3ZqW>S3(KT9VfHV4Kk_HzxZRN7YmMmKgc;?3fgwe7IL&SJ)fF>tV;;bW$V0M zTgp}56YVLqJnl*hJdFIX-jT$tp`St2RKlIb(81R73^VD&lp3Co&-m_c2O$Waa5>d` zh67xM*upr7We2>7{WR_98tUIeH5hC{{&(%?^Q$szByyDGd}cx0*|lBP8#jc_vfd<_ zDvk|wvJAi~LD)1#&9u-oM%Spcs)lg}c7fN_>K|u6A6b=ITm!APKBaoNKB|!2g}ShO z@w!_3Wr9!CIwz`?`Z~o@zS0|s=XzMysZ(#6)%N#k*rPK5zLE=*JH5tx{GE<38;c2) znIG?x?x;sVPILk?`mKb3OfZp$+ii~9L31{%YA%~nJIqL?NFcpTb96Sb+U>*99WL%d z;GR+1f8n~TV~!0x)nTE1+hZBq1$Zy-L^(#f&{y@B&XtIHIb8|twdpDgFQ*%gk6&?> z_7K0vRcysKl%+80b8jZ7x(fT?F0@!e>%<^BPr^Ozq3ht)iKP6&NMKaYN@B7F%L3qk zP|0G;^e1I1&>O-mH1&vvNnDf|zvmb)X95SG^KUM# znYI(}V{9yYn~Vt@-LbRucZy(K0ulVRep#WK&^XzGy0wj|GA{&>jq%OrXqnCD`1 zyS0bWcWFwT9z<(|qF0I2w}L@YrWa0cvp&J;;h;D-8O?r3@nvVWEG+_?{(H<|g%d8dprNd+tX z`lw+|KQoU6ycz3t(vLQu2WooAyDI`DWa0fB`FQ^6>d4ua^*#FrqnqhLcjw3oX&D}nQ3(bZco zSajtJ!~t=HC0n~wV-6Ai@viyEuvi)VCqL#eV$X%bA!nktr|Y-EvgQ8XA^OcL$%|xg ziqq-FeWP z;gp5DqQjs#)d*E^Nuc3b2OIpgXnr6sUS@4LZi?;)*#Krjt*0!*AkY&^_*6CiVOOmbq1oq!NmeS&`Jyn-JsmjDNZ~o9F8V=5Q55@dX{e83~GbAjL2Ae zCzV)rVe?1#lLWrvDtgA^Ue2lCb6r9)4jb)Im9r5Zv~B9KQ?@p|XzesgBiiW6d$QiB z)@?W(yX?4fkIcP3$!k%*r#km{b>7>Xkl{s?Glo2kkt)4m6^NDd;Jj<|s5<}qN0sY1 z+|?1-6vVf@24q?%RGHMzt(;o)wuPl%%5s{2lJQNr_7(2L*a@b8tRm0s`?C@6NPbCvl>Xq z1UR)cZAfWE5Vq(?gN$DDVsbHBXmo_C7@;pI|MZJ3u38H}assG-%Ar15s3S6g>6>6e zPhGnSsV7#V;JaGgTPeJda11TZj~d3B?9e}lNHZZfJiJ5oOmX#emlE~7ie2Dx_4q9? zoT{y}IUYL(&CNS&1+y0?6rI;hk0xS%fKQOmtTi=rrys*oQ7-i)WgN~E4ju$z<|ig` zxNtz%qAEhQ{LM&{b%4dxvd>Q~HWnDUg+?6PrVYOQH;9owa><<75Y4uva|c^YQ=ikv ztF$Nc$8gAHD&x84c<}s@!}A_L!K;PNK)`^Q*7e1-ZlUo$LLIFm@2DLIqjeJ~8}{td zx&&`pRp(D#og-DJ+R=G;W35gYeh%Gtsc03b6OL(J#HoW1w>sPe!ykjJ35yEB4!RR6DpO~E3(0`1ygsI73Qwf|27wR?|7yB?&V2BbC>X%2%^qn(*86`5r<>Yb>I zRb9hcmvrwD5xUbc3(6}^679Wp%II3^$>k1GWLaA$*!-7R7-*hd%jucIqIr}0v$vfa z6N_sc4bQ%wXwpAh=R{SeW*1RauT;Emsj1oNLDgM$0}^-*ke1I0^j{q48A;Hy0c~v< z`APL?)oPGijTX@nXCi+ooM`BTb~jbJQk9kVmC9N^X?Bnz{*(rXDdFTNu5wZJgEx5bn;SK7aTjAz$)g_d&Jl z4Rf8>oaMiLaG2bWZEKDNoi>Ng+Sd|n`zO7!>M4tJh@3NAVG4yE6Jr%8n&uJJal5Od zS#=4MX2K+0- zv0^lW!B}qpVYt)f4?dCyYQA5W8kGKyR!W$Qm62&xK@`X?cayUFFNv95ONS8ekEE!L z9_ujI&YAi#@#UiXvl~z$6eVz1)46YxW0`Kl^OqyePUQO#dCQQ<+c?Jm_(9>duFrGb zW$`19#?gOHwABPqchgYcLhnq0F^fk#G&JR)+FVFefBGlO71CD+l7WLjhZxO?bjmbv zUz2&<_VIhb23GwPyu<#9yMxXqhhW+wG*bvF;j_e7G0*85qPVmD-U4wqC=m4EW)jqM zrTm?tDy-$QW$d|N|2J|T77paiZVB+_I7luKjvAvI@SZ&e)(vA91J>c)o&@W5q+f|q zV6Q(o?3~}P=68*?3vF$-*gTz2`1c$Tw#*8F-`jz|D+&G=^s=sH{y8F1(Wz#WoBX1h z#!cXS;xH=cr}UZ~Fe;$&v+5W6O%7^~kPKa!r}fDea(3Z_?p_J5@;VPtjzx9Wt+-aMAUrC| zkkPJ_W`0z+=-*5U%(2!R)46Zanx5UMJLWO?pUw?W$lnmEFJ8i8r>pE?6SjpW|Fc#p z5&iFU0xGfaPdK&w?k&pZnEA&ylFWQpIzEt@rA9$eLC=r}n`@vaQ8IBY$X#Xzr zd4*XJ5#2e5+!)V-rIA=ue|7*=l`s8NN1-orEdzAbPsb&5fpjonCgv+| z!s*%Hz_ROxPi}+YhI+5|>u-MuajGANYt8KQR#ZW3c*4S_4G6n~CFcsT(&L-JEqh?L zqwEU%Bg)wo*1w>1Y<@(*!UHKt&U!4I7CZf)VK{>D9JuX&pK$MoQ14F3mp>HP{_gt* z_|(n^K54juO{@L7J+a&eyQ~+I9SoBhHtnI@7k0WE__MXDknG)*?)E>nKNa;Woyf2g z8RDgd9;LA)+zY#*ZeZy|hToDQUfO2%wZzOQ*gqEY*T3#WhF!^ErFS>7%;{ymXQ|44 zI6-lk^rN5z@H_o`3CO`u(RFJoX1)K2M7w3>=*4Ps8Gm7IBHlWQh9AD)z}87*__yRSCRd4u zf04xgZJWrjq+jVo!|#o}_b;8u@D7Hef@IvIa+M_`FZBdllZ=}P*w8AHjPD6x70Ec| zpIa;$2bvylvCY^Z<#HzGgG))MTU6W zCK~>|y$7~VBE!pMh?h<@d}oEyi41r5E1hWgt<3 zKvFWA1+brF3|DVrx6ffzjboqM9*R^Bjmltb^fKpfkI1n*(H)PN^zyWV;`lK zyMvp`VcB|ry+w-Y=_mo#iZ- zT$c!~PlPo7Ea&`XBGkE=(8?&y_^_H_u^vE6)r|fGm@0}OFt+L;hhZkQ$L_(avy2Xe zQiceG@bR}Ur}T4U*O}=MncCB&e~x+gMBShgRyf2V_uN2^c@oM6?(GX zh5WZdrc=IjDt}>5@8Eu^M)jW3*Gj1-@f&xqk}7rgFB0Del=ZifWD^Y%J^pqI#BQRL zCz7x#e=rkJ`>QuLXH|CD1t^ii#n@t4o?^zo+>*zZ!^VLtU{OV@@^Zw*|I(`5Bopp< z-Os9ASx)I^Rn9A?81`A5n$61H2eB&e1Rm1=->u49dpd!6U#s#f%V@H*8jX%wl?COL zepcl>0q`xcDwiUQn{D0yEvr%!A@$!|m5#uRDzBPUwJNtrrv~VLILuqQGwiRFY7&2M zwN$ezLnOij%K8rm(PmX1QJ|7lkuv%>8X2`$|FxP)aXrtnw3Cs_uF5~mr@6S}As_i(< z$f!N>_08LkmhD51%|!eAJ0uH-DYa}neq0V418f7j>DK>>?by0(n)=y}b+WV$k$$%0 zxpIo}b;XC?N7g=w?PxUM@?!u0W;?Ehjay_p&a{k`Y{%$wNON7jPH%&me|M3+{2wNl!wb@dnxRv3Mj3iAu?fs1_m8UopTpXInFBcp0fUKpPs!7**%Mjy{Ei#@2$%3DK8=ryr=9H4CR*PU&t1$hHPQiRbaMM zCUG&?rTi}sW#_0D4-GbHB2KgHmJJLtWVQC&_{%Rq#o1DahWSE6Y`%o@jE_ zxq|&_{5Q>9vW5L1yH-I$L=TEec2ebrWR)E%sS}e?MeP3%=}N)n7+v31-b0l)%CU7a z$5)kONFv8B$sCiE<8^Dqu$BXoISx|}TL}u8Fg(I7$%Orr1>f9`f?fjj`Nu|iaZ2>>U9J6K(c((~9oE zguVXaZ`d}>2_VF8HR;iApkTjs?cJ{=G-)xM4Ocw+{H+lB0VTfDuY`aHGvR%HHx_b0 zi4!+h;;wQDulCuO!G`^9Y&K$>TJ4H*u#VuvL68hwP@dHRq1wAGZuF+-_YfE*w zJ3L&W>EXcW8kYIiE6HCk$AJwO7WfB&eCBDd@#$p^O5C)y5`*=v>u#(89ReKA>7CBs zPP{G-mOP!+>epJ!%F>wTfJkA{=m)ean{vjmk!uLw6t}5vH4>rdV-c?Yj2O)8u5f=yk! zPUNa+HZ*?4KJfoGSPAD=!z1l!b7z332iP|Dh*m!pLvp_mh4X7@1Fo7%`44UrA>6xv zn0yk+EijQSwA-d{=0cssb{~6tEOrjrop;^Y!MoVty`(OpmuFF!H`K8%oKjZKo2f9p zh=o(zhv@q)sAH`4T%iLvGp5qQh1sw4+G2o0Tx(K6Djt;L1AFokD;r5NU3HX(m8h>;;2nTEgP=3oIKdXp~o6z`ncl0MB2eBYU%N> zH>O&H_`OHaEUZCa$p2AG4JJAMN!y`&#IZI#Uy5ue5_t~Bt3BQ_={aiIoWmkCOiazH zU>>~M4+RNkpvbAr@2wHe7^twVW!OppZrE0ZuuGW=#<@X<;%(L%VJ@-{EgYPCAl%MS9 zC#~f?U`r$Xt)SpDr*M1_I&q~7OOqa{Y2?& zC%d1%S9=z}U{ZQf?IeD2_OKbmJU>TQ00jX)Bv6)>!%48}2+Z*4( zSytIp<5*4yTCvH^!AZcv4uAL%yuH)$_D+7sczYKX9><&##@>uFaY&G`S3jEl*e3@e z-UJ<~$5#qFJR)E^QcLgLkOX!{5?CKtXYoV8G(GlO4{tj&B{`5qwAR9m#hj-_d+W^F`En=G5bP(|k6|w}Ed1-}CsM z$9D?fDSR*CdkNoZe5Yl-GiPS=4Ko8a`lrG{o_C)nAJCC6g5^jZ9t(Q~V=V_S4f%zl z!M*os9NpCII0@PE7fFol3P?KtAUMfB9u?#`G@g*zRQAKsX=?-D8a7~My-B_|`FX^t zkAao{41i+#EUye+Fig*Lj*91+^ONv65d8X+XfJh}>%o15aECn#oCn*Og1+h?L*|3TkIRV<~iwe4T*+LrG-jGVsLFhm9N4TF2P*N?9H!IDTNab4ur zWa9`81h=fB5h1>%YlvTC_R=!cl0jR9{q&-SsVdJ~-!{&1<+mZ3*S#q}Yn4XU24Ys% z9De$by(_D$l5Lkerl|0C!Ov{1C#|+#}u?)tVW1{joG*qne`@kT}=1;1LwdR3V zdAm_pSg6DRl_i_5hefZOj&!WYA&YG|eS>b%Au%Vnfh4p`eBm~OoN{Ih?xO+9z#-Yi zXla(i&X&=kqb;ib+y8neK$o^b^~ANXFPgQkPA!@57$RxPFVwO~zI`K#o-g$A7c;wo z&%}H|(;iUC&3&7SYk}irc8npcEP3~gZj0S@!e-SQ$>aRipBi2}oCy<)x71l{9=k(= zp~s0=g#bY37rIi@#$J9gB7WspCS1`~KV<4x>&A4|4;@o?`sAry^}{AkWOBfv(=K%2 ztFT`x>inDFYnRQs5K5Kq<&T#WJtx|wGFR@<(xDIt&axyC=^4S%{Ws5oT=C92L$ts% z$T6|I8FH6xO+o*8%!LD-&+S6(?#`NgZf`@V5_&X6%KsaUQ$|k@$Z2Tq+C{&DcF}9) ztGUaThPmV))-Y4}@PeEL3JrW{nTZM&IvS|bdOFu6_eo(3?!{uSLs>1+fAgP;@8|&o z(^8lF8{}S<-Uur>J=hU+(*bM()BD zH@Hj6KE}2Q`Q>95E2lpUsR&(Uy+L>+&00KM9!6o*ecL6P_-8PrD_0K`{VScVOxznP zsPf31!5pgd)lbo&*#ZvK2rRx5vffAw`~M~!R(CGdrBxlrsZ`yG$?8tB)+!j|d6*e` z5ofizd&RED8E_r*B>0KPLGD^}I zxEeFnGyfyTw7WJ~sKlTRmYDFI$niucWLzp?f`E3FGx<5r8HQa5uS15S)4R8~&@|Mw zr+@QXA&sKUvwYk@CN&R7ShLpk2toJiIQ=97sD9Eug?c^{;edS#BNgf8?1LAfZr3UF z&k)9z4i&}5y(e%~WtmgDe66n>XDv~Vyn*&O*0eGBt;mH|18#*TJU%5>yGmEp zZ>@{1rU2Q@i>v%dX#%~S)o1UBTcSVXA1c^ku)<4JESGE)!d2p;iTXp4RL?f;sCxH$J3=B$@rnt0# zP3cF)41t`}b_skX5Tw8{VPT;J$Apa&CA&j8nrgbJf`s~knD^*@zr-6m11%u86-lmqFl zfWNF;fd2s7bjyayw&}%n)ofEI7usO8WPknffBUa&Q`yLPW^T%UcN-lamVQ1xAAa{d zKKb@LEKq3Er_fQK^wgevOZev$OJ`+S3k8)!bgYDDz;JrP3y$EKe~*K;fKRN)yU}2^ zJ6H>q2%SP@NnJgKCeT}Yt_sgk3+s)l;B99zF6mSi57V)QZh)Mt9}L0`$kahzVbr9W zgd1==ZP1mwiHh{Ebh!*fp`#P;tfh3pv)*?A0?V$S{##3V0g5Uu0P^raUu%iiaI zgp~B6)p$jHjJ^k@AMMU}FYg(4NOxgyO+KfQc~@>Ie>+p6uMjkuP!HI=6bqE{d)6ys z#EpxH4C({w1WX8TVC3-#2lwt2i=Sh0=|#C2Br)gDuj%%yGyRKhuAEhg^il#VYQ138$E zF{~WrbLzk=^96xO`K$k);L9mcp&6R7y|jmXaGMpq*njqa-U%iOPF4NWUHyN2FH!$X z_!P`{xItRwI+>c_{^(?#&k@H|jQrl@L~6j0smvdJIbex?Uq}PZgz=hJIwNA*X4*#A z6Si9kRbegVW>D-2oN|(ztUGVGgatllMPbO?QGB&)%9+n4LaUV9Ipc2yXmEmP&tW_2dO7|WdtFdomDYD(wNK4^G;;z7gm(+?VwKS{QXuIqOg zkK#tx61OC;KE4$PASh`TK5ob=FxL#(roSebtD8+^$Y#EtG-N|w3k}(I?^6GeIuqLu zCF|c=^~VfZg*wfUdC598ySUtUMl3L7R>BOK4Vc2~ zJk5NX6fksGo}i7WDBW75<${*7uuY?SxjC+KUQBlB6(naM0t;0tYHXR^NId&x?#vF7 zaShPK*naR*hN2U4(eXNXqN0mKynjd7rHVBR6~Bdbz_vk6Ote>0zX4$>34c#F0u(wHP<5;q`i8-(FSa;y z@`>b?$m2_4$85b&Wl#7|ux(3wp@)sdvhTv@eLUg$zZ}>Ly@h*w*^*wUGbNi=)f4{RUlJbQ|GA#zUnVr5)% z41K+SFwGbDgnuT9INV9Zvg8fMozTEQm5R&;J+JX+p<^WB;sSm2uJU%v z=gU?9Ij;UEbo($Rf-T;w{v6l>%~e#c(`>=VlXYsVWkqMw9KAxjwXxd=AddOJd0AwN zgA9vpKQce%Ssv$N&39a*IP)DCWR2z%FVZJJlM!PXB@dv*m2)G$1{|R1%0&0Ry z8QM@HULN)8=)QDadWNp^LDwx%7^V*sQpr*8c`~xo{8G721ox2I2~8piS)q5clMRMjvA7@AbDGi9byU$Q`_TdR;ew4 zqCh#dy+^D-SyZnEj!Y*aUNHr2Ap?t5L<$KhC;;GMUra$~uZ|RS`sZkjX#NX^RM)rh z!0a*yT<9QO0pnDc^bM4pzV*Cp5*-lIdzGjl5cAGnc}1LWcK{YDF#xbcNc%r{i3r3_ zm_tA;*?79{kH%BmM9jim$T6+D>o>?rHuzPRjcHCc7OMxz+muSa{eBC$saDnwld^G= zVVF}am{`_A!F51x=G5yDuzs?!BSso(J4uOAyB>8Rwp%?-idJFnDOKz4G*tl)^v~hdm{ue_pyL@d+zgG~h-a^CJGp`sC7a88< zjT6200BKGPZ0|3RvPDH<$yij>6TAPF%AzTdH+)v9SZS?(4vc#IC>c zU1$}>l<(!tK7V@GyZYEe}Anz0~zV3byuK>TdZ{xASu$ilL)-8*4+(O@27RwD$o09-MQr1 ztkxZ?44c!sU6o;TTDReMq5R7tR@b`GFT}L&@6T7)Iti3NkKCKny1zaj)>=X9g4zG` z&_w#W20r=ri54i->r-%Vwv@*_4Zk<7vu8dEE-ThfS-pi;g1wf6`t@}O&~5a8WT0tY z1=~-B^2}ph-=BV`3KuHYb$zG*+Iq+-urL51n-_K-08olQ{~60QE!i{P0x-@DNt{uK ztAOb`NQ<$PO}CnkvOcAfUO~KI3y;y)VPqEUDH^VZrh^P9jdzgu(Z+EdT|=i>Ebb$N zKkENt?M=Yzs;d6~lu|4Tq|6l=%3MY(v{7DNn#ctR@#s8X@Y|MOjIpL5T-xoKK||2$87?m1`g zwbowKUVH7~9PxH00B?Ymoy`XTTYo*zYXJ(>bDxR_x~-#MDbYnQP=UaCGe}n(eRA+n z$`4xhnWvidL#@(PpPQV4%@YWBt7=6PSnN<3-y5Bbv9da0#?>7jAdrUKj{r~2f7Ld>3W9{2wawRXix+Vi@r;mQc;Ed2pJ=Nf#}}0s z#`4vP@vZ8+KZnl8UPND3bd1y0AWEPOVp5>2XdTrMpwdz4yA`d`eEf6ISFLn4G9=>Y zLXlzOrLS_qrlCfU{GK+l{8w#c5tX)#rrKy94e!5=8w$8~VQJ}lCoz?AGS$G{pHDS# z7b}Ngnc-!d&{fZ&xj}Am)7d82Z__^urAgBlbWvGo(ZQMHR7)WDNP+D6vcc+?F((4f zhFGF~VV2j?tzF`K0RMpmE%53OV~Xw6>6mP7(Mxe{`sy{~Wq=Q)86SWu(F`J6(~M;o z_NNx_J)7dqUC#zjT17QYCr%LotI>&8prxAgc^Jtly`R=L*YYcxh0=z8ZZzsSqh0?e z(WP!u(dDF1&BqL z$E!eHbuVDi}fZJ5xNxG zo74f6dz{z16P7dM{> z;p2Y?y^eyVSV9r-CMfFLRIs?G1pWlgOuPE_cX0J5yQ@F#^^B`OT@hpR)<87h`5W_1 z_TjRUj^Fh`-rvwqhU3^w)N!8F)e6+ahL;b(~ zR)I*u1W&C^VlXvCJRm{A9JlTSMw?NaCF=tlRw=cn7cQA3wYHJypXBtv`&x$G%V3FD zj~ARU;tdN6?%K5&R*?2%!AWn;l(VCWzm8LDFY(ca(lp0^VHW>I z!Y>2ZOgyN{5$jLiT9V<&!^qdZsRFvnoqN6Lz6my@)*vsM{Ir@W)`ZmBRDOoknx0x} z&7RS@HyW4IsWtUa$>We(BcsZSmqOY!qI;h+gegFDNOCOZ7;%%{ae#5T{lkvu;g?)?i-wU0#TmT zmbGv^wwoEj3i`nF++q}UCO(Q`C8tqgPd zo<-@yt;MD>7cb55{1TJsawyhck40guq5@`0Q->POElzWsK^ESka7NGQdum~)mGHX; zJ^vduw0(s1>h0udJ5M{C^-xvOAZxm7kc*C8l5L_T)g#>VXkR@Vtu_sEJ(}}!rcFN* zxn(`to!kEPXeUTv(JTLpbo3}lMkJy~YNhMZTePyXIp)-|-H@IUT*xp)K%$+Vii>iG z%BWJ}b4KZd6S?-`tYboBhH=TYY+yHq8eJGwWn+r($*YIYHWa*Qp`dzbjMc~+unLVi zgYW=YU0F#UVz63-L7guzX`@IfZr=dmgCIQbD3~cQYW#B%35xnQ6)cXH&$-CW#XdKs zb+jLJBa)e}WJIUENWKt;o}G}lgPgl9q9}0JHRv|JQpdbr%!Ehi%4;8O>3~`S^#xo8E#${S zey|qp+J^Vz-mAf4Dz@h^Ei$KZLHD|igQCX0TIrSZbwdX=^v-Bl$?+U3hg|h~zU4+# z&C|n!7P4#w0RwArL+=o=Ss#hZl;D$l?>Ao5F}b3w+CfmqTm!TmNN6?d9`rcS#^T{X zZtbIs`Q`L?UI&piZ#_tR;(StinY>6=4`)heR=v(^q-Hd}a2< zY&aawJoB z=)4XYF6W-KBB{g+nc=!WmkB5SywxKBX+QpaHkVw>b#_x|(uFy~Yy?nR2-HHeo}wLA zwBTDP^6{!-0ju!m*Wqk|CA~=X%$FLh7Katj->G(SW6d{yiI(IYMc8u@@aAng2^95h zDp-6?di@i=6POMgiVPG=JGrTh>B^YueoxBhUI`-o^?Vy!gt)otxEe7B_vgPC`|{0V ziB0%t{aL?b#2-`5$A}^g*$6E1NRJWk`M9q?*SMy%uai6L*$lbYh)v}&;&5))WQ-`T z;0J=F!WdE9b$|Z*C*%hbCQO#^X}J-vkGb%_oa)V7wXj%B(V(%P*Ft2YNNEG3$l6)z zqr7^)MZod}13YDAPR?{Qoat}sIpLwO;Svs6Db;(cXa6qK>hGJQ5y-wH%PMU$fBLV- zGi_>>Z)0S6c?kxlMwaV67W>mh!hgKuAC|?xvGAuxmQ`??Kh0%vYDm4hk)^4F`%|$s z+6v!}zk*4)6Z5D1jQuG;-Jj~24Ix!0?N7a)`O{EO{#5nMpYp?jb6N`hXrqbJ>L>nG zLJt0PZUBKl)l>7QdX|7Nf6BTXLlFFFph#YeDPbSey8kyTjb8kf>3?rDtQ{%DR%D8Y zmY^n5!NebpbAP0PB>t#d(qH|UcK64Dy4GXbRdj-wyoM|(fAqR2EL0oQZX$nl8!Z`V zOsj%Lt&)#E_juMH{fOaW>8UTsCdb_MOh(o3rVZsmUhI!*;CxBJll!B35tocv*EnbO zS*p1|5^4A&fvxaIi&ysbM~8{r7oFU{Kb;}>W1}R=SzXKRn)oAe1%K4!JxB0I614lH zdbpcng8L&aG-n$P|H~iE<|=Apj{VV%!vDVGZ~9G!>(k{Z zQvRq4AI%^AqnN=tkUuhYaDODWM&H9X`nG`Jk7Vn?ABkz^kL;QGBh^XyBQckH@<*+q z9{xyA%^&HR1CRYtQa|xWl2Y(T_XH65BRw^Lq-P0;*dG~!;Ew{tj6Vvg2`O9D@R;d; zZ`9O=6cT^5gm<(hNs-uTWz&~Wbbqv%xA>zDF1eQZcH_&A81H7|qaPRLLz?vzS7Jq3 zlBF8?c+Z%CRm4XZ(;4HBx_FcFN5>ni7KasQ=v2G7c^#tKn3m)nMcx;b1ibn7fPx%4 z1&ecOSMdKbSGCPMGpe=){bgtK10d30oMY=&d^D2&$NkYmVqc#VYJS2~ z&#?(JYG6(G42b~XdD1zyk;kSyPsp(yAi{2Q!mfNOL)bJiq?{Ysh}-^iBjp^M+OH9j z%OvF3#3J`RosY_5;^tb8%}6D#rVN8%W4T%$4V`C9jB{*B9dc~?4IUIozsfnbQLaHN z1uADrvRun@yYbX3o8ht=Gyw}lgY*;)vZBlrt47GA=Gz6VLW6d1SMhcwq*5BRfx&8V zSe|P?T3kd357u562F{DNg64hUnM-gNE#<{$s5*WT*nMJ{t1wBZ5^;L$-kZ(StN+APrGL*N`pUJd&K+ zd88;xqg@yeEzD@h!?dBy(w^!XGFHT;HJ~!3zb6G;SwsZ#FtKDc@Wc?AxqlCtG2#lhiJc2gLq3sRMH zo}4)6&3V3{T^Yg=fb$5Bcma+X#)$J0j$5CzfoPp z@w+5Y-V5y^;zB0Kd_;SboJ=`o|5*xjHtV5?KtlweF{>fB-;(tqkBg{HoTyLmYAMI| zPs3+Eq!ne!+16J!x&U89;X?w?g)#8SeaPAHsoWgPz#A!0lwzrXM7RGuF3KJ5LOe)D zNTZneM;BK99r*MoTQC%qz$$d%)kh6hH>gv( zFn_M;g2RgU&WM!ac^p<6eHX&<77p7`BztF6$aFykizgEvM?G*P-Je`TmZo&)R^sBA z8JsVdV*5T5O ztiHVZ3t`ej5h@Q467*$hDj(m=cfl+3@jHn4N1gbm+B3v=8eI)bLq2{2w;r`Dt&)!~ zZ=Vs5(5E0bQKXKB#<@OiY)X=_&)Pei>}ZcWu8S z`A(F*+nSXur|Ab@bq8_(5HUU1uv|YyrftuW*tI?9D6*OP@ynCd0~5$*m6kYX9+;ou z%!4rdi7fySeRO|Dz^m|N`Dx3e`S&1F?Sq;zt-EH*;n8t-#UrJY1ob6{dP)}Rse-y2 z(v5D(LcLp1Ig{8Iiz%VpCMEdjK6`?Tlc;?xqy|P;-3L*=7$mT^XD5MJL+;kj{1E5^ zl)i_hLg5_jnNJQ}Jcv$tCBku5iJ{k-h?3-K$v_d33Kl2PuIO*~XMNt2OHkwEU5#%jW{hJt zZ77EnJ@b4elLDMlFQ7vIC*qO_X^pc&E2PQJdPexCI{u$NmSJ5hGQq}@rA$?D5(d^p!?QSV;o0gE&Qh4*)WodlUR@N(^QSWim) zGMfuCPIgmh(j^=YQ;uaD)dyh99=}*oMrta`jFVjqSVjD@72PASS}Bl`KD0w57}TNp@YO%wiF3 zV6p|k7Qf6!Patm8KOt@cpxlQo-gcAx4L? z&sJrUel&yI0~cO?rN48=CYD$fVS77aEstclbrbCj0K#d%f;~iVbIrp=OjXj%B0sq^ zO`3(-#-&0=+G2Wi&>eA6=vM=vxI8MK%Y8thH{ z799erpfp)ZPfs>j)wX}_&c{xoEulQ`+aE(#G2l(MKi0RYVDSJHEt-zB(t3KsVmROP zc}aN87k-)H{ML6%!)}Hc{q<-sAH;Q`1|@-VJ$+2xE#EAbRM*p+DByZ3BG6L-ke>GG zT~4|p)w_iJ-vp8OcPH=4hco0&6I;;O5J_*u?V9BOL^`qvk_p-@!MZkg-Yz|e8*M6M z1ZTF?IV*?W78iAuQKckGX(g=2vt4UZxt1&KrZ7pDKI^S7y~8x7$*s(aGC!iC zoWW%m16JYL>J&OLZpn_!b}(4+dTYJJVns@EvpRI(&#lrJLxI;cYJ8oy7c$SLg2iiP z87H7$X^q*L{BSAnBI%i%5y`vY?QFgnh^8@bVuWGI6FosBEjg6yBp?Mke7nXM3p~f>lD2HPMm#r?ln=Ji*VsOQyK=BPa35EQv>nH8D8C z=CT6)7DW9kkap{{cbWgi6ci{3DntQdt}Dy!??Al{r(tXvBB%f3pdDkr(w zuhkq@q`YX?-59B{DyoCNF<-YXo$;<~Qf^Sg+cP-ofc4U!x%_ANFQHn<8lc9#mJ0ZR z3orXtwAGwA^cW!y&2O+d%ZQl-pYF@y|~)Eoa%TEnph*6F8on z9k{MA2-`u1wLct^rFN7fEq$0mi-M9D3-k@Z>S|+ky6~W4$WBh6L~&EkvGy} zyvg>-`Zg6T+62$|TeF^Tk0&vjGu&w2zdvI%z2N1$6d=-H&*rEb#Pt%Xlv?@it}HM9 z<(tQes;V*Fg%t3;aHH?K=k zV#^Z#Z_E`sbm<%aW7@II3SP8OP(6A{tC4RPu!>%CD>`*xb@L{rE34#~lK5XQ(G}G$ zZUXnCCm=lUDA*C9w?Rh}6!mQ?SiDZn+zlg1_mV$bfJpXskvw^CMpqWeJvGk-w zNmqu`TZH&u#PJD8;jOAGhfu(EMMR)00#KnV*Ny3`D`$zYgPgG4vxMy-=9YD3J{ZVr?qbqZ0 zLpdDndB|c9kHJU5cGs1CMO+etuW{aI714l4ULp;7gvdO-I`NeBnW@(x6r!v7jAcv9 zoZN^sYHDcPW0WKrpYL$%8npTyY;z589FvETsvMK=YignJ+6?9a8lJa=A2MLOqmf{0(~#P5+Meov_N3H!b|pP)o((k$kgbCWbSAuZ1NZ2SWx zlFIqqc6}UpZ72Ney7}FISB7~HAP=lB$@x^lY0=S6S)2pqd`zmI$QHYzc|TM$#g~xt znaa^ITA^7KDLy@N0`y4Ka?GFAl8>#Xm*nG5m%51veK`_j@No* zbn;EIy?7_;nvRTiQPk3BWHi)ZRT~-Icr?6uhL#L8GE%|f5sEX%Ac(Xb&tR&jG}CqK zSw2LUGK?wX`z1UPJf9}StWmg$Hnq?o8#n~<68Lu&F^^K_}XSZzeE&9U^ zYNq%SEPE+GgJtWfS++eh%T}GTWt#}7r{#K4sK;_W3C5P|>6rs($ZE@nllt*;y~H`B zM-Ok_5S+s{--mOFbLemMFwFBNt2qs_L%EJ}MtDEDT26>ll4H$JgB&`?yu&C0j8sJU zu1Ms}GlLb5P4v?szc26bAWf+}4bsY{PJ>jz;v-U^EfHqgJG79mC~fQd@z75*`tdMr zAh`fB*1^3b!Gw=coQvMMcNlBL`Obv8o@6UEZIn0drCT#id)eq~=nh%B^SO0T(!JXGZgCJ# z5~M212o$9h9#d|QBvK5!3s1uSt!9cHJZSRg;-BkG*@%{lgS7k%E*u?0kz_B!;D(j) zcN+Sq}cou$zhClU)p!2nHRT)wJu8^f9KsdR)h<2SctnDI1x?(gi$Dor&% zwBPlarYh;BuJ#u>!z)cueYGx};?%@l`%ADYO|;D_|o{E$6U{p<%ATsXlGwT625A=`tXZ47$m zz|9Y(>jyu?2Ev-j6WM@}6tktlQ2^56TfanUtm#HOi-a5XeN!VG*!@<@O=d!1c zLW)n&l!4~5RnWfzu^TFr_I9<*XO^DXQam2>BniA!Z@7pyq$Y6h@iC1$;8Hg{3gcf9 zw+3_Bn$b*ovXN9{RLnz>Ml9t0`n0}t*~iW3>&NbU6rx{sqBqJCT`R_yBcfLD^dAvz z27cC(^8ZpAgrUtgf7&9t(3F*g!|umUgU2aWV6CXg$#7zbIAJ3jyAznqZ1#DK!;TZR ze{pIj{wTxZvmq~@z7{cZQ_aJLy(%r{Xnvc^&=L=2j%=pksiDkE(_=?-+|A(s$nkg2 z$>4uO9za7G?MbhW(;UrdS)2n6WlWgvXvClBU7VitD>#}7ur4?n@y#5KJ+pvEb;NtOF6ANff?Zt5U)hZ>^Jo1Xl21h| z*UD|P4$k$#iju!ljj(E;bO?79`K!|vLy^DYO)6SB*kH9dEI(JnYZtGO{eC)2_G>7@ zi5>xOf}*}n1&br(voAmrY5U!dS=iFeF5JQYml5u|guG;FAVz=jykM`Ax&r0)`&03c zcu`HOn!mb=0-nDT5m>4K!1})Pf|IAGEHz|2moimZy3ffw_ofVa=ZP)lEY{z_N|n=tr}ESXx2lRpS!3jnI4#GTH?6nNO!67&og_EN>I)m5qBc$SHtlm` zrcL{b#R=r}oL~{`{VPv-PSE?Xia9|w*p=s7rV%mIOnHp-2o zvcH*&*JM_Csyr57jpD*rqwK~PbhE8OW>_8_4VU-k>rJMrUKAZShZlbsTfi!`=UqiH zg=urcL611O@WKtJ{;OfLUgKu0^!p6_RXzH9A>8Ds}Ng>la$-nb(5 zRvGu)2$RSn^1qsa7Ygzc^N1JJQdgwiOgj>)we}4=^V0Lg)KI!8o<#p@k{HL&#Z=Po zj8(_-u4iJx=XEJR5T8}X`F!wUS{t(WHD1W9%zBt~DKo|SAjXBL-MZ6TqJS#^Czvj2h{lol9fL1%kU(7}Dm zvgb63<`$=Uo?fD%!dn#1=)YhPQC5f8!*y}Ec7?0L-sCV<7}AA3q@2k?0PnOT)ddWN zu;y9cFr@n*CjM$9$QH(%_lVaKX*pK}e{F59>f;&lQrtzmbAw0{kI0SXD|`CshB zl7qBFd1$#?^4G31lMmcmwhMOJft{u~WCFS4%D9}`!Vs1kp+C@<>W6Ls7Cxx30`PoL zfeRm0u$#g#E_|te1Klz9)AVAwU#R)6>5`rz9;?AOR8*AHlI&tID|G2O{3{7CFJ`6L z-ec2_aq0TDb)-v+#PTh$jI=l2`av1A>(X2%4O2tHhaji3c_@HQm-bSSMC?r8m(r!< zt}tIEdMK*UA>)&_pb)l+a~vorWxyv351UCk z*WF32t~YJ1Z!>jm`eQ2Q4IR%;Onj9lI{zl+GyMA>wI@MkAMXeq&&QDC>RN3I?rq5A zz$gBf#Go)Jgvbxfb#g#aA zT*Kmlip>OSu3^ct20$-%(AzR0$FCtn>7NC`?=FT%D!6sHm$=Js)fC>6XaoI04NLrU zs`*=V8*O z`tB9dFcpv}C}6tm1!O_dSxEtdkZbM`k>whE`$9}J0Ww-2`HFnw$2*MRg+kk}L>z7SZjN?ZDtVs%}O(4dT6h?rh4wJXds%F6T!+}eM0Y1@{ zS!B+ekOpqqLB6+Xs5?SR(W%#I12LBVi!}?JA=M8@DtiIxxAV>VWk@ITqd#b|snHs& zENSa%@K>+VEF?Y8K?D5NZ&A~;kpIetc*$zD<7^b#sq9y@rZ(k7YobXx7wxGj(Jnh? z09dYJosGGdENPplZGe?l6C*nuqO$SPGZN542cWGniyPW74lKM=|8+&7lghFSxk{=JLCsC!nG@0yTi3NTt@*~owt~zc`y?d>rj(T8_VyceQ$aDy06Z(?+qB|dnnY` zu4tSQouL)TlcG5n#o6O`RQnyTeS5a{9p&0#1@a02^tb*PIX`Zl?FN@++I+dXy=g0= z=1bvqYNl-SgoGc8gb$sB?Xo0{5DEHT`ex#6RX$r+JLg*&oafGDQvJ(d`oVTkeILycfEMhx9_N zTyiZp+l_DC>(dK;9kVF+LROU1j8%iPAMMgEU=_X4Xu1e|_*~wkdZ8^0R@@8eC5}?H zi&v``dgT)M<*o&j4|C>UItQly^JdhHnVc@XAHS6Hfhobl_;?v%I}%q8k!CNuW;(e9I}R0pvAE zg+a!?qIQZ?`^7A^qr|21^yUKa^gn7W_d;SyAMYr>c`x)Gn499k#*}si8zL5HLen_U z>}1lZ{E3w@r6#8_e$tLRildZ%*ud9hP`L$zmk?Xjv&tQTq@ zU#=ZGl~n-fr&F;eSf}#X#hE4?55WAiRne&Pty4+9Ptb90Ou|hf;RYw+>Hp1;@C-eX z&BRviR1BweDu-urzDgVTG9coqz6{KCz&jPOHG1I!@hLbZ`H7XmDd8u~x{Z5#sVw}X zQyH8P{|bwDO1C=k8)k{$NW>>jt;Jy4tg69@I~8IPBZs3-WlO=*jI38KFjei1HlqV} zt)O8jglr_qigv9JRk`*Ff2S~C#^S=4vFxT$rwfrA9xj#1+V5iX6?zJCD@xW)Mfoz8 zT?|--uNX?d4XoK@(^9_TT_^*H!n&EzF$S*DYKr!an0dAD$)b^I~qGT zi8%0W#>x|}_@@8#FYtb<#R=PZqYj^%;r0=i z(0kcr*9y#`?8k(Eq~m|`iVXfm#Bgc+RLeEn@rG4dX6Q#{(cfckXhn4IImk!T>ss@~ z;ot{OjNQ=Bgn!@A{w)3@gkQ1kBQ(3Zn9L2$|L;tbM+@h8#kMQ6X{1J-^;#H@!mZPo z8`PLTY-nSyekfN)wDrTd4(B?Y>jq~k#sjhYNH68{qdQnkA7<_*Z-XhUjBfb`C1b@(jBVLO zYtW32aTva;hwxk&qVM4tlh;ZxS`6MpW<&*xmJ=L_IyrS&a_Yr~7*b~Z-3hk-$KUF>{g6O00Na_Qt~J>pS6(jC1S8AsUF~v_1z(Sg z0upWU;nKz7)MBH1AqP}H}nU~w`2 zB>D_ylGc{LvSh5(>f*WWTN!P+oi=d%FM##evyN+v*5ssmysto<>xFPgnzsLO+*=YFSW<19U!h^Gw6)KYod^6H{FAgO(C)XcZQ> z%(t6@#a?|hV*_;-iDp<)R#>YB=SJA2UBD_d<8^u-nA^phlxB2%J*^pfiDsyFabIc1 z3@GO`T6^sKG84@RDC*l(us8}`i~b5r(wcD@>&;4+xg@Tcl+lc9X#+6^fc4jpX6y)Y zt{K7s@$`zHmW0YRW3Y%POCj>S+u(glGd6F`YR2KB=PIY?<8Nl@S(yfv(TuBjQ=u86 zppRyVAFdh4nYiP&nP!M^G$YMl<5=M=X@-irX6RR0GX_3YXHqtX{t!IsVcch2C%&M- zx`fPZa^%g?%$Map*S zy*$CP=Fluxl3n3ns+l`VrIND^BWXit!*X44QaVy_Pc}qsko+Dzg|E>sm-J>#TV6AH zqkQvBT9vcYZgeW`mEck3kh^VQe?xB=t4I1N;%rZZbmX9h6}2;_TWLY5IMQcZ@nb*d z$3iA-Q^CNKu-4~P*FQs{uz>leYAh^WsWw-hb!Z&0PjdPLoDO(V zwDewwP{@EEB?02a7N^iCs*Kkyn?RUuY_Vs8YXWc}%9D--n;oHNStHkt=*rUp zz}mIwG1`$RgqZ^rB2O7c*+X=xk7AUq5iX-_E{wA6rckE~ohgA$YLwlDpc)G{{3jr= zqKvXtlu@=_3|K|qaXXG3SQ9Cb>N{o{tQKLwtn^Z&Y%ax#qmaZ=r%RU%1!pwqZNTe= zY?Q5n#o3bEL&ziTA$I*C!hUO0S@f7=FU+Xjac9ay91KMB5aB!{JPgDE%FX^S;vY*- z(7{x!@q3z3`NFhUn1gsjHgil!quJw;=zC<|azly%E?F<=!MGYN43tBwLGjXB9+ zwK%L;-$Y9BG{g~Y4&f|zcG!j@;AOEh4^3lKuy`ZwioSb#R%52IhO>0NOXu^fJWV;O ztxW7&14Dm3H{kusQ@-YGMJumLnih5iy8AR!pmA9Rn$6SBW<3-kNZiOY1ycQ#0u8+= zr9ffj&psmY7ANuY|IUzjg;*1V%P7#lK-s?noeU|gaO8h61qBL%5{W2~_~r`q=&350 z@PKtk9F8+*h-z6+Ahy#JT*kp}`k8AMWb@Qx=E`SCLW45T197C{MQl0UhD6`!TK z-sBnI$TWGT@iL+4A5;@X5`jJo$E^DgPJ$`Pl%F3tbZ)=Ym|uVPluR@46wuWiIV7P4 zzb?Gd#FN#1%)y=SOJC5cWX0~>Yf6SMr_-@C8hwcuPd}nKSyKTdpAQQI`-=wnj+6C( z{_S=8GaS2j@g@)OVx{6kVx_a)O7HoHsI!k~G1Fo<{#h=xHEX3SPm#7Z>nTK7QD$0H zBYb6x3@&#SR{HcAD&9VqHz_N9z+feNM-7P8E)K1OMcr6!mQ?SnQx( z(JRO!?blyseP(H2*N4l_&FI7AQ)OG%0a$-M4IcS*D8#KpTiq;cMO@6jhF(x8t*8qP zsi9uV+rI^?eb0gDK^#u)Jb~;p(XzB02iDFE_WB(WTj#_+bxwxZPSL@PkJykMN{;1C z|Mps*bLlXe3qfQe9SS8Rx7YPxbBY`LD?oI7M1x1q?3l9tQ_VSSVbC(ZdvA2;`L*_} z_Oa&6c~$!upNq5;B8W|Ef3Yy$B-`I>QDnYA!nLUITAn1O7ngy#{Bs+y^lpJKy}O|R zt4?)R{p9NzR^5yknC}5*d>#im%b{v-p<3(BsSN#Uru7F}aM&A7KOU|p4&m%*<74CC z@S5|$e~#n-LKgql!mr%yX8qzc*Ky-X8JxeS?NxWn28MhC-*84?iGGhm3{&Nt_$g)8w#4oGF##jepDJxuN;GlQu81e%jHWe&3(ynM40!#ar z%jncf>$(nXIWePy!@p`A0kHmhHWcI87*i4)cPx*>GwAI=f+-i$YMj(Vp_QSDHud*Y z=6Ztqu=|n(brL8ZBSLDOkn6veA>;-zAO@4^=Qrm~|9)c;B#=XrenGM<$HgJi0t?-5 z{O$zP;?PoCkgkm*l0(dDW8Nmm$K`-09ic#?BccD9BjsA7FGx-uXF4*<`yc5WB+fS7 zT+J6GkD+s5xaq~Lbl;Cbj+eL>L1J`0%8?fLXjb@^ez%FZF=pgh87}W;V!IN+CTDvuTEvuKXIuE%LeXCpOxf#KR^EMt?q1&zmQ~;iI))XTyEfk{)l# zoHJ;NJb4@cYN8)GtHlmLS*PiAxMXJ?8`GiEBrQOa=;FZn(Hh#7@>k2p8ew{hc-J&P z`ZzsKWvbIacs|qyA16x}TT!NH9jqsEZ!K zbNoG)be>Q+qkkTwwp4xwWiXXG?K3DU#Cx((>2nI-I!^l2ZuwCL=)6qn;)E)?_~tdV z;(l+%OQ&aA@v;bvbFCS_btZ56*TtELoG^y}#W!>@h^0xY;H-6B+`@D~2~acH>bkhG zT9oMGT=B3;`gPh7Ci1c_p01WW<}KMkEh+2bhR$lS15jyJn`A#}6v3jyby2?(U2OHZ z{95!AzbIQ^9j@IJCh5YehHP9ukpKlF(NlEMin0h%ML7-FF6{zV?mLAv+UG=rCBskY z$Yuts#bMcJePN(#7f(_~_GJiXai;-wpBwOcAyZ%#EKU@Pdf1&-;G<^2uuGj`f0&RF z{cGT54Jv?5GH_G6)+(bb`^77cQ6W7P4&Kj3z@??2a=&;g@6jJ?x(%1@J)k)I{%?s_ zoU9D&)*|IQPRh6}DJO~rF_erJz6^ZJz}^W7$dCWkP82TiUZe$nxx(FLf=-%MUEx}f zmi)r^h1w-CSGcI&3yoXA_XiP3(zsM~Yz4!5z*| zzfu`K*SHC)MTUcg=)jhdReDI3=TT7s7RtT@Yg$SAE`a z2*mm9kZ?eJZ`S+$`6w7cN={8Tjnn(00D9o|j~$Z)jm;aLCwh)`dR`fyq32ccAqJIE zyNSH1m>nAFel7@L82C^-vE0>eZxeUiHlH_iS0v_#qTb1T^9X5%in?a#S6MU0xn?X? ztu;Ec;)T#*yDwUzdTVfI#ofoLT;=+MYYkSl^#`M*8OK8TKfcDbW%nT2b;LhfEfMtD36HDt$!)^PcI)X zozO$!XynL)(j*GHLX>!kC?~1;HnwXj3Y7baYd(|p6D^`-nN#x6i5W^B76)QD8I?GI zH>MIdLV+I{UQxl~3$!cxKI};A!`GUS!d)(f zJ;r6Eu&0Sy-KhS07C@p8DRK)Jyt@v(;>}+#Ya9!&`1SFdxvmA#y5zlRf%4_18Yr*t&`)eJ=_D3OFkVKvn# z*XyBXu=c&yT+1qBo_|!A@H88TFFn*Grl-(qMHz~iE!pRLF)0D7h>GrOFufkeo0MK( zXRvG+76z%8p>}Z`(uhu=!FflK_fN?dY!6QvMSYtJ7SE+!Q4vn2_4=r*km@Ba)vu1t zNcH48>CAGPslOgXj)>Yvz^7E-_x>R&q=&-6d+Qrt1C^`vv%Gie{JgU5nwOpE->!8- z7=j`6yi9RqX8f_x$$&_|qHTVbXyW9{=pf%`|3T?Wr}vKIGW6alKE+U63;8P1A?T)` zC)U}#CuE8XXj+hr2oH?%p7GOzrD<`amz|09L`((a)xN0iAk}rMXLOv~n6sbxW=VTS zbZ*XnWVLJyU^#dopk+doc+XzfvPM%Z3!ZZ=2ir|ylrDW@?{9s@v@C>vR+L1Yist88 zjeNU+RcP4}ha0SMyh&-iNiJ&1>2BTMp56Ug1!!TFAONHC7ZHyq_nMby|Xc+C5yp}mH=3P zJqL@K5XbM*oiNFL%{gB-Et#10P-A(@_H-T!voB9j&pg;?r$0aI?BPBeDpmP?B!AQq zG)3(&e`JWjSrdKxM`cZ!AmLh>OrJL&gcf^g>X=@O|Az`7%V}K%q9t&|ozC}QTe)?n zQ^F{nGFF;=ifU-|%zmotXouV*u;>(pyj^?g2|C4titcSM;5iCPzy-0gtW#^1UWMfL{gJEL- zn9DejHWjr@CaNmC`hNPiT8Q)hO*mp7RL(QKzkjxWyZ^rX?o0P?>kZJqef)M=pVYrS zHWhkn+yGaQOB78UZK_ry6`avAv7&#Q zxc2?qZ13Ohk+!VSDuW;FXIfV0T6VK*S*tFqTV-(W!4&AT%HT+YRc)2Q7SgiyY3x9& z3{=q1=)MdtrnT&7cFL5VbS>NPh>X-WLP1jV>KD4_s#rO2?-&)*L*an<4hG1nujS=< zkLa!Geukk6H0G!Edb~a@rA1?XqyHn)1E!(Fc|QB2?8zdRM*8af?U@}jrSvSpe%^YsXfdK>7?9)W()lk z#Fa%Majm=zlY>T`f;jmYpG>Z^O3B9;Z=*!6S#!;}tU711XpmL{*R}Fu7ipk>+39u? zN_K`>V57NTR7EFfMn@g~O0+r6Gorej5ns_Q5`hHX072?PjU*oTGk|QMhQE>@9AMP< z=9f%c*0NW8WPdfkvRAyxU{&iCcay(5jm8etE2^OHDSZ+arnRO1GPLC=*OoI6&1lP6 z`$!R%V>bHhnXh#~eMWu%7^OlZkd$zsEv>0Nr?2rc9`Y>#&Tp42;ZQC8@?hMw=O|xa zWSxu6HJ3+!Q(9epzEuv&YiGVH<9-g>W~^MV*7ni=7v3%Yi09ETtN%2^PS8p0!~f$D z@@hKAbzo}Gxx#e5VcOU*)y}-%s`>C^I=?;KT=7LYWoUS`Zk^gk7fXb2tg*29;p_r> zyoqw29a*xcX@$M)Tp+HZn%%I&Ub8>jlHDKvyfL@9@nen^Y6OPymR|SVc>GBinzK`j zst#Qtxh6VdZ>YbUUxAWRnbf1pq^_GGb>aVHNZq~~sY)9sr0VAXozx!@j+T|oOuDsV zh%He?f84`N+O$MlEwe-HaaBW*yKy598wi-RRJq&(ba)JMJ`b_!iCl6mXV{HTTJ;%Y zZ?v~bFO0FRXrZ8b#2{hBCtww$r*7OcVwl96R1dIlFTsk(*m{ZZRl9iVC|cW0Yx7P` z-bh0a46hdgMSYtJ78#w^MDN4Hv`uf$j;GQ#!zBJOxq~t`{XN>y*?b&`^w;xzN=M%2 zx2yBc5a*+5;ehxW!mbj_X~X*=B0k@2O*el(PX!v;z*-bkx7n^e$}ay%-|;A7WhUfe z9>y~y%i;n@%`Ciu?(V0-g)*_$*&8BeMNQ zn4gPMTglcSNbbdLrs9N8cUM(C6lUJHVs0f8;z3LP#Cx=)$(XLWE_-i0c>AVuDo^w7 zn~A`eoWP|7Zz%#_5o2N~tV(2MVu)kE#v2=4uP~>sollEIaFRO~X;_t{?)tQsDM=#L zUFdi?(h92i0sv)oc8yk?b7WPn;Wf_^AJp(#eE8#)z=^in9=+xCi`UYJKi+i-q_jFAn82=of|qg*X!M62;a0MR z>FnsD5%DV3{}GKJI*n8I&#?G%1jSabWK0kgI?X;3O*PSbyJo2Q3(xZ7mm-mFQX{ED zA?-=Q7^|EKt4F02(RX(i1H@>SscOs8L^Yn@JNQ#up=!@;%aZDNbvxQgf}yNVn$pNY z^*CutPwk{B8%-E+7K9DfmZzkCeA3idNVQ#0GQFS|(X5^MJ!4vT&1BXxv-zpC3k-~R z!x`skC0&PPz~OjuBpi+x@2n;w*3RmWdB@IbF6^wfn}R-;g-J}3Nt8Xt5_ABMp{IBZ zD@rOzMcG+x7Xwz&gWQUH2Ua&xXUbzV8LW7hq+Ze{ky1QG9^-Ht#?ESoZ72d>FJwK4 z3Kmvf zEVj4{*d4Z{sMkvW_&|q-Zc)PS9Kj3^d+wC<`3%WIhCPjgIvNLcH7@90$1j8JBil;V z=W9^MsjDw%3%K$%QrzQLU(z8CYUp0GVtllFB{}1jgKB57Dj5@#&<|{Q`|@w%S$81I zQ2LGw@~V9^g8VMreqsw45dC@wIe@p_9eMrLG16Sq8#`tgxk|1H`#F6(b3hR`71d0s z_nndF8T{_V!Bi2BIhaBg<~@Rm#cDBnrGwG(bW;v@Fp^xfExtK?pez>Ob^@_R;;Wtc z{(zz`i?DX)f&ojr81>ce)v1ref7C`!x<~ssFf(B{{^5~i8_fz;#^zN7)0lF&$6x!>Z$&@H+K|1i`kU*yCm=BfY%F|-&Mh)EG8PWL)Py;&px%%dTy@IelgR~F7T!r zx{dUt&%UFJWCE5w6b{~xgMyMAntRw|CA`3GkK9!N54+NX_TS!}@vs}fQ_+bDDro=L zPV%tp@(>Rjm>DvMVt{+t#V{a6r^hVna`VkM^1sdl6+I-wb+qR0Ur76li=xt&vCM~y z727&17VVv3#jk0FdzQ~_E6>&6A)7{&d6s>%M0HDJ?I5D+p2e8ro<+1qi?&wiqDJ7o z6}ogQ9N;&hi=JBOV$W=Ijp`&e?9HaEeHJs+BXkinEOd$Z5x|5)GL!mA=n@~Dm{Pas znXOH7QM4XRC|jgVK}N;I4!;tMtXp3+wMT!a60r&wVimh7bm`LP1jP~ZBs-o7#jkp`!RH6x+bO-Lx=OE1++HH0~C zLPOOSG(gmbAVoiuAf+Z7q{xIsHYTJXrG)DCV?t`Gn@}_SNRfRL>XZa2Z;O&}w`|(# z{rp_Ku!SZkuD+b@bMVk)*VUJFh=Us9m}7A5tZ&mm?U&LQ-dwpd02kZ6U4!wSGE|N-g>2Nrl>h*7j z!(|^Mi*g^MUx|+y=Dq%KIl0`tVRCRS8`w>uMwdPrwfU$AK4!M}%T| zScQ+dUJ(h|7~Z7DLz4_voKe$D`eoHF)|`mf*p~+7of^JRqPIy#Eui2NwG=GApnmz5 zt+GDm3ls4%Q{Bhx&ob+jk2!!IjIjv5R)76u)Sj1uHY>p;91uU3g(4-Pa;Nf3u{Ymr zba}t50yvd)M(vbW%bjz`s0jj|MV<4+ZRA;kodu4DjG7wgo@EcXP$t$gYKDl@$Wsh6 z7F@hVT+}747ABIe@r2q)ML&Erh6^8!v75p$U6{5cE0!AhJ~!MXt*3MZR+O}diXsiW zv7j~tF<0y7c0WR`8Jr7No@`XFUhO>OgXKzU7265t3%IiGJwJ@93_<>2GXc3k+f zo!t~B>e9#i9I{2)`&dyD2P#U=-7W^KLMMmOIRmRk20WXd*(Lko=7JS_AHAf_BBfZ< z0Ndu#7FM7;Y(tTF9~H6)M+J*bXkN4(8l2Y2^Ugpgw{e{;?wHZZ5^Z2zF);MkkM|i5 zal!k51LB(~UlJ-OevF7`@wmuy@1p{ZS?@DyG{fUZYpMmg!GW9B0)JQ!VgTGEo`kB*_^amSCNMoMeJ|pQa z@TPLX)n{%l+BBB5a6o*k2Esz+l0KIANZOk2l2(BVNxwR+kEAWF;Qh=>G%k^J;ArS) z%9-{jO?+|U+9Yj=vYXJ11?y7T+vSp0r9{#lM2C!8&X;dsj*bg+bavxMM}>{4lamHs zxQR)+$y|^ZWsXiY!bwofFL75P>4WJ6VAdqwq-=UygVo}&>{FT8v}zZJ)FHb!Y9(o- z27e(Gj9T2;1r+sdDp+J47yFVnDN9=GO6yNU(!X~}|CuyZDx!D?yi9umQGc2eZLg6S z1;@oW6I(=#hLm9{_M`VI9o1jG3PR%TylPQQw2^VsM&h<$JGb>K;r2MsXD?OKm3>`Y z_!hC<6gqV2<3U#qGj4}y!-}%6OGWt>v0d5)tb*IW!@a3ZSr0nbU{!cf)h@0tZeIrB z?CWyah9dEx0Y!bA3Kr*x+kZr<(ss4u1h_rZxqZd98E#L7m+Wc+u>N{hQXS%?(Wzd2 zQ;2g9Djd95j=D6Qah(g~qguu}fx335&gKJ(f*EZ(x;))A&NF3hL4552{xf4SsAGue z&S~TaZz_)dR0G|EUS#4+h&`4%4ujO$PKe!7=ZQNt?up3gryJ0;O_S1J`8VRPz2+Ho zAVos1Gy2K;2vm+ir$J9{lyhgMz1OwK1v_PB^b;J!YLM*%vPL?O=#mZp`Du^7$Q|7= zG*0V$z<$fp{Vs{WZk>_DdtzdlBP?a?ml?PPz8AKkbU9|mGQRX7Zu;TfC83$;Xl7;6 zTmza^HO?#)2mrzh{VGQk-9DaC8VP&oo5k#756fvVULe@Rn&ufFr(5i653L5P!X7No z_!&jH=X}m8Rp{wORB}C4p~^g@(Ur)bSHEtvn zNy7CG_y+NoXM7+Dhu+!%Myw{!IIUgFcRuyyJ74zI0U{(s6E|XRNgtCP%ajw1Uo#H0 zSgtNnd1H|1h#pv9+R;xo%m>VN+$@sqK){tJ-!{pkmiv`W)Sx6AHeVXC1}ERXO*aU0 zx+tFNSDyNunU65wy7dwly_idJo!uZj2jP{+L0H+;aS$q4JPvz~K7tEr$sK(%lH0%~ zSNMEJa@W&_)Nv4}z@_-4&v1CYv=Ez1Ilir+)w5wj$@_`&+QSn;fAU!qv^W?-M-^yH z63ScOT6TR*+2I*J71=?~51>o^WW&S{_jy;CARpjfe?32y7i*ae78XFmLM4<%Pp)Bk ze%kWrm31LVdAS+WdTXX!6kRYV_B=PRiMF(pbLO()8O}_mm7Y*8eMSkZ<%#mSkm9dn z8BykY-W)3JN{I5&+H#uJOA04D7v77jG^Th$S+qu%t!HdwZ=I!)zmjiOgGdtZ>%T0a zY;Oh8+Lxq;3`uy@>}8Vg_|UtECjdIqe_4jvzvv?jIc1pB0OJg^;m^J`p!u;hYCKIy z>uEG@J(F>7l!slUg?i;Z`yO3kCy;CXP2_<^Bi>bxlnc{Ac2gLoOP`5y^%t1iBr_2& z%7l%IGGSwvb^)shET+&q0;`)|AZ2c+8mx+ma@8<3wo9(H0z~!!{JjM0r3_-=>1a zttGgb$USXtSF;Vbw17|MH5SHfyG2H+wxch_0Rhs)<~N2s>TzaM77tT7us-jUUhRTYs9j3!jPY>BL0(F5ekP)za)FWT}(r z91r%weCj+Ez;Yv>3VN@tJPHVt?M4GL9Auk5#P0i7Qny!_}8$d?mh1`6SQiGXcDTXnml>?RwZ$u{ zlQvk^qxhp{mC26jQ!owesW=9&BTmLmNK`$G~N%ki)BEhQ&Iq? zc=*M#6xmnmn~ifVliYr-JTc>A*}Xmi%S~aDE@2UGxpx~q1dL&&DJ$8mOhNT9H><%a zD(=eWChXCA9)ir~P0HLNQO_4}Yy>t>FKM7^7l)0c(*3lO@v%KN(qg;`3e1gy#R)>O zIZ{iT+a1TF5_4Q7ez8eLCFarw#*qLvWxGxMF+5}(cz8#C?-D}eSF-eY)v|9i78+WS zQ%T4?lHX0_GeQ=D8d^@(jUBJq6!vbrfCC(-= zUStJkx#L^JlT@3|!UORgT&=NS|AS6z?3Q)lJ&uTf+bG@$H4)uaJ`!~D2uSOVwy&Wr zNl%-wYcQZ$!w9&%eTit$LJ+;kZSA8Sii|`#kx?1@)~ug{AGw8t$1mq&T>Mlq|2Q@e zB;W%nKkIu`bdUjjL9cApCnNQYF;`{WZ0tQ;dYd>nTaEOBunpC^vn7c z@5~gpsjcaLC3)l!_)r^l1c*TJP6tFFs9zQc>TSN+;D$gj0hk1Wecw7zzI_>BUlddf zU7na|+hSaf3MAk`ICy+-K;Ge>mk!u$L1)0ze=*0G*h=k8g*AzkYiG7`>&i?IF>|Jw zs2`+4`=DP`fxp zHgq0M;n;rz>gSsTya@{CUSvb+7NTeA_tG}>$HTFqAG-}*uwKT7F2n=*!69Zto*@^W zdIROj<-e)^tzLgO)mPZkCLTt+%YzwVB)h2g#*ErSn5gDg`S_7#U&EqCiT2!6FshDU zPgv!9$xMd_xW9Cx?^N#LRW`cBHHTP#moqR70|Bv@p5*LjcD(TeZ;vqeK`6<1qf7I* z%&vWa#?3pI{~L2H6LeEJng5T=H8<*6I7z!aT3k=+Q)r&6&Y;kuqU1tV4_|3Dm?h(` zLe5KZWWX9h9xo;55+;=|816!gL!74~NLw(XD`|6QgYmYrVZPdc;&#{-UxlWna+Q|~ zRS7C;?D-C`@CJ;%&kR=%i|opDi^6+ z6HR9SQoi|t56NT*SgxTh+|A`}u3LAA{fK@-bO z8RHCYXd9wt8omBt{*Y@cNUojLlvJRb0!ZG}AszZp7X3p$YxIxI(!bk(K!3|e8T$Vl ziRGuYMH{`3baD+HWQICwruoQm~zAfS6S)yWNr{eZ?GF-glZ=Zxp;+r)))SC0d^D;K@j zNibrL#?s!CNyDrs)3a>tUaA=blAbJ0h`%*Z`LS)njXO+xg|7Gi{b`TZhP#OmHWP0b zOh)@kkxbyX8}n%&iu&fnnCIzzQFh{K&MC*slqW;s5LGhMusivjN>i3qGxtE@L4Bw_EqlDXjwDzX_z21x|oPmdyDGXkoHiZ!N$UfFYwfD=y94eUOVJl*+oU4$& zi$Ou(#gVAgJYUC@P1^J32(O=|NjYCNHP?@kiCBK=A5-ZGi*)#K9s^irY5&I*nS6##-Sh?48 zDFKs#ONp3|GPBoP{x?5uvD@nx8q0D%8Vy@aPVPKx+&f85 z7KGyKth2A?D&-BMT{z$|C4-eFTzB&sH&YZ<(Yec@{b9;D?VI(X{Z7W3?rZ+)mg2sq zp{q=Lm(%{>;aS?dp#5HyC{6nkdZX%Y-e|uNPNrx-xL?{uRdmn0(5^VcY2VyvKc7~` zd{^GjY5!7&_N8Uompbil{co1`rO^IY%rQ;-RH;VQF3M>CIh;(<-UMCwmTmdEl*d=Y|Ato?HppSYF5A2^&lEDLip!CZ|`OvQLI ziRk%vq#NQce(-R7V#H7R#Qg)$>HS*lnfXN3N%=(j#nj`gr5P?90Gy)!3oRG0V}i&u z+SjuHJ49Fs&=4be3}zC~l(;%F_%a<}UJCq40shxX9P(2Re4d^q@QKO>E1;9v5&c<; zFQ7B0K9+X@QU67!*U;+f{(jUu_?@fpWbSu1HNSJXc{U${)g?Z&h(N^>3$kq*I{5o2 z6{M}aH0yjc13d|yOB?PIb8G!N{V)9`qhy*l30Xu}`ma1g{j3++k7E)_+xRg5u)k+a z@^B2%O)`g;I)t?#=1%yN@*l>k}5?AseJ&M?dQYP+t=umX|wK@ zlNq@1FdxsUVjwRyOXX)JEfh z3u|Z05C?6j&hy0ay~hCvrABAXm)WqKa?J<*C1%a^x3a7OfWdWtT)kI>6E)Es2Bs-p zxKKvLUNlk)_`uJxK%hJX4srh$LbV1%+C#FChY9kU`9O&ydiD)cVGXNNqVW}^18W$k zA=J)%Yd~!*OR{$6ya7wQqH9y#>SXRP!=^foZ^Btw`6(SNWAcskJnnZh9TRF@=FEq# z9*nLkf&iU5K ziLy&r`Brubb77aT-4wcX>67#Q+dN(bG7Qe9)3?9dhgLu3*|Yn4Gxm5troqlxVCb($`3q=PCN-6FJkn^c$Sn(R zQ8=UZVKawda9?kWP@L8G3hD10=@=oE@p{g8KiOl!ThrpLiIca28tw2WS-6ODmg`qJ z2diF@T}w8zW>b~yTCyA8w!l(!je*PA*J~xnLbIMSShu2U@ZF5l>HZ`=Ag4HSu)(VK z-3*;O8-4n^#AGOZ7B$A}Ux9EjQLs3ihD8^=krmTVzXZo_c8(2xKO?4fkpRnbAjZVB zm;5hjSPUrj-KL-7`y9J(Sn%_7kE4>O()n=0s-71m;rP23%BBm5XVX8nX}HP{D;zD4 zntWDiqWIAy>c78~=ME@ew{E`WMp<(~&_e0l5jzdF4)Zrh=a`+`aG08RuQzX}_c98x zv$Hi+7SBo7O2WmZLbb^sEssA*&u4TDCpn^@tOer#8PV{Z|46SHs%;()qnu+vz--04 zM2EWFY8%ljthSB|%PZ}sFiIDeL}qp9h(DPQ=_xF;qAageQI=QQrCq=(tab}Ja$t?) zO-hGWzAjiT4r`uX(pc3lt}7k-6$5gXSK4DE4IQ$wUdVJv1&d8$&CZxg+SH%_B21p_ zOnzc{Mu$3R1IsG`Y&tZ{*djd4)NHTAWQl7x{HN+q_4?mc{j$|I84ubgQoE#ydLIVw zuGX+BQuHeKKTq$YZ)kfit9bd%qjVcpGpc7FwUfdf!VytrpW1z}S$N}<0y(da3(~Qh z!YEz(_|&`qXwnJuXjT;Is3_90OS^zoNM|Zu5?H<9PD$rO#7abxLd57VzXmZP+*b9eh?8R_f*A7KfA^|x#iD_i-EXn^CQ z=~m@Eyz<-cW<>L65seT;mI+}TzoLImx1CM;jS$pMDH?ah)&n4J{wpQ~?rZo%2>dEr z$Y__rGlDp;jterdo5Cnv`p961*D^A&G6mI>4D8b0$fZICD{z5*W$@A;1gla8)GiK! zwb73t92q!lLs6E2qo{9FK~w8!F!mJ7;7iEhH#pCdPL*#gjJc&JBZFIM12O=H{(6Fi zaGSP}S2!`FG}y&(rs|h1n+g_{ z)r`)1H7lgaV)ETCq?Lck2VkklzNBd!-v+QK35AwQ%sBCVX1D zCwV`a_sGQP@-s$h7B7aO>ZIab;~>ahDuFuJorL6~N3=Y(r(xQcu|pQ~#)y+d+Q(?pmz z{YTa>w*;2!r3dv^B--Oeo6~CLv8Fojc8DEZ1bK0|c7>~YUt!vb3k!NX@$cA}Q?s@pq(DhV9=Q>X{yioH5T`lv!_VBgF z!r0k@Gr%7FLc?tO`4Q~i&o_^T(%d@BPJ+5_Ac@LISE$;IOMcp_XiEd$%?sEIora^k z0*AvKmV%idzp9bl`uTP(Hi&M2fq^Nxx|(PLEOMD~hhLPcC4MoSg5IW3gmqF}SSMvS z{+VrhdvqXWa-V(KOioWRIV&0xzO0i{MOHd-sW7?Ma9W7AgEuLYd;BHAYH?We^fJ^g z?kJO+PX3Y!XnX7*k!GEgYh*xC-=>1a^VQ5{C|lYup12z(_pPB~;FxACDK%)HMH^Uf z1YrI3ut|zS(>hk!riwP=@#K{A+?G(?C50^8;!vpWwCPzPcLM!P^%IsaI^NF>Pu6;@ z=(!ben5J0k3#g``F7a_&XD$CEvkgv@7itYQskO!h%sNTq29}GOz$UlJ39!kOu#jQl zo?^;9&+#rGpV4tXk*4TiDwh9eMCa%HNA|l!C%_Zu4iL~6@hQ=lRv)d*vDVlp*jb@& zHw6oGG2g7dyow$Y@#!g|wxX<1R}EIE+ofH=D)i+6{3o1m4g4GJRL{rOx$b{F@nlImImKN?_^FC(QBzMDb(4ey*OQ_-#%?~D#k0x@b_r)NYQ zvMugboST0%JYlUnFI->r>p$0*`=0wx^yNyzi@y4Dmcgo~FWXCBwx_WJ>5B?FYx1xy ztuMFjjJ|B-`m%F(MqhR@xhMLS8s;)GT zJ)Lzj6-qM_?H*8RK6HR-uw5AulZbuSb5Bmx$ zwdVR~t7*+tp1Rfu?Lb=Nwyd)c`RIyVN0Q~9B+}k;(oPm>M4}?x;{Vc1AVQ zk);&v_{FPLv?nmf0Tu0gu(v<&^y)KfuV{QOwu+*~=Qk6~tyQ*jgWs8+HJOL?{N);C zJ70fZD)X8RSS_bYhiD);ikXM>ed%oH4wzF~Wrpp5Tpn_{%>P41W!fQUz-;G)--_mn z(Wmfww(|=xwQsibSKENJ=tz$e((-SIgqR7O)6r0jjjhE4$Dv7^V-D`BN5Y2A)L>{*m7S#@2}u^6BPArDp))j zXBe%Irlt+!n(g4&c<0z14DC`8{++ae4}Snye?61Tm$u91Qi1%T5Z7sjC>%})>xZbc zprfM$o8Xs+XG58hrE!yhRcfNSJ~I9EH)>q`iC(eBUPebPG?i6p|3vR-5&Cr}^bdVqp2!3UB$GDQ(=MmV%K!efr4;t6HDFi~95}Y4Jdjpb8d`lT4<=%CsI{ zAz!(Ri}wpJW%O`sR3z1>|C;I$H#e(?k9De$9twv=io)Yc_G4bg5xMQZ@m|-pV~>$# z?chL21$L@w%5gw+0!A=kf4db;FH>mW`ff!j(jxMbLMqv zwOq>*yD4;VAvZf;cYRLqcw>=?c#@Aotp-PfsVGN-*`-}D%iW0iyI=l)#GMadRK>OM z7mI(3f<9WUrFP|^RbK=|YL%iTw8Sxv6ZALXqaF<^*~wdT4qt;B)a!!8052%nwUDEe@|B<@p7`5NLi{ya z`~$xXsP-VtoM|N_TiSH$#jH6Cldovw__IqD=7V-IQRX*oZdq zotsrhAWv}x#lFn~zO;hgtDcsucIwEsy6sLpi~&fJKSdrf-41@54n8_`*&RGq(PGRy zdyYVH?s|F#FYYd@r8MvLfM@-T4TC4Rtgc?x_mQEGZ|~mzv)#ka+`e+~Ab)d`S`F7b zh*<9*p9z%w?{r>0({{jhH-!s^f7(r{RpDvhyb4Ja)0^BR?P;%+&uu|EUU^gt+C9W= zL2R|=YC)vchveLN<+(Y_(W2rEkp26|ljQr8Id$}km@p6^eG~vBHQ>iw8EFS4Id)t1> zIOKaR)csVLYht>+N!|6RmY4Q%+a#;8?kOIK9W$rQTP5cI#{Gm;8mwucrk{5zea zoS~K<+Nt<6L7F!HQtRu`3juvO3{v`7aS6kdCh~W|p&m`TvaWn8P+8*{(=?B>g^*|g zZqNG9+`XmpO+GJSZ=TODF=wcyj8aX$Gt{%Cu)o)ZJw9026THICctS?J-1X+ZjZ5;; zYRMXplroebQ2S&+8J|H0x6+47I31&2+>@ac&0ussvve-%9Ajvq-x}Cej-rP3&r?&@!{)_(nok6 zk2xs)m&cTIVew;>_K=V$V?my8iWe33VncI6-8HP-L$=$X-B*l6)%qliF#jQ2bIvtn zYn}|*`}B}4E?02K4j`h2Y{e?qknMI%`_jfIL-y8^{ixYBI(iSnUfn5?T0;ceD7{f{ z?N6lU0>Uj90yqi&%^#-OE!#YF`FHrqxDn$zi=x+_=M|XO&?i(R#ku(JpEBQvKEd%# zomL%?c<_gP&Rd`0BsBabAcGIJ0#r~8B5RY0)}a>lAuKPLhPVl7QJ+^G?jYTTBE@V* zvPI$q^Zio&RC>yumGV&ds0%l{d8w7Ymg7~~OR0+PpW$fPk|?gGgGMLIwuw%N5w7zZ zx=ey6xP_B0TkB{7O~g&5##W_6R2=L5IX5xg6^M9Q4=?xoHno!Wf_Bm|sj*)C^q^Q0 zb4Z2^_im9YL_l>SLGOYeYt^NT97@RLVJU<-*Vz+@GlhruYEM}>Fy2z{4}Ki<;eIb& zg!?K=<*6VyV}_I??ZYjRxly+Y*MkqYo}Mr>a?n0molT-5t-%ALl$FcnDdMezfPPx& zaNh1!AS`mwi;P~>#%2=u7CP1`UUzC=|QseFg1-didct!!KZdGClH$n&sBNo%A8Z~h1+nJf;MGRXlJ zh&jN*zh}!6jOYA6 zxiZT5lNDKNrzFUTEF~{mj4+NLG9G0c$L)$yn6i$XgtBT-mN5=Do|KL*zrjaax};ZI{Ng$0PeGWE`gAp@{ZoHM~9jA0Sn%=P{{Y)%L~6rtPJ1Nez^( zl$U}I9##012vy#_z5AWA?n4Mp*;e18mc>_ZCO};~zQ|XI^R)3*UAF6}HDB4jj866I znSUl-y%u!&4&-4ch<`;_1Xnuo-3SgyrWhs9X{LNr7u z5)t-j5&ro!B8b=aq>}akD(E2=V@a=Ed|p9@pD#&$t zHAJO2CWdf9K3qK$fkVZY{ChtY6#q@i#3Y)j{Gjc!Pbh3)b4xDMcp2LKt0!8QOAo}mj@3vN6z8pvnjbT$dD^9@ zOsDKtEq&?J(%$1kZ@yh2@Hh5@i2Dg`Flz<-~CQS_e;GOD1(;73~sy%n7f4d$ecgIdeTod2mB0K zfO_7_vbg)j-rk4U0^9?CE==Vo!s9~m=s+lzLBT3B?B(iXNiV)f7oFB_9*7^(Eb|d1 zy?l`u)@m<=WoDg*rq}%nt2}Rgfklyhu_U8`loe8W8Kx9o*o-t9a2bdSc~6zDR`(v> zR9u_A@&@%@;~cQ?R;J8e-1nZTskBABc;<7o>yp$B3sO?YG(g?70t4f{=%IJ>_tj93 zWbzj8eZBi1##T+weZ%#s9;k=jem^_fy0Jon#YnSFj|wq8?w5%J!3_ZbHw4s=m1704 zDM2UT8~0$+@U$??ShRUroD#+eFurkrgB}Mpug3&QHzU+f z#U@d_YbYK!1k__Cnwzgqq{e+o_*4@G>;1zIf?fNAL@3*Mo9;%wjIZYFMix^Bj^)Ex z{@zp*8kG+r!+7}V%Hee z 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