43 lines
1.1 KiB
C#
43 lines
1.1 KiB
C#
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('.');
|
|
Int32 major = Int32.Parse(libParts[^2]);
|
|
Int32 minor = Int32.Parse(libParts[^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;
|
|
}
|
|
}
|
|
}
|