Skip to content

Commit c42fcd7

Browse files
authored
Restore functionality of 'is_open' field in portlist (#939)
* Restore functionality of 'is_open' field in portlist * Added comments
1 parent 8e28a0c commit c42fcd7

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

Diff for: serial.go

+29
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,35 @@ func (sp *SerialPortList) remove(removedPort *discovery.Port) {
239239
})
240240
}
241241

242+
// MarkPortAsOpened marks a port as opened by the user
243+
func (sp *SerialPortList) MarkPortAsOpened(portname string) {
244+
sp.portsLock.Lock()
245+
defer sp.portsLock.Unlock()
246+
port := sp.getPortByName(portname)
247+
if port != nil {
248+
port.IsOpen = true
249+
}
250+
}
251+
252+
// MarkPortAsClosed marks a port as no more opened by the user
253+
func (sp *SerialPortList) MarkPortAsClosed(portname string) {
254+
sp.portsLock.Lock()
255+
defer sp.portsLock.Unlock()
256+
port := sp.getPortByName(portname)
257+
if port != nil {
258+
port.IsOpen = false
259+
}
260+
}
261+
262+
func (sp *SerialPortList) getPortByName(portname string) *SpPortItem {
263+
for _, port := range sp.Ports {
264+
if port.Name == portname {
265+
return port
266+
}
267+
}
268+
return nil
269+
}
270+
242271
func spErr(err string) {
243272
//log.Println("Sending err back: ", err)
244273
//h.broadcastSys <- []byte(err)

Diff for: serialport.go

+4
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ type serport struct {
3939
// The serial port connection.
4040
portConf *SerialConfig
4141
portIo io.ReadWriteCloser
42+
portName string
4243

4344
// Keep track of whether we're being actively closed
4445
// just so we don't show scary error messages
@@ -305,6 +306,7 @@ func spHandlerOpen(portname string, baud int, buftype string) {
305306
sendRaw: make(chan string),
306307
portConf: conf,
307308
portIo: sp,
309+
portName: portname,
308310
BufferType: buftype}
309311

310312
var bw Bufferflow
@@ -326,6 +328,7 @@ func spHandlerOpen(portname string, baud int, buftype string) {
326328
sh.Register(p)
327329
defer sh.Unregister(p)
328330

331+
serialPorts.MarkPortAsOpened(portname)
329332
serialPorts.List()
330333

331334
// this is internally buffered thread to not send to serial port if blocked
@@ -349,5 +352,6 @@ func spHandlerClose(p *serport) {
349352
func spCloseReal(p *serport) {
350353
p.bufferwatcher.Close()
351354
p.portIo.Close()
355+
serialPorts.MarkPortAsClosed(p.portName)
352356
serialPorts.List()
353357
}

0 commit comments

Comments
 (0)