diff -r 000000000000 -r bde4ae8d615e os/kernelhwsrv/userlibandfileserver/fileserver/shostmassstorage/server/protocol/include/mprotocol.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/kernelhwsrv/userlibandfileserver/fileserver/shostmassstorage/server/protocol/include/mprotocol.h Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,147 @@ +// Copyright (c) 2008-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: +// protocol.h +// +// + +/** + @file + @internalTechnology +*/ + +#ifndef MPROTOCOL_H +#define MPROTOCOL_H + +class MTransport; +struct TCapsInfo; + +/** +Interface class to control a Mass Storage device +*/ +class MProtocol + { +public: + /** Command to initialise LUN */ + virtual void InitialiseUnitL() = 0; + + /** Command to uninitialise the LUN */ + virtual void UninitialiseUnitL() = 0; + + /** + Command to read the media. + + @param aPos + @param aLen + @param aCopybuf + */ + virtual void ReadL(TUint64 aPos, TDes8& aCopybuf, TInt aLen) = 0; + + /** + Command to write to the media. + + @param aPos + @param aLen + @param aCopybuf + */ + virtual void WriteL(TUint64 aPos, TDesC8& aCopybuf, TInt aLen) = 0; + + /** + command to find the capacity of the media + + @param aCopybuf + */ + virtual void GetCapacityL(TCapsInfo& aCapsInfo) = 0; + + /** unit testing */ + virtual void CreateSbcInterfaceL(TUint32 aBlockLen, TUint32 aLastLba) = 0; + + virtual void DoScsiReadyCheckEventL() = 0; + + /** + Media change notification + + @param aMessage + */ + virtual void NotifyChange(const RMessage2& aMessage) = 0; + + /** + Force notification to be sent + */ + virtual void ForceCompleteNotifyChangeL() = 0; + /** + Force notification to be sent + */ + virtual void CancelChangeNotifierL() = 0; + /** + Suspends the logical unit + */ + virtual void SuspendL() = 0; + /** + Resumes the logical unit + */ + virtual void ResumeL() = 0; + /** + Resets the media change and finalisation request status check timer + */ + virtual TBool IsConnected() = 0; + + /** Destructor */ + virtual ~MProtocol(); + }; + +inline MProtocol::~MProtocol() + { + } + +/** +Interface class to encode SCSI request into a byte stream +*/ +class MClientCommandServiceReq + { +public: + /** + Encode the command data into a byte stream. + + @param aBuffer Buffer to place the encoded data into + @return TInt Length of the encoded data + */ + virtual TInt EncodeRequestL(TDes8& aBuffer) const = 0; + }; + + +/** +Interface class to decode a SCSI response from byte stream into corresponding +class +*/ +class MClientCommandServiceResp + { +public: + /** + Returns the length of the RESPONSE data stream. + + @return TInt Length in bytes + */ + virtual TInt DataLength() const = 0; + + /** + Decode data into RESPONSE structure of implementation class. + + @param aPtr Descriptor (byte stream) containing the data to be decoded + */ + virtual void DecodeL(const TDesC8& aPtr) = 0; + }; + + +#endif // MPROTOCOL_H +