adb_usb: Fix debug print

This commit is contained in:
tmk 2022-05-30 15:29:34 +09:00
parent 3531ea81af
commit 047be5c900

View file

@ -59,14 +59,14 @@ static struct adb_device {
static void print_device_table(void) static void print_device_table(void)
{ {
xprintf("\nTable:\n"); xprintf("\nTable:\n");
xprintf("A: a h H\n"); xprintf("A:H a:h\n");
xprintf("----------\n"); xprintf("---------\n");
for (uint8_t addr = 0; addr < 16; addr++) { for (uint8_t addr = 0; addr < 16; addr++) {
if (device_table[addr].addr_default == 0) continue; if (device_table[addr].addr_default == 0) continue;
xprintf("%X: %X %02X %02X\n", addr, xprintf("%X:%02X %X:%02X\n", addr,
device_table[addr].handler,
device_table[addr].addr_default, device_table[addr].addr_default,
device_table[addr].handler_default, device_table[addr].handler_default);
device_table[addr].handler);
} }
xprintf("\n"); xprintf("\n");
} }
@ -120,15 +120,15 @@ static void keyboard_setup(uint8_t addr)
// Check if there is keyboard at default address // Check if there is keyboard at default address
reg3 = adb_host_talk(addr, ADB_REG_3); reg3 = adb_host_talk(addr, ADB_REG_3);
if (!reg3) { if (!reg3) {
xprintf("K:Not found at $%X.\n", addr); xprintf("K:$%X:Not found\n", addr);
return; return;
} }
xprintf("K:Setup at $%X. R3:%04X\n", addr, reg3); xprintf("K:$%X:Setup. R3:%04X\n", addr, reg3);
uint8_t adb_layout = keyboard_layout(reg3 & 0xFF); uint8_t adb_layout = keyboard_layout(reg3 & 0xFF);
xprintf("K:Layout: %s\n", (adb_layout == ADB_LAYOUT_ANSI ? "ANSI" : ( xprintf("K:$%X:Layout: %s\n", addr, (adb_layout == ADB_LAYOUT_ANSI ? "ANSI" : (
adb_layout == ADB_LAYOUT_ISO ? "ISO" : ( adb_layout == ADB_LAYOUT_ISO ? "ISO" : (
adb_layout == ADB_LAYOUT_JIS ? "JIS" : "???")))); adb_layout == ADB_LAYOUT_JIS ? "JIS" : "???"))));
// Enable Extended protocol // Enable Extended protocol
adb_host_listen(addr, ADB_REG_3, (reg3 >> 8), ADB_HANDLER_EXTENDED_KEYBOARD); adb_host_listen(addr, ADB_REG_3, (reg3 >> 8), ADB_HANDLER_EXTENDED_KEYBOARD);
@ -156,7 +156,7 @@ static uint8_t keyboard_proc(uint8_t addr)
if ( codes == 0xFFFF ) { if ( codes == 0xFFFF ) {
codes = adb_host_kbd_recv(addr); codes = adb_host_kbd_recv(addr);
if (codes) xprintf("$%X:%04X ", addr, codes); if (codes) xprintf("K:$%X:%02X:%04X ", addr, device_table[addr].handler_default, codes);
} }
key0 = codes>>8; key0 = codes>>8;
key1 = codes&0xFF; key1 = codes&0xFF;
@ -267,10 +267,10 @@ static void mouse_setup(uint8_t addr)
// Check if there is mouse device to setup // Check if there is mouse device to setup
reg3 = adb_host_talk(addr, ADB_REG_3); reg3 = adb_host_talk(addr, ADB_REG_3);
if (!reg3) { if (!reg3) {
xprintf("M:Not found at $%X.\n", addr); xprintf("M:$%X:Not found\n", addr);
return; return;
} }
xprintf("M:Setup at $%X. R3:%04X\n", addr, reg3); xprintf("M:$%X:Setup. R3:%04X\n", addr, reg3);
mouse_handler = reg3 & 0xFF; mouse_handler = reg3 & 0xFF;
if (mouse_handler == ADB_HANDLER_MICROSPEED_MACTRAC || if (mouse_handler == ADB_HANDLER_MICROSPEED_MACTRAC ||
@ -305,18 +305,17 @@ static void mouse_setup(uint8_t addr)
adb_host_listen(addr, ADB_REG_3, (reg3 >> 8), ADB_HANDLER_CLASSIC2_MOUSE); adb_host_listen(addr, ADB_REG_3, (reg3 >> 8), ADB_HANDLER_CLASSIC2_MOUSE);
mouse_handler = (reg3 = adb_host_talk(addr, ADB_REG_3)) & 0xFF; mouse_handler = (reg3 = adb_host_talk(addr, ADB_REG_3)) & 0xFF;
} }
//xprintf("M:EXT: R3:%04X\n", reg3);
} }
// Classic Protocol 100cpi // Classic Protocol 100cpi
if (mouse_handler == ADB_HANDLER_CLASSIC1_MOUSE) { if (mouse_handler == ADB_HANDLER_CLASSIC1_MOUSE) {
xprintf("M:Classic1 100cpi\n"); xprintf("M:$%X:Classic1 100cpi\n", addr);
mouse_cpi = 100; mouse_cpi = 100;
} }
// Classic Protocol 200cpi // Classic Protocol 200cpi
if (mouse_handler == ADB_HANDLER_CLASSIC2_MOUSE) { if (mouse_handler == ADB_HANDLER_CLASSIC2_MOUSE) {
xprintf("M:Classic2 200cpi\n"); xprintf("M:$%X:Classic2 200cpi\n", addr);
mouse_cpi = 200; mouse_cpi = 200;
} }
@ -338,12 +337,12 @@ static void mouse_setup(uint8_t addr)
} }
if (len) { if (len) {
xprintf("M:EXT: [%02X %02X %02X %02X %02X %02X %02X %02X] cpi=%d btn=%d len=%d\n", xprintf("M:$%X:EXT: [%02X %02X %02X %02X %02X %02X %02X %02X] cpi=%d btn=%d len=%d\n",
buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7], mouse_cpi, buf[7], len); addr, buf[0], buf[1], buf[2], buf[3], buf[4], buf[5], buf[6], buf[7], mouse_cpi, buf[7], len);
} }
if (buf[0] == 0x4B && buf[1] == 0x4D && buf[2] == 0x4C && buf[3] == 0x31) { if (buf[0] == 0x4B && buf[1] == 0x4D && buf[2] == 0x4C && buf[3] == 0x31) {
xprintf("M:Kensington Ext\n"); xprintf("M:$%X:Kensington Ext\n", addr);
// Kensington Turbo Mouse 5/Thinking Mouse: Extended device // Kensington Turbo Mouse 5/Thinking Mouse: Extended device
// Another device, whose handler ID is $32, becomes available in address 3 // Another device, whose handler ID is $32, becomes available in address 3
// when this device is moved from address 3. // when this device is moved from address 3.
@ -354,11 +353,11 @@ static void mouse_setup(uint8_t addr)
adb_host_flush(addr); adb_host_flush(addr);
adb_host_listen(addr, ADB_REG_3, (reg3 >> 8), ADB_HANDLER_MACALLY2_MOUSE); adb_host_listen(addr, ADB_REG_3, (reg3 >> 8), ADB_HANDLER_MACALLY2_MOUSE);
mouse_handler = (reg3 = adb_host_talk(addr, ADB_REG_3)) & 0xFF; mouse_handler = (reg3 = adb_host_talk(addr, ADB_REG_3)) & 0xFF;
xprintf("M:Macally-2btn\n"); xprintf("M:$%X:Macally-2btn\n", addr);
} else if (buf[0] == 0x9A && (buf[1] == 0x20 || buf[1] == 0x21)) { } else if (buf[0] == 0x9A && (buf[1] == 0x20 || buf[1] == 0x21)) {
// Logitech MouseMan/TrackMan proprietary // Logitech MouseMan/TrackMan proprietary
// buf[1] = 0x20:MouseMan, 0x21:TrackMan // buf[1] = 0x20:MouseMan, 0x21:TrackMan
xprintf("M:Logitech\n"); xprintf("M:$%X:Logitech\n", addr);
// https://elixir.bootlin.com/linux/v5.17/source/drivers/macintosh/adbhid.c#L1047 // https://elixir.bootlin.com/linux/v5.17/source/drivers/macintosh/adbhid.c#L1047
adb_host_listen(addr, ADB_REG_1, 0x00, 0x81); adb_host_listen(addr, ADB_REG_1, 0x00, 0x81);
@ -372,18 +371,18 @@ static void mouse_setup(uint8_t addr)
// Logitech MouaseMan/TrackMan Extended // Logitech MouaseMan/TrackMan Extended
// MouseMan - FCCID:DZLMAH32 'LT01' // MouseMan - FCCID:DZLMAH32 'LT01'
// MouseMan Cordless - FCCID:DZLMRC33T 'LTW1' // MouseMan Cordless - FCCID:DZLMRC33T 'LTW1'
xprintf("M:Logitech-Extended\n"); xprintf("M:$%X:Logitech-Extended\n", addr);
// set pseudo handler // set pseudo handler
mouse_handler = ADB_HANDLER_LOGITECH_EXT; mouse_handler = ADB_HANDLER_LOGITECH_EXT;
} else { } else {
xprintf("M:Extended\n"); xprintf("M:$%X:Extended\n", addr);
} }
} }
// Kensington Turbo Mouse 5: setup // Kensington Turbo Mouse 5: setup
if (mouse_handler == ADB_HANDLER_TURBO_MOUSE) { if (mouse_handler == ADB_HANDLER_TURBO_MOUSE) {
xprintf("M:Kensington\n"); xprintf("M:$%X:Kensington\n", addr);
/* byte0: 0xb5 speed - 0xa0, 0xa5, 0xb0 and 0xb5 seem to work /* byte0: 0xb5 speed - 0xa0, 0xa5, 0xb0 and 0xb5 seem to work
* uppper nibble: * uppper nibble:
@ -454,10 +453,10 @@ static uint8_t mouse_proc(uint8_t addr)
return 0; return 0;
}; };
xprintf("M:$%X[ ", addr); xprintf("M:$%X:%02X:[ ", addr, mouse_handler);
for (uint8_t i = 0; i < len; i++) for (uint8_t i = 0; i < len; i++)
xprintf("%02X ", buf[i]); xprintf("%02X ", buf[i]);
xprintf("] mh:%02X\n", mouse_handler); xprintf("] ");
bool xneg = false; bool xneg = false;
bool yneg = false; bool yneg = false;
@ -466,7 +465,7 @@ static uint8_t mouse_proc(uint8_t addr)
// Byte0: bbb y06 y05 y04 y03 y02 y01 y00 // Byte0: bbb y06 y05 y04 y03 y02 y01 y00
// Byte1: 1 x06 x05 x04 x03 x02 x01 x00 // Byte1: 1 x06 x05 x04 x03 x02 x01 x00
// Byte2: 0 0 0 0 0 BL BM BR // Byte2: 0 0 0 0 0 BL BM BR
// Bx: button state(1:pressed, 1:released) // Bx: button state(1:pressed, 0:released)
// bbb: 0 when either BL, BR or BM is pressed // bbb: 0 when either BL, BR or BM is pressed
if (buf[0] & 0x40) yneg = true; if (buf[0] & 0x40) yneg = true;
if (buf[1] & 0x40) xneg = true; if (buf[1] & 0x40) xneg = true;
@ -578,6 +577,13 @@ static uint8_t mouse_proc(uint8_t addr)
if (xneg) buf[i] |= 0x07; if (xneg) buf[i] |= 0x07;
} }
/* for debug
xprintf("[ ");
for (uint8_t i = 0; i < 5; i++)
xprintf("%02X ", buf[i]);
xprintf("] ");
*/
uint8_t buttons = 0; uint8_t buttons = 0;
if (!(buf[4] & 0x08)) buttons |= MOUSE_BTN8; if (!(buf[4] & 0x08)) buttons |= MOUSE_BTN8;
if (!(buf[4] & 0x80)) buttons |= MOUSE_BTN7; if (!(buf[4] & 0x80)) buttons |= MOUSE_BTN7;
@ -619,7 +625,8 @@ static uint8_t mouse_proc(uint8_t addr)
mouse_report.y = y; mouse_report.y = y;
} }
xprintf("M:[B:%02X X:%d(%d) Y:%d(%d) V:%d]\n", mouse_report.buttons, mouse_report.x, xx, mouse_report.y, yy, mouse_report.v); xprintf("[ B:%02X X:%d(%d) Y:%d(%d) V:%d ]\n",
mouse_report.buttons, mouse_report.x, xx, mouse_report.y, yy, mouse_report.v);
// Send result by usb. // Send result by usb.
host_mouse_send(&mouse_report); host_mouse_send(&mouse_report);
@ -640,7 +647,7 @@ uint8_t adb_mouse_buttons(void)
static void appliance_setup(uint8_t addr) static void appliance_setup(uint8_t addr)
{ {
// Adjustable keyboard M1242 media keys: address=7 and handler=2 // Adjustable keyboard M1242 media keys: address=7 and handler=2
xprintf("K:Media keys\n"); xprintf("A:$%X:Appliance(Media keys)\n", addr);
} }
static uint8_t appliance_keymap(uint8_t code) static uint8_t appliance_keymap(uint8_t code)
@ -874,7 +881,7 @@ void hook_main_loop(void)
// Unsupported device // Unsupported device
len = adb_host_talk_buf(addr, ADB_REG_0, buf, sizeof(buf)); len = adb_host_talk_buf(addr, ADB_REG_0, buf, sizeof(buf));
if (len) { if (len) {
xprintf("$%X R0: [ ", addr); xprintf("U:$%X:%02X:[ ", addr, device_table[addr].handler);
for (uint8_t i = 0; i < len; i++) { for (uint8_t i = 0; i < len; i++) {
xprintf("%02X ", buf[i]); xprintf("%02X ", buf[i]);
} }