OperationModeGet() and OperationModeSet() only work for single axis drives

I think I’ve found a bug. It looks like OperationModeGet() and OperationModeSet() always perform SDO reads and writes on index 0x6060 even when an axis has a driveIndex of 1 and should be reading and writing from 0x6860.

psdn_sm  | 2025-12-15 10:50:55.522 (   2.692s) [        AF142CE0]    NamazuMechanisms.cc:252   INFO| Cinch: Homing axes with autoHome=true
psdn_sm  | 2025-12-15 10:50:55.522 (   2.693s) [        AF142CE0]     NamazuMechanisms.h:51    INFO| Axis cinchMotor: autoHome=true, performing DS402 homing
psdn_sm  | 2025-12-15 10:50:55.557 (   2.728s) [        AF142CE0]       AdvancedAxis.cpp:186   INFO| Axis cinchMotor: Starting drive-based DS402 homing with method -1 (driveIndex=1, countsPerUserUnit=432.36)
psdn_sm  | 2025-12-15 10:50:55.557 (   2.728s) [        AF142CE0]       AdvancedAxis.cpp:221   INFO| Axis cinchMotor: Converted values - offset=-4323 counts, zeroSpeed=17294 counts/s, accel=864720 counts/s^2
psdn_sm  | 2025-12-15 10:50:55.562 (   2.733s) [        AF142CE0]       AdvancedAxis.cpp:228   INFO| Axis cinchMotor: Writing homing SDOs (indexOffset=0x800)
psdn_sm  | 2025-12-15 10:50:55.574 (   2.745s) [        AF142CE0]       AdvancedAxis.cpp:254   INFO| Axis cinchMotor: Writing HOME.V=17294 counts/s (sub1 only, no creep speed for method -1)
psdn_sm  | 2025-12-15 10:50:55.606 (   2.777s) [        AF142CE0]       AdvancedAxis.cpp:269   INFO| Axis cinchMotor: BEFORE RSI OperationModeSet() - driveIndex=1
psdn_sm  | 2025-12-15 10:50:55.606 (   2.777s) [        AF142CE0]       AdvancedAxis.cpp:270   INFO|   SDO 0x6060 (Axis1) = 8
psdn_sm  | 2025-12-15 10:50:55.606 (   2.777s) [        AF142CE0]       AdvancedAxis.cpp:271   INFO|   SDO 0x6860 (Axis2) = 8
psdn_sm  | 2025-12-15 10:50:55.606 (   2.777s) [        AF142CE0]       AdvancedAxis.cpp:272   INFO|   RSI OperationModeGet() = 8
psdn_sm  | 2025-12-15 10:50:55.606 (   2.777s) [        AF142CE0]       AdvancedAxis.cpp:274   INFO| Axis cinchMotor: Calling RSI OperationModeSet(HOMING_MODE=6)...
psdn_sm  | 2025-12-15 10:50:55.653 (   2.824s) [        AF142CE0]       AdvancedAxis.cpp:282   INFO| Axis cinchMotor: AFTER RSI OperationModeSet() - driveIndex=1
psdn_sm  | 2025-12-15 10:50:55.653 (   2.824s) [        AF142CE0]       AdvancedAxis.cpp:284   INFO|   SDO 0x6060 (Axis1) = 6 (was 8, CHANGED!)
psdn_sm  | 2025-12-15 10:50:55.653 (   2.824s) [        AF142CE0]       AdvancedAxis.cpp:286   INFO|   SDO 0x6860 (Axis2) = 8 (was 8, unchanged)
psdn_sm  | 2025-12-15 10:50:55.653 (   2.824s) [        AF142CE0]       AdvancedAxis.cpp:287   INFO|   RSI OperationModeGet() = 6
psdn_sm  | 2025-12-15 10:50:55.653 (   2.824s) [        AF142CE0]       AdvancedAxis.cpp:295    ERR| RSI BUG DETECTED: OperationModeSet() changed Axis1 (0x6060) instead of Axis2 (0x6860)!
psdn_sm  | 2025-12-15 10:50:55.653 (   2.824s) [        AF142CE0]       AdvancedAxis.cpp:296    ERR| This axis has driveIndex=1, RSI should have written to 0x6860 but wrote to 0x6060

Hi @edco,

Yep. That is a bug. It looks like we handle it properly if you have the following defined in CustomNodeInfo.xml

<ModeOfOperation>PDO.Mode of Operation</ModeOfOperation>

You’d need to change the inner text to reflect your drive’s PDO. I can help with this if you’d like to get it working immediately. If you don’t have the associated entry, we just assume it is a single axis drive and use 0x6060.

I’ll get a fixed for our next release.