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

@@ -6,7 +6,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
* JT 通信模块属性
*/
@Schema(description = "JT通信模块属性")
public class JCommunicationModuleAttribute {
public class JTCommunicationModuleAttribute {
private boolean gprs ;
private boolean cdma ;
@@ -17,7 +17,7 @@ public class JCommunicationModuleAttribute {
private boolean other ;
public static JCommunicationModuleAttribute getInstance(short content) {
public static JTCommunicationModuleAttribute getInstance(short content) {
boolean gprs = (content & 1) == 1;
boolean cdma = (content >>> 1 & 1) == 1;
boolean tdScdma = (content >>> 2 & 1) == 1;
@@ -25,10 +25,10 @@ public class JCommunicationModuleAttribute {
boolean cdma2000 = (content >>> 4 & 1) == 1;
boolean tdLte = (content >>> 5 & 1) == 1;
boolean other = (content >>> 7 & 1) == 1;
return new JCommunicationModuleAttribute(gprs, cdma, tdScdma, wcdma, cdma2000, tdLte, other);
return new JTCommunicationModuleAttribute(gprs, cdma, tdScdma, wcdma, cdma2000, tdLte, other);
}
public JCommunicationModuleAttribute(boolean gprs, boolean cdma, boolean tdScdma, boolean wcdma, boolean cdma2000, boolean tdLte, boolean other) {
public JTCommunicationModuleAttribute(boolean gprs, boolean cdma, boolean tdScdma, boolean wcdma, boolean cdma2000, boolean tdLte, boolean other) {
this.gprs = gprs;
this.cdma = cdma;
this.tdScdma = tdScdma;

View File

@@ -3,7 +3,7 @@ package com.genersoft.iot.vmp.jt1078.bean;
import io.swagger.v3.oas.annotations.media.Schema;
@Schema(description = "人工确认报警类型")
public class JConfirmationAlarmMessageType {
public class JTConfirmationAlarmMessageType {
@Schema(description = "确认紧急报警")
private boolean urgent;
@Schema(description = "确认危险预警")

View File

@@ -1,10 +1,5 @@
package 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 io.swagger.v3.oas.annotations.media.Schema;
/**
@@ -35,10 +30,10 @@ public class JTDeviceAttribute {
private String firmwareVersion ;
@Schema(description = "GNSS 模块属性")
private JGnssAttribute gnssAttribute ;
private JTGnssAttribute gnssAttribute ;
@Schema(description = "通信模块属性")
private JCommunicationModuleAttribute communicationModuleAttribute ;
private JTCommunicationModuleAttribute communicationModuleAttribute ;
public JTDeviceType getType() {
return type;
@@ -96,19 +91,19 @@ public class JTDeviceAttribute {
this.firmwareVersion = firmwareVersion;
}
public JGnssAttribute getGnssAttribute() {
public JTGnssAttribute getGnssAttribute() {
return gnssAttribute;
}
public void setGnssAttribute(JGnssAttribute gnssAttribute) {
public void setGnssAttribute(JTGnssAttribute gnssAttribute) {
this.gnssAttribute = gnssAttribute;
}
public JCommunicationModuleAttribute getCommunicationModuleAttribute() {
public JTCommunicationModuleAttribute getCommunicationModuleAttribute() {
return communicationModuleAttribute;
}
public void setCommunicationModuleAttribute(JCommunicationModuleAttribute communicationModuleAttribute) {
public void setCommunicationModuleAttribute(JTCommunicationModuleAttribute communicationModuleAttribute) {
this.communicationModuleAttribute = communicationModuleAttribute;
}

View File

@@ -116,7 +116,7 @@ public class JTDeviceConfig {
private Integer fenceRadius;
@ConfigAttribute(id = 0x32, type="IllegalDrivingPeriods", description = "违规行驶时段范围 ,精确到分")
private IllegalDrivingPeriods illegalDrivingPeriods;
private JTIllegalDrivingPeriods illegalDrivingPeriods;
@ConfigAttribute(id = 0x40, type="String", description = "监控平台电话号码")
private String platformPhoneNumber;
@@ -188,13 +188,13 @@ public class JTDeviceConfig {
private Integer drowsyDrivingWarningDifference;
@ConfigAttribute(id = 0x5d, type="CollisionAlarmParams", description = "碰撞报警参数设置")
private CollisionAlarmParams collisionAlarmParams;
private JTCollisionAlarmParams collisionAlarmParams;
@ConfigAttribute(id = 0x5e, type="Integer", description = "侧翻报警参数设置:侧翻角度,单位为度,默认为30")
private Integer rolloverAlarm;
@ConfigAttribute(id = 0x64, type="CameraTimer", description = "定时拍照控制")
private CameraTimer cameraTimer;
private JTCameraTimer cameraTimer;
@ConfigAttribute(id = 0x70, type="Long", description = "图像/视频质量 设置范围为1~10 1表示最优质量")
private Long qualityForVideo;
@@ -212,25 +212,25 @@ public class JTDeviceConfig {
private Long chroma;
@ConfigAttribute(id = 0x75, type="VideoParam", description = "音视频参数设置")
private VideoParam videoParam;
private JTVideoParam videoParam;
@ConfigAttribute(id = 0x76, type="ChannelListParam", description = "音视频通道列表设置")
private ChannelListParam channelListParam;
private JTChannelListParam channelListParam;
@ConfigAttribute(id = 0x77, type="ChannelParam", description = "音视频通道列表设置")
private ChannelParam channelParam;
private JTChannelParam channelParam;
@ConfigAttribute(id = 0x79, type="AlarmRecordingParam", description = "特殊报警录像参数设置")
private AlarmRecordingParam alarmRecordingParam;
private JTAlarmRecordingParam alarmRecordingParam;
@ConfigAttribute(id = 0x7a, type="VideoAlarmBit", description = "视频相关报警屏蔽字")
private VideoAlarmBit videoAlarmBit;
private JTVideoAlarmBit videoAlarmBit;
@ConfigAttribute(id = 0x7b, type="AnalyzeAlarmParam", description = "图像分析报警参数设置")
private AnalyzeAlarmParam analyzeAlarmParam;
private JTAnalyzeAlarmParam analyzeAlarmParam;
@ConfigAttribute(id = 0x7c, type="AwakenParam", description = "终端休眠唤醒模式设置")
private AwakenParam awakenParam;
private JTAwakenParam awakenParam;
@ConfigAttribute(id = 0x80, type="Long", description = "车辆里程表读数,单位'1/10km")
private Long mileage;
@@ -248,7 +248,7 @@ public class JTDeviceConfig {
private Short licensePlateColor;
@ConfigAttribute(id = 0x90, type="Short", description = "GNSS定位模式")
private GnssPositioningMode gnssPositioningMode;
private JTGnssPositioningMode gnssPositioningMode;
@ConfigAttribute(id = 0x91, type="Short", description = "GNSS 波特率,定义如下: 0: 4800, 1:9600, 219200, 3:38400, 4:57600, 5:115200")
private Short gnssBaudRate;
@@ -289,11 +289,11 @@ public class JTDeviceConfig {
private Integer canUploadIntervalForChannel2;
public AnalyzeAlarmParam getAnalyzeAlarmParam() {
public JTAnalyzeAlarmParam getAnalyzeAlarmParam() {
return analyzeAlarmParam;
}
public void setAnalyzeAlarmParam(AnalyzeAlarmParam analyzeAlarmParam) {
public void setAnalyzeAlarmParam(JTAnalyzeAlarmParam analyzeAlarmParam) {
this.analyzeAlarmParam = analyzeAlarmParam;
}
@@ -577,11 +577,11 @@ public class JTDeviceConfig {
this.fenceRadius = fenceRadius;
}
public IllegalDrivingPeriods getIllegalDrivingPeriods() {
public JTIllegalDrivingPeriods getIllegalDrivingPeriods() {
return illegalDrivingPeriods;
}
public void setIllegalDrivingPeriods(IllegalDrivingPeriods illegalDrivingPeriods) {
public void setIllegalDrivingPeriods(JTIllegalDrivingPeriods illegalDrivingPeriods) {
this.illegalDrivingPeriods = illegalDrivingPeriods;
}
@@ -769,11 +769,11 @@ public class JTDeviceConfig {
this.drowsyDrivingWarningDifference = drowsyDrivingWarningDifference;
}
public CollisionAlarmParams getCollisionAlarmParams() {
public JTCollisionAlarmParams getCollisionAlarmParams() {
return collisionAlarmParams;
}
public void setCollisionAlarmParams(CollisionAlarmParams collisionAlarmParams) {
public void setCollisionAlarmParams(JTCollisionAlarmParams collisionAlarmParams) {
this.collisionAlarmParams = collisionAlarmParams;
}
@@ -785,11 +785,11 @@ public class JTDeviceConfig {
this.rolloverAlarm = rolloverAlarm;
}
public CameraTimer getCameraTimer() {
public JTCameraTimer getCameraTimer() {
return cameraTimer;
}
public void setCameraTimer(CameraTimer cameraTimer) {
public void setCameraTimer(JTCameraTimer cameraTimer) {
this.cameraTimer = cameraTimer;
}
@@ -873,11 +873,11 @@ public class JTDeviceConfig {
this.licensePlateColor = licensePlateColor;
}
public GnssPositioningMode getGnssPositioningMode() {
public JTGnssPositioningMode getGnssPositioningMode() {
return gnssPositioningMode;
}
public void setGnssPositioningMode(GnssPositioningMode gnssPositioningMode) {
public void setGnssPositioningMode(JTGnssPositioningMode gnssPositioningMode) {
this.gnssPositioningMode = gnssPositioningMode;
}
@@ -953,46 +953,55 @@ public class JTDeviceConfig {
this.canUploadIntervalForChannel2 = canUploadIntervalForChannel2;
}
public VideoParam getVideoParam() {
public JTVideoParam getVideoParam() {
return videoParam;
}
public void setVideoParam(VideoParam videoParam) {
public void setVideoParam(JTVideoParam videoParam) {
this.videoParam = videoParam;
}
public ChannelListParam getChannelListParam() {
public JTChannelListParam getChannelListParam() {
return channelListParam;
}
public void setChannelListParam(ChannelListParam channelListParam) {
public void setChannelListParam(JTChannelListParam channelListParam) {
this.channelListParam = channelListParam;
}
public ChannelParam getChannelParam() {
public JTChannelParam getChannelParam() {
return channelParam;
}
public void setChannelParam(ChannelParam channelParam) {
public void setChannelParam(JTChannelParam channelParam) {
this.channelParam = channelParam;
}
public AlarmRecordingParam getAlarmRecordingParam() {
public JTAlarmRecordingParam getAlarmRecordingParam() {
return alarmRecordingParam;
}
public void setAlarmRecordingParam(AlarmRecordingParam alarmRecordingParam) {
public void setAlarmRecordingParam(JTAlarmRecordingParam alarmRecordingParam) {
this.alarmRecordingParam = alarmRecordingParam;
}
public VideoAlarmBit getVideoAlarmBit() {
public JTVideoAlarmBit getVideoAlarmBit() {
return videoAlarmBit;
}
public void setVideoAlarmBit(VideoAlarmBit videoAlarmBit) {
public void setVideoAlarmBit(JTVideoAlarmBit videoAlarmBit) {
this.videoAlarmBit = videoAlarmBit;
}
public JTAwakenParam getAwakenParam() {
return awakenParam;
}
public void setAwakenParam(JTAwakenParam awakenParam) {
this.awakenParam = awakenParam;
}
@Override
public String toString() {
return "JTDeviceConfig{" +

View File

@@ -1,10 +1,5 @@
package 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 io.swagger.v3.oas.annotations.media.Schema;
/**

View File

@@ -6,7 +6,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
* JT GNSS 模块属性
*/
@Schema(description = "JTGNSS 模块属性")
public class JGnssAttribute {
public class JTGnssAttribute {
private boolean gps;
@@ -16,15 +16,15 @@ public class JGnssAttribute {
private boolean gaLiLeo;
public static JGnssAttribute getInstance(short content) {
public static JTGnssAttribute getInstance(short content) {
boolean gps = (content & 1) == 1;
boolean beidou = (content >>> 1 & 1) == 1;
boolean glonass = (content >>> 2 & 1) == 1;
boolean gaLiLeo = (content >>> 3 & 1) == 1;
return new JGnssAttribute(gps, beidou, glonass, gaLiLeo);
return new JTGnssAttribute(gps, beidou, glonass, gaLiLeo);
}
public JGnssAttribute(boolean gps, boolean beidou, boolean glonass, boolean gaLiLeo) {
public JTGnssAttribute(boolean gps, boolean beidou, boolean glonass, boolean gaLiLeo) {
this.gps = gps;
this.beidou = beidou;
this.glonass = glonass;

View File

@@ -0,0 +1,197 @@
package com.genersoft.iot.vmp.jt1078.bean;
import com.genersoft.iot.vmp.jt1078.bean.config.JTDeviceSubConfig;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
/**
* 终端上传音视频属性
*/
public class JTMediaAttribute implements JTDeviceSubConfig {
/**
* 输入音频编码方式:
* 1 G. 721
* 2 G. 722
* 3 G. 723
* 4 G. 728
* 5 G. 729
* 6 G. 711A
* 7 G. 711U
* 8 G. 726
* 9 G. 729A
* 10 DVI4 3
* 11 DVI4 4
* 12 DVI4 8K
* 13 DVI4 16K
* 14 LPC
* 15 S16BE STEREO
* 16 S16BE MONO
* 17 MPEGAUDIO
* 18 LPCM
* 19 AAC
* 20 WMA9STD
* 21 HEAAC
* 22 PCM VOICE
* 23 PCM AUDIO
* 24 AACLC
* 25 MP3
* 26 ADPCMA
* 27 MP4AUDIO
* 28 AMR
*/
private int audioEncoder;
/**
* 输入音频声道数
*/
private int audioChannels;
/**
* 输入音频采样率:
* 0:8 kHz;
* 1:22. 05 kHz;
* 2:44. 1 kHz;
* 3:48 kHz
*/
private int audioSamplingRate;
/**
* 输入音频采样位数:
* 0:8 位;
* 1:16 位;
* 2:32 位
*/
private int audioSamplingBits;
/**
* 音频帧长度: 范围 1 ~ 4 294 967 295
*/
private int audioFrameLength;
/**
* 是否支持音频输出:
* 0:不支持;1:支持
*/
private int audioOutputEnable;
/**
* 视频编码方式:
* 98 H. 264
* 99 H. 265
* 100 AVS
* 101 SVAC
*/
private int videoEncoder;
/**
* 终端支持的最大音频物理通道数量:
*/
private int audioChannelMax;
/**
* 终端支持的最大视频物理通道数量:
*/
private int videoChannelMax;
public int getAudioEncoder() {
return audioEncoder;
}
public void setAudioEncoder(int audioEncoder) {
this.audioEncoder = audioEncoder;
}
public int getAudioChannels() {
return audioChannels;
}
public void setAudioChannels(int audioChannels) {
this.audioChannels = audioChannels;
}
public int getAudioSamplingRate() {
return audioSamplingRate;
}
public void setAudioSamplingRate(int audioSamplingRate) {
this.audioSamplingRate = audioSamplingRate;
}
public int getAudioFrameLength() {
return audioFrameLength;
}
public void setAudioFrameLength(int audioFrameLength) {
this.audioFrameLength = audioFrameLength;
}
public int getAudioOutputEnable() {
return audioOutputEnable;
}
public void setAudioOutputEnable(int audioOutputEnable) {
this.audioOutputEnable = audioOutputEnable;
}
public int getVideoEncoder() {
return videoEncoder;
}
public void setVideoEncoder(int videoEncoder) {
this.videoEncoder = videoEncoder;
}
public int getAudioChannelMax() {
return audioChannelMax;
}
public void setAudioChannelMax(int audioChannelMax) {
this.audioChannelMax = audioChannelMax;
}
public int getVideoChannelMax() {
return videoChannelMax;
}
public void setVideoChannelMax(int videoChannelMax) {
this.videoChannelMax = videoChannelMax;
}
public int getAudioSamplingBits() {
return audioSamplingBits;
}
public void setAudioSamplingBits(int audioSamplingBits) {
this.audioSamplingBits = audioSamplingBits;
}
@Override
public ByteBuf encode() {
ByteBuf byteBuf = Unpooled.buffer();
byteBuf.writeByte(audioEncoder);
byteBuf.writeByte(audioChannels);
byteBuf.writeByte(audioSamplingRate);
byteBuf.writeByte(audioSamplingBits);
byteBuf.writeShort(audioFrameLength);
byteBuf.writeByte(audioOutputEnable);
byteBuf.writeByte(videoEncoder);
byteBuf.writeByte(audioChannelMax);
byteBuf.writeByte(videoChannelMax);
return byteBuf;
}
public static JTMediaAttribute decode(ByteBuf byteBuf) {
JTMediaAttribute jtMediaAttribute = new JTMediaAttribute();
jtMediaAttribute.setAudioEncoder(byteBuf.readUnsignedByte());
jtMediaAttribute.setAudioChannels(byteBuf.readUnsignedByte());
jtMediaAttribute.setAudioSamplingRate(byteBuf.readUnsignedByte());
jtMediaAttribute.setAudioSamplingBits(byteBuf.readUnsignedByte());
jtMediaAttribute.setAudioFrameLength(byteBuf.readUnsignedShort());
jtMediaAttribute.setAudioOutputEnable(byteBuf.readUnsignedByte());
jtMediaAttribute.setVideoEncoder(byteBuf.readUnsignedByte());
jtMediaAttribute.setAudioChannelMax(byteBuf.readUnsignedByte());
jtMediaAttribute.setVideoChannelMax(byteBuf.readUnsignedByte());
return jtMediaAttribute;
}
}

View File

@@ -1,11 +0,0 @@
package com.genersoft.iot.vmp.jt1078.bean.config;
import io.netty.buffer.ByteBuf;
public class AwakenParam implements JTDeviceSubConfig{
@Override
public ByteBuf encode() {
return null;
}
}

View File

@@ -6,7 +6,7 @@ import io.netty.buffer.Unpooled;
/**
* 特殊报警录像参数
*/
public class AlarmRecordingParam implements JTDeviceSubConfig{
public class JTAlarmRecordingParam implements JTDeviceSubConfig{
/**
* 特殊报警录像存储阈值, 分比,取值 特殊报警录像占用主存储器存储阈值百 1 ~ 99,默认值为 20
@@ -56,8 +56,8 @@ public class AlarmRecordingParam implements JTDeviceSubConfig{
return byteBuf;
}
public static AlarmRecordingParam decode(ByteBuf byteBuf) {
AlarmRecordingParam alarmRecordingParam = new AlarmRecordingParam();
public static JTAlarmRecordingParam decode(ByteBuf byteBuf) {
JTAlarmRecordingParam alarmRecordingParam = new JTAlarmRecordingParam();
alarmRecordingParam.setStorageLimit(byteBuf.readUnsignedByte());
alarmRecordingParam.setDuration(byteBuf.readUnsignedByte());
alarmRecordingParam.setStartTime(byteBuf.readUnsignedByte());

View File

@@ -91,7 +91,7 @@ public class JTAloneChanel implements JTDeviceSubConfig{
/**
* 字幕叠加设置
*/
private OSDConfig osd;
private JTOSDConfig osd;
public int getLogicChannelId() {
return logicChannelId;
@@ -181,11 +181,11 @@ public class JTAloneChanel implements JTDeviceSubConfig{
this.storageStreamCodeRate = storageStreamCodeRate;
}
public OSDConfig getOsd() {
public JTOSDConfig getOsd() {
return osd;
}
public void setOsd(OSDConfig osd) {
public void setOsd(JTOSDConfig osd) {
this.osd = osd;
}
@@ -222,7 +222,7 @@ public class JTAloneChanel implements JTDeviceSubConfig{
jtAloneChanel.setStorageStreamIInterval(buf.readUnsignedShort());
jtAloneChanel.setStorageStreamFrameRate(buf.readByte());
jtAloneChanel.setStorageStreamCodeRate(buf.readUnsignedInt());
jtAloneChanel.setOsd(OSDConfig.decode(buf));
jtAloneChanel.setOsd(JTOSDConfig.decode(buf));
return null;
}
}

View File

@@ -6,7 +6,7 @@ import io.netty.buffer.Unpooled;
/**
* 视频分析报警参数
*/
public class AnalyzeAlarmParam implements JTDeviceSubConfig{
public class JTAnalyzeAlarmParam implements JTDeviceSubConfig{
/**
* 车辆核载人数
@@ -44,8 +44,8 @@ public class AnalyzeAlarmParam implements JTDeviceSubConfig{
return byteBuf;
}
public static AnalyzeAlarmParam decode(ByteBuf byteBuf) {
AnalyzeAlarmParam analyzeAlarmParam = new AnalyzeAlarmParam();
public static JTAnalyzeAlarmParam decode(ByteBuf byteBuf) {
JTAnalyzeAlarmParam analyzeAlarmParam = new JTAnalyzeAlarmParam();
analyzeAlarmParam.setNumberForPeople(byteBuf.readUnsignedByte());
analyzeAlarmParam.setFatigueThreshold(byteBuf.readUnsignedByte());
return analyzeAlarmParam;

View File

@@ -0,0 +1,466 @@
package com.genersoft.iot.vmp.jt1078.bean.config;
import com.genersoft.iot.vmp.jt1078.util.BCDUtil;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
/**
* 终端休眠唤醒模式设置
*/
public class JTAwakenParam implements JTDeviceSubConfig{
/**
* 休眠唤醒模式-条件唤醒
*/
private boolean wakeUpModeByCondition;
/**
* 休眠唤醒模式-定时唤醒
*/
private boolean wakeUpModeByTime;
/**
* 休眠唤醒模式-手动唤醒
*/
private boolean wakeUpModeByManual;
/**
* 唤醒条件类型-紧急报警
*/
private boolean wakeUpConditionsByAlarm;
/**
* 唤醒条件类型-碰撞侧翻报警
*/
private boolean wakeUpConditionsByRollover;
/**
* 唤醒条件类型-车辆开门
*/
private boolean wakeUpConditionsByOpenTheDoor;
/**
* 定时唤醒日设置-周一
*/
private boolean awakeningDayForMonday;
/**
* 定时唤醒日设置-周二
*/
private boolean awakeningDayForTuesday;
/**
* 定时唤醒日设置-周三
*/
private boolean awakeningDayForWednesday;
/**
* 定时唤醒日设置-周四
*/
private boolean awakeningDayForThursday;
/**
* 定时唤醒日设置-周五
*/
private boolean awakeningDayForFriday;
/**
* 定时唤醒日设置-周六
*/
private boolean awakeningDayForSaturday;
/**
* 定时唤醒日设置-周日
*/
private boolean awakeningDayForSunday;
/**
* 日定时唤醒-启用时间段1
*/
private boolean time1Enable;
/**
* 日定时唤醒-时间段1开始时间
*/
private String time1StartTime;
/**
* 日定时唤醒-时间段1结束时间
*/
private String time1EndTime;
/**
* 日定时唤醒-启用时间段2
*/
private boolean time2Enable;
/**
* 日定时唤醒-时间段2开始时间
*/
private String time2StartTime;
/**
* 日定时唤醒-时间段2结束时间
*/
private String time2EndTime;
/**
* 日定时唤醒-启用时间段3
*/
private boolean time3Enable;
/**
* 日定时唤醒-时间段3开始时间
*/
private String time3StartTime;
/**
* 日定时唤醒-时间段3结束时间
*/
private String time3EndTime;
/**
* 日定时唤醒-启用时间段4
*/
private boolean time4Enable;
/**
* 日定时唤醒-时间段4开始时间
*/
private String time4StartTime;
/**
* 日定时唤醒-时间段4结束时间
*/
private String time4EndTime;
public boolean isWakeUpModeByCondition() {
return wakeUpModeByCondition;
}
public void setWakeUpModeByCondition(boolean wakeUpModeByCondition) {
this.wakeUpModeByCondition = wakeUpModeByCondition;
}
public boolean isWakeUpModeByTime() {
return wakeUpModeByTime;
}
public void setWakeUpModeByTime(boolean wakeUpModeByTime) {
this.wakeUpModeByTime = wakeUpModeByTime;
}
public boolean isWakeUpModeByManual() {
return wakeUpModeByManual;
}
public void setWakeUpModeByManual(boolean wakeUpModeByManual) {
this.wakeUpModeByManual = wakeUpModeByManual;
}
public boolean isWakeUpConditionsByAlarm() {
return wakeUpConditionsByAlarm;
}
public void setWakeUpConditionsByAlarm(boolean wakeUpConditionsByAlarm) {
this.wakeUpConditionsByAlarm = wakeUpConditionsByAlarm;
}
public boolean isWakeUpConditionsByRollover() {
return wakeUpConditionsByRollover;
}
public void setWakeUpConditionsByRollover(boolean wakeUpConditionsByRollover) {
this.wakeUpConditionsByRollover = wakeUpConditionsByRollover;
}
public boolean isWakeUpConditionsByOpenTheDoor() {
return wakeUpConditionsByOpenTheDoor;
}
public void setWakeUpConditionsByOpenTheDoor(boolean wakeUpConditionsByOpenTheDoor) {
this.wakeUpConditionsByOpenTheDoor = wakeUpConditionsByOpenTheDoor;
}
public boolean isAwakeningDayForMonday() {
return awakeningDayForMonday;
}
public void setAwakeningDayForMonday(boolean awakeningDayForMonday) {
this.awakeningDayForMonday = awakeningDayForMonday;
}
public boolean isAwakeningDayForTuesday() {
return awakeningDayForTuesday;
}
public void setAwakeningDayForTuesday(boolean awakeningDayForTuesday) {
this.awakeningDayForTuesday = awakeningDayForTuesday;
}
public boolean isAwakeningDayForWednesday() {
return awakeningDayForWednesday;
}
public void setAwakeningDayForWednesday(boolean awakeningDayForWednesday) {
this.awakeningDayForWednesday = awakeningDayForWednesday;
}
public boolean isAwakeningDayForThursday() {
return awakeningDayForThursday;
}
public void setAwakeningDayForThursday(boolean awakeningDayForThursday) {
this.awakeningDayForThursday = awakeningDayForThursday;
}
public boolean isAwakeningDayForFriday() {
return awakeningDayForFriday;
}
public void setAwakeningDayForFriday(boolean awakeningDayForFriday) {
this.awakeningDayForFriday = awakeningDayForFriday;
}
public boolean isAwakeningDayForSaturday() {
return awakeningDayForSaturday;
}
public void setAwakeningDayForSaturday(boolean awakeningDayForSaturday) {
this.awakeningDayForSaturday = awakeningDayForSaturday;
}
public boolean isAwakeningDayForSunday() {
return awakeningDayForSunday;
}
public void setAwakeningDayForSunday(boolean awakeningDayForSunday) {
this.awakeningDayForSunday = awakeningDayForSunday;
}
public boolean isTime1Enable() {
return time1Enable;
}
public void setTime1Enable(boolean time1Enable) {
this.time1Enable = time1Enable;
}
public String getTime1StartTime() {
return time1StartTime;
}
public void setTime1StartTime(String time1StartTime) {
this.time1StartTime = time1StartTime;
}
public String getTime1EndTime() {
return time1EndTime;
}
public void setTime1EndTime(String time1EndTime) {
this.time1EndTime = time1EndTime;
}
public boolean isTime2Enable() {
return time2Enable;
}
public void setTime2Enable(boolean time2Enable) {
this.time2Enable = time2Enable;
}
public String getTime2StartTime() {
return time2StartTime;
}
public void setTime2StartTime(String time2StartTime) {
this.time2StartTime = time2StartTime;
}
public String getTime2EndTime() {
return time2EndTime;
}
public void setTime2EndTime(String time2EndTime) {
this.time2EndTime = time2EndTime;
}
public boolean isTime3Enable() {
return time3Enable;
}
public void setTime3Enable(boolean time3Enable) {
this.time3Enable = time3Enable;
}
public String getTime3StartTime() {
return time3StartTime;
}
public void setTime3StartTime(String time3StartTime) {
this.time3StartTime = time3StartTime;
}
public String getTime3EndTime() {
return time3EndTime;
}
public void setTime3EndTime(String time3EndTime) {
this.time3EndTime = time3EndTime;
}
public boolean isTime4Enable() {
return time4Enable;
}
public void setTime4Enable(boolean time4Enable) {
this.time4Enable = time4Enable;
}
public String getTime4StartTime() {
return time4StartTime;
}
public void setTime4StartTime(String time4StartTime) {
this.time4StartTime = time4StartTime;
}
public String getTime4EndTime() {
return time4EndTime;
}
public void setTime4EndTime(String time4EndTime) {
this.time4EndTime = time4EndTime;
}
@Override
public ByteBuf encode() {
ByteBuf byteBuf = Unpooled.buffer();
byte wakeUpTypeByte = 0;
byte wakeUpConditionsByte = 0;
byte wakeDayByte = 0;
if (wakeUpModeByCondition) {
wakeUpTypeByte = (byte)(wakeUpTypeByte | 1);
}
if (wakeUpModeByTime) {
wakeUpTypeByte = (byte)(wakeUpTypeByte | (1 << 1));
}
if (wakeUpModeByManual) {
wakeUpTypeByte = (byte)(wakeUpTypeByte | (1 << 2));
}
byteBuf.writeByte(wakeUpTypeByte);
if (wakeUpConditionsByAlarm) {
wakeUpConditionsByte = (byte)(wakeUpConditionsByte | 1);
}
if (wakeUpConditionsByRollover) {
wakeUpConditionsByte = (byte)(wakeUpConditionsByte | (1 << 1));
}
if (wakeUpConditionsByOpenTheDoor) {
wakeUpConditionsByte = (byte)(wakeUpConditionsByte | (1 << 2));
}
byteBuf.writeByte(wakeUpConditionsByte);
if (awakeningDayForMonday) {
wakeDayByte = (byte)(wakeDayByte | 1);
}
if (awakeningDayForTuesday) {
wakeDayByte = (byte)(wakeDayByte | (1 << 1));
}
if (awakeningDayForWednesday) {
wakeDayByte = (byte)(wakeDayByte | (1 << 2));
}
if (awakeningDayForThursday) {
wakeDayByte = (byte)(wakeDayByte | (1 << 3));
}
if (awakeningDayForFriday) {
wakeDayByte = (byte)(wakeDayByte | (1 << 4));
}
if (awakeningDayForSaturday) {
wakeDayByte = (byte)(wakeDayByte | (1 << 5));
}
if (awakeningDayForSunday) {
wakeDayByte = (byte)(wakeDayByte | (1 << 6));
}
byteBuf.writeByte(wakeDayByte);
byte enableByte = 0;
if (time1Enable) {
enableByte = (byte)(enableByte | 1);
}
if (time2Enable) {
enableByte = (byte)(enableByte | (1 << 1));
}
if (time3Enable) {
enableByte = (byte)(enableByte | (1 << 2));
}
if (time4Enable) {
enableByte = (byte)(enableByte | (1 << 3));
}
byteBuf.writeByte(enableByte);
byteBuf.writeBytes(transportTime(time1StartTime));
byteBuf.writeBytes(transportTime(time1EndTime));
byteBuf.writeBytes(transportTime(time2StartTime));
byteBuf.writeBytes(transportTime(time2EndTime));
byteBuf.writeBytes(transportTime(time3StartTime));
byteBuf.writeBytes(transportTime(time3EndTime));
byteBuf.writeBytes(transportTime(time4StartTime));
byteBuf.writeBytes(transportTime(time4EndTime));
return byteBuf;
}
private byte[] transportTime(String time) {
return BCDUtil.strToBcd(time.replace(":", ""));
}
public static JTAwakenParam decode(ByteBuf byteBuf) {
JTAwakenParam awakenParam = new JTAwakenParam();
short wakeUpTypeByte = byteBuf.readUnsignedByte();
awakenParam.wakeUpModeByCondition = ((wakeUpTypeByte & 1) == 1);
awakenParam.wakeUpModeByTime = ((wakeUpTypeByte >>> 1 & 1) == 1);
awakenParam.wakeUpModeByManual = ((wakeUpTypeByte >>> 2 & 1) == 1);
short wakeUpConditionsByte = byteBuf.readUnsignedByte();
awakenParam.wakeUpConditionsByAlarm = ((wakeUpConditionsByte & 1) == 1);
awakenParam.wakeUpConditionsByRollover = ((wakeUpConditionsByte >>> 1 & 1) == 1);
awakenParam.wakeUpConditionsByOpenTheDoor = ((wakeUpConditionsByte >>> 2 & 1) == 1);
short wakeDayByte = byteBuf.readUnsignedByte();
awakenParam.awakeningDayForMonday = ((wakeDayByte & 1) == 1);
awakenParam.awakeningDayForTuesday = ((wakeDayByte >>> 1 & 1) == 1);
awakenParam.awakeningDayForWednesday = ((wakeDayByte >>> 2 & 1) == 1);
awakenParam.awakeningDayForThursday = ((wakeDayByte >>> 3 & 1) == 1);
awakenParam.awakeningDayForFriday = ((wakeDayByte >>> 4 & 1) == 1);
awakenParam.awakeningDayForSaturday = ((wakeDayByte >>> 5 & 1) == 1);
awakenParam.awakeningDayForSunday = ((wakeDayByte >>> 6 & 1) == 1);
short enableByte = byteBuf.readUnsignedByte();
awakenParam.time1Enable = ((enableByte & 1) == 1);
awakenParam.time2Enable = ((enableByte >>> 1 & 1) == 1);
awakenParam.time3Enable = ((enableByte >>> 2 & 1) == 1);
awakenParam.time4Enable = ((enableByte >>> 3 & 1) == 1);
byte[] timeBytes = new byte[2];
byteBuf.readBytes(timeBytes);
awakenParam.time1StartTime = transportTime(timeBytes);
byteBuf.readBytes(timeBytes);
awakenParam.time1EndTime = transportTime(timeBytes);
byteBuf.readBytes(timeBytes);
awakenParam.time2StartTime = transportTime(timeBytes);
byteBuf.readBytes(timeBytes);
awakenParam.time2EndTime = transportTime(timeBytes);
byteBuf.readBytes(timeBytes);
awakenParam.time3StartTime = transportTime(timeBytes);
byteBuf.readBytes(timeBytes);
awakenParam.time3EndTime = transportTime(timeBytes);
byteBuf.readBytes(timeBytes);
awakenParam.time4StartTime = transportTime(timeBytes);
byteBuf.readBytes(timeBytes);
awakenParam.time4EndTime = transportTime(timeBytes);
return awakenParam;
}
private static String transportTime(byte[] timeBytes) {
String time1Str = BCDUtil.transform(timeBytes);
return time1Str.replace(time1Str.substring(0, 2), time1Str.substring(0, 2) + ":");
}
}

View File

@@ -6,7 +6,7 @@ import io.netty.buffer.Unpooled;
/**
* 定时拍照控制
*/
public class CameraTimer implements JTDeviceSubConfig{
public class JTCameraTimer implements JTDeviceSubConfig{
/**
* 摄像通道1 定时拍照开关标志
*/

View File

@@ -9,7 +9,7 @@ import java.util.List;
/**
* 音视频通道列表设置
*/
public class ChannelListParam implements JTDeviceSubConfig{
public class JTChannelListParam implements JTDeviceSubConfig{
/**
* 音视频通道总数
@@ -73,8 +73,8 @@ public class ChannelListParam implements JTDeviceSubConfig{
return byteBuf;
}
public static ChannelListParam decode(ByteBuf byteBuf) {
ChannelListParam channelListParam = new ChannelListParam();
public static JTChannelListParam decode(ByteBuf byteBuf) {
JTChannelListParam channelListParam = new JTChannelListParam();
channelListParam.setVideoAndAudioCount(byteBuf.readUnsignedByte());
channelListParam.setAudioCount(byteBuf.readUnsignedByte());
channelListParam.setVideoCount(byteBuf.readUnsignedByte());

View File

@@ -9,7 +9,7 @@ import java.util.List;
/**
* 单独视频通道参数设置
*/
public class ChannelParam implements JTDeviceSubConfig {
public class JTChannelParam implements JTDeviceSubConfig {
/**
* 单独通道视频参数设置列表
@@ -34,8 +34,8 @@ public class ChannelParam implements JTDeviceSubConfig {
return byteBuf;
}
public static ChannelParam decode(ByteBuf byteBuf) {
ChannelParam channelParam = new ChannelParam();
public static JTChannelParam decode(ByteBuf byteBuf) {
JTChannelParam channelParam = new JTChannelParam();
int length = byteBuf.readUnsignedByte();
List<JTAloneChanel> jtAloneChanelList = new ArrayList<>(length);
for (int i = 0; i < length; i++) {

View File

@@ -6,7 +6,7 @@ import io.netty.buffer.Unpooled;
/**
* 碰撞报警参数设置
*/
public class CollisionAlarmParams implements JTDeviceSubConfig{
public class JTCollisionAlarmParams implements JTDeviceSubConfig{
/**
* 碰撞时间 单位为毫秒(ms)

View File

@@ -4,5 +4,4 @@ import io.netty.buffer.ByteBuf;
public interface JTDeviceSubConfig {
ByteBuf encode();
}

View File

@@ -6,7 +6,7 @@ import io.netty.buffer.Unpooled;
/**
* GNSS 定位模式
*/
public class GnssPositioningMode implements JTDeviceSubConfig{
public class JTGnssPositioningMode implements JTDeviceSubConfig{
/**
* GPS 定位 true: 开启 false 关闭

View File

@@ -6,7 +6,7 @@ import io.netty.buffer.Unpooled;
/**
* 违规行驶时段范围 ,精确到分
*/
public class IllegalDrivingPeriods implements JTDeviceSubConfig{
public class JTIllegalDrivingPeriods implements JTDeviceSubConfig{
/**
* 违规行驶时段-开始时间 HH:mm
*/

View File

@@ -6,7 +6,7 @@ import io.netty.buffer.Unpooled;
/**
* OSD字幕叠加设置
*/
public class OSDConfig {
public class JTOSDConfig {
/**
* 日期和时间
@@ -129,8 +129,8 @@ public class OSDConfig {
}
public static OSDConfig decode(ByteBuf buf) {
OSDConfig config = new OSDConfig();
public static JTOSDConfig decode(ByteBuf buf) {
JTOSDConfig config = new JTOSDConfig();
int content = buf.readUnsignedShort();
config.setTime((content & 1) == 1);
config.setLicensePlate((content >>> 1 & 1) == 1);

View File

@@ -6,7 +6,7 @@ import io.netty.buffer.Unpooled;
/**
* 视频报警标志位
*/
public class VideoAlarmBit implements JTDeviceSubConfig{
public class JTVideoAlarmBit implements JTDeviceSubConfig{
/**
* 视频信号丢失报警
@@ -125,8 +125,8 @@ public class VideoAlarmBit implements JTDeviceSubConfig{
return byteBuf;
}
public static VideoAlarmBit decode(ByteBuf byteBuf) {
VideoAlarmBit videoAlarmBit = new VideoAlarmBit();
public static JTVideoAlarmBit decode(ByteBuf byteBuf) {
JTVideoAlarmBit videoAlarmBit = new JTVideoAlarmBit();
byte content = byteBuf.readByte();
videoAlarmBit.setLossSignal((content & 1) == 1);
videoAlarmBit.setOcclusionSignal((content >>> 1 & 1) == 1);

View File

@@ -6,7 +6,7 @@ import io.netty.buffer.Unpooled;
/**
* 违规行驶时段范围 ,精确到分
*/
public class VideoParam implements JTDeviceSubConfig{
public class JTVideoParam implements JTDeviceSubConfig{
/**
* 实时流编码模式
* 0:CBR( 固定码率) ;
@@ -85,7 +85,7 @@ public class VideoParam implements JTDeviceSubConfig{
/**
* 字幕叠加设置
*/
private OSDConfig osd;
private JTOSDConfig osd;
/**
* 是否启用音频输出, 0:不启用;1:启用
@@ -173,11 +173,11 @@ public class VideoParam implements JTDeviceSubConfig{
this.storageStreamCodeRate = storageStreamCodeRate;
}
public OSDConfig getOsd() {
public JTOSDConfig getOsd() {
return osd;
}
public void setOsd(OSDConfig osd) {
public void setOsd(JTOSDConfig osd) {
this.osd = osd;
}
@@ -208,8 +208,8 @@ public class VideoParam implements JTDeviceSubConfig{
return byteBuf;
}
public static VideoParam decode(ByteBuf buf) {
VideoParam videoParam = new VideoParam();
public static JTVideoParam decode(ByteBuf buf) {
JTVideoParam videoParam = new JTVideoParam();
videoParam.setLiveStreamCodeRateType(buf.readByte());
videoParam.setLiveStreamResolving(buf.readByte());
videoParam.setLiveStreamIInterval(buf.readUnsignedShort());
@@ -221,7 +221,7 @@ public class VideoParam implements JTDeviceSubConfig{
videoParam.setStorageStreamIInterval(buf.readUnsignedShort());
videoParam.setStorageStreamFrameRate(buf.readByte());
videoParam.setStorageStreamCodeRate(buf.readUnsignedInt());
videoParam.setOsd(OSDConfig.decode(buf));
videoParam.setOsd(JTOSDConfig.decode(buf));
videoParam.setAudioEnable(buf.readByte());
return null;
}

View File

@@ -45,6 +45,7 @@ public class JT1078Template {
private static final String H8803 = "8803";
private static final String H8804 = "8804";
private static final String H8805 = "8805";
private static final String H9003 = "9003";
private static final String H9101 = "9101";
private static final String H9102 = "9102";
private static final String H9201 = "9201";
@@ -69,6 +70,7 @@ public class JT1078Template {
private static final String H0801 = "0801";
private static final String H0802 = "0802";
private static final String H0805 = "0805";
private static final String H1003 = "1003";
private static final String H1205 = "1205";
/**
@@ -630,4 +632,15 @@ public class JT1078Template {
.build();
return SessionManager.INSTANCE.request(cmd, timeOut);
}
public Object queryMediaAttribute(String devId, J9003 j9003, int timeOut) {
Cmd cmd = new Cmd.Builder()
.setDevId(devId)
.setPackageNo(randomInt())
.setMsgId(H9003)
.setRespId(H1003)
.setRs(j9003)
.build();
return SessionManager.INSTANCE.request(cmd, timeOut);
}
}

View File

@@ -905,5 +905,14 @@ public class JT1078Controller {
}
service.record(deviceId, 0, time, save, samplingRate);
}
@Operation(summary = "1078-查询终端音视频属性", security = @SecurityRequirement(name = JwtUtils.HEADER))
@Parameter(name = "deviceId", description = "设备国标编号", required = true)
@GetMapping("/media/attribute")
public JTMediaAttribute queryMediaAttribute(HttpServletRequest request,
@Parameter(required = true) String deviceId
) {
return service.queryMediaAttribute(deviceId);
}
}

View File

@@ -1,6 +1,6 @@
package com.genersoft.iot.vmp.jt1078.controller.bean;
import com.genersoft.iot.vmp.jt1078.bean.JConfirmationAlarmMessageType;
import com.genersoft.iot.vmp.jt1078.bean.JTConfirmationAlarmMessageType;
import io.swagger.v3.oas.annotations.media.Schema;
/**
@@ -14,7 +14,7 @@ public class ConfirmationAlarmMessageParam {
@Schema(description = "报警消息流水号")
private int alarmPackageNo;
@Schema(description = "人工确认报警类型")
private JConfirmationAlarmMessageType alarmMessageType;
private JTConfirmationAlarmMessageType alarmMessageType;
public String getDeviceId() {
return deviceId;
@@ -24,11 +24,11 @@ public class ConfirmationAlarmMessageParam {
this.deviceId = deviceId;
}
public JConfirmationAlarmMessageType getAlarmMessageType() {
public JTConfirmationAlarmMessageType getAlarmMessageType() {
return alarmMessageType;
}
public void setAlarmMessageType(JConfirmationAlarmMessageType alarmMessageType) {
public void setAlarmMessageType(JTConfirmationAlarmMessageType alarmMessageType) {
this.alarmMessageType = alarmMessageType;
}

View File

@@ -1,6 +1,5 @@
package com.genersoft.iot.vmp.jt1078.controller.bean;
import com.genersoft.iot.vmp.jt1078.bean.JConfirmationAlarmMessageType;
import com.genersoft.iot.vmp.jt1078.bean.JTTextSign;
import io.swagger.v3.oas.annotations.media.Schema;

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;
}
}

View File

@@ -4,7 +4,6 @@ import com.genersoft.iot.vmp.common.GeneralCallback;
import com.genersoft.iot.vmp.common.StreamInfo;
import com.genersoft.iot.vmp.jt1078.bean.*;
import com.genersoft.iot.vmp.jt1078.proc.request.J1205;
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
import com.github.pagehelper.PageInfo;
import java.util.List;
@@ -58,7 +57,7 @@ public interface Ijt1078Service {
void tempPositionTrackingControl(String deviceId, Integer timeInterval, Long validityPeriod);
void confirmationAlarmMessage(String deviceId, int alarmPackageNo, JConfirmationAlarmMessageType alarmMessageType);
void confirmationAlarmMessage(String deviceId, int alarmPackageNo, JTConfirmationAlarmMessageType alarmMessageType);
int linkDetection(String deviceId);
@@ -105,4 +104,6 @@ public interface Ijt1078Service {
void record(String deviceId, int command, Integer time, Integer save, Integer samplingRate);
void uploadMediaDataForSingle(String deviceId, Long mediaId, Integer delete);
JTMediaAttribute queryMediaAttribute(String deviceId);
}

View File

@@ -561,7 +561,7 @@ public class jt1078ServiceImpl implements Ijt1078Service {
}
@Override
public void confirmationAlarmMessage(String deviceId, int alarmPackageNo, JConfirmationAlarmMessageType alarmMessageType) {
public void confirmationAlarmMessage(String deviceId, int alarmPackageNo, JTConfirmationAlarmMessageType alarmMessageType) {
J8203 j8203 = new J8203();
j8203.setAlarmMessageType(alarmMessageType);
j8203.setAlarmPackageNo(alarmPackageNo);
@@ -744,4 +744,10 @@ public class jt1078ServiceImpl implements Ijt1078Service {
j8805.setDelete(delete);
jt1078Template.uploadMediaDataForSingle(deviceId, j8805, 10);
}
@Override
public JTMediaAttribute queryMediaAttribute(String deviceId) {
J9003 j9003 = new J9003();
return (JTMediaAttribute)jt1078Template.queryMediaAttribute(deviceId, j9003, 300);
}
}