Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* Copyright 2012-20 Fraunhofer ISE
*
* This file is part of jDLMS.
* For more information visit http://www.openmuc.org
*
* jDLMS is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* jDLMS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with jDLMS. If not, see .
*
*/
package org.openmuc.jdlms;
import java.io.IOException;
import java.text.MessageFormat;
/**
* Signals, that a exception has occurred.
*
* @see FatalJDlmsException
* @see NonFatalJDlmsException
*/
public abstract class JDlmsException extends IOException {
private static final long serialVersionUID = -1656925204526742049L;
private final ExceptionId exceptionId;
private final Fault assumedFault;
public JDlmsException(ExceptionId exceptionId, Fault assumedFault, String message) {
this(exceptionId, assumedFault, message, null);
}
public JDlmsException(ExceptionId exceptionId, Fault assumedFault, String message, Throwable cause) {
super(message, cause);
this.exceptionId = exceptionId;
this.assumedFault = assumedFault;
}
@Override
public String getMessage() {
return MessageFormat.format("{0}: {2} Assumed fault: {1}.", this.exceptionId.name(),
this.assumedFault.name().toLowerCase(), super.getMessage());
}
/**
* Access the exception ID.
*
* @return the exception ID
*/
public ExceptionId getExceptionId() {
return exceptionId;
}
/**
* Gets the assumed fault. If the fault is user, the user has given a wrong connection parameter.
*
* @return the assumed fault.
*/
public Fault getAssumedFault() {
return this.assumedFault;
}
/**
* The fault of the exception cause.
*/
public enum Fault {
USER,
SYSTEM
}
/**
* An exception ID.
*/
public enum ExceptionId {
// ---------------------GENERAL-ERRORS---------------------
/**
* Failed to establish the connection.
*/
CONNECTION_ESTABLISH_ERROR,
ILLEGAL_RESPONSE,
/**
* Error in authentication.
*/
AUTHENTICATION_ERROR,
/**
* Authentication required.
*/
AUTHENTICATION_REQUIRED,
/**
* E.g. tried to connect with LN referencing, but server only supports SN.
*/
WRONG_REFERENCING_METHOD,
/**
* Unknown error.
*/
UNKNOWN,
/**
* Signals, that the response timed out.
*/
RESPONSE_TIMEOUT,
/**
* Connection has already been closed.
*/
CONNECTION_ALREADY_CLOSED,
/**
* The Connection has never been opened, but still tried to access.
*/
CONNECTION_CLOSED,
/**
* Graceful disconnect error.
*/
CONNECTION_DISCONNECT_ERROR,
/**
* The returned association result is not know by the stack.
*/
UNKNOWN_ASSOCIATION_RESULT,
/**
* GET.request PDU is too large.
*/
GET_REQUEST_TOO_LARGE,
// ---------------------jRXTX------------------------------
/**
* The specified COM port does not exist.
*/
JRXTX_NO_SUCH_PORT,
/**
* The specified COM port is locked by an other process.
*/
JRXTX_PORT_IN_USE,
/**
* The specified COM port is not a serial port.
*/
JRXTX_PORT_NOT_SERIAL,
/**
* jRXRX is not fully implemented for your system.
*/
JRXTX_INCOMPATIBLE_TO_OS,
// -------------------------------------------WRPPER-------------------------------------------
/**
* General WrapperHeader error.
*/
WRAPPER_HEADER_INVALID,
/**
* Denotes, that the header version is incompatible to the stack.
*/
WRAPPER_HEADER_INVALID_VERSION,
/**
* Denotes, that the received source and destination address are not as expected.
*/
WRAPPER_HEADER_INVALID_SRC_DEST_ADDR,
/**
* Denotes, that the specified length in the header, does not match the wrapper header.
*/
WRAPPER_HEADER_INVALID_PAYLOAD_LENGTH,
// -------------------------------------------HDLC-FRAME---------------------------------------
/**
* Denotes, that the start/end of the HDLC frame wasn't 0x7E.
*/
HDLC_MSG_INVALID_FLAG,
/**
* Error, while connecting to HDLC meter.
*/
HDLC_CONNECTION_ESTABLISH_ERROR,
/**
* Error, while closing HDLC connection.
*/
HDLC_CONNECTION_CLOSE_ERROR,
/**
* Error with the HDLC send frame size or queue.
*/
HDLC_SEND_FRAME_SIZE_EXCEEDED,
/**
* Received a unknown send/destination-keypair from remote meter
*/
HDLC_KEY_PAIR_ERR,
// -------------------------------------------61056-21--------------------------------------------
/**
* Unknown ACK message.
*/
IEC_21_UNKNOWN_ACK_MSG,
/**
* Baud rate change Delay was wrong.
*/
IEC_21_WRONG_BAUD_RATE_CHANGE_DELAY,
/**
* Couldn't connect with IEC 61056-21
*/
IEC_21_CONNECTION_ESTABLISH_ERROR,
;
}
}