dnp3 (C++ API) 1.1.0
dnp3.hpp File Reference
#include <cstdint>
#include <stdexcept>
#include <chrono>
#include <memory>
#include <vector>

Go to the source code of this file.

Classes

class  dnp3::ParamException
 Exception type corresponding to the underlying error enum ParamError. More...
 
struct  dnp3::LoggingConfig
 Logging configuration options. More...
 
class  dnp3::Logger
 Logging interface that receives the log messages and writes them somewhere. More...
 
class  dnp3::functional::LoggerLambda< T >
 class that implements Logger in terms of a lambda expression More...
 
class  dnp3::Logging
 Provides a static method for configuring logging. More...
 
struct  dnp3::DecodeLevel
 Controls the decoding of transmitted and received data at the application, transport, link, and physical layers. More...
 
struct  dnp3::RuntimeConfig
 Runtime configuration. More...
 
class  dnp3::Runtime
 Handle to the underlying runtime. More...
 
struct  dnp3::ControlField
 APDU Control field. More...
 
struct  dnp3::ControlCode
 CROB (Group12Var1) control code. More...
 
struct  dnp3::Group12Var1
 Control Relay Output Block. More...
 
struct  dnp3::Flags
 Collection of individual flag bits represented by an underlying mask value. More...
 
struct  dnp3::Timestamp
 Timestamp value. More...
 
struct  dnp3::BinaryInput
 binary_input point More...
 
class  dnp3::BinaryInputIterator
 Iterator over BinaryInput instances. More...
 
struct  dnp3::DoubleBitBinaryInput
 double_bit_binary_input point More...
 
class  dnp3::DoubleBitBinaryInputIterator
 Iterator over DoubleBitBinaryInput instances. More...
 
struct  dnp3::BinaryOutputStatus
 binary_output_status point More...
 
class  dnp3::BinaryOutputStatusIterator
 Iterator over BinaryOutputStatus instances. More...
 
struct  dnp3::Counter
 counter point More...
 
class  dnp3::CounterIterator
 Iterator over Counter instances. More...
 
struct  dnp3::FrozenCounter
 frozen_counter point More...
 
class  dnp3::FrozenCounterIterator
 Iterator over FrozenCounter instances. More...
 
struct  dnp3::AnalogInput
 analog_input point More...
 
class  dnp3::AnalogInputIterator
 Iterator over AnalogInput instances. More...
 
struct  dnp3::AnalogOutputStatus
 analog_output_status point More...
 
class  dnp3::AnalogOutputStatusIterator
 Iterator over AnalogOutputStatus instances. More...
 
class  dnp3::ByteIterator
 Iterator over uint8_t instances. More...
 
struct  dnp3::OctetString
 Octet String point. More...
 
class  dnp3::OctetStringIterator
 Iterator over OctetString instances. More...
 
class  dnp3::PortStateListener
 Callback interface for receiving updates about the state of a serial port. More...
 
class  dnp3::functional::PortStateListenerLambda< T >
 class that implements PortStateListener in terms of a lambda expression More...
 
struct  dnp3::RetryStrategy
 Retry strategy configuration. More...
 
struct  dnp3::SerialSettings
 Serial port settings. More...
 
struct  dnp3::Iin1
 First IIN byte. More...
 
struct  dnp3::Iin2
 Second IIN byte. More...
 
struct  dnp3::Iin
 Pair of IIN bytes. More...
 
struct  dnp3::ResponseHeader
 Response header information. More...
 
struct  dnp3::HeaderInfo
 Information about the object header and specific variation. More...
 
class  dnp3::ReadHandler
 General handler that will receive all values read from the outstation. More...
 
class  dnp3::EndpointList
 List of IP endpoints. More...
 
struct  dnp3::MasterChannelConfig
 Generic configuration for a MasterChannel. More...
 
class  dnp3::ClientStateListener
 Callback for monitoring the client TCP connection state. More...
 
class  dnp3::functional::ClientStateListenerLambda< T >
 class that implements ClientStateListener in terms of a lambda expression More...
 
struct  dnp3::TlsClientConfig
 TLS client configuration. More...
 
struct  dnp3::ConnectStrategy
 Timing parameters for connection attempts. More...
 
struct  dnp3::AssociationId
 Association identifier. More...
 
struct  dnp3::PollId
 Poll identifier. More...
 
struct  dnp3::EventClasses
 Event classes. More...
 
struct  dnp3::Classes
 Class 0, 1, 2 and 3 config. More...
 
struct  dnp3::AssociationConfig
 Association configuration. More...
 
struct  dnp3::UtcTimestamp
 Timestamp value returned by AssociationHandler::get_current_time(). More...
 
class  dnp3::AssociationHandler
 Callbacks for a particular outstation association. More...
 
class  dnp3::functional::AssociationHandlerLambda< T >
 class that implements AssociationHandler in terms of a lambda expression More...
 
class  dnp3::AssociationInformation
 Informational callbacks about the current state of an outstation association. More...
 
class  dnp3::Request
 Custom request. More...
 
class  dnp3::ReadException
 Exception type corresponding to the underlying error enum ReadError. More...
 
