diff options
| author | tmk <nobody@nowhere> | 2014-02-09 08:25:23 +0900 |
|---|---|---|
| committer | tmk <nobody@nowhere> | 2014-02-09 08:25:23 +0900 |
| commit | c4efadf68a5b1853f253dd9f28afb54c26bff796 (patch) | |
| tree | 670ce72d33ec2a2e23da17bcc2db271895108e77 | |
| parent | ebe951a445b5d774542731d6165a9c5cd56beb2b (diff) | |
| download | qmk_firmware-c4efadf68a5b1853f253dd9f28afb54c26bff796.tar.gz qmk_firmware-c4efadf68a5b1853f253dd9f28afb54c26bff796.zip | |
Tweak keyboard initialize
| -rw-r--r-- | converter/ibm4704_usb/matrix.c | 57 |
1 files changed, 24 insertions, 33 deletions
diff --git a/converter/ibm4704_usb/matrix.c b/converter/ibm4704_usb/matrix.c index 796e2d064..0bfda2b15 100644 --- a/converter/ibm4704_usb/matrix.c +++ b/converter/ibm4704_usb/matrix.c | |||
| @@ -68,34 +68,43 @@ uint8_t matrix_cols(void) | |||
| 68 | static void enable_break(void) | 68 | static void enable_break(void) |
| 69 | { | 69 | { |
| 70 | uint8_t ret; | 70 | uint8_t ret; |
| 71 | for (uint8_t code = 0; code < 0x80; code++) { | 71 | print("Enable break: "); |
| 72 | // valid scancode: 00-77h | ||
| 73 | for (uint8_t code = 0; code < 0x78; code++) { | ||
| 72 | while (ibm4704_send(0x80|code) != 0) { | 74 | while (ibm4704_send(0x80|code) != 0) { |
| 73 | print("z"); | 75 | print("z"); |
| 76 | _delay_us(500); | ||
| 74 | } | 77 | } |
| 75 | _delay_ms(1); | 78 | _delay_us(2000); |
| 76 | ret = ibm4704_recv(); | 79 | ret = ibm4704_recv(); |
| 77 | if (ret!=0xFF) { | 80 | if (ret != 0xff) { |
| 78 | xprintf("%0X: %0X ", code, ret); | 81 | xprintf("c%02X:r%02X ", code, ret); |
| 79 | } | 82 | } |
| 83 | _delay_us(1000); | ||
| 80 | } | 84 | } |
| 81 | _delay_us(100); | 85 | _delay_us(1000); |
| 86 | while (ibm4704_send(0xFF) != 0) { _delay_us(500); } // End | ||
| 82 | print("End\n"); | 87 | print("End\n"); |
| 83 | while (ibm4704_send(0xFF) != 0) { | ||
| 84 | print("Z"); | ||
| 85 | } // End | ||
| 86 | } | 88 | } |
| 87 | 89 | ||
| 88 | void matrix_init(void) | 90 | void matrix_init(void) |
| 89 | { | 91 | { |
| 92 | uint8_t ret; | ||
| 90 | debug_enable = true; | 93 | debug_enable = true; |
| 91 | 94 | ||
| 92 | ibm4704_init(); | 95 | ibm4704_init(); |
| 93 | matrix_clear(); | 96 | matrix_clear(); |
| 94 | 97 | ||
| 95 | xprintf("------\n"); | 98 | // read keyboard id |
| 99 | while ((ret = ibm4704_recv()) == 0xFF) { | ||
| 100 | ibm4704_send(0xFE); | ||
| 101 | _delay_us(100); | ||
| 102 | } | ||
| 103 | |||
| 104 | _delay_ms(2000); // wait for starting up debug console | ||
| 105 | print("IBM 4704 converter\n"); | ||
| 106 | xprintf("Keyboard ID: %02X\n", ret); | ||
| 96 | enable_break(); | 107 | enable_break(); |
| 97 | //while (ibm4704_send(0x8C) != 0) ; | ||
| 98 | //while (ibm4704_send(0xFF) != 0) ; | ||
| 99 | } | 108 | } |
| 100 | 109 | ||
| 101 | /* | 110 | /* |
| @@ -108,8 +117,8 @@ uint8_t matrix_scan(void) | |||
| 108 | // Not receivd | 117 | // Not receivd |
| 109 | return 0; | 118 | return 0; |
| 110 | } else if ((code&0x78)==0x78) { | 119 | } else if ((code&0x78)==0x78) { |
| 111 | // 0xFF-F8 and 0x7F-78 is not scan code | 120 | // 0xFF-F8 and 0x7F-78 is not scancode |
| 112 | dprintf("Error: %0X\n", code); | 121 | xprintf("Error: %0X\n", code); |
| 113 | matrix_clear(); | 122 | matrix_clear(); |
| 114 | return 0; | 123 | return 0; |
| 115 | } else if (code&0x80) { | 124 | } else if (code&0x80) { |
| @@ -121,12 +130,6 @@ uint8_t matrix_scan(void) | |||
| 121 | } | 130 | } |
| 122 | 131 | ||
| 123 | inline | 132 | inline |
| 124 | bool matrix_has_ghost(void) | ||
| 125 | { | ||
| 126 | return false; | ||
| 127 | } | ||
| 128 | |||
| 129 | inline | ||
| 130 | bool matrix_is_on(uint8_t row, uint8_t col) | 133 | bool matrix_is_on(uint8_t row, uint8_t col) |
| 131 | { | 134 | { |
| 132 | return (matrix[row] & (1<<col)); | 135 | return (matrix[row] & (1<<col)); |
| @@ -142,20 +145,8 @@ void matrix_print(void) | |||
| 142 | { | 145 | { |
| 143 | print("\nr/c 01234567\n"); | 146 | print("\nr/c 01234567\n"); |
| 144 | for (uint8_t row = 0; row < matrix_rows(); row++) { | 147 | for (uint8_t row = 0; row < matrix_rows(); row++) { |
| 145 | // TODO: use new function | 148 | xprintf("%02X: %08b\n", row, bitrev(matrix_get_row(row))); |
| 146 | phex(row); print(": "); | ||
| 147 | pbin_reverse(matrix_get_row(row)); | ||
| 148 | print("\n"); | ||
| 149 | } | ||
| 150 | } | ||
| 151 | |||
| 152 | uint8_t matrix_key_count(void) | ||
| 153 | { | ||
| 154 | uint8_t count = 0; | ||
| 155 | for (uint8_t i = 0; i < MATRIX_ROWS; i++) { | ||
| 156 | count += bitpop(matrix[i]); | ||
| 157 | } | 149 | } |
| 158 | return count; | ||
| 159 | } | 150 | } |
| 160 | 151 | ||
| 161 | 152 | ||
