From 1e1364e51a66614469b91e396d33a54bdf8f6e98 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期一, 17 十月 2022 14:33:25 +0800
Subject: [PATCH] 修复开始点播功能接口调用返回参数与定义的不符 #635

---
 src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java |   75 +++++++++++++++++++++++++++++++++++++
 1 files changed, 75 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java
index 44e1337..bf2a0ee 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/SipUtils.java
@@ -1,12 +1,20 @@
 package com.genersoft.iot.vmp.gb28181.utils;
 
+import com.genersoft.iot.vmp.utils.GitUtil;
 import gov.nist.javax.sip.address.AddressImpl;
 import gov.nist.javax.sip.address.SipUri;
 import gov.nist.javax.sip.header.Subject;
 
+import javax.sip.PeerUnavailableException;
+import javax.sip.SipFactory;
 import javax.sip.header.FromHeader;
 import javax.sip.header.Header;
+import javax.sip.header.UserAgentHeader;
 import javax.sip.message.Request;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
 
 /**
  * @author panlinlin
@@ -38,4 +46,71 @@
         return uri.getUser();
     }
 
+    public static  String getNewViaTag() {
+        return "z9hG4bK" + System.currentTimeMillis();
+    }
+
+    public static UserAgentHeader createUserAgentHeader(SipFactory sipFactory, GitUtil gitUtil) throws PeerUnavailableException, ParseException {
+        List<String> agentParam = new ArrayList<>();
+        agentParam.add("WVP-Pro v");
+        if (gitUtil != null && gitUtil.getCommitTime() != null) {
+            agentParam.add(gitUtil.getBuildVersion() + ".");
+            agentParam.add(gitUtil.getCommitTime());
+        }
+        return sipFactory.createHeaderFactory().createUserAgentHeader(agentParam);
+    }
+
+    public static String getNewFromTag(){
+        return UUID.randomUUID().toString().replace("-", "");
+
+//        return getNewTag();
+    }
+
+    public static String getNewTag(){
+        return String.valueOf(System.currentTimeMillis());
+    }
+
+
+    /**
+     * 浜戝彴鎸囦护鐮佽绠�
+     *
+     * @param leftRight  闀滃ご宸︾Щ鍙崇Щ 0:鍋滄 1:宸︾Щ 2:鍙崇Щ
+     * @param upDown     闀滃ご涓婄Щ涓嬬Щ 0:鍋滄 1:涓婄Щ 2:涓嬬Щ
+     * @param inOut      闀滃ご鏀惧ぇ缂╁皬 0:鍋滄 1:缂╁皬 2:鏀惧ぇ
+     * @param moveSpeed  闀滃ご绉诲姩閫熷害 榛樿 0XFF (0-255)
+     * @param zoomSpeed  闀滃ご缂╂斁閫熷害 榛樿 0X1 (0-255)
+     */
+    public static String cmdString(int leftRight, int upDown, int inOut, int moveSpeed, int zoomSpeed) {
+        int cmdCode = 0;
+        if (leftRight == 2) {
+            cmdCode|=0x01;		// 鍙崇Щ
+        } else if(leftRight == 1) {
+            cmdCode|=0x02;		// 宸︾Щ
+        }
+        if (upDown == 2) {
+            cmdCode|=0x04;		// 涓嬬Щ
+        } else if(upDown == 1) {
+            cmdCode|=0x08;		// 涓婄Щ
+        }
+        if (inOut == 2) {
+            cmdCode |= 0x10;	// 鏀惧ぇ
+        } else if(inOut == 1) {
+            cmdCode |= 0x20;	// 缂╁皬
+        }
+        StringBuilder builder = new StringBuilder("A50F01");
+        String strTmp;
+        strTmp = String.format("%02X", cmdCode);
+        builder.append(strTmp, 0, 2);
+        strTmp = String.format("%02X", moveSpeed);
+        builder.append(strTmp, 0, 2);
+        builder.append(strTmp, 0, 2);
+        strTmp = String.format("%X", zoomSpeed);
+        builder.append(strTmp, 0, 1).append("0");
+        //璁$畻鏍¢獙鐮�
+        int checkCode = (0XA5 + 0X0F + 0X01 + cmdCode + moveSpeed + moveSpeed + (zoomSpeed /*<< 4*/ & 0XF0)) % 0X100;
+        strTmp = String.format("%02X", checkCode);
+        builder.append(strTmp, 0, 2);
+        return builder.toString();
+    }
+
 }

--
Gitblit v1.8.0