aboutsummaryrefslogtreecommitdiff
path: root/keyclick.h
diff options
context:
space:
mode:
Diffstat (limited to 'keyclick.h')
-rw-r--r--keyclick.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/keyclick.h b/keyclick.h
new file mode 100644
index 0000000..f964230
--- /dev/null
+++ b/keyclick.h
@@ -0,0 +1,47 @@
+/*
+Copyright 2021 Robin Haberkorn <robin.haberkorn@googlemail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef KEYCLICK_H
+#define KEYCLICK_H
+
+#include <stdbool.h>
+
+#include <avr/io.h>
+
+enum keyclick_mode {
+ KEYCLICK_OFF = 0,
+ KEYCLICK_SOLENOID,
+ KEYCLICK_BUZZER,
+ /** not a real keyclick mode */
+ KEYCLICK_MAX
+};
+
+extern enum keyclick_mode keyclick_mode;
+
+static inline void
+keyclick_solenoid_set(bool state)
+{
+ /*
+ * NOTE: The solenoid/relay is LOW-active.
+ */
+ if (state)
+ PORTB &= ~(1 << PB3);
+ else
+ PORTB |= (1 << PB3);
+}
+
+#endif