MCPcopy Create free account
hub / github.com/EIPStackGroup/OpENer / CreateEncapsulationStructure

Function CreateEncapsulationStructure

source/src/enet_encap/encap.c:773–792  ·  view source on GitHub ↗

@brief copy data from pa_buf in little endian to host in structure. * @param receive_buffer Received message * @param receive_buffer_length Length of the data in receive_buffer. Might be more than one message * @param encapsulation_data structure to which data shall be copied * @return return difference between bytes in pa_buf an data_length * 0 .. full package received *

Source from the content-addressed store, hash-verified

771 * <0 .. only fragment of data portion received
772 */
773EipInt16 CreateEncapsulationStructure(const EipUint8 *receive_buffer,
774 int receive_buffer_length,
775 EncapsulationData *const encapsulation_data)
776{
777 encapsulation_data->communication_buffer_start =
778 (EipUint8 *) receive_buffer;
779 encapsulation_data->command_code = GetIntFromMessage(&receive_buffer);
780 encapsulation_data->data_length = GetIntFromMessage(&receive_buffer);
781 encapsulation_data->session_handle = GetDintFromMessage(&receive_buffer);
782 encapsulation_data->status = GetDintFromMessage(&receive_buffer);
783
784 memcpy(encapsulation_data->sender_context, receive_buffer,
785 kSenderContextSize);
786 receive_buffer += kSenderContextSize;
787 encapsulation_data->options = GetDintFromMessage(&receive_buffer);
788 encapsulation_data->current_communication_buffer_position =
789 (EipUint8 *) receive_buffer;
790 return (receive_buffer_length - ENCAPSULATION_HEADER_LENGTH
791 - encapsulation_data->data_length);
792}
793
794/** @brief Check if received package belongs to registered session.
795 * @param receive_data Received data.

Callers 3

TESTFunction · 0.85

Calls 2

GetIntFromMessageFunction · 0.85
GetDintFromMessageFunction · 0.85

Tested by 1

TESTFunction · 0.68