1pub const FEEDBACK_BASE_ID: u32 = 0x2A1;
7pub const FEEDBACK_END_ID: u32 = 0x2A8;
8
9pub const CONTROL_BASE_ID: u32 = 0x150;
11pub const CONTROL_END_ID: u32 = 0x15F;
12
13pub const CONFIG_BASE_ID: u32 = 0x470;
15pub const CONFIG_END_ID: u32 = 0x47E; pub const ID_ROBOT_STATUS: u32 = 0x2A1;
23
24pub const ID_END_POSE_1: u32 = 0x2A2;
26pub const ID_END_POSE_2: u32 = 0x2A3;
27pub const ID_END_POSE_3: u32 = 0x2A4;
28
29pub const ID_JOINT_FEEDBACK_12: u32 = 0x2A5;
31pub const ID_JOINT_FEEDBACK_34: u32 = 0x2A6;
32pub const ID_JOINT_FEEDBACK_56: u32 = 0x2A7;
33
34pub const ID_GRIPPER_FEEDBACK: u32 = 0x2A8;
36
37pub const ID_JOINT_DRIVER_HIGH_SPEED_BASE: u32 = 0x251;
39
40pub const ID_JOINT_DRIVER_LOW_SPEED_BASE: u32 = 0x261;
42
43pub const ID_JOINT_END_VELOCITY_ACCEL_BASE: u32 = 0x481;
45
46pub const ID_FIRMWARE_READ: u32 = 0x4AF;
48
49pub const ID_EMERGENCY_STOP: u32 = 0x150;
55
56pub const ID_CONTROL_MODE: u32 = 0x151;
58
59pub const ID_END_POSE_CONTROL_1: u32 = 0x152;
61pub const ID_END_POSE_CONTROL_2: u32 = 0x153;
62pub const ID_END_POSE_CONTROL_3: u32 = 0x154;
63
64pub const ID_JOINT_CONTROL_12: u32 = 0x155;
66pub const ID_JOINT_CONTROL_34: u32 = 0x156;
67pub const ID_JOINT_CONTROL_56: u32 = 0x157;
68
69pub const ID_ARC_POINT: u32 = 0x158;
71
72pub const ID_GRIPPER_CONTROL: u32 = 0x159;
74
75pub const ID_MIT_CONTROL_BASE: u32 = 0x15A;
77
78pub const ID_LIGHT_CONTROL: u32 = 0x121;
80
81pub const ID_FIRMWARE_UPGRADE: u32 = 0x422;
83
84pub const ID_MASTER_SLAVE_MODE: u32 = 0x470;
90
91pub const ID_MOTOR_ENABLE: u32 = 0x471;
93
94pub const ID_QUERY_MOTOR_LIMIT: u32 = 0x472;
96
97pub const ID_MOTOR_LIMIT_FEEDBACK: u32 = 0x473;
99
100pub const ID_SET_MOTOR_LIMIT: u32 = 0x474;
102
103pub const ID_JOINT_SETTING: u32 = 0x475;
105
106pub const ID_SETTING_RESPONSE: u32 = 0x476;
108
109pub const ID_PARAMETER_QUERY_SET: u32 = 0x477;
111
112pub const ID_END_VELOCITY_ACCEL_FEEDBACK: u32 = 0x478;
114
115pub const ID_SET_END_VELOCITY_ACCEL: u32 = 0x479;
117
118pub const ID_COLLISION_PROTECTION_LEVEL: u32 = 0x47A;
120
121pub const ID_COLLISION_PROTECTION_LEVEL_FEEDBACK: u32 = 0x47B;
123
124pub const ID_MOTOR_MAX_ACCEL_FEEDBACK: u32 = 0x47C;
126
127pub const ID_GRIPPER_TEACH_PARAMS: u32 = 0x47D;
129
130pub const ID_GRIPPER_TEACH_PARAMS_FEEDBACK: u32 = 0x47E;
132
133#[derive(Debug, Clone, Copy, PartialEq, Eq)]
139pub enum FrameType {
140 Feedback,
142 Control,
144 Config,
146 Unknown,
148}
149
150impl FrameType {
151 pub fn from_id(id: u32) -> Self {
153 match id {
154 0x2A1..=0x2A8 | 0x251..=0x256 | 0x261..=0x266 | 0x481..=0x486 | 0x4AF => {
156 FrameType::Feedback
157 },
158 0x150..=0x15F => FrameType::Control,
160 0x470..=0x47E => FrameType::Config,
162 _ => FrameType::Unknown,
164 }
165 }
166}
167
168#[cfg(test)]
169mod tests {
170 use super::*;
171
172 #[test]
173 fn test_frame_type_feedback() {
174 assert_eq!(FrameType::from_id(0x2A1), FrameType::Feedback);
175 assert_eq!(FrameType::from_id(0x2A8), FrameType::Feedback);
176 assert_eq!(FrameType::from_id(0x251), FrameType::Feedback);
177 assert_eq!(FrameType::from_id(0x256), FrameType::Feedback);
178 assert_eq!(FrameType::from_id(0x261), FrameType::Feedback);
179 assert_eq!(FrameType::from_id(0x266), FrameType::Feedback);
180 assert_eq!(FrameType::from_id(0x481), FrameType::Feedback);
181 assert_eq!(FrameType::from_id(0x486), FrameType::Feedback);
182 }
183
184 #[test]
185 fn test_frame_type_control() {
186 assert_eq!(FrameType::from_id(0x150), FrameType::Control);
187 assert_eq!(FrameType::from_id(0x15F), FrameType::Control);
188 assert_eq!(FrameType::from_id(0x151), FrameType::Control);
189 assert_eq!(FrameType::from_id(0x155), FrameType::Control);
190 }
191
192 #[test]
193 fn test_frame_type_config() {
194 assert_eq!(FrameType::from_id(0x470), FrameType::Config);
195 assert_eq!(FrameType::from_id(0x47E), FrameType::Config);
196 assert_eq!(FrameType::from_id(0x471), FrameType::Config);
197 assert_eq!(FrameType::from_id(0x47D), FrameType::Config);
198 }
199
200 #[test]
201 fn test_frame_type_unknown() {
202 assert_eq!(FrameType::from_id(0x100), FrameType::Unknown);
203 assert_eq!(FrameType::from_id(0x999), FrameType::Unknown);
204 assert_eq!(FrameType::from_id(0x121), FrameType::Unknown); assert_eq!(FrameType::from_id(0x422), FrameType::Unknown); }
207
208 #[test]
209 fn test_id_constants() {
210 assert_eq!(ID_ROBOT_STATUS, 0x2A1);
212 assert_eq!(ID_EMERGENCY_STOP, 0x150);
213 assert_eq!(ID_MOTOR_ENABLE, 0x471);
214 }
215}