aboutsummaryrefslogtreecommitdiffstats
path: root/arduino/cores/nRF5/utility/SoftwareTimer.h
diff options
context:
space:
mode:
authorClyne Sullivan <tullivan99@gmail.com>2019-02-28 17:04:22 -0500
committerClyne Sullivan <tullivan99@gmail.com>2019-02-28 17:04:22 -0500
commitd6869d1ec4bd24cd2c3eafa534f0849b25ec5607 (patch)
tree79e54ed27b39c31864895535d11399708d5a45c0 /arduino/cores/nRF5/utility/SoftwareTimer.h
parent614ee97bf3a2270c413527a7f35c54cbecd9e601 (diff)
added basic code
Diffstat (limited to 'arduino/cores/nRF5/utility/SoftwareTimer.h')
-rwxr-xr-xarduino/cores/nRF5/utility/SoftwareTimer.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/arduino/cores/nRF5/utility/SoftwareTimer.h b/arduino/cores/nRF5/utility/SoftwareTimer.h
new file mode 100755
index 0000000..ac72443
--- /dev/null
+++ b/arduino/cores/nRF5/utility/SoftwareTimer.h
@@ -0,0 +1,73 @@
+/**************************************************************************/
+/*!
+ @file SoftwareTimer.h
+ @author hathach (tinyusb.org)
+
+ @section LICENSE
+
+ Software License Agreement (BSD License)
+
+ Copyright (c) 2018, 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 SOFTWARETIMER_H_
+#define SOFTWARETIMER_H_
+
+#include "Arduino.h"
+
+class SoftwareTimer
+{
+ private:
+ TimerHandle_t _handle;
+
+ public:
+ SoftwareTimer() { _handle = NULL; }
+ virtual ~SoftwareTimer() { if(_handle != NULL) xTimerDelete(_handle, 0); }
+
+ void begin(uint32_t ms, TimerCallbackFunction_t callback)
+ {
+ _handle = xTimerCreate(NULL, ms2tick(ms), true, NULL, callback);
+ }
+
+ TimerHandle_t getHandle(void)
+ {
+ return _handle;
+ }
+
+ void start(void) { xTimerStart(_handle, 0); }
+ void stop (void) { xTimerStop (_handle, 0); }
+
+ void setPeriod(uint32_t ms)
+ {
+ BaseType_t active = xTimerIsTimerActive(_handle);
+ xTimerChangePeriod(_handle, ms2tick(ms), 0);
+
+ // Change period of inactive timer will also start it !!
+ if ( !active ) xTimerStop(_handle, 0);
+ }
+};
+
+#endif /* SOFTWARETIMER_H_ */