Ejemplo n.º 1
0
// TODO String/TLV format
lwm2m_resource *parse_resource(lwm2m_object *object, int resource_id, char *message, int message_len) {
    lwm2m_resource *resource = create_resource(object, resource_id);
    if (resource->multiple) {
        resource->instances = parse_multiple_resource(object, resource_id, message, message_len);
    } else {
        lwm2m_value value = parse_value_text(message, message_len, resource->type);
        __set_value(resource, &value, message_len);
    }
    return resource;
}
Ejemplo n.º 2
0
// TODO in multiple resource map there should be map <ID, lwm2m_resource*>
list *parse_multiple_resource(lwm2m_object *object, int resource_id, char *message, int message_len) {
    list *resources = list_new();
    tlv_header resource_header;

    char *curr = message;
    while (curr < message + message_len) {
        curr = parse_tlv_header(curr, &resource_header);

        lwm2m_resource *resource_instance = create_resource(object, resource_id);
        resource_instance->id = resource_header.id;
        lwm2m_value value = parse_value(curr, resource_header.length, resource_instance->type);
        __set_value(resource_instance, &value, resource_header.length);

        ladd(resources, resource_instance->id, resource_instance);
        curr = curr + resource_header.length;
    }
    return resources;
}
Ejemplo n.º 3
0
/** Returns map of resources **/
list *parse_instance(lwm2m_object *object, char *message, int message_len) {
    list *resources = list_new();
    tlv_header resource_header;
    
    char *curr = message;
    while (curr < message + message_len) {
        curr = parse_tlv_header(curr, &resource_header);

        lwm2m_resource *resource = create_resource(object, resource_header.id);

        if (resource_header.type == MULTIPLE_RESOURCE_TYPE) {
            resource->instances = parse_multiple_resource(object, resource->id, curr, resource_header.length);
            resource->multiple = true;
        } else {
            lwm2m_value value = parse_value(curr, resource_header.length, resource->type);
            __set_value(resource, &value, resource_header.length);
        }
        ladd(resources, resource->id, resource);
        curr = curr + resource_header.length;
    }
    return resources;    
}
static void
__midgard_query_property_set_property (GObject *object, guint property_id,
		const GValue *value, GParamSpec *pspec)
{
	MidgardQueryProperty *self = (MidgardQueryProperty *) (object);

	switch (property_id) {

		case MIDGARD_QUERY_PROPERTY_PROPNAME:
			__set_value (MIDGARD_QUERY_HOLDER (object), (GValue *)value);
			break;

		case MIDGARD_QUERY_PROPERTY_STORAGE:
			if (self->priv->storage)
				g_object_unref (self->priv->storage);
			self->priv->storage = g_value_dup_object (value);
			break;

  		default:
			G_OBJECT_WARN_INVALID_PROPERTY_ID (self, property_id, pspec);
			break;
	}
}