From affeda91d276b336ab56f21b71ad7f40606eb67a Mon Sep 17 00:00:00 2001 From: huangfeng Date: Tue, 19 Nov 2024 13:50:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A061850=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E7=AB=AFFileDirectoryRequest=E7=9A=84=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iec61850bean/ServerAssociation.java | 53 ++++++------------- 1 file changed, 17 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/beanit/iec61850bean/ServerAssociation.java b/src/main/java/com/beanit/iec61850bean/ServerAssociation.java index 1ddbb95..9c3d23b 100644 --- a/src/main/java/com/beanit/iec61850bean/ServerAssociation.java +++ b/src/main/java/com/beanit/iec61850bean/ServerAssociation.java @@ -21,48 +21,13 @@ import com.beanit.asn1bean.ber.types.BerNull; import com.beanit.asn1bean.ber.types.string.BerVisibleString; import com.beanit.iec61850bean.internal.BerBoolean; import com.beanit.iec61850bean.internal.NamedThreadFactory; -import com.beanit.iec61850bean.internal.mms.asn1.AccessResult; -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.*; 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.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.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.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.ByteBufferInputStream; import com.beanit.josistack.DecodingException; @@ -353,6 +318,12 @@ final class ServerAssociation { handleDeleteDataSetRequest(confirmedServiceRequest.getDeleteNamedVariableList()); confirmedServiceResponse.setDeleteNamedVariableList(response); + } else if (confirmedServiceRequest.getFileDirectory() != null) { + logger.debug("Got a FileDirectory request"); + FileDirectoryResponse response = + handleFileDirectoryRequest(confirmedServiceRequest.getFileDirectory()); + + confirmedServiceResponse.setFileDirectory(response); } else { throw new ServiceError( ServiceError.FAILED_DUE_TO_COMMUNICATIONS_CONSTRAINT, @@ -618,6 +589,16 @@ final class ServerAssociation { 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 * kinds of references. Examples: 1. DGEN1 2. DGEN1$CF 3. DGEN1$CF$GnBlk