From 406804f146a059ee318aed6121e9d749ae4a85dc Mon Sep 17 00:00:00 2001 From: MaximZaitsev Date: Wed, 17 Aug 2016 15:48:32 +0300 Subject: [PATCH] add check of node in /dev on start mc (more dont need reboot MC after start server) --- car_srv/kotlinSrv/src/Udev.kt | 46 ++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/car_srv/kotlinSrv/src/Udev.kt b/car_srv/kotlinSrv/src/Udev.kt index 55c0f2f6467..8cabde50867 100644 --- a/car_srv/kotlinSrv/src/Udev.kt +++ b/car_srv/kotlinSrv/src/Udev.kt @@ -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 + } + } } } \ No newline at end of file