From 2307951eaf26f3648500ef39ce75c39c06547078 Mon Sep 17 00:00:00 2001 From: Andrew Moorcroft Date: Mon, 20 Jan 2020 15:51:27 +0000 Subject: [PATCH] Added APC and SPC CDC creation methods for dotnet. --- dotnet/IEC61850forCSharp/IEC61850ServerAPI.cs | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/dotnet/IEC61850forCSharp/IEC61850ServerAPI.cs b/dotnet/IEC61850forCSharp/IEC61850ServerAPI.cs index cc1ad5cf..5eb993d6 100644 --- a/dotnet/IEC61850forCSharp/IEC61850ServerAPI.cs +++ b/dotnet/IEC61850forCSharp/IEC61850ServerAPI.cs @@ -262,6 +262,12 @@ namespace IEC61850 [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] static extern IntPtr CDC_ENS_create(string name, IntPtr parent, uint options); + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr CDC_SPC_create(string name, IntPtr parent, uint options, uint controlOptions); + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr CDC_APC_create(string name, IntPtr parent, uint options, uint controlOptions, [MarshalAs(UnmanagedType.I1)] bool isIntegerNotFloat); + public const int CDC_OPTION_DESC = (1 << 2); public const int CDC_OPTION_DESC_UNICODE = (1 << 3); public const int CDC_OPTION_AC_DLNDA = (1 << 4); @@ -349,6 +355,26 @@ namespace IEC61850 else return null; } + + public static DataObject Create_SPC_ENS(ModelNode parent, string name, uint options, uint controlOptions) + { + IntPtr self = CDC_SPC_create(name, parent.self, options, controlOptions); + + if (self != IntPtr.Zero) + return new DataObject(self); + else + return null; + } + + public static DataObject Create_CDC_APC(ModelNode parent, string name, uint options, uint controlOptions, bool isIntegerNotFloat) + { + IntPtr self = CDC_APC_create(name, parent.self, options, controlOptions, isIntegerNotFloat); + + if (self != IntPtr.Zero) + return new DataObject(self); + else + return null; + } } public class DataObject : ModelNode