萤石云 iOSSDK,移植跨平台相关工程
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
#ifndef _SADP_H_
#define _SADP_H_
 
 
#if defined _WIN32 || defined _WIN64
#define CSADP_API  extern "C" __declspec(dllimport)
#elif defined __linux__ || defined __APPLE__
#define CSADP_API  extern "C"
#endif
 
#if defined _WIN32 || defined _WIN64
#define CALLBACK __stdcall
#elif defined __linux__ || defined __APPLE__
#define CALLBACK  
#endif
 
#define     BOOL int
 
//ÏûÏ¢²Ù×÷µÄÀàÐÍ
#define SADP_ADD          1         //Ôö¼ÓÒ»É豸
#define SADP_UPDATE       2         //¸üÐÂÉ豸
#define SADP_DEC          3         //É豸ÏÂÏß
#define SADP_RESTART      4         //Éè±¸ÖØÐÂÆô¶¯
#define SADP_UPDATEFAIL   5         //É豸¸üÐÂʧ°Ü
 
//ÍⲿÃüÁîÂë
#define SADP_GET_DEVICE_CODE                1   //»ñÈ¡É豸Â룬¶ÔÓ¦½á¹¹ÌåSADP_SAFE_CODE
#define SADP_GET_ENCRYPT_STRING             2   //»ñÈ¡¼ÓÃÜ´®£¬¶ÔÓ¦½á¹¹ÌåSADP_ENCRYPT_STRING
#define SADP_GET_DEVICE_TYPE_UNLOCK_CODE    3   //»ñÈ¡É豸ÀàÐͽâ½ûÂ룬¶ÔÓ¦µÄ½á¹¹ÌåSADP_TYPE_UNLOCK_CODE
#define SADP_SET_DEVICE_CUSTOM_TYPE         4   //ÉèÖÃÉ豸×Ô¶¨ÒåÐͺţ¬¶ÔÓ¦µÄ½á¹¹ÌåSADP_CUSTOM_DEVICE_TYPE
#define SADP_GET_GUID                       5   //»ñÈ¡GUID
#define SADP_GET_SECURITY_QUESTION          6   //»ñÈ¡°²È«ÎÊÌâ
#define SADP_SET_SECURITY_QUESTION          7   //ÉèÖð²È«ÎÊÌâ
#define SADP_SET_HCPLATFORM_STATUS          8   //ÉèÖÃHCPLATFORM״̬
#define SADP_SET_VERIFICATION_CODE          9   //ÉèÖÃÑéÖ¤Â루ÑéÖ¤ÂëÓÃÓÚөʯ½ÓÈë¡¢Ô¤ÀÀ¡¢¿ØÖƵÄΨһÃÜÂ룩
#define SADP_GET_BIND_LIST                  12  //»ñÈ¡°ó¶¨É豸Áбí
#define SADP_SET_BIND_LIST                  13  //ÉèÖðó¶¨É豸Áбí
#define SADP_RESTORE_INACTIVE               14  //»Ö¸´Î´¼¤»î
#define SADP_SET_WIFI_REGION                15  //ÉèÖÃwifiÇøÓò
#define SADP_SET_CHANNEL_DEFAULT_PASSWORD   16  //ÉèÖÃͨµÀĬÈÏÃÜÂë
#define SADP_GET_SELF_CHECK                 17  //»ñÈ¡É豸×Ô¼ì״̬
#define SADP_DISK_LOCATE                    18  //»µÅ̶¨Î»
#define SADP_EHOME_ENABLE                   19  //EHomeʹÄÜ
#define SADP_SET_USER_MAILBOX               20  //ÉèÖÃÓû§ÓÊÏä
#define SADP_GET_QR_CODES                   21  //»ñÈ¡¶þάÂëÊý¾Ý
#define SADP_GET_PASSWORD_RESET_TYPE        27  //»ñÈ¡ÖØÖÃÃÜÂ뷽ʽ²ÎÊý
 
 
 
