diff -r 000000000000 -r 63b37f68c1ce adaptationlayer/tsy/nokiatsy_dll/inc/tssparser.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/adaptationlayer/tsy/nokiatsy_dll/inc/tssparser.h Fri Nov 06 17:28:23 2009 +0000 @@ -0,0 +1,140 @@ +/* +* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* +*/ + + + +#ifndef TSSPARSER_H +#define TSSPARSER_H + +// INCLUDES +#include // isi message related functions +#include // SS ISI message definitions + +// CONSTANTS +// SS operation types +_LIT(KSsOperationErasure, "##" ); +_LIT(KSsOperationInterrogation, "*#" ); +_LIT(KSsOperationRegistration, "**" ); +_LIT(KSsOperationActivation, "*" ); +_LIT(KSsOperationDeactivation, "#" ); + +static const TInt SS_OPERATION_UNDEFINED( 0xFF ); +static const TInt SS_CODE_UNDEFINED( 0xFF ); +static const TInt MAX_NUM_OF_SUPPLEMENTARY_INFOS( 3 ); +// max length of service string (from 3GPP TS 22.030) +static const TInt MAX_LENGTH_OF_SERVICE_STRING( 40 ); + +// DATA TYPES +// +enum TCharacter + { + ECharacterSeparator = 0, // '*' + ECharacterEndMark, // '#' + ECharacterIllegal + }; + +// CLASS DECLARATION + +/** +* Parser class for SS service string received from client (SAT server): +* Parsers SS service string: operation, service code and service information +*/ +class TSsParser + { + + public: // New functions + + /** + * Constructor + */ + TSsParser(); + + /** + * Parses a SS string + * @param const TDesC& aServiceString: SS string to be parsed + * @return TInt: error + */ + TInt Parse( const TDesC& aServiceString ); + + /** + * Gets SS operation type + * @param TUint8& aSsOperation: SS operation type + * @return void + */ + void GetSsOperation( TUint8& aSsOperation ) const; + + /** + * Gets SS code + * @param TUint16& aServiceCode: SS code + * @return void + */ + void GetServiceCode( TUint16& aServiceCode ) const; + + /** + * Gets service infos a, b and c. If SS info does not exist, empty + * descriptor is returned + * @param TPtrC& aSupplementaryInfoA: SS info A + * @param TPtrC& aSupplementaryInfoB: SS info B + * @param TPtrC& aSupplementaryInfoC: SS info C + * @return void + */ + void GetServiceInfo( + TPtrC& aSupplementaryInfoA, + TPtrC& aSupplementaryInfoB, + TPtrC& aSupplementaryInfoC ) const; + + /** + * Converts descriptor to integer + * @param const TDesC& aString: descriptor to be converted + * @return TInt: converted value + */ + TInt GetInt( const TDesC& aString ); + + private: + + /** + * Extracts operation type from service string + * @return TUint8: operation type + */ + TUint8 ExtractSsOperation( ); + + /** + * Extracts parts from service string + * @return void + */ + void ExtractPart( TPtrC& aPart ); + + /** + * Extracts separator marks ( *, # ) from service string + * @return TCharacter: separator mark + */ + TCharacter ExtractSeparator( ); + + + private: // Data + + TUint8 iSsOperation; // operation type, e.g. activation + TUint16 iServiceCode; // supplementary service code + TPtrC iServiceString; // ss string to be parsed + TPtrC iSupplementaryInfoA; // service information A, defined in 3GPP TS 22-030 + TPtrC iSupplementaryInfoB; // service information B defined in 3GPP TS 22-030 + TPtrC iSupplementaryInfoC; // service information C, defined in 3GPP TS 22-030 + }; + +#endif // TSSPARSER_H + +// End of File