Skip to content

Commit 6c67966

Browse files
committed
C support multiple clients
Signed-off-by: Cervenka Dusan <cervenka@acrios.com>
1 parent 626e7e5 commit 6c67966

File tree

54 files changed

+852
-428
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+852
-428
lines changed

erpc_c/infra/erpc_arbitrated_client_manager.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,13 @@ class ArbitratedClientManager : public ClientManager
5858
*/
5959
void setArbitrator(TransportArbitrator *arbitrator);
6060

61+
/*!
62+
* @brief Gets the transport arbitrator instance.
63+
*
64+
* @return TransportArbitrator * Transport arbitrator instance.
65+
*/
66+
TransportArbitrator * getArbitrator(void) { return m_arbitrator; };
67+
6168
protected:
6269
TransportArbitrator *m_arbitrator; //!< Optional transport arbitrator. May be NULL.
6370

erpc_c/infra/erpc_client_manager.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,6 @@ bool nestingDetection = false;
2424
#endif
2525
#endif
2626

27-
void ClientManager::setTransport(Transport *transport)
28-
{
29-
m_transport = transport;
30-
}
31-
3227
RequestContext ClientManager::createRequest(bool isOneway)
3328
{
3429
// Create codec to read and write the request.

erpc_c/infra/erpc_client_manager.h

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313

1414
#ifdef __cplusplus
1515
#include "erpc_client_server_common.h"
16-
#include "erpc_codec.h"
17-
#include "erpc_config_internal.h"
1816
#if ERPC_NESTED_CALLS
1917
#include "erpc_server.h"
2018
#include "erpc_threading.h"
@@ -32,6 +30,9 @@ extern "C" {
3230
typedef void (*client_error_handler_t)(erpc_status_t err,
3331
uint32_t functionID); /*!< eRPC error handler function type. */
3432

33+
//! @brief Opaque client object type.
34+
typedef struct ClientType *erpc_client_t;
35+
3536
#ifdef __cplusplus
3637
}
3738

@@ -60,9 +61,6 @@ class ClientManager : public ClientServerCommon
6061
*/
6162
ClientManager(void)
6263
: ClientServerCommon()
63-
, m_messageFactory(NULL)
64-
, m_codecFactory(NULL)
65-
, m_transport(NULL)
6664
, m_sequence(0)
6765
, m_errorHandler(NULL)
6866
#if ERPC_NESTED_CALLS
@@ -77,29 +75,6 @@ class ClientManager : public ClientServerCommon
7775
*/
7876
virtual ~ClientManager(void) {}
7977

80-
/*!
81-
* @brief This function sets message buffer factory to use.
82-
*
83-
* @param[in] factory Message buffer factory to use.
84-
*/
85-
void setMessageBufferFactory(MessageBufferFactory *factory) { m_messageFactory = factory; }
86-
87-
/*!
88-
* @brief This function sets codec factory to use.
89-
*
90-
* @param[in] factory Codec factory to use.
91-
*/
92-
void setCodecFactory(CodecFactory *factory) { m_codecFactory = factory; }
93-
94-
/*!
95-
* @brief This function sets transport layer to use.
96-
*
97-
* It also set messageBufferFactory to the same as in transport layer.
98-
*
99-
* @param[in] transport Transport layer to use.
100-
*/
101-
void setTransport(Transport *transport);
102-
10378
/*!
10479
* @brief This function creates request context.
10580
*
@@ -155,9 +130,6 @@ class ClientManager : public ClientServerCommon
155130
#endif
156131

157132
protected:
158-
MessageBufferFactory *m_messageFactory; //!< Message buffer factory to use.
159-
CodecFactory *m_codecFactory; //!< Codec to use.
160-
Transport *m_transport; //!< Transport layer to use.
161133
uint32_t m_sequence; //!< Sequence number.
162134
client_error_handler_t m_errorHandler; //!< Pointer to function error handler.
163135
#if ERPC_NESTED_CALLS

erpc_c/infra/erpc_client_server_common.h

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#define _EMBEDDED_RPC__CLIENTSERVERCOMMON_H_
1212

1313
#include "erpc_config_internal.h"
14+
#include "erpc_codec.h"
1415
#if ERPC_MESSAGE_LOGGING
1516
#include "erpc_message_loggers.h"
1617
#endif
@@ -65,7 +66,7 @@ class ClientServerCommon
6566
#endif
6667
#if ERPC_MESSAGE_LOGGING
6768
#ifdef ERPC_OTHER_INHERITANCE
68-
,
69+
,
6970
#else
7071
#define ERPC_OTHER_INHERITANCE 1
7172
:
@@ -74,19 +75,70 @@ class ClientServerCommon
7475
#endif
7576
#if ERPC_PRE_POST_ACTION
7677
#ifdef ERPC_OTHER_INHERITANCE
77-
,
78+
,
7879
#else
7980
#define ERPC_OTHER_INHERITANCE 1
8081
:
8182
#endif
8283
PrePostAction()
8384
#endif
85+
#ifdef ERPC_OTHER_INHERITANCE
86+
,
87+
#else
88+
#define ERPC_OTHER_INHERITANCE 1
89+
:
90+
#endif
91+
m_messageFactory(NULL)
92+
, m_codecFactory(NULL)
93+
, m_transport(NULL)
8494
{};
8595

8696
/*!
8797
* @brief ClientServerCommon destructor
8898
*/
8999
~ClientServerCommon(void){};
100+
101+
/*!
102+
* @brief This function sets message buffer factory to use.
103+
*
104+
* @param[in] factory Message buffer factory to use.
105+
*/
106+
void setMessageBufferFactory(MessageBufferFactory *factory) { m_messageFactory = factory; }
107+
108+
/*!
109+
* @brief This function sets codec factory to use.
110+
*
111+
* @param[in] factory Codec factory to use.
112+
*/
113+
void setCodecFactory(CodecFactory *factory) { m_codecFactory = factory; }
114+
115+
/*!
116+
* @brief This function sets codec factory to use.
117+
*
118+
* @return CodecFactory * Codec factory to use.
119+
*/
120+
CodecFactory * getCodecFactory(void) { return m_codecFactory; }
121+
122+
/*!
123+
* @brief This function sets transport layer to use.
124+
*
125+
* It also set messageBufferFactory to the same as in transport layer.
126+
*
127+
* @param[in] transport Transport layer to use.
128+
*/
129+
void setTransport(Transport *transport) { m_transport = transport; }
130+
131+
/*!
132+
* @brief This function gets transport instance.
133+
*
134+
* @return Transport * Pointer to transport instance.
135+
*/
136+
Transport * getTransport(void) { return m_transport; }
137+
138+
protected:
139+
MessageBufferFactory *m_messageFactory; //!< Message buffer factory to use.
140+
CodecFactory *m_codecFactory; //!< Codec to use.
141+
Transport *m_transport; //!< Transport layer to use.
90142
};
91143

