package org.yzh.protocol.commons.transform.parameter; import io.github.yezhihao.protostar.Schema; import io.github.yezhihao.protostar.annotation.Field; import io.github.yezhihao.protostar.util.ByteBufUtils; import io.netty.buffer.ByteBuf; import java.nio.charset.StandardCharsets; /** * 胎压监测系统参数 * @author yezhihao * https://gitee.com/yezhihao/jt808-server */ public class ParamTPMS { public static final Integer key = 0xF366; public static final Schema SCHEMA = new ParamTPMSSchema(); @Field(desc = "轮胎规格型号(例:195/65R1591V,12个字符,默认值'900R20')") private String tireType; @Field(desc = "胎压单位:0.kg/cm2 1.bar 2.Kpa 3.PSI(默认值3)") private int pressureUnit = -1; @Field(desc = "正常胎压值(同胎压单位,默认值140)") private int normalValue = -1; @Field(desc = "胎压不平衡报警阈值(百分比0~100,达到冷态气压值,默认值20)") private int imbalanceThreshold = -1; @Field(desc = "慢漏气报警阈值(百分比0~100,达到冷态气压值,默认值5)") private int lowLeakThreshold = -1; @Field(desc = "低压报警阈值(同胎压单位,默认值110)") private int lowPressureThreshold = -1; @Field(desc = "高压报警阈值(同胎压单位,默认值189)") private int highPressureThreshold = -1; @Field(desc = "高温报警阈值(摄氏度,默认值80)") private int highTemperatureThreshold = -1; @Field(desc = "电压报警阈值(百分比0~100,默认值10)") private int voltageThreshold = -1; @Field(desc = "定时上报时间间隔(秒,取值0~3600,默认值60,0表示不上报)") private int reportInterval = -1; @Field(desc = "保留项") private byte[] reserved = new byte[6]; public String getTireType() { return tireType; } public void setTireType(String tireType) { this.tireType = tireType; } public int getPressureUnit() { return pressureUnit; } public void setPressureUnit(int pressureUnit) { this.pressureUnit = pressureUnit; } public int getNormalValue() { return normalValue; } public void setNormalValue(int normalValue) { this.normalValue = normalValue; } public int getImbalanceThreshold() { return imbalanceThreshold; } public void setImbalanceThreshold(int imbalanceThreshold) { this.imbalanceThreshold = imbalanceThreshold; } public int getLowLeakThreshold() { return lowLeakThreshold; } public void setLowLeakThreshold(int lowLeakThreshold) { this.lowLeakThreshold = lowLeakThreshold; } public int getLowPressureThreshold() { return lowPressureThreshold; } public void setLowPressureThreshold(int lowPressureThreshold) { this.lowPressureThreshold = lowPressureThreshold; } public int getHighPressureThreshold() { return highPressureThreshold; } public void setHighPressureThreshold(int highPressureThreshold) { this.highPressureThreshold = highPressureThreshold; } public int getHighTemperatureThreshold() { return highTemperatureThreshold; } public void setHighTemperatureThreshold(int highTemperatureThreshold) { this.highTemperatureThreshold = highTemperatureThreshold; } public int getVoltageThreshold() { return voltageThreshold; } public void setVoltageThreshold(int voltageThreshold) { this.voltageThreshold = voltageThreshold; } public int getReportInterval() { return reportInterval; } public void setReportInterval(int reportInterval) { this.reportInterval = reportInterval; } public byte[] getReserved() { return reserved; } public void setReserved(byte[] reserved) { this.reserved = reserved; } private static class ParamTPMSSchema implements Schema { private ParamTPMSSchema() { } @Override public ParamTPMS readFrom(ByteBuf input) { ParamTPMS message = new ParamTPMS(); message.tireType = input.readCharSequence(12, StandardCharsets.US_ASCII).toString(); message.pressureUnit = input.readShort(); message.normalValue = input.readShort(); message.imbalanceThreshold = input.readShort(); message.lowLeakThreshold = input.readShort(); message.lowPressureThreshold = input.readShort(); message.highPressureThreshold = input.readShort(); message.highTemperatureThreshold = input.readShort(); message.voltageThreshold = input.readShort(); message.reportInterval = input.readShort(); input.readBytes(message.reserved); return message; } @Override public void writeTo(ByteBuf output, ParamTPMS message) { byte[] bytes = message.getTireType().getBytes(StandardCharsets.US_ASCII); ByteBufUtils.writeFixedLength(output, 12, bytes); output.writeShort(message.pressureUnit); output.writeShort(message.normalValue); output.writeShort(message.imbalanceThreshold); output.writeShort(message.lowLeakThreshold); output.writeShort(message.lowPressureThreshold); output.writeShort(message.highPressureThreshold); output.writeShort(message.highTemperatureThreshold); output.writeShort(message.voltageThreshold); output.writeShort(message.reportInterval); ByteBufUtils.writeFixedLength(output, 6, message.getReserved()); } } }