package com.pwt.netty.common.chargerold.client;

import com.pwt.netty.common.chargerold.RequestData;
import io.netty.buffer.ByteBuf;
import lombok.Data;

/***
 * @author linyun
 * @version V1.0
 * @Title: BmsStatusData
 * @Description: bms状态包
 * @date 2022/11/15
 **/
@Data
public class BmsStatusData extends RequestData {

    /**主正继电器状态(如继电器状态由BMS检测)*/
    private byte status1;

    /**主负继电器状态(如继电器状态由BMS检测)*/
    private byte status2;

    /**主回路预充或预检继电器状态(如继电器状态由BMS检测)*/
    private byte status3;

    /**直流充正继电器 1状态(如继电器状态由 BMS检测)*/
    private byte status4;

    /**直流充负继电器 1状态(如继电器状态由 BMS检测)*/
    private byte status5;

    /**直流充正继电器 2状态(如继电器状态由 BMS检测)*/
    private byte status6;

    /**直流充负继电器 2状态(如继电器状态由 BMS检测)*/
    private byte status7;

    /**加热正继电器状态(如继电器状态由BMS检测)*/
    private byte status8;

    /**加热负继电器状态(如继电器状态由BMS检测)*/
    private byte status9;

    /**集电弓正继电器状态(如继电器状态由 BMS检测)*/
    private byte status10;

    /**集电弓负继电器状态(如继电器状态由 BMS检测)*/
    private byte status11;

    /**交流正继电器状态(如继电器状态由BMS检测)*/
    private byte status12;

    /**交流负继电器状态(如继电器状态由BMS检测)*/
    private byte status13;

    /**附件 1继电器状态(如继电器状态由BMS检测)*/
    private byte status14;

    /**附件 2继电器状态(如继电器状态由BMS检测)*/
    private byte status15;

    /**附件 3继电器状态(如继电器状态由BMS检测)*/
    private byte status16;

    /**BMS当前高压状态*/
    private byte status17;

    /**BMS当前均衡状态*/
    private byte status18;

    /**直流充电枪连接状态*/
    private byte status19;

    /**集电弓充电枪连接状态*/
    private byte status20;

    /**交流充电枪连接状态*/
    private byte status21;

    /**BMS当前充电模式*/
    private byte status22;

    /**充电状态*/
    private byte status23;

    /**当前冷却状态*/
    private byte status24;

    /**电池包 SOCSOC*/
    private byte status25;

    /**电池包 SOHSOH*/
    private byte status26;

    /**电池包总电流，充电为负值，放电为正值*/
    private short status27;

    /**电池包内侧电压*/
    private short status28;

    /**故障码*/
    private byte status29;

    /**当前最高故障等级*/
    private byte status30;

    /**BMS下高压请求*/
    private byte status31;

    /**BMS生命信号*/
    private byte status32;

    /**BMS正极绝缘值*/
    private short status33;

    /**BMS负极绝缘值*/
    private short status34;

    /**BMS系统绝缘值*/
    private short status35;

    /**BMS绝缘检测状态*/
    private byte status36;

    /**备用*/
    private short reserved1;

    /**电芯温度最大值*/
    private byte status37;

    /**电芯温度最小值*/
    private byte status38;

    /**电芯温度平均值*/
    private byte status39;

    /**最高温度探针所在的CSC编号*/
    private byte status40;

    /**最高温度探针在系统中的位置*/
    private byte status41;

    /**最低温度探针所在的CSC编号*/
    private byte status42;

    /**最低温度探针在系统中的位置*/
    private byte status43;

    /**备用*/
    private short reserved2;

    /**电芯电压最大值*/
    private short status44;

    /**电芯电压最小值*/
    private short status45;

    /**电芯电压平均值*/
    private short status46;

    /**备用*/
    private short reserved3;

    /**最高电压电芯在的 CSC编号*/
    private byte status47;

    /**最高电压电芯在系统中的位置*/
    private short status48;

    /**最低电压电芯在的 CSC编号*/
    private byte status49;

    /**最低电压电芯在系统中的位置*/
    private short status50;

    /**备用*/
    private short reserved4;

    /**直流充电 A枪 DC+温度传感器温度（无该温度传感器发默认发 0xFF）*/
    private byte status51;

    /**直流充电 A枪 DC-温度传感器温度（无该温度传感器发默认发 0xFF）*/
    private byte status52;

    /**直流充电 B枪 DC+温度传感器温度（无该温度传感器发默认发 0xFF）*/
    private byte status53;

    /**直流充电 B枪 DC-温度传感器温度（无该温度传感器发默认发 0xFF）*/
    private byte status54;

    /**交流充电枪AC+温度传感器温度（若交流充电只有一个温度传感器，则默认为 AC+）*/
    private byte status55;

    /**交流充电枪AC-温度传感器温度（若交流充电只有一个温度传感器，则默认为 AC+）*/
    private byte status56;

    /**备用*/
    private short reserved5;

    /**备用*/
    private short reserved6;