#define SADP_MAX_VERIFICATION_CODE_LEN  12   //×î´óÑéÖ¤Â볤¶È
#define MAX_PASS_LEN                    16   //É豸×î´óÃÜÂ볤¶È
#define MAX_QUESTION_LIST_LEN           32   //×î¶àÎÊÌâÁбí¸öÊý
#define SADP_MAX_BIND_NUM               32   //×î´ó°ó¶¨É豸¸öÊý
#define MAX_CPU_LEN                     32   //CPU³¤¶È
#define MAX_MEMORY_LEN                  32   //Äڴ泤¶È
#define MAX_USERNAME_LEN                32   //Óû§Ãû×î´ó³¤¶È
#define SADP_MAX_SERIALNO_LEN           64   //×î´óÉ豸ÐòÁкų¤¶È
#define MAX_DEVICE_CODE                 128  //É豸·µ»ØÂ볤¶È£¬Ôݶ¨×î´ó128
#define MAX_MAILBOX_LEN                 128  //ÓÊÏ䳤¶È£¬Ôݶ¨×î´ó128
#define MAX_GUID_LEN                    128  //GUID³¤¶È
#define MAX_EXCHANGE_CODE               256  //½»»»Â볤¶È
#define MAX_ENCRYPT_CODE                256  //É豸·µ»ØÂë¼ÓÃܺ󳤶È
#define MAX_UNLOCK_CODE_KEY             256  //½â½ûÃÜÔ¿
#define MAX_QR_CODES                    256  //¶þάÂëÊý¾Ý³¤¶È£¬Ôݶ¨×î´ó256
#define MAX_ANSWER_LEN                  256  //×î´ó´ð°¸³¤¶È
#define MAX_UNLOCK_CODE_RANDOM_LEN      256  //½â½ûÂëËæ»ú´®
#define MAX_FILE_PATH_LEN               260  //Îļþ×î´ó·¾¶³¤¶È
 
 
 
 
// ´íÎóÂë
#define SADP_ERROR_BASE                 2000
#define SADP_NOERROR                    0                     // Ã»ÓдíÎó
#define SADP_ALLOC_RESOURCE_ERROR       (SADP_ERROR_BASE+1)   // ×ÊÔ´·ÖÅä´íÎó
#define SADP_NOT_START_ERROR            (SADP_ERROR_BASE+2)   // SADPδÆô¶¯
#define SADP_NO_ADAPTER_ERROR           (SADP_ERROR_BASE+3)   // ÎÞÍø¿¨
#define SADP_GET_ADAPTER_FAIL_ERROR     (SADP_ERROR_BASE+4)   // »ñÈ¡Íø¿¨ÐÅϢʧ°Ü
#define SADP_PARAMETER_ERROR            (SADP_ERROR_BASE+5)   // ²ÎÊý´íÎó
#define SADP_OPEN_ADAPTER_FAIL_ERROR    (SADP_ERROR_BASE+6)   // ´ò¿ªÍø¿¨Ê§°Ü
#define SADP_SEND_PACKET_FAIL_ERROR     (SADP_ERROR_BASE+7)   // ·¢ËÍÊý¾Ýʧ°Ü
#define SADP_SYSTEM_CALL_ERROR          (SADP_ERROR_BASE+8)   // ÏµÍ³½Ó¿Úµ÷ÓÃʧ°Ü
#define SADP_DEVICE_DENY                (SADP_ERROR_BASE+9)   // É豸¾Ü¾ø´¦Àí
#define SADP_NPF_INSTALL_ERROR          (SADP_ERROR_BASE+10)  // °²×°NPF·þÎñʧ°Ü
#define SADP_TIMEOUT                    (SADP_ERROR_BASE+11)  // É豸³¬Ê±
#define SADP_CREATE_SOCKET_ERROR        (SADP_ERROR_BASE+12)  // ´´½¨socketʧ°Ü
#define SADP_BIND_SOCKET_ERROR          (SADP_ERROR_BASE+13)  // °ó¶¨socketʧ°Ü
#define SADP_JOIN_MULTI_CAST_ERROR      (SADP_ERROR_BASE+14)  // ¼ÓÈë¶à²¥×éʧ°Ü
#define SADP_NETWORK_SEND_ERROR         (SADP_ERROR_BASE+15)  // ·¢Ëͳö´í
#define SADP_NETWORK_RECV_ERROR         (SADP_ERROR_BASE+16)  // ½ÓÊÕ³ö´í
#define SADP_XML_PARSE_ERROR            (SADP_ERROR_BASE+17)  // ¶à²¥XML½âÎö³ö´í
#define SADP_LOCKED                     (SADP_ERROR_BASE+18)  // Éè±¸Ëø¶¨
#define SADP_NOT_ACTIVATED              (SADP_ERROR_BASE+19)  // É豸δ¼¤»î
#define SADP_RISK_PASSWORD              (SADP_ERROR_BASE+20)  // ·çÏոߵÄÃÜÂë
#define SADP_HAS_ACTIVATED              (SADP_ERROR_BASE+21)  // É豸ÒѼ¤»î
#define SADP_EMPTY_ENCRYPT_STRING       (SADP_ERROR_BASE+22)  // ¼ÓÃÜ´®Îª¿Õ
#define SADP_EXPORT_FILE_OVERDUE        (SADP_ERROR_BASE+23)  // µ¼³öÎļþ³¬ÆÚ
#define SADP_PASSWORD_ERROR             (SADP_ERROR_BASE+24)  // ÃÜÂë´íÎó
#define SADP_LONG_SECURITY_ANSWER       (SADP_ERROR_BASE+25)  // °²È«ÎÊÌâ´ð°¸Ì«³¤
#define SADP_INVALID_GUID               (SADP_ERROR_BASE+26)  // ÎÞЧµÄGUID
#define SADP_ANSWER_ERROR               (SADP_ERROR_BASE+27)  // ´ð°¸´íÎó
#define SADP_QUESTION_NUM_ERR           (SADP_ERROR_BASE+28)  // °²È«ÎÊÌâ¸öÊýÅäÖôíÎó
#define SADP_LOAD_WPCAP_FAIL            (SADP_ERROR_BASE+30)  // ¼ÓÔØWpcapʧ°Ü
#define SADP_ILLEGAL_VERIFICATION_CODE  (SADP_ERROR_BASE+33)  // ·Ç·¨ÑéÖ¤Âë
#define SADP_BIND_ERROR_DEV             (SADP_ERROR_BASE+34)  // °ó¶¨´íÎóµÄÉ豸
#define SADP_EXTED_MAX_BIND_NUM         (SADP_ERROR_BASE+35)  // ³¬¹ý×î´ó°ó¶¨¸öÊý
#define SADP_MAILBOX_NOT_EXIST          (SADP_ERROR_BASE+36)  // ÓÊÏä²»´æÔÚ
#define SADP_MAILBOX_NOT_SET            (SADP_ERROR_BASE+38)  // [add] <2019/01/08> by yangzheng ÓÊÏäÖØÖÃÃÜÂëδÉèÖÃÓÊÏä
#define SADP_INVALID_RESET_CODE         (SADP_ERROR_BASE+39)    // ÖØÖÃÃÜÂë  ÖØÖÿÚÁî´íÎó
 
 
//SADPÉ豸¹ýÂ˹æÔòÀàÐÍ
//°´Î»±íʾ£¬Îª1±íʾ¹ýÂË£¬0±íʾ²»¹ýÂË;
//bit 1:ÊÇ·ñ¹ýÂËөʯ;bit 2:ÊÇ·ñ¹ýÂËOEM;
#define SADP_DISPLAY_ALL           0            //ÏÔʾËùÓÐÉ豸
#define SADP_FILTER_EZVIZ          0x01         //¹ýÂËөʯÉ豸
#define SADP_FILTER_OEM            0x02         //¹ýÂËOEMÉ豸
#define SADP_FILTER_EZVIZ_OEM      0x03         //ͬʱ¹ýÂËөʯºÍOEMÉ豸
#define SADP_ONLY_DISPLAY_OEM      0xfffffffd   //½öÏÔʾOEMÉ豸,¶ÔÓ¦½á¹¹ÌåSADP_DISPLAY_OEM_CFG
#define SADP_ONLY_DISPLAY_EZVIZ    0xfffffffe   //½öÏÔʾөʯÉ豸
// ½á¹¹Ìå
 
