bluetoothengine/headsetsimulator/profiles/hspprofile/src/dataprocessing/hspcommandparser.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
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    19
#include <badesca.h>
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    20
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    21
#include "hspcommandparser.h"
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    22
#include "debug.h"
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    23
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    24
CHsHSPParser* CHsHSPParser::NewL()
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    25
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    26
    CHsHSPParser *self = CHsHSPParser::NewLC();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    27
    CleanupStack::Pop( self );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    28
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    29
    return self;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    30
    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    31
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    32
CHsHSPParser* CHsHSPParser::NewLC()
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    33
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    34
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    35
    CHsHSPParser *self = new ( ELeave ) CHsHSPParser();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    36
    CleanupStack::PushL( self );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    37
    self->ConstructL();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    38
    return self;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    39
    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    40
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    41
CHsHSPParser::~CHsHSPParser()
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    42
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    43
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
void CHsHSPParser::ParseL( const TDesC8& aBufCommand, const TBool aFromAG,
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    47
        CHsHSPCommand& aCommand )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    48
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    49
    TRACE_FUNC_ENTRY
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    50
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    51
    aCommand.SetSource( aFromAG );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    52
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    53
    THsHSPCommandType type = EHSPCmdUnknown;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    54
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    55
    type = RetrieveTypeL( aBufCommand );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    56
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    57
    User::LeaveIfError( aCommand.SetType( type ) );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    58
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    59
    if ( type == EHSPCmdOK || type == EHSPCmdERROR || type == EHSPCmdRING )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    60
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    61
        User::LeaveIfError( aCommand.SetMode( ECmdModeNormal ) );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    62
        RATParamArray params( 1 );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    63
        User::LeaveIfError( aCommand.SetParams( params ) );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    64
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    65
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    66
    else
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    67
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    68
        THsHSPCommandMode mode = ECmdUnknownMode;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    69
        mode = RetrieveModeL( aBufCommand, aFromAG );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    70
        User::LeaveIfError( aCommand.SetMode( mode ) );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    71
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    72
        RATParamArray params( 4 );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    73
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    74
        RetrieveParamsL( aBufCommand, mode, params );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    75
        User::LeaveIfError( aCommand.SetParams( params ) );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    76
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    77
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    78
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    79
    TRACE_FUNC_EXIT
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    80
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    81
    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    82
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    83
CHsHSPParser::CHsHSPParser()
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    84
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    85
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    86
    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    87
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    88
void CHsHSPParser::ConstructL()
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    89
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    90
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    91
    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    92
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    93
THsHSPCommandMode CHsHSPParser::RetrieveModeL( const TDesC8 &aCommand,
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    94
        const TBool aFromAG )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    95
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    96
    TRACE_FUNC_ENTRY
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    97
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    98
    THsHSPCommandMode res = ECmdUnknownMode;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    99
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   100
    if ( aFromAG )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   101
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   102
        if ( aCommand.Find( KHsHSPATTestModeDesAG ) != KErrNotFound )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   103
            {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   104
            res = ECmdModeTest;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   105
            }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   106
        else if ( aCommand.Find( KHsHSPATReadModeDesAG ) != KErrNotFound )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   107
            {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   108
            res = ECmdModeRead;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   109
            }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   110
        else if ( aCommand.Find( KHsHSPATWriteModeDesAG ) != KErrNotFound )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   111
            {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   112
            res = ECmdModeWrite;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   113
            }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   114
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   115
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   116
    else
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   117
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   118
        if ( aCommand.Find( KHsHSPATTestModeDes ) != KErrNotFound )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   119
            {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   120
            res = ECmdModeTest;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   121
            }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   122
        else if ( aCommand.Find( KHsHSPATReadModeDes ) != KErrNotFound )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   123
            {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   124
            res = ECmdModeRead;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   125
            }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   126
        else if ( aCommand.Find( KHsHSPATWriteModeDes ) != KErrNotFound )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   127
            {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   128
            res = ECmdModeWrite;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   129
            }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   130
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   131
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   132
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   133
    if ( res == ECmdUnknownMode )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   134
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   135
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   136
        User::Leave( KErrArgument );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   137
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   138
    TRACE_FUNC_EXIT
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   139
    return res;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   140
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   141
    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   142
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   143
THsHSPCommandType CHsHSPParser::RetrieveTypeL( const TDesC8 &aCommand )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   144
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   145
    TRACE_FUNC_ENTRY
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   146
    THsHSPCommandType res = EHSPCmdUnknown;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   147
    if ( aCommand.Find( KHsHSPOKCommand ) != KErrNotFound )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   148
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   149
        res = EHSPCmdOK;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   150
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   151
    else if ( aCommand.Find( KHsHSPERRORCommand ) != KErrNotFound )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   152
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   153
        res = EHSPCmdERROR;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   154
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   155
    else if ( aCommand.Find( KHsHSPRINGCommand ) != KErrNotFound )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   156
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   157
        res = EHSPCmdRING;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   158
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   159
    else if ( aCommand.Find( KHsHSPVGSCommand ) != KErrNotFound )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   160
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   161
        res = EHSPCmdVGS;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   162
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   163
    else if ( aCommand.Find( KHsHSPVGMCommand ) != KErrNotFound )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   164
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   165
        res = EHSPCmdVGM;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   166
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   167
    else if ( aCommand.Find( KHsHSPCKPDCommand ) != KErrNotFound )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   168
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   169
        res = EHSPCmdCKPD;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   170
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   171
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   172
    if ( res == EHSPCmdUnknown )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   173
        User::Leave( KErrArgument );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   174
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   175
    TRACE_FUNC_EXIT
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   176
    return res;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   177
    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   178
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   179
void CHsHSPParser::RetrieveParamsL( const TDesC8 &aCommand,
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   180
        const THsHSPCommandMode aCmdMode, RATParamArray& aParams )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   181
    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   182
    TRACE_FUNC_ENTRY
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   183
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   184
    RBuf8 buf;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   185
    buf.CreateL( aCommand );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   186
    buf.CleanupClosePushL();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   187
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   188
    TInt prefixLength = 0;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   189
    TInt suffixLength = 0;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   190
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   191
    TInt modeLength = 0;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   192
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   193
    TInt leftOffset = 0;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   194
    TInt rightOffset = 0;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   195
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   196
    TInt startPos = 0;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   197
    TBool indicatorsFound = EFalse;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   198
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   199
    if ( buf.Find( KHsHSPIndicatorParamsSeparator ) != KErrNotFound )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   200
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   201
        indicatorsFound = ETrue;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   202
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   203
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   204
    if ( indicatorsFound )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   205
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   206
        prefixLength = 9;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   207
        suffixLength = 2;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   208
        rightOffset = 2;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   209
        leftOffset = 1;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   210
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   211
    else
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   212
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   213
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   214
        rightOffset = 1;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   215
        suffixLength = 2;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   216
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   217
        switch ( aCmdMode )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   218
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   219
            {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   220
            case ECmdModeTest:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   221
                {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   222
                startPos = buf.Find( KHsHSPATTestModeDes );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   223
                modeLength = 2;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   224
                }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   225
                break;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   226
            case ECmdModeRead:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   227
                {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   228
                startPos = buf.Find( KHsHSPATReadModeDes );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   229
                modeLength = 1;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   230
                }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   231
                break;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   232
            case ECmdModeWrite:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   233
                {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   234
                startPos = buf.Find( KHsHSPATWriteModeDes );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   235
                modeLength = 1;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   236
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   237
                if ( startPos == KErrNotFound )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   238
                    {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   239
                    startPos = buf.Find( KHsHSPATWriteModeDesAG );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   240
                    modeLength = 2;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   241
                    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   242
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   243
                }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   244
                break;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   245
            default:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   246
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   247
                User::Leave( KErrArgument );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   248
                break;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   249
            }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   250
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   251
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   252
    if ( startPos != KErrNotFound )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   253
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   254
        //strip command's prefix
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   255
        buf.Delete( 0, prefixLength + startPos + modeLength );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   256
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   257
        //strip command's suffix
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   258
        buf.Delete( buf.Length() - suffixLength, suffixLength );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   259
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   260
    else
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   261
        User::Leave( KErrArgument );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   262
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   263
    while ( buf.Size() > 0 )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   264
        {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   265
        TInt pos = 0;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   266
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   267
        if ( indicatorsFound )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   268
            {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   269
            pos = buf.Find( KHsHSPIndicatorParamsSeparator );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   270
            }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   271
        else
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   272
            {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   273
            pos = buf.Find( KHsHSPParamsSeparator );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   274
            }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   275
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   276
        if ( pos == KErrNotFound )
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   277
            {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   278
            aParams.AppendL( buf );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   279
            buf.Zero();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   280
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   281
            }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   282
        else
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   283
            {
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   284
            TPtrC8 ptr = ( buf.Left( pos + leftOffset ) );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   285
            aParams.AppendL( ptr );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   286
            buf.Delete( 0, pos + rightOffset );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   287
            }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   288
        }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   289
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   290
    CleanupStack::PopAndDestroy( &buf );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   291
    TRACE_FUNC_EXIT
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   292
    }
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   293