From: Habib Virji Date: Wed, 9 Dec 2015 13:43:04 +0000 (+0000) Subject: Change PRESENCE payload in correct format. X-Git-Tag: 1.0.1~15 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ef28caba856cea92569980cdf8e552454fc22b22;p=contrib%2Fiotivity.git Change PRESENCE payload in correct format. Removes enclosing array and rep from the device payload. It changes structure from [{ rep: { device payload } }] to { presence payload } Change-Id: I44f7fa1d6f18a0a883057ffb52cfc27c5ead596d Signed-off-by: Habib Virji Reviewed-on: https://gerrit.iotivity.org/gerrit/4473 Tested-by: jenkins-iotivity --- diff --git a/resource/csdk/stack/src/ocpayloadconvert.c b/resource/csdk/stack/src/ocpayloadconvert.c index d400e14..f7bfb09 100644 --- a/resource/csdk/stack/src/ocpayloadconvert.c +++ b/resource/csdk/stack/src/ocpayloadconvert.c @@ -751,12 +751,8 @@ static int64_t OCConvertPresencePayload(OCPresencePayload* payload, 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, @@ -783,8 +779,7 @@ static int64_t OCConvertPresencePayload(OCPresencePayload* payload, } // 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); } diff --git a/resource/csdk/stack/src/ocpayloadparse.c b/resource/csdk/stack/src/ocpayloadparse.c index 8551337..816d56e 100644 --- a/resource/csdk/stack/src/ocpayloadparse.c +++ b/resource/csdk/stack/src/ocpayloadparse.c @@ -471,7 +471,6 @@ static OCStackResult OCParseDevicePayload(OCPayload** outPayload, CborValue* roo } bool err = false; - CborValue arrayVal; err = err || cbor_value_enter_container(rootValue, &arrayVal); @@ -1185,7 +1184,7 @@ static OCStackResult OCParseRepPayload(OCPayload** outPayload, CborValue* rootMa while (!err && cbor_value_is_map(rootMap)) { - err = err || OCParseSingleRepPayload(&temp, rootMap); + err = err || OCParseSingleRepPayload(&temp, rootMap); if(rootPayload == NULL) { @@ -1224,10 +1223,7 @@ static OCStackResult OCParsePresencePayload(OCPayload** outPayload, CborValue* r } 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; @@ -1237,29 +1233,28 @@ static OCStackResult OCParsePresencePayload(OCPayload** outPayload, CborValue* r 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) { diff --git a/resource/unittests/OCRepresentationEncodingTest.cpp b/resource/unittests/OCRepresentationEncodingTest.cpp index 1b9668a..8bf44eb 100644 --- a/resource/unittests/OCRepresentationEncodingTest.cpp +++ b/resource/unittests/OCRepresentationEncodingTest.cpp @@ -176,7 +176,30 @@ namespace OCRepresentationEncodingTest 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) {