Add Device.Manufacturer(), .Product() and .SerialNumber() (#14)
This commit is contained in:

committed by
zagrodzki

parent
1aaa100bdb
commit
757722bf8e
@@ -15,175 +15,195 @@
|
||||
package gousb
|
||||
|
||||
// fake devices connected through the fakeLibusb stack.
|
||||
var fakeDevices = []*DeviceDesc{
|
||||
type fakeDevice struct {
|
||||
devDesc *DeviceDesc
|
||||
strDesc map[int]string
|
||||
alt uint8
|
||||
}
|
||||
|
||||
var fakeDevices = []fakeDevice{
|
||||
// Bus 001 Device 001: ID 9999:0001
|
||||
// One config, one interface, one setup,
|
||||
// two endpoints: 0x01 OUT, 0x82 IN.
|
||||
&DeviceDesc{
|
||||
Bus: 1,
|
||||
Address: 1,
|
||||
Spec: Version(2, 0),
|
||||
Device: Version(1, 0),
|
||||
Vendor: ID(0x9999),
|
||||
Product: ID(0x0001),
|
||||
Protocol: 255,
|
||||
Configs: map[int]ConfigDesc{1: {
|
||||
Number: 1,
|
||||
MaxPower: Milliamperes(100),
|
||||
Interfaces: []InterfaceDesc{{
|
||||
Number: 0,
|
||||
AltSettings: []InterfaceSetting{{
|
||||
Number: 0,
|
||||
Alternate: 0,
|
||||
Class: ClassVendorSpec,
|
||||
Endpoints: map[EndpointAddress]EndpointDesc{
|
||||
0x01: {
|
||||
Address: 0x01,
|
||||
Number: 1,
|
||||
Direction: EndpointDirectionOut,
|
||||
MaxPacketSize: 512,
|
||||
TransferType: TransferTypeBulk,
|
||||
{
|
||||
devDesc: &DeviceDesc{
|
||||
Bus: 1,
|
||||
Address: 1,
|
||||
Spec: Version(2, 0),
|
||||
Device: Version(1, 0),
|
||||
Vendor: ID(0x9999),
|
||||
Product: ID(0x0001),
|
||||
Protocol: 255,
|
||||
Configs: map[int]ConfigDesc{1: {
|
||||
Number: 1,
|
||||
MaxPower: Milliamperes(100),
|
||||
Interfaces: []InterfaceDesc{{
|
||||
Number: 0,
|
||||
AltSettings: []InterfaceSetting{{
|
||||
Number: 0,
|
||||
Alternate: 0,
|
||||
Class: ClassVendorSpec,
|
||||
Endpoints: map[EndpointAddress]EndpointDesc{
|
||||
0x01: {
|
||||
Address: 0x01,
|
||||
Number: 1,
|
||||
Direction: EndpointDirectionOut,
|
||||
MaxPacketSize: 512,
|
||||
TransferType: TransferTypeBulk,
|
||||
},
|
||||
0x82: {
|
||||
Address: 0x82,
|
||||
Number: 2,
|
||||
Direction: EndpointDirectionIn,
|
||||
MaxPacketSize: 512,
|
||||
TransferType: TransferTypeBulk,
|
||||
},
|
||||
},
|
||||
0x82: {
|
||||
Address: 0x82,
|
||||
Number: 2,
|
||||
Direction: EndpointDirectionIn,
|
||||
MaxPacketSize: 512,
|
||||
TransferType: TransferTypeBulk,
|
||||
},
|
||||
},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
},
|
||||
},
|
||||
// Bus 001 Device 002: ID 8888:0002
|
||||
// One config, two interfaces. interface #0 with no endpoints,
|
||||
// interface #1 with two alt setups with different packet sizes for
|
||||
// endpoints. Two isochronous endpoints, 0x05 OUT and 0x86 OUT.
|
||||
&DeviceDesc{
|
||||
Bus: 1,
|
||||
Address: 2,
|
||||
Spec: Version(2, 0),
|
||||
Device: Version(1, 3),
|
||||
Vendor: ID(0x8888),
|
||||
Product: ID(0x0002),
|
||||
Protocol: 255,
|
||||
Configs: map[int]ConfigDesc{1: {
|
||||
Number: 1,
|
||||
MaxPower: Milliamperes(100),
|
||||
Interfaces: []InterfaceDesc{{
|
||||
Number: 0,
|
||||
AltSettings: []InterfaceSetting{{
|
||||
Number: 0,
|
||||
Alternate: 0,
|
||||
Class: ClassVendorSpec,
|
||||
}},
|
||||
}, {
|
||||
Number: 1,
|
||||
AltSettings: []InterfaceSetting{{
|
||||
Number: 1,
|
||||
Alternate: 0,
|
||||
Class: ClassVendorSpec,
|
||||
Endpoints: map[EndpointAddress]EndpointDesc{
|
||||
0x05: {
|
||||
Address: 0x05,
|
||||
Number: 5,
|
||||
Direction: EndpointDirectionOut,
|
||||
MaxPacketSize: 3 * 1024,
|
||||
TransferType: TransferTypeIsochronous,
|
||||
UsageType: IsoUsageTypeData,
|
||||
},
|
||||
0x86: {
|
||||
Address: 0x86,
|
||||
Number: 6,
|
||||
Direction: EndpointDirectionIn,
|
||||
MaxPacketSize: 3 * 1024,
|
||||
TransferType: TransferTypeIsochronous,
|
||||
UsageType: IsoUsageTypeData,
|
||||
},
|
||||
},
|
||||
{
|
||||
devDesc: &DeviceDesc{
|
||||
Bus: 1,
|
||||
Address: 2,
|
||||
Spec: Version(2, 0),
|
||||
Device: Version(1, 3),
|
||||
Vendor: ID(0x8888),
|
||||
Product: ID(0x0002),
|
||||
Protocol: 255,
|
||||
Configs: map[int]ConfigDesc{1: {
|
||||
Number: 1,
|
||||
MaxPower: Milliamperes(100),
|
||||
Interfaces: []InterfaceDesc{{
|
||||
Number: 0,
|
||||
AltSettings: []InterfaceSetting{{
|
||||
Number: 0,
|
||||
Alternate: 0,
|
||||
Class: ClassVendorSpec,
|
||||
}},
|
||||
}, {
|
||||
Number: 1,
|
||||
Alternate: 1,
|
||||
Class: ClassVendorSpec,
|
||||
Endpoints: map[EndpointAddress]EndpointDesc{
|
||||
0x05: {
|
||||
Address: 0x05,
|
||||
Number: 5,
|
||||
Direction: EndpointDirectionOut,
|
||||
MaxPacketSize: 2 * 1024,
|
||||
TransferType: TransferTypeIsochronous,
|
||||
Number: 1,
|
||||
AltSettings: []InterfaceSetting{{
|
||||
Number: 1,
|
||||
Alternate: 0,
|
||||
Class: ClassVendorSpec,
|
||||
Endpoints: map[EndpointAddress]EndpointDesc{
|
||||
0x05: {
|
||||
Address: 0x05,
|
||||
Number: 5,
|
||||
Direction: EndpointDirectionOut,
|
||||
MaxPacketSize: 3 * 1024,
|
||||
TransferType: TransferTypeIsochronous,
|
||||
UsageType: IsoUsageTypeData,
|
||||
},
|
||||
0x86: {
|
||||
Address: 0x86,
|
||||
Number: 6,
|
||||
Direction: EndpointDirectionIn,
|
||||
MaxPacketSize: 3 * 1024,
|
||||
TransferType: TransferTypeIsochronous,
|
||||
UsageType: IsoUsageTypeData,
|
||||
},
|
||||
},
|
||||
0x86: {
|
||||
Address: 0x86,
|
||||
Number: 6,
|
||||
Direction: EndpointDirectionIn,
|
||||
MaxPacketSize: 2 * 1024,
|
||||
TransferType: TransferTypeIsochronous,
|
||||
}, {
|
||||
Number: 1,
|
||||
Alternate: 1,
|
||||
Class: ClassVendorSpec,
|
||||
Endpoints: map[EndpointAddress]EndpointDesc{
|
||||
0x05: {
|
||||
Address: 0x05,
|
||||
Number: 5,
|
||||
Direction: EndpointDirectionOut,
|
||||
MaxPacketSize: 2 * 1024,
|
||||
TransferType: TransferTypeIsochronous,
|
||||
},
|
||||
0x86: {
|
||||
Address: 0x86,
|
||||
Number: 6,
|
||||
Direction: EndpointDirectionIn,
|
||||
MaxPacketSize: 2 * 1024,
|
||||
TransferType: TransferTypeIsochronous,
|
||||
},
|
||||
},
|
||||
},
|
||||
}, {
|
||||
Number: 1,
|
||||
Alternate: 2,
|
||||
Class: ClassVendorSpec,
|
||||
Endpoints: map[EndpointAddress]EndpointDesc{
|
||||
0x05: {
|
||||
Address: 0x05,
|
||||
Number: 5,
|
||||
Direction: EndpointDirectionIn,
|
||||
MaxPacketSize: 1024,
|
||||
TransferType: TransferTypeIsochronous,
|
||||
}, {
|
||||
Number: 1,
|
||||
Alternate: 2,
|
||||
Class: ClassVendorSpec,
|
||||
Endpoints: map[EndpointAddress]EndpointDesc{
|
||||
0x05: {
|
||||
Address: 0x05,
|
||||
Number: 5,
|
||||
Direction: EndpointDirectionIn,
|
||||
MaxPacketSize: 1024,
|
||||
TransferType: TransferTypeIsochronous,
|
||||
},
|
||||
0x86: {
|
||||
Address: 0x86,
|
||||
Number: 6,
|
||||
Direction: EndpointDirectionIn,
|
||||
MaxPacketSize: 1024,
|
||||
TransferType: TransferTypeIsochronous,
|
||||
},
|
||||
},
|
||||
0x86: {
|
||||
Address: 0x86,
|
||||
Number: 6,
|
||||
Direction: EndpointDirectionIn,
|
||||
MaxPacketSize: 1024,
|
||||
TransferType: TransferTypeIsochronous,
|
||||
},
|
||||
},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
iManufacturer: 1,
|
||||
iProduct: 2,
|
||||
iSerialNumber: 3,
|
||||
},
|
||||
strDesc: map[int]string{
|
||||
1: "ACME Industries",
|
||||
2: "Fidgety Gadget",
|
||||
3: "01234567",
|
||||
},
|
||||
},
|
||||
// Bus 001 Device 003: ID 9999:0002
|
||||
// One config, one interface, one setup,
|
||||
// two endpoints: 0x01 OUT, 0x81 IN.
|
||||
&DeviceDesc{
|
||||
Bus: 1,
|
||||
Address: 3,
|
||||
Spec: Version(2, 0),
|
||||
Device: Version(1, 0),
|
||||
Vendor: ID(0x1111),
|
||||
Product: ID(0x1111),
|
||||
Protocol: 255,
|
||||
Configs: map[int]ConfigDesc{1: {
|
||||
Number: 1,
|
||||
MaxPower: Milliamperes(100),
|
||||
Interfaces: []InterfaceDesc{{
|
||||
Number: 0,
|
||||
AltSettings: []InterfaceSetting{{
|
||||
Number: 0,
|
||||
Alternate: 0,
|
||||
Class: ClassVendorSpec,
|
||||
Endpoints: map[EndpointAddress]EndpointDesc{
|
||||
0x01: {
|
||||
Address: 0x01,
|
||||
Number: 1,
|
||||
Direction: EndpointDirectionOut,
|
||||
MaxPacketSize: 512,
|
||||
TransferType: TransferTypeBulk,
|
||||
{
|
||||
devDesc: &DeviceDesc{
|
||||
Bus: 1,
|
||||
Address: 3,
|
||||
Spec: Version(2, 0),
|
||||
Device: Version(1, 0),
|
||||
Vendor: ID(0x1111),
|
||||
Product: ID(0x1111),
|
||||
Protocol: 255,
|
||||
Configs: map[int]ConfigDesc{1: {
|
||||
Number: 1,
|
||||
MaxPower: Milliamperes(100),
|
||||
Interfaces: []InterfaceDesc{{
|
||||
Number: 0,
|
||||
AltSettings: []InterfaceSetting{{
|
||||
Number: 0,
|
||||
Alternate: 0,
|
||||
Class: ClassVendorSpec,
|
||||
Endpoints: map[EndpointAddress]EndpointDesc{
|
||||
0x01: {
|
||||
Address: 0x01,
|
||||
Number: 1,
|
||||
Direction: EndpointDirectionOut,
|
||||
MaxPacketSize: 512,
|
||||
TransferType: TransferTypeBulk,
|
||||
},
|
||||
0x81: {
|
||||
Address: 0x81,
|
||||
Number: 1,
|
||||
Direction: EndpointDirectionIn,
|
||||
MaxPacketSize: 512,
|
||||
TransferType: TransferTypeBulk,
|
||||
},
|
||||
},
|
||||
0x81: {
|
||||
Address: 0x81,
|
||||
Number: 1,
|
||||
Direction: EndpointDirectionIn,
|
||||
MaxPacketSize: 512,
|
||||
TransferType: TransferTypeBulk,
|
||||
},
|
||||
},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
}},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
Reference in New Issue
Block a user