localconnectivityservice/dun/atext/src/DunAtNvramListen.cpp
author hgs
Fri, 15 Oct 2010 15:05:57 +0800
changeset 54 4dc88a4ac6f4
parent 52 866b4af7ffbe
permissions -rw-r--r--
201041_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
     1
/*
54
4dc88a4ac6f4 201041_02
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:  AT NVRAM status change 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 "DunAtNvramListen.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
CDunAtNvramListen* CDunAtNvramListen::NewL( RATExt* aAtCmdExt,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    27
                                            RATExtCommon* aAtCmdExtCommon )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    28
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    29
    CDunAtNvramListen* self = NewLC( aAtCmdExt, aAtCmdExtCommon );
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
CDunAtNvramListen* CDunAtNvramListen::NewLC( RATExt* aAtCmdExt,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    39
                                             RATExtCommon* aAtCmdExtCommon )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    40
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    41
    CDunAtNvramListen* self = new (ELeave) CDunAtNvramListen(
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    42
        aAtCmdExt,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    43
        aAtCmdExtCommon );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    44
    CleanupStack::PushL( self );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    45
    self->ConstructL();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    46
    return self;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    47
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    48
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    49
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    50
// Destructor.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    51
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    52
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    53
CDunAtNvramListen::~CDunAtNvramListen()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    54
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    55
    FTRACE(FPrint( _L("CDunAtNvramListen::~CDunAtNvramListen()") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    56
    ResetData();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    57
    FTRACE(FPrint( _L("CDunAtNvramListen::~CDunAtNvramListen() complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    58
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    59
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    60
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    61
// Resets data to initial values
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    62
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    63
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    64
void CDunAtNvramListen::ResetData()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    65
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    66
    FTRACE(FPrint( _L("CDunAtNvramListen::ResetData()") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    67
    // APIs affecting this:
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    68
    // IssueRequest()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    69
    Stop();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    70
    // Internal
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    71
    Initialize();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    72
    FTRACE(FPrint( _L("CDunAtNvramListen::ResetData() complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    73
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    74
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    75
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    76
// Starts waiting for NVRAM status changes
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    77
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    78
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    79
TInt CDunAtNvramListen::IssueRequest()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    80
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    81
    FTRACE(FPrint( _L("CDunAtNvramListen::IssueRequest()") ));
54
4dc88a4ac6f4 201041_02
hgs
parents: 52
diff changeset
    82
    if ( IsActive() )
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    83
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    84
        FTRACE(FPrint( _L("CDunAtNvramListen::IssueRequest() (not ready) complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    85
        return KErrNotReady;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    86
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    87
    if ( !iStarted )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    88
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    89
        iAtCmdExtCommon->GetNvramStatus( iNvramBuffer );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    90
        iAtCmdExt->BroadcastNvramStatusChange( iNvramBuffer );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    91
        iStarted = ETrue;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    92
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    93
    iAtCmdExtCommon->ReceiveNvramStatusChange( iStatus, iNvramBuffer );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    94
    SetActive();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    95
    FTRACE(FPrint( _L("CDunAtNvramListen::IssueRequest() complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    96
    return KErrNone;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    97
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    98
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
    99
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   100
// Stops waiting for NVRAM status changes
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   101
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   102
//
54
4dc88a4ac6f4 201041_02
hgs
parents: 52
diff changeset
   103
void CDunAtNvramListen::Stop()
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   104
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   105
    FTRACE(FPrint( _L("CDunAtNvramListen::Stop()") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   106
    Cancel();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   107
    FTRACE(FPrint( _L("CDunAtNvramListen::Stop() complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   108
    // Note: Don't mark iStarted to EFalse here!
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   109
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   110
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   111
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   112
// CDunAtNvramListen::CDunAtNvramListen
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   113
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   114
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   115
CDunAtNvramListen::CDunAtNvramListen( RATExt* aAtCmdExt,
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   116
                                      RATExtCommon* aAtCmdExtCommon ) :
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   117
    CActive( EPriorityHigh ),
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   118
    iAtCmdExt( aAtCmdExt ),
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   119
    iAtCmdExtCommon( aAtCmdExtCommon )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   120
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   121
    Initialize();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   122
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   123
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   124
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   125
// CDunAtNvramListen::ConstructL
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   126
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   127
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   128
void CDunAtNvramListen::ConstructL()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   129
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   130
    FTRACE(FPrint( _L("CDunAtNvramListen::ConstructL()") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   131
    if ( !iAtCmdExt || !iAtCmdExtCommon )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   132
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   133
        User::Leave( KErrGeneral );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   134
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   135
    CActiveScheduler::Add( this );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   136
    FTRACE(FPrint( _L("CDunAtNvramListen::ConstructL() complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   137
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   138
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   139
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   140
// Initializes this class
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   141
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   142
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   143
void CDunAtNvramListen::Initialize()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   144
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   145
    // Don't initialize iAtCmdExt here (it is set through NewL)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   146
    // Don't initialize iAtCmdExtCommon here (it is set through NewL)
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   147
    iStarted = EFalse;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   148
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   149
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   150
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   151
// From class CActive.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   152
// Gets called when NVRAM has changed
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   153
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   154
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   155
void CDunAtNvramListen::RunL()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   156
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   157
    FTRACE(FPrint( _L("CDunAtNvramListen::RunL()") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   158
    TInt retTemp = iStatus.Int();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   159
    if ( retTemp != KErrNone )
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   160
        {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   161
        FTRACE(FPrint( _L("CDunAtNvramListen::RunL() (ERROR) complete (%d)"), retTemp ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   162
        return;
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   163
        }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   164
    iAtCmdExt->BroadcastNvramStatusChange( iNvramBuffer );
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   165
    IssueRequest();
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   166
    FTRACE(FPrint( _L("CDunAtNvramListen::RunL() complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   167
    }
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   168
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   169
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   170
// From class CActive.
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   171
// Gets called on cancel
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   172
// ---------------------------------------------------------------------------
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   173
//
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   174
void CDunAtNvramListen::DoCancel()
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   175
    {
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   176
    FTRACE(FPrint( _L("CDunAtNvramListen::DoCancel()") ));
54
4dc88a4ac6f4 201041_02
hgs
parents: 52
diff changeset
   177
    iAtCmdExtCommon->CancelReceiveNvramStatusChange();
29
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   178
    FTRACE(FPrint( _L("CDunAtNvramListen::DoCancel() complete") ));
3ae5cb0b4c02 201025_07
hgs
parents:
diff changeset
   179
    }