|
@@ -1,9 +1,12 @@
|
|
package com.genersoft.iot.vmp.gb28181.utils;
|
|
package com.genersoft.iot.vmp.gb28181.utils;
|
|
|
|
|
|
import com.genersoft.iot.vmp.utils.GitUtil;
|
|
import com.genersoft.iot.vmp.utils.GitUtil;
|
|
|
|
+import com.genersoft.iot.vmp.vmanager.gb28181.ptz.PtzController;
|
|
import gov.nist.javax.sip.address.AddressImpl;
|
|
import gov.nist.javax.sip.address.AddressImpl;
|
|
import gov.nist.javax.sip.address.SipUri;
|
|
import gov.nist.javax.sip.address.SipUri;
|
|
import gov.nist.javax.sip.header.Subject;
|
|
import gov.nist.javax.sip.header.Subject;
|
|
|
|
+import org.slf4j.Logger;
|
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
|
|
|
import javax.sip.PeerUnavailableException;
|
|
import javax.sip.PeerUnavailableException;
|
|
import javax.sip.SipFactory;
|
|
import javax.sip.SipFactory;
|
|
@@ -16,6 +19,7 @@ import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.UUID;
|
|
import java.util.UUID;
|
|
|
|
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* @author panlinlin
|
|
* @author panlinlin
|
|
* @version 1.0.0
|
|
* @version 1.0.0
|
|
@@ -23,7 +27,7 @@ import java.util.UUID;
|
|
* @createTime 2021年09月27日 15:12:00
|
|
* @createTime 2021年09月27日 15:12:00
|
|
*/
|
|
*/
|
|
public class SipUtils {
|
|
public class SipUtils {
|
|
-
|
|
|
|
|
|
+ private final static Logger logger = LoggerFactory.getLogger(PtzController.class);
|
|
public static String getUserIdFromFromHeader(Request request) {
|
|
public static String getUserIdFromFromHeader(Request request) {
|
|
FromHeader fromHeader = (FromHeader)request.getHeader(FromHeader.NAME);
|
|
FromHeader fromHeader = (FromHeader)request.getHeader(FromHeader.NAME);
|
|
return getUserIdFromFromHeader(fromHeader);
|
|
return getUserIdFromFromHeader(fromHeader);
|
|
@@ -102,14 +106,14 @@ public class SipUtils {
|
|
}
|
|
}
|
|
|
|
|
|
StringBuilder builder = new StringBuilder("A50F01");
|
|
StringBuilder builder = new StringBuilder("A50F01");
|
|
- //A50F01 A5 0F 01
|
|
|
|
|
|
+ //A5 0F 01 01 ff ff
|
|
String strTmp;
|
|
String strTmp;
|
|
strTmp = String.format("%02X", cmdCode);
|
|
strTmp = String.format("%02X", cmdCode);
|
|
builder.append(strTmp, 0, 2);
|
|
builder.append(strTmp, 0, 2);
|
|
- strTmp = String.format("%02X", moveSpeed);
|
|
|
|
|
|
+ strTmp = String.format("%02X", moveSpeed);// 云台 +- => 15
|
|
builder.append(strTmp, 0, 2);
|
|
builder.append(strTmp, 0, 2);
|
|
builder.append(strTmp, 0, 2);
|
|
builder.append(strTmp, 0, 2);
|
|
- strTmp = String.format("%X", zoomSpeed);
|
|
|
|
|
|
+ strTmp = String.format("%X", zoomSpeed);// 镜头 abcd => 00 15
|
|
builder.append(strTmp, 0, 1).append("0");
|
|
builder.append(strTmp, 0, 1).append("0");
|
|
//计算校验码
|
|
//计算校验码
|
|
int checkCode = (0XA5 + 0X0F + 0X01 + cmdCode + moveSpeed + moveSpeed + (zoomSpeed /*<< 4*/ & 0XF0)) % 0X100;
|
|
int checkCode = (0XA5 + 0X0F + 0X01 + cmdCode + moveSpeed + moveSpeed + (zoomSpeed /*<< 4*/ & 0XF0)) % 0X100;
|
|
@@ -118,4 +122,43 @@ public class SipUtils {
|
|
return builder.toString();
|
|
return builder.toString();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ *
|
|
|
|
+ * @param direction 云台移动方向 1:上 2:下 3:左 4:右
|
|
|
|
+ * @param speed 移动速度
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public static String cmdPtzString(int direction,int speed){
|
|
|
|
+ int cmdCode = 0;
|
|
|
|
+ if (direction == 4) {
|
|
|
|
+ cmdCode|=0x01; // 右移 0 03
|
|
|
|
+ } else if(direction == 3) {
|
|
|
|
+ cmdCode|=0x02; // 左移 04
|
|
|
|
+ }else if(direction == 2) {
|
|
|
|
+ cmdCode|=0x04; // 下移 05
|
|
|
|
+ }else if(direction == 1) {
|
|
|
|
+ cmdCode|=0x08; // 上移 06
|
|
|
|
+ }
|
|
|
|
+ int moveSpeed =0 ;
|
|
|
|
+ moveSpeed |= 0x00;
|
|
|
|
+ int zoomSpeed =0 ;
|
|
|
|
+ moveSpeed |= speed;
|
|
|
|
+ StringBuilder builder = new StringBuilder("A50F01");
|
|
|
|
+ //A5 0F 01 01 ff ff
|
|
|
|
+ String strTmp;
|
|
|
|
+ strTmp = String.format("%02X", cmdCode);
|
|
|
|
+ builder.append(strTmp, 0, 2);
|
|
|
|
+ strTmp = String.format("%02X", moveSpeed);// 云台 +- => 15
|
|
|
|
+ builder.append(strTmp, 0, 2);
|
|
|
|
+ builder.append(strTmp, 0, 2);
|
|
|
|
+ strTmp = String.format("%X", zoomSpeed);// 镜头 abcd => 00 15
|
|
|
|
+ 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);
|
|
|
|
+
|
|
|
|
+ logger.info("cmd code --------{}",strTmp);
|
|
|
|
+ return builder.toString();
|
|
|
|
+ }
|
|
}
|
|
}
|