- 1.SDK简介
- 2.SDK接口定义
- 2.1.获取SDK信息
- 2.2.初始化IVY SDK
- 2.3.上报本地IPC信息
- 2.4.发送直播音视频数据
- 2.5.发送回放音视频数据
- 2.6.推送告警消息
- 2.7.上报设备状态信息
- 2.8.获取P2P信息
- 2.9.获取P2P连接状态
- 2.10.硬件复位
- 2.11.云存储初始化
- 2.12.开始云存储
- 2.13.停止云存储
- 2.14.解析声波配网WIFI信息
- 2.15.修改用户信息
- 2.16.获取出厂用户信息
- 3.用户实现接口定义
- 3.1.系统管理
- 3.1.1.设备信息
- 3.1.2.设备能力集
- 3.1.3.日志信息
- 3.1.4.用户管理
- 3.1.5.系统升级
- 3.1.6.系统维护
- 3.1.7.烧录MAC地址
- 3.2.基本设置
- 3.2.1.系统时间
- 3.2.3.WIFI信息设置
- 3.2.4.获取WIFI列表
- 3.2.5.设置AP信息
- 3.2.6.信道选择
- 3.2.7.视频编码参数设置
- 3.2.8.视频码流模式设置
- 3.2.9.图像参数设置
- 3.2.10.视频镜像翻转模式设置
- 3.2.11.白天夜视切换模式设置(开关红外灯)
- 3.2.12.夜视计划配置
- 3.2.13.环境模式设置模式设置(电源频率等)
- 3.2.14.OSD信息配置
- 3.2.15.音量设置
- 3.2.16.设置指示灯状态
- 3.2.17.设置提示音开关状态
- 3.3.报警设置
- 3.3.1.移动侦测报警
- 3.3.2.设备异常报警开关
- 3.4.录像存储
- 3.4.1.录像类型信息设置
- 3.4.2.录像存储设置
- 3.4.3.录像搜索
- 3.4.4.录像回放控制
- 3.4.5.磁盘信息获取
- 3.4.6.磁盘格式化
- 3.4.7.获取SD卡信息
- 3.4.8.格式化SD卡
- 3.5.媒体操作
- 3.5.1.打开视频
- 3.5.2.关闭视频
- 3.5.3.打开音频
- 3.5.4.关闭音频
- 3.5.5.打开对讲
- 3.5.6.关闭对讲
- 3.5.7.发送对讲数据
- 3.5.8.图片抓拍
- 3.5.9.请求关键帧
- 3.6. 4G相关
- 3.6.1.获取4G模块信息
- 3.6.2.获取4G模块版本信息
- 3.7.IPC设备管理
- 3.7.1.添加IPC(NVR)
- 3.7.2.删除IPC(NVR)
- 4.数据结构定义
- 4.1.SDK环境变量结构体
- 4.2.IPC链接状态结构体
- 4.3.视频信息结构体
- 4.4.音频信息结构体
- 4.5.音视频帧信息结构体
- 4.6.设备信息结构体
- 4.7.用户P2P信息结构体
- 4.8.P2P连接状态信息
- 4.9.磁盘分区信息结构体
- 4.10.磁盘信息结构体
- 4.11.存储配置信息结构体
- 4.12.系统时间信息结构体
- 4.13.网络参数结构体
- 4.14.WIFI信息结构体
- 4.15.WIFI列表起始信息结构体
- 4.16.WIFI列表信息结构体
- 4.17.AP信息结构体
- 4.18.视频编码参数结构体
- 4.19.视频码流模式结构体
- 4.20.图像参数结构体
- 4.21.镜像翻转模式结构体
- 4.22.录像类型结构体
- 4.23.设备异常报警开关设置
- 4.24.移动侦测配置结构体
- 4.25.白天夜视,红外灯模式
- 4.26.夜视计划配置信息结构体
- 4.27.推送告警消息结构体
- 4.28.设备状态信息结构体
- 4.29.P2P信息结构体
- 4.30.云存储初始化信息结构体
- 4.31.云存储告警信息结构体
- 4.32.环境模式结构体
- 4.33.OSD配置结构体
- 4.34.音量信息结构体
- 4.35.用户信息结构体
- 4.36.4G信息结构体
- 4.37.4G版本信息结构体
- 4.38.录像搜索信息结构体
- 4.39.录像列表信息结构体
- 4.40.录像回放控制结构体
- 4.41.SD卡信息结构体
- 5.枚举定义
- 6.错误码定义
中文简体 English
1.SDK简介
IVY SDK是基于爱为私有网络通信协议开发的,为了第三方IPC/NVR设备厂商能够快速接入到IVY IOT系统而设计,主要运行于嵌入式linux平台上。为用户提供APP交互、云存储、P2P传输等功能。
IVY SDK提供给用户的接口分为两类,一类用于用户主动调用来操作SDK和推送音视频数据以及上报报警消息等事件通知,此类接口以头文件的形式提供,用户使用时调用即可;另外一类是类似于回调的方式,由SDK调用来从设备中获取状态信息以及设置相应的参数,此类接口,SDK中提供接口的声明,具体实现需要用户来完成。
2.SDK接口定义
2.1.获取SDK信息
IVY_CODE IvyGetSdkInfo(IvySdkInfo_t *sdkInfo);
类型:IVY_CODE
说明:获取SDK 版本信息。
参数:
sdkInfo –sdk信息结构体指针
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
2.2.初始化IVY SDK
IVY_CODE IvySdkInit(const IvySdkEnvVar_t* sdkEnvVar);
类型:IVY_CODE
说明:初始化IVY SDK
参数:
sdkEnvVar–SDK环境变量结构体,详见IvySdkEnvVar_t。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
2.3.上报本地IPC信息
IVY_CODE IvyReportIpcList(IvyIpcConnectInfo_t *ipcConnectInfo, int32_t size);
类型:IVY_CODE
说明:上报本地搜索到的IPC设备信息给SDK,以便SDK通知app设备列表情况,NVR使用
参数:
ipcConnectInfo–ipc连接信息结构体变量,详见IvyIpcConnectInfo_t。
size–IPC个数。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
2.4.发送直播音视频数据
IVY_CODE IvyWriteFrameData(IvyFrame_t* frame);
类型:IVY_CODE
说明:发送音视频帧数据到SDK。
参数:
frame–SDK音视频数据结构体指针,详见IvyFrame_t 。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
2.5.发送回放音视频数据
IVY_CODE IvyWriteRecordPlayData(IvyFrame_t* frame);
类型:IVY_CODE
说明:发送回放音视频帧数据到SDK。
参数:
frame–SDK音视频数据结构体指针,详见IvyFrame_t 。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
2.6.推送告警消息
IVY_CODE IvyAlarmMsgPush(const IvyAlarmMsg_t *ivyAlarmMsg);
类型:IVY_CODE
说明:发送回放音视频帧数据到SDK。
参数:
ivyAlarmMsg–告警消息结构体指针,详见IvyAlarmMsg_t 。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
2.7.上报设备状态信息
IVY_CODE IvyReportDevStateInfo(IvyDevStateEvent_e eventType, IvyDevState_t devStateInfo);
类型:IVY_CODE
说明:上报设备状态信息给sdk
参数:
eventType–状态事件,详见IvyDevState_t 。
devStateInfo–状态信息结构体,详见IvyDevState_t。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
2.8.获取P2P信息
IVY_CODE IvyGetUserP2PInfo(IvyP2pInfo_t *p2pInfo);
类型:IVY_CODE
说明:从SDK配置文件中获取P2P信息(UID等)
参数:
p2pInfo–P2P信息结构体,详见IvyP2pInfo_t。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
2.9.获取P2P连接状态
IVY_CODE IvyGetP2PConnectStatus(IvyP2PStatus_t *p2pStatus);
类型:IVY_CODE
说明:获取P2P连接状态(是否连接上服务器)
参数:
p2pStatus–P2P连接状态信息,详见IvyP2PStatus_t。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
2.10.硬件复位
IVY_CODE IvyKeyReset(void);
类型:IVY_CODE
说明:复位sdk,按键恢复出厂设置时使用
参数:
无。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
2.11.云存储初始化
IVY_CODE IvyRtmpInit(IvyCloudEnv cloudEnv);
类型:IVY_CODE
说明:云存储初始化rtmp
参数:
cloudEnv–云存储信息初始化信息结构体,详见cloudEnv。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
2.12.开始云存储
IVY_CODE IvyAlarmCloudRecordStart(IvyRtmpAlarmMsg_t alarmMsg);
类型:IVY_CODE
说明:告警触发开始云存储
参数:
alarmMsg–告警信息结构体,详见IvyRtmpAlarmMsg_t。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
2.13.停止云存储
IVY_CODE IvyAlarmCloudRecordStop(IvyRtmpAlarmMsg_t alarmMsg);
类型:IVY_CODE
说明:停止云存储
参数:
alarmMsg–告警信息结构体,详见IvyRtmpAlarmMsg_t。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
2.14.解析声波配网WIFI信息
IVY_CODE IvyWaveLinkDecodeWifiInfo(char *srcValue, char *desValue);
类型:IVY_CODE
说明:解密声波配网wifi信息
参数:
srcValue–原始数据
desValue–解析后数据
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
2.15.修改用户信息
IVY_CODE IvyChangeUserInfo(IvyUserAccountInfo_t oldAccountInfo, IvyUserAccountInfo_t newAccountInfo);
类型:IVY_CODE
说明:修改用户信息,用于本地用户信息和sdk同步,没有则不使用
参数:
oldAccountInfo–当前用户信息,详见IvyUserAccountInfo_t
newAccountInfo–新修改的用户信息,详见IvyUserAccountInfo_t
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
2.16.获取出厂用户信息
IVY_CODE IvyGetFactoryUsrAccount(char *usrName, char *password);
类型:IVY_CODE
说明:获取出厂用户账号信息,用于同步第三方自己管理的用户信息,如NVR第三方登录
参数:
usrName–用户名
password–密码
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.用户实现接口定义
3.1.系统管理
3.1.1.设备信息
IVY_CODE IvyGetDevInfo(uint8_t channel, IvyDevInfo_t *devInfo);
类型:IVY_CODE
说明:获取设备信息。
参数:
devInfo–设备信息结构体,详细参见IvyDevInfo_t。
Channel–通道号,225表示主设备。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.1.2.设备能力集
IVY_CODE IvyGetDevAbilities(uint8_t channel, int* val);
类型:IVY_CODE
说明:获取设备能力集。
参数:
val–设备能力集指针,按位表示,详细参见代码注释。
Channel–通道号,225表示主设备。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.1.3.日志信息
IVY_CODE IvyGetLogInfo(IvyLogInfo_t *logInfo, int32_t buffLen);
类型:IVY_CODE
说明:获取日志信息,暂未实现。
参数:
logInfo–获取日志信息的存储指针。
buffLen–缓冲区长度。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.1.4.用户管理
IVY_CODE IvyGetUserList(IvyUserAccountInfo_t *userAccountInfo, int32_t buffLen);
类型:IVY_CODE
说明:获取用户列表信息,暂不使用。
参数:
userAccountInfo–获取账号信息的存储指针
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
IVY_CODE IvyAddAccount(IvyUserAccountInfo_t userAccountInfo);
类型:IVY_CODE
说明:添加账户,暂不使用。
参数:
userAccountInfo–账号信息
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
IVY_CODE IvyDelAccount(IvyUserAccountInfo_t userAccountInfo);
类型:IVY_CODE
说明:删除账户,暂不使用。
参数:
userAccountInfo–账号信息
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
IVY_CODE IvyChangeAccount(IvyUserAccountInfo_t oldAccountInfo,
IvyUserAccountInfo_t newAccountInfo);
类型:IVY_CODE
说明:修改账户信息,暂不使用
参数:
oldAccountInfo–修改前的账号信息
newAccountInfo–修改后的账号信息
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
IVY_CODE IvyAuthenticate(IvyUserAccountInfo_t userAccountInfo);
类型:IVY_CODE
说明:账户信息鉴权,暂不使用
参数:
userAccountInfo–登录的用户,账号信息认证
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
IVY_CODE IvyUsrLogIn(void);
类型:IVY_CODE
说明:用户登录,上报必要的状态信息,如NVR时上报设备列表
参数:无
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
IVY_CODE IvyUsrLogout(void);
类型:IVY_CODE
说明:用户登出,停止必要的用户操作
参数:无
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.1.5.系统升级
SDK下载升级包,用户实现升级
IVY_CODE IvyOnlineUpgradeStart();
类型:IVY_CODE
说明:开始在线升级,需释放部分内存来临时存储固件。
参数:空。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
IVY_CODE IvyUpgrade(uint32_t bitCh, const uint8_t *fileName);
类型:IVY_CODE
说明:固件下载完成,开始升级。
参数:
bitCh–按位表示,bitCh 0:主设备 ,bit1:ch0, bit2:ch1 …
fileName–固件名,包含路径
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
IVY_CODE IvySetOnlineUpgradeUrl(IvyFirmwareDownloadInfo_t downloadInfo);
类型:IVY_CODE
说明:设置在线升级固件下载链接,适用第三方自行下载升级的情况。
参数:
downloadInfo–下载信息
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.1.6.系统维护
IVY_CODE IvyRebootSystem();
类型:IVY_CODE
说明:重启设备。
参数:空。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
IVY_CODE IvyResetSystem();
类型:IVY_CODE
说明:设备恢复出厂设置。
参数:空。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
IVY_CODE IvySetAutoRebootInfo(IvyAutoRebootInfo_t autoRebootInfo);
类型:IVY_CODE
说明:配置自动重启设备参数,暂不使用。
参数:空。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.1.7.烧录MAC地址
IVY_CODE IvySetMacAddr(IvyMacAddrInfo_t macAddr);
类型:IVY_CODE
说明:烧录MAC地址信息,生产时使用。
参数:
macAddr–mac地址信息结构体变量
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.2.基本设置
3.2.1.系统时间
IVY_CODE IvySetSystemTime(IvySystemTimeInfo_t systemTimeInfo);
类型:IVY_CODE
说明:设置系统时间
参数:
systemTimeInfo–时间信息结构体,详见IvySystemTimeInfo_t
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.2.2.网络设置
IVY_CODE IvySetNetParam(uint8_t channel, IvyNetParam_t netParam);
类型:IVY_CODE
说明:设置网络参数
参数:
netParam–网络参数结构体,详见IvyNetParam_t
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.2.3.WIFI信息设置
IVY_CODE IvySetWifiParam(uint8_t channel, IvyWifiParam_t wifiParam);
类型:IVY_CODE
说明:设置WIFI信息
参数:
wifiParam–wifi信息结构体,详见IvyWifiParam_t
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.2.4.获取WIFI列表
IVY_CODE IvyGetWifiAPList(uint8_t channel, IvyWifiListGetMsg_t wifiListGetMsg, IvyWifiListResultMsg_t* pWifiListInfo);
类型:IVY_CODE
说明:获取wifi列表,搜索后的结果
参数:
wifiListGetMsg–获取wifi列表起始点及个数,详见IvyWifiListGetMsg_t
pWifiListInfo–wifi列表信息指针,详见IvyWifiListResultMsg_t
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.2.5.设置AP信息
IVY_CODE IvySetWifiSoftApInfo(uint8_t channel, IvySoftApInfo_t apInfo);
类型:IVY_CODE
说明:wifi的AP信息设置
参数:
apInfo–ap信息结构体,详见IvySoftApInfo_t
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.2.6.信道选择
IVY_CODE IvySetWifiChannel(int32_t autoMode, int32_t channel);
类型:IVY_CODE
说明:设置网络参数,暂未实现
参数:
AutoMode–是否自动选择通道
channel–通道号
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.2.7.视频编码参数设置
IVY_CODE IvySetVideoParam(uint8_t channel, IvyVideoParam_t pVideoInfo);
类型:IVY_CODE
说明:设置视频编码参数
参数:
pVideoInfo–编码参数结构体,详见IvyVideoParam_t
channel–指定要设置的IPC的通道id,NVR使用
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.2.8.视频码流模式设置
IVY_CODE IvySetVideoStreamMode(uint8_t channel, IvyVideoStreamMode_t streamMode);
类型:IVY_CODE
说明:设置视频码流模式(高清、标清、流畅):
streamMode–码流模式,详见IvyVideoStreamMode_t
channel–指定要设置的IPC的通道id,NVR使用
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.2.9.图像参数设置
IVY_CODE IvySetImageParam(uint8_t channel, IvyImageParam_t pImageInfo);
类型:IVY_CODE
说明:设置图像参数
参数:
pImageInfo–图像参数结构体,详见IvyImageParam_t
channel–指定要设置的IPC的通道id,NVR使用
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.2.10.视频镜像翻转模式设置
IVY_CODE IvySetVideoMirrorFlip(uint8_t channel, IvyMirrorFlip_t pMirrorFlipInfo);
类型:IVY_CODE
说明:设置镜像、翻转
参数:
pMirrorFlipInfo–视频模式构体,详见IvyMirrorFlip_t
channel–NVR使用
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.2.11.白天夜视切换模式设置(开关红外灯)
IVY_CODE IvySetDayNightMode(uint8_t channel, IvyDayNight_t dayNight);
类型:IVY_CODE
说明:设置红外灯模式、夜视切换
参数:
dayNight–红外灯开关信息,详见IvyDayNight_t
channel–NVR使用
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.2.12.夜视计划配置
IVY_CODE IvySetNightVisonScheduleConfig(uint8_t channel, IvyNightVisionSchedule_t nightVisionConfig);
类型:IVY_CODE
说明:设置夜视计划配置参数:
nightVisionConfig–也是计划配置信息,详见IvyNightVisionSchedule_t
channel–NVR使用
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.2.13.环境模式设置模式设置(电源频率等)
IVY_CODE IvySetEnvironmentMode(uint8_t channel, IvyEnvironmentMode_t environmentMode);
类型:IVY_CODE
说明:设置电源频率,室内外模式
environmentMode–环境模式,详见IvyEnvironmentMode_t
channel–NVR使用
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.2.14.OSD信息配置
IVY_CODE IvySetOsdConfig(uint8_t channel, IvyOsdConfig_t osdConfig);
类型:IVY_CODE
说明:设置OSD信息
osdConfig–osd配置,详见IvyOsdConfig_t
channel–NVR使用
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.2.15.音量设置
IVY_CODE IvySetAudioVolume(uint8_t channel, IvyVolume_t volume);
类型:IVY_CODE
说明:设置音量
volume–音量参数,详见IvyVolume_t
channel–NVR使用
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.2.16.设置指示灯状态
IVY_CODE IvySetLedEnableState(uint8_t channel, int isEnable);
类型:IVY_CODE
说明:设置指示灯状态
isEnable–指示灯状态
channel–NVR使用
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.2.17.设置提示音开关状态
IVY_CODE IvySetVoiceEnableState(uint8_t channel, int isEnable);
类型:IVY_CODE
说明:设置提示音状态
isEnable–提示音状态
channel–NVR使用
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.3.报警设置
3.3.1.移动侦测报警
IVY_CODE IvySetMotionAlarmCfg(uint8_t channel, IvyMotionAlarmCfg_t motionAlarmCfg);
类型:IVY_CODE
说明:设置移动侦测报警信息
参数:
motionAlarmCfg–移动侦测配置结构体,详见IvyMotionAlarmCfg_t
channel–NVR使用
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.3.2.设备异常报警开关
IVY_CODE IvySetAlarmExInfo(IvyAlarmEx_t alarmEx);
类型:IVY_CODE
说明:设置设备异常时报警的开关状态,sdk暂未实现。
参数:
alarmEx–设备异常时的报警开关结构体变量,详见IvyAlarmEx_t。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.4.录像存储
3.4.1.录像类型信息设置
IVY_CODE IvySetRecordTypeInfo(uint8_t channel, IvyRecordType_t recordType);
类型:IVY_CODE
说明:设置录像类型,暂未实现
参数:
recordType–录像类型,详见IvyRecordType_t
channel–NVR使用
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.4.2.录像存储设置
IVY_CODE IvySetStorageConfig(IvyStorageInfo_t storageInfo);
类型:IVY_CODE
说明:设置录像存储配置信息,NVR使用
参数:
storageInfo–存储配置信息,详见IvyStorageInfo_t
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.4.3.录像搜索
IVY_CODE IvyGetRecordList(IvyRecordSearchMsg_t recordSearchMsg, IvyRecordListResultInfo_t* pRecordListInfo);
类型:IVY_CODE
说明:获取录像列表,文件过多时分多次获取
参数:
recordSearchMsg–搜索信息,详见IvyRecordSearchMsg_t
pRecordListInfo–录像列表信息,详见IvyRecordListResultInfo_t
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.4.4.录像回放控制
IVY_CODE IvyRecordPlayBackCtrl(IvyPlayBackCtrlMsg_t ctrlMsg);
类型:IVY_CODE
说明:录像回放控制
参数:
ctrlMsg–回放控制结构体变量,详见IvyPlayBackCtrlMsg_t
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.4.5.磁盘信息获取
IVY_CODE IvyGetDiskInfo(IvyDiskInfo_t *diskInfo, int32_t buffLen);
类型:IVY_CODE
说明:获取磁盘信息,NVR使用。
参数:
diskInfo-磁盘信息结构体指针,详见IvyDiskInfo_t
buffLen–缓冲区长度。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.4.6.磁盘格式化
IVY_CODE IvyFormatDisk(int32_t diskIndex);
类型:IVY_CODE
说明:格式化磁盘。
参数:
diskIndex–格式化的磁盘的索引号
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.4.7.获取SD卡信息
IVY_CODE IvyGetSDCardInfo(IvySDCardInfo_t* sdCardInfo);
类型:IVY_CODE
说明:获取sd卡容量信息
参数:
sdCardInfo–sd卡信息结构体变量,详见IvySDCardInfo_t
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.4.8.格式化SD卡
IVY_CODE IvyFormatSDCard(void);
类型:IVY_CODE
说明:格式化sd卡
参数:无
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.5.媒体操作
3.5.1.打开视频
IVY_CODE IvyOpenVideo(uint8_t channel, uint8_t streamType);
类型:IVY_CODE
说明:直播预览打开视频
streamType–码流类型,主、次码流
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.5.2.关闭视频
IVY_CODE IvyCloseVideo(uint8_t channel, uint8_t streamType);
类型:IVY_CODE
说明:直播预览关闭视频
streamType–码流类型,主、次码流
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.5.3.打开音频
IVY_CODE IvyOpenAudio(uint8_t channel, uint8_t streamType);
类型:IVY_CODE
说明:打开音频,打开视频时默认打开
streamType–码流类型,主、次码流
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.5.4.关闭音频
IVY_CODE IvyCloseAudio(uint8_t channel, uint8_t streamType);
类型:IVY_CODE
说明:关闭音频,关闭视频时默认关闭
streamType–码流类型,主、次码流
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.5.5.打开对讲
IVY_CODE IvyOpenTalk(uint8_t channel);
类型:IVY_CODE
说明:打开对讲
channel–IPC通道号
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.5.6.关闭对讲
IVY_CODE IvyCloseTalk(uint8_t channel);
类型:IVY_CODE
说明:关闭对讲
channel–IPC通道号
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.5.7.发送对讲数据
IVY_CODE IvySendTalkData(uint8_t channel, IvyTalkFrame_t * talkFrame);
类型:IVY_CODE
说明:发送对讲数据多IPC,用于NVR
talkFrame–对讲数据
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.5.8.图片抓拍
IVY_CODE IvySnapPicture(uint8_t channel, char *fileName);
类型:IVY_CODE
说明:图片抓拍,用于富媒体推送
fileName–抓拍文件名(包含路径)
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.5.9.请求关键帧
IVY_CODE IvyRequestKeyFrame(uint8_t channel, int streamType);
类型:IVY_CODE
说明:强制生成一个I帧
streamType–码流类型
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.6. 4G相关
3.6.1.获取4G模块信息
IVY_CODE IvyGet4GInfo(Ivy4GInfo_t *p4GInfo);
类型:IVY_CODE
说明:获取4G相关信息
p4GInfo–4G信息结构体变量,详见Ivy4GInfo_t
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.6.2.获取4G模块版本信息
IVY_CODE IvyGet4GVerInfo(Ivy4GVerInfo_t* verInfo);
类型:IVY_CODE
说明:获取4G模块软件版本
verInfo–版本信息结构体变量,详见Ivy4GVerInfo_t
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.7.IPC设备管理
3.7.1.添加IPC(NVR)
IVY_CODE IvyAddIPC(IvyIpcConnectInfo_t ipcConnectInfo);
类型:IVY_CODE
说明:添加IPC。
参数:
ipcConnectInfo–添加的IPC链接信息结构体变量,详见IvyIpcConnectInfo_t。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
3.7.2.删除IPC(NVR)
IVY_CODE IvyDelIPC(int32_t channel);
类型:IVY_CODE
说明:删除IPC。
参数:
channel–删除的IPC所在的通道号。
返回值:
成功–IVY_CODE_SUCESS
失败–其他IVY_CODE,详见错误码定义
4.数据结构定义
4.1.SDK环境变量结构体
typedef struct IvySdkEnvVar{
int8_t devType;
/**< 设备类型1表示ipc, 2表示bpi, 3表示nvr, 4表示基站*/
int8_t storagePath[SDK_STORAGE_PATH_LEN + 1];
/**< IVY NVR SDK内部配置文件存放路径,要求可读写,掉电不丢失 */
int8_t productKey[SDK_PRODUCT_KEY_LEN + 1];
/**< product key */
int8_t uuid[SDK_UUID_LEN + 1];
/**< 指定IVY SDK使用的UUID,如果为空,那么使用配置文件中预先写入的值 */
int8_t authKey[SDK_AUTH_KEY_LEN + 1];
/**< 指定IVY SDK使用的auth_key,如果为空,那么使用配置文件中预先写入的值 */
int8_t devSwVersion[SDK_SW_VER_LEN + 1];
/**< 设备固件版本号 */
int8_t devSerialNum[SDK_SERIAL_NUM_LEN + 1];
/**< 设备唯一硬件标示号码 */
int8_t maxChannels;
/**< 最大支持的通道数 ,NVR使用*/
}IvySdkEnvVar_t;
4.2.IPC链接状态结构体
typedef struct IvyIpcConnectInfo{
int32_t channel; /* 通道ID */
int32_t enable; /* 是否被占用 */
int32_t isOnLine; /* 是否离线线 */
int32_t devType; /* 设备类型*/
int32_t protocols; /* 支持的协议,预留 */
int32_t protocol; /* 协议, 预留 */
int8_t ip[ARRAY_STR_LEN]; /* ip地址 */
int8_t devName[ARRAY_STR_LEN]; /* 设备名称 */
int8_t macAddr[ARRAY_STR_LEN]; /* mac地址 */
int8_t xAddr[ADDR_STR_LEN]; /* 预留 */
int8_t mask[ARRAY_STR_LEN]; /* 预留 */
int8_t gate[ARRAY_STR_LEN]; /* 预留 */
int8_t dns[ARRAY_STR_LEN]; /* 预留 */
int8_t appVer[ARRAY_STR_LEN]; /* 应用固件版本号 */
int8_t sysVer[ARRAY_STR_LEN]; /* 系统固件版本号 */
}IvyIpcConnectInfo_t;
4.3.视频信息结构体
typedef struct IvyVideoHead {
int16_t width;
int16_t height;
int32_t fps; /* frame rate */
int32_t bps; /* bit rate */
} IvyVideoHead_t;
4.4.音频信息结构体
typedef struct IvyAudioHead{
uint32_t sampleRate;
uint32_t bitsPerSample;
} IvyAudioHead_t;
4.5.音视频帧信息结构体
typedef struct IvyFrame{
IvyFrameType_e frameType;
IvyStreamType_e streamType;
IvyCodecType_e encodeType;
int32_t frameNo;
int8_t channel; /* channel, just for NVR */
int32_t dataLen; /* data len */
long long pts;
union {
IvyVideoHead_t video;
IvyAudioHead_t audio;
};
int8_t reserved[3];
int8_t data[0]; /* data addr */
}IvyFrame_t;
4.6.设备信息结构体
typedef struct IvyDevInfo {
IvyDevType_e devType; //设备类型 refer to IvyDevType_e
IvyPlatformType_e PlatformType;
IvySensorType_e sensorType;
IvyWifiType_e wifiType;
IvyLanguageType_e language;
int8_t productName[32]; //产品型号
int8_t devName[64]; //设备名称
int8_t firmwareVersion[64]; //固件版本
int8_t hardwareVersion[64]; //硬件版本
int8_t serialNo[32];
int8_t uid[64];
int8_t mac[32];
int8_t manufacturerKey[64];
int32_t maxCh;
int32_t status; //bit0:isReset
}IvyDevInfo_t;
4.7.用户P2P信息结构体
typedef struct IvyP2pInfo {
int8_t isEnable;
int32_t type;
int8_t ExtUid[8];
int8_t Uuid[64];
int8_t pwd[64];
int32_t port;
}IvyP2pInfo_t;
4.8.P2P连接状态信息
typedef struct IvyP2PStatus {
IvyP2PConnectStatus_e connectStatus;
} IvyP2PStatus_t;
4.9.磁盘分区信息结构体
typedef struct IvyDiskPartition {
IvyDiskFileSys_e fsType;
int8_t label[64];
int8_t mntDir[MNT_DIR_LEN];
}IvyDiskPartition_t;
4.10.磁盘信息结构体
typedef struct tagDiskInfo {
IvyDiskBusType_e busType;
int32_t busId;
IvyDiskType_e diskType;
int32_t diskIndex;
bool isFormated;
bool canFormatToSTFS;
bool bBusy;
int8_t name[32];
uint32_t freeSpace;//KB
uint32_t totalSpace;//KB
IvyDiskPartition_t partitions[MAX_PARTITION_NUM];
}IvyDiskInfo_t;
4.11.存储配置信息结构体
typedef struct IvyStorageInfo {
int32_t channelNum; //通道总数
int32_t diskNum; //磁盘的个数设置时无效
bool bCycleRec; //是否循环录像
int32_t bPrepare; //是否预录像
IvySmartRecMode_e srMode;
}IvyStorageInfo_t;
4.12.系统时间信息结构体
typedef struct IvySystemTimeInfo {
int32_t year;
int32_t month;
int32_t day;
int32_t hour;
int32_t min;
int32_t sec;
int32_t timeZone;
int32_t timeSource; //0=NTP 1=Manual
int8_t ntpServer[64]; // 时间服务器
int32_t dateFormat; // 0=YYYY-MM-DD 1=DD/MM/YYYY 2=MM/DD/YYYY
int32_t timeFormat; // 0=24 1=12
int32_t isDst;
int32_t Dst;
int32_t hasStartDST;
int32_t dstStartMonth;//[1,12]
int32_t dstStartWhichOne;//[1-5]
int32_t dstStartWhichWeek;//[1-7]
int32_t dstStartHour;//[0,23]
int32_t dstEndMonth;
int32_t dstEndWhichOne;
int32_t dstEndWhichWeek;
int32_t dstEndHour;
}IvySystemTimeInfo_t;
4.13.网络参数结构体
typedef struct IvyNetParam {
bool isDHCP;
uint8_t netType;//0:Ethernet 1:wifi
int8_t ip[64];
int8_t mask[64];
int8_t gate[64];
int8_t dns1[64];
int8_t dns2[64];
}IvyNetParam_t;
4.14.WIFI信息结构体
typedef struct IvyWifiParam {
int8_t ssid[32]; // WiFi ssid
int8_t password[64]; // if exist, WiFi password
uint8_t mode; // refer to IvyApMode_e
uint8_t encType; // refer to IvyEncryptedType_e
uint8_t authMode; // refer to IvyAuthMode_e 0=Open 1=SHARED 2=WEPAUTO (For wep mode)
uint8_t reserved[10];
} IvyWifiParam_t;
4.15.WIFI列表起始信息结构体
typedef struct IvyWifiListGetMsg {
int startNo;
int cnt;
} IvyWifiListGetMsg_t;
4.16.WIFI列表信息结构体
typedef struct tagWifiListResultMsg {
int totalCnt;
int curCnt;
IvyWifiAPInfo_t ap[MAX_AP_COUNT];
} IvyWifiListResultMsg_t;
4.17.AP信息结构体
typedef struct IvySoftApInfo {
char ssid[32];
int authMode; // 0=OPEN 1=WPAPSK 2=WPA2PSK, default:2
char psk[64]; // WPA/WPA2's PSK
} IvySoftApInfo_t;
4.18.视频编码参数结构体
typedef struct IvyVideoStreamParam {
IvyCodecType_e codecType;
IvyStreamType_e streamType;
IvyResolution_e resolution;
uint32_t bitRate;
uint32_t frameRate;
uint32_t GOP;
uint8_t rateControlMode;
uint32_t lbrRatio;
uint8_t reserve;
}IvyVideoParam_t;
4.19.视频码流模式结构体
typedef struct IvyVideoStreamMode {
IvyStreamMode_e streamMode;
uint8_t reserve;
} IvyVideoStreamMode_t;
4.20.图像参数结构体
typedef struct IvyImageParam {
uint32_t brightness; /* 亮度 */
uint32_t contrast; /* 对比度 */
uint32_t hue; /* 色调 */
uint32_t saturation; /* 饱和度 */
uint32_t sharpness; /* 敏锐度 */
uint32_t denoiseLevel; /* 降噪等级 */
}IvyImageParam_t;
4.21.镜像翻转模式结构体
typedef struct IvyMirrorFlip {
uint8_t mode; //IvyMirrorFlip_e
uint8_t reserved[3];
}IvyMirrorFlip_t;
4.22.录像类型结构体
typedef struct IvyRecordType{
int16_t recordType; // bit0:schedule, bit1:manual, bit2: motion detect, bit3:sound, bit4: io, bit5:tempeture, bit6:humidity, bit7:human
uint8_t reserved[3];
}IvyRecordType_t;
4.23.设备异常报警开关设置
typedef struct IvyAlarmEx {
int32_t hddLost;
int32_t hddFull;
int32_t hddErr;
int32_t videoLoss;
int32_t networkErr;
}IvyAlarmEx_t;
4.24.移动侦测配置结构体
typedef struct IvyMotionAlarmCfg {
int8_t isEnable;
int8_t linkage; // RECORD | SNAP | MAIL | RING | Dropbox | alarmout
uint32_t snapInterval;
uint32_t triggerInterval; // seconds
uint32_t isMovAlarmEnable;
uint32_t isPirAlarmEnable;
long long schedule[7];//表示一周7天;每个元素是一个longlong类型数字,bit0-bit47表示一天,每个bit表示半个小时,bit0就是0:00-0:30,以此类推
IvyArea_t area[MAX_MD_ROI_N];
}IvyMotionAlarmCfg_t;
typedef struct IvyArea {
int32_t x;
int32_t y;
int32_t width;
int32_t height;
int8_t sensitivity;//0:low,1:medium,2:High ;default:1
int8_t isEnable;
} IvyArea_t;
4.25.白天夜视,红外灯模式
typedef struct IvyDayNight {
uint32_t mode; // 0-auto, 1-manul ,2-schedule
uint32_t onoff; // 0-off, 1-on, when get not use, only be used to manul
} IvyDayNight_t;
4.26.夜视计划配置信息结构体
typedef struct IvyNightVisionScheduleConfig {
int startTimeHour;
int startTimeMin;
int endTimeHour;
int endTimeMin;
} IvyNightVisionScheduleConfig_t;
typedef struct IvyScheduleNightVision{
IvyNightVisionScheduleConfig_t NightVisionscheduleConfig[3];
} IvyNightVisionSchedule_t;
4.27.推送告警消息结构体
typedef struct IvyAlarmMsg{
uint8_t channel;
IvyAlarmMsgType_e alarmType;
char mac[16];
char name[128];//devName
unsigned int cfgAlarmType;
} IvyAlarmMsg_t;
4.28.设备状态信息结构体
typedef struct IvyDevState {
uint8_t channel;
IvyMirrorFlip_t mirrorFlip;
IvyDayNight_t dayNight;
IvyVideoStreamMode_t streamMode;
} IvyDevState_t;
4.29.P2P信息结构体
typedef struct IvyP2pInfo {
int8_t isEnable;//0:disable 1:enable
int8_t uid[32];
} IvyP2pInfo_t;
4.30.云存储初始化信息结构体
typedef struct CloudEnv {
int8_t channel; /* IPC channel */
int8_t streamType; /* 0:main 1:sub */
int8_t configPath[128];
STATUS_NOTIFY_CB status_notify_cb; /* */
} IvyCloudEnv;
4.31.云存储告警信息结构体
typedef struct IvyRtmpAlarmMsg{
int8_t alarmType;
int8_t audioEnable;
union {
int64_t startVFramePts;
int64_t endVFramePts;
}Pts;
} IvyRtmpAlarmMsg_t;
4.32.环境模式结构体
typedef struct IvyEnvironmentMode{
uint8_t mode; // refer to IvyEnvironmentMode_e
uint8_t reserved[3];
} IvyEnvironmentMode_t;
4.33.OSD配置结构体
typedef struct tagIvyOsdConfig {
int osdType;//bit0:time, bit1:devName, bit2:TempAndHumid, bit3:OSDMask
int dispPos;//0=topLeft 1=bottomLeft 2=topRight 3=bottomRight
} IvyOsdConfig_t;
4.34.音量信息结构体
typedef struct IvyVolume {
uint8_t value;
} IvyVolume_t;
4.35.用户信息结构体
typedef struct IvyUserAccountInfo {
int8_t userName[64];
int8_t password[64];
} IvyUserAccountInfo_t;
4.36.4G信息结构体
typedef struct Ivy4GInfo {
int simState; //0:not insert 1:inserted
int simType; //0:INVALID 1:TELECOM 2:CMCC 3:UNICOM
char phoneNumber[16];
char IMEINumber[24];
char ICCIDNumber[24];
char IMSINumber[24];
int Operators;
int rssi; //0~31
int signalLevel; //0~5
int ratType; //0:INVALID, 1:1G, 2:2G, 3:3G, 4:4G
} Ivy4GInfo_t;
4.37.4G版本信息结构体
typedef struct Ivy4GVerInfo{
char softwareVer[12];
} Ivy4GVerInfo_t;
4.38.录像搜索信息结构体
typedef struct IvyRecordSearchMsg {
long long sTime;//查询起始时间
long long eTime;//查询结束时间
int chn;
int type;//IvyRecordType_e bit0:MANUAL bit1:SCHEDULE bit2:MDALARM bit3:SDALARM bit4:IOALARM bit5:TDALARM bit6:HDALARM bit7:HMDALARM bit8:KEYALARM
uint32_t startNo;//查询起始序号
uint32_t cnt; //每次查询个数
} IvyRecordSearchMsg_t;
4.39.录像列表信息结构体
typedef struct IvyRecordListResultInfo {
uint32_t totalCnt; //录像文件总数
uint32_t curCnt; //当前查询到第几个录像文件
IvyRecordIndexInfo_t list[MAX_RECORD_CNT];
} IvyRecordListResultInfo_t;
typedef struct IvyRecordIndexInfo {
char channel;
long long sTime;
long long eTime;
uint32_t type;//IvyRecordType_e
} IvyRecordIndexInfo_t;
4.40.录像回放控制结构体
typedef struct IvyPlayBackCtrlMsg{
long long sTime;
long long eTime;
long long seekTime;
int cmd; //IvyPlayControl_e
int chn;
int type; //record type
} IvyPlayBackCtrlMsg_t;
4.41.SD卡信息结构体
typedef structIvySDCardState {
char isExist;
long long freeSpace;
long long totalSpace;
} IvySDCardInfo_t;
5.枚举定义
typedef enum
{
IVY_AUDIO_BITWIDTH_4 = 4,
IVY_AUDIO_BITWIDTH_8 = 8,
IVY_AUDIO_BITWIDTH_16 = 16,
IVY_AUDIO_BITWIDTH_24 = 24,
IVY_AUDIO_BITWIDTH_NUM,
} IvyAudioBitWidth_e;
typedef enum
{
IVY_AUDIO_SOUND_MODE_MONO = 0,
IVY_AUDIO_SOUND_MODE_STEREO,
IVY_AUDIO_SOUND_MODE_NUM
} IvyAudioSoundMode_e;
typedef enum
{
IVY_AUDIO_SAMPLE_RATE_8000 = 8000,
IVY_AUDIO_SAMPLE_RATE_12000 = 12000,
IVY_AUDIO_SAMPLE_RATE_11025 = 11025,
IVY_AUDIO_SAMPLE_RATE_16000 = 16000,
IVY_AUDIO_SAMPLE_RATE_22050 = 22050,
IVY_AUDIO_SAMPLE_RATE_24000 = 24000,
IVY_AUDIO_SAMPLE_RATE_32000 = 32000,
IVY_AUDIO_SAMPLE_RATE_44100 = 44100,
IVY_AUDIO_SAMPLE_RATE_48000 = 48000,
IVY_AUDIO_SAMPLE_RATE_NUM,
} IvyAudioSampleRate_e;
typedef enum
{
LANGUAGE_CN = 0,
LANGUAGE_CNEN,
LANGUAGE_FOREIGN,
LANGUAGE_BUTT
} IvyLanguageType_e;
6.错误码定义
typedef int IVY_CODE; // 执行结果返回值
#define INCREMENT(x,n) (x-n) // 增量
#define IVY_CODE_VALUE_START 0 // 通用返回值开始
#define IVY_CODE_SUCCESS INCREMENT(IVY_CODE_VALUE_START,0) // 执行成功
#define IVY_CODE_COM_ERR INCREMENT(IVY_CODE_VALUE_START,1) // 通用错误
#define IVY_CODE_INVALID_PARM INCREMENT(IVY_CODE_VALUE_START,2) // 无效的入参
#define IVY_CODE_CHANNEL_OVERSTEP INCREMENT(IVY_CODE_VALUE_START,3) //超过支持的最大通道数
#define IVY_CODE_FORMAT_UNSUPPORT INCREMENT(IVY_CODE_VALUE_START,15) //正在录像,不支持格式化