Skip to content

Commit 9f10d3c

Browse files
committed
Restore functionality of 'is_open' field in portlist
1 parent 8e28a0c commit 9f10d3c

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

serial.go

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

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

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)