bluetoothengine/headsetsimulator/profiles/hfpprofile/src/features/hfpconnectionmanagement.cpp
author michal.sulewski
Wed, 15 Sep 2010 15:59:44 +0200
branchheadsetsimulator
changeset 60 90dbfc0435e3
permissions -rw-r--r--
source code commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
60
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     1
/* 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     2
 *
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     3
 * Copyright (c) <2010> Comarch S.A. and/or its subsidiary(-ies).
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     4
 * All rights reserved.
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     5
 * This component and the accompanying materials are made available
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     6
 * under the terms of the License "Eclipse Public License v1.0"
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     7
 * which accompanies this distribution, and is available
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     8
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     9
 *
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    10
 * Original Contributors:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    11
 * Comarch S.A. - original contribution.
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    12
 *
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    13
 * Contributors:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    14
 *
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    15
 * Description:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    16
 *
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    17
 */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    18
#include "hfpconnectionmanagement.h"
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    19
#include "hfpcommand.h"
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    20
#include "hfpsettings.h"
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    21
#include "debug.h"
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    22
_LIT8(KHsHFPParamValue0,"0");
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    23
_LIT8(KHsHFPParamValue1,"1");
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    24
_LIT8(KHsHFPParamValue3,"3");
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    25
_LIT8(KHsHFPParamValue16,"16");
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    26
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    27
CHsHFPConnectionManagement* CHsHFPConnectionManagement::NewL(
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    28
        MHsHFPFeatureProviderObserver* aObserver )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    29
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    30
    CHsHFPConnectionManagement* self = CHsHFPConnectionManagement::NewLC(
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    31
            aObserver );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    32
    CleanupStack::Pop( self );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    33
    return self;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    34
    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    35
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    36
CHsHFPConnectionManagement* CHsHFPConnectionManagement::NewLC(
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    37
        MHsHFPFeatureProviderObserver* aObserver )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    38
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    39
    CHsHFPConnectionManagement* self =
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    40
            new ( ELeave ) CHsHFPConnectionManagement( aObserver );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    41
    CleanupStack::PushL( self );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    42
    self->ConstructL();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    43
    return self;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    44
    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    45
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    46
CHsHFPConnectionManagement::~CHsHFPConnectionManagement()
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    47
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    48
    TRACE_FUNC_ENTRY
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    49
    if ( iSettings )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    50
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    51
        iSettings->Release();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    52
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    53
    TRACE_FUNC_EXIT
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    54
    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    55
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    56
TInt CHsHFPConnectionManagement::EstablishServiceLevelConnection(
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    57
        const CHsHFPCommand &aInputCmd, CHsHFPCommand &aOutputCmd )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    58
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    59
    TRACE_FUNC_ENTRY
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    60
    TInt res = KErrNone;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    61
    switch ( iEstablishmentState )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    62
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    63
        case EHFPNotConnected:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    64
            {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    65
            if ( aInputCmd.Type() == EHFPCmdUnknown )//initialization
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    66
                {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    67
                aOutputCmd.SetType( EHFPCmdBRSF );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    68
                aOutputCmd.SetMode( ECmdModeWrite );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    69
                RATParamArray params;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    70
                params.Append( TATParam( KHsHFPParamValue16 ) );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    71
                aOutputCmd.SetParams( params );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    72
                iEstablishmentState = EHFPWaitingForBrsfAndOk;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    73
                }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    74
            else
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    75
                {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    76
                res = KErrArgument;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    77
                }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    78
            break;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    79
            }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    80
        case EHFPWaitingForBrsfAndOk:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    81
            {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    82
            if ( aInputCmd.Type() == EHFPCmdBRSF )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    83
                {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    84
                iWaitingForOK = ETrue;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    85
                }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    86
            else if ( iWaitingForOK && aInputCmd.Type() == EHFPCmdOK )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    87
                {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    88
                iWaitingForOK = EFalse;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    89
                aOutputCmd.SetType( EHFPCmdCIND );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    90
                aOutputCmd.SetMode( ECmdModeTest );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    91
                iEstablishmentState = EHFPWaitingForCindTestAndOk;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    92
                }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    93
            else
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    94
                {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    95
                res = KErrArgument;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    96
                }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    97
            break;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    98
            }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    99
        case EHFPWaitingForCindTestAndOk:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   100
            {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   101
            if ( aInputCmd.Type() == EHFPCmdCIND )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   102
                {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   103
                TRAP( res, InitializeIndicatorsL( &aInputCmd ) );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   104
                iWaitingForOK = ETrue;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   105
                }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   106
            else if ( iWaitingForOK && aInputCmd.Type() == EHFPCmdOK )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   107
                {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   108
                iWaitingForOK = EFalse;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   109
                aOutputCmd.SetType( EHFPCmdCIND );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   110
                aOutputCmd.SetMode( ECmdModeRead );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   111
                iEstablishmentState = EHFPWaitingForCindReadAndOk;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   112
                }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   113
            else
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   114
                {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   115
                res = KErrArgument;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   116
                }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   117
            break;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   118
            }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   119
        case EHFPWaitingForCindReadAndOk:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   120
            {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   121
            if ( aInputCmd.Type() == EHFPCmdCIND )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   122
                {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   123
                TRAP( res, SetupIndicatorsL( &aInputCmd ) );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   124
                iWaitingForOK = ETrue;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   125
                }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   126
            else if ( iWaitingForOK && aInputCmd.Type() == EHFPCmdOK )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   127
                {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   128
                iWaitingForOK = EFalse;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   129
                aOutputCmd.SetType( EHFPCmdCMER );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   130
                aOutputCmd.SetMode( ECmdModeWrite );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   131
                RATParamArray params;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   132
                params.Append( TATParam( KHsHFPParamValue3 ) );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   133
                params.Append( TATParam( KHsHFPParamValue0 ) );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   134
                params.Append( TATParam( KHsHFPParamValue0 ) );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   135
                params.Append( TATParam( KHsHFPParamValue1 ) );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   136
                aOutputCmd.SetParams( params );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   137
                iEstablishmentState = EHFPWaitingForOk;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   138
                }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   139
            else
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   140
                {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   141
                res = KErrArgument;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   142
                }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   143
            break;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   144
            }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   145
        case EHFPWaitingForOk:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   146
            {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   147
            if ( aInputCmd.Type() == EHFPCmdOK )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   148
                {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   149
                iEstablishmentState = EHFPConnected;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   150
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   151
                // Initialize volume level synchronization
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   152
                aOutputCmd.SetType( EHFPCmdVGS );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   153
                aOutputCmd.SetMode( ECmdModeWrite );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   154
                RATParamArray params;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   155
                TBuf8 <KHsHFPMaxVolumeLevelParamSize> vgsLevel;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   156
                vgsLevel.AppendNum( iSettings->iVgsLevel );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   157
                params.Append( TATParam( vgsLevel ) );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   158
                aOutputCmd.SetParams( params );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   159
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   160
                iObserver->HandleProcedureCompleted( KErrNone );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   161
                }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   162
            else
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   163
                {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   164
                res = KErrArgument;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   165
                }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   166
            break;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   167
            }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   168
        default:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   169
            res = KErrArgument;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   170
            break;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   171
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   172
    TRACE_FUNC_EXIT
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   173
    return res;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   174
    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   175
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   176
void CHsHFPConnectionManagement::HandleServiceLevelConnectionRelease( TInt aErr )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   177
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   178
    TRACE_FUNC_ENTRY
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   179
    iEstablishmentState = EHFPNotConnected;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   180
    iObserver->HandleProcedureCompleted( KErrNone );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   181
    TRACE_FUNC_EXIT
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   182
    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   183
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   184
CHsHFPConnectionManagement::CHsHFPConnectionManagement(
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   185
        MHsHFPFeatureProviderObserver* aObserver ) :
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   186
    iObserver( aObserver )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   187
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   188
    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   189
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   190
void CHsHFPConnectionManagement::ConstructL()
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   191
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   192
    TRACE_FUNC_ENTRY
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   193
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   194
    iSettings = CHsHFPSettings::InstanceL();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   195
    TRACE_FUNC_EXIT
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   196
    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   197
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   198
void CHsHFPConnectionManagement::InitializeIndicatorsL(
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   199
        const CHsHFPCommand* aCommand )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   200
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   201
    TRACE_FUNC_ENTRY
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   202
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   203
    TInt params = aCommand->Params().Count();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   204
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   205
    TChar end( '\"' );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   206
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   207
    const TInt prefixLength = 2;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   208
    const TInt suffixLength = 2;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   209
    for ( TInt i = 0; i < params; i++ )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   210
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   211
        TInt pos = aCommand->Params()[i].Des().LocateReverse( end );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   212
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   213
        if ( pos == KErrNotFound )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   214
            {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   215
            User::Leave( KErrArgument );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   216
            }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   217
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   218
        RBuf8 buf;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   219
        buf.CreateL( aCommand->Params()[i].Des() );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   220
        buf.CleanupClosePushL();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   221
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   222
        buf.Delete( 0, prefixLength );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   223
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   224
        buf.Delete( pos - suffixLength, buf.Length() - 1 );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   225
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   226
        iSettings->iSettingsArr.AppendL( THsHFPIndicatorSetting( buf, 0 ) );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   227
        CleanupStack::PopAndDestroy( &buf );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   228
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   229
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   230
    TRACE_FUNC_EXIT
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   231
    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   232
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   233
void CHsHFPConnectionManagement::SetupIndicatorsL(
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   234
        const CHsHFPCommand* aCommand )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   235
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   236
    TRACE_FUNC_ENTRY
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   237
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   238
    for ( TInt i = 0; i < aCommand->Params().Count(); i++ )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   239
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   240
        if ( iSettings->iSettingsArr.Count() > ( i + 1 ) )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   241
            {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   242
            iSettings->iSettingsArr[i + 1].SetValueL(
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   243
                    aCommand->Params()[i].Des() );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   244
            TRACE_INFO( (_L8("INDICATOR: %S - value: %d "),
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   245
                            &iSettings->iSettingsArr[i + 1].Des(),
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   246
                            iSettings->iSettingsArr[i + 1].Int() ) );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   247
            }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   248
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   249
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   250
    TRACE_FUNC_EXIT
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   251
    }