xref: /aosp_15_r20/external/cronet/components/metrics/motherboard.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2022 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #ifndef COMPONENTS_METRICS_MOTHERBOARD_H_
6*6777b538SAndroid Build Coastguard Worker #define COMPONENTS_METRICS_MOTHERBOARD_H_
7*6777b538SAndroid Build Coastguard Worker 
8*6777b538SAndroid Build Coastguard Worker #include <optional>
9*6777b538SAndroid Build Coastguard Worker #include <string>
10*6777b538SAndroid Build Coastguard Worker 
11*6777b538SAndroid Build Coastguard Worker namespace metrics {
12*6777b538SAndroid Build Coastguard Worker 
13*6777b538SAndroid Build Coastguard Worker class Motherboard final {
14*6777b538SAndroid Build Coastguard Worker  public:
15*6777b538SAndroid Build Coastguard Worker   enum class BiosType { kLegacy, kUefi };
16*6777b538SAndroid Build Coastguard Worker   Motherboard();
17*6777b538SAndroid Build Coastguard Worker   Motherboard(Motherboard&&);
18*6777b538SAndroid Build Coastguard Worker   Motherboard(const Motherboard&) = delete;
19*6777b538SAndroid Build Coastguard Worker   ~Motherboard();
20*6777b538SAndroid Build Coastguard Worker 
21*6777b538SAndroid Build Coastguard Worker   // The fields below provide details about Motherboard and BIOS on the system.
22*6777b538SAndroid Build Coastguard Worker   //
23*6777b538SAndroid Build Coastguard Worker   // A `nullopt_t` means that the property does not exist/could not be read.
24*6777b538SAndroid Build Coastguard Worker   // A valid value could be an UTF-8 string with characters or an empty string.
25*6777b538SAndroid Build Coastguard Worker   //
26*6777b538SAndroid Build Coastguard Worker   // This `std::optional` can be mapped directly to the optional proto message
27*6777b538SAndroid Build Coastguard Worker   // field, where the message field is added only if there is a valid value.
manufacturer()28*6777b538SAndroid Build Coastguard Worker   const std::optional<std::string>& manufacturer() const {
29*6777b538SAndroid Build Coastguard Worker     return manufacturer_;
30*6777b538SAndroid Build Coastguard Worker   }
model()31*6777b538SAndroid Build Coastguard Worker   const std::optional<std::string>& model() const { return model_; }
bios_manufacturer()32*6777b538SAndroid Build Coastguard Worker   const std::optional<std::string>& bios_manufacturer() const {
33*6777b538SAndroid Build Coastguard Worker     return bios_manufacturer_;
34*6777b538SAndroid Build Coastguard Worker   }
bios_version()35*6777b538SAndroid Build Coastguard Worker   const std::optional<std::string>& bios_version() const {
36*6777b538SAndroid Build Coastguard Worker     return bios_version_;
37*6777b538SAndroid Build Coastguard Worker   }
bios_type()38*6777b538SAndroid Build Coastguard Worker   std::optional<BiosType> bios_type() const { return bios_type_; }
39*6777b538SAndroid Build Coastguard Worker 
40*6777b538SAndroid Build Coastguard Worker  private:
41*6777b538SAndroid Build Coastguard Worker   std::optional<std::string> manufacturer_;
42*6777b538SAndroid Build Coastguard Worker   std::optional<std::string> model_;
43*6777b538SAndroid Build Coastguard Worker   std::optional<std::string> bios_manufacturer_;
44*6777b538SAndroid Build Coastguard Worker   std::optional<std::string> bios_version_;
45*6777b538SAndroid Build Coastguard Worker   std::optional<BiosType> bios_type_;
46*6777b538SAndroid Build Coastguard Worker };
47*6777b538SAndroid Build Coastguard Worker 
48*6777b538SAndroid Build Coastguard Worker }  // namespace metrics
49*6777b538SAndroid Build Coastguard Worker 
50*6777b538SAndroid Build Coastguard Worker #endif  // COMPONENTS_METRICS_MOTHERBOARD_H_
51