JLChen
2021-05-18 a869383e163a18cdedcf587383c1eca043129754
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
//
//  Copyright © 2018年 Zhejiang Dahua Technology Co.,Ltd. All rights reserved.
//    对NETSDK使用的接口进行封装,方便Swift调用
 
#import <Foundation/Foundation.h>
#import "DHDeviceNetInfo.h"
#import "DHApWifiInfo.h"
#import "DHDeviceResetPWDInfo.h"
#import "DHDevicePWDResetInfo.h"
#import <LCAddDeviceModule/DHDeviceInfoLogModel.h>
 
typedef void(^DHNetSDKSearchDeviceCallback)(DHDeviceNetInfo *deviceInfo);
typedef void(^DHNetSDKDisconnetCallback)(long loginHandle, NSString *ip, NSInteger port);
 
@interface DHNetSDKInterface : NSObject
 
+ (instancetype)sharedInstance;
 
@property (strong, nonatomic)NSString *requestId;
 
+ (void)startNetSDKReportByRequestId:(NSString *)requestId;
 
+ (void)stopNetSDKReport;
 
 
+ (void)initSDK;
 
/**
 设备断线回调
 
 @param callback 回调block
 */
- (void)setDisconnectCallback:(DHNetSDKDisconnetCallback)callback;
 
+ (void)logOpen:(NSString *)path;
    
+ (DHDeviceInfoLogModel *)initDevAccount:(NSString *)password device:(DHDeviceNetInfo *)deviceNetInfo useIp:(BOOL)useIp;
 
/**
 通过NetSDK进行局域网搜索
 
 @param callback 回调
 @param localIp 手机ip,软ap时传入
 @return 成功返回登录句柄
 */
- (long)startSearchDevices:(DHNetSDKSearchDeviceCallback)callback byLocalIp:(NSString *)localIp;
 
/**
 通过NetSDK进行局域网搜索
 
 @param callback 回调
 @return 成功返回登录句柄
 */
- (long)startSearchDevices:(DHNetSDKSearchDeviceCallback)callback;
 
- (void)stopSearchDevices:(long)handle;
 
 
/// 安全模式登陆
/// @param devIP  IP地址
/// @param port    端口号
/// @param username   用户名
/// @param password   密码
/// @param errorCode
+ (DHNetLoginDeviceInfo *)loginWithHighLevelSecurityByIP:(NSString *)devIP port:(NSInteger)port username:(NSString *)username password:(NSString *)password errorCode:(unsigned int *)errorCode;
 
+ (DHNetLoginDeviceInfo *)loginDeviceByIP:(NSString *)devIP port:(NSInteger)port username:(NSString *)username password:(NSString *)password errorCode:(unsigned int *)errorCode;
 
/**
 AP配网SC设备获取wifi列表
 
 @param deviceIP IP地址
 @param port 端口号
 @return 成功返回wifi列表
 */
+ (NSArray <DHApWifiInfo *>*)scDeviceApLoadWifiList:(NSString *)deviceIP port:(NSInteger)port error:(unsigned int *)errorCode;
 
/**
 AP配网SC设备连接Wi-Fi
 
 @param mSSIDmSSID IP地址
 @param password 端口号
 @param encryptionAuthority wifi加密方式
 @return
 */
+ (BOOL)scDeviceApConnectWifi:(NSString *)mSSID
                     password:(NSString *)password
                           ip:(NSString *)deviceIP port:(NSInteger)port encryptionAuthority:(int)encryptionAuthority;
 
/**
 登出设备
 
 @param loginHandle 登录句柄
 */
+ (void)logout:(long)loginHandle;
 
/**
通过NetSDK连接WIFI,软AP配置时使用
 
@param loginHandle 登录句柄
@param mSSID  ssid
@return 0成功,非0失败 返回模块
*/
+ (DHApWifiInfo*)queryWifiByLoginHandle:(long)loginHandle mssId:(NSString *)mssid errorCode:(unsigned int *)errorCode;
 
+ (NSArray<DHApWifiInfo*> *)loadWifiListByLoginHandle:(long)loginHandle errorCode:(unsigned int *)errorCode;
 
/**
 通过NetSDK连接WIFI,软AP配置时使用
 
 @param loginHandle 登录句柄
 @param mSSID  ssid
 @param password 密码
 @param encryptionAuthority 加密模式
 @param netcardName 网卡名称
 @return 0成功,非0失败
 */
 
+ (NSInteger)connectWIFIByDeviceId:(NSString *)deviceID
                              ssid:(NSString *)ssid
                          password:(NSString *)password
                         devicePwd:(NSString *)devicePwd
                              isSC:(BOOL)isSC;
 
//MARK: Error
+ (NSString *)getErrorDescription:(unsigned int)erroCode;
 
+ (unsigned int)getLastError;
 
/**
 查询设备信息
 
 @param loginHandle 登录句柄
 @return 成功返回对应的信息,失败返回nil
 */
+ (DHDeviceProductDefinition *)queryProductDefinitionInfo:(long)loginHandle;
 
/**
 查询设备权限
 
 @param loginHandle 登录句柄
 @return 成功返回对应的信息
 */
+ (DHDeviceUserInfoDefinition *)queryDeviceUserInfo:(long)loginHandle;
 
/**
 查询设备密码重置类型
 
 @param device 局域网搜索到的设备
 @param phoneIp 手机IP,可以为空
 @return 重置的相关信息,失败返回nil
 */
+ (DHDeviceResetPWDInfo *)queryPasswordResetType:(DHDeviceNetInfo *)device byPhoneIp:(NSString *)phoneIp;
 
/**
 重置设备密码
 
 @param password 密码
 @param device 局域网搜索的设备信息
 @param securityCode 验证码
 @param contact 接收验证码的手机/邮箱
 @param useAsPreset 是否设置为预留联系方式
 @param phoneIp 手机ip
 @return YES/NO
 */
+ (DHDevicePWDResetInfo *)resetPassword:(NSString *)password
               device:(DHDeviceNetInfo *)device
         securityCode:(NSString *)securityCode
              contact:(NSString *)contact
          useAsPreset:(BOOL)useAsPreset
            byPhoneIp:(NSString *)phoneIp;
 
/* 设备是否支持v3
  @param loginHandle 登陆句柄
  @return YES/NO
 */
 
+ (BOOL)querySupportWlanConfigV3:(long)loginHandle;
 
@end
 
 
//MARK - Safe Strcpy
/**
 对strcpy进行封装,避免__src为nil时,引起崩溃
 
 @param __dst 目标字符串,参考strcpy
 @param __src 源字符串,参考strcpy
 */
void safe_strcpy(char *__dst, const char *__src);