adb: Recognize rescue mode.
This CL adds client support to recognize the rescue mode (which will be served by recovery image). It also allows waiting for a device to enter rescue mode. The support for the actual rescue commands will be added in follow-up CLs. Bug: 128415917 Test: `adb devices` recognizes devices under rescue mode. Test: `adb wait-for-rescue` waits for device to be in rescue mode. Change-Id: I367d7339fe68006aba09a1e3db6370d472296676
This commit is contained in:
parent
8a9a1c5056
commit
55d407ec4a
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 <serial-number>\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;
|
||||
}
|
||||
|
|
|
@ -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") {
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue