//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / IE
//
//File: atmcellrate.h
//
//Version: $Revision: 1.8 $
//
//State: $State: Exp $
//
//Date: $Date: 1999/03/10 15:01:35 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Sami Raatikainen
//      Timo Kokkonen
//
//Description:
//      BISUP: ATM Cell Rate
//      UNI: ATM Traffic Descriptor
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 
//

#ifndef __IE_ATMCELLRATE_H__
#define __IE_ATMCELLRATE_H__

#include "informationelement.h"

class ieATMCellRate : public ieInformationElement
{
    public:
        ieATMCellRate(void);
        ieATMCellRate(const ieATMCellRate &other_);
        virtual ~ieATMCellRate(void);
        const ieATMCellRate &operator=(const ieATMCellRate &other_);

        pfIE *clone(void) const;

        // Peak Cell Rate
        void setForwardPCR0(pfUlong value_);
        void setForwardPCR1(pfUlong value_);
        void setBackwardPCR0(pfUlong value_);
        void setBackwardPCR1(pfUlong value_);
        pfUlong getForwardPCR0(void) const;
        pfUlong getForwardPCR1(void) const;
        pfUlong getBackwardPCR0(void) const;
        pfUlong getBackwardPCR1(void) const;
        bool isForwardPCR0(void) const;
        bool isForwardPCR1(void) const;
        bool isBackwardPCR0(void) const;
        bool isBackwardPCR1(void) const;
        
        // Sustainable Cell Rate
        void setForwardSCR0(pfUlong value_);
        void setForwardSCR1(pfUlong value_);
        void setBackwardSCR0(pfUlong value_);
        void setBackwardSCR1(pfUlong value_);
        pfUlong getForwardSCR0(void) const;
        pfUlong getForwardSCR1(void) const;
        pfUlong getBackwardSCR0(void) const;
        pfUlong getBackwardSCR1(void) const;
        bool isForwardSCR0(void) const;
        bool isForwardSCR1(void) const;
        bool isBackwardSCR0(void) const;
        bool isBackwardSCR1(void) const;
        
        // Max Burst Size
        void setForwardMBS0(pfUlong value_);
        void setForwardMBS1(pfUlong value_);
        void setBackwardMBS0(pfUlong value_);
        void setBackwardMBS1(pfUlong value_);
        pfUlong getForwardMBS0(void) const;
        pfUlong getForwardMBS1(void) const;
        pfUlong getBackwardMBS0(void) const;
        pfUlong getBackwardMBS1(void) const;
        bool isForwardMBS0(void) const;
        bool isForwardMBS1(void) const;
        bool isBackwardMBS0(void) const;
        bool isBackwardMBS1(void) const;


        void setBestEffort(void);
        bool isBestEffortSet(void) const;
        void setTaggingForward(void);
        void setTaggingBackward(void);
        bool isTaggingForwardSet(void) const;
        bool isTaggingBackwardSet(void) const;

    private:
        pfUlong _forwardPCR0;
        pfUlong _forwardPCR1;
        pfUlong _backwardPCR0;
        pfUlong _backwardPCR1;

        pfUlong _forwardSCR0;
        pfUlong _forwardSCR1;
        pfUlong _backwardSCR0;
        pfUlong _backwardSCR1;

        pfUlong _forwardMBS0;
        pfUlong _forwardMBS1;
        pfUlong _backwardMBS0;
        pfUlong _backwardMBS1;
        
        bool _forwardPCR0set;
        bool _forwardPCR1set;
        bool _backwardPCR0set;
        bool _backwardPCR1set;
        
        bool _forwardSCR0set;
        bool _forwardSCR1set;
        bool _backwardSCR0set;
        bool _backwardSCR1set;

        bool _forwardMBS0set;
        bool _forwardMBS1set;
        bool _backwardMBS0set;
        bool _backwardMBS1set;        

        bool _bestEffort;
        bool _tagF;
        bool _tagB;
};

#endif // __IE_ATMCELLRATE_H__
