Add a fastboot command to show GSI status

The command will be used by RMA tool to skip
device wiping when it is already in GSI mode.

This change also makes it easier to add more
gsi commands in the future without needing to
update the host side tool (fastboot).

Bug: 298130522
Bug: 298138572
Test: 1. reboot into fastboot mode
      2. fastboot gsi status
Change-Id: Ic81f89a93b854f9ec70aebe2d209bfd1f98e3645
This commit is contained in:
Chun-Wei Wang 2023-08-30 07:55:43 +00:00
parent 47fc3df9a0
commit 671a2a551a
2 changed files with 16 additions and 7 deletions

View file

@ -661,6 +661,17 @@ bool GsiHandler(FastbootDevice* device, const std::vector<std::string>& args) {
if (!android::gsi::DisableGsi()) {
return device->WriteStatus(FastbootResult::FAIL, strerror(errno));
}
} else if (args[1] == "status") {
std::string active_dsu;
if (!android::gsi::IsGsiRunning()) {
device->WriteInfo("Not running");
} else if (!android::gsi::GetActiveDsu(&active_dsu)) {
return device->WriteFail(strerror(errno));
} else {
device->WriteInfo("Running active DSU: " + active_dsu);
}
} else {
return device->WriteFail("Invalid arguments");
}
return device->WriteStatus(FastbootResult::OKAY, "Success");
}

View file

@ -2579,14 +2579,12 @@ int FastBootTool::Main(int argc, char* argv[]) {
std::make_unique<ResizeTask>(fp.get(), partition, size, fp->slot_override);
resize_task->Run();
} else if (command == "gsi") {
std::string arg = next_arg(&args);
if (arg == "wipe") {
fb->RawCommand("gsi:wipe", "wiping GSI");
} else if (arg == "disable") {
fb->RawCommand("gsi:disable", "disabling GSI");
} else {
syntax_error("expected 'wipe' or 'disable'");
if (args.empty()) syntax_error("invalid gsi command");
std::string cmd("gsi");
while (!args.empty()) {
cmd += ":" + next_arg(&args);
}
fb->RawCommand(cmd, "");
} else if (command == "wipe-super") {
std::string image;
if (args.empty()) {