.. _boot: Boot ==================== The ``boot == DeviceProxy("STAT/Boot/1")`` device is responsible for (re)starting and initialising the other devices. Devices which are not reachable, for example because their docker container is explicitly stopped, are skipped during initialisation. This device provides the following commands: :boot(): Stop and start the other devices in the correct order, set their default values, and command them to initialise their hardware. This procedure runs asynchronously, causing this command to return immediately. Initialisation is aborted if an error is encountered. :returns: ``None`` :resume(): Resume an earlier boot attempt: start initialising devices from the first one that failed to initialise, instead of from scratch. :returns: ``None`` The initialisation process can subsequently be followed through monitoring the following attributes: :booting_R: Whether the initialisation procedure is still ongoing. :type: ``bool`` :progress_R: Percentage completeness of the initialisation procedure. Each succesfully configured device increments progress. :type: ``int`` :status_R: A description of what the device is currently trying to do. If an error occurs, this will hint towards the cause. :type: ``str`` :initialised_devices_R: Which devices were initialised succesfully. :type: ``str[]`` :uninitialised_devices_R: Which devices have not yet been initialised, or failed to initialiase. :type: ``str[]`` A useful pattern is thus to call ``boot()``, wait for ``booting_R == False``, and then check whether the initalisation was succesful, if ``progress_R == 100``. If a device fails to initialise, most likely the :doc:`../interfaces/logs` will need to be consulted.