class  dnp3::ReadTaskCallback
 Handler for read tasks. More...
 
class  dnp3::CommandSet
 Builder type used to construct command requests. More...
 
class  dnp3::CommandException
 Exception type corresponding to the underlying error enum CommandError. More...
 
class  dnp3::CommandTaskCallback
 Handler for command tasks. More...
 
class  dnp3::TimeSyncException
 Exception type corresponding to the underlying error enum TimeSyncError. More...
 
class  dnp3::TimeSyncTaskCallback
 Handler for time synchronization tasks. More...
 
class  dnp3::RestartException
 Exception type corresponding to the underlying error enum RestartError. More...
 
class  dnp3::RestartTaskCallback
 Handler for restart tasks. More...
 
class  dnp3::LinkStatusException
 Exception type corresponding to the underlying error enum LinkStatusError. More...
 
class  dnp3::LinkStatusCallback
 Handler for link status check. More...
 
class  dnp3::MasterChannel
 Represents a communication channel for a master station. More...
 
struct  dnp3::UpdateOptions
 Options that control how the update is performed. More...
 
struct  dnp3::BinaryInputConfig
 Binary Input configuration. More...
 
struct  dnp3::DoubleBitBinaryInputConfig
 Double-Bit Binary Input configuration. More...
 
struct  dnp3::BinaryOutputStatusConfig
 Binary Output Status configuration. More...
 
struct  dnp3::CounterConfig
 Counter configuration. More...
 
struct  dnp3::FrozenCounterConfig
 Frozen Counter configuration. More...
 
struct  dnp3::AnalogInputConfig
 Analog configuration. More...
 
struct  dnp3::AnalogOutputStatusConfig
 Analog Output Status configuration. More...
 
class  dnp3::Database
 Internal database access. More...
 
class  dnp3::DatabaseTransaction
 Database transaction interface. More...
 
class  dnp3::functional::DatabaseTransactionLambda< T >
 class that implements DatabaseTransaction in terms of a lambda expression More...
 
class  dnp3::DatabaseHandle
 handle used to perform transactions on the database More...
 
struct  dnp3::EventBufferConfig
 Maximum number of events for each type. More...
 
struct  dnp3::ClassZeroConfig
 Controls which types are reported during a Class 0 read. More...
 
struct  dnp3::OutstationFeatures
 Optional outstation features that can be enabled or disabled. More...
 
struct  dnp3::OutstationConfig
 Outstation configuration. More...
 
struct  dnp3::RestartDelay
 Restart delay used by OutstationApplication::cold_restart() and OutstationApplication::warm_restart() More...
 
struct  dnp3::ApplicationIin
 Application-controlled IIN bits. More...
 
class  dnp3::OutstationApplication
 Dynamic information required by the outstation from the user application. More...
 
struct  dnp3::RequestHeader
 Application-layer header for requests. More...
 
class  dnp3::OutstationInformation
 Informational callbacks that the outstation doesn't rely on to function. More...
 
class  dnp3::ControlHandler
 Callbacks for handling controls. More...
 
class  dnp3::ConnectionStateListener
 Callback interface for connection state events. More...
 
class  dnp3::functional::ConnectionStateListenerLambda< T >
 class that implements ConnectionStateListener in terms of a lambda expression More...
 
class  dnp3::Outstation
 Outstation handle. More...
 
class  dnp3::AddressFilter
 Outstation address filter. More...
 
struct  dnp3::TlsServerConfig
 TLS server configuration. More...
 
class  dnp3::OutstationServer
 TCP server that listens for connections and routes the messages to outstations. More...
 

Namespaces

namespace  dnp3
 main namespace for the dnp3 library
 
namespace  dnp3::flag
 Individual flag constants that may be combined using bitwise-OR operator.
 
namespace  dnp3::functional
 helpers functions to create interface implementations using lambdas
 

Enumerations

enum class  dnp3::ParamError {
  dnp3::ok = 0 , dnp3::invalid_timeout = 1 , dnp3::null_parameter = 2 , dnp3::no_support = 3 ,
  dnp3::association_does_not_exist = 4 , dnp3::association_duplicate_address = 5 , dnp3::invalid_socket_address = 6 , dnp3::invalid_dnp3_address = 7 ,
  dnp3::invalid_buffer_size = 8 , dnp3::address_filter_conflict = 9 , dnp3::server_already_started = 10 , dnp3::server_bind_error = 11 ,
  dnp3::master_already_shutdown = 12 , dnp3::runtime_creation_failure = 13 , dnp3::runtime_destroyed = 14 , dnp3::runtime_cannot_block_within_async = 15 ,
  dnp3::logging_already_configured = 16 , dnp3::point_does_not_exist = 17 , dnp3::invalid_peer_certificate = 18 , dnp3::invalid_local_certificate = 19 ,
  dnp3::invalid_private_key = 20 , dnp3::invalid_dns_name = 21 , dnp3::other_tls_error = 22
}
 Error type used throughout the library. More...
 
enum class  dnp3::LogLevel {
  dnp3::error = 0 , dnp3::warn = 1 , dnp3::info = 2 , dnp3::debug = 3 ,
  dnp3::trace = 4
}
 Log level. More...
 
