| // Copyright 2022 The ChromiumOS Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef RMAD_DAEMON_DAEMON_CALLBACK_H_ | |
| #define RMAD_DAEMON_DAEMON_CALLBACK_H_ | |
| #include <optional> | |
| #include <string> | |
| #include <base/functional/callback.h> | |
| #include <base/functional/callback_helpers.h> | |
| #include <base/memory/scoped_refptr.h> | |
| #include "rmad/proto_bindings/rmad.pb.h" | |
| #include "rmad/utils/futility_utils.h" | |
| namespace rmad { | |
| struct DiagnosticsAppInfo { | |
| std::string swbn_path; | |
| std::string crx_path; | |
| }; | |
| using HardwareVerificationSignalCallback = | |
| base::RepeatingCallback<void(const HardwareVerificationResult&)>; | |
| using UpdateRoFirmwareSignalCallback = | |
| base::RepeatingCallback<void(UpdateRoFirmwareStatus)>; | |
| using CalibrationOverallSignalCallback = | |
| base::RepeatingCallback<void(CalibrationOverallStatus)>; | |
| using CalibrationComponentSignalCallback = | |
| base::RepeatingCallback<void(CalibrationComponentStatus)>; | |
| using ProvisionSignalCallback = | |
| base::RepeatingCallback<void(const ProvisionStatus&)>; | |
| using FinalizeSignalCallback = | |
| base::RepeatingCallback<void(const FinalizeStatus&)>; | |
| using WriteProtectSignalCallback = base::RepeatingCallback<void(bool)>; | |
| using PowerCableSignalCallback = base::RepeatingCallback<void(bool)>; | |
| using ExternalDiskSignalCallback = base::RepeatingCallback<void(bool)>; | |
| using ExecuteMountAndWriteLogCallback = base::RepeatingCallback<void( | |
| uint8_t, | |
| const std::string&, | |
| const std::string&, | |
| const std::string&, | |
| const std::string&, | |
| base::OnceCallback<void(const std::optional<std::string>&)>)>; | |
| using ExecuteMountAndCopyFirmwareUpdaterCallback = | |
| base::RepeatingCallback<void(uint8_t, base::OnceCallback<void(bool)>)>; | |
| using ExecuteMountAndCopyDiagnosticsAppCallback = base::RepeatingCallback<void( | |
| uint8_t, | |
| base::OnceCallback<void(const std::optional<DiagnosticsAppInfo>&)>)>; | |
| using ExecuteRebootEcCallback = | |
| base::RepeatingCallback<void(base::OnceCallback<void(bool)>)>; | |
| using ExecuteRequestRmaPowerwashCallback = | |
| base::RepeatingCallback<void(base::OnceCallback<void(bool)>)>; | |
| using ExecuteRequestBatteryCutoffCallback = | |
| base::RepeatingCallback<void(base::OnceCallback<void(bool)>)>; | |
| using ExecuteGetFlashInfoCallback = base::RepeatingCallback<void( | |
| base::OnceCallback<void(const std::optional<FlashInfo>&)>)>; | |
| #define DECLARE_CALLBACK(type, var) \ | |
| public: \ | |
| type Get##type() const { \ | |
| return var; \ | |
| } \ | |
| void Set##type(type callback) { \ | |
| var = callback; \ | |
| } \ | |
| \ | |
| private: \ | |
| type var = base::DoNothing() | |
| // A collection of callbacks for state handlers to use. | |
| class DaemonCallback : public base::RefCounted<DaemonCallback> { | |
| public: | |
| DaemonCallback() = default; | |
| protected: | |
| friend class base::RefCounted<DaemonCallback>; | |
| virtual ~DaemonCallback() = default; | |
| // Callbacks as private members and their public getter/setter. | |
| DECLARE_CALLBACK(HardwareVerificationSignalCallback, | |
| hardware_verification_signal_callback); | |
| DECLARE_CALLBACK(UpdateRoFirmwareSignalCallback, | |
| update_ro_firmware_signal_callback_); | |
| DECLARE_CALLBACK(CalibrationOverallSignalCallback, | |
| calibration_overall_signal_callback_); | |
| DECLARE_CALLBACK(CalibrationComponentSignalCallback, | |
| calibration_component_signal_callback_); | |
| DECLARE_CALLBACK(ProvisionSignalCallback, provision_signal_callback_); | |
| DECLARE_CALLBACK(FinalizeSignalCallback, finalize_signal_callback_); | |
| DECLARE_CALLBACK(WriteProtectSignalCallback, write_protect_signal_callback_); | |
| DECLARE_CALLBACK(PowerCableSignalCallback, power_cable_signal_callback_); | |
| DECLARE_CALLBACK(ExternalDiskSignalCallback, external_disk_signal_callback_); | |
| DECLARE_CALLBACK(ExecuteMountAndWriteLogCallback, | |
| execute_mount_and_write_log_callback_); | |
| DECLARE_CALLBACK(ExecuteMountAndCopyFirmwareUpdaterCallback, | |
| execute_mount_and_copy_firmware_updater_callback_); | |
| DECLARE_CALLBACK(ExecuteMountAndCopyDiagnosticsAppCallback, | |
| execute_mount_and_copy_diagnostics_app_callback_); | |
| DECLARE_CALLBACK(ExecuteRebootEcCallback, execute_reboot_ec_callback_); | |
| DECLARE_CALLBACK(ExecuteRequestRmaPowerwashCallback, | |
| execute_request_rma_powerwash_callback_); | |
| DECLARE_CALLBACK(ExecuteRequestBatteryCutoffCallback, | |
| execute_request_battery_cutoff_callback_); | |
| DECLARE_CALLBACK(ExecuteGetFlashInfoCallback, | |
| execute_get_flash_name_callback_); | |
| }; | |
| } // namespace rmad | |
| #endif // RMAD_DAEMON_DAEMON_CALLBACK_H_ |