ifish/Ifish/controllers/IfishYooseeFile/IfishYooseeHelper/IfishYooseeP2PCore/mesg.h

1109 lines
32 KiB
Objective-C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

#ifndef __MESG_H_
#define __MESG_H_
#define MAXTYPE_ALARM 8
#define MAX_EMAIL_LEN 32
#define MAX_WIFI_SSID_LEN 128
#define MAX_WIFI_PASSWORD_LEN 128
#define MAX_MESSAGE_LEN 1024
#import "P2PCInterface.h"//door ring push
//setting ID
enum
{
MESG_STTING_ID_DEFENCE,//0 off ; 1 on
MESG_STTING_ID_BUZZER, //0 off; 1 on
MESG_STTING_ID_MOTION_DECT, //0 off; 1 on
MESG_STTING_ID_RECORD_TYPE, //0 Manual; 1 alarm; 2 schedule
MESG_STTING_ID_M_RECORD_ON, // 0 off; 1 on
MESG_STTING_ID_REC_SCHEDULE, //
MESG_STTING_ID_REC_STATUS, //0 off ; 1 on
MESG_STTING_ID_SOS, //0 off ; 1 on
MESG_STTING_ID_FORMAT, //0 PAL, 1 NTSC
MESG_STTING_ID_PASSWD, // buzuo shit bitch
MESG_STTING_ID_APP,
MESG_STTING_ID_ALARM_TIME, // (==11)
MESG_STTING_ID_IPSEL, //(== 12)
MESG_STTING_ID_NETSEL, // 13 //高两位 1只有有线 2只有WIFI 3两者都有 低两个字节
MESG_STTING_ID_VOL, // 14
MESG_STTING_ID_PIC_REVERSE, // 15
MESG_STTING_ID_NUM,
MESG_SETTING_ID_FOCUS_ZOOM=38,//38//0都没有;1只有变倍;2只有变焦;3变倍变焦都有
MESG_SETTING_ID_SWITCH_APSTA_MODE = 39, //切换wifi工作模式 ap/sta
MESG_SETTING_ID_CHECK_APMODE_SUPPORT = 40, //2支持(mode=ap) 1支持(mode!=ap) 0不支持
MESG_SETTING_ID_CHECK_DEVICE_SUBTYPE = 41, //设备子类型如30只支持86831支持868+情景模式32支持868+情景模式+分享)
MESG_SETTING_ID_GET_PRESET_SUPPORT=46,//46获取是否支持预置位功能1支持0不支持
MESG_STTING_ID_MAX = 0xFF,
};
enum{
MESG_SET_OK, // 0
MESG_GET_OK, // 1
MESG_SET_DEFENCE_ERR, // 2
MESG_SET_BUZZER_ERR, // 3
MESG_SET_MOTION_DECT_ERR, // 4
MESG_SET_RECORD_TYPE_ERR, // 5
MESG_SET_M_RECORD_ON_ERR, // 6
MESG_SET_REC_SCHEDULE_ERR, // 7
MESG_SET_REC_STATUS_ERR, // 8
MESG_SET_SOS_ERR, // 9
MESG_SET_FORMAT_ERR, // 10
MESG_SET_PASSWD_ERR, // 11
MESG_SET_APP_ERR, // 12
MESG_SET_ALARM_TIME_ERR, // 13
MESG_SET_DATETIME_ERR, // 14
MESG_SET_EMAIL_ERR, // 15,
MESG_SET_ID_IPSEL_ERR, // 16
MESG_SET_ID_NETSEL_ERR, // 17
MESG_SET_ID_NOTWIFI_ERR, // 18
MESG_SET_ID_WIFI_SIZE_ERR, // 19
MESG_SET_ID_WIFI_PASSWDLEN_ERR, // 20
MESG_SET_ID_WIFI_NOMATCHNAME_ERR, // 21
MESG_SET_ID_VOL_ERR, // 22
MESG_SET_ID_ALARMCODE_ERR, // 23
MESG_SET_ID_LEARN_ALARMCODE_EXIST, // 24
MESG_SET_ID_LEARN_ALARMCODE_LEARNING, // 25
MESG_SET_ID_LEARN_ALARMCODE_TIMEOUT, // 26
MESG_SET_ID_LEARN_ALARMCODE_OTHER_RESON, // 27
MESG_SET_ID_CLEAR_ALARMCODE_FAIL_ERR, // 28
MESG_SET_ID_CLEAR_ALARMCODE_LEARNING, // 29
MESG_SET_ID_CLEAR_ALARMCODE_CLEAR_YET, // 30
MESG_SET_ID_CLEAR_ALARMCODE_OTHER_RESON, // 31
MESG_SET_ID_LEARN_HAV_SAME_RECORD, // 32
MESG_SET_ID_CLEAR_ALARMCODE_SELECT_CLEARYET_ERR, // 33
MESG_SET_ID_LEARN_ALARMCODE_ISLEARNING_ERR, // 34
MESG_SET_ID_LEARN_ALARMCODE_APPTRANS_ERR, // 35
MESG_SET_ID_LEARN_ALARMCODE_SELECT_ERR, // 36
MESG_SET_ID_LEARN_ALARMCODE_INVALID_KEY_ERR, // 37
MESG_SET_ID_LEARN_ALARMCODE_ISNOTLERAN_KEY_ERR, // 38
MESG_SET_APPID_NUMS_ERR, // 39
MESG_SET_APPID_BIG_ERR, //40
MESG_SET_ID_ALARMCODE_UBOOT_VERSION_ERR, // 41
MESG_SET_ID_DRBL_ACK_ERR, // 42
MESG_SET_PASSWD_INIT_YET_ERR, // 43 密码已经被初始化
MESG_SET_DEVICE_NOT_SUPPORT = 0XFF,
};
//报警类型
enum
{
ALARM_TYPE_NONE,
ALARM_TYPE_EXT, //外部报警
ALARM_TYPE_MD, // 移动侦测
ALARM_TYPE_FORCE, // 紧急
ALARM_TYPE_DEBUG, // 调试
ALARM_TYPE_EXT_LINE, // 有线
ALARM_TYPE_LOW_VOL, //6 // 低电压
ALARM_TYPE_PIR, //7 // 人体红外
ALARM_TYPE_DEF_ENABLE, //8 // 布防
ALARM_TYPE_DEF_DISABLE, //9 // 撤防
ALARM_TYPE_BATTERY_LOW_VOL, // 10 电池低电
PARAM_ID_UPDATE_TO_SER, // 11 参数上传服务器
ALARM_TYPE_TH, //12 温湿度
ALARM_TYPE_DOORBELL_PUSH, //13 门铃推送
ALARM_TYPE_FORCE_FROM_KEYPRESS, // 14 按键触发报警(UI 显示紧急报警)
ALARM_TYPE_REC_FAIL, // 15 录像失败
ALARM_TYPE_EMAIL_TOO_OFTEN, // 16 邮箱发送过于频繁
ALARM_TYPE_UART_INPUT, // 17 串口输入报警
ALARM_TYPE_PROBER_FIRE,//18 防火报警
ALARM_TYPE_PROBER_GAS,//19 煤气泄漏
ALARM_TYPE_PROBER_STEAL,//20 防盗报警
ALARM_TYPE_PROBER_AROUND,//21 周界报警
ALARM_TYPE_PROBER_FORCE, // 22
ALARM_TYPE_PROBER_120,//23 医疗求救
ALARM_TYPE_PROBER_PREVENTDISCONNECT,//24 防拆报警
ALARM_TYPE_PROBER_COMMUNICATION_TIMING,//25 定时通讯
ALARM_TYPE_PROBER_LOW_POWER,//26 低电报告
ALARM_TYPE_PROBER_LOW_POWER_RECOVERY,//27 低电恢复报告
ALARM_TYPE_PROBER_POWERON,//28 开机报告
ALARM_TYPE_PROBER_POWEROFF,//29 关机报告
ALARM_TYPE_PROBER_DEF, //30 布防
ALARM_TYPE_PROBER_DEFDIS, //31 撤防
ALARM_TYPE_PROBER_EXT, // 32 门磁报警
ALARM_TYPE_SOUND,//33 声音报警
ALARM_TYPE_PIR1,//34
ALARM_TYPE_REC_ALERT,//35 告警录像
ALARM_TYPE_EXT_ATTACT,//36 外部攻击
ALARM_TYPE_SENSOR_ALARM,//37 传感器报警
ALARM_TYPE_FORCE_SOS,//38 sos
ALARM_TYPE_KEEP_SILENT,//39 silent
ALARM_TYPE_SMOKE_ALARM,//40smoke
ALARM_TYPE_GAS_ALARM,//41gas
ALARM_TYPE_DOOR_MAGNET,//42door magnet
ALARM_TYPE_TEMPTATURE,//43temprature
ALARM_TYPE_HUMIDITY, //44humidity
ALARM_TYPE_PIR_ALARM,//45pir
ALARM_TYPE_UART_REC=46,//46 UART RECORD
ALARM_TYPE_EMERGENCY_CALL, // 47 紧急呼叫
ALARM_TYPE_MAX,
};
enum{
MESG_SET_WORK_MODE_ERROR=10,
MESG_SET_SCHEDULE_WORK_MODE_ARG_ERROR, //11
MESG_DELETE_SCHEDULE_WORK_MODE_ARG_ERROR,//12
MESG_SET_SENSOR_WORK_MODE_ERROR, //13参数错误
MESG_SET_DELETE_ONE_CONTROLER_ERROR,//14遥控器不存在
MESG_SET_DELETE_ONE_SENSOR_ERROR,//15传感器不存在
MESG_CHANGE_CONTROLER_NAME_ERROR,//16遥控器不存在
MESG_CHANGE_SENSOR_NAME_ERROR,//17传感器不存在
MESG_LEARN_SENSOR_ERROR,//18
MESG_SET_SCHEDULE_HAVE_SAME_SCHEDULE,//19
MESG_SENSOR_NOT_LEARN_YET,//20传感器不存在
MESG_CANNOT_SHARE_TO_ITSELF,//21
MESG_DONOT_HAVE_PERMISSION_TO_SHARE,//22
MESG_DONOT_HAVE_PERMISSION_TO_DELETE,//23
MESG_ADMIN_CANNOT_DELETE_ITSELF_BEFORE_MEMBER_BEREMOVE,//24
MESG_MEMBERLIST_IS_EMPTY,//25
MESG_DONOT_HAVE_SUCH_MEMBER,//26
MESG_MEMBER_LIST_FULL,//27
MESG_DONOT_HAVE_SUCH_SPECIAL_TYPE,//28没有这种特殊传感器类型
MESG_DONOT_HAVE_SUCH_SENSOR,//29没有这种传感器类型
};
#define MAX_REMOTE_MESSAGE_NS 16
typedef struct sRemoteMesgRecordsType
{
DWORD dwSrcID;
BOOL fgHasVerifyPassword;
DWORD dwMesgSize;
BYTE bMesgBody[1024];
}PACKED sRemoteMesgRecordsType;
typedef struct sMesgSetInitPasswdType
{
BYTE bCmd; //MESG_TYPE_MESSAGE
BYTE bOption; //0
WORD wLen; //没用
BYTE bPasswd[8]; //密码 加密以后的数据
}PACKED sMesgSetInitPasswdType;
//设置初始化密码用来兼容rtsp密码
typedef struct sMesgSetInitPasswdExtOptType
{
BYTE bCmd; //MESG_TYPE_MESSAGE
BYTE bOption; //0
WORD wLen; //没用
//des(md5x(pwd))
BYTE bPasswd[8]; //密码 加密以后的数据
//这段buffer设置rtsp密码
char cRtspPasswdVerification[32];
//没用
DWORD dwAppid;
//这段密码加密明文
DWORD dwPwdLen;
//des(pwd)
BYTE bEncrtyPwd[32];
}PACKED sMesgSetInitPasswdExtOptType;
typedef struct sMesgGSetAppIdType
{
BYTE bCmd; //MESG_TYPE_MESSAGE
BYTE bOption; //0
BYTE bAppIdMAXCount;
BYTE bAppIdCount; // 1 <= wdwAppIdCount <= 3
DWORD dwAppId[1];
}PACKED sMesgGSetAppIdType;
typedef struct sMesgGetAlarmCodeType
{
BYTE bCmd; //MESG_TYPE_MESSAGE
BYTE bOption; //0
BYTE bAlarmCodeCount; //8
BYTE bAlarmKeySta;
BYTE bAlarmCodeSta[MAXTYPE_ALARM]; // MAXTYPE_ALARM = 8
}PACKED sMesgGetAlarmCodeType;
typedef struct sTimeType{
WORD wYear;
BYTE bMon;
BYTE bDay;
BYTE bHour;
BYTE bMin;
BYTE bSec;
BYTE bmS;
}sTimeType;
typedef struct sAlarmCodeType
{
DWORD dwAlarmCodeID; //1-8
DWORD dwAlarmCodeIndex;//1-8
}PACKED sAlarmCodeType;
typedef struct sMesgAlarmInfoType
{
BYTE bAlarmMesg[4];
sAlarmCodeType sAlarmCodes;
DWORD dwCapNum;//告警抓图数量
sTimeType sAlarmTime;//告警时间
char cAlarmCapDir[64];//告警抓图目录
char cVideoPath[64];//录像告警路径
char bSensorName[16];
DWORD dwDevType;
}PACKED sMesgAlarmInfoType;
//typedef struct sMesgSetAlarmCodeType
//{
// BYTE bCmd; //MESG_TYPE_MESSAGE
// BYTE bOption; //0
// BYTE bSetAlarmCodeId; //0 learn ,1 clear
// BYTE bAlarmCodeCount;// 1 // 1-3
// sAlarmCodeType sAlarmCodes[1]; // MAXTYPE_ALARM = 8
//}PACKED sMesgSetAlarmCodeType; //删除遥控就不能删除房区
typedef struct sMesgSetAlarmCodeType
{
BYTE bCmd; //MESG_TYPE_MESSAGE
BYTE bOption; //0
BYTE bSetAlarmCodeId; //0 learn ,1 clear
BYTE bAlarmCodeCount;// 1 // 1-3
sAlarmCodeType sAlarmCodes[1]; // MAXTYPE_ALARM = 8
}PACKED sMesgSetAlarmCodeType; //删除遥控就不能删除房区
typedef struct sNpcWifiListType
{
BYTE fgReady;
BYTE bWifiApNs; //wifi个数
WORD wCurrentConnSSIDIndex; //当前wifi下标
BYTE bEncTpSigLev[100]; //高四位:类型(0:没有密码 12:有密码) 低四位:信号强度 0-4
char cAllESSID[1]; //WIFI名字
}PACKED sNpcWifiListType;
typedef struct sMesgGetWifiListType
{
BYTE bCmd; //MESG_GET_WIFILIST
BYTE bOption; //0
WORD wLen; //cAllESSID长度
sNpcWifiListType sNpcWifiList;
}PACKED sMesgGetWifiListType;
typedef struct sWIFIInfoType
{
DWORD dwEncType; //(0:没有密码 12:有密码)
char cESSID[MAX_WIFI_SSID_LEN]; //wifi名字
char cPassword[MAX_WIFI_PASSWORD_LEN]; //密码
}sWIFIInfoType;
typedef struct sMesgSetWifiListType
{
BYTE bCmd; //MESG_SET_WIFIList
BYTE bOption; //0
WORD wLen; //1
sWIFIInfoType sPhoneWifiInfo;
}PACKED sMesgSetWifiListType;
typedef struct sSettingType
{
DWORD dwSettingID;
DWORD dwSettingValue;
}PACKED sSettingType;
typedef struct sMessageSettingsType
{
BYTE bCmd;//get set setting
BYTE bOption;// 0
WORD wSettingCount;
sSettingType sSettings[1];
}PACKED sMessageSettingsType;
//修改ipc密码时用这个结构体。用来兼容rtsp的密码 还有nvr密码
typedef struct sMessageSettingsExtOptType
{
BYTE bCmd;
BYTE bOption;
WORD wSettingCount;
sSettingType sSettings[1];
//rtsp密码
char cRtspPasswdVerification[32];
//这段密码加密明文
DWORD dwPwdLen;
//des(pwd)
BYTE bEncrtyPwd[32];
}PACKED sMessageSettingsExtOptType;
typedef struct sMesgEmailType
{
BYTE bCmd; //MESG_TYPE_EMAIL
BYTE bOption; //(0:只获取或设置邮箱地址, 1:获取或设置整个SMTP相关信息)
WORD wLen;//发件邮箱密码长度
char cString[64];//邮箱地址
DWORD dwSmtpPort;//SMTP端口
char cSmtpServer[64];//SMTP服务器(最多支持5个)
char cSmtpUser[64];//SMTP服务器地址
char cSmtpPwd[64];//Smtp密码
char cEmailSubject[64];//Email主题
char cEmailContent[96];//Email内容
BYTE bEncryptType;//加密类型
BYTE bReserve;//根据GET返回值中 bReserver来判断, 如果bReserve =0x01则显示手工设置(固件新版本一律回0x01), 否则不显示
WORD wReserver;//预留
}PACKED sMesgEmailType;
typedef struct sMesgStringMesgType
{
BYTE bCmd; //MESG_TYPE_MESSAGE
BYTE bOption; //0
WORD wLen;
char cString[MAX_MESSAGE_LEN] ;//
}sMesgStringMesgType;
//开锁结构体
typedef struct UserCmdMesg
{
BYTE bCmd;
BYTE bOption;
BYTE len;
BYTE bReseve;
char Data[248];
}PACKED UserCmdMesg;
typedef struct sMesgSysVersionType
{
BYTE bCmd;
BYTE bOption;
WORD wLen;
DWORD dwCurAppVersion;
DWORD dwUbootVersion;
DWORD dwKernelVersion;
DWORD dwRootfsVersion;
DWORD dwRes[4];
}PACKED sMesgSysVersionType;
typedef struct sDateTime
{
WORD wYear;
BYTE bMon;
BYTE bDay;
BYTE bHour;
BYTE bMin;
} sDateTime;
typedef struct sMesgDateTimeType
{
BYTE bCmd; //MESG_TYPE_GET_DATETIME
BYTE bOption; //0
WORD wOption; //0
sDateTime sMesgSysTime;
// sDateTime sMesgSysTime; // 2000-1-1 0:0
}PACKED sMesgDateTimeType;
typedef struct sSDCardInfo{
BYTE bSDCardID;
UINT64 u64SDTotalSpace;
UINT64 u64SDCardFreeSpace;
}PACKED sSDCardInfo;
typedef struct sMesgSDCardInfoType{
BYTE bCommandType;
BYTE bOption;
WORD wSDCardCount;
sSDCardInfo sSDCard[2];
}PACKED sMesgSDCardInfoType;
typedef struct sMesgSDCardFormatType{
BYTE bCommandType;
BYTE bOption;
WORD wRemainByte;
BYTE bSDCardID;
}sMesgSDCardFormatType;
typedef struct sMesgGetDefenceSwitchType{
BYTE bCmd; //MESG_TYPE_MESSAGE
BYTE bOption; //0
BYTE bDefenceSetSwitchCount;
BYTE bReserve; // 保留区
BYTE bDefenceSetSwitch[MAXTYPE_ALARM]; // MAXTYPE = 8
}PACKED sMesgGetDefenceSwitchType;
typedef struct sAlarmCodesType{
DWORD dwAlarmCodeID;// 要设置的防区
DWORD dwAlarmCodeIndex;// 要设置的通道
}PACKED sAlarmCodesType;
typedef struct sMesgSetDefenceSwitchType{
BYTE bCmd; //MESG_TYPE_MESSAGE
BYTE bOption; //0
BYTE bSetDefenceSetSwitchId; // 1 on, 0 off
BYTE bDefenceSetSwitchCount;
sAlarmCodeType sAlarmCodes[1]; // MAXTYPE_ALARM = 8
}PACKED sMesgSetDefenceSwitchType;
typedef struct sMesgGetRecListType
{
BYTE bCmd; //MESG_TYPE_GET_REC_LIST
BYTE bOption; //0
WORD wOption; //0
sDateTime sBeginTime; // 2000-1-1 0:0
sDateTime sEndTime ; // 2100-12-31 23:59
}sMesgGetRecListType;
typedef struct sRecFilenameType
{
WORD wYear;
BYTE bMon; /// (bDiscID<<4)|(bMon) for remote
BYTE bDay;
BYTE bHour;
BYTE bMin;
BYTE bSec;
char cType;//'M','S','A'
}PACKED sRecFilenameType;
typedef struct sMesgRetRecListType
{
BYTE bCmd; //MESG_TYPE_RET_REC_LIST
BYTE bOption0;//0
BYTE bOption1;//0
BYTE bFileNs;//
sRecFilenameType sFileName[1];//files info
}sMesgRetRecListType;
//
typedef struct sMesgAlarmCallType
{
BYTE bCmd; //MESG_TYPE_ALARM_CALL
BYTE bAlarmType;
}sMesgAlarmCallType;
//GPIO口控制
typedef struct sMesgSetGpioCtrl
{
BYTE bCmd; // MESG_TYPE_SET_GPIO_CTL
BYTE bOption; // 0
BYTE bGroup; // GPIO 所属组
BYTE bPin; // GPIO 管脚编号
BYTE bValueNs; // 波形值改变的个数
int iTimer_ms[8]; // 波形依次保持的 时间 以毫秒为单位
}PACKED sMesgSetGpioCtrl;
enum{
LAN_MESG_SET_OK, // 没用
LAN_MESG_GET_OK,
LAN_MESG_GET_SHAKE_SIZE_ERR, // 3
LAN_MESG_GET_DRBL_CHECK_ERR, // 4
LAN_MESG_GET_DRBL_IS_NOT_ASK_ERR, //5
};
enum{
LAN_TRANS_MIN, // 没用
LAN_TRANS_SHAKE_GET, //
LAN_TRANS_SHAKE_RET, //
LAN_TRANS_DRBL_ACK_GET, // 4
LAN_TRANS_DRBL_ACK_RET, // 5
LAN_TRANS_MAX,
};
typedef struct sDeviceInfoType{
DWORD dw3CId; // 设备3c号
DWORD dwDeviceType; // 设备类型 //
BOOL fgPasswdFlag; //设备密码是否已设置 0未设置 1已设置
}sDeviceInfoType;
typedef struct sMesgShakeType{
DWORD dwCmd; // LAN_TRANS_SHAKE_GET
DWORD dwErrNO; // 错误码
DWORD dwStructSize; // 结构体的大小 sizeof(sMesgShakeType) 28
DWORD dwStrCon; // 字符串的个数 0
sDeviceInfoType sDeviceInfo; //设备的信息
}sMesgShakeType;
typedef struct sUpgMesg
{
DWORD dwUpgID;
DWORD dwUpgVal;
}PACKED sUpgMesg;
typedef struct sMesgUpgType
{
BYTE bCmd; //MESG_TYPE_UPG_DEVICE , BYTE bOption; //0
BYTE bOption;
WORD wLen;
sUpgMesg sRemoteUpgMesg;
}PACKED sMesgUpgType;
enum{
CUSTOMER_CMDNOVER_ID_MIN,
CUSTOMER_CMDNOVER_ID_DEL_ALARM_ACCOUNT, // 删除报警推送账号
CUSTOMER_CMDNOVER_ID_STOP_DOORBELL_PUSH = 3, // 告诉设备端不要再推送门铃
};
typedef struct sCmdDataMesg
{
DWORD dwCmdID; // 客户命令选项
DWORD dwCmdVal;
}PACKED sCmdDataMesg;
typedef struct sMesgCustomNoVerifyCmdType
{
BYTE bCmd;
BYTE bOption;
WORD wLen;
DWORD dwMesgVersion;
sCmdDataMesg sCmdData;
}PACKED sMesgCustomNoVerifyCmdType;
typedef struct sTransCheckDeviceWifiModeCmdType
{
DWORD dwCmd;
DWORD dwErrNo;
BYTE bWifiMode;
BYTE bReresve[3];
DWORD dwIp;
DWORD dw3CID;
}PACKED sTransCheckDeviceWifiModeCmdType;
typedef struct sTcpSetWifiCmdType
{
DWORD dwCmd;
DWORD dwErrNo;
BYTE bSetWifiInfo; // 1 set ap wifi 2 set wifi info
BYTE bReresve[3];
sWIFIInfoType sWifiInfo;
}PACKED sTcpSetWifiCmdType;
//设备语言消息结构体
typedef struct sMesgDeviceLanguageCmdType
{
BYTE bCmd;
BYTE bOption;
WORD wReserve;
BYTE bSupportLanguageCount;
BYTE bCurLanguage;
BYTE bLanguageSupport[0];
}PACKED sMesgDeviceLanguageCmdType;
//获取设备当前的模式(如在家模式、外出模式、睡眠模式)
typedef struct sGetCurrentWorkMode
{
BYTE bCmd; //149
BYTE bSubCmd; //9
BYTE bOption; //0
BYTE bCurrentWorkMOde; //0
}PACKED sGetCurrentWorkMode;
//切换当前模式为(在家,外出,睡眠)的其中一种
typedef struct sSettingIpcWorkMode
{
BYTE bCmd;
BYTE bSubCmd;
BYTE bOption;
BYTE bIpcWorkMode;
}PACKED sSettingIpcWorkMode;
//获取ipc设备的防护计划即什么时间段为在家什么时间段外出什么时间段睡眠
typedef struct sScheduleTimeGroup
{
BYTE bWeekDay_EN;//bit7:0 disable bit7:1 this group enable
BYTE bBeginHour;
BYTE bBeginMin;
BYTE bWorkMode;
}PACKED sScheduleTimeGroup;
typedef struct sGetWorkModeSchedule
{
BYTE bCmd;
BYTE bSubCmd;
BYTE bOption;
sScheduleTimeGroup sVarScheduleTimeGroup[6];
}PACKED sGetWorkModeSchedule;
//设置防护计划,可以设定一周哪一天从几点开始进入什么模式
//bit7:1时间组开 0时间组关
//bit0:1周日开 0周日关
//bit1:1周一开 0周一关
//bit2:1周二开 0周二关
//bit3:1周三开 0周三关
//bit4:1周四开 0周四关
//bit5:1周五开 0周五关
//bit6:1周六开 0周六关
//bBeginHour;(防护开始时0~23)
//bBeginMin;防护开始分0~59
//bWorkMode;(防护模式:在家,外出,睡眠 参考附注)
typedef struct sSettingScheduleTimeGroup
{
BYTE bCmd;
BYTE bSubCmd;
BYTE bOption;
BYTE bGroupIndex;
BYTE bWeekDay_EN;//bit7:0 disable bit7:1 this group enable
BYTE bBeginHour;
BYTE bBeginMin;
BYTE bWorkMode;
}PACKED sSettingScheduleTimeGroup;
//将设定的其中一个时间组删除
typedef struct sClearScheduleTimeGroup
{
BYTE bCmd;
BYTE bSubCmd;
BYTE bOption;
BYTE bGroupIndex;
}PACKED sClearScheduleTimeGroup;
//获取所有特殊传感器的设置
typedef struct sGetAllSpecialAlarm
{
BYTE bCmd; //MESG_TYPE_MESSAGE
BYTE bSubCmd;
BYTE bOption; //0
BYTE bLen;
BYTE bAddress[32];//(存放所有数据的首地址)参考数据结构sSpecialAlarmData 每4个字节为一个传感器
BYTE bSpecialPresetPos[8]; //对应特殊传感器预置位值
}PACKED sGetAllSpecialAlarm;
typedef struct sSpecialAlarmData
{
BYTE bSensorType;//参考上面结构
BYTE bSenSorAtHome;
//bit0: 1(推送给app) 0不推送
//bit1: 1(需要抓拍) 0不需要抓拍
//bit2: 1需要录像 0不需要录像
//bit3 (预留)
//bit7:1enable 0 off
//bit4~6: soundType
BYTE bSenSorOutSide;
BYTE bSenSorSleeping;
}PACKED sSpecialAlarmData;
//获取所有传感器的防护计划(已经被学习的遥控或传感器)
typedef struct sGetSenSorWorkMode
{
BYTE bCmd;
BYTE bSubCmd;
BYTE bOption;
BYTE bVersion;
BYTE bControlerCounter;
DWORD dwControlerLen;
BYTE bSensorCounter;
DWORD dwSensorLen;
BYTE bSensorRecode[0];
}PACKED sGetSenSorWorkMode;
//获取所有传感器的防护计划(已经被学习的传感器)
typedef struct sSensorDataToUser
{
BYTE bSensorData[7];
BYTE bSenSorName[16];
BYTE bNameEditFlag;//bNameEditFlag >>0&0x1 0表示名字没有被修改过而设备返回的名字仅是中文;获取探测器信息时里面的bNameEditFlag 取出倒数第2、3位为传感器的开关状态bNameEditFlag >>1&0x3,值为0到3 1表示开 2表示关 3表示半开。
BYTE bScheduleNum;
BYTE bSensorSchedule[24];
}PACKED sSensorDataToUser;
typedef struct sSensorData
{
BYTE bSensorType;
BYTE bData0;
BYTE bData1;
BYTE bData2;
BYTE bSenSorAtHome;
//bit0: 1(推送给app) 0不推送
//bit1: 1(需要抓拍) 0不需要抓拍
//bit2: 1需要录像 0不需要录像
//bit3 (预留)
//bit7:1enable 0 off
//bit4~6: soundType
BYTE bSenSorOutSide;
BYTE bSenSorSleeping;
}PACKED sSensorData;
//获取所有传感器的防护计划(已经被学习的遥控器)
typedef struct sControlerDataToUser
{
BYTE bControlerData[4];
BYTE bControlerName[16];
BYTE bDefaultName; //0表示名字没有被修改过而设备返回的名字仅是中文
}PACKED sControlerDataToUser;
typedef struct sControlerData
{
BYTE bControlerType;
BYTE bData0;
BYTE bData1;
BYTE bData2;
}PACKED sControlerData;
//处理插座(查询,开,关)
/*
bLampStatu:get和set传值
插座1查询2打开3关闭
窗帘1查询2打开3关闭4半开
灯: 1查询2打开3关闭
警号1查询2打开3关闭
*/
/*
bLampStatu:get和set返回值
插座: 1打开成功2关闭成功3查询得到开4查询得到关
1打开成功2关闭成功3查询得到开4查询得到关
警号1打开成功2关闭成功3查询得到开4查询得到关
窗帘1打开成功2关闭成功3查询得到开4查询得到关5查询得到半开6(半开命令)
*/
typedef struct sGetLampStatu
{
BYTE bCmd; //MESG_TYPE_MESSAGE
BYTE bSubCmd;
BYTE bOption; //0
BYTE bLampStatu;
BYTE bLampData[7];
}PACKED sGetLampStatu;
//删除一个遥控器
typedef struct sDeleteOneControler
{
BYTE bCmd;
BYTE bSubCmd;
BYTE bOption;
BYTE bControlerData[4];
}PACKED sDeleteOneControler;
//删除一个传感器
typedef struct sDeleteOneSensor
{
BYTE bCmd;
BYTE bSubCmd;
BYTE bOption;
BYTE bSensorData[4];
}PACKED sDeleteOneSensor;
//修改遥控器名
typedef struct sChangeControlerName
{
BYTE bCmd;
BYTE bSubCmd;
BYTE bOption;
BYTE bControlerData[4];
BYTE bControlerName[16];
}PACKED sChangeControlerName;
//修改传感器名
typedef struct sChangeSensorName
{
BYTE bCmd;
BYTE bSubCmd;
BYTE bOption;
BYTE bSensorData[4];
BYTE bSensorName[16];
}PACKED sChangeSensorName;
//学习传感器或者遥控器
typedef struct sSetIntoLearnState
{
BYTE bCmd;
BYTE bSubCmd;
BYTE bOption;
BYTE bStateValue;
}PACKED sSetIntoLearnState;
//bOption; LEARN_STATE_SUCCESS学习成功返回数据结构如下)
typedef struct sLearnResultBack
{
BYTE bCmd;
BYTE bSubCmd;
BYTE bOption;
BYTE bData[7];
BYTE bName[16];
BYTE bDefaultName; //0表示名字没有被修改过而设备返回的名字仅是中文
BYTE bLampStatu; //插座的状态3查询得到开4查询得到关
}PACKED sLearnResultBack;
//二维码扫描添加设备
typedef struct sMesgQrcodeLearnDevice
{
BYTE bCmd;
BYTE bOption;
BYTE bQrcodeType; // 二维码 类型 433 / 868
BYTE bCodeDeviceType; // 433 : 防区 (type & 0xf0)>> 4 通道 (type & 0x0f) 868: type 传感器类型
DWORD dwCustomerID;
BYTE bCodeDataLen;
BYTE bCodeData[13];
}PACKED sMesgQrcodeLearnDevice;
//传感器工作模式设置
typedef struct sSettingSensorWorkMode
{
BYTE bCmd;
BYTE bSubCmd;
BYTE bOption;
BYTE bSensorType;
BYTE bSensorData0;
BYTE bSensorData1;
BYTE bSensorData2;
BYTE bSenSorAtHome;
BYTE bSenSorOutSide;
BYTE bSenSorSleeping;
}PACKED sSettingSensorWorkMode;
//打开或关闭一个传感器
typedef struct sTurnSensor
{
BYTE bCmd;
BYTE bSubCmd;
BYTE bOption;
BYTE bTurnValue;
BYTE bSensorData[4];
}PACKED sTurnSensor;
//设置特殊传感器
typedef struct sSetOneSpecialAlarm
{
BYTE bCmd; //MESG_TYPE_MESSAGE
BYTE bSubCmd;
BYTE bOption; //0
BYTE bLen;
BYTE bSensorType;
BYTE bSenSorAtHome;
//bit0: 1(推送给app) 0不推送
//bit1: 1(需要抓拍) 0不需要抓拍
//bit2: 1需要录像 0不需要录像
//bit3 (预留)
//bit7:1enable 0 off
//bit4~6: soundType
BYTE bSenSorOutSide;
BYTE bSenSorSleeping;
BYTE bSensorPresetPos;//预置位 2016.7.19
}PACKED sSetOneSpecialAlarm;
//自动变焦,获取和设置变焦镜头马达当前位置 自动变焦的结构体
typedef struct sLensFocusParams
{
BYTE bCmd;//
BYTE bSubCmd;// 0 获取变焦镜头马达当前位置 1 设置变焦镜头马达当前位置
BYTE bOption;// 0
BYTE bParams;// 0
}PACKED sLensFocusParams;
//获取nvr的消息
#define MAX_PWD_LEN 32
#define MAX_COMMON_LEN 24
typedef struct sNvrDevInfoType
{
BYTE bcmd;
BYTE bOption;//0x00
DWORD dwDevType;
DWORD dwIpcDevID;
DWORD dwNvrChannel;
char cNvrDevID[MAX_COMMON_LEN];
char cNvrUserName[MAX_COMMON_LEN];
char cNvrPassword[MAX_PWD_LEN];
//保留字节
BYTE reserve[8];
//连接在nvr上的ipc按通道号排列如果没有则填0
DWORD iIpc3cid[64];
}PACKED sNvrDevInfoType;
//预置位个数消息
typedef struct sMesgPresetMotorPos{
BYTE bCmd;
BYTE bOption; // 0
BYTE bOperation; // 1 -- save PresetNum pos 0 -- run to PresetNum pos
BYTE bPresetNum;
}PACKED sMesgPresetMotorPos;
//设置/获取 报警类型摄像头预置位置
typedef struct sMesgAlarmTypePresetMotorPos{
BYTE bCmd;
BYTE bOption; // 0
BYTE bAlarmOrDefence; // 0 -- alarm 1 -- defence area
BYTE bAlarmType;
BYTE bDefenceArea;
BYTE bChannel;
BYTE bPresetNum;
}PACKED sMesgAlarmTypePresetMotorPos;
typedef struct sAlarmCodeTypeNew
{
BYTE dwAlarmCodeID;
BYTE dwAlarmCodeIndex;
BYTE bNameEditFlag;
BYTE bSensorName[16];
}PACKED sAlarmCodeTypeNew;
typedef struct sMesgGetAlarmCodeTypeNew
{
BYTE bCmd; //MESG_TYPE_MESSAGE
BYTE bSubCmd;
BYTE bOption; //0
BYTE bAlarmCodeCount;
BYTE bAlarmKeySta;
BYTE bAlarmCodeSta[8]; // MAXTYPE_ALARM = 8
BYTE bStructVersion; //0 结构体版本号 一定要读取
BYTE bKeyCounter;//遥控器数量
BYTE bCodeCounter;//传感器数量
DWORD dwAllKeyDataLen;//遥控器总长度
DWORD dwAllCodeDataLen;//传感器总长度
BYTE bAllData[0];// sAlarmCodeTypeNew
}PACKED sMesgGetAlarmCodeTypeNew;
typedef struct sMesgSetAlarmCodeTypeNew
{
BYTE bCmd;
BYTE bSubCmd;
BYTE bOption; //0
BYTE bStructVersion; //0
BYTE dwAlarmCodeID;
BYTE dwAlarmCodeIndex;
BYTE bNameEditFlag; //0 为未修改 1为修改过
BYTE bSensorName[16];
}PACKED sMesgSetAlarmCodeTypeNew;
//定时布撤防bMesg[60]
typedef struct sDefenceGroup //6个字节
{
BYTE bFlag; //bFlag [7]标记该组生效与否1生效0不生效 bFlag[0~6]标记为第几组定时布防范围为0~4最大支持五组
BYTE bWeekDay; //标志生效的时间范围为周日到周六相应位为1生效相应位为0不生效
BYTE bBeginHour; //起始时间,小时
BYTE bBeginMin;//起始时间,分钟
BYTE bEndHour;//结束时间,小时
BYTE bEndMin;//结束时间,分钟
}PACKED sDefenceGroup;
typedef struct sMesgScheduleDefenceType
{
BYTE bCmd;
BYTE bOption;
WORD wGroupCount; //设置定时布防组数每一组的值参考sDefenceGroup结构体
sDefenceGroup defenceGroup[10]; //60个字节 前30个字节真正存储有效信息 为实际的消息
}PACKED sMesgScheduleDefenceType;
typedef struct sSetSensorPresetPos{
BYTE bCmd;
BYTE bSubCmd;//MESG_SUBTYPE_SET_SESOR_PRESET_POS 64
BYTE bOption; //0
BYTE bStructVersion;//0
BYTE bSensorData[4];//传感器特征码
BYTE bPresetPos; //预置位值 1--5
BYTE bMemo;//预留 0位
} PACKED sSetSensorPresetPos;
//2016-7-15 推送控制声音
typedef struct sKeepClientCmd
{
BYTE bCmd;
BYTE bSubCmd;
BYTE bOption;
BYTE bKeepClientValue;
}PACKED sKeepClientCmd;
//2016-7-19 获取指示灯led
typedef struct sGetLedStatu
{
BYTE bCmd;
BYTE bSubCmd;
BYTE bOption;
BYTE bnetLedStatu;
BYTE bDefenseLedStatu;
BYTE bRecLedStatu;
BYTE bAlarmLedStatu;
}PACKED sGetLedStatu;
//2016-7-19 设置指示灯led
typedef struct sControlLed
{
BYTE bCmd;
BYTE bSubCmd;
BYTE bOption;
BYTE bControlCmd;
}PACKED sControlLed;
//全景相机配置信息
typedef struct stFisheyeMsg
{
char liveViewRes[32];//预览分辨率 896*896 1440*1440
char recordRes[32]; //录像分辨率 896*896 1440*1440
unsigned short installType;//安装方式 0吊装 1壁装 2桌面
}PACKED stFisheyeMsg;
typedef struct sMesgFishEyeCfg{
BYTE bCmd; //MESG_TYPE_GET_FISHEYE 228
BYTE bOption; // //置0
stFisheyeMsg fishInfo;
}PACKED sMesgFishEyeCfg;
//预置位转动好提示信息
typedef struct sMesgPresetOkNotice
{
BYTE bCmd; //MESG_TYPE_MAIN_NEED_PASSPWD=223
BYTE bSubCmd; //17
BYTE bOption; //0
BYTE bPresetNum;//某一个预置位转动到指定位置的预置位信息 0-4
char cAlarmCapDir[64]; //图片路径
}PACKED sMesgPresetOkNotice;
/*
实现功能:
1. 当手机监控的时候设备端发送录像状态是否在录像、TF卡状态是否存在SD卡的信息给手机。
2. 当状态发生变化的时候,重新发送一次。
3. 同时多路手机监控,会向每个手机端发送信息(当一个手机开始监控时,设备会将信息同时发送到所有监控的手机端)
*/
typedef struct sMesgRecordState
{
BYTE bCmd; //MESG_TYPE_RET_RECORD_STATE = 237
BYTE bOption;//0
BYTE bSDState;//0 no SD card, 1 SD plug in
BYTE bRecordState;//0 record off, 1 record on
}PACKED sMesgRecordState;
#endif