mtpdataproviders/mtppictbridgedp/pictbridgeengine/src/pictbridge.cpp
author hgs
Fri, 03 Sep 2010 18:38:04 +0800
changeset 49 c20dd21d1eb4
parent 29 3ae5cb0b4c02
permissions -rw-r--r--
201035_05
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 defines and implements the API for UI engine. 
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
#include <e32base.h>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    20
#include <dps.rsg>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    21
#include <f32file.h>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    22
#include <barsc.h>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    23
#include <barsread.h>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    24
#include <bautils.h>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    25
#include <pathinfo.h>
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    26
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    27
#include "pictbridge.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    28
#include "dpsdefs.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    29
#include "dpsxmlstring.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    30
#include "dpsconst.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    31
#include "dpsstatemachine.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    32
#include "dpsscriptreceiver.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    33
#include "dpsusbnotifier.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    34
#include "dpsparam.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    35
#include "dpsscriptsender.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    36
#include "dpstransaction.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    37
#include "dpsfile.h"
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    38
#include "mtpdebug.h"
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    39
#include "OstTraceDefinitions.h"
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    40
#ifdef OST_TRACE_COMPILER_IN_USE
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    41
#include "pictbridgeTraces.h"
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    42
#endif
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    43
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    44
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    45
const TInt KResource = 32;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    46
const TInt KDriver = 3;
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
EXPORT_C CDpsEngine* CDpsEngine::GetEngineL()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    52
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    53
    OstTraceFunctionEntry0( CDPSENGINE_GETENGINEL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    54
    CDpsEngine* me;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    55
    me = static_cast<CDpsEngine*>(Dll::Tls());
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    56
    if (!me)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    57
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    58
        CDpsEngine* self = new(ELeave) CDpsEngine();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    59
        
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    60
        CleanupStack::PushL(self);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    61
        self->ConstructL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    62
        CleanupStack::Pop();
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    63
        LEAVEIFERROR(Dll::SetTls(self),
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    64
                OstTrace1( TRACE_ERROR, CDPSENGINE_GETENGINEL, 
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    65
                        "Build singleton failed! error code %d", munged_err));
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    66
                
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    67
        OstTraceFunctionExit0( CDPSENGINE_GETENGINEL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    68
        return self;	
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    69
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    70
    else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    71
        {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    72
        OstTraceFunctionExit0( DUP1_CDPSENGINE_GETENGINEL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    73
        return me;	
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    74
        }			    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    75
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    76
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    77
// ---------------------------------------------------------------------------
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
EXPORT_C void CDpsEngine::Delete()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    82
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    83
    OstTraceFunctionEntry0( CDPSENGINE_DELETE_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    84
    CDpsEngine *me; me = static_cast<CDpsEngine*>(Dll::Tls());
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    85
    if (me)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    86
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    87
        delete me;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    88
        Dll::SetTls(NULL);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    89
        }
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    90
    OstTraceFunctionExit0( CDPSENGINE_DELETE_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    91
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    92
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    93
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    94
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    95
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    96
//	
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    97
void CDpsEngine::ConstructL()	
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    98
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
    99
    OstTraceFunctionEntry0( CDPSENGINE_CONSTRUCTL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   100
    iDpsParameters = TDpsXmlString::NewL();
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   101
    LEAVEIFERROR(iPtp.Connect(),
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   102
            OstTrace1( TRACE_ERROR, CDPSENGINE_CONSTRUCTL, 
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   103
                    "Connect iPtp failed! error code %d", munged_err));
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   104
            
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   105
    iDpsOperator = CDpsStateMachine::NewL(this);
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   106
    iUsbNotifier = CDpsUsbNotifier::NewL(this);	
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   107
    OstTraceFunctionExit0( CDPSENGINE_CONSTRUCTL_EXIT );
29
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
//	
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   114
CDpsEngine::~CDpsEngine()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   115
	{
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   116
    OstTraceFunctionEntry0( CDPSENGINE_CDPSENGINE_DES_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   117
	
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   118
    delete iDpsOperator;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   119
    iDpsOperator = NULL;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   120
	
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   121
    delete iUsbNotifier;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   122
    iUsbNotifier = NULL;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   123
		
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   124
    if (iDpsOperationRequest)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   125
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   126
        User::RequestComplete(iDpsOperationRequest, KErrCancel);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   127
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   128
    if (iDpsEventRequest)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   129
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   130
        User::RequestComplete(iDpsEventRequest, KErrCancel);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   131
        }    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   132
    if (iPrinterConnectRequest)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   133
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   134
        User::RequestComplete(iPrinterConnectRequest, KErrCancel);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   135
        }	    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   136
    delete iDpsParameters;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   137
    iDpsParameters = NULL;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   138
    iPtp.Close();
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   139
	OstTraceFunctionExit0( CDPSENGINE_CDPSENGINE_DES_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   140
	}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   141
	
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   142
// ---------------------------------------------------------------------------
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
EXPORT_C void CDpsEngine::SetPrintMode(TRequestStatus& aStatus)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   147
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   148
    OstTraceFunctionEntry0( CDPSENGINE_SETPRINTMODE_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   149
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   150
    iPrinterConnectRequest = &aStatus;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   151
    *iPrinterConnectRequest = KRequestPending;		
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   152
    iUsbNotifier->WaitForPrinterNotify();
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   153
	OstTraceFunctionExit0( CDPSENGINE_SETPRINTMODE_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   154
	}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   155
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   156
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   157
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   158
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   159
//	
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   160
EXPORT_C void CDpsEngine::CancelPrintMode()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   161
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   162
    OstTraceFunctionEntry0( CDPSENGINE_CANCELPRINTMODE_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   163
    iUsbNotifier->CancelPrinterNotify();				
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   164
    OstTraceFunctionExit0( CDPSENGINE_CANCELPRINTMODE_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   165
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   166
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   167
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   168
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   169
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   170
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   171
EXPORT_C void CDpsEngine::ConnectStateNotify(TRequestStatus& aStatus)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   172
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   173
    OstTraceFunctionEntry0( CDPSENGINE_CONNECTSTATENOTIFY_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   174
    // SetPrintMode must be finished
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   175
    if (!iUsbNotifier->IsSetPrintModeIssued())
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   176
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   177
        TRequestStatus* status = &aStatus;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   178
        User::RequestComplete(status, KErrNotReady);
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   179
        OstTraceFunctionExit0( CDPSENGINE_CONNECTSTATENOTIFY_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   180
        return;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   181
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   182
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   183
    iPrinterConnectRequest = &aStatus;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   184
    *iPrinterConnectRequest = KRequestPending;		
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   185
    iUsbNotifier->ConnectNotify();
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   186
    OstTraceFunctionExit0( DUP1_CDPSENGINE_CONNECTSTATENOTIFY_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   187
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   188
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   189
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   190
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   191
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   192
//	
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   193
EXPORT_C void CDpsEngine::DoDpsRequestL(TMDpsOperation* aRequest, 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   194
                                       TRequestStatus& aStatus)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   195
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   196
    OstTraceFunctionEntry0( CDPSENGINE_DODPSREQUESTL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   197
    // the ptp printer must be connected and registered for the dps event
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   198
    if (!iUsbNotifier->IsConfigured() || !iDpsEventRequest)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   199
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   200
        TRequestStatus* status = &aStatus;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   201
        User::RequestComplete(status, KErrNotReady);
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   202
        OstTraceFunctionExit0( CDPSENGINE_DODPSREQUESTL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   203
        return;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   204
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   205
        
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   206
    // there is a request from the host received and the reply has been
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   207
    // sending out, but the host has not received it yet. we can not send
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   208
    // the device request now  
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   209
    OstTraceExt2( TRACE_NORMAL, CDPSENGINE_DODPSREQUESTL, 
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   210
            "curState is %x, idleState is %x", (TUint32)iDpsOperator->CurState(), (TUint32)iDpsOperator->IdleState() );
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   211
    
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   212
    if (iDpsOperator->CurState() != iDpsOperator->IdleState())
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   213
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   214
        TRequestStatus* status = &aStatus;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   215
        User::RequestComplete(status, KErrInUse);        
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   216
        OstTraceFunctionExit0( DUP1_CDPSENGINE_DODPSREQUESTL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   217
        return;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   218
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   219
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   220
    iDpsOperator->StartTransactionL(aRequest);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   221
    iDpsOperationRequest = &aStatus;
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   222
    *iDpsOperationRequest = KRequestPending;            
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   223
	OstTraceFunctionExit0( DUP2_CDPSENGINE_DODPSREQUESTL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   224
	}
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   225
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   226
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   227
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   228
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   229
//	
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   230
EXPORT_C void CDpsEngine::CancelDpsRequest()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   231
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   232
    OstTraceFunctionEntry0( CDPSENGINE_CANCELDPSREQUEST_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   233
    if (iDpsOperationRequest)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   234
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   235
        iDpsOperator->ScriptSender()->Cancel();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   236
        User::RequestComplete(iDpsOperationRequest, KErrCancel);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   237
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   238
    iDpsOperator->Initialize();
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   239
    OstTraceFunctionExit0( CDPSENGINE_CANCELDPSREQUEST_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   240
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   241
 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   242
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   243
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   244
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   245
//   
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   246
EXPORT_C void CDpsEngine::DpsEventNotify(TDpsEvents& aParam,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   247
                                         TRequestStatus& aStatus)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   248
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   249
    OstTraceFunctionEntry0( CDPSENGINE_DPSEVENTNOTIFY_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   250
    // the PTP printer must be connected and registered for the disconnect
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   251
    if (!iUsbNotifier->IsConfigured() || !iPrinterConnectRequest)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   252
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   253
        TRequestStatus* status = &aStatus;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   254
        User::RequestComplete(status, KErrNotReady);
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   255
        OstTraceFunctionExit0( CDPSENGINE_DPSEVENTNOTIFY_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   256
        return;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   257
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   258
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   259
    iOutEvent = &aParam;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   260
    iDpsEventRequest = &aStatus;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   261
    *iDpsEventRequest = KRequestPending;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   262
    iDpsOperator->ScriptReceiver()->WaitForReceive();
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   263
    OstTraceFunctionExit0( DUP1_CDPSENGINE_DPSEVENTNOTIFY_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   264
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   265
 
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
EXPORT_C void CDpsEngine::CancelDpsEventNotify()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   271
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   272
    OstTraceFunctionEntry0( CDPSENGINE_CANCELDPSEVENTNOTIFY_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   273
    if (iDpsEventRequest)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   274
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   275
        User::RequestComplete(iDpsEventRequest, KErrCancel);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   276
        iDpsOperator->ScriptReceiver()->Cancel();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   277
        }  
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   278
    OstTraceFunctionExit0( CDPSENGINE_CANCELDPSEVENTNOTIFY_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   279
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   280
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
EXPORT_C void CDpsEngine::GetDpsConfigL(TDpsConfigPrintReq& aConfig)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   286
    {
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   287
    OstTraceFunctionEntry0( CDPSENGINE_GETDPSCONFIGL_ENTRY );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   288
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   289
    RFs fs = iDpsOperator->Trader()->FileHandle()->FileSession();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   290
    RResourceFile resource;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   291
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   292
    TBuf<KResource> resourceFile(PathInfo::RomRootPath());
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   293
    TBuf<KResource> length(KDpsResource);    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   294
    resourceFile.SetLength(KDriver + length.Length());
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   295
    resourceFile.Replace(KDriver, length.Length(), KDpsResource);
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   296
    OstTraceExt1( TRACE_NORMAL, CDPSENGINE_GETDPSCONFIGL, "file is %S", resourceFile );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   297
    resource.OpenL(fs, resourceFile);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   298
    CleanupClosePushL(resource);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   299
    resource.ConfirmSignatureL(KDpsResourceVersion);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   300
    HBufC8* id = resource.AllocReadLC(DPS_CONFIG);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   301
    TResourceReader reader;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   302
    reader.SetBuffer(id);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   303
    TInt count = static_cast<TInt>(reader.ReadUint8());
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   304
    for (TInt i = 0; i < count; i++)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   305
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   306
        TDpsVersion version;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   307
        version.iMajor = static_cast<TInt>(reader.ReadUint8());
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   308
        version.iMinor = static_cast<TInt>(reader.ReadUint8());
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   309
        aConfig.iDpsVersions.Append(version); 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   310
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   311
    TPtrC vendorString = reader.ReadTPtrC(); 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   312
    aConfig.iVendorName.Copy(vendorString);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   313
    TDpsVersion vendorVersion;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   314
    vendorVersion.iMajor = static_cast<TInt>(reader.ReadUint8());
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   315
    vendorVersion.iMinor = static_cast<TInt>(reader.ReadUint8());
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   316
    aConfig.iVendorVersion = vendorVersion;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   317
    TPtrC productString = reader.ReadTPtrC();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   318
    aConfig.iProductName.Copy(productString);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   319
    TPtrC SerialNo = reader.ReadTPtrC();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   320
    aConfig.iSerialNo.Copy(SerialNo);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   321
    CleanupStack::PopAndDestroy(id); 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   322
    CleanupStack::PopAndDestroy(&resource);
49
c20dd21d1eb4 201035_05
hgs
parents: 29
diff changeset
   323
    OstTraceFunctionExit0( CDPSENGINE_GETDPSCONFIGL_EXIT );
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   324
    }
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
EXPORT_C const TDesC& CDpsEngine::DpsFolder() const
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   331
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   332
    return iDpsFolder;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   333
    }
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
TDpsEvents* CDpsEngine::Event() const
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   340
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   341
    return iOutEvent;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   342
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   343
 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   344
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   345
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   346
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   347
//         
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   348
RPtp& CDpsEngine::Ptp()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   349
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   350
    return iPtp;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   351
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   352
  
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   353
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   354
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   355
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   356
//         
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   357
TDpsXmlString* CDpsEngine::DpsParameters() const
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   358
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   359
    return iDpsParameters;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   360
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   361
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   362
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   363
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   364
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   365
//    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   366
TRequestStatus*& CDpsEngine::EventRequest()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   367
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   368
    return iDpsEventRequest;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   369
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   370
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   371
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   372
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   373
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   374
//            
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   375
TRequestStatus*& CDpsEngine::OperationRequest()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   376
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   377
    return iDpsOperationRequest;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   378
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   379
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   380
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   381
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   382
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   383
//                
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   384
TRequestStatus*& CDpsEngine::PrinterConnectRequest()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   385
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   386
    return iPrinterConnectRequest;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   387
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   388
    
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   389
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   390
// 
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   391
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   392
//               
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   393
void CDpsEngine::SetDpsFolder(const TDesC& aFolder)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   394
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   395
    iDpsFolder.Copy(aFolder);
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   396
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   397