| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | using System.Collections.Generic;using System.Linq;namespace InABox.DigitalMatter{    public class DMAnalogueDataField16 : DMField    {        public DMAnalogueDataField16()        {            Data = new Dictionary<byte, short>();        }        public override byte Type => 0x06;        public Dictionary<byte, short> Data { get; }        public double InternalVoltage => Data.ContainsKey(1) ? (double)Data[1] / 100.0F : 0.0F;        public double ExternalVoltage => Data.ContainsKey(2) ? (double)Data[2] / 100.0F : 0.0F;        public double InternalTemperature => Data.ContainsKey(3) ? (double)Data[3] / 100.0F : 0.0F;        public int GSMStrength => Data.ContainsKey(4) ? Data[4] : 0;        public double LoadedVoltage => Data.ContainsKey(5) ? (double)Data[5] / 100.0F : 0.0F;        public double? BatteryStrength => Data.ContainsKey(6) ? (double)Data[6] / 100.0F : new double?();        protected override void DoDecode()        {            for (var i = 0; i < Length; i += 3)                Data[TakeByte()] = TakeInt16();        }        protected override void DoEncode()        {            foreach (var key in Data.Keys)            {                AddByte(key);                AddInt16(Data[key]);            }        }        public override string ToString()        {            return string.Join(" ", Data.Select(x => string.Format("{0:X}={1}", x.Key, x.Value)));        }        public override bool IsValid()        {            return Data.Any();        }    }}
 |