eRPC API Reference  Rev. 1.7.2
NXP Semiconductors
erpc_rpmsg_lite_rtos_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_RTOS_TRANSPORT_H_
11 #define _EMBEDDED_RPC__RPMSG_LITE_RTOS_TRANSPORT_H_
12 
13 #include "erpc_message_buffer.h"
15 #include "rpmsg_lite.h"
16 #include "rpmsg_queue.h"
17 
24 // Definitions
27 
29 // Classes
31 
32 namespace erpc {
39 {
40 public:
46  RPMsgRTOSTransport(void);
47 
51  virtual ~RPMsgRTOSTransport(void);
52 
65  virtual erpc_status_t init(unsigned long src_addr, unsigned long dst_addr, void *base_address, unsigned long length,
66  int rpmsg_link_id);
67 
82  virtual erpc_status_t init(unsigned long src_addr, unsigned long dst_addr, void *base_address, int rpmsg_link_id,
83  void (*ready_cb)(void), char *nameservice_name);
84 
95  virtual erpc_status_t receive(MessageBuffer *message);
96 
105  virtual erpc_status_t send(MessageBuffer *message);
106 
114  virtual bool hasMessage(void) { return (rpmsg_queue_get_current_size(m_rpmsg_queue) > 0 ? true : false); }
115 
116 protected:
117  /* Remote device */
118  struct remote_device *m_rdev;
119  struct rpmsg_channel *m_app_rp_chnl;
120  unsigned long m_dst_addr;
121  rpmsg_queue_handle m_rpmsg_queue;
122  struct rpmsg_lite_endpoint *m_rpmsg_ept;
123 };
124 
125 } // namespace erpc
126 
129 #endif // _EMBEDDED_RPC__RPMSG_LITE_RTOS_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 receive(MessageBuffer *message)
Store incoming message to message buffer.
Definition: erpc_rpmsg_lite_rtos_transport.cpp:111
Transport that uses RPMsg zero copy RTOS API for interprocessor messaging.
Definition: erpc_rpmsg_lite_rtos_transport.h:38
virtual erpc_status_t init(unsigned long src_addr, unsigned long dst_addr, void *base_address, unsigned long length, int rpmsg_link_id)
This function call RPMsg rtos init function - as RPMsg master.
Definition: erpc_rpmsg_lite_rtos_transport.cpp:43
virtual erpc_status_t send(MessageBuffer *message)
Function to send prepared message.
Definition: erpc_rpmsg_lite_rtos_transport.cpp:122
unsigned long m_dst_addr
Definition: erpc_rpmsg_lite_rtos_transport.h:120
Represents a memory buffer containing a message.
Definition: erpc_message_buffer.h:36
Definition: erpc_arbitrated_client_manager.h:25
RPMsgRTOSTransport(void)
Constructor.
Definition: erpc_rpmsg_lite_rtos_transport.cpp:27
rpmsg_queue_handle m_rpmsg_queue
Definition: erpc_rpmsg_lite_rtos_transport.h:121
virtual ~RPMsgRTOSTransport(void)
RPMsgRTOSTransport destructor.
Definition: erpc_rpmsg_lite_rtos_transport.cpp:37
Transport that other RPMsg transports inherits.
Definition: erpc_rpmsg_lite_base_transport.h:38
virtual bool hasMessage(void)
Function to check if is message in receive queue and wait for processing.
Definition: erpc_rpmsg_lite_rtos_transport.h:114
struct rpmsg_lite_endpoint * m_rpmsg_ept
Definition: erpc_rpmsg_lite_rtos_transport.h:122
struct remote_device * m_rdev
Definition: erpc_rpmsg_lite_rtos_transport.h:118
struct rpmsg_channel * m_app_rp_chnl
Definition: erpc_rpmsg_lite_rtos_transport.h:119