blob: 4af9d8ccce43e39607b78281a48a28de0a98a3b7 [file] [log] [blame]
Julian Hall6c59e4e2020-11-23 17:50:47 +01001/*
Imre Kis782376d2023-06-21 18:49:58 +02002 * Copyright (c) 2020-2023, Arm Limited and Contributors. All rights reserved.
Julian Hall6c59e4e2020-11-23 17:50:47 +01003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
Imre Kis782376d2023-06-21 18:49:58 +02007#include "rpc_caller.h"
julhal01c3f4e9a2020-12-15 13:39:01 +00008
Imre Kis782376d2023-06-21 18:49:58 +02009rpc_status_t rpc_caller_open_session(struct rpc_caller_interface *caller,
10 const struct rpc_uuid *service_uuid,
11 uint16_t endpoint_id)
julhal01c3f4e9a2020-12-15 13:39:01 +000012{
Imre Kis782376d2023-06-21 18:49:58 +020013 if (!caller)
14 return RPC_ERROR_INVALID_VALUE;
julhal01c3f4e9a2020-12-15 13:39:01 +000015
Imre Kis782376d2023-06-21 18:49:58 +020016 return caller->open_session(caller->context, service_uuid, endpoint_id);
julhal01c3f4e9a2020-12-15 13:39:01 +000017}
18
Imre Kis782376d2023-06-21 18:49:58 +020019rpc_status_t rpc_caller_find_and_open_session(struct rpc_caller_interface *caller,
20 const struct rpc_uuid *service_uuid)
julhal01c3f4e9a2020-12-15 13:39:01 +000021{
Imre Kis782376d2023-06-21 18:49:58 +020022 if (!caller)
23 return RPC_ERROR_INVALID_VALUE;
24
25 return caller->find_and_open_session(caller->context, service_uuid);
julhal01c3f4e9a2020-12-15 13:39:01 +000026}
Julian Hall6c59e4e2020-11-23 17:50:47 +010027
Imre Kis782376d2023-06-21 18:49:58 +020028rpc_status_t rpc_caller_close_session(struct rpc_caller_interface *caller)
Julian Hall6c59e4e2020-11-23 17:50:47 +010029{
Imre Kis782376d2023-06-21 18:49:58 +020030 if (!caller)
31 return RPC_ERROR_INVALID_VALUE;
32
33 return caller->close_session(caller->context);
Julian Hall6c59e4e2020-11-23 17:50:47 +010034}
35
Imre Kis782376d2023-06-21 18:49:58 +020036rpc_status_t rpc_caller_create_shared_memory(struct rpc_caller_interface *caller, size_t length,
37 struct rpc_caller_shared_memory *shared_memory)
Julian Hall6c59e4e2020-11-23 17:50:47 +010038{
Imre Kis782376d2023-06-21 18:49:58 +020039 if (!caller)
40 return RPC_ERROR_INVALID_VALUE;
41
42 return caller->create_shared_memory(caller->context, length, shared_memory);
Julian Hall6c59e4e2020-11-23 17:50:47 +010043}
44
Imre Kis782376d2023-06-21 18:49:58 +020045rpc_status_t rpc_caller_release_shared_memory(struct rpc_caller_interface *caller,
46 struct rpc_caller_shared_memory *shared_memory)
Julian Hall6c59e4e2020-11-23 17:50:47 +010047{
Imre Kis782376d2023-06-21 18:49:58 +020048 if (!caller)
49 return RPC_ERROR_INVALID_VALUE;
50
51 return caller->release_shared_memory(caller->context, shared_memory);
52}
53
54rpc_status_t rpc_caller_call(struct rpc_caller_interface *caller, uint16_t opcode,
55 struct rpc_caller_shared_memory *shared_memory, size_t request_length,
56 size_t *response_length, service_status_t *service_status)
57{
58 if (!caller)
59 return RPC_ERROR_INVALID_VALUE;
60
61 return caller->call(caller->context, opcode, shared_memory, request_length,
62 response_length, service_status);
Julian Hall6c59e4e2020-11-23 17:50:47 +010063}