DeviceManager.mm 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500
  1. //
  2. // DeviceManager.m
  3. // MobileVideo
  4. //
  5. // Created by XM on 2018/4/18.
  6. // Copyright © 2018年 XM. All rights reserved.
  7. //
  8. #import "FunSDK/FunSDK.h"
  9. #import <FunSDK/FunSDK2.h>
  10. #import <string>
  11. #import "GTMNSString+HTML.h"
  12. #import "AlarmManager.h"
  13. #import "DeviceManager.h"
  14. #import "XMNetInterface/NetInterface.h"
  15. #import "Header.h"
  16. @implementation NSMessage
  17. + (id)SendMessag:(NSString *) name obj:(void *) obj p1:(int)param1 p2:(int)param2 {
  18. NSMessage *pNew = [NSMessage alloc];
  19. [pNew setObj:obj];
  20. [pNew setParam1:param1];
  21. [pNew setParam2:param2];
  22. return pNew;
  23. }
  24. @end
  25. @interface DeviceManager ()
  26. {
  27. NSString *deviceMac;
  28. }
  29. @end
  30. @implementation DeviceManager
  31. + (instancetype)getInstance {
  32. static DeviceManager *Manager;
  33. static dispatch_once_t onceToken;
  34. dispatch_once(&onceToken, ^{
  35. Manager = [[DeviceManager alloc]init];
  36. });
  37. return Manager;
  38. }
  39. - (id)init {
  40. self = [super init];
  41. return self;
  42. }
  43. #pragma mark -通过序列号、局域网搜索、ap模式连接添加设备
  44. - (void)addDeviceByDeviseSerialnumber:(NSString*)serialNumber deviceName:(NSString *)deviceName devType:(int)type {
  45. //直接通过序列号添加设备
  46. if (deviceName == nil) {
  47. deviceName = serialNumber;
  48. }
  49. SDBDeviceInfo devInfo = {0};
  50. STRNCPY(devInfo.loginName, SZSTR(@"admin"));
  51. STRNCPY(devInfo.loginPsw, SZSTR(@""));
  52. STRNCPY(devInfo.Devmac, SZSTR(serialNumber));
  53. devInfo.nType = type;
  54. STRNCPY(devInfo.Devname, SZSTR(deviceName));
  55. devInfo.nPort = 34567;
  56. FUN_SysAdd_Device(self.msgHandle, &devInfo);
  57. }
  58. #pragma mark - 通过ip/域名添加
  59. - (void)addDeviceByDeviceIP:(NSString *)deviceIP deviceName:(NSString *)name password:(NSString *)psw port:(NSString *)port{
  60. SDBDeviceInfo devInfo = {0};
  61. STRNCPY(devInfo.Devname, SZSTR(name));
  62. STRNCPY(devInfo.loginName, SZSTR(@"admin"));
  63. STRNCPY(devInfo.loginPsw, SZSTR(psw));
  64. NSString *myPort = (port.length == 0) ? @"34567" :port;
  65. devInfo.nPort = [myPort intValue];
  66. NSString *index = [NSString stringWithFormat:@"%@:%@",deviceIP, myPort];
  67. STRNCPY(devInfo.Devmac, SZSTR(index));
  68. FUN_SysAdd_Device(self.msgHandle, &devInfo);
  69. }
  70. #pragma mark - 局域网搜索设备
  71. //先搜索局域网设备,搜索到之后才能进行添加
  72. - (void)SearchDevice {
  73. FUN_DevSearchDevice(self.msgHandle, 4000, 0);
  74. }
  75. //搜索到之后,再选择要添加的设备添加
  76. - (void)addDeviceBySerialNum:(NSString *)serialNumber deviceName:(NSString *)name type:(int)devType{
  77. SDBDeviceInfo devInfo = {0};
  78. STRNCPY(devInfo.loginName, SZSTR(@"admin"));
  79. STRNCPY(devInfo.loginPsw, SZSTR(@""));
  80. STRNCPY(devInfo.Devmac, SZSTR(serialNumber));
  81. STRNCPY(devInfo.Devname, SZSTR(name));
  82. devInfo.nType = devType;
  83. devInfo.nPort = 34567;
  84. FUN_SysAdd_Device(self.msgHandle, &devInfo);
  85. }
  86. #pragma mark - ap添加设备
  87. - (void)addDeviceByAP {
  88. }
  89. #pragma mark - 开始快速配置
  90. -(void)startConfigWithSSID:(NSString*)ssid password:(NSString*)password{
  91. char data[128] = {0};
  92. char infof[256] = {0};
  93. int encmode = 1;
  94. unsigned char mac[6] = {0};
  95. sprintf(data, "S:%sP:%sT:%d", [ssid UTF8String], SZSTR(password), encmode);
  96. NSString* sGateway = [NetInterface getDefaultGateway];
  97. sprintf(infof, "gateway:%s ip:%s submask:%s dns1:%s dns2:%s mac:0", SZSTR(sGateway), [[NetInterface getCurrent_IP_Address] UTF8String],"255.255.255.0",SZSTR(sGateway),SZSTR(sGateway));
  98. NSString* sMac = [NetInterface getCurrent_Mac];
  99. sscanf(SZSTR(sMac), "%x:%x:%x:%x:%x:%x", &mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5]);
  100. NSLog(@"快速配置流程:发送路由器信息");
  101. FUN_DevStartAPConfig(self.msgHandle, 3, SZSTR(ssid), data, infof, SZSTR(sGateway), encmode, 0, mac, 180000);
  102. }
  103. #pragma mark - 停止快速配置
  104. -(void)stopConfig{
  105. FUN_DevStopAPConfig();
  106. }
  107. #pragma mark - 解析二维码
  108. -(NSArray *)decodeDevInfo:(NSString*)info{
  109. char szDevId[256] = {0};
  110. char szUserName[64] = {0};
  111. char szPassword[64] = {0};
  112. int nType = 0;
  113. int time = 0;
  114. FUN_DecDevInfo([info UTF8String], szDevId, szUserName, szPassword, nType, time);
  115. NSArray* array = [[NSArray alloc] initWithObjects:[NSString stringWithUTF8String:szDevId], [NSString stringWithUTF8String:szUserName],[NSString stringWithUTF8String:szPassword], [NSString stringWithFormat:@"%d", nType], nil];
  116. return array;
  117. }
  118. #pragma mark - 获取设备状态
  119. - (void)getDeviceState:(NSString *)deviceMac {
  120. std::string myDev;
  121. if (deviceMac != nil) {
  122. myDev.append([deviceMac UTF8String]);
  123. myDev.append(";");
  124. }else{
  125. NSMutableArray *deviceArray = [[DeviceControl getInstance] currentDeviceArray];
  126. for (int i = 0; i < deviceArray.count; i ++) {
  127. DeviceObject *devObject = [deviceArray objectAtIndex:i];
  128. if(devObject!= nil){
  129. myDev.append([devObject.deviceMac UTF8String]);
  130. myDev.append(";");
  131. }
  132. }
  133. }
  134. if (myDev.length() > 0){
  135. FUN_SysGetDevState(self.msgHandle, myDev.c_str());
  136. }else{
  137. //没有设备 直接回调
  138. if (self.delegate && [self.delegate respondsToSelector:@selector(getDeviceState:result:)]) {
  139. [self.delegate getDeviceState:nil result:YES];
  140. }
  141. }
  142. }
  143. #pragma mark - 唤醒睡眠中的设备
  144. - (void)deviceWeakUp:(NSString*)string {
  145. DeviceObject *object = [[DeviceControl getInstance] GetDeviceObjectBySN:string];
  146. //门铃门锁等设备才需要每次唤醒
  147. if (object.nType == XM_DEV_CAT || object.nType == XM_DEV_DOORBELL || object.nType == CZ_DOORBELL || object.nType == XM_DEV_DOORBELL_A) {
  148. deviceMac = string;
  149. FUN_DevWakeUp(self.msgHandle, SZSTR(deviceMac), 0);
  150. }
  151. }
  152. #pragma mark - 获取设备通道
  153. - (void)getDeviceChannel:(NSString *)devMac {
  154. DeviceObject *devObject = [[DeviceControl getInstance] GetDeviceObjectBySN:devMac];
  155. if (devObject == nil) {
  156. return;
  157. }
  158. //1、先判断本地是否有保存,底层库是否已经获取到(DSS设备能直接获取到)
  159. NSMutableArray *nameArr = [self getChannleFromUserDB:devMac];
  160. if (devObject.channelArray.count>0 || nameArr.count >0){
  161. if (devObject.channelArray.count == 0) {
  162. //本地保存的有通道,则传递给deviceObject对象
  163. NSMutableArray *channelArray = [[NSMutableArray alloc] initWithCapacity:0];
  164. for (int i =0; i< nameArr.count; i++) {
  165. NSString *str = [nameArr objectAtIndex:i];
  166. ChannelObject *channel = [[DeviceControl getInstance] addName:str ToDeviceObject:devObject];
  167. channel.channelNumber = i;
  168. [channelArray addObject:channel];
  169. }
  170. devObject.channelArray = [channelArray mutableCopy];
  171. }
  172. //本地已经有保存,后台更新通道名称
  173. FUN_DevGetChnName(self.msgHandle, [devObject.deviceMac UTF8String], "", "", -1);
  174. return;
  175. }
  176. //2、从服务器获取通道信息,获取成功后刷新
  177. FUN_DevGetChnName(self.msgHandle, [devMac UTF8String], "", "", 0);
  178. }
  179. #pragma mark - 修改设备信息
  180. - (void)changeDevice:(NSString *)devMac devName:(NSString *)name username:(NSString *)user password:(NSString *)psw {
  181. NSMutableArray *deviceArray = [[DeviceControl getInstance] currentDeviceArray];
  182. DeviceObject *devObj = [[DeviceControl getInstance] GetDeviceObjectBySN:devMac];
  183. devObj.loginName = user;
  184. devObj.loginPsw = psw;
  185. SDBDeviceInfo devInfo = {0};
  186. strncpy(devInfo.Devmac, SZSTR(devMac), 64);
  187. strncpy(devInfo.Devname, SZSTR(name), 128);
  188. devInfo.nPort = devObj.nPort;
  189. devInfo.nType = devObj.nType;
  190. strncpy(devInfo.loginName, SZSTR(user), 16);
  191. strncpy(devInfo.loginPsw, SZSTR(psw), 16);
  192. FUN_SysChangeDevInfo(self.msgHandle, &devInfo, "", "",(int)[deviceArray indexOfObject:devObj]);
  193. FUN_DevSetLocalPwd(devInfo.Devmac, [user UTF8String], [psw UTF8String]);
  194. }
  195. #pragma mark - 修改设备密码
  196. - (void)changeDevicePsw:(NSString *)devMac loginName:(NSString *)name password:(NSString *)psw {
  197. FUN_DevSetLocalPwd(SZSTR(devMac),SZSTR(name), SZSTR(psw));
  198. }
  199. #pragma mark - 删除设备
  200. - (void)deleteDeviceWithDevMac:(NSString *)devMac {
  201. NSMutableArray *deviceArray = [[DeviceControl getInstance] currentDeviceArray];
  202. DeviceObject *devObj = [[DeviceControl getInstance] GetDeviceObjectBySN:devMac];
  203. FUN_SysDelete_Dev(self.msgHandle, [devMac UTF8String], "", "", (int)[deviceArray indexOfObject:devObj]);
  204. }
  205. #pragma mark - 判断是否是主账号
  206. - (void)checkMasterAccount:(NSString *)devMac {
  207. if (devMac == nil) {
  208. ChannelObject *channel = [[DeviceControl getInstance] getSelectChannel];
  209. devMac = channel.deviceMac;
  210. }
  211. Fun_SysIsDevMasterAccountFromServer(self.msgHandle, [devMac UTF8String], 0);
  212. }
  213. #pragma mark 获取设备列表和添加设备成功之后放入内存
  214. - (void)resiveDevicelist:(NSMessage *)msg {
  215. [[DeviceControl getInstance] clearDeviceArray];
  216. SDBDeviceInfo *pInfos = (SDBDeviceInfo *)[msg obj];
  217. for(int i = 0; i < [msg param1]; ++i){
  218. DeviceObject *devObject = [self addDevice:&(pInfos[i])];
  219. [[DeviceControl getInstance] addDevice:devObject];
  220. }
  221. //获取到的数组,和本地已经保存的数组进行对比
  222. [[DeviceControl getInstance] checkDeviceValid];
  223. }
  224. - (void)addDeviceToList:(NSMessage *)msg {
  225. SDBDeviceInfo *pDevInfo = (SDBDeviceInfo *)[msg obj];
  226. DeviceObject *devObject = [self addDevice:pDevInfo];
  227. [[DeviceControl getInstance] addDevice:devObject];
  228. }
  229. #pragma mark 读取数据、数组中添加设备
  230. - (DeviceObject *)addDevice:(SDBDeviceInfo *)pInfo {
  231. DeviceObject *devObject = [[DeviceObject alloc] init];
  232. devObject.deviceMac = [NSString stringWithUTF8String:(pInfo->Devmac)];
  233. devObject.deviceName = [NSString stringWithUTF8String:(pInfo->Devname)];
  234. devObject.loginName = [NSString stringWithUTF8String:(pInfo->loginName)];
  235. devObject.loginPsw = [NSString stringWithUTF8String:(pInfo->loginPsw)];
  236. devObject.nPort = pInfo->nPort;
  237. devObject.nType = pInfo->nType;
  238. return devObject;
  239. }
  240. #pragma mark 获取通道名称数组
  241. - (NSMutableArray *)getChannleFromUserDB:(NSString *)devMac {
  242. int nChnCount = FUN_GetDevChannelCount(SZSTR(devMac));
  243. NSMutableArray *channel = [[NSMutableArray alloc] initWithCapacity:0];
  244. if (nChnCount > 0) {
  245. for (int i = 0; i < nChnCount; i++) {
  246. [channel addObject:[NSString stringWithFormat:@"%@%d", TS("Channel"), i + 1]];
  247. }
  248. }
  249. return channel;
  250. }
  251. #pragma mark - 回调 OnFunSDKResult
  252. - (void)OnFunSDKResult:(NSNumber *) pParam {
  253. NSInteger nAddr = [pParam integerValue];
  254. MsgContent *msg = (MsgContent *)nAddr;
  255. switch (msg->id) {
  256. #pragma mark 添加设备回调
  257. case EMSG_SYS_ADD_DEVICE:{
  258. [SVProgressHUD dismiss];
  259. if (msg->param1 < 0) {
  260. if (msg->param1 == -99992) {
  261. if ([NSString checkSSID:[NSString getCurrent_SSID]]) {//直连方式增加设备
  262. }else{
  263. [MessageUI ShowErrorInt:msg->param1];//非直连增加设备
  264. }
  265. }else{
  266. [MessageUI ShowErrorInt:msg->param1];
  267. }
  268. }else{
  269. //添加设备成功
  270. [SVProgressHUD showSuccessWithStatus:TS("Success")];
  271. [[DeviceManager getInstance] addDeviceToList:[NSMessage SendMessag:nil obj:msg->pObject p1:msg->param1 p2:0]];
  272. }
  273. if (self.delegate && [self.delegate respondsToSelector:@selector(addDeviceResult:)]) {
  274. [self.delegate addDeviceResult:msg->param1];
  275. }
  276. }
  277. break;
  278. #pragma mark 获取设备状态回调
  279. case EMSG_SYS_GET_DEV_STATE:{
  280. //回调结束刷新
  281. DeviceObject *devObject = [[DeviceControl getInstance] GetDeviceObjectBySN:NSSTR(msg->szStr)];
  282. if(devObject != nil){
  283. //设备状态
  284. devObject.state = msg->param1;
  285. }
  286. if (msg->param1 >0) {
  287. //获取门铃状态
  288. if (devObject.nType == XM_DEV_DOORBELL || devObject.nType == XM_DEV_CAT || devObject.nType == CZ_DOORBELL || devObject.nType == XM_DEV_INTELLIGENT_LOCK || devObject.nType == XM_DEV_DOORBELL_A || devObject.nType == XM_DEV_DOORLOCK_V2) {
  289. //下面这个方法在获取设备状态回调后调用准确度最高
  290. devObject.info.eFunDevState = FUN_GetDevState(SZSTR(devObject.deviceMac), EFunDevStateType_IDR);
  291. NSLog(@"eFunDevState %@ %i",devObject.deviceMac,devObject.info.eFunDevState);
  292. }
  293. }
  294. if (self.delegate && [self.delegate respondsToSelector:@selector(getDeviceState:result:)]) {
  295. [self.delegate getDeviceState:devObject.deviceMac result:devObject.state];
  296. }
  297. }
  298. break;
  299. #pragma mark 设备唤醒回调
  300. case EMSG_DEV_WAKE_UP:{
  301. //门铃门锁类产品唤醒回调,这类产品根据设备类型不同,无操作一段时间(15/30秒)后可能会自动休眠,所以这一类设备每次操作前最好都能执行一次唤醒功能。如果想要准确实时获取这类设备的休眠状态,那么需要每过一段时间去获取一下。另外门铃门锁等智能唤醒设备,直接按门铃唤醒,会以报警推送的方式发消息给手机,app可以在收到消息后刷新状态
  302. //回调结束刷新,deviceMac是开始唤醒设备时保存的
  303. if (self.delegate && [self.delegate respondsToSelector:@selector(deviceWeakUp:result:)]) {
  304. [self.delegate deviceWeakUp:deviceMac result:msg->param1];
  305. }
  306. }
  307. break;
  308. #pragma mark 获取设备通道回调
  309. case EMSG_DEV_GET_CHN_NAME:{
  310. DeviceObject *devObject = [[DeviceControl getInstance] GetDeviceObjectBySN:NSSTR(msg->szStr)];
  311. if (devObject == nil) {
  312. [SVProgressHUD dismiss];
  313. }
  314. //获取通道信息成功并且通道数>0
  315. if (msg->param1 >= 0 && msg->param3 > 0) {
  316. SDK_ChannelNameConfigAll *pChannels = (SDK_ChannelNameConfigAll *)msg->pObject;
  317. NSMutableArray *channelArray = [[NSMutableArray alloc] initWithCapacity:0];
  318. for (int i = 0; i < msg->param3; i ++) {
  319. NSString *str = NSSTR(pChannels->channelTitle[i]);
  320. ChannelObject *channel = [[DeviceControl getInstance] addName:str ToDeviceObject:devObject];
  321. channel.channelNumber = i;
  322. [channelArray addObject: channel];
  323. }
  324. devObject.channelArray = [channelArray mutableCopy];
  325. }
  326. if (self.delegate && [self.delegate respondsToSelector:@selector(getDeviceChannel:result:)]) {
  327. [self.delegate getDeviceChannel:devObject.deviceMac result:msg->param1];
  328. }
  329. }
  330. break;
  331. #pragma mark 修改用户信息回调
  332. case EMSG_SYS_CHANGEDEVINFO:{ // 修改用户设备信息
  333. NSMutableArray *deviceArray = [[DeviceControl getInstance] currentDeviceArray];
  334. if (deviceArray.count <= msg->seq) {
  335. return;
  336. }
  337. DeviceObject *devObject = [deviceArray objectAtIndex:msg->seq];
  338. if (devObject == nil) {
  339. return;
  340. }
  341. //修改成功,更新一下本地数据
  342. if (msg->param1 >= 0) {
  343. SDBDeviceInfo *pDevInfo = (SDBDeviceInfo *)msg->pObject;
  344. devObject.deviceName = [NSSTR(pDevInfo->Devname) gtm_stringByUnescapingFromHTML];
  345. devObject.loginPsw = NSSTR(pDevInfo->loginPsw);
  346. [deviceArray replaceObjectAtIndex:msg->seq withObject:devObject];
  347. //修改用户信息之后也要重新保存一遍
  348. [[DeviceControl getInstance] saveDeviceList];
  349. }
  350. if (self.delegate && [self.delegate respondsToSelector:@selector(changeDevice:changedResult:)]) {
  351. [self.delegate changeDevice:devObject.deviceMac changedResult:msg->param1];
  352. }
  353. }
  354. break;
  355. #pragma mark - 修改密码
  356. case EMSG_SYS_EDIT_PWD_XM:
  357. {
  358. NSLog(@"修改密码成功");
  359. }
  360. #pragma mark 删除设备回调
  361. case EMSG_SYS_DELETE_DEV:{ // 删除设备
  362. NSMutableArray *deviceArray = [[DeviceControl getInstance] currentDeviceArray];
  363. if (deviceArray.count <= msg->seq) {
  364. return;
  365. }
  366. DeviceObject *devObject = [deviceArray objectAtIndex:msg->seq];
  367. if (devObject == nil) {
  368. return;
  369. }
  370. if (msg->param1 >= 0) {
  371. //收到删除成功信息之后,注销设备报警通知
  372. [[AlarmManager getInstance] UnlinkAlarm:devObject.deviceMac];
  373. //删除设备之后需要把数据保存本地一遍
  374. [deviceArray removeObject:devObject];
  375. [[DeviceControl getInstance] saveDeviceList];
  376. }
  377. //刷新界面
  378. if (self.delegate && [self.delegate respondsToSelector:@selector(deleteDevice:result:)]) {
  379. [self.delegate deleteDevice:devObject.deviceMac result:msg->param1];
  380. }
  381. }
  382. break;
  383. #pragma mark 局域网搜索回调
  384. case EMSG_DEV_SEARCH_DEVICES:{
  385. NSMutableArray *searchArray = [[NSMutableArray alloc] initWithCapacity:0];
  386. if (msg->param1 <= 0) {
  387. //没有搜索到设备
  388. [MessageUI ShowErrorInt:msg->param1];
  389. break;
  390. }
  391. [SVProgressHUD dismiss];
  392. struct SDK_CONFIG_NET_COMMON_V2* netCommonBuf = (struct SDK_CONFIG_NET_COMMON_V2*)msg->pObject;
  393. for (int i = 0; i < msg->param2; i++) {
  394. //屏蔽掉地址非法的设备
  395. if (netCommonBuf[i].HostIP.l == 0 || netCommonBuf[i].TCPPort == 0) {
  396. continue;
  397. }
  398. DeviceObject *object = [[DeviceObject alloc] init];
  399. object.deviceMac = [NSString stringWithUTF8String:netCommonBuf[i].sSn]; //设备序列号
  400. object.nType = netCommonBuf[i].DeviceType; //设备类型
  401. if (object.deviceMac == nil || object.deviceMac.length != 16) {
  402. //序列号无效的话,改为设置IP
  403. object.deviceMac = [NSString stringWithFormat:@"%d.%d.%d.%d",netCommonBuf[i].HostIP.c[0],netCommonBuf[i].HostIP.c[1],netCommonBuf[i].HostIP.c[2],netCommonBuf[i].HostIP.c[3]];
  404. }
  405. object.deviceName = [NSString stringWithUTF8String:netCommonBuf[i].HostName]; //设备名称
  406. object.deviceIp = [NSString stringWithFormat:@"%d.%d.%d.%d",netCommonBuf[i].HostIP.c[0],netCommonBuf[i].HostIP.c[1],netCommonBuf[i].HostIP.c[2],netCommonBuf[i].HostIP.c[3]];
  407. object.loginName = @"admin";
  408. object.loginPsw = @"";
  409. object.nPort = netCommonBuf[i].TCPPort;
  410. if (searchArray.count == 0) {
  411. //设备数组为空时不需判断直接添加
  412. [searchArray addObject:object];
  413. continue;
  414. }
  415. BOOL find = NO;
  416. for (DeviceObject *device in searchArray) {
  417. if ([device.deviceMac isEqualToString:object.deviceMac]) {
  418. find = YES;
  419. }
  420. }
  421. if (find == NO) {
  422. //如果不包含则添加设备
  423. [searchArray addObject:object];
  424. }
  425. }
  426. if (self.delegate && [self.delegate respondsToSelector:@selector(searchDevice:result:)]) {
  427. //局域网设备 搜索结果回调
  428. [self.delegate searchDevice:searchArray result:msg->param1];
  429. }
  430. }
  431. break;
  432. #pragma mark 快速配置回调
  433. case EMSG_DEV_AP_CONFIG:
  434. {
  435. if (msg->param1 <= 0) {
  436. //没有搜索到设备
  437. [MessageUI ShowErrorInt:msg->param1];
  438. break;
  439. }
  440. [SVProgressHUD dismiss];
  441. DeviceObject *object = [[DeviceObject alloc] init];
  442. SDK_CONFIG_NET_COMMON_V2 *pCfg = (SDK_CONFIG_NET_COMMON_V2 *)msg->pObject;
  443. NSString* devSn = @"";
  444. NSString* name = @"";
  445. int nDevType = 0;
  446. int nResult = msg->param1;
  447. if ( nResult>=0 && pCfg) {
  448. name = NSSTR(pCfg->HostName);
  449. devSn = NSSTR(pCfg->sSn);
  450. nDevType = pCfg->DeviceType;
  451. }
  452. object.deviceMac = devSn;
  453. object.nType = nDevType;
  454. object.deviceName = name;
  455. if (self.delegate && [self.delegate respondsToSelector:@selector(quickConfiguration:result:)] ) {
  456. [self.delegate quickConfiguration:object result:msg->param1];
  457. }
  458. }
  459. break;
  460. case EMSG_DEV_SET_WIFI_CFG:
  461. {
  462. NSLog(@"");
  463. }
  464. break;
  465. #pragma mark 判断是否是主账号回调
  466. case EMSG_SYS_IS_MASTERMA: {
  467. if ([self.delegate respondsToSelector:@selector(checkMaster:Result:)]) {
  468. [self.delegate checkMaster:nil Result:msg->param1];
  469. }
  470. }
  471. default:
  472. break;
  473. }
  474. }
  475. @end