You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ma...@apache.org on 2017/03/26 23:43:29 UTC
[1/3] incubator-mynewt-core git commit: net/oic;
when deleting resource, remove it from oc_app_resources list.
Repository: incubator-mynewt-core
Updated Branches:
refs/heads/develop cebfd2e3e -> 133a628fd
net/oic; when deleting resource, remove it from oc_app_resources
list.
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/0df95ce1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/0df95ce1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/0df95ce1
Branch: refs/heads/develop
Commit: 0df95ce1f7734aed927b68f7df7dcf1edd7ba603
Parents: cebfd2e
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Sun Mar 26 16:22:52 2017 -0700
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Sun Mar 26 16:22:52 2017 -0700
----------------------------------------------------------------------
net/oic/src/api/oc_ri.c | 8 ++++++++
1 file changed, 8 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/0df95ce1/net/oic/src/api/oc_ri.c
----------------------------------------------------------------------
diff --git a/net/oic/src/api/oc_ri.c b/net/oic/src/api/oc_ri.c
index d6180a6..d5779e5 100644
--- a/net/oic/src/api/oc_ri.c
+++ b/net/oic/src/api/oc_ri.c
@@ -251,6 +251,14 @@ oc_ri_alloc_resource(void)
void
oc_ri_delete_resource(oc_resource_t *resource)
{
+ oc_resource_t *tmp;
+
+ SLIST_FOREACH(tmp, &oc_app_resources, next) {
+ if (tmp == resource) {
+ SLIST_REMOVE(&oc_app_resources, tmp, oc_resource, next);
+ break;
+ }
+ }
os_memblock_put(&oc_resource_pool, resource);
}
[3/3] incubator-mynewt-core git commit: net/oic;
add a testcase for basic observe.
Posted by ma...@apache.org.
net/oic; add a testcase for basic observe.
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/133a628f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/133a628f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/133a628f
Branch: refs/heads/develop
Commit: 133a628fd0ebff170beb53703af388476dcf1d29
Parents: 4393af4
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Sun Mar 26 16:43:03 2017 -0700
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Sun Mar 26 16:43:03 2017 -0700
----------------------------------------------------------------------
net/oic/test/src/test_discovery.c | 17 +--
net/oic/test/src/test_getset.c | 24 ++--
net/oic/test/src/test_observe.c | 171 ++++++++++++++++++++++++++++
net/oic/test/src/test_oic.h | 1 +
net/oic/test/src/testcases/oic_tests.c | 11 +-
5 files changed, 201 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/133a628f/net/oic/test/src/test_discovery.c
----------------------------------------------------------------------
diff --git a/net/oic/test/src/test_discovery.c b/net/oic/test/src/test_discovery.c
index 4722a1e..c9e1cfd 100644
--- a/net/oic/test/src/test_discovery.c
+++ b/net/oic/test/src/test_discovery.c
@@ -23,6 +23,7 @@
static int test_discovery_state;
static volatile int test_discovery_done;
+static struct oc_resource *test_res_light;
static void test_discovery_next_step(struct os_event *);
static struct os_event test_discovery_next_ev = {
@@ -121,15 +122,16 @@ test_discovery_next_step(struct os_event *ev)
oic_test_reset_tmo("2nd discovery");
break;
case 3: {
- oc_resource_t *res = oc_new_resource("/light/test", 1, 0);
+ test_res_light = oc_new_resource("/light/test", 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_bind_resource_type(test_res_light, "oic.r.light");
+ oc_resource_bind_resource_interface(test_res_light, OC_IF_RW);
+ oc_resource_set_default_interface(test_res_light, OC_IF_RW);
- oc_resource_set_discoverable(res);
- oc_resource_set_request_handler(res, OC_GET, test_discovery_get);
- oc_add_resource(res);
+ oc_resource_set_discoverable(test_res_light);
+ oc_resource_set_request_handler(test_res_light, OC_GET,
+ test_discovery_get);
+ oc_add_resource(test_res_light);
oc_do_ip_discovery(NULL, test_discovery_cb);
oic_test_reset_tmo("3rd discovery");
break;
@@ -148,6 +150,7 @@ test_discovery(void)
while (!test_discovery_done) {
os_eventq_run(&oic_tapp_evq);
}
+ oc_delete_resource(test_res_light);
}
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/133a628f/net/oic/test/src/test_getset.c
----------------------------------------------------------------------
diff --git a/net/oic/test/src/test_getset.c b/net/oic/test/src/test_getset.c
index 73e6c60..ff59657 100644
--- a/net/oic/test/src/test_getset.c
+++ b/net/oic/test/src/test_getset.c
@@ -23,6 +23,7 @@
static int test_getset_state;
static volatile int test_getset_done;
+static struct oc_resource *test_res_getset;
static void test_getset_next_step(struct os_event *);
static struct os_event test_getset_next_ev = {
@@ -80,20 +81,19 @@ test_getset_next_step(struct os_event *ev)
test_getset_state++;
switch (test_getset_state) {
- case 1: {
- oc_resource_t *res;
-
- res = oc_new_resource("/getset", 1, 0);
- TEST_ASSERT_FATAL(res);
+ case 1:
+ test_res_getset = oc_new_resource("/getset", 1, 0);
+ TEST_ASSERT_FATAL(test_res_getset);
- oc_resource_bind_resource_interface(res, OC_IF_RW);
- oc_resource_set_default_interface(res, OC_IF_RW);
+ oc_resource_bind_resource_interface(test_res_getset, OC_IF_RW);
+ oc_resource_set_default_interface(test_res_getset, OC_IF_RW);
- oc_resource_set_request_handler(res, OC_GET, test_getset_get);
- oc_resource_set_request_handler(res, OC_PUT, test_getset_put);
- b_rc = oc_add_resource(res);
+ oc_resource_set_request_handler(test_res_getset, OC_GET,
+ test_getset_get);
+ oc_resource_set_request_handler(test_res_getset, OC_PUT,
+ test_getset_put);
+ b_rc = oc_add_resource(test_res_getset);
TEST_ASSERT(b_rc == true);
- }
/* fall-through */
case 2:
case 3:
@@ -121,7 +121,7 @@ test_getset(void)
while (!test_getset_done) {
os_eventq_run(&oic_tapp_evq);
}
- oc_main_shutdown();
+ oc_delete_resource(test_res_getset);
}
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/133a628f/net/oic/test/src/test_observe.c
----------------------------------------------------------------------
diff --git a/net/oic/test/src/test_observe.c b/net/oic/test/src/test_observe.c
new file mode 100644
index 0000000..155e84a
--- /dev/null
+++ b/net/oic/test/src/test_observe.c
@@ -0,0 +1,171 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+#include "test_oic.h"
+
+#include <os/os.h>
+#include <oic/oc_api.h>
+
+#include <cborattr/cborattr.h>
+
+#include <oic/../../src/messaging/coap/observe.h>
+
+static int test_observe_state;
+static volatile int test_observe_done;
+static struct oc_resource *test_res_observe;
+
+static void test_observe_next_step(struct os_event *);
+static struct os_event test_observe_next_ev = {
+ .ev_cb = test_observe_next_step
+};
+
+static void
+test_observe_get(struct oc_request *request, oc_interface_mask_t interface)
+{
+ oc_rep_start_root_object();
+ switch (interface) {
+ case OC_IF_BASELINE:
+ oc_process_baseline_interface(request->resource);
+ case OC_IF_R:
+ switch (test_observe_state) {
+ case 1:
+ case 2:
+ /* initial get request */
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ oc_rep_set_int(root, value, test_observe_state);
+ break;
+ default:
+ break;
+ }
+ default:
+ break;
+ }
+ oc_rep_end_root_object();
+ oc_send_response(request, OC_STATUS_OK);
+}
+
+static void
+test_observe_rsp(struct oc_client_response *rsp)
+{
+ long long rsp_value;
+ struct cbor_attr_t attrs[] = {
+ [0] = {
+ .attribute = "state",
+ .type = CborAttrIntegerType,
+ .addr.integer = &rsp_value,
+ .dflt.integer = 0
+ },
+ [1] = {
+ }
+ };
+ struct os_mbuf *m;
+ uint16_t data_off;
+ int len;
+
+ switch (test_observe_state) {
+ case 1:
+ TEST_ASSERT(rsp->code == OC_STATUS_NOT_FOUND);
+ break;
+ case 2:
+ case 3:
+ case 4:
+ TEST_ASSERT(rsp->code == OC_STATUS_OK);
+ len = coap_get_payload(rsp->packet, &m, &data_off);
+ if (cbor_read_mbuf_attrs(m, data_off, len, attrs)) {
+ TEST_ASSERT(rsp_value == test_observe_state);
+ }
+ break;
+ default:
+ break;
+ }
+ os_eventq_put(&oic_tapp_evq, &test_observe_next_ev);
+}
+
+static void
+test_observe_next_step(struct os_event *ev)
+{
+ bool b_rc;
+ int rc;
+ struct oc_server_handle server;
+
+ test_observe_state++;
+ switch (test_observe_state) {
+ case 1:
+ test_res_observe = oc_new_resource("/observe", 1, 0);
+ TEST_ASSERT_FATAL(test_res_observe);
+
+ oc_resource_bind_resource_interface(test_res_observe, OC_IF_R);
+ oc_resource_set_default_interface(test_res_observe, OC_IF_R);
+ oc_resource_set_observable(test_res_observe);
+
+ oc_resource_set_request_handler(test_res_observe, OC_GET,
+ test_observe_get);
+ b_rc = oc_add_resource(test_res_observe);
+ TEST_ASSERT(b_rc == true);
+
+ /*
+ * Observe nonexistent URI
+ */
+ oic_test_get_endpoint(&server);
+ b_rc = oc_do_observe("/observe_wrong", &server, NULL, test_observe_rsp,
+ LOW_QOS);
+ TEST_ASSERT_FATAL(b_rc == true);
+
+ oic_test_reset_tmo("observe1");
+ break;
+ case 2:
+ oic_test_get_endpoint(&server);
+ b_rc = oc_do_observe("/observe", &server, NULL, test_observe_rsp,
+ LOW_QOS);
+ TEST_ASSERT_FATAL(b_rc == true);
+
+ oic_test_reset_tmo("observe2");
+ break;
+ case 3:
+ case 4:
+ /*
+ * Valid notifications
+ */
+ rc = oc_notify_observers(test_res_observe);
+ TEST_ASSERT(rc == 1); /* one observer */
+ oic_test_reset_tmo("observe3-4");
+ break;
+ case 5:
+ test_observe_done = 1;
+ break;
+ default:
+ TEST_ASSERT_FATAL(0);
+ break;
+ }
+}
+
+void
+test_observe(void)
+{
+ os_eventq_put(&oic_tapp_evq, &test_observe_next_ev);
+
+ while (!test_observe_done) {
+ os_eventq_run(&oic_tapp_evq);
+ }
+ oc_delete_resource(test_res_observe);
+}
+
+
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/133a628f/net/oic/test/src/test_oic.h
----------------------------------------------------------------------
diff --git a/net/oic/test/src/test_oic.h b/net/oic/test/src/test_oic.h
index 5aef7b7..d247226 100644
--- a/net/oic/test/src/test_oic.h
+++ b/net/oic/test/src/test_oic.h
@@ -42,6 +42,7 @@ void oic_test_get_endpoint(struct oc_server_handle *);
void test_discovery(void);
void test_getset(void);
+void test_observe(void);
#ifdef __cplusplus
}
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/133a628f/net/oic/test/src/testcases/oic_tests.c
----------------------------------------------------------------------
diff --git a/net/oic/test/src/testcases/oic_tests.c b/net/oic/test/src/testcases/oic_tests.c
index cacd731..aefdb3e 100644
--- a/net/oic/test/src/testcases/oic_tests.c
+++ b/net/oic/test/src/testcases/oic_tests.c
@@ -24,7 +24,7 @@
#include <mn_socket/mn_socket.h>
#define OIC_TAPP_PRIO 9
-#define OIC_TAPP_STACK_SIZE 1024
+#define OIC_TAPP_STACK_SIZE OS_STACK_ALIGN(1024)
/*
* How long to wait before declaring discovery process failure.
@@ -33,7 +33,7 @@
static struct os_task oic_tapp;
static const char *oic_test_phase;
-static os_stack_t oic_tapp_stack[OS_STACK_ALIGN(OIC_TAPP_STACK_SIZE)];
+static os_stack_t oic_tapp_stack[OIC_TAPP_STACK_SIZE];
struct os_eventq oic_tapp_evq;
static struct os_callout oic_test_timer;
static struct oc_server_handle oic_tgt;
@@ -41,7 +41,8 @@ static struct oc_server_handle oic_tgt;
static void
oic_test_timer_cb(struct os_event *ev)
{
- TEST_ASSERT_FATAL(0, "test_phase: %s\n", oic_test_phase ? oic_test_phase : "unknwn");
+ TEST_ASSERT_FATAL(0, "test_phase: %s\n",
+ oic_test_phase ? oic_test_phase : "unknwn");
}
void
@@ -85,6 +86,8 @@ oic_test_handler(void *arg)
oc_main_init(&test_handler);
test_discovery();
test_getset();
+ test_observe();
+ oc_main_shutdown();
tu_restart();
}
@@ -102,7 +105,7 @@ oic_test_init(void)
rc = os_task_init(&oic_tapp, "oic_test", oic_test_handler, NULL,
OIC_TAPP_PRIO, OS_WAIT_FOREVER,
- oic_tapp_stack, OS_STACK_ALIGN(OIC_TAPP_STACK_SIZE));
+ oic_tapp_stack, OIC_TAPP_STACK_SIZE);
TEST_ASSERT_FATAL(rc == 0);
oc_evq_set(&oic_tapp_evq);
[2/3] incubator-mynewt-core git commit: net/oic;
oc_endpoint size is different depending on transport type. Take this
into account when comparing them.
Posted by ma...@apache.org.
net/oic; oc_endpoint size is different depending on transport type.
Take this into account when comparing them.
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/4393af41
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/4393af41
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/4393af41
Branch: refs/heads/develop
Commit: 4393af41e3938601972ffe8be7e859c67cf57785
Parents: 0df95ce
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Sun Mar 26 16:41:44 2017 -0700
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Sun Mar 26 16:41:44 2017 -0700
----------------------------------------------------------------------
net/oic/src/api/oc_ri.c | 2 +-
net/oic/src/messaging/coap/observe.c | 14 ++++++++------
net/oic/src/port/oc_connectivity.h | 14 ++++++++++++++
net/oic/src/security/oc_dtls.c | 2 +-
4 files changed, 24 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/4393af41/net/oic/src/api/oc_ri.c
----------------------------------------------------------------------
diff --git a/net/oic/src/api/oc_ri.c b/net/oic/src/api/oc_ri.c
index d5779e5..c03458b 100644
--- a/net/oic/src/api/oc_ri.c
+++ b/net/oic/src/api/oc_ri.c
@@ -809,7 +809,7 @@ oc_ri_get_client_cb(const char *uri, oc_server_handle_t *server,
if (oc_string_len(cb->uri) == strlen(uri) &&
strncmp(oc_string(cb->uri), uri, strlen(uri)) == 0 &&
memcmp(&cb->server.endpoint, &server->endpoint,
- sizeof(oc_endpoint_t)) == 0 &&
+ oc_endpoint_size(&cb->server.endpoint)) == 0 &&
cb->method == method) {
return cb;
}
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/4393af41/net/oic/src/messaging/coap/observe.c
----------------------------------------------------------------------
diff --git a/net/oic/src/messaging/coap/observe.c b/net/oic/src/messaging/coap/observe.c
index 3d45e03..4369360 100644
--- a/net/oic/src/messaging/coap/observe.c
+++ b/net/oic/src/messaging/coap/observe.c
@@ -111,7 +111,7 @@ coap_remove_observer_by_client(oc_endpoint_t *endpoint)
obs = SLIST_FIRST(&oc_observers);
while (obs) {
next = SLIST_NEXT(obs, next);
- if (memcmp(&obs->endpoint, endpoint, sizeof(oc_endpoint_t)) == 0) {
+ if (memcmp(&obs->endpoint, endpoint, oc_endpoint_size(endpoint)) == 0) {
obs->resource->num_observers--;
coap_remove_observer(obs);
removed++;
@@ -131,7 +131,7 @@ coap_remove_observer_by_token(oc_endpoint_t *endpoint, uint8_t *token,
obs = SLIST_FIRST(&oc_observers);
while (obs) {
next = SLIST_NEXT(obs, next);
- if (memcmp(&obs->endpoint, endpoint, sizeof(oc_endpoint_t)) == 0 &&
+ if (memcmp(&obs->endpoint, endpoint, oc_endpoint_size(endpoint)) == 0 &&
obs->token_len == token_len &&
memcmp(obs->token, token, token_len) == 0) {
obs->resource->num_observers--;
@@ -153,7 +153,8 @@ coap_remove_observer_by_uri(oc_endpoint_t *endpoint, const char *uri)
obs = SLIST_FIRST(&oc_observers);
while (obs) {
next = SLIST_NEXT(obs, next);
- if (((memcmp(&obs->endpoint, endpoint, sizeof(oc_endpoint_t)) == 0)) &&
+ if (((memcmp(&obs->endpoint, endpoint,
+ oc_endpoint_size(endpoint)) == 0)) &&
(obs->url == uri || memcmp(obs->url, uri, strlen(obs->url)) == 0)) {
obs->resource->num_observers--;
coap_remove_observer(obs);
@@ -173,7 +174,7 @@ coap_remove_observer_by_mid(oc_endpoint_t *endpoint, uint16_t mid)
obs = SLIST_FIRST(&oc_observers);
while (obs) {
next = SLIST_NEXT(obs, next);
- if (memcmp(&obs->endpoint, endpoint, sizeof(*endpoint)) == 0 &&
+ if (memcmp(&obs->endpoint, endpoint, oc_endpoint_size(endpoint)) == 0 &&
obs->last_mid == mid) {
obs->resource->num_observers--;
coap_remove_observer(obs);
@@ -233,8 +234,9 @@ coap_notify_observers(oc_resource_t *resource,
/* iterate over observers */
for (obs = SLIST_FIRST(&oc_observers); obs; obs = SLIST_NEXT(obs, next)) {
/* skip if neither resource nor endpoint match */
- if (resource != obs->resource &&
- 0 != memcmp(&obs->endpoint, endpoint, sizeof(oc_endpoint_t))) {
+ if ((resource && resource != obs->resource) ||
+ (endpoint && memcmp(&obs->endpoint, endpoint,
+ oc_endpoint_size(endpoint)) != 0)) {
continue;
}
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/4393af41/net/oic/src/port/oc_connectivity.h
----------------------------------------------------------------------
diff --git a/net/oic/src/port/oc_connectivity.h b/net/oic/src/port/oc_connectivity.h
index a7cce39..787fbf2 100644
--- a/net/oic/src/port/oc_connectivity.h
+++ b/net/oic/src/port/oc_connectivity.h
@@ -83,6 +83,20 @@ typedef struct oc_endpoint {
};
} oc_endpoint_t;
+static inline int
+oc_endpoint_size(struct oc_endpoint *oe)
+{
+ if (oe->oe.flags & (IP | IP4)) {
+ return sizeof (struct oc_endpoint_ip);
+ } else if (oe->oe.flags & GATT) {
+ return sizeof (struct oc_endpoint_ble);
+ } else if (oe->oe.flags & SERIAL) {
+ return sizeof (struct oc_endpoint_plain);
+ } else {
+ return sizeof (struct oc_endpoint);
+ }
+}
+
#define OC_MBUF_ENDPOINT(m) \
((struct oc_endpoint *)((uint8_t *)m + sizeof(struct os_mbuf) + \
sizeof(struct os_mbuf_pkthdr)))
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/4393af41/net/oic/src/security/oc_dtls.c
----------------------------------------------------------------------
diff --git a/net/oic/src/security/oc_dtls.c b/net/oic/src/security/oc_dtls.c
index fdd0249..a904d79 100644
--- a/net/oic/src/security/oc_dtls.c
+++ b/net/oic/src/security/oc_dtls.c
@@ -37,7 +37,7 @@ oc_sec_dtls_get_peer(oc_endpoint_t *endpoint)
{
oc_sec_dtls_peer_t *peer = oc_list_head(dtls_peers);
while (peer != NULL) {
- if (memcmp(&peer->session.addr, endpoint, sizeof(oc_endpoint_t)) == 0)
+ if (memcmp(&peer->session.addr, endpoint, oc_endpoint_size(endpoint)) == 0)
break;
peer = oc_list_item_next(peer);
}