using System; using System.ComponentModel; using System.Reflection; namespace BlubbFish.Utils.IoT.Interfaces.Language { public abstract class Senml { #pragma warning disable IDE1006 // Benennungsstile public String n { get; } public String u { get; } public Int32 t { get; } #pragma warning restore IDE1006 // Benennungsstile public enum Units { [Description("%")] Percent, [Description("count")] CounterValue, [Description("W")] Watt, [Description("J")] Joule, [Description("Cel")] Celsius, [Description("lx")] Lux } public Senml(String name, Units unit) { this.n = name; this.u = this.GetEnumDescription(unit); this.t = 0; } private String GetEnumDescription(Enum value) { FieldInfo fi = value.GetType().GetField(value.ToString()); DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false); if (attributes != null && attributes.Length > 0) { return attributes[0].Description; } else { return value.ToString(); } } } public class SenmlBool : Senml { #pragma warning disable IDE1006 // Benennungsstile public Boolean bv { get; } #pragma warning restore IDE1006 // Benennungsstile public SenmlBool(String name, Units unit, Boolean level) : base(name, unit) { this.bv = level; } } public class SenmlDouble : Senml { #pragma warning disable IDE1006 // Benennungsstile public Double v { get; } #pragma warning restore IDE1006 // Benennungsstile public SenmlDouble(String name, Units unit, Double level) : base(name, unit) { this.v = level; } } }