add check of node in /dev on start mc (more dont need reboot MC after start server)

This commit is contained in:
MaximZaitsev
2016-08-17 15:48:32 +03:00
parent e267258520
commit 406804f146
+34 -12
View File
@@ -13,24 +13,46 @@ class Udev {
fun start() {
val monitor = udev.monitor()
val microController = MicroController.instance
monitor.on("add", { device ->
if (device.ID_VENDOR_ID == microController.vendorID && device.ID_MODEL_ID == microController.modelID && device.SUBSYSTEM == "tty") {
//mc connected
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")
if (isOurMcDevice(device)) {
connectDevice(device)
}
})
monitor.on("remove", { device ->
if (device.ID_VENDOR_ID == microController.vendorID && device.ID_MODEL_ID == microController.modelID && device.SUBSYSTEM == "tty") {
//mc disconnected
println("mc disconnected")
microController.transportFilePath = ""
mcTransport.closeStreams()
if (isOurMcDevice(device)) {
disconnectDevice(device)
}
})
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
}
}
}
}