opendnp3  2.2.0
Reference implementation of DNP3 (IEEE-1815)
opendnp3 Namespace Reference

Namespaces

 flags
 
 levels
 
 measurements
 

Classes

class  Analog
 Analogs are used for variable data points that usually reflect a real world value. More...
 
class  AnalogCommandEvent
 Occurs when an outstation receives and analog command. More...
 
class  AnalogConfig
 
struct  AnalogInfo
 
class  AnalogOutput
 The object to represent a setpoint request from the master. More...
 
class  AnalogOutputDouble64
 Double precision analog output. More...
 
class  AnalogOutputFloat32
 Single precision analog output. More...
 
class  AnalogOutputInt16
 16-bit signed integer analog output. More...
 
class  AnalogOutputInt32
 32-bit signed integer analog output. More...
 
class  AnalogOutputStatus
 Describes the last set value of the set-point. More...
 
struct  AnalogOutputStatusInfo
 
struct  AnalogOutputStatusSpec
 
struct  AnalogSpec
 
class  AOStatusConfig
 
class  ApplicationIIN
 Some IIN bits are necessarily controlled by the outstation application, not the underlying protocol stack. More...
 
class  Binary
 The Binary data type is for describing on-off (boolean) type values. More...
 
class  BinaryCommandEvent
 Maps to Group13Var1/2. More...
 
class  BinaryConfig
 
struct  BinaryInfo
 
class  BinaryOutputStatus
 BinaryOutputStatus is used for describing the current state of a control. More...
 
class  BinaryOutputStatusInfo
 
struct  BinaryOutputStatusSpec
 
struct  BinarySpec
 
class  BOStatusConfig
 
struct  Cell
 Holds particular measurement type in the database. More...
 
class  ClassField
 Specifies a set of event classes e.g. More...
 
class  CommandPointResult
 Represents the result of a command operation on a particular point. More...
 
class  CommandSet
 Provides a mechanism for building a set of one or more command headers. More...
 
class  ControlRelayOutputBlock
 Describes an incoming control request from the master. More...
 
struct  Count
 A template for an integer count. More...
 
class  Counter
 Counters are used for describing generally increasing values (non-negative!). More...
 
class  CounterConfig
 
struct  CounterInfo
 
struct  CounterSpec
 
struct  DatabaseSizes
 Specifies the number and type of measurements in an outstation database. More...
 
struct  DeadbandConfig
 
struct  DeadbandEventCell
 Structure for holding metadata information on points that have support deadbanding. More...
 
class  DefaultOutstationApplication
 A singleton with default setting useful for examples. More...
 
class  DoubleBitBinary
 The Double-bit Binary data type has two stable states, on and off, and an in transit state. More...
 
class  DoubleBitBinaryConfig
 
struct  DoubleBitBinaryInfo
 
struct  DoubleBitBinarySpec
 
struct  EmptyEventCell
 A null object for types that have no metadata. More...
 
struct  EventBufferConfig
 Configuration of maximum event counts per event type. More...
 
struct  EventCellBase
 Base class for different types of event metadata. More...
 
struct  EventConfig
 
class  Flags
 Measurement Flags. More...
 
class  FrozenCounter
 Frozen counters are used to report the value of a counter point captured at the instant when the count is frozen. More...
 
class  FrozenCounterConfig
 
struct  FrozenCounterInfo
 
struct  FrozenCounterSpec
 
class  FunctorVisitor
 A visitor implemented as an abstract functor. More...
 
struct  GroupVariationID
 Simple uint8_t/uint8_t tuple for group and variation. More...
 
class  Header
 Class used to specify a header type. More...
 
class  HeaderInfo
 Simple structure used in the ISOEHandler callbacks to return information about the associated header. More...
 
union  HeaderUnion
 Union type that holds information for a single header type. More...
 
class  ICollection
 An interface representing an abstract immutable collection of things of type T. More...
 
class  ICommandCollection
 A collection type for command to which the user can add by type and index. More...
 
class  ICommandHandler
 Interface used to dispatch SELECT / OPERATE / DIRECT OPERATE (Binary/Analog output) from the outstation to application code. More...
 
class  ICommandProcessor
 Interface used to dispatch SELECT / OPERATE / DIRECT OPERATE from application code to a master. More...
 
class  ICommandTaskResult
 Abstract result type returned via callback to a command operation. More...
 
class  IINField
 DNP3 two-byte IIN field. More...
 
class  ILinkListener
 Various optional callbacks that can be received for the link layer. More...
 
class  IMasterApplication
 Interface for all master application callback info except for measurement values. More...
 
struct  IndexConfig
 
class  Indexed
 A simple tuple for pairing Values with an index. More...
 
class  IOutstationApplication
 Interface for all outstation application callback info except for control requests. More...
 
class  ISOEHandler
 An interface for Sequence-Of-Events (SOE) callbacks from a master stack to the application layer. More...
 
class  ITaskCallback
 Callbacks for when a task starts and completes. More...
 
class  ITransactable
 Something that can be performed atomically or needing Start()/End() signals. More...
 
class  IUpdateHandler
 An interface used to update measurement values. More...
 
class  IVisitor
 Abstract way of visiting elements of a collection. More...
 
struct  LinkConfig
 Configuration for the dnp3 link layer. More...
 
struct  LinkHeaderFields
 
struct  LinkStatistics
 Counters for the channel and the DNP3 link layer. More...
 
struct  MasterParams
 Configuration information for the dnp3 master. More...
 
class  Measurement
 Base class shared by all of the DataPoint types. More...
 
class  OctetData
 A base-class for bitstrings containing up to 255 bytes. More...
 
class  OctetString
 Respresents group 110/111 objects. More...
 
struct  OutstationConfig
 Configuration information for a dnp3 outstation (outstation) More...
 
struct  OutstationParams
 Static configuration parameters for an outstation session. More...
 
class  RestartOperationResult
 
class  SecurityStat
 SA security statistic object as used by the API. More...
 
class  SecurityStatConfig
 
struct  SecurityStatInfo
 
struct  SecurityStatSpec
 
struct  SelectedValue
 Type used to record whether a value is requested in a response. More...
 
class  SimpleCommandHandler
 Mock ICommandHandler used for examples and demos. More...
 
