Revision: 201031
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 18 Aug 2010 10:38:51 +0300
changeset 38 48c22c726cf9
parent 33 883e91c086aa
child 44 a5deb6b96675
Revision: 201031 Kit: 201033
backupandrestore/backupengine/src/absession.cpp
backupandrestore/backupengine/src/sbecompressionandencryption.cpp
localconnectivityservice/dun/atext/group/dunatext.mmp
localconnectivityservice/dun/atext/src/DunAtCmdHandler.cpp
localconnectivityservice/dun/client/group/dunclient.mmp
localconnectivityservice/dun/client/src/0x20002775.rss
localconnectivityservice/dun/client/src/proxy.cpp
localconnectivityservice/dun/plugins/group/dunbt.mmp
localconnectivityservice/dun/plugins/group/dunir.mmp
localconnectivityservice/dun/plugins/group/dunusb.mmp
localconnectivityservice/dun/server/group/dunserver.mmp
localconnectivityservice/dun/tsrc/group/dunutilstest.mmp
localconnectivityservice/dun/utils/group/dunutils.mmp
localconnectivityservice/dun/utils/inc/DunNoteHandler.h
localconnectivityservice/generichid/group/generichid.mmp
localconnectivityservice/generichid/tsrc/GenericHidTest/group/CHidDriverPlugin.mmp
localconnectivityservice/generichid/tsrc/GenericHidTest/group/GenericHidTest.mmp
localconnectivityservice/headset/group/hidheadset.mmp
localconnectivityservice/locod/commoninc/locodbearerplugin.inl
localconnectivityservice/locod/commoninc/locodserviceplugin.inl
localconnectivityservice/locod/group/locod.mmp
mtpdataproviders/mtpfileandfolderdp/src/cmtpfiledpexclusionmgr.cpp
mtpdataproviders/mtpimagedp/inc/cmtpimagedp.h
mtpdataproviders/mtpimagedp/inc/cmtpimagedpgetobject.h
mtpdataproviders/mtpimagedp/src/cmtpimagedp.cpp
mtpdataproviders/mtpimagedp/src/cmtpimagedpcopyobject.cpp
mtpdataproviders/mtpimagedp/src/cmtpimagedpdeleteobject.cpp
mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobject.cpp
mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobjectinfo.cpp
mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobjectproplist.cpp
mtpdataproviders/mtpimagedp/src/cmtpimagedpnewpicturesnotifier.cpp
mtpdataproviders/mtpimagedp/src/cmtpimagedpobjectpropertymgr.cpp
mtpdataproviders/mtpimagedp/src/cmtpimagedpsendobjectinfo.cpp
mtpdataproviders/mtppictbridgedp/inc/s60dependency.h
mtpdataproviders/mtppictbridgedp/src/cmtppictbridgedpsendobjectinfo.cpp
mtpdataproviders/mtppictbridgedp/src/cmtppictbridgeusbconnection.cpp
mtpfws/mtpfw/common/inc/uiklafinternalcrkeys.h
mtpfws/mtpfw/dataproviders/devdp/inc/cmtpgetnumobjects.h
mtpfws/mtpfw/dataproviders/devdp/src/cmtpdevicedp.cpp
mtpfws/mtpfw/dataproviders/devdp/src/cmtpdevicedpconfigmgr.cpp
mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetdeviceinfo.cpp
mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetnumobjects.cpp
mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetobjecthandles.cpp
mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetstorageinfo.cpp
mtpfws/mtpfw/dataproviders/devdp/src/cmtptypedeviceinfo.cpp
mtpfws/mtpfw/dataproviders/dputility/src/cmtpfsenumerator.cpp
mtpfws/mtpfw/dataproviders/dputility/src/cmtpgetformatcapabilities.cpp
mtpfws/mtpfw/dataproviders/dputility/src/cmtpknowledgehandler.cpp
mtpfws/mtpfw/dataproviders/dputility/src/cmtpmoveobject.cpp
mtpfws/mtpfw/dataproviders/dputility/src/cmtpsendobjectinfo.cpp
mtpfws/mtpfw/dataproviders/dputility/src/rmtputility.cpp
mtpfws/mtpfw/dataproviders/proxydp/src/cmtpdeleteobjectproplist.cpp
mtpfws/mtpfw/datatypes/group/mtpdatatypes.mmp
mtpfws/mtpfw/datatypes/interface/mtpprotocolconstants.h
mtpfws/mtpfw/datatypes/src/cmtptypefile.cpp
mtpfws/mtpfw/datatypes/src/cmtptypeobjectinfo.cpp
mtpfws/mtpfw/datatypes/src/cmtptypestorageinfo.cpp
mtpfws/mtpfw/inc/cmtpconnection.h
mtpfws/mtpfw/inc/mtpcommonconst.h
mtpfws/mtpfw/src/cmtpconnection.cpp
mtpfws/mtpfw/src/cmtpconnectionmgr.cpp
mtpfws/mtpfw/src/cmtpdataprovidercontroller.cpp
mtpfws/mtpfw/src/cmtpobjectstore.cpp
mtpfws/mtpfw/src/cmtpreferencemgr.cpp
mtpfws/mtpfw/src/cmtpserviceconfig.cpp
mtpfws/mtpfw/src/ruidmapper.cpp
mtptransports/mtpcontroller/src/cmtpbearermonitor.cpp
mtptransports/mtpcontroller/src/cmtpcontrollertimer.cpp
mtptransports/mtpusbtransport/usbsic_imp/inc/cmtpusbepbase.h
mtptransports/mtpusbtransport/usbsic_imp/src/cmtpusbconnection.cpp
mtptransports/mtpusbtransport/usbsic_imp/src/cmtpusbepbase.cpp
package_definition.xml
package_map.xml
--- a/backupandrestore/backupengine/src/absession.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/backupandrestore/backupengine/src/absession.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -148,7 +148,12 @@
 		iCallbackWatchdog = NULL;
 		
 		// Remove this session from the server's session map
-		Server().RemoveElement(iClientSID);
+		// Use dynamic_cast in case that ABServer is deconstructing 
+		CABServer *pServer = dynamic_cast<CABServer*>(const_cast<CServer2*>(CSession2::Server()));
+		if(pServer)
+			{
+			pServer->RemoveElement(iClientSID);
+			}		
 		
 		// Clear up any outstanding message
 		HandleIPCClosingDownCallback();
@@ -159,7 +164,10 @@
 		// If the client has detached properly, they should
 		// have done this - but just in case.
 		//DoCancelWaitForCallback();
-		Server().DropSession();
+		if(pServer)
+			{
+			pServer->DropSession();
+			}
 		}
 		
 	void CABSession::CreateL()
--- a/backupandrestore/backupengine/src/sbecompressionandencryption.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/backupandrestore/backupengine/src/sbecompressionandencryption.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -709,7 +709,7 @@
 			iEncryptionHeader.iEncrypted, iEncryptionHeader.iBufferSize, iEncryptionHeader.iTotalSize);
 		
 		// Check we have a sensible encryption header
-		if ((iEncryptionHeader.iBufferSize < 0) ||
+		if ((iEncryptionHeader.iBufferSize < 0) || (iEncryptionHeader.iBufferSize >= KMaxTInt/2) ||
 			(iEncryptionHeader.iTotalSize < 0))
 			{
 			__LOG("CSBEDecompressAndEncrypt::CreateCipherL() - Corrupt data");
--- a/localconnectivityservice/dun/atext/group/dunatext.mmp	Tue Jul 06 15:13:34 2010 +0300
+++ b/localconnectivityservice/dun/atext/group/dunatext.mmp	Wed Aug 18 10:38:51 2010 +0300
@@ -36,16 +36,10 @@
 SOURCE                  DunAtNvramListen.cpp
 SOURCE                  DunAtSpecialCmdHandler.cpp
 
-USERINCLUDE             ../inc ../../utils/inc
-
 MW_LAYER_SYSTEMINCLUDE
 
-// Note:
-// The only other SYSTEMINCLUDE should you shall add are Symbian specific ones.
-// If there is a S60 header in the subdirectory then that should be
-// added into the include statements (like #include <phonebook/header.h>)
-//SYSTEMINCLUDE           /epoc32/include/ecom
-SYSTEMINCLUDE           ../../../inc
+USERINCLUDE             ../inc ../../utils/inc
+USERINCLUDE             ../../../inc
 
 LIBRARY                 atextclient.lib
 LIBRARY                 atextcommon.lib
--- a/localconnectivityservice/dun/atext/src/DunAtCmdHandler.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/localconnectivityservice/dun/atext/src/DunAtCmdHandler.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -855,20 +855,6 @@
         FTRACE(FPrint( _L("CDunAtCmdHandler::ExtractLineFromInputBuffer() (more needed) complete") ));
         return ETrue;
         }
-    // As a last step adjust the possible multiple IsDelimiterCharacter()
-    // characters and set length of iLineBuffer. Leave iEndIndex untouched.
-    lineLength = iLineBuffer.Length();
-    for ( TInt i=lineLength-1; i>=0; i-- )
-        {
-        TChar character = iLineBuffer[i];
-        if ( !IsDelimiterCharacter(character) )
-            {
-            iLineBuffer.SetLength( i + 1 );
-            FTRACE(FPrint( _L("CDunAtCmdHandler::ExtractLineFromInputBuffer() after (%d bytes):"), iLineBuffer.Length() ));
-            FTRACE(FPrintRaw(iLineBuffer) );
-            break;
-            }
-        }
     FTRACE(FPrint( _L("CDunAtCmdHandler::ExtractLineFromInputBuffer() (line found) complete") ));
     return EFalse;
     }
@@ -1413,9 +1399,25 @@
         {
         iDecodeInfo.iExtendedIndex = aEndIndex;
         SaveFoundCharDecodeState( aCharacter );
-        FTRACE(FPrint( _L("CDunAtCmdHandler::IsExtendedBorder() (no border) complete") ));
+        FTRACE(FPrint( _L("CDunAtCmdHandler::IsExtendedBorder() (no border normal) complete") ));
         return EFalse;
         }
+    // Now suspect border found so peek the next character after the suspected
+    // extended character. If it is not alphabetical character, return with EFalse.
+    // This case is to detect the cases such as "AT+VTS={*,3000}", where '*' would
+    // be the start of the next command in normal cases.
+    TInt peekIndex = aEndIndex + 1;
+    TInt lineLength = iLineBuffer.Length();
+    if ( peekIndex < lineLength )
+        {
+        TChar nextCharacter = iLineBuffer[peekIndex];
+        if ( !nextCharacter.IsAlpha() )
+            {
+            SaveFoundCharDecodeState( aCharacter );
+            FTRACE(FPrint( _L("CDunAtCmdHandler::IsExtendedBorder() (no border special) complete") ));
+            return EFalse;
+            }
+        }
     aEndIndex--;
     FTRACE(FPrint( _L("CDunAtCmdHandler::IsExtendedBorder() (border) complete") ));
     return ETrue;
--- a/localconnectivityservice/dun/client/group/dunclient.mmp	Tue Jul 06 15:13:34 2010 +0300
+++ b/localconnectivityservice/dun/client/group/dunclient.mmp	Wed Aug 18 10:38:51 2010 +0300
@@ -36,16 +36,10 @@
 TARGET                  dunclient.rsc
 END // RESOURCE
 
-USERINCLUDE             ../inc ../../utils/inc
-
 MW_LAYER_SYSTEMINCLUDE
 
-// Note:
-// The only other SYSTEMINCLUDE should you shall add are Symbian specific ones.
-// If there is a S60 header in the subdirectory then that should be
-// added into the include statements (like #include <phonebook/header.h>)
-//SYSTEMINCLUDE           /epoc32/include/ecom
-SYSTEMINCLUDE           ../../../inc ../../../../inc /epoc32/include/ecom
+USERINCLUDE             ../inc ../../utils/inc
+USERINCLUDE             ../../../inc ../../../../inc 
 
 LIBRARY                 euser.lib
 LIBRARY                 ecom.lib
--- a/localconnectivityservice/dun/client/src/0x20002775.rss	Tue Jul 06 15:13:34 2010 +0300
+++ b/localconnectivityservice/dun/client/src/0x20002775.rss	Wed Aug 18 10:38:51 2010 +0300
@@ -16,8 +16,8 @@
 */
 
 
