williamr@4: // Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). williamr@4: // All rights reserved. williamr@4: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@4: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: // williamr@4: // Initial Contributors: williamr@4: // Nokia Corporation - initial contribution. williamr@4: // williamr@4: // Contributors: williamr@4: // williamr@4: // Description: williamr@4: // williamr@4: williamr@4: #ifndef BTBASEBAND_H williamr@4: #define BTBASEBAND_H williamr@4: williamr@4: /** williamr@4: @file williamr@4: @internalTechnology williamr@4: @released williamr@4: */ williamr@4: williamr@4: #include <e32base.h> williamr@4: #include <es_sock.h> williamr@4: #include <btsockaddr.h> williamr@4: #include <bttypes.h> williamr@4: #include <btbasebandpolicy.h> williamr@4: #include <bluetooth/lmoptions.h> williamr@4: williamr@4: NONSHARABLE_CLASS(RBTBaseband) williamr@4: /** API useful for Bluetooth as seen from a single physical link perspective williamr@4: @internalTechnology williamr@4: @released williamr@4: WARNING: For internal use ONLY. Compatibility is not guaranteed in future releases. williamr@4: */ williamr@4: { williamr@4: public: williamr@4: RBTBaseband(); williamr@4: //API useful for Bluetooth as seen from a single physical link perspective williamr@4: TInt Open(RSocketServ& aSocketServ, RSocket& aSocket); williamr@4: TInt Open(RSocketServ& aSocketServ, const TBTDevAddr& aDevAddr); williamr@4: void Close(); williamr@4: TInt PhysicalLinkState(TUint32& aState); williamr@4: TInt BasebandState(TUint32& aState); williamr@4: TInt PreventRoleSwitch(); williamr@4: TInt AllowRoleSwitch(); williamr@4: TInt RequestMasterRole(); williamr@4: TInt RequestSlaveRole(); williamr@4: TInt PreventLowPowerModes(TUint32 aLowPowerModes); williamr@4: TInt AllowLowPowerModes(TUint32 aLowPowerModes); williamr@4: TInt ActivateSniffRequester(); williamr@4: TInt ActivateParkRequester(); williamr@4: TInt CancelLowPowerModeRequester(); williamr@4: TInt RequestExplicitActiveMode(TBool aActive); williamr@4: TInt RequestChangeSupportedPacketTypes(TUint16 aPacketTypes); williamr@4: //THE TWO NOTIFY METHODS BELOW MUST NOT BE CALLED CONCURRENTLY williamr@4: //Method to be used if only the next event should be notified williamr@4: void ActivateNotifierForOneShot(TBTBasebandEvent& aEventNotification, williamr@4: TRequestStatus& aStatus, williamr@4: TUint32 aEventMask); williamr@4: //Method to be used if it is intended to call it again williamr@4: //(or call CancelNextBasebandChangeEventNotifier) when it completes williamr@4: // - this sets up a continuous monitoring of events on the server. williamr@4: //Each time ActivateNotifierForOneShot is called it will either return williamr@4: //the next event in the servers notification queue or if the williamr@4: //queue is empty it will await the next event. williamr@4: void ActivateNotifierForRecall(TBTBasebandEvent& aEventNotification, williamr@4: TRequestStatus& aStatus, williamr@4: TUint32 aEventMask); williamr@4: void ReadNewPhysicalLinkMetricValue(TRequestStatus& aStatus, williamr@4: TDes8& aData, williamr@4: TBTLMIoctls aIoctl); williamr@4: void CancelPhysicalLinkMetricUpdate(); williamr@4: void CancelNextBasebandChangeEventNotifier(); williamr@4: TInt Authenticate(); williamr@4: williamr@4: //API useful for Bluetooth as seen from a device perspective williamr@4: TInt Open(RSocketServ& aSocketServ); williamr@4: void Connect(const TBTDevAddr& aDevAddr, TRequestStatus& aStatus); williamr@4: void Connect(const TPhysicalLinkQuickConnectionToken& aToken, TRequestStatus& aStatus); williamr@4: TInt Broadcast(const TDesC8& aData); // testing broadcast writes williamr@4: TInt ReadRaw(TDes8& aData); williamr@4: TInt Enumerate(RBTDevAddrArray& aBTDevAddrArray, TUint aMaxNumber); williamr@4: void TerminatePhysicalLink(TInt aReason); williamr@4: void TerminatePhysicalLink(TInt aReason, TRequestStatus& aStatus); williamr@4: void TerminatePhysicalLink(TInt aReason, const TBTDevAddr& aDevAddr, TRequestStatus& aStatus); williamr@4: void ShutdownPhysicalLink(TRequestStatus& aStatus); williamr@4: void TerminateAllPhysicalLinks(TInt aReason); williamr@4: void TerminateAllPhysicalLinks(TInt aReason, TRequestStatus& aStatus); williamr@4: TInt SubSessionHandle() const; williamr@4: williamr@4: private: williamr@4: TInt RequestRole(TBTLMOptions aRole); williamr@4: void LocalComplete(TRequestStatus& aStatus, TInt aErr); williamr@4: void SetClientPending(TRequestStatus& aStatus); williamr@4: void DoConnect(TRequestStatus& aStatus); williamr@4: TInt Enumerate(TDes8& aData); williamr@4: TInt Construct(); williamr@4: williamr@4: private: williamr@4: TAny* iUnusedPointer; williamr@4: RSocket iSocket; williamr@4: williamr@4: TRequestStatus* iClientRequestStatus; williamr@4: TBTSockAddr iSocketAddress; williamr@4: TPhysicalLinkQuickConnectionTokenBuf iConnectToken; williamr@4: TBuf8<1> iConnectInData; // not used yet - needed tho! williamr@4: TBuf8<1> iDummySCOShutdownDescriptor; williamr@4: williamr@4: // This data padding has been added to help prevent future binary compatibility breaks williamr@4: // Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used williamr@4: TUint32 iPadding1; williamr@4: TUint32 iPadding2; williamr@4: }; williamr@4: williamr@4: #endif // BTBASEBAND_H