mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-10 14:03:39 +00:00
d8ee520bdc
Signed-off-by: deadprogram <ron@hybridgroup.com>
158 lines
3.6 KiB
Go
158 lines
3.6 KiB
Go
package descriptor
|
|
|
|
var deviceJoystick = [deviceTypeLen]byte{
|
|
deviceTypeLen,
|
|
TypeDevice,
|
|
0x00, 0x02, // USB version
|
|
0xef, // device class
|
|
0x02, // subclass
|
|
0x01, // protocol
|
|
0x40, // maxpacketsize
|
|
0x41, 0x23, // vendor id
|
|
0x36, 0x80, // product id
|
|
0x00, 0x01, // device
|
|
0x01, // manufacturer
|
|
0x02, // product
|
|
0x03, // SerialNumber
|
|
0x01, // NumConfigurations
|
|
}
|
|
|
|
var DeviceJoystick = DeviceType{
|
|
data: deviceJoystick[:],
|
|
}
|
|
|
|
var configurationCDCJoystick = [configurationTypeLen]byte{
|
|
configurationTypeLen,
|
|
TypeConfiguration,
|
|
0x6b, 0x00, // adjust length as needed
|
|
0x03, // number of interfaces
|
|
0x01, // configuration value
|
|
0x00, // index to string description
|
|
0xa0, // attributes
|
|
0xfa, // maxpower
|
|
}
|
|
|
|
var ConfigurationCDCJoystick = ConfigurationType{
|
|
data: configurationCDCJoystick[:],
|
|
}
|
|
|
|
var interfaceHIDJoystick = [interfaceTypeLen]byte{
|
|
interfaceTypeLen,
|
|
TypeInterface,
|
|
0x02, // InterfaceNumber
|
|
0x00, // AlternateSetting
|
|
0x02, // NumEndpoints
|
|
0x03, // InterfaceClass
|
|
0x00, // InterfaceSubClass
|
|
0x00, // InterfaceProtocol
|
|
0x00, // Interface
|
|
}
|
|
|
|
var InterfaceHIDJoystick = InterfaceType{
|
|
data: interfaceHIDJoystick[:],
|
|
}
|
|
|
|
var classHIDJoystick = [ClassHIDTypeLen]byte{
|
|
ClassHIDTypeLen,
|
|
TypeClassHID,
|
|
0x11, // HID version L
|
|
0x01, // HID version H
|
|
0x00, // CountryCode
|
|
0x01, // NumDescriptors
|
|
0x22, // ClassType
|
|
0x00, // ClassLength L
|
|
0x00, // ClassLength H
|
|
}
|
|
|
|
var ClassHIDJoystick = ClassHIDType{
|
|
data: classHIDJoystick[:],
|
|
}
|
|
|
|
var JoystickDefaultHIDReport = appendSlices([][]byte{
|
|
HIDUsagePageGenericDesktop,
|
|
HIDUsageDesktopJoystick,
|
|
HIDCollectionApplication,
|
|
HIDReportID(1),
|
|
HIDUsagePageButton,
|
|
HIDUsageMinimum(1),
|
|
HIDUsageMaximum(16),
|
|
HIDLogicalMinimum(0),
|
|
HIDLogicalMaximum(1),
|
|
HIDReportSize(1),
|
|
HIDReportCount(16),
|
|
HIDInputDataVarAbs,
|
|
HIDReportCount(1),
|
|
HIDReportSize(3),
|
|
[]byte{
|
|
0x55, 0x00, // Unit Exponent (-16)
|
|
0x65, 0x00, // Unit (0x00)
|
|
},
|
|
HIDInputDataVarAbs,
|
|
|
|
HIDUsagePageGenericDesktop,
|
|
HIDUsageDesktopHatSwitch,
|
|
HIDLogicalMinimum(0),
|
|
HIDLogicalMaximum(7),
|
|
[]byte{
|
|
0x35, 0x00, // PHYSICAL_MINIMUM (0)
|
|
0x46, 0x3b, 0x01, // PHYSICAL_MAXIMUM(315)
|
|
0x65, 0x14, // UNIT (Eng Rot:Angular Pos)
|
|
},
|
|
HIDReportCount(1),
|
|
HIDReportSize(4),
|
|
HIDInputDataVarAbs,
|
|
HIDUsageDesktopHatSwitch,
|
|
HIDLogicalMinimum(0),
|
|
HIDLogicalMaximum(7),
|
|
[]byte{
|
|
0x35, 0x00, // PHYSICAL_MINIMUM (0)
|
|
0x46, 0x3b, 0x01, // PHYSICAL_MAXIMUM(315)
|
|
0x65, 0x14, // UNIT (Eng Rot:Angular Pos)
|
|
},
|
|
HIDReportCount(1),
|
|
HIDReportSize(4),
|
|
HIDInputDataVarAbs,
|
|
HIDUsageDesktopPointer,
|
|
[]byte{
|
|
0x16, 0x01, 0x80, // LOGICAL_MINIMUM (-32767)
|
|
0x26, 0xff, 0x7f, // LOGICAL_MAXIMUM (32767)
|
|
},
|
|
HIDReportCount(6),
|
|
HIDReportSize(16),
|
|
HIDCollectionPhysical,
|
|
HIDUsageDesktopX,
|
|
HIDUsageDesktopY,
|
|
HIDUsageDesktopZ,
|
|
HIDUsageDesktopRx,
|
|
HIDUsageDesktopRy,
|
|
HIDUsageDesktopRz,
|
|
HIDInputDataVarAbs,
|
|
HIDEndCollection,
|
|
HIDEndCollection,
|
|
})
|
|
|
|
// CDCJoystick requires that you append the JoystickDescriptor
|
|
// to the Configuration before using. This is in order to support
|
|
// custom configurations.
|
|
var CDCJoystick = Descriptor{
|
|
Device: DeviceJoystick.Bytes(),
|
|
Configuration: appendSlices([][]byte{
|
|
ConfigurationCDCJoystick.Bytes(),
|
|
InterfaceAssociationCDC.Bytes(),
|
|
InterfaceCDCControl.Bytes(),
|
|
ClassSpecificCDCHeader.Bytes(),
|
|
ClassSpecificCDCACM.Bytes(),
|
|
ClassSpecificCDCUnion.Bytes(),
|
|
ClassSpecificCDCCallManagement.Bytes(),
|
|
EndpointEP1IN.Bytes(),
|
|
InterfaceCDCData.Bytes(),
|
|
EndpointEP2OUT.Bytes(),
|
|
EndpointEP3IN.Bytes(),
|
|
InterfaceHIDJoystick.Bytes(),
|
|
ClassHIDJoystick.Bytes(),
|
|
EndpointEP4IN.Bytes(),
|
|
EndpointEP5OUT.Bytes(),
|
|
}),
|
|
HID: map[uint16][]byte{},
|
|
}
|