View Javadoc

1   package org.jscsi.target.scsi.sense.senseDataDescriptor;
2   
3   
4   import java.nio.ByteBuffer;
5   
6   import org.jscsi.target.scsi.sense.SenseData;
7   import org.jscsi.target.scsi.sense.senseDataDescriptor.senseKeySpecific.SenseKeySpecificData;
8   
9   
10  /**
11   * The sense key specific sense data descriptor provides additional information about the exception condition. The
12   * format and content of the sense-key specific data depends on the value in the {@link SenseData#senseKey} field.
13   * 
14   * @author Andreas Ergenzinger
15   */
16  public final class SenseKeySpecificSenseDataDescriptor extends SenseDataDescriptor {
17  
18      /**
19       * The byte position of the SENSE-KEY-SPECIFIC DATA field.
20       */
21      private static final int SENSE_KEY_SPECIFIC_DATA_INDEX = 4;
22  
23      /**
24       * Contains sense-key-specific information.
25       */
26      private final SenseKeySpecificData senseKeySpecificData;
27  
28      /**
29       * The constructor
30       * 
31       * @param senseKeySpecificData provides more detailed information
32       */
33      public SenseKeySpecificSenseDataDescriptor (final SenseKeySpecificData senseKeySpecificData) {
34          super(SenseDataDescriptorType.SENSE_KEY_SPECIFIC, 0x06);// additional
35                                                                  // length
36          this.senseKeySpecificData = senseKeySpecificData;
37      }
38  
39      @Override
40      protected final void serializeSpecificFields (final ByteBuffer byteBuffer, final int index) {
41  
42          senseKeySpecificData.serialize(byteBuffer, index + SENSE_KEY_SPECIFIC_DATA_INDEX);
43      }
44  }