mtpdataproviders/mtppictbridgedp/pictbridgeengine/src/dpsusbnotifier.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
/*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     2
* Copyright (c) 2006, 2007 Nokia Corporation and/or its subsidiary(-ies).
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     3
* All rights reserved.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     8
*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     9
* Initial Contributors:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    11
*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    12
* Contributors:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    13
*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    14
* Description:  This class implements functions of set mtp personality, the 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    15
*                notification of the MTP printer connection and the
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    16
*				 notification of the MTP printer disconnection. 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    17
*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    18
*/
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    19
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    20
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    21
#include <usbstates.h>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    22
#include <rptp.h>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    23
#include "dpsusbnotifier.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    24
#include "dpsconst.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    25
#include "dpsptpnotifier.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    26
#include "dpsconnectnotifier.h"
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    27
#include "mtpdebug.h"
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    28
#include "OstTraceDefinitions.h"
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    29
#ifdef OST_TRACE_COMPILER_IN_USE
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    30
#include "dpsusbnotifierTraces.h"
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    31
#endif
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    32
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    33
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    34
const TInt KUnknownPersonality = 0;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    35
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    36
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    37
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    38
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    39
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    40
CDpsUsbNotifier* CDpsUsbNotifier::NewL(CDpsEngine* aEngine)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    41
	{
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    42
	CDpsUsbNotifier* self = new(ELeave) CDpsUsbNotifier(aEngine);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    43
	CleanupStack::PushL(self);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    44
	self->ConstructL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    45
	CleanupStack::Pop();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    46
	return self;	
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    47
	}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    48
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    49
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    50
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    51
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    52
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    53
CDpsUsbNotifier::CDpsUsbNotifier(CDpsEngine* aEngine) :
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    54
    CActive(EPriorityNormal), iEngine(aEngine), 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    55
    iPersonality(KUnknownPersonality), 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    56
    iConnectState(EUsbDeviceStateUndefined), iConfigured(EFalse), 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    57
    iConnection(CDpsEngine::ENotConnected), iRollback(EFalse)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    58
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    59
    OstTraceFunctionEntry0( CDPSUSBNOTIFIER_CDPSUSBNOTIFIER_CONS_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    60
    CActiveScheduler::Add(this);        
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    61
    OstTraceFunctionExit0( CDPSUSBNOTIFIER_CDPSUSBNOTIFIER_CONS_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    62
    }  
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    63
  
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    64
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    65
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    66
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    67
//	
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    68
CDpsUsbNotifier::~CDpsUsbNotifier()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    69
	{
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    70
	OstTraceFunctionEntry0( CDPSUSBNOTIFIER_CDPSUSBNOTIFIER_DES_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    71
	Cancel();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    72
	Rollback();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    73
    delete iPtpP; iPtpP = NULL;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    74
    delete iConnectP; iConnectP = NULL;	
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    75
    iUsbM.Close();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    76
    iUsbW.Close();
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    77
	OstTraceFunctionExit0( CDPSUSBNOTIFIER_CDPSUSBNOTIFIER_DES_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    78
	}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    79
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    80
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    81
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    82
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    83
//	
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    84
void CDpsUsbNotifier::ConstructL()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    85
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    86
    OstTraceFunctionEntry0( CDPSUSBNOTIFIER_CONSTRUCTL_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    87
    LEAVEIFERROR(iUsbM.Connect(),
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    88
            OstTrace1( TRACE_ERROR, CDPSUSBNOTIFIER_CONSTRUCTL, 
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    89
                    "Connect to iUsbM failed! error code %d", munged_err));       
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    90
    LEAVEIFERROR(iUsbW.Connect(),
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    91
            OstTrace1( TRACE_ERROR, DUP1_CDPSUSBNOTIFIER_CONSTRUCTL, 
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    92
                    "Connect to iUsbM failed! error code %d", munged_err));   
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    93
    iPtpP = CDpsPtpNotifier::NewL(this);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    94
    iConnectP = CDpsConnectNotifier::NewL(this);
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    95
    OstTraceFunctionExit0( CDPSUSBNOTIFIER_CONSTRUCTL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    96
    }    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    97
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    98
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    99
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   100
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   101
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   102
void CDpsUsbNotifier::WaitForPrinterNotify()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   103
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   104
    OstTraceFunctionEntry0( CDPSUSBNOTIFIER_WAITFORPRINTERNOTIFY_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   105
    iPtpP->ChangePtpPersonality();
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   106
    OstTraceFunctionExit0( CDPSUSBNOTIFIER_WAITFORPRINTERNOTIFY_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   107
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   108
  
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   109
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   110
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   111
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   112
//  
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   113
void CDpsUsbNotifier::CancelPrinterNotify()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   114
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   115
    OstTraceFunctionEntry0( CDPSUSBNOTIFIER_CANCELPRINTERNOTIFY_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   116
    if (CDpsEngine::ENotConnected == iConnection)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   117
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   118
        iPtpP->Cancel(); 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   119
        iConfigured = EFalse;    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   120
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   121
    else if (CDpsEngine::EPrinterConnected == iConnection)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   122
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   123
        iConnectP->Cancel();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   124
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   125
    // if the request is replied through RunL before the cancel
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   126
    // iPrinterConnectRequest will be NULL and we don't need to cancel anything
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   127
    if (iEngine->PrinterConnectRequest())
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   128
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   129
	    User::RequestComplete(iEngine->PrinterConnectRequest(), KErrCancel);   
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   130
        }    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   131
    OstTraceFunctionExit0( CDPSUSBNOTIFIER_CANCELPRINTERNOTIFY_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   132
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   133
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   134
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   135
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   136
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   137
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   138
void CDpsUsbNotifier::ConnectNotify()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   139
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   140
    OstTraceFunctionEntry0( CDPSUSBNOTIFIER_CONNECTNOTIFY_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   141
    iConnectP->ConnectNotify();
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   142
    OstTraceFunctionExit0( CDPSUSBNOTIFIER_CONNECTNOTIFY_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   143
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   144
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   145
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   146
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   147
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   148
//	
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   149
void CDpsUsbNotifier::Rollback()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   150
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   151
    OstTraceFunctionEntry0( CDPSUSBNOTIFIER_ROLLBACK_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   152
    // only when the personality has changed, we switch back to the previous
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   153
    // personality
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   154
    if (iPersonality)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   155
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   156
        TInt personalityId = KUsbPersonalityIdMTP;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   157
        iUsbM.GetCurrentPersonalityId(personalityId);
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   158
        OstTrace1( TRACE_NORMAL, CDPSUSBNOTIFIER_ROLLBACK, "current personality= %d", personalityId );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   159
        if(KUsbPersonalityIdPCSuiteMTP != personalityId)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   160
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   161
            if (!iConfigured || iRollback)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   162
                {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   163
                iUsbW.SetPreviousPersonality();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   164
                }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   165
            else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   166
                {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   167
                iUsbW.SetPreviousPersonalityOnDisconnect();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   168
                }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   169
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   170
        }
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   171
    OstTraceFunctionExit0( CDPSUSBNOTIFIER_ROLLBACK_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   172
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   173
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   174
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   175
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   176
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   177
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   178
void CDpsUsbNotifier::PtpNotify(TInt aErr)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   179
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   180
    OstTraceFunctionEntry0( CDPSUSBNOTIFIER_PTPNOTIFY_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   181
    OstTraceExt2( TRACE_NORMAL, CDPSUSBNOTIFIER_PTPNOTIFY, "connect status %x, error no %d", iConnectState, aErr );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   182
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   183
    if (aErr == KErrNone)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   184
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   185
        // personality changed to MTP, but cable is not connected        
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   186
        if (iConnectState != EUsbDeviceStateUndefined)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   187
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   188
            if (!IsActive())
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   189
                {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   190
                iEngine->Ptp().IsDpsPrinter(iStatus);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   191
                SetActive();    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   192
                }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   193
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   194
        else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   195
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   196
            iConnection = CDpsEngine::ENotConnected;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   197
            User::RequestComplete(iEngine->PrinterConnectRequest(), iConnection);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   198
            }    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   199
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   200
    else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   201
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   202
        iConnection = CDpsEngine::EWrongPrintModeConnected;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   203
        User::RequestComplete(iEngine->PrinterConnectRequest(), iConnection); 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   204
        }
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   205
      
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   206
    OstTraceFunctionExit0( CDPSUSBNOTIFIER_PTPNOTIFY_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   207
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   208
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   209
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   210
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   211
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   212
//    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   213
void CDpsUsbNotifier::PersonalityChanged()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   214
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   215
    OstTraceFunctionEntry0( CDPSUSBNOTIFIER_PERSONALITYCHANGED_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   216
    OstTrace1( TRACE_NORMAL, CDPSUSBNOTIFIER_PERSONALITYCHANGED, "iPersonality %x", iPersonality );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   217
    
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   218
    if (iPersonality != KUsbPersonalityIdMTP)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   219
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   220
        iConnection = CDpsEngine::EWrongPrintModeConnected;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   221
        iConfigured = EFalse;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   222
        if (iEngine->PrinterConnectRequest())
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   223
            {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   224
            User::RequestComplete(iEngine->PrinterConnectRequest(), 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   225
                iConnection);     
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   226
            }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   227
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   228
    // when UI gets this notification, it must quit. As the result, the dps 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   229
    // engine will be deleted so we do not need to care the further change.
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   230
      
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   231
    OstTraceFunctionExit0( CDPSUSBNOTIFIER_PERSONALITYCHANGED_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   232
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   233
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   234
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   235
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   236
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   237
//    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   238
void CDpsUsbNotifier::RunL()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   239
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   240
    OstTraceFunctionEntry0( CDPSUSBNOTIFIER_RUNL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   241
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   242
    if (EPrinterAvailable == iStatus.Int())
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   243
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   244
        iConnection = CDpsEngine::EPrinterConnected;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   245
        iConfigured = ETrue;	
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   246
        iEngine->SetDpsFolder(iEngine->Ptp().PtpFolder());			            
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   247
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   248
    else if (iStatus.Int() != KErrCancel)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   249
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   250
        iConnection = CDpsEngine::EOtherConnected;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   251
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   252
    User::RequestComplete(iEngine->PrinterConnectRequest(), iConnection);    
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   253
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   254
    OstTraceFunctionExit0( CDPSUSBNOTIFIER_RUNL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   255
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   256
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   257
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   258
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   259
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   260
//       
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   261
void CDpsUsbNotifier::DoCancel()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   262
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   263
    OstTraceFunctionEntry0( CDPSUSBNOTIFIER_DOCANCEL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   264
    iEngine->Ptp().CancelIsDpsPrinter();
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   265
    OstTraceFunctionExit0( CDPSUSBNOTIFIER_DOCANCEL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   266
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   267
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   268
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   269
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   270
// ---------------------------------------------------------------------------
60
841f70763fbe 201044_04
hgs
parents: 49
diff changeset
   271
//   
841f70763fbe 201044_04
hgs
parents: 49
diff changeset
   272
#ifdef OST_TRACE_COMPILER_IN_USE
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   273
TInt CDpsUsbNotifier::RunError(TInt aErr)
60
841f70763fbe 201044_04
hgs
parents: 49
diff changeset
   274
#else
841f70763fbe 201044_04
hgs
parents: 49
diff changeset
   275
TInt CDpsUsbNotifier::RunError(TInt /*aErr*/)
841f70763fbe 201044_04
hgs
parents: 49
diff changeset
   276
#endif
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   277
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   278
    OstTraceDef1( OST_TRACE_CATEGORY_PRODUCTION, TRACE_IMPORTANT, CDPSUSBNOTIFIER_RUNERROR, 
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   279
            "error code %d", aErr);
60
841f70763fbe 201044_04
hgs
parents: 49
diff changeset
   280
    return KErrNone;
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   281
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   282
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   283
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   284
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   285
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   286
//    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   287
void CDpsUsbNotifier::DisconnectNotify(TUsbDeviceState aState)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   288
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   289
    OstTraceFunctionEntry0( CDPSUSBNOTIFIER_DISCONNECTNOTIFY_ENTRY );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   290
    OstTrace1( TRACE_NORMAL, CDPSUSBNOTIFIER_DISCONNECTNOTIFY, "status %d", aState );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   291
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   292
    if (iConfigured)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   293
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   294
        iConnection = CDpsEngine::EPrinterDisconnected;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   295
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   296
    else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   297
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   298
        iConnection = CDpsEngine::ENotConnected;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   299
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   300
    iConfigured = EFalse;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   301
    if (EUsbDeviceStateUndefined == aState)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   302
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   303
        iRollback = ETrue;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   304
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   305
    if (iEngine->PrinterConnectRequest())
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   306
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   307
        User::RequestComplete(iEngine->PrinterConnectRequest(), iConnection);    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   308
        }
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   309
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   310
    OstTraceFunctionExit0( CDPSUSBNOTIFIER_DISCONNECTNOTIFY_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   311
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   312
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   313
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   314
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   315
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   316
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   317
TInt CDpsUsbNotifier::ConnectState()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   318
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   319
    OstTraceFunctionEntry0( CDPSUSBNOTIFIER_CONNECTSTATE_ENTRY );    
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   320
    TInt ret = iUsbM.GetDeviceState(iConnectState);  
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   321
	OstTraceFunctionExit0( CDPSUSBNOTIFIER_CONNECTSTATE_EXIT );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   322
	OstTrace1( TRACE_NORMAL, CDPSUSBNOTIFIER_CONNECTSTATE, "ConnectState %x", iConnectState );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   323
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   324
	return ret;    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   325
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   326
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   327
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   328
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   329
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   330
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   331
TBool CDpsUsbNotifier::IsSetPrintModeIssued()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   332
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   333
    return (iPersonality != KUnknownPersonality);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   334
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   335
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   336
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   337
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   338
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   339
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   340
TBool CDpsUsbNotifier::IsConfigured() const
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   341
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   342
    return iConfigured;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   343
    }