btobexprofiles/obexsendservices/obexservicesendutils/src/BTServiceStarter.cpp
author hgs
Mon, 12 Jul 2010 18:51:05 +0300
changeset 42 b72428996822
parent 32 19bd632b5100
child 45 b0aebde9b1fb
permissions -rw-r--r--
201025
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
32
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  Service starter implementation
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
// INCLUDE FILES
hgs
parents:
diff changeset
    21
#include "BTServiceStarter.h"
hgs
parents:
diff changeset
    22
#include "BTSUDebug.h"
hgs
parents:
diff changeset
    23
#include "BTSOPPController.h"
hgs
parents:
diff changeset
    24
#include "BTSBIPController.h"
hgs
parents:
diff changeset
    25
#include "BTSBPPController.h"
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
#include <obexutilsmessagehandler.h>
hgs
parents:
diff changeset
    28
#include <featmgr.h>
hgs
parents:
diff changeset
    29
#include <hbdevicenotificationdialogsymbian.h>
42
hgs
parents: 32
diff changeset
    30
#include <hbtextresolversymbian.h>
32
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
// CONSTANTS
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
// From BT SIG - Assigned numbers
hgs
parents:
diff changeset
    35
const TUint KBTServiceOPPSending        = 0x1105;
hgs
parents:
diff changeset
    36
const TUint KBTServiceDirectPrinting    = 0x1118;
hgs
parents:
diff changeset
    37
const TUint KBTServiceImagingResponder  = 0x111B;
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
const TUint KBTProgressInterval         = 1000000;
hgs
parents:
diff changeset
    40
42
hgs
parents: 32
diff changeset
    41
const TUid KUidMsgTypeBt                 = {0x10009ED5};
hgs
parents: 32
diff changeset
    42
//todo  need to find a suitable header to include. This is from obexutilslayer.h
32
hgs
parents:
diff changeset
    43
42
hgs
parents: 32
diff changeset
    44
const TInt KMaxDesCLength  = 256;
hgs
parents: 32
diff changeset
    45
hgs
parents: 32
diff changeset
    46
hgs
parents: 32
diff changeset
    47
//_LIT(KSendingDialog,"com.nokia.hb.btdevicedialog/1.0");
hgs
parents: 32
diff changeset
    48
hgs
parents: 32
diff changeset
    49
_LIT(KLocFileName, "btdialogs_");
hgs
parents: 32
diff changeset
    50
_LIT(KPath, "z:/resource/qt/translations/");  
hgs
parents: 32
diff changeset
    51
hgs
parents: 32
diff changeset
    52
_LIT(KFilesSentText, "txt_bt_dpophead_all_files_sent");//All files sent 
hgs
parents: 32
diff changeset
    53
_LIT(KDeviceText,"txt_bt_dpopinfo_sent_to_1");
hgs
parents: 32
diff changeset
    54
//_LIT(KNotConnectedText,"txt_bt_info_unable_to_connect_with_bluetooth");
hgs
parents: 32
diff changeset
    55
_LIT(KSendingFailedText,"txt_bt_dpophead_sending_failed");
32
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
// ============================ MEMBER FUNCTIONS ===============================
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    60
// CBTServiceStarter::CBTServiceStarter
hgs
parents:
diff changeset
    61
// C++ default constructor can NOT contain any code, that
hgs
parents:
diff changeset
    62
// might leave.
hgs
parents:
diff changeset
    63
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    64
//
hgs
parents:
diff changeset
    65
CBTServiceStarter::CBTServiceStarter() 
hgs
parents:
diff changeset
    66
    : CActive( CActive::EPriorityStandard ),
hgs
parents:
diff changeset
    67
      iBTEngDiscovery(NULL),
hgs
parents:
diff changeset
    68
      iService( EBTSendingService ),
hgs
parents:
diff changeset
    69
      iServiceStarted( EFalse ),
hgs
parents:
diff changeset
    70
      iMessageServerIndex(0),
hgs
parents:
diff changeset
    71
      iBytesSendWithBIP(0),
hgs
parents:
diff changeset
    72
      iProgressDialogActive(EFalse),
hgs
parents:
diff changeset
    73
      iUserCancel(EFalse), 
hgs
parents:
diff changeset
    74
      iFeatureManagerInitialized(EFalse),
hgs
parents:
diff changeset
    75
      iTriedBIP(EFalse),
hgs
parents:
diff changeset
    76
      iTriedOPP(EFalse)
hgs
parents:
diff changeset
    77
    {    
hgs
parents:
diff changeset
    78
    CActiveScheduler::Add( this );
hgs
parents:
diff changeset
    79
    }
hgs
parents:
diff changeset
    80
hgs
parents:
diff changeset
    81
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    82
// CBTServiceStarter::ConstructL
hgs
parents:
diff changeset
    83
// Symbian 2nd phase constructor can leave.
hgs
parents:
diff changeset
    84
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    85
//
hgs
parents:
diff changeset
    86
void CBTServiceStarter::ConstructL()
hgs
parents:
diff changeset
    87
    {
hgs
parents:
diff changeset
    88
    FLOG(_L("[BTSU]\t CBTServiceStarter::ConstructL()"));
hgs
parents:
diff changeset
    89
    iDevice = CBTDevice::NewL();
42
hgs
parents: 32
diff changeset
    90
    iDialog = CObexUtilsDialog::NewL( this );
hgs
parents: 32
diff changeset
    91
    iDelayedDestroyer = CBTServiceDelayedDestroyer::NewL(CActive::EPriorityStandard);
32
hgs
parents:
diff changeset
    92
    FeatureManager::InitializeLibL();
hgs
parents:
diff changeset
    93
    iFeatureManagerInitialized = ETrue;
42
hgs
parents: 32
diff changeset
    94
    iLocalisationInit = HbTextResolverSymbian::Init(KLocFileName, KPath);
32
hgs
parents:
diff changeset
    95
    FLOG(_L("[BTSU]\t CBTServiceStarter::ConstructL() completed"));
hgs
parents:
diff changeset
    96
    }
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    99
// CBTServiceStarter::NewL
hgs
parents:
diff changeset
   100
// Two-phased constructor.
hgs
parents:
diff changeset
   101
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   102
//
hgs
parents:
diff changeset
   103
CBTServiceStarter* CBTServiceStarter::NewL()
hgs
parents:
diff changeset
   104
    {
hgs
parents:
diff changeset
   105
    CBTServiceStarter* self = new( ELeave ) CBTServiceStarter();
hgs
parents:
diff changeset
   106
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
   107
    self->ConstructL();
hgs
parents:
diff changeset
   108
    CleanupStack::Pop();
hgs
parents:
diff changeset
   109
    return self;
hgs
parents:
diff changeset
   110
    }
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
CBTServiceStarter::~CBTServiceStarter()
hgs
parents:
diff changeset
   113
    {
hgs
parents:
diff changeset
   114
    FLOG(_L("[BTSU]\t CBTServiceStarter::Destructor()"));
hgs
parents:
diff changeset
   115
    if ( iMessageServerIndex != 0 )
hgs
parents:
diff changeset
   116
        {
hgs
parents:
diff changeset
   117
        TRAPD( notUsedRetVal, TObexUtilsMessageHandler::DeleteOutboxEntryL( iMessageServerIndex ) );
hgs
parents:
diff changeset
   118
        notUsedRetVal=notUsedRetVal;
hgs
parents:
diff changeset
   119
        FTRACE(FPrint(_L("[BTSU]\t ~CBTServiceStarter() delete ob entry %d"), notUsedRetVal ) );
hgs
parents:
diff changeset
   120
        }
hgs
parents:
diff changeset
   121
    StopTransfer(KErrCancel); // Cancels active object
hgs
parents:
diff changeset
   122
    
hgs
parents:
diff changeset
   123
    delete iList;
hgs
parents:
diff changeset
   124
    delete iDevice;
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
    delete iController;
hgs
parents:
diff changeset
   127
    delete iBTEngDiscovery;
42
hgs
parents: 32
diff changeset
   128
    delete iDialog;
hgs
parents: 32
diff changeset
   129
    delete iDelayedDestroyer;
hgs
parents: 32
diff changeset
   130
    
32
hgs
parents:
diff changeset
   131
    if(iWaiter && iWaiter->IsStarted() )
hgs
parents:
diff changeset
   132
        {
hgs
parents:
diff changeset
   133
        iWaiter->AsyncStop();
hgs
parents:
diff changeset
   134
        }
hgs
parents:
diff changeset
   135
    delete iBTEngSettings;
hgs
parents:
diff changeset
   136
    
hgs
parents:
diff changeset
   137
    if ( iFeatureManagerInitialized )
hgs
parents:
diff changeset
   138
        {
hgs
parents:
diff changeset
   139
        FeatureManager::UnInitializeLib();
hgs
parents:
diff changeset
   140
        }
hgs
parents:
diff changeset
   141
    
hgs
parents:
diff changeset
   142
    FLOG(_L("[BTSU]\t CBTServiceStarter::Destructor() completed"));
hgs
parents:
diff changeset
   143
    }
hgs
parents:
diff changeset
   144
hgs
parents:
diff changeset
   145
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   146
// CBTServiceStarter::StartServiceL
hgs
parents:
diff changeset
   147
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   148
//
hgs
parents:
diff changeset
   149
void CBTServiceStarter::StartServiceL( TBTServiceType aService, 
hgs
parents:
diff changeset
   150
                                       CBTServiceParameterList* aList,
hgs
parents:
diff changeset
   151
                                       CActiveSchedulerWait* aWaiter )
