add check of node in /dev on start mc (more dont need reboot MC after start server)
This commit is contained in:
@@ -13,24 +13,46 @@ class Udev {
|
|||||||
|
|
||||||
fun start() {
|
fun start() {
|
||||||
val monitor = udev.monitor()
|
val monitor = udev.monitor()
|
||||||
val microController = MicroController.instance
|
|
||||||
monitor.on("add", { device ->
|
monitor.on("add", { device ->
|
||||||
if (device.ID_VENDOR_ID == microController.vendorID && device.ID_MODEL_ID == microController.modelID && device.SUBSYSTEM == "tty") {
|
if (isOurMcDevice(device)) {
|
||||||
//mc connected
|
connectDevice(device)
|
||||||
println("mc connected. transport file is " + device.DEVNAME)
|
|
||||||
microController.transportFilePath = device.DEVNAME;
|
|
||||||
mcTransport.initStreams(device.DEVNAME)
|
|
||||||
exec("stty -F ${MicroController.instance.transportFilePath} raw -echo -echoe -echok")
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
monitor.on("remove", { device ->
|
monitor.on("remove", { device ->
|
||||||
if (device.ID_VENDOR_ID == microController.vendorID && device.ID_MODEL_ID == microController.modelID && device.SUBSYSTEM == "tty") {
|
if (isOurMcDevice(device)) {
|
||||||
//mc disconnected
|
disconnectDevice(device)
|
||||||
println("mc disconnected")
|
|
||||||
microController.transportFilePath = ""
|
|
||||||
mcTransport.closeStreams()
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
readFileIfMcConnected()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun isOurMcDevice(device: dynamic): Boolean {
|
||||||
|
val microController = MicroController.instance
|
||||||
|
return device.ID_VENDOR_ID == microController.vendorID && device.ID_MODEL_ID == microController.modelID && device.SUBSYSTEM == "tty"
|
||||||
|
}
|
||||||
|
|
||||||
|
fun disconnectDevice(device: dynamic) {
|
||||||
|
println("mc disconnected")
|
||||||
|
MicroController.instance.transportFilePath = ""
|
||||||
|
mcTransport.closeStreams()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun connectDevice(device: dynamic) {
|
||||||
|
println("mc connected. transport file is " + device.DEVNAME)
|
||||||
|
MicroController.instance.transportFilePath = device.DEVNAME;
|
||||||
|
mcTransport.initStreams(device.DEVNAME)
|
||||||
|
exec("stty -F ${MicroController.instance.transportFilePath} raw -echo -echoe -echok")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun readFileIfMcConnected() {
|
||||||
|
val allTtyDevices = udev.list("tty")
|
||||||
|
for (device in allTtyDevices) {
|
||||||
|
if (isOurMcDevice(device)) {
|
||||||
|
connectDevice(device)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user