refactor(ff-a): partition info test functions

Move common ffa_partition_info_get functions to the spm_common.
Secure test target now supports both sending and receiving direct
messages.
Changes in SP manifests to align with a new messaging method
representation in partition manifests.

Signed-off-by: Max Shvetsov <maksims.svecovs@arm.com>
Change-Id: I9f6f24d6b800283a07e84a2a27708c0313b68fdc
diff --git a/tftf/tests/common/test_helpers.c b/tftf/tests/common/test_helpers.c
index d794beb..fffad67 100644
--- a/tftf/tests/common/test_helpers.c
+++ b/tftf/tests/common/test_helpers.c
@@ -172,7 +172,7 @@
 	GET_TFTF_MAILBOX(mb);
 
 	for (unsigned int i = 0U; i < ffa_uuids_size; i++)
-		SKIP_TEST_IF_FFA_ENDPOINT_NOT_DEPLOYED(*mb, ffa_uuids[i].uuid);
+		SKIP_TEST_IF_FFA_ENDPOINT_NOT_DEPLOYED(*mb, ffa_uuids[i]);
 
 	return TEST_RESULT_SUCCESS;
 }
diff --git a/tftf/tests/runtime_services/secure_service/ffa_helpers.c b/tftf/tests/runtime_services/secure_service/ffa_helpers.c
index 4c69eb1..8d043a1 100644
--- a/tftf/tests/runtime_services/secure_service/ffa_helpers.c
+++ b/tftf/tests/runtime_services/secure_service/ffa_helpers.c
@@ -357,14 +357,14 @@
 }
 
 /* Get information about VMs or SPs based on UUID */
-smc_ret_values ffa_partition_info_get(const uint32_t uuid[4])
+smc_ret_values ffa_partition_info_get(const struct ffa_uuid uuid)
 {
 	smc_args args = {
 		.fid = FFA_PARTITION_INFO_GET,
-		.arg1 = uuid[0],
-		.arg2 = uuid[1],
-		.arg3 = uuid[2],
-		.arg4 = uuid[3]
+		.arg1 = uuid.uuid[0],
+		.arg2 = uuid.uuid[1],
+		.arg3 = uuid.uuid[2],
+		.arg4 = uuid.uuid[3]
 	};
 
 	return tftf_smc(&args);
diff --git a/tftf/tests/runtime_services/secure_service/spm_common.c b/tftf/tests/runtime_services/secure_service/spm_common.c
index e2c7361..7aa4861 100644
--- a/tftf/tests/runtime_services/secure_service/spm_common.c
+++ b/tftf/tests/runtime_services/secure_service/spm_common.c
@@ -459,3 +459,53 @@
 	return memory_send(memory_region, mem_func, fragment_length,
 			       total_length);
 }
+
+/**
+ * Sends a ffa_partition_info request and checks the response against the
+ * target.
+ */
+bool ffa_partition_info_helper(struct mailbox_buffers *mb,
+			       const struct ffa_uuid uuid,
+			       const struct ffa_partition_info *expected,
+			       const uint16_t expected_size)
+{
+	bool result = true;
+	smc_ret_values ret = ffa_partition_info_get(uuid);
+
+	if (ffa_func_id(ret) == FFA_SUCCESS_SMC32) {
+		if (ret.ret2 != expected_size) {
+			ERROR("Unexpected number of partitions %ld\n", ret.ret2);
+			return false;
+		}
+		const struct ffa_partition_info *info =
+			(const struct ffa_partition_info *)(mb->recv);
+
+		for (unsigned int i = 0U; i < expected_size; i++) {
+			if (info[i].id != expected[i].id) {
+				ERROR("Wrong ID. Expected %x, got %x\n",
+				      expected[i].id,
+				      info[i].id);
+				result = false;
+			}
+			if (info[i].exec_context != expected[i].exec_context) {
+				ERROR("Wrong context. Expected %d, got %d\n",
+				      expected[i].exec_context,
+				      info[i].exec_context);
+				result = false;
+			}
+			if (info[i].properties != expected[i].properties) {
+				ERROR("Wrong properties. Expected %d, got %d\n",
+				      expected[i].properties,
+				      info[i].properties);
+				result = false;
+			}
+		}
+	}
+
+	ret = ffa_rx_release();
+	if (is_ffa_call_error(ret)) {
+		ERROR("Failed to release RX buffer\n");
+		result = false;
+	}
+	return result;
+}