hgs
parents:
diff changeset
   152
    {
hgs
parents:
diff changeset
   153
    FLOG(_L("[BTSU]\t CBTServiceStarter::StartServiceL()"));
hgs
parents:
diff changeset
   154
   
hgs
parents:
diff changeset
   155
	// Delete old list and take ownership of the new one
hgs
parents:
diff changeset
   156
    //
hgs
parents:
diff changeset
   157
	
hgs
parents:
diff changeset
   158
	delete iList;
hgs
parents:
diff changeset
   159
	iList = aList;
hgs
parents:
diff changeset
   160
hgs
parents:
diff changeset
   161
    if ( iServiceStarted )
hgs
parents:
diff changeset
   162
        {
hgs
parents:
diff changeset
   163
        User::Leave( KErrInUse );
hgs
parents:
diff changeset
   164
        }
hgs
parents:
diff changeset
   165
    if ( !ValidParameters( aService, aList ) )
hgs
parents:
diff changeset
   166
        {
hgs
parents:
diff changeset
   167
        User::Leave( KErrArgument );
hgs
parents:
diff changeset
   168
        }	
hgs
parents:
diff changeset
   169
    
hgs
parents:
diff changeset
   170
    // Store the waiter pointer, a NULL value is also accepted
hgs
parents:
diff changeset
   171
    //
hgs
parents:
diff changeset
   172
    iWaiter = aWaiter;
hgs
parents:
diff changeset
   173
hgs
parents:
diff changeset
   174
    // Store the requested service
hgs
parents:
diff changeset
   175
    //
hgs
parents:
diff changeset
   176
    iService = aService;
hgs
parents:
diff changeset
   177
hgs
parents:
diff changeset
   178
    if( !iBTEngSettings )
hgs
parents:
diff changeset
   179
        {
hgs
parents:
diff changeset
   180
        iBTEngSettings = CBTEngSettings::NewL( this );
hgs
parents:
diff changeset
   181
        }
hgs
parents:
diff changeset
   182
    TBTPowerStateValue power = EBTPowerOff;
hgs
parents:
diff changeset
   183
    User::LeaveIfError( iBTEngSettings->GetPowerState( power ) );
hgs
parents:
diff changeset
   184
    TBool offline = EFalse;
hgs
parents:
diff changeset
   185
    if( !power )
hgs
parents:
diff changeset
   186
        {
hgs
parents:
diff changeset
   187
        //offline = CheckOfflineModeL();
hgs
parents:
diff changeset
   188
         offline = EFalse;
hgs
parents:
diff changeset
   189
        }
hgs
parents:
diff changeset
   190
    if( !offline )
hgs
parents:
diff changeset
   191
        {
hgs
parents:
diff changeset
   192
        FLOG(_L("[BTSU]\t CBTServiceStarter::StartServiceL() Phone is online, request temporary power on."));
hgs
parents:
diff changeset
   193
		TurnBTPowerOnL( power );
hgs
parents:
diff changeset
   194
        }
hgs
parents:
diff changeset
   195
hgs
parents:
diff changeset
   196
    FLOG(_L("[BTSU]\t CBTServiceStarter::StartServiceL() completed"));
hgs
parents:
diff changeset
   197
    }
hgs
parents:
diff changeset
   198
    
hgs
parents:
diff changeset
   199
hgs
parents:
diff changeset
   200
hgs
parents:
diff changeset
   201
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   202
// CBTServiceStarter::ControllerComplete
hgs
parents:
diff changeset
   203
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   204
//
hgs
parents:
diff changeset
   205
void CBTServiceStarter::ControllerComplete( TInt aStatus )
hgs
parents:
diff changeset
   206
    {
hgs
parents:
diff changeset
   207
    FLOG(_L("[BTSU]\t CBTServiceStarter::ControllerComplete()"));    
hgs
parents:
diff changeset
   208
    TInt error;
hgs
parents:
diff changeset
   209
    if ( iAllSend ) //stop transfer if everything is send
hgs
parents:
diff changeset
   210
        {
hgs
parents:
diff changeset
   211
        StopTransfer( aStatus );	      	        
hgs
parents:
diff changeset
   212
        return;    
hgs
parents:
diff changeset
   213
        }
hgs
parents:
diff changeset
   214
    if(( aStatus==KErrNone || aStatus==EBTSNoError ) && 
hgs
parents:
diff changeset
   215
        iState == EBTSStarterFindingBIP )
hgs
parents:
diff changeset
   216
        {
hgs
parents:
diff changeset
   217
        iBytesSendWithBIP=0;
hgs
parents:
diff changeset
   218
        if( iProgressGetter )
hgs
parents:
diff changeset
   219
            {
hgs
parents:
diff changeset
   220
            iBytesSendWithBIP=iProgressGetter->GetProgressStatus();
hgs
parents:
diff changeset
   221
            iProgressGetter=NULL;
hgs
parents:
diff changeset
   222
            delete iController; 
hgs
parents:
diff changeset
   223
            iController = NULL;            
hgs
parents:
diff changeset
   224
            }
hgs
parents:
diff changeset
   225
        if ( !iBTEngDiscovery )
hgs
parents:
diff changeset
   226
            {
hgs
parents:
diff changeset
   227
            TRAPD(err, iBTEngDiscovery = CBTEngDiscovery::NewL(this) );
hgs
parents:
diff changeset
   228
            if (err != KErrNone )
hgs
parents:
diff changeset
   229
                {
hgs
parents:
diff changeset
   230
                StopTransfer(EBTSPuttingFailed);	      	
hgs
parents:
diff changeset
   231
                return;
hgs
parents:
diff changeset
   232
                }
hgs
parents:
diff changeset
   233
            }
hgs
parents:
diff changeset
   234
        error=iBTEngDiscovery->RemoteProtocolChannelQuery(iDevice->BDAddr(),
hgs
parents:
diff changeset
   235
                               TUUID(KBTServiceOPPSending));	                 
hgs
parents:
diff changeset
   236
        if( error == KErrNone )
hgs
parents:
diff changeset
   237
	      	{
hgs
parents:
diff changeset
   238
	      	iState = EBTSStarterFindingOPP;	
hgs
parents:
diff changeset
   239
        	}
hgs
parents:
diff changeset
   240
        else
hgs
parents:
diff changeset
   241
        	{
hgs
parents:
diff changeset
   242
        	StopTransfer(EBTSPuttingFailed);	      	
hgs
parents:
diff changeset
   243
       		}		                           
hgs
parents:
diff changeset
   244
        }
hgs
parents:
diff changeset
   245
    else
hgs
parents:
diff changeset
   246
        {
hgs
parents:
diff changeset
   247
        StopTransfer( aStatus );	      	        
hgs
parents:
diff changeset
   248
        }   
hgs
parents:
diff changeset
   249
    FLOG(_L("[BTSU]\t CBTServiceStarter::ControllerComplete() completed"));
hgs
parents:
diff changeset
   250
    }
hgs
parents:
diff changeset
   251
hgs
parents:
diff changeset
   252
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   253
// CBTServiceStarter::GetProgressStatus
hgs
parents:
diff changeset
   254
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   255
//
hgs
parents:
diff changeset
   256
TInt CBTServiceStarter::GetProgressStatus()
hgs
parents:
diff changeset
   257
    {    
hgs
parents:
diff changeset
   258
    if ( iProgressGetter )
hgs
parents:
diff changeset
   259
        {
hgs
parents:
diff changeset
   260
        return iProgressGetter->GetProgressStatus()+iBytesSendWithBIP;       
hgs
parents:
diff changeset
   261
        }
hgs
parents:
diff changeset
   262
    else
hgs
parents:
diff changeset
   263
        {
hgs
parents:
diff changeset
   264
        return iBytesSendWithBIP;
hgs
parents:
diff changeset
   265
        }
hgs
parents:
diff changeset
   266
    }
hgs
parents:
diff changeset
   267
hgs
parents:
diff changeset
   268
hgs
parents:
diff changeset
   269
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   270
// CBTServiceStarter::ValidParameters
hgs
parents:
diff changeset
   271
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   272
//
hgs
parents:
diff changeset
   273
TBool CBTServiceStarter::ValidParameters( 
hgs
parents:
diff changeset
   274
    TBTServiceType aService, const CBTServiceParameterList* aList) const
