#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只支持868;31支持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