struct  SimpleEventCell
 Metatype w/o a deadband. More...
 
struct  StackStatistics
 Statistics related to both a master or outstation session. More...
 
struct  StartStopRange
 A template for a integer range. More...
 
struct  StaticConfig
 
struct  StaticTypeBitField
 A bitfield that describes a subset of all static types, e.g. More...
 
class  SuccessCommandHandler
 A singleton command handler that always returns success. More...
 
class  TaskConfig
 Object containing multiple fields for configuring tasks. More...
 
class  TaskId
 Interface that represents a running master. More...
 
class  TaskInfo
 Struct that provides information about a completed or failed task. More...
 
class  TimeAndInterval
 Maps to Group50Var4 This class is a bit of an outlier as an indexed type and is really only used in the DNP3 PV profile. More...
 
class  TimeAndIntervalConfig
 
struct  TimeAndIntervalInfo
 
struct  TimeAndIntervalSpec
 
class  Transaction
 Uses RAII to safely perform a transaction. More...
 
class  TypedMeasurement
 Common subclass to analogs and counters. More...
 

Typedefs

typedef std::function< void(const ICommandTaskResult &)> CommandCallbackT
 
typedef openpal::UInt48Type DNPTime
 
typedef std::function< void(const RestartOperationResult &)> RestartOperationCallbackT
 
typedef std::function< void(const Header &)> WriteHeaderFunT
 

Enumerations

enum  AnalogOutputStatusQuality : uint8_t {
  AnalogOutputStatusQuality::ONLINE = 0x1, AnalogOutputStatusQuality::RESTART = 0x2, AnalogOutputStatusQuality::COMM_LOST = 0x4, AnalogOutputStatusQuality::REMOTE_FORCED = 0x8,
  AnalogOutputStatusQuality::LOCAL_FORCED = 0x10, AnalogOutputStatusQuality::OVERRANGE = 0x20, AnalogOutputStatusQuality::REFERENCE_ERR = 0x40, AnalogOutputStatusQuality::RESERVED = 0x80
}
 Quality field bitmask for analog output status values. More...
 
enum  AnalogQuality : uint8_t {
  AnalogQuality::ONLINE = 0x1, AnalogQuality::RESTART = 0x2, AnalogQuality::COMM_LOST = 0x4, AnalogQuality::REMOTE_FORCED = 0x8,
  AnalogQuality::LOCAL_FORCED = 0x10, AnalogQuality::OVERRANGE = 0x20, AnalogQuality::REFERENCE_ERR = 0x40, AnalogQuality::RESERVED = 0x80
}
 Quality field bitmask for analog values. More...
 
enum  AssignClassType : uint8_t {
  AssignClassType::BinaryInput = 0x0, AssignClassType::DoubleBinaryInput = 0x1, AssignClassType::Counter = 0x2, AssignClassType::FrozenCounter = 0x3,
  AssignClassType::AnalogInput = 0x4, AssignClassType::BinaryOutputStatus = 0x5, AssignClassType::AnalogOutputStatus = 0x6
}
 groups that can be used inconjunction with the ASSIGN_CLASS function code More...
 
enum  AuthErrorCode : uint8_t {
  AuthErrorCode::AUTHENTICATION_FAILED = 0x1, AuthErrorCode::AGGRESSIVE_MODE_UNSUPPORTED = 0x4, AuthErrorCode::MAC_NOT_SUPPORTED = 0x5, AuthErrorCode::KEY_WRAP_NOT_SUPPORTED = 0x6,
  AuthErrorCode::AUTHORIZATION_FAILED = 0x7, AuthErrorCode::UPDATE_KEY_METHOD_NOT_PERMITTED = 0x8, AuthErrorCode::INVALID_SIGNATURE = 0x9, AuthErrorCode::INVALID_CERTIFICATION_DATA = 0xA,
  AuthErrorCode::UNKNOWN_USER = 0xB, AuthErrorCode::MAX_SESSION_KEY_STATUS_REQUESTS_EXCEEDED = 0xC, AuthErrorCode::UNKNOWN = 0x0
}
 Specifies the reason that an auth error message was transmitted. More...
 
enum  BinaryOutputStatusQuality : uint8_t {
  BinaryOutputStatusQuality::ONLINE = 0x1, BinaryOutputStatusQuality::RESTART = 0x2, BinaryOutputStatusQuality::COMM_LOST = 0x4, BinaryOutputStatusQuality::REMOTE_FORCED = 0x8,
  BinaryOutputStatusQuality::LOCAL_FORCED = 0x10, BinaryOutputStatusQuality::RESERVED1 = 0x20, BinaryOutputStatusQuality::RESERVED2 = 0x40, BinaryOutputStatusQuality::STATE = 0x80
}
 Quality field bitmask for binary output status values. More...
 
enum  BinaryQuality : uint8_t {
  BinaryQuality::ONLINE = 0x1, BinaryQuality::RESTART = 0x2, BinaryQuality::COMM_LOST = 0x4, BinaryQuality::REMOTE_FORCED = 0x8,
  BinaryQuality::LOCAL_FORCED = 0x10, BinaryQuality::CHATTER_FILTER = 0x20, BinaryQuality::RESERVED = 0x40, BinaryQuality::STATE = 0x80
}
 Quality field bitmask for binary values. More...
 
enum  CertificateType : uint8_t { CertificateType::ID_CERTIFICATE = 0x1, CertificateType::ATTRIBUTE_CERTIFICATE = 0x2, CertificateType::UNKNOWN = 0x0 }
 Specifies the reason that an auth error message was transmitted. More...
 
enum  ChallengeReason : uint8_t { ChallengeReason::CRITICAL = 0x1, ChallengeReason::UNKNOWN = 0xFF }
 Enumerates reasons for a sec-auth challenge. More...
 
enum  ChannelState : uint8_t { ChannelState::CLOSED = 0, ChannelState::OPENING = 1, ChannelState::OPEN = 2, ChannelState::SHUTDOWN = 3 }
 Enumeration for possible states of a channel. More...
 
