Skip to content

Commit

Permalink
[Minor] Changed BoardModelDetection to be a singleton
Browse files Browse the repository at this point in the history
  • Loading branch information
eitch committed Apr 11, 2024
1 parent ae2ee8e commit dc13031
Showing 1 changed file with 19 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,42 +14,48 @@ public class BoardModelDetection {

private static final Logger logger = LoggerFactory.getLogger(BoardModelDetection.class);

private BoardModelDetection() {
// Hide constructor
private static final BoardModelDetection instance;
private final BoardInfo boardInfo;

static {
instance = new BoardModelDetection();
}

public static BoardInfo current() {
var os = new OperatingSystem(System.getProperty("os.name"),
System.getProperty("os.version"),
System.getProperty("os.arch"));
private BoardModelDetection() {
var os = new OperatingSystem(System.getProperty("os.name"), System.getProperty("os.version"),
System.getProperty("os.arch"));
logger.info("Detected OS: {}", os);

var java = new JavaInfo(System.getProperty("java.version"),
System.getProperty("java.runtime.version"),
System.getProperty("java.vendor"),
System.getProperty("java.vendor.version"));
var java = new JavaInfo(System.getProperty("java.version"), System.getProperty("java.runtime.version"),
System.getProperty("java.vendor"), System.getProperty("java.vendor.version"));
logger.info("Detected Java: {}", java);

// Example output: c03111
var boardVersionCode = getBoardVersionCode();
var boardModelByBoardCode = BoardModel.getByBoardCode(boardVersionCode);
if (boardModelByBoardCode != BoardModel.UNKNOWN) {
logger.info("Detected board type {} by code: {}", boardModelByBoardCode.name(), boardVersionCode);
return new BoardInfo(boardModelByBoardCode, os, java);
this.boardInfo = new BoardInfo(boardModelByBoardCode, os, java);
return;
}

// Example output: Raspberry Pi 4 Model B Rev 1.1
var boardName = getBoardName();
boardModelByBoardCode = BoardModel.getByBoardName(boardName);
if (boardModelByBoardCode != BoardModel.UNKNOWN) {
logger.info("Detected board type {} by name: {}", boardModelByBoardCode.name(), boardName);
return new BoardInfo(boardModelByBoardCode, os, java);
this.boardInfo = new BoardInfo(boardModelByBoardCode, os, java);
return;
}

// Maybe there are other ways how a board can be detected?
// If so, this method can be further extended...
logger.warn("Sorry, could not detect the board type");
return new BoardInfo(BoardModel.UNKNOWN, os, java);
this.boardInfo = new BoardInfo(BoardModel.UNKNOWN, os, java);
}

public static BoardInfo current() {
return instance.boardInfo;
}

public static String getBoardVersionCode() {
Expand Down

0 comments on commit dc13031

Please sign in to comment.