wlanutilities/wlanqtutilities/wrapper/src/wlanqtutilsconmonwrapperdisconnect_symbian.cpp
author hgs
Thu, 24 Jun 2010 10:49:51 +0300
changeset 39 7b3e49e4608a
permissions -rw-r--r--
201025
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
39
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
 * Copyright (c) 2009-2010 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:
hgs
parents:
diff changeset
    15
 * Private implementation of wrapper for Symbian Connection Monitor
hgs
parents:
diff changeset
    16
 * library's connection disconnect interface.
hgs
parents:
diff changeset
    17
 */
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
// System includes
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
// User includes
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
#include "wlanqtutilsconmonwrapper.h"
hgs
parents:
diff changeset
    24
#include "wlanqtutilsconmonwrapperdisconnect_symbian.h"
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
#include "OstTraceDefinitions.h"
hgs
parents:
diff changeset
    27
#ifdef OST_TRACE_COMPILER_IN_USE
hgs
parents:
diff changeset
    28
#include "wlanqtutilsconmonwrapperdisconnect_symbianTraces.h"
hgs
parents:
diff changeset
    29
#endif
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
/*!
hgs
parents:
diff changeset
    32
    \class WlanQtUtilsConMonWrapperDisconnect
hgs
parents:
diff changeset
    33
    \brief Private wrapper for Symbian Connection Monitor library.
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
    Provides functionality to disconnect connections regardless of how
hgs
parents:
diff changeset
    36
    many applications are using the connection.
hgs
parents:
diff changeset
    37
*/
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
// External function prototypes
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
// Local constants
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
// ======== LOCAL FUNCTIONS ========
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
// ======== MEMBER FUNCTIONS ========
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
/*!
hgs
parents:
diff changeset
    48
    Constructor.
hgs
parents:
diff changeset
    49
    
hgs
parents:
diff changeset
    50
    @param [in] wrapper Wrapper to report progress to.
hgs
parents:
diff changeset
    51
 */
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
WlanQtUtilsConMonWrapperDisconnect::WlanQtUtilsConMonWrapperDisconnect(
hgs
parents:
diff changeset
    54
    WlanQtUtilsConMonWrapper *wrapper) :
hgs
parents:
diff changeset
    55
    q_ptr(wrapper)
hgs
parents:
diff changeset
    56
{
hgs
parents:
diff changeset
    57
    OstTraceFunctionEntry1(WLANQTUTILSCONMONWRAPPERDISCONNECT_WLANQTUTILSCONMONWRAPPERDISCONNECT_ENTRY, this);
hgs
parents:
diff changeset
    58
    
hgs
parents:
diff changeset
    59
    // Errors in Connection Monitor Server connection are fatal so just
hgs
parents:
diff changeset
    60
    // throw them as exceptions
hgs
parents:
diff changeset
    61
    QT_TRAP_THROWING(iMonitor.ConnectL());
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
    OstTraceFunctionExit1(WLANQTUTILSCONMONWRAPPERDISCONNECT_WLANQTUTILSCONMONWRAPPERDISCONNECT_EXIT, this);
hgs
parents:
diff changeset
    64
}
hgs
parents:
diff changeset
    65
hgs
parents:
diff changeset
    66
/*!
hgs
parents:
diff changeset
    67
    Destructor.
hgs
parents:
diff changeset
    68
 */
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
WlanQtUtilsConMonWrapperDisconnect::~WlanQtUtilsConMonWrapperDisconnect()
hgs
parents:
diff changeset
    71
{
hgs
parents:
diff changeset
    72
    OstTraceFunctionEntry1(DUP1_WLANQTUTILSCONMONWRAPPERDISCONNECT_WLANQTUTILSCONMONWRAPPERDISCONNECT_ENTRY, this);
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
    iMonitor.Close();
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
    OstTraceFunctionExit1(DUP1_WLANQTUTILSCONMONWRAPPERDISCONNECT_WLANQTUTILSCONMONWRAPPERDISCONNECT_EXIT, this);
hgs
parents:
diff changeset
    77
}
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
/*!
hgs
parents:
diff changeset
    80
    Disconnects the connection with the given IAP ID.
hgs
parents:
diff changeset
    81
    
hgs
parents:
diff changeset
    82
    @param [in] wrapper Wrapper to report progress to.
hgs
parents:
diff changeset
    83
 */
hgs
parents:
diff changeset
    84
hgs
parents:
diff changeset
    85
