blob: 923f22bc1e3b5a06367741a35b0cebf0f8717841 [file] [log] [blame]
# Copyright 2020 Google Inc. All Rights Reserved.
# Author: oelayach@google.com
import importlib
from acts import logger
ACTS_CONTROLLER_CONFIG_NAME = 'Chamber'
def create(configs):
"""Factory method for Signal Generators.
Args:
configs: list of dicts with signal generator settings
"""
SUPPORTED_MODELS = {
("Keysight", "CATR"): "lassen.controllers.chamber.KeysightCATRChamber",
("Mock", "Chamber"): "lassen.controllers.chamber.MockChamber"
}
objs = []
for config in configs:
if (config["brand"], config["model"]) not in SUPPORTED_MODELS:
raise ValueError("Not a valid chamber model.")
module = importlib.import_module(SUPPORTED_MODELS[(config["brand"],
config["model"])])
chamber = module.Chamber(config)
objs.append(chamber)
return objs
def destroy(devices):
for device in devices:
device.reset()
class Chamber():
"""Base class implementation for signal generators.
Base class provides functions whose implementation is shared by all
chambers.
"""
def __init__(self, config):
self.config = config
self.log = logger.create_tagged_trace_logger("{}{}".format(
self.config['brand'], self.config['model']))
self.id_check(self.config)
self.reset()
def id_check(self, config):
""" Resets signal generator."""
self.log.info("ID Check Successful.")
def reset(self):
""" Resets signal generator."""
self.log.info("Resetting instrument.")
def disconnect(self):
""" Disconnects Chamber."""
self.log.info("Disconnecting instrument.")
def get_phi(self):
return self.phi
def get_theta(self):
return self.phi
def move_phi_abs(self, phi):
self.log.info("Moving to Phi={}".format(phi))
self.phi = phi
def move_theta_abs(self, theta):
self.log.info("Moving to Theta={}".format(theta))
self.theta = theta
def move_phi_rel(self, phi):
self.log.info("Moving Phi by {} degrees".format(phi))
self.phi = self.phi + phi
def move_theta_rel(self, theta):
self.log.info("Moving Theta by {} degrees".format(theta))
self.theta = self.theta + theta
def reset_phi(self):
self.log.info("Resetting Phi.")
self.phi = 0
def reset_theta(self):
self.log.info("Resetting Theta.")
self.theta = 0
def reset_phi_theta(self):
""" Resets signal generator."""
self.log.info("Resetting to home.")