--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/headsetsimulator/profiles/hfpprofile/inc/dataprocessing/hfpcommand.h Wed Sep 15 15:59:44 2010 +0200
@@ -0,0 +1,283 @@
+/*
+ *
+ * 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 HFPCOMMAND_H_
+#define HFPCOMMAND_H_
+
+#include <e32base.h>
+
+/** Profile helpful constants */
+_LIT8(KHsHFPCommandPrefix,"AT");
+_LIT8(KHsHFPCommandSuffix,"\r\n");
+_LIT8(KHsHFPBRSFCommand,"+BRSF");
+_LIT8(KHsHFPCIEVCommand,"+CIEV");
+_LIT8(KHsHFPCHUPCommand,"+CHUP");
+_LIT8(KHsHFPCINDCommand,"+CIND");
+_LIT8(KHsHFPCMERCommand,"+CMER");
+_LIT8(KHsHFPCOPSCommand,"+COPS");
+_LIT8(KHsHFPVGSCommand,"+VGS");
+_LIT8(KHsHFPVGMCommand,"+VGM");
+_LIT8(KHsHFPBLDNCommand,"+BLDN");
+_LIT8(KHsHFPCLIPCommand,"+CLIP");
+_LIT8(KHsHFPOKCommand,"\r\nOK\r\n");
+_LIT8(KHsHFPERRORCommand,"\r\nERROR\r\n");
+_LIT8(KHsHFPRINGCommand,"\r\nRING\r\n");
+_LIT8(KHsHFPATACommand,"ATA");
+_LIT8(KHsHFPATACommandWithoutPrefix,"A");
+_LIT8(KHsHFPATDCommand,"ATD");
+_LIT8(KHsHFPATDCommandWithoutPrefix,"D");
+_LIT8(KHsHFPParamsSeparator,",");
+_LIT8(KHsHFPCommandSeparator,"\r\n\r\n");
+_LIT8(KHsHFPIndicatorParamsSeparator,"),");
+_LIT8(KHsHFPATTestModeDes,"=?");
+_LIT8(KHsHFPATWriteModeDes,"=");
+_LIT8(KHsHFPATReadModeDes,"?");
+_LIT8(KHsHFPATTestModeDesAG,"=?");
+_LIT8(KHsHFPATWriteModeDesAG,": ");
+_LIT8(KHsHFPATReadModeDesAG,"?");
+
+/** Max size of HFP AT param */
+const TInt KHsHFPMaxATParamSize = 256;
+
+/** Max size of VGS or VGM param*/
+const TInt KHsHFPMaxVolumeLevelParamSize = 2;
+
+/**
+ * @brief Represents singular AT command parameter.
+ */
+class TATParam
+ {
+public:
+
+ /**
+ * Constructor
+ *
+ * @param aValue 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
+ */
+ TInt IntL() const;
+
+private:
+ /** Buffer for AT param */
+ TBuf8<KHsHFPMaxATParamSize> iValue;
+ };
+
+/** Array of AT params */
+typedef RArray<TATParam> RATParamArray;
+
+/** HFP AT commands types enum */
+enum THsHFPCommandType
+ {
+ EHFPCmdBRSF,
+ EHFPCmdCIEV,
+ EHFPCmdCHUP,
+ EHFPCmdOK,
+ EHFPCmdERROR,
+ EHFPCmdCIND,
+ EHFPCmdCMER,
+ EHFPCmdCOPS,
+ EHFPCmdRING,
+ EHFPCmdATA,
+ EHFPCmdVGS,
+ EHFPCmdVGM,
+ EHFPCmdBLDN,
+ EHFPCmdATD,
+ EHFPCmdCLIP,
+ EHFPCmdUnknown
+ };
+
+/** HFP AT commands modes enum */
+enum THsHFPCommandMode
+ {
+ /** = */
+ ECmdModeWrite,
+ /** ? */
+ ECmdModeRead,
+ /** =? */
+ ECmdModeTest,
+ /** empty without params */
+ ECmdModeNormal,
+ /** empty with params */
+ ECmdModeOther,
+ /** unknown mode - default */
+ ECmdUnknownMode
+ };
+
+/**
+ * @brief AT command representation
+ */
+class CHsHFPCommand : public CBase
+ {
+
+public:
+
+ /**
+ * Two-phased constructor.
+ *
+ * @return class instance
+ */
+ static CHsHFPCommand* NewL();
+
+ /**
+ * Two-phased constructor.
+ *
+ * @return class instance
+ */
+ static CHsHFPCommand* NewLC();
+
+ /**
+ * Destructor
+ */
+ ~CHsHFPCommand();
+
+public:
+ /**
+ * Sets type of AT command
+ *
+ * @param aType type
+ * @return KErrNone if successful, otherwise one of the system-wide error codes
+ */
+ TInt SetType(const THsHFPCommandType aType);
+
+ /**
+ * Sets mode of AT command
+ *
+ * @param aMode mode
+ * @return KErrNone if successful, otherwise one of the system-wide error codes
+ */
+ TInt SetMode(const THsHFPCommandMode aMode);
+
+ /**
+ * Sets params of AT command
+ *
+ * @param aParams array of params
+ * @return KErrNone if successful, otherwise one of the system-wide error codes
+ */
+ TInt SetParams(const RATParamArray& aParams);
+
+ /**
+ * Sets flag which denotes if AT command was sent from AG or HF
+ *
+ * @param aFromAG AT command source
+ */
+ void SetSource(const TBool aFromAG);
+
+ /**
+ * Returns the AT command as text
+ *
+ * @param aBuf on exit contains command as descriptor
+ */
+ void ToDes8(TDes8& aBuf) const;
+
+ /**
+ * Returns the AT command type
+ *
+ * @return type of command
+ */
+ THsHFPCommandType Type() const;
+
+ /**
+ * Returns the AT command mode
+ *
+ * @return mode of command
+ */
+ THsHFPCommandMode Mode() const;
+
+ /**
+ * Returns the AT command source
+ *
+ * @return flag that denotes if AT command was sent from AG or HF
+ */
+ TBool FromAG() const;
+
+ /**
+ * Returns the AT command params
+ *
+ * @return array of params
+ */
+ const RATParamArray& Params() const;
+
+ /**
+ * Clones CHsHFPCommand object
+ *
+ * @param aCmdFrom source
+ * @param aCmdTo destination
+ */
+ static void CopyL(const CHsHFPCommand& aCmdFrom, CHsHFPCommand& aCmdTo);
+
+private:
+ /**
+ * Constructor for performing 1st stage construction
+ */
+ CHsHFPCommand();
+
+ /**
+ * Constructor for performing 2nd stage construction
+ */
+ void ConstructL();
+
+private:
+
+ /** Granulity of AT params array */
+ const TInt KParamArrayGranularity = 3;
+
+ /** Max length of AT type descriptor */
+ const TInt KTypeDesMaxLength = 9;
+
+ /** Max length of AT mode descriptor */
+ const TInt KModeDesMaxLength = 3;
+
+ /** Max length of AT param descriptor */
+ const TInt KParamsDesMaxLength = 200;
+
+ /** Command type */
+ THsHFPCommandType iType;
+
+ /** Command mode */
+ THsHFPCommandMode iMode;
+
+ /** Denotes if AT command was sent from AG or HF */
+ TBool iFromAG;
+
+ /** Array of params */
+ RATParamArray iParams;
+
+ /** Command type as descriptor */
+ RBuf8 iTypeDes;
+
+ /** Command mode as descriptor */
+ RBuf8 iModeDes;
+
+ /** Command params as descriptor */
+ RBuf8 iParamsDes;
+ };
+
+#endif /* HFPCOMMAND_H_ */