/*
* Copyright 2013-2025 Michael Zillgith, MZ Automation GmbH
*
* This file is part of MZ Automation IEC 61850 SDK
*
* All rights reserved.
*/
using StaticModelGenerator;
namespace modeGenerator_example
{
///
/// This example shows how to handle a large number of information objects
///
class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine("Usage: Static Model (1) \n Dynamic Model (2) \n [-ied ] [-ap ] [-out ] [-modelprefix ]");
if (args.Length == 0)
{
Console.WriteLine("Parse the arguments \n" +
"Usage: Static Model (1) \n Dynamic Model (2) \n [-ied ] [-ap ] [-out ] [-modelprefix ]");
}
else
{
string accessPointName = null;
string iedName = null;
string icdFile = "ICDFiles//simpleIO_ltrk_tests.icd";
string outputFileName = "static_model";
string modelPrefix = "iedModel";
bool initializeOnce = false;
icdFile = args[1];
for (int i = 2; i < args.Count(); i++)
{
if (args[i] == ("-ap"))
{
accessPointName = args[i + 1];
Console.WriteLine("Select access point " + accessPointName);
i++;
}
else if (args[i] == ("-ied"))
{
iedName = args[i + 1];
Console.WriteLine("Select IED " + iedName);
i++;
}
else if (args[i] == ("-out"))
{
outputFileName = args[i + 1];
Console.WriteLine("Select Output File " + outputFileName);
i++;
}
else if (args[i] == ("-modelprefix"))
{
modelPrefix = args[i + 1];
Console.WriteLine("Select Model Prefix " + modelPrefix);
i++;
}
else if (args[i] == ("-initializeonce"))
{
initializeOnce = true;
Console.WriteLine("Select Initialize Once");
}
else
{
Console.WriteLine("Unknown option: \"" + args[i] + "\"");
}
}
if (args[0] == "1")
{
Console.WriteLine("Generate Static Model");
FileStream cOutStream = new FileStream(outputFileName + ".c", FileMode.Create, FileAccess.Write);
FileStream hOutStream = new FileStream(outputFileName + ".h", FileMode.Create, FileAccess.Write);
try
{
new StaticModelGenerator.StaticModelGenerator(icdFile, icdFile, cOutStream, hOutStream, outputFileName, iedName, accessPointName, modelPrefix, initializeOnce);
}
catch (Exception e)
{
Console.WriteLine("ERROR: " + e.ToString());
}
}
else if (args[0] == "2")
{
Console.WriteLine("Generate Dynamic Model");
try
{
FileStream stream = new FileStream(outputFileName + ".cfg", FileMode.Create, FileAccess.Write);
new DynamicModel.DynamicModel(icdFile, stream, iedName, accessPointName);
}
catch (Exception e)
{
Console.WriteLine("ERROR: " + e.ToString());
}
}
else
{
Console.WriteLine("Wrong option, parse 1 or 2 \n" +
"Usage: Static Model (1) \n Dynamic Model (2) \n [-ied ] [-ap ] [-out ] [-modelprefix ]");
}
}
}
}
}