diff --git a/src/machine/usb.go b/src/machine/usb.go index 7ed4ef35..1449a87b 100644 --- a/src/machine/usb.go +++ b/src/machine/usb.go @@ -10,7 +10,8 @@ import ( ) type USBDevice struct { - initcomplete bool + initcomplete bool + InitEndpointComplete bool } var ( @@ -215,6 +216,7 @@ func handleStandardSetup(setup usb.Setup) bool { } usbConfiguration = setup.WValueL + USBDev.InitEndpointComplete = true SendZlp() return true diff --git a/src/machine/usb/hid/keyboard/keyboard.go b/src/machine/usb/hid/keyboard/keyboard.go index 2dc36e68..ce699399 100644 --- a/src/machine/usb/hid/keyboard/keyboard.go +++ b/src/machine/usb/hid/keyboard/keyboard.go @@ -2,6 +2,7 @@ package keyboard import ( "errors" + "machine" "machine/usb/hid" ) @@ -91,11 +92,13 @@ func (kb *keyboard) Handler() bool { } func (kb *keyboard) tx(b []byte) { - if kb.waitTxc { - kb.buf.Put(b) - } else { - kb.waitTxc = true - hid.SendUSBPacket(b) + if machine.USBDev.InitEndpointComplete { + if kb.waitTxc { + kb.buf.Put(b) + } else { + kb.waitTxc = true + hid.SendUSBPacket(b) + } } } diff --git a/src/machine/usb/hid/mouse/mouse.go b/src/machine/usb/hid/mouse/mouse.go index 4d80add4..baf9efb6 100644 --- a/src/machine/usb/hid/mouse/mouse.go +++ b/src/machine/usb/hid/mouse/mouse.go @@ -1,6 +1,7 @@ package mouse import ( + "machine" "machine/usb/hid" ) @@ -55,11 +56,13 @@ func (m *mouse) Handler() bool { } func (m *mouse) tx(b []byte) { - if m.waitTxc { - m.buf.Put(b) - } else { - m.waitTxc = true - hid.SendUSBPacket(b) + if machine.USBDev.InitEndpointComplete { + if m.waitTxc { + m.buf.Put(b) + } else { + m.waitTxc = true + hid.SendUSBPacket(b) + } } } diff --git a/src/machine/usb/joystick/joystick.go b/src/machine/usb/joystick/joystick.go index 9c12997b..d672cbce 100644 --- a/src/machine/usb/joystick/joystick.go +++ b/src/machine/usb/joystick/joystick.go @@ -76,11 +76,13 @@ func (m *Joystick) rxHandler(b []byte) { } func (m *Joystick) tx(b []byte) { - if m.waitTxc { - m.buf.Put(b) - } else { - m.waitTxc = true - m.sendUSBPacket(b) + if machine.USBDev.InitEndpointComplete { + if m.waitTxc { + m.buf.Put(b) + } else { + m.waitTxc = true + m.sendUSBPacket(b) + } } } diff --git a/src/machine/usb/midi/midi.go b/src/machine/usb/midi/midi.go index c0796be4..2697866f 100644 --- a/src/machine/usb/midi/midi.go +++ b/src/machine/usb/midi/midi.go @@ -71,11 +71,13 @@ func (m *midi) Handler() { } func (m *midi) tx(b []byte) { - if m.waitTxc { - m.buf.Put(b) - } else { - m.waitTxc = true - m.sendUSBPacket(b) + if machine.USBDev.InitEndpointComplete { + if m.waitTxc { + m.buf.Put(b) + } else { + m.waitTxc = true + m.sendUSBPacket(b) + } } }