]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Remove the need to specify NUM_OF_ENCODERS for the Encoder feature (#6328)
authorDrashna Jaelre <drashna@live.com>
Tue, 16 Jul 2019 08:40:54 +0000 (01:40 -0700)
committerskullydazed <skullydazed@users.noreply.github.com>
Tue, 16 Jul 2019 08:40:54 +0000 (01:40 -0700)
* Remove the need to set NUM_OF_ENCODERS

Instead, calculate the size of the array, and use that instead

* Add hack for split common support

* Remove NUM_OF_ENCODERS from keyboard config

Can be reverted, if needed

20 files changed:
docs/feature_encoders.md
keyboards/abstract/ellipse/rev1/config.h
keyboards/boston_meetup/2019/config.h
keyboards/cannonkeys/ortho75/config.h
keyboards/cannonkeys/satisfaction75/config.h
keyboards/hadron/ver3/config.h
keyboards/handwired/daishi/config.h
keyboards/keebio/bdn9/config.h
keyboards/keebio/iris/rev3/config.h
keyboards/maxr1998/pulse4k/config.h
keyboards/planck/ez/config.h
keyboards/planck/rev6/config.h
keyboards/preonic/rev3/config.h
keyboards/rgbkb/sol/config.h
keyboards/rgbkb/zen/rev2/config.h
keyboards/rgbkb/zygomorph/rev1/config.h
keyboards/ropro/config.h
keyboards/tetris/config.h
quantum/encoder.c
quantum/split_common/transport.c

index 9ac97a9a160bfc170ea0819e8c600bd29a2d651a..bb2d538e7ef027075ac2159d9fdf85bd87460e95 100644 (file)
@@ -6,7 +6,6 @@ Basic encoders are supported by adding this to your `rules.mk`:
 
 and this to your `config.h`:
 
-    #define NUMBER_OF_ENCODERS 1
     #define ENCODERS_PAD_A { B12 }
     #define ENCODERS_PAD_B { B13 }
 
index a56bfba2faa10c18645592fa6e397d32a2158a36..1fb9b76d9c79d3db2f58ff8968027dec4e8033b8 100644 (file)
@@ -239,7 +239,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 // #define BOOTMAGIC_LITE_ROW 0
 // #define BOOTMAGIC_LITE_COLUMN 0
 
-#define NUMBER_OF_ENCODERS 3
 #define ENCODERS_PAD_A { B2, B3, D5 }
 #define ENCODERS_PAD_B { B1, B7, B4 }
 #define ENCODER_RESOLUTION 2
index 5652816446cc35e9f659461f6082b593834334d4..fa3dda730e247bcf87ea71486f3acff770722e63 100644 (file)
@@ -26,7 +26,6 @@
 #define MATRIX_ROW_PINS { A3, B8, B9, B1 }
 #define MATRIX_COL_PINS { A7, A8, B2, B10 }
 
-#define NUMBER_OF_ENCODERS 1
 #define ENCODERS_PAD_A { B13 }
 #define ENCODERS_PAD_B { B14 }
 
 #define FB_LOOPGAIN 1 /* For  Low:0, Medium:1, High:2, Very High:3 */
 
 /* default 3V ERM vibration motor voltage and library*/
-#if FB_ERM_LRA == 0 
+#if FB_ERM_LRA == 0
 #define RATED_VOLTAGE 3
 #define V_RMS 2.3
 #define V_PEAK 3.30
 #define RGB_MATRIX_KEYPRESSES
 
 #define SOLENOID_PIN A14
-
index 6c240e2d69630dab9e116d24cb7dabc241e24597..588e2b9215f73a0f341a6190512d7614464ca44a 100644 (file)
@@ -39,7 +39,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define BACKLIGHT_BREATHING
 #define BREATHING_PERIOD 6
 
-#define NUMBER_OF_ENCODERS 1
 #define ENCODERS_PAD_A { B9 }
 #define ENCODERS_PAD_B { B8 }
 
index 092b372577b270584df9ec205edc4c38adf3fe6e..1cbe43fadfd332a2f11ee7eaed089bce73cd6687 100644 (file)
@@ -35,7 +35,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MATRIX_ROW_PINS { B3, B4, A0, A2, A4, A3 }
 #define DIODE_DIRECTION COL2ROW
 
-#define NUMBER_OF_ENCODERS 1
 #define ENCODERS_PAD_A { B9 }
 #define ENCODERS_PAD_B { B8 }
 
index 5e44b27ae6ef4427d003032f2cf3bbaeb7145d9d..2912486f4452423c955582fe75efae511e74dd36 100644 (file)
@@ -44,7 +44,6 @@
 #define MATRIX_COL_PINS { B8,  B2,  B10, A0, A1, A2, B0, A3, B1, A6, A7, B12, C13, B11, B9 }
 #define UNUSED_PINS
 
-#define NUMBER_OF_ENCODERS 1
 #define ENCODERS_PAD_A { B13 }
 #define ENCODERS_PAD_B { B14 }
 
index 15ff6a6a629b94ab5ebb6225179ae33827212fd8..b4665bece4741850c278a423fd21dc33e3e1f6f9 100644 (file)
@@ -52,10 +52,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define DEBOUNCE 5
 
 /* Set up rotary encoder */
-#define NUMBER_OF_ENCODERS 1
 #define ENCODERS_PAD_A { F1 }
 #define ENCODERS_PAD_B { F0 }
 #define ENCODER_RESOLUTION 2
 
 /* Set delay for tap_code on rotary encoder */
-#define TAP_CODE_DELAY 10
\ No newline at end of file
+#define TAP_CODE_DELAY 10
index 19e625348de30662a5f6ff41d2a8e348a28f1673..641dc5736194680586bb311f9a708ec55094f6f6 100644 (file)
@@ -38,7 +38,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
     { E6, B4, B2 } \
 }
 