typedef struct tagSADP_DEVICE_INFO
{
    char            szSeries[12];          //É豸ϵÁУ¨±£Áô£©
    char            szSerialNO[48];        //É豸ÐòÁкÅ
    char            szMAC[20];             //É豸ÎïÀíµØÖ·
    char            szIPv4Address[16];     //É豸IPv4µØÖ·
    char            szIPv4SubnetMask[16];  //É豸IPv4×ÓÍøÑÚÂë
    unsigned int    dwDeviceType;          //É豸ÀàÐÍ£¬¾ßÌåÊýÖµ´ú±íµÄÉ豸ÐͺÅ
    unsigned int    dwPort;                //Éè±¸ÍøÂçSDK·þÎñ¶Ë¿ÚºÅ(ĬÈÏ8000)
    unsigned int    dwNumberOfEncoders;    //É豸±àÂëÆ÷¸öÊý£¬¼´É豸±àÂëͨµÀ¸öÊý¡£¶ÔÓÚ½âÂëÆ÷£¬ÆäÖµÉèΪ0
    unsigned int    dwNumberOfHardDisk;    //É豸ӲÅÌÊýÄ¿
    char            szDeviceSoftwareVersion[48];  //É豸Èí¼þ°æ±¾ºÅ
    char            szDSPVersion[48];      //É豸DSP°æ±¾ºÅ
    char            szBootTime[48];        //¿ª»úʱ¼ä
    int             iResult;               
                    //ÐÅÏ¢ÀàÐÍ£º 1.É豸ÉÏÏß  2.É豸¸üР 3.É豸ÏÂÏß  4.Éè±¸ÖØÆô  5.É豸¸üÐÂʧ°Ü
                    //SADP_ADD        1   ÐÂÉ豸ÉÏÏߣ¬Ö®Ç°ÔÚSADP¿âÁбíÖÐδ³öÏÖµÄÉ豸
                    //SADP_UPDATE     2   ÔÚÏßµÄÉ豸µÄÍøÂç²ÎÊý»òÕßijЩ״̬¸Ä±ä
                    //SADP_DEC        3   É豸ÏÂÏߣ¬É豸×Ô¶¯·¢ËÍÏÂÏßÏûÏ¢»ò120ÃëÄÚ¼ì²â²»µ½É豸
                    //SADP_RESTART    4   Ö®Ç°SADP¿âÁбíÖгöÏÖ¹ýÖ®ºóÏÂÏßµÄÉ豸ÔÙ´ÎÉÏÏß
                    //SADP_UPDATEFAIL 5   É豸¸üÐÂʧ°Ü
    char            szDevDesc[24];         //É豸ÀàÐÍÃèÊö ÓëdwDeviceType¶ÔÓ¦
    char            szOEMinfo[24];         //OEM²úÉÌÐÅÏ¢
    char            szIPv4Gateway[16];     //IPv4Íø¹Ø
    char            szIPv6Address[46];     //IPv6µØÖ·
    char            szIPv6Gateway[46];     //IPv6Íø¹Ø
    unsigned char   byIPv6MaskLen;         //IPv6×ÓÍøÇ°×º³¤¶È
    unsigned char   bySupport;           
                    //°´Î»±íʾ,¶ÔӦΪΪ1±íʾ֧³Ö
                    //0x01:ÊÇ·ñÖ§³ÖIpv6
                    //0x02:ÊÇ·ñÖ§³ÖÐÞ¸ÄIpv6²ÎÊý
                    //0x04:ÊÇ·ñÖ§³ÖDhcp    
                    //0x08:ÊÇ·ñÖ§³Öudp¶à²¥ 
                    //0x10:ÊÇ·ñº¬¼ÓÃܽڵã
                    //0x20:ÊÇ·ñÖ§³Ö»Ö¸´ÃÜÂë
                    //0x40:ÊÇ·ñÖ§³ÖÖØÖÃÃÜÂë
                    //0x80:ÊÇ·ñÖ§³Öͬ²½IPCÃÜÂë
    unsigned char   byDhcpEnabled;         //Dhcp״̬, 0 ²»ÆôÓà1 ÆôÓÃ
    unsigned char   byDeviceAbility;       //É豸ÄÜÁ¦
                                           //0£ºÉ豸²»Ö§³Ö¡°¡®É豸ÀàÐÍÃèÊö¡¯ 'OEM³§ÉÌ' 'IPv4Íø¹Ø' ¡®IPv6µØÖ·¡¯ 'IPv6Íø¹Ø' ¡®IPv6×ÓÍøÇ°×º¡¯¡®DHCP¡¯¡±  
                                           //1£ºÖ§³ÖÉÏËß¹¦ÄÜ
    unsigned short  wHttpPort;             //Http ¶Ë¿Ú
    unsigned short  wDigitalChannelNum;    //Êý×ÖͨµÀÊý
    char            szCmsIPv4[16];         //CMS×¢²á·þÎñÆ÷IPv4µØÖ·
    unsigned short  wCmsPort;              //CMS×¢²á·þÎñÆ÷¼àÌý¶Ë¿Ú
    unsigned char   byOEMCode;             //0-»ùÏßÉ豸 1-OEMÉ豸
    unsigned char   byActivated;           //É豸ÊÇ·ñ¼¤»î;0-¼¤»î£¬1-δ¼¤»î£¨ÀϵÄÉ豸¶¼ÊÇÒѼ¤»î״̬£©
    char            szBaseDesc[24];        //»ùÏß¶ÌÐͺţ¬²»Ëæ¶¨ÖÆ¶øÐ޸ĵÄÐͺţ¬ÓÃÓÚөʯƽ̨½øÐÐÐͺŶԱÈ
    unsigned char   bySupport1; 
                    //°´Î»±íʾ,  1±íʾ֧³Ö£¬0±íʾ²»Ö§³Ö
                    //0x01:ÊÇ·ñÖ§³ÖÖØÖÃÃÜÂ뷽ʽ2 
                    //0x02;ÊÇ·ñÖ§³ÖÉè±¸Ëø¶¨¹¦ÄÜ
                    //0x04:ÊÇ·ñÖ§³Öµ¼ÈëGUIDÖØÖÃÃÜÂë
                    //0x08:ÊÇ·ñÖ§³Ö°²È«ÎÊÌâÖØÖÃÃÜÂë
                    //0x10:ÊÇ·ñÖ§³ÖOEM¸ü»»Logo
                    //0x20:ÊÇ·ñÖ§³Ö°ó¶¨²Ù×÷
                    //0x40:ÊÇ·ñÖ§³Ö»Ö¸´Î´¼¤»î
                    //0x80:ÊÇ·ñÖ§³ÖwifiÐźÅÔöǿģʽ
    unsigned char   byHCPlatform;          //ÊÇ·ñÖ§³ÖHCPlatform 0-±£Áô, 1-Ö§³Ö, 2-²»Ö§³Ö   
    unsigned char   byEnableHCPlatform;    //ÊÇ·ñÆôÓÃHCPlatform  0-±£Áô, 1-ÆôÓ㬠2-²»ÆôÓÃ
    unsigned char   byEZVIZCode;           //0-»ùÏßÉ豸, 1-өʯÉ豸
    unsigned int    dwDetailOEMCode;       //ÏêϸOEMCodeÐÅÏ¢:oemcodeÓɿͻ§ÐòºÅ£¨¿É±äλ,´Ó1¿ªÊ¼£¬1~429496)+²Ëµ¥·ç¸ñ£¨2룩+ÇøÓòºÅ£¨2룩Èý²¿·Ö¹¹³É¡£    
                                           //¹æÔò˵Ã÷£ºoemcode×î´óֵΪ4294967295£¬×î¶àÊÇʮλÊý¡£
                                           //0: ÀÏÉ豸
                                           //1: Ð»ùÏßÉ豸
                                           //10101: ÓоßÌåOEM codeµÄΪOEMÉ豸
    unsigned char   byModifyVerificationCode; //ÊÇ·ñÐÞ¸ÄÑéÖ¤Âë 0-±£Áô£¬ 1-ÐÞ¸ÄÑéÖ¤Â룬 2-²»ÐÞ¸ÄÑéÖ¤Âë
    unsigned char   byMaxBindNum;          //Ö§³Ö°ó¶¨µÄ×î´ó¸öÊý£¨Ä¿Ç°Ö»ÓÐNVRÖ§³Ö¸Ã×ֶΣ©
    unsigned short  wOEMCommandPort;       //OEMÃüÁî¶Ë¿Ú
    unsigned char   bySupportWifiRegion;
                    //É豸֧³ÖµÄwifiÇøÓòÁÐ±í£¬°´Î»±íʾ£¬1±íʾ֧³Ö£¬0±íʾ²»Ö§³Ö
                    //0x01:ÊÇ·ñÖ§³Ödefault£¨Ä¬ÈϹ¦Âʺͱ±ÃÀÒ»Ö£©
                    //0x02:ÊÇ·ñÖ§³Öchina
                    //0x04:ÊÇ·ñÖ§³ÖnothAmerica
                    //0x08:ÊÇ·ñÖ§³Öjapan
                    //0x10:ÊÇ·ñÖ§³Öeurope
                    //0x20:ÊÇ·ñÖ§³Öworld
    unsigned char   byEnableWifiEnhancement;//ÊÇ·ñÆôÓÃwifiÔöǿģʽ,0-²»ÆôÓã¬1-ÆôÓÃ
    unsigned char   byWifiRegion;           //É豸µ±Ç°ÇøÓò£¬0-default£¬1-china£¬2-nothAmerica£¬3-japan£¬4-europe,5-world
    unsigned char   bySupport2; 
                    //°´Î»±íʾ,  1±íʾ֧³Ö£¬0±íʾ²»Ö§³Ö
                    //0x01:ÊÇ·ñÖ§³ÖͨµÀĬÈÏÃÜÂëÅäÖ㨸ÃÃÜÂëÓÃÓÚnvrÌí¼ÓIPC£¬ Ä¬ÈÏʹÓõÄÊÇnvr adminÃÜÂ룬»áµ¥¶À±£´æÔÚ±¾µØ£©
                    //0x02:ÊÇ·ñÖ§³ÖÓÊÏäÖØÖÃÃÜÂë
                    //0x04:ÊÇ·ñÖ§³Öδ¼¤»îÅäÖÃSSIDºÍPassword
}SADP_DEVICE_INFO, *LPSADP_DEVICE_INFO;
 
