adaptationlayer/modematadaptation/modematcontroller_exe/inc/cmodematpipecontroller.h
author mikaruus <mika.a.ruuskanen@nokia.com>
Thu, 14 Jan 2010 10:44:58 +0200
changeset 5 8ccc39f9d787
parent 0 63b37f68c1ce
child 8 6295dc2169f3
permissions -rw-r--r--
New release based on our 2010wk02 release

/*
* 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 CMODEMATPIPECONTROLLER_H
#define CMODEMATPIPECONTROLLER_H

#include <e32base.h>
#include "cmodemathandler.h" //KMaxDteIdCount


class TPipeInfo
{
public:

    enum EPipeState 
        {
        EPipeCreated = 0,
        EPipeRedirected,
        EPipeEnabled,
        EPipeDisabled,
        EPipeRemoving,
        EPipeNoPipe
        };
        
    TInt iHandle;
    TUint8 iFirstObjId;
    TUint8 iFirstDevId;
    TUint8 iSecondObjId;
    TUint8 iSecondDevId;
    EPipeState iPipeState;
};

/**
*   CModemAtPipeController receives ISI-messages from CModemAtHandler. CModemAtPipeController creates, 
*   redirects and removes pipes.  
*/


class CModemAtPipeController : public CBase 
    {
public:
    static CModemAtPipeController* NewL( RIscApi& aIscApi, TUint& aObjId, CModemAtHandler& aHandler );

    ~CModemAtPipeController();
#ifndef NCP_COMMON_BRIDGE_FAMILY
    /*
     * Handles messages from PN_NAME
     * @param TIsiReceiveC& aReceivedMessage Message data
     */
    void HandleNameServiceMessage( const TIsiReceiveC& aReceivedMessage );
    
    /*
     * Handles messages from PN_
     * @param TIsiReceiveC& aReceivedMessage Message data
     */
        
    void HandlePipeServiceMessage( const TIsiReceiveC& aReceivedMessage );
    
    /**
     * Removes pipe.
     * @param TUint8 aDteId Connection DteId   
     */
    void RemovePipe( const TUint8 aDteId);
    
    /**
      * Redirects pipe
      * @param TUint8 aDteId Connection DteId   
      * @param TUint8 aNewDevId New PEP
      * @param TUint8 aNewObjId New PEP
      */
    
    void RedirectPipe( const TUint8 aDteId, const TUint8 aNewDevId, const TUint8 aNewObjId );

    /**
      * Links dteId to created Pipe
      * @param TUint8 aDteId Connection DteId   
      */
    void LinkDteIdToPipe( const TUint8 aDteId );
    
    /**
     * Queries AT MODEM object id. 
     */
    void QueryModemAtFromNameService();
#endif
private:
    /**
     * Default C++ constructor.
     * @param None
     * @return
     */
    CModemAtPipeController( RIscApi& aIscApi, TUint& aObjId, CModemAtHandler& aHandler );

    /**
     *  Used to send At command to modem
     *  @param
     *  @return Send status
     */

    void ConstructL();

#ifndef NCP_COMMON_BRIDGE_FAMILY
    /**
     * Handles MatchDataportName 
     * @param TUint aName
     */
    TUint MatchDataportName( TUint aName );

    /**
     * Handles PNS_NAME_ADD_IND 
     * @param TIsiReceiveC& aReceivedMessage Message data 
     */
    void HandleNameAddInd( const TIsiReceiveC& aReceivedMesssage );
   
    /**
     * Handles PNS_NAME_REMOVE_IND 
     * @param TIsiReceiveC& aReceivedMessage Message data 
     */
    void HandleNameRemoveInd( const TIsiReceiveC& aReceivedMesssage );

    /**
     * Handles PNS_NAME_QUERY_RESP 
     * @param TIsiReceiveC& aReceivedMessage Message data 
     */
    void HandleNameQueryResp( const TIsiReceiveC& aReceivedMesssage );


    /**
     * Handles PNS_PIPE_CREATE_RESP 
     * @param TIsiReceiveC& aReceivedMessage Message data 
     */
    void HandlePipeCreateResp( const TIsiReceiveC& aReceivedMessage );

    /**
     * Handles PNS_PIPE_REDIRECT_RESP 
     * @param TIsiReceiveC& aReceivedMessage Message data 
     */
    void HandlePipeRedirectResp( const TIsiReceiveC& aReceivedMessage );
    
    /**
     * Handles PNS_PIPE_REMOVE_RESP 
     * @param TIsiReceiveC& aReceivedMessage Message data 
     */
    void HandlePipeRemoveResp( const TIsiReceiveC& aReceivedMessage );
    
    /**
     * Handles PNS_PIPE_ENABLE_RESP 
     * @param TIsiReceiveC& aReceivedMessage Message data 
     */
    void HandlePipeEnabledResp( const TIsiReceiveC& aReceivedMessage );

    /**
     * Handles PNS_PEP_STATUS_IND
     * @param TIsiReceiveC& aReceivedMessage Message data 
     */
    void HandlePepStatusInd( const TIsiReceiveC& aReceivedMessage );
 
    /**
     * Sends PNS_PIPE_CREATE_REQ
     * @param TUint8 aDevId New PEP
     * @param TUint8 aObjId New PEP
     */
    void SendCreatePipeMessage(const TUint8 aDevId, const TUint8 aObjId);
    
    /**
     * Sends PNS_PIPE_REMOVE_REQ
     * @param TUint8 aPipeHandle Pipehandle
     */
    void SendRemovePipeReq( const TUint8 aPipeHandle );
    
    /**
     * Sends PNS_PIPE_ENABLE_REQ
     * @param TUint8 aPipeHandle Pipehandle
     */
    void SendEnablePipeReq( const TUint8 aPipeHandle);
    /**
     * Finds dteid of pipe
     * @param const TInt aHandle pipe handle
     */
    TInt FindDteId( const TInt aHandle );

    /**
     * ChangePipeState
     * @param const TInt aDteId
     * @param TPipeInfo::EPipeState aState
     */
    void ChangePipeState( const TInt aDteId, TPipeInfo::EPipeState aState );
#endif
private:
    
    RIscApi& iIscApi;
    TUint iModemAtObjId;            //Modem AT Controller Obj-id
    TUint iModemAtDevId;            //Modem AT Controller device-id
    TInt  iPipeHandle;              //handle of created pipe 
    TUint iDataportDevId;           //Dataport device-id
    TUint iDataportObjId;           //Dataport obj-id
    TPipeInfo iPipeTable[KMaxDteIdCount];   //created pipes
    CModemAtHandler& iAtHandler;    //forwards AT-commands to the AT MODEM
    CActiveSchedulerWait* iSchedulerWait;
    TUint8 iDteId;                  // temporary dte id for creating the connection
    };

#endif  // CMODEMATPIPECONTROLLER_H