18
18
package main
19
19
20
20
import (
21
- "slices"
22
-
23
21
log "github.com/sirupsen/logrus"
24
22
"go.bug.st/serial/enumerator"
25
23
)
@@ -35,36 +33,30 @@ type OsSerialPort struct {
35
33
// enumerateSerialPorts will return the OS serial port
36
34
func enumerateSerialPorts () ([]* OsSerialPort , error ) {
37
35
// will timeout in 2 seconds
38
- arrPorts := []* OsSerialPort {}
39
36
ports , err := enumerator .GetDetailedPortsList ()
40
37
if err != nil {
41
- return arrPorts , err
38
+ return nil , err
42
39
}
43
40
44
- for _ , element := range ports {
45
- if element .IsUSB {
46
- vid , pid := "0x" + element .VID , "0x" + element .PID
47
- if vid != "0x0000" && pid != "0x0000" {
48
- arrPorts = append (arrPorts , & OsSerialPort {
49
- Name : element .Name ,
50
- VID : vid ,
51
- PID : pid ,
52
- SerialNumber : element .SerialNumber ,
53
- })
54
- }
41
+ var res []* OsSerialPort
42
+ for _ , port := range ports {
43
+ if ! port .IsUSB {
44
+ continue
55
45
}
56
- }
57
-
58
- // see if we should filter the list
59
- if portsFilter != nil {
60
- arrPorts = slices .DeleteFunc (arrPorts , func (port * OsSerialPort ) bool {
61
- match := portsFilter .MatchString (port .Name )
62
- if ! match {
63
- log .Debugf ("ignoring port not matching filter. port: %v\n " , port )
64
- }
65
- return match
46
+ vid , pid := "0x" + port .VID , "0x" + port .PID
47
+ if vid == "0x0000" || pid == "0x0000" {
48
+ continue
49
+ }
50
+ if portsFilter != nil && ! portsFilter .MatchString (port .Name ) {
51
+ log .Debugf ("ignoring port not matching filter. port: %v\n " , port )
52
+ continue
53
+ }
54
+ res = append (res , & OsSerialPort {
55
+ Name : port .Name ,
56
+ VID : vid ,
57
+ PID : pid ,
58
+ SerialNumber : port .SerialNumber ,
66
59
})
67
60
}
68
-
69
- return arrPorts , err
61
+ return res , err
70
62
}
0 commit comments