You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by jm...@apache.org on 2018/01/05 03:24:08 UTC
[incubator-plc4x] branch master updated: clean up switch statements
a little
This is an automated email from the ASF dual-hosted git repository.
jmclean pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git
The following commit(s) were added to refs/heads/master by this push:
new 63bba4d clean up switch statements a little
63bba4d is described below
commit 63bba4d353f1caf9098a81f76ba5fc5a9571b02d
Author: Justin Mclean <jm...@apache.org>
AuthorDate: Fri Jan 5 14:23:59 2018 +1100
clean up switch statements a little
---
.../org/apache/plc4x/java/s7/netty/S7Protocol.java | 165 ++++++++++-----------
1 file changed, 77 insertions(+), 88 deletions(-)
diff --git a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/S7Protocol.java b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/S7Protocol.java
index ac524cf..5534d74 100644
--- a/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/S7Protocol.java
+++ b/plc4j/protocols/s7/src/main/java/org/apache/plc4x/java/s7/netty/S7Protocol.java
@@ -103,42 +103,39 @@ public class S7Protocol extends MessageToMessageCodec<IsoTPMessage, S7Message> {
buf.writeByte(s7Parameter.getType().getCode());
switch (s7Parameter.getType()) {
case READ_VAR:
- case WRITE_VAR: {
+ case WRITE_VAR:
VarParameter varParameter = (VarParameter) s7Parameter;
List<VarParameterItem> items = varParameter.getItems();
// ReadRequestItem count (Read one variable at a time)
buf.writeByte((byte) items.size());
for (VarParameterItem item : items) {
- switch (item.getAddressingMode()) {
- case S7ANY: {
- S7AnyVarParameterItem s7AnyRequestItem = (S7AnyVarParameterItem) item;
- buf.writeByte(s7AnyRequestItem.getSpecificationType().getCode());
- // Length of this item (excluding spec type and length)
- buf.writeByte((byte) 0x0a);
- buf.writeByte(s7AnyRequestItem.getAddressingMode().getCode());
- buf.writeByte(s7AnyRequestItem.getTransportSize().getCode());
- buf.writeShort(s7AnyRequestItem.getNumElements());
- buf.writeShort(s7AnyRequestItem.getDataBlockNumber());
- buf.writeByte(s7AnyRequestItem.getMemoryArea().getCode());
- // A S7 address is 3 bytes long. Unfortunately the byte-offset is NOT located in
- // byte 1 and byte 2 and the bit offset in byte 3. Siemens used the last 3 bits of
- // byte 3 for the bit-offset and the remaining 5 bits of byte 3 to contain the lowest
- // 5 bits of the byte-offset. The highest 5 bits of byte 1 are probably left unused
- // for future extensions.
- buf.writeShort((short) (s7AnyRequestItem.getByteOffset() >> 5));
- buf.writeByte((byte) ((
+ VariableAddressingMode addressMode = item.getAddressingMode();
+ if (addressMode == VariableAddressingMode.S7ANY) {
+ S7AnyVarParameterItem s7AnyRequestItem = (S7AnyVarParameterItem) item;
+ buf.writeByte(s7AnyRequestItem.getSpecificationType().getCode());
+ // Length of this item (excluding spec type and length)
+ buf.writeByte((byte) 0x0a);
+ buf.writeByte(s7AnyRequestItem.getAddressingMode().getCode());
+ buf.writeByte(s7AnyRequestItem.getTransportSize().getCode());
+ buf.writeShort(s7AnyRequestItem.getNumElements());
+ buf.writeShort(s7AnyRequestItem.getDataBlockNumber());
+ buf.writeByte(s7AnyRequestItem.getMemoryArea().getCode());
+ // A S7 address is 3 bytes long. Unfortunately the byte-offset is NOT located in
+ // byte 1 and byte 2 and the bit offset in byte 3. Siemens used the last 3 bits of
+ // byte 3 for the bit-offset and the remaining 5 bits of byte 3 to contain the lowest
+ // 5 bits of the byte-offset. The highest 5 bits of byte 1 are probably left unused
+ // for future extensions.
+ buf.writeShort((short) (s7AnyRequestItem.getByteOffset() >> 5));
+ buf.writeByte((byte) ((
(s7AnyRequestItem.getByteOffset() & 0x1F) << 3)
| (s7AnyRequestItem.getBitOffset() & 0x07)));
- break;
- }
- default:
- logger.error("writing this item type not implemented");
- return;
+ } else {
+ logger.error("writing this item type not implemented");
+ return;
}
}
break;
- }
- case SETUP_COMMUNICATION: {
+ case SETUP_COMMUNICATION:
SetupCommunicationParameter setupCommunication = (SetupCommunicationParameter) s7Parameter;
// Reserved (is always constant 0x00)
buf.writeByte((byte) 0x00);
@@ -146,7 +143,9 @@ public class S7Protocol extends MessageToMessageCodec<IsoTPMessage, S7Message> {
buf.writeShort(setupCommunication.getMaxAmqCallee());
buf.writeShort(setupCommunication.getPduLength());
break;
- }
+ default:
+ logger.error("writing this parameter type not implemented");
+ return;
}
}
@@ -154,7 +153,7 @@ public class S7Protocol extends MessageToMessageCodec<IsoTPMessage, S7Message> {
for (S7Payload payload : in.getPayloads()) {
switch (payload.getType()) {
case READ_VAR:
- case WRITE_VAR: {
+ case WRITE_VAR:
VarPayload varPayload = (VarPayload) payload;
for (VarPayloadItem payloadItem : varPayload.getPayloadItems()) {
buf.writeByte(payloadItem.getReturnCode().getCode());
@@ -163,7 +162,6 @@ public class S7Protocol extends MessageToMessageCodec<IsoTPMessage, S7Message> {
buf.writeBytes(payloadItem.getData());
}
break;
- }
}
}
}
@@ -209,12 +207,9 @@ public class S7Protocol extends MessageToMessageCodec<IsoTPMessage, S7Message> {
setupCommunicationParameter = (SetupCommunicationParameter) parameter;
}
if (parameter instanceof VarParameter) {
- switch (parameter.getType()) {
- case READ_VAR:
- case WRITE_VAR:{
- readWriteVarParameter = (VarParameter) parameter;
- break;
- }
+ ParameterType paramType = parameter.getType();
+ if (paramType == ParameterType.READ_VAR || paramType == ParameterType.WRITE_VAR) {
+ readWriteVarParameter = (VarParameter) parameter;
}
}
i += getParameterLength(parameter);
@@ -280,16 +275,15 @@ public class S7Protocol extends MessageToMessageCodec<IsoTPMessage, S7Message> {
return null;
}
switch (parameterType) {
- case CPU_SERVICES: {
+ case CPU_SERVICES:
// Just read in the rest of the header as content of this parameter.
// Will have to do a lot more investigation on how this parameter is
// constructed.
byte[] cpuServices = new byte[restLength - 1];
in.readBytes(cpuServices);
return null;
- }
case READ_VAR:
- case WRITE_VAR: {
+ case WRITE_VAR:
List<VarParameterItem> items = new LinkedList<>();
byte numItems = in.readByte();
if (!isResponse) {
@@ -302,44 +296,37 @@ public class S7Protocol extends MessageToMessageCodec<IsoTPMessage, S7Message> {
return null;
}
VariableAddressingMode variableAddressingMode = VariableAddressingMode.valueOf(in.readByte());
- switch (variableAddressingMode) {
- case S7ANY: {
- TransportSize transportSize = TransportSize.valueOf(in.readByte());
- short length = in.readShort();
- short dbNumber = in.readShort();
- MemoryArea memoryArea = MemoryArea.valueOf(in.readByte());
- short byteAddress = (short) (in.readShort() << 5);
- byte tmp = in.readByte();
- // Only the least 3 bits are the bit address, the
- byte bitAddress = (byte) (tmp & 0x07);
- // Bits 4-8 belong to the byte address
- byteAddress = (short) (byteAddress | (tmp >> 3));
- S7AnyVarParameterItem item = new S7AnyVarParameterItem(
+ if (variableAddressingMode == VariableAddressingMode.S7ANY) {
+ TransportSize transportSize = TransportSize.valueOf(in.readByte());
+ short length = in.readShort();
+ short dbNumber = in.readShort();
+ MemoryArea memoryArea = MemoryArea.valueOf(in.readByte());
+ short byteAddress = (short) (in.readShort() << 5);
+ byte tmp = in.readByte();
+ // Only the least 3 bits are the bit address, the
+ byte bitAddress = (byte) (tmp & 0x07);
+ // Bits 4-8 belong to the byte address
+ byteAddress = (short) (byteAddress | (tmp >> 3));
+ S7AnyVarParameterItem item = new S7AnyVarParameterItem(
specificationType, memoryArea, transportSize,
length, dbNumber, byteAddress, bitAddress);
- items.add(item);
- break;
- }
- default: {
- logger.error("Error parsing item type");
- return null;
- }
+ items.add(item);
+ } else {
+ logger.error("Error parsing item type");
+ return null;
}
}
}
return new VarParameter(parameterType, items);
- }
- case SETUP_COMMUNICATION: {
+ case SETUP_COMMUNICATION:
// Reserved (is always constant 0x00)
in.readByte();
short callingMaxAmq = in.readShort();
short calledMaxAmq = in.readShort();
short pduLength = in.readShort();
return new SetupCommunicationParameter(callingMaxAmq, calledMaxAmq, pduLength);
- }
- default: {
- System.out.println("Unimplemented parameter type: " + parameterType.name());
- }
+ default:
+ logger.error("Unimplemented parameter type: " + parameterType.name());
}
return null;
}
@@ -370,32 +357,34 @@ public class S7Protocol extends MessageToMessageCodec<IsoTPMessage, S7Message> {
}
private short getParameterLength(S7Parameter parameter) {
- if (parameter != null) {
- switch (parameter.getType()) {
- case READ_VAR:
- case WRITE_VAR: {
- VarParameter varParameter = (VarParameter) parameter;
- short length = 2;
- for (VarParameterItem varParameterItem : varParameter.getItems()) {
- switch (varParameterItem.getAddressingMode()) {
- case S7ANY: {
- length += 12;
- break;
- }
- default: {
- logger.error("Not implemented");
- break;
- }
- }
- }
- return length;
- }
- case SETUP_COMMUNICATION: {
- return 8;
- }
+ if (parameter == null) {
+ return 0;
+ }
+
+ switch (parameter.getType()) {
+ case READ_VAR:
+ case WRITE_VAR:
+ return getReadWriteVarParameterLength((VarParameter) parameter);
+ case SETUP_COMMUNICATION:
+ return 8;
+ default:
+ logger.error("Not implemented");
+ return 0;
+ }
+ }
+
+ private short getReadWriteVarParameterLength(VarParameter parameter) {
+ short length = 2;
+ for (VarParameterItem varParameterItem : parameter.getItems()) {
+ VariableAddressingMode addressMode = varParameterItem.getAddressingMode();
+
+ if (addressMode == VariableAddressingMode.S7ANY) {
+ length += 12;
+ } else {
+ logger.error("Not implemented");
}
}
- return 0;
+ return length;
}
private short getPayloadLength(VarPayloadItem payloadItem) {
--
To stop receiving notification emails like this one, please contact
['"commits@plc4x.apache.org" <co...@plc4x.apache.org>'].