-#include "registryinfov2.rh"
-#include "locodplugin.hrh"
+#include <ecom/registryinfov2.rh>
+#include <locodplugin.hrh>
 
 RESOURCE REGISTRY_INFO theInfo
 	{
--- a/localconnectivityservice/dun/client/src/proxy.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/localconnectivityservice/dun/client/src/proxy.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 
-#include <implementationproxy.h> //ECom header file
+#include <ecom/implementationproxy.h> //ECom header file
 #include "dunplugin.h"
 
 // ---------------------------------------------------------------------------
--- a/localconnectivityservice/dun/plugins/group/dunbt.mmp	Tue Jul 06 15:13:34 2010 +0300
+++ b/localconnectivityservice/dun/plugins/group/dunbt.mmp	Wed Aug 18 10:38:51 2010 +0300
@@ -29,16 +29,10 @@
 SOURCE                  DunBtPlugin.cpp
 SOURCE                  DunBtListen.cpp
 
-USERINCLUDE             ../inc/bt ../../utils/inc
-
 MW_LAYER_SYSTEMINCLUDE
 
-// Note:
-// The only other SYSTEMINCLUDE should you shall add are Symbian specific ones.
-// If there is a S60 header in the subdirectory then that should be
-// added into the include statements (like #include <phonebook/header.h>)
-//SYSTEMINCLUDE           /epoc32/include/ecom
-SYSTEMINCLUDE           ../../../inc
+USERINCLUDE             ../inc/bt ../../utils/inc
+USERINCLUDE             ../../../inc
 
 LIBRARY                 euser.lib
 LIBRARY                 esock.lib
--- a/localconnectivityservice/dun/plugins/group/dunir.mmp	Tue Jul 06 15:13:34 2010 +0300
+++ b/localconnectivityservice/dun/plugins/group/dunir.mmp	Wed Aug 18 10:38:51 2010 +0300
@@ -28,16 +28,10 @@
 SOURCEPATH              ../src/ir
 SOURCE                  DunIrPlugin.cpp
 
-USERINCLUDE             ../inc/ir ../../utils/inc
-
 MW_LAYER_SYSTEMINCLUDE
 
-// Note:
-// The only other SYSTEMINCLUDE should you shall add are Symbian specific ones.
-// If there is a S60 header in the subdirectory then that should be
-// added into the include statements (like #include <phonebook/header.h>)
-//SYSTEMINCLUDE           /epoc32/include/ecom
-SYSTEMINCLUDE          ../../../inc
+USERINCLUDE             ../inc/ir ../../utils/inc
+USERINCLUDE             ../../../inc
 
 LIBRARY                 euser.lib
 LIBRARY                 c32.lib
--- a/localconnectivityservice/dun/plugins/group/dunusb.mmp	Tue Jul 06 15:13:34 2010 +0300
+++ b/localconnectivityservice/dun/plugins/group/dunusb.mmp	Wed Aug 18 10:38:51 2010 +0300
@@ -30,16 +30,10 @@
 SOURCE                  DunUsbListen.cpp
 SOURCE                  DunUsbConfig.cpp
 
-USERINCLUDE            ../inc/usb ../../utils/inc
-
 MW_LAYER_SYSTEMINCLUDE
 
-// Note:
-// The only other SYSTEMINCLUDE should you shall add are Symbian specific ones.
-// If there is a S60 header in the subdirectory then that should be
-// added into the include statements (like #include <phonebook/header.h>)
-//SYSTEMINCLUDE           /epoc32/include/ecom
-SYSTEMINCLUDE           ../../../inc
+USERINCLUDE             ../inc/usb ../../utils/inc
+USERINCLUDE             ../../../inc
 
 LIBRARY                 euser.lib
 LIBRARY                 c32.lib
--- a/localconnectivityservice/dun/server/group/dunserver.mmp	Tue Jul 06 15:13:34 2010 +0300
+++ b/localconnectivityservice/dun/server/group/dunserver.mmp	Wed Aug 18 10:38:51 2010 +0300
@@ -31,16 +31,10 @@
 SOURCE                  DunServerUtils.cpp
 SOURCE                  DunCloseWait.cpp
 
-USERINCLUDE            ../inc ../../utils/inc
-
 MW_LAYER_SYSTEMINCLUDE
 
-// Note:
-// The only other SYSTEMINCLUDE should you shall add are Symbian specific ones.
-// If there is a S60 header in the subdirectory then that should be
-// added into the include statements (like #include <phonebook/header.h>)
-//SYSTEMINCLUDE           /epoc32/include/ecom
-SYSTEMINCLUDE           ../../../inc ../../../../inc
+USERINCLUDE             ../inc ../../utils/inc
+USERINCLUDE             ../../../inc ../../../../inc
 
 LIBRARY                 euser.lib
 LIBRARY                 dunutils.lib
--- a/localconnectivityservice/dun/tsrc/group/dunutilstest.mmp	Tue Jul 06 15:13:34 2010 +0300
+++ b/localconnectivityservice/dun/tsrc/group/dunutilstest.mmp	Wed Aug 18 10:38:51 2010 +0300
@@ -21,20 +21,11 @@
 
 CAPABILITY      ALL -TCB
 
-//TARGETPATH      ?target_path
 DEFFILE         dunutilstest.def
 
 USERINCLUDE	 ../inc ../../utils/inc
 
-SYSTEMINCLUDE  /epoc32/include/mw/hb/hbwidgets
-
-#if defined(__S60_)
-  //  OSEXT_LAYER_SYSTEMINCLUDE
-    MW_LAYER_SYSTEMINCLUDE
-#else
-    //SYSTEMINCLUDE   /epoc32/include 
-    //SYSTEMINCLUDE   /epoc32/include/internal
-#endif
+MW_LAYER_SYSTEMINCLUDE
 
 SOURCEPATH	  ../src
 
--- a/localconnectivityservice/dun/utils/group/dunutils.mmp	Tue Jul 06 15:13:34 2010 +0300
+++ b/localconnectivityservice/dun/utils/group/dunutils.mmp	Wed Aug 18 10:38:51 2010 +0300
@@ -54,17 +54,10 @@
 SOURCE                  DunNoteHandler.cpp
 SOURCE                  DunUtils.cpp
 
-USERINCLUDE             ../inc ../../atext/inc
-
 MW_LAYER_SYSTEMINCLUDE
 
-// Note:
-// The only other SYSTEMINCLUDE should you shall add are Symbian specific ones.
-// If there is a S60 header in the subdirectory then that should be
-// added into the include statements (like #include <phonebook/header.h>)
-//SYSTEMINCLUDE           /epoc32/include/ecom
-SYSTEMINCLUDE           ../../../inc
-SYSTEMINCLUDE  /epoc32/include/mw/hb/hbwidgets
+USERINCLUDE             ../inc ../../atext/inc
+USERINCLUDE             ../../../inc
 
 LIBRARY                 bafl.lib
 #ifdef PRJ_USE_NETWORK_STUBS
--- a/localconnectivityservice/dun/utils/inc/DunNoteHandler.h	Tue Jul 06 15:13:34 2010 +0300
+++ b/localconnectivityservice/dun/utils/inc/DunNoteHandler.h	Wed Aug 18 10:38:51 2010 +0300
@@ -20,7 +20,7 @@
 #define C_CDUNNOTEHANDLER_H
 
 #include <e32base.h>
-#include <hbdevicemessageboxsymbian.h>
+#include <hb/hbwidgets/hbdevicemessageboxsymbian.h>
 #include "DunTransporter.h"
 
 /**
--- a/localconnectivityservice/generichid/group/generichid.mmp	Tue Jul 06 15:13:34 2010 +0300
+++ b/localconnectivityservice/generichid/group/generichid.mmp	Wed Aug 18 10:38:51 2010 +0300
@@ -41,11 +41,10 @@
 SOURCE                  hidinterfaces.cpp
 SOURCE                  hidconnectioninfo.cpp
 
-USERINCLUDE              ../inc
+MW_LAYER_SYSTEMINCLUDE
 
-MW_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE           ../../../inc
-SYSTEMINCLUDE 			/epoc32/include/ecom
+USERINCLUDE             ../inc
+USERINCLUDE             ../../../inc
 
 LIBRARY       euser.lib
 LIBRARY       ecom.lib
--- a/localconnectivityservice/generichid/tsrc/GenericHidTest/group/CHidDriverPlugin.mmp	Tue Jul 06 15:13:34 2010 +0300
+++ b/localconnectivityservice/generichid/tsrc/GenericHidTest/group/CHidDriverPlugin.mmp	Wed Aug 18 10:38:51 2010 +0300
@@ -33,7 +33,6 @@
 USERINCLUDE     ../inc 
 USERINCLUDE     ../../../inc 
 
-SYSTEMINCLUDE /epoc32/include/ecom 
 MW_LAYER_SYSTEMINCLUDE
 
 
--- a/localconnectivityservice/generichid/tsrc/GenericHidTest/group/GenericHidTest.mmp	Tue Jul 06 15:13:34 2010 +0300
+++ b/localconnectivityservice/generichid/tsrc/GenericHidTest/group/GenericHidTest.mmp	Wed Aug 18 10:38:51 2010 +0300
@@ -36,8 +36,6 @@
 USERINCLUDE	../inc 
 USERINCLUDE     ../../../inc 
 
-SYSTEMINCLUDE 	/epoc32/include/internal
-
 SOURCEPATH      ../src
 SOURCE          GenericHidTest.cpp
 SOURCE          GenericHidTestBlocks.cpp
--- a/localconnectivityservice/headset/group/hidheadset.mmp	Tue Jul 06 15:13:34 2010 +0300
+++ b/localconnectivityservice/headset/group/hidheadset.mmp	Wed Aug 18 10:38:51 2010 +0300
@@ -36,14 +36,14 @@
     TARGET                  hidheadset.rsc  
 END // ECOM resource definition
 
-USERINCLUDE   ../inc ../hidremconbearer/inc
-
 #ifdef NO101APPDEPFIXES
 APP_LAYER_SYSTEMINCLUDE
 #else   //NO101APPDEPFIXES
 MW_LAYER_SYSTEMINCLUDE
 #endif  //NO101APPDEPFIXES
-SYSTEMINCLUDE  ../../../inc
+
+USERINCLUDE   ../inc ../hidremconbearer/inc
+USERINCLUDE   ../../../inc
 
 LIBRARY       euser.lib
 LIBRARY       ecom.lib
--- a/localconnectivityservice/locod/commoninc/locodbearerplugin.inl	Tue Jul 06 15:13:34 2010 +0300
+++ b/localconnectivityservice/locod/commoninc/locodbearerplugin.inl	Wed Aug 18 10:38:51 2010 +0300
@@ -17,7 +17,7 @@
 */
 
 
-#include <ecom.h>
+#include <ecom/ecom.h>
 
 // -----------------------------------------------------------------------------
 // Creates the bearer plug ins and return it to caller
--- a/localconnectivityservice/locod/commoninc/locodserviceplugin.inl	Tue Jul 06 15:13:34 2010 +0300
+++ b/localconnectivityservice/locod/commoninc/locodserviceplugin.inl	Wed Aug 18 10:38:51 2010 +0300
@@ -17,7 +17,7 @@
 */
 
 
-#include <ecom.h>
+#include <ecom/ecom.h>
 
 // -----------------------------------------------------------------------------
 // Constructor method, just saves the arguments into member variables
--- a/localconnectivityservice/locod/group/locod.mmp	Tue Jul 06 15:13:34 2010 +0300
+++ b/localconnectivityservice/locod/group/locod.mmp	Wed Aug 18 10:38:51 2010 +0300
@@ -33,9 +33,9 @@
 SOURCE        locodserviceman.cpp
 SOURCE        locodservice.cpp
 
-USERINCLUDE         ../inc
-SYSTEMINCLUDE       ../../inc ../../../inc 
-SYSTEMINCLUDE       /epoc32/include/ecom
+USERINCLUDE   ../inc
+USERINCLUDE   ../../inc ../../../inc 
+
 MW_LAYER_SYSTEMINCLUDE
 
 LIBRARY         euser.lib
--- a/mtpdataproviders/mtpfileandfolderdp/src/cmtpfiledpexclusionmgr.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpdataproviders/mtpfileandfolderdp/src/cmtpfiledpexclusionmgr.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -96,7 +96,7 @@
                 formatcode = playbackFormatExclusionList[index];
                 if(KErrNotFound == capFormatExclusionList.FindInOrder(formatcode))
                     {
-                    capFormatExclusionList.InsertInOrder(formatcode);
+                    capFormatExclusionList.InsertInOrderL(formatcode);
                     }
                 }
 
--- a/mtpdataproviders/mtpimagedp/inc/cmtpimagedp.h	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpdataproviders/mtpimagedp/inc/cmtpimagedp.h	Wed Aug 18 10:38:51 2010 +0300
@@ -67,6 +67,7 @@
     void HandleDeleteObjectsArray();
     void IncreaseNewPictures(TInt aCount);
     void DecreaseNewPictures(TInt aCount);
+    void ResetNewPictures();
     void HandleMdeSessionCompleteL(TInt aError);
     
 public: // From CMTPDataProviderPlugin
@@ -129,6 +130,7 @@
     TBool                   iEnumerationNotified;
 	
 	RPointerArray<HBufC>    iDeleteObjectsArray;
+	RArray<TUint>			iNewPicHandles;
     };
     
 #endif // CMTPIMAGEDP_H
--- a/mtpdataproviders/mtpimagedp/inc/cmtpimagedpgetobject.h	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpdataproviders/mtpimagedp/inc/cmtpimagedpgetobject.h	Wed Aug 18 10:38:51 2010 +0300
@@ -42,6 +42,7 @@
 
 	void ServiceL();
 	TBool DoHandleCompletingPhaseL();
+    TMTPResponseCode CheckRequestL();
 	
 private: 
 
--- a/mtpdataproviders/mtpimagedp/src/cmtpimagedp.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedp.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -120,8 +120,10 @@
         }     
     
     //Define RProperty of new pictures for status data provider
+	RProcess process;
+	TUid tSid = process.SecureId();
     _LIT_SECURITY_POLICY_PASS(KAllowReadAll);
