diff options
author | Tao Bao <tbao@google.com> | 2019-07-10 23:09:58 +0200 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2019-07-10 23:09:58 +0200 |
commit | bf574061106ebb3a0f2e8b2bba90a4f2ea0b3a8c (patch) | |
tree | 6cce97f4c06f7f984a2ec20a920ca097ae60114d | |
parent | Merge "Add a new key_pressed_mutex" am: 33bb113af2 (diff) | |
parent | Merge "minadbd sends heartbeat to rescue service for getprop command." (diff) | |
download | android_bootable_recovery-bf574061106ebb3a0f2e8b2bba90a4f2ea0b3a8c.tar android_bootable_recovery-bf574061106ebb3a0f2e8b2bba90a4f2ea0b3a8c.tar.gz android_bootable_recovery-bf574061106ebb3a0f2e8b2bba90a4f2ea0b3a8c.tar.bz2 android_bootable_recovery-bf574061106ebb3a0f2e8b2bba90a4f2ea0b3a8c.tar.lz android_bootable_recovery-bf574061106ebb3a0f2e8b2bba90a4f2ea0b3a8c.tar.xz android_bootable_recovery-bf574061106ebb3a0f2e8b2bba90a4f2ea0b3a8c.tar.zst android_bootable_recovery-bf574061106ebb3a0f2e8b2bba90a4f2ea0b3a8c.zip |
-rw-r--r-- | install/adb_install.cpp | 4 | ||||
-rw-r--r-- | minadbd/minadbd_services.cpp | 8 | ||||
-rw-r--r-- | minadbd/minadbd_types.h | 1 |
3 files changed, 12 insertions, 1 deletions
diff --git a/install/adb_install.cpp b/install/adb_install.cpp index 37280a34c..ed664429a 100644 --- a/install/adb_install.cpp +++ b/install/adb_install.cpp @@ -367,11 +367,13 @@ InstallResult ApplyFromAdb(Device* device, bool rescue_mode, Device::BuiltinActi "\n\nNow send the package you want to apply\n" "to the device with \"adb sideload <filename>\"...\n"); } else { - ui->Print("\n\nWaiting for rescue commands...\n"); command_map.emplace(MinadbdCommand::kWipeData, [&device]() { bool result = WipeData(device, false); return std::make_pair(result, true); }); + command_map.emplace(MinadbdCommand::kNoOp, []() { return std::make_pair(true, true); }); + + ui->Print("\n\nWaiting for rescue commands...\n"); } CreateMinadbdServiceAndExecuteCommands(ui, command_map, rescue_mode); diff --git a/minadbd/minadbd_services.cpp b/minadbd/minadbd_services.cpp index 5792c7a17..c31afbe06 100644 --- a/minadbd/minadbd_services.cpp +++ b/minadbd/minadbd_services.cpp @@ -189,6 +189,14 @@ static void RescueGetpropHostService(unique_fd sfd, const std::string& prop) { if (!android::base::WriteFully(sfd, result.data(), result.size())) { exit(kMinadbdHostSocketIOError); } + + // Send heartbeat signal to keep the rescue service alive. + if (!WriteCommandToFd(MinadbdCommand::kNoOp, minadbd_socket)) { + exit(kMinadbdSocketIOError); + } + if (MinadbdCommandStatus status; !WaitForCommandStatus(minadbd_socket, &status)) { + exit(kMinadbdMessageFormatError); + } } // Reboots into the given target. We don't reboot directly from minadbd, but going through recovery diff --git a/minadbd/minadbd_types.h b/minadbd/minadbd_types.h index 99fd45e83..002523f1f 100644 --- a/minadbd/minadbd_types.h +++ b/minadbd/minadbd_types.h @@ -53,6 +53,7 @@ enum class MinadbdCommand : uint32_t { kRebootRescue = 6, kWipeCache = 7, kWipeData = 8, + kNoOp = 9, // Last but invalid command. kError, |