messagingapp/msgsettings/msginit/src/cmobilesignalstrengthhandler.cpp
author hgs
Tue, 13 Jul 2010 22:09:22 +0530
changeset 46 b1f0785c289d
permissions -rw-r--r--
201027_03
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
46
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     1
/*
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     3
* All rights reserved.
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     8
*
b1f0785c289d 201027_03
hgs
parents:
diff changeset
     9
* Initial Contributors:
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    11
*
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    12
* Contributors:
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    13
*
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    14
* Description:   Mobile signal strength handler implementation
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    15
*
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    16
*/
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    17
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    18
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    19
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    20
// INCLUDE FILES
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    21
#include <mmtsy_names.h>
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    22
#include "cmobilesignalstrengthhandler.h"
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    23
#include "msignalstrengthobserver.h"
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    24
#include "debugtraces.h"
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    25
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    26
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    27
// CMobileSignalStrengthHandler::NewL
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    28
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    29
CMobileSignalStrengthHandler* CMobileSignalStrengthHandler::NewL( )
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    30
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    31
    CMobileSignalStrengthHandler* self = new (ELeave) CMobileSignalStrengthHandler();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    32
    CleanupStack::PushL( self );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    33
    self->ConstructL();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    34
    CleanupStack::Pop( self );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    35
    return self;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    36
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    37
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    38
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    39
// CMobileSignalStrengthHandler::~CMobileSignalStrengthHandler
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    40
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    41
CMobileSignalStrengthHandler::~CMobileSignalStrengthHandler()
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    42
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    43
    Cancel();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    44
    iMobilePhone.Close();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    45
    iTelServer.Close();    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    46
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    47
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    48
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    49
// CMobileSignalStrengthHandler::CMobileSignalStrengthHandler
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    50
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    51
CMobileSignalStrengthHandler::CMobileSignalStrengthHandler() :
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    52
    CActive( EPriorityNormal )
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    53
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    54
 
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    55
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    56
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    57
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    58
// CMobileSignalStrengthHandler::ConstructL
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    59
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    60
void CMobileSignalStrengthHandler::ConstructL()
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    61
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    62
    QDEBUG_WRITE("CMobileSignalStrengthHandler::ConstructL - Enter ");    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    63
    CActiveScheduler::Add( this );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    64
    InitializeSessionsL();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    65
    QDEBUG_WRITE("CMobileSignalStrengthHandler::ConstructL - Exit");
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    66
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    67
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    68
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    69
// CMobileSignalStrengthHandler::RunL
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    70
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    71
void CMobileSignalStrengthHandler::RunL()
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    72
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    73
    // if operation completed successfully
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    74
    if( iStatus.Int() == KErrNone )
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    75
        {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    76
        QDEBUG_WRITE_FORMAT("CMobileSignalStrengthHandler::RunL - Signal strength updated ",iSignalStrength );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    77
        NotifyObserver();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    78
        }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    79
        
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    80
    // if observing is still active reissue the notification request    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    81
    if( iObserving )
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    82
        {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    83
        QDEBUG_WRITE( "CMobileSignalStrengthHandler::RunL - NotifySignalStrengthChange" );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    84
        // reissue the request 
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    85
        iMobilePhone.NotifySignalStrengthChange( iStatus, iSignalStrength, iBars );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    86
        SetActive();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    87
        }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    88
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    89
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    90
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    91
// CMobileSignalStrengthHandler::RunError
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    92
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    93
TInt CMobileSignalStrengthHandler::RunError( TInt /*aError*/)
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    94
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    95
    return KErrNone;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    96
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    97
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    98
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
    99
