aboutsummaryrefslogtreecommitdiffstats
path: root/include/distortos/SoftwareTimerCommon.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/distortos/SoftwareTimerCommon.hpp')
-rw-r--r--include/distortos/SoftwareTimerCommon.hpp87
1 files changed, 87 insertions, 0 deletions
diff --git a/include/distortos/SoftwareTimerCommon.hpp b/include/distortos/SoftwareTimerCommon.hpp
new file mode 100644
index 0000000..636a264
--- /dev/null
+++ b/include/distortos/SoftwareTimerCommon.hpp
@@ -0,0 +1,87 @@
+/**
+ * \file
+ * \brief SoftwareTimerCommon class header
+ *
+ * \author Copyright (C) 2015 Kamil Szczygiel http://www.distortec.com http://www.freddiechopin.info
+ *
+ * \par License
+ * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not
+ * distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDE_DISTORTOS_SOFTWARETIMERCOMMON_HPP_
+#define INCLUDE_DISTORTOS_SOFTWARETIMERCOMMON_HPP_
+
+#include "distortos/SoftwareTimer.hpp"
+
+#include "distortos/internal/scheduler/SoftwareTimerControlBlock.hpp"
+
+namespace distortos
+{
+
+/**
+ * \brief SoftwareTimerCommon class implements common functionality of software timers
+ *
+ * \ingroup softwareTimers
+ */
+
+class SoftwareTimerCommon : public SoftwareTimer
+{
+public:
+
+ /**
+ * \brief SoftwareTimerCommon's constructor
+ */
+
+ constexpr SoftwareTimerCommon() :
+ softwareTimerControlBlock_{softwareTimerRunner, *this}
+ {
+
+ }
+
+ /**
+ * \brief SoftwareTimerCommon's destructor
+ */
+
+ ~SoftwareTimerCommon() override;
+
+ /**
+ * \return true if the timer is running, false otherwise
+ */
+
+ bool isRunning() const override;
+
+ /**
+ * \brief Starts the timer.
+ *
+ * \param [in] timePoint is the time point at which the function will be executed
+ *
+ * \return 0 on success, error code otherwise
+ */
+
+ int start(TickClock::time_point timePoint) override;
+
+ using SoftwareTimer::start;
+
+ /**
+ * \brief Stops the timer.
+ *
+ * \return 0 on success, error code otherwise
+ */
+
+ int stop() override;
+
+ SoftwareTimerCommon(const SoftwareTimerCommon&) = delete;
+ SoftwareTimerCommon(SoftwareTimerCommon&&) = default;
+ const SoftwareTimerCommon& operator=(const SoftwareTimerCommon&) = delete;
+ SoftwareTimerCommon& operator=(SoftwareTimerCommon&&) = delete;
+
+private:
+
+ /// internal SoftwareTimerControlBlock object
+ internal::SoftwareTimerControlBlock softwareTimerControlBlock_;
+};
+
+} // namespace distortos
+
+#endif // INCLUDE_DISTORTOS_SOFTWARETIMERCOMMON_HPP_