enum  CommandPointState : uint8_t {
  CommandPointState::INIT = 0, CommandPointState::SELECT_SUCCESS = 1, CommandPointState::SELECT_MISMATCH = 2, CommandPointState::SELECT_FAIL = 3,
  CommandPointState::OPERATE_FAIL = 4, CommandPointState::SUCCESS = 5
}
 List the various states that an individual command object can be in after an SBO or direct operate request. More...
 
enum  CommandStatus : uint8_t {
  CommandStatus::SUCCESS = 0, CommandStatus::TIMEOUT = 1, CommandStatus::NO_SELECT = 2, CommandStatus::FORMAT_ERROR = 3,
  CommandStatus::NOT_SUPPORTED = 4, CommandStatus::ALREADY_ACTIVE = 5, CommandStatus::HARDWARE_ERROR = 6, CommandStatus::LOCAL = 7,
  CommandStatus::TOO_MANY_OPS = 8, CommandStatus::NOT_AUTHORIZED = 9, CommandStatus::AUTOMATION_INHIBIT = 10, CommandStatus::PROCESSING_LIMITED = 11,
  CommandStatus::OUT_OF_RANGE = 12, CommandStatus::DOWNSTREAM_LOCAL = 13, CommandStatus::ALREADY_COMPLETE = 14, CommandStatus::BLOCKED = 15,
  CommandStatus::CANCELLED = 16, CommandStatus::BLOCKED_OTHER_MASTER = 17, CommandStatus::DOWNSTREAM_FAIL = 18, CommandStatus::NON_PARTICIPATING = 126,
  CommandStatus::UNDEFINED = 127
}
 An enumeration of result codes received from an outstation in response to command request. More...
 
enum  ConfigAuthMode : uint8_t { ConfigAuthMode::NONE = 0x0, ConfigAuthMode::SAV5 = 0x1 }
 Configuration enum for the authentication mode. More...
 
enum  ControlCode : uint8_t {
  ControlCode::NUL = 0x0, ControlCode::NUL_CANCEL = 0x20, ControlCode::PULSE_ON = 0x1, ControlCode::PULSE_ON_CANCEL = 0x21,
  ControlCode::PULSE_OFF = 0x2, ControlCode::PULSE_OFF_CANCEL = 0x22, ControlCode::LATCH_ON = 0x3, ControlCode::LATCH_ON_CANCEL = 0x23,
  ControlCode::LATCH_OFF = 0x4, ControlCode::LATCH_OFF_CANCEL = 0x24, ControlCode::CLOSE_PULSE_ON = 0x41, ControlCode::CLOSE_PULSE_ON_CANCEL = 0x61,
  ControlCode::TRIP_PULSE_ON = 0x81, ControlCode::TRIP_PULSE_ON_CANCEL = 0xA1, ControlCode::UNDEFINED = 0xFF
}
 Defines the interoperable values of the Control Code Refer to pages 506-510 of 1815 for a full description. More...
 
enum  CounterQuality : uint8_t {
  CounterQuality::ONLINE = 0x1, CounterQuality::RESTART = 0x2, CounterQuality::COMM_LOST = 0x4, CounterQuality::REMOTE_FORCED = 0x8,
  CounterQuality::LOCAL_FORCED = 0x10, CounterQuality::ROLLOVER = 0x20, CounterQuality::DISCONTINUITY = 0x40, CounterQuality::RESERVED = 0x80
}
 Quality field bitmask for counter values. More...
 
enum  DoubleBit : uint8_t { DoubleBit::INTERMEDIATE = 0x0, DoubleBit::DETERMINED_OFF = 0x1, DoubleBit::DETERMINED_ON = 0x2, DoubleBit::INDETERMINATE = 0x3 }
 Enumeration for possible states of a double bit value. More...
 
enum  DoubleBitBinaryQuality : uint8_t {
  DoubleBitBinaryQuality::ONLINE = 0x1, DoubleBitBinaryQuality::RESTART = 0x2, DoubleBitBinaryQuality::COMM_LOST = 0x4, DoubleBitBinaryQuality::REMOTE_FORCED = 0x8,
  DoubleBitBinaryQuality::LOCAL_FORCED = 0x10, DoubleBitBinaryQuality::CHATTER_FILTER = 0x20, DoubleBitBinaryQuality::STATE1 = 0x40, DoubleBitBinaryQuality::STATE2 = 0x80
}
 Quality field bitmask for double bit binary values. More...
 
enum  EventAnalogOutputStatusVariation : uint8_t {
  EventAnalogOutputStatusVariation::Group42Var1 = 0, EventAnalogOutputStatusVariation::Group42Var2 = 1, EventAnalogOutputStatusVariation::Group42Var3 = 2, EventAnalogOutputStatusVariation::Group42Var4 = 3,
  EventAnalogOutputStatusVariation::Group42Var5 = 4, EventAnalogOutputStatusVariation::Group42Var6 = 5, EventAnalogOutputStatusVariation::Group42Var7 = 6, EventAnalogOutputStatusVariation::Group42Var8 = 7
}
 
enum  EventAnalogVariation : uint8_t {
  EventAnalogVariation::Group32Var1 = 0, EventAnalogVariation::Group32Var2 = 1, EventAnalogVariation::Group32Var3 = 2, EventAnalogVariation::Group32Var4 = 3,
  EventAnalogVariation::Group32Var5 = 4, EventAnalogVariation::Group32Var6 = 5, EventAnalogVariation::Group32Var7 = 6, EventAnalogVariation::Group32Var8 = 7
}
 
enum  EventBinaryOutputStatusVariation : uint8_t { EventBinaryOutputStatusVariation::Group11Var1 = 0, EventBinaryOutputStatusVariation::Group11Var2 = 1 }
 
enum  EventBinaryVariation : uint8_t { EventBinaryVariation::Group2Var1 = 0, EventBinaryVariation::Group2Var2 = 1, EventBinaryVariation::Group2Var3 = 2 }
 
enum  EventClass : uint8_t { EventClass::EC1 = 0, EventClass::EC2 = 1, EventClass::EC3 = 2 }
 
enum  EventCounterVariation : uint8_t { EventCounterVariation::Group22Var1 = 0, EventCounterVariation::Group22Var2 = 1, EventCounterVariation::Group22Var5 = 2, EventCounterVariation::Group22Var6 = 3 }
 
