diff -r 000000000000 -r f63038272f30 bluetoothengine/btsac/inc/btsaController.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetoothengine/btsac/inc/btsaController.h Mon Jan 18 20:28:57 2010 +0200 @@ -0,0 +1,254 @@ +/* +* Copyright (c) 2005 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: Declaration for CBTSAController class. This class is advertised +* to E-com framework (@see proxy.cpp) so that it loads this class when +* this plugin gets loaded. That is why this class implements the interface +* of the module (currently BT Accessory Server) which loads this plugin. Being +* main class, this class constructs other classes and also recieves callbacks, +* hence implementing their interfaces. +* +*/ + + +#ifndef BTSACONTROLLER_H +#define BTSACONTROLLER_H + + + +// INCLUDES + +// Implement Interface provided by 'BT Accessory Server' component. E-com framework +// uses this interface to load this plugin +#include +#include +#include "btsacdefs.h" +#include "btsacStreamerController.h" //MBTAudioAdaptationObserver +#include "btsacActiveObserver.h" //MBtsacActiveObserver + + +// CONSTANTS + +// DATA TYPES + +// FORWARD DECLARATIONS +class CBtsacState; +class CBTSACGavdp; +class CBTSACSEPManager; +class CBTSACStreamerController; + +// CLASS DECLARATION + +/** +* +* +* +*/ +NONSHARABLE_CLASS(CBTSAController) : public CBTAccPlugin, public MBTAudioAdaptationObserver, public MBtsacActiveObserver + { +public: // Constructors and destructor + + /** + * Two-phased constructor. + * After construction the instance is ready to serve requests. + * Also starts listening to incoming connections from BT Stereo + * audio accessories. + */ + static CBTSAController* NewL(TPluginParams& aParams); + + /** + * Destructor. + * Removes service and security registrations and stops listening to + * incoming connections. + */ + virtual ~CBTSAController(); + + /** + * State transition + * + * @since S60 v3.1 + * @param aState the next state to be entered. + */ + void ChangeStateL(CBtsacState* aState); + +public: + void ResetRemoteCache(); + void InitializeSEPManager(); + void CleanSockets(); + void StoreAccInfo(); + void DeleteAccInfo(); + TBool IsAccInfoAvailable(); + TInt AbortStream(); + + void NewAccessory(const TBTDevAddr& aBDAddr); + void DisconnectedFromRemote(const TBTDevAddr& aAddr, TInt aError ); + void AccessoryOpenedAudio(const TBTDevAddr& aBDAddr); + void AccessoryClosedAudio(const TBTDevAddr& aBDAddr); + void AccessorySuspendedAudio(const TBTDevAddr& aBDAddr); + void CompletePendingRequests(TUint aCompleteReq, TInt aError); + + void SetRemoteAddr(const TBTDevAddr& aRemoteAddr); + TBTDevAddr GetRemoteAddr() const; + TBool IsOpenAudioReqFromAccFWPending() const; + void SetSEPIndex(TInt aIndex); + TInt GetSEPIndex() const; + void SetResetAudioInput(TBool aReset); + TBool GetResetAudioInput() const; + CBtsacActive* GetGavdpErrorActive() const; + void GAVDP_Error(TInt aError) ; + +private: + + /** + * C++ default constructor. + */ + CBTSAController(TPluginParams& aParams); + + /** + * Symbian 2nd phase constructor. + * Starts listening to incoming connections from BT Stereo + * audio accessories. + * Gets ready to accept requests from clients. + */ + void ConstructL(/*TPluginParams& aParams*/); + +public: // From MBTAudioAdaptationObserver + + virtual void NotifyError(TInt aError); + +private: // Functions from CBTAccPlugin + + /** + * BT Acc Server learns if plugin supports mono audio or not + * while loading the plugin + @param None. + @return ETrue if plugin supports mono audio, TFalse otherwise. + */ + virtual TProfiles PluginType(); + + /** + * Called by BT Acc Sever to connect to mono or stereo accessory + * @param aAddr Bluetooth Device address of the remote device + * @return result of operation + */ + virtual void ConnectToAccessory(const TBTDevAddr& aAddr, TRequestStatus& aStatus); + + /** + * Called by BT Acc Sever to connect to mono or stereo accessory + * @param aAddr Bluetooth Device address of the remote device + * @return result of operation + */ + virtual void CancelConnectToAccessory(const TBTDevAddr& aAddr); + + /** + * Called by BT Acc Sever to connect to mono or stereo accessory + * @param aAddr Bluetooth Device address of the remote device + * @return result of operation + */ + virtual void DisconnectAccessory(const TBTDevAddr& aAddr, TRequestStatus& aStatus); + + /** + * Called by BT Acc Sever to open audio link + * @param aAddr Bluetooth Device address of the remote device + * @return result of operation + */ + virtual void OpenAudioLink(const TBTDevAddr& aAddr, TRequestStatus& aStatus); + + /** + * Called by BT Acc Sever to cancel opening of audio link + @param aAddr Bluetooth Device address of the remote device + @return result of operation + */ + void CancelOpenAudioLink(const TBTDevAddr& aAddr ); + + /** + * Called by BT Acc Sever to connect to mono or stereo accessory + @param aAddr Bluetooth Device address of the remote device + @return result of operation + */ + void CloseAudioLink(const TBTDevAddr& aAddr, TRequestStatus& aStatus); + + /** + * Called by BT Acc Sever to cancel closing of audio link + @param aAddr Bluetooth Device address of the remote device + @return + */ + void CancelCloseAudioLink(const TBTDevAddr& aAddr ); + + /** + * BTAccServer informs BTSAC to start streaming after getting permission + * from Acc Fw + */ + virtual void StartRecording(); + + /* + * Defaults from MBtsacActiveObserver + */ + /** + * Handles the request completion event. + * + * @since S60 v3.1 + * @param aActive the Active Object to which the request is assigned to. + */ + virtual void RequestCompletedL(CBtsacActive& aActive); + + /** + * Handles the cancellation of an outstanding request. + * + * @since S60 v3.1 + * @param aActive the Active Object to which the request is assigned to. + */ + virtual void CancelRequest(CBtsacActive& aActive); + + +private: + + /** + * Called by BT Acc Sever to inform plugin that accessory is in use. + @param None. + @return None. + */ + virtual void AccInUse(); + +public: // Data + CBTSACGavdp* iGavdp; + CBTSACStreamerController* iStreamer; + CBTSACSEPManager* iLocalSEPs; + CBTSACSEPManager* iRemoteSEPs; + RArray iStreamingSockets; + +private: // Data + /** + * the current state. + */ + CBtsacState* iState; + + /** + * AO for handling gavdp errors. + */ + CBtsacActive* iGavdpErrorActive; + + TBTDevAddr iRemoteAddr; + TInt iSBCSEPIndex; // SBC SEP Index in iRemoteSEPs array + TBool iResetAudioInput; + TRequestStatus* iConnectStatus; + TRequestStatus* iDisconnectStatus; + TRequestStatus* iOpenAudioStatus; + TRequestStatus* iCloseAudioStatus; + RPointerArray iAccDb; // one SEP manager for each accessory + }; + + +#endif // BTSAC_CONTROLLER_H + +// End of File \ No newline at end of file