diff --git a/CHANGELOG b/CHANGELOG index 353ecb83..0d6c7d86 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,9 +1,16 @@ Changes to version 1.6.1 ------------------------ --.NET Tools: in the Tools folder you can find the .net project to generate Static and Dynamic Models +New features and improvements: + +- .NET API: IEC61850ServerAPI -> LogStorage function wrapper added. +- .NET API: MmsValue -> MmsValue_encodeMmsData and MmsValue_decodeMmsData added. +- .NET API: Fixed issue of not printing log entries in log_client and log_server examples. +- .NET Tools: in the Tools folder you can find the .net project to generate Static and Dynamic Models - SCLParser: also available on tools, you can load your SCL model and use it with our library + + Changes to version 1.6.0 ------------------------ diff --git a/dotnet/IEC61850forCSharp/AssemblyInfo.cs b/dotnet/IEC61850forCSharp/AssemblyInfo.cs index 479370f2..f5d02ba2 100644 --- a/dotnet/IEC61850forCSharp/AssemblyInfo.cs +++ b/dotnet/IEC61850forCSharp/AssemblyInfo.cs @@ -1,24 +1,8 @@ using System.Reflection; using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("IEC61850 API for C#")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("MZ Automation GmbH")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("Michael Zillgith")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.0.*")] - // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/dotnet/IEC61850forCSharp/IEC61850.NET.csproj b/dotnet/IEC61850forCSharp/IEC61850.NET.csproj index 21da8024..401218af 100644 --- a/dotnet/IEC61850forCSharp/IEC61850.NET.csproj +++ b/dotnet/IEC61850forCSharp/IEC61850.NET.csproj @@ -1,56 +1,23 @@ - - + - Debug - AnyCPU - {C35D624E-5506-4560-8074-1728F1FA1A4D} + netstandard2.0 Library iec61850dotnet iec61850dotnet - v4.8 - + IEC61850 API for C# + MZ Automation GmbH + Michael Zillgith + 1.0.%2a + false - true - full - false bin\Debug DEBUG; - prompt - 4 false - false none - true bin\Release - prompt - 4 false - false - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dotnet/IEC61850forCSharp/IEC61850ClientAPI.cs b/dotnet/IEC61850forCSharp/IEC61850ClientAPI.cs index 38db124c..4530c9ed 100644 --- a/dotnet/IEC61850forCSharp/IEC61850ClientAPI.cs +++ b/dotnet/IEC61850forCSharp/IEC61850ClientAPI.cs @@ -1264,7 +1264,6 @@ namespace IEC61850 moreFollows = moreFollowsVal; return WrapNativeLogQueryResult(linkedList); - } /// @@ -1725,7 +1724,6 @@ namespace IEC61850 if (error != 0) throw new IedConnectionException("Error uploading file", error); - } [UnmanagedFunctionPointer(CallingConvention.Cdecl)] @@ -2109,7 +2107,6 @@ namespace IEC61850 if (error != 0) throw new IedConnectionException("Failed to create data set", error); - } /// @@ -2544,7 +2541,6 @@ namespace IEC61850 handler(invokeId, handlerParameter, clientError); } - public UInt32 WriteValueAsync(string objectReference, FunctionalConstraint fc, MmsValue value, WriteValueHandler handler, object parameter) { int error; diff --git a/dotnet/IEC61850forCSharp/IEC61850ServerAPI.cs b/dotnet/IEC61850forCSharp/IEC61850ServerAPI.cs index d6852a10..90fd5bc8 100644 --- a/dotnet/IEC61850forCSharp/IEC61850ServerAPI.cs +++ b/dotnet/IEC61850forCSharp/IEC61850ServerAPI.cs @@ -22,9 +22,11 @@ */ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Runtime.InteropServices; using IEC61850.Common; using IEC61850.TLS; +using static IEC61850.Client.IedConnection; // IEC 61850 API for the libiec61850 .NET wrapper library namespace IEC61850 @@ -2159,6 +2161,11 @@ namespace IEC61850 [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] static extern IntPtr SqliteLogStorage_createInstance(string filename); + /// + /// Create a new LogStorage instance using the embedded sqlite database + /// + /// name of the sqlite database file to be used + /// public static LogStorage CreateLogStorage(string filename) { try @@ -2186,10 +2193,26 @@ namespace IEC61850 [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] static extern int LogStorage_getMaxLogEntries(IntPtr self); + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern int LogStorage_addEntry(IntPtr self, long time); + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern bool LogStorage_addEntryData(IntPtr self, int entryID, string dataRef, byte[] data, int dataSize, int reasonCode); + + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate bool LogEntryCallback(IntPtr self, long timeStamp, long entryID, bool moreFollows); + + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate bool LogEntryDataCallback(IntPtr self, string dataRef, byte[] data, int dataSize, int reasonCode, bool moreFollows); + + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern bool LogStorage_getEntries(IntPtr self, long startingTime, long endingTime, LogEntryCallback entryCallback, LogEntryDataCallback entryDataCallback, object parameter); + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] static extern void LogStorage_destroy(IntPtr self); - private IntPtr self = IntPtr.Zero; + private IntPtr self; internal IntPtr GetNativeInstance() { @@ -2201,16 +2224,64 @@ namespace IEC61850 this.self = self; } + /// + /// Set the maximum number of log entries for this log + /// + /// the maximum number of log entries private void SetMaxLogEntries(int maxEntries) { LogStorage_setMaxLogEntries(self, maxEntries); } + /// + /// Get the maximum allowed number of log entries for this log + /// + /// the maximum number of log entries private int GetMaxLogEntries() { return LogStorage_getMaxLogEntries(self); } + /// + /// Manually add an entry to the log + /// + /// Usually this has not to be done by the user + /// but is done automatically by the library + /// the entry time of the new entry in ms + /// the entryID of the new log entry + public int AddEntry(long time) + { + return LogStorage_addEntry(self, time); + } + + /// + /// Add new entry data to an existing log entry + /// + /// the ID of the log entry where the data will be added + /// the data reference of the log entry data + /// the data content as an unstructured binary data block + /// the size of the binary data block + /// the reasonCode of the LogEntryData + /// true if the entry data was successfully added, false otherwise + public bool AddEntryData(int entryID, string dataRef, byte[] data, int dataSize, int reasonCode) + { + return LogStorage_addEntryData(self, entryID, dataRef, data, dataSize, reasonCode); + } + + /// + /// Get log entries specified by a time range + /// + /// start time of the time range + /// end time of the time range + /// + /// + /// + /// + public bool GetEntries(long startingTime, long endingTime, LogEntryCallback entryCallback, LogEntryDataCallback entryDataCallback, object parameter) + { + return LogStorage_getEntries(self, startingTime, endingTime, entryCallback, entryDataCallback, parameter); + } + /// /// The maximum allowed number of log entries in the log storage /// @@ -2315,6 +2386,12 @@ namespace IEC61850 [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] static extern IntPtr IedServer_getFunctionalConstrainedData(IntPtr self, IntPtr dataObject, int fc); + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + public static extern void IedServer_setListObjectsAccessHandler(IntPtr self, IedServer_ListObjectsAccessHandler handler, IntPtr parameter); + + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + public delegate bool IedServer_ListObjectsAccessHandler(IntPtr parameter, ClientConnection connection, ACSIClass acsiClass, LogicalDevice ld, LogicalNode ln, string objectName, string subObjectName, FunctionalConstraint fc); + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] private delegate int InternalControlPerformCheckHandler (IntPtr action, IntPtr parameter, IntPtr ctlVal, [MarshalAs(UnmanagedType.I1)] bool test, [MarshalAs(UnmanagedType.I1)] bool interlockCheck); @@ -2538,6 +2615,11 @@ namespace IEC61850 } } + public void SetListObjectsAccessHandler(IedServer_ListObjectsAccessHandler handler, System.IntPtr parameter) + { + IedServer_setListObjectsAccessHandler(self, handler, parameter); + } + private Dictionary writeAccessHandlers = new Dictionary (); private void ConnectionIndicationHandlerImpl (IntPtr iedServer, IntPtr clientConnection, bool connected, IntPtr parameter) diff --git a/dotnet/IEC61850forCSharp/MmsValue.cs b/dotnet/IEC61850forCSharp/MmsValue.cs index d262688a..97020ab1 100644 --- a/dotnet/IEC61850forCSharp/MmsValue.cs +++ b/dotnet/IEC61850forCSharp/MmsValue.cs @@ -206,7 +206,13 @@ namespace IEC61850 static extern void MmsValue_setElement(IntPtr complexValue, int index, IntPtr elementValue); [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] - static extern IntPtr MmsVariableSpecification_getChildValue(IntPtr self, IntPtr value, string childId); + static extern IntPtr MmsVariableSpecification_getChildValue(IntPtr self, IntPtr value, string childId); + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern int MmsValue_encodeMmsData(IntPtr self, byte[] buffer, int bufPos, bool encode); + + [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] + static extern int MmsValue_decodeMmsData(IntPtr self, int bufPos, int bufferLength, IntPtr endBufPo); [DllImport("iec61850", CallingConvention = CallingConvention.Cdecl)] static extern IntPtr MmsValue_clone(IntPtr self); @@ -220,8 +226,19 @@ namespace IEC61850 valueReference = value; this.responsableForDeletion = false; } - - internal MmsValue (IntPtr value, bool responsableForDeletion) + + public int EncodeMmsData(byte[] buffer, int bufPos, bool encode) + { + return MmsValue_encodeMmsData(this.valueReference, buffer, bufPos, encode); + } + + public int DecodeMmsData(int bufPos, int bufferLength, IntPtr endBufPo) + { + + return MmsValue_decodeMmsData(this.valueReference, bufPos, bufferLength, endBufPo); + } + + internal MmsValue (IntPtr value, bool responsableForDeletion) { valueReference = value; this.responsableForDeletion = responsableForDeletion; diff --git a/dotnet/authenticate/AssemblyInfo.cs b/dotnet/authenticate/AssemblyInfo.cs index c77a4a9c..f5d02ba2 100644 --- a/dotnet/authenticate/AssemblyInfo.cs +++ b/dotnet/authenticate/AssemblyInfo.cs @@ -1,24 +1,8 @@ using System.Reflection; using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("authenticate")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("mzillgit")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.0.*")] - // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/dotnet/authenticate/authenticate.csproj b/dotnet/authenticate/authenticate.csproj index 4483ff96..d40bbd64 100644 --- a/dotnet/authenticate/authenticate.csproj +++ b/dotnet/authenticate/authenticate.csproj @@ -1,50 +1,23 @@ - - + - Debug - AnyCPU - {0BECEC77-2315-4B95-AFF9-E6007E644BBF} + net8.0 Exe - authenticate - authenticate - v4.8 - + authenticate + mzillgit + false + 1.0.%2a - true - full - false bin\Debug DEBUG; - prompt - 4 true - false none - true bin\Release - prompt - 4 true - false - - - - - - - - - - {C35D624E-5506-4560-8074-1728F1FA1A4D} - IEC61850.NET - - - - + \ No newline at end of file diff --git a/dotnet/client_example_async/Properties/AssemblyInfo.cs b/dotnet/client_example_async/Properties/AssemblyInfo.cs index e909bebd..8fa2f5c1 100644 --- a/dotnet/client_example_async/Properties/AssemblyInfo.cs +++ b/dotnet/client_example_async/Properties/AssemblyInfo.cs @@ -1,24 +1,8 @@ using System.Reflection; using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("client_example_async")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("mzillgit")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.0.*")] - // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/dotnet/client_example_async/client_example_async.csproj b/dotnet/client_example_async/client_example_async.csproj index 5b0f9e5c..4931f33d 100644 --- a/dotnet/client_example_async/client_example_async.csproj +++ b/dotnet/client_example_async/client_example_async.csproj @@ -1,50 +1,22 @@ - - + - Debug - AnyCPU - {71902641-776A-47D8-9C0E-9ACBBEAC1370} + net8.0 Exe - client_example_async - client_example_async - v4.8 - + client_example_async + mzillgit + 1.0.%2a + false - true - full - false bin\Debug DEBUG; - prompt - 4 true - false - full - true bin\Release - prompt - 4 true - false - - - - - - - - - - {C35D624E-5506-4560-8074-1728F1FA1A4D} - IEC61850.NET - - - - + \ No newline at end of file diff --git a/dotnet/client_example_setting_groups/Properties/AssemblyInfo.cs b/dotnet/client_example_setting_groups/Properties/AssemblyInfo.cs index 7fc4366c..8fa2f5c1 100644 --- a/dotnet/client_example_setting_groups/Properties/AssemblyInfo.cs +++ b/dotnet/client_example_setting_groups/Properties/AssemblyInfo.cs @@ -1,24 +1,8 @@ using System.Reflection; using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("client-example-setting-group")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("mzillgit")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.0.*")] - // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/dotnet/client_example_setting_groups/client_example_setting_groups.csproj b/dotnet/client_example_setting_groups/client_example_setting_groups.csproj index c35fc669..65698f2f 100644 --- a/dotnet/client_example_setting_groups/client_example_setting_groups.csproj +++ b/dotnet/client_example_setting_groups/client_example_setting_groups.csproj @@ -1,48 +1,24 @@ - - + - Debug - AnyCPU - {0DA95476-B149-450B-AC36-01CEECFC1A43} + net8.0 Exe clientexamplesettinggroup client-example-setting-group - v4.8 - + client-example-setting-group + mzillgit + 1.0.%2a + false - true - full - false bin\Debug DEBUG; - prompt - 4 true - full - true bin\Release - prompt - 4 true - - - - - - - - - - {C35D624E-5506-4560-8074-1728F1FA1A4D} - IEC61850.NET - - - - + \ No newline at end of file diff --git a/dotnet/control/AssemblyInfo.cs b/dotnet/control/AssemblyInfo.cs index 21a7f0d6..f5d02ba2 100644 --- a/dotnet/control/AssemblyInfo.cs +++ b/dotnet/control/AssemblyInfo.cs @@ -1,24 +1,8 @@ using System.Reflection; using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("control")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("mzillgit")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.0.*")] - // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/dotnet/control/control.csproj b/dotnet/control/control.csproj index baf5062a..082cfe3b 100644 --- a/dotnet/control/control.csproj +++ b/dotnet/control/control.csproj @@ -1,50 +1,23 @@ - - + - Debug - AnyCPU - {C351CFA4-E54E-49A1-86CE-69643535541A} + net8.0 Exe - control - control - v4.8 - + control + mzillgit + 1.0.%2a + false - true - full - false bin\Debug DEBUG; - prompt - 4 true - false none - true bin\Release - prompt - 4 true - false - - - - - - - - - - {C35D624E-5506-4560-8074-1728F1FA1A4D} - IEC61850.NET - - - - + \ No newline at end of file diff --git a/dotnet/datasets/AssemblyInfo.cs b/dotnet/datasets/AssemblyInfo.cs index 4ebf096e..f5d02ba2 100644 --- a/dotnet/datasets/AssemblyInfo.cs +++ b/dotnet/datasets/AssemblyInfo.cs @@ -1,24 +1,8 @@ using System.Reflection; using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("datasets")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("mzillgit")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.0.*")] - // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/dotnet/datasets/datasets.csproj b/dotnet/datasets/datasets.csproj index 94e90ba5..e83b3c97 100644 --- a/dotnet/datasets/datasets.csproj +++ b/dotnet/datasets/datasets.csproj @@ -1,50 +1,23 @@ - - + - Debug - AnyCPU - {D5C7DD38-032A-49B6-B74F-FFD9724A8AE4} + net8.0 Exe - datasets - datasets - v4.8 - + datasets + mzillgit + 1.0.%2a + false - true - full - false bin\Debug DEBUG; - prompt - 4 true - false none - true bin\Release - prompt - 4 true - false - - - - - - - - - - {C35D624E-5506-4560-8074-1728F1FA1A4D} - IEC61850.NET - - - - + \ No newline at end of file diff --git a/dotnet/example1/AssemblyInfo.cs b/dotnet/example1/AssemblyInfo.cs index a1fbaff5..f5d02ba2 100644 --- a/dotnet/example1/AssemblyInfo.cs +++ b/dotnet/example1/AssemblyInfo.cs @@ -1,24 +1,8 @@ using System.Reflection; using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("example1")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("mzillgit")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.0.*")] - // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/dotnet/example1/example1.csproj b/dotnet/example1/example1.csproj index da7f380a..4f3d17d0 100644 --- a/dotnet/example1/example1.csproj +++ b/dotnet/example1/example1.csproj @@ -1,50 +1,23 @@ - - + - Debug - AnyCPU - {C616A6DF-831E-443C-9310-3F343A6E3D1A} + net8.0 Exe - example1 - example1 - v4.8 - + example1 + mzillgit + 1.0.%2a + false - true - full - false bin\Debug DEBUG; - prompt - 4 true - false none - true bin\Release - prompt - 4 true - false - - - - - - - - - - {C35D624E-5506-4560-8074-1728F1FA1A4D} - IEC61850.NET - - - - + \ No newline at end of file diff --git a/dotnet/example2/AssemblyInfo.cs b/dotnet/example2/AssemblyInfo.cs index 7ad8e131..f5d02ba2 100644 --- a/dotnet/example2/AssemblyInfo.cs +++ b/dotnet/example2/AssemblyInfo.cs @@ -1,24 +1,8 @@ using System.Reflection; using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("example2")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("mzillgit")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.0.*")] - // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/dotnet/example2/example2.csproj b/dotnet/example2/example2.csproj index 99d490e2..569bd27d 100644 --- a/dotnet/example2/example2.csproj +++ b/dotnet/example2/example2.csproj @@ -1,50 +1,23 @@ - - + - Debug - AnyCPU - {2A226B6D-1D1F-4BFE-B8CC-158116F71270} + net8.0 Exe - example2 - example2 - v4.8 - + example2 + mzillgit + 1.0.%2a + false - true - full - false bin\Debug DEBUG; - prompt - 4 true - false none - true bin\Release - prompt - 4 true - false - - - - - - - - - - {C35D624E-5506-4560-8074-1728F1FA1A4D} - IEC61850.NET - - - - + \ No newline at end of file diff --git a/dotnet/example3/AssemblyInfo.cs b/dotnet/example3/AssemblyInfo.cs index 8fa9151c..f5d02ba2 100644 --- a/dotnet/example3/AssemblyInfo.cs +++ b/dotnet/example3/AssemblyInfo.cs @@ -1,24 +1,8 @@ using System.Reflection; using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("example3")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("mzillgit")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.0.*")] - // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/dotnet/example3/example3.csproj b/dotnet/example3/example3.csproj index 189e432e..dc903c52 100644 --- a/dotnet/example3/example3.csproj +++ b/dotnet/example3/example3.csproj @@ -1,50 +1,23 @@ - - + - Debug - AnyCPU - {5E5D0FE0-DF44-48D8-A10E-1FB07D34DEA2} + net8.0 Exe - example3 - example3 - v4.8 - + example3 + mzillgit + 1.0.%2a + false - true - full - false bin\Debug DEBUG; - prompt - 4 true - false none - true bin\Release - prompt - 4 true - false - - - - - - - - - - {C35D624E-5506-4560-8074-1728F1FA1A4D} - IEC61850.NET - - - - + \ No newline at end of file diff --git a/dotnet/files/AssemblyInfo.cs b/dotnet/files/AssemblyInfo.cs index 1133bf62..f5d02ba2 100644 --- a/dotnet/files/AssemblyInfo.cs +++ b/dotnet/files/AssemblyInfo.cs @@ -1,24 +1,8 @@ using System.Reflection; using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("files")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("mzillgit")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.0.*")] - // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/dotnet/files/files.csproj b/dotnet/files/files.csproj index 6b943901..4ea48cb0 100644 --- a/dotnet/files/files.csproj +++ b/dotnet/files/files.csproj @@ -1,50 +1,23 @@ - - + - Debug - AnyCPU - {77127456-19B9-4D1A-AEF9-40F8D1C5695E} + net8.0 Exe - files - files - v4.8 - + files + mzillgit + 1.0.%2a + false - true - full - false bin\Debug DEBUG; - prompt - 4 true - false none - true bin\Release - prompt - 4 true - false - - - - - - - - - - {C35D624E-5506-4560-8074-1728F1FA1A4D} - IEC61850.NET - - - - + \ No newline at end of file diff --git a/dotnet/goose_subscriber/Properties/AssemblyInfo.cs b/dotnet/goose_subscriber/Properties/AssemblyInfo.cs index d42b17b9..7e3616ef 100644 --- a/dotnet/goose_subscriber/Properties/AssemblyInfo.cs +++ b/dotnet/goose_subscriber/Properties/AssemblyInfo.cs @@ -1,24 +1,8 @@ using System.Reflection; using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle ("goose_subscriber")] -[assembly: AssemblyDescription ("")] -[assembly: AssemblyConfiguration ("")] -[assembly: AssemblyCompany ("")] -[assembly: AssemblyProduct ("")] -[assembly: AssemblyCopyright ("mzillgit")] [assembly: AssemblyTrademark ("")] [assembly: AssemblyCulture ("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion ("1.0.*")] - // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/dotnet/goose_subscriber/goose_subscriber.csproj b/dotnet/goose_subscriber/goose_subscriber.csproj index 90b21bdb..2b892e06 100644 --- a/dotnet/goose_subscriber/goose_subscriber.csproj +++ b/dotnet/goose_subscriber/goose_subscriber.csproj @@ -1,48 +1,22 @@ - - + - Debug - AnyCPU - {1285372C-2E62-494A-A661-8D5D3873318C} + net8.0 Exe - goose_subscriber - goose_subscriber - v4.8 - + goose_subscriber + mzillgit + 1.0.%2a + false - true - full - false bin\Debug DEBUG; - prompt - 4 true - full - true bin\Release - prompt - 4 true - - - - - - - - - - {C35D624E-5506-4560-8074-1728F1FA1A4D} - IEC61850.NET - - - - + \ No newline at end of file diff --git a/dotnet/log_client/Program.cs b/dotnet/log_client/Program.cs index b857a0f3..9007adcc 100644 --- a/dotnet/log_client/Program.cs +++ b/dotnet/log_client/Program.cs @@ -10,7 +10,7 @@ namespace log_client private static void PrintJournalEntries(List journalEntries) { foreach (MmsJournalEntry entry in journalEntries) { Console.WriteLine("EntryID: " + BitConverter.ToString(entry.GetEntryID())); - Console.WriteLine(" occurence time: " + MmsValue.MsTimeToDateTimeOffset(entry.GetOccurenceTime()).ToString()); + Console.WriteLine(" occurence time: " + MmsValue.MsTimeToDateTimeOffset(entry.GetOccurenceTime()).ToString()); foreach (MmsJournalVariable variable in entry.GetJournalVariables()) { Console.WriteLine(" variable: " + variable.GetTag()); Console.WriteLine(" value: " + variable.GetValue().ToString()); @@ -47,12 +47,14 @@ namespace log_client Console.WriteLine("LD: " + deviceName); List deviceDirectory = con.GetLogicalDeviceDirectory(deviceName); - foreach (string lnName in deviceDirectory) { + foreach (string lnName in deviceDirectory) + { Console.WriteLine(" LN: " + lnName); List lcbs = con.GetLogicalNodeDirectory(deviceName + "/" + lnName, IEC61850.Common.ACSIClass.ACSI_CLASS_LCB); - foreach(string lcbName in lcbs) { + foreach (string lcbName in lcbs) + { Console.WriteLine(" LCB: " + lcbName); MmsValue lcbValues = con.ReadValue(deviceName + "/" + lnName + "." + lcbName, FunctionalConstraint.LG); @@ -62,7 +64,8 @@ namespace log_client List logs = con.GetLogicalNodeDirectory(deviceName + "/" + lnName, IEC61850.Common.ACSIClass.ACSI_CLASS_LOG); - foreach(string logName in logs) { + foreach (string logName in logs) + { Console.WriteLine(" LOG: " + logName); } } @@ -72,7 +75,10 @@ namespace log_client Console.WriteLine("\nQueryLogAfter:"); - List journalEntries = con.QueryLogAfter("simpleIOGenericIO/LLN0$EventLog", + Console.WriteLine(DateTime.UtcNow); + + + List journalEntries = con.QueryLogAfter("simpleIOGenericIO/LLN0$EventLog", new byte[]{0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, 0, out moreFollows); PrintJournalEntries(journalEntries); diff --git a/dotnet/log_client/Properties/AssemblyInfo.cs b/dotnet/log_client/Properties/AssemblyInfo.cs index 8ed67c8c..7e3616ef 100644 --- a/dotnet/log_client/Properties/AssemblyInfo.cs +++ b/dotnet/log_client/Properties/AssemblyInfo.cs @@ -1,24 +1,8 @@ using System.Reflection; using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle ("log_client")] -[assembly: AssemblyDescription ("")] -[assembly: AssemblyConfiguration ("")] -[assembly: AssemblyCompany ("")] -[assembly: AssemblyProduct ("")] -[assembly: AssemblyCopyright ("mzillgit")] [assembly: AssemblyTrademark ("")] [assembly: AssemblyCulture ("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion ("1.0.*")] - // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/dotnet/log_client/log_client.csproj b/dotnet/log_client/log_client.csproj index 8dc5eb5d..74f7a52d 100644 --- a/dotnet/log_client/log_client.csproj +++ b/dotnet/log_client/log_client.csproj @@ -1,50 +1,22 @@ - - + - Debug - AnyCPU - {14C71267-2F38-460D-AA55-6803EE80AFB4} + net8.0 Exe - log_client - log_client - v4.8 - + log_client + mzillgit + 1.0.%2a + false - true - full - false bin\Debug DEBUG; - prompt - 4 true - false - full - true bin\Release - prompt - 4 true - false - - - - - - - - - - {C35D624E-5506-4560-8074-1728F1FA1A4D} - IEC61850.NET - - - - + \ No newline at end of file diff --git a/dotnet/log_server/App.config b/dotnet/log_server/App.config index aee9adf4..9b6bf3fe 100644 --- a/dotnet/log_server/App.config +++ b/dotnet/log_server/App.config @@ -1,6 +1,6 @@ - + - + - \ No newline at end of file + diff --git a/dotnet/log_server/Program.cs b/dotnet/log_server/Program.cs index 26617d7e..6df1061b 100644 --- a/dotnet/log_server/Program.cs +++ b/dotnet/log_server/Program.cs @@ -2,10 +2,15 @@ using IEC61850.Server; using System; using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Data.Common; using System.Linq; +using System.Runtime.InteropServices; using System.Text; using System.Threading; using System.Threading.Tasks; +using static IEC61850.Server.IedServer; +using static IEC61850.Server.LogStorage; namespace log_server { @@ -13,6 +18,25 @@ namespace log_server { public static void Main(string[] args) { + + bool entryCallback(System.IntPtr self, long timestamp, long entryID1, bool moreFollow) + { + if (moreFollow) + Console.WriteLine($"Found entry ID:{entryID1} timestamp:{timestamp}"); + return true; + } + + + bool entryDataCallback(System.IntPtr self, string dataRef, byte[] data, int dataSize, int reasonCode, bool moreFollow) + { + if (moreFollow) + { + Console.WriteLine($"EntryData: ref: {dataRef}\n"); + } + + return true; + } + bool running = true; /* run until Ctrl-C is pressed */ @@ -41,7 +65,37 @@ namespace log_server iedServer.SetLogStorage("GenericIO/LLN0$EventLog", statusLog); - iedServer.Start(10002); + long time = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + + int entryID = statusLog.AddEntry(time); + + MmsValue value = new MmsValue(123); + byte[] blob = new byte[256]; + + int blobSize = value.EncodeMmsData(blob, 0, true); + + bool restun = statusLog.AddEntryData(entryID, "GenericIO/GGIO1.SPCSO1$stVal", blob, blobSize, 0); + + value.Dispose(); + ulong unixTimeMs = (ulong)DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); + + + entryID = statusLog.AddEntry((long)unixTimeMs); + + value = MmsValue.NewUtcTime(unixTimeMs); + blob = new byte[256]; + + blobSize = value.EncodeMmsData(blob, 0, true); + + value.Dispose(); + + + bool restun1 = statusLog.AddEntryData(entryID, "simpleIOGenerioIO/GPIO1$ST$SPCSO1$t", blob, blobSize, 0); + + + bool return3 = statusLog.GetEntries(0, DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(), (LogEntryCallback)entryCallback, (LogEntryDataCallback)entryDataCallback, (System.IntPtr)null); + + iedServer.Start(102); if (iedServer.IsRunning()) { @@ -67,7 +121,11 @@ namespace log_server stVal = !stVal; iedServer.LockDataModel(); - var ts = new Timestamp(DateTime.Now); + + long unixSeconds = DateTimeOffset.UtcNow.ToUnixTimeSeconds(); + DateTime utcTime = DateTimeOffset.FromUnixTimeSeconds(unixSeconds).UtcDateTime; + + var ts = new Timestamp(utcTime); iedServer.UpdateTimestampAttributeValue(ggio1AnIn1T, ts); iedServer.UpdateFloatAttributeValue(ggio1AnIn1magF, floatVal); iedServer.UpdateTimestampAttributeValue(ggio1Spcso1T, ts); @@ -86,6 +144,7 @@ namespace log_server } iedServer.Destroy(); + statusLog.Dispose(); } } } diff --git a/dotnet/log_server/Properties/AssemblyInfo.cs b/dotnet/log_server/Properties/AssemblyInfo.cs index c553a20a..bc5c1547 100644 --- a/dotnet/log_server/Properties/AssemblyInfo.cs +++ b/dotnet/log_server/Properties/AssemblyInfo.cs @@ -1,16 +1,6 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("log_server")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("log_server")] -[assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -21,16 +11,3 @@ using System.Runtime.InteropServices; // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("96124f40-d38e-499b-9968-674e0d32f933")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/dotnet/log_server/log_server.csproj b/dotnet/log_server/log_server.csproj index 1e2bab4b..84d5d915 100644 --- a/dotnet/log_server/log_server.csproj +++ b/dotnet/log_server/log_server.csproj @@ -1,17 +1,7 @@ - - - + - Debug - AnyCPU - {96124F40-D38E-499B-9968-674E0D32F933} + net8.0 Exe - log_server - log_server - v4.8.1 - 512 - true - true publish\ true Disk @@ -27,52 +17,22 @@ false false true + log_server + log_server + Copyright © 2024 + 1.0.0.0 + 1.0.0.0 + false - - AnyCPU - true - full - false - bin\Debug\ - DEBUG - prompt - 4 - false - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - - + PreserveNewest + + - - {C35D624E-5506-4560-8074-1728F1FA1A4D} - IEC61850.NET - + @@ -86,5 +46,4 @@ false - \ No newline at end of file diff --git a/dotnet/model_browsing/AssemblyInfo.cs b/dotnet/model_browsing/AssemblyInfo.cs index bf82bd41..f5d02ba2 100644 --- a/dotnet/model_browsing/AssemblyInfo.cs +++ b/dotnet/model_browsing/AssemblyInfo.cs @@ -1,24 +1,8 @@ using System.Reflection; using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("model_browsing")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("mzillgit")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.0.*")] - // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/dotnet/model_browsing/model_browsing.csproj b/dotnet/model_browsing/model_browsing.csproj index de4fc963..31a94ef3 100644 --- a/dotnet/model_browsing/model_browsing.csproj +++ b/dotnet/model_browsing/model_browsing.csproj @@ -1,50 +1,23 @@ - - + - Debug - AnyCPU - {59B85486-F48D-4978-BD35-8F5C3A8288D4} + net8.0 Exe - model_browsing - model_browsing - v4.8 - + model_browsing + mzillgit + 1.0.%2a + false - true - full - false bin\Debug DEBUG; - prompt - 4 true - false none - true bin\Release - prompt - 4 true - false - - - - - - - - - - {C35D624E-5506-4560-8074-1728F1FA1A4D} - IEC61850.NET - - - - + \ No newline at end of file diff --git a/dotnet/report_new_dataset/AssemblyInfo.cs b/dotnet/report_new_dataset/AssemblyInfo.cs index 1d974f12..f5d02ba2 100644 --- a/dotnet/report_new_dataset/AssemblyInfo.cs +++ b/dotnet/report_new_dataset/AssemblyInfo.cs @@ -1,24 +1,8 @@ using System.Reflection; using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("report_new_dataset")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("mzillgit")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.0.*")] - // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/dotnet/report_new_dataset/report_new_dataset.csproj b/dotnet/report_new_dataset/report_new_dataset.csproj index fb520387..a6851d0c 100644 --- a/dotnet/report_new_dataset/report_new_dataset.csproj +++ b/dotnet/report_new_dataset/report_new_dataset.csproj @@ -1,50 +1,23 @@ - - + - Debug - AnyCPU - {71485F99-2976-45E6-B73D-4946E594C15C} + net8.0 Exe - report_new_dataset - report_new_dataset - v4.8 - + report_new_dataset + mzillgit + 1.0.%2a + false - true - full - false bin\Debug DEBUG; - prompt - 4 true - false none - true bin\Release - prompt - 4 true - false - - - - - - - - - - {C35D624E-5506-4560-8074-1728F1FA1A4D} - IEC61850.NET - - - - + \ No newline at end of file diff --git a/dotnet/reporting/AssemblyInfo.cs b/dotnet/reporting/AssemblyInfo.cs index a58c9ab5..f5d02ba2 100644 --- a/dotnet/reporting/AssemblyInfo.cs +++ b/dotnet/reporting/AssemblyInfo.cs @@ -1,24 +1,8 @@ using System.Reflection; using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle("reporting")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("")] -[assembly: AssemblyCopyright("mzillgit")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion("1.0.*")] - // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/dotnet/reporting/Settings.cs b/dotnet/reporting/Settings.cs deleted file mode 100644 index 99fcfeb5..00000000 --- a/dotnet/reporting/Settings.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace reporting.Properties { - - - // This class allows you to handle specific events on the settings class: - // The SettingChanging event is raised before a setting's value is changed. - // The PropertyChanged event is raised after a setting's value is changed. - // The SettingsLoaded event is raised after the setting values are loaded. - // The SettingsSaving event is raised before the setting values are saved. - internal sealed partial class Settings { - - public Settings() { - // // To add event handlers for saving and changing settings, uncomment the lines below: - // - // this.SettingChanging += this.SettingChangingEventHandler; - // - // this.SettingsSaving += this.SettingsSavingEventHandler; - // - } - - private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) { - // Add code to handle the SettingChangingEvent event here. - } - - private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) { - // Add code to handle the SettingsSaving event here. - } - } -} diff --git a/dotnet/reporting/reporting.csproj b/dotnet/reporting/reporting.csproj index bed208a4..0bd1161c 100644 --- a/dotnet/reporting/reporting.csproj +++ b/dotnet/reporting/reporting.csproj @@ -1,12 +1,7 @@ - - + - Debug - AnyCPU - {9E29B4CE-EE5F-4CA6-85F6-5D1FF8B27BF8} + net8.0 Exe - reporting - reporting publish\ true Disk @@ -22,43 +17,24 @@ false false true - v4.8 - + reporting + mzillgit + 1.0.%2a + false - true - full - false bin\Debug DEBUG; - prompt - 4 true true - false none - true bin\Release - prompt - 4 true - false - - - - - - - - - - {C35D624E-5506-4560-8074-1728F1FA1A4D} - IEC61850.NET - + @@ -82,7 +58,4 @@ true - - - \ No newline at end of file diff --git a/dotnet/server1/Properties/AssemblyInfo.cs b/dotnet/server1/Properties/AssemblyInfo.cs index bee540ce..7e3616ef 100644 --- a/dotnet/server1/Properties/AssemblyInfo.cs +++ b/dotnet/server1/Properties/AssemblyInfo.cs @@ -1,24 +1,8 @@ using System.Reflection; using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle ("server1")] -[assembly: AssemblyDescription ("")] -[assembly: AssemblyConfiguration ("")] -[assembly: AssemblyCompany ("")] -[assembly: AssemblyProduct ("")] -[assembly: AssemblyCopyright ("mzillgit")] [assembly: AssemblyTrademark ("")] [assembly: AssemblyCulture ("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion ("1.0.*")] - // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/dotnet/server1/server1.csproj b/dotnet/server1/server1.csproj index c0cd3eb3..9da10f35 100644 --- a/dotnet/server1/server1.csproj +++ b/dotnet/server1/server1.csproj @@ -1,52 +1,26 @@ - - + - Debug - AnyCPU - {9286D2AB-96ED-4631-AB3C-ED20FF5D6E6C} + net8.0 Exe - server1 - server1 - v4.8 - + server1 + mzillgit + 1.0.%2a + false - true - full - false bin\Debug DEBUG; - prompt - 4 true - false - full - true bin\Release - prompt - 4 true - false - + - - - - - - - {C35D624E-5506-4560-8074-1728F1FA1A4D} - IEC61850.NET - - - - - + PreserveNewest diff --git a/dotnet/server_goose_publisher/Properties/AssemblyInfo.cs b/dotnet/server_goose_publisher/Properties/AssemblyInfo.cs index 181aecad..13a01df4 100644 --- a/dotnet/server_goose_publisher/Properties/AssemblyInfo.cs +++ b/dotnet/server_goose_publisher/Properties/AssemblyInfo.cs @@ -1,16 +1,6 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("server_goose_publisher")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("server_goose_publisher")] -[assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -21,16 +11,3 @@ using System.Runtime.InteropServices; // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("c14bb883-86b8-401c-b3d6-b655f55f3298")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/dotnet/server_goose_publisher/server_goose_publisher.csproj b/dotnet/server_goose_publisher/server_goose_publisher.csproj index 5cf3a856..d81d7f4d 100644 --- a/dotnet/server_goose_publisher/server_goose_publisher.csproj +++ b/dotnet/server_goose_publisher/server_goose_publisher.csproj @@ -1,63 +1,22 @@ - - - + - Debug - AnyCPU - {C14BB883-86B8-401C-B3D6-B655F55F3298} + net8.0 Exe - server_goose_publisher - server_goose_publisher - v4.6.1 - 512 - true - true + server_goose_publisher + server_goose_publisher + Copyright © 2021 + 1.0.0.0 + 1.0.0.0 + false - - AnyCPU - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - false - - - AnyCPU - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - - - - - - - - - - - - - - + Always + + - - {c35d624e-5506-4560-8074-1728f1fa1a4d} - IEC61850.NET - + - \ No newline at end of file diff --git a/dotnet/sv_subscriber/Properties/AssemblyInfo.cs b/dotnet/sv_subscriber/Properties/AssemblyInfo.cs index ae4b1a2a..7e3616ef 100644 --- a/dotnet/sv_subscriber/Properties/AssemblyInfo.cs +++ b/dotnet/sv_subscriber/Properties/AssemblyInfo.cs @@ -1,24 +1,8 @@ using System.Reflection; using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle ("sv_subscriber")] -[assembly: AssemblyDescription ("")] -[assembly: AssemblyConfiguration ("")] -[assembly: AssemblyCompany ("")] -[assembly: AssemblyProduct ("")] -[assembly: AssemblyCopyright ("mzillgit")] [assembly: AssemblyTrademark ("")] [assembly: AssemblyCulture ("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion ("1.0.*")] - // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/dotnet/sv_subscriber/sv_subscriber.csproj b/dotnet/sv_subscriber/sv_subscriber.csproj index 400ab39a..b75f1ac6 100644 --- a/dotnet/sv_subscriber/sv_subscriber.csproj +++ b/dotnet/sv_subscriber/sv_subscriber.csproj @@ -1,50 +1,22 @@ - - + - Debug - AnyCPU - {44651D2D-3252-4FD5-8B8B-5552DBE1B499} + net8.0 Exe - sv_subscriber - sv_subscriber - v4.8 - + sv_subscriber + mzillgit + 1.0.%2a + false - true - full - false bin\Debug DEBUG; - prompt - 4 true - false - full - true bin\Release - prompt - 4 true - false - - - - - - - - - - {C35D624E-5506-4560-8074-1728F1FA1A4D} - IEC61850.NET - - - - + \ No newline at end of file diff --git a/dotnet/tls_client_example/Properties/AssemblyInfo.cs b/dotnet/tls_client_example/Properties/AssemblyInfo.cs index 00fcb3e8..7e3616ef 100644 --- a/dotnet/tls_client_example/Properties/AssemblyInfo.cs +++ b/dotnet/tls_client_example/Properties/AssemblyInfo.cs @@ -1,24 +1,8 @@ using System.Reflection; using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle ("tls_client_example")] -[assembly: AssemblyDescription ("")] -[assembly: AssemblyConfiguration ("")] -[assembly: AssemblyCompany ("")] -[assembly: AssemblyProduct ("")] -[assembly: AssemblyCopyright ("mzillgit")] [assembly: AssemblyTrademark ("")] [assembly: AssemblyCulture ("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion ("1.0.*")] - // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/dotnet/tls_client_example/tls_client_example.csproj b/dotnet/tls_client_example/tls_client_example.csproj index 44e6086e..1c087c44 100644 --- a/dotnet/tls_client_example/tls_client_example.csproj +++ b/dotnet/tls_client_example/tls_client_example.csproj @@ -1,56 +1,32 @@ - - + - Debug - AnyCPU - {6734BF52-2D0D-476B-8EA2-C9C2D1D69B03} + net8.0 Exe - tls_client_example - tls_client_example - v4.8 - + tls_client_example + mzillgit + 1.0.%2a + false - true - full - false bin\Debug DEBUG; - prompt - 4 true - full - true bin\Release - prompt - 4 true - + - - - - - - - {C35D624E-5506-4560-8074-1728F1FA1A4D} - IEC61850.NET - - - - - + PreserveNewest - + PreserveNewest - + PreserveNewest diff --git a/dotnet/tls_server_example/Properties/AssemblyInfo.cs b/dotnet/tls_server_example/Properties/AssemblyInfo.cs index 638df635..7e3616ef 100644 --- a/dotnet/tls_server_example/Properties/AssemblyInfo.cs +++ b/dotnet/tls_server_example/Properties/AssemblyInfo.cs @@ -1,24 +1,8 @@ using System.Reflection; using System.Runtime.CompilerServices; - -// Information about this assembly is defined by the following attributes. -// Change them to the values specific to your project. - -[assembly: AssemblyTitle ("tls_server_example")] -[assembly: AssemblyDescription ("")] -[assembly: AssemblyConfiguration ("")] -[assembly: AssemblyCompany ("")] -[assembly: AssemblyProduct ("")] -[assembly: AssemblyCopyright ("mzillgit")] [assembly: AssemblyTrademark ("")] [assembly: AssemblyCulture ("")] -// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". -// The form "{Major}.{Minor}.*" will automatically update the build and revision, -// and "{Major}.{Minor}.{Build}.*" will update just the revision. - -[assembly: AssemblyVersion ("1.0.*")] - // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. diff --git a/dotnet/tls_server_example/tls_server_example.csproj b/dotnet/tls_server_example/tls_server_example.csproj index 2015bd55..17f163e8 100644 --- a/dotnet/tls_server_example/tls_server_example.csproj +++ b/dotnet/tls_server_example/tls_server_example.csproj @@ -1,59 +1,36 @@ - - + - Debug - AnyCPU - {B63F7A81-1D3A-4F2F-A7C2-D6F77E5BD307} + net8.0 Exe - tls_server_example - tls_server_example - v4.8 - + tls_server_example + mzillgit + 1.0.%2a + false + false - true - full - false bin\Debug DEBUG; - prompt - 4 true - full - true bin\Release - prompt - 4 true - + - - - - - - - {C35D624E-5506-4560-8074-1728F1FA1A4D} - IEC61850.NET - - - - - + PreserveNewest - + PreserveNewest - + PreserveNewest - + PreserveNewest diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 05635551..93aa670f 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -6,7 +6,6 @@ add_subdirectory(server_example_control) add_subdirectory(server_example_dynamic) add_subdirectory(server_example_config_file) add_subdirectory(server_example_complex_array) -add_subdirectory(server_example_CMV) add_subdirectory(server_example_threadless) add_subdirectory(server_example_61400_25) add_subdirectory(server_example_setting_groups) diff --git a/examples/Makefile b/examples/Makefile index abddfb97..ebc03899 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -15,7 +15,6 @@ EXAMPLE_DIRS += server_example_control EXAMPLE_DIRS += server_example_config_file EXAMPLE_DIRS += server_example_dynamic EXAMPLE_DIRS += server_example_complex_array -EXAMPLE_DIRS += server_example_SMV EXAMPLE_DIRS += server_example_61400_25 EXAMPLE_DIRS += server_example_threadless EXAMPLE_DIRS += server_example_setting_groups diff --git a/examples/server_example_CMV/CMakeLists.txt b/examples/server_example_CMV/CMakeLists.txt deleted file mode 100644 index b0461bc8..00000000 --- a/examples/server_example_CMV/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -include_directories( - . -) - -set(server_example_SMV_SRCS - server_example_SMV.c - static_model.c -) - -IF(MSVC) -set_source_files_properties(${server_example_SMV_SRCS} - PROPERTIES LANGUAGE CXX) -ENDIF(MSVC) - -add_executable(server_example_SMV - ${server_example_SMV_SRCS} -) - -target_link_libraries(server_example_SMV - iec61850 -) diff --git a/examples/server_example_CMV/Makefile b/examples/server_example_CMV/Makefile deleted file mode 100644 index ae4b1449..00000000 --- a/examples/server_example_CMV/Makefile +++ /dev/null @@ -1,26 +0,0 @@ -LIBIEC_HOME=../.. - -PROJECT_BINARY_NAME = server_example_SMV -PROJECT_SOURCES = server_example_SMV.c -PROJECT_SOURCES += static_model.c - -PROJECT_ICD_FILE = sampleModel.cid - -include $(LIBIEC_HOME)/make/target_system.mk -include $(LIBIEC_HOME)/make/stack_includes.mk - -all: $(PROJECT_BINARY_NAME) - -include $(LIBIEC_HOME)/make/common_targets.mk - -model: $(PROJECT_ICD_FILE) - java -jar $(LIBIEC_HOME)/tools/model_generator/genmodel.jar $(PROJECT_ICD_FILE) - - -$(PROJECT_BINARY_NAME): $(PROJECT_SOURCES) $(LIB_NAME) - $(CC) $(CFLAGS) $(LDFLAGS) -o $(PROJECT_BINARY_NAME) $(PROJECT_SOURCES) $(INCLUDES) $(LIB_NAME) $(LDLIBS) - -clean: - rm -f $(PROJECT_BINARY_NAME) - - diff --git a/examples/server_example_CMV/mhai_array_old.cid b/examples/server_example_CMV/mhai_array_old.cid deleted file mode 100644 index 1d347328..00000000 --- a/examples/server_example_CMV/mhai_array_old.cid +++ /dev/null @@ -1,313 +0,0 @@ - - - -
-
- - - - -
-

