localconnectivityservice/dun/atext/src/DunAtModeListen.cpp
author hgs
Thu, 04 Nov 2010 15:31:42 +0800
changeset 60 841f70763fbe
parent 52 866b4af7ffbe
permissions -rw-r--r--
201044_04
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     1
/*
60
841f70763fbe 201044_04
hgs
parents: 52
diff changeset
     2
* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
29
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:  Modem's mode listener and notifier
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 "DunAtModeListen.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
CDunAtModeListen* CDunAtModeListen::NewL( RATExtCommon* aAtCmdExtCommon,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    27
                                          MDunAtModeListen* aCallback )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    28
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    29
    CDunAtModeListen* self = NewLC( aAtCmdExtCommon, aCallback );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    30
    CleanupStack::Pop( self );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    31
    return self;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    32
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    33
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    34
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    35
// Two-phased constructor.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    36
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    37
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    38
CDunAtModeListen* CDunAtModeListen::NewLC( RATExtCommon* aAtCmdExtCommon,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    39
                                           MDunAtModeListen* aCallback )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    40
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    41
    CDunAtModeListen* self = new (ELeave) CDunAtModeListen( aAtCmdExtCommon,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    42
                                                            aCallback );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    43
    CleanupStack::PushL( self );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    44
    self->ConstructL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    45
    return self;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    46
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    47
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    48
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    49
// Destructor.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    50
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    51
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    52
CDunAtModeListen::~CDunAtModeListen()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    53
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    54
    FTRACE(FPrint( _L("CDunAtModeListen::~CDunAtModeListen()") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    55
    ResetData();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    56
    FTRACE(FPrint( _L("CDunAtModeListen::~CDunAtModeListen() complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    57
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    58
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    59
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    60
// Resets data to initial values
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    61
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    62
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    63
void CDunAtModeListen::ResetData()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    64
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    65
    FTRACE(FPrint( _L("CDunAtModeListen::ResetData()") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    66
    // APIs affecting this:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    67
    // IssueRequest()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    68
    Stop();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    69
    // Internal
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    70
    Initialize();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    71
    FTRACE(FPrint( _L("CDunAtModeListen::ResetData() complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    72
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    73
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    74
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    75
// Issues request to start monitoring for mode status changes
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    76
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    77
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    78
TInt CDunAtModeListen::IssueRequest()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    79
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    80
    FTRACE(FPrint( _L("CDunAtModeListen::IssueRequest()" )));
60
841f70763fbe 201044_04
hgs
parents: 52
diff changeset
    81
    if ( IsActive() )
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    82
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    83
        FTRACE(FPrint( _L("CDunAtModeListen::IssueRequest() (not ready) complete" ) ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    84
        return KErrNotReady;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    85
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    86
    iAtCmdExtCommon->ReceiveModeStatusChange( iStatus, iModePckg );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    87
    SetActive();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    88
    FTRACE(FPrint( _L("CDunAtModeListen::IssueRequest() complete" )));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    89
    return KErrNone;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    90
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    91
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    92
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    93
// Stops monitoring for mode status changes
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    94
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    95
//
60
841f70763fbe 201044_04
hgs
parents: 52
diff changeset
    96
void CDunAtModeListen::Stop()
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    97
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    98
    FTRACE(FPrint( _L("CDunAtModeListen::Stop()" )));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    99
    Cancel();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   100
    FTRACE(FPrint( _L("CDunAtModeListen::Stop() complete" )));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   101
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   102
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   103
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   104
// CDunAtModeListen::CDunAtModeListen
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   105
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   106
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   107
CDunAtModeListen::CDunAtModeListen( RATExtCommon* aAtCmdExtCommon,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   108
                                    MDunAtModeListen* aCallback ) :
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   109
    CActive( EPriorityHigh ),
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   110
    iAtCmdExtCommon( aAtCmdExtCommon ),
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   111
    iCallback( aCallback ),
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   112
    iModePckg( iMode )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   113
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   114
    Initialize();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   115
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   116
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   117
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   118
// CDunAtModeListen::ConstructL
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   119
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   120
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   121
void CDunAtModeListen::ConstructL()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   122
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   123
    FTRACE(FPrint( _L("CDunAtModeListen::ConstructL()") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   124
    if ( !iAtCmdExtCommon || !iCallback )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   125
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   126
        User::Leave( KErrGeneral );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   127
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   128
    CActiveScheduler::Add( this );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   129
    FTRACE(FPrint( _L("CDunAtModeListen::ConstructL() complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   130
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   131
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   132
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   133
// Initializes this class
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   134
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   135
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   136
void CDunAtModeListen::Initialize()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   137
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   138
    // Don't initialize iAtCmdExtCommon here (it is set through NewL)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   139
    // Don't initialize iCallback here (it is set through NewL)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   140
    iMode = 0;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   141
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   142
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   143
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   144
// From class CActive.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   145
// Gets called when mode changes
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   146
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   147
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   148
void CDunAtModeListen::RunL()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   149
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   150
    FTRACE(FPrint( _L("CDunAtModeListen::RunL()") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   151
    TInt retTemp = iStatus.Int();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   152
    if ( retTemp != KErrNone )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   153
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   154
        FTRACE(FPrint( _L("CDunAtModeListen::RunL() (ERROR) complete (%d)"), retTemp ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   155
        return;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   156
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   157
    FTRACE(FPrint( _L("CDunAtModeListen::RunL() managing 0x%08X" ), iMode ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   158
    iCallback->NotifyModeStatusChange( iMode );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   159
    IssueRequest();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   160
    FTRACE(FPrint( _L("CDunAtModeListen::RunL() complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   161
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   162
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   163
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   164
// From class CActive.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   165
// Gets called on cancel
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   166
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   167
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   168
void CDunAtModeListen::DoCancel()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   169
    {
52
866b4af7ffbe 201039_01
hgs
parents: 29
diff changeset
   170
    FTRACE(FPrint( _L("CDunAtModeListen::DoCancel()") ));
60
841f70763fbe 201044_04
hgs
parents: 52
diff changeset
   171
    iAtCmdExtCommon->CancelReceiveModeStatusChange();
52
866b4af7ffbe 201039_01
hgs
parents: 29
diff changeset
   172
    FTRACE(FPrint( _L("CDunAtModeListen::DoCancel() complete") ));
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   173
    }