Class QualityCode
- All Implemented Interfaces:
Serializable
The 32-bits are arranged as follows: First two bits represent the level
0b00 GOOD 0b01 UNCERTAIN 0b10 BAD 0b11 RESERVED
The next 14 bits are reserved, and NOT CURRENTLY USED.
The lower 16 bits represent the meaning of the code.
Inductive Automation reserves the first 1024 codes(0x0000 through 0x03FF) for codes that it will define. By convention, our codes are broken up into four bands within the range of 0 through 1023.
- Values 0-255 are "good" codes.
- Values 256-511 are "uncertain" codes
- Values 512 - 767 are "bad" codes that represent a condition that should have been expected (something didn't work in a way that was entirely predictable, like a device was not connected)
- Values 768 - 1023 are "worse" bad quality and represent an unambiguous error state - something must be changed.
Third parties may use codes 1024 through 65535 (0x0400 through 0xFFFF) for their own codes, although doing so will tend to cause very generic "good / bad" representations of the quality.
The (optional) diagnosticMessage field in this class is used to add contextual information about the circumstance in which the quality code was generated. It is NOT meant to be the name or description of the quality code. In many cases, only the code will be stored / transferred for efficiency, and the diagnostic message may be lost in the long term (e.g. if the code is stored as part of tag history)
- See Also:
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final QualityCode
General quality for a bad value.static final QualityCode
Data requested requires credentials not held by requesting user.static final QualityCode
Requested aggregate was not found.static final QualityCode
A database connection required for this value is not connected.static final QualityCode
Data source is not currently enabled.static final QualityCode
A "failure" code was received from the underlying system.static final QualityCode
Connection to the Ignition gateway is currently turned off.static final QualityCode
A license limit has been exceeded.static final QualityCode
A connection required for this value is not currently connected.static final QualityCode
Object requested was not found.static final QualityCode
This value has exceeded its allowed range.static final QualityCode
A write was attempted on a read only target.static final QualityCode
Derived or referenced value required an object which was not found.static final QualityCode
Data is out-of-date based upon the requested refresh interval.static final QualityCode
The trial mode's timer has expired.static final QualityCode
An unauthorized request was made for data that requires authorization.static final QualityCode
The operation is not supported by the target.static final QualityCode
An unexpected error occurred while retrieving or calculating this value.static final QualityCode
The source of this value is not configured correctly.static final QualityCode
Calculating the value involved an execution cycle.static final QualityCode
A database query required for this value caused an error upon execution.static final QualityCode
An exception was caught, and logged in the relevant system.static final QualityCode
The source expression was unable to be executed.static final QualityCode
Attempted formatting (numeric, date formatting) failed.static final QualityCode
A path (tag path, property path, etc) was not able to be parsed because the syntax is invalid.static final QualityCode
An input/output error occurred while attempting to retrieve or calculate this value.static final QualityCode
A script needed to create this value failed to execute.static final QualityCode
The source tag could not be executed.static final QualityCode
An asynchronous operation failed due to a timeout.static final QualityCode
The actual value was not able to be coerced into the configured data type for the source of this value.static final QualityCode
This is the standard good value in the Ignition code base, but continues to use the legacy 192 user code.static final QualityCode
Used to indicate good quality values that have arrived out of order.static final QualityCode
Special flag simply indicates that this is an initial/seed value for a system just starting up.static final QualityCode
Good data that is being sampled slower than requested due to resource limitations.static final QualityCode
Good data that should not be considered valid long-term.static final QualityCode
General quality for good data.static final QualityCode
Special value used when an underlying data source is being written to.static final QualityCode
An unspecified degree of uncertainty exists in this value.static final QualityCode
Insufficient good-quality sources required for the derivation of this value.static final QualityCode
Used to indicate that a value has gone beyond its configured engineering units.static final QualityCode
An asynchronous operation is currently pending and its result is unknown.static final QualityCode
Used to indicate that a subscription has been made and a good value should be arriving shortly.static final QualityCode
The current value is unavailable, this represents the last known good value. -
Constructor Summary
ConstructorsConstructorDescriptionQualityCode
(int code) QualityCode
(int code, String diagnosticMessage) QualityCode
(QualityCode copy) QualityCode
(QualityCode.Level level, int userCode) QualityCode
(QualityCode.Level level, int userCode, String diagnosticMessage) QualityCode
(QualityCode copy, String diagnosticMessage) -
Method Summary
Modifier and TypeMethodDescriptionReturns a QualityCode with the same underlying code, but the specifieddiagnosticMessage
.boolean
int
getCode()
static String
getCodeName
(int code) static String
getCodeName
(QualityCode code) static com.inductiveautomation.ignition.common.gson.JsonObject
getLevel()
static QualityCode.Level
getLevel
(int code) static QualityCode.Level
getLevel
(QualityCode code) getName()
static QualityCode
getQualityFor
(int code) static QualityCode
getQualityFor
(String name) static QualityCode
getQualityFromUserCode
(int code) boolean
is
(QualityCode other) Helper function that compares the integer code of the given quality to this one.boolean
isBad()
boolean
boolean
isError()
boolean
isGood()
boolean
isNot
(QualityCode other) Helper function that compares the integer code of the given quality to this one.boolean
boolean
toString()
toValue()
Returns this quality as the quality component of a qualified value.static QualityCode[]
values()
static QualityCode
worstOf
(QualityCode a, QualityCode b) static QualityCode
worstOfAll
(QualityCode... q)
-
Field Details
-
Good_Unspecified
General quality for good data. -
Good_WritePending
Special value used when an underlying data source is being written to. -
Good
This is the standard good value in the Ignition code base, but continues to use the legacy 192 user code. The Good_Unspecified quality code with subcode 0 would be the "modern" base good value. -
Good_Provisional
Good data that should not be considered valid long-term. Do not cache. We make it a bigger user code than "Good" so that worstOf considers it worse... -
Good_Initial
Special flag simply indicates that this is an initial/seed value for a system just starting up. -
Good_Overload
Good data that is being sampled slower than requested due to resource limitations. -
Good_Backfill
Used to indicate good quality values that have arrived out of order. Different systems can choose to process them accordingly. -
Uncertain
An unspecified degree of uncertainty exists in this value. Good luck! -
Uncertain_LastKnownValue
The current value is unavailable, this represents the last known good value. -
Uncertain_InitialValue
Used to indicate that a subscription has been made and a good value should be arriving shortly. -
Uncertain_DataSubNormal
Insufficient good-quality sources required for the derivation of this value. -
Uncertain_EngineeringUnitsExceeded
Used to indicate that a value has gone beyond its configured engineering units. -
Uncertain_IncompleteOperation
An asynchronous operation is currently pending and its result is unknown. -
Bad
General quality for a bad value. -
Bad_Unauthorized
An unauthorized request was made for data that requires authorization. -
Bad_AccessDenied
Data requested requires credentials not held by requesting user. -
Bad_Disabled
Data source is not currently enabled. -
Bad_Stale
Data is out-of-date based upon the requested refresh interval. -
Bad_TrialExpired
The trial mode's timer has expired. -
Bad_LicenseExceeded
A license limit has been exceeded. -
Bad_NotFound
Object requested was not found. -
Bad_ReferenceNotFound
Derived or referenced value required an object which was not found. -
Bad_AggregateNotFound
Requested aggregate was not found. -
Bad_NotConnected
A connection required for this value is not currently connected. -
Bad_GatewayCommOff
Connection to the Ignition gateway is currently turned off. -
Bad_OutOfRange
This value has exceeded its allowed range. -
Bad_DatabaseNotConnected
A database connection required for this value is not connected. -
Bad_ReadOnly
A write was attempted on a read only target. -
Bad_Failure
A "failure" code was received from the underlying system. Additional details may be in the diagnostic message. This generally doesn't not indicate an exception, which would be handled by Error_Exception, but instead a simple failure from a system that can return success or failure. -
Bad_Unsupported
The operation is not supported by the target. -
Error
An unexpected error occurred while retrieving or calculating this value. -
Error_Configuration
The source of this value is not configured correctly. -
Error_ExpressionEval
The source expression was unable to be executed. -
Error_TagExecution
The source tag could not be executed. -
Error_TypeConversion
The actual value was not able to be coerced into the configured data type for the source of this value. -
Error_DatabaseQuery
A database query required for this value caused an error upon execution. -
Error_IO
An input/output error occurred while attempting to retrieve or calculate this value. -
Error_TimeoutExpired
An asynchronous operation failed due to a timeout. -
Error_Exception
An exception was caught, and logged in the relevant system. -
Error_InvalidPathSyntax
A path (tag path, property path, etc) was not able to be parsed because the syntax is invalid. -
Error_Formatting
Attempted formatting (numeric, date formatting) failed. -
Error_ScriptEval
A script needed to create this value failed to execute. -
Error_CycleDetected
Calculating the value involved an execution cycle.
-
-
Constructor Details
-
QualityCode
-
QualityCode
-
QualityCode
-
QualityCode
-
QualityCode
public QualityCode(int code) -
QualityCode
-
-
Method Details
-
getCode
public int getCode() -
getDiagnosticMessage
- Returns:
- the diagnostic message associated with this quality, if present. Otherwise, null.
-
isGood
public boolean isGood()- Returns:
- true if this code represents a good quality
-
isUncertain
public boolean isUncertain()- Returns:
- true if this code is uncertain level (but _not_ bad or error)
-
isBad
public boolean isBad()- Returns:
- true if this code is bad level (but _not_ error or uncertain)
-
isError
public boolean isError()- Returns:
- true if this code is error level (but _not_ bad or uncertain)
-
isNotGood
public boolean isNotGood()- Returns:
- true if this code is uncertain, bad, or error
-
isBadOrError
public boolean isBadOrError()- Returns:
- true if this code is bad or error
-
toString
-
getLevel
-
getLevel
-
getLevel
-
getCodeName
- Returns:
- the name of the given code, if known. Otherwise, returns the code's severity and its numeric value.
-
getCodeName
- Returns:
- the name of the given code, if known. Otherwise, returns the code's severity and its numeric value.
-
getCodesJson
public static com.inductiveautomation.ignition.common.gson.JsonObject getCodesJson()- Returns:
- a JSON object whose keys are code numbers and whose values are the code names
-
worstOf
-
worstOfAll
-
derive
Returns a QualityCode with the same underlying code, but the specifieddiagnosticMessage
.- Parameters:
diagnosticMessage
- the diagnostic message.- Returns:
- a QualityCode with the same underlying code, but the specified
diagnosticMessage
.
-
equals
-
is
Helper function that compares the integer code of the given quality to this one. -
isNot
Helper function that compares the integer code of the given quality to this one. -
getName
- Returns:
- the name of the given code, if known. Otherwise, returns the code's severity and its numeric value.
-
getQualityFor
-
getQualityFromUserCode
-
getQualityFor
-
values
-
toValue
Returns this quality as the quality component of a qualified value.
-