connectivitylayer/isce/isaaccessextension_dll/inc/internalapi.h
author mikaruus
Tue, 19 Oct 2010 13:16:20 +0300
changeset 9 8486d82aef45
parent 7 fa67e03b87df
permissions -rw-r--r--
modemadaptation release 2010wk40

/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
* 
* Description: 
*
*/



#ifndef MDATAMESSAGESTATUS_H
#define MDATAMESSAGESTATUS_H

class MDataMessageStatus
    {

   public:

    /*
    * Called when datamessage is delivered to client.
    * @param none
    * @return void
    */
    virtual void DataMessageDelivered() = 0;

    };

#endif // MDATAMESSAGESTATUS_H


#ifndef MIAD2CHANNEL_H
#define MIAD2CHANNEL_H

#include "iadinternaldefinitions.h"    // For TIADConnectionStatus
//#include "mist2iadapi.h"  // For TIADConnectionStatus // 
#include "../../isirouter_dll/inc/misiobjectrouterif.h"
#include "../../isirouter_dll/inc/misirouterobjectif.h"

// abstract interface for both channels user & kernel 
// called by extension, provided by extension
class MIAD2ChannelApi    {
    
    public:

    /*
    * Complete async request with given params.
    * @param TInt aRequest, request to complete.
    * @param TInt aStatusToComplete, status of the request to complete.
    * @return void
    */  
    virtual void CompleteChannelRequest( TInt aRequest, TInt aStatusToComplete ) = 0;
    
    /*
    * Info channel about the connection status.
    * @param TIADConnectionStatus aStatus, new connection status
    * @return void
    */
    virtual void NotifyConnectionStatus( TIADConnectionStatus aStatus ) = 0;

    /*
    * Info channel about the flowcontorl status.
    * @param TIADFlowControlStatus aStatus, new flow control status
    * @return void
    */    
    virtual void NotifyFlowCtrl( TIADFlowControlStatus aStatus) = 0;

    // When data message is written to user thread call
    // MDataMesssageStatus::DataMessageDelivered. It's responsibility is to
    // tell PEP that one data message e.g.a credit is used. PEP's should also
    // keep count of data messages added to channel to be abel to control the
    // legacy flowcontrol

    /*
    * Give channel a reference to received data message.
    * @param const TDesC8& aDataMessage
    * @return void
    */        
    virtual void ReceiveDataMsg( const TDesC8& aDataMessage ) = 0;

    /*
    * Give channel a reference to received message.
    * @param const TDesC8& aMessage
    * @return void
    */    
    virtual void ReceiveMsg( const TDesC8& aMessage ) = 0;

    /*
           * Register pep associated to this channel to listen data message deliveries.
    * @param MDataMessageStatus& aPep
    * @return void
    */    
    virtual void RegisterPep( MDataMessageStatus& aPep ) = 0;

    };

#endif // MIAD2CHANNEL_H

#ifndef MCHANNEL2IADAPI_H
#define MCHANNEL2IADAPI_H

// abstract inteface for LDD to access Extension services
// *called by LDD
// *provided from extension
// *must take care of syncronization, LDD and kernel channels using this
class MChannel2IADApi    {

    public:

    /*
    * Allocate a block. Descriptors length is set to aSize, but MaxLength can
    * can be bigger, depends on memory block configurations.
    * @param const TUint16 aSize
    * @return TDes8&
    */      
    virtual TDes8& AllocateBlock( const TUint16 aSize ) = 0;

    virtual TDes8& AllocateDataBlock( const TUint16 aSize ) = 0;

    virtual void Close( const TUint16 aChannel ) = 0;

    virtual void DeAllocateBlock(TDes8& aBlock) = 0;

    virtual TInt GetConnectionStatus() = 0;
  
    virtual TInt GetFlowControlStatus() = 0;

    virtual TInt GetMaxDataSize() = 0;

    virtual void Open( const TUint16 aChannel, const TUint16 aRequest, MIAD2ChannelApi* aCallback ) = 0;

    virtual void Open( const TUint16 aChannel, const TUint16 aRequest, const TDesC8& aOpenInfo, MIAD2ChannelApi* aCallback ) = 0;

    virtual TInt OrderIndication( TDes8& anOrder, const TUint16 aCh, const TBool a32Bit = EFalse ) = 0;

    virtual TInt SendMessage( TDes8& aMessage, const TUint16 aCh ) = 0;

    /*
    * Sends an ISI indication message.
    * @param TDes8& aMessage, indication message
    * @param const TUint16 aCh, sender channels id.
    * @return TInt, KErrNone if send succesfull.
    */
    virtual TInt SendIndication( TDes8& aMessage, const TUint16 aCh ) = 0;

    virtual TInt Loan( const TUint16 aChannel, const TUint16 aRequest,
                       MIAD2ChannelApi* aCallback ) = 0;

    virtual TInt ReturnLoan( const TUint16 aChannel, const TUint16 aRequest,
                             MIAD2ChannelApi* aCallback ) = 0;

    };

#endif // MCHANNEL2IADAPI_H