1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 package net.sf.openv4j.protocolhandlers;
26
27 import java.util.Arrays;
28
29
30
31
32
33
34 public class DataBlock {
35 private byte[] data;
36 private final int baseAddress;
37
38
39
40
41
42
43
44 public DataBlock(int baseAddress, int size) {
45 super();
46 this.baseAddress = baseAddress;
47 data = new byte[size];
48 Arrays.fill(data, (byte) 0xff);
49 }
50
51
52
53
54
55
56 DataBlock(int baseAddress, int... bytes) {
57 super();
58 this.baseAddress = baseAddress;
59 data = new byte[bytes.length];
60
61 for (int i = 0; i < bytes.length; i++) {
62 data[i] = (byte) bytes[i];
63 }
64 }
65
66 public int getBaseAddress() {
67 return baseAddress;
68 }
69
70 public byte getByteAtPos(int pos) {
71 return data[pos];
72 }
73
74 public byte[] getBytes() {
75 return data;
76 }
77
78 public int getLength() {
79 return data.length;
80 }
81
82 public void setByteAtPos(int pos, int theData) {
83 data[pos] = (byte) theData;
84 }
85
86 public void setBytesAtPos(int pos, byte[] theData) {
87 if (theData.length == data.length) {
88 data = theData;
89 } else {
90 for (int i = 0; i < theData.length; i++) {
91 data[i + pos] = theData[i];
92 }
93 }
94 }
95
96 public void writeTo(StringBuilder sb, boolean suppressFirstNewLine) {
97 for (int i = 0; i < data.length; i++) {
98 if (((i + baseAddress) % 16) == 0) {
99 if (suppressFirstNewLine) {
100 sb.append(String.format("%04x ", i + baseAddress));
101 suppressFirstNewLine = false;
102 } else {
103 sb.append(String.format("\n%04x ", i + baseAddress));
104 }
105 } else if (((i + baseAddress) % 4) == 0) {
106 sb.append(" |");
107 }
108
109 sb.append(String.format(" %02x", data[i]));
110 }
111 }
112 }