1 package org.jscsi.target.scsi.modeSense;
2
3
4
5
6
7
8 public final class ModeParameterListBuilder {
9
10
11
12
13 final HeaderType headerType;
14
15
16
17
18
19 LogicalBlockDescriptor[] logicalBlockDescriptors;
20
21
22
23
24
25
26
27
28 boolean longLba = false;
29
30
31
32
33 ModePage[] modePages;
34
35 public ModeParameterListBuilder (final HeaderType headerType) {
36 this.headerType = headerType;
37 }
38
39 public void setLogicalBlockDescriptors (final ShortLogicalBlockDescriptor logicalBlockDescriptor) {
40 final ShortLogicalBlockDescriptor[] array = new ShortLogicalBlockDescriptor[1];
41 array[0] = logicalBlockDescriptor;
42 setLogicalBlockDescriptors(array);
43 }
44
45 public void setLogicalBlockDescriptors (final ShortLogicalBlockDescriptor[] logicalBlockDescriptors) {
46 this.logicalBlockDescriptors = logicalBlockDescriptors;
47 longLba = false;
48 }
49
50 public void setLogicalBlockDescriptors (final LongLogicalBlockDescriptor[] logicalBlockDescriptors) {
51 this.logicalBlockDescriptors = logicalBlockDescriptors;
52 longLba = true;
53 }
54
55 public void setModePages (final ModePage modePage) {
56 final ModePage[] array = new ModePage[1];
57 array[0] = modePage;
58 setModePages(array);
59 }
60
61 public void setModePages (final ModePage[] modePages) {
62 this.modePages = modePages;
63 }
64
65
66
67
68
69
70
71 boolean checkIntegrity () {
72 if (headerType == null) return false;
73 if (headerType == HeaderType.MODE_PARAMETER_HEADER_6 && longLba) return false;
74 return true;
75 }
76 }