147 lines
2.9 KiB
Plaintext
147 lines
2.9 KiB
Plaintext
=head1 JSON Links
|
|
|
|
JSON Links are an extensible mechanism for adding new kinds of database link,
|
|
using JSON for the link address.
|
|
The following link types are available in this release:
|
|
|
|
=over
|
|
|
|
=item * L<Constant|/"Constant Link const">
|
|
|
|
=item * L<Database|/"Database Link db">
|
|
|
|
=item * L<Channel Access|/"Channel Access Link ca">
|
|
|
|
=item * L<Calc|/"Calculation Link calc">
|
|
|
|
=back
|
|
|
|
=head2 Using Links
|
|
|
|
...
|
|
must appear inside a pair of braces C< {} > expressed as a JSON
|
|
(L<JavaScript Object Notation|http://www.json.org/>) object, which allows link
|
|
parameters to be defined as needed.
|
|
|
|
|
|
=head2 Link Type Reference
|
|
|
|
=cut
|
|
|
|
link(const, lnkConstIf)
|
|
|
|
=head3 Constant Link C<"const">
|
|
|
|
Constant links provide one or more values at link initalization time, but do not return
|
|
any data when their C<getValue()> routine is called. Most record types support the use of
|
|
constant links by calling C<recGblInitConstantLink()> at initialization, which results in
|
|
the constant value being loaded into the target field at that time.
|
|
|
|
=head4 Parameters
|
|
|
|
A const link takes a parameter which may be an integer, double or string, or an array of
|
|
those types. If an array contains both integers and double values the integers will be
|
|
promoted to doubles. Mixing strings and numbers in an array will result in an error.
|
|
|
|
=head4 Examples
|
|
|
|
{const: 3.14159265358979}
|
|
{const: "Pi"}
|
|
{const: [1, 2.718281828459, 3.14159265358979]}
|
|
{const: ["One", "e", "Pi"]}
|
|
|
|
=cut
|
|
|
|
#link(db, lnkDbIf)
|
|
|
|
=head3 Database Link C<"db">
|
|
|
|
...
|
|
|
|
=head4 Parameters
|
|
|
|
...
|
|
|
|
=head4 Example
|
|
|
|
...
|
|
|
|
=cut
|
|
|
|
#link(ca, lnkCaIf)
|
|
|
|
=head3 Channel Access Link C<"ca">
|
|
|
|
...
|
|
|
|
=head4 Parameters
|
|
|
|
...
|
|
|
|
=over
|
|
|
|
=item ...
|
|
|
|
...
|
|
|
|
=back
|
|
|
|
...
|
|
|
|
=head4 Example
|
|
|
|
...
|
|
|
|
=cut
|
|
|
|
link(calc, lnkCalcIf)
|
|
|
|
=head3 Calculation Link C<"calc">
|
|
|
|
Calculation links can perform simple mathematical expressions on scalar
|
|
(double-precision floating-point) values obtained from other link types and
|
|
return a single double-precision floating-point result. The expressions are
|
|
evaluated by the EPICS Calc engine, and up to 12 input links can be used.
|
|
|
|
=head4 Parameters
|
|
|
|
The link value is a map with the following keys:
|
|
|
|
=over
|
|
|
|
=item expr
|
|
|
|
The expression to be evaluated, provided as a string.
|
|
|
|
=item major
|
|
|
|
An optional expression that returns non-zero to raise a major alarm.
|
|
|
|
=item minor
|
|
|
|
An optional expression that returns non-zero to raise a minor alarm.
|
|
|
|
=item args
|
|
|
|
A JSON list of up to 12 input arguments for the expression, which are assigned
|
|
to the inputs C<A>, C<B>, C<C>, ... C<L>. Each input argument may be either a
|
|
numeric literal or an embedded link inside C<{}> braces.
|
|
|
|
=item units
|
|
|
|
An optional string specifying the engineering units for the result of the
|
|
expression. Equivalent to the C<EGU> field of a record.
|
|
|
|
=item prec
|
|
|
|
An optional integer specifying the numeric precision with which the calculation
|
|
result should be displayed. Equivalent to the C<PREC> field of a record.
|
|
|
|
=back
|
|
|
|
=head4 Example
|
|
|
|
{calc: {expr:"A*B", args:[{db:"record.VAL"}, 1.5]}}
|
|
|
|
=cut
|