//Editor-Info: -*- C++ -*-
//
//Subject: TOVE-project / UNI-SSCF
//
//File: usscfstate.h
//
//Version: $Revision: 1.14 $
//
//State: $State: Exp $
//
//Date: $Date: 1999/03/11 18:54:55 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications and Multimedia
//
//Author:
//	Vesa-Matti Puro
//
//Description:
//	Contains the base class for the UNI-SSCF state machine.
//	Derived classes implementing the state machine inherit
//	default actions from this class.
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History:
//

#ifndef __USSCF_USSCFSTATE_H__
#define __USSCF_USSCFSTATE_H__

class pfProtocol;

#include "pf/state.h"
#include "iface/aaif/aaupprimitives.h"
#include "iface/uaalif/uaaldownprimitives.h"

class usscfState : public pfState,
                   public uaalDownInputs,
                   public aaUpInputs
{
    public:
// Actions for incoming (U)AAL-primitives from above layer
        virtual void uaalESTABLISHreqAct(
            uaalESTABLISHreq *messenger_,
            pfProtocol *protocol_);
        virtual void uaalRELEASEreqAct(
            uaalRELEASEreq *messenger_,
            pfProtocol *protocol_);
        virtual void uaalDATAreqAct(
            uaalDATAreq *messenger_,
            pfProtocol *protocol_);
        virtual void uaalUNITDATAreqAct(
            uaalUNITDATAreq *messenger_,
            pfProtocol *protocol_);

// Actions for incoming AA-signals from lower layer
        virtual void aaESTABLISHindAct(aaESTABLISHind *messenger_,
                                       pfProtocol *protocol_);
        virtual void aaESTABLISHconfAct(aaESTABLISHconf *messenger_,
                                        pfProtocol *protocol_);
        virtual void aaRELEASEindAct(aaRELEASEind *messenger_,
                                     pfProtocol *protocol_);
        virtual void aaRELEASEconfAct(aaRELEASEconf *messenger_,
                                      pfProtocol *protocol_);
        virtual void aaDATAindAct(aaDATAind *messenger_,
                                  pfProtocol *protocol_);
        virtual void aaRESYNCindAct(aaRESYNCind *messenger_,
                                    pfProtocol *protocol_);
        virtual void aaRESYNCconfAct(aaRESYNCconf *messenger_,
                                     pfProtocol *protocol_);
        virtual void aaRECOVERindAct(aaRECOVERind *messenger_,
                                     pfProtocol *protocol_);
        virtual void aaUNITDATAindAct(aaUNITDATAind *messenger_,
                                      pfProtocol *protocol_);
        virtual void aaRETRIEVEindAct(aaRETRIEVEind *messenger_,
                                      pfProtocol *protocol_);
        virtual void aaRETRIEVE_COMPLETEindAct(
            aaRETRIEVE_COMPLETEind *messenger_,
            pfProtocol *protocol_);
        
    protected:
        usscfState(void);
        virtual ~usscfState(void);
};

#endif // __USSCF_USSCFSTATE_H__

