diff --git a/adb/adb.cpp b/adb/adb.cpp index e417f05e3..2dd22b38b 100644 --- a/adb/adb.cpp +++ b/adb/adb.cpp @@ -280,6 +280,9 @@ void parse_banner(const std::string& banner, atransport* t) { } else if (type == "sideload") { D("setting connection_state to kCsSideload"); t->SetConnectionState(kCsSideload); + } else if (type == "rescue") { + D("setting connection_state to kCsRescue"); + t->SetConnectionState(kCsRescue); } else { D("setting connection_state to kCsHost"); t->SetConnectionState(kCsHost); diff --git a/adb/adb.h b/adb/adb.h index c60dcbc1c..3a6f059b8 100644 --- a/adb/adb.h +++ b/adb/adb.h @@ -107,6 +107,7 @@ enum ConnectionState { kCsHost, kCsRecovery, kCsSideload, + kCsRescue, }; inline bool ConnectionStateIsOnline(ConnectionState state) { @@ -116,6 +117,7 @@ inline bool ConnectionStateIsOnline(ConnectionState state) { case kCsHost: case kCsRecovery: case kCsSideload: + case kCsRescue: return true; default: return false; diff --git a/adb/client/commandline.cpp b/adb/client/commandline.cpp index 43a3e5e94..f25955d85 100644 --- a/adb/client/commandline.cpp +++ b/adb/client/commandline.cpp @@ -190,7 +190,7 @@ static void help() { "scripting:\n" " wait-for[-TRANSPORT]-STATE\n" " wait for device to be in the given state\n" - " STATE: device, recovery, sideload, bootloader, or disconnect\n" + " STATE: device, recovery, rescue, sideload, bootloader, or disconnect\n" " TRANSPORT: usb, local, or any [default=any]\n" " get-state print offline | bootloader | device\n" " get-serialno print \n" @@ -1037,11 +1037,12 @@ static bool wait_for_device(const char* service, } if (components[3] != "any" && components[3] != "bootloader" && components[3] != "device" && - components[3] != "recovery" && components[3] != "sideload" && + components[3] != "recovery" && components[3] != "rescue" && components[3] != "sideload" && components[3] != "disconnect") { fprintf(stderr, "adb: unknown state %s; " - "expected 'any', 'bootloader', 'device', 'recovery', 'sideload', or 'disconnect'\n", + "expected 'any', 'bootloader', 'device', 'recovery', 'rescue', 'sideload', or " + "'disconnect'\n", components[3].c_str()); return false; } diff --git a/adb/services.cpp b/adb/services.cpp index cf346bade..335ffc49a 100644 --- a/adb/services.cpp +++ b/adb/services.cpp @@ -227,6 +227,8 @@ asocket* host_service_to_socket(std::string_view name, std::string_view serial, sinfo->state = kCsDevice; } else if (name == "-recovery") { sinfo->state = kCsRecovery; + } else if (name == "-rescue") { + sinfo->state = kCsRescue; } else if (name == "-sideload") { sinfo->state = kCsSideload; } else if (name == "-bootloader") { diff --git a/adb/transport.cpp b/adb/transport.cpp index 15c3a9a32..841865afc 100644 --- a/adb/transport.cpp +++ b/adb/transport.cpp @@ -1012,6 +1012,8 @@ std::string atransport::connection_state_name() const { return "host"; case kCsRecovery: return "recovery"; + case kCsRescue: + return "rescue"; case kCsNoPerm: return UsbNoPermissionsShortHelpText(); case kCsSideload: