enable synchronous mode (functional)

Change-Id: I613610013e7e4d1623620ab94d2d25d8a1bd82b3
Bug: 5972398
diff --git a/rsg_generator.c b/rsg_generator.c
index c404c9c..7022bcb 100644
--- a/rsg_generator.c
+++ b/rsg_generator.c
@@ -224,6 +224,29 @@
             }
             fprintf(f, ");\n");
         } else {
+            // handle synchronous path
+            fprintf(f, "    if (((Context *)rsc)->isSynchronous()) {\n");
+            fprintf(f, "        ");
+            if (api->ret.typeName[0]) {
+                fprintf(f, "return ");
+            }
+            fprintf(f, "rsi_%s(", api->name);
+            if (!api->nocontext) {
+                fprintf(f, "(Context *)rsc");
+            }
+            for (ct2=0; ct2 < api->paramCount; ct2++) {
+                const VarType *vt = &api->params[ct2];
+                if (ct2 > 0 || !api->nocontext) {
+                    fprintf(f, ", ");
+                }
+                fprintf(f, "%s", vt->name);
+            }
+            fprintf(f, ");\n");
+            if (!api->ret.typeName[0]) {
+                fprintf(f, "    return;");
+            }
+            fprintf(f, "    }\n\n");
+
             fprintf(f, "    ThreadIO *io = &((Context *)rsc)->mIO;\n");
             fprintf(f, "    const uint32_t size = sizeof(RS_CMD_%s);\n", api->name);
             if (hasInlineDataPointers(api)) {