-    TInt error = RProperty::Define(KMTPNewPicKey, RProperty::EInt, KAllowReadAll, KAllowReadAll);
+    TInt error = RProperty::Define(tSid, KMTPNewPicKey, RProperty::EInt, KAllowReadAll, KAllowReadAll);
     if (error != KErrNone && error != KErrAlreadyExists)
         {
         __FLOG_1(_L8("CMTPImageDataProvider::ConstructL - RProperty define error:%d"), error);
@@ -165,6 +167,7 @@
     //Try to delete objects in array
     HandleDeleteObjectsArray();
     iDeleteObjectsArray.ResetAndDestroy();
+    iNewPicHandles.Reset();
     
     __FLOG(_L8("<< ~CMTPImageDataProvider"));
     __FLOG_CLOSE;
@@ -610,8 +613,7 @@
         /**
          * Get image object count from framework and calculate the new pictures
          */
-        TUint newPictures = QueryImageObjectCountL();
-        RProperty::Set(TUid::Uid(KMTPServerUID), KMTPNewPicKey, newPictures);
+        TUint newPictures = QueryImageObjectCountL();        
         iNewPicNotifier->SetNewPictures(newPictures);
         __FLOG_1(_L16("CMTPImageDpEnumerator::CompleteEnumeration - New Pics: %d"), newPictures);        
         iEnumerated = EFalse;
@@ -693,6 +695,8 @@
     CleanupClosePushL(context);
     CleanupClosePushL(handles);    
     
+    iNewPicHandles.Reset();
+    
     do
         {
         /*
@@ -712,6 +716,7 @@
         if (MTPImageDpUtilits::IsNewPicture(*objMetadata))
             {
             ++newPictures;
+            iNewPicHandles.Append(handles[i]);
             }
         }
     
@@ -765,6 +770,32 @@
     __FLOG(_L8("<< DecreaseNewPictures "));    
     }
 
+void CMTPImageDataProvider::ResetNewPictures()
+	{
+	__FLOG(_L8(">> ResetNewPictures "));
+
+	iNewPicNotifier->SetNewPictures(0);
+	
+	TInt count = iNewPicHandles.Count();
+	if (!count)
+		{
+		return;
+		}
+
+	CMTPObjectMetaData* objMetadata = CMTPObjectMetaData::NewLC();
+	
+	for (TInt i(0); i<count; ++i)
+	{
+		Framework().ObjectMgr().ObjectL(iNewPicHandles[i], *objMetadata);
+		MTPImageDpUtilits::UpdateObjectStatusToOldL(Framework(), *objMetadata);
+	}
+	
+	iNewPicHandles.Reset();
+	CleanupStack::PopAndDestroy(objMetadata);
+	
+	__FLOG(_L8("<< ResetNewPictures "));
+	}
+
 void CMTPImageDataProvider::HandleMdeSessionCompleteL(TInt aError)
     {
     __FLOG(_L8(">> HandleMdeSessionComplete"));    
--- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpcopyobject.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpcopyobject.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -190,7 +190,7 @@
     
     GetPreviousPropertiesL(aOldFileName);
     User::LeaveIfError(iFileMan->Copy(aOldFileName, *iDest));
-    iRollbackActionL.Append(RollBackFromFsL);
+    iRollbackActionL.AppendL(RollBackFromFsL);
     SetPreviousPropertiesL(aNewFileName);
     
     iFramework.ObjectMgr().InsertObjectL(*iTargetObjectInfo);
--- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpdeleteobject.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpdeleteobject.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -205,7 +205,7 @@
         iFramework.ObjectMgr().GetObjectHandlesL( params, context, handles );
         for ( TInt i = 0; i < handles.Count(); i++)
             {
-            iObjectsToDelete.Append( handles[i] );
+            iObjectsToDelete.AppendL( handles[i] );
             }
         }
     while ( !context.QueryComplete() );
--- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobject.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobject.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -93,7 +93,22 @@
     __FLOG(_L8(">> CMTPImageDpGetObject::ConstructL"));   
     __FLOG(_L8("<< CMTPImageDpGetObject::ConstructL"));
     }
-
+TMTPResponseCode CMTPImageDpGetObject::CheckRequestL()
+    {    
+    __FLOG(_L8(">> CMTPImageDpGetObject::CheckRequestL"));
+    TMTPResponseCode responseCode = CMTPRequestProcessor::CheckRequestL();
+    
+    TUint32 handle(Request().Uint32(TMTPTypeRequest::ERequestParameter1));
+    if ( handle != KMTPHandleAll )
+        {
+        CMTPObjectMetaData* ObjectMeta = CMTPObjectMetaData::NewL();
+        responseCode = MTPImageDpUtilits::VerifyObjectHandleL(
+                iFramework, handle, *ObjectMeta);
+        delete ObjectMeta;
+        }
+    __FLOG(_L8("<< CMTPImageDpGetObject::CheckRequestL"));
+    return responseCode;
+    }
 /**
 GetObject request handler
 */		
@@ -140,7 +155,7 @@
             {       
             //update new picture status            
             MTPImageDpUtilits::UpdateObjectStatusToOldL(iFramework, *objectInfo);
-            iDataProvider.DecreaseNewPictures(1);
+            iDataProvider.ResetNewPictures();
             }
         }
     
--- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobjectinfo.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobjectinfo.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -114,17 +114,17 @@
     iObjectPropertyMgr.SetCurrentObjectL(*iObjectMeta, EFalse);
     
     //1. storage id
-    TUint32 storageId;
+    TUint32 storageId(0);
     iObjectPropertyMgr.GetPropertyL(EMTPObjectPropCodeStorageID, storageId);
     iObjectInfoToBuild->SetUint32L(CMTPTypeObjectInfo::EStorageID, storageId);	
     
     //2. object format
-    TUint16 format;
+    TUint16 format(0);
     iObjectPropertyMgr.GetPropertyL(EMTPObjectPropCodeObjectFormat, format);
     iObjectInfoToBuild->SetUint16L(CMTPTypeObjectInfo::EObjectFormat, format);
     
     //3. protection status,
-    TUint16 protection;
+    TUint16 protection(0);
     iObjectPropertyMgr.GetPropertyL(EMTPObjectPropCodeProtectionStatus, protection);
     iObjectInfoToBuild->SetUint16L(CMTPTypeObjectInfo::EProtectionStatus, protection);
     
@@ -138,7 +138,7 @@
     //9. image pix width
     //10. image pix height
     //11. image bit depth
-    TUint16 thumbFormat;
+    TUint16 thumbFormat(0);
     iObjectPropertyMgr.GetPropertyL(EMTPObjectPropCodeRepresentativeSampleFormat, thumbFormat);
     iObjectInfoToBuild->SetUint16L(CMTPTypeObjectInfo::EThumbFormat, thumbFormat);
     TUint32 value(0);
@@ -157,7 +157,7 @@
     iObjectInfoToBuild->SetUint32L(CMTPTypeObjectInfo::EImageBitDepth, value);
     
     //12. Parent object
-    TUint32 parent;
+    TUint32 parent(0);
     iObjectPropertyMgr.GetPropertyL(EMTPObjectPropCodeParentObject, parent);
     if(KMTPHandleNoParent == parent)
         {
--- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobjectproplist.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpgetobjectproplist.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -207,7 +207,7 @@
         }
     else
         {
-        iHandles.Append( handle );
+        iHandles.AppendL( handle );
         }
     
     __FLOG(_L8("<< CMTPImageDpGetObjectPropList::GetObjectHandlesL"));
--- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpnewpicturesnotifier.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpnewpicturesnotifier.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -44,6 +44,7 @@
 void CMTPImageDpNewPicturesNotifier::SetNewPictures(TInt aValue)
     {
     iNewPictures = aValue;
+    RProperty::Set(TUid::Uid(KMTPServerUID), KMTPNewPicKey, iNewPictures);
     }
 
 void CMTPImageDpNewPicturesNotifier::IncreaseCount(TInt aValue)
--- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpobjectpropertymgr.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpobjectpropertymgr.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -68,7 +68,9 @@
 CMTPImageDpObjectPropertyMgr::CMTPImagePropertiesCache* CMTPImageDpObjectPropertyMgr::CMTPImagePropertiesCache::NewL()
     {
     CMTPImagePropertiesCache* self = new(ELeave) CMTPImagePropertiesCache(KElements, ENumProperties);
+    CleanupStack::PushL(self);
     self->ConstructL();
+    CleanupStack::Pop(self);
     return self;
     }
 
--- a/mtpdataproviders/mtpimagedp/src/cmtpimagedpsendobjectinfo.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpdataproviders/mtpimagedp/src/cmtpimagedpsendobjectinfo.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -23,7 +23,6 @@
 #include <e32const.h>
 
 #include <mtp/mmtpdataproviderframework.h>
-
 #include <mtp/cmtpobjectmetadata.h>
 #include <mtp/cmtptypefile.h>
 #include <mtp/cmtptypeobjectinfo.h>
@@ -515,7 +514,7 @@
          
     iFramework.ObjectMgr().CommitReservedObjectHandleL(*iReceivedObject);
     //prepare for rollback
-    iRollbackList.Append(RemoveObjectFromDb);        
+    iRollbackList.AppendL(RemoveObjectFromDb);        
     
     ReceiveDataL(*iFileReceived);
     
@@ -1196,7 +1195,7 @@
     iFramework.ObjectMgr().ReserveObjectHandleL(*iReceivedObject, iObjectSize);    
     
     // prepare for rollback
-    iRollbackList.Append(UnreserveObject);    
+    iRollbackList.AppendL(UnreserveObject);    
     __FLOG(_L8("CMTPImageDpSendObjectInfo::ReserveObjectL - Exit"));   
     }
 
@@ -1257,7 +1256,7 @@
     delete iFileReceived;
     iFileReceived = NULL;
     //prepare for rollback
-    iRollbackList.Append(RemoveObjectFromFs);
+    iRollbackList.AppendL(RemoveObjectFromFs);
         
     iFileReceived = CMTPTypeFile::NewL(iFramework.Fs(), iFullPath, EFileWrite);
     iFileReceived->SetSizeL(iObjectSize);
--- a/mtpdataproviders/mtppictbridgedp/inc/s60dependency.h	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpdataproviders/mtppictbridgedp/inc/s60dependency.h	Wed Aug 18 10:38:51 2010 +0300
@@ -24,7 +24,7 @@
 
 #include <e32base.h>
 
-#include <platform/mw/UsbWatcherInternalPSKeys.h>
+#include <platform/mw/usbwatcherinternalpskeys.h>
 #include <platform/mw/usbpersonalityids.h>
 #include <pathinfo.h> 
 #include <featmgr/featmgr.h>
--- a/mtpdataproviders/mtppictbridgedp/src/cmtppictbridgedpsendobjectinfo.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpdataproviders/mtppictbridgedp/src/cmtppictbridgedpsendobjectinfo.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -659,7 +659,16 @@
         //with folder creation.
 
 
-        iFramework.ObjectMgr().CommitReservedObjectHandleL(*iReceivedObjectP);
+        TRAPD(err, iFramework.ObjectMgr().CommitReservedObjectHandleL(*iReceivedObjectP));
+        __FLOG_VA((_L8(" Entry error %d"),err));        
+        if( KErrAlreadyExists == err )
+            {
+            iReceivedObjectP->SetUint(CMTPObjectMetaData::EHandle, iFramework.ObjectMgr().HandleL(iFullPath));
+            }
+        else 
+            {
+            User::LeaveIfError(err);
+            }
         SendResponseL(EMTPRespCodeOK);
         }
     __FLOG(_L8("<< CMTPPictGetObjectPropDesc::DoHandleSendObjectCompleteL"));
--- a/mtpdataproviders/mtppictbridgedp/src/cmtppictbridgeusbconnection.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpdataproviders/mtppictbridgedp/src/cmtppictbridgeusbconnection.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -78,13 +78,19 @@
 //
 void CMTPPictBridgeUsbConnection::Listen()
     {
-    iProperty.Subscribe(iStatus);
-    SetActive();
-    if(ConnectionClosed()) // we listen to the disconnection only if connected to the printer
+    __FLOG(_L8(">> CMTPPictBridgeUsbConnection::Listen"));    
+    if(!IsActive())
         {
-        iPrinter.ConnectionClosed();
-        Cancel();    
+        __FLOG(_L8(" CMTPPictBridgeUsbConnection AO is NOT active and run AO"));
+        iProperty.Subscribe(iStatus);
+        SetActive();
+        if(ConnectionClosed()) // we listen to the disconnection only if connected to the printer
+            {
+            iPrinter.ConnectionClosed();
+            Cancel();    
+            }
         }
+    __FLOG(_L8("<< CMTPPictBridgeUsbConnection::Listen"));    
     }
 
 // --------------------------------------------------------------------------
@@ -97,12 +103,14 @@
     TInt ret = RProperty::Get(KPSUidUsbWatcher, KUsbWatcherSelectedPersonality, personality);
 
     __FLOG_VA((_L8("CMTPPictBridgeUsbConnection::ConnectionClosed() current personality = %d, previous personality = %d"), personality, iPreviousPersonality));  