92144
} // namespace erpc

erpc_c/infra/erpc_framed_transport.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,13 @@ class FramedTransport : public Transport
109109
*/
110110
virtual void setCrc16(Crc16 *crcImpl) override;
111111

112+
/*!
113+
* @brief This functions gets the CRC-16 object.
114+
*
115+
* @return Crc16* Pointer to CRC-16 object containing crc-16 compute function.
116+
*/
117+
virtual Crc16 * getCrc16() override { return m_crcImpl; }
118+
112119
protected:
113120
Crc16 *m_crcImpl; /*!< CRC object. */
114121

erpc_c/infra/erpc_server.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,6 @@ extern bool nestingDetection;
2121
bool nestingDetection = false;
2222
#endif
2323

24-
void Server::setTransport(Transport *transport)
25-
{
26-
m_transport = transport;
27-
}
28-
2924
void Server::addService(Service *service)
3025
{
3126
if (m_firstService == NULL)

erpc_c/infra/erpc_server.h

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
#define _EMBEDDED_RPC__SERVER_H_
1313

1414
#include "erpc_client_server_common.h"
15-
#include "erpc_codec.h"
1615
#include "erpc_config_internal.h"
1716
#if ERPC_NESTED_CALLS
1817
#include "erpc_client_manager.h"
@@ -110,9 +109,6 @@ class Server : public ClientServerCommon
110109
*/
111110
Server(void)
112111
: ClientServerCommon()
113-
, m_messageFactory(NULL)
114-
, m_codecFactory(NULL)
115-
, m_transport(NULL)
116112
, m_firstService(NULL)
117113
{
118114
}
@@ -122,29 +118,6 @@ class Server : public ClientServerCommon
122118
*/
123119
virtual ~Server(void) {}
124120

125-
/*!
126-
* @brief Set MessageBufferFactory to use.
127-
*
128-
* @param[in] factory MessageBufferFactory to use.
129-
*/
130-
void setMessageBufferFactory(MessageBufferFactory *factory) { m_messageFactory = factory; }
131-
132-
/*!
133-
* @brief Set CodecFactory to use.
134-
*
135-
* @param[in] factory CodecFactory to use.
136-
*/
137-
void setCodecFactory(CodecFactory *factory) { m_codecFactory = factory; }
138-
139-
/*!
140-
* @brief This function sets transport layer to use.
141-
*
142-
* It also set messageBufferFactory to the same as in transport layer.
143-
*
144-
* @param[in] transport Transport layer to use.
145-
*/
146-
void setTransport(Transport *transport);
147-
148121
/*!
149122
* @brief Add service.
150123
*
@@ -170,9 +143,6 @@ class Server : public ClientServerCommon
170143
virtual void stop(void) = 0;
171144

172145
protected:
173-
MessageBufferFactory *m_messageFactory; /*!< Contains MessageBufferFactory to use. */
174-
CodecFactory *m_codecFactory; /*!< Contains CodecFactory to use. */
175-
Transport *m_transport; /*!< Transport layer used to send and receive data. */
176146
Service *m_firstService; /*!< Contains pointer to first service. */
177147

178148
/*!

erpc_c/infra/erpc_transport.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,13 @@ class Transport
8585
* @param[in] crcImpl Object containing crc-16 compute function.
8686
*/
8787
virtual void setCrc16(Crc16 *crcImpl) { (void)crcImpl; }
88+
89+
/*!
90+
* @brief This functions gets the CRC-16 object.
91+
*
92+
* @return Crc16* Pointer to CRC-16 object containing crc-16 compute function.
93+
*/
94+
virtual Crc16 * getCrc16() { return NULL; }
8895
};
8996

