bluetooth/btextnotifiers/src/BTExtNotifiers.cpp
changeset 0 29b1cd4cb562
child 11 20fda83a6398
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetooth/btextnotifiers/src/BTExtNotifiers.cpp	Fri Jan 15 08:13:17 2010 +0200
@@ -0,0 +1,857 @@
+// Copyright (c) 2001-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:
+//
+
+#include <btextnotifiers.h>
+#include <bluetooth/logger.h>
+#include <btextnotifierspartner.h>
+
+#ifdef __FLOG_ACTIVE
+_LIT8(KLogComponent, LOG_COMPONENT_BTNOTIFIERS);
+#endif
+
+/**
+Constructor.
+Sets iValidDeviceClass and iValidUuid to EFalse.
+**/
+EXPORT_C TBTDeviceSelectionParams::TBTDeviceSelectionParams()
+	{
+	iValidDeviceClass=EFalse;
+	iValidUuid=EFalse;
+	}
+
+/**
+Sets the UUID to aUUID.
+@param aUUID "The UUID"
+**/
+EXPORT_C void TBTDeviceSelectionParams::SetUUID(const TUUID& aUUID)
+	{
+	iSdpUuid=aUUID;
+	iValidUuid=ETrue;
+	}
+
+/**
+Sets the device class to aClass.
+@param aClass "The device class"
+**/
+EXPORT_C void TBTDeviceSelectionParams::SetDeviceClass(TBTDeviceClass aClass)
+	{
+	iDeviceClass=aClass;
+	iValidDeviceClass=ETrue;
+	}
+
+/**
+Returns the UUID contained within these params.
+@return The UUID.  The reference will remain valid while this object is in scope.
+**/
+EXPORT_C const TUUID& TBTDeviceSelectionParams::UUID()
+	{
+	return iSdpUuid;
+	}
+
+/**
+Returns the device class contained within these params.
+@return The device class.
+**/
+EXPORT_C TBTDeviceClass TBTDeviceSelectionParams::DeviceClass()
+	{
+	return iDeviceClass;
+	}
+
+/**
+Returns ETrue if the device class has been set using SetDeviceClass(.).
+@return ETrue if the device class has been set, EFalse if not.
+**/
+EXPORT_C TBool TBTDeviceSelectionParams::IsValidDeviceClass()
+	{
+	return iValidDeviceClass;
+	}
+
+/**
+Returns ETrue if the UUID has been set using SetUUID(.).
+@return ETrue if the UUID has been set, EFalse if not.
+**/
+EXPORT_C TBool TBTDeviceSelectionParams::IsValidUUID()
+	{
+	return iValidUuid;
+	}
+
+/**
+Constructor.
+Sets iValidBDAddr, iValidDeviceName and iValidDeviceClass to EFalse;
+**/
+EXPORT_C TBTDeviceResponseParams::TBTDeviceResponseParams()
+	{
+	iValidBDAddr=EFalse;
+	iValidDeviceName=EFalse;
+	iValidDeviceClass=EFalse;
+	}
+
+/**
+Sets the device address to aBDAddr.
+@param aBDAddr "The device address"
+**/
+EXPORT_C void TBTDeviceResponseParams::SetDeviceAddress(const TBTDevAddr& aBDAddr)
+	{
+	iBDAddr=aBDAddr;
+	iValidBDAddr=ETrue;
+	}
+
+/**
+Sets the device name to aName.
+@param aName "The device name"
+**/
+EXPORT_C void TBTDeviceResponseParams::SetDeviceName(const TDesC& aName)
+	{
+	iDeviceName=aName;
+	iValidDeviceName=ETrue;
+	}
+
+/**
+Sets the device class to aClass.
+@param aClass "The device class"
+**/
+EXPORT_C void TBTDeviceResponseParams::SetDeviceClass(TBTDeviceClass aClass)
+	{
+	iDeviceClass=aClass;
+	iValidDeviceClass=ETrue;
+	}
+
+
+/**
+Returns the device address contained within these params.
+@return The device address.  The reference will be valid while this object is in scope.
+**/
+EXPORT_C const TBTDevAddr& TBTDeviceResponseParams::BDAddr() const
+	{
+	return iBDAddr;
+	}
+
+/**
+Returns the device name contained within these params.
+@return The device name. The reference will be valid while this object is in scope.
+**/
+EXPORT_C const TDesC& TBTDeviceResponseParams::DeviceName() const
+	{
+	return iDeviceName;
+	}
+
+/**
+Returns the device class contained within these params.
+@return The device class.
+**/
+EXPORT_C TBTDeviceClass TBTDeviceResponseParams::DeviceClass()
+	{
+	return iDeviceClass;
+	}
+
+/**
+Returns ETrue if the device address has been set using SetDeviceAddress.
+@return ETrue if the device address has been set, EFalse if not.
+**/
+EXPORT_C TBool TBTDeviceResponseParams::IsValidBDAddr() const
+	{
+	return iValidBDAddr;
+	}
+
+/**
+Returns ETrue if the device name has been set using SetDeviceName.
+@return ETrue if the device name has been set, EFalse if not.
+**/
+EXPORT_C TBool TBTDeviceResponseParams::IsValidDeviceName() const
+	{
+	return iValidDeviceName;
+	}
+
+/**
+Returns ETrue if the device class has been set using SetDeviceClass(.).
+@return ETrue if the device class has been set, EFalse if not.
+**/
+EXPORT_C TBool TBTDeviceResponseParams::IsValidDeviceClass()
+	{
+	return iValidDeviceClass;
+	}
+
+EXPORT_C TBTDeviceList::TBTDeviceList() :
+	iPtr(iDevices), iKNullDevAddr(MAKE_TINT64(0x0000, 0x00000000))
+/**
+
+*/
+	{
+	iDevices.Reset();
+	iPosition = 0;
+	}
+
+EXPORT_C TInt TBTDeviceList::AddDevice(const TBTDevAddr& aDevAddr)
+/**
+Add a new device to the list
+@note This always appends the new device to the end of the list
+@return KErrNone if successful; KErrOverflow if there is no space left in the array
+*/
+	{
+	for(TInt i=0; i < iDevices.Count(); ++i)
+		{
+		if(iDevices[i] == iKNullDevAddr)
+			{
+			iDevices[i] = aDevAddr;
+			return KErrNone;
+			}
+		}
+	return KErrOverflow;
+	}
+
+EXPORT_C TInt TBTDeviceList::GetDevice(TBTDevAddr& aDevAddr)
+/**
+Get the next device address from the list
+@note This method is stateful, and advances automatically to the next device address each time
+*/
+	{
+	if(iDevices[iPosition]!=iKNullDevAddr)
+		{
+		aDevAddr = iDevices[iPosition];
+		++iPosition;
+		return KErrNone;
+		}
+	else
+		{
+		return KErrEof;
+		}
+	}
+
+EXPORT_C void TBTDeviceList::Reset()
+/**
+Reset the contents of the array
+*/
+	{
+	iDevices.Reset();
+	iPosition = 0;
+	}
+	
+EXPORT_C TBTDeviceList::operator const TDesC8&() 
+	{
+	return iPtr;
+	}
+	
+EXPORT_C TBTDeviceList::operator TDes8&()
+	{
+	return iPtr;
+	}
+	
+EXPORT_C TUint TBTDeviceList::MaxNumberOfDevices()
+	{
+	return KMaxDevicesForSimultaneousSelection;
+	}
+
+/**
+Constructor.
+Sets iRealmTruncated, iValidRealm, iValidRemoteAddr to EFalse;
+**/
+EXPORT_C TPbapAuthNotifierParams::TPbapAuthNotifierParams()
+	{
+	iRealmTruncated = EFalse;
+	iValidRealm = EFalse;
+	iValidRemoteAddr = EFalse;
+	}
+
+/**
+Sets the realm to aRealm. If the length of aRealm is greater than the maximum
+length of iRealm then aRealm will be truncated.
+@param aRealm "The Realm"
+**/
+EXPORT_C void TPbapAuthNotifierParams::SetRealm(const TDesC& aRealm)
+	{
+	iRealm = aRealm.Left(KPbapAuthRealmLength);
+	iValidRealm = ETrue;
+	
+	// check if iRealm was truncated
+	iRealmTruncated = (aRealm.Length() > KPbapAuthRealmLength) ? ETrue : EFalse;
+	}
+
+/**
+Sets the remote device address to aBDAddr.
+@param aBDAddr "The remote device address"
+**/
+EXPORT_C void TPbapAuthNotifierParams::SetRemoteAddr(const TBTDevAddr& aBDAddr)
+	{
+	iRemoteAddr = aBDAddr;
+	iValidRemoteAddr = ETrue;
+	}
+
+/**
+Returns the realm contained within these params.
+@return The realm. The reference will be valid while this object is in scope.
+**/
+EXPORT_C const TDesC& TPbapAuthNotifierParams::Realm() const
+	{
+	return iRealm;
+	}
+
+/**
+Returns ETrue if the realm was truncated during call to SetRealm.
+@return ETrue if the realm was truncated during call to SetRealm, EFalse if not.
+**/
+EXPORT_C TBool TPbapAuthNotifierParams::RealmTruncated() const
+	{
+	return iRealmTruncated;
+	}
+
+/**
+Returns the remote device address contained within these params.
+@return The remote device address. The reference will be valid while this object is in scope.
+**/
+EXPORT_C const TBTDevAddr& TPbapAuthNotifierParams::RemoteAddr() const
+	{
+	return iRemoteAddr;
+	}
+
+/**
+Returns ETrue if the realm has been set.
+@return ETrue if the realm has been set, EFalse if not.
+**/
+EXPORT_C TBool TPbapAuthNotifierParams::IsValidRealm() const
+	{
+	return iValidRealm;
+	}
+
+/**
+Returns ETrue if the remote device address has been set.
+@return ETrue if the remote device address has been set, EFalse if not.
+**/
+EXPORT_C TBool TPbapAuthNotifierParams::IsValidRemoteAddr() const
+	{
+	return iValidRemoteAddr;
+	}
+
+
+/**
+Constructor.
+Sets iValidPassword to EFalse;
+**/
+EXPORT_C TPbapAuthNotifierResponse::TPbapAuthNotifierResponse()
+	{
+	iValidPassword = EFalse;
+	}
+
+/**
+Sets the password to aPassword. If the length of aPassword is greater than the maximum
+length of iPassword then the password will not be set and EFalse will be returned.
+@param aPassword "The Authentication Password"
+@return ETrue if the password was successfully set, EFalse if not.
+**/
+EXPORT_C TBool TPbapAuthNotifierResponse::SetPassword(const TDesC& aPassword)
+	{
+	if (aPassword.Length() <= KPbapAuthPasswordLength)
+		{
+		iPassword = aPassword;
+		iValidPassword = ETrue;
+		}
+	else
+		{
+		iPassword.Zero();
+		iValidPassword = EFalse;
+		}
+			
+	return iValidPassword;
+	}
+
+/**
+Clears any password contained within these params.
+**/
+EXPORT_C void TPbapAuthNotifierResponse::ResetPassword()
+	{
+	iPassword.Zero();
+	iValidPassword = EFalse;
+	}
+
+/**
+Returns the password contained within these params.
+@return The password. The reference will be valid while this object is in scope.
+**/
+EXPORT_C const TDesC& TPbapAuthNotifierResponse::Password() const
+	{
+	return iPassword;
+	}
+
+/**
+Returns ETrue if the password has been set.
+@return ETrue if the password has been set, EFalse if not.
+**/
+EXPORT_C TBool TPbapAuthNotifierResponse::IsValidPassword() const
+	{
+	return iValidPassword;
+	}
+
+
+//
+// TPanConnection
+//
+EXPORT_C TPanConnection::TPanConnection(TBTDevAddr& aRemoteDeviceAddress,
+				   			   			TBool aUplinkAccessAllowed)
+  : iRemoteDeviceAddress(aRemoteDeviceAddress),
+    iUplinkAccessAllowed(aUplinkAccessAllowed)
+    {
+    }
+
+EXPORT_C TPanConnection::TPanConnection()
+  : iRemoteDeviceAddress(0),
+    iUplinkAccessAllowed(EFalse)
+    {
+    }
+				   
+EXPORT_C const TBTDevAddr& TPanConnection::RemoteDeviceAddress() const
+	{
+	return iRemoteDeviceAddress;
+	}
+	
+EXPORT_C TBool TPanConnection::UplinkAccessAllowed() const
+	{
+	return iUplinkAccessAllowed;
+	}
+	
+EXPORT_C TBool TPanConnection::IsValid() const
+	{
+	// Check if the address is valid (0x0000 0000 0000 is not a valid address).
+	return (iRemoteDeviceAddress != 0);
+	}
+
+
+//
+// TPanConnectionList
+//
+EXPORT_C TPanConnectionList::TPanConnectionList()
+  : iPosition(0)
+  	{
+	}
+
+EXPORT_C void TPanConnectionList::AddRemoteConnectionL(const TPanConnection& aRemoteConnection)
+/**
+Add a new PAN connection to the list
+@note This always appends the new connection to the end of the list
+@leave KErrNone if successful; KErrOverflow if there is no space left in the array
+*/
+	{
+	TInt err = KErrOverflow;
+	for(TInt i=0;i<KMaxRemoteConnections;i++)
+		{
+		if(!iRemoteConnections[i].IsValid())
+			{
+			iRemoteConnections[i] = aRemoteConnection;
+			err = KErrNone;
+			break;
+			}
+		}
+		
+	User::LeaveIfError(err);
+	}
+
+EXPORT_C const TPanConnection* TPanConnectionList::GetNextRemoteConnection()
+/**
+Get the next device address from the list
+@note This method is stateful, and advances automatically to the next device address each time
+*/
+	{
+	TPanConnection* panConn = NULL;
+	if(iPosition < KMaxRemoteConnections && iRemoteConnections[iPosition].IsValid())
+		{
+		panConn = &iRemoteConnections[iPosition++];
+		}
+	return panConn;
+	}
+
+EXPORT_C const TPanConnection* TPanConnectionList::GetFirstRemoteConnection()
+	{
+	// Reset the internal state pointer to start from the begining of the array
+	iPosition = 0;
+	return GetNextRemoteConnection();
+	}
+
+EXPORT_C void TPanConnectionList::SetRequestedConnectionAddr(const TBTDevAddr& aRequestedConnectionAddr)
+	{
+	iRequestedConnectionAddr = aRequestedConnectionAddr;
+	}
+	
+EXPORT_C const TBTDevAddr* TPanConnectionList::RequestedConnectionAddr()
+	{
+	// Check if the address is valid (0x0000 0000 0000 is not a valid address).
+	if(iRequestedConnectionAddr != 0)
+		{
+		return &iRequestedConnectionAddr;
+		}
+	return NULL;
+	}
+
+EXPORT_C const TUUID& TPanConnectionList::CurrentLocalRole() const
+	{
+	return iCurrentLocalRole;
+	}
+	
+EXPORT_C void TPanConnectionList::SetCurrentLocalRole(const TUUID& aLocalRole)
+	{
+	iCurrentLocalRole = aLocalRole;
+	}
+	
+	
+EXPORT_C TUint8 TPanConnectionList::MaxNumberOfRemoteConnections()
+	{
+	return KMaxRemoteConnections;
+	}
+
+
+
+//
+// Standard Bluetooth Authentication Notifiers
+//
+
+
+//
+// TBTNotifierParams2
+//
+
+/**
+@internalTechnology
+*/
+TBTNotifierParams2::TBTNotifierParams2(const TBTDevAddr& aDevAddr, const TDesC& aDeviceName)
+	: iBDAddr(aDevAddr)
+	, iName(aDeviceName)
+	{
+	LOG_FUNC
+	}
+
+/**
+Default constructor.  Required to allow the class to be packaged with the TPckg family of classes.
+@internalTechnology
+*/
+TBTNotifierParams2::TBTNotifierParams2()
+	: iBDAddr(0)
+	, iName(KNullDesC)
+	{
+	LOG_FUNC
+	}
+
+/**
+@return The Bluetooth device address of remote device with which a notifier is associated with.
+*/
+EXPORT_C TBTDevAddr TBTNotifierParams2::DeviceAddress() const
+	{
+	LOG_FUNC
+	return iBDAddr;
+	}
+
+/**
+@return The device name of the remote device with which a notifier is associated with.
+*/
+EXPORT_C TPtrC TBTNotifierParams2::DeviceName() const
+	{
+	LOG_FUNC
+	return TPtrC(iName);
+	}
+
+
+//
+// TBTNumericComparisonParams
+//
+
+/**
+@internalTechnology
+*/
+EXPORT_C TBTNumericComparisonParams::TBTNumericComparisonParams(const TBTDevAddr& aDevAddr, const TDesC& aDeviceName, TUint32 aNumericalValue, TBTNumericComparisonParams::TComparisonScenario aComparisonScenario, TBool aLocallyInitiated)
+	: TBTNotifierParams2(aDevAddr, aDeviceName)
+	, iNumericalValue(aNumericalValue)
+	, iComparisonScenario(aComparisonScenario)
+	, iLocallyInitiated(aLocallyInitiated)
+	{
+	LOG_FUNC
+	}
+
+/**
+Default constructor.  Required to allow the class to be packaged with the TPckg family of classes.
+@internalTechnology
+*/
+EXPORT_C TBTNumericComparisonParams::TBTNumericComparisonParams()
+	: TBTNotifierParams2()
+	{
+	LOG_FUNC
+	}
+
+/**
+Accessor for the 6 digit decimal numeric value to be used for comparison. 
+@return The numeric value to display to the user for numeric comparison.
+*/
+EXPORT_C TUint32 TBTNumericComparisonParams::NumericalValue() const
+	{
+	LOG_FUNC
+	return iNumericalValue;
+	}
+
+/**
+Accessor for the enumeration that indicates the particular numeric comparison scenario 
+that the notifier is indicating.
+@return The scenario under which the numeric comparison will take place.
+*/
+EXPORT_C TBTNumericComparisonParams::TComparisonScenario TBTNumericComparisonParams::ComparisonScenario() const
+	{
+	LOG_FUNC
+	return iComparisonScenario;
+	}
+
+/**
+Accessor for indicating whether the numeric comparison process was initiated by a local request,
+or whether it was trigger by the remote device.
+@return EFalse if remote side initiated, otherwise it is locally initiated.
+*/
+EXPORT_C TBool TBTNumericComparisonParams::LocallyInitiated() const
+	{
+	LOG_FUNC
+	return iLocallyInitiated;
+	}
+
+
+//
+// TBTPasskeyDisplayParams
+//
+
+/**
+@internalTechnology
+*/
+EXPORT_C TBTPasskeyDisplayParams::TBTPasskeyDisplayParams(const TBTDevAddr& aDevAddr, const TDesC& aDeviceName, TUint32 aNumericalValue, TBool aLocallyInitiated)
+	: TBTNotifierParams2(aDevAddr, aDeviceName)
+	, iNumericalValue(aNumericalValue)
+	, iLocallyInitiated(aLocallyInitiated)
+	{
+	LOG_FUNC
+	}
+
+/**
+Default constructor.  Required to allow the class to be packaged with the TPckg family of classes.
+@internalTechnology
+*/
+EXPORT_C TBTPasskeyDisplayParams::TBTPasskeyDisplayParams()
+	: TBTNotifierParams2()
+	, iNumericalValue(0)
+	{
+	LOG_FUNC
+	}
+
+/**
+Accessor for the 6 digit decimal numeric value to be used for passkey entry. 
+@return The numeric value to display to the user for entry by the keyboard
+*/
+EXPORT_C TUint32 TBTPasskeyDisplayParams::NumericalValue() const
+	{
+	LOG_FUNC
+	return iNumericalValue;
+	}
+
+/**
+Accessor for indicating whether the passkey entry process was initiated by a local request,
+or whether it was trigger by the remote device.
+@return EFalse if remote side initiated, otherwise it is locally initiated.
+*/
+EXPORT_C TBool TBTPasskeyDisplayParams::LocallyInitiated() const
+	{
+	LOG_FUNC
+	return iLocallyInitiated;
+	}
+
+
+//
+// TBTPinCodeEntryNotifierParams
+//
+
+/**
+@internalTechnology
+*/
+EXPORT_C TBTPinCodeEntryNotifierParams::TBTPinCodeEntryNotifierParams(const TBTDevAddr& aDevAddr, const TDesC& aDeviceName, TUint aPinCodeMinLength, TBool aLocallyInitiated, TBool aStrongPinCodeRequired, TUint aRecommendedPinCodeMinLength)
+	: TBTNotifierParams2(aDevAddr, aDeviceName)
+	, iPinCodeMinLength(aPinCodeMinLength)
+	, iLocallyInitiated(aLocallyInitiated)
+	, iStrongPinCodeRequired(aStrongPinCodeRequired)
+	, iRecommendedPinCodeMinLength(aRecommendedPinCodeMinLength)
+	{
+	LOG_FUNC
+	}
+	
+
+/**
+Default constructor.  Required to allow the class to be packaged with the TPckg family of classes.
+@internalTechnology
+*/
+EXPORT_C TBTPinCodeEntryNotifierParams::TBTPinCodeEntryNotifierParams()
+	: TBTNotifierParams2()
+	{
+	LOG_FUNC
+	}
+
+/**
+Accessor for the minimum PIN code length that should be enter into this notifier. 
+@return The minimum PIN code length required.  0 means that there is no length requirement.
+*/
+EXPORT_C TUint TBTPinCodeEntryNotifierParams::PinCodeMinLength() const
+	{
+	LOG_FUNC
+	return iPinCodeMinLength;
+	}
+
+/**
+Accessor for the recommended minimum PIN code length that should be entered into this notifier. 
+This is based on the length of the PIN code used in the previous pairing operation (if available),
+and is always greater than or equal to the required minimum PIN code length (as given by PinCodeMinLength()).
+If the recommended minimum PIN code length is used, then the strength of the link key used in the previous
+pairing operation is at least maintained.
+@return The recommended minimum PIN code length.  0 means that there is no length requirement.
+*/
+EXPORT_C TUint TBTPinCodeEntryNotifierParams::RecommendedPinCodeMinLength() const
+	{
+	LOG_FUNC
+	return iRecommendedPinCodeMinLength;
+	}
+
+/**
+Accessor for indicating whether the PIN code entry process was initiated by a local request,
+or whether it was trigger by the remote device.
+@return EFalse if remote side initiated, otherwise it is locally initiated.
+*/
+EXPORT_C TBool TBTPinCodeEntryNotifierParams::LocallyInitiated() const
+	{
+	LOG_FUNC
+	return iLocallyInitiated;
+	}
+
+/**
+Accessor for determining if a strong PIN code is required.  It should be used by a notifier
+to ensure that a suitably strong PIN code is entered by the user.
+@return EFalse if a strong PIN code is not required, otherwise a strong PIN code should be entered if possible.
+*/
+EXPORT_C TBool TBTPinCodeEntryNotifierParams::StrongPinCodeRequired() const
+	{
+	LOG_FUNC
+	return iStrongPinCodeRequired;
+	}
+
+
+
+//
+// TBTNotifierUpdateParams2
+//
+
+/**
+@internalTechnology
+*/
+TBTNotifierUpdateParams2::TBTNotifierUpdateParams2(TBTNotifierUpdateParams2::TUpdateParamType aType)
+	: iType(aType)
+	{
+	LOG_FUNC
+	}
+
+/**
+Default constructor.  Required to allow the class to be packaged with the TPckg family of classes.
+@internalTechnology
+*/
+EXPORT_C TBTNotifierUpdateParams2::TBTNotifierUpdateParams2()
+	{
+	LOG_FUNC
+	}
+
+/**
+Accessor to determine the type of update parameter this instance is.  It should be used to determine
+what concrete update parameter type should be cast to.
+@return The type of update that is being made.
+*/
+EXPORT_C TBTNotifierUpdateParams2::TUpdateParamType TBTNotifierUpdateParams2::Type() const
+	{
+	LOG_FUNC
+	return iType;
+	}
+
+
+//
+// TBTDeviceNameUpdateParams
+//
+
+/**
+@internalTechnology
+*/
+EXPORT_C TBTDeviceNameUpdateParams::TBTDeviceNameUpdateParams(const TDesC& aDeviceName, TInt aResult)
+	: TBTNotifierUpdateParams2(TBTNotifierUpdateParams2::EDeviceName)
+	, iDeviceName(aDeviceName)
+	, iResult(aResult)
+	{
+	LOG_FUNC
+	}
+
+/**
+Default constructor.  Required to allow the class to be packaged with the TPckg family of classes.
+@internalTechnology
+*/
+EXPORT_C TBTDeviceNameUpdateParams::TBTDeviceNameUpdateParams()
+	: TBTNotifierUpdateParams2()
+	{
+	LOG_FUNC
+	}
+
+/**
+@return The device name of the remote device with which a notifier is associated with.
+*/
+EXPORT_C TPtrC TBTDeviceNameUpdateParams::DeviceName() const
+	{
+	LOG_FUNC
+	return TPtrC(iDeviceName);
+	}
+
+/**
+@return The result of the attempt to get the device name.
+*/
+EXPORT_C TInt TBTDeviceNameUpdateParams::Result() const
+	{
+	LOG_FUNC
+	return iResult;
+	}
+
+
+//
+// TBTPasskeyDisplayUpdateParams
+//
+
+/**
+@internalTechnology
+*/
+EXPORT_C TBTPasskeyDisplayUpdateParams::TBTPasskeyDisplayUpdateParams(THCIPasskeyEntryNotificationType aNotificationType)
+	: TBTNotifierUpdateParams2(TBTNotifierUpdateParams2::EPasskeyDisplay)
+	, iNotificationType(aNotificationType)
+	{
+	LOG_FUNC
+	}
+
+/**
+Default constructor.  Required to allow the class to be packaged with the TPckg family of classes.
+@internalTechnology
+*/
+EXPORT_C TBTPasskeyDisplayUpdateParams::TBTPasskeyDisplayUpdateParams()
+	: TBTNotifierUpdateParams2()
+	{
+	LOG_FUNC
+	}
+
+/**
+Accessor for the keypress notification type that this update type represents.  The use of these
+updates is to allow the UI to show the user the process of the entry of keypresses on a device with a
+numeric key board but no display. 
+@return The type of keypress notification that has been received from the remote device
+*/
+EXPORT_C THCIPasskeyEntryNotificationType TBTPasskeyDisplayUpdateParams::KeypressNotification() const
+	{
+	LOG_FUNC
+	return iNotificationType;
+	}
+