-#define NUMBER_OF_ENCODERS 2
 #define ENCODERS_PAD_A { D1, F5 }
 #define ENCODERS_PAD_B { D0, F6 }
 
index 720695b60c99dc725b02963b7a4ac7b856d8e1fc..9653625437fa4c0b8ed0f8807530f01d7fe70e21 100644 (file)
@@ -41,7 +41,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define QMK_LED B0
 #define QMK_SPEAKER C6
 
-#define NUMBER_OF_ENCODERS 1
 #define ENCODERS_PAD_A { B5 }
 #define ENCODERS_PAD_B { B7 }
 
index cb4eab6995b17fc67a1f8413f214ab13d978f39b..d1bfaf30063454548bdf3a54ff3ba00393dc8fe1 100644 (file)
@@ -43,7 +43,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define DEBOUNCE 5
 
 /* Rotary encoders */
-#define NUMBER_OF_ENCODERS 2
 #define ENCODERS_PAD_A { D2, F6 }
 #define ENCODERS_PAD_B { D3, F5 }
 #define ENCODER_RESOLUTION 4
index 142382dab1ebf9e063baa33abfab3f4652f1a611..a252b252842dd0de66b319f445db094c79ed440c 100644 (file)
@@ -43,7 +43,6 @@
 #define MATRIX_ROW_PINS { A10, A9, A8, B15, C13, C14, C15, A2 }
 #define MATRIX_COL_PINS { B11, B10, B2, B1, A7, B0 }
 
-#define NUMBER_OF_ENCODERS 1
 #define ENCODERS_PAD_A { B12 }
 #define ENCODERS_PAD_B { B13 }
 
index 841a6219046fd2777f6bc8c3f4332a6b4dbd1e88..3354c3f80f79c1254aa0b27ce40d7ea40aa0aa00 100644 (file)
@@ -43,7 +43,6 @@
  * #define UNUSED_PINS
  */
 
-#define NUMBER_OF_ENCODERS 1
 #define ENCODERS_PAD_A { B12 }
 #define ENCODERS_PAD_B { B13 }
 
index b2a53ee656e8412b67f31ad1753ed95ecc4e5d5e..2d299345535820d15b7044125e396078a041fef8 100644 (file)
@@ -43,7 +43,6 @@
  * #define UNUSED_PINS
  */
 
-#define NUMBER_OF_ENCODERS 1
 #define ENCODERS_PAD_A { B12 }
 #define ENCODERS_PAD_B { B13 }
 
index 1afd973e903be026b49fb03ed94b984151acd22c..23f4503bfd958e1913e0f275c3e1e35127c76d9d 100644 (file)
@@ -36,7 +36,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MATRIX_COL_PINS { F0, F1, F4, F5, F6, F7, C7 }
 
 // Encoder support