typedef struct tagSADP_DEVICE_INFO_V40
{
    SADP_DEVICE_INFO struSadpDeviceInfo;
    unsigned char   byLicensed;          //É豸ÊÇ·ñÊÚȨ£º0-±£Áô,1-É豸δÊÚȨ£¬2-É豸ÒÑÊÚȨ
    unsigned char   bySystemMode;        //ϵͳģʽ 0-±£Áô,1-µ¥¿Ø£¬2-Ë«¿Ø£¬3-µ¥»ú¼¯Èº£¬4-Ë«¿Ø¼¯Èº
    unsigned char   byControllerType;    //¿ØÖÆÆ÷ÀàÐÍ 0-±£Áô£¬1-A¿Ø£¬2-B¿Ø
    char            szEhmoeVersion[16];  //Ehmoe°æ±¾ºÅ
    unsigned char   bySpecificDeviceType;//É豸ÀàÐÍ£¬1-ÖÐÐÔÉ豸  2-º£¿µÉ豸
    unsigned int    dwSDKOverTLSPort;    //˽ÓÐЭÒéÖРSDK Over TLS ÃüÁî¶Ë¿Ú
    unsigned char   bySecurityMode;      //É豸°²È«Ä£Ê½£º0-standard,1-high-A,2-high-B,3-custom
    unsigned char   bySDKServerStatus;   //É豸SDK·þÎñ״̬, 0-¿ªÆô£¬1-¹Ø±Õ
    unsigned char   bySDKOverTLSServerStatus;         //É豸SDKOverTLS·þÎñ״̬, 0-¹Ø±Õ£¬1-¿ªÆô
    char            szUserName[MAX_USERNAME_LEN + 1]; //¹ÜÀíÔ±Óû§µÄÓû§Ãû£¨É豸°²È«Ä£Ê½ÔڷDZê׼ģʽÏÂÊÇÔÊÐíÓû§ÉèÖùÜÀíÔ±Óû§µÄÓû§Ãû£¬±ê׼ģʽĬÈÏΪadmin£©
    char            szWifiMAC[20];       //É豸ËùÁ¬wifiµÄMacµØÖ·
    unsigned char   byDataFromMulticast; //0-Á´Â· 1-¶à²¥
    unsigned char   bySupportEzvizUnbind; //ÊÇ·ñÖ§³Öөʯ½â°ó 0-²»Ö§³Ö 1-Ö§³Ö
    unsigned char   bySupportCodeEncrypt; //ÊÇ·ñÖ§³ÖÖØÖÿÚÁîAES128_ECB½âÃÜ  0-²»Ö§³Ö 1-Ö§³Ö
    unsigned char   bySupportPasswordResetType; //ÊÇ·ñÖ§³Ö»ñÈ¡ÃÜÂëÖØÖ÷½Ê½²ÎÊý  0-²»Ö§³Ö 1-Ö§³Ö
    unsigned char   byEZVIZBindStatus; //Éè±¸Ó©Ê¯ÔÆ°ó¶¨×´Ì¬,0-δ֪,1-ÒѰó¶¨,2-δ°ó¶¨
    char            szPhysicalAccessVerification[16]; //É豸֧³ÖµÄÎïÀí½Ó´¥Ê½Ìí¼Ó·½Ê½,1#APÅäÍø´«µÝ,2#Óû§ÁîÅÆ£¨Óû§token£©°ó¶¨,3#ÎïÀí°´¼ü½Ó´¥,4#ɨÂë°ó¶¨£¨É豸token£©
    unsigned char   byRes[411];
}SADP_DEVICE_INFO_V40, *LPSADP_DEVICE_INFO_V40;
 
