//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project
//
//File:  dss1bearercapability.h
//
//Version: $Revision: 1.1 $
//
//State: $State: Exp $
//
//Date: $Date: 1999/03/08 06:49:52 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Teemu Tynjälä
//
//Description:
//      This file contains the description of the bearer capability
//      information element in DSS1 specification.  This information element
//      is responsible for indicating the properties of the bearer used
//      in the phone call.  For the information element fields, look at
//      Q.931 pp. 64-72.
//      
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 

#ifndef __IE_DSS1BEARERCAPABILITY_H__
#define __IE_DSS1BEARERCAPABILITY_H__

#include "informationelement.h"

class ieDss1BearerCapability : public ieInformationElement
{

   public:
       //---------------------------------------------------
       // The constructor defaults to unrestricted digital
       // information, circuit mode, and 64 kbps.  Optional
       // fields to the IE may be added by using the separate
       // setXXX methods, and their value may be read by
       // the specific getXXX methods.
       //---------------------------------------------------
       ieDss1BearerCapability(
             pfByte infoTransferCapability_ = B0000_1000,
             pfByte transferMode_ = B0000_0000,
             pfByte infoTransferRate_ = B0001_0000);
       ieDss1BearerCapability(const ieDss1BearerCapability &other_);
       
       virtual ~ieDss1BearerCapability(void);
       const ieDss1BearerCapability &operator=(
                           const ieDss1BearerCapability &other_);
       
       pfIE *clone(void) const;
       ieDss1BearerCapability* narrow(pfIE *ie_);

       void setInfoTransferCapability(pfByte value_); 
       pfByte getInfoTransferCapability(void) const;

       void setTransferMode(pfByte value_);
       pfByte getTransferMode(void) const;

       void setInfoTransferRate(pfByte value_);
       pfByte getInfoTransferRate(void) const;

       void setRateMultiplier(pfByte value_);
       pfByte getRateMultiplier(void) const;

       void setUserInfoLayer1Protocol(pfByte value_);
       pfByte getUserInfoLayer1Protocol(void) const;

       void setSynchOrAsynch(pfByte value_);
       pfByte getSynchOrAsynch(void) const;
    
       void setInBandNegotiation(pfByte value_);
       pfByte getInBandNegotiation(void) const;

       void setUserRate(pfByte value_);
       pfByte getUserRate(void) const;

       void setIntermediateRate(pfByte value_);
       pfByte getIntermediateRate(void) const;

       void setNIConTx(pfByte value_);
       pfByte getNIConTx(void) const;

       void setNIConRx(pfByte value_);
       pfByte getNIConRx(void) const;

       void setFlowControlOnTx(pfByte value_);
       pfByte getFlowControlOnTx(void) const;

       void setFlowControlOnRx(pfByte value_);
       pfByte getFlowControlOnRx(void) const;

       void setRateAdaptationHeaderOrNot(pfByte value_);
       pfByte getRateAdaptationHeaderOrNot(void) const;

       void setMultiFrameSupport(pfByte value_);
       pfByte getMultiFrameSupport(void) const;
 
       void setModeOfOperation(pfByte value_);
       pfByte getModeOfOperation(void) const;

       void setLLInegotiation(pfByte value_);
       pfByte getLLInegotiation(void) const;

       void setInBandOutBandNegotiation(pfByte value_);
       pfByte getInBandOutBandNegotiation(void) const;

       void setNumberOfStopBits(pfByte value_);
       pfByte getNumberOfStopBits(void) const;

       void setNumberOfDataBits(pfByte value_);
       pfByte getNumberOfDataBits(void) const;

       void setParityInfo(pfByte value_);
       pfByte getParityInfo(void) const;

       void setDuplexMode(pfByte value_);
       pfByte getDuplexMode(void) const;

       void setModemType(pfByte value_);
       pfByte getModemType(void) const;

       void setUserInfoLayer2Protocol(pfByte value_);
       pfByte getUserInfoLayer2Protocol(void) const;

       void setUserInfoLayer3Protocol(pfByte value_);
       pfByte getUserInfoLayer3Protocol(void) const;

   private:
       pfByte _infoTransferCapability;
       pfByte _transferMode;
       pfByte _infoTransferRate;
       pfByte _rateMultiplier;
       pfByte _userInfoLayer1Protocol;
       pfByte _synchOrAsynch;
       pfByte _inBandNegotiation;
       pfByte _userRate;
       pfByte _intermediateRate;
       pfByte _NIConTx;
       pfByte _NIConRx;
       pfByte _flowControlOnTx;
       pfByte _flowControlOnRx;
       pfByte _rateAdaptationHeaderOrNot;
       pfByte _multiFrameSupport;
       pfByte _modeOfOperation;
       pfByte _LLInegotiation;
       pfByte _inBandOutBandNegotiation;
       pfByte _numberOfStopBits;
       pfByte _numberOfDataBits;
       pfByte _parityInfo;
       pfByte _duplexMode;
       pfByte _modemType;
       pfByte _userInfoLayer2Protocol;
       pfByte _userInfoLayer3Protocol; 
};

#endif // __IE_BEARERCAPABILITY_H__





