File: system_info_util.h

package info (click to toggle)
chromium 139.0.7258.127-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 6,122,068 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (108 lines) | stat: -rw-r--r-- 4,643 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROMEOS_ASH_COMPONENTS_SYSTEM_INFO_SYSTEM_INFO_UTIL_H_
#define CHROMEOS_ASH_COMPONENTS_SYSTEM_INFO_SYSTEM_INFO_UTIL_H_

#include <string>
#include <vector>

#include "base/time/time.h"
#include "chromeos/ash/components/system_info/battery_health.h"
#include "chromeos/ash/components/system_info/cpu_data.h"
#include "chromeos/ash/components/system_info/cpu_usage_data.h"
#include "chromeos/ash/services/cros_healthd/public/mojom/cros_healthd_probe.mojom.h"
#include "chromeos/dbus/power_manager/power_supply_properties.pb.h"

namespace system_info {

// The enums below are used in histograms, do not remove/renumber entries. If
// you're adding to any of these enums, update the corresponding enum listing in
// tools/metrics/histograms/enums.xml: CrosDiagnosticsDataError.
enum class BatteryDataError {
  // Null or nullptr value.
  kNoData = 0,
  // For numeric values that are NaN.
  kNotANumber = 1,
  // Expectation about data not met. Ex. routing prefix is between zero and
  // thirty-two.
  kExpectationNotMet = 2,
  kMaxValue = kExpectationNotMet,
};

// Checks if current battery time is excessively long (more than 1 day) or short
// (less than 1 minute). If so, the time should not be displayed as if the
// current is close to 0, then the time estimates can be excessively large.
bool COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_SYSTEM_INFO)
    ShouldDisplayBatteryTime(const base::TimeDelta& time);

// Converts the double of the battery percentage into an int, which has a
// minimum value of 1.
int COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_SYSTEM_INFO)
    GetRoundedBatteryPercent(double battery_percent);

// Copies the hour and minute components of `time` to `hours` and `minutes`.
// The minute component is rounded rather than truncated: a `time` value
// corresponding to 92 seconds will produce a `minutes` value of 2, for
// example.
void COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_SYSTEM_INFO)
    SplitTimeIntoHoursAndMinutes(const base::TimeDelta& time,
                                 int* hours,
                                 int* minutes);

void COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_SYSTEM_INFO)
    EmitBatteryDataError(BatteryDataError error,
                         const std::string& histogram_prefix);

// Extracts MemoryInfo
//         from `info`.Logs and returns a nullptr if MemoryInfo in not present
ash::cros_healthd::mojom::MemoryInfo* COMPONENT_EXPORT(
    CHROMEOS_ASH_COMPONENTS_SYSTEM_INFO)
    GetMemoryInfo(const ash::cros_healthd::mojom::TelemetryInfo& info,
                  const std::string& metric_name_for_histogram);

// Extracts CpuInfo from `info`. Logs and returns a nullptr if CpuInfo
// in not present.
ash::cros_healthd::mojom::CpuInfo* COMPONENT_EXPORT(
    CHROMEOS_ASH_COMPONENTS_SYSTEM_INFO)
    GetCpuInfo(const ash::cros_healthd::mojom::TelemetryInfo& info,
               const std::string& metric_name_for_histogram);

// Extracts BatteryInfo from `info`. Logs and returns a nullptr if
// BatteryInfo in not present.
const ash::cros_healthd::mojom::BatteryInfo* COMPONENT_EXPORT(
    CHROMEOS_ASH_COMPONENTS_SYSTEM_INFO)
    GetBatteryInfo(const ash::cros_healthd::mojom::TelemetryInfo& info,
                   const std::string& metric_name_for_histogram,
                   const std::string& battery_error_histogram);

CpuUsageData COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_SYSTEM_INFO)
    CalculateCpuUsage(
        const std::vector<ash::cros_healthd::mojom::LogicalCpuInfoPtr>&
            logical_cpu_infos);

void COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_SYSTEM_INFO)
    PopulateCpuUsage(CpuUsageData new_cpu_usage_data,
                     CpuUsageData previous_cpu_usage_data,
                     CpuData& cpu_usage);
void COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_SYSTEM_INFO)
    PopulateAverageCpuTemperature(
        const ash::cros_healthd::mojom::CpuInfo& cpu_info,
        CpuData& cpu_usage);
void COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_SYSTEM_INFO)
    PopulateAverageScaledClockSpeed(
        const ash::cros_healthd::mojom::CpuInfo& cpu_info,
        CpuData& out_cpu_usage);

void COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_SYSTEM_INFO)
    PopulateBatteryHealth(
        const ash::cros_healthd::mojom::BatteryInfo& battery_info,
        BatteryHealth& battery_health);

std::u16string COMPONENT_EXPORT(CHROMEOS_ASH_COMPONENTS_SYSTEM_INFO)
    GetBatteryTimeText(base::TimeDelta time_left);

}  // namespace system_info

#endif  // CHROMEOS_ASH_COMPONENTS_SYSTEM_INFO_SYSTEM_INFO_UTIL_H_