//´ýÐ޸ĵÄÉè±¸ÍøÂç²ÎÊý
typedef struct tagSADP_DEV_NET_PARAM
{
    char            szIPv4Address[16];      // IPv4µØÖ·
    char            szIPv4SubNetMask[16];   // IPv4×ÓÍøÑÚÂë
    char            szIPv4Gateway[16];      // IPv4Íø¹Ø
    char            szIPv6Address[128];     // IPv6µØÖ·
    char            szIPv6Gateway[128];     // IPv6Íø¹Ø
    unsigned short  wPort;                  // Éè±¸ÍøÂçSDK·þÎñ¶Ë¿ÚºÅ(ĬÈÏ8000)
    unsigned char   byIPv6MaskLen;          // IPv6ÑÚÂ볤¶È
    unsigned char   byDhcpEnable;           // DHCPʹÄÜ
    unsigned short  wHttpPort;              // HTTP¶Ë¿Ú
    unsigned int    dwSDKOverTLSPort;       // Ë½ÓÐЭÒéÖРSDK Over TLS ÃüÁî¶Ë¿Ú
    unsigned char   byRes[122];
}SADP_DEV_NET_PARAM, *LPSADP_DEV_NET_PARAM;
 
 
//É豸·µ»ØÍøÂç²ÎÊýÐÅÏ¢
typedef struct tagSADP_DEV_RET_NET_PARAM
{
    unsigned char   byRetryModifyTime;  //Ê£Óà¿É³¢ÊÔÐÞ¸ÄÍøÂç²ÎÊý´ÎÊý
    unsigned char   bySurplusLockTime;  //Ê£Óàʱ¼ä£¬µ¥Î»£º·ÖÖÓ£¬Óû§Ëø¶¨Ê±´Ë²ÎÊýÓÐЧ
    unsigned char   byRes[126];
}SADP_DEV_RET_NET_PARAM, *LPSADP_DEV_RET_NET_PARAM;
 
// CMS²ÎÊý
typedef struct tagSADP_CMS_PARAM
{
    char            szPUID[32];         // Ô¤·ÖÅäµÄPUID
    char            szPassword[16];     // ÉèÖõĵǼÃÜÂë
    char            szCmsIPv4[16];      // CMS·þÎñÆ÷IPv4µØÖ·
    char            szCmsIPv6[128];     // CMS·þÎñÆ÷IPv6µØÖ·
    unsigned short  wCmsPort;           // CMS·þÎñÆ÷¼àÌý¶Ë¿Ú
    unsigned char   byRes[30];
}SADP_CMS_PARAM, *LPSADP_CMS_PARAM;
 
//É豸°²È«Â룬¶ÔÓ¦ÅäÖÃÃüÁîSADP_GET_DEVICE_CODE£¬½Ó¿ÚSADP_GetDeviceConfig
typedef struct tagSADP_SAFE_CODE
{
    unsigned int    dwCodeSize;
    char            szDeviceCode[MAX_DEVICE_CODE];
    unsigned char   byRes[128];
}SADP_SAFE_CODE, *LPSADP_SAFE_CODE;
 
//É豸¶þάÂë
typedef struct tagSADP_QR_CODES
{
    unsigned int    dwCodeSize;
    unsigned int    dwMailBoxSize;
    unsigned int    dwServiceMailBoxSize;
    char            szQrCodes[MAX_QR_CODES];
    char            szMailBoxAddr[MAX_MAILBOX_LEN];         //ÒªÉèÖõÄÓÊÏ䵨ַ
    char            szServiceMailBoxAddr[MAX_MAILBOX_LEN];  //·þÎñµÄÓÊÏ䵨ַ
    unsigned char   byRes[128];
}SADP_QR_CODES, *LPSADP_QR_CODES;
 
//¼ÓÃÜ´®½á¹¹Ì壬¶ÔÓ¦ÅäÖÃÃüÁîSADP_GET_ENCRYPT_STRING£¬½Ó¿ÚSADP_GetDeviceConfig
typedef struct tagSADP_ENCRYPT_STRING
{
    unsigned int    dwEncryptStringSize;               //¼ÓÃÜ´®³¤¶È
    char            szEncryptString[MAX_ENCRYPT_CODE]; //¼ÓÃÜ´®ÄÚÈÝ
    unsigned char   byRes[128];
}SADP_ENCRYPT_STRING, *LPSADP_ENCRYPT_STRING;
//»Ö¸´/ÖØÖÃÃÜÂë½á¹¹Ìå
typedef struct tagSADP_RESET_PARAM
{
    char            szCode[MAX_ENCRYPT_CODE];     //ÈÕÆÚת»»¹ýµÄÌØÊâ×Ö·û´®»ò¼ÓÃܹ¤¾ß¼ÓÃܺóµÄ×Ö·û´® - Îª¼æÈÝÀϽӿÚ
    char            szAuthFile[MAX_FILE_PATH_LEN];//ÖØÖÃÊÚȨÎļþ
    char            szPassword[MAX_PASS_LEN];     //Óû§ÃÜÂë
    unsigned char   byEnableSyncIPCPW;            //ÊÇ·ñÆôÓÃͬ²½IPCÃÜÂë¡£0 - ²»ÆôÓ㬠1- ÆôÓÃ
    unsigned char   byRes[511];
}SADP_RESET_PARAM, *LSADP_RESET_PARAM;
 
//ÏÔʾOEMÅäÖýṹÌå
typedef struct tagSADP_DISPLAY_OEM_CFG
{
    unsigned int    dwDisplayOEM;   //0-ÏÔʾËùÓÐOEM£¬ÆäËüֵΪҪÏÔʾµÄijһÖÖÀàÐ͵ÄOEMCode£¬¾ßÌåÏê¼ûdwDetailOEMCode    
    unsigned char   byRes[32];      //±£Áô
}SADP_DISPLAY_OEM_CFG, *LPSADP_DISPLAY_OEM_CFG;
 
typedef struct tagSADP_TYPE_UNLOCK_CODE
{
    unsigned int   dwCodeSize;
    char           szDeviceTypeUnlockCode[MAX_UNLOCK_CODE_RANDOM_LEN/*256*/];//É豸ÐͺŽâ½ûÂë
    unsigned char  byRes[128];
}SADP_TYPE_UNLOCK_CODE, *LPSADP_TYPE_UNLOCK_CODE;
 
typedef struct tagSADP_CUSTOM_DEVICE_TYPE
{
    unsigned int   dwCodeSize;
    char           szDeviceTypeSecretKey[MAX_UNLOCK_CODE_KEY/*256*/];//ÀàÐͽâ½ûÃØÔ¿
    unsigned char  byRes[128];
}SADP_CUSTOM_DEVICE_TYPE, *LPSADP_CUSTOM_DEVICE_TYPE;
 
//»ñÈ¡GUID²ÎÊý½á¹¹Ìå
typedef struct tagSADP_GUID_FILE_COND
{
    char           szPassword[MAX_PASS_LEN];  //Óû§ÃÜÂë
    unsigned char  byRes[128];
}SADP_GUID_FILE_COND, *LPSADP_GUID_FILE_COND;
 
