in sample_app/onvif_camera_mock/artifacts/onvif_srvd/src/ServiceDevice.cpp [317:369]
int DeviceBindingService::GetCapabilities(_tds__GetCapabilities *tds__GetCapabilities, _tds__GetCapabilitiesResponse &tds__GetCapabilitiesResponse)
{
DEBUG_MSG("Device: %s\n", __FUNCTION__);
ServiceContext* ctx = (ServiceContext*)this->soap->user;
std::string XAddr = ctx->getXAddr(this->soap);
tds__GetCapabilitiesResponse.Capabilities = soap_new_tt__Capabilities(this->soap);
std::vector<tt__CapabilityCategory>& categories(tds__GetCapabilities->Category);
if(categories.empty())
{
categories.push_back(tt__CapabilityCategory__All);
}
for(tt__CapabilityCategory category : categories)
{
if(!tds__GetCapabilitiesResponse.Capabilities->Device && ( (category == tt__CapabilityCategory__All) || (category == tt__CapabilityCategory__Device) ) )
{
tds__GetCapabilitiesResponse.Capabilities->Device = soap_new_tt__DeviceCapabilities(this->soap);
tds__GetCapabilitiesResponse.Capabilities->Device->XAddr = XAddr;
tds__GetCapabilitiesResponse.Capabilities->Device->System = soap_new_tt__SystemCapabilities(this->soap);
tds__GetCapabilitiesResponse.Capabilities->Device->System->SupportedVersions.push_back(soap_new_req_tt__OnvifVersion(this->soap, 2, 0));
tds__GetCapabilitiesResponse.Capabilities->Device->Network = soap_new_tt__NetworkCapabilities(this->soap);
tds__GetCapabilitiesResponse.Capabilities->Device->Security = soap_new_tt__SecurityCapabilities(this->soap);
tds__GetCapabilitiesResponse.Capabilities->Device->IO = soap_new_tt__IOCapabilities(this->soap);
}
if(!tds__GetCapabilitiesResponse.Capabilities->Media && ( (category == tt__CapabilityCategory__All) || (category == tt__CapabilityCategory__Media) ) )
{
tds__GetCapabilitiesResponse.Capabilities->Media = soap_new_tt__MediaCapabilities(this->soap);
tds__GetCapabilitiesResponse.Capabilities->Media->XAddr = XAddr;
tds__GetCapabilitiesResponse.Capabilities->Media->StreamingCapabilities = soap_new_tt__RealTimeStreamingCapabilities(this->soap);
}
if (ctx->get_ptz_node()->enable) {
if(!tds__GetCapabilitiesResponse.Capabilities->PTZ && ( (category == tt__CapabilityCategory__All) || (category == tt__CapabilityCategory__PTZ) ) )
{
tds__GetCapabilitiesResponse.Capabilities->PTZ = soap_new_tt__PTZCapabilities(this->soap);
tds__GetCapabilitiesResponse.Capabilities->PTZ->XAddr = XAddr;
}
}
}
return SOAP_OK;
}