diff --git a/device.go b/device.go index f6f4f5c..e538634 100644 --- a/device.go +++ b/device.go @@ -16,6 +16,7 @@ type Device struct { serialNumber string Port int MjpegPort int + ConnType string d giDevice.Device } @@ -40,6 +41,12 @@ func WithMjpegPort(port int) DeviceOption { } } +func WithConnType(typ string) DeviceOption { + return func(d *Device) { + d.ConnType = typ + } +} + func NewDevice(options ...DeviceOption) (device *Device, err error) { var usbmux giDevice.Usbmux if usbmux, err = giDevice.NewUsbmux(); err != nil { @@ -54,6 +61,7 @@ func NewDevice(options ...DeviceOption) (device *Device, err error) { device = &Device{ Port: defaultPort, MjpegPort: defaultMjpegPort, + ConnType: "USB", } for _, option := range options { option(device) @@ -62,7 +70,7 @@ func NewDevice(options ...DeviceOption) (device *Device, err error) { serialNumber := device.serialNumber for _, d := range deviceList { // find device by serial number if specified - if serialNumber != "" && d.Properties().SerialNumber != serialNumber { + if (serialNumber != "" && d.Properties().SerialNumber != serialNumber) || d.Properties().ConnectionType != device.ConnType { continue } @@ -86,14 +94,20 @@ func DeviceList() (devices []Device, err error) { return nil, fmt.Errorf("device list: %w", err) } - devices = make([]Device, len(deviceList)) + for i := range deviceList { + if deviceList[i].Properties().ConnectionType != "USB" { + continue + } - for i := range devices { - devices[i].deviceID = deviceList[i].Properties().DeviceID - devices[i].serialNumber = deviceList[i].Properties().SerialNumber - devices[i].Port = defaultPort - devices[i].MjpegPort = defaultMjpegPort - devices[i].d = deviceList[i] + d := Device{ + deviceID: deviceList[i].Properties().DeviceID, + serialNumber: deviceList[i].Properties().SerialNumber, + ConnType: deviceList[i].Properties().ConnectionType, + Port: defaultPort, + MjpegPort: defaultMjpegPort, + d: deviceList[i], + } + devices = append(devices, d) } return