//GUID½á¹¹Ìå
typedef struct tagSADP_GUID_FILE
{
    unsigned int    dwGUIDSize;
    char            szGUID[MAX_GUID_LEN];
    unsigned char   byRetryGUIDTime;    //Ê£Óà¿Éµ¼Èë/µ¼³öGUID´ÎÊý
    unsigned char   bySurplusLockTime;  //Ê£Óàʱ¼ä£¬µ¥Î»£º·ÖÖÓ£¬Óû§Ëø¶¨Ê±´Ë²ÎÊýÓÐЧ
    unsigned char   byRes[254];
}SADP_GUID_FILE, *LPSADP_GUID_FILE;
 
typedef struct tagSADP_SINGLE_SECURITY_QUESTION_CFG
{
    unsigned int    dwSize;
    unsigned int    dwId;//ÐòºÅ
    char            szAnswer[MAX_ANSWER_LEN/*256*/];//´ð°¸£¬Ö»ÔÚÉèÖÃʱÓÐЧ£¬»ñȡʱÎÞЧ
    unsigned char   byMark;//±ê¼Ç¸ÃÐòºÅµÄÎÊÌâÊÇ·ñ±»ÉèÖà 0-δÉèÖà1-ÒÑÉèÖÃ
    unsigned char   byRes[127];
}SADP_SINGLE_SECURITY_QUESTION_CFG, *LPSADP_SINGLE_SECURITY_QUESTION_CFG;
 
typedef struct tagSADP_SECURITY_QUESTION_CFG
{
    unsigned int   dwSize;
    SADP_SINGLE_SECURITY_QUESTION_CFG  struSecurityQuestion[MAX_QUESTION_LIST_LEN/*32*/];//°²È«ÎÊÌâÁбí
    char           szPassword[MAX_PASS_LEN];  //Óû§ÃÜÂë
    unsigned char  byRes[512];
}SADP_SECURITY_QUESTION_CFG, *LPSADP_SECURITY_QUESTION_CFG;
 
typedef struct tagSADP_SECURITY_QUESTION
{
    unsigned char   byRetryAnswerTime;  //Ê£Óà¿ÉÉèÖð²È«ÎÊÌâ´ÎÊý
    unsigned char   bySurplusLockTime;  //Ê£Óàʱ¼ä£¬µ¥Î»£º·ÖÖÓ£¬Óû§Ëø¶¨Ê±´Ë²ÎÊýÓÐЧ
    unsigned char   byRes[254];
}SADP_SECURITY_QUESTION, *LPSADP_SECURITY_QUESTION;
 
typedef struct tagSADP_RESET_PARAM_V40
{
    unsigned int    dwSize;
    unsigned char   byResetType;              //ÃÜÂëÖØÖÃÀàÐÍ 0-±£Áô,1- Í¨¹ýÉ豸ÐòÁкŻָ´Ä¬ÈÏÃÜÂ룬2-µ¼Èë/µ¼³öÎļþÖØÖÃÃÜÂ룬3-¶þάÂëÖØÖ㬠4-GUIDÖØÖã¬5-°²È«ÎÊÌâÖØÖà6-ÓÊÏäÖØÖÃÃÜÂë
    unsigned char   byEnableSyncIPCPW;        //ÊÇ·ñͬʱ½«ÃÜÂëÆôÓÃΪNVRͬ²½IPCÃÜÂë¡£0 - ²»ÆôÓ㬠1- ÆôÓÃ
    unsigned char   byRes2[2];                //±£Áô
    char            szPassword[MAX_PASS_LEN]; //Óû§ÃÜÂë
    char            szCode[MAX_ENCRYPT_CODE]; //ÈÕÆÚת»»¹ýµÄÌØÊâ×Ö·û´®»ò¼ÓÃܹ¤¾ß¼ÓÃܺóµÄ×Ö·û´® - byResetType Îª1¡¢3ʱÓÐЧ
    char            szAuthFile[MAX_FILE_PATH_LEN];//ÖØÖÃÊÚȨÎļþ£¬ byResetType Îª2ʱÓÐЧ
    char            szGUID[MAX_GUID_LEN];     //GUID, byResetType Îª4ʱÓÐЧ
    SADP_SECURITY_QUESTION_CFG struSecurityQuestionCfg;//°²È«ÎÊÌâ½á¹¹Ì壬 byResetType Îª5ʱÓÐЧ
    unsigned char   byRes[512];
}SADP_RESET_PARAM_V40, *LPSADP_RESET_PARAM_V40;
 
typedef struct tagSADP_RET_RESET_PARAM_V40
{
    unsigned char   byRetryGUIDTime;    //Ê£Óà¿ÉÉèÖôÎÊý
    unsigned char   bySurplusLockTime;  //Ê£Óàʱ¼ä£¬µ¥Î»£º·ÖÖÓ£¬Óû§Ëø¶¨Ê±´Ë²ÎÊýÓÐЧ
    unsigned char   bRetryTimeValid; //byRetryGUIDTime×Ö¶ÎÊÇ·ñÓÐЧ  0-ÎÞЧ,1-ÓÐЧ
    unsigned char   bLockTimeValid; //bySurplusLockTime×Ö¶ÎÊÇ·ñÓÐЧ  0-ÎÞЧ,1-ÓÐЧ
    unsigned char   byRes[252];
}SADP_RET_RESET_PARAM_V40, *LPSADP_RET_RESET_PARAM_V40;
 
//HCPlatform״̬
typedef struct tagSADP_HCPLATFORM_STATUS_INFO
{
    unsigned int    dwSize;
    unsigned char   byEnableHCPlatform;        //ÊÇ·ñÆôÓÃHCPlatform¡£0 - ±£Áô£¬ 1- ÆôÓ㬠2-²»ÆôÓÃ
    unsigned char   byRes[3];                  //±£Áô
    char            szPassword[MAX_PASS_LEN];  //Óû§ÃÜÂë
    unsigned char   byRes2[128];
}SADP_HCPLATFORM_STATUS_INFO, *LPSADP_HCPLATFORM_STATUS_INFO;
 
typedef struct tagSADP_USER_MAILBOX
{
    unsigned int    dwSize;
    char            szPassword[MAX_PASS_LEN];        //É豸adminÓû§ÃÜÂë
    char            szMailBoxAddr[MAX_MAILBOX_LEN];  //Ô¤ÁôÓÊÏ䵨ַ£¬ÓÃÓÚ½ÓÊÕÃÜÂë·þÎñÆ÷·µ»ØµÄ°²È«Âë
    unsigned char   byRes[128];
}SADP_USER_MAILBOX, *LPSADP_USER_MAILBOX;
//É豸ÑéÖ¤Âë
typedef struct tagSADP_VERIFICATION_CODE_INFO
{
    unsigned int    dwSize;
    char            szVerificationCode[SADP_MAX_VERIFICATION_CODE_LEN];  //ÑéÖ¤Â루ÑéÖ¤ÂëÓÃÓÚөʯ½ÓÈë¡¢Ô¤ÀÀ¡¢¿ØÖƵÄΨһÃÜÂ룩
    char            szPassword[MAX_PASS_LEN];  //Óû§ÃÜÂë
    unsigned char   byRes[128];
}SADP_VERIFICATION_CODE_INFO, *LPSADP_VERIFICATION_CODE_INFO;
 
