Skip to content

Commit 8a768e3

Browse files
authored
Refactor RTDE Bit Typing (#56)
- use ctype u32 for robot status bit typing - add lamda function to make return dict clearer from function doctring
1 parent 6cd08ca commit 8a768e3

1 file changed

Lines changed: 21 additions & 18 deletions

File tree

  • armctl/universal_robots/protocols

armctl/universal_robots/protocols/rtde.py

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55

66
from rtde import RTDE as _RTDE
77
from rtde.rtde_config import ConfigFile
8+
from ctypes import c_uint32
89

9-
UINT32 = NewType("UINT32", int)
10+
u32 = NewType("u32", c_uint32)
1011

1112

1213
class RTDE:
@@ -73,25 +74,27 @@ def robot_status(self) -> dict[str, bool]:
7374
- **`Bit 10`**: Is stopped due to safety
7475
"""
7576
data = self._get_data()
76-
rsb: UINT32 = data.robot_status_bits
77-
ssb: UINT32 = data.safety_status_bits
77+
rsb: u32 = data.robot_status_bits
78+
ssb: u32 = data.safety_status_bits
79+
80+
bit = lambda data, n: bool(data & (1 << n))
7881

7982
return {
8083
# Robot status bits
81-
"Power On": bool(rsb & 1),
82-
"Program Running": bool(rsb & 2),
83-
"Teach Button": bool(rsb & 4),
84-
"Power Button": bool(rsb & 8),
84+
"Power On": bit(rsb, 0),
85+
"Program Running": bit(rsb, 1),
86+
"Teach Button": bit(rsb, 2),
87+
"Power Button": bit(rsb, 3),
8588
# Safety status bits
86-
"Normal Mode": bool(ssb & 1),
87-
"Reduced Mode": bool(ssb & 2),
88-
"Protective Stop": bool(ssb & 4),
89-
"Recovery Mode": bool(ssb & 8),
90-
"Safeguard Stopped": bool(ssb & 16),
91-
"System Emergency Stopped": bool(ssb & 32),
92-
"Robot Emergency Stopped": bool(ssb & 64),
93-
"Emergency Stopped": bool(ssb & 128),
94-
"Violation": bool(ssb & 256),
95-
"Fault": bool(ssb & 512),
96-
"Stopped Due to Safety": bool(ssb & 1024),
89+
"Normal Mode": bit(ssb, 0),
90+
"Reduced Mode": bit(ssb, 1),
91+
"Protective Stop": bit(ssb, 2),
92+
"Recovery Mode": bit(ssb, 3),
93+
"Safeguard Stopped": bit(ssb, 4),
94+
"System Emergency Stopped": bit(ssb, 5),
95+
"Robot Emergency Stopped": bit(ssb, 6),
96+
"Emergency Stopped": bit(ssb, 7),
97+
"Violation": bit(ssb, 8),
98+
"Fault": bit(ssb, 9),
99+
"Stopped Due to Safety": bit(ssb, 10),
97100
}

0 commit comments

Comments
 (0)