wlanutilities/wlansniffer/wlansnifferapplication/src/wlansniffer.cpp
author hgs
Thu, 24 Jun 2010 10:49:51 +0300
changeset 39 7b3e49e4608a
parent 31 e8f4211554fb
child 62 b47b808de481
permissions -rw-r--r--
201025
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
31
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
* WLAN Sniffer application main class implementation.
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
// System includes
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
#include <QProcess>
hgs
parents:
diff changeset
    21
#include <QLocale>
39
hgs
parents: 31
diff changeset
    22
#include <HbStyleLoader>
31
hgs
parents:
diff changeset
    23
#include <HbTranslator>
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
// User includes
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
#include "wlansnifferengine.h"
hgs
parents:
diff changeset
    28
#include "wlansniffermainwindow.h"
hgs
parents:
diff changeset
    29
#include "wlansniffer.h"
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
#include "OstTraceDefinitions.h"
hgs
parents:
diff changeset
    32
#ifdef OST_TRACE_COMPILER_IN_USE
hgs
parents:
diff changeset
    33
#include "wlansnifferTraces.h"
hgs
parents:
diff changeset
    34
#endif
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
/*!
hgs
parents:
diff changeset
    37
    \class WlanSniffer
hgs
parents:
diff changeset
    38
    \brief WLAN Sniffer main class implementation.
hgs
parents:
diff changeset
    39
*/
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
// External function prototypes
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
// Local constants
hgs
parents:
diff changeset
    44
39
hgs
parents: 31
diff changeset
    45
//! Location of WLAN Sniffer custom layout definitions
hgs
parents: 31
diff changeset
    46
static const QString WlanSnifferLayoutPath(":/wlansnifferlayout/");
hgs
parents: 31
diff changeset
    47
31
hgs
parents:
diff changeset
    48
// ======== LOCAL FUNCTIONS ========
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
// ======== MEMBER FUNCTIONS ========
hgs
parents:
diff changeset
    51
hgs
parents:
diff changeset
    52
/*!
hgs
parents:
diff changeset
    53
    Constructor.
hgs
parents:
diff changeset
    54
    
hgs
parents:
diff changeset
    55
    @param [in] argc Parameter count.
hgs
parents:
diff changeset
    56
    @param [in] argv Parameters. 
hgs
parents:
diff changeset
    57
 */
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
WlanSniffer::WlanSniffer(int argc, char* argv[]) :
hgs
parents:
diff changeset
    60
    HbApplication(argc, argv),
hgs
parents:
diff changeset
    61
    mEngine(new WlanSnifferEngine(this)),
39
hgs
parents: 31
diff changeset
    62
    mTranslator(),
31
hgs
parents:
diff changeset
    63
    mMainWindow(0)
hgs
parents:
diff changeset
    64
{
hgs
parents:
diff changeset
    65
    OstTraceFunctionEntry0(WLANSNIFFER_WLANSNIFFER_ENTRY);
39
hgs
parents: 31
diff changeset
    66
hgs
parents: 31
diff changeset
    67
    // Start scanning immediately to get the first scan results as soon as
hgs
parents: 31
diff changeset
    68
    // possible, since the scanning takes time.
hgs
parents: 31
diff changeset
    69
    if (mEngine->masterWlan() && !mEngine->forceDisableWlan()) {
hgs
parents: 31
diff changeset
    70
        mEngine->startWlanScanning();
hgs
parents: 31
diff changeset
    71
    }
31
hgs
parents:
diff changeset
    72
    
39
hgs
parents: 31
diff changeset
    73
    // Register custom layout location
hgs
parents: 31
diff changeset
    74
    HbStyleLoader::registerFilePath(WlanSnifferLayoutPath);
hgs
parents: 31
diff changeset
    75
hgs
parents: 31
diff changeset
    76
    // Install localization
hgs
parents: 31
diff changeset
    77
    mTranslator = QSharedPointer<HbTranslator>(new HbTranslator());
31
hgs
parents:
diff changeset
    78
    mTranslator->loadCommon();
hgs
parents:
diff changeset
    79
    
hgs
parents:
diff changeset
    80
    mMainWindow = QSharedPointer<WlanSnifferMainWindow>(
hgs
parents:
diff changeset
    81
        new WlanSnifferMainWindow(mEngine));
hgs
parents:
diff changeset
    82
    
hgs
parents:
diff changeset
    83
    // Connect exit handling
hgs
parents:
diff changeset
    84
    bool connectStatus = connect(
hgs
parents:
diff changeset
    85
        mEngine,
hgs
parents:
diff changeset
    86
        SIGNAL(exitTriggered()),
hgs
parents:
diff changeset
    87
        this,
hgs
parents:
diff changeset
    88
        SLOT(exitApplication()));
hgs
parents:
diff changeset
    89
    Q_ASSERT(connectStatus);
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
    // Start the Wlan Sniffer Keepalive process, if not started yet
hgs
parents:
diff changeset
    92
    // The purpose of the process is to manage Wlan links opened
hgs
parents:
diff changeset
    93
    // by this application, and the process should be running always
hgs
parents:
diff changeset
    94
    // after the first launch of this application.
hgs
parents:
diff changeset
    95
    if (findKeepaliveProcess() == false) {
hgs
parents:
diff changeset
    96
        QProcess::startDetached("wlansnifferkeepalive");
hgs
parents:
diff changeset
    97
    }
hgs
parents:
diff changeset
    98
    
hgs
parents:
diff changeset
    99
    OstTraceFunctionExit0(WLANSNIFFER_WLANSNIFFER_EXIT);
hgs
parents:
diff changeset
   100
}
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
/*!
hgs
parents:
diff changeset
   103
    Destructor.
hgs
parents:
diff changeset
   104
 */
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
WlanSniffer::~WlanSniffer()
hgs
parents:
diff changeset
   107
{
hgs
parents:
diff changeset
   108
    OstTraceFunctionEntry0(WLANSNIFFER_WLANSNIFFERDESTR_ENTRY);
39
hgs
parents: 31
diff changeset
   109
hgs
parents: 31
diff changeset
   110
    HbStyleLoader::unregisterFilePath(WlanSnifferLayoutPath);
hgs
parents: 31
diff changeset
   111
    
31
hgs
parents:
diff changeset
   112
    OstTraceFunctionExit0(WLANSNIFFER_WLANSNIFFERDESTR_EXIT);
hgs
parents:
diff changeset
   113
}
hgs
parents:
diff changeset
   114
