Host library for controlling a WiConnect enabled Wi-Fi module.
Dependents: wiconnect-ota_example wiconnect-web_setup_example wiconnect-test-console wiconnect-tcp_server_example ... more
TimeoutTimer.cpp
00001 /** 00002 * ACKme WiConnect Host Library is licensed under the BSD licence: 00003 * 00004 * Copyright (c)2014 ACKme Networks. 00005 * All rights reserved. 00006 * 00007 * Redistribution and use in source and binary forms, with or without modification, 00008 * are permitted provided that the following conditions are met: 00009 * 00010 * 1. Redistributions of source code must retain the above copyright notice, 00011 * this list of conditions and the following disclaimer. 00012 * 2. Redistributions in binary form must reproduce the above copyright notice, 00013 * this list of conditions and the following disclaimer in the documentation 00014 * and/or other materials provided with the distribution. 00015 * 3. The name of the author may not be used to endorse or promote products 00016 * derived from this software without specific prior written permission. 00017 * 00018 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED 00019 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 00020 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 00021 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00022 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 00023 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00024 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 00025 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 00026 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 00027 * OF SUCH DAMAGE. 00028 */ 00029 00030 #include "Wiconnect.h" 00031 #include "us_ticker_api.h" 00032 00033 /*************************************************************************************************/ 00034 TimeoutTimer::TimeoutTimer() 00035 { 00036 _start = 0; 00037 us_ticker_init(); 00038 } 00039 00040 /*************************************************************************************************/ 00041 void TimeoutTimer::reset(void) 00042 { 00043 _start = us_ticker_read(); 00044 } 00045 00046 /*************************************************************************************************/ 00047 TimerTimeout TimeoutTimer::remainingMs(TimerTimeout timeoutMs) 00048 { 00049 volatile TimerTimeout diff = readMs(); 00050 return (timeoutMs > diff) ? (timeoutMs - diff) : 0; 00051 } 00052 00053 /*************************************************************************************************/ 00054 TimerTimeout TimeoutTimer::readMs() 00055 { 00056 volatile TimerTimeout now = us_ticker_read(); 00057 TimerTimeout remaining = (now > _start) ? (now - _start) : ((ULONG_MAX - _start) + now); 00058 return remaining / 1000; 00059 } 00060 00061 /*************************************************************************************************/ 00062 bool TimeoutTimer::timedOut(TimerTimeout timeoutMs) 00063 { 00064 volatile TimerTimeout now = us_ticker_read(); 00065 return ((now - _start) / 1000) > timeoutMs; 00066 }
Generated on Tue Jul 12 2022 17:35:58 by 1.7.2