shjung 2 жил өмнө
parent
commit
4e076d8681

+ 1 - 1
src/main/java/com/its/dsrc/entity/TbRseCtlr.java

@@ -235,7 +235,7 @@ public class TbRseCtlr {
 		}
 
 		log.warn("[{}] [{},{}], controlDeviceId: {}, commandType: {}", this.RSE_CTLR_NMBR, devcType, cntlType, controlDeviceId.toString(), commandType.toString());
-		boolean res = ControlDeviceService.getInstance().requestSubscriptionDeviceCommand(true, this, getChannel(), controlDeviceId.getValue(), commandType.getValue(), ctrlHs);
+		boolean res = ControlDeviceService.getInstance().requestResetCommand(true, this, getChannel());
 		if (res) {
 			log.info("RSE REQ CONTROL SEND OK: [{}] [{},{}]", this.RSE_CTLR_NMBR, devcType, cntlType);
 			return 0;

+ 25 - 40
src/main/java/com/its/dsrc/xnettcp/center/handler/CenterTcpServerInboundHandler.java

@@ -69,51 +69,36 @@ public class CenterTcpServerInboundHandler extends ChannelInboundHandlerAdapter
 
             // 제어요청 패킷을 만든다
             int result = obj.reset(devcType, devcType, ctrlHs);
-            if (result == 1) {
-                log.error("CenterTcpServerInboundHandler: Center Request RSE Not Connect: [{}]", obj);
-                ByteBuffer sendBuffer = CenterResProtocol.getResponse(opCode, (byte)(0xFE));
-                ctrlHs.setRspsType("8");  // 통신불량
-                ChannelFuture f = ctx.channel().writeAndFlush(sendBuffer);
-                f.awaitUninterruptibly();
-                if (f.isDone() || f.isSuccess()) {
-                    log.info("CenterTcpServerInboundHandler: Response OK. Center Not Connect RSE: [{}]", ctlrNmbr);
-                } else {
-                    log.error("CenterTcpServerInboundHandler: Response Failed. Center Not Connect RSE: [{}]", ctlrNmbr);
-                }
-                mapper.updateRseCtrlHs(ctrlHs);
-                return;
-            }
-            if (result == 2) {
-                log.error("RSE REQ RESET CONTROL Value Error: [{}] [{},{}]", ctlrNmbr, devcType, cntlType);
-                ByteBuffer sendBuffer = CenterResProtocol.getResponse(opCode, (byte)(0xFD));
-                ctrlHs.setRspsType("7");  // 통신불량
-                ChannelFuture f = ctx.channel().writeAndFlush(sendBuffer);
-                f.awaitUninterruptibly();
-                if (f.isDone() || f.isSuccess()) {
-                    log.info("CenterTcpServerInboundHandler: Response OK. Center Not Connect RSE: [{}]", ctlrNmbr);
-                } else {
-                    log.error("CenterTcpServerInboundHandler: Response Failed. Center Not Connect RSE: [{}]", ctlrNmbr);
-                }
-                mapper.updateRseCtrlHs(ctrlHs);
-                return;
+            byte resCode = (byte)0xF0;
+            switch (result) {
+                case 0: break;
+                case 1:
+                    log.error("CenterTcpServerInboundHandler: Center Request RSE Not Connect: [{}]", obj);
+                    ctrlHs.setRspsType("8");  // 통신불량
+                    resCode = (byte)0xFE;
+                    break;
+                case 2:
+                    log.error("RSE REQ RESET CONTROL Value Error: [{}] [{},{}]", ctlrNmbr, devcType, cntlType);
+                    ctrlHs.setRspsType("7");  // 제어값 이상
+                    resCode = (byte)0xFD;
+                    break;
+                case 3:
+                    log.error("RSE REQ CONTROL SEND Error: [{}] [{},{}]", ctlrNmbr, devcType, cntlType);
+                    ctrlHs.setRspsType("6");  // 데이터전송실패
+                    resCode = (byte)0xFC;
+                    break;
             }
 
-            if (result == 0) {
-                log.info("RSE REQ CONTROL SEND OK: [{}] [{},{}]", ctlrNmbr, devcType, cntlType);
-                ctrlHs.setRspsType("0");  // 성공, 리셋응답없을수 있으므로 먼저 성공으로 입력한다.
+            ByteBuffer sendBuffer = CenterResProtocol.getResponse(opCode, resCode);
+            ChannelFuture f = ctx.channel().writeAndFlush(sendBuffer);
+            f.awaitUninterruptibly();
+            if (f.isDone() || f.isSuccess()) {
+                log.info("CenterTcpServerInboundHandler: To Center Response OK. [{}]", ctlrNmbr);
             } else {
-                log.error("RSE REQ CONTROL SEND Error: [{}] [{},{}]", ctlrNmbr, devcType, cntlType);
-                ByteBuffer sendBuffer = CenterResProtocol.getResponse(opCode, (byte)(0xFC));
-                ctrlHs.setRspsType("6");  // 데이터전송실패
-                ChannelFuture f = ctx.channel().writeAndFlush(sendBuffer);
-                f.awaitUninterruptibly();
-                if (f.isDone() || f.isSuccess()) {
-                    log.info("CenterTcpServerInboundHandler: Response OK. Center Not Connect RSE: [{}]", ctlrNmbr);
-                } else {
-                    log.error("CenterTcpServerInboundHandler: Response Failed. Center Not Connect RSE: [{}]", ctlrNmbr);
-                }
+                log.error("CenterTcpServerInboundHandler: To Center Response Failed. [{}]", ctlrNmbr);
             }
             mapper.updateRseCtrlHs(ctrlHs);
+
         }
 
     }

+ 1 - 1
src/main/java/com/its/dsrc/xnettcp/dsrc/DsrcTcpCommServerInitializer.java

@@ -31,7 +31,7 @@ public class DsrcTcpCommServerInitializer extends ChannelInitializer<Channel> {
         DsrcAsn1ServerIdleStateConnectionHandler connectionHandler = new DsrcAsn1ServerIdleStateConnectionHandler(this.config);
 
         ChannelPipeline pipeline = channel.pipeline();
-        //pipeline.addLast(new LoggingHandler(LogLevel.WARN));
+        //pipeline.addLast(new LoggingHandler(LogLevel.INFO));
         pipeline.addLast("dsrcAsn1ServerConnectionIdleStateHandler", idleStateHandler);
         pipeline.addLast("dsrcAsn1ServerConnectionHandler", connectionHandler);
         pipeline.addLast("dsrcAsn1ServerDecoder", new DsrcTcpServerDecoder(this.config));  // Decoding handler

+ 1 - 1
src/main/java/com/its/dsrc/xnettcp/dsrc/codec/DsrcTcpServerDecoder.java

@@ -79,7 +79,7 @@ public class DsrcTcpServerDecoder extends ByteToMessageDecoder {
                     pktLength = datexDataPacket.decode(new ByteArrayInputStream(inBytes, 0, inBytes.length));
                 }
                 catch(IOException e) {
-                    //log.warn("TcpServerDecoder.decode: RECV: packet length. {}, inBytes: {}, pktLength: {}", ipAddress, inBytes, pktLength);
+                    log.warn("DsrcTcpServerDecoder.decode: RECV: decode error. {}, {}, inBytes: {}, pktLength: {}", ipAddress, e.getMessage(), inBytes, inBytes.length);
                     break;
                 }
 

+ 100 - 0
src/main/java/com/its/dsrc/xnettcp/dsrc/process/service/ControlDeviceService.java

@@ -330,6 +330,106 @@ public class ControlDeviceService {
         return true;
     }
 
+    /**
+     * 제어기 리셋
+     * @param fromOperator
+     * @param obj
+     * @param channel
+     * @return
+     */
+    public boolean requestResetCommand(boolean fromOperator, TbRseCtlr obj, Channel channel)
+    {
+        int controlDeviceId = 0;    // Controller
+        int commandType = 1;        // Reset
+
+        log.info("ControlDeviceService.requestResetCommand: {}, {}, operator: {}, controlDeviceId: {}, commandType: {}", obj.getID(), obj.getRSE_ID(), fromOperator, controlDeviceId, commandType);
+        try {
+            if (obj.getChannel() == null  || obj.getNetState() != NET.LOGINED || !obj.getChannel().isActive()) {
+                log.error("ControlDeviceService.requestResetCommand: {}, {}, operator: {}, is not active", obj.getID(), obj.getRSE_ID(), fromOperator);
+                return false;
+            }
+
+            int[] messageId = {1, 0, 15784, 4, 0, 7};
+            byte[] controlId = { (byte) eControlDevice.Control_Command.getValue() };
+            int subscribeSerialNbr = obj.getSeq().nextValue();
+
+            DITSRoadStationCommandInfo commandInfo = new DITSRoadStationCommandInfo();
+            DITSRoadStationCommandInfo.DeviceCommandList commandList = new DITSRoadStationCommandInfo.DeviceCommandList();
+            DeviceCommand deviceCommand = new DeviceCommand();
+            deviceCommand.setDeviceID(new BerInteger(controlDeviceId));
+            deviceCommand.setCommand(new BerInteger(commandType));
+            commandList.getDeviceCommand().add(deviceCommand);
+            commandInfo.setDeviceCommandList(commandList);
+
+            // 3. ControlDevice set
+            ReverseByteArrayOutputStream deviceBuff = new ReverseByteArrayOutputStream(2048);
+            commandInfo.encode(deviceBuff);
+
+            ControlDevice controlDevice = new ControlDevice();
+            controlDevice.setVpbdControlID(new BerOctetString(controlId));
+            controlDevice.setVpbdControlDeviceData(new BerOctetString(deviceBuff.getArray()));
+
+            // 4. ControlDeviceList set
+            ReverseByteArrayOutputStream deviceListBuff = new ReverseByteArrayOutputStream(2048);
+            ControlDeviceList controlDeviceList = new ControlDeviceList();
+            controlDeviceList.getControlDevice().add(controlDevice);
+            controlDeviceList.encode(deviceListBuff);
+
+            // 5. EndApplicationMessage set
+            EndApplicationMessage endApplicationMessage =  new EndApplicationMessage();
+            endApplicationMessage.setEndApplicationMessageId(new BerObjectIdentifier(messageId));
+            endApplicationMessage.setEndApplicationMessageMsg(new BerAny(deviceListBuff.getArray()));
+
+            // 6. Publication
+            PublicationType publicationType = new PublicationType();
+            publicationType.setDatexPublishData(endApplicationMessage);
+
+            PublicationData publicationData = new PublicationData();
+            publicationData.setDatexPublishSubscribeSerialNbr(new BerInteger(subscribeSerialNbr));
+            publicationData.setDatexPublishSerialNbr(new BerInteger(subscribeSerialNbr));
+            publicationData.setDatexPublishLatePublicationFlag(new BerBoolean(true));
+            publicationData.setDatexPublishType(publicationType);
+
+            PublishFormat.DatexPublishData publishData = new PublishFormat.DatexPublishData();
+            publishData.getPublicationData().add(publicationData);
+
+            PublishFormat publishFormat = new PublishFormat();
+            publishFormat.setDatexPublishData(publishData);
+
+            Publication publication = new Publication();
+            publication.setDatexPublishFormat(publishFormat);
+            publication.setDatexPublishGuaranteedBool(new BerBoolean(true));
+
+            PDUs pdus = new PDUs();
+            pdus.setPublication(publication);
+            byte[] auth = {(byte) eAuthInfo.AI_Publication.getValue() };
+            C2CAuthenticatedMessage c2c = new C2CAuthenticatedMessage();
+            c2c.setDatexDataPacketNumber(new BerInteger(subscribeSerialNbr));
+            c2c.setDatexDataPacketPriorityNumber(new BerInteger(1));
+            c2c.setDatexAuthenticationInfoText(new BerOctetString(auth));
+            c2c.setOptions(DsrcAsn1Utils.swapHeaderOptions(obj.getHeaderOptions()));
+            c2c.setPdu(pdus);
+
+            ChannelFuture f = channel.writeAndFlush(c2c);
+            f.awaitUninterruptibly();
+            if (f.isDone() || f.isSuccess()) {
+                log.info("ControlDeviceService.requestResetCommand: {}, {}, operator: {}, send ok", obj.getID(), obj.getRSE_ID(), fromOperator);
+                if (fromOperator) {
+                    // TODO: 리셋 명령은 응답을 안 받으므로 타임아웃 체크를 하지 않는다.
+                    //obj.addUserCommands(cntl.getCtrlSeq(), cntl);
+                }
+            } else {
+                log.error("ControlDeviceService.requestResetCommand: {}, {}, operator: {}, send failed.", obj.getID(), obj.getRSE_ID(), fromOperator);
+                return false;
+            }
+        }
+        catch(Exception e) {
+            log.error("ControlDeviceService.requestResetCommand: {}, {}, operator: {}, Exception: {}", obj.getID(), obj.getRSE_ID(), fromOperator, e.toString());
+            return false;
+        }
+        return true;
+    }
+
     public ControlDevice makeControlDevice_BasicBaseInfo(TbRseCtlr obj, eControlRequest type) {
         // ControlDevice.vpbd-ControlID  : 기초정보(0x02)
         //

+ 71 - 24
src/test/java/com/its/app/DsrcCommServerApplicationTests.java

@@ -234,8 +234,9 @@ public class DsrcCommServerApplicationTests {
 
     @Test
     void packetEncoding() {
-        TbRseCtlr obj = AppRepository.getInstance().getCtlrMap().get("1001");
+        //TbRseCtlr obj = AppRepository.getInstance().getCtlrMap().get("1001");
         List<String> lists = new ArrayList<>();
+        // SERVER 2 RSE
 //        lists.add("3068800101815f305d800102810100820100a31ba719800207e681010c82010983010a84011f85010fa6048202013aa435a133800c474a41544d53534552564552810d50544d4355303030303030303182008300a40306015185013c86011e870101880202408202e773");
 //        lists.add("3081ce8001018181c43081c1800106810101820100a300a481b3a581b0800100a181aaa081a7800100810100a24ba149a047800100a120800207e681010c82010983010a84011f85010fa603800100a706800109810100a2208002083381010c82010983010a84011f85010fa603800100a70680010981010083010384010a8501ffa649800628fb28080008a13f303d303b80200000000000000000000000000000000000000000000000000000000000000000a10680010081010082010083010084040000000085030000008202694d");
 //        lists.add("30819480010181818a308187800106810102820100a300a47aa578800101a173a071800100810100a24ba249a04780011ea120800207e681010c82010983010a84011f85010fa603800100a706800109810100a2208002083381010c82010983010a84011f85010fa603800100a70680010981010083010384010a8501ffa613800628fb28040007a1093007300580010381008202842f");
@@ -270,29 +271,32 @@ public class DsrcCommServerApplicationTests {
 //        lists.add("3037800101812e302c80010181010182010aa300a41fa01d800d50544d43553030303030303032810c505441544d535345525645528202ea54");
 //        lists.add("3023800101811a301880010881010082010aa300a40ba809800102a10480025101820205e0");
 //        lists.add("3025800101811c301a80010881010182010aa300a40da80b800102a10682041012f5708202f990");
-        lists.add("3081a780010181819d30819a80010181010882010aa300a4818ca58189800101a18183a08180800100810100a229a227a02580013ca120800207e681010c82010983010e840121850108a603820100a70680010981010083010384010a8501ffa644800628fb28050001a13a3038303680016f81056655335f62a2150c01410c01350c016d0c014f0c016b0c014d0c0170830108a410a10e80010081075fa80468cf411682008202375d");
-//        lists.add("3025800101811c301a80010881010282010aa300a40da80b800102a10682041012f5708202caa3");
-//        lists.add("3025800101811c301a80010881010382010aa300a40da80b800102a10682041012f57082021bb3");
-//        lists.add("30218001018118301680010881010482010aa300a409a807800102a10283008202d7e1");
-//        lists.add("307d8001018174307280010181010582010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203461396336343931626130336133356666643135613064633735356237363832a10a8002010581040110100282010183010184042022120985031433088202a22a");
-//        lists.add("307d8001018174307280010181010682010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203237313130643834623235383062633535376231656432663036666263323065a10a80020105810401101002820101830101840420221209850314330882023b86");
-//        lists.add("307d8001018174307280010181010782010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203963636634346535376362336566373835363333306639663234663861633365a10a80020105810401101002820101830101840420221209850314330882022aa5");
-//        lists.add("307d8001018174307280010181010882010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203835303535376531623661393933306366376566336639643962356135353836a10a800201058104011010028201068301018404202212098503143308820282db");
-//        lists.add("307d8001018174307280010181010982010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80206535343832626230656330653239656263333561626264646433616662303566a10a80020105810401101002820103830101840420221209850314330882021b5a");
-//        lists.add("307d8001018174307280010181010a82010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203964303462373136636266383634663661623366366639353130653831653135a10a8002010581040110100282010383010184042022120985031433088202ab27");
-//        lists.add("307d8001018174307280010181010b82010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203564363233666334663261383838363530346437323537393933613564306230a10a80020105810401101002820101830101840420221209850314330982025341");
-//        lists.add("307d8001018174307280010181010c82010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80206265623031363838383532326361356265393337313834393461643563326338a10a80020105810401101002820101830101840420221209850314330982024957");
-//        lists.add("307d8001018174307280010181010d82010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203664333861636435616438633262373137646436616261616363636537666130a10a8002010581040110100282010183010184042022120985031433098202bbb2");
-//        lists.add("307d8001018174307280010181010e82010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203930653435373432303865643062613739366630363233626431333035636231a10a80020105810401101002820101830101840420221209850314331182029d41");
-//        lists.add("307d8001018174307280010181010f82010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203432666331333237383736666461376435343763666564316230616637306534a10a8002010581040110100282010183010184042022120985031433118202ffa9");
-//        lists.add("307d8001018174307280010181011082010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203037333037366463316663316138356135656439303763613533303161646339a10a8002010581040110100282010183010184042022120985031433128202ce89");
-//        lists.add("307d8001018174307280010181011182010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80206135623563333135643961616438643761613336313733623464373230376433a10a80020105810401101002820101830101840420221209850314331382029fc8");
-//        lists.add("307d8001018174307280010181011282010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203661393531616434346336366533616130636363316166656135643138623561a10a80020105810401101002820101830101840420221209850314331682025e6d");
-//        lists.add("307d8001018174307280010181011382010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80206664383162626533336337633830653136373331633461346263626665333863a10a80020105810401101002820101830101840420221209850314332282023249");
-//        lists.add("307d8001018174307280010181011482010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80206266303633306166326262363438323961376661363533396237626535353235a10a800201058104011010028201018301018404202212098503143325820270d7");
-//        lists.add("307d8001018174307280010181011582010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203562343731356562333264303432636336643262343534656564363666623666a10a8002010581040110100282010183010184042022120985031433268202f8ac");
-//        lists.add("307d8001018174307280010181011682010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80206462393331613834326164646265653336303439363939323566343332316266a10a80020105810401101002820101830101840420221209850314333882023396");
-//        lists.add("30798001018170306e80010181011782010aa300a461a65f8001ffa15aa05830568001648101648201ffa34ba149800628fb28040007a13f303d303b80010381363034800d474a4d4355303030303030303281040a0a010ca31d301ba00a8002010581040110100281010082040185c80a83010184016682021eaa");
+
+//        lists.add("3081a780010181819d30819a80010181010882010aa300a4818ca58189800101a18183a08180800100810100a229a227a02580013ca120800207e681010c82010983010e840121850108a603820100a70680010981010083010384010a8501ffa644800628fb28050001a13a3038303680016f81056655335f62a2150c01410c01350c016d0c014f0c016b0c014d0c0170830108a410a10e80010081075fa80468cf411682008202375d");
+
+        // RSE 2 SERVER
+        lists.add("3025800101811c301a80010881010282010aa300a40da80b800102a10682041012f5708202caa3");
+        lists.add("3025800101811c301a80010881010382010aa300a40da80b800102a10682041012f57082021bb3");
+        lists.add("30218001018118301680010881010482010aa300a409a807800102a10283008202d7e1");
+        lists.add("307d8001018174307280010181010582010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203461396336343931626130336133356666643135613064633735356237363832a10a8002010581040110100282010183010184042022120985031433088202a22a");
+        lists.add("307d8001018174307280010181010682010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203237313130643834623235383062633535376231656432663036666263323065a10a80020105810401101002820101830101840420221209850314330882023b86");
+        lists.add("307d8001018174307280010181010782010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203963636634346535376362336566373835363333306639663234663861633365a10a80020105810401101002820101830101840420221209850314330882022aa5");
+        lists.add("307d8001018174307280010181010882010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203835303535376531623661393933306366376566336639643962356135353836a10a800201058104011010028201068301018404202212098503143308820282db");
+        lists.add("307d8001018174307280010181010982010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80206535343832626230656330653239656263333561626264646433616662303566a10a80020105810401101002820103830101840420221209850314330882021b5a");
+        lists.add("307d8001018174307280010181010a82010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203964303462373136636266383634663661623366366639353130653831653135a10a8002010581040110100282010383010184042022120985031433088202ab27");
+        lists.add("307d8001018174307280010181010b82010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203564363233666334663261383838363530346437323537393933613564306230a10a80020105810401101002820101830101840420221209850314330982025341");
+        lists.add("307d8001018174307280010181010c82010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80206265623031363838383532326361356265393337313834393461643563326338a10a80020105810401101002820101830101840420221209850314330982024957");
+        lists.add("307d8001018174307280010181010d82010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203664333861636435616438633262373137646436616261616363636537666130a10a8002010581040110100282010183010184042022120985031433098202bbb2");
+        lists.add("307d8001018174307280010181010e82010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203930653435373432303865643062613739366630363233626431333035636231a10a80020105810401101002820101830101840420221209850314331182029d41");
+        lists.add("307d8001018174307280010181010f82010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203432666331333237383736666461376435343763666564316230616637306534a10a8002010581040110100282010183010184042022120985031433118202ffa9");
+        lists.add("307d8001018174307280010181011082010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203037333037366463316663316138356135656439303763613533303161646339a10a8002010581040110100282010183010184042022120985031433128202ce89");
+        lists.add("307d8001018174307280010181011182010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80206135623563333135643961616438643761613336313733623464373230376433a10a80020105810401101002820101830101840420221209850314331382029fc8");
+        lists.add("307d8001018174307280010181011282010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203661393531616434346336366533616130636363316166656135643138623561a10a80020105810401101002820101830101840420221209850314331682025e6d");
+        lists.add("307d8001018174307280010181011382010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80206664383162626533336337633830653136373331633461346263626665333863a10a80020105810401101002820101830101840420221209850314332282023249");
+        lists.add("307d8001018174307280010181011482010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80206266303633306166326262363438323961376661363533396237626535353235a10a800201058104011010028201018301018404202212098503143325820270d7");
+        lists.add("307d8001018174307280010181011582010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203562343731356562333264303432636336643262343534656564363666623666a10a8002010581040110100282010183010184042022120985031433268202f8ac");
+        lists.add("307d8001018174307280010181011682010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80206462393331613834326164646265653336303439363939323566343332316266a10a80020105810401101002820101830101840420221209850314333882023396");
+        lists.add("30798001018170306e80010181011782010aa300a461a65f8001ffa15aa05830568001648101648201ffa34ba149800628fb28040007a13f303d303b80010381363034800d474a4d4355303030303030303281040a0a010ca31d301ba00a8002010581040110100281010082040185c80a83010184016682021eaa");
 
         for (String data : lists) {
             byte[] inBytes = ByteUtils.hexToByteArray(data);
@@ -371,4 +375,47 @@ public class DsrcCommServerApplicationTests {
             }
         }
     }
+
+    @Test
+    void dsrc2Server() {
+        List<String> lists = new ArrayList<>();
+        // RSE 2 SERVER
+        lists.add("3025800101811c301a80010881010282010aa300a40da80b800102a10682041012f5708202caa3");
+        //lists.add("3025800101811c301a80010881010382010aa300a40da80b800102a10682041012f57082021bb3");
+        lists.add("3067800101815E305C800102810102820100A31AA718800207E681010C82011783011084012B85011CA603820145A435A133800C474A41544D53534552564552810D50544D4355303030303030313482008300A40306015185013C86011E8701018802024082029987");
+        lists.add("30218001018118301680010881010482010aa300a409a807800102a10283008202d7e1");
+        lists.add("307d8001018174307280010181010582010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203461396336343931626130336133356666643135613064633735356237363832a10a8002010581040110100282010183010184042022120985031433088202a22a");
+        lists.add("307d8001018174307280010181010682010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203237313130643834623235383062633535376231656432663036666263323065a10a80020105810401101002820101830101840420221209850314330882023b86");
+        lists.add("307d8001018174307280010181010782010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203963636634346535376362336566373835363333306639663234663861633365a10a80020105810401101002820101830101840420221209850314330882022aa5");
+        lists.add("307d8001018174307280010181010882010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203835303535376531623661393933306366376566336639643962356135353836a10a800201058104011010028201068301018404202212098503143308820282db");
+        lists.add("307d8001018174307280010181010982010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80206535343832626230656330653239656263333561626264646433616662303566a10a80020105810401101002820103830101840420221209850314330882021b5a");
+        lists.add("307d8001018174307280010181010a82010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203964303462373136636266383634663661623366366639353130653831653135a10a8002010581040110100282010383010184042022120985031433088202ab27");
+        lists.add("307d8001018174307280010181010b82010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203564363233666334663261383838363530346437323537393933613564306230a10a80020105810401101002820101830101840420221209850314330982025341");
+        lists.add("307d8001018174307280010181010c82010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80206265623031363838383532326361356265393337313834393461643563326338a10a80020105810401101002820101830101840420221209850314330982024957");
+        lists.add("307d8001018174307280010181010d82010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203664333861636435616438633262373137646436616261616363636537666130a10a8002010581040110100282010183010184042022120985031433098202bbb2");
+        lists.add("307d8001018174307280010181010e82010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203930653435373432303865643062613739366630363233626431333035636231a10a80020105810401101002820101830101840420221209850314331182029d41");
+        lists.add("307d8001018174307280010181010f82010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203432666331333237383736666461376435343763666564316230616637306534a10a8002010581040110100282010183010184042022120985031433118202ffa9");
+        lists.add("307d8001018174307280010181011082010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203037333037366463316663316138356135656439303763613533303161646339a10a8002010581040110100282010183010184042022120985031433128202ce89");
+        lists.add("307d8001018174307280010181011182010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80206135623563333135643961616438643761613336313733623464373230376433a10a80020105810401101002820101830101840420221209850314331382029fc8");
+        lists.add("307d8001018174307280010181011282010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203661393531616434346336366533616130636363316166656135643138623561a10a80020105810401101002820101830101840420221209850314331682025e6d");
+        lists.add("307d8001018174307280010181011382010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80206664383162626533336337633830653136373331633461346263626665333863a10a80020105810401101002820101830101840420221209850314332282023249");
+        lists.add("307d8001018174307280010181011482010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80206266303633306166326262363438323961376661363533396237626535353235a10a800201058104011010028201018301018404202212098503143325820270d7");
+        lists.add("307d8001018174307280010181011582010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80203562343731356562333264303432636336643262343534656564363666623666a10a8002010581040110100282010183010184042022120985031433268202f8ac");
+        lists.add("307d8001018174307280010181011682010aa300a465a6638001ffa15ea05c305a8001648101648201ffa34fa14d800628fb28080008a1433041303f80206462393331613834326164646265653336303439363939323566343332316266a10a80020105810401101002820101830101840420221209850314333882023396");
+        lists.add("30798001018170306e80010181011782010aa300a461a65f8001ffa15aa05830568001648101648201ffa34ba149800628fb28040007a13f303d303b80010381363034800d474a4d4355303030303030303281040a0a010ca31d301ba00a8002010581040110100281010082040185c80a83010184016682021eaa");
+
+        for (String data : lists) {
+            byte[] inBytes = ByteUtils.hexToByteArray(data);
+            DatexDataPacket datexDataPacket = new DatexDataPacket();
+            try {
+                datexDataPacket.decode(new ByteArrayInputStream(inBytes, 0, inBytes.length));
+                BerOctetString berOctetString = datexDataPacket.getDatexData();
+                C2CAuthenticatedMessage c2c = new C2CAuthenticatedMessage();
+                c2c.decode(new ByteArrayInputStream(berOctetString.value, 0, berOctetString.value.length));
+                log.info("{}", c2c);
+            } catch (Exception e) {
+                log.error("Exception: {}, {}", e, data);
+            }
+        }
+    }
 }