Bluetooth UART support for the Adafruit BluefruitLE SPI, for the University of York Engineering Stage 1 project
Diff: utility/TimeoutTimer.h
- Revision:
- 0:a80552d32b80
- Child:
- 1:6ff0eee2da9c
diff -r 000000000000 -r a80552d32b80 utility/TimeoutTimer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/utility/TimeoutTimer.h Sat Feb 06 20:58:22 2021 +0000 @@ -0,0 +1,62 @@ +/**************************************************************************/ +/*! + @file TimeoutTimer.h + @author hathach + + @section LICENSE + + Software License Agreement (BSD License) + + Copyright (c) 2014, Adafruit Industries (adafruit.com) + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holders nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/**************************************************************************/ + +/** + * @{ + */ + +#ifndef _TIMEOUT_TIMER_H_ +#define _TIMEOUT_TIMER_H_ + +class TimeoutTimer +{ + private: + Timer timer; + chrono::milliseconds next, interval; + + public: + TimeoutTimer() { set(0); } + TimeoutTimer(uint32_t msec) { set(msec); } + + void set(uint32_t msec) { timer.reset(); next = msec * 1ms; interval = msec * 1ms; } + bool expired(void) const { return (timer.elapsed_time() >= next); } + void restart(void) { timer.reset(); next = interval; } + void reset(void) { next += interval; } // used for periodic invoke to prevent drift +}; + +#endif /* _TIMEOUT_TIMER_H_ */ + +/** @} */