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; } } } }