bluetoothengine/headsetsimulator/profiles/hfpprofile/src/dataprocessing/hfpcommand.cpp
branchheadsetsimulator
changeset 60 90dbfc0435e3
equal deleted inserted replaced
59:02103bf20ee5 60:90dbfc0435e3
       
     1 /* 
       
     2  *
       
     3  * Copyright (c) <2010> Comarch S.A. and/or its subsidiary(-ies).
       
     4  * All rights reserved.
       
     5  * This component and the accompanying materials are made available
       
     6  * under the terms of the License "Eclipse Public License v1.0"
       
     7  * which accompanies this distribution, and is available
       
     8  * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     9  *
       
    10  * Original Contributors:
       
    11  * Comarch S.A. - original contribution.
       
    12  *
       
    13  * Contributors:
       
    14  *
       
    15  * Description:
       
    16  *
       
    17  */
       
    18 
       
    19 #include <badesca.h>
       
    20 
       
    21 #include "hfpcommand.h"
       
    22 #include "debug.h"
       
    23 
       
    24 TATParam::TATParam( const TDesC8& aValue )
       
    25     {
       
    26     if ( aValue.Length() <= KHsHFPMaxATParamSize )
       
    27         {
       
    28         iValue.Copy( aValue );
       
    29         }
       
    30     }
       
    31 
       
    32 const TDesC8& TATParam::Des() const
       
    33     {
       
    34     return iValue;
       
    35     }
       
    36 
       
    37 TInt TATParam::IntL() const
       
    38     {
       
    39     TRACE_FUNC_ENTRY
       
    40     TLex8 lex( iValue );
       
    41     TInt res = KErrNotFound;
       
    42     User::LeaveIfError( lex.Val( res ) );
       
    43 
       
    44     TRACE_FUNC_EXIT
       
    45     return res;
       
    46 
       
    47     }
       
    48 
       
    49 CHsHFPCommand* CHsHFPCommand::NewL()
       
    50     {
       
    51     CHsHFPCommand *self = CHsHFPCommand::NewLC();
       
    52     CleanupStack::Pop( self );
       
    53 
       
    54     return self;
       
    55     }
       
    56 
       
    57 CHsHFPCommand* CHsHFPCommand::NewLC()
       
    58     {
       
    59 
       
    60     CHsHFPCommand *self = new ( ELeave ) CHsHFPCommand();
       
    61     CleanupStack::PushL( self );
       
    62     self->ConstructL();
       
    63     return self;
       
    64     }
       
    65 
       
    66 CHsHFPCommand::~CHsHFPCommand()
       
    67     {
       
    68     TRACE_FUNC_ENTRY
       
    69     iParams.Close();
       
    70     iModeDes.Close();
       
    71     iParamsDes.Close();
       
    72     iTypeDes.Close();
       
    73     TRACE_FUNC_EXIT
       
    74     }
       
    75 
       
    76 TInt CHsHFPCommand::SetType( const THsHFPCommandType aType )
       
    77     {
       
    78     TRACE_FUNC_ENTRY
       
    79     iType = aType;
       
    80 
       
    81     switch ( iType )
       
    82         {
       
    83         case EHFPCmdOK:
       
    84             iTypeDes.Copy( KHsHFPOKCommand );
       
    85             break;
       
    86         case EHFPCmdERROR:
       
    87             iTypeDes.Copy( KHsHFPERRORCommand );
       
    88             break;
       
    89         case EHFPCmdBRSF:
       
    90             iTypeDes.Copy( KHsHFPBRSFCommand );
       
    91             break;
       
    92         case EHFPCmdCIND:
       
    93             iTypeDes.Copy( KHsHFPCINDCommand );
       
    94             break;
       
    95         case EHFPCmdCMER:
       
    96             iTypeDes.Copy( KHsHFPCMERCommand );
       
    97             break;
       
    98         case EHFPCmdCIEV:
       
    99             iTypeDes.Copy( KHsHFPCIEVCommand );
       
   100             break;
       
   101         case EHFPCmdCHUP:
       
   102             iTypeDes.Copy( KHsHFPCHUPCommand );
       
   103             break;
       
   104         case EHFPCmdCOPS:
       
   105             iTypeDes.Copy( KHsHFPCOPSCommand );
       
   106             break;
       
   107         case EHFPCmdRING:
       
   108             iTypeDes.Copy( KHsHFPRINGCommand );
       
   109             break;
       
   110         case EHFPCmdATA:
       
   111             iTypeDes.Copy( KHsHFPATACommandWithoutPrefix );
       
   112             break;
       
   113         case EHFPCmdVGS:
       
   114             iTypeDes.Copy( KHsHFPVGSCommand );
       
   115             break;
       
   116         case EHFPCmdVGM:
       
   117             iTypeDes.Copy( KHsHFPVGMCommand );
       
   118             break;
       
   119         case EHFPCmdBLDN:
       
   120             iTypeDes.Copy( KHsHFPBLDNCommand );
       
   121             break;
       
   122         case EHFPCmdATD:
       
   123             iTypeDes.Copy( KHsHFPATDCommandWithoutPrefix );
       
   124             break;
       
   125         case EHFPCmdCLIP:
       
   126             iTypeDes.Copy( KHsHFPCLIPCommand );
       
   127             break;
       
   128         default:
       
   129             TRACE_FUNC_EXIT
       
   130             return KErrArgument;
       
   131         }
       
   132     TRACE_FUNC_EXIT
       
   133     return KErrNone;
       
   134     }
       
   135 
       
   136 TInt CHsHFPCommand::SetMode( const THsHFPCommandMode aMode )
       
   137     {
       
   138     TRACE_FUNC_ENTRY
       
   139     iMode = aMode;
       
   140     switch ( iMode )
       
   141         {
       
   142         case ECmdModeRead:
       
   143             iModeDes.Copy( KHsHFPATReadModeDes );
       
   144             break;
       
   145         case ECmdModeWrite:
       
   146             iModeDes.Copy( KHsHFPATWriteModeDes );
       
   147             break;
       
   148         case ECmdModeTest:
       
   149             iModeDes.Copy( KHsHFPATTestModeDes );
       
   150             break;
       
   151         case ECmdModeNormal:
       
   152             iModeDes.Copy( KNullDesC8 );
       
   153             break;
       
   154         case ECmdModeOther:
       
   155             iModeDes.Copy( KNullDesC8 );
       
   156             break;
       
   157         default:
       
   158             TRACE_FUNC_EXIT
       
   159             return KErrArgument;
       
   160         }
       
   161     TRACE_FUNC_EXIT
       
   162     return KErrNone;
       
   163     }
       
   164 
       
   165 TInt CHsHFPCommand::SetParams( const RATParamArray& aParams )
       
   166     {
       
   167     TRACE_FUNC_ENTRY
       
   168     TInt res = KErrNone;
       
   169     
       
   170     if ( aParams.Count() > 0 )
       
   171         {
       
   172         iParams.Reset();
       
   173         iParams = aParams;
       
   174         iParamsDes.Zero();
       
   175 
       
   176         for ( TInt i = 0; i < iParams.Count() - 1; i++ )
       
   177             {
       
   178             iParamsDes.Append( iParams[i].Des() );
       
   179             iParamsDes.Append( KHsHFPParamsSeparator );
       
   180             }
       
   181 
       
   182         iParamsDes.Append( iParams[iParams.Count() - 1].Des() );
       
   183         }
       
   184     TRACE_FUNC_EXIT
       
   185     return res;
       
   186     }
       
   187 
       
   188 void CHsHFPCommand::SetSource( const TBool aFromAG )
       
   189     {
       
   190     iFromAG = aFromAG;
       
   191     }
       
   192 
       
   193 void CHsHFPCommand::ToDes8( TDes8& aBuf ) const
       
   194     {
       
   195     TRACE_FUNC_ENTRY
       
   196     if ( iMode == ECmdModeNormal )
       
   197         {
       
   198         aBuf.Copy( KHsHFPCommandPrefix );
       
   199         aBuf.Append( iTypeDes );
       
   200         aBuf.Append( KHsHFPCommandSuffix );
       
   201         }
       
   202 
       
   203     else if ( iType != EHFPCmdUnknown )
       
   204         {
       
   205         aBuf.Copy( KHsHFPCommandPrefix );
       
   206         aBuf.Append( iTypeDes );
       
   207         aBuf.Append( iModeDes );
       
   208         aBuf.Append( iParamsDes );
       
   209         aBuf.Append( KHsHFPCommandSuffix );
       
   210         }
       
   211     else
       
   212         {
       
   213         aBuf.Zero();
       
   214         }
       
   215 
       
   216     TRACE_INFO((_L8("Command to des: %S"),&aBuf));
       
   217     TRACE_FUNC_EXIT
       
   218     }
       
   219 
       
   220 THsHFPCommandType CHsHFPCommand::Type() const
       
   221     {
       
   222     return iType;
       
   223     }
       
   224 
       
   225 THsHFPCommandMode CHsHFPCommand::Mode() const
       
   226     {
       
   227     return iMode;
       
   228     }
       
   229 
       
   230 TBool CHsHFPCommand::FromAG() const
       
   231     {
       
   232     return iFromAG;
       
   233     }
       
   234 
       
   235 const RATParamArray& CHsHFPCommand::Params() const
       
   236     {
       
   237     return iParams;
       
   238     }
       
   239 
       
   240 void CHsHFPCommand::CopyL( const CHsHFPCommand& aCmdFrom, CHsHFPCommand& aCmdTo )
       
   241     {
       
   242     TRACE_STATIC_FUNC_ENTRY
       
   243     aCmdTo.iMode = aCmdFrom.iMode;
       
   244     aCmdTo.iType = aCmdFrom.iType;
       
   245 
       
   246     aCmdTo.iParams.Reset();
       
   247     for ( TInt i = 0; i < aCmdFrom.iParams.Count(); i++ )
       
   248         {
       
   249         aCmdTo.iParams.AppendL( aCmdFrom.iParams[i] );
       
   250         }
       
   251 
       
   252     aCmdTo.iFromAG = aCmdFrom.iFromAG;
       
   253 
       
   254     aCmdTo.iModeDes.Copy( aCmdFrom.iModeDes );
       
   255     aCmdTo.iTypeDes.Copy( aCmdFrom.iTypeDes );
       
   256     aCmdTo.iParamsDes.Copy( aCmdFrom.iParamsDes );
       
   257     TRACE_FUNC_EXIT
       
   258     }
       
   259 
       
   260 CHsHFPCommand::CHsHFPCommand() :
       
   261     iType( EHFPCmdUnknown ), iParams( KParamArrayGranularity )
       
   262     {
       
   263 
       
   264     }
       
   265 
       
   266 void CHsHFPCommand::ConstructL()
       
   267     {
       
   268     TRACE_FUNC_ENTRY
       
   269     iModeDes.CreateL( KModeDesMaxLength );
       
   270     iTypeDes.CreateL( KTypeDesMaxLength );
       
   271     iParamsDes.CreateL( KParamsDesMaxLength );
       
   272     TRACE_FUNC_EXIT
       
   273     }