|
|
@ -1,6 +1,8 @@ |
|
|
|
package a8k.a8k_can_protocol; |
|
|
|
|
|
|
|
import a8k.utils.ByteArray; |
|
|
|
import org.slf4j.Logger; |
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
|
|
|
|
public class A8kPacket { |
|
|
|
/** |
|
|
@ -18,6 +20,8 @@ public class A8kPacket { |
|
|
|
* kptv2_error_ack = 2, |
|
|
|
* kptv2_event = 3, |
|
|
|
*/ |
|
|
|
public static final Logger logger = LoggerFactory.getLogger(A8kPacket.class); |
|
|
|
|
|
|
|
|
|
|
|
byte[] raw; |
|
|
|
|
|
|
@ -63,6 +67,9 @@ public class A8kPacket { |
|
|
|
} |
|
|
|
|
|
|
|
public byte[] getCmdContent() { |
|
|
|
if (raw.length < 8) { |
|
|
|
return new byte[0]; |
|
|
|
} |
|
|
|
byte[] cmdcontent = new byte[raw.length - 8]; |
|
|
|
System.arraycopy(raw, 8, cmdcontent, 0, raw.length - 8); |
|
|
|
return cmdcontent; |
|
|
@ -82,21 +89,20 @@ public class A8kPacket { |
|
|
|
|
|
|
|
CmdId cmdId = CmdId.valueOf(getCmdId()); |
|
|
|
assert cmdId != null; |
|
|
|
|
|
|
|
if (packetType == PACKET_TYPE_CMD) { |
|
|
|
if (cmdId.cmdAttachType == CmdId.ATTACH_IS_INT32) { |
|
|
|
ret = String.format("[CMD ] index:[%d] (%s %s :i32[%s])", getPacketIndex(), cmdId, MId.valueOf(getModuleId()), formatInt32ATTACH(getCmdContent())); |
|
|
|
ret = String.format("[CMD ] index:[%d] (%s %s(%d) :param:[%s])", getPacketIndex(), cmdId, MId.valueOf(getModuleId()), getModuleId(), formatInt32ATTACH(getCmdContent())); |
|
|
|
} else { |
|
|
|
ret = String.format("[CMD ] index:[%d] (%s %s(%d) :bytes[%s])", getPacketIndex(), cmdId, MId.valueOf(getModuleId()), getModuleId(), ByteArray.toByteString(getCmdContent())); |
|
|
|
ret = String.format("[CMD ] index:[%d] (%s %s(%d) :param:[%s])", getPacketIndex(), cmdId, MId.valueOf(getModuleId()), getModuleId(), ByteArray.toByteString(getCmdContent())); |
|
|
|
} |
|
|
|
} else if (packetType == PACKET_TYPE_ACK) { |
|
|
|
if (cmdId.receiptAttachType == CmdId.ATTACH_IS_INT32) { |
|
|
|
ret = String.format("[ACK ] index:[%d] (%s %s(%d) :[%s])", getPacketIndex(), cmdId, MId.valueOf(getModuleId()), getModuleId(), formatInt32ATTACH(getCmdContent())); |
|
|
|
ret = String.format("[ACK ] index:[%d] (%s :[%s])", getPacketIndex(), cmdId, formatInt32ATTACH(getCmdContent())); |
|
|
|
} else { |
|
|
|
ret = String.format("[ACK ] index:[%d] (%s %s(%d) :[%s])", getPacketIndex(), cmdId, MId.valueOf(getModuleId()), getModuleId(), ByteArray.toByteString(getCmdContent())); |
|
|
|
ret = String.format("[ACK ] index:[%d] (%s :[%s])", getPacketIndex(), cmdId, ByteArray.toByteString(getCmdContent())); |
|
|
|
} |
|
|
|
} else if (packetType == PACKET_TYPE_ERROR_ACK) { |
|
|
|
ret = String.format("[EACK ] index:[%d] (%s %s(%d) :[%s])", getPacketIndex(), cmdId, MId.valueOf(getModuleId()), getModuleId(), A8kEcode.toString(getContentI32(0))); |
|
|
|
ret = String.format("[EACK ] index:[%d] (%s :[%s])", getPacketIndex(), cmdId, A8kEcode.toString(getContentI32(0))); |
|
|
|
} else if (packetType == PACKET_TYPE_EVENT) { |
|
|
|
if (cmdId.cmdAttachType == CmdId.ATTACH_IS_INT32) { |
|
|
|
ret = String.format("[EVENT] index:[%d] (%s %s(%d) :[%s])", getPacketIndex(), cmdId, MId.valueOf(getModuleId()), getModuleId(), formatInt32ATTACH(getCmdContent())); |
|
|
@ -112,9 +118,11 @@ public class A8kPacket { |
|
|
|
private String formatInt32ATTACH(byte[] attach) { |
|
|
|
StringBuilder ret = new StringBuilder(); |
|
|
|
for (int i = 0; i < attach.length; i += 4) { |
|
|
|
if (i + 4 >= attach.length) |
|
|
|
if (i + 3 >= attach.length) |
|
|
|
break; |
|
|
|
ret.append(String.format("%d ", ByteArray.read32bit(attach, i))); |
|
|
|
if (i != 0) |
|
|
|
ret.append(","); |
|
|
|
ret.append(String.format("%d", ByteArray.read32bit(attach, i))); |
|
|
|
} |
|
|
|
return ret.toString(); |
|
|
|
} |
|
|
|