static OCStackResult OCParseDiscoveryPayload(OCPayload **outPayload, CborValue *arrayVal);
static CborError OCParseSingleRepPayload(OCRepPayload **outPayload, CborValue *repParent, bool isRoot);
static OCStackResult OCParseRepPayload(OCPayload **outPayload, CborValue *arrayVal);
+#ifdef WITH_PRESENCE
static OCStackResult OCParsePresencePayload(OCPayload **outPayload, CborValue *arrayVal);
+#endif
static OCStackResult OCParseSecurityPayload(OCPayload **outPayload, const uint8_t *payload, size_t size);
OCStackResult OCParsePayload(OCPayload **outPayload, OCPayloadType payloadType,
OIC_LOG_V(INFO, TAG, "CBOR Parsing size: %zu of Payload Type: %d, Payload:",
payloadSize, payloadType);
- OIC_LOG_BUFFER(DEBUG, TAG, payload, payloadSize);
CborParser parser;
CborValue rootValue;
case PAYLOAD_TYPE_REPRESENTATION:
result = OCParseRepPayload(outPayload, &rootValue);
break;
+#ifdef WITH_PRESENCE
case PAYLOAD_TYPE_PRESENCE:
result = OCParsePresencePayload(outPayload, &rootValue);
break;
+#endif
case PAYLOAD_TYPE_SECURITY:
result = OCParseSecurityPayload(outPayload, payload, payloadSize);
break;
// BaseURI - Not a mandatory field
err = cbor_value_map_find_value(&rootMap, OC_RSRVD_BASE_URI, &curVal);
VERIFY_CBOR_SUCCESS(TAG, err, "to find uri tag");
- if (cbor_value_is_valid(&curVal))
+ if (cbor_value_is_text_string(&curVal))
{
err = cbor_value_dup_text_string(&curVal, &(temp->baseURI), &len, NULL);
VERIFY_CBOR_SUCCESS(TAG, err, "to find base uri value");
}
- // HREF - Not a mandatory field
- err = cbor_value_map_find_value(&rootMap, OC_RSRVD_HREF, &curVal);
- if (cbor_value_is_valid(&curVal))
- {
- err = cbor_value_dup_text_string(&curVal, &(temp->uri), &len, NULL);
- VERIFY_CBOR_SUCCESS(TAG, err, "to find uri value");
- }
-
// RT - Not a mandatory field
err = cbor_value_map_find_value(&rootMap, OC_RSRVD_RESOURCE_TYPE, &curVal);
if (cbor_value_is_valid(&curVal))
{
err = OCParseStringLL(&rootMap, OC_RSRVD_RESOURCE_TYPE, &temp->type);
- VERIFY_CBOR_SUCCESS(TAG, err, "to find base uri value");
+ VERIFY_CBOR_SUCCESS(TAG, err, "to find resource type");
}
// IF - Not a mandatory field
if (cbor_value_is_valid(&curVal))
{
err = OCParseStringLL(&rootMap, OC_RSRVD_INTERFACE, &temp->iface);
- }
- if (!temp->iface)
- {
- if (!OCResourcePayloadAddStringLL(&temp->iface, OC_RSRVD_INTERFACE_LL))
- {
- err = CborErrorOutOfMemory;
- }
+ VERIFY_CBOR_SUCCESS(TAG, err, "to find interface");
}
// Name - Not a mandatory field
err = cbor_value_map_find_value(&rootMap, OC_RSRVD_DEVICE_NAME, &curVal);
- if (cbor_value_is_valid(&curVal))
+ if (cbor_value_is_text_string(&curVal))
{
err = cbor_value_dup_text_string(&curVal, &temp->name, &len, NULL);
VERIFY_CBOR_SUCCESS(TAG, err, "to find device name");
// Secure Flag
err = cbor_value_map_find_value(&policyMap, OC_RSRVD_SECURE, &curVal);
VERIFY_CBOR_SUCCESS(TAG, err, "to find secure tag");
- if (cbor_value_is_valid(&curVal))
+ if (cbor_value_is_boolean(&curVal))
{
err = cbor_value_get_boolean(&curVal, &(resource->secure));
VERIFY_CBOR_SUCCESS(TAG, err, "to find secure value");
// Port
err = cbor_value_map_find_value(&policyMap, OC_RSRVD_HOSTING_PORT, &curVal);
VERIFY_CBOR_SUCCESS(TAG, err, "to find port tag");
- if (cbor_value_is_valid(&curVal))
+ if (cbor_value_is_integer(&curVal))
{
int port;
#ifdef TCP_ADAPTER
// TCP Port
err = cbor_value_map_find_value(&policyMap, OC_RSRVD_TCP_PORT, &curVal);
- if (cbor_value_is_valid(&curVal))
+ if (cbor_value_is_integer(&curVal))
{
int tcpPort;
#ifdef __WITH_TLS__
// TLS Port
err = cbor_value_map_find_value(&policyMap, OC_RSRVD_TLS_PORT, &curVal);
- if (cbor_value_is_valid(&curVal))
+ if (cbor_value_is_integer(&curVal))
{
int tlsPort;
{
err = cbor_value_advance(&repMap);
OICFree(name);
+ name = NULL;
continue;
}
}
{
err = cbor_value_map_find_value(&rootMap, OC_RSRVD_HREF, &curVal);
VERIFY_CBOR_SUCCESS(TAG, err, "to find href tag");
- if (cbor_value_is_valid(&curVal))
+ if (cbor_value_is_text_string(&curVal))
{
size_t len = 0;
err = cbor_value_dup_text_string(&curVal, &temp->uri, &len, NULL);
return ret;
}
+#ifdef WITH_PRESENCE
static OCStackResult OCParsePresencePayload(OCPayload **outPayload, CborValue *rootValue)
{
OCStackResult ret = OC_STACK_INVALID_PARAM;
// Resource type name
err = cbor_value_map_find_value(rootValue, OC_RSRVD_RESOURCE_TYPE, &curVal);
VERIFY_CBOR_SUCCESS(TAG, err, "to find res type tag");
- if (cbor_value_is_valid(&curVal))
+ if (cbor_value_is_text_string(&curVal))
{
size_t len = 0;
err = cbor_value_dup_text_string(&curVal, &payload->resourceType, &len, NULL);
OCPresencePayloadDestroy(payload);
return ret;
}
+#endif // WITH_PRESENCE