
/**Permet de créer une trame HDLC. Elle hérite de la classe PaquetX25 car on doit encapsuler les trames X25 dans les trames HDLC.  
 *@author Julien VAN DEN BOSSCHE / Benoît MOULIN   cmoi__at__julienvdb__dot__com / bmoulin@etu.info.unicaen.fr
 *@param ns le bit ns : numéro du paquet envoyé
 *@param ns le bit pf : 0 ou 1, demande d'acquittement explicite
 *@param ns le bit nr : numéro des paquets recues, attente du paquet de numéro nr
 */
public class TrameHDLC extends PaquetX25{
    String ns;
    String pf;
    String nr;

    /**Permet de créer une trame HDLC dans le cas(côté X25) d'une demande d'établissement d'un CV
     *@param extr l'extrémité qui envoie
     *@param ns le bit ns : numéro du paquet envoyé
     *@param ns le bit pf : 0 ou 1, demande d'acquittement explicite
     *@param ns le bit nr : numéro des paquets recues, attente du paquet de numéro nr
     *@param adr1 l'adresse de l'emetteur
     *@param adr2 l'adresse du récepteur
     *@param vl la VL
     *@param d la donnée
     */  
    public TrameHDLC(Extremite extr, String ns, String pf, String nr,AdresseX25 adr1, AdresseX25 adr2, Voie vl, String d){
	super(extr, adr1, adr2, vl, d);
	this.ns = ns;
	this.pf = pf;
	this.nr = nr;
    }

    /**Permet de créer une trame HDLC dans le cas(côté X25) d'un transfert de données ou d'une DL     
     *@param extr l'extrémité qui envoie
     *@param ns le bit ns : numéro du paquet envoyé
     *@param ns le bit pf : 0 ou 1, demande d'acquittement explicite
     *@param ns le bit nr : numéro des paquets recues, attente du paquet de numéro nr
     *@param vl la VL
     *@param d la donnée
     */  
    public TrameHDLC(Extremite extr, String ns, String pf, String nr, Voie vl, String d){
	super(extr, vl, d);
	this.ns = ns;
	this.pf = pf;
	this.nr = nr;
    }

    /**Permet de créer une trame HDLC dans le cas d'une trame RR par exemple     
     *@param extr l'extrémité qui envoie
     *@param ns le bit ns : numéro du paquet envoyé
     *@param ns le bit pf : 0 ou 1, demande d'acquittement explicite
     *@param ns le bit nr : numéro des paquets recues, attente du paquet de numéro nr
     */  
    public TrameHDLC(Extremite extr, String ns, String pf, String nr){
	super(extr);
	this.ns = ns;
	this.pf = pf;
	this.nr = nr;
    }

    /**retourne le bit ns
     */
    public String getNS(){
	return ns;
    }

    /**retourne le bit pf
     */
    public String getPF(){
	return pf;
    }
    
    /**retourne le bit nr
     */
    public String getNR(){
	return nr;
    }
    
    /**modifie le bit ns
     *@param n la valeur du bit
     */
    public void setNS(String n){
	ns = n;
    }

    /**modifie le bit pf
     *@param n la valeur du bit
     */
    public void setPF(String n){
	pf = n;
    }
    
    /**modifie le bit nr
     *@param n la valeur du bit
     */
    public void setNR(String n){
	nr = n;
    }

    /**redéfinition de la méthode toString()
     */
    public String toString(){
	String mess="";	
	if(getType()==0){
	mess = getExtremite().getNumero()+"-"+getNS()+"/"+ getPF()+"/"+getNR();
	}
	if(getType()==1){
	    mess= getExtremite().getNumero()+"-"+getNS()+"/"+ getPF()+"/"+getNR()+" "+getAdresseEmetteur().getNom()+","+getAdresseRecepteur().getNom()+","+getVL().getNom()+","+getDonnees();
	}
	if(getType()==2){
	    mess = getExtremite().getNumero()+"-"+getNS()+"/"+ getPF()+"/"+getNR()+" "+getVL().getNom()+","+getDonnees();
	}
	return mess;
    }
}
