mbed Connector Interface simplification API on top of mbed-client

Fork of mbedConnectorInterfaceV3 by Doug Anson

NOTE:

This repo has been replaced with https://github.com/ARMmbed/mbedConnectorInterface. No further updates will occur with this repo. Please use the github repo instead. Thanks!

Revision:
125:4bf229bf14a3
Child:
126:f37e34daa100
diff -r dfe65a93f26b -r 4bf229bf14a3 source/EventQueueResourceObserver.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/source/EventQueueResourceObserver.cpp	Thu Jul 13 19:21:28 2017 +0000
@@ -0,0 +1,71 @@
+/**
+ * @file    EventQueueResourceObserver.cpp
+ * @brief   mbed CoAP DynamicResource Thread-based observer (implementation)
+ * @author  Doug Anson/Chris Paola
+ * @version 1.0
+ * @see
+ *
+ * Copyright (c) 2017
+ *
+ * Licensed 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.
+ */
+ 
+ // Class support
+ #include "mbed-connector-interface/EventQueueResourceObserver.h"
+ 
+ #ifdef CONNECTOR_USING_EVENT_QUEUES
+ 
+ // constructor
+ EventQueueResourceObserver::EventQueueResourceObserver(DynamicResource *resource,int sleep_time) : ResourceObserver(resource,sleep_time), m_event_queue() {
+        // default is not observing...
+        this->setObserving(false);
+        
+        // DEBUG
+        this->logger()->log("EventQueueResourceObserver being used for %s (sleep_time: %d ms)",resource->getFullName().c_str(),sleep_time);
+        
+        // start the thread by invoking the thread task...
+        this->m_id = this->m_event_queue.call_every(sleep_time,callback(this,&EventQueueResourceObserver::observation_task));
+ }
+ 
+ // destructor
+ EventQueueResourceObserver::~EventQueueResourceObserver() {
+     this->stopObservation();
+     this->m_event_queue.cancel(this->m_id);
+ }
+ 
+ // observation task method
+ void EventQueueResourceObserver::observation_task() {
+     if (this->isObserving() == true && this->getResource() != NULL) {
+         DynamicResource *res = this->getResource();
+         if (res != NULL && res->isRegistered() == true) {
+             res->observe();
+         }
+     }
+ }
+
+ // begin observing...
+ void EventQueueResourceObserver::beginObservation() {
+     this->setObserving(true);
+ }
+ 
+ // stop observing...
+ void EventQueueResourceObserver::stopObservation() {
+     this->setObserving(false);
+ }
+ 
+ // halt the underlying observer mechanism
+ void EventQueueResourceObserver::halt() {
+     this->m_event_queue.cancel(this->m_id);
+ }
+ 
+ #endif // CONNECTOR_USING_EVENT_QUEUES
\ No newline at end of file