ifish/Ifish/controllers/IfishYooseeFile/IfishYooseeHelper/P2PClient.m

4046 lines
177 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// 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;i<count;i++){
//离线的设备和IP添加的设备的state = 0 //IP添加设备
unsigned int state = (unsigned int)pFriends->bStatus[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都是2CONTACT_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<P2PClientDelegate>)delegate
{
_delegate = delegate;
}
- (void)setPlaybackDelegate:(id<P2PPlaybackDelegate>)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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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&&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;i<sRetRec->bFileNs;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;i<sRetRec->bFileNs;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;i<pSetting->wSettingCount;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时表示不支持SMTP1时表示支持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; j<pEmail->wLen; 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; i<encryCount; i++){
memset(pwdTemp, 0, sizeof(pwdTemp));
memcpy(pwdTemp, encodePwd + i * 8, 8);
memset(decodePwdTemp, 0, sizeof(decodePwdTemp));
des(pwdTemp, decodePwdTemp, decodeKey, 0);//对密文进行解密
memcpy(decodePwd + i * 8, decodePwdTemp, 8);
}
NSMutableString *decodeString = [NSMutableString stringWithCapacity:0];
for(int i=0; i<encryCount*8; i++){
[decodeString appendFormat:@"%c",decodePwd[i]];//明文字符串
}
NSArray *smtpPwdArr = [decodeString componentsSeparatedByString:@"##"];
//有效的明文密码smtpPwd
NSString *smtpPwd = [NSString stringWithFormat:@"%@",smtpPwdArr[0]];
//加密类型
NSNumber *encryptType = [NSNumber numberWithInt:pEmail->bEncryptType];
//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;i<pAppId->bAppIdCount;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;i<sList->bWifiApNs;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;i<pWifi->wLen;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;i<pCode->bAlarmCodeCount;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;i<pSwitchState->bDefenceSetSwitchCount;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; i<sMessage->bSupportLanguageCount; 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; i<sMessage->bSupportLanguageCount; 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];
//interval1或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只需传0x030x03兼容了0x00和0x010表示系统默认邮箱
//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<encryCount; i++){
memset(pwdTemp, 0, sizeof(pwdTemp));
memcpy(pwdTemp, bSrcPwd + i * 8, 8);
memset(encodePwdTemp, 0, sizeof(encodePwdTemp));
des(pwdTemp, encodePwdTemp, key, 1);
memcpy(encodePwd + i * 8, encodePwdTemp, 8);
}
for(int i=0; i<encryCount*8; i++){
sEmail.cSmtpPwd[i] = encodePwd[i];
}
sEmail.cSmtpPwd[encryCount*8] = 0;//结束位
//加密类型
sEmail.bEncryptType = encryptType;
//主题内容的UI没有实现只在此传参测试
//主题 格式通常是Attention:XXXX:xxxx alarm!
//XXXXxxxx是加入3CID号和告警类型的信息
char *subjectTemp = (char *)[subject UTF8String];
memcpy(sEmail.cEmailSubject,subjectTemp,strlen(subjectTemp));
sEmail.cEmailSubject[strlen(subjectTemp)] = 0;//结束位
//内容
//长度小于100字符,英文
char *contentTemp = (char *)[content UTF8String];
memcpy(sEmail.cEmailContent,contentTemp,strlen(contentTemp));
sEmail.cEmailContent[strlen(contentTemp)] = 0;//结束位
//针对新设备结构体长度sizeof(sMesgEmailType)
int iTargetID = GetIpBy3CID(contactId.intValue);
fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sEmail, sizeof(sMesgEmailType), NULL, 0, 0);
}else{
//针对旧设备结构体长度36
int iTargetID = GetIpBy3CID(contactId.intValue);
fgP2PSendRemoteMessage(iTargetID, password.intValue, mesg_id, &sEmail, 36, NULL, 0, 0);
}
mesg_id++;
}
-(void)getBindAccountWithId:(NSString *)contactId password:(NSString *)password{
static int mesg_id = MESG_ID_GET_BIND_ACCOUNT-1000;
if(mesg_id>=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;i<count;i++){
NSNumber *bindId = [setDatas objectAtIndex:i];
ids[i] = [bindId intValue];
}
BYTE buffer[256];
sMesgGSetAppIdType *sAppId = (sMesgGSetAppIdType*)buffer;
sAppId->bCmd = 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