custom for >5 resources
Fork of mbedConnectorInterface by
Diff: api/TickerResourceObserver.cpp
- Revision:
- 38:96d15287b6f9
- Child:
- 40:bb551b9f4522
diff -r 5de33aed0cac -r 96d15287b6f9 api/TickerResourceObserver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/api/TickerResourceObserver.cpp Sat Apr 11 17:20:56 2015 +0000 @@ -0,0 +1,57 @@ +/** + * @file TickerResourceObserver.cpp + * @brief mbed CoAP DynamicResource Ticker-based observer (implementation) + * @author Doug Anson/Chris Paola + * @version 1.0 + * @see + * + * Copyright (c) 2014 + * + * 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. + */ + + #include "TickerResourceObserver.h" + + // determines whether the mDS endpoint has been registered or not... + extern "C" bool nsdl_endpoint_is_registered(void); + + // constructor + TickerResourceObserver::TickerResourceObserver(DynamicResource *resource,uint8_t timer_id,int sleep_time) : + ResourceObserver(resource,(int)(sleep_time/1000)), m_ticker_active(false) { + } + + // destructor + TickerResourceObserver::~TickerResourceObserver() { + this->stopObservation(); + } + + // notifier + void TickerResourceObserver::observationNotifier() { + if (this->isObserving() == true && this->getResource() != NULL && nsdl_endpoint_is_registered() == true && this->m_ticker_active == true) { + std::printf("Calling observe()...\r\n"); + this->getResource()->observe(); + } + } + + // begin observing... + void TickerResourceObserver::beginObservation() { + if (this->m_ticker_active == false) { + this->m_ticker.attach(this,&TickerResourceObserver::observationNotifier,(float)this->getSleepTime()); + this->m_ticker_active = true; + } + } + + // begin observing... + void TickerResourceObserver::stopObservation() { + this->m_ticker_active = false; + } \ No newline at end of file