An autonomous instrument control server will mediate interactions of users with hardware, manage data acquisition, and sequence commands for execution. The server is run as an operating system service that can be accessed remotely to control the instrument. In order to address the combined issues of remote operation, measurement continuity, and operating system privileges, a client-server scheme was chosen.
The general design of ICE is divided in three main parts: the ICE server, the ICE client and the device abstraction layer, DALI.
The ICE server is responsible for orchestrating movements of the instrument and measurements. It uses DALI to interact with the devices.
DALI presents the ICE server with abstracted devices having common functionality. This allows ICE to use the same general DALI commands to interact with the hardware without having to know the details of the device drivers.
The ICE client presents the functionality of the ICE server to the user. Client programs incorporating experiment planning tools will be used to compose scans, issue instantaneous commands to be executed by the server, and provide the first layer of live status information. For example, the ICE server will be responsible for managing scan descriptions and executing them. The ICE client will be responsible for giving the user the tools that will allow him to give the ICE server the information that describes scans. Both client and server therefore have to manage scans at a very different level.