mtptransports/mtpcontroller/src/cmtpcontrollertimer.cpp
author hgs
Thu, 04 Nov 2010 15:31:42 +0800
changeset 60 841f70763fbe
parent 49 c20dd21d1eb4
permissions -rw-r--r--
201044_04
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     1
// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     2
// All rights reserved.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     7
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     8
// Initial Contributors:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    10
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    11
// Contributors:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    12
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    13
// Description:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    14
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    15
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    16
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    17
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    18
/**
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    19
 @file
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    20
 @internalComponent
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    21
*/
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    22
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    23
#include "cmtpcontrollertimer.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    24
#include "cmtpoperator.h"
49
c20dd21d1eb4 201035_05
hgs
parents: 35
diff changeset
    25
#include "mtpdebug.h"
c20dd21d1eb4 201035_05
hgs
parents: 35
diff changeset
    26
#include "OstTraceDefinitions.h"
c20dd21d1eb4 201035_05
hgs
parents: 35
diff changeset
    27
#ifdef OST_TRACE_COMPILER_IN_USE
c20dd21d1eb4 201035_05
hgs
parents: 35
diff changeset
    28
#include "cmtpcontrollertimerTraces.h"
c20dd21d1eb4 201035_05
hgs
parents: 35
diff changeset
    29
#endif
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    30
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    31
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    32
const TUid KMTPBtTransportUid = { 0x10286FCB };
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    33
const TInt KStartMTPSeconds = 7;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    34
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    35
CMTPControllerTimer* CMTPControllerTimer::NewLC( RMTPClient& aMTPClient, CMTPOperator & aMTPOperator )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    36
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    37
    CMTPControllerTimer* self = new(ELeave) CMTPControllerTimer( aMTPClient, aMTPOperator );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    38
    CleanupStack::PushL( self );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    39
    self->ConstructL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    40
    return self;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    41
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    42
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    43
CMTPControllerTimer* CMTPControllerTimer::NewL( RMTPClient& aMTPClient, CMTPOperator & aMTPOperator )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    44
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    45
    CMTPControllerTimer* self = NewLC( aMTPClient, aMTPOperator );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    46
    CleanupStack::Pop( self );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    47
    return self;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    48
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    49
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    50
void CMTPControllerTimer::Start( TInt aTimeOut )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    51
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    52
    CTimer::After( aTimeOut * ETimerMultiplier );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    53
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    54
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    55
TBool CMTPControllerTimer::GetStopTransportStatus()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    56
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    57
    return iStopTransport;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    58
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    59
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    60
CMTPControllerTimer::~CMTPControllerTimer()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    61
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 35
diff changeset
    62
    OstTraceFunctionEntry0( CMTPCONTROLLERTIMER_DES_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 35
diff changeset
    63
    OstTraceFunctionExit0( CMTPCONTROLLERTIMER_DES_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    64
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    65
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    66
CMTPControllerTimer::CMTPControllerTimer( RMTPClient& aMTPClient, CMTPOperator& aMTPOperator ):
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    67
    CTimer( CActive::EPriorityStandard ), iMTPClient(aMTPClient)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    68
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    69
    iMTPOperator = &aMTPOperator;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    70
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    71
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    72
void CMTPControllerTimer::ConstructL()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    73
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 35
diff changeset
    74
    OstTraceFunctionEntry0( CMTPCONTROLLERTIMER_CONSTRUCTL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    75
    CTimer::ConstructL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    76
    CActiveScheduler::Add( this );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    77
    iStopTransport = EFalse;
49
c20dd21d1eb4 201035_05
hgs
parents: 35
diff changeset
    78
    OstTraceFunctionExit0( CMTPCONTROLLERTIMER_CONSTRUCTL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    79
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    80
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    81
void CMTPControllerTimer::RunL()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    82
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 35
diff changeset
    83
    OstTraceFunctionEntry0( CMTPCONTROLLERTIMER_RUNL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    84
    if (KErrNone == iMTPClient.IsProcessRunning() && !iStopTransport)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    85
        {
49
c20dd21d1eb4 201035_05
hgs
parents: 35
diff changeset
    86
         OstTrace0( TRACE_NORMAL, CMTPCONTROLLERTIMER_RUNL, "Stop transport to shut down mtp server" );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    87
        TInt error = iMTPClient.StopTransport(KMTPBtTransportUid);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    88
        iMTPClient.Close();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    89
        iStopTransport = ETrue;
49
c20dd21d1eb4 201035_05
hgs
parents: 35
diff changeset
    90
        OstTrace1( TRACE_NORMAL, DUP1_CMTPCONTROLLERTIMER_RUNL, "The return value of stop transport is: %d", error );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    91
        iMTPOperator->StartTimer(KStartMTPSeconds);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    92
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    93
    else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    94
        {
49
c20dd21d1eb4 201035_05
hgs
parents: 35
diff changeset
    95
        OstTrace0( TRACE_NORMAL, DUP2_CMTPCONTROLLERTIMER_RUNL, "Start transport to launch mtp server" );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    96
        
60
841f70763fbe 201044_04
hgs
parents: 49
diff changeset
    97
		TInt err = iMTPClient.Connect();
841f70763fbe 201044_04
hgs
parents: 49
diff changeset
    98
		if ( err == KErrNone )
841f70763fbe 201044_04
hgs
parents: 49
diff changeset
    99
			{
841f70763fbe 201044_04
hgs
parents: 49
diff changeset
   100
			iMTPClient.StartTransport(KMTPBtTransportUid);
841f70763fbe 201044_04
hgs
parents: 49
diff changeset
   101
	        iStopTransport = EFalse;
841f70763fbe 201044_04
hgs
parents: 49
diff changeset
   102
		   iMTPOperator->SubscribeConnState();
841f70763fbe 201044_04
hgs
parents: 49
diff changeset
   103
			}
841f70763fbe 201044_04
hgs
parents: 49
diff changeset
   104
		else
841f70763fbe 201044_04
hgs
parents: 49
diff changeset
   105
			{
841f70763fbe 201044_04
hgs
parents: 49
diff changeset
   106
			OstTrace1( TRACE_NORMAL, DUP3_CMTPCONTROLLERTIMER_RUNL, "connect to mtp server failed! error code %d", err );
841f70763fbe 201044_04
hgs
parents: 49
diff changeset
   107
			}
841f70763fbe 201044_04
hgs
parents: 49
diff changeset
   108
        
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   109
        }
49
c20dd21d1eb4 201035_05
hgs
parents: 35
diff changeset
   110
    OstTraceFunctionExit0( CMTPCONTROLLERTIMER_RUNL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   111
    }
60
841f70763fbe 201044_04
hgs
parents: 49
diff changeset
   112