//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / bisup
//
//File: bisupiecoders.h
//
//Version: $Revision: 1.19 $
//
//State: $State: Exp $
//
//Date: $Date: 1999/03/15 13:21:02 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
// 
//Author:
//      Timo Kokkonen
//      Sami Raatikainen
//
//Description:
//      Bisup ie's specific decoding and encoding methods.
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History:
//

#ifndef __BISUP_BISUPIECODERS_H__
#define __BISUP_BISUPIECODERS_H__

#include "bisupiecoder.h"

//-----------------------------------------------------------------------
class bisupAALParametersIECoder : public bisupIECoder
{
    public:
        bisupAALParametersIECoder(const string &IEname_,
                                  const pfByte &IEtype_,
                                  bool isMandatory_);
        
        virtual ~bisupAALParametersIECoder(void);

    private:
        virtual void decodeContent(pfFrame &frame_,
                                   pfUlong IElength_,
                                   pfMessenger *msg_);
        virtual void encodeContent(pfFrame &frame_, pfMessenger *msg_);
};


//-----------------------------------------------------------------------
class bisupBroadbandBearerIECoder : public bisupIECoder
{
    public:
        bisupBroadbandBearerIECoder(const string &IEname_,
                                    const pfByte &IEtype_,
                                    bool isMandatory_);

        virtual ~bisupBroadbandBearerIECoder(void);

    private:
        virtual void decodeContent(pfFrame &frame_,
                                   pfUlong IElength_,
                                   pfMessenger *msg_);
        virtual void encodeContent(pfFrame &frame_, pfMessenger *msg_);
};


//-----------------------------------------------------------------------
class bisupATMCellRateIECoder : public bisupIECoder
{
    public:
        bisupATMCellRateIECoder(const string &IEname_,
                                const pfByte &IEtype_,
                                bool isMandatory_);

        virtual ~bisupATMCellRateIECoder(void);

    private:
        virtual void decodeContent(pfFrame &frame_,
                                   pfUlong IElength_,
                                   pfMessenger *msg_);
        virtual void encodeContent(pfFrame &frame_, pfMessenger *msg_);
};


//-----------------------------------------------------------------------
class bisupCalledPartyNumberIECoder : public bisupIECoder
{
    public:
        bisupCalledPartyNumberIECoder(const string &IEname_,
                                      const pfByte &IEtype_,
                                      bool isMandatory_);
            
        virtual ~bisupCalledPartyNumberIECoder(void);

    private:
        virtual void decodeContent(pfFrame &frame_,
                                   pfUlong IElength_,
                                   pfMessenger *msg_);
        virtual void encodeContent(pfFrame &frame_, pfMessenger *msg_);
};


//-----------------------------------------------------------------------
class bisupCallingPartyNumberIECoder : public bisupIECoder
{
    public:
        bisupCallingPartyNumberIECoder(const string &IEname_,
                                       const pfByte &IEtype_,
                                       bool isMandatory_);
        
        virtual ~bisupCallingPartyNumberIECoder(void);
        
    private:
        virtual void decodeContent(pfFrame &frame_,
                                   pfUlong IElength_,
                                   pfMessenger *msg_);
        virtual void encodeContent(pfFrame &frame_, pfMessenger *msg_);
};


//-----------------------------------------------------------------------
class bisupCallReferenceIECoder : public bisupIECoder
{
    public:
        bisupCallReferenceIECoder(const string &IEname_,
                                  const pfByte &IEtype_,
                                  bool isMandatory_);

        virtual ~bisupCallReferenceIECoder(void);

    private:
        virtual void decodeContent(pfFrame &frame_,
                                   pfUlong IElength_,
                                   pfMessenger *msg_);
        virtual void encodeContent(pfFrame &frame_, pfMessenger *msg_);
};


//-----------------------------------------------------------------------
class bisupCauseIECoder : public bisupIECoder
{
    public:
        bisupCauseIECoder(const string &IEname_,
                          const pfByte &IEtype_,
                          bool isMandatory_);
        
        virtual ~bisupCauseIECoder(void);

    private:
        virtual void decodeContent(pfFrame &frame_,
                                   pfUlong IElength_,
                                   pfMessenger *msg_);
        virtual void encodeContent(pfFrame &frame_, pfMessenger *msg_);
};


//-----------------------------------------------------------------------
class bisupConnectionElementIdIECoder : public bisupIECoder
{
    public:
        bisupConnectionElementIdIECoder(const string &IEname_,
                                        const pfByte &IEtype_,
                                        bool isMandatory_);

        virtual ~bisupConnectionElementIdIECoder(void);

    private:
        virtual void decodeContent(pfFrame &frame_,
                                   pfUlong IElength_,
                                   pfMessenger *msg_);
        virtual void encodeContent(pfFrame &frame_, pfMessenger *msg_);
};


//-----------------------------------------------------------------------
class bisupTransitNetworkSelectionIECoder : public bisupIECoder
{
    public:
        bisupTransitNetworkSelectionIECoder(const string &IEname_,
                                            const pfByte &IEtype_,
                                            bool isMandatory_);

        virtual ~bisupTransitNetworkSelectionIECoder(void);

    private:
        virtual void decodeContent(pfFrame &frame_,
                                   pfUlong IElength_,
                                   pfMessenger *msg_);
        virtual void encodeContent(pfFrame &frame_, pfMessenger *msg_);
};

//-----------------------------------------------------------------------

class bisupTransparentIECoder : public IECoder
{
    public:
        bisupTransparentIECoder(const string &IEname_,
                                const pfByte &IEtype_,
                                bool isMandatory_);
        
        virtual ~bisupTransparentIECoder(void);
        
    private:
        virtual void decodeIE(pfFrame &frame_,
                              pfMessenger *msg_);
        virtual void encodeIE(pfFrame &frame_, pfMessenger *msg_);
};

#endif // __BISUP_BISUPIECODERS_H__