enum class  dnp3::LogOutputFormat { dnp3::text = 0 , dnp3::json = 1 }
 Describes how each log event is formatted. More...
 
enum class  dnp3::TimeFormat { dnp3::none = 0 , dnp3::rfc_3339 = 1 , dnp3::system = 2 }
 Describes if and how the time will be formatted in log messages. More...
 
enum class  dnp3::AppDecodeLevel { dnp3::nothing = 0 , dnp3::header = 1 , dnp3::object_headers = 2 , dnp3::object_values = 3 }
 Controls how transmitted and received application-layer fragments are decoded at the INFO log level. More...
 
enum class  dnp3::TransportDecodeLevel { dnp3::nothing = 0 , dnp3::header = 1 , dnp3::payload = 2 }
 Controls how transmitted and received transport segments are decoded at the INFO log level. More...
 
enum class  dnp3::LinkDecodeLevel { dnp3::nothing = 0 , dnp3::header = 1 , dnp3::payload = 2 }
 Controls how transmitted and received link frames are decoded at the INFO log level. More...
 
enum class  dnp3::PhysDecodeLevel { dnp3::nothing = 0 , dnp3::length = 1 , dnp3::data = 2 }
 Controls how data transmitted at the physical layer (TCP, serial, etc) is logged. More...
 
enum class  dnp3::TripCloseCode { dnp3::nul = 0 , dnp3::close = 1 , dnp3::trip = 2 , dnp3::reserved = 3 }
 Trip-Close Code field, used in conjunction with OpType to specify a control operation. More...
 
enum class  dnp3::OpType {
  dnp3::nul = 0 , dnp3::pulse_on = 1 , dnp3::pulse_off = 2 , dnp3::latch_on = 3 ,
  dnp3::latch_off = 4
}
 Operation Type field, used in conjunction with TripCloseCode to specify a control operation. More...
 
enum class  dnp3::TimeQuality { dnp3::synchronized_time = 0 , dnp3::unsynchronized_time = 1 , dnp3::invalid_time = 2 }
 Timestamp quality. More...
 
enum class  dnp3::DoubleBit { dnp3::intermediate = 0 , dnp3::determined_off = 1 , dnp3::determined_on = 2 , dnp3::indeterminate = 3 }
 Double-bit binary input value. More...
 
enum class  dnp3::PortState { dnp3::disabled = 0 , dnp3::wait = 1 , dnp3::open = 2 , dnp3::shutdown = 3 }
 State of the serial port. More...
 
enum class  dnp3::Variation {
  dnp3::group1_var0 = 0 , dnp3::group1_var1 = 1 , dnp3::group1_var2 = 2 , dnp3::group2_var0 = 3 ,
  dnp3::group2_var1 = 4 , dnp3::group2_var2 = 5 , dnp3::group2_var3 = 6 , dnp3::group3_var0 = 7 ,
  dnp3::group3_var1 = 8 , dnp3::group3_var2 = 9 , dnp3::group4_var0 = 10 , dnp3::group4_var1 = 11 ,
  dnp3::group4_var2 = 12 , dnp3::group4_var3 = 13 , dnp3::group10_var0 = 14 , dnp3::group10_var1 = 15 ,
  dnp3::group10_var2 = 16 , dnp3::group11_var0 = 17 , dnp3::group11_var1 = 18 , dnp3::group11_var2 = 19 ,
  dnp3::group12_var0 = 20 , dnp3::group12_var1 = 21 , dnp3::group20_var0 = 22 , dnp3::group20_var1 = 23 ,
  dnp3::group20_var2 = 24 , dnp3::group20_var5 = 25 , dnp3::group20_var6 = 26 , dnp3::group21_var0 = 27 ,
  dnp3::group21_var1 = 28 , dnp3::group21_var2 = 29 , dnp3::group21_var5 = 30 , dnp3::group21_var6 = 31 ,
  dnp3::group21_var9 = 32 , dnp3::group21_var10 = 33 , dnp3::group22_var0 = 34 , dnp3::group22_var1 = 35 ,
  dnp3::group22_var2 = 36 , dnp3::group22_var5 = 37 , dnp3::group22_var6 = 38 , dnp3::group23_var0 = 39 ,
  dnp3::group23_var1 = 40 , dnp3::group23_var2 = 41 , dnp3::group23_var5 = 42 , dnp3::group23_var6 = 43 ,
  dnp3::group30_var0 = 44 , dnp3::group30_var1 = 45 , dnp3::group30_var2 = 46 , dnp3::group30_var3 = 47 ,
  dnp3::group30_var4 = 48 , dnp3::group30_var5 = 49 , dnp3::group30_var6 = 50 , dnp3::group32_var0 = 51 ,
  dnp3::group32_var1 = 52 , dnp3::group32_var2 = 53 , dnp3::group32_var3 = 54 , dnp3::group32_var4 = 55 ,
  dnp3::group32_var5 = 56 , dnp3::group32_var6 = 57 , dnp3::group32_var7 = 58 , dnp3::group32_var8 = 59 ,
  dnp3::group40_var0 = 60 , dnp3::group40_var1 = 61 , dnp3::group40_var2 = 62 , dnp3::group40_var3 = 63 ,
  dnp3::group40_var4 = 64 , dnp3::group41_var0 = 65 , dnp3::group41_var1 = 66 , dnp3::group41_var2 = 67 ,
  dnp3::group41_var3 = 68 , dnp3::group41_var4 = 69 , dnp3::group42_var0 = 70 , dnp3::group42_var1 = 71 ,
  dnp3::group42_var2 = 72 , dnp3::group42_var3 = 73 , dnp3::group42_var4 = 74 , dnp3::group42_var5 = 75 ,
  dnp3::group42_var6 = 76 , dnp3::group42_var7 = 77 , dnp3::group42_var8 = 78 , dnp3::group50_var1 = 79 ,
  dnp3::group50_var3 = 80 , dnp3::group50_var4 = 81 , dnp3::group51_var1 = 82 , dnp3::group51_var2 = 83 ,
  dnp3::group52_var1 = 84 , dnp3::group52_var2 = 85 , dnp3::group60_var1 = 86 , dnp3::group60_var2 = 87 ,
  dnp3::group60_var3 = 88 , dnp3::group60_var4 = 89 , dnp3::group80_var1 = 90 , dnp3::group110 = 91 ,
  dnp3::group111 = 92
}
 Group/Variation. More...
 
