diff --git a/README.md b/README.md index 30562c680b5d739c56b42ab9da8c03aeacecb0a9..355b2411fc72d952907efd96ed480210b8eb5e1f 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,22 @@ Station Control software related to Tango devices. +# Index + +* [Docker compose documentation](docker-compose/README.md) + * [Timescaledb](docker-compose/timescaledb/README.md) + * [Jupyter startup files](docker-compose/jupyter/ipython-profiles/stationcontrol-jupyter/startup/README.md) + * [Tango Prometheus exporter](docker-compose/tango-prometheus-exporter/ska-tango-grafana-exporter/README.md) +* [ReadTheDocs (Sphinx / ReStructuredText) documentation](tangostationcontrol/docs/README.md) +* [Source code documentation](tangostationcontrol/README.md) + * [Attribute wrapper documentation](tangostationcontrol/README.md) + * [Extensive attribute wrapper documentation](tangostationcontrol/tangostationcontrol/clients/README.md) + * [Archiver documentation](tangostationcontrol/tangostationcontrol/toolkit/README.md) + * [Adding a new tango device](tangostationcontrol/tangostationcontrol/devices/README.md) + * [HDF5 statistics](tangostationcontrol/tangostationcontrol/statistics_writer/README.md) +* [Unit tests](tangostationcontrol/tangostationcontrol/test/README.md) +* [Integration tests](tangostationcontrol/tangostationcontrol/integration_test/README.md) + # Installation ## Prerequisites diff --git a/docker-compose/jupyter/ipython-profiles/stationcontrol-jupyter/startup/README b/docker-compose/jupyter/ipython-profiles/stationcontrol-jupyter/startup/README.md similarity index 100% rename from docker-compose/jupyter/ipython-profiles/stationcontrol-jupyter/startup/README rename to docker-compose/jupyter/ipython-profiles/stationcontrol-jupyter/startup/README.md diff --git a/docker-compose/tango-prometheus-exporter/README b/docker-compose/tango-prometheus-exporter/README.md similarity index 100% rename from docker-compose/tango-prometheus-exporter/README rename to docker-compose/tango-prometheus-exporter/README.md diff --git a/tangostationcontrol/tangostationcontrol/clients/README.md b/tangostationcontrol/tangostationcontrol/clients/README.md index 9d68591c393f1d7da49bbc770101cdabf2cd7ca9..3aa6a653df55601fe776c6acbde1f68c4350afee 100644 --- a/tangostationcontrol/tangostationcontrol/clients/README.md +++ b/tangostationcontrol/tangostationcontrol/clients/README.md @@ -1,4 +1,4 @@ -#Attribute wrapper use guide +# Attribute wrapper use guide The attribute wrapper is an abstraction layer around tango attributes. This abstraction layer provides an easier and more consistent way of creating and using attributes and allows for easy reuse of code. @@ -6,7 +6,7 @@ You can find example uses of the attribute wrapper inside the devices folder: ht Inside lofar/tango/tangostationcontrol/tangostationcontrol/devices/lofar_device.py we import the attribute wrapper. Here we also create a dictionary containing all attribute values in the devices with the setup_value_dict method. This dictionary is set up when the device is initialized. This file, together with the opcua_client.py may be of interest as they are created as generic base classes. -##Functions/methods +## Functions/methods `__init__`: Comms_id: user-supplied identifier that is attached to this object, to identify which communication class will need to be attached Comms_annotation: : data passed along to the attribute. can be given any form of data. handling is up to client implementation @@ -41,7 +41,7 @@ Wrap an attribute write function to annotate its exceptions with our comms_annot -##Example Device / usage +## Example Device / usage Here an example of a Tango Device that uses the attribute wrapper is presented. The device class is a sub-class of opcua_device, which is, in turn, a sub-class of lofar_device class which implements the attribute initialisation methods (attr_list and setup_value_dict ) as stated above. ```python @@ -71,7 +71,7 @@ Once the Tango device is up and running, one can interact with the device attrib > > d.HBAT_BF_delays_RW = [....] # write attribute value -##How clients work: +## How clients work: Clients work by providing a communication interface or data accessor for the attribute. The implementation of this is largely up to the user, but must contain a `setup_attribute` function that returns a valid read and write function. Once a client has been initialized, the attributes can be assigned their read/write functions. @@ -83,16 +83,16 @@ Clients can be set up in the device, during the initialization and then can be a `tangostationcontrol/tangostationcontrol/clients/comms_client.py` provides a generic client class for us and may be of interest. -##Dependencies +## Dependencies Attribute wrappers wraps around tango attributes. As such, Tango needs to be installed. The attribute wrapper relies on 1 internal file. tango/tangostationcontrol/devices/device_decorators.py, which is imported by the attribute_wrapper.py. This file is used for ensuring the read/write functions are only called in the correct device state. -##Closing +## Closing The advantages of using attribute_wrapper class instead of the standard Tango Attribute class can be noted in the following example where, in the first part, an implementation of the standard class is presented, while in the second part the analogous implementation using an attribute_wrapper is shown. -##From official Tango documentation # +## From official Tango documentation ```python class PowerSupply(Device):