aboutsummaryrefslogtreecommitdiff
path: root/FanController/fan_controller/hw/button.c
diff options
context:
space:
mode:
Diffstat (limited to 'FanController/fan_controller/hw/button.c')
-rw-r--r--FanController/fan_controller/hw/button.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/FanController/fan_controller/hw/button.c b/FanController/fan_controller/hw/button.c
new file mode 100644
index 0000000..90edf03
--- /dev/null
+++ b/FanController/fan_controller/hw/button.c
@@ -0,0 +1,48 @@
+/* Autor: Ján Sučan <jan@jansucan.sk>
+ *
+ * Zdrojove kody, ich casti a subory z nich vzniknute priamo alebo nepriamo
+ * (objektove subory, Intel Hex, ...) prosim nepouzivajte komercne, ani ako
+ * sucast komercnych diel. Vsetky ostatne pripady pouzitia su dovolene.
+ *
+ * Please don't use the source codes, their parts and files created from them
+ * directly or indirectly, (object files, Intel Hex files, ...) for commercial
+ * purposes, not even as a part of commercial products. All other use cases
+ * are allowed.
+ */
+
+#include <fan_controller/hw/button.h>
+#include <fan_controller/hw/io.h>
+#include <fan_controller/delay.h>
+
+/**
+ * @brief Zisti, ci je tlacitko stlacene.
+ *
+ * @retval true Tlacitko je stlacene.
+ * @retval false Tlacitko nie je stlacene.
+ */
+bool
+button_is_pressed(void)
+{
+ bool a, b;
+
+ a = io_is_button_pressed();
+ // Minimalna hodnota pre cakanie funkciou delay_ms() je 16 ms.
+ delay_ms(20);
+ b = io_is_button_pressed();
+ // Stavy oboch vzoriek sa musia rovnat
+ // a musia byt rovne stlacenemu tlacitku.
+ // Ak by sa nerovnali, islo by o zakmit.
+ return (!a == !b) && !a && !b;
+}
+
+/**
+ * @brief Zisti, ci je tlacitko pustene (nestlacene).
+ *
+ * @retval true Tlacitko je pustene.
+ * @retval false Tlacitko nie je pustene.
+ */
+bool
+button_is_released(void)
+{
+ return !button_is_pressed();
+}