123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- // Copyright 2021 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "ash/system/diagnostics/telemetry_log.h"
- #include <sstream>
- #include <utility>
- #include "base/i18n/time_formatting.h"
- #include "base/strings/string_number_conversions.h"
- #include "base/strings/utf_string_conversions.h"
- #include "base/time/time.h"
- namespace ash {
- namespace diagnostics {
- namespace {
- const char kNewline[] = "\n";
- // SystemInfo constants:
- const char kSystemInfoSectionName[] = "--- System Info ---";
- const char kSystemInfoCurrentTimeTitle[] = "Snapshot Time: ";
- const char kSystemInfoBoardNameTitle[] = "Board Name: ";
- const char kSystemInfoMarketingNameTitle[] = "Marketing Name: ";
- const char kSystemInfoCpuModelNameTitle[] = "CpuModel Name: ";
- const char kSystemInfoTotalMemoryTitle[] = "Total Memory (kib): ";
- const char kSystemInfoCpuThreadCountTitle[] = "Thread Count: ";
- const char kSystemInfoCpuMaxClockSpeedTitle[] = "Cpu Max Clock Speed (kHz): ";
- const char kSystemInfoMilestoneVersionTitle[] = "Version: ";
- const char kSystemInfoHasBatteryTitle[] = "Has Battery: ";
- // BatteryChargeStatus constants:
- const char kBatteryChargeStatusSectionName[] = "--- Battery Charge Status ---";
- const char kBatteryChargeStatusBatteryStateTitle[] = "Battery State: ";
- const char kBatteryChargeStatusPowerSourceTitle[] = "Power Source: ";
- const char kBatteryChargeStatusPowerTimeTitle[] = "Power Time: ";
- const char kBatteryChargeStatusCurrentNowTitle[] = "Current Now (mA): ";
- const char kBatteryChargeStatusChargeNowTitle[] = "Chage Now (mAh): ";
- // BatteryHealth constants:
- const char kBatteryHealthSectionName[] = "--- Battery Health ---";
- const char kBatteryHealthChargeFullNowTitle[] = "Charge Full Now (mAh): ";
- const char kBatteryHealthChargeFullDesignTitle[] = "Charge Full Design (mAh): ";
- const char kBatteryHealthCycleCountTitle[] = "Cycle Count: ";
- const char kBatteryHealthWearPercentageTitle[] = "Wear Percentage: ";
- // MemoryUsage constants:
- const char kMemoryUsageSectionName[] = "--- Memory Usage ---";
- const char kMemoryUsageTotalMemoryTitle[] = "Total Memory (kib): ";
- const char kMemoryUsageAvailableMemoryTitle[] = "Available Memory (kib): ";
- const char kMemoryUsageFreeMemoryTitle[] = "Free Memory (kib): ";
- // CpuUsage constants:
- const char kCpuUsageSectionName[] = "--- Cpu Usage ---";
- const char kCpuUsageUserTitle[] = "Usage User (%): ";
- const char kCpuUsageSystemTitle[] = "Usage System (%): ";
- const char kCpuUsageFreeTitle[] = "Usage Free (%): ";
- const char kCpuUsageAvgTempTitle[] = "Avg Temp (C): ";
- const char kCpuUsageScalingFrequencyTitle[] =
- "Current scaled frequency (kHz): ";
- std::string GetCurrentDateTimeWithTimeZoneAsString() {
- return base::UTF16ToUTF8(
- base::TimeFormatShortDateAndTimeWithTimeZone(base::Time::Now()));
- }
- } // namespace
- TelemetryLog::TelemetryLog() = default;
- TelemetryLog::~TelemetryLog() = default;
- void TelemetryLog::UpdateSystemInfo(mojom::SystemInfoPtr latest_system_info) {
- latest_system_info_ = std::move(latest_system_info);
- }
- void TelemetryLog::UpdateBatteryChargeStatus(
- mojom::BatteryChargeStatusPtr latest_battery_charge_status) {
- latest_battery_charge_status_ = std::move(latest_battery_charge_status);
- }
- void TelemetryLog::UpdateBatteryHealth(
- mojom::BatteryHealthPtr latest_battery_health) {
- latest_battery_health_ = std::move(latest_battery_health);
- }
- void TelemetryLog::UpdateMemoryUsage(
- mojom::MemoryUsagePtr latest_memory_usage) {
- latest_memory_usage_ = std::move(latest_memory_usage);
- }
- void TelemetryLog::UpdateCpuUsage(mojom::CpuUsagePtr latest_cpu_usage) {
- latest_cpu_usage_ = std::move(latest_cpu_usage);
- }
- std::string TelemetryLog::GetContents() const {
- std::stringstream output;
- if (latest_system_info_) {
- output << kSystemInfoSectionName << kNewline << kSystemInfoCurrentTimeTitle
- << GetCurrentDateTimeWithTimeZoneAsString() << kNewline
- << kSystemInfoBoardNameTitle << latest_system_info_->board_name
- << kNewline << kSystemInfoMarketingNameTitle
- << latest_system_info_->marketing_name << kNewline
- << kSystemInfoCpuModelNameTitle
- << latest_system_info_->cpu_model_name << kNewline
- << kSystemInfoTotalMemoryTitle
- << latest_system_info_->total_memory_kib << kNewline
- << kSystemInfoCpuThreadCountTitle
- << latest_system_info_->cpu_threads_count << kNewline
- << kSystemInfoCpuMaxClockSpeedTitle
- << latest_system_info_->cpu_max_clock_speed_khz << kNewline
- << kSystemInfoMilestoneVersionTitle
- << latest_system_info_->version_info->full_version_string << kNewline
- << kSystemInfoHasBatteryTitle
- << ((latest_system_info_->device_capabilities->has_battery)
- ? "true"
- : "false")
- << kNewline << kNewline;
- }
- if (latest_battery_charge_status_) {
- output << kBatteryChargeStatusSectionName << kNewline
- << kBatteryChargeStatusBatteryStateTitle
- << latest_battery_charge_status_->battery_state << kNewline
- << kBatteryChargeStatusPowerSourceTitle
- << latest_battery_charge_status_->power_adapter_status << kNewline
- << kBatteryChargeStatusPowerTimeTitle
- << latest_battery_charge_status_->power_time << kNewline
- << kBatteryChargeStatusCurrentNowTitle
- << latest_battery_charge_status_->current_now_milliamps << kNewline
- << kBatteryChargeStatusChargeNowTitle
- << latest_battery_charge_status_->charge_now_milliamp_hours
- << kNewline << kNewline;
- }
- if (latest_battery_health_) {
- output << kBatteryHealthSectionName << kNewline
- << kBatteryHealthChargeFullNowTitle
- << latest_battery_health_->charge_full_now_milliamp_hours << kNewline
- << kBatteryHealthChargeFullDesignTitle
- << latest_battery_health_->charge_full_design_milliamp_hours
- << kNewline << kBatteryHealthCycleCountTitle
- << latest_battery_health_->cycle_count << kNewline
- << kBatteryHealthWearPercentageTitle
- << base::NumberToString(
- latest_battery_health_->battery_wear_percentage)
- << kNewline << kNewline;
- }
- if (latest_memory_usage_) {
- output << kMemoryUsageSectionName << kNewline
- << kMemoryUsageTotalMemoryTitle
- << latest_memory_usage_->total_memory_kib << kNewline
- << kMemoryUsageAvailableMemoryTitle
- << latest_memory_usage_->available_memory_kib << kNewline
- << kMemoryUsageFreeMemoryTitle
- << latest_memory_usage_->free_memory_kib << kNewline << kNewline;
- }
- if (latest_cpu_usage_) {
- output << kCpuUsageSectionName << kNewline << kCpuUsageUserTitle
- << base::NumberToString(latest_cpu_usage_->percent_usage_user)
- << kNewline << kCpuUsageSystemTitle
- << base::NumberToString(latest_cpu_usage_->percent_usage_system)
- << kNewline << kCpuUsageFreeTitle
- << base::NumberToString(latest_cpu_usage_->percent_usage_free)
- << kNewline << kCpuUsageAvgTempTitle
- << latest_cpu_usage_->average_cpu_temp_celsius << kNewline
- << kCpuUsageScalingFrequencyTitle
- << latest_cpu_usage_->scaling_current_frequency_khz << kNewline
- << kNewline;
- }
- return output.str();
- }
- } // namespace diagnostics
- } // namespace ash
|