hgs
parents:
diff changeset
   115
/*!
hgs
parents:
diff changeset
   116
    Function for finding possible running keepalive process.
hgs
parents:
diff changeset
   117
    
hgs
parents:
diff changeset
   118
    @return TRUE if a keepalive process was found running.
hgs
parents:
diff changeset
   119
 */
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
bool WlanSniffer::findKeepaliveProcess()
hgs
parents:
diff changeset
   122
{
hgs
parents:
diff changeset
   123
    OstTraceFunctionEntry0(WLANSNIFFER_FINDKEEPALIVEPROCESS_ENTRY);
hgs
parents:
diff changeset
   124
    
hgs
parents:
diff changeset
   125
    // Try to search the keepalive process
hgs
parents:
diff changeset
   126
    bool found = false;
hgs
parents:
diff changeset
   127
    TFileName executableName;
hgs
parents:
diff changeset
   128
    executableName.Copy(_L("wlansnifferkeepalive*"));
hgs
parents:
diff changeset
   129
    TFindProcess processSearch;
hgs
parents:
diff changeset
   130
    TFullName processFullName;
hgs
parents:
diff changeset
   131
    while (processSearch.Next(processFullName) == KErrNone) {
hgs
parents:
diff changeset
   132
        if (processFullName.Match(executableName) != KErrNotFound) { 
hgs
parents:
diff changeset
   133
            found = true;
hgs
parents:
diff changeset
   134
            break;
hgs
parents:
diff changeset
   135
        }
hgs
parents:
diff changeset
   136
    }
hgs
parents:
diff changeset
   137
    
hgs
parents:
diff changeset
   138
    OstTraceExt1(
hgs
parents:
diff changeset
   139
        TRACE_NORMAL,
hgs
parents:
diff changeset
   140
        WLANSNIFFER_FINDKEEPALIVEPROCESS_RESULT,
hgs
parents:
diff changeset
   141
        "WlanSniffer::findKeepaliveProcess;found=%hhu",
hgs
parents:
diff changeset
   142
        found);
hgs
parents:
diff changeset
   143
    
hgs
parents:
diff changeset
   144
    OstTraceFunctionExit0(WLANSNIFFER_FINDKEEPALIVEPROCESS_EXIT);
hgs
parents:
diff changeset
   145
    return found;
hgs
parents:
diff changeset
   146
}
hgs
parents:
diff changeset
   147
hgs
parents:
diff changeset
   148
/*!
hgs
parents:
diff changeset
   149
    Slot for handling application exit.
hgs
parents:
diff changeset
   150
 */
hgs
parents:
diff changeset
   151
hgs
parents:
diff changeset
   152
void WlanSniffer::exitApplication()
hgs
parents:
diff changeset
   153
{
hgs
parents:
diff changeset
   154
    OstTraceFunctionEntry0(WLANSNIFFER_EXITAPPLICATION_ENTRY);
hgs
parents:
diff changeset
   155
    
hgs
parents:
diff changeset
   156
    exit();
hgs
parents:
diff changeset
   157
hgs
parents:
diff changeset
   158
    OstTraceFunctionExit0(WLANSNIFFER_EXITAPPLICATION_EXIT);
hgs
parents:
diff changeset
   159
}