diff -r 76883296a0d5 -r 11a052f4b02e coreapplicationuis/SysAp/Src/SysApAccessoryObserver.cpp --- a/coreapplicationuis/SysAp/Src/SysApAccessoryObserver.cpp Tue Jul 06 14:26:20 2010 +0300 +++ b/coreapplicationuis/SysAp/Src/SysApAccessoryObserver.cpp Wed Aug 18 09:58:19 2010 +0300 @@ -20,6 +20,8 @@ #include "SysApAccessoryObserver.h" #include "SysAp.hrh" #include "SysApAppUi.h" +#include +#include #include // RDebug @@ -59,6 +61,7 @@ TRACES( RDebug::Print( _L("CSysApAccessoryObserver::~CSysApAccessoryObserver") ) ); Cancel(); iAccessoryMode.CloseSubSession(); + iAccessoryConnection.CloseSubSession(); iAccessoryServer.Close(); } @@ -92,9 +95,51 @@ TRACES( RDebug::Print( _L("CSysApAccessoryObserver::ConstructL(): iAccMode.iAccessoryMode=%d" ), iAccMode.iAccessoryMode ) ); iPreviousMode = iAccMode.iAccessoryMode; } + TRACES( RDebug::Print( _L("CSysApAccessoryObserver::ConstructL(): trying RAccessoryConnection::CreateSubSession" ) ) ); + err = iAccessoryConnection.CreateSubSession( iAccessoryServer ); + if ( err == KErrNone ) + { + TRACES( RDebug::Print( _L("CSysApAccessoryObserver::ConstructL(): connection to RAccessoryConnection established" ) ) ); + TAccPolGenericIDArray iAccGenericIDArray; + err = iAccessoryConnection.GetAccessoryConnectionStatus( iAccGenericIDArray ); + if ( err == KErrNone ) + { + TInt iIndex = 0; + TAccPolGenericID iAccGenericID = iAccGenericIDArray.GetGenericIDL( iIndex ); + TUint iPhysicalConnection = iAccGenericID.PhysicalConnectionCaps(); + if (iPhysicalConnection & KPCWired) + { + iPhysicalConnectionType = KPCWired; + } + else if (iPhysicalConnection & KPCBluetooth) + { + iPhysicalConnectionType = KPCBluetooth; + } + else if (iPhysicalConnection & KPCInfraRed) + { + iPhysicalConnectionType = KPCInfraRed; + } + else if (iPhysicalConnection & KPCUSB) + { + iPhysicalConnectionType = KPCUSB; + } + else if (iPhysicalConnection & KPCHDMI) + { + iPhysicalConnectionType = KPCHDMI; + } iAccessoryMode.NotifyAccessoryModeChanged( iStatus, iAccMode ); SetActive(); + } + else + { + TRACES( RDebug::Print( _L("CSysApAccessoryObserver::ConstructL(): Error in Getting AccessoryConnectionStatus Error: %d " ),err ) ); + } + } + else + { + TRACES( RDebug::Print( _L("CSysApAccessoryObserver::ConstructL(): RAccessoryConnection::CreateSubSession - Error: %d" ), err ) ); + } } else { @@ -115,6 +160,7 @@ { TRACES( RDebug::Print( _L("CSysApAccessoryObserver::DoCancel()" ) ) ); iAccessoryMode.CancelNotifyAccessoryModeChanged(); + iAccessoryConnection.CancelGetAccessoryConnectionStatus(); } // ---------------------------------------------------------------------------- @@ -133,7 +179,37 @@ } else if ( iAccMode.iAccessoryMode != iPreviousMode ) // for filtering audio output change notifications { - iSysApAppUi.HandleAccessoryConnectedL( iAccMode.iAccessoryMode ); + TInt err( KErrNone ); + TAccPolGenericIDArray iAccGenericIDArray; + err = iAccessoryConnection.GetAccessoryConnectionStatus( iAccGenericIDArray ); + if ( err == KErrNone ) + { + TInt iIndex = 0; + TAccPolGenericID iAccGenericID = iAccGenericIDArray.GetGenericIDL( iIndex ); + TUint iPhysicalConnection = iAccGenericID.PhysicalConnectionCaps(); + if ( iPhysicalConnection & KPCWired ) + { + iPhysicalConnectionType = KPCWired; + } + else if ( iPhysicalConnection & KPCBluetooth ) + { + iPhysicalConnectionType = KPCBluetooth; + } + else if ( iPhysicalConnection & KPCInfraRed ) + { + iPhysicalConnectionType = KPCInfraRed; + } + else if ( iPhysicalConnection & KPCUSB ) + { + iPhysicalConnectionType = KPCUSB; + } + else if ( iPhysicalConnection & KPCHDMI ) + { + iPhysicalConnectionType = KPCHDMI; + } + } + TRACES( RDebug::Print( _L("CSysApAccessoryObserver::RunL: iAccessoryMode: %d, iPhysicalConnectionType: %d" ), iAccMode.iAccessoryMode,iPhysicalConnectionType ) ); + iSysApAppUi.HandleAccessoryConnectedL( iAccMode.iAccessoryMode,iPhysicalConnectionType ); } iPreviousMode = iAccMode.iAccessoryMode; @@ -168,6 +244,14 @@ return iAccMode.iAccessoryMode; } + +// ---------------------------------------------------------------------------- +// CSysApAccessoryObserver::GetAccessoryConnectionType() const +// ---------------------------------------------------------------------------- +TInt CSysApAccessoryObserver::GetAccessoryConnectionType() const + { + return iPhysicalConnectionType; + } // End of File