enum class  dnp3::DataBits { dnp3::five = 0 , dnp3::six = 1 , dnp3::seven = 2 , dnp3::eight = 3 }
 Number of bits per character. More...
 
enum class  dnp3::FlowControl { dnp3::none = 0 , dnp3::software = 1 , dnp3::hardware = 2 }
 Flow control modes. More...
 
enum class  dnp3::Parity { dnp3::none = 0 , dnp3::odd = 1 , dnp3::even = 2 }
 Parity checking modes. More...
 
enum class  dnp3::StopBits { dnp3::one = 0 , dnp3::two = 1 }
 Number of stop bits. More...
 
enum class  dnp3::LinkErrorMode { dnp3::discard = 0 , dnp3::close = 1 }
 Controls how errors in parsed link-layer frames are handled. This behavior is configurable for physical layers with built-in error correction like TCP as the connection might be through a terminal server. More...
 
enum class  dnp3::MinTlsVersion { dnp3::v12 = 0 , dnp3::v13 = 1 }
 Minimum TLS version to allow. More...
 
enum class  dnp3::CertificateMode { dnp3::authority_based = 0 , dnp3::self_signed = 1 }
 Determines how the certificate(s) presented by the peer are validated. More...
 
enum class  dnp3::FunctionCode {
  dnp3::confirm = 0 , dnp3::read = 1 , dnp3::write = 2 , dnp3::select = 3 ,
  dnp3::operate = 4 , dnp3::direct_operate = 5 , dnp3::direct_operate_no_response = 6 , dnp3::immediate_freeze = 7 ,
  dnp3::immediate_freeze_no_response = 8 , dnp3::freeze_clear = 9 , dnp3::freeze_clear_no_response = 10 , dnp3::freeze_at_time = 11 ,
  dnp3::freeze_at_time_no_response = 12 , dnp3::cold_restart = 13 , dnp3::warm_restart = 14 , dnp3::initialize_data = 15 ,
  dnp3::initialize_application = 16 , dnp3::start_application = 17 , dnp3::stop_application = 18 , dnp3::save_configuration = 19 ,
  dnp3::enable_unsolicited = 20 , dnp3::disable_unsolicited = 21 , dnp3::assign_class = 22 , dnp3::delay_measure = 23 ,
  dnp3::record_current_time = 24 , dnp3::open_file = 25 , dnp3::close_file = 26 , dnp3::delete_file = 27 ,
  dnp3::get_file_info = 28 , dnp3::authenticate_file = 29 , dnp3::abort_file = 30 , dnp3::response = 31 ,
  dnp3::unsolicited_response = 32
}
 Application layer function code. More...
 
enum class  dnp3::ResponseFunction { dnp3::response = 0 , dnp3::unsolicited_response = 1 }
 Type of response. More...
 
enum class  dnp3::QualifierCode {
  dnp3::range8 = 0 , dnp3::range16 = 1 , dnp3::all_objects = 2 , dnp3::count8 = 3 ,
  dnp3::count16 = 4 , dnp3::count_and_prefix_8 = 5 , dnp3::count_and_prefix_16 = 6 , dnp3::free_format_16 = 7
}
 Qualifier code used in the response. More...
 
enum class  dnp3::ReadType { dnp3::startup_integrity = 0 , dnp3::unsolicited = 1 , dnp3::single_poll = 2 , dnp3::periodic_poll = 3 }
 Describes the source of a read event. More...
 
enum class  dnp3::ClientState {
  dnp3::disabled = 0 , dnp3::connecting = 1 , dnp3::connected = 2 , dnp3::wait_after_failed_connect = 3 ,
  dnp3::wait_after_disconnect = 4 , dnp3::shutdown = 5
}
 State of the client connection. More...
 
enum class  dnp3::Nothing { dnp3::nothing = 0 }
 A single value enum which is used as a placeholder for futures that don't return a value. More...
 
