<p style="text-align: center"><a href="https://www.synchrotron-soleil.fr/en"><img src="https://www.synchrotron-soleil.fr/sites/default/files/logo_0.png" alt="SOLEIL Synchrotron"/></a></p> **ContactManager** is a device intended to manage local contact for DataStorage, updating its reference in PANIC phonebook. <br /><br /> # License This project is published under the [GNU Lesser General Public License V3](https://www.gnu.org/licenses/lgpl-3.0.en.html) *(see LICENSE.txt file)*. <br /><br /> # Environment configuration To properly work, this device needs: - Python ≥ 3.10 - pytango ≥ 9.4.1, but ≠ 9.5.1 - numpy 1 *(dependency for pytango)*, ≥ 1.19.5 <br /><br /> # Class Properties | Name | Type | Description | | ---- | ---- | ----------- | | **Description** | String[] | Gives information about ContactManager device and a link to this page. | <br /><br /> # Device Properties | Name | Type | Description | | ---- | ---- | ----------- | | **ContactKey** | String | The key for which to modify the value in PANIC Phonebook. | | **ContactList** | String[] | The contacts this device should know.<br />Each contact should be written this way:<br />Contact_Name:PhoneBook_Value<br /><br />The Contact_Name entries will represent the possible enum labels for `contact` attribute.<br />The PhoneBook_Value is what to write in PANIC Phonebook at the key defined in `ContactKey` property when `contact` attribute is set with Contact_Name.<br /><br />Example:<br /><pre>John:john.doe[]()@synchrotron-soleil.fr<br />Jack:%JACK<br />Telma:telma.louise[]()@synchrotron-soleil.fr</pre><br />With this example, `contact` attribute will have the enum labels [\"Unknown\", \"John\", \"Jack\", \"Telma\"]. | <br /><br /> # Attributes Every attributes are at OPERATOR Level. | Name | Dyn<br/>amic | Attr.<br/>type | R/W<br/>type | Data<br/>type | Description | | ---- | ------------ | -------------- | ------------ | ------------- | ----------- | | **info** | no | Spectrum | READ | DEV_STRING | Information about ContactManger.<br />Includes project version, python version, dependencies versions and a link to this page. | | **panicPhonebookReady** | no | Scalar | READ | DEV_BOOLEAN | Whether PANIC Phonebook was found. | | **contact** | yes | Scalar | READ_WRITE | DEV_ENUM | What to write in PANIC Phonebook for the key defined in `ContactKey` property.<br />The effective written value will be the one in `ContactList` property for which the key matches the selected label in `contact` attribute.<br /><br />"Unknown" will always be present in enum labels at first index.<br /><br />Setting `contact` attribute with "Unknown" *(0)* will have effect neither on PANIC Phonebook, nore on `contact` read value.<br /><br />`contact` read value may return "Unknown" *(0)* when the value in PANIC Phonebook for the key defined in `ContactKey` property matches no known value, or when this key is not present in PANIC Phonebook. | <br /><br /> # Commands Every commands are at OPERATOR Level. | Name | Input type | Output type | Description | | ---- | ---------- |------------ | ----------- | | **Init** | DEV_VOID | DEV_VOID | This command initializes the device, forcing it to parse its properties and rebuild its attributes. | | **State** | DEV_VOID | DEV_STATE | This command gets the device state (stored in its device_state data member) and returns it to the caller. | | **Status** | DEV_VOID | DEV_STRING | This command gets the device status (stored in its device_status data member) and returns it to the caller. | <br /><br /> ## States | Name | Description | | ---- | ----------- | | **ALARM** | Device failed to update PANIC Phonebook or to init PyAlarm devices. | | **FAULT** | `ContactList` or `ContactKey` property is not correctly set. | | **INIT** | Device is initializing, parsing its properties and checking PANIC phonebook availability.<br />In this state, you are not authorized to read `panicPhonebookReady` attribute, nore to read or set `contact` attribute. | | **MOVING** | Writing PANIC Phonebook and initializing PyAlarm devices.<br />In this state, you are not authorized to set `contact` attribute. | | **ON** | Device is ready to do its job. |