1 package net.sf.mbus4j.dataframes;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 import net.sf.json.JSONObject;
31 import net.sf.mbus4j.json.JSONFactory;
32 import net.sf.mbus4j.json.JsonSerializeType;
33
34
35
36
37
38
39 public class RequestClassXData implements ShortFrame {
40
41 private byte address;
42 private boolean fcb;
43 private boolean fcv;
44 private ControlCode controlCode;
45
46 public RequestClassXData(boolean fcb, boolean fcv, ControlCode controlCode) {
47 this.fcb = fcb;
48 this.fcv = fcv;
49 this.controlCode = controlCode;
50 }
51
52 public RequestClassXData(ControlCode controlCode) {
53 this(false, true, controlCode);
54 }
55
56 public RequestClassXData(ControlCode controlCode, byte address) {
57 this(false, true, controlCode);
58 this.address = address;
59 }
60
61 @Override
62 public byte getAddress() {
63 return address;
64 }
65
66 @Override
67 public ControlCode getControlCode() {
68 return controlCode;
69 }
70
71 @Override
72 public boolean isFcb() {
73 return fcb;
74 }
75
76 @Override
77 public boolean isFcv() {
78 return fcv;
79 }
80
81 @Override
82 public void setAddress(byte address) {
83 this.address = address;
84 }
85
86 @Override
87 public void setFcb(boolean fcb) {
88 this.fcb = fcb;
89 }
90
91 @Override
92 public void setFcv(boolean fcv) {
93 this.fcv = fcv;
94 }
95
96 @Override
97 public String toString() {
98 StringBuilder sb = new StringBuilder();
99 sb.append("control code = ").append(getControlCode()).append('\n');
100 sb.append("isFcb = ").append(isFcb()).append('\n');
101 sb.append("isFcv = ").append(isFcv()).append('\n');
102 sb.append(String.format("address = 0x%02X\n", address));
103 return sb.toString();
104 }
105
106 @Override
107 public JSONObject toJSON(JsonSerializeType jsonSerializeType) {
108 JSONObject result = new JSONObject();
109 result.accumulate("controlCode", getControlCode().getLabel());
110 if (JsonSerializeType.ALL == jsonSerializeType) {
111 result.accumulate("fcb", isFcb());
112 result.accumulate("fcv", isFcv());
113 result.accumulate("address", JSONFactory.encodeHexByte(getAddress()));
114 }
115 return result;
116 }
117
118 @Override
119 public void fromJSON(JSONObject json) {
120 setFcb(JSONFactory.getBoolean(json, "fcb", false));
121 setFcv(JSONFactory.getBoolean(json, "fcv", false));
122 setAddress(JSONFactory.decodeHexByte(json, "address", (byte) 0));
123 }
124 }