//Éè±¸Ëø¶¨ÐÅÏ¢
typedef struct tagSADP_DEV_LOCK_INFO
{
    unsigned char   byRetryTime;       //Ê£Óà¿É³¢ÊÔ´ÎÊý
    unsigned char   bySurplusLockTime; //Ê£Óàʱ¼ä£¬µ¥Î»£º·ÖÖÓ£¬Óû§Ëø¶¨Ê±´Ë²ÎÊýÓÐЧ
    unsigned char   byRes[126];
}SADP_DEV_LOCK_INFO, *LPSADP_DEV_LOCK_INFO;
 
//±»°ó¶¨É豸ÐÅÏ¢½á¹¹Ìå
typedef struct tagSADP_BIND_INFO
{
    char            szSerialNO[SADP_MAX_SERIALNO_LEN]; //±»°ó¶¨É豸µÄÐòÁкÅ
    unsigned char   byiBind; //É豸ÊÇ·ñ°ó¶¨ 0-δ°ó¶¨£»1-ÒѰó¶¨
    unsigned char   byRes[127];
}SADP_BIND_INFO, *LPSADP_BIND_INFO;
 
typedef struct tagSADP_BIND_LIST
{
    SADP_BIND_INFO   struBindInfo[SADP_MAX_BIND_NUM]; //°ó¶¨É豸ÐÅÏ¢Áбí
    char             szPassword[MAX_PASS_LEN]; //Óû§ÃÜÂë
    unsigned char    byUnbindAll; //ÊÇ·ñ½â°óËùÓÐÉ豸 0-²»½â°óËùÓÐÉ豸£»1-½â°óËùÓÐÉ豸
    unsigned char    byRes[127];
}SADP_BIND_LIST, *LPSADP_BIND_LIST;
 
typedef struct tagSADP_INACTIVE_INFO
{
    char             szPassword[MAX_PASS_LEN];  //Óû§ÃÜÂë
    unsigned char    byRes[128];
}SADP_INACTIVE_INFO, *LPSADP_INACTIVE_INFO;
 
//wifi Region
typedef struct tagSADP_WIFI_REGION_INFO
{
    unsigned char   byMode;                  //ģʽ£¬0-±£Áô£¬1-wifiÇøÓòÅäÖÃģʽ£¬2-wifiÔöǿģʽ
    unsigned char   byWifiRegion;            //wifiÇøÓò£¬µ±byModeΪ1ʱ£¬¸Ã×Ö¶ÎÓÐЧ¡£0 -default£¬ 1- china, 2-nothAmerica,3-japan,4-europe,5-world
    unsigned char   byWifiEnhancementEnabled;//ÊÇ·ñÆôÓÃwifiÔöǿģʽ£¬µ±byModeΪ2ʱ£¬¸Ã×Ö¶ÎÓÐЧ 0 -²»ÆôÓ㬠1- ÆôÓÃ
    unsigned char   byRes;                   //±£Áô
    char            szPassword[MAX_PASS_LEN];//Óû§ÃÜÂë
    unsigned char   byRes2[128];
}SADP_WIFI_REGION_INFO, *LPSADP_WIFI_REGION_INFO;
 
//ͨµÀĬÈÏÃÜÂëÐÅÏ¢
typedef struct tagSADP_CHANNEL_DEFAULT_PASSWORD
{
    char             szPassword[MAX_PASS_LEN]; //É豸adminÓû§ÃÜÂë
    char             szChannelDefaultPassword[MAX_PASS_LEN]; //ͨµÀĬÈÏÃÜÂ루Óû§NVR¼¤»î£¬Ìí¼ÓIPC£©
    unsigned char    byRes[128];
}SADP_CHANNEL_DEFAULT_PASSWORD, *LPSADP_CHANNEL_DEFAULT_PASSWORD;
 
 
//É豸×Ô¼ì״̬½á¹¹Ìå
typedef struct tagSADP_SELF_CHECK_STATE
{
    unsigned int    dwSize;
    int             dwTotalDisk;               //´ÅÅÌ×ÜÊý£¨Ä¬ÈÏֵΪ-1£©
    int             dwGoodDisk;                //ºÃÅÌÊý£¨Ä¬ÈÏֵΪ-1£©
    char            szCPU[MAX_CPU_LEN];        //CPU
    char            szMemory[MAX_MEMORY_LEN];  //ÄÚ´æ
    unsigned char   byProgress;                //×Ô¼ì½ø¶È£¬0-100
    unsigned char   byTemperatureState;        //ζÈ״̬£¬0-ÎÞЧ£»1-Õý³££»2-Òì³£
    unsigned char   byFanState;                //·çÉÈ״̬£¬0-ÎÞЧ£»1-Õý³££»2-Òì³£
    unsigned char   byPowerState;              //µçԴ״̬£¬0-ÎÞЧ£»1-Õý³££»2-Òì³£
    unsigned char   bySASConnectState;         //SASÁ¬½Ó״̬£¬0-ÎÞЧ£»1-Á¬½Ó£»2-δÁ¬½Ó
    char            byTotalNetworkPort;        //Íø¿Ú×ÜÊý£¨Ä¬ÈÏֵΪ-1£©
    char            byConnectNetworkPort;      //Íø¿ÚÁ¬½ÓÊý£¨Ä¬ÈÏֵΪ-1£©
    unsigned char   byRes[129];
}SADP_SELF_CHECK_STATE, *LPSADP_SELF_CHECK_STATE;
 
//EHomeʹÄܲÎÊý
typedef struct tagSADP_EHOME_ENABLE_PARAM
{
    unsigned int    dwSize;
    char            szDevID[MAX_PASS_LEN];     //É豸ID
    char            szEhomeKey[MAX_PASS_LEN];  //Ehome Key
    char            szPassword[MAX_PASS_LEN];  //É豸ÃÜÂë
    unsigned char   byRes[64];
}SADP_EHOME_ENABLE_PARAM, *LPSADP_EHOME_ENABLE_PARAM;
 