// CMobileSignalStrengthHandler::DoCancel
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   100
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   101
void CMobileSignalStrengthHandler::DoCancel()
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   102
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   103
    if( iObserving )
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   104
        {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   105
        iMobilePhone.CancelAsyncRequest( EMobilePhoneNotifySignalStrengthChange );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   106
        }    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   107
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   108
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   109
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   110
// CMobileSignalStrengthHandler::ObservingSupported
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   111
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   112
TBool CMobileSignalStrengthHandler::ObservingSupported()
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   113
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   114
    TUint32 caps;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   115
    iMobilePhone.GetSignalCaps( caps );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   116
    return ( caps & RMobilePhone::KCapsNotifySignalStrengthChange );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   117
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   118
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   119
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   120
// CMobileSignalStrengthHandler::RequestsSupported
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   121
// -----------------------------------------------------------------    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   122
TBool CMobileSignalStrengthHandler::RequestsSupported()
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   123
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   124
    TUint32 caps;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   125
    iMobilePhone.GetSignalCaps( caps );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   126
    return ( caps & RMobilePhone::KCapsGetSignalStrength );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   127
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   128
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   129
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   130
// CMobileSignalStrengthHandler::SetSignalStrengthObserverL
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   131
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   132
void CMobileSignalStrengthHandler::SetSignalStrengthObserverL(
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   133
    MSignalStrengthObserver* aObserver )
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   134
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   135
    // leave if observing is not supported
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   136
    if( !ObservingSupported() )
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   137
        {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   138
        User::Leave( KErrNotSupported );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   139
        }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   140
    iObserver = aObserver;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   141
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   142
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   143
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   144
// CMobileSignalStrengthHandler::StartObservingL
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   145
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   146
void CMobileSignalStrengthHandler::StartObservingL()
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   147
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   148
    // leave if observing is not supported
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   149
    if( !ObservingSupported() )
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   150
        {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   151
        User::Leave( KErrNotSupported );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   152
        }        
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   153
    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   154
    // update signal str
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   155
    TRAPD( err, UpdateSignalStrengthL() );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   156
    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   157
    // check operation
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   158
    if( err != KErrNone )
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   159
        {        
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   160
        QDEBUG_WRITE_FORMAT("CMobileSignalStrengthHandler::StartObservingL - Failed to initialize signal strength (err = )",err );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   161
        iSignalStrength = 0;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   162
        }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   163
    else
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   164
        {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   165
        QDEBUG_WRITE_FORMAT("CMobileSignalStrengthHandler::StartObservingL - Signal strength initialized to ",iSignalStrength );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   166
        }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   167
    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   168
    // update state
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   169
    iObserving = ETrue;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   170
    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   171
    // Notify current observer about signal strength
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   172
    NotifyObserver();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   173
    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   174
    // request for notification    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   175
    iMobilePhone.NotifySignalStrengthChange( iStatus, iSignalStrength, iBars );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   176
    SetActive();                            
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   177
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   178
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   179
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   180
// CMobileSignalStrengthHandler::StopObservingL
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   181
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   182
void CMobileSignalStrengthHandler::StopObservingL()
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   183
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   184
    if( !iObserving )
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   185
        {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   186
        User::Leave( KErrGeneral );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   187
        }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   188
        
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   189
    // cancel the request    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   190
    Cancel();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   191
        
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   192
    // update state
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   193
    iObserving = EFalse;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   194
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   195
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   196
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   197
// CMobileSignalStrengthHandler::SignalStrengthL
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   198
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   199
TInt CMobileSignalStrengthHandler::SignalStrengthL()
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   200
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   201
    // leave if requests are not supported
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   202
    if( !RequestsSupported() )
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   203
        {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   204
        User::Leave( KErrNotSupported );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   205
        }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   206
    // if we're not observing we have to update the value manually,
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   207
    // otherwise value is up-to-date    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   208
    if( !iObserving )
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   209
        {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   210
        UpdateSignalStrengthL();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   211
        }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   212
 
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   213
    // return the current value
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   214
    return iSignalStrength;        
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   215
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   216
    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   217
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   218
// CMobileSignalStrengthHandler::BarValueL
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   219
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   220
TInt CMobileSignalStrengthHandler::BarValueL()
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   221
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   222
    // leave if requests are not supported
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   223
    if( !RequestsSupported() )
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   224
        {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   225
        User::Leave( KErrNotSupported );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   226
        }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   227
    if( !iObserving )
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   228
        {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   229
        UpdateSignalStrengthL();
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   230
        }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   231
    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   232
    // return the current value
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   233
    return iBars;      
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   234
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   235
    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   236
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   237
// CMobileSignalStrengthHandler::InitializeSessionsL
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   238
// -----------------------------------------------------------------    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   239
void CMobileSignalStrengthHandler::InitializeSessionsL()
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   240
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   241
    QDEBUG_WRITE("CMobileSignalStrengthHandler::InitializeSessionsL - Enter");
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   242
  
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   243
    User::LeaveIfError( iTelServer.Connect() );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   244
     
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   245
    RTelServer::TPhoneInfo phoneInfo;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   246
    TInt numPhone;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   247
    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   248
    // load tsy module and get number of phones
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   249
    User::LeaveIfError( iTelServer.LoadPhoneModule( KMmTsyModuleName ) );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   250
    User::LeaveIfError( iTelServer.EnumeratePhones( numPhone) );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   251
  
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   252
    // find the correct phone
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   253
    for (TInt i(0); i < numPhone; i++)
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   254
        {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   255
        TName tsyName;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   256
        User::LeaveIfError( iTelServer.GetPhoneInfo( i, phoneInfo ) );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   257
        User::LeaveIfError( iTelServer.GetTsyName( i,tsyName ) );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   258
  
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   259
        if ( tsyName.CompareF( KMmTsyModuleName ) == 0)
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   260
            {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   261
            break;
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   262
            }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   263
        }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   264
    // open mobile phone session    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   265
    User::LeaveIfError( iMobilePhone.Open( iTelServer, phoneInfo.iName ) ); 
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   266
    QDEBUG_WRITE("CMobileSignalStrengthHandler::InitializeSessionsL - Exit");
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   267
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   268
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   269
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   270
// CMobileSignalStrengthHandler::UpdateSignalStrengthL
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   271
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   272
void CMobileSignalStrengthHandler::UpdateSignalStrengthL()
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   273
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   274
    // only update the value if requests are supported
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   275
    if( RequestsSupported() )
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   276
        {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   277
        TRequestStatus status;                
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   278
        iMobilePhone.GetSignalStrength( status, iSignalStrength, iBars );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   279
        User::WaitForRequest( status );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   280
        QDEBUG_WRITE_FORMAT("CMobileSignalStrengthHandler::UpdateSignalStrengthL - GetSignalStrength returned with", status.Int() );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   281
        User::LeaveIfError( status.Int() );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   282
        }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   283
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   284
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   285
// -----------------------------------------------------------------
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   286
// CMobileSignalStrengthHandler::NotifyObserver
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   287
// -----------------------------------------------------------------    
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   288
void CMobileSignalStrengthHandler::NotifyObserver()
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   289
    {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   290
    // notify observer, if set
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   291
    if( iObserver )
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   292
        {
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   293
        TRAP_IGNORE( iObserver->SignalStrengthAndBarUpdatedL( iSignalStrength, iBars ) );
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   294
        }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   295
    }
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   296
b1f0785c289d 201027_03
hgs
parents:
diff changeset
   297
//  End of File