aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortmk <nobody@nowhere>2014-02-09 08:25:23 +0900
committertmk <nobody@nowhere>2014-02-09 08:25:23 +0900
commitc4efadf68a5b1853f253dd9f28afb54c26bff796 (patch)
tree670ce72d33ec2a2e23da17bcc2db271895108e77
parentebe951a445b5d774542731d6165a9c5cd56beb2b (diff)
downloadqmk_firmware-c4efadf68a5b1853f253dd9f28afb54c26bff796.tar.gz
qmk_firmware-c4efadf68a5b1853f253dd9f28afb54c26bff796.zip
Tweak keyboard initialize
-rw-r--r--converter/ibm4704_usb/matrix.c57
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)
68static void enable_break(void) 68static 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
88void matrix_init(void) 90void 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
123inline 132inline
124bool matrix_has_ghost(void)
125{
126 return false;
127}
128
129inline
130bool matrix_is_on(uint8_t row, uint8_t col) 133bool 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
152uint8_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