Exemple #1
0
            /// <summary>
            /// Run a the message receiver and state machines once. Can be used if no threads should be used.
            /// </summary>
            public void Run()
            {
                if (initialized == false)
                {
                    linkLayer = new LinkLayer(buffer, linkLayerParameters, transceiver, DebugLog);
                    linkLayer.LinkLayerMode = linkLayerMode;

                    if (linkLayerMode == LinkLayerMode.BALANCED)
                    {
                        PrimaryLinkLayerBalanced primaryLinkLayerBalanced = new PrimaryLinkLayerBalanced(linkLayer, GetUserData, DebugLog);
                        primaryLinkLayerBalanced.LinkLayerAddressOtherStation = linkLayerAddressOtherStation;

                        linkLayer.SetPrimaryLinkLayer(primaryLinkLayerBalanced);

                        linkLayer.SetSecondaryLinkLayer(new SecondaryLinkLayerBalanced(linkLayer, linkLayerAddressOtherStation, HandleApplicationLayer, DebugLog));
                    }
                    else
                    {
                        linkLayer.SetSecondaryLinkLayer(new SecondaryLinkLayerUnbalanced(linkLayer, linkLayerAddress, this, DebugLog));
                    }

                    initialized = true;
                }

                if (fileServer != null)
                {
                    fileServer.HandleFileTransmission();
                }

                linkLayer.Run();
            }
Exemple #2
0
        public CS101MasterBalanced(SerialPort port, LinkLayerParameters llParameters)
        {
            this.port = port;
            this.linkLayerParameters = llParameters;
            this.transceiver         = new SerialTransceiverFT12(port, linkLayerParameters, DebugLog);

            linkLayer = new LinkLayer(buffer, linkLayerParameters, transceiver, DebugLog);

            primaryLinkLayer = new PrimaryLinkLayerBalanced(linkLayer, GetUserData, DebugLog);

            linkLayer.SetPrimaryLinkLayer(primaryLinkLayer);
            linkLayer.SetSecondaryLinkLayer(new SecondaryLinkLayerBalanced(linkLayer, 0, HandleApplicationLayer, DebugLog));

            this.fileClient = null;
        }
Exemple #3
0
        public CS101Master(SerialPort port, 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(port, 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);
                secondaryLinkLayer = new SecondaryLinkLayerBalanced(linkLayer, 0, HandleApplicationLayer, DebugLog);
                linkLayer.SetSecondaryLinkLayer(secondaryLinkLayer);

                userDataQueue = new Queue <BufferFrame>();
            }
            else
            {
                linkLayerUnbalanced = new PrimaryLinkLayerUnbalanced(linkLayer, this, DebugLog);
                linkLayer.SetPrimaryLinkLayer(linkLayerUnbalanced);
            }

            this.port = port;

            this.fileClient = null;
        }