-    if ((ret == KErrNone && 
-        (personality == KUsbPersonalityIdMS || personality == KUsbPersonalityIdPTP))
+    if ((ret == KErrNone && personality == KUsbPersonalityIdMS)
        || (iPreviousPersonality != KNotAssigned && personality != iPreviousPersonality))
-        { 
-        __FLOG_VA((_L8("****WARNING!!! PTP server detects the USB connection closed!")));  
-        return ETrue;
+        {
+        if((personality != KUsbPersonalityIdPCSuiteMTP)&&(personality != KUsbPersonalityIdMTP))
+            {
+            __FLOG_VA((_L8("****WARNING!!! PTP server detects the USB connection closed!")));  
+            return ETrue;
+            }
         }
 
     iPreviousPersonality = personality;
--- a/mtpfws/mtpfw/common/inc/uiklafinternalcrkeys.h	Tue Jul 06 15:13:34 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-/*
-* Copyright (c) 2004-2008 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:  Internal Central Repository keys.
-*
-*/
-
-
-#ifndef __UIKLAF_INTERNAL_CR_KEYS_H__
-#define __UIKLAF_INTERNAL_CR_KEYS_H__
-
-const TUid KCRUidUiklaf = { 0x101F8774 };
-
-// Helper constants for free disk space levels.
-#define DISK_SPACE_OK        0
-#define DISK_SPACE_WARNING  -1
-#define DISK_SPACE_CRITICAL -2
-
-/**
- * Use KUikOODDiskFreeSpaceWarningNoteLevel instead of this!!
- * Threshold for disk space warning level (bytes).
- * Read-only key. Default value: 196608
- */
-const TUint32 KUikOODDiskWarningThreshold  = 0x00000001;
-
-/**
- * Threshold for disk space critical level (bytes).
- * Read-only key. Default value: 131072
- */
-const TUint32 KUikOODDiskCriticalThreshold = 0x00000002;
-
-/**
- * Threshold for low RAM level (bytes).
- * Read-only key. Default value: 750000
- */
-const TUint32 KUikOOMRamLowThreshold       = 0x00000003;
-
-/**
- * Threshold for good RAM level (bytes).
- * Read-only key. Default value: 1000000
- */
-const TUint32 KUikOOMRamGoodThreshold      = 0x00000004;
-
-/**
- * Timeout for application exit (milliseconds).
- * Read-only key. Default value: 1000000
- */
-const TUint32 KUikOOMMaxAppExitTime        = 0x00000005;
-
-/**
- * Threshold for disk space warning note level as percent of used disk space.
- * Read-only key. Default value: 95
- */
-const TUint32 KUikOODDiskFreeSpaceWarningNoteLevel = 0x00000006;
-
-/**
- * Threshold for disk space warning note level for mass memory.
- * Read-only key. Default value: 20971520
- */
-const TUint32 KUikOODDiskFreeSpaceWarningNoteLevelMassMemory = 0x00000007;
-
-#ifdef __MTP_NAVIENGINE_TEST
-//The free size of C-Drive of NaviEngine env is less than 21M,
-//it will block many ONB test cases
-const TInt KFreeSpaceThreshHoldDefaultValue(0);
-const TInt KFreeSpaceExtraReserved(0);
-
-#else
-//MTP should reserve some disk space to prevent OOD(Out of Disk) monitor 
-//popup 'Out of memory' note.When syncing music through ovi player,
-//sometimes device screen get freeze with this note
-//Be default, this value is read from Central Respository, if error while
-//reading, use this one
-const TInt KFreeSpaceThreshHoldDefaultValue(20*1024*1024);//20M bytes
-
-//Beside the OOD threshold value, we need to reserve extra disk space
-//for harvest server do the harvest, set this as 1M
-const TInt KFreeSpaceExtraReserved(1024*1024);//1M bytes
-
-#endif
-
-#endif __UIKLAF_INTERNAL_CR_KEYS_H__
-
-// End of file
--- a/mtpfws/mtpfw/dataproviders/devdp/inc/cmtpgetnumobjects.h	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/devdp/inc/cmtpgetnumobjects.h	Wed Aug 18 10:38:51 2010 +0300
@@ -49,10 +49,12 @@
 	
 	CMTPGetNumObjects(MMTPDataProviderFramework& aFramework, MMTPConnection& aConnection);
 	void ConstructL();
+    void HandleObjectHandlesUnderMacL(CMTPTypeArray &aObjectHandles);      
 
 private:
 
 	TBool IsSupportedFormatL(TUint32 aFormatCode);
+    void GetObjectHandlesByFormatCodeL(TUint32 aFormatCode, CMTPTypeArray &aObjectHandles);
 			
 protected:
 	/**
--- a/mtpfws/mtpfw/dataproviders/devdp/src/cmtpdevicedp.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/devdp/src/cmtpdevicedp.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -388,7 +388,9 @@
 
 		if(extnpluginMap )
 			{
-			iExtnPluginMapArray.Append(extnpluginMap);
+            CleanupStack::PushL(extnpluginMap);
+			iExtnPluginMapArray.AppendL(extnpluginMap);
+			CleanupStack::Pop(extnpluginMap);
 			}
 
 		}
@@ -481,7 +483,7 @@
     
     __ASSERT_ALWAYS( isFolder, User::Leave( KErrArgument ));
     __ASSERT_ALWAYS( aParentHandle != KMTPHandleNone, User::Leave( KErrArgument ));
-    __ASSERT_ALWAYS( Framework().StorageMgr().ValidStorageId( aStorageId ), User::Invariant());
+    __ASSERT_ALWAYS( Framework().StorageMgr().ValidStorageId( aStorageId ), User::Leave( KErrArgument ));
 
     __FLOG_VA((_L16("Add Entry for Path:%S"), &aPath ));
     aObjectInfo.SetUint( CMTPObjectMetaData::EDataProviderId, Framework().DataProviderId() );
--- a/mtpfws/mtpfw/dataproviders/devdp/src/cmtpdevicedpconfigmgr.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/devdp/src/cmtpdevicedpconfigmgr.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -256,7 +256,7 @@
 			//Ignore the duplicate value.
 			if( aOrderInfoArray.Find(formatInt) == KErrNotFound )
 				{
-				aOrderInfoArray.Append(formatInt);
+				aOrderInfoArray.AppendL(formatInt);
 				}
 			}
 		}
--- a/mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetdeviceinfo.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetdeviceinfo.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -318,7 +318,7 @@
 		{
 		supportedCaptureFormats.Remove(index);
 		//insert at insertindex position to make sure that value inserted at begening.
-		supportedCaptureFormats.Insert(orderedFormats[orderedElements], insertIndex);
+		supportedCaptureFormats.InsertL(orderedFormats[orderedElements], insertIndex);
 		insertIndex++;
 		}//else nothing 	  	
 		}
@@ -381,7 +381,7 @@
 			{
 			supportedPlaybackFormats.Remove(index);
 			//insert at insertindex position to make sure that value inserted at begening.
-			supportedPlaybackFormats.Insert(orderedFormats[orderedElements], insertIndex);
+			supportedPlaybackFormats.InsertL(orderedFormats[orderedElements], insertIndex);
 			insertIndex++;
 			}//else nothing 	  	
  		}
--- a/mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetnumobjects.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetnumobjects.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -13,6 +13,7 @@
 // Description:
 //
 
+
 #include <mtp/tmtptyperequest.h>
 #include <mtp/mmtpdataproviderframework.h>
 #include <mtp/mmtpobjectmgr.h>
@@ -153,18 +154,11 @@
 	if(iDevDpSingletons.DeviceDataStore().IsConnectMac()
         &&(KMTPFormatsAll == Request().Uint32(TMTPTypeRequest::ERequestParameter2)))
         {
-        //get folder count
-    	TMTPObjectMgrQueryParams paramsFolder(Request().Uint32(TMTPTypeRequest::ERequestParameter1), EMTPFormatCodeAssociation, Request().Uint32(TMTPTypeRequest::ERequestParameter3));        
-    	TUint32 count = iFramework.ObjectMgr().CountL(paramsFolder);
-        __FLOG_VA((_L8("ConnectMac and Fetch all, folder count = %d"), count));
-
-        //get script count
-        TMTPObjectMgrQueryParams paramsScript(Request().Uint32(TMTPTypeRequest::ERequestParameter1), EMTPFormatCodeScript, Request().Uint32(TMTPTypeRequest::ERequestParameter3));
-        count += iFramework.ObjectMgr().CountL(paramsScript);
-        
-        //get Image file count
-        TMTPObjectMgrQueryParams paramsImage(Request().Uint32(TMTPTypeRequest::ERequestParameter1), EMTPFormatCodeEXIFJPEG, Request().Uint32(TMTPTypeRequest::ERequestParameter3));
-        count += iFramework.ObjectMgr().CountL(paramsImage);
+        TUint32 count(0);
+    	CMTPTypeArray *handles = CMTPTypeArray::NewLC(EMTPTypeAUINT32);
+        HandleObjectHandlesUnderMacL(*handles);
+        count = handles->NumElements();
+        CleanupStack::PopAndDestroy(handles);         
         __FLOG_VA((_L8("ConnectMac and Fetch all, total count = %d"), count));        
     	SendResponseL(EMTPRespCodeOK, 1, &count); 
         }
@@ -201,26 +195,106 @@
 	}
 
 
-
-
-
-
-
-
-
-
-
-	
+/**
+Handle special case under Mac.
+Only expose the Folder, Image File and Viedo, Script under Drive:\Images, Drive\Viedos
+*/
+void CMTPGetNumObjects::HandleObjectHandlesUnderMacL(CMTPTypeArray &aObjectHandles)
+    {
+    __FLOG(_L8("HandleObjectHandlesUnderMacL - Entry"));
+    
+    CMTPTypeArray* totalHandles = CMTPTypeArray::NewLC(EMTPTypeAUINT32);
+    
+    //get folder object handles    
+    GetObjectHandlesByFormatCodeL(EMTPFormatCodeAssociation,*totalHandles);
+    
+    //get image/jpeg object handles
+    GetObjectHandlesByFormatCodeL(EMTPFormatCodeEXIFJPEG,*totalHandles);
+    //get image/bmp object handles
+    GetObjectHandlesByFormatCodeL(EMTPFormatCodeBMP,*totalHandles);
+    //get image/jif object handles
+    GetObjectHandlesByFormatCodeL(EMTPFormatCodeGIF,*totalHandles);
+    //get image/jpeg object handles
+    GetObjectHandlesByFormatCodeL(EMTPFormatCodePNG,*totalHandles);
+    
+    //get video/mp4 object handles
+    GetObjectHandlesByFormatCodeL(EMTPFormatCodeMP4Container,*totalHandles);
+    //get video/3gp object handles
+    GetObjectHandlesByFormatCodeL(EMTPFormatCode3GPContainer,*totalHandles);
+    //get video/wmv object handles
+    GetObjectHandlesByFormatCodeL(EMTPFormatCodeWMV,*totalHandles); 
+    //get video/asf object handles
+    GetObjectHandlesByFormatCodeL(EMTPFormatCodeASF,*totalHandles); 
+    
+    //Filer the folder list, ?:\\Images\\* and ?:\\Videos\\*
+    _LIT(KImagesFolderPre, "?:\\Images\\*");
+    _LIT(KViedosFolderPre, "?:\\Videos\\*");    
+   
+    const TUint KCount(totalHandles->NumElements());
+    
+    for (TUint i(0); (i < KCount); i++)//handles loop
+        {
+         CMTPObjectMetaData* object(CMTPObjectMetaData::NewLC());
+         iFramework.ObjectMgr().ObjectL(totalHandles->ElementUint(i),*object);
+         const TDesC& suid(object->DesC(CMTPObjectMetaData::ESuid));
+         
+#ifdef __FLOG_ACTIVE    
+        TBuf8<KMaxFileName> tmp;
+        tmp.Copy(suid);
+        __FLOG_VA((_L8("HandleObjectHandlesUnderMacL - suid: %S"), &tmp));
+#endif // __FLOG_ACTIVE
+         if((KErrNotFound != suid.MatchF(KImagesFolderPre)) ||
+            (KErrNotFound != suid.MatchF(KViedosFolderPre)))
+            {
+        	_LIT(KComma,",");
+        	_LIT(KLineation,"-");
+        	_LIT(KUnderline,"_");
+        	_LIT(Ksemicolon ,";");
+            if((KErrNotFound != suid.Find(KComma))||
+                (KErrNotFound != suid.Find(KLineation))||
+                (KErrNotFound != suid.Find(KUnderline))||
+                (KErrNotFound != suid.Find(Ksemicolon)))
+                {
+                __FLOG(_L8("HandleObjectHandlesUnderMacL - Skip handle"));
+                }
+            else
+                {
+                __FLOG_VA((_L8("HandleObjectHandlesUnderMacL - Add handle: %x"), totalHandles->ElementUint(i)));
+                RArray<TUint>   tmphandles;
+                CleanupClosePushL(tmphandles);
+                tmphandles.AppendL(totalHandles->ElementUint(i));
+                aObjectHandles.AppendL(tmphandles);
+                CleanupStack::PopAndDestroy(&tmphandles);                
+                }
+            }
+         CleanupStack::PopAndDestroy(object);
+        }
+    
+    CleanupStack::PopAndDestroy(totalHandles);
+    //get script object handles    
+    GetObjectHandlesByFormatCodeL(EMTPFormatCodeScript,aObjectHandles);
+    
+    __FLOG(_L8("HandleObjectHandlesUnderMacL - Exit"));    
+    }
+/**
+Get Object Handles by format code
+*/
+void CMTPGetNumObjects::GetObjectHandlesByFormatCodeL(TUint32 aFormatCode, CMTPTypeArray &aObjectHandles)
+    {
+    __FLOG_VA((_L8("GetObjectHandlesByFormatCodeL - Entry FormatCode: %x"), aFormatCode));    
+    RMTPObjectMgrQueryContext   context;
+    RArray<TUint>               handles;   
+    CleanupClosePushL(context);
+    CleanupClosePushL(handles);    
+    TMTPObjectMgrQueryParams    paramsFolder(Request().Uint32(TMTPTypeRequest::ERequestParameter1), aFormatCode, Request().Uint32(TMTPTypeRequest::ERequestParameter3));  
+    do
+        {
+        iFramework.ObjectMgr().GetObjectHandlesL(paramsFolder, context, handles);
+        aObjectHandles.AppendL(handles);
+        }
+    while (!context.QueryComplete());
+    CleanupStack::PopAndDestroy(&context);
+    CleanupStack::PopAndDestroy(&handles);
+    __FLOG(_L8("GetObjectHandlesByFormatCode - Exit"));    
+    }
 
-	
-
-
-   	
-
-	
-
-
-
-
-
-
--- a/mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetobjecthandles.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetobjecthandles.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -107,10 +107,6 @@
     
     iTimeoutCount = 0;
     
-	RMTPObjectMgrQueryContext   context;
-	RArray<TUint>               handles;
-	CleanupClosePushL(context);
-	CleanupClosePushL(handles);
 	delete iHandles;
 	iHandles = CMTPTypeArray::NewL(EMTPTypeAUINT32);
 
@@ -119,47 +115,14 @@
        &&(KMTPFormatsAll == Request().Uint32(TMTPTypeRequest::ERequestParameter2)))
         {
         __FLOG(_L8("ConnectMac and Fetch all."));
-        //get folder object handles
-    	TMTPObjectMgrQueryParams    paramsFolder(Request().Uint32(TMTPTypeRequest::ERequestParameter1), EMTPFormatCodeAssociation, Request().Uint32(TMTPTypeRequest::ERequestParameter3));	
-    	do
-    	    {
-        	iFramework.ObjectMgr().GetObjectHandlesL(paramsFolder, context, handles);
-        	iHandles->AppendL(handles);
-    	    }
-    	while (!context.QueryComplete());
-
-        //get script object handles
-    	RMTPObjectMgrQueryContext   contextScript;
-    	RArray<TUint>               handlesScript;
-    	CleanupClosePushL(contextScript);
-    	CleanupClosePushL(handlesScript);            
-    	TMTPObjectMgrQueryParams    paramsScript(Request().Uint32(TMTPTypeRequest::ERequestParameter1), EMTPFormatCodeScript, Request().Uint32(TMTPTypeRequest::ERequestParameter3));	
-    	do
-    	    {
-        	iFramework.ObjectMgr().GetObjectHandlesL(paramsScript, contextScript, handlesScript);
-        	iHandles->AppendL(handlesScript);
-    	    }
-    	while (!contextScript.QueryComplete());
-    	CleanupStack::PopAndDestroy(&contextScript);
-    	CleanupStack::PopAndDestroy(&handlesScript);        
-
-        //get image object handles
-    	RMTPObjectMgrQueryContext   contextImage;
-    	RArray<TUint>               handlesImage;
-    	CleanupClosePushL(contextImage);
-    	CleanupClosePushL(handlesImage);            
-    	TMTPObjectMgrQueryParams    paramsImage(Request().Uint32(TMTPTypeRequest::ERequestParameter1), EMTPFormatCodeEXIFJPEG, Request().Uint32(TMTPTypeRequest::ERequestParameter3));	
-    	do
-    	    {
-        	iFramework.ObjectMgr().GetObjectHandlesL(paramsImage, contextImage, handlesImage);
-        	iHandles->AppendL(handlesImage);
-    	    }
-    	while (!contextImage.QueryComplete());
-    	CleanupStack::PopAndDestroy(&contextImage);
-    	CleanupStack::PopAndDestroy(&handlesImage);                            
+        HandleObjectHandlesUnderMacL(*iHandles);
         }
     else
         {
+    	RMTPObjectMgrQueryContext   context;
+    	RArray<TUint>               handles;
+    	CleanupClosePushL(context);
+    	CleanupClosePushL(handles);        
     	TMTPObjectMgrQueryParams    params(Request().Uint32(TMTPTypeRequest::ERequestParameter1), Request().Uint32(TMTPTypeRequest::ERequestParameter2), Request().Uint32(TMTPTypeRequest::ERequestParameter3));	
     	do
     	    {
@@ -185,7 +148,7 @@
 	                if ( index != KErrNotFound )
 	                    {
 	                    handles.Remove(index);
-	                    handles.Insert(handle,0);
+	                    handles.InsertL(handle,0);
 	                    }
 	                }   
 	            delete StorageSuid;
@@ -194,13 +157,11 @@
             	}
         	iHandles->AppendL(handles);
     	    }
-    	while (!context.QueryComplete());        
+    	while (!context.QueryComplete()); 
+    	CleanupStack::PopAndDestroy(&handles);
+    	CleanupStack::PopAndDestroy(&context);        
         }        
-    	
-        
-
-	CleanupStack::PopAndDestroy(&handles);
-	CleanupStack::PopAndDestroy(&context);					
+    						
 	SendDataL(*iHandles);
     __FLOG(_L8("ServiceL - Exit"));	    
 	}
--- a/mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetstorageinfo.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/devdp/src/cmtpgetstorageinfo.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -26,10 +26,7 @@
 #include "rmtpdevicedpsingletons.h"
 #include "cmtpdevicedpconfigmgr.h"
 #include "mtpframeworkconst.h"
