void RegisterResourceEventCallBack(ResourceEventCallback cb)
{
- g_cbForResEvent = cb;
+ g_cbForResEvent = cb;
}
void GetTargetNetworkInfoFromProvResource(char *name, char *pass)
{
- if (name != NULL && pass != NULL)
- {
- sprintf(name, "%s", g_prov.tnn);
- sprintf(pass, "%s", g_prov.cd);
- }
+ if (name != NULL && pass != NULL)
+ {
+ sprintf(name, "%s", g_prov.tnn);
+ sprintf(pass, "%s", g_prov.cd);
+ }
}
OCStackResult CreateProvisioningResource()
{
- g_prov.ps = 1; // need to provisioning
- g_prov.tnt = ES_WIFI;
- sprintf(g_prov.tnn, "Unknown");
- sprintf(g_prov.cd, "Unknown");
+ g_prov.ps = 1; // need to provisioning
+ g_prov.tnt = ES_WIFI;
+ sprintf(g_prov.tnn, "Unknown");
+ sprintf(g_prov.cd, "Unknown");
- OCStackResult res = OCCreateResource(&g_prov.handle, "oic.prov", OC_RSRVD_INTERFACE_DEFAULT,
- OC_RSRVD_ES_URI_PROV, OCEntityHandlerCb,NULL, OC_DISCOVERABLE | OC_OBSERVABLE);
+ OCStackResult res = OCCreateResource(&g_prov.handle, "oic.prov", OC_RSRVD_INTERFACE_DEFAULT,
+ OC_RSRVD_ES_URI_PROV, OCEntityHandlerCb,NULL, OC_DISCOVERABLE | OC_OBSERVABLE);
- OC_LOG_V(INFO, TAG, "Created Prov resource with result: %s", getResult(res));
+ OC_LOG_V(INFO, TAG, "Created Prov resource with result: %s", getResult(res));
- return res;
+ return res;
}
OCStackResult CreateNetworkResource()
{
- NetworkInfo netInfo;
+ NetworkInfo netInfo;
- if (getCurrentNetworkInfo(ES_WIFI, &netInfo) != 0)
- {
- return OC_STACK_ERROR;
- }
+ if (getCurrentNetworkInfo(ES_WIFI, &netInfo) != 0)
+ {
+ return OC_STACK_ERROR;
+ }
- if (netInfo.type != ES_WIFI)
- {
- return OC_STACK_ERROR;
- }
+ if (netInfo.type != ES_WIFI)
+ {
+ return OC_STACK_ERROR;
+ }
- g_net.cnt = (int) netInfo.type;
- g_net.ant[0] = (int) ES_WIFI;
- sprintf(g_net.ipaddr, "%d.%d.%d.%d", netInfo.ipaddr[0], netInfo.ipaddr[1], netInfo.ipaddr[2],
- netInfo.ipaddr[3]);
- sprintf(g_net.cnn, "%s", netInfo.ssid);
+ g_net.cnt = (int) netInfo.type;
+ g_net.ant[0] = (int) ES_WIFI;
+ sprintf(g_net.ipaddr, "%d.%d.%d.%d", netInfo.ipaddr[0], netInfo.ipaddr[1], netInfo.ipaddr[2],
+ netInfo.ipaddr[3]);
+ sprintf(g_net.cnn, "%s", netInfo.ssid);
- OC_LOG_V(INFO, TAG, "SSID: %s", g_net.cnn);
- OC_LOG_V(INFO, TAG, "IP Address: %s", g_net.ipaddr);
+ OC_LOG_V(INFO, TAG, "SSID: %s", g_net.cnn);
+ OC_LOG_V(INFO, TAG, "IP Address: %s", g_net.ipaddr);
- OCStackResult res = OCCreateResource(&g_net.handle, "oic.net", OC_RSRVD_INTERFACE_DEFAULT,
- OC_RSRVD_ES_URI_NET, OCEntityHandlerCb,NULL, OC_DISCOVERABLE | OC_OBSERVABLE);
- OC_LOG_V(INFO, TAG, "Created Net resource with result: %s", getResult(res));
+ OCStackResult res = OCCreateResource(&g_net.handle, "oic.net", OC_RSRVD_INTERFACE_DEFAULT,
+ OC_RSRVD_ES_URI_NET, OCEntityHandlerCb,NULL, OC_DISCOVERABLE | OC_OBSERVABLE);
+ OC_LOG_V(INFO, TAG, "Created Net resource with result: %s", getResult(res));
- return res;
+ return res;
}
OCEntityHandlerResult ProcessGetRequest(OCEntityHandlerRequest *ehRequest, OCRepPayload **payload)
{
- OCEntityHandlerResult ehResult = OC_EH_ERROR;
- OCRepPayload *getResp = constructResponse(ehRequest);
- if(!getResp)
- {
- OC_LOG(ERROR, TAG, "constructResponse failed");
- return OC_EH_ERROR;
- }
-
- *payload = getResp;
- ehResult = OC_EH_OK;
-
- return ehResult;
+ OCEntityHandlerResult ehResult = OC_EH_ERROR;
+ if(!ehRequest)
+ {
+ OC_LOG(ERROR, TAG, PCF("Request is Null"));
+ return ehResult;
+ }
+ if(ehRequest->payload && ehRequest->payload->type != PAYLOAD_TYPE_REPRESENTATION)
+ {
+ OC_LOG(ERROR, TAG, PCF("Incoming payload not a representation"));
+ return ehResult;
+ }
+
+ OCRepPayload *getResp = constructResponse(ehRequest);
+ if(!getResp)
+ {
+ OC_LOG(ERROR, TAG, "constructResponse failed");
+ return OC_EH_ERROR;
+ }
+
+ *payload = getResp;
+ ehResult = OC_EH_OK;
+
+ return ehResult;
}
OCEntityHandlerResult ProcessPutRequest (OCEntityHandlerRequest *ehRequest,
- OCRepPayload** payload)
+ OCRepPayload** payload)
{
- OCEntityHandlerResult ehResult=OC_EH_ERROR;
- if(ehRequest->payload && ehRequest->payload->type != PAYLOAD_TYPE_REPRESENTATION)
- {
- OC_LOG(ERROR, TAG, PCF("Incoming payload not a representation"));
- return ehResult;
- }
+ OCEntityHandlerResult ehResult=OC_EH_ERROR;
+ if(ehRequest->payload && ehRequest->payload->type != PAYLOAD_TYPE_REPRESENTATION)
+ {
+ OC_LOG(ERROR, TAG, PCF("Incoming payload not a representation"));
+ return ehResult;
+ }
- OCRepPayload* input = (OCRepPayload*)(ehRequest->payload);
- if(!input)
- {
- OC_LOG_V(ERROR, TAG, "Failed to parse");
- return ehResult;
- }
+ OCRepPayload* input = (OCRepPayload*)(ehRequest->payload);
+ if(!input)
+ {
+ OC_LOG_V(ERROR, TAG, "Failed to parse");
+ return ehResult;
+ }
- const char* tnn;
- if(OCRepPayloadGetPropString(input,OC_RSRVD_ES_TNN, &tnn))
- {
- sprintf(g_prov.tnn, "%s", tnn);
- }
+ const char* tnn;
+ if(OCRepPayloadGetPropString(input,OC_RSRVD_ES_TNN, &tnn))
+ {
+ sprintf(g_prov.tnn, "%s", tnn);
+ }
- const char* cd;
- if(OCRepPayloadGetPropString(input, OC_RSRVD_ES_CD, &cd))
- {
- sprintf(g_prov.cd, "%s", cd);
- }
+ const char* cd;
+ if(OCRepPayloadGetPropString(input, OC_RSRVD_ES_CD, &cd))
+ {
+ sprintf(g_prov.cd, "%s", cd);
+ }
- g_flag = 1;
+ g_flag = 1;
- OCRepPayload *getResp = constructResponse(ehRequest);
- if(!getResp)
- {
- OC_LOG(ERROR, TAG, "constructResponse failed");
- return OC_EH_ERROR;
- }
+ OCRepPayload *getResp = constructResponse(ehRequest);
+ if(!getResp)
+ {
+ OC_LOG(ERROR, TAG, "constructResponse failed");
+ return OC_EH_ERROR;
+ }
- *payload = getResp;
- ehResult = OC_EH_OK;
+ *payload = getResp;
+ ehResult = OC_EH_OK;
- return ehResult;
+ return ehResult;
}
OCEntityHandlerResult ProcessPostRequest(OCEntityHandlerRequest *ehRequest, OCRepPayload** payload)
{
- OCEntityHandlerResult ehResult = OC_EH_ERROR;
- if(!ehRequest)
- {
- OC_LOG(ERROR, TAG, PCF("Request is Null"));
- return ehResult;
- }
- if(ehRequest->payload && ehRequest->payload->type != PAYLOAD_TYPE_REPRESENTATION)
- {
- OC_LOG(ERROR, TAG, PCF("Incoming payload not a representation"));
- return ehResult;
- }
-
- OCRepPayload* input = (OCRepPayload*)(ehRequest->payload);
- if(!input)
- {
- OC_LOG_V(ERROR, TAG, "Failed to parse" );
- return ehResult;
- }
- const char* tr;
- if(OCRepPayloadGetPropString(input, OC_RSRVD_ES_TR, &tr))
- {
-
- // Triggering
- ehResult = OC_EH_OK;
- }
-
- g_flag = 1;
-
- return ehResult;
+ OCEntityHandlerResult ehResult = OC_EH_ERROR;
+ if(!ehRequest)
+ {
+ OC_LOG(ERROR, TAG, PCF("Request is Null"));
+ return ehResult;
+ }
+ if(ehRequest->payload && ehRequest->payload->type != PAYLOAD_TYPE_REPRESENTATION)
+ {
+ OC_LOG(ERROR, TAG, PCF("Incoming payload not a representation"));
+ return ehResult;
+ }
+
+ OCRepPayload* input = (OCRepPayload*)(ehRequest->payload);
+ if(!input)
+ {
+ OC_LOG_V(ERROR, TAG, "Failed to parse" );
+ return ehResult;
+ }
+ const char* tr;
+ if(OCRepPayloadGetPropString(input, OC_RSRVD_ES_TR, &tr))
+ {
+
+ // Triggering
+ ehResult = OC_EH_OK;
+ }
+
+ g_flag = 1;
+
+ return ehResult;
}
OCRepPayload* constructResponse(OCEntityHandlerRequest *ehRequest)
{
-
- OCRepPayload* payload = OCRepPayloadCreate();
- if(!payload)
- {
- OC_LOG(ERROR, TAG, PCF("Failed to allocate Payload"));
- return NULL;
- }
-
- if (g_prov.handle != NULL && ehRequest->resource == g_prov.handle)
- {
-
-
- OCRepPayloadSetUri(payload,OC_RSRVD_ES_URI_PROV);
-
- OCRepPayloadSetPropInt(payload, OC_RSRVD_ES_PS,g_prov.ps);
- OCRepPayloadSetPropInt(payload, OC_RSRVD_ES_TNT, g_prov.tnt);
- OCRepPayloadSetPropString(payload,OC_RSRVD_ES_TNN, g_prov.tnn);
- OCRepPayloadSetPropString(payload,OC_RSRVD_ES_CD, g_prov.cd);
- }
- else if (g_net.handle != NULL && ehRequest->requestHandle == g_net.handle)
- {
-
- OCRepPayloadSetUri(payload, OC_RSRVD_ES_URI_NET);
- OCRepPayloadSetPropInt(payload, "ant", g_net.ant[0]);
- }
- return payload;
+ OCRepPayload* payload = OCRepPayloadCreate();
+ if(!payload)
+ {
+ OC_LOG(ERROR, TAG, PCF("Failed to allocate Payload"));
+ return NULL;
+ }
+
+ if (ehRequest->resource == g_prov.handle)
+ {
+ OCRepPayloadSetUri(payload,OC_RSRVD_ES_URI_PROV);
+ OCRepPayloadSetPropInt(payload, OC_RSRVD_ES_PS,g_prov.ps);
+ OCRepPayloadSetPropInt(payload, OC_RSRVD_ES_TNT, g_prov.tnt);
+ OCRepPayloadSetPropString(payload,OC_RSRVD_ES_TNN, g_prov.tnn);
+ OCRepPayloadSetPropString(payload,OC_RSRVD_ES_CD, g_prov.cd);
+ }
+ else if (ehRequest->requestHandle == g_net.handle)
+ {
+
+ OCRepPayloadSetUri(payload, OC_RSRVD_ES_URI_NET);
+ OCRepPayloadSetPropInt(payload, "ant", g_net.ant[0]);
+ }
+ return payload;
}
// This is the entity handler for the registered resource.
// This is invoked by OCStack whenever it recevies a request for this resource.
OCEntityHandlerResult OCEntityHandlerCb(OCEntityHandlerFlag flag,
- OCEntityHandlerRequest* entityHandlerRequest,void *callback)
+ OCEntityHandlerRequest* entityHandlerRequest,void *callback)
{
- (void)callback;
- OCEntityHandlerResult ehRet = OC_EH_OK;
- OCEntityHandlerResponse response =
- { 0 };
- OCRepPayload* payload = NULL;
- if (entityHandlerRequest && (flag & OC_REQUEST_FLAG))
- {
- if (OC_REST_GET == entityHandlerRequest->method)
- {
- OC_LOG_V(INFO, TAG, "Received GET request");
- ehRet = ProcessGetRequest(entityHandlerRequest, &payload);
- }
- else if (OC_REST_PUT == entityHandlerRequest->method)
- {
- OC_LOG_V(INFO, TAG, "Received PUT request");
-
- if (g_prov.handle != NULL && entityHandlerRequest->resource == g_prov.handle)
- {
- ehRet = ProcessPutRequest(entityHandlerRequest, &payload);
- }
- else
- {
- ehRet = OC_EH_ERROR;
- }
- }
- else if (OC_REST_POST == entityHandlerRequest->method)
- {
- // TODO: As of now, POST request will be not received.
- OC_LOG(INFO, TAG, "Received OC_REST_POST from client");
- //ehRet = ProcessPostRequest (entityHandlerRequest, payload, sizeof(payload) - 1);
- }
-
- if (ehRet == OC_EH_OK)
- {
- // Format the response. Note this requires some info about the request
- response.requestHandle = entityHandlerRequest->requestHandle;
- response.resourceHandle = entityHandlerRequest->resource;
- response.ehResult = ehRet;
- response.payload = (OCPayload*)(&payload); //response uses OCPaylod while all get,put methodes use OCRepPayload
- response.numSendVendorSpecificHeaderOptions = 0;
- memset(response.sendVendorSpecificHeaderOptions, 0,
- sizeof response.sendVendorSpecificHeaderOptions);
- memset(response.resourceUri, 0, sizeof response.resourceUri);
- // Indicate that response is NOT in a persistent buffer
- response.persistentBufferFlag = 0;
-
- // Send the response
- if (OCDoResponse(&response) != OC_STACK_OK)
- {
- OC_LOG(ERROR, TAG, "Error sending response");
- ehRet = OC_EH_ERROR;
- }
- }
- }
-
- if (g_flag == 1)
- {
- g_cbForResEvent(ES_RECVTRIGGEROFPROVRES);
- g_flag = 0;
- }
-
- return ehRet;
+ (void)callback;
+ OCEntityHandlerResult ehRet = OC_EH_OK;
+ OCEntityHandlerResponse response =
+ { 0 };
+ OCRepPayload* payload = NULL;
+ if (entityHandlerRequest && (flag & OC_REQUEST_FLAG))
+ {
+ if (OC_REST_GET == entityHandlerRequest->method)
+ {
+ OC_LOG_V(INFO, TAG, "Received GET request");
+ ehRet = ProcessGetRequest(entityHandlerRequest, &payload);
+ }
+ else if (OC_REST_PUT == entityHandlerRequest->method)
+ {
+ OC_LOG_V(INFO, TAG, "Received PUT request");
+
+ if (g_prov.handle != NULL && entityHandlerRequest->resource == g_prov.handle)
+ {
+ ehRet = ProcessPutRequest(entityHandlerRequest, &payload);
+ }
+ else
+ {
+ ehRet = OC_EH_ERROR;
+ }
+ }
+ else if (OC_REST_POST == entityHandlerRequest->method)
+ {
+ // TODO: As of now, POST request will be not received.
+ OC_LOG(INFO, TAG, "Received OC_REST_POST from client");
+ //ehRet = ProcessPostRequest (entityHandlerRequest, payload, sizeof(payload) - 1);
+ }
+
+ if (ehRet == OC_EH_OK)
+ {
+ // Format the response. Note this requires some info about the request
+ response.requestHandle = entityHandlerRequest->requestHandle;
+ response.resourceHandle = entityHandlerRequest->resource;
+ response.ehResult = ehRet;
+ response.payload = (OCPayload*)(payload); //response uses OCPaylod while all get,put methodes use OCRepPayload
+ response.numSendVendorSpecificHeaderOptions = 0;
+ memset(response.sendVendorSpecificHeaderOptions, 0,
+ sizeof response.sendVendorSpecificHeaderOptions);
+ memset(response.resourceUri, 0, sizeof response.resourceUri);
+ // Indicate that response is NOT in a persistent buffer
+ response.persistentBufferFlag = 0;
+
+ // Send the response
+ if (OCDoResponse(&response) != OC_STACK_OK)
+ {
+ OC_LOG(ERROR, TAG, "Error sending response");
+ ehRet = OC_EH_ERROR;
+ }
+ }
+ }
+
+ if (g_flag == 1)
+ {
+ g_cbForResEvent(ES_RECVTRIGGEROFPROVRES);
+ g_flag = 0;
+ }
+
+ return ehRet;
}
const char *getResult(OCStackResult result)
{
- switch (result)
- {
- case OC_STACK_OK:
- return "OC_STACK_OK";
- case OC_STACK_INVALID_URI:
- return "OC_STACK_INVALID_URI";
- case OC_STACK_INVALID_QUERY:
- return "OC_STACK_INVALID_QUERY";
- case OC_STACK_INVALID_IP:
- return "OC_STACK_INVALID_IP";
- case OC_STACK_INVALID_PORT:
- return "OC_STACK_INVALID_PORT";
- case OC_STACK_INVALID_CALLBACK:
- return "OC_STACK_INVALID_CALLBACK";
- case OC_STACK_INVALID_METHOD:
- return "OC_STACK_INVALID_METHOD";
- case OC_STACK_NO_MEMORY:
- return "OC_STACK_NO_MEMORY";
- case OC_STACK_COMM_ERROR:
- return "OC_STACK_COMM_ERROR";
- case OC_STACK_INVALID_PARAM:
- return "OC_STACK_INVALID_PARAM";
- case OC_STACK_NOTIMPL:
- return "OC_STACK_NOTIMPL";
- case OC_STACK_NO_RESOURCE:
- return "OC_STACK_NO_RESOURCE";
- case OC_STACK_RESOURCE_ERROR:
- return "OC_STACK_RESOURCE_ERROR";
- case OC_STACK_SLOW_RESOURCE:
- return "OC_STACK_SLOW_RESOURCE";
- case OC_STACK_NO_OBSERVERS:
- return "OC_STACK_NO_OBSERVERS";
- case OC_STACK_ERROR:
- return "OC_STACK_ERROR";
- default:
- return "UNKNOWN";
- }
+ switch (result)
+ {
+ case OC_STACK_OK:
+ return "OC_STACK_OK";
+ case OC_STACK_INVALID_URI:
+ return "OC_STACK_INVALID_URI";
+ case OC_STACK_INVALID_QUERY:
+ return "OC_STACK_INVALID_QUERY";
+ case OC_STACK_INVALID_IP:
+ return "OC_STACK_INVALID_IP";
+ case OC_STACK_INVALID_PORT:
+ return "OC_STACK_INVALID_PORT";
+ case OC_STACK_INVALID_CALLBACK:
+ return "OC_STACK_INVALID_CALLBACK";
+ case OC_STACK_INVALID_METHOD:
+ return "OC_STACK_INVALID_METHOD";
+ case OC_STACK_NO_MEMORY:
+ return "OC_STACK_NO_MEMORY";
+ case OC_STACK_COMM_ERROR:
+ return "OC_STACK_COMM_ERROR";
+ case OC_STACK_INVALID_PARAM:
+ return "OC_STACK_INVALID_PARAM";
+ case OC_STACK_NOTIMPL:
+ return "OC_STACK_NOTIMPL";
+ case OC_STACK_NO_RESOURCE:
+ return "OC_STACK_NO_RESOURCE";
+ case OC_STACK_RESOURCE_ERROR:
+ return "OC_STACK_RESOURCE_ERROR";
+ case OC_STACK_SLOW_RESOURCE:
+ return "OC_STACK_SLOW_RESOURCE";
+ case OC_STACK_NO_OBSERVERS:
+ return "OC_STACK_NO_OBSERVERS";
+ case OC_STACK_ERROR:
+ return "OC_STACK_ERROR";
+ default:
+ return "UNKNOWN";
+ }
}
if(ps == 1)\r
{\r
OIC_LOG_V(DEBUG, TAG, "PS is proper");\r
+ input = input->next;\r
continue;\r
}\r
else{\r
provInfo = PrepareProvisioingStatusCB(clientResponse,\r
DEVICE_NOT_PROVISIONED);\r
cbData(provInfo);\r
-\r
+ return OC_STACK_DELETE_TRANSACTION;\r
}\r
}\r
\r
if(!strcmp(tnn, netProvInfo->netAddressInfo.WIFI.ssid))\r
{\r
OIC_LOG_V(DEBUG, TAG, "SSID is proper");\r
+ input = input->next;\r
continue;\r
}\r
else{\r
provInfo = PrepareProvisioingStatusCB(clientResponse,\r
DEVICE_NOT_PROVISIONED);\r
cbData(provInfo);\r
+ return OC_STACK_DELETE_TRANSACTION;\r
}\r
}\r
const char* cd;\r
if(!strcmp(cd,netProvInfo->netAddressInfo.WIFI.pwd))\r
{\r
OIC_LOG_V(DEBUG, TAG, "Password is proper");\r
+ input = input->next;\r
continue;\r
}\r
else{\r
provInfo = PrepareProvisioingStatusCB(clientResponse,\r
DEVICE_NOT_PROVISIONED);\r
cbData(provInfo);\r
+ return OC_STACK_DELETE_TRANSACTION;\r
}\r
}\r
\r
\r
\r
\r
-OCStackResult ProvisionEnrollee(OCQualityOfService qos, const char* query, const char* resUri) {\r
+OCStackResult ProvisionEnrollee(OCQualityOfService qos, const char* query, const char* resUri,\r
+ OCDevAddr *destination) {\r
OIC_LOG_V(INFO, TAG, "\n\nExecuting ProvisionEnrollee%s", __func__);\r
\r
\r
\r
OIC_LOG_V(DEBUG, TAG, "OCPayload ready for ProvisionEnrollee");\r
\r
- OCStackResult ret = InvokeOCDoResource(query, OC_REST_PUT, OC_HIGH_QOS,\r
+ OCStackResult ret = InvokeOCDoResource(query, OC_REST_PUT, destination, OC_HIGH_QOS,\r
ProvisionEnrolleeResponse, payload, NULL, 0);\r
\r
return ret;\r
\r
char query[OIC_STRING_MAX_VALUE] = { '\0' };\r
\r
+ if(NULL == clientResponse->payload)\r
\r
- if (clientResponse->payload) {\r
-\r
- if(clientResponse->payload && clientResponse->payload->type != PAYLOAD_TYPE_REPRESENTATION)\r
-\r
- {\r
- OIC_LOG_V(DEBUG, TAG, "Incoming payload not a representation");\r
- return OC_STACK_DELETE_TRANSACTION;\r
- }\r
+ {\r
+ OIC_LOG_V(DEBUG, TAG, "OCClientResponse is NULL");\r
\r
- OCRepPayload* input = (OCRepPayload*)(clientResponse->payload);\r
- if(!input)\r
- {\r
- OIC_LOG_V(DEBUG, TAG, "Failed To parse");\r
- return OC_STACK_DELETE_TRANSACTION;\r
- }\r
- OIC_LOG_V(DEBUG, TAG, "resUri = %s",input->uri);\r
+ provInfo = PrepareProvisioingStatusCB(clientResponse,\r
+ DEVICE_NOT_PROVISIONED);\r
+ cbData(provInfo);\r
\r
- char resURI[MAX_URI_LENGTH]={'\0'};\r
+ return OC_STACK_DELETE_TRANSACTION;\r
+ }\r
\r
- strncpy(resURI, input->uri, sizeof(resURI));\r
+ OCRepPayload* repPayload = (OCRepPayload*)clientResponse->payload;\r
\r
- snprintf(query, sizeof(query), UNICAST_PROV_STATUS_QUERY,\r
- clientResponse->addr->addr,\r
- IP_PORT, resURI);\r
+ OIC_LOG_V(DEBUG, TAG, "repPayload URI = %s",repPayload->uri);\r
\r
- //OCPayloadLogRep(DEBUG,TAG,input);\r
+ snprintf(query, sizeof(query), UNICAST_PROV_STATUS_QUERY,\r
+ clientResponse->addr->addr,\r
+ IP_PORT, repPayload->uri);\r
\r
- if (ProvisionEnrollee(OC_HIGH_QOS, query, resURI) != OC_STACK_OK) {\r
- OIC_LOG(INFO, TAG,\r
- "GetProvisioningStatusResponse received NULL clientResponse. \\r
- Invoking Provisioing Status Callback");\r
- provInfo = PrepareProvisioingStatusCB(clientResponse,\r
- DEVICE_NOT_PROVISIONED);\r
- cbData(provInfo);\r
+ //OCPayloadLogRep(DEBUG,TAG,input);\r
\r
- return OC_STACK_DELETE_TRANSACTION;\r
- }\r
- } else {\r
+ if (ProvisionEnrollee(OC_HIGH_QOS, query, OC_RSRVD_ES_URI_PROV,\r
+ clientResponse->addr) != OC_STACK_OK) {\r
OIC_LOG(INFO, TAG,\r
"GetProvisioningStatusResponse received NULL clientResponse. \\r
Invoking Provisioing Status Callback");\r
provInfo = PrepareProvisioingStatusCB(clientResponse,\r
DEVICE_NOT_PROVISIONED);\r
cbData(provInfo);\r
+\r
return OC_STACK_DELETE_TRANSACTION;\r
}\r
+\r
return OC_STACK_DELETE_TRANSACTION;\r
}\r
\r
-OCStackResult InvokeOCDoResource(const char* query, OCMethod method,\r
- OCQualityOfService qos, OCClientResponseHandler cb,OCRepPayload* request,\r
+OCStackResult InvokeOCDoResource(const char* query, OCMethod method, const OCDevAddr *dest,\r
+ OCQualityOfService qos, OCClientResponseHandler cb,OCRepPayload* payload,\r
OCHeaderOption * options, uint8_t numOptions) {\r
OCStackResult ret;\r
OCCallbackData cbData;\r
cbData.context = (void*) DEFAULT_CONTEXT_VALUE;\r
cbData.cd = NULL;\r
\r
- ret = OCDoResource(NULL, method, query, 0, &request->base, OC_CONNTYPE, qos,\r
+ ret = OCDoResource(NULL, method, query, dest, (OCPayload*)payload, OC_CONNTYPE, qos,\r
&cbData, options, numOptions);\r
\r
if (ret != OC_STACK_OK) {\r
return ret;\r
}\r
\r
-OCStackResult GetProvisioningStatus(OCQualityOfService qos, const char* query) {\r
+OCStackResult GetProvisioningStatus(OCQualityOfService qos,\r
+ const char* query,\r
+ const OCDevAddr *destination) {\r
OCStackResult ret = OC_STACK_ERROR;\r
OCHeaderOption options[MAX_HEADER_OPTIONS];\r
\r
memcpy(options[1].optionData, option1, sizeof(option1));\r
options[1].optionLength = 10;\r
\r
- ret = InvokeOCDoResource(query, OC_REST_GET, OC_HIGH_QOS,\r
- GetProvisioningStatusResponse, NULL, options, 2);\r
+ ret = InvokeOCDoResource(query, OC_REST_GET, destination, OC_HIGH_QOS,\r
+ GetProvisioningStatusResponse, NULL, options, 2);\r
return ret;\r
}\r
\r
OCDoHandle handle, OCClientResponse * clientResponse) {\r
OIC_LOG(INFO, TAG, PCF("Entering FindProvisioningResourceResponse"));\r
\r
+ ProvisioningInfo *provInfo = NULL;\r
OCStackApplicationResult response = OC_STACK_DELETE_TRANSACTION;\r
\r
- ProvisioningInfo *provInfo;\r
-\r
- if (clientResponse->result != OC_STACK_OK) {\r
+ if(clientResponse == NULL)\r
+ {\r
OIC_LOG(ERROR, TAG,\r
- "OCStack stop error. Calling Provisioing Status Callback");\r
+ "OCClientResponse is NULL");\r
\r
provInfo = PrepareProvisioingStatusCB(clientResponse,\r
DEVICE_NOT_PROVISIONED);\r
return response;\r
}\r
\r
- if (clientResponse) {\r
+ if (clientResponse->result != OC_STACK_OK || NULL == clientResponse->payload) {\r
+ OIC_LOG(ERROR, TAG,\r
+ "OCStack stop error. Calling Provisioing Status Callback");\r
\r
+ provInfo = PrepareProvisioingStatusCB(clientResponse,\r
+ DEVICE_NOT_PROVISIONED);\r
\r
- if(clientResponse->payload && clientResponse->payload->type != PAYLOAD_TYPE_REPRESENTATION)\r
- {\r
- OIC_LOG_V(DEBUG, TAG, "Incoming payload not a representation");\r
- return OC_STACK_DELETE_TRANSACTION;\r
- }\r
+ cbData(provInfo);\r
+ return response;\r
+ }\r
\r
- OCRepPayload* discoveryPayload= (OCRepPayload*)(clientResponse->payload);\r
- if(!discoveryPayload)\r
- {\r
- OIC_LOG_V(DEBUG, TAG, "Failed To parse");\r
- provInfo = PrepareProvisioingStatusCB(clientResponse,\r
- DEVICE_NOT_PROVISIONED);\r
- cbData(provInfo);\r
- return response;\r
- }\r
- OIC_LOG_V(DEBUG, TAG, "resUri = %s",discoveryPayload->uri);\r
- char szQueryUri[64] = { 0 };\r
+ OCDiscoveryPayload* discoveryPayload = (OCDiscoveryPayload*)clientResponse->payload;\r
\r
- snprintf(szQueryUri, sizeof(szQueryUri), UNICAST_PROV_STATUS_QUERY,\r
- clientResponse->devAddr.addr, IP_PORT, discoveryPayload->uri);\r
- OIC_LOG_V(DEBUG, TAG, "query before GetProvisioningStatus call = %s", szQueryUri);\r
+ OIC_LOG_V(DEBUG, TAG, "discoveryPayload->resources->uri = %s",\r
+ discoveryPayload->resources->uri);\r
+ char szQueryUri[64] = { 0 };\r
\r
- if (GetProvisioningStatus(OC_HIGH_QOS, szQueryUri) != OC_STACK_OK) {\r
- OIC_LOG(INFO, TAG,\r
- "GetProvisioningStatus returned error. \\r
- Invoking Provisioing Status Callback");\r
- provInfo = PrepareProvisioingStatusCB(clientResponse,\r
- DEVICE_NOT_PROVISIONED);\r
+ snprintf(szQueryUri, sizeof(szQueryUri), UNICAST_PROV_STATUS_QUERY,\r
+ clientResponse->devAddr.addr, IP_PORT, discoveryPayload->resources->uri);\r
+ OIC_LOG_V(DEBUG, TAG, "query before GetProvisioningStatus call = %s", szQueryUri);\r
\r
- cbData(provInfo);\r
- return OC_STACK_DELETE_TRANSACTION;\r
- }\r
- } else {\r
- // clientResponse is invalid\r
- OIC_LOG(ERROR, TAG,\r
- "Invalid response for Provisioning Discovery request. \\r
+ if (GetProvisioningStatus(OC_HIGH_QOS, szQueryUri, &clientResponse->devAddr) != OC_STACK_OK) {\r
+ OIC_LOG(INFO, TAG,\r
+ "GetProvisioningStatus returned error. \\r
Invoking Provisioing Status Callback");\r
provInfo = PrepareProvisioingStatusCB(clientResponse,\r
DEVICE_NOT_PROVISIONED);\r
+\r
cbData(provInfo);\r
- return response;\r
+ return OC_STACK_DELETE_TRANSACTION;\r
}\r
+\r
return OC_STACK_KEEP_TRANSACTION;\r
}\r
\r
ocCBData.context = (void*) DEFAULT_CONTEXT_VALUE;\r
ocCBData.cd = NULL;\r
\r
- ret = OCDoResource(NULL, OC_REST_GET, szQueryUri, 0, 0, OC_CONNTYPE,\r
+ ret = OCDoResource(NULL, OC_REST_DISCOVER, szQueryUri, NULL, NULL, OC_CONNTYPE,\r
OC_LOW_QOS, &ocCBData, NULL, 0);\r
\r
if (ret != OC_STACK_OK) {\r