hgs
parents:
diff changeset
   275
    {
hgs
parents:
diff changeset
   276
    FLOG(_L("[BTSU]\t CBTServiceStarter::ValidParameters()"));
hgs
parents:
diff changeset
   277
hgs
parents:
diff changeset
   278
    TBool result = EFalse;
hgs
parents:
diff changeset
   279
hgs
parents:
diff changeset
   280
    if ( aList != NULL )
hgs
parents:
diff changeset
   281
        {
hgs
parents:
diff changeset
   282
        switch ( aService )
hgs
parents:
diff changeset
   283
            {
hgs
parents:
diff changeset
   284
            case EBTSendingService:
hgs
parents:
diff changeset
   285
                {
hgs
parents:
diff changeset
   286
                // Sending service must have object or image parameters
hgs
parents:
diff changeset
   287
                //
hgs
parents:
diff changeset
   288
                if ( aList->ObjectCount() > 0 || aList->ImageCount() > 0 )
hgs
parents:
diff changeset
   289
                    {
hgs
parents:
diff changeset
   290
                    result = ETrue;
hgs
parents:
diff changeset
   291
                    }
hgs
parents:
diff changeset
   292
                break;
hgs
parents:
diff changeset
   293
                }
hgs
parents:
diff changeset
   294
            case EBTPrintingService:
hgs
parents:
diff changeset
   295
                {
hgs
parents:
diff changeset
   296
                // Printing service must have xhtml parameters
hgs
parents:
diff changeset
   297
                //
hgs
parents:
diff changeset
   298
                if ( aList->XhtmlCount() > 0 )
hgs
parents:
diff changeset
   299
                    {
hgs
parents:
diff changeset
   300
                    result = ETrue;
hgs
parents:
diff changeset
   301
                    }       
hgs
parents:
diff changeset
   302
                break;
hgs
parents:
diff changeset
   303
                }
hgs
parents:
diff changeset
   304
            case EBTObjectPushService:
hgs
parents:
diff changeset
   305
                {
hgs
parents:
diff changeset
   306
                // Sending service must have object or image parameters
hgs
parents:
diff changeset
   307
                //
hgs
parents:
diff changeset
   308
                if ( aList->ObjectCount() > 0 || aList->ImageCount() > 0 )
hgs
parents:
diff changeset
   309
                    {
hgs
parents:
diff changeset
   310
                    result = ETrue;
hgs
parents:
diff changeset
   311
                    }      
hgs
parents:
diff changeset
   312
                break;
hgs
parents:
diff changeset
   313
                }
hgs
parents:
diff changeset
   314
            default:
hgs
parents:
diff changeset
   315
                {
hgs
parents:
diff changeset
   316
                result = EFalse;
hgs
parents:
diff changeset
   317
                break;
hgs
parents:
diff changeset
   318
                }
hgs
parents:
diff changeset
   319
            }
hgs
parents:
diff changeset
   320
        }
hgs
parents:
diff changeset
   321
    FTRACE(FPrint(_L("[BTSU]\t CBTServiceStarter::ValidParameters() completed with %d"), result ) );
hgs
parents:
diff changeset
   322
hgs
parents:
diff changeset
   323
    return result;
hgs
parents:
diff changeset
   324
    }
hgs
parents:
diff changeset
   325
hgs
parents:
diff changeset
   326
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   327
// CBTServiceStarter::StartProfileSelectL
hgs
parents:
diff changeset
   328
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   329
//
hgs
parents:
diff changeset
   330
void CBTServiceStarter::StartProfileSelectL( TBTServiceType aService )
hgs
parents:
diff changeset
   331
    {
hgs
parents:
diff changeset
   332
    FLOG(_L("[BTSU]\t CBTServiceStarter::StartProfileSelectL()"));    
hgs
parents:
diff changeset
   333
    LaunchWaitNoteL();   
hgs
parents:
diff changeset
   334
    iAllSend=EFalse;  
hgs
parents:
diff changeset
   335
    iSendToBIPOnlyDevice = EFalse;
hgs
parents:
diff changeset
   336
    
hgs
parents:
diff changeset
   337
    if ( !iBTEngDiscovery )
hgs
parents:
diff changeset
   338
        {
hgs
parents:
diff changeset
   339
        iBTEngDiscovery = CBTEngDiscovery::NewL(this);
hgs
parents:
diff changeset
   340
        }
hgs
parents:
diff changeset
   341
    
hgs
parents:
diff changeset
   342
    if ( !FeatureManager::FeatureSupported( KFeatureIdBtImagingProfile ) && (aService != EBTPrintingService) )
hgs
parents:
diff changeset
   343
        {
hgs
parents:
diff changeset
   344
        // If BTimagingProfile is disabled, use OPP instead.
hgs
parents:
diff changeset
   345
        User::LeaveIfError( iBTEngDiscovery->RemoteProtocolChannelQuery(iDevice->BDAddr(), 
hgs
parents:
diff changeset
   346
                                                                                       TUUID(KBTServiceOPPSending)));
hgs
parents:
diff changeset
   347
        iState = EBTSStarterFindingOPP;  
hgs
parents:
diff changeset
   348
        return;
hgs
parents:
diff changeset
   349
        }
hgs
parents:
diff changeset
   350
    
hgs
parents:
diff changeset
   351
    switch ( aService  )
hgs
parents:
diff changeset
   352
        {
hgs
parents:
diff changeset
   353
        case EBTSendingService: // Find OPP
hgs
parents:
diff changeset
   354
            {            
hgs
parents:
diff changeset
   355
            if ( iList->ObjectCount() > 0 )  // We try to send files with OPP profile as long as it contains non-bip objects
hgs
parents:
diff changeset
   356
                {
hgs
parents:
diff changeset
   357
                FLOG(_L("[BTSU]\t CBTServiceStarter::StartProfileSelectL() OPP"));    
hgs
parents:
diff changeset
   358
                User::LeaveIfError( iBTEngDiscovery->RemoteProtocolChannelQuery(iDevice->BDAddr(), 
hgs
parents:
diff changeset
   359
                                                                                TUUID(KBTServiceOPPSending)));
hgs
parents:
diff changeset
   360
                iState = EBTSStarterFindingOPP;          
hgs
parents:
diff changeset
   361
                }
hgs
parents:
diff changeset
   362
            else if(iList->ObjectCount() == 0 && iList->ImageCount() > 0)
hgs
parents:
diff changeset
   363
                {
hgs
parents:
diff changeset
   364
                FLOG(_L("[BTSU]\t CBTServiceStarter::StartProfileSelectL() BIP")); 
hgs
parents:
diff changeset
   365
                User::LeaveIfError( iBTEngDiscovery->RemoteProtocolChannelQuery(iDevice->BDAddr(),
hgs
parents:
diff changeset
   366
                                                                                TUUID(KBTServiceImagingResponder)));
hgs
parents:
diff changeset
   367
                iState = EBTSStarterFindingBIP;
hgs
parents:
diff changeset
   368
                }
hgs
parents:
diff changeset
   369
            break;
hgs
parents:
diff changeset
   370
            }
hgs
parents:
diff changeset
   371
        case EBTPrintingService: // Find BPP
hgs
parents:
diff changeset
   372
            {
hgs
parents:
diff changeset
   373
            FLOG(_L("[BTSU]\t CBTServiceStarter::StartProfileSelectL() BPP"));
hgs
parents:
diff changeset
   374
            User::LeaveIfError( iBTEngDiscovery->RemoteProtocolChannelQuery(iDevice->BDAddr(),
hgs
parents:
diff changeset
   375
                TUUID(KBTServiceDirectPrinting)));
hgs
parents:
diff changeset
   376
            iState = EBTSStarterFindingBPP;            
hgs
parents:
diff changeset
   377
            break;
hgs
parents:
diff changeset
   378
            }
hgs
parents:
diff changeset
   379
        case EBTObjectPushService: // Find BIP
hgs
parents:
diff changeset
   380
            {
hgs
parents:
diff changeset
   381
            FLOG(_L("[BTSU]\t CBTServiceStarter::StartProfileSelectL() BIP"));
hgs
parents:
diff changeset
   382
            User::LeaveIfError( iBTEngDiscovery->RemoteProtocolChannelQuery(iDevice->BDAddr(),
hgs
parents:
diff changeset
   383
                TUUID(KBTServiceOPPSending)));
hgs
parents:
diff changeset
   384
            iState = EBTSStarterFindingOPP;            
hgs
parents:
diff changeset
   385
            break;
hgs
parents:
diff changeset
   386
            }
hgs
parents:
diff changeset
   387
        default:
hgs
parents:
diff changeset
   388
            {
hgs
parents:
diff changeset
   389
            FLOG(_L("[BTSU]\t CBTServiceStarter::StartProfileSelectL() ERROR, unhandled case"));            
hgs
parents:
diff changeset
   390
            break;
hgs
parents:
diff changeset
   391
            }
hgs
parents:
diff changeset
   392
        }
hgs
parents:
diff changeset
   393
hgs
parents:
diff changeset
   394
    FLOG(_L("[BTSU]\t CBTServiceStarter::StartProfileSelectL() completed"));
hgs
parents:
diff changeset
   395
    }
hgs
parents:
diff changeset
   396
    
hgs
parents:
diff changeset
   397
hgs
parents:
diff changeset
   398
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   399
// CBTServiceStarter::StartProfileL
hgs
parents:
diff changeset
   400
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   401
//
hgs
parents:
diff changeset
   402
