mtpfws/mtpfw/dataproviders/devdp/src/cmtpresetdevicepropvalue.cpp
changeset 0 d0791faffa3f
child 4 60a94a45d437
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mtpfws/mtpfw/dataproviders/devdp/src/cmtpresetdevicepropvalue.cpp	Tue Feb 02 01:11:40 2010 +0200
@@ -0,0 +1,283 @@
+// Copyright (c) 2006-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 <mtp/cmtptypestring.h>
+#include <mtp/mmtpdataproviderframework.h>
+#include <mtp/mtpprotocolconstants.h>
+#include <mtp/tmtptyperequest.h>
+#include <mtp/mtpdatatypeconstants.h>
+#include <mtp/mmtpframeworkconfig.h>
+#include <centralrepository.h>
+
+#include "cmtpdevicedatastore.h"
+#include "cmtpresetdevicepropvalue.h"
+#include "mtpdevicedpconst.h"
+#include "mtpdevdppanic.h"
+
+// Class constants.
+__FLOG_STMT(_LIT8(KComponent,"ResetDevicePropValue");)
+
+/**
+Two-phase constructor.
+@param aPlugin  The data provider plugin
+@param aFramework The data provider framework
+@param aConnection The connection from which the request comes
+@return a pointer to the created request processor object.
+*/  
+MMTPRequestProcessor* CMTPResetDevicePropValue::NewL(MMTPDataProviderFramework& aFramework, MMTPConnection& aConnection)
+    {
+    CMTPResetDevicePropValue* self = new (ELeave) CMTPResetDevicePropValue(aFramework, aConnection);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+/**
+Destructor
+*/    
+CMTPResetDevicePropValue::~CMTPResetDevicePropValue()
+    {    
+    __FLOG(_L8("~CMTPResetDevicePropValue - Entry"));
+        iDpSingletons.Close();
+        delete iData;
+        delete iRepository;
+    __FLOG(_L8("~CMTPResetDevicePropValue - Exit"));
+    __FLOG_CLOSE;
+    }
+
+/**
+Standard c++ constructor
+*/    
+CMTPResetDevicePropValue::CMTPResetDevicePropValue(MMTPDataProviderFramework& aFramework, MMTPConnection& aConnection) :
+ CMTPRequestProcessor(aFramework, aConnection, 0, NULL)
+    {
+    
+    }
+    
+/**
+Second-phase construction
+*/    
+void CMTPResetDevicePropValue::ConstructL()
+    {
+    __FLOG_OPEN(KMTPSubsystem, KComponent);
+    __FLOG(_L8("ConstructL - Entry")); 
+    iDpSingletons.OpenL(iFramework);
+	const TUint32 KUidMTPRepositoryValue(0x10282FCC);
+    const TUid KUidMTPRepository = {KUidMTPRepositoryValue};
+    iRepository = CRepository::NewL(KUidMTPRepository);
+    __FLOG(_L8("ConstructL - Exit")); 
+    }
+
+/**
+SetDevicePropValue request validator.
+@return EMTPRespCodeOK if request is verified, otherwise one of the error response codes
+*/
+TMTPResponseCode CMTPResetDevicePropValue::CheckRequestL()
+    {
+    __FLOG(_L8("CheckRequestL - Entry"));
+    TMTPResponseCode respCode(EMTPRespCodeDevicePropNotSupported);
+    iPropCode = Request().Uint32(TMTPTypeRequest::ERequestParameter1);
+    const TInt count = sizeof(KMTPDeviceDpSupportedProperties) / sizeof(KMTPDeviceDpSupportedProperties[0]);
+    for (TUint i(0); ((respCode != EMTPRespCodeOK) && (i < count)); i++)
+        {
+        if (iPropCode == KMTPDeviceDpSupportedProperties[i])
+            {
+            respCode = EMTPRespCodeOK;
+            }
+        }
+
+    if(iDpSingletons.DeviceDataStore().ExtnDevicePropDp())
+        {
+        respCode = EMTPRespCodeOK;
+        }
+    __FLOG(_L8("CheckRequestL - Exit"));
+    return respCode;
+    }
+/**
+ResetDevicePropValue request handler.
+*/ 	
+void CMTPResetDevicePropValue::ServiceL()
+    {
+    __FLOG(_L8("ServiceL - Entry"));
+    iPropCode = Request().Uint32(TMTPTypeRequest::ERequestParameter1);
+    MExtnDevicePropDp* extnDevplugin = iDpSingletons.DeviceDataStore().ExtnDevicePropDp();
+    switch (iPropCode)
+        {
+        //Added all new prpoerties here we have to add other properties that not present here*/
+        case EMTPDevicePropCodeSessionInitiatorVersionInfo:
+            ServiceSessionInitiatorVersionInfoL();
+        break;
+        case EMTPDevicePropCodePerceivedDeviceType:
+            ServicePerceivedDeviceTypeL();
+        break;
+
+        case EMTPDevicePropCodeDeviceIcon:
+            ServiceDeviceIconL();
+        break;
+
+        case EMTPDevicePropCodeSupportedFormatsOrdered:
+            ServiceSupportedFormatsOrderedL();
+        break;
+
+        case EMTPDevicePropCodeDateTime:
+            ServiceDateTimeL();
+        break;
+        case EMTPDevicePropCodeFunctionalID:
+        	ServiceFunctionalIDL();
+        break;
+        case EMTPDevicePropCodeModelID:
+        	ServiceModelIDL();
+        break;
+        case EMTPDevicePropCodeUseDeviceStage:
+        	ServiceUseDeviceStageL();
+        break;
+        default:         
+            if(extnDevplugin)
+                { 
+                HandleExtnServiceL(iPropCode, extnDevplugin);
+                }
+            else 
+                { 
+                SendResponseL(EMTPRespCodeDevicePropNotSupported);
+                }
+        break;   
+        }
+    } 
+
+ void CMTPResetDevicePropValue::HandleExtnServiceL(TInt aPropCode, MExtnDevicePropDp* aExtnDevplugin)
+    {
+	  if(aExtnDevplugin->ResetDevPropertyL((TMTPDevicePropertyCode)aPropCode) == KErrNone)
+	  {
+	  SendResponseL(EMTPRespCodeOK);
+	  }
+	  else
+	  {
+	  SendResponseL(EMTPRespCodeDevicePropNotSupported);
+	  }
+    
+    }
+
+/**
+Service session initiator property.
+*/ 
+void CMTPResetDevicePropValue::ServiceSessionInitiatorVersionInfoL()
+    {  
+    __FLOG(_L8("SetSessionInitiatorVersionInfo - Entry")); 
+    iDpSingletons.DeviceDataStore().SetSessionInitiatorVersionInfoL( iDpSingletons.DeviceDataStore().SessionInitiatorVersionInfoDefault());
+    SendResponseL(EMTPRespCodeOK);
+    __FLOG(_L8("SetSessionInitiatorVersionInfo - Exit"));
+    }
+
+/**
+*Service the PerceivedDeviceType property.
+*it is not set type it should be removed 
+**/
+void CMTPResetDevicePropValue::ServicePerceivedDeviceTypeL()
+    {  
+    __FLOG(_L8("ServicePerceivedDeviceType - Entry")); 
+    //PerceivedDeviceType is of type get only .
+    SendResponseL(EMTPRespCodeAccessDenied);
+    __FLOG(_L8("ServicePerceivedDeviceType - Exit"));
+    }
+
+/**
+Service the Date Time property.
+*/ 
+void CMTPResetDevicePropValue::ServiceDateTimeL()
+    {  
+    __FLOG(_L8("ServiceDateTime - Entry")); 
+    SendResponseL(EMTPRespCodeOperationNotSupported);
+    __FLOG(_L8("ServiceDateTime - Exit"));
+    }
+
+
+/*
+*Service the Device Icon property and CompleteDeviceIcon.
+As of now implemented as device property of type get.
+*/   
+void CMTPResetDevicePropValue::ServiceDeviceIconL()
+    {  
+    __FLOG(_L8("ServiceDeviceIcon - Entry")); 
+    //DeviceIcon property is implemented as get only .
+    SendResponseL(EMTPRespCodeAccessDenied);
+    __FLOG(_L8("ServiceDeviceIcon - Exit"));
+    }
+
+/*
+*ServiceSupportedFormatsOrdered property. it is get only type.
+*/
+void CMTPResetDevicePropValue::ServiceSupportedFormatsOrderedL()
+    {  
+    __FLOG(_L8("ServiceSupportedFormatsOrdered - Entry"));  
+    //no need to recive this data beacuse it is Get property
+    //iDpSingletons.DeviceDataStore().SetFormatOrdered( iDpSingletons.DeviceDataStore().FormatOrderedDefault());
+    SendResponseL(EMTPRespCodeAccessDenied);
+    __FLOG(_L8("ServicePerceivedDeviceType - Exit"));
+    }
+
+/*
+*FunctionalID property. 
+*/
+void CMTPResetDevicePropValue::ServiceFunctionalIDL()
+    {	 
+    __FLOG(_L8("ServiceFunctionalIDL - Entry")); 
+    delete iData;
+    iData = GetGUIDL( MMTPFrameworkConfig::EDeviceDefaultFuncationalID ); 
+    SaveGUID(MMTPFrameworkConfig::EDeviceCurrentFuncationalID, *iData);
+    SendResponseL(EMTPRespCodeOK);
+    __FLOG(_L8("ServiceFunctionalIDL - Exit"));
+    }
+
+/*
+*ModelID property. it is get only type.
+*/
+void CMTPResetDevicePropValue::ServiceModelIDL()
+    {	 
+    __FLOG(_L8("ServiceModelIDL - Entry")); 	
+    SendResponseL(EMTPRespCodeAccessDenied);
+    __FLOG(_L8("ServiceModelIDL - Exit"));
+    }
+
+/*
+*UseDeviceStage property. it is get only type.
+*/
+void CMTPResetDevicePropValue::ServiceUseDeviceStageL()
+    {	 
+    __FLOG(_L8("ServiceUseDeviceStageL - Entry")); 	
+    SendResponseL(EMTPRespCodeAccessDenied);
+    __FLOG(_L8("ServiceUseDeviceStageL - Exit"));
+    }
+
+TMTPTypeGuid* CMTPResetDevicePropValue::GetGUIDL(const TUint aKey)
+    {
+    
+    TBuf8<KMTPTypeUINT128Size> ptr;
+    
+    iRepository->Get(aKey,ptr);
+    
+    TMTPTypeGuid* ret = new (ELeave) TMTPTypeGuid( ptr );
+    
+    return ret;
+    }
+
+void CMTPResetDevicePropValue::SaveGUID( const TUint aKey,  TMTPTypeGuid& aValue )
+    {
+    TPtrC8 ptr;
+    if ( KMTPChunkSequenceCompletion == aValue.FirstReadChunk(ptr) )
+    	{
+    	iRepository->Set(aKey,ptr);
+    	}
+    }