9097
/*!

erpc_c/infra/erpc_transport_arbitrator.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,12 @@ void TransportArbitrator::setCrc16(Crc16 *crcImpl)
5151
m_sharedTransport->setCrc16(crcImpl);
5252
}
5353

54+
Crc16 *TransportArbitrator::getCrc16(void)
55+
{
56+
erpc_assert(m_sharedTransport != NULL);
57+
return m_sharedTransport->getCrc16();
58+
}
59+
5460
bool TransportArbitrator::hasMessage(void)
5561
{
5662
erpc_assert((m_sharedTransport != NULL) && ("shared transport is not set" != NULL));

erpc_c/infra/erpc_transport_arbitrator.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,27 @@ class TransportArbitrator : public Transport
6060
*/
6161
void setSharedTransport(Transport *shared) { m_sharedTransport = shared; }
6262

63+
/*!
64+
* @brief This function returns shared client/server transport.
65+
*
66+
* @return Transport * Returns shared client/server transport.
67+
*/
68+
Transport * getSharedTransport(void) { return m_sharedTransport; }
69+
6370
/*!
6471
* @brief This function set codec.
6572
*
6673
* @param[in] codec Codec.
6774
*/
6875
void setCodec(Codec *codec) { m_codec = codec; }
6976

77+
/*!
78+
* @brief This function get codec.
79+
*
80+
* @return Codec * Pointer to codec used within transport.
81+
*/
82+
Codec * getCodec(void) { return m_codec; }
83+
7084
/*!
7185
* @brief Prototype for receiving message.
7286
*
@@ -121,6 +135,12 @@ class TransportArbitrator : public Transport
121135
*/
122136
virtual void setCrc16(Crc16 *crcImpl) override;
123137

138+
/*!
139+
* @brief This functions gets the CRC-16 object.
140+
*
141+
* @return Crc16* Pointer to CRC-16 object containing crc-16 compute function.
142+
*/
143+
virtual Crc16 * getCrc16(void) override;
124144
/*!
125145
* @brief Check if the underlying shared transport has a message
126146
*

0 commit comments

Comments
 (0)