summaryrefslogtreecommitdiffstats
path: root/lab_control/test/mock/mock_sds1000xe_device.py
diff options
context:
space:
mode:
Diffstat (limited to 'lab_control/test/mock/mock_sds1000xe_device.py')
-rw-r--r--lab_control/test/mock/mock_sds1000xe_device.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/lab_control/test/mock/mock_sds1000xe_device.py b/lab_control/test/mock/mock_sds1000xe_device.py
new file mode 100644
index 0000000..04ec07a
--- /dev/null
+++ b/lab_control/test/mock/mock_sds1000xe_device.py
@@ -0,0 +1,47 @@
+import re
+
+class MockSDS1000XEDevice:
+ def __init__(self):
+ # Mock internal values
+ self._channels = [{"AMPL" : None, "VDIV" : None} for i in range(0, 4)]
+
+ def _handleRequest(self, request: str) -> str:
+ m = re.search(r"C(?P<channel>\d):(?P<opcode>\w+)\??\s(?P<arg>.+)", request.strip())
+ if not m:
+ return None
+
+ channelIndex = int(m.group("channel")) - 1
+ opcode = m.group("opcode")
+
+ if opcode == "PAVA":
+ arg = m.group("arg")
+ value = self._channels[channelIndex].get(arg)
+ unit = "Hz" if arg == "FREQ" else "V"
+
+ if value is None:
+ return None
+ else:
+ response = f"C{m.group('channel')}:PAVA {arg},{value:.6E}{unit}"
+ return response
+ elif opcode == "VDIV":
+ arg = float(m.group("arg").rstrip("V"))
+ self._channels[channelIndex]["VDIV"] = arg
+ return None
+
+ return None
+
+ def setAmplitude(self, channel: int, value: float) -> None:
+ self._channels[channel - 1]["AMPL"] = value
+
+ def setPeakToPeak(self, channel: int, value: float) -> None:
+ self._channels[channel - 1]["PKPK"] = value
+
+ def setRMS(self, channel: int, value: float) -> None:
+ self._channels[channel - 1]["RMS"] = value
+
+ def setFrequency(self, channel: int, value: float) -> None:
+ self._channels[channel - 1]["FREQ"] = value
+
+ def getVoltsPerDivision(self, channel: int) -> float:
+ return self._channels[channel - 1]["VDIV"]
+