RaspberryIO_26/Unosquare.WiringPi/SystemInfo.cs

43 lines
1.1 KiB
C#
Raw Normal View History

2019-12-06 21:09:52 +01:00
using System;
using Unosquare.RaspberryIO.Abstractions;
namespace Unosquare.WiringPi {
/// <summary>
/// Represents the WiringPi system info.
/// </summary>
/// <seealso cref="ISystemInfo" />
public class SystemInfo : ISystemInfo {
private static readonly Object Lock = new Object();
private static Boolean _revGetted;
private static BoardRevision _boardRevision = BoardRevision.Rev2;
/// <inheritdoc />
public BoardRevision BoardRevision => GetBoardRevision();
/// <inheritdoc />
public Version LibraryVersion {
get {
String[] libParts = Native.WiringPi.WiringPiLibrary.Split('.');
2019-12-09 17:27:40 +01:00
Int32 major = Int32.Parse(libParts[^2]);
Int32 minor = Int32.Parse(libParts[^1]);
2019-12-06 21:09:52 +01:00
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;
}
}
2019-12-04 18:57:18 +01:00
}