diff --git a/src/python/rtcds/fe_generator/front_end.py b/src/python/rtcds/fe_generator/front_end.py index 38ef4b828a436ba3a960b184abf8c07e24f12b0c..044df7b4dd11b074f9b4f8eeb7bfbb9e1f981a1f 100644 --- a/src/python/rtcds/fe_generator/front_end.py +++ b/src/python/rtcds/fe_generator/front_end.py @@ -38,6 +38,7 @@ Description=All models targ_path = path.join(self.target_dir, targ_name) services = ['dis_kosif.service', 'dis_ix.service', 'dis_irm.service', 'dis_sisci.service', 'dis_nodemgr.service'] + with open(targ_path, "wt") as f: f.write(gen_disclaimer) f.write(f"""[Unit] @@ -46,6 +47,10 @@ Wants={" ".join(services)}""") self.serialize_units(services) self.bind_units(services) + + for service in services: + self.part_of(service, targ_name) + return Process(targ_name, 'dis_nodemgr.service', 'dis_kosif.service',) def epics_only_models(self, models): diff --git a/src/python/rtcds/fe_generator/sequencer.py b/src/python/rtcds/fe_generator/sequencer.py index 4ce7182aedd838c08aae251bcdfff47f9f00e8ff..0a80c990f2d96b2b8b8fd2b3aec4aeb1672edc1b 100644 --- a/src/python/rtcds/fe_generator/sequencer.py +++ b/src/python/rtcds/fe_generator/sequencer.py @@ -32,11 +32,19 @@ class Sequencer(object): before_world = [] world = [] models = False - if self.options["HAS_DOLPHIN_PORT"] and self.options["IS_DOLPHIN_NODE"]: - before_world.append(self.processes.dolphin_port()) - before_world.append(self.delay(15, "dolphin_port")) if self.options["IS_DOLPHIN_NODE"]: - before_world.append(self.processes.dolphin_drivers()) + dolphin_drivers = self.processes.dolphin_drivers() + if self.options["HAS_DOLPHIN_PORT"]: + dolphin_port = self.processes.dolphin_port() + + # bind drivers to port control so that drivers automatically get disabled + # when port is closed + self.processes.binds_to(dolphin_drivers.first_service, dolphin_port.start) + + before_world.append(dolphin_port) + before_world.append(self.delay(15, "dolphin_port")) + before_world.append(dolphin_drivers) + klog("dolphin drivers added") before_world.append(self.delay(30, "startup")) if self.options["HAS_EPICS_ONLY_MODELS"]: world.append(self.processes.epics_only_models(self.options["EPICS_ONLY_MODELS"]))