0.0.0.0

-

255.255.255.0

-

192.168.2.1

-

1,3,9999,33

-

33

-

00000001

-

0001

-

0001

-

102

-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - status-only - - - - - - - - ok - - - - - - - - on - - - status-only - - - - - on - - - - - ok - - - - - direct-with-normal-security - - - - - direct-with-normal-security - - - - - direct-with-normal-security - - - - - direct-with-normal-security - - - - - - - - - - - - - - - - - - - - - - 16 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - on - blocked - test - test/blocked - off - - - - ok - warning - alarm - - - - status-only - direct-with-normal-security - sbo-with-normal-security - direct-with-enhanced-security - sbo-with-enhanced-security - - - - not-supported - bay-control - station-control - remote-control - automatic-bay - automatic-station - automatic-remote - maintenance - process - - - - -
diff --git a/examples/server_example_CMV/sampleModel.cid b/examples/server_example_CMV/sampleModel.cid deleted file mode 100644 index 80ab35ae..00000000 --- a/examples/server_example_CMV/sampleModel.cid +++ /dev/null @@ -1,193 +0,0 @@ - - -
- - - - -
-

01-0C-CD-04-00-01

-

4000

-

4

-

123

-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - status-only - - - - - - - - status-only - - - - - - - status-only - - - - - - - status-only - - - - - - - status-only - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - status-only - direct-with-normal-security - sbo-with-normal-security - direct-with-enhanced-security - sbo-with-enhanced-security - - - \ No newline at end of file diff --git a/examples/server_example_CMV/server_example_SMV.c b/examples/server_example_CMV/server_example_SMV.c deleted file mode 100644 index 3f5b4c8d..00000000 --- a/examples/server_example_CMV/server_example_SMV.c +++ /dev/null @@ -1,136 +0,0 @@ -/* - * server_example_SMV.c - * - * This example shows how to handle complex arrays (arrays of data objects). - */ - -#include "iec61850_server.h" -#include "hal_thread.h" -#include -#include -#include - -#include "static_model.h" - -#include - -static int running = 0; - -static void -sigint_handler(int signalId) -{ - running = 0; -} - -static void -updateCMVArrayElement(IedServer server, DataObject* phsAHar, int idx, float magnitude, float angle, Quality quality, Timestamp timestamp) -{ - DataObject* phsAHarArrayElem = (DataObject*)ModelNode_getChildWithIdx((ModelNode*)phsAHar, idx); - - if (phsAHarArrayElem) { - - DataAttribute* mag = (DataAttribute*)ModelNode_getChild((ModelNode*)phsAHarArrayElem, "cVal.mag.f"); - DataAttribute* ang = (DataAttribute*)ModelNode_getChild((ModelNode*)phsAHarArrayElem, "cVal.ang.f"); - DataAttribute* q = (DataAttribute*)ModelNode_getChild((ModelNode*)phsAHarArrayElem, "q"); - DataAttribute* t = (DataAttribute*)ModelNode_getChild((ModelNode*)phsAHarArrayElem, "t"); - - if (mag && ang && q && t) { - IedServer_updateQuality(server, q, quality); - IedServer_updateTimestampAttributeValue(server, t, ×tamp); - IedServer_updateFloatAttributeValue(server, mag, magnitude); - IedServer_updateFloatAttributeValue(server, ang, angle); - } - else { - printf("one of mag, ang, q, t not found\n"); - } - } - else { - printf("Element with index %i not found\n", idx); - } -} - -int -main(int argc, char **argv) -{ - - int tcpPort = 102; - - if (argc > 1) { - tcpPort = atoi(argv[1]); - } - - IedServer iedServer = IedServer_create(&iedModel); - - LogicalDevice* logicalDevice = iedModel.firstChild; - - LogicalNode* logicalNode = LogicalDevice_getLogicalNode(logicalDevice, "666LLN051"); - - SVControlBlock* sMVcontrolBlock = - (SVControlBlock*)IedModel_getSVControlBlock(&iedModel, logicalNode, "NewSMVControl"); - - ///* Get access to the MHAI1.HA data object handle - for static and dynamic model*/ - //DataObject* mhai1_ha_phsAHar = (DataObject*) - // IedModel_getModelNodeByShortObjectReference(&iedModel, "ComplexArray/MHAI1.HA.phsAHar"); - - ///* assuming the array has 16 elements */ - //float mag = 200.f; - //float angle = 0.01f; - - /*Quality quality = QUALITY_VALIDITY_GOOD; - Timestamp timestamp; - - Timestamp_setTimeInMilliseconds(×tamp, Hal_getTimeInMs()); - - int i; - for (i = 0; i < 16; i++) { - updateCMVArrayElement(iedServer, mhai1_ha_phsAHar, i, mag, angle, quality, timestamp); - mag += 1.f; - angle += 0.01f; - }*/ - - /* MMS server will be instructed to start listening to client connections. */ - IedServer_start(iedServer, tcpPort); - - if (!IedServer_isRunning(iedServer)) { - printf("Starting server failed! Exit.\n"); - IedServer_destroy(iedServer); - exit(-1); - } - - running = 1; - - signal(SIGINT, sigint_handler); - - int counter = 0; - - while (running) { - Thread_sleep(1000); - - //Timestamp_setTimeInMilliseconds(×tamp, Hal_getTimeInMs()); - - IedServer_lockDataModel(iedServer); - - /*for (i = 0; i < 16; i++) { - updateCMVArrayElement(iedServer, mhai1_ha_phsAHar, i, mag, angle, quality, timestamp); - mag += 0.1f; - angle += 0.05f; - }*/ - - IedServer_unlockDataModel(iedServer); - - //if (counter == 10) { - // /* Now a problem occurs - measurements are invalid */ - // quality = QUALITY_VALIDITY_INVALID | QUALITY_DETAIL_FAILURE; - //} - - //counter++; - } - - /* stop MMS server - close TCP server socket and all client sockets */ - IedServer_stop(iedServer); - - /* Cleanup - free all resources */ - IedServer_destroy(iedServer); - - return 0; -} /* main() */ diff --git a/examples/server_example_CMV/static_model.c b/examples/server_example_CMV/static_model.c deleted file mode 100644 index 5a27de9f..00000000 --- a/examples/server_example_CMV/static_model.c +++ /dev/null @@ -1,371 +0,0 @@ -/* - * static_model.c - * - * automatically generated from ICDFiles/simpleIO_smv.icd - */ -#include "static_model.h" - -static void initializeValues(); - - - -LogicalDevice iedModel_GenericIO = { - LogicalDeviceModelType, - "GenericIO", - (ModelNode*) &iedModel, - NULL, - (ModelNode*) &iedModel_GenericIO_666LLN051, - NULL -}; - -LogicalNode iedModel_GenericIO_666LLN051 = { - LogicalNodeModelType, - "666LLN051", - (ModelNode*) &iedModel_GenericIO, - NULL, - (ModelNode*) &iedModel_GenericIO_666LLN051_Mod -}; - -DataObject iedModel_GenericIO_666LLN051_Mod = { - DataObjectModelType, - "Mod", - (ModelNode*) &iedModel_GenericIO_666LLN051, - (ModelNode*) &iedModel_GenericIO_666LLN051_Beh, - (ModelNode*) &iedModel_GenericIO_666LLN051_Mod_stVal, - 0, - -1 -}; -DataAttribute iedModel_GenericIO_666LLN051_Mod_stVal = { - DataAttributeModelType, - "stVal", - (ModelNode*) &iedModel_GenericIO_666LLN051_Mod, - (ModelNode*) &iedModel_GenericIO_666LLN051_Mod_q, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_ENUMERATED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE + TRG_OPT_QUALITY_CHANGED, - NULL, - 0 -}; -DataAttribute iedModel_GenericIO_666LLN051_Mod_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_GenericIO_666LLN051_Mod, - (ModelNode*) &iedModel_GenericIO_666LLN051_Mod_t, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_QUALITY, - 0, - NULL, - 0 -}; -DataAttribute iedModel_GenericIO_666LLN051_Mod_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_GenericIO_666LLN051_Mod, - (ModelNode*) &iedModel_GenericIO_666LLN051_Mod_ctlModel, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_TIMESTAMP, - 0, - NULL, - 0 -}; -DataAttribute iedModel_GenericIO_666LLN051_Mod_ctlModel = { - DataAttributeModelType, - "ctlModel", - (ModelNode*) &iedModel_GenericIO_666LLN051_Mod, - NULL, - NULL, - 0, - -1, - IEC61850_FC_CF, - IEC61850_ENUMERATED, - 0, - NULL, - 0 -}; -DataObject iedModel_GenericIO_666LLN051_Beh = { - DataObjectModelType, - "Beh", - (ModelNode*) &iedModel_GenericIO_666LLN051, - (ModelNode*) &iedModel_GenericIO_666LLN051_Health, - (ModelNode*) &iedModel_GenericIO_666LLN051_Beh_stVal, - 0, - -1 -}; -DataAttribute iedModel_GenericIO_666LLN051_Beh_stVal = { - DataAttributeModelType, - "stVal", - (ModelNode*) &iedModel_GenericIO_666LLN051_Beh, - (ModelNode*) &iedModel_GenericIO_666LLN051_Beh_q, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_ENUMERATED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE + TRG_OPT_QUALITY_CHANGED, - NULL, - 0 -}; -DataAttribute iedModel_GenericIO_666LLN051_Beh_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_GenericIO_666LLN051_Beh, - (ModelNode*) &iedModel_GenericIO_666LLN051_Beh_t, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_QUALITY, - 0, - NULL, - 0 -}; -DataAttribute iedModel_GenericIO_666LLN051_Beh_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_GenericIO_666LLN051_Beh, - NULL, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_TIMESTAMP, - 0, - NULL, - 0 -}; -DataObject iedModel_GenericIO_666LLN051_Health = { - DataObjectModelType, - "Health", - (ModelNode*) &iedModel_GenericIO_666LLN051, - (ModelNode*) &iedModel_GenericIO_666LLN051_NamPlt, - (ModelNode*) &iedModel_GenericIO_666LLN051_Health_stVal, - 0, - -1 -}; -DataAttribute iedModel_GenericIO_666LLN051_Health_stVal = { - DataAttributeModelType, - "stVal", - (ModelNode*) &iedModel_GenericIO_666LLN051_Health, - (ModelNode*) &iedModel_GenericIO_666LLN051_Health_q, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_ENUMERATED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE + TRG_OPT_QUALITY_CHANGED, - NULL, - 0 -}; -DataAttribute iedModel_GenericIO_666LLN051_Health_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_GenericIO_666LLN051_Health, - (ModelNode*) &iedModel_GenericIO_666LLN051_Health_t, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_QUALITY, - 0, - NULL, - 0 -}; -DataAttribute iedModel_GenericIO_666LLN051_Health_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_GenericIO_666LLN051_Health, - NULL, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_TIMESTAMP, - 0, - NULL, - 0 -}; -DataObject iedModel_GenericIO_666LLN051_NamPlt = { - DataObjectModelType, - "NamPlt", - (ModelNode*) &iedModel_GenericIO_666LLN051, - NULL, - (ModelNode*) &iedModel_GenericIO_666LLN051_NamPlt_vendor, - 0, - -1 -}; -DataAttribute iedModel_GenericIO_666LLN051_NamPlt_vendor = { - DataAttributeModelType, - "vendor", - (ModelNode*) &iedModel_GenericIO_666LLN051_NamPlt, - (ModelNode*) &iedModel_GenericIO_666LLN051_NamPlt_swRev, - NULL, - 0, - -1, - IEC61850_FC_DC, - IEC61850_VISIBLE_STRING_255, - 0, - NULL, - 0 -}; -DataAttribute iedModel_GenericIO_666LLN051_NamPlt_swRev = { - DataAttributeModelType, - "swRev", - (ModelNode*) &iedModel_GenericIO_666LLN051_NamPlt, - (ModelNode*) &iedModel_GenericIO_666LLN051_NamPlt_d, - NULL, - 0, - -1, - IEC61850_FC_DC, - IEC61850_VISIBLE_STRING_255, - 0, - NULL, - 0 -}; -DataAttribute iedModel_GenericIO_666LLN051_NamPlt_d = { - DataAttributeModelType, - "d", - (ModelNode*) &iedModel_GenericIO_666LLN051_NamPlt, - (ModelNode*) &iedModel_GenericIO_666LLN051_NamPlt_configRev, - NULL, - 0, - -1, - IEC61850_FC_DC, - IEC61850_VISIBLE_STRING_255, - 0, - NULL, - 0 -}; -DataAttribute iedModel_GenericIO_666LLN051_NamPlt_configRev = { - DataAttributeModelType, - "configRev", - (ModelNode*) &iedModel_GenericIO_666LLN051_NamPlt, - (ModelNode*) &iedModel_GenericIO_666LLN051_NamPlt_ldNs, - NULL, - 0, - -1, - IEC61850_FC_DC, - IEC61850_VISIBLE_STRING_255, - 0, - NULL, - 0 -}; -DataAttribute iedModel_GenericIO_666LLN051_NamPlt_ldNs = { - DataAttributeModelType, - "ldNs", - (ModelNode*) &iedModel_GenericIO_666LLN051_NamPlt, - NULL, - NULL, - 0, - -1, - IEC61850_FC_EX, - IEC61850_VISIBLE_STRING_255, - 0, - NULL, - 0 -}; - - - -extern SettingGroupControlBlock iedModel_GenericIO_666LLN051_sgcb; - -SettingGroupControlBlock iedModel_GenericIO_666LLN051_sgcb = { - &iedModel_GenericIO_666LLN051, - 98, - 77, - 0, - false, - 0, - 0, - NULL, -}; - -extern SVControlBlock iedModel_GenericIO_666LLN051_smv0; -extern SVControlBlock iedModel_GenericIO_666LLN051_smv1; - - -static PhyComAddress iedModel_GenericIO_666LLN051_smv0_address = { - 4, - 123, - 4000, - {0x1, 0xc, 0xcd, 0x4, 0x0, 0x1} -}; - -SVControlBlock iedModel_GenericIO_666LLN051_smv0 = { - &iedModel_GenericIO_666LLN051, - "NewSMVControl", - "666655dd", - "Events2", - 23, - 1, - 555, - 5, - &iedModel_GenericIO_666LLN051_smv0_address, - true, - 98, - &iedModel_GenericIO_666LLN051_smv1 -}; - -static PhyComAddress iedModel_GenericIO_666LLN051_smv1_address = { - 4, - 123, - 4000, - {0x1, 0xc, 0xcd, 0x4, 0x0, 0x1} -}; - -SVControlBlock iedModel_GenericIO_666LLN051_smv1 = { - &iedModel_GenericIO_666LLN051, - "NewSMVControl1", - NULL, - "Events2", - 0, - NULL, - -1, - -1, - &iedModel_GenericIO_666LLN051_smv1_address, - false, - -1, - NULL -}; - - - -IedModel iedModel = { - "simpleIO", - &iedModel_GenericIO, - NULL, - NULL, - NULL, - &iedModel_GenericIO_666LLN051_smv0, - &iedModel_GenericIO_666LLN051_sgcb, - NULL, - NULL, - initializeValues -}; - -static void -initializeValues() -{ - -iedModel_GenericIO_666LLN051_Mod_stVal.mmsValue = MmsValue_newIntegerFromInt32(1); - -iedModel_GenericIO_666LLN051_Mod_ctlModel.mmsValue = MmsValue_newIntegerFromInt32(0); - -iedModel_GenericIO_666LLN051_Beh_stVal.mmsValue = MmsValue_newIntegerFromInt32(1); - -iedModel_GenericIO_666LLN051_Health_stVal.mmsValue = MmsValue_newIntegerFromInt32(1); - -iedModel_GenericIO_666LLN051_NamPlt_vendor.mmsValue = MmsValue_newVisibleString("MZ Automation"); - -iedModel_GenericIO_666LLN051_NamPlt_swRev.mmsValue = MmsValue_newVisibleString("1.3.0"); - -iedModel_GenericIO_666LLN051_NamPlt_d.mmsValue = MmsValue_newVisibleString("libiec61850 server example"); -} diff --git a/examples/server_example_CMV/static_model.h b/examples/server_example_CMV/static_model.h deleted file mode 100644 index 8c57d157..00000000 --- a/examples/server_example_CMV/static_model.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * static_model.h - * - * automatically generated from ICDFiles/simpleIO_smv.icd - */ - -#ifndef STATIC_MODEL_H_ -#define STATIC_MODEL_H_ - -#include -#include "iec61850_model.h" - -extern IedModel iedModel; -extern LogicalDevice iedModel_GenericIO; -extern LogicalNode iedModel_GenericIO_666LLN051; -extern DataObject iedModel_GenericIO_666LLN051_Mod; -extern DataAttribute iedModel_GenericIO_666LLN051_Mod_stVal; -extern DataAttribute iedModel_GenericIO_666LLN051_Mod_q; -extern DataAttribute iedModel_GenericIO_666LLN051_Mod_t; -extern DataAttribute iedModel_GenericIO_666LLN051_Mod_ctlModel; -extern DataObject iedModel_GenericIO_666LLN051_Beh; -extern DataAttribute iedModel_GenericIO_666LLN051_Beh_stVal; -extern DataAttribute iedModel_GenericIO_666LLN051_Beh_q; -extern DataAttribute iedModel_GenericIO_666LLN051_Beh_t; -extern DataObject iedModel_GenericIO_666LLN051_Health; -extern DataAttribute iedModel_GenericIO_666LLN051_Health_stVal; -extern DataAttribute iedModel_GenericIO_666LLN051_Health_q; -extern DataAttribute iedModel_GenericIO_666LLN051_Health_t; -extern DataObject iedModel_GenericIO_666LLN051_NamPlt; -extern DataAttribute iedModel_GenericIO_666LLN051_NamPlt_vendor; -extern DataAttribute iedModel_GenericIO_666LLN051_NamPlt_swRev; -extern DataAttribute iedModel_GenericIO_666LLN051_NamPlt_d; -extern DataAttribute iedModel_GenericIO_666LLN051_NamPlt_configRev; -extern DataAttribute iedModel_GenericIO_666LLN051_NamPlt_ldNs; - - - - -#define IEDMODEL_GenericIO (&iedModel_GenericIO) -#define IEDMODEL_GenericIO_666LLN051 (&iedModel_GenericIO_666LLN051) -#define IEDMODEL_GenericIO_666LLN051_Mod (&iedModel_GenericIO_666LLN051_Mod) -#define IEDMODEL_GenericIO_666LLN051_Mod_stVal (&iedModel_GenericIO_666LLN051_Mod_stVal) -#define IEDMODEL_GenericIO_666LLN051_Mod_q (&iedModel_GenericIO_666LLN051_Mod_q) -#define IEDMODEL_GenericIO_666LLN051_Mod_t (&iedModel_GenericIO_666LLN051_Mod_t) -#define IEDMODEL_GenericIO_666LLN051_Mod_ctlModel (&iedModel_GenericIO_666LLN051_Mod_ctlModel) -#define IEDMODEL_GenericIO_666LLN051_Beh (&iedModel_GenericIO_666LLN051_Beh) -#define IEDMODEL_GenericIO_666LLN051_Beh_stVal (&iedModel_GenericIO_666LLN051_Beh_stVal) -#define IEDMODEL_GenericIO_666LLN051_Beh_q (&iedModel_GenericIO_666LLN051_Beh_q) -#define IEDMODEL_GenericIO_666LLN051_Beh_t (&iedModel_GenericIO_666LLN051_Beh_t) -#define IEDMODEL_GenericIO_666LLN051_Health (&iedModel_GenericIO_666LLN051_Health) -#define IEDMODEL_GenericIO_666LLN051_Health_stVal (&iedModel_GenericIO_666LLN051_Health_stVal) -#define IEDMODEL_GenericIO_666LLN051_Health_q (&iedModel_GenericIO_666LLN051_Health_q) -#define IEDMODEL_GenericIO_666LLN051_Health_t (&iedModel_GenericIO_666LLN051_Health_t) -#define IEDMODEL_GenericIO_666LLN051_NamPlt (&iedModel_GenericIO_666LLN051_NamPlt) -#define IEDMODEL_GenericIO_666LLN051_NamPlt_vendor (&iedModel_GenericIO_666LLN051_NamPlt_vendor) -#define IEDMODEL_GenericIO_666LLN051_NamPlt_swRev (&iedModel_GenericIO_666LLN051_NamPlt_swRev) -#define IEDMODEL_GenericIO_666LLN051_NamPlt_d (&iedModel_GenericIO_666LLN051_NamPlt_d) -#define IEDMODEL_GenericIO_666LLN051_NamPlt_configRev (&iedModel_GenericIO_666LLN051_NamPlt_configRev) -#define IEDMODEL_GenericIO_666LLN051_NamPlt_ldNs (&iedModel_GenericIO_666LLN051_NamPlt_ldNs) - -#endif /* STATIC_MODEL_H_ */ - diff --git a/examples/server_example_CMV/static_model_5.c b/examples/server_example_CMV/static_model_5.c deleted file mode 100644 index c4daacdf..00000000 --- a/examples/server_example_CMV/static_model_5.c +++ /dev/null @@ -1,3880 +0,0 @@ -/* - * static_model.c - * - * automatically generated from mhai_array.cid - */ -#include "static_model.h" - -static void initializeValues(); - -extern DataSet iedModelds_ComplexArray_MHAI1_TestMHAI; - - -extern DataSetEntry iedModelds_ComplexArray_MHAI1_TestMHAI_fcda0; -extern DataSetEntry iedModelds_ComplexArray_MHAI1_TestMHAI_fcda1; -extern DataSetEntry iedModelds_ComplexArray_MHAI1_TestMHAI_fcda2; -extern DataSetEntry iedModelds_ComplexArray_MHAI1_TestMHAI_fcda3; -extern DataSetEntry iedModelds_ComplexArray_MHAI1_TestMHAI_fcda4; - -DataSetEntry iedModelds_ComplexArray_MHAI1_TestMHAI_fcda0 = { - "ComplexArray", - false, - "MHAI1$MX$HA$phsAHar", - 7, - NULL, - NULL, - &iedModelds_ComplexArray_MHAI1_TestMHAI_fcda1 -}; - -DataSetEntry iedModelds_ComplexArray_MHAI1_TestMHAI_fcda1 = { - "ComplexArray", - false, - "MHAI1$MX$HA$phsAHar", - 8, - NULL, - NULL, - &iedModelds_ComplexArray_MHAI1_TestMHAI_fcda2 -}; - -DataSetEntry iedModelds_ComplexArray_MHAI1_TestMHAI_fcda2 = { - "ComplexArray", - false, - "MHAI1$MX$HA$phsAHar", - 9, - "cVal", - NULL, - &iedModelds_ComplexArray_MHAI1_TestMHAI_fcda3 -}; - -DataSetEntry iedModelds_ComplexArray_MHAI1_TestMHAI_fcda3 = { - "ComplexArray", - false, - "MHAI1$MX$HA$phsAHar", - 10, - "cVal$mag", - NULL, - &iedModelds_ComplexArray_MHAI1_TestMHAI_fcda4 -}; - -DataSetEntry iedModelds_ComplexArray_MHAI1_TestMHAI_fcda4 = { - "ComplexArray", - false, - "MHAI1$MX$HA$phsAHar", - 11, - "cVal$mag$f", - NULL, - NULL -}; - -DataSet iedModelds_ComplexArray_MHAI1_TestMHAI = { - "ComplexArray", - "MHAI1$TestMHAI", - 5, - &iedModelds_ComplexArray_MHAI1_TestMHAI_fcda0, - NULL -}; - -LogicalDevice iedModel_ComplexArray = { - LogicalDeviceModelType, - "ComplexArray", - (ModelNode*) &iedModel, - NULL, - (ModelNode*) &iedModel_ComplexArray_LLN0, - NULL -}; - -LogicalNode iedModel_ComplexArray_LLN0 = { - LogicalNodeModelType, - "LLN0", - (ModelNode*) &iedModel_ComplexArray, - (ModelNode*) &iedModel_ComplexArray_LPHD1, - (ModelNode*) &iedModel_ComplexArray_LLN0_Mod, -}; - -DataObject iedModel_ComplexArray_LLN0_Mod = { - DataObjectModelType, - "Mod", - (ModelNode*) &iedModel_ComplexArray_LLN0, - (ModelNode*) &iedModel_ComplexArray_LLN0_Beh, - (ModelNode*) &iedModel_ComplexArray_LLN0_Mod_stVal, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_LLN0_Mod_stVal = { - DataAttributeModelType, - "stVal", - (ModelNode*) &iedModel_ComplexArray_LLN0_Mod, - (ModelNode*) &iedModel_ComplexArray_LLN0_Mod_q, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_ENUMERATED, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_LLN0_Mod_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_LLN0_Mod, - (ModelNode*) &iedModel_ComplexArray_LLN0_Mod_t, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_LLN0_Mod_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_LLN0_Mod, - (ModelNode*) &iedModel_ComplexArray_LLN0_Mod_ctlModel, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_LLN0_Mod_ctlModel = { - DataAttributeModelType, - "ctlModel", - (ModelNode*) &iedModel_ComplexArray_LLN0_Mod, - NULL, - NULL, - 0, - -1, - IEC61850_FC_CF, - IEC61850_ENUMERATED, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_LLN0_Beh = { - DataObjectModelType, - "Beh", - (ModelNode*) &iedModel_ComplexArray_LLN0, - (ModelNode*) &iedModel_ComplexArray_LLN0_Health, - (ModelNode*) &iedModel_ComplexArray_LLN0_Beh_stVal, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_LLN0_Beh_stVal = { - DataAttributeModelType, - "stVal", - (ModelNode*) &iedModel_ComplexArray_LLN0_Beh, - (ModelNode*) &iedModel_ComplexArray_LLN0_Beh_q, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_ENUMERATED, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_LLN0_Beh_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_LLN0_Beh, - (ModelNode*) &iedModel_ComplexArray_LLN0_Beh_t, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_LLN0_Beh_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_LLN0_Beh, - NULL, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_LLN0_Health = { - DataObjectModelType, - "Health", - (ModelNode*) &iedModel_ComplexArray_LLN0, - (ModelNode*) &iedModel_ComplexArray_LLN0_NamPlt, - (ModelNode*) &iedModel_ComplexArray_LLN0_Health_stVal, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_LLN0_Health_stVal = { - DataAttributeModelType, - "stVal", - (ModelNode*) &iedModel_ComplexArray_LLN0_Health, - (ModelNode*) &iedModel_ComplexArray_LLN0_Health_q, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_ENUMERATED, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_LLN0_Health_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_LLN0_Health, - (ModelNode*) &iedModel_ComplexArray_LLN0_Health_t, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_LLN0_Health_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_LLN0_Health, - NULL, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_LLN0_NamPlt = { - DataObjectModelType, - "NamPlt", - (ModelNode*) &iedModel_ComplexArray_LLN0, - NULL, - (ModelNode*) &iedModel_ComplexArray_LLN0_NamPlt_vendor, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_LLN0_NamPlt_vendor = { - DataAttributeModelType, - "vendor", - (ModelNode*) &iedModel_ComplexArray_LLN0_NamPlt, - (ModelNode*) &iedModel_ComplexArray_LLN0_NamPlt_swRev, - NULL, - 0, - -1, - IEC61850_FC_DC, - IEC61850_VISIBLE_STRING_255, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_LLN0_NamPlt_swRev = { - DataAttributeModelType, - "swRev", - (ModelNode*) &iedModel_ComplexArray_LLN0_NamPlt, - (ModelNode*) &iedModel_ComplexArray_LLN0_NamPlt_d, - NULL, - 0, - -1, - IEC61850_FC_DC, - IEC61850_VISIBLE_STRING_255, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_LLN0_NamPlt_d = { - DataAttributeModelType, - "d", - (ModelNode*) &iedModel_ComplexArray_LLN0_NamPlt, - (ModelNode*) &iedModel_ComplexArray_LLN0_NamPlt_configRev, - NULL, - 0, - -1, - IEC61850_FC_DC, - IEC61850_VISIBLE_STRING_255, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_LLN0_NamPlt_configRev = { - DataAttributeModelType, - "configRev", - (ModelNode*) &iedModel_ComplexArray_LLN0_NamPlt, - (ModelNode*) &iedModel_ComplexArray_LLN0_NamPlt_ldNs, - NULL, - 0, - -1, - IEC61850_FC_DC, - IEC61850_VISIBLE_STRING_255, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_LLN0_NamPlt_ldNs = { - DataAttributeModelType, - "ldNs", - (ModelNode*) &iedModel_ComplexArray_LLN0_NamPlt, - NULL, - NULL, - 0, - -1, - IEC61850_FC_EX, - IEC61850_VISIBLE_STRING_255, - 0, - NULL, - 0}; - -LogicalNode iedModel_ComplexArray_LPHD1 = { - LogicalNodeModelType, - "LPHD1", - (ModelNode*) &iedModel_ComplexArray, - (ModelNode*) &iedModel_ComplexArray_GGIO1, - (ModelNode*) &iedModel_ComplexArray_LPHD1_PhyNam, -}; - -DataObject iedModel_ComplexArray_LPHD1_PhyNam = { - DataObjectModelType, - "PhyNam", - (ModelNode*) &iedModel_ComplexArray_LPHD1, - (ModelNode*) &iedModel_ComplexArray_LPHD1_PhyHealth, - (ModelNode*) &iedModel_ComplexArray_LPHD1_PhyNam_vendor, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_LPHD1_PhyNam_vendor = { - DataAttributeModelType, - "vendor", - (ModelNode*) &iedModel_ComplexArray_LPHD1_PhyNam, - NULL, - NULL, - 0, - -1, - IEC61850_FC_DC, - IEC61850_VISIBLE_STRING_255, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_LPHD1_PhyHealth = { - DataObjectModelType, - "PhyHealth", - (ModelNode*) &iedModel_ComplexArray_LPHD1, - (ModelNode*) &iedModel_ComplexArray_LPHD1_Proxy, - (ModelNode*) &iedModel_ComplexArray_LPHD1_PhyHealth_stVal, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_LPHD1_PhyHealth_stVal = { - DataAttributeModelType, - "stVal", - (ModelNode*) &iedModel_ComplexArray_LPHD1_PhyHealth, - (ModelNode*) &iedModel_ComplexArray_LPHD1_PhyHealth_q, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_ENUMERATED, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_LPHD1_PhyHealth_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_LPHD1_PhyHealth, - (ModelNode*) &iedModel_ComplexArray_LPHD1_PhyHealth_t, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_LPHD1_PhyHealth_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_LPHD1_PhyHealth, - NULL, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_LPHD1_Proxy = { - DataObjectModelType, - "Proxy", - (ModelNode*) &iedModel_ComplexArray_LPHD1, - NULL, - (ModelNode*) &iedModel_ComplexArray_LPHD1_Proxy_stVal, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_LPHD1_Proxy_stVal = { - DataAttributeModelType, - "stVal", - (ModelNode*) &iedModel_ComplexArray_LPHD1_Proxy, - (ModelNode*) &iedModel_ComplexArray_LPHD1_Proxy_q, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_BOOLEAN, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_LPHD1_Proxy_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_LPHD1_Proxy, - (ModelNode*) &iedModel_ComplexArray_LPHD1_Proxy_t, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_LPHD1_Proxy_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_LPHD1_Proxy, - NULL, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -LogicalNode iedModel_ComplexArray_GGIO1 = { - LogicalNodeModelType, - "GGIO1", - (ModelNode*) &iedModel_ComplexArray, - (ModelNode*) &iedModel_ComplexArray_MHAI1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Mod, -}; - -DataObject iedModel_ComplexArray_GGIO1_Mod = { - DataObjectModelType, - "Mod", - (ModelNode*) &iedModel_ComplexArray_GGIO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Beh, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Mod_stVal, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_GGIO1_Mod_stVal = { - DataAttributeModelType, - "stVal", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Mod, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Mod_q, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_ENUMERATED, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_Mod_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Mod, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Mod_t, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_Mod_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Mod, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Mod_ctlModel, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_Mod_ctlModel = { - DataAttributeModelType, - "ctlModel", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Mod, - NULL, - NULL, - 0, - -1, - IEC61850_FC_CF, - IEC61850_ENUMERATED, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_GGIO1_Beh = { - DataObjectModelType, - "Beh", - (ModelNode*) &iedModel_ComplexArray_GGIO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Health, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Beh_stVal, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_GGIO1_Beh_stVal = { - DataAttributeModelType, - "stVal", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Beh, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Beh_q, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_ENUMERATED, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_Beh_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Beh, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Beh_t, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_Beh_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Beh, - NULL, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_GGIO1_Health = { - DataObjectModelType, - "Health", - (ModelNode*) &iedModel_ComplexArray_GGIO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_NamPlt, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Health_stVal, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_GGIO1_Health_stVal = { - DataAttributeModelType, - "stVal", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Health, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Health_q, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_ENUMERATED, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_Health_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Health, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Health_t, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_Health_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Health, - NULL, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_GGIO1_NamPlt = { - DataObjectModelType, - "NamPlt", - (ModelNode*) &iedModel_ComplexArray_GGIO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_NamPlt_vendor, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_GGIO1_NamPlt_vendor = { - DataAttributeModelType, - "vendor", - (ModelNode*) &iedModel_ComplexArray_GGIO1_NamPlt, - (ModelNode*) &iedModel_ComplexArray_GGIO1_NamPlt_swRev, - NULL, - 0, - -1, - IEC61850_FC_DC, - IEC61850_VISIBLE_STRING_255, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_NamPlt_swRev = { - DataAttributeModelType, - "swRev", - (ModelNode*) &iedModel_ComplexArray_GGIO1_NamPlt, - (ModelNode*) &iedModel_ComplexArray_GGIO1_NamPlt_d, - NULL, - 0, - -1, - IEC61850_FC_DC, - IEC61850_VISIBLE_STRING_255, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_NamPlt_d = { - DataAttributeModelType, - "d", - (ModelNode*) &iedModel_ComplexArray_GGIO1_NamPlt, - (ModelNode*) &iedModel_ComplexArray_GGIO1_NamPlt_dU, - NULL, - 0, - -1, - IEC61850_FC_DC, - IEC61850_VISIBLE_STRING_255, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_NamPlt_dU = { - DataAttributeModelType, - "dU", - (ModelNode*) &iedModel_ComplexArray_GGIO1_NamPlt, - NULL, - NULL, - 0, - -1, - IEC61850_FC_DC, - IEC61850_UNICODE_STRING_255, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_GGIO1_AnIn1 = { - DataObjectModelType, - "AnIn1", - (ModelNode*) &iedModel_ComplexArray_GGIO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn2, - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn1_mag, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_GGIO1_AnIn1_mag = { - DataAttributeModelType, - "mag", - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn1_q, - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn1_mag_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_AnIn1_mag_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn1_mag, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_AnIn1_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn1_t, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_AnIn1_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn1, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_GGIO1_AnIn2 = { - DataObjectModelType, - "AnIn2", - (ModelNode*) &iedModel_ComplexArray_GGIO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn3, - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn2_mag, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_GGIO1_AnIn2_mag = { - DataAttributeModelType, - "mag", - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn2, - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn2_q, - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn2_mag_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_AnIn2_mag_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn2_mag, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_AnIn2_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn2, - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn2_t, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_AnIn2_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn2, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_GGIO1_AnIn3 = { - DataObjectModelType, - "AnIn3", - (ModelNode*) &iedModel_ComplexArray_GGIO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn4, - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn3_mag, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_GGIO1_AnIn3_mag = { - DataAttributeModelType, - "mag", - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn3, - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn3_q, - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn3_mag_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_AnIn3_mag_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn3_mag, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_AnIn3_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn3, - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn3_t, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_AnIn3_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn3, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_GGIO1_AnIn4 = { - DataObjectModelType, - "AnIn4", - (ModelNode*) &iedModel_ComplexArray_GGIO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn4_mag, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_GGIO1_AnIn4_mag = { - DataAttributeModelType, - "mag", - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn4, - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn4_q, - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn4_mag_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_AnIn4_mag_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn4_mag, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_AnIn4_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn4, - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn4_t, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_AnIn4_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_GGIO1_AnIn4, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_GGIO1_SPCSO1 = { - DataObjectModelType, - "SPCSO1", - (ModelNode*) &iedModel_ComplexArray_GGIO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_origin, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_origin = { - DataAttributeModelType, - "origin", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_ctlNum, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_origin_orCat, - 0, - -1, - IEC61850_FC_ST, - IEC61850_CONSTRUCTED, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_origin_orCat = { - DataAttributeModelType, - "orCat", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_origin, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_origin_orIdent, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_ENUMERATED, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_origin_orIdent = { - DataAttributeModelType, - "orIdent", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_origin, - NULL, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_OCTET_STRING_64, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_ctlNum = { - DataAttributeModelType, - "ctlNum", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_stVal, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_INT8U, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_stVal = { - DataAttributeModelType, - "stVal", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_q, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_BOOLEAN, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_t, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_ctlModel, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_ctlModel = { - DataAttributeModelType, - "ctlModel", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_Oper, - NULL, - 0, - -1, - IEC61850_FC_CF, - IEC61850_ENUMERATED, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_Oper = { - DataAttributeModelType, - "Oper", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1, - NULL, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_Oper_ctlVal, - 0, - -1, - IEC61850_FC_CO, - IEC61850_CONSTRUCTED, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_Oper_ctlVal = { - DataAttributeModelType, - "ctlVal", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_Oper, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_Oper_origin, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_BOOLEAN, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_Oper_origin = { - DataAttributeModelType, - "origin", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_Oper, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_Oper_ctlNum, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_Oper_origin_orCat, - 0, - -1, - IEC61850_FC_CO, - IEC61850_CONSTRUCTED, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_Oper_origin_orCat = { - DataAttributeModelType, - "orCat", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_Oper_origin, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_Oper_origin_orIdent, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_ENUMERATED, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_Oper_origin_orIdent = { - DataAttributeModelType, - "orIdent", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_Oper_origin, - NULL, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_OCTET_STRING_64, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_Oper_ctlNum = { - DataAttributeModelType, - "ctlNum", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_Oper, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_Oper_T, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_INT8U, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_Oper_T = { - DataAttributeModelType, - "T", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_Oper, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_Oper_Test, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_Oper_Test = { - DataAttributeModelType, - "Test", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_Oper, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_Oper_Check, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_BOOLEAN, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_Oper_Check = { - DataAttributeModelType, - "Check", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO1_Oper, - NULL, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_CHECK, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_GGIO1_SPCSO2 = { - DataObjectModelType, - "SPCSO2", - (ModelNode*) &iedModel_ComplexArray_GGIO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_stVal, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_stVal = { - DataAttributeModelType, - "stVal", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_q, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_BOOLEAN, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_Oper, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_Oper = { - DataAttributeModelType, - "Oper", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_ctlModel, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_Oper_ctlVal, - 0, - -1, - IEC61850_FC_CO, - IEC61850_CONSTRUCTED, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_Oper_ctlVal = { - DataAttributeModelType, - "ctlVal", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_Oper, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_Oper_origin, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_BOOLEAN, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_Oper_origin = { - DataAttributeModelType, - "origin", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_Oper, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_Oper_ctlNum, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_Oper_origin_orCat, - 0, - -1, - IEC61850_FC_CO, - IEC61850_CONSTRUCTED, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_Oper_origin_orCat = { - DataAttributeModelType, - "orCat", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_Oper_origin, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_Oper_origin_orIdent, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_ENUMERATED, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_Oper_origin_orIdent = { - DataAttributeModelType, - "orIdent", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_Oper_origin, - NULL, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_OCTET_STRING_64, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_Oper_ctlNum = { - DataAttributeModelType, - "ctlNum", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_Oper, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_Oper_T, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_INT8U, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_Oper_T = { - DataAttributeModelType, - "T", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_Oper, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_Oper_Test, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_Oper_Test = { - DataAttributeModelType, - "Test", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_Oper, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_Oper_Check, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_BOOLEAN, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_Oper_Check = { - DataAttributeModelType, - "Check", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_Oper, - NULL, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_CHECK, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_ctlModel = { - DataAttributeModelType, - "ctlModel", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2_t, - NULL, - 0, - -1, - IEC61850_FC_CF, - IEC61850_ENUMERATED, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO2, - NULL, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_GGIO1_SPCSO3 = { - DataObjectModelType, - "SPCSO3", - (ModelNode*) &iedModel_ComplexArray_GGIO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_stVal, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_stVal = { - DataAttributeModelType, - "stVal", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_q, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_BOOLEAN, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_Oper, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_Oper = { - DataAttributeModelType, - "Oper", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_ctlModel, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_Oper_ctlVal, - 0, - -1, - IEC61850_FC_CO, - IEC61850_CONSTRUCTED, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_Oper_ctlVal = { - DataAttributeModelType, - "ctlVal", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_Oper, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_Oper_origin, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_BOOLEAN, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_Oper_origin = { - DataAttributeModelType, - "origin", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_Oper, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_Oper_ctlNum, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_Oper_origin_orCat, - 0, - -1, - IEC61850_FC_CO, - IEC61850_CONSTRUCTED, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_Oper_origin_orCat = { - DataAttributeModelType, - "orCat", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_Oper_origin, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_Oper_origin_orIdent, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_ENUMERATED, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_Oper_origin_orIdent = { - DataAttributeModelType, - "orIdent", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_Oper_origin, - NULL, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_OCTET_STRING_64, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_Oper_ctlNum = { - DataAttributeModelType, - "ctlNum", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_Oper, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_Oper_T, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_INT8U, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_Oper_T = { - DataAttributeModelType, - "T", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_Oper, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_Oper_Test, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_Oper_Test = { - DataAttributeModelType, - "Test", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_Oper, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_Oper_Check, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_BOOLEAN, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_Oper_Check = { - DataAttributeModelType, - "Check", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_Oper, - NULL, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_CHECK, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_ctlModel = { - DataAttributeModelType, - "ctlModel", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3_t, - NULL, - 0, - -1, - IEC61850_FC_CF, - IEC61850_ENUMERATED, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO3, - NULL, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_GGIO1_SPCSO4 = { - DataObjectModelType, - "SPCSO4", - (ModelNode*) &iedModel_ComplexArray_GGIO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_stVal, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_stVal = { - DataAttributeModelType, - "stVal", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_q, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_BOOLEAN, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_Oper, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_Oper = { - DataAttributeModelType, - "Oper", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_ctlModel, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_Oper_ctlVal, - 0, - -1, - IEC61850_FC_CO, - IEC61850_CONSTRUCTED, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_Oper_ctlVal = { - DataAttributeModelType, - "ctlVal", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_Oper, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_Oper_origin, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_BOOLEAN, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_Oper_origin = { - DataAttributeModelType, - "origin", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_Oper, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_Oper_ctlNum, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_Oper_origin_orCat, - 0, - -1, - IEC61850_FC_CO, - IEC61850_CONSTRUCTED, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_Oper_origin_orCat = { - DataAttributeModelType, - "orCat", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_Oper_origin, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_Oper_origin_orIdent, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_ENUMERATED, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_Oper_origin_orIdent = { - DataAttributeModelType, - "orIdent", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_Oper_origin, - NULL, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_OCTET_STRING_64, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_Oper_ctlNum = { - DataAttributeModelType, - "ctlNum", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_Oper, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_Oper_T, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_INT8U, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_Oper_T = { - DataAttributeModelType, - "T", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_Oper, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_Oper_Test, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_Oper_Test = { - DataAttributeModelType, - "Test", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_Oper, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_Oper_Check, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_BOOLEAN, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_Oper_Check = { - DataAttributeModelType, - "Check", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_Oper, - NULL, - NULL, - 0, - -1, - IEC61850_FC_CO, - IEC61850_CHECK, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_ctlModel = { - DataAttributeModelType, - "ctlModel", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4, - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4_t, - NULL, - 0, - -1, - IEC61850_FC_CF, - IEC61850_ENUMERATED, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_GGIO1_SPCSO4, - NULL, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_GGIO1_Ind1 = { - DataObjectModelType, - "Ind1", - (ModelNode*) &iedModel_ComplexArray_GGIO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind2, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind1_stVal, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_GGIO1_Ind1_stVal = { - DataAttributeModelType, - "stVal", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind1_q, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_BOOLEAN, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_Ind1_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind1_t, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_Ind1_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind1, - NULL, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_GGIO1_Ind2 = { - DataObjectModelType, - "Ind2", - (ModelNode*) &iedModel_ComplexArray_GGIO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind3, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind2_stVal, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_GGIO1_Ind2_stVal = { - DataAttributeModelType, - "stVal", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind2, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind2_q, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_BOOLEAN, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_Ind2_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind2, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind2_t, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_Ind2_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind2, - NULL, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_GGIO1_Ind3 = { - DataObjectModelType, - "Ind3", - (ModelNode*) &iedModel_ComplexArray_GGIO1, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind4, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind3_stVal, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_GGIO1_Ind3_stVal = { - DataAttributeModelType, - "stVal", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind3, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind3_q, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_BOOLEAN, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_Ind3_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind3, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind3_t, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_Ind3_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind3, - NULL, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_GGIO1_Ind4 = { - DataObjectModelType, - "Ind4", - (ModelNode*) &iedModel_ComplexArray_GGIO1, - NULL, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind4_stVal, - 0, - -1 -}; - -DataAttribute iedModel_ComplexArray_GGIO1_Ind4_stVal = { - DataAttributeModelType, - "stVal", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind4, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind4_q, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_BOOLEAN, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_Ind4_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind4, - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind4_t, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_GGIO1_Ind4_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_GGIO1_Ind4, - NULL, - NULL, - 0, - -1, - IEC61850_FC_ST, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -LogicalNode iedModel_ComplexArray_MHAI1 = { - LogicalNodeModelType, - "MHAI1", - (ModelNode*) &iedModel_ComplexArray, - NULL, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA, -}; - -DataObject iedModel_ComplexArray_MHAI1_HA = { - DataObjectModelType, - "HA", - (ModelNode*) &iedModel_ComplexArray_MHAI1, - NULL, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar, - 0, - -1 -}; - -DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar = { - DataObjectModelType, - "phsAHar", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_numHar, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_0, - 16, - 0-1 -}; - -DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_0 = { - DataObjectModelType, - "phsAHar", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_1, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal, - 0, - 0 -}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal = { - DataAttributeModelType, - "cVal", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_0, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_0_q, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal_mag, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal_mag = { - DataAttributeModelType, - "mag", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal_ang, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal_mag_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal_mag_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal_mag, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal_ang = { - DataAttributeModelType, - "ang", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal, - NULL, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal_ang_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal_ang_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal_ang, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_0_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_0, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_0_t, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_0_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_0, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_1 = { - DataObjectModelType, - "phsAHar", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_2, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal, - 0, - 1 -}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal = { - DataAttributeModelType, - "cVal", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_1, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_1_q, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal_mag, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal_mag = { - DataAttributeModelType, - "mag", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal_ang, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal_mag_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal_mag_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal_mag, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal_ang = { - DataAttributeModelType, - "ang", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal, - NULL, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal_ang_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal_ang_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal_ang, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_1_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_1, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_1_t, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_1_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_1, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_2 = { - DataObjectModelType, - "phsAHar", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_3, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal, - 0, - 2 -}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal = { - DataAttributeModelType, - "cVal", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_2, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_2_q, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal_mag, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal_mag = { - DataAttributeModelType, - "mag", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal_ang, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal_mag_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal_mag_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal_mag, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal_ang = { - DataAttributeModelType, - "ang", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal, - NULL, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal_ang_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal_ang_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal_ang, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_2_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_2, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_2_t, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_2_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_2, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_3 = { - DataObjectModelType, - "phsAHar", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_4, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal, - 0, - 3 -}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal = { - DataAttributeModelType, - "cVal", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_3, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_3_q, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal_mag, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal_mag = { - DataAttributeModelType, - "mag", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal_ang, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal_mag_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal_mag_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal_mag, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal_ang = { - DataAttributeModelType, - "ang", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal, - NULL, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal_ang_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal_ang_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal_ang, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_3_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_3, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_3_t, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_3_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_3, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_4 = { - DataObjectModelType, - "phsAHar", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_5, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal, - 0, - 4 -}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal = { - DataAttributeModelType, - "cVal", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_4, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_4_q, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal_mag, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal_mag = { - DataAttributeModelType, - "mag", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal_ang, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal_mag_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal_mag_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal_mag, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal_ang = { - DataAttributeModelType, - "ang", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal, - NULL, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal_ang_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal_ang_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal_ang, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_4_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_4, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_4_t, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_4_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_4, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_5 = { - DataObjectModelType, - "phsAHar", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_6, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal, - 0, - 5 -}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal = { - DataAttributeModelType, - "cVal", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_5, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_5_q, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal_mag, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal_mag = { - DataAttributeModelType, - "mag", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal_ang, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal_mag_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal_mag_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal_mag, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal_ang = { - DataAttributeModelType, - "ang", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal, - NULL, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal_ang_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal_ang_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal_ang, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_5_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_5, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_5_t, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_5_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_5, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_6 = { - DataObjectModelType, - "phsAHar", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_7, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal, - 0, - 6 -}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal = { - DataAttributeModelType, - "cVal", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_6, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_6_q, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal_mag, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal_mag = { - DataAttributeModelType, - "mag", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal_ang, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal_mag_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal_mag_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal_mag, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal_ang = { - DataAttributeModelType, - "ang", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal, - NULL, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal_ang_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal_ang_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal_ang, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_6_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_6, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_6_t, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_6_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_6, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_7 = { - DataObjectModelType, - "phsAHar", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_8, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal, - 0, - 7 -}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal = { - DataAttributeModelType, - "cVal", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_7, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_7_q, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal_mag, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal_mag = { - DataAttributeModelType, - "mag", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal_ang, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal_mag_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal_mag_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal_mag, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal_ang = { - DataAttributeModelType, - "ang", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal, - NULL, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal_ang_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal_ang_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal_ang, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_7_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_7, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_7_t, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_7_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_7, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_8 = { - DataObjectModelType, - "phsAHar", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_9, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal, - 0, - 8 -}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal = { - DataAttributeModelType, - "cVal", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_8, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_8_q, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal_mag, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal_mag = { - DataAttributeModelType, - "mag", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal_ang, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal_mag_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal_mag_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal_mag, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal_ang = { - DataAttributeModelType, - "ang", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal, - NULL, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal_ang_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal_ang_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal_ang, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_8_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_8, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_8_t, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_8_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_8, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_9 = { - DataObjectModelType, - "phsAHar", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_10, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal, - 0, - 9 -}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal = { - DataAttributeModelType, - "cVal", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_9, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_9_q, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal_mag, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal_mag = { - DataAttributeModelType, - "mag", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal_ang, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal_mag_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal_mag_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal_mag, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal_ang = { - DataAttributeModelType, - "ang", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal, - NULL, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal_ang_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal_ang_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal_ang, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_9_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_9, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_9_t, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_9_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_9, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_10 = { - DataObjectModelType, - "phsAHar", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_11, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal, - 0, - 10 -}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal = { - DataAttributeModelType, - "cVal", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_10, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_10_q, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal_mag, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal_mag = { - DataAttributeModelType, - "mag", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal_ang, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal_mag_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal_mag_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal_mag, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal_ang = { - DataAttributeModelType, - "ang", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal, - NULL, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal_ang_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal_ang_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal_ang, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_10_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_10, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_10_t, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_10_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_10, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_11 = { - DataObjectModelType, - "phsAHar", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_12, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal, - 0, - 11 -}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal = { - DataAttributeModelType, - "cVal", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_11, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_11_q, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal_mag, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal_mag = { - DataAttributeModelType, - "mag", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal_ang, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal_mag_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal_mag_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal_mag, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal_ang = { - DataAttributeModelType, - "ang", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal, - NULL, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal_ang_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal_ang_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal_ang, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_11_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_11, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_11_t, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_11_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_11, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_12 = { - DataObjectModelType, - "phsAHar", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_13, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal, - 0, - 12 -}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal = { - DataAttributeModelType, - "cVal", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_12, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_12_q, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal_mag, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal_mag = { - DataAttributeModelType, - "mag", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal_ang, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal_mag_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal_mag_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal_mag, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal_ang = { - DataAttributeModelType, - "ang", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal, - NULL, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal_ang_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal_ang_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal_ang, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_12_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_12, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_12_t, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_12_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_12, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_13 = { - DataObjectModelType, - "phsAHar", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_14, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal, - 0, - 13 -}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal = { - DataAttributeModelType, - "cVal", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_13, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_13_q, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal_mag, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal_mag = { - DataAttributeModelType, - "mag", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal_ang, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal_mag_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal_mag_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal_mag, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal_ang = { - DataAttributeModelType, - "ang", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal, - NULL, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal_ang_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal_ang_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal_ang, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_13_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_13, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_13_t, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_13_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_13, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_14 = { - DataObjectModelType, - "phsAHar", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_15, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal, - 0, - 14 -}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal = { - DataAttributeModelType, - "cVal", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_14, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_14_q, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal_mag, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal_mag = { - DataAttributeModelType, - "mag", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal_ang, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal_mag_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal_mag_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal_mag, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal_ang = { - DataAttributeModelType, - "ang", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal, - NULL, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal_ang_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal_ang_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal_ang, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_14_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_14, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_14_t, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_14_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_14, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_15 = { - DataObjectModelType, - "phsAHar", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar, - NULL, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal, - 0, - 15 -}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal = { - DataAttributeModelType, - "cVal", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_15, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_15_q, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal_mag, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal_mag = { - DataAttributeModelType, - "mag", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal_ang, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal_mag_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal_mag_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal_mag, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal_ang = { - DataAttributeModelType, - "ang", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal, - NULL, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal_ang_f, - 0, - -1, - IEC61850_FC_MX, - IEC61850_CONSTRUCTED, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal_ang_f = { - DataAttributeModelType, - "f", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal_ang, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED + TRG_OPT_DATA_UPDATE, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_15_q = { - DataAttributeModelType, - "q", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_15, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_15_t, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_QUALITY, - 0 + TRG_OPT_QUALITY_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_15_t = { - DataAttributeModelType, - "t", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_phsAHar_15, - NULL, - NULL, - 0, - -1, - IEC61850_FC_MX, - IEC61850_TIMESTAMP, - 0, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_numHar = { - DataAttributeModelType, - "numHar", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_numCyc, - NULL, - 0, - -1, - IEC61850_FC_CF, - IEC61850_INT16U, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_numCyc = { - DataAttributeModelType, - "numCyc", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_evalTm, - NULL, - 0, - -1, - IEC61850_FC_CF, - IEC61850_INT16U, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_evalTm = { - DataAttributeModelType, - "evalTm", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA, - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA_frequency, - NULL, - 0, - -1, - IEC61850_FC_CF, - IEC61850_INT16U, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -DataAttribute iedModel_ComplexArray_MHAI1_HA_frequency = { - DataAttributeModelType, - "frequency", - (ModelNode*) &iedModel_ComplexArray_MHAI1_HA, - NULL, - NULL, - 0, - -1, - IEC61850_FC_CF, - IEC61850_FLOAT32, - 0 + TRG_OPT_DATA_CHANGED, - NULL, - 0}; - -extern ReportControlBlock iedModel_ComplexArray_MHAI1_report0; - -ReportControlBlock iedModel_ComplexArray_MHAI1_report0 = {&iedModel_ComplexArray_MHAI1, "MHAIRCB01", "TestMHAI", false, "TestMHAI", 1, 24, 175, 50, 1000, {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, NULL}; - - - - - - - -IedModel iedModel = { - "test", - &iedModel_ComplexArray, - &iedModelds_ComplexArray_MHAI1_TestMHAI, - &iedModel_ComplexArray_MHAI1_report0, - NULL, - NULL, - NULL, - NULL, - NULL, - initializeValues -}; - -static void -initializeValues() -{ - -iedModel_ComplexArray_LLN0_Mod_ctlModel.mmsValue = MmsValue_newIntegerFromInt32(0); - -iedModel_ComplexArray_LPHD1_PhyHealth_stVal.mmsValue = MmsValue_newIntegerFromInt32(1); - -iedModel_ComplexArray_GGIO1_Mod_stVal.mmsValue = MmsValue_newIntegerFromInt32(1); - -iedModel_ComplexArray_GGIO1_Mod_ctlModel.mmsValue = MmsValue_newIntegerFromInt32(0); - -iedModel_ComplexArray_GGIO1_Beh_stVal.mmsValue = MmsValue_newIntegerFromInt32(1); - -iedModel_ComplexArray_GGIO1_Health_stVal.mmsValue = MmsValue_newIntegerFromInt32(1); - -iedModel_ComplexArray_GGIO1_SPCSO1_ctlModel.mmsValue = MmsValue_newIntegerFromInt32(1); - -iedModel_ComplexArray_GGIO1_SPCSO2_ctlModel.mmsValue = MmsValue_newIntegerFromInt32(1); - -iedModel_ComplexArray_GGIO1_SPCSO3_ctlModel.mmsValue = MmsValue_newIntegerFromInt32(1); - -iedModel_ComplexArray_GGIO1_SPCSO4_ctlModel.mmsValue = MmsValue_newIntegerFromInt32(1); - -iedModel_ComplexArray_MHAI1_HA_numHar.mmsValue = MmsValue_newUnsignedFromUint32(16); -} diff --git a/examples/server_example_CMV/static_model_5.h b/examples/server_example_CMV/static_model_5.h deleted file mode 100644 index 77bb51c2..00000000 --- a/examples/server_example_CMV/static_model_5.h +++ /dev/null @@ -1,567 +0,0 @@ -/* - * static_model.h - * - * automatically generated from mhai_array.cid - */ - -#ifndef STATIC_MODEL_H_ -#define STATIC_MODEL_H_ - -#include -#include "iec61850_model.h" - -extern IedModel iedModel; -extern LogicalDevice iedModel_ComplexArray; -extern LogicalNode iedModel_ComplexArray_LLN0; -extern DataObject iedModel_ComplexArray_LLN0_Mod; -extern DataAttribute iedModel_ComplexArray_LLN0_Mod_stVal; -extern DataAttribute iedModel_ComplexArray_LLN0_Mod_q; -extern DataAttribute iedModel_ComplexArray_LLN0_Mod_t; -extern DataAttribute iedModel_ComplexArray_LLN0_Mod_ctlModel; -extern DataObject iedModel_ComplexArray_LLN0_Beh; -extern DataAttribute iedModel_ComplexArray_LLN0_Beh_stVal; -extern DataAttribute iedModel_ComplexArray_LLN0_Beh_q; -extern DataAttribute iedModel_ComplexArray_LLN0_Beh_t; -extern DataObject iedModel_ComplexArray_LLN0_Health; -extern DataAttribute iedModel_ComplexArray_LLN0_Health_stVal; -extern DataAttribute iedModel_ComplexArray_LLN0_Health_q; -extern DataAttribute iedModel_ComplexArray_LLN0_Health_t; -extern DataObject iedModel_ComplexArray_LLN0_NamPlt; -extern DataAttribute iedModel_ComplexArray_LLN0_NamPlt_vendor; -extern DataAttribute iedModel_ComplexArray_LLN0_NamPlt_swRev; -extern DataAttribute iedModel_ComplexArray_LLN0_NamPlt_d; -extern DataAttribute iedModel_ComplexArray_LLN0_NamPlt_configRev; -extern DataAttribute iedModel_ComplexArray_LLN0_NamPlt_ldNs; -extern LogicalNode iedModel_ComplexArray_LPHD1; -extern DataObject iedModel_ComplexArray_LPHD1_PhyNam; -extern DataAttribute iedModel_ComplexArray_LPHD1_PhyNam_vendor; -extern DataObject iedModel_ComplexArray_LPHD1_PhyHealth; -extern DataAttribute iedModel_ComplexArray_LPHD1_PhyHealth_stVal; -extern DataAttribute iedModel_ComplexArray_LPHD1_PhyHealth_q; -extern DataAttribute iedModel_ComplexArray_LPHD1_PhyHealth_t; -extern DataObject iedModel_ComplexArray_LPHD1_Proxy; -extern DataAttribute iedModel_ComplexArray_LPHD1_Proxy_stVal; -extern DataAttribute iedModel_ComplexArray_LPHD1_Proxy_q; -extern DataAttribute iedModel_ComplexArray_LPHD1_Proxy_t; -extern LogicalNode iedModel_ComplexArray_GGIO1; -extern DataObject iedModel_ComplexArray_GGIO1_Mod; -extern DataAttribute iedModel_ComplexArray_GGIO1_Mod_stVal; -extern DataAttribute iedModel_ComplexArray_GGIO1_Mod_q; -extern DataAttribute iedModel_ComplexArray_GGIO1_Mod_t; -extern DataAttribute iedModel_ComplexArray_GGIO1_Mod_ctlModel; -extern DataObject iedModel_ComplexArray_GGIO1_Beh; -extern DataAttribute iedModel_ComplexArray_GGIO1_Beh_stVal; -extern DataAttribute iedModel_ComplexArray_GGIO1_Beh_q; -extern DataAttribute iedModel_ComplexArray_GGIO1_Beh_t; -extern DataObject iedModel_ComplexArray_GGIO1_Health; -extern DataAttribute iedModel_ComplexArray_GGIO1_Health_stVal; -extern DataAttribute iedModel_ComplexArray_GGIO1_Health_q; -extern DataAttribute iedModel_ComplexArray_GGIO1_Health_t; -extern DataObject iedModel_ComplexArray_GGIO1_NamPlt; -extern DataAttribute iedModel_ComplexArray_GGIO1_NamPlt_vendor; -extern DataAttribute iedModel_ComplexArray_GGIO1_NamPlt_swRev; -extern DataAttribute iedModel_ComplexArray_GGIO1_NamPlt_d; -extern DataAttribute iedModel_ComplexArray_GGIO1_NamPlt_dU; -extern DataObject iedModel_ComplexArray_GGIO1_AnIn1; -extern DataAttribute iedModel_ComplexArray_GGIO1_AnIn1_mag; -extern DataAttribute iedModel_ComplexArray_GGIO1_AnIn1_mag_f; -extern DataAttribute iedModel_ComplexArray_GGIO1_AnIn1_q; -extern DataAttribute iedModel_ComplexArray_GGIO1_AnIn1_t; -extern DataObject iedModel_ComplexArray_GGIO1_AnIn2; -extern DataAttribute iedModel_ComplexArray_GGIO1_AnIn2_mag; -extern DataAttribute iedModel_ComplexArray_GGIO1_AnIn2_mag_f; -extern DataAttribute iedModel_ComplexArray_GGIO1_AnIn2_q; -extern DataAttribute iedModel_ComplexArray_GGIO1_AnIn2_t; -extern DataObject iedModel_ComplexArray_GGIO1_AnIn3; -extern DataAttribute iedModel_ComplexArray_GGIO1_AnIn3_mag; -extern DataAttribute iedModel_ComplexArray_GGIO1_AnIn3_mag_f; -extern DataAttribute iedModel_ComplexArray_GGIO1_AnIn3_q; -extern DataAttribute iedModel_ComplexArray_GGIO1_AnIn3_t; -extern DataObject iedModel_ComplexArray_GGIO1_AnIn4; -extern DataAttribute iedModel_ComplexArray_GGIO1_AnIn4_mag; -extern DataAttribute iedModel_ComplexArray_GGIO1_AnIn4_mag_f; -extern DataAttribute iedModel_ComplexArray_GGIO1_AnIn4_q; -extern DataAttribute iedModel_ComplexArray_GGIO1_AnIn4_t; -extern DataObject iedModel_ComplexArray_GGIO1_SPCSO1; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_origin; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_origin_orCat; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_origin_orIdent; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_ctlNum; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_stVal; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_q; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_t; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_ctlModel; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_Oper; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_Oper_ctlVal; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_Oper_origin; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_Oper_origin_orCat; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_Oper_origin_orIdent; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_Oper_ctlNum; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_Oper_T; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_Oper_Test; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO1_Oper_Check; -extern DataObject iedModel_ComplexArray_GGIO1_SPCSO2; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_stVal; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_q; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_Oper; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_Oper_ctlVal; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_Oper_origin; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_Oper_origin_orCat; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_Oper_origin_orIdent; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_Oper_ctlNum; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_Oper_T; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_Oper_Test; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_Oper_Check; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_ctlModel; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO2_t; -extern DataObject iedModel_ComplexArray_GGIO1_SPCSO3; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_stVal; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_q; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_Oper; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_Oper_ctlVal; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_Oper_origin; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_Oper_origin_orCat; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_Oper_origin_orIdent; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_Oper_ctlNum; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_Oper_T; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_Oper_Test; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_Oper_Check; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_ctlModel; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO3_t; -extern DataObject iedModel_ComplexArray_GGIO1_SPCSO4; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_stVal; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_q; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_Oper; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_Oper_ctlVal; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_Oper_origin; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_Oper_origin_orCat; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_Oper_origin_orIdent; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_Oper_ctlNum; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_Oper_T; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_Oper_Test; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_Oper_Check; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_ctlModel; -extern DataAttribute iedModel_ComplexArray_GGIO1_SPCSO4_t; -extern DataObject iedModel_ComplexArray_GGIO1_Ind1; -extern DataAttribute iedModel_ComplexArray_GGIO1_Ind1_stVal; -extern DataAttribute iedModel_ComplexArray_GGIO1_Ind1_q; -extern DataAttribute iedModel_ComplexArray_GGIO1_Ind1_t; -extern DataObject iedModel_ComplexArray_GGIO1_Ind2; -extern DataAttribute iedModel_ComplexArray_GGIO1_Ind2_stVal; -extern DataAttribute iedModel_ComplexArray_GGIO1_Ind2_q; -extern DataAttribute iedModel_ComplexArray_GGIO1_Ind2_t; -extern DataObject iedModel_ComplexArray_GGIO1_Ind3; -extern DataAttribute iedModel_ComplexArray_GGIO1_Ind3_stVal; -extern DataAttribute iedModel_ComplexArray_GGIO1_Ind3_q; -extern DataAttribute iedModel_ComplexArray_GGIO1_Ind3_t; -extern DataObject iedModel_ComplexArray_GGIO1_Ind4; -extern DataAttribute iedModel_ComplexArray_GGIO1_Ind4_stVal; -extern DataAttribute iedModel_ComplexArray_GGIO1_Ind4_q; -extern DataAttribute iedModel_ComplexArray_GGIO1_Ind4_t; -extern LogicalNode iedModel_ComplexArray_MHAI1; -extern DataObject iedModel_ComplexArray_MHAI1_HA; -extern DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar; -extern DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_0; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal_mag; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal_mag_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal_ang; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal_ang_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_0_q; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_0_t; -extern DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_1; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal_mag; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal_mag_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal_ang; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal_ang_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_1_q; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_1_t; -extern DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_2; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal_mag; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal_mag_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal_ang; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal_ang_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_2_q; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_2_t; -extern DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_3; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal_mag; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal_mag_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal_ang; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal_ang_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_3_q; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_3_t; -extern DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_4; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal_mag; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal_mag_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal_ang; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal_ang_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_4_q; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_4_t; -extern DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_5; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal_mag; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal_mag_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal_ang; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal_ang_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_5_q; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_5_t; -extern DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_6; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal_mag; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal_mag_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal_ang; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal_ang_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_6_q; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_6_t; -extern DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_7; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal_mag; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal_mag_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal_ang; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal_ang_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_7_q; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_7_t; -extern DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_8; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal_mag; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal_mag_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal_ang; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal_ang_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_8_q; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_8_t; -extern DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_9; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal_mag; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal_mag_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal_ang; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal_ang_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_9_q; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_9_t; -extern DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_10; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal_mag; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal_mag_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal_ang; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal_ang_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_10_q; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_10_t; -extern DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_11; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal_mag; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal_mag_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal_ang; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal_ang_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_11_q; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_11_t; -extern DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_12; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal_mag; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal_mag_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal_ang; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal_ang_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_12_q; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_12_t; -extern DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_13; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal_mag; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal_mag_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal_ang; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal_ang_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_13_q; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_13_t; -extern DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_14; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal_mag; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal_mag_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal_ang; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal_ang_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_14_q; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_14_t; -extern DataObject iedModel_ComplexArray_MHAI1_HA_phsAHar_15; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal_mag; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal_mag_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal_ang; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal_ang_f; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_15_q; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_phsAHar_15_t; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_numHar; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_numCyc; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_evalTm; -extern DataAttribute iedModel_ComplexArray_MHAI1_HA_frequency; - - - -#define IEDMODEL_ComplexArray (&iedModel_ComplexArray) -#define IEDMODEL_ComplexArray_LLN0 (&iedModel_ComplexArray_LLN0) -#define IEDMODEL_ComplexArray_LLN0_Mod (&iedModel_ComplexArray_LLN0_Mod) -#define IEDMODEL_ComplexArray_LLN0_Mod_stVal (&iedModel_ComplexArray_LLN0_Mod_stVal) -#define IEDMODEL_ComplexArray_LLN0_Mod_q (&iedModel_ComplexArray_LLN0_Mod_q) -#define IEDMODEL_ComplexArray_LLN0_Mod_t (&iedModel_ComplexArray_LLN0_Mod_t) -#define IEDMODEL_ComplexArray_LLN0_Mod_ctlModel (&iedModel_ComplexArray_LLN0_Mod_ctlModel) -#define IEDMODEL_ComplexArray_LLN0_Beh (&iedModel_ComplexArray_LLN0_Beh) -#define IEDMODEL_ComplexArray_LLN0_Beh_stVal (&iedModel_ComplexArray_LLN0_Beh_stVal) -#define IEDMODEL_ComplexArray_LLN0_Beh_q (&iedModel_ComplexArray_LLN0_Beh_q) -#define IEDMODEL_ComplexArray_LLN0_Beh_t (&iedModel_ComplexArray_LLN0_Beh_t) -#define IEDMODEL_ComplexArray_LLN0_Health (&iedModel_ComplexArray_LLN0_Health) -#define IEDMODEL_ComplexArray_LLN0_Health_stVal (&iedModel_ComplexArray_LLN0_Health_stVal) -#define IEDMODEL_ComplexArray_LLN0_Health_q (&iedModel_ComplexArray_LLN0_Health_q) -#define IEDMODEL_ComplexArray_LLN0_Health_t (&iedModel_ComplexArray_LLN0_Health_t) -#define IEDMODEL_ComplexArray_LLN0_NamPlt (&iedModel_ComplexArray_LLN0_NamPlt) -#define IEDMODEL_ComplexArray_LLN0_NamPlt_vendor (&iedModel_ComplexArray_LLN0_NamPlt_vendor) -#define IEDMODEL_ComplexArray_LLN0_NamPlt_swRev (&iedModel_ComplexArray_LLN0_NamPlt_swRev) -#define IEDMODEL_ComplexArray_LLN0_NamPlt_d (&iedModel_ComplexArray_LLN0_NamPlt_d) -#define IEDMODEL_ComplexArray_LLN0_NamPlt_configRev (&iedModel_ComplexArray_LLN0_NamPlt_configRev) -#define IEDMODEL_ComplexArray_LLN0_NamPlt_ldNs (&iedModel_ComplexArray_LLN0_NamPlt_ldNs) -#define IEDMODEL_ComplexArray_LPHD1 (&iedModel_ComplexArray_LPHD1) -#define IEDMODEL_ComplexArray_LPHD1_PhyNam (&iedModel_ComplexArray_LPHD1_PhyNam) -#define IEDMODEL_ComplexArray_LPHD1_PhyNam_vendor (&iedModel_ComplexArray_LPHD1_PhyNam_vendor) -#define IEDMODEL_ComplexArray_LPHD1_PhyHealth (&iedModel_ComplexArray_LPHD1_PhyHealth) -#define IEDMODEL_ComplexArray_LPHD1_PhyHealth_stVal (&iedModel_ComplexArray_LPHD1_PhyHealth_stVal) -#define IEDMODEL_ComplexArray_LPHD1_PhyHealth_q (&iedModel_ComplexArray_LPHD1_PhyHealth_q) -#define IEDMODEL_ComplexArray_LPHD1_PhyHealth_t (&iedModel_ComplexArray_LPHD1_PhyHealth_t) -#define IEDMODEL_ComplexArray_LPHD1_Proxy (&iedModel_ComplexArray_LPHD1_Proxy) -#define IEDMODEL_ComplexArray_LPHD1_Proxy_stVal (&iedModel_ComplexArray_LPHD1_Proxy_stVal) -#define IEDMODEL_ComplexArray_LPHD1_Proxy_q (&iedModel_ComplexArray_LPHD1_Proxy_q) -#define IEDMODEL_ComplexArray_LPHD1_Proxy_t (&iedModel_ComplexArray_LPHD1_Proxy_t) -#define IEDMODEL_ComplexArray_GGIO1 (&iedModel_ComplexArray_GGIO1) -#define IEDMODEL_ComplexArray_GGIO1_Mod (&iedModel_ComplexArray_GGIO1_Mod) -#define IEDMODEL_ComplexArray_GGIO1_Mod_stVal (&iedModel_ComplexArray_GGIO1_Mod_stVal) -#define IEDMODEL_ComplexArray_GGIO1_Mod_q (&iedModel_ComplexArray_GGIO1_Mod_q) -#define IEDMODEL_ComplexArray_GGIO1_Mod_t (&iedModel_ComplexArray_GGIO1_Mod_t) -#define IEDMODEL_ComplexArray_GGIO1_Mod_ctlModel (&iedModel_ComplexArray_GGIO1_Mod_ctlModel) -#define IEDMODEL_ComplexArray_GGIO1_Beh (&iedModel_ComplexArray_GGIO1_Beh) -#define IEDMODEL_ComplexArray_GGIO1_Beh_stVal (&iedModel_ComplexArray_GGIO1_Beh_stVal) -#define IEDMODEL_ComplexArray_GGIO1_Beh_q (&iedModel_ComplexArray_GGIO1_Beh_q) -#define IEDMODEL_ComplexArray_GGIO1_Beh_t (&iedModel_ComplexArray_GGIO1_Beh_t) -#define IEDMODEL_ComplexArray_GGIO1_Health (&iedModel_ComplexArray_GGIO1_Health) -#define IEDMODEL_ComplexArray_GGIO1_Health_stVal (&iedModel_ComplexArray_GGIO1_Health_stVal) -#define IEDMODEL_ComplexArray_GGIO1_Health_q (&iedModel_ComplexArray_GGIO1_Health_q) -#define IEDMODEL_ComplexArray_GGIO1_Health_t (&iedModel_ComplexArray_GGIO1_Health_t) -#define IEDMODEL_ComplexArray_GGIO1_NamPlt (&iedModel_ComplexArray_GGIO1_NamPlt) -#define IEDMODEL_ComplexArray_GGIO1_NamPlt_vendor (&iedModel_ComplexArray_GGIO1_NamPlt_vendor) -#define IEDMODEL_ComplexArray_GGIO1_NamPlt_swRev (&iedModel_ComplexArray_GGIO1_NamPlt_swRev) -#define IEDMODEL_ComplexArray_GGIO1_NamPlt_d (&iedModel_ComplexArray_GGIO1_NamPlt_d) -#define IEDMODEL_ComplexArray_GGIO1_NamPlt_dU (&iedModel_ComplexArray_GGIO1_NamPlt_dU) -#define IEDMODEL_ComplexArray_GGIO1_AnIn1 (&iedModel_ComplexArray_GGIO1_AnIn1) -#define IEDMODEL_ComplexArray_GGIO1_AnIn1_mag (&iedModel_ComplexArray_GGIO1_AnIn1_mag) -#define IEDMODEL_ComplexArray_GGIO1_AnIn1_mag_f (&iedModel_ComplexArray_GGIO1_AnIn1_mag_f) -#define IEDMODEL_ComplexArray_GGIO1_AnIn1_q (&iedModel_ComplexArray_GGIO1_AnIn1_q) -#define IEDMODEL_ComplexArray_GGIO1_AnIn1_t (&iedModel_ComplexArray_GGIO1_AnIn1_t) -#define IEDMODEL_ComplexArray_GGIO1_AnIn2 (&iedModel_ComplexArray_GGIO1_AnIn2) -#define IEDMODEL_ComplexArray_GGIO1_AnIn2_mag (&iedModel_ComplexArray_GGIO1_AnIn2_mag) -#define IEDMODEL_ComplexArray_GGIO1_AnIn2_mag_f (&iedModel_ComplexArray_GGIO1_AnIn2_mag_f) -#define IEDMODEL_ComplexArray_GGIO1_AnIn2_q (&iedModel_ComplexArray_GGIO1_AnIn2_q) -#define IEDMODEL_ComplexArray_GGIO1_AnIn2_t (&iedModel_ComplexArray_GGIO1_AnIn2_t) -#define IEDMODEL_ComplexArray_GGIO1_AnIn3 (&iedModel_ComplexArray_GGIO1_AnIn3) -#define IEDMODEL_ComplexArray_GGIO1_AnIn3_mag (&iedModel_ComplexArray_GGIO1_AnIn3_mag) -#define IEDMODEL_ComplexArray_GGIO1_AnIn3_mag_f (&iedModel_ComplexArray_GGIO1_AnIn3_mag_f) -#define IEDMODEL_ComplexArray_GGIO1_AnIn3_q (&iedModel_ComplexArray_GGIO1_AnIn3_q) -#define IEDMODEL_ComplexArray_GGIO1_AnIn3_t (&iedModel_ComplexArray_GGIO1_AnIn3_t) -#define IEDMODEL_ComplexArray_GGIO1_AnIn4 (&iedModel_ComplexArray_GGIO1_AnIn4) -#define IEDMODEL_ComplexArray_GGIO1_AnIn4_mag (&iedModel_ComplexArray_GGIO1_AnIn4_mag) -#define IEDMODEL_ComplexArray_GGIO1_AnIn4_mag_f (&iedModel_ComplexArray_GGIO1_AnIn4_mag_f) -#define IEDMODEL_ComplexArray_GGIO1_AnIn4_q (&iedModel_ComplexArray_GGIO1_AnIn4_q) -#define IEDMODEL_ComplexArray_GGIO1_AnIn4_t (&iedModel_ComplexArray_GGIO1_AnIn4_t) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO1 (&iedModel_ComplexArray_GGIO1_SPCSO1) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO1_origin (&iedModel_ComplexArray_GGIO1_SPCSO1_origin) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO1_origin_orCat (&iedModel_ComplexArray_GGIO1_SPCSO1_origin_orCat) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO1_origin_orIdent (&iedModel_ComplexArray_GGIO1_SPCSO1_origin_orIdent) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO1_ctlNum (&iedModel_ComplexArray_GGIO1_SPCSO1_ctlNum) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO1_stVal (&iedModel_ComplexArray_GGIO1_SPCSO1_stVal) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO1_q (&iedModel_ComplexArray_GGIO1_SPCSO1_q) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO1_t (&iedModel_ComplexArray_GGIO1_SPCSO1_t) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO1_ctlModel (&iedModel_ComplexArray_GGIO1_SPCSO1_ctlModel) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO1_Oper (&iedModel_ComplexArray_GGIO1_SPCSO1_Oper) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO1_Oper_ctlVal (&iedModel_ComplexArray_GGIO1_SPCSO1_Oper_ctlVal) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO1_Oper_origin (&iedModel_ComplexArray_GGIO1_SPCSO1_Oper_origin) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO1_Oper_origin_orCat (&iedModel_ComplexArray_GGIO1_SPCSO1_Oper_origin_orCat) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO1_Oper_origin_orIdent (&iedModel_ComplexArray_GGIO1_SPCSO1_Oper_origin_orIdent) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO1_Oper_ctlNum (&iedModel_ComplexArray_GGIO1_SPCSO1_Oper_ctlNum) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO1_Oper_T (&iedModel_ComplexArray_GGIO1_SPCSO1_Oper_T) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO1_Oper_Test (&iedModel_ComplexArray_GGIO1_SPCSO1_Oper_Test) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO1_Oper_Check (&iedModel_ComplexArray_GGIO1_SPCSO1_Oper_Check) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO2 (&iedModel_ComplexArray_GGIO1_SPCSO2) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO2_stVal (&iedModel_ComplexArray_GGIO1_SPCSO2_stVal) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO2_q (&iedModel_ComplexArray_GGIO1_SPCSO2_q) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO2_Oper (&iedModel_ComplexArray_GGIO1_SPCSO2_Oper) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO2_Oper_ctlVal (&iedModel_ComplexArray_GGIO1_SPCSO2_Oper_ctlVal) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO2_Oper_origin (&iedModel_ComplexArray_GGIO1_SPCSO2_Oper_origin) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO2_Oper_origin_orCat (&iedModel_ComplexArray_GGIO1_SPCSO2_Oper_origin_orCat) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO2_Oper_origin_orIdent (&iedModel_ComplexArray_GGIO1_SPCSO2_Oper_origin_orIdent) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO2_Oper_ctlNum (&iedModel_ComplexArray_GGIO1_SPCSO2_Oper_ctlNum) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO2_Oper_T (&iedModel_ComplexArray_GGIO1_SPCSO2_Oper_T) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO2_Oper_Test (&iedModel_ComplexArray_GGIO1_SPCSO2_Oper_Test) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO2_Oper_Check (&iedModel_ComplexArray_GGIO1_SPCSO2_Oper_Check) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO2_ctlModel (&iedModel_ComplexArray_GGIO1_SPCSO2_ctlModel) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO2_t (&iedModel_ComplexArray_GGIO1_SPCSO2_t) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO3 (&iedModel_ComplexArray_GGIO1_SPCSO3) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO3_stVal (&iedModel_ComplexArray_GGIO1_SPCSO3_stVal) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO3_q (&iedModel_ComplexArray_GGIO1_SPCSO3_q) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO3_Oper (&iedModel_ComplexArray_GGIO1_SPCSO3_Oper) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO3_Oper_ctlVal (&iedModel_ComplexArray_GGIO1_SPCSO3_Oper_ctlVal) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO3_Oper_origin (&iedModel_ComplexArray_GGIO1_SPCSO3_Oper_origin) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO3_Oper_origin_orCat (&iedModel_ComplexArray_GGIO1_SPCSO3_Oper_origin_orCat) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO3_Oper_origin_orIdent (&iedModel_ComplexArray_GGIO1_SPCSO3_Oper_origin_orIdent) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO3_Oper_ctlNum (&iedModel_ComplexArray_GGIO1_SPCSO3_Oper_ctlNum) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO3_Oper_T (&iedModel_ComplexArray_GGIO1_SPCSO3_Oper_T) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO3_Oper_Test (&iedModel_ComplexArray_GGIO1_SPCSO3_Oper_Test) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO3_Oper_Check (&iedModel_ComplexArray_GGIO1_SPCSO3_Oper_Check) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO3_ctlModel (&iedModel_ComplexArray_GGIO1_SPCSO3_ctlModel) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO3_t (&iedModel_ComplexArray_GGIO1_SPCSO3_t) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO4 (&iedModel_ComplexArray_GGIO1_SPCSO4) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO4_stVal (&iedModel_ComplexArray_GGIO1_SPCSO4_stVal) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO4_q (&iedModel_ComplexArray_GGIO1_SPCSO4_q) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO4_Oper (&iedModel_ComplexArray_GGIO1_SPCSO4_Oper) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO4_Oper_ctlVal (&iedModel_ComplexArray_GGIO1_SPCSO4_Oper_ctlVal) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO4_Oper_origin (&iedModel_ComplexArray_GGIO1_SPCSO4_Oper_origin) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO4_Oper_origin_orCat (&iedModel_ComplexArray_GGIO1_SPCSO4_Oper_origin_orCat) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO4_Oper_origin_orIdent (&iedModel_ComplexArray_GGIO1_SPCSO4_Oper_origin_orIdent) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO4_Oper_ctlNum (&iedModel_ComplexArray_GGIO1_SPCSO4_Oper_ctlNum) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO4_Oper_T (&iedModel_ComplexArray_GGIO1_SPCSO4_Oper_T) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO4_Oper_Test (&iedModel_ComplexArray_GGIO1_SPCSO4_Oper_Test) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO4_Oper_Check (&iedModel_ComplexArray_GGIO1_SPCSO4_Oper_Check) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO4_ctlModel (&iedModel_ComplexArray_GGIO1_SPCSO4_ctlModel) -#define IEDMODEL_ComplexArray_GGIO1_SPCSO4_t (&iedModel_ComplexArray_GGIO1_SPCSO4_t) -#define IEDMODEL_ComplexArray_GGIO1_Ind1 (&iedModel_ComplexArray_GGIO1_Ind1) -#define IEDMODEL_ComplexArray_GGIO1_Ind1_stVal (&iedModel_ComplexArray_GGIO1_Ind1_stVal) -#define IEDMODEL_ComplexArray_GGIO1_Ind1_q (&iedModel_ComplexArray_GGIO1_Ind1_q) -#define IEDMODEL_ComplexArray_GGIO1_Ind1_t (&iedModel_ComplexArray_GGIO1_Ind1_t) -#define IEDMODEL_ComplexArray_GGIO1_Ind2 (&iedModel_ComplexArray_GGIO1_Ind2) -#define IEDMODEL_ComplexArray_GGIO1_Ind2_stVal (&iedModel_ComplexArray_GGIO1_Ind2_stVal) -#define IEDMODEL_ComplexArray_GGIO1_Ind2_q (&iedModel_ComplexArray_GGIO1_Ind2_q) -#define IEDMODEL_ComplexArray_GGIO1_Ind2_t (&iedModel_ComplexArray_GGIO1_Ind2_t) -#define IEDMODEL_ComplexArray_GGIO1_Ind3 (&iedModel_ComplexArray_GGIO1_Ind3) -#define IEDMODEL_ComplexArray_GGIO1_Ind3_stVal (&iedModel_ComplexArray_GGIO1_Ind3_stVal) -#define IEDMODEL_ComplexArray_GGIO1_Ind3_q (&iedModel_ComplexArray_GGIO1_Ind3_q) -#define IEDMODEL_ComplexArray_GGIO1_Ind3_t (&iedModel_ComplexArray_GGIO1_Ind3_t) -#define IEDMODEL_ComplexArray_GGIO1_Ind4 (&iedModel_ComplexArray_GGIO1_Ind4) -#define IEDMODEL_ComplexArray_GGIO1_Ind4_stVal (&iedModel_ComplexArray_GGIO1_Ind4_stVal) -#define IEDMODEL_ComplexArray_GGIO1_Ind4_q (&iedModel_ComplexArray_GGIO1_Ind4_q) -#define IEDMODEL_ComplexArray_GGIO1_Ind4_t (&iedModel_ComplexArray_GGIO1_Ind4_t) -#define IEDMODEL_ComplexArray_MHAI1 (&iedModel_ComplexArray_MHAI1) -#define IEDMODEL_ComplexArray_MHAI1_HA (&iedModel_ComplexArray_MHAI1_HA) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar (&iedModel_ComplexArray_MHAI1_HA_phsAHar) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_0_cVal (&iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_0_cVal_mag (&iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal_mag) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_0_cVal_mag_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal_mag_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_0_cVal_ang (&iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal_ang) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_0_cVal_ang_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_0_cVal_ang_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_0_q (&iedModel_ComplexArray_MHAI1_HA_phsAHar_0_q) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_0_t (&iedModel_ComplexArray_MHAI1_HA_phsAHar_0_t) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_1_cVal (&iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_1_cVal_mag (&iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal_mag) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_1_cVal_mag_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal_mag_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_1_cVal_ang (&iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal_ang) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_1_cVal_ang_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_1_cVal_ang_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_1_q (&iedModel_ComplexArray_MHAI1_HA_phsAHar_1_q) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_1_t (&iedModel_ComplexArray_MHAI1_HA_phsAHar_1_t) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_2_cVal (&iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_2_cVal_mag (&iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal_mag) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_2_cVal_mag_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal_mag_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_2_cVal_ang (&iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal_ang) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_2_cVal_ang_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_2_cVal_ang_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_2_q (&iedModel_ComplexArray_MHAI1_HA_phsAHar_2_q) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_2_t (&iedModel_ComplexArray_MHAI1_HA_phsAHar_2_t) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_3_cVal (&iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_3_cVal_mag (&iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal_mag) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_3_cVal_mag_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal_mag_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_3_cVal_ang (&iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal_ang) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_3_cVal_ang_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_3_cVal_ang_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_3_q (&iedModel_ComplexArray_MHAI1_HA_phsAHar_3_q) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_3_t (&iedModel_ComplexArray_MHAI1_HA_phsAHar_3_t) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_4_cVal (&iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_4_cVal_mag (&iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal_mag) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_4_cVal_mag_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal_mag_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_4_cVal_ang (&iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal_ang) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_4_cVal_ang_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_4_cVal_ang_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_4_q (&iedModel_ComplexArray_MHAI1_HA_phsAHar_4_q) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_4_t (&iedModel_ComplexArray_MHAI1_HA_phsAHar_4_t) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_5_cVal (&iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_5_cVal_mag (&iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal_mag) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_5_cVal_mag_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal_mag_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_5_cVal_ang (&iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal_ang) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_5_cVal_ang_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_5_cVal_ang_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_5_q (&iedModel_ComplexArray_MHAI1_HA_phsAHar_5_q) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_5_t (&iedModel_ComplexArray_MHAI1_HA_phsAHar_5_t) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_6_cVal (&iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_6_cVal_mag (&iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal_mag) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_6_cVal_mag_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal_mag_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_6_cVal_ang (&iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal_ang) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_6_cVal_ang_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_6_cVal_ang_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_6_q (&iedModel_ComplexArray_MHAI1_HA_phsAHar_6_q) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_6_t (&iedModel_ComplexArray_MHAI1_HA_phsAHar_6_t) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_7_cVal (&iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_7_cVal_mag (&iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal_mag) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_7_cVal_mag_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal_mag_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_7_cVal_ang (&iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal_ang) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_7_cVal_ang_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_7_cVal_ang_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_7_q (&iedModel_ComplexArray_MHAI1_HA_phsAHar_7_q) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_7_t (&iedModel_ComplexArray_MHAI1_HA_phsAHar_7_t) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_8_cVal (&iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_8_cVal_mag (&iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal_mag) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_8_cVal_mag_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal_mag_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_8_cVal_ang (&iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal_ang) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_8_cVal_ang_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_8_cVal_ang_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_8_q (&iedModel_ComplexArray_MHAI1_HA_phsAHar_8_q) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_8_t (&iedModel_ComplexArray_MHAI1_HA_phsAHar_8_t) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_9_cVal (&iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_9_cVal_mag (&iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal_mag) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_9_cVal_mag_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal_mag_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_9_cVal_ang (&iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal_ang) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_9_cVal_ang_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_9_cVal_ang_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_9_q (&iedModel_ComplexArray_MHAI1_HA_phsAHar_9_q) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_9_t (&iedModel_ComplexArray_MHAI1_HA_phsAHar_9_t) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_10_cVal (&iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_10_cVal_mag (&iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal_mag) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_10_cVal_mag_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal_mag_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_10_cVal_ang (&iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal_ang) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_10_cVal_ang_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_10_cVal_ang_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_10_q (&iedModel_ComplexArray_MHAI1_HA_phsAHar_10_q) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_10_t (&iedModel_ComplexArray_MHAI1_HA_phsAHar_10_t) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_11_cVal (&iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_11_cVal_mag (&iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal_mag) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_11_cVal_mag_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal_mag_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_11_cVal_ang (&iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal_ang) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_11_cVal_ang_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_11_cVal_ang_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_11_q (&iedModel_ComplexArray_MHAI1_HA_phsAHar_11_q) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_11_t (&iedModel_ComplexArray_MHAI1_HA_phsAHar_11_t) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_12_cVal (&iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_12_cVal_mag (&iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal_mag) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_12_cVal_mag_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal_mag_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_12_cVal_ang (&iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal_ang) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_12_cVal_ang_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_12_cVal_ang_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_12_q (&iedModel_ComplexArray_MHAI1_HA_phsAHar_12_q) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_12_t (&iedModel_ComplexArray_MHAI1_HA_phsAHar_12_t) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_13_cVal (&iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_13_cVal_mag (&iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal_mag) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_13_cVal_mag_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal_mag_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_13_cVal_ang (&iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal_ang) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_13_cVal_ang_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_13_cVal_ang_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_13_q (&iedModel_ComplexArray_MHAI1_HA_phsAHar_13_q) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_13_t (&iedModel_ComplexArray_MHAI1_HA_phsAHar_13_t) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_14_cVal (&iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_14_cVal_mag (&iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal_mag) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_14_cVal_mag_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal_mag_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_14_cVal_ang (&iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal_ang) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_14_cVal_ang_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_14_cVal_ang_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_14_q (&iedModel_ComplexArray_MHAI1_HA_phsAHar_14_q) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_14_t (&iedModel_ComplexArray_MHAI1_HA_phsAHar_14_t) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_15_cVal (&iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_15_cVal_mag (&iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal_mag) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_15_cVal_mag_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal_mag_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_15_cVal_ang (&iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal_ang) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_15_cVal_ang_f (&iedModel_ComplexArray_MHAI1_HA_phsAHar_15_cVal_ang_f) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_15_q (&iedModel_ComplexArray_MHAI1_HA_phsAHar_15_q) -#define IEDMODEL_ComplexArray_MHAI1_HA_phsAHar_15_t (&iedModel_ComplexArray_MHAI1_HA_phsAHar_15_t) -#define IEDMODEL_ComplexArray_MHAI1_HA_numHar (&iedModel_ComplexArray_MHAI1_HA_numHar) -#define IEDMODEL_ComplexArray_MHAI1_HA_numCyc (&iedModel_ComplexArray_MHAI1_HA_numCyc) -#define IEDMODEL_ComplexArray_MHAI1_HA_evalTm (&iedModel_ComplexArray_MHAI1_HA_evalTm) -#define IEDMODEL_ComplexArray_MHAI1_HA_frequency (&iedModel_ComplexArray_MHAI1_HA_frequency) - -#endif /* STATIC_MODEL_H_ */ - diff --git a/mingw-w64-x86_64.cmake b/mingw-w64-x86_64.cmake index e86af924..9afbe678 100644 --- a/mingw-w64-x86_64.cmake +++ b/mingw-w64-x86_64.cmake @@ -3,7 +3,7 @@ # Typical usage: # *) install cross compiler: `sudo apt-get install mingw-w64` # *) cd build -# *) cmake -DCMAKE_TOOLCHAIN_FILE=~/mingw-w64-x86_64.cmake .. +# *) cmake -DCMAKE_TOOLCHAIN_FILE=../mingw-w64-x86_64.cmake .. # This is free and unencumbered software released into the public domain. set(CMAKE_SYSTEM_NAME Windows) diff --git a/src/iec61850/server/impl/ied_server.c b/src/iec61850/server/impl/ied_server.c index 9125b638..b2b29e57 100644 --- a/src/iec61850/server/impl/ied_server.c +++ b/src/iec61850/server/impl/ied_server.c @@ -1,7 +1,7 @@ /* * ied_server.c * - * Copyright 2013-2024 Michael Zillgith + * Copyright 2013-2025 Michael Zillgith * * This file is part of libIEC61850. * @@ -245,21 +245,36 @@ exit_function: return success; } +#define OBJ_REF_MAX_SIZE 129 + static void installDefaultValuesForDataAttribute(IedServer self, LogicalDevice* ld, DataAttribute* dataAttribute, char* objectReference, int position, int idx, char* componentId, int compIdPos) { + objectReference[position] = 0; + if (dataAttribute->name) { - if (idx == -1) { - sprintf(objectReference + position, ".%s", dataAttribute->name); + if (idx == -1) + { + objectReference[position] = 0; + + StringUtils_appendString(objectReference, OBJ_REF_MAX_SIZE + 1, "."); + StringUtils_appendString(objectReference, OBJ_REF_MAX_SIZE + 1, dataAttribute->name); } else { + componentId[compIdPos] = 0; + if (compIdPos == 0) - sprintf(componentId, "%s", dataAttribute->name); + { + StringUtils_appendString(componentId, OBJ_REF_MAX_SIZE + 1, dataAttribute->name); + } else - sprintf(componentId + compIdPos, "$%s", dataAttribute->name); + { + StringUtils_appendString(componentId, OBJ_REF_MAX_SIZE + 1, "$"); + StringUtils_appendString(componentId, OBJ_REF_MAX_SIZE + 1, dataAttribute->name); + } } } else @@ -360,6 +375,8 @@ static void installDefaultValuesForDataObject(IedServer self, LogicalDevice* ld, DataObject* dataObject, char* objectReference, int position, int idx, char* componentId, int compIdPos) { + objectReference[position] = 0; + if (dataObject->elementCount > 0) { if (DEBUG_IED_SERVER) @@ -367,7 +384,9 @@ installDefaultValuesForDataObject(IedServer self, LogicalDevice* ld, DataObject* ModelNode* arrayElemNode = dataObject->firstChild; - sprintf(objectReference + position, ".%s", dataObject->name); + StringUtils_appendString(objectReference, OBJ_REF_MAX_SIZE + 1, "."); + StringUtils_appendString(objectReference, OBJ_REF_MAX_SIZE + 1, dataObject->name); + int childPosition = strlen(objectReference); int arrayIdx = 0; @@ -387,14 +406,18 @@ installDefaultValuesForDataObject(IedServer self, LogicalDevice* ld, DataObject* { if (idx == -1) { - sprintf(objectReference + position, ".%s", dataObject->name); + StringUtils_appendString(objectReference, OBJ_REF_MAX_SIZE + 1, "."); + StringUtils_appendString(objectReference, OBJ_REF_MAX_SIZE + 1, dataObject->name); } else { if (compIdPos == 0) - sprintf(componentId, "%s", dataObject->name); + StringUtils_appendString(componentId, OBJ_REF_MAX_SIZE + 1, dataObject->name); else - sprintf(componentId + compIdPos, "$%s", dataObject->name); + { + StringUtils_appendString(componentId, OBJ_REF_MAX_SIZE + 1, "$"); + StringUtils_appendString(componentId, OBJ_REF_MAX_SIZE + 1, dataObject->name); + } } } @@ -426,27 +449,31 @@ installDefaultValuesInCache(IedServer self) { IedModel* model = self->model; - char componentId[130]; + char componentId[OBJ_REF_MAX_SIZE + 1]; componentId[0] = 0; - char objectReference[130]; + char objectReference[OBJ_REF_MAX_SIZE + 1]; LogicalDevice* logicalDevice = model->firstChild; while (logicalDevice) { if (logicalDevice->ldName) - sprintf(objectReference, "%s", logicalDevice->ldName); + StringUtils_copyStringMax(objectReference, OBJ_REF_MAX_SIZE + 1, logicalDevice->ldName); else - sprintf(objectReference, "%s", logicalDevice->name); + StringUtils_copyStringMax(objectReference, OBJ_REF_MAX_SIZE + 1, logicalDevice->name); LogicalNode* logicalNode = (LogicalNode*) logicalDevice->firstChild; + StringUtils_appendString(objectReference, OBJ_REF_MAX_SIZE + 1, "/"); + char* nodeReference = objectReference + strlen(objectReference); while (logicalNode) { - sprintf(nodeReference, "/%s", logicalNode->name); + *nodeReference = 0; + + StringUtils_appendString(objectReference, OBJ_REF_MAX_SIZE + 1, logicalNode->name); DataObject* dataObject = (DataObject*) logicalNode->firstChild; @@ -1317,6 +1344,9 @@ IedServer_updateAttributeValue(IedServer self, DataAttribute* dataAttribute, Mms assert(dataAttribute != NULL); assert(MmsValue_getType(dataAttribute->mmsValue) == MmsValue_getType(value)); + if ((dataAttribute == NULL) || (dataAttribute->mmsValue == NULL)) + return; + if (MmsValue_equals(dataAttribute->mmsValue, value) == false) { if (dataAttribute->type == IEC61850_BOOLEAN) @@ -1350,6 +1380,12 @@ IedServer_updateFloatAttributeValue(IedServer self, DataAttribute* dataAttribute assert(MmsValue_getType(dataAttribute->mmsValue) == MMS_FLOAT); assert(self != NULL); + if ((dataAttribute == NULL) || (dataAttribute->mmsValue == NULL)) + return; + + if (MmsValue_getType(dataAttribute->mmsValue) != MMS_FLOAT) + return; + float currentValue = MmsValue_toFloat(dataAttribute->mmsValue); if (currentValue != value) @@ -1374,6 +1410,12 @@ IedServer_updateInt32AttributeValue(IedServer self, DataAttribute* dataAttribute assert(MmsValue_getType(dataAttribute->mmsValue) == MMS_INTEGER); assert(self != NULL); + if ((dataAttribute == NULL) || (dataAttribute->mmsValue == NULL)) + return; + + if (MmsValue_getType(dataAttribute->mmsValue) != MMS_INTEGER) + return; + int32_t currentValue = MmsValue_toInt32(dataAttribute->mmsValue); if (currentValue != value) @@ -1395,6 +1437,12 @@ IedServer_updateInt32AttributeValue(IedServer self, DataAttribute* dataAttribute void IedServer_updateDbposValue(IedServer self, DataAttribute* dataAttribute, Dbpos value) { + if ((dataAttribute == NULL) || (dataAttribute->mmsValue == NULL)) + return; + + if (MmsValue_getType(dataAttribute->mmsValue) != MMS_BIT_STRING) + return; + Dbpos currentValue = Dbpos_fromMmsValue(dataAttribute->mmsValue); if (currentValue != value) @@ -1420,6 +1468,12 @@ IedServer_updateInt64AttributeValue(IedServer self, DataAttribute* dataAttribute assert(MmsValue_getType(dataAttribute->mmsValue) == MMS_INTEGER); assert(self != NULL); + if ((dataAttribute == NULL) || (dataAttribute->mmsValue == NULL)) + return; + + if (MmsValue_getType(dataAttribute->mmsValue) != MMS_INTEGER) + return; + int64_t currentValue = MmsValue_toInt64(dataAttribute->mmsValue); if (currentValue != value) @@ -1445,6 +1499,12 @@ IedServer_updateUnsignedAttributeValue(IedServer self, DataAttribute* dataAttrib assert(MmsValue_getType(dataAttribute->mmsValue) == MMS_UNSIGNED); assert(self != NULL); + if ((dataAttribute == NULL) || (dataAttribute->mmsValue == NULL)) + return; + + if (MmsValue_getType(dataAttribute->mmsValue) != MMS_UNSIGNED) + return; + uint32_t currentValue = MmsValue_toUint32(dataAttribute->mmsValue); if (currentValue != value) @@ -1470,6 +1530,12 @@ IedServer_updateBitStringAttributeValue(IedServer self, DataAttribute* dataAttri assert(MmsValue_getType(dataAttribute->mmsValue) == MMS_BIT_STRING); assert(self != NULL); + if ((dataAttribute == NULL) || (dataAttribute->mmsValue == NULL)) + return; + + if (MmsValue_getType(dataAttribute->mmsValue) != MMS_BIT_STRING) + return; + uint32_t currentValue = MmsValue_getBitStringAsInteger(dataAttribute->mmsValue); if (currentValue != value) @@ -1495,6 +1561,12 @@ IedServer_updateBooleanAttributeValue(IedServer self, DataAttribute* dataAttribu assert(dataAttribute != NULL); assert(MmsValue_getType(dataAttribute->mmsValue) == MMS_BOOLEAN); + if ((dataAttribute == NULL) || (dataAttribute->mmsValue == NULL)) + return; + + if (MmsValue_getType(dataAttribute->mmsValue) != MMS_BOOLEAN) + return; + bool currentValue = MmsValue_getBoolean(dataAttribute->mmsValue); if (currentValue != value) @@ -1529,6 +1601,12 @@ IedServer_updateVisibleStringAttributeValue(IedServer self, DataAttribute* dataA assert(MmsValue_getType(dataAttribute->mmsValue) == MMS_VISIBLE_STRING); assert(self != NULL); + if ((dataAttribute == NULL) || (dataAttribute->mmsValue == NULL)) + return; + + if (MmsValue_getType(dataAttribute->mmsValue) != MMS_VISIBLE_STRING) + return; + const char* currentValue = MmsValue_toString(dataAttribute->mmsValue); if (strcmp(currentValue, value)) @@ -1554,6 +1632,12 @@ IedServer_updateUTCTimeAttributeValue(IedServer self, DataAttribute* dataAttribu assert(MmsValue_getType(dataAttribute->mmsValue) == MMS_UTC_TIME); assert(self != NULL); + if ((dataAttribute == NULL) || (dataAttribute->mmsValue == NULL)) + return; + + if (MmsValue_getType(dataAttribute->mmsValue) != MMS_UTC_TIME) + return; + uint64_t currentValue = MmsValue_getUtcTimeInMs(dataAttribute->mmsValue); if (currentValue != value) @@ -1579,6 +1663,12 @@ IedServer_updateTimestampAttributeValue(IedServer self, DataAttribute* dataAttri assert(MmsValue_getType(dataAttribute->mmsValue) == MMS_UTC_TIME); assert(self != NULL); + if ((dataAttribute == NULL) || (dataAttribute->mmsValue == NULL)) + return; + + if (MmsValue_getType(dataAttribute->mmsValue) != MMS_UTC_TIME) + return; + if (memcmp(dataAttribute->mmsValue->value.utcTime, timestamp->val, 8)) { #if (CONFIG_MMS_THREADLESS_STACK != 1) @@ -1603,6 +1693,12 @@ IedServer_updateQuality(IedServer self, DataAttribute* dataAttribute, Quality qu assert(MmsValue_getBitStringSize(dataAttribute->mmsValue) >= 12); assert(MmsValue_getBitStringSize(dataAttribute->mmsValue) <= 15); + if ((dataAttribute == NULL) || (dataAttribute->mmsValue == NULL)) + return; + + if (MmsValue_getType(dataAttribute->mmsValue) != MMS_BIT_STRING) + return; + uint32_t oldQuality = MmsValue_getBitStringAsInteger(dataAttribute->mmsValue); if (oldQuality != (uint32_t) quality) @@ -1814,8 +1910,26 @@ IedServer_getFunctionalConstrainedData(IedServer self, DataObject* dataObject, F { nameLen = strlen(dataObject->name); currentStart -= nameLen; + + if (currentStart < buffer) + { + if (DEBUG_IED_SERVER) + printf("IED_SERVER: object path name too long (> 64 bytes)!\n"); + + goto exit_function; + } + memcpy(currentStart, dataObject->name, nameLen); currentStart--; + + if (currentStart < buffer) + { + if (DEBUG_IED_SERVER) + printf("IED_SERVER: object path name too long (> 64 bytes)!\n"); + + goto exit_function; + } + *currentStart = '$'; if (dataObject->parent->modelType == DataObjectModelType) @@ -1826,6 +1940,17 @@ IedServer_getFunctionalConstrainedData(IedServer self, DataObject* dataObject, F char* fcString = FunctionalConstraint_toString(fc); + if (fcString == NULL) + goto exit_function; + + if (currentStart - 3 < buffer) + { + if (DEBUG_IED_SERVER) + printf("IED_SERVER: object path name too long (> 64 bytes)!\n"); + + goto exit_function; + } + currentStart--; *currentStart = fcString[1]; currentStart--; @@ -1838,6 +1963,15 @@ IedServer_getFunctionalConstrainedData(IedServer self, DataObject* dataObject, F nameLen = strlen(ln->name); currentStart -= nameLen; + + if (currentStart < buffer) + { + if (DEBUG_IED_SERVER) + printf("IED_SERVER: object path name too long (> 64 bytes)!\n"); + + goto exit_function; + } + memcpy(currentStart, ln->name, nameLen); LogicalDevice* ld = (LogicalDevice*) ln->parent; diff --git a/src/iec61850/server/mms_mapping/reporting.c b/src/iec61850/server/mms_mapping/reporting.c index 5d3e9c19..bd3185d1 100644 --- a/src/iec61850/server/mms_mapping/reporting.c +++ b/src/iec61850/server/mms_mapping/reporting.c @@ -4158,7 +4158,6 @@ sendNextReportEntrySegment(ReportControl* self) /* add reason code to report if requested */ if (withReasonCode) { - /* move to start position in report buffer */ currentReportBufferPos = valuesInReportBuffer + dataLen; diff --git a/src/logging/logging_api.h b/src/logging/logging_api.h index 1cef5b01..0390c695 100644 --- a/src/logging/logging_api.h +++ b/src/logging/logging_api.h @@ -131,7 +131,7 @@ LogStorage_getMaxLogEntries(LogStorage self); * \brief Add an entry to the log * * \param self the pointer of the LogStorage instance - * \param timestamp the entry time of the new entry + * \param timestamp the entry time of the new entry (ms timestamp) * * \return the entryID of the new entry */ diff --git a/src/mms/inc/mms_value.h b/src/mms/inc/mms_value.h index 05c40ec3..8a8043ff 100644 --- a/src/mms/inc/mms_value.h +++ b/src/mms/inc/mms_value.h @@ -985,7 +985,7 @@ MmsValue_getSubElement(MmsValue* self, MmsVariableSpecification* varSpec, char* * * \return the value type as a human readable string */ -LIB61850_API char* +LIB61850_API const char* MmsValue_getTypeString(MmsValue* self); /** @@ -1064,6 +1064,16 @@ MmsValue_getMaxEncodedSize(MmsValue* self); LIB61850_API int MmsVariableSpecification_getMaxEncodedSize(MmsVariableSpecification* self); +/** + * \brief Convert an MmsError to a string + * + * \param err the error to convert + * + * \return a static string representing the error + */ +LIB61850_API const char* +MmsError_toString(MmsError err); + /**@}*/ /**@}*/ diff --git a/src/mms/iso_client/iso_client_connection.c b/src/mms/iso_client/iso_client_connection.c index ee2202a3..b6786f13 100644 --- a/src/mms/iso_client/iso_client_connection.c +++ b/src/mms/iso_client/iso_client_connection.c @@ -810,6 +810,7 @@ IsoClientConnection_destroy(IsoClientConnection self) IsoClientConnection_close(self); } + /// is this required?! releaseSocket(self); if (self->receiveBuf != NULL) diff --git a/src/mms/iso_mms/common/mms_value.c b/src/mms/iso_mms/common/mms_value.c index f88e232b..83d0bd68 100644 --- a/src/mms/iso_mms/common/mms_value.c +++ b/src/mms/iso_mms/common/mms_value.c @@ -1,7 +1,7 @@ /* * mms_value.c * - * Copyright 2013-2022 Michael Zillgith + * Copyright 2013-2025 Michael Zillgith * * This file is part of libIEC61850. * @@ -2143,7 +2143,7 @@ MmsValue_getSubElement(MmsValue* self, MmsVariableSpecification* varSpec, char* return MmsVariableSpecification_getChildValue(varSpec, self, mmsPath); } -char* +const char* MmsValue_getTypeString(MmsValue* self) { switch (MmsValue_getType(self)) @@ -2339,3 +2339,157 @@ MmsValue_printToBuffer(const MmsValue* self, char* buffer, int bufferSize) return buffer; } + +const char* +MmsError_toString(MmsError err) +{ + switch (err) + { + case MMS_ERROR_NONE: + return "none"; + + case MMS_ERROR_CONNECTION_REJECTED: + return "connection-rejected"; + + case MMS_ERROR_CONNECTION_LOST: + return "connection-lost"; + + case MMS_ERROR_SERVICE_TIMEOUT: + return "service-timeout"; + + case MMS_ERROR_PARSING_RESPONSE: + return "parsing-error"; + + case MMS_ERROR_HARDWARE_FAULT: + return "hardware-fault"; + + case MMS_ERROR_CONCLUDE_REJECTED: + return "conclude-rejected"; + + case MMS_ERROR_INVALID_ARGUMENTS: + return "invalid-arguments"; + + case MMS_ERROR_OUTSTANDING_CALL_LIMIT: + return "outstanding-call-limit"; + + case MMS_ERROR_OTHER: + return "other"; + + case MMS_ERROR_VMDSTATE_OTHER: + return "vmd-state-other"; + + case MMS_ERROR_APPLICATION_REFERENCE_OTHER: + return "app-reference-other"; + + case MMS_ERROR_DEFINITION_OTHER: + return "definition-other"; + + case MMS_ERROR_DEFINITION_INVALID_ADDRESS: + return "invalid-address"; + + case MMS_ERROR_DEFINITION_TYPE_UNSUPPORTED: + return "type-unsupported"; + + case MMS_ERROR_DEFINITION_TYPE_INCONSISTENT: + return "type-inconsistent"; + + case MMS_ERROR_DEFINITION_OBJECT_UNDEFINED: + return "object-undefined"; + + case MMS_ERROR_DEFINITION_OBJECT_EXISTS: + return "object-exists"; + + case MMS_ERROR_DEFINITION_OBJECT_ATTRIBUTE_INCONSISTENT: + return "object-attribute-inconsistent"; + + case MMS_ERROR_RESOURCE_OTHER: + return "resource-other"; + + case MMS_ERROR_RESOURCE_CAPABILITY_UNAVAILABLE: + return "capability-unavailable"; + + case MMS_ERROR_SERVICE_OTHER: + return "service-other"; + + case MMS_ERROR_SERVICE_OBJECT_CONSTRAINT_CONFLICT: + return "object-constraint-conflict"; + + case MMS_ERROR_SERVICE_PREEMPT_OTHER: + return "preempt-other"; + + case MMS_ERROR_TIME_RESOLUTION_OTHER: + return "time-resolution-other"; + + case MMS_ERROR_ACCESS_OTHER: + return "access-other"; + + case MMS_ERROR_ACCESS_OBJECT_NON_EXISTENT: + return "object-non-existent"; + + case MMS_ERROR_ACCESS_OBJECT_ACCESS_UNSUPPORTED: + return "object-access-unsupported"; + + case MMS_ERROR_ACCESS_OBJECT_ACCESS_DENIED: + return "object-access-denied"; + + case MMS_ERROR_ACCESS_OBJECT_INVALIDATED: + return "object-invalidated"; + + case MMS_ERROR_ACCESS_OBJECT_VALUE_INVALID: + return "object-value-invalid"; + + case MMS_ERROR_ACCESS_TEMPORARILY_UNAVAILABLE: + return "temporarily-unavailable"; + + case MMS_ERROR_FILE_OTHER: + return "file-other"; + + case MMS_ERROR_FILE_FILENAME_AMBIGUOUS: + return "filename-ambiguous"; + + case MMS_ERROR_FILE_FILE_BUSY: + return "file-busy"; + + case MMS_ERROR_FILE_FILENAME_SYNTAX_ERROR: + return "filename-syntax-error"; + + case MMS_ERROR_FILE_CONTENT_TYPE_INVALID: + return "file-content-type-invalid"; + + case MMS_ERROR_FILE_POSITION_INVALID: + return "file-position-invalid"; + + case MMS_ERROR_FILE_FILE_ACCESS_DENIED: + return "file-access-denied"; + + case MMS_ERROR_FILE_FILE_NON_EXISTENT: + return "file-non-existent"; + + case MMS_ERROR_FILE_DUPLICATE_FILENAME: + return "duplicate-filename"; + + case MMS_ERROR_FILE_INSUFFICIENT_SPACE_IN_FILESTORE: + return "insufficient-space-in-filestore"; + + case MMS_ERROR_REJECT_OTHER: + return "reject-other"; + + case MMS_ERROR_REJECT_UNKNOWN_PDU_TYPE: + return "reject-unknown-pdu-type"; + + case MMS_ERROR_REJECT_INVALID_PDU: + return "reject-invalid-pdu"; + + case MMS_ERROR_REJECT_UNRECOGNIZED_SERVICE: + return "reject-unrecognized-service"; + + case MMS_ERROR_REJECT_UNRECOGNIZED_MODIFIER: + return "reject-unrecognized-modifier"; + + case MMS_ERROR_REJECT_REQUEST_INVALID_ARGUMENT: + return "reject-request-invalid-argument"; + + default: + return "unknown"; + } +}