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 2016/11/22 01:17:13 UTC

[14/27] incubator-mynewt-core git commit: oic; use os_events to trigger oc_network_events handling.

oic; use os_events to trigger oc_network_events handling.


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/9f291c69
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/9f291c69
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/9f291c69

Branch: refs/heads/develop
Commit: 9f291c696f3dc3628bf0431379562d414684a809
Parents: 91419fd
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Thu Nov 17 12:46:25 2016 -0800
Committer: Marko Kiiskila <ma...@runtime.io>
Committed: Mon Nov 21 17:15:48 2016 -0800

----------------------------------------------------------------------
 net/oic/include/oic/oc_network_events.h |  2 --
 net/oic/src/api/oc_buffer.c             |  1 +
 net/oic/src/api/oc_network_events.c     | 44 +++++++++++++---------------
 net/oic/src/api/oc_ri.c                 |  2 --
 4 files changed, 22 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/9f291c69/net/oic/include/oic/oc_network_events.h
----------------------------------------------------------------------
diff --git a/net/oic/include/oic/oc_network_events.h b/net/oic/include/oic/oc_network_events.h
index d0f5d41..fb557c0 100644
--- a/net/oic/include/oic/oc_network_events.h
+++ b/net/oic/include/oic/oc_network_events.h
@@ -24,8 +24,6 @@
 extern "C" {
 #endif
 
-OC_PROCESS_NAME(oc_network_events);
-
 typedef struct oc_message_s oc_message_t;
 
 void oc_network_event(oc_message_t *message);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/9f291c69/net/oic/src/api/oc_buffer.c
----------------------------------------------------------------------
diff --git a/net/oic/src/api/oc_buffer.c b/net/oic/src/api/oc_buffer.c
index 4661529..f5bc70d 100644
--- a/net/oic/src/api/oc_buffer.c
+++ b/net/oic/src/api/oc_buffer.c
@@ -71,6 +71,7 @@ oc_recv_message(oc_message_t *message)
 {
   oc_process_post(&message_buffer_handler, oc_events[INBOUND_NETWORK_EVENT],
                   message);
+  oc_signal_main_loop();
 }
 
 void

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/9f291c69/net/oic/src/api/oc_network_events.c
----------------------------------------------------------------------
diff --git a/net/oic/src/api/oc_network_events.c b/net/oic/src/api/oc_network_events.c
index 2149bd3..a472d54 100644
--- a/net/oic/src/api/oc_network_events.c
+++ b/net/oic/src/api/oc_network_events.c
@@ -14,44 +14,42 @@
 // limitations under the License.
 */
 
+#include <os/os_eventq.h>
+
 #include "oc_network_events.h"
 #include "oc_buffer.h"
 #include "port/oc_connectivity.h"
 #include "port/oc_signal_main_loop.h"
+#include "port/mynewt/adaptor.h"
 #include "util/oc_list.h"
 
 OC_LIST(network_events);
+static void oc_network_ev_process(struct os_event *ev);
+static struct os_event oc_network_ev = {
+    .ev_cb = oc_network_ev_process
+};
 
 static void
-oc_process_network_event(void)
+oc_network_ev_process(struct os_event *ev)
 {
-  oc_network_event_handler_mutex_lock();
-  oc_message_t *head = (oc_message_t *)oc_list_pop(network_events);
-  while (head != NULL) {
-    oc_recv_message(head);
-    head = oc_list_pop(network_events);
-  }
-  oc_network_event_handler_mutex_unlock();
-}
+    struct oc_message_s *head;
 
-OC_PROCESS(oc_network_events, "");
-OC_PROCESS_THREAD(oc_network_events, ev, data)
-{
-  OC_PROCESS_POLLHANDLER(oc_process_network_event());
-  OC_PROCESS_BEGIN();
-  while (oc_process_is_running(&(oc_network_events))) {
-    OC_PROCESS_YIELD();
-  }
-  OC_PROCESS_END();
+    oc_network_event_handler_mutex_lock();
+    head = (struct oc_message_s *)oc_list_pop(network_events);
+    while (head != NULL) {
+        oc_recv_message(head);
+        head = oc_list_pop(network_events);
+    }
+    oc_network_event_handler_mutex_unlock();
 }
 
 void
 oc_network_event(oc_message_t *message)
 {
-  oc_network_event_handler_mutex_lock();
-  oc_list_add(network_events, message);
-  oc_network_event_handler_mutex_unlock();
+    oc_network_event_handler_mutex_lock();
+    oc_list_add(network_events, message);
+    oc_network_event_handler_mutex_unlock();
 
-  oc_process_poll(&(oc_network_events));
-  oc_signal_main_loop();
+    os_eventq_put(oc_evq_get(), &oc_network_ev);
+    oc_signal_main_loop();
 }

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/9f291c69/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 c3c2772..09d49f7 100644
--- a/net/oic/src/api/oc_ri.c
+++ b/net/oic/src/api/oc_ri.c
@@ -198,8 +198,6 @@ start_processes(void)
 #ifdef OC_SECURITY
   oc_process_start(&oc_dtls_handler, NULL);
 #endif
-
-  oc_process_start(&oc_network_events, NULL);
 }
 
 static void