userlibandfileserver/fileserver/shostmassstorage/server/protocol/tscsiprimarycmds.cpp
changeset 297 b2826f67641f
parent 124 5802e2ce68ed
equal deleted inserted replaced
296:94f2adf59133 297:b2826f67641f
    10 //
    10 //
    11 // Contributors:
    11 // Contributors:
    12 //
    12 //
    13 // Description:
    13 // Description:
    14 // scsiprimarycmds.cpp
    14 // scsiprimarycmds.cpp
    15 // 
    15 //
    16 //
    16 //
    17 
    17 
    18 /**
    18 /**
    19  @file
    19  @file
    20  @internalTechnology
    20  @internalTechnology
    21 */
    21 */
    22 
    22 
    23 #include <e32base.h>
    23 #include <e32base.h>
    24 
    24 
       
    25 #include "OstTraceDefinitions.h"
       
    26 #ifdef OST_TRACE_COMPILER_IN_USE
       
    27 #include "tscsiprimarycmdsTraces.h"
       
    28 #endif
       
    29 
       
    30 
    25 #include "msctypes.h"
    31 #include "msctypes.h"
    26 #include "debug.h"
       
    27 #include "msdebug.h"
       
    28 
       
    29 #include "mtransport.h"
    32 #include "mtransport.h"
    30 #include "mprotocol.h"
    33 #include "mprotocol.h"
    31 
    34 
    32 #include "tscsiclientreq.h"
    35 #include "tscsiclientreq.h"
    33 #include "tscsiprimarycmds.h"
    36 #include "tscsiprimarycmds.h"
    34 
    37 
    35 
    38 
    36 // **** TEST UNIT READY ****
    39 // **** TEST UNIT READY ****
    37 TInt TScsiClientTestUnitReadyReq::EncodeRequestL(TDes8& aBuffer) const
    40 TInt TScsiClientTestUnitReadyReq::EncodeRequestL(TDes8& aBuffer) const
    38     {
    41     {
    39 	__MSFNSLOG
    42     OstTrace0(TRACE_SHOSTMASSSTORAGE_SCSI, TSCSIPRIMARYCMDS_10,
    40     __SCSIPRINT(_L("<-- SCSI TEST UNIT READY"));
    43               "<-- SCSI TEST UNIT READY");
    41     TInt length = TScsiClientReq::EncodeRequestL(aBuffer);
    44     TInt length = TScsiClientReq::EncodeRequestL(aBuffer);
    42     return length;
    45     return length;
    43     }
    46     }
    44 
    47 
    45 
    48 
    46 // **** REQUEST SENSE ****
    49 // **** REQUEST SENSE ****
    47 void TScsiClientRequestSenseResp::DecodeSenseInfo(const TDesC8& aPtr)
    50 void TScsiClientRequestSenseResp::DecodeSenseInfo(const TDesC8& aPtr)
    48     {
    51     {
    49 	__MSFNSLOG
       
    50     iResponseCode = static_cast<TResponseCode>(aPtr[0]);
    52     iResponseCode = static_cast<TResponseCode>(aPtr[0]);
    51     iSenseInfo.iSenseCode = aPtr[02];
    53     iSenseInfo.iSenseCode = aPtr[02];
    52     iSenseInfo.iAdditional = aPtr[12];
    54     iSenseInfo.iAdditional = aPtr[12];
    53     iSenseInfo.iQualifier = aPtr[13];
    55     iSenseInfo.iQualifier = aPtr[13];
    54     }
    56     }
    55 
    57 
    56 
    58 
    57 void TScsiClientRequestSenseResp::DecodeL(const TDesC8& aPtr)
    59 void TScsiClientRequestSenseResp::DecodeL(const TDesC8& aPtr)
    58 	{
    60     {
    59 	__MSFNSLOG
    61     OstTrace0(TRACE_SHOSTMASSSTORAGE_SCSI, TSCSIPRIMARYCMDS_11,
    60     __SCSIPRINT(_L("--> SCSI REQUEST SENSE"));
    62               "--> SCSI REQUEST SENSE");
    61     if (aPtr.Length() < KResponseLength)
    63     if (aPtr.Length() < KResponseLength)
    62         {
    64         {
    63         // Handle short data.
    65         // Handle short data.
    64         // The data not transferred is assumed to be zero.
    66         // The data not transferred is assumed to be zero.
    65 
    67 
    75         }
    77         }
    76     else
    78     else
    77         {
    79         {
    78         DecodeSenseInfo(aPtr);
    80         DecodeSenseInfo(aPtr);
    79         }
    81         }
    80 	}
    82     }
    81 
    83 
    82 
    84 
    83 // **** INQUIRY ****
    85 // **** INQUIRY ****
    84 void TScsiClientInquiryResp::DecodeInquiry(const TDesC8& aPtr)
    86 void TScsiClientInquiryResp::DecodeInquiry(const TDesC8& aPtr)
    85     {
    87     {
    86 	__MSFNSLOG
       
    87     iPeripheralInfo.iRemovable = (aPtr[1] & 0x80) ? ETrue : EFalse;
    88     iPeripheralInfo.iRemovable = (aPtr[1] & 0x80) ? ETrue : EFalse;
    88 
    89 
    89     iPeripheralInfo.iPeripheralQualifier = aPtr[0] >> 5;
    90     iPeripheralInfo.iPeripheralQualifier = aPtr[0] >> 5;
    90     iPeripheralInfo.iPeripheralDeviceType = aPtr[0] & 0x1F;
    91     iPeripheralInfo.iPeripheralDeviceType = aPtr[0] & 0x1F;
    91     iPeripheralInfo.iVersion = aPtr[2];
    92     iPeripheralInfo.iVersion = aPtr[2];
   101     iPeripheralInfo.iIdentification.iProductRev.Copy(productRev);
   102     iPeripheralInfo.iIdentification.iProductRev.Copy(productRev);
   102     }
   103     }
   103 
   104 
   104 
   105 
   105 void TScsiClientInquiryResp::DecodeL(const TDesC8& aPtr)
   106 void TScsiClientInquiryResp::DecodeL(const TDesC8& aPtr)
   106 	{
   107     {
   107     __MSFNSLOG
   108     OstTrace0(TRACE_SHOSTMASSSTORAGE_SCSI, TSCSIPRIMARYCMDS_12,
   108     __SCSIPRINT(_L("--> SCSI INQUIRY"));
   109               "--> SCSI INQUIRY");
   109     if (aPtr.Length() < KResponseLength)
   110     if (aPtr.Length() < KResponseLength)
   110         {
   111         {
   111         // Handle short data.
   112         // Handle short data.
   112         // The data not transferred is assumed to be zero.
   113         // The data not transferred is assumed to be zero.
   113 
   114 
   123         }
   124         }
   124     else
   125     else
   125         {
   126         {
   126         DecodeInquiry(aPtr);
   127         DecodeInquiry(aPtr);
   127         }
   128         }
   128 	}
   129     }
   129 
   130 
   130 
   131 
   131 // ****	PREVENT MEDIA REMOVAL ****
   132 // **** PREVENT MEDIA REMOVAL ****
   132 TInt TScsiClientPreventMediaRemovalReq::EncodeRequestL(TDes8& aBuffer) const
   133 TInt TScsiClientPreventMediaRemovalReq::EncodeRequestL(TDes8& aBuffer) const
   133     {
   134     {
   134     __MSFNSLOG
   135     OstTrace0(TRACE_SHOSTMASSSTORAGE_SCSI, TSCSIPRIMARYCMDS_13,
   135     __SCSIPRINT(_L("<-- SCSI PREVENT MEDIA REMOVAL"));
   136               "<-- SCSI PREVENT MEDIA REMOVAL");
   136     TInt length = TScsiClientReq::EncodeRequestL(aBuffer);
   137     TInt length = TScsiClientReq::EncodeRequestL(aBuffer);
   137 	if (iPrevent)
   138     if (iPrevent)
   138         aBuffer[4] |= 0x01;
   139         aBuffer[4] |= 0x01;
   139     return length;
   140     return length;
   140     }
   141     }
   141 
   142