OpenAMP Library
rpmsg_rpc_client_server.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2021, L&T Technology Services Ltd.
3  * All rights reserved.
4  *
5  * SPDX-License-Identifier: BSD-3-Clause
6  */
7 
8 #ifndef RPMSG_RPC_CLIENT_SERVER_H
9 #define RPMSG_RPC_CLIENT_SERVER_H
10 
11 #include <openamp/open_amp.h>
12 #include <metal/compiler.h>
13 
14 #if defined __cplusplus
15 extern "C" {
16 #endif
17 
18 #define RPMSG_RPC_OK 0
19 #define RPMSG_RPC_INVALID_ID (-1L)
20 #define RPMSG_RPC_SERVICE_NAME "rpmsg-rpc"
21 
22 /* RPMSG_BUFFER_SIZE = 512
23  * sizeof(struct rpmsg_hdr) = 16
24  * RPMSG_BUFFER_SIZE - sizeof(struct rpmsg_hdr) - 1 = 495
25  * Aligning to 64 bits -> 488UL
26  */
27 #define MAX_BUF_LEN 488UL
28 #define MAX_FUNC_ID_LEN sizeof(unsigned long int)
29 
30 struct rpmsg_rpc_clt;
31 struct rpmsg_rpc_svr;
32 
33 typedef void (*rpmsg_rpc_shutdown_cb)(struct rpmsg_rpc_clt *rpc);
34 typedef void (*app_cb)(struct rpmsg_rpc_clt *rpc, int statust, void *data,
35  size_t len);
36 typedef int (*rpmsg_rpc_syscall_cb)(void *data, struct rpmsg_rpc_svr *rpcs);
37 
46  uint32_t id;
47  unsigned char params[MAX_BUF_LEN];
48 };
49 
58 METAL_PACKED_BEGIN
60  uint32_t id;
61  int32_t status;
62  unsigned char params[MAX_BUF_LEN];
64 
73  uint32_t id;
75 };
76 
85  uint32_t id;
87 };
88 
99 struct rpmsg_rpc_svr {
100  struct rpmsg_endpoint ept;
102  unsigned int n_services;
103 };
104 
118  struct rpmsg_endpoint ept;
121  unsigned int n_services;
122 };
123 
133 void rpmsg_rpc_client_release(struct rpmsg_rpc_clt *rpc);
134 
152 int rpmsg_rpc_client_init(struct rpmsg_rpc_clt *rpc,
153  struct rpmsg_device *rdev,
154  rpmsg_rpc_shutdown_cb shutdown_cb,
155  const struct rpmsg_rpc_client_services *services,
156  int len);
157 
173 int rpmsg_rpc_server_init(struct rpmsg_rpc_svr *rpcs, struct rpmsg_device *rdev,
174  const struct rpmsg_rpc_services *services, int len,
175  rpmsg_ns_unbind_cb rpmsg_service_server_unbind);
176 
190 int rpmsg_rpc_client_send(struct rpmsg_rpc_clt *rpc,
191  unsigned int rpc_id, void *request_param,
192  size_t req_param_size);
193 
209 int rpmsg_rpc_server_send(struct rpmsg_rpc_svr *rpcs, uint32_t rpc_id,
210  int status, void *request_param,
211  size_t param_size);
212 
213 #if defined __cplusplus
214 }
215 #endif
216 
217 #endif /* RPMSG_RPC_CLIENT_SERVER_H */
void(* rpmsg_ns_unbind_cb)(struct rpmsg_endpoint *ept)
Definition: rpmsg.h:53
int rpmsg_rpc_client_init(struct rpmsg_rpc_clt *rpc, struct rpmsg_device *rdev, rpmsg_rpc_shutdown_cb shutdown_cb, const struct rpmsg_rpc_client_services *services, int len)
Definition: rpmsg_rpc_client.c:24
int rpmsg_rpc_server_init(struct rpmsg_rpc_svr *rpcs, struct rpmsg_device *rdev, const struct rpmsg_rpc_services *services, int len, rpmsg_ns_unbind_cb rpmsg_service_server_unbind)
Definition: rpmsg_rpc_server.c:15
METAL_PACKED_BEGIN struct rpmsg_rpc_answer METAL_PACKED_END
int rpmsg_rpc_server_send(struct rpmsg_rpc_svr *rpcs, uint32_t rpc_id, int status, void *request_param, size_t param_size)
Definition: rpmsg_rpc_server.c:81
void(* app_cb)(struct rpmsg_rpc_clt *rpc, int statust, void *data, size_t len)
Definition: rpmsg_rpc_client_server.h:34
void(* rpmsg_rpc_shutdown_cb)(struct rpmsg_rpc_clt *rpc)
Definition: rpmsg_rpc_client_server.h:33
#define MAX_BUF_LEN
Definition: rpmsg_rpc_client_server.h:27
int(* rpmsg_rpc_syscall_cb)(void *data, struct rpmsg_rpc_svr *rpcs)
Definition: rpmsg_rpc_client_server.h:36
void rpmsg_rpc_client_release(struct rpmsg_rpc_clt *rpc)
Definition: rpmsg_rpc_client.c:80
int rpmsg_rpc_client_send(struct rpmsg_rpc_clt *rpc, unsigned int rpc_id, void *request_param, size_t req_param_size)
Definition: rpmsg_rpc_client.c:49
Definition: rpmsg.h:120
Definition: rpmsg.h:73
Definition: rpmsg_rpc_client_server.h:59
int32_t status
Definition: rpmsg_rpc_client_server.h:61
uint32_t id
Definition: rpmsg_rpc_client_server.h:60
unsigned char params[MAX_BUF_LEN]
Definition: rpmsg_rpc_client_server.h:62
Definition: rpmsg_rpc_client_server.h:84
app_cb cb
Definition: rpmsg_rpc_client_server.h:86
uint32_t id
Definition: rpmsg_rpc_client_server.h:85
Definition: rpmsg_rpc_client_server.h:117
unsigned int n_services
Definition: rpmsg_rpc_client_server.h:121
rpmsg_rpc_shutdown_cb shutdown_cb
Definition: rpmsg_rpc_client_server.h:119
struct rpmsg_endpoint ept
Definition: rpmsg_rpc_client_server.h:118
const struct rpmsg_rpc_client_services * services
Definition: rpmsg_rpc_client_server.h:120
Definition: rpmsg_rpc_client_server.h:45
uint32_t id
Definition: rpmsg_rpc_client_server.h:46
unsigned char params[MAX_BUF_LEN]
Definition: rpmsg_rpc_client_server.h:47
Definition: rpmsg_rpc_client_server.h:72
rpmsg_rpc_syscall_cb cb_function
Definition: rpmsg_rpc_client_server.h:74
uint32_t id
Definition: rpmsg_rpc_client_server.h:73
Definition: rpmsg_rpc_client_server.h:99
unsigned int n_services
Definition: rpmsg_rpc_client_server.h:102
struct rpmsg_endpoint ept
Definition: rpmsg_rpc_client_server.h:100
const struct rpmsg_rpc_services * services
Definition: rpmsg_rpc_client_server.h:101