void CBTServiceStarter::StartProfileL( TBTServiceProfile aProfile )
hgs
parents:
diff changeset
   403
    {
hgs
parents:
diff changeset
   404
    FLOG(_L("[BTSU]\t CBTServiceStarter::StartProfileL()"));
hgs
parents:
diff changeset
   405
hgs
parents:
diff changeset
   406
    switch ( aProfile )
hgs
parents:
diff changeset
   407
        {
hgs
parents:
diff changeset
   408
        case EBTSBPP:
hgs
parents:
diff changeset
   409
            {            
hgs
parents:
diff changeset
   410
            iController = CBTSBPPController::NewL( this, iClientChannel, 
hgs
parents:
diff changeset
   411
                                                   iDevice->BDAddr(), iList,
hgs
parents:
diff changeset
   412
                                                   iBTEngDiscovery );
hgs
parents:
diff changeset
   413
            break;
hgs
parents:
diff changeset
   414
            }
hgs
parents:
diff changeset
   415
        case EBTSOPP:
hgs
parents:
diff changeset
   416
            {
hgs
parents:
diff changeset
   417
            iController = CBTSOPPController::NewL( this, iClientChannel, 
hgs
parents:
diff changeset
   418
                                                   iDevice->BDAddr(), iList );
hgs
parents:
diff changeset
   419
            break;
hgs
parents:
diff changeset
   420
            }
hgs
parents:
diff changeset
   421
        case EBTSBIP:
hgs
parents:
diff changeset
   422
            {
hgs
parents:
diff changeset
   423
            iController = CBTSBIPController::NewL( this, iClientChannel, 
hgs
parents:
diff changeset
   424
                                                   iDevice->BDAddr(), iList );
hgs
parents:
diff changeset
   425
            break;
hgs
parents:
diff changeset
   426
            }
hgs
parents:
diff changeset
   427
        case EBTSNone:
hgs
parents:
diff changeset
   428
        default:
hgs
parents:
diff changeset
   429
            {
hgs
parents:
diff changeset
   430
            FLOG(_L("[BTSU]\t CBTServiceStarter::StartProfileL() ERROR, unhandled case"));            
hgs
parents:
diff changeset
   431
            break;
hgs
parents:
diff changeset
   432
            }
hgs
parents:
diff changeset
   433
        }
hgs
parents:
diff changeset
   434
hgs
parents:
diff changeset
   435
    FLOG(_L("[BTSU]\t CBTServiceStarter::StartProfileL() completed"));
hgs
parents:
diff changeset
   436
    }
hgs
parents:
diff changeset
   437
hgs
parents:
diff changeset
   438
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   439
// CBTServiceStarter::LaunchWaitNoteL
hgs
parents:
diff changeset
   440
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   441
//
hgs
parents:
diff changeset
   442
void CBTServiceStarter::LaunchWaitNoteL()
hgs
parents:
diff changeset
   443
    {
hgs
parents:
diff changeset
   444
    FLOG(_L("[BTSU]\t CBTServiceStarter::LaunchWaitNoteL()"));
hgs
parents:
diff changeset
   445
    if ( iService == EBTPrintingService )
hgs
parents:
diff changeset
   446
        {
hgs
parents:
diff changeset
   447
 //       iDialog->LaunchWaitDialogL( R_BT_PRINTING_WAIT_NOTE );
hgs
parents:
diff changeset
   448
        }
hgs
parents:
diff changeset
   449
    else
hgs
parents:
diff changeset
   450
        {
42
hgs
parents: 32
diff changeset
   451
    //todo need to do the localisation here
32
hgs
parents:
diff changeset
   452
        _LIT(KConnectText, "Connecting...");
42
hgs
parents: 32
diff changeset
   453
        iDialog->LaunchWaitDialogL(KConnectText);
32
hgs
parents:
diff changeset
   454
        
hgs
parents:
diff changeset
   455
        }    
hgs
parents:
diff changeset
   456
    FLOG(_L("[BTSU]\t CBTServiceStarter::LaunchWaitNoteL() completed"));
hgs
parents:
diff changeset
   457
    }
hgs
parents:
diff changeset
   458
hgs
parents:
diff changeset
   459
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   460
// CBTServiceStarter::CancelWaitNote
hgs
parents:
diff changeset
   461
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   462
//
hgs
parents:
diff changeset
   463
void CBTServiceStarter::CancelWaitNote()
hgs
parents:
diff changeset
   464
    {
hgs
parents:
diff changeset
   465
    FLOG(_L("[BTSU]\t CBTServiceStarter::CancelWaitNote()"));
hgs
parents:
diff changeset
   466
42
hgs
parents: 32
diff changeset
   467
    if ( iDialog )
hgs
parents: 32
diff changeset
   468
        {
hgs
parents: 32
diff changeset
   469
        iDialog->CancelWaitDialog();
hgs
parents: 32
diff changeset
   470
        }
32
hgs
parents:
diff changeset
   471
hgs
parents:
diff changeset
   472
    FLOG(_L("[BTSU]\t CBTServiceStarter::CancelWaitNote() completed"));
hgs
parents:
diff changeset
   473
    }
hgs
parents:
diff changeset
   474
hgs
parents:
diff changeset
   475
hgs
parents:
diff changeset
   476
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   477
// CBTServiceStarter::LaunchProgressNoteL
hgs
parents:
diff changeset
   478
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   479
//
42
hgs
parents: 32
diff changeset
   480
//todo reusing the second param aTotalSize to aFileCount as it is no longer used check it being used in other places
32
hgs
parents:
diff changeset
   481
void CBTServiceStarter::LaunchProgressNoteL( MBTServiceProgressGetter* aGetter,
42
hgs
parents: 32
diff changeset
   482
                                              TInt aFileCount)
32
hgs
parents:
diff changeset
   483
    {
hgs
parents:
diff changeset
   484
    FLOG(_L("[BTSU]\t CBTServiceStarter::LaunchProgressNoteL()"));
42
hgs
parents: 32
diff changeset
   485
    RBuf deviceName;
32
hgs
parents:
diff changeset
   486
    if ( iService != EBTPrintingService )
hgs
parents:
diff changeset
   487
        {    
hgs
parents:
diff changeset
   488
        iProgressGetter = aGetter;     
hgs
parents:
diff changeset
   489
        CancelWaitNote();        
hgs
parents:
diff changeset
   490
        
hgs
parents:
diff changeset
   491
        if ( !iProgressDialogActive )
hgs
parents:
diff changeset
   492
        	{
42
hgs
parents: 32
diff changeset
   493
            // todo need to change the last parameter because we are now using the textmap id which is a string
hgs
parents: 32
diff changeset
   494
            // whether we replace it with that or remove the parameter is to be decided
32
hgs
parents:
diff changeset
   495
        	iMessageServerIndex = TObexUtilsMessageHandler::CreateOutboxEntryL( 
42
hgs
parents: 32
diff changeset
   496
            KUidMsgTypeBt, 0 );     
32
hgs
parents:
diff changeset
   497
42
hgs
parents: 32
diff changeset
   498
            deviceName.CreateL(KMaxDesCLength);
32
hgs
parents:
diff changeset
   499
            
42
hgs
parents: 32
diff changeset
   500
            if ( iDevice->IsValidFriendlyName() )
hgs
parents: 32
diff changeset
   501
                {
hgs
parents: 32
diff changeset
   502
                deviceName.Copy( iDevice->FriendlyName() );
hgs
parents: 32
diff changeset
   503
                }
hgs
parents: 32
diff changeset
   504
            else 
hgs
parents: 32
diff changeset
   505
                {
hgs
parents: 32
diff changeset
   506
                deviceName.Copy( BTDeviceNameConverter::ToUnicodeL(iDevice->DeviceName()));
hgs
parents: 32
diff changeset
   507
                }        	
hgs
parents: 32
diff changeset
   508
        	iDialog->LaunchProgressDialogL( this, aFileCount, 
hgs
parents: 32
diff changeset
   509
                                deviceName, KBTProgressInterval );	
hgs
parents: 32
diff changeset
   510
        	deviceName.Close();
32
hgs
parents:
diff changeset
   511
        	}        
hgs
parents:
diff changeset
   512
        iProgressDialogActive=ETrue;     
hgs
parents:
diff changeset
   513
        }
hgs
parents:
diff changeset
   514
hgs
parents:
diff changeset
   515
    FLOG(_L("[BTSU]\t CBTServiceStarter::LaunchProgressNoteL() completed"));
hgs
parents:
diff changeset
   516
    }
hgs
parents:
diff changeset
   517
42
hgs
parents: 32
diff changeset
   518
// -----------------------------------------------------------------------------
hgs
parents: 32
diff changeset
   519
// CBTServiceStarter::UpdateProgressNoteL
hgs
parents: 32
diff changeset
   520
// -----------------------------------------------------------------------------
hgs
parents: 32
diff changeset
   521
//
32
hgs
parents:
diff changeset
   522
void CBTServiceStarter::UpdateProgressNoteL(TInt aFileSize,TInt aFileIndex, const TDesC& aFileName )
hgs
parents:
diff changeset
   523
    {
hgs
parents:
diff changeset
   524
    
42
hgs
parents: 32
diff changeset
   525
    iDialog->UpdateProgressNoteL(aFileSize,aFileIndex,aFileName);
hgs
parents: 32
diff changeset
   526
    }
32
hgs
parents:
diff changeset
   527
hgs
parents:
diff changeset
   528
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   529
// CBTServiceStarter::CancelProgressNote
hgs
parents:
diff changeset
   530
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   531
//
hgs
parents:
diff changeset
   532
void CBTServiceStarter::CancelProgressNote()
hgs
parents:
diff changeset
   533
    {
hgs
parents:
diff changeset
   534
    FLOG(_L("[BTSU]\t CBTServiceStarter::CancelProgressNote()"));
hgs
parents:
diff changeset
   535
42
hgs
parents: 32
diff changeset
   536
    if ( iDialog )
32
hgs
parents:
diff changeset
   537
        {
42
hgs
parents: 32
diff changeset
   538
        iDialog->CancelProgressDialog();
32
hgs
parents:
diff changeset
   539
        }
hgs
parents:
diff changeset
   540
    }
hgs
parents:
diff changeset
   541
hgs
parents:
diff changeset
   542
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   543
// CBTServiceStarter::DialogDismissed
hgs
parents:
diff changeset
   544
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   545
//
42
hgs
parents: 32
diff changeset
   546
