10 #ifndef DATAELEMENT_H_
11 #define DATAELEMENT_H_
61 const char*
what()
const throw()
64 return "DataElement not active";
147 virtual bool isActive(
void )
const;
249 virtual bool get(
DataReader &reader,
const Unit& unit,
bool& readTo )
throw( UninitializedException );
250 virtual bool get(
DataReader &reader,
const Unit& unit,
unsigned char& readTo )
throw( UninitializedException );
251 virtual bool get(
DataReader &reader,
const Unit& unit,
double& readTo )
throw( UninitializedException );
252 virtual bool get(
DataReader &reader,
const Unit& unit,
float& readTo )
throw( UninitializedException );
253 virtual bool get(
DataReader &reader,
const Unit& unit,
int &readTo )
throw( UninitializedException );
260 virtual const int asInt(
DataReader &reader,
const Unit& unit )
throw( UninitializedException );
267 virtual float getAccuracy(
const Unit& unit )
const throw( UninitializedException ) = 0;
444 baseUnit_ = baseUnit;
452 typeSize_ = typeSize;
FlexArray< DataWriter * > writers_
List of all registered DataWriters.
Definition: DataElement.h:397
bool hasReaders(void) const
Does this DataElement have any readers?
Definition: DataElement.h:200
Serializable representation of DataAccessor object.
Definition: DataAccess.h:30
void setPower(float power)
Power used by the component that owns this element.
Definition: DataElement.h:359
void registerChangeDone(void)
Definition: DataElement.cpp:718
virtual const Unit * getBaseUnit()
The base unit that all writers and readers must use when accessing this value.
Definition: DataElement.h:317
void registerChangePending(DataWriter *writer)
Definition: DataElement.cpp:727
virtual bool isOwnersActive(void) const
Definition: DataElement.cpp:101
void registerReader(DataReader *reader)
Add the given DataReader to the list of readers for this DataElement.
Definition: DataElement.cpp:154
virtual bool isOwnersFailed(void) const
Definition: DataElement.cpp:76
bool isImplemented()
Returns true if there is a non-failed "implementor" reader of this element.
Definition: DataElement.cpp:199
Implementation of a DataElement as a "UniversalDataElement".
Definition: UniversalDataElement.h:29
Contains the DataReader class definition.
UniversalDataElement * getUniversal(void) const
Returns the universal data element registered to this data element.
Definition: DataElement.h:177
bool hasBeenSet_
Flag – false until the first call to set done.
Definition: DataElement.h:437
bool setInvalid(bool invalid, DataWriter *notifier)
Set the element's invalid flag.
Definition: DataElement.cpp:651
virtual void setBaseUnit(const Unit *baseUnit)
Definition: DataElement.h:442
virtual bool isUniversal() const
Definition: DataElement.h:161
float writtenAccuracy_
Accuracy of last written value.
Definition: DataElement.h:415
float getFrequency()
Frequency of measurements possible.
Definition: DataElement.h:353
A DataAccessor that reads values from the Slate Contains a default dataValue that must not be NULL...
Definition: DataReader.h:30
const ElementURI & getUri(void) const
Get the full ElementURI for the DataElement.
Definition: DataElement.cpp:58
float latency_
Latency involved in requesting a measurement.
Definition: DataElement.h:459
virtual bool isInvalid(void) const
Is the element "invalid".
Definition: DataElement.cpp:71
A simple pthread Mutex abstraction.
Definition: Mutex.h:20
Contains the UniversalURI class definition.
virtual const int asInt(DataReader &reader, const Unit &unit)
Definition: DataElement.cpp:338
bool setUnavailable(bool unavailable, DataWriter *notifier)
Set the element's unavailable flag.
Definition: DataElement.cpp:614
const double getScaled(const double &siValue) const
Definition: Unit.cpp:63
virtual bool isOrphaned(void) const
Returns the value of the element's "orphand" flag.
Definition: DataElement.cpp:96
virtual void registerRead(DataReader &reader)
Definition: DataElement.cpp:700
A DataValue is an abstract base class for a data value and associated engineering units of the value...
Definition: DataValue.h:35
virtual bool isActive(void) const
Indicates if the element is "active".
Definition: DataElement.cpp:120
float frequency_
Frequency of measurements possible.
Definition: DataElement.h:462
A DataAccessor that writes values to the Slate via its associated DataElement.
Definition: DataWriter.h:27
Provides a simple command line interface to the LRAUV.
Definition: CommandLine.h:38
unsigned int writerCount() const
Number of writers registered to this DataElement.
Definition: DataElement.cpp:252
Extends the Str class, adding an unsigned short code (actually, the codes are limited to 14 bits...
Definition: CodedStr.h:23
Contains the FlexArrayBase and FlexArray class declarations.
virtual void setTypeSize(const size_t typeSize)
Definition: DataElement.h:450
bool isDataRequested()
Returns true if one of the registered readers is requesting data.
Definition: DataElement.cpp:179
static const Timestamp NOT_SET_TIME
Constant value to represent "no time".
Definition: Timestamp.h:37
virtual bool isActivatable(void) const
Indicates if the element is capable of being "active".
Definition: DataElement.cpp:125
virtual const Str asString(DataReader &reader, const Unit &unit)
Definition: DataElement.cpp:347
Code unit that represents an atomic unit of data destined for writing in the log file.
Definition: DataEntry.h:43
FlexArray< DataReader * > readers_
List of all registered DataReaders.
Definition: DataElement.h:398
virtual const Timestamp & getTimestamp() const
Returns the timestamp of last write.
Definition: DataElement.h:90
FlexArray< DataElement * > DataElementList
Definition: DataElement.h:471
DataElement(const ElementURI &name, const Unit *baseUnit, size_t typeSize)
Protected constructor for base class.
Definition: DataElement.cpp:740
virtual bool isUnavailable(void) const
Is the element "unavailable".
Definition: DataElement.cpp:66
bool unavailable_
The "unavailable" flag is actually a simple boolean which is set by the user or by the DataElement it...
Definition: DataElement.h:402
void registerUniversal(UniversalDataElement *abstract)
Indicates this DataElement should participate in the selection process for the given Universal...
Definition: DataElement.cpp:144
void registerWriter(DataWriter *writer)
Add the given writer to the list of registered writers for this DataElement.
Definition: DataElement.cpp:219
float getPower()
Power used by the component that owns this element.
Definition: DataElement.h:335
Replacement for standard template class string.
Definition: Str.h:12
virtual ~DataElement()
Destructor.
Definition: DataElement.cpp:26
UniversalDataElement * universal_
Queue of UniversalElements which this DataElement "participates in".
Definition: DataElement.h:391
size_t typeSize_
The base size that all writers must specify.
Definition: DataElement.h:448
virtual bool setWithAccuracy(DataWriter &writer, const Unit &unit, const bool value, const float accuracy, const Timestamp ×tamp=Timestamp::NOT_SET_TIME)
Set w/ Accuracy functions.
Definition: DataElement.cpp:549
void setLatency(float latency)
Latency involved in requesting a measurement.
Definition: DataElement.h:365
Abstract Base class for software components.
Definition: Component.h:53
Definition: DataAccessor.h:45
virtual void setTimestamp(const Timestamp ×tamp=Timestamp::NOT_SET_TIME)
Sets the timestamp of last write Used if a more acurate timestamp is available.
Definition: DataElement.cpp:689
void setFrequency(float frequency)
Frequency of measurements possible.
Definition: DataElement.h:371
virtual size_t getTypeSize()
The base size that all writers must specify.
Definition: DataElement.h:323
virtual float getWrittenAccuracy(const Unit &unit) const
Returns the accuracy at the time of the last write;.
Definition: DataElement.h:271
DataReader * findReader(const ElementURI &uri)
Returns the DataReader associated with this DataElement and the specified ElementURI.
Definition: DataElement.cpp:29
float getError()
Error in measurements.
Definition: DataElement.h:341
unsigned int readerCount() const
The number of readers currently registered to this DataElement.
Definition: DataElement.cpp:173
Contains the Mutex, ThreadCondition, and MutexLocker class declarations.
virtual bool setAccuracy(DataWriter &writer, const Unit &unit, const float accuracy)
Set just the accuracy.
Definition: DataElement.cpp:583
bool setWrittenAccuracy()
Called before set commands to update the written accuracy Returns true if the written accuracy has ch...
Definition: DataElement.cpp:764
void unregisterWriter(DataWriter *writer)
Remove the given writer from the list of registered writers for this DataElement. ...
Definition: DataElement.cpp:232
Contains the DataWriter class definition.
Code unit that represents the slate.
Definition: Slate.h:73
virtual bool wasTouchedSinceLastRun(const Component *component)
Returns true if the value was touched since the last run of the indicated component.
Definition: DataElement.cpp:732
virtual float getAccuracy(const Unit &unit) const =0
Access to get the current accuracy.
virtual float getBaseAccuracy() const =0
Returns the accuracy in base, unscaled SI units.
virtual void setDataValue(DataValue *dataValue)=0
bool isBest(DataAccessor::RequestStrategy strategy=DataAccessor::MIN_ERROR) const
Indicates if the element is the "best" of a set of measurements that feed into a universal.
Definition: DataElement.cpp:130
void unregisterReader(DataReader *reader)
Remove the given DataReader from the list of reader for this DataElement.
Definition: DataElement.cpp:160
bool invalid_
The "invalid" flag is actually a simple boolean which is set by the user or by the DataElement itself...
Definition: DataElement.h:406
Contains the DataValue class definition.
bool wasOrphaned_
Indicates that the element was previously orphaned.
Definition: DataElement.h:409
ElementURI name_
The DataElement ElementURI.
Definition: DataElement.h:385
bool hasWriters(void) const
Does this DataElement have any writers?
Definition: DataElement.h:229
Definition: DataElement.h:49
Code unit that represents a unique name for a DataElement.
Definition: ElementURI.h:27
const Unit * baseUnit_
The base unit that all writers and readers must use when accessing this value.
Definition: DataElement.h:440
float power_
Power used by the component that owns this element.
Definition: DataElement.h:456
float getLatency()
Latency involved in requesting a measurement.
Definition: DataElement.h:347
virtual void registerWrite(DataWriter &writer, bool changed)
Definition: DataElement.cpp:705
const char * what() const
Definition: DataElement.h:61
Timestamp timestamp_
Timestamp of last write.
Definition: DataElement.h:418
DataWriter * findWriter(const ElementURI &uri)
Returns the DataWriter associated with this DataElement and the specified ElementURI.
Definition: DataElement.cpp:42
const Unit * getUnit(void) const
Returns the Unit associated with this data element or NULL if no Unit is associated.
Definition: DataElement.cpp:136
virtual ~UninitializedException()
Definition: DataElement.h:58
Code that represents an engineering unit.
Definition: Unit.h:24
DataWriter * notifier_
The data writer responsable for notifying this element's Universal data element that a change is pend...
Definition: DataElement.h:395
virtual DataValue * getDataValue(void) const =0
Provides access to the an Element's DataValue.
virtual bool set(DataWriter &writer, const Unit &unit, const bool value, const Timestamp ×tamp=Timestamp::NOT_SET_TIME)
Set functions set int value.
Definition: DataElement.cpp:390
Serializes and unserializes mission state to allow missions to be resumed.
Definition: MissionStateLogger.h:35
Represents absolute times.
Definition: Timestamp.h:31
static const float NO_ACCURACY
Defines an accuracy quantity which means "no accuracy specified" typically means "don't use" i...
Definition: DataElement.h:73
virtual const double asDouble(DataReader &reader, const Unit &unit)
Definition: DataElement.cpp:329
UninitializedException()
Definition: DataElement.h:52
Abstact base class for one "element" of the Slate.
Definition: DataElement.h:37
Mutex mutex_
Mutex for thread-safing an instance of DataElement.
Definition: DataElement.h:412
RequestStrategy
Definition: DataAccessor.h:41