//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / IE
//
//File: callstate.h
//
//Version: $Revision: 1.3 $
//
//State: $State: Exp $
//
//Date: $Date: 1999/03/08 07:25:51 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Sami Raatikainen
//      Teemu Tynjälä
//
//Description:
//      Call State parameter (Q.931 and Q.2931)
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 
//

#ifndef __IE_CALLSTATE_H__
#define __IE_CALLSTATE_H__

#include "informationelement.h"

class ieCallState : public ieInformationElement
{
    public:
        explicit ieCallState(pfUlong callState_);
        ieCallState(const ieCallState &other_);

        virtual ~ieCallState(void);
        const ieCallState &operator=(const ieCallState &other_);
        
        pfIE *clone(void) const;
        static ieCallState* narrow(pfIE *ie_);
        
        void setCallState(pfUlong value_);
        pfUlong getCallState(void) const;
        
        enum callStateValue
        {
            U0, N0  = B0000_0000,
            REST0   = B0000_0000,
            U1, N1  = B0000_0001,
            U2, N2  = B0000_0010,
            U3, N3  = B0000_0011,
            U4, N4  = B0000_0100,
            U6, N6  = B0000_0110,
            U7, N7  = B0000_0111,
            U8, N8  = B0000_1000,
            U9, N9  = B0000_1001,
            U10,N10 = B0000_1010,
            U11,N11 = B0000_1011,
            U12,N12 = B0000_1100,
            U15,N15 = B0000_1111,
            U17,N17 = B0001_0001,
            U19,N19 = B0001_0011,
            N22     = B0001_0110,
            U25,N25 = B0001_1001,
            REST1   = B0011_1101,
            REST2   = B0011_1110
        };
        
    private:
        pfUlong _value;
};

#endif // __IE_CALLSTATE_H__
