bluetoothengine/headsetsimulator/profiles/hfpprofile/inc/dataprocessing/hfpcommand.h
branchheadsetsimulator
changeset 60 90dbfc0435e3
--- /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_ */