kerneltest/e32test/system/d_kucopy.h
changeset 0 a41df078684a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/system/d_kucopy.h	Mon Oct 19 15:55:17 2009 +0100
@@ -0,0 +1,178 @@
+// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "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:
+// e32test\system\d_kucopy.h
+// 
+//
+
+#if !defined(__D_KUCOPY_H__)
+#define __D_KUCOPY_H__
+#include <e32cmn.h>
+#ifndef __KERNEL_MODE__
+#include <e32std.h>
+#endif
+
+_LIT(KKUCopyLddName,"KUCopy");
+
+class TCapsKUCopyV01
+	{
+public:
+	TVersion	iVersion;
+	};
+
+struct SCopyInfo
+	{
+	SCopyInfo()
+		: iPtr(NULL), iOffset(0), iLength(0)
+		{}
+	SCopyInfo(const TUint8* aPtr, TInt aOffset, TInt aLength)
+		: iPtr(aPtr), iOffset(aOffset), iLength(aLength)
+		{}
+	const TUint8* iPtr;
+	TInt iOffset;
+	TInt iLength;
+	};
+
+struct SSetInfo
+	{
+	SSetInfo()
+		: iPtr(NULL), iLength(0), iValue(0)
+		{}
+	SSetInfo(TUint8* aPtr, TInt aLength, TUint8 aValue)
+		: iPtr(aPtr), iLength(aLength), iValue(aValue)
+		{}
+	TUint8* iPtr;
+	TInt iLength;
+	TUint iValue;
+	};
+
+struct SDesInfo
+	{
+	TInt iLength;
+	TInt iMaxLength;
+	TAny* iPtr;
+	};
+
+class RKUCopy : public RBusLogicalChannel
+	{
+public:
+	enum TControl
+		{
+		EControlPut,
+		EControlGet,
+		EControlPut32,
+		EControlGet32,
+		EControlSet,
+		EControlLength,
+		EControlRead,
+		EControlRandomLength,
+		EControlReadRandom,
+		EControlDesPut8,
+		EControlDesGet8,
+		EControlDesInfo8,
+		EControlDesPut16,
+		EControlDesGet16,
+		EControlDesInfo16,
+		EControlKernBufAddr,
+		EControlRequestComplete, 
+		EControlRequestCompleteLocal, 
+		EControlQueueRequestComplete, 
+		};
+public:
+#ifndef __KERNEL_MODE__
+	inline TInt Open();
+	inline void Put(TUint8* aDest, TInt aOffset, TInt aLength);
+	inline void Get(const TUint8* aSrc, TInt aOffset, TInt aLength);
+	inline void Put32(TUint32* aDest, TInt aOffset, TInt aLength);
+	inline void Get32(const TUint32* aSrc, TInt aOffset, TInt aLength);
+	inline void Set(TUint8* aDest, TInt aLength, TUint8 aValue);
+	inline TInt Length();
+	inline void Read(TUint8* aDest);
+	inline TInt RandomLength();
+	inline void ReadRandom(TUint8* aDest);
+	inline void DesPut(TDes8& aDest, const TDesC8& aSrc);
+	inline void DesGet(TDes8& aDest, const TDesC8& aSrc);
+	inline void DesInfo(const TDesC8& aDes, SDesInfo& aInfo);
+	inline void DesPut(TDes16& aDest, const TDesC16& aSrc);
+	inline void DesGet(TDes16& aDest, const TDesC16& aSrc);
+	inline void DesInfo(const TDesC16& aDes, SDesInfo& aInfo);
+	inline TUint8* KernelBufferAddress();
+	inline void RequestComplete(TRequestStatus* status);
+	inline void RequestCompleteLocal(TRequestStatus* status);
+	inline TInt QueueRequestComplete(TRequestStatus* status);
+#endif
+	};
+
+#ifndef __KERNEL_MODE__
+inline TInt RKUCopy::Open()
+	{ return DoCreate(KKUCopyLddName,TVersion(1,0,0),KNullUnit,NULL,NULL); }
+
+inline void RKUCopy::Put(TUint8* aDest, TInt aOffset, TInt aLength)
+	{ SCopyInfo info(aDest,aOffset,aLength); DoControl(EControlPut,&info); }
+
+inline void RKUCopy::Get(const TUint8* aSrc, TInt aOffset, TInt aLength)
+	{ SCopyInfo info(aSrc,aOffset,aLength); DoControl(EControlGet,&info); }
+
+inline void RKUCopy::Put32(TUint32* aDest, TInt aOffset, TInt aLength)
+	{ SCopyInfo info((const TUint8*)aDest,aOffset,aLength); DoControl(EControlPut32,&info); }
+
+inline void RKUCopy::Get32(const TUint32* aSrc, TInt aOffset, TInt aLength)
+	{ SCopyInfo info((const TUint8*)aSrc,aOffset,aLength); DoControl(EControlGet32,&info); }
+
+inline void RKUCopy::Set(TUint8* aDest, TInt aLength, TUint8 aValue)
+	{ SSetInfo info(aDest,aLength,aValue); DoControl(EControlSet,&info); }
+
+inline TInt RKUCopy::Length()
+	{ return DoControl(EControlLength); }
+
+inline void RKUCopy::Read(TUint8* aDest)
+	{ DoControl(EControlRead,aDest); }
+
+inline TInt RKUCopy::RandomLength()
+	{ return DoControl(EControlRandomLength); }
+
+inline void RKUCopy::ReadRandom(TUint8* aDest)
+	{ DoControl(EControlReadRandom,aDest); }
+
+inline void RKUCopy::DesPut(TDes8& aDest, const TDesC8& aSrc)
+	{ DoControl(EControlDesPut8, &aDest, (TAny*)&aSrc); }
+
+inline void RKUCopy::DesGet(TDes8& aDest, const TDesC8& aSrc)
+	{ DoControl(EControlDesGet8, &aDest, (TAny*)&aSrc); }
+
+inline void RKUCopy::DesInfo(const TDesC8& aDes, SDesInfo& aInfo)
+	{ DoControl(EControlDesInfo8, (TAny*)&aDes, &aInfo); }
+
+inline void RKUCopy::DesPut(TDes16& aDest, const TDesC16& aSrc)
+	{ DoControl(EControlDesPut16, &aDest, (TAny*)&aSrc); }
+
+inline void RKUCopy::DesGet(TDes16& aDest, const TDesC16& aSrc)
+	{ DoControl(EControlDesGet16, &aDest, (TAny*)&aSrc); }
+
+inline void RKUCopy::DesInfo(const TDesC16& aDes, SDesInfo& aInfo)
+	{ DoControl(EControlDesInfo16, (TAny*)&aDes, &aInfo); }
+
+inline TUint8* RKUCopy::KernelBufferAddress()
+	{ return (TUint8*)DoControl(EControlKernBufAddr); }
+
+inline void RKUCopy::RequestComplete(TRequestStatus* status)
+	{ DoControl(EControlRequestComplete, status); }
+
+inline void RKUCopy::RequestCompleteLocal(TRequestStatus* status)
+	{ DoControl(EControlRequestCompleteLocal, status); }
+
+inline TInt RKUCopy::QueueRequestComplete(TRequestStatus* status)
+	{ return DoControl(EControlQueueRequestComplete, status); }
+#endif
+
+#endif