// // P2PClient.m // Yoosee // // Created by guojunyi on 14-3-25. // Copyright (c) 2014年 guojunyi. All rights reserved. // #import "P2PClient.h" #import "P2PCInterface.h" #import "Utils.h" #import "Constants.h" #import "config.h" //#import "PAIOUnit.H" #import "FListManager.h" #import "mesg.h" #import "des2.h" #import "Alarm.h" #import "AlarmDAO.h" #import "RecommendInfo.h" #import "RecommendInfoDAO.h" #import "UDManager.h" #import "LoginResult.h" #import "AppDelegate.h" #import "MPNotificationView.h" #import "CameraManager.h" #import "UDPManager.h" static sRecFilenameType playbackFiles[1024];//视频回放修复 static int playbackFilesLength = 0; static int playbackCurrentFileIndex = -1; @implementation P2PClient int Get3cidByIp(int dwIp) { if (dwIp<256) { NSArray* deviceList = [[UDPManager sharedDefault]getLanDevices]; for (int i=0; i<[deviceList count]; i++) { LocalDevice *localDevice = [deviceList objectAtIndex:i]; NSString* address = localDevice.address; NSArray *array = [address componentsSeparatedByString:@"."]; NSString* sID = [array objectAtIndex:3]; if (sID.intValue == dwIp) { return localDevice.contactId.intValue; } } } return dwIp; } /* 当设备密码为NULL时, 1)初始化密码,一定要用IP连接,否则会收到sendack,却收不到msg. 2)进行其他的SET或者GET,如果用IP,随便填个密码,都能正常进行 如果用ID,则会正常反应。 所以,就有了判断“设置密码标志位”为过滤条件的情况。 */ int GetIpBy3CID(int contactId) { NSArray* deviceList = [[UDPManager sharedDefault]getLanDevices]; for (int i=0; i<[deviceList count]; i++) { LocalDevice *localDevice = [deviceList objectAtIndex:i]; if ((localDevice.contactId.intValue == contactId) && (localDevice.flag == 1)) { NSString* address = localDevice.address; NSArray *array = [address componentsSeparatedByString:@"."]; NSString* sID = [array objectAtIndex:3]; return sID.intValue; } } return contactId; } int GetIpBy3CIDx(int contactId) { NSArray* deviceList = [[UDPManager sharedDefault] getLanDevices]; for (int i=0; i<[deviceList count]; i++) { LocalDevice *localDevice = [deviceList objectAtIndex:i]; if (localDevice.contactId.intValue == contactId) { NSString* address = localDevice.address; NSArray *array = [address componentsSeparatedByString:@"."]; NSString* sID = [array objectAtIndex:3]; return sID.intValue; } } return contactId; } + (id)sharedClient { static P2PClient *manager = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ manager = [[P2PClient alloc] init]; manager.isSendProcRunning = NO; manager.callPassword = @""; manager.loadedplaybackFiles = [NSMutableArray arrayWithCapacity:0];//视频回放修复add }); return manager; } -(BOOL)p2pConnectWithId:(NSString *)contactId codeStr1:(NSString *)codeStr1 codeStr2:(NSString *)codeStr2{ if(![contactId isValidateNumber]){ return NO; } if(![codeStr1 isValidateP2PVerifyCode1OrP2PVerifyCode2]){ return NO; } if(![codeStr2 isValidateP2PVerifyCode1OrP2PVerifyCode2]){ return NO; } vP2PExit(); sP2PInitPrm mP2Pprm; mP2Pprm.dw3CID = contactId.intValue; mP2Pprm.dw3CID |= 0x80000000 ; mP2Pprm.dwCode1 = codeStr1.intValue; mP2Pprm.dwCode2 = codeStr2.intValue; mP2Pprm.pHostName = "|p2p1.cloudlinks.cn|p2p2.cloudlinks.cn|p2p3.cloud-links.net|p2p4.cloud-links.net|p2p5.cloudlinks.cn|p2p6.cloudlinks.cn|p2p7.cloudlinks.cn|p2p8.cloudlinks.cn|p2p9.cloudlinks.cn|p2p10.cloudlinks.cn"; //mP2Pprm.pHostName = "|192.168.1.231"; mP2Pprm.dwChNs = 1; mP2Pprm.dwChBufSize[0] = 1024*512; mP2Pprm.dwChBufSize[1] = 1024*512; mP2Pprm.dwChBufSize[2] = 1024*512; mP2Pprm.dwChBufSize[3] = 1024*512; mP2Pprm.dwPassword = 1792802871; //get CustomerID from Common-Configuration.plist NSString * plist = [[NSBundle mainBundle] pathForResource:@"Common-Configuration" ofType:@"plist"]; NSDictionary * dic = [NSDictionary dictionaryWithContentsOfFile:plist]; NSArray *customerIDArray = dic[@"CustomerID"]; mP2Pprm.dwCustomerID[0] = [customerIDArray[0] intValue]; mP2Pprm.dwCustomerID[1] = [customerIDArray[1] intValue]; mP2Pprm.dwCustomerID[2] = [customerIDArray[2] intValue]; mP2Pprm.dwCustomerID[3] = [customerIDArray[3] intValue]; mP2Pprm.dwCustomerID[4] = [customerIDArray[4] intValue]; mP2Pprm.dwCustomerID[5] = [customerIDArray[5] intValue]; mP2Pprm.dwCustomerID[6] = [customerIDArray[6] intValue]; mP2Pprm.dwCustomerID[7] = [customerIDArray[7] intValue]; mP2Pprm.dwCustomerID[8] = [customerIDArray[8] intValue]; mP2Pprm.dwCustomerID[9] = [customerIDArray[9] intValue]; mP2Pprm.vCallingSignal = vCallingSignal; mP2Pprm.vRejectSignal = vRejectSignal; mP2Pprm.vAcceptSignal = vAcceptSignal; mP2Pprm.vP2PConnReady = vP2PConnReady; mP2Pprm.vRecvRemoteMessage = vRecvRemoteMessage; mP2Pprm.vSendMessageAck= vSendMessageAck; mP2Pprm.vFriendsStatusUpdate = vFriendsStatusUpdate; mP2Pprm.vFlagUpdate = vFlagUpdate; mP2Pprm.vGetFileCmdACK = vGetFileCmdACK; return fgP2PInit(&mP2Pprm); } //有新的系统消息回调函数 void vFlagUpdate(DWORD *pdwFlag) { // //friends update // if(pdwFlag[0] > dwMyFlag[0] || dwMyFlag[0] - pdwFlag[0] > 32767) // { // // } //system message update //get RecommendFlag flag from local NSUInteger dwMyFlag = (NSUInteger)[[[NSUserDefaults standardUserDefaults] objectForKey:@"RecommendFlag"] integerValue]; if(pdwFlag[1] > dwMyFlag || dwMyFlag - pdwFlag[1] > 32767) { return;//关闭推送 //取服务器的数据 获取推荐内容列表 // get storeID NSString *storeID = nil; //get isManualStoreID from Common-Configuration.plist NSString * plist = [[NSBundle mainBundle] pathForResource:@"Common-Configuration" ofType:@"plist"]; NSDictionary * dic = [NSDictionary dictionaryWithContentsOfFile:plist]; BOOL isManualStoreID = [dic[@"isManualStoreID"] boolValue]; if (isManualStoreID) { //get ManualStoreID from Common-Configuration.plist storeID = dic[@"ManualStoreID"]; if ([storeID isEqualToString:@""]) { storeID = nil; } }else{ //get storeID from local storeID = [[NSUserDefaults standardUserDefaults] objectForKey:@"StoreID"]; } if (!storeID) { //要不要提示一下呢(请求添加设备,获取商城ID,或者在.plist文件添加商城ID) //能够推送过来,即调用vFlagUpdate,说明storeID存在 //return ; } //取出最新的一条记录的Index传给服务器,获取最新的推荐列表信息(本地没有的) RecommendInfoDAO *recoDAO = [[RecommendInfoDAO alloc] init]; NSArray *arr = [recoDAO findAll]; int index = 0; if (arr.count > 0) { RecommendInfo *m = arr[0];//最新的一条记录 index = m.messageID; } LoginResult * login = [UDManager getLoginInfo]; NSInteger userID = login.contactId.integerValue | 0x80000000; NSString *sessionID = login.sessionId; NSString *urlString = [NSString stringWithFormat:@"http://192.168.1.231/Business/Seller/RecommendInfo.ashx?UserID=%ld&SessionID=%@&StoreID=%@&Index=%d&PageIndex=1&PageSize=100",(long)userID,sessionID,storeID,index]; NSURL *url = [NSURL URLWithString:urlString]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue ] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { if ((!error)) {//发送请求成功 NSError *parseError; id dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&parseError]; int error_code = [[dictionary objectForKey:@"error_code"] intValue]; int recordCount = [[dictionary objectForKey:@"RecordCount"] intValue]; if (error_code == 0) { //新的通知已经获取,映射 NSString *recommendFlag = [dictionary objectForKey:@"RecommendFlag"]; DWORD myFlag[4] = {0}; myFlag[1] = (int)[recommendFlag integerValue]; vP2PSetUpdateFlag(myFlag); //RecommendFlag [[NSUserDefaults standardUserDefaults] setObject:recommendFlag forKey:@"RecommendFlag"]; [[NSUserDefaults standardUserDefaults] synchronize]; } if (error_code == 0 && recordCount > 0) {//成功获取到数据,且RL不为空 NSString *RL = [dictionary objectForKey:@"RL"]; NSArray *array = [RL componentsSeparatedByString:@";"]; for(NSString *record in array){ if([record isEqualToString:@""]){ continue; } NSArray *detailArray = [record componentsSeparatedByString:@","]; RecommendInfo * recommendInfo = [[RecommendInfo alloc] init]; for (int i = 0; i < detailArray.count; i++) { switch (i) { case 0://database key { recommendInfo.messageID = [detailArray[i] integerValue]; } break; case 1: { NSString *title = [Utils getNormalStringByDecodedBase64String:detailArray[i]]; recommendInfo.titleString = title; } break; case 2: { NSString *content = [Utils getNormalStringByDecodedBase64String:detailArray[i]]; recommendInfo.contentString = content; } break; case 3: { recommendInfo.imageURLString = detailArray[i]; } break; case 4: { NSString *imageLinkURLString = [Utils getNormalStringByDecodedBase64String:detailArray[i]]; recommendInfo.imageLinkURLString = imageLinkURLString; } break; case 5: { //预览ID } break; case 6: { recommendInfo.timeString = detailArray[i]; } break; case 7: { //状态 } break; } } recommendInfo.isRead = NO;//YES表示已读 //数据库的主键是唯一的,与主键相同的数据当然也插入不了。 RecommendInfoDAO *recoDAO = [[RecommendInfoDAO alloc] init]; [recoDAO insert:recommendInfo]; } //新的通知已经获取,前台、后台推出告诉用户可以查看 //需要做一些判断,有新的通知,则显示角标badge;查看新通知,清除角标 //取出最新的一条记录,作为通知的推出内容 RecommendInfoDAO *recoDAO = [[RecommendInfoDAO alloc] init]; NSArray *arr = [recoDAO findAll]; if (arr.count > 0) { RecommendInfo *m = arr[0];//最新的一条记录 NSString *title = m.titleString; if ([AppDelegate sharedDefault].isGoBack) { //创建一个本地推送 UILocalNotification *alarmNotify = [[UILocalNotification alloc] init]; //设置3秒之后,推送时间 alarmNotify.fireDate = [NSDate dateWithTimeIntervalSinceNow:0]; //设置时区 alarmNotify.timeZone = [NSTimeZone defaultTimeZone]; //推送声音 alarmNotify.soundName = @"default"; //内容 alarmNotify.alertBody = title; //显示在icon上的红色圈中的数子 alarmNotify.applicationIconBadgeNumber = 1; //定义查看通知的操作名 alarmNotify.alertAction = NSLocalizedString(@"open", nil); //添加推送到uiapplication [[UIApplication sharedApplication] scheduleLocalNotification:alarmNotify]; } [MPNotificationView notifyWithText:NSLocalizedString(@"system_message", nil) andDetail:title]; } }else{//获取数据失败 //[self.view makeToast:NSLocalizedString(@"get_data_fail", nil)]; } }else{//发送请求失败 dispatch_async(dispatch_get_main_queue(), ^{ //[self.view makeToast:NSLocalizedString(@"send_request_fail", nil)]; }); } }]; } // //friends update // if(pdwFlag[2] > dwMyFlag[2] || dwMyFlag[2] - pdwFlag[2] > 32767) // { // // } // // //friends update // if(pdwFlag[3] > dwMyFlag[3] || dwMyFlag[3] - pdwFlag[3] > 32767) // { // // } // } void commandSettingInAction(DWORD dwCmd, DWORD dwOption , DWORD * pdwData, DWORD dwDataLen) { // if (dwCmd == USR_CMD_REMOTLY_DEFENCE_CTL) { // if (dwOption == USR_CMD_OPTION_WRITE_DEFENCE_STATUS) { // DLog(@"NSNotificationCenter post"); // // [P2PClient sendNotificationMessage:pdwData[0]]; // NSNumber *name = [NSNumber numberWithInt:USR_CMD_REMOTLY_DEFENCE_CTL]; // NSNumber *option = [NSNumber numberWithInt:USR_CMD_OPTION_WRITE_DEFENCE_STATUS]; // NSNumber *value = [NSNumber numberWithInt:pdwData[0]]; // // NSDictionary *parameter = @{@"name": name, // @"option": option, // @"object" : value}; // [[P2PClient sharedClient] receivePlayingCommand:parameter]; // // } // } NSMutableDictionary* mdicUserSDCard = [NSMutableDictionary dictionaryWithCapacity:0]; [mdicUserSDCard setObject:@"-255" forKey:@"WathNumber"]; [mdicUserSDCard setObject:@"-255" forKey:@"areRecordingVideo"]; [mdicUserSDCard setObject:@"-255" forKey:@"areHaveCard"]; [mdicUserSDCard setObject:@"-255" forKey:@"AlarmType"]; [mdicUserSDCard setObject:@"-255" forKey:@"areRecordVideoFalse"]; if (dwCmd == USR_CMD_AUDIO_ONLY) { // if (dwOption == 1) { // DLog(@"开启"); // }else{ // DLog(@"关闭"); // } //NSNumber *key = [NSNumber numberWithInt:RECEIVE_PLAYING_CMD_CHANGE_VIDEO_STATE]; //NSNumber *value = [NSNumber numberWithBool:dwOption]; // NSDictionary *parameter = @{@"key": key, // @"value" : value}; //[[P2PClient sharedClient] receivePlayingCommand:parameter]; NSNumber *mesgType = [NSNumber numberWithInt:RECEIVE_PLAYING_CMD_CHANGE_VIDEO_STATE]; NSNumber *option = [NSNumber numberWithBool:dwOption]; NSDictionary *parameter = @{@"mesgType": mesgType, @"option" : option}; [[P2PClient sharedClient] receivePlayingCommand:parameter]; } if (dwCmd == USR_CMD_CURRENT_USERS_NS) { NSLog(@"dwOption在线人数%i",dwOption); //NSNumber *value = [NSNumber numberWithInt:dwOption]; // [mdicUserSDCard setObject:[NSString stringWithFormat:@"%ld",(long)dwOption] forKey:@"WathNumber"]; //NSDictionary *parameter = @{@"value" : value}; // [[P2PClient sharedClient] receivePlayingCommand:mdicUserSDCard]; [mdicUserSDCard setObject:[NSString stringWithFormat:@"%ld",(long)dwOption] forKey:@"WatchNumber"]; [mdicUserSDCard setObject:[NSString stringWithFormat:@"%ld",(long)pdwData[0]] forKey:@"areRecordingVideo"]; [mdicUserSDCard setObject:[NSString stringWithFormat:@"%ld",(long)pdwData[1]] forKey:@"areHaveCard"]; [mdicUserSDCard setObject:[NSString stringWithFormat:@"%ld",(long)pdwData[2]] forKey:@"AlarmType"]; [mdicUserSDCard setObject:[NSString stringWithFormat:@"%ld",(long)pdwData[3]] forKey:@"areRecordVideoFalse"]; [[P2PClient sharedClient] receivePlayingCommand:mdicUserSDCard]; } if (dwCmd == RECEIVE_MONITOR_INFO_SDCARDINFO) { [mdicUserSDCard setObject:[NSString stringWithFormat:@"%ld",(long)pdwData[0]] forKey:@"areRecordingVideo"]; [mdicUserSDCard setObject:[NSString stringWithFormat:@"%ld",(long)pdwData[1]] forKey:@"areHaveCard"]; [mdicUserSDCard setObject:[NSString stringWithFormat:@"%ld",(long)pdwData[2]] forKey:@"AlarmType"]; [mdicUserSDCard setObject:[NSString stringWithFormat:@"%ld",(long)pdwData[3]] forKey:@"areRecordVideoFalse"]; [[P2PClient sharedClient] receivePlayingCommand:mdicUserSDCard]; } if (dwCmd == USR_CMD_PLAY_CTL) { DLog(@"%i",dwOption); switch (dwOption) { case USR_CMD_OPTION_FILE_INFO: { [[P2PClient sharedClient] setGwplaybackState:PLAYBACK_STATE_PLAYING]; vSetSupperDrop(FALSE); [[P2PClient sharedClient] setPlayback_startTime:(((uint64_t)pdwData[0]<<32)|pdwData[1])]; [[P2PClient sharedClient] setPlayback_endTime:(((uint64_t)pdwData[2]<<32)|pdwData[3])]; UINT64 totalTime = [[P2PClient sharedClient] playback_endTime] - [[P2PClient sharedClient] playback_startTime]; [[P2PClient sharedClient] setPlayback_totalTime:totalTime]; [[P2PClient sharedClient] setPlayback_u64TargetPTS:0]; //UINT64 hh = playback_totalTime/3600; //UINT64 mm = (playback_totalTime/60)%60; //UINT64 ss = playback_totalTime%60; //DLog(@"%llu %llu %llu",hh,mm,ss); } break; case USR_CMD_OPTION_FILE_END: { [[P2PClient sharedClient] setGwplaybackState:PLAYBACK_STATE_STOP]; NSNumber *key = [NSNumber numberWithInt:RECEIVE_PLAYING_CMD_PLAYBACK_STOP]; NSDictionary *parameter = @{@"key": key}; [[P2PClient sharedClient] receivePlayingCommand:parameter]; } break; case USR_CMD_OPTION_STOP_RET: { [[P2PClient sharedClient] setGwplaybackState:PLAYBACK_STATE_STOP]; NSNumber *key = [NSNumber numberWithInt:RECEIVE_PLAYING_CMD_PLAYBACK_STOP]; NSDictionary *parameter = @{@"key": key}; [[P2PClient sharedClient] receivePlayingCommand:parameter]; } break; case USR_CMD_OPTION_PLAY_RET: { vSetSupperDrop(FALSE); [[P2PClient sharedClient] setGwplaybackState:PLAYBACK_STATE_PLAYING]; NSNumber *key = [NSNumber numberWithInt:RECEIVE_PLAYING_CMD_PLAYBACK_START]; NSDictionary *parameter = @{@"key": key}; [[P2PClient sharedClient] receivePlayingCommand:parameter]; } break; case USR_CMD_OPTION_JUMP_RET:{ UInt64 u64TargetPTS = 0; memcpy( &u64TargetPTS, &(pdwData[1]), sizeof(UINT64) ); [[P2PClient sharedClient] setPlayback_u64TargetPTS:u64TargetPTS]; vSetSupperDrop(FALSE); [[P2PClient sharedClient] setGwplaybackState:PLAYBACK_STATE_PLAYING]; NSNumber *key = [NSNumber numberWithInt:RECEIVE_PLAYING_CMD_PLAYBACK_START]; NSDictionary *parameter = @{@"key": key}; [[P2PClient sharedClient] receivePlayingCommand:parameter]; break; } case USR_CMD_OPTION_NEXT_FILE_RET:{ [[P2PClient sharedClient] setGwplaybackState:PLAYBACK_STATE_PLAYING]; vSetSupperDrop(FALSE); NSNumber *key = [NSNumber numberWithInt:RECEIVE_PLAYING_CMD_PLAYBACK_START]; NSDictionary *parameter = @{@"key": key}; [[P2PClient sharedClient] receivePlayingCommand:parameter]; break; } case USR_CMD_OPTION_FAST_PLAY_RET:{ vSetSupperDrop(FALSE); [[P2PClient sharedClient]setGwplaybackState:PLAYBACK_STATE_PLAYING]; NSNumber *key = [NSNumber numberWithInt:RECEIVE_PLAYING_CMD_PLAY_FAST_START]; NSDictionary *parameter = @{@"key": key}; [[P2PClient sharedClient] receivePlayingCommand:parameter]; break; } case USR_CMD_OPTION_FAST_PLAY_CANCEL_RET:{ vSetSupperDrop(FALSE); [[P2PClient sharedClient] setGwplaybackState:PLAYBACK_STATE_PLAYING]; NSNumber *key = [NSNumber numberWithInt:RECEIVE_PLAYING_CMD_PLAY_FAST_STOP]; NSDictionary *parameter = @{@"key": key}; [[P2PClient sharedClient] receivePlayingCommand:parameter]; break; } default: break; } } return; } - (void)receivePlayingCommand:(NSDictionary *)dictionary { [[NSNotificationCenter defaultCenter] postNotificationName:RECEIVE_PLAYING_CMD object:self userInfo:dictionary]; } -(NSInteger)getPlaybackCurrentFileIndex{ return playbackCurrentFileIndex; } -(NSInteger)getPlaybackFilesLength{ return playbackFilesLength; } -(void)previous{ if(playbackCurrentFileIndex==0){ return; } [[P2PClient sharedClient] setGwplaybackState:PLAYBACK_STATE_STOP]; NSNumber *key = [NSNumber numberWithInt:RECEIVE_PLAYING_CMD_PLAYBACK_STOP]; NSDictionary *parameter = @{@"key": key}; [[P2PClient sharedClient] receivePlayingCommand:parameter]; BYTE prm[8]; playbackCurrentFileIndex -= 1; memcpy(prm, &(playbackFiles[playbackCurrentFileIndex]), sizeof(sRecFilenameType)); fgSendUserData(USR_CMD_PLAY_CTL, USR_CMD_OPTION_NEXT_FILE, prm, sizeof(sRecFilenameType)); } -(void)next{ if(playbackCurrentFileIndex>=(playbackFilesLength-1)){ return; } [[P2PClient sharedClient] setGwplaybackState:PLAYBACK_STATE_STOP]; NSNumber *key = [NSNumber numberWithInt:RECEIVE_PLAYING_CMD_PLAYBACK_STOP]; NSDictionary *parameter = @{@"key": key}; [[P2PClient sharedClient] receivePlayingCommand:parameter]; BYTE prm[8]; playbackCurrentFileIndex += 1; memcpy(prm, &(playbackFiles[playbackCurrentFileIndex]), sizeof(sRecFilenameType)); fgSendUserData(USR_CMD_PLAY_CTL, USR_CMD_OPTION_NEXT_FILE, prm, sizeof(sRecFilenameType)); vSetSupperDrop(TRUE); } -(void)jump:(UInt64)value{ UInt64 jumpValue = (self.playback_startTime+value*1000000); fgSendUserData(USR_CMD_PLAY_CTL, USR_CMD_OPTION_JUMP, (BYTE*)(&jumpValue), sizeof(UInt64)); vSetSupperDrop(TRUE); } /**开始快进*/ -(void)fastBegin:(UInt64)value{ UInt64 jumpValue = (self.playback_startTime+value*1000000); // UInt64 jumpValue =32; NSLog(@"fastBeginValue=%lld",(long long)jumpValue); fgSendUserData(USR_CMD_PLAY_CTL, USR_CMD_OPTION_FAST_PLAY, (BYTE*)(&jumpValue), sizeof(UInt64)); vSetSupperDrop(TRUE); } /**不要快进*/ -(void)fastEnd:(UInt64)value{ UInt64 jumpValue = (self.playback_startTime+value*1000000); // UInt64 jumpValue =32; NSLog(@"fastEndValue=%lld",(long long)jumpValue); fgSendUserData(USR_CMD_PLAY_CTL, USR_CMD_OPTION_FAST_PLAY_CANCEL, (BYTE*)(&jumpValue), sizeof(UInt64)); vSetSupperDrop(TRUE); } -(void)p2pDisconnect{ vP2PExit(); } #define FLAG_VIDEO_TRANS_QVGA (0) // #define FLAG_VIDEO_TRANS_HD (1) // #define FLAG_VIDEO_TRANS_VGA (2) // -(void)p2pCallWithId:(NSString *)contactId password:(NSString*)password callType:(P2PCallType)type{ self.p2pCallType = type; self.callId = contactId; if(!password){ password = @""; } if (contactId) { UINT64 iCallId = [contactId intValue]; if ([contactId hasPrefix:@"0"]){ iCallId |= 0x80000000; } // int iTargetID = GetIpBy3CID(contactId.intValue); // if (iTargetID != contactId.intValue) { // iCallId = iTargetID; // } NSString *callMsg = @"test callMsg"; DWORD dwCallPrm[4]; switch (type) { case P2PCALL_TYPE_MONITOR:{ dwCallPrm[0] = CONN_TYPE_MONITOR; dwCallPrm[1] = LOCAL_VIDEO_ABILITY ; dwCallPrm[2] = FLAG_VIDEO_TRANS_VGA ; dwCallPrm[3] = 0 ; if(fgP2PCall(iCallId, 1, [password intValue], dwCallPrm, (char *)[callMsg UTF8String])){ DLog(@"call success."); }else{ DLog(@"call failure."); } break; } case P2PCALL_TYPE_VIDEO:{ dwCallPrm[0] = CONN_TYPE_VIDEO_CALL; dwCallPrm[1] = LOCAL_VIDEO_ABILITY ; dwCallPrm[2] = 0 ; dwCallPrm[3] = 0 ; fgP2PCall(iCallId, 0, 0, dwCallPrm, (char *)[callMsg UTF8String]); break; } default: break; } } } -(void)p2pPlaybackCallWithId:(NSString *)contactId password:(NSString *)password index:(NSInteger)index{ if(index>=playbackFilesLength){ [[NSNotificationCenter defaultCenter] postNotificationName:@"read_play_false" object:nil userInfo:nil]; return; } playbackCurrentFileIndex = (int)index; self.p2pCallType = P2PCALL_TYPE_PLAYBACK; self.callId = contactId; if(!password){ password = @""; } if (contactId) { UINT64 iCallId = [contactId intValue]; if ([contactId hasPrefix:@"0"]){ iCallId |= 0x80000000; } int iTargetID = GetIpBy3CID(contactId.intValue); if (iTargetID != contactId.intValue) { iCallId = iTargetID; } NSString *callMsg = @""; DWORD dwCallPrm[4]; dwCallPrm[0] = CONN_TYPE_FILE_TRANS; dwCallPrm[1] = LOCAL_VIDEO_ABILITY ; dwCallPrm[2] = ((DWORD*)(&playbackFiles[index]))[0]; dwCallPrm[3] = ((DWORD*)(&playbackFiles[index]))[1]; //fgP2PCall(iCallId, 1, [password intValue], dwCallPrm, (char *)[callMsg UTF8String]); fgP2PCall(iCallId, 1, [Utils getPsword:password], dwCallPrm, (char *)[callMsg UTF8String]); } } - (void)p2pAccept { DWORD dwCallPrm[4]; dwCallPrm[0] = CONN_TYPE_VIDEO_CALL; dwCallPrm[1] = LOCAL_VIDEO_ABILITY ; dwCallPrm[2] = 0 ; dwCallPrm[3] = 0 ; vP2PAccept(dwCallPrm); } - (void)p2pHungUp { vStopRecvAndDec();//停止接收并且解码 vStopAVEncAndSend();//停止编码且发送 vP2PHungup(FALSE);//挂断视频通话或者监控... } -(void)playbackp2pHungUp { vStopRecvAndDec();//停止接收并且解码 vStopAVEncAndSend();//停止编码且发送 } - (void)sendCommandType:(int)type andOption:(int)option { fgSendUserData(type, option, NULL, 0); } - (void)startCall { DLog(@"startCall."); [UIView animateWithDuration:0.1 animations:^{ } completion:^(BOOL finished) { //srecAndDecPrm.dwConnectType = self.chattingCallType; // srecAndDecPrm.dwConnectType = 1; _srecAndDecPrm.dwConnectType = self.p2pCallType; _srecAndDecPrm.vRecvAVData = NULL; _srecAndDecPrm.vRecvAVHeader = NULL; _srecAndDecPrm.vRecvUserDataCallBack = commandSettingInAction; if(fgStartRecvAndDec(&(_srecAndDecPrm))){//接收并解码 DLog(@"fgStartRecvAndDec success."); } if (self.p2pCallType == P2PCALL_TYPE_VIDEO || self.p2pCallType == P2PCALL_TYPE_MONITOR) { fgStartAVEncAndSend(VIDEO_FRAME_RATE);//编码并发送 } }]; } #pragma mark #pragma mark - p2p call back void vCallingSignal(sCallingPrmType *sCallPrm) { unsigned int fgBCalled; unsigned int dwHisID; unsigned int dwDevType; unsigned int fgInSameDomain; unsigned int fgMonitorOnly; unsigned int dwRemoteChNs; fgBCalled = sCallPrm->fgBCalled; dwHisID = sCallPrm->dwHisID; dwDevType = sCallPrm->dwHisDevType; fgInSameDomain = sCallPrm->fgInSameDomain; fgMonitorOnly = sCallPrm->fgSuperCall; dwRemoteChNs = sCallPrm->dwRemoteChNs; NSMutableDictionary * info = [NSMutableDictionary dictionary]; if(fgBCalled==1){ [info setObject:[NSString stringWithFormat:@"%i",dwHisID&0x7fffffff] forKey:@"callId"]; [info setObject:@"YES" forKey:@"isBCalled"]; }else{ //[info setObject:@"0" forKey:@"callId"]; [info setObject:@"NO" forKey:@"isBCalled"]; } [[P2PClient sharedClient] performSelectorOnMainThread:@selector(delegateCalling:) withObject:info waitUntilDone:YES]; } void vRejectSignal(unsigned int fgBCalled, unsigned int dwErrorOption) { NSString *rejectMsg = nil; switch((int)dwErrorOption) { case CALL_ERROR_NONE: { rejectMsg = @"none"; break; } case CALL_ERROR_DESID_NOT_ENABLE: { rejectMsg = @"id_disabled"; break; } case CALL_ERROR_DESID_OVERDATE: { rejectMsg = @"id_overdate"; break; } case CALL_ERROR_DESID_NOT_ACTIVE: { rejectMsg = @"id_inactived"; break; } case CALL_ERROR_DESID_OFFLINE: { rejectMsg = @"offline"; break; } case CALL_ERROR_DESID_BUSY: { rejectMsg = @"busy"; break; } case CALL_ERROR_DESID_POWERDOWN: { rejectMsg = @"powerdown"; break; } case CALL_ERROR_NO_HELPER: { rejectMsg = @"nohelper"; break; } case CALL_ERROR_HANGUP: { rejectMsg = @"hungup"; break; } case CALL_ERROR_TIMEOUT: { rejectMsg = @"timeout"; break; } case CALL_ERROR_INTER_ERROR: { rejectMsg = @"internal_error"; break; } case CALL_ERROR_RING_TIMEOUT: { rejectMsg = @"no_body"; break; } case CALL_ERROR_PW_WRONG: { rejectMsg = @"pw_incrrect"; break; } case CALL_ERROR_NOT_SUPPORT: { rejectMsg = @"not_support"; } default: rejectMsg = @"none"; break; } NSMutableDictionary * info = [NSMutableDictionary dictionary]; NSNumber *errorFlag = [NSNumber numberWithInt:dwErrorOption]; [info setObject:errorFlag forKey:@"errorFlag"]; [[P2PClient sharedClient] performSelectorOnMainThread:@selector(delegateReject:) withObject:info waitUntilDone:YES]; } #define VIDEO_ABILITY_16_9 (1<<7) void vAcceptSignal(unsigned int fgBCalled, unsigned int *pdwPrm) { if (pdwPrm[1]==0) { [[P2PClient sharedClient] setIs960P:YES]; }else{ [[P2PClient sharedClient] setIs960P:NO]; } BOOL is16b9 = NO; if(pdwPrm[0]==CONN_TYPE_MONITOR||pdwPrm[0]==CONN_TYPE_FILE_TRANS||pdwPrm[0]==CONN_TYPE_VIDEO_CALL){ if(((pdwPrm[1] >> 24)& VIDEO_ABILITY_16_9 )||((pdwPrm[1] >> 16)& VIDEO_ABILITY_16_9 )) { is16b9 = YES; } } NSMutableDictionary * info = [NSMutableDictionary dictionary]; [info setObject:[NSNumber numberWithBool:is16b9] forKey:@"is16b9"]; [[P2PClient sharedClient] performSelectorOnMainThread:@selector(delegateAccept:) withObject:info waitUntilDone:YES]; } void vP2PConnReady(void) { [[P2PClient sharedClient] performSelectorOnMainThread:@selector(delegateReady:) withObject:nil waitUntilDone:YES]; } //设备在线状态获取 -(void)getContactsStates:(NSArray *)contacts{ if(!contacts||[contacts count]==0){ [[NSNotificationCenter defaultCenter] postNotificationName:@"updateContactState" object:nil]; } unsigned int tables[[contacts count]]; for(int i=0;i<[contacts count];i++){ NSString *contactId = [contacts objectAtIndex:i]; if([contactId characterAtIndex:0]=='0'){ tables[i] = contactId.intValue|0x80000000; }else{ tables[i] = contactId.intValue; } } fgP2PGetFriendsStatus(tables, [contacts count]); } //设备在线状态更新 void vFriendsStatusUpdate(sFriendsType * pFriends ) { int count = pFriends->dwFriendsCount; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; for(int i=0;ibStatus[i]&0xf; unsigned int type = (unsigned int)pFriends->bType[i]&0xf; unsigned int iContactId = (unsigned int)pFriends->dwFriends[i]&0x7fffffff; NSString *contactId = nil; if(((unsigned int)pFriends->dwFriends[i]&0x80000000)!=0){ contactId = [NSString stringWithFormat:@"0%d",iContactId]; }else{ contactId = [NSString stringWithFormat:@"%d",iContactId]; } DLog("contactId:%@ onlineState:%i",contactId,state); FListManager *manager = [FListManager sharedFList]; [manager setStateWithId:contactId state:state];//设备在线状态更新 if(state==1){//离线的设备返回的type都是2(CONTACT_TYPE_NPC)//IP添加设备 [manager setTypeWithId:contactId type:type]; } NSNumber *key = [NSNumber numberWithInt:RET_CONTACT_STATE_INFO]; [parameter setValue:key forKey:@"key"]; NSNumber * onLineState = [NSNumber numberWithInt:state]; [parameter setValue:onLineState forKey:@"onLineState"]; NSNumber * deviceType = [NSNumber numberWithInt:type]; [parameter setValue:deviceType forKey:@"deviceType"]; NSNumber * contactID = [NSNumber numberWithInt:iContactId]; [parameter setValue:contactID forKey:@"iContactId"]; } [[NSNotificationCenter defaultCenter] postNotificationName:@"updateContactState" object:nil]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; DLog(@"vFriendsStatusUpdate"); } - (void)setDelegate:(id)delegate { _delegate = delegate; } - (void)setPlaybackDelegate:(id)delegate{ _playbackDelegate = delegate; } #pragma mark delegate method //The selectors performed on main thread for delegate - (void)delegateCalling:(NSDictionary*)info { NSString *isBCalled = [info objectForKey:@"isBCalled"]; if([isBCalled isEqualToString:@"YES"]){ NSString *callId = [info objectForKey:@"callId"]; self.callId = callId; self.isBCalled = YES; }else{ self.isBCalled = NO; } self.p2pCallState = P2PCALL_STATUS_CALLING; if(self.isBCalled){ self.p2pCallType = P2PCALL_TYPE_VIDEO; } if(self.p2pCallType!=P2PCALL_TYPE_PLAYBACK){ if (!self.delegate) { return; } if (self.delegate && [self.delegate respondsToSelector:@selector(P2PClientCalling:)]) { [self.delegate P2PClientCalling:info]; } }else{ if (self.playbackDelegate && [self.playbackDelegate respondsToSelector:@selector(P2PPlaybackCalling:)]) { [self.playbackDelegate P2PPlaybackCalling:info]; } } } - (void)delegateReject:(NSDictionary*)info { /* * isRun = NO表示停止处理摄像输出数据(captureOutput) * isFinishCaptureOutput = NO表示停留,不往下执行,是给时间captureOutput回调做最后1次处理摄像输出数据 * 若不停留,captureOutput回调处理摄像输出数据,可能被释放了 */ if(self.p2pCallType==P2PCALL_TYPE_VIDEO){ [[CameraManager sharedManager] setIsRun:NO]; while (![[CameraManager sharedManager] isFinishCaptureOutput]) { usleep(100000); NSLog(@"=======*while**while**while*======="); } } if (self.p2pCallState == P2PCALL_STATUS_READY_P2P) { //[[PAIOUnit sharedUnit] stopAudio]; [self p2pHungUp]; } self.p2pCallState = P2PCALL_STATUS_NONE; if(self.p2pCallType!=P2PCALL_TYPE_PLAYBACK){ if (!self.delegate) { return; } if (self.delegate && [self.delegate respondsToSelector:@selector(P2PClientReject:)]) { [self.delegate P2PClientReject:info]; } }else{ if (self.playbackDelegate && [self.playbackDelegate respondsToSelector:@selector(P2PPlaybackReject:)]) { [self.playbackDelegate P2PPlaybackReject:info]; } } } - (void)delegateAccept:(NSDictionary*)info { self.is16B9 = [[info valueForKey:@"is16b9"] intValue]; if(self.p2pCallType!=P2PCALL_TYPE_PLAYBACK){ if (!self.delegate) { return; } if (self.delegate && [self.delegate respondsToSelector:@selector(P2PClientAccept:)]) { [self.delegate P2PClientAccept:info]; } }else{ if (self.playbackDelegate && [self.playbackDelegate respondsToSelector:@selector(P2PPlaybackAccept:)]) { [self.playbackDelegate P2PPlaybackAccept:info]; } } } - (void)delegateReady:(NSDictionary*)info { self.p2pCallState = P2PCALL_STATUS_READY_P2P; // [[PAIOUnit sharedUnit] startAudioWithCallType:self.p2pCallType]; [self performSelectorOnMainThread:@selector(startCall) withObject:nil waitUntilDone:YES]; if(self.p2pCallType!=P2PCALL_TYPE_PLAYBACK){ if (!self.delegate) { return; } if (self.delegate && [self.delegate respondsToSelector:@selector(P2PClientReady:)]) { [self.delegate P2PClientReady:info]; } }else{ if (self.playbackDelegate && [self.playbackDelegate respondsToSelector:@selector(P2PPlaybackReady:)]) { [self.playbackDelegate P2PPlaybackReady:info]; } } } /*********************************************************/ #define MESG_ID_GET_PLAYBACK_FILES 2000 #define MESG_ID_GET_PLAYBACK_FILES_BY_DATE 3000 #define MESG_ID_GET_DEVICE_TIME 4000 #define MESG_ID_SET_DEVICE_TIME 5000 #define MESG_ID_GET_NPC_SETTINGS 6000 #define MESG_ID_SET_VIDEO_FORMAT 7000 #define MESG_ID_SET_VIDEO_VOLUME 8000 #define MESG_ID_SET_DEVICE_PASSWORD 9000 #define MESG_ID_SET_BUZZER 10000 #define MESG_ID_SET_MOTION 11000 #define MESG_ID_GET_ALARM_EMAIL 12000 #define MESG_ID_SET_ALARM_EMAIL 13000 #define MESG_ID_GET_BIND_ACCOUNT 14000 #define MESG_ID_SET_BIND_ACCOUNT 15000 #define MESG_ID_SET_REMOTE_DEFENCE 16000 #define MESG_ID_SET_REMOTE_RECORD 17000 #define MESG_ID_SET_RECORD_TYPE 18000 #define MESG_ID_SET_RECORD_TIME 19000 #define MESG_ID_SET_RECORD_PLAN_TIME 20000 #define MESG_ID_SET_NET_TYPE 21000 #define MESG_ID_GET_WIFI_LIST 22000 #define MESG_ID_SET_WIFI 23000 #define MESG_ID_GET_DEFENCE_AREA_STATE 24000 #define MESG_ID_SET_DEFENCE_AREA_STATE 25000 #define MESG_ID_SET_INIT_PASSWORD 26000 #define MESG_ID_CHECK_DEVICE_UPDATE 27000 #define MESG_ID_SEND_MESSAGE 28000 #define MESG_ID_GET_DEFENCE_STATE 29000 #define MESG_ID_CANCEL_DEVICE_UPDATE 30000 #define MESG_ID_DO_DEVICE_UPDATE 31000 #define MESG_ID_GET_DEVICE_INFO 32000 #define MESG_ID_SEND_CUSTOM_CMD 33000 #define MESG_ID_SET_IMAGE_INVERSION 34000 #define MESG_ID_SET_AUTO_UPDATE 35000 #define MESG_ID_SET_HUMAN_INFRARED 36000 #define MESG_ID_SET_WIRED_ALARM_INPUT 37000 #define MESG_ID_SET_WIRED_ALARM_OUTPUT 38000 #define MESG_ID_SET_VISITOR_PASSWORD 39000 #define MESG_ID_SET_DEVICE_TIME_ZONE 40000 #define MESG_ID_GET_SDCARD_INFO 41000 #define MESG_ID_SET_SDCARD_INFO 42000 #define MESG_ID_GET_DEFENCE_SWITCH_STATE 43000 #define MESG_ID_SET_DEFENCE_SWITCH_STATE 44000 #define MESG_ID_SET_GPIO_CTL 48000 #define MESG_ID_GET_LIGHT_STATE 49000 #define MESG_ID_SET_LIGHT_STATE 50000 #define MESG_ID_SET_RECORD_PRE 51000 #define MESG_ID_SET_DELETE_ALARM_PUSHID 52000 #define MESG_ID_SET_STOP_DOORBELL_PUSH 53000 #define MESG_ID_GET_DEVICE_LANGUAGE 54000 #define MESG_ID_SET_DEVICE_LANGUAGE 55000 #define MESG_ID_SWITCH_APSTA_MODE 56000 void vGetFileCmdACK(DWORD dwDesID, char *pFilename, DWORD dwErrorCode) { NSNumber *result = [NSNumber numberWithInt:dwErrorCode]; NSNumber *key = [NSNumber numberWithInt:ACK_RET_GET_ALARM_PUSH_PIC]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; } void vSendMessageAck(DWORD dwDesID,DWORD dwMesgID, DWORD dwError) { NSLog(@"vSendMessageAck"); if (dwDesID<256) { dwDesID = Get3cidByIp(dwDesID); } NSNumber *result = [NSNumber numberWithInt:dwError]; NSNumber *mesgId = [NSNumber numberWithInt:dwMesgID]; if(dwMesgID=(MESG_ID_GET_PLAYBACK_FILES-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_GET_PLAYBACK_FILES]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_GET_PLAYBACK_FILES_BY_DATE-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_GET_PLAYBACK_FILES]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_GET_DEVICE_TIME-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_GET_DEVICE_TIME]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_DEVICE_TIME-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_DEVICE_TIME]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_GET_NPC_SETTINGS-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_GET_NPC_SETTINGS]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_VIDEO_FORMAT-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_NPCSETTINGS_VIDEO_FORMAT]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_VIDEO_VOLUME-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_NPCSETTINGS_VIDEO_VOLUME]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_DEVICE_PASSWORD-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_DEVICE_PASSWORD]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_BUZZER-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_NPCSETTINGS_BUZZER]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_MOTION-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_NPCSETTINGS_MOTION]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_GET_ALARM_EMAIL-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_GET_ALARM_EMAIL]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_ALARM_EMAIL-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_ALARM_EMAIL]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_GET_BIND_ACCOUNT-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_GET_BIND_ACCOUNT]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_BIND_ACCOUNT-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_BIND_ACCOUNT]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_REMOTE_DEFENCE-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_NPCSETTINGS_REMOTE_DEFENCE]; NSString *contactId = [NSString stringWithFormat:@"%i",dwDesID]; NSDictionary *parameter = @{@"key":key, @"result":result,@"contactId":contactId}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_REMOTE_RECORD-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_NPCSETTINGS_REMOTE_RECORD]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_RECORD_TYPE-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_NPCSETTINGS_RECORD_TYPE]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_RECORD_TIME-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_NPCSETTINGS_RECORD_TIME]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_RECORD_PLAN_TIME-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_NPCSETTINGS_RECORD_PLAN_TIME]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_NET_TYPE-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_NPCSETTINGS_NET_TYPE]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_GET_WIFI_LIST-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_GET_WIFI_LIST]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_WIFI-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_WIFI]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_GET_DEFENCE_AREA_STATE-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_GET_DEFENCE_AREA_STATE]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_DEFENCE_AREA_STATE-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_DEFENCE_AREA_STATE]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_DEFENCE_AREA_STATE-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_INIT_PASSWORD]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_CHECK_DEVICE_UPDATE-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_CHECK_DEVICE_UPDATE]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SEND_MESSAGE-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SEND_MESSAGE]; NSDictionary *parameter = @{@"key":key, @"result":result,@"flag":mesgId}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_GET_DEFENCE_STATE-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_GET_DEFENCE_STATE]; NSString *contactId = [NSString stringWithFormat:@"%i",dwDesID]; NSDictionary *parameter = @{@"key":key, @"result":result,@"contactId":contactId}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_DO_DEVICE_UPDATE-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_DO_DEVICE_UPDATE]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_GET_DEVICE_INFO-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_GET_DEVICE_INFO]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SEND_CUSTOM_CMD-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_CUSTOM_CMD]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_IMAGE_INVERSION-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_NPCSETTINGS_IMAGE_INVERSION]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_AUTO_UPDATE-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_NPCSETTINGS_AUTO_UPDATE]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_HUMAN_INFRARED-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_NPCSETTINGS_HUMAN_INFRARED]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_WIRED_ALARM_INPUT-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_NPCSETTINGS_WIRED_ALARM_INPUT]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_WIRED_ALARM_OUTPUT-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_NPCSETTINGS_WIRED_ALARM_OUTPUT]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_VISITOR_PASSWORD-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_VISITOR_PASSWORD]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_DEVICE_TIME_ZONE-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_TIME_ZONE]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_GET_SDCARD_INFO-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_GET_SDCARD_INFO]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_SDCARD_INFO-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_SDCARD_INFO]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_GET_DEFENCE_SWITCH_STATE-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_GET_DEFENCE_SWITCH_STATE]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_DEFENCE_SWITCH_STATE-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_DEFENCE_SWITCH_STATE]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_GPIO_CTL-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_GPIO_CTL]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_GET_LIGHT_STATE-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_GET_LIGHT_STATE]; NSString *contactId = [NSString stringWithFormat:@"%i",dwDesID]; NSDictionary *parameter = @{@"key":key, @"result":result,@"contactId":contactId}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SET_LIGHT_STATE-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_LIGHT_STATE]; NSString *contactId = [NSString stringWithFormat:@"%i",dwDesID]; NSDictionary *parameter = @{@"key":key, @"result":result,@"contactId":contactId}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if (dwMesgID=MESG_ID_SET_RECORD_PRE-1000){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_NPCSETTINGS_RECORD_PRE]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if (dwMesgID=MESG_ID_SET_DELETE_ALARM_PUSHID-1000){//删除绑定的报警推送ID NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_DELETE_ALARM_PUSHID]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if (dwMesgID=MESG_ID_SET_STOP_DOORBELL_PUSH-1000){//告诉设备端不要再推送门铃 NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_STOP_DOORBELL_PUSH]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if (dwMesgID=MESG_ID_GET_DEVICE_LANGUAGE-1000){//获取设备支持的语言,以及当前显示的语言 NSNumber *key = [NSNumber numberWithInt:ACK_RET_GET_DEVICE_LANGUAGE]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if (dwMesgID=MESG_ID_SET_DEVICE_LANGUAGE-1000){//设置设备支持的语言 NSNumber *key = [NSNumber numberWithInt:ACK_RET_SET_DEVICE_LANGUAGE]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; }else if(dwMesgID=(MESG_ID_SWITCH_APSTA_MODE-1000)){ NSNumber *key = [NSNumber numberWithInt:ACK_RET_SWITCH_APSTA_MODE]; NSDictionary *parameter = @{@"key":key, @"result":result}; [[P2PClient sharedClient] ack_receiveReceiveRemoteMessage:parameter]; } } #pragma mark 接收消息 void vRecvRemoteMessage(DWORD dwSrcID, unsigned int fgHasCheckdPassword, void *pMesg, DWORD dwMesgSize) { NSLog(@"vRecvRemoteMessage"); if (dwSrcID<256) { dwSrcID = Get3cidByIp(dwSrcID); } BYTE *pMesgBuffer = (BYTE *)pMesg; if(pMesgBuffer[0]==MESG_TYPE_RET_REC_LIST){ sMesgRetRecListType *sRetRec = (sMesgRetRecListType*)pMesg; if(sRetRec->bFileNs>128){ return; } //防止此类问题的出现:最近1个月界面,上拉加载更多,但是未得到及时的数据返回 //同时,点击最近3天,获取最近3天的数据;此时,设备端返回了1个月上拉加载的数据和最近3天的数据 //此现象是不正常,所以书写以下代码避免 if ([[P2PClient sharedClient] currentLabel] == 1) { if ([[P2PClient sharedClient] isLoadMorePlaybackFilesForThreeDay]) { [[P2PClient sharedClient] setIsLoadMorePlaybackFilesForThreeDay:NO]; return; } if ([[P2PClient sharedClient] isLoadMorePlaybackFilesForOneMon]) { [[P2PClient sharedClient] setIsLoadMorePlaybackFilesForOneMon:NO]; return; } if ([[P2PClient sharedClient] isLoadMorePlaybackFilesForCustom]) { [[P2PClient sharedClient] setIsLoadMorePlaybackFilesForCustom:NO]; return; } [[P2PClient sharedClient] setIsLoadMorePlaybackFilesForOneDay:NO]; }else if ([[P2PClient sharedClient] currentLabel] == 2){ if ([[P2PClient sharedClient] isLoadMorePlaybackFilesForOneDay]) { [[P2PClient sharedClient] setIsLoadMorePlaybackFilesForOneDay:NO]; return; } if ([[P2PClient sharedClient] isLoadMorePlaybackFilesForOneMon]) { [[P2PClient sharedClient] setIsLoadMorePlaybackFilesForOneMon:NO]; return; } if ([[P2PClient sharedClient] isLoadMorePlaybackFilesForCustom]) { [[P2PClient sharedClient] setIsLoadMorePlaybackFilesForCustom:NO]; return; } [[P2PClient sharedClient] setIsLoadMorePlaybackFilesForThreeDay:NO]; }else if ([[P2PClient sharedClient] currentLabel] == 3){ if ([[P2PClient sharedClient] isLoadMorePlaybackFilesForOneDay]) { [[P2PClient sharedClient] setIsLoadMorePlaybackFilesForOneDay:NO]; return; } if ([[P2PClient sharedClient] isLoadMorePlaybackFilesForThreeDay]) { [[P2PClient sharedClient] setIsLoadMorePlaybackFilesForThreeDay:NO]; return; } if ([[P2PClient sharedClient] isLoadMorePlaybackFilesForCustom]) { [[P2PClient sharedClient] setIsLoadMorePlaybackFilesForCustom:NO]; return; } [[P2PClient sharedClient] setIsLoadMorePlaybackFilesForOneMon:NO]; }else if ([[P2PClient sharedClient] currentLabel] == 4){ if ([[P2PClient sharedClient] isLoadMorePlaybackFilesForOneDay]) { [[P2PClient sharedClient] setIsLoadMorePlaybackFilesForOneDay:NO]; return; } if ([[P2PClient sharedClient] isLoadMorePlaybackFilesForThreeDay]) { [[P2PClient sharedClient] setIsLoadMorePlaybackFilesForThreeDay:NO]; return; } if ([[P2PClient sharedClient] isLoadMorePlaybackFilesForOneMon]) { [[P2PClient sharedClient] setIsLoadMorePlaybackFilesForOneMon:NO]; return; } [[P2PClient sharedClient] setIsLoadMorePlaybackFilesForCustom:NO]; } if(sRetRec->bFileNs==0){ NSNumber *key = [NSNumber numberWithInt:RET_GET_PLAYBACK_FILES]; NSArray *files = [NSArray arrayWithObjects:nil]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:files forKey:@"files"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; }else{ NSMutableArray *files = [NSMutableArray arrayWithCapacity:0]; NSMutableArray *times = [NSMutableArray arrayWithCapacity:0]; NSMutableArray *sizes = [NSMutableArray arrayWithCapacity:0]; //每次在最近一天、最近三天...之间切换时,记录文件数量的变量清0,保存已获取回放文件的数组清空 if ([[P2PClient sharedClient] isClearPlaybackFilesLength]) { playbackFilesLength = 0; [[P2PClient sharedClient] setIsClearPlaybackFilesLength:NO]; [[[P2PClient sharedClient] loadedplaybackFiles] removeAllObjects]; } //sRetRec->bFileNs录像文件的个数,最大值为64 for(int i=0;ibFileNs;i++){ char buffer[64]; memset(buffer, 0, 64); sprintf(buffer, "disc%d/%04d-%02d-%02d_%02d:%02d:%02d_%c.av", sRetRec->sFileName[i].bMon>>4, sRetRec->sFileName[i].wYear, sRetRec->sFileName[i].bMon&0xf, sRetRec->sFileName[i].bDay, sRetRec->sFileName[i].bHour, sRetRec->sFileName[i].bMin, sRetRec->sFileName[i].bSec, sRetRec->sFileName[i].cType); NSString *file = [NSString stringWithUTF8String:buffer]; BOOL isNewPlaybackFile = NO; int loadedFileCount = [[[P2PClient sharedClient] loadedplaybackFiles] count];//已经加载的回放文件个数 NSArray *loadedplaybackFiles = [[P2PClient sharedClient] loadedplaybackFiles];//已经加载的回放文件 //判断file是否已经加载过 if (loadedFileCount > 0) { for (NSString *loadedFile in loadedplaybackFiles) { if ([file isEqualToString:loadedFile]) { isNewPlaybackFile = NO; break; } isNewPlaybackFile = YES; } }else{ isNewPlaybackFile = YES; } //保存未加载过的file if (isNewPlaybackFile) { //回放文件的名称,用于界面显示 [files addObject:file]; //回放文件的播放时长 if ((sRetRec->bOption0 & 0x01) != 0) {//支持返回播放时长 WORD* pSize = (WORD*)&(sRetRec->sFileName[sRetRec->bFileNs]); NSNumber* number = [NSNumber numberWithInt:pSize[i]]; [sizes addObject:number]; } //playbackFiles用于点击播放(要注意的是,与files保持一一对应) memcpy(playbackFiles+loadedFileCount, sRetRec->sFileName+i, sizeof(sRecFilenameType)*(sRetRec->bFileNs-i)); //回放文件的名称,用于记录用户已加载的回放文件和文件的数量 [[[P2PClient sharedClient] loadedplaybackFiles] addObject:file]; } } //已经加载的回放文件个数 playbackFilesLength = [[[P2PClient sharedClient] loadedplaybackFiles] count]; for(int i=0;ibFileNs;i++){ char buffer[64]; memset(buffer, 0, 64); sprintf(buffer, "%04d-%02d-%02d %02d:%02d", sRetRec->sFileName[i].wYear, sRetRec->sFileName[i].bMon&0xf, sRetRec->sFileName[i].bDay, sRetRec->sFileName[i].bHour, sRetRec->sFileName[i].bMin); NSString *time = [NSString stringWithUTF8String:buffer]; [times addObject:time];//重复添加 } NSNumber *key = [NSNumber numberWithInt:RET_GET_PLAYBACK_FILES]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:files forKey:@"files"]; [parameter setValue:times forKey:@"times"]; [parameter setValue:sizes forKey:@"sizes"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } }else if(pMesgBuffer[0]==MESG_TYPE_RET_DATETIME){ sMesgDateTimeType *pDate = (sMesgDateTimeType*)pMesg; if(pDate->bOption==1){ NSNumber *key = [NSNumber numberWithInt:RET_GET_DEVICE_TIME]; NSString *time = [Utils getDeviceTimeByIntValue:pDate->sMesgSysTime.wYear month:pDate->sMesgSysTime.bMon day:pDate->sMesgSysTime.bDay hour:pDate->sMesgSysTime.bHour minute:pDate->sMesgSysTime.bMin]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; //DLog(@"%@",time); [parameter setValue:key forKey:@"key"]; [parameter setValue:time forKey:@"time"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; }else{ NSNumber *key = [NSNumber numberWithInt:RET_SET_DEVICE_TIME]; NSNumber *result = [NSNumber numberWithInt:pDate->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } }else if(pMesgBuffer[0]==MESG_TYPE_RET_SETTING){ sMessageSettingsType *pSetting = (sMessageSettingsType*)pMesg; pSetting->wSettingCount &= 0xff; if(pSetting->wSettingCount<=0){ return; } for(int i=0;iwSettingCount;i++){ if((pSetting->bOption&0xff)==1){//GET RET if(pSetting->sSettings[i].dwSettingID==0){ } switch(pSetting->sSettings[i].dwSettingID){ case 0: { NSNumber *key = [NSNumber numberWithInt:RET_GET_NPCSETTINGS_REMOTE_DEFENCE]; NSNumber *state = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; NSString *contactId = [NSString stringWithFormat:@"%i",dwSrcID]; [parameter setValue:key forKey:@"key"]; [parameter setValue:state forKey:@"state"]; [parameter setValue:contactId forKey:@"contactId"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 1: { NSNumber *key = [NSNumber numberWithInt:RET_GET_NPCSETTINGS_BUZZER]; NSNumber *state = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:state forKey:@"state"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 2: { NSNumber *key = [NSNumber numberWithInt:RET_GET_NPCSETTINGS_MOTION]; NSNumber *state = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:state forKey:@"state"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 3: { NSNumber *key = [NSNumber numberWithInt:RET_GET_NPCSETTINGS_RECORD_TYPE]; NSNumber *type = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:type forKey:@"type"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 4: { NSNumber *key = [NSNumber numberWithInt:RET_GET_NPCSETTINGS_REMOTE_RECORD]; NSNumber *state = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:state forKey:@"state"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 5: { NSNumber *key = [NSNumber numberWithInt:RET_GET_NPCSETTINGS_RECORD_PLAN_TIME]; NSNumber *time = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:time forKey:@"time"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 8: { NSNumber *key = [NSNumber numberWithInt:RET_GET_NPCSETTINGS_VIDEO_FORMAT]; NSNumber *type = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:type forKey:@"type"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 11: { NSNumber *key = [NSNumber numberWithInt:RET_GET_NPCSETTINGS_RECORD_TIME]; NSNumber *time = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:time forKey:@"time"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 13: { NSNumber *key = [NSNumber numberWithInt:RET_GET_NPCSETTINGS_NET_TYPE]; NSNumber *type = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue&0xffff]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:type forKey:@"type"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 14: { NSNumber *key = [NSNumber numberWithInt:RET_GET_NPCSETTINGS_VIDEO_VOLUME]; NSNumber *value = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:value forKey:@"value"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 16: { NSNumber *key = [NSNumber numberWithInt:RET_GET_NPCSETTINGS_AUTO_UPDATE]; NSNumber *state = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:state forKey:@"state"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 17: { NSNumber *key = [NSNumber numberWithInt:RET_GET_NPCSETTINGS_HUMAN_INFRARED]; NSNumber *state = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:state forKey:@"state"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 18: { NSNumber *key = [NSNumber numberWithInt:RET_GET_NPCSETTINGS_WIRED_ALARM_INPUT]; NSNumber *state = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:state forKey:@"state"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 19: { NSNumber *key = [NSNumber numberWithInt:RET_GET_NPCSETTINGS_WIRED_ALARM_OUTPUT]; NSNumber *state = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:state forKey:@"state"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 20: { NSNumber *key = [NSNumber numberWithInt:RET_GET_NPCSETTINGS_TIME_ZONE]; NSNumber *value = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:value forKey:@"value"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 21: { NSNumber *key = [NSNumber numberWithInt:RET_GET_VISITOR_PASSWORD_OLD]; NSNumber *value = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:value forKey:@"value"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 24: { NSNumber *key = [NSNumber numberWithInt:RET_GET_NPCSETTINGS_IMAGE_INVERSION]; NSNumber *state = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:state forKey:@"state"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 25: { NSNumber *key = [NSNumber numberWithInt:RET_GET_NPCSETTINGS_PRERECORD]; NSNumber *state = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:state forKey:@"state"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 34: { NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; NSNumber *key = [NSNumber numberWithInt:RET_GET_LIGHT_SWITCH_STATE]; NSNumber *state = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSString *contactId = [NSString stringWithFormat:@"%i",dwSrcID]; [parameter setValue:key forKey:@"key"]; [parameter setValue:state forKey:@"state"]; [parameter setValue:contactId forKey:@"contactId"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 37: { NSNumber *key = [NSNumber numberWithInt:RET_GET_VISITOR_PASSWORD_NEW]; NSNumber *value = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:value forKey:@"value"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case MESG_SETTING_ID_FOCUS_ZOOM: { NSNumber *key = [NSNumber numberWithInt:RET_GET_FOCUS_ZOOM]; NSNumber *value = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:value forKey:@"value"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case MESG_SETTING_ID_CHECK_APMODE_SUPPORT: { DWORD dwSettingValue = pSetting->sSettings[i].dwSettingValue; if (dwSrcID > 256 && (dwSettingValue == 1 || dwSettingValue == 2)) { NSLog(@"%d suport AP mode", dwSrcID); [UDManager pushAPSupportDevByContactID:dwSrcID]; } } } }else{//SET RET switch(pSetting->sSettings[i].dwSettingID){ case 0: { NSNumber *key = [NSNumber numberWithInt:RET_SET_NPCSETTINGS_REMOTE_DEFENCE]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; NSNumber *state = [NSNumber numberWithInt:pSetting->sSettings[i].dwSettingValue]; NSString *contactId = [NSString stringWithFormat:@"%i",dwSrcID]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [parameter setValue:state forKey:@"state"]; [parameter setValue:contactId forKey:@"contactId"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 1: { NSNumber *key = [NSNumber numberWithInt:RET_SET_NPCSETTINGS_BUZZER]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 2: { NSNumber *key = [NSNumber numberWithInt:RET_SET_NPCSETTINGS_MOTION]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 3: { NSNumber *key = [NSNumber numberWithInt:RET_SET_NPCSETTINGS_RECORD_TYPE]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 4: { NSNumber *key = [NSNumber numberWithInt:RET_SET_NPCSETTINGS_REMOTE_RECORD]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 5: { NSNumber *key = [NSNumber numberWithInt:RET_SET_NPCSETTINGS_RECORD_PLAN_TIME]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 8: { NSNumber *key = [NSNumber numberWithInt:RET_SET_NPCSETTINGS_VIDEO_FORMAT]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 9: { NSNumber *key = [NSNumber numberWithInt:RET_SET_DEVICE_PASSWORD]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 11: { NSNumber *key = [NSNumber numberWithInt:RET_SET_NPCSETTINGS_RECORD_TIME]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 13: { NSNumber *key = [NSNumber numberWithInt:RET_SET_NPCSETTINGS_NET_TYPE]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 14: { NSNumber *key = [NSNumber numberWithInt:RET_SET_NPCSETTINGS_VIDEO_VOLUME]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 16: { NSNumber *key = [NSNumber numberWithInt:RET_SET_NPCSETTINGS_AUTO_UPDATE]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 17: { NSNumber *key = [NSNumber numberWithInt:RET_SET_NPCSETTINGS_HUMAN_INFRARED]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 18: { NSNumber *key = [NSNumber numberWithInt:RET_SET_NPCSETTINGS_WIRED_ALARM_INPUT]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 19: { NSNumber *key = [NSNumber numberWithInt:RET_SET_NPCSETTINGS_WIRED_ALARM_OUTPUT]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 20: { NSNumber *key = [NSNumber numberWithInt:RET_SET_NPCSETTINGS_TIME_ZONE]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 21: { NSNumber *key = [NSNumber numberWithInt:RET_SET_VISITOR_PASSWORD]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 24: { NSNumber *key = [NSNumber numberWithInt:RET_SET_NPCSETTINGS_IMAGE_INVERSION]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 25: { NSNumber *key = [NSNumber numberWithInt:RET_SET_NPCSETTINGS_PRERECORD]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case 34: { NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; NSNumber *key = [NSNumber numberWithInt:RET_SET_LIGHT_SWITCH_STATE]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } break; case MESG_SETTING_ID_SWITCH_APSTA_MODE: { NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; NSNumber *key = [NSNumber numberWithInt:RET_SWITCH_APSTA_MODE]; NSNumber *result = [NSNumber numberWithInt:pSetting->bOption]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } } } } }else if(pMesgBuffer[0]==MESG_TYPE_RET_EMIAL){ sMesgEmailType *pEmail = (sMesgEmailType*)pMesg; /* bOption值(8位) isGetOrSet最后1位,0时表示set的回调;1时表示get的回调 isSMTP倒数第2位,0时表示不支持SMTP;1时表示支持SMTP isRightPwd倒数第3位,0时表示SMTP邮箱密码错误;1时表示SMTP邮箱密码正确 isEmailVerified倒数第5位,0时表示SMTP邮箱已验证;1时表示SMTP邮箱未验证 */ int isGetOrSet = (pEmail->bOption>>0)&1; int isSMTP = (pEmail->bOption>>1)&1; int isRightPwd = (pEmail->bOption>>2)&1; int isEmailVerified = (pEmail->bOption>>4)&1; if(isGetOrSet==1 && pEmail->bOption != 15){//get NSNumber *key = [NSNumber numberWithInt:RET_GET_ALARM_EMAIL]; NSNumber *isSMTP_N = [NSNumber numberWithInt:isSMTP]; NSNumber *isRightPwd_N = [NSNumber numberWithInt:isRightPwd]; NSNumber *isEmailVerified_N = [NSNumber numberWithInt:isEmailVerified]; NSString *email = [NSString stringWithUTF8String:pEmail->cString]; //Smtp地址 pEmail->cSmtpServer[63] = '\0';//强制添加结束符,避免数据错乱 NSString *smtpServer = [NSString stringWithUTF8String:pEmail->cSmtpServer]; NSNumber *smtpPort = [NSNumber numberWithInt:pEmail->dwSmtpPort]; NSString *smtpUser = [NSString stringWithUTF8String:pEmail->cSmtpUser]; //解密 unsigned char decodeKey[8] = {0x9c, 0xae, 0x6a, 0x5a, 0xe1,0xfc,0xb0, 0x82}; unsigned char encodePwd[64] = {0};//密文 for(int j=0; jwLen; j++){ encodePwd[j] = pEmail->cSmtpPwd[j]; } int encryCount = 0;//表示密码加密多少次才完成 if(pEmail->wLen%8 == 0){ encryCount = pEmail->wLen/8; }else{ encryCount = pEmail->wLen/8 + 1; } unsigned char decodePwd[pEmail->wLen];//存放明文 unsigned char decodePwdTemp[8]; unsigned char pwdTemp[8]; for(int i=0; ibEncryptType]; //bReserve =0x01则显示手工设置(固件新版本一律回0x01), 否则不显示 NSNumber *reserve = [NSNumber numberWithInt:pEmail->bReserve]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; //DLog(@"%@",time); [parameter setValue:isSMTP_N forKey:@"isSMTP"]; [parameter setValue:isRightPwd_N forKey:@"isRightPwd"]; [parameter setValue:isEmailVerified_N forKey:@"isEmailVerified"]; [parameter setValue:key forKey:@"key"]; [parameter setValue:email forKey:@"email"]; [parameter setValue:smtpServer forKey:@"smtpServer"]; [parameter setValue:smtpPort forKey:@"smtpPort"]; [parameter setValue:smtpUser forKey:@"smtpUser"]; [parameter setValue:smtpPwd forKey:@"smtpPwd"]; [parameter setValue:encryptType forKey:@"encryptType"]; [parameter setValue:reserve forKey:@"reserve"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; }else{//set NSNumber *key = [NSNumber numberWithInt:RET_SET_ALARM_EMAIL]; NSNumber *result = [NSNumber numberWithInt:isGetOrSet]; if (pEmail->bOption == 15) {//邮箱格式错误 result = [NSNumber numberWithInt:pEmail->bOption]; } NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } }else if(pMesgBuffer[0]==MESG_TYPE_RET_APPID){ sMesgGSetAppIdType *pAppId = (sMesgGSetAppIdType*)pMesg; if(pAppId->bOption==1){ NSString *contactId = [NSString stringWithFormat:@"%i",dwSrcID]; NSNumber *key = [NSNumber numberWithInt:RET_GET_BIND_ACCOUNT]; NSNumber *count = [NSNumber numberWithInt:pAppId->bAppIdCount]; NSNumber *maxCount = [NSNumber numberWithInt:pAppId->bAppIdMAXCount]; NSMutableArray *datas = [NSMutableArray arrayWithCapacity:0]; if([count intValue]==1&&pAppId->dwAppId[0]==0){ }else{ for(int i=0;ibAppIdCount;i++){ [datas addObject:[NSNumber numberWithInt:pAppId->dwAppId[i]]]; } } NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:contactId forKey:@"contactId"]; [parameter setValue:key forKey:@"key"]; [parameter setValue:count forKey:@"count"]; [parameter setValue:maxCount forKey:@"maxCount"]; [parameter setValue:datas forKey:@"datas"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; }else{ NSNumber *key = [NSNumber numberWithInt:RET_SET_BIND_ACCOUNT]; NSNumber *result = [NSNumber numberWithInt:pAppId->bOption]; NSString *contactId = [NSString stringWithFormat:@"%i",dwSrcID]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [parameter setValue:contactId forKey:@"contactId"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } }else if(pMesgBuffer[0]==MESG_TYPE_RET_WIFILIST){ sMesgGetWifiListType *pWifi = (sMesgGetWifiListType*)pMesg; sNpcWifiListType *sList = &(pWifi->sNpcWifiList); if(pWifi->bOption==1){ NSNumber *key = [NSNumber numberWithInt:RET_GET_WIFI_LIST]; NSMutableArray *types = [NSMutableArray arrayWithCapacity:0]; NSMutableArray *names = [NSMutableArray arrayWithCapacity:0]; NSMutableArray *strengths = [NSMutableArray arrayWithCapacity:0]; NSNumber *count = [NSNumber numberWithInt:sList->bWifiApNs]; NSNumber *currentIndex = [NSNumber numberWithInt:sList->wCurrentConnSSIDIndex]; for(int i=0;ibWifiApNs;i++){ BYTE data = sList->bEncTpSigLev[i]; [types addObject:[NSNumber numberWithInt:(int)data>>4]]; [strengths addObject:[NSNumber numberWithInt:(int)((data&0xf)&0xff)]]; } char buffer[128]; int n = 0; for(int i=0;iwLen;i++){ if(sList->cAllESSID[i]!='\0'){ buffer[n] = sList->cAllESSID[i]; n++; }else{ buffer[n] = '\0'; if([NSString stringWithUTF8String:buffer]){ [names addObject:[NSString stringWithUTF8String:buffer]]; }else{ [names addObject:@"Error Name"]; } n = 0; } } if([names count]!=sList->bWifiApNs){ DLog(@"WIFI LIST ERROR"); return; } NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; //DLog(@"%@",time); [parameter setValue:key forKey:@"key"]; [parameter setValue:types forKey:@"types"]; [parameter setValue:names forKey:@"names"]; [parameter setValue:strengths forKey:@"strengths"]; [parameter setValue:count forKey:@"count"]; [parameter setValue:currentIndex forKey:@"currentIndex"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; }else{ NSNumber *key = [NSNumber numberWithInt:RET_SET_WIFI]; NSNumber *result = [NSNumber numberWithInt:pWifi->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } }else if(pMesgBuffer[0]==MESG_TYPE_RET_ALARMCODE_STATUS){ sMesgGetAlarmCodeType *pCode = (sMesgGetAlarmCodeType*)pMesg; if(pCode->bOption==1){ NSNumber *key = [NSNumber numberWithInt:RET_GET_DEFENCE_AREA_STATE]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; NSMutableArray *status = [NSMutableArray arrayWithCapacity:0]; NSMutableArray *keyGroup = [NSMutableArray arrayWithCapacity:0]; int keyValue = pCode->bAlarmKeySta; [keyGroup addObject:[NSNumber numberWithInt:((keyValue>>0)&0x1)]]; [keyGroup addObject:[NSNumber numberWithInt:((keyValue>>1)&0x1)]]; [keyGroup addObject:[NSNumber numberWithInt:((keyValue>>2)&0x1)]]; [keyGroup addObject:[NSNumber numberWithInt:((keyValue>>3)&0x1)]]; [keyGroup addObject:[NSNumber numberWithInt:((keyValue>>4)&0x1)]]; [keyGroup addObject:[NSNumber numberWithInt:((keyValue>>5)&0x1)]]; [keyGroup addObject:[NSNumber numberWithInt:((keyValue>>6)&0x1)]]; [keyGroup addObject:[NSNumber numberWithInt:((keyValue>>7)&0x1)]]; DLog(@"%i %i %i %i %i %i %i %i",[[keyGroup objectAtIndex:0] intValue], [[keyGroup objectAtIndex:1] intValue], [[keyGroup objectAtIndex:2] intValue], [[keyGroup objectAtIndex:3] intValue], [[keyGroup objectAtIndex:4] intValue], [[keyGroup objectAtIndex:5] intValue], [[keyGroup objectAtIndex:6] intValue], [[keyGroup objectAtIndex:7] intValue]); [status addObject:keyGroup]; for(int i=0;ibAlarmCodeCount;i++){ NSMutableArray *group = [NSMutableArray arrayWithCapacity:0]; int value = pCode->bAlarmCodeSta[i]; [group addObject:[NSNumber numberWithInt:((value>>0)&0x1)]]; [group addObject:[NSNumber numberWithInt:((value>>1)&0x1)]]; [group addObject:[NSNumber numberWithInt:((value>>2)&0x1)]]; [group addObject:[NSNumber numberWithInt:((value>>3)&0x1)]]; [group addObject:[NSNumber numberWithInt:((value>>4)&0x1)]]; [group addObject:[NSNumber numberWithInt:((value>>5)&0x1)]]; [group addObject:[NSNumber numberWithInt:((value>>6)&0x1)]]; [group addObject:[NSNumber numberWithInt:((value>>7)&0x1)]]; [status addObject:group]; DLog(@"%i %i %i %i %i %i %i %i",[[group objectAtIndex:0] intValue], [[group objectAtIndex:1] intValue], [[group objectAtIndex:2] intValue], [[group objectAtIndex:3] intValue], [[group objectAtIndex:4] intValue], [[group objectAtIndex:5] intValue], [[group objectAtIndex:6] intValue], [[group objectAtIndex:7] intValue]); } [parameter setValue:key forKey:@"key"]; [parameter setValue:status forKey:@"status"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; }else{ NSNumber *key = [NSNumber numberWithInt:RET_SET_DEFENCE_AREA_STATE]; NSNumber *result = [NSNumber numberWithInt:pCode->bOption]; NSNumber *group = [NSNumber numberWithInt:(int)pCode->bAlarmCodeSta[0]]; NSNumber *item = [NSNumber numberWithInt:(int)pCode->bAlarmCodeSta[4]]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [parameter setValue:group forKey:@"group"]; [parameter setValue:item forKey:@"item"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } }else if(pMesgBuffer[0]==MESG_TYPE_RET_DEFENCE_SWITCH_STATE){ sMesgGetDefenceSwitchType * pSwitchState = (sMesgGetDefenceSwitchType *)pMesg; if(pSwitchState->bOption==1){//表示获取成功 NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; NSNumber *key = [NSNumber numberWithInt:RET_GET_DEFENCE_SWITCH_STATE]; NSMutableArray *switchStatus = [NSMutableArray arrayWithCapacity:0]; NSMutableArray *keyGroup = [NSMutableArray arrayWithCapacity:0]; int keyValue = pSwitchState->bReserve; [keyGroup addObject:[NSNumber numberWithInt:((keyValue>>0)&0x1)]]; [keyGroup addObject:[NSNumber numberWithInt:((keyValue>>1)&0x1)]]; [keyGroup addObject:[NSNumber numberWithInt:((keyValue>>2)&0x1)]]; [keyGroup addObject:[NSNumber numberWithInt:((keyValue>>3)&0x1)]]; [keyGroup addObject:[NSNumber numberWithInt:((keyValue>>4)&0x1)]]; [keyGroup addObject:[NSNumber numberWithInt:((keyValue>>5)&0x1)]]; [keyGroup addObject:[NSNumber numberWithInt:((keyValue>>6)&0x1)]]; [keyGroup addObject:[NSNumber numberWithInt:((keyValue>>7)&0x1)]]; [switchStatus addObject:keyGroup]; for(int i=0;ibDefenceSetSwitchCount;i++){ NSMutableArray *group = [NSMutableArray arrayWithCapacity:0]; int value = pSwitchState->bDefenceSetSwitch[i]; [group addObject:[NSNumber numberWithInt:((value>>0)&0x1)]]; [group addObject:[NSNumber numberWithInt:((value>>1)&0x1)]]; [group addObject:[NSNumber numberWithInt:((value>>2)&0x1)]]; [group addObject:[NSNumber numberWithInt:((value>>3)&0x1)]]; [group addObject:[NSNumber numberWithInt:((value>>4)&0x1)]]; [group addObject:[NSNumber numberWithInt:((value>>5)&0x1)]]; [group addObject:[NSNumber numberWithInt:((value>>6)&0x1)]]; [group addObject:[NSNumber numberWithInt:((value>>7)&0x1)]]; [switchStatus addObject:group]; } [parameter setValue:key forKey:@"key"]; [parameter setValue:switchStatus forKey:@"switchStatus"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; }else if (pSwitchState->bOption==0){//表示设置成功 NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; NSNumber *key = [NSNumber numberWithInt:RET_SET_DEFENCE_SWITCH_STATE]; NSNumber *result = [NSNumber numberWithInt:pSwitchState->bOption]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } }else if(pMesgBuffer[0]==MESG_TYPE_RET_INIT_PASSWD){ //初始化密码 #pragma mark 初始化密码 Buffer sMesgSetInitPasswdType *pPassword = (sMesgSetInitPasswdType*)pMesg; NSNumber *key = [NSNumber numberWithInt:RET_SET_INIT_PASSWORD]; NSNumber *result = [NSNumber numberWithInt:pPassword->bOption]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; }else if(pMesgBuffer[0]==MESG_TYPE_UPG_CHEK_VERSION_RET){ sMesgUpgType *pUpg = (sMesgUpgType*)pMesg; int iCurVersion = pUpg->sRemoteUpgMesg.dwUpgID; int iUpgVersion = pUpg->sRemoteUpgMesg.dwUpgVal; int a = iCurVersion&0xff; int b = (iCurVersion>>8)&0xff; int c = (iCurVersion>>16)&0xff; int d = (iCurVersion>>24)&0xff; int e = iUpgVersion&0xff; int f = (iUpgVersion>>8)&0xff; int g = (iUpgVersion>>16)&0xff; int h = (iUpgVersion>>24)&0xff; NSNumber *key = [NSNumber numberWithInt:RET_CHECK_DEVICE_UPDATE]; NSNumber *result = [NSNumber numberWithInt:pUpg->bOption]; NSString *curVersion = [NSString stringWithFormat:@"%i.%i.%i.%i",d,c,b,a]; NSString *upgVersion = [NSString stringWithFormat:@"%i.%i.%i.%i",h,g,f,e]; NSString *contactId = [NSString stringWithFormat:@"%i",dwSrcID];//设备检查更新 NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:curVersion forKey:@"curVersion"]; [parameter setValue:upgVersion forKey:@"upgVersion"]; [parameter setValue:result forKey:@"result"]; [parameter setValue:contactId forKey:@"contactId"];//设备检查更新 [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; }else if(pMesgBuffer[0]==MESG_TYPE_UPG_FILE_TO_DOWNLOAD_RET){ sMesgUpgType *pUpg = (sMesgUpgType*)pMesg; NSNumber *key = [NSNumber numberWithInt:RET_DO_DEVICE_UPDATE]; NSNumber *result = [NSNumber numberWithInt:pUpg->bOption]; NSNumber *value = [NSNumber numberWithInt:pUpg->sRemoteUpgMesg.dwUpgVal]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:value forKey:@"value"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; }else if(pMesgBuffer[0]==MESG_TYPE_DEVICE_NOT_SUPPORT_RET){ NSNumber *key = [NSNumber numberWithInt:RET_DEVICE_NOT_SUPPORT]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; }else if(pMesgBuffer[0]==MESG_TYPE_MESSAGE){ NSNumber *key = [NSNumber numberWithInt:RET_RECEIVE_MESSAGE]; sMesgStringMesgType *pMessage = (sMesgStringMesgType*)pMesg; if(pMessage->wLen<=0) return; pMessage->cString[pMessage->wLen] = 0; NSString *message = [NSString stringWithUTF8String:pMessage->cString]; NSString *contactId = [NSString stringWithFormat:@"0%d",dwSrcID&0x7fffffff]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:message forKey:@"message"]; [parameter setValue:contactId forKey:@"contactId"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; }else if(pMesgBuffer[0]==MESG_TYPE_ALARM_CALL){ sMesgAlarmInfoType *pAlarm = (sMesgAlarmInfoType*)pMesg; int isSupport = 0; if((pMesgBuffer[2]&0x1)==1){ isSupport = 1; }else{ isSupport = 0; } //YES 表示删除绑定的报警推送ID BOOL isSupportDelAlarmPushId;//删除绑定的报警推送ID if(((pMesgBuffer[2]>>2)&0x01)==1){ isSupportDelAlarmPushId = YES; }else{ isSupportDelAlarmPushId = NO; } NSNumber *supportDelAlarmPushId = [NSNumber numberWithBool:isSupportDelAlarmPushId]; NSString *contactId = [NSString stringWithFormat:@"%i",dwSrcID]; NSNumber *type = [NSNumber numberWithInt:pMesgBuffer[1]]; NSNumber *isSupportExternAlarm = [NSNumber numberWithInt:isSupport]; NSNumber *group = [NSNumber numberWithInt:pAlarm->sAlarmCodes.dwAlarmCodeID]; NSNumber *item = [NSNumber numberWithInt:pAlarm->sAlarmCodes.dwAlarmCodeIndex]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:contactId forKey:@"contactId"]; [parameter setValue:type forKey:@"type"]; [parameter setValue:isSupportExternAlarm forKey:@"isSupportExternAlarm"]; [parameter setValue:supportDelAlarmPushId forKey:@"isSupportDelAlarmPushId"];//删除绑定的报警推送ID [parameter setValue:group forKey:@"group"]; [parameter setValue:item forKey:@"item"]; [[P2PClient sharedClient] receiveReceiveAlarmMessage:parameter]; NSString *deviceId = [parameter valueForKey:@"contactId"]; int alarmType = [[parameter valueForKey:@"type"] intValue]; int alarmGroup = [[parameter valueForKey:@"group"] intValue]; int alarmItem = [[parameter valueForKey:@"item"] intValue]; Alarm * alarm = [[Alarm alloc]init]; AlarmDAO * alarmDAO = [[AlarmDAO alloc]init]; alarm.deviceId = deviceId; alarm.alarmTime = [NSString stringWithFormat:@"%ld",[Utils getCurrentTimeInterval]]; alarm.alarmType = alarmType; alarm.alarmGroup = alarmGroup; alarm.alarmItem = alarmItem; NSString * plist = [[NSBundle mainBundle] pathForResource:@"Common-Configuration" ofType:@"plist"]; NSDictionary * dic = [NSDictionary dictionaryWithContentsOfFile:plist]; BOOL isLocalAlarmRecord = [dic[@"isLocalAlarmRecord"] boolValue]; if (isLocalAlarmRecord) {//YES则保存到本地 [alarmDAO insert:alarm]; } }else if(pMesgBuffer[0]==MESG_TYPE_GET_SYS_VERSION_RET){ sMesgSysVersionType *pVersion = (sMesgSysVersionType*)pMesg; int iCurVersion = pVersion->dwCurAppVersion; int iKernelVersion = pVersion->dwKernelVersion; int iRootfsVersion = pVersion->dwRootfsVersion; int iUbootVersion = pVersion->dwUbootVersion; int a = iCurVersion&0xff; int b = (iCurVersion>>8)&0xff; int c = (iCurVersion>>16)&0xff; int d = (iCurVersion>>24)&0xff; NSNumber *key = [NSNumber numberWithInt:RET_GET_DEVICE_INFO]; NSNumber *result = [NSNumber numberWithInt:pVersion->bOption]; NSString *curVersion = [NSString stringWithFormat:@"%i.%i.%i.%i",d,c,b,a]; NSString *kernelVersion = [NSString stringWithFormat:@"%i",iKernelVersion]; NSString *rootfsVersion = [NSString stringWithFormat:@"%i",iRootfsVersion]; NSString *ubootVersion = [NSString stringWithFormat:@"%i",iUbootVersion]; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; [parameter setValue:key forKey:@"key"]; [parameter setValue:curVersion forKey:@"curVersion"]; [parameter setValue:ubootVersion forKey:@"ubootVersion"]; [parameter setValue:kernelVersion forKey:@"kernelVersion"]; [parameter setValue:rootfsVersion forKey:@"rootfsVersion"]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; }else if(pMesgBuffer[0]==MESG_TYPE_USER_CMD_RET){ UserCmdMesg *pMessage = (UserCmdMesg*)pMesg; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; NSNumber *key = [NSNumber numberWithInt:RET_CUSTOM_CMD]; [parameter setValue:key forKey:@"key"]; if(pMessage->len<=0) return; NSString * result = [NSString stringWithFormat:@"%d",pMessage->bOption]; [parameter setValue:result forKey:@"result"]; // if (pMessage->bOption == 1) { // // } NSString *cmd = [NSString stringWithUTF8String:pMessage->Data]; [parameter setValue:cmd forKey:@"cmd"]; NSString *contactId = [NSString stringWithFormat:@"%i",dwSrcID]; [parameter setValue:contactId forKey:@"contactId"]; [[P2PClient sharedClient] receiveReceiveDoorBellAlarmMessage:parameter]; }else if(pMesgBuffer[0] == MESG_TYPE_GET_SDCARD_INFO){ sMesgSDCardInfoType * sSDCardInfo = (sMesgSDCardInfoType *)pMesg; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; NSNumber *key = [NSNumber numberWithInt:RET_GET_SDCARD_INFO]; [parameter setValue:key forKey:@"key"]; NSString * result = [NSString stringWithFormat:@"%d",sSDCardInfo->bOption]; [parameter setValue:result forKey:@"result"]; if (sSDCardInfo->bOption == 1) { NSString * storageCount = [NSString stringWithFormat:@"%d",sSDCardInfo->wSDCardCount]; [parameter setValue:storageCount forKey:@"storageCount"]; int storageID; storageID = sSDCardInfo->sSDCard[0].bSDCardID; int storageType = storageID & 16; [parameter setValue:[NSString stringWithFormat:@"%d",storageType] forKeyPath:@"storageType"]; if (storageType == SDCARD) { [parameter setValue:[NSString stringWithFormat:@"%d",storageID] forKeyPath:@"sdCardID"]; NSString * sdTotalStorage = [NSString stringWithFormat:@"%llu",sSDCardInfo->sSDCard[0].u64SDTotalSpace/(1024*1024)]; [parameter setValue:sdTotalStorage forKey:@"sdTotalStorage"]; NSString * sdFreeStorage = [NSString stringWithFormat:@"%llu",sSDCardInfo->sSDCard[0].u64SDCardFreeSpace/(1024*1024)]; [parameter setValue:sdFreeStorage forKey:@"sdFreeStorage"]; }else{ NSString * usbTotalStorage = [NSString stringWithFormat:@"%llu",sSDCardInfo->sSDCard[0].u64SDTotalSpace/(1024*1024)]; [parameter setValue:usbTotalStorage forKey:@"usbTotalStorage"]; NSString * usbFreeStorage = [NSString stringWithFormat:@"%llu",sSDCardInfo->sSDCard[0].u64SDCardFreeSpace/(1024*1024)]; [parameter setValue:usbFreeStorage forKey:@"usbFreeStorage"]; } if (sSDCardInfo->wSDCardCount > 1) { if (storageType == SDCARD) { NSString * usbTotalStorage = [NSString stringWithFormat:@"%llu",sSDCardInfo->sSDCard[1].u64SDTotalSpace/(1024*1024)]; [parameter setValue:usbTotalStorage forKey:@"usbTotalStorage"]; NSString * usbFreeStorage = [NSString stringWithFormat:@"%llu",sSDCardInfo->sSDCard[1].u64SDCardFreeSpace/(1024*1024)]; [parameter setValue:usbFreeStorage forKey:@"usbFreeStorage"]; }else{ NSString * sdTotalStorage = [NSString stringWithFormat:@"%llu",sSDCardInfo->sSDCard[0].u64SDTotalSpace/(1024*1024)]; [parameter setValue:sdTotalStorage forKey:@"sdTotalStorage"]; NSString * sdFreeStorage = [NSString stringWithFormat:@"%llu",sSDCardInfo->sSDCard[0].u64SDCardFreeSpace/(1024*1024)]; [parameter setValue:sdFreeStorage forKey:@"sdFreeStorage"]; } } }else{//MESG_SDCARD_NO_EXIST //sd卡不存在 } [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; }else if(pMesgBuffer[0] == MESG_TYPE_SET_FORMAT_SDCARD){ sMesgSDCardFormatType * sSDCardFormat = (sMesgSDCardFormatType *)pMesg; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; NSNumber *key = [NSNumber numberWithInt:RET_SET_SDCARD_FORMAT]; [parameter setValue:key forKey:@"key"]; NSNumber * result = [NSNumber numberWithInt:sSDCardFormat->bOption]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; }else if(pMesgBuffer[0] == MESG_TYPE_RET_GPIO_CTL){ sMesgSetGpioCtrl * sSetGpioCtrl = (sMesgSetGpioCtrl *)pMesg; NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; NSNumber *key = [NSNumber numberWithInt:RET_SET_GPIO_CTL]; [parameter setValue:key forKey:@"key"]; NSNumber * result = [NSNumber numberWithInt:sSetGpioCtrl->bOption]; [parameter setValue:result forKey:@"result"]; //还没实现接收函数 [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; }else if(pMesgBuffer[0] == MESG_TYPE_CUSTOM_CMD_NO_VERRIFY_RET){ sMesgCustomNoVerifyCmdType * sMessage = (sMesgCustomNoVerifyCmdType *)pMesg;//删除绑定推送ID或者告诉设备端不要再推送门铃 NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; NSNumber *key = [NSNumber numberWithInt:RET_SET_DELETE_ALARM_PUSHID]; [parameter setValue:key forKey:@"key"]; //0表示解绑成功 NSNumber * result = [NSNumber numberWithInt:sMessage->bOption]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; }else if(pMesgBuffer[0] == MESG_TYPE_RET_DEVICE_LANGUAGE){ sMesgDeviceLanguageCmdType * sMessage = (sMesgDeviceLanguageCmdType *)pMesg;//设备语言消息结构体 NSMutableDictionary *parameter = [NSMutableDictionary dictionaryWithCapacity:0]; /* *bOption: *当 bOption == 0 时,表示设置语言成功;当 bOption == 1 时,表示获取语言信息成功; *当 bOption ==254 时,表示设置语言的参数错误,如设置了不支持的语言 */ if (sMessage->bOption == MESG_GET_OK) { //语言种类个数 NSNumber * supportLanguageCount = [NSNumber numberWithInt:sMessage->bSupportLanguageCount]; [parameter setValue:supportLanguageCount forKey:@"supportLanguageCount"]; //当前的语言 NSNumber * currentLanguage = [NSNumber numberWithInt:sMessage->bCurLanguage]; [parameter setValue:currentLanguage forKey:@"currentLanguage"]; //语言种类有 NSMutableArray *languageSupports = [NSMutableArray arrayWithCapacity:0]; for (int i=0; ibSupportLanguageCount; i++) { NSNumber * languageSupport = [NSNumber numberWithInt:sMessage->bLanguageSupport[i]]; [languageSupports addObject:languageSupport]; } [parameter setValue:languageSupports forKey:@"languageSupports"]; NSNumber *key = [NSNumber numberWithInt:RET_GET_DEVICE_LANGUAGE]; [parameter setValue:key forKey:@"key"]; }else{ //语言种类个数 NSNumber * supportLanguageCount = [NSNumber numberWithInt:sMessage->bSupportLanguageCount]; [parameter setValue:supportLanguageCount forKey:@"supportLanguageCount"]; //当前的语言 NSNumber * currentLanguage = [NSNumber numberWithInt:sMessage->bCurLanguage]; [parameter setValue:currentLanguage forKey:@"currentLanguage"]; //语言种类有 NSMutableArray *languageSupports = [NSMutableArray arrayWithCapacity:0]; for (int i=0; ibSupportLanguageCount; i++) { NSNumber * languageSupport = [NSNumber numberWithInt:sMessage->bLanguageSupport[i]]; [languageSupports addObject:languageSupport]; } [parameter setValue:languageSupports forKey:@"languageSupports"]; NSNumber *key = [NSNumber numberWithInt:RET_SET_DEVICE_LANGUAGE]; [parameter setValue:key forKey:@"key"]; } NSNumber * result = [NSNumber numberWithInt:sMessage->bOption]; [parameter setValue:result forKey:@"result"]; [[P2PClient sharedClient] receiveReceiveRemoteMessage:parameter]; } } - (void)receiveReceiveAlarmMessage:(NSDictionary *)dictionary{ [[NSNotificationCenter defaultCenter] postNotificationName:RECEIVE_ALARM_MESSAGE object:self userInfo:dictionary]; } - (void)receiveReceiveDoorBellAlarmMessage:(NSDictionary *)dictionary{ [[NSNotificationCenter defaultCenter] postNotificationName:RECEIVE_DOORBELL_ALARM_MESSAGE object:self userInfo:dictionary]; } - (void)receiveReceiveRemoteMessage:(NSDictionary *)dictionary{ [[NSNotificationCenter defaultCenter] postNotificationName:RECEIVE_REMOTE_MESSAGE object:self userInfo:dictionary]; } - (void)ack_receiveReceiveRemoteMessage:(NSDictionary *)dictionary{ [[NSNotificationCenter defaultCenter] postNotificationName:ACK_RECEIVE_REMOTE_MESSAGE object:self userInfo:dictionary]; } -(void)getPlaybackFilesWithId:(NSString *)contactId password:(NSString *)password timeInterval:(NSInteger)interval{ static int mesg_id = MESG_ID_GET_PLAYBACK_FILES-1000; if(mesg_id>=MESG_ID_GET_PLAYBACK_FILES){ mesg_id = MESG_ID_GET_PLAYBACK_FILES-1000; } //today NSDate *nowDate = [NSDate date]; //interval(1或3...)天前 NSDate *startDate = [nowDate dateByAddingTimeInterval: -(interval*24*60*60)]; NSDateComponents* nowCompents = [Utils getDateComponentsByDate:nowDate]; NSDateComponents* startCompents = [Utils getDateComponentsByDate:startDate]; sMesgGetRecListType sGetRec; sGetRec.bCmd = MESG_TYPE_GET_REC_LIST; sGetRec.bOption = 1;//1可以获取回放文件的播放时长 sGetRec.wOption = 0; //获取播放文件的开始时间 sGetRec.sBeginTime.wYear = (int)[startCompents year]; sGetRec.sBeginTime.bMon = (int)[startCompents month]; sGetRec.sBeginTime.bDay = (int)[startCompents day]; sGetRec.sBeginTime.bHour = (int)[startCompents hour]; sGetRec.sBeginTime.bMin = (int)[startCompents minute]; //获取播放文件的结束时间 sGetRec.sEndTime.wYear = (int)[nowCompents year]; sGetRec.sEndTime.bMon = (int)[nowCompents month]; sGetRec.sEndTime.bDay = (int)[nowCompents day]; sGetRec.sEndTime.bHour = (int)[nowCompents hour]; sGetRec.sEndTime.bMin = (int)[nowCompents minute]; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sGetRec, sizeof(sMesgGetRecListType), NULL, 0, 0); mesg_id++; } -(void)getPlaybackFilesWithIdByDate:(NSString *)contactId password:(NSString *)password startDate:(NSDate *)startDate endDate:(NSDate *)endDate{ static int mesg_id = MESG_ID_GET_PLAYBACK_FILES_BY_DATE-1000; if(mesg_id>=MESG_ID_GET_PLAYBACK_FILES_BY_DATE){ mesg_id = MESG_ID_GET_PLAYBACK_FILES_BY_DATE-1000; } NSDateComponents *startdateComponents = [Utils getDateComponentsByDate:startDate]; int start_year = (int)[startdateComponents year]; int start_month = (int)[startdateComponents month]; int start_day = (int)[startdateComponents day]; int start_hour = (int)[startdateComponents hour]; int start_minute = (int)[startdateComponents minute]; NSDateComponents *enddateComponents = [Utils getDateComponentsByDate:endDate]; int end_year = (int)[enddateComponents year]; int end_month = (int)[enddateComponents month]; int end_day = (int)[enddateComponents day]; int end_hour = (int)[enddateComponents hour]; int end_minute = (int)[enddateComponents minute]; sMesgGetRecListType sGetRec; sGetRec.bCmd = MESG_TYPE_GET_REC_LIST; sGetRec.bOption = 1; sGetRec.wOption = 0; sGetRec.sBeginTime.wYear = start_year; sGetRec.sBeginTime.bMon = start_month; sGetRec.sBeginTime.bDay = start_day; sGetRec.sBeginTime.bHour = start_hour; sGetRec.sBeginTime.bMin = start_minute; sGetRec.sEndTime.wYear = end_year; sGetRec.sEndTime.bMon = end_month; sGetRec.sEndTime.bDay = end_day; sGetRec.sEndTime.bHour = end_hour; sGetRec.sEndTime.bMin = end_minute; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sGetRec, sizeof(sMesgGetRecListType), NULL, 0, 0); mesg_id++; } -(void)getDeviceTimeWithId:(NSString *)contactId password:(NSString *)password{ static int mesg_id = MESG_ID_GET_DEVICE_TIME-1000; if(mesg_id>=MESG_ID_GET_DEVICE_TIME){ mesg_id = MESG_ID_GET_DEVICE_TIME-1000; } sMesgDateTimeType sDate; sDate.bCmd = MESG_TYPE_GET_DATETIME; sDate.bOption = 0; sDate.wOption = 0; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sDate, sizeof(sMesgDateTimeType), NULL, 0, 0); mesg_id++; } -(void)setDeviceTimeWithId:(NSString *)contactId password:(NSString *)password year:(NSInteger)year month:(NSInteger)month day:(NSInteger)day hour:(NSInteger)hour minute:(NSInteger)minute{ static int mesg_id = MESG_ID_SET_DEVICE_TIME-1000; if(mesg_id>=MESG_ID_SET_DEVICE_TIME){ mesg_id = MESG_ID_SET_DEVICE_TIME-1000; } sMesgDateTimeType sDate; sDate.bCmd = MESG_TYPE_SET_DATETIME; sDate.bOption = 0; sDate.wOption = 0; sDate.sMesgSysTime.wYear = year; sDate.sMesgSysTime.bMon = month; sDate.sMesgSysTime.bDay = day; sDate.sMesgSysTime.bHour = hour; sDate.sMesgSysTime.bMin = minute; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sDate, sizeof(sMesgDateTimeType), NULL, 0, 0); mesg_id++; } -(void)getSDCardInfoWithId:(NSString *)contactId password:(NSString *)password { static int mesg_id = MESG_ID_GET_SDCARD_INFO - 1000; if (mesg_id >= MESG_ID_GET_SDCARD_INFO) { mesg_id = MESG_ID_GET_SDCARD_INFO - 1000; } sMesgSDCardInfoType sSDCardInfo; sSDCardInfo.bCommandType = MESG_TYPE_GET_SDCARD_INFO; sSDCardInfo.bOption = 0; sSDCardInfo.wSDCardCount = 0; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSDCardInfo, sizeof(sMesgSDCardInfoType), NULL, 0, 0); mesg_id++; } -(void)setSDCardInfoWithId:(NSString *)contactId password:(NSString *)password sdcardID:(int)sdcardID { static int mesg_id = MESG_ID_SET_SDCARD_INFO - 1000; if (mesg_id >= MESG_ID_SET_SDCARD_INFO) { mesg_id = MESG_ID_SET_SDCARD_INFO - 1000; } sMesgSDCardFormatType sSDCardFormat; sSDCardFormat.bCommandType = MESG_TYPE_SET_FORMAT_SDCARD; sSDCardFormat.bOption = 0; sSDCardFormat.wRemainByte = 0; sSDCardFormat.bSDCardID = sdcardID; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSDCardFormat, sizeof(sMesgSDCardFormatType), NULL, 0, 0); mesg_id++; } -(void)getNpcSettingsWithId:(NSString *)contactId password:(NSString *)password{ static int mesg_id = MESG_ID_GET_NPC_SETTINGS-1000; if(mesg_id>=MESG_ID_GET_NPC_SETTINGS){ mesg_id = MESG_ID_GET_DEVICE_TIME-1000; } BYTE pMessageBody[4]; pMessageBody[0] = MESG_TYPE_GET_SETTING; pMessageBody[1] = 0; pMessageBody[2] = 0; pMessageBody[3] = 0; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, pMessageBody, 4, NULL, 0, 0); mesg_id++; } -(void)getDefenceState:(NSString *)contactId password:(NSString *)password{ static int mesg_id = MESG_ID_GET_DEFENCE_STATE-1000; if(mesg_id>=MESG_ID_GET_DEFENCE_STATE){ mesg_id = MESG_ID_GET_DEFENCE_STATE-1000; } BYTE pMessageBody[4]; pMessageBody[0] = MESG_TYPE_GET_SETTING; pMessageBody[1] = 0; pMessageBody[2] = 0; pMessageBody[3] = 0; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, pMessageBody, 4, NULL, 0, 0); mesg_id++; } -(void)setVideoFormatWithId:(NSString *)contactId password:(NSString *)password type:(NSInteger)type{ static int mesg_id = MESG_ID_SET_VIDEO_FORMAT-1000; if(mesg_id>=MESG_ID_SET_VIDEO_FORMAT){ mesg_id = MESG_ID_SET_VIDEO_FORMAT-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = 8; sSetting.sSettings[0].dwSettingValue = type; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } -(void)setVideoVolumeWithId:(NSString *)contactId password:(NSString *)password value:(NSInteger)value{ static int mesg_id = MESG_ID_SET_VIDEO_VOLUME-1000; if(mesg_id>=MESG_ID_SET_VIDEO_VOLUME){ mesg_id = MESG_ID_SET_VIDEO_VOLUME-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = 14; sSetting.sSettings[0].dwSettingValue = value; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } -(void)setDevicePasswordWithId:(NSString *)contactId password:(NSString *)password newPassword:(NSString *)newPassword{ static int mesg_id = MESG_ID_SET_DEVICE_PASSWORD-1000; if(mesg_id>=MESG_ID_SET_DEVICE_PASSWORD){ mesg_id = MESG_ID_SET_DEVICE_PASSWORD-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = 9; sSetting.sSettings[0].dwSettingValue = newPassword.intValue; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } -(void)setVisitorPasswordWithId:(NSString *)contactId password:(NSString *)password newPassword:(NSString *)newPassword{ static int mesg_id = MESG_ID_SET_VISITOR_PASSWORD-1000; if(mesg_id>=MESG_ID_SET_VISITOR_PASSWORD){ mesg_id = MESG_ID_SET_VISITOR_PASSWORD-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = 21; sSetting.sSettings[0].dwSettingValue = newPassword.intValue; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } -(void)setBuzzerWithId:(NSString *)contactId password:(NSString *)password state:(NSInteger)state{ static int mesg_id = MESG_ID_SET_BUZZER-1000; if(mesg_id>=MESG_ID_SET_BUZZER){ mesg_id = MESG_ID_SET_BUZZER-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = 1; sSetting.sSettings[0].dwSettingValue = state; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } -(void)setMotionWithId:(NSString *)contactId password:(NSString *)password state:(NSInteger)state{ static int mesg_id = MESG_ID_SET_MOTION-1000; if(mesg_id>=MESG_ID_SET_MOTION){ mesg_id = MESG_ID_SET_MOTION-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = 2; sSetting.sSettings[0].dwSettingValue = state; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } -(void)setImageInversionWithId:(NSString*)contactId password:(NSString*)password state:(NSInteger)state{ static int mesg_id = MESG_ID_SET_IMAGE_INVERSION-1000; if(mesg_id>=MESG_ID_SET_IMAGE_INVERSION){ mesg_id = MESG_ID_SET_IMAGE_INVERSION-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = 24; sSetting.sSettings[0].dwSettingValue = state; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } -(void)setAutoUpdateWithId:(NSString*)contactId password:(NSString*)password state:(NSInteger)state{ static int mesg_id = MESG_ID_SET_AUTO_UPDATE-1000; if(mesg_id>=MESG_ID_SET_AUTO_UPDATE){ mesg_id = MESG_ID_SET_AUTO_UPDATE-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = 16; sSetting.sSettings[0].dwSettingValue = state; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } -(void)setHumanInfraredWithId:(NSString*)contactId password:(NSString*)password state:(NSInteger)state{ static int mesg_id = MESG_ID_SET_HUMAN_INFRARED-1000; if(mesg_id>=MESG_ID_SET_HUMAN_INFRARED){ mesg_id = MESG_ID_SET_HUMAN_INFRARED-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = 17; sSetting.sSettings[0].dwSettingValue = state; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } -(void)setWiredAlarmInputWithId:(NSString*)contactId password:(NSString*)password state:(NSInteger)state{ static int mesg_id = MESG_ID_SET_WIRED_ALARM_INPUT-1000; if(mesg_id>=MESG_ID_SET_WIRED_ALARM_INPUT){ mesg_id = MESG_ID_SET_WIRED_ALARM_INPUT-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = 18; sSetting.sSettings[0].dwSettingValue = state; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } -(void)setWiredAlarmOutputWithId:(NSString*)contactId password:(NSString*)password state:(NSInteger)state{ static int mesg_id = MESG_ID_SET_WIRED_ALARM_OUTPUT-1000; if(mesg_id>=MESG_ID_SET_WIRED_ALARM_OUTPUT){ mesg_id = MESG_ID_SET_WIRED_ALARM_OUTPUT-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = 19; sSetting.sSettings[0].dwSettingValue = state; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } -(void)setDeviceTimezoneWithId:(NSString *)contactId password:(NSString *)password value:(NSInteger)value{ static int mesg_id = MESG_ID_SET_DEVICE_TIME_ZONE-1000; if(mesg_id>=MESG_ID_SET_DEVICE_TIME_ZONE){ mesg_id = MESG_ID_SET_DEVICE_TIME_ZONE-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = 20; sSetting.sSettings[0].dwSettingValue = value; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } #pragma mark - 获取报警邮箱地址信息 -(void)getAlarmEmailWithId:(NSString *)contactId password:(NSString *)password{ static int mesg_id = MESG_ID_GET_ALARM_EMAIL-1000; if(mesg_id>=MESG_ID_GET_ALARM_EMAIL){ mesg_id = MESG_ID_GET_ALARM_EMAIL-1000; } sMesgEmailType sEmail; sEmail.bCmd = MESG_TYPE_GET_EMIAL; sEmail.bOption = 0x03; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sEmail, sizeof(sMesgEmailType), NULL, 0, 0); mesg_id++; } #pragma mark - 设置报警邮箱地址信息 -(void)setAlarmEmailWithId:(NSString *)contactId password:(NSString *)password email:(NSString *)email smtpServer:(NSString *)smtpServer smtpPort:(int)smtpPort smtpUser:(NSString *)smtpUser smtpPwd:(NSString *)smtpPwd encryptType:(int)encryptType subject:(NSString *)subject content:(NSString *)content isSupportSMTP:(BOOL)isSupportSMTP{ static int mesg_id = MESG_ID_SET_ALARM_EMAIL-1000; if(mesg_id>=MESG_ID_SET_ALARM_EMAIL){ mesg_id = MESG_ID_SET_ALARM_EMAIL-1000; } sMesgEmailType sEmail; sEmail.bCmd = MESG_TYPE_SET_EMIAL; sEmail.bOption = 0x03;//参数bOption只需传0x03(0x03兼容了0x00和0x01,0表示系统默认邮箱) //sEmail.wLen = email.length; //邮件地址 char *tempStr = (char *)[email UTF8String]; memcpy(sEmail.cString,tempStr,strlen(tempStr)); sEmail.cString[strlen(tempStr)] = 0;//结束位 if(isSupportSMTP){//新设备 //SMTP服务器 char *tempStr2 = (char *)[smtpServer UTF8String]; memcpy(sEmail.cSmtpServer,tempStr2,strlen(tempStr2)); sEmail.cSmtpServer[strlen(tempStr2)] = 0;//结束位 //SMTP端口 sEmail.dwSmtpPort = smtpPort; //Smtp账号 char *tempStr3 = (char *)[smtpUser UTF8String]; memcpy(sEmail.cSmtpUser,tempStr3,strlen(tempStr3)); sEmail.cSmtpUser[strlen(tempStr3)] = 0;//结束位 //Smtp密码 unsigned char key[8] = {0x9c, 0xae, 0x6a, 0x5a, 0xe1,0xfc,0xb0, 0x82}; NSString *newPwdString = [NSString stringWithFormat:@"%@##",smtpPwd]; unsigned char *pwd = (unsigned char *)[newPwdString UTF8String]; int len = (int)[newPwdString length];//密码长度 //要加密的密码bSrcPwd unsigned char bSrcPwd[64] = {0}; for(int i=0; i<64; i++){//初始化为'0' bSrcPwd[i] = '0'; } memcpy(bSrcPwd, pwd, len); int encryCount = 0;//表示密码加密多少次才完成 if(len%8 == 0){ encryCount = len/8; }else{ encryCount = len/8 + 1; } sEmail.wLen = encryCount*8; //加密后的字符串 unsigned char encodePwd[len]; unsigned char encodePwdTemp[8]; unsigned char pwdTemp[8]; for(int i=0; i=MESG_ID_GET_BIND_ACCOUNT){ mesg_id = MESG_ID_GET_BIND_ACCOUNT-1000; } sMesgGSetAppIdType sAppId; sAppId.bCmd = MESG_TYPE_GET_APPID; sAppId.bOption = 0; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sAppId, sizeof(sMesgGSetAppIdType), NULL, 0, 0); mesg_id++; } -(void)setBindAccountWithId:(NSString *)contactId password:(NSString *)password datas:(NSMutableArray *)datas{ static int mesg_id = MESG_ID_SET_BIND_ACCOUNT-1000; if(mesg_id>=MESG_ID_SET_BIND_ACCOUNT){ mesg_id = MESG_ID_SET_BIND_ACCOUNT-1000; } NSMutableArray *setDatas = [NSMutableArray arrayWithArray:datas]; int count = [setDatas count]; if(count==0){ [setDatas addObject:[NSNumber numberWithInt:0]]; count = 1; } int ids[count]; for(int i=0;ibCmd = MESG_TYPE_SET_APPID; sAppId->bAppIdCount = count; memcpy(sAppId->dwAppId, ids, count*sizeof(int)); int length = sizeof(sMesgGSetAppIdType)+(count-1)*sizeof(int); int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, sAppId, length, NULL, 0, 0); mesg_id++; } -(void)setRemoteDefenceWithId:(NSString *)contactId password:(NSString *)password state:(NSInteger)state{ static int mesg_id = MESG_ID_SET_REMOTE_DEFENCE-1000; if(mesg_id>=MESG_ID_SET_REMOTE_DEFENCE){ mesg_id = MESG_ID_SET_REMOTE_DEFENCE-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = 0; sSetting.sSettings[0].dwSettingValue = state; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } -(void)setRemoteRecordWithId:(NSString *)contactId password:(NSString *)password state:(unsigned int)state{ static int mesg_id = MESG_ID_SET_REMOTE_RECORD-1000; if(mesg_id>=MESG_ID_SET_REMOTE_RECORD){ mesg_id = MESG_ID_SET_REMOTE_RECORD-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = 4; sSetting.sSettings[0].dwSettingValue = state; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } -(void)setRecordPreWithId:(NSString *)contactId password:(NSString *)password state:(unsigned int)state{ static int mesg_id = MESG_ID_SET_RECORD_PRE-1000; if(mesg_id>=MESG_ID_SET_RECORD_PRE){ mesg_id = MESG_ID_SET_RECORD_PRE-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = 25; sSetting.sSettings[0].dwSettingValue = state; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } -(void)setRecordTypeWithId:(NSString *)contactId password:(NSString *)password type:(unsigned int)type{ static int mesg_id = MESG_ID_SET_RECORD_TYPE-1000; if(mesg_id>=MESG_ID_SET_RECORD_TYPE){ mesg_id = MESG_ID_SET_RECORD_TYPE-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = 3; sSetting.sSettings[0].dwSettingValue = type; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } -(void)setRecordTimeWithId:(NSString *)contactId password:(NSString *)password value:(NSInteger)value{ static int mesg_id = MESG_ID_SET_RECORD_TIME-1000; if(mesg_id>=MESG_ID_SET_RECORD_TIME){ mesg_id = MESG_ID_SET_RECORD_TIME-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = 11; sSetting.sSettings[0].dwSettingValue = value; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } -(void)setRecordPlanTimeWithId:(NSString *)contactId password:(NSString *)password time:(NSInteger)time{ static int mesg_id = MESG_ID_SET_RECORD_PLAN_TIME-1000; if(mesg_id>=MESG_ID_SET_RECORD_PLAN_TIME){ mesg_id = MESG_ID_SET_RECORD_PLAN_TIME-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = 5; sSetting.sSettings[0].dwSettingValue = time; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } -(void)setNetTypeWithId:(NSString *)contactId password:(NSString *)password type:(NSInteger)type{ static int mesg_id = MESG_ID_SET_NET_TYPE-1000; if(mesg_id>=MESG_ID_SET_NET_TYPE){ mesg_id = MESG_ID_SET_NET_TYPE-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = 13; sSetting.sSettings[0].dwSettingValue = type; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } -(void)getWifiListWithId:(NSString *)contactId password:(NSString *)password{ static int mesg_id = MESG_ID_GET_WIFI_LIST-1000; if(mesg_id>=MESG_ID_GET_WIFI_LIST){ mesg_id = MESG_ID_GET_WIFI_LIST-1000; } sMesgGetWifiListType sWifi; sWifi.bCmd = MESG_TYPE_GET_WIFILIST; sWifi.bOption = 0; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sWifi, sizeof(sMesgGetWifiListType), NULL, 0, 0); mesg_id++; } -(void)setWifiWithId:(NSString *)contactId password:(NSString *)password type:(NSInteger)type name:(NSString *)name wifiPassword:(NSString *)wifiPassword{ static int mesg_id = MESG_ID_SET_WIFI-1000; if(mesg_id>=MESG_ID_SET_WIFI){ mesg_id = MESG_ID_SET_WIFI-1000; } sMesgSetWifiListType sWifi; sWifi.bCmd = MESG_TYPE_SET_WIFILIST; sWifi.bOption = 0; sWifi.sPhoneWifiInfo.dwEncType = type; memcpy(sWifi.sPhoneWifiInfo.cESSID, [name UTF8String], [name length]); memcpy(sWifi.sPhoneWifiInfo.cPassword, [wifiPassword UTF8String], [wifiPassword length]); sWifi.sPhoneWifiInfo.cESSID[[name length]] = 0; sWifi.sPhoneWifiInfo.cPassword[[wifiPassword length]] = 0; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sWifi, sizeof(sMesgSetWifiListType), NULL, 0, 0); mesg_id++; } -(void)getDefenceAreaState:(NSString *)contactId password:(NSString *)password{ static int mesg_id = MESG_ID_GET_DEFENCE_AREA_STATE-1000; if(mesg_id>=MESG_ID_GET_DEFENCE_AREA_STATE){ mesg_id = MESG_ID_GET_DEFENCE_AREA_STATE-1000; } sMesgGetAlarmCodeType sCode; sCode.bCmd = MESG_TYPE_GET_ALARMCODE_STATUS; sCode.bOption = 0; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sCode, sizeof(sMesgGetAlarmCodeType), NULL, 0, 0); mesg_id++; } -(void)setDefenceAreaState:(NSString *)contactId password:(NSString *)password group:(NSInteger)group item:(NSInteger)item type:(NSInteger)type{ static int mesg_id = MESG_ID_SET_DEFENCE_AREA_STATE-1000; if(mesg_id>=MESG_ID_SET_DEFENCE_AREA_STATE){ mesg_id = MESG_ID_SET_DEFENCE_AREA_STATE-1000; } sMesgSetAlarmCodeType sCode; sCode.bCmd = MESG_TYPE_SET_ALARMCODE_STATUS; sCode.bOption = 0; sCode.bSetAlarmCodeId = type; sCode.bAlarmCodeCount = 1; sCode.sAlarmCodes[0].dwAlarmCodeID = group; sCode.sAlarmCodes[0].dwAlarmCodeIndex = item; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sCode, sizeof(sMesgSetAlarmCodeType), NULL, 0, 0); mesg_id++; } #pragma mark - 学习对码,添加启用或禁用开关 #pragma mark 获取启用或禁用开关 - (void) getDefenceSwitchStateWithId:(NSString *)contactId password:(NSString *)password { static int mesg_id = MESG_ID_GET_DEFENCE_SWITCH_STATE - 1000; if (mesg_id >= MESG_ID_GET_DEFENCE_SWITCH_STATE) { mesg_id = MESG_ID_GET_DEFENCE_SWITCH_STATE - 1000; } sMesgGetDefenceSwitchType sGetDefenceSwitch; sGetDefenceSwitch.bCmd = MESG_TYPE_GET_DEFENCE_SWITCH_STATE; sGetDefenceSwitch.bOption = 0; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sGetDefenceSwitch, sizeof(sMesgGetDefenceSwitchType), NULL, 0, 0); mesg_id++; } #pragma mark 设置启用或禁用开关 - (void) setDefenceSwitchStateWithId:(NSString *)contactId password:(NSString *)password switchId:(int)switchId alarmCodeId:(int)alarmCodeId alarmCodeIndex:(int)alarmCodeIndex { static int mesg_id = MESG_ID_SET_DEFENCE_SWITCH_STATE - 1000; if (mesg_id >= MESG_ID_SET_DEFENCE_SWITCH_STATE) { mesg_id = MESG_ID_SET_DEFENCE_SWITCH_STATE - 1000; } sMesgSetDefenceSwitchType sSetDefenceSwitch; sSetDefenceSwitch.bCmd = MESG_TYPE_SET_DEFENCE_SWITCH_STATE; sSetDefenceSwitch.bOption = 0; sSetDefenceSwitch.bSetDefenceSetSwitchId = switchId; sSetDefenceSwitch.sAlarmCodes[0].dwAlarmCodeID = alarmCodeId; sSetDefenceSwitch.sAlarmCodes[0].dwAlarmCodeIndex = alarmCodeIndex; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetDefenceSwitch, sizeof(sMesgSetDefenceSwitchType), NULL, 0, 0); mesg_id++; } //初始化设备密码 -(void)setInitPasswordWithId:(NSString *)contactId initPassword:(NSString *)initPassword{ static int mesg_id = MESG_ID_SET_INIT_PASSWORD-1000; if(mesg_id>=MESG_ID_SET_INIT_PASSWORD){ mesg_id = MESG_ID_SET_INIT_PASSWORD-1000; } sMesgSetInitPasswdType sPassword; sPassword.bCmd = MESG_TYPE_SET_INIT_PASSWD; BYTE souceBuf[8]; BYTE desBuf[8]; BYTE key[8] = {0x9c, 0xae, 0x6a, 0x5a, 0xe1,0xfc,0xb0, 0x82}; DWORD password = [initPassword intValue]; memcpy(souceBuf, &password, sizeof(DWORD)); des(souceBuf,desBuf,key,0); memcpy(sPassword.bPasswd, desBuf, 8); int iTargetID = GetIpBy3CIDx(contactId.intValue); //设置初始密码必须用ip地址,所以搜索设备的时候不判断密码标志位 fgP2PSendRemoteMessage(iTargetID, 0, mesg_id, &sPassword, sizeof(sMesgSetInitPasswdType), NULL, 0, 0); mesg_id++; } -(void)checkDeviceUpdateWithId:(NSString *)contactId password:(NSString *)password{ static int mesg_id = MESG_ID_CHECK_DEVICE_UPDATE-1000; if(mesg_id>=MESG_ID_CHECK_DEVICE_UPDATE){ mesg_id = MESG_ID_CHECK_DEVICE_UPDATE-1000; } sMesgUpgType sUpg; sUpg.bCmd = MESG_TYPE_UPG_CHEK_VERSION; sUpg.sRemoteUpgMesg.dwUpgVal = 1; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sUpg, sizeof(sMesgUpgType), NULL, 0, 0); mesg_id++; } -(void)doDeviceUpdateWithId:(NSString *)contactId password:(NSString *)password{ static int mesg_id = MESG_ID_DO_DEVICE_UPDATE-1000; if(mesg_id>=MESG_ID_DO_DEVICE_UPDATE){ mesg_id = MESG_ID_DO_DEVICE_UPDATE-1000; } sMesgUpgType sUpg; sUpg.bCmd = MESG_TYPE_UPG_FILE_TO_DOWNLOAD; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sUpg, sizeof(sMesgUpgType), NULL, 0, 0); mesg_id++; } -(void)cancelDeviceUpdateWithId:(NSString *)contactId password:(NSString *)password{ static int mesg_id = MESG_ID_CANCEL_DEVICE_UPDATE-1000; if(mesg_id>=MESG_ID_CANCEL_DEVICE_UPDATE){ mesg_id = MESG_ID_CANCEL_DEVICE_UPDATE-1000; } sMesgUpgType sUpg; sUpg.bCmd = MESG_TYPE_UPG_FILE_CANCEL_DOWNLOAD; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sUpg, sizeof(sMesgUpgType), NULL, 0, 0); mesg_id++; } -(NSInteger)sendMessageToFriend:(NSString *)contactId message:(NSString *)message{ static int mesg_id = MESG_ID_SEND_MESSAGE-1000; if(mesg_id>=MESG_ID_SEND_MESSAGE){ mesg_id = MESG_ID_SEND_MESSAGE-1000; } char *messageStr = (char*)[message UTF8String]; int length = strlen(messageStr); if(!message||length<=0||length>1024){ return -1; } sMesgStringMesgType sMessage; sMessage.bCmd = MESG_TYPE_MESSAGE; sMessage.bOption = 0; sMessage.wLen = length; memcpy(sMessage.cString, messageStr, length); mesg_id++; fgP2PSendRemoteMessage(contactId.intValue|0x80000000, 0, mesg_id, &sMessage, length+4, sMessage.cString, length, (DWORD)PUSH_MESG_FRIEND); return mesg_id; } -(void)getDeviceInfoWithId:(NSString *)contactId password:(NSString *)password{ static int mesg_id = MESG_ID_GET_DEVICE_INFO-1000; // if(mesg_id == MESG_ID_GET_DEVICE_INFO-1000){ // mesg_id = MESG_ID_GET_DEVICE_INFO-(random()%1000); // } if(mesg_id>=MESG_ID_GET_DEVICE_INFO){ mesg_id = MESG_ID_GET_DEVICE_INFO-1000; } sMesgSysVersionType sVersion; sVersion.bCmd = MESG_TYPE_GET_SYS_VERSION; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sVersion, sizeof(sMesgSysVersionType), NULL, 0, 0); mesg_id++; } //开锁接口 -(void)sendCustomCmdWithId:(NSString *)contactId password:(NSString *)password cmd:(NSString *)cmd{ static int mesg_id = MESG_ID_SEND_CUSTOM_CMD-1000; if(mesg_id>=MESG_ID_SEND_CUSTOM_CMD){ mesg_id = MESG_ID_SEND_CUSTOM_CMD-1000; } char *cmdStr = (char*)[cmd UTF8String]; int length = strlen(cmdStr); BYTE pMessageBody[252] = {0}; pMessageBody[0] = MESG_TYPE_USER_CMD; pMessageBody[1] = 0; pMessageBody[2] = length; pMessageBody[3] = 0; for (int i = 0; i < length; i++) { pMessageBody[4+i] = cmdStr[i]; } int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, pMessageBody, length+4, NULL, 0, 0); mesg_id++; } #pragma mark - 设置GPIO中值 -(void)setGpioCtrlWithId:(NSString *)contactId password:(NSString *)password group:(int)group pin:(int)pin value:(int)value time:(int [])time{ static int mesg_id = MESG_ID_SET_GPIO_CTL-1000; if(mesg_id>=MESG_ID_SET_GPIO_CTL){ mesg_id = MESG_ID_SET_GPIO_CTL-1000; } sMesgSetGpioCtrl sSetGpioCtrl; sSetGpioCtrl.bCmd = MESG_TYPE_SET_GPIO_CTL; sSetGpioCtrl.bOption = 0; sSetGpioCtrl.bGroup = group; sSetGpioCtrl.bPin = pin; sSetGpioCtrl.bValueNs = value; for (int i = 0; i < 8; i++) { sSetGpioCtrl.iTimer_ms[i] = time[i]; } int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetGpioCtrl, sizeof(sMesgSetGpioCtrl), NULL, 0, 0); mesg_id++; } #pragma mark - 灯控制接口-获取灯的状态(开或关) -(void)getLightStateWithDeviceId:(NSString *)contactId password:(NSString *)password{ static int mesg_id = MESG_ID_GET_LIGHT_STATE-1000; if(mesg_id>=MESG_ID_GET_LIGHT_STATE){ mesg_id = MESG_ID_GET_LIGHT_STATE-1000; } BYTE pMessageBody[4]; pMessageBody[0] = MESG_TYPE_GET_SETTING; pMessageBody[1] = 0; pMessageBody[2] = 0; pMessageBody[3] = 0; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, pMessageBody, 4, NULL, 0, 0); mesg_id++; } #pragma mark - 灯控制接口-设置灯的状态(开或关) -(void)setLightStateWithDeviceId:(NSString *)contactId password:(NSString *)password switchState:(int)state{ static int mesg_id = MESG_ID_SET_LIGHT_STATE-1000; if(mesg_id>=MESG_ID_SET_LIGHT_STATE){ mesg_id = MESG_ID_SET_LIGHT_STATE-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = 34;//灯控制接口 sSetting.sSettings[0].dwSettingValue = state; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } #pragma mark - 用户命令无密码验证删除绑定推送ID或者告诉设备端不要再推送门铃 -(void)deleteAlarmPushIDWithId:(NSString *)contactId{//删除绑定的报警推送ID static int mesg_id = MESG_ID_SET_DELETE_ALARM_PUSHID - 1000; if (mesg_id >= MESG_ID_SET_DELETE_ALARM_PUSHID) { mesg_id = MESG_ID_SET_DELETE_ALARM_PUSHID - 1000; } sMesgCustomNoVerifyCmdType sMessage; sMessage.bCmd = MESG_TYPE_CUSTOM_CMD_NO_VERRIFY_SET; sMessage.bOption = 0; sMessage.wLen = sizeof(sMesgCustomNoVerifyCmdType); sMessage.dwMesgVersion = 0; sMessage.sCmdData.dwCmdID = CUSTOMER_CMDNOVER_ID_DEL_ALARM_ACCOUNT; sMessage.sCmdData.dwCmdVal = 0; NSString *password = @"0"; //注意,contactId是3C Id,不可以是IP fgP2PSendRemoteMessage(contactId.intValue, password.intValue, mesg_id, &sMessage, sizeof(sMesgCustomNoVerifyCmdType), NULL, 0, 0); mesg_id++; } #pragma mark - 告诉设备端不要再推送门铃 -(void)stopDoorbellPushWithId:(NSString *)contactId{ static int mesg_id = MESG_ID_SET_STOP_DOORBELL_PUSH - 1000; if (mesg_id >= MESG_ID_SET_STOP_DOORBELL_PUSH) { mesg_id = MESG_ID_SET_STOP_DOORBELL_PUSH - 1000; } sMesgCustomNoVerifyCmdType sMessage; sMessage.bCmd = MESG_TYPE_CUSTOM_CMD_NO_VERRIFY_SET; sMessage.bOption = 0; sMessage.wLen = sizeof(sMesgCustomNoVerifyCmdType); sMessage.dwMesgVersion = 0; sMessage.sCmdData.dwCmdID = CUSTOMER_CMDNOVER_ID_STOP_DOORBELL_PUSH; sMessage.sCmdData.dwCmdVal = 1; NSString *password = @"0"; //注意,contactId是3C Id,不可以是IP fgP2PSendRemoteMessage(contactId.intValue, password.intValue, mesg_id, &sMessage, sizeof(sMesgCustomNoVerifyCmdType), NULL, 0, 0); mesg_id++; } #pragma mark - 获取设备支持的语言,以及当前显示的语言 -(void)getDeviceSupportedLanguageAndCurrentLanguageWithId:(NSString *)contactId password:(NSString *)password{ static int mesg_id = MESG_ID_GET_DEVICE_LANGUAGE - 1000; if (mesg_id >= MESG_ID_GET_DEVICE_LANGUAGE) { mesg_id = MESG_ID_GET_DEVICE_LANGUAGE - 1000; } sMesgDeviceLanguageCmdType sMessage; sMessage.bCmd = MESG_TYPE_GET_DEVICE_LANGUAGE; sMessage.bOption = 0; sMessage.wReserve = 0; sMessage.bSupportLanguageCount = 0; sMessage.bCurLanguage = 0; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sMessage, sizeof(sMesgDeviceLanguageCmdType), NULL, 0, 0); mesg_id++; } #pragma mark - 设置设备当前要显示的语言 -(void)setDeviceCurrentLanguageWithId:(NSString *)contactId password:(NSString *)password currentLanguage:(int)currentLanguage{ static int mesg_id = MESG_ID_SET_DEVICE_LANGUAGE - 1000; if (mesg_id >= MESG_ID_SET_DEVICE_LANGUAGE) { mesg_id = MESG_ID_SET_DEVICE_LANGUAGE - 1000; } sMesgDeviceLanguageCmdType sMessage; sMessage.bCmd = MESG_TYPE_SET_DEVICE_LANGUAGE; sMessage.bOption = 0; sMessage.wReserve = 0; sMessage.bSupportLanguageCount = 0; sMessage.bCurLanguage = currentLanguage;//currentLanguage代表某种语言的数字编号 int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sMessage, sizeof(sMesgDeviceLanguageCmdType), NULL, 0, 0); mesg_id++; } //切换ap/sta模式 -(void)switchApStaModeWithId:(NSString *)contactId password:(NSString *)password{ static int mesg_id = MESG_ID_SWITCH_APSTA_MODE-1000; if(mesg_id>=MESG_ID_SWITCH_APSTA_MODE){ mesg_id = MESG_ID_SWITCH_APSTA_MODE-1000; } sMessageSettingsType sSetting; sSetting.bCmd = MESG_TYPE_SET_SETTING; sSetting.bOption = 0; sSetting.wSettingCount = 1; sSetting.sSettings[0].dwSettingID = MESG_SETTING_ID_SWITCH_APSTA_MODE; sSetting.sSettings[0].dwSettingValue = 1; int iTargetID = GetIpBy3CID(contactId.intValue); fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sSetting, sizeof(sMessageSettingsType), NULL, 0, 0); mesg_id++; } @end