void onvif_set_UpgradeSystemFirmware_request(struct soap* soap, struct _tds__UpgradeSystemFirmware * req){ unsigned char* data; size_t size = 0; printf("enter %s\n", __FUNCTION__); memset(req, 0, sizeof(*req)); CHECK_FIELD(req->Firmware); data = load_file_data("1.bin", &size); if (data == NULL) { printf("empty file\n"); return; } printf("file size:%d\n", size); soap_set_field_string(soap, &req->Firmware->xmime__contentType, "binary"); req->Firmware->xop__Include.__size = min(64*1024,size); req->Firmware->xop__Include.__ptr = (unsigned char*) data; soap_set_field_string(soap, &req->Firmware->xop__Include.id, "id"); soap_set_field_string(soap, &req->Firmware->xop__Include.options, "option"); soap_set_field_string(soap, &req->Firmware->xop__Include.type, "text/html"); free(data); }
/// Web service operation 'Probe' (returns error code or SOAP_OK) int OnvifRemoteDiscoveryBindingService::Probe(struct wsdd__ProbeType tdn__Probe, struct wsdd__ProbeMatchesType &tdn__ProbeResponse) { char *pEndpointAddress = NULL, *pTypes = NULL, *pItem = NULL, *pXAddrs = NULL, *pMatchBy = NULL, *pAction = NULL; onvif_db(("Entered: %s:%u.\n", __FUNCTION__, __LINE__)); #if WSDISCOVERY_SPEC_VER == WSDISCOVERY_SPEC_200901 set_field_string(&pAction, "http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/ProbeMatches"); set_field_string(&pMatchBy, "http://docs.oasis-open.org/ws-dd/ns/discovery/2009/01/rfc3986"); #else set_field_string(&pAction, "http://schemas.xmlsoap.org/ws/2005/04/discovery/ProbeMatches"); set_field_string(&pMatchBy, "http://schemas.xmlsoap.org/ws/2005/04/discovery/rfc3986"); #endif pTypes = nativeGetTypes(); pItem = nativeGetScopesItem(); pXAddrs = nativeGetXAddrs(ONVIF_ETH_INF); pEndpointAddress = nativeGetEndpointAddress(ONVIF_ETH_INF); tdn__ProbeResponse.__sizeProbeMatch = 1; tdn__ProbeResponse.ProbeMatch = (struct wsdd__ProbeMatchType *) soap_malloc(this, sizeof(struct wsdd__ProbeMatchType)); soap_default_wsdd__ProbeMatchType(this, tdn__ProbeResponse.ProbeMatch); soap_set_field_string(this, &tdn__ProbeResponse.ProbeMatch->wsa__EndpointReference.Address, pEndpointAddress); soap_set_field_string(this, &tdn__ProbeResponse.ProbeMatch->Types, pTypes); tdn__ProbeResponse.ProbeMatch->Scopes = (struct wsdd__ScopesType *)soap_malloc(this, sizeof(struct wsdd__ScopesType)); soap_default_wsdd__ScopesType(this, tdn__ProbeResponse.ProbeMatch->Scopes); soap_set_field_string(this, &tdn__ProbeResponse.ProbeMatch->Scopes->__item, pItem); soap_set_field_string(this, &tdn__ProbeResponse.ProbeMatch->Scopes->MatchBy, pMatchBy); soap_set_field_string(this, &tdn__ProbeResponse.ProbeMatch->XAddrs, pXAddrs); tdn__ProbeResponse.ProbeMatch->MetadataVersion = 1; free(pAction); free(pMatchBy); free(pEndpointAddress); free(pTypes); free(pItem); free(pXAddrs); return SOAP_OK; }