System.IO.BACnet.BacnetClient.EncodeSegmentHeader C# (CSharp) Method

EncodeSegmentHeader() private method

private EncodeSegmentHeader ( BacnetAddress adr, byte invoke_id, Segmentation segmentation, BacnetConfirmedServices service, bool more_follows ) : EncodeBuffer
adr BacnetAddress
invoke_id byte
segmentation Segmentation
service BacnetConfirmedServices
more_follows bool
return EncodeBuffer
        private EncodeBuffer EncodeSegmentHeader(BacnetAddress adr, byte invoke_id, Segmentation segmentation, BacnetConfirmedServices service, bool more_follows)
        {
            EncodeBuffer buffer;
            bool is_segmented = false;
            if (segmentation == null)
                buffer = GetEncodeBuffer(m_client.HeaderLength);
            else
            {
                buffer = segmentation.buffer;
                is_segmented = segmentation.sequence_number > 0 | more_follows;
            }
            buffer.Reset(m_client.HeaderLength);

            //encode
            NPDU.Encode(buffer, BacnetNpduControls.PriorityNormalMessage, adr.RoutedSource, null, DEFAULT_HOP_COUNT, BacnetNetworkMessageTypes.NETWORK_MESSAGE_WHO_IS_ROUTER_TO_NETWORK, 0);

            //set segments limits
            buffer.max_offset = buffer.offset + GetMaxApdu();
            int apdu_header = APDU.EncodeComplexAck(buffer, BacnetPduTypes.PDU_TYPE_COMPLEX_ACK | (is_segmented ? BacnetPduTypes.SEGMENTED_MESSAGE | BacnetPduTypes.SERVER : 0) | (more_follows ? BacnetPduTypes.MORE_FOLLOWS : 0), service, invoke_id, segmentation != null ? segmentation.sequence_number : (byte)0, segmentation != null ? segmentation.window_size : (byte)0);
            buffer.min_limit = (GetMaxApdu() - apdu_header) * (segmentation != null ? segmentation.sequence_number : 0);

            return buffer;
        }
BacnetClient