Bases: PartectorBluePrint
Source code in src/naneos/partector/partector2.py
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 | class Partector2(PartectorBluePrint):
def __init__(
self,
serial_number: Optional[int] = None,
port: Optional[str] = None,
verb_freq: int = 1,
gain_test_active: bool = True,
output_pulse_diagnostics: bool = True,
) -> None:
self._GAIN_TEST_ACTIVE = gain_test_active
self._OUTPUT_PULSE_DIAGNOSTICS = output_pulse_diagnostics
super().__init__(serial_number, port, verb_freq, "P2")
def _init_serial_data_structure(self) -> None:
self.device_type = NaneosDeviceDataPoint.DEV_TYPE_P2
if self._fw in [265, 275]:
self._data_structure = PARTECTOR2_DATA_STRUCTURE_V265_V275
logger.info(f"SN{self._sn} has FW{self._fw}. -> Using V265/275 data structure.")
logger.info("Contact naneos for a firmware update to get the latest features.")
elif self._fw in [295, 297, 298]:
self._data_structure = PARTECTOR2_DATA_STRUCTURE_V295_V297_V298
logger.info(f"SN{self._sn} has FW{self._fw}. -> Using V295/297/298 data structure.")
logger.info("Contact naneos for a firmware update to get the latest features.")
elif self._fw >= 320:
self._data_structure = PARTECTOR2_DATA_STRUCTURE_V320
self._write_line("A0002!") # activates antispikes
if self._OUTPUT_PULSE_DIAGNOSTICS:
self._write_line("opd01!")
self._data_structure.update(
PARTECTOR2_OUTPUT_PULSE_DIAGNOSTIC_ADDITIONAL_DATA_STRUCTURE
)
else:
self._write_line("opd00!")
if self._GAIN_TEST_ACTIVE:
self._write_line("h2001!") # activates harmonics output
self._write_line("e1100!") # strength of gain test signal
self._data_structure.update(PARTECTOR2_GAIN_TEST_ADDITIONAL_DATA_STRUCTURE)
else:
self._write_line("h2000!") # deactivates harmonics output
self._write_line("e0000!") # deactivates gain test signal
logger.info(f"SN{self._sn} has FW{self._fw}. -> Using V320 data structure.")
else:
self._data_structure = PARTECTOR2_DATA_STRUCTURE_LEGACY
self._legacy_data_structure = True
logger.warning(f"SN{self._sn} has FW{self._fw}. -> Unofficial firmware version.")
logger.warning("Using legacy data structure. Contact naneos for a FW update.")
def _set_verbose_freq(self, freq: int) -> None:
"""
Set the frequency of the verbose output.
:param int freq: Frequency of the verbose output in Hz. (0: off, 1: 1Hz, 2: 10Hz, 3: 100Hz)
"""
if freq < 0 or freq > 3:
raise ValueError("Frequency must be between 0 and 3!")
self._write_line(f"X000{freq}!")
|