summaryrefslogtreecommitdiffstats
path: root/keyboards/sol/common/knob_v2.h
diff options
context:
space:
mode:
authorLegonut <legonut3@gmail.com>2018-12-05 03:15:52 +0100
committerDrashna Jaelre <drashna@live.com>2018-12-05 03:15:52 +0100
commit8a330b33ff41ffc1ec3f8fa39722e93115ea3f0f (patch)
tree3ef91766a6063422fb7cd884c377959fa6b2ab39 /keyboards/sol/common/knob_v2.h
parent6d0dc910d92bc381d3cce9ea712aa47ae40ddf15 (diff)
downloadqmk_firmware-8a330b33ff41ffc1ec3f8fa39722e93115ea3f0f.tar.gz
qmk_firmware-8a330b33ff41ffc1ec3f8fa39722e93115ea3f0f.tar.xz
Keyboard: Add new keyboard "Sol" from RGBKB (#4497)
* Add final RGBKB Sol firmware * Apply suggestions from code review Apply most of the changes noroadsleft has suggested Co-Authored-By: Legonut <legonut3@gmail.com> * Cleanup readme * Cleanup keymaps per @noroadslefts suggestions * Remove eeproms, use set_single_persistent_default_layer * Suggestions from @noroadsleft and @drashna some small cleanup * Change RGB_SMOD to RGB_RMOD * fix RGB_SMOD * Apply suggestions from code review Remove redundant lines Co-Authored-By: Legonut <legonut3@gmail.com>
Diffstat (limited to 'keyboards/sol/common/knob_v2.h')
-rw-r--r--keyboards/sol/common/knob_v2.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/keyboards/sol/common/knob_v2.h b/keyboards/sol/common/knob_v2.h
new file mode 100644
index 000000000..45196eb1a
--- /dev/null
+++ b/keyboards/sol/common/knob_v2.h
@@ -0,0 +1,28 @@
+// Rotary knob implementation - Version 2.
+// Uses 2 digital pins - D2 (via interrupt) & D6.
+// #include "rev1.h"
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <stdbool.h>
+
+#ifndef ENCODER_PIN_1
+ #define ENCODER_PIN_1 PD2
+#endif
+#ifndef ENCODER_PIN_2
+ #define ENCODER_PIN_2 PD6
+#endif
+#ifndef ENCODER_INT
+ #define ENCODER_INT INT2_vect
+#endif
+
+typedef struct knob_report_t {
+ int8_t dir; // Contains number of rotations that happened
+ int8_t phase; // Contains 0 if last rotation happened on 90 degrees, 1 if on 270
+} knob_report_t;
+
+void knob_init(void);
+knob_report_t knob_report_read(void);
+void knob_report_reset(void);
+
+bool knob_prev_a;
+int8_t knob_dir;