void CBTServiceStarter::DialogDismissed(TInt aButtonId )
32
hgs
parents:
diff changeset
   547
    {
hgs
parents:
diff changeset
   548
    FLOG(_L("[BTSU]\t CBTServiceStarter::DialogDismissed()"));   
42
hgs
parents: 32
diff changeset
   549
    if( aButtonId == ECancelButton )
hgs
parents: 32
diff changeset
   550
        { // this condition is hit for the progress dialog and connecting dialog cancel
32
hgs
parents:
diff changeset
   551
        FLOG(_L("[BTSU]\t CBTServiceStarter::DialogDissmissed(), cancelled by user"));        
hgs
parents:
diff changeset
   552
        iUserCancel=ETrue;
hgs
parents:
diff changeset
   553
        if ( iController )
hgs
parents:
diff changeset
   554
            {
hgs
parents:
diff changeset
   555
            iController->Abort();
hgs
parents:
diff changeset
   556
            }
hgs
parents:
diff changeset
   557
        else 
hgs
parents:
diff changeset
   558
           {
hgs
parents:
diff changeset
   559
           StopTransfer(KErrCancel);
hgs
parents:
diff changeset
   560
           }    
hgs
parents:
diff changeset
   561
        }
42
hgs
parents: 32
diff changeset
   562
    else if ( aButtonId == ENoButton )
32
hgs
parents:
diff changeset
   563
        {
hgs
parents:
diff changeset
   564
        // user abortion
hgs
parents:
diff changeset
   565
        //
hgs
parents:
diff changeset
   566
        iUserCancel = ETrue;
hgs
parents:
diff changeset
   567
        StopTransfer( KErrCancel );
42
hgs
parents: 32
diff changeset
   568
        CancelWaitNote();
hgs
parents: 32
diff changeset
   569
        }
hgs
parents: 32
diff changeset
   570
    else //EYesButton
hgs
parents: 32
diff changeset
   571
        {// this condition is hit when user is ok with sending the unsupported images
hgs
parents: 32
diff changeset
   572
        iController->SendUnSupportedFiles();
32
hgs
parents:
diff changeset
   573
        }
hgs
parents:
diff changeset
   574
    FLOG(_L("[BTSU]\t CBTServiceStarter::DialogDismissed() completed"));
hgs
parents:
diff changeset
   575
    }
hgs
parents:
diff changeset
   576
hgs
parents:
diff changeset
   577
// -----------------------------------------------------------------------------
42
hgs
parents: 32
diff changeset
   578
// CBTServiceStarter::ShowErrorNote
32
hgs
parents:
diff changeset
   579
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   580
//
42
hgs
parents: 32
diff changeset
   581
void CBTServiceStarter::ShowErrorNote( TInt aReason ) const
32
hgs
parents:
diff changeset
   582
    {
42
hgs
parents: 32
diff changeset
   583
    FLOG(_L("[BTSU]\t CBTServiceStarter::ShowErrorNote()"));
32
hgs
parents:
diff changeset
   584
     
42
hgs
parents: 32
diff changeset
   585
    TBuf<KMaxDesCLength> buf;
hgs
parents: 32
diff changeset
   586
    TPtrC sendTextMapId;
hgs
parents: 32
diff changeset
   587
    
hgs
parents: 32
diff changeset
   588
    if ( iDevice->IsValidFriendlyName() )
hgs
parents: 32
diff changeset
   589
        {
hgs
parents: 32
diff changeset
   590
        buf.Copy( iDevice->FriendlyName() );
hgs
parents: 32
diff changeset
   591
        }
hgs
parents: 32
diff changeset
   592
    else 
hgs
parents: 32
diff changeset
   593
        {
hgs
parents: 32
diff changeset
   594
        TRAP_IGNORE( buf.Copy( BTDeviceNameConverter::ToUnicodeL(iDevice->DeviceName())));
hgs
parents: 32
diff changeset
   595
        }
hgs
parents: 32
diff changeset
   596
    
32
hgs
parents:
diff changeset
   597
hgs
parents:
diff changeset
   598
    switch ( aReason )
hgs
parents:
diff changeset
   599
        {
hgs
parents:
diff changeset
   600
        case EBTSNoError:
hgs
parents:
diff changeset
   601
            {
42
hgs
parents: 32
diff changeset
   602
            sendTextMapId.Set(KFilesSentText());
32
hgs
parents:
diff changeset
   603
            break;
hgs
parents:
diff changeset
   604
            }
hgs
parents:
diff changeset
   605
        case EBTSConnectingFailed:
hgs
parents:
diff changeset
   606
        case EBTSGettingFailed:
hgs
parents:
diff changeset
   607
        case EBTSPuttingFailed:
hgs
parents:
diff changeset
   608
        case EBTSNoSuitableProfiles:
42
hgs
parents: 32
diff changeset
   609
      //todo below three enums are not valid and it is not being used at anywhere do we need to have it 
hgs
parents: 32
diff changeset
   610
            
hgs
parents: 32
diff changeset
   611
//        case EBTSBIPSomeSend:
hgs
parents: 32
diff changeset
   612
//        case EBTSBIPOneNotSend:
hgs
parents: 32
diff changeset
   613
//        case EBTSBIPNoneSend:
hgs
parents: 32
diff changeset
   614
        default:            
32
hgs
parents:
diff changeset
   615
            {
42
hgs
parents: 32
diff changeset
   616
            sendTextMapId.Set(KSendingFailedText());
32
hgs
parents:
diff changeset
   617
            break;
hgs
parents:
diff changeset
   618
            }
hgs
parents:
diff changeset
   619
        }        
hgs
parents:
diff changeset
   620
    
42
hgs
parents: 32
diff changeset
   621
    
hgs
parents: 32
diff changeset
   622
    if(iLocalisationInit)
hgs
parents: 32
diff changeset
   623
        {
hgs
parents: 32
diff changeset
   624
        TRAP_IGNORE(
hgs
parents: 32
diff changeset
   625
               HBufC* sendText = HbTextResolverSymbian::LoadLC(sendTextMapId);
hgs
parents: 32
diff changeset
   626
               HBufC* deviceName =  HbTextResolverSymbian::LoadLC(KDeviceText,buf);
hgs
parents: 32
diff changeset
   627
               CHbDeviceNotificationDialogSymbian::NotificationL(KNullDesC, deviceName->Des(), sendText->Des());
hgs
parents: 32
diff changeset
   628
               CleanupStack::PopAndDestroy( deviceName );
hgs
parents: 32
diff changeset
   629
               CleanupStack::PopAndDestroy( sendText );
hgs
parents: 32
diff changeset
   630
               );
hgs
parents: 32
diff changeset
   631
        }
hgs
parents: 32
diff changeset
   632
    else
hgs
parents: 32
diff changeset
   633
        {
hgs
parents: 32
diff changeset
   634
        TRAP_IGNORE(CHbDeviceNotificationDialogSymbian::NotificationL(KNullDesC, KDeviceText(), sendTextMapId));
hgs
parents: 32
diff changeset
   635
        }
hgs
parents: 32
diff changeset
   636
    FLOG(_L("[BTSU]\t CBTServiceStarter::ShowErrorNote() completed"));
32
hgs
parents:
diff changeset
   637
    }
hgs
parents:
diff changeset
   638
42
hgs
parents: 32
diff changeset
   639
hgs
parents: 32
diff changeset
   640
32
hgs
parents:
diff changeset
   641
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   642
// CBTServiceStarter::LaunchConfirmationQuery
hgs
parents:
diff changeset
   643
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   644
//
42
hgs
parents: 32
diff changeset
   645
void  CBTServiceStarter::LaunchConfirmationQuery(const TDesC& aConfirmText)
hgs
parents: 32
diff changeset
   646
    {
hgs
parents: 32
diff changeset
   647
    TRAP_IGNORE(iDialog->LaunchQueryDialogL(aConfirmText ));
hgs
parents: 32
diff changeset
   648
    }
32
hgs
parents:
diff changeset
   649
hgs
parents:
diff changeset
   650
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   651
// CBTServiceStarter::StopTransfer
hgs
parents:
diff changeset
   652
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   653
//	
hgs
parents:
diff changeset
   654