enum  EventDoubleBinaryVariation : uint8_t { EventDoubleBinaryVariation::Group4Var1 = 0, EventDoubleBinaryVariation::Group4Var2 = 1, EventDoubleBinaryVariation::Group4Var3 = 2 }
 
enum  EventFrozenCounterVariation : uint8_t { EventFrozenCounterVariation::Group23Var1 = 0, EventFrozenCounterVariation::Group23Var2 = 1, EventFrozenCounterVariation::Group23Var5 = 2, EventFrozenCounterVariation::Group23Var6 = 3 }
 
enum  EventMode : uint8_t { EventMode::Detect = 0x0, EventMode::Force = 0x1, EventMode::Suppress = 0x2 }
 Describes how a transaction behaves with respect to event generation. More...
 
enum  EventSecurityStatVariation : uint8_t { EventSecurityStatVariation::Group122Var1 = 0, EventSecurityStatVariation::Group122Var2 = 1 }
 
enum  EventType : uint16_t {
  EventType::Binary = 0, EventType::Analog = 1, EventType::Counter = 2, EventType::FrozenCounter = 3,
  EventType::DoubleBitBinary = 4, EventType::BinaryOutputStatus = 5, EventType::AnalogOutputStatus = 6, EventType::SecurityStat = 7
}
 
enum  FlagsType : uint8_t {
  FlagsType::DoubleBinaryInput = 0x1, FlagsType::Counter = 0x2, FlagsType::FrozenCounter = 0x3, FlagsType::AnalogInput = 0x4,
  FlagsType::BinaryOutputStatus = 0x5, FlagsType::AnalogOutputStatus = 0x6, FlagsType::BinaryInput = 0x0
}
 enumerates all types that have flags More...
 
enum  FlowControl : uint8_t { FlowControl::Hardware = 1, FlowControl::XONXOFF = 2, FlowControl::None = 0 }
 Enumeration for setting serial port flow control. More...
 
enum  FrozenCounterQuality : uint8_t {
  FrozenCounterQuality::ONLINE = 0x1, FrozenCounterQuality::RESTART = 0x2, FrozenCounterQuality::COMM_LOST = 0x4, FrozenCounterQuality::REMOTE_FORCED = 0x8,
  FrozenCounterQuality::LOCAL_FORCED = 0x10, FrozenCounterQuality::ROLLOVER = 0x20, FrozenCounterQuality::DISCONTINUITY = 0x40, FrozenCounterQuality::RESERVED = 0x80
}
 Quality field bitmask for frozen counter values. More...
 
enum  FunctionCode : uint8_t {
  FunctionCode::CONFIRM = 0x0, FunctionCode::READ = 0x1, FunctionCode::WRITE = 0x2, FunctionCode::SELECT = 0x3,
  FunctionCode::OPERATE = 0x4, FunctionCode::DIRECT_OPERATE = 0x5, FunctionCode::DIRECT_OPERATE_NR = 0x6, FunctionCode::IMMED_FREEZE = 0x7,
  FunctionCode::IMMED_FREEZE_NR = 0x8, FunctionCode::FREEZE_CLEAR = 0x9, FunctionCode::FREEZE_CLEAR_NR = 0xA, FunctionCode::FREEZE_AT_TIME = 0xB,
  FunctionCode::FREEZE_AT_TIME_NR = 0xC, FunctionCode::COLD_RESTART = 0xD, FunctionCode::WARM_RESTART = 0xE, FunctionCode::INITIALIZE_DATA = 0xF,
  FunctionCode::INITIALIZE_APPLICATION = 0x10, FunctionCode::START_APPLICATION = 0x11, FunctionCode::STOP_APPLICATION = 0x12, FunctionCode::SAVE_CONFIGURATION = 0x13,
  FunctionCode::ENABLE_UNSOLICITED = 0x14, FunctionCode::DISABLE_UNSOLICITED = 0x15, FunctionCode::ASSIGN_CLASS = 0x16, FunctionCode::DELAY_MEASURE = 0x17,
  FunctionCode::RECORD_CURRENT_TIME = 0x18, FunctionCode::OPEN_FILE = 0x19, FunctionCode::CLOSE_FILE = 0x1A, FunctionCode::DELETE_FILE = 0x1B,
  FunctionCode::GET_FILE_INFO = 0x1C, FunctionCode::AUTHENTICATE_FILE = 0x1D, FunctionCode::ABORT_FILE = 0x1E, FunctionCode::AUTH_REQUEST = 0x20,
  FunctionCode::AUTH_REQUEST_NO_ACK = 0x21, FunctionCode::RESPONSE = 0x81, FunctionCode::UNSOLICITED_RESPONSE = 0x82, FunctionCode::AUTH_RESPONSE = 0x83,
  FunctionCode::UNKNOWN = 0xFF
}
 Application layer function code enumeration. More...
 
