summaryrefslogtreecommitdiff
path: root/api_layers/protocols
diff options
context:
space:
mode:
authorChristian Kolset <ckolset@colostate.edu>2026-07-27 16:47:47 -0600
committerChristian Kolset <ckolset@colostate.edu>2026-07-27 16:47:47 -0600
commit49294cdeb57b537308145e6ec552d05e61e69dfa (patch)
treebfe30e5894ffb4ce4104b62000e3e0b7ecc471c7 /api_layers/protocols
parent91b0b613f0b58498315ef91f6a541dd1089b88de (diff)
Add simulation handling to protocol layers and update motion_capture setting
Diffstat (limited to 'api_layers/protocols')
-rw-r--r--api_layers/protocols/cml.py2
-rw-r--r--api_layers/protocols/mark10.py6
-rw-r--r--api_layers/protocols/modbus_rtu.py2
-rw-r--r--api_layers/protocols/scpi.py2
4 files changed, 11 insertions, 1 deletions
diff --git a/api_layers/protocols/cml.py b/api_layers/protocols/cml.py
index dbee2fa..67be0d5 100644
--- a/api_layers/protocols/cml.py
+++ b/api_layers/protocols/cml.py
@@ -119,6 +119,8 @@ class CMLLayer(BaseProtocol):
motor = next((m for m in self.motors if m.motor_id == motor_id), None)
if motor is None:
return False
+ if self.simulate:
+ return True
try:
data = "" if cmd in ("ME", "MD") else str(int(value))
if motor.address == 0:
diff --git a/api_layers/protocols/mark10.py b/api_layers/protocols/mark10.py
index 1b5bf1c..4a97892 100644
--- a/api_layers/protocols/mark10.py
+++ b/api_layers/protocols/mark10.py
@@ -76,7 +76,11 @@ class Mark10Layer(BaseProtocol):
"cycle_units": b"U\r",
}
cmd = cmd_map.get(channel_id)
- if cmd is None or not self._ser:
+ if cmd is None:
+ return False
+ if self.simulate:
+ return True
+ if not self._ser:
return False
try:
self._ser.write(cmd)
diff --git a/api_layers/protocols/modbus_rtu.py b/api_layers/protocols/modbus_rtu.py
index 9d371b1..68d644e 100644
--- a/api_layers/protocols/modbus_rtu.py
+++ b/api_layers/protocols/modbus_rtu.py
@@ -151,6 +151,8 @@ class ModbusRTULayer(BaseProtocol):
ch = next((c for c in self.channels if c.channel_id == channel_id), None)
if ch is None:
return False
+ if self.simulate:
+ return True
try:
int_val = round((float(value) - ch.offset) / ch.scale)
return self._write_register(ch.register, int_val)
diff --git a/api_layers/protocols/scpi.py b/api_layers/protocols/scpi.py
index 730f8e0..526ed21 100644
--- a/api_layers/protocols/scpi.py
+++ b/api_layers/protocols/scpi.py
@@ -73,6 +73,8 @@ class SCPILayer(BaseProtocol):
ch = next((c for c in self.channels if c.channel_id == channel_id), None)
if ch is None or not ch.write_cmd:
return False
+ if self.simulate:
+ return True
try:
cmd = ch.write_cmd.format(value=value)
self._ser.write(f"{cmd}\n".encode())