Skip to content

Commit 37c2f7e

Browse files
committed
Updated discvoery_client to the latest API
1 parent e968bc3 commit 37c2f7e

File tree

2 files changed

+34
-41
lines changed

2 files changed

+34
-41
lines changed

Diff for: arduino/discovery/discovery_client/go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ replace github.com/arduino/arduino-cli => ../../..
77
require (
88
github.com/arduino/arduino-cli v0.0.0-00010101000000-000000000000
99
github.com/gizak/termui/v3 v3.1.0
10+
github.com/sirupsen/logrus v1.4.2
1011
)
1112

1213
require (
@@ -19,7 +20,6 @@ require (
1920
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 // indirect
2021
github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d // indirect
2122
github.com/pkg/errors v0.9.1 // indirect
22-
github.com/sirupsen/logrus v1.4.2 // indirect
2323
golang.org/x/net v0.0.0-20210505024714-0287a6fb4125 // indirect
2424
golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf // indirect
2525
golang.org/x/text v0.3.6 // indirect

Diff for: arduino/discovery/discovery_client/main.go

+33-40
Original file line numberDiff line numberDiff line change
@@ -21,36 +21,28 @@ import (
2121
"log"
2222
"os"
2323
"sort"
24-
"time"
2524

2625
"github.com/arduino/arduino-cli/arduino/discovery"
26+
"github.com/arduino/arduino-cli/arduino/discovery/discoverymanager"
2727
ui "github.com/gizak/termui/v3"
2828
"github.com/gizak/termui/v3/widgets"
29+
"github.com/sirupsen/logrus"
2930
)
3031

3132
func main() {
32-
discoveries := []*discovery.PluggableDiscovery{}
33-
discEvent := make(chan *discovery.Event)
33+
logrus.SetLevel(logrus.ErrorLevel)
34+
dm := discoverymanager.New()
3435
for _, discCmd := range os.Args[1:] {
35-
disc := discovery.New("", discCmd)
36-
if err := disc.Run(); err != nil {
37-
log.Fatal("Error starting discovery:", err)
38-
}
39-
if err := disc.Start(); err != nil {
40-
log.Fatal("Error starting discovery:", err)
41-
}
42-
eventChan, err := disc.StartSync(10)
43-
if err != nil {
44-
log.Fatal("Error starting discovery:", err)
45-
}
46-
go func() {
47-
for msg := range eventChan {
48-
discEvent <- msg
49-
}
50-
}()
51-
discoveries = append(discoveries, disc)
36+
disc := discovery.New(discCmd, discCmd)
37+
dm.Add(disc)
5238
}
39+
dm.Start()
5340

41+
activePorts := map[string]*discovery.Port{}
42+
watcher, err := dm.Watch()
43+
if err != nil {
44+
log.Fatalf("failed to start discvoeries: %v", err)
45+
}
5446
if err := ui.Init(); err != nil {
5547
log.Fatalf("failed to initialize termui: %v", err)
5648
}
@@ -66,15 +58,20 @@ func main() {
6658
updateList := func() {
6759
rows := []string{}
6860
rows = append(rows, "Available ports list:")
69-
for _, disc := range discoveries {
70-
for i, port := range disc.ListCachedPorts() {
71-
rows = append(rows, fmt.Sprintf(" [%04d] Address: %s", i, port.AddressLabel))
72-
rows = append(rows, fmt.Sprintf(" Protocol: %s", port.ProtocolLabel))
73-
keys := port.Properties.Keys()
74-
sort.Strings(keys)
75-
for _, k := range keys {
76-
rows = append(rows, fmt.Sprintf(" %s=%s", k, port.Properties.Get(k)))
77-
}
61+
62+
ids := sort.StringSlice{}
63+
for id := range activePorts {
64+
ids = append(ids, id)
65+
}
66+
ids.Sort()
67+
for _, id := range ids {
68+
port := activePorts[id]
69+
rows = append(rows, fmt.Sprintf("> Address: %s", port.AddressLabel))
70+
rows = append(rows, fmt.Sprintf(" Protocol: %s", port.ProtocolLabel))
71+
keys := port.Properties.Keys()
72+
sort.Strings(keys)
73+
for _, k := range keys {
74+
rows = append(rows, fmt.Sprintf(" %s=%s", k, port.Properties.Get(k)))
7875
}
7976
}
8077
l.Rows = rows
@@ -123,20 +120,16 @@ out:
123120
previousKey = e.ID
124121
}
125122

126-
case <-discEvent:
123+
case ev := <-watcher.Feed():
124+
if ev.Type == "add" {
125+
activePorts[ev.Port.Address+"|"+ev.Port.Protocol] = ev.Port
126+
}
127+
if ev.Type == "remove" {
128+
delete(activePorts, ev.Port.Address+"|"+ev.Port.Protocol)
129+
}
127130
updateList()
128131
}
129132

130133
ui.Render(l)
131134
}
132-
133-
for _, disc := range discoveries {
134-
disc.Quit()
135-
fmt.Println("Discovery QUITed")
136-
for disc.State() == discovery.Alive {
137-
time.Sleep(time.Millisecond)
138-
}
139-
fmt.Println("Discovery correctly terminated")
140-
}
141-
142135
}

0 commit comments

Comments
 (0)