haitest/bspsvs/suite/bsp/mmc/ldd/src/mmclddmediachange.cpp
changeset 0 cec860690d41
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/haitest/bspsvs/suite/bsp/mmc/ldd/src/mmclddmediachange.cpp	Tue Feb 02 01:39:10 2010 +0200
@@ -0,0 +1,87 @@
+/*
+* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+#include <kernel.h>
+#include <mmc.h>
+#include <locmedia.h>
+
+#include "mmcldd.h"
+#include "d_mmcsdif.h"
+
+/**
+ * Do a kernel side control for DMMCMediChange
+ *
+ * @param TInt aFunction - Request Function ID
+ * @param TAny* a1 - Given parameter
+ * @param TAny* a2 - Given parameter
+ *
+ * @return TInt the error code
+ *
+ * @leave N/A
+ */
+TInt DLddMmcCntrlInterface::MediaChangeDoControl(TInt aFunction, TAny* a1, TAny* a2)
+	{
+	MMCSDLOG("<--MediaChangeDoControl-->");
+	TInt r = KErrNone;
+	
+	if (!iSocket)
+		{
+  		MMCSDLOG("DLddMmcCntrlInterface::MediaChangeDoControl - iSocket is NULL");		
+		return KErrGeneral;
+		}
+	else if (!iClient)
+		{
+  		MMCSDLOG("DLddMmcCntrlInterface::MediaChangeDoControl - iClient is NULL");		
+		return KErrGeneral;
+		}
+
+	switch(TTCFunctionId(aFunction).FunctionId())
+		{
+      	case RMMCSDTestControllerInterface::EMediaChange:
+      		{
+			r = Kern::ThreadRawWrite(iClient, a1, &iMediaChange, sizeof(iMediaChange));
+      		}
+	  		break;
+
+		case RMMCSDTestControllerInterface::EMediaStateInfo:
+	     	{
+			TMediaState doorState;
+			doorState = iMediaChange->MediaState();
+			MMCSDLOG2("EMediaStateInfo : %d",doorState);
+			r = Kern::ThreadRawWrite(iClient, a1, &doorState, sizeof(TMediaState));
+			break;
+	       	}
+		case RMMCSDTestControllerInterface::EForceMediaChange:
+        	{
+			iMediaChange->ForceMediaChange();
+			MMCSDLOG("Force MediaChange");
+        	break;
+			}
+		case RMMCSDTestControllerInterface::EMediaChangeCounter:
+        	{
+    		r = Kern::ThreadRawWrite(iClient, a1, &iMediaChange->iReplyCount, sizeof(iMediaChange->iReplyCount));
+    		MMCSDLOG2("EMediaChangeCounter : %d",&iMediaChange->iReplyCount);
+        	break;
+			}
+		default:
+			r = KErrNotFound;
+			break;
+
+		}
+	return(r);
+	}