125 lines
2.3 KiB
Java
125 lines
2.3 KiB
Java
package org.hwo.servicelink.ng;
|
|
|
|
import java.nio.ByteBuffer;
|
|
import java.nio.ByteOrder;
|
|
|
|
public class ServiceLinkRequestBuffer {
|
|
|
|
int ax;
|
|
int node;
|
|
int register;
|
|
Object value;
|
|
boolean write;
|
|
boolean reply;
|
|
|
|
boolean success;
|
|
|
|
public ServiceLinkRequestBuffer()
|
|
{
|
|
}
|
|
|
|
public void clear() {
|
|
ax = 0;
|
|
node = 0;
|
|
register = 0;
|
|
value = null;
|
|
write = false;
|
|
success = false;
|
|
}
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
return ((ax & 0x0F) << 20) | ((node & 0x0F) << 16) | ((register & 0xFFFF) << 0) | (write ? 0x01000000 : 0) | (hasFloatValue() ? 0x02000000 : 0);
|
|
}
|
|
|
|
public boolean hasFloatValue() {
|
|
return Float.class.isInstance(this.value) || Double.class.isInstance(this.value);
|
|
}
|
|
public boolean hasIntegerValue() {
|
|
return Integer.class.isInstance(this.value);
|
|
}
|
|
|
|
public int getAx() {
|
|
return ax;
|
|
}
|
|
|
|
|
|
public void setAx(int ax) {
|
|
this.ax = ax;
|
|
}
|
|
|
|
|
|
public int getNode() {
|
|
return node;
|
|
}
|
|
|
|
|
|
public void setNode(int node) {
|
|
this.node = node;
|
|
}
|
|
|
|
|
|
public int getRegister() {
|
|
return register;
|
|
}
|
|
|
|
|
|
public void setRegister(int register) {
|
|
if (register < 0) {
|
|
register += 65536;
|
|
}
|
|
this.register = register;
|
|
}
|
|
|
|
|
|
public byte[] getValueAsBytes() {
|
|
byte[] v = new byte[4];
|
|
if (Float.class.isInstance(value) || Double.class.isInstance(value)) {
|
|
ByteBuffer.wrap(v).order(ByteOrder.LITTLE_ENDIAN).asIntBuffer().put(Float.floatToIntBits((Float)value));
|
|
} else if (Integer.class.isInstance(value)) {
|
|
ByteBuffer.wrap(v).order(ByteOrder.LITTLE_ENDIAN).asIntBuffer().put((Integer)value);
|
|
}
|
|
return v;
|
|
}
|
|
|
|
public Object getValue() {
|
|
return value;
|
|
}
|
|
|
|
|
|
public void setValue(Object value) {
|
|
if (!Integer.class.isInstance(value) && !Float.class.isInstance(value) && !Double.class.isInstance(value)) {
|
|
throw new IllegalArgumentException();
|
|
}
|
|
this.value = value;
|
|
}
|
|
|
|
public boolean isWrite() {
|
|
return write;
|
|
}
|
|
|
|
public void setWrite(boolean write) {
|
|
this.write = write;
|
|
}
|
|
|
|
public boolean isReply() {
|
|
return reply;
|
|
}
|
|
public void setReply(boolean reply) {
|
|
this.reply = reply;
|
|
}
|
|
|
|
public boolean isSuccess() {
|
|
return success;
|
|
}
|
|
public void setSuccess(boolean success) {
|
|
this.success = success;
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return String.format("[ServiceLinkRequestBuffer(ax=%d node=%d reg=%d value=%s write=%s success=%s hash=0x%08X)]",ax,node,register,value,write,success,hashCode());
|
|
}
|
|
|
|
}
|