LRAUV  revA
UniversalDataElement.h
Go to the documentation of this file.
1 
10 #ifndef UNIVERSALDATAELEMENT_H_
11 #define UNIVERSALDATAELEMENT_H_
12 
13 #include "DataElement.h"
14 
30 {
31 public:
36  UniversalDataElement( const UniversalURI& name, const DataValue* dataValue );
37 
39  virtual ~UniversalDataElement();
40 
41  // Get the DataValue for this DataElement.
45  virtual DataValue* getDataValue( void ) const;
46 
51  virtual float getAccuracy( const Unit& unit ) const throw( UninitializedException );
52 
57  virtual float getWrittenAccuracy( const Unit& unit ) const;
58 
66  virtual bool isOrphaned( void ) const;
67 
68  //== Functions specific to the aggregator aspects of UniversalDataElement ==
69 
73  void addElement( DataElement& element );
74 
75  virtual bool isUniversal( ) const
76  {
77  return true;
78  }
79 
81  void notifyChangeDone( Component* notifier );
82  void notifyChangeDone( DataWriter* notifier );
83 
87  void recalculate( void );
88 
90 
95  virtual bool wasTouchedSinceLastRun( const Component* component );
96 
98  virtual const Timestamp& getTimestamp() const;
99 
102  bool isDataRequested( DataElement* element );
103 
105  bool isAnyDataRequested();
106 
107 protected:
108 
111  virtual float setAccuracy( const Unit& unit, float accuracy );
112 
113  virtual void setDataValue( DataValue* dataValue )
114  {}
115 
118 
121 
124 
127 
130 
132  //DataValue *defaultValue_;
133 
137  float accuracy_;
138 
141 
143  virtual float getBaseAccuracy() const
144  {
145  return accuracy_;
146  }
147 
148 private:
149  // Note that the copy constructor below is private and not given a body.
150  // Any attempt to call it will return a compiler error.
151  UniversalDataElement( const UniversalDataElement& old ); // disallow copy constructor
152 
153 };
154 
155 #endif /*UNIVERSALDATAELEMENT_H_*/
UniversalDataElement(const UniversalURI &name, const DataValue *dataValue)
Constructor for a universal DataElement.
Definition: UniversalDataElement.cpp:17
DataElement * minPowerElement_
The current "minPower" DataElement.
Definition: UniversalDataElement.h:120
bool isAnyDataRequested()
Returns true if one of the registered readers is requesting data.
Definition: UniversalDataElement.cpp:291
virtual ~UniversalDataElement()
Destructor.
Definition: UniversalDataElement.cpp:30
Implementation of a DataElement as a "UniversalDataElement".
Definition: UniversalDataElement.h:29
DataElement * bestElement_
The current "best" DataElement (minError and enabled).
Definition: UniversalDataElement.h:117
virtual float setAccuracy(const Unit &unit, float accuracy)
Protected function.
Definition: UniversalDataElement.cpp:234
virtual const Timestamp & getTimestamp() const
Returns the timestamp of last write.
Definition: UniversalDataElement.cpp:225
void notifyChangeDone(Component *notifier)
Causes the universal to be recalculated, if a change is pending.
Definition: UniversalDataElement.cpp:86
A DataValue is an abstract base class for a data value and associated engineering units of the value...
Definition: DataValue.h:35
DataElement * minErrorElement_
The current "minError" DataElement.
Definition: UniversalDataElement.h:123
A DataAccessor that writes values to the Slate via its associated DataElement.
Definition: DataWriter.h:27
DataElementList elementList_
List of participating DataElements.
Definition: UniversalDataElement.h:140
Code unit that represents a unique name for a measured quantity.
Definition: UniversalURI.h:29
Contains the DataElement class definition.
virtual bool isUniversal() const
Definition: UniversalDataElement.h:75
void addElement(DataElement &element)
Adds the given DataElement to the list of participants in this Universal.
Definition: UniversalDataElement.cpp:80
bool isDataRequested()
Returns true if one of the registered readers is requesting data.
Definition: DataElement.cpp:179
virtual bool isOrphaned(void) const
Implements the UniversalDataElement's sense of "orphaned." A UniversalDataElement is orphaned if it h...
Definition: UniversalDataElement.cpp:74
virtual float getAccuracy(const Unit &unit) const
Get the current DataElement accuracy.
Definition: UniversalDataElement.cpp:46
virtual DataValue * getDataValue(void) const
Implements the pure virtual from DataElement.
Definition: UniversalDataElement.cpp:34
void recalculate(void)
Reevaluate all participants and choose a new best solution.
Definition: UniversalDataElement.cpp:107
virtual bool wasTouchedSinceLastRun(const Component *component)
Returns true if the value was touched since the last run of the indicated component.
Definition: UniversalDataElement.cpp:215
Abstract Base class for software components.
Definition: Component.h:53
Definition: DataAccessor.h:45
float accuracy_
The defaultValue_ to use if there if the Universal can't find a "best value".
Definition: UniversalDataElement.h:137
virtual float getWrittenAccuracy(const Unit &unit) const
Get the last written DataElement accuracy.
Definition: UniversalDataElement.cpp:62
DataElement * maxFrequencyElement_
The current "maxFrequency" DataElement.
Definition: UniversalDataElement.h:129
DataElement * getBestElement(DataAccessor::RequestStrategy strategy=DataAccessor::MIN_ERROR) const
Definition: UniversalDataElement.cpp:241
virtual float getBaseAccuracy() const
Returns the accuracy in base, unscaled SI units.
Definition: UniversalDataElement.h:143
DataElement * minLatencyElement_
The current "minLatency" DataElement.
Definition: UniversalDataElement.h:126
Definition: DataElement.h:49
Code that represents an engineering unit.
Definition: Unit.h:24
virtual void setDataValue(DataValue *dataValue)
Definition: UniversalDataElement.h:113
Represents absolute times.
Definition: Timestamp.h:31
Abstact base class for one "element" of the Slate.
Definition: DataElement.h:37
RequestStrategy
Definition: DataAccessor.h:41