1078-补充终端音视频参数设置 + 查询终端音视频属性

This commit is contained in:
648540858
2024-05-27 23:29:59 +08:00
parent 8be6979911
commit c8ddee905f
34 changed files with 881 additions and 155 deletions

View File

@@ -1,8 +1,6 @@
package com.genersoft.iot.vmp.jt1078.proc.request;
import com.alibaba.fastjson2.JSON;
import com.genersoft.iot.vmp.jt1078.annotation.MsgId;
import com.genersoft.iot.vmp.jt1078.bean.JTDevice;
import com.genersoft.iot.vmp.jt1078.bean.JTDeviceConfig;
import com.genersoft.iot.vmp.jt1078.bean.common.ConfigAttribute;
import com.genersoft.iot.vmp.jt1078.bean.config.*;
@@ -13,9 +11,7 @@ import com.genersoft.iot.vmp.jt1078.service.Ijt1078Service;
import com.genersoft.iot.vmp.jt1078.session.Session;
import com.genersoft.iot.vmp.jt1078.session.SessionManager;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.util.StringUtil;
import org.springframework.context.ApplicationEvent;
import java.lang.reflect.Field;
@@ -81,25 +77,25 @@ public class J0104 extends Re {
methodForShort.invoke(deviceConfig, buf.readUnsignedByte());
continue;
case "IllegalDrivingPeriods":
IllegalDrivingPeriods illegalDrivingPeriods = new IllegalDrivingPeriods();
JTIllegalDrivingPeriods illegalDrivingPeriods = new JTIllegalDrivingPeriods();
int startHour = buf.readUnsignedByte();
int startMinute = buf.readUnsignedByte();
int stopHour = buf.readUnsignedByte();
int stopMinute = buf.readUnsignedByte();
illegalDrivingPeriods.setStartTime(startHour + ":" + startMinute);
illegalDrivingPeriods.setEndTime(stopHour + ":" + stopMinute);
Method methodForIllegalDrivingPeriods = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), IllegalDrivingPeriods.class);
Method methodForIllegalDrivingPeriods = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), JTIllegalDrivingPeriods.class);
methodForIllegalDrivingPeriods.invoke(deviceConfig, illegalDrivingPeriods);
continue;
case "CollisionAlarmParams":
CollisionAlarmParams collisionAlarmParams = new CollisionAlarmParams();
JTCollisionAlarmParams collisionAlarmParams = new JTCollisionAlarmParams();
collisionAlarmParams.setCollisionAlarmTime(buf.readUnsignedByte());
collisionAlarmParams.setCollisionAcceleration(buf.readUnsignedByte());
Method methodForCollisionAlarmParams = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), CollisionAlarmParams.class);
Method methodForCollisionAlarmParams = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), JTCollisionAlarmParams.class);
methodForCollisionAlarmParams.invoke(deviceConfig, collisionAlarmParams);
continue;
case "CameraTimer":
CameraTimer cameraTimer = new CameraTimer();
JTCameraTimer cameraTimer = new JTCameraTimer();
long cameraTimerContent = buf.readUnsignedInt();
cameraTimer.setSwitchForChannel1((cameraTimerContent & 1) == 1);
cameraTimer.setSwitchForChannel2((cameraTimerContent >>> 1 & 1) == 1);
@@ -113,48 +109,53 @@ public class J0104 extends Re {
cameraTimer.setStorageFlagsForChannel5((cameraTimerContent >>> 11 & 1) == 1);
cameraTimer.setTimeUnit((cameraTimerContent >>> 15 & 1) == 1);
cameraTimer.setTimeInterval((int)cameraTimerContent >>> 16);
Method methodForCameraTimer = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), CameraTimer.class);
Method methodForCameraTimer = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), JTCameraTimer.class);
methodForCameraTimer.invoke(deviceConfig, cameraTimer);
continue;
case "GnssPositioningMode":
GnssPositioningMode gnssPositioningMode = new GnssPositioningMode();
JTGnssPositioningMode gnssPositioningMode = new JTGnssPositioningMode();
short gnssPositioningModeContent = buf.readUnsignedByte();
gnssPositioningMode.setGps((gnssPositioningModeContent& 1) == 1);
gnssPositioningMode.setBeidou((gnssPositioningModeContent >>> 1 & 1) == 1);
gnssPositioningMode.setGlonass((gnssPositioningModeContent >>> 2 & 1) == 1);
gnssPositioningMode.setGaLiLeo((gnssPositioningModeContent >>> 3 & 1) == 1);
Method methodForGnssPositioningMode = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), GnssPositioningMode.class);
Method methodForGnssPositioningMode = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), JTGnssPositioningMode.class);
methodForGnssPositioningMode.invoke(deviceConfig, gnssPositioningMode);
continue;
case "VideoParam":
VideoParam videoParam = VideoParam.decode(buf);
Method methodForVideoParam = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), VideoParam.class);
JTVideoParam videoParam = JTVideoParam.decode(buf);
Method methodForVideoParam = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), JTVideoParam.class);
methodForVideoParam.invoke(deviceConfig, videoParam);
continue;
case "ChannelListParam":
ChannelListParam channelListParam = ChannelListParam.decode(buf);
Method methodForChannelListParam = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), ChannelListParam.class);
JTChannelListParam channelListParam = JTChannelListParam.decode(buf);
Method methodForChannelListParam = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), JTChannelListParam.class);
methodForChannelListParam.invoke(deviceConfig, channelListParam);
case "ChannelParam":
ChannelParam channelParam = ChannelParam.decode(buf);
Method methodForChannelParam = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), ChannelParam.class);
JTChannelParam channelParam = JTChannelParam.decode(buf);
Method methodForChannelParam = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), JTChannelParam.class);
methodForChannelParam.invoke(deviceConfig, channelParam);
continue;
case "alarmRecordingParam":
AlarmRecordingParam alarmRecordingParam = AlarmRecordingParam.decode(buf);
Method methodForAlarmRecordingParam = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), AlarmRecordingParam.class);
JTAlarmRecordingParam alarmRecordingParam = JTAlarmRecordingParam.decode(buf);
Method methodForAlarmRecordingParam = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), JTAlarmRecordingParam.class);
methodForAlarmRecordingParam.invoke(deviceConfig, alarmRecordingParam);
continue;
case "VideoAlarmBit":
VideoAlarmBit videoAlarmBit = VideoAlarmBit.decode(buf);
Method methodForVideoAlarmBit = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), VideoAlarmBit.class);
JTVideoAlarmBit videoAlarmBit = JTVideoAlarmBit.decode(buf);
Method methodForVideoAlarmBit = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), JTVideoAlarmBit.class);
methodForVideoAlarmBit.invoke(deviceConfig, videoAlarmBit);
continue;
case "AnalyzeAlarmParam":
AnalyzeAlarmParam analyzeAlarmParam = AnalyzeAlarmParam.decode(buf);
Method methodForAnalyzeAlarmParam = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), AnalyzeAlarmParam.class);
JTAnalyzeAlarmParam analyzeAlarmParam = JTAnalyzeAlarmParam.decode(buf);
Method methodForAnalyzeAlarmParam = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), JTAnalyzeAlarmParam.class);
methodForAnalyzeAlarmParam.invoke(deviceConfig, analyzeAlarmParam);
continue;
case "AwakenParam":
JTAwakenParam awakenParamParam = JTAwakenParam.decode(buf);
Method methodForAwakenParam = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), JTAwakenParam.class);
methodForAwakenParam.invoke(deviceConfig, awakenParamParam);
continue;
default:
System.err.println(field.getGenericType().getTypeName());
continue;

