@@ -143,37 +143,48 @@ func reset(port string, wait bool, l Logger) (string, error) {
143143
144144 // Get port list before reset
145145 ports , err := serial .GetPortsList ()
146- debug (l , "Get port list before reset" )
146+ info (l , "Get port list before reset" )
147147 if err != nil {
148148 return "" , errors .Wrapf (err , "Get port list before reset" )
149149 } else {
150- debug (l , ports )
150+ info (l , ports )
151151 }
152152
153- // Open port
154- mode := & serial.Mode {
155- BaudRate : 1200 ,
153+ // Touch port at 1200bps
154+ err = touchSerialPortAt1200bps (port , l )
155+ if err != nil {
156+ return "" , errors .Wrapf (err , "1200bps Touch" )
157+ }
158+
159+ // Wait for port to disappear and reappear
160+ if wait {
161+ port = waitReset (ports , l )
156162 }
157- p , err := serial .Open (port , mode )
158- debug (l , "Open port" , port )
163+
164+ return port , nil
165+ }
166+
167+ func touchSerialPortAt1200bps (port string , l Logger ) error {
168+ info (l , "Touching port " , port , " at 1200bps" )
169+
170+ // Open port
171+ p , err := serial .Open (port , & serial.Mode {BaudRate : 1200 })
159172 if err != nil {
160- return "" , errors .Wrapf (err , "Open port %s" , port )
173+ return errors .Wrapf (err , "Open port %s" , port )
161174 }
175+ defer p .Close ()
162176
163177 // Set DTR
164178 err = p .SetDTR (false )
165- debug (l , "Set DTR" )
179+ info (l , "Set DTR off " )
166180 if err != nil {
167- return "" , errors .Wrapf (err , "Can't set DTR" )
181+ return errors .Wrapf (err , "Can't set DTR" )
168182 }
169- p .Close ()
170183
171- // Wait for port to disappear and reappear
172- if wait {
173- port = waitReset (ports , l )
174- }
184+ // Wait a bit to allow restart of the board
185+ time .Sleep (200 * time .Millisecond )
175186
176- return port , nil
187+ return nil
177188}
178189
179190// waitReset is meant to be called just after a reset. It watches the ports connected
0 commit comments