diff -r 02103bf20ee5 -r 90dbfc0435e3 bluetoothengine/headsetsimulator/profiles/hspprofile/inc/dataprocessing/hspcommand.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetoothengine/headsetsimulator/profiles/hspprofile/inc/dataprocessing/hspcommand.h Wed Sep 15 15:59:44 2010 +0200 @@ -0,0 +1,247 @@ +/* + * + * Copyright (c) <2010> Comarch S.A. 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". + * + * Original Contributors: + * Comarch S.A. - original contribution. + * + * Contributors: + * + * Description: + * + */ +#ifndef HSPCOMMAND_H_ +#define HSPCOMMAND_H_ + +#include + +/** Helpful constants */ +_LIT8(KHsHSPCommandPrefix,"AT"); +_LIT8(KHsHSPCommandSuffix,"\r\n"); +_LIT8(KHsHSPVGSCommand,"+VGS"); +_LIT8(KHsHSPVGMCommand,"+VGM"); +_LIT8(KHsHSPCKPDCommand,"+CKPD"); +_LIT8(KHsHSPOKCommand,"\r\nOK\r\n"); +_LIT8(KHsHSPERRORCommand,"\r\nERROR\r\n"); +_LIT8(KHsHSPRINGCommand,"\r\nRING\r\n"); +_LIT8(KHsHSPParamsSeparator,","); +_LIT8(KHsHSPIndicatorParamsSeparator,"),"); +_LIT8(KHsHSPCommandSeparator,"\r\n\r\n"); +_LIT8(KHsHSPATTestModeDes,"=?"); +_LIT8(KHsHSPATWriteModeDes,"="); +_LIT8(KHsHSPATReadModeDes,"?"); +_LIT8(KHsHSPATTestModeDesAG,"=?"); +_LIT8(KHsHSPATWriteModeDesAG,": "); +_LIT8(KHsHSPATReadModeDesAG,"?"); + +/** Max size of AT command's param */ +const TInt KHsHSPMaxATParamSize = 256; + +/** + * @brief TATParam represents singular AT command parameter. + */ +class TATParam +{ +public: + + /** + * Constructor + * + * @param aValue 8-bit param descriptor + */ + TATParam( const TDesC8& aValue ); + + /** + * Returns the parameter as text. + * @return the non-modifiable pointer descriptor + */ + const TDesC8& Des() const; + + /** + * Returns the paramater as integer value (if conversion is possible) + * + * @return integer value. If conversion is impossible then leave occures + */ + TInt IntL() const; + +private: + + /** Buffer for AT param */ + TBuf8 iValue; +}; + +/** Array of AT params */ +typedef RArray RATParamArray; + +/** HSP's supported commands */ +enum THsHSPCommandType +{ + /** OK */ + EHSPCmdOK, + /** ERROR */ + EHSPCmdERROR, + /** RING */ + EHSPCmdRING, + /** +VGS */ + EHSPCmdVGS, + /** +VGM */ + EHSPCmdVGM, + /** +CKPD */ + EHSPCmdCKPD, + /** Other (unsupported) command */ + EHSPCmdUnknown +}; + +/** AT command's mode */ +enum THsHSPCommandMode +{ + /** = */ + ECmdModeWrite, + /** ? */ + ECmdModeRead, + /** =? */ + ECmdModeTest, + /** empty without params */ + ECmdModeNormal, + /** empty with params */ + ECmdModeOther, + + ECmdUnknownMode +}; + +/** + * @brief AT command representation + */ +class CHsHSPCommand : public CBase +{ + +public: + + /** + * Two-phased constructor. + * + * @return class instance + */ + static CHsHSPCommand* NewL(); + + /** + * Two-phased constructor. + * + * @return class instance + */ + static CHsHSPCommand* NewLC(); + + /** + * Destructor + */ + ~CHsHSPCommand(); + +public: + + /** Sets command's type + * + * @param aType type + * @return error code + */ + TInt SetType( const THsHSPCommandType aType ); + + /** Sets command's mode + * + * @param aMode mode + * @return error code + */ + TInt SetMode( const THsHSPCommandMode aMode ); + + /** Sets command's params + * + * @param aParams array of params + * @return error code + */ + TInt SetParams( const RATParamArray& aParams ); + + /** Sets command's source + * + * @param aFromAG denotes if command sent by AG + */ + void SetSource( const TBool aFromAG ); + + /** + * Returns command as a 8-bit descriptor + * + * @param aBuf buffer + */ + void ToDes8( TDes8& aBuf ) const; + + /** Getter for command's type */ + THsHSPCommandType Type() const; + + /** Getter for command's mode */ + THsHSPCommandMode Mode() const; + + /** Getter for command's source - denotes if sent by AG */ + TBool FromAG() const; + + /** Getter for command's array of params */ + const RATParamArray Params() const; + + /** + * Clones CHsHSPCommand object + * + * @param aCmdFrom source + * @param aCmdTo destination + */ + static void CopyL( const CHsHSPCommand* aCmdFrom, CHsHSPCommand& aCmdTo ); + +private: + /** + * Constructor for performing 1st stage construction + */ + CHsHSPCommand(); + + /** + * Constructor for performing 2nd stage construction + */ + void ConstructL(); + +private: + + /** Param array's granularity */ + const TInt KParamArrayGranularity = 3; + + /** Max length of command's type represented as descriptor */ + const TInt KTypeDesMaxLength = 9; + + /** Max length of command's mode represented as descriptor */ + const TInt KModeDesMaxLength = 3; + + /** Max length of command's params represented as descriptor */ + const TInt KParamsDesMaxLength = 200; + + /** Command's type */ + THsHSPCommandType iType; + + /** Command's mode */ + THsHSPCommandMode iMode; + + /** Command's source. Denotes if command was sent from AG */ + TBool iFromAG; + + /** Command's params */ + RATParamArray iParams; + + /** Command's type as a descriptor */ + RBuf8 iTypeDes; + + /** Command's mode as a descriptor */ + RBuf8 iModeDes; + + /** Command's params as a descriptor */ + RBuf8 iParamsDes; +}; + +#endif /* HSPCOMMAND_H_ */