//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / BISUP
//
//File: bisupmode.h
//
//Version: $Revision: 1.7 $
//
//State: $State: Exp $
//
//Date: $Date: 1999/03/08 07:42:30 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Sami Raatikainen
//
//Description:
//      BISUP has been described using two different sides, 
//      the incoming and the outgoing, but it is implemented 
//      with one side, which is also possible since BISUP is
//      a symmetric protocol and the first incoming message 
//      derives to the correct behaviour.
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 

#ifndef __BISUP_BISUPMODE_H__
#define __BISUP_BISUPMODE_H__

class bisupState;
class bisupProtocol;

#include "protocol/sig/sigmode.h"

class bisupMode : public sigMode
{
    public:
        static bisupMode *instance(void);
        
        pfState *createIdleState(void);
        pfState *createAwaitIAAState(void);
        pfState *createAwaitACMState(void);
        pfState *createAwaitANMState(void);
        pfState *createAwaitAcceptedReqState(void);
        pfState *createAwaitAnswerReqState(void);
        pfState *createAwaitAddressCompReqState(void);
        pfState *createCallAnsweredState(void);
        pfState *createAwaitRLCState(void);
        pfState *createReleaseRespState(void);
        pfState *createRELCollisionState(void);
        
    protected:
        bisupMode(void);
        virtual ~bisupMode(void);

    private:
        static bisupMode *_only;
};

#endif // __BISUP_BISUPMODE_H__