-#define NUMBER_OF_ENCODERS 1
 #define ENCODERS_PAD_A { D2 }
 #define ENCODERS_PAD_B { D6 }
 
index b9f3d2228bce784d15d3e809b380ea57ad0fb812..c2bb360bdb61eaf09803688ef1f3ce068f34f261 100644 (file)
@@ -41,8 +41,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define MATRIX_ROW_PINS { C6, E6, B5, D7, B4 }
 #define MATRIX_COL_PINS { F4, F5, F6, F7, B3, B1, B2 }
 
-#define NUMBER_OF_ENCODERS 1
-
 #define ENCODERS_PAD_A  { D4 }
 #define ENCODERS_PAD_B  { D2 }
 
index ad58761cc5249fc0c7962aa0183ffe681d1ddca7..6e55a6a5f5dda21977fabfc791d0adc3d9b84f0c 100644 (file)
@@ -40,7 +40,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #define SOFT_SERIAL_PIN D3
 
-#define NUMBER_OF_ENCODERS 1
 #define ENCODERS_PAD_A  { D2 }
 #define ENCODERS_PAD_B  { D7 }
 
index 0966faf54049d51afba6908b2e2c4dc94b4d31b1..5079217f9c6cbed1cc86cfc02743e6363ca5ba10 100644 (file)
@@ -1,4 +1,4 @@
-#pragma once 
+#pragma once
 
 /* Copyright 2019 Garret G. (TheRoyalSweatshirt)
  *
  * 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/>.#pragma once 
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.#pragma once
  */
 
-#include "config_common.h" 
+#include "config_common.h"
 
 /* USB Device descriptor parameter */
 #define VENDOR_ID       0xFEED
@@ -30,7 +30,6 @@
 #define MATRIX_ROWS 7
 #define MATRIX_COLS 14
 
-#define NUMBER_OF_ENCODERS 1
 #define ENCODERS_PAD_A { B7 }
 #define ENCODERS_PAD_B { D5 }
 
index 7fe0c2d6460dc08c4b64d327bef0264e5ad4fd89..024d3be0e489416151a5aff54434c09dbb4a77c4 100755 (executable)
@@ -40,7 +40,6 @@
   #define NO_MUSIC_MODE
 #endif
 
-#define NUMBER_OF_ENCODERS 2
 #define ENCODERS_PAD_A { D1,F1 }
 #define ENCODERS_PAD_B { D0,F0 }
 
index ddf6234ab8a1b0f070381c5579feee4934c871ba..31f00c346bad00bb257ed38da195b77f3150de06 100644 (file)
   #define ENCODER_RESOLUTION 4
 #endif
 
-#ifndef NUMBER_OF_ENCODERS
-  #error "Number of encoders not defined by NUMBER_OF_ENCODERS"
-#endif
-
 #if !defined(ENCODERS_PAD_A) || !defined(ENCODERS_PAD_B)
   #error "No encoder pads defined by ENCODERS_PAD_A and ENCODERS_PAD_B"
 #endif
 
-static pin_t encoders_pad_a[NUMBER_OF_ENCODERS] = ENCODERS_PAD_A;
-static pin_t encoders_pad_b[NUMBER_OF_ENCODERS] = ENCODERS_PAD_B;
+
+#define NUMBER_OF_ENCODERS (sizeof(encoders_pad_a)/sizeof(pin_t))
+static pin_t encoders_pad_a[] = ENCODERS_PAD_A;
+static pin_t encoders_pad_b[] = ENCODERS_PAD_B;
 
 static int8_t encoder_LUT[] = { 0, -1, 1, 0, 1, 0, 0, -1, -1, 0, 0, 1, 0, 1, -1, 0 };
 
index b32d48eb88c7946a5289ddbca66a5228f74adfbb..ba21d0c7b1db9adea17da1276f4d1d2c4daa3e55 100644 (file)
@@ -17,6 +17,8 @@
 
 #ifdef ENCODER_ENABLE
 #  include "encoder.h"
+static pin_t encoders_pad[] = ENCODERS_PAD_A;
+#  define NUMBER_OF_ENCODERS (sizeof(encoders_pad)/sizeof(pin_t))
 #endif
 
 #if defined(USE_I2C) || defined(EH)