From 7b56436983613995db255752e0b7cdc35e156be9 Mon Sep 17 00:00:00 2001 From: Alexander Nozik Date: Sat, 23 Oct 2021 20:00:00 +0300 Subject: [PATCH] Add open to device initializer --- .../kotlin/ru/mipt/npm/controls/controllers/DeviceManager.kt | 4 ++++ demo/src/main/kotlin/ru/mipt/npm/controls/demo/DemoDevice.kt | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) 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