usb: Add retry on role switch

Bug: 341996696
Change-Id: I8caa65288af1588d24fea4aa6c5768d45d69bbd5
Signed-off-by: Kyle Tso <kyletso@google.com>
(cherry picked from commit ef5856a4474002cc35a51377adffddd4cb239796)
diff --git a/usb/usb/Usb.cpp b/usb/usb/Usb.cpp
index b8c5c8e..39cbceb 100644
--- a/usb/usb/Usb.cpp
+++ b/usb/usb/Usb.cpp
@@ -593,6 +593,10 @@
         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);