Skip to content

Commit 9111b42

Browse files
committed
Pass context as pointer
1 parent ddd22b7 commit 9111b42

File tree

4 files changed

+42
-12
lines changed

4 files changed

+42
-12
lines changed

src/github.com/arduino-libraries/WiFi101-FirmwareUpdater/bossac/bossac.go

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import (
1616
type Bossac struct {
1717
}
1818

19-
func (b *Bossac) Flash(ctx context.Context, filename string) error {
19+
func (b *Bossac) Flash(ctx *context.Context, filename string) error {
2020
log.Println("Flashing " + filename)
2121

2222
port, err := reset(ctx.PortName, true)
@@ -26,12 +26,12 @@ func (b *Bossac) Flash(ctx context.Context, filename string) error {
2626
err = invokeBossac([]string{ctx.ProgrammerPath, "-e", "-R", "-p", port, "-w", filename})
2727

2828
ports, err := serial.GetPortsList()
29-
ctx.PortName = waitReset(ports, port)
29+
ctx.PortName = waitPort(ports, port)
3030

3131
return err
3232
}
3333

34-
func (b *Bossac) DumpAndFlash(ctx context.Context, filename string) (string, error) {
34+
func (b *Bossac) DumpAndFlash(ctx *context.Context, filename string) (string, error) {
3535
log.Println("Flashing " + filename)
3636
dir, err := ioutil.TempDir("", "wifiFlasher_dump")
3737
port, err := reset(ctx.PortName, true)
@@ -46,7 +46,7 @@ func (b *Bossac) DumpAndFlash(ctx context.Context, filename string) (string, err
4646
err = invokeBossac([]string{ctx.ProgrammerPath, "-e", "-R", "-p", port, "-w", filename})
4747

4848
ports, err := serial.GetPortsList()
49-
ctx.PortName = waitReset(ports, port)
49+
ctx.PortName = waitPort(ports, port)
5050

5151
return filepath.Join(dir, "dump.bin"), err
5252
}
@@ -158,6 +158,36 @@ func waitReset(beforeReset []string, originalPort string) string {
158158
return port
159159
}
160160

161+
func waitPort(beforeReset []string, originalPort string) string {
162+
var port string
163+
timeout := false
164+
165+
go func() {
166+
time.Sleep(10 * time.Second)
167+
timeout = true
168+
}()
169+
170+
for {
171+
ports, _ := serial.GetPortsList()
172+
port = differ(ports, beforeReset)
173+
174+
if port != "" {
175+
break
176+
}
177+
if timeout {
178+
break
179+
}
180+
time.Sleep(time.Millisecond * 100)
181+
}
182+
183+
// try to upload on the existing port if the touch was ineffective
184+
if port == "" {
185+
port = originalPort
186+
}
187+
188+
return port
189+
}
190+
161191
// differ returns the first item that differ between the two input slices
162192
func differ(slice1 []string, slice2 []string) string {
163193
m := map[string]int{}

src/github.com/arduino-libraries/WiFi101-FirmwareUpdater/context/context.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@ type Context struct {
2828
}
2929

3030
type Programmer interface {
31-
DumpAndFlash(ctx Context, filename string) (string, error)
32-
Flash(ctx Context, filename string) error
31+
DumpAndFlash(ctx *Context, filename string) (string, error)
32+
Flash(ctx *Context, filename string) error
3333
}

src/github.com/arduino-libraries/WiFi101-FirmwareUpdater/nina/main.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ func Run(ctx context.Context) {
4747
if ctx.FWUploaderBinary != "" {
4848
log.Println("Flashing firmware uploader")
4949
if ctx.BinaryToRestore == "" {
50-
ctx.BinaryToRestore, err = programmer.DumpAndFlash(ctx, ctx.FWUploaderBinary)
50+
ctx.BinaryToRestore, err = programmer.DumpAndFlash(&ctx, ctx.FWUploaderBinary)
5151
} else {
52-
err = programmer.Flash(ctx, ctx.FWUploaderBinary)
52+
err = programmer.Flash(&ctx, ctx.FWUploaderBinary)
5353
}
5454
if err != nil {
5555
log.Fatal(err)
@@ -105,7 +105,7 @@ func Run(ctx context.Context) {
105105
log.Println("Restoring previous sketch")
106106
f.Close()
107107

108-
if err := programmer.Flash(ctx, ctx.BinaryToRestore); err != nil {
108+
if err := programmer.Flash(&ctx, ctx.BinaryToRestore); err != nil {
109109
log.Fatal(err)
110110
}
111111

src/github.com/arduino-libraries/WiFi101-FirmwareUpdater/winc/main.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ func Run(ctx context.Context) {
4343
if ctx.FWUploaderBinary != "" {
4444
log.Println("Flashing firmware uploader")
4545
if ctx.BinaryToRestore == "" {
46-
ctx.BinaryToRestore, err = programmer.DumpAndFlash(ctx, ctx.FWUploaderBinary)
46+
ctx.BinaryToRestore, err = programmer.DumpAndFlash(&ctx, ctx.FWUploaderBinary)
4747
} else {
48-
err = programmer.Flash(ctx, ctx.FWUploaderBinary)
48+
err = programmer.Flash(&ctx, ctx.FWUploaderBinary)
4949
}
5050
if err != nil {
5151
log.Fatal(err)
@@ -101,7 +101,7 @@ func Run(ctx context.Context) {
101101
log.Println("Restoring previous sketch")
102102
f.Close()
103103

104-
if err := programmer.Flash(ctx, ctx.BinaryToRestore); err != nil {
104+
if err := programmer.Flash(&ctx, ctx.BinaryToRestore); err != nil {
105105
log.Fatal(err)
106106
}
107107

0 commit comments

Comments
 (0)