diff --git a/doc/version-history.rst b/doc/version-history.rst
index 282a8329c..8794c4630 100644
--- a/doc/version-history.rst
+++ b/doc/version-history.rst
@@ -8,6 +8,19 @@ v20.1.0
-------
* Updated the contents of the README.
+* Interface updates:
+
+ * MTRotator
+
+ * Add FaultSubstate enumeration.
+ * Add the new item ``copleyFaultStatus`` in ``MTRotator_electrical`` topic.
+ * Rename the item ``offlineSubstate`` to ``faultSubstate`` in ``MTRotator_logevent_controllerState`` topic.
+ * Add the new item ``drivesEnabled`` to ``MTRotator_logevent_configuration`` topic.
+
+ * MTHexapod
+
+ * Fix and improve the description in ``MTHexapod_actuators`` topic.
+ * Add the new item ``copleyFaultStatus`` and improve the description in ``MTHexapod_electrical`` topic.
v20.0.0
-------
diff --git a/python/lsst/ts/xml/data/sal_interfaces/MTHexapod/MTHexapod_Telemetry.xml b/python/lsst/ts/xml/data/sal_interfaces/MTHexapod/MTHexapod_Telemetry.xml
index 045bb9111..07d7009b1 100644
--- a/python/lsst/ts/xml/data/sal_interfaces/MTHexapod/MTHexapod_Telemetry.xml
+++ b/python/lsst/ts/xml/data/sal_interfaces/MTHexapod/MTHexapod_Telemetry.xml
@@ -6,21 +6,21 @@
MTHexapod_actuators
-
calibrated
- Linear encoder readings from each MTHexapod actuator (x1,x2,x3,x4,x5,x6) in microns
+ Estimated strut length from each MTHexapod actuator (x1,x2,x3,x4,x5,x6) in microns
double
um
6
-
raw
- Linear encoder readings from each MTHexapod actuator (x1,x2,x3,x4,x5,x6) in counts
+ Linear encoder readings from each MTHexapod actuator (x1,x2,x3,x4,x5,x6) in counts/nanometer (raw linear load encoder, 0x6064)
double
unitless
6
-
positionError
- Position error of each MTHexapod actuator (x1,x2,x3,x4,x5,x6) in microns
+ Position error of each MTHexapod actuator (x1,x2,x3,x4,x5,x6) in microns (following error actual value, 0x60F4)
double
micron
6
@@ -63,28 +63,35 @@
MTHexapod_electrical
-
copleyStatusWordDrive
- Bus undervoltage fault, bus overvoltage fault, and overcurrent fault are all being monitored for each drive channel
+ Bus undervoltage fault, bus overvoltage fault, and overcurrent fault are all being monitored for each drive channel (drive status word, 0x6041).
unsigned short
unitless
6
-
copleyLatchingFaultStatus
- Copley latching fault status
+ Copley latching fault status (0x2183).
unsigned short
unitless
6
+ -
+ copleyFaultStatus
+ Copley sticky amplifier event status register (0x2180).
+ unsigned int
+ unitless
+ 6
+
-
motorCurrent
- Actual current for each strut motor
+ Actual current for each strut motor.
double
A
6
-
busVoltage
- Actual bus voltage for each pair of strut motors
+ Actual bus voltage for each pair of strut motors.
double
V
3
diff --git a/python/lsst/ts/xml/data/sal_interfaces/MTRotator/MTRotator_Events.xml b/python/lsst/ts/xml/data/sal_interfaces/MTRotator/MTRotator_Events.xml
index 5541eac75..00a4a1a01 100644
--- a/python/lsst/ts/xml/data/sal_interfaces/MTRotator/MTRotator_Events.xml
+++ b/python/lsst/ts/xml/data/sal_interfaces/MTRotator/MTRotator_Events.xml
@@ -20,6 +20,11 @@
EnabledSubstate_Initializing=4,
EnabledSubstate_Relative=5,
EnabledSubstate_ConstantVelocity=6
+
+
+ FaultSubstate_EmergencyStopping=0,
+ FaultSubstate_WaitClearError=1,
+ FaultSubstate_NoError=2
ApplicationStatus_EUI_CONNECTED = 0x4,
@@ -47,8 +52,8 @@
1
-
- offlineSubstate
- Substate in OFFLINE mode. An OfflineSubstate enumeration value.
+ faultSubstate
+ Substate in FAULT mode. A FaultSubstate enumeration value.
long
unitless
1
@@ -244,6 +249,13 @@
deg/s
1
+ -
+ drivesEnabled
+ Drives are enabled or not.
+ boolean
+ unitless
+ 1
+
MTRotator
diff --git a/python/lsst/ts/xml/data/sal_interfaces/MTRotator/MTRotator_Telemetry.xml b/python/lsst/ts/xml/data/sal_interfaces/MTRotator/MTRotator_Telemetry.xml
index 3415b3901..413ae85c4 100644
--- a/python/lsst/ts/xml/data/sal_interfaces/MTRotator/MTRotator_Telemetry.xml
+++ b/python/lsst/ts/xml/data/sal_interfaces/MTRotator/MTRotator_Telemetry.xml
@@ -101,18 +101,25 @@
MTRotator_electrical
-
copleyStatusWordDrive
- Copley drive status word.
+ Copley drive status word (0x6041).
unsigned short
unitless
2
-
copleyLatchingFaultStatus
- Copley latching fault status register.
+ Copley latching fault status register (0x2183).
unsigned short
unitless
2
+ -
+ copleyFaultStatus
+ Copley sticky amplifier event status register (0x2180).
+ unsigned int
+ unitless
+ 2
+
MTRotator
diff --git a/python/lsst/ts/xml/enums/MTRotator.py b/python/lsst/ts/xml/enums/MTRotator.py
index 505952594..2cb973398 100644
--- a/python/lsst/ts/xml/enums/MTRotator.py
+++ b/python/lsst/ts/xml/enums/MTRotator.py
@@ -22,6 +22,7 @@
"ControllerState",
"OfflineSubstate",
"EnabledSubstate",
+ "FaultSubstate",
"ApplicationStatus",
"ErrorCode",
]
@@ -41,9 +42,9 @@ class ControllerState(enum.IntEnum):
"""
STANDBY = 0
- DISABLED = enum.auto()
+ DISABLED = enum.auto() # Deprecated in rotator
ENABLED = enum.auto()
- OFFLINE = enum.auto()
+ OFFLINE = enum.auto() # Deprecated in rotator
FAULT = enum.auto()
@@ -53,6 +54,10 @@ class OfflineSubstate(enum.IntEnum):
Value reported in ``telemetry.offline_substate``.
This is enum ``OfflineSubStates`` in Moog code.
+
+ Deprecated in the rotator.
+
+ TODO: Remove this after simplifying the state machine in hexapod, DM-39787.
"""
PUBLISH_ONLY = 0
@@ -71,11 +76,24 @@ class EnabledSubstate(enum.IntEnum):
MOVING_POINT_TO_POINT = enum.auto()
SLEWING_OR_TRACKING = enum.auto()
CONTROLLED_STOPPING = enum.auto()
- INITIALIZING = enum.auto()
- RELATIVE = enum.auto()
+ INITIALIZING = enum.auto() # Deprecated in rotator
+ RELATIVE = enum.auto() # Deprecated in rotator
CONSTANT_VELOCITY = enum.auto()
+class FaultSubstate(enum.IntEnum):
+ """Controller substate for the FAULT state.
+
+ Value reported in ``telemetry.fault_substate``.
+
+ This is enum ``FaultSubStates`` in Simulink model.
+ """
+
+ EMERGENCY_STOPPING = 0
+ WAIT_CLEAR_ERROR = enum.auto()
+ NO_ERROR = enum.auto()
+
+
class ApplicationStatus(enum.IntFlag):
"""Bit masks for the value reported in ``telemetry.application_status``.