简体中文

公版IO Command定义

星空无限传媒xk8027-高清全集免费看

一、说明

本文档详细描述了IPCAM设备的IOCtrl命令集,包括命令宏定义、数据流向、功能说明及数据结构定义,适用于APP与IPCAM设备之间的P2P通信开发。

二、命令详情

(一)呼叫设备开始传送Video Frame
命令宏定义:IOTYPE_USER_IPCAM_START = 0x01FF;
数据流向:APP → Device
功能说明:APP告知Device开始发送视频数据。
数据结构:
typedef struct{    unsigned int channel;           // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlAVStream;
(二)呼叫设备停止传送Video Frame
命令宏定义:IOTYPE_USER_IPCAM_STOP = 0x02FF;
数据流向:APP → Device
功能说明:APP告知Device停止发送视频数据。
数据结构:
typedef struct{    unsigned int channel;         // Camera Index    unsigned char reserved[4]; } SMsgAVIoctrlAVStream;
(三)呼叫设备开始接收Video Frame
命令宏定义:IOTYPE_USER_IPCAM_START_CLIENT = 0x03FF;
数据流向:APP → Device
功能说明:APP告知Device开始接收视频数据。
数据结构:
typedef struct{    unsigned int channel;           // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlAVStream;
(四)呼叫设备停止接收Video Frame
命令宏定义:IOTYPE_USER_IPCAM_STOP_CLIENT = 0x04FF;
数据流向:APP → Device
功能说明:APP告知Device停止接收视频数据。
数据结构:
typedef struct{    unsigned int channel;         // Camera Index    unsigned char reserved[4]; } SMsgAVIoctrlAVStream;
(五)呼叫设备开始传送Audio Frame
命令宏定义:IOTYPE_USER_IPCAM_AUDIOSTART = 0x0300;
数据流向:APP → Device
功能说明:APP告知Device开始发送音频数据。
数据结构:
typedef struct{    unsigned int channel;         // Camera Index    unsigned char reserved[4]; } SMsgAVIoctrlAVStream;
(六)呼叫设备停止传送Audio Frame
命令宏定义:IOTYPE_USER_IPCAM_AUDIOSTOP = 0x0301;
数据流向:APP → Device
功能说明:APP告知Device停止发送音频数据。
数据结构:
typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; } SMsgAVIoctrlAVStream;
(七)设定设备SD卡录像模式
命令宏定义:请求(IOTYPE_USER_IPCAM_SETRECORD_REQ = 0x0310) | 响应(IOTYPE_USER_IPCAM_SETRECORD_RESP = 0x0311)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device要设置设备SD卡录像模式,Device告知App设置结果。
数据结构:
// 枚举定义 typedef enum{    AVIOTC_RECORDTYPE_OFF = 0x00,    AVIOTC_RECORDTYPE_FULLTIME = 0x01,    AVIOTC_RECORDTYPE_ALARM = 0x02,    AVIOTC_RECORDTYPE_MANUAL = 0x03 }ENUM_RECORD_TYPE; // 请求结构 typedef struct{    unsigned int channel;           // Camera Index    unsigned int recordType;        // 参考ENUM_RECORD_TYPE    unsigned char reserved[4]; }SMsgAVIoctrlSetRecordReq, SMsgAVIoctrlGetRecordResq; // 响应结构 typedef struct{    int result;                     // 0:成功; otherwise: 失败;    unsigned char reserved[4]; }SMsgAVIoctrlSetRecordResp;
(八)获取设备目前SD卡录像模式
命令宏定义:请求(IOTYPE_USER_IPCAM_GETRECORD_REQ = 0x0312) | 响应(IOTYPE_USER_IPCAM_GETRECORD_RESP = 0x0313)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device要获取设备SD卡录像模式,Device将录像类型配置回传给App。
数据结构:
// 枚举定义 typedef enum{    AVIOTC_RECORDTYPE_OFF = 0x00,    AVIOTC_RECORDTYPE_FULLTIME = 0x01,    AVIOTC_RECORDTYPE_ALARM = 0x02,    AVIOTC_RECORDTYPE_MANUAL = 0x03 }ENUM_RECORD_TYPE; // 请求结构 typedef struct{    unsigned int channel;         // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetRecordReq; // 响应结构 typedef struct{    unsigned int channel;           // Camera Index    unsigned int recordType;        // 参考ENUM_RECORD_TYPE    unsigned char reserved[4]; }SMsgAVIoctrlSetRecordReq, SMsgAVIoctrlGetRecordResq;
(九)获取设备事件列表
命令宏定义:请求(IOTYPE_USER_IPCAM_LISTEVENT_REQ = 0x0318) | 响应(IOTYPE_USER_IPCAM_LISTEVENT_RESP = 0x0319)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device要获取设备事件列表,Device将录像列表回传给App。
数据结构:
// 时间结构 typedef struct{    unsigned short year;       // 年份数    unsigned char month;       // 自一月以来的月数,范围为1到12    unsigned char day;         // 每月的日期,范围为1到31    unsigned char wday;        // 自星期日以来的天数,范围为0到6(星期日=0)    unsigned char hour;        // 午夜之后的小时数,范围为0到23    unsigned char minute;      // 小时后的分钟数,范围为0到59    unsigned char second;      // 分钟后的秒数,范围为0到59 }STimeDay; // 事件类型枚举 typedef enum{    AVIOCTRL_EVENT_ALL = 0x00,                 // 所有事件类型    AVIOCTRL_EVENT_MOTI = 0x01,                // 移动侦测    AVIOCTRL_EVENT_VIDEOLOST = 0x02,           // 视频遗失    AVIOCTRL_EVENT_IOALARM = 0x03,             // IO报警    AVIOCTRL_EVENT_MOTI_END = 0x04,            // 移动侦测结束    AVIOCTRL_EVENT_VIDEORESUME = 0x05,         // 视频恢复    AVIOCTRL_EVENT_IOALARMPASS = 0x06,         // IO报警结束    AVIOCTRL_EVENT_MOVIE = 0x07,               // 影片    AVIOCTRL_EVENT_TIME_LAPSE = 0x08,          // 延时拍摄    AVIOCTRL_EVENT_EMERGENCY = 0x09,           // 紧急事件    AVIOCTRL_EVENT_EXPT_REBOOT = 0x10,         // 系统异常重启    AVIOCTRL_EVENT_SDFAULT = 0x11,             // SD卡错误    AVIOCTRL_EVENT_FULLTIME_RECORDING = 0x12,  // 全时录像    AVIOCTRL_EVENT_PIR = 0x13,                 // PIR侦测    AVIOCTRL_EVENT_RINGBELL = 0x14,            // 门铃呼叫    AVIOCTRL_EVENT_SOUND = 0x15,               // 声音    AVIOCTRL_EVENT_HUMANOID_DETECTION = 0x16,  // 人形侦测    AVIOCTRL_EVENT_CRY = 0x17,                 // 哭声侦测    AVIOCTRL_EVENT_FALL = 0x18,                // 跌倒侦测    AVIOCTRL_EVENT_FACE = 0x19,                // 人脸侦测    AVIOCTRL_EVENT_DEVICE_SHARE = 0x20,        // 设备分享    AVIOCTRL_EVENT_ABNORMAL_NOISE = 0x21,       // 异响侦测    AVIOCTRL_EVENT_SUBSCRIPTI_SUCCESS = 0x22,  // 订阅成功    AVIOCTRL_EVENT_SUBSCRIPTI_EXPIRE = 0x23,   // 订阅过期    AVIOCTRL_EVENT_FW_UPGRADE = 0x24,          // 版本更新    AVIOCTRL_EVENT_NOTAPPEAR = 0x25,           // 未出现提醒    AVIOCTRL_EVENT_INTELLIGENT_WATCHER = 0x26, // 智能看家    AVIOCTRL_EVENT_REGI = 0x27,                // 区域入侵    AVIOCTRL_EVENT_ELECTR = 0x28,              // 电子围栏    AVIOCTRL_EVENT_TELEPH = 0x29,              // 电话告警    AVIOCTRL_EVENT_TOY = 0x37,                 // 玩具通知    AVIOCTRL_EVENT_PET = 0x40,                 // 宠物侦测    AVIOCTRL_EVENT_REMOTE_LOGIN = 0x48,        // 异地登录    AVIOCTRL_EVENT_VIDEO_CALL = 0x66,          // 视频呼叫    AVIOCTRL_EVENT_DEVICE_OFFLINE = 0x6F,      // 设备离线    AVIOCTRL_EVENT_USER_CALL = 0x7D0           // 门铃呼叫 }ENUM_EVENTTYPE; // 事件结构 typedef struct{    STimeDay stTime;    unsigned char event;        // 参考ENUM_EVENTTYPE    unsigned char status;       // 0x00:未读取 0x01:已读取 0x02:无录像    unsigned short duration;    // 事件持续时间(秒) }SAvEvent; // 请求结构 typedef struct{    unsigned int channel;       // Camera Index    STimeDay stStartTime;       // 搜寻起始时间(修正:原TimeDay应为STimeDay)    STimeDay stEndTime;         // 搜寻结束时间    unsigned char event;        // 事件类型,参考ENUM_EVENTTYPE    unsigned char status;       // 0x00:未读取 0x01:已读取 0x02:无录像    unsigned char reserved[2]; }SMsgAVIoctrlListEventReq; // 响应结构 typedef struct{    unsigned int channel;       // Camera Index    unsigned int total;         // 搜索的总事件数    unsigned char index;        // 数据包索引(0,1,2...)    unsigned char endflag;      // 1表示最后一个数据包    unsigned char count;        // 此封包中的事件数    unsigned char reserved[1];    SAvEvent stEvent[0];        // 事件数据起始地址 }SMsgAVIoctrlListEventResp;
(十)事件回播控制播放
命令宏定义:请求(IOTYPE_USER_IPCAM_RECORD_PLAYCTRL_REQ = 0x031A) | 响应(IOTYPE_USER_IPCAM_RECORD_PLAYCTRL_RESP = 0x031B)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device要进行录像事件回放,Device将录像回放结果回传给App(APP收固定字节长度)。
数据结构:
// 播放控制枚举 typedef enum{    AVIOCTRL_RECORD_PLAY_PAUSE = 0x00,    AVIOCTRL_RECORD_PLAY_STOP = 0x01,    AVIOCTRL_RECORD_PLAY_STEPFORWARD = 0x02,    AVIOCTRL_RECORD_PLAY_STEPBACKWARD = 0x03,    AVIOCTRL_RECORD_PLAY_FORWARD = 0x04,    AVIOCTRL_RECORD_PLAY_BACKWARD = 0x05,    AVIOCTRL_RECORD_PLAY_SEEKTIME = 0x06,    AVIOCTRL_RECORD_PLAY_END = 0x07,    AVIOCTRL_RECORD_PLAY_START = 0x10,    AVIOCTRL_RECORD_PLAY_NEXT = 0xf0,    AVIOCTRL_RECORD_PLAY_IFRAME = 0xf1 }ENUM_PLAYCONTROL; // 请求结构 typedef struct{    unsigned int channel;       // Camera Index    unsigned int command;       // 播放指令,参考ENUM_PLAYCONTROL    unsigned int Param;         // 指令参数,用户自定义    STimeDay stTimeDay;         // 事件列表起始时间    unsigned char endflag;      // 0:APP播放完毕 1:web继续播放下一个    unsigned char downloadFlag; // 0:回放模式 1:下载模式    unsigned char reserved[2]; } SMsgAVIoctrlPlayRecordReq; // 响应结构 typedef struct{    unsigned int command;       // 播放指令,参考ENUM_PLAYCONTROL    int result;                 // result>0:回放通道ID; result<0:异常(-1:回放异常,-2:超出最大连接数)    unsigned int size;          // 事件回放文件大小    unsigned char respond;    unsigned char reserved[3]; } SMsgAVIoctrlPlayRecordResp;                
(十一)设置设备解析度
命令宏定义:请求(IOTYPE_USER_IPCAM_SETSTREAMCTRL_REQ = 0x0320) | 响应(IOTYPE_USER_IPCAM_SETSTREAMCTRL_RESP = 0x0321)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device要设置设备的解析度,Device告知APP解析度设置结果。
数据结构:
// 画质等级枚举 typedef enum{    AVIOCTRL_QUALITY_UNKNOWN = 0x00,    AVIOCTRL_QUALITY_MAX = 0x01,    AVIOCTRL_QUALITY_HIGH = 0x02,    AVIOCTRL_QUALITY_MIDDLE = 0x03,    AVIOCTRL_QUALITY_LOW = 0x04,    AVIOCTRL_QUALITY_MIN = 0x05 }ENUM_QUALITY_LEVEL; // 请求结构 typedef struct{    unsigned int channel;       // Camera Index    unsigned char quality;      // 参考ENUM_QUALITY_LEVEL    unsigned char reserved[3]; } SMsgAVIoctrlSetStreamCtrlReq; // 响应结构(修正:原命名错误) typedef struct{    unsigned int result;        // 0: 成功; otherwise: 失败    unsigned char reserved[4]; } SMsgAVIoctrlSetStreamCtrlResp;
(十二)获取设备目前解析度
命令宏定义:请求(IOTYPE_USER_IPCAM_GETSTREAMCTRL_REQ = 0x0322) | 响应(IOTYPE_USER_IPCAM_GETSTREAMCTRL_RESP = 0x0323)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device要获取设备目前的解析度,Device将设备解析度配置回传给App。
数据结构:
// 请求结构 typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetStreamCtrlReq; // 响应结构 typedef struct{    unsigned int channel;       // Camera Index    unsigned char quality;      // 参考ENUM_QUALITY_LEVEL    unsigned char reserved[3]; } SMsgAVIoctrlSetStreamCtrlReq, SMsgAVIoctrlGetStreamCtrlResp;
(十三)设置设备位移侦测之灵敏度
命令宏定义:请求(IOTYPE_USER_IPCAM_SETMOTION_DETECT_REQ = 0x0324) | 响应(IOTYPE_USER_IPCAM_SETMOTION_DETECT_RESP = 0x0325)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device要设置设备位移侦测的灵敏度,Device告知APP设置结果。
数据结构:
// 请求结构 typedef struct{    unsigned int channel;               // Camera Index    unsigned int sensitivity;           // 0(禁用)~100(最大):0=关闭,25=低,50=中,75=高,100=最高 }SMsgAVIoctrlSetMotionDetectReq, SMsgAVIoctrlGetMotionDetectResp; // 响应结构 typedef struct{    int result;                         // 0: 成功; otherwise: 失败    unsigned char reserved[4]; }SMsgAVIoctrlSetMotionDetectResp;
(十四)获取设备目前位移侦测之灵敏度
命令宏定义:请求(IOTYPE_USER_IPCAM_GETMOTION_DETECT_REQ = 0x0326) | 响应(IOTYPE_USER_IPCAM_GETMOTION_DETECT_RESP = 0x0327)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device要获取设备位移侦测的灵敏度,Device将配置回传给App。
数据结构:
// 请求结构 typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; } SMsgAVIoctrlGetMotionDetectReq; // 响应结构 typedef struct{    unsigned int channel;               // Camera Index    unsigned int sensitivity;           // 0(禁用)~100(最大):0=关闭,25=低,50=中,75=高,100=最高 }SMsgAVIoctrlSetMotionDetectReq, SMsgAVIoctrlGetMotionDetectResp;
(十五)获取目前设备通道数
命令宏定义:请求(IOTYPE_USER_IPCAM_GETSUPPORTSTREAM_REQ = 0x0328) | 响应(IOTYPE_USER_IPCAM_GETSUPPORTSTREAM_RESP = 0x0329)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device要获取目前设备频道数,Device将配置回传给App。
数据结构:
// 流定义结构 typedef struct{    unsigned short index;       // 设备使用的stream index    unsigned short channel;     // AVAPIs使用的channel index    char reserved[4]; }SStreamDef; // 请求结构 typedef struct{    unsigned char reserved[4]; }SMsgAVIoctrlGetSupportStreamReq; // 响应结构 typedef struct{    unsigned int number;        // 可支持的stream数量    SStreamDef streams[0]; }SMsgAVIoctrlGetSupportStreamResp;
(十六)获取设备音讯格式
命令宏定义:请求(IOTYPE_USER_IPCAM_GETAUDIOOUTFORMAT_REQ = 0x032A) | 响应(IOTYPE_USER_IPCAM_GETAUDIOOUTFORMAT_RESP = 0x032B)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device要获取设备音频格式,Device将音频格式回传给App。
数据结构:
// 采样率枚举 typedef enum{    AUDIO_SAMPLE_8K = 0,    AUDIO_SAMPLE_11K = 1,    AUDIO_SAMPLE_12K = 2,    AUDIO_SAMPLE_16K = 3,    AUDIO_SAMPLE_22K = 4,    AUDIO_SAMPLE_24K = 5,    AUDIO_SAMPLE_32K = 6,    AUDIO_SAMPLE_44K = 7,    AUDIO_SAMPLE_48K = 8 }Sample_Rate; // 编码ID枚举 typedef enum{    MEDIA_CODEC_UNKNOWN = 0x00,    MEDIA_CODEC_VIDEO_MPEG4 = 0x4C,    // 76    MEDIA_CODEC_VIDEO_H263 = 0x4D,     // 77    MEDIA_CODEC_VIDEO_H264 = 0x4E,     // 78    MEDIA_CODEC_VIDEO_MJPEG = 0x4F,    // 79    MEDIA_CODEC_VIDEO_HEVC = 0x50,     // 80    MEDIA_CODEC_AUDIO_AAC_RAW = 0x86,  // 134    MEDIA_CODEC_AUDIO_AAC_ADTS = 0x87, // 135    MEDIA_CODEC_AUDIO_AAC_LATM = 0x88, // 136    MEDIA_CODEC_AUDIO_G711U = 0x89,    // 137    MEDIA_CODEC_AUDIO_G711A = 0x8A,    // 138    MEDIA_CODEC_AUDIO_ADPCM = 0x8B,    // 139    MEDIA_CODEC_AUDIO_PCM = 0x8C,      // 140    MEDIA_CODEC_AUDIO_SPEEX = 0x8D,    // 141    MEDIA_CODEC_AUDIO_MP3 = 0x8E,      // 142    MEDIA_CODEC_AUDIO_G726 = 0x8F      // 143 }CodecId; // 位深度枚举 typedef enum{    AUDIO_DATABITS_8 = 0,    AUDIO_DATABITS_16 = 1,    AUDIO_DATABITS_24 = 2,    AUDIO_DATABITS_32 = 3,    AUDIO_DATABITS_40 = 4 }Bitdata; // Bit Depth // 请求结构 typedef struct{    unsigned int channel;       // camera index    char reserved[4]; }SMsgAVIoctrlGetAudioOutFormatReq; // 响应结构 typedef struct{    unsigned int channel;       // camera index    int format;                 // 参考ENUM_CODECID in AVFRAMEINFO.h    char sample_rate;    char bitdata;    char channels;              // 可支持的通道数量    char avservchannel;         // 0:子通道;1:主通道;默认0 }SMsgAVIoctrlGetAudioOutFormatResp;
(十七)获取设备信息
命令宏定义:请求(IOTYPE_USER_IPCAM_DEVINFO_REQ = 0x0330) | 响应(IOTYPE_USER_IPCAM_DEVINFO_RESP = 0x0331)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device要获取设备资讯,Device将设备资讯回传给App。
数据结构:
// 请求结构 typedef struct{    unsigned char reserved[4]; }SMsgAVIoctrlDeviceInfoReq; // 响应结构 typedef struct{    unsigned char model[16];    unsigned char vendor[16];    unsigned int version;    unsigned int channel;       // 保留    unsigned int total;         // MBytes, sdcard总空间    unsigned int free;          // MBytes, sdcard可用空间    unsigned int company;       // 参考OTA上的公司名    unsigned char reserved[4]; }SMsgAVIoctrlDeviceInfoResp;
(十八)变更设备密码
命令宏定义:请求(IOTYPE_USER_IPCAM_SETPASSWORD_REQ = 0x0332) | 响应(IOTYPE_USER_IPCAM_SETPASSWORD_RESP = 0x0333)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device要变更设备密码,Device告知APP变更结果。
数据结构:
// 请求结构 typedef struct{    char oldpasswd[32];         // 旧密码    char newpasswd[32];         // 新密码 }SMsgAVIoctrlSetPasswdReq; // 响应结构 typedef struct{    int result;                 // 0x00:成功, 否则失败    unsigned char reserved[4]; }SMsgAVIoctrlSetPasswdResp;
(十九)事件回放进度控制
命令宏定义:获取时长(0x033A/0x033B) | 设置进度(0x033C/0x033D)
数据流向:获取时长(APP→Device/Device→APP) | 设置进度(APP→Device/Device→APP)
功能说明:获取事件时长信息(视频流时间戳为UTC格式);从指定时间播放(App不发送0x2ff停止视频流)。
数据结构:
// 获取时长请求结构 typedef struct{    unsigned int channel;       // Camera Index    STimeDay stTimeDay;         // 事件的时间长度    unsigned char reserved[4]; }SMsgAVIoctrlGetPlaybackReq; // 获取时长响应结构 typedef struct{    unsigned int videoTime;     // 事件视频时间(秒)    unsigned long size;         // 事件大小(字节)    unsigned char reserved[4]; }SMsgAVIoctrlGetPlaybackResp; // 设置进度请求结构 typedef struct{    unsigned int channel;       // Camera Index    STimeDay stTimeDay;         // 事件的时间长度    unsigned int progressTime;  // 事件进度时间(秒)    unsigned char reserved[4]; }SMsgAVIoctrlSetRecordProgessReq; // 设置进度响应结构(修正:原拼写错误) typedef struct{    unsigned char result;       // 0:成功;otherwise:失败    unsigned char reserved[3]; }SMsgAVIoctrlSetRecordProgressResp;
(二十)获取设备周围Wifi列表
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_WIFI_LIST_REQ = 0x0340) | 响应(IOTYPE_USER_IPCAM_GET_WIFI_LIST_RESP = 0x0341)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device要获取周围可用的Wifi列表,Device搜索附近Wifi并将列表信息回传给App。
数据结构:
// Wifi信息结构 typedef struct{    char ssid[32];              // Wifi名称    char bssid[18];             // Wifi物理地址(MAC)    unsigned char rssi;         // 信号强度(0-100)    unsigned char encrypt;      // 加密方式:0=无加密,1=WEP,2=WPA,3=WPA2,4=WPA/WPA2混合    unsigned char channel;      // 信道号    unsigned char reserved[1]; }SWifiInfo; // 请求结构 typedef struct{    unsigned char reserved[4]; }SMsgAVIoctrlGetWifiListReq; // 响应结构 typedef struct{    unsigned char count;        // 搜索到的Wifi数量    unsigned char reserved[3];    SWifiInfo wifiInfo[0];      // Wifi信息列表 }SMsgAVIoctrlGetWifiListResp;
(二十一)设定设备的Wifi网络
命令宏定义:请求(IOTYPE_USER_IPCAM_SETWIFI_REQ = 0x0342) | 响应(IOTYPE_USER_IPCAM_SETWIFI_RESP = 0x0343)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device要设置设备的wifi,Device告知APP设置设备wifi的结果。
数据结构:
// 请求结构 typedef struct{    unsigned char ssid[32];     // 连接的WiFi SSID    unsigned char password[32]; // WiFi SSID 密码    unsigned char mode;         // 参考ENUM_AP_MODE    unsigned char enctype;      // 参考ENUM_AP_ENCTYPE    unsigned char reserved[10]; }SMsgAVIoctrlSetWifiReq; // 响应结构 typedef struct{    int result;                 // 如果已连接WiFi,则返回0,否则返回1。    unsigned char reserved[4]; }SMsgAVIoctrlSetWifiResp;
(二十二)获取设备目前所设置的WiFi
命令宏定义:请求(IOTYPE_USER_IPCAM_GETWIFI_REQ = 0x0344) | 响应(IOTYPE_USER_IPCAM_GETWIFI_RESP = 0x0345)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device要获取设备目前所设置的wifi,Device将设备当前wifi配置放到IOCtrl资料并回传给App。
数据结构:
// 请求结构 typedef struct{    unsigned char reserved[4]; }SMsgAVIoctrlGetWifiReq; // 响应结构 typedef struct{    unsigned char ssid[32];     // WiFi ssid    unsigned char password[32]; // WiFi密码(如果不为空)    unsigned char mode;         // 参考ENUM_AP_MODE    unsigned char enctype;      // 参考ENUM_AP_ENCTYPE    unsigned char signal;       // 信号强度 0--100%    unsigned char status;       // 参考SWifiAp的"status" }SMsgAVIoctrlGetWifiResp;
(二十三)设定设备目前所设置的WiFi(64bit密码)
命令宏定义:请求(IOTYPE_USER_IPCAM_SETWIFI_REQ2 = 0x0346) | 响应(IOTYPE_USER_IPCAM_GETWIFI_RESP2 = 0x0347)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:该command支持64bit密码,同IOTYPE_USER_IPCAM_SETWIFI_REQ = 0x0342一起发送。APP告知Device要设定设备目前所设置的wifi,Device将设备当前wifi配置放到IOCtrl资料并回传给App。
数据结构:
// 请求结构 typedef struct{    unsigned char ssid[32];     // 连接的WiFi SSID    unsigned char password[64]; // WiFi SSID密码    unsigned char mode;         // 参考ENUM_AP_MODE    unsigned char enctype;      // 参考ENUM_AP_ENCTYPE    unsigned char reserved[10]; }SMsgAVIoctrlSetWifiReq2; // 响应结构 typedef struct{    unsigned char ssid[32];     // WiFi ssid    unsigned char password[64]; // WiFi密码(如果不为空)    unsigned char mode;         // 参考ENUM_AP_MODE    unsigned char enctype;      // 参考ENUM_AP_ENCTYPE    unsigned char signal;       // 信号强度 0--100%    unsigned char status;       // 参考SWifiAp的"status" }SMsgAVIoctrlGetWifiResp2;
(二十四)呼叫设备开始接收Audio Frame
命令宏定义:IOTYPE_USER_IPCAM_SPEAKERSTART = 0x0350;
数据流向:APP → Device
功能说明:APP告知Device开始接收音频数据。
数据结构:
typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; } SMsgAVIoctrlAVStream;
(二十五)呼叫设备停止接收Audio Frame
命令宏定义:IOTYPE_USER_IPCAM_SPEAKERSTOP = 0x0351;
数据流向:APP → Device
功能说明:APP告知Device停止接收音频数据。
数据结构:
typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; } SMsgAVIoctrlAVStream;
(二十六)设置画面镜像/翻转状态
命令宏定义:请求(IOTYPE_USER_IPCAM_SET_VIDEOMODE_REQ = 0x0370) | 响应(IOTYPE_USER_IPCAM_SET_VIDEOMODE_RESP = 0x0371)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device进行镜像/翻转设置,Device告知APP设置结果。
数据结构:
// 视频模式枚举 typedef enum{    AVIOCTRL_VIDEOMODE_NORMAL = 0x00,    AVIOCTRL_VIDEOMODE_FLIP = 0x01,        // 垂直翻转    AVIOCTRL_VIDEOMODE_MIRROR = 0x02,      // 水平翻转    AVIOCTRL_VIDEOMODE_FLIP_MIRROR = 0x03  // 垂直和水平翻转 }ENUM_VIDEO_MODE; // 请求结构 typedef struct{    unsigned int channel;       // Camera Index    unsigned char mode;         // 参考 ENUM_VIDEO_MODE    unsigned char reserved[3]; }SMsgAVIoctrlSetVideoModeReq; // 响应结构 typedef struct{    unsigned int channel;       // Camera Index    unsigned char result;       // 0: 成功; otherwise:失败;    unsigned char reserved[3]; }SMsgAVIoctrlSetVideoModeResp;
(二十七)获取画面镜像/翻转设置状态
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_VIDEOMODE_REQ = 0x0372) | 响应(IOTYPE_USER_IPCAM_GET_VIDEOMODE_RESP = 0x0373)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device获取镜像/翻转设置状态,Device告知APP目前画面镜像/翻转的设置状态。
数据结构:
// 请求结构 typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetVideoModeReq; // 视频模式枚举 typedef enum{    AVIOCTRL_VIDEOMODE_NORMAL = 0x00,    AVIOCTRL_VIDEOMODE_FLIP = 0x01,        // 垂直翻转    AVIOCTRL_VIDEOMODE_MIRROR = 0x02,      // 水平翻转    AVIOCTRL_VIDEOMODE_FLIP_MIRROR = 0x03  // 垂直和水平翻转 }ENUM_VIDEO_MODE; // 响应结构 typedef struct{    unsigned int channel;       // Camera Index    unsigned char mode;         // 参考 ENUM_VIDEO_MODE    unsigned char reserved[3]; }SMsgAVIoctrlGetVideoModeResp;
(二十八)格式化SD卡
命令宏定义:请求(IOTYPE_USER_IPCAM_FORMATEXTSTORAGE_REQ = 0x0380) | 响应(IOTYPE_USER_IPCAM_FORMATEXTSTORAGE_RESP = 0x0381)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device执行格式化SD卡操作,Device告知APP已格式化SD卡结果。
数据结构:
// 请求结构 typedef struct{    unsigned int storage;       // Storage index(例如sdcard插槽= 0,内部闪存= 1,...)    unsigned char reserved[4]; }SMsgAVIoctrlFormatExtStorageReq; // 响应结构 typedef struct{    unsigned int storage;       // Storage index    char result;                // 0: 成功;                                // -1:不支持格式化指令;                                // otherwise: 失败;    unsigned char reserved[3]; }SMsgAVIoctrlFormatExtStorageResp;
(二十九)呼叫Client端开始传送Video Frame
命令宏定义:IOTYPE_USER_IPCAM_START_CLIENT = 0x03FF;
数据流向:APP → Client
功能说明:主要应用于双向视频通话场景。APP告知Client开始发送视频数据。
数据结构:
typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; } SMsgAVIoctrlAVStream;
(三十)呼叫Client端停止传送Video Frame
命令宏定义:IOTYPE_USER_IPCAM_STOP_CLIENT = 0x04FF;
数据流向:APP → Client
功能说明:主要应用于双向视频通话场景。APP告知Client停止发送视频数据。
数据结构:
typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; } SMsgAVIoctrlAVStream;
(三十一)获取NVR设备Channel接口数量
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_NVR_CHANNEL_NUMBER_REQ = 0x5A4) | 响应(IOTYPE_USER_IPCAM_GET_NVR_CHANNEL_NUMBER_RESP = 0x5A5)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device获取设备Channel的接口数量,Device告知APP目前设备Channel的接口数量。
数据结构:
// 请求结构 typedef struct{    unsigned char reserved[4]; }SMsgAVIoctrlGetNVRChannelNumberReq; // 响应结构 typedef struct{    unsigned int number;        // 设备的通道数量    unsigned char reserved[4]; }SMsgAVIoctrlGetNVRChannelNumberResp;
(三十二)获取通道名称
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_CHANNEL_NAME_REQ = 0x5B0) | 响应(IOTYPE_USER_IPCAM_GET_CHANNEL_NAME_RESP = 0x5B1)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device获取设备的通道名称,Device告知APP设备的通道名称。
数据结构:
// 请求结构 typedef struct{    unsigned char reserved[4]; }SMsgAVIoctrlGetChannelNameReq; // 通道信息结构 typedef struct{    unsigned int channel;       // camera index    unsigned char name[24];     // 通道名称 } SChannelInfo; // 响应结构 typedef struct{    unsigned char count;        // 通道数量    unsigned char reserved[3];    SChannelInfo sChannelInfo[0]; // SChannelInfo数组 }SMsgAVIoctrlGetChannelNameResp;
(三十三)设置通道名称
命令宏定义:请求(IOTYPE_USER_IPCAM_SET_CHANNEL_NAME_REQ = 0x5B2) | 响应(IOTYPE_USER_IPCAM_SET_CHANNEL_NAME_RESP = 0x5B3)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device要设置设备的通道名称,Device告知APP设置设备通道名称的结果。
数据结构:
// 请求结构 typedef struct{    unsigned char count;        // SChannelInfos的数量    unsigned char reserved[3];    SChannelInfo sChannelInfo[0]; // SChannelInfo数组 }SMsgAVIoctrlSetChannelNameReq; // 响应结构 typedef struct{    unsigned char result;       // 0:成功; otherwise:失败;    unsigned char reserved[3]; }SMsgAVIoctrlSetResetResp;
(三十四)门铃呼叫
命令宏定义:请求(IOTYPE_XM_CALL_REQ = 0x700) | 响应(IOTYPE_XM_CALL_RESP = 0x701) | 通知(IOTYPE_XM_CALL_IND = 0x702)
数据流向:请求(Device → APP) | 响应(APP → Device) | 通知(Device → APP)
功能说明:主要应用于可视门铃通话场景。Device告知APP有用户呼叫;APP告知Device是否进行接听;Device告知APP是否有其他用户接听。
数据结构:
// 请求结构(Device→APP) typedef struct{    unsigned char index;        // 门索引号,0:门1; 1:门2;    STimeDay stTime;            // 事件时间    unsigned char reserved[3]; } SMsgAVIoctrlCallReq; // 响应结构(APP→Device) typedef struct{    unsigned char index;        // 门索引号,0:门1;1: 门2;    int nAnswered;              // 0:挂断;1:接听;    unsigned char reserved[3]; }SMsgAVIoctrlCallResp; // 通知结构(Device→APP) typedef struct{    unsigned char index;        // 门索引号,0:门1;1:门2;    unsigned char type;         // 类型,0:有用户呼叫;1:有其他用户应答;    STimeDay stTime;            // 事件时间    unsigned char reserved[3]; }SMsgAVIoctrlCallInd;
(三十五)发送设备名称给设备
命令宏定义:请求(IOTYPE_USER_IPCAM_PUSH_DEVICENAME_REQ = 0x0736) | 响应(IOTYPE_USER_IPCAM_PUSH_DEVICENAME_RESP = 0x0737)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device设置当前设备名称,Device告知APP设备名称更新结果。
数据结构:
// 请求结构 typedef struct{    unsigned int channel;       // camera index    char devicename[150];       // 当前设备名称 }SMsgAVIoctrlPushDeviceNameReq; // 响应结构 typedef struct{    int res;                    // 0:成功;otherwise:失败;    char reserved[4]; }SMsgAVIoctrlPushDeviceNameResp;
(三十六)同步手机时间给设备
命令宏定义:请求(IOTYPE_USER_IPCAM_SET_TIME_SYNC_REQ = 0x0816) | 响应(IOTYPE_USER_IPCAM_SET_TIME_SYNC_RESP = 0x0817)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device进行手机时间同步,Device告知APP时间同步结果。
数据结构:
// 请求结构 typedef struct{    unsigned short year;    unsigned char month;    unsigned char day;    unsigned char hour;    unsigned char minute;    unsigned char second;    unsigned char nIsSupportSync; // 1:支持; 0:不支持;    int nGMTOffset;              // GMT之间的偏移量(以秒为单位) } SMsgAVIoctrlTimeSyncReq; // 响应结构 typedef struct{    unsigned int result;        // 0:成功;otherwise:失败;    unsigned char reserved[4]; } SMsgAVIoctrlTimeSyncResp;
(三十七)结束通话
命令宏定义:IOTYPE_USER_IPCAM_CALL_END = 0x0900;
数据流向:APP → 另一端
功能说明:主要应用于双向视频通话场景。APP告知对方结束当前通话。
数据结构:
typedef struct{    unsigned char myID[6];      // 我的ID    unsigned char reserved[2]; }SMsgAVIoctrlCallEnd;
(三十八)呼叫方发出通话请求
命令宏定义:IOTYPE_USER_IPCAM_CALL_REQ = 0x0901;
数据流向:呼叫方 → 被呼叫方
功能说明:主要应用于双向视频通话场景。呼叫方向被呼叫方发起通话请求。
数据结构:
// 账户信息结构 typedef struct{    unsigned char UID[20];      // UID    unsigned char myID[6];      // ID    unsigned char reserved[2]; }AccountInfo; // 通话请求结构 typedef struct{    unsigned char myID[6];      // 我的 ID    unsigned char myUID[20];    // 我的 UID    unsigned char callType;     // 0:单向视频;1:双向视频;    unsigned char beInvited;    // 0:表示邀请;1:表示被邀请;    unsigned char infoCount;    // 其他参与者的数量    unsigned char reserved[3];    AccountInfo info[];         // 其他参与者的信息 }SMsgAVIoctrlCallReq;
(三十九)被呼叫方响应呼叫请求
命令宏定义:IOTYPE_USER_IPCAM_CALL_RESP = 0x0902;
数据流向:被呼叫方 → 呼叫方
功能说明:主要应用于双向视频通话场景。被呼叫方响应呼叫方发起的通话请求。
数据结构:
typedef struct{    unsigned char answer;       // 0:拒绝; 1:接听;    unsigned char myID[6];      // myID    unsigned char reserved[1]; }SMsgAVIoctrlCallResp;
(四十)云台控制
命令宏定义:IOTYPE_USER_IPCAM_PTZ_COMMAND = 0x1001;
数据流向:APP → Device
功能说明:APP告知Device进行云台控制操作。
数据结构:
// AVIOCTRL PTZ Command 枚举定义 typedef enum{    AVIOCTRL_PTZ_STOP = 0,    AVIOCTRL_PTZ_UP = 1,    AVIOCTRL_PTZ_DOWN = 2,    AVIOCTRL_PTZ_LEFT = 3,    AVIOCTRL_PTZ_LEFT_UP = 4,    AVIOCTRL_PTZ_LEFT_DOWN = 5,    AVIOCTRL_PTZ_RIGHT = 6,    AVIOCTRL_PTZ_RIGHT_UP = 7,    AVIOCTRL_PTZ_RIGHT_DOWN = 8,    AVIOCTRL_PTZ_AUTO = 9,    AVIOCTRL_PTZ_SET_POINT = 10,    AVIOCTRL_PTZ_CLEAR_POINT = 11,    AVIOCTRL_PTZ_GOTO_POINT  = 12,    AVIOCTRL_PTZ_SET_MODE_START = 13,    AVIOCTRL_PTZ_SET_MODE_STOP = 14,    AVIOCTRL_PTZ_MODE_RUN = 15,    AVIOCTRL_PTZ_MENU_OPEN = 16,    AVIOCTRL_PTZ_MENU_EXIT = 17,    AVIOCTRL_PTZ_MENU_ENTER = 18,    AVIOCTRL_PTZ_FLIP = 19,    AVIOCTRL_PTZ_START = 20,    AVIOCTRL_LENS_APERTURE_OPEN = 21,    AVIOCTRL_LENS_APERTURE_CLOSE = 22,    AVIOCTRL_LENS_ZOOM_IN = 23,    AVIOCTRL_LENS_ZOOM_OUT = 24,    AVIOCTRL_LENS_FOCAL_NEAR = 25,    AVIOCTRL_LENS_FOCAL_FAR = 26,    AVIOCTRL_AUTO_PAN_SPEED = 27,    AVIOCTRL_AUTO_PAN_LIMIT = 28,    AVIOCTRL_AUTO_PAN_START = 29,    AVIOCTRL_PATTERN_START = 30,    AVIOCTRL_PATTERN_STOP = 31,    AVIOCTRL_PATTERN_RUN  = 32,    AVIOCTRL_SET_AUX = 33,    AVIOCTRL_CLEAR_AUX = 34,    AVIOCTRL_MOTOR_RESET_POSITION = 35 }ENUM_PTZCMD; // 云台控制结构 typedef struct{    unsigned char control;          // 云台控制指令,参考 ENUM_PTZCMD.    unsigned char speed;            // 云台转动的速度    unsigned char point;            // app未使用    unsigned char limit;            // app未使用    unsigned char aux;              // app未使用    unsigned char channel;          // camera index    unsigned char reserve[2]; } SMsgAVIoctrlPtzCmd;
(四十一)APP获取第一张I帧图片
命令宏定义:IOTYPE_USER_IPCAM_RECEIVE_FIRST_IFRAME = 0x1002;
数据流向:APP → Device
功能说明:APP告知Device接收到第一张I帧图片。
数据结构:
typedef struct{    unsigned int channel;        // camera index    char reserved[4]; }SMsgAVIoctrlReceiveFirstIFrame;
(四十二)设备进行OTA升级
命令宏定义:请求(IOTYPE_USER_IPCAM_OTA_REQ = 0x8001) | 响应(IOTYPE_USER_IPCAM_OTA_RESP = 0x8002)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device开始进行OTA升级,Device告知APPOTA升级进度及结果。
数据结构:
// 请求结构 typedef struct{    unsigned char file_checksum[32];      // MD5校验码    unsigned char url[256];               // 下载固件url链接    unsigned int file_size;               // 固件包大小    unsigned char reserved[4]; }SMsgAVIoctrlOTAReq; // 响应结构 typedef struct{    unsigned int progress;          // 下载固件进度    unsigned int endflag;           // 1:下载完成;0:下载中;    unsigned char reserved[8]; }SMsgAVIoctrlOTAResp;
(四十三)获取设备信息(新)
命令宏定义:请求(IOTYPE_USER_IPCAM_DEVICE_INFO_REQ = 0x8015) | 响应(IOTYPE_USER_IPCAM_DEVICE_INFO_RESP = 0x8016)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:注:新设备需对接OTA功能时建议使用,与旧cmd IOTYPE_USER_IPCAM_DEVINFO_REQ = 0x0330同作用。APP告知Device要获取设备资讯,Device告知APP设备详细资讯。
数据结构:
// 请求结构 typedef struct{    unsigned char reserved[8]; } SMsgAVIoctrlDeviceInfoReq; // 响应结构 typedef struct{    unsigned char model[32];           // 产品型号    unsigned char product[32];         // 产品名    unsigned char vender[32];          // 制造商(需与KOTA服务器上的厂商一致)    unsigned char version[64];         // 当前版本号    unsigned int free;                 // SD卡剩余空间    unsigned int total;                // SD卡总空间    unsigned char region;              // 获取设备所在位置,0:中国大陆区;1:非中国大陆区;    unsigned char reserved[3]; } SMsgAVIoctrlDeviceInfoResp;
注:以上参数用于拼接向KOTA服务器获取升级文件的下载地址请求,故需与在KOTA服务器上创建的vender,product,model等信息保持一致,且注意区分设备所在区域。
(四十四)获取设备是否支持OTA升级
命令宏定义:请求(IOTYPE_USER_IPCAM_DEVICE_SUPPORT_OTA_REQ = 0x800A) | 响应(IOTYPE_USER_IPCAM_DEVICE_SUPPORT_OTA_RESP = 0x800B)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device要获取设备是否支持OTA升级,Device告知APP设备OTA升级支持状态。
数据结构:
// 请求结构 typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlDeviceSupportOTAReq; // 响应结构 typedef struct{    unsigned char isSupport;        // 0:不支持;1:支持;    unsigned char reserved[4]; } SMsgAVIoctrlDeviceSupportOTAResp;
(四十五)获取设备是否支持云存储
命令宏定义:请求(IOTYPE_USER_IPCAM_DEVICE_SUPPORT_CLOUD_REQ = 0x800C) | 响应(IOTYPE_USER_IPCAM_DEVICE_SUPPORT_CLOUD_RESP = 0x800D)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device查询是否支持云存储,Device告知APP设备云存储支持状态。
数据结构:
// 请求结构 typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlDeviceSupportCloudReq; // 响应结构 typedef struct{    unsigned int result;           // 0:不支持;1:支持;    unsigned char reserved[4]; } SMsgAVIoctrlDeviceSupportCloudResp;
(四十六)设置设备云存储录像状态
命令宏定义:请求(IOTYPE_USER_IPCAM_DEVICE_SET_CLOUD_REQ = 0x8010) | 响应(IOTYPE_USER_IPCAM_DEVICE_SET_CLOUD_RESP = 0x8011)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device开启或关闭云存储录像功能,Device告知APP设置结果。
数据结构:
// 请求结构 typedef struct{    unsigned int channel;        // camera index    unsigned int isOn;           // 1:开启; 0:关闭; }SMsgAVIoctrlSetCloudReq; // 响应结构 typedef struct{    unsigned int channel;         // camera index    unsigned int result;          // 0:成功; 1:失败; }SMsgAVIoctrlSetCloudResp;
(四十七)获取设备云存储录像状态
命令宏定义:请求(IOTYPE_USER_IPCAM_DEVICE_GET_CLOUD_REQ = 0x8012) | 响应(IOTYPE_USER_IPCAM_DEVICE_GET_CLOUD_RESP = 0x8013)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP获取Device云存储录像状态,Device告知APP当前云存储录像状态。
数据结构:
// 请求结构 typedef struct{    unsigned int channel;         // camera index    unsigned char reserved[4]; }SMsgAVIoctrlGetCloudReq; // 响应结构 typedef struct{    unsigned int channel;         // camera index    unsigned int isOn;            // 1:开启; 0:关闭; }SMsgAVIoctrlGetCloudResp;
(四十八)获取有SD卡事件的日期
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_EVENT_DATE_REQ = 0x9000) | 响应(IOTYPE_USER_IPCAM_GET_EVENT_DATE_RESP = 0x9001)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device获取有SD卡事件的日期,Device告知APP包含SD卡事件的日期列表。
数据结构:
// 请求结构 typedef struct{    unsigned int channel;          // Camera Index    unsigned int eventType;        // 查询的事件类型,0:全部;1:移动侦测;2:全时录像;(默认是0)    STimeDay stStartTime;          // 开始时间    STimeDay stEndTime;            // 结束时间    unsigned char reserved[8]; } SMsgAVIoctrlGetEventDateReq; // 日期结构 typedef struct{    char date[8];                     // 事件的日期,例如:20200210,后面依次还有count-1个date[8] } EventDate; // 响应结构 typedef struct{    unsigned int count;               // 事件的日期数量    unsigned char reserved[4];    EventDate eventDate[1];           // 事件的日期 } SMsgAVIoctrlGetEventDateResp;
(四十九)获取设备人形侦测开关
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_HUMANDETECTION_REQ = 0x9002) | 响应(IOTYPE_USER_IPCAM_GET_HUMANDETECTION_RESP = 0x9003)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device查询人形侦测开关状态,Device告知APP人形侦测开关查询结果。
数据结构:
// 请求结构 typedef struct{    unsigned char reserved[4]; } SMsgAVIoctrlGetHumanDetectionReq; // 响应结构 typedef struct{    unsigned int result;             // 1:开启;其他:关闭;    unsigned char reserved[4]; } SMsgAVIoctrlGetHumanDetectionResp;
(五十)设置设备人形侦测开关
命令宏定义:请求(IOTYPE_USER_IPCAM_SET_HUMANDETECTION_REQ = 0x9004) | 响应(IOTYPE_USER_IPCAM_SET_HUMANDETECTION_RESP = 0x9005)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device设置人形侦测开关状态,Device告知APP人形侦测开关设置结果。
数据结构:
// 请求结构 typedef struct{    unsigned int isOn;        // 1:开启;0:关闭;    unsigned char reserved[4]; } SMsgAVIoctrlSetHumanDetectionReq; // 响应结构 typedef struct{    unsigned int result;             // 0:成功;其他:失败;    unsigned char reserved[4]; } SMsgAVIoctrlSetHumanDetectionResp;
(五十一)获取设备夜视状态
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_NIGHTVISION_REQ = 0x9006) | 响应(IOTYPE_USER_IPCAM_GET_NIGHTVISION_RESP = 0x9007)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device获取夜视设置状态,Device告知APP当前夜视设置状态。
数据结构:
// 请求结构 typedef struct{    unsigned char reserved[4]; } SMsgAVIoctrlGetNightVisionReq; // 响应结构 typedef struct{    unsigned int result;             // 0:关闭;1:开启;2:自动;    unsigned char reserved[4]; } SMsgAVIoctrlGetNightVisionResp;
(五十二)设置设备夜视状态
命令宏定义:请求(IOTYPE_USER_IPCAM_SET_NIGHTVISION_REQ = 0x9008) | 响应(IOTYPE_USER_IPCAM_SET_NIGHTVISION_RESP = 0x9009)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device设置夜视状态,Device告知APP夜视设置结果。
数据结构:
// 请求结构 typedef struct{    unsigned int isOn;        // 0:关闭;1:开启;2:自动;    unsigned char reserved[4]; } SMsgAVIoctrlSetNightVisionReq; // 响应结构 typedef struct{    unsigned int result;             // 0:成功;其他:失败;    unsigned char reserved[4]; } SMsgAVIoctrlSetNightVisionResp;
(五十三)获取设备夏令时开关
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_SUMMERTIME_REQ = 0x9010) | 响应(IOTYPE_USER_IPCAM_GET_SUMMERTIME_RESP = 0x9011)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device查询夏令时开关状态,Device告知APP夏令时开关查询结果。
数据结构:
// 请求结构 typedef struct{    unsigned char reserved[4]; } SMsgAVIoctrlGetSummerTimeReq; // 响应结构 typedef struct{    unsigned int result;             // 1:开启;其他:关闭;    unsigned char reserved[4]; } SMsgAVIoctrlGetSummerTimeResp;
(五十四)设置设备夏令时开关
命令宏定义:请求(IOTYPE_USER_IPCAM_SET_SUMMERTIME_REQ = 0x9012) | 响应(IOTYPE_USER_IPCAM_SET_SUMMERTIME_RESP = 0x9013)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device设置夏令时开关状态,Device告知APP夏令时开关设置结果。
数据结构:
// 请求结构 typedef struct{    unsigned int isOn;        // 1:开启; 0:关闭;    unsigned char reserved[4]; } SMsgAVIoctrlSetSummerTimeReq; // 响应结构 typedef struct{    unsigned int result;             // 0:成功;其他:失败;    unsigned char reserved[4]; } SMsgAVIoctrlSetSummerTimeResp;
(五十五)获取设备CertKey及ProfileVer
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_PROFILE_REQ = 0x9014) | 响应(IOTYPE_USER_IPCAM_GET_PROFILE_RESP = 0x9015)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device需要获取certKey、profileVer,Device告知APP设备的certKey和profileVer信息。
数据结构:
// 请求结构 typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlGetProfileReq; // 响应结构 typedef struct{    unsigned char certKey[40];    unsigned char profileVer[20];   // profile配置文件版本号    unsigned char reserved[8]; } SMsgAVIoctrlGetProfileResp;
(五十六)获取上传文件的通道列表
命令宏定义:请求(IOTYPE_USER_IPCAM_UPLOAD_FILE_REQ = 0x9027) | 响应(IOTYPE_USER_IPCAM_UPLOAD_FILE_RESP = 0x9028)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device需要获取上传文件的通道列表,Device告知APP设备的可上传类型、可上传的连接通道。
数据结构:
// 文件信息结构 typedef struct{    unsigned char fileName[64];     // 文件名称 }Fileinfo; // 请求结构 typedef struct{    int  functionalType;            // 功能类型: 1.预设语音  2.其他功能类型    int count;                      // 需要上传文件的总数    Fileinfo Filename[10];          // 上传文件名集合 } SMsgAVIoctrlFileUploadReq; // 传输类型枚举 typedef enum{    TKTransferType_AVAPI = 0,     // AVAPI 上传类型    TKTransferType_RDT  = 1       // RDT 上传类型 }ENUM_TKTransferType; // 通道信息结构 typedef struct{    unsigned int channel;     // 通道 id }ChannelInfo; // 响应结构 typedef struct{    unsigned int type;           // TKTransferType 上传类型    int count;                   // 通道集合的总数(最多10个) ; -1:表示失败;    ChannelInfo channel[10]; } SMsgAVIoctrlFileUploadResp;
(五十七)获取下载SD卡事件的通道列表
命令宏定义:请求(IOTYPE_USER_IPCAM_EVENT_DOWNLOAD_FILE_REQ = 0x9029) | 响应(IOTYPE_USER_IPCAM_EVENT_DOWNLOAD_FILE_RESP = 0x902A)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device需要获取下载SD卡事件的通道列表,Device告知APP设备的下载类型、可下载的连接通道。
数据结构:
// 请求结构 typedef struct{    int count;                      // 需要下载事件的个数    STimeDay sTimeDayList [10];     // 需要下载SD卡事件的时间集合(每次最多10个) }SMsgAVIoctrlEventFileDownReq; // 传输类型枚举 typedef enum{    TKTransferType_AVAPI = 0,  // AVAPI下载类型    TKTransferType_RDT   = 1   // RDT下载类型 }ENUM_TKTransferType; // 通道信息结构 typedef struct{    unsigned int channel;    // 通道 id }ChannelInfo; // 响应结构 typedef struct{    unsigned int type;         // TKTransferType 下载类型    int count;                 // 通道集合的总数(最多10个) ; -1:表示失败;    ChannelInfo channel[10]; } SMsgAVIoctrlEventFileDownResp;
(五十八)获取预设语音列表
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_VOICE_FILELIST_REQ = 0x902B) | 响应(IOTYPE_USER_IPCAM_GET_VOICE_FILELIST_RESP = 0x902C)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device需要获取预设语音文件名称列表,Device告知APP设备的预设语音列表。
数据结构:
// 请求结构 typedef struct{    int channel;                // 通道号 }SMsgAVIoctrlGetVoiceFileReq; // 预设语音信息结构 typedef struct{    int isPresetSpeech;    // 是否预设语音,1:当前预设语音,0:当前不是预设语音;    char fileName[64];     // 文件名称 }PresetSpeechInfo; // 响应结构 typedef struct{    int count;         // 文件名称总数 (最多10个); -1:表示失败;    PresetSpeechInfo presetSpeechInfo [10]; } SMsgAVIoctrlGetVoiceFileResp;
(五十九)播放设备存储的预设语音
命令宏定义:请求(IOTYPE_USER_IPCAM_PLAY_VOICE_REQ = 0x902D) | 响应(IOTYPE_USER_IPCAM_PLAY_VOICE_RESP = 0x902E)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device开始播放预设语音,Device告知APP语音播放结果。
数据结构:
// 请求结构 typedef struct{    int channel;  // 通道号 }SMsgAVIoctrlPlayVoiceReq; // 响应结构 typedef struct{    int result;    // 1:成功播放;其他:返回播放失败; } SMsgAVIoctrlPlayVoiceResp;
(六十)获取设备是否支持双向视频
命令宏定义:请求(IOTYPE_USER_IPCAM_DEVICE_SUPPORT_DOUBLEVIDEO_REQ = 0x9030) | 响应(IOTYPE_USER_IPCAM_DEVICE_SUPPORT_DOUBLEVIDEO_RESP = 0x9031)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP发送请求获取设备是否支持双向视频,Device告知APP设备双向视频支持状态。
数据结构:
// 请求结构 typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlDeviceSupportDoubleVideoReq; // 响应结构 typedef struct{    unsigned char isSupport;       // 0:不支持;1:支持;    unsigned char reserved[3]; } SMsgAVIoctrlDeviceSupportDoubleVideoResp;
(六十一)发起双向视频
命令宏定义:请求(IOTYPE_USER_IPCAM_DOUBLEVIDEOCALL_REQ = 0x9032) | 响应(IOTYPE_USER_IPCAM_DOUBLEVIDEOCALL_RESP = 0x9033)
数据流向:请求(呼叫方 → 被呼叫方) | 响应(被呼叫方 → 呼叫方)
功能说明:呼叫方向被呼叫方发起双向视频通话请求,被呼叫方响应呼叫方的通话请求。
数据结构:
// 请求结构(呼叫方→被呼叫方) typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlDoubleVideoCallReq; // 响应结构(被呼叫方→呼叫方) typedef struct{    unsigned char answer;    // 0:拒绝;1:接听;    unsigned char reserved[3]; } SMsgAVIoctrlDoubleVideoCallResp;
(六十二)获取SD卡挂载状态
命令宏定义:请求(IOTYPE_USER_IPCAM_SDINFO_REQ = 0x9034) | 响应(IOTYPE_USER_IPCAM_SDINFO_RESP = 0x9035)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP发送请求获取设备SD卡挂载状态,Device告知APP设备SD卡当前挂载状态。
数据结构:
// 请求结构 typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlSdInfoReq; // 响应结构 typedef struct{    unsigned char state;              // 0:sd卡异常;1:未插卡;2:已插卡;    unsigned char reserved[3]; } SMsgAVIoctrlSdInfoResp;
(六十三)获取设备当前对讲状态
命令宏定义:请求(IOTYPE_USER_IPCAM_SPEAK_STATE_REQ = 0x9036) | 响应(IOTYPE_USER_IPCAM_SPEAK_STATE_RESP = 0x9037)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP发送请求获取设备当前对讲状态,Device告知APP设备当前对讲状态。
数据结构:
// 请求结构 typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlSpeakStateReq; // 响应结构 typedef struct{    unsigned char state;          // 0:未占用(允许app进行对讲);1:被占用(不允许app进行对讲);2:不支持(设备没有对讲功能);    unsigned char reserved[3]; } SMsgAVIoctrlSpeakStateResp;
(六十四)获取移动追踪开关状态
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_MOTION_TRACKING_REQ = 0x9038) | 响应(IOTYPE_USER_IPCAM_GET_MOTION_TRACKING_RESP = 0x9039)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device获取移动追踪状态,Device告知APP当前移动追踪状态。
数据结构:
// 请求结构 typedef struct{    unsigned int channel;     // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetMotionTrackingReq; // 追踪类型枚举 typedef enum{    TRACE_TYPE_OBJECT = 0x01,    // 物体追踪    TRACE_TYPE_HUMAN =  0x02,     // 人形追踪    TRACE_TYPE_AUDIO =  0x03      // 听音辨位 }ENUM_TRACE_TYPE; // 追踪任务结构 typedef struct{    unsigned int traceType;                // 追踪类型,详情查看ENUM_TRACE_TYPE    unsigned int isOn;                     // 是否开启, 0:关闭;1:开启;    unsigned char reserved[4]; }SMsgTraceTask; // 响应结构 typedef struct{    unsigned int channel;              // Camera Index    unsigned int count;                // SMsgTraceTask数组的长度    unsigned char reserved[4];         // 保留位    SMsgTraceTask task[1] ;            // SMsgTraceTask的数组;count是数组的长度; }SMsgAVIoctrlGetMotionTrackingResp;
(六十五)设置移动追踪开关状态
命令宏定义:请求(IOTYPE_USER_IPCAM_SET_MOTION_TRACKING_REQ = 0x903A) | 响应(IOTYPE_USER_IPCAM_SET_MOTION_TRACKING_RESP = 0x903B)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device设置追踪开关状态,Device告知APP移动追踪设置结果。
数据结构:
// 追踪类型枚举 typedef enum{    TRACE_TYPE_OBJECT =  0x01,    // 物体追踪    TRACE_TYPE_HUMAN =  0x02,     // 人形追踪    TRACE_TYPE_AUDIO =  0x03     // 听音辨位 }ENUM_TRACE_TYPE; // 追踪任务结构 typedef struct{    unsigned int traceType;                // 追踪类型,详情查看ENUM_TRACE_TYPE    unsigned int isOn;                     // 是否开启, 0:关闭;1:开启;    unsigned char reserved[4]; }SMsgTraceTask; // 设置结果结构 typedef struct{    unsigned int traceType;                      // 设置的追踪类型 详情查看ENUM_TRACE_TYPE    unsigned int result;                         // 当前设置类型是否设置成功,0:成功;others:失败;    unsigned char reserved[4]; }SMsgAVIoctrlSetResult; // 请求结构 typedef struct{    unsigned int channel;                 // Camera Index    unsigned int count;                   // SMsgTraceTask数组的长度    unsigned char reserved[4];            // 保留位    SMsgTraceTask task[1] ;               // SMsgTraceTask的数组;count是数组的长度; }SMsgAVIoctrlSetMotionTrackingReq; // 响应结构 typedef struct{    unsigned int count;                       // 设置返回结果的数量    SMsgAVIoctrlSetResult result[1];          // 设置返回结果的数组    unsigned char reserved[4]; }SMsgAVIoctrlSetMotionTrackingResp;
(六十六)获取指示灯状态
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_PILOT_LAMP_REQ = 0x903C) | 响应(IOTYPE_USER_IPCAM_GET_PILOT_LAMP_RESP = 0x903D)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device获取指示灯的状态,Device告知APP当前指示灯状态。
数据结构:
// 请求结构 typedef struct{    unsigned int channel;        // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetPilotLampReq; // 响应结构 typedef struct{    unsigned int channel;         // Camera Index    unsigned int lightState;      // 指示灯的状态,0:关闭;1:开启;    unsigned char reserved[8]; }SMsgAVIoctrlGetPilotLampResp;
(六十七)设置指示灯状态
命令宏定义:请求(IOTYPE_USER_IPCAM_SET_PILOT_LAMP_REQ = 0x903E) | 响应(IOTYPE_USER_IPCAM_SET_PILOT_LAMP_RESP = 0x903F)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device设置指示灯状态,Device告知APP指示灯设置结果。
数据结构:
// 请求结构 typedef struct{    unsigned int channel;         // Camera Index    unsigned int lightState;      // 指示灯的状态, 0:关闭; 1:开启;    unsigned char reserved[8]; }SMsgAVIoctrlSetPilotLampReq; // 响应结构 typedef struct{    unsigned int result;        // 0:成功;otherwise:失败;    unsigned char reserved[4]; }SMsgAVIoctrlSetPilotLampResp;
(六十八)设置设备重启
命令宏定义:请求(IOTYPE_USER_IPCAM_SET_RESTART_REQ = 0x9040) | 响应(IOTYPE_USER_IPCAM_SET_RESTART_RESP = 0x9041)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device重启设备,Device告知APP设备重启结果。
数据结构:
// 请求结构 typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlSetRestartReq; // 响应结构 typedef struct{    unsigned int result;         // 0:成功;otherwise:失败;    unsigned char reserved[4]; }SMsgAVIoctrlSetRestartResp;
(六十九)获取智能侦测状态
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_INTELLIGENT_DETECTION_REQ) | 响应(IOTYPE_USER_IPCAM_GET_INTELLIGENT_DETECTION_RESP)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device获取智能侦测状态,Device告知APP当前智能侦测状态。
数据结构:
// 请求结构 typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetIntelligentDetectionReq; // 侦测任务结构 typedef struct{    unsigned int detectionType;   // 侦测类型(类型详情请参考ENUM_EVENTTYPE)    unsigned int isOn;            // 是否开启,0:关闭;1:开启;    unsigned int sensitivity;     // 灵敏度    unsigned char reserved[4];    // 保留位 }SMsgDetectionTask; // 响应结构 typedef struct{    unsigned int channel;          // Camera Index    unsigned int count;            // SMsgDetectionTask数组的长度    unsigned char reserved[4];     // 保留位    SMsgDetectionTask task[1] ;    // 侦测类型的数组;count是数组的长度; }SMsgAVIoctrlGetIntelligentDetectionResp;
(七十)设置智能侦测状态
命令宏定义:请求(IOTYPE_USER_IPCAM_SET_INTELLIGENT_DETECTION_REQ) | 响应(IOTYPE_USER_IPCAM_SET_INTELLIGENT_DETECTION_RESP)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device设置智能侦测状态,Device告知APP智能侦测设置结果。
数据结构:
// 侦测任务结构 typedef struct{    unsigned int detectionType;   // 侦测类型(类型详情请参考ENUM_EVENTTYPE)    unsigned int isOn;            // 是否开启,0:关闭;1:开启;    unsigned int sensitivity;     // 灵敏度    unsigned char reserved[4];    // 保留位 }SMsgDetectionTask; // 设置结果结构 typedef struct{    unsigned int detectionType;  // 设置的侦测类型(类型详情请参考ENUM_EVENTTYPE)    unsigned int result;         // 当前设置类型是否设置成功0:成功;otherwise:失败;    unsigned char reserved[4]; } SMsgAVIoctrlSetDetectResult; // 请求结构 typedef struct{    unsigned int channel;        // Camera Index    unsigned int count;          // SMsgDetectionTask数组的长度    unsigned char reserved[4];   // 保留位    SMsgDetectionTask task[1] ;  // 侦测类型的数组;count是数组的长度; }SMsgAVIoctrlSetIntelligentDetectionReq; // 响应结构 typedef struct{    unsigned int count;                      // 设置返回结果的数量    SMsgAVIoctrlSetDetectResult result[1];   // 设置返回结果的数组    unsigned char reserved[4]; }SMsgAVIoctrlSetIntelligentDetectionResp;
(七十一)获取休眠设置状态
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_DORMANCY_REQ = 0x9046) | 响应(IOTYPE_USER_IPCAM_GET_DORMANCY_RESP = 0x9047)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device获取休眠设置状态,Device告知APP当前休眠设置状态。
数据结构:
// 休眠定时任务结构 typedef struct{    STimeDay  startTime;           // 开启时间    STimeDay  endTime;             // 结束时间    unsigned int executionTime;    // 实行时间,0:执行一次;1:每天;2:工作日;3:周末;    unsigned int isOn;             // 是否开启,0:关闭;1:开启;    unsigned char reserved[4]; }SMsgDormancyTask; // 请求结构 typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetDormancyReq; // 响应结构 typedef struct{    unsigned int channel;            // Camera Index    unsigned int sleepState;         // 设备状态,0:关闭;1:开启;2:定时休眠中;    unsigned int count;              // 设置定时休眠的数组,最多5个    unsigned int currentSleepState;  // 当前设备是否处在休眠中,0:不休眠;1:休眠;    SMsgDormancyTask task[1];        // 参考SMsgDormancyTask }SMsgAVIoctrlGetDormancyResp;
(七十二)设置休眠设置状态
命令宏定义:请求(IOTYPE_USER_IPCAM_SET_DORMANCY_REQ = 0x9048) | 响应(IOTYPE_USER_IPCAM_SET_DORMANCY_RESP = 0x9049)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device设置休眠状态,Device告知APP休眠设置结果。
数据结构:
// 休眠定时任务结构 typedef struct{    STimeDay  startTime;           // 开启时间    STimeDay  endTime;             // 结束时间    unsigned int executionTime;    // 实行时间,0:执行一次;1:每天;2:工作日;3:周末;    unsigned int isOn;             // 是否开启,0:关闭;1:开启;    unsigned char reserved[4]; }SMsgDormancyTask; // 请求结构 typedef struct{    unsigned int channel;         // Camera Index    unsigned int sleepState;      // 设备状态,0:关闭;1:开启;2:定时休眠中;    unsigned int count;           // 设置定时休眠的数组,1-5最多5个    unsigned char reserved[4];    SMsgDormancyTask task[1]; }SMsgAVIoctrlSetDormancyReq; // 响应结构 typedef struct{    unsigned int result;      // 0:成功;otherwise:失败;    unsigned char reserved[4]; }SMsgAVIoctrlSetDormancyResp;
(七十三)获取时区设置信息
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_TIME_ZONE_REQ) | 响应(IOTYPE_USER_IPCAM_GET_TIME_ZONE_RESP)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device获取时区等状态信息,Device告知APP当前时区、语言、地区等状态信息。
数据结构:
// 请求结构 typedef struct{    unsigned int channel;     // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetTimeZoneReq; // 语言类型枚举 typedef enum{    LANGUAGE_TYPE_CN =  0x01,     // 中文-简体    LANGUAGE_TYPE_CN_TW =  0x02,  // 中文-繁体    LANGUAGE_TYPE_EN =  0x03,     // 英语    LANGUAGE_TYPE_FR =  0x04,     // 法语    LANGUAGE_TYPE_DE =  0x05,     // 德语    LANGUAGE_TYPE_PT =  0x06,     // 葡萄牙语    LANGUAGE_TYPE_ES =  0x07,     // 西班牙语    LANGUAGE_TYPE_TR =  0x08,     // 土耳其语    LANGUAGE_TYPE_RU =  0x09,     // 俄语    LANGUAGE_TYPE_IT =  0x10,     // 意大利语    LANGUAGE_TYPE_CS =  0x11,     // 捷克语    LANGUAGE_TYPE_PL =  0x12,     // 波兰语    LANGUAGE_TYPE_NL =  0x13,     // 荷兰语    LANGUAGE_TYPE_JA =  0x14      // 日语 }ENUM_LANGUAGE_TYPE; // 响应结构 typedef struct{    unsigned int channel;            // Camera Index    unsigned long timestamp;         // UTC时间戳,精确到秒(s)    unsigned int isFollowingSystem;  // 是否跟随系统,1:跟随;0:不跟随;    int timeZone ;                   // -12~12 时区(包含夏令时偏移量),精确到分钟(比如:英国在UTC 0 时区,夏令时+1,则timeZone = 60)    unsigned char region[128] ;      // 地区    unsigned int language;           // 语系(参考ENUM_LANGUAGE_TYPE)    unsigned char reserved[4]; }SMsgAVIoctrlGetTimeZoneResp;
备注:long一般是占8个字节,因为考虑有些编译器做字节对齐的时候,会进行内存优化,建议struct定义的时候加上免优化的选项(linux一般是在struct后加上__attribute__((packed)))
(七十四)设置设备时区
命令宏定义:请求(IOTYPE_USER_IPCAM_SET_TIME_ZONE_REQ) | 响应(IOTYPE_USER_IPCAM_SET_TIME_ZONE_RESP)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device设置时区等状态信息,Device告知APP时区设置结果。
数据结构:
// 语言类型枚举 typedef enum{    LANGUAGE_TYPE_CN =  0x01,     // 中文-简体    LANGUAGE_TYPE_CN_TW =  0x02,  // 中文-繁体    LANGUAGE_TYPE_EN =  0x03,     // 英语    LANGUAGE_TYPE_FR =  0x04,     // 法语    LANGUAGE_TYPE_DE =  0x05,     // 德语    LANGUAGE_TYPE_PT =  0x06,     // 葡萄牙语    LANGUAGE_TYPE_ES =  0x07,     // 西班牙语    LANGUAGE_TYPE_TR =  0x08,     // 土耳其语    LANGUAGE_TYPE_RU =  0x09,     // 俄语    LANGUAGE_TYPE_IT =  0x10,     // 意大利语    LANGUAGE_TYPE_CS =  0x11,     // 捷克语    LANGUAGE_TYPE_PL =  0x12,     // 波兰语    LANGUAGE_TYPE_NL =  0x13,     // 荷兰语    LANGUAGE_TYPE_JA =  0x14      // 日语 }ENUM_LANGUAGE_TYPE; // 请求结构 typedef struct{    unsigned int channel;            // Camera Index    unsigned long timestamp;         // UTC时间戳,精确到秒(s)    unsigned int isFollowingSystem;  // 是否跟随系统,1:跟随;0:不跟随;    int timeZone ;                   // -12~12 时区(包含夏令时偏移量),精确到分钟(比如:英国在UTC 0 时区,夏令时+1,则timeZone = 60)    unsigned char region[128] ;      // 地区    unsigned int  language;          // 语系(参考ENUM_LANGUAGE_TYPE)    unsigned char reserved[4]; }SMsgAVIoctrlSetTimeZoneReq; // 响应结构 typedef struct{    unsigned int result;         // 0:成功;otherwise:失败;    unsigned char reserved[4]; }SMsgAVIoctrlSetTimeZoneResp;
备注:long一般是占8个字节,因为考虑有些编译器做字节对齐的时候,会进行内存优化,建议struct定义的时候加上免优化的选项(linux一般是在struct后加上__attribute__((packed)))
(七十五)根据命令获取设备各种状态
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_ALL_STATE_REQ = 0x904E) | 响应(IOTYPE_USER_IPCAM_GET_ALL_STATE_RESP)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device根据指令获取设备的状态,设备根据之前定义的cmd来返回状态。
数据结构:
// 获取设备状态的命令数据 typedef struct{    unsigned int cmdType;   // 命令类型 }SMsgCommandTask; // 请求结构 typedef struct{    unsigned int channel;        // Camera Index    unsigned int count;          // 命令数组长度    unsigned char reserved[4];    SMsgCommandTask task[1];     // 参考SMsgCommandTask }SMsgAVIoctrlGetAllStateReq;
(七十六)重置设备(恢复出厂设置)
命令宏定义:请求(IOTYPE_USER_IPCAM_SET_RESET_REQ = 0x30000001) | 响应(IOTYPE_USER_IPCAM_SET_RESET_RESP = 0x30000002)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device进行重置(恢复出厂设置),Device告知APP设置结果。
数据结构:
// 请求结构 typedef struct{    unsigned int channel;        // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlSetResetReq; // 响应结构 typedef struct{    unsigned int result;        // 0:成功;otherwise:失败;    unsigned char reserved[4]; }SMsgAVIoctrlSetResetResp;
(七十七)获取音乐列表
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_MUSIC_LIST_REQ = 0x9050) | 响应(IOTYPE_USER_IPCAM_GET_MUSIC_LIST_RESP = 0x9051)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device获取音乐列表,Device告知APP音乐列表。
数据结构:
// 请求结构 typedef struct {    unsigned int channel;     // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetMusicListReq; // 音乐信息结构 typedef struct {    unsigned char name[64];     // 音乐名称    unsigned int index;         // 序号    unsigned int isCustom;      // 是否自定义音乐,0:默认音乐 1:自定义音乐    unsigned int isCurrent;     // 是否选中,1:选中,其他:否    unsigned char reserved[4]; }SAvMusic; // 响应结构 typedef struct {    unsigned int count;    unsigned char reserved[4];    SAvMusic stMusic[1];         // 数组 }SMsgAVIoctrlGetMusicListResp;
(七十八)获取音乐播放状态
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_MUSIC_STATE_REQ = 0x9052) | 响应(IOTYPE_USER_IPCAM_GET_MUSIC_STATE_RESP = 0x9053)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP请求Device告知当前音乐的播放状态(当播放状态改变时,设备应主动告知APP)。
数据结构:
// 请求结构 typedef struct {    unsigned int channel;  // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetMusicStateReq; // 响应结构 typedef struct {    unsigned int channel;        // Camera Index    unsigned int isPlaying;      // 播放状态, 0:停止播放,1:正在播放    unsigned int isTryMusic;     // 是否是试听,0:试听音乐,1:正式播放音乐    unsigned char reserved[4];    SAvMusic stMusic;            // 当前音乐 } __attribute__((packed)) SMsgAVIoctrlGetMusicStateResp;
(七十九)音乐播放控制
命令宏定义:请求(IOTYPE_USER_IPCAM_PLAY_MUSIC_REQ = 0x9054) | 响应(IOTYPE_USER_IPCAM_PLAY_MUSIC_RESP = 0x9055)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device开始/停止播放音乐,Device告知APP设置结果。
数据结构:
// 请求结构 typedef struct {    unsigned int channel;         // Camera Index    unsigned int isPlaying;       // 播放状态,0:停止播放,1:正在播放    unsigned int isTryMusic;      // 是否是试听,0:试听音乐,1:正式播放音乐    unsigned char reserved[4];    SAvMusic stMusic;             // 当前音乐 } __attribute__((packed)) SMsgAVIoctrlPlayMusicReq; // 响应结构 typedef struct {    unsigned int result;          // 0:成功,其他:失败    unsigned char reserved[4]; }SMsgAVIoctrlPlayMusicResp;
(八十)删除录制音乐
命令宏定义:请求(IOTYPE_USER_IPCAM_DELETE_MUSIC_REQ = 0x9056) | 响应(IOTYPE_USER_IPCAM_DELETE_MUSIC_RESP = 0x9057)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device删除录制音乐,Device告知APP删除录制音乐结果。
数据结构:
// 请求结构 typedef struct {    unsigned int channel;        // Camera Index    unsigned char reserved[4];    SAvMusic stMusic;            // 当前音乐 }SMsgAVIoctrlDeleteMusicReq; // 响应结构 typedef struct {    unsigned int result;         // 0:成功,其他:失败    unsigned char reserved[4]; }SMsgAVIoctrlDeleteMusicResp;
(八十一)设置音乐
命令宏定义:请求(IOTYPE_USER_IPCAM_SET_MUSIC_REQ = 0x9058) | 响应(IOTYPE_USER_IPCAM_SET_MUSIC_RESP = 0x9059)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device进行音乐设置,Device告知APP设置结果。
数据结构:
// 请求结构 typedef struct {    unsigned int channel;        // Camera Index    unsigned char reserved[4];    SAvMusic stMusic;            // 设置音乐 } __attribute__((packed)) SMsgAVIoctrlSetMusicReq; // 响应结构 typedef struct {    unsigned int result;        // 0:成功,其他:失败    unsigned char reserved[4]; }SMsgAVIoctrlSetMusicResp;
补充说明:设置选中时,如果是单曲循环模式,则循环播放该音乐;如果是列表播放模式或者随机播放,则表示从该音乐开始按列表或者随机播放。
(八十二)获取音乐播放模式状态
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_MUSIC_PLAY_MODE_REQ = 0x905A) | 响应(IOTYPE_USER_IPCAM_GET_MUSIC_PLAY_MODE_RESP = 0x905B)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device获取音乐播放模式状态(当播放模式改变时,设备应主动告知APP)。
数据结构:
// 请求结构 typedef struct {    unsigned int channel;       // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetMusicPlayModeReq; // 响应结构 typedef struct {    unsigned int channel;       // Camera Index    unsigned int playMode;      // 播放模式,0:单曲循环,1:列表播放,2:随机播放    unsigned char reserved[8]; }SMsgAVIoctrlGetMusicPlayModeResp;
(八十三)设置音乐播放模式
命令宏定义:请求(IOTYPE_USER_IPCAM_SET_MUSIC_PLAY_MODE_REQ = 0x905C) | 响应(IOTYPE_USER_IPCAM_SET_MUSIC_PLAY_MODE_RESP = 0x905D)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device设置播放模式,Device告知APP设置结果。
数据结构:
// 请求结构(修正原拼写错误:SMsgAVIoctrlSetMusicPlayModeRep → SMsgAVIoctrlSetMusicPlayModeReq) typedef struct {    unsigned int channel;       // Camera Index    unsigned int playMode;      // 播放模式,0:单曲循环,1:列表播放,2:随机播放    unsigned char reserved[4]; }SMsgAVIoctrlSetMusicPlayModeReq; // 响应结构 typedef struct {    unsigned int channel;     // Camera Index    unsigned int result;      // 0:成功,其他:失败    unsigned char reserved[4]; }SMsgAVIoctrlSetMusicPlayModeResp;
(八十四)获取设备音量
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_DEVICE_VOL_REQ = 0x9060) | 响应(IOTYPE_USER_IPCAM_GET_DEVICE_VOL_RESP = 0x9061)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device获取设备音量状态,Device告知APP设备音量。
数据结构:
// 请求结构 typedef struct {    unsigned int channel;       // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetDeviceVolReq; // 音量信息结构 typedef struct {    unsigned int vol;       // 0 - 100    unsigned int volType;   // 0:麦克风,1:扬声器 } SAvVol; // 响应结构 typedef struct {    unsigned int channel;         // Camera Index    unsigned char reserved[4];    // 保留位    unsigned int count;    SAvVol vol[1]; } __attribute__((packed)) SMsgAVIoctrlGetDeviceVolResp;
(八十五)设置设备音量
命令宏定义:请求(IOTYPE_USER_IPCAM_SET_DEVICE_VOL_REQ = 0x9062) | 响应(IOTYPE_USER_IPCAM_SET_DEVICE_VOL_RESP = 0x9063)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device设置设备音量,Device告知APP设置结果。
数据结构:
// 请求结构 typedef struct {    unsigned int channel;         // Camera Index    unsigned char reserved[4];    // 保留位    unsigned int count;    SAvVol vol[1]; }SMsgAVIoctrlSetDeviceVolReq; // 响应结构 typedef struct {    unsigned int channel;       // Camera Index    unsigned int result;        // 0:成功,其他:失败    unsigned char reserved[4]; }SMsgAVIoctrlSetDeviceVolResp;
(八十六)获取温度
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_DEVICE_TEMPERATURE_REQ = 0x9064) | 响应(IOTYPE_USER_IPCAM_GET_DEVICE_TEMPERATURE_RESP = 0x9065)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device获取设备温度状态(当温度改变时,设备应主动告知APP)。
数据结构:
// 请求结构 typedef struct {    unsigned int channel;        // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetDeviceTemperatureReq; // 响应结构 typedef struct {    unsigned int channel;       // Camera Index    unsigned int integer;       // 小数点前的温度,比如36.2,此处就是36    unsigned int decimal;       // 小数点后的温度,比如36.2,此处是2    unsigned int unit;          // 单位,0:摄氏度(℃),1:华氏度(℉)    unsigned char reserved[4]; }SMsgAVIoctrlGetDeviceTemperatureResp;
(八十七)获取温度单位
命令宏定义:请求(IOTYPE_USER_IPCAM_GET_DEVICE_TEMPERATUREUNIT_REQ = 0x9066) | 响应(IOTYPE_USER_IPCAM_GET_DEVICE_TEMPERATUREUNIT_RESP = 0x9067)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device获取设备温度单位状态,Device告知APP设备温度单位。
数据结构:
// 请求结构 typedef struct {    unsigned int channel;        // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetDeviceTemperatureUnitReq; // 响应结构 typedef struct {    unsigned int channel;       // Camera Index    unsigned int unit;          // 单位,0:摄氏度(℃),1:华氏度(℉)    unsigned char reserved[4]; }SMsgAVIoctrlGetDeviceTemperatureUnitResp;
(八十八)设置温度单位
命令宏定义:请求(IOTYPE_USER_IPCAM_SET_DEVICE_TEMPERATUREUNIT_REQ = 0x9068) | 响应(IOTYPE_USER_IPCAM_SET_DEVICE_TEMPERATUREUNIT_RESP = 0x9069)
数据流向:请求(APP → Device) | 响应(Device → APP)
功能说明:APP告知Device设置设备温度单位状态,Device告知APP设备温度单位响应结果。
数据结构:
// 请求结构 typedef struct {    unsigned int channel;       // Camera Index    unsigned int unit;          // 单位,0:摄氏度(℃),1:华氏度(℉)    unsigned char reserved[4]; }SMsgAVIoctrlSetDeviceTemperatureUnitReq; // 响应结构 typedef struct {    unsigned int channel;      // Camera Index    unsigned int result;       // 0:成功,其他:失败    unsigned char reserved[4]; }SMsgAVIoctrlSetDeviceTemperatureUnitResp;

即刻开启您的物联网之旅

联系解决方案专家
Kalay App
资讯安全白皮书
全球专利布局
解决方案
新闻动态
公司动态
行业资讯
媒体报道
永续发展
经营者的话
社会参与
环境永续
公司治理

+86 755 27702549

7×24小时服务热线

法律声明 隐私权条款

关注“TUTK”

TUTK服务尽在掌握

© 2022 星空无限传媒xk8027版权所有粤ICP备14023641号
在线咨询
扫一扫

TUTK服务尽在掌握

全国免费服务热线
+86 755 27702549

返回顶部