diff --git a/CMakeLists.txt b/CMakeLists.txt index 310d8e97b..a55c8e709 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,10 +15,10 @@ endif() message("CMake build is: ${CMAKE_BUILD_TYPE}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") #include(${PROJECT_SOURCE_DIR}/settings.cmake) - # other options off-by-default that you can enable option(WERROR "Set all warnings to errors" OFF) option(STATICLIBS "Builds static versions of all installed libraries" OFF) @@ -27,11 +27,8 @@ option(PROFILE "Builds the libraries with profiling support (gcc only)" OFF) set(CMAKE_REQUIRED_FLAGS ${CMAKE_CXX_FLAGS}) -set(STATICLIBS ON) - -if(NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden") -endif() +# todo: ideally setup this from setup.py invocation +set(STATICLIBS OFF) add_subdirectory(deps/pybind11) add_subdirectory(deps/dnp3) @@ -44,8 +41,17 @@ include_directories(deps/dnp3/cpp/libs/src) include_directories(deps/dnp3/deps/asio/asio/include) add_definitions(-DASIO_STANDALONE) -pybind11_add_module(pydnp3 MODULE src/pydnp3.cpp src/pydnp3asiodnp3.cpp src/pydnp3asiopal.cpp src/pydnp3opendnp3.cpp src/pydnp3openpal.cpp) +pybind11_add_module(pydnp3 + MODULE + src/pydnp3.cpp + src/pydnp3asiodnp3.cpp + src/pydnp3asiopal.cpp + src/pydnp3opendnp3.cpp + src/pydnp3opendnp3_1.cpp + src/pydnp3opendnp3_2.cpp + src/pydnp3opendnp3_3.cpp + src/pydnp3opendnp3_4.cpp + src/pydnp3openpal.cpp + +) target_link_libraries(pydnp3 PRIVATE asiopal asiodnp3 openpal opendnp3) - - - diff --git a/setup.py b/setup.py index 6c22ca946..2870f47cb 100644 --- a/setup.py +++ b/setup.py @@ -37,7 +37,7 @@ def build_extension(self, ext): cmake_args = ['-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=' + extdir, '-DPYTHON_EXECUTABLE=' + sys.executable] - cfg = 'Debug' if self.debug else 'Release' + cfg = 'Debug' build_args = ['--config', cfg] if platform.system() == "Windows": @@ -47,8 +47,7 @@ def build_extension(self, ext): build_args += ['--', '/m'] else: cmake_args += ['-DCMAKE_BUILD_TYPE=' + cfg] - cmake_args += ['-DSTATICLIBS=ON'] - build_args += ['--', '-j2'] + build_args += ['--', 'VERBOSE=1'] env = os.environ.copy() env['CXXFLAGS'] = '{} -DVERSION_INFO=\\"{}\\"'.format(env.get('CXXFLAGS', ''), diff --git a/src/opendnp3/app/parsing/ICollection.h b/src/opendnp3/app/parsing/ICollection.h index 0d68ad058..cf5bc01c7 100644 --- a/src/opendnp3/app/parsing/ICollection.h +++ b/src/opendnp3/app/parsing/ICollection.h @@ -34,7 +34,10 @@ #include #include + #include +#include +#include #include #ifdef PYDNP3_OPENDNP3 diff --git a/src/opendnp3/outstation/MeasurementConfig.h b/src/opendnp3/outstation/MeasurementConfig.h index 04b39707e..2b5e5130b 100644 --- a/src/opendnp3/outstation/MeasurementConfig.h +++ b/src/opendnp3/outstation/MeasurementConfig.h @@ -31,6 +31,7 @@ #ifndef PYDNP3_OPENDNP3_OUTSTATION_MEASUREMENTCONFIG_H #define PYDNP3_OPENDNP3_OUTSTATION_MEASUREMENTCONFIG_H +#include #include #include @@ -41,7 +42,7 @@ namespace py = pybind11; template -void declareStaticConfig(py::module &m, string const &type) +void declareStaticConfig(py::module &m, std::string const &type) { // ----- struct: opendnp3::StaticConfig ----- py::class_, opendnp3::IndexConfig>(m, ("StaticConfig" + type).c_str(), @@ -63,7 +64,7 @@ void declareStaticConfig(py::module &m, string const &type) } template -void declareEventConfig(py::module &m, string const &type) +void declareEventConfig(py::module &m, std::string const &type) { declareStaticConfig(m, type); @@ -91,7 +92,7 @@ void declareEventConfig(py::module &m, string const &type) } template -void declareDeadbandConfig(py::module &m, string const &type) +void declareDeadbandConfig(py::module &m, std::string const &type) { declareEventConfig(m, type); diff --git a/src/pydnp3opendnp3.cpp b/src/pydnp3opendnp3.cpp index d43249500..68a8ca31f 100644 --- a/src/pydnp3opendnp3.cpp +++ b/src/pydnp3opendnp3.cpp @@ -28,139 +28,19 @@ * }}} */ -#include -#include -#include -#include - #include -#include "opendnp3/AllHeaders.h" +#include "pydnp3opendnp3_1.hpp" +#include "pydnp3opendnp3_2.hpp" +#include "pydnp3opendnp3_3.hpp" +#include "pydnp3opendnp3_4.hpp" namespace py = pybind11; void init_opendnp3(py::module &opendnp3) { - // -------------------- PYDNP3.OPENDNP3 -------------------- - bind_OpendnpLogLevels(opendnp3); - bind_StackStatistics(opendnp3); - bind_AnalogOutputStatusQuality(opendnp3); - bind_AnalogQuality(opendnp3); - bind_AssignClassType(opendnp3); - bind_GroupVariation(opendnp3); - bind_Attributes(opendnp3); - bind_AuthErrorCode(opendnp3); - bind_BinaryOutputStatusQuality(opendnp3); - bind_BinaryQuality(opendnp3); - bind_CertificateType(opendnp3); - bind_ChallengeReason(opendnp3); - bind_ChannelState(opendnp3); - bind_CommandPointState(opendnp3); - bind_CommandStatus(opendnp3); - bind_ConfigAuthMode(opendnp3); - bind_ControlCode(opendnp3); - bind_CounterQuality(opendnp3); - bind_DoubleBit(opendnp3); - bind_DoubleBitBinaryQuality(opendnp3); - bind_EventAnalogOutputStatusVariation(opendnp3); - bind_EventAnalogVariation(opendnp3); - bind_EventBinaryOutputStatusVariation(opendnp3); - bind_EventBinaryVariation(opendnp3); - bind_EventCounterVariation(opendnp3); - bind_EventDoubleBinaryVariation(opendnp3); - bind_EventFrozenCounterVariation(opendnp3); - bind_EventMode(opendnp3); - bind_EventSecurityStatVariation(opendnp3); - bind_FlagsType(opendnp3); - bind_FlowControl(opendnp3); - bind_FrozenCounterQuality(opendnp3); - bind_FunctionCode(opendnp3); - bind_HMACType(opendnp3); - bind_IndexMode(opendnp3); - bind_IntervalUnits(opendnp3); - bind_KeyChangeMethod(opendnp3); - bind_KeyStatus(opendnp3); - bind_KeyWrapAlgorithm(opendnp3); - bind_LinkFunction(opendnp3); - bind_LinkStatus(opendnp3); - bind_MasterTaskType(opendnp3); - bind_OperateType(opendnp3); - bind_Parity(opendnp3); - bind_PointClass(opendnp3); - bind_QualifierCode(opendnp3); - bind_RestartMode(opendnp3); - bind_RestartType(opendnp3); - bind_SecurityStatIndex(opendnp3); - bind_StaticAnalogOutputStatusVariation(opendnp3); - bind_StaticAnalogVariation(opendnp3); - bind_StaticBinaryOutputStatusVariation(opendnp3); - bind_StaticBinaryVariation(opendnp3); - bind_StaticCounterVariation(opendnp3); - bind_StaticDoubleBinaryVariation(opendnp3); - bind_StaticFrozenCounterVariation(opendnp3); - bind_StaticSecurityStatVariation(opendnp3); - bind_StaticTimeAndIntervalVariation(opendnp3); - bind_StaticTypeBitmask(opendnp3); - bind_StopBits(opendnp3); - bind_TaskCompletion(opendnp3); - bind_TimeSyncMode(opendnp3); - bind_TimestampMode(opendnp3); - bind_UserOperation(opendnp3); - bind_UserRole(opendnp3); - bind_ILinkListener(opendnp3); - bind_LinkConfig(opendnp3); - bind_LinkHeaderFields(opendnp3); - bind_LinkStatistics(opendnp3); - bind_GroupVariationID(opendnp3); - bind_ICollection(opendnp3); - bind_DNPTime(opendnp3); - bind_AnalogCommandEvent(opendnp3); - bind_AnalogOutput(opendnp3); - bind_AppConstants(opendnp3); - bind_QualityMasks(opendnp3); - bind_Flags(opendnp3); - bind_BaseMeasurementTypes(opendnp3); - bind_BinaryCommandEvent(opendnp3); - bind_EventType(opendnp3); - bind_ClassField(opendnp3); - bind_ControlRelayOutputBlock(opendnp3); - bind_EventCells(opendnp3); //@todo: DeadbandEventCell - bind_EventTriggers(opendnp3); - bind_IINField(opendnp3); - bind_ITransactable(opendnp3); - bind_Indexed(opendnp3); - bind_MeasurementTypes(opendnp3); - bind_SecurityStat(opendnp3); - bind_MeasurementInfo(opendnp3); - bind_MeasurementConfig(opendnp3); - bind_MeasurementTypeSpecs(opendnp3); - bind_OctetData(opendnp3); - bind_OctetString(opendnp3); - bind_ApplicationIIN(opendnp3); - bind_Cell(opendnp3); - bind_DatabaseSizes(opendnp3); - bind_EventBufferConfig(opendnp3); - bind_ICommandHandler(opendnp3); - bind_IOutstationApplication(opendnp3); - bind_IUpdateHandler(opendnp3); - bind_StaticTypeBitfield(opendnp3); - bind_OutstationParams(opendnp3); - bind_OutstationConfig(opendnp3); - bind_SimpleCommandHandler(opendnp3); - bind_CommandPointResult(opendnp3); - bind_ICommandTaskResult(opendnp3); - bind_CommandCallbackT(opendnp3); - bind_ICommandCollection(opendnp3); - bind_CommandSet(opendnp3); - bind_HeaderInfo(opendnp3); - bind_HeaderTypes(opendnp3); - bind_TaskId(opendnp3); - bind_ITaskCallback(opendnp3); - bind_TaskConfig(opendnp3); - bind_ICommandProcessor(opendnp3); - bind_TaskInfo(opendnp3); - bind_IMasterApplication(opendnp3); - bind_ISOEHandler(opendnp3); - bind_MasterParams(opendnp3); - bind_RestartOperationResult(opendnp3); -} \ No newline at end of file + init_opendnp3_1(opendnp3); + init_opendnp3_2(opendnp3); + init_opendnp3_3(opendnp3); + init_opendnp3_4(opendnp3); +} diff --git a/src/pydnp3opendnp3_1.cpp b/src/pydnp3opendnp3_1.cpp new file mode 100644 index 000000000..b2c299adb --- /dev/null +++ b/src/pydnp3opendnp3_1.cpp @@ -0,0 +1,174 @@ +#include "pydnp3opendnp3_1.hpp" + +#define PYDNP3_OPENDNP3 + +#include "opendnp3/LogLevels.h" +#include "opendnp3/StackStatistics.h" +#include "opendnp3/gen/AnalogOutputStatusQuality.h" +#include "opendnp3/gen/AnalogQuality.h" +#include "opendnp3/gen/AssignClassType.h" +#include "opendnp3/gen/GroupVariation.h" +#include "opendnp3/gen/Attributes.h" +#include "opendnp3/gen/AuthErrorCode.h" +#include "opendnp3/gen/BinaryOutputStatusQuality.h" +#include "opendnp3/gen/BinaryQuality.h" +#include "opendnp3/gen/CertificateType.h" +#include "opendnp3/gen/ChallengeReason.h" +#include "opendnp3/gen/ChannelState.h" +#include "opendnp3/gen/CommandPointState.h" +#include "opendnp3/gen/CommandStatus.h" +#include "opendnp3/gen/ConfigAuthMode.h" +#include "opendnp3/gen/ControlCode.h" +#include "opendnp3/gen/CounterQuality.h" +#include "opendnp3/gen/DoubleBit.h" +#include "opendnp3/gen/DoubleBitBinaryQuality.h" +#include "opendnp3/gen/EventAnalogOutputStatusVariation.h" +#include "opendnp3/gen/EventAnalogVariation.h" +#include "opendnp3/gen/EventBinaryOutputStatusVariation.h" +#include "opendnp3/gen/EventBinaryVariation.h" +#include "opendnp3/gen/EventCounterVariation.h" +#include "opendnp3/gen/EventDoubleBinaryVariation.h" +#include "opendnp3/gen/EventFrozenCounterVariation.h" +#include "opendnp3/gen/EventMode.h" +#include "opendnp3/gen/EventSecurityStatVariation.h" +#include "opendnp3/gen/FlagsType.h" + +namespace py = pybind11; + +void init_opendnp3_1(py::module &opendnp3) +{ + // -------------------- PYDNP3.OPENDNP3 -------------------- + bind_OpendnpLogLevels(opendnp3); + bind_StackStatistics(opendnp3); + bind_AnalogOutputStatusQuality(opendnp3); + bind_AnalogQuality(opendnp3); + bind_AssignClassType(opendnp3); + bind_GroupVariation(opendnp3); + bind_Attributes(opendnp3); + bind_AuthErrorCode(opendnp3); + bind_BinaryOutputStatusQuality(opendnp3); + bind_BinaryQuality(opendnp3); + bind_CertificateType(opendnp3); + bind_ChallengeReason(opendnp3); + bind_ChannelState(opendnp3); + bind_CommandPointState(opendnp3); + bind_CommandStatus(opendnp3); + bind_ConfigAuthMode(opendnp3); + bind_ControlCode(opendnp3); + bind_CounterQuality(opendnp3); + bind_DoubleBit(opendnp3); + bind_DoubleBitBinaryQuality(opendnp3); + bind_EventAnalogOutputStatusVariation(opendnp3); + bind_EventAnalogVariation(opendnp3); + bind_EventBinaryOutputStatusVariation(opendnp3); + bind_EventBinaryVariation(opendnp3); + bind_EventCounterVariation(opendnp3); + bind_EventDoubleBinaryVariation(opendnp3); + bind_EventFrozenCounterVariation(opendnp3); + bind_EventMode(opendnp3); + bind_EventSecurityStatVariation(opendnp3); + bind_FlagsType(opendnp3); +} + +// void init_opendnp3_2(py::module &opendnp3) +// { +// bind_FlowControl(opendnp3); +// bind_FrozenCounterQuality(opendnp3); +// bind_FunctionCode(opendnp3); +// bind_HMACType(opendnp3); +// bind_IndexMode(opendnp3); +// bind_IntervalUnits(opendnp3); +// bind_KeyChangeMethod(opendnp3); +// bind_KeyStatus(opendnp3); +// bind_KeyWrapAlgorithm(opendnp3); +// bind_LinkFunction(opendnp3); +// bind_LinkStatus(opendnp3); +// bind_MasterTaskType(opendnp3); +// bind_OperateType(opendnp3); +// bind_Parity(opendnp3); +// bind_PointClass(opendnp3); +// bind_QualifierCode(opendnp3); +// bind_RestartMode(opendnp3); +// bind_RestartType(opendnp3); +// bind_SecurityStatIndex(opendnp3); +// bind_StaticAnalogOutputStatusVariation(opendnp3); +// bind_StaticAnalogVariation(opendnp3); +// bind_StaticBinaryOutputStatusVariation(opendnp3); +// bind_StaticBinaryVariation(opendnp3); +// bind_StaticCounterVariation(opendnp3); +// bind_StaticDoubleBinaryVariation(opendnp3); +// bind_StaticFrozenCounterVariation(opendnp3); +// bind_StaticSecurityStatVariation(opendnp3); +// bind_StaticTimeAndIntervalVariation(opendnp3); +// bind_StaticTypeBitmask(opendnp3); +// bind_StopBits(opendnp3); +// } + +// void init_opendnp3_3(py::module &opendnp3) +// { +// bind_TaskCompletion(opendnp3); +// bind_TimeSyncMode(opendnp3); +// bind_TimestampMode(opendnp3); +// bind_UserOperation(opendnp3); +// bind_UserRole(opendnp3); +// bind_ILinkListener(opendnp3); +// bind_LinkConfig(opendnp3); +// bind_LinkHeaderFields(opendnp3); +// bind_LinkStatistics(opendnp3); +// bind_GroupVariationID(opendnp3); +// bind_ICollection(opendnp3); +// bind_DNPTime(opendnp3); +// bind_AnalogCommandEvent(opendnp3); +// bind_AnalogOutput(opendnp3); +// bind_AppConstants(opendnp3); +// bind_QualityMasks(opendnp3); +// bind_Flags(opendnp3); +// bind_BaseMeasurementTypes(opendnp3); +// bind_BinaryCommandEvent(opendnp3); +// bind_EventType(opendnp3); +// bind_ClassField(opendnp3); +// bind_ControlRelayOutputBlock(opendnp3); +// bind_EventCells(opendnp3); //@todo: DeadbandEventCell +// bind_EventTriggers(opendnp3); +// bind_IINField(opendnp3); +// bind_ITransactable(opendnp3); +// bind_Indexed(opendnp3); +// bind_MeasurementTypes(opendnp3); +// bind_SecurityStat(opendnp3); +// bind_MeasurementInfo(opendnp3); +// } + +// void init_opendnp3_4(py::module &opendnp3) +// { +// bind_MeasurementConfig(opendnp3); +// bind_MeasurementTypeSpecs(opendnp3); +// bind_OctetData(opendnp3); +// bind_OctetString(opendnp3); +// bind_ApplicationIIN(opendnp3); +// bind_Cell(opendnp3); +// bind_DatabaseSizes(opendnp3); +// bind_EventBufferConfig(opendnp3); +// bind_ICommandHandler(opendnp3); +// bind_IOutstationApplication(opendnp3); +// bind_IUpdateHandler(opendnp3); +// bind_StaticTypeBitfield(opendnp3); +// bind_OutstationParams(opendnp3); +// bind_OutstationConfig(opendnp3); +// bind_SimpleCommandHandler(opendnp3); +// bind_CommandPointResult(opendnp3); +// bind_ICommandTaskResult(opendnp3); +// bind_CommandCallbackT(opendnp3); +// bind_ICommandCollection(opendnp3); +// bind_CommandSet(opendnp3); +// bind_HeaderInfo(opendnp3); +// bind_HeaderTypes(opendnp3); +// bind_TaskId(opendnp3); +// bind_ITaskCallback(opendnp3); +// bind_TaskConfig(opendnp3); +// bind_ICommandProcessor(opendnp3); +// bind_TaskInfo(opendnp3); +// bind_IMasterApplication(opendnp3); +// bind_ISOEHandler(opendnp3); +// bind_MasterParams(opendnp3); +// bind_RestartOperationResult(opendnp3); +// } diff --git a/src/pydnp3opendnp3_1.hpp b/src/pydnp3opendnp3_1.hpp new file mode 100644 index 000000000..759111269 --- /dev/null +++ b/src/pydnp3opendnp3_1.hpp @@ -0,0 +1,12 @@ +#ifndef PYDNP3OPENDNP3_1_HPP +#define PYDNP3OPENDNP3_1_HPP + +#include +#include +#include +#include +#include + +void init_opendnp3_1(pybind11::module &opendnp3); + +#endif /* PYDNP3OPENDNP3_1_HPP */ diff --git a/src/pydnp3opendnp3_2.cpp b/src/pydnp3opendnp3_2.cpp new file mode 100644 index 000000000..d9ad65981 --- /dev/null +++ b/src/pydnp3opendnp3_2.cpp @@ -0,0 +1,139 @@ +#include "pydnp3opendnp3_2.hpp" + +#define PYDNP3_OPENDNP3 + +#include "opendnp3/gen/FlowControl.h" +#include "opendnp3/gen/FrozenCounterQuality.h" +#include "opendnp3/gen/FunctionCode.h" +#include "opendnp3/gen/HMACType.h" +#include "opendnp3/gen/IndexMode.h" +#include "opendnp3/gen/IntervalUnits.h" +#include "opendnp3/gen/KeyChangeMethod.h" +#include "opendnp3/gen/KeyStatus.h" +#include "opendnp3/gen/KeyWrapAlgorithm.h" +#include "opendnp3/gen/LinkFunction.h" +#include "opendnp3/gen/LinkStatus.h" +#include "opendnp3/gen/MasterTaskType.h" +#include "opendnp3/gen/OperateType.h" +#include "opendnp3/gen/Parity.h" +#include "opendnp3/gen/PointClass.h" +#include "opendnp3/gen/QualifierCode.h" +#include "opendnp3/gen/RestartMode.h" +#include "opendnp3/gen/RestartType.h" +#include "opendnp3/gen/SecurityStatIndex.h" +#include "opendnp3/gen/StaticAnalogOutputStatusVariation.h" +#include "opendnp3/gen/StaticAnalogVariation.h" +#include "opendnp3/gen/StaticBinaryOutputStatusVariation.h" +#include "opendnp3/gen/StaticBinaryVariation.h" +#include "opendnp3/gen/StaticCounterVariation.h" +#include "opendnp3/gen/StaticDoubleBinaryVariation.h" +#include "opendnp3/gen/StaticFrozenCounterVariation.h" +#include "opendnp3/gen/StaticSecurityStatVariation.h" +#include "opendnp3/gen/StaticTimeAndIntervalVariation.h" +#include "opendnp3/gen/StaticTypeBitmask.h" +#include "opendnp3/gen/StopBits.h" + +namespace py = pybind11; + +void init_opendnp3_2(py::module &opendnp3) +{ + bind_FlowControl(opendnp3); + bind_FrozenCounterQuality(opendnp3); + bind_FunctionCode(opendnp3); + bind_HMACType(opendnp3); + bind_IndexMode(opendnp3); + bind_IntervalUnits(opendnp3); + bind_KeyChangeMethod(opendnp3); + bind_KeyStatus(opendnp3); + bind_KeyWrapAlgorithm(opendnp3); + bind_LinkFunction(opendnp3); + bind_LinkStatus(opendnp3); + bind_MasterTaskType(opendnp3); + bind_OperateType(opendnp3); + bind_Parity(opendnp3); + bind_PointClass(opendnp3); + bind_QualifierCode(opendnp3); + bind_RestartMode(opendnp3); + bind_RestartType(opendnp3); + bind_SecurityStatIndex(opendnp3); + bind_StaticAnalogOutputStatusVariation(opendnp3); + bind_StaticAnalogVariation(opendnp3); + bind_StaticBinaryOutputStatusVariation(opendnp3); + bind_StaticBinaryVariation(opendnp3); + bind_StaticCounterVariation(opendnp3); + bind_StaticDoubleBinaryVariation(opendnp3); + bind_StaticFrozenCounterVariation(opendnp3); + bind_StaticSecurityStatVariation(opendnp3); + bind_StaticTimeAndIntervalVariation(opendnp3); + bind_StaticTypeBitmask(opendnp3); + bind_StopBits(opendnp3); +} + +// void init_opendnp3_3(py::module &opendnp3) +// { +// bind_TaskCompletion(opendnp3); +// bind_TimeSyncMode(opendnp3); +// bind_TimestampMode(opendnp3); +// bind_UserOperation(opendnp3); +// bind_UserRole(opendnp3); +// bind_ILinkListener(opendnp3); +// bind_LinkConfig(opendnp3); +// bind_LinkHeaderFields(opendnp3); +// bind_LinkStatistics(opendnp3); +// bind_GroupVariationID(opendnp3); +// bind_ICollection(opendnp3); +// bind_DNPTime(opendnp3); +// bind_AnalogCommandEvent(opendnp3); +// bind_AnalogOutput(opendnp3); +// bind_AppConstants(opendnp3); +// bind_QualityMasks(opendnp3); +// bind_Flags(opendnp3); +// bind_BaseMeasurementTypes(opendnp3); +// bind_BinaryCommandEvent(opendnp3); +// bind_EventType(opendnp3); +// bind_ClassField(opendnp3); +// bind_ControlRelayOutputBlock(opendnp3); +// bind_EventCells(opendnp3); //@todo: DeadbandEventCell +// bind_EventTriggers(opendnp3); +// bind_IINField(opendnp3); +// bind_ITransactable(opendnp3); +// bind_Indexed(opendnp3); +// bind_MeasurementTypes(opendnp3); +// bind_SecurityStat(opendnp3); +// bind_MeasurementInfo(opendnp3); +// } + +// void init_opendnp3_4(py::module &opendnp3) +// { +// bind_MeasurementConfig(opendnp3); +// bind_MeasurementTypeSpecs(opendnp3); +// bind_OctetData(opendnp3); +// bind_OctetString(opendnp3); +// bind_ApplicationIIN(opendnp3); +// bind_Cell(opendnp3); +// bind_DatabaseSizes(opendnp3); +// bind_EventBufferConfig(opendnp3); +// bind_ICommandHandler(opendnp3); +// bind_IOutstationApplication(opendnp3); +// bind_IUpdateHandler(opendnp3); +// bind_StaticTypeBitfield(opendnp3); +// bind_OutstationParams(opendnp3); +// bind_OutstationConfig(opendnp3); +// bind_SimpleCommandHandler(opendnp3); +// bind_CommandPointResult(opendnp3); +// bind_ICommandTaskResult(opendnp3); +// bind_CommandCallbackT(opendnp3); +// bind_ICommandCollection(opendnp3); +// bind_CommandSet(opendnp3); +// bind_HeaderInfo(opendnp3); +// bind_HeaderTypes(opendnp3); +// bind_TaskId(opendnp3); +// bind_ITaskCallback(opendnp3); +// bind_TaskConfig(opendnp3); +// bind_ICommandProcessor(opendnp3); +// bind_TaskInfo(opendnp3); +// bind_IMasterApplication(opendnp3); +// bind_ISOEHandler(opendnp3); +// bind_MasterParams(opendnp3); +// bind_RestartOperationResult(opendnp3); +// } diff --git a/src/pydnp3opendnp3_2.hpp b/src/pydnp3opendnp3_2.hpp new file mode 100644 index 000000000..48864b126 --- /dev/null +++ b/src/pydnp3opendnp3_2.hpp @@ -0,0 +1,13 @@ +#ifndef PYDNP3OPENDNP3_2_HPP +#define PYDNP3OPENDNP3_2_HPP + +#include +#include +#include +#include + +#include + +void init_opendnp3_2(pybind11::module &opendnp3); + +#endif /* PYDNP3OPENDNP3_2_HPP */ diff --git a/src/pydnp3opendnp3_3.cpp b/src/pydnp3opendnp3_3.cpp new file mode 100644 index 000000000..4453d3cc2 --- /dev/null +++ b/src/pydnp3opendnp3_3.cpp @@ -0,0 +1,105 @@ +#include "pydnp3opendnp3_3.hpp" + +#define PYDNP3_OPENDNP3 + +#include "opendnp3/gen/TaskCompletion.h" +#include "opendnp3/gen/TimeSyncMode.h" +#include "opendnp3/gen/TimestampMode.h" +#include "opendnp3/gen/UserOperation.h" +#include "opendnp3/gen/UserRole.h" +#include "opendnp3/link/ILinkListener.h" +#include "opendnp3/link/LinkConfig.h" +#include "opendnp3/link/LinkHeaderFields.h" +#include "opendnp3/link/LinkStatistics.h" +#include "opendnp3/app/GroupVariationID.h" +#include "opendnp3/app/parsing/ICollection.h" +#include "opendnp3/app/DNPTime.h" +#include "opendnp3/app/AnalogCommandEvent.h" +#include "opendnp3/app/AnalogOutput.h" +#include "opendnp3/app/AppConstants.h" +#include "opendnp3/app/QualityMasks.h" +#include "opendnp3/app/Flags.h" +#include "opendnp3/app/BaseMeasurementTypes.h" +#include "opendnp3/app/BinaryCommandEvent.h" +#include "opendnp3/app/EventType.h" +#include "opendnp3/app/ClassField.h" +#include "opendnp3/app/ControlRelayOutputBlock.h" +#include "opendnp3/app/EventCells.h" +#include "opendnp3/app/EventTriggers.h" +#include "opendnp3/app/IINField.h" +#include "opendnp3/app/ITransactable.h" +#include "opendnp3/app/Indexed.h" +#include "opendnp3/app/MeasurementTypes.h" +#include "opendnp3/app/SecurityStat.h" +#include "opendnp3/app/MeasurementInfo.h" + +namespace py = pybind11; + +void init_opendnp3_3(py::module &opendnp3) +{ + bind_TaskCompletion(opendnp3); + bind_TimeSyncMode(opendnp3); + bind_TimestampMode(opendnp3); + bind_UserOperation(opendnp3); + bind_UserRole(opendnp3); + bind_ILinkListener(opendnp3); + bind_LinkConfig(opendnp3); + bind_LinkHeaderFields(opendnp3); + bind_LinkStatistics(opendnp3); + bind_GroupVariationID(opendnp3); + bind_ICollection(opendnp3); + bind_DNPTime(opendnp3); + bind_AnalogCommandEvent(opendnp3); + bind_AnalogOutput(opendnp3); + bind_AppConstants(opendnp3); + bind_QualityMasks(opendnp3); + bind_Flags(opendnp3); + bind_BaseMeasurementTypes(opendnp3); + bind_BinaryCommandEvent(opendnp3); + bind_EventType(opendnp3); + bind_ClassField(opendnp3); + bind_ControlRelayOutputBlock(opendnp3); + bind_EventCells(opendnp3); //@todo: DeadbandEventCell + bind_EventTriggers(opendnp3); + bind_IINField(opendnp3); + bind_ITransactable(opendnp3); + bind_Indexed(opendnp3); + bind_MeasurementTypes(opendnp3); + bind_SecurityStat(opendnp3); + bind_MeasurementInfo(opendnp3); +} + +// void init_opendnp3_4(py::module &opendnp3) +// { +// bind_MeasurementConfig(opendnp3); +// bind_MeasurementTypeSpecs(opendnp3); +// bind_OctetData(opendnp3); +// bind_OctetString(opendnp3); +// bind_ApplicationIIN(opendnp3); +// bind_Cell(opendnp3); +// bind_DatabaseSizes(opendnp3); +// bind_EventBufferConfig(opendnp3); +// bind_ICommandHandler(opendnp3); +// bind_IOutstationApplication(opendnp3); +// bind_IUpdateHandler(opendnp3); +// bind_StaticTypeBitfield(opendnp3); +// bind_OutstationParams(opendnp3); +// bind_OutstationConfig(opendnp3); +// bind_SimpleCommandHandler(opendnp3); +// bind_CommandPointResult(opendnp3); +// bind_ICommandTaskResult(opendnp3); +// bind_CommandCallbackT(opendnp3); +// bind_ICommandCollection(opendnp3); +// bind_CommandSet(opendnp3); +// bind_HeaderInfo(opendnp3); +// bind_HeaderTypes(opendnp3); +// bind_TaskId(opendnp3); +// bind_ITaskCallback(opendnp3); +// bind_TaskConfig(opendnp3); +// bind_ICommandProcessor(opendnp3); +// bind_TaskInfo(opendnp3); +// bind_IMasterApplication(opendnp3); +// bind_ISOEHandler(opendnp3); +// bind_MasterParams(opendnp3); +// bind_RestartOperationResult(opendnp3); +// } diff --git a/src/pydnp3opendnp3_3.hpp b/src/pydnp3opendnp3_3.hpp new file mode 100644 index 000000000..1ee1233a8 --- /dev/null +++ b/src/pydnp3opendnp3_3.hpp @@ -0,0 +1,13 @@ +#ifndef PYDNP3OPENDNP3_3_HPP +#define PYDNP3OPENDNP3_3_HPP + +#include +#include +#include +#include + +#include + +void init_opendnp3_3(pybind11::module &opendnp3); + +#endif /* PYDNP3OPENDNP3_3_HPP */ diff --git a/src/pydnp3opendnp3_4.cpp b/src/pydnp3opendnp3_4.cpp new file mode 100644 index 000000000..f34ba6c45 --- /dev/null +++ b/src/pydnp3opendnp3_4.cpp @@ -0,0 +1,72 @@ +#include "pydnp3opendnp3_4.hpp" + +#define PYDNP3_OPENDNP3 + +#include "opendnp3/outstation/MeasurementConfig.h" +#include "opendnp3/app/MeasurementTypeSpecs.h" +#include "opendnp3/app/OctetData.h" +#include "opendnp3/app/OctetString.h" +#include "opendnp3/outstation/ApplicationIIN.h" +#include "opendnp3/outstation/Cell.h" +#include "opendnp3/outstation/DatabaseSizes.h" +#include "opendnp3/outstation/EventBufferConfig.h" +#include "opendnp3/outstation/ICommandHandler.h" +#include "opendnp3/outstation/IOutstationApplication.h" +#include "opendnp3/outstation/IUpdateHandler.h" +#include "opendnp3/outstation/StaticTypeBitfield.h" +#include "opendnp3/outstation/OutstationParams.h" +#include "opendnp3/outstation/OutstationConfig.h" +#include "opendnp3/outstation/SimpleCommandHandler.h" +#include "opendnp3/master/CommandPointResult.h" +#include "opendnp3/master/ICommandTaskResult.h" +#include "opendnp3/master/CommandCallbackT.h" +#include "opendnp3/master/ICommandCollection.h" +#include "opendnp3/master/CommandSet.h" +#include "opendnp3/master/HeaderInfo.h" +#include "opendnp3/master/HeaderTypes.h" +#include "opendnp3/master/TaskId.h" +#include "opendnp3/master/ITaskCallback.h" +#include "opendnp3/master/TaskConfig.h" +#include "opendnp3/master/ICommandProcessor.h" +#include "opendnp3/master/TaskInfo.h" +#include "opendnp3/master/IMasterApplication.h" +#include "opendnp3/master/ISOEHandler.h" +#include "opendnp3/master/MasterParams.h" +#include "opendnp3/master/RestartOperationResult.h" + +namespace py = pybind11; + +void init_opendnp3_4(py::module &opendnp3) +{ + bind_MeasurementConfig(opendnp3); + bind_MeasurementTypeSpecs(opendnp3); + bind_OctetData(opendnp3); + bind_OctetString(opendnp3); + bind_ApplicationIIN(opendnp3); + bind_Cell(opendnp3); + bind_DatabaseSizes(opendnp3); + bind_EventBufferConfig(opendnp3); + bind_ICommandHandler(opendnp3); + bind_IOutstationApplication(opendnp3); + bind_IUpdateHandler(opendnp3); + bind_StaticTypeBitfield(opendnp3); + bind_OutstationParams(opendnp3); + bind_OutstationConfig(opendnp3); + bind_SimpleCommandHandler(opendnp3); + bind_CommandPointResult(opendnp3); + bind_ICommandTaskResult(opendnp3); + bind_CommandCallbackT(opendnp3); + bind_ICommandCollection(opendnp3); + bind_CommandSet(opendnp3); + bind_HeaderInfo(opendnp3); + bind_HeaderTypes(opendnp3); + bind_TaskId(opendnp3); + bind_ITaskCallback(opendnp3); + bind_TaskConfig(opendnp3); + bind_ICommandProcessor(opendnp3); + bind_TaskInfo(opendnp3); + bind_IMasterApplication(opendnp3); + bind_ISOEHandler(opendnp3); + bind_MasterParams(opendnp3); + bind_RestartOperationResult(opendnp3); +} diff --git a/src/pydnp3opendnp3_4.hpp b/src/pydnp3opendnp3_4.hpp new file mode 100644 index 000000000..d5c674ba5 --- /dev/null +++ b/src/pydnp3opendnp3_4.hpp @@ -0,0 +1,13 @@ +#ifndef PYDNP3OPENDNP3_4_HPP +#define PYDNP3OPENDNP3_4_HPP + +#include +#include +#include +#include + +#include + +void init_opendnp3_4(pybind11::module &opendnp3); + +#endif /* PYDNP3OPENDNP3_4_HPP */