-
-//This file is exported from s60 sdk, now just copy it
-//to make sure onb can run
-#include "UiklafInternalCRKeys.h"
+#include "mtpcommonconst.h"
 
 // Class constants.
 __FLOG_STMT(_LIT8(KComponent,"GetStorageInfo");)
@@ -199,7 +196,7 @@
 		        {
 		        //E: is set as logically removable after eMMC image updated
 		        //So here we need to deal with this case to set it as FixedRam
-		        if(iDriveInfo.iDriveAtt & KDriveAttInternal)
+		        if(iDriveInfo.iDriveAtt & KDriveAttLogicallyRemovable)
 		            {
 		            __FLOG(_L8("removable but internal drive, set as Fixed RAM"));
 		            storageType = EMTPStorageFixedRAM;
--- a/mtpfws/mtpfw/dataproviders/devdp/src/cmtptypedeviceinfo.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/devdp/src/cmtptypedeviceinfo.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -130,7 +130,9 @@
                 }
                 
             __ASSERT_DEBUG(chunk, User::Invariant());
+            CleanupStack::PushL(chunk);
             ChunkAppendL(*chunk);
+            CleanupStack::Pop(chunk);
             }
         }
     }
--- a/mtpfws/mtpfw/dataproviders/dputility/src/cmtpfsenumerator.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/dputility/src/cmtpfsenumerator.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -122,7 +122,7 @@
         const TUint KCount(storages.Count());
         for (TUint i(0); (i < KCount); i++)
             {
-            iStorages.Insert(storages[i]->Uint(CMTPStorageMetaData::EStorageId),0);
+            iStorages.InsertL(storages[i]->Uint(CMTPStorageMetaData::EStorageId),0);
             __FLOG_VA((_L8("FileEnumerator is doing storage id = %x\r\n"), storages[i]->Uint(CMTPStorageMetaData::EStorageId) ));
             }
         CleanupStack::PopAndDestroy(&storages);
@@ -396,18 +396,27 @@
 TInt CMTPFSEnumerator::RunError(TInt aError)
 	{
 	__FLOG_VA((_L8("RunError - entry with error %d"), aError));
-	 if(!iFramework.StorageMgr().ValidStorageId(iStorages[iScanPos]))
-		 {
-		 __FLOG_VA((_L8("Invalid StorageID = %d"),iStorages[iScanPos] ));
-		 if (iStorages.Count()>1)
-			 {
-			 //Not necessary to process any entry on the storage, since the storage removed.
-			 //Then need to start from root dir of next storage if there is.
-			 //So, the dir stack is popped to bottom.
-			 iDirStack.Reset();
-			 }
-		 iSkipCurrentStorage = ETrue;
-		 }
+	
+	// avoid to access overflow of iStorages
+    if (iScanPos < iStorages.Count())
+        {
+        if(!iFramework.StorageMgr().ValidStorageId(iStorages[iScanPos]))
+            {
+             __FLOG_VA((_L8("Invalid StorageID = %d"),iStorages[iScanPos] ));
+             if (iStorages.Count()>1)
+                 {
+                 //Not necessary to process any entry on the storage, since the storage removed.
+                 //Then need to start from root dir of next storage if there is.
+                 //So, the dir stack is popped to bottom.
+                 iDirStack.Reset();
+                 }
+             iSkipCurrentStorage = ETrue;
+            }
+        }
+    else
+        {
+        iSkipCurrentStorage = ETrue;
+        }
 	
 	// Reschedule ourselves
 	TRequestStatus* status = &iStatus;
@@ -501,7 +510,7 @@
                 ++len;
                 format = EMTPFormatCodeAssociation;
                 AddEntryL(iCurrentPath, handle, format, KMTPDeviceDPID, entry, iStorages[iScanPos], iParentHandle);
-                iDirStack.Append(TStackItem(iCurrentPath, handle));
+                iDirStack.AppendL(TStackItem(iCurrentPath, handle));
                 }
             }
         else
@@ -548,10 +557,16 @@
                                 __FLOG_VA((_L("mime %S"), mime));
                                 DpId = iDpSingletons.MTPUtility().GetDpIdL(parse.Ext().Mid(1),*mime);
                                 __FLOG_VA((_L("DpId find %d"), DpId));
+								
+								format = iDpSingletons.MTPUtility().GetFormatCodeByMimeTypeL(parse.Ext().Mid(1),*mime);
+								AddFileEntryForOtherDpL(iCurrentPath, handle, format, DpId, entry, iStorages[iScanPos], 
+										iParentHandle, iDpSingletons.MTPUtility().GetSubFormatCodeL(parse.Ext().Mid(1),*mime));
                                 }
-                            format = iDpSingletons.MTPUtility().GetFormatCodeByMimeTypeL(parse.Ext().Mid(1),*mime);
-                            AddFileEntryForOtherDpL(iCurrentPath, handle, format, DpId, entry, iStorages[iScanPos], 
-                                    iParentHandle, iDpSingletons.MTPUtility().GetSubFormatCodeL(parse.Ext().Mid(1),*mime));
+							else
+                                {
+                                AddEntryL(iCurrentPath, handle, EMTPFormatCodeUndefined, iDpID, entry, iStorages[iScanPos], iParentHandle);
+                                }
+
                             CleanupStack::PopAndDestroy(mime);
                             }
                         else
--- a/mtpfws/mtpfw/dataproviders/dputility/src/cmtpgetformatcapabilities.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/dputility/src/cmtpgetformatcapabilities.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -95,44 +95,71 @@
     CMTPTypeFormatCapability* frmCap = CMTPTypeFormatCapability::NewLC( EMTPFormatCodeAssociation ,interDesc );
     
     //EMTPObjectPropCodeStorageID
-    frmCap->AppendL( CMTPTypeObjectPropDesc::NewL(EMTPObjectPropCodeStorageID) );
+    CMTPTypeObjectPropDesc* storageId = CMTPTypeObjectPropDesc::NewLC(EMTPObjectPropCodeStorageID);
+    frmCap->AppendL(storageId);
+    CleanupStack::Pop(storageId);
     
     //EMTPObjectPropCodeObjectFormat
-    frmCap->AppendL( CMTPTypeObjectPropDesc::NewL(EMTPObjectPropCodeObjectFormat) );
+    CMTPTypeObjectPropDesc* objFormat = CMTPTypeObjectPropDesc::NewLC(EMTPObjectPropCodeObjectFormat);
+    frmCap->AppendL(objFormat);
+    CleanupStack::Pop(objFormat);
     
     //EMTPObjectPropCodeProtectionStatus
-    frmCap->AppendL( ServiceProtectionStatusL() );
+    CMTPTypeObjectPropDesc* protectionStatus = ServiceProtectionStatusL();
+    CleanupStack::PushL(protectionStatus);
+    frmCap->AppendL(protectionStatus);
+    CleanupStack::Pop(protectionStatus);
     
     //EMTPObjectPropCodeAssociationType
-    frmCap->AppendL( ServiceAssociationTypeL() );
+    CMTPTypeObjectPropDesc* associationType = ServiceAssociationTypeL();
+    CleanupStack::PushL(associationType);
+    frmCap->AppendL(associationType);
+    CleanupStack::Pop(associationType);
     
     //EMTPObjectPropCodeAssociationDesc
-    frmCap->AppendL( CMTPTypeObjectPropDesc::NewL(EMTPObjectPropCodeAssociationDesc) );
+    CMTPTypeObjectPropDesc* associationDesc = CMTPTypeObjectPropDesc::NewLC(EMTPObjectPropCodeAssociationDesc);
+    frmCap->AppendL(associationDesc);
+    CleanupStack::Pop(associationDesc);
     
     //EMTPObjectPropCodeObjectSize
-    frmCap->AppendL( CMTPTypeObjectPropDesc::NewL(EMTPObjectPropCodeObjectSize) );
+    CMTPTypeObjectPropDesc* objSize = CMTPTypeObjectPropDesc::NewLC(EMTPObjectPropCodeObjectSize);
+    frmCap->AppendL(objSize);
+    CleanupStack::Pop(objSize);
     
     //EMTPObjectPropCodeObjectFileName
     _LIT(KMtpObjDescObjFileName, "[a-zA-Z!#\\$%&'\\(\\)\\-0-9@\\^_\\`\\{\\}\\~][a-zA-Z!#\\$%&'\\(\\)\\-0-9@\\^_\\`\\{\\}\\~ ]{0, 7}\\.[[a-zA-Z!#\\$%&'\\(\\)\\-0-9@\\^_\\`\\{\\}\\~][a-zA-Z!#\\$%&'\\(\\)\\-0-9@\\^_\\`\\{\\}\\~ ]{0, 2}]?");
-    CMTPTypeString* form = CMTPTypeString::NewLC( KMtpObjDescObjFileName );   
-    frmCap->AppendL(CMTPTypeObjectPropDesc::NewL( EMTPObjectPropCodeObjectFileName,
-            CMTPTypeObjectPropDesc::ERegularExpressionForm, form));
+    CMTPTypeString* form = CMTPTypeString::NewLC( KMtpObjDescObjFileName ); 
+    CMTPTypeObjectPropDesc* objFileName = CMTPTypeObjectPropDesc::NewLC( EMTPObjectPropCodeObjectFileName,
+                CMTPTypeObjectPropDesc::ERegularExpressionForm, form);
+    frmCap->AppendL(objFileName);
+    CleanupStack::Pop(objFileName);
     CleanupStack::PopAndDestroy(form );       
     
     //EMTPObjectPropCodeDateModified
-    frmCap->AppendL(  CMTPTypeObjectPropDesc::NewL(EMTPObjectPropCodeDateModified) );
+    CMTPTypeObjectPropDesc* dateModified = CMTPTypeObjectPropDesc::NewLC(EMTPObjectPropCodeDateModified);
+    frmCap->AppendL(dateModified);
+    CleanupStack::Pop(dateModified);
     
     //EMTPObjectPropCodeParentObject
-    frmCap->AppendL( CMTPTypeObjectPropDesc::NewL(EMTPObjectPropCodeParentObject) );
+    CMTPTypeObjectPropDesc* parentobj = CMTPTypeObjectPropDesc::NewLC(EMTPObjectPropCodeParentObject);
+    frmCap->AppendL(parentobj);
+    CleanupStack::Pop(parentobj);
     
     //EMTPObjectPropCodePersistentUniqueObjectIdentifier
-    frmCap->AppendL( CMTPTypeObjectPropDesc::NewL(EMTPObjectPropCodePersistentUniqueObjectIdentifier) );
+    CMTPTypeObjectPropDesc* objectIdentifier = CMTPTypeObjectPropDesc::NewLC(EMTPObjectPropCodePersistentUniqueObjectIdentifier);
+    frmCap->AppendL(objectIdentifier);
+    CleanupStack::Pop(objectIdentifier);
     
     //EMTPObjectPropCodeName
-    frmCap->AppendL( CMTPTypeObjectPropDesc::NewL(EMTPObjectPropCodeName)); 
+    CMTPTypeObjectPropDesc* name = CMTPTypeObjectPropDesc::NewLC(EMTPObjectPropCodeName);
+    frmCap->AppendL(name);
+    CleanupStack::Pop(name);
     
     //EMTPObjectPropCodeNonConsumable
-    frmCap->AppendL(ServiceNonConsumableL() );
+    CMTPTypeObjectPropDesc* nonConsumable = ServiceNonConsumableL();
+    CleanupStack::PushL(nonConsumable);
+    frmCap->AppendL(nonConsumable);
+    CleanupStack::Pop(nonConsumable);
     
     iCapabilityList->AppendL(frmCap);
     CleanupStack::Pop(frmCap);
@@ -146,38 +173,60 @@
     CMTPTypeFormatCapability* frmCap = CMTPTypeFormatCapability::NewLC( aFormatCode ,interDesc );
     
     //EMTPObjectPropCodeStorageID
-    frmCap->AppendL( CMTPTypeObjectPropDesc::NewL(EMTPObjectPropCodeStorageID) );
+    CMTPTypeObjectPropDesc* storageID = CMTPTypeObjectPropDesc::NewLC(EMTPObjectPropCodeStorageID);
+    frmCap->AppendL(storageID);
+    CleanupStack::Pop(storageID);
     
     //EMTPObjectPropCodeObjectFormat
-    frmCap->AppendL( CMTPTypeObjectPropDesc::NewL(EMTPObjectPropCodeObjectFormat) );
+    CMTPTypeObjectPropDesc* objectFormat = CMTPTypeObjectPropDesc::NewLC(EMTPObjectPropCodeObjectFormat);
+    frmCap->AppendL(objectFormat);
+    CleanupStack::Pop(objectFormat);
     
     //EMTPObjectPropCodeProtectionStatus
-    frmCap->AppendL( ServiceProtectionStatusL() );
+    CMTPTypeObjectPropDesc* protectionStatus = ServiceProtectionStatusL();
+    CleanupStack::PushL(protectionStatus);
+    frmCap->AppendL(protectionStatus);
+    CleanupStack::Pop(protectionStatus);
     
     //EMTPObjectPropCodeObjectSize
-    frmCap->AppendL( CMTPTypeObjectPropDesc::NewL(EMTPObjectPropCodeObjectSize) );
+    CMTPTypeObjectPropDesc* objSize = CMTPTypeObjectPropDesc::NewLC(EMTPObjectPropCodeObjectSize);
+    frmCap->AppendL(objSize);
+    CleanupStack::Pop(objSize);
     
     //EMTPObjectPropCodeObjectFileName
     _LIT(KMtpObjDescObjFileName, "[a-zA-Z!#\\$%&'\\(\\)\\-0-9@\\^_\\`\\{\\}\\~][a-zA-Z!#\\$%&'\\(\\)\\-0-9@\\^_\\`\\{\\}\\~ ]{0, 7}\\.[[a-zA-Z!#\\$%&'\\(\\)\\-0-9@\\^_\\`\\{\\}\\~][a-zA-Z!#\\$%&'\\(\\)\\-0-9@\\^_\\`\\{\\}\\~ ]{0, 2}]?");
-    CMTPTypeString* form = CMTPTypeString::NewLC( KMtpObjDescObjFileName );   
-    frmCap->AppendL(CMTPTypeObjectPropDesc::NewL( EMTPObjectPropCodeObjectFileName,
-            CMTPTypeObjectPropDesc::ERegularExpressionForm, form));
+    CMTPTypeString* form = CMTPTypeString::NewLC( KMtpObjDescObjFileName );
+    CMTPTypeObjectPropDesc* objFileName = CMTPTypeObjectPropDesc::NewLC( EMTPObjectPropCodeObjectFileName,
+                CMTPTypeObjectPropDesc::ERegularExpressionForm, form);
+    frmCap->AppendL(objFileName);
+    CleanupStack::Pop(objFileName);
     CleanupStack::PopAndDestroy(form );     
     
     //EMTPObjectPropCodeDateModified
