View Javadoc
1   /*
2    * Copyright 2016-2022 The OSHI Project Contributors
3    * SPDX-License-Identifier: MIT
4    */
5   package oshi.hardware;
6   
7   import oshi.annotation.concurrent.Immutable;
8   
9   /**
10   * The ComputerSystem represents the physical hardware, of a computer system/product and includes BIOS/firmware and a
11   * motherboard, logic board, etc.
12   */
13  @Immutable
14  public interface ComputerSystem {
15      /**
16       * Get the computer system manufacturer.
17       *
18       * @return The manufacturer.
19       */
20      String getManufacturer();
21  
22      /**
23       * Get the computer system model.
24       *
25       * @return The model.
26       */
27      String getModel();
28  
29      /**
30       * Get the computer system serial number, if available.
31       * <P>
32       * Performs a best-effort attempt to retrieve a unique serial number from the computer system. This may originate
33       * from the baseboard, BIOS, processor, etc.
34       * <P>
35       * This value is provided for information only. Caution should be exercised if using this result to "fingerprint" a
36       * system for licensing or other purposes, as the result may change based on program permissions or installation of
37       * software packages. Specifically, on Linux and FreeBSD, this requires either root permissions, or installation of
38       * the (deprecated) HAL library (lshal command). Linux also attempts to read the dmi/id serial number files in
39       * sysfs, which are read-only root by default but may have permissions altered by the user.
40       *
41       * @return the System Serial Number, if available, otherwise returns "unknown"
42       */
43      String getSerialNumber();
44  
45      /**
46       * Get the computer system hardware UUID, if available.
47       * <P>
48       * Performs a best-effort attempt to retrieve the hardware UUID.
49       *
50       * @return the Hardware UUID, if available, otherwise returns "unknown"
51       */
52      String getHardwareUUID();
53  
54      /**
55       * Get the computer system firmware/BIOS.
56       *
57       * @return A {@link oshi.hardware.Firmware} object for this system
58       */
59      Firmware getFirmware();
60  
61      /**
62       * Get the computer system baseboard/motherboard.
63       *
64       * @return A {@link oshi.hardware.Baseboard} object for this system
65       */
66      Baseboard getBaseboard();
67  
68  }