日日摸夜夜添夜夜爽出水_dvd碟片色爱_麻豆wwwcom内射软件_国产欧美色一区二区三区_中字幕视频在线永久在线观看免费_99久久在线视频精品店_国产精品1区2区3区在线观看 _两性午夜色视频免费网站_国产精品女同久久久久电影院_国产一区二区不卡亚洲涩情

簡體中文

公版IO Command定義

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

一、說明

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

二、命令詳情

(一)請求設備發(fā)送圖像實時流
命令宏定義: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;
(二)請求設備停止傳送圖像實時流
命令宏定義: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;
(三)請求設備開始接收圖像實時流
命令宏定義: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;
(四)請求設備停止接收圖像實時流
命令宏定義: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;
(五)請求設備開始發(fā)送音頻實時流
命令宏定義: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;
(六)請求設備停止發(fā)送音頻實時流
命令宏定義: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;
(七)設定設備SD卡錄像模式
命令宏定義:請求(IOTYPE_USER_IPCAM_SETRECORD_REQ = 0x0310) | 響應(IOTYPE_USER_IPCAM_SETRECORD_RESP = 0x0311)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device要設置設備SD卡錄像模式,Device告知App設置結(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; // 請求結(jié)構(gòu) typedef struct{    unsigned int channel;           // Camera Index    unsigned int recordType;        // 參考ENUM_RECORD_TYPE    unsigned char reserved[4]; }SMsgAVIoctrlSetRecordReq, SMsgAVIoctrlGetRecordResq; // 響應結(jié)構(gòu) typedef struct{    int result;                     // 0:成功; otherwise: 失?。?    unsigned char reserved[4]; }SMsgAVIoctrlSetRecordResp;
(八)獲取設備當前SD卡錄像模式
命令宏定義:請求(IOTYPE_USER_IPCAM_GETRECORD_REQ = 0x0312) | 響應(IOTYPE_USER_IPCAM_GETRECORD_RESP = 0x0313)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device要獲取設備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; // 請求結(jié)構(gòu) typedef struct{    unsigned int channel;         // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetRecordReq; // 響應結(jié)構(gòu) 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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device要獲取設備事件列表,Device將錄像列表回傳給App。
數(shù)據(jù)結(jié)構(gòu):
// 時間結(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ù),范圍為0到23    unsigned char minute;      // 小時后的分鐘數(shù),范圍為0到59    unsigned char second;      // 分鐘后的秒數(shù),范圍為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,            // 移動偵測結(jié)束    AVIOCTRL_EVENT_VIDEORESUME = 0x05,         // 視頻恢復    AVIOCTRL_EVENT_IOALARMPASS = 0x06,         // IO報警結(jié)束    AVIOCTRL_EVENT_MOVIE = 0x07,               // 影片    AVIOCTRL_EVENT_TIME_LAPSE = 0x08,          // 延時拍攝    AVIOCTRL_EVENT_EMERGENCY = 0x09,           // 緊急事件    AVIOCTRL_EVENT_EXPT_REBOOT = 0x10,         // 系統(tǒng)異常重啟    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,           // 未出現(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,                 // 寵物偵測    AVIOCTRL_EVENT_REMOTE_LOGIN = 0x48,        // 異地登錄    AVIOCTRL_EVENT_VIDEO_CALL = 0x66,          // 視頻呼叫    AVIOCTRL_EVENT_DEVICE_OFFLINE = 0x6F,      // 設備離線    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ù)時間(秒) }SAvEvent; // 請求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    STimeDay stStartTime;       // 搜尋起始時間(修正:原TimeDay應為STimeDay)    STimeDay stEndTime;         // 搜尋結(jié)束時間    unsigned char event;        // 事件類型,參考ENUM_EVENTTYPE    unsigned char status;       // 0x00:未讀取 0x01:已讀取 0x02:無錄像    unsigned char reserved[2]; }SMsgAVIoctrlListEventReq; // 響應結(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表示最后一個數(shù)據(jù)包    unsigned char count;        // 此封包中的事件數(shù)    unsigned char reserved[1];    SAvEvent stEvent[0];        // 事件數(shù)據(jù)起始地址 }SMsgAVIoctrlListEventResp;
(十)SD卡事件回播控制播放
命令宏定義:請求(IOTYPE_USER_IPCAM_RECORD_PLAYCTRL_REQ = 0x031A) | 響應(IOTYPE_USER_IPCAM_RECORD_PLAYCTRL_RESP = 0x031B)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device要進行錄像事件回放,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; // 請求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned int command;       // 播放指令,參考ENUM_PLAYCONTROL    unsigned int Param;         // 指令參數(shù),用戶自定義    STimeDay stTimeDay;         // 事件列表起始時間    unsigned char endflag;      // 0:APP播放完畢 1:web繼續(xù)播放下一個    unsigned char downloadFlag; // 0:回放模式 1:下載模式    unsigned char reserved[2]; } SMsgAVIoctrlPlayRecordReq; // 響應結(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;                
(十一)設置設備解析度檔位
命令宏定義:請求(IOTYPE_USER_IPCAM_SETSTREAMCTRL_REQ = 0x0320) | 響應(IOTYPE_USER_IPCAM_SETSTREAMCTRL_RESP = 0x0321)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device要設置設備的解析度,Device告知APP解析度設置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 畫質(zhì)等級枚舉 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; // 請求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned char quality;      // 參考ENUM_QUALITY_LEVEL    unsigned char reserved[3]; } SMsgAVIoctrlSetStreamCtrlReq; // 響應結(jié)構(gòu)(修正:原命名錯誤) typedef struct{    unsigned int result;        // 0: 成功; otherwise: 失敗    unsigned char reserved[4]; } SMsgAVIoctrlSetStreamCtrlResp;
(十二)獲取設備目前解析度檔位
命令宏定義:請求(IOTYPE_USER_IPCAM_GETSTREAMCTRL_REQ = 0x0322) | 響應(IOTYPE_USER_IPCAM_GETSTREAMCTRL_RESP = 0x0323)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device要獲取設備當前的解析度,Device將設備解析度配置回傳給App。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetStreamCtrlReq; // 響應結(jié)構(gòu) 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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device要設置設備位移偵測的靈敏度,Device告知APP設置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned int channel;               // Camera Index    unsigned int sensitivity;           // 0(禁用)~100(最大):0=關(guān)閉,25=低,50=中,75=高,100=最高 }SMsgAVIoctrlSetMotionDetectReq, SMsgAVIoctrlGetMotionDetectResp; // 響應結(jié)構(gòu) 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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device要獲取設備位移偵測的靈敏度,Device將配置回傳給App。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; } SMsgAVIoctrlGetMotionDetectReq; // 響應結(jié)構(gòu) typedef struct{    unsigned int channel;               // Camera Index    unsigned int sensitivity;           // 0(禁用)~100(最大):0=關(guān)閉,25=低,50=中,75=高,100=最高 }SMsgAVIoctrlSetMotionDetectReq, SMsgAVIoctrlGetMotionDetectResp;
(十五)獲取當前設備通道數(shù)
命令宏定義:請求(IOTYPE_USER_IPCAM_GETSUPPORTSTREAM_REQ = 0x0328) | 響應(IOTYPE_USER_IPCAM_GETSUPPORTSTREAM_RESP = 0x0329)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device要獲取目前設備頻道數(shù),Device將配置回傳給App。
數(shù)據(jù)結(jié)構(gòu):
// 流定義結(jié)構(gòu) typedef struct{    unsigned short index;       // 設備使用的stream index    unsigned short channel;     // AVAPIs使用的channel index    char reserved[4]; }SStreamDef; // 請求結(jié)構(gòu) typedef struct{    unsigned char reserved[4]; }SMsgAVIoctrlGetSupportStreamReq; // 響應結(jié)構(gòu) typedef struct{    unsigned int number;        // 可支持的stream數(shù)量    SStreamDef streams[0]; }SMsgAVIoctrlGetSupportStreamResp;
(十六)獲取設備對講支持的音頻格式
命令宏定義:請求(IOTYPE_USER_IPCAM_GETAUDIOOUTFORMAT_REQ = 0x032A) | 響應(IOTYPE_USER_IPCAM_GETAUDIOOUTFORMAT_RESP = 0x032B)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device要獲取設備音頻格式,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 // 請求結(jié)構(gòu) typedef struct{    unsigned int channel;       // camera index    char reserved[4]; }SMsgAVIoctrlGetAudioOutFormatReq; // 響應結(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:主通道;默認0 }SMsgAVIoctrlGetAudioOutFormatResp;
(十七)獲取設備信息
命令宏定義:請求(IOTYPE_USER_IPCAM_DEVINFO_REQ = 0x0330) | 響應(IOTYPE_USER_IPCAM_DEVINFO_RESP = 0x0331)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device要獲取設備資訊,Device將設備資訊回傳給App。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned char reserved[4]; }SMsgAVIoctrlDeviceInfoReq; // 響應結(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;
(十八)變更設備密碼
命令宏定義:請求(IOTYPE_USER_IPCAM_SETPASSWORD_REQ = 0x0332) | 響應(IOTYPE_USER_IPCAM_SETPASSWORD_RESP = 0x0333)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device要變更設備密碼,Device告知APP變更結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    char oldpasswd[32];         // 舊密碼    char newpasswd[32];         // 新密碼 }SMsgAVIoctrlSetPasswdReq; // 響應結(jié)構(gòu) typedef struct{    int result;                 // 0x00:成功, 否則失敗    unsigned char reserved[4]; }SMsgAVIoctrlSetPasswdResp;
(十九)SD卡事件回放進度控制
命令宏定義:獲取時長(0x033A/0x033B) | 設置進度(0x033C/0x033D)
數(shù)據(jù)流向:獲取時長(APP→Device/Device→APP) | 設置進度(APP→Device/Device→APP)
功能說明:獲取事件時長信息(視頻流時間戳為UTC格式);從指定時間播放(App不發(fā)送0x2ff停止視頻流)。
數(shù)據(jù)結(jié)構(gòu):
// 獲取時長請求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    STimeDay stTimeDay;         // 事件的時間長度    unsigned char reserved[4]; }SMsgAVIoctrlGetPlaybackReq; // 獲取時長響應結(jié)構(gòu) typedef struct{    unsigned int videoTime;     // 事件視頻時間(秒)    unsigned long size;         // 事件大?。ㄗ止?jié))    unsigned char reserved[4]; }SMsgAVIoctrlGetPlaybackResp; // 設置進度請求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    STimeDay stTimeDay;         // 事件的時間長度    unsigned int progressTime;  // 事件進度時間(秒)    unsigned char reserved[4]; }SMsgAVIoctrlSetRecordProgessReq; // 設置進度響應結(jié)構(gòu)(修正:原拼寫錯誤) 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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(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;         // 信號強度(0-100)    unsigned char encrypt;      // 加密方式:0=無加密,1=WEP,2=WPA,3=WPA2,4=WPA/WPA2混合    unsigned char channel;      // 信道號    unsigned char reserved[1]; }SWifiInfo; // 請求結(jié)構(gòu) typedef struct{    unsigned char reserved[4]; }SMsgAVIoctrlGetWifiListReq; // 響應結(jié)構(gòu) typedef struct{    unsigned char count;        // 搜索到的Wifi數(shù)量    unsigned char reserved[3];    SWifiInfo wifiInfo[0];      // Wifi信息列表 }SMsgAVIoctrlGetWifiListResp;
(二十一)設定設備的網(wǎng)絡
命令宏定義:請求(IOTYPE_USER_IPCAM_SETWIFI_REQ = 0x0342) | 響應(IOTYPE_USER_IPCAM_SETWIFI_RESP = 0x0343)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device要設置設備的wifi,Device告知APP設置設備wifi的結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(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; // 響應結(jié)構(gòu) 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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device要獲取設備當前所設置的wifi,Device將設備當前wifi配置放到IOCtrl資料并回傳給App。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned char reserved[4]; }SMsgAVIoctrlGetWifiReq; // 響應結(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;       // 信號強度 0--100%    unsigned char status;       // 參考SWifiAp的"status" }SMsgAVIoctrlGetWifiResp;
(二十三)設定設備目前所設置的WIFI(64bit密碼)
命令宏定義:請求(IOTYPE_USER_IPCAM_SETWIFI_REQ2 = 0x0346) | 響應(IOTYPE_USER_IPCAM_GETWIFI_RESP2 = 0x0347)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:該command支持64bit密碼,同IOTYPE_USER_IPCAM_SETWIFI_REQ = 0x0342一起發(fā)送。APP告知Device要設定設備目前所設置的wifi,Device將設備當前wifi配置放到IOCtrl資料并回傳給App。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(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; // 響應結(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;       // 信號強度 0--100%    unsigned char status;       // 參考SWifiAp的"status" }SMsgAVIoctrlGetWifiResp2;
(二十四)請求設備開始對講
命令宏定義: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;
(二十五)請求設備關(guān)閉對講
命令宏定義: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;
(二十六)設置畫面鏡像翻轉(zhuǎn)
命令宏定義:請求(IOTYPE_USER_IPCAM_SET_VIDEOMODE_REQ = 0x0370) | 響應(IOTYPE_USER_IPCAM_SET_VIDEOMODE_RESP = 0x0371)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device進行鏡像/翻轉(zhuǎn)設置,Device告知APP設置結(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; // 請求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned char mode;         // 參考 ENUM_VIDEO_MODE    unsigned char reserved[3]; }SMsgAVIoctrlSetVideoModeReq; // 響應結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned char result;       // 0: 成功; otherwise:失敗;    unsigned char reserved[3]; }SMsgAVIoctrlSetVideoModeResp;
(二十七)獲取畫面鏡像翻轉(zhuǎn)模式
命令宏定義:請求(IOTYPE_USER_IPCAM_GET_VIDEOMODE_REQ = 0x0372) | 響應(IOTYPE_USER_IPCAM_GET_VIDEOMODE_RESP = 0x0373)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device獲取鏡像/翻轉(zhuǎn)設置狀態(tài),Device告知APP目前畫面鏡像/翻轉(zhuǎn)的設置狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(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; // 響應結(jié)構(gòu) 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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device執(zhí)行格式化SD卡操作,Device告知APP已格式化SD卡結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned int storage;       // Storage index(例如sdcard插槽= 0,內(nèi)部閃存= 1,...)    unsigned char reserved[4]; }SMsgAVIoctrlFormatExtStorageReq; // 響應結(jié)構(gòu) typedef struct{    unsigned int storage;       // Storage index    char result;                // 0: 成功;                                // -1:不支持格式化指令;                                // otherwise: 失敗;    unsigned char reserved[3]; }SMsgAVIoctrlFormatExtStorageResp;
(二十九)獲取NVR設備通道數(shù)量
命令宏定義:請求(IOTYPE_USER_IPCAM_GET_NVR_CHANNEL_NUMBER_REQ = 0x5A4) | 響應(IOTYPE_USER_IPCAM_GET_NVR_CHANNEL_NUMBER_RESP = 0x5A5)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device獲取設備Channel的接口數(shù)量,Device告知APP目前設備Channel的接口數(shù)量。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned char reserved[4]; }SMsgAVIoctrlGetNVRChannelNumberReq; // 響應結(jié)構(gòu) typedef struct{    unsigned int number;        // 設備的通道數(shù)量    unsigned char reserved[4]; }SMsgAVIoctrlGetNVRChannelNumberResp;
(三十)獲取NVR通道名稱
命令宏定義:請求(IOTYPE_USER_IPCAM_GET_CHANNEL_NAME_REQ = 0x5B0) | 響應(IOTYPE_USER_IPCAM_GET_CHANNEL_NAME_RESP = 0x5B1)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device獲取設備的通道名稱,Device告知APP設備的通道名稱。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(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; // 響應結(jié)構(gòu) typedef struct{    unsigned char count;        // 通道數(shù)量    unsigned char reserved[3];    SChannelInfo sChannelInfo[0]; // SChannelInfo數(shù)組 }SMsgAVIoctrlGetChannelNameResp;
(三十一)設置NVR通道名稱
命令宏定義:請求(IOTYPE_USER_IPCAM_SET_CHANNEL_NAME_REQ = 0x5B2) | 響應(IOTYPE_USER_IPCAM_SET_CHANNEL_NAME_RESP = 0x5B3)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device要設置設備的通道名稱,Device告知APP設置設備通道名稱的結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned char count;        // SChannelInfos的數(shù)量    unsigned char reserved[3];    SChannelInfo sChannelInfo[0]; // SChannelInfo數(shù)組 }SMsgAVIoctrlSetChannelNameReq; // 響應結(jié)構(gòu) 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)
數(shù)據(jù)流向:請求(Device → APP) | 響應(APP → Device) | 通知(Device → APP)
功能說明:主要應用于可視門鈴通話場景。Device告知APP有用戶呼叫;APP告知Device是否進行接聽;Device告知APP是否有其他用戶接聽。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu)(Device→APP) typedef struct{    unsigned char index;        // 門索引號,0:門1; 1:門2;    STimeDay stTime;            // 事件時間    unsigned char reserved[3]; } SMsgAVIoctrlCallReq; // 響應結(jié)構(gòu)(APP→Device) typedef struct{    unsigned char index;        // 門索引號,0:門1;1: 門2;    int nAnswered;              // 0:掛斷;1:接聽;    unsigned char reserved[3]; }SMsgAVIoctrlCallResp; // 通知結(jié)構(gòu)(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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device設置當前設備名稱,Device告知APP設備名稱更新結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned int channel;       // camera index    char devicename[150];       // 當前設備名稱 }SMsgAVIoctrlPushDeviceNameReq; // 響應結(jié)構(gòu) 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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device進行手機時間同步,Device告知APP時間同步結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(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; // 響應結(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 → 設備
功能說明:主要應用于雙向視頻通話場景。APP告知對方結(jié)束當前通話。
數(shù)據(jù)結(jié)構(gòu):
typedef struct{    unsigned char myID[6];      // 我的ID    unsigned char reserved[2]; }SMsgAVIoctrlCallEnd;
(三十六)呼叫方發(fā)出通話請求
命令宏定義:IOTYPE_USER_IPCAM_CALL_REQ = 0x0901;
數(shù)據(jù)流向:呼叫方 → 被呼叫方
功能說明:主要應用于雙向視頻通話場景。呼叫方向被呼叫方發(fā)起通話請求。
數(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; // 通話請求結(jié)構(gòu) 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;    // 其他參與者的數(shù)量    unsigned char reserved[3];    AccountInfo info[];         // 其他參與者的信息 }SMsgAVIoctrlCallReq;
(三十七)被呼叫方響應呼叫請求
命令宏定義:IOTYPE_USER_IPCAM_CALL_RESP = 0x0902;
數(shù)據(jù)流向:被呼叫方 → 呼叫方
功能說明:主要應用于雙向視頻通話場景。被呼叫方響應呼叫方發(fā)起的通話請求。
數(shù)據(jù)結(jié)構(gòu):
typedef struct{    unsigned char answer;       // 0:拒絕; 1:接聽;    unsigned char myID[6];      // myID    unsigned char reserved[1]; }SMsgAVIoctrlCallResp;
(三十八)云臺PTZ控制
命令宏定義:IOTYPE_USER_IPCAM_PTZ_COMMAND = 0x1001;
數(shù)據(jù)流向:APP → Device
功能說明:APP告知Device進行云臺控制操作。
數(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; // 云臺控制結(jié)構(gòu) typedef struct{    unsigned char control;          // 云臺控制指令,參考 ENUM_PTZCMD.    unsigned char speed;            // 云臺轉(zhuǎn)動的速度    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;
(四十)通知設備進行OTA升級
命令宏定義:請求(IOTYPE_USER_IPCAM_OTA_REQ = 0x8001) | 響應(IOTYPE_USER_IPCAM_OTA_RESP = 0x8002)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device開始進行OTA升級,Device告知APPOTA升級進度及結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned char file_checksum[32];      // MD5校驗碼    unsigned char url[256];               // 下載固件url鏈接    unsigned int file_size;               // 固件包大小    unsigned char reserved[4]; }SMsgAVIoctrlOTAReq; // 響應結(jié)構(gòu) 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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:注:新設備需對接OTA功能時建議使用,與舊cmd IOTYPE_USER_IPCAM_DEVINFO_REQ = 0x0330同作用。APP告知Device要獲取設備資訊,Device告知APP設備詳細資訊。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned char reserved[8]; } SMsgAVIoctrlDeviceInfoReq; // 響應結(jié)構(gòu) typedef struct{    unsigned char model[32];           // 產(chǎn)品型號    unsigned char product[32];         // 產(chǎn)品名    unsigned char vender[32];          // 制造商(需與KOTA服務器上的廠商一致)    unsigned char version[64];         // 當前版本號    unsigned int free;                 // SD卡剩余空間    unsigned int total;                // SD卡總空間    unsigned char region;              // 獲取設備所在位置,0:中國大陸區(qū);1:非中國大陸區(qū);    unsigned char reserved[3]; } SMsgAVIoctrlDeviceInfoResp;
注:以上參數(shù)用于拼接向KOTA服務器獲取升級文件的下載地址請求,故需與在KOTA服務器上創(chuàng)建的vender,product,model等信息保持一致,且注意區(qū)分設備所在區(qū)域。
(四十二)獲取設備是否支持OTA升級
命令宏定義:請求(IOTYPE_USER_IPCAM_DEVICE_SUPPORT_OTA_REQ = 0x800A) | 響應(IOTYPE_USER_IPCAM_DEVICE_SUPPORT_OTA_RESP = 0x800B)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device要獲取設備是否支持OTA升級,Device告知APP設備OTA升級支持狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlDeviceSupportOTAReq; // 響應結(jié)構(gòu) 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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device查詢是否支持云存儲,Device告知APP設備云存儲支持狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlDeviceSupportCloudReq; // 響應結(jié)構(gòu) typedef struct{    unsigned int result;           // 0:不支持;1:支持;    unsigned char reserved[4]; } SMsgAVIoctrlDeviceSupportCloudResp;
(四十四)設置設備云存儲錄像開關(guān)
命令宏定義:請求(IOTYPE_USER_IPCAM_DEVICE_SET_CLOUD_REQ = 0x8010) | 響應(IOTYPE_USER_IPCAM_DEVICE_SET_CLOUD_RESP = 0x8011)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device開啟或關(guān)閉云存儲錄像功能,Device告知APP設置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned int channel;        // camera index    unsigned int isOn;           // 1:開啟; 0:關(guān)閉; }SMsgAVIoctrlSetCloudReq; // 響應結(jié)構(gòu) typedef struct{    unsigned int channel;         // camera index    unsigned int result;          // 0:成功; 1:失?。? }SMsgAVIoctrlSetCloudResp;
(四十五)查詢設備云存儲錄像開關(guān)
命令宏定義:請求(IOTYPE_USER_IPCAM_DEVICE_GET_CLOUD_REQ = 0x8012) | 響應(IOTYPE_USER_IPCAM_DEVICE_GET_CLOUD_RESP = 0x8013)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP獲取Device云存儲錄像狀態(tài),Device告知APP當前云存儲錄像狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned int channel;         // camera index    unsigned char reserved[4]; }SMsgAVIoctrlGetCloudReq; // 響應結(jié)構(gòu) typedef struct{    unsigned int channel;         // camera index    unsigned int isOn;            // 1:開啟; 0:關(guān)閉; }SMsgAVIoctrlGetCloudResp;
(四十六)查詢有SD卡事件的日期
命令宏定義:請求(IOTYPE_USER_IPCAM_GET_EVENT_DATE_REQ = 0x9000) | 響應(IOTYPE_USER_IPCAM_GET_EVENT_DATE_RESP = 0x9001)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device獲取有SD卡事件的日期,Device告知APP包含SD卡事件的日期列表。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned int channel;          // Camera Index    unsigned int eventType;        // 查詢的事件類型,0:全部;1:移動偵測;2:全時錄像;(默認是0)    STimeDay stStartTime;          // 開始時間    STimeDay stEndTime;            // 結(jié)束時間    unsigned char reserved[8]; } SMsgAVIoctrlGetEventDateReq; // 日期結(jié)構(gòu) typedef struct{    char date[8];                     // 事件的日期,例如:20200210,后面依次還有count-1個date[8] } EventDate; // 響應結(jié)構(gòu) typedef struct{    unsigned int count;               // 事件的日期數(shù)量    unsigned char reserved[4];    EventDate eventDate[1];           // 事件的日期 } SMsgAVIoctrlGetEventDateResp;
(四十七)查詢設備人形偵測的開關(guān)
命令宏定義:請求(IOTYPE_USER_IPCAM_GET_HUMANDETECTION_REQ = 0x9002) | 響應(IOTYPE_USER_IPCAM_GET_HUMANDETECTION_RESP = 0x9003)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device查詢?nèi)诵蝹蓽y開關(guān)狀態(tài),Device告知APP人形偵測開關(guān)查詢結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned char reserved[4]; } SMsgAVIoctrlGetHumanDetectionReq; // 響應結(jié)構(gòu) typedef struct{    unsigned int result;             // 1:開啟;其他:關(guān)閉;    unsigned char reserved[4]; } SMsgAVIoctrlGetHumanDetectionResp;
(四十八)設置設備人形偵測開關(guān)
命令宏定義:請求(IOTYPE_USER_IPCAM_SET_HUMANDETECTION_REQ = 0x9004) | 響應(IOTYPE_USER_IPCAM_SET_HUMANDETECTION_RESP = 0x9005)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device設置人形偵測開關(guān)狀態(tài),Device告知APP人形偵測開關(guān)設置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned int isOn;        // 1:開啟;0:關(guān)閉;    unsigned char reserved[4]; } SMsgAVIoctrlSetHumanDetectionReq; // 響應結(jié)構(gòu) typedef struct{    unsigned int result;             // 0:成功;其他:失敗;    unsigned char reserved[4]; } SMsgAVIoctrlSetHumanDetectionResp;
(四十九)查詢設備夜視狀態(tài)
命令宏定義:請求(IOTYPE_USER_IPCAM_GET_NIGHTVISION_REQ = 0x9006) | 響應(IOTYPE_USER_IPCAM_GET_NIGHTVISION_RESP = 0x9007)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device獲取夜視設置狀態(tài),Device告知APP當前夜視設置狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned char reserved[4]; } SMsgAVIoctrlGetNightVisionReq; // 響應結(jié)構(gòu) typedef struct{    unsigned int result;             // 0:關(guān)閉;1:開啟;2:自動;    unsigned char reserved[4]; } SMsgAVIoctrlGetNightVisionResp;
(五十)設置設備夜視狀態(tài)
命令宏定義:請求(IOTYPE_USER_IPCAM_SET_NIGHTVISION_REQ = 0x9008) | 響應(IOTYPE_USER_IPCAM_SET_NIGHTVISION_RESP = 0x9009)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device設置夜視狀態(tài),Device告知APP夜視設置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned int isOn;        // 0:關(guān)閉;1:開啟;2:自動;    unsigned char reserved[4]; } SMsgAVIoctrlSetNightVisionReq; // 響應結(jié)構(gòu) typedef struct{    unsigned int result;             // 0:成功;其他:失??;    unsigned char reserved[4]; } SMsgAVIoctrlSetNightVisionResp;
(五十一)查詢設備夏令時開關(guān)
命令宏定義:請求(IOTYPE_USER_IPCAM_GET_SUMMERTIME_REQ = 0x9010) | 響應(IOTYPE_USER_IPCAM_GET_SUMMERTIME_RESP = 0x9011)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device查詢夏令時開關(guān)狀態(tài),Device告知APP夏令時開關(guān)查詢結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned char reserved[4]; } SMsgAVIoctrlGetSummerTimeReq; // 響應結(jié)構(gòu) typedef struct{    unsigned int result;             // 1:開啟;其他:關(guān)閉;    unsigned char reserved[4]; } SMsgAVIoctrlGetSummerTimeResp;
(五十二)設置設備夏令時開關(guān)
命令宏定義:請求(IOTYPE_USER_IPCAM_SET_SUMMERTIME_REQ = 0x9012) | 響應(IOTYPE_USER_IPCAM_SET_SUMMERTIME_RESP = 0x9013)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device設置夏令時開關(guān)狀態(tài),Device告知APP夏令時開關(guān)設置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned int isOn;        // 1:開啟; 0:關(guān)閉;    unsigned char reserved[4]; } SMsgAVIoctrlSetSummerTimeReq; // 響應結(jié)構(gòu) 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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device需要獲取certKey、profileVer,Device告知APP設備的certKey和profileVer信息。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlGetProfileReq; // 響應結(jié)構(gòu) 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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device需要獲取上傳文件的通道列表,Device告知APP設備的可上傳類型、可上傳的連接通道。
數(shù)據(jù)結(jié)構(gòu):
// 文件信息結(jié)構(gòu) typedef struct{    unsigned char fileName[64];     // 文件名稱 }Fileinfo; // 請求結(jié)構(gòu) typedef struct{    int  functionalType;            // 功能類型: 1.預設語音  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; // 響應結(jié)構(gòu) typedef struct{    unsigned int type;           // TKTransferType 上傳類型    int count;                   // 通道集合的總數(shù)(最多10個) ; -1:表示失??;    ChannelInfo channel[10]; } SMsgAVIoctrlFileUploadResp;
(五十五)獲取下載SD卡事件的通道列表
命令宏定義:請求(IOTYPE_USER_IPCAM_EVENT_DOWNLOAD_FILE_REQ = 0x9029) | 響應(IOTYPE_USER_IPCAM_EVENT_DOWNLOAD_FILE_RESP = 0x902A)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device需要獲取下載SD卡事件的通道列表,Device告知APP設備的下載類型、可下載的連接通道。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    int count;                      // 需要下載事件的個數(shù)    STimeDay sTimeDayList [10];     // 需要下載SD卡事件的時間集合(每次最多10個) }SMsgAVIoctrlEventFileDownReq; // 傳輸類型枚舉 typedef enum{    TKTransferType_AVAPI = 0,  // AVAPI下載類型    TKTransferType_RDT   = 1   // RDT下載類型 }ENUM_TKTransferType; // 通道信息結(jié)構(gòu) typedef struct{    unsigned int channel;    // 通道 id }ChannelInfo; // 響應結(jié)構(gòu) typedef struct{    unsigned int type;         // TKTransferType 下載類型    int count;                 // 通道集合的總數(shù)(最多10個) ; -1:表示失?。?    ChannelInfo channel[10]; } SMsgAVIoctrlEventFileDownResp;
(五十六)獲取預設語音列表
命令宏定義:請求(IOTYPE_USER_IPCAM_GET_VOICE_FILELIST_REQ = 0x902B) | 響應(IOTYPE_USER_IPCAM_GET_VOICE_FILELIST_RESP = 0x902C)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device需要獲取預設語音文件名稱列表,Device告知APP設備的預設語音列表。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    int channel;                // 通道號 }SMsgAVIoctrlGetVoiceFileReq; // 預設語音信息結(jié)構(gòu) typedef struct{    int isPresetSpeech;    // 是否預設語音,1:當前預設語音,0:當前不是預設語音;    char fileName[64];     // 文件名稱 }PresetSpeechInfo; // 響應結(jié)構(gòu) typedef struct{    int count;         // 文件名稱總數(shù) (最多10個); -1:表示失敗;    PresetSpeechInfo presetSpeechInfo [10]; } SMsgAVIoctrlGetVoiceFileResp;
(五十七)播放設備存儲的預設語音
命令宏定義:請求(IOTYPE_USER_IPCAM_PLAY_VOICE_REQ = 0x902D) | 響應(IOTYPE_USER_IPCAM_PLAY_VOICE_RESP = 0x902E)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device開始播放預設語音,Device告知APP語音播放結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    int channel;  // 通道號 }SMsgAVIoctrlPlayVoiceReq; // 響應結(jié)構(gòu) typedef struct{    int result;    // 1:成功播放;其他:返回播放失?。? } SMsgAVIoctrlPlayVoiceResp;
(五十八)查詢設備是否支持雙向視頻
命令宏定義:請求(IOTYPE_USER_IPCAM_DEVICE_SUPPORT_DOUBLEVIDEO_REQ = 0x9030) | 響應(IOTYPE_USER_IPCAM_DEVICE_SUPPORT_DOUBLEVIDEO_RESP = 0x9031)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP發(fā)送請求獲取設備是否支持雙向視頻,Device告知APP設備雙向視頻支持狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlDeviceSupportDoubleVideoReq; // 響應結(jié)構(gòu) typedef struct{    unsigned char isSupport;       // 0:不支持;1:支持;    unsigned char reserved[3]; } SMsgAVIoctrlDeviceSupportDoubleVideoResp;
(五十九)發(fā)起雙向視頻
命令宏定義:請求(IOTYPE_USER_IPCAM_DOUBLEVIDEOCALL_REQ = 0x9032) | 響應(IOTYPE_USER_IPCAM_DOUBLEVIDEOCALL_RESP = 0x9033)
數(shù)據(jù)流向:請求(呼叫方 → 被呼叫方) | 響應(被呼叫方 → 呼叫方)
功能說明:呼叫方向被呼叫方發(fā)起雙向視頻通話請求,被呼叫方響應呼叫方的通話請求。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu)(呼叫方→被呼叫方) typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlDoubleVideoCallReq; // 響應結(jié)構(gòu)(被呼叫方→呼叫方) typedef struct{    unsigned char answer;    // 0:拒絕;1:接聽;    unsigned char reserved[3]; } SMsgAVIoctrlDoubleVideoCallResp;
(六十)查詢SD卡掛載狀態(tài)
命令宏定義:請求(IOTYPE_USER_IPCAM_SDINFO_REQ = 0x9034) | 響應(IOTYPE_USER_IPCAM_SDINFO_RESP = 0x9035)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP發(fā)送請求獲取設備SD卡掛載狀態(tài),Device告知APP設備SD卡當前掛載狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlSdInfoReq; // 響應結(jié)構(gòu) typedef struct{    unsigned char state;              // 0:sd卡異常;1:未插卡;2:已插卡;    unsigned char reserved[3]; } SMsgAVIoctrlSdInfoResp;
(六十一)查詢設備當前對講狀態(tài)
命令宏定義:請求(IOTYPE_USER_IPCAM_SPEAK_STATE_REQ = 0x9036) | 響應(IOTYPE_USER_IPCAM_SPEAK_STATE_RESP = 0x9037)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP發(fā)送請求獲取設備當前對講狀態(tài),Device告知APP設備當前對講狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned char reserved[8]; }SMsgAVIoctrlSpeakStateReq; // 響應結(jié)構(gòu) typedef struct{    unsigned char state;          // 0:未占用(允許app進行對講);1:被占用(不允許app進行對講);2:不支持(設備沒有對講功能);    unsigned char reserved[3]; } SMsgAVIoctrlSpeakStateResp;
(六十二)獲取移動追蹤開關(guān)狀態(tài)
命令宏定義:請求(IOTYPE_USER_IPCAM_GET_MOTION_TRACKING_REQ = 0x9038) | 響應(IOTYPE_USER_IPCAM_GET_MOTION_TRACKING_RESP = 0x9039)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device獲取移動追蹤狀態(tài),Device告知APP當前移動追蹤狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(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; // 追蹤任務結(jié)構(gòu) typedef struct{    unsigned int traceType;                // 追蹤類型,詳情查看ENUM_TRACE_TYPE    unsigned int isOn;                     // 是否開啟, 0:關(guān)閉;1:開啟;    unsigned char reserved[4]; }SMsgTraceTask; // 響應結(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;
(六十三)設置移動追蹤開關(guān)狀態(tài)
命令宏定義:請求(IOTYPE_USER_IPCAM_SET_MOTION_TRACKING_REQ = 0x903A) | 響應(IOTYPE_USER_IPCAM_SET_MOTION_TRACKING_RESP = 0x903B)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device設置追蹤開關(guān)狀態(tài),Device告知APP移動追蹤設置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 追蹤類型枚舉 typedef enum{    TRACE_TYPE_OBJECT =  0x01,    // 物體追蹤    TRACE_TYPE_HUMAN =  0x02,     // 人形追蹤    TRACE_TYPE_AUDIO =  0x03     // 聽音辨位 }ENUM_TRACE_TYPE; // 追蹤任務結(jié)構(gòu) typedef struct{    unsigned int traceType;                // 追蹤類型,詳情查看ENUM_TRACE_TYPE    unsigned int isOn;                     // 是否開啟, 0:關(guān)閉;1:開啟;    unsigned char reserved[4]; }SMsgTraceTask; // 設置結(jié)果結(jié)構(gòu) typedef struct{    unsigned int traceType;                      // 設置的追蹤類型 詳情查看ENUM_TRACE_TYPE    unsigned int result;                         // 當前設置類型是否設置成功,0:成功;others:失??;    unsigned char reserved[4]; }SMsgAVIoctrlSetResult; // 請求結(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; // 響應結(jié)構(gòu) typedef struct{    unsigned int count;                       // 設置返回結(jié)果的數(shù)量    SMsgAVIoctrlSetResult result[1];          // 設置返回結(jié)果的數(shù)組    unsigned char reserved[4]; }SMsgAVIoctrlSetMotionTrackingResp;
(六十四)獲取指示燈狀態(tài)
命令宏定義:請求(IOTYPE_USER_IPCAM_GET_PILOT_LAMP_REQ = 0x903C) | 響應(IOTYPE_USER_IPCAM_GET_PILOT_LAMP_RESP = 0x903D)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device獲取指示燈的狀態(tài),Device告知APP當前指示燈狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned int channel;        // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetPilotLampReq; // 響應結(jié)構(gòu) typedef struct{    unsigned int channel;         // Camera Index    unsigned int lightState;      // 指示燈的狀態(tài),0:關(guān)閉;1:開啟;    unsigned char reserved[8]; }SMsgAVIoctrlGetPilotLampResp;
(六十五)設置指示燈狀態(tài)
命令宏定義:請求(IOTYPE_USER_IPCAM_SET_PILOT_LAMP_REQ = 0x903E) | 響應(IOTYPE_USER_IPCAM_SET_PILOT_LAMP_RESP = 0x903F)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device設置指示燈狀態(tài),Device告知APP指示燈設置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned int channel;         // Camera Index    unsigned int lightState;      // 指示燈的狀態(tài), 0:關(guān)閉; 1:開啟;    unsigned char reserved[8]; }SMsgAVIoctrlSetPilotLampReq; // 響應結(jié)構(gòu) 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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device重啟設備,Device告知APP設備重啟結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlSetRestartReq; // 響應結(jié)構(gòu) typedef struct{    unsigned int result;         // 0:成功;otherwise:失敗;    unsigned char reserved[4]; }SMsgAVIoctrlSetRestartResp;
(六十七)獲取智能偵測狀態(tài)
命令宏定義:請求(IOTYPE_USER_IPCAM_GET_INTELLIGENT_DETECTION_REQ) | 響應(IOTYPE_USER_IPCAM_GET_INTELLIGENT_DETECTION_RESP)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device獲取智能偵測狀態(tài),Device告知APP當前智能偵測狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetIntelligentDetectionReq; // 偵測任務結(jié)構(gòu) typedef struct{    unsigned int detectionType;   // 偵測類型(類型詳情請參考ENUM_EVENTTYPE)    unsigned int isOn;            // 是否開啟,0:關(guān)閉;1:開啟;    unsigned int sensitivity;     // 靈敏度    unsigned char reserved[4];    // 保留位 }SMsgDetectionTask; // 響應結(jié)構(gòu) typedef struct{    unsigned int channel;          // Camera Index    unsigned int count;            // SMsgDetectionTask數(shù)組的長度    unsigned char reserved[4];     // 保留位    SMsgDetectionTask task[1] ;    // 偵測類型的數(shù)組;count是數(shù)組的長度; }SMsgAVIoctrlGetIntelligentDetectionResp;
(六十八)設置智能偵測狀態(tài)
命令宏定義:請求(IOTYPE_USER_IPCAM_SET_INTELLIGENT_DETECTION_REQ) | 響應(IOTYPE_USER_IPCAM_SET_INTELLIGENT_DETECTION_RESP)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device設置智能偵測狀態(tài),Device告知APP智能偵測設置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 偵測任務結(jié)構(gòu) typedef struct{    unsigned int detectionType;   // 偵測類型(類型詳情請參考ENUM_EVENTTYPE)    unsigned int isOn;            // 是否開啟,0:關(guān)閉;1:開啟;    unsigned int sensitivity;     // 靈敏度    unsigned char reserved[4];    // 保留位 }SMsgDetectionTask; // 設置結(jié)果結(jié)構(gòu) typedef struct{    unsigned int detectionType;  // 設置的偵測類型(類型詳情請參考ENUM_EVENTTYPE)    unsigned int result;         // 當前設置類型是否設置成功0:成功;otherwise:失??;    unsigned char reserved[4]; } SMsgAVIoctrlSetDetectResult; // 請求結(jié)構(gòu) typedef struct{    unsigned int channel;        // Camera Index    unsigned int count;          // SMsgDetectionTask數(shù)組的長度    unsigned char reserved[4];   // 保留位    SMsgDetectionTask task[1] ;  // 偵測類型的數(shù)組;count是數(shù)組的長度; }SMsgAVIoctrlSetIntelligentDetectionReq; // 響應結(jié)構(gòu) typedef struct{    unsigned int count;                      // 設置返回結(jié)果的數(shù)量    SMsgAVIoctrlSetDetectResult result[1];   // 設置返回結(jié)果的數(shù)組    unsigned char reserved[4]; }SMsgAVIoctrlSetIntelligentDetectionResp;
(六十九)查詢休眠設置
命令宏定義:請求(IOTYPE_USER_IPCAM_GET_DORMANCY_REQ = 0x9046) | 響應(IOTYPE_USER_IPCAM_GET_DORMANCY_RESP = 0x9047)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device獲取休眠設置狀態(tài),Device告知APP當前休眠設置狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 休眠定時任務結(jié)構(gòu) typedef struct{    STimeDay  startTime;           // 開啟時間    STimeDay  endTime;             // 結(jié)束時間    unsigned int executionTime;    // 實行時間,0:執(zhí)行一次;1:每天;2:工作日;3:周末;    unsigned int isOn;             // 是否開啟,0:關(guān)閉;1:開啟;    unsigned char reserved[4]; }SMsgDormancyTask; // 請求結(jié)構(gòu) typedef struct{    unsigned int channel;       // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetDormancyReq; // 響應結(jié)構(gòu) typedef struct{    unsigned int channel;            // Camera Index    unsigned int sleepState;         // 設備狀態(tài),0:關(guān)閉;1:開啟;2:定時休眠中;    unsigned int count;              // 設置定時休眠的數(shù)組,最多5個    unsigned int currentSleepState;  // 當前設備是否處在休眠中,0:不休眠;1:休眠;    SMsgDormancyTask task[1];        // 參考SMsgDormancyTask }SMsgAVIoctrlGetDormancyResp;
(七十)設置休眠設置狀態(tài)
命令宏定義:請求(IOTYPE_USER_IPCAM_SET_DORMANCY_REQ = 0x9048) | 響應(IOTYPE_USER_IPCAM_SET_DORMANCY_RESP = 0x9049)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device設置休眠狀態(tài),Device告知APP休眠設置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 休眠定時任務結(jié)構(gòu) typedef struct{    STimeDay  startTime;           // 開啟時間    STimeDay  endTime;             // 結(jié)束時間    unsigned int executionTime;    // 實行時間,0:執(zhí)行一次;1:每天;2:工作日;3:周末;    unsigned int isOn;             // 是否開啟,0:關(guān)閉;1:開啟;    unsigned char reserved[4]; }SMsgDormancyTask; // 請求結(jié)構(gòu) typedef struct{    unsigned int channel;         // Camera Index    unsigned int sleepState;      // 設備狀態(tài),0:關(guān)閉;1:開啟;2:定時休眠中;    unsigned int count;           // 設置定時休眠的數(shù)組,1-5最多5個    unsigned char reserved[4];    SMsgDormancyTask task[1]; }SMsgAVIoctrlSetDormancyReq; // 響應結(jié)構(gòu) typedef struct{    unsigned int result;      // 0:成功;otherwise:失敗;    unsigned char reserved[4]; }SMsgAVIoctrlSetDormancyResp;
(七十一)獲取時區(qū)信息
命令宏定義:請求(IOTYPE_USER_IPCAM_GET_TIME_ZONE_REQ) | 響應(IOTYPE_USER_IPCAM_GET_TIME_ZONE_RESP)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device獲取時區(qū)等狀態(tài)信息,Device告知APP當前時區(qū)、語言、地區(qū)等狀態(tài)信息。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) 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; // 響應結(jié)構(gòu) typedef struct{    unsigned int channel;            // Camera Index    unsigned long timestamp;         // UTC時間戳,精確到秒(s)    unsigned int isFollowingSystem;  // 是否跟隨系統(tǒng),1:跟隨;0:不跟隨;    int timeZone ;                   // -12~12 時區(qū)(包含夏令時偏移量),精確到分鐘(比如:英國在UTC 0 時區(qū),夏令時+1,則timeZone = 60)    unsigned char region[128] ;      // 地區(qū)    unsigned int language;           // 語系(參考ENUM_LANGUAGE_TYPE)    unsigned char reserved[4]; }SMsgAVIoctrlGetTimeZoneResp;
備注:long一般是占8個字節(jié),因為考慮有些編譯器做字節(jié)對齊的時候,會進行內(nèi)存優(yōu)化,建議struct定義的時候加上免優(yōu)化的選項(linux一般是在struct后加上__attribute__((packed)))
(七十二)設置設備時區(qū)
命令宏定義:請求(IOTYPE_USER_IPCAM_SET_TIME_ZONE_REQ) | 響應(IOTYPE_USER_IPCAM_SET_TIME_ZONE_RESP)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device設置時區(qū)等狀態(tài)信息,Device告知APP時區(qū)設置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 語言類型枚舉 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; // 請求結(jié)構(gòu) typedef struct{    unsigned int channel;            // Camera Index    unsigned long timestamp;         // UTC時間戳,精確到秒(s)    unsigned int isFollowingSystem;  // 是否跟隨系統(tǒng),1:跟隨;0:不跟隨;    int timeZone ;                   // -12~12 時區(qū)(包含夏令時偏移量),精確到分鐘(比如:英國在UTC 0 時區(qū),夏令時+1,則timeZone = 60)    unsigned char region[128] ;      // 地區(qū)    unsigned int  language;          // 語系(參考ENUM_LANGUAGE_TYPE)    unsigned char reserved[4]; }SMsgAVIoctrlSetTimeZoneReq; // 響應結(jié)構(gòu) typedef struct{    unsigned int result;         // 0:成功;otherwise:失??;    unsigned char reserved[4]; }SMsgAVIoctrlSetTimeZoneResp;
備注:long一般是占8個字節(jié),因為考慮有些編譯器做字節(jié)對齊的時候,會進行內(nèi)存優(yōu)化,建議struct定義的時候加上免優(yōu)化的選項(linux一般是在struct后加上__attribute__((packed)))
(七十三)根據(jù)命令獲取設備各種狀態(tài)
命令宏定義:請求(IOTYPE_USER_IPCAM_GET_ALL_STATE_REQ = 0x904E) | 響應(IOTYPE_USER_IPCAM_GET_ALL_STATE_RESP)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device根據(jù)指令獲取設備的狀態(tài),設備根據(jù)之前定義的cmd來返回狀態(tài)。
數(shù)據(jù)結(jié)構(gòu):
// 獲取設備狀態(tài)的命令數(shù)據(jù) typedef struct{    unsigned int cmdType;   // 命令類型 }SMsgCommandTask; // 請求結(jié)構(gòu) typedef struct{    unsigned int channel;        // Camera Index    unsigned int count;          // 命令數(shù)組長度    unsigned char reserved[4];    SMsgCommandTask task[1];     // 參考SMsgCommandTask }SMsgAVIoctrlGetAllStateReq;
(七十四)重置設備(恢復出廠設置)
命令宏定義:請求(IOTYPE_USER_IPCAM_SET_RESET_REQ = 0x30000001) | 響應(IOTYPE_USER_IPCAM_SET_RESET_RESP = 0x30000002)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device進行重置(恢復出廠設置),Device告知APP設置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct{    unsigned int channel;        // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlSetResetReq; // 響應結(jié)構(gòu) 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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device獲取音樂列表,Device告知APP音樂列表。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(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;         // 序號    unsigned int isCustom;      // 是否自定義音樂,0:默認音樂 1:自定義音樂    unsigned int isCurrent;     // 是否選中,1:選中,其他:否    unsigned char reserved[4]; }SAvMusic; // 響應結(jié)構(gòu) typedef struct {    unsigned int count;    unsigned char reserved[4];    SAvMusic stMusic[1];         // 數(shù)組 }SMsgAVIoctrlGetMusicListResp;
(七十六)獲取音樂播放狀態(tài)
命令宏定義:請求(IOTYPE_USER_IPCAM_GET_MUSIC_STATE_REQ = 0x9052) | 響應(IOTYPE_USER_IPCAM_GET_MUSIC_STATE_RESP = 0x9053)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP請求Device告知當前音樂的播放狀態(tài)(當播放狀態(tài)改變時,設備應主動告知APP)。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct {    unsigned int channel;  // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetMusicStateReq; // 響應結(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;            // 當前音樂 } __attribute__((packed)) SMsgAVIoctrlGetMusicStateResp;
(七十七)音樂播放控制
命令宏定義:請求(IOTYPE_USER_IPCAM_PLAY_MUSIC_REQ = 0x9054) | 響應(IOTYPE_USER_IPCAM_PLAY_MUSIC_RESP = 0x9055)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device開始/停止播放音樂,Device告知APP設置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(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;             // 當前音樂 } __attribute__((packed)) SMsgAVIoctrlPlayMusicReq; // 響應結(jié)構(gòu) 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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device刪除錄制音樂,Device告知APP刪除錄制音樂結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct {    unsigned int channel;        // Camera Index    unsigned char reserved[4];    SAvMusic stMusic;            // 當前音樂 }SMsgAVIoctrlDeleteMusicReq; // 響應結(jié)構(gòu) 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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device進行音樂設置,Device告知APP設置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct {    unsigned int channel;        // Camera Index    unsigned char reserved[4];    SAvMusic stMusic;            // 設置音樂 } __attribute__((packed)) SMsgAVIoctrlSetMusicReq; // 響應結(jié)構(gòu) typedef struct {    unsigned int result;        // 0:成功,其他:失敗    unsigned char reserved[4]; }SMsgAVIoctrlSetMusicResp;
補充說明:設置選中時,如果是單曲循環(huán)模式,則循環(huán)播放該音樂;如果是列表播放模式或者隨機播放,則表示從該音樂開始按列表或者隨機播放。
(八十)查詢音樂播放模式
命令宏定義:請求(IOTYPE_USER_IPCAM_GET_MUSIC_PLAY_MODE_REQ = 0x905A) | 響應(IOTYPE_USER_IPCAM_GET_MUSIC_PLAY_MODE_RESP = 0x905B)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device獲取音樂播放模式狀態(tài)(當播放模式改變時,設備應主動告知APP)。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct {    unsigned int channel;       // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetMusicPlayModeReq; // 響應結(jié)構(gòu) typedef struct {    unsigned int channel;       // Camera Index    unsigned int playMode;      // 播放模式,0:單曲循環(huán),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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device設置播放模式,Device告知APP設置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu)(修正原拼寫錯誤:SMsgAVIoctrlSetMusicPlayModeRep → SMsgAVIoctrlSetMusicPlayModeReq) typedef struct {    unsigned int channel;       // Camera Index    unsigned int playMode;      // 播放模式,0:單曲循環(huán),1:列表播放,2:隨機播放    unsigned char reserved[4]; }SMsgAVIoctrlSetMusicPlayModeReq; // 響應結(jié)構(gòu) 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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device獲取設備音量狀態(tài),Device告知APP設備音量。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(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:麥克風,1:揚聲器 } SAvVol; // 響應結(jié)構(gòu) 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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device設置設備音量,Device告知APP設置結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct {    unsigned int channel;         // Camera Index    unsigned char reserved[4];    // 保留位    unsigned int count;    SAvVol vol[1]; }SMsgAVIoctrlSetDeviceVolReq; // 響應結(jié)構(gòu) 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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device獲取設備溫度狀態(tài)(當溫度改變時,設備應主動告知APP)。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct {    unsigned int channel;        // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetDeviceTemperatureReq; // 響應結(jié)構(gòu) typedef struct {    unsigned int channel;       // Camera Index    unsigned int integer;       // 小數(shù)點前的溫度,比如36.2,此處就是36    unsigned int decimal;       // 小數(shù)點后的溫度,比如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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device獲取設備溫度單位狀態(tài),Device告知APP設備溫度單位。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct {    unsigned int channel;        // Camera Index    unsigned char reserved[4]; }SMsgAVIoctrlGetDeviceTemperatureUnitReq; // 響應結(jié)構(gòu) 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)
數(shù)據(jù)流向:請求(APP → Device) | 響應(Device → APP)
功能說明:APP告知Device設置設備溫度單位狀態(tài),Device告知APP設備溫度單位響應結(jié)果。
數(shù)據(jù)結(jié)構(gòu):
// 請求結(jié)構(gòu) typedef struct {    unsigned int channel;       // Camera Index    unsigned int unit;          // 單位,0:攝氏度(℃),1:華氏度(℉)    unsigned char reserved[4]; }SMsgAVIoctrlSetDeviceTemperatureUnitReq; // 響應結(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>
解決方案
新聞動態(tài)
公司動態(tài)
行業(yè)資訊
媒體報道
永續(xù)發(fā)展
經(jīng)營者的話
社會參與
環(huán)境永續(xù)
公司治理

+86 755 27702549

7×24小時服務熱線

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

關(guān)注“TUTK”

TUTK服務盡在掌握

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

TUTK服務盡在掌握

全國免費服務熱線
+86 755 27702549

返回頂部