From 4785287a0043ddea2f784433d8a4fc8a168efc79 Mon Sep 17 00:00:00 2001 From: Hridya Valsaraju Date: Wed, 26 Sep 2018 13:08:16 -0700 Subject: [PATCH] Support fastboot variable 'variant'. Bug: 79480454 Bug: 78793464 Test: fastboot getvar variant Change-Id: Iefef82c147d8405318c793ad0a73f00674bbb63d --- fastboot/constants.h | 1 + fastboot/device/commands.cpp | 1 + fastboot/device/variables.cpp | 21 +++++++++++++++++++++ fastboot/device/variables.h | 1 + 4 files changed, 24 insertions(+) diff --git a/fastboot/constants.h b/fastboot/constants.h index 2a68a2b03..ad2e1a173 100644 --- a/fastboot/constants.h +++ b/fastboot/constants.h @@ -60,3 +60,4 @@ #define FB_VAR_IS_LOGICAL "is-logical" #define FB_VAR_IS_USERSPACE "is-userspace" #define FB_VAR_HW_REVISION "hw-revision" +#define FB_VAR_VARIANT "variant" diff --git a/fastboot/device/commands.cpp b/fastboot/device/commands.cpp index 48c935a73..f69f06bc5 100644 --- a/fastboot/device/commands.cpp +++ b/fastboot/device/commands.cpp @@ -82,6 +82,7 @@ bool GetVarHandler(FastbootDevice* device, const std::vector& args) {FB_VAR_VERSION_BASEBAND, {GetBasebandVersion, nullptr}}, {FB_VAR_PRODUCT, {GetProduct, nullptr}}, {FB_VAR_SERIALNO, {GetSerial, nullptr}}, + {FB_VAR_VARIANT, {GetVariant, nullptr}}, {FB_VAR_SECURE, {GetSecure, nullptr}}, {FB_VAR_UNLOCKED, {GetUnlocked, nullptr}}, {FB_VAR_MAX_DOWNLOAD_SIZE, {GetMaxDownloadSize, nullptr}}, diff --git a/fastboot/device/variables.cpp b/fastboot/device/variables.cpp index 75352489e..9fcabb76c 100644 --- a/fastboot/device/variables.cpp +++ b/fastboot/device/variables.cpp @@ -74,6 +74,27 @@ bool GetSecure(FastbootDevice* /* device */, const std::vector& /* return true; } +bool GetVariant(FastbootDevice* device, const std::vector& /* args */, + std::string* message) { + auto fastboot_hal = device->fastboot_hal(); + if (!fastboot_hal) { + *message = "Fastboot HAL not found"; + return false; + } + + Result ret; + auto ret_val = fastboot_hal->getVariant([&](std::string device_variant, Result result) { + *message = device_variant; + ret = result; + }); + if (!ret_val.isOk() || ret.status != Status::SUCCESS) { + *message = "Unable to get device variant"; + return false; + } + + return true; +} + bool GetCurrentSlot(FastbootDevice* device, const std::vector& /* args */, std::string* message) { std::string suffix = device->GetCurrentSlot(); diff --git a/fastboot/device/variables.h b/fastboot/device/variables.h index 63f267024..0546942a8 100644 --- a/fastboot/device/variables.h +++ b/fastboot/device/variables.h @@ -52,6 +52,7 @@ bool GetIsUserspace(FastbootDevice* device, const std::vector& args std::string* message); bool GetHardwareRevision(FastbootDevice* device, const std::vector& args, std::string* message); +bool GetVariant(FastbootDevice* device, const std::vector& args, std::string* message); // Helpers for getvar all. std::vector> GetAllPartitionArgsWithSlot(FastbootDevice* device);