Cleanup getService

getService uses a for-loop in a werid way, which makes it
hard to understand for readers.
Changing it to a while loop.

Test: pass
Test: boots
Test: lshal
Test: hidl_test

Change-Id: I6d7ccbd687da6d833a22fe5410299fe8cd61a53e
diff --git a/generateCpp.cpp b/generateCpp.cpp
index a3c9a78..55ea0d1 100644
--- a/generateCpp.cpp
+++ b/generateCpp.cpp
@@ -187,13 +187,8 @@
         //     }
         // }
 
-        out.sFor("bool tried = false; "
-                 "!getStub && (vintfHwbinder || (vintfEmpty && !tried)); "
-                 "tried = true", [&] {
-
-            // Because this is a for loop, a "continue" statement means
-            // setting tried, and hence "break" for vintfEmpty and
-            // "retry" for vintfHwBinder
+        out << "bool tried = false;\n";
+        out.sWhile("!getStub && (vintfHwbinder || (vintfEmpty && !tried))", [&] {
 
             out.sIf("tried", [&] {
                 // sleep only after the first trial.
@@ -201,6 +196,8 @@
                     << "sleep(1);\n";
             }).endl();
 
+            out << "tried = true;\n";
+
             out << "const ::android::sp<::android::hidl::manager::V1_0::IServiceManager> sm\n";
             out.indent(2, [&] {
                 out << "= ::android::hardware::defaultServiceManager();\n";