localconnectivityservice/dun/atext/src/DunAtEcomListen.cpp
author hgs
Tue, 28 Sep 2010 20:14:08 +0800
changeset 52 866b4af7ffbe
parent 29 3ae5cb0b4c02
child 54 4dc88a4ac6f4
permissions -rw-r--r--
201039_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     1
/*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     2
* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     3
* All rights reserved.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     8
*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     9
* Initial Contributors:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    11
*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    12
* Contributors:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    13
*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    14
* Description:  ECom plugin install/uninstall/version listener
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    15
*
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    16
*/
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    17
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    18
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    19
#include "DunAtEcomListen.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    20
#include "DunDebug.h"
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    21
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    22
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    23
// Two-phased constructor.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    24
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    25
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    26
CDunAtEcomListen* CDunAtEcomListen::NewL(
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    27
    RATExt* aAtCmdExt,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    28
    MDunAtEcomListen* aCallback )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    29
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    30
    CDunAtEcomListen* self = NewLC( aAtCmdExt, aCallback );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    31
    CleanupStack::Pop( self );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    32
    return self;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    33
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    34
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    35
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    36
// Two-phased constructor.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    37
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    38
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    39
CDunAtEcomListen* CDunAtEcomListen::NewLC(
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    40
    RATExt* aAtCmdExt,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    41
    MDunAtEcomListen* aCallback )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    42
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    43
    CDunAtEcomListen* self = new (ELeave) CDunAtEcomListen( aAtCmdExt,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    44
                                                            aCallback );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    45
    CleanupStack::PushL( self );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    46
    self->ConstructL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    47
    return self;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    48
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    49
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    50
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    51
// Destructor.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    52
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    53
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    54
CDunAtEcomListen::~CDunAtEcomListen()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    55
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    56
    FTRACE(FPrint( _L("CDunAtEcomListen::~CDunAtEcomListen()") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    57
    ResetData();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    58
    FTRACE(FPrint( _L("CDunAtEcomListen::~CDunAtEcomListen() complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    59
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    60
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    61
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    62
// Resets data to initial values
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    63
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    64
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    65
void CDunAtEcomListen::ResetData()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    66
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    67
    FTRACE(FPrint( _L("CDunAtEcomListen::ResetData()") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    68
    // APIs affecting this:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    69
    // IssueRequest()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    70
    Stop();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    71
    // Internal
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    72
    Initialize();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    73
    FTRACE(FPrint( _L("CDunAtEcomListen::ResetData() complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    74
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    75
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    76
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    77
// Starts waiting for ECom plugin install/uninstall/version status changes
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    78
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    79
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    80
TInt CDunAtEcomListen::IssueRequest()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    81
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    82
    FTRACE(FPrint( _L("CDunAtEcomListen::IssueRequest()") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    83
    if ( iEcomListenState != EDunStateIdle )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    84
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    85
        FTRACE(FPrint( _L("CDunAtEcomListen::IssueRequest() (not ready) complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    86
        return KErrNotReady;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    87
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    88
    iStatus = KRequestPending;
52
866b4af7ffbe 201039_01
hgs
parents: 29
diff changeset
    89
    iEcomListenState = EDunStateEcomListening;
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    90
    iAtCmdExt->ReceiveEcomPluginChange( iStatus, iPluginUidPckg, iEcomTypePckg );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    91
    SetActive();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    92
    FTRACE(FPrint( _L("CDunAtEcomListen::IssueRequest() complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    93
    return KErrNone;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    94
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    95
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    96
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    97
// Stops waiting for Ecom plugin install/uninstall/version status changes
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    98
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    99
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   100
TInt CDunAtEcomListen::Stop()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   101
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   102
    FTRACE(FPrint( _L("CDunAtEcomListen::Stop()") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   103
    if ( iEcomListenState != EDunStateEcomListening )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   104
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   105
        FTRACE(FPrint( _L("CDunAtEcomListen::Stop() (not ready) complete" )));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   106
        return KErrNotReady;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   107
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   108
    iAtCmdExt->CancelReceiveEcomPluginChange();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   109
    Cancel();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   110
    iEcomListenState = EDunStateIdle;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   111
    FTRACE(FPrint( _L("CDunAtEcomListen::Stop() complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   112
    return KErrNone;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   113
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   114
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   115
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   116
// CDunAtEcomListen::CDunAtEcomListen
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   117
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   118
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   119
CDunAtEcomListen::CDunAtEcomListen( RATExt* aAtCmdExt,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   120
                                    MDunAtEcomListen* aCallback ) :
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   121
    CActive( EPriorityHigh ),
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   122
    iAtCmdExt( aAtCmdExt ),
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   123
    iCallback( aCallback ),
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   124
    iPluginUidPckg( iPluginUid ),
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   125
    iEcomTypePckg( EEcomTypeUninstall )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   126
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   127
    Initialize();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   128
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   129
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   130
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   131
// CDunAtEcomListen::ConstructL
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   132
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   133
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   134
void CDunAtEcomListen::ConstructL()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   135
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   136
    FTRACE(FPrint( _L("CDunAtEcomListen::ConstructL()") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   137
    if ( !iAtCmdExt || !iCallback )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   138
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   139
        User::Leave( KErrGeneral );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   140
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   141
    CActiveScheduler::Add( this );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   142
    FTRACE(FPrint( _L("CDunAtEcomListen::ConstructL() complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   143
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   144
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   145
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   146
// Initializes this class
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   147
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   148
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   149
void CDunAtEcomListen::Initialize()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   150
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   151
    // Don't initialize iAtCmdExt here (it is set through NewL)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   152
    // Don't initialize iCallback here (it is set through NewL)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   153
    iEcomListenState = EDunStateIdle;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   154
    iPluginUid = TUid::Null();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   155
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   156
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   157
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   158
// From class CActive.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   159
// Gets called when plugin installed, uninstalled or changed
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   160
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   161
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   162
void CDunAtEcomListen::RunL()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   163
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   164
    FTRACE(FPrint( _L("CDunAtEcomListen::RunL()") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   165
    iEcomListenState = EDunStateIdle;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   166
    TInt retTemp = iStatus.Int();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   167
    if ( retTemp != KErrNone )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   168
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   169
        FTRACE(FPrint( _L("CDunAtEcomListen::RunL() (ERROR) complete (%d)"), retTemp ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   170
        return;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   171
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   172
    IssueRequest();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   173
    // Now the operation is either unintall or install of plugin
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   174
    // Notify parent and ATEXT
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   175
    if ( iEcomTypePckg() == EEcomTypeUninstall )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   176
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   177
        iCallback->NotifyPluginUninstallation( iPluginUid );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   178
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   179
    else if ( iEcomTypePckg() == EEcomTypeInstall )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   180
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   181
        iCallback->NotifyPluginInstallation( iPluginUid );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   182
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   183
    else
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   184
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   185
        FTRACE(FPrint( _L("CDunAtEcomListen::RunL() (not supported) complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   186
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   187
    FTRACE(FPrint( _L("CDunAtEcomListen::RunL() complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   188
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   189
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   190
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   191
// From class CActive.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   192
// Gets called on cancel
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   193
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   194
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   195
void CDunAtEcomListen::DoCancel()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   196
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   197
    FTRACE(FPrint( _L("CDunAtEcomListen::DoCancel()") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   198
    FTRACE(FPrint( _L("CDunAtEcomListen::DoCancel() complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   199
    }