enum class  dnp3::AutoTimeSync { dnp3::none = 0 , dnp3::lan = 1 , dnp3::non_lan = 2 }
 Automatic time synchronization configuration. More...
 
enum class  dnp3::TaskType {
  dnp3::user_read = 0 , dnp3::periodic_poll = 1 , dnp3::startup_integrity = 2 , dnp3::auto_event_scan = 3 ,
  dnp3::command = 4 , dnp3::clear_restart_bit = 5 , dnp3::enable_unsolicited = 6 , dnp3::disable_unsolicited = 7 ,
  dnp3::time_sync = 8 , dnp3::restart = 9
}
 Task type used in AssociationInformation. More...
 
enum class  dnp3::TaskError {
  dnp3::too_many_requests = 0 , dnp3::bad_response = 1 , dnp3::response_timeout = 2 , dnp3::write_error = 3 ,
  dnp3::no_connection = 4 , dnp3::shutdown = 5 , dnp3::association_removed = 6
}
 Task error used in AssociationInformation. More...
 
enum class  dnp3::ReadError {
  dnp3::ok = 0 , dnp3::too_many_requests = 1 , dnp3::bad_response = 2 , dnp3::response_timeout = 3 ,
  dnp3::write_error = 4 , dnp3::no_connection = 5 , dnp3::shutdown = 6 , dnp3::association_removed = 7
}
 Errors that can occur during a read operation. More...
 
enum class  dnp3::CommandMode { dnp3::direct_operate = 0 , dnp3::select_before_operate = 1 }
 Command operation mode. More...
 
enum class  dnp3::CommandError {
  dnp3::ok = 0 , dnp3::bad_status = 1 , dnp3::header_mismatch = 2 , dnp3::too_many_requests = 3 ,
  dnp3::bad_response = 4 , dnp3::response_timeout = 5 , dnp3::write_error = 6 , dnp3::no_connection = 7 ,
  dnp3::shutdown = 8 , dnp3::association_removed = 9
}
 Result of a command. More...
 
enum class  dnp3::TimeSyncMode { dnp3::lan = 0 , dnp3::non_lan = 1 }
 Time synchronization mode. More...
 
enum class  dnp3::TimeSyncError {
  dnp3::ok = 0 , dnp3::clock_rollback = 1 , dnp3::system_time_not_unix = 2 , dnp3::bad_outstation_time_delay = 3 ,
  dnp3::overflow = 4 , dnp3::still_needs_time = 5 , dnp3::system_time_not_available = 6 , dnp3::iin_error = 7 ,
  dnp3::too_many_requests = 8 , dnp3::bad_response = 9 , dnp3::response_timeout = 10 , dnp3::write_error = 11 ,
  dnp3::no_connection = 12 , dnp3::shutdown = 13 , dnp3::association_removed = 14
}
 Possible errors that can occur during a time synchronization procedure. More...
 
enum class  dnp3::RestartError {
  dnp3::ok = 0 , dnp3::too_many_requests = 1 , dnp3::bad_response = 2 , dnp3::response_timeout = 3 ,
  dnp3::write_error = 4 , dnp3::no_connection = 5 , dnp3::shutdown = 6 , dnp3::association_removed = 7
}
 Errors that can occur during a cold/warm restart operation. More...
 
enum class  dnp3::LinkStatusError {
  dnp3::ok = 0 , dnp3::unexpected_response = 1 , dnp3::too_many_requests = 2 , dnp3::bad_response = 3 ,
  dnp3::response_timeout = 4 , dnp3::write_error = 5 , dnp3::no_connection = 6 , dnp3::shutdown = 7 ,
  dnp3::association_removed = 8
}
 Errors that can occur during a manually initiated link status check. See MasterChannel::check_link_status() More...
 
enum class  dnp3::EventClass { dnp3::none = 0 , dnp3::class1 = 1 , dnp3::class2 = 2 , dnp3::class3 = 3 }
 Event class. More...
 
enum class  dnp3::EventMode { dnp3::detect = 0 , dnp3::force = 1 , dnp3::suppress = 2 }
 Controls how events are processed when updating values in the database. More...
 
enum class  dnp3::StaticBinaryInputVariation { dnp3::group1_var1 = 0 , dnp3::group1_var2 = 1 }
 Static binary input variation. More...
 
enum class  dnp3::EventBinaryInputVariation { dnp3::group2_var1 = 0 , dnp3::group2_var2 = 1 , dnp3::group2_var3 = 2 }
 Event binary input variation. More...
 
enum class  dnp3::StaticDoubleBitBinaryInputVariation { dnp3::group3_var1 = 0 , dnp3::group3_var2 = 1 }
 Static double-bit binary input variation. More...
 
enum class  dnp3::EventDoubleBitBinaryInputVariation { dnp3::group4_var1 = 0 , dnp3::group4_var2 = 1 , dnp3::group4_var3 = 2 }
 Event double-bit binary input variation. More...
 
enum class  dnp3::StaticBinaryOutputStatusVariation { dnp3::group10_var1 = 0 , dnp3::group10_var2 = 1 }
 Static binary output status variation. More...
 
