eRPC API Reference  Rev. 1.7.2
NXP Semiconductors
erpc_inter_thread_buffer_transport.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014, Freescale Semiconductor, Inc.
3  * Copyright 2016 NXP
4  * All rights reserved.
5  *
6  *
7  * SPDX-License-Identifier: BSD-3-Clause
8  */
9 
10 #ifndef _EMBEDDED_RPC__INTER_THREAD_BUFFER_TRANSPORT_H_
11 #define _EMBEDDED_RPC__INTER_THREAD_BUFFER_TRANSPORT_H_
12 
13 #include "erpc_message_buffer.h"
14 #include "erpc_threading.h"
15 #include "erpc_transport.h"
16 
23 // Classes
26 
27 namespace erpc {
45 {
46 public:
48  : Transport()
49  , m_state(NULL)
50  , m_peer(NULL)
51  , m_inSem()
52  , m_outSem(1)
53  , m_inBuffer(NULL)
54  {
55  }
56  virtual ~InterThreadBufferTransport(void);
57 
58  void linkWithPeer(InterThreadBufferTransport *peer);
59 
60  virtual erpc_status_t receive(MessageBuffer *message);
61  virtual erpc_status_t send(const MessageBuffer *message);
62 
63  virtual int32_t getAvailable(void) const { return 0; }
64 
65 protected:
66  struct SharedState
67  {
68  Mutex m_mutex;
69  };
70 
71  SharedState *m_state;
73  Semaphore m_inSem;
74  Semaphore m_outSem;
75  MessageBuffer *m_inBuffer;
76 };
77 
78 } // namespace erpc
79 
82 #endif // _EMBEDDED_RPC__INTER_THREAD_BUFFER_TRANSPORT_H_
Abstract interface for transport layer.
Definition: erpc_transport.h:35
Definition: erpc_inter_thread_buffer_transport.h:66
virtual erpc_status_t receive(MessageBuffer *message)
Prototype for receiving message.
Definition: erpc_inter_thread_buffer_transport.cpp:40
int32_t erpc_status_t
Type used for all status and error return values.
Definition: erpc_common.h:86
Transport(void)
Constructor.
Definition: erpc_transport.h:41
Represents a memory buffer containing a message.
Definition: erpc_message_buffer.h:36
Definition: erpc_arbitrated_client_manager.h:25
Very basic transport to send/receive messages between threads.
Definition: erpc_inter_thread_buffer_transport.h:44
Mutex.
Definition: erpc_threading.h:259
Simple semaphore class.
Definition: erpc_threading.h:359