You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2020/08/25 12:01:55 UTC
[plc4x] 01/02: Merge branch 'develop' of
https://gitbox.apache.org/repos/asf/plc4x into feature/plc4c
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch feature/plc4c
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit a8e844501d79eb101aee6b1ad847c3949931557d
Merge: c7a058e 9033ff8
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Tue Aug 25 10:39:54 2020 +0200
Merge branch 'develop' of https://gitbox.apache.org/repos/asf/plc4x into feature/plc4c
Conflicts:
plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/field/S7Field.java
plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/protocol/S7ProtocolLogic.java
RELEASE_NOTES | 16 +++++++++++
.../plc4x/java/s7/readwrite/field/S7Field.java | 31 +++++++++++++++++++++
.../asciidoc/developers/infrastructure/vm.adoc | 6 ++--
.../asciidoc/developers/infrastructure/vpn.adoc | 4 +--
src/site/asciidoc/users/adopters.adoc | 10 ++++---
src/site/asciidoc/users/protocols/s7.adoc | 9 ++++++
.../images/users/companies/logo-pietrorimoldi.jpg | Bin 0 -> 584330 bytes
7 files changed, 67 insertions(+), 9 deletions(-)
diff --cc plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/field/S7Field.java
index 20c30b9,6cdd590..c0d15b2
--- a/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/field/S7Field.java
+++ b/plc4j/drivers/s7/src/main/java/org/apache/plc4x/java/s7/readwrite/field/S7Field.java
@@@ -182,17 -182,23 +182,43 @@@ public class S7Field implements PlcFiel
throw new PlcInvalidFieldException("Transfer size code '" + transferSizeCode +
"' doesn't match specified data type '" + dataType.name() + "'");
}
+ if ((dataType != TransportSize.BOOL) && bitOffset != 0) {
+ throw new PlcInvalidFieldException("A bit offset other than 0 is only supported for type BOOL");
+ }
+
+ return new S7Field(dataType, memoryArea, (short) 0, byteOffset, bitOffset, numElements);
+ } else if ((matcher = DATA_BLOCK_STRING_ADDRESS_PATTERN.matcher(fieldString)).matches()) {
+ TransportSize dataType = TransportSize.STRING;
+ int stringLength = Integer.parseInt(matcher.group(STRING_LENGTH));
- MemoryArea memoryArea = MemoryArea.DATA_BLOCKS;
++ MemoryArea memoryArea = getMemoryAreaForShortName(matcher.group(MEMORY_AREA));
+ Short transferSizeCode = getSizeCode(matcher.group(TRANSFER_SIZE_CODE));
- int blockNumber = checkDatablockNumber(Integer.parseInt(matcher.group(BLOCK_NUMBER)));
+ int byteOffset = checkByteOffset(Integer.parseInt(matcher.group(BYTE_OFFSET)));
+ byte bitOffset = 0;
+ if (matcher.group(BIT_OFFSET) != null) {
+ bitOffset = Byte.parseByte(matcher.group(BIT_OFFSET));
++ } else if (dataType == TransportSize.BOOL) {
++ throw new PlcInvalidFieldException("Expected bit offset for BOOL parameters.");
+ }
+ int numElements = 1;
++ if (matcher.group(NUM_ELEMENTS) != null) {
++ numElements = Integer.parseInt(matcher.group(NUM_ELEMENTS));
++ }
++
++ if ((transferSizeCode != null) && (dataType.getSizeCode() != transferSizeCode)) {
++ throw new PlcInvalidFieldException("Transfer size code '" + transferSizeCode +
++ "' doesn't match specified data type '" + dataType.name() + "'");
++ }
+
+ return new S7Field(dataType, memoryArea, (short) 0, byteOffset, bitOffset, numElements);
+ } else if ((matcher = DATA_BLOCK_STRING_ADDRESS_PATTERN.matcher(fieldString)).matches()) {
+ TransportSize dataType = TransportSize.STRING;
+ int stringLength = Integer.parseInt(matcher.group(STRING_LENGTH));
+ MemoryArea memoryArea = MemoryArea.DATA_BLOCKS;
+ Short transferSizeCode = getSizeCode(matcher.group(TRANSFER_SIZE_CODE));
+ int blockNumber = checkDatablockNumber(Integer.parseInt(matcher.group(BLOCK_NUMBER)));
+ int byteOffset = checkByteOffset(Integer.parseInt(matcher.group(BYTE_OFFSET)));
+ byte bitOffset = 0;
+ int numElements = 1;
if(matcher.group(NUM_ELEMENTS) != null) {
numElements = Integer.parseInt(matcher.group(NUM_ELEMENTS));
}