//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / UNI
//
//File: unimode.cpp
//
//Version: $Revision: 1.18 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/12/14 06:56:32 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Jari Katajavuori
//
//Description:
//
//
//Copyright:
//
//
//Licence:
//
//
//History: 

#include "pf/timers.h"

#include "unidefs.h"
#include "unistrings.h"
#include "unimode.h"
#include "uniprotocol.h"
#include "unistate.h"
#include "unistate_n0.h"
#include "unistate_n1.h"
#include "unistate_n3.h"
#include "unistate_n4.h"
#include "unistate_n6.h"
#include "unistate_n7.h"
#include "unistate_n8.h"
#include "unistate_n9.h"
#include "unistate_n10.h"
#include "unistate_n11.h"
#include "unistate_n12.h"
#include "unistate_u0.h"
#include "unistate_u1.h"
#include "unistate_u3.h"
#include "unistate_u4.h"
#include "unistate_u6.h"
#include "unistate_u7.h"
#include "unistate_u8.h"
#include "unistate_u9.h"
#include "unistate_u10.h"
#include "unistate_u11.h"
#include "unistate_u12.h"

uniMode :: uniMode(void)
{
    return;
}

uniMode :: ~uniMode(void)
{
    return;
}

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

uniUserMode *uniUserMode :: _only = 0;

uniUserMode :: uniUserMode(void)
{
    return;
}

uniUserMode :: ~uniUserMode(void)
{
    return;
}

uniUserMode *uniUserMode :: instance(void)
{
    if (_only == 0)
    {
        _only = new uniUserMode;
    }
    return _only;
}

bool uniUserMode :: isNetworkMode(void)
{
    return 0;
}

void uniUserMode :: continueReleaseProcess(uniProtocol *protocol_)
{
    protocol_->changeToReleaseRequestState();
    return;
}
    
uniState *uniUserMode :: createNullState(void) const
{
    uniState *state = uniUserNull::instance();
    return state;
}

uniState *uniUserMode :: createCallInitiatedState(void) const
{
    uniState *state = uniUserCallInitiated::instance();
    return state;
}

uniState *uniUserMode :: createOutgoingCallProceedingState(void) const
{
    uniState *state = uniUserOutgoingCallProceeding::instance();
    return state;
}

uniState *uniUserMode :: createCallDeliveredState(void) const
{
    uniState *state = uniUserCallDelivered::instance();
    return state;
}

uniState *uniUserMode :: createCallPresentState(void) const
{
    uniState *state = uniUserCallPresent::instance();
    return state;
}

uniState *uniUserMode :: createCallReceivedState(void) const
{
    uniState *state = uniUserCallReceived::instance();
    return state;
}

uniState *uniUserMode :: createConnectRequestState(void) const
{
    uniState *state = uniUserConnectRequest::instance();
    return state;
}

uniState *uniUserMode :: createIncomingCallProceedingState(void) const
{
    uniState *state = uniUserIncomingCallProceeding::instance();
    return state;
}

uniState *uniUserMode :: createActiveState(void) const
{
    uniState *state = uniUserActive::instance();
    return state;
}

uniState *uniUserMode :: createReleaseRequestState(void) const
{
    uniState *state = uniUserReleaseRequest::instance(); 
    return state;
}

uniState *uniUserMode :: createReleaseIndicationState(void) const
{
    uniState *state = uniUserReleaseIndication::instance();
    return state;
}

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

uniNetworkMode *uniNetworkMode :: _only = 0;

uniNetworkMode :: uniNetworkMode(void)
{
    return;
}

uniNetworkMode :: ~uniNetworkMode(void)
{
    return;
}

uniNetworkMode *uniNetworkMode :: instance(void)
{
    if (_only == 0)
    {
        _only = new uniNetworkMode;
    }
    return _only;
}

bool uniNetworkMode :: isNetworkMode(void)
{
    return 1;
}

void uniNetworkMode :: continueReleaseProcess(uniProtocol *protocol_)
{
    protocol_->changeToReleaseIndicationState();
    return;
}

uniState *uniNetworkMode :: createNullState(void) const
{
    uniState *state = uniNetworkNull::instance();
    return state;
}

uniState *uniNetworkMode :: createCallInitiatedState(void) const
{
    uniState *state = uniNetworkCallInitiated::instance();
    return state;
}

uniState *uniNetworkMode :: createOutgoingCallProceedingState(void) const
{
    uniState *state = uniNetworkOutgoingCallProceeding::instance();
    return state;
}

uniState *uniNetworkMode :: createCallDeliveredState(void) const
{
    uniState *state = uniNetworkCallDelivered::instance();
    return state;
}

uniState *uniNetworkMode :: createCallPresentState(void) const
{
    uniState *state = uniNetworkCallPresent::instance();
    return state;
}

uniState *uniNetworkMode :: createCallReceivedState(void) const
{
    uniState *state = uniNetworkCallReceived::instance();
    return state;
}

uniState *uniNetworkMode :: createConnectRequestState(void) const
{
    uniState *state = uniNetworkConnectRequest::instance();
    return state;
}

uniState *uniNetworkMode :: createIncomingCallProceedingState(void) const
{
    uniState *state = uniNetworkIncomingCallProceeding::instance();
    return state;
}

uniState *uniNetworkMode :: createActiveState(void) const
{
    uniState *state = uniNetworkActive::instance();
    return state;
}

uniState *uniNetworkMode :: createReleaseRequestState(void) const
{
    uniState *state = uniNetworkReleaseRequest::instance();
    return state;
}

uniState *uniNetworkMode :: createReleaseIndicationState(void) const
{
    uniState *state = uniNetworkReleaseIndication::instance(); 
    return state;
}

