From 95889f358c7e735eb0712047002ef79a4b982a06 Mon Sep 17 00:00:00 2001
From: lawrencehj <1934378145@qq.com>
Date: 星期一, 15 三月 2021 15:22:04 +0800
Subject: [PATCH] 完善向上级注册/注销过程

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java |  102 ++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 84 insertions(+), 18 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
index b038ec2..d5e380b 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
@@ -1,17 +1,17 @@
 package com.genersoft.iot.vmp.gb28181.transmit.cmd.impl;
 
-import com.genersoft.iot.vmp.conf.SipConfig;
-import com.genersoft.iot.vmp.gb28181.bean.Device;
+//import com.genersoft.iot.vmp.conf.SipConfig;
+//import com.genersoft.iot.vmp.gb28181.bean.Device;
 import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
 import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
 import com.genersoft.iot.vmp.gb28181.bean.ParentPlatformCatch;
 import com.genersoft.iot.vmp.gb28181.event.SipSubscribe;
-import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
+//import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;
 import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform;
 import com.genersoft.iot.vmp.gb28181.transmit.cmd.SIPRequestHeaderPlarformProvider;
-import com.genersoft.iot.vmp.gb28181.transmit.cmd.SIPRequestHeaderProvider;
+//import com.genersoft.iot.vmp.gb28181.transmit.cmd.SIPRequestHeaderProvider;
 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
-import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
+//import com.genersoft.iot.vmp.storager.IVideoManagerStorager;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
@@ -22,28 +22,26 @@
 import javax.sip.header.CallIdHeader;
 import javax.sip.header.WWWAuthenticateHeader;
 import javax.sip.message.Request;
-import java.nio.channels.Channel;
 import java.text.ParseException;
-import java.util.List;
 import java.util.UUID;
 
 @Component
 public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
 
-    @Autowired
-    private SipConfig sipConfig;
+    // @Autowired
+    // private SipConfig sipConfig;
 
-    @Autowired
-    private SIPRequestHeaderProvider headerProvider;
+    // @Autowired
+    // private SIPRequestHeaderProvider headerProvider;
 
     @Autowired
     private SIPRequestHeaderPlarformProvider headerProviderPlarformProvider;
 
-    @Autowired
-    private VideoStreamSessionManager streamSession;
+    // @Autowired
+    // private VideoStreamSessionManager streamSession;
 
-    @Autowired
-    private IVideoManagerStorager storager;
+    // @Autowired
+    // private IVideoManagerStorager storager;
 
     @Autowired
     private IRedisCatchStorage redisCatchStorage;
@@ -120,18 +118,18 @@
         try {
 
             StringBuffer keepaliveXml = new StringBuffer(200);
-            keepaliveXml.append("<?xml version=\"1.0\" encoding=\"GB2312\" ?>\r\n");
+            keepaliveXml.append("<?xml version=\"1.0\"?>\r\n");
             keepaliveXml.append("<Notify>\r\n");
             keepaliveXml.append("<CmdType>Keepalive</CmdType>\r\n");
             keepaliveXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n");
-            keepaliveXml.append("<DeviceID>" + parentPlatform.getServerGBId() + "</DeviceID>\r\n");
+            keepaliveXml.append("<DeviceID>" + parentPlatform.getDeviceGBId() + "</DeviceID>\r\n");
             keepaliveXml.append("<Status>OK</Status>\r\n");
             keepaliveXml.append("</Notify>\r\n");
 
             Request request = headerProviderPlarformProvider.createKeetpaliveMessageRequest(
                     parentPlatform,
                     keepaliveXml.toString(),
-                    UUID.randomUUID().toString().replace("-", ""),
+                    "z9hG4bK-" + UUID.randomUUID().toString().replace("-", ""),
                     UUID.randomUUID().toString().replace("-", ""),
                     null);
             transmitRequest(parentPlatform, request);
@@ -219,4 +217,72 @@
         }
         return true;
     }
+
+    /**
+     * 鍚戜笂绾у洖澶岲eviceInfo鏌ヨ淇℃伅
+     * @param parentPlatform 骞冲彴淇℃伅
+     * @param sn
+     * @param fromTag
+     * @return
+     */
+    @Override
+    public boolean deviceInfoResponse(ParentPlatform parentPlatform, String sn, String fromTag) {
+        if (parentPlatform == null) {
+            return false;
+        }
+        try {
+            StringBuffer deviceInfoXml = new StringBuffer(600);
+            deviceInfoXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
+            deviceInfoXml.append("<Response>\r\n");
+            deviceInfoXml.append("<CmdType>DeviceInfo</CmdType>\r\n");
+            deviceInfoXml.append("<SN>" +sn + "</SN>\r\n");
+            deviceInfoXml.append("<DeviceID>" + parentPlatform.getDeviceGBId() + "</DeviceID>\r\n");
+            deviceInfoXml.append("<DeviceName>GB28181 Video Platform</DeviceName>\r\n");
+            deviceInfoXml.append("<Manufacturer>Manufacturer</Manufacturer>\r\n");
+            deviceInfoXml.append("<Model>wvp-28181</Model>\r\n");
+            deviceInfoXml.append("<Firmware>2.0.202103</Firmware>\r\n");
+            deviceInfoXml.append("<Result>OK</Result>\r\n");
+            deviceInfoXml.append("</Response>\r\n");
+            Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, deviceInfoXml.toString(), fromTag);
+            transmitRequest(parentPlatform, request);
+
+        } catch (SipException | ParseException | InvalidArgumentException e) {
+            e.printStackTrace();
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 鍚戜笂绾у洖澶岲eviceStatus鏌ヨ淇℃伅
+     * @param parentPlatform 骞冲彴淇℃伅
+     * @param sn
+     * @param fromTag
+     * @return
+     */
+    @Override
+    public boolean deviceStatusResponse(ParentPlatform parentPlatform, String sn, String fromTag) {
+        if (parentPlatform == null) {
+            return false;
+        }
+        try {
+            StringBuffer deviceStatusXml = new StringBuffer(600);
+            deviceStatusXml.append("<?xml version=\"1.0\" encoding=\"GB2312\"?>\r\n");
+            deviceStatusXml.append("<Response>\r\n");
+            deviceStatusXml.append("<CmdType>DeviceStatus</CmdType>\r\n");
+            deviceStatusXml.append("<SN>" +sn + "</SN>\r\n");
+            deviceStatusXml.append("<DeviceID>" + parentPlatform.getDeviceGBId() + "</DeviceID>\r\n");
+            deviceStatusXml.append("<Result>OK</Result>\r\n");
+            deviceStatusXml.append("<Online>ONLINE</Online>\r\n");
+            deviceStatusXml.append("<Status>OK</Status>\r\n");
+            deviceStatusXml.append("</Response>\r\n");
+            Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, deviceStatusXml.toString(), fromTag);
+            transmitRequest(parentPlatform, request);
+
+        } catch (SipException | ParseException | InvalidArgumentException e) {
+            e.printStackTrace();
+            return false;
+        }
+        return true;
+    }
 }

--
Gitblit v1.8.0