--- /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 <bluetooth/hci/hctluartbase.h>
+#include <bluetooth/hciframelogger.h>
+#include <bluetooth/hci/hcitypes.h>
+
+
+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
+