2 * Copyright (c) 2010-2020 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.io.transport.modbus;
15 import java.util.Objects;
16 import java.util.Optional;
18 import org.eclipse.jdt.annotation.NonNullByDefault;
21 * Encapsulates result of modbus read operations
23 * @author Sami Salonen - Initial contribution
26 public class AsyncModbusReadResult {
28 private final ModbusReadRequestBlueprint request;
30 private final Optional<BitArray> bits;
32 private final Optional<ModbusRegisterArray> registers;
34 public AsyncModbusReadResult(ModbusReadRequestBlueprint request, ModbusRegisterArray registers) {
35 Objects.requireNonNull(request, "Request must not be null!");
36 Objects.requireNonNull(registers, "Registers must not be null!");
37 this.request = request;
38 this.registers = Optional.of(registers);
39 this.bits = Optional.empty();
42 public AsyncModbusReadResult(ModbusReadRequestBlueprint request, BitArray bits) {
43 Objects.requireNonNull(request, "Request must not be null!");
44 Objects.requireNonNull(bits, "Bits must not be null!");
45 this.request = request;
46 this.registers = Optional.empty();
47 this.bits = Optional.of(bits);
51 * Get request matching this response
53 * @return request object
55 public ModbusReadRequestBlueprint getRequest() {
60 * Get "coil" or "discrete input" bit data in the case of no errors
64 public Optional<BitArray> getBits() {
69 * Get "input register" or "holding register" data in the case of no errors
71 * @return register data
73 public Optional<ModbusRegisterArray> getRegisters() {
78 public String toString() {
79 StringBuilder builder = new StringBuilder("AsyncModbusReadResult(");
80 builder.append("request = ");
81 builder.append(request);
82 bits.ifPresent(bits -> {
83 builder.append(", bits = ");
86 registers.ifPresent(registers -> {
87 builder.append(", registers = ");
88 builder.append(registers);
91 return builder.toString();