diff -r 000000000000 -r 29b1cd4cb562 bthci/hci2implementations/hctls/ti/inc/hctlti.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bthci/hci2implementations/hctls/ti/inc/hctlti.h Fri Jan 15 08:13:17 2010 +0200 @@ -0,0 +1,128 @@ +// Copyright (c) 2006-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: +// + +/** + @file + @internalComponent +*/ + +#ifndef HCTLTI_H +#define HCTLTI_H + +#include "HCTLConfigInterface.h" + +#include +#include +#include + + +class CHCTLTiReceiver; +class CHCTLTiSender; +class CControllerManager; + +// Define HCTL Packet Header Size +static const TInt KHctlHeaderSize = 1; +static const TInt KHctlPacketTypeOffset = 0; + +// UART HCI Framing constants for command frames +static const TInt KHCTLCommandHeaderSize = 1; +static const TInt KHCTLCommandTrailerSize = 0; + +// UART HCI Framing constants for ACL data frames +static const TInt KHCTLAclDataHeaderSize = 1; +static const TInt KHCTLAclDataTrailerSize = 0; + +// UART HCI Framing constants for Synchronous data frames +static const TInt KHCTLSynchronousDataHeaderSize = 1; +static const TInt KHCTLSynchronousDataTrailerSize = 0; + +_LIT(KIniFileName, "hctl_ti"); + +/** +This is the class that implements the UART specific HCTL. +*/ +NONSHARABLE_CLASS(CHCTLTi) : public CHCTLUartBase, + public MHctlConfigInterface + { +public: + static CHCTLTi* NewL(); + ~CHCTLTi(); + + void DoConfigL(); + virtual void ProcessACLData(const TDesC8& aData); + virtual void ProcessSynchronousData(const TDesC8& aData); + virtual void ProcessEvent(const TDesC8& aEvent); + + MQdpPluginInterfaceFinder* QdpPluginInterfaceFinder(); + + // From MHardResetInitiator + virtual void MhriStartHardReset(); + + // From MHCTLConfigInterface + virtual TInt MhciUpdateBaudRate(TUint32 aBaudRate); + + // Called from the Controller Manager + void HandlePowerOff(); + void HandlePowerOn(); + + TBTPowerState CurrentPowerState() const; + +public: + // HCTL packet types as defined in Section 2, Part H: 4 of the + // bluetooth specification. + enum THctlPacketType + { + ECommandPacket = 0x01, + EACLDataPacket = 0x02, + ESynchronousDataPacket = 0x03, + EEventPacket = 0x04, + }; + +private: + CHCTLTi(); + void ConstructL(); + TAny* Interface(TUid aUid); + + static void SetPacketIndicator(THctlPacketType aType, const TDesC8& aData); + + // From CHCTLUartBase + virtual void PortOpenedL(); + + // From MHCTLInterface + virtual TInt MhiWriteCommand(const TDesC8& aData); + virtual TInt MhiWriteAclData(const TDesC8& aData); + virtual TInt MhiWriteSynchronousData(const TDesC8& aData); + virtual void MhiGetAclDataTransportOverhead(TUint& aHeaderSize, TUint& aTrailerSize) const; + virtual void MhiGetSynchronousDataTransportOverhead(TUint& aHeaderSize, TUint& aTrailerSize) const; + virtual void MhiGetCommandTransportOverhead(TUint& aHeaderSize, TUint& aTrailerSize) const; + virtual void MhiSetChannelObserver(MHCTLChannelObserver& aChannelObserver); + virtual void MhiSetDataObserver(MHCTLDataObserver& aDataObserver); + virtual void MhiSetEventObserver(MHCTLEventObserver& aEventObserver); + virtual void MhiSetControllerStateObserver(MControllerStateObserver& aControllerStateObserver); + virtual void MhiSetQdpPluginInterfaceFinder(MQdpPluginInterfaceFinder& aQdpPluginInterfaceFinder); + +private: + CHCTLTiReceiver* iReceiver; + CHCTLTiSender* iSender; + MQdpPluginInterfaceFinder* iQdpPluginInterfaceFinder; + TBTPowerState iCurrentPowerState; + + CControllerManager* iControllerMan; + DECLARE_HCI_LOGGER + }; + + +#endif // HCTLTI_H +