//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / NNI SSCF protocol
//
//File: nsscfstate.cpp
//
//Version: $Revision: 1.7 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/10/19 18:11:09 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications and Multimedia
//
//Author:
//      Juhana Räsänen
//
//Description:
//      See corresponding header file
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 


#include "nsscfstate.h"
#include "nsscfprotocol.h"
#include "pf/types.h"


nsscfState :: nsscfState(void)
    : aaUpInputs()
{
    return;
}


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


//
// Functions: Input methods for AA primitives (indications, confirms)
//
// Description:
//     These methods define default action for incoming AA-signals from
//     the SSCOP protocol entity to this SSCF
//

void nsscfState :: aaESTABLISHindAct(aaESTABLISHind *, pfProtocol *)
{
    return;
}


void nsscfState :: aaESTABLISHconfAct(aaESTABLISHconf *, pfProtocol *)
{
    return;
}


void nsscfState :: aaRELEASEindAct(aaRELEASEind *, pfProtocol *)
{
    return;
}


void nsscfState :: aaRELEASEconfAct(aaRELEASEconf *, pfProtocol *)
{
    return;
}


void nsscfState :: aaDATAindAct(aaDATAind *, pfProtocol *)
{
    return;
}


void nsscfState :: aaRESYNCindAct(aaRESYNCind *, pfProtocol *)
{
    return;
}


void nsscfState :: aaRESYNCconfAct(aaRESYNCconf *, pfProtocol *)
{
    return;
}


void nsscfState :: aaRECOVERindAct(aaRECOVERind *, pfProtocol *)
{
    return;
}


void nsscfState :: aaUNITDATAindAct(aaUNITDATAind *, pfProtocol *protocol_)
{
    ((nsscfProtocol *) protocol_)->
        sendMaalREPORTind(LBC_EMPTY, UBC_EMPTY, R_UDR);
    return;
}


void nsscfState :: aaRETRIEVEindAct(aaRETRIEVEind *, pfProtocol *)
{
    return;
}


void nsscfState :: aaRETRIEVE_COMPLETEindAct(
    aaRETRIEVE_COMPLETEind *,
    pfProtocol *)
{
    return;
}


//
// Functions: Input methods for NAAL primitives (requests, responses)
//
// Description:
//     These methods define default action for incoming (N)AAL-signals
//     from the Layer 3 protocol entity to this SSCF
//

void nsscfState :: naalMESSAGE_FOR_TRANSMISSIONreqAct(
    naalMESSAGE_FOR_TRANSMISSIONreq *,
    pfProtocol *)
{
    return;
}


void nsscfState :: naalEMERGENCYreqAct(naalEMERGENCYreq *,
                                       pfProtocol *protocol_)
{
    ((nsscfProtocol *) protocol_)->setUPSemergency();
    return;
}


void nsscfState :: naalEMERGENCY_CEASESreqAct(
    naalEMERGENCY_CEASESreq *,
    pfProtocol *protocol_)
{
    ((nsscfProtocol *) protocol_)->setUPSnormal();
    return;
}


void nsscfState :: naalSTOPreqAct(naalSTOPreq *, pfProtocol *)
{
    return;
}


void nsscfState :: naalSTARTreqAct(naalSTARTreq *, pfProtocol *)
{
    return;
}


void nsscfState :: naalRETRIEVE_BSNTreqAct(naalRETRIEVE_BSNTreq *,
                                           pfProtocol *)
{
    return;
}


void nsscfState :: naalRETRIEVAL_REQUEST_AND_FSNCreqAct(
    naalRETRIEVAL_REQUEST_AND_FSNCreq *,
    pfProtocol *)
{
    return;
}


void nsscfState :: naalFLUSH_BUFFERSreqAct(
    naalFLUSH_BUFFERSreq *,
    pfProtocol *)
{
    return;
}


void nsscfState :: naalCONTINUEreqAct(
    naalCONTINUEreq *,
    pfProtocol *)
{
    return;
}


//
// Functions: Input methods for MAAL primitives (requests, responses)
//
// Description:
//     Default actions for incoming management plane primitives
//

void nsscfState :: maalPROVING_UNSUCCESFULrespAct(
    maalPROVING_UNSUCCESFULresp *,
    pfProtocol *)
{
    return;
}


void nsscfState :: maalFORCE_PROVINGreqAct(maalFORCE_PROVINGreq *,
                                           pfProtocol *protocol_)
{
    ((nsscfProtocol *) protocol_)->setMPSnormal();
    return;
}


void nsscfState :: maalFORCE_EMERGENCYreqAct(
    maalFORCE_EMERGENCYreq *,
    pfProtocol *protocol_)
{
    ((nsscfProtocol *) protocol_)->setMPSemergency();
    return;
}


void nsscfState :: maalCLEAR_FORCE_MODESreqAct(
    maalCLEAR_FORCE_MODESreq *,
    pfProtocol *protocol_)
{
    ((nsscfProtocol *) protocol_)->setMPSneutral();
    return;
}


void nsscfState :: maalRELEASEreqAct(maalRELEASEreq *, pfProtocol *)
{
    return;
}


void nsscfState :: maalLOCAL_PROCESSOR_OUTAGEreqAct(
    maalLOCAL_PROCESSOR_OUTAGEreq *,
    pfProtocol *protocol_)
{
    ((nsscfProtocol *) protocol_)->setIsLPO();
    return;
}


void nsscfState :: maalLOCAL_PROCESSOR_RECOVEREDreqAct(
    maalLOCAL_PROCESSOR_RECOVEREDreq *,
    pfProtocol *protocol_)
{
    ((nsscfProtocol *) protocol_)->setNoLPO();
    return;
}


//
// Functions: Input methods for NNI SSCF timeouts
//
// Description:
//     Default actions for NNI-SSCF timer timeouts
//

void nsscfState :: nsscfT1timeoutAct(nsscfProtocol *)
{
    return;
}


void nsscfState :: nsscfT2timeoutAct(nsscfProtocol *)
{
    return;
}


void nsscfState :: nsscfT3timeoutAct(nsscfProtocol *)
{
    return;
}


//
// Function: nsscfState :: releaseConnection()
//
// Description:
//     Sends an AA-RELEASE.request downwards and optionally an
//     AAL-OUT_OF_SERVICE.indication upwards; used in several
//     points of the NNI SSCF protocol SDL description
//

void nsscfState :: releaseConnection(nsscfProtocol *protocol_,
                                     nsscfPDU pdu_,
                                     bool sendIndication_)
{
    if (sendIndication_ != 0)
    {
        protocol_->sendNaalOUT_OF_SERVICEind();
    }
    protocol_->sendAaRELEASEreq(pdu_);
    return;
}

