]> git.basschouten.com Git - openhab-addons.git/blob
bccd7f405a9b824ee5bd786e815eaa063062557f
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2020 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
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
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.io.transport.modbus.exception;
14
15 import org.eclipse.jdt.annotation.NonNullByDefault;
16
17 /**
18  * Exception for explicit exception responses from Modbus slave
19  *
20  * @author Sami Salonen - Initial contribution
21  * @author Nagy Attila Gabor - added getter for error type
22  *
23  */
24 @NonNullByDefault
25 public abstract class ModbusSlaveErrorResponseException extends ModbusTransportException {
26
27     /**
28      * The function code received in the query is not an allowable action for the slave. This may be because the
29      * function code is only applicable to newer devices, and was not implemented in the unit selected. It could also
30      * indicate that the slave is in the wrong state to process a request of this type, for example because it is
31      * unconfigured and is being asked to return register values. If a Poll Program Complete command was issued, this
32      * code indicates that no program function preceded it.
33      */
34     public static final int ILLEGAL_FUNCTION = 1;
35
36     /**
37      * The data address received in the query is not an allowable address for the slave. More specifically, the
38      * combination of reference number and transfer length is invalid. For a controller with 100 registers, a request
39      * with offset 96 and length 4 would succeed, a request with offset 96 and length 5 will generate exception 02.
40      */
41     public static final int ILLEGAL_DATA_ACCESS = 2;
42
43     /**
44      * A value contained in the query data field is not an allowable value for the slave. This indicates a fault in the
45      * structure of remainder of a complex request, such as that the implied length is incorrect. It specifically does
46      * NOT mean that a data item submitted for storage in a register has a value outside the expectation of the
47      * application program, since the Modbus protocol is unaware of the significance of any particular value of any
48      * particular register.
49      */
50     public static final int ILLEGAL_DATA_VALUE = 3;
51
52     /**
53      * An unrecoverable error occurred while the slave was attempting to perform the requested action.
54      */
55     public static final int SLAVE_DEVICE_FAILURE = 4;
56
57     /**
58      * Specialized use in conjunction with programming commands.
59      * The slave has accepted the request and is processing it, but a long duration of time will be required to do so.
60      * This response is returned to prevent a timeout error from occurring in the master. The master can next issue a
61      * Poll Program Complete message to determine if processing is completed.
62      */
63     public static final int ACKNOWLEDGE = 5;
64
65     /**
66      * Specialized use in conjunction with programming commands.
67      * The slave is engaged in processing a long-duration program command. The master should retransmit the message
68      * later when the slave is free.
69      */
70     public static final int SLAVE_DEVICE_BUSY = 6;
71
72     /**
73      * The slave cannot perform the program function received in the query. This code is returned for an unsuccessful
74      * programming request using function code 13 or 14 decimal. The master should request diagnostic or error
75      * information from the slave.
76      */
77     public static final int NEGATIVE_ACKNOWLEDGE = 7;
78
79     /**
80      * Specialized use in conjunction with function codes 20 and 21 and reference type 6, to indicate that the extended
81      * file area failed to pass a consistency check.
82      * The slave attempted to read extended memory or record file, but detected a parity error in memory. The master can
83      * retry the request, but service may be required on the slave device.
84      */
85     public static final int MEMORY_PARITY_ERROR = 8;
86
87     /**
88      * Specialized use in conjunction with gateways, indicates that the gateway was unable to allocate an internal
89      * communication path from the input port to the output port for processing the request. Usually means the gateway
90      * is misconfigured or overloaded.
91      */
92     public static final int GATEWAY_PATH_UNVAVAILABLE = 10;
93
94     /**
95      * Specialized use in conjunction with gateways, indicates that no response was obtained from the target device.
96      * Usually means that the device is not present on the network.
97      */
98     public static final int GATEWAY_TARGET_DEVICE_FAILED_TO_RESPOND = 11;
99
100     private static final long serialVersionUID = -1435199498550990487L;
101
102     /**
103      * @return the Modbus exception code that happened
104      */
105     public abstract int getExceptionCode();
106 }