OCStackApplicationResult GetProvisioningStatusResponse(void* /*ctx*/, OCDoHandle /*handle*/, OCClientResponse *clientResponse) { // If user stopped the process then return from this function; if (IsSetupStopped()) { ErrorCallback(DEVICE_NOT_PROVISIONED); ClearMemory(); return OC_STACK_DELETE_TRANSACTION; } if (!ValidateEnrolleResponse(clientResponse)) { ErrorCallback(DEVICE_NOT_PROVISIONED); ClearMemory(); return OC_STACK_DELETE_TRANSACTION; } OCRepPayload *input = (OCRepPayload * )(clientResponse->payload); char query[OIC_STRING_MAX_VALUE] = {'\0'}; char resURI[MAX_URI_LENGTH] = {'\0'}; OIC_LOG_V(DEBUG, ES_WIFI_PROV_TAG, "resUri = %s", input->uri); strncpy(resURI, input->uri, sizeof(resURI) - 1); snprintf(query, sizeof(query), UNICAST_PROV_STATUS_QUERY, clientResponse->addr->addr, IP_PORT, resURI); if (ProvisionEnrollee(OC_HIGH_QOS, query, OC_RSRVD_ES_URI_PROV, clientResponse->addr, 0) != OC_STACK_OK) { OIC_LOG(INFO, ES_WIFI_PROV_TAG, "GetProvisioningStatusResponse received NULL clientResponse"); ErrorCallback(DEVICE_NOT_PROVISIONED); ClearMemory(); return OC_STACK_DELETE_TRANSACTION; } return OC_STACK_KEEP_TRANSACTION; }
OCStackApplicationResult ProvisionEnrolleeResponse(void *ctx, OCDoHandle handle, OCClientResponse *clientResponse) { OIC_LOG_V(DEBUG, TAG, "INSIDE ProvisionEnrolleeResponse"); // If user stopped the process then return from this function; if (IsSetupStopped()) { ErrorCallback(DEVICE_NOT_PROVISIONED); ClearMemory(); return OC_STACK_DELETE_TRANSACTION; } ProvisioningInfo *provInfo; if (!ValidateEnrolleResponse(clientResponse)) { ErrorCallback(DEVICE_NOT_PROVISIONED); return OC_STACK_DELETE_TRANSACTION; } char *tnn; char *cd; OCRepPayload *input = (OCRepPayload * )(clientResponse->payload); while (input) { int64_t ps; if (OCRepPayloadGetPropInt(input, OC_RSRVD_ES_PS, &ps)) { if (ps == 1) { input = input->next; continue; } else { OIC_LOG_V(DEBUG, TAG, "PS is NOT proper"); goto Error; } } if (OCRepPayloadGetPropString(input, OC_RSRVD_ES_TNN, &tnn)) { if (!strcmp(tnn, netProvInfo->netAddressInfo.WIFI.ssid)) { OIC_LOG_V(DEBUG, TAG, "SSID is proper"); input = input->next; continue; } else { OIC_LOG_V(DEBUG, TAG, "SSID is NOT proper"); goto Error; } } if (OCRepPayloadGetPropString(input, OC_RSRVD_ES_CD, &cd)) { if (!strcmp(cd, netProvInfo->netAddressInfo.WIFI.pwd)) { OIC_LOG_V(DEBUG, TAG, "Password is proper"); input = input->next; continue; } else { OIC_LOG_V(DEBUG, TAG, "Password is NOT proper"); goto Error; } } LogProvisioningResponse(input->values); input = input->next; } SuccessCallback(clientResponse); return OC_STACK_KEEP_TRANSACTION; Error: { ErrorCallback(DEVICE_NOT_PROVISIONED); return OC_STACK_DELETE_TRANSACTION; } }