├── .gitignore
├── AUTHORS
├── CHANGELOG.markdown
├── COPYING
├── ChangeLog
├── FILE_LICENSE
├── INSTALL
├── Makefile.am
├── NEWS
├── NOTICE
├── README
├── config
├── JNI_INCLUDES.props
├── JNI_INCLUDES.vsprops
├── astyle.cfg
├── autotools
│ ├── m4
│ │ ├── ax_boost_asio.m4
│ │ ├── ax_boost_base.m4
│ │ ├── ax_boost_date_time.m4
│ │ ├── ax_boost_filesystem.m4
│ │ ├── ax_boost_iostreams.m4
│ │ ├── ax_boost_program_options.m4
│ │ ├── ax_boost_python.m4
│ │ ├── ax_boost_regex.m4
│ │ ├── ax_boost_serialization.m4
│ │ ├── ax_boost_signals.m4
│ │ ├── ax_boost_system.m4
│ │ ├── ax_boost_test_exec_monitor.m4
│ │ ├── ax_boost_thread.m4
│ │ ├── ax_boost_unit_test_framework.m4
│ │ ├── ax_boost_wave.m4
│ │ ├── ax_boost_wserialization.m4
│ │ ├── ax_cxx_check_lib.m4
│ │ ├── ax_cxx_have_sstream.m4
│ │ ├── ax_cxx_have_std.m4
│ │ ├── ax_cxx_have_stl.m4
│ │ ├── ax_cxx_ldflags_std_lang.m4
│ │ ├── ax_cxx_namespaces.m4
│ │ ├── ax_lang_compiler_ms.m4
│ │ ├── ax_libtoolize_cflags.m4
│ │ ├── ax_pkg_swig.m4
│ │ ├── ax_prog_doxygen.m4
│ │ ├── ax_python_devel.m4
│ │ ├── ax_swig_enable_cxx.m4
│ │ ├── ax_swig_multi_module_support.m4
│ │ └── ax_swig_python.m4
│ └── mk
│ │ ├── doxygen.mak
│ │ └── lcov.mak
├── boost_includes.props
├── boost_includes.vsprops
├── boost_lib.props
├── boost_lib.vsprops
├── boost_lib_64.props
├── boost_lib_64.vsprops
├── common_boost_defines.props
├── common_boost_defines.vsprops
├── disable_specific_warnings.props
├── disable_specific_warnings.vsprops
├── doxygen.config.in
├── local_dir.props
├── local_dir.vsprops
├── output_dirs.props
├── output_dirs.vsprops
├── src-footer.inc
└── src-header.inc
├── configure.ac
├── demos
├── master-cpp
│ ├── DemoMain.cpp
│ ├── MasterDemo.cpp
│ └── MasterDemo.h
└── slave-cpp
│ ├── DemoMain.cpp
│ ├── SlaveDemo.cpp
│ └── SlaveDemo.h
├── docs
├── .gitignore
├── ChapterAPIs.xml
├── ChapterAboutDNP3.xml
├── ChapterExamples.xml
├── ChapterTheoryOfOperation.xml
├── ChapterUserApplications.xml
├── TestSetUserManual.docx
├── app1.xml
├── bibliography.xml
├── fdl.xml
├── glossary.xml
└── main.xml
├── java
├── pom.xml
└── src
│ └── test
│ └── scala
│ └── org
│ └── totalgrid
│ └── dnp3
│ ├── DNP3BindingTest.scala
│ └── mock
│ ├── CachingResponseAcceptor.scala
│ ├── CountingPublisher.scala
│ ├── InstantCommandAcceptor.scala
│ ├── MockCommandAcceptor.scala
│ └── MockDataObserver.scala
├── profile
├── DNP3DeviceProfileJan2010.xslt
├── README
├── UserData.xslt
├── dnp_logo.jpg
├── open_dnp3_slave.xml
└── output
│ └── profile.html
├── schema
├── APL.xsd
├── CSToCppXMLBinder.exe
├── DNP.xsd
├── MasterTestSet.xsd
├── ReBuildCSharpFromSchema.bat
└── SlaveTestSet.xsd
├── src
├── opendnp3
│ ├── APL
│ │ ├── ASIOSerialHelpers.cpp
│ │ ├── ASIOSerialHelpers.h
│ │ ├── AsyncLayerInterfaces.cpp
│ │ ├── AsyncLayerInterfaces.h
│ │ ├── AsyncResult.cpp
│ │ ├── AsyncResult.h
│ │ ├── AsyncTaskBase.cpp
│ │ ├── AsyncTaskBase.h
│ │ ├── AsyncTaskContinuous.cpp
│ │ ├── AsyncTaskContinuous.h
│ │ ├── AsyncTaskGroup.cpp
│ │ ├── AsyncTaskGroup.h
│ │ ├── AsyncTaskInterfaces.h
│ │ ├── AsyncTaskNonPeriodic.cpp
│ │ ├── AsyncTaskNonPeriodic.h
│ │ ├── AsyncTaskPeriodic.cpp
│ │ ├── AsyncTaskPeriodic.h
│ │ ├── AsyncTaskScheduler.cpp
│ │ ├── AsyncTaskScheduler.h
│ │ ├── BaseDataTypes.cpp
│ │ ├── BaseDataTypes.h
│ │ ├── BoundNotifier.h
│ │ ├── CRC.cpp
│ │ ├── CRC.h
│ │ ├── CachedLogVariable.h
│ │ ├── ChangeBuffer.h
│ │ ├── CommandInterfaces.h
│ │ ├── CommandManager.cpp
│ │ ├── CommandManager.h
│ │ ├── CommandQueue.cpp
│ │ ├── CommandQueue.h
│ │ ├── CommandResponseQueue.cpp
│ │ ├── CommandResponseQueue.h
│ │ ├── CommandTypes.cpp
│ │ ├── CommandTypes.h
│ │ ├── Configure.h
│ │ ├── CopyableBuffer.cpp
│ │ ├── CopyableBuffer.h
│ │ ├── DataInterfaces.h
│ │ ├── DataTypes.h
│ │ ├── DeleteAny.h
│ │ ├── EventLock.cpp
│ │ ├── EventLock.h
│ │ ├── EventLockBase.h
│ │ ├── EventSet.h
│ │ ├── Exception.cpp
│ │ ├── Exception.h
│ │ ├── FlexibleDataObserver.cpp
│ │ ├── FlexibleDataObserver.h
│ │ ├── Function.h
│ │ ├── GetKeys.h
│ │ ├── IEventLock.h
│ │ ├── IHandlerAsync.cpp
│ │ ├── IHandlerAsync.h
│ │ ├── INotifier.h
│ │ ├── IOService.cpp
│ │ ├── IOService.h
│ │ ├── IOServiceThread.cpp
│ │ ├── IOServiceThread.h
│ │ ├── IPhysicalLayerAsync.h
│ │ ├── IPhysicalLayerObserver.h
│ │ ├── IPhysicalLayerSource.h
│ │ ├── ISubject.h
│ │ ├── ITimeSource.h
│ │ ├── ITimer.h
│ │ ├── ITimerSource.cpp
│ │ ├── ITimerSource.h
│ │ ├── ITransactable.h
│ │ ├── Lock.h
│ │ ├── LockBase.cpp
│ │ ├── LockBase.h
│ │ ├── LockBoost.cpp
│ │ ├── LockBoost.h
│ │ ├── Log.cpp
│ │ ├── Log.h
│ │ ├── LogBase.h
│ │ ├── LogEntry.cpp
│ │ ├── LogEntry.h
│ │ ├── LogEntryCircularBuffer.cpp
│ │ ├── LogEntryCircularBuffer.h
│ │ ├── LogToFile.cpp
│ │ ├── LogToFile.h
│ │ ├── LogToStdio.cpp
│ │ ├── LogToStdio.h
│ │ ├── LogTypes.cpp
│ │ ├── LogTypes.h
│ │ ├── LogVar.h
│ │ ├── Loggable.cpp
│ │ ├── Loggable.h
│ │ ├── Logger.cpp
│ │ ├── Logger.h
│ │ ├── LowerLayerToPhysAdapter.cpp
│ │ ├── LowerLayerToPhysAdapter.h
│ │ ├── MetricBuffer.cpp
│ │ ├── MetricBuffer.h
│ │ ├── MultiplexingDataObserver.cpp
│ │ ├── MultiplexingDataObserver.h
│ │ ├── Notifier.h
│ │ ├── PackingTemplates.h
│ │ ├── PackingUnpacking.cpp
│ │ ├── PackingUnpacking.h
│ │ ├── Parsing.cpp
│ │ ├── Parsing.h
│ │ ├── PhysLayerSettings.h
│ │ ├── PhysLoopback.cpp
│ │ ├── PhysLoopback.h
│ │ ├── PhysicalLayerAsyncASIO.h
│ │ ├── PhysicalLayerAsyncBase.cpp
│ │ ├── PhysicalLayerAsyncBase.h
│ │ ├── PhysicalLayerAsyncBaseTCP.cpp
│ │ ├── PhysicalLayerAsyncBaseTCP.h
│ │ ├── PhysicalLayerAsyncSerial.cpp
│ │ ├── PhysicalLayerAsyncSerial.h
│ │ ├── PhysicalLayerAsyncTCPClient.cpp
│ │ ├── PhysicalLayerAsyncTCPClient.h
│ │ ├── PhysicalLayerAsyncTCPServer.cpp
│ │ ├── PhysicalLayerAsyncTCPServer.h
│ │ ├── PhysicalLayerFactory.cpp
│ │ ├── PhysicalLayerFactory.h
│ │ ├── PhysicalLayerFunctors.h
│ │ ├── PhysicalLayerInstance.cpp
│ │ ├── PhysicalLayerInstance.h
│ │ ├── PhysicalLayerManager.cpp
│ │ ├── PhysicalLayerManager.h
│ │ ├── PhysicalLayerMap.cpp
│ │ ├── PhysicalLayerMap.h
│ │ ├── PhysicalLayerMonitor.cpp
│ │ ├── PhysicalLayerMonitor.h
│ │ ├── PhysicalLayerMonitorStates.cpp
│ │ ├── PhysicalLayerMonitorStates.h
│ │ ├── PhysicalLayerStates.cpp
│ │ ├── PhysicalLayerStates.h
│ │ ├── PostingNotifier.cpp
│ │ ├── PostingNotifier.h
│ │ ├── PostingNotifierSource.cpp
│ │ ├── PostingNotifierSource.h
│ │ ├── ProtocolUtil.cpp
│ │ ├── ProtocolUtil.h
│ │ ├── QualityConverter.cpp
│ │ ├── QualityConverter.h
│ │ ├── QualityMasks.h
│ │ ├── QueueingFDO.h
│ │ ├── Random.h
│ │ ├── RandomDouble.h
│ │ ├── RandomizedBuffer.cpp
│ │ ├── RandomizedBuffer.h
│ │ ├── SerialTypes.h
│ │ ├── ShiftableBuffer.cpp
│ │ ├── ShiftableBuffer.h
│ │ ├── Singleton.h
│ │ ├── SubjectBase.h
│ │ ├── SuspendTimerSource.cpp
│ │ ├── SuspendTimerSource.h
│ │ ├── SyncVar.h
│ │ ├── Thread.h
│ │ ├── ThreadBase.cpp
│ │ ├── ThreadBase.h
│ │ ├── ThreadBoost.cpp
│ │ ├── ThreadBoost.h
│ │ ├── Threadable.cpp
│ │ ├── Threadable.h
│ │ ├── TimeBase.cpp
│ │ ├── TimeBase.h
│ │ ├── TimeBoost.cpp
│ │ ├── TimeBoost.h
│ │ ├── TimeSource.cpp
│ │ ├── TimeSource.h
│ │ ├── TimeTypes.h
│ │ ├── Timeout.cpp
│ │ ├── Timeout.h
│ │ ├── TimerASIO.cpp
│ │ ├── TimerASIO.h
│ │ ├── TimerSourceASIO.cpp
│ │ ├── TimerSourceASIO.h
│ │ ├── TimingTools.cpp
│ │ ├── TimingTools.h
│ │ ├── ToHex.cpp
│ │ ├── ToHex.h
│ │ ├── TrackingTaskGroup.cpp
│ │ ├── TrackingTaskGroup.h
│ │ ├── Types.h
│ │ ├── Uncopyable.h
│ │ ├── Util.cpp
│ │ ├── Util.h
│ │ └── test
│ │ │ ├── AsyncPhysBaseTest.cpp
│ │ │ ├── AsyncPhysBaseTest.h
│ │ │ ├── AsyncSerialTestObject.cpp
│ │ │ ├── AsyncSerialTestObject.h
│ │ │ ├── TestASIO.cpp
│ │ │ ├── TestAsyncTask.cpp
│ │ │ ├── TestCastLongLongDouble.cpp
│ │ │ ├── TestCommandQueue.cpp
│ │ │ ├── TestCommandTypes.cpp
│ │ │ ├── TestLocks.cpp
│ │ │ ├── TestLog.cpp
│ │ │ ├── TestMisc.cpp
│ │ │ ├── TestPackingUnpacking.cpp
│ │ │ ├── TestParsing.cpp
│ │ │ ├── TestPhysicalLayerAsyncBase.cpp
│ │ │ ├── TestPhysicalLayerAsyncSerial.cpp
│ │ │ ├── TestPhysicalLayerAsyncTCP.cpp
│ │ │ ├── TestPhysicalLayerLoopback.cpp
│ │ │ ├── TestPhysicalLayerMonitor.cpp
│ │ │ ├── TestQualityMasks.cpp
│ │ │ ├── TestShiftableBuffer.cpp
│ │ │ ├── TestSyncVar.cpp
│ │ │ ├── TestThreading.cpp
│ │ │ ├── TestTime.cpp
│ │ │ ├── TestTimers.cpp
│ │ │ ├── TestTypes.cpp
│ │ │ ├── TestUtil.cpp
│ │ │ ├── TestXmlBinding.cpp
│ │ │ └── util
│ │ │ ├── AsyncPhysTestObject.cpp
│ │ │ ├── AsyncPhysTestObject.h
│ │ │ ├── AsyncTestObject.cpp
│ │ │ ├── AsyncTestObject.h
│ │ │ ├── AsyncTestObjectASIO.cpp
│ │ │ ├── AsyncTestObjectASIO.h
│ │ │ ├── BufferHelpers.cpp
│ │ │ ├── BufferHelpers.h
│ │ │ ├── BufferTestObject.cpp
│ │ │ ├── BufferTestObject.h
│ │ │ ├── FanoutDataObserver.h
│ │ │ ├── LogTester.cpp
│ │ │ ├── LogTester.h
│ │ │ ├── LoopbackPhysicalLayerAsync.cpp
│ │ │ ├── LoopbackPhysicalLayerAsync.h
│ │ │ ├── MockCommandAcceptor.h
│ │ │ ├── MockCommandHandler.h
│ │ │ ├── MockLogSubscriber.h
│ │ │ ├── MockLowerLayer.cpp
│ │ │ ├── MockLowerLayer.h
│ │ │ ├── MockNodeSaver.h
│ │ │ ├── MockNotifier.h
│ │ │ ├── MockPhysicalLayerAsync.cpp
│ │ │ ├── MockPhysicalLayerAsync.h
│ │ │ ├── MockPhysicalLayerAsyncTS.cpp
│ │ │ ├── MockPhysicalLayerAsyncTS.h
│ │ │ ├── MockPhysicalLayerMonitor.cpp
│ │ │ ├── MockPhysicalLayerMonitor.h
│ │ │ ├── MockPhysicalLayerSource.cpp
│ │ │ ├── MockPhysicalLayerSource.h
│ │ │ ├── MockResponseAcceptor.cpp
│ │ │ ├── MockResponseAcceptor.h
│ │ │ ├── MockTimerSource.cpp
│ │ │ ├── MockTimerSource.h
│ │ │ ├── MockUpperLayer.cpp
│ │ │ ├── MockUpperLayer.h
│ │ │ ├── PhysicalLayerWrapper.cpp
│ │ │ ├── PhysicalLayerWrapper.h
│ │ │ ├── PhysicalLayerWrapperFactory.h
│ │ │ ├── TestHelpers.h
│ │ │ ├── TestTypedefs.h
│ │ │ ├── WrappedTcpPipe.cpp
│ │ │ └── WrappedTcpPipe.h
│ ├── DNP3
│ │ ├── APDU.cpp
│ │ ├── APDU.h
│ │ ├── APDUConstants.cpp
│ │ ├── APDUConstants.h
│ │ ├── AlwaysOpeningVtoRouter.cpp
│ │ ├── AlwaysOpeningVtoRouter.h
│ │ ├── AppChannelStates.cpp
│ │ ├── AppChannelStates.h
│ │ ├── AppConfig.h
│ │ ├── AppHeader.cpp
│ │ ├── AppHeader.h
│ │ ├── AppInterfaces.cpp
│ │ ├── AppInterfaces.h
│ │ ├── AppLayer.cpp
│ │ ├── AppLayer.h
│ │ ├── AppLayerChannel.cpp
│ │ ├── AppLayerChannel.h
│ │ ├── AsyncStackManager.cpp
│ │ ├── AsyncStackManager.h
│ │ ├── BufferSetTypes.h
│ │ ├── BufferTypes.cpp
│ │ ├── BufferTypes.h
│ │ ├── CTOHistory.h
│ │ ├── ClassCounter.cpp
│ │ ├── ClassCounter.h
│ │ ├── ClassMask.h
│ │ ├── ControlTasks.cpp
│ │ ├── ControlTasks.h
│ │ ├── DNPCommandMaster.cpp
│ │ ├── DNPCommandMaster.h
│ │ ├── DNPConstants.h
│ │ ├── DNPCrc.cpp
│ │ ├── DNPCrc.h
│ │ ├── DNPDatabaseTypes.h
│ │ ├── DNPExceptions.h
│ │ ├── DNPFromStream.h
│ │ ├── DNPToStream.h
│ │ ├── DataPoll.cpp
│ │ ├── DataPoll.h
│ │ ├── Database.cpp
│ │ ├── Database.h
│ │ ├── DatabaseInterfaces.h
│ │ ├── DeviceTemplate.cpp
│ │ ├── DeviceTemplate.h
│ │ ├── DeviceTemplateTypes.h
│ │ ├── EnhancedVto.cpp
│ │ ├── EnhancedVto.h
│ │ ├── EnhancedVtoRouter.cpp
│ │ ├── EnhancedVtoRouter.h
│ │ ├── EventBufferBase.h
│ │ ├── EventBuffers.h
│ │ ├── EventTypes.h
│ │ ├── HeaderReadIterator.cpp
│ │ ├── HeaderReadIterator.h
│ │ ├── IFrameSink.h
│ │ ├── ILinkContext.h
│ │ ├── ILinkRouter.h
│ │ ├── IStackObserver.cpp
│ │ ├── IStackObserver.h
│ │ ├── IVtoEventAcceptor.h
│ │ ├── IndexedWriteIterator.cpp
│ │ ├── IndexedWriteIterator.h
│ │ ├── LinkChannel.cpp
│ │ ├── LinkChannel.h
│ │ ├── LinkConfig.h
│ │ ├── LinkFrame.cpp
│ │ ├── LinkFrame.h
│ │ ├── LinkHeader.cpp
│ │ ├── LinkHeader.h
│ │ ├── LinkLayer.cpp
│ │ ├── LinkLayer.h
│ │ ├── LinkLayerConstants.cpp
│ │ ├── LinkLayerConstants.h
│ │ ├── LinkLayerReceiver.cpp
│ │ ├── LinkLayerReceiver.h
│ │ ├── LinkLayerRouter.cpp
│ │ ├── LinkLayerRouter.h
│ │ ├── LinkReceiverStates.cpp
│ │ ├── LinkReceiverStates.h
│ │ ├── LinkRoute.cpp
│ │ ├── LinkRoute.h
│ │ ├── Master.cpp
│ │ ├── Master.h
│ │ ├── MasterConfig.h
│ │ ├── MasterConfigTypes.h
│ │ ├── MasterSchedule.cpp
│ │ ├── MasterSchedule.h
│ │ ├── MasterStack.cpp
│ │ ├── MasterStack.h
│ │ ├── MasterStackConfig.h
│ │ ├── MasterStates.cpp
│ │ ├── MasterStates.h
│ │ ├── MasterTaskBase.cpp
│ │ ├── MasterTaskBase.h
│ │ ├── ObjectHeader.cpp
│ │ ├── ObjectHeader.h
│ │ ├── ObjectInterfaces.cpp
│ │ ├── ObjectInterfaces.h
│ │ ├── ObjectReadIterator.cpp
│ │ ├── ObjectReadIterator.h
│ │ ├── ObjectWriteIterator.cpp
│ │ ├── ObjectWriteIterator.h
│ │ ├── Objects.cpp
│ │ ├── Objects.h
│ │ ├── PointClass.cpp
│ │ ├── PointClass.h
│ │ ├── PriLinkLayerStates.cpp
│ │ ├── PriLinkLayerStates.h
│ │ ├── ResponseContext.cpp
│ │ ├── ResponseContext.h
│ │ ├── ResponseLoader.cpp
│ │ ├── ResponseLoader.h
│ │ ├── SecLinkLayerStates.cpp
│ │ ├── SecLinkLayerStates.h
│ │ ├── Slave.cpp
│ │ ├── Slave.h
│ │ ├── SlaveConfig.cpp
│ │ ├── SlaveConfig.h
│ │ ├── SlaveEventBuffer.cpp
│ │ ├── SlaveEventBuffer.h
│ │ ├── SlaveResponseTypes.cpp
│ │ ├── SlaveResponseTypes.h
│ │ ├── SlaveStack.cpp
│ │ ├── SlaveStack.h
│ │ ├── SlaveStackConfig.h
│ │ ├── SlaveStates.cpp
│ │ ├── SlaveStates.h
│ │ ├── SolicitedChannel.cpp
│ │ ├── SolicitedChannel.h
│ │ ├── Stack.cpp
│ │ ├── Stack.h
│ │ ├── StackManager.cpp
│ │ ├── StackManager.h
│ │ ├── StartupTasks.cpp
│ │ ├── StartupTasks.h
│ │ ├── TLS_Base.cpp
│ │ ├── TLS_Base.h
│ │ ├── TransportConstants.h
│ │ ├── TransportLayer.cpp
│ │ ├── TransportLayer.h
│ │ ├── TransportRx.cpp
│ │ ├── TransportRx.h
│ │ ├── TransportStates.cpp
│ │ ├── TransportStates.h
│ │ ├── TransportTx.cpp
│ │ ├── TransportTx.h
│ │ ├── UnsolicitedChannel.cpp
│ │ ├── UnsolicitedChannel.h
│ │ ├── VtoConfig.h
│ │ ├── VtoData.cpp
│ │ ├── VtoData.h
│ │ ├── VtoDataInterface.h
│ │ ├── VtoEventBufferAdapter.h
│ │ ├── VtoReader.cpp
│ │ ├── VtoReader.h
│ │ ├── VtoRouter.cpp
│ │ ├── VtoRouter.h
│ │ ├── VtoRouterManager.cpp
│ │ ├── VtoRouterManager.h
│ │ ├── VtoRouterSettings.cpp
│ │ ├── VtoRouterSettings.h
│ │ ├── VtoTransmitTask.cpp
│ │ ├── VtoTransmitTask.h
│ │ ├── VtoWriter.cpp
│ │ ├── VtoWriter.h
│ │ └── test
│ │ │ ├── AppLayerTest.cpp
│ │ │ ├── AppLayerTest.h
│ │ │ ├── ComparingDataObserver.cpp
│ │ │ ├── ComparingDataObserver.h
│ │ │ ├── DNPHelpers.cpp
│ │ │ ├── DNPHelpers.h
│ │ │ ├── DatabaseTestObject.h
│ │ │ ├── IntegrationTest.cpp
│ │ │ ├── IntegrationTest.h
│ │ │ ├── LinkLayerRouterTest.cpp
│ │ │ ├── LinkLayerRouterTest.h
│ │ │ ├── LinkLayerTest.cpp
│ │ │ ├── LinkLayerTest.h
│ │ │ ├── LinkReceiverTest.h
│ │ │ ├── MasterTestObject.cpp
│ │ │ ├── MasterTestObject.h
│ │ │ ├── MockAppLayer.cpp
│ │ │ ├── MockAppLayer.h
│ │ │ ├── MockAppUser.cpp
│ │ │ ├── MockAppUser.h
│ │ │ ├── MockFrameSink.cpp
│ │ │ ├── MockFrameSink.h
│ │ │ ├── QueueingStackObserver.h
│ │ │ ├── ReadableVtoWriter.h
│ │ │ ├── ResponseLoaderTestObject.cpp
│ │ │ ├── ResponseLoaderTestObject.h
│ │ │ ├── SlaveTestObject.cpp
│ │ │ ├── SlaveTestObject.h
│ │ │ ├── StartupTeardownTest.cpp
│ │ │ ├── StartupTeardownTest.h
│ │ │ ├── TestAPDU.cpp
│ │ │ ├── TestAPDUWriting.cpp
│ │ │ ├── TestAppLayer.cpp
│ │ │ ├── TestCRC.cpp
│ │ │ ├── TestDatabase.cpp
│ │ │ ├── TestEnhancedVtoRouter.cpp
│ │ │ ├── TestEventBufferBase.cpp
│ │ │ ├── TestEventBuffers.cpp
│ │ │ ├── TestIntegration.cpp
│ │ │ ├── TestLinkFrameDNP.cpp
│ │ │ ├── TestLinkLayer.cpp
│ │ │ ├── TestLinkLayerRouter.cpp
│ │ │ ├── TestLinkReceiver.cpp
│ │ │ ├── TestLinkRoute.cpp
│ │ │ ├── TestMaster.cpp
│ │ │ ├── TestObjects.cpp
│ │ │ ├── TestResponseLoader.cpp
│ │ │ ├── TestSlave.cpp
│ │ │ ├── TestSlaveEventBuffer.cpp
│ │ │ ├── TestStackManager.cpp
│ │ │ ├── TestStartBoostUTF.cpp
│ │ │ ├── TestStartupTeardown.cpp
│ │ │ ├── TestTransportLayer.cpp
│ │ │ ├── TestTransportLoopback.cpp
│ │ │ ├── TestTransportScalability.cpp
│ │ │ ├── TestVtoInterface.cpp
│ │ │ ├── TestVtoLoopbackIntegration.cpp
│ │ │ ├── TestVtoOnewayIntegration.cpp
│ │ │ ├── TestVtoRouter.cpp
│ │ │ ├── TestVtoRouterManager.cpp
│ │ │ ├── TestVtoWriter.cpp
│ │ │ ├── TransportIntegrationStack.cpp
│ │ │ ├── TransportIntegrationStack.h
│ │ │ ├── TransportLoopbackTestObject.cpp
│ │ │ ├── TransportLoopbackTestObject.h
│ │ │ ├── TransportScalabilityTestObject.cpp
│ │ │ ├── TransportScalabilityTestObject.h
│ │ │ ├── TransportStackPair.cpp
│ │ │ ├── TransportStackPair.h
│ │ │ ├── TransportTestObject.cpp
│ │ │ ├── TransportTestObject.h
│ │ │ ├── VtoIntegrationTestBase.cpp
│ │ │ └── VtoIntegrationTestBase.h
│ ├── terminal
│ │ ├── ControlResponseTE.cpp
│ │ ├── ControlResponseTE.h
│ │ ├── ControlTerminalExtension.cpp
│ │ ├── ControlTerminalExtension.h
│ │ ├── DOTerminalExtension.cpp
│ │ ├── DOTerminalExtension.h
│ │ ├── FlexibleObserverTerminalExtension.cpp
│ │ ├── FlexibleObserverTerminalExtension.h
│ │ ├── LineReader.cpp
│ │ ├── LineReader.h
│ │ ├── LogTerminalExtension.cpp
│ │ ├── LogTerminalExtension.h
│ │ ├── PhysicalLayerIOStreamAsync.cpp
│ │ ├── PhysicalLayerIOStreamAsync.h
│ │ ├── PhysicalLayerSyncProxy.cpp
│ │ ├── PhysicalLayerSyncProxy.h
│ │ ├── Terminal.cpp
│ │ ├── Terminal.h
│ │ ├── TerminalInterfaces.cpp
│ │ ├── TerminalInterfaces.h
│ │ ├── TokenNode.h
│ │ └── test
│ │ │ ├── TestPhysicalLayerSyncProxy.cpp
│ │ │ └── TestTerminal.cpp
│ ├── testset
│ │ ├── AddressScanner.cpp
│ │ ├── AddressScanner.h
│ │ ├── StackHelpers.cpp
│ │ ├── StackHelpers.h
│ │ └── main.cpp
│ └── xml
│ │ ├── APL
│ │ ├── INodeSaver.h
│ │ ├── PhysicalLayerManagerXML.cpp
│ │ ├── PhysicalLayerManagerXML.h
│ │ ├── PhysicalLayerXMLFactory.cpp
│ │ ├── PhysicalLayerXMLFactory.h
│ │ ├── SingleNodeSaver.h
│ │ ├── XMLConversion.cpp
│ │ ├── XMLConversion.h
│ │ ├── XML_APL.cpp
│ │ ├── XML_APL.h
│ │ ├── tinybinding.cpp
│ │ └── tinybinding.h
│ │ ├── DNP3
│ │ ├── XML_DNP3.cpp
│ │ ├── XML_DNP3.h
│ │ ├── XML_TestSet.cpp
│ │ ├── XML_TestSet.h
│ │ ├── XmlToConfig.cpp
│ │ └── XmlToConfig.h
│ │ └── binding
│ │ ├── APLXML_Base.cpp
│ │ ├── APLXML_Base.h
│ │ ├── APLXML_DNP.cpp
│ │ ├── APLXML_DNP.h
│ │ ├── APLXML_MTS.cpp
│ │ ├── APLXML_MTS.h
│ │ ├── APLXML_STS.cpp
│ │ └── APLXML_STS.h
└── tinyxml
│ ├── tinystr.cpp
│ ├── tinystr.h
│ ├── tinyxml.cpp
│ ├── tinyxml.h
│ ├── tinyxmlerror.cpp
│ └── tinyxmlparser.cpp
├── swig
└── swigDNP3.i
├── teamcity
├── teamcity_boost.cpp
├── teamcity_messages.cpp
└── teamcity_messages.h
├── tools
└── install_scripts
│ ├── boost
│ ├── 1_43
│ │ ├── install-boost.bat
│ │ └── install-boost.sh
│ ├── 1_46_1
│ │ ├── install-boost.bat
│ │ └── install-boost.sh
│ └── 1_47_0
│ │ ├── install-boost-64.bat
│ │ ├── install-boost.bat
│ │ └── install-boost.sh
│ └── crosstool
│ └── install-crosstool.sh
├── version.hpp
├── vstudio10
├── APL.vcxproj
├── APL.vcxproj.filters
├── APLTestTools.vcxproj
├── APLTestTools.vcxproj.filters
├── APLXML.vcxproj
├── APLXML.vcxproj.filters
├── DNP.sln
├── DNP3.vcxproj
├── DNP3.vcxproj.filters
├── DNP3Java.vcxproj
├── DNP3Java.vcxproj.filters
├── DNP3Test.vcxproj
├── DNP3Test.vcxproj.filters
├── DNP3XML.vcxproj
├── DNP3XML.vcxproj.filters
├── MasterDemo.vcxproj
├── MasterDemo.vcxproj.filters
├── SlaveDemo.vcxproj
├── SlaveDemo.vcxproj.filters
├── Terminal.vcxproj
├── Terminal.vcxproj.filters
├── TerminalTest.vcxproj
├── TerminalTest.vcxproj.filters
├── TestAPL.vcxproj
├── TestAPL.vcxproj.filters
├── TestSet.vcxproj
├── TestSet.vcxproj.filters
├── XMLBindings.vcxproj
├── XMLBindings.vcxproj.filters
├── tinyxml.vcxproj
└── tinyxml.vcxproj.filters
└── windows
├── BoostLibs
└── x86
│ ├── boost_date_time-vc100-mt-1_47.dll
│ ├── boost_system-vc100-mt-1_47.dll
│ └── boost_thread-vc100-mt-1_47.dll
├── CSToCppXMLBinder
├── Bind.cs
├── CSToCppXMLBinder.csproj
└── CppBinder.cs
├── DotNetAdapter
├── AssemblyInfo.cpp
├── CommandAcceptorAdapter.cpp
├── CommandAcceptorAdapter.h
├── Conversions.cpp
├── Conversions.h
├── DotNetAdapter.vcxproj
├── DotNetAdapter.vcxproj.filters
├── FilterLevel.h
├── LogAdapter.cpp
├── LogAdapter.h
├── MasterDataObserverAdapter.cpp
├── MasterDataObserverAdapter.h
├── ReadMe.txt
├── SlaveCommandAcceptorAdapter.cpp
├── SlaveCommandAcceptorAdapter.h
├── SlaveDataObserverAdapter.cpp
├── SlaveDataObserverAdapter.h
├── StackManager.cpp
├── StackManager.h
├── Stdafx.cpp
├── Stdafx.h
├── app.aps
├── app.ico
├── app.rc
└── resource.h
├── DotNetInterface
├── CommandTypes.cs
├── ConfigObjects.cs
├── Conversions.cs
├── DataTypes.cs
├── DotNetInterface.csproj
├── ICommandAcceptor.cs
├── IDataObserver.cs
├── IFuture.cs
├── ILogHandler.cs
├── LogTypes.cs
├── Properties
│ └── AssemblyInfo.cs
├── SerialSettings.cs
└── Tests
│ └── ConfigSerializationTestSuite.cs
├── DotNetMasterDemo
├── DotNetMasterDemo.csproj
├── Program.cs
└── Properties
│ └── AssemblyInfo.cs
├── DotNetSlaveDemo
├── DotNetSlaveDemo.csproj
├── Program.cs
└── Properties
│ └── AssemblyInfo.cs
├── DotNetTestSet
├── DisplayAdapterDataObserver.cs
├── DotNetTestSet.csproj
├── LogControlAdapter.cs
├── Program.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── TestSetForm.Designer.cs
├── TestSetForm.cs
└── TestSetForm.resx
├── DotNetTestSetInstaller
└── DotNetTestSetInstaller.vdproj
├── TestSetControlLibrary
├── FilterLevelComboBox.cs
├── FlickerFreeListView.cs
├── IMeasurementSource.cs
├── LinkLayerSettingsControl.Designer.cs
├── LinkLayerSettingsControl.cs
├── LinkLayerSettingsControl.resx
├── LogControl.Designer.cs
├── LogControl.cs
├── LogControl.resx
├── MasterDataDisplay.Designer.cs
├── MasterDataDisplay.cs
├── MasterDataDisplay.resx
├── MasterSettingsForm.Designer.cs
├── MasterSettingsForm.cs
├── MasterSettingsForm.resx
├── Properties
│ └── AssemblyInfo.cs
├── SerialSettingsForm.Designer.cs
├── SerialSettingsForm.cs
├── SerialSettingsForm.resx
├── SetpointForm.Designer.cs
├── SetpointForm.cs
├── SetpointForm.resx
├── StackBrowser.Designer.cs
├── StackBrowser.cs
├── StackBrowser.resx
├── StackDisplayControl.Designer.cs
├── StackDisplayControl.cs
├── StackDisplayControl.resx
├── TcpClientSettings.cs
├── TcpSettingsForm.Designer.cs
├── TcpSettingsForm.cs
├── TcpSettingsForm.resx
├── TestSetControlLibrary.csproj
├── TimeSeriesChartForm.Designer.cs
├── TimeSeriesChartForm.cs
└── TimeSeriesChartForm.resx
└── TestSetInstaller
├── EULA.RTF
├── TestSetInstaller.vdproj
└── icons
├── dnp_banner.bmp
├── square_dnp_16.ico
├── square_dnp_32.ico
└── square_dnp_48.ico
/.gitignore:
--------------------------------------------------------------------------------
1 | dnp3testset
2 | test-apl
3 | test-dnp3
4 | test-terminal
5 | demo-master-cpp
6 | demo-slave-cpp
7 |
8 | *.a
9 | *.gcda
10 | *.gcno
11 | *.iml
12 | *.la
13 | *.lo
14 | *.log
15 | *.map
16 | *.o
17 | *.opensdf
18 | *.sdf
19 | *.so
20 | *.user
21 | *~
22 | .*.swp
23 | *.ncb
24 | *.suo
25 | .DS_Store
26 | .deps
27 | .dirstamp
28 | .idea
29 | .libs
30 | .DS_Store
31 |
32 | JavaDNP3.cpp
33 | JavaDNP3.h
34 | PythonDNP3.cpp
35 | PythonDNP3.h
36 |
37 | /maven/
38 | /swig/.java-built
39 |
40 | /*/pc_linux_arm
41 | /schema/*.cs
42 | /schema/*.xsx
43 | /TestSet/*.xml
44 | /coverage-*
45 | /doc
46 | /lcov
47 | /org
48 | /tools/boostlib
49 | /tools/install_scripts/boost/*/temp
50 | Debug
51 | Release
52 | TestAPL/TestSingle.tiny.xml
53 | TestSingle.tiny.xml
54 | ipch
55 | pc_cygwin
56 |
57 |
58 | __init__.py
59 | __init__.pyc
60 | pyopendnp3.py
61 | pyopendnp3.pyc
62 |
63 | /autom4te.cache
64 | /build-aux
65 | /config/autotools/m4/libtool.m4
66 | /config/autotools/m4/ltoptions.m4
67 | /config/autotools/m4/ltsugar.m4
68 | /config/autotools/m4/ltversion.m4
69 | /config/autotools/m4/lt~obsolete.m4
70 | /configure
71 | Makefile
72 | Makefile.in
73 | aclocal.m4
74 | compile.log
75 | config.h
76 | config.h.in
77 | config.log
78 | config.status
79 | configure
80 | configure.in
81 | libtool
82 | stamp-h1
83 |
84 | *target*
85 |
86 |
--------------------------------------------------------------------------------
/AUTHORS:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gec/dnp3/6cfd21b1c799321eb544275586079251055a2fc3/AUTHORS
--------------------------------------------------------------------------------
/ChangeLog:
--------------------------------------------------------------------------------
1 | See CHANGELOG.markdown.
2 |
--------------------------------------------------------------------------------
/FILE_LICENSE:
--------------------------------------------------------------------------------
1 |
2 | Licensed to Green Energy Corp (www.greenenergycorp.com) under one or
3 | more contributor license agreements. See the NOTICE file distributed
4 | with this work for additional information regarding copyright ownership.
5 | Green Energy Corp licenses this file to you under the Apache License,
6 | Version 2.0 (the "License"); you may not use this file except in
7 | compliance with the License. You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 |
17 |
--------------------------------------------------------------------------------
/NEWS:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gec/dnp3/6cfd21b1c799321eb544275586079251055a2fc3/NEWS
--------------------------------------------------------------------------------
/NOTICE:
--------------------------------------------------------------------------------
1 | =========================================================================
2 | == NOTICE file corresponding to the section 4 d of ==
3 | == the Apache License, Version 2.0, ==
4 | == in this case for the Green Energy Corp DNP3 distribution. ==
5 | =========================================================================
6 |
7 | This product includes software developed by Green Energy Corp
8 | (http://www.greenenergycorp.com/).
9 |
10 | Please read the LICENSE file present in the root directory of this
11 | distribution.
12 |
13 | Aside from contributions to the Green Energy Corporation DNP3 distribution, this software also
14 | includes:
15 | tinyxml (http://sourceforge.net/projects/tinyxml/)
16 | - Modified source distribution derived from release 2.5.3
17 | - http://www.opensource.org/licenses/zlib-license.php
18 |
19 | Project requires, not packaged:
20 | * boost version 1.43 or later under the Boost Software License, and
21 | can be downloaded from http://www.boost.org
22 |
23 |
24 |
--------------------------------------------------------------------------------
/config/JNI_INCLUDES.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | <_ProjectFileVersion>10.0.30319.1
5 |
6 |
7 |
8 | $(JAVA_HOME)\include;$(JAVA_HOME)\include\win32;%(AdditionalIncludeDirectories)
9 |
10 |
11 |
--------------------------------------------------------------------------------
/config/JNI_INCLUDES.vsprops:
--------------------------------------------------------------------------------
1 |
2 |
7 |
11 |
12 |
--------------------------------------------------------------------------------
/config/astyle.cfg:
--------------------------------------------------------------------------------
1 | # don't create backup files
2 | --style=linux
3 | --suffix=none
4 | --indent=tab
5 | #--lineend=linux
6 | --indent-cases
7 | --pad-oper
8 | --keep-one-line-statements
9 | --keep-one-line-blocks
10 | --align-pointer=type
11 |
--------------------------------------------------------------------------------
/config/autotools/m4/ax_cxx_have_sstream.m4:
--------------------------------------------------------------------------------
1 | # ===========================================================================
2 | # http://www.gnu.org/software/autoconf-archive/ax_cxx_have_sstream.html
3 | # ===========================================================================
4 | #
5 | # SYNOPSIS
6 | #
7 | # AX_CXX_HAVE_SSTREAM
8 | #
9 | # DESCRIPTION
10 | #
11 | # If the C++ library has a working stringstream, define HAVE_SSTREAM.
12 | #
13 | # LICENSE
14 | #
15 | # Copyright (c) 2008 Ben Stanley
16 | #
17 | # Copying and distribution of this file, with or without modification, are
18 | # permitted in any medium without royalty provided the copyright notice
19 | # and this notice are preserved. This file is offered as-is, without any
20 | # warranty.
21 |
22 | #serial 6
23 |
24 | AU_ALIAS([AC_CXX_HAVE_SSTREAM], [AX_CXX_HAVE_SSTREAM])
25 | AC_DEFUN([AX_CXX_HAVE_SSTREAM],
26 | [AC_CACHE_CHECK(whether the compiler has stringstream,
27 | ax_cv_cxx_have_sstream,
28 | [AC_REQUIRE([AX_CXX_NAMESPACES])
29 | AC_LANG_SAVE
30 | AC_LANG_CPLUSPLUS
31 | AC_TRY_COMPILE([#include
32 | #ifdef HAVE_NAMESPACES
33 | using namespace std;
34 | #endif],[stringstream message; message << "Hello"; return 0;],
35 | ax_cv_cxx_have_sstream=yes, ax_cv_cxx_have_sstream=no)
36 | AC_LANG_RESTORE
37 | ])
38 | if test "$ax_cv_cxx_have_sstream" = yes; then
39 | AC_DEFINE(HAVE_SSTREAM,,[define if the compiler has stringstream])
40 | fi
41 | ])
42 |
--------------------------------------------------------------------------------
/config/autotools/m4/ax_cxx_have_std.m4:
--------------------------------------------------------------------------------
1 | # ===========================================================================
2 | # http://www.gnu.org/software/autoconf-archive/ax_cxx_have_std.html
3 | # ===========================================================================
4 | #
5 | # SYNOPSIS
6 | #
7 | # AX_CXX_HAVE_STD
8 | #
9 | # DESCRIPTION
10 | #
11 | # If the compiler supports ISO C++ standard library (i.e., can include the
12 | # files iostream, map, iomanip and cmath), define HAVE_STD.
13 | #
14 | # LICENSE
15 | #
16 | # Copyright (c) 2008 Todd Veldhuizen
17 | # Copyright (c) 2008 Luc Maisonobe
18 | #
19 | # Copying and distribution of this file, with or without modification, are
20 | # permitted in any medium without royalty provided the copyright notice
21 | # and this notice are preserved. This file is offered as-is, without any
22 | # warranty.
23 |
24 | #serial 6
25 |
26 | AU_ALIAS([AC_CXX_HAVE_STD], [AX_CXX_HAVE_STD])
27 | AC_DEFUN([AX_CXX_HAVE_STD],
28 | [AC_CACHE_CHECK(whether the compiler supports ISO C++ standard library,
29 | ax_cv_cxx_have_std,
30 | [AC_REQUIRE([AX_CXX_NAMESPACES])
31 | AC_LANG_SAVE
32 | AC_LANG_CPLUSPLUS
33 | AC_TRY_COMPILE([#include
34 | #include