machine/usb: refactor endpoint configuration

Этот коммит содержится в:
sago35 2023-08-02 08:30:51 +09:00 коммит произвёл Ron Evans
родитель 069e4f0d98
коммит 395ee2d338
5 изменённых файлов: 20 добавлений и 20 удалений

Просмотреть файл

@ -266,18 +266,18 @@ func EnableCDC(txHandler func(), rxHandler func([]byte), setupHandler func(usb.S
ConfigureUSBEndpoint(usbDescriptor, ConfigureUSBEndpoint(usbDescriptor,
[]usb.EndpointConfig{ []usb.EndpointConfig{
{ {
No: usb.CDC_ENDPOINT_ACM, Index: usb.CDC_ENDPOINT_ACM,
IsIn: true, IsIn: true,
Type: usb.ENDPOINT_TYPE_INTERRUPT, Type: usb.ENDPOINT_TYPE_INTERRUPT,
}, },
{ {
No: usb.CDC_ENDPOINT_OUT, Index: usb.CDC_ENDPOINT_OUT,
IsIn: false, IsIn: false,
Type: usb.ENDPOINT_TYPE_BULK, Type: usb.ENDPOINT_TYPE_BULK,
RxHandler: rxHandler, RxHandler: rxHandler,
}, },
{ {
No: usb.CDC_ENDPOINT_IN, Index: usb.CDC_ENDPOINT_IN,
IsIn: true, IsIn: true,
Type: usb.ENDPOINT_TYPE_BULK, Type: usb.ENDPOINT_TYPE_BULK,
TxHandler: txHandler, TxHandler: txHandler,
@ -285,7 +285,7 @@ func EnableCDC(txHandler func(), rxHandler func([]byte), setupHandler func(usb.S
}, },
[]usb.SetupConfig{ []usb.SetupConfig{
{ {
No: usb.CDC_ACM_INTERFACE, Index: usb.CDC_ACM_INTERFACE,
Handler: setupHandler, Handler: setupHandler,
}, },
}) })
@ -296,19 +296,19 @@ func ConfigureUSBEndpoint(desc descriptor.Descriptor, epSettings []usb.EndpointC
for _, ep := range epSettings { for _, ep := range epSettings {
if ep.IsIn { if ep.IsIn {
endPoints[ep.No] = uint32(ep.Type | usb.EndpointIn) endPoints[ep.Index] = uint32(ep.Type | usb.EndpointIn)
if ep.TxHandler != nil { if ep.TxHandler != nil {
usbTxHandler[ep.No] = ep.TxHandler usbTxHandler[ep.Index] = ep.TxHandler
} }
} else { } else {
endPoints[ep.No] = uint32(ep.Type | usb.EndpointOut) endPoints[ep.Index] = uint32(ep.Type | usb.EndpointOut)
if ep.RxHandler != nil { if ep.RxHandler != nil {
usbRxHandler[ep.No] = ep.RxHandler usbRxHandler[ep.Index] = ep.RxHandler
} }
} }
} }
for _, s := range setup { for _, s := range setup {
usbSetupHandler[s.No] = s.Handler usbSetupHandler[s.Index] = s.Handler
} }
} }

Просмотреть файл

@ -44,13 +44,13 @@ func newMidi() *midi {
machine.ConfigureUSBEndpoint(descriptor.CDCMIDI, machine.ConfigureUSBEndpoint(descriptor.CDCMIDI,
[]usb.EndpointConfig{ []usb.EndpointConfig{
{ {
No: usb.MIDI_ENDPOINT_OUT, Index: usb.MIDI_ENDPOINT_OUT,
IsIn: false, IsIn: false,
Type: usb.ENDPOINT_TYPE_BULK, Type: usb.ENDPOINT_TYPE_BULK,
RxHandler: m.RxHandler, RxHandler: m.RxHandler,
}, },
{ {
No: usb.MIDI_ENDPOINT_IN, Index: usb.MIDI_ENDPOINT_IN,
IsIn: true, IsIn: true,
Type: usb.ENDPOINT_TYPE_BULK, Type: usb.ENDPOINT_TYPE_BULK,
TxHandler: m.Handler, TxHandler: m.Handler,

Просмотреть файл

@ -1,7 +1,7 @@
package usb package usb
type EndpointConfig struct { type EndpointConfig struct {
No uint8 Index uint8
IsIn bool IsIn bool
TxHandler func() TxHandler func()
RxHandler func([]byte) RxHandler func([]byte)
@ -9,6 +9,6 @@ type EndpointConfig struct {
} }
type SetupConfig struct { type SetupConfig struct {
No uint8 Index uint8
Handler func(Setup) bool Handler func(Setup) bool
} }

Просмотреть файл

@ -36,7 +36,7 @@ func SetHandler(d hidDevicer) {
machine.ConfigureUSBEndpoint(descriptor.CDCHID, machine.ConfigureUSBEndpoint(descriptor.CDCHID,
[]usb.EndpointConfig{ []usb.EndpointConfig{
{ {
No: usb.HID_ENDPOINT_IN, Index: usb.HID_ENDPOINT_IN,
IsIn: true, IsIn: true,
Type: usb.ENDPOINT_TYPE_INTERRUPT, Type: usb.ENDPOINT_TYPE_INTERRUPT,
TxHandler: handler, TxHandler: handler,
@ -44,7 +44,7 @@ func SetHandler(d hidDevicer) {
}, },
[]usb.SetupConfig{ []usb.SetupConfig{
{ {
No: usb.HID_INTERFACE, Index: usb.HID_INTERFACE,
Handler: setupHandler, Handler: setupHandler,
}, },
}) })

Просмотреть файл

@ -51,13 +51,13 @@ func UseSettings(def Definitions, rxHandlerFunc func(b []byte), setupFunc func(s
machine.ConfigureUSBEndpoint(descriptor.CDCJoystick, machine.ConfigureUSBEndpoint(descriptor.CDCJoystick,
[]usb.EndpointConfig{ []usb.EndpointConfig{
{ {
No: usb.HID_ENDPOINT_OUT, Index: usb.HID_ENDPOINT_OUT,
IsIn: false, IsIn: false,
Type: usb.ENDPOINT_TYPE_INTERRUPT, Type: usb.ENDPOINT_TYPE_INTERRUPT,
RxHandler: rxHandlerFunc, RxHandler: rxHandlerFunc,
}, },
{ {
No: usb.HID_ENDPOINT_IN, Index: usb.HID_ENDPOINT_IN,
IsIn: true, IsIn: true,
Type: usb.ENDPOINT_TYPE_INTERRUPT, Type: usb.ENDPOINT_TYPE_INTERRUPT,
TxHandler: js.handler, TxHandler: js.handler,
@ -65,7 +65,7 @@ func UseSettings(def Definitions, rxHandlerFunc func(b []byte), setupFunc func(s
}, },
[]usb.SetupConfig{ []usb.SetupConfig{
{ {
No: usb.HID_INTERFACE, Index: usb.HID_INTERFACE,
Handler: setupFunc, Handler: setupFunc,
}, },
}, },