diff --git a/controls-core/src/commonMain/kotlin/ru/mipt/npm/controls/controllers/DeviceManager.kt b/controls-core/src/commonMain/kotlin/ru/mipt/npm/controls/controllers/DeviceManager.kt index 03880ca..23432ea 100644 --- a/controls-core/src/commonMain/kotlin/ru/mipt/npm/controls/controllers/DeviceManager.kt +++ b/controls-core/src/commonMain/kotlin/ru/mipt/npm/controls/controllers/DeviceManager.kt @@ -1,5 +1,6 @@ package ru.mipt.npm.controls.controllers +import kotlinx.coroutines.launch import ru.mipt.npm.controls.api.Device import ru.mipt.npm.controls.api.DeviceHub import space.kscience.dataforge.context.* @@ -38,6 +39,9 @@ public class DeviceManager : AbstractPlugin(), DeviceHub { public fun DeviceManager.install(name: String, factory: Factory, meta: Meta = Meta.EMPTY): D { val device = factory(meta, context) registerDevice(NameToken(name), device) + device.launch { + device.open() + } return device } diff --git a/demo/src/main/kotlin/ru/mipt/npm/controls/demo/DemoDevice.kt b/demo/src/main/kotlin/ru/mipt/npm/controls/demo/DemoDevice.kt index be80a40..8674a03 100644 --- a/demo/src/main/kotlin/ru/mipt/npm/controls/demo/DemoDevice.kt +++ b/demo/src/main/kotlin/ru/mipt/npm/controls/demo/DemoDevice.kt @@ -34,6 +34,9 @@ class DemoDevice(context: Context, meta: Meta) : DeviceBySpec(DemoDe companion object : DeviceSpec(), Factory { + + override fun invoke(meta: Meta, context: Context): DemoDevice = DemoDevice(context, meta) + // register virtual properties based on actual object state val timeScale by property(MetaConverter.double, DemoDevice::timeScaleState) { metaDescriptor { @@ -77,6 +80,5 @@ class DemoDevice(context: Context, meta: Meta) : DeviceBySpec(DemoDe null } - override fun invoke(meta: Meta, context: Context): DemoDevice = DemoDevice(context, meta) } } \ No newline at end of file