Hi Kishen,
I tried some more to follow your advice to separate to two logical resources
on the Arduino 101. And I used the client_linux on linux side to detect them.
--
static void
register_resources(void)
{
oc_resource_t *res = oc_new_resource("/a/light", 1, 0);
oc_resource_bind_resource_type(res, "oic.r.light");
oc_resource_bind_resource_interface(res, OC_IF_RW);
oc_resource_set_default_interface(res, OC_IF_RW);
oc_resource_set_discoverable(res, true);
oc_resource_set_periodic_observable(res, 1);
oc_resource_set_request_handler(res, OC_GET, get_light, NULL);
oc_resource_set_request_handler(res, OC_POST, post_light, NULL);
oc_resource_set_request_handler(res, OC_PUT, put_light, NULL);
oc_add_resource(res);
oc_resource_t *res2 = oc_new_resource("/a/temperature", 1, 0);
oc_resource_bind_resource_type(res2, "oic.r.temperature");
oc_resource_bind_resource_interface(res2, OC_IF_R);
oc_resource_set_default_interface(res2, OC_IF_R);
oc_resource_set_discoverable(res2, true);
oc_resource_set_periodic_observable(res2, 1);
oc_resource_set_request_handler(res2, OC_GET, get_temp, NULL);
oc_add_resource(res2);
}
--
However, it could only detect the first resource type, ?oic.r.light? in this
case.
If ?oic.r.temperature? was in the first place, it would be discovered. I tried
again
and confirmed that it only worked when adding multiple types to a single
resource,
like the code in the first email. That is, only the following gets discovered:
{
?
oc_resource_t *res = oc_new_resource("/a/light", 2, 0);
oc_resource_bind_resource_type(res, "oic.r.light");
oc_resource_bind_resource_type(res, "oic.r.temperature");
?
}
Thanks,
Kien
On 2017/04/07 11:14, "iotivity-dev-bounces at lists.iotivity.org on behalf of
Dinh, Kien T" <iotivity-dev-bounces at lists.iotivity.org on behalf of
kien.t.dinh at intel.com> wrote:
Hi Kishen,
Thank you for the reply and advices. You?re right. There seems to be a
problem
on the client side. We use a rest-api-server to monitor the OCF-resources.
It discovers the resources and registers itself as a client to observe the
changes. I used the client_linux to test and it could detect the resource
types
types on the Arduino 101.
Thanks,
Kien
On 2017/04/07 8:16, "Maloor, Kishen" <kishen.maloor at intel.com> wrote:
Hello Kien,
> I tweaked the ?apps/server_zephyr.c? as following to
> bind a new temperature type. However, I could only
> see the first one,
When you say ?you? could see, I assume you?re talking
about a client application :-) You should probably
revisit your client logic (not sure if you?re using
IoTivity or IoTivity-Constrained for that)
because if you bound two resource types to a resource
on the server in the manner you described, they should most
certainly show on your client during discovery.
By the way, I just quickly tried what you did on my
end (by updating client_linux), and could see the two.
> would like to map each sensor to a standard type so
> that the device can have multiple resource types at
> the same time
If you?re exposing two distinct physical resources,
you should probably be creating two separate logical resources
inside the register_resources() callback, one for each physical
resource. This way you could attach separate handlers to each.
> However, so far it seemed that iotivity-constrained
> only allowed binding to one.
?Binding? a logical resource to multiple resource
types (which the stack does support) is generally
different from what you?re trying to do.
You might want to bind multiple resource types when the
two resource types largely overlap in their data
models, or if may be one conveys the other in some way.
-
Kishen Maloor
Intel Open Source Technology Center
From: <iotivity-dev-bounces at lists.iotivity.org> on behalf of "Dinh,
Kien
T" <kien.t.dinh at intel.com>
Date: Wednesday, April 5, 2017 at 6:21 AM
To: "iotivity-dev at lists.iotivity.org" <iotivity-dev at
lists.iotivity.org>
Subject: [dev] iotivity-constrained: binding multiple types
Kien
_______________________________________________
iotivity-dev mailing list
iotivity-dev at lists.iotivity.org
https://lists.iotivity.org/mailman/listinfo/iotivity-dev