cdev-1.7.2n

This commit is contained in:
2022-12-13 12:44:04 +01:00
commit b3b88fc333
1357 changed files with 338883 additions and 0 deletions
Executable
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 948 B

BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+283
View File
@@ -0,0 +1,283 @@
# fm2html tags file
# The tags file defines the correspondence between FrameMaker tags and the
# tags used by fm2html. This file can be edited so that your FrameMaker
# files will be translated "correctly". Each line in the file is made up
# of a pair of tag names. The first specifies the FrameMaker tag and the
# second specifies the internal tag that it corresponds to. Each FrameMaker
# tag may only be bound to one internal tag, but it can be bound to an
# internal tag already bound to another FrameMaker tag. The '#' character
# denotes a comment; the rest of the line is considered a comment. The tag
# names must be written in the correct case (lower/upper/mixed).
HEADING0 HEADING0 # These are translated to HTML headings <H1>
HEADING1 HEADING1 # to <H6> (HEADING0 becomes <H1>, HEADING1
HEADING2 HEADING2 # becomes <H2>, etc.). Links to them are
HEADING3 HEADING3 # placed in the automatically generated table
HEADING4 HEADING4 # of contents. The FrameMaker paragraph
HEADING5 HEADING5 # numbering is used. You probably don't want
HEADING6 HEADING6 # to use HEADING0, as TITLE and LOCALTITLE are
# translated to <H1>. HEADING6 is translated
# to <H6> as there is no <H7> in basic HMTL.
UHEADING0 UHEADING0 # These are translated to HTML headings <H1>
UHEADING1 UHEADING1 # to <H6>; however, they are omitted from the
UHEADING2 UHEADING2 # automatically generated table of contents.
UHEADING3 UHEADING3 # The FrameMaker paragraph numbering is used.
UHEADING4 UHEADING4 # The comments above regarding HEADING0 and
UHEADING5 UHEADING5 # HEADING6 also apply to UHEADING0 and
UHEADING6 UHEADING6 # UHEADING6.
INDENTHEADING0 INDENTHEADING0 # These are the same as UHEADING, but are
INDENTHEADING1 INDENTHEADING1 # indented one level using the HTML <UL> tag.
INDENTHEADING2 INDENTHEADING2 # The comments above regarding HEADING0 and
INDENTHEADING3 INDENTHEADING3 # HEADING6 also apply to INDENTHEADING0
INDENTHEADING4 INDENTHEADING4 # and INDENTHEADING6.
INDENTHEADING5 INDENTHEADING5
INDENTHEADING6 INDENTHEADING6
BODY BODY # Normal text.
GLOSSARY1 GLOSSARY1 # FrameMaker lists of the type:
GLOSSARY2 GLOSSARY2 # short<TAB>long text
GLOSSARY3 GLOSSARY3 # short<TAB>long text
COMGLOSSARY1 COMGLOSSARY1 # short<TAB>long text
COMGLOSSARY2 COMGLOSSARY2 # etc.
COMGLOSSARY3 COMGLOSSARY3 # Translated to :
# <DL>
# <DT>short<DD>long text
# <DT>short<DD>long text
# <DT>short<DD>long text
# etc.
# </DL>
# If the paragraph type is COMGLOSSARY then
# <DL> becomes <DL COMPACT>. This means that
# the viewer will try to fit the short text
# and the long text in one line. Otherwise
# the short text will be on a separate line
# with the long text below shifted to the
# right. This should give a reasonable result
# given that the short text is up to 4
# characters long. Otherwise the long text is
# displayed on a separate line (viewer-
# dependent).
#
# GLOSSARY2, GLOSSARY3, COMGLOSSARY2 and
# COMGLOSSARY3 are indented.
PROGRAM PROGRAM # Program code is considered to be
# preformatted (<PRE> in HTML).
REFERENCE REFERENCE # Assumed to be FrameMaker lines of the type:
COMREFERENCE COMREFERENCE # [1] Reference 1
# [2] Reference 2
# [3] Reference 3
# etc.
# where the [?] is the paragraph numbering.
# Becomes:
# <DL>
# <DT>[1]<DD>Reference 1
# <DT>[2]<DD>Reference 2
# <DT>[3]<DD>Reference 3
# etc.
# </DL>
# If the paragraph type is COMREFERENCE then
# <DL> becomes <DL COMPACT>. This means that
# the viewer will try to fit the paragraph
# numbering and and the reference text in one
# line. Otherwise the paragraph numbering
# will be on a separate line with the
# reference text below shifted to the right.
TITLE TITLE # The title of the document. It is always
# moved to the head of the file (or indexfile),
# before the automatically generated index.
# Translates as HTML <H1>.
LOCALTITLE LOCALTITLE # The title of the current chapter or file.
# Printed wherever it is. Translates as HTML
# <H1>.
TOC TOC # Paragraphs with this tag are removed. All
# paragraphs with paragraph tags with "TOC",
# "IX", "LOT", "LOF", "AIX", "AML", "APL",
# "IOM", "LOM", "LOP" or "SIX" in them are
# also removed. They are assumed to be
# generated by FrameMaker.
ADDRESS ADDRESS # Corresponds to the <ADDRESS> tag in HTML.
AUTHOR AUTHOR # The author of the document. This is moved
# to the head of the file (or indexfile),
# after the title and before the automatically
# generated index). Uses <ADDRESS> HTML tag.
ABSTRACT ABSTRACT # The abstract is emphasized (<EM> tag in
# HTML).
ACRONYM ACRONYM # This is handled the same as COMGLOSSARY.
LISTINDENT1 LISTINDENT1 # Non-consecutive lists with full indent
LISTINDENT2 LISTINDENT2 # (HTML: <DL><DD>item)
LISTINDENT3 LISTINDENT3
LISTINDENT4 LISTINDENT4
LISTINDENT5 LISTINDENT5
LISTINDENT6 LISTINDENT6
LISTBULLET1 LISTBULLET1 # Non-consecutive lists with bullet as mark
LISTBULLET2 LISTBULLET2 # (HTML: <UL><LI>item)
LISTBULLET3 LISTBULLET3
LISTBULLET4 LISTBULLET4
LISTBULLET5 LISTBULLET5
LISTBULLET6 LISTBULLET6
LISTMARK1 LISTMARK1 # Lists using MIF PgfNumString as mark
LISTMARK2 LISTMARK2 # (HTML: <DL><DT>mark<DD>item)
LISTMARK3 LISTMARK3
LISTMARK4 LISTMARK4
LISTMARK5 LISTMARK5
LISTMARK6 LISTMARK6
LISTNUMBER1 LISTNUMBER1 # Numbered consecutive lists
LISTNUMBER2 LISTNUMBER2 # (HTML: <OL><LI>item)
LISTNUMBER3 LISTNUMBER3
LISTNUMBER4 LISTNUMBER4
LISTNUMBER5 LISTNUMBER5
LISTNUMBER6 LISTNUMBER6
LISTCONTINUE1 LISTCONTINUE1 # Additional paragraphs in any type of list
LISTCONTINUE2 LISTCONTINUE2
LISTCONTINUE3 LISTCONTINUE3
LISTCONTINUE4 LISTCONTINUE4
LISTCONTINUE5 LISTCONTINUE5
LISTCONTINUE6 LISTCONTINUE6
FIGURE FIGURE # Figure text is indented
TABLE TABLE # Table text is indented
CELLHEADING CELLHEADING # Table heading becomes bold
CELLBODY CELLBODY # Table cells become normal text
FOOTNOTE BODY # Footnotes are treated as normal text
HTML1 HTML <P><B>;</B> # User defined tags. First specify start
HTML2 HTML <P><B><I>;</I></B> # tag(s) then ; and then optional end tag(s).
# Add your own tag mappings below
Numbered LISTNUMBER1
Indented LISTINDENT1
FUNC_NAME BODY
FUNC_PROTO BODY
FUNC_DEF BODY
FUNC_DEF2 BODY
Bulleted LISTBULLET1
OMT_METHOD BODY
FIGURE_CONT BODY
FUNCTION_DEF BODY
Centered INDENTHEADING2
Heading1 HEADING2
Numbered1 LISTNUMBER1
IndentedBold INDENTHEADING1
HeadingRunIn INDENTHEADING1
Abstract ABSTRACT
Acronym ACRONYM
Address BODY
Bibliography BODY
Blank Page Msg BODY
Body BODY
Change TABLE
Credit COMGLOSSARY1
Doc (Applicable) COMREFERENCE
Doc (Reference) COMREFERENCE
Equation BODY
Equation (Appendix) BODY
Example BODY
Figure Title FIGURE
Figure TitleLOF BODY
Figure Title (Appendix) FIGURE
Footer BODY
Footnote BODY
Guideline BODY
Header BODY
Heading 1 HEADING1
Heading 1TOC UHEADING1
Heading 1 (Appendix) HEADING1
Heading 1 (Appendix)TOC UHEADING1
Heading 2 HEADING2
Heading 2TOC UHEADING2
Heading 2 (Appendix) HEADING2
Heading 2 (Appendix)TOC UHEADING2
Heading 3 HEADING3
Heading 3TOC UHEADING3
Heading 3 (Appendix) HEADING3
Heading 3 (Appendix)TOC UHEADING3
Heading 4 HEADING4
Heading 4TOC UHEADING4
Heading 4 (Appendix) HEADING4
Heading 4 (Appendix)TOC UHEADING4
Heading 5 HEADING5
Heading 5TOC UHEADING5
Heading 5 (Appendix) HEADING5
Heading 5 (Appendix)TOC UHEADING5
Heading 6 HEADING6
Heading 6TOC UHEADING6
Heading 6 (Appendix) HEADING6
Heading 6 (Appendix)TOC UHEADING6
List Initialize BODY
List Bullet 1 LISTBULLET1
List Bullet 2 LISTBULLET2
List Bullet 3 LISTBULLET3
List Bullet 4 LISTBULLET4
List Bullet 5 LISTBULLET5
List Bullet 6 LISTBULLET6
List Char 1 LISTNUMBER1
List Char 2 LISTNUMBER2
List Char 3 LISTNUMBER3
List Char 4 LISTNUMBER4
List Char 5 LISTNUMBER5
List Char 6 LISTNUMBER6
List Num 1 LISTNUMBER1
List Num 2 LISTNUMBER2
List Num 3 LISTNUMBER3
List Num 4 LISTNUMBER4
List Num 5 LISTNUMBER5
List Num 6 LISTNUMBER6
List Cont 1 LISTCONTINUE1
List Cont 2 LISTCONTINUE2
List Cont 3 LISTCONTINUE3
List Cont 4 LISTCONTINUE4
List Cont 5 LISTCONTINUE5
List Cont 6 LISTCONTINUE6
List Hang 1 LISTMARK1
List Hang 2 LISTMARK2
List Hang 3 LISTMARK3
List Hang 4 LISTMARK4
List Hang 5 LISTMARK5
List Hang 6 LISTMARK6
Message BODY
Page Number BODY
Paragraph BODY
Preformatted PROGRAM
Requirement BODY
Subheading UHEADING4
Table Cell (Center) CELLBODY
Table Cell (Decimal) CELLBODY
Table Cell (Left) CELLBODY
Table Cell (Right) CELLBODY
Table Cell Bullet 1 CELLBODY
Table Cell Bullet 2 CELLBODY
Table Cell Char 1 CELLBODY
Table Cell Char 2 CELLBODY
Table Cell Cont 1 CELLBODY
Table Cell Cont 2 CELLBODY
Table Cell Num 1 CELLBODY
Table Cell Num 2 CELLBODY
Table Heading (Center) CELLHEADING
Table Heading (Left) CELLHEADING
Table Heading (Right) CELLHEADING
Table Title BODY
Table TitleLOT BODY
Table Title (Appendix) BODY
Title LOCALTITLE
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+4
View File
@@ -0,0 +1,4 @@
Open releaseNotes1_7.doc
SaveAs ma releaseNotes1_7.doc html/releaseNotes1_7.mif
Open releaseNotes1_7TITLE.doc
SaveAs ma releaseNotes1_7TITLE.doc html/releaseNotes1_7TITLE.mif
+555
View File
@@ -0,0 +1,555 @@
<! This document generated using mif2html Version 1.0 - Walt Akers - 1996 !>
<head>
<title>CDEV Documentation</title>
</head>
<body bgcolor="#E0E0FF">
<body>
<! *************************** TABLE OF CONTENTS ****************************!>
<! **************************** LIST OF FIGURES *****************************!>
<! ************************ FILE : ./TestPlan_1.5.mif *****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start BODY TEXT ***!><font size=+2 color=Black>
<strong>NOTE:</strong> Information addressing the appropriate content of each of the following sections can be found
in Section 2.0 of the Test Plan Instructions.
<!*** Finish BODY TEXT ***!></p></font>
</td></tr>
</table>
<br><hr><br>
<table width=100%>
<tr><td valign=top>
<!*** Start .Title: ***!><font size=+3 color=Black><strong>
Test Plan Title:
<!*** Finish .Title: ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start .Title: ***!><font size=+3 color=Black><strong>
CDEV 1.5 Release Test
<!*** Finish .Title: ***!></p></strong></font>
</td></tr>
</table>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start .Author: ***!><font size=+2 color=Black>
Author(s):
Walt Akers
<!*** Finish .Author: ***!></p></font>
<!*** Start .Date Submitted: ***!><font size=+2 color=Black>
Date Submitted:
Dec 10, 1996
<!*** Finish .Date Submitted: ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start .Revision Number: ***!><font size=+2 color=Black>
Revision Number:
<!*** Finish .Revision Number: ***!></p></font>
</td>
<td valign=top>
<!*** Start .Revision Number: ***!><font size=+2 color=Black>
Rev. 1, Dec 10, 1996
<!*** Finish .Revision Number: ***!></p></font>
</td></tr>
</table>
<!*** Start /Section Heads (w/ bar) ***!><font size=+3 color=PANTONE 185 CVC><strong>
Brief Purpose of Test</strong><font size=+2 color=Black><strong><font size=+3 color=PANTONE 185 CVC>
<!*** Finish /Section Heads (w/ bar) ***!></p></strong></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start BODY TEXT ***!><font size=+2 color=Black>
This test will ensure the proper operation of the Control Device Interface (CDEV)
Version 1.5.
<!*** Finish BODY TEXT ***!></p></font>
</td></tr>
</table>
<!*** Start /Section Heads (w/ bar) ***!><font size=+3 color=PANTONE 185 CVC><strong>
Anticipated Benefits
<!*** Finish /Section Heads (w/ bar) ***!></p></strong></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start BODY TEXT ***!><font size=+2 color=Black>
The new version of CDEV will introduce Collection Devices into the API and will
correct several deficiencies that were identified in earlier versions of the class
library.
<!*** Finish BODY TEXT ***!></p></font>
</td></tr>
</table>
<!*** Start /Section Heads (w/ bar) ***!><font size=+3 color=PANTONE 185 CVC><strong>
Beam Conditions Required
<!*** Finish /Section Heads (w/ bar) ***!></p></strong></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start BODY TEXT ***!><font size=+2 color=Black>
Complete all of the following tables, entering a value or an <strong>X</strong> in the appropriate spaces:
<table border=1>
<tr>
<td valign=top>
<!*** Start ***!>
Beam Type/Current (enter value)
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
</tr>
<tr>
<td valign=top>
<!*** Start ***!>
Beam Type/Current (enter value)
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
</tr>
<tr>
<td valign=top>
<!*** Start ***!>
Beam Type
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
Beam Current
<!*** Finish ***!><br></font>
</td>
</tr>
<tr>
<td valign=top>
<!*** Start ***!>
Beam Off
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
</tr>
</table>
<table border=1>
<tr>
<td valign=top>
<!*** Start ***!>
Beam Energy (select one)
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
</tr>
<tr>
<td valign=top>
<!*** Start ***!>
Beam Energy (select one)
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
</tr>
</table>
<table border=1>
<tr>
<td valign=top>
<!*** Start ***!>
Beam Termination Point (select one)
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
</tr>
<tr>
<td valign=top>
<!*** Start ***!>
Beam Termination Point (select one)
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
</tr>
</table>
<table border=1>
<tr>
<td valign=top>
<!*** Start ***!>
Type of Test (select one)
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
</tr>
<tr>
<td valign=top>
<!*** Start ***!>
Type of Test (select one)
<!*** Finish ***!><br></font>
</td>
<td valign=top>
<!*** Start ***!>
<!*** Finish ***!><br></font>
</td>
</tr>
</table>
<!*** Finish BODY TEXT ***!></p></font>
</td></tr>
</table>
<!*** Start /Section Heads (w/ bar) ***!><font size=+3 color=PANTONE 185 CVC><strong>
Time Required
<!*** Finish /Section Heads (w/ bar) ***!></p></strong></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start BODY TEXT ***!><font size=+2 color=Black>
30 Minutes
<!*** Finish BODY TEXT ***!></p></font>
</td></tr>
</table>
<!*** Start /Section Heads (w/ bar) ***!><font size=+3 color=PANTONE 185 CVC><strong>
Preferred Time of Test
<!*** Finish /Section Heads (w/ bar) ***!></p></strong></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start BODY TEXT ***!><font size=+2 color=Black>
Daylight
<!*** Finish BODY TEXT ***!></p></font>
</td></tr>
</table>
<!*** Start /Section Heads (w/ bar) ***!><font size=+3 color=PANTONE 185 CVC><strong>
Staff Required to Execute the Test <font size=+1>(including contact info)<font size=+3>
<!*** Finish /Section Heads (w/ bar) ***!></p></strong></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start BODY TEXT ***!><font size=+2 color=Black>
Walt Akers - ext. 7669
<!*** Finish BODY TEXT ***!></p></font>
</td></tr>
</table>
<!*** Start /Section Heads (w/ bar) ***!><font size=+3 color=PANTONE 185 CVC><strong>
Controlled Access Requirements
<!*** Finish /Section Heads (w/ bar) ***!></p></strong></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start BODY TEXT ***!><font size=+2 color=Black>
None
<!*** Finish BODY TEXT ***!></p></font>
</td></tr>
</table>
<!*** Start /Section Heads (w/ bar) ***!><font size=+3 color=PANTONE 185 CVC><strong>
Hardware and/or Software Changes Required
<!*** Finish /Section Heads (w/ bar) ***!></p></strong></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start BODY TEXT ***!><font size=+2 color=Black>
<strong>NOTE:</strong> If software changes are part of the test plan, include the name of the application, the old
revision level, the new revision level, and if applicable, whether or not it is possible to roll back to the
old revision level (are there hardware limitations, etc.).
</p>
No existing software will be modified. A new version of CDEV will be added.
<!*** Finish BODY TEXT ***!></p></font>
</td></tr>
</table>
<!*** Start /Section Heads (w/ bar) ***!><font size=+3 color=PANTONE 185 CVC><strong>
Setup Procedure
<!*** Finish /Section Heads (w/ bar) ***!></p></strong></font>
<table>
<tr><td valign=top>
<!*** Start PROCEDURE STEPS ***!><font size=+2 color=Black>
1.
<!*** Finish PROCEDURE STEPS ***!></p></font>
</td>
<td valign=top>
<!*** Start PROCEDURE STEPS ***!><font size=+2 color=Black>
Install and compile the CDEV libraries in /usr/csite2/cdev/1.5
<!*** Finish PROCEDURE STEPS ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start PROCEDURE STEPS ***!><font size=+2 color=Black>
2.
<!*** Finish PROCEDURE STEPS ***!></p></font>
</td>
<td valign=top>
<!*** Start PROCEDURE STEPS ***!><font size=+2 color=Black>
Unarchive and compile ACE Version 4.0.32
<!*** Finish PROCEDURE STEPS ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start PROCEDURE STEPS ***!><font size=+2 color=Black>
3.
<!*** Finish PROCEDURE STEPS ***!></p></font>
</td>
<td valign=top>
<!*** Start PROCEDURE STEPS ***!><font size=+2 color=Black>
Compile and link the CDEV Generic Server Engine
<!*** Finish PROCEDURE STEPS ***!></p></font>
</td></tr>
</table>
<!*** Start /Section Heads (w/ bar) ***!><font size=+3 color=PANTONE 185 CVC><strong>
Test Procedure
<!*** Finish /Section Heads (w/ bar) ***!></p></strong></font>
<table>
<tr><td valign=top>
<!*** Start PROCEDURE STEPS ***!><font size=+2 color=Black>
1.
<!*** Finish PROCEDURE STEPS ***!></p></font>
</td>
<td valign=top>
<!*** Start PROCEDURE STEPS ***!><font size=+2 color=Black>
Execute /usr/csite2/cdev/1.5/test/cdevDataTest Application to ensure that the
data components of the library are functioning properly.
<!*** Finish PROCEDURE STEPS ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start PROCEDURE STEPS ***!><font size=+2 color=Black>
2.
<!*** Finish PROCEDURE STEPS ***!></p></font>
</td>
<td valign=top>
<!*** Start PROCEDURE STEPS ***!><font size=+2 color=Black>
Execute /usr/csite2/cdev/1.5/test/collectionTest Application to ensure that
CDEV collection devices are functioning properly (this requires the local
test.ddl to be the CDEVDDL file.)
<!*** Finish PROCEDURE STEPS ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start PROCEDURE STEPS ***!><font size=+2 color=Black>
3.
<!*** Finish PROCEDURE STEPS ***!></p></font>
</td>
<td valign=top>
<!*** Start PROCEDURE STEPS ***!><font size=+2 color=Black>
Execute /usr/csite2/cdev/1.5/extensions/cdevGenericServer/bin/hpux-09.XX/
NameServer, TestServer and TestProgram to ensure that the CDEV Generic
Server Engine and communications portions of CDEV are functioning cor
rectly.
<!*** Finish PROCEDURE STEPS ***!></p></font>
</td></tr>
</table>
<!*** Start /Section Heads (w/ bar) ***!><font size=+3 color=PANTONE 185 CVC><strong>
Backout Procedure
<!*** Finish /Section Heads (w/ bar) ***!></p></strong></font>
<table>
<tr><td valign=top>
<!*** Start PROCEDURE STEPS ***!><font size=+2 color=Black>
1.
<!*** Finish PROCEDURE STEPS ***!></p></font>
</td>
<td valign=top>
<!*** Start PROCEDURE STEPS ***!><font size=+2 color=Black>
Because the version of CDEV that is in use is a selectable value, the installation
and operation of Version 1.5 of CDEV is of no impact unless it is specifically
chosen. Therefore, no backout procedures are specified.
<!*** Finish PROCEDURE STEPS ***!></p></font>
</td></tr>
</table>
<!*** Start /Section Heads (w/ bar) ***!><font size=+3 color=PANTONE 185 CVC><strong>
Test Results
<!*** Finish /Section Heads (w/ bar) ***!></p></strong></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start BODY TEXT ***!><font size=+2 color=Black>
The test was conducted for two version of the operating system, therefore, the
results will be presented separately:
</p>
HPUX 09.XX:
</p>
<strong>cdevDataTest Program:</strong> Pass on all 18 Sub-Tests
</p>
<strong>cdevDataEqualTest Program:</strong> Pass
</p>
<strong>cdevDataTagMapTest Program:</strong> Pass
</p>
<strong>collectionTest Program:</strong> Pass on 1000 Iterations
</p>
</p>
<strong>NameServer Program:</strong> Executed correctly
</p>
<strong>TestServer Program:</strong> Executed correctly for 100,000 packets.
</p>
<strong>TestProgram Program:</strong> Executed correclty for 100,000 packets.
</p>
</p>
HPUX 10.XX:
</p>
The following corrections had to be made to the system in order to get the
10.XX machines to function properly.
</p>
</p>
Directory <em>/cs/lib</em> had to be linked to <em>/cs/op/lib.</em>
</p>
Directory <em>/usr/csite/cdev</em> had to be linked to directory <em>/usr/csite2/cdev</em>.
</p>
File <em>/cs/lib/epics3.12/hpux-10.xx/libca.sl </em>had to be made executable.
</p>
</p>
<strong>cdevDataTest Program:</strong> Pass on all 18 Sub-Tests
</p>
<strong>cdevDataEqualTest Program:</strong> Pass
</p>
<strong>cdevDataTagMapTest Program:</strong> Pass
</p>
<strong>collectionTest Program:</strong> Pass on 1000 Iterations
</p>
</p>
<strong>NameServer Program:</strong> Executed correctly
</p>
<strong>TestServer Program:</strong> Executed correctly for 215,000 packets.
</p>
<strong>TestProgram Program:</strong> Executed correclty for 215,000 packets.
</p>
<!*** Finish BODY TEXT ***!></p></font>
</td></tr>
</table>
</td></tr>
</table>
</body>
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 948 B

