package org.yzh.protocol.commons.transform.attribute; import io.github.yezhihao.protostar.annotation.Field; import java.time.LocalDateTime; import java.util.List; /** * 轮胎气压监测系统 0x66 */ public class AlarmTPMS extends Alarm { public static final Integer key = 102; @Field(length = 4, desc = "报警ID") private long id; @Field(length = 1, desc = "标志状态") private int state; @Field(length = 1, desc = "车速") private int speed; @Field(length = 2, desc = "高程") private int altitude; @Field(length = 4, desc = "纬度") private int latitude; @Field(length = 4, desc = "经度") private int longitude; @Field(length = 6, charset = "BCD", desc = "日期时间") private LocalDateTime alarmTime; @Field(length = 2, desc = "车辆状态") private int statusBit; @Field(length = 7, desc = "终端ID", version = {-1, 0}) @Field(length = 30, desc = "终端ID(粤标)", version = 1) private String deviceId; @Field(length = 6, charset = "BCD", desc = "时间(YYMMDDHHMMSS)") private LocalDateTime dateTime; @Field(length = 1, desc = "序号(同一时间点报警的序号,从0循环累加)") private int sequenceNo; @Field(length = 1, desc = "附件数量") private int fileTotal; @Field(length = 1, desc = "预留", version = {-1, 0}) @Field(length = 2, desc = "预留(粤标)", version = 1) private int reserved; @Field(totalUnit = 1, desc = "事件信息列表") private List items; @Override public int getSource() { return 1; } @Override public int getCategory() { return key; } @Override public int getAlarmType() { return Alarm.buildType(key, 0); } @Override public int getLevel() { return 0; } @Override public String getExtra() { return null; } public long getId() { return id; } public void setId(long id) { this.id = id; } public int getState() { return state; } public void setState(int state) { this.state = state; } public int getSpeed() { return speed; } public void setSpeed(int speed) { this.speed = speed; } public int getAltitude() { return altitude; } public void setAltitude(int altitude) { this.altitude = altitude; } public int getLatitude() { return latitude; } public void setLatitude(int latitude) { this.latitude = latitude; } public int getLongitude() { return longitude; } public void setLongitude(int longitude) { this.longitude = longitude; } public LocalDateTime getAlarmTime() { return alarmTime; } public void setAlarmTime(LocalDateTime alarmTime) { this.alarmTime = alarmTime; } public int getStatusBit() { return statusBit; } public void setStatusBit(int statusBit) { this.statusBit = statusBit; } public String getDeviceId() { return deviceId; } public void setDeviceId(String deviceId) { this.deviceId = deviceId; } public LocalDateTime getDateTime() { return dateTime; } public void setDateTime(LocalDateTime dateTime) { this.dateTime = dateTime; } public int getSequenceNo() { return sequenceNo; } public void setSequenceNo(int sequenceNo) { this.sequenceNo = sequenceNo; } public int getFileTotal() { return fileTotal; } public void setFileTotal(int fileTotal) { this.fileTotal = fileTotal; } public int getReserved() { return reserved; } public void setReserved(int reserved) { this.reserved = reserved; } public List getItems() { return items; } public void setItems(List items) { this.items = items; } public static class Item { @Field(length = 1, desc = "胎压报警位置(从左前轮开始以Z字形从00依次编号,编号与是否安装TPMS无关)") private int position; @Field(length = 2, desc = "报警类型:" + " 0.胎压(定时上报)" + " 1.胎压过高报警" + " 2.胎压过低报警" + " 3.胎温过高报警" + " 4.传感器异常报警" + " 5.胎压不平衡报警" + " 6.慢漏气报警" + " 7.电池电量低报警" + " 8~31.预留") private int type; @Field(length = 2, desc = "胎压(Kpa)") private int pressure; @Field(length = 2, desc = "温度(℃)") private int temperature; @Field(length = 2, desc = "电池电量(%)") private int batteryLevel; public Item() { } public Item(int position, int type, int pressure, int temperature, int batteryLevel) { this.position = position; this.type = type; this.pressure = pressure; this.temperature = temperature; this.batteryLevel = batteryLevel; } public int getPosition() { return position; } public void setPosition(int position) { this.position = position; } public int getType() { return type; } public void setType(int type) { this.type = type; } public int getPressure() { return pressure; } public void setPressure(int pressure) { this.pressure = pressure; } public int getTemperature() { return temperature; } public void setTemperature(int temperature) { this.temperature = temperature; } public int getBatteryLevel() { return batteryLevel; } public void setBatteryLevel(int batteryLevel) { this.batteryLevel = batteryLevel; } @Override public String toString() { final StringBuilder sb = new StringBuilder("Item{"); sb.append("position=").append(position); sb.append(", type=").append(type); sb.append(", pressure=").append(pressure); sb.append(", temperature=").append(temperature); sb.append(", batteryLevel=").append(batteryLevel); sb.append('}'); return sb.toString(); } } @Override public String toString() { final StringBuilder sb = new StringBuilder(400); sb.append("AlarmTPMS{id=").append(id); sb.append(", state=").append(state); sb.append(", speed=").append(speed); sb.append(", altitude=").append(altitude); sb.append(", longitude=").append(longitude); sb.append(", latitude=").append(latitude); sb.append(", alarmTime=").append(alarmTime); sb.append(", statusBit=").append(statusBit); sb.append(", deviceId=").append(deviceId); sb.append(", dateTime=").append(dateTime); sb.append(", sequenceNo=").append(sequenceNo); sb.append(", fileTotal=").append(fileTotal); sb.append(", reserved=").append(reserved); sb.append(", items=").append(items); sb.append('}'); return sb.toString(); } }