modify "is_observable->properties", & remove tizen_info
[platform/core/iot/iotcon.git] / daemon / icd-payload.c
index 0dd2c0f..008b544 100644 (file)
@@ -26,6 +26,7 @@
 #include "ic-utils.h"
 #include "icd.h"
 #include "icd-ioty.h"
+#include "icd-ioty-type.h"
 #include "icd-payload.h"
 
 union icd_state_value_u {
@@ -55,7 +56,7 @@ GVariant** icd_payload_res_to_gvariant(OCPayload *payload, OCDevAddr *dev_addr)
        OCRandomUuidResult random_res;
        OCDiscoveryPayload *discovered;
        struct OCResourcePayload *resource;
-       int i, is_observable, ret, res_count;
+       int i, properties, ret, res_count;
        char device_id[UUID_STRING_SIZE] = {0};
 
        discovered = (OCDiscoveryPayload*)payload;
@@ -111,14 +112,16 @@ GVariant** icd_payload_res_to_gvariant(OCPayload *payload, OCDevAddr *dev_addr)
                        node = node->next;
                }
 
-               /* is_observable */
-               is_observable = resource->bitmap & OC_OBSERVABLE;
+               /* Resource Properties */
+               properties = icd_ioty_oic_properties_to_properties(resource->bitmap);
 
                /* port */
                port = (resource->port)? resource->port:dev_addr->port;
 
+               /* TODO
+                * Check "resource->secure" and "resource->bitmap" */
                value[i] = g_variant_new("(ssiasibsi)", resource->uri, device_id, ifaces, &types,
-                               is_observable, resource->secure, dev_addr->addr, port);
+                               properties, resource->secure, dev_addr->addr, port);
                DBG("found resource[%d] : %s", i, g_variant_print(value[i], FALSE));
 
                resource = resource->next;
@@ -594,14 +597,20 @@ static void _icd_state_value_from_gvariant(OCRepPayload *repr, GVariantIter *ite
                        else
                                OCRepPayloadSetPropString(repr, key, str_value);
 
+               } else if (g_variant_is_of_type(var, G_VARIANT_TYPE ("a{sv}"))) {
+                       GVariantIter state_iter;
+                       repr_value = OCRepPayloadCreate();
+                       g_variant_iter_init(&state_iter, var);
+                       _icd_state_value_from_gvariant(repr_value, &state_iter);
+                       OCRepPayloadSetPropObjectAsOwner(repr, key, repr_value);
+
                } else if (g_variant_is_of_type(var, G_VARIANT_TYPE_ARRAY)) {
                        memset(&value_list, 0, sizeof(struct icd_state_list_s));
                        _icd_state_list_from_gvariant(var, &value_list, 0);
                        _icd_state_array_from_list(repr, &value_list, key);
 
-               } else if (g_variant_is_of_type(var, G_VARIANT_TYPE("(siasa{sv}av)"))) {
-                       repr_value = icd_payload_representation_from_gvariant(var);
-                       OCRepPayloadSetPropObjectAsOwner(repr, key, repr_value);
+               } else {
+                       ERR("Invalid type(%s)", g_variant_get_type_string(var));
                }
        }