*Liste des attributs des devices sources avec leur nom local.
* InputNames
*A completer
*Définit les attributs "write-only" du device
* OuputNames
* Déeinit les
* Définit les attributs "read-only" du device
* IONames
*A completer
*Définit les attributs "read-write" du device
* AutoInputProperties
* Définit les propriétés d’écriture automatique des attributs IONames
* ScanMode:
...
...
@@ -22,17 +25,157 @@ Je calcule la position du faisceau au Point Z en fonction des mesures effectuée
* DiagnosticFunctions
* TRUE : le parser ajoute le calcul des fonctions MIN, MAX, MEAN, STD sur les AttributesNames
* MovingState
*indique au ScanServer l’état auquel il doit s’attendre lorsque le device est en « moving »
*Indique au ScanServer l’état auquel il doit s’attendre lorsque le device est en « moving »
* PriorityList
* Liste des états selon leur priorité. Cela permet de composer les états des différents devices appelés et de remonter le plus important.

# State et status

# Commandes
# Détail des propriétés principales
## AttributesNames
Les attributs à lire dans le système Tango sont décrits par la propriété `AttributeNames`
Exemple :
*`p1,TDL-D13-1/DG/XBPM.1/verticalPosition1`
*`p2,TDL-D13-1/DG/XBPM.1/verticalPosition2`
*`p3,TDL-D13-1/DG/XBPM.2/verticalPosition1`
*`p4,TDL-D13-1/DG/XBPM.2/verticalPosition2`
Explication :
La « variable » `p1` va maintenant contenir le résultat de la lecture de l’attribut `TDL-D13-1/DG/XBPM.1/verticalPosition1` et sera utilisable dans les autres propriétés.
## InputNames
Les attributs dynamiques en écriture seule sont dans la propriété `InputNames`
### Exemple
*`DevDouble p5, p1=p5*3`
*`DevDouble p5, p2=p5/2`
### Explication
* Créer un nouveau attribut `p5`,
* A chaque fois qu’un client écrit dans l’attribut p5, le Parser écrit dans les attributs p1 et p2 les nouvelles valeurs calculées en fonction de p5 et selon les expressions définies dans InputNames.
* La partie read visible dans l'ATKPanel contient la dernière valeur saisie.
Un nouvel attribut `IO` est disponible. Sa partie read contiendra le résultat de « <spanstyle="color: green">p1+p2</span> » et lorsque l’on écrira dessus, le Parser écrira sur les attributs p1 et p2.
On ne peut définir qu’une seule expression (la première) pour la lecture. Et autant que souhaitées pour l’écriture.

## AutoInputProperties
# Fonctions et constantes disponibles
Trigonometric Functions
All functions accept arguments of the Double and Complex type, except atan2 which only accepts Double arguments.
| Description | Function Name |
|:------------|:--------------|
| Sine | sin(x) |
| Cosine | cos(x) |
| Tangent | tan(x) |
| Arc Sine2 | asin(x) |
| Arc Cosine2 | acos(x) |
| Arc Tangent | atan(x) |
| Arc Tan with 2 parameters | atan2(y, x) |
| Secant | sec(x) |
| Cosecant | cosec(x) |
| Co-tangent | cot(x) |
| Hyperbolic Sine | sinh(x) |
| Hyperbolic Cosine | cosh(x) |
| Hyperbolic Tangent | tanh(x) |
| Inverse Hyperbolic Sine | asinh(x) |
| Inverse Hyperbolic Cosine1 | acosh(x) |
| Inverse Hyperbolic Tangent1 | atanh(x) |
Log and Exponential Functions
All functions accept arguments of the Double and Complex types.
| Description | Function Name |
|:------------|:--------------|
| Natural Logarithm1 | ln(x)
| Logarithm base 101 | log(x)
| Logarithm base 21 | lg(x)
| Exponential (e^x) | exp(x)
| Power1 | pow(x)
Statistical Functions
All functions accept either a vector (e.g. min([1,2,3])) or a set of numbers (e.g. min(1,2,3)).
| Description | Function Name |
|:------------|:--------------|
| Average | avg(x1,x2,x3,...) |
| Minimum | min(x1,x2,x3,...) | MinMax(true)
| Maximum | max(x1,x2,x3,...) | MinMax(false)
| Vector Sum | vsum(x1,x2,x3,...) |
Rounding Functions
| Description | Function Name |
|:------------|:--------------|
| Round | round(x), round(x, p) |
| Round to integer | rint(x), rint(x, p) |
| Floor | floor(x) |
| Ceiling | ceil(x) |
Miscellaneous Functions
| Description | Function Name |
|:------------|:--------------|
| If | if(cond, trueval, falseval) |
| Str (convert number to string) | str(x) |
| Absolute Value / Magnitude | abs(x) |
| Random number
| (between 0 and 1) | rand() |
| Modulus | mod(x,y)
| = x % y |
| Square Root1 | sqrt(x) |
| Sum | sum(x,y,...) |
| Binomial coefficients | binom(n, i) |
| Signum (-1,0,1 depending on sign of argument) | signum(x) |
Complex Functions
| Description | Function Name |
|:------------|:--------------|
| Real Component | re(c) |
| Imaginary Component | im(c) |
| Complex Modulus (Absolute Value) | cmod(c) |
| Argument (Angle of complex value, in radians) | arg(c) |
| Complex conjugate | conj(c) |
| Complex, constructs a complex number from real and imaginary parts | complex(x, y) |
| Polar, constructs a complex number from modulus and argument | polar(r, theta) |
Notes
1 By default functions like sqrt(-1) will return a complex result. These functions have constructors with a flag to control their behaviour for out of range values, if the flag is true, then the function will return Double.NaN for out of range real values. If the flag is false they will return the appropriate complex result.
2 By default functions like acos(2) will return Double.NaN. A constructor is available which sets a flag to make the function return the appropriate complex result for such cases.