Removes enclosing array, href and rep from the device payload.
It changes structure from
[{
href: "",
rep: {
device payload
}
}]
to
{
device payload
}
Change-Id: I374d3c1e6dca24a0ae97f56ac0c5e40d3cbf09e0
Signed-off-by: Habib Virji <habib.virji@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/4435
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
void OCDiscoveryPayloadDestroy(OCDiscoveryPayload* payload);
// Device Payload
-OCDevicePayload* OCDevicePayloadCreate(const char* uri, const uint8_t* sid, const char* dname,
+OCDevicePayload* OCDevicePayloadCreate(const uint8_t* sid, const char* dname,
const char* specVer, const char* dmVer);
void OCDevicePayloadDestroy(OCDevicePayload* payload);
typedef struct
{
OCPayload base;
- char* uri;
uint8_t* sid;
char* deviceName;
char* specVersion;
static inline void OCPayloadLogDevice(LogLevel level, OCDevicePayload* payload)
{
OC_LOG(level, PL_TAG, "Payload Type: Device");
- OC_LOG_V(level, PL_TAG, "\tURI:%s", payload->uri);
OC_LOG(level, PL_TAG, "\tSID:");
OC_LOG_BUFFER(level, PL_TAG, payload->sid, UUID_SIZE);
OC_LOG_V(level, PL_TAG, "\tDevice Name:%s", payload->deviceName);
OICFree(payload);
}
-OCDevicePayload* OCDevicePayloadCreate(const char* uri, const uint8_t* sid, const char* dname,
+OCDevicePayload* OCDevicePayloadCreate(const uint8_t* sid, const char* dname,
const char* specVer, const char* dmVer)
{
payload->base.type = PAYLOAD_TYPE_DEVICE;
- payload->uri = OICStrdup(uri);
- if(uri && !payload->uri)
- {
- goto exit;
- }
-
if(sid)
{
payload->sid = (uint8_t*)OICMalloc(UUID_SIZE);
return;
}
- OICFree(payload->uri);
OICFree(payload->sid);
OICFree(payload->deviceName);
OICFree(payload->specVersion);
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);
-
- // uri
- err = err | ConditionalAddTextStringToMap(&map, OC_RSRVD_HREF, sizeof(OC_RSRVD_HREF) - 1,
- payload->uri);
-
- // Rep Map
- {
- CborEncoder repMap;
- err = err | cbor_encode_text_string(&map, OC_RSRVD_REPRESENTATION,
- sizeof(OC_RSRVD_REPRESENTATION) - 1);
- err = err | cbor_encoder_create_map(&map, &repMap, CborIndefiniteLength);
-
- // Device ID
- err = err | cbor_encode_text_string(&repMap, OC_RSRVD_DEVICE_ID,
- sizeof(OC_RSRVD_DEVICE_ID) - 1);
- err = err | cbor_encode_byte_string(&repMap, payload->sid, UUID_SIZE);
-
- // Device Name
- err = err | ConditionalAddTextStringToMap(&repMap, OC_RSRVD_DEVICE_NAME,
- sizeof(OC_RSRVD_DEVICE_NAME) - 1,
- payload->deviceName);
+ CborEncoder repMap;
+ err = err | cbor_encoder_create_map(&encoder, &repMap, CborIndefiniteLength);
- // Device Spec Version
- err = err | ConditionalAddTextStringToMap(&repMap, OC_RSRVD_SPEC_VERSION,
- sizeof(OC_RSRVD_SPEC_VERSION) - 1,
- payload->specVersion);
+ // Device ID
+ err = err | cbor_encode_text_string(&repMap, OC_RSRVD_DEVICE_ID,
+ sizeof(OC_RSRVD_DEVICE_ID) - 1);
+ err = err | cbor_encode_byte_string(&repMap, payload->sid, UUID_SIZE);
- // Device data Model Version
- err = err | ConditionalAddTextStringToMap(&repMap, OC_RSRVD_DATA_MODEL_VERSION,
- sizeof(OC_RSRVD_DATA_MODEL_VERSION) - 1,
- payload->dataModelVersion);
+ // Device Name
+ err = err | ConditionalAddTextStringToMap(&repMap, OC_RSRVD_DEVICE_NAME,
+ sizeof(OC_RSRVD_DEVICE_NAME) - 1,
+ payload->deviceName);
- err = err | cbor_encoder_close_container(&map, &repMap);
- }
+ // Device Spec Version
+ err = err | ConditionalAddTextStringToMap(&repMap, OC_RSRVD_SPEC_VERSION,
+ sizeof(OC_RSRVD_SPEC_VERSION) - 1,
+ payload->specVersion);
- // Close Map
- err = err | cbor_encoder_close_container(&rootArray, &map);
- }
+ // Device data Model Version
+ err = err | ConditionalAddTextStringToMap(&repMap, OC_RSRVD_DATA_MODEL_VERSION,
+ sizeof(OC_RSRVD_DATA_MODEL_VERSION) - 1,
+ payload->dataModelVersion);
- // Close main array
- err = err | cbor_encoder_close_container(&encoder, &rootArray);
+ err = err | cbor_encoder_close_container(&encoder, &repMap);
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))
{
- char* uri = NULL;
uint8_t* sid = NULL;
char* dname = NULL;
char* specVer = NULL;
char* dmVer = NULL;
- CborValue curVal;
- err = err || cbor_value_map_find_value(&arrayVal, OC_RSRVD_HREF, &curVal);
- size_t len;
- err = err || cbor_value_dup_text_string(&curVal, &uri, &len, NULL);
- // Representation
+ CborValue repVal;
+ // Device ID
+ err = err || cbor_value_map_find_value(rootValue, OC_RSRVD_DEVICE_ID, &repVal);
+ size_t len;
+ if(cbor_value_is_valid(&repVal))
{
- err = err || cbor_value_map_find_value(&arrayVal, OC_RSRVD_REPRESENTATION, &curVal);
-
- CborValue repVal;
- // Device ID
- err = err || cbor_value_map_find_value(&curVal, OC_RSRVD_DEVICE_ID, &repVal);
- if(cbor_value_is_valid(&repVal))
- {
- err = err || cbor_value_dup_byte_string(&repVal, &sid, &len, NULL);
- }
- // Device Name
- err = err || cbor_value_map_find_value(&curVal, OC_RSRVD_DEVICE_NAME, &repVal);
- if(cbor_value_is_valid(&repVal))
- {
- err = err || cbor_value_dup_text_string(&repVal, &dname, &len, NULL);
- }
- // Device Spec Version
- err = err || cbor_value_map_find_value(&curVal, OC_RSRVD_SPEC_VERSION, &repVal);
- if(cbor_value_is_valid(&repVal))
- {
- err = err || cbor_value_dup_text_string(&repVal, &specVer, &len, NULL);
- }
+ err = err || cbor_value_dup_byte_string(&repVal, &sid, &len, NULL);
+ }
+ // Device Name
+ err = err || cbor_value_map_find_value(rootValue, OC_RSRVD_DEVICE_NAME, &repVal);
+ if(cbor_value_is_valid(&repVal))
+ {
+ err = err || cbor_value_dup_text_string(&repVal, &dname, &len, NULL);
+ }
+ // Device Spec Version
+ err = err || cbor_value_map_find_value(rootValue, OC_RSRVD_SPEC_VERSION, &repVal);
+ if(cbor_value_is_valid(&repVal))
+ {
+ err = err || cbor_value_dup_text_string(&repVal, &specVer, &len, NULL);
+ }
- // Data Model Version
- err = err || cbor_value_map_find_value(&curVal, OC_RSRVD_DATA_MODEL_VERSION, &repVal);
- if (cbor_value_is_valid(&repVal))
- {
- err = err || cbor_value_dup_text_string(&repVal, &dmVer, &len, NULL);
- }
+ // Data Model Version
+ err = err || cbor_value_map_find_value(rootValue, OC_RSRVD_DATA_MODEL_VERSION, &repVal);
+ if (cbor_value_is_valid(&repVal))
+ {
+ err = err || cbor_value_dup_text_string(&repVal, &dmVer, &len, NULL);
}
- err = err || cbor_value_advance(&arrayVal);
- err = err || cbor_value_leave_container(rootValue, &arrayVal);
+ err = err || cbor_value_advance(rootValue);
if(err)
{
- OICFree(uri);
OICFree(sid);
OICFree(dname);
OICFree(specVer);
return OC_STACK_MALFORMED_RESPONSE;
}
- *outPayload = (OCPayload*)OCDevicePayloadCreate(uri, sid, dname, specVer, dmVer);
+ *outPayload = (OCPayload*)OCDevicePayloadCreate(sid, dname, specVer, dmVer);
- OICFree(uri);
OICFree(sid);
OICFree(dname);
OICFree(specVer);
}
else
{
- payload = (OCPayload*) OCDevicePayloadCreate(OC_RSRVD_DEVICE_URI,
- (const uint8_t*) &deviceId->id, savedDeviceInfo.deviceName,
+ payload = (OCPayload*) OCDevicePayloadCreate((const uint8_t*) &deviceId->id, savedDeviceInfo.deviceName,
OC_SPEC_VERSION, OC_DATA_MODEL_VERSION);
if (!payload)
{
void MessageContainer::setPayload(const OCDevicePayload* payload)
{
OCRepresentation rep;
- rep.setUri(payload->uri);
char uuidString[UUID_STRING_SIZE];
if(payload->sid && RAND_UUID_OK == OCConvertUuidToString(payload->sid, uuidString))
{
// CBOR->OCPayload and OCPayload->OCRepresentation conversions
namespace OCRepresentationEncodingTest
{
-
- static const char uri1[] = "/testuri";
static const uint8_t sid1[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
static const char devicename1[] = "device name";
static const char specver1[] = "spec version";
TEST(DeviceDiscoveryEncoding, Normal)
{
OCDevicePayload* device = OCDevicePayloadCreate(
- uri1,
sid1,
devicename1,
specver1,
dmver1);
- EXPECT_STREQ(uri1, device->uri);
EXPECT_STREQ(devicename1, device->deviceName);
EXPECT_STREQ(specver1, device->specVersion);
EXPECT_STREQ(dmver1, device->dataModelVersion);
cborData, cborSize));
OICFree(cborData);
- EXPECT_STREQ(device->uri, ((OCDevicePayload*)parsedDevice)->uri);
EXPECT_STREQ(device->deviceName, ((OCDevicePayload*)parsedDevice)->deviceName);
EXPECT_STREQ(device->specVersion, ((OCDevicePayload*)parsedDevice)->specVersion);
EXPECT_STREQ(device->dataModelVersion, ((OCDevicePayload*)parsedDevice)->dataModelVersion);
mc.setPayload(parsedDevice);
EXPECT_EQ(1u, mc.representations().size());
const OC::OCRepresentation& r = mc.representations()[0];
- EXPECT_STREQ(uri1, r.getUri().c_str());
EXPECT_STREQ(devicename1, r.getValue<std::string>(OC_RSRVD_DEVICE_NAME).c_str());
EXPECT_STREQ(specver1, r.getValue<std::string>(OC_RSRVD_SPEC_VERSION).c_str());
EXPECT_STREQ(dmver1, r.getValue<std::string>(OC_RSRVD_DATA_MODEL_VERSION).c_str());
-
OCPayloadDestroy(parsedDevice);
}
+ static const char uri1[] = "/testuri";
static char pfid1[] = "pfid";
static char mfgnm1[] = "mfgnm";
static char mfgurl1[] = "mfgurl";