xtest: SDP basic tests TA to TA with SDP memref
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
diff --git a/ta/sdp_basic/include/ta_sdp_basic.h b/ta/sdp_basic/include/ta_sdp_basic.h
index 7a6999c..c8fa01e 100644
--- a/ta/sdp_basic/include/ta_sdp_basic.h
+++ b/ta/sdp_basic/include/ta_sdp_basic.h
@@ -31,8 +31,12 @@
#define TA_SDP_BASIC_UUID { 0x12345678, 0x5b69, 0x11e4, \
{ 0x9d, 0xbb, 0x10, 0x1f, 0x74, 0xf0, 0x00, 0x99 } }
-#define TA_SDP_BASIC_CMD_INJECT 0
-#define TA_SDP_BASIC_CMD_TRANSFORM 1
-#define TA_SDP_BASIC_CMD_DUMP 2
+#define TA_SDP_BASIC_CMD_INJECT 0
+#define TA_SDP_BASIC_CMD_TRANSFORM 1
+#define TA_SDP_BASIC_CMD_DUMP 2
+
+#define TA_SDP_BASIC_CMD_INVOKE_INJECT 3
+#define TA_SDP_BASIC_CMD_INVOKE_TRANSFORM 4
+#define TA_SDP_BASIC_CMD_INVOKE_DUMP 5
#endif /* TA_SDP_BASIC_H */
diff --git a/ta/sdp_basic/ta_sdp_basic.c b/ta/sdp_basic/ta_sdp_basic.c
index 5b1df2e..7df0d22 100644
--- a/ta/sdp_basic/ta_sdp_basic.c
+++ b/ta/sdp_basic/ta_sdp_basic.c
@@ -263,6 +263,38 @@
return rc;
}
+static TEE_Result cmd_invoke(uint32_t nParamTypes,
+ TEE_Param pParams[TEE_NUM_PARAMS],
+ uint32_t nCommandID)
+{
+ const TEE_UUID uuid = TA_SDP_BASIC_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;
@@ -300,6 +332,14 @@
return cmd_transform(nParamTypes, pParams);
case TA_SDP_BASIC_CMD_DUMP:
return cmd_dump(nParamTypes, pParams);
+
+ case TA_SDP_BASIC_CMD_INVOKE_INJECT:
+ return cmd_invoke(nParamTypes, pParams, TA_SDP_BASIC_CMD_INJECT);
+ case TA_SDP_BASIC_CMD_INVOKE_TRANSFORM:
+ return cmd_invoke(nParamTypes, pParams, TA_SDP_BASIC_CMD_TRANSFORM);
+ case TA_SDP_BASIC_CMD_INVOKE_DUMP:
+ return cmd_invoke(nParamTypes, pParams, TA_SDP_BASIC_CMD_DUMP);
+
default:
return TEE_ERROR_BAD_PARAMETERS;
}