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 }
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); }