void CBTServiceStarter::StopTransfer(TInt aError)
hgs
parents:
diff changeset
   655
	{
hgs
parents:
diff changeset
   656
      
hgs
parents:
diff changeset
   657
	FLOG(_L("[BTSU]\t CBTServiceStarter::StopTransfer()"));
hgs
parents:
diff changeset
   658
    Cancel();
hgs
parents:
diff changeset
   659
	if( !iUserCancel )
hgs
parents:
diff changeset
   660
	    {
hgs
parents:
diff changeset
   661
	    CancelWaitNote();
hgs
parents:
diff changeset
   662
        CancelProgressNote();
hgs
parents:
diff changeset
   663
	
hgs
parents:
diff changeset
   664
        if ( aError != KErrCancel )
hgs
parents:
diff changeset
   665
            {
42
hgs
parents: 32
diff changeset
   666
            ShowErrorNote( aError );
32
hgs
parents:
diff changeset
   667
            }     
hgs
parents:
diff changeset
   668
        }
hgs
parents:
diff changeset
   669
    if ( iMessageServerIndex != 0 )
hgs
parents:
diff changeset
   670
        {                 
hgs
parents:
diff changeset
   671
        TRAPD( notUsedRetVal, TObexUtilsMessageHandler::DeleteOutboxEntryL( iMessageServerIndex ) );
hgs
parents:
diff changeset
   672
        notUsedRetVal=notUsedRetVal;
hgs
parents:
diff changeset
   673
        iMessageServerIndex=0;
hgs
parents:
diff changeset
   674
        FTRACE(FPrint(_L("[BTSU]\t CBTServiceStarter::StopTransfer() delete ob entry %d"), notUsedRetVal ) );
hgs
parents:
diff changeset
   675
        }
hgs
parents:
diff changeset
   676
    // Release resources
hgs
parents:
diff changeset
   677
    //
hgs
parents:
diff changeset
   678
    if ( iList )
hgs
parents:
diff changeset
   679
        {
hgs
parents:
diff changeset
   680
        delete iList;
hgs
parents:
diff changeset
   681
        iList = NULL;    
hgs
parents:
diff changeset
   682
        }
hgs
parents:
diff changeset
   683
        
hgs
parents:
diff changeset
   684
    if ( iController )
hgs
parents:
diff changeset
   685
        {
hgs
parents:
diff changeset
   686
        delete iController; 
hgs
parents:
diff changeset
   687
        iController = NULL;
hgs
parents:
diff changeset
   688
        }
hgs
parents:
diff changeset
   689
    
hgs
parents:
diff changeset
   690
    if ( iNotifier.Handle() )
hgs
parents:
diff changeset
   691
        {
hgs
parents:
diff changeset
   692
        iNotifier.Close();
hgs
parents:
diff changeset
   693
        }
hgs
parents:
diff changeset
   694
hgs
parents:
diff changeset
   695
    // Reset states
hgs
parents:
diff changeset
   696
    //
hgs
parents:
diff changeset
   697
    iServiceStarted = EFalse;
hgs
parents:
diff changeset
   698
    if ( iWaiter && iWaiter->IsStarted() )
hgs
parents:
diff changeset
   699
        {                
hgs
parents:
diff changeset
   700
        iWaiter->AsyncStop();                    
hgs
parents:
diff changeset
   701
        }    
hgs
parents:
diff changeset
   702
        
hgs
parents:
diff changeset
   703
    iState = EBTSStarterStoppingService;	    
hgs
parents:
diff changeset
   704
	}
hgs
parents:
diff changeset
   705
	
hgs
parents:
diff changeset
   706
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   707
// CBTServiceStarter::ConnectTimedOut()
hgs
parents:
diff changeset
   708
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   709
//	
hgs
parents:
diff changeset
   710
void CBTServiceStarter::ConnectTimedOut()
hgs
parents:
diff changeset
   711
    {
hgs
parents:
diff changeset
   712
    FLOG(_L("[BTSU]\t CBTServiceStarter::ConnectTimedOut()"));            
hgs
parents:
diff changeset
   713
    StopTransfer(EBTSConnectingFailed);    
hgs
parents:
diff changeset
   714
    FLOG(_L("[BTSU]\t CBTServiceStarter::ConnectTimedOut() completed"));
hgs
parents:
diff changeset
   715
    }
hgs
parents:
diff changeset
   716
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   717
// CBTServiceStarter::ServiceSearchComplete()
hgs
parents:
diff changeset
   718
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   719
//	
hgs
parents:
diff changeset
   720
void CBTServiceStarter::ServiceSearchComplete( const RSdpRecHandleArray& /*aResult*/, 
hgs
parents:
diff changeset
   721
                                         TUint /*aTotalRecordsCount*/, TInt /*aErr */)
hgs
parents:
diff changeset
   722
    {
hgs
parents:
diff changeset
   723
    FLOG(_L("[BTSU]\t CBTServiceStarter::ServiceSearchComplete()"));        
hgs
parents:
diff changeset
   724
    }
hgs
parents:
diff changeset
   725
hgs
parents:
diff changeset
   726
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   727
// CBTServiceStarter::AttributeSearchComplete()
hgs
parents:
diff changeset
   728
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   729
//	
hgs
parents:
diff changeset
   730
void CBTServiceStarter::AttributeSearchComplete( TSdpServRecordHandle /*aHandle*/, 
hgs
parents:
diff changeset
   731
                                           const RSdpResultArray& /*aAttr*/, 
hgs
parents:
diff changeset
   732
                                           TInt /*aErr*/ )
hgs
parents:
diff changeset
   733
    {
hgs
parents:
diff changeset
   734
    FLOG(_L("[BTSU]\t CBTServiceStarter::AttributeSearchComplete()"));           
hgs
parents:
diff changeset
   735
    }
hgs
parents:
diff changeset
   736
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   737
// CBTServiceStarter::ServiceAttributeSearchComplete()
hgs
parents:
diff changeset
   738
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   739
//	
hgs
parents:
diff changeset
   740
void CBTServiceStarter::ServiceAttributeSearchComplete( TSdpServRecordHandle /*aHandle*/, 
hgs
parents:
diff changeset
   741
                                                          const RSdpResultArray& aAttr, 
hgs
parents:
diff changeset
   742
                                                          TInt aErr )
hgs
parents:
diff changeset
   743
    {
hgs
parents:
diff changeset
   744
    FLOG(_L("[BTSU]\t CBTServiceStarter::ServiceAttributeSearchComplete()"));               
hgs
parents:
diff changeset
   745
    TInt err = KErrNone;
hgs
parents:
diff changeset
   746
    if (aErr==KErrEof && aAttr.Count()>0 )
hgs
parents:
diff changeset
   747
        {            
hgs
parents:
diff changeset
   748
        RSdpResultArray results=aAttr;    
hgs
parents:
diff changeset
   749
        iBTEngDiscovery->ParseRfcommChannel(results,iClientChannel);          
hgs
parents:
diff changeset
   750
hgs
parents:
diff changeset
   751
        iBTEngDiscovery->CancelRemoteSdpQuery();
hgs
parents:
diff changeset
   752
               
hgs
parents:
diff changeset
   753
        switch (iState)
hgs
parents:
diff changeset
   754
            {
hgs
parents:
diff changeset
   755
            case EBTSStarterFindingBIP:
hgs
parents:
diff changeset
   756
                {
hgs
parents:
diff changeset
   757
                TRAP(err, StartProfileL( EBTSBIP ));  
hgs
parents:
diff changeset
   758
                iTriedBIP = ETrue;
hgs
parents:
diff changeset
   759
                if (err != KErrNone)
hgs
parents:
diff changeset
   760
                    {
hgs
parents:
diff changeset
   761
                    StopTransfer(EBTSConnectingFailed);        
hgs
parents:
diff changeset
   762
                    }
hgs
parents:
diff changeset
   763
                if ( iSendToBIPOnlyDevice )
hgs
parents:
diff changeset
   764
                    {
hgs
parents:
diff changeset
   765
                    iAllSend = ETrue;
hgs
parents:
diff changeset
   766
                    }
hgs
parents:
diff changeset
   767
                else
hgs
parents:
diff changeset
   768
                    {
hgs
parents:
diff changeset
   769
                    if(iList->ObjectCount() == 0)
hgs
parents:
diff changeset
   770
                        {
hgs
parents:
diff changeset
   771
                        iAllSend=ETrue;
hgs
parents:
diff changeset
   772
                        }
hgs
parents:
diff changeset
   773
                    }
hgs
parents:
diff changeset
   774
                break;
hgs
parents:
diff changeset
   775
                }
hgs
parents:
diff changeset
   776
            case EBTSStarterFindingOPP:
hgs
parents:
diff changeset
   777
                {
hgs
parents:
diff changeset
   778
                TRAP(err, StartProfileL( EBTSOPP ) ); 
hgs
parents:
diff changeset
   779
                iTriedOPP = ETrue;
hgs
parents:
diff changeset
   780
                if (err != KErrNone)
hgs
parents:
diff changeset
   781
                    {
hgs
parents:
diff changeset
   782
                    StopTransfer(EBTSConnectingFailed);        
hgs
parents:
diff changeset
   783
                    }
hgs
parents:
diff changeset
   784
                iAllSend=ETrue;  
hgs
parents:
diff changeset
   785
                break;
hgs
parents:
diff changeset
   786
                }            
hgs
parents:
diff changeset
   787
            case EBTSStarterFindingBPP:          
hgs
parents:
diff changeset
   788
                {
hgs
parents:
diff changeset
   789
                TRAP(err, StartProfileL( EBTSBPP ));           
hgs
parents:
diff changeset
   790
                if (err != KErrNone)
hgs
parents:
diff changeset
   791
                    {
hgs
parents:
diff changeset
   792
                    StopTransfer(EBTSConnectingFailed);        
hgs
parents:
diff changeset
   793
                    }               
hgs
parents:
diff changeset
   794
                break;    
hgs
parents:
diff changeset
   795
                }            
hgs
parents:
diff changeset
   796
            }       
hgs
parents:
diff changeset
   797
        }      
hgs
parents:
diff changeset
   798
    else if ( aErr==KErrEof && aAttr.Count()==0 && 
hgs
parents:
diff changeset
   799
              iState == EBTSStarterFindingBIP && !iTriedBIP )
hgs
parents:
diff changeset
   800
        {
hgs
parents:
diff changeset
   801
        iBTEngDiscovery->RemoteProtocolChannelQuery(iDevice->BDAddr(),TUUID(KBTServiceOPPSending));
hgs
parents:
diff changeset
   802
        iState = EBTSStarterFindingOPP;    
hgs
parents:
diff changeset
   803
		iTriedBIP = ETrue;
hgs
parents:
diff changeset
   804
        }    
hgs
parents:
diff changeset
   805
    else if ( aErr==KErrEof && aAttr.Count()==0 &&
hgs
parents:
diff changeset
   806
              iState == EBTSStarterFindingOPP && !iTriedOPP &&
hgs
parents:
diff changeset
   807
              iList->ImageCount() > 0 &&
hgs
parents:
diff changeset
   808
              FeatureManager::FeatureSupported( KFeatureIdBtImagingProfile ) )
hgs
parents:
diff changeset
   809
        {
hgs
parents:
diff changeset
   810
        iSendToBIPOnlyDevice = ETrue;
hgs
parents:
diff changeset
   811
        iBTEngDiscovery->RemoteProtocolChannelQuery(iDevice->BDAddr(),TUUID(KBTServiceImagingResponder));
hgs
parents:
diff changeset
   812
        iState = EBTSStarterFindingBIP;  
hgs
parents:
diff changeset
   813
        iTriedOPP = ETrue;
hgs
parents:
diff changeset
   814
        }
hgs
parents:
diff changeset
   815
    else
hgs
parents:
diff changeset
   816
        {
42
hgs
parents: 32
diff changeset
   817
        // Set destroyer AO active (destroys CBTEngDiscovery/CBTEngSdpQuery classes). This is done
hgs
parents: 32
diff changeset
   818
        // to ensure that CBTEngDiscovery/CBTEngSdpQuery classes have finished all their activities,
hgs
parents: 32
diff changeset
   819
        // callbacks etc.. Destructing it self is handled in CBTServiceDelayedDestroyer's RunL.
hgs
parents: 32
diff changeset
   820
        iDelayedDestroyer->SetDestructPointer(iBTEngDiscovery);
hgs
parents: 32
diff changeset
   821
        iDelayedDestroyer->GoActive();
hgs
parents: 32
diff changeset
   822
        // Set iBTEngDiscovery pointer to zero. Pointer doesn't exist CBTServiceStarter point of view anymore.
32
hgs
parents:
diff changeset
   823
        iBTEngDiscovery = NULL;    
hgs
parents:
diff changeset
   824
        StopTransfer(EBTSConnectingFailed);    
hgs
parents:
diff changeset
   825
        }    
hgs
parents:
diff changeset
   826
    FLOG(_L("[BTSU]\t CBTServiceStarter::ServiceAttributeSearchComplete() done"));               
hgs
parents:
diff changeset
   827
    }
