Skip to content

Add standalone HXP group initialise command - #1

Open
lucianocguedes wants to merge 11 commits into
EuropeanSpallationSource:ess-masterfrom
lucianocguedes:init_function
Open

lucianocguedes wants to merge 11 commits into
EuropeanSpallationSource:ess-masterfrom
lucianocguedes:init_function

Conversation

@lucianocguedes

Copy link
Copy Markdown

Add HXP_INIT asyn parameter and InitAxis BO record to allow

calling HXPGroupInitialize without running the full home sequence.

Add an HXP_GROUP_INIT asyn parameter and GroupInit BO record to call

HXPGroupInitialize independently from the home sequence.

The existing home command performs both HXPGroupInitialize and

HXPGroupHomeSearch. For operation and recovery it is useful to expose

group initialisation separately, so the controller group can be moved

from an uninitialised state without immediately starting a home search.

This allows operators to initialise the group explicitly before deciding

whether a home search is required.
Luciano Carneiro Guedes added 2 commits June 15, 2026 09:24
Declare the groupInit() helper in HXPDriver.h so the implementation in
HXPDriver.cpp matches the HXPController class definition.
Add a GroupHoming bo record mapped to HXP_GROUP_HOME so
HXPGroupHomeSearch() can be triggered independently from the IOC.

This helps debug homing failures separately from the existing home()
sequence, which currently performs kill, initialize, and home together.
Read the General Inhibition state from the positioner hardware
status and expose it through the HXP_GENERAL_INHIBIT asyn parameter.

Add a GeneralInhibit bi record to provide the inhibition status
as an EPICS PV.
Expose the human-readable HXP group status description using
GroupStatusStringGet while keeping the existing numeric status.

Add a STATUS_DESC PV to provide the group state description.
Retry a move-socket command once when asyn reports a communication
error. This allows the socket time to recover through auto-connect
after the HXP controller has been rebooted.

Previously, the first command using a stale move socket failed with a
connection reset, while a subsequent command succeeded.
Luciano Carneiro Guedes added 5 commits September 8, 2026 16:19
Wait for the group to reach the Not referenced state after
GroupInitialize before starting GroupHomeSearch.

Also propagate errors from the group kill, initialization, and
homing commands instead of always returning success.
Remove the temporary GroupInitialize and GroupHome PVs and their
associated driver parameters and helper methods.

These commands were added to debug the homing sequence and are no
longer needed now that the standard motor homing operation correctly
waits for group initialization before starting the home search.
Expose the positioner hardware and driver status through EPICS PVs
to support diagnostics of the HXP motor power state.
Update the HXP API wrapper to use unsigned long for the driver status,
matching the controller command interface and fixing the -129 parameter
type error when polling the driver status.
Poll hardware and driver status for HEXAPOD.1 through HEXAPOD.6
in the controller poller, using asyn addresses 0 through 5.

Add individual HardwareStatus and DriverStatus PVs for each physical
positioner and publish callbacks for all six addresses.

Preserve the existing status PVs as positioner 1 readbacks and retain
the GeneralInhibit behavior. Leave virtual-axis motion unchanged.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant