Ejemplo n.º 1
0
        private void SendData(FrameKind fk, byte frameNb, byte frameExpected, Packet[] buffer)
        {
            Packet data = null;

            if (fk == FrameKind.Data)
            {
                data = buffer[frameNb % _NR_BUFS];
            }
            else
            {
                data = new Packet {
                    Data = new byte[1] {
                        (byte)0
                    }
                }
            };                                                //envoie packet de 0. Pas utilise par application
            if (fk == FrameKind.Nak)
            {
                _no_nak = false;
            }

            // Construct and send a data frame.
            Frame frame = new Frame
            {
                /* insert packet into frame */
                Kind = fk,
                Info = data,
                /* insert sequence number into frame */
                Seq = frameNb,
                /* piggyback ack */
                Ack = (byte)((frameExpected + _MAX_SEQ) % (_MAX_SEQ + 1))
            };

            //Encode frame with Hamming protocol
            Frame frameEncoded = Hamming.encodeHamming(frame);

            /* transmit the frame */
            ToPhysicalLayer(frameEncoded);
            /* start the timer running */
            if (fk == FrameKind.Data)
            {
                StartTimer(frameNb % _NR_BUFS);
            }

            StopAckTimer();
        }

        #endregion
    }
Ejemplo n.º 2
0
        private void SendData(byte frameNb, byte frameExpected, Packet[] buffer)
        {
            // Construct and send a data frame.
            Frame frame = new Frame
            {
                /* insert packet into frame */
                Info = buffer[frameNb],
                /* insert sequence number into frame */
                Seq = frameNb,
                /* piggyback ack */
                Ack = (byte)((frameExpected + _MAX_SEQ) % (_MAX_SEQ + 1))
            };

            //Encode frame with Hamming protocol
            Frame frameEncoded = Hamming.encodeHamming(frame);

            /* transmit the frame */
            //ToPhysicalLayer(frame);
            ToPhysicalLayer(frameEncoded);
            /* start the timer running */
            StartTimer(frameNb);
        }