xtest: SDP basic tests TA to pseudo TA with SDP memref

This change relies on the OP-TEE core pseudo TA used for pseudo TA
invocation test. Its API is available from pta_invoke_tests.h.

Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
diff --git a/ta/sdp_basic/ta_sdp_basic.c b/ta/sdp_basic/ta_sdp_basic.c
index 7df0d22..7f3ab41 100644
--- a/ta/sdp_basic/ta_sdp_basic.c
+++ b/ta/sdp_basic/ta_sdp_basic.c
@@ -25,14 +25,15 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include <pta_invoke_tests.h>
 #include <string.h>
+#include <ta_sdp_basic.h>
 #include <tee_api.h>
 #include <tee_internal_api_extensions.h>
 #include <tee_internal_api.h>
 #include <tee_ta_api.h>
 #include <trace.h>
 
-#include <ta_sdp_basic.h>
 
 /*
  * Basic Secure Data Path access test commands:
@@ -295,6 +296,38 @@
         return res;
 }
 
+static TEE_Result cmd_invoke_pta(uint32_t nParamTypes,
+			     TEE_Param pParams[TEE_NUM_PARAMS],
+			     uint32_t nCommandID)
+{
+        const TEE_UUID uuid = PTA_INVOKE_TESTS_UUID;
+        static TEE_TASessionHandle sess = TEE_HANDLE_NULL;
+        uint32_t ret_orig;
+        TEE_Result res;
+
+	if (sess == TEE_HANDLE_NULL) {
+	        res = TEE_OpenTASession(&uuid, 0, 0, NULL, &sess, &ret_orig);
+		if (res != TEE_SUCCESS) {
+	                EMSG("SDP basic test TA: TEE_OpenTASession() FAILED \n");
+	                goto cleanup_return;
+		}
+
+        }
+
+        res = TEE_InvokeTACommand(sess, 0, nCommandID, nParamTypes, pParams, &ret_orig);
+        if (res != TEE_SUCCESS) {
+                EMSG("SDP basic test TA: TEE_OpenTASession() FAILED %x/%d\n",
+								res, ret_orig);
+        }
+
+cleanup_return:
+	if (res != TEE_SUCCESS) {
+		TEE_CloseTASession(sess);
+		sess = TEE_HANDLE_NULL;
+	}
+        return res;
+}
+
 TEE_Result TA_CreateEntryPoint(void)
 {
 	return TEE_SUCCESS;
@@ -340,6 +373,13 @@
 	case TA_SDP_BASIC_CMD_INVOKE_DUMP:
 		return cmd_invoke(nParamTypes, pParams, TA_SDP_BASIC_CMD_DUMP);
 
+	case TA_SDP_BASIC_CMD_PTA_INJECT:
+		return cmd_invoke_pta(nParamTypes, pParams, PTA_INVOKE_TESTS_CMD_COPY_NSEC_TO_SEC);
+	case TA_SDP_BASIC_CMD_PTA_TRANSFORM:
+		return cmd_invoke_pta(nParamTypes, pParams, PTA_INVOKE_TESTS_CMD_READ_MODIFY_SEC);
+	case TA_SDP_BASIC_CMD_PTA_DUMP:
+		return cmd_invoke_pta(nParamTypes, pParams, PTA_INVOKE_TESTS_CMD_COPY_SEC_TO_NSEC);
+
 	default:
 		return TEE_ERROR_BAD_PARAMETERS;
 	}