Loading fastboot/constants.h +1 −0 Original line number Diff line number Diff line Loading @@ -64,3 +64,4 @@ #define FB_VAR_OFF_MODE_CHARGE_STATE "off-mode-charge" #define FB_VAR_BATTERY_VOLTAGE "battery-voltage" #define FB_VAR_BATTERY_SOC_OK "battery-soc-ok" #define FB_VAR_SUPER_PARTITION_NAME "super-partition-name" fastboot/device/commands.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -99,7 +99,8 @@ bool GetVarHandler(FastbootDevice* device, const std::vector<std::string>& args) {FB_VAR_OFF_MODE_CHARGE_STATE, {GetOffModeChargeState, nullptr}}, {FB_VAR_BATTERY_VOLTAGE, {GetBatteryVoltage, nullptr}}, {FB_VAR_BATTERY_SOC_OK, {GetBatterySoCOk, nullptr}}, {FB_VAR_HW_REVISION, {GetHardwareRevision, nullptr}}}; {FB_VAR_HW_REVISION, {GetHardwareRevision, nullptr}}, {FB_VAR_SUPER_PARTITION_NAME, {GetSuperPartitionName, nullptr}}}; if (args.size() < 2) { return device->WriteFail("Missing argument"); Loading fastboot/device/variables.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -24,7 +24,9 @@ #include <android-base/stringprintf.h> #include <android-base/strings.h> #include <ext4_utils/ext4_utils.h> #include <fs_mgr.h> #include <healthhalutils/HealthHalUtils.h> #include <liblp/liblp.h> #include "fastboot_device.h" #include "flashing.h" Loading @@ -35,6 +37,7 @@ using ::android::hardware::boot::V1_0::Slot; using ::android::hardware::fastboot::V1_0::FileSystemType; using ::android::hardware::fastboot::V1_0::Result; using ::android::hardware::fastboot::V1_0::Status; using namespace android::fs_mgr; constexpr char kFastbootProtocolVersion[] = "0.4"; Loading Loading @@ -417,3 +420,10 @@ bool GetHardwareRevision(FastbootDevice* /* device */, const std::vector<std::st *message = android::base::GetProperty("ro.revision", ""); return true; } bool GetSuperPartitionName(FastbootDevice* device, const std::vector<std::string>& /* args */, std::string* message) { uint32_t slot_number = SlotNumberForSlotSuffix(device->GetCurrentSlot()); *message = fs_mgr_get_super_partition_name(slot_number); return true; } fastboot/device/variables.h +2 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,8 @@ bool GetBatteryVoltage(FastbootDevice* device, const std::vector<std::string>& a std::string* message); bool GetBatterySoCOk(FastbootDevice* device, const std::vector<std::string>& args, std::string* message); bool GetSuperPartitionName(FastbootDevice* device, const std::vector<std::string>& args, std::string* message); // Helpers for getvar all. std::vector<std::vector<std::string>> GetAllPartitionArgsWithSlot(FastbootDevice* device); Loading fastboot/fastboot.cpp +7 −25 Original line number Diff line number Diff line Loading @@ -1129,25 +1129,6 @@ static bool is_userspace_fastboot() { return fb->GetVar("is-userspace", &value) == fastboot::SUCCESS && value == "yes"; } static bool if_partition_exists(const std::string& partition, const std::string& slot) { std::string has_slot; std::string partition_name = partition; if (fb->GetVar("has-slot:" + partition, &has_slot) == fastboot::SUCCESS && has_slot == "yes") { if (slot == "") { std::string current_slot = get_current_slot(); if (current_slot == "") { die("Failed to identify current slot"); } partition_name += "_" + current_slot; } else { partition_name += "_" + slot; } } std::string partition_size; return fb->GetVar("partition-size:" + partition_name, &partition_size) == fastboot::SUCCESS; } static void reboot_to_userspace_fastboot() { fb->RebootTo("fastboot"); Loading Loading @@ -1307,10 +1288,6 @@ void FlashAllTool::FlashImage(const Image& image, const std::string& slot, fastb } void FlashAllTool::UpdateSuperPartition() { if (!if_partition_exists("super", "")) { return; } int fd = source_.OpenFile("super_empty.img"); if (fd < 0) { return; Loading @@ -1321,9 +1298,14 @@ void FlashAllTool::UpdateSuperPartition() { if (!is_userspace_fastboot()) { die("Failed to boot into userspace; one or more components might be unbootable."); } fb->Download("super", fd, get_file_size(fd)); std::string command = "update-super:super"; std::string super_name; if (fb->GetVar("super-partition-name", &super_name) != fastboot::RetCode::SUCCESS) { super_name = "super"; } fb->Download(super_name, fd, get_file_size(fd)); std::string command = "update-super:" + super_name; if (wipe_) { command += ":wipe"; } Loading Loading
fastboot/constants.h +1 −0 Original line number Diff line number Diff line Loading @@ -64,3 +64,4 @@ #define FB_VAR_OFF_MODE_CHARGE_STATE "off-mode-charge" #define FB_VAR_BATTERY_VOLTAGE "battery-voltage" #define FB_VAR_BATTERY_SOC_OK "battery-soc-ok" #define FB_VAR_SUPER_PARTITION_NAME "super-partition-name"
fastboot/device/commands.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -99,7 +99,8 @@ bool GetVarHandler(FastbootDevice* device, const std::vector<std::string>& args) {FB_VAR_OFF_MODE_CHARGE_STATE, {GetOffModeChargeState, nullptr}}, {FB_VAR_BATTERY_VOLTAGE, {GetBatteryVoltage, nullptr}}, {FB_VAR_BATTERY_SOC_OK, {GetBatterySoCOk, nullptr}}, {FB_VAR_HW_REVISION, {GetHardwareRevision, nullptr}}}; {FB_VAR_HW_REVISION, {GetHardwareRevision, nullptr}}, {FB_VAR_SUPER_PARTITION_NAME, {GetSuperPartitionName, nullptr}}}; if (args.size() < 2) { return device->WriteFail("Missing argument"); Loading
fastboot/device/variables.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -24,7 +24,9 @@ #include <android-base/stringprintf.h> #include <android-base/strings.h> #include <ext4_utils/ext4_utils.h> #include <fs_mgr.h> #include <healthhalutils/HealthHalUtils.h> #include <liblp/liblp.h> #include "fastboot_device.h" #include "flashing.h" Loading @@ -35,6 +37,7 @@ using ::android::hardware::boot::V1_0::Slot; using ::android::hardware::fastboot::V1_0::FileSystemType; using ::android::hardware::fastboot::V1_0::Result; using ::android::hardware::fastboot::V1_0::Status; using namespace android::fs_mgr; constexpr char kFastbootProtocolVersion[] = "0.4"; Loading Loading @@ -417,3 +420,10 @@ bool GetHardwareRevision(FastbootDevice* /* device */, const std::vector<std::st *message = android::base::GetProperty("ro.revision", ""); return true; } bool GetSuperPartitionName(FastbootDevice* device, const std::vector<std::string>& /* args */, std::string* message) { uint32_t slot_number = SlotNumberForSlotSuffix(device->GetCurrentSlot()); *message = fs_mgr_get_super_partition_name(slot_number); return true; }
fastboot/device/variables.h +2 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,8 @@ bool GetBatteryVoltage(FastbootDevice* device, const std::vector<std::string>& a std::string* message); bool GetBatterySoCOk(FastbootDevice* device, const std::vector<std::string>& args, std::string* message); bool GetSuperPartitionName(FastbootDevice* device, const std::vector<std::string>& args, std::string* message); // Helpers for getvar all. std::vector<std::vector<std::string>> GetAllPartitionArgsWithSlot(FastbootDevice* device); Loading
fastboot/fastboot.cpp +7 −25 Original line number Diff line number Diff line Loading @@ -1129,25 +1129,6 @@ static bool is_userspace_fastboot() { return fb->GetVar("is-userspace", &value) == fastboot::SUCCESS && value == "yes"; } static bool if_partition_exists(const std::string& partition, const std::string& slot) { std::string has_slot; std::string partition_name = partition; if (fb->GetVar("has-slot:" + partition, &has_slot) == fastboot::SUCCESS && has_slot == "yes") { if (slot == "") { std::string current_slot = get_current_slot(); if (current_slot == "") { die("Failed to identify current slot"); } partition_name += "_" + current_slot; } else { partition_name += "_" + slot; } } std::string partition_size; return fb->GetVar("partition-size:" + partition_name, &partition_size) == fastboot::SUCCESS; } static void reboot_to_userspace_fastboot() { fb->RebootTo("fastboot"); Loading Loading @@ -1307,10 +1288,6 @@ void FlashAllTool::FlashImage(const Image& image, const std::string& slot, fastb } void FlashAllTool::UpdateSuperPartition() { if (!if_partition_exists("super", "")) { return; } int fd = source_.OpenFile("super_empty.img"); if (fd < 0) { return; Loading @@ -1321,9 +1298,14 @@ void FlashAllTool::UpdateSuperPartition() { if (!is_userspace_fastboot()) { die("Failed to boot into userspace; one or more components might be unbootable."); } fb->Download("super", fd, get_file_size(fd)); std::string command = "update-super:super"; std::string super_name; if (fb->GetVar("super-partition-name", &super_name) != fastboot::RetCode::SUCCESS) { super_name = "super"; } fb->Download(super_name, fd, get_file_size(fd)); std::string command = "update-super:" + super_name; if (wipe_) { command += ":wipe"; } Loading