adb_usb: Fix debug print
This commit is contained in:
parent
3531ea81af
commit
047be5c900
1 changed files with 37 additions and 30 deletions
|
|
@ -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]);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue