support for alarm status, timeStamp.userTag, and alarm limits

This commit is contained in:
Marty Kraimer
2011-10-21 10:37:37 -04:00
parent 2f71c5cf85
commit 4048a7eaa5
29 changed files with 452 additions and 141 deletions
+69 -31
View File
@@ -9,7 +9,7 @@
<body>
<h1 style="text-align: center">EPICS pvDataCPP<br />
2011.05.11</h1>
2011.10.20</h1>
<p>TODO</p>
<ul>
@@ -23,9 +23,9 @@
<div class="toc">
<ul>
<li><a href="#L45">Preface</a>
<li><a href="#L45">Preface</a>
<ul>
<li><a href="#L72">pvData</a>
<li><a href="#L72">pvData</a>
<ul>
<li><a href="#L76">Introspection</a></li>
<li><a href="#L144">Data</a></li>
@@ -37,33 +37,33 @@
</ul>
</li>
<li><a href="#L307">Introduction</a></li>
<li><a href="#L399">PVData Meta Language</a>
<li><a href="#L399">PVData Meta Language</a>
<ul>
<li><a href="#L405">Definition</a></li>
<li><a href="#L604">Example</a></li>
</ul>
</li>
<li><a href="#L616">PV - User Description</a>
<li><a href="#L616">PV - User Description</a>
<ul>
<li><a href="#L620">Overview</a></li>
<li><a href="#L661">pvType</a></li>
<li><a href="#L697">Process Variable Reflection</a>
<li><a href="#L697">Process Variable Reflection</a>
<ul>
<li><a href="#L705">Type Description</a></li>
<li><a href="#L835">Reflection Description</a></li>
</ul>
</li>
<li><a href="#L1050">Standard Fields</a></li>
<li><a href="#L1134">PVField - Data Interfaces</a>
<li><a href="#L1134">PVField - Data Interfaces</a>
<ul>
<li><a href="#L1138">PVField</a></li>
<li><a href="#L1248">PVAuxInfo</a></li>
<li><a href="#L1282">PVScalar and extensions</a>
<li><a href="#L1282">PVScalar and extensions</a>
<ul>
<li><a href="#L1286">Primitive PVField types</a></li>
</ul>
</li>
<li><a href="#L1292">PVArray and Extensions</a>
<li><a href="#L1292">PVArray and Extensions</a>
<ul>
<li><a href="#L1331">PVArray Extensions</a></li>
</ul>
@@ -77,10 +77,10 @@
<li><a href="#L1550">Convert</a></li>
</ul>
</li>
<li><a href="#L1620">Namespace and Memory Management</a>
<li><a href="#L1620">Namespace and Memory Management</a>
<ul>
<li><a href="#L1624">Namespace</a></li>
<li><a href="#L1675">Memory Managemment</a>
<li><a href="#L1675">Memory Managemment</a>
<ul>
<li><a href="#L1677">NoDefaultMethods</a></li>
</ul>
@@ -90,36 +90,36 @@
<li><a href="#L1693">Other code in this project</a></li>
</ul>
</li>
<li><a href="#L1701">Examples</a>
<li><a href="#L1701">Examples</a>
<ul>
<li><a href="#L1705">Accessing PVData</a></li>
<li><a href="#L1724">Creating PVData</a></li>
</ul>
</li>
<li><a href="#L1744">Property</a>
<li><a href="#L1744">Property</a>
<ul>
<li><a href="#L1748">Definition of Property</a></li>
<li><a href="#L1760">Standard Properties</a></li>
<li><a href="#L1841">Overview of Property Support</a></li>
<li><a href="#L1861">timeStamp</a>
<li><a href="#L1861">timeStamp</a>
<ul>
<li><a href="#L1885">timeStamp.h</a></li>
<li><a href="#L1989">pvTimeStamp.h</a></li>
</ul>
</li>
<li><a href="#L2029">alarm</a>
<li><a href="#L2029">alarm</a>
<ul>
<li><a href="#L2056">alarm.h</a></li>
<li><a href="#L2103">pvAlarm.h</a></li>
</ul>
</li>
<li><a href="#L2143">control</a>
<li><a href="#L2143">control</a>
<ul>
<li><a href="#L2165">control.h</a></li>
<li><a href="#L2197">pvControl.h</a></li>
</ul>
</li>
<li><a href="#L2237">display</a>
<li><a href="#L2237">display</a>
<ul>
<li><a href="#L2259">display.h</a></li>
<li><a href="#L2321">pvDisplay.h</a></li>
@@ -129,7 +129,7 @@
</ul>
</li>
<li><a href="#L2437">PVData Factories</a></li>
<li><a href="#L2470">Miscellanous Classes</a>
<li><a href="#L2470">Miscellanous Classes</a>
<ul>
<li><a href="#L2474">Overview</a></li>
<li><a href="#L2566">BitSet</a></li>
@@ -139,7 +139,7 @@
<li><a href="#L2735">Executor</a></li>
<li><a href="#L2766">Linked List</a></li>
<li><a href="#L2880">Lock and Mutex</a></li>
<li><a href="#L2896">Message Queue</a>
<li><a href="#L2896">Message Queue</a>
<ul>
<li><a href="#L2898">Definitions</a></li>
<li><a href="#L2902">MessageQueue</a></li>
@@ -151,7 +151,7 @@
<li><a href="#L3052">CDRMonitor - Monitor and Report Construction and
Destruction</a></li>
<li><a href="#L3058">Status</a></li>
<li><a href="#L3105">Thread</a>
<li><a href="#L3105">Thread</a>
<ul>
<li><a href="#L3107">ThreadPriority</a></li>
<li><a href="#L3111">Thread</a></li>
@@ -162,7 +162,7 @@
<li><a href="#L3251">Queue</a></li>
</ul>
</li>
<li><a href="#L3314">pvMisc</a>
<li><a href="#L3314">pvMisc</a>
<ul>
<li><a href="#L3318">BitSetUtil</a></li>
<li><a href="#L3348">MultiChoice</a></li>
@@ -2297,7 +2297,8 @@ stack. For example the following is permitted:</p>
<p>A timeStamp is represented by the following structure</p>
<pre>structure timeStamp
int64 secondsPartEpoch
int32 nanoSeconds</pre>
int32 nanoSeconds
int32 userTag</pre>
<p>The Epoch is the posix epoch, i.e. Jan 1, 1970 00:00:00 UTC. Both the
seconds and nanoSeconds are signed integers and thus can be negative. Since the
@@ -2338,6 +2339,8 @@ public:
int64 getSecondsPastEpoch();
int64 getEpicsSecondsPastEpoch() const;
int32 getNanoSeconds() const;
int32 getUserTag() const;
void setUserTag(int userTag);
void put(int64 secondsPastEpoch,int32 nanoSeconds = 0);
void put(int64 milliseconds);
void getCurrent();
@@ -2377,6 +2380,12 @@ public:
00:00:00 UTC as the epoch.</dd>
<dt style="font-family: courier;">getNanoSeconds</dt>
<dd>Get the number of nanoSeconds. This is always normalized.</dd>
<dt><span
style="font-family: Courier New,Courier,monospace">getUserTag</span></dt>
<dd>Get the userTag.</dd>
<dt><span
style="font-family: Courier New,Courier,monospace">setUserTag</span></dt>
<dd>Set the userTag.</dd>
<dt style="font-family: courier;">put(int64 secondsPastEpoch,int32
nanoSeconds = 0)</dt>
<dd>Set the timeStamp value. If necessary it will be normalized.</dd>
@@ -2464,13 +2473,14 @@ public:
<p>An alarm structure is defined as follows:</p>
<pre>structure alarm
int32 severity
int32 status
String message</pre>
<p>Note that severity is NOT defined as an enumerated structure. The reason is
performance, i. e. prevent passing the array of choice strings everywhere. The
file <span style="font-family: courier;">alarm.h</span> provides the choice
strings. Thus all code that needs to know about alarms share the exact same
choice strings.</p>
<p>Note that neither severity or status is defined as an enumerated structure.
The reason is performance, i. e. prevent passing the array of choice strings
everywhere. The file <span style="font-family: courier;">alarm.h</span>
provides the choice strings. Thus all code that needs to know about alarms
share the exact same choice strings.</p>
<p>Two header files are provided for manipulating alarms: <span
style="font-family: courier;">alarm.h</span> and <span
@@ -2483,15 +2493,27 @@ Alarm as defined by <span style="font-family: courier;">alarm.h</span></p>
<h4 id="L2056">alarm.h</h4>
<pre>enum AlarmSeverity {
noAlarm,minorAlarm,majorAlarm,invalidAlarm
noAlarm,minorAlarm,majorAlarm,invalidAlarm,undefinedAlarm
};
enum AlarmStatus {
noStatus,deviceStatus,driverStatus,recordStatus,
dbStatus,confStatus,undefinedStatus,clientStatus
};
class AlarmSeverityFunc {
public:
static AlarmSeverity getSeverity(int value);
static StringArray getSeverityNames();
};
enum AlarmStatus {
noStatus,deviceStatus,driverStatus,recordStatus,
dbStatus,confStatus,undefinedStatus,clientStatus
};
class Alarm {
public:
Alarm();
@@ -2500,11 +2522,11 @@ public:
void setMessage(String value);
AlarmSeverity getSeverity() const;
void setSeverity(AlarmSeverity value);
AlarmStatus getStatus() const;
void setStatus(AlarmStatus value);
};</pre>
<p>Alarm Severity defines the possible alarm severities</p>
<p>AlarmSeverity has the methods:</p>
<p>Alarm Severity defines the possible alarm severities:</p>
<dl>
<dt style="font-family: courier;">getSeverity</dt>
<dd>Get the alarm severity corresponding to the integer value.</dd>
@@ -2512,6 +2534,16 @@ public:
<dd>Get the array of severity choices.</dd>
</dl>
<p>Alarm Status defines the possible choices for alarm status:</p>
<dl>
<dt><span
style="font-family: Courier New,Courier,monospace">getStatus</span></dt>
<dd>Get the alarm status corresponding to the integer value.</dd>
<dt><span
style="font-family: Courier New,Courier,monospace">getStatusNames</span></dt>
<dd>Get the array of status choices.</dd>
</dl>
<p>Alarm has the methods:</p>
<dl>
<dt style="font-family: courier;">Alarm</dt>
@@ -2525,6 +2557,12 @@ public:
<dd>Get the severity.</dd>
<dt style="font-family: courier;">setSeverity</dt>
<dd>Set the severity.</dd>
<dt><span
style="font-family: Courier New,Courier,monospace">getStatus</span></dt>
<dd>Get the status.</dd>
<dt><span
style="font-family: Courier New,Courier,monospace">setStatus</span></dt>
<dd>Set the status.</dd>
</dl>
<h4 id="L2103">pvAlarm.h</h4>