View File

@@ -2,12 +2,6 @@ package com.genersoft.iot.vmp.jt1078.proc.request;
import com.genersoft.iot.vmp.jt1078.annotation.MsgId;
import com.genersoft.iot.vmp.jt1078.bean.*;
import com.genersoft.iot.vmp.jt1078.bean.common.ConfigAttribute;
import com.genersoft.iot.vmp.jt1078.bean.config.CameraTimer;
import com.genersoft.iot.vmp.jt1078.bean.config.CollisionAlarmParams;
import com.genersoft.iot.vmp.jt1078.bean.config.GnssPositioningMode;
import com.genersoft.iot.vmp.jt1078.bean.config.IllegalDrivingPeriods;
import com.genersoft.iot.vmp.jt1078.controller.JT1078Controller;
import com.genersoft.iot.vmp.jt1078.proc.Header;
import com.genersoft.iot.vmp.jt1078.proc.response.J8001;
import com.genersoft.iot.vmp.jt1078.proc.response.Rs;
@@ -16,20 +10,11 @@ import com.genersoft.iot.vmp.jt1078.session.Session;
import com.genersoft.iot.vmp.jt1078.session.SessionManager;
import com.genersoft.iot.vmp.jt1078.util.BCDUtil;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationEvent;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 查询终端属性应答
@@ -72,8 +57,8 @@ public class J0107 extends Re {
int firmwareVersionLength = buf.readUnsignedByte();
deviceAttribute.setFirmwareVersion(buf.readCharSequence(firmwareVersionLength, Charset.forName("GBK")).toString().trim());
deviceAttribute.setGnssAttribute(JGnssAttribute.getInstance(buf.readUnsignedByte()));
deviceAttribute.setCommunicationModuleAttribute(JCommunicationModuleAttribute.getInstance(buf.readUnsignedByte()));
deviceAttribute.setGnssAttribute(JTGnssAttribute.getInstance(buf.readUnsignedByte()));
deviceAttribute.setCommunicationModuleAttribute(JTCommunicationModuleAttribute.getInstance(buf.readUnsignedByte()));
SessionManager.INSTANCE.response(header.getTerminalId(), "0107", null, deviceAttribute);
return null;

View File

@@ -0,0 +1,43 @@
package com.genersoft.iot.vmp.jt1078.proc.request;
import com.genersoft.iot.vmp.jt1078.annotation.MsgId;
import com.genersoft.iot.vmp.jt1078.bean.JTMediaAttribute;
import com.genersoft.iot.vmp.jt1078.proc.Header;
import com.genersoft.iot.vmp.jt1078.proc.response.J8001;
import com.genersoft.iot.vmp.jt1078.proc.response.Rs;
import com.genersoft.iot.vmp.jt1078.service.Ijt1078Service;
import com.genersoft.iot.vmp.jt1078.session.Session;
import com.genersoft.iot.vmp.jt1078.session.SessionManager;
import io.netty.buffer.ByteBuf;
import org.springframework.context.ApplicationEvent;
/**
* 终端上传音视频属性
*
*/
@MsgId(id = "1003")
public class J1003 extends Re {
JTMediaAttribute mediaAttribute;
@Override
protected Rs decode0(ByteBuf buf, Header header, Session session) {
mediaAttribute = JTMediaAttribute.decode(buf);
SessionManager.INSTANCE.response(header.getTerminalId(), "1003", null, mediaAttribute);
return null;
}
@Override
protected Rs handler(Header header, Session session, Ijt1078Service service) {
J8001 j8001 = new J8001();
j8001.setRespNo(header.getSn());
j8001.setRespId(header.getMsgId());
j8001.setResult(J8001.SUCCESS);
return j8001;
}
@Override
public ApplicationEvent getEvent() {
return null;
}
}

View File

@@ -95,6 +95,7 @@ public class J8103 extends Rs {
case "AlarmShielding":
case "VideoAlarmBit":
case "AnalyzeAlarmParam":
case "AwakenParam":
field.setAccessible(true);
JTDeviceSubConfig subConfig = (JTDeviceSubConfig)field.get(config);
ByteBuf bytesForIllegalDrivingPeriods = subConfig.encode();

View File

@@ -1,10 +1,9 @@
package com.genersoft.iot.vmp.jt1078.proc.response;
import com.genersoft.iot.vmp.jt1078.annotation.MsgId;
import com.genersoft.iot.vmp.jt1078.bean.JConfirmationAlarmMessageType;
import com.genersoft.iot.vmp.jt1078.bean.JTConfirmationAlarmMessageType;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.swagger.v3.oas.annotations.media.Schema;
/**
* 人工确认报警消息
@@ -19,7 +18,7 @@ public class J8203 extends Rs {
/**
* 人工确认报警类型
*/
private JConfirmationAlarmMessageType alarmMessageType;
private JTConfirmationAlarmMessageType alarmMessageType;
@Override
public ByteBuf encode() {
@@ -39,11 +38,11 @@ public class J8203 extends Rs {
this.alarmPackageNo = alarmPackageNo;
}
public JConfirmationAlarmMessageType getAlarmMessageType() {
public JTConfirmationAlarmMessageType getAlarmMessageType() {
return alarmMessageType;
}
public void setAlarmMessageType(JConfirmationAlarmMessageType alarmMessageType) {
public void setAlarmMessageType(JTConfirmationAlarmMessageType alarmMessageType) {
this.alarmMessageType = alarmMessageType;
}
}

View File

@@ -0,0 +1,19 @@
package com.genersoft.iot.vmp.jt1078.proc.response;
import com.genersoft.iot.vmp.jt1078.annotation.MsgId;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
/**
* 查询终端音视频属性
*/
@MsgId(id = "9003")
public class J9003 extends Rs {
@Override
public ByteBuf encode() {
ByteBuf buffer = Unpooled.buffer();
return buffer;
}
}