enum  GroupVariation : uint16_t {
  GroupVariation::Group1Var0 = 0x100, GroupVariation::Group1Var1 = 0x101, GroupVariation::Group1Var2 = 0x102, GroupVariation::Group2Var0 = 0x200,
  GroupVariation::Group2Var1 = 0x201, GroupVariation::Group2Var2 = 0x202, GroupVariation::Group2Var3 = 0x203, GroupVariation::Group3Var0 = 0x300,
  GroupVariation::Group3Var1 = 0x301, GroupVariation::Group3Var2 = 0x302, GroupVariation::Group4Var0 = 0x400, GroupVariation::Group4Var1 = 0x401,
  GroupVariation::Group4Var2 = 0x402, GroupVariation::Group4Var3 = 0x403, GroupVariation::Group10Var0 = 0xA00, GroupVariation::Group10Var1 = 0xA01,
  GroupVariation::Group10Var2 = 0xA02, GroupVariation::Group11Var0 = 0xB00, GroupVariation::Group11Var1 = 0xB01, GroupVariation::Group11Var2 = 0xB02,
  GroupVariation::Group12Var0 = 0xC00, GroupVariation::Group12Var1 = 0xC01, GroupVariation::Group13Var1 = 0xD01, GroupVariation::Group13Var2 = 0xD02,
  GroupVariation::Group20Var0 = 0x1400, GroupVariation::Group20Var1 = 0x1401, GroupVariation::Group20Var2 = 0x1402, GroupVariation::Group20Var5 = 0x1405,
  GroupVariation::Group20Var6 = 0x1406, GroupVariation::Group21Var0 = 0x1500, GroupVariation::Group21Var1 = 0x1501, GroupVariation::Group21Var2 = 0x1502,
  GroupVariation::Group21Var5 = 0x1505, GroupVariation::Group21Var6 = 0x1506, GroupVariation::Group21Var9 = 0x1509, GroupVariation::Group21Var10 = 0x150A,
  GroupVariation::Group22Var0 = 0x1600, GroupVariation::Group22Var1 = 0x1601, GroupVariation::Group22Var2 = 0x1602, GroupVariation::Group22Var5 = 0x1605,
  GroupVariation::Group22Var6 = 0x1606, GroupVariation::Group23Var0 = 0x1700, GroupVariation::Group23Var1 = 0x1701, GroupVariation::Group23Var2 = 0x1702,
  GroupVariation::Group23Var5 = 0x1705, GroupVariation::Group23Var6 = 0x1706, GroupVariation::Group30Var0 = 0x1E00, GroupVariation::Group30Var1 = 0x1E01,
  GroupVariation::Group30Var2 = 0x1E02, GroupVariation::Group30Var3 = 0x1E03, GroupVariation::Group30Var4 = 0x1E04, GroupVariation::Group30Var5 = 0x1E05,
  GroupVariation::Group30Var6 = 0x1E06, GroupVariation::Group32Var0 = 0x2000, GroupVariation::Group32Var1 = 0x2001, GroupVariation::Group32Var2 = 0x2002,
  GroupVariation::Group32Var3 = 0x2003, GroupVariation::Group32Var4 = 0x2004, GroupVariation::Group32Var5 = 0x2005, GroupVariation::Group32Var6 = 0x2006,
  GroupVariation::Group32Var7 = 0x2007, GroupVariation::Group32Var8 = 0x2008, GroupVariation::Group40Var0 = 0x2800, GroupVariation::Group40Var1 = 0x2801,
  GroupVariation::Group40Var2 = 0x2802, GroupVariation::Group40Var3 = 0x2803, GroupVariation::Group40Var4 = 0x2804, GroupVariation::Group41Var0 = 0x2900,
  GroupVariation::Group41Var1 = 0x2901, GroupVariation::Group41Var2 = 0x2902, GroupVariation::Group41Var3 = 0x2903, GroupVariation::Group41Var4 = 0x2904,
  GroupVariation::Group42Var0 = 0x2A00, GroupVariation::Group42Var1 = 0x2A01, GroupVariation::Group42Var2 = 0x2A02, GroupVariation::Group42Var3 = 0x2A03,
  GroupVariation::Group42Var4 = 0x2A04, GroupVariation::Group42Var5 = 0x2A05, GroupVariation::Group42Var6 = 0x2A06, GroupVariation::Group42Var7 = 0x2A07,
  GroupVariation::Group42Var8 = 0x2A08, GroupVariation::Group43Var1 = 0x2B01, GroupVariation::Group43Var2 = 0x2B02, GroupVariation::Group43Var3 = 0x2B03,
  GroupVariation::Group43Var4 = 0x2B04, GroupVariation::Group43Var5 = 0x2B05, GroupVariation::Group43Var6 = 0x2B06, GroupVariation::Group43Var7 = 0x2B07,
  GroupVariation::Group43Var8 = 0x2B08, GroupVariation::Group50Var1 = 0x3201, GroupVariation::Group50Var4 = 0x3204, GroupVariation::Group51Var1 = 0x3301,
  GroupVariation::Group51Var2 = 0x3302, GroupVariation::Group52Var1 = 0x3401, GroupVariation::Group52Var2 = 0x3402, GroupVariation::Group60Var1 = 0x3C01,
  GroupVariation::Group60Var2 = 0x3C02, GroupVariation::Group60Var3 = 0x3C03, GroupVariation::Group60Var4 = 0x3C04, GroupVariation::Group70Var1 = 0x4601,
  GroupVariation::Group70Var2 = 0x4602, GroupVariation::Group70Var3 = 0x4603, GroupVariation::Group70Var4 = 0x4604, GroupVariation::Group70Var5 = 0x4605,
  GroupVariation::Group70Var6 = 0x4606, GroupVariation::Group70Var7 = 0x4607, GroupVariation::Group70Var8 = 0x4608, GroupVariation::Group80Var1 = 0x5001,
  GroupVariation::Group110Var0 = 0x6E00, GroupVariation::Group111Var0 = 0x6F00, GroupVariation::Group112Var0 = 0x7000, GroupVariation::Group113Var0 = 0x7100,
  GroupVariation::Group120Var1 = 0x7801, GroupVariation::Group120Var2 = 0x7802, GroupVariation::Group120Var3 = 0x7803, GroupVariation::Group120Var4 = 0x7804,
  GroupVariation::Group120Var5 = 0x7805, GroupVariation::Group120Var6 = 0x7806, GroupVariation::Group120Var7 = 0x7807, GroupVariation::Group120Var8 = 0x7808,
  GroupVariation::Group120Var9 = 0x7809, GroupVariation::Group120Var10 = 0x780A, GroupVariation::Group120Var11 = 0x780B, GroupVariation::Group120Var12 = 0x780C,
  GroupVariation::Group120Var13 = 0x780D, GroupVariation::Group120Var14 = 0x780E, GroupVariation::Group120Var15 = 0x780F, GroupVariation::Group121Var0 = 0x7900,
  GroupVariation::Group121Var1 = 0x7901, GroupVariation::Group122Var0 = 0x7A00, GroupVariation::Group122Var1 = 0x7A01, GroupVariation::Group122Var2 = 0x7A02,
  GroupVariation::UNKNOWN = 0xFFFF
}
 Comprehensive list of supported groups and variations. More...
 
enum  HeaderType : uint8_t {
  HeaderType::AllObjects, HeaderType::Ranged8, HeaderType::Ranged16, HeaderType::LimitedCount8,
  HeaderType::LimitedCount16
}
 An enumeration that defines the type of object header. More...
 
