中文简体    English


1.SDK简介

IVY SDK是基于爱为私有网络通信协议开发的,为了第三方IPC/NVR设备厂商能够快速接入到IVY IOT系统而设计,主要运行于嵌入式linux平台上。为用户提供APP交互、云存储、P2P传输等功能。
IVY SDK提供给用户的接口分为两类,一类用于用户主动调用来操作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) //正在录像,不支持格式化
文档更新时间: 2020-06-30 19:09   作者:admin