1078-支持8103 设置终端参数
This commit is contained in:
@@ -1,7 +1,10 @@
|
|||||||
package com.genersoft.iot.vmp.jt1078.bean;
|
package com.genersoft.iot.vmp.jt1078.bean;
|
||||||
|
|
||||||
import com.genersoft.iot.vmp.jt1078.bean.common.ConfigAttribute;
|
import com.genersoft.iot.vmp.jt1078.bean.common.ConfigAttribute;
|
||||||
|
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.bean.config.IllegalDrivingPeriods;
|
||||||
|
import com.genersoft.iot.vmp.jt1078.bean.config.CameraTimer;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -64,7 +67,7 @@ public class JTDeviceConfig {
|
|||||||
@ConfigAttribute(id = 0x1c, type="Long", description = "道路运输证IC卡认证主服务器UDP端口")
|
@ConfigAttribute(id = 0x1c, type="Long", description = "道路运输证IC卡认证主服务器UDP端口")
|
||||||
private Long udpPortIcMaster;
|
private Long udpPortIcMaster;
|
||||||
|
|
||||||
@ConfigAttribute(id = 0x1d, type="Long", description = "道路运输证IC卡认证备份服务器IP地址或域名,端口同主服务器")
|
@ConfigAttribute(id = 0x1d, type="String", description = "道路运输证IC卡认证备份服务器IP地址或域名,端口同主服务器")
|
||||||
private String addressIcBackup;
|
private String addressIcBackup;
|
||||||
|
|
||||||
@ConfigAttribute(id = 0x20, type="Long", description = "位置汇报策略, 0定时汇报 1定距汇报 2定时和定距汇报")
|
@ConfigAttribute(id = 0x20, type="Long", description = "位置汇报策略, 0定时汇报 1定距汇报 2定时和定距汇报")
|
||||||
@@ -112,7 +115,7 @@ public class JTDeviceConfig {
|
|||||||
@ConfigAttribute(id = 0x30, type="Long", description = "拐点补传角度 ,值小于180")
|
@ConfigAttribute(id = 0x30, type="Long", description = "拐点补传角度 ,值小于180")
|
||||||
private Long inflectionPointAngle;
|
private Long inflectionPointAngle;
|
||||||
|
|
||||||
@ConfigAttribute(id = 0x31, type="Long", description = "电子围栏半径(非法位移國值) ,单位为米(m)")
|
@ConfigAttribute(id = 0x31, type="Integer", description = "电子围栏半径(非法位移國值) ,单位为米(m)")
|
||||||
private Integer fenceRadius;
|
private Integer fenceRadius;
|
||||||
|
|
||||||
@ConfigAttribute(id = 0x32, type="IllegalDrivingPeriods", description = "违规行驶时段范围 ,精确到分")
|
@ConfigAttribute(id = 0x32, type="IllegalDrivingPeriods", description = "违规行驶时段范围 ,精确到分")
|
||||||
@@ -181,15 +184,92 @@ public class JTDeviceConfig {
|
|||||||
@ConfigAttribute(id = 0x5a, type="Long", description = "最长停车时间 单位为秒(s)")
|
@ConfigAttribute(id = 0x5a, type="Long", description = "最长停车时间 单位为秒(s)")
|
||||||
private Long maximumParkingTime;
|
private Long maximumParkingTime;
|
||||||
|
|
||||||
@ConfigAttribute(id = 0x5b, type="Long", description = "超速预警差值 单位为1/10 千米每小时(1/10km/h)")
|
@ConfigAttribute(id = 0x5b, type="Integer", description = "超速预警差值 单位为1/10 千米每小时(1/10km/h)")
|
||||||
private Long overSpeedWarningDifference;
|
private Integer overSpeedWarningDifference;
|
||||||
|
|
||||||
@ConfigAttribute(id = 0x5c, type="Long", description = "疲劳驾驶预警差值 单位为秒 值大于零")
|
@ConfigAttribute(id = 0x5c, type="Integer", description = "疲劳驾驶预警差值 单位为秒 值大于零")
|
||||||
private Long drowsyDrivingWarningDifference;
|
private Integer drowsyDrivingWarningDifference;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x5d, type="CollisionAlarmParams", description = "碰撞报警参数设置")
|
||||||
|
private CollisionAlarmParams collisionAlarmParams;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x5e, type="Integer", description = "侧翻报警参数设置:侧翻角度,单位为度,默认为30")
|
||||||
|
private Integer rolloverAlarm;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x64, type="CameraTimer", description = "定时拍照控制")
|
||||||
|
private CameraTimer cameraTimer;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x70, type="Long", description = "图像/视频质量 设置范围为1~10 1表示最优质量")
|
||||||
|
private Long qualityForVideo;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x71, type="Long", description = "亮度,设置范围为0 ~ 255")
|
||||||
|
private Long brightness;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x72, type="Long", description = "对比度,设置范围为0 ~ 127")
|
||||||
|
private Long contrastRatio;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x73, type="Long", description = "饱和度,设置范围为0 ~ 127")
|
||||||
|
private Long saturation;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x74, type="Long", description = "色度,设置范围为0 ~ 255")
|
||||||
|
private Long chroma;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x80, type="Long", description = "车辆里程表读数,单位'1/10km")
|
||||||
|
private Long mileage;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x81, type="Integer", description = "车辆所在的省域ID")
|
||||||
|
private Integer provincialId;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x82, type="Integer", description = "车辆所在的市域ID")
|
||||||
|
private Integer cityId;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x83, type="String", description = "公安交通管理部门颁发的机动车号牌")
|
||||||
|
private String licensePlate;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x84, type="Short", description = "车牌颜色,值按照JT/T697-7.2014中的规定,未上牌车辆填0")
|
||||||
|
private Short licensePlateColor;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x90, type="Short", description = "GNSS定位模式")
|
||||||
|
private GnssPositioningMode gnssPositioningMode;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x91, type="Short", description = "GNSS 波特率,定义如下: 0: 4800, 1:9600, 2:19200, 3:38400, 4:57600, 5:115200")
|
||||||
|
private Short gnssBaudRate;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x92, type="Short", description = "GNSS 模块详细定位数据输出频率,定义如下: 0: 500ms, 1:1000ms(默认值), 2:2000ms, 3:3000ms, 4:4000ms")
|
||||||
|
private Short gnssOutputFrequency;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x93, type="Long", description = "GNSS 模块详细定位数据采集频率 ,单位为秒(s) ,默认为1")
|
||||||
|
private Long gnssCollectionFrequency;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x94, type="Short", description = "GNSS 模块详细定位数据上传方式:,定义如下: " +
|
||||||
|
"0: 本地存储 ,不上传(默认值) , " +
|
||||||
|
"1:按时间间隔上传, " +
|
||||||
|
"2:按距离间隔上传, " +
|
||||||
|
"11:按累计时间上传 ,达到传输时间后自动停止上传, " +
|
||||||
|
"12:按累计距离上传 ,达到距离后自动停止上传, " +
|
||||||
|
"13:按累计条数上传 ,达到上传条数后自动停止上传")
|
||||||
|
private Short gnssDataUploadMethod;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x95, type="Long", description = "GNSS 模块详细定位数据上传设置:,定义如下: " +
|
||||||
|
"1:单位为秒(s), " +
|
||||||
|
"2:单位为米(m) , " +
|
||||||
|
"11:单位为 秒(s), " +
|
||||||
|
"12:单位为米(m), " +
|
||||||
|
"13:单位 为条")
|
||||||
|
private Long gnssDataUploadMethodUnit;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x100, type="Long", description = "CAN总线通道1 采集时间间隔 ,单位为毫秒(ms) ,0 表示不采集")
|
||||||
|
private Long canCollectionTimeForChannel1;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x101, type="Integer", description = "CAN总线通道1 上传时间间隔 ,单位为秒(s) ,0 表示不上传")
|
||||||
|
private Integer canUploadIntervalForChannel1;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x102, type="Long", description = "CAN总线通道2 采集时间间隔 ,单位为毫秒(ms) ,0 表示不采集")
|
||||||
|
private Long canCollectionTimeForChannel2;
|
||||||
|
|
||||||
|
@ConfigAttribute(id = 0x103, type="Integer", description = "CAN总线通道2 上传时间间隔 ,单位为秒(s) ,0 表示不上传")
|
||||||
|
private Integer canUploadIntervalForChannel2;
|
||||||
|
|
||||||
// TODO 未完待续
|
|
||||||
|
|
||||||
public Long getKeepaliveInterval() {
|
public Long getKeepaliveInterval() {
|
||||||
return keepaliveInterval;
|
return keepaliveInterval;
|
||||||
@@ -647,53 +727,291 @@ public class JTDeviceConfig {
|
|||||||
this.maximumParkingTime = maximumParkingTime;
|
this.maximumParkingTime = maximumParkingTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Long getOverSpeedWarningDifference() {
|
public Integer getOverSpeedWarningDifference() {
|
||||||
return overSpeedWarningDifference;
|
return overSpeedWarningDifference;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setOverSpeedWarningDifference(Long overSpeedWarningDifference) {
|
public void setOverSpeedWarningDifference(Integer overSpeedWarningDifference) {
|
||||||
this.overSpeedWarningDifference = overSpeedWarningDifference;
|
this.overSpeedWarningDifference = overSpeedWarningDifference;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Long getDrowsyDrivingWarningDifference() {
|
public Integer getDrowsyDrivingWarningDifference() {
|
||||||
return drowsyDrivingWarningDifference;
|
return drowsyDrivingWarningDifference;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDrowsyDrivingWarningDifference(Long drowsyDrivingWarningDifference) {
|
public void setDrowsyDrivingWarningDifference(Integer drowsyDrivingWarningDifference) {
|
||||||
this.drowsyDrivingWarningDifference = drowsyDrivingWarningDifference;
|
this.drowsyDrivingWarningDifference = drowsyDrivingWarningDifference;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public CollisionAlarmParams getCollisionAlarmParams() {
|
||||||
|
return collisionAlarmParams;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCollisionAlarmParams(CollisionAlarmParams collisionAlarmParams) {
|
||||||
|
this.collisionAlarmParams = collisionAlarmParams;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getRolloverAlarm() {
|
||||||
|
return rolloverAlarm;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRolloverAlarm(Integer rolloverAlarm) {
|
||||||
|
this.rolloverAlarm = rolloverAlarm;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CameraTimer getCameraTimer() {
|
||||||
|
return cameraTimer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCameraTimer(CameraTimer cameraTimer) {
|
||||||
|
this.cameraTimer = cameraTimer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getQualityForVideo() {
|
||||||
|
return qualityForVideo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setQualityForVideo(Long qualityForVideo) {
|
||||||
|
this.qualityForVideo = qualityForVideo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getBrightness() {
|
||||||
|
return brightness;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBrightness(Long brightness) {
|
||||||
|
this.brightness = brightness;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getContrastRatio() {
|
||||||
|
return contrastRatio;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setContrastRatio(Long contrastRatio) {
|
||||||
|
this.contrastRatio = contrastRatio;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getSaturation() {
|
||||||
|
return saturation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSaturation(Long saturation) {
|
||||||
|
this.saturation = saturation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getChroma() {
|
||||||
|
return chroma;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChroma(Long chroma) {
|
||||||
|
this.chroma = chroma;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getMileage() {
|
||||||
|
return mileage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMileage(Long mileage) {
|
||||||
|
this.mileage = mileage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getProvincialId() {
|
||||||
|
return provincialId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProvincialId(Integer provincialId) {
|
||||||
|
this.provincialId = provincialId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getCityId() {
|
||||||
|
return cityId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCityId(Integer cityId) {
|
||||||
|
this.cityId = cityId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLicensePlate() {
|
||||||
|
return licensePlate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLicensePlate(String licensePlate) {
|
||||||
|
this.licensePlate = licensePlate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Short getLicensePlateColor() {
|
||||||
|
return licensePlateColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLicensePlateColor(Short licensePlateColor) {
|
||||||
|
this.licensePlateColor = licensePlateColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GnssPositioningMode getGnssPositioningMode() {
|
||||||
|
return gnssPositioningMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGnssPositioningMode(GnssPositioningMode gnssPositioningMode) {
|
||||||
|
this.gnssPositioningMode = gnssPositioningMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Short getGnssBaudRate() {
|
||||||
|
return gnssBaudRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGnssBaudRate(Short gnssBaudRate) {
|
||||||
|
this.gnssBaudRate = gnssBaudRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Short getGnssOutputFrequency() {
|
||||||
|
return gnssOutputFrequency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGnssOutputFrequency(Short gnssOutputFrequency) {
|
||||||
|
this.gnssOutputFrequency = gnssOutputFrequency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getGnssCollectionFrequency() {
|
||||||
|
return gnssCollectionFrequency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGnssCollectionFrequency(Long gnssCollectionFrequency) {
|
||||||
|
this.gnssCollectionFrequency = gnssCollectionFrequency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Short getGnssDataUploadMethod() {
|
||||||
|
return gnssDataUploadMethod;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGnssDataUploadMethod(Short gnssDataUploadMethod) {
|
||||||
|
this.gnssDataUploadMethod = gnssDataUploadMethod;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getGnssDataUploadMethodUnit() {
|
||||||
|
return gnssDataUploadMethodUnit;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGnssDataUploadMethodUnit(Long gnssDataUploadMethodUnit) {
|
||||||
|
this.gnssDataUploadMethodUnit = gnssDataUploadMethodUnit;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getCanCollectionTimeForChannel1() {
|
||||||
|
return canCollectionTimeForChannel1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCanCollectionTimeForChannel1(Long canCollectionTimeForChannel1) {
|
||||||
|
this.canCollectionTimeForChannel1 = canCollectionTimeForChannel1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getCanUploadIntervalForChannel1() {
|
||||||
|
return canUploadIntervalForChannel1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCanUploadIntervalForChannel1(Integer canUploadIntervalForChannel1) {
|
||||||
|
this.canUploadIntervalForChannel1 = canUploadIntervalForChannel1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getCanCollectionTimeForChannel2() {
|
||||||
|
return canCollectionTimeForChannel2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCanCollectionTimeForChannel2(Long canCollectionTimeForChannel2) {
|
||||||
|
this.canCollectionTimeForChannel2 = canCollectionTimeForChannel2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getCanUploadIntervalForChannel2() {
|
||||||
|
return canUploadIntervalForChannel2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCanUploadIntervalForChannel2(Integer canUploadIntervalForChannel2) {
|
||||||
|
this.canUploadIntervalForChannel2 = canUploadIntervalForChannel2;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "JTDeviceConfig{" +
|
return "JTDeviceConfig{" +
|
||||||
"keepaliveInterval=" + keepaliveInterval +
|
"终端心跳发送间隔: " + keepaliveInterval + "秒" +
|
||||||
", tcpResponseTimeout=" + tcpResponseTimeout +
|
", TCP消息应答超时时间:" + tcpResponseTimeout + "秒" +
|
||||||
", tcpRetransmissionCount=" + tcpRetransmissionCount +
|
", TCP消息重传次数: " + tcpRetransmissionCount + "秒" +
|
||||||
", udpResponseTimeout=" + udpResponseTimeout +
|
", UDP消息应答超时时间: " + udpResponseTimeout +
|
||||||
", udpRetransmissionCount=" + udpRetransmissionCount +
|
", UDP消息重传次数: " + udpRetransmissionCount +
|
||||||
", smsResponseTimeout=" + smsResponseTimeout +
|
", SMS 消息应答超时时间: " + smsResponseTimeout + "秒" +
|
||||||
", smsRetransmissionCount=" + smsRetransmissionCount +
|
", SMS 消息重传次数: " + smsRetransmissionCount +
|
||||||
", apnMaster='" + apnMaster + '\'' +
|
", 主服务器APN无线通信拨号访问点: " + apnMaster + '\'' +
|
||||||
", dialingUsernameMaster='" + dialingUsernameMaster + '\'' +
|
", 主服务器无线通信拨号用户名: " + dialingUsernameMaster +
|
||||||
", dialingPasswordMaster='" + dialingPasswordMaster + '\'' +
|
", 主服务器无线通信拨号密码: " + dialingPasswordMaster +
|
||||||
", addressMaster='" + addressMaster + '\'' +
|
", 主服务器地址IP或域名: " + addressMaster +
|
||||||
", apnBackup='" + apnBackup + '\'' +
|
", 备份服务器APN: " + apnBackup +
|
||||||
", dialingUsernameBackup='" + dialingUsernameBackup + '\'' +
|
", 备份服务器无线通信拨号用户名: " + dialingUsernameBackup +
|
||||||
", dialingPasswordBackup='" + dialingPasswordBackup + '\'' +
|
", 备份服务器无线通信拨号密码: " + dialingPasswordBackup +
|
||||||
", addressBackup='" + addressBackup + '\'' +
|
", 备用服务器备份地址IP或域名: " + addressBackup +
|
||||||
", addressIcMaster='" + addressIcMaster + '\'' +
|
", 道路运输证IC卡认证主服务器IP地址或域名: " + addressIcMaster +
|
||||||
", tcpPortIcMaster=" + tcpPortIcMaster +
|
", 道路运输证IC卡认证主服务器TCP端口: " + tcpPortIcMaster +
|
||||||
", udpPortIcMaster=" + udpPortIcMaster +
|
", 道路运输证IC卡认证主服务器UDP端口: " + udpPortIcMaster +
|
||||||
", addressIcBackup='" + addressIcBackup + '\'' +
|
", 道路运输证IC卡认证备份服务器IP地址或域名: " + addressIcBackup +
|
||||||
", locationReportingStrategy=" + locationReportingStrategy +
|
", 位置汇报策略: " + locationReportingStrategy +
|
||||||
", locationReportingPlan=" + locationReportingPlan +
|
", 位置汇报方案: " + locationReportingPlan +
|
||||||
", reportingIntervalOffline=" + reportingIntervalOffline +
|
", 驾驶员未登录汇报时间间隔: " + reportingIntervalOffline + "秒" +
|
||||||
", apnSlave='" + apnSlave + '\'' +
|
", 从服务器 APN: " + apnSlave +
|
||||||
", dialingUsernameSlave='" + dialingUsernameSlave + '\'' +
|
", 从服务器无线通信拨号密码: " + dialingUsernameSlave +
|
||||||
", dialingPasswordSlave='" + dialingPasswordSlave + '\'' +
|
", 从服务器备份地址 IP或域名: " + dialingPasswordSlave +
|
||||||
", addressSlave='" + addressSlave + '\'' +
|
", 从服务器备份地址 IP或域名: " + addressSlave +
|
||||||
", reportingIntervalDormancy=" + reportingIntervalDormancy +
|
", reportingIntervalDormancy: " + reportingIntervalDormancy +
|
||||||
", reportingIntervalEmergencyAlarm=" + reportingIntervalEmergencyAlarm +
|
", reportingIntervalEmergencyAlarm: " + reportingIntervalEmergencyAlarm +
|
||||||
|
", reportingIntervalDefault: " + reportingIntervalDefault +
|
||||||
|
", reportingDistanceDefault: " + reportingDistanceDefault +
|
||||||
|
", reportingDistanceOffline: " + reportingDistanceOffline +
|
||||||
|
", reportingDistanceDormancy: " + reportingDistanceDormancy +
|
||||||
|
", reportingDistanceEmergencyAlarm: " + reportingDistanceEmergencyAlarm +
|
||||||
|
", inflectionPointAngle: " + inflectionPointAngle +
|
||||||
|
", fenceRadius: " + fenceRadius +
|
||||||
|
", illegalDrivingPeriods: " + illegalDrivingPeriods +
|
||||||
|
", platformPhoneNumber: " + platformPhoneNumber +
|
||||||
|
", phoneNumberForReset: " + phoneNumberForReset +
|
||||||
|
", phoneNumberForFactoryReset: " + phoneNumberForFactoryReset +
|
||||||
|
", phoneNumberForSms: " + phoneNumberForSms +
|
||||||
|
", phoneNumberForReceiveTextAlarm: " + phoneNumberForReceiveTextAlarm +
|
||||||
|
", phoneAnsweringPolicy: " + phoneAnsweringPolicy +
|
||||||
|
", longestCallTimeForPerSession: " + longestCallTimeForPerSession +
|
||||||
|
", longestCallTimeInMonth: " + longestCallTimeInMonth +
|
||||||
|
", phoneNumbersForListen: " + phoneNumbersForListen +
|
||||||
|
", privilegedSMSNumber: " + privilegedSMSNumber +
|
||||||
|
", alarmMaskingWord: " + alarmMaskingWord +
|
||||||
|
", alarmSendsTextSmsSwitch: " + alarmSendsTextSmsSwitch +
|
||||||
|
", alarmShootingSwitch: " + alarmShootingSwitch +
|
||||||
|
", alarmShootingStorageFlags: " + alarmShootingStorageFlags +
|
||||||
|
", KeySign: " + KeySign +
|
||||||
|
", topSpeed: " + topSpeed +
|
||||||
|
", overSpeedDuration: " + overSpeedDuration +
|
||||||
|
", continuousDrivingTimeThreshold: " + continuousDrivingTimeThreshold +
|
||||||
|
", cumulativeDrivingTimeThresholdForTheDay: " + cumulativeDrivingTimeThresholdForTheDay +
|
||||||
|
", minimumBreakTime: " + minimumBreakTime +
|
||||||
|
", maximumParkingTime: " + maximumParkingTime +
|
||||||
|
", overSpeedWarningDifference: " + overSpeedWarningDifference +
|
||||||
|
", drowsyDrivingWarningDifference: " + drowsyDrivingWarningDifference +
|
||||||
|
", collisionAlarmParams: " + collisionAlarmParams +
|
||||||
|
", rolloverAlarm: " + rolloverAlarm +
|
||||||
|
", cameraTimer: " + cameraTimer +
|
||||||
|
", qualityForVideo: " + qualityForVideo +
|
||||||
|
", brightness: " + brightness +
|
||||||
|
", contrastRatio: " + contrastRatio +
|
||||||
|
", saturation: " + saturation +
|
||||||
|
", chroma: " + chroma +
|
||||||
|
", mileage: " + mileage +
|
||||||
|
", provincialId: " + provincialId +
|
||||||
|
", cityId: " + cityId +
|
||||||
|
", licensePlate: " + licensePlate +
|
||||||
|
", licensePlateColor: " + licensePlateColor +
|
||||||
|
", gnssPositioningMode: " + gnssPositioningMode +
|
||||||
|
", gnssBaudRate: " + gnssBaudRate +
|
||||||
|
", gnssOutputFrequency: " + gnssOutputFrequency +
|
||||||
|
", gnssCollectionFrequency: " + gnssCollectionFrequency +
|
||||||
|
", gnssDataUploadMethod: " + gnssDataUploadMethod +
|
||||||
|
", gnssDataUploadMethodUnit: " + gnssDataUploadMethodUnit +
|
||||||
|
", canCollectionTimeForChannel1: " + canCollectionTimeForChannel1 +
|
||||||
|
", canUploadIntervalForChannel1: " + canUploadIntervalForChannel1 +
|
||||||
|
", canCollectionTimeForChannel2: " + canCollectionTimeForChannel2 +
|
||||||
|
", canUploadIntervalForChannel2: " + canUploadIntervalForChannel2 +
|
||||||
'}';
|
'}';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,200 @@
|
|||||||
|
package com.genersoft.iot.vmp.jt1078.bean.config;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 定时拍照控制
|
||||||
|
*/
|
||||||
|
public class CameraTimer implements JTDeviceSubConfig{
|
||||||
|
/**
|
||||||
|
* 摄像通道1 定时拍照开关标志
|
||||||
|
*/
|
||||||
|
private boolean switchForChannel1;
|
||||||
|
/**
|
||||||
|
* 摄像通道2 定时拍照开关标志
|
||||||
|
*/
|
||||||
|
private boolean switchForChannel2;
|
||||||
|
/**
|
||||||
|
* 摄像通道3 定时拍照开关标志
|
||||||
|
*/
|
||||||
|
private boolean switchForChannel3;
|
||||||
|
/**
|
||||||
|
* 摄像通道4 定时拍照开关标志
|
||||||
|
*/
|
||||||
|
private boolean switchForChannel4;
|
||||||
|
/**
|
||||||
|
* 摄像通道5 定时拍照开关标志
|
||||||
|
*/
|
||||||
|
private boolean switchForChannel5;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 摄像通道1 定时拍照存储标志, true: 上传, false: 存储
|
||||||
|
*/
|
||||||
|
private boolean storageFlagsForChannel1;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 摄像通道2 定时拍照存储标志 true: 上传, false: 存储
|
||||||
|
*/
|
||||||
|
private boolean storageFlagsForChannel2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 摄像通道3 定时拍照存储标志 true: 上传, false: 存储
|
||||||
|
*/
|
||||||
|
private boolean storageFlagsForChannel3;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 摄像通道4 定时拍照存储标志 true: 上传, false: 存储
|
||||||
|
*/
|
||||||
|
private boolean storageFlagsForChannel4;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 摄像通道5 定时拍照存储标志 true: 上传, false: 存储
|
||||||
|
*/
|
||||||
|
private boolean storageFlagsForChannel5;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 定时时间单位,true: 分, false: 秒,当数值小于5s时,终端按5s处理
|
||||||
|
*/
|
||||||
|
private boolean timeUnit;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 定时时间间隔
|
||||||
|
*/
|
||||||
|
private Integer timeInterval;
|
||||||
|
|
||||||
|
public boolean isSwitchForChannel1() {
|
||||||
|
return switchForChannel1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSwitchForChannel1(boolean switchForChannel1) {
|
||||||
|
this.switchForChannel1 = switchForChannel1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSwitchForChannel2() {
|
||||||
|
return switchForChannel2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSwitchForChannel2(boolean switchForChannel2) {
|
||||||
|
this.switchForChannel2 = switchForChannel2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSwitchForChannel3() {
|
||||||
|
return switchForChannel3;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSwitchForChannel3(boolean switchForChannel3) {
|
||||||
|
this.switchForChannel3 = switchForChannel3;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSwitchForChannel4() {
|
||||||
|
return switchForChannel4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSwitchForChannel4(boolean switchForChannel4) {
|
||||||
|
this.switchForChannel4 = switchForChannel4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSwitchForChannel5() {
|
||||||
|
return switchForChannel5;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSwitchForChannel5(boolean switchForChannel5) {
|
||||||
|
this.switchForChannel5 = switchForChannel5;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isStorageFlagsForChannel1() {
|
||||||
|
return storageFlagsForChannel1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStorageFlagsForChannel1(boolean storageFlagsForChannel1) {
|
||||||
|
this.storageFlagsForChannel1 = storageFlagsForChannel1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isStorageFlagsForChannel2() {
|
||||||
|
return storageFlagsForChannel2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStorageFlagsForChannel2(boolean storageFlagsForChannel2) {
|
||||||
|
this.storageFlagsForChannel2 = storageFlagsForChannel2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isStorageFlagsForChannel3() {
|
||||||
|
return storageFlagsForChannel3;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStorageFlagsForChannel3(boolean storageFlagsForChannel3) {
|
||||||
|
this.storageFlagsForChannel3 = storageFlagsForChannel3;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isStorageFlagsForChannel4() {
|
||||||
|
return storageFlagsForChannel4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStorageFlagsForChannel4(boolean storageFlagsForChannel4) {
|
||||||
|
this.storageFlagsForChannel4 = storageFlagsForChannel4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isStorageFlagsForChannel5() {
|
||||||
|
return storageFlagsForChannel5;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStorageFlagsForChannel5(boolean storageFlagsForChannel5) {
|
||||||
|
this.storageFlagsForChannel5 = storageFlagsForChannel5;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isTimeUnit() {
|
||||||
|
return timeUnit;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTimeUnit(boolean timeUnit) {
|
||||||
|
this.timeUnit = timeUnit;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getTimeInterval() {
|
||||||
|
return timeInterval;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTimeInterval(Integer timeInterval) {
|
||||||
|
this.timeInterval = timeInterval;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public byte[] encode() {
|
||||||
|
byte[] bytes = new byte[4];
|
||||||
|
bytes[0] = 0;
|
||||||
|
if (switchForChannel1) {
|
||||||
|
bytes[0] = (byte)(bytes[0] | 1);
|
||||||
|
}
|
||||||
|
if (switchForChannel2) {
|
||||||
|
bytes[0] = (byte)(bytes[0] | 2);
|
||||||
|
}
|
||||||
|
if (switchForChannel3) {
|
||||||
|
bytes[0] = (byte)(bytes[0] | 4);
|
||||||
|
}
|
||||||
|
if (switchForChannel4) {
|
||||||
|
bytes[0] = (byte)(bytes[0] | 8);
|
||||||
|
}
|
||||||
|
if (switchForChannel5) {
|
||||||
|
bytes[0] = (byte)(bytes[0] | 16);
|
||||||
|
}
|
||||||
|
bytes[1] = 0;
|
||||||
|
if (storageFlagsForChannel1) {
|
||||||
|
bytes[1] = (byte)(bytes[1] | 1);
|
||||||
|
}
|
||||||
|
if (storageFlagsForChannel2) {
|
||||||
|
bytes[1] = (byte)(bytes[1] | 2);
|
||||||
|
}
|
||||||
|
if (storageFlagsForChannel3) {
|
||||||
|
bytes[1] = (byte)(bytes[1] | 4);
|
||||||
|
}
|
||||||
|
if (storageFlagsForChannel4) {
|
||||||
|
bytes[1] = (byte)(bytes[1] | 8);
|
||||||
|
}
|
||||||
|
if (storageFlagsForChannel5) {
|
||||||
|
bytes[1] = (byte)(bytes[1] | 16);
|
||||||
|
}
|
||||||
|
bytes[3] = (byte)(timeInterval & 0xfe);
|
||||||
|
if (timeUnit) {
|
||||||
|
bytes[3] = (byte)(bytes[3] | 1);
|
||||||
|
}
|
||||||
|
return bytes;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
package com.genersoft.iot.vmp.jt1078.bean.config;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 碰撞报警参数设置
|
||||||
|
*/
|
||||||
|
public class CollisionAlarmParams implements JTDeviceSubConfig{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 碰撞时间 单位为毫秒(ms)
|
||||||
|
*/
|
||||||
|
private int collisionAlarmTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 碰撞加速度 单位为0.1g,设置范围为0~79,默认为10
|
||||||
|
*/
|
||||||
|
private int collisionAcceleration;
|
||||||
|
|
||||||
|
public int getCollisionAlarmTime() {
|
||||||
|
return collisionAlarmTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCollisionAlarmTime(int collisionAlarmTime) {
|
||||||
|
this.collisionAlarmTime = collisionAlarmTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCollisionAcceleration() {
|
||||||
|
return collisionAcceleration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCollisionAcceleration(int collisionAcceleration) {
|
||||||
|
this.collisionAcceleration = collisionAcceleration;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public byte[] encode() {
|
||||||
|
byte[] bytes = new byte[2];
|
||||||
|
bytes[0] = (byte) (collisionAlarmTime & 0xff);
|
||||||
|
bytes[1] = (byte) (collisionAcceleration & 0xff);
|
||||||
|
return bytes;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
package com.genersoft.iot.vmp.jt1078.bean.config;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GNSS 定位模式
|
||||||
|
*/
|
||||||
|
public class GnssPositioningMode implements JTDeviceSubConfig{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GPS 定位 true: 开启, false: 关闭
|
||||||
|
*/
|
||||||
|
private boolean gps;
|
||||||
|
/**
|
||||||
|
* 北斗定位 true: 开启, false: 关闭
|
||||||
|
*/
|
||||||
|
private boolean beidou;
|
||||||
|
/**
|
||||||
|
* GLONASS定位 true: 开启, false: 关闭
|
||||||
|
*/
|
||||||
|
private boolean glonass;
|
||||||
|
/**
|
||||||
|
* GaLiLeo定位 true: 开启, false: 关闭
|
||||||
|
*/
|
||||||
|
private boolean gaLiLeo;
|
||||||
|
|
||||||
|
public boolean isGps() {
|
||||||
|
return gps;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGps(boolean gps) {
|
||||||
|
this.gps = gps;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isBeidou() {
|
||||||
|
return beidou;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBeidou(boolean beidou) {
|
||||||
|
this.beidou = beidou;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isGlonass() {
|
||||||
|
return glonass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGlonass(boolean glonass) {
|
||||||
|
this.glonass = glonass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isGaLiLeo() {
|
||||||
|
return gaLiLeo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGaLiLeo(boolean gaLiLeo) {
|
||||||
|
this.gaLiLeo = gaLiLeo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public byte[] encode() {
|
||||||
|
byte[] bytes = new byte[1];
|
||||||
|
bytes[0] = 0;
|
||||||
|
if (gps) {
|
||||||
|
bytes[0] = (byte)(bytes[0] | 1);
|
||||||
|
}
|
||||||
|
if (beidou) {
|
||||||
|
bytes[0] = (byte)(bytes[0] | 2);
|
||||||
|
}
|
||||||
|
if (glonass) {
|
||||||
|
bytes[0] = (byte)(bytes[0] | 4);
|
||||||
|
}
|
||||||
|
if (gaLiLeo) {
|
||||||
|
bytes[0] = (byte)(bytes[0] | 8);
|
||||||
|
}
|
||||||
|
return bytes;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@ package com.genersoft.iot.vmp.jt1078.bean.config;
|
|||||||
/**
|
/**
|
||||||
* 违规行驶时段范围 ,精确到分
|
* 违规行驶时段范围 ,精确到分
|
||||||
*/
|
*/
|
||||||
public class IllegalDrivingPeriods {
|
public class IllegalDrivingPeriods implements JTDeviceSubConfig{
|
||||||
/**
|
/**
|
||||||
* 违规行驶时段-开始时间 HH:mm
|
* 违规行驶时段-开始时间 HH:mm
|
||||||
*/
|
*/
|
||||||
@@ -29,4 +29,16 @@ public class IllegalDrivingPeriods {
|
|||||||
public void setEndTime(String endTime) {
|
public void setEndTime(String endTime) {
|
||||||
this.endTime = endTime;
|
this.endTime = endTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public byte[] encode() {
|
||||||
|
byte[] bytes = new byte[4];
|
||||||
|
String[] startTimeArray = startTime.split(":");
|
||||||
|
String[] endTimeArray = endTime.split(":");
|
||||||
|
bytes[0] = (byte)Integer.parseInt(startTimeArray[0]);
|
||||||
|
bytes[1] = (byte)Integer.parseInt(startTimeArray[1]);
|
||||||
|
bytes[2] = (byte)Integer.parseInt(endTimeArray[0]);
|
||||||
|
bytes[3] = (byte)Integer.parseInt(endTimeArray[1]);
|
||||||
|
return bytes;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.genersoft.iot.vmp.jt1078.bean.config;
|
||||||
|
|
||||||
|
public interface JTDeviceSubConfig {
|
||||||
|
byte[] encode();
|
||||||
|
}
|
||||||
@@ -4,6 +4,9 @@ import com.genersoft.iot.vmp.jt1078.annotation.MsgId;
|
|||||||
import com.genersoft.iot.vmp.jt1078.bean.JTDevice;
|
import com.genersoft.iot.vmp.jt1078.bean.JTDevice;
|
||||||
import com.genersoft.iot.vmp.jt1078.bean.JTDeviceConfig;
|
import com.genersoft.iot.vmp.jt1078.bean.JTDeviceConfig;
|
||||||
import com.genersoft.iot.vmp.jt1078.bean.common.ConfigAttribute;
|
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.bean.config.IllegalDrivingPeriods;
|
||||||
import com.genersoft.iot.vmp.jt1078.proc.Header;
|
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.J8001;
|
||||||
@@ -59,14 +62,24 @@ public class J0104 extends Re {
|
|||||||
short length = buf.readUnsignedByte();
|
short length = buf.readUnsignedByte();
|
||||||
Field field = allFieldMap.get(id);
|
Field field = allFieldMap.get(id);
|
||||||
try {
|
try {
|
||||||
Method method = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()));
|
|
||||||
switch (allConfigAttributeMap.get(id).type()) {
|
switch (allConfigAttributeMap.get(id).type()) {
|
||||||
case "Long":
|
case "Long":
|
||||||
method.invoke(deviceConfig, buf.readUnsignedInt());
|
Method methodForLong = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), Long.class);
|
||||||
|
methodForLong.invoke(deviceConfig, buf.readUnsignedInt());
|
||||||
continue;
|
continue;
|
||||||
case "String":
|
case "String":
|
||||||
|
Method methodForString = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), String.class);
|
||||||
String val = buf.readCharSequence(length, Charset.forName("GBK")).toString().trim();
|
String val = buf.readCharSequence(length, Charset.forName("GBK")).toString().trim();
|
||||||
method.invoke(deviceConfig, val);
|
methodForString.invoke(deviceConfig, val);
|
||||||
|
continue;
|
||||||
|
case "Integer":
|
||||||
|
Method methodForInteger = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), Integer.class);
|
||||||
|
methodForInteger.invoke(deviceConfig, buf.readUnsignedShort());
|
||||||
|
continue;
|
||||||
|
case "Short":
|
||||||
|
Method methodForShort = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), Short.class);
|
||||||
|
methodForShort.invoke(deviceConfig, buf.readUnsignedByte());
|
||||||
continue;
|
continue;
|
||||||
case "IllegalDrivingPeriods":
|
case "IllegalDrivingPeriods":
|
||||||
IllegalDrivingPeriods illegalDrivingPeriods = new IllegalDrivingPeriods();
|
IllegalDrivingPeriods illegalDrivingPeriods = new IllegalDrivingPeriods();
|
||||||
@@ -76,7 +89,43 @@ public class J0104 extends Re {
|
|||||||
int stopMinute = buf.readUnsignedByte();
|
int stopMinute = buf.readUnsignedByte();
|
||||||
illegalDrivingPeriods.setStartTime(startHour + ":" + startMinute);
|
illegalDrivingPeriods.setStartTime(startHour + ":" + startMinute);
|
||||||
illegalDrivingPeriods.setEndTime(stopHour + ":" + stopMinute);
|
illegalDrivingPeriods.setEndTime(stopHour + ":" + stopMinute);
|
||||||
method.invoke(deviceConfig, illegalDrivingPeriods);
|
Method methodForIllegalDrivingPeriods = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), IllegalDrivingPeriods.class);
|
||||||
|
methodForIllegalDrivingPeriods.invoke(deviceConfig, illegalDrivingPeriods);
|
||||||
|
continue;
|
||||||
|
case "CollisionAlarmParams":
|
||||||
|
CollisionAlarmParams collisionAlarmParams = new CollisionAlarmParams();
|
||||||
|
collisionAlarmParams.setCollisionAlarmTime(buf.readUnsignedByte());
|
||||||
|
collisionAlarmParams.setCollisionAcceleration(buf.readUnsignedByte());
|
||||||
|
Method methodForCollisionAlarmParams = deviceConfig.getClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), CollisionAlarmParams.class);
|
||||||
|
methodForCollisionAlarmParams.invoke(deviceConfig, collisionAlarmParams);
|
||||||
|
continue;
|
||||||
|
case "CameraTimer":
|
||||||
|
CameraTimer cameraTimer = new CameraTimer();
|
||||||
|
long cameraTimerContent = buf.readUnsignedInt();
|
||||||
|
cameraTimer.setSwitchForChannel1((cameraTimerContent & 1) == 1);
|
||||||
|
cameraTimer.setSwitchForChannel2((cameraTimerContent >>> 1 & 1) == 1);
|
||||||
|
cameraTimer.setSwitchForChannel3((cameraTimerContent >>> 2 & 1) == 1);
|
||||||
|
cameraTimer.setSwitchForChannel4((cameraTimerContent >>> 3 & 1) == 1);
|
||||||
|
cameraTimer.setSwitchForChannel5((cameraTimerContent >>> 4 & 1) == 1);
|
||||||
|
cameraTimer.setStorageFlagsForChannel1((cameraTimerContent >>> 7 & 1) == 1);
|
||||||
|
cameraTimer.setStorageFlagsForChannel2((cameraTimerContent >>> 8 & 1) == 1);
|
||||||
|
cameraTimer.setStorageFlagsForChannel3((cameraTimerContent >>> 9 & 1) == 1);
|
||||||
|
cameraTimer.setStorageFlagsForChannel4((cameraTimerContent >>> 10 & 1) == 1);
|
||||||
|
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);
|
||||||
|
methodForCameraTimer.invoke(deviceConfig, cameraTimer);
|
||||||
|
continue;
|
||||||
|
case "GnssPositioningMode":
|
||||||
|
GnssPositioningMode gnssPositioningMode = new GnssPositioningMode();
|
||||||
|
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);
|
||||||
|
methodForGnssPositioningMode.invoke(deviceConfig, gnssPositioningMode);
|
||||||
continue;
|
continue;
|
||||||
default:
|
default:
|
||||||
System.err.println(field.getGenericType().getTypeName());
|
System.err.println(field.getGenericType().getTypeName());
|
||||||
|
|||||||
@@ -0,0 +1,115 @@
|
|||||||
|
package com.genersoft.iot.vmp.jt1078.proc.response;
|
||||||
|
|
||||||
|
import com.genersoft.iot.vmp.jt1078.annotation.MsgId;
|
||||||
|
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.*;
|
||||||
|
import io.netty.buffer.ByteBuf;
|
||||||
|
import io.netty.buffer.Unpooled;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.nio.charset.Charset;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询指定终端参数
|
||||||
|
*/
|
||||||
|
@MsgId(id = "8106")
|
||||||
|
public class J8103 extends Rs {
|
||||||
|
|
||||||
|
private JTDeviceConfig config;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ByteBuf encode() {
|
||||||
|
ByteBuf buffer = Unpooled.buffer();
|
||||||
|
Class<? extends JTDeviceConfig> configClass = config.getClass();
|
||||||
|
Field[] declaredFields = configClass.getDeclaredFields();
|
||||||
|
Map<Field, ConfigAttribute> fieldConfigAttributeMap = new HashMap<>();
|
||||||
|
for (Field field : declaredFields) {
|
||||||
|
try{
|
||||||
|
Method method = configClass.getDeclaredMethod("get" + StringUtils.capitalize(field.getName()), String.class);
|
||||||
|
Object invoke = method.invoke(config);
|
||||||
|
if (invoke == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
ConfigAttribute configAttribute = field.getAnnotation(ConfigAttribute.class);
|
||||||
|
if (configAttribute != null) {
|
||||||
|
fieldConfigAttributeMap.put(field, configAttribute);
|
||||||
|
}
|
||||||
|
}catch (InvocationTargetException | NoSuchMethodException | IllegalAccessException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
buffer.writeByte(fieldConfigAttributeMap.size());
|
||||||
|
|
||||||
|
if (!fieldConfigAttributeMap.isEmpty()) {
|
||||||
|
for (Field field : fieldConfigAttributeMap.keySet()) {
|
||||||
|
try{
|
||||||
|
ConfigAttribute configAttribute = fieldConfigAttributeMap.get(field);
|
||||||
|
buffer.writeLong(configAttribute.id());
|
||||||
|
switch (configAttribute.type()) {
|
||||||
|
case "Long":
|
||||||
|
buffer.writeByte(4);
|
||||||
|
field.setAccessible(true);
|
||||||
|
Long longval = (Long)field.get(config);
|
||||||
|
buffer.writeLong(longval);
|
||||||
|
continue;
|
||||||
|
case "String":
|
||||||
|
field.setAccessible(true);
|
||||||
|
String stringVal = (String)field.get(config);
|
||||||
|
buffer.writeByte(stringVal.getBytes().length);
|
||||||
|
buffer.writeBytes(stringVal.getBytes());
|
||||||
|
continue;
|
||||||
|
case "Integer":
|
||||||
|
buffer.writeByte(2);
|
||||||
|
field.setAccessible(true);
|
||||||
|
Integer integerVal = (Integer)field.get(config);
|
||||||
|
buffer.writeInt(integerVal);
|
||||||
|
continue;
|
||||||
|
case "Short":
|
||||||
|
buffer.writeByte(1);
|
||||||
|
field.setAccessible(true);
|
||||||
|
Short shortVal = (Short)field.get(config);
|
||||||
|
buffer.writeShort(shortVal);
|
||||||
|
continue;
|
||||||
|
case "IllegalDrivingPeriods":
|
||||||
|
case "CollisionAlarmParams":
|
||||||
|
case "CameraTimer":
|
||||||
|
case "GnssPositioningMode":
|
||||||
|
field.setAccessible(true);
|
||||||
|
JTDeviceSubConfig subConfig = (JTDeviceSubConfig)field.get(config);
|
||||||
|
byte[] bytesForIllegalDrivingPeriods = subConfig.encode();
|
||||||
|
buffer.writeByte(bytesForIllegalDrivingPeriods.length);
|
||||||
|
buffer.writeBytes(bytesForIllegalDrivingPeriods);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public JTDeviceConfig getConfig() {
|
||||||
|
return config;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setConfig(JTDeviceConfig config) {
|
||||||
|
this.config = config;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "J8103{" +
|
||||||
|
"config=" + config +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user