enum  HMACType : uint8_t {
  HMACType::NO_MAC_VALUE = 0x0, HMACType::HMAC_SHA1_TRUNC_10 = 0x2, HMACType::HMAC_SHA256_TRUNC_8 = 0x3, HMACType::HMAC_SHA256_TRUNC_16 = 0x4,
  HMACType::HMAC_SHA1_TRUNC_8 = 0x5, HMACType::AES_GMAC = 0x6, HMACType::UNKNOWN = 0xFF
}
 Enumerates possible algorithms used to calculate the HMAC. More...
 
enum  IINBit {
  IINBit::ALL_STATIONS = 0, IINBit::CLASS1_EVENTS, IINBit::CLASS2_EVENTS, IINBit::CLASS3_EVENTS,
  IINBit::NEED_TIME, IINBit::LOCAL_CONTROL, IINBit::DEVICE_TROUBLE, IINBit::DEVICE_RESTART,
  IINBit::FUNC_NOT_SUPPORTED, IINBit::OBJECT_UNKNOWN, IINBit::PARAM_ERROR, IINBit::EVENT_BUFFER_OVERFLOW,
  IINBit::ALREADY_EXECUTING, IINBit::CONFIG_CORRUPT, IINBit::RESERVED1, IINBit::RESERVED2 = 15
}
 
enum  IndexMode : uint8_t { IndexMode::Contiguous = 0x0, IndexMode::Discontiguous = 0x1 }
 Select contiguous or dis-contiguous index mode. More...
 
enum  IntervalUnits : uint8_t {
  IntervalUnits::NoRepeat = 0x0, IntervalUnits::Milliseconds = 0x1, IntervalUnits::Seconds = 0x2, IntervalUnits::Minutes = 0x3,
  IntervalUnits::Hours = 0x4, IntervalUnits::Days = 0x5, IntervalUnits::Weeks = 0x6, IntervalUnits::Months7 = 0x7,
  IntervalUnits::Months8 = 0x8, IntervalUnits::Months9 = 0x9, IntervalUnits::Seasons = 0xA, IntervalUnits::Undefined = 0x7F
}
 Time internal units. More...
 
enum  KeyChangeMethod : uint8_t {
  KeyChangeMethod::AES_128_SHA1_HMAC = 0x3, KeyChangeMethod::AES_256_SHA256_HMAC = 0x4, KeyChangeMethod::AES_256_AES_GMAC = 0x5, KeyChangeMethod::RSA_1024_DSA_SHA1_HMAC_SHA1 = 0x43,
  KeyChangeMethod::RSA_2048_DSA_SHA256_HMAC_SHA256 = 0x44, KeyChangeMethod::RSA_3072_DSA_SHA256_HMAC_SHA256 = 0x45, KeyChangeMethod::RSA_2048_DSA_SHA256_AES_GMAC = 0x46, KeyChangeMethod::RSA_3072_DSA_SHA256_AES_GMAC = 0x47,
  KeyChangeMethod::UNDEFINED = 0x0
}
 Enumerates possible algorithms for changing the update key. More...
 
enum  KeyStatus : uint8_t {
  KeyStatus::OK = 0x1, KeyStatus::NOT_INIT = 0x2, KeyStatus::COMM_FAIL = 0x3, KeyStatus::AUTH_FAIL = 0x4,
  KeyStatus::UNDEFINED = 0x0
}
 Describes the status of the two session keys as known by the outstation. More...
 
enum  KeyWrapAlgorithm : uint8_t { KeyWrapAlgorithm::AES_128 = 0x1, KeyWrapAlgorithm::AES_256 = 0x2, KeyWrapAlgorithm::UNDEFINED = 0x0 }
 Enumerates possible key-wrap algorithms. More...
 
enum  LinkFunction : uint8_t {
  LinkFunction::PRI_RESET_LINK_STATES = 0x40, LinkFunction::PRI_TEST_LINK_STATES = 0x42, LinkFunction::PRI_CONFIRMED_USER_DATA = 0x43, LinkFunction::PRI_UNCONFIRMED_USER_DATA = 0x44,
  LinkFunction::PRI_REQUEST_LINK_STATUS = 0x49, LinkFunction::SEC_ACK = 0x0, LinkFunction::SEC_NACK = 0x1, LinkFunction::SEC_LINK_STATUS = 0xB,
  LinkFunction::SEC_NOT_SUPPORTED = 0xF, LinkFunction::INVALID = 0xFF
}
 Link layer function code enumeration. More...
 
enum  LinkStatus : uint8_t { LinkStatus::UNRESET = 0, LinkStatus::RESET = 1 }
 Enumeration for reset/unreset states of a link layer. More...
 
enum  MasterTaskType : uint8_t {
  MasterTaskType::CLEAR_RESTART = 0, MasterTaskType::DISABLE_UNSOLICITED = 1, MasterTaskType::ASSIGN_CLASS = 2, MasterTaskType::STARTUP_INTEGRITY_POLL = 3,
  MasterTaskType::SERIAL_TIME_SYNC = 4, MasterTaskType::ENABLE_UNSOLICITED = 5, MasterTaskType::AUTO_EVENT_SCAN = 6, MasterTaskType::USER_TASK = 7,
  MasterTaskType::SET_SESSION_KEYS = 8
}
 Enumeration of internal tasks. More...
 
enum  OperateType : uint8_t { OperateType::SelectBeforeOperate = 0x0, OperateType::DirectOperate = 0x1, OperateType::DirectOperateNoAck = 0x2 }
 Various ways that an outstation can receive a request to operate a BO or AO point. More...
 
enum  Parity : uint8_t { Parity::Even = 1, Parity::Odd = 2, Parity::None = 0 }
 Enumeration for setting serial port parity. More...
 
enum  PointClass : uint8_t { PointClass::Class0 = 0x1, PointClass::Class1 = 0x2, PointClass::Class2 = 0x4, PointClass::Class3 = 0x8 }
 Class assignment for a measurement point. More...
 
