public CS101Master(Stream serialStream, LinkLayerMode mode, LinkLayerParameters llParams = null, ApplicationLayerParameters alParams = null) { if (llParams == null) { this.linkLayerParameters = new LinkLayerParameters(); } else { this.linkLayerParameters = llParams; } if (alParams == null) { this.appLayerParameters = new ApplicationLayerParameters(); } else { this.appLayerParameters = alParams; } this.transceiver = new SerialTransceiverFT12(serialStream, linkLayerParameters, DebugLog); linkLayer = new LinkLayer(buffer, linkLayerParameters, transceiver, DebugLog); linkLayer.LinkLayerMode = mode; if (mode == LinkLayerMode.BALANCED) { linkLayer.DIR = true; primaryLinkLayer = new PrimaryLinkLayerBalanced(linkLayer, GetUserData, DebugLog); linkLayer.SetPrimaryLinkLayer(primaryLinkLayer); linkLayer.SetSecondaryLinkLayer(new SecondaryLinkLayerBalanced(linkLayer, 0, HandleApplicationLayer, DebugLog)); userDataQueue = new Queue <BufferFrame>(); } else { linkLayerUnbalanced = new PrimaryLinkLayerUnbalanced(linkLayer, this, DebugLog); linkLayer.SetPrimaryLinkLayer(linkLayerUnbalanced); } this.fileClient = null; }