diff -r 000000000000 -r a41df078684a kerneltest/e32test/system/d_kucopy.h --- /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 +#ifndef __KERNEL_MODE__ +#include +#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