//WIFI²ÎÊýÅäÖýṹÌå
typedef struct tagSADP_WIFI_CONFIG_PARAM
{
    unsigned int    dwSize;
    char            szSSID[SADP_MAX_SERIALNO_LEN];      //SSID
    char            szPassword[SADP_MAX_SERIALNO_LEN];  //Password
    unsigned char   byWifiMode;  //wifiģʽ£¬0-ĬÈÏ£¬1-Station£¬ 2-AP
    unsigned char   byRes[64];
}SADP_WIFI_CONFIG_PARAM, *LPSADP_WIFI_CONFIG_PARAM;
 
//ÒÑÅäÖÃÖØÖÃÃÜÂëÀàÐͲÎÊýÅäÖýṹÌå
typedef struct tagSADP_PASSWORD_RESET_TYPE_PARAM
{
    unsigned int    dwSize;
    unsigned char   byEnable;  //0-δÅäÖà 1-£¨GUID£¬°²È«ÎÊÌ⣬°²È«ÓÊÏ䣬HC£©ÅäÖùýÒ»ÖÖ»ò¶àÖÖ 
    unsigned char   byGuidEnabled;  //0-δµ¼³ö¹ýGUID  1-µ¼³ö¹ýGUID
    unsigned char   bySecurityQuestionEnabled;  //0-δÅäÖùý°²È«ÎÊÌâ  1-ÅäÖùý°²È«ÎÊÌâ
    unsigned char   bySecurityMailBoxEnabled;  //0-δÅäÖùý°²È«ÓÊÏä  1-ÅäÖùý°²È«ÓÊÏä
    unsigned char   byHikConnectEnabled;  //0-δ°ó¶¨HikConnectÕ˺Š 1-°ó¶¨¹ýHikConnectÕ˺Å
    unsigned char   byRes1[3];
    unsigned char   byRes[64];
}SADP_PASSWORD_RESET_TYPE_PARAM, *LPSADP_PASSWORD_RESET_TYPE_PARAM;
 
 
// ½Ó¿Ú
typedef void (CALLBACK *PDEVICE_FIND_CALLBACK)(const SADP_DEVICE_INFO *lpDeviceInfo, void *pUserData);
CSADP_API BOOL CALLBACK SADP_Start_V30(PDEVICE_FIND_CALLBACK pDeviceFindCallBack, int bInstallNPF = 0, void* pUserData = NULL);
typedef void (CALLBACK *PDEVICE_FIND_CALLBACK_V40)(const SADP_DEVICE_INFO_V40 *lpDeviceInfo, void *pUserData);
CSADP_API BOOL CALLBACK SADP_Start_V40(PDEVICE_FIND_CALLBACK_V40 pDeviceFindCallBack, int bInstallNPF = 0, void* pUserData = NULL);
CSADP_API BOOL CALLBACK SADP_SendInquiry(void);
CSADP_API BOOL CALLBACK SADP_Stop(void);
CSADP_API BOOL CALLBACK SADP_ModifyDeviceNetParam(const char* sMAC, const char* sPassword, const SADP_DEV_NET_PARAM *lpNetParam);
CSADP_API unsigned int CALLBACK SADP_GetSadpVersion(void);
CSADP_API BOOL CALLBACK SADP_SetLogToFile(int nLogLevel=0, char const *strLogDir = NULL, int bAutoDel = 1);        
CSADP_API unsigned int CALLBACK SADP_GetLastError(void);
CSADP_API BOOL CALLBACK SADP_ResetDefaultPasswd(const char* sDevSerialNO, const char* sCommand);
CSADP_API BOOL CALLBACK SADP_SetCMSInfo(const char* sMac, const SADP_CMS_PARAM *lpCmsParam);
CSADP_API BOOL CALLBACK SADP_Clearup(void);
CSADP_API void CALLBACK SADP_SetAutoRequestInterval(unsigned int dwInterval); //ÉèÖÃ×Ô¶¯ËÑË÷ʱ¼ä¼ä¸ô(µ¥Î»Ã룬Ϊ0Ôò²»×Ô¶¯ÇëÇó£¬Ä¬ÈÏ60s)
 
CSADP_API BOOL CALLBACK SADP_GetDeviceConfig(const char* sDevSerialNO, unsigned int dwCommand, void* lpInBuffer, unsigned int  dwinBuffSize, void *lpOutBuffer, unsigned int  dwOutBuffSize);
CSADP_API BOOL CALLBACK SADP_SetDeviceConfig(const char* sDevSerialNO, unsigned int dwCommand, void* lpInBuffer, unsigned int  dwInBuffSize, void* lpOutBuffer, unsigned int  dwOutBuffSize);
CSADP_API BOOL CALLBACK SADP_GetDeviceConfigByMAC(const char* sDevMAC, unsigned int dwCommand, void* lpInBuffer, unsigned int  dwinBuffSize, void *lpOutBuffer, unsigned int  dwOutBuffSize);
//¼¤»îÉ豸
CSADP_API BOOL CALLBACK SADP_ActivateDevice(const char* sDevSerialNO, const char* sCommand);
 
//ÖØÖÃÃÜÂë½Ó¿Ú£¬¼æÈÝ֮ǰµÄ»Ö¸´Ä¬ÈÏÃÜÂë½Ó¿Ú
CSADP_API BOOL CALLBACK SADP_ResetPasswd(const char* sDevSerialNO, const SADP_RESET_PARAM *pResetParam);
//ÖØÖÃÃÜÂë½Ó¿ÚV40£¬¼æÈÝ֮ǰµÄSADP_ResetPasswd
CSADP_API BOOL CALLBACK SADP_ResetPasswd_V40(const char* sDevSerialNO, const SADP_RESET_PARAM_V40 *pResetParam, SADP_RET_RESET_PARAM_V40 *pRetResetParam);
 
 
//ÉèÖÃÉ豸¹ýÂ˹æÔò
//dwFilterRule,°´Î»±íʾ£¬Îª1±íʾ¹ýÂË£¬È«0±íʾ²»¹ýÂË;0x01:¹ýÂËөʯÉ豸;0x02:¹ýÂËOEMÉ豸;0x03:¹ýÂËÓ©ºÍOEMÉ豸;0xfffffffe:½öÏÔʾөʯÉ豸;0xfffffffd:½öÏÔʾOEMÉ豸
CSADP_API BOOL CALLBACK SADP_SetDeviceFilterRule( unsigned int dwFilterRule, const void *lpInBuff, unsigned int dwInBuffLen);
//ÐÞ¸ÄÍøÂç²ÎÊýV40
CSADP_API BOOL CALLBACK SADP_ModifyDeviceNetParam_V40(const char* sMAC, const char* sPassword, const SADP_DEV_NET_PARAM *lpNetParam, SADP_DEV_RET_NET_PARAM *lpRetNetParam, unsigned int  dwOutBuffSize);
//µãµÆ
CSADP_API BOOL CALLBACK SADP_SendLamp(const char* sMAC, unsigned int dwCommand);
#endif