From a22b308d42f721b09fa3d4f50c3ba9c456fe62a0 Mon Sep 17 00:00:00 2001 From: Kyle Tso Date: Wed, 12 Jun 2024 17:14:02 +0800 Subject: [PATCH] usb: Add retry on role switch Bug: 341996696 Change-Id: I8caa65288af1588d24fea4aa6c5768d45d69bbd5 Signed-off-by: Kyle Tso (cherry picked from commit ef5856a4474002cc35a51377adffddd4cb239796) --- usb/usb/Usb.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/usb/usb/Usb.cpp b/usb/usb/Usb.cpp index 4bdd5ed..1a03917 100644 --- a/usb/usb/Usb.cpp +++ b/usb/usb/Usb.cpp @@ -672,6 +672,10 @@ ScopedAStatus Usb::switchRole(const string& in_portName, const PortRole& in_role fp = fopen(filename.c_str(), "w"); if (fp != NULL) { int ret = fputs(convertRoletoString(in_role).c_str(), fp); + if (ret == EAGAIN) { + std::this_thread::sleep_for(std::chrono::milliseconds(700)); + ret = fputs(convertRoletoString(in_role).c_str(), fp); + } fclose(fp); if ((ret != EOF) && ReadFileToString(filename, &written)) { written = Trim(written);