//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / testing/testadapter/sscop
//
//File: sscoppducoder.h
//
//Version: $Revision: 1.21 $
//
//State: $State: Exp $
//
//Date: $Date: 1998/11/30 09:44:13 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Timo Kokkonen
//      Jussi Turunen
//
//Description:
//      Encode and decode methods for sscopPDUs used with testing.
//      Encode is inherited from pduCoderBase.
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History:
//
#ifndef __SSCOP_SSCOPPDUCODER_H__
#define __SSCOP_SSCOPPDUCODER_H__

#include "../adapter/pducoderbase.h"

class sscopPDUcoder : public pduCoderBase
{
    public:
        sscopPDUcoder(void);
        virtual ~sscopPDUcoder(void);

        otMessage::SerializedMessage decode(const pfFrame &frame_);

    private:
        void decodeBGNpdu(void);
        void decodeBGAKpdu(void);
        void decodeENDpdu(void);
        void decodeENDAKpdu(void);
        void decodeRSpdu(void);
        void decodeRSAKpdu(void);
        void decodeBGREJpdu(void);
        void decodeSDpdu(void);
        void decodeERpdu(void);
        void decodePOLLpdu(void);
        void decodeSTATpdu(void);
        void decodeUSTATpdu(void);
        void decodeUDpdu(void);
        void decodeMDpdu(void);
        void decodeERAKpdu(void);
        void unknownPdu(void);

        void decodeListElement(pfLong listLength_);
        void decodeHeaderType1(const string &reservedFieldName_);
        void decodeHeaderType2(const string &reservedFieldName_);

        void addIgnoredToMessage(void);
};

#endif // __SSCOP_SSCOPPDUCODER_H__
