diff options
| author | Joel Challis <git@zvecr.com> | 2021-07-14 05:07:33 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-07-13 21:07:33 -0700 |
| commit | ef8267d6a75c281e6981ea07520d369e2ef092fc (patch) | |
| tree | 2e9df2e71437ac899283e8bead47f3577e62a414 | |
| parent | 6cdba3a43724f76076b8bf1f4d0809f53e7599d9 (diff) | |
| download | qmk_firmware-ef8267d6a75c281e6981ea07520d369e2ef092fc.tar.gz qmk_firmware-ef8267d6a75c281e6981ea07520d369e2ef092fc.zip | |
Refactor Drop boards to custom matrix lite (#13468)
| -rw-r--r-- | keyboards/massdrop/alt/matrix.c | 178 | ||||
| -rw-r--r-- | keyboards/massdrop/alt/rules.mk | 2 | ||||
| -rw-r--r-- | keyboards/massdrop/ctrl/matrix.c | 178 | ||||
| -rw-r--r-- | keyboards/massdrop/ctrl/rules.mk | 2 |
4 files changed, 74 insertions, 286 deletions
diff --git a/keyboards/massdrop/alt/matrix.c b/keyboards/massdrop/alt/matrix.c index f635f37f2..181f223e4 100644 --- a/keyboards/massdrop/alt/matrix.c +++ b/keyboards/massdrop/alt/matrix.c | |||
| @@ -16,167 +16,61 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 16 | */ | 16 | */ |
| 17 | 17 | ||
| 18 | #include "alt.h" | 18 | #include "alt.h" |
| 19 | |||
| 20 | #include "d51_util.h" | 19 | #include "d51_util.h" |
| 21 | #include "debug.h" | ||
| 22 | #include "clks.h" | ||
| 23 | #include <string.h> | ||
| 24 | |||
| 25 | #ifndef MATRIX_IO_DELAY | ||
| 26 | # define MATRIX_IO_DELAY 1 | ||
| 27 | #endif | ||
| 28 | |||
| 29 | matrix_row_t mlatest[MATRIX_ROWS]; | ||
| 30 | matrix_row_t mlast[MATRIX_ROWS]; | ||
| 31 | matrix_row_t mdebounced[MATRIX_ROWS]; | ||
| 32 | |||
| 33 | uint8_t row_ports[] = { MATRIX_ROW_PORTS }; | ||
| 34 | uint8_t row_pins[] = { MATRIX_ROW_PINS }; | ||
| 35 | uint8_t col_ports[] = { MATRIX_COL_PORTS }; | ||
| 36 | uint8_t col_pins[] = { MATRIX_COL_PINS }; | ||
| 37 | uint32_t row_masks[2]; //NOTE: If more than PA PB used in the future, adjust code to accomodate | ||
| 38 | 20 | ||
| 39 | __attribute__((weak)) void matrix_io_delay(void) { wait_us(MATRIX_IO_DELAY); } | 21 | const uint8_t row_ports[] = {MATRIX_ROW_PORTS}; |
| 40 | 22 | const uint8_t row_pins[] = {MATRIX_ROW_PINS}; | |
| 41 | __attribute__ ((weak)) | 23 | const uint8_t col_ports[] = {MATRIX_COL_PORTS}; |
| 42 | void matrix_init_kb(void) { | 24 | const uint8_t col_pins[] = {MATRIX_COL_PINS}; |
| 43 | matrix_init_user(); | 25 | uint32_t row_masks[2]; // NOTE: If more than PA PB used in the future, adjust code to accommodate |
| 44 | } | ||
| 45 | |||
| 46 | __attribute__ ((weak)) | ||
| 47 | void matrix_scan_kb(void) { | ||
| 48 | matrix_scan_user(); | ||
| 49 | } | ||
| 50 | |||
| 51 | __attribute__ ((weak)) | ||
| 52 | void matrix_init_user(void) { | ||
| 53 | } | ||
| 54 | |||
| 55 | __attribute__ ((weak)) | ||
| 56 | void matrix_scan_user(void) { | ||
| 57 | } | ||
| 58 | |||
| 59 | void matrix_init(void) | ||
| 60 | { | ||
| 61 | memset(mlatest, 0, MATRIX_ROWS * sizeof(matrix_row_t)); | ||
| 62 | memset(mlast, 0, MATRIX_ROWS * sizeof(matrix_row_t)); | ||
| 63 | memset(mdebounced, 0, MATRIX_ROWS * sizeof(matrix_row_t)); | ||
| 64 | 26 | ||
| 27 | void matrix_init_custom(void) { | ||
| 65 | row_masks[PA] = 0; | 28 | row_masks[PA] = 0; |
| 66 | row_masks[PB] = 0; | 29 | row_masks[PB] = 0; |
| 67 | 30 | ||
| 68 | uint8_t row; | 31 | for (uint8_t row = 0; row < MATRIX_ROWS; row++) { |
| 69 | for (row = 0; row < MATRIX_ROWS; row++) | 32 | PORT->Group[row_ports[row]].DIRCLR.reg = 1 << row_pins[row]; // Input |
| 70 | { | 33 | PORT->Group[row_ports[row]].OUTCLR.reg = 1 << row_pins[row]; // Low |
| 71 | PORT->Group[row_ports[row]].DIRCLR.reg = 1 << row_pins[row]; //Input | 34 | PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.INEN = 1; // Input Enable, |
| 72 | PORT->Group[row_ports[row]].OUTCLR.reg = 1 << row_pins[row]; //Low | 35 | PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.PULLEN = 1; // Pull Enable |
| 73 | PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.INEN = 1; //Input Enable, | 36 | row_masks[row_ports[row]] |= 1 << row_pins[row]; // Add pin to proper row mask |
| 74 | PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.PULLEN = 1; //Pull Enable | ||
| 75 | row_masks[row_ports[row]] |= 1 << row_pins[row]; //Add pin to proper row mask | ||
| 76 | } | 37 | } |
| 77 | 38 | ||
| 78 | uint8_t col; | 39 | for (uint8_t col = 0; col < MATRIX_COLS; col++) { |
| 79 | for (col = 0; col < MATRIX_COLS; col++) | 40 | PORT->Group[col_ports[col]].DIRSET.reg = 1 << col_pins[col]; // Output |
| 80 | { | 41 | PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; // Low |
| 81 | PORT->Group[col_ports[col]].DIRSET.reg = 1 << col_pins[col]; //Output | ||
| 82 | PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; //Low | ||
| 83 | } | 42 | } |
| 84 | |||
| 85 | matrix_init_quantum(); | ||
| 86 | } | 43 | } |
| 87 | 44 | ||
| 88 | uint64_t mdebouncing = 0; | 45 | bool matrix_scan_custom(matrix_row_t current_matrix[]) { |
| 89 | uint8_t matrix_scan(void) | 46 | matrix_row_t raw[MATRIX_ROWS] = {0}; |
| 90 | { | 47 | uint32_t scans[2]; // PA PB |
| 91 | uint8_t mchanged; | ||
| 92 | uint8_t row; | ||
| 93 | uint8_t col; | ||
| 94 | uint32_t scans[2]; //PA PB | ||
| 95 | |||
| 96 | if (timer_read64() < mdebouncing) return 1; //mdebouncing == 0 when no debouncing active | ||
| 97 | 48 | ||
| 98 | memset(mlatest, 0, MATRIX_ROWS * sizeof(matrix_row_t)); //Zero the result buffer | 49 | for (uint8_t col = 0; col < MATRIX_COLS; col++) { |
| 50 | PORT->Group[col_ports[col]].OUTSET.reg = 1 << col_pins[col]; // Set col output | ||
| 99 | 51 | ||
| 100 | for (col = 0; col < MATRIX_COLS; col++) | 52 | matrix_io_delay(); // Delay for output |
| 101 | { | ||
| 102 | PORT->Group[col_ports[col]].OUTSET.reg = 1 << col_pins[col]; //Set col output | ||
| 103 | 53 | ||
| 104 | matrix_io_delay(); //Delay for output | 54 | scans[PA] = PORT->Group[PA].IN.reg & row_masks[PA]; // Read PA row pins data |
| 55 | scans[PB] = PORT->Group[PB].IN.reg & row_masks[PB]; // Read PB row pins data | ||
| 105 | 56 | ||
| 106 | scans[PA] = PORT->Group[PA].IN.reg & row_masks[PA]; //Read PA row pins data | 57 | PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; // Clear col output |
| 107 | scans[PB] = PORT->Group[PB].IN.reg & row_masks[PB]; //Read PB row pins data | ||
| 108 | 58 | ||
| 109 | PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; //Clear col output | 59 | for (uint8_t row = 0; row < MATRIX_ROWS; row++) { |
| 110 | 60 | // Move scan bits from scans array into proper row bit locations | |
| 111 | for (row = 0; row < MATRIX_ROWS; row++) | 61 | if (scans[row_ports[row]] & (1 << row_pins[row])) { |
| 112 | { | 62 | raw[row] |= 1 << col; |
| 113 | //Move scan bits from scans array into proper row bit locations | 63 | } |
| 114 | if (scans[row_ports[row]] & (1 << row_pins[row])) | ||
| 115 | mlatest[row] |= 1 << col; | ||
| 116 | } | 64 | } |
| 117 | } | 65 | } |
| 118 | 66 | ||
| 119 | mchanged = 0; //Default to no matrix change since last | 67 | bool changed = false; |
| 120 | 68 | for (uint8_t row = 0; row < MATRIX_ROWS; row++) { | |
| 121 | for (row = 0; row < MATRIX_ROWS; row++) | 69 | if (current_matrix[row] != raw[row]) { |
| 122 | { | 70 | current_matrix[row] = raw[row]; |
| 123 | if (mlast[row] != mlatest[row]) | 71 | changed = true; |
| 124 | mchanged = 1; | ||
| 125 | mlast[row] = mlatest[row]; | ||
| 126 | } | ||
| 127 | |||
| 128 | if (!mchanged) | ||
| 129 | { | ||
| 130 | for (row = 0; row < MATRIX_ROWS; row++) | ||
| 131 | mdebounced[row] = mlatest[row]; | ||
| 132 | mdebouncing = 0; | ||
| 133 | } | ||
| 134 | else | ||
| 135 | { | ||
| 136 | //Begin or extend debounce on change | ||
| 137 | mdebouncing = timer_read64() + DEBOUNCE; | ||
| 138 | } | ||
| 139 | |||
| 140 | matrix_scan_quantum(); | ||
| 141 | |||
| 142 | return 1; | ||
| 143 | } | ||
| 144 | |||
| 145 | matrix_row_t matrix_get_row(uint8_t row) | ||
| 146 | { | ||
| 147 | return mdebounced[row]; | ||
| 148 | } | ||
| 149 | |||
| 150 | void matrix_print(void) | ||
| 151 | { | ||
| 152 | char buf[(MATRIX_COLS+8)*(MATRIX_ROWS+1)] = "R C"; | ||
| 153 | char *pbuf = buf+3; | ||
| 154 | uint32_t cols; | ||
| 155 | uint32_t rows; | ||
| 156 | matrix_row_t row; | ||
| 157 | |||
| 158 | for (cols = 1; cols <= MATRIX_COLS; cols++) | ||
| 159 | { | ||
| 160 | *pbuf = (cols%10)+48; | ||
| 161 | pbuf++; | ||
| 162 | } | ||
| 163 | *pbuf = '\r'; pbuf++; | ||
| 164 | *pbuf = '\n'; pbuf++; | ||
| 165 | |||
| 166 | for (rows = 1; rows <= MATRIX_ROWS; rows++) | ||
| 167 | { | ||
| 168 | row = matrix_get_row(rows-1); | ||
| 169 | if (rows < 10) { *pbuf = rows+48; pbuf++; *pbuf = ' '; pbuf++; *pbuf = ' '; pbuf++; } | ||
| 170 | else { *pbuf = (rows/10)+48; pbuf++; *pbuf = (rows%10)+48; pbuf++; *pbuf = ' '; pbuf++; } | ||
| 171 | for (cols = 0; cols < MATRIX_COLS; cols++) | ||
| 172 | { | ||
| 173 | if (row & 1 << cols) *pbuf = 'X'; | ||
| 174 | else *pbuf = '.'; | ||
| 175 | pbuf++; | ||
| 176 | } | 72 | } |
| 177 | *pbuf = '\r'; pbuf++; | ||
| 178 | *pbuf = '\n'; pbuf++; | ||
| 179 | } | 73 | } |
| 180 | *pbuf = 0; | 74 | |
| 181 | dprint(buf); | 75 | return changed; |
| 182 | } | 76 | } |
diff --git a/keyboards/massdrop/alt/rules.mk b/keyboards/massdrop/alt/rules.mk index 538df480b..86403d830 100644 --- a/keyboards/massdrop/alt/rules.mk +++ b/keyboards/massdrop/alt/rules.mk | |||
| @@ -6,7 +6,7 @@ SRC += config_led.c | |||
| 6 | ARM_ATSAM = SAMD51J18A | 6 | ARM_ATSAM = SAMD51J18A |
| 7 | MCU = cortex-m4 | 7 | MCU = cortex-m4 |
| 8 | 8 | ||
| 9 | CUSTOM_MATRIX = yes | 9 | CUSTOM_MATRIX = lite |
| 10 | 10 | ||
| 11 | # Build Options | 11 | # Build Options |
| 12 | # comment out to disable the options. | 12 | # comment out to disable the options. |
diff --git a/keyboards/massdrop/ctrl/matrix.c b/keyboards/massdrop/ctrl/matrix.c index 713fb89f6..a542d18c2 100644 --- a/keyboards/massdrop/ctrl/matrix.c +++ b/keyboards/massdrop/ctrl/matrix.c | |||
| @@ -16,167 +16,61 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
| 16 | */ | 16 | */ |
| 17 | 17 | ||
| 18 | #include "ctrl.h" | 18 | #include "ctrl.h" |
| 19 | |||
| 20 | #include "d51_util.h" | 19 | #include "d51_util.h" |
| 21 | #include "debug.h" | ||
| 22 | #include "clks.h" | ||
| 23 | #include <string.h> | ||
| 24 | |||
| 25 | #ifndef MATRIX_IO_DELAY | ||
| 26 | # define MATRIX_IO_DELAY 1 | ||
| 27 | #endif | ||
| 28 | |||
| 29 | matrix_row_t mlatest[MATRIX_ROWS]; | ||
| 30 | matrix_row_t mlast[MATRIX_ROWS]; | ||
| 31 | matrix_row_t mdebounced[MATRIX_ROWS]; | ||
| 32 | |||
| 33 | uint8_t row_ports[] = { MATRIX_ROW_PORTS }; | ||
| 34 | uint8_t row_pins[] = { MATRIX_ROW_PINS }; | ||
| 35 | uint8_t col_ports[] = { MATRIX_COL_PORTS }; | ||
| 36 | uint8_t col_pins[] = { MATRIX_COL_PINS }; | ||
| 37 | uint32_t row_masks[2]; //NOTE: If more than PA PB used in the future, adjust code to accomodate | ||
| 38 | 20 | ||
| 39 | __attribute__((weak)) void matrix_io_delay(void) { wait_us(MATRIX_IO_DELAY); } | 21 | const uint8_t row_ports[] = {MATRIX_ROW_PORTS}; |
| 40 | 22 | const uint8_t row_pins[] = {MATRIX_ROW_PINS}; | |
| 41 | __attribute__ ((weak)) | 23 | const uint8_t col_ports[] = {MATRIX_COL_PORTS}; |
| 42 | void matrix_init_kb(void) { | 24 | const uint8_t col_pins[] = {MATRIX_COL_PINS}; |
| 43 | matrix_init_user(); | 25 | uint32_t row_masks[2]; // NOTE: If more than PA PB used in the future, adjust code to accommodate |
| 44 | } | ||
| 45 | |||
| 46 | __attribute__ ((weak)) | ||
| 47 | void matrix_scan_kb(void) { | ||
| 48 | matrix_scan_user(); | ||
| 49 | } | ||
| 50 | |||
| 51 | __attribute__ ((weak)) | ||
| 52 | void matrix_init_user(void) { | ||
| 53 | } | ||
| 54 | |||
| 55 | __attribute__ ((weak)) | ||
| 56 | void matrix_scan_user(void) { | ||
| 57 | } | ||
| 58 | |||
| 59 | void matrix_init(void) | ||
| 60 | { | ||
| 61 | memset(mlatest, 0, MATRIX_ROWS * sizeof(matrix_row_t)); | ||
| 62 | memset(mlast, 0, MATRIX_ROWS * sizeof(matrix_row_t)); | ||
| 63 | memset(mdebounced, 0, MATRIX_ROWS * sizeof(matrix_row_t)); | ||
| 64 | 26 | ||
| 27 | void matrix_init_custom(void) { | ||
| 65 | row_masks[PA] = 0; | 28 | row_masks[PA] = 0; |
| 66 | row_masks[PB] = 0; | 29 | row_masks[PB] = 0; |
| 67 | 30 | ||
| 68 | uint8_t row; | 31 | for (uint8_t row = 0; row < MATRIX_ROWS; row++) { |
| 69 | for (row = 0; row < MATRIX_ROWS; row++) | 32 | PORT->Group[row_ports[row]].DIRCLR.reg = 1 << row_pins[row]; // Input |
| 70 | { | 33 | PORT->Group[row_ports[row]].OUTCLR.reg = 1 << row_pins[row]; // Low |
| 71 | PORT->Group[row_ports[row]].DIRCLR.reg = 1 << row_pins[row]; //Input | 34 | PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.INEN = 1; // Input Enable, |
| 72 | PORT->Group[row_ports[row]].OUTCLR.reg = 1 << row_pins[row]; //Low | 35 | PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.PULLEN = 1; // Pull Enable |
| 73 | PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.INEN = 1; //Input Enable, | 36 | row_masks[row_ports[row]] |= 1 << row_pins[row]; // Add pin to proper row mask |
| 74 | PORT->Group[row_ports[row]].PINCFG[row_pins[row]].bit.PULLEN = 1; //Pull Enable | ||
| 75 | row_masks[row_ports[row]] |= 1 << row_pins[row]; //Add pin to proper row mask | ||
| 76 | } | 37 | } |
| 77 | 38 | ||
| 78 | uint8_t col; | 39 | for (uint8_t col = 0; col < MATRIX_COLS; col++) { |
| 79 | for (col = 0; col < MATRIX_COLS; col++) | 40 | PORT->Group[col_ports[col]].DIRSET.reg = 1 << col_pins[col]; // Output |
| 80 | { | 41 | PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; // Low |
| 81 | PORT->Group[col_ports[col]].DIRSET.reg = 1 << col_pins[col]; //Output | ||
| 82 | PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; //Low | ||
| 83 | } | 42 | } |
| 84 | |||
| 85 | matrix_init_quantum(); | ||
| 86 | } | 43 | } |
| 87 | 44 | ||
| 88 | uint64_t mdebouncing = 0; | 45 | bool matrix_scan_custom(matrix_row_t current_matrix[]) { |
| 89 | uint8_t matrix_scan(void) | 46 | matrix_row_t raw[MATRIX_ROWS] = {0}; |
| 90 | { | 47 | uint32_t scans[2]; // PA PB |
| 91 | uint8_t mchanged; | ||
| 92 | uint8_t row; | ||
| 93 | uint8_t col; | ||
| 94 | uint32_t scans[2]; //PA PB | ||
| 95 | |||
| 96 | if (timer_read64() < mdebouncing) return 1; //mdebouncing == 0 when no debouncing active | ||
| 97 | 48 | ||
| 98 | memset(mlatest, 0, MATRIX_ROWS * sizeof(matrix_row_t)); //Zero the result buffer | 49 | for (uint8_t col = 0; col < MATRIX_COLS; col++) { |
| 50 | PORT->Group[col_ports[col]].OUTSET.reg = 1 << col_pins[col]; // Set col output | ||
| 99 | 51 | ||
| 100 | for (col = 0; col < MATRIX_COLS; col++) | 52 | matrix_io_delay(); // Delay for output |
| 101 | { | ||
| 102 | PORT->Group[col_ports[col]].OUTSET.reg = 1 << col_pins[col]; //Set col output | ||
| 103 | 53 | ||
| 104 | matrix_io_delay(); //Delay for output | 54 | scans[PA] = PORT->Group[PA].IN.reg & row_masks[PA]; // Read PA row pins data |
| 55 | scans[PB] = PORT->Group[PB].IN.reg & row_masks[PB]; // Read PB row pins data | ||
| 105 | 56 | ||
| 106 | scans[PA] = PORT->Group[PA].IN.reg & row_masks[PA]; //Read PA row pins data | 57 | PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; // Clear col output |
| 107 | scans[PB] = PORT->Group[PB].IN.reg & row_masks[PB]; //Read PB row pins data | ||
| 108 | 58 | ||
| 109 | PORT->Group[col_ports[col]].OUTCLR.reg = 1 << col_pins[col]; //Clear col output | 59 | for (uint8_t row = 0; row < MATRIX_ROWS; row++) { |
| 110 | 60 | // Move scan bits from scans array into proper row bit locations | |
| 111 | for (row = 0; row < MATRIX_ROWS; row++) | 61 | if (scans[row_ports[row]] & (1 << row_pins[row])) { |
| 112 | { | 62 | raw[row] |= 1 << col; |
| 113 | //Move scan bits from scans array into proper row bit locations | 63 | } |
| 114 | if (scans[row_ports[row]] & (1 << row_pins[row])) | ||
| 115 | mlatest[row] |= 1 << col; | ||
| 116 | } | 64 | } |
| 117 | } | 65 | } |
| 118 | 66 | ||
| 119 | mchanged = 0; //Default to no matrix change since last | 67 | bool changed = false; |
| 120 | 68 | for (uint8_t row = 0; row < MATRIX_ROWS; row++) { | |
| 121 | for (row = 0; row < MATRIX_ROWS; row++) | 69 | if (current_matrix[row] != raw[row]) { |
| 122 | { | 70 | current_matrix[row] = raw[row]; |
| 123 | if (mlast[row] != mlatest[row]) | 71 | changed = true; |
| 124 | mchanged = 1; | ||
| 125 | mlast[row] = mlatest[row]; | ||
| 126 | } | ||
| 127 | |||
| 128 | if (!mchanged) | ||
| 129 | { | ||
| 130 | for (row = 0; row < MATRIX_ROWS; row++) | ||
| 131 | mdebounced[row] = mlatest[row]; | ||
| 132 | mdebouncing = 0; | ||
| 133 | } | ||
| 134 | else | ||
| 135 | { | ||
| 136 | //Begin or extend debounce on change | ||
| 137 | mdebouncing = timer_read64() + DEBOUNCE; | ||
| 138 | } | ||
| 139 | |||
| 140 | matrix_scan_quantum(); | ||
| 141 | |||
| 142 | return 1; | ||
| 143 | } | ||
| 144 | |||
| 145 | matrix_row_t matrix_get_row(uint8_t row) | ||
| 146 | { | ||
| 147 | return mdebounced[row]; | ||
| 148 | } | ||
| 149 | |||
| 150 | void matrix_print(void) | ||
| 151 | { | ||
| 152 | char buf[(MATRIX_COLS+8)*(MATRIX_ROWS+1)] = "R C"; | ||
| 153 | char *pbuf = buf+3; | ||
| 154 | uint32_t cols; | ||
| 155 | uint32_t rows; | ||
| 156 | matrix_row_t row; | ||
| 157 | |||
| 158 | for (cols = 1; cols <= MATRIX_COLS; cols++) | ||
| 159 | { | ||
| 160 | *pbuf = (cols%10)+48; | ||
| 161 | pbuf++; | ||
| 162 | } | ||
| 163 | *pbuf = '\r'; pbuf++; | ||
| 164 | *pbuf = '\n'; pbuf++; | ||
| 165 | |||
| 166 | for (rows = 1; rows <= MATRIX_ROWS; rows++) | ||
| 167 | { | ||
| 168 | row = matrix_get_row(rows-1); | ||
| 169 | if (rows < 10) { *pbuf = rows+48; pbuf++; *pbuf = ' '; pbuf++; *pbuf = ' '; pbuf++; } | ||
| 170 | else { *pbuf = (rows/10)+48; pbuf++; *pbuf = (rows%10)+48; pbuf++; *pbuf = ' '; pbuf++; } | ||
| 171 | for (cols = 0; cols < MATRIX_COLS; cols++) | ||
| 172 | { | ||
| 173 | if (row & 1 << cols) *pbuf = 'X'; | ||
| 174 | else *pbuf = '.'; | ||
| 175 | pbuf++; | ||
| 176 | } | 72 | } |
| 177 | *pbuf = '\r'; pbuf++; | ||
| 178 | *pbuf = '\n'; pbuf++; | ||
| 179 | } | 73 | } |
| 180 | *pbuf = 0; | 74 | |
| 181 | dprint(buf); | 75 | return changed; |
| 182 | } | 76 | } |
diff --git a/keyboards/massdrop/ctrl/rules.mk b/keyboards/massdrop/ctrl/rules.mk index 970e5a05c..f58042b75 100644 --- a/keyboards/massdrop/ctrl/rules.mk +++ b/keyboards/massdrop/ctrl/rules.mk | |||
| @@ -6,7 +6,7 @@ SRC += config_led.c | |||
| 6 | ARM_ATSAM = SAMD51J18A | 6 | ARM_ATSAM = SAMD51J18A |
| 7 | MCU = cortex-m4 | 7 | MCU = cortex-m4 |
| 8 | 8 | ||
| 9 | CUSTOM_MATRIX = yes | 9 | CUSTOM_MATRIX = lite |
| 10 | 10 | ||
| 11 | # Build Options | 11 | # Build Options |
| 12 | # comment out to disable the options. | 12 | # comment out to disable the options. |