hgs
parents:
diff changeset
   828
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   829
// CBTServiceStarter::DeviceSearchComplete()
hgs
parents:
diff changeset
   830
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   831
//	
hgs
parents:
diff changeset
   832
void CBTServiceStarter::DeviceSearchComplete( CBTDevice* /*aDevice*/, TInt aErr )
hgs
parents:
diff changeset
   833
    {
hgs
parents:
diff changeset
   834
    FLOG(_L("[BTSU]\t CBTServiceStarter::DeviceSearchComplete()"));          
hgs
parents:
diff changeset
   835
    FTRACE(FPrint(_L("[BTSU]\t CBTServiceStarter DeviceSearchComplete()aErr = %d"), aErr) );     
hgs
parents:
diff changeset
   836
    if ( aErr == KErrNone )
hgs
parents:
diff changeset
   837
        {    
hgs
parents:
diff changeset
   838
        TRAPD(err, StartProfileSelectL( iService ));
hgs
parents:
diff changeset
   839
        if (err != KErrNone )
hgs
parents:
diff changeset
   840
            {
hgs
parents:
diff changeset
   841
            StopTransfer(err);            
hgs
parents:
diff changeset
   842
            }
hgs
parents:
diff changeset
   843
            
hgs
parents:
diff changeset
   844
        iServiceStarted = ETrue;
hgs
parents:
diff changeset
   845
        }
hgs
parents:
diff changeset
   846
    else
hgs
parents:
diff changeset
   847
        {
hgs
parents:
diff changeset
   848
        if ( aErr == KErrCancel )
hgs
parents:
diff changeset
   849
            {
hgs
parents:
diff changeset
   850
            iUserCancel=ETrue;
hgs
parents:
diff changeset
   851
            }
hgs
parents:
diff changeset
   852
        StopTransfer(aErr);    
hgs
parents:
diff changeset
   853
        }    
hgs
parents:
diff changeset
   854
    FLOG(_L("[BTSU]\t CBTServiceStarter::DeviceSearchComplete() done"));                   
hgs
parents:
diff changeset
   855
    }        
hgs
parents:
diff changeset
   856
hgs
parents:
diff changeset
   857
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   858
// From class MBTEngSettingsObserver.
hgs
parents:
diff changeset
   859
// Power has changed, start searching for BT devices.
hgs
parents:
diff changeset
   860
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   861
//  
hgs
parents:
diff changeset
   862
void CBTServiceStarter::PowerStateChanged( TBTPowerStateValue aState )
hgs
parents:
diff changeset
   863
    {
hgs
parents:
diff changeset
   864
	FLOG(_L("[BTSU]\t CBTServiceStarter::PowerStateChanged()"));	
hgs
parents:
diff changeset
   865
    if( aState == EBTPowerOn && iWaitingForBTPower )
hgs
parents:
diff changeset
   866
        {
hgs
parents:
diff changeset
   867
        iWaitingForBTPower = EFalse;
hgs
parents:
diff changeset
   868
        TRAP_IGNORE( StartDiscoveryL() );
hgs
parents:
diff changeset
   869
        }
hgs
parents:
diff changeset
   870
	FLOG(_L("[BTSU]\t CBTServiceStarter::PowerStateChanged() - completed"));
hgs
parents:
diff changeset
   871
    }
hgs
parents:
diff changeset
   872
hgs
parents:
diff changeset
   873
hgs
parents:
diff changeset
   874
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   875
// From class MBTEngSettingsObserver.
hgs
parents:
diff changeset
   876
// Visibility has changed, ignore event.
hgs
parents:
diff changeset
   877
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   878
//  
hgs
parents:
diff changeset
   879
void CBTServiceStarter::VisibilityModeChanged( TBTVisibilityMode aState )
hgs
parents:
diff changeset
   880
    {
hgs
parents:
diff changeset
   881
    (void) aState;
hgs
parents:
diff changeset
   882
    }
hgs
parents:
diff changeset
   883
hgs
parents:
diff changeset
   884
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   885
// Check if the phone is in offline mode, and ask the user if it is.
hgs
parents:
diff changeset
   886
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   887
//  
hgs
parents:
diff changeset
   888
TBool CBTServiceStarter::CheckOfflineModeL()
hgs
parents:
diff changeset
   889
    {
hgs
parents:
diff changeset
   890
	FLOG(_L("[BTSU]\t CBTServiceStarter::CheckOfflineModeL()"));	
hgs
parents:
diff changeset
   891
    TCoreAppUIsNetworkConnectionAllowed offline = ECoreAppUIsNetworkConnectionNotAllowed;
hgs
parents:
diff changeset
   892
    TBTEnabledInOfflineMode offlineAllowed = EBTDisabledInOfflineMode;
hgs
parents:
diff changeset
   893
    User::LeaveIfError( iBTEngSettings->GetOfflineModeSettings( offline, offlineAllowed ) );
hgs
parents:
diff changeset
   894
    if( offline == ECoreAppUIsNetworkConnectionNotAllowed && 
hgs
parents:
diff changeset
   895
         offlineAllowed == EBTEnabledInOfflineMode )
hgs
parents:
diff changeset
   896
        {
hgs
parents:
diff changeset
   897
        User::LeaveIfError( iNotifier.Connect() );
hgs
parents:
diff changeset
   898
        TBTGenericQueryNotiferParamsPckg pckg;
hgs
parents:
diff changeset
   899
        pckg().iMessageType = EBTActivateOffLineQuery;
hgs
parents:
diff changeset
   900
        pckg().iNameExists = EFalse;
hgs
parents:
diff changeset
   901
        iActiveNotifier = EOfflineQuery;
hgs
parents:
diff changeset
   902
        iNotifier.StartNotifierAndGetResponse( iStatus, KBTGenericQueryNotifierUid, 
hgs
parents:
diff changeset
   903
                                                pckg, iOffline );
hgs
parents:
diff changeset
   904
        SetActive();
hgs
parents:
diff changeset
   905
        }
hgs
parents:
diff changeset
   906
    else if( offline == ECoreAppUIsNetworkConnectionNotAllowed && 
hgs
parents:
diff changeset
   907
            offlineAllowed == EBTDisabledInOfflineMode )
hgs
parents:
diff changeset
   908
           {
hgs
parents:
diff changeset
   909
           StopTransfer( KErrNotSupported );
hgs
parents:
diff changeset
   910
           }
hgs
parents:
diff changeset
   911
	FLOG(_L("[BTSU]\t CBTServiceStarter::CheckOfflineModeL() - completed"));
hgs
parents:
diff changeset
   912
    return ( offline == ECoreAppUIsNetworkConnectionNotAllowed );
hgs
parents:
diff changeset
   913
    }
hgs
parents:
diff changeset
   914
hgs
parents:
diff changeset
   915
hgs
parents:
diff changeset
   916
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   917
// Start BT device discovery.
hgs
parents:
diff changeset
   918
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   919
//	
hgs
parents:
diff changeset
   920
