--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/omadcmoadapters/extmemctrl/src/extmemctrldcmoadapter.cpp Tue Jul 13 04:01:20 2010 +0530
@@ -0,0 +1,257 @@
+/*
+* Copyright (c) 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: ExtMemCtrl plug-in adapter for DCMO
+*
+*/
+
+
+#include <f32file.h>
+#include <driveinfo.h>
+#include <barsread.h>
+#include <barsc2.h>
+#include <f32file.h>
+#include <data_caging_path_literals.hrh>
+#include <DevManInternalCRKeys.h>
+#include <centralrepository.h>
+#include "extmemctrldcmoadapter.h"
+#include "hbtextresolversymbian.h"
+
+_LIT( KdcmoResourceFileName, "deviceupdates_" );
+_LIT( KdcmoResourceFilePath, "z:/resource/qt/translations/" );
+_LIT( KExtMemCtrlProperty, "ExternalMemory");
+_LIT( KExtMemCtrlDescription, "Used to enable/disable the ExtMem");
+
+
+// Construction and destruction functions
+
+// ----------------------------------------------------------------------------------------
+// CExtMemCtrlDCMOAdapter::NewL
+// ----------------------------------------------------------------------------------------
+CExtMemCtrlDCMOAdapter* CExtMemCtrlDCMOAdapter::NewL(TAny* aParams)
+ {
+ CExtMemCtrlDCMOAdapter* self=new(ELeave) CExtMemCtrlDCMOAdapter(aParams);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+// ----------------------------------------------------------------------------------------
+// CExtMemCtrlDCMOAdapter::~CExtMemCtrlDCMOAdapter
+// ----------------------------------------------------------------------------------------
+CExtMemCtrlDCMOAdapter::~CExtMemCtrlDCMOAdapter()
+ {
+ delete iProperty;
+ iProperty = NULL;
+ delete iDescription;
+ iDescription = NULL;
+ }
+
+// ----------------------------------------------------------------------------------------
+// CExtMemCtrlDCMOAdapter::CExtMemCtrlDCMOAdapter
+// ----------------------------------------------------------------------------------------
+CExtMemCtrlDCMOAdapter::CExtMemCtrlDCMOAdapter(TAny* aInitParams)
+: iInitParams((CDCMOInterface::TDCMOInterfaceInitParams*)aInitParams)
+ {
+ // See ConstructL() for initialisation completion.
+ }
+
+// ----------------------------------------------------------------------------------------
+// CExtMemCtrlDCMOAdapter::ConstructL
+// ----------------------------------------------------------------------------------------
+void CExtMemCtrlDCMOAdapter::ConstructL()
+{
+ // Safely complete the initialization of the constructed object
+ if(iInitParams->descriptor)
+ iProperty = (iInitParams->descriptor)->AllocL();
+ else
+ iProperty = KExtMemCtrlProperty().AllocL();
+ iDescription = KExtMemCtrlDescription().AllocL();
+}
+
+// Implementation of CDCMOInterface
+
+// ----------------------------------------------------------------------------------------
+// CExtMemCtrlDCMOAdapter::GetDCMOPluginIntAttributeValueL
+// Gets the integer attribute value.
+// ----------------------------------------------------------------------------------------
+TDCMOStatus CExtMemCtrlDCMOAdapter::GetDCMOPluginIntAttributeValueL(TDCMONode aId, TInt& aValue)
+{
+ TDCMOStatus status(EDcmoSuccess);
+ TInt err(KErrNone);
+
+ switch(aId)
+ {
+ case EGroup: {
+ aValue = EHardware;
+ }
+ break;
+ case EAttached: {
+ aValue = 0;
+ RFs fsMemoryCard;
+ err = fsMemoryCard.Connect();
+ if ( err != KErrNone )
+ {
+ status = EDcmoFail;
+ }
+ TDriveInfo dInfo;
+ TVolumeInfo vInfo;
+ TInt error = fsMemoryCard.Drive( dInfo, EDriveF );
+ if( error == KErrNone )
+ {
+ error = fsMemoryCard.Volume( vInfo, EDriveF );
+ if( error == KErrNone )
+ {
+ aValue = 1;
+ }
+ }
+ fsMemoryCard.Close();
+ }
+ break;
+ case EEnabled:{
+ RFs fsMemoryCard;
+ err = fsMemoryCard.Connect();
+ if ( err != KErrNone )
+ {
+ status = EDcmoFail;
+ }
+
+ TDriveInfo info;
+ err=fsMemoryCard.Drive(info, EDriveF);
+ // DBG_ARGS8( _S8("ExtMem err = %d info.iType = %d"), err, info.iType );
+
+ if (info.iType == EMediaNotPresent || err != KErrNone ||info.iType == EMediaUnknown )
+ {
+ aValue = 0;
+ }
+ else
+ {
+ aValue = 1;
+ }
+ fsMemoryCard.Close();
+ }
+ break;
+ case EDenyUserEnable: {
+ aValue = 1;
+ }
+ break;
+ case ENotifyUser: {
+ aValue = 1;
+ }
+ break;
+ default :
+ status = EDcmoNotFound;
+ }
+ return status;
+}
+
+// ----------------------------------------------------------------------------------------
+// CExtMemCtrlDCMOAdapter::GetDCMOPluginStrAttributeValueL
+// Gets the string attribute value.
+// ----------------------------------------------------------------------------------------
+TDCMOStatus CExtMemCtrlDCMOAdapter::GetDCMOPluginStrAttributeValueL(TDCMONode aId, TDes& aStrValue)
+{
+ TDCMOStatus status(EDcmoSuccess);
+ switch(aId)
+ {
+ case EProperty: aStrValue = *iProperty;
+ break;
+ case EDescription: aStrValue = *iDescription;
+ break;
+ default :
+ status = EDcmoNotFound;
+ }
+ return status;
+}
+
+// ----------------------------------------------------------------------------------------
+// CExtMemCtrlDCMOAdapter::SetDCMOPluginIntAttributeValueL
+// Sets the integer attribute value.
+// ----------------------------------------------------------------------------------------
+TDCMOStatus CExtMemCtrlDCMOAdapter::SetDCMOPluginIntAttributeValueL(TDCMONode aId, TInt aValue)
+{
+ TDCMOStatus status(EDcmoFail);
+ TInt err(KErrNone);
+
+ switch(aId)
+ {
+ case EDenyUserEnable:
+ break;
+ case ENotifyUser:
+ break;
+ case EEnable: {
+ RFs fsMemoryCard;
+ err = fsMemoryCard.Connect();
+ if ( err != KErrNone )
+ {
+ return status ;
+ }
+ TBuf<255> fsysname;
+ fsysname.Zero();
+ if (!aValue)
+ {
+ fsMemoryCard.FileSystemName(fsysname,EDriveF);
+ TRequestStatus stat;
+ fsMemoryCard.NotifyDismount(EDriveF, stat, EFsDismountForceDismount);
+ User::WaitForRequest(stat);
+ //err= fsMemoryCard.DismountFileSystem(fsysname, EDriveF);
+ //if (err == KErrNone)
+ status =EDcmoSuccess;
+ }
+ else
+ {
+ TInt err(fsMemoryCard.FileSystemName(fsysname,EDriveF));
+ if (err != KErrNone && !fsysname.Length())
+ {
+ _LIT( KFmgrFatFSName, "Fat" );
+ err = fsMemoryCard.MountFileSystem( KFmgrFatFSName, EDriveF );
+ }
+ status = EDcmoSuccess;
+ }
+ fsMemoryCard.Close();
+ CRepository *rep = NULL;
+ TRAPD( err1, rep = CRepository::NewL( KCRUidDeviceManagementInternalKeys )) ;
+ if(!err1)
+ rep->Set( KDevManMemCardCtrl, aValue );
+ delete rep;
+ rep = NULL;
+ }
+ break;
+ default :
+ status = EDcmoNotFound;
+ }
+ return status;
+}
+
+// ----------------------------------------------------------------------------------------
+// CExtMemCtrlDCMOAdapter::SetDCMOPluginStrAttributeValueL
+// Sets the string attribute value.
+// ----------------------------------------------------------------------------------------
+TDCMOStatus CExtMemCtrlDCMOAdapter::SetDCMOPluginStrAttributeValueL(TDCMONode /* aId */, const TDes& /* aStrValue */)
+{
+ // Nothing to do
+ TDCMOStatus status(EDcmoNotSupported);
+ return status;
+}
+
+// ----------------------------------------------------------------------------------------
+// CExtMemCtrlDCMOAdapter::GetLocalizedNameL
+// returns the localized plug-in name.
+// ----------------------------------------------------------------------------------------
+void CExtMemCtrlDCMOAdapter::GetLocalizedNameL (HBufC*& aLocName)
+{
+ TBool result = HbTextResolverSymbian::Init(KdcmoResourceFileName, KdcmoResourceFilePath );
+ _LIT(KTextExtMemory, "txt_device_update_info_external_memory_card");
+ aLocName = HbTextResolverSymbian::LoadL(KTextExtMemory);
+}