X-Git-Url: https://git.friedersdorff.com/?a=blobdiff_plain;ds=sidebyside;f=converter%2Fsun_usb%2Fmatrix.c;h=0cea3700c6e185a8c413f554cc245eb2701f774b;hb=f5e487bc3850161bf4b78d9eafef11b78fd02bce;hp=71c818f5abce418a20d9ed5e89595c142d28e5c0;hpb=49b0c7e5ef1683f001c4c9e1c7516da8c5fe592e;p=max%2Ftmk_keyboard.git diff --git a/converter/sun_usb/matrix.c b/converter/sun_usb/matrix.c index 71c818f5..0cea3700 100644 --- a/converter/sun_usb/matrix.c +++ b/converter/sun_usb/matrix.c @@ -24,6 +24,8 @@ along with this program. If not, see . #include "matrix.h" #include "debug.h" #include "protocol/serial.h" +#include "led.h" +#include "host.h" /* @@ -46,20 +48,6 @@ static uint8_t matrix[MATRIX_ROWS]; #define ROW(code) ((code>>3)&0xF) #define COL(code) (code&0x07) -static bool is_modified = false; - - -inline -uint8_t matrix_rows(void) -{ - return MATRIX_ROWS; -} - -inline -uint8_t matrix_cols(void) -{ - return MATRIX_COLS; -} void matrix_init(void) { @@ -87,13 +75,13 @@ void matrix_init(void) } } print(" Done\n"); + + PORTD &= ~(1<<6); return; } uint8_t matrix_scan(void) { - is_modified = false; - uint8_t code; code = serial_recv(); if (!code) return 0; @@ -101,17 +89,26 @@ uint8_t matrix_scan(void) debug_hex(code); debug(" "); switch (code) { - case 0xFF: // reset success - case 0xFE: // layout - case 0x7E: // reset fail - if (code == 0xFF) print("reset: 0xFF "); - if (code == 0x7E) print("reset fail: 0x7E "); - if (code == 0xFE) print("layout: 0xFE "); - // response byte + case 0xFF: // reset success: FF 04 + print("reset: "); _delay_ms(500); - if (code = serial_recv()) print_hex8(code); - print("\n"); - // FALL THROUGH + code = serial_recv(); + xprintf("%02X\n", code); + if (code == 0x04) { + // LED status + led_set(host_keyboard_leds()); + } + return 0; + case 0xFE: // layout: FE + print("layout: "); + _delay_ms(500); + xprintf("%02X\n", serial_recv()); + return 0; + case 0x7E: // reset fail: 7E 01 + print("reset fail: "); + _delay_ms(500); + xprintf("%02X\n", serial_recv()); + return 0; case 0x7F: // all keys up for (uint8_t i=0; i < MATRIX_ROWS; i++) matrix[i] = 0x00; @@ -122,56 +119,18 @@ uint8_t matrix_scan(void) // break code if (matrix_is_on(ROW(code), COL(code))) { matrix[ROW(code)] &= ~(1<