+556
View File
@@ -0,0 +1,556 @@
<! This document generated using mif2html Version 1.0 - Walt Akers - 1996 !>
<head>
<title>CDEV Documentation</title>
</head>
<body bgcolor="#E0E0FF">
<body>
<! ************************ FILE : cdevAdminGuideTITLE.mif *****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start ADDRESS ***!><font size=+12 color=Black><strong><em>
CDEV Administrator's
Guide
<!*** Finish ADDRESS ***!></p></strong></em></font>
<!*** Start ADDRESS-VERSION ***!><font size=+2 color=Black>
Chip Watson, Jie Chen, Danjin Wu, Walt Akers
</p>
</p>
Version 1.5 December 9, 1996
</p>
</p>
TJNAF - Thomas Jefferson National Accelerator Facility
<!*** Finish ADDRESS-VERSION ***!></p></font>
</td></tr>
</table>
<! *************************** TABLE OF CONTENTS ****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top align=center>
<!*** Start CLASS-TOC-TITLE ***!><font size=+3><strong>
Table of Contents
<!*** Finish CLASS-TOC-TITLE ***!></p></strong></font>
</td></tr>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<table>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
1.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevAdminGuide.html#TOCREF1">Directory Structure of the CDEV Distribution</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevAdminGuide.html#TOCREF2">Directory Structure</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
2.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevAdminGuide.html#TOCREF3">Installing and Building the CDEV Libraries</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevAdminGuide.html#TOCREF4">How to Start</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevAdminGuide.html#TOCREF5">Configuring Static Services</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevAdminGuide.html#TOCREF6">Setting the Local Environment</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevAdminGuide.html#TOCREF7">Compiling the Distribution</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
</table>
</td></tr>
</table>
<! **************************** LIST OF FIGURES *****************************!>
<! ************************ FILE : ./cdevAdminGuide.mif *****************************!>
<br><hr><br>
<table width=100%>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
1.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF1">
Directory Structure of the CDEV Distribution
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF2">
Directory
Structure
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
./src
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
The CDEV source parent directory, it contains makefiles and
subdirectories with the source code necessary to create the
CDEV libraries.
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
./src/ca
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
Souce code providing CDEV service support for channel
access and EPICS.
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
./src/cdevIO
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
Souce code for the cdevData object and its components.
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
./src/common
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
Source code for CDEV components that are used by class
internals.
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
./src/callback
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
Source code for the cdevCallback object used with callback
operations and monitors.
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
./src/device
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
Source code for the cdevDevice and cdevRequestObject
objects and their associated component classes.
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
./src/directory
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
Source code for the cdevDirectory anc cdevSvcFinder classes.
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
./src/group
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
Source code for the cdevGroup and cdevTranObj classes.
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
./src/lib
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
Directory for library Makefile and temporary object files.
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
./src/namesvc
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
Source code for tools used to parse the CDEV DDL file.
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
./src/system
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
Source code for the cdevSystem and cdevService classes and
their associated components.
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
./src/utility
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
Source code for a CDEV utility application.
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
./include
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
Header files for CDEV applications, this directory will be
populated during the first execution of make
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
./lib
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
The CDEV library parent directory, will be populated wth
subdirectories for each target architecture.
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
./bin
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
The CDEV binary parent directory, will be populated wth
subdirectories for each target architecture.
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
./doc
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
Contains most up to date versions of the CDEV documentation.
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
./example
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
Sample applications and services that use CDEV.
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
./extensions
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
Software extensions and services for CDEV that are being
developed by individual developers. These services add value
to CDEV, however, they are not required by the system.
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
2.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF3">
Installing and Building the CDEV Libraries
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF4">
How to Start
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The following steps should be taken in order to obtain and install CDEV at your site.
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start Numbered ***!><font size=+1 color=Black>
1.
<!*** Finish Numbered ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered ***!><font size=+1 color=Black>
<strong>Obtain a copy of the CDEV distribution. </strong>A complete copy of the CDEV
distribution may be obtained by anonymous ftp at <strong>ftp.cebaf.gov</strong> in the directory
<strong>pub/cdev</strong>.
<!*** Finish Numbered ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start Numbered ***!><font size=+1 color=Black>
2.
<!*** Finish Numbered ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered ***!><font size=+1 color=Black>
<strong>Unarchive and install the distribution.</strong> The CDEV distribution is provided in a
compressed and archived format. The archive may be decompressed using the
GNU <em>gzip</em> program. The archive may then be extracted using the UNIX <em>tar</em>
command.
<!*** Finish Numbered ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF5">
Configuring Static
Services
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start Numbered ***!><font size=+1 color=Black>
3.
<!*** Finish Numbered ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered ***!><font size=+1 color=Black>
<strong>Configure static services (archive libraries).</strong> If you will be using the archive
library version of CDEV, you must tell CDEV the names of the services it will be
expected to use. This must be done before any other installation procedures.
<!*** Finish Numbered ***!></p></font>
<!*** Start Indented ***!><font size=+1 color=Black>
The CDEV system provides a way to configure services so that applications can
access them by name. For example, if you have the channel access service (ca)
and a locally developed service (xyz), you can configure CDEV to use these
services with the following command.
<!*** Finish Indented ***!></p></font>
</td></tr>
</table>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black>
configSvc services=ca xyz headers=/usr/local/epics/include \\
/usr/local/cdev/src/ca /usr/local/cdev/src/xyz
<!*** Finish PROGRAM ***!></font></pre>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start Indented ***!><font size=+1 color=Black>
</p>
In the above examples, <em>services</em> are the names of the CDEV services that should
be supported, and <em>headers</em> are the directories that should be searched for the
associated header files for these services. The <em>configSvc</em> script will generate a
Makefile and cdevSvcConfig.cc in the<em> ./src/directory</em> directory.
<!*** Finish Indented ***!></p></font>
<!*** Start BODY ***!><font size=+1 color=Black>
<!*** Finish BODY ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF6">
Setting the Local
Environment
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start Numbered ***!><font size=+1 color=Black>
4.
<!*** Finish Numbered ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered ***!><font size=+1 color=Black>
<strong>Set CDEV required make variables.</strong> The following environmental variables must
be defined prior to making the CDEV libraries.
<!*** Finish Numbered ***!></p></font>
<!*** Start Indented ***!><font size=+1 color=Black>
CDEV: This is the root directory of the CDEV distribution.
</p>
</p>
CDEVDDL: This is the location of the CDEV Device Definition
Language file.
</p>
</p>
CDEVSHOBJ: This is the directory where the CDEV shared
libraries and shared objects will be stored.
</p>
</p>
CDEVINCLUDE: This is the directory whewre the CDEV header files
are located.
</p>
</p>
<strong>SHOBJ</strong>:<strong> </strong>This variable indicates that a sharable object library
should be compiled. In order to generate a
sharable library, <em>SHOBJ=&quot;YES&quot; </em>should be
specified. This variable is undefined by default.
<!*** Finish Indented ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF7">
Compiling the
Distribution
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start Numbered ***!><font size=+1 color=Black>
5.
<!*** Finish Numbered ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered ***!><font size=+1 color=Black>
Change directories to the CDEV distribution ./src directory. This is where the
Makefile and Makefile.common will be located.
<!*** Finish Numbered ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start Numbered ***!><font size=+1 color=Black>
6.
<!*** Finish Numbered ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered ***!><font size=+1 color=Black>
If you have compiled the CDEV distribution for another TARGET in the past, you
should execute a 'make clean' to remove any outdated object files.
<!*** Finish Numbered ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start Numbered ***!><font size=+1 color=Black>
7.
<!*** Finish Numbered ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered ***!><font size=+1 color=Black>
If you want to change default time-out value and connection retry frequency in
channel access or EPICS, you should change DEFAULT_TIMEOUT and
DEFAULT_CONN_FREQUENCY values in the caRequestObject.h.
<!*** Finish Numbered ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start Numbered ***!><font size=+1 color=Black>
8.
<!*** Finish Numbered ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered ***!><font size=+1 color=Black>
To begin compilation type the command 'make all' or 'make'. This will compile all
libraries and utility applications and place them in the appropriate TARGET
directories.
<!*** Finish Numbered ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start Numbered ***!><font size=+1 color=Black>
9.
<!*** Finish Numbered ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered ***!><font size=+1 color=Black>
To remove objects after making archive libraries, type 'make cleanObjs'. This is
useful to make the archive libraries and then make the shared libraries.
<!*** Finish Numbered ***!></p></font>
</td></tr>
</table>
</td></tr>
</table>
</body>
+699
View File
@@ -0,0 +1,699 @@
<! This document generated using mif2html Version 1.0 - Walt Akers - 1996 !>
<head>
<title>CDEV Documentation</title>
</head>
<body bgcolor="#E0E0FF">
<body>
<! ************************ FILE : cdevCbindingTITLE.mif *****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start ADDRESS ***!><font size=+12 color=Black><strong><em>
CDEV C Binding Guide
<!*** Finish ADDRESS ***!></p></strong></em></font>
<!*** Start ADDRESS-VERSION ***!><font size=+2 color=Black>
</p>
Chip Watson, Jie Chen, Danjin Wu, Walt Akers
</p>
</p>
Version 1.4 October 24, 1996
</p>
</p>
TJNAF - Thomas Jefferson National Accelerator Facility
</p>
<!*** Finish ADDRESS-VERSION ***!></p></font>
</td></tr>
</table>
<! *************************** TABLE OF CONTENTS ****************************!>
<! **************************** LIST OF FIGURES *****************************!>
<! ************************ FILE : ./cdevCbinding.mif *****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top align=center>
<!*** Start Title ***!><font size=+5 color=Black><strong>
cdev C Binding
<!*** Finish Title ***!></p></strong></font>
<!*** Start Centered ***!><font size=+2 color=Black>
Updated:
</p>
<!*** Finish Centered ***!></p></font>
</td></tr>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start Body ***!><font size=+2 color=Black>
This working document describes a C binding to the cdev control system interface (see the cdev
Design Document, and the cdev User's Guide).
<!*** Finish Body ***!></p></font>
<!*** Start Heading1 ***!><font size=+3 color=Black><strong>
Design Choices:
<!*** Finish Heading1 ***!></p></strong></font>
<table>
<tr><td valign=top>
<!*** Start Numbered1 ***!><font size=+2 color=Black>
1.
<!*** Finish Numbered1 ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered1 ***!><font size=+2 color=Black>
All C routine names begin with &quot;cdev&quot; (common device).
<!*** Finish Numbered1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start Numbered ***!><font size=+2 color=Black>
2.
<!*** Finish Numbered ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered ***!><font size=+2 color=Black>
Most C routines return completion status; 0==success (allows enumerated errors). A few
return integer values (prefixed in this document with &quot;int&quot;).
<!*** Finish Numbered ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start Numbered ***!><font size=+2 color=Black>
3.
<!*** Finish Numbered ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered ***!><font size=+2 color=Black>
All data passed through the interface will be in the form of integers, strings or a self describing
structure. Library calls will be provided to manipulate this structure.
<!*** Finish Numbered ***!></p></font>
</td></tr>
</table>
<!*** Start Heading1 ***!><font size=+3 color=Black><strong>
Comparison with C++ binding:
<!*** Finish Heading1 ***!></p></strong></font>
<table>
<tr><td valign=top>
<!*** Start Numbered1 ***!><font size=+2 color=Black>
1.
<!*** Finish Numbered1 ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered1 ***!><font size=+2 color=Black>
cdevData, cdevRequestObject, and cdevGroup objects will be accessed through object id's.
<!*** Finish Numbered1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start Numbered ***!><font size=+2 color=Black>
2.
<!*** Finish Numbered ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered ***!><font size=+2 color=Black>
cdevDevice will only be referenced by device name.
<!*** Finish Numbered ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start Numbered ***!><font size=+2 color=Black>
3.
<!*** Finish Numbered ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered ***!><font size=+2 color=Black>
Only a single, default, cdevSystem will be supported.
<!*** Finish Numbered ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start Numbered ***!><font size=+2 color=Black>
4.
<!*** Finish Numbered ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered ***!><font size=+2 color=Black>
Since no function overloading is available, I/O operations on a cdevData object will have to
pass a datatype argument, similar to EPICS channel access.
<!*** Finish Numbered ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start Numbered ***!><font size=+2 color=Black>
5.
<!*** Finish Numbered ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered ***!><font size=+2 color=Black>
Routines which return strings will malloc the string, and the caller must free it.
<!*** Finish Numbered ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start Numbered ***!><font size=+2 color=Black>
6.
<!*** Finish Numbered ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered ***!><font size=+2 color=Black>
Function names are generally constructed from the class name followed by the method name,
e.g. cdevGroupStart.
<!*** Finish Numbered ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start Numbered ***!><font size=+2 color=Black>
7.
<!*** Finish Numbered ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered ***!><font size=+2 color=Black>
Creating objects will be done by routines like cdevGroupAllocate, which will essentially
return a pointer to the created object.
<!*** Finish Numbered ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start Numbered ***!><font size=+2 color=Black>
8.
<!*** Finish Numbered ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered ***!><font size=+2 color=Black>
cdevSystem methods will drop &quot;System&quot; from the name, and the notion of &quot;system&quot; will be
invisible.
<!*** Finish Numbered ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start Numbered ***!><font size=+2 color=Black>
9.
<!*** Finish Numbered ***!></p></font>
</td>
<td valign=top>
<!*** Start Numbered ***!><font size=+2 color=Black>
cdevDevice methods will drop &quot;Device&quot;. cdevRequestObject methods will use the shorter
&quot;cdevRequest&quot;.
<!*** Finish Numbered ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top align=center>
<!*** Start Title ***!><font size=+5 color=Black><strong>
C Binding User's Guide
<!*** Finish Title ***!></p></strong></font>
</td></tr>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start Heading1 ***!><font size=+3 color=Black><strong>
Simple message passing routines:
<!*** Finish Heading1 ***!></p></strong></font>
<!*** Start Body ***!><font size=+2 color=Black>
Devices are addressed by name, and operations are performed by sending a message string and an
additional optional data object identifier. This data object is self describing in the sense that it con
tains indicators of the data type (int, float, etc.) and size (array lengths). Data returned from the
control system will also be through a data object.
<!*** Finish Body ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start IndentedBold ***!><font size=+2 color=Black><strong>
status = cdevSend (char* devName, char* message,
</p>
cdev_data_t out, cdev_data_t in);
<!*** Finish IndentedBold ***!></p></strong></font>
</td></tr>
</table>
<!*** Start Body ***!><font size=+2 color=Black>
The data objects act as small databases able to hold multiple tagged data items. Items are inserted
into or extracted from the database via access routines. These access routines are also responsible
for any necessary data type conversions. Tags are passed to the cdevData routines as integers, and
are looked up in the tag database by specifying an ascii tag name. The most common tags are
&quot;value&quot;, &quot;timeStamp&quot;, &quot;status&quot;, and &quot;severity&quot;.
</p>
Data object manipulation routines:
<!*** Finish Body ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start IndentedBold ***!><font size=+2 color=Black><strong>
cdevDataAllocate (cdev_data_t* id);
</p>
cdevDataFree (cdev_data_t id);
</p>
cdevDataTagC2I (char* tag, int *tagid);
</p>
cdevDataTagI2C (int tagid, char** tag); /* caller must free string */
</p>
cdevDataInsertTag (int tag, char* ctag);
</p>
cdevDataInsert (cdev_data_t id, int tagid, int type, void * data);
</p>
int cdevDataInsertArray(cdev_data_t id, int tagid, int type, void *data, size_t len, size_t
ndim);
</p>
cdevDataGet (cdev_data_t id, int tagid, int type, void * data);
</p>
cdevDataFind (cdev_data_t id, int tagid, void ** data);
</p>
int cdevDataGetType (cdev_data_t id, int tagid);
</p>
int cdevDataGetDim (cdev_data_t id, int tagid);
</p>
int cdevDataGetElems (cdev_data_t id, int tagid);
</p>
cdevDataGetBounds (cdev_data_t id, int tagid, int *bounds, int bsize);
</p>
cdevDataSetBounds (cdev_data_t id, int tagid, int *bounds, int bsize);
</p>
void cdevDataRemoveAll(cdev_data_t id);
</p>
cdevDataRemove (cdev_data_t id, int tagid);
</p>
cdevDataChangeTag (cdev_data_t id, int tagid, int newtagid);
</p>
cdevDataAsciiDump (cdev_data_t id, FILE *fp);
</p>
void cdevDataCopy(cdev_data_t from, cdev_data_t *to);
<!*** Finish IndentedBold ***!></p></strong></font>
</td></tr>
</table>
<!*** Start Body ***!><font size=+2 color=Black>
For example, to read the current from a magnet named NLQ1:
<!*** Finish Body ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start Indented ***!><font size=+2 color=Black>
cdev_data_t result;
</p>
float current;
</p>
int status, valtag;
</p>
status = cdevDataAllocate (&amp;result);
</p>
status = cdevDataTagC2I (&quot;value&quot;,&amp;valtag);
</p>
status = cdevSend(&quot;NLQ1&quot;,&quot;read current&quot;,NULL,result);
</p>
status = cdevDataGet(result, valtag, CDEV_FLOAT, current);
<!*** Finish Indented ***!></p></font>
</td></tr>
</table>
<!*** Start Body ***!><font size=+2 color=Black>
The first call to a device automatically connects to the requested service, initializing any underly
ing packages as needed. These routines are synchronous (operation completes before return);
asynchronous routines are discussed below.
</p>
The message (second) argument selects what operation and attribute to access. Many messages
are by convention of the form &quot;verb attribute&quot;, and typical verbs include get, set, monitorOn, and
monitorOff.
<!*** Finish Body ***!></p></font>
<!*** Start Heading1 ***!><font size=+3 color=Black><strong>
Binding a device and message
<!*** Finish Heading1 ***!></p></strong></font>
<!*** Start Body ***!><font size=+2 color=Black>
In order to avoid the overhead of parsing the device name and message on each call, it is possible
to get a handle which binds the device and message into a request.
<!*** Finish Body ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start IndentedBold ***!><font size=+2 color=Black><strong>
status = cdevRequestAllocate(char* device, char*message, CDEVREQUESTID* reqid);
<!*** Finish IndentedBold ***!></p></strong></font>
</td></tr>
</table>
<!*** Start Body ***!><font size=+2 color=Black>
Operations may be performed on this request object without specifying device and message.
<!*** Finish Body ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start IndentedBold ***!><font size=+2 color=Black><strong>
status = cdevRequestSend(reqid, out, result);
<!*** Finish IndentedBold ***!></p></strong></font>
</td></tr>
</table>
<!*** Start Body ***!><font size=+2 color=Black>
Request objects maintain a connection to a server, and the state of this connection may be
obtained:
<!*** Finish Body ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start IndentedBold ***!><font size=+2 color=Black><strong>
state = cdevRequestState (reqid);
<!*** Finish IndentedBold ***!></p></strong></font>
</td></tr>
</table>
<!*** Start Body ***!><font size=+2 color=Black>
The current access rights (read, write, none) for this request object may be obtained:
<!*** Finish Body ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start IndentedBold ***!><font size=+2 color=Black><strong>
access = cdevRequestAccess (reqid);
<!*** Finish IndentedBold ***!></p></strong></font>
</td></tr>
</table>
<!*** Start Body ***!><font size=+2 color=Black>
Given the request object, it is also possible to extract the device name and message:
<!*** Finish Body ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start IndentedBold ***!><font size=+2 color=Black><strong>
cdevRequestDevice (reqid, char** name); /* caller must free string */
</p>
cdevRequestMessage (reqid, char** msg);
<!*** Finish IndentedBold ***!></p></strong></font>
</td></tr>
</table>
<!*** Start Heading1 ***!><font size=+3 color=Black><strong>
Monitoring and Asynchronous I/O
<!*** Finish Heading1 ***!></p></strong></font>
<!*** Start Body ***!><font size=+2 color=Black>
A message sent to a device may result in an asynchronous reply, or more than one reply. In addi
tion, abnormal conditions may occur in the device which are of interest to the application. Each of
these results in a message back to the client which is asynchronous with respect to program exe
cution. Several calls are provided to deal with asynchronous data.
<!*** Finish Body ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start HeadingRunIn ***!><font size=+2 color=Black><strong>
Asynchronous Messages
<!*** Finish HeadingRunIn ***!></p></strong></font>
</td>
<td>
<! ***** Empty Column ***** !>
</td></tr>
</table>
<!*** Start Body ***!><font size=+2 color=Black>
An asynchronous version of the message send call will send the mes
sage, but not wait for the reply. Two async forms are supported: one returning data to a caller's
data object, and the other returning data to a callback function. The reply argument is replaced by
an additional structure which specified a user callback function.
<!*** Finish Body ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start IndentedBold ***!><font size=+2 color=Black><strong>
status = cdevSendNoBlock(char* device, char* message,
</p>
cdev_data_t out, cdev_data_t result);
</p>
status = cdevSendCallback(char* device, char* message,
</p>
cdev_data_t out, CDEVCALLBACK* callback);
<!*** Finish IndentedBold ***!></p></strong></font>
</td></tr>
</table>
<!*** Start Body ***!><font size=+2 color=Black>
Similarly for request objects:
<!*** Finish Body ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start IndentedBold ***!><font size=+2 color=Black><strong>
status = cdevRequestSendNoBlock(cdev_data_t out, cdev_data_t result);
</p>
status = cdevRequestSendCallback(cdev_data_t out, CDEVCALLBACK* callback);
<!*** Finish IndentedBold ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start HeadingRunIn ***!><font size=+2 color=Black><strong>
Monitoring:
<!*** Finish HeadingRunIn ***!></p></strong></font>
</td>
<td>
<! ***** Empty Column ***** !>
</td></tr>
</table>
<!*** Start Body ***!><font size=+2 color=Black>
Monitoring is started and stopped by two using the message &quot;monitorOn xxx&quot; and
&quot;monitorOff xxx&quot;.
<!*** Finish Body ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start Indented ***!><font size=+2 color=Black>
status = cdevSendCallback(&quot;deviceName&quot;, &quot;monitorOn attributeName&quot;,NULL, callback);
<!*** Finish Indented ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start HeadingRunIn ***!><font size=+2 color=Black><strong>
Synchronization
<!*** Finish HeadingRunIn ***!></p></strong></font>
</td>
<td>
<! ***** Empty Column ***** !>
</td></tr>
</table>
<!*** Start Body ***!><font size=+2 color=Black>
In order to synchronize with asynchronous messages, both a poll and a pend
call are available, as well as an explicit flush. A pend with 0.0 seconds waits forever.
<!*** Finish Body ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start IndentedBold ***!><font size=+2 color=Black><strong>
cdevFlush ();
</p>
cdevPoll ();
</p>
cdevPend (float seconds);
<!*** Finish IndentedBold ***!></p></strong></font>
</td></tr>
</table>
<!*** Start Body ***!><font size=+2 color=Black>
If seconds==0.0, wait forever.
<!*** Finish Body ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start HeadingRunIn ***!><font size=+2 color=Black><strong>
Grouping
<!*** Finish HeadingRunIn ***!></p></strong></font>
</td>
<td>
<! ***** Empty Column ***** !>
</td></tr>
</table>
<!*** Start Body ***!><font size=+2 color=Black>
Grouping of operations will be similar to that specified for EZCA, with slight varia
tions. The grouping calls are useful for synchronizing with a set of asynchronous calls.
<!*** Finish Body ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start IndentedBold ***!><font size=+2 color=Black><strong>
cdevGroupAllocate(GROUPID* groupid);
</p>
cdevGroupStart(groupid);
</p>
cdevGroupEnd(groupid);
</p>
cdevGroupPoll(groupid);
</p>
cdevGroupPend(groupid);
</p>
cdevGroupAllFinished (groupid);
</p>
cdevGroupStatus (groupid, int *status, int *nstatus); /* initially nstatus = len of status */
<!*** Finish IndentedBold ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start HeadingRunIn ***!><font size=+2 color=Black><strong>
File Descriptors
<!*** Finish HeadingRunIn ***!></p></strong></font>
</td>
<td>
<! ***** Empty Column ***** !>
</td></tr>
</table>
<!*** Start Body ***!><font size=+2 color=Black>
To integrate other asynchronous systems, such as X windows, it is often neces
sary to obtain file descriptors for select operations.
<!*** Finish Body ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start IndentedBold ***!><font size=+2 color=Black><strong>
status = cdevGetFD(int fd[], int * numFD);
<!*** Finish IndentedBold ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start HeadingRunIn ***!><font size=+2 color=Black><strong>
Context
<!*** Finish HeadingRunIn ***!></p></strong></font>
</td>
<td>
<! ***** Empty Column ***** !>
</td></tr>
</table>
<!*** Start Body ***!><font size=+2 color=Black>
Operations on a device take place within a context. The context is maintained by the
device as a cdev_data_t structure. The following routines are used to get and set the context; set
ting items within the context is done by the cdevData* routines.
<!*** Finish Body ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start IndentedBold ***!><font size=+2 color=Black><strong>
cdevGetContext(char *devname, cdev_data_t *id);
</p>
cdevSetContext(char *devname, cdev_data_t id);
<!*** Finish IndentedBold ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start HeadingRunIn ***!><font size=+2 color=Black><strong>
Private Data
<!*** Finish HeadingRunIn ***!></p></strong></font>
</td>
<td>
<! ***** Empty Column ***** !>
</td></tr>
</table>
<!*** Start Body ***!><font size=+2 color=Black>
Each device also maintains a private data pointer, to be used by the application
developer for any purpose desired.
<!*** Finish Body ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start IndentedBold ***!><font size=+2 color=Black><strong>
cdevGetPrivate (char *devname, void **data);
</p>
cdevSetPrivate (char *devname, void *data);
<!*** Finish IndentedBold ***!></p></strong></font>
</td></tr>
</table>
<!*** Start Body ***!><font size=+2 color=Black>
These same four routines are available for request objects:
<!*** Finish Body ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start IndentedBold ***!><font size=+2 color=Black><strong>
cdevRequestGetContext (reqid, cdev_data_t *id);
</p>
cdevRequestSetContext (reqid, cdev_data_t id);
</p>
cdevRequestGetPrivate (reqid, void **data);
</p>
cdevRequestSetPrivate (reqid, void *data);
<!*** Finish IndentedBold ***!></p></strong></font>
</td></tr>
</table>
<!*** Start Heading1 ***!><font size=+3 color=Black><strong>
Error Reporting and Handling
<!*** Finish Heading1 ***!></p></strong></font>
<!*** Start Body ***!><font size=+2 color=Black>
This group of routines is also modeled after EZCA (assume identical functionality).
</p>
Turn automatic error reporting on and off:
<!*** Finish Body ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start IndentedBold ***!><font size=+2 color=Black><strong>
cdevAutoErrorOn ();
</p>
cdevAutoErrorOff ();
<!*** Finish IndentedBold ***!></p></strong></font>
</td></tr>
</table>
<!*** Start Body ***!><font size=+2 color=Black>
Set the severity threshold at which errors should be reported:
<!*** Finish Body ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start IndentedBold ***!><font size=+2 color=Black><strong>
cdevSetThreshold (int new);
</p>
cdevReportError (int severity, char *name,
</p>
CDEVREQUESTID request, char* format, ...);
</p>
cdevGetErrorString ();
</p>
cdevSetErrorHandler (function);
<!*** Finish IndentedBold ***!></p></strong></font>
</td></tr>
</table>
<!*** Start Body ***!><font size=+2 color=Black>
Note: For simplicity of use, a very compact set of error codes is implemented in cdev. The follow
ing error codes are defined in the header file cdevErrCode.h.
</p>
CDEV_SUCCESS = 0 Success
</p>
CDEV_INVALIDOBJ = 1 Invalid cdev object used
</p>
CDEV_INVALIDARG = 2 Invalid argument passed to cdev method
</p>
CDEV_INVALIDSVC = 3 Wrong service during dynamic loading
</p>
CDEV_NOTCONNECTED = 4 Not connected to low-level network service
</p>
CDEV_IOFAILED = 5 Low-level network service IO failed
</p>
CDEV_CONFLICT = 6 Conflicting of data types or data tags
</p>
CDEV_NOTFOUND = 7 Cdev cannot find specified data or tag
</p>
CDEV_TIMEOUT = 8 Time out
</p>
CDEV_CONVERT = 9 cdevData conversion error
<!*** Finish Body ***!></p></font>
<!*** Start Heading1 ***!><font size=+3 color=Black><strong>
Name Services
<!*** Finish Heading1 ***!></p></strong></font>
<!*** Start Body ***!><font size=+2 color=Black>
There is a special device named cdevDirectory which provides a set of query capabilities:
<!*** Finish Body ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start Indented ***!><font size=+2 color=Black>
status = cdevSend(&quot;cdevDirectory&quot;, &quot;query&quot;,
</p>
cdev_data_t selection, cdev_data_t result);
<!*** Finish Indented ***!></p></font>
</td></tr>
</table>
<!*** Start Body ***!><font size=+2 color=Black>
The selection data object specifies one or more tags used to select device names. The result con
tains a list of devices accessed through the &quot;value&quot; tag.
</p>
<!*** Finish Body ***!></p></font>
</td></tr>
</table>
</body>
+4336
View File
File diff suppressed because it is too large Load Diff
+864
View File
@@ -0,0 +1,864 @@
<! This document generated using mif2html Version 1.0 - Walt Akers - 1996 !>
<head>
<title>CDEV Documentation</title>
</head>
<body bgcolor="#E0E0FF">
<body>
<! ************************ FILE : cdevGatewayTITLE.mif *****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start ADDRESS-TITLE ***!><font size=+12 color=Black><strong><em>
CDEV Gateway
<!*** Finish ADDRESS-TITLE ***!></p></strong></em></font>
<!*** Start ADDRESS-VERSION ***!><font size=+1 color=Black>
</p>
A Message Router/Concentrator for CDEV Clients
</p>
</p>
Walt Akers, Chip Watson, Jie Chen
</p>
</p>
Version 1.0 - February 13, 1997
</p>
</p>
TJNAF - Thomas Jefferson National Accelerator Facility
</p>
<!*** Finish ADDRESS-VERSION ***!></p></font>
</td></tr>
</table>
<! *************************** TABLE OF CONTENTS ****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top align=center>
<!*** Start CLASS-TOC-TITLE ***!><font size=+3><strong>
Table of Contents
<!*** Finish CLASS-TOC-TITLE ***!></p></strong></font>
</td></tr>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<table>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
1.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevGateway.html#TOCREF1">CDEV Gateway Fundamentals</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevGateway.html#TOCREF2">Overview of the CDEV Gateway</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevGateway.html#TOCREF3">Purpose of the CDEV Gateway</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevGateway.html#TOCREF4">Features of the CDEV Gateway Service</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
2.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevGateway.html#TOCREF5">Building the CDEV Gateway Service</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevGateway.html#TOCREF6">Location of Files</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevGateway.html#TOCREF7">Steps to Building the Server and Service</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
3.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevGateway.html#TOCREF8">Starting the CDEV Gateway</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevGateway.html#TOCREF9">Starting the Gateway Server</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevGateway.html#TOCREF10">Start-up Arguments for the Gateway Server</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
4.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevGateway.html#TOCREF11">Troubleshooting Server Start-up</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
5.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevGateway.html#TOCREF12">DDL Entries for the CDEV Gateway Client</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevGateway.html#TOCREF13">Setting Up the DDL </a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
</table>
</td></tr>
</table>
<! **************************** LIST OF FIGURES *****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top align=center>
<!*** Start CLASS-LOF-TITLE ***!><font size=+3><strong>
List of Figures
<!*** Finish CLASS-LOF-TITLE ***!></p></strong></font>
</td></tr>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 1:
<a href="cdevGateway.html#LOFREF1">Simple DDL file for the Gateway Service</a>
<!*** Finish FIGURELOF ***!><br></font>
</td></tr>
</table>
<! ************************ FILE : ./cdevGateway.mif *****************************!>
<br><hr><br>
<table width=100%>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
1.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF1">
CDEV Gateway Fundamentals
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF2">
Overview of the
CDEV Gateway
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The CDEV Gateway is a server that acts as an intermediary between a CDEV
application and remote services. A single network connection is established between
the client and the gateway through which all CDEV requests will be routed. When the
gateway receives a request from the client, it establishes the appropriate connection
to the actual service, makes the request, and returns the result to the client
application.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF3">
Purpose of the
CDEV Gateway
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The CDEV Gateway was designed to support the JAVA/CDEV API. Because JAVA
code must be small in order to load and execute efficiently, it was critical to move as
much code as possible out of JAVA and into a CDEV &quot;proxy&quot; which could perform
connection management and dynamic library loading. This allows the JAVA
application to access new services provided in C++ without adding any new code.
</p>
The JAVA/CDEV library locates the CDEV Gateway by using a hostname and port that
is provided in an environment variable. After determining the location of the server,
JAVA will establish a connection to the gateway and then begin transmitting its CDEV
requests in standard CLIP (CDEV Linear Internet Protocol).
</p>
The gateway can also be used by standard C or C++ CDEV applications to perform
message routing. This approach can lessen the number of connections to actual
control system devices and reduce network traffic significantly. The gateway is located
by the gateway service by looking up its name (as specified in the CDEV DDL) in the
global name server (The current name server is distributed as part of the CDEV
Generic Server in the CDEV distribution).
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF4">
Features of the
CDEV Gateway
Service
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish BULLETED ***!></p></font>
</td>
<td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
The CDEV Gateway is constructed using the CDEV Generic Server Engine and
the CLIP Protocol.
<!*** Finish BULLETED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish BULLETED ***!></p></font>
</td>
<td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
Each gateway server registers its name, host and port with the CDEV Name
Server when it is started.
<!*** Finish BULLETED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish BULLETED ***!></p></font>
</td>
<td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
The name of the specific gateway to be used is associated with a CDEV device/
message combination by using the &quot;server&quot; field of the service data in the CDEV
DDL file. Syntax is described later in this document.
<!*** Finish BULLETED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish BULLETED ***!></p></font>
</td>
<td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
The gateway service will establish one connection to a named gateway to perform
all transactions.
<!*** Finish BULLETED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish BULLETED ***!></p></font>
</td>
<td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
The client application uses a special DDL file that redirects all signals to the
gateway service. This allows the gateway server to maintain the actual control
system connections from a centralized location.
<!*** Finish BULLETED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish BULLETED ***!></p></font>
</td>
<td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
The gateway server may have a standard DDL that redirects requests to the
actual service OR it may have a special DDL that routes requests to another
gateway. The system has currently been tested by routing messages through as
many as ten gateways before reaching the actual control system. Note that
performance begins to degrade substantially after routing through five gateways -
but is still reasonable.
<!*** Finish BULLETED ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
2.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF5">
Building the CDEV Gateway Service
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF6">
Location of Files
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The source code for the Gateway Service is provided with the CDEV distribution
starting with version 1.5. The source code is located in the directory $CDEV/
applications/cdevGateway. The following steps should be taken to build the Gateway
Server and Service.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF7">
Steps to Building
the Server and
Service
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
1.
<!*** Finish NUMBERED ***!></p></font>
</td>
<td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
Obtain and install the CDEV distribution - Version 1.5 or higher.
<!*** Finish NUMBERED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
2.
<!*** Finish NUMBERED ***!></p></font>
</td>
<td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
Follow the installation steps to build CDEV on your system. This includes setting
all of the environment variables required by CDEV.
<!*** Finish NUMBERED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
3.
<!*** Finish NUMBERED ***!></p></font>
</td>
<td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
Follow the installation steps to build the CDEV Generic Server and deploy the
CDEV Name Server.
<!*** Finish NUMBERED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
4.
<!*** Finish NUMBERED ***!></p></font>
</td>
<td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
There is a collection of platform specific makefiles in the directory <em>$CDEV/
extensions/cdevGenericServer/include/makeinclude</em>. Link the makefile that is
appropriate to your architecture to the file Makefile.OS in THAT directory.
<!*** Finish NUMBERED ***!></p></font>
<!*** Start INDENTED ***!><font size=+1 color=Black>
For example, to link to the makefile for HP-UX, you would type the following
command.
</p>
</p>
<em>cd $CDEV/extensions/cdevGenericServer/makeinclude</em>
</p>
<em>ln -s Makefile.hpux Makefile.OS</em>
</p>
<!*** Finish INDENTED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
5.
<!*** Finish NUMBERED ***!></p></font>
</td>
<td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
Change directories to <em>$CDEV/applications/cdevGateway</em>.
<!*** Finish NUMBERED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
6.
<!*** Finish NUMBERED ***!></p></font>
</td>
<td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
Type make to compile and link the CDEV Gateway Service shared object and the
CDEV Gateway Server. Note that you must be using GNU make in order to build
this distribution.
<!*** Finish NUMBERED ***!></p></font>
</td></tr>
</table>
<!*** Start BODY ***!><font size=+1 color=Black>
Upon completion the Makefile will generate the shared object for the gateway service
and will install it into your CDEVSHOBJ directory. The gateway server will be
compiled, linked and installed in the directory $CDEV/applications/cdevGateway/bin/
ARCH/cdevGateway. At this point you are ready to start the gateway server.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
3.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF8">
Starting the CDEV Gateway
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF9">
Starting the
Gateway Server
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The following steps should be taken to execute the cdevGateway.
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start NUMBERED1 ***!><font size=+1 color=Black>
1.
<!*** Finish NUMBERED1 ***!></p></font>
</td>
<td valign=top>
<!*** Start NUMBERED1 ***!><font size=+1 color=Black>
Ensure that the required CDEV and CDEV Generic Server environment variables
have been set. These include:
<!*** Finish NUMBERED1 ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEVDDL
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
This is the name of the DDL file that indicates where
messages should be routed. Typically, this DDL will
route the messages to the actual control system
devices.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEVSHOBJ
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
This is the location of the CDEV shared object files.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
CDEV_NAME_SERVER
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
This is the host where the CDEV Name Server is
running.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
2.
<!*** Finish NUMBERED ***!></p></font>
</td>
<td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
Move to the directory where the CDEV Gateway Server binary is located: by
default $CDEV/applications/cdevGateway/bin/ARCH, where ARCH is the name of
the host architecture.
<!*** Finish NUMBERED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
3.
<!*** Finish NUMBERED ***!></p></font>
</td>
<td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
Type the command ./cdevGateway at the command line. This will start a gateway
server with the name <strong><em>Gateway1</strong></em><em> </em>on the current host using TCP/IP port 9573. This
information can be confirmed by using the <strong><em>dumpServer</strong></em> command that is
provided with the CDEV Generic Server Engine to display the contents of the
CDEV Name Server.
<!*** Finish NUMBERED ***!></p></font>
</td></tr>
</table>
<!*** Start BODY ***!><font size=+1 color=Black>
At this point the cdevGateway should be ready for use by client applications.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF10">
Start-up
Arguments for the
Gateway Server
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The user can specify the name of port used by the CDEV Gateway from the command
line when the server is started. The gateway server will accept the following
parameters from start-up.
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
s=<em>server name</em>
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
This allows the caller to specify the server name that
will be registered with the name server. By default
the server name is <strong><em>Gateway1</strong></em>.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_2 ***!><font size=+1 color=Black><strong>
p=<em>port number</em>
<!*** Finish FUNC_NAME_2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF_2 ***!><font size=+1 color=Black>
This allows the caller to specify the port that the
server will use to receive incoming requests. By
default the port used by the server is <strong><em>9573</strong></em>.
<!*** Finish FUNC_DEF_2 ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
4.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF11">
Troubleshooting Server Start-up
</a> <!*** Finish HEADING1 ***!></p></strong></font>
<!*** Start BODY ***!><font size=+1 color=Black>
When the server is started it may display one or more error conditions that will prevent
it from operating properly.
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
Error:
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
syntax error at line:#
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
Meaning:
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This message indicates that the CDEVDDL file that is being
used by the gateway is formatted improperly.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
Solution:
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Edit the CDEVDDL file and correct any formatting errors that
may exist.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
Error:
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
ERROR: Gateway1 server already exists in GATEWAY domain
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
Meaning:
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This message indicates that a gateway server with the name
Gateway1 has already been started and is currently registered
with the CDEV Name Server.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
Solution:
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
The gateway will continue to attempt to register itself with the
name server every 30 seconds. If the message continues to
appear, then restart the gateway using the s parameter to
specify a different server name OR shutdown the other
gateway that is using the same name.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
Error:
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
Could not communicate with name server
</p>
ERROR: Failed to execute &quot;REGISTER SERVER&quot; operation
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
Meaning:
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This message indicates that the CDEV Name Server could not
be accessed either because it is not running or because the
CDEV_NAME_SERVER environment variable does not specify
the correct host.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
Solution:
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Ensure that the CDEV_NAME_SERVER environment variable
is set and indicates the host where the name server is running.
If this is correct, check to ensure that the name server is
actually running on the specified host.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
Error:
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_PROTO ***!><font size=+1 color=Black><em>
Error: Server Gateway1 - Unable to open listening socket
<!*** Finish FUNC_PROTO ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
Meaning:
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This message indicates that the port that the name server is
attempting to use to listen for new connections is already in
use.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME ***!><font size=+1 color=Black><strong>
Solution:
<!*** Finish FUNC_NAME ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
Use the command line arguments to specify a different listening
port.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
<!*** Start BODY ***!><font size=+1 color=Black>
</p>
</p>
</p>
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
5.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF12">
DDL Entries for the CDEV Gateway Client
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF13">
Setting Up the
DDL
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The following example illustrates how to add a service entry to identify the CDEV
Gateway Service and how to use the service data to specify the server that the
gateway service will use for routing messages.
</p>
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 1:
<a name="LOFREF1">
Simple DDL file for the Gateway Service
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong><em>
/*
* This is the service definition, it tells CDEV that there is
* a service named Gateway and that it will use the cdevData
* tag 'server' to locate the gateway using the CDEV Name Server.
*/
service Gateway
{
tags {server}
}
/*
* This class definition identifies the class gatewayClass which
* supports the &quot;get&quot;,&quot;set&quot;, &quot;monitorOn&quot; and &quot;monitorOff&quot;
* commands on attributes &quot;attrib0&quot; and &quot;attrib1&quot;. Note that
* requests made to attrib0 will be routed through &quot;Gateway1&quot;
* and requests made to attrib1 will be routed through
* &quot;Gateway2&quot;.
*/
class gatewayClass
{
verbs {get, set, monitorOn, monitorOff}
attributes
{
attrib0 Gateway {server=Gateway1};
attrib1 Gateway {server=Gateway2};
}
}
/*
* Finally, the CDEV DDL identifies two devices that are of type
* gatewayClass. Any time one of the supported messages is passed
* to one of these devices it will be routed through a CDEV
* Gateway.
*/
gatewayClass : device0, device1;
<!*** Finish PROGRAM ***!></strong></em></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 1>
</a> <!*** Finish FIGURE ***!></p></em></font>
<!*** Start BODY ***!><font size=+1 color=Black>
<!*** Finish BODY ***!></p></font>
</td></tr>
</table>
</body>
+1968
View File
File diff suppressed because it is too large Load Diff
+8150
View File
File diff suppressed because it is too large Load Diff
+949
View File
@@ -0,0 +1,949 @@
<! This document generated using mif2html Version 1.0 - Walt Akers - 1996 !>
<head>
<title>CDEV Documentation</title>
</head>
<body bgcolor="#E0E0FF">
<body>
<! ************************ FILE : cdevScriptServiceTITLE.mif *****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start ADDRESS-TITLE ***!><font size=+12 color=Black><strong><em>
CDEV Script Service
<!*** Finish ADDRESS-TITLE ***!></p></strong></em></font>
<!*** Start ADDRESS-VERSION ***!><font size=+1 color=Black>
</p>
A Tool for Using Interactive Scripts from CDEV
</p>
</p>
Walt Akers
</p>
</p>
Version 1.0 - February 11, 1997
</p>
</p>
TJNAF - Thomas Jefferson National Accelerator Facility
</p>
<!*** Finish ADDRESS-VERSION ***!></p></font>
</td></tr>
</table>
<! *************************** TABLE OF CONTENTS ****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top align=center>
<!*** Start CLASS-TOC-TITLE ***!><font size=+3><strong>
Table of Contents
<!*** Finish CLASS-TOC-TITLE ***!></p></strong></font>
</td></tr>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<table>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
1.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevScriptService.html#TOCREF1">Script Service Fundamentals</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevScriptService.html#TOCREF2">Overview of the Script Service</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevScriptService.html#TOCREF3">Features of the Script Service</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
2.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevScriptService.html#TOCREF4">Building the Script Service</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevScriptService.html#TOCREF5">Location of Files</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevScriptService.html#TOCREF6">Steps to Building Service</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
3.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevScriptService.html#TOCREF7">Structure of Data Provided to the Script</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevScriptService.html#TOCREF8">General Form of Data String</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevScriptService.html#TOCREF9">Representation of Scalar Data</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevScriptService.html#TOCREF10">Representation of Array Data</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
4.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevScriptService.html#TOCREF11">Structure of Data Returned from the Script</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevScriptService.html#TOCREF12">Returning Data to the Calling CDEV Application</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevScriptService.html#TOCREF13">General Form of String Data </a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevScriptService.html#TOCREF14">Returning a Single Result Packet </a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevScriptService.html#TOCREF15">Returning Multiple Result Packets </a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevScriptService.html#TOCREF16">Special Considerations</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
5.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevScriptService.html#TOCREF17">DDL Entries for the Script Service</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevScriptService.html#TOCREF18">Setting Up the DDL </a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
</table>
</td></tr>
</table>
<! **************************** LIST OF FIGURES *****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top align=center>
<!*** Start CLASS-LOF-TITLE ***!><font size=+3><strong>
List of Figures
<!*** Finish CLASS-LOF-TITLE ***!></p></strong></font>
</td></tr>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 1:
<a href="cdevScriptService.html#LOFREF1">General form of string representation of cdevData</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 2:
<a href="cdevScriptService.html#LOFREF2">String representation of scalar data in a cdevData object</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 3:
<a href="cdevScriptService.html#LOFREF3">String representation of array data</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 4:
<a href="cdevScriptService.html#LOFREF4">Returning a single result packet to the CDEV application</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 5:
<a href="cdevScriptService.html#LOFREF5">Returning a multiple result packets to the CDEV application</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 6:
<a href="cdevScriptService.html#LOFREF6">Simple DDL file for the Script Service</a>
<!*** Finish FIGURELOF ***!><br></font>
</td></tr>
</table>
<! ************************ FILE : ./cdevScriptService.mif *****************************!>
<br><hr><br>
<table width=100%>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
1.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF1">
Script Service Fundamentals
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF2">
Overview of the
Script Service
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The CDEV Script Service is designed to allow a a CDEV application to execute an
external script to process a message. The output that is produced by the executable
will be returned to the caller in the form of a cdevData. The CDEV Script Service
meets the following requirements.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF3">
Features of the
Script Service
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish BULLETED ***!></p></font>
</td>
<td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
The filename of the script is associated with a CDEV device/message
combination by using the &quot;filename&quot; field of the service data in the CDEV DDL file.
Syntax is described later in this document.
<!*** Finish BULLETED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish BULLETED ***!></p></font>
</td>
<td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
A new process will be spawned for the script each time it is executed. Its standard
output (stdout) file descriptor will be redirected to return data to the main CDEV
application, allowing the script to return results to the parent process.
<!*** Finish BULLETED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish BULLETED ***!></p></font>
</td>
<td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
The external executable file can be any form of user shell, batch file or binary
application that is supported on the host platform.
<!*** Finish BULLETED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish BULLETED ***!></p></font>
</td>
<td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
The Script Service supports all of CDEV's send mechanisms; &quot;send&quot;,
&quot;sendNoBlock&quot; and &quot;sendCallback&quot;. Because of limits imposed on the number of
active processes, the user is advised to use the synchronous &quot;send&quot; method
whenever practical.
<!*** Finish BULLETED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish BULLETED ***!></p></font>
</td>
<td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
When called by CDEV, the script will receive three arguments; the name of the
CDEV device associated with the request, the message string that was submitted
to the device, and a string that describes the contents of the outbound cdevData
object.
<!*** Finish BULLETED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish BULLETED ***!></p></font>
</td>
<td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
The reply that is written to the standard output by the script must have a specific
format as described later in this document. A script may return more than one
reply packet to the caller.
<!*** Finish BULLETED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish BULLETED ***!></p></font>
</td>
<td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
The script notifies CDEV that it has written its last reply packet by writing &quot;done&quot;
alone on a line to the standard output.
<!*** Finish BULLETED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish BULLETED ***!></p></font>
</td>
<td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
If the script is to return multiple results, it should write &quot;end&quot; alone on a line to the
standard output between each packet, and write &quot;done&quot; alone on a line following
the last packet.
<!*** Finish BULLETED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish BULLETED ***!></p></font>
</td>
<td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
If the script returns a value in the &quot;status&quot; tag of its reply packet, this will be
provided to the caller as the completion code of the message. Traditionally a
status of 0 indicates success, and all other values indicated an error occurred.
<!*** Finish BULLETED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish BULLETED ***!></p></font>
</td>
<td valign=top>
<!*** Start BULLETED ***!><font size=+1 color=Black>
Because the callback mechanism of the Script Service is triggered by output from
the script, the script developer should at least write &quot;done&quot; to the standard output
even if the application returns no output.
<!*** Finish BULLETED ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
2.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF4">
Building the Script Service
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF5">
Location of Files
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The source code for the Script Service is provided with the CDEV distribution starting
with version 1.5. The source code is located in the directory $CDEV/extensions/
ScriptService. The following steps should be taken to build the ScriptService.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF6">
Steps to Building
Service
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<table>
<tr><td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
1.
<!*** Finish NUMBERED ***!></p></font>
</td>
<td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
Obtain and install the CDEV distribution - Version 1.5 or higher.
<!*** Finish NUMBERED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
2.
<!*** Finish NUMBERED ***!></p></font>
</td>
<td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
Follow the installation steps to build CDEV on your system. This includes setting
all of the environment variables required by CDEV.
<!*** Finish NUMBERED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
3.
<!*** Finish NUMBERED ***!></p></font>
</td>
<td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
Change directories to <em>$CDEV/extensions/ScriptService/src</em>.
<!*** Finish NUMBERED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
4.
<!*** Finish NUMBERED ***!></p></font>
</td>
<td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
There is a collection of platform specific makefiles in the directory <em>$CDEV/
extensions/cdevGenericServer/include/makeinclude</em>. Link the makefile that is
appropriate to your architecture to the file Makefile.OS.
<!*** Finish NUMBERED ***!></p></font>
<!*** Start INDENTED ***!><font size=+1 color=Black>
For example, to link to the makefile for HP-UX, you would type the following
command.
</p>
</p>
<em>ln -s Makefile.hpux Makefile.OS</em>
</p>
<!*** Finish INDENTED ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
5.
<!*** Finish NUMBERED ***!></p></font>
</td>
<td valign=top>
<!*** Start NUMBERED ***!><font size=+1 color=Black>
Type make to compile and link the Script Service shared object. Note that you
must be using GNU make in order to build this distribution.
<!*** Finish NUMBERED ***!></p></font>
</td></tr>
</table>
<!*** Start BODY ***!><font size=+1 color=Black>
Upon completion the Makefile will generate the shared object for the Script Service
and will install it into your CDEVSHOBJ directory. At this point you are ready to use
the Script Service.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
3.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF7">
Structure of Data Provided to the Script
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF8">
General Form of
Data String
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
When a developer makes a CDEV send call, he may provide outbound data in the
form of a cdevData object. Before calling the script, this data is converted into a string
and provided as the third argument to the application (the first argument is the device
name and the second is the message). The structure of the outbound data string is of
the following form.
</p>
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 1:
<a name="LOFREF1">
General form of string representation of cdevData
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong><em>
tag1=&quot;string value&quot;
tag2=1.00
<!*** Finish PROGRAM ***!></strong></em></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 13>
</a> <!*** Finish FIGURE ***!></p></em></font>
<!*** Start BODY ***!><font size=+1 color=Black>
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF9">
Representation of
Scalar Data
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The above example shows two data entries of the form <em>tag=value</em>. Each entry is
separated by a carriage return. The first entry has a tag name of <em>'tag1'</em> and a value of
<em>'string value'</em>. You will note that <em>'string value'</em> is enclosed in double quotes in the
example. This is used to notify the script that the value is a non-numeric character
string. In the second data entry the value <em>'1.0' </em>is not enclosed in quotes, indicating that
the value is a number.
</p>
The following example illustrates how scalar values stored in a cdevData object would
look when they are passed to the script.
</p>
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 2:
<a name="LOFREF2">
String representation of scalar data in a cdevData object
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong><em>
Data stored in cdevData object:
Tag: value
Data Type: character string
Value: Test
Tag: status
Data Type: integer
Value: 0
Tag: controlHigh
Data Type: double
Value: 1.001
String representation provided to script:
value=&quot;Test&quot;\\n
status=0\\n
controlHigh=1.001\\n
<!*** Finish PROGRAM ***!></strong></em></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 1>
</a> <!*** Finish FIGURE ***!></p></em></font>
<!*** Start BODY ***!><font size=+1 color=Black>
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF10">
Representation of
Array Data
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
If array data is stored in the outbound cdevData object, it too can be provided to the
script. The data is structured in the standard C format where opening and closing
braces mark the beginning and end (respectively) of each array bound. The following
example illustrates how various arrays would be represented as strings.
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 3:
<a name="LOFREF3">
String representation of array data
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong><em>
Data stored in cdevData object:
Tag: value
Data Type: character string [3]
Value: &quot;value1&quot; &quot;value2&quot; &quot;value3&quot;
String representation provided to script:
value={&quot;value1&quot;,&quot;value2&quot;,&quot;value3&quot;}\\n
<AFrame 5>
Data stored in cdevData object:
Tag: value
Data Type: double [3]
Value: 1.0, 2.0, 3.01
String representation provided to script:
value={1,2,3.01}\\n
<AFrame 6>
Data stored in cdevData object:
Tag: value
Data Type: double [3][2]
Value: 1.0, 2.0, 3.0, 4.0, 5.0, 6.0
String representation provided to script:
value={{1,2},{3,4},{5,6}}\\n
<!*** Finish PROGRAM ***!></strong></em></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 3>
</a> <!*** Finish FIGURE ***!></p></em></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
4.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF11">
Structure of Data Returned from the Script
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF12">
Returning Data to
the Calling CDEV
Application
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
Before CDEV starts the script, it creates a pipe that is used to pass data between the
script and the CDEV application. One end of this pipe is maintained by the application
and the other end of the pipe is provided to the script as its standard output. This
means that anytime the script uses the &quot;echo&quot; command or the &quot;printf&quot; command, the
data that it output's will be transmitted through the pipe to the parent application.
</p>
The script is responsible for formatting the data into a collection of character strings
that can be recognized by the CDEV application.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF13">
General Form of
String Data
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
In general, the data that is returned from a script is of the same form as described in
the preceding section, &quot;<em>Structure of Data Provided to the Script</em>&quot;. The most notable
difference is that the script must terminate the list by providing a character string that
indicates that the group of data items is complete; the string &quot;<em>end</em>&quot; or &quot;<em>done</em>&quot; alone on
a line.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF14">
Returning a
Single Result
Packet
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
If the script is going to return exactly one result packet (<em>a group of tags and values that
will be used to populate the result cdevData</em>), then it should write the string &quot;<em>done</em>&quot; on
a line by itself immediately following the output data. This will notify the Script Service
that no more data will be returned from the script.
</p>
The following example shows how a single result will be returned from a script. Note
that the &quot;status&quot; tag contains the completion code that will be returned to the CDEV
application.
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 4:
<a name="LOFREF4">
Returning a single result packet to the CDEV application
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong><em>
#\\! /bin/csh -f
echo value=\\&quot;Test\\&quot;
echo status=0
echo controlLow=1.5
echo controlHigh=25.1
echo done
<!*** Finish PROGRAM ***!></strong></em></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 7>
</a> <!*** Finish FIGURE ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF15">
Returning
Multiple Result
Packets
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
Returning multiple results from a single script execution is not generally advised.
However, If the script is going to return more than one result packet, then each interim
packet should be terminated by the &quot;<em>end</em>&quot; keyword on a line by itself. The &quot;<em>done</em>&quot;
keyword should follow the last entry.
</p>
The following example shows how two results will be returned from a script.
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 5:
<a name="LOFREF5">
Returning a multiple result packets to the CDEV application
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong><em>
#\\! /bin/csh -f
echo value=\\&quot;Start Result 1\\&quot;
echo status=0
echo end
echo value=\\&quot;Start Result 2\\&quot;
echo status=-1
echo done
<!*** Finish PROGRAM ***!></strong></em></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 9>
</a> <!*** Finish FIGURE ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF16">
Special
Considerations
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
If the script that is being executed will not return a result, then the developer should
still write &quot;<em>done&quot;</em> to the standard output in order to notify the CDEV application that it
should no longer wait for output. If the script is not returning a result, it may write the
terminating <em>&quot;done&quot;</em> at the beginning of the script or at the end. Because synchronous
calls will block until a reply is received, the developer should return a result to the
CDEV application as quickly as possible.
</p>
If the developer never writes anything to the standard output, then the user specified
CDEV callback will never be executed... therefore, it is crucial to notify the CDEV
application when the script has completed.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
5.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF17">
DDL Entries for the Script Service
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF18">
Setting Up the
DDL
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The following example illustrates how to add a service entry to identify the Script
Service and how to use the service data to specify the filename that the Script Service
will execute to service a message.
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 6:
<a name="LOFREF6">
Simple DDL file for the Script Service
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black><strong><em>
/*
* This is the service definition, it tells CDEV that there is
* a service named Script and that it will use the cdevData
* tag 'filename' to read configuration information from the
* DDL file entries.
*/
service Script
{
tags {filename}
}
/*
* This class definition identifies the class scriptClass which
* supports the &quot;get and &quot;set&quot; commands on attributes &quot;attrib0&quot;
* and &quot;attrib1&quot;. Note that attrib0 will call script /bin/ouch
* and attrib1 will call script /bin/wammo.
*/
class scriptClass
{
verbs {get, set}
attributes
{
attrib0 Script {filename = /bin/ouch};
attrib1 Script {filename = /bin/wammo};
}
}
/*
* Finally, the CDEV DDL identifies two devices that are of type
* scriptClass. Any time one of the supported messages is passed
* to one of these devices it will activate the corresponding
* script.
*/
scriptClass : device0, device1;
<!*** Finish PROGRAM ***!></strong></em></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 11>
</a> <!*** Finish FIGURE ***!></p></em></font>
<!*** Start BODY ***!><font size=+1 color=Black>
<!*** Finish BODY ***!></p></font>
</td></tr>
</table>
</body>
+6349
View File
File diff suppressed because it is too large Load Diff
+9738
View File
File diff suppressed because it is too large Load Diff
+589
View File
@@ -0,0 +1,589 @@
<! This document generated using mif2html Version 1.0 - Walt Akers - 1996 !>
<head>
<title>CDEV Documentation</title>
</head>
<body bgcolor="#E0E0FF">
<body>
<! ************************ FILE : cdevUtilitiesTITLE.mif *****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start ADDRESS ***!><font size=+12 color=Black><strong><em>
CDEV Utilities
<!*** Finish ADDRESS ***!></p></strong></em></font>
<!*** Start ADDRESS-SUBHEAD ***!><font size=+2 color=Black><strong>
Utility Applications of the Control Device Interface
<!*** Finish ADDRESS-SUBHEAD ***!></p></strong></font>
<!*** Start ADDRESS-VERSION ***!><font size=+2 color=Black>
</p>
Chip Watson, Jie Chen, Danjin Wu, Walt Akers
</p>
</p>
Version 1.5 - December 9, 1996
</p>
</p>
TJNAF - Thomas Jefferson National Accelerator Facility
<!*** Finish ADDRESS-VERSION ***!></p></font>
</td></tr>
</table>
<! *************************** TABLE OF CONTENTS ****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top align=center>
<!*** Start CLASS-TOC-TITLE ***!><font size=+3><strong>
Table of Contents
<!*** Finish CLASS-TOC-TITLE ***!></p></strong></font>
</td></tr>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<table>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
1.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevUtilities.html#TOCREF1">The <em>cdevUtil </em>Command Line Utility</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevUtilities.html#TOCREF2">Overview</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevUtilities.html#TOCREF3">Location of Files</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevUtilities.html#TOCREF4">Starting cdevUtil</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevUtilities.html#TOCREF5">Arguments to cdevUtil</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevUtilities.html#TOCREF6">Syntax of cdevUtil Commands</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevUtilities.html#TOCREF7">Exiting from cdevUtil</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevUtilities.html#TOCREF8">cdevUtil Internal Commands</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
2.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="cdevUtilities.html#TOCREF9">The <em>cddl </em>Device Definition File Compiler</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevUtilities.html#TOCREF10">Overview</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevUtilities.html#TOCREF11">Location of Files</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<!*** Finish UHEADING2TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start UHEADING2TOC ***!><font size=+1 color=Black>
<a href="cdevUtilities.html#TOCREF12">Using the cddl Compiler</a>
<!*** Finish UHEADING2TOC ***!><br></font>
</td></tr>
</table>
</td></tr>
</table>
<! **************************** LIST OF FIGURES *****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top align=center>
<!*** Start CLASS-LOF-TITLE ***!><font size=+3><strong>
List of Figures
<!*** Finish CLASS-LOF-TITLE ***!></p></strong></font>
</td></tr>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start FIGURE1LOF ***!><font size=+1 color=Black>
Figure 1:
<a href="cdevUtilities.html#LOFREF1">Submitting batch commands to cdevUtil</a>
<!*** Finish FIGURE1LOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 2:
<a href="cdevUtilities.html#LOFREF2">Entering commands using cdevUtil</a>
<!*** Finish FIGURELOF ***!><br></font>
<!*** Start FIGURELOF ***!><font size=+1 color=Black>
Figure 3:
<a href="cdevUtilities.html#LOFREF3">Typical output from the cddl compiler</a>
<!*** Finish FIGURELOF ***!><br></font>
</td></tr>
</table>
<! ************************ FILE : ./cdevUtilities.mif *****************************!>
<br><hr><br>
<table width=100%>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
1.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF1">
The <em>cdevUtil </em>Command Line Utility
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF2">
Overview
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The cdevUtil application provides cdev user's with a simple application that can be
used to communicate with cdev services. This program provides a direct interface to
most of the capabilities of cdev and is commonly used to test a newly created service
or to ensure that changes made to a DDL file are behaving as expected.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF3">
Location of Files
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The source code for cdevUtil is located in the <strong><em>$(CDEV)/src/utility </strong></em>directory. This
application is automatically compiled whenever the cdev library is built. The binary
executable is placed in the directory <strong><em>$(CDEV)/bin/$(TARGET)</strong></em> when the application is
compiled<strong><em>. </strong></em>Once the cdev libraries and applications are compiled, this directory should
be placed in your search path.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF4">
Starting cdevUtil
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The cdevUtil utility is executed from the UNIX command line by typing <em>cdevUtil
&lt;Return&gt;</em>. If the cdev binary directory is not in your path, then you will have to provide
the complete path on the command line. The CDEVDDL environment variable should
be specified prior to starting the utility because cdevUtil will use this environment
variable to locate and load the device definition file.<em></em>
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF5">
Arguments to
cdevUtil
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
When starting the cdevUtil utility, the user may provide a list of strings as arguments.
Each of these strings will be treated as a single command and will be processed
before the command line prompt is displayed. Any command that is supported by
cdevUtil may be submitted as an argument, including, &quot;<em>debug on</em>&quot;, &quot;<em>debug off</em>&quot;, and
<em>&quot;quit</em>&quot;. The syntax of individual commands is described in the section titled <strong><em>Syntax of
cdevUtil Commands.</strong></em>
</p>
The following figure shows how three command line arguments can be submitted to
cdevUtil to be processed in batch mode.
</p>
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE1 ***!><font size=+0 color=Black><em>
Figure 1:
<a name="LOFREF1">
Submitting batch commands to cdevUtil
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black>
host1:&gt; cdevUtil &quot;debug on&quot; &quot;IPM1S01 set VAL value=25.0&quot; &quot;quit&quot;
Submitting batch cdev commands...
-------------------- DEBUG OUTPUT -------------------
Attempting to transmit using the following parameters
Device: IPM1S01
Verb: set
Attrib: VAL
Tag: value = 25
SUCCESS: Device: IPM1S01 - Message: set VAL - Value: None
------------------ END DEBUG OUTPUT -----------------
host1:&gt;
<!*** Finish PROGRAM ***!></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 5>
</a> <!*** Finish FIGURE1 ***!></p></em></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF6">
Syntax of cdevUtil
Commands
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The cdevUtil utility uses a simple syntax with the following format:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start Indented ***!><font size=+1 color=Black>
<em>deviceName verb attributeName tag1=xxx tag2=xxx ...</em>
</p>
<!*** Finish Indented ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME_INDENTED ***!><font size=+1 color=Black><strong>
<em>deviceName</em>
<!*** Finish FUNC_NAME_INDENTED ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
The name of the cdev device that the message should be sent
to.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_INDENTED ***!><font size=+1 color=Black><strong>
<em>verb</em>
<!*** Finish FUNC_NAME_INDENTED ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
The verb component of the message string. For a channel
access device this will be get, set, monitorOn or monitorOff.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_INDENTED ***!><font size=+1 color=Black><strong>
<em>attributeName</em>
<!*** Finish FUNC_NAME_INDENTED ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
The name of the cdev device attribute that the verb will be
executed on.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_INDENTED ***!><font size=+1 color=Black><strong>
<em>tag=xxxx</em>
<!*** Finish FUNC_NAME_INDENTED ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
These entries are used to place information in the outbound
cdevData object. tag is the text string name of the cdevData
tag. xxxx is the value that should be placed in the tag. At this
time cdevUtil only supports the insertion of scalar values into
the cdevData object.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
<!*** Start BODY ***!><font size=+1 color=Black>
The following example shows the commands necessary to submit a request to get the
value of a device, and then set it to a new value.
<!*** Finish BODY ***!></p></font>
<!*** Start Indented ***!><font size=+1 color=Black>
<!*** Finish Indented ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 2:
<a name="LOFREF2">
Entering commands using cdevUtil
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black>
host1:&gt; cdevUtil
&gt;
&gt; SUCCESS: Device: IPM1S01 - Message: get VAL - Value: 0
&gt;
&gt; SUCCESS: Device: IPM1S01 - Message: set VAL - Value: None
&gt;
host1:&gt;
<!*** Finish PROGRAM ***!></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 1>
</a> <!*** Finish FIGURE ***!></p></em></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF7">
Exiting from
cdevUtil
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
In order to exit from cdevUtil, the user must type <strong><em>quit &lt;Return&gt;</strong></em>. This will remove any
monitors that might have been created and will terminate the session.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF8">
cdevUtil Internal
Commands
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The following commands are processed by the cdevUtil application and are not
passed through to cdev.
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start FUNC_NAME_INDENTED ***!><font size=+1 color=Black><strong>
<em>debug on</em>
<!*** Finish FUNC_NAME_INDENTED ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This message tells cdevutil that the user wants extremely
verbose output. When this is flag is set, the complete contents
of the incoming and outgoing cdevData objects will be
displayed. Typically only the value field of the incoming
cdevData object is displayed.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_INDENTED ***!><font size=+1 color=Black><strong>
<em>debug off</em>
<!*** Finish FUNC_NAME_INDENTED ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This message tells cdevUtil to stop displaying verbose output.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_INDENTED ***!><font size=+1 color=Black><strong>
<em>help</em>
<!*** Finish FUNC_NAME_INDENTED ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This command causes cdevUtil to display an simple help
screen that describes its usage and internal commands.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start FUNC_NAME_INDENTED ***!><font size=+1 color=Black><strong>
<em>quit</em>
<!*** Finish FUNC_NAME_INDENTED ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start FUNC_DEF ***!><font size=+1 color=Black>
This command terminates the cdevUtil utility.
<!*** Finish FUNC_DEF ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
2.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF9">
The <em>cddl </em>Device Definition File Compiler
</a> <!*** Finish HEADING1 ***!></p></strong></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF10">
Overview
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The cddl compiler is used to convert the ascii text device definition files into a binary,
pre-processed device definition file. The binary DDL files load as much as twenty
times faster than their ascii text based counterparts. Additionally, the cddl compiler
confirms that no syntax errors exist in the ascii data files when they are compiled.
Therefore, this tool is also effect in validating the syntax and structure of the DDL files.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF11">
Location of Files
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The source code for cddl is located in the <strong><em>$(CDEV)/src/utility </strong></em>directory. This
application is automatically compiled whenever the cdev library is built. The binary
executable is placed in the directory <strong><em>$(CDEV)/bin/$(TARGET)</strong></em> when the application is
compiled<strong><em>. </strong></em>Once the cdev libraries and applications are compiled, this directory should
be placed in your search path.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start UHEADING2 ***!><font size=+1 color=Black><strong>
<a name="TOCREF12">
Using the cddl
Compiler
</a> <!*** Finish UHEADING2 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start BODY ***!><font size=+1 color=Black>
The syntax of cddl is very similar to that of the C preprocessor. The following is a
sample command line for compiling the device definition file.
<!*** Finish BODY ***!></p></font>
<table>
<tr><td width=5% valign=top>
</td>
<td valign=top>
<!*** Start Indented ***!><font size=+1 color=Black>
cddl inputfile -o outputfile
<!*** Finish Indented ***!></p></font>
<!*** Start BODY ***!><font size=+1 color=Black>
It is important to note that the <strong><em>inputfile </strong></em>parameter must contain a complete path
specification to the device definition file. Any errors will be reported to the screen. The
following is the typical output from executing the cddl compiler.
</p>
<!*** Finish BODY ***!></p></font>
<!*** Start FIGURE ***!><font size=+0 color=Black><em>
Figure 3:
<a name="LOFREF3">
Typical output from the cddl compiler
<table border=1><tr><td>
<table>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start PROGRAM ***!><pre><font size=+0 color=Black>
host1:&gt; cddl ~mccops/ddl/master.ddl -o master.bdd
converted from ascii to binary ddl file!
host1:&gt;
<!*** Finish PROGRAM ***!></font></pre>
</td></tr>
</table>
</tr></td></table>
<AFrame 3>
</a> <!*** Finish FIGURE ***!></p></em></font>
<!*** Start BODY ***!><font size=+1 color=Black>
<!*** Finish BODY ***!></p></font>
<!*** Start Indented ***!><font size=+1 color=Black>
<!*** Finish Indented ***!></p></font>
</td></tr>
</table>
</td></tr>
</table>
</body>
+807
View File
@@ -0,0 +1,807 @@
<! This document generated using mif2html Version 1.0 - Walt Akers - 1996 !>
<head>
<title>CDEV Documentation</title>
</head>
<body bgcolor="#E0E0FF">
<body>
<! *************************** TABLE OF CONTENTS ****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top align=center>
<!*** Start CLASS-TOC-TITLE ***!><font size=+3><strong>
Table of Contents
<!*** Finish CLASS-TOC-TITLE ***!></p></strong></font>
</td></tr>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<table>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
1.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="releaseNotes1_3.html#TOCREF1">Overview</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
2.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="releaseNotes1_3.html#TOCREF2">Documentation</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
3.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="releaseNotes1_3.html#TOCREF3">Installation</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
4.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="releaseNotes1_3.html#TOCREF4">Changes from 1.1 Version</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
5.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="releaseNotes1_3.html#TOCREF5">Problems and Restrictions (general)</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
6.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="releaseNotes1_3.html#TOCREF6">Channel Access Service Features and Restrictions</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
7.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="releaseNotes1_3.html#TOCREF7">Customizing for a New System</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
8.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="releaseNotes1_3.html#TOCREF8">Planned Enhancements</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
9.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="releaseNotes1_3.html#TOCREF9">cdev Applications</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
</table>
</td></tr>
</table>
<! **************************** LIST OF FIGURES *****************************!>
<! ************************ FILE : ./releaseNotes1_3.mif *****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start TITLE ***!><font size=+8 color=Black><strong><em>
cdev 1.3 Release Notes
<!*** Finish TITLE ***!></p></strong></em></font>
</td></tr>
</table>
<br><hr><br>
<table width=100%>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
1.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF1">
Overview
</a> <!*** Finish HEADING1 ***!></p></strong></font>
<!*** Start BODY ***!><font size=+1 color=Black>
The cdev (control device) C++ library is designed to provide a standard application
programming interface (API) to one or more underlying packages, typically control system
interfaces. The implementation is in 2 layers: the uppermost layer is used directly by an
application, and provides an abstraction of the underlying package as well as many general
purpose features. The second layer (service layer) provides the interface to one or more
underlying packages, and is implemented as loadable libraries.
</p>
cdev was initially developed at CEBAF with input from the EPICS collaboration, and is now
available for anyone to take and use or improve. We welcome all comments, suggestions, bug
reports, and (especially) bug fixes, including fixes for new platforms. There are many planned
enhancements, and would welcome volunteers to contribute to this project. See below for a
summary of new and planned features.
</p>
You may join a cdev discussion list by sending the message
</p>
subscribe cdev
</p>
to the address mailserv@cebaf.gov. (Send the message HELP to the same address for
information on how to use the mail server.) The cdev web page is
</p>
http://www.cebaf.gov/cdev/
</p>
cdev 1.3 is the third publically released version of cdev.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
2.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF2">
Documentation
</a> <!*** Finish HEADING1 ***!></p></strong></font>
<!*** Start BODY ***!><font size=+1 color=Black>
The documentation for cdev includes the following:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<em>Introduction to cdev</em> -- this is an update of <em>The cdev User's Guide</em>, complete with more
examples. It covers all the basics, and is the best place to start.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<em>A cdev Tutorial</em> -- this document goes through how to use each of the classes in cdev,
including all public methods; extensive examples are given.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<em>cdev Reference Manual</em> -- documents each class in cdev in alphabetical order
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<em>cdev Administrator's Guide</em> -- this is for system administrators, and those intending to
port cdev to new platforms
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<em>Service Developer's Guide </em>-- this documents a couple of additional classes needed to
create a custom service, and goes through a lengthly example demoService.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<em>cdev C Binding</em> -- documents the C wrapper routines for cdev
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
</table>
<!*** Start BODY ***!><font size=+1 color=Black>
This documentation is also available on the web site.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
3.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF3">
Installation
</a> <!*** Finish HEADING1 ***!></p></strong></font>
<!*** Start BODY ***!><font size=+1 color=Black>
Sources are available in compressed tar format, and contain makefiles to build the libraries and
utilities. These have been tested on the HP, SunOS, and SGI platforms to execute correctly, and
SLAC has ported this version to VAX/VMS. Fixes have also been incorporated from an earlier
port to IBM/AIX (at CERN). As configured, cdev will build support for the EPICS channel
access service.
</p>
The Makefiles have been extensively reworked since the 1.1 release, and should build
successfully on more platforms.
</p>
For further information, see the README file in the topmost directory, and the <em>cdev
Administrator's Guide</em> in the /doc sub-directory.
</p>
Support for site specific control systems must be added by the implementer. See the <em>Service
Developer's Guide</em> for help in getting started interfacing cdev to a new control system. In
addition, there are a number of example services included with this release.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
4.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF4">
Changes from 1.1 Version
</a> <!*** Finish HEADING1 ***!></p></strong></font>
<!*** Start BODY ***!><font size=+1 color=Black>
A number of changes have been made to make the source code compile correctly on a larger
variety of compilers, including VAX C++ and g++. In addition, cdev now produces more error
and warning messages through its error logging routines. The following is a list of the more
visible feature changes:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
1.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
The C binding is included in the release (previously released as an add-on to 1.1).
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
2.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
The device definitions (ddl file) may now be stored and loaded in a binary format, which
is about 20 times faster to load compared to the ascii format. A new utility program,
cddl, compiles the ddl from ascii to binary. At run-time, the file format of the ddl file is
detected automatically so that either ascii or binary may be used.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
3.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Shared objects are now loaded from a subdirectory of the directory pointed to by
CDEVSHOBJ, where the subdirectory name is the name of the version of cdev against
which the application is running. This makes it possible to run different applications
against different versions of cdev. If the subdirectory does not contain the needed object,
it is loaded from CDEVSHOBJ as before.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
4.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
cdevFdChangedCallback added to cdevSystem, allowing an application to be notified
when file descriptors are opened or closed by cdev services.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
5.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
cdevData now supports a cast to char* as well as operator= overloading.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
6.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
cdevGroup now supports a deferred execution / re-execution mode: if a group is in this
mode, operations are remembered but not executed. Saved operations may later be
executed as a group, and re-executed without re-learning. Only asynchronous operations
are remembered.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
7.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
A few bugs in the channel access service have been fixed. Monitoring of status without
monitoring value now works correctly.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
8.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
The cdev/src directory now contains an extensions sub-directory. Extensions include the
tcl interface, and the ACE (Adaptive Communication Environment) based client/server
package used for building new cdev servers and services capable of passing entire
cdevData objects over the network.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
9.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
The cdev/examples directory now contains 2 additional example services, one
implementing compound cdev devices, and the other (demoService) is a trivial service
useful as a starting point for read/write services.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
5.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF5">
Problems and Restrictions (general)
</a> <!*** Finish HEADING1 ***!></p></strong></font>
<!*** Start BODY ***!><font size=+1 color=Black>
Restrictions:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
cdev is not yet thread safe, and may not be safe against instantiating more that one
cdevSystem object.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
6.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF6">
Channel Access Service Features and Restrictions
</a> <!*** Finish HEADING1 ***!></p></strong></font>
<!*** Start BODY ***!><font size=+1 color=Black>
EPICS / Channel Access version 3.12 is recommended. The following comments from the 1.1
release still apply:
</p>
Major features:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
Supports synchronous and asynchronous send's.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
Fetches data in native type (type conversion done on client and not server).
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
Provides a default name service so that if a device is not defined, then an EPICS channel
access connection is attempted with the record name set equal to the device name, and
the field name set equal to the attribute name.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
</table>
<!*** Start BODY ***!><font size=+1 color=Black>
Restrictions:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
Only supports set/get/monitorOn/monitorOff verbs and the pv and readonly service data
tags. Support for arbitrary messages with default data has again been postponed.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
Discards all exception callbacks from channel access in this version.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
Channel access security is not supported in this release.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
sendCallback does not support the same timeout feature as send.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
channel access fails if send is called from within a callback function (either
asynchronous methods are OK: sendNoBlock and sendCallback)
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
</table>
<!*** Start BODY ***!><font size=+1 color=Black>
Compilation options:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
_CA_SYNC_CONN = perform connections synchronously, waiting up to 4 seconds.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
_CDEV_DEBUG = print verbose messages
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
_EPICS_3_12 = if not defined, use 3.11 calls instead.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
7.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF7">
Customizing for a New System
</a> <!*** Finish HEADING1 ***!></p></strong></font>
<!*** Start BODY ***!><font size=+1 color=Black>
To customize cdev for a new control system, a new cdev service must be written. Two services
are provided with the release: caService for EPICS channel access, and skService, a skeleton
service. The ca (channel access) service is a complex example of how to interact with a control
system which supports asychronous I/O. The skeleton service simply shows the minimal
interface a service must provide, and can be used as a starting point for building a new service.
A third example is contained in the Service Developer's Guide, and is intermediate in
complexity.
</p>
Still Planned:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
a simple service for which you need only provide synchronous read and write routines.
This will speed up integrating a simple synchronous RPC or memory image based
system.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
8.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF8">
Planned Enhancements
</a> <!*** Finish HEADING1 ***!></p></strong></font>
<!*** Start BODY ***!><font size=+1 color=Black>
There are many enhancements planned for cdev, and releases will probably come out every 3
months for a while. The following is a list of topics planned for summer of 1996. Work on all
of these topics is underway.
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
1.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Collection devices. Created dynamically or statically, each device would contain a list
of other devices. Messages would be repeated to all contained devices, and read results
would be collected together and returned to the caller as a vector. Implementation will
support passing the list down to the service instead of iterating in the cdev layer so that
list based services (such as SLAC's) can optimize performance.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
2.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Service + Server based upon passing cdevData objects between client and server. This
allows complex query/reply type operations. A prototype is already in operation at
CEBAF, although the protocol is likely to change somewhat.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
3.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Virtual device wrapper around the correlation measurement engine (see below).
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
</table>
<!*** Start BODY ***!><font size=+1 color=Black>
The following list has been put on the back burner, but still of interest:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
4.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
&quot;Multiknob&quot; devices. Write operations would be applied to a vector of devices with
weighting factors which may be constant, or a simple functional form, or derived by a
call to another process. Intended for tuning machines.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
5.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Indirect devices. The name of the actual device can be changed on the fly, and all
connections to the old device will be automatically dropped and new connections
established. Useful for changing generic displays from one device to another.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
6.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
tcl devices. Devices implemented as tcl scripts, which may call other cdev devices (or
anything else).
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
7.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Connection to an object oriented database.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
9.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF9">
cdev Applications
</a> <!*** Finish HEADING1 ***!></p></strong></font>
<!*** Start BODY ***!><font size=+1 color=Black>
The following applications are available as cdev extensions from CEBAF:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
1.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Correlation package, modeled after SLAC's correlation plot utility. Consists of a
correlation engine class library plus an application (XACT) which uses it.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
2.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Multiknob utility (like #4 above, with a GUI interface). This is based upon a prototype
of multiknob devices, and is configured by ascii files.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
</table>
<!*** Start BODY ***!><font size=+1 color=Black>
Finally, the following EPICS tools will be ported to cdev or re-written using cdev in the next
12 months (ports to be distributed with EPICS, not cdev, due to licensing constraints):
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
1.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Alarm Handler (specialized GUI tool). Porting now underway at APS.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
2.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
General operator interface (GUI), either dm or medm or both.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
3.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Archiver (new, to be distributed with cdev).
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
4.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Save / Restore tool (ditto).
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
</table>
<!*** Start BODY ***!><font size=+1 color=Black>
Other applications will soon become available from other sites, and the most current
information will be available from the cdev web site, http://www.cebaf.gov/cdev.
</p>
<!*** Finish BODY ***!></p></font>
</td></tr>
</table>
</body>
+918
View File
@@ -0,0 +1,918 @@
<! This document generated using mif2html Version 1.0 - Walt Akers - 1996 !>
<head>
<title>CDEV Documentation</title>
</head>
<body bgcolor="#E0E0FF">
<body>
<! *************************** TABLE OF CONTENTS ****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top align=center>
<!*** Start CLASS-TOC-TITLE ***!><font size=+3><strong>
Table of Contents
<!*** Finish CLASS-TOC-TITLE ***!></p></strong></font>
</td></tr>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<table>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
1.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="releaseNotes1_4.html#TOCREF1">Overview</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
2.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="releaseNotes1_4.html#TOCREF2">Documentation</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
3.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="releaseNotes1_4.html#TOCREF3">Installation</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
4.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="releaseNotes1_4.html#TOCREF4">Changes from 1.1 Version</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
5.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="releaseNotes1_4.html#TOCREF5">Changes from 1.3 Version</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
6.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="releaseNotes1_4.html#TOCREF6">Problems and Restrictions (general)</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
7.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="releaseNotes1_4.html#TOCREF7">Channel Access Service Features and Restrictions</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
8.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="releaseNotes1_4.html#TOCREF8">Customizing for a New System</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
9.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="releaseNotes1_4.html#TOCREF9">Planned Enhancements</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
10.
<!*** Finish HEADING1TOC ***!><br></font>
</td>
<td valign=top>
<!*** Start HEADING1TOC ***!><font size=+1 color=Black>
<a href="releaseNotes1_4.html#TOCREF10">cdev Applications</a>
<!*** Finish HEADING1TOC ***!><br></font>
</td></tr>
</table>
</td></tr>
</table>
<! **************************** LIST OF FIGURES *****************************!>
<! ************************ FILE : ./releaseNotes1_4.mif *****************************!>
<br><hr><br>
<table width=100%>
<tr><td>
<! ***** Empty Column ***** !>
</td>
<td valign=top>
<!*** Start TITLE ***!><font size=+8 color=Black><strong><em>
cdev 1.4 Release Notes
<!*** Finish TITLE ***!></p></strong></em></font>
</td></tr>
</table>
<br><hr><br>
<table width=100%>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
1.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF1">
Overview
</a> <!*** Finish HEADING1 ***!></p></strong></font>
<!*** Start BODY ***!><font size=+1 color=Black>
The cdev (control device) C++ library is designed to provide a standard application
programming interface (API) to one or more underlying packages, typically control system
interfaces. The implementation is in 2 layers: the uppermost layer is used directly by an
application, and provides an abstraction of the underlying package as well as many general
purpose features. The second layer (service layer) provides the interface to one or more
underlying packages, and is implemented as loadable libraries.
</p>
cdev was initially developed at CEBAF with input from the EPICS collaboration, and is now
available for anyone to take and use or improve. We welcome all comments, suggestions, bug
reports, and (especially) bug fixes, including fixes for new platforms. There are many planned
enhancements, and would welcome volunteers to contribute to this project. See below for a
summary of new and planned features.
</p>
You may join a cdev discussion list by sending the message
</p>
subscribe cdev
</p>
to the address mailserv@cebaf.gov. (Send the message HELP to the same address for
information on how to use the mail server.) The cdev web page is
</p>
http://www.cebaf.gov/cdev/
</p>
cdev 1.4 is the third publically released version of cdev.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
2.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF2">
Documentation
</a> <!*** Finish HEADING1 ***!></p></strong></font>
<!*** Start BODY ***!><font size=+1 color=Black>
The documentation for cdev includes the following:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<em>Introduction to cdev</em> -- this is an update of <em>The cdev User's Guide</em>, complete with more
examples. It covers all the basics, and is the best place to start.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<em>A cdev Tutorial</em> -- this document goes through how to use each of the classes in cdev,
including all public methods; extensive examples are given.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<em>cdev Reference Manual</em> -- documents each class in cdev in alphabetical order
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<em>cdev Administrator's Guide</em> -- this is for system administrators, and those intending to
port cdev to new platforms
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<em>Service Developer's Guide </em>-- this documents a couple of additional classes needed to
create a custom service, and goes through a lengthly example demoService.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<em>cdev C Binding</em> -- documents the C wrapper routines for cdev
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
</table>
<!*** Start BODY ***!><font size=+1 color=Black>
This documentation is also available on the web site.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
3.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF3">
Installation
</a> <!*** Finish HEADING1 ***!></p></strong></font>
<!*** Start BODY ***!><font size=+1 color=Black>
Sources are available in compressed tar format, and contain makefiles to build the libraries and
utilities. These have been tested on the HP, SunOS, and SGI platforms to execute correctly, and
SLAC has ported this version to VAX/VMS. Fixes have also been incorporated from an earlier
port to IBM/AIX (at CERN). As configured, cdev will build support for the EPICS channel
access service.
</p>
The Makefiles have been extensively reworked since the 1.1 release, and should build
successfully on more platforms.
</p>
For further information, see the README file in the topmost directory, and the <em>cdev
Administrator's Guide</em> in the /doc sub-directory.
</p>
Support for site specific control systems must be added by the implementer. See the <em>Service
Developer's Guide</em> for help in getting started interfacing cdev to a new control system. In
addition, there are a number of example services included with this release.
<!*** Finish BODY ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
4.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF4">
Changes from 1.1 Version
</a> <!*** Finish HEADING1 ***!></p></strong></font>
<!*** Start BODY ***!><font size=+1 color=Black>
A number of changes have been made to make the source code compile correctly on a larger
variety of compilers, including VAX C++ and g++. In addition, cdev now produces more error
and warning messages through its error logging routines. The following is a list of the more
visible feature changes:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
1.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
The C binding is included in the release (previously released as an add-on to 1.1).
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
2.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
The device definitions (ddl file) may now be stored and loaded in a binary format, which
is about 20 times faster to load compared to the ascii format. A new utility program,
cddl, compiles the ddl from ascii to binary. At run-time, the file format of the ddl file is
detected automatically so that either ascii or binary may be used.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
3.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Shared objects are now loaded from a subdirectory of the directory pointed to by
CDEVSHOBJ, where the subdirectory name is the name of the version of cdev against
which the application is running. This makes it possible to run different applications
against different versions of cdev. If the subdirectory does not contain the needed object,
it is loaded from CDEVSHOBJ as before.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
4.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
cdevFdChangedCallback added to cdevSystem, allowing an application to be notified
when file descriptors are opened or closed by cdev services.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
5.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
cdevData now supports a cast to char* as well as operator= overloading.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
6.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
cdevGroup now supports a deferred execution / re-execution mode: if a group is in this
mode, operations are remembered but not executed. Saved operations may later be
executed as a group, and re-executed without re-learning. Only asynchronous operations
are remembered.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
7.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
A few bugs in the channel access service have been fixed. Monitoring of status without
monitoring value now works correctly.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
8.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
The cdev/src directory now contains an extensions sub-directory. Extensions include the
tcl interface, and the ACE (Adaptive Communication Environment) based client/server
package used for building new cdev servers and services capable of passing entire
cdevData objects over the network.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
9.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
The cdev/examples directory now contains 2 additional example services, one
implementing compound cdev devices, and the other (demoService) is a trivial service
useful as a starting point for read/write services.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
5.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF5">
Changes from 1.3 Version
</a> <!*** Finish HEADING1 ***!></p></strong></font>
<!*** Start BODY ***!><font size=+1 color=Black>
Several minor changes have been introduced to the system in order to improve performance for
existing operations.
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
1.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
The <em>operator ==</em> and <em>operator !=</em> methods whave been added to the cdevData class.
These methods allow the caller to perform a deep comparison of the contents of two
cdevData objects.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
2.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
A <em>cdevTagTableCallback</em> class has been added to the cdevTagTable.h file. This class has
a pure virtual callback method that (when registered with the <em>cdevData</em> class) will
receive a callback each time a new tag is added to the cdev global tag table.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
3.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
The <em>addTagCallback</em> method has been added to the <em>cdevData</em> class. This method is used
by the caller to install a <em>cdevTagTableCallback</em> object that will be executed each time a
new tag is added to the global tag table.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
4.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
The <em>delTagCallback </em>method has been added to the <em>cdevData</em> class. This method
removes a <em>cdevTagTableCallback</em> object that was previously installed using the
<em>cdevData::addTagCallback</em> method.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
5.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
The <em>readTagTable</em> method has been added to the<em> cdevData </em>class. This method allows
the caller to retrieve a list of integer tags and their corresponding character strings that
are stored in the global tag table.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
6.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
The <em>CDEVTAGTABLE </em>environment variable is used to indicate the location of a file
based list of tags that will be automatically loaded when a cdev application is started. If
the variable is not specified the application will attempt to load the list from <em>/usr/local/
lib/cdevTagTable</em>. If this file does not exist, then the default list of tags will be used.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
7.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Channel Access Service (caService) modified to call the callback function immediately
when a second monitor is installed on an channel that is already monitored.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
6.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF6">
Problems and Restrictions (general)
</a> <!*** Finish HEADING1 ***!></p></strong></font>
<!*** Start BODY ***!><font size=+1 color=Black>
Restrictions:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
cdev is not yet thread safe, and may not be safe against instantiating more that one
cdevSystem object.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
7.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF7">
Channel Access Service Features and Restrictions
</a> <!*** Finish HEADING1 ***!></p></strong></font>
<!*** Start BODY ***!><font size=+1 color=Black>
EPICS / Channel Access version 3.12 is recommended. The following comments from the 1.1
release still apply:
</p>
Major features:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
Supports synchronous and asynchronous send's.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
Fetches data in native type (type conversion done on client and not server).
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
Provides a default name service so that if a device is not defined, then an EPICS channel
access connection is attempted with the record name set equal to the device name, and
the field name set equal to the attribute name.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
</table>
<!*** Start BODY ***!><font size=+1 color=Black>
Restrictions:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
Only supports set/get/monitorOn/monitorOff verbs and the pv and readonly service data
tags. Support for arbitrary messages with default data has again been postponed.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
Discards all exception callbacks from channel access in this version.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
Channel access security is not supported in this release.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
sendCallback does not support the same timeout feature as send.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
caService fails if send is called from within a callback function (either asynchronous
methods are OK: sendNoBlock and sendCallback)
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
</table>
<!*** Start BODY ***!><font size=+1 color=Black>
Compilation options:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
_CA_SYNC_CONN = perform connections synchronously, waiting up to 4 seconds.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
_CDEV_DEBUG = print verbose messages
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
_EPICS_3_12 = if not defined, use 3.11 calls instead.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
8.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF8">
Customizing for a New System
</a> <!*** Finish HEADING1 ***!></p></strong></font>
<!*** Start BODY ***!><font size=+1 color=Black>
To customize cdev for a new control system, a new cdev service must be written. Two services
are provided with the release: caService for EPICS channel access, and skService, a skeleton
service. The ca (channel access) service is a complex example of how to interact with a control
system which supports asychronous I/O. The skeleton service simply shows the minimal
interface a service must provide, and can be used as a starting point for building a new service.
A third example is contained in the Service Developer's Guide, and is intermediate in
complexity.
</p>
Still Planned:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
<img src="bullet.jpg">
<!*** Finish LISTBULLET1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTBULLET1 ***!><font size=+1 color=Black>
a simple service for which you need only provide synchronous read and write routines.
This will speed up integrating a simple synchronous RPC or memory image based
system.
<!*** Finish LISTBULLET1 ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
9.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF9">
Planned Enhancements
</a> <!*** Finish HEADING1 ***!></p></strong></font>
<!*** Start BODY ***!><font size=+1 color=Black>
There are many enhancements planned for cdev, and releases will probably come out every 3
months for a while. The following is a list of topics planned for summer of 1996. Work on all
of these topics is underway.
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
1.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Collection devices. Created dynamically or statically, each device would contain a list
of other devices. Messages would be repeated to all contained devices, and read results
would be collected together and returned to the caller as a vector. Implementation will
support passing the list down to the service instead of iterating in the cdev layer so that
list based services (such as SLAC's) can optimize performance.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
2.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Service + Server based upon passing cdevData objects between client and server. This
allows complex query/reply type operations. A prototype is already in operation at
CEBAF, although the protocol is likely to change somewhat.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
3.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Virtual device wrapper around the correlation measurement engine (see below).
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
</table>
<!*** Start BODY ***!><font size=+1 color=Black>
The following list has been put on the back burner, but still of interest:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
4.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
&quot;Multiknob&quot; devices. Write operations would be applied to a vector of devices with
weighting factors which may be constant, or a simple functional form, or derived by a
call to another process. Intended for tuning machines.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
5.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Indirect devices. The name of the actual device can be changed on the fly, and all
connections to the old device will be automatically dropped and new connections
established. Useful for changing generic displays from one device to another.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
6.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
tcl devices. Devices implemented as tcl scripts, which may call other cdev devices (or
anything else).
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
7.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Connection to an object oriented database.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
</table>
</td></tr>
<tr><td valign=top align=right>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
10.
<!*** Finish HEADING1 ***!></p></strong></font>
</td>
<td valign=top>
<!*** Start HEADING1 ***!><font size=+3 color=Black><strong>
<a name="TOCREF10">
cdev Applications
</a> <!*** Finish HEADING1 ***!></p></strong></font>
<!*** Start BODY ***!><font size=+1 color=Black>
The following applications are available as cdev extensions from CEBAF:
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
1.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Correlation package, modeled after SLAC's correlation plot utility. Consists of a
correlation engine class library plus an application (XACT) which uses it.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
2.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Multiknob utility (like #4 above, with a GUI interface). This is based upon a prototype
of multiknob devices, and is configured by ascii files.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
</table>
<!*** Start BODY ***!><font size=+1 color=Black>
Finally, the following EPICS tools will be ported to cdev or re-written using cdev in the next
12 months (ports to be distributed with EPICS, not cdev, due to licensing constraints):
<!*** Finish BODY ***!></p></font>
<table>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
1.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Alarm Handler (specialized GUI tool). Porting now underway at APS.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
2.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
General operator interface (GUI), either dm or medm or both.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
3.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Archiver (new, to be distributed with cdev).
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
<tr><td valign=top align=right>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
4.
<!*** Finish LISTNUMBER1 ***!></p></font>
</td>
<td valign=top>
<!*** Start LISTNUMBER1 ***!><font size=+1 color=Black>
Save / Restore tool (ditto).
<!*** Finish LISTNUMBER1 ***!></p></font>
</td></tr>
</table>
<!*** Start BODY ***!><font size=+1 color=Black>
Other applications will soon become available from other sites, and the most current
information will be available from the cdev web site, http://www.cebaf.gov/cdev.
</p>
<!*** Finish BODY ***!></p></font>
</td></tr>
</table>
</body>
+1145
View File
File diff suppressed because it is too large Load Diff
Executable
+21
View File
@@ -0,0 +1,21 @@
#! /bin/csh
if( -f fmbatch.dat) rm fmbatch.dat
if( -d html) rm -rf html
mkdir -p html
cp bullet.jpg html
foreach x (`find . -name \*.doc -a ! -name \*TOC.doc -a ! -name \*LOF.doc`)
echo "Open $x" >> fmbatch.dat
echo "SaveAs ma $x html/`basename $x .doc`.mif" >> fmbatch.dat
end
fmbatch fmbatch.dat
cd html
foreach x (`find . -name \*.mif -a ! -name \*TITLE.mif`)
mif2html -t 'CDEV Documentation' -o `basename $x .mif`.html `basename $x .mif`TITLE.mif \-TOC \-LOF $x
end
rm *.mif
Executable
+22
View File
@@ -0,0 +1,22 @@
#! /bin/csh
if( -f fmbatch.dat) rm fmbatch.dat
if( !(-d html) ) mkdir -p html
cp bullet.jpg html
foreach x ($argv)
echo "Open $x" >> fmbatch.dat
echo "SaveAs ma $x html/`basename $x .doc`.mif" >> fmbatch.dat
echo "Open `basename $x .doc`TITLE.doc" >> fmbatch.dat
echo "SaveAs ma `basename $x .doc`TITLE.doc html/`basename $x .doc`TITLE.mif" >> fmbatch.dat
end
fmbatch fmbatch.dat
cd html
foreach x (`find . -name \*.mif -a ! -name \*TITLE.mif`)
mif2html -t 'CDEV Documentation' -o `basename $x .mif`.html `basename $x .mif`TITLE.mif \-TOC \-LOF $x
end
rm *.mif
Executable
+13
View File
@@ -0,0 +1,13 @@
#! /bin/csh
if( -f fmbatch.dat) rm fmbatch.dat
mkdir -p ps
foreach x (`find . -name \*.book -o -name releaseNotes\*.doc`)
echo "Open $x" >> fmbatch.dat
echo "Print $x" >> fmbatch.dat
end
fmbatch fmbatch.dat
rm fmbatch.dat
mv *.ps ps
+3471
View File
File diff suppressed because it is too large Load Diff
+3855
View File
File diff suppressed because it is too large Load Diff
+11395
View File
File diff suppressed because it is too large Load Diff
+4664
View File
File diff suppressed because it is too large Load Diff
+20646
View File
File diff suppressed because it is too large Load Diff
+17530
View File
File diff suppressed because it is too large Load Diff
+4822
View File
File diff suppressed because it is too large Load Diff
+14152
View File
File diff suppressed because it is too large Load Diff
+21342
View File
File diff suppressed because it is too large Load Diff
+3644
View File
File diff suppressed because it is too large Load Diff
+3671
View File
File diff suppressed because it is too large Load Diff
+3940
View File
File diff suppressed because it is too large Load Diff
+4376
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.