OpenAMP Library  latest
Loading...
Searching...
No Matches
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
15extern "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(uint32_t)
29
30struct rpmsg_rpc_clt;
31struct rpmsg_rpc_svr;
32
33typedef void (*rpmsg_rpc_shutdown_cb)(struct rpmsg_rpc_clt *rpc);
34typedef void (*app_cb)(struct rpmsg_rpc_clt *rpc, int status, void *data,
35 size_t len);
36typedef 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
51METAL_PACKED_BEGIN
54 uint32_t id;
55
57 int32_t status;
58
60 unsigned char params[MAX_BUF_LEN];
62
71
75 uint32_t id;
76
79};
80
89
92
94 unsigned int n_services;
95};
96
116
127
146 struct rpmsg_device *rdev,
147 rpmsg_rpc_shutdown_cb shutdown_cb,
148 const struct rpmsg_rpc_client_services *services,
149 int len);
150
166int rpmsg_rpc_server_init(struct rpmsg_rpc_svr *rpcs, struct rpmsg_device *rdev,
167 const struct rpmsg_rpc_services *services, int len,
168 rpmsg_ns_unbind_cb rpmsg_service_server_unbind);
169
184 uint32_t rpc_id, void *request_param,
185 size_t req_param_size);
186
202int rpmsg_rpc_server_send(struct rpmsg_rpc_svr *rpcs, uint32_t rpc_id,
203 int status, void *request_param,
204 size_t param_size);
205
206#if defined __cplusplus
207}
208#endif
209
210#endif /* RPMSG_RPC_CLIENT_SERVER_H */
METAL_PACKED_BEGIN struct resource_table METAL_PACKED_END
void(* rpmsg_ns_unbind_cb)(struct rpmsg_endpoint *ept)
Definition rpmsg.h:55
void(* rpmsg_rpc_shutdown_cb)(struct rpmsg_rpc_data *rpc)
Definition rpmsg_retarget.h:33
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:25
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:16
int rpmsg_rpc_client_send(struct rpmsg_rpc_clt *rpc, uint32_t rpc_id, void *request_param, size_t req_param_size)
Definition rpmsg_rpc_client.c:50
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:82
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(* app_cb)(struct rpmsg_rpc_clt *rpc, int status, void *data, size_t len)
Definition rpmsg_rpc_client_server.h:34
void rpmsg_rpc_client_release(struct rpmsg_rpc_clt *rpc)
Definition rpmsg_rpc_client.c:81
Representation of a RPMsg device.
Definition rpmsg.h:133
Structure that binds a local RPMsg address to its user.
Definition rpmsg.h:65
RPC request message.
Definition rpmsg_rpc_client_server.h:52
int32_t status
Status of RPC.
Definition rpmsg_rpc_client_server.h:57
uint32_t id
Service ID.
Definition rpmsg_rpc_client_server.h:54
unsigned char params[MAX_BUF_LEN]
Answer params.
Definition rpmsg_rpc_client_server.h:60
Table for client services.
Definition rpmsg_rpc_client_server.h:73
app_cb cb
ID callback.
Definition rpmsg_rpc_client_server.h:78
uint32_t id
Service ID.
Definition rpmsg_rpc_client_server.h:75
Client remote procedure call data.
Definition rpmsg_rpc_client_server.h:103
unsigned int n_services
Number of services.
Definition rpmsg_rpc_client_server.h:114
rpmsg_rpc_shutdown_cb shutdown_cb
Shutdown callback function.
Definition rpmsg_rpc_client_server.h:108
struct rpmsg_endpoint ept
RPMsg endpoint associated with the call.
Definition rpmsg_rpc_client_server.h:105
const struct rpmsg_rpc_client_services * services
Service table.
Definition rpmsg_rpc_client_server.h:111
struct rpmsg_rpc_request - rpc request message
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
Table for services.
Definition rpmsg_rpc_client_server.h:64
rpmsg_rpc_syscall_cb cb_function
ID callback.
Definition rpmsg_rpc_client_server.h:69
uint32_t id
Service ID.
Definition rpmsg_rpc_client_server.h:66
Server remote procedure call data.
Definition rpmsg_rpc_client_server.h:86
unsigned int n_services
Number of services.
Definition rpmsg_rpc_client_server.h:94
struct rpmsg_endpoint ept
RPMsg destination endpoint structure.
Definition rpmsg_rpc_client_server.h:88
const struct rpmsg_rpc_services * services
Service table.
Definition rpmsg_rpc_client_server.h:91