//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project
//
//File: codingprotocol.cpp
//
//Version: $Revision: 1.6 $
//
//State: $State: Exp $
//
//Date: $Date: 1999/03/11 18:58:20 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Jussi Turunen
//
//Description:
//      See corresponding header file.
//
//Copyright:
//      Copyright 1999 Helsinki University of Technology
//      ALL RIGHTS RESERVED BETWEEN JANUARY 1996 AND JUNE 1999.
//
//Licence:
//
//
//History: 

#include "pf/conduit.h"
#include "pf/error.h"
#include "iface/cpcsif/cpcsdownprimitives.h"
#include "../adapter/pducoderbase.h"
#include "sscoppducoder.h"
#include "codingprotocol.h"

codingProtocol :: codingProtocol(void)
    : pfProtocol(),
      cpcsUpInputs(),
      taInputs(),
      _coder()
{
    return;
}

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

pfConduit codingProtocol :: create(void)
{
    codingProtocol *protocol = new codingProtocol();
    pfConduit conduit(protocol);
    return conduit;
}

void codingProtocol :: cpcsUNITDATAindAct(cpcsUNITDATAind *messenger_,
                                        pfProtocol *protocol_) const
{
    //sscopPDUcoder decoder;
    otMessage::SerializedMessage decodedMsg;
    //decodedMsg = decoder.decode(messenger_->getInterfaceData());
    decodedMsg =  _coder.decode(messenger_->getInterfaceData());
    taMessenger *msg = new taMessenger(_coder.getPDUname(), decodedMsg);
    protocol_->toB(msg); 
    return;
}

void codingProtocol :: taMessengerAct(taMessenger *messenger_,
                                    pfProtocol *protocol_)
{
    string identifier = messenger_->getIdentifier();
    if (identifier.compare("$OES_START_OF_CASE") != 0)
    {
        pfFrame encodedFrame;
        //sscopPDUcoder coder;
        //encodedFrame = coder.encode(messenger_->getData());
        encodedFrame = _coder.encode(messenger_->getData());
        cpcsUNITDATAreq *msg = new cpcsUNITDATAreq();
        msg->setInterfaceData(encodedFrame);
        protocol_->toA(msg);
    }
    return;
}

