//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / SCCP protocol
//
//File: sccpstate_scrc_idle.h
//
//Version: $Revision: 1.7 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/10/19 18:14:50 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Timo Pärnänen
//
//Description:
//      Class definition for SCCP routing block (SCRC)
//      idle state (only state).
//
//Copyright:
//
//
//Licence:
//
//
//History: 

#ifndef __SCCP_STATE_SCRC_IDLE_H__
#define __SCCP_STATE_SCRC_IDLE_H__

#include "sccpstate.h"

class pfStorage;
class pfProtocol;
class sccpBlockSCRC;

//
//Class: sccp_SCRC_Idle
//
//Description:
//    See file description.
//

class sccp_SCRC_Idle : public sccpState
{
    public:
        // singleton
        static sccp_SCRC_Idle *instance(void);

        // pdu inputs
        virtual void sccpUDTpduAct(sccpUDTpdu *messenger_,
                                   pfProtocol *protocol_);
        
        // primitives from lower layer
        virtual void mtpTRANSFERindAct(mtpTRANSFERind *messenger_,
                                       pfProtocol *protocol_);

        bool calledAddressIncludesDPC(pfStorage &calledAddress_,
                                           pfUlong &DPC_) const;
        void continueAtSubSystemChecking(sccpBlockSCRC *block_,
                                         sccpPdu *pdu_);
        void continueAtTranslation(sccpBlockSCRC *block_,
                                   sccpPdu *pdu_);
        void continueAtDPCchecking(sccpBlockSCRC *block_,
                                   sccpPdu *pdu_,
                                   pfUlong DPC_);
        
    protected:
        sccp_SCRC_Idle(void);
        virtual ~sccp_SCRC_Idle(void);

    private:
        // singleton
        static sccp_SCRC_Idle *_only;
 
};

#endif // __SCCP_STATE_SCRC_IDLE_H__

