50 lines
1.5 KiB
C#
50 lines
1.5 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 if (type == "External")
|
|
{
|
|
return new ExternalMonitoringUnit(config, registers);
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine("Unknown unit type " + type);
|
|
return null;
|
|
}
|
|
}
|
|
}
|
|
}
|