-    frmCap->AppendL(  CMTPTypeObjectPropDesc::NewL(EMTPObjectPropCodeDateModified) );
+    CMTPTypeObjectPropDesc* dateModified = CMTPTypeObjectPropDesc::NewLC(EMTPObjectPropCodeDateModified);
+    frmCap->AppendL(dateModified);
+    CleanupStack::Pop(dateModified);
     
     //EMTPObjectPropCodeParentObject
-    frmCap->AppendL( CMTPTypeObjectPropDesc::NewL(EMTPObjectPropCodeParentObject) );
+    CMTPTypeObjectPropDesc* parentObject = CMTPTypeObjectPropDesc::NewLC(EMTPObjectPropCodeParentObject);
+    frmCap->AppendL(parentObject);
+    CleanupStack::Pop(parentObject);
     
     //EMTPObjectPropCodePersistentUniqueObjectIdentifier
-    frmCap->AppendL( CMTPTypeObjectPropDesc::NewL(EMTPObjectPropCodePersistentUniqueObjectIdentifier) );
+    CMTPTypeObjectPropDesc* objectIdentifier = CMTPTypeObjectPropDesc::NewLC(EMTPObjectPropCodePersistentUniqueObjectIdentifier);
+    frmCap->AppendL(objectIdentifier);
+    CleanupStack::Pop(objectIdentifier);
     
     //EMTPObjectPropCodeName
-    frmCap->AppendL( CMTPTypeObjectPropDesc::NewL(EMTPObjectPropCodeName)); 
+    CMTPTypeObjectPropDesc* name = CMTPTypeObjectPropDesc::NewLC(EMTPObjectPropCodeName);
+    frmCap->AppendL(name);
+    CleanupStack::Pop(name);
     
     //EMTPObjectPropCodeNonConsumable
-    frmCap->AppendL(ServiceNonConsumableL() );
+    CMTPTypeObjectPropDesc* nonConsumable = ServiceNonConsumableL();
+    CleanupStack::PushL(nonConsumable);
+    frmCap->AppendL(nonConsumable);
+    CleanupStack::Pop(nonConsumable);
     
     iCapabilityList->AppendL(frmCap);
     CleanupStack::Pop(frmCap);
--- a/mtpfws/mtpfw/dataproviders/dputility/src/cmtpknowledgehandler.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/dputility/src/cmtpknowledgehandler.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -747,7 +747,7 @@
 		TInt count = sizeof(KMTPFullEnumSyncKnowledgeObjectProperties) / sizeof(KMTPFullEnumSyncKnowledgeObjectProperties[0]);
 		for (TInt i = 0; i < count; i++)
 			{
-			aPropCodes.Append(KMTPFullEnumSyncKnowledgeObjectProperties[i]);
+			aPropCodes.AppendL(KMTPFullEnumSyncKnowledgeObjectProperties[i]);
 			}
 		}
 	else if(2 == aGroupId)
--- a/mtpfws/mtpfw/dataproviders/dputility/src/cmtpmoveobject.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/dputility/src/cmtpmoveobject.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -36,7 +36,7 @@
 */    
 const TMTPRequestElementInfo KMTPMoveObjectPolicy[] = 
     {
-    	{TMTPTypeRequest::ERequestParameter1, EMTPElementTypeObjectHandle, EMTPElementAttrFileOrDir | EMTPElementAttrWrite, 0, 0, 0},   	
+    	{TMTPTypeRequest::ERequestParameter1, EMTPElementTypeObjectHandle, EMTPElementAttrFileOrDir, 0, 0, 0},   	
         {TMTPTypeRequest::ERequestParameter2, EMTPElementTypeStorageId, EMTPElementAttrWrite, 0, 0, 0},                
         {TMTPTypeRequest::ERequestParameter3, EMTPElementTypeObjectHandle, EMTPElementAttrDir, 1, 0, 0}
     };
--- a/mtpfws/mtpfw/dataproviders/dputility/src/cmtpsendobjectinfo.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/dputility/src/cmtpsendobjectinfo.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -540,7 +540,7 @@
             }
         }
 
-    if (result)
+    if (result && !iIsFolder)
         {    
         result &= !Exists(iFullPath);
         if (!result)
@@ -613,7 +613,7 @@
             }
         }
         
-    if (result) 
+    if (result && !iIsFolder)
         {
         result = !Exists(iFullPath);
         if (!result)
@@ -1100,18 +1100,28 @@
     iReceivedObject->SetUint(CMTPObjectMetaData::EStorageId, iStorageId);
     iReceivedObject->SetDesCL(CMTPObjectMetaData::ESuid, iFullPath);
     
-    iFramework.ObjectMgr().ReserveObjectHandleL(*iReceivedObject, iObjectSize);    
-    
     if(iIsFolder)
         {
-        SetPropertiesL(); 
-        iFramework.ObjectMgr().CommitReservedObjectHandleL(*iReceivedObject);       
+        SetPropertiesL();
+        TUint32 handle = iFramework.ObjectMgr().HandleL(iFullPath);
+        if (handle != KMTPHandleNone)
+            {
+            // The folder is already in DB
+            iReceivedObject->SetUint(CMTPObjectMetaData::EHandle, handle);
+            iFramework.ObjectMgr().ModifyObjectL(*iReceivedObject);
+            }
+        else
+            {
+            iFramework.ObjectMgr().ReserveObjectHandleL(*iReceivedObject, iObjectSize);
+            iFramework.ObjectMgr().CommitReservedObjectHandleL(*iReceivedObject);
+            }
         }
     else
-    	{
-    	iExpectedSendObjectRequest.SetUint32(TMTPTypeRequest::ERequestSessionID, iSessionId);
-    	iFramework.RouteRequestRegisterL(iExpectedSendObjectRequest, iConnection);
-    	}
+        {
+        iFramework.ObjectMgr().ReserveObjectHandleL(*iReceivedObject, iObjectSize);    
+        iExpectedSendObjectRequest.SetUint32(TMTPTypeRequest::ERequestSessionID, iSessionId);
+        iFramework.RouteRequestRegisterL(iExpectedSendObjectRequest, iConnection);
+        }
     TUint32 parameters[3];
     parameters[0] = iStorageId;
     parameters[1] = iParentHandle;
@@ -1124,7 +1134,10 @@
     {
     if (iIsFolder)
         {
-        User::LeaveIfError(iFramework.Fs().MkDirAll(iFullPath));
+        if (!Exists(iFullPath))
+            {
+            User::LeaveIfError(iFramework.Fs().MkDirAll(iFullPath));
+            }
         }
     else
         {
--- a/mtpfws/mtpfw/dataproviders/dputility/src/rmtputility.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/dputility/src/rmtputility.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -526,6 +526,7 @@
         if (KErrNone != iFramework->Fs().Entry(entryName, entry))
             {
             // Skip objects that don't use the file path as SUID.
+            CleanupStack::PopAndDestroy(&rightPartName);            
             CleanupStack::PopAndDestroy(&entryName);
             continue;
             }        
--- a/mtpfws/mtpfw/dataproviders/proxydp/src/cmtpdeleteobjectproplist.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/dataproviders/proxydp/src/cmtpdeleteobjectproplist.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -148,7 +148,7 @@
         dpid = iSingletons.ObjectMgr().ObjectOwnerId( temp.Uint32(TMTPTypeDataPair::EOwnerHandle) );
         if ( tmpDpid != dpid )
             {
-            iTargetDps.Append(dpid);
+            iTargetDps.AppendL(dpid);
             CMTPTypeDeleteObjectPropList* dataset = CMTPTypeDeleteObjectPropList::NewLC();
             iSubDatasets.AppendL( dataset );
             dataset->AppendL( element);
--- a/mtpfws/mtpfw/datatypes/group/mtpdatatypes.mmp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/datatypes/group/mtpdatatypes.mmp	Wed Aug 18 10:38:51 2010 +0300
@@ -37,8 +37,8 @@
 MW_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 USERINCLUDE     ../inc
-//For UiklafInternalCRKeys.h,should be removed, after we switched to DFs
-USERINCLUDE		../../common/inc
+USERINCLUDE 	../../inc
+
 
 
 SOURCEPATH      ../src
--- a/mtpfws/mtpfw/datatypes/interface/mtpprotocolconstants.h	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/datatypes/interface/mtpprotocolconstants.h	Wed Aug 18 10:38:51 2010 +0300
@@ -368,7 +368,7 @@
     EMTPRespCodeCaptureAlreadyTerminated                = 0x2018,
     EMTPRespCodeDeviceBusy                              = 0x2019,
     EMTPRespCodeInvalidParentObject                     = 0x201A,
-    EMTPRespCodeInvalidDeviEMTPRespCodecePropFormat     = 0x201B,
+    EMTPRespCodeInvalidDevicePropFormat                 = 0x201B,
     EMTPRespCodeInvalidDevicePropValue                  = 0x201C,
     EMTPRespCodeInvalidParameter                        = 0x201D,
     EMTPRespCodeSessionAlreadyOpen                      = 0x201E,
--- a/mtpfws/mtpfw/datatypes/src/cmtptypefile.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/datatypes/src/cmtptypefile.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -21,9 +21,7 @@
 #include <mtp/cmtptypefile.h>
 #include <mtp/mtpdatatypeconstants.h>
 
-//This file is exported from s60 sdk, now just copy it
-//to make sure onb can run
-#include "UiklafInternalCRKeys.h"
+#include "mtpcommonconst.h"
 
 // File type constants.
 const TInt KMTPFileChunkSizeForLargeFile(0x00080000); // 512K
--- a/mtpfws/mtpfw/datatypes/src/cmtptypeobjectinfo.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/datatypes/src/cmtptypeobjectinfo.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -128,7 +128,9 @@
                 }
                 
             __ASSERT_DEBUG(chunk, User::Invariant());
+            CleanupStack::PushL(chunk);
             ChunkAppendL(*chunk);
+            CleanupStack::Pop(chunk);
             }
         }
     }
--- a/mtpfws/mtpfw/datatypes/src/cmtptypestorageinfo.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/datatypes/src/cmtptypestorageinfo.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -115,7 +115,9 @@
                 break;
                 }
             __ASSERT_DEBUG(chunk, User::Invariant());
+            CleanupStack::PushL(chunk);
             ChunkAppendL(*chunk);
+            CleanupStack::Pop(chunk);
             }
         }
     }
--- a/mtpfws/mtpfw/inc/cmtpconnection.h	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/inc/cmtpconnection.h	Wed Aug 18 10:38:51 2010 +0300
@@ -147,6 +147,7 @@
     
     void EnqueueEvent(CMTPEventLink* aLink);
     void DequeueEvent(CMTPEventLink* aLink);
+	void DequeueAllEvents();
 
 /**
   * This method define and attach the property for publishing connection state 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mtpfws/mtpfw/inc/mtpcommonconst.h	Wed Aug 18 10:38:51 2010 +0300
@@ -0,0 +1,53 @@
+// 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:
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MTPCOMMONCONST_H
+#define MTPCOMMONCONST_H
+
+#ifdef __SERIES60_
+#include <uiklafinternalcrkeys.h>
+#else
+//Following is copied from 'UiklafInternalCRKeys.h', which is
+//exported from S60 sdk, in Symbian CBR, this file does not exist.
+const TUid KCRUidUiklaf = { 0x101F8774 };
+const TUint32 KUikOODDiskFreeSpaceWarningNoteLevel = 0x00000006;
+const TUint32 KUikOODDiskFreeSpaceWarningNoteLevelMassMemory = 0x00000007;
+#endif
+
+#ifdef __MTP_NAVIENGINE_TEST
+//The free size of C-Drive of NaviEngine env is less than 21M,
+//it will block many ONB test cases
+const TInt KFreeSpaceThreshHoldDefaultValue(0);
+const TInt KFreeSpaceExtraReserved(0);
+
+#else
+//MTP should reserve some disk space to prevent OOD(Out of Disk) monitor 
+//popup 'Out of memory' note.When syncing music through ovi player,
+//sometimes device screen get freeze with this note
+//Be default, this value is read from Central Respository, if error while
+//reading, use this one
+const TInt KFreeSpaceThreshHoldDefaultValue(20*1024*1024);//20M bytes
+
+//Beside the OOD threshold value, we need to reserve extra disk space
+//for harvest server,Thumbnail manager to store their data, set this as 7M
+const TInt KFreeSpaceExtraReserved(7*1024*1024);//7M bytes
+
+#endif
+#endif //MTPCOMMONCONST_H
--- a/mtpfws/mtpfw/src/cmtpconnection.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/src/cmtpconnection.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -82,18 +82,16 @@
     __FLOG(_L8("~CMTPConnection - Entry"));
     CloseAllSessions();
     
-    // Remove any events not associated 
-    // with a session
-    TSglQueIter<CMTPEventLink> iter(iEventQ);
-    iter.SetToFirst();
-    CMTPEventLink* link = NULL;
+	//remove all events
+    DequeueAllEvents();
+	
+    iSessions.ResetAndDestroy();
     
-    while ((link = iter++) != NULL)
-    	{
-    	delete link;
-    	}
+    if (iTransportConnection != NULL)
+        {
+        iTransportConnection->Unbind(*this);
+        }
     
-    iSessions.ResetAndDestroy();
     //close the property
     iProperty.Close();
     // delete the ‘name?property
@@ -357,7 +355,7 @@
             CompleteCloseConnection();
             ret = ETrue;
             }
-        
+          
         SetState(EStateShutdown);
         PublishConnState(EDisconnectedFromHost);   
         }
@@ -372,10 +370,6 @@
     
     CloseAllSessions();
     iSessions.Reset();
-	if (iTransportConnection != NULL)
-		{
-		iTransportConnection->Unbind(*this);
-		}
     
     //notify ConnectionMgr and corresponding transports of completion of connection close
     iSingletons.ConnectionMgr().ConnectionCloseComplete(iConnectionId);    
@@ -405,8 +399,12 @@
         */
         SessionOpenedL(KMTPSessionNone);            
         
+        if (iTransportConnection != NULL)
+            {
+            iTransportConnection->Unbind(*this);
+            }
         iTransportConnection = &aTransportConnection;
-        iTransportConnection->BindL(*this); 
+        iTransportConnection->BindL(*this);
         SetState(EStateOpen); 
          
         }
