Files
barsik/MonitoringUnit.cs
T

46 lines
1.3 KiB
C#

using System;
using System.Text;
using System.Text.Json;
namespace Barsik
{
abstract class BaseMonitoringUnit
{
protected JsonElement config;
protected RegistersContainer registers;
protected int baseAddress;
protected string unitName;
public BaseMonitoringUnit(JsonElement config, RegistersContainer registers)
{
this.config = config.Clone();
this.registers = registers;
baseAddress = config.GetProperty("BaseAddress").GetInt32();
unitName = config.GetProperty("Name").GetString();
}
public abstract void Run();
public abstract void GenerateThingsConfig(StringBuilder config);
public abstract void GenerateItemsConfig(string name, StringBuilder config);
public static BaseMonitoringUnit Create(JsonElement config, RegistersContainer registers)
{
var type = config.GetProperty("Type").GetString();
if (type == "Sensors")
{
return new SensorsMonitoringUnit(config, registers);
}
else if (type == "MDStat")
{
return new MDStatMonitoringUnit(config, registers);
}
else
{
Console.WriteLine("Unknown unit type " + type);
return null;
}
}
}
}