using System; using Unosquare.RaspberryIO.Abstractions; namespace Unosquare.WiringPi { /// /// Represents the WiringPi system info. /// /// public class SystemInfo : ISystemInfo { private static readonly Object Lock = new Object(); private static Boolean _revGetted; private static BoardRevision _boardRevision = BoardRevision.Rev2; /// public BoardRevision BoardRevision => GetBoardRevision(); /// public Version LibraryVersion { get { String[] libParts = Native.WiringPi.WiringPiLibrary.Split('.'); Int32 major = Int32.Parse(libParts[libParts.Length - 2]); Int32 minor = Int32.Parse(libParts[libParts.Length - 1]); return new Version(major, minor); } } internal static BoardRevision GetBoardRevision() { lock(Lock) { if(_revGetted) { return _boardRevision; } Int32 val = Native.WiringPi.PiBoardRev(); _boardRevision = val == 1 ? BoardRevision.Rev1 : BoardRevision.Rev2; _revGetted = true; } return _boardRevision; } } }