    /***
     * 子类编码
     * @param byteBuf
     */
    @Override
    protected void encodeInternal(ByteBuf byteBuf)
    {
        byteBuf.writeByte(getStatus1());
        byteBuf.writeByte(getStatus2());
        byteBuf.writeByte(getStatus3());
        byteBuf.writeByte(getStatus4());
        byteBuf.writeByte(getStatus5());
        byteBuf.writeByte(getStatus6());
        byteBuf.writeByte(getStatus7());
        byteBuf.writeByte(getStatus8());
        byteBuf.writeByte(getStatus9());
        byteBuf.writeByte(getStatus10());
        byteBuf.writeByte(getStatus11());
        byteBuf.writeByte(getStatus12());
        byteBuf.writeByte(getStatus13());
        byteBuf.writeByte(getStatus14());
        byteBuf.writeByte(getStatus15());
        byteBuf.writeByte(getStatus16());
        byteBuf.writeByte(getStatus17());
        byteBuf.writeByte(getStatus18());
        byteBuf.writeByte(getStatus19());
        byteBuf.writeByte(getStatus20());
        byteBuf.writeByte(getStatus21());
        byteBuf.writeByte(getStatus22());
        byteBuf.writeByte(getStatus23());
        byteBuf.writeByte(getStatus24());
        byteBuf.writeByte(getStatus25());
        byteBuf.writeByte(getStatus26());
        byteBuf.writeShort(getStatus27());
        byteBuf.writeShort(getStatus28());
        byteBuf.writeByte(getStatus29());
        byteBuf.writeByte(getStatus30());
        byteBuf.writeByte(getStatus31());
        byteBuf.writeByte(getStatus32());
        byteBuf.writeShort(getStatus33());
        byteBuf.writeShort(getStatus34());
        byteBuf.writeShort(getStatus35());
        byteBuf.writeByte(getStatus36());
        byteBuf.writeShort(getReserved1());
        byteBuf.writeByte(getStatus37());
        byteBuf.writeByte(getStatus38());
        byteBuf.writeByte(getStatus39());
        byteBuf.writeByte(getStatus40());
        byteBuf.writeByte(getStatus41());
        byteBuf.writeByte(getStatus42());
        byteBuf.writeByte(getStatus43());
        byteBuf.writeShort(getReserved2());
        byteBuf.writeShort(getStatus44());
        byteBuf.writeShort(getStatus45());
        byteBuf.writeShort(getStatus46());
        byteBuf.writeShort(getReserved3());
        byteBuf.writeByte(getStatus47());
        byteBuf.writeShort(getStatus48());
        byteBuf.writeByte(getStatus49());
        byteBuf.writeShort(getStatus50());
        byteBuf.writeShort(getReserved4());
        byteBuf.writeByte(getStatus51());
        byteBuf.writeByte(getStatus52());
        byteBuf.writeByte(getStatus53());
        byteBuf.writeByte(getStatus54());
        byteBuf.writeByte(getStatus55());
        byteBuf.writeByte(getStatus56());
        byteBuf.writeShort(getReserved5());
        byteBuf.writeShort(getReserved6());
    }

    /**
     * 子类解码
     *
     * @param byteBuf
     */
    @Override
    protected void decodeInternal(ByteBuf byteBuf)
    {
        setStatus1(byteBuf.readByte());
        setStatus2(byteBuf.readByte());
        setStatus3(byteBuf.readByte());
        setStatus4(byteBuf.readByte());
        setStatus5(byteBuf.readByte());
        setStatus6(byteBuf.readByte());
        setStatus7(byteBuf.readByte());
        setStatus8(byteBuf.readByte());
        setStatus9(byteBuf.readByte());
        setStatus10(byteBuf.readByte());
        setStatus11(byteBuf.readByte());
        setStatus12(byteBuf.readByte());
        setStatus13(byteBuf.readByte());
        setStatus14(byteBuf.readByte());
        setStatus15(byteBuf.readByte());
        setStatus16(byteBuf.readByte());
        setStatus17(byteBuf.readByte());
        setStatus18(byteBuf.readByte());
        setStatus19(byteBuf.readByte());
        setStatus20(byteBuf.readByte());
        setStatus21(byteBuf.readByte());
        setStatus22(byteBuf.readByte());
        setStatus23(byteBuf.readByte());
        setStatus24(byteBuf.readByte());
        setStatus25(byteBuf.readByte());
        setStatus26(byteBuf.readByte());
        setStatus27(byteBuf.readShort());
        setStatus28(byteBuf.readShort());
        setStatus29(byteBuf.readByte());
        setStatus30(byteBuf.readByte());
        setStatus31(byteBuf.readByte());
        setStatus32(byteBuf.readByte());
        setStatus33(byteBuf.readShort());
        setStatus34(byteBuf.readShort());
        setStatus35(byteBuf.readShort());
        setStatus36(byteBuf.readByte());
        setReserved1(byteBuf.readShort());
        setStatus37(byteBuf.readByte());
        setStatus38(byteBuf.readByte());
        setStatus39(byteBuf.readByte());
        setStatus40(byteBuf.readByte());
        setStatus41(byteBuf.readByte());
        setStatus42(byteBuf.readByte());
        setStatus43(byteBuf.readByte());
        setReserved2(byteBuf.readShort());
        setStatus44(byteBuf.readShort());
        setStatus45(byteBuf.readShort());
        setStatus46(byteBuf.readShort());
        setReserved3(byteBuf.readShort());
        setStatus47(byteBuf.readByte());
        setStatus48(byteBuf.readShort());
        setStatus49(byteBuf.readByte());
        setStatus50(byteBuf.readShort());
        setReserved4(byteBuf.readShort());
        setStatus51(byteBuf.readByte());
        setStatus52(byteBuf.readByte());
        setStatus53(byteBuf.readByte());
        setStatus54(byteBuf.readByte());
        setStatus55(byteBuf.readByte());
        setStatus56(byteBuf.readByte());
        setReserved5(byteBuf.readShort());
        setReserved6(byteBuf.readShort());
    }
}
