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() {
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user