From 29b9e46697999168fde854ddce2840e17a0f7178 Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Fri, 6 May 2016 12:21:19 +0200 Subject: [PATCH] - added function MmsConnection_getMmsConnectionParameters --- CMakeLists.txt | 4 ++-- examples/iec61850_client_example4/CMakeLists.txt | 4 ++-- .../iec61850_client_example_files/CMakeLists.txt | 4 ++-- .../CMakeLists.txt | 4 ++-- examples/mms_client_example2/CMakeLists.txt | 4 ++-- examples/mms_client_example3/CMakeLists.txt | 4 ++-- examples/mms_client_example4/CMakeLists.txt | 4 ++-- src/CMakeLists.txt | 11 ++++++++--- src/mms/inc/mms_client_connection.h | 14 ++++++++++++-- src/mms/iso_mms/client/mms_client_connection.c | 6 ++++++ src/mms/iso_mms/client/mms_client_initiate.c | 5 +++++ 11 files changed, 45 insertions(+), 19 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f569a13..e374c89 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -104,11 +104,11 @@ set(API_HEADERS src/sampled_values/sv_publisher.h ) -IF(WIN32) +IF(MSVC) include_directories( src/vs ) -ENDIF(WIN32) +ENDIF(MSVC) # write the detected stuff to this file configure_file(config/stack_config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config/stack_config.h) diff --git a/examples/iec61850_client_example4/CMakeLists.txt b/examples/iec61850_client_example4/CMakeLists.txt index 2c14b05..cacd87b 100644 --- a/examples/iec61850_client_example4/CMakeLists.txt +++ b/examples/iec61850_client_example4/CMakeLists.txt @@ -3,10 +3,10 @@ set(iec61850_client_example4_SRCS client_example4.c ) -IF(WIN32) +IF(MSVC) set_source_files_properties(${iec61850_client_example4_SRCS} PROPERTIES LANGUAGE CXX) -ENDIF(WIN32) +ENDIF(MSVC) add_executable(iec61850_client_example4 ${iec61850_client_example4_SRCS} diff --git a/examples/iec61850_client_example_files/CMakeLists.txt b/examples/iec61850_client_example_files/CMakeLists.txt index 10b7ab0..36cba27 100644 --- a/examples/iec61850_client_example_files/CMakeLists.txt +++ b/examples/iec61850_client_example_files/CMakeLists.txt @@ -3,10 +3,10 @@ set(iec61850_client_example_files_SRCS client_example_files.c ) -IF(WIN32) +IF(MSVC) set_source_files_properties(${iec61850_client_example_files_SRCS} PROPERTIES LANGUAGE CXX) -ENDIF(WIN32) +ENDIF(MSVC) add_executable(iec61850_client_example_files ${iec61850_client_example_files_SRCS} diff --git a/examples/iec61850_client_example_reporting/CMakeLists.txt b/examples/iec61850_client_example_reporting/CMakeLists.txt index 621f129..8fa60df 100644 --- a/examples/iec61850_client_example_reporting/CMakeLists.txt +++ b/examples/iec61850_client_example_reporting/CMakeLists.txt @@ -3,10 +3,10 @@ set(iec61850_client_example_reporting_SRCS client_example_reporting.c ) -IF(WIN32) +IF(MSVC) set_source_files_properties(${iec61850_client_example_reporting_SRCS} PROPERTIES LANGUAGE CXX) -ENDIF(WIN32) +ENDIF(MSVC) add_executable(iec61850_client_example_reporting ${iec61850_client_example_reporting_SRCS} diff --git a/examples/mms_client_example2/CMakeLists.txt b/examples/mms_client_example2/CMakeLists.txt index b56f7a5..15016df 100644 --- a/examples/mms_client_example2/CMakeLists.txt +++ b/examples/mms_client_example2/CMakeLists.txt @@ -3,10 +3,10 @@ set(mms_client_example2_SRCS mms_client_example2.c ) -IF(WIN32) +IF(MSVC) set_source_files_properties(${mms_client_example2_SRCS} PROPERTIES LANGUAGE CXX) -ENDIF(WIN32) +ENDIF(MSVC) add_executable(mms_client_example2 ${mms_client_example2_SRCS} diff --git a/examples/mms_client_example3/CMakeLists.txt b/examples/mms_client_example3/CMakeLists.txt index 4a5cab0..df11000 100644 --- a/examples/mms_client_example3/CMakeLists.txt +++ b/examples/mms_client_example3/CMakeLists.txt @@ -3,10 +3,10 @@ set(mms_client_example3_SRCS mms_client_example3.c ) -IF(WIN32) +IF(MSVC) set_source_files_properties(${mms_client_example3_SRCS} PROPERTIES LANGUAGE CXX) -ENDIF(WIN32) +ENDIF(MSVC) add_executable(mms_client_example3 ${mms_client_example3_SRCS} diff --git a/examples/mms_client_example4/CMakeLists.txt b/examples/mms_client_example4/CMakeLists.txt index 6335c59..96b9edf 100644 --- a/examples/mms_client_example4/CMakeLists.txt +++ b/examples/mms_client_example4/CMakeLists.txt @@ -3,10 +3,10 @@ set(mms_client_example4_SRCS mms_client_example4.c ) -IF(WIN32) +IF(MSVC) set_source_files_properties(${mms_client_example4_SRCS} PROPERTIES LANGUAGE CXX) -ENDIF(WIN32) +ENDIF(MSVC) add_executable(mms_client_example4 ${mms_client_example4_SRCS} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 31a74e9..266c279 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -213,14 +213,18 @@ endif() set_source_files_properties(${lib_asn1c_SRCS} PROPERTIES LANGUAGE C) +IF(MSVC) set_source_files_properties(${lib_common_SRCS} ${lib_windows_SRCS} PROPERTIES LANGUAGE CXX) +ENDIF() IF(WITH_WPCAP) +IF(MSVC) set_source_files_properties(${lib_goose_SRCS} PROPERTIES LANGUAGE CXX) set_source_files_properties(${lib_sv_SRCS} PROPERTIES LANGUAGE CXX) +ENDIF() ELSE() add_definitions(-DEXCLUDE_ETHERNET_WINDOWS) ENDIF() @@ -311,8 +315,10 @@ IF(UNIX) ) ENDIF (CONFIG_SYSTEM_HAS_CLOCK_GETTIME) ENDIF(UNIX) - - +IF(MINGW) + target_link_libraries(iec61850-shared ws2_32 iphlpapi) + target_link_libraries(iec61850 ws2_32 iphlpapi) +ENDIF(MINGW) iF(WITH_WPCAP) target_link_libraries(iec61850 ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/winpcap/lib/wpcap.lib @@ -330,7 +336,6 @@ if(MSVC) ) endif() - ELSE(WITH_WPCAP) if(MSVC) set_target_properties(iec61850-shared PROPERTIES diff --git a/src/mms/inc/mms_client_connection.h b/src/mms/inc/mms_client_connection.h index fc234e7..2919548 100644 --- a/src/mms/inc/mms_client_connection.h +++ b/src/mms/inc/mms_client_connection.h @@ -1,7 +1,7 @@ /* * mms_client_connection.h * - * Copyright 2013 Michael Zillgith + * Copyright 2013-2016 Michael Zillgith * * This file is part of libIEC61850. * @@ -49,6 +49,7 @@ typedef struct sMmsConnectionParameters { int maxServOutstandingCalled; int dataStructureNestingLevel; int maxPduSize; /* local detail */ + uint8_t servicesSupported[11]; } MmsConnectionParameters; typedef struct { @@ -112,7 +113,7 @@ MmsConnection_setInformationReportHandler(MmsConnection self, MmsInformationRepo void* parameter); /** - * \brief Get the connection parameters for an MmsConnection instance + * \brief Get the ISO connection parameters for an MmsConnection instance * * \param self MmsConnection instance to operate on * \return params the to be used by this connection @@ -120,6 +121,15 @@ MmsConnection_setInformationReportHandler(MmsConnection self, MmsInformationRepo IsoConnectionParameters MmsConnection_getIsoConnectionParameters(MmsConnection self); +/** + * \brief Get the MMS specific connection parameters for an MmsConnection instance + * + * \param self MmsConnection instance to operate on + * \return params the to be used by this connection + */ +MmsConnectionParameters +MmsConnection_getMmsConnectionParameters(MmsConnection self); + /** * \brief User provided handler function that will be called if the connection to the server is lost * diff --git a/src/mms/iso_mms/client/mms_client_connection.c b/src/mms/iso_mms/client/mms_client_connection.c index 166ed6f..3e44444 100644 --- a/src/mms/iso_mms/client/mms_client_connection.c +++ b/src/mms/iso_mms/client/mms_client_connection.c @@ -841,6 +841,12 @@ MmsConnection_getIsoConnectionParameters(MmsConnection self) return self->isoParameters; } +MmsConnectionParameters +MmsConnection_getMmsConnectionParameters(MmsConnection self) +{ + return self->parameters; +} + static void waitForConnectResponse(MmsConnection self) { diff --git a/src/mms/iso_mms/client/mms_client_initiate.c b/src/mms/iso_mms/client/mms_client_initiate.c index 6458ae2..e8c7d7d 100644 --- a/src/mms/iso_mms/client/mms_client_initiate.c +++ b/src/mms/iso_mms/client/mms_client_initiate.c @@ -130,6 +130,11 @@ mmsClient_parseInitiateResponse(MmsConnection self) self->parameters.maxServOutstandingCalling = initiateResponse->negotiatedMaxServOutstandingCalling; + int i; + + for (i = 0; i < 11; i++) + self->parameters.servicesSupported[i] = initiateResponse->mmsInitResponseDetail.servicesSupportedCalled.buf[i]; + result = true; } else