diff -r 7259cf1302ad -r 169364e7e4b4 stif/TestInterface/src/StifTFwIfProt.cpp --- a/stif/TestInterface/src/StifTFwIfProt.cpp Tue Jul 06 16:05:13 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2051 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: This file conatins StifTfIfProt implementation. -* -*/ - -// INCLUDE FILES -#include -#include -#include "StifTFwIfProt.h" - -#include - -// EXTERNAL DATA STRUCTURES -//extern ?external_data; - -// EXTERNAL FUNCTION PROTOTYPES -//extern ?external_function( ?arg_type,?arg_type ); - -// CONSTANTS -//const ?type ?constant_var = ?constant; - -// MACROS -//#define DEBUG(a) RDebug::Print(a) -//#define DEBUG2(a,b) RDebug::Print(a,b) -//#define DEBUG3(a,b,c) RDebug::Print(a,b,c) -#define DEBUG(a) -#define DEBUG2(a,b) -#define DEBUG3(a,b,c) -#define ERROR RDebug::Print - -// LOCAL CONSTANTS AND MACROS -//const ?type ?constant_var = ?constant; -//#define ?macro_name ?macro_def - -// MODULE DATA STRUCTURES -//enum ?declaration -//typedef ?declaration - -// LOCAL FUNCTION PROTOTYPES -//?type ?function_name( ?arg_type, ?arg_type ); - -// FORWARD DECLARATIONS -//class ?FORWARD_CLASSNAME; - -// ==================== LOCAL FUNCTIONS ======================================= - -/* -------------------------------------------------------------------------------- - - Function: - - Description: - - - - Parameters: : : : - - Return Values: - - Errors/Exceptions: - - Status: Draft - -------------------------------------------------------------------------------- -*/ -/* - - ) - { - // - - - // - - } -*/ - - -/* -------------------------------------------------------------------------------- - - DESCRIPTION - - This module contains the implementation of CStifTFwIfProt class - member functions. - -------------------------------------------------------------------------------- -*/ - -// ================= MEMBER FUNCTIONS ========================================= - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: CStifTFwIfProt - - Description: Default constructor - - C++ default constructor can NOT contain any code, that - might leave. - - Parameters: none - - Return Values: None - - Errors/Exceptions: None - - Status: Draft - -------------------------------------------------------------------------------- -*/ -CStifTFwIfProt::CStifTFwIfProt(): iMessage(0,0) - { - }; - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: ConstructL - - Description: Symbian OS second phase constructor - - Symbian OS default constructor can leave. - - Parameters: None - - Return Values: None - - Errors/Exceptions: None. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -void CStifTFwIfProt::ConstructL() - { - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: NewL - - Description: Two-phased constructor. - - Parameters: None - - Return Values: CStifTFwIfProt*: new object - - Errors/Exceptions: Leaves if new or ConstructL leaves and in oom. - - Status: Proposal - -------------------------------------------------------------------------------- -*/ -EXPORT_C CStifTFwIfProt* CStifTFwIfProt::NewL() - { - - CStifTFwIfProt* self = new (ELeave) CStifTFwIfProt(); - - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); - - return self; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: ~CStifTFwIfProt - - Description: Destructor - - Parameters: None - - Return Values: None - - Errors/Exceptions: None - - Status: Draft - -------------------------------------------------------------------------------- -*/ - -EXPORT_C CStifTFwIfProt::~CStifTFwIfProt() - { - - delete iItem; - delete iMessageBuf; - iMessageBuf = NULL; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: CreateL - - Description: Create new empty protocol message. - - Parameters: TInt aLength: in: protocol message length - - Return Values: None - - Errors/Exceptions: Leave if oom. - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C void CStifTFwIfProt::CreateL( TInt aLength ) - { - - // Delete previous if exists - delete iMessageBuf; - iMessageBuf = NULL; - iMessage.Set( 0, 0, 0 ); - - iMessageBuf = HBufC::NewL( aLength ); - iMessage.Set( iMessageBuf->Des() ); - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: Append - - Description: Append string to protocol message. - - Parameters: TInt aLength: in: protocol message length - - Return Values: None - - Errors/Exceptions: Leave if oom. - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TInt CStifTFwIfProt::Append( const TDesC& aStr ) - { - - if( ( aStr.Length() + 1 ) > - ( iMessage.MaxLength() - iMessage.Length() ) ) - { - ERROR( _L("No space left for string") ); - return KErrOverflow; - } - iMessage.Append( aStr ); - iMessage.Append( _L(" ") ); - - return KErrNone; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: Append - - Description: Append hexadecimal value to protocol message. - - Parameters: TInt aLength: in: protocol message length - - Return Values: None - - Errors/Exceptions: Leave if oom. - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TInt CStifTFwIfProt::AppendId( TUint32 aId ) - { - - if( ( KMaxValueLength + 1 ) > - ( iMessage.MaxLength() - iMessage.Length() ) ) - { - ERROR( _L("No space left for string") ); - return KErrOverflow; - } - - iMessage.AppendNumFixedWidth( aId, EHex, KProtocolIdLength ); - iMessage.Append( _L(" ") ); - - return KErrNone; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: Append - - Description: Append string to protocol message. - - Parameters: TInt aLength: in: protocol message length - - Return Values: None - - Errors/Exceptions: Leave if oom. - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TInt CStifTFwIfProt::Append( KeywordFunc aFunc, TInt aKeyword ) - { - - if( ( aFunc( aKeyword ).Length() + 1 ) > - ( iMessage.MaxLength() - iMessage.Length() ) ) - { - ERROR( _L("No space left for string") ); - return KErrOverflow; - } - iMessage.Append( aFunc( aKeyword ) ); - iMessage.Append( _L(" ") ); - - return KErrNone; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: Append - - Description: Append type-value string to protocol message. - - Parameters: TInt aLength: in: protocol message length - - Return Values: None - - Errors/Exceptions: Leave if oom. - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TInt CStifTFwIfProt::Append( KeywordFunc aFunc, - TInt aKeyword, - const TDesC& aStr ) - { - - if( ( aFunc( aKeyword ).Length() + 2 + aStr.Length() ) > - ( iMessage.MaxLength() - iMessage.Length() ) ) - { - ERROR( _L("No space left for string") ); - return KErrOverflow; - } - - iMessage.Append( aFunc( aKeyword ) ); - iMessage.Append( _L("=") ); - iMessage.Append( aStr ); - iMessage.Append( _L(" ") ); - - return KErrNone; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: Append - - Description: Append type-value string to protocol message. - - Parameters: TInt aLength: in: protocol message length - - Return Values: None - - Errors/Exceptions: Leave if oom. - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TInt CStifTFwIfProt::Append( KeywordFunc aFunc, - TInt aKeyword, - KeywordFunc aValueFunc, - TInt aValue ) - { - - if( ( aFunc( aKeyword ).Length() + 2 + aValueFunc( aValue ).Length() ) > - ( iMessage.MaxLength() - iMessage.Length() ) ) - { - ERROR( _L("No space left for string") ); - return KErrOverflow; - } - - iMessage.Append( aFunc( aKeyword ) ); - iMessage.Append( _L("=") ); - iMessage.Append( aValueFunc( aValue ) ); - iMessage.Append( _L(" ") ); - - return KErrNone; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: Append - - Description: Append type-value string to protocol message. - - Parameters: TInt aLength: in: protocol message length - - Return Values: None - - Errors/Exceptions: Leave if oom. - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TInt CStifTFwIfProt::Append( KeywordFunc aFunc, - TInt aKeyword, - TInt aValue ) - { - - if( ( aFunc( aKeyword ).Length() + 2 + KMaxValueLength ) > - ( iMessage.MaxLength() - iMessage.Length() ) ) - { - ERROR( _L("No space left for string") ); - return KErrOverflow; - } - - iMessage.Append( aFunc( aKeyword ) ); - iMessage.Append( _L("=") ); - iMessage.AppendNum( aValue ); - iMessage.Append( _L(" ") ); - - return KErrNone; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: SetL - - Description: Set and parse protocol message. - - Parameters: TDesC& aMessage: in: protocol message - - Return Values: Symbian OS error code: If protocol message parsing fails, - i.e. message prsing after header - - Errors/Exceptions: Leaves if protocol header parsing fails and oom. - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TInt CStifTFwIfProt::SetL( const TDesC& aMessage ) - { - - // Delete previous if exists - delete iMessageBuf; - iMessageBuf = NULL; - iMessage.Set( 0,0,0 ); - - iMessageBuf = aMessage.AllocL(); - iMessage.Set( iMessageBuf->Des() ); - - return ParseMessageL(); - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: SetL - - Description: Get protocol source identifier. - - Parameters: None - - Return Values: Source identifier. - - Errors/Exceptions: None. - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TUint32 CStifTFwIfProt::SrcId() - { - - return iSrcId; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: SetL - - Description: Get protocol source device identifier. - - Parameters: None - - Return Values: Source device identifier. - - Errors/Exceptions: None. - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TUint16 CStifTFwIfProt::SrcDevId() - { - - return DEVID( iSrcId ); - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: SetL - - Description: Get protocol source test identifier. - - Parameters: None - - Return Values: Source test identifier. - - Errors/Exceptions: None. - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TUint16 CStifTFwIfProt::SrcTestId() - { - - return TESTID( iSrcId ); - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: SetL - - Description: Get protocol destination identifier. - - Parameters: None - - Return Values: Destination identifier. - - Errors/Exceptions: None. - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TUint32 CStifTFwIfProt::DstId() - { - - return iDstId; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: SetL - - Description: Get protocol destination device identifier. - - Parameters: None - - Return Values: Destination device identifier. - - Errors/Exceptions: None. - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TUint16 CStifTFwIfProt::DstDevId() - { - - return DEVID( iDstId ); - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: SetL - - Description: Get protocol destination test identifier. - - Parameters: None - - Return Values: Destination test identifier. - - Errors/Exceptions: None. - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TUint16 CStifTFwIfProt::DstTestId() - { - - return TESTID( iDstId ); - - } - - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: ParseMessageL - - Description: Parse protocol message. - - Parameters: None - - Return Values: None. - - Errors/Exceptions: None. - - Status: Draft - -------------------------------------------------------------------------------- -*/ -TInt CStifTFwIfProt::ParseMessageL() - { - RDebug::Print(_L("CStifTFwIfProt::ParseMessageL start")); - - RDebug::Print(_L("CStifTFwIfProt::ParseMessageL message content: (next line)")); - RDebug::Print(iMessage); - - iItem = CStifItemParser::NewL( iMessage, 0, iMessage.Length() ); - - ParseHeaderL(); - - TRAPD( err, - switch( iMsgType ) - { - case EMsgReserve: - RDebug::Print(_L("CStifTFwIfProt::ParseMessageL EMsgReserve")); - ParseReserveL(); - break; - case EMsgRelease: - RDebug::Print(_L("CStifTFwIfProt::ParseMessageL EMsgRelease")); - break; - case EMsgRemote: - RDebug::Print(_L("CStifTFwIfProt::ParseMessageL EMsgRemote")); - ParseRemoteL(); - break; - case EMsgResponse: - RDebug::Print(_L("CStifTFwIfProt::ParseMessageL EMsgResponse")); - ParseResponseL(); - break; - default: - RDebug::Print(_L("CStifTFwIfProt::ParseMessageL ERROR invalid message type. Leaving!!!")); - ERROR( _L("Invalid message type") ); - User::Leave( KErrArgument ); - } - ); - - delete iItem; - iItem = 0; - - return err; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: ParseHeaderL - - Description: Parse protocol header. - - Parameters: None - - Return Values: None. - - Errors/Exceptions: None. - - Status: Draft - -------------------------------------------------------------------------------- -*/ -void CStifTFwIfProt::ParseHeaderL() - { - - TPtrC tmp; - TInt ret; - TInt tmpMsgType; - - // Get and parse message type - ret = iItem->GetString( _L(""), tmp ); - if( ret != KErrNone ) - { - ERROR( _L("No message type given") ); - User::Leave( KErrNotFound ); - } - - tmpMsgType = Parse( tmp, MsgType ); - if( tmpMsgType < 0 ) - { - ERROR( _L("Invalid message type given") ); - User::Leave( KErrArgument ); - } - iMsgType = ( TMsgType )tmpMsgType; - - // Get and parse srcid - ret = iItem->GetNextString( tmp ); - if( ret != KErrNone ) - { - ERROR( _L("No srcid given") ); - User::Leave( KErrNotFound ); - } - // Check id length - if( tmp.Length() != KProtocolIdLength ) - { - ERROR( _L("Invalid srcid length [%d]"), tmp.Length() ); - User::Leave( KErrArgument ); - } - TUint32 id; - TLex lex( tmp ); - if( lex.Val( id, EHex ) != KErrNone ) - { - ERROR( _L("Invalid srcid given") ); - User::Leave( KErrArgument ); - } - iSrcId = id; - - - // Get and parse dstid - ret = iItem->GetNextString( tmp ); - if( ret != KErrNone ) - { - ERROR( _L("No dstid given") ); - User::Leave( KErrNotFound ); - } - // Check id length - if( tmp.Length() != KProtocolIdLength ) - { - ERROR( _L("Invalid srcid length [%d]"), tmp.Length() ); - User::Leave( KErrArgument ); - } - lex.Assign( tmp ); - if( lex.Val( id, EHex ) != KErrNone ) - { - ERROR( _L("Invalid dstid given") ); - User::Leave( KErrArgument ); - } - iDstId = id; - - } - - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: ParseReserveL - - Description: Parse protocol reserve message. - - Parameters: None - - Return Values: None. - - Errors/Exceptions: None. - - Status: Draft - -------------------------------------------------------------------------------- -*/ -void CStifTFwIfProt::ParseReserveL() - { - - TPtrC tmp; - TInt ret; - TInt tmpRemoteType; - - // Get and parse remote type - ret = iItem->GetNextString( tmp ); - if( ret != KErrNone ) - { - ERROR( _L("No remote type given") ); - User::Leave( KErrNotFound ); - } - - tmpRemoteType = Parse( tmp, RemoteType ); - if( tmpRemoteType < 0 ) - { - iRemoteType = ERemoteUnknown; - } - else - { - iRemoteType = ( TRemoteType ) tmpRemoteType; - } - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: ParseRemoteL - - Description: Parse protocol remote message. - - Parameters: None - - Return Values: None. - - Errors/Exceptions: None. - - Status: Draft - -------------------------------------------------------------------------------- -*/ -void CStifTFwIfProt::ParseRemoteL() - { - RDebug::Print(_L("CStifTFwIfProt::ParseRemoteL start")); - - TPtrC tmp; - TInt ret; - TInt tmpCmdType; - - // Set mode of item parser to be able to read titles with spaces inside - iItem->SetParsingType(CStifItemParser::EQuoteStyleParsing); - - // Get and parse command - ret = iItem->GetNextString( tmp ); - if( ret != KErrNone ) - { - ERROR( _L("No command given") ); - User::Leave( KErrNotFound ); - } - - iCmdDes.Set( tmp ); - tmpCmdType = Parse( tmp, CmdType ); - RDebug::Print(_L("CStifTFwIfProt::ParseRemoteL readed command %d"), tmpCmdType); - if( tmpCmdType < 0 ) - { - iCmdType = ECmdUnknown; - DEBUG( _L("Unknown command given") ); - } - else - { - iCmdType = ( TCmdType ) tmpCmdType; - } - - switch( iCmdType ) - { - case ECmdRun: - { - RDebug::Print(_L("CStifTFwIfProt::ParseRemoteL iCmdType ECmdRun")); - // Parse run parameters - TPtrC arg; - TPtrC val; - iTestCaseNumber = KErrNotFound; - while( iItem->GetNextString( tmp ) == KErrNone ) - { - if( ParseOptArg( tmp, arg, val ) == KErrNone ) - { - TInt param = Parse( arg, RunParams ); - if( param < 0 ) - { - ERROR( _L("Invalid run parameter given") ); - User::Leave( KErrArgument ); - } - - switch( param ) - { - case ERunModule: - iModule.Set( val ); - break; - case ERunInifile: - iIniFile.Set( val ); - break; - case ERunTestcasefile: - iTestCaseFile.Set( val ); - break; - case ERunTestcasenum: - { - TLex ptr( val ); - if( ptr.Val( iTestCaseNumber ) != KErrNone ) - { - ERROR( _L("Invalid test case number given") ); - User::Leave( KErrArgument ); - } - } - break; - case ERunTitle: - iTitle.Set(val); - break; - default: - ERROR( _L("Invalid run parameter given") ); - User::Leave( KErrArgument ); - } - } - else - { - ERROR( _L("Invalid run parameter given") ); - User::Leave( KErrArgument ); - } - } - if( iModule.Length() == 0 ) - { - ERROR( _L("No mandatory test module name given as run parameter") ); - //User::Leave( KErrNotFound ); - } - if(iTestCaseNumber < 0 && iTitle.Length() == 0) //No test case number and no title - { - ERROR( _L("No mandatory test case number given as run parameter") ); - //User::Leave( KErrNotFound ); - } - } - break; - case ECmdPause: - case ECmdResume: - case ECmdCancel: - RDebug::Print(_L("CStifTFwIfProt::ParseRemoteL iCmdType ECmdPause,Resume,Cancel")); - break; - case ECmdRequest: - case ECmdRelease: - RDebug::Print(_L("CStifTFwIfProt::ParseRemoteL iCmdType ECmdRequest,Release")); - ret = iItem->GetNextString( tmp ); - if( ret != KErrNone ) - { - ERROR( _L("No event name given") ); - //User::Leave( KErrNotFound ); - iEventName.Set( 0, 0 ); - } - else - { - iEventName.Set( tmp ); - } - break; - case ECmdSendReceive: - { - RDebug::Print(_L("CStifTFwIfProt::ParseRemoteL iCmdType ECmdSendReceive")); - DEBUG( _L("sendreceive") ); - break; - } - default: - RDebug::Print(_L("CStifTFwIfProt::ParseRemoteL iCmdType UNKNOWN!!!")); - DEBUG( _L("Unknown command") ); - break; - } - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: ParseResponseL - - Description: Parse protocol response message. - - Parameters: None - - Return Values: None. - - Errors/Exceptions: None. - - Status: Draft - -------------------------------------------------------------------------------- -*/ -void CStifTFwIfProt::ParseResponseL() - { - - TPtrC tmp; - TInt ret; - TInt tmpRespType; - TInt tmpCmdType; - - // Get and parse request response type - ret = iItem->GetNextString( tmp ); - if( ret != KErrNone ) - { - ERROR( _L("No request type given") ); - User::Leave( KErrNotFound ); - } - - tmpRespType = Parse( tmp, MsgType ); - if( tmpRespType < 0 ) - { - ERROR( _L("Invalid request type given") ); - User::Leave( KErrArgument ); - } - else - { - iRespType = ( TMsgType ) tmpRespType; - } - - ret = iItem->GetNextString( tmp ); - - // First check if this is a response to a remote command - if( iRespType == EMsgRemote ) - { - if( ret != KErrNone ) - { - ERROR( _L("No arguments for remote response given") ); - User::Leave( KErrNotFound ); - } - - iCmdDes.Set( tmp ); - tmpCmdType = Parse( tmp, CmdType );; - if( tmpCmdType >= 0 ) - { - iCmdType = ( TCmdType ) tmpCmdType; - DEBUG2( _L("Remote response for %S"), &tmp ); - ParseCmdResponseL(); - // Get and parse general response parameters - ret = iItem->GetNextString( tmp ); - } - else - { - iCmdType = (TCmdType)KErrNotFound; - } - } - while( ret == KErrNone ) - { - TPtrC arg; - TPtrC val; - if( ParseOptArg( tmp, arg, val ) == KErrNone ) - { - TInt param = Parse( arg, RespParam ); - if( param < 0 ) - { - ERROR( _L("Invalid parameter given") ); - User::Leave( KErrArgument ); - } - - switch( param ) - { - case ERespResult: - { - TLex ptr( val ); - if( ptr.Val( iResult ) != KErrNone ) - { - ERROR( _L("Invalid error code given") ); - User::Leave( KErrArgument ); - } - } - break; - default: - ERROR( _L("Invalid parameter given") ); - User::Leave( KErrArgument ); - } - } -#if 0 // Check all parameters anyway - else - { - ERROR( _L("Invalid parameter given") ); - User::Leave( KErrArgument ); - } -#endif - ret = iItem->GetNextString( tmp ); - - } - - } - - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: ParseCmdResponseL - - Description: Parse protocol command response parameters. - - Parameters: None - - Return Values: None. - - Errors/Exceptions: None. - - Status: Draft - -------------------------------------------------------------------------------- -*/ -void CStifTFwIfProt::ParseCmdResponseL() - { - - TPtrC tmp; - TPtrC arg; - TPtrC val; - TInt ret; - TInt tmpRunStatus; - TInt tmpResultCategory; - TInt tmpEventStatus; - TInt tmpEventType; - - RDebug::Print(_L("CStifTFwIfProt::ParseCmdResponseL start")); - switch( iCmdType ) - { - case ECmdRun: - { - RDebug::Print(_L("CStifTFwIfProt::ParseCmdResponseL ECmdRun")); - // Parse run response status - ret = iItem->GetNextString( tmp ); - if( ret != KErrNone ) - { - ERROR( _L("No run response status given") ); - User::Leave( KErrNotFound ); - } - - tmpRunStatus = Parse( tmp, RunStatus );; - if( tmpRunStatus < 0 ) - { - ERROR( _L("Invalid run status in response given") ); - User::Leave( KErrArgument ); - } - else - { - iRunStatus = (TRunStatus) tmpRunStatus; - } - - // Parse runs status parameters - while( iItem->GetNextString( tmp ) == KErrNone ) - { - if( ParseOptArg( tmp, arg, val ) == KErrNone ) - { - TInt param = Parse( arg, RunStatusParams ); - if( param < 0 ) - { - ERROR( _L("Invalid run status parameter given") ); - User::Leave( KErrArgument ); - } - - switch( param ) - { - case ERunResult: - { - TLex ptr( val ); - if( ptr.Val( iResult ) != KErrNone ) - { - ERROR( _L("Invalid run result given") ); - User::Leave( KErrArgument ); - } - } - break; - case ERunCategory: - tmpResultCategory = Parse( val, ResultCategory ); - if( tmpResultCategory < 0 ) - { - ERROR( _L("Invalid run result category given") ); - User::Leave( KErrArgument ); - } - else - { - iResultCategory = ( TResultCategory ) tmpResultCategory; - } - break; - default: - ERROR( _L("Invalid run status parameter given") ); - User::Leave( KErrArgument ); - } - } - else - { - ERROR( _L("Invalid run status parameter given") ); - User::Leave( KErrArgument ); - } - } - } - break; - case ECmdPause: - case ECmdResume: - case ECmdCancel: - RDebug::Print(_L("CStifTFwIfProt::ParseCmdResponseL ECmdPause,Resume,Cancel")); - break; - case ECmdRequest: - { - RDebug::Print(_L("CStifTFwIfProt::ParseCmdResponseL ECmdRequest")); - // Parse event request response status - ret = iItem->GetNextString( tmp ); - if( ret != KErrNone ) - { - ERROR( _L("No request response status given") ); - User::Leave( KErrNotFound ); - } - - tmpEventStatus = Parse( tmp, EventStatus ); - if( tmpEventStatus < 0 ) - { - ERROR( _L("Invalid request status in response given") ); - User::Leave( KErrArgument ); - } - else - { - iEventStatus = (TEventStatus) tmpEventStatus; - } - - // Parse request response event name - ret = iItem->GetNextString( tmp ); - if( ret != KErrNone ) - { - ERROR( _L("No request response event name given") ); - User::Leave( KErrNotFound ); - } - iEventName.Set( tmp ); - - // Parse request response status parameters - while( iItem->GetNextString( tmp ) == KErrNone ) - { - if( ParseOptArg( tmp, arg, val ) == KErrNone ) - { - TInt param = Parse( arg, EventStatusParams ); - if( param < 0 ) - { - ERROR( _L("Invalid request response status parameter given") ); - User::Leave( KErrArgument ); - } - - switch( param ) - { - case EEventResult: - { - TLex ptr( val ); - if( ptr.Val( iResult ) != KErrNone ) - { - ERROR( _L("Invalid request response status parameter result given") ); - User::Leave( KErrArgument ); - } - } - break; - case EEventType: - tmpEventType = Parse( val, EventType );; - if( tmpEventType < 0 ) - { - ERROR( _L("Invalid request response status parameter event type given") ); - User::Leave( KErrArgument ); - } - else - { - iEventType = ( TEventIf::TEventType ) tmpEventType; - } - break; - default: - ERROR( _L("Invalid request response status parameter given") ); - User::Leave( KErrArgument ); - } - } - else - { - ERROR( _L("Invalid request response status parameter given") ); - User::Leave( KErrArgument ); - } - } - } - break; - case ECmdRelease: - RDebug::Print(_L("CStifTFwIfProt::ParseCmdResponseL ECmdRelease")); - // Parse release response event name - ret = iItem->GetNextString( tmp ); - if( ret != KErrNone ) - { - ERROR( _L("No release response event name given") ); - User::Leave( KErrNotFound ); - } - iEventName.Set( tmp ); - break; - case ECmdSetEvent: - case ECmdUnsetEvent: - RDebug::Print(_L("CStifTFwIfProt::ParseCmdResponseL ECmdSetEvent,UnsetEvent")); - // Parse release response event name - ret = iItem->GetNextString( tmp ); - if( ret != KErrNone ) - { - ERROR( _L("No set/unset response event name given") ); - User::Leave( KErrNotFound ); - } - iEventName.Set( tmp ); - break; - case ECmdSendReceive: - { - RDebug::Print(_L("CStifTFwIfProt::ParseCmdResponseL ECmdSendReceive")); - // Parse sendreceive response status - ret = iItem->GetNextString( tmp ); - if( ret != KErrNone ) - { - ERROR( _L("No run response status given") ); - User::Leave( KErrNotFound ); - } - - tmpRunStatus = Parse( tmp, RunStatus ); - if( tmpRunStatus < 0 ) - { - ERROR( _L("Invalid run status in response given") ); - User::Leave( KErrArgument ); - } - else - { - iRunStatus = (TRunStatus) tmpRunStatus; - } - break; - } - default: - ERROR( _L("Invalid command response") ); - User::Leave( KErrArgument ); - - } - } - - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: MsgType - - Description: Returns a string desrciptor corresponding - to message type number. - - Parameters: TInt aKeyword: in: keyword index. - - Return Values: TPtrC: keyword descriptor - - Errors/Exceptions: None - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TPtrC CStifTFwIfProt::MsgType( TInt aKeyword ) - { - static TText* const keywords[] = - { - (TText*)L"reserve", - (TText*)L"release", - (TText*)L"remote", - (TText*)L"response", - }; - - if( (TUint)aKeyword >= (sizeof( keywords )/sizeof(TText*)) ) - { - TPtrC null; - return null; - } - - TPtrC keyword( keywords[ aKeyword ] ); - return keyword; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: ResultCategory - - Description: Returns a string desrciptor corresponding - to result category number. - - Parameters: TInt aKeyword: in: keyword index. - - Return Values: TPtrC: keyword descriptor - - Errors/Exceptions: None - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TPtrC CStifTFwIfProt::CmdType( TInt aKeyword ) - { - static TText* const keywords[] = - { - (TText*)L"run", - (TText*)L"pause", - (TText*)L"resume", - (TText*)L"cancel", - (TText*)L"request", - (TText*)L"release", - (TText*)L"sendreceive", - (TText*)L"set", - (TText*)L"unset", - }; - - if( (TUint)aKeyword >= (sizeof( keywords )/sizeof(TText*)) ) - { - TPtrC null; - return null; - } - - TPtrC keyword( keywords[ aKeyword ] ); - return keyword; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: RemoteType - - Description: Returns a string desrciptor corresponding - to remote type number. - - Parameters: TInt aKeyword: in: keyword index. - - Return Values: TPtrC: keyword descriptor - - Errors/Exceptions: None - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TPtrC CStifTFwIfProt::RemoteType( TInt aKeyword ) - { - static TText* const keywords[] = - { - (TText*)L"phone", - }; - - if( (TUint)aKeyword >= (sizeof( keywords )/sizeof(TText*)) ) - { - TPtrC null; - return null; - } - - TPtrC keyword( keywords[ aKeyword ] ); - return keyword; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: RunParams - - Description: Returns a string desrciptor corresponding - to run parameter number. - - Parameters: TInt aKeyword: in: keyword index. - - Return Values: TPtrC: keyword descriptor - - Errors/Exceptions: None - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TPtrC CStifTFwIfProt::RunParams( TInt aKeyword ) - { - static TText* const keywords[] = - { - (TText*)L"module", - (TText*)L"inifile", - (TText*)L"testcasefile", - (TText*)L"testcasenum", - (TText*)L"title", - }; - - if( (TUint)aKeyword >= (sizeof( keywords )/sizeof(TText*)) ) - { - TPtrC null; - return null; - } - - TPtrC keyword( keywords[ aKeyword ] ); - return keyword; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: RunStatus - - Description: Returns a string desrciptor corresponding - to run status number. - - Parameters: TInt aKeyword: in: keyword index. - - Return Values: TPtrC: keyword descriptor - - Errors/Exceptions: None - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TPtrC CStifTFwIfProt::RunStatus( TInt aKeyword ) - { - static TText* const keywords[] = - { - (TText*)L"started", - (TText*)L"error", - (TText*)L"ready", - }; - - if( (TUint)aKeyword >= (sizeof( keywords )/sizeof(TText*)) ) - { - TPtrC null; - return null; - } - - TPtrC keyword( keywords[ aKeyword ] ); - return keyword; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: RunStatusParams - - Description: Returns a string desrciptor corresponding - to run status parameter number. - - Parameters: TInt aKeyword: in: keyword index. - - Return Values: TPtrC: keyword descriptor - - Errors/Exceptions: None - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TPtrC CStifTFwIfProt::RunStatusParams( TInt aKeyword ) - { - static TText* const keywords[] = - { - (TText*)L"result", - (TText*)L"category", - }; - - if( (TUint)aKeyword >= (sizeof( keywords )/sizeof(TText*)) ) - { - TPtrC null; - return null; - } - - TPtrC keyword( keywords[ aKeyword ] ); - return keyword; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: ResultCategory - - Description: Returns a string desrciptor corresponding - to command type number. - - Parameters: TInt aKeyword: in: keyword index. - - Return Values: TPtrC: keyword descriptor - - Errors/Exceptions: None - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TPtrC CStifTFwIfProt::ResultCategory( TInt aKeyword ) - { - static TText* const keywords[] = - { - (TText*)L"normal", - (TText*)L"panic", - (TText*)L"exception", - (TText*)L"timeout", - (TText*)L"leave", - }; - - if( (TUint)aKeyword >= (sizeof( keywords )/sizeof(TText*)) ) - { - TPtrC null; - return null; - } - - TPtrC keyword( keywords[ aKeyword ] ); - return keyword; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: EventStatus - - Description: Returns a string desrciptor corresponding - to command type number. - - Parameters: TInt aKeyword: in: keyword index. - - Return Values: TPtrC: keyword descriptor - - Errors/Exceptions: None - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TPtrC CStifTFwIfProt::EventStatus( TInt aKeyword ) - { - static TText* const keywords[] = - { - (TText*)L"active", - (TText*)L"set", - (TText*)L"error", - }; - - if( (TUint)aKeyword >= (sizeof( keywords )/sizeof(TText*)) ) - { - TPtrC null; - return null; - } - - TPtrC keyword( keywords[ aKeyword ] ); - return keyword; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: EventStatusParams - - Description: Returns a string desrciptor corresponding - to command type number. - - Parameters: TInt aKeyword: in: keyword index. - - Return Values: TPtrC: keyword descriptor - - Errors/Exceptions: None - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TPtrC CStifTFwIfProt::EventStatusParams( TInt aKeyword ) - { - static TText* const keywords[] = - { - (TText*)L"result", - (TText*)L"type", - }; - - if( (TUint)aKeyword >= (sizeof( keywords )/sizeof(TText*)) ) - { - TPtrC null; - return null; - } - - TPtrC keyword( keywords[ aKeyword ] ); - return keyword; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: EventType - - Description: Returns a string desrciptor corresponding - to event type number. - - Parameters: TInt aKeyword: in: keyword index. - - Return Values: TPtrC: keyword descriptor - - Errors/Exceptions: None - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TPtrC CStifTFwIfProt::EventType( TInt aKeyword ) - { - static TText* const keywords[] = - { - (TText*)L"indication", - (TText*)L"state", - }; - - if( (TUint)aKeyword >= (sizeof( keywords )/sizeof(TText*)) ) - { - TPtrC null; - return null; - } - - TPtrC keyword( keywords[ aKeyword ] ); - return keyword; - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: RespParam - - Description: Returns a string desrciptor corresponding - to response parameter number. - - Parameters: TInt aKeyword: in: keyword index. - - Return Values: TPtrC: keyword descriptor - - Errors/Exceptions: None - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TPtrC CStifTFwIfProt::RespParam( TInt aKeyword ) - { - static TText* const keywords[] = - { - (TText*)L"result", - }; - - if( (TUint)aKeyword >= (sizeof( keywords )/sizeof(TText*)) ) - { - TPtrC null; - return null; - } - - TPtrC keyword( keywords[ aKeyword ] ); - return keyword; - - } - - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: SetSrcId - - Description: Set protocol source identifier. - - Parameters: TUint32 aSrcId: in: source identifier - - Return Values: Symbian OS error code - - Errors/Exceptions: None - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TInt CStifTFwIfProt::SetSrcId( TUint32 aSrcId ) - { - - iSrcId = aSrcId; - return AppendId( iSrcId ); - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: SetDstId - - Description: Set protocol destination identifier. - - Parameters: TUint32 aDstId: in: destination identifier - - Return Values: Symbian OS error code - - Errors/Exceptions: None - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TInt CStifTFwIfProt::SetDstId( TUint32 aDstId ) - { - - iDstId = aDstId; - return AppendId( iDstId ); - - } - - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: SetMsgType - - Description: Set message type. - - Parameters: TMsgType iMsgType: in: message type - - Return Values: Symbian OS error code - - Errors/Exceptions: None - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TInt CStifTFwIfProt::SetMsgType( TMsgType aMsgType ) - { - - iMsgType = aMsgType; - return Append( CStifTFwIfProt::MsgType, iMsgType ); - - } - - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: SetRespType - - Description: Set response type. - - Parameters: TMsgType iMsgType : in: set response type - - Return Values: Symbian OS error code - - Errors/Exceptions: None - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TInt CStifTFwIfProt::SetRespType( TMsgType aRespType ) - { - - iRespType = aRespType; - return Append( CStifTFwIfProt::MsgType, iRespType ); - - } - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: SetCmdType - - Description: Set command type. - - Parameters: TCmdType iCmdType: in: command type - - Return Values: None - - Errors/Exceptions: None - - Status: Draft - -------------------------------------------------------------------------------- -*/ -EXPORT_C TInt CStifTFwIfProt::SetCmdType( TCmdType aCmdType ) - { - - iCmdType = aCmdType; - return Append( CStifTFwIfProt::CmdType, iCmdType ); - - } - - -/* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: Parse - - Description: Returns a keyword enum corresponding to keyword - string descriptor. - - Parameters: TPtrC aKeyword: in: keyword descriptor. - KeywordFunc aFunc: in: Function pointer to keyword parser - - Return Values: TInt: keyword index - KErrNotFound: Keyword does not exists - - Errors/Exceptions: None - - Status: Draft - ------------------------------------------------------------------------------- -*/ -TInt CStifTFwIfProt::Parse( TDesC& aKeyword, KeywordFunc aFunc ) - { - TInt ind; - for( ind = 0; aFunc( ind ).Length() > 0; ind++ ) - { - if( aFunc( ind ) == aKeyword ) - { - return ind; - } - } - return KErrNotFound; - }; - - - /* -------------------------------------------------------------------------------- - - Class: CStifTFwIfProt - - Method: ParseOptArgL - - Description: Parses optional argument - - Parameters: const TDesC& aOptArg: in: - argument-value pair (format arg=value) - TPtrC& aArg: out: parsed argument - TPtrC& aVal: out: parsed value - - Return Values: KErrNone: Everything ok - Symbian OS error code: Not a valid optarg - - Errors/Exceptions: None - - Status: Draft - -------------------------------------------------------------------------------- -*/ -TInt CStifTFwIfProt::ParseOptArg( const TDesC& aOptArg, - TPtrC& aArg, - TPtrC& aVal ) - { - TInt length = aOptArg.Length(); - for( TInt i=0; i < length; i++) - { - // find the '=' sign - if( aOptArg[i] == '=' ) - { - if( i+1 >= length ) - { - return KErrArgument; - } - aArg.Set( aOptArg.Left( i ) ); - aVal.Set( aOptArg.Mid( i+1 ) ); - DEBUG3( _L( "arg '%S', val '%S'" ), - &aArg, &aVal ); - return KErrNone; - } - } - return KErrArgument; - - } - -// ================= OTHER EXPORTED FUNCTIONS ================================= -// None - -// End of File