# HG changeset patch # User hgs # Date 1272060113 -10800 # Node ID cc2090c681569a298af280b28205dfebf41240c1 # Parent 141c98a07b37a5d00324b157bcf53d842f9aacf0 201015 diff -r 141c98a07b37 -r cc2090c68156 usbengines/usbdevcon/inc/cusbdevcon.h --- a/usbengines/usbdevcon/inc/cusbdevcon.h Sat Apr 24 00:46:12 2010 +0300 +++ b/usbengines/usbdevcon/inc/cusbdevcon.h Sat Apr 24 01:01:53 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007 - 2010 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" @@ -109,13 +109,6 @@ */ void StopL(); - /** - * Take needed actions on resuming services - * - * @since S60 v.5.0 - */ - void ResumeL(); - // from CActive /** diff -r 141c98a07b37 -r cc2090c68156 usbengines/usbdevcon/src/cusbdevcon.cpp --- a/usbengines/usbdevcon/src/cusbdevcon.cpp Sat Apr 24 00:46:12 2010 +0300 +++ b/usbengines/usbdevcon/src/cusbdevcon.cpp Sat Apr 24 01:01:53 2010 +0300 @@ -116,39 +116,39 @@ // CUsbDevCon::~CUsbDevCon() { - FLOG( _L( "[USBDEVCON]\tCUsbDevCon::~CUsbDevCon" ) ); - - Cancel(); - - FLOG( _L( "[USBDEVCON]\tCUsbDevCon::~CUsbDevCon Cancel" ) ); - - delete iStateMachine; - - FLOG( _L( "[USBDEVCON]\tCUsbDevCon::~CUsbDevCon StateMachine" ) ); - - delete iRequestsHandler; - - FLOG( _L( "[USBDEVCON]\tCUsbDevCon::~CUsbDevCon RequestsHandler" ) ); - - delete iUsbStateWatcher; - - FLOG( _L( "[USBDEVCON]\tCUsbDevCon::~CUsbDevCon UsbStateWatcher" ) ); - - iUsbWatcher.Close(); - - FLOG( _L( "[USBDEVCON]\tCUsbDevCon::~CUsbDevCon UsbWatcher" ) ); - - iUsbManager.Close(); - - FLOG( _L( "[USBDEVCON]\tCUsbDevCon::~CUsbDevCon UsbManager" ) ); - - iLdd.Close(); - - FLOG( _L( "[USBDEVCON]\tCUsbDevCon::~CUsbDevCon LDD" ) ); - - iShutdownTimer.Close(); - - FLOG( _L( "[USBDEVCON]\tCUsbDevCon::~CUsbDevCon Timer" ) ); + FLOG( _L( "[USBDEVCON]\tCUsbDevCon::~CUsbDevCon" ) ); + + Cancel(); + + FLOG( _L( "[USBDEVCON]\tCUsbDevCon::~CUsbDevCon Cancel" ) ); + + delete iStateMachine; + + FLOG( _L( "[USBDEVCON]\tCUsbDevCon::~CUsbDevCon StateMachine" ) ); + + delete iRequestsHandler; + + FLOG( _L( "[USBDEVCON]\tCUsbDevCon::~CUsbDevCon RequestsHandler" ) ); + + delete iUsbStateWatcher; + + FLOG( _L( "[USBDEVCON]\tCUsbDevCon::~CUsbDevCon UsbStateWatcher" ) ); + + iUsbWatcher.Close(); + + FLOG( _L( "[USBDEVCON]\tCUsbDevCon::~CUsbDevCon UsbWatcher" ) ); + + iUsbManager.Close(); + + FLOG( _L( "[USBDEVCON]\tCUsbDevCon::~CUsbDevCon UsbManager" ) ); + + iLdd.Close(); + + FLOG( _L( "[USBDEVCON]\tCUsbDevCon::~CUsbDevCon LDD" ) ); + + iShutdownTimer.Close(); + + FLOG( _L( "[USBDEVCON]\tCUsbDevCon::~CUsbDevCon Timer" ) ); } @@ -165,32 +165,46 @@ { FLOG( _L( "[USBDEVCON]\tCUsbDevCon::ActAccordinglyToUsbStateL State: Undefined" ) ); - + StopL(); break; } case EUsbcDeviceStateAttached: { - - FLOG( _L( "[USBDEVCON]\tCUsbDevCon::ActAccordinglyToUsbStateL State: Attached" ) ); + FLOG( _L( "[USBDEVCON]\tCUsbDevCon::ActAccordinglyToUsbStateL State: Attached, ignored" ) ); break; } + case EUsbcDeviceStateSuspended: + { + FLOG( _L( "[USBDEVCON]\tCUsbDevCon::ActAccordinglyToUsbStateL State: Suspended" ) ); + // NO break here + } case EUsbcDeviceStatePowered: { - - FLOG( _L( "[USBDEVCON]\tCUsbDevCon::ActAccordinglyToUsbStateL State: Powered" ) ); + FLOG( _L( "[USBDEVCON]\tCUsbDevCon::ActAccordinglyToUsbStateL State: Powered" ) ); - StartL(); + // In powered or suspended state, we are not allowed to do any data + // communication. Hence if there are pending read/write requests, + // we need cancel them. + // Not call StopL() here because we do not want to shut down this + // process so earlier but in Undefined state. + if ( iStateMachine->IsStarted() ) + { + iStateMachine->Stop(); + // release device control + User::LeaveIfError(iLdd.ReleaseDeviceControl()); + } break; } case EUsbcDeviceStateDefault: { - - FLOG( _L( "[USBDEVCON]\tCUsbDevCon::ActAccordinglyToUsbStateL State: Default" ) ); + // The request will only be started from default state. + // If it has been started already, nothing will be done. + FLOG( _L( "[USBDEVCON]\tCUsbDevCon::ActAccordinglyToUsbStateL State: Default" ) ); StartL(); break; @@ -198,8 +212,7 @@ case EUsbcDeviceStateAddress: { - - FLOG( _L( "[USBDEVCON]\tCUsbDevCon::ActAccordinglyToUsbStateL State: Addressed" ) ); + FLOG( _L( "[USBDEVCON]\tCUsbDevCon::ActAccordinglyToUsbStateL State: Addressed" ) ); StartL(); break; @@ -207,32 +220,16 @@ case EUsbcDeviceStateConfigured: { - - FLOG( _L( "[USBDEVCON]\tCUsbDevCon::ActAccordinglyToUsbStateL State: Configured" ) ); + FLOG( _L( "[USBDEVCON]\tCUsbDevCon::ActAccordinglyToUsbStateL State: Configured" ) ); - if(iPrevUsbState == EUsbcDeviceStateSuspended) - { - ResumeL(); - } - else - { - StartL(); - } + StartL(); break; } - case EUsbcDeviceStateSuspended: - { - - FLOG( _L( "[USBDEVCON]\tCUsbDevCon::ActAccordinglyToUsbStateL State: Suspended" ) ); - - break; - } - default: { - FLOG( _L( "[USBDEVCON]\tCUsbDevCon::ActAccordinglyToUsbStateL State: ***Undefined***" ) ); + FLOG( _L( "[USBDEVCON]\tCUsbDevCon::ActAccordinglyToUsbStateL State: ***Unknown***" ) ); StopL(); break; @@ -302,9 +299,9 @@ } - // Cancel shutdown timer, if it is started - iShutdownTimer.Cancel(); - } + // Cancel shutdown timer, if it is started + iShutdownTimer.Cancel(); + } // --------------------------------------------------------------------------- // Stops UsbDevCon services @@ -324,34 +321,21 @@ // release device control User::LeaveIfError(iLdd.ReleaseDeviceControl()); - } + } - if(!IsActive()) // not waiting for timer - { - FLOG( _L( "[USBDEVCON]\tCUsbDevCon::StopL Starting timer" ) ); - // run timer - iShutdownTimer.Cancel(); + if(!IsActive()) // not waiting for timer + { + FLOG( _L( "[USBDEVCON]\tCUsbDevCon::StopL Starting timer" ) ); + // run timer + iShutdownTimer.Cancel(); - // RunL will be called after KInactiveTimeForShutDown milliseconds - iShutdownTimer.After(iStatus, TTimeIntervalMicroSeconds32(KInactiveTimeForShutDown)); - SetActive(); - FLOG( _L( "[USBDEVCON]\tCUsbDevCon::StopL Timer is started" ) ); - } + // RunL will be called after KInactiveTimeForShutDown milliseconds + iShutdownTimer.After(iStatus, TTimeIntervalMicroSeconds32(KInactiveTimeForShutDown)); + SetActive(); + FLOG( _L( "[USBDEVCON]\tCUsbDevCon::StopL Timer is started" ) ); + } } -// --------------------------------------------------------------------------- -// Resumes UsbDevCon services -// --------------------------------------------------------------------------- -// -void CUsbDevCon::ResumeL() - { - - FLOG( _L( "[USBDEVCON]\tCUsbDevCon::ResumeL" ) ); - - // Resume state machine - StartL(); - - } // ---------------------------------------------------------------------------- // Constructs and installs the active scheduler, constructs UsbDevCon object. @@ -412,6 +396,3 @@ return err; } - - - diff -r 141c98a07b37 -r cc2090c68156 usbengines/usblocodplugin/tsrc/USBLocodPluginTest/bmarm/USBLocodPluginTestu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbengines/usblocodplugin/tsrc/USBLocodPluginTest/bmarm/USBLocodPluginTestu.def Sat Apr 24 01:01:53 2010 +0300 @@ -0,0 +1,3 @@ +EXPORTS + LibEntryL__FR13CTestModuleIf @ 1 NONAME R3UNUSED ; LibEntryL(CTestModuleIf &) + diff -r 141c98a07b37 -r cc2090c68156 usbengines/usblocodplugin/tsrc/USBLocodPluginTest/bwins/USBLocodPluginTestu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbengines/usblocodplugin/tsrc/USBLocodPluginTest/bwins/USBLocodPluginTestu.def Sat Apr 24 01:01:53 2010 +0300 @@ -0,0 +1,3 @@ +EXPORTS + ?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * __cdecl LibEntryL(class CTestModuleIf &) + diff -r 141c98a07b37 -r cc2090c68156 usbengines/usblocodplugin/tsrc/USBLocodPluginTest/conf/USBLocodPluginTest.cfg --- a/usbengines/usblocodplugin/tsrc/USBLocodPluginTest/conf/USBLocodPluginTest.cfg Sat Apr 24 00:46:12 2010 +0300 +++ b/usbengines/usblocodplugin/tsrc/USBLocodPluginTest/conf/USBLocodPluginTest.cfg Sat Apr 24 01:01:53 2010 +0300 @@ -1,3 +1,20 @@ +/* +* Copyright (c) 2002 - 2007 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: +* +*/ + // USBLocodPluginTest Module - total 8 tc // USBLocodPluginTest Api Tests (4 tc) diff -r 141c98a07b37 -r cc2090c68156 usbengines/usblocodplugin/tsrc/USBLocodPluginTest/eabi/USBLocodPluginTestu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbengines/usblocodplugin/tsrc/USBLocodPluginTest/eabi/USBLocodPluginTestu.def Sat Apr 24 01:01:53 2010 +0300 @@ -0,0 +1,3 @@ +EXPORTS + _Z9LibEntryLR13CTestModuleIf @ 1 NONAME + diff -r 141c98a07b37 -r cc2090c68156 usbengines/usblocodplugin/tsrc/USBLocodPluginTest/init/USBLocodPluginTest_ats.ini --- a/usbengines/usblocodplugin/tsrc/USBLocodPluginTest/init/USBLocodPluginTest_ats.ini Sat Apr 24 00:46:12 2010 +0300 +++ b/usbengines/usblocodplugin/tsrc/USBLocodPluginTest/init/USBLocodPluginTest_ats.ini Sat Apr 24 01:01:53 2010 +0300 @@ -1,3 +1,19 @@ +# +# Copyright (c) 2002 - 2007 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: +# + # # This is STIF initialization file # Comment lines start with '#'-character. diff -r 141c98a07b37 -r cc2090c68156 usbengines/usblocodplugin/tsrc/USBLocodPluginTest/init/USBLocodPluginTest_phone.ini --- a/usbengines/usblocodplugin/tsrc/USBLocodPluginTest/init/USBLocodPluginTest_phone.ini Sat Apr 24 00:46:12 2010 +0300 +++ b/usbengines/usblocodplugin/tsrc/USBLocodPluginTest/init/USBLocodPluginTest_phone.ini Sat Apr 24 01:01:53 2010 +0300 @@ -1,3 +1,18 @@ +# +# Copyright (c) 2002 - 2007 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: +# # # This is STIF initialization file # Comment lines start with '#'-character. diff -r 141c98a07b37 -r cc2090c68156 usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/bmarm/USBRemotePersonalityTestu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/bmarm/USBRemotePersonalityTestu.def Sat Apr 24 01:01:53 2010 +0300 @@ -0,0 +1,3 @@ +EXPORTS + LibEntryL__FR13CTestModuleIf @ 1 NONAME R3UNUSED ; LibEntryL(CTestModuleIf &) + diff -r 141c98a07b37 -r cc2090c68156 usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/bwins/USBRemotePersonalityTestu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/bwins/USBRemotePersonalityTestu.def Sat Apr 24 01:01:53 2010 +0300 @@ -0,0 +1,3 @@ +EXPORTS + ?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * __cdecl LibEntryL(class CTestModuleIf &) + diff -r 141c98a07b37 -r cc2090c68156 usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/conf/USBRemotePersonalityTest.cfg --- a/usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/conf/USBRemotePersonalityTest.cfg Sat Apr 24 00:46:12 2010 +0300 +++ b/usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/conf/USBRemotePersonalityTest.cfg Sat Apr 24 01:01:53 2010 +0300 @@ -1,3 +1,20 @@ +/* +* Copyright (c) 2006 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: +* +*/ + [StifSettings] CapsModifier= USBRemotePersonalityTest.exe [EndStifSettings] diff -r 141c98a07b37 -r cc2090c68156 usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/eabi/USBRemotePersonalityTestu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/eabi/USBRemotePersonalityTestu.def Sat Apr 24 01:01:53 2010 +0300 @@ -0,0 +1,3 @@ +EXPORTS + _Z9LibEntryLR13CTestModuleIf @ 1 NONAME + diff -r 141c98a07b37 -r cc2090c68156 usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/init/USBRemotePersonalityTest_ats.ini --- a/usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/init/USBRemotePersonalityTest_ats.ini Sat Apr 24 00:46:12 2010 +0300 +++ b/usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/init/USBRemotePersonalityTest_ats.ini Sat Apr 24 01:01:53 2010 +0300 @@ -1,3 +1,20 @@ +# +# Copyright (c) 2006 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: +# + + # # This is STIF initialization file # Comment lines start with '#'-character. diff -r 141c98a07b37 -r cc2090c68156 usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/init/USBRemotePersonalityTest_phone.ini --- a/usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/init/USBRemotePersonalityTest_phone.ini Sat Apr 24 00:46:12 2010 +0300 +++ b/usbengines/usbremotepersonality/tsrc/USBRemotePersonalityTest/init/USBRemotePersonalityTest_phone.ini Sat Apr 24 01:01:53 2010 +0300 @@ -1,3 +1,19 @@ +# +# Copyright (c) 2006 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: +# + # # This is STIF initialization file # Comment lines start with '#'-character. diff -r 141c98a07b37 -r cc2090c68156 usbengines/usbwatcher/src/cusbactivepersonalityhandler.cpp --- a/usbengines/usbwatcher/src/cusbactivepersonalityhandler.cpp Sat Apr 24 00:46:12 2010 +0300 +++ b/usbengines/usbwatcher/src/cusbactivepersonalityhandler.cpp Sat Apr 24 01:01:53 2010 +0300 @@ -29,8 +29,7 @@ #include // CONSTANTS -// const TInt KSerialNumberLength = 12; -const TInt KContainerIdLength = 16; +const TInt KSerialNumberLength = 12; const TUid KUsbmanSvrUid = {0x101fe1db}; @@ -124,23 +123,19 @@ TLex lex( iPhoneInfo.iSerialNumber ); TInt length = iPhoneInfo.iSerialNumber.Length(); - // currently the serial number is used for the USB container ID - // the container ID length must be at least 16 bytes - // also, even when serial number is not used for the container id - // it must be at least 12, see below - if( length < KContainerIdLength ) + if( length < KSerialNumberLength ) { - // In GSM, the complete IMEI can used as USB serial number. But in - // CDMA, the ESN is too short for a valid Mass Storage serial number - // (Mass-Storage and Bulk Only Transport specs both require minimum - // 12 byte number), so it is extended with leading zeroes. When - // doing this, make sure not to write anything over descriptor's - // max length - if( iPhoneInfo.iSerialNumber.MaxLength() < KContainerIdLength ) + // In GSM, the complete IMEI can be used as USB serial + // number. But in CDMA, the ESN is too short for a valid Mass + // Storage serial number (Mass-Storage and Bulk Only Transport + // specs both require minimum 12 byte number), so it is + // extended with trailing zeroes. When doing this, make sure + // not to write anything over descriptor's max length + if( iPhoneInfo.iSerialNumber.MaxLength() < KSerialNumberLength ) { - iPhoneInfo.iSerialNumber.SetLength( KContainerIdLength ); + iPhoneInfo.iSerialNumber.SetLength( KSerialNumberLength ); } - while( length < KContainerIdLength ) + while( length < KSerialNumberLength ) { iPhoneInfo.iSerialNumber.Append( '0' ); ++length; diff -r 141c98a07b37 -r cc2090c68156 usbuis/usbui/USBClassChangeUIPlugin/src/USBClassChangeUIPluginContainer.cpp --- a/usbuis/usbui/USBClassChangeUIPlugin/src/USBClassChangeUIPluginContainer.cpp Sat Apr 24 00:46:12 2010 +0300 +++ b/usbuis/usbui/USBClassChangeUIPlugin/src/USBClassChangeUIPluginContainer.cpp Sat Apr 24 01:01:53 2010 +0300 @@ -310,16 +310,17 @@ iViewRef->HandleCommandL( EUSBUICmdSelect ); break; } + case EEventPenDownOnItem: + { + ShowPopUpsL (CurrentItemIndex()); + break; + } case EEventPanningStarted: case EEventPanningStopped: case EEventFlickStarted: case EEventFlickStopped: - case EEventPenDownOnItem: - case EEventItemDraggingActioned: - { - ShowPopUpsL (CurrentItemIndex()) ; - break; - } + case EEventItemDraggingActioned: + break; default: break; } diff -r 141c98a07b37 -r cc2090c68156 usbuis/usbui/tsrc/usbuiapitest/group/Bld.inf --- a/usbuis/usbui/tsrc/usbuiapitest/group/Bld.inf Sat Apr 24 00:46:12 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -/* -* Copyright (c) 2002 - 2007 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: -* -*/ - - - -PRJ_PLATFORMS -DEFAULT - -PRJ_TESTEXPORTS - -PRJ_EXPORTS - -PRJ_TESTMMPFILES -USBUiApiTest.mmp - -PRJ_MMPFILES - -// End of File diff -r 141c98a07b37 -r cc2090c68156 usbuis/usbui/tsrc/usbuiapitest/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbuis/usbui/tsrc/usbuiapitest/group/bld.inf Sat Apr 24 01:01:53 2010 +0300 @@ -0,0 +1,32 @@ +/* +* Copyright (c) 2002 - 2007 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: +* +*/ + + + +PRJ_PLATFORMS +DEFAULT + +PRJ_TESTEXPORTS + +PRJ_EXPORTS + +PRJ_TESTMMPFILES +USBUiApiTest.mmp + +PRJ_MMPFILES + +// End of File