bluetoothengine/btxqservice/src/btxqdutservice.cpp
author hgs
Fri, 03 Sep 2010 16:17:59 +0300
changeset 57 5ebadcda06cb
permissions -rw-r--r--
201035_7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
57
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
     1
/*
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
     2
 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
     3
 * All rights reserved.
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0""
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
     8
 *
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
     9
 * Initial Contributors:
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    11
 *
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    12
 * Contributors:
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    13
 *
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    14
 * Description:  
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    15
 *
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    16
 */
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    17
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    18
#include "btxqdutservice.h"
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    19
#include <btxqserviceapi.h>
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    20
#include <hbapplication.h>
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    21
#include <hbdevicedialog.h>
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    22
#include <bluetoothdevicedialogs.h>
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    23
#include <btengdomainpskeys.h>
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    24
#include <e32property.h>
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    25
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    26
const QString deviceDialogType = "com.nokia.hb.btdevicedialog/1.0";
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    27
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    28
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    29
BtxqDutService::BtxqDutService(QObject* parent)
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    30
: XQServiceProvider(BluetoothServiceActivateDutMode,parent), mNotificationDialog(0), 
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    31
  mCurrentRequestIndex(0),
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    32
  mError(0)
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    33
{
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    34
    publishAll();
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    35
    connect(this, SIGNAL(returnValueDelivered()), qApp, SLOT(quit()));
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    36
}
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    37
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    38
BtxqDutService::~BtxqDutService()
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    39
{
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    40
    delete mNotificationDialog;
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    41
}
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    42
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    43
void BtxqDutService::activateDeviceTestMode()
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    44
{
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    45
    mCurrentRequestIndex = setCurrentRequestAsync();
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    46
    
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    47
    TInt currentDUTModeStatus( EBTDutOff );
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    48
    
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    49
    // Get current status of BT loopback
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    50
    TInt err = RProperty::Get( KPSUidBluetoothDutMode, KBTDutEnabled, 
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    51
            currentDUTModeStatus );
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    52
    
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    53
    // If the DUT mode is not already activated, activate it.
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    54
    if ( currentDUTModeStatus == EBTDutOff && err == KErrNone )
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    55
        {
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    56
        err = RProperty::Set( KPSUidBluetoothDutMode,
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    57
                KBTDutEnabled,
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    58
                EBTDutOn );
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    59
        }
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    60
    
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    61
    mError = err;
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    62
    
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    63
    if(!mError)
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    64
        {
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    65
        // Prepare and show the dialog.
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    66
        if(!mNotificationDialog)
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    67
            {
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    68
            mNotificationDialog = new HbDeviceDialog();
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    69
            }
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    70
        
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    71
        connect(mNotificationDialog, SIGNAL(deviceDialogClosed()), this, SLOT(dutModeActivated()));
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    72
        QVariantMap parameters;
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    73
        
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    74
        parameters.insert(QString::number(TBluetoothDialogParams::EDialogType), 
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    75
              QString::number(TBluetoothDialogParams::EGlobalNotif));
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    76
        
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    77
        parameters.insert(QString::number(TBluetoothDialogParams::EResource),
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    78
                QString::number(EBluetoothTestMode));
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    79
        
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    80
        mNotificationDialog->show(deviceDialogType, parameters);    
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    81
        }
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    82
    else
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    83
        {
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    84
        // If there is an error in activating the DUT mode, complete the service request with error code.
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    85
        dutModeActivated();
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    86
        }
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    87
}
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    88
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    89
void BtxqDutService::dutModeActivated()
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    90
{
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    91
    // Completes the service request.
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    92
    QVariant retVal(mError);
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    93
    completeRequest(mCurrentRequestIndex, retVal);
5ebadcda06cb 201035_7
hgs
parents:
diff changeset
    94
}