void WlanQtUtilsConMonWrapperDisconnect::DisconnectConnection(int iapId)
hgs
parents:
diff changeset
    86
{
hgs
parents:
diff changeset
    87
    OstTraceFunctionEntry1(WLANQTUTILSCONMONWRAPPERDISCONNECT_DISCONNECTCONNECTION_ENTRY, this);
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
    OstTrace1(
hgs
parents:
diff changeset
    90
        TRACE_NORMAL,
hgs
parents:
diff changeset
    91
        WLANQTUTILSCONMONWRAPPERDISCONNECT_DISCONNECTCONNECTION,
hgs
parents:
diff changeset
    92
        "WlanQtUtilsConMonWrapperDisconnect::DisconnectConnection;iapId=%d", iapId);
hgs
parents:
diff changeset
    93
    
hgs
parents:
diff changeset
    94
    // Loop through connections to find the one with the IAP ID we want
hgs
parents:
diff changeset
    95
    TUint count;
hgs
parents:
diff changeset
    96
    TRequestStatus status;
hgs
parents:
diff changeset
    97
    iMonitor.GetConnectionCount(count, status);
hgs
parents:
diff changeset
    98
    User::WaitForRequest(status);
hgs
parents:
diff changeset
    99
    if (status.Int() == KErrNone) {
hgs
parents:
diff changeset
   100
        for (TInt i = 1; i <= count; i++) {
hgs
parents:
diff changeset
   101
            TUint numSubConnections;
hgs
parents:
diff changeset
   102
            TUint iap = 0;
hgs
parents:
diff changeset
   103
            TUint connectionId = 0;
hgs
parents:
diff changeset
   104
            TInt ret = iMonitor.GetConnectionInfo(
hgs
parents:
diff changeset
   105
                i,
hgs
parents:
diff changeset
   106
                connectionId,
hgs
parents:
diff changeset
   107
                numSubConnections);
hgs
parents:
diff changeset
   108
            if (ret == KErrNone) {
hgs
parents:
diff changeset
   109
                iMonitor.GetUintAttribute(connectionId, 0, KIAPId, iap, status);
hgs
parents:
diff changeset
   110
                User::WaitForRequest(status);
hgs
parents:
diff changeset
   111
                if (status.Int() == KErrNone) {
hgs
parents:
diff changeset
   112
                    if (iap == iapId) {
hgs
parents:
diff changeset
   113
                        OstTrace1(
hgs
parents:
diff changeset
   114
                            TRACE_NORMAL,
hgs
parents:
diff changeset
   115
                            WLANQTUTILSCONMONWRAPPERDISCONNECT_DISCONNECTCONNECTION_STOP,
hgs
parents:
diff changeset
   116
                            "WlanQtUtilsConMonWrapperDisconnect::DisconnectConnection Stopping connection;connectionId=%u",
hgs
parents:
diff changeset
   117
                            connectionId);
hgs
parents:
diff changeset
   118
                        
hgs
parents:
diff changeset
   119
                        // Match found, stop connection
hgs
parents:
diff changeset
   120
                        TInt KErr = iMonitor.SetBoolAttribute(
hgs
parents:
diff changeset
   121
                            connectionId,
hgs
parents:
diff changeset
   122
                            0,
hgs
parents:
diff changeset
   123
                            KConnectionStop,
hgs
parents:
diff changeset
   124
                            ETrue);
hgs
parents:
diff changeset
   125
    
hgs
parents:
diff changeset
   126
                        OstTrace1(
hgs
parents:
diff changeset
   127
                            TRACE_NORMAL,
hgs
parents:
diff changeset
   128
                            WLANQTUTILSCONMONWRAPPERDISCONNECT_DISCONNECTCONNECTION_RESULT,
hgs
parents:
diff changeset
   129
                            "WlanQtUtilsConMonWrapperDisconnect::DisconnectConnection Result;KErr=%d", KErr);
hgs
parents:
diff changeset
   130
                    }
hgs
parents:
diff changeset
   131
                }
hgs
parents:
diff changeset
   132
            }
hgs
parents:
diff changeset
   133
        }
hgs
parents:
diff changeset
   134
    }
hgs
parents:
diff changeset
   135
    
hgs
parents:
diff changeset
   136
    OstTraceFunctionExit1( WLANQTUTILSCONMONWRAPPERDISCONNECT_DISCONNECTCONNECTION_EXIT, this);
hgs
parents:
diff changeset
   137
}