+ cbor_value_enter_container(root, &rootMap);
+ }
+ while (!err && cbor_value_is_valid(&rootMap))
+ {
+ OCRepPayload *temp = OCRepPayloadCreate();
+ if (!temp)
+ {
+ return OC_STACK_NO_MEMORY;
+ }
+ if (!err && cbor_value_is_map(&rootMap))
+ {
+ err = err || cbor_value_map_find_value(&rootMap, OC_RSRVD_HREF, &curVal);
+ if (cbor_value_is_valid(&curVal))
+ {
+ err = err || cbor_value_dup_text_string(&curVal, &temp->uri, &len, NULL);
+ }
+ }
+ if (!err && cbor_value_is_map(&rootMap))
+ {
+ err = err || cbor_value_map_find_value(&rootMap, OC_RSRVD_RESOURCE_TYPE, &curVal);
+ if(cbor_value_is_text_string(&curVal))
+ {
+ char* allRt = NULL;
+ err = err || cbor_value_dup_text_string(&curVal, &allRt, &len, NULL);
+ if (allRt)
+ {
+ char* savePtr;
+ char* curPtr = strtok_r(allRt, " ", &savePtr);
+ while (curPtr)
+ {
+ char* trimmed = InPlaceStringTrim(curPtr);
+ if (trimmed[0] != '\0')
+ {
+ OCRepPayloadAddResourceType(temp, curPtr);
+ }
+ curPtr = strtok_r(NULL, " ", &savePtr);
+ }
+ }
+ OICFree(allRt);
+ }
+ }
+ if (!err && cbor_value_is_map(&rootMap))
+ {
+ err = err || cbor_value_map_find_value(&rootMap, OC_RSRVD_INTERFACE, &curVal);
+ if(cbor_value_is_text_string(&curVal))
+ {
+ char* allIf = NULL;
+ err = err || cbor_value_dup_text_string(&curVal, &allIf, &len, NULL);
+ if (allIf)
+ {
+ char* savePtr;
+ char* curPtr = strtok_r(allIf, " ", &savePtr);
+ while (curPtr)
+ {
+ char* trimmed = InPlaceStringTrim(curPtr);
+ if (trimmed[0] != '\0')
+ {
+ OCRepPayloadAddInterface(temp, curPtr);
+ }
+ curPtr = strtok_r(NULL, " ", &savePtr);
+ }
+ }
+ OICFree(allIf);
+ }
+ }
+ if (!err && cbor_value_is_map(&rootMap))
+ {
+ err = err || OCParseSingleRepPayload(&temp, &rootMap);
+ }
+ if (rootPayload == NULL)