Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 16 additions & 10 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)
Expand All @@ -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)



5 changes: 2 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -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":
Expand All @@ -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', ''),
Expand Down
3 changes: 3 additions & 0 deletions src/opendnp3/app/parsing/ICollection.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,10 @@
#include <pybind11/pybind11.h>
#include <Python.h>


#include <opendnp3/app/Indexed.h>
#include <opendnp3/app/OctetString.h>
#include <opendnp3/master/CommandPointResult.h>
#include <opendnp3/app/parsing/ICollection.h>

#ifdef PYDNP3_OPENDNP3
Expand Down
7 changes: 4 additions & 3 deletions src/opendnp3/outstation/MeasurementConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
#ifndef PYDNP3_OPENDNP3_OUTSTATION_MEASUREMENTCONFIG_H
#define PYDNP3_OPENDNP3_OUTSTATION_MEASUREMENTCONFIG_H

#include <string>
#include <pybind11/pybind11.h>
#include <Python.h>

Expand All @@ -41,7 +42,7 @@
namespace py = pybind11;

template <class Info>
void declareStaticConfig(py::module &m, string const &type)
void declareStaticConfig(py::module &m, std::string const &type)
{
// ----- struct: opendnp3::StaticConfig<Info> -----
py::class_<opendnp3::StaticConfig<Info>, opendnp3::IndexConfig>(m, ("StaticConfig" + type).c_str(),
Expand All @@ -63,7 +64,7 @@ void declareStaticConfig(py::module &m, string const &type)
}

template <class Info>
void declareEventConfig(py::module &m, string const &type)
void declareEventConfig(py::module &m, std::string const &type)
{
declareStaticConfig<Info>(m, type);

Expand Down Expand Up @@ -91,7 +92,7 @@ void declareEventConfig(py::module &m, string const &type)
}

template <class Info>
void declareDeadbandConfig(py::module &m, string const &type)
void declareDeadbandConfig(py::module &m, std::string const &type)
{
declareEventConfig<Info>(m, type);

Expand Down
138 changes: 9 additions & 129 deletions src/pydnp3opendnp3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,139 +28,19 @@
* }}}
*/

#include <pybind11/stl.h>
#include <pybind11/complex.h>
#include <pybind11/functional.h>
#include <pybind11/chrono.h>

#include <pybind11/pybind11.h>

#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);
}
init_opendnp3_1(opendnp3);
init_opendnp3_2(opendnp3);
init_opendnp3_3(opendnp3);
init_opendnp3_4(opendnp3);
}
Loading