|
|
@ -21,48 +21,13 @@ import com.beanit.asn1bean.ber.types.BerNull;
|
|
|
|
import com.beanit.asn1bean.ber.types.string.BerVisibleString;
|
|
|
|
import com.beanit.asn1bean.ber.types.string.BerVisibleString;
|
|
|
|
import com.beanit.iec61850bean.internal.BerBoolean;
|
|
|
|
import com.beanit.iec61850bean.internal.BerBoolean;
|
|
|
|
import com.beanit.iec61850bean.internal.NamedThreadFactory;
|
|
|
|
import com.beanit.iec61850bean.internal.NamedThreadFactory;
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.AccessResult;
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.*;
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.ConfirmedErrorPDU;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.ConfirmedRequestPDU;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.ConfirmedResponsePDU;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.ConfirmedServiceRequest;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.ConfirmedServiceResponse;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.Data;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.DataAccessError;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.DefineNamedVariableListRequest;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.DefineNamedVariableListResponse;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.DeleteNamedVariableListRequest;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.DeleteNamedVariableListResponse;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.GetNameListRequest;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.GetNameListResponse;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.GetNameListResponse.ListOfIdentifier;
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.GetNameListResponse.ListOfIdentifier;
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.GetNamedVariableListAttributesResponse;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.GetVariableAccessAttributesRequest;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.GetVariableAccessAttributesResponse;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.Identifier;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.InitiateRequestPDU;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.InitiateResponsePDU;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.Integer16;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.Integer32;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.Integer8;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.MMSpdu;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.ObjectName;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.ObjectName.DomainSpecific;
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.ObjectName.DomainSpecific;
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.ParameterSupportOptions;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.ReadRequest;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.ReadResponse;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.ReadResponse.ListOfAccessResult;
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.ReadResponse.ListOfAccessResult;
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.ServiceError.ErrorClass;
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.ServiceError.ErrorClass;
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.ServiceSupportOptions;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.TypeDescription;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.TypeDescription.Structure;
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.TypeDescription.Structure;
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.TypeDescription.Structure.Components;
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.TypeDescription.Structure.Components;
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.TypeSpecification;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.Unsigned32;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.VariableAccessSpecification;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.VariableDefs;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.WriteRequest;
|
|
|
|
|
|
|
|
import com.beanit.iec61850bean.internal.mms.asn1.WriteResponse;
|
|
|
|
|
|
|
|
import com.beanit.josistack.AcseAssociation;
|
|
|
|
import com.beanit.josistack.AcseAssociation;
|
|
|
|
import com.beanit.josistack.ByteBufferInputStream;
|
|
|
|
import com.beanit.josistack.ByteBufferInputStream;
|
|
|
|
import com.beanit.josistack.DecodingException;
|
|
|
|
import com.beanit.josistack.DecodingException;
|
|
|
@ -353,6 +318,12 @@ final class ServerAssociation {
|
|
|
|
handleDeleteDataSetRequest(confirmedServiceRequest.getDeleteNamedVariableList());
|
|
|
|
handleDeleteDataSetRequest(confirmedServiceRequest.getDeleteNamedVariableList());
|
|
|
|
|
|
|
|
|
|
|
|
confirmedServiceResponse.setDeleteNamedVariableList(response);
|
|
|
|
confirmedServiceResponse.setDeleteNamedVariableList(response);
|
|
|
|
|
|
|
|
} else if (confirmedServiceRequest.getFileDirectory() != null) {
|
|
|
|
|
|
|
|
logger.debug("Got a FileDirectory request");
|
|
|
|
|
|
|
|
FileDirectoryResponse response =
|
|
|
|
|
|
|
|
handleFileDirectoryRequest(confirmedServiceRequest.getFileDirectory());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
confirmedServiceResponse.setFileDirectory(response);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
throw new ServiceError(
|
|
|
|
throw new ServiceError(
|
|
|
|
ServiceError.FAILED_DUE_TO_COMMUNICATIONS_CONSTRAINT,
|
|
|
|
ServiceError.FAILED_DUE_TO_COMMUNICATIONS_CONSTRAINT,
|
|
|
@ -618,6 +589,16 @@ final class ServerAssociation {
|
|
|
|
return getNameListResponse;
|
|
|
|
return getNameListResponse;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private FileDirectoryResponse handleFileDirectoryRequest(FileDirectoryRequest request) {
|
|
|
|
|
|
|
|
FileName fileSpecification = request.getFileSpecification();
|
|
|
|
|
|
|
|
String path = fileSpecification.getBerGraphicString().get(0).toString();
|
|
|
|
|
|
|
|
FileDirectoryResponse response = new FileDirectoryResponse();
|
|
|
|
|
|
|
|
FileDirectoryResponse.ListOfDirectoryEntry list = new FileDirectoryResponse.ListOfDirectoryEntry();
|
|
|
|
|
|
|
|
list.getDirectoryEntry();
|
|
|
|
|
|
|
|
response.setListOfDirectoryEntry(list);
|
|
|
|
|
|
|
|
return response;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* GetVariableAccessAttributes (GetDataDefinition/GetDataDirectory) can be called with different
|
|
|
|
* GetVariableAccessAttributes (GetDataDefinition/GetDataDirectory) can be called with different
|
|
|
|
* kinds of references. Examples: 1. DGEN1 2. DGEN1$CF 3. DGEN1$CF$GnBlk
|
|
|
|
* kinds of references. Examples: 1. DGEN1 2. DGEN1$CF 3. DGEN1$CF$GnBlk
|
|
|
|