enum class  dnp3::EventBinaryOutputStatusVariation { dnp3::group11_var1 = 0 , dnp3::group11_var2 = 1 }
 Event binary output status variation. More...
 
enum class  dnp3::StaticCounterVariation { dnp3::group20_var1 = 0 , dnp3::group20_var2 = 1 , dnp3::group20_var5 = 2 , dnp3::group20_var6 = 3 }
 Static counter variation. More...
 
enum class  dnp3::EventCounterVariation { dnp3::group22_var1 = 0 , dnp3::group22_var2 = 1 , dnp3::group22_var5 = 2 , dnp3::group22_var6 = 3 }
 Event counter variation. More...
 
enum class  dnp3::StaticFrozenCounterVariation {
  dnp3::group21_var1 = 0 , dnp3::group21_var2 = 1 , dnp3::group21_var5 = 2 , dnp3::group21_var6 = 3 ,
  dnp3::group21_var9 = 4 , dnp3::group21_var10 = 5
}
 Static frozen counter variation. More...
 
enum class  dnp3::EventFrozenCounterVariation { dnp3::group23_var1 = 0 , dnp3::group23_var2 = 1 , dnp3::group23_var5 = 2 , dnp3::group23_var6 = 3 }
 Event frozen counter variation. More...
 
enum class  dnp3::StaticAnalogInputVariation {
  dnp3::group30_var1 = 0 , dnp3::group30_var2 = 1 , dnp3::group30_var3 = 2 , dnp3::group30_var4 = 3 ,
  dnp3::group30_var5 = 4 , dnp3::group30_var6 = 5
}
 Static analog variation. More...
 
enum class  dnp3::EventAnalogInputVariation {
  dnp3::group32_var1 = 0 , dnp3::group32_var2 = 1 , dnp3::group32_var3 = 2 , dnp3::group32_var4 = 3 ,
  dnp3::group32_var5 = 4 , dnp3::group32_var6 = 5 , dnp3::group32_var7 = 6 , dnp3::group32_var8 = 7
}
 Event analog variation. More...
 
enum class  dnp3::StaticAnalogOutputStatusVariation { dnp3::group40_var1 = 0 , dnp3::group40_var2 = 1 , dnp3::group40_var3 = 2 , dnp3::group40_var4 = 3 }
 Static analog output status variation. More...
 
enum class  dnp3::EventAnalogOutputStatusVariation {
  dnp3::group42_var1 = 0 , dnp3::group42_var2 = 1 , dnp3::group42_var3 = 2 , dnp3::group42_var4 = 3 ,
  dnp3::group42_var5 = 4 , dnp3::group42_var6 = 5 , dnp3::group42_var7 = 6 , dnp3::group42_var8 = 7
}
 Event analog output status variation. More...
 
enum class  dnp3::RestartDelayType { dnp3::not_supported = 0 , dnp3::seconds = 1 , dnp3::milli_seconds = 2 }
 Type of restart delay value. Used by RestartDelay. More...
 
enum class  dnp3::WriteTimeResult { dnp3::ok = 0 , dnp3::parameter_error = 1 , dnp3::not_supported = 2 }
 Write time result used by OutstationApplication::write_absolute_time() More...
 
enum class  dnp3::FreezeType { dnp3::immediate_freeze = 0 , dnp3::freeze_and_clear = 1 }
 Freeze operation type. More...
 
enum class  dnp3::FreezeResult { dnp3::ok = 0 , dnp3::parameter_error = 1 , dnp3::not_supported = 2 }
 Result of a freeze operation. More...
 
enum class  dnp3::BroadcastAction { dnp3::processed = 0 , dnp3::ignored_by_configuration = 1 , dnp3::bad_object_headers = 2 , dnp3::unsupported_function = 3 }
 Enumeration describing how the outstation processed a broadcast request. More...
 
enum class  dnp3::CommandStatus {
  dnp3::success = 0 , dnp3::timeout = 1 , dnp3::no_select = 2 , dnp3::format_error = 3 ,
  dnp3::not_supported = 4 , dnp3::already_active = 5 , dnp3::hardware_error = 6 , dnp3::local = 7 ,
  dnp3::too_many_ops = 8 , dnp3::not_authorized = 9 , dnp3::automation_inhibit = 10 , dnp3::processing_limited = 11 ,
  dnp3::out_of_range = 12 , dnp3::downstream_local = 13 , dnp3::already_complete = 14 , dnp3::blocked = 15 ,
  dnp3::canceled = 16 , dnp3::blocked_other_master = 17 , dnp3::downstream_fail = 18 , dnp3::non_participating = 19 ,
  dnp3::unknown = 20
}
 Enumeration received from an outstation in response to command request. More...
 
enum class  dnp3::OperateType { dnp3::select_before_operate = 0 , dnp3::direct_operate = 1 , dnp3::direct_operate_no_ack = 2 }
 Enumeration describing how the master requested the control operation. More...
 
enum class  dnp3::ConnectionState { dnp3::connected = 0 , dnp3::disconnected = 1 }
 Outstation connection state for connection-oriented transports, e.g. TCP. More...
 

Functions

const char * dnp3::to_string (ParamError value)
 convert an instance of enum ParamError into a C-style string More...
 
