diff options
Diffstat (limited to 'fastboot/device/commands.cpp')
-rw-r--r-- | fastboot/device/commands.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/fastboot/device/commands.cpp b/fastboot/device/commands.cpp index e91598d01..a2336bf7b 100644 --- a/fastboot/device/commands.cpp +++ b/fastboot/device/commands.cpp @@ -28,6 +28,7 @@ #include <cutils/android_reboot.h> #include <ext4_utils/wipe.h> #include <fs_mgr.h> +#include <libgsi/libgsi.h> #include <liblp/builder.h> #include <liblp/liblp.h> #include <uuid/uuid.h> @@ -460,3 +461,22 @@ bool UpdateSuperHandler(FastbootDevice* device, const std::vector<std::string>& bool wipe = (args.size() >= 3 && args[2] == "wipe"); return UpdateSuper(device, args[1], wipe); } + +bool GsiHandler(FastbootDevice* device, const std::vector<std::string>& args) { + if (!android::gsi::IsGsiInstalled()) { + return device->WriteStatus(FastbootResult::FAIL, "No GSI is installed"); + } + if (args.size() != 2) { + return device->WriteFail("Invalid arguments"); + } + if (args[1] == "wipe") { + if (!android::gsi::UninstallGsi()) { + return device->WriteStatus(FastbootResult::FAIL, strerror(errno)); + } + } else if (args[1] == "disable") { + if (!android::gsi::DisableGsi()) { + return device->WriteStatus(FastbootResult::FAIL, strerror(errno)); + } + } + return device->WriteStatus(FastbootResult::OKAY, "Success"); +} |