Lines Matching refs:device
72 static bool IsSnapshotUpdateInProgress(FastbootDevice* device) { in IsSnapshotUpdateInProgress() argument
73 auto hal = device->boot1_1(); in IsSnapshotUpdateInProgress()
81 static bool IsProtectedPartitionDuringMerge(FastbootDevice* device, const std::string& name) { in IsProtectedPartitionDuringMerge() argument
87 return IsSnapshotUpdateInProgress(device); in IsProtectedPartitionDuringMerge()
90 static void GetAllVars(FastbootDevice* device, const std::string& name, in GetAllVars() argument
94 if (!handlers.get(device, std::vector<std::string>(), &message)) { in GetAllVars()
97 device->WriteInfo(android::base::StringPrintf("%s:%s", name.c_str(), message.c_str())); in GetAllVars()
101 auto all_args = handlers.get_all_args(device); in GetAllVars()
104 if (!handlers.get(device, args, &message)) { in GetAllVars()
108 device->WriteInfo(android::base::StringPrintf("%s:%s:%s", name.c_str(), arg_string.c_str(), in GetAllVars()
151 static bool GetVarAll(FastbootDevice* device) { in GetVarAll() argument
153 GetAllVars(device, name, handlers); in GetVarAll()
171 bool GetVarHandler(FastbootDevice* device, const std::vector<std::string>& args) { in GetVarHandler() argument
173 return device->WriteFail("Missing argument"); in GetVarHandler()
179 if (!found_special->second(device)) { in GetVarHandler()
182 return device->WriteOkay(""); in GetVarHandler()
188 return device->WriteFail("Unknown variable"); in GetVarHandler()
193 if (!found_variable->second.get(device, getvar_args, &message)) { in GetVarHandler()
194 return device->WriteFail(message); in GetVarHandler()
196 return device->WriteOkay(message); in GetVarHandler()
199 bool OemPostWipeData(FastbootDevice* device) { in OemPostWipeData() argument
200 auto fastboot_hal = device->fastboot_hal(); in OemPostWipeData()
207 device->WriteStatus(FastbootResult::OKAY, "Erasing succeeded"); in OemPostWipeData()
214 device->WriteStatus(FastbootResult::FAIL, status.getDescription()); in OemPostWipeData()
222 bool EraseHandler(FastbootDevice* device, const std::vector<std::string>& args) { in EraseHandler() argument
224 return device->WriteStatus(FastbootResult::FAIL, "Invalid arguments"); in EraseHandler()
228 return device->WriteStatus(FastbootResult::FAIL, "Erase is not allowed on locked devices"); in EraseHandler()
232 if (IsProtectedPartitionDuringMerge(device, partition_name)) { in EraseHandler()
234 return device->WriteFail(message); in EraseHandler()
238 if (!OpenPartition(device, partition_name, &handle)) { in EraseHandler()
239 return device->WriteStatus(FastbootResult::FAIL, "Partition doesn't exist"); in EraseHandler()
246 support_oem_postwipedata = OemPostWipeData(device); in EraseHandler()
250 return device->WriteStatus(FastbootResult::OKAY, "Erasing succeeded"); in EraseHandler()
256 return device->WriteStatus(FastbootResult::FAIL, "Erasing failed"); in EraseHandler()
259 bool OemCmdHandler(FastbootDevice* device, const std::vector<std::string>& args) { in OemCmdHandler() argument
260 auto fastboot_hal = device->fastboot_hal(); in OemCmdHandler()
262 return device->WriteStatus(FastbootResult::FAIL, "Unable to open fastboot HAL"); in OemCmdHandler()
267 return device->WriteStatus(FastbootResult::FAIL, "Unable to do oem postwipedata userdata"); in OemCmdHandler()
273 return device->WriteStatus(FastbootResult::FAIL, in OemCmdHandler()
277 device->WriteInfo(message); in OemCmdHandler()
278 return device->WriteStatus(FastbootResult::OKAY, message); in OemCmdHandler()
281 bool DownloadHandler(FastbootDevice* device, const std::vector<std::string>& args) { in DownloadHandler() argument
283 return device->WriteStatus(FastbootResult::FAIL, "size argument unspecified"); in DownloadHandler()
287 return device->WriteStatus(FastbootResult::FAIL, in DownloadHandler()
294 return device->WriteStatus(FastbootResult::FAIL, in DownloadHandler()
299 return device->WriteStatus(FastbootResult::FAIL, "Invalid size"); in DownloadHandler()
302 return device->WriteStatus(FastbootResult::FAIL, "Invalid size (0)"); in DownloadHandler()
304 device->download_data().resize(size); in DownloadHandler()
305 if (!device->WriteStatus(FastbootResult::DATA, android::base::StringPrintf("%08x", size))) { in DownloadHandler()
309 if (device->HandleData(true, &device->download_data())) { in DownloadHandler()
310 return device->WriteStatus(FastbootResult::OKAY, ""); in DownloadHandler()
314 return device->WriteStatus(FastbootResult::FAIL, "Couldn't download data"); in DownloadHandler()
317 bool SetActiveHandler(FastbootDevice* device, const std::vector<std::string>& args) { in SetActiveHandler() argument
319 return device->WriteStatus(FastbootResult::FAIL, "Missing slot argument"); in SetActiveHandler()
323 return device->WriteStatus(FastbootResult::FAIL, in SetActiveHandler()
330 return device->WriteStatus(FastbootResult::FAIL, "Bad slot suffix"); in SetActiveHandler()
334 auto boot_control_hal = device->boot_control_hal(); in SetActiveHandler()
336 return device->WriteStatus(FastbootResult::FAIL, in SetActiveHandler()
340 return device->WriteStatus(FastbootResult::FAIL, "Slot out of range"); in SetActiveHandler()
344 if (args[1] == device->GetCurrentSlot()) { in SetActiveHandler()
345 return device->WriteOkay(""); in SetActiveHandler()
349 if (auto hal11 = device->boot1_1()) { in SetActiveHandler()
352 return device->WriteFail("Cannot change slots while a snapshot update is in progress"); in SetActiveHandler()
362 device->WriteInfo( in SetActiveHandler()
373 device->set_active_slot(current_slot); in SetActiveHandler()
374 return device->WriteStatus(FastbootResult::OKAY, ""); in SetActiveHandler()
376 return device->WriteStatus(FastbootResult::FAIL, "Unable to set slot"); in SetActiveHandler()
379 bool ShutDownHandler(FastbootDevice* device, const std::vector<std::string>& /* args */) { in ShutDownHandler() argument
380 auto result = device->WriteStatus(FastbootResult::OKAY, "Shutting down"); in ShutDownHandler()
382 device->CloseDevice(); in ShutDownHandler()
387 bool RebootHandler(FastbootDevice* device, const std::vector<std::string>& /* args */) { in RebootHandler() argument
388 auto result = device->WriteStatus(FastbootResult::OKAY, "Rebooting"); in RebootHandler()
390 device->CloseDevice(); in RebootHandler()
395 bool RebootBootloaderHandler(FastbootDevice* device, const std::vector<std::string>& /* args */) { in RebootBootloaderHandler() argument
396 auto result = device->WriteStatus(FastbootResult::OKAY, "Rebooting bootloader"); in RebootBootloaderHandler()
398 device->CloseDevice(); in RebootBootloaderHandler()
403 bool RebootFastbootHandler(FastbootDevice* device, const std::vector<std::string>& /* args */) { in RebootFastbootHandler() argument
404 auto result = device->WriteStatus(FastbootResult::OKAY, "Rebooting fastboot"); in RebootFastbootHandler()
406 device->CloseDevice(); in RebootFastbootHandler()
437 bool RebootRecoveryHandler(FastbootDevice* device, const std::vector<std::string>& /* args */) { in RebootRecoveryHandler() argument
440 status = device->WriteStatus(FastbootResult::OKAY, "Rebooting to recovery"); in RebootRecoveryHandler()
442 status = device->WriteStatus(FastbootResult::FAIL, "Unable to reboot to recovery"); in RebootRecoveryHandler()
444 device->CloseDevice(); in RebootRecoveryHandler()
453 explicit PartitionBuilder(FastbootDevice* device, const std::string& partition_name);
466 PartitionBuilder::PartitionBuilder(FastbootDevice* device, const std::string& partition_name) in PartitionBuilder() argument
467 : device_(device) { in PartitionBuilder()
468 std::string slot_suffix = GetSuperSlotSuffix(device, partition_name); in PartitionBuilder()
486 bool CreatePartitionHandler(FastbootDevice* device, const std::vector<std::string>& args) { in CreatePartitionHandler() argument
488 return device->WriteFail("Invalid partition name and size"); in CreatePartitionHandler()
492 return device->WriteStatus(FastbootResult::FAIL, "Command not available on locked devices"); in CreatePartitionHandler()
498 return device->WriteFail("Invalid partition size"); in CreatePartitionHandler()
501 PartitionBuilder builder(device, partition_name); in CreatePartitionHandler()
503 return device->WriteFail("Could not open super partition"); in CreatePartitionHandler()
507 return device->WriteFail("Partition already exists"); in CreatePartitionHandler()
512 return device->WriteFail("Failed to add partition"); in CreatePartitionHandler()
516 return device->WriteFail("Not enough space for partition"); in CreatePartitionHandler()
519 return device->WriteFail("Failed to write partition table"); in CreatePartitionHandler()
521 return device->WriteOkay("Partition created"); in CreatePartitionHandler()
524 bool DeletePartitionHandler(FastbootDevice* device, const std::vector<std::string>& args) { in DeletePartitionHandler() argument
526 return device->WriteFail("Invalid partition name and size"); in DeletePartitionHandler()
530 return device->WriteStatus(FastbootResult::FAIL, "Command not available on locked devices"); in DeletePartitionHandler()
535 PartitionBuilder builder(device, partition_name); in DeletePartitionHandler()
537 return device->WriteFail("Could not open super partition"); in DeletePartitionHandler()
541 return device->WriteFail("Failed to write partition table"); in DeletePartitionHandler()
543 return device->WriteOkay("Partition deleted"); in DeletePartitionHandler()
546 bool ResizePartitionHandler(FastbootDevice* device, const std::vector<std::string>& args) { in ResizePartitionHandler() argument
548 return device->WriteFail("Invalid partition name and size"); in ResizePartitionHandler()
552 return device->WriteStatus(FastbootResult::FAIL, "Command not available on locked devices"); in ResizePartitionHandler()
558 return device->WriteFail("Invalid partition size"); in ResizePartitionHandler()
561 PartitionBuilder builder(device, partition_name); in ResizePartitionHandler()
563 return device->WriteFail("Could not open super partition"); in ResizePartitionHandler()
568 return device->WriteFail("Partition does not exist"); in ResizePartitionHandler()
576 return device->WriteFail("Not enough space to resize partition"); in ResizePartitionHandler()
579 return device->WriteFail("Failed to write partition table"); in ResizePartitionHandler()
581 return device->WriteOkay("Partition resized"); in ResizePartitionHandler()
584 void CancelPartitionSnapshot(FastbootDevice* device, const std::string& partition_name) { in CancelPartitionSnapshot() argument
585 PartitionBuilder builder(device, partition_name); in CancelPartitionSnapshot()
598 bool FlashHandler(FastbootDevice* device, const std::vector<std::string>& args) { in FlashHandler() argument
600 return device->WriteStatus(FastbootResult::FAIL, "Invalid arguments"); in FlashHandler()
604 return device->WriteStatus(FastbootResult::FAIL, in FlashHandler()
609 if (IsProtectedPartitionDuringMerge(device, partition_name)) { in FlashHandler()
611 return device->WriteFail(message); in FlashHandler()
614 if (LogicalPartitionExists(device, partition_name)) { in FlashHandler()
615 CancelPartitionSnapshot(device, partition_name); in FlashHandler()
618 int ret = Flash(device, partition_name); in FlashHandler()
620 return device->WriteStatus(FastbootResult::FAIL, strerror(-ret)); in FlashHandler()
626 return device->WriteStatus(FastbootResult::OKAY, "Flashing succeeded"); in FlashHandler()
629 bool UpdateSuperHandler(FastbootDevice* device, const std::vector<std::string>& args) { in UpdateSuperHandler() argument
631 return device->WriteFail("Invalid arguments"); in UpdateSuperHandler()
635 return device->WriteStatus(FastbootResult::FAIL, "Command not available on locked devices"); in UpdateSuperHandler()
639 return UpdateSuper(device, args[1], wipe); in UpdateSuperHandler()
648 bool GsiHandler(FastbootDevice* device, const std::vector<std::string>& args) { in GsiHandler() argument
650 return device->WriteFail("Invalid arguments"); in GsiHandler()
655 return device->WriteFail("Could not find GSI install"); in GsiHandler()
659 return device->WriteStatus(FastbootResult::FAIL, "No GSI is installed"); in GsiHandler()
664 return device->WriteFail("Command not available on locked DSU/devices"); in GsiHandler()
669 return device->WriteStatus(FastbootResult::FAIL, strerror(errno)); in GsiHandler()
673 return device->WriteStatus(FastbootResult::FAIL, strerror(errno)); in GsiHandler()
678 device->WriteInfo("Not running"); in GsiHandler()
680 return device->WriteFail(strerror(errno)); in GsiHandler()
682 device->WriteInfo("Running active DSU: " + active_dsu); in GsiHandler()
685 return device->WriteFail("Invalid arguments"); in GsiHandler()
687 return device->WriteStatus(FastbootResult::OKAY, "Success"); in GsiHandler()
690 bool SnapshotUpdateHandler(FastbootDevice* device, const std::vector<std::string>& args) { in SnapshotUpdateHandler() argument
693 auto hal = device->boot1_1(); in SnapshotUpdateHandler()
694 if (!hal) return device->WriteFail("Not supported"); in SnapshotUpdateHandler()
701 if (!GetSnapshotUpdateStatus(device, {}, &message)) { in SnapshotUpdateHandler()
702 return device->WriteFail("Could not determine update status"); in SnapshotUpdateHandler()
704 device->WriteInfo(message); in SnapshotUpdateHandler()
705 return device->WriteOkay(""); in SnapshotUpdateHandler()
711 return device->WriteFail("Invalid arguments"); in SnapshotUpdateHandler()
719 device->WriteFail("Failed to SetSnapshotMergeStatus(MergeStatus::CANCELLED) " + in SnapshotUpdateHandler()
729 return device->WriteFail("No snapshot merge is in progress"); in SnapshotUpdateHandler()
734 return device->WriteFail("Unable to create SnapshotManager"); in SnapshotUpdateHandler()
737 return device->WriteFail("Unable to finish snapshot merge"); in SnapshotUpdateHandler()
740 return device->WriteFail("Invalid parameter to snapshot-update"); in SnapshotUpdateHandler()
742 return device->WriteStatus(FastbootResult::OKAY, "Success"); in SnapshotUpdateHandler()
749 static bool Fetch(FastbootDevice* device, const std::vector<std::string>& args) { in Fetch() argument
751 return device->WriteFail("Fetch is not allowed on user build"); in Fetch()
755 return device->WriteFail("Fetch is not allowed on locked devices"); in Fetch()
758 PartitionFetcher fetcher(device, args); in Fetch()
767 PartitionFetcher(FastbootDevice* device, const std::vector<std::string>& args) in PartitionFetcher() argument
768 : device_(device), args_(&args) {} in PartitionFetcher()
913 bool FetchHandler(FastbootDevice* device, const std::vector<std::string>& args) { in FetchHandler() argument
914 return PartitionFetcher::Fetch(device, args); in FetchHandler()