const char * dnp3::to_string (LogLevel value)
 convert an instance of enum LogLevel into a C-style string More...
 
const char * dnp3::to_string (LogOutputFormat value)
 convert an instance of enum LogOutputFormat into a C-style string More...
 
const char * dnp3::to_string (TimeFormat value)
 convert an instance of enum TimeFormat into a C-style string More...
 
template<class T >
std::unique_ptr< Logger > dnp3::functional::logger (const T &lambda)
 construct an implementation of Logger based on a lambda expression More...
 
const char * dnp3::to_string (AppDecodeLevel value)
 convert an instance of enum AppDecodeLevel into a C-style string More...
 
const char * dnp3::to_string (TransportDecodeLevel value)
 convert an instance of enum TransportDecodeLevel into a C-style string More...
 
const char * dnp3::to_string (LinkDecodeLevel value)
 convert an instance of enum LinkDecodeLevel into a C-style string More...
 
const char * dnp3::to_string (PhysDecodeLevel value)
 convert an instance of enum PhysDecodeLevel into a C-style string More...
 
const char * dnp3::to_string (TripCloseCode value)
 convert an instance of enum TripCloseCode into a C-style string More...
 
const char * dnp3::to_string (OpType value)
 convert an instance of enum OpType into a C-style string More...
 
const char * dnp3::to_string (TimeQuality value)
 convert an instance of enum TimeQuality into a C-style string More...
 
const char * dnp3::to_string (DoubleBit value)
 convert an instance of enum DoubleBit into a C-style string More...
 
const char * dnp3::to_string (PortState value)
 convert an instance of enum PortState into a C-style string More...
 
template<class T >
std::unique_ptr< PortStateListener > dnp3::functional::port_state_listener (const T &lambda)
 construct an implementation of PortStateListener based on a lambda expression More...
 
const char * dnp3::to_string (Variation value)
 convert an instance of enum Variation into a C-style string More...
 
const char * dnp3::to_string (DataBits value)
 convert an instance of enum DataBits into a C-style string More...
 
const char * dnp3::to_string (FlowControl value)
 convert an instance of enum FlowControl into a C-style string More...
 
const char * dnp3::to_string (Parity value)
 convert an instance of enum Parity into a C-style string More...
 
const char * dnp3::to_string (StopBits value)
 convert an instance of enum StopBits into a C-style string More...
 
const char * dnp3::to_string (LinkErrorMode value)
 convert an instance of enum LinkErrorMode into a C-style string More...
 
const char * dnp3::to_string (MinTlsVersion value)
 convert an instance of enum MinTlsVersion into a C-style string More...
 
const char * dnp3::to_string (CertificateMode value)
 convert an instance of enum CertificateMode into a C-style string More...
 
const char * dnp3::to_string (FunctionCode value)
 convert an instance of enum FunctionCode into a C-style string More...
 
const char * dnp3::to_string (ResponseFunction value)
 convert an instance of enum ResponseFunction into a C-style string More...
 
const char * dnp3::to_string (QualifierCode value)
 convert an instance of enum QualifierCode into a C-style string More...
 
const char * dnp3::to_string (ReadType value)
 convert an instance of enum ReadType into a C-style string More...
 
const char * dnp3::to_string (ClientState value)
 convert an instance of enum ClientState into a C-style string More...
 
template<class T >
std::unique_ptr< ClientStateListener > dnp3::functional::client_state_listener (const T &lambda)
 construct an implementation of ClientStateListener based on a lambda expression More...
 
const char * dnp3::to_string (Nothing value)
 convert an instance of enum Nothing into a C-style string More...
 
const char * dnp3::to_string (AutoTimeSync value)
 convert an instance of enum AutoTimeSync into a C-style string More...
 
template<class T >
std::unique_ptr< AssociationHandler > dnp3::functional::association_handler (const T &lambda)
 construct an implementation of AssociationHandler based on a lambda expression More...
 
const char * dnp3::to_string (TaskType value)
 convert an instance of enum TaskType into a C-style string More...
 
const char * dnp3::to_string (TaskError value)
 convert an instance of enum TaskError into a C-style string More...
 
const char * dnp3::to_string (ReadError value)
 convert an instance of enum ReadError into a C-style string More...
 
const char * dnp3::to_string (CommandMode value)
 convert an instance of enum CommandMode into a C-style string More...
 
const char * dnp3::to_string (CommandError value)
 convert an instance of enum CommandError into a C-style string More...
 
const char * dnp3::to_string (TimeSyncMode value)
 convert an instance of enum TimeSyncMode into a C-style string More...
 
const char * dnp3::to_string (TimeSyncError value)
 convert an instance of enum TimeSyncError into a C-style string More...
 
const char * dnp3::to_string (RestartError value)
 convert an instance of enum RestartError into a C-style string More...
 
const char * dnp3::to_string (LinkStatusError value)
 convert an instance of enum LinkStatusError into a C-style string More...
 
const char * dnp3::to_string (EventClass value)
 convert an instance of enum EventClass into a C-style string More...
 
const char * dnp3::to_string (EventMode value)
 convert an instance of enum EventMode into a C-style string More...
 
const char * dnp3::to_string (StaticBinaryInputVariation value)
 convert an instance of enum StaticBinaryInputVariation into a C-style string More...
 
const char * dnp3::to_string (EventBinaryInputVariation value)
 convert an instance of enum EventBinaryInputVariation into a C-style string More...
 
const char * dnp3::to_string (StaticDoubleBitBinaryInputVariation value)
 convert an instance of enum StaticDoubleBitBinaryInputVariation into a C-style string More...
 
const char * dnp3::to_string (EventDoubleBitBinaryInputVariation value)
 convert an instance of enum EventDoubleBitBinaryInputVariation into a C-style string More...
 
const char * dnp3::to_string (StaticBinaryOutputStatusVariation value)
 convert an instance of enum StaticBinaryOutputStatusVariation into a C-style string More...
 
const char * dnp3::to_string (EventBinaryOutputStatusVariation value)
 convert an instance of enum EventBinaryOutputStatusVariation into a C-style string More...
 
const char * dnp3::to_string (StaticCounterVariation value)
 convert an instance of enum StaticCounterVariation into a C-style string More...
 
const char * dnp3::to_string (EventCounterVariation value)
 convert an instance of enum EventCounterVariation into a C-style string More...
 
const char * dnp3::to_string (StaticFrozenCounterVariation value)
 convert an instance of enum StaticFrozenCounterVariation into a C-style string More...
 
const char * dnp3::to_string (EventFrozenCounterVariation value)
 convert an instance of enum EventFrozenCounterVariation into a C-style string More...
 
const char * dnp3::to_string (StaticAnalogInputVariation value)
 convert an instance of enum StaticAnalogInputVariation into a C-style string More...
 
const char * dnp3::to_string (EventAnalogInputVariation value)
 convert an instance of enum EventAnalogInputVariation into a C-style string More...
 
const char * dnp3::to_string (StaticAnalogOutputStatusVariation value)
 convert an instance of enum StaticAnalogOutputStatusVariation into a C-style string More...
 
const char * dnp3::to_string (EventAnalogOutputStatusVariation value)
 convert an instance of enum EventAnalogOutputStatusVariation into a C-style string More...
 
template<class T >
DatabaseTransactionLambda< T > dnp3::functional::database_transaction (const T &lambda)
 construct an implementation of DatabaseTransaction based on a lambda expression More...
 
const char * dnp3::to_string (RestartDelayType value)
 convert an instance of enum RestartDelayType into a C-style string More...
 
const char * dnp3::to_string (WriteTimeResult value)
 convert an instance of enum WriteTimeResult into a C-style string More...
 
const char * dnp3::to_string (FreezeType value)
 convert an instance of enum FreezeType into a C-style string More...
 
const char * dnp3::to_string (FreezeResult value)
 convert an instance of enum FreezeResult into a C-style string More...
 
const char * dnp3::to_string (BroadcastAction value)
 convert an instance of enum BroadcastAction into a C-style string More...
 
const char * dnp3::to_string (CommandStatus value)
 convert an instance of enum CommandStatus into a C-style string More...
 
const char * dnp3::to_string (OperateType value)
 convert an instance of enum OperateType into a C-style string More...
 
const char * dnp3::to_string (ConnectionState value)
 convert an instance of enum ConnectionState into a C-style string More...
 
template<class T >
std::unique_ptr< ConnectionStateListener > dnp3::functional::connection_state_listener (const T &lambda)
 construct an implementation of ConnectionStateListener based on a lambda expression More...
 

Variables

constexpr uint64_t dnp3::dnp3_version_major = 1
 major version number More...
 
constexpr uint64_t dnp3::dnp3_version_minor = 1
 minor version number More...
 
constexpr uint64_t dnp3::dnp3_version_patch = 0
 patch version number More...
 
constexpr char const * dnp3::dnp3_version_string = "1.1.0"
 version number as the string major.minor.patch More...
 
constexpr uint8_t dnp3::flag::online = 0x01
 Object value is 'good' / 'valid' / 'nominal'. More...
 
constexpr uint8_t dnp3::flag::restart = 0x02
 Object value has not been updated since device restart. More...
 
constexpr uint8_t dnp3::flag::comm_lost = 0x04
 Object value represents the last value available before a communication failure occurred. Should never be set by originating devices. More...
 
constexpr uint8_t dnp3::flag::remote_forced = 0x08
 Object value is overridden in a downstream reporting device. More...
 
constexpr uint8_t dnp3::flag::local_forced = 0x10
 Object value is overridden by the device reporting this flag. More...
 
constexpr uint8_t dnp3::flag::chatter_filter = 0x20
 Object value is changing state rapidly (device dependent meaning) More...
 
constexpr uint8_t dnp3::flag::over_range = 0x20
 Object's true exceeds the measurement range of the reported variation. More...
 
constexpr uint8_t dnp3::flag::discontinuity = 0x40
 Reported counter value cannot be compared against a prior value to obtain the correct count difference. More...
 
constexpr uint8_t dnp3::flag::reference_err = 0x40
 Object's value might not have the expected level of accuracy. More...
 

Detailed Description

C++ API for the dnp3 library