@@ -661,9 +659,16 @@
     DequeueEvent(iEventQ.First());       
    	if (iPendingEventCount > 0)
    		{
-   		// Forward the event to the transport connection layer.
-   		__FLOG(_L8("Sending queued event"));
- 	    iTransportConnection->SendEventL(iEventQ.First()->iEvent);
+		if (NULL != iTransportConnection)
+			{
+			// Forward the event to the transport connection layer.
+			__FLOG(_L8("Sending queued event"));
+			iTransportConnection->SendEventL(iEventQ.First()->iEvent);
+			}
+		else
+			{
+			DequeueAllEvents();
+			}
    		}
     
     __FLOG(_L8("SendEventCompleteL - Exit"));
@@ -707,7 +712,7 @@
     iEventQ(_FOFF(CMTPEventLink, iLink)),
     iTransportConnection(&aTransportConnection)
     {
-    
+    iTransportConnection->BindL(*this);
     }
     
 /**
@@ -1040,6 +1045,19 @@
     __FLOG(_L8("RemoveEventsForSession - Exit"));
 	}
 
+void CMTPConnection::DequeueAllEvents()
+	{
+	TSglQueIter<CMTPEventLink> iter(iEventQ);
+    iter.SetToFirst();
+    CMTPEventLink* link = NULL;
+    
+    while ((link = iter++) != NULL)
+    	{
+    	delete link;
+    	}
+	iPendingEventCount = 0;
+	}
+	
 void CMTPConnection::DequeueEvent(CMTPEventLink* aLink)
 	{
 	iEventQ.Remove(*aLink);
--- a/mtpfws/mtpfw/src/cmtpconnectionmgr.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/src/cmtpconnectionmgr.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -13,8 +13,6 @@
 // Description:
 //
 
-#include <usbman.h>
-#include <usbstates.h>
 #include "cmtpconnectionmgr.h"
 
 #include "cmtpconnection.h"
@@ -115,33 +113,6 @@
 EXPORT_C void CMTPConnectionMgr::StartTransportL(TUid aTransport)
     {
     __FLOG(_L8("StartTransportL - Entry"));
-  
-    RUsb usb;
-    User::LeaveIfError(usb.Connect());
-    __FLOG(_L8("after connect, and before call get currentpersonalityid"));
-    TInt usbMode;
-    TUsbServiceState usbStat;
-    TInt err = usb.GetCurrentPersonalityId(usbMode);
-    __FLOG_1(_L8("The return value of GetCurrentPersonalityId is %d"), err);
-    
-    err = usb.GetServiceState(usbStat);
-    __FLOG_1(_L8("The return value of GetServiceState is %d"), err);        
-    
-    usb.Close();
-    
-    __FLOG_1(_L8("The current usb mode is %d"), usbMode);
-    __FLOG_1(_L8("The current usb service state is %d"), usbStat);
-
-    TInt massStorageMode = 0x02;
-    
-    if(usbMode == massStorageMode && usbStat != EUsbServiceIdle)
-        {
-        __FLOG(_L8("StartTransportL without parameter!"));
-        StartTransportL( aTransport, NULL );
-        return;
-        }
-    
-    
     
     //When USB plug out, BT will start Master mode to reconnect remote device. Else BT will start slave mode to listen connection.
     if(aTransport.iUid == KMTPBTTransportUid && iRemoteDevice.iDeviceAddr != 0 && aTransport != iTransportUid)
--- a/mtpfws/mtpfw/src/cmtpdataprovidercontroller.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/src/cmtpdataprovidercontroller.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -185,7 +185,7 @@
 	  if ((iDataProviders[index]->DataProviderId() != iDpIdDeviceDp)
 	  	  && (iDataProviders[index]->DataProviderId() != iDpIdProxyDp))
 	    {
-	    iDataProviderIds.Append(iDataProviders[index]->DataProviderId());
+	    iDataProviderIds.AppendL(iDataProviders[index]->DataProviderId());
 	    }
 	  }
 	
@@ -484,7 +484,7 @@
             Cancel();
 
             //clean the root level snapshot
-            iSingletons.ObjectMgr().ObjectStore().CleanDBSnapshotL(ETrue);
+            TRAP_IGNORE(iSingletons.ObjectMgr().ObjectStore().CleanDBSnapshotL(ETrue));
 
             //Schedule again to scan subdir
             iEnumerationState   = EEnumeratingSubDirFiles;
@@ -500,9 +500,7 @@
                 {
                 Cancel();
                 iEnumerationState   = EEnumeratingCleanDBSnapshot;
-                iSingletons.ObjectMgr().ObjectStore().CleanDBSnapshotL(EFalse);
-            
-
+                TRAP_IGNORE(iSingletons.ObjectMgr().ObjectStore().CleanDBSnapshotL(EFalse));
                 }
             else
                 {
--- a/mtpfws/mtpfw/src/cmtpobjectstore.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/src/cmtpobjectstore.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -442,6 +442,12 @@
 	TBool needUpdateOwner = EFalse;
 	TUint dpId(aObject.Uint(CMTPObjectMetaData::EDataProviderId));
 
+	if ((aObject.DesC(CMTPObjectMetaData::ESuid)).Length() > KMaxFileName)
+	{
+	// The length of object uid should not excceeds KMaxFileName
+	User::Leave( KErrBadName );
+	}
+
 	TFileName suid;
 	suid.CopyLC(aObject.DesC(CMTPObjectMetaData::ESuid));
 	TUint32 suidHash = DefaultHash::Des16(suid);
@@ -478,7 +484,8 @@
 				aObject.SetUint(CMTPObjectMetaData::EHandle, handle);
 				id = iEnumeratingCacheObjList[found]->iPOUID;
 				aObject.SetUint(CMTPObjectMetaData::EIdentifier, id);
-				if(iEnumeratingCacheObjList[found]->iFormatcode != aObject.Uint(CMTPObjectMetaData::EFormatCode))
+				if(iEnumeratingCacheObjList[found]->iFormatcode != aObject.Uint(CMTPObjectMetaData::EFormatCode) ||
+					 iEnumeratingCacheObjList[found]->iObjParentId != aObject.Uint(CMTPObjectMetaData::EParentHandle))
 					{//have different owner
 					needUpdateOwner = ETrue;
 					}
@@ -523,6 +530,7 @@
 		needToInsert = ETrue;
 		__FLOG_VA((_L8("InsertObjectL After enmueration, needUpdateOwner %d needToInsert %d"), needUpdateOwner, needToInsert));
 		}
+		
 	if (needToInsert)//needToInsert and needUpdateOwner can't be true at same time
 		{
 		TUint32 parentHandle(aObject.Uint(CMTPObjectMetaData::EParentHandle));
@@ -562,6 +570,7 @@
 			iBatched.SetColL(EObjectStoreModes, aObject.Uint(CMTPObjectMetaData::EModes));
 			iBatched.SetColL(EObjectStoreNonConsumable, aObject.Uint(CMTPObjectMetaData::ENonConsumable));
 			iBatched.SetColL(EObjectStoreName, aObject.DesC(CMTPObjectMetaData::EName));
+			iBatched.SetColL(EObjectStoreParentHandle, aObject.Uint(CMTPObjectMetaData::EParentHandle));
 			iBatched.PutL();
 			CleanupStack::Pop(&iBatched);
 			IncTranOpsNumL();	
@@ -938,6 +947,14 @@
 			{
 			err = iDatabase.Recover();
 			}
+		if(KErrNone == err)
+			{
+			err = iDatabase.Compact();
+			if(KErrNone != err)
+				{//the DB file is corrupt
+				BaflUtils::DeleteFile(iSingletons.Fs(), fullName);
+				}
+			}
 		}
 	
 	if (err != KErrNone)
--- a/mtpfws/mtpfw/src/cmtpreferencemgr.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/src/cmtpreferencemgr.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -136,7 +136,7 @@
 		for(TInt i = 0; i < count; i++)
 			{
 			TUint32 toHandle =  iObjectStore.HandleL(aToSuids[i]);
-			toHandles.Append(toHandle);
+			toHandles.AppendL(toHandle);
 			}	
 		
 		SetReferencesL(fromHandle, toHandles);	
@@ -336,7 +336,7 @@
 	TInt count = aToHandles.NumElements();
 	for(TInt i = 0; i < count; i++)
 		{
-		tempArray.Append(aToHandles.ElementUint(i));
+		tempArray.AppendL(aToHandles.ElementUint(i));
 		}	
 	SetReferencesL(aFromHandle.Value(), tempArray);
 	CleanupStack::PopAndDestroy(&tempArray);
--- a/mtpfws/mtpfw/src/cmtpserviceconfig.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/src/cmtpserviceconfig.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -237,7 +237,7 @@
     TUint num = reader.ReadInt16();
     while( num-- )
         {
-        aNamespaces.Append( ReadGUID(reader) );
+        aNamespaces.AppendL( ReadGUID(reader) );
         }
     
     CleanupStack::PopAndDestroy(buffer);
--- a/mtpfws/mtpfw/src/ruidmapper.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtpfws/mtpfw/src/ruidmapper.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -50,7 +50,7 @@
 		for (TInt n = 0 ; n < entries; ++n)
 			{
 			TUint transportId(resourceReader.ReadInt32());
-			st.iTransportUidList.Append(transportId);
+			st.iTransportUidList.AppendL(transportId);
 			}
 		InsertToMappingStruct(st);	
 		}
--- a/mtptransports/mtpcontroller/src/cmtpbearermonitor.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtptransports/mtpcontroller/src/cmtpbearermonitor.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -80,7 +80,9 @@
     __FLOG( _L8("+ConstructL") );
     
     CMTPBluetoothController* btController = CMTPBluetoothController::NewL( *this );
+    CleanupStack::PushL(btController);
     iMTPControllers.AppendL( btController );
+    CleanupStack::Pop(btController);
     
     __FLOG( _L8("-ConstructL") );
     }
--- a/mtptransports/mtpcontroller/src/cmtpcontrollertimer.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtptransports/mtpcontroller/src/cmtpcontrollertimer.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -89,7 +89,7 @@
         {
         __FLOG( _L8("Start transport to launch mtp server") );
         
-        iMTPClient.Connect();
+        User::LeaveIfError(iMTPClient.Connect());
         iMTPClient.StartTransport(KMTPBtTransportUid);
         iStopTransport = EFalse;
         iMTPOperator->SubscribeConnState();
--- a/mtptransports/mtpusbtransport/usbsic_imp/inc/cmtpusbepbase.h	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtptransports/mtpusbtransport/usbsic_imp/inc/cmtpusbepbase.h	Wed Aug 18 10:38:51 2010 +0300
@@ -55,6 +55,7 @@
     
     void FlushRxDataL();
     void FlushBufferedRxDataL();
+    void FlushOnePacketL();
     
 protected:
 
--- a/mtptransports/mtpusbtransport/usbsic_imp/src/cmtpusbconnection.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtptransports/mtpusbtransport/usbsic_imp/src/cmtpusbconnection.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -636,7 +636,11 @@
     {
     __FLOG(_L8("SendInterruptDataCompleteL - Entry"));
     iEventPending = EFalse;	
+    
+    if ( NULL != iProtocolLayer)
+        {
     BoundProtocolLayer().SendEventCompleteL(aError, iMTPEvent);
+        }
     __FLOG(_L8("SendInterruptDataCompleteL - Exit"));
     }    
 
@@ -1358,7 +1362,17 @@
         {
         // Invalid bulk transaction state, close the connection.
         __FLOG_VA((_L8("Expected bulk transaction state = %d"), aExpectedTransactionState));
+
+        //if transaction is in request phase, while the container type of data we received is other transaction phase,
+        //just ignore the data and initiate another request receiving. 
+        if (ERequestPhase == iBulkTransactionState)
+            {
+            InitiateBulkRequestSequenceL();
+            }
+        else
+            {
         CloseConnection();
+            }
         }
     __FLOG(_L8("BulkRequestTransactionStateValid - Exit"));
     return valid;
@@ -1503,6 +1517,7 @@
     __FLOG(_L8("BulkEndpointsStallL - Entry"));
     EndpointStallL(EMTPUsbEpBulkIn);
     EndpointStallL(EMTPUsbEpBulkOut);
+    SetDeviceStatus(EMTPUsbDeviceStatusTransactionCancelled);
     __FLOG(_L8("BulkEndpointsStallL - Exit"));
     }
 
@@ -1669,6 +1684,7 @@
         SetBulkTransactionState(EUndefined);
         SetConnectionState(EIdle);
         SetSuspendState(ENotSuspended);
+		iMTPSessionId = KMTPSessionNone;
         }
     
     __FLOG(_L8("StopConnection - Exit"));
--- a/mtptransports/mtpusbtransport/usbsic_imp/src/cmtpusbepbase.cpp	Tue Jul 06 15:13:34 2010 +0300
+++ b/mtptransports/mtpusbtransport/usbsic_imp/src/cmtpusbepbase.cpp	Wed Aug 18 10:38:51 2010 +0300
@@ -596,19 +596,11 @@
 	    // USB Header validation
 	    if (!ValidateUSBHeaderL())
 		    {
-            //trash data, continue to flush.
-            TRequestStatus status;
-            RBuf8 readBuf;
-            readBuf.CreateL(KMaxPacketTypeBulkHS);
-            Connection().Ldd().ReadPacket(status, EndpointNumber(), readBuf, KMaxPacketTypeBulkHS);
-            User::WaitForRequest(status);    
-            RDebug::Print(_L("CMTPUsbEpBase::ProcessFirstReceivedChunkL(), trash data length = %d"), readBuf.Length());
-            readBuf.Close();
+            //trash data, continue to flush by one packet.
+            FlushOnePacketL();
             
             InitiateFirstChunkReceiveL();  
             return;
-            
-
 			}
 			
 		if ((iDataLength - KUSBHeaderSize) == 0)
@@ -617,7 +609,14 @@
 			SetStreamState(EReceiveComplete);
 			}	        
 	    }
-     else if (iReceiveChunkData.MaxLength() == iReceiveChunkData.Length())
+    else if (iReceiveChunkData.MaxLength() == KUSBHeaderSize
+            && iReceiveChunkData.Length() < KUSBHeaderSize)
+        {
+        //trash data received, just diacard it and initiate next receiving
+        InitiateFirstChunkReceiveL();  
+        return;
+        }
+    else if (iReceiveChunkData.MaxLength() == iReceiveChunkData.Length())
 		{
 		// USB Control request setup or data packet is received from Control EP.		    		    		    
 	    // All the desired data should be received. 
@@ -692,7 +691,7 @@
 	           	// 1. MTP file receiving: MTP type file never returns KMTPChunkSequenceCompletion,It can be received        
           		//    one part after another. Also it can be commited mutiple times.
             	// 2. Other MTP datatype receiving during the middle of data stream
-	           __FLOG(_L8("Commiting write data chunk"));
+	           __FLOG(_L8("Commiting write data chunk - 1"));
 	           needCommit = iReceiveDataSink->CommitChunkL(iReceiveChunkData);
 	           lastChunkCommited = ETrue;   
 	           }
@@ -702,7 +701,7 @@
 		      {
 		      // It should be the end of MTP type file receiving since it never returns KMTPChunkSequenceCompletion.
 	 	      // it can be commited mutiple times.
-		      __FLOG(_L8("Commiting write data chunk"));
+		      __FLOG(_L8("Commiting write data chunk - 2"));
 		      needCommit = iReceiveDataSink->CommitChunkL(iReceiveChunkData);
 		      }
 		else if ((iChunkStatus == KMTPChunkSequenceCompletion)
@@ -711,9 +710,22 @@
 		      {
 		      // The last chunk data which type is any other MTP data type than MTP file type. 
 		      // It will not be commited until all the chunk data is received.
-		      __FLOG(_L8("Commiting write data chunk"));
+		      __FLOG(_L8("Commiting write data chunk - 3"));
 		      needCommit = iReceiveDataSink->CommitChunkL(iReceiveChunkData); 
-		      }          
+		      }
+        else if ((iChunkStatus == KMTPChunkSequenceCompletion)
+                && !endStream
+                && (iReceiveChunkData.Length() == iReceiveChunkData.MaxLength()))
+              {
+              // The last chunk data is received and chunk has been filled up:
+              // just flush one packet and set endStream true and commit received data.
+              // This condition tries to make MTP more robust if DP forgets to handle data-out phase. 
+              __FLOG(_L8("Commiting write data chunk - 4"));
+              
+              FlushOnePacketL();  
+              endStream = ETrue;
+              needCommit = iReceiveDataSink->CommitChunkL(iReceiveChunkData); 
+              }
          }  
 
     // Fetch the next read data chunk.  
@@ -1110,3 +1122,15 @@
         readBuf.Close(); 
         }
     }
+
+void CMTPUsbEpBase::FlushOnePacketL()
+    {
+    //trash data, continue to flush.
+    TRequestStatus status;
+    RBuf8 readBuf;
+    readBuf.CreateL(KMaxPacketTypeBulkHS);
+    Connection().Ldd().ReadPacket(status, EndpointNumber(), readBuf, KMaxPacketTypeBulkHS);
+    User::WaitForRequest(status);    
+    RDebug::Print(_L("CMTPUsbEpBase::ProcessFirstReceivedChunkL(), trash data length = %d"), readBuf.Length());
+    readBuf.Close();
+    }
--- a/package_definition.xml	Tue Jul 06 15:13:34 2010 +0300
+++ b/package_definition.xml	Wed Aug 18 10:38:51 2010 +0300
@@ -1,56 +1,103 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <SystemDefinition schema="3.0.0">
-  <package id="remoteconn" name="Remote Connectivity" levels="plugin framework server generic specific">
-    <collection id="connectivitymodules" name="Connectivity Modules" level="framework">
-      <component id="secon" filter="s60" name="Service Controllers">
-        <unit bldFile="connectivitymodules/secon/group"/>
-      </component>
-    </collection>
-    <collection id="remoteconn_info" name="Remote Connectivity Info" level="specific">
-      <component id="remoteconn_plat" filter="s60" name="Remote Connectivity Platform Interfaces" class="api">
-        <unit bldFile="remoteconn_plat/group"/>
-      </component>
-      <component id="remoteconn_metadata" name="Remote Connectivity Metadata" class="config" introduced="^2" purpose="development" target="desktop">
-        <unit mrp="remoteconn_info/remoteconn_metadata/remoteconn_metadata.mrp"/>
-      </component>
-    </collection>
-    <collection id="mtptransports" name="MTP Transports" level="plugin">
-      <component id="mtpusbtransport" name="MTP USB Transport" introduced="^2" purpose="optional" class="plugin">
-        <unit bldFile="mtptransports/mtpusbtransport/group" mrp="mtptransports/mtpusbtransport/group/mtp_usbsic.mrp"/>
-      </component>
-      <component id="mtpptpiptransport" name="MTP PTP-IP Transport" introduced="^3" purpose="optional" class="plugin">
-        <unit bldFile="mtptransports/mtpptpiptransport/group" mrp="mtptransports/mtpptpiptransport/group/mtp_ptpip.mrp"/>
-      </component>
-      <component id="mtpcontroller" name="MTP Controller" introduced="^3" purpose="optional" class="plugin">
-        <unit bldFile="mtptransports/mtpcontroller/group" mrp="mtptransports/mtpcontroller/group/mtpcontroller.mrp"/>
-      </component>
-    </collection>
-    <collection id="mtpfws" name="MTP Frameworks" level="framework">
-      <component id="mtpfw" name="MTP Framework" introduced="^2" purpose="optional">
-        <unit bldFile="mtpfws/mtpfw/group" mrp="mtpfws/mtpfw/group/mtp_framework.mrp"/>
-      </component>
-      
-    </collection>
-    <collection id="mtpdataproviders" name="MTP Data Providers" level="generic">
-      <component id="mtpfileandfolderdp" name="MTP File and Folder Provider" introduced="^2" purpose="optional" class="plugin">
-        <unit bldFile="mtpdataproviders/mtpfileandfolderdp/group" mrp="mtpdataproviders/mtpfileandfolderdp/group/mtp_filedp.mrp"/>
-      </component>
-    </collection>
-    <collection id="backupandrestore" name="Backup and Restore" level="specific">
-      <component id="backupengine" name="Backup Engine" introduced="9.0" purpose="optional">
-        <unit bldFile="backupandrestore/backupengine/group" mrp="backupandrestore/backupengine/group/connectivity_backupengine.mrp"/>
-      </component>
-     <component id="backuptest" name="Backup Test" introduced="^2" purpose="development">
-        <unit bldFile="backupandrestore/backuptest/group" mrp="backupandrestore/backuptest/group/connectivity_backuptest.mrp"/>
-      </component>
-    </collection>
-    <collection id="obex" name="OBEX" level="generic">
-      <component id="obexprotocol" name="OBEX Protocol" introduced="9.1" purpose="optional">
-        <unit bldFile="obex/obexprotocol/group" mrp="obex/obexprotocol/group/obex.mrp"/>
-      </component>
-      <component id="obexextensionapi" name="OBEX Extension API" introduced="9.2" purpose="optional">
-        <unit bldFile="obex/obexextensionapi/group" mrp="obex/obexextensionapi/group/obex_extensionapis.mrp"/>
-      </component>
-    </collection>
-  </package>
+ <package id="remoteconn" name="Remote Connectivity" levels="plugin framework server generic specific">
+  <collection id="remoteconn_info" name="Remote Connectivity Info" level="specific">
+   <component id="remoteconn_metadata" name="Remote Connectivity Metadata" class="config" introduced="^2" purpose="development" target="desktop">
+    <unit mrp="remoteconn_info/remoteconn_metadata/remoteconn_metadata.mrp"/>
+   </component>
+  </collection>
+  <collection id="remoteconn_plat" name="Remote Connectivity Platform Interfaces" level="specific">
+   <component id="dialup_connection_status_api" name="Dialup Connection Status API" class="api" filter="s60">
+    <meta rel="Api" href="remoteconn_plat/dialup_connection_status_api/dialup_connection_status_api.metaxml"/>
+    <unit bldFile="remoteconn_plat/dialup_connection_status_api/group"/>
+   </component>
+   <component id="dun_secondary_display_notification_api" name="Dialup Secondary Display Notification API" class="api" filter="s60">
+    <meta rel="Api" href="remoteconn_plat/dun_secondary_display_notification_api/dun_secondary_display_notification_api.metaxml"/>
+    <unit bldFile="remoteconn_plat/dun_secondary_display_notification_api/group"/>
+   </component>
+   <component id="generic_hid_api" name="Generic HID API" class="api" filter="s60">
+    <!-- Missing? <meta rel="Api" href="remoteconn_plat/generic_hid_api/generic_hid_api.metaxml"/> -->
+    <unit bldFile="remoteconn_plat/generic_hid_api/group"/>
+   </component>
+   <component id="locod_bearer_plugin_api" name="Local Connectivity Daemon Bearer Plugin API" class="api" filter="s60">
+    <!-- Missing? <meta rel="Api" href="remoteconn_plat/locod_bearer_plugin_api/locod_bearer_plugin_api.metaxml"/> -->
+    <unit bldFile="remoteconn_plat/locod_bearer_plugin_api/group"/>
+   </component>
+   <component id="locod_service_plugin_api" name="Local Connectivity Daemon Service Plugin API" class="api" filter="s60">
+    <!-- Missing? <meta rel="Api" href="remoteconn_plat/locod_service_plugin_api/locod_service_plugin_api.metaxml"/> -->
+    <unit bldFile="remoteconn_plat/locod_service_plugin_api/group"/>
+   </component>
+  </collection>
+  <collection id="localconnectivityservice" name="Local Connectivity Service" level="server">
+   <component id="locod" name="Local Connectivity Daemon" introduced="^4" purpose="optional" filter="s60">
+         <unit bldFile="localconnectivityservice/locod/group"/>
+   </component>
+   <component id="dun" name="Dial-Up Networking" introduced="^4" purpose="optional" filter="s60">
+         <unit bldFile="localconnectivityservice/dun/group"/>
+   </component>
+   <component id="generichid" name="Generic Human-Interface Device" introduced="^4" purpose="optional" filter="s60">
+         <unit bldFile="localconnectivityservice/generichid/group"/>
+   </component>
+   <component id="headset" name="Headset" introduced="^4" purpose="optional" filter="s60">
+         <unit bldFile="localconnectivityservice/headset/group"/>
+   </component>
+  </collection>
+  <collection id="mtptransports" name="MTP Transports" level="plugin">
+   <component id="mtpusbtransport" name="MTP USB Transport" introduced="^2" purpose="optional" class="plugin">
+    <unit bldFile="mtptransports/mtpusbtransport/group" mrp="mtptransports/mtpusbtransport/group/mtp_usbsic.mrp"/>
+   </component>
+   <component id="mtpptpiptransport" name="MTP PTP-IP Transport" introduced="^3" purpose="optional" class="plugin">
+    <unit bldFile="mtptransports/mtpptpiptransport/group" mrp="mtptransports/mtpptpiptransport/group/mtp_ptpip.mrp"/>
+   </component>
+   <component id="mtpcontroller" name="MTP Controller" introduced="^3" purpose="optional" class="plugin">
+    <meta rel="config">
+     <defined condition="FF_MTP_CONTROLLER"/>
+    </meta>
+    <unit bldFile="mtptransports/mtpcontroller/group" mrp="mtptransports/mtpcontroller/group/mtpcontroller.mrp"/>
+   </component>
+  </collection>
+  <collection id="mtpfws" name="MTP Frameworks" level="framework">
+   <component id="mtpfw" name="MTP Framework" introduced="^2" purpose="optional">
+    <unit bldFile="mtpfws/mtpfw/group" mrp="mtpfws/mtpfw/group/mtp_framework.mrp"/>
+   </component>
+   <component id="devdpextn" name="MTP Device Provider Extension" introduced="^4" purpose="optional">
+ 	  <!-- can't have a component inside another component. Need to move to mtpfws/devdpextn/group -->
+	 <unit bldFile="mtpfws/mtpfw/dataproviders/devdp/devdpextn/group"/>
+   </component>
+  </collection>
+  <collection id="mtpdataproviders" name="MTP Data Providers" level="generic">
+   <component id="mtpfileandfolderdp" name="MTP File and Folder Provider" introduced="^2" purpose="optional" class="plugin">
+    <unit bldFile="mtpdataproviders/mtpfileandfolderdp/group" mrp="mtpdataproviders/mtpfileandfolderdp/group/mtp_filedp.mrp"/>
+   </component>
+   <component id="mtpimagedp" name="MTP Image Data Provider" filter="gt" introduced="^3" purpose="optional" class="plugin">
+    <unit bldFile="mtpdataproviders/mtpimagedp/group" mrp="mtpdataproviders/mtpimagedp/group/mtp_imagedp.mrp"/>
+   </component>
+   <component id="mtppictbridgedp" name="MTP PictBridge Data Provider" introduced="^3" purpose="optional" class="plugin" filter="gt">
+    <unit bldFile="mtpdataproviders/mtppictbridgedp/group" mrp="mtpdataproviders/mtppictbridgedp/group/mtp_pictbridgedp.mrp"/>
+   </component>
+   <component id="pictbridgeengine" name="MTP PictBridge Engine" introduced="^4" purpose="optional" filter="s60">
+ 	  <!-- can't have a component inside another component. Need to move to mtpdataproviders/pictbridgeengine/group -->
+     <unit bldFile="mtpdataproviders/mtppictbridgedp/pictbridgeengine/group"/>
+   </component>
+   <component id="mtpplaybackcontroldp" name="MTP Playback Control Data Provider" introduced="^4" filter="s60" purpose="optional" class="plugin">
+    <unit bldFile="mtpdataproviders/mtpplaybackcontroldp/group" mrp="mtpdataproviders/mtpplaybackcontroldp/group/mtp_playbackcontroldp.mrp"/>
+   </component>
+  </collection>
+  <collection id="backupandrestore" name="Backup and Restore" level="specific">
+   <component id="backupengine" name="Backup Engine" introduced="9.0" purpose="optional">
+    <unit bldFile="backupandrestore/backupengine/group" mrp="backupandrestore/backupengine/group/connectivity_backupengine.mrp"/>
+   </component>
+   <component id="backuptest" name="Backup Test" introduced="^2" purpose="development">
+    <unit bldFile="backupandrestore/backuptest/group" mrp="backupandrestore/backuptest/group/connectivity_backuptest.mrp"/>
+   </component>
+  </collection>
+  <collection id="obex" name="OBEX" level="generic">
+   <component id="obexprotocol" name="OBEX Protocol" introduced="9.1" purpose="optional">
+    <unit bldFile="obex/obexprotocol/group" mrp="obex/obexprotocol/group/obex.mrp"/>
+   </component>
+   <component id="obexextensionapi" name="OBEX Extension API" introduced="9.2" purpose="optional">
+    <unit bldFile="obex/obexextensionapi/group" mrp="obex/obexextensionapi/group/obex_extensionapis.mrp"/>
+   </component>
+  </collection>
+ </package>
 </SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/package_map.xml	Wed Aug 18 10:38:51 2010 +0300
@@ -0,0 +1,1 @@
+<PackageMap root="sf" layer="mw"/>