eRPC API Reference  Rev. 1.7.2
NXP Semiconductors
erpc_rpmsg_lite_transport.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015-2016, Freescale Semiconductor, Inc.
3  * Copyright 2016-2017 NXP
4  * All rights reserved.
5  *
6  *
7  * SPDX-License-Identifier: BSD-3-Clause
8  */
9 
10 #ifndef _EMBEDDED_RPC__RPMSG_LITE_TRANSPORT_H_
11 #define _EMBEDDED_RPC__RPMSG_LITE_TRANSPORT_H_
12 
13 #include "erpc_config_internal.h"
14 #include "erpc_message_buffer.h"
16 #include "erpc_static_queue.h"
17 #include "rpmsg_lite.h"
18 
25 // Definitions
28 
30 // Classes
32 
33 namespace erpc {
40 {
41 public:
47  RPMsgTransport(void);
48 
52  virtual ~RPMsgTransport(void);
53 
68  virtual erpc_status_t init(unsigned long src_addr, unsigned long dst_addr, void *base_address, unsigned long length,
69  int rpmsg_link_id);
70 
87  virtual erpc_status_t init(unsigned long src_addr, unsigned long dst_addr, void *base_address, int rpmsg_link_id,
88  void (*ready_cb)(void), char *nameservice_name);
89 
99  virtual erpc_status_t receive(MessageBuffer *message);
100 
109  virtual erpc_status_t send(MessageBuffer *message);
110 
118  virtual bool hasMessage(void) { return m_messageQueue.size(); }
119 
120 protected:
134  static int rpmsg_read_cb(void *payload, int payload_len, unsigned long src, void *priv);
135 
139  unsigned long m_dst_addr;
140  struct rpmsg_lite_ept_static_context m_rpmsg_ept_context;
141  struct rpmsg_lite_endpoint *m_rpmsg_ept;
143  static struct rpmsg_lite_instance s_rpmsg_ctxt;
144 };
145 
146 } // namespace erpc
147 
150 #endif // _EMBEDDED_RPC__RPMSG_LITE_TRANSPORT_H_
int32_t erpc_status_t
Type used for all status and error return values.
Definition: erpc_common.h:86
virtual erpc_status_t init(unsigned long src_addr, unsigned long dst_addr, void *base_address, unsigned long length, int rpmsg_link_id)
Initialization of RPMsgTransport layer - as RPMsg master.
Definition: erpc_rpmsg_lite_transport.cpp:48
virtual ~RPMsgTransport(void)
Codec destructor.
Definition: erpc_rpmsg_lite_transport.cpp:46
static int rpmsg_read_cb(void *payload, int payload_len, unsigned long src, void *priv)
RPMSG callback for receiving data.
Definition: erpc_rpmsg_lite_transport.cpp:26
struct rpmsg_lite_endpoint * m_rpmsg_ept
Definition: erpc_rpmsg_lite_transport.h:141
RPMsgTransport(void)
Constructor.
Definition: erpc_rpmsg_lite_transport.cpp:38
unsigned long m_dst_addr
Definition: erpc_rpmsg_lite_transport.h:139
virtual bool hasMessage(void)
Function to check if is message in receive queue and wait for processing.
Definition: erpc_rpmsg_lite_transport.h:118
struct rpmsg_lite_ept_static_context m_rpmsg_ept_context
Definition: erpc_rpmsg_lite_transport.h:140
StaticQueue< MessageBuffer, ERPC_DEFAULT_BUFFERS_COUNT > m_messageQueue
Definition: erpc_rpmsg_lite_transport.h:137
virtual erpc_status_t receive(MessageBuffer *message)
Set message to first received message.
Definition: erpc_rpmsg_lite_transport.cpp:99
Represents a memory buffer containing a message.
Definition: erpc_message_buffer.h:36
Definition: erpc_arbitrated_client_manager.h:25
Transport that uses RPMsg zero copy API for interprocessor messaging.
Definition: erpc_rpmsg_lite_transport.h:39
static struct rpmsg_lite_instance s_rpmsg_ctxt
Definition: erpc_rpmsg_lite_transport.h:143
Transport that other RPMsg transports inherits.
Definition: erpc_rpmsg_lite_base_transport.h:38
virtual erpc_status_t send(MessageBuffer *message)
Function to send prepared message.
Definition: erpc_rpmsg_lite_transport.cpp:108
Template class which implements static queue as ring buffer.
Definition: erpc_static_queue.h:32