资源
在这篇文章中,我们使用到了以下资源
onvif规范文件
例程
ONVIF Device(IP camera) Service server
onvif规范的分析
上图是网络服务的开发流程,一般情况下我们会在onvif规范资源那里下载相应的wsdl文件,使用gsoap对其编译,得到对应的cpp文件,然后利用这些源文件进行接口开发,对于各个接口,其参考文档在wsdl文件对应的Documents下面下载。
实例
例如我们要实现Core specification部分内容,则需要下载该部分的wsdl,xsd文件,通过gsoap2进行编译得到cpp文件
其中 soapDeviceBindingService.h 里面的类定义了要实现的方法
其方法的详细说明可以查阅对应的规范文档 ONVIF-Core-Specification.pdf
例如,对于GetServiceCapabilities这个功能
文档里面有充分的描述:
8.1.2.3 GetServiceCapabilities
This command returns the capabilities of the device service. The service shall implement this method if the
device supports the GetServices method.
。。。。。。
对应的声明代码在 soapDeviceBindingService.h 中
/// Web service operation 'GetServiceCapabilities' implementation, should return SOAP_OK or error code
virtual int GetServiceCapabilities(_tds__GetServiceCapabilities *tds__GetServiceCapabilities, _tds__GetServiceCapabilitiesResponse &tds__GetServiceCapabilitiesResponse) SOAP_PURE_VIRTUAL;
//
对应的实现则在例程的项目代码ServiceDevice.cpp中
int DeviceBindingService::GetServiceCapabilities(_tds__GetServiceCapabilities *tds__GetServiceCapabilities, _tds__GetServiceCapabilitiesResponse &tds__GetServiceCapabilitiesResponse)
{
UNUSED(tds__GetServiceCapabilities);
DEBUG_MSG("Device: %s\n", __FUNCTION__);
ServiceContext* ctx = (ServiceContext*)this->soap->user;
tds__GetServiceCapabilitiesResponse.Capabilities = ctx->getDeviceServiceCapabilities(this->soap);
return SOAP_OK;
}
结尾
根据规范的文档,接口的源代码,我们就可以轻松查到各个方法的详细信息,方便日常的开发。