1 package eu.javaexperience.electronic.uartbus;
3 import java.math.BigInteger;
4 import java.util.Arrays;
22 public int getParseStateIndex()
27 public void setParseStateIndex(
int index)
32 public int getRemainingBytes()
34 return data.length-ep;
37 public byte readSByte()
42 public short readUByte()
44 return (
short) (0xff & data[ep++]);
47 public long readVuint()
49 return readInt(
false).longValue();
52 public long readVsint()
54 return readInt(
true).longValue();
57 public BigInteger readInt(
boolean signed)
60 BigInteger ret =
UartbusTools.unpackValue(
signed, data, ep, u);
65 public byte[] readBlob(
int length)
67 byte[] ret = Arrays.copyOfRange(data, ep, ep+length);
72 public byte[] readBlobRemain()
74 return readBlob(data.length-ep);
77 public String readString()
79 for(
int i=0;i<data.length-ep;++i)
83 return new String(readBlob(i));
87 throw new RuntimeException(
"No string in the buffer");
90 public short readSShort()
93 ret |= ((short) data[ep]) << 8;
94 ret |= (data[ep+1] & 0xff);
102 ret |= ((int) data[ep]) << 24;
103 ret |= ((int) data[ep+1]) << 16;
104 ret |= ((int) data[ep+2]) << 8;
105 ret |= data[ep+3] & 0xff;
110 public long readSLong()
113 ret |= ((long) data[ep]) << 56;
114 ret |= ((long) data[ep+1]) << 48;
115 ret |= ((long) data[ep+2]) << 40;
116 ret |= ((long) data[ep+3]) << 32;
117 ret |= ((long) data[ep+4]) << 24;
118 ret |= ((long) data[ep+5]) << 16;
119 ret |= ((long) data[ep+6]) << 8;
120 ret |= data[ep+7] & 0xff;
125 public float readFloat()
127 return Float.intBitsToFloat(readSInt());
130 public double readDouble()
132 return Double.longBitsToDouble(readSLong());
135 public BigInteger readVsNumber()
137 return readInt(
true);
140 public BigInteger readVuNumber()
142 return readInt(
false);
145 public int readUShort()
148 ret |= ((int) data[ep]) << 8;
149 ret |= data[ep+1] & 0xff;
154 public boolean hasUnprocessedBytes()
156 return ep < data.length;