diff --git a/ohmpi/hardware_components/mb_2024_0_2_bkp.py b/ohmpi/hardware_components/mb_2024_0_2_bkp.py deleted file mode 100644 index 9b750376a87a62eceff387e61321809a5999bef6..0000000000000000000000000000000000000000 --- a/ohmpi/hardware_components/mb_2024_0_2_bkp.py +++ /dev/null @@ -1,354 +0,0 @@ -import datetime -import importlib -from ohmpi.config import HARDWARE_CONFIG # TODO: Remove references at config here -> move it in ohmpi_hardware as done for mux_2024 -import adafruit_ads1x15.ads1115 as ads # noqa -from adafruit_ads1x15.analog_in import AnalogIn # noqa -from adafruit_ads1x15.ads1x15 import Mode # noqa -from adafruit_mcp230xx.mcp23008 import MCP23008 # noqa -from digitalio import Direction # noqa -import minimalmodbus # noqa -from busio import I2C # noqa -import time -import numpy as np -import os -from ohmpi.hardware_components import TxAbstract, RxAbstract -from ohmpi.utils import enforce_specs -# ctl_name = HARDWARE_CONFIG['ctl'].pop('board_name', 'raspberry_pi') -# ctl_connection = HARDWARE_CONFIG['ctl'].pop('connection', 'i2c') -# ctl_module = importlib.import_module(f'ohmpi.hardware_components.{ctl_name}') -# -# TX_CONFIG = HARDWARE_CONFIG['tx'] -# RX_CONFIG = HARDWARE_CONFIG['rx'] - -# hardware characteristics and limitations -# voltages are given in mV, currents in mA, sampling rates in Hz and data_rate in S/s -SPECS = {'rx': {'sampling_rate': {'min': 2., 'default': 10., 'max': 100.}, - 'data_rate': {'default': 860.}, - 'bias': {'min': -5000., 'default': 0., 'max': 5000.}, - 'coef_p2': {'default': 2.50}, - 'voltage_min': {'default': 10.0}, - }, - 'tx': {'adc_voltage_min': {'default': 10.}, # Minimum voltage value used in vmin strategy - 'adc_voltage_max': {'default': 4500.}, # Maximum voltage on ads1115 used to measure current - 'voltage_max': {'min': 0., 'default': 12., 'max': 12.}, # Maximum input voltage - 'data_rate': {'default': 860.}, - 'compatible_power_sources': {'default': 'pwr_batt', 'others' : ['dps5005']}, - 'r_shunt': {'min': 0., 'default': 2. }, - 'activation_delay': {'default': 0.005}, # Max turn on time of 211EH relays = 5ms - 'release_delay': {'default': 0.001}, # Max turn off time of 211EH relays = 1ms - }} - -# TODO: move low_battery spec in pwr -# -# # hardware characteristics and limitations -# # *** RX *** -# # ADC for voltage -# voltage_adc_voltage_min = 10. # mV -# voltage_adc_voltage_max = 4500. # mV -# sampling_rate = 20. # Hz -# data_rate = 860. # S/s? -# rx_mcp_board_address = 0x27 -# RX_CONFIG['voltage_min'] = np.min([voltage_adc_voltage_min, RX_CONFIG.pop('voltage_min', np.inf)]) # mV -# RX_CONFIG['voltage_max'] = np.min([voltage_adc_voltage_max, RX_CONFIG.pop('voltage_max', np.inf)]) # mV -# RX_CONFIG['sampling_rate'] = RX_CONFIG.pop('sampling_rate', sampling_rate) -# RX_CONFIG['data_rate'] = RX_CONFIG.pop('data_rate', data_rate) -# # RX_CONFIG['coef_p2'] = RX_CONFIG.pop('coef_p2', 2.5) -# RX_CONFIG['latency'] = RX_CONFIG.pop('latency', 0.01) -# RX_CONFIG['bias'] = RX_CONFIG.pop('bias', 0.) -# RX_CONFIG['mcp_board_address'] = TX_CONFIG.pop('mcp_board_address', tx_mcp_board_address) -# -# -# # *** TX *** -# # ADC for current -# current_adc_voltage_min = 10. # mV -# current_adc_voltage_max = 4500. # mV -# low_battery = 12. # V (conventional value as it is not measured on this board) -# tx_mcp_board_address = 0x21 # -# # pwr_voltage_max = 12. # V -# # pwr_default_voltage = 12. # V -# # pwr_switch_on_warmup = 0. # seconds -# -# TX_CONFIG['current_min'] = np.min([current_adc_voltage_min / (TX_CONFIG['r_shunt'] * 50), -# TX_CONFIG.pop('current_min', np.inf)]) # mA -# TX_CONFIG['current_max'] = np.min([current_adc_voltage_max / (TX_CONFIG['r_shunt'] * 50), -# TX_CONFIG.pop('current_max', np.inf)]) # mA -# # TX_CONFIG['voltage_max'] = np.min([pwr_voltage_max, TX_CONFIG.pop('voltage_max', np.inf)]) # V -# TX_CONFIG['voltage_max'] = TX_CONFIG.pop('voltage_max', np.inf) # V -# TX_CONFIG['voltage_min'] = -TX_CONFIG['voltage_max'] # V -# TX_CONFIG['default_voltage'] = np.min([TX_CONFIG.pop('default_voltage', np.inf), TX_CONFIG['voltage_max']]) # V -# # TX_CONFIG['pwr_switch_on_warm_up'] = TX_CONFIG.pop('pwr_switch_on_warmup', pwr_switch_on_warmup) -# TX_CONFIG['mcp_board_address'] = TX_CONFIG.pop('mcp_board_address', tx_mcp_board_address) -# TX_CONFIG['low_battery'] = TX_CONFIG.pop('low_battery', low_battery) -# TX_CONFIG['latency'] = TX_CONFIG.pop('latency', 0.01) -# TX_CONFIG['bias'] = TX_CONFIG.pop('bias', 0.) - - -def _gain_auto(channel): - """Automatically sets the gain on a channel - - Parameters - ---------- - channel : ads.ADS1x15 - Instance of ADS where voltage is measured. - - Returns - ------- - gain : float - Gain to be applied on ADS1115. - """ - - gain = 2 / 3 - if (abs(channel.voltage) < 2.048) and (abs(channel.voltage) >= 1.024): - gain = 2 - elif (abs(channel.voltage) < 1.024) and (abs(channel.voltage) >= 0.512): - gain = 4 - elif (abs(channel.voltage) < 0.512) and (abs(channel.voltage) >= 0.256): - gain = 8 - elif abs(channel.voltage) < 0.256: - gain = 16 - return gain - - -class Tx(TxAbstract): - def __init__(self, **kwargs): - for key in SPECS['tx'].keys(): - kwargs = enforce_specs(kwargs, SPECS['tx'], key) - kwargs.update({'board_name': os.path.basename(__file__).rstrip('.py')}) - super().__init__(**kwargs) - assert isinstance(self.connection, I2C) - kwargs.update({'pwr': kwargs.pop('pwr', SPECS['tx']['compatible_power_sources']['default'])}) - if (kwargs['pwr'] != SPECS['tx']['compatible_power_sources']['default'] - and kwargs['pwr'] not in SPECS['tx']['compatible_power_sources']['other']): - self.exec_logger.warning(f'Incompatible power source specified check config') - assert kwargs['pwr'] in SPECS['tx'] - # self.pwr = None # TODO: set a list of compatible power system with the tx - self.exec_logger.event(f'{self.model}\ttx_init\tbegin\t{datetime.datetime.utcnow()}') - # self.voltage_max = kwargs['voltage_max'] # TODO: check if used - self._activation_delay = kwargs['activation_delay'] - self._release_delay = kwargs['release_delay'] - self.voltage_adjustable = False - self.current_adjustable = False - - # I2C connexion to MCP23008, for current injection - self.mcp_board = MCP23008(self.connection, address=0x21) - # ADS1115 for current measurement (AB) - self._ads_current_address = 0x48 - self._ads_current_data_rate = kwargs['data_rate'] - self._ads_current = ads.ADS1115(self.connection, gain=self.adc_gain, data_rate=self._ads_current_data_rate, - address=self._ads_current_address) - self._ads_current.mode = Mode.CONTINUOUS - self.r_shunt = kwargs['r_shunt'] - self.adc_voltage_min = kwargs['adc_voltage_min'] - self.adc_voltage_max = kwargs['adc_voltage_max'] - - # Relays for pulse polarity - self.pin0 = self.mcp_board.get_pin(0) - self.pin0.direction = Direction.OUTPUT - self.pin1 = self.mcp_board.get_pin(1) - self.pin1.direction = Direction.OUTPUT - self.polarity = 0 - self.gain = 2 / 3 - - # Initialize LEDs - self.pin4 = self.mcp_board.get_pin(4) # Ohmpi_run - self.pin4.direction = Direction.OUTPUT - self.pin4.value = True - - self._latency = kwargs.pop('latency', TX_CONFIG['latency']) - self._bias = kwargs.pop('bias', TX_CONFIG['bias']) - self.exec_logger.event(f'{self.model}\ttx_init\tend\t{datetime.datetime.utcnow()}') - - @property - def gain(self): - return self._adc_gain - - @gain.setter - def gain(self, value): - assert value in [2/3, 2, 4, 8, 16] - self._adc_gain = value - self._ads_current = ads.ADS1115(self.connection, gain=self.adc_gain, - data_rate=SPECS['tx']['data_rate']['default'], - address=self._ads_current_address) - self._ads_current.mode = Mode.CONTINUOUS - self.exec_logger.debug(f'Setting TX ADC gain to {value}') - - def _adc_gain_auto(self): - self.exec_logger.event(f'{self.model}\ttx_adc_auto_gain\tbegin\t{datetime.datetime.utcnow()}') - gain = _gain_auto(AnalogIn(self._ads_current, ads.P0)) - self.exec_logger.debug(f'Setting TX ADC gain automatically to {gain}') - self.gain = gain - self.exec_logger.event(f'{self.model}\ttx_adc_auto_gain\tend\t{datetime.datetime.utcnow()}') - - def current_pulse(self, **kwargs): - TxAbstract.current_pulse(self, **kwargs) - self.exec_logger.warning(f'Current pulse is not implemented for the {self.model} board') - - @property - def current(self): - """ Gets the current IAB in Amps - """ - iab = AnalogIn(self._ads_current, ads.P0).voltage * 1000. / (50 * self.r_shunt) # measure current - self.exec_logger.debug(f'Reading TX current: {iab} mA') - return iab - - @ current.setter - def current(self, value): - assert self.adc_voltage_min / (50 * self.r_shunt) <= value <= self.adc_voltage_max / (50 * self.r_shunt) - self.exec_logger.warning(f'Current pulse is not implemented for the {self.model} board') - - def gain_auto(self): - self._adc_gain_auto() - - def inject(self, polarity=1, injection_duration=None): - self.polarity = polarity - TxAbstract.inject(self, polarity=polarity, injection_duration=injection_duration) - - @property - def polarity(self): - return self._polarity - - @polarity.setter - def polarity(self, polarity): - assert polarity in [-1, 0, 1] - self._polarity = polarity - if polarity == 1: - self.pin0.value = True - self.pin1.value = False - time.sleep(self._activation_delay) # Max turn on time of 211EH relays = 5ms - elif polarity == -1: - self.pin0.value = False - self.pin1.value = True - time.sleep(self._activation_delay) # Max turn on time of 211EH relays = 5ms - else: - self.pin0.value = False - self.pin1.value = False - time.sleep(self._release_delay) # Max turn off time of 211EH relays = 1ms - - def turn_off(self): - self.pwr.turn_off(self) - - def turn_on(self): - self.pwr.turn_on(self) - - @property - def tx_bat(self): - self.soh_logger.warning(f'Cannot get battery voltage on {self.model}') - self.exec_logger.debug(f'{self.model} cannot read battery voltage. Returning default battery voltage.') - return self.pwr.voltage - - def voltage_pulse(self, voltage=None, length=None, polarity=1): - """ Generates a square voltage pulse - - Parameters - ---------- - voltage: float, optional - Voltage to apply in volts, tx_v_def is applied if omitted. - length: float, optional - Length of the pulse in seconds - polarity: 1,0,-1 - Polarity of the pulse - """ - self.exec_logger.event(f'{self.model}\ttx_voltage_pulse\tbegin\t{datetime.datetime.utcnow()}') - # self.exec_logger.info(f'injection_duration: {length}') # TODO: delete me - if length is None: - length = self.injection_duration - if voltage is not None: - self.pwr.voltage = voltage - self.exec_logger.debug(f'Voltage pulse of {polarity*self.pwr.voltage:.3f} V for {length:.3f} s') - self.inject(polarity=polarity, injection_duration=length) - self.exec_logger.event(f'{self.model}\ttx_voltage_pulse\tend\t{datetime.datetime.utcnow()}') - - -class Rx(RxAbstract): - def __init__(self, **kwargs): - for key in SPECS['rx'].keys(): - kwargs = enforce_specs(kwargs, SPECS['rx'], key) - kwargs.update({'board_name': os.path.basename(__file__).rstrip('.py')}) - super().__init__(**kwargs) - assert isinstance(self.connection, I2C) - - self.exec_logger.event(f'{self.model}\trx_init\tbegin\t{datetime.datetime.utcnow()}') - - # I2C connexion to MCP23008, for DG411 - self.mcp_board = MCP23008(self.connection, address=0x27) - - # ADS1115 for voltage measurement (MN) - self._ads_voltage_address = 0x49 - self._adc_gain = 2/3 - self._ads_voltage = ads.ADS1115(self.connection, gain=self._adc_gain, - data_rate=SPECS['rx']['data_rate']['default'], - address=self._ads_voltage_address) - self._ads_voltage.mode = Mode.CONTINUOUS - self._coef_p2 = kwargs['coef_p2'] - # self._voltage_max = kwargs['voltage_max'] - self._sampling_rate = kwargs['sampling_rate'] - self._bias = kwargs['bias'] - self.exec_logger.event(f'{self.model}\trx_init\tend\t{datetime.datetime.utcnow()}') - - self.pin_DG0 = self.mcp_board.get_pin(0) - self.pin_DG0.direction = Direction.OUTPUT - self.pin_DG1 = self.mcp_board.get_pin(1) - self.pin_DG1.direction = Direction.OUTPUT - self.pin_DG2 = self.mcp_board.get_pin(2) - self.pin_DG2.direction = Direction.OUTPUT - - self.pin_DG0.value = True # open - self.pin_DG1.value = True # open gain 1 inactive - self.pin_DG2.value = False # close gain 0.5 active - self._voltage_gain = 0.5 - - @property - def gain(self): - return self._adc_gain - - @gain.setter - def gain(self, value): - assert value in [2/3, 2, 4, 8, 16] - self._adc_gain = value - self._ads_voltage = ads.ADS1115(self.connection, gain=self.adc_gain, - data_rate=SPECS['rx']['data_rate']['default'], - address=self._ads_voltage_address) - self._ads_voltage.mode = Mode.CONTINUOUS - self.exec_logger.debug(f'Setting RX ADC gain to {value}') - - def _adc_gain_auto(self): - self.exec_logger.event(f'{self.model}\trx_adc_auto_gain\tbegin\t{datetime.datetime.utcnow()}') - gain_0 = _gain_auto(AnalogIn(self._ads_voltage, ads.P0)) - gain_2 = _gain_auto(AnalogIn(self._ads_voltage, ads.P2)) - gain = np.min([gain_0, gain_2]) - self.exec_logger.debug(f'Setting RX ADC gain automatically to {gain}') - self.gain = gain - self.exec_logger.event(f'{self.model}\trx_adc_auto_gain\tend\t{datetime.datetime.utcnow()}') - - def gain_auto(self): - self._adc_gain_auto() - @property - def voltage(self): - """ Gets the voltage VMN in Volts - """ - self.exec_logger.event(f'{self.model}\trx_voltage\tbegin\t{datetime.datetime.utcnow()}') - u = -AnalogIn(self._ads_voltage, ads.P0, ads.P1).voltage * self._coef_p2 * 1000. - self._bias # TODO: check if it should be negated - self.exec_logger.event(f'{self.model}\trx_voltage\tend\t{datetime.datetime.utcnow()}') - return u - - @property - def voltage_gain(self): - return self._voltage_gain - - @voltage_gain.setter - def voltage_gain(self,value): - assert value in [0.5, 1] - self._voltage_gain = value - if self._voltage_gain == 1: - self.pin_DG1.value = False # closed gain 1 active - self.pin_DG2.value = True # open gain 0.5 inactive - elif self._voltage_gain == 0.5: - self.pin_DG1.value = True # closed gain 1 active - self.pin_DG2.value = False # open gain 0.5 inactive - - def voltage_gain_auto(self): - u = ((AnalogIn(self.ads_voltage, ads.P0).voltage * 1000) - self.vmn_hardware_offset) / self.voltage_gain - if abs(vmn1) < 2500 and abs(vmn2) < 2500: ###TODO change voltage gain auto logic - self.voltage_gain = 1 - else: - self.voltage_gain = 0.5 diff --git a/ohmpi/hardware_components/pwr_batt.py b/ohmpi/hardware_components/pwr_batt.py index 0616ba943f0f3f6d289855ef03d1bfa4f116c7e2..c392c38a93f02479f4e55c4784bc4415ae5c3ec8 100644 --- a/ohmpi/hardware_components/pwr_batt.py +++ b/ohmpi/hardware_components/pwr_batt.py @@ -1,5 +1,6 @@ from ohmpi.hardware_components.abstract_hardware_components import PwrAbstract import numpy as np +import datetime import os from ohmpi.utils import enforce_specs @@ -20,9 +21,13 @@ class Pwr(PwrAbstract): else: subclass_init = True super().__init__(**kwargs) + if not subclass_init: + self.exec_logger.event(f'{self.model}\tpwr_init\tbegin\t{datetime.datetime.utcnow()}') self._voltage = kwargs['voltage'] self._current = np.nan self._state = 'on' + if not subclass_init: + self.exec_logger.event(f'{self.model}\tpwr_init\tend\t{datetime.datetime.utcnow()}') @property def current(self): @@ -44,4 +49,4 @@ class Pwr(PwrAbstract): @voltage.setter def voltage(self, value): - PwrAbstract.voltage.fset(self, value) \ No newline at end of file + PwrAbstract.voltage.fset(self, value) diff --git a/ohmpi/hardware_components/pwr_dps5005.py b/ohmpi/hardware_components/pwr_dps5005.py index daf6a7d006caec6ca7eb85f8117e727efb7d464c..753e305a3777a21ff21928dbd13fc8eaffa8cbea 100644 --- a/ohmpi/hardware_components/pwr_dps5005.py +++ b/ohmpi/hardware_components/pwr_dps5005.py @@ -1,9 +1,9 @@ from ohmpi.hardware_components.abstract_hardware_components import PwrAbstract -import datetime import numpy as np -#import minimalmodbus # noqa +import datetime import os from ohmpi.utils import enforce_specs +#import minimalmodbus # noqa # hardware characteristics and limitations SPECS = {'model': {'default': os.path.basename(__file__).rstrip('.py')}, @@ -26,7 +26,7 @@ class Pwr(PwrAbstract): subclass_init = True super().__init__(**kwargs) if not subclass_init: - self.exec_logger.event(f'{self.model}\tpwr_init\tstart\t{datetime.datetime.utcnow()}') + self.exec_logger.event(f'{self.model}\tpwr_init\tbegin\t{datetime.datetime.utcnow()}') # if a controller is passed in kwargs, it will be instantiated #if self.ctl is None: # self.ctl = ctl_module.Ctl(**CTL_CONFIG) diff --git a/ohmpi/hardware_components/raspberry_pi.py b/ohmpi/hardware_components/raspberry_pi.py index f7c4184eb832587426d538570c19d0bea512636b..e4ba6b4ef41464f32886313a0d5db6b4a0b2cbfa 100644 --- a/ohmpi/hardware_components/raspberry_pi.py +++ b/ohmpi/hardware_components/raspberry_pi.py @@ -4,22 +4,32 @@ import busio # noqa from adafruit_extended_bus import ExtendedI2C # noqa import minimalmodbus # noqa import os -from ohmpi.utils import get_platform +from ohmpi.utils import get_platform, enforce_specs from gpiozero import CPUTemperature # noqa import warnings +# hardware characteristics and limitations +SPECS = {'model': {'default': os.path.basename(__file__).rstrip('.py')}, + 'voltage': {'default': 12., 'max': 50., 'min': 0.}, + 'modbus_baudrate': {'default': 9600}, + 'modbus_bitesize': {'default': 8}, + 'modbus_timeout': {'default': 1}, + 'modbus_debug': {'default': False}, + 'modbus_parity': {'default': 'N'}, + 'modbus_mode': {'default': minimalmodbus.MODE_RTU}, + 'modbus_port': {'default': '/dev/ttyUSB0'}, + 'modbus_slave_address': {'default': 1} + } + class Ctl(CtlAbstract): def __init__(self, **kwargs): - kwargs.update({'board_name': os.path.basename(__file__).rstrip('.py')}) - modbus_baudrate = kwargs.pop('modbus_baudrate', 9600) - modbus_bitesize = kwargs.pop('modbus_bitesize', 8) - modbus_timeout = kwargs.pop('modbus_timeout', 1) - modbus_debug = kwargs.pop('modbus_debug', False) - modbus_parity = kwargs.pop('modbus_parity', 'N') - modbus_mode = kwargs.pop('modbus_mode', minimalmodbus.MODE_RTU) - modbus_port = kwargs.pop('modbus_port', '/dev/ttyUSB0') - modbus_slave_address = kwargs.pop('modbus_slave_address', 1) + if 'model' not in kwargs.keys(): + for key in SPECS['tx'].keys(): + kwargs = enforce_specs(kwargs, SPECS['tx'], key) + subclass_init = False + else: + subclass_init = True super().__init__(**kwargs) self.interfaces = dict() @@ -42,19 +52,20 @@ class Ctl(CtlAbstract): # modbus try: - self.interfaces['modbus'] = minimalmodbus.Instrument(port=modbus_port, slaveaddress=modbus_slave_address) - self.interfaces['modbus'].serial.baudrate = modbus_baudrate # Baud rate 9600 as listed in doc - self.interfaces['modbus'].serial.bytesize = modbus_bitesize # - self.interfaces['modbus'].serial.timeout = modbus_timeout # greater than 0.5 for it to work - self.interfaces['modbus'].debug = modbus_debug # - self.interfaces['modbus'].serial.parity = modbus_parity # No parity - self.interfaces['modbus'].mode = modbus_mode # RTU mode + self.interfaces['modbus'] = minimalmodbus.Instrument(port=kwargs['modbus_port'], + slaveaddress=kwargs['modbus_slave_address']) + self.interfaces['modbus'].serial.baudrate = kwargs['modbus_baudrate'] # Baud rate 9600 as listed in doc + self.interfaces['modbus'].serial.bytesize = kwargs['modbus_bitesize'] # + self.interfaces['modbus'].serial.timeout = kwargs['modbus_timeout'] # greater than 0.5 for it to work + self.interfaces['modbus'].debug = kwargs['modbus_debug'] # + self.interfaces['modbus'].serial.parity = kwargs['modbus_parity'] # No parity + self.interfaces['modbus'].mode = kwargs['modbus_mode'] # RTU mode except Exception as e: self.exec_logger.warning(f'Could not initialize Extended modbus:\n{e}') platform, on_pi = get_platform() assert on_pi - self.board_name = platform + self.model = platform self._cpu_temp_available = True self.max_cpu_temp = 85. # °C diff --git a/uml_diagrams/classes_uml_ohmpi.dot b/uml_diagrams/classes_uml_ohmpi.dot index 2071ce04e004cfe6ade11f8de935531f3d3e3386..42176748e50c7c3c6eec2fa10fd8d0084f8e38b8 100644 --- a/uml_diagrams/classes_uml_ohmpi.dot +++ b/uml_diagrams/classes_uml_ohmpi.dot @@ -2,28 +2,28 @@ digraph "classes_uml_ohmpi" { charset="utf-8" rankdir=BT "0" [label="{CompressedSizedTimedRotatingFileHandler|maxBytes : int\lstream\lzip_mode : int\l|doRollover()\lfind_last_rotated_file()\lshouldRollover(record)\l}", shape="record"]; -"1" [label="{Ctl|board_name : str\linterfaces : dict\lmax_cpu_temp : float\l|}", shape="record"]; +"1" [label="{Ctl|interfaces : dict\lmax_cpu_temp : float\lmodel : str\l|}", shape="record"]; "2" [label="{Ctl|\l|}", shape="record"]; -"3" [label="{CtlAbstract|board_name\lconnection : NoneType\lcpu_temperature\lexec_logger : NoneType, RootLogger\linterfaces : NoneType\lmax_cpu_temp\lsoh_logger : NoneType, RootLogger\l|}", shape="record"]; +"3" [label="{CtlAbstract|connection\lcpu_temperature\lexec_logger : RootLogger, NoneType\linterfaces : NoneType\lmax_cpu_temp\lmodel\lsoh_logger : RootLogger, NoneType\l|}", shape="record"]; "4" [label="{MQTTHandler|auth : NoneType\lclient_id : str\lhostname\lkeepalive : int\lport : int\lprotocol\lqos : int\lretain : bool\ltls : NoneType\ltopic\ltransport : str\lwill : NoneType\l|emit(record)\l}", shape="record"]; -"5" [label="{Mux|addresses : dict\lio\l|reset()\lswitch_one(elec, role, state)\l}", shape="record"]; +"5" [label="{Mux|addresses : dict\l|reset()\lswitch_one(elec, role, state)\l}", shape="record"]; "6" [label="{Mux|\l|reset()\lswitch_one()\ltest()\l}", shape="record"]; "7" [label="{Mux|addresses : dict\l|reset()\lswitch_one(elec, role, state)\l}", shape="record"]; -"8" [label="{MuxAbstract|addresses\lbarrier\lboard_id\lboard_name\lcabling : dict\lconnection\lexec_logger : NoneType, RootLogger\lsoh_logger : NoneType, RootLogger\l|reset()\lswitch(elec_dict, state, bypass_check)\lswitch_one(elec, role, state)\ltest(elec_dict, activation_time)\l}", shape="record"]; +"8" [label="{MuxAbstract|addresses\lbarrier\lboard_id\lcabling : dict\lconnection\lexec_logger\lmodel\lsoh_logger\l|reset()\lswitch(elec_dict, state, bypass_check)\lswitch_one(elec, role, state)\ltest(elec_dict, activation_time)\l}", shape="record"]; "9" [label="{MyServer|\l|do_POST()\l}", shape="record"]; -"10" [label="{OhmPi|cmd_id : NoneType\lcontroller : NoneType\ldata_logger : NoneType, RootLogger\lexec_logger : NoneType, RootLogger\lid : str\lmqtt : bool\lnb_samples : int\lon_pi : NoneType, bool\lsequence\lsequence : ndarray, NoneType\lsettings : dict\lsoh_logger : NoneType, RootLogger\lstatus : str\lthread : Thread, NoneType\l|append_and_save(filename, last_measurement, cmd_id)\lget_data(survey_names, cmd_id)\lget_deprecated_methods(cls)\linterrupt(cmd_id)\lload_sequence(filename, cmd_id)\lquit(cmd_id)\lremove_data(cmd_id)\lreset_mux(cmd_id)\lrestart(cmd_id)\lrs_check(tx_volt, cmd_id)\lrun_measurement(quad, nb_stack, injection_duration, autogain, strategy, tx_volt, best_tx_injtime, cmd_id)\lrun_multiple_sequences(cmd_id, sequence_delay, nb_meas)\lrun_sequence(cmd_id)\lrun_sequence_async(cmd_id)\lset_sequence(sequence, cmd_id)\lswitch_mux_off(quadrupole, cmd_id)\lswitch_mux_on(quadrupole, bypass_check, cmd_id)\ltest_mux(activation_time, mux_id, cmd_id)\lupdate_settings(settings, cmd_id)\l}", shape="record"]; -"11" [label="{OhmPiHardware|ctl\ldata_logger : NoneType, RootLogger\lexec_logger : NoneType, RootLogger\llast_dev\llast_rho\lmux_barrier : Barrier\lmux_boards : dict\lpulses\lpwr\lreadings : ndarray\lrx\lsoh_logger : NoneType, RootLogger\lsp\ltx\ltx_sync : Event\l|calibrate_rx_bias()\lreset_mux()\lswitch_mux(electrodes, roles, state)\ltest_mux(channel, activation_time)\lvab_square_wave(vab, cycle_duration, sampling_rate, cycles, polarity, duty_cycle, append)\l}", shape="record"]; -"12" [label="{Pwr|connection\lctl\lcurrent\lcurrent_max\lvoltage\lvoltage_adjustable : bool\l|battery_voltage()\lturn_off()\lturn_on()\l}", shape="record"]; -"13" [label="{Pwr|current\lvoltage\lvoltage_adjustable : bool\l|turn_off()\lturn_on()\l}", shape="record"]; -"14" [label="{PwrAbstract|board_name\lconnection\lctl\lcurrent\lexec_logger : NoneType, RootLogger\lsoh_logger : NoneType, RootLogger\lvoltage\lvoltage_adjustable\l|turn_off()\lturn_on()\l}", shape="record"]; -"15" [label="{Rx|adc_gain\ladc_gain\lconnection\lctl\lvoltage\l|adc_gain_auto()\l}", shape="record"]; +"10" [label="{OhmPi|cmd_id : NoneType\lcontroller : NoneType\ldata_logger : RootLogger, NoneType\lexec_logger : RootLogger, NoneType\lid : str\lmqtt : bool\lnb_samples : int\lon_pi : bool, NoneType\lsequence\lsequence : NoneType, ndarray\lsettings : dict\lsoh_logger : RootLogger, NoneType\lstatus : str\lthread : Thread, NoneType\l|append_and_save(filename, last_measurement, cmd_id)\lget_data(survey_names, cmd_id)\lget_deprecated_methods(cls)\linterrupt(cmd_id)\lload_sequence(filename, cmd_id)\lquit(cmd_id)\lremove_data(cmd_id)\lreset_mux(cmd_id)\lrestart(cmd_id)\lrs_check(tx_volt, cmd_id)\lrun_measurement(quad, nb_stack, injection_duration, autogain, strategy, tx_volt, best_tx_injtime, cmd_id)\lrun_multiple_sequences(cmd_id, sequence_delay, nb_meas)\lrun_sequence(cmd_id)\lrun_sequence_async(cmd_id)\lset_sequence(sequence, cmd_id)\lswitch_mux_off(quadrupole, cmd_id)\lswitch_mux_on(quadrupole, bypass_check, cmd_id)\ltest_mux(activation_time, mux_id, cmd_id)\lupdate_settings(settings, cmd_id)\l}", shape="record"]; +"11" [label="{OhmPiHardware|ctl\ldata_logger\lexec_logger\lmux_barrier : Barrier\lmux_boards : dict\lpulses\lpwr\lreadings : ndarray\lrx\lsoh_logger\lsp\ltx\ltx_sync : Event\l|calibrate_rx_bias()\llast_dev(delay)\llast_resistance(delay)\lreset_mux()\lswitch_mux(electrodes, roles, state)\ltest_mux(channel, activation_time)\lvab_square_wave(vab, cycle_duration, sampling_rate, cycles, polarity, duty_cycle, append)\l}", shape="record"]; +"12" [label="{Pwr|current\lcurrent_adjustable : bool\lvoltage\lvoltage_adjustable : bool\l|battery_voltage()\lcurrent_max(value)\lturn_off()\lturn_on()\l}", shape="record"]; +"13" [label="{Pwr|current\lvoltage\l|turn_off()\lturn_on()\l}", shape="record"]; +"14" [label="{PwrAbstract|connection\lcurrent\lcurrent_adjustable\lexec_logger : RootLogger, NoneType\lmodel\lsoh_logger : RootLogger, NoneType\lvoltage\lvoltage_adjustable\l|turn_off()\lturn_on()\l}", shape="record"]; +"15" [label="{Rx|gain\lgain : int, float\lvoltage\l|gain_auto()\l}", shape="record"]; "16" [label="{Rx|adc_gain\ladc_gain : float\lvoltage\l|adc_gain_auto()\l}", shape="record"]; -"17" [label="{Rx|adc_gain\ladc_gain : float\lctl\lio\lmcp_board : MCP23008\lpin_DG0 : DigitalInOut\lpin_DG1 : DigitalInOut\lpin_DG2 : DigitalInOut\lvoltage\lvoltage_gain\lvoltage_gain : int, float\l|adc_gain_auto()\lvoltage_gain_auto()\l}", shape="record"]; -"18" [label="{RxAbstract|adc_gain\lboard_name\lconnection\lctl\lexec_logger : NoneType, RootLogger\lsampling_rate\lsoh_logger : NoneType, RootLogger\lvoltage\l|adc_gain_auto()\l}", shape="record"]; -"19" [label="{Tx|adc_gain\ladc_gain : int, float\lconnection\lctl\lcurrent\lcurrent_adjustable : bool\lmcp_board : MCP23008\lpin0 : DigitalInOut\lpin1 : DigitalInOut\lpin4 : DigitalInOut\lpolarity\lpolarity : int\lpwr : NoneType\ltx_bat\lvoltage_adjustable : bool\l|adc_gain_auto()\lcurrent_pulse()\linject(polarity, injection_duration)\lturn_off()\lturn_on()\lvoltage_pulse(voltage, length, polarity)\l}", shape="record"]; +"17" [label="{Rx|gain\lgain : int, float\lmcp_board : MCP23008\lpin_DG0 : DigitalInOut\lpin_DG1 : DigitalInOut\lpin_DG2 : DigitalInOut\lvoltage\l|gain_auto()\l}", shape="record"]; +"18" [label="{RxAbstract|adc_gain\lconnection\lexec_logger : RootLogger, NoneType\lmodel\lsampling_rate\lsoh_logger : RootLogger, NoneType\lvoltage\l|}", shape="record"]; +"19" [label="{Tx|adc_voltage_max\ladc_voltage_min\lcurrent\lcurrent_adjustable : bool\lgain\lgain : int, float\lmcp_board : MCP23008\lpin0 : DigitalInOut\lpin1 : DigitalInOut\lpolarity\lpolarity : int\lr_shunt\ltx_bat\lvoltage_adjustable : bool\l|current_pulse()\lgain_auto()\linject(polarity, injection_duration)\lturn_off()\lturn_on()\lvoltage_pulse(voltage, length, polarity)\l}", shape="record"]; "20" [label="{Tx|adc_gain\ladc_gain : float\lcurrent\lpolarity : int\ltx_bat\lvoltage\l|adc_gain_auto()\lcurrent_pulse()\linject(state)\lvoltage_pulse(voltage, length, polarity)\l}", shape="record"]; -"21" [label="{Tx|adc_gain\ladc_gain : int, float\lctl\lcurrent\lcurrent_adjustable : bool\lio\lmcp_board : MCP23008\lpin0 : DigitalInOut\lpin1 : DigitalInOut\lpin4 : DigitalInOut\lpolarity\lpolarity : int\lpwr : NoneType\ltx_bat\lvoltage_adjustable : bool\l|adc_gain_auto()\lcurrent_pulse()\linject(polarity, injection_duration)\lturn_off()\lturn_on()\lvoltage_pulse(voltage, length, polarity)\l}", shape="record"]; -"22" [label="{TxAbstract|adc_gain\lboard_name\lconnection\lctl\lexec_logger : NoneType, RootLogger\linjection_duration\linjection_duration\lpolarity\lpwr\lsoh_logger : NoneType, RootLogger\ltx_bat\ltx_sync\l|adc_gain_auto()\lcurrent_pulse()\linject(polarity, injection_duration)\lvoltage_pulse(voltage, length, polarity)\l}", shape="record"]; +"21" [label="{Tx|pin4 : DigitalInOut\lpin6 : DigitalInOut\l|inject(polarity, injection_duration)\l}", shape="record"]; +"22" [label="{TxAbstract|adc_gain\lconnection\lexec_logger : RootLogger, NoneType\linjection_duration\linjection_duration\lmodel\lpolarity\lpwr\lsoh_logger : RootLogger, NoneType\ltx_bat\ltx_sync\l|current_pulse()\linject(polarity, injection_duration, switch_pwr)\lvoltage_pulse(voltage, length, polarity)\l}", shape="record"]; "1" -> "3" [arrowhead="empty", arrowtail="none"]; "2" -> "3" [arrowhead="empty", arrowtail="none"]; "5" -> "8" [arrowhead="empty", arrowtail="none"]; @@ -33,9 +33,9 @@ rankdir=BT "13" -> "14" [arrowhead="empty", arrowtail="none"]; "15" -> "18" [arrowhead="empty", arrowtail="none"]; "16" -> "18" [arrowhead="empty", arrowtail="none"]; -"17" -> "18" [arrowhead="empty", arrowtail="none"]; +"17" -> "15" [arrowhead="empty", arrowtail="none"]; "19" -> "22" [arrowhead="empty", arrowtail="none"]; "20" -> "22" [arrowhead="empty", arrowtail="none"]; -"21" -> "22" [arrowhead="empty", arrowtail="none"]; +"21" -> "19" [arrowhead="empty", arrowtail="none"]; "11" -> "10" [arrowhead="diamond", arrowtail="none", fontcolor="green", label="_hw", style="solid"]; } diff --git a/uml_diagrams/classes_uml_ohmpi.dot.png b/uml_diagrams/classes_uml_ohmpi.dot.png index aee047e1953c5924ff5078c615f9f46bffc3a7ae..119f5bc7235296e1369cbf350cb60fa17c5324b8 100644 Binary files a/uml_diagrams/classes_uml_ohmpi.dot.png and b/uml_diagrams/classes_uml_ohmpi.dot.png differ diff --git a/uml_diagrams/classes_uml_ohmpi.dot.svg b/uml_diagrams/classes_uml_ohmpi.dot.svg index a9efb920da2c9b15bcb79a3d04970923e89b84f5..d352fa4ce181488811b9a734deab1cf59a773b16 100644 --- a/uml_diagrams/classes_uml_ohmpi.dot.svg +++ b/uml_diagrams/classes_uml_ohmpi.dot.svg @@ -4,103 +4,102 @@ <!-- Generated by graphviz version 2.43.0 (0) --> <!-- Title: classes_uml_ohmpi Pages: 1 --> -<svg width="3998pt" height="949pt" - viewBox="0.00 0.00 3997.50 949.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> -<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 945)"> +<svg width="3415pt" height="1221pt" + viewBox="0.00 0.00 3414.50 1221.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1217)"> <title>classes_uml_ohmpi</title> -<polygon fill="white" stroke="transparent" points="-4,4 -4,-945 3993.5,-945 3993.5,4 -4,4"/> +<polygon fill="white" stroke="transparent" points="-4,4 -4,-1217 3410.5,-1217 3410.5,4 -4,4"/> <!-- 0 --> <g id="node1" class="node"> <title>0</title> -<polygon fill="none" stroke="black" points="0,-113 0,-242 335,-242 335,-113 0,-113"/> -<text text-anchor="middle" x="167.5" y="-226.8" font-family="Times,serif" font-size="14.00">CompressedSizedTimedRotatingFileHandler</text> -<polyline fill="none" stroke="black" points="0,-219 335,-219 "/> -<text text-anchor="start" x="8" y="-203.8" font-family="Times,serif" font-size="14.00">maxBytes : int</text> -<text text-anchor="start" x="8" y="-188.8" font-family="Times,serif" font-size="14.00">stream</text> -<text text-anchor="start" x="8" y="-173.8" font-family="Times,serif" font-size="14.00">zip_mode : int</text> -<polyline fill="none" stroke="black" points="0,-166 335,-166 "/> -<text text-anchor="start" x="8" y="-150.8" font-family="Times,serif" font-size="14.00">doRollover()</text> -<text text-anchor="start" x="8" y="-135.8" font-family="Times,serif" font-size="14.00">find_last_rotated_file()</text> -<text text-anchor="start" x="8" y="-120.8" font-family="Times,serif" font-size="14.00">shouldRollover(record)</text> +<polygon fill="none" stroke="black" points="0,-105.5 0,-234.5 335,-234.5 335,-105.5 0,-105.5"/> +<text text-anchor="middle" x="167.5" y="-219.3" font-family="Times,serif" font-size="14.00">CompressedSizedTimedRotatingFileHandler</text> +<polyline fill="none" stroke="black" points="0,-211.5 335,-211.5 "/> +<text text-anchor="start" x="8" y="-196.3" font-family="Times,serif" font-size="14.00">maxBytes : int</text> +<text text-anchor="start" x="8" y="-181.3" font-family="Times,serif" font-size="14.00">stream</text> +<text text-anchor="start" x="8" y="-166.3" font-family="Times,serif" font-size="14.00">zip_mode : int</text> +<polyline fill="none" stroke="black" points="0,-158.5 335,-158.5 "/> +<text text-anchor="start" x="8" y="-143.3" font-family="Times,serif" font-size="14.00">doRollover()</text> +<text text-anchor="start" x="8" y="-128.3" font-family="Times,serif" font-size="14.00">find_last_rotated_file()</text> +<text text-anchor="start" x="8" y="-113.3" font-family="Times,serif" font-size="14.00">shouldRollover(record)</text> </g> <!-- 1 --> <g id="node2" class="node"> <title>1</title> -<polygon fill="none" stroke="black" points="353.5,-128 353.5,-227 521.5,-227 521.5,-128 353.5,-128"/> -<text text-anchor="middle" x="437.5" y="-211.8" font-family="Times,serif" font-size="14.00">Ctl</text> -<polyline fill="none" stroke="black" points="353.5,-204 521.5,-204 "/> -<text text-anchor="start" x="361.5" y="-188.8" font-family="Times,serif" font-size="14.00">board_name : str</text> -<text text-anchor="start" x="361.5" y="-173.8" font-family="Times,serif" font-size="14.00">interfaces : dict</text> -<text text-anchor="start" x="361.5" y="-158.8" font-family="Times,serif" font-size="14.00">max_cpu_temp : float</text> -<polyline fill="none" stroke="black" points="353.5,-151 521.5,-151 "/> -<text text-anchor="middle" x="437.5" y="-135.8" font-family="Times,serif" font-size="14.00"> </text> +<polygon fill="none" stroke="black" points="353.5,-120.5 353.5,-219.5 521.5,-219.5 521.5,-120.5 353.5,-120.5"/> +<text text-anchor="middle" x="437.5" y="-204.3" font-family="Times,serif" font-size="14.00">Ctl</text> +<polyline fill="none" stroke="black" points="353.5,-196.5 521.5,-196.5 "/> +<text text-anchor="start" x="361.5" y="-181.3" font-family="Times,serif" font-size="14.00">interfaces : dict</text> +<text text-anchor="start" x="361.5" y="-166.3" font-family="Times,serif" font-size="14.00">max_cpu_temp : float</text> +<text text-anchor="start" x="361.5" y="-151.3" font-family="Times,serif" font-size="14.00">model : str</text> +<polyline fill="none" stroke="black" points="353.5,-143.5 521.5,-143.5 "/> +<text text-anchor="middle" x="437.5" y="-128.3" font-family="Times,serif" font-size="14.00"> </text> </g> <!-- 3 --> <g id="node4" class="node"> <title>3</title> -<polygon fill="none" stroke="black" points="363,-594 363,-753 642,-753 642,-594 363,-594"/> -<text text-anchor="middle" x="502.5" y="-737.8" font-family="Times,serif" font-size="14.00">CtlAbstract</text> -<polyline fill="none" stroke="black" points="363,-730 642,-730 "/> -<text text-anchor="start" x="371" y="-714.8" font-family="Times,serif" font-size="14.00">board_name</text> -<text text-anchor="start" x="371" y="-699.8" font-family="Times,serif" font-size="14.00">connection : NoneType</text> -<text text-anchor="start" x="371" y="-684.8" font-family="Times,serif" font-size="14.00">cpu_temperature</text> -<text text-anchor="start" x="371" y="-669.8" font-family="Times,serif" font-size="14.00">exec_logger : NoneType, RootLogger</text> -<text text-anchor="start" x="371" y="-654.8" font-family="Times,serif" font-size="14.00">interfaces : NoneType</text> -<text text-anchor="start" x="371" y="-639.8" font-family="Times,serif" font-size="14.00">max_cpu_temp</text> -<text text-anchor="start" x="371" y="-624.8" font-family="Times,serif" font-size="14.00">soh_logger : NoneType, RootLogger</text> -<polyline fill="none" stroke="black" points="363,-617 642,-617 "/> -<text text-anchor="middle" x="502.5" y="-601.8" font-family="Times,serif" font-size="14.00"> </text> +<polygon fill="none" stroke="black" points="363.5,-579 363.5,-738 641.5,-738 641.5,-579 363.5,-579"/> +<text text-anchor="middle" x="502.5" y="-722.8" font-family="Times,serif" font-size="14.00">CtlAbstract</text> +<polyline fill="none" stroke="black" points="363.5,-715 641.5,-715 "/> +<text text-anchor="start" x="371.5" y="-699.8" font-family="Times,serif" font-size="14.00">connection</text> +<text text-anchor="start" x="371.5" y="-684.8" font-family="Times,serif" font-size="14.00">cpu_temperature</text> +<text text-anchor="start" x="371.5" y="-669.8" font-family="Times,serif" font-size="14.00">exec_logger : RootLogger, NoneType</text> +<text text-anchor="start" x="371.5" y="-654.8" font-family="Times,serif" font-size="14.00">interfaces : NoneType</text> +<text text-anchor="start" x="371.5" y="-639.8" font-family="Times,serif" font-size="14.00">max_cpu_temp</text> +<text text-anchor="start" x="371.5" y="-624.8" font-family="Times,serif" font-size="14.00">model</text> +<text text-anchor="start" x="371.5" y="-609.8" font-family="Times,serif" font-size="14.00">soh_logger : RootLogger, NoneType</text> +<polyline fill="none" stroke="black" points="363.5,-602 641.5,-602 "/> +<text text-anchor="middle" x="502.5" y="-586.8" font-family="Times,serif" font-size="14.00"> </text> </g> <!-- 1->3 --> <g id="edge1" class="edge"> <title>1->3</title> -<path fill="none" stroke="black" d="M443.91,-227.22C454.81,-310.02 477.09,-479.36 490.81,-583.69"/> -<polygon fill="none" stroke="black" points="487.38,-584.43 492.16,-593.89 494.32,-583.52 487.38,-584.43"/> +<path fill="none" stroke="black" d="M444.03,-219.87C454.92,-301.38 476.94,-466.18 490.63,-568.66"/> +<polygon fill="none" stroke="black" points="487.18,-569.23 491.97,-578.68 494.11,-568.31 487.18,-569.23"/> </g> <!-- 2 --> <g id="node3" class="node"> <title>2</title> -<polygon fill="none" stroke="black" points="539.5,-142.5 539.5,-212.5 593.5,-212.5 593.5,-142.5 539.5,-142.5"/> -<text text-anchor="middle" x="566.5" y="-197.3" font-family="Times,serif" font-size="14.00">Ctl</text> -<polyline fill="none" stroke="black" points="539.5,-189.5 593.5,-189.5 "/> -<polyline fill="none" stroke="black" points="539.5,-165.5 593.5,-165.5 "/> -<text text-anchor="middle" x="566.5" y="-150.3" font-family="Times,serif" font-size="14.00"> </text> +<polygon fill="none" stroke="black" points="539.5,-135 539.5,-205 593.5,-205 593.5,-135 539.5,-135"/> +<text text-anchor="middle" x="566.5" y="-189.8" font-family="Times,serif" font-size="14.00">Ctl</text> +<polyline fill="none" stroke="black" points="539.5,-182 593.5,-182 "/> +<polyline fill="none" stroke="black" points="539.5,-158 593.5,-158 "/> +<text text-anchor="middle" x="566.5" y="-142.8" font-family="Times,serif" font-size="14.00"> </text> </g> <!-- 2->3 --> <g id="edge2" class="edge"> <title>2->3</title> -<path fill="none" stroke="black" d="M562.05,-212.84C552.22,-288.7 528.4,-472.57 514.04,-583.4"/> -<polygon fill="none" stroke="black" points="510.54,-583.2 512.73,-593.56 517.48,-584.1 510.54,-583.2"/> +<path fill="none" stroke="black" d="M562,-205.21C552.18,-279.88 528.55,-459.48 514.2,-568.56"/> +<polygon fill="none" stroke="black" points="510.72,-568.2 512.88,-578.57 517.66,-569.11 510.72,-568.2"/> </g> <!-- 4 --> <g id="node5" class="node"> <title>4</title> -<polygon fill="none" stroke="black" points="611.5,-60.5 611.5,-294.5 745.5,-294.5 745.5,-60.5 611.5,-60.5"/> -<text text-anchor="middle" x="678.5" y="-279.3" font-family="Times,serif" font-size="14.00">MQTTHandler</text> -<polyline fill="none" stroke="black" points="611.5,-271.5 745.5,-271.5 "/> -<text text-anchor="start" x="619.5" y="-256.3" font-family="Times,serif" font-size="14.00">auth : NoneType</text> -<text text-anchor="start" x="619.5" y="-241.3" font-family="Times,serif" font-size="14.00">client_id : str</text> -<text text-anchor="start" x="619.5" y="-226.3" font-family="Times,serif" font-size="14.00">hostname</text> -<text text-anchor="start" x="619.5" y="-211.3" font-family="Times,serif" font-size="14.00">keepalive : int</text> -<text text-anchor="start" x="619.5" y="-196.3" font-family="Times,serif" font-size="14.00">port : int</text> -<text text-anchor="start" x="619.5" y="-181.3" font-family="Times,serif" font-size="14.00">protocol</text> -<text text-anchor="start" x="619.5" y="-166.3" font-family="Times,serif" font-size="14.00">qos : int</text> -<text text-anchor="start" x="619.5" y="-151.3" font-family="Times,serif" font-size="14.00">retain : bool</text> -<text text-anchor="start" x="619.5" y="-136.3" font-family="Times,serif" font-size="14.00">tls : NoneType</text> -<text text-anchor="start" x="619.5" y="-121.3" font-family="Times,serif" font-size="14.00">topic</text> -<text text-anchor="start" x="619.5" y="-106.3" font-family="Times,serif" font-size="14.00">transport : str</text> -<text text-anchor="start" x="619.5" y="-91.3" font-family="Times,serif" font-size="14.00">will : NoneType</text> -<polyline fill="none" stroke="black" points="611.5,-83.5 745.5,-83.5 "/> -<text text-anchor="start" x="619.5" y="-68.3" font-family="Times,serif" font-size="14.00">emit(record)</text> +<polygon fill="none" stroke="black" points="611.5,-53 611.5,-287 745.5,-287 745.5,-53 611.5,-53"/> +<text text-anchor="middle" x="678.5" y="-271.8" font-family="Times,serif" font-size="14.00">MQTTHandler</text> +<polyline fill="none" stroke="black" points="611.5,-264 745.5,-264 "/> +<text text-anchor="start" x="619.5" y="-248.8" font-family="Times,serif" font-size="14.00">auth : NoneType</text> +<text text-anchor="start" x="619.5" y="-233.8" font-family="Times,serif" font-size="14.00">client_id : str</text> +<text text-anchor="start" x="619.5" y="-218.8" font-family="Times,serif" font-size="14.00">hostname</text> +<text text-anchor="start" x="619.5" y="-203.8" font-family="Times,serif" font-size="14.00">keepalive : int</text> +<text text-anchor="start" x="619.5" y="-188.8" font-family="Times,serif" font-size="14.00">port : int</text> +<text text-anchor="start" x="619.5" y="-173.8" font-family="Times,serif" font-size="14.00">protocol</text> +<text text-anchor="start" x="619.5" y="-158.8" font-family="Times,serif" font-size="14.00">qos : int</text> +<text text-anchor="start" x="619.5" y="-143.8" font-family="Times,serif" font-size="14.00">retain : bool</text> +<text text-anchor="start" x="619.5" y="-128.8" font-family="Times,serif" font-size="14.00">tls : NoneType</text> +<text text-anchor="start" x="619.5" y="-113.8" font-family="Times,serif" font-size="14.00">topic</text> +<text text-anchor="start" x="619.5" y="-98.8" font-family="Times,serif" font-size="14.00">transport : str</text> +<text text-anchor="start" x="619.5" y="-83.8" font-family="Times,serif" font-size="14.00">will : NoneType</text> +<polyline fill="none" stroke="black" points="611.5,-76 745.5,-76 "/> +<text text-anchor="start" x="619.5" y="-60.8" font-family="Times,serif" font-size="14.00">emit(record)</text> </g> <!-- 5 --> <g id="node6" class="node"> <title>5</title> -<polygon fill="none" stroke="black" points="763.5,-128 763.5,-227 979.5,-227 979.5,-128 763.5,-128"/> -<text text-anchor="middle" x="871.5" y="-211.8" font-family="Times,serif" font-size="14.00">Mux</text> -<polyline fill="none" stroke="black" points="763.5,-204 979.5,-204 "/> -<text text-anchor="start" x="771.5" y="-188.8" font-family="Times,serif" font-size="14.00">addresses : dict</text> -<text text-anchor="start" x="771.5" y="-173.8" font-family="Times,serif" font-size="14.00">io</text> +<polygon fill="none" stroke="black" points="763.5,-128 763.5,-212 979.5,-212 979.5,-128 763.5,-128"/> +<text text-anchor="middle" x="871.5" y="-196.8" font-family="Times,serif" font-size="14.00">Mux</text> +<polyline fill="none" stroke="black" points="763.5,-189 979.5,-189 "/> +<text text-anchor="start" x="771.5" y="-173.8" font-family="Times,serif" font-size="14.00">addresses : dict</text> <polyline fill="none" stroke="black" points="763.5,-166 979.5,-166 "/> <text text-anchor="start" x="771.5" y="-150.8" font-family="Times,serif" font-size="14.00">reset()</text> <text text-anchor="start" x="771.5" y="-135.8" font-family="Times,serif" font-size="14.00">switch_one(elec, role, state)</text> @@ -108,407 +107,376 @@ <!-- 8 --> <g id="node9" class="node"> <title>8</title> -<polygon fill="none" stroke="black" points="907,-564 907,-783 1194,-783 1194,-564 907,-564"/> -<text text-anchor="middle" x="1050.5" y="-767.8" font-family="Times,serif" font-size="14.00">MuxAbstract</text> -<polyline fill="none" stroke="black" points="907,-760 1194,-760 "/> -<text text-anchor="start" x="915" y="-744.8" font-family="Times,serif" font-size="14.00">addresses</text> -<text text-anchor="start" x="915" y="-729.8" font-family="Times,serif" font-size="14.00">barrier</text> -<text text-anchor="start" x="915" y="-714.8" font-family="Times,serif" font-size="14.00">board_id</text> -<text text-anchor="start" x="915" y="-699.8" font-family="Times,serif" font-size="14.00">board_name</text> +<polygon fill="none" stroke="black" points="907,-549 907,-768 1194,-768 1194,-549 907,-549"/> +<text text-anchor="middle" x="1050.5" y="-752.8" font-family="Times,serif" font-size="14.00">MuxAbstract</text> +<polyline fill="none" stroke="black" points="907,-745 1194,-745 "/> +<text text-anchor="start" x="915" y="-729.8" font-family="Times,serif" font-size="14.00">addresses</text> +<text text-anchor="start" x="915" y="-714.8" font-family="Times,serif" font-size="14.00">barrier</text> +<text text-anchor="start" x="915" y="-699.8" font-family="Times,serif" font-size="14.00">board_id</text> <text text-anchor="start" x="915" y="-684.8" font-family="Times,serif" font-size="14.00">cabling : dict</text> <text text-anchor="start" x="915" y="-669.8" font-family="Times,serif" font-size="14.00">connection</text> -<text text-anchor="start" x="915" y="-654.8" font-family="Times,serif" font-size="14.00">exec_logger : NoneType, RootLogger</text> -<text text-anchor="start" x="915" y="-639.8" font-family="Times,serif" font-size="14.00">soh_logger : NoneType, RootLogger</text> -<polyline fill="none" stroke="black" points="907,-632 1194,-632 "/> -<text text-anchor="start" x="915" y="-616.8" font-family="Times,serif" font-size="14.00">reset()</text> -<text text-anchor="start" x="915" y="-601.8" font-family="Times,serif" font-size="14.00">switch(elec_dict, state, bypass_check)</text> -<text text-anchor="start" x="915" y="-586.8" font-family="Times,serif" font-size="14.00">switch_one(elec, role, state)</text> -<text text-anchor="start" x="915" y="-571.8" font-family="Times,serif" font-size="14.00">test(elec_dict, activation_time)</text> +<text text-anchor="start" x="915" y="-654.8" font-family="Times,serif" font-size="14.00">exec_logger</text> +<text text-anchor="start" x="915" y="-639.8" font-family="Times,serif" font-size="14.00">model</text> +<text text-anchor="start" x="915" y="-624.8" font-family="Times,serif" font-size="14.00">soh_logger</text> +<polyline fill="none" stroke="black" points="907,-617 1194,-617 "/> +<text text-anchor="start" x="915" y="-601.8" font-family="Times,serif" font-size="14.00">reset()</text> +<text text-anchor="start" x="915" y="-586.8" font-family="Times,serif" font-size="14.00">switch(elec_dict, state, bypass_check)</text> +<text text-anchor="start" x="915" y="-571.8" font-family="Times,serif" font-size="14.00">switch_one(elec, role, state)</text> +<text text-anchor="start" x="915" y="-556.8" font-family="Times,serif" font-size="14.00">test(elec_dict, activation_time)</text> </g> <!-- 5->8 --> <g id="edge3" class="edge"> <title>5->8</title> -<path fill="none" stroke="black" d="M889.15,-227.22C916.48,-302.64 969.82,-449.83 1007.68,-554.32"/> -<polygon fill="none" stroke="black" points="1004.48,-555.77 1011.18,-563.98 1011.06,-553.38 1004.48,-555.77"/> +<path fill="none" stroke="black" d="M886.61,-212.06C912.91,-283.55 968.04,-433.38 1007.08,-539.49"/> +<polygon fill="none" stroke="black" points="1003.83,-540.8 1010.57,-548.98 1010.4,-538.39 1003.83,-540.8"/> </g> <!-- 6 --> <g id="node7" class="node"> <title>6</title> -<polygon fill="none" stroke="black" points="997.5,-127.5 997.5,-227.5 1103.5,-227.5 1103.5,-127.5 997.5,-127.5"/> -<text text-anchor="middle" x="1050.5" y="-212.3" font-family="Times,serif" font-size="14.00">Mux</text> -<polyline fill="none" stroke="black" points="997.5,-204.5 1103.5,-204.5 "/> -<polyline fill="none" stroke="black" points="997.5,-180.5 1103.5,-180.5 "/> -<text text-anchor="start" x="1005.5" y="-165.3" font-family="Times,serif" font-size="14.00">reset()</text> -<text text-anchor="start" x="1005.5" y="-150.3" font-family="Times,serif" font-size="14.00">switch_one()</text> -<text text-anchor="start" x="1005.5" y="-135.3" font-family="Times,serif" font-size="14.00">test()</text> +<polygon fill="none" stroke="black" points="997.5,-120 997.5,-220 1103.5,-220 1103.5,-120 997.5,-120"/> +<text text-anchor="middle" x="1050.5" y="-204.8" font-family="Times,serif" font-size="14.00">Mux</text> +<polyline fill="none" stroke="black" points="997.5,-197 1103.5,-197 "/> +<polyline fill="none" stroke="black" points="997.5,-173 1103.5,-173 "/> +<text text-anchor="start" x="1005.5" y="-157.8" font-family="Times,serif" font-size="14.00">reset()</text> +<text text-anchor="start" x="1005.5" y="-142.8" font-family="Times,serif" font-size="14.00">switch_one()</text> +<text text-anchor="start" x="1005.5" y="-127.8" font-family="Times,serif" font-size="14.00">test()</text> </g> <!-- 6->8 --> <g id="edge4" class="edge"> <title>6->8</title> -<path fill="none" stroke="black" d="M1050.5,-227.67C1050.5,-303.01 1050.5,-449.22 1050.5,-553.45"/> -<polygon fill="none" stroke="black" points="1047,-553.72 1050.5,-563.72 1054,-553.72 1047,-553.72"/> +<path fill="none" stroke="black" d="M1050.5,-220.33C1050.5,-294.43 1050.5,-436.69 1050.5,-538.82"/> +<polygon fill="none" stroke="black" points="1047,-538.89 1050.5,-548.89 1054,-538.89 1047,-538.89"/> </g> <!-- 7 --> <g id="node8" class="node"> <title>7</title> -<polygon fill="none" stroke="black" points="1121.5,-135.5 1121.5,-219.5 1337.5,-219.5 1337.5,-135.5 1121.5,-135.5"/> -<text text-anchor="middle" x="1229.5" y="-204.3" font-family="Times,serif" font-size="14.00">Mux</text> -<polyline fill="none" stroke="black" points="1121.5,-196.5 1337.5,-196.5 "/> -<text text-anchor="start" x="1129.5" y="-181.3" font-family="Times,serif" font-size="14.00">addresses : dict</text> -<polyline fill="none" stroke="black" points="1121.5,-173.5 1337.5,-173.5 "/> -<text text-anchor="start" x="1129.5" y="-158.3" font-family="Times,serif" font-size="14.00">reset()</text> -<text text-anchor="start" x="1129.5" y="-143.3" font-family="Times,serif" font-size="14.00">switch_one(elec, role, state)</text> +<polygon fill="none" stroke="black" points="1121.5,-128 1121.5,-212 1337.5,-212 1337.5,-128 1121.5,-128"/> +<text text-anchor="middle" x="1229.5" y="-196.8" font-family="Times,serif" font-size="14.00">Mux</text> +<polyline fill="none" stroke="black" points="1121.5,-189 1337.5,-189 "/> +<text text-anchor="start" x="1129.5" y="-173.8" font-family="Times,serif" font-size="14.00">addresses : dict</text> +<polyline fill="none" stroke="black" points="1121.5,-166 1337.5,-166 "/> +<text text-anchor="start" x="1129.5" y="-150.8" font-family="Times,serif" font-size="14.00">reset()</text> +<text text-anchor="start" x="1129.5" y="-135.8" font-family="Times,serif" font-size="14.00">switch_one(elec, role, state)</text> </g> <!-- 7->8 --> <g id="edge5" class="edge"> <title>7->8</title> -<path fill="none" stroke="black" d="M1214.55,-219.77C1188.18,-292.53 1132.52,-446.15 1093.37,-554.19"/> -<polygon fill="none" stroke="black" points="1089.99,-553.25 1089.87,-563.84 1096.57,-555.63 1089.99,-553.25"/> +<path fill="none" stroke="black" d="M1214.39,-212.06C1188.09,-283.55 1132.96,-433.38 1093.92,-539.49"/> +<polygon fill="none" stroke="black" points="1090.6,-538.39 1090.43,-548.98 1097.17,-540.8 1090.6,-538.39"/> </g> <!-- 9 --> <g id="node10" class="node"> <title>9</title> -<polygon fill="none" stroke="black" points="1356,-142.5 1356,-212.5 1447,-212.5 1447,-142.5 1356,-142.5"/> -<text text-anchor="middle" x="1401.5" y="-197.3" font-family="Times,serif" font-size="14.00">MyServer</text> -<polyline fill="none" stroke="black" points="1356,-189.5 1447,-189.5 "/> -<polyline fill="none" stroke="black" points="1356,-165.5 1447,-165.5 "/> -<text text-anchor="start" x="1364" y="-150.3" font-family="Times,serif" font-size="14.00">do_POST()</text> +<polygon fill="none" stroke="black" points="1356,-135 1356,-205 1447,-205 1447,-135 1356,-135"/> +<text text-anchor="middle" x="1401.5" y="-189.8" font-family="Times,serif" font-size="14.00">MyServer</text> +<polyline fill="none" stroke="black" points="1356,-182 1447,-182 "/> +<polyline fill="none" stroke="black" points="1356,-158 1447,-158 "/> +<text text-anchor="start" x="1364" y="-142.8" font-family="Times,serif" font-size="14.00">do_POST()</text> </g> <!-- 10 --> <g id="node11" class="node"> <title>10</title> -<polygon fill="none" stroke="black" points="1409,-406.5 1409,-940.5 2182,-940.5 2182,-406.5 1409,-406.5"/> -<text text-anchor="middle" x="1795.5" y="-925.3" font-family="Times,serif" font-size="14.00">OhmPi</text> -<polyline fill="none" stroke="black" points="1409,-917.5 2182,-917.5 "/> -<text text-anchor="start" x="1417" y="-902.3" font-family="Times,serif" font-size="14.00">cmd_id : NoneType</text> -<text text-anchor="start" x="1417" y="-887.3" font-family="Times,serif" font-size="14.00">controller : NoneType</text> -<text text-anchor="start" x="1417" y="-872.3" font-family="Times,serif" font-size="14.00">data_logger : NoneType, RootLogger</text> -<text text-anchor="start" x="1417" y="-857.3" font-family="Times,serif" font-size="14.00">exec_logger : NoneType, RootLogger</text> -<text text-anchor="start" x="1417" y="-842.3" font-family="Times,serif" font-size="14.00">id : str</text> -<text text-anchor="start" x="1417" y="-827.3" font-family="Times,serif" font-size="14.00">mqtt : bool</text> -<text text-anchor="start" x="1417" y="-812.3" font-family="Times,serif" font-size="14.00">nb_samples : int</text> -<text text-anchor="start" x="1417" y="-797.3" font-family="Times,serif" font-size="14.00">on_pi : NoneType, bool</text> -<text text-anchor="start" x="1417" y="-782.3" font-family="Times,serif" font-size="14.00">sequence</text> -<text text-anchor="start" x="1417" y="-767.3" font-family="Times,serif" font-size="14.00">sequence : ndarray, NoneType</text> -<text text-anchor="start" x="1417" y="-752.3" font-family="Times,serif" font-size="14.00">settings : dict</text> -<text text-anchor="start" x="1417" y="-737.3" font-family="Times,serif" font-size="14.00">soh_logger : NoneType, RootLogger</text> -<text text-anchor="start" x="1417" y="-722.3" font-family="Times,serif" font-size="14.00">status : str</text> -<text text-anchor="start" x="1417" y="-707.3" font-family="Times,serif" font-size="14.00">thread : Thread, NoneType</text> -<polyline fill="none" stroke="black" points="1409,-699.5 2182,-699.5 "/> -<text text-anchor="start" x="1417" y="-684.3" font-family="Times,serif" font-size="14.00">append_and_save(filename, last_measurement, cmd_id)</text> -<text text-anchor="start" x="1417" y="-669.3" font-family="Times,serif" font-size="14.00">get_data(survey_names, cmd_id)</text> -<text text-anchor="start" x="1417" y="-654.3" font-family="Times,serif" font-size="14.00">get_deprecated_methods(cls)</text> -<text text-anchor="start" x="1417" y="-639.3" font-family="Times,serif" font-size="14.00">interrupt(cmd_id)</text> -<text text-anchor="start" x="1417" y="-624.3" font-family="Times,serif" font-size="14.00">load_sequence(filename, cmd_id)</text> -<text text-anchor="start" x="1417" y="-609.3" font-family="Times,serif" font-size="14.00">quit(cmd_id)</text> -<text text-anchor="start" x="1417" y="-594.3" font-family="Times,serif" font-size="14.00">remove_data(cmd_id)</text> -<text text-anchor="start" x="1417" y="-579.3" font-family="Times,serif" font-size="14.00">reset_mux(cmd_id)</text> -<text text-anchor="start" x="1417" y="-564.3" font-family="Times,serif" font-size="14.00">restart(cmd_id)</text> -<text text-anchor="start" x="1417" y="-549.3" font-family="Times,serif" font-size="14.00">rs_check(tx_volt, cmd_id)</text> -<text text-anchor="start" x="1417" y="-534.3" font-family="Times,serif" font-size="14.00">run_measurement(quad, nb_stack, injection_duration, autogain, strategy, tx_volt, best_tx_injtime, cmd_id)</text> -<text text-anchor="start" x="1417" y="-519.3" font-family="Times,serif" font-size="14.00">run_multiple_sequences(cmd_id, sequence_delay, nb_meas)</text> -<text text-anchor="start" x="1417" y="-504.3" font-family="Times,serif" font-size="14.00">run_sequence(cmd_id)</text> -<text text-anchor="start" x="1417" y="-489.3" font-family="Times,serif" font-size="14.00">run_sequence_async(cmd_id)</text> -<text text-anchor="start" x="1417" y="-474.3" font-family="Times,serif" font-size="14.00">set_sequence(sequence, cmd_id)</text> -<text text-anchor="start" x="1417" y="-459.3" font-family="Times,serif" font-size="14.00">switch_mux_off(quadrupole, cmd_id)</text> -<text text-anchor="start" x="1417" y="-444.3" font-family="Times,serif" font-size="14.00">switch_mux_on(quadrupole, bypass_check, cmd_id)</text> -<text text-anchor="start" x="1417" y="-429.3" font-family="Times,serif" font-size="14.00">test_mux(activation_time, mux_id, cmd_id)</text> -<text text-anchor="start" x="1417" y="-414.3" font-family="Times,serif" font-size="14.00">update_settings(settings, cmd_id)</text> +<polygon fill="none" stroke="black" points="1409,-391.5 1409,-925.5 2182,-925.5 2182,-391.5 1409,-391.5"/> +<text text-anchor="middle" x="1795.5" y="-910.3" font-family="Times,serif" font-size="14.00">OhmPi</text> +<polyline fill="none" stroke="black" points="1409,-902.5 2182,-902.5 "/> +<text text-anchor="start" x="1417" y="-887.3" font-family="Times,serif" font-size="14.00">cmd_id : NoneType</text> +<text text-anchor="start" x="1417" y="-872.3" font-family="Times,serif" font-size="14.00">controller : NoneType</text> +<text text-anchor="start" x="1417" y="-857.3" font-family="Times,serif" font-size="14.00">data_logger : RootLogger, NoneType</text> +<text text-anchor="start" x="1417" y="-842.3" font-family="Times,serif" font-size="14.00">exec_logger : RootLogger, NoneType</text> +<text text-anchor="start" x="1417" y="-827.3" font-family="Times,serif" font-size="14.00">id : str</text> +<text text-anchor="start" x="1417" y="-812.3" font-family="Times,serif" font-size="14.00">mqtt : bool</text> +<text text-anchor="start" x="1417" y="-797.3" font-family="Times,serif" font-size="14.00">nb_samples : int</text> +<text text-anchor="start" x="1417" y="-782.3" font-family="Times,serif" font-size="14.00">on_pi : bool, NoneType</text> +<text text-anchor="start" x="1417" y="-767.3" font-family="Times,serif" font-size="14.00">sequence</text> +<text text-anchor="start" x="1417" y="-752.3" font-family="Times,serif" font-size="14.00">sequence : NoneType, ndarray</text> +<text text-anchor="start" x="1417" y="-737.3" font-family="Times,serif" font-size="14.00">settings : dict</text> +<text text-anchor="start" x="1417" y="-722.3" font-family="Times,serif" font-size="14.00">soh_logger : RootLogger, NoneType</text> +<text text-anchor="start" x="1417" y="-707.3" font-family="Times,serif" font-size="14.00">status : str</text> +<text text-anchor="start" x="1417" y="-692.3" font-family="Times,serif" font-size="14.00">thread : Thread, NoneType</text> +<polyline fill="none" stroke="black" points="1409,-684.5 2182,-684.5 "/> +<text text-anchor="start" x="1417" y="-669.3" font-family="Times,serif" font-size="14.00">append_and_save(filename, last_measurement, cmd_id)</text> +<text text-anchor="start" x="1417" y="-654.3" font-family="Times,serif" font-size="14.00">get_data(survey_names, cmd_id)</text> +<text text-anchor="start" x="1417" y="-639.3" font-family="Times,serif" font-size="14.00">get_deprecated_methods(cls)</text> +<text text-anchor="start" x="1417" y="-624.3" font-family="Times,serif" font-size="14.00">interrupt(cmd_id)</text> +<text text-anchor="start" x="1417" y="-609.3" font-family="Times,serif" font-size="14.00">load_sequence(filename, cmd_id)</text> +<text text-anchor="start" x="1417" y="-594.3" font-family="Times,serif" font-size="14.00">quit(cmd_id)</text> +<text text-anchor="start" x="1417" y="-579.3" font-family="Times,serif" font-size="14.00">remove_data(cmd_id)</text> +<text text-anchor="start" x="1417" y="-564.3" font-family="Times,serif" font-size="14.00">reset_mux(cmd_id)</text> +<text text-anchor="start" x="1417" y="-549.3" font-family="Times,serif" font-size="14.00">restart(cmd_id)</text> +<text text-anchor="start" x="1417" y="-534.3" font-family="Times,serif" font-size="14.00">rs_check(tx_volt, cmd_id)</text> +<text text-anchor="start" x="1417" y="-519.3" font-family="Times,serif" font-size="14.00">run_measurement(quad, nb_stack, injection_duration, autogain, strategy, tx_volt, best_tx_injtime, cmd_id)</text> +<text text-anchor="start" x="1417" y="-504.3" font-family="Times,serif" font-size="14.00">run_multiple_sequences(cmd_id, sequence_delay, nb_meas)</text> +<text text-anchor="start" x="1417" y="-489.3" font-family="Times,serif" font-size="14.00">run_sequence(cmd_id)</text> +<text text-anchor="start" x="1417" y="-474.3" font-family="Times,serif" font-size="14.00">run_sequence_async(cmd_id)</text> +<text text-anchor="start" x="1417" y="-459.3" font-family="Times,serif" font-size="14.00">set_sequence(sequence, cmd_id)</text> +<text text-anchor="start" x="1417" y="-444.3" font-family="Times,serif" font-size="14.00">switch_mux_off(quadrupole, cmd_id)</text> +<text text-anchor="start" x="1417" y="-429.3" font-family="Times,serif" font-size="14.00">switch_mux_on(quadrupole, bypass_check, cmd_id)</text> +<text text-anchor="start" x="1417" y="-414.3" font-family="Times,serif" font-size="14.00">test_mux(activation_time, mux_id, cmd_id)</text> +<text text-anchor="start" x="1417" y="-399.3" font-family="Times,serif" font-size="14.00">update_settings(settings, cmd_id)</text> </g> <!-- 11 --> <g id="node12" class="node"> <title>11</title> -<polygon fill="none" stroke="black" points="1465.5,-8 1465.5,-347 2125.5,-347 2125.5,-8 1465.5,-8"/> -<text text-anchor="middle" x="1795.5" y="-331.8" font-family="Times,serif" font-size="14.00">OhmPiHardware</text> -<polyline fill="none" stroke="black" points="1465.5,-324 2125.5,-324 "/> -<text text-anchor="start" x="1473.5" y="-308.8" font-family="Times,serif" font-size="14.00">ctl</text> -<text text-anchor="start" x="1473.5" y="-293.8" font-family="Times,serif" font-size="14.00">data_logger : NoneType, RootLogger</text> -<text text-anchor="start" x="1473.5" y="-278.8" font-family="Times,serif" font-size="14.00">exec_logger : NoneType, RootLogger</text> -<text text-anchor="start" x="1473.5" y="-263.8" font-family="Times,serif" font-size="14.00">last_dev</text> -<text text-anchor="start" x="1473.5" y="-248.8" font-family="Times,serif" font-size="14.00">last_rho</text> -<text text-anchor="start" x="1473.5" y="-233.8" font-family="Times,serif" font-size="14.00">mux_barrier : Barrier</text> -<text text-anchor="start" x="1473.5" y="-218.8" font-family="Times,serif" font-size="14.00">mux_boards : dict</text> -<text text-anchor="start" x="1473.5" y="-203.8" font-family="Times,serif" font-size="14.00">pulses</text> -<text text-anchor="start" x="1473.5" y="-188.8" font-family="Times,serif" font-size="14.00">pwr</text> -<text text-anchor="start" x="1473.5" y="-173.8" font-family="Times,serif" font-size="14.00">readings : ndarray</text> -<text text-anchor="start" x="1473.5" y="-158.8" font-family="Times,serif" font-size="14.00">rx</text> -<text text-anchor="start" x="1473.5" y="-143.8" font-family="Times,serif" font-size="14.00">soh_logger : NoneType, RootLogger</text> -<text text-anchor="start" x="1473.5" y="-128.8" font-family="Times,serif" font-size="14.00">sp</text> -<text text-anchor="start" x="1473.5" y="-113.8" font-family="Times,serif" font-size="14.00">tx</text> -<text text-anchor="start" x="1473.5" y="-98.8" font-family="Times,serif" font-size="14.00">tx_sync : Event</text> -<polyline fill="none" stroke="black" points="1465.5,-91 2125.5,-91 "/> -<text text-anchor="start" x="1473.5" y="-75.8" font-family="Times,serif" font-size="14.00">calibrate_rx_bias()</text> -<text text-anchor="start" x="1473.5" y="-60.8" font-family="Times,serif" font-size="14.00">reset_mux()</text> -<text text-anchor="start" x="1473.5" y="-45.8" font-family="Times,serif" font-size="14.00">switch_mux(electrodes, roles, state)</text> -<text text-anchor="start" x="1473.5" y="-30.8" font-family="Times,serif" font-size="14.00">test_mux(channel, activation_time)</text> -<text text-anchor="start" x="1473.5" y="-15.8" font-family="Times,serif" font-size="14.00">vab_square_wave(vab, cycle_duration, sampling_rate, cycles, polarity, duty_cycle, append)</text> +<polygon fill="none" stroke="black" points="1465.5,-0.5 1465.5,-339.5 2125.5,-339.5 2125.5,-0.5 1465.5,-0.5"/> +<text text-anchor="middle" x="1795.5" y="-324.3" font-family="Times,serif" font-size="14.00">OhmPiHardware</text> +<polyline fill="none" stroke="black" points="1465.5,-316.5 2125.5,-316.5 "/> +<text text-anchor="start" x="1473.5" y="-301.3" font-family="Times,serif" font-size="14.00">ctl</text> +<text text-anchor="start" x="1473.5" y="-286.3" font-family="Times,serif" font-size="14.00">data_logger</text> +<text text-anchor="start" x="1473.5" y="-271.3" font-family="Times,serif" font-size="14.00">exec_logger</text> +<text text-anchor="start" x="1473.5" y="-256.3" font-family="Times,serif" font-size="14.00">mux_barrier : Barrier</text> +<text text-anchor="start" x="1473.5" y="-241.3" font-family="Times,serif" font-size="14.00">mux_boards : dict</text> +<text text-anchor="start" x="1473.5" y="-226.3" font-family="Times,serif" font-size="14.00">pulses</text> +<text text-anchor="start" x="1473.5" y="-211.3" font-family="Times,serif" font-size="14.00">pwr</text> +<text text-anchor="start" x="1473.5" y="-196.3" font-family="Times,serif" font-size="14.00">readings : ndarray</text> +<text text-anchor="start" x="1473.5" y="-181.3" font-family="Times,serif" font-size="14.00">rx</text> +<text text-anchor="start" x="1473.5" y="-166.3" font-family="Times,serif" font-size="14.00">soh_logger</text> +<text text-anchor="start" x="1473.5" y="-151.3" font-family="Times,serif" font-size="14.00">sp</text> +<text text-anchor="start" x="1473.5" y="-136.3" font-family="Times,serif" font-size="14.00">tx</text> +<text text-anchor="start" x="1473.5" y="-121.3" font-family="Times,serif" font-size="14.00">tx_sync : Event</text> +<polyline fill="none" stroke="black" points="1465.5,-113.5 2125.5,-113.5 "/> +<text text-anchor="start" x="1473.5" y="-98.3" font-family="Times,serif" font-size="14.00">calibrate_rx_bias()</text> +<text text-anchor="start" x="1473.5" y="-83.3" font-family="Times,serif" font-size="14.00">last_dev(delay)</text> +<text text-anchor="start" x="1473.5" y="-68.3" font-family="Times,serif" font-size="14.00">last_resistance(delay)</text> +<text text-anchor="start" x="1473.5" y="-53.3" font-family="Times,serif" font-size="14.00">reset_mux()</text> +<text text-anchor="start" x="1473.5" y="-38.3" font-family="Times,serif" font-size="14.00">switch_mux(electrodes, roles, state)</text> +<text text-anchor="start" x="1473.5" y="-23.3" font-family="Times,serif" font-size="14.00">test_mux(channel, activation_time)</text> +<text text-anchor="start" x="1473.5" y="-8.3" font-family="Times,serif" font-size="14.00">vab_square_wave(vab, cycle_duration, sampling_rate, cycles, polarity, duty_cycle, append)</text> </g> <!-- 11->10 --> <g id="edge14" class="edge"> <title>11->10</title> -<path fill="none" stroke="black" d="M1795.5,-347.13C1795.5,-362.38 1795.5,-378.08 1795.5,-393.96"/> -<polygon fill="black" stroke="black" points="1795.5,-394.14 1799.5,-400.14 1795.5,-406.14 1791.5,-400.14 1795.5,-394.14"/> -<text text-anchor="middle" x="1809.5" y="-376.8" font-family="Times,serif" font-size="14.00" fill="green">_hw</text> +<path fill="none" stroke="black" d="M1795.5,-339.79C1795.5,-352.61 1795.5,-365.73 1795.5,-378.99"/> +<polygon fill="black" stroke="black" points="1795.5,-379.21 1799.5,-385.21 1795.5,-391.21 1791.5,-385.21 1795.5,-379.21"/> +<text text-anchor="middle" x="1809.5" y="-361.8" font-family="Times,serif" font-size="14.00" fill="green">_hw</text> </g> <!-- 12 --> <g id="node13" class="node"> <title>12</title> -<polygon fill="none" stroke="black" points="2143.5,-90.5 2143.5,-264.5 2337.5,-264.5 2337.5,-90.5 2143.5,-90.5"/> -<text text-anchor="middle" x="2240.5" y="-249.3" font-family="Times,serif" font-size="14.00">Pwr</text> -<polyline fill="none" stroke="black" points="2143.5,-241.5 2337.5,-241.5 "/> -<text text-anchor="start" x="2151.5" y="-226.3" font-family="Times,serif" font-size="14.00">connection</text> -<text text-anchor="start" x="2151.5" y="-211.3" font-family="Times,serif" font-size="14.00">ctl</text> -<text text-anchor="start" x="2151.5" y="-196.3" font-family="Times,serif" font-size="14.00">current</text> -<text text-anchor="start" x="2151.5" y="-181.3" font-family="Times,serif" font-size="14.00">current_max</text> -<text text-anchor="start" x="2151.5" y="-166.3" font-family="Times,serif" font-size="14.00">voltage</text> -<text text-anchor="start" x="2151.5" y="-151.3" font-family="Times,serif" font-size="14.00">voltage_adjustable : bool</text> -<polyline fill="none" stroke="black" points="2143.5,-143.5 2337.5,-143.5 "/> -<text text-anchor="start" x="2151.5" y="-128.3" font-family="Times,serif" font-size="14.00">battery_voltage()</text> -<text text-anchor="start" x="2151.5" y="-113.3" font-family="Times,serif" font-size="14.00">turn_off()</text> -<text text-anchor="start" x="2151.5" y="-98.3" font-family="Times,serif" font-size="14.00">turn_on()</text> +<polygon fill="none" stroke="black" points="2193.5,-90.5 2193.5,-249.5 2387.5,-249.5 2387.5,-90.5 2193.5,-90.5"/> +<text text-anchor="middle" x="2290.5" y="-234.3" font-family="Times,serif" font-size="14.00">Pwr</text> +<polyline fill="none" stroke="black" points="2193.5,-226.5 2387.5,-226.5 "/> +<text text-anchor="start" x="2201.5" y="-211.3" font-family="Times,serif" font-size="14.00">current</text> +<text text-anchor="start" x="2201.5" y="-196.3" font-family="Times,serif" font-size="14.00">current_adjustable : bool</text> +<text text-anchor="start" x="2201.5" y="-181.3" font-family="Times,serif" font-size="14.00">voltage</text> +<text text-anchor="start" x="2201.5" y="-166.3" font-family="Times,serif" font-size="14.00">voltage_adjustable : bool</text> +<polyline fill="none" stroke="black" points="2193.5,-158.5 2387.5,-158.5 "/> +<text text-anchor="start" x="2201.5" y="-143.3" font-family="Times,serif" font-size="14.00">battery_voltage()</text> +<text text-anchor="start" x="2201.5" y="-128.3" font-family="Times,serif" font-size="14.00">current_max(value)</text> +<text text-anchor="start" x="2201.5" y="-113.3" font-family="Times,serif" font-size="14.00">turn_off()</text> +<text text-anchor="start" x="2201.5" y="-98.3" font-family="Times,serif" font-size="14.00">turn_on()</text> </g> <!-- 14 --> <g id="node15" class="node"> <title>14</title> -<polygon fill="none" stroke="black" points="2257,-579 2257,-768 2536,-768 2536,-579 2257,-579"/> -<text text-anchor="middle" x="2396.5" y="-752.8" font-family="Times,serif" font-size="14.00">PwrAbstract</text> -<polyline fill="none" stroke="black" points="2257,-745 2536,-745 "/> -<text text-anchor="start" x="2265" y="-729.8" font-family="Times,serif" font-size="14.00">board_name</text> -<text text-anchor="start" x="2265" y="-714.8" font-family="Times,serif" font-size="14.00">connection</text> -<text text-anchor="start" x="2265" y="-699.8" font-family="Times,serif" font-size="14.00">ctl</text> -<text text-anchor="start" x="2265" y="-684.8" font-family="Times,serif" font-size="14.00">current</text> -<text text-anchor="start" x="2265" y="-669.8" font-family="Times,serif" font-size="14.00">exec_logger : NoneType, RootLogger</text> -<text text-anchor="start" x="2265" y="-654.8" font-family="Times,serif" font-size="14.00">soh_logger : NoneType, RootLogger</text> -<text text-anchor="start" x="2265" y="-639.8" font-family="Times,serif" font-size="14.00">voltage</text> -<text text-anchor="start" x="2265" y="-624.8" font-family="Times,serif" font-size="14.00">voltage_adjustable</text> -<polyline fill="none" stroke="black" points="2257,-617 2536,-617 "/> -<text text-anchor="start" x="2265" y="-601.8" font-family="Times,serif" font-size="14.00">turn_off()</text> -<text text-anchor="start" x="2265" y="-586.8" font-family="Times,serif" font-size="14.00">turn_on()</text> +<polygon fill="none" stroke="black" points="2200.5,-564 2200.5,-753 2478.5,-753 2478.5,-564 2200.5,-564"/> +<text text-anchor="middle" x="2339.5" y="-737.8" font-family="Times,serif" font-size="14.00">PwrAbstract</text> +<polyline fill="none" stroke="black" points="2200.5,-730 2478.5,-730 "/> +<text text-anchor="start" x="2208.5" y="-714.8" font-family="Times,serif" font-size="14.00">connection</text> +<text text-anchor="start" x="2208.5" y="-699.8" font-family="Times,serif" font-size="14.00">current</text> +<text text-anchor="start" x="2208.5" y="-684.8" font-family="Times,serif" font-size="14.00">current_adjustable</text> +<text text-anchor="start" x="2208.5" y="-669.8" font-family="Times,serif" font-size="14.00">exec_logger : RootLogger, NoneType</text> +<text text-anchor="start" x="2208.5" y="-654.8" font-family="Times,serif" font-size="14.00">model</text> +<text text-anchor="start" x="2208.5" y="-639.8" font-family="Times,serif" font-size="14.00">soh_logger : RootLogger, NoneType</text> +<text text-anchor="start" x="2208.5" y="-624.8" font-family="Times,serif" font-size="14.00">voltage</text> +<text text-anchor="start" x="2208.5" y="-609.8" font-family="Times,serif" font-size="14.00">voltage_adjustable</text> +<polyline fill="none" stroke="black" points="2200.5,-602 2478.5,-602 "/> +<text text-anchor="start" x="2208.5" y="-586.8" font-family="Times,serif" font-size="14.00">turn_off()</text> +<text text-anchor="start" x="2208.5" y="-571.8" font-family="Times,serif" font-size="14.00">turn_on()</text> </g> <!-- 12->14 --> <g id="edge6" class="edge"> <title>12->14</title> -<path fill="none" stroke="black" d="M2267.67,-264.55C2294.41,-349.23 2335.27,-478.62 2363.78,-568.9"/> -<polygon fill="none" stroke="black" points="2360.5,-570.13 2366.85,-578.61 2367.18,-568.02 2360.5,-570.13"/> +<path fill="none" stroke="black" d="M2298.43,-249.71C2306.76,-332.39 2319.89,-462.83 2329.06,-553.85"/> +<polygon fill="none" stroke="black" points="2325.59,-554.32 2330.07,-563.92 2332.55,-553.62 2325.59,-554.32"/> </g> <!-- 13 --> <g id="node14" class="node"> <title>13</title> -<polygon fill="none" stroke="black" points="2355.5,-120.5 2355.5,-234.5 2549.5,-234.5 2549.5,-120.5 2355.5,-120.5"/> -<text text-anchor="middle" x="2452.5" y="-219.3" font-family="Times,serif" font-size="14.00">Pwr</text> -<polyline fill="none" stroke="black" points="2355.5,-211.5 2549.5,-211.5 "/> -<text text-anchor="start" x="2363.5" y="-196.3" font-family="Times,serif" font-size="14.00">current</text> -<text text-anchor="start" x="2363.5" y="-181.3" font-family="Times,serif" font-size="14.00">voltage</text> -<text text-anchor="start" x="2363.5" y="-166.3" font-family="Times,serif" font-size="14.00">voltage_adjustable : bool</text> -<polyline fill="none" stroke="black" points="2355.5,-158.5 2549.5,-158.5 "/> -<text text-anchor="start" x="2363.5" y="-143.3" font-family="Times,serif" font-size="14.00">turn_off()</text> -<text text-anchor="start" x="2363.5" y="-128.3" font-family="Times,serif" font-size="14.00">turn_on()</text> +<polygon fill="none" stroke="black" points="2406,-120.5 2406,-219.5 2489,-219.5 2489,-120.5 2406,-120.5"/> +<text text-anchor="middle" x="2447.5" y="-204.3" font-family="Times,serif" font-size="14.00">Pwr</text> +<polyline fill="none" stroke="black" points="2406,-196.5 2489,-196.5 "/> +<text text-anchor="start" x="2414" y="-181.3" font-family="Times,serif" font-size="14.00">current</text> +<text text-anchor="start" x="2414" y="-166.3" font-family="Times,serif" font-size="14.00">voltage</text> +<polyline fill="none" stroke="black" points="2406,-158.5 2489,-158.5 "/> +<text text-anchor="start" x="2414" y="-143.3" font-family="Times,serif" font-size="14.00">turn_off()</text> +<text text-anchor="start" x="2414" y="-128.3" font-family="Times,serif" font-size="14.00">turn_on()</text> </g> <!-- 13->14 --> <g id="edge7" class="edge"> <title>13->14</title> -<path fill="none" stroke="black" d="M2446.13,-234.69C2436.93,-315.82 2419.78,-467.17 2408.25,-568.89"/> -<polygon fill="none" stroke="black" points="2404.76,-568.55 2407.11,-578.88 2411.72,-569.34 2404.76,-568.55"/> +<path fill="none" stroke="black" d="M2436.65,-219.87C2419.39,-297.61 2385.32,-451.12 2362.46,-554.05"/> +<polygon fill="none" stroke="black" points="2359.04,-553.33 2360.29,-563.85 2365.87,-554.85 2359.04,-553.33"/> </g> <!-- 15 --> <g id="node16" class="node"> <title>15</title> -<polygon fill="none" stroke="black" points="2567.5,-113 2567.5,-242 2695.5,-242 2695.5,-113 2567.5,-113"/> -<text text-anchor="middle" x="2631.5" y="-226.8" font-family="Times,serif" font-size="14.00">Rx</text> -<polyline fill="none" stroke="black" points="2567.5,-219 2695.5,-219 "/> -<text text-anchor="start" x="2575.5" y="-203.8" font-family="Times,serif" font-size="14.00">adc_gain</text> -<text text-anchor="start" x="2575.5" y="-188.8" font-family="Times,serif" font-size="14.00">adc_gain</text> -<text text-anchor="start" x="2575.5" y="-173.8" font-family="Times,serif" font-size="14.00">connection</text> -<text text-anchor="start" x="2575.5" y="-158.8" font-family="Times,serif" font-size="14.00">ctl</text> -<text text-anchor="start" x="2575.5" y="-143.8" font-family="Times,serif" font-size="14.00">voltage</text> -<polyline fill="none" stroke="black" points="2567.5,-136 2695.5,-136 "/> -<text text-anchor="start" x="2575.5" y="-120.8" font-family="Times,serif" font-size="14.00">adc_gain_auto()</text> +<polygon fill="none" stroke="black" points="2642.5,-609 2642.5,-708 2764.5,-708 2764.5,-609 2642.5,-609"/> +<text text-anchor="middle" x="2703.5" y="-692.8" font-family="Times,serif" font-size="14.00">Rx</text> +<polyline fill="none" stroke="black" points="2642.5,-685 2764.5,-685 "/> +<text text-anchor="start" x="2650.5" y="-669.8" font-family="Times,serif" font-size="14.00">gain</text> +<text text-anchor="start" x="2650.5" y="-654.8" font-family="Times,serif" font-size="14.00">gain : int, float</text> +<text text-anchor="start" x="2650.5" y="-639.8" font-family="Times,serif" font-size="14.00">voltage</text> +<polyline fill="none" stroke="black" points="2642.5,-632 2764.5,-632 "/> +<text text-anchor="start" x="2650.5" y="-616.8" font-family="Times,serif" font-size="14.00">gain_auto()</text> </g> <!-- 18 --> <g id="node19" class="node"> <title>18</title> -<polygon fill="none" stroke="black" points="2638,-586.5 2638,-760.5 2917,-760.5 2917,-586.5 2638,-586.5"/> -<text text-anchor="middle" x="2777.5" y="-745.3" font-family="Times,serif" font-size="14.00">RxAbstract</text> -<polyline fill="none" stroke="black" points="2638,-737.5 2917,-737.5 "/> -<text text-anchor="start" x="2646" y="-722.3" font-family="Times,serif" font-size="14.00">adc_gain</text> -<text text-anchor="start" x="2646" y="-707.3" font-family="Times,serif" font-size="14.00">board_name</text> -<text text-anchor="start" x="2646" y="-692.3" font-family="Times,serif" font-size="14.00">connection</text> -<text text-anchor="start" x="2646" y="-677.3" font-family="Times,serif" font-size="14.00">ctl</text> -<text text-anchor="start" x="2646" y="-662.3" font-family="Times,serif" font-size="14.00">exec_logger : NoneType, RootLogger</text> -<text text-anchor="start" x="2646" y="-647.3" font-family="Times,serif" font-size="14.00">sampling_rate</text> -<text text-anchor="start" x="2646" y="-632.3" font-family="Times,serif" font-size="14.00">soh_logger : NoneType, RootLogger</text> -<text text-anchor="start" x="2646" y="-617.3" font-family="Times,serif" font-size="14.00">voltage</text> -<polyline fill="none" stroke="black" points="2638,-609.5 2917,-609.5 "/> -<text text-anchor="start" x="2646" y="-594.3" font-family="Times,serif" font-size="14.00">adc_gain_auto()</text> +<polygon fill="none" stroke="black" points="2469.5,-1008.5 2469.5,-1167.5 2747.5,-1167.5 2747.5,-1008.5 2469.5,-1008.5"/> +<text text-anchor="middle" x="2608.5" y="-1152.3" font-family="Times,serif" font-size="14.00">RxAbstract</text> +<polyline fill="none" stroke="black" points="2469.5,-1144.5 2747.5,-1144.5 "/> +<text text-anchor="start" x="2477.5" y="-1129.3" font-family="Times,serif" font-size="14.00">adc_gain</text> +<text text-anchor="start" x="2477.5" y="-1114.3" font-family="Times,serif" font-size="14.00">connection</text> +<text text-anchor="start" x="2477.5" y="-1099.3" font-family="Times,serif" font-size="14.00">exec_logger : RootLogger, NoneType</text> +<text text-anchor="start" x="2477.5" y="-1084.3" font-family="Times,serif" font-size="14.00">model</text> +<text text-anchor="start" x="2477.5" y="-1069.3" font-family="Times,serif" font-size="14.00">sampling_rate</text> +<text text-anchor="start" x="2477.5" y="-1054.3" font-family="Times,serif" font-size="14.00">soh_logger : RootLogger, NoneType</text> +<text text-anchor="start" x="2477.5" y="-1039.3" font-family="Times,serif" font-size="14.00">voltage</text> +<polyline fill="none" stroke="black" points="2469.5,-1031.5 2747.5,-1031.5 "/> +<text text-anchor="middle" x="2608.5" y="-1016.3" font-family="Times,serif" font-size="14.00"> </text> </g> <!-- 15->18 --> <g id="edge8" class="edge"> <title>15->18</title> -<path fill="none" stroke="black" d="M2650.29,-242.07C2675.37,-326.93 2720.01,-477.97 2749.18,-576.68"/> -<polygon fill="none" stroke="black" points="2745.85,-577.76 2752.04,-586.36 2752.56,-575.78 2745.85,-577.76"/> +<path fill="none" stroke="black" d="M2692.69,-708.12C2677.03,-778.61 2647.76,-910.35 2628.19,-998.38"/> +<polygon fill="none" stroke="black" points="2624.73,-997.84 2625.98,-1008.36 2631.56,-999.36 2624.73,-997.84"/> </g> <!-- 16 --> <g id="node17" class="node"> <title>16</title> -<polygon fill="none" stroke="black" points="2713.5,-128 2713.5,-227 2841.5,-227 2841.5,-128 2713.5,-128"/> -<text text-anchor="middle" x="2777.5" y="-211.8" font-family="Times,serif" font-size="14.00">Rx</text> -<polyline fill="none" stroke="black" points="2713.5,-204 2841.5,-204 "/> -<text text-anchor="start" x="2721.5" y="-188.8" font-family="Times,serif" font-size="14.00">adc_gain</text> -<text text-anchor="start" x="2721.5" y="-173.8" font-family="Times,serif" font-size="14.00">adc_gain : float</text> -<text text-anchor="start" x="2721.5" y="-158.8" font-family="Times,serif" font-size="14.00">voltage</text> -<polyline fill="none" stroke="black" points="2713.5,-151 2841.5,-151 "/> -<text text-anchor="start" x="2721.5" y="-135.8" font-family="Times,serif" font-size="14.00">adc_gain_auto()</text> +<polygon fill="none" stroke="black" points="2496.5,-609 2496.5,-708 2624.5,-708 2624.5,-609 2496.5,-609"/> +<text text-anchor="middle" x="2560.5" y="-692.8" font-family="Times,serif" font-size="14.00">Rx</text> +<polyline fill="none" stroke="black" points="2496.5,-685 2624.5,-685 "/> +<text text-anchor="start" x="2504.5" y="-669.8" font-family="Times,serif" font-size="14.00">adc_gain</text> +<text text-anchor="start" x="2504.5" y="-654.8" font-family="Times,serif" font-size="14.00">adc_gain : float</text> +<text text-anchor="start" x="2504.5" y="-639.8" font-family="Times,serif" font-size="14.00">voltage</text> +<polyline fill="none" stroke="black" points="2496.5,-632 2624.5,-632 "/> +<text text-anchor="start" x="2504.5" y="-616.8" font-family="Times,serif" font-size="14.00">adc_gain_auto()</text> </g> <!-- 16->18 --> <g id="edge9" class="edge"> <title>16->18</title> -<path fill="none" stroke="black" d="M2777.5,-227.22C2777.5,-308.02 2777.5,-471.22 2777.5,-576.01"/> -<polygon fill="none" stroke="black" points="2774,-576.27 2777.5,-586.27 2781,-576.27 2774,-576.27"/> +<path fill="none" stroke="black" d="M2565.96,-708.12C2573.87,-778.61 2588.67,-910.35 2598.55,-998.38"/> +<polygon fill="none" stroke="black" points="2595.08,-998.81 2599.67,-1008.36 2602.03,-998.03 2595.08,-998.81"/> </g> <!-- 17 --> <g id="node18" class="node"> <title>17</title> -<polygon fill="none" stroke="black" points="2859.5,-60.5 2859.5,-294.5 3047.5,-294.5 3047.5,-60.5 2859.5,-60.5"/> -<text text-anchor="middle" x="2953.5" y="-279.3" font-family="Times,serif" font-size="14.00">Rx</text> -<polyline fill="none" stroke="black" points="2859.5,-271.5 3047.5,-271.5 "/> -<text text-anchor="start" x="2867.5" y="-256.3" font-family="Times,serif" font-size="14.00">adc_gain</text> -<text text-anchor="start" x="2867.5" y="-241.3" font-family="Times,serif" font-size="14.00">adc_gain : float</text> -<text text-anchor="start" x="2867.5" y="-226.3" font-family="Times,serif" font-size="14.00">ctl</text> -<text text-anchor="start" x="2867.5" y="-211.3" font-family="Times,serif" font-size="14.00">io</text> -<text text-anchor="start" x="2867.5" y="-196.3" font-family="Times,serif" font-size="14.00">mcp_board : MCP23008</text> -<text text-anchor="start" x="2867.5" y="-181.3" font-family="Times,serif" font-size="14.00">pin_DG0 : DigitalInOut</text> -<text text-anchor="start" x="2867.5" y="-166.3" font-family="Times,serif" font-size="14.00">pin_DG1 : DigitalInOut</text> -<text text-anchor="start" x="2867.5" y="-151.3" font-family="Times,serif" font-size="14.00">pin_DG2 : DigitalInOut</text> -<text text-anchor="start" x="2867.5" y="-136.3" font-family="Times,serif" font-size="14.00">voltage</text> -<text text-anchor="start" x="2867.5" y="-121.3" font-family="Times,serif" font-size="14.00">voltage_gain</text> -<text text-anchor="start" x="2867.5" y="-106.3" font-family="Times,serif" font-size="14.00">voltage_gain : int, float</text> -<polyline fill="none" stroke="black" points="2859.5,-98.5 3047.5,-98.5 "/> -<text text-anchor="start" x="2867.5" y="-83.3" font-family="Times,serif" font-size="14.00">adc_gain_auto()</text> -<text text-anchor="start" x="2867.5" y="-68.3" font-family="Times,serif" font-size="14.00">voltage_gain_auto()</text> -</g> -<!-- 17->18 --> +<polygon fill="none" stroke="black" points="2609.5,-90.5 2609.5,-249.5 2797.5,-249.5 2797.5,-90.5 2609.5,-90.5"/> +<text text-anchor="middle" x="2703.5" y="-234.3" font-family="Times,serif" font-size="14.00">Rx</text> +<polyline fill="none" stroke="black" points="2609.5,-226.5 2797.5,-226.5 "/> +<text text-anchor="start" x="2617.5" y="-211.3" font-family="Times,serif" font-size="14.00">gain</text> +<text text-anchor="start" x="2617.5" y="-196.3" font-family="Times,serif" font-size="14.00">gain : int, float</text> +<text text-anchor="start" x="2617.5" y="-181.3" font-family="Times,serif" font-size="14.00">mcp_board : MCP23008</text> +<text text-anchor="start" x="2617.5" y="-166.3" font-family="Times,serif" font-size="14.00">pin_DG0 : DigitalInOut</text> +<text text-anchor="start" x="2617.5" y="-151.3" font-family="Times,serif" font-size="14.00">pin_DG1 : DigitalInOut</text> +<text text-anchor="start" x="2617.5" y="-136.3" font-family="Times,serif" font-size="14.00">pin_DG2 : DigitalInOut</text> +<text text-anchor="start" x="2617.5" y="-121.3" font-family="Times,serif" font-size="14.00">voltage</text> +<polyline fill="none" stroke="black" points="2609.5,-113.5 2797.5,-113.5 "/> +<text text-anchor="start" x="2617.5" y="-98.3" font-family="Times,serif" font-size="14.00">gain_auto()</text> +</g> +<!-- 17->15 --> <g id="edge10" class="edge"> -<title>17->18</title> -<path fill="none" stroke="black" d="M2912.12,-294.63C2881.51,-380.56 2840.32,-496.18 2811.59,-576.81"/> -<polygon fill="none" stroke="black" points="2808.21,-575.88 2808.15,-586.47 2814.8,-578.22 2808.21,-575.88"/> +<title>17->15</title> +<path fill="none" stroke="black" d="M2703.5,-249.71C2703.5,-347.26 2703.5,-511.28 2703.5,-598.62"/> +<polygon fill="none" stroke="black" points="2700,-598.88 2703.5,-608.88 2707,-598.88 2700,-598.88"/> </g> <!-- 19 --> <g id="node20" class="node"> <title>19</title> -<polygon fill="none" stroke="black" points="3065.5,-0.5 3065.5,-354.5 3361.5,-354.5 3361.5,-0.5 3065.5,-0.5"/> -<text text-anchor="middle" x="3213.5" y="-339.3" font-family="Times,serif" font-size="14.00">Tx</text> -<polyline fill="none" stroke="black" points="3065.5,-331.5 3361.5,-331.5 "/> -<text text-anchor="start" x="3073.5" y="-316.3" font-family="Times,serif" font-size="14.00">adc_gain</text> -<text text-anchor="start" x="3073.5" y="-301.3" font-family="Times,serif" font-size="14.00">adc_gain : int, float</text> -<text text-anchor="start" x="3073.5" y="-286.3" font-family="Times,serif" font-size="14.00">connection</text> -<text text-anchor="start" x="3073.5" y="-271.3" font-family="Times,serif" font-size="14.00">ctl</text> -<text text-anchor="start" x="3073.5" y="-256.3" font-family="Times,serif" font-size="14.00">current</text> -<text text-anchor="start" x="3073.5" y="-241.3" font-family="Times,serif" font-size="14.00">current_adjustable : bool</text> -<text text-anchor="start" x="3073.5" y="-226.3" font-family="Times,serif" font-size="14.00">mcp_board : MCP23008</text> -<text text-anchor="start" x="3073.5" y="-211.3" font-family="Times,serif" font-size="14.00">pin0 : DigitalInOut</text> -<text text-anchor="start" x="3073.5" y="-196.3" font-family="Times,serif" font-size="14.00">pin1 : DigitalInOut</text> -<text text-anchor="start" x="3073.5" y="-181.3" font-family="Times,serif" font-size="14.00">pin4 : DigitalInOut</text> -<text text-anchor="start" x="3073.5" y="-166.3" font-family="Times,serif" font-size="14.00">polarity</text> -<text text-anchor="start" x="3073.5" y="-151.3" font-family="Times,serif" font-size="14.00">polarity : int</text> -<text text-anchor="start" x="3073.5" y="-136.3" font-family="Times,serif" font-size="14.00">pwr : NoneType</text> -<text text-anchor="start" x="3073.5" y="-121.3" font-family="Times,serif" font-size="14.00">tx_bat</text> -<text text-anchor="start" x="3073.5" y="-106.3" font-family="Times,serif" font-size="14.00">voltage_adjustable : bool</text> -<polyline fill="none" stroke="black" points="3065.5,-98.5 3361.5,-98.5 "/> -<text text-anchor="start" x="3073.5" y="-83.3" font-family="Times,serif" font-size="14.00">adc_gain_auto()</text> -<text text-anchor="start" x="3073.5" y="-68.3" font-family="Times,serif" font-size="14.00">current_pulse()</text> -<text text-anchor="start" x="3073.5" y="-53.3" font-family="Times,serif" font-size="14.00">inject(polarity, injection_duration)</text> -<text text-anchor="start" x="3073.5" y="-38.3" font-family="Times,serif" font-size="14.00">turn_off()</text> -<text text-anchor="start" x="3073.5" y="-23.3" font-family="Times,serif" font-size="14.00">turn_on()</text> -<text text-anchor="start" x="3073.5" y="-8.3" font-family="Times,serif" font-size="14.00">voltage_pulse(voltage, length, polarity)</text> +<polygon fill="none" stroke="black" points="3110.5,-489 3110.5,-828 3406.5,-828 3406.5,-489 3110.5,-489"/> +<text text-anchor="middle" x="3258.5" y="-812.8" font-family="Times,serif" font-size="14.00">Tx</text> +<polyline fill="none" stroke="black" points="3110.5,-805 3406.5,-805 "/> +<text text-anchor="start" x="3118.5" y="-789.8" font-family="Times,serif" font-size="14.00">adc_voltage_max</text> +<text text-anchor="start" x="3118.5" y="-774.8" font-family="Times,serif" font-size="14.00">adc_voltage_min</text> +<text text-anchor="start" x="3118.5" y="-759.8" font-family="Times,serif" font-size="14.00">current</text> +<text text-anchor="start" x="3118.5" y="-744.8" font-family="Times,serif" font-size="14.00">current_adjustable : bool</text> +<text text-anchor="start" x="3118.5" y="-729.8" font-family="Times,serif" font-size="14.00">gain</text> +<text text-anchor="start" x="3118.5" y="-714.8" font-family="Times,serif" font-size="14.00">gain : int, float</text> +<text text-anchor="start" x="3118.5" y="-699.8" font-family="Times,serif" font-size="14.00">mcp_board : MCP23008</text> +<text text-anchor="start" x="3118.5" y="-684.8" font-family="Times,serif" font-size="14.00">pin0 : DigitalInOut</text> +<text text-anchor="start" x="3118.5" y="-669.8" font-family="Times,serif" font-size="14.00">pin1 : DigitalInOut</text> +<text text-anchor="start" x="3118.5" y="-654.8" font-family="Times,serif" font-size="14.00">polarity</text> +<text text-anchor="start" x="3118.5" y="-639.8" font-family="Times,serif" font-size="14.00">polarity : int</text> +<text text-anchor="start" x="3118.5" y="-624.8" font-family="Times,serif" font-size="14.00">r_shunt</text> +<text text-anchor="start" x="3118.5" y="-609.8" font-family="Times,serif" font-size="14.00">tx_bat</text> +<text text-anchor="start" x="3118.5" y="-594.8" font-family="Times,serif" font-size="14.00">voltage_adjustable : bool</text> +<polyline fill="none" stroke="black" points="3110.5,-587 3406.5,-587 "/> +<text text-anchor="start" x="3118.5" y="-571.8" font-family="Times,serif" font-size="14.00">current_pulse()</text> +<text text-anchor="start" x="3118.5" y="-556.8" font-family="Times,serif" font-size="14.00">gain_auto()</text> +<text text-anchor="start" x="3118.5" y="-541.8" font-family="Times,serif" font-size="14.00">inject(polarity, injection_duration)</text> +<text text-anchor="start" x="3118.5" y="-526.8" font-family="Times,serif" font-size="14.00">turn_off()</text> +<text text-anchor="start" x="3118.5" y="-511.8" font-family="Times,serif" font-size="14.00">turn_on()</text> +<text text-anchor="start" x="3118.5" y="-496.8" font-family="Times,serif" font-size="14.00">voltage_pulse(voltage, length, polarity)</text> </g> <!-- 22 --> <g id="node23" class="node"> <title>22</title> -<polygon fill="none" stroke="black" points="3379.5,-534 3379.5,-813 3675.5,-813 3675.5,-534 3379.5,-534"/> -<text text-anchor="middle" x="3527.5" y="-797.8" font-family="Times,serif" font-size="14.00">TxAbstract</text> -<polyline fill="none" stroke="black" points="3379.5,-790 3675.5,-790 "/> -<text text-anchor="start" x="3387.5" y="-774.8" font-family="Times,serif" font-size="14.00">adc_gain</text> -<text text-anchor="start" x="3387.5" y="-759.8" font-family="Times,serif" font-size="14.00">board_name</text> -<text text-anchor="start" x="3387.5" y="-744.8" font-family="Times,serif" font-size="14.00">connection</text> -<text text-anchor="start" x="3387.5" y="-729.8" font-family="Times,serif" font-size="14.00">ctl</text> -<text text-anchor="start" x="3387.5" y="-714.8" font-family="Times,serif" font-size="14.00">exec_logger : NoneType, RootLogger</text> -<text text-anchor="start" x="3387.5" y="-699.8" font-family="Times,serif" font-size="14.00">injection_duration</text> -<text text-anchor="start" x="3387.5" y="-684.8" font-family="Times,serif" font-size="14.00">injection_duration</text> -<text text-anchor="start" x="3387.5" y="-669.8" font-family="Times,serif" font-size="14.00">polarity</text> -<text text-anchor="start" x="3387.5" y="-654.8" font-family="Times,serif" font-size="14.00">pwr</text> -<text text-anchor="start" x="3387.5" y="-639.8" font-family="Times,serif" font-size="14.00">soh_logger : NoneType, RootLogger</text> -<text text-anchor="start" x="3387.5" y="-624.8" font-family="Times,serif" font-size="14.00">tx_bat</text> -<text text-anchor="start" x="3387.5" y="-609.8" font-family="Times,serif" font-size="14.00">tx_sync</text> -<polyline fill="none" stroke="black" points="3379.5,-602 3675.5,-602 "/> -<text text-anchor="start" x="3387.5" y="-586.8" font-family="Times,serif" font-size="14.00">adc_gain_auto()</text> -<text text-anchor="start" x="3387.5" y="-571.8" font-family="Times,serif" font-size="14.00">current_pulse()</text> -<text text-anchor="start" x="3387.5" y="-556.8" font-family="Times,serif" font-size="14.00">inject(polarity, injection_duration)</text> -<text text-anchor="start" x="3387.5" y="-541.8" font-family="Times,serif" font-size="14.00">voltage_pulse(voltage, length, polarity)</text> +<polygon fill="none" stroke="black" points="2797.5,-963.5 2797.5,-1212.5 3145.5,-1212.5 3145.5,-963.5 2797.5,-963.5"/> +<text text-anchor="middle" x="2971.5" y="-1197.3" font-family="Times,serif" font-size="14.00">TxAbstract</text> +<polyline fill="none" stroke="black" points="2797.5,-1189.5 3145.5,-1189.5 "/> +<text text-anchor="start" x="2805.5" y="-1174.3" font-family="Times,serif" font-size="14.00">adc_gain</text> +<text text-anchor="start" x="2805.5" y="-1159.3" font-family="Times,serif" font-size="14.00">connection</text> +<text text-anchor="start" x="2805.5" y="-1144.3" font-family="Times,serif" font-size="14.00">exec_logger : RootLogger, NoneType</text> +<text text-anchor="start" x="2805.5" y="-1129.3" font-family="Times,serif" font-size="14.00">injection_duration</text> +<text text-anchor="start" x="2805.5" y="-1114.3" font-family="Times,serif" font-size="14.00">injection_duration</text> +<text text-anchor="start" x="2805.5" y="-1099.3" font-family="Times,serif" font-size="14.00">model</text> +<text text-anchor="start" x="2805.5" y="-1084.3" font-family="Times,serif" font-size="14.00">polarity</text> +<text text-anchor="start" x="2805.5" y="-1069.3" font-family="Times,serif" font-size="14.00">pwr</text> +<text text-anchor="start" x="2805.5" y="-1054.3" font-family="Times,serif" font-size="14.00">soh_logger : RootLogger, NoneType</text> +<text text-anchor="start" x="2805.5" y="-1039.3" font-family="Times,serif" font-size="14.00">tx_bat</text> +<text text-anchor="start" x="2805.5" y="-1024.3" font-family="Times,serif" font-size="14.00">tx_sync</text> +<polyline fill="none" stroke="black" points="2797.5,-1016.5 3145.5,-1016.5 "/> +<text text-anchor="start" x="2805.5" y="-1001.3" font-family="Times,serif" font-size="14.00">current_pulse()</text> +<text text-anchor="start" x="2805.5" y="-986.3" font-family="Times,serif" font-size="14.00">inject(polarity, injection_duration, switch_pwr)</text> +<text text-anchor="start" x="2805.5" y="-971.3" font-family="Times,serif" font-size="14.00">voltage_pulse(voltage, length, polarity)</text> </g> <!-- 19->22 --> <g id="edge11" class="edge"> <title>19->22</title> -<path fill="none" stroke="black" d="M3325.53,-354.75C3361.06,-410.64 3399.94,-471.81 3434.02,-525.43"/> -<polygon fill="none" stroke="black" points="3431.13,-527.4 3439.44,-533.97 3437.03,-523.65 3431.13,-527.4"/> +<path fill="none" stroke="black" d="M3164.19,-828.18C3144.34,-861.17 3122.9,-895.1 3101.5,-926 3094.87,-935.57 3087.83,-945.31 3080.6,-955"/> +<polygon fill="none" stroke="black" points="3077.69,-953.04 3074.48,-963.13 3083.29,-957.25 3077.69,-953.04"/> </g> <!-- 20 --> <g id="node21" class="node"> <title>20</title> -<polygon fill="none" stroke="black" points="3379.5,-83 3379.5,-272 3675.5,-272 3675.5,-83 3379.5,-83"/> -<text text-anchor="middle" x="3527.5" y="-256.8" font-family="Times,serif" font-size="14.00">Tx</text> -<polyline fill="none" stroke="black" points="3379.5,-249 3675.5,-249 "/> -<text text-anchor="start" x="3387.5" y="-233.8" font-family="Times,serif" font-size="14.00">adc_gain</text> -<text text-anchor="start" x="3387.5" y="-218.8" font-family="Times,serif" font-size="14.00">adc_gain : float</text> -<text text-anchor="start" x="3387.5" y="-203.8" font-family="Times,serif" font-size="14.00">current</text> -<text text-anchor="start" x="3387.5" y="-188.8" font-family="Times,serif" font-size="14.00">polarity : int</text> -<text text-anchor="start" x="3387.5" y="-173.8" font-family="Times,serif" font-size="14.00">tx_bat</text> -<text text-anchor="start" x="3387.5" y="-158.8" font-family="Times,serif" font-size="14.00">voltage</text> -<polyline fill="none" stroke="black" points="3379.5,-151 3675.5,-151 "/> -<text text-anchor="start" x="3387.5" y="-135.8" font-family="Times,serif" font-size="14.00">adc_gain_auto()</text> -<text text-anchor="start" x="3387.5" y="-120.8" font-family="Times,serif" font-size="14.00">current_pulse()</text> -<text text-anchor="start" x="3387.5" y="-105.8" font-family="Times,serif" font-size="14.00">inject(state)</text> -<text text-anchor="start" x="3387.5" y="-90.8" font-family="Times,serif" font-size="14.00">voltage_pulse(voltage, length, polarity)</text> +<polygon fill="none" stroke="black" points="2796.5,-564 2796.5,-753 3092.5,-753 3092.5,-564 2796.5,-564"/> +<text text-anchor="middle" x="2944.5" y="-737.8" font-family="Times,serif" font-size="14.00">Tx</text> +<polyline fill="none" stroke="black" points="2796.5,-730 3092.5,-730 "/> +<text text-anchor="start" x="2804.5" y="-714.8" font-family="Times,serif" font-size="14.00">adc_gain</text> +<text text-anchor="start" x="2804.5" y="-699.8" font-family="Times,serif" font-size="14.00">adc_gain : float</text> +<text text-anchor="start" x="2804.5" y="-684.8" font-family="Times,serif" font-size="14.00">current</text> +<text text-anchor="start" x="2804.5" y="-669.8" font-family="Times,serif" font-size="14.00">polarity : int</text> +<text text-anchor="start" x="2804.5" y="-654.8" font-family="Times,serif" font-size="14.00">tx_bat</text> +<text text-anchor="start" x="2804.5" y="-639.8" font-family="Times,serif" font-size="14.00">voltage</text> +<polyline fill="none" stroke="black" points="2796.5,-632 3092.5,-632 "/> +<text text-anchor="start" x="2804.5" y="-616.8" font-family="Times,serif" font-size="14.00">adc_gain_auto()</text> +<text text-anchor="start" x="2804.5" y="-601.8" font-family="Times,serif" font-size="14.00">current_pulse()</text> +<text text-anchor="start" x="2804.5" y="-586.8" font-family="Times,serif" font-size="14.00">inject(state)</text> +<text text-anchor="start" x="2804.5" y="-571.8" font-family="Times,serif" font-size="14.00">voltage_pulse(voltage, length, polarity)</text> </g> <!-- 20->22 --> <g id="edge12" class="edge"> <title>20->22</title> -<path fill="none" stroke="black" d="M3527.5,-272.29C3527.5,-343.13 3527.5,-441.77 3527.5,-523.39"/> -<polygon fill="none" stroke="black" points="3524,-523.77 3527.5,-533.77 3531,-523.77 3524,-523.77"/> +<path fill="none" stroke="black" d="M2950.41,-753.05C2954.11,-811.6 2958.93,-887.97 2963.03,-952.9"/> +<polygon fill="none" stroke="black" points="2959.56,-953.46 2963.68,-963.22 2966.54,-953.02 2959.56,-953.46"/> </g> <!-- 21 --> <g id="node22" class="node"> <title>21</title> -<polygon fill="none" stroke="black" points="3693.5,-0.5 3693.5,-354.5 3989.5,-354.5 3989.5,-0.5 3693.5,-0.5"/> -<text text-anchor="middle" x="3841.5" y="-339.3" font-family="Times,serif" font-size="14.00">Tx</text> -<polyline fill="none" stroke="black" points="3693.5,-331.5 3989.5,-331.5 "/> -<text text-anchor="start" x="3701.5" y="-316.3" font-family="Times,serif" font-size="14.00">adc_gain</text> -<text text-anchor="start" x="3701.5" y="-301.3" font-family="Times,serif" font-size="14.00">adc_gain : int, float</text> -<text text-anchor="start" x="3701.5" y="-286.3" font-family="Times,serif" font-size="14.00">ctl</text> -<text text-anchor="start" x="3701.5" y="-271.3" font-family="Times,serif" font-size="14.00">current</text> -<text text-anchor="start" x="3701.5" y="-256.3" font-family="Times,serif" font-size="14.00">current_adjustable : bool</text> -<text text-anchor="start" x="3701.5" y="-241.3" font-family="Times,serif" font-size="14.00">io</text> -<text text-anchor="start" x="3701.5" y="-226.3" font-family="Times,serif" font-size="14.00">mcp_board : MCP23008</text> -<text text-anchor="start" x="3701.5" y="-211.3" font-family="Times,serif" font-size="14.00">pin0 : DigitalInOut</text> -<text text-anchor="start" x="3701.5" y="-196.3" font-family="Times,serif" font-size="14.00">pin1 : DigitalInOut</text> -<text text-anchor="start" x="3701.5" y="-181.3" font-family="Times,serif" font-size="14.00">pin4 : DigitalInOut</text> -<text text-anchor="start" x="3701.5" y="-166.3" font-family="Times,serif" font-size="14.00">polarity</text> -<text text-anchor="start" x="3701.5" y="-151.3" font-family="Times,serif" font-size="14.00">polarity : int</text> -<text text-anchor="start" x="3701.5" y="-136.3" font-family="Times,serif" font-size="14.00">pwr : NoneType</text> -<text text-anchor="start" x="3701.5" y="-121.3" font-family="Times,serif" font-size="14.00">tx_bat</text> -<text text-anchor="start" x="3701.5" y="-106.3" font-family="Times,serif" font-size="14.00">voltage_adjustable : bool</text> -<polyline fill="none" stroke="black" points="3693.5,-98.5 3989.5,-98.5 "/> -<text text-anchor="start" x="3701.5" y="-83.3" font-family="Times,serif" font-size="14.00">adc_gain_auto()</text> -<text text-anchor="start" x="3701.5" y="-68.3" font-family="Times,serif" font-size="14.00">current_pulse()</text> -<text text-anchor="start" x="3701.5" y="-53.3" font-family="Times,serif" font-size="14.00">inject(polarity, injection_duration)</text> -<text text-anchor="start" x="3701.5" y="-38.3" font-family="Times,serif" font-size="14.00">turn_off()</text> -<text text-anchor="start" x="3701.5" y="-23.3" font-family="Times,serif" font-size="14.00">turn_on()</text> -<text text-anchor="start" x="3701.5" y="-8.3" font-family="Times,serif" font-size="14.00">voltage_pulse(voltage, length, polarity)</text> -</g> -<!-- 21->22 --> +<polygon fill="none" stroke="black" points="3129.5,-128 3129.5,-212 3387.5,-212 3387.5,-128 3129.5,-128"/> +<text text-anchor="middle" x="3258.5" y="-196.8" font-family="Times,serif" font-size="14.00">Tx</text> +<polyline fill="none" stroke="black" points="3129.5,-189 3387.5,-189 "/> +<text text-anchor="start" x="3137.5" y="-173.8" font-family="Times,serif" font-size="14.00">pin4 : DigitalInOut</text> +<text text-anchor="start" x="3137.5" y="-158.8" font-family="Times,serif" font-size="14.00">pin6 : DigitalInOut</text> +<polyline fill="none" stroke="black" points="3129.5,-151 3387.5,-151 "/> +<text text-anchor="start" x="3137.5" y="-135.8" font-family="Times,serif" font-size="14.00">inject(polarity, injection_duration)</text> +</g> +<!-- 21->19 --> <g id="edge13" class="edge"> -<title>21->22</title> -<path fill="none" stroke="black" d="M3729.47,-354.75C3693.94,-410.64 3655.06,-471.81 3620.98,-525.43"/> -<polygon fill="none" stroke="black" points="3617.97,-523.65 3615.56,-533.97 3623.87,-527.4 3617.97,-523.65"/> +<title>21->19</title> +<path fill="none" stroke="black" d="M3258.5,-212.06C3258.5,-270.69 3258.5,-382.01 3258.5,-478.7"/> +<polygon fill="none" stroke="black" points="3255,-478.9 3258.5,-488.9 3262,-478.9 3255,-478.9"/> </g> </g> </svg> diff --git a/uml_diagrams/packages_uml_ohmpi.dot b/uml_diagrams/packages_uml_ohmpi.dot index d57d3be5340fdd6260e8e1ad79514cddfe78b9ac..4787367abeedbbc969f197112ee8f264182f22ac 100644 --- a/uml_diagrams/packages_uml_ohmpi.dot +++ b/uml_diagrams/packages_uml_ohmpi.dot @@ -36,17 +36,18 @@ rankdir=BT "8" -> "21" [arrowhead="open", arrowtail="none"]; "9" -> "2" [arrowhead="open", arrowtail="none"]; "9" -> "4" [arrowhead="open", arrowtail="none"]; -"10" -> "2" [arrowhead="open", arrowtail="none"]; "10" -> "4" [arrowhead="open", arrowtail="none"]; -"11" -> "2" [arrowhead="open", arrowtail="none"]; -"11" -> "4" [arrowhead="open", arrowtail="none"]; -"12" -> "2" [arrowhead="open", arrowtail="none"]; +"10" -> "23" [arrowhead="open", arrowtail="none"]; +"11" -> "10" [arrowhead="open", arrowtail="none"]; +"11" -> "23" [arrowhead="open", arrowtail="none"]; "12" -> "4" [arrowhead="open", arrowtail="none"]; -"13" -> "2" [arrowhead="open", arrowtail="none"]; +"12" -> "23" [arrowhead="open", arrowtail="none"]; "13" -> "4" [arrowhead="open", arrowtail="none"]; +"13" -> "23" [arrowhead="open", arrowtail="none"]; "14" -> "5" [arrowhead="open", arrowtail="none"]; -"15" -> "2" [arrowhead="open", arrowtail="none"]; +"14" -> "23" [arrowhead="open", arrowtail="none"]; "15" -> "5" [arrowhead="open", arrowtail="none"]; +"15" -> "23" [arrowhead="open", arrowtail="none"]; "16" -> "4" [arrowhead="open", arrowtail="none"]; "16" -> "23" [arrowhead="open", arrowtail="none"]; "17" -> "2" [arrowhead="open", arrowtail="none"]; diff --git a/uml_diagrams/packages_uml_ohmpi.dot.png b/uml_diagrams/packages_uml_ohmpi.dot.png index f69d4ef240878b1c8cd6aa39ccc36c315bb221db..ac4fcbfe2fe7a3e9762808694e8ad277a777f9ec 100644 Binary files a/uml_diagrams/packages_uml_ohmpi.dot.png and b/uml_diagrams/packages_uml_ohmpi.dot.png differ