blob: a07145b7969241880fea7f49a29a012380075628 [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.
#include "minios/minios.h"
#include <string>
#include <utility>
#include <base/logging.h>
#include <brillo/message_loops/message_loop.h>
#include "minios/process_manager.h"
#include "minios/recovery_installer.h"
#include "minios/state_reporter_interface.h"
namespace minios {
const char kDebugConsole[] = "/dev/pts/2";
const char kLogFile[] = "/log/recovery.log";
MiniOs::MiniOs(std::shared_ptr<UpdateEngineProxy> update_engine_proxy,
std::shared_ptr<NetworkManagerInterface> network_manager)
: update_engine_proxy_(update_engine_proxy),
network_manager_(network_manager),
draw_utils_(std::make_shared<DrawUtils>(&process_manager_)),
screens_controller_(ScreenController(draw_utils_,
update_engine_proxy_,
network_manager_,
&process_manager_)) {}
int MiniOs::Run() {
LOG(INFO) << "Starting miniOS.";
if (!screens_controller_.Init()) {
LOG(ERROR) << "Screens init failed. Exiting.";
return 1;
}
return 0;
}
void MiniOs::SetStateReporter(StateReporterInterface* state_reporter) {
screens_controller_.SetStateReporter(state_reporter);
}
bool MiniOs::GetState(State* state_out, brillo::ErrorPtr* error) {
screens_controller_.GetState(state_out);
return true;
}
bool MiniOs::NextScreen(brillo::ErrorPtr* error) {
return screens_controller_.MoveForward(error);
}
void MiniOs::PressKey(uint32_t in_keycode) {
screens_controller_.PressKey(in_keycode);
}
bool MiniOs::PrevScreen(brillo::ErrorPtr* error) {
return screens_controller_.MoveBackward(error);
}
bool MiniOs::Reset(brillo::ErrorPtr* error) {
return screens_controller_.Reset(error);
}
void MiniOs::SetNetworkCredentials(const std::string& in_ssid,
const std::string& in_passphrase) {
screens_controller_.SeedNetworkCredentials(in_ssid, in_passphrase);
}
void MiniOs::StartRecovery(const std::string& in_ssid,
const std::string& in_passphrase) {
brillo::MessageLoop::current()->PostTask(
FROM_HERE, base::BindOnce(&ScreenController::StartRecovery,
base::Unretained(&screens_controller_), in_ssid,
in_passphrase));
}
} // namespace minios