enum  QualifierCode : uint8_t {
  QualifierCode::UINT8_START_STOP = 0x0, QualifierCode::UINT16_START_STOP = 0x1, QualifierCode::ALL_OBJECTS = 0x6, QualifierCode::UINT8_CNT = 0x7,
  QualifierCode::UINT16_CNT = 0x8, QualifierCode::UINT8_CNT_UINT8_INDEX = 0x17, QualifierCode::UINT16_CNT_UINT16_INDEX = 0x28, QualifierCode::UINT16_FREE_FORMAT = 0x5B,
  QualifierCode::UNDEFINED = 0xFF
}
 Object header range/prefix as a single enumeration. More...
 
enum  RestartMode : uint8_t { RestartMode::UNSUPPORTED = 0, RestartMode::SUPPORTED_DELAY_FINE = 1, RestartMode::SUPPORTED_DELAY_COARSE = 2 }
 Enumeration describing restart mode support of an outstation. More...
 
enum  RestartType : uint8_t { RestartType::COLD = 0, RestartType::WARM = 1 }
 Enumeration describing restart operation to perform on an outstation. More...
 
enum  SecurityStatIndex : uint8_t {
  SecurityStatIndex::UNEXPECTED_MESSAGES = 0, SecurityStatIndex::AUTHORIZATION_FAILURES = 1, SecurityStatIndex::AUTHENTICATION_FAILURES = 2, SecurityStatIndex::REPLY_TIMEOUTS = 3,
  SecurityStatIndex::REKEYS_DUE_TO_AUTH_FAILUE = 4, SecurityStatIndex::TOTAL_MESSAGES_TX = 5, SecurityStatIndex::TOTAL_MESSAGES_RX = 6, SecurityStatIndex::CRITICAL_MESSAGES_TX = 7,
  SecurityStatIndex::CRITICAL_MESSAGES_RX = 8, SecurityStatIndex::DISCARED_MESSAGES = 9, SecurityStatIndex::ERROR_MESSAGES_TX = 10, SecurityStatIndex::ERROR_MESSAGES_RX = 11,
  SecurityStatIndex::SUCCESSFUL_AUTHS = 12, SecurityStatIndex::SESSION_KEY_CHANGES = 13, SecurityStatIndex::FAILED_SESSION_KEY_CHANGES = 14, SecurityStatIndex::UPDATE_KEY_CHANGES = 15,
  SecurityStatIndex::FAILED_UPDATE_KEY_CHANGES = 16, SecurityStatIndex::REKEYS_DUE_TO_RESTART = 17
}
 Indices of the SA security statistics. More...
 
enum  StaticAnalogOutputStatusVariation : uint8_t { StaticAnalogOutputStatusVariation::Group40Var1 = 0, StaticAnalogOutputStatusVariation::Group40Var2 = 1, StaticAnalogOutputStatusVariation::Group40Var3 = 2, StaticAnalogOutputStatusVariation::Group40Var4 = 3 }
 
enum  StaticAnalogVariation : uint8_t {
  StaticAnalogVariation::Group30Var1 = 0, StaticAnalogVariation::Group30Var2 = 1, StaticAnalogVariation::Group30Var3 = 2, StaticAnalogVariation::Group30Var4 = 3,
  StaticAnalogVariation::Group30Var5 = 4, StaticAnalogVariation::Group30Var6 = 5
}
 
enum  StaticBinaryOutputStatusVariation : uint8_t { StaticBinaryOutputStatusVariation::Group10Var2 = 0 }
 
enum  StaticBinaryVariation : uint8_t { StaticBinaryVariation::Group1Var1 = 0, StaticBinaryVariation::Group1Var2 = 1 }
 
enum  StaticCounterVariation : uint8_t { StaticCounterVariation::Group20Var1 = 0, StaticCounterVariation::Group20Var2 = 1, StaticCounterVariation::Group20Var5 = 2, StaticCounterVariation::Group20Var6 = 3 }
 
enum  StaticDoubleBinaryVariation : uint8_t { StaticDoubleBinaryVariation::Group3Var2 = 0 }
 
enum  StaticFrozenCounterVariation : uint8_t {
  StaticFrozenCounterVariation::Group21Var1 = 0, StaticFrozenCounterVariation::Group21Var2 = 1, StaticFrozenCounterVariation::Group21Var5 = 2, StaticFrozenCounterVariation::Group21Var6 = 3,
  StaticFrozenCounterVariation::Group21Var9 = 4, StaticFrozenCounterVariation::Group21Var10 = 5
}
 
enum  StaticSecurityStatVariation : uint8_t { StaticSecurityStatVariation::Group121Var1 = 0 }
 
enum  StaticTimeAndIntervalVariation : uint8_t { StaticTimeAndIntervalVariation::Group50Var4 = 0 }
 
enum  StaticTypeBitmask : uint16_t {
  StaticTypeBitmask::BinaryInput = 0x1, StaticTypeBitmask::DoubleBinaryInput = 0x2, StaticTypeBitmask::Counter = 0x4, StaticTypeBitmask::FrozenCounter = 0x8,
  StaticTypeBitmask::AnalogInput = 0x10, StaticTypeBitmask::BinaryOutputStatus = 0x20, StaticTypeBitmask::AnalogOutputStatus = 0x40, StaticTypeBitmask::TimeAndInterval = 0x80
}
 Bitmask values for all the static types. More...
 
enum  StopBits : uint8_t { StopBits::One = 1, StopBits::OnePointFive = 2, StopBits::Two = 3, StopBits::None = 0 }
 Enumeration for setting serial port stop bits. More...
 
enum  TaskCompletion : uint8_t {
  TaskCompletion::SUCCESS = 0, TaskCompletion::FAILURE_BAD_RESPONSE = 1, TaskCompletion::FAILURE_RESPONSE_TIMEOUT = 2, TaskCompletion::FAILURE_START_TIMEOUT = 3,
  TaskCompletion::FAILURE_NO_USER = 4, TaskCompletion::FAILURE_INTERNAL_ERROR = 5, TaskCompletion::FAILURE_BAD_AUTHENTICATION = 6, TaskCompletion::FAILURE_NOT_AUTHORIZED = 7,
  TaskCompletion::FAILURE_NO_COMMS = 255
}
 Enum that describes if a master task succeeded or failed. More...
 
enum  TimestampMode : uint8_t { TimestampMode::SYNCHRONIZED = 1, TimestampMode::UNSYNCHRONIZED = 2, TimestampMode::INVALID = 0 }
 Indicates the validity of timestamp values for an entire object header. More...
 
