blob: 25d57c7ac005b13698ad1e4c72cf9e4db7956358 [file] [log] [blame]
// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef MINIOS_MINIOS_H_
#define MINIOS_MINIOS_H_
#include <memory>
#include <string>
#include "minios/minios_interface.h"
#include "minios/network_manager_interface.h"
#include "minios/process_manager.h"
#include "minios/screen_controller.h"
#include "minios/state_reporter_interface.h"
#include "minios/update_engine_proxy.h"
namespace minios {
extern const char kDebugConsole[];
extern const char kLogFile[];
class MiniOs : public MiniOsInterface {
public:
explicit MiniOs(std::shared_ptr<UpdateEngineProxy> update_engine_proxy,
std::shared_ptr<NetworkManagerInterface> network_manager);
virtual ~MiniOs() = default;
// Runs the miniOS flow.
virtual int Run();
void SetStateReporter(StateReporterInterface* state_reporter);
// `MiniOsInterface` overrides.
bool GetState(State* state_out, brillo::ErrorPtr* error) override;
bool NextScreen(brillo::ErrorPtr* error) override;
void PressKey(uint32_t in_keycode) override;
bool PrevScreen(brillo::ErrorPtr* error) override;
bool Reset(brillo::ErrorPtr* error) override;
void SetNetworkCredentials(const std::string& in_ssid,
const std::string& in_passphrase) override;
void StartRecovery(const std::string& in_ssid,
const std::string& in_passphrase) override;
private:
MiniOs(const MiniOs&) = delete;
MiniOs& operator=(const MiniOs&) = delete;
std::shared_ptr<UpdateEngineProxy> update_engine_proxy_;
std::shared_ptr<NetworkManagerInterface> network_manager_;
ProcessManager process_manager_;
std::shared_ptr<DrawInterface> draw_utils_;
ScreenController screens_controller_;
};
} // namespace minios
#endif // MINIOS_MINIOS_H__