bthci/hci2implementations/corehcis/symbian/src/HciCorePluginImpl.cpp
author jontanne
Thu, 14 Oct 2010 11:30:12 +0100
changeset 53 83036355c0f3
parent 0 29b1cd4cb562
permissions -rw-r--r--
Add USB HCTL to bt package
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
53
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
     1
// Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
     2
// All rights reserved.
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
     3
// This component and the accompanying materials are made available
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
     5
// which accompanies this distribution, and is available
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
     7
//
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
     8
// Initial Contributors:
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
     9
// Nokia Corporation - initial contribution.
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    10
//
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    11
// Contributors:
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    12
//
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    13
// Description:
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    14
//
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    15
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    16
/**
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    17
 @file
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    18
 @internalComponent
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    19
*/
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    20
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    21
#include "HciCorePluginImpl.h"
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    22
#include "hciserver.h"
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    23
#include "hciserverrequestmgr.h"
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    24
#include "corehciutil.h"
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    25
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    26
#include <bluetooth/hci/hctlbase.h>
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    27
#include <bluetooth/hci/hctlinterface.h>
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    28
#include <bluetooth/hci/controllerinitialisationplugin.h>
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    29
#include <bluetooth/hci/controllerinitialisationinterface.h>
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    30
#include <bluetooth/hci/hctlpowerinterface.h>
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    31
#include <bluetooth/hci/hciframe.h>
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    32
#include <bluetooth/hci/aclpacketconsts.h>
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    33
#include <bluetooth/hci/hcidataobserver.h>
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    34
#include <bluetooth/hci/hciutil.h>
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    35
#include <bluetooth/hci/hciipc.h>
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    36
#include <bluetooth/hci/event.h>
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    37
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    38
#include <bluetooth/hcicommandqueue.h>
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    39
#include <bluetooth/logger.h>
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    40
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    41
#ifdef __FLOG_ACTIVE
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    42
_LIT8(KLogComponent, LOG_COMPONENT_COREHCI_SYMBIAN);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    43
#endif
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    44
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    45
_LIT(KHciUtilComponentName, "corehci_symbian");
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    46
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    47
/*static*/ CCoreHCIPluginImpl* CCoreHCIPluginImpl::NewL()
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    48
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    49
	LOG_STATIC_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    50
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    51
	CCoreHCIPluginImpl* p = new(ELeave) CCoreHCIPluginImpl;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    52
	CleanupStack::PushL(p);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    53
	p->ConstructL();
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    54
	CleanupStack::Pop();
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    55
	return p;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    56
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    57
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    58
void CCoreHCIPluginImpl::ConstructL()
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    59
/*
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    60
Start up the HCTL plugin, then the initialisation plugin.
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    61
*/
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    62
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    63
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    64
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    65
	// Create HCI Utility library
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    66
	iHciUtil = CHciUtil::NewL(KHciUtilComponentName);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    67
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    68
	// If we can't open the ini file then this will be treated in the same way
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    69
	// as not reading a valid UID from the ini file.
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    70
	TRAP_IGNORE(iHciUtil->OpenIniFileL());
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    71
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    72
	// Create Core HCI plugin
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    73
	_LIT(KSection, "Plugins");
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    74
	_LIT(KHCTLUid, "hctl_uid");
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    75
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    76
	TUid hctlImplUid = TUid::Null();
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    77
	TRAPD(err, hctlImplUid = iHciUtil->GetUidFromFileL(KSection, KHCTLUid));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    78
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    79
	if (err == KErrNone)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    80
		{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    81
		// Valid UID found, load it
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    82
		iHCTLPlugin = CHCTLBase::NewL(hctlImplUid);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    83
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    84
	else
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    85
		{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    86
		// No UID found in ini file, attempt to load single instance of 
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    87
		// implementation
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    88
		iHCTLPlugin = CHCTLBase::NewL();
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    89
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    90
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    91
	// Add this as the event observer.
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    92
	MHCTLInterface* hctl = static_cast<MHCTLInterface*>(iHCTLPlugin->Interface(TUid::Uid(KHCTLInterfaceUid)));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    93
	__ASSERT_ALWAYS(hctl, PANIC(KCoreHciPanicCat, EUninitialisedInterface));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    94
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    95
	iHCTLHardResetPerformer = static_cast<MHardResetInitiator*>(iHCTLPlugin->Interface(TUid::Uid(KHCHardResetUid)));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    96
	__ASSERT_ALWAYS(iHCTLHardResetPerformer, PANIC(KCoreHciPanicCat, EUninitialisedInterface));				
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    97
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    98
	// Setup observers on the HCTL.
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
    99
	hctl->MhiSetEventObserver(*this);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   100
	hctl->MhiSetChannelObserver(*this);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   101
	hctl->MhiSetDataObserver(*this);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   102
	hctl->MhiSetControllerStateObserver(*this);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   103
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   104
	// Create the initialisor. The initialisor is optional so don't worry if
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   105
	// we can't load it.
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   106
	_LIT(KInitialisorUid, "initialisation_uid");
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   107
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   108
	TUid initImplUid = TUid::Null();
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   109
	TRAP(err, initImplUid = iHciUtil->GetUidFromFileL(KSection, KInitialisorUid));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   110
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   111
	if (err == KErrNone)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   112
		{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   113
		// Valid UID found, load it
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   114
		iInitialisationPlugin = CControllerInitialisationPlugin::NewL(initImplUid);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   115
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   116
	else
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   117
		{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   118
		// No UID found in ini file, attempt to load single instance of 
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   119
		// implementation
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   120
		TRAP_IGNORE(iInitialisationPlugin = CControllerInitialisationPlugin::NewL());
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   121
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   122
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   123
	if(iInitialisationPlugin)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   124
		{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   125
		MControllerInitialisationInterface* initialisor = 
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   126
			static_cast<MControllerInitialisationInterface*>
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   127
				(iInitialisationPlugin->Interface(TUid::Uid(KControllerInitialisationInterfaceUid)));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   128
		
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   129
		__ASSERT_ALWAYS(initialisor, PANIC(KCoreHciPanicCat, EUninitialisedInterface));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   130
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   131
		initialisor->MciiSetCoreHci(*this);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   132
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   133
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   134
	iHCIServer = CHCIServer::NewL(*this);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   135
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   136
	// The power interface is not required so iHCTLPowerInterface can be NULL after
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   137
	// the following call. Check for NULL before using iHCTLPowerInterface elsewhere.
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   138
	iHCTLPowerInterface = static_cast<MHCTLPowerInterface*>(iHCTLPlugin->Interface(TUid::Uid(KHCTLPowerInterfaceUid)));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   139
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   140
	// Get the HCTL specific frame header and trailer octet sizes.
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   141
	hctl->MhiGetCommandTransportOverhead(iHCTLCommandHeaderSize, iHCTLCommandTrailerSize);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   142
	hctl->MhiGetAclDataTransportOverhead(iHCTLACLHeaderSize, iHCTLACLTrailerSize);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   143
	hctl->MhiGetSynchronousDataTransportOverhead(iHCTLSyncDataHeaderSize, iHCTLSyncDataTrailerSize);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   144
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   145
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   146
CCoreHCIPluginImpl::~CCoreHCIPluginImpl()
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   147
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   148
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   149
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   150
	//delete in the correct order
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   151
	delete iInitialisationPlugin;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   152
	delete iHCTLPlugin;	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   153
	delete iHCIServer;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   154
	delete iHciUtil;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   155
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   156
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   157
//Request hard reset from the stack - stack will do all the required preparation - such as notify QDP and so on, and call us back via MHardResetInitiator interface
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   158
void CCoreHCIPluginImpl::RequestHardResetFromStack()
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   159
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   160
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   161
	__ASSERT_ALWAYS(iStackHardResetRequester, PANIC(KCoreHciPanicCat, EUninitialisedInterface));	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   162
	iStackHardResetRequester->MhriStartHardReset();
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   163
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   164
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   165
// Set Power received from the HCI server
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   166
TInt CCoreHCIPluginImpl::SetPower(TBTPowerState aState, TDesC8* /*aBuf*/)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   167
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   168
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   169
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   170
	if(iHCTLPowerInterface)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   171
		{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   172
		return iHCTLPowerInterface->MhpiSetPower(aState);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   173
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   174
	else
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   175
		{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   176
		return KErrNotSupported;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   177
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   178
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   179
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   180
// Get Power received from the HCI server
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   181
TInt CCoreHCIPluginImpl::GetPower(TBTPowerState& aState, TDesC8* /*aBuf*/)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   182
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   183
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   184
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   185
	if(iHCTLPowerInterface)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   186
		{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   187
		return iHCTLPowerInterface->MhpiGetPower(aState);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   188
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   189
	else
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   190
		{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   191
		return KErrNotSupported;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   192
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   193
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   194
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   195
TAny* CCoreHCIPluginImpl::Interface(TUid aUid)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   196
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   197
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   198
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   199
	TAny* ret = NULL;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   200
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   201
	switch(aUid.iUid)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   202
		{		
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   203
	case KCoreHciInterfaceUid:
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   204
		{		
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   205
		ret = reinterpret_cast<TAny*>(static_cast<MCoreHci*>(this));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   206
		break;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   207
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   208
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   209
	case KHCIDataFramerInterfaceUid:
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   210
		{		
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   211
		ret = reinterpret_cast<TAny*>(static_cast<MHCIDataFramer*>(this));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   212
		break;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   213
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   214
		
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   215
	case KHCICommandAllocatorInterfaceUid:
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   216
		{		
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   217
		ret = reinterpret_cast<TAny*>(static_cast<MHCICommandAllocator*>(this));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   218
		break;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   219
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   220
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   221
	case KHCHardResetUid:
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   222
		{		
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   223
		ret = reinterpret_cast<TAny*>(static_cast<MHardResetInitiator*>(this));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   224
		break;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   225
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   226
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   227
	case KHCTLInterfaceUid:
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   228
		{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   229
		ret = iHCTLPlugin->Interface(aUid);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   230
		break;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   231
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   232
		
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   233
	case KControllerInitialisationInterfaceUid:
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   234
		{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   235
		if (iInitialisationPlugin != NULL)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   236
			{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   237
			ret = iInitialisationPlugin->Interface(aUid);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   238
			}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   239
		break;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   240
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   241
		
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   242
	case KHCIClientUsageCallbackUid:
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   243
		{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   244
		ret = reinterpret_cast<TAny*>(static_cast<MHCIClientUsageCallback*>(this));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   245
		break;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   246
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   247
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   248
	default:	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   249
		break;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   250
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   251
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   252
	return ret;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   253
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   254
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   255
void CCoreHCIPluginImpl::MhriStartHardReset()
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   256
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   257
	LOG_FUNC	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   258
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   259
	iHCTLHardResetPerformer->MhriStartHardReset();
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   260
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   261
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   262
CHctlCommandFrame* CCoreHCIPluginImpl::MhcaNewFrameL()
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   263
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   264
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   265
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   266
	return (CHctlCommandFrame::NewL(iHCTLCommandHeaderSize, iHCTLCommandTrailerSize));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   267
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   268
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   269
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   270
CHctlAclDataFrame* CCoreHCIPluginImpl::MhdfNewAclDataFrameL(TUint16 aSize)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   271
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   272
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   273
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   274
	return CHctlAclDataFrame::NewL(aSize, iHCTLACLHeaderSize, iHCTLACLTrailerSize);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   275
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   276
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   277
CHctlSynchronousDataFrame* CCoreHCIPluginImpl::MhdfNewSynchronousDataFrameL(TUint8 aSize)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   278
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   279
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   280
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   281
	return CHctlSynchronousDataFrame::NewL(aSize, iHCTLSyncDataHeaderSize, iHCTLSyncDataTrailerSize);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   282
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   283
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   284
/*virtual*/ void CCoreHCIPluginImpl::MhdfFormatAclData(CHctlAclDataFrame& aFrame, THCIConnHandle aConnH,
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   285
									TAclPacketBoundaryFlag aBoundaryFlag, TAclPacketBroadcastFlag aBroadcastFlag, 
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   286
									const TDesC8& aData)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   287
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   288
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   289
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   290
	THCIConnHandle handle = aConnH;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   291
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   292
	if(aBroadcastFlag != EPointToPointOnly)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   293
		{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   294
		handle = 0xbca; //TODO KHCIBroadcastHandle;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   295
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   296
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   297
	aFrame.SetConnectionHandle(handle);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   298
	aFrame.SetFlags(aBoundaryFlag, aBroadcastFlag);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   299
	aFrame.SetDataPayload(aData); // also sets DataLength
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   300
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   301
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   302
void CCoreHCIPluginImpl::MhdfFormatSynchronousData(CHctlSynchronousDataFrame& aFrame, 
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   303
												   THCIConnHandle aConnH, const TDesC8& aData)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   304
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   305
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   306
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   307
	THCIConnHandle handle = aConnH;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   308
	aFrame.SetConnectionHandle(handle);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   309
	aFrame.SetDataPayload(aData); // also sets DataLength
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   310
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   311
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   312
void CCoreHCIPluginImpl::MhdoProcessAclData(const TDesC8& aData)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   313
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   314
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   315
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   316
	TAclPacketBoundaryFlag pbFlag = CHctlAclDataFrame::PacketBoundaryFlag(aData);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   317
    TAclPacketBroadcastFlag bcFlag = CHctlAclDataFrame::PacketBroadcastFlag(aData);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   318
	THCIConnHandle handle = CHctlDataFrameBase::ConnectionHandle(aData);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   319
	iHCIDataObserver->MhdoProcessAclData(handle, pbFlag, bcFlag,
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   320
						aData.Right(aData.Length() - CHctlAclDataFrame::KHCIACLDataPacketHeaderLength));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   321
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   322
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   323
void CCoreHCIPluginImpl::MhdoProcessSynchronousData(const TDesC8& aData)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   324
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   325
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   326
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   327
	THCIConnHandle handle = CHctlDataFrameBase::ConnectionHandle(aData);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   328
	iHCIDataObserver->MhdoProcessSynchronousData(handle, 0,
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   329
						aData.Right(aData.Length() - CHctlSynchronousDataFrame::KHCISynchronousDataPacketHeaderLength));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   330
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   331
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   332
void CCoreHCIPluginImpl::MheoProcessEvent(const TDesC8& aEvent)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   333
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   334
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   335
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   336
	if (THCIEventBase::CreateAndSendEvent(aEvent, *iCommandEventObserver, *iDataEventObserver) != KErrNone)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   337
		{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   338
		// If we got an error processing the event, reset the controller
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   339
		RequestHardResetFromStack();
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   340
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   341
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   342
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   343
void CCoreHCIPluginImpl::McsoProcessPowerChange(TInt aError, TControllerChangeType aChangeType,
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   344
												TBTPowerState aState)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   345
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   346
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   347
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   348
	iHCIServer->PowerControlManager().CompleteRequest(aError);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   349
	iControllerStateObserver->McsoProcessPowerChange(aError, aChangeType, aState); //pass on up
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   350
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   351
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   352
void CCoreHCIPluginImpl::McsoProcessHardResetPhaseChange(TInt aError, TControllerChangeType aChangeType,
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   353
														 TBTHardResetState aState)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   354
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   355
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   356
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   357
	iControllerStateObserver->McsoProcessHardResetPhaseChange(aError, aChangeType, aState); //pass on up
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   358
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   359
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   360
TAny* CCoreHCIPluginImpl::MqpifQdpPluginInterface(const TUid aUid)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   361
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   362
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   363
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   364
	if(iHCICommandQueue)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   365
		{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   366
		return (iHCICommandQueue->MhcqQdpPluginInterface(aUid));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   367
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   368
		
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   369
	return NULL;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   370
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   371
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   372
TInt CCoreHCIPluginImpl::MchSetOption(TUint /*aName*/, const TDesC8& /*aData*/)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   373
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   374
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   375
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   376
	return KErrNotSupported;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   377
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   378
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   379
TInt CCoreHCIPluginImpl::MchGetOption(TUint /*aName*/, TDes8& /*aData*/)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   380
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   381
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   382
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   383
	return KErrNotSupported;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   384
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   385
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   386
void CCoreHCIPluginImpl::MchIoctl(TUint /*aLevel*/,TUint /*aName*/, TDes8* /*aOption*/, TAny* /*aStackSAP*/)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   387
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   388
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   389
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   390
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   391
void CCoreHCIPluginImpl::MchCancelIoctl(TUint /*aLevel*/,TUint /*aName*/, TAny* /*aStackSAP*/)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   392
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   393
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   394
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   395
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   396
void CCoreHCIPluginImpl::MchSetHCICommandQueue(MHCICommandQueue& aHCICommandQueue)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   397
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   398
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   399
	__ASSERT_DEBUG(!iHCICommandQueue, PANIC(KCoreHciPanicCat, EInterfaceAlreadyInitialised));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   400
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   401
	iHCICommandQueue = &aHCICommandQueue;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   402
	iHCIServer->DirectAccessManager().SetHCICommandQueue(*iHCICommandQueue);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   403
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   404
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   405
void CCoreHCIPluginImpl::MchSetPhysicalLinksState(MPhysicalLinksState& aPhysicalLinksState)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   406
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   407
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   408
	__ASSERT_DEBUG(!iPhysicalLinksState, PANIC(KCoreHciPanicCat, EInterfaceAlreadyInitialised));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   409
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   410
	iPhysicalLinksState = &aPhysicalLinksState;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   411
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   412
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   413
void CCoreHCIPluginImpl::MchSetHardResetInitiator(MHardResetInitiator& aHardResetInitiator)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   414
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   415
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   416
	__ASSERT_DEBUG(!iStackHardResetRequester, PANIC(KCoreHciPanicCat, EInterfaceAlreadyInitialised));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   417
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   418
	iStackHardResetRequester = &aHardResetInitiator;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   419
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   420
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   421
void CCoreHCIPluginImpl::MchSetDataEventObserver(MHCIDataEventObserver& aHCIDataEventObserver)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   422
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   423
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   424
	__ASSERT_DEBUG(!iDataEventObserver, PANIC(KCoreHciPanicCat, EInterfaceAlreadyInitialised));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   425
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   426
	iDataEventObserver = &aHCIDataEventObserver;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   427
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   428
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   429
void CCoreHCIPluginImpl::MchSetDataObserver(MHCIDataObserver& aHCIDataObserver)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   430
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   431
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   432
	__ASSERT_DEBUG(!iHCIDataObserver, PANIC(KCoreHciPanicCat, EInterfaceAlreadyInitialised));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   433
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   434
	iHCIDataObserver = &aHCIDataObserver;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   435
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   436
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   437
void CCoreHCIPluginImpl::MchSetCommandEventObserver(MHCICommandEventObserver& aHCICommandEventObserver)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   438
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   439
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   440
	__ASSERT_DEBUG(!iCommandEventObserver, PANIC(KCoreHciPanicCat, EInterfaceAlreadyInitialised));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   441
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   442
	iCommandEventObserver = &aHCICommandEventObserver;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   443
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   444
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   445
void CCoreHCIPluginImpl::MchSetChannelObserver(MHCTLChannelObserver& aHCIChannelObserver)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   446
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   447
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   448
	__ASSERT_DEBUG(!iHCTLChannelObserver, PANIC(KCoreHciPanicCat, EInterfaceAlreadyInitialised));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   449
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   450
	iHCTLChannelObserver = &aHCIChannelObserver;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   451
	// Inform observer of current state (if one is ready).
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   452
	if(iHCTLChannelState)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   453
		{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   454
		iHCTLChannelObserver->MhcoChannelOpen(iHCTLChannelState);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   455
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   456
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   457
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   458
void CCoreHCIPluginImpl::MchSetControllerStateObserver(MControllerStateObserver& aControllerStateObserver)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   459
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   460
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   461
	__ASSERT_DEBUG(!iControllerStateObserver, PANIC(KCoreHciPanicCat, EInterfaceAlreadyInitialised));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   462
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   463
	iControllerStateObserver = &aControllerStateObserver;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   464
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   465
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   466
TAny* CCoreHCIPluginImpl::MchHctlPluginInterface(const TUid aUid)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   467
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   468
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   469
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   470
	return iHCTLPlugin->Interface(aUid);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   471
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   472
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   473
void CCoreHCIPluginImpl::MhcoChannelOpen(THCITransportChannel aChannels)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   474
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   475
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   476
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   477
	iHCTLChannelState |= aChannels;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   478
	LOG1(_L("\tiHCTLChannelObserver = 0x%08x"), iHCTLChannelObserver)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   479
	if(iHCTLChannelObserver)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   480
		{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   481
		iHCTLChannelObserver->MhcoChannelOpen(aChannels);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   482
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   483
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   484
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   485
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   486
void CCoreHCIPluginImpl::MhcoChannelClosed(THCITransportChannel aChannels)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   487
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   488
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   489
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   490
	iHCTLChannelState &= ~aChannels;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   491
	LOG1(_L("\tiHCTLChannelObserver = 0x%08x"), iHCTLChannelObserver)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   492
	if(iHCTLChannelObserver)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   493
		{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   494
		iHCTLChannelObserver->MhcoChannelClosed(aChannels);
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   495
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   496
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   497
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   498
void CCoreHCIPluginImpl::MhcucSetClientUsage(MHCIClientUsage& aClientUsage)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   499
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   500
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   501
	__ASSERT_DEBUG(!iClientUsage, PANIC(KCoreHciPanicCat, EInterfaceAlreadyInitialised));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   502
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   503
	iClientUsage = &aClientUsage;
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   504
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   505
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   506
void CCoreHCIPluginImpl::OpenClientReference()
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   507
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   508
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   509
	__ASSERT_DEBUG(iClientUsage, PANIC(KCoreHciPanicCat, EUninitialisedInterface));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   510
	
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   511
	if (iClientUsage)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   512
		{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   513
		iClientUsage->MhcuOpenClientReference();
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   514
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   515
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   516
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   517
void CCoreHCIPluginImpl::CloseClientReference()
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   518
	{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   519
	LOG_FUNC
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   520
	__ASSERT_DEBUG(iClientUsage, PANIC(KCoreHciPanicCat, EUninitialisedInterface));
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   521
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   522
	if (iClientUsage)
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   523
		{
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   524
		iClientUsage->MhcuCloseClientReference();
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   525
		}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   526
	}
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   527
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   528
// EOF
83036355c0f3 Add USB HCTL to bt package
jontanne
parents: 0
diff changeset
   529