private void parseLowerTransportLayerPDU(@NonNull final ControlMessage controlMessage) {
        //First we reassemble the transport layer message if its a segmented message
        reassembleLowerTransportControlPDU(controlMessage);
        final byte[] transportControlPdu = controlMessage.getTransportControlPdu();
        final int opCode = controlMessage.getOpCode();

        if (opCode == TransportLayerOpCodes.SAR_ACK_OPCODE) {
            final BlockAcknowledgementMessage acknowledgement = new BlockAcknowledgementMessage(transportControlPdu);
            controlMessage.setTransportControlMessage(acknowledgement);
        }

        if (opCode == TransportLayerOpCodes.HEARTBEAT_OPCODE) {
            final HeartbeatMessage heartbeatMessage = new HeartbeatMessage(controlMessage);
            controlMessage.setTransportControlMessage(heartbeatMessage);
        }
    }
Parse transport layer control pdu.

@param controlMessage underlying message containing the access pdu.
mesh/src/main/java/no/nordicsemi/android/mesh/transport/LowerTransportLayer.java