cdev-1.7.2n
This commit is contained in:
Executable
+555
@@ -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>
|
||||
Executable
BIN
Binary file not shown.
|
After Width: | Height: | Size: 948 B |
Executable
+556
@@ -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="YES" </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>
|
||||
Executable
+699
@@ -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 "cdev" (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 "int").
|
||||
<!*** 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 "System" from the name, and the notion of "system" 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 "Device". cdevRequestObject methods will use the shorter
|
||||
"cdevRequest".
|
||||
<!*** 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
|
||||
"value", "timeStamp", "status", and "severity".
|
||||
</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 (&result);
|
||||
</p>
|
||||
status = cdevDataTagC2I ("value",&valtag);
|
||||
</p>
|
||||
status = cdevSend("NLQ1","read current",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 "verb attribute", 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 "monitorOn xxx" and
|
||||
"monitorOff xxx".
|
||||
<!*** Finish Body ***!></p></font>
|
||||
<table>
|
||||
<tr><td width=5% valign=top>
|
||||
</td>
|
||||
<td valign=top>
|
||||
<!*** Start Indented ***!><font size=+2 color=Black>
|
||||
status = cdevSendCallback("deviceName", "monitorOn attributeName",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("cdevDirectory", "query",
|
||||
</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 "value" tag.
|
||||
</p>
|
||||
|
||||
<!*** Finish Body ***!></p></font>
|
||||
</td></tr>
|
||||
</table>
|
||||
</body>
|
||||
Executable
+4336
File diff suppressed because it is too large
Load Diff
Executable
+864
@@ -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 "proxy" 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 "server" 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 "REGISTER SERVER" 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 "get","set", "monitorOn" and "monitorOff"
|
||||
* commands on attributes "attrib0" and "attrib1". Note that
|
||||
* requests made to attrib0 will be routed through "Gateway1"
|
||||
* and requests made to attrib1 will be routed through
|
||||
* "Gateway2".
|
||||
*/
|
||||
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>
|
||||
Executable
+1968
File diff suppressed because it is too large
Load Diff
Executable
+8150
File diff suppressed because it is too large
Load Diff
Executable
+949
@@ -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 "filename" 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; "send",
|
||||
"sendNoBlock" and "sendCallback". Because of limits imposed on the number of
|
||||
active processes, the user is advised to use the synchronous "send" 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 "done"
|
||||
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 "end" alone on a line to the
|
||||
standard output between each packet, and write "done" 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 "status" 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 "done" 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="string value"
|
||||
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="Test"\\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: "value1" "value2" "value3"
|
||||
|
||||
String representation provided to script:
|
||||
value={"value1","value2","value3"}\\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 "echo" command or the "printf" 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, "<em>Structure of Data Provided to the Script</em>". 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 "<em>end</em>" or "<em>done</em>" 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 "<em>done</em>" 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 "status" 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=\\"Test\\"
|
||||
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 "<em>end</em>" keyword on a line by itself. The "<em>done</em>"
|
||||
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=\\"Start Result 1\\"
|
||||
echo status=0
|
||||
echo end
|
||||
echo value=\\"Start Result 2\\"
|
||||
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 "<em>done"</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>"done"</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 "get and "set" commands on attributes "attrib0"
|
||||
* and "attrib1". 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>
|
||||
Executable
+6349
File diff suppressed because it is too large
Load Diff
Executable
+9738
File diff suppressed because it is too large
Load Diff
Executable
+589
@@ -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
|
||||
<Return></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, "<em>debug on</em>", "<em>debug off</em>", and
|
||||
<em>"quit</em>". 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:> cdevUtil "debug on" "IPM1S01 set VAL value=25.0" "quit"
|
||||
|
||||
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:>
|
||||
<!*** 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:> cdevUtil
|
||||
>
|
||||
> SUCCESS: Device: IPM1S01 - Message: get VAL - Value: 0
|
||||
>
|
||||
> SUCCESS: Device: IPM1S01 - Message: set VAL - Value: None
|
||||
>
|
||||
host1:>
|
||||
<!*** 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 <Return></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:> cddl ~mccops/ddl/master.ddl -o master.bdd
|
||||
converted from ascii to binary ddl file!
|
||||
host1:>
|
||||
<!*** 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>
|
||||
Executable
+807
@@ -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>
|
||||
"Multiknob" 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>
|
||||
Executable
+918
@@ -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>
|
||||
"Multiknob" 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>
|
||||
Executable
+1145
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user