eRPC API Reference  Rev. 1.8.0
NXP Semiconductors
erpc_framed_transport.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014-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__FRAMED_TRANSPORT_H_
11 #define _EMBEDDED_RPC__FRAMED_TRANSPORT_H_
12 
13 #include "erpc_config_internal.h"
14 #include "erpc_message_buffer.h"
15 #include "erpc_transport.h"
16 
17 #include <cstring>
18 
19 #if ERPC_THREADS
20 #include "erpc_threading.h"
21 #endif
22 
29 // Classes
32 
33 namespace erpc {
34 
55 class FramedTransport : public Transport
56 {
57 public:
61  FramedTransport(void);
62 
66  virtual ~FramedTransport(void);
67 
85  virtual erpc_status_t receive(MessageBuffer *message);
86 
95  virtual erpc_status_t send(MessageBuffer *message);
96 
98  struct Header
99  {
100  uint16_t m_messageSize;
101  uint16_t m_crc;
102  };
103 
109  virtual void setCrc16(Crc16 *crcImpl);
110 
111 protected:
114 #if ERPC_THREADS
117 #endif
118 
128  virtual erpc_status_t underlyingSend(const uint8_t *data, uint32_t size) = 0;
129 
139  virtual erpc_status_t underlyingReceive(uint8_t *data, uint32_t size) = 0;
140 };
141 
142 } // namespace erpc
143 
146 #endif // _EMBEDDED_RPC__FRAMED_TRANSPORT_H_
Abstract interface for transport layer.
Definition: erpc_transport.h:36
int32_t erpc_status_t
Type used for all status and error return values.
Definition: erpc_common.h:86
uint16_t m_messageSize
Size in bytes of the message, excluding the header.
Definition: erpc_framed_transport.h:100
Base class for framed transport layers.
Definition: erpc_framed_transport.h:55
virtual erpc_status_t receive(MessageBuffer *message)
Receives an entire message.
Definition: erpc_framed_transport.cpp:40
Contents of the header that prefixes each message.
Definition: erpc_framed_transport.h:98
virtual void setCrc16(Crc16 *crcImpl)
This functions sets the CRC-16 implementation.
Definition: erpc_framed_transport.cpp:34
uint16_t m_crc
CRC-16 over the message data.
Definition: erpc_framed_transport.h:101
virtual ~FramedTransport(void)
Codec destructor.
Definition: erpc_framed_transport.cpp:32
Represents a memory buffer containing a message.
Definition: erpc_message_buffer.h:37
virtual erpc_status_t underlyingReceive(uint8_t *data, uint32_t size)=0
Subclasses must implement this function to receive data.
Mutex m_sendLock
Mutex protecting send.
Definition: erpc_framed_transport.h:115
Definition: erpc_arbitrated_client_manager.h:25
FramedTransport(void)
Constructor.
Definition: erpc_framed_transport.cpp:22
virtual erpc_status_t underlyingSend(const uint8_t *data, uint32_t size)=0
Subclasses must implement this function to send data.
Class for compute crc16.
Definition: erpc_crc16.h:29
Crc16 * m_crcImpl
Definition: erpc_framed_transport.h:112
Mutex m_receiveLock
Mutex protecting receive.
Definition: erpc_framed_transport.h:116
virtual erpc_status_t send(MessageBuffer *message)
Function to send prepared message.
Definition: erpc_framed_transport.cpp:88
Mutex.
Definition: erpc_threading.h:307