kerneltest/f32test/smassstorage/inc/scsicmdbuilder.h
changeset 0 a41df078684a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/f32test/smassstorage/inc/scsicmdbuilder.h	Mon Oct 19 15:55:17 2009 +0100
@@ -0,0 +1,87 @@
+// Copyright (c) 2004-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:
+// Provides utilities to build SCSI commands
+// 
+//
+
+/**
+ @file
+ @internalTechnology
+*/
+
+#ifndef __SCSICMDBUILDER_H__
+#define __SCSICMDBUILDER_H__
+
+#include <e32std.h>
+#include <f32file.h>
+
+const TInt KScsiCmdMaxLen 	= 10;
+const TInt KCbwLength       = 31;
+const TInt KCswLength       = 13;
+const TInt KKiloBytes		= 1024;
+
+GLREF_D TBuf8<KScsiCmdMaxLen> scsiCmdBuf;
+
+/**
+ builds read/write SCSI command
+ */
+GLREF_C void BuildReadWrite(TInt aFlag, TInt aLogicalBlkAddr, TInt aTotalBlks);
+
+/**
+ Builds prevent/allow medium removal SCSI command
+ 
+ @param aFlag: indicating if the command is to allow or prevent medium removal
+ */ 
+GLREF_C void BuildMediumRemoval(TInt aFlag);
+
+/**
+ Builds a test unit ready SCSI command
+ */
+GLREF_C void BuildTestUnitReady();
+
+/**
+ Builds a start/stop unit command
+ 
+ @param aFlag: indicating if the command is to start or stop unit
+ */ 
+GLREF_C void BuildStartStopUnit(TInt aFlag);
+
+/**
+ Copy an int. Little endian
+ 
+ @param dest the destination
+ @param source the source
+ */
+GLREF_C void fillInt(TUint8* dest, TInt source);
+
+/**
+ Extracts an integer from a buffer. Assume little endian 
+ */
+GLREF_C TInt extractInt(const TUint8* aBuf);
+
+/**
+ Builds a CBW message
+ 
+ @param aCbw:            stores CBW
+ @param aDCBWTag:        a command block tag sent by the host. Used to associates a CSW
+         				 with corresponding CBW
+ @param aDataTranferLen: the number of bytes the host expects to transfer
+ @param aInOutFlag:      value for bmCBWFlags field, indicating the direction of transfer
+ @param aCBWCB:			 the actual command to be wrapped
+ @param aTestLun:	 	 local unit number
+ */
+GLREF_C void createCBW(TDes8& aCbw, TInt aDCBWTag, TInt aDataTransferLen, TUint8 aInOutFlag, TDes8& aCBWCB, TUint8 aTestLun);
+
+#endif // __SCSICMDBUILDER_H__
+