From 71b44e79b3bddf07499e545e6cb62988dfc8ae26 Mon Sep 17 00:00:00 2001 From: sago35 Date: Sun, 2 Apr 2023 21:44:58 +0900 Subject: [PATCH] machine/usb/hid/joystick: allow joystick settings override --- src/machine/usb/hid/joystick/joystick.go | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/machine/usb/hid/joystick/joystick.go b/src/machine/usb/hid/joystick/joystick.go index ed6f712a..cdcf771d 100644 --- a/src/machine/usb/hid/joystick/joystick.go +++ b/src/machine/usb/hid/joystick/joystick.go @@ -18,11 +18,26 @@ type joystick struct { func init() { if Joystick == nil { - Joystick = newJoystick() + Joystick = newDefaultJoystick() } } -func newJoystick() *joystick { +// UseSettings overrides the Joystick settings. This function must be +// called from init(). +func UseSettings(def Definitions, rxHandlerFunc func(b []byte), setupFunc func(setup usb.Setup) bool, hidDesc []byte) *joystick { + js := &joystick{ + buf: hid.NewRingBuffer(), + State: def.NewState(), + } + if setupFunc == nil { + setupFunc = js.setupFunc + } + machine.EnableJoystick(js.handler, rxHandlerFunc, setupFunc, hidDesc) + Joystick = js + return js +} + +func newDefaultJoystick() *joystick { def := DefaultDefinitions() js := &joystick{ State: def.NewState(),