bluetoothengine/btmac/inc/btmonocmdhandler/btmcprotocol.h
changeset 0 f63038272f30
child 2 0b192a3a05a4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btmac/inc/btmonocmdhandler/btmcprotocol.h	Mon Jan 18 20:28:57 2010 +0200
@@ -0,0 +1,186 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "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 BTMCPROTOCOL_H
+#define BTMCPROTOCOL_H
+
+#include <e32base.h>
+#include <etelmm.h>
+#include <btengdiscovery.h>
+#include "btmcactive.h"
+#include "btmcprofileid.h"
+#include "btmcprotdatabuf.h"
+#include "HfpAtCmdHandler.h"
+
+// forward declarations
+class CATCommand;
+class CATResult;
+class TBtmcProtocolStatus;   
+class MBtmcObserver;
+class MATExtObserver;
+class CBtmcMobileLine;
+class CBtmcPhoneStatus;
+class CBtmcCallStatus;
+class CBtmcNumber;
+class CBtmcOperator;
+class CBtmcCallingHandler;
+class TBtmcProtDataBuf;
+class CDesC8ArrayFlat;
+
+
+const TUint KBTHSRemoteAudioVolumeControl = 0x0302;
+
+NONSHARABLE_CLASS(CBtmcProtocol) : public CBase, 
+    public MBtmcActiveObserver, 
+    public MBTEngSdpResultReceiver, 
+    public MATExtObserver
+      {
+    public:
+        static CBtmcProtocol* NewL(
+            MBtmcObserver& aObserver, 
+            TBtmcProfileId aProfile,
+            const TDesC8& aBTDevAddr,
+            TBool aAccessoryInitiated);
+
+        ~CBtmcProtocol();
+        
+        /**
+        * Handle an AT command from HF or HS unit.
+        *
+        */
+        void NewProtocolDataL(const TDesC8& aData);
+
+        void SendResponseL(const CATResult& aResult);
+        
+        void SendResponseL(const RPointerArray<CATResult>& aResults);
+        
+        void SendUnsoltResultL(const CATResult& aResult);
+        
+        void CmdHandlingCompletedL();
+        
+        TBtmcProtocolStatus& ProtocolStatus();
+        
+        void VoiceRecognitionError();
+        
+        void HandleNrecCompletedL(TInt aErr);
+
+        void ActivateRemoteVolumeControl();
+
+        void DeActivateRemoteVolumeControl();   
+
+        TInt GetRemoteSupportedFeature();
+
+        /**
+         * Tells if AT+CHLD command handling is in progress
+         */
+        TBool ActiveChldHandling() const;
+        
+    private:        
+        // from MBTEngSdpResultReceiver
+        void ServiceSearchComplete( const RSdpRecHandleArray& /*aResult*/, 
+		                                         TUint /*aTotalRecordsCount*/, TInt /*aErr*/ ) {}
+		
+        void AttributeSearchComplete( TSdpServRecordHandle /*aHandle*/, 
+		                                           const RSdpResultArray& /*aAttr*/, TInt /*aErr*/ ) {}
+		
+        void ServiceAttributeSearchComplete( TSdpServRecordHandle /*aHandle*/, 
+		                                                  const RSdpResultArray& /*aAttr*/, 
+		                                                  TInt /*aErr*/ );
+		
+		void DeviceSearchComplete( CBTDevice* /*aDevice*/, TInt /*aErr*/ ) {}
+
+        
+        // From MBtmcActiveObserver
+    
+        void RequestCompletedL(CBtmcActive& aActive, TInt aErr);
+        
+        void CancelRequest(TInt aServiceId);
+
+		// From MATExtObserver
+			
+        void ATExtHandleCommandCompletedL(TInt aErr, const TDesC8& aReply);
+        
+        void UnsolicitedResultFromATExtL(TInt aErr, const TDesC8& aAT);
+
+    private:
+        CBtmcProtocol(MBtmcObserver& aObserver);
+        
+        // 2nd phase construction, called by NewL()
+        void ConstructL(TBtmcProfileId aProfile, const TDesC8& aBTDevAddr, TBool aAccessoryInitiated);
+        
+        void DoHandleCommandL();
+                
+        void HandleTestCommandL(const CATCommand& aCmd);
+        
+        void HandleReadCommandL(const CATCommand& aCmd);
+        
+        void HandleWriteCommandL(const CATCommand& aCmd);
+        
+        void HandleActionCommandL(const CATCommand& aCmd);
+
+        void DoSendProtocolDataL();
+
+        void StartTimerL(TInt aService, TInt aTimeout);
+        
+        void StopTimer(TInt aService);
+
+        TBool ServiceLevelConnected() const;
+        
+        void SetIndicatorL(TInt aIndicator, TInt aValue);
+
+    private:
+        MBtmcObserver& iObserver;  // unowned
+        TBtmcProtocolStatus* iProtocolStatus; // owned
+        RTelServer iServer; // owned
+        RMobilePhone iPhone; // owned
+        CBtmcPhoneStatus* iPhoneStatus;// owned
+        CBtmcCallStatus* iCallStatus;// owned
+
+        CBtmcNumber* iNumber; // owned
+        CBtmcOperator* iOperator; // owned
+
+        CBtmcCallingHandler* iCallingHandler;
+        
+        // Service Level Connection
+        TInt iSlcMask;
+
+        RTimer iTimer;// owned
+        CBtmcActive* iTimerActive; // owned, SLC
+        
+        CBtmcActive* iEtelQuery; // owned
+        
+        CBtmcActive* iCmdHanldingActive;
+ 
+        CHFPAtCmdHandler* iAtExt;
+        
+        // buffer of incoming At commands
+        TBtmcProtDataBuf iInDataBuf;
+        TBool iHandleCmdPending;
+        CDesC8ArrayFlat* iOutgoPacketQueue; // owned
+        TInt iCredit; // How many commands are allowed to acc
+        TBool iVolumeSyncFromAccessory;
+        CBTEngDiscovery* iBteng; // for volume query
+        TBool iAccessoryInitiated; // who initiated the connection
+        RMobilePhone::TMobilePhoneIdentityV1 iIdentity; // holds IMEI etc
+        RMobilePhone::TMobilePhoneSubscriberId iId; // holds id
+        };
+
+#endif // BTMCPROTOCOL_H
+
+// End of File
+