From 1954da2b78c9428400f6ef242203211de9a2aeb3 Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Fri, 15 Apr 2022 11:39:00 +0200 Subject: [PATCH] - .NET API: added IedServer.GetFunctionalConstrainedData method (LIB61850-317) --- dotnet/IEC61850forCSharp/IEC61850ServerAPI.cs | 19 +++++++++++++++++++ src/iec61850/inc/iec61850_server.h | 3 +-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/dotnet/IEC61850forCSharp/IEC61850ServerAPI.cs b/dotnet/IEC61850forCSharp/IEC61850ServerAPI.cs index 3cd8b548..ebb61dbd 100644 --- a/dotnet/IEC61850forCSharp/IEC61850ServerAPI.cs +++ b/dotnet/IEC61850forCSharp/IEC61850ServerAPI.cs @@ -2136,6 +2136,9 @@ namespace IEC61850 [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] static extern IntPtr IedServer_getAttributeValue(IntPtr self, IntPtr dataAttribute); + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr IedServer_getFunctionalConstrainedData(IntPtr self, IntPtr dataObject, int fc); + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate int InternalControlPerformCheckHandler (IntPtr action, IntPtr parameter, IntPtr ctlVal, [MarshalAs(UnmanagedType.I1)] bool test, [MarshalAs(UnmanagedType.I1)] bool interlockCheck); @@ -2757,6 +2760,22 @@ namespace IEC61850 return null; } + /// + /// Get the MmsValue object related to a functional constrained data object (FCD) + /// + /// the data object to specify the FCD + /// the FC to specify the FCD + /// FCDO corresponding MmsValue object cached by the server + public MmsValue GetFunctionalConstrainedData(DataObject dataObject, FunctionalConstraint fc) + { + IntPtr mmsValuePtr = IedServer_getFunctionalConstrainedData(self, dataObject.self, (int)fc); + + if (mmsValuePtr != IntPtr.Zero) + return new MmsValue(mmsValuePtr); + else + return null; + } + /// /// Enable all GOOSE control blocks. /// diff --git a/src/iec61850/inc/iec61850_server.h b/src/iec61850/inc/iec61850_server.h index 902e4de3..5a3dd29d 100644 --- a/src/iec61850/inc/iec61850_server.h +++ b/src/iec61850/inc/iec61850_server.h @@ -911,9 +911,8 @@ IedServer_getBitStringAttributeValue(IedServer self, const DataAttribute* dataAt LIB61850_API const char* IedServer_getStringAttributeValue(IedServer self, const DataAttribute* dataAttribute); - /** - * \brief Get the MmsValue object related to a FunctionalConstrainedData object + * \brief Get the MmsValue object related to a functional constrained data object (FCD) * * Get the MmsValue from the server cache that is associated with the Functional Constrained Data (FCD) * object that is specified by the DataObject and the given Function Constraint (FC).