Add new POD documentation, from Rolf Keitel

Documents the lsi, lso and printf record types.
This commit is contained in:
Andrew Johnson
2020-02-13 08:59:17 -06:00
parent bfd289e85f
commit eb8ca22704
3 changed files with 495 additions and 2 deletions

View File

@@ -5,7 +5,44 @@
# in file LICENSE that is included with this distribution.
#*************************************************************************
=title Long String Input Record (lsi)
The long string input record is used to retrieve an arbitrary ASCII string with
a maximum length of 65535 characters.
=head2 Parameter Fields
The record-specific fields are described below, grouped by functionality.
=recordtype lsi
=cut
recordtype(lsi) {
=head3 Scan Parameters
The long string input record has the standard fields for specifying under what
circumstances it will be processed. These fields are listed in L<Scan Fields>.
In addition, L<Scanning Specification> explains how these fields are used.
=head3 Input Specification
The INP field determines where the long string input record obtains its string
from. It can be a database or channel access link, or a constant. If constant,
the VAL field is initialized with the constant and can be changed via dbPuts.
Otherwise, the string is read from the specified location each time the record
is processed and placed in the VAL field. The maximum number of characters in
VAL is given by SIZV, and cannot be larger than 65535. In addition, the
appropriate device support module must be entered into the DTYP field.
See L<Address Specification> for information on specifying links.
=fields VAL, OVAL, SIZV, INP, DTYP
=cut
include "dbCommon.dbd"
%#include "devSup.h"
%
@@ -25,12 +62,18 @@ recordtype(lsi) {
pp(TRUE)
special(SPC_DBADDR)
extra("char *val")
#=type STRING[SIZV]
#=read Yes
#=write Yes
}
field(OVAL,DBF_NOACCESS) {
prompt("Old Value")
special(SPC_DBADDR)
interest(3)
extra("char *oval")
#=type STRING[SIZV]
#=read Yes
#=write No
}
field(SIZV,DBF_USHORT) {
prompt("Size of buffers")
@@ -52,6 +95,18 @@ recordtype(lsi) {
promptgroup("40 - Input")
interest(1)
}
=head3 Monitor Parameters
These parameters are used to specify when the monitor post should be sent by the
C<monitor()> routine. There are two possible choices:
APST is used for archiver monitors and MPST for all other type of monitors.
=fields MPST, APST
=cut
field(MPST,DBF_MENU) {
prompt("Post Value Monitors")
promptgroup("80 - Display")
@@ -64,6 +119,37 @@ recordtype(lsi) {
interest(1)
menu(menuPost)
}
=head3 Operator Display Parameters
See L<Fields Common to All Record Types> for more on the record name (NAME) and
description (DESC) fields.
=fields NAME, DESC
=head3 Alarm Parameters
The long string input record has the alarm parameters common to all record
types. L<Alarm Fields> lists other fields related to a alarms that are common to
all record types.
=head3 Run-time and Simulation Mode Parameters
The old value field (OVAL) of the long string input record is used to implement
value change monitors for VAL. If VAL is not equal to OVAL, then monitors are
triggered. LEN contains the length of the string in VAL, OLEN contains the
length of the string in OVAL.
=fields OVAL, LEN, OLEN
The following fields are used to operate the string input in the simulation
mode. See L<Simulation Mode> for more information on simulation mode fields.
=fields SIOL, SIML, SIMM, SIMS
=cut
field(SIML,DBF_INLINK) {
prompt("Simulation Mode Link")
promptgroup("90 - Simulate")
@@ -86,3 +172,36 @@ recordtype(lsi) {
interest(2)
}
}
=head2 Device Support Interface
The record requires device support to provide an entry table (dset) which
defines the following members:
typedef struct {
long number;
long (*report)(int level);
long (*init)(int after);
long (*init_record)(lsiRecord *prec);
long (*get_ioint_info)(int cmd, lsiRecord *prec, IOSCANPVT *piosl);
long (*read_string)(lsiRecord *prec);
} lsidset;
The module must set C<number> to at least 5, and provide a pointer to its
C<read_string()> routine; the other function pointers may be C<NULL> if their
associated functionality is not required for this support layer.
Most device supports also provide an C<init_record()> routine to configure the
record instance and connect it to the hardware or driver support layer.
=head2 Device Support for Soft Records
A device support module for DTYP C<Soft Channel> is provided for retrieving
values from other records or other software components.
Device support for DTYP C<getenv> is provided for retrieving strings from
environment variables. C<INST_IO> addressing C<< @<environment variable> >> is
used on the C<INP> link field to select the desired environment variable.
=cut

View File

@@ -5,8 +5,110 @@
# in file LICENSE that is included with this distribution.
#*************************************************************************
=title Long String Output Record (lso)
The long string output record is used to write an arbitrary ASCII string with a
maximum length of 65535 characters.
=head2 Parameter Fields
The record-specific fields are described below, grouped by functionality.
=recordtype lso
=cut
include "menuIvoa.dbd"
recordtype(lso) {
include "dbCommon.dbd"
=head3 Scan Parameters
The long string output record has the standard fields for specifying under what
circumstances it will be processed. These fields are listed in L<Scan Fields>.
In addition, L<Scanning Specification> explains how these fields are used.
=head3 Desired Output Parameters
The long string output record must specify from where it gets its desired output
string. The first field that determines where the desired output originates is
the output mode select (OMSL) field, which can have two possible value:
C<closed_loop> or C<supervisory>. If C<supervisory> is specified, DOL is
ignored, the current value of VAL is written, and VAL can be changed externally
via dbPuts at run-time. If C<closed_loop> is specified, the VAL field's value is
obtained from the address specified in the desired output location field (DOL)
which can be either a database link or a channel access link.
The maximum number of characters in VAL is given by SIZV, and cannot be larger
than 65535.
DOL can also be a constant in addition to a link, in which case VAL is
initialized to the constant value. Your string constant, however, may be
interpreted as a CA link name. If you want to initialize your string output
record, it is therefore best to use the VAL field. Note that if DOL is a
constant, OMSL cannot be C<closed_loop>.
See L<Address Specification> for information on specifying links.
=fields VAL, SIZV, DOL, OMSL
=head3 Output Specification
The output link specified in the OUT field specifies where the long string
output record is to write its string. The link can be a database or channel
access link. If the OUT field is a constant, no output will be written.
See L<Address Specification> for information on specifying links.
In addition, the appropriate device support module must be entered into the DTYP
field.
=fields OUT, DTYP
=head3 Monitor Parameters
These parameters are used to specify when the monitor post should be sent by the
C<monitor()> routine. There are two possible choices:
APST is used for archiver monitors and MPST for all other type of monitors.
=fields MPST, APST
=head3 Operator Display Parameters
See L<Fields Common to All Record Types> for more on the record name (NAME) and
description (DESC) fields.
=fields NAME, DESC
=head3 Alarm Parameters
The long string input record has the alarm parameters common to all record
types. L<Alarm Fields> lists other fields related to a alarms that are common to
all record types.
The IVOA field specifies an action to take when the INVALID alarm is triggered.
There are three possible actions:
=head4 Menu menuIvoa
=menu menuIvoa
When C<<< Set output to IVOV >>>, the value contained in the IVOV field is
written to the output link during an alarm condition. See
L<Invalid Alarm Output Action>
for more information on the IVOA and IVOV fields.
L<Alarm Fields>
lists other fields related to a alarms that are common to all record types.
=fields IVOA, IVOV
=cut
include "dbCommon.dbd"
%#include "devSup.h"
%
%/* Declare Device Support Entry Table */
@@ -25,12 +127,18 @@ recordtype(lso) {
pp(TRUE)
special(SPC_DBADDR)
extra("char *val")
#=type STRING[SIZV]
#=read Yes
#=write Yes
}
field(OVAL,DBF_NOACCESS) {
prompt("Previous Value")
special(SPC_DBADDR)
interest(3)
extra("char *oval")
#=type STRING[SIZV]
#=read Yes
#=write No
}
field(SIZV,DBF_USHORT) {
prompt("Size of buffers")
@@ -88,6 +196,24 @@ recordtype(lso) {
interest(1)
menu(menuPost)
}
=head3 Run-time and Simulation Mode Parameters
The old value field (OVAL) of the long string input record is used to implement
value change monitors for VAL. If VAL is not equal to OVAL, then monitors are
triggered. LEN contains the length of the string in VAL, OLEN contains the
length of the string in OVAL.
=fields OVAL, LEN, OLEN
The following fields are used to operate the string input in the simulation
mode. See L<Simulation Mode> for more information on simulation mode fields.
=fields SIOL, SIML, SIMM, SIMS
=cut
field(SIML,DBF_INLINK) {
prompt("Sim Mode link")
promptgroup("90 - Simulate")
@@ -110,3 +236,37 @@ recordtype(lso) {
interest(1)
}
}
=head2 Device Support Interface
The record requires device support to provide an entry table (dset) which
defines the following members:
typedef struct {
long number;
long (*report)(int level);
long (*init)(int after);
long (*init_record)(lsoRecord *prec);
long (*get_ioint_info)(int cmd, lsoRecord *prec, IOSCANPVT *piosl);
long (*write_string)(lsoRecord *prec);
} lsodset;
The module must set C<number> to at least 5, and provide a pointer to its
C<write_string()> routine; the other function pointers may be C<NULL> if their
associated functionality is not required for this support layer.
Most device supports also provide an C<init_record()> routine to configure the
record instance and connect it to the hardware or driver support layer.
=head2 Device Support for Soft Records
Device support for DTYP C<Soft Channel> is provided for writing values to other
records or other software components.
Device support for DTYP C<stdio> is provided for writing values to the stdout,
stderr, or errlog streams. C<INST_IO> addressing C<@stdout>, C<@stderr> or
C<@errlog> is used on the OUT link field to select the desired stream.
=cut

View File

@@ -2,10 +2,174 @@
# Copyright (c) 2012 UChicago Argonne LLC, as Operator of Argonne
# National Laboratory.
# EPICS BASE is distributed subject to a Software License Agreement found
# in file LICENSE that is included with this distribution.
# in file LICENSE that is included with this distribution.
#*************************************************************************
=title Printf Record (printf)
The printf record is used to generate and write a string using a format
specification and parameters, analogous to the C C<printf()> function.
=head2 Parameter Fields
The record-specific fields are described below, grouped by functionality.
=recordtype printf
=cut
recordtype(printf) {
=head3 Scan Parameters
The printf record has the standard fields for specifying under what
circumstances it will be processed. These fields are listed in L<Scan Fields>.
In addition, L<Scanning Specification> explains how these fields are used.
=head3 String Generation Parameters
The printf record must specify the desired output string with embedded format
specifiers in the FMT field. Plain characters are copied directly to the output
string. A pair of percent characters 'C<%%>' are converted into a single percent
character in the output string. A single precent character 'C<%>' introduces a
format specifier and is followed by zero or more of the standard C<printf()>
format flags and modifiers:
=over 4
=item *
Plus ('C<+>')
=item *
Minus ('C<->')
=item *
Space ('C< >')
=item *
Hash ('C<#>')
=item *
Minimum Field Width (decimal digits or 'C<*>')
=item *
Precision ('C<.>' followed by decimal digits or 'C<*>')
=item *
Length Modifier 'C<hh>' E<ndash> Reads link as DBR_CHAR or DBR_UCHAR
=item *
Length Modifier 'C<h>' E<ndash> Reads link as DBR_SHORT or DBR_USHORT for
integer conversions, DBR_FLOAT for floating-point conversions.
=item *
Length Modifier 'C<l>' E<ndash> Reads link as DBR_LONG or DBR_ULONG for integer
conversions, array of DBR_CHAR for string conversion.
=back
The following character specifies the conversion to perform, see your operating
system's C<printf()> documentation for more details. These conversions
ultimately call the C<snprintf()> routine for the actual string conversion
process, so are subject to the behaviour of that routine.
=over 4
=item *
'C<c>' E<ndash> Convert to a character. Only single byte characters are
permitted.
=item *
'C<d>' or 'C<i>' E<ndash> Convert to a decimal integer.
=item *
'C<o>' E<ndash> Convert to an unsigned octal integer.
=item *
'C<u>' E<ndash> Convert to an unsigned decimal integer.
=item *
'C<x>' E<ndash> Convert to an unsigned hexadecimal integer, using C<abcdef>.
=item *
'C<X>' E<ndash> Convert to an unsigned hexadecimal integer, using C<ABCDEF>.
=item *
'C<e>' or 'C<E>' E<ndash> Convert to floating-point in exponent style, reading
the link as DBR_DOUBLE or DBR_FLOAT.
=item *
'C<f>' or 'C<F>' E<ndash> Convert to floating-point in fixed-point style,
reading the link as DBR_DOUBLE or DBR_FLOAT.
=item *
'C<g>' or 'C<G>' E<ndash> Convert to floating-point in general style, reading
the link as DBR_DOUBLE or DBR_FLOAT.
=item *
'C<s>' E<ndash> Insert string, reading the link as DBR_STRING or array of
DBR_CHAR.
=back
The fields INP0 ... INP9 are input links that provide the parameter values to be
formatted into the output. The format specifiers in the FMT string determine
which type of the data is requested through the appropriate input link. As with
C<printf()> a C<*> character may be used in the format to specify width and/or
precision instead of numeric literals, in which case additional input links are
used to provide the necessary integer parameter or parameters. See L<Address
Specification> for information on specifying links.
The formatted string is written to the VAL field. The maximum number of
characters in VAL is given by SIZV, and cannot be larger than 65535. The LEN
field contains the length of the formatted string in the VAL field.
=fields FMT, INP0, INP1, INP2, INP3, INP4, INP5, INP6, INP7, INP8, INP9, VAL, SIZV, LEN
=head3 Output Specification
The output link specified in the OUT field specifies where the printf record is
to write the contents of its VAL field. The link can be a database or channel
access link. If the OUT field is a constant, no output will be written.
See L<Address Specification> for information on specifying links.
In addition, the appropriate device support module must be entered into the DTYP
field.
=fields OUT, DTYP
=head3 Operator Display Parameters
See L<Fields Common to All Record Types> for more on the record name (NAME) and
description (DESC) fields.
=fields NAME, DESC
=cut
include "dbCommon.dbd"
%#include "devSup.h"
%
@@ -25,6 +189,9 @@ recordtype(printf) {
pp(TRUE)
special(SPC_DBADDR)
extra("char *val")
#=type STRING[SIZV]
#=read Yes
#=write Yes
}
field(SIZV,DBF_USHORT) {
prompt("Size of VAL buffer")
@@ -48,6 +215,21 @@ recordtype(printf) {
pp(TRUE)
size(81)
}
=head3 Alarm Parameters
The printf record has the alarm parameters common to all record types.
L<Alarm Fields> lists other fields related to a alarms that are common to all
record types.
The IVLS field specifies a string which is sent to the OUT link if if input
link data are invalid.
=fields IVLS
=cut
field(IVLS,DBF_STRING) {
prompt("Invalid Link String")
promptgroup("30 - Action")
@@ -107,3 +289,35 @@ recordtype(printf) {
%/* Number of INPx fields defined */
%#define PRINTF_NLINKS 10
}
=head2 Device Support Interface
The record requires device support to provide an entry table (dset) which
defines the following members:
typedef struct {
long number;
long (*report)(int level);
long (*init)(int after);
long (*init_record)(printfRecord *prec);
long (*get_ioint_info)(int cmd, printfRecord *prec, IOSCANPVT *piosl);
long (*write_string)(printfRecord *prec);
} printfdset;
The module must set C<number> to at least 5, and provide a pointer to its
C<write_string()> routine; the other function pointers may be C<NULL> if their
associated functionality is not required for this support layer.
Most device supports also provide an C<init_record()> routine to configure the
record instance and connect it to the hardware or driver support layer.
=head2 Device Support for Soft Records
A soft device support module Soft Channel is provided for writing values to
other records or other software components.
Device support for DTYP C<stdio> is provided for writing values to the stdout,
stderr, or errlog streams. C<INST_IO> addressing C<@stdout>, C<@stderr> or
C<@errlog> is used on the OUT link field to select the desired stream.
=cut