//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project
//
//File:  channelidentification.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 channel identification
//      information element in DSS1 specification.  This information element
//      is responsible for indicating the channel number or map to be 
//      used in the call that is being set up.  See Q.931 pp. 83-86.
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 

#ifndef __IE_CHANNELIDENTIFICATION_H__
#define __IE_CHANNELIDENTIFICATION_H__

#include "informationelement.h"

class ieChannelIdentification : public ieInformationElement
{

   public:
       //------------------------------------------------------------
       // The constructor defaults to selecting B1 (64 kbps) channel
       // which is preferred, not exclusive
       //------------------------------------------------------------
       ieChannelIdentification(pfByte ifaceIdPresent_ = B0000_0000,
                               pfByte ifaceType_ = B0000_0000,
                               pfByte preferredOrExclusive_ = B0000_0000,
                               pfByte DchannelInd_ = B0000_0000,
                               pfByte infoChannelSelection_ = B0000_0001);
       ieChannelIdentification(const ieChannelIdentification &other_);
    
       virtual ~ieChannelIdentification(void);
       const ieChannelIdentification &operator=(
                             const ieChannelIdentification &other_);

       pfIE *clone(void) const;
       ieChannelIdentification *narrow(pfIE *ie_);

       void setIfaceIdPresent(pfByte value_);
       pfByte getIfaceIdPresent(void) const;
 
       void setIfaceType(pfByte value_);
       pfByte getIfaceType(void) const;
      
       void setPreferredOrExclusive(pfByte value_);
       pfByte getPreferredOrExclusive(void) const;

       void setDchannelInd(pfByte value_);
       pfByte getDchannelInd(void) const;

       void setInfoChannelSelection(pfByte value_);
       pfByte getInfoChannelSelection(void) const;

       void setIfaceIdentifier(pfUlong value_);
       pfUlong getIfaceIdentifier(void) const;
 
       void setNumberOrMap(pfByte value_);
       pfByte getNumberOrMap(void) const;

       void setChannelOrMapElementType(pfByte value_);
       pfByte getChannelOrMapElementType(void) const;

       void setMap(pfUlong value_);
       pfUlong getMap(void) const;

   private:
       pfByte _ifaceIdPresent;
       pfByte _ifaceType;
       pfByte _preferredOrExclusive;
       pfByte _DchannelInd;
       pfByte _infoChannelSelection;
       pfUlong _ifaceIdentifier;
       pfByte _numberOrMap;
       pfByte _channelOrMapElementType;
       pfUlong _map;

};

#endif // __IE_CHANNELIDENTIFICATION_H__