void CBTServiceStarter::StartDiscoveryL()
hgs
parents:
diff changeset
   921
    {
hgs
parents:
diff changeset
   922
	FLOG(_L("[BTSU]\t CBTServiceStarter::StartDiscoveryL()"));	
hgs
parents:
diff changeset
   923
    if( !iBTEngDiscovery )
hgs
parents:
diff changeset
   924
        {
hgs
parents:
diff changeset
   925
        iBTEngDiscovery = CBTEngDiscovery::NewL(this);
hgs
parents:
diff changeset
   926
        }
hgs
parents:
diff changeset
   927
    TInt err = iBTEngDiscovery->SearchRemoteDevice(iDevice );
hgs
parents:
diff changeset
   928
    if( err )
hgs
parents:
diff changeset
   929
        {
hgs
parents:
diff changeset
   930
        StopTransfer( err );
hgs
parents:
diff changeset
   931
        }
hgs
parents:
diff changeset
   932
	FLOG(_L("[BTSU]\t CBTServiceStarter::StartDiscoveryL() - completed"));		
hgs
parents:
diff changeset
   933
    }
hgs
parents:
diff changeset
   934
hgs
parents:
diff changeset
   935
hgs
parents:
diff changeset
   936
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   937
// Turn BT on and start BT device discovery if possible.
hgs
parents:
diff changeset
   938
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
   939
//  
hgs
parents:
diff changeset
   940
void CBTServiceStarter::TurnBTPowerOnL( const TBTPowerStateValue aState )
hgs
parents:
diff changeset
   941
    {
hgs
parents:
diff changeset
   942
	FLOG( _L("[BTSU]\t CBTServiceStarter::TurnBTPowerOnL()") );
hgs
parents:
diff changeset
   943
//    if (iName() != EFalse) 
hgs
parents:
diff changeset
   944
    	{
hgs
parents:
diff changeset
   945
    	if( !iBTEngSettings )
hgs
parents:
diff changeset
   946
	        {
hgs
parents:
diff changeset
   947
	        iBTEngSettings = CBTEngSettings::NewL( this );
hgs
parents:
diff changeset
   948
	        }
hgs
parents:
diff changeset
   949
	    TInt err = iBTEngSettings->ChangePowerStateTemporarily();
hgs
parents:
diff changeset
   950
	    iWaitingForBTPower = ETrue;
hgs
parents:
diff changeset
   951
	    if( err )
hgs
parents:
diff changeset
   952
	        {
hgs
parents:
diff changeset
   953
	        iWaitingForBTPower = EFalse;
hgs
parents:
diff changeset
   954
	        StopTransfer( err );
hgs
parents:
diff changeset
   955
	        }
hgs
parents:
diff changeset
   956
	    else if( aState == EBTPowerOn )
hgs
parents:
diff changeset
   957
	        {
hgs
parents:
diff changeset
   958
	        // Power is already on, we just registered for turning it off if needed.
hgs
parents:
diff changeset
   959
	        // Since there is no callback at this point (power is already on), start 
hgs
parents:
diff changeset
   960
	        // searching straight away.
hgs
parents:
diff changeset
   961
	        iWaitingForBTPower = EFalse;
hgs
parents:
diff changeset
   962
	        StartDiscoveryL();
hgs
parents:
diff changeset
   963
	        }
hgs
parents:
diff changeset
   964
    	}
hgs
parents:
diff changeset
   965
 /*   else
hgs
parents:
diff changeset
   966
    	{
hgs
parents:
diff changeset
   967
        if ( !iNotifier.Handle() )
hgs
parents:
diff changeset
   968
	        {
hgs
parents:
diff changeset
   969
			User::LeaveIfError( iNotifier.Connect() );
hgs
parents:
diff changeset
   970
	        }
hgs
parents:
diff changeset
   971
		TBTGenericQueryNotiferParamsPckg pckg;
hgs
parents:
diff changeset
   972
        pckg().iMessageType = EBTNameQuery;
hgs
parents:
diff changeset
   973
        pckg().iNameExists = EFalse;
hgs
parents:
diff changeset
   974
        iActiveNotifier = ENameQuery;
hgs
parents:
diff changeset
   975
        iNotifier.StartNotifierAndGetResponse( iStatus, KBTGenericQueryNotifierUid, 
hgs
parents:
diff changeset
   976
                                                  pckg, iName );
hgs
parents:
diff changeset
   977
        SetActive();
hgs
parents:
diff changeset
   978
    	}*/
hgs
parents:
diff changeset
   979
	FLOG(_L("[BTSU]\t CBTServiceStarter::TurnBTPowerOnL() - completed"));
hgs
parents:
diff changeset
   980
    }
hgs
parents:
diff changeset
   981
hgs
parents:
diff changeset
   982
hgs
parents:
diff changeset
   983
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   984
// From class CActive.
hgs
parents:
diff changeset
   985
// Called by the active scheduler when the request has been cancelled.
hgs
parents:
diff changeset
   986
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   987
//
hgs
parents:
diff changeset
   988
void CBTServiceStarter::DoCancel()
hgs
parents:
diff changeset
   989
    {
hgs
parents:
diff changeset
   990
	FLOG(_L("[BTSU]\t CBTServiceStarter::DoCancel()"));
hgs
parents:
diff changeset
   991
    iNotifier.CancelNotifier( KBTGenericQueryNotifierUid );
hgs
parents:
diff changeset
   992
    iNotifier.Close();
hgs
parents:
diff changeset
   993
	FLOG(_L("[BTSU]\t CBTServiceStarter::DoCancel() - completed"));
hgs
parents:
diff changeset
   994
    }
hgs
parents:
diff changeset
   995
hgs
parents:
diff changeset
   996
hgs
parents:
diff changeset
   997
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   998
// From class CActive.
hgs
parents:
diff changeset
   999
// Called by the active scheduler when the request has been completed.
hgs
parents:
diff changeset
  1000
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1001
//
hgs
parents:
diff changeset
  1002
void CBTServiceStarter::RunL()
hgs
parents:
diff changeset
  1003
    {
hgs
parents:
diff changeset
  1004
	FLOG(_L("[BTSU]\t CBTServiceStarter::RunL()"));
hgs
parents:
diff changeset
  1005
    TInt err = iStatus.Int();
hgs
parents:
diff changeset
  1006
    if( !err )
hgs
parents:
diff changeset
  1007
        {
hgs
parents:
diff changeset
  1008
        if ( (iActiveNotifier == ENameQuery && iName() != EFalse ) || ( iActiveNotifier == EOfflineQuery && iOffline() != EFalse ) )
hgs
parents:
diff changeset
  1009
            {
hgs
parents:
diff changeset
  1010
            TBTPowerStateValue power = EBTPowerOff;
hgs
parents:
diff changeset
  1011
            if ( iNotifier.Handle() )
hgs
parents:
diff changeset
  1012
                {
hgs
parents:
diff changeset
  1013
                iNotifier.Close();
hgs
parents:
diff changeset
  1014
                }
hgs
parents:
diff changeset
  1015
            User::LeaveIfError( iBTEngSettings->GetPowerState( power ) );
hgs
parents:
diff changeset
  1016
            TurnBTPowerOnL( power );
hgs
parents:
diff changeset
  1017
            }
hgs
parents:
diff changeset
  1018
        else
hgs
parents:
diff changeset
  1019
            {
hgs
parents:
diff changeset
  1020
            err = KErrCancel;
hgs
parents:
diff changeset
  1021
            }    
hgs
parents:
diff changeset
  1022
        }
hgs
parents:
diff changeset
  1023
hgs
parents:
diff changeset
  1024
    if( err )
hgs
parents:
diff changeset
  1025
        {
hgs
parents:
diff changeset
  1026
      
hgs
parents:
diff changeset
  1027
        err = ( err == KErrNotSupported ? KErrCancel : err );
hgs
parents:
diff changeset
  1028
        if ( iWaiter && err != KErrInUse && err != KErrCancel )
hgs
parents:
diff changeset
  1029
            {
hgs
parents:
diff changeset
  1030
            err = EBTSPuttingFailed;
hgs
parents:
diff changeset
  1031
            }
hgs
parents:
diff changeset
  1032
        StopTransfer( err );
hgs
parents:
diff changeset
  1033
        }
hgs
parents:
diff changeset
  1034
    
hgs
parents:
diff changeset
  1035
    FLOG(_L("[BTSU]\t CBTServiceStarter::RunL() - completed"));	
hgs
parents:
diff changeset
  1036
    }
hgs
parents:
diff changeset
  1037
hgs
parents:
diff changeset
  1038
hgs
parents:
diff changeset
  1039
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1040
// From class CActive.
hgs
parents:
diff changeset
  1041
// Called by the active scheduler when an error in RunL has occurred.
hgs
parents:
diff changeset
  1042
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
  1043
//
hgs
parents:
diff changeset
  1044
TInt CBTServiceStarter::RunError( TInt aError )
hgs
parents:
diff changeset
  1045
    {
hgs
parents:
diff changeset
  1046
	FLOG(_L("[BTSU]\t CBTServiceStarter::RunError()"));
hgs
parents:
diff changeset
  1047
    StopTransfer( aError );
hgs
parents:
diff changeset
  1048
	FLOG(_L("[BTSU]\t CBTServiceStarter::RunError() - completed"));
hgs
parents:
diff changeset
  1049
    return KErrNone;
hgs
parents:
diff changeset
  1050
    }
hgs
parents:
diff changeset
  1051
hgs
parents:
diff changeset
  1052
hgs
parents:
diff changeset
  1053
hgs
parents:
diff changeset
  1054