def get_description_from_driver(device_path=None): conf = PeerConfig('amplifier') conf.add_local_param('driver_executable', 'drivers/eeg/cpp_amplifiers/gtec_amplifier') conf.add_local_param('samples_per_packet', '4') driv = DriverComm(conf, catch_signals=False) descr = driv.get_driver_description() try: dic = json.loads(descr) except ValueError, e: print "AMPLIFIER ", device_path, "IS PROBABLY BUSY.", print "Invalid channel description: ", descr dic = None
def get_description_from_driver(device_path): conf = PeerConfig('amplifier') conf.add_local_param('driver_executable', _AMP_EXECUTABLE) conf.add_local_param('samples_per_packet', '4') conf.add_local_param('bluetooth_device', '') conf.add_local_param('usb_device', device_path) driv = DriverComm(conf, catch_signals=False) descr = driv.get_driver_description() try: dic = json.loads(descr) except ValueError, e: print "AMPLIFIER ", device_path, "IS PROBABLY BUSY.", print "Invalid channel description: ", descr dic = None
def __init__(self, peer_id, experiment_id, config=None, path=None, machine=None, logger=None): self.peer_id = peer_id self.experiment_id = experiment_id self.config = PeerConfig(peer_id) self.path = path self.machine = machine self.public_params = [] self.logger = logger or logging.getLogger( "ObciExperimentConfig.peer_id") self.del_after_stop = False
def get_description_from_driver(device_path): conf = PeerConfig("amplifier") conf.add_local_param("driver_executable", "drivers/eeg/cpp_amplifiers/tmsi_amplifier") conf.add_local_param("samples_per_packet", "4") conf.add_local_param("bluetooth_device", "") conf.add_local_param("usb_device", device_path) driv = DriverComm(conf, catch_signals=False) descr = driv.get_driver_description() try: dic = json.loads(descr) except ValueError, e: print "AMPLIFIER ", device_path, "IS PROBABLY BUSY.", print "Invalid channel description: ", descr dic = None
def __init__(self, peer_id, experiment_id, config=None, path=None, machine=None, logger=None): self.peer_id = peer_id self.experiment_id = experiment_id self.config = PeerConfig(peer_id) self.path = path self.machine = machine self.public_params = [] self.logger = logger or logging.getLogger("ObciExperimentConfig.peer_id") self.del_after_stop = False
def get_description_from_driver(device_path): conf = PeerConfig('amplifier') conf.add_local_param('driver_executable', _AMP_EXECUTABLE) conf.add_local_param('samples_per_packet', '4') conf.add_local_param('bluetooth_device', '') conf.add_local_param('usb_device', device_path) driv = DriverComm(conf, catch_signals=False) descr = driv.get_driver_description() try: dic = json.loads(descr) except ValueError as e: print("AMPLIFIER ", device_path, "IS PROBABLY BUSY.", end=' ') print("Invalid channel description: ", descr) dic = None driv.terminate_driver() return dic
def _handle_new_peer_added(self, msg): # add new peer status and configuration so it is visible in GUI peer_id = msg.peer_id index = self.index_of(msg.uuid) if index is not None: exp = self.experiments[index] par = PeerConfigParserDict() conf = PeerConfig(peer_id) dic_conf = json.loads(msg.config) par.parse(dic_conf, conf) exp.exp_config.extend_with_peer(peer_id, msg.peer_path, conf) exp.status.peers_status[peer_id] = launcher_tools.PeerStatus(peer_id, status_name=msg.status_name) print msg
def get_description_from_driver(): conf = PeerConfig('amplifier') conf.add_local_param('driver_executable', _AMP_EXECUTABLE) conf.add_local_param('samples_per_packet', '4') driv = DriverComm(conf, catch_signals=False) descr = driv.get_driver_description() dic = json.loads(descr) driv.terminate_driver() return dic
def launch_data(self): ser = PeerConfigSerializerCmd() args = [self.peer_id] peer_parser = peer.peer_config_parser.parser("ini") base_config = PeerConfig(self.peer_id) conf_path = launcher_tools.default_config_path(self.path) if conf_path: with codecs.open(conf_path, "r", "utf8") as f: self.logger.info("parsing default config for peer %s, %s ", self.peer_id, conf_path) peer_parser.parse(f, base_config) ser.serialize_diff(base_config, self.config, args) return dict(peer_id=self.peer_id, experiment_id=self.experiment_id, path=self.path, machine=self.machine, args=args, peer_type=self.peer_type())
class PeerConfigDescription(object): def __init__(self, peer_id, experiment_id, config=None, path=None, machine=None, logger=None): self.peer_id = peer_id self.experiment_id = experiment_id self.config = PeerConfig(peer_id) self.path = path self.machine = machine self.public_params = [] self.logger = logger or logging.getLogger( "ObciExperimentConfig.peer_id") self.del_after_stop = False def __str__(self): return self.peer_id def ready(self, details=None): loc_det = {} ready = self.config is not None and \ self.path is not None and\ self.machine is not None and\ self.peer_id is not None if not ready: return ready ready = self.config.config_sources_ready(loc_det) and ready ready = self.config.launch_deps_ready(loc_det) and ready if details is not None: details[self.peer_id] = loc_det return ready def list_config_sources(self): return [ val for val in self.config.config_sources.values() if val in self.config.used_config_sources() ] def list_launch_deps(self): return self.config.launch_deps.values() def status(self, peer_status_obj): det = {} ready = self.ready(det) st = launcher_tools.READY_TO_LAUNCH if ready else launcher_tools.NOT_READY peer_status_obj.set_status(st, details=det) def peer_type(self): if self.peer_id.startswith('mx'): return 'multiplexer' else: return 'obci_peer' def launch_data(self): ser = PeerConfigSerializerCmd() args = [self.peer_id] peer_parser = peer.peer_config_parser.parser("ini") base_config = PeerConfig(self.peer_id) conf_path = launcher_tools.default_config_path(self.path) if conf_path: with codecs.open(conf_path, "r", "utf8") as f: self.logger.info("parsing default config for peer %s, %s ", self.peer_id, conf_path) peer_parser.parse(f, base_config) ser.serialize_diff(base_config, self.config, args) return dict(peer_id=self.peer_id, experiment_id=self.experiment_id, path=self.path, machine=self.machine, args=args, peer_type=self.peer_type()) def info(self, detailed=False): info = dict(peer_id=self.peer_id, path=self.path, machine=self.machine, peer_type=self.peer_type()) if not self.config: return info info[CONFIG_SOURCES] = self.config.config_sources info[LAUNCH_DEPENDENCIES] = self.config.launch_deps if detailed: info[LOCAL_PARAMS] = self.config.local_params info[EXT_PARAMS] = self.config.ext_param_defs return info
v = self.driver_out_q.get_nowait() self.logger.info(v) except Empty: time.sleep(0.1) sys.exit(self.driver.returncode) def enqueue_output(out, queue): for line in iter(out.readline, ''): queue.put(line) out.close() if __name__ == "__main__": from obci.control.peer.peer_config import PeerConfig import json conf = PeerConfig('amplifier') conf.add_local_param('driver_executable', 'drivers/eeg/cpp_amplifiers/tmsi_amplifier') conf.add_local_param('samples_per_packet', '4') conf.add_local_param('bluetooth_device', '') conf.add_local_param('usb_device', '/dev/tmsi0') driv = DriverComm(conf) descr = driv.get_driver_description() dic = json.loads(descr) driv.start_sampling() time.sleep(3) driv.terminate_driver()
class PeerConfigDescription(object): def __init__(self, peer_id, experiment_id, config=None, path=None, machine=None, logger=None): self.peer_id = peer_id self.experiment_id = experiment_id self.config = PeerConfig(peer_id) self.path = path self.machine = machine self.public_params = [] self.logger = logger or logging.getLogger("ObciExperimentConfig.peer_id") self.del_after_stop = False def __str__(self): return self.peer_id def ready(self, details=None): loc_det = {} ready = self.config is not None and \ self.path is not None and\ self.machine is not None and\ self.peer_id is not None if not ready: return ready ready = self.config.config_sources_ready(loc_det) and ready ready = self.config.launch_deps_ready(loc_det) and ready if details is not None: details[self.peer_id] = loc_det return ready def list_config_sources(self): return [val for val in self.config.config_sources.values() if val in self.config.used_config_sources()] def list_launch_deps(self): return list(self.config.launch_deps.values()) def status(self, peer_status_obj): det = {} ready = self.ready(det) st = launcher_tools.READY_TO_LAUNCH if ready else launcher_tools.NOT_READY peer_status_obj.set_status(st, details=det) def peer_type(self): if self.peer_id.startswith('mx'): return 'multiplexer' else: return 'obci_peer' def launch_data(self): ser = PeerConfigSerializerCmd() args = [self.peer_id] peer_parser = peer.peer_config_parser.parser("ini") base_config = PeerConfig(self.peer_id) conf_path = launcher_tools.default_config_path(self.path) if conf_path: with codecs.open(conf_path, "r", "utf8") as f: self.logger.info("parsing default config for peer %s, %s ", self.peer_id, conf_path) peer_parser.parse(f, base_config) ser.serialize_diff(base_config, self.config, args) return dict(peer_id=self.peer_id, experiment_id=self.experiment_id, path=self.path, machine=self.machine, args=args, peer_type=self.peer_type()) def info(self, detailed=False): info = dict(peer_id=self.peer_id, path=self.path, machine=self.machine, peer_type=self.peer_type() ) if not self.config: return info info[CONFIG_SOURCES] = self.config.config_sources info[LAUNCH_DEPENDENCIES] = self.config.launch_deps if detailed: info[LOCAL_PARAMS] = self.config.local_params info[EXT_PARAMS] = self.config.ext_param_defs return info