--- 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 <Accpolgenericidarray.h>
+#include <Accpolgenericid.h>
#include <e32svr.h> // 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