You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2018/06/28 12:54:52 UTC
[incubator-plc4x] branch feature/mobbus-support-with-lib updated:
modbus: fix netty read mockup
This is an automated email from the ASF dual-hosted git repository.
sruehl pushed a commit to branch feature/mobbus-support-with-lib
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git
The following commit(s) were added to refs/heads/feature/mobbus-support-with-lib by this push:
new 5241986 modbus: fix netty read mockup
5241986 is described below
commit 5241986d87a481b5c093f4d4eac35fe5586c698b
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Thu Jun 28 14:54:49 2018 +0200
modbus: fix netty read mockup
---
.../plc4x/java/modbus/netty/Plc4XModbusProtocol.java | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/netty/Plc4XModbusProtocol.java b/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/netty/Plc4XModbusProtocol.java
index 5f77d92..9582e5c 100644
--- a/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/netty/Plc4XModbusProtocol.java
+++ b/plc4j/protocols/modbus/src/main/java/org/apache/plc4x/java/modbus/netty/Plc4XModbusProtocol.java
@@ -22,6 +22,7 @@ import com.digitalpetri.modbus.ModbusPdu;
import com.digitalpetri.modbus.codec.ModbusTcpPayload;
import com.digitalpetri.modbus.requests.*;
import com.digitalpetri.modbus.responses.*;
+import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageCodec;
import org.apache.plc4x.java.api.exceptions.PlcException;
@@ -163,22 +164,30 @@ public class Plc4XModbusProtocol extends MessageToMessageCodec<ModbusTcpPayload,
} else if (modbusPdu instanceof ReadCoilsResponse) {
// TODO: finish implementation
ReadCoilsResponse readCoilsResponse = (ReadCoilsResponse) modbusPdu;
- byte[] bytes = readCoilsResponse.getCoilStatus().array();
+ ByteBuf byteBuf = readCoilsResponse.getCoilStatus();
+ byte[] bytes = new byte[byteBuf.readableBytes()];
+ byteBuf.readBytes(bytes);
plcRequestContainer.getResponseFuture().complete(new PlcReadResponse((PlcReadRequest) request, new ReadResponseItem((ReadRequestItem<? extends Object>) requestItem, ResponseCode.OK, (Object) bytes)));
} else if (modbusPdu instanceof ReadDiscreteInputsResponse) {
// TODO: finish implementation
ReadDiscreteInputsResponse readDiscreteInputsResponse = (ReadDiscreteInputsResponse) modbusPdu;
- byte[] bytes = readDiscreteInputsResponse.getInputStatus().array();
+ ByteBuf byteBuf = readDiscreteInputsResponse.getInputStatus();
+ byte[] bytes = new byte[byteBuf.readableBytes()];
+ byteBuf.readBytes(bytes);
plcRequestContainer.getResponseFuture().complete(new PlcReadResponse((PlcReadRequest) request, new ReadResponseItem((ReadRequestItem<? extends Object>) requestItem, ResponseCode.OK, (Object) bytes)));
} else if (modbusPdu instanceof ReadHoldingRegistersResponse) {
// TODO: finish implementation
ReadHoldingRegistersResponse readHoldingRegistersResponse = (ReadHoldingRegistersResponse) modbusPdu;
- byte[] bytes = readHoldingRegistersResponse.getRegisters().array();
+ ByteBuf byteBuf = readHoldingRegistersResponse.getRegisters();
+ byte[] bytes = new byte[byteBuf.readableBytes()];
+ byteBuf.readBytes(bytes);
plcRequestContainer.getResponseFuture().complete(new PlcReadResponse((PlcReadRequest) request, new ReadResponseItem((ReadRequestItem<? extends Object>) requestItem, ResponseCode.OK, (Object) bytes)));
} else if (modbusPdu instanceof ReadInputRegistersResponse) {
// TODO: finish implementation
ReadInputRegistersResponse readInputRegistersResponse = (ReadInputRegistersResponse) modbusPdu;
- byte[] bytes = readInputRegistersResponse.getRegisters().array();
+ ByteBuf byteBuf = readInputRegistersResponse.getRegisters();
+ byte[] bytes = new byte[byteBuf.readableBytes()];
+ byteBuf.readBytes(bytes);
plcRequestContainer.getResponseFuture().complete(new PlcReadResponse((PlcReadRequest) request, new ReadResponseItem((ReadRequestItem<? extends Object>) requestItem, ResponseCode.OK, (Object) bytes)));
} else {
throw new PlcProtocolException("Unsupported messageTyp type" + modbusPdu.getClass());