enum  TimeSyncMode : uint8_t { TimeSyncMode::SerialTimeSync = 1, TimeSyncMode::None = 0 }
 Determines what the master station does when it sees the NEED_TIME iin bit. More...
 
enum  UserOperation : uint8_t { UserOperation::OP_ADD = 0x1, UserOperation::OP_DELETE = 0x2, UserOperation::OP_CHANGE = 0x3, UserOperation::OP_UNDEFINED = 0xFF }
 Enumerates possible remote operations on users. More...
 
enum  UserRole : uint16_t {
  UserRole::VIEWER = 0, UserRole::OPERATOR = 1, UserRole::ENGINEER = 2, UserRole::INSTALLER = 3,
  UserRole::SECADM = 4, UserRole::SECAUD = 5, UserRole::RBACMNT = 6, UserRole::SINGLE_USER = 32768,
  UserRole::UNDEFINED = 32767
}
 Enumerates pre-defined rules in secure authentication. More...
 

Functions

AuthErrorCode AuthErrorCodeFromType (uint8_t arg)
 
char const * AuthErrorCodeToString (AuthErrorCode arg)
 
uint8_t AuthErrorCodeToType (AuthErrorCode arg)
 
CertificateType CertificateTypeFromType (uint8_t arg)
 
char const * CertificateTypeToString (CertificateType arg)
 
uint8_t CertificateTypeToType (CertificateType arg)
 
ChallengeReason ChallengeReasonFromType (uint8_t arg)
 
char const * ChallengeReasonToString (ChallengeReason arg)
 
uint8_t ChallengeReasonToType (ChallengeReason arg)
 
char const * ChannelStateToString (ChannelState arg)
 
char const * CommandPointStateToString (CommandPointState arg)
 
CommandStatus CommandStatusFromType (uint8_t arg)
 
char const * CommandStatusToString (CommandStatus arg)
 
uint8_t CommandStatusToType (CommandStatus arg)
 
ControlCode ControlCodeFromType (uint8_t arg)
 
char const * ControlCodeToString (ControlCode arg)
 
uint8_t ControlCodeToType (ControlCode arg)
 
DoubleBit DoubleBitFromType (uint8_t arg)
 
char const * DoubleBitToString (DoubleBit arg)
 
uint8_t DoubleBitToType (DoubleBit arg)
 
FlagsType FlagsTypeFromType (uint8_t arg)
 
char const * FlagsTypeToString (FlagsType arg)
 
uint8_t FlagsTypeToType (FlagsType arg)
 
FlowControl FlowControlFromType (uint8_t arg)
 
char const * FlowControlToString (FlowControl arg)
 
uint8_t FlowControlToType (FlowControl arg)
 
FunctionCode FunctionCodeFromType (uint8_t arg)
 
char const * FunctionCodeToString (FunctionCode arg)
 
uint8_t FunctionCodeToType (FunctionCode arg)
 
GroupVariation GroupVariationFromType (uint16_t arg)
 
char const * GroupVariationToString (GroupVariation arg)
 
uint16_t GroupVariationToType (GroupVariation arg)
 
bool HasAbsoluteTime (GroupVariation gv)
 
bool HasFlags (GroupVariation gv)
 
bool HasRelativeTime (GroupVariation gv)
 
HMACType HMACTypeFromType (uint8_t arg)
 
char const * HMACTypeToString (HMACType arg)
 
uint8_t HMACTypeToType (HMACType arg)
 
IntervalUnits IntervalUnitsFromType (uint8_t arg)
 
char const * IntervalUnitsToString (IntervalUnits arg)
 
uint8_t IntervalUnitsToType (IntervalUnits arg)
 
bool IsEvent (GroupVariation gv)
 
KeyChangeMethod KeyChangeMethodFromType (uint8_t arg)
 
char const * KeyChangeMethodToString (KeyChangeMethod arg)
 
uint8_t KeyChangeMethodToType (KeyChangeMethod arg)
 
KeyStatus KeyStatusFromType (uint8_t arg)
 
char const * KeyStatusToString (KeyStatus arg)
 
uint8_t KeyStatusToType (KeyStatus arg)
 
KeyWrapAlgorithm KeyWrapAlgorithmFromType (uint8_t arg)
 
char const * KeyWrapAlgorithmToString (KeyWrapAlgorithm arg)
 
uint8_t KeyWrapAlgorithmToType (KeyWrapAlgorithm arg)
 
LinkFunction LinkFunctionFromType (uint8_t arg)
 
char const * LinkFunctionToString (LinkFunction arg)
 
uint8_t LinkFunctionToType (LinkFunction arg)
 
char const * LinkStatusToString (LinkStatus arg)
 
const char * LogFlagToString (int32_t flag)
 
char const * MasterTaskTypeToString (MasterTaskType arg)
 
Parity ParityFromType (uint8_t arg)
 
char const * ParityToString (Parity arg)
 
uint8_t ParityToType (Parity arg)
 
QualifierCode QualifierCodeFromType (uint8_t arg)
 
char const * QualifierCodeToString (QualifierCode arg)
 
uint8_t QualifierCodeToType (QualifierCode arg)
 
StopBits StopBitsFromType (uint8_t arg)
 
char const * StopBitsToString (StopBits arg)
 
uint8_t StopBitsToType (StopBits arg)
 
char const * TaskCompletionToString (TaskCompletion arg)
 
template<class T >
uint8_t ToUnderlying (T flag)
 
UserOperation UserOperationFromType (uint8_t arg)
 
char const * UserOperationToString (UserOperation arg)
 
uint8_t UserOperationToType (UserOperation arg)
 
UserRole UserRoleFromType (uint16_t arg)
 
char const * UserRoleToString (UserRole arg)
 
uint16_t UserRoleToType (UserRole arg)
 
template<class T >
Indexed< T > WithIndex (const T &value, uint16_t index)
 

Variables

const openpal::TimeDuration DEFAULT_APP_TIMEOUT = openpal::TimeDuration::Milliseconds(5000)
 
const uint32_t DEFAULT_MAX_APDU_SIZE = 2048
 
static const int NUM_OUTSTATION_EVENT_TYPES = 8