日韩美女乱婬AAA高清视频_国产色爱AV资源综合区_国产女同性黄网在线观看_欧美日韩一卡2卡3卡4卡新区乱码_俺来也俺也啪www色_精品久久久久久综合日本_99国内偷揿国产精品人妻_国产蜜芽剧果冻传媒_日本特级aaaaaaaa片_国产偷人妻精品一区二区在线

簡(jiǎn)體中文

公版IO Command定義

IPCAM設(shè)備IOCtrl命令說明 | TUTK P2P SDK 開發(fā)指南

一、說明

本文檔將詳細(xì)介紹IPCAM設(shè)備的IOCtrl命令集,包括命令宏定義、數(shù)據(jù)流向、功能說明及數(shù)據(jù)結(jié)構(gòu)定義,適用于APP與IPCAM設(shè)備之間的P2P通信開發(fā),數(shù)據(jù)結(jié)構(gòu)采用結(jié)構(gòu)體的方式定義,其他平臺(tái)可能會(huì)需要按照此格式進(jìn)行拼接和解析,本文檔所有指令中的時(shí)間,都采用UTC+0時(shí)區(qū),以適應(yīng)跨時(shí)區(qū)訪問的問題。

二、命令詳情

(一)請(qǐng)求設(shè)備發(fā)送圖像實(shí)時(shí)流
命令宏定義:IOTYPE_USER_IPCAM_START = 0x01FF;
數(shù)據(jù)流向:APP → Device
功能說明:APP告知Device開始發(fā)送視頻數(shù)據(jù)。
數(shù)據(jù)結(jié)構(gòu):
typedef struct{    unsigned int channel;           // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlAVStream;
(二)請(qǐng)求設(shè)備停止傳送圖像實(shí)時(shí)流
命令宏定義:IOTYPE_USER_IPCAM_STOP = 0x02FF;
數(shù)據(jù)流向:APP → Device
功能說明:APP告知Device停止發(fā)送視頻數(shù)據(jù)。
數(shù)據(jù)結(jié)構(gòu):
typedef struct{    unsigned int channel;         // Camera Index    unsigned char reserved[4]; } SMsgAVIoctrlAVStream;
(三)請(qǐng)求設(shè)備開始接收?qǐng)D像實(shí)時(shí)流
命令宏定義:IOTYPE_USER_IPCAM_START_CLIENT = 0x03FF;
數(shù)據(jù)流向:APP → Device
功能說明:APP告知Device開始接收視頻數(shù)據(jù)。
數(shù)據(jù)結(jié)構(gòu):
typedef struct{    unsigned int channel;           // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlAVStream;
(四)請(qǐng)求設(shè)備停止接收?qǐng)D像實(shí)時(shí)流
命令宏定義:IOTYPE_USER_IPCAM_STOP_CLIENT = 0x04FF;
數(shù)據(jù)流向:APP → Device
功能說明:APP告知Device停止接收視頻數(shù)據(jù)。
數(shù)據(jù)結(jié)構(gòu):
typedef struct{    unsigned int channel;         // Camera Index    unsigned char reserved[4]; } SMsgAVIoctrlAVStream;
(五)請(qǐng)求設(shè)備開始發(fā)送音頻實(shí)時(shí)流
命令宏定義:IOTYPE_USER_IPCAM_AUDIOSTART = 0x0300;
數(shù)據(jù)流向:APP → Device
功能說明:APP告知Device開始發(fā)送音頻數(shù)據(jù)。
數(shù)據(jù)結(jié)構(gòu):
typedef struct{    unsigned int channel;         // Camera Index    unsigned char reserved[4]; } SMsgAVIoctrlAVStream;
(六)請(qǐng)求設(shè)備停止發(fā)送音頻實(shí)時(shí)流
命令宏定義:IOTYPE_USER_IPCAM_AUDIOSTOP = 0x0301;
數(shù)據(jù)流向:APP → Device
功能說明:APP告知Device停止發(fā)送音頻數(shù)據(jù)。
數(shù)據(jù)結(jié)構(gòu):
typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; } SMsgAVIoctrlAVStream;
(七)設(shè)定設(shè)備SD卡錄像模式
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SETRECORD_REQ = 0x0310) | 響應(yīng)(IOTYPE_USER_IPCAM_SETRECORD_RESP = 0x0311)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device要設(shè)置設(shè)備SD卡錄像模式,Device告知App設(shè)置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 枚舉定義 typedef enum{    AVIOTC_RECORDTYPE_OFF = 0x00,    AVIOTC_RECORDTYPE_FULLTIME = 0x01,    AVIOTC_RECORDTYPE_ALARM = 0x02,    AVIOTC_RECORDTYPE_MANUAL = 0x03 }ENUM_RECORD_TYPE; // 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;           // Camera Index    unsigned int recordType;        // 參考ENUM_RECORD_TYPE    unsigned char reserved[4]; }SMsgAVIoctrlSetRecordReq, SMsgAVIoctrlGetRecordResq; // 響應(yīng)結(jié)構(gòu) typedef struct{    int result;                     // 0:成功; otherwise: 失??;    unsigned char reserved[4]; }SMsgAVIoctrlSetRecordResp;
(八)獲取設(shè)備當(dāng)前SD卡錄像模式
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GETRECORD_REQ = 0x0312) | 響應(yīng)(IOTYPE_USER_IPCAM_GETRECORD_RESP = 0x0313)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device要獲取設(shè)備SD卡錄像模式,Device將錄像類型配置回傳給App。
數(shù)據(jù)結(jié)構(gòu):
// 枚舉定義 typedef enum{    AVIOTC_RECORDTYPE_OFF = 0x00,    AVIOTC_RECORDTYPE_FULLTIME = 0x01,    AVIOTC_RECORDTYPE_ALARM = 0x02,    AVIOTC_RECORDTYPE_MANUAL = 0x03 }ENUM_RECORD_TYPE; // 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;         // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetRecordReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int channel;           // Camera Index    unsigned int recordType;        // 參考ENUM_RECORD_TYPE    unsigned char reserved[4]; }SMsgAVIoctrlSetRecordReq, SMsgAVIoctrlGetRecordResq;
(九)獲取設(shè)備事件列表
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_LISTEVENT_REQ = 0x0318) | 響應(yīng)(IOTYPE_USER_IPCAM_LISTEVENT_RESP = 0x0319)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device要獲取設(shè)備事件列表,Device將錄像列表回傳給App。
數(shù)據(jù)結(jié)構(gòu):
// 時(shí)間結(jié)構(gòu) typedef struct{    unsigned short year;       // 年份數(shù)    unsigned char month;       // 自一月以來的月數(shù),范圍為1到12    unsigned char day;         // 每月的日期,范圍為1到31    unsigned char wday;        // 自星期日以來的天數(shù),范圍為0到6(星期日=0)    unsigned char hour;        // 午夜之后的小時(shí)數(shù),范圍為0到23    unsigned char minute;      // 小時(shí)后的分鐘數(shù),范圍為0到59    unsigned char second;      // 分鐘后的秒數(shù),范圍為0到59 }STimeDay; // 事件類型枚舉 typedef enum{    AVIOCTRL_EVENT_ALL = 0x00,                 // 所有事件類型    AVIOCTRL_EVENT_MOTI = 0x01,                // 移動(dòng)偵測(cè)    AVIOCTRL_EVENT_VIDEOLOST = 0x02,           // 視頻遺失    AVIOCTRL_EVENT_IOALARM = 0x03,             // IO報(bào)警    AVIOCTRL_EVENT_MOTI_END = 0x04,            // 移動(dòng)偵測(cè)結(jié)束    AVIOCTRL_EVENT_VIDEORESUME = 0x05,         // 視頻恢復(fù)    AVIOCTRL_EVENT_IOALARMPASS = 0x06,         // IO報(bào)警結(jié)束    AVIOCTRL_EVENT_MOVIE = 0x07,               // 影片    AVIOCTRL_EVENT_TIME_LAPSE = 0x08,          // 延時(shí)拍攝    AVIOCTRL_EVENT_EMERGENCY = 0x09,           // 緊急事件    AVIOCTRL_EVENT_EXPT_REBOOT = 0x10,         // 系統(tǒng)異常重啟    AVIOCTRL_EVENT_SDFAULT = 0x11,             // SD卡錯(cuò)誤    AVIOCTRL_EVENT_FULLTIME_RECORDING = 0x12,  // 全時(shí)錄像    AVIOCTRL_EVENT_PIR = 0x13,                 // PIR偵測(cè)    AVIOCTRL_EVENT_RINGBELL = 0x14,            // 門鈴呼叫    AVIOCTRL_EVENT_SOUND = 0x15,               // 聲音    AVIOCTRL_EVENT_HUMANOID_DETECTION = 0x16,  // 人形偵測(cè)    AVIOCTRL_EVENT_CRY = 0x17,                 // 哭聲偵測(cè)    AVIOCTRL_EVENT_FALL = 0x18,                // 跌倒偵測(cè)    AVIOCTRL_EVENT_FACE = 0x19,                // 人臉偵測(cè)    AVIOCTRL_EVENT_DEVICE_SHARE = 0x20,        // 設(shè)備分享    AVIOCTRL_EVENT_ABNORMAL_NOISE = 0x21,       // 異響偵測(cè)    AVIOCTRL_EVENT_SUBSCRIPTI_SUCCESS = 0x22,  // 訂閱成功    AVIOCTRL_EVENT_SUBSCRIPTI_EXPIRE = 0x23,   // 訂閱過期    AVIOCTRL_EVENT_FW_UPGRADE = 0x24,          // 版本更新    AVIOCTRL_EVENT_NOTAPPEAR = 0x25,           // 未出現(xiàn)提醒    AVIOCTRL_EVENT_INTELLIGENT_WATCHER = 0x26, // 智能看家    AVIOCTRL_EVENT_REGI = 0x27,                // 區(qū)域入侵    AVIOCTRL_EVENT_ELECTR = 0x28,              // 電子圍欄    AVIOCTRL_EVENT_TELEPH = 0x29,              // 電話告警    AVIOCTRL_EVENT_TOY = 0x37,                 // 玩具通知    AVIOCTRL_EVENT_PET = 0x40,                 // 寵物偵測(cè)    AVIOCTRL_EVENT_REMOTE_LOGIN = 0x48,        // 異地登錄    AVIOCTRL_EVENT_VIDEO_CALL = 0x66,          // 視頻呼叫    AVIOCTRL_EVENT_DEVICE_OFFLINE = 0x6F,      // 設(shè)備離線    AVIOCTRL_EVENT_USER_CALL = 0x7D0           // 門鈴呼叫 }ENUM_EVENTTYPE; // 事件結(jié)構(gòu) typedef struct{    STimeDay stTime;    unsigned char event;        // 參考ENUM_EVENTTYPE    unsigned char status;       // 0x00:未讀取 0x01:已讀取 0x02:無錄像    unsigned short duration;    // 事件持續(xù)時(shí)間(秒) }SAvEvent; // 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    STimeDay stStartTime;       // 搜尋起始時(shí)間(修正:原TimeDay應(yīng)為STimeDay)    STimeDay stEndTime;         // 搜尋結(jié)束時(shí)間    unsigned char event;        // 事件類型,參考ENUM_EVENTTYPE    unsigned char status;       // 0x00:未讀取 0x01:已讀取 0x02:無錄像    unsigned char reserved[2]; }SMsgAVIoctrlListEventReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned int total;         // 搜索的總事件數(shù)    unsigned char index;        // 數(shù)據(jù)包索引(0,1,2...)    unsigned char endflag;      // 1表示最后一個(gè)數(shù)據(jù)包    unsigned char count;        // 此封包中的事件數(shù)    unsigned char reserved[1];    SAvEvent stEvent[0];        // 事件數(shù)據(jù)起始地址 }SMsgAVIoctrlListEventResp;
(十)SD卡事件回播控制播放
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_RECORD_PLAYCTRL_REQ = 0x031A) | 響應(yīng)(IOTYPE_USER_IPCAM_RECORD_PLAYCTRL_RESP = 0x031B)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device要進(jìn)行錄像事件回放,Device將錄像回放結(jié)果回傳給App(APP收固定字節(jié)長度)。
數(shù)據(jù)結(jié)構(gòu):
// 播放控制枚舉 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; // 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned int command;       // 播放指令,參考ENUM_PLAYCONTROL    unsigned int Param;         // 指令參數(shù),用戶自定義    STimeDay stTimeDay;         // 事件列表起始時(shí)間    unsigned char endflag;      // 0:APP播放完畢 1:web繼續(xù)播放下一個(gè)    unsigned char downloadFlag; // 0:回放模式 1:下載模式    unsigned char reserved[2]; } SMsgAVIoctrlPlayRecordReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int command;       // 播放指令,參考ENUM_PLAYCONTROL    int result;                 // result>0:回放通道ID; result<0:異常(-1:回放異常,-2:超出最大連接數(shù))    unsigned int size;          // 事件回放文件大小    unsigned char respond;    unsigned char reserved[3]; } SMsgAVIoctrlPlayRecordResp;                
(十一)設(shè)置設(shè)備解析度檔位
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SETSTREAMCTRL_REQ = 0x0320) | 響應(yīng)(IOTYPE_USER_IPCAM_SETSTREAMCTRL_RESP = 0x0321)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device要設(shè)置設(shè)備的解析度,Device告知APP解析度設(shè)置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 畫質(zhì)等級(jí)枚舉 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; // 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned char quality;      // 參考ENUM_QUALITY_LEVEL    unsigned char reserved[3]; } SMsgAVIoctrlSetStreamCtrlReq; // 響應(yīng)結(jié)構(gòu)(修正:原命名錯(cuò)誤) typedef struct{    unsigned int result;        // 0: 成功; otherwise: 失敗    unsigned char reserved[4]; } SMsgAVIoctrlSetStreamCtrlResp;
(十二)獲取設(shè)備目前解析度檔位
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GETSTREAMCTRL_REQ = 0x0322) | 響應(yīng)(IOTYPE_USER_IPCAM_GETSTREAMCTRL_RESP = 0x0323)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device要獲取設(shè)備當(dāng)前的解析度,Device將設(shè)備解析度配置回傳給App。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetStreamCtrlReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned char quality;      // 參考ENUM_QUALITY_LEVEL    unsigned char reserved[3]; } SMsgAVIoctrlSetStreamCtrlReq, SMsgAVIoctrlGetStreamCtrlResp;
(十三)設(shè)置設(shè)備位移偵測(cè)之靈敏度
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SETMOTION_DETECT_REQ = 0x0324) | 響應(yīng)(IOTYPE_USER_IPCAM_SETMOTION_DETECT_RESP = 0x0325)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device要設(shè)置設(shè)備位移偵測(cè)的靈敏度,Device告知APP設(shè)置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;               // Camera Index    unsigned int sensitivity;           // 0(禁用)~100(最大):0=關(guān)閉,25=低,50=中,75=高,100=最高 }SMsgAVIoctrlSetMotionDetectReq, SMsgAVIoctrlGetMotionDetectResp; // 響應(yīng)結(jié)構(gòu) typedef struct{    int result;                         // 0: 成功; otherwise: 失敗    unsigned char reserved[4]; }SMsgAVIoctrlSetMotionDetectResp;
(十四)獲取設(shè)備目前位移偵測(cè)之靈敏度
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GETMOTION_DETECT_REQ = 0x0326) | 響應(yīng)(IOTYPE_USER_IPCAM_GETMOTION_DETECT_RESP = 0x0327)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device要獲取設(shè)備位移偵測(cè)的靈敏度,Device將配置回傳給App。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; } SMsgAVIoctrlGetMotionDetectReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int channel;               // Camera Index    unsigned int sensitivity;           // 0(禁用)~100(最大):0=關(guān)閉,25=低,50=中,75=高,100=最高 }SMsgAVIoctrlSetMotionDetectReq, SMsgAVIoctrlGetMotionDetectResp;
(十五)獲取當(dāng)前設(shè)備通道數(shù)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GETSUPPORTSTREAM_REQ = 0x0328) | 響應(yīng)(IOTYPE_USER_IPCAM_GETSUPPORTSTREAM_RESP = 0x0329)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device要獲取目前設(shè)備頻道數(shù),Device將配置回傳給App。
數(shù)據(jù)結(jié)構(gòu):
// 流定義結(jié)構(gòu) typedef struct{    unsigned short index;       // 設(shè)備使用的stream index    unsigned short channel;     // AVAPIs使用的channel index    char reserved[4]; }SStreamDef; // 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned char reserved[4]; }SMsgAVIoctrlGetSupportStreamReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int number;        // 可支持的stream數(shù)量    SStreamDef streams[0]; }SMsgAVIoctrlGetSupportStreamResp;
(十六)獲取設(shè)備對(duì)講支持的音頻格式
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GETAUDIOOUTFORMAT_REQ = 0x032A) | 響應(yīng)(IOTYPE_USER_IPCAM_GETAUDIOOUTFORMAT_RESP = 0x032B)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device要獲取設(shè)備音頻格式,Device將音頻格式回傳給App。
數(shù)據(jù)結(jié)構(gòu):
// 采樣率枚舉 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 // 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;       // camera index    char reserved[4]; }SMsgAVIoctrlGetAudioOutFormatReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int channel;       // camera index    int format;                 // 參考ENUM_CODECID in AVFRAMEINFO.h    char sample_rate;    char bitdata;    char channels;              // 可支持的通道數(shù)量    char avservchannel;         // 0:子通道;1:主通道;默認(rèn)0 }SMsgAVIoctrlGetAudioOutFormatResp;
(十七)獲取設(shè)備信息
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_DEVINFO_REQ = 0x0330) | 響應(yīng)(IOTYPE_USER_IPCAM_DEVINFO_RESP = 0x0331)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device要獲取設(shè)備資訊,Device將設(shè)備資訊回傳給App。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned char reserved[4]; }SMsgAVIoctrlDeviceInfoReq; // 響應(yīng)結(jié)構(gòu) 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;
(十八)變更設(shè)備密碼
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SETPASSWORD_REQ = 0x0332) | 響應(yīng)(IOTYPE_USER_IPCAM_SETPASSWORD_RESP = 0x0333)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device要變更設(shè)備密碼,Device告知APP變更結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    char oldpasswd[32];         // 舊密碼    char newpasswd[32];         // 新密碼 }SMsgAVIoctrlSetPasswdReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    int result;                 // 0x00:成功, 否則失敗    unsigned char reserved[4]; }SMsgAVIoctrlSetPasswdResp;
(十九)SD卡事件回放進(jìn)度控制
命令宏定義:獲取時(shí)長(0x033A/0x033B) | 設(shè)置進(jìn)度(0x033C/0x033D)
數(shù)據(jù)流向:獲取時(shí)長(APP→Device/Device→APP) | 設(shè)置進(jìn)度(APP→Device/Device→APP)
功能說明:獲取事件時(shí)長信息(視頻流時(shí)間戳為UTC格式);從指定時(shí)間播放(App不發(fā)送0x2ff停止視頻流)。
數(shù)據(jù)結(jié)構(gòu):
// 獲取時(shí)長請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    STimeDay stTimeDay;         // 事件的時(shí)間長度    unsigned char reserved[4]; }SMsgAVIoctrlGetPlaybackReq; // 獲取時(shí)長響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int videoTime;     // 事件視頻時(shí)間(秒)    unsigned long size;         // 事件大?。ㄗ止?jié))    unsigned char reserved[4]; }SMsgAVIoctrlGetPlaybackResp; // 設(shè)置進(jìn)度請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    STimeDay stTimeDay;         // 事件的時(shí)間長度    unsigned int progressTime;  // 事件進(jìn)度時(shí)間(秒)    unsigned char reserved[4]; }SMsgAVIoctrlSetRecordProgessReq; // 設(shè)置進(jìn)度響應(yīng)結(jié)構(gòu)(修正:原拼寫錯(cuò)誤) typedef struct{    unsigned char result;       // 0:成功;otherwise:失敗    unsigned char reserved[3]; }SMsgAVIoctrlSetRecordProgressResp;
(二十)獲取設(shè)備周圍WIFI列表
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_WIFI_LIST_REQ = 0x0340) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_WIFI_LIST_RESP = 0x0341)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device要獲取周圍可用的Wifi列表,Device搜索附近Wifi并將列表信息回傳給App。
數(shù)據(jù)結(jié)構(gòu):
// Wifi信息結(jié)構(gòu) typedef struct{    char ssid[32];              // Wifi名稱    char bssid[18];             // Wifi物理地址(MAC)    unsigned char rssi;         // 信號(hào)強(qiáng)度(0-100)    unsigned char encrypt;      // 加密方式:0=無加密,1=WEP,2=WPA,3=WPA2,4=WPA/WPA2混合    unsigned char channel;      // 信道號(hào)    unsigned char reserved[1]; }SWifiInfo; // 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned char reserved[4]; }SMsgAVIoctrlGetWifiListReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned char count;        // 搜索到的Wifi數(shù)量    unsigned char reserved[3];    SWifiInfo wifiInfo[0];      // Wifi信息列表 }SMsgAVIoctrlGetWifiListResp;
(二十一)設(shè)定設(shè)備的網(wǎng)絡(luò)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SETWIFI_REQ = 0x0342) | 響應(yīng)(IOTYPE_USER_IPCAM_SETWIFI_RESP = 0x0343)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device要設(shè)置設(shè)備的wifi,Device告知APP設(shè)置設(shè)備wifi的結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) 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; // 響應(yīng)結(jié)構(gòu) typedef struct{    int result;                 // 如果已連接WiFi,則返回0,否則返回1。    unsigned char reserved[4]; }SMsgAVIoctrlSetWifiResp;
(二十二)獲取設(shè)備目前所設(shè)置的WIFI
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GETWIFI_REQ = 0x0344) | 響應(yīng)(IOTYPE_USER_IPCAM_GETWIFI_RESP = 0x0345)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device要獲取設(shè)備當(dāng)前所設(shè)置的wifi,Device將設(shè)備當(dāng)前wifi配置放到IOCtrl資料并回傳給App。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned char reserved[4]; }SMsgAVIoctrlGetWifiReq; // 響應(yīng)結(jié)構(gòu) 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;       // 信號(hào)強(qiáng)度 0--100%    unsigned char status;       // 參考SWifiAp的"status" }SMsgAVIoctrlGetWifiResp;
(二十三)設(shè)定設(shè)備目前所設(shè)置的WIFI(64bit密碼)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SETWIFI_REQ2 = 0x0346) | 響應(yīng)(IOTYPE_USER_IPCAM_GETWIFI_RESP2 = 0x0347)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:該command支持64bit密碼,同IOTYPE_USER_IPCAM_SETWIFI_REQ = 0x0342一起發(fā)送。APP告知Device要設(shè)定設(shè)備目前所設(shè)置的wifi,Device將設(shè)備當(dāng)前wifi配置放到IOCtrl資料并回傳給App。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) 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; // 響應(yīng)結(jié)構(gòu) 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;       // 信號(hào)強(qiáng)度 0--100%    unsigned char status;       // 參考SWifiAp的"status" }SMsgAVIoctrlGetWifiResp2;
(二十四)請(qǐng)求設(shè)備開始對(duì)講
命令宏定義:IOTYPE_USER_IPCAM_SPEAKERSTART = 0x0350;
數(shù)據(jù)流向:APP → Device
功能說明:APP告知Device開始接收音頻數(shù)據(jù)。
數(shù)據(jù)結(jié)構(gòu):
typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; } SMsgAVIoctrlAVStream;
(二十五)請(qǐng)求設(shè)備關(guān)閉對(duì)講
命令宏定義:IOTYPE_USER_IPCAM_SPEAKERSTOP = 0x0351;
數(shù)據(jù)流向:APP → Device
功能說明:APP告知Device停止接收音頻數(shù)據(jù)。
數(shù)據(jù)結(jié)構(gòu):
typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; } SMsgAVIoctrlAVStream;
(二十六)設(shè)置畫面鏡像翻轉(zhuǎn)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SET_VIDEOMODE_REQ = 0x0370) | 響應(yīng)(IOTYPE_USER_IPCAM_SET_VIDEOMODE_RESP = 0x0371)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device進(jìn)行鏡像/翻轉(zhuǎn)設(shè)置,Device告知APP設(shè)置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 視頻模式枚舉 typedef enum{    AVIOCTRL_VIDEOMODE_NORMAL = 0x00,    AVIOCTRL_VIDEOMODE_FLIP = 0x01,        // 垂直翻轉(zhuǎn)    AVIOCTRL_VIDEOMODE_MIRROR = 0x02,      // 水平翻轉(zhuǎn)    AVIOCTRL_VIDEOMODE_FLIP_MIRROR = 0x03  // 垂直和水平翻轉(zhuǎn) }ENUM_VIDEO_MODE; // 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned char mode;         // 參考 ENUM_VIDEO_MODE    unsigned char reserved[3]; }SMsgAVIoctrlSetVideoModeReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned char result;       // 0: 成功; otherwise:失??;    unsigned char reserved[3]; }SMsgAVIoctrlSetVideoModeResp;
(二十七)獲取畫面鏡像翻轉(zhuǎn)模式
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_VIDEOMODE_REQ = 0x0372) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_VIDEOMODE_RESP = 0x0373)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device獲取鏡像/翻轉(zhuǎn)設(shè)置狀態(tài),Device告知APP目前畫面鏡像/翻轉(zhuǎn)的設(shè)置狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetVideoModeReq; // 視頻模式枚舉 typedef enum{    AVIOCTRL_VIDEOMODE_NORMAL = 0x00,    AVIOCTRL_VIDEOMODE_FLIP = 0x01,        // 垂直翻轉(zhuǎn)    AVIOCTRL_VIDEOMODE_MIRROR = 0x02,      // 水平翻轉(zhuǎn)    AVIOCTRL_VIDEOMODE_FLIP_MIRROR = 0x03  // 垂直和水平翻轉(zhuǎn) }ENUM_VIDEO_MODE; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned char mode;         // 參考 ENUM_VIDEO_MODE    unsigned char reserved[3]; }SMsgAVIoctrlGetVideoModeResp;
(二十八)格式化SD卡
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_FORMATEXTSTORAGE_REQ = 0x0380) | 響應(yīng)(IOTYPE_USER_IPCAM_FORMATEXTSTORAGE_RESP = 0x0381)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device執(zhí)行格式化SD卡操作,Device告知APP已格式化SD卡結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int storage;       // Storage index(例如sdcard插槽= 0,內(nèi)部閃存= 1,...)    unsigned char reserved[4]; }SMsgAVIoctrlFormatExtStorageReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int storage;       // Storage index    char result;                // 0: 成功;                                // -1:不支持格式化指令;                                // otherwise: 失?。?    unsigned char reserved[3]; }SMsgAVIoctrlFormatExtStorageResp;
(二十九)獲取NVR設(shè)備通道數(shù)量
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_NVR_CHANNEL_NUMBER_REQ = 0x5A4) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_NVR_CHANNEL_NUMBER_RESP = 0x5A5)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device獲取設(shè)備Channel的接口數(shù)量,Device告知APP目前設(shè)備Channel的接口數(shù)量。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned char reserved[4]; }SMsgAVIoctrlGetNVRChannelNumberReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int number;        // 設(shè)備的通道數(shù)量    unsigned char reserved[4]; }SMsgAVIoctrlGetNVRChannelNumberResp;
(三十)獲取NVR通道名稱
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_CHANNEL_NAME_REQ = 0x5B0) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_CHANNEL_NAME_RESP = 0x5B1)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device獲取設(shè)備的通道名稱,Device告知APP設(shè)備的通道名稱。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned char reserved[4]; }SMsgAVIoctrlGetChannelNameReq; // 通道信息結(jié)構(gòu) typedef struct{    unsigned int channel;       // camera index    unsigned char name[24];     // 通道名稱 } SChannelInfo; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned char count;        // 通道數(shù)量    unsigned char reserved[3];    SChannelInfo sChannelInfo[0]; // SChannelInfo數(shù)組 }SMsgAVIoctrlGetChannelNameResp;
(三十一)設(shè)置NVR通道名稱
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SET_CHANNEL_NAME_REQ = 0x5B2) | 響應(yīng)(IOTYPE_USER_IPCAM_SET_CHANNEL_NAME_RESP = 0x5B3)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device要設(shè)置設(shè)備的通道名稱,Device告知APP設(shè)置設(shè)備通道名稱的結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned char count;        // SChannelInfos的數(shù)量    unsigned char reserved[3];    SChannelInfo sChannelInfo[0]; // SChannelInfo數(shù)組 }SMsgAVIoctrlSetChannelNameReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned char result;       // 0:成功; otherwise:失??;    unsigned char reserved[3]; }SMsgAVIoctrlSetResetResp;
(三十二)門鈴呼叫
命令宏定義:請(qǐng)求(IOTYPE_XM_CALL_REQ = 0x700) | 響應(yīng)(IOTYPE_XM_CALL_RESP = 0x701) | 通知(IOTYPE_XM_CALL_IND = 0x702)
數(shù)據(jù)流向:請(qǐng)求(Device → APP) | 響應(yīng)(APP → Device) | 通知(Device → APP)
功能說明:主要應(yīng)用于可視門鈴?fù)ㄔ拡?chǎng)景。Device告知APP有用戶呼叫;APP告知Device是否進(jìn)行接聽;Device告知APP是否有其他用戶接聽。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu)(Device→APP) typedef struct{    unsigned char index;        // 門索引號(hào),0:門1; 1:門2;    STimeDay stTime;            // 事件時(shí)間    unsigned char reserved[3]; } SMsgAVIoctrlCallReq; // 響應(yīng)結(jié)構(gòu)(APP→Device) typedef struct{    unsigned char index;        // 門索引號(hào),0:門1;1: 門2;    int nAnswered;              // 0:掛斷;1:接聽;    unsigned char reserved[3]; }SMsgAVIoctrlCallResp; // 通知結(jié)構(gòu)(Device→APP) typedef struct{    unsigned char index;        // 門索引號(hào),0:門1;1:門2;    unsigned char type;         // 類型,0:有用戶呼叫;1:有其他用戶應(yīng)答;    STimeDay stTime;            // 事件時(shí)間    unsigned char reserved[3]; }SMsgAVIoctrlCallInd;
(三十三)修改設(shè)備名稱
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_PUSH_DEVICENAME_REQ = 0x0736) | 響應(yīng)(IOTYPE_USER_IPCAM_PUSH_DEVICENAME_RESP = 0x0737)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device設(shè)置當(dāng)前設(shè)備名稱,Device告知APP設(shè)備名稱更新結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;       // camera index    char devicename[150];       // 當(dāng)前設(shè)備名稱 }SMsgAVIoctrlPushDeviceNameReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    int res;                    // 0:成功;otherwise:失??;    char reserved[4]; }SMsgAVIoctrlPushDeviceNameResp;
(三十四)同步手機(jī)時(shí)間給設(shè)備
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SET_TIME_SYNC_REQ = 0x0816) | 響應(yīng)(IOTYPE_USER_IPCAM_SET_TIME_SYNC_RESP = 0x0817)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device進(jìn)行手機(jī)時(shí)間同步,Device告知APP時(shí)間同步結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) 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; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int result;        // 0:成功;otherwise:失?。?    unsigned char reserved[4]; } SMsgAVIoctrlTimeSyncResp;
(三十五)結(jié)束通話
命令宏定義:IOTYPE_USER_IPCAM_CALL_END = 0x0900;
數(shù)據(jù)流向:APP → 設(shè)備
功能說明:主要應(yīng)用于雙向視頻通話場(chǎng)景。APP告知對(duì)方結(jié)束當(dāng)前通話。
數(shù)據(jù)結(jié)構(gòu):
typedef struct{    unsigned char myID[6];      // 我的ID    unsigned char reserved[2]; }SMsgAVIoctrlCallEnd;
(三十六)呼叫方發(fā)出通話請(qǐng)求
命令宏定義:IOTYPE_USER_IPCAM_CALL_REQ = 0x0901;
數(shù)據(jù)流向:呼叫方 → 被呼叫方
功能說明:主要應(yīng)用于雙向視頻通話場(chǎng)景。呼叫方向被呼叫方發(fā)起通話請(qǐng)求。
數(shù)據(jù)結(jié)構(gòu):
// 賬戶信息結(jié)構(gòu) typedef struct{    unsigned char UID[20];      // UID    unsigned char myID[6];      // ID    unsigned char reserved[2]; }AccountInfo; // 通話請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned char myID[6];      // 我的 ID    unsigned char myUID[20];    // 我的 UID    unsigned char callType;     // 0:?jiǎn)蜗蛞曨l;1:雙向視頻;    unsigned char beInvited;    // 0:表示邀請(qǐng);1:表示被邀請(qǐng);    unsigned char infoCount;    // 其他參與者的數(shù)量    unsigned char reserved[3];    AccountInfo info[];         // 其他參與者的信息 }SMsgAVIoctrlCallReq;
(三十七)被呼叫方響應(yīng)呼叫請(qǐng)求
命令宏定義:IOTYPE_USER_IPCAM_CALL_RESP = 0x0902;
數(shù)據(jù)流向:被呼叫方 → 呼叫方
功能說明:主要應(yīng)用于雙向視頻通話場(chǎng)景。被呼叫方響應(yīng)呼叫方發(fā)起的通話請(qǐng)求。
數(shù)據(jù)結(jié)構(gòu):
typedef struct{    unsigned char answer;       // 0:拒絕; 1:接聽;    unsigned char myID[6];      // myID    unsigned char reserved[1]; }SMsgAVIoctrlCallResp;
(三十八)云臺(tái)PTZ控制
命令宏定義:IOTYPE_USER_IPCAM_PTZ_COMMAND = 0x1001;
數(shù)據(jù)流向:APP → Device
功能說明:APP告知Device進(jìn)行云臺(tái)控制操作。
數(shù)據(jù)結(jié)構(gòu):
// 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; // 云臺(tái)控制結(jié)構(gòu) typedef struct{    unsigned char control;          // 云臺(tái)控制指令,參考 ENUM_PTZCMD.    unsigned char speed;            // 云臺(tái)轉(zhuǎn)動(dòng)的速度    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;
數(shù)據(jù)流向:APP → Device
功能說明:APP告知Device接收到第一張I幀圖片。
數(shù)據(jù)結(jié)構(gòu):
typedef struct{    unsigned int channel;        // camera index    char reserved[4]; }SMsgAVIoctrlReceiveFirstIFrame;
(四十)通知設(shè)備進(jìn)行OTA升級(jí)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_OTA_REQ = 0x8001) | 響應(yīng)(IOTYPE_USER_IPCAM_OTA_RESP = 0x8002)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device開始進(jìn)行OTA升級(jí),Device告知APPOTA升級(jí)進(jìn)度及結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned char file_checksum[32];      // MD5校驗(yàn)碼    unsigned char url[256];               // 下載固件url鏈接    unsigned int file_size;               // 固件包大小    unsigned char reserved[4]; }SMsgAVIoctrlOTAReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int progress;          // 下載固件進(jìn)度    unsigned int endflag;           // 1:下載完成;0:下載中;    unsigned char reserved[8]; }SMsgAVIoctrlOTAResp;
(四十一)獲取設(shè)備信息(新)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_DEVICE_INFO_REQ = 0x8015) | 響應(yīng)(IOTYPE_USER_IPCAM_DEVICE_INFO_RESP = 0x8016)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:注:新設(shè)備需對(duì)接OTA功能時(shí)建議使用,與舊cmd IOTYPE_USER_IPCAM_DEVINFO_REQ = 0x0330同作用。APP告知Device要獲取設(shè)備資訊,Device告知APP設(shè)備詳細(xì)資訊。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned char reserved[8]; } SMsgAVIoctrlDeviceInfoReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned char model[32];           // 產(chǎn)品型號(hào)    unsigned char product[32];         // 產(chǎn)品名    unsigned char vender[32];          // 制造商(需與KOTA服務(wù)器上的廠商一致)    unsigned char version[64];         // 當(dāng)前版本號(hào)    unsigned int free;                 // SD卡剩余空間    unsigned int total;                // SD卡總空間    unsigned char region;              // 獲取設(shè)備所在位置,0:中國大陸區(qū);1:非中國大陸區(qū);    unsigned char reserved[3]; } SMsgAVIoctrlDeviceInfoResp;
注:以上參數(shù)用于拼接向KOTA服務(wù)器獲取升級(jí)文件的下載地址請(qǐng)求,故需與在KOTA服務(wù)器上創(chuàng)建的vender,product,model等信息保持一致,且注意區(qū)分設(shè)備所在區(qū)域。
(四十二)獲取設(shè)備是否支持OTA升級(jí)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_DEVICE_SUPPORT_OTA_REQ = 0x800A) | 響應(yīng)(IOTYPE_USER_IPCAM_DEVICE_SUPPORT_OTA_RESP = 0x800B)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device要獲取設(shè)備是否支持OTA升級(jí),Device告知APP設(shè)備OTA升級(jí)支持狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlDeviceSupportOTAReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned char isSupport;        // 0:不支持;1:支持;    unsigned char reserved[4]; } SMsgAVIoctrlDeviceSupportOTAResp;
(四十三)查詢?cè)O(shè)備是否支持云存儲(chǔ)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_DEVICE_SUPPORT_CLOUD_REQ = 0x800C) | 響應(yīng)(IOTYPE_USER_IPCAM_DEVICE_SUPPORT_CLOUD_RESP = 0x800D)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device查詢是否支持云存儲(chǔ),Device告知APP設(shè)備云存儲(chǔ)支持狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlDeviceSupportCloudReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int result;           // 0:不支持;1:支持;    unsigned char reserved[4]; } SMsgAVIoctrlDeviceSupportCloudResp;
(四十四)設(shè)置設(shè)備云存儲(chǔ)錄像開關(guān)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_DEVICE_SET_CLOUD_REQ = 0x8010) | 響應(yīng)(IOTYPE_USER_IPCAM_DEVICE_SET_CLOUD_RESP = 0x8011)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device開啟或關(guān)閉云存儲(chǔ)錄像功能,Device告知APP設(shè)置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;        // camera index    unsigned int isOn;           // 1:開啟; 0:關(guān)閉; }SMsgAVIoctrlSetCloudReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int channel;         // camera index    unsigned int result;          // 0:成功; 1:失??; }SMsgAVIoctrlSetCloudResp;
(四十五)查詢?cè)O(shè)備云存儲(chǔ)錄像開關(guān)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_DEVICE_GET_CLOUD_REQ = 0x8012) | 響應(yīng)(IOTYPE_USER_IPCAM_DEVICE_GET_CLOUD_RESP = 0x8013)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP獲取Device云存儲(chǔ)錄像狀態(tài),Device告知APP當(dāng)前云存儲(chǔ)錄像狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;         // camera index    unsigned char reserved[4]; }SMsgAVIoctrlGetCloudReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int channel;         // camera index    unsigned int isOn;            // 1:開啟; 0:關(guān)閉; }SMsgAVIoctrlGetCloudResp;
(四十六)查詢有SD卡事件的日期
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_EVENT_DATE_REQ = 0x9000) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_EVENT_DATE_RESP = 0x9001)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device獲取有SD卡事件的日期,Device告知APP包含SD卡事件的日期列表。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;          // Camera Index    unsigned int eventType;        // 查詢的事件類型,0:全部;1:移動(dòng)偵測(cè);2:全時(shí)錄像;(默認(rèn)是0)    STimeDay stStartTime;          // 開始時(shí)間    STimeDay stEndTime;            // 結(jié)束時(shí)間    unsigned char reserved[8]; } SMsgAVIoctrlGetEventDateReq; // 日期結(jié)構(gòu) typedef struct{    char date[8];                     // 事件的日期,例如:20200210,后面依次還有count-1個(gè)date[8] } EventDate; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int count;               // 事件的日期數(shù)量    unsigned char reserved[4];    EventDate eventDate[1];           // 事件的日期 } SMsgAVIoctrlGetEventDateResp;
(四十七)查詢?cè)O(shè)備人形偵測(cè)的開關(guān)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_HUMANDETECTION_REQ = 0x9002) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_HUMANDETECTION_RESP = 0x9003)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device查詢?nèi)诵蝹蓽y(cè)開關(guān)狀態(tài),Device告知APP人形偵測(cè)開關(guān)查詢結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned char reserved[4]; } SMsgAVIoctrlGetHumanDetectionReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int result;             // 1:開啟;其他:關(guān)閉;    unsigned char reserved[4]; } SMsgAVIoctrlGetHumanDetectionResp;
(四十八)設(shè)置設(shè)備人形偵測(cè)開關(guān)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SET_HUMANDETECTION_REQ = 0x9004) | 響應(yīng)(IOTYPE_USER_IPCAM_SET_HUMANDETECTION_RESP = 0x9005)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device設(shè)置人形偵測(cè)開關(guān)狀態(tài),Device告知APP人形偵測(cè)開關(guān)設(shè)置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int isOn;        // 1:開啟;0:關(guān)閉;    unsigned char reserved[4]; } SMsgAVIoctrlSetHumanDetectionReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int result;             // 0:成功;其他:失??;    unsigned char reserved[4]; } SMsgAVIoctrlSetHumanDetectionResp;
(四十九)查詢?cè)O(shè)備夜視狀態(tài)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_NIGHTVISION_REQ = 0x9006) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_NIGHTVISION_RESP = 0x9007)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device獲取夜視設(shè)置狀態(tài),Device告知APP當(dāng)前夜視設(shè)置狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned char reserved[4]; } SMsgAVIoctrlGetNightVisionReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int result;             // 0:關(guān)閉;1:開啟;2:自動(dòng);    unsigned char reserved[4]; } SMsgAVIoctrlGetNightVisionResp;
(五十)設(shè)置設(shè)備夜視狀態(tài)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SET_NIGHTVISION_REQ = 0x9008) | 響應(yīng)(IOTYPE_USER_IPCAM_SET_NIGHTVISION_RESP = 0x9009)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device設(shè)置夜視狀態(tài),Device告知APP夜視設(shè)置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int isOn;        // 0:關(guān)閉;1:開啟;2:自動(dòng);    unsigned char reserved[4]; } SMsgAVIoctrlSetNightVisionReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int result;             // 0:成功;其他:失敗;    unsigned char reserved[4]; } SMsgAVIoctrlSetNightVisionResp;
(五十一)查詢?cè)O(shè)備夏令時(shí)開關(guān)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_SUMMERTIME_REQ = 0x9010) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_SUMMERTIME_RESP = 0x9011)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device查詢夏令時(shí)開關(guān)狀態(tài),Device告知APP夏令時(shí)開關(guān)查詢結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned char reserved[4]; } SMsgAVIoctrlGetSummerTimeReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int result;             // 1:開啟;其他:關(guān)閉;    unsigned char reserved[4]; } SMsgAVIoctrlGetSummerTimeResp;
(五十二)設(shè)置設(shè)備夏令時(shí)開關(guān)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SET_SUMMERTIME_REQ = 0x9012) | 響應(yīng)(IOTYPE_USER_IPCAM_SET_SUMMERTIME_RESP = 0x9013)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device設(shè)置夏令時(shí)開關(guān)狀態(tài),Device告知APP夏令時(shí)開關(guān)設(shè)置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int isOn;        // 1:開啟; 0:關(guān)閉;    unsigned char reserved[4]; } SMsgAVIoctrlSetSummerTimeReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int result;             // 0:成功;其他:失敗;    unsigned char reserved[4]; } SMsgAVIoctrlSetSummerTimeResp;
(五十三)獲取設(shè)備CertKey及ProfileVer
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_PROFILE_REQ = 0x9014) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_PROFILE_RESP = 0x9015)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device需要獲取certKey、profileVer,Device告知APP設(shè)備的certKey和profileVer信息。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlGetProfileReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned char certKey[40];    unsigned char profileVer[20];   // profile配置文件版本號(hào)    unsigned char reserved[8]; } SMsgAVIoctrlGetProfileResp;
(五十四)獲取上傳文件的通道列表
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_UPLOAD_FILE_REQ = 0x9027) | 響應(yīng)(IOTYPE_USER_IPCAM_UPLOAD_FILE_RESP = 0x9028)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device需要獲取上傳文件的通道列表,Device告知APP設(shè)備的可上傳類型、可上傳的連接通道。
數(shù)據(jù)結(jié)構(gòu):
// 文件信息結(jié)構(gòu) typedef struct{    unsigned char fileName[64];     // 文件名稱 }Fileinfo; // 請(qǐng)求結(jié)構(gòu) typedef struct{    int  functionalType;            // 功能類型: 1.預(yù)設(shè)語音  2.其他功能類型    int count;                      // 需要上傳文件的總數(shù)    Fileinfo Filename[10];          // 上傳文件名集合 } SMsgAVIoctrlFileUploadReq; // 傳輸類型枚舉 typedef enum{    TKTransferType_AVAPI = 0,     // AVAPI 上傳類型    TKTransferType_RDT  = 1       // RDT 上傳類型 }ENUM_TKTransferType; // 通道信息結(jié)構(gòu) typedef struct{    unsigned int channel;     // 通道 id }ChannelInfo; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int type;           // TKTransferType 上傳類型    int count;                   // 通道集合的總數(shù)(最多10個(gè)) ; -1:表示失??;    ChannelInfo channel[10]; } SMsgAVIoctrlFileUploadResp;
(五十五)獲取下載SD卡事件的通道列表
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_EVENT_DOWNLOAD_FILE_REQ = 0x9029) | 響應(yīng)(IOTYPE_USER_IPCAM_EVENT_DOWNLOAD_FILE_RESP = 0x902A)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device需要獲取下載SD卡事件的通道列表,Device告知APP設(shè)備的下載類型、可下載的連接通道。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    int count;                      // 需要下載事件的個(gè)數(shù)    STimeDay sTimeDayList [10];     // 需要下載SD卡事件的時(shí)間集合(每次最多10個(gè)) }SMsgAVIoctrlEventFileDownReq; // 傳輸類型枚舉 typedef enum{    TKTransferType_AVAPI = 0,  // AVAPI下載類型    TKTransferType_RDT   = 1   // RDT下載類型 }ENUM_TKTransferType; // 通道信息結(jié)構(gòu) typedef struct{    unsigned int channel;    // 通道 id }ChannelInfo; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int type;         // TKTransferType 下載類型    int count;                 // 通道集合的總數(shù)(最多10個(gè)) ; -1:表示失??;    ChannelInfo channel[10]; } SMsgAVIoctrlEventFileDownResp;
(五十六)獲取預(yù)設(shè)語音列表
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_VOICE_FILELIST_REQ = 0x902B) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_VOICE_FILELIST_RESP = 0x902C)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device需要獲取預(yù)設(shè)語音文件名稱列表,Device告知APP設(shè)備的預(yù)設(shè)語音列表。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    int channel;                // 通道號(hào) }SMsgAVIoctrlGetVoiceFileReq; // 預(yù)設(shè)語音信息結(jié)構(gòu) typedef struct{    int isPresetSpeech;    // 是否預(yù)設(shè)語音,1:當(dāng)前預(yù)設(shè)語音,0:當(dāng)前不是預(yù)設(shè)語音;    char fileName[64];     // 文件名稱 }PresetSpeechInfo; // 響應(yīng)結(jié)構(gòu) typedef struct{    int count;         // 文件名稱總數(shù) (最多10個(gè)); -1:表示失?。?    PresetSpeechInfo presetSpeechInfo [10]; } SMsgAVIoctrlGetVoiceFileResp;
(五十七)播放設(shè)備存儲(chǔ)的預(yù)設(shè)語音
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_PLAY_VOICE_REQ = 0x902D) | 響應(yīng)(IOTYPE_USER_IPCAM_PLAY_VOICE_RESP = 0x902E)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device開始播放預(yù)設(shè)語音,Device告知APP語音播放結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    int channel;  // 通道號(hào) }SMsgAVIoctrlPlayVoiceReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    int result;    // 1:成功播放;其他:返回播放失??; } SMsgAVIoctrlPlayVoiceResp;
(五十八)查詢?cè)O(shè)備是否支持雙向視頻
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_DEVICE_SUPPORT_DOUBLEVIDEO_REQ = 0x9030) | 響應(yīng)(IOTYPE_USER_IPCAM_DEVICE_SUPPORT_DOUBLEVIDEO_RESP = 0x9031)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP發(fā)送請(qǐng)求獲取設(shè)備是否支持雙向視頻,Device告知APP設(shè)備雙向視頻支持狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlDeviceSupportDoubleVideoReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned char isSupport;       // 0:不支持;1:支持;    unsigned char reserved[3]; } SMsgAVIoctrlDeviceSupportDoubleVideoResp;
(五十九)發(fā)起雙向視頻
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_DOUBLEVIDEOCALL_REQ = 0x9032) | 響應(yīng)(IOTYPE_USER_IPCAM_DOUBLEVIDEOCALL_RESP = 0x9033)
數(shù)據(jù)流向:請(qǐng)求(呼叫方 → 被呼叫方) | 響應(yīng)(被呼叫方 → 呼叫方)
功能說明:呼叫方向被呼叫方發(fā)起雙向視頻通話請(qǐng)求,被呼叫方響應(yīng)呼叫方的通話請(qǐng)求。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu)(呼叫方→被呼叫方) typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlDoubleVideoCallReq; // 響應(yīng)結(jié)構(gòu)(被呼叫方→呼叫方) typedef struct{    unsigned char answer;    // 0:拒絕;1:接聽;    unsigned char reserved[3]; } SMsgAVIoctrlDoubleVideoCallResp;
(六十)查詢SD卡掛載狀態(tài)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SDINFO_REQ = 0x9034) | 響應(yīng)(IOTYPE_USER_IPCAM_SDINFO_RESP = 0x9035)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP發(fā)送請(qǐng)求獲取設(shè)備SD卡掛載狀態(tài),Device告知APP設(shè)備SD卡當(dāng)前掛載狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlSdInfoReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned char state;              // 0:sd卡異常;1:未插卡;2:已插卡;    unsigned char reserved[3]; } SMsgAVIoctrlSdInfoResp;
(六十一)查詢?cè)O(shè)備當(dāng)前對(duì)講狀態(tài)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SPEAK_STATE_REQ = 0x9036) | 響應(yīng)(IOTYPE_USER_IPCAM_SPEAK_STATE_RESP = 0x9037)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP發(fā)送請(qǐng)求獲取設(shè)備當(dāng)前對(duì)講狀態(tài),Device告知APP設(shè)備當(dāng)前對(duì)講狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlSpeakStateReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned char state;          // 0:未占用(允許app進(jìn)行對(duì)講);1:被占用(不允許app進(jìn)行對(duì)講);2:不支持(設(shè)備沒有對(duì)講功能);    unsigned char reserved[3]; } SMsgAVIoctrlSpeakStateResp;
(六十二)獲取移動(dòng)追蹤開關(guān)狀態(tài)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_MOTION_TRACKING_REQ = 0x9038) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_MOTION_TRACKING_RESP = 0x9039)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device獲取移動(dòng)追蹤狀態(tài),Device告知APP當(dāng)前移動(dòng)追蹤狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) 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; // 追蹤任務(wù)結(jié)構(gòu) typedef struct{    unsigned int traceType;                // 追蹤類型,詳情查看ENUM_TRACE_TYPE    unsigned int isOn;                     // 是否開啟, 0:關(guān)閉;1:開啟;    unsigned char reserved[4]; }SMsgTraceTask; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int channel;              // Camera Index    unsigned int count;                // SMsgTraceTask數(shù)組的長度    unsigned char reserved[4];         // 保留位    SMsgTraceTask task[1] ;            // SMsgTraceTask的數(shù)組;count是數(shù)組的長度; }SMsgAVIoctrlGetMotionTrackingResp;
(六十三)設(shè)置移動(dòng)追蹤開關(guān)狀態(tài)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SET_MOTION_TRACKING_REQ = 0x903A) | 響應(yīng)(IOTYPE_USER_IPCAM_SET_MOTION_TRACKING_RESP = 0x903B)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device設(shè)置追蹤開關(guān)狀態(tài),Device告知APP移動(dòng)追蹤設(shè)置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 追蹤類型枚舉 typedef enum{    TRACE_TYPE_OBJECT =  0x01,    // 物體追蹤    TRACE_TYPE_HUMAN =  0x02,     // 人形追蹤    TRACE_TYPE_AUDIO =  0x03     // 聽音辨位 }ENUM_TRACE_TYPE; // 追蹤任務(wù)結(jié)構(gòu) typedef struct{    unsigned int traceType;                // 追蹤類型,詳情查看ENUM_TRACE_TYPE    unsigned int isOn;                     // 是否開啟, 0:關(guān)閉;1:開啟;    unsigned char reserved[4]; }SMsgTraceTask; // 設(shè)置結(jié)果結(jié)構(gòu) typedef struct{    unsigned int traceType;                      // 設(shè)置的追蹤類型 詳情查看ENUM_TRACE_TYPE    unsigned int result;                         // 當(dāng)前設(shè)置類型是否設(shè)置成功,0:成功;others:失??;    unsigned char reserved[4]; }SMsgAVIoctrlSetResult; // 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;                 // Camera Index    unsigned int count;                   // SMsgTraceTask數(shù)組的長度    unsigned char reserved[4];            // 保留位    SMsgTraceTask task[1] ;               // SMsgTraceTask的數(shù)組;count是數(shù)組的長度; }SMsgAVIoctrlSetMotionTrackingReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int count;                       // 設(shè)置返回結(jié)果的數(shù)量    SMsgAVIoctrlSetResult result[1];          // 設(shè)置返回結(jié)果的數(shù)組    unsigned char reserved[4]; }SMsgAVIoctrlSetMotionTrackingResp;
(六十四)獲取指示燈狀態(tài)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_PILOT_LAMP_REQ = 0x903C) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_PILOT_LAMP_RESP = 0x903D)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device獲取指示燈的狀態(tài),Device告知APP當(dāng)前指示燈狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;        // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetPilotLampReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int channel;         // Camera Index    unsigned int lightState;      // 指示燈的狀態(tài),0:關(guān)閉;1:開啟;    unsigned char reserved[8]; }SMsgAVIoctrlGetPilotLampResp;
(六十五)設(shè)置指示燈狀態(tài)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SET_PILOT_LAMP_REQ = 0x903E) | 響應(yīng)(IOTYPE_USER_IPCAM_SET_PILOT_LAMP_RESP = 0x903F)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device設(shè)置指示燈狀態(tài),Device告知APP指示燈設(shè)置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;         // Camera Index    unsigned int lightState;      // 指示燈的狀態(tài), 0:關(guān)閉; 1:開啟;    unsigned char reserved[8]; }SMsgAVIoctrlSetPilotLampReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int result;        // 0:成功;otherwise:失??;    unsigned char reserved[4]; }SMsgAVIoctrlSetPilotLampResp;
(六十六)通知設(shè)備重啟
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SET_RESTART_REQ = 0x9040) | 響應(yīng)(IOTYPE_USER_IPCAM_SET_RESTART_RESP = 0x9041)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device重啟設(shè)備,Device告知APP設(shè)備重啟結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlSetRestartReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int result;         // 0:成功;otherwise:失?。?    unsigned char reserved[4]; }SMsgAVIoctrlSetRestartResp;
(六十七)獲取智能偵測(cè)狀態(tài)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_INTELLIGENT_DETECTION_REQ) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_INTELLIGENT_DETECTION_RESP)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device獲取智能偵測(cè)狀態(tài),Device告知APP當(dāng)前智能偵測(cè)狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetIntelligentDetectionReq; // 偵測(cè)任務(wù)結(jié)構(gòu) typedef struct{    unsigned int detectionType;   // 偵測(cè)類型(類型詳情請(qǐng)參考ENUM_EVENTTYPE)    unsigned int isOn;            // 是否開啟,0:關(guān)閉;1:開啟;    unsigned int sensitivity;     // 靈敏度    unsigned char reserved[4];    // 保留位 }SMsgDetectionTask; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int channel;          // Camera Index    unsigned int count;            // SMsgDetectionTask數(shù)組的長度    unsigned char reserved[4];     // 保留位    SMsgDetectionTask task[1] ;    // 偵測(cè)類型的數(shù)組;count是數(shù)組的長度; }SMsgAVIoctrlGetIntelligentDetectionResp;
(六十八)設(shè)置智能偵測(cè)狀態(tài)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SET_INTELLIGENT_DETECTION_REQ) | 響應(yīng)(IOTYPE_USER_IPCAM_SET_INTELLIGENT_DETECTION_RESP)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device設(shè)置智能偵測(cè)狀態(tài),Device告知APP智能偵測(cè)設(shè)置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 偵測(cè)任務(wù)結(jié)構(gòu) typedef struct{    unsigned int detectionType;   // 偵測(cè)類型(類型詳情請(qǐng)參考ENUM_EVENTTYPE)    unsigned int isOn;            // 是否開啟,0:關(guān)閉;1:開啟;    unsigned int sensitivity;     // 靈敏度    unsigned char reserved[4];    // 保留位 }SMsgDetectionTask; // 設(shè)置結(jié)果結(jié)構(gòu) typedef struct{    unsigned int detectionType;  // 設(shè)置的偵測(cè)類型(類型詳情請(qǐng)參考ENUM_EVENTTYPE)    unsigned int result;         // 當(dāng)前設(shè)置類型是否設(shè)置成功0:成功;otherwise:失??;    unsigned char reserved[4]; } SMsgAVIoctrlSetDetectResult; // 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;        // Camera Index    unsigned int count;          // SMsgDetectionTask數(shù)組的長度    unsigned char reserved[4];   // 保留位    SMsgDetectionTask task[1] ;  // 偵測(cè)類型的數(shù)組;count是數(shù)組的長度; }SMsgAVIoctrlSetIntelligentDetectionReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int count;                      // 設(shè)置返回結(jié)果的數(shù)量    SMsgAVIoctrlSetDetectResult result[1];   // 設(shè)置返回結(jié)果的數(shù)組    unsigned char reserved[4]; }SMsgAVIoctrlSetIntelligentDetectionResp;
(六十九)查詢休眠設(shè)置
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_DORMANCY_REQ = 0x9046) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_DORMANCY_RESP = 0x9047)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device獲取休眠設(shè)置狀態(tài),Device告知APP當(dāng)前休眠設(shè)置狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 休眠定時(shí)任務(wù)結(jié)構(gòu) typedef struct{    STimeDay  startTime;           // 開啟時(shí)間    STimeDay  endTime;             // 結(jié)束時(shí)間    unsigned int executionTime;    // 實(shí)行時(shí)間,0:執(zhí)行一次;1:每天;2:工作日;3:周末;    unsigned int isOn;             // 是否開啟,0:關(guān)閉;1:開啟;    unsigned char reserved[4]; }SMsgDormancyTask; // 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetDormancyReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int channel;            // Camera Index    unsigned int sleepState;         // 設(shè)備狀態(tài),0:關(guān)閉;1:開啟;2:定時(shí)休眠中;    unsigned int count;              // 設(shè)置定時(shí)休眠的數(shù)組,最多5個(gè)    unsigned int currentSleepState;  // 當(dāng)前設(shè)備是否處在休眠中,0:不休眠;1:休眠;    SMsgDormancyTask task[1];        // 參考SMsgDormancyTask }SMsgAVIoctrlGetDormancyResp;
(七十)設(shè)置休眠設(shè)置狀態(tài)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SET_DORMANCY_REQ = 0x9048) | 響應(yīng)(IOTYPE_USER_IPCAM_SET_DORMANCY_RESP = 0x9049)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device設(shè)置休眠狀態(tài),Device告知APP休眠設(shè)置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 休眠定時(shí)任務(wù)結(jié)構(gòu) typedef struct{    STimeDay  startTime;           // 開啟時(shí)間    STimeDay  endTime;             // 結(jié)束時(shí)間    unsigned int executionTime;    // 實(shí)行時(shí)間,0:執(zhí)行一次;1:每天;2:工作日;3:周末;    unsigned int isOn;             // 是否開啟,0:關(guān)閉;1:開啟;    unsigned char reserved[4]; }SMsgDormancyTask; // 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;         // Camera Index    unsigned int sleepState;      // 設(shè)備狀態(tài),0:關(guān)閉;1:開啟;2:定時(shí)休眠中;    unsigned int count;           // 設(shè)置定時(shí)休眠的數(shù)組,1-5最多5個(gè)    unsigned char reserved[4];    SMsgDormancyTask task[1]; }SMsgAVIoctrlSetDormancyReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int result;      // 0:成功;otherwise:失敗;    unsigned char reserved[4]; }SMsgAVIoctrlSetDormancyResp;
(七十一)獲取時(shí)區(qū)信息
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_TIME_ZONE_REQ) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_TIME_ZONE_RESP)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device獲取時(shí)區(qū)等狀態(tài)信息,Device告知APP當(dāng)前時(shí)區(qū)、語言、地區(qū)等狀態(tài)信息。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;     // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetTimeZoneReq; // 語言類型枚舉 typedef enum{    LANGUAGE_TYPE_CN =  0x01,     // 中文-簡(jiǎn)體    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; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int channel;            // Camera Index    unsigned long timestamp;         // UTC時(shí)間戳,精確到秒(s)    unsigned int isFollowingSystem;  // 是否跟隨系統(tǒng),1:跟隨;0:不跟隨;    int timeZone ;                   // -12~12 時(shí)區(qū)(包含夏令時(shí)偏移量),精確到分鐘(比如:英國在UTC 0 時(shí)區(qū),夏令時(shí)+1,則timeZone = 60)    unsigned char region[128] ;      // 地區(qū)    unsigned int language;           // 語系(參考ENUM_LANGUAGE_TYPE)    unsigned char reserved[4]; }SMsgAVIoctrlGetTimeZoneResp;
備注:long一般是占8個(gè)字節(jié),因?yàn)榭紤]有些編譯器做字節(jié)對(duì)齊的時(shí)候,會(huì)進(jìn)行內(nèi)存優(yōu)化,建議struct定義的時(shí)候加上免優(yōu)化的選項(xiàng)(linux一般是在struct后加上__attribute__((packed)))
(七十二)設(shè)置設(shè)備時(shí)區(qū)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SET_TIME_ZONE_REQ) | 響應(yīng)(IOTYPE_USER_IPCAM_SET_TIME_ZONE_RESP)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device設(shè)置時(shí)區(qū)等狀態(tài)信息,Device告知APP時(shí)區(qū)設(shè)置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 語言類型枚舉 typedef enum{    LANGUAGE_TYPE_CN =  0x01,     // 中文-簡(jiǎn)體    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; // 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;            // Camera Index    unsigned long timestamp;         // UTC時(shí)間戳,精確到秒(s)    unsigned int isFollowingSystem;  // 是否跟隨系統(tǒng),1:跟隨;0:不跟隨;    int timeZone ;                   // -12~12 時(shí)區(qū)(包含夏令時(shí)偏移量),精確到分鐘(比如:英國在UTC 0 時(shí)區(qū),夏令時(shí)+1,則timeZone = 60)    unsigned char region[128] ;      // 地區(qū)    unsigned int  language;          // 語系(參考ENUM_LANGUAGE_TYPE)    unsigned char reserved[4]; }SMsgAVIoctrlSetTimeZoneReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int result;         // 0:成功;otherwise:失??;    unsigned char reserved[4]; }SMsgAVIoctrlSetTimeZoneResp;
備注:long一般是占8個(gè)字節(jié),因?yàn)榭紤]有些編譯器做字節(jié)對(duì)齊的時(shí)候,會(huì)進(jìn)行內(nèi)存優(yōu)化,建議struct定義的時(shí)候加上免優(yōu)化的選項(xiàng)(linux一般是在struct后加上__attribute__((packed)))
(七十三)根據(jù)命令獲取設(shè)備各種狀態(tài)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_ALL_STATE_REQ = 0x904E) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_ALL_STATE_RESP)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device根據(jù)指令獲取設(shè)備的狀態(tài),設(shè)備根據(jù)之前定義的cmd來返回狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 獲取設(shè)備狀態(tài)的命令數(shù)據(jù) typedef struct{    unsigned int cmdType;   // 命令類型 }SMsgCommandTask; // 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;        // Camera Index    unsigned int count;          // 命令數(shù)組長度    unsigned char reserved[4];    SMsgCommandTask task[1];     // 參考SMsgCommandTask }SMsgAVIoctrlGetAllStateReq;
(七十四)重置設(shè)備(恢復(fù)出廠設(shè)置)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SET_RESET_REQ = 0x30000001) | 響應(yīng)(IOTYPE_USER_IPCAM_SET_RESET_RESP = 0x30000002)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device進(jìn)行重置(恢復(fù)出廠設(shè)置),Device告知APP設(shè)置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct{    unsigned int channel;        // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlSetResetReq; // 響應(yīng)結(jié)構(gòu) typedef struct{    unsigned int result;        // 0:成功;otherwise:失??;    unsigned char reserved[4]; }SMsgAVIoctrlSetResetResp;
(七十五)獲取音樂列表
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_MUSIC_LIST_REQ = 0x9050) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_MUSIC_LIST_RESP = 0x9051)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device獲取音樂列表,Device告知APP音樂列表。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct {    unsigned int channel;     // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetMusicListReq; // 音樂信息結(jié)構(gòu) typedef struct {    unsigned char name[64];     // 音樂名稱    unsigned int index;         // 序號(hào)    unsigned int isCustom;      // 是否自定義音樂,0:默認(rèn)音樂 1:自定義音樂    unsigned int isCurrent;     // 是否選中,1:選中,其他:否    unsigned char reserved[4]; }SAvMusic; // 響應(yīng)結(jié)構(gòu) typedef struct {    unsigned int count;    unsigned char reserved[4];    SAvMusic stMusic[1];         // 數(shù)組 }SMsgAVIoctrlGetMusicListResp;
(七十六)獲取音樂播放狀態(tài)
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_MUSIC_STATE_REQ = 0x9052) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_MUSIC_STATE_RESP = 0x9053)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP請(qǐng)求Device告知當(dāng)前音樂的播放狀態(tài)(當(dāng)播放狀態(tài)改變時(shí),設(shè)備應(yīng)主動(dòng)告知APP)。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct {    unsigned int channel;  // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetMusicStateReq; // 響應(yīng)結(jié)構(gòu) typedef struct {    unsigned int channel;        // Camera Index    unsigned int isPlaying;      // 播放狀態(tài), 0:停止播放,1:正在播放    unsigned int isTryMusic;     // 是否是試聽,0:試聽音樂,1:正式播放音樂    unsigned char reserved[4];    SAvMusic stMusic;            // 當(dāng)前音樂 } __attribute__((packed)) SMsgAVIoctrlGetMusicStateResp;
(七十七)音樂播放控制
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_PLAY_MUSIC_REQ = 0x9054) | 響應(yīng)(IOTYPE_USER_IPCAM_PLAY_MUSIC_RESP = 0x9055)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device開始/停止播放音樂,Device告知APP設(shè)置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct {    unsigned int channel;         // Camera Index    unsigned int isPlaying;       // 播放狀態(tài),0:停止播放,1:正在播放    unsigned int isTryMusic;      // 是否是試聽,0:試聽音樂,1:正式播放音樂    unsigned char reserved[4];    SAvMusic stMusic;             // 當(dāng)前音樂 } __attribute__((packed)) SMsgAVIoctrlPlayMusicReq; // 響應(yīng)結(jié)構(gòu) typedef struct {    unsigned int result;          // 0:成功,其他:失敗    unsigned char reserved[4]; }SMsgAVIoctrlPlayMusicResp;
(七十八)刪除錄制音樂
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_DELETE_MUSIC_REQ = 0x9056) | 響應(yīng)(IOTYPE_USER_IPCAM_DELETE_MUSIC_RESP = 0x9057)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device刪除錄制音樂,Device告知APP刪除錄制音樂結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct {    unsigned int channel;        // Camera Index    unsigned char reserved[4];    SAvMusic stMusic;            // 當(dāng)前音樂 }SMsgAVIoctrlDeleteMusicReq; // 響應(yīng)結(jié)構(gòu) typedef struct {    unsigned int result;         // 0:成功,其他:失敗    unsigned char reserved[4]; }SMsgAVIoctrlDeleteMusicResp;
(七十九)設(shè)置音樂
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SET_MUSIC_REQ = 0x9058) | 響應(yīng)(IOTYPE_USER_IPCAM_SET_MUSIC_RESP = 0x9059)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device進(jìn)行音樂設(shè)置,Device告知APP設(shè)置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct {    unsigned int channel;        // Camera Index    unsigned char reserved[4];    SAvMusic stMusic;            // 設(shè)置音樂 } __attribute__((packed)) SMsgAVIoctrlSetMusicReq; // 響應(yīng)結(jié)構(gòu) typedef struct {    unsigned int result;        // 0:成功,其他:失敗    unsigned char reserved[4]; }SMsgAVIoctrlSetMusicResp;
補(bǔ)充說明:設(shè)置選中時(shí),如果是單曲循環(huán)模式,則循環(huán)播放該音樂;如果是列表播放模式或者隨機(jī)播放,則表示從該音樂開始按列表或者隨機(jī)播放。
(八十)查詢音樂播放模式
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_MUSIC_PLAY_MODE_REQ = 0x905A) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_MUSIC_PLAY_MODE_RESP = 0x905B)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device獲取音樂播放模式狀態(tài)(當(dāng)播放模式改變時(shí),設(shè)備應(yīng)主動(dòng)告知APP)。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct {    unsigned int channel;       // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetMusicPlayModeReq; // 響應(yīng)結(jié)構(gòu) typedef struct {    unsigned int channel;       // Camera Index    unsigned int playMode;      // 播放模式,0:單曲循環(huán),1:列表播放,2:隨機(jī)播放    unsigned char reserved[8]; }SMsgAVIoctrlGetMusicPlayModeResp;
(八十一)設(shè)置音樂播放模式
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SET_MUSIC_PLAY_MODE_REQ = 0x905C) | 響應(yīng)(IOTYPE_USER_IPCAM_SET_MUSIC_PLAY_MODE_RESP = 0x905D)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device設(shè)置播放模式,Device告知APP設(shè)置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu)(修正原拼寫錯(cuò)誤:SMsgAVIoctrlSetMusicPlayModeRep → SMsgAVIoctrlSetMusicPlayModeReq) typedef struct {    unsigned int channel;       // Camera Index    unsigned int playMode;      // 播放模式,0:單曲循環(huán),1:列表播放,2:隨機(jī)播放    unsigned char reserved[4]; }SMsgAVIoctrlSetMusicPlayModeReq; // 響應(yīng)結(jié)構(gòu) typedef struct {    unsigned int channel;     // Camera Index    unsigned int result;      // 0:成功,其他:失敗    unsigned char reserved[4]; }SMsgAVIoctrlSetMusicPlayModeResp;
(八十二)獲取設(shè)備音量
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_DEVICE_VOL_REQ = 0x9060) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_DEVICE_VOL_RESP = 0x9061)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device獲取設(shè)備音量狀態(tài),Device告知APP設(shè)備音量。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct {    unsigned int channel;       // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetDeviceVolReq; // 音量信息結(jié)構(gòu) typedef struct {    unsigned int vol;       // 0 - 100    unsigned int volType;   // 0:麥克風(fēng),1:揚(yáng)聲器 } SAvVol; // 響應(yīng)結(jié)構(gòu) typedef struct {    unsigned int channel;         // Camera Index    unsigned char reserved[4];    // 保留位    unsigned int count;    SAvVol vol[1]; } __attribute__((packed)) SMsgAVIoctrlGetDeviceVolResp;
(八十三)設(shè)置設(shè)備音量
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SET_DEVICE_VOL_REQ = 0x9062) | 響應(yīng)(IOTYPE_USER_IPCAM_SET_DEVICE_VOL_RESP = 0x9063)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device設(shè)置設(shè)備音量,Device告知APP設(shè)置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct {    unsigned int channel;         // Camera Index    unsigned char reserved[4];    // 保留位    unsigned int count;    SAvVol vol[1]; }SMsgAVIoctrlSetDeviceVolReq; // 響應(yīng)結(jié)構(gòu) typedef struct {    unsigned int channel;       // Camera Index    unsigned int result;        // 0:成功,其他:失敗    unsigned char reserved[4]; }SMsgAVIoctrlSetDeviceVolResp;
(八十四)獲取溫度
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_DEVICE_TEMPERATURE_REQ = 0x9064) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_DEVICE_TEMPERATURE_RESP = 0x9065)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device獲取設(shè)備溫度狀態(tài)(當(dāng)溫度改變時(shí),設(shè)備應(yīng)主動(dòng)告知APP)。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct {    unsigned int channel;        // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetDeviceTemperatureReq; // 響應(yīng)結(jié)構(gòu) typedef struct {    unsigned int channel;       // Camera Index    unsigned int integer;       // 小數(shù)點(diǎn)前的溫度,比如36.2,此處就是36    unsigned int decimal;       // 小數(shù)點(diǎn)后的溫度,比如36.2,此處是2    unsigned int unit;          // 單位,0:攝氏度(℃),1:華氏度(℉)    unsigned char reserved[4]; }SMsgAVIoctrlGetDeviceTemperatureResp;
(八十五)獲取溫度單位
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_GET_DEVICE_TEMPERATUREUNIT_REQ = 0x9066) | 響應(yīng)(IOTYPE_USER_IPCAM_GET_DEVICE_TEMPERATUREUNIT_RESP = 0x9067)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device獲取設(shè)備溫度單位狀態(tài),Device告知APP設(shè)備溫度單位。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct {    unsigned int channel;        // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetDeviceTemperatureUnitReq; // 響應(yīng)結(jié)構(gòu) typedef struct {    unsigned int channel;       // Camera Index    unsigned int unit;          // 單位,0:攝氏度(℃),1:華氏度(℉)    unsigned char reserved[4]; }SMsgAVIoctrlGetDeviceTemperatureUnitResp;
(八十六)設(shè)置溫度單位
命令宏定義:請(qǐng)求(IOTYPE_USER_IPCAM_SET_DEVICE_TEMPERATUREUNIT_REQ = 0x9068) | 響應(yīng)(IOTYPE_USER_IPCAM_SET_DEVICE_TEMPERATUREUNIT_RESP = 0x9069)
數(shù)據(jù)流向:請(qǐng)求(APP → Device) | 響應(yīng)(Device → APP)
功能說明:APP告知Device設(shè)置設(shè)備溫度單位狀態(tài),Device告知APP設(shè)備溫度單位響應(yīng)結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請(qǐng)求結(jié)構(gòu) typedef struct {    unsigned int channel;       // Camera Index    unsigned int unit;          // 單位,0:攝氏度(℃),1:華氏度(℉)    unsigned char reserved[4]; }SMsgAVIoctrlSetDeviceTemperatureUnitReq; // 響應(yīng)結(jié)構(gòu) typedef struct {    unsigned int channel;      // Camera Index    unsigned int result;       // 0:成功,其他:失敗    unsigned char reserved[4]; }SMsgAVIoctrlSetDeviceTemperatureUnitResp;

即刻開啟您的物聯(lián)網(wǎng)之旅

聯(lián)系解決方案專家
Kalay App
資訊安全白皮書
全球?qū)@季?/a>
解決方案
新聞動(dòng)態(tài)
公司動(dòng)態(tài)
行業(yè)資訊
媒體報(bào)道
永續(xù)發(fā)展
經(jīng)營者的話
社會(huì)參與
環(huán)境永續(xù)
公司治理

+86 755 27702549

7×24小時(shí)服務(wù)熱線

法律聲明 隱私權(quán)條款

關(guān)注“TUTK”

TUTK服務(wù)盡在掌握

? 2022 物聯(lián)智慧科技(深圳)有限公司版權(quán)所有粵ICP備14023641號(hào)
在線咨詢
掃一掃

TUTK服務(wù)盡在掌握

全國免費(fèi)服務(wù)熱線
+86 755 27702549

返回頂部