bluetoothengine/headsetsimulator/profiles/hfpprofile/inc/features/hfpfeaturemanager.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/headsetsimulator/profiles/hfpprofile/inc/features/hfpfeaturemanager.h Wed Sep 15 15:59:44 2010 +0200
@@ -0,0 +1,172 @@
+/*
+ *
+ * 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 HFFEATUREMANAGER_H_
+#define HFFEATUREMANAGER_H_
+
+#include "hfpfeaturecommons.h"
+#include "hfpsettings.h"
+
+class CHsHFPCommand;
+class CHsHFPConnectionManagement;
+class CHsHFPCallTerminationProc;
+class CHsHFPIncomingCallAcceptance;
+class CHsHFPIncomingCallRejection;
+class CHsHFPPhoneStatusInformation;
+class CHsHFPRemoteAudioVolumeControl;
+class CHsHFPLastNumberRedialing;
+class CHsHFPPhoneNumberDialing;
+class CHsHFPCallingLineIdentification;
+
+/**
+ * @brief Manages features supported by profile.
+ *
+ * Delegates data handling to appropriate procedure and holds current state.
+ */
+class CHsHFPFeatureManager : public CBase,
+ public MHsHFPFeatureProviderObserver
+ {
+public:
+ /**
+ * Two-phased constructor.
+ *
+ * @return instance of class
+ */
+ static CHsHFPFeatureManager* NewL();
+
+ /**
+ * Two-phased constructor.
+ *
+ * @return instance of class
+ */
+ static CHsHFPFeatureManager* NewLC();
+
+ /**
+ * Destructor
+ */
+ ~CHsHFPFeatureManager();
+
+public:
+ /**
+ * Decides which feature's procedure should be started.
+ *
+ * @param aATCommandIn input AT command
+ * @param aATCommandOut response
+ */
+ void PerformDataProcessingL(const CHsHFPCommand* aATCommandIn,
+ CHsHFPCommand& aATCommandOut);
+
+ /**
+ * Handles AG client disconnection event
+ *
+ * @param aErr disconnection reason
+ */
+ void HandleClientDisconnected(TInt aErr);
+
+ /**
+ * Handles AG client connection event
+ *
+ * @param aCommandOut AT response
+ */
+ void HandleClientConnectedL(TDes8& aCommandOut);
+
+public:
+ //Method inherited from MHsHFPFeatureProviderObserver
+ void HandleProcedureCompleted(TInt aErr);
+
+private:
+ /**
+ * Constructor for performing 1st stage construction
+ */
+ CHsHFPFeatureManager();
+
+ /**
+ * Constructor for performing 2nd stage construction
+ */
+ void ConstructL();
+
+ /**
+ * Handles OK command.
+ *
+ * @param aATCommandIn input AT command
+ * @param aATCommandOut response
+ */
+ void HandleOKCommandL(const CHsHFPCommand* aATCommandIn,
+ CHsHFPCommand& aATCommandOut);
+
+ /**
+ * Handles CIEV command and saves current value of appropriate indicator.
+ *
+ * @param aATCommandIn input AT command
+ * @param aATCommandOut response
+ */
+ void HandleCIEVCommandL(const CHsHFPCommand* aATCommandIn,
+ CHsHFPCommand& aATCommandOut);
+
+private:
+ /** HFP procedures */
+ enum THFPProcedures
+ {
+ EHFPServiceLevelConnectionEstablishment,
+ EHFPServiceLevelConnectionRelease,
+ EHFPCallTerminate,
+ EHFPCallAccept,
+ EHFPCallReject,
+ EHFPOperatorSelection,
+ EHFPVolumeControl,
+ EHFPLastNumberRedialing,
+ EHFPPhoneNumberDialing,
+ EHFPCallingLineIdentification,
+ EHFPIdle
+ };
+
+ /** Ongoing procedure */
+ THFPProcedures iProcedureStarted;
+
+ /** Denotes if service level connection is established */
+ TBool iSrvLvlConnEstablished;
+
+ /** Connection managment feature */
+ CHsHFPConnectionManagement* iConnectionManagement;
+
+ /** Terminate a call feature */
+ CHsHFPCallTerminationProc* iCallTermProc;
+
+ /** Accept an incoming voice call feature */
+ CHsHFPIncomingCallAcceptance* iCallAcceptProc;
+
+ /** Reject an incoming voice call feature */
+ CHsHFPIncomingCallRejection* iCallRejectProc;
+
+ /** Phone status information feature */
+ CHsHFPPhoneStatusInformation* iPhoneStatus;
+
+ /** Remote audio volume control feature */
+ CHsHFPRemoteAudioVolumeControl* iVolumeControl;
+
+ /** Place a call to the last number dialed feature */
+ CHsHFPLastNumberRedialing* iLastNumberRedialing;
+
+ /** Place a call with a phone number supplied by the HF feature */
+ CHsHFPPhoneNumberDialing* iPhoneNumberDialing;
+
+ /** Calling Line Identification feature */
+ CHsHFPCallingLineIdentification* iCallingLineIdentification;
+ };
+
+#endif /* HFFEATUREMANAGER_H_ */