diff -r 35488577e233 -r 2fa1fa551b0b telutils/phoneparser/src/CPhoneGsmSimControlParser.cpp --- a/telutils/phoneparser/src/CPhoneGsmSimControlParser.cpp Mon Aug 23 15:50:31 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,369 +0,0 @@ -/* -* Copyright (c) 2002 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: Parser for SIM control procedures. -* -*/ - - -// INCLUDE FILES -#include "cphonegsmsimcontrolparser.h" -#include "cphonegsmparserresult.h" -#include "cphonegsmoptioncontainer.h" - -// CONSTANTS -_LIT( KPhoneSimControlPinChangeCode, "04" ); -_LIT( KPhoneSimControlPin2ChangeCode, "042" ); -_LIT( KPhoneSimControlPinUnblockCode, "05" ); -_LIT( KPhoneSimControlPin2UnblockCode, "052" ); - -const TInt KPhoneSimControlPinMinLength = 4; -const TInt KPhoneSimControlPinMaxLength = 8; -const TInt KPhoneSimControlPukLength = 8; - -const TInt KPhoneSimControlAsterisk = '*'; -const TInt KPhoneSimControlHash = '#'; - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CPhoneGsmSimControlParser::CPhoneGsmSimControlParser -// ----------------------------------------------------------------------------- -// -CPhoneGsmSimControlParser::CPhoneGsmSimControlParser() - { - } - -// ----------------------------------------------------------------------------- -// CPhoneGsmSimControlParser::NewLC -// ----------------------------------------------------------------------------- -// -CPhoneGsmSimControlParser* CPhoneGsmSimControlParser::NewLC() - { - CPhoneGsmSimControlParser* self = - new ( ELeave ) CPhoneGsmSimControlParser; - - CleanupStack::PushL( self ); - - return self; - } - -// ----------------------------------------------------------------------------- -// CPhoneGsmSimControlParser::ParseL -// -// Parse sim control procedures. -// ----------------------------------------------------------------------------- -// -TBool CPhoneGsmSimControlParser::ParseL( - const TDesC& aString, - CPhoneGsmParserResult& aResult, - CPhoneGsmOptionContainerBase& aOptions ) - { - aResult.ClearL(); - - TBool sendOperation = aOptions.FindOptionStatus( KPhoneOptionSend ); - TBool incall = aOptions.FindOptionStatus( KPhoneOptionInCall ); - - TBool result = DoParseL( aString, aResult, sendOperation, incall ); - - if ( !result ) - { - aResult.ClearL(); - } - - return result; - } - -// ----------------------------------------------------------------------------- -// CPhoneGsmSimControlParser::DoParseL -// -// Parse sim control procedures. -// ----------------------------------------------------------------------------- -// -TBool CPhoneGsmSimControlParser::DoParseL( - const TDesC& aString, - CPhoneGsmParserResult& aResult, - TBool aSendOperation, - TBool /*aInCall*/ ) - { - TBool result = EFalse; - aResult.ClearL(); - - TLex input( aString ); - - if ( !aSendOperation ) - { - result = HandlePinOperationsL( input, aResult ); - } - - return result; - } - -// ----------------------------------------------------------------------------- -// CPhoneGsmSimControlParser::HandlePinOperationsL -// ----------------------------------------------------------------------------- -// -TBool CPhoneGsmSimControlParser::HandlePinOperationsL( - TLex& aInput, - CPhoneGsmParserResult& aResult ) - { - TBool result = EFalse; - TLexMark start; - aInput.Mark( start ); - - if ( HandlePinPrefix( aInput, aResult ) ) - { - TPtrC number( NextNumber( aInput ) ); - - if ( number == KPhoneSimControlPinChangeCode ) - { - aResult.SetUid( KPhoneUidPinChange ); - result = HandlePinChangeL( aInput, aResult ); - } - else if ( number == KPhoneSimControlPin2ChangeCode ) - { - aResult.SetUid( KPhoneUidPin2Change ); - result = HandlePinChangeL( aInput, aResult ); - } - else if ( number == KPhoneSimControlPinUnblockCode ) - { - aResult.SetUid( KPhoneUidPinUnblock ); - result = HandlePinUnblockL( aInput, aResult ); - } - else if ( number == KPhoneSimControlPin2UnblockCode ) - { - aResult.SetUid( KPhoneUidPin2Unblock ); - result = HandlePinUnblockL( aInput, aResult ); - } - } - - if ( !result ) - { - aResult.ClearL(); - aInput.UnGetToMark( start ); - } - - return result; - } - -// ----------------------------------------------------------------------------- -// CPhoneGsmSimControlParser::HandlePinPrefix -// ----------------------------------------------------------------------------- -// -TBool CPhoneGsmSimControlParser::HandlePinPrefix( - TLex& aInput, - CPhoneGsmParserResult& /*aResult*/ ) - { - TBool result = ETrue; - - TLexMark start; - aInput.Mark( start ); - - if ( aInput.Peek() != KPhoneSimControlAsterisk ) - { - result = EFalse; - } - else - { - aInput.Inc(); - - if ( aInput.Peek() != KPhoneSimControlAsterisk ) - { - result = EFalse; - } - else - { - aInput.Inc(); - } - } - - if ( !result ) - { - aInput.UnGetToMark( start ); - } - - return result; - } - -// ----------------------------------------------------------------------------- -// CPhoneGsmSimControlParser::HandlePinChangeL -// ----------------------------------------------------------------------------- -// -TBool CPhoneGsmSimControlParser::HandlePinChangeL( - TLex& aInput, - CPhoneGsmParserResult& aResult ) - { - TBool result = EFalse; - TLexMark start; - aInput.Mark( start ); - - result = HandlePinL( aInput, aResult ); - result = result && HandlePinL( aInput, aResult ); - result = result && HandlePinL( aInput, aResult ); - result = result && HandleNoParameters( aInput, aResult ); - - if ( !result ) - { - aInput.UnGetToMark( start ); - } - - return result; - } - -// ----------------------------------------------------------------------------- -// CPhoneGsmSimControlParser::HandlePinUnblockL -// ----------------------------------------------------------------------------- -// -TBool CPhoneGsmSimControlParser::HandlePinUnblockL( - TLex& aInput, - CPhoneGsmParserResult& aResult ) - { - TBool result = EFalse; - TLexMark start; - aInput.Mark( start ); - - result = HandlePukL( aInput, aResult ); - result = result && HandlePinL( aInput, aResult ); - result = result && HandlePinL( aInput, aResult ); - result = result && HandleNoParameters( aInput, aResult ); - - if ( !result ) - { - aInput.UnGetToMark( start ); - } - - return result; - } - -// ----------------------------------------------------------------------------- -// CPhoneGsmSimControlParser::HandleNoParameters -// ----------------------------------------------------------------------------- -// -TBool CPhoneGsmSimControlParser::HandleNoParameters( - TLex& aInput, - CPhoneGsmParserResult& /*aResult*/ ) - { - TBool result = EFalse; - - if ( aInput.Remainder().Length() == 1 && // single character - aInput.Peek() == KPhoneSimControlHash ) - { - result = ETrue; - aInput.Inc(); - } - - return result; - } - -// ----------------------------------------------------------------------------- -// CPhoneGsmSimControlParser::HandlePinL -// ----------------------------------------------------------------------------- -// -TBool CPhoneGsmSimControlParser::HandlePinL( - TLex& aInput, - CPhoneGsmParserResult& aResult ) - { - return HandleParameterL( - aInput, - aResult, - CPhoneGsmSimControlParser::ValidatePin ); - } - -// ----------------------------------------------------------------------------- -// CPhoneGsmSimControlParser::HandlePukL -// ----------------------------------------------------------------------------- -// -TBool CPhoneGsmSimControlParser::HandlePukL( - TLex& aInput, - CPhoneGsmParserResult& aResult ) - { - return HandleParameterL( - aInput, - aResult, - CPhoneGsmSimControlParser::ValidatePuk ); - } - -// ----------------------------------------------------------------------------- -// CPhoneGsmSimControlParser::HandleParameterL -// ----------------------------------------------------------------------------- -// -TBool CPhoneGsmSimControlParser::HandleParameterL( - TLex& aInput, - CPhoneGsmParserResult& aResult, - TParameterValidationFunction aFunc ) - { - TBool result = EFalse; - - TLexMark start; - aInput.Mark( start ); - - if ( aInput.Peek() == KPhoneSimControlAsterisk ) - { - aInput.Inc(); - - TPtrC password( NextNumber( aInput ) ); - - if ( aFunc( password ) ) - { - aResult.AddParameterL( password ); - result = ETrue; - } - } - - if ( !result ) - { - aInput.UnGetToMark( start ); - } - - return result; - } - - -// ----------------------------------------------------------------------------- -// CPhoneGsmSimControlParser::NextNumber -// ----------------------------------------------------------------------------- -// -TPtrC CPhoneGsmSimControlParser::NextNumber( - TLex& aInput ) - { - TLexMark start; - aInput.Mark( start ); - - while ( aInput.Peek().IsDigit() ) - { - aInput.Inc(); - } - - return aInput.MarkedToken( start ); - } - -// ----------------------------------------------------------------------------- -// CPhoneGsmSimControlParser::ValidatePin -// ----------------------------------------------------------------------------- -// -TBool CPhoneGsmSimControlParser::ValidatePin( const TDesC& aParam ) - { - return ( aParam.Length() >= KPhoneSimControlPinMinLength ) && - ( aParam.Length() <= KPhoneSimControlPinMaxLength ); - } - -// ----------------------------------------------------------------------------- -// CPhoneGsmSimControlParser::ValidatePuk -// ----------------------------------------------------------------------------- -// -TBool CPhoneGsmSimControlParser::ValidatePuk( const TDesC& aParam ) - { - return ( aParam.Length() == KPhoneSimControlPukLength ); - } - -// End of File