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 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
// Copyright 2020 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_TELEMETRY_EXTENSION_DIAGNOSTICS_DIAGNOSTICS_SERVICE_ASH_H_
#define CHROMEOS_ASH_COMPONENTS_TELEMETRY_EXTENSION_DIAGNOSTICS_DIAGNOSTICS_SERVICE_ASH_H_
#include <memory>
#include "chromeos/ash/services/cros_healthd/public/mojom/cros_healthd.mojom.h"
#include "chromeos/crosapi/mojom/diagnostics_service.mojom.h"
#include "chromeos/crosapi/mojom/nullable_primitives.mojom.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/receiver_set.h"
#include "mojo/public/cpp/bindings/remote.h"
namespace ash {
class DiagnosticsServiceAsh : public crosapi::mojom::DiagnosticsService {
public:
class Factory {
public:
static std::unique_ptr<crosapi::mojom::DiagnosticsService> Create(
mojo::PendingReceiver<crosapi::mojom::DiagnosticsService> receiver);
static void SetForTesting(Factory* test_factory);
virtual ~Factory();
protected:
virtual std::unique_ptr<crosapi::mojom::DiagnosticsService> CreateInstance(
mojo::PendingReceiver<crosapi::mojom::DiagnosticsService> receiver) = 0;
private:
static Factory* test_factory_;
};
DiagnosticsServiceAsh();
DiagnosticsServiceAsh(const DiagnosticsServiceAsh&) = delete;
DiagnosticsServiceAsh& operator=(const DiagnosticsServiceAsh&) = delete;
~DiagnosticsServiceAsh() override;
void BindReceiver(
mojo::PendingReceiver<crosapi::mojom::DiagnosticsService> receiver);
private:
// Ensures that |service_| created and connected to the
// CrosHealthdDiagnosticsService.
cros_healthd::mojom::CrosHealthdDiagnosticsService* GetService();
void OnDisconnect();
void GetAvailableRoutines(GetAvailableRoutinesCallback callback) override;
void GetRoutineUpdate(int32_t id,
crosapi::mojom::DiagnosticsRoutineCommandEnum command,
bool include_output,
GetRoutineUpdateCallback callback) override;
void RunAcPowerRoutine(
crosapi::mojom::DiagnosticsAcPowerStatusEnum expected_status,
const std::optional<std::string>& expected_power_type,
RunAcPowerRoutineCallback callback) override;
void RunAudioDriverRoutine(RunAudioDriverRoutineCallback callback) override;
void RunBatteryCapacityRoutine(
RunBatteryCapacityRoutineCallback callback) override;
void RunBatteryChargeRoutine(
uint32_t length_seconds,
uint32_t minimum_charge_percent_required,
RunBatteryChargeRoutineCallback callback) override;
void RunBatteryDischargeRoutine(
uint32_t length_seconds,
uint32_t maximum_discharge_percent_allowed,
RunBatteryDischargeRoutineCallback callback) override;
void RunBatteryHealthRoutine(
RunBatteryHealthRoutineCallback callback) override;
void RunBluetoothDiscoveryRoutine(
RunBluetoothDiscoveryRoutineCallback) override;
void RunBluetoothPairingRoutine(
const std::string& peripheral_id,
RunBluetoothPairingRoutineCallback callback) override;
void RunBluetoothPowerRoutine(RunBluetoothPowerRoutineCallback) override;
void RunBluetoothScanningRoutine(
uint32_t length_seconds,
RunBluetoothScanningRoutineCallback callback) override;
void RunCpuCacheRoutine(uint32_t length_seconds,
RunCpuCacheRoutineCallback callback) override;
void RunCpuStressRoutine(uint32_t length_seconds,
RunCpuStressRoutineCallback callback) override;
void RunDiskReadRoutine(
crosapi::mojom::DiagnosticsDiskReadRoutineTypeEnum type,
uint32_t length_seconds,
uint32_t file_size_mb,
RunDiskReadRoutineCallback callback) override;
void RunDnsResolutionRoutine(
RunDnsResolutionRoutineCallback callback) override;
void RunDnsResolverPresentRoutine(
RunDnsResolverPresentRoutineCallback callback) override;
void RunEmmcLifetimeRoutine(RunEmmcLifetimeRoutineCallback callback) override;
void RunFanRoutine(RunFanRoutineCallback callback) override;
void RunFingerprintAliveRoutine(
RunFingerprintAliveRoutineCallback callback) override;
void RunFloatingPointAccuracyRoutine(
uint32_t length_seconds,
RunFloatingPointAccuracyRoutineCallback callback) override;
void RunGatewayCanBePingedRoutine(
RunGatewayCanBePingedRoutineCallback callback) override;
void RunLanConnectivityRoutine(
RunLanConnectivityRoutineCallback callback) override;
void RunMemoryRoutine(RunMemoryRoutineCallback callback) override;
void RunNvmeSelfTestRoutine(
crosapi::mojom::DiagnosticsNvmeSelfTestTypeEnum nvme_self_test_type,
RunNvmeSelfTestRoutineCallback callback) override;
void DEPRECATED_RunNvmeWearLevelRoutine(
uint32_t wear_level_threshold,
DEPRECATED_RunNvmeWearLevelRoutineCallback callback) override;
void RunPrimeSearchRoutine(uint32_t length_seconds,
RunPrimeSearchRoutineCallback callback) override;
void RunSensitiveSensorRoutine(
RunSensitiveSensorRoutineCallback callback) override;
void RunSignalStrengthRoutine(
RunSignalStrengthRoutineCallback callback) override;
void RunSmartctlCheckRoutine(
crosapi::mojom::UInt32ValuePtr percentage_used_threshold,
RunSmartctlCheckRoutineCallback callback) override;
void RunUfsLifetimeRoutine(RunUfsLifetimeRoutineCallback callback) override;
void RunPowerButtonRoutine(uint32_t timeout_seconds,
RunPowerButtonRoutineCallback callback) override;
// Pointer to real implementation.
mojo::Remote<cros_healthd::mojom::CrosHealthdDiagnosticsService> service_;
// We must destroy |receiver_| before destroying |service_|, so we will close
// interface pipe before destroying pending response callbacks owned by
// |service_|. It is an error to drop response callbacks which still
// correspond to an open interface pipe.
//
// Support any number of connections.
mojo::ReceiverSet<crosapi::mojom::DiagnosticsService> receivers_;
};
} // namespace ash
#endif // CHROMEOS_ASH_COMPONENTS_TELEMETRY_EXTENSION_DIAGNOSTICS_DIAGNOSTICS_SERVICE_ASH_H_
|