| // Copyright 2018 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 "chromeos/dbus/fake_runtime_probe_client.h" |
| |
| #include <utility> |
| |
| #include "base/bind.h" |
| #include "base/threading/thread_task_runner_handle.h" |
| #include "chromeos/dbus/dbus_thread_manager.h" |
| |
| namespace chromeos { |
| |
| namespace { |
| constexpr int kLiveValuesLimit = 42; |
| } |
| |
| FakeRuntimeProbeClient::FakeRuntimeProbeClient() : weak_ptr_factory_(this) {} |
| |
| FakeRuntimeProbeClient::~FakeRuntimeProbeClient() = default; |
| |
| void FakeRuntimeProbeClient::ProbeCategories( |
| const runtime_probe::ProbeRequest& request, |
| RuntimeProbeCallback callback) { |
| runtime_probe::ProbeResult result; |
| |
| for (const auto& category : request.categories()) { |
| if (category == runtime_probe::ProbeRequest::battery) { |
| runtime_probe::Battery* battery = result.add_battery(); |
| battery->set_name("generic"); |
| auto* battery_fields = battery->mutable_values(); |
| battery_fields->set_manufacturer("111-22-"); |
| battery_fields->set_model_name("AA12345"); |
| battery_fields->set_serial_number("0123"); |
| // Charge in 1e-6 Ah |
| battery_fields->set_charge_full_design(5 * 1000 * 1000); |
| battery_fields->set_charge_full(4 * 1000 * 1000); |
| battery_fields->set_charge_now(4 * 1000 * 1000 - 10000 * live_offset_); |
| // Voltage in 1e-6 V |
| battery_fields->set_voltage_now(10 * 1000 * 1000 - 5000 * live_offset_); |
| battery_fields->set_cycle_count_smart(1); |
| battery_fields->set_status_smart(224); |
| // Temperature in 0.1 deg K |
| battery_fields->set_temperature_smart(3030 + live_offset_); |
| continue; |
| } |
| |
| if (category == runtime_probe::ProbeRequest::storage) { |
| runtime_probe::Storage* storage = result.add_storage(); |
| storage->set_name("generic"); |
| auto* storage_fields = storage->mutable_values(); |
| storage_fields->set_sectors(123456789); |
| storage_fields->set_type("MMC"); |
| // Manufacturer ID |
| storage_fields->set_manfid(123); |
| storage_fields->set_name("aB1cD>"); |
| // Product revision |
| storage_fields->set_prv(1); |
| storage_fields->set_serial(12345678); |
| storage_fields->set_oemid(123); |
| } |
| } |
| |
| // Change offset, but keep it in reasonably small range. |
| live_offset_ = (live_offset_ + 1) % kLiveValuesLimit; |
| |
| base::ThreadTaskRunnerHandle::Get()->PostTask( |
| FROM_HERE, base::BindOnce(std::move(callback), result)); |
| } |
| |
| } // namespace chromeos |