Extend RPC parameters
The RPC model is extended to include parameters for identifying
an RPC interface instance at an endpoint and another for
identifying the parameter encoding. The interface ID parameter
allows multiple service interfaces to be co-located. The encoding
parameter allows clients to use different parameter serialization
schemes and to specify the format in each RPC request.
Signed-off-by: julhal01 <julian.hall@arm.com>
Change-Id: I201b3417dc0e9f655113b9931db3494e41f1d74b
diff --git a/deployments/crypto/opteesp/crypto_sp.c b/deployments/crypto/opteesp/crypto_sp.c
index 17e9cf4..5756d1b 100644
--- a/deployments/crypto/opteesp/crypto_sp.c
+++ b/deployments/crypto/opteesp/crypto_sp.c
@@ -8,6 +8,7 @@
#include <rpc/dummy/dummy_caller.h>
#include <service/secure_storage/client/psa/its/its_client.h>
#include <service/crypto/provider/mbedcrypto/crypto_provider.h>
+#include <service/crypto/provider/serializer/protobuf/pb_crypto_provider_serializer.h>
#include <protocols/rpc/common/packed-c/status.h>
#include <ffa_api.h>
#include <sp_api.h>
@@ -29,7 +30,7 @@
{
struct mbed_crypto_provider crypto_provider;
struct ffa_call_ep ffarpc_call_ep;
- struct call_ep *crypto_ep;
+ struct rpc_interface *crypto_iface;
struct ffarpc_caller ffarpc_caller;
struct dummy_caller dummy_caller;
struct rpc_caller *storage_caller;
@@ -45,7 +46,7 @@
storage_caller = ffarpc_caller_init(&ffarpc_caller);
if (!ffarpc_caller_discover(storage_uuid, storage_sp_ids, sizeof(storage_sp_ids)/sizeof(uint16_t)) ||
- ffarpc_caller_open(&ffarpc_caller, storage_sp_ids[0])) {
+ ffarpc_caller_open(&ffarpc_caller, storage_sp_ids[0], 0)) {
/*
* Failed to establish session. To allow the crypto service
* to still be initialized, albeit with no persistent storage,
@@ -57,8 +58,11 @@
}
/* Initialize the crypto service */
- crypto_ep = mbed_crypto_provider_init(&crypto_provider, storage_caller);
- ffa_call_ep_init(&ffarpc_call_ep, crypto_ep);
+ crypto_iface = mbed_crypto_provider_init(&crypto_provider, storage_caller);
+ mbed_crypto_provider_register_serializer(&crypto_provider,
+ TS_RPC_ENCODING_PROTOBUF, pb_crypto_provider_serializer_instance());
+
+ ffa_call_ep_init(&ffarpc_call_ep, crypto_iface);
/* End of boot phase */
ffa_msg_wait(&req_msg);
diff --git a/deployments/secure-storage/opteesp/sp.c b/deployments/secure-storage/opteesp/sp.c
index d04dbb2..c24423c 100644
--- a/deployments/secure-storage/opteesp/sp.c
+++ b/deployments/secure-storage/opteesp/sp.c
@@ -1,12 +1,12 @@
/*
- * Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include "sp.h"
#include <ffa_api.h>
-#include <components/rpc/common/endpoint/call_ep.h>
+#include <components/rpc/common/endpoint/rpc_interface.h>
#include <components/rpc/ffarpc/endpoint/ffarpc_call_ep.h>
#include <components/service/secure_storage/provider/secure_flash_store/sfs_provider.h>
#include <components/service/common/provider/service_provider.h>
@@ -22,7 +22,7 @@
{
ffa_result ffa_res;
sp_result sp_res;
- struct call_ep *sfs_ep;
+ struct rpc_interface *sfs_iface;
struct ffa_call_ep ffa_call_ep;
struct ffa_direct_msg req_msg;
struct ffa_direct_msg resp_msg;
@@ -41,8 +41,8 @@
EMSG("rxtx map error: %d", sp_res);
}
- sfs_ep = sfs_provider_init(&sfs_provider);
- ffa_call_ep_init(&ffa_call_ep, sfs_ep);
+ sfs_iface = sfs_provider_init(&sfs_provider);
+ ffa_call_ep_init(&ffa_call_ep, sfs_iface);
/* End of boot phase */
ffa_msg_wait(&req_msg);
diff --git a/deployments/sfs-demo/opteesp/sp.c b/deployments/sfs-demo/opteesp/sp.c
index eec703f..5bda8e9 100644
--- a/deployments/sfs-demo/opteesp/sp.c
+++ b/deployments/sfs-demo/opteesp/sp.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
@@ -160,7 +160,7 @@
}
IMSG("ITS SP ID: 0x%x", sp_ids[0]);
- if (ffarpc_caller_open(&ffa_caller, sp_ids[0])) {
+ if (ffarpc_caller_open(&ffa_caller, sp_ids[0], 0)) {
goto err;
}
diff --git a/deployments/ts-demo/ts-demo.cpp b/deployments/ts-demo/ts-demo.cpp
index e055bad..eaa8b52 100644
--- a/deployments/ts-demo/ts-demo.cpp
+++ b/deployments/ts-demo/ts-demo.cpp
@@ -1,9 +1,10 @@
// SPDX-License-Identifier: BSD-2-Clause
/*
- * Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
*/
#include <service/crypto/client/cpp/crypto_client.h>
+#include <protocols/rpc/common/packed-c/encoding.h>
#include <app/ts-demo/ts-demo.h>
#include <service_locator.h>
#include <rpc_caller.h>
@@ -24,7 +25,7 @@
struct rpc_caller *caller;
rpc_session_handle rpc_session_handle;
- rpc_session_handle = service_context_open(crypto_service_context, &caller);
+ rpc_session_handle = service_context_open(crypto_service_context, TS_RPC_ENCODING_PROTOBUF, &caller);
if (rpc_session_handle) {