Removes enclosing array and rep from the presence payload.
It changes structure from
[{
rep: {
presence payload
}
}]
to
{
presence payload
}
Change-Id: I44f7fa1d6f18a0a883057ffb52cfc27c5ead596d
Signed-off-by: Habib Virji <habib.virji@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/4467
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
int64_t err = 0;
cbor_encoder_init(&encoder, outPayload, *size, 0);
- CborEncoder rootArray;
-
- err = err | cbor_encoder_create_array(&encoder, &rootArray, 1);
-
CborEncoder map;
- err = err | cbor_encoder_create_map(&rootArray, &map, CborIndefiniteLength);
+ err = err | cbor_encoder_create_map(&encoder, &map, CborIndefiniteLength);
// Sequence Number
err = err | cbor_encode_text_string(&map,
}
// Close Map
- err = err | cbor_encoder_close_container(&rootArray, &map);
- err = err | cbor_encoder_close_container(&encoder, &rootArray);
+ err = err | cbor_encoder_close_container(&encoder, &map);
return checkError(err, &encoder, outPayload, size);
}
}
bool err = false;
- CborValue arrayVal;
- err = err || cbor_value_enter_container(rootValue, &arrayVal);
- if(cbor_value_is_map(&arrayVal))
+ if(cbor_value_is_map(rootValue))
{
uint64_t seqNum = 0;
uint64_t maxAge = 0;
CborValue curVal;
// Sequence Number
- err = err || cbor_value_map_find_value(&arrayVal, OC_RSRVD_NONCE, &curVal);
+ err = err || cbor_value_map_find_value(rootValue, OC_RSRVD_NONCE, &curVal);
err = err || cbor_value_get_uint64(&curVal, &seqNum);
// Max Age
- err = err || cbor_value_map_find_value(&arrayVal, OC_RSRVD_TTL, &curVal);
+ err = err || cbor_value_map_find_value(rootValue, OC_RSRVD_TTL, &curVal);
err = err || cbor_value_get_uint64(&curVal, &maxAge);
// Trigger
- err = err || cbor_value_map_find_value(&arrayVal, OC_RSRVD_TRIGGER, &curVal);
+ err = err || cbor_value_map_find_value(rootValue, OC_RSRVD_TRIGGER, &curVal);
err = err || cbor_value_dup_text_string(&curVal, &tempStr, &len, NULL);
trigger = convertTriggerStringToEnum(tempStr);
OICFree(tempStr);
tempStr = NULL;
// Resource type name
- err = err || cbor_value_map_find_value(&arrayVal, OC_RSRVD_RESOURCE_TYPE, &curVal);
+ err = err || cbor_value_map_find_value(rootValue, OC_RSRVD_RESOURCE_TYPE, &curVal);
if(cbor_value_is_valid(&curVal))
{
err = err || cbor_value_dup_text_string(&curVal, &tempStr, &len, NULL);
}
- err = err || cbor_value_advance(&arrayVal);
- err = err || cbor_value_leave_container(rootValue, &arrayVal);
+ err = err || cbor_value_advance(rootValue);
if(!err)
{
OCPayloadDestroy(parsedPlatform);
}
+ TEST(PresencePayload, Normal)
+ {
+ uint32_t maxAge = 0;
+ uint32_t sequenceNumber = 0;
+ OCPresenceTrigger trigger = OC_PRESENCE_TRIGGER_CREATE;
+ OCPresencePayload *presence = OCPresencePayloadCreate(sequenceNumber, maxAge, trigger, uri1);
+
+ uint8_t* cborData;
+ size_t cborSize;
+ OCPayload* cparsed;
+ EXPECT_EQ(OC_STACK_OK, OCConvertPayload((OCPayload*)presence, &cborData, &cborSize));
+ EXPECT_EQ(OC_STACK_OK, OCParsePayload(&cparsed, PAYLOAD_TYPE_PRESENCE,
+ cborData, cborSize));
+ OCPayloadDestroy((OCPayload*)presence);
+ OICFree(cborData);
+
+ OCPresencePayload* parsed = ((OCPresencePayload*)cparsed);
+ EXPECT_EQ(sequenceNumber, parsed->sequenceNumber);
+ EXPECT_EQ(maxAge, parsed->maxAge);
+ EXPECT_EQ(trigger, parsed->trigger);
+ EXPECT_STREQ(uri1, parsed->resourceType);
+ OCPayloadDestroy(cparsed);
+ }
// Representation Payloads
TEST(RepresentationEncoding, BaseAttributeTypes)
{