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: BatteryFaultData
 * @Description: 电池故障包
 * @date 2022/11/14
 **/
@Data
public class BatteryFaultData extends RequestData {

    /***预留字段1*/
    private byte reserved1;

    /***电芯温差异常*/
    private byte fault1;

    /***电芯温度过高报警*/
    private byte fault2;

    /*** pack过压报警*/
    private byte fault3;

    /*** pack欠压报警*/
    private byte fault4;

    /*** SOC过低报警*/
    private byte fault5;

    /*** 单体电压过高报警*/
    private byte fault6;

    /*** 单体电压欠压报警*/
    private byte fault7;

    /*** 绝缘报警 */
    private byte fault8;

    /*** 电池一致性差报警 */
    private byte fault9;

    /*** 车载储能装置过充报警 */
    private byte fault10;

    /*** soc过高报警 */
    private byte fault11;

    /*** soc跳变报警 */
    private byte fault12;

    /*** 充电储能系统不匹配报警 */
    private byte fault13;

    /*** 高压互锁报警*/
    private byte fault14;

    /*** GBT32960.3中规定的故障数目 */
    private byte fault15;

    /*** 备用字段 */
    private int reserved2;

    /*** bms故障数目 */
    private byte fault16;

    /*** 电芯过放故障数*/
    private byte fault17;

    /*** 电芯低温报警*/
    private byte fault18;

    /*** 放电电流超限*/
    private byte fault19;

    /*** 回冲电流超限*/
    private byte fault20;

    /*** 电流传感器*/
    private byte fault21;

    /*** 低压供电异常*/
    private byte fault22;

    /*** 热管理机组故障*/
    private byte fault23;

    /*** 加热膜加热回路故障*/
    private byte fault24;

    /*** 电池包自保护故障*/
    private byte fault25;

    /*** 主回路预充(预检)故障*/
    private byte fault26;

    /*** 辅回路预充(预检)故障*/
    private byte fault27;

    /*** 绝缘阻值低故障*/
    private byte fault28;

    /*** ACAN 通讯故障*/
    private byte fault29;

    /*** bms内部通讯故障*/
    private byte fault30;

    /*** bms dc故障*/
    private byte fault31;

    /*** 支路断路故障 */
    private byte fault32;

    /***加热膜或TMS接触器故障无法闭合报警 */
    private byte fault33;

    /***加热膜或TMS接触器故障无法断开报警 */
    private byte fault34;

    /***主正接触器故障无法闭合报警 */
    private byte fault35;

    /***主正接触器故障无法闭合报警 */
    private byte fault36;

    /***主正接触器故障无法断开报警 */
    private byte fault37;

    /***主正接触器故障无法闭合报警 */
    private byte fault38;

    /***主正接触器故障无法闭合报警 */
    private byte fault39;

    /**直流充电 A正接触器无法闭合故障报警*/
    private byte fault40;

    /**直流充电 A正接触器无法断开故障报警*/
    private byte fault41;

    /**直流充电 A负接触器无法闭合故障报警*/
    private byte fault42;

    /**直流充电 A负接触器无法断开故障报警*/
    private byte fault43;

    /**直流充电 B正接触器无法闭合故障报警*/
    private byte fault44;

    /**直流充电 B正接触器无法断开故障报警*/
    private byte fault45;

    /**直流充电 B正接触器无法断开故障报警*/
    private byte fault46;

    /**直流充电 B负接触器无法闭合故障报警*/
    private byte fault47;

    /**直流充电 B负接触器无法断开故障报警*/
    private byte fault48;

    /**交流充电正接触器无法闭合故障报警*/
    private byte fault49;

    /**交流充电正接触器无法断开故障报警*/
    private byte fault50;

    /**交流充电负接触器无法闭合故障报警*/
    private byte fault51;

    /**交流充电负接触器无法断开故障报警*/
    private byte fault52;

    /**集电弓正接触器无法闭合故障报警*/
    private byte fault53;

    /**集电弓正接触器无法断开故障报警*/
    private byte fault54;

    /**集电弓负接触器无法闭合故障报警*/
    private byte fault55;

    /**集电弓负接触器无法断开故障报警*/
    private byte fault56;

    /**插枪连接信号异常*/
    private byte fault57;

    /**充电时放电电流过大*/
    private byte fault58;

    /**充电电流超限报警*/
    private byte fault59;

    /**充电插座NTC故障*/
    private byte fault60;

    /**充电插座过温报警*/
    private byte fault61;

    /**电子锁故障*/
    private byte fault62;

    /**火警探测器故障*/
    private byte fault63;

    /**持续回充过流故障*/
    private byte fault64;

    /**SOC差异过大*/
    private byte fault65;

    /**持续放电过流故障*/
    private byte fault66;

    /**预留故障 1*/
    private byte fault67;

    /**预留故障 2*/
    private byte fault68;

    /**预留故障 3*/
    private byte fault69;

    /***
     * 子类编码
     * @param byteBuf
     */
    @Override
    protected void encodeInternal(ByteBuf byteBuf)
    {
        byteBuf.writeByte(getReserved1());
        byteBuf.writeByte(getFault1());
        byteBuf.writeByte(getFault2());
        byteBuf.writeByte(getFault3());
        byteBuf.writeByte(getFault4());
        byteBuf.writeByte(getFault5());
        byteBuf.writeByte(getFault6());
        byteBuf.writeByte(getFault7());
        byteBuf.writeByte(getFault8());
        byteBuf.writeByte(getFault9());
        byteBuf.writeByte(getFault10());
        byteBuf.writeByte(getFault11());
        byteBuf.writeByte(getFault12());
        byteBuf.writeByte(getFault13());
        byteBuf.writeByte(getFault14());
        byteBuf.writeByte(getFault15());
        byteBuf.writeInt(getReserved2());
        byteBuf.writeByte(getFault16());
        byteBuf.writeByte(getFault17());
        byteBuf.writeByte(getFault18());
        byteBuf.writeByte(getFault19());
        byteBuf.writeByte(getFault20());
        byteBuf.writeByte(getFault21());
        byteBuf.writeByte(getFault22());
        byteBuf.writeByte(getFault23());
        byteBuf.writeByte(getFault24());
        byteBuf.writeByte(getFault25());
        byteBuf.writeByte(getFault26());
        byteBuf.writeByte(getFault26());
        byteBuf.writeByte(getFault27());
        byteBuf.writeByte(getFault28());
        byteBuf.writeByte(getFault29());
        byteBuf.writeByte(getFault30());
        byteBuf.writeByte(getFault31());
        byteBuf.writeByte(getFault32());
        byteBuf.writeByte(getFault33());
        byteBuf.writeByte(getFault34());
        byteBuf.writeByte(getFault35());
        byteBuf.writeByte(getFault36());
        byteBuf.writeByte(getFault37());
        byteBuf.writeByte(getFault38());
        byteBuf.writeByte(getFault39());
        byteBuf.writeByte(getFault40());
        byteBuf.writeByte(getFault41());
        byteBuf.writeByte(getFault42());
        byteBuf.writeByte(getFault43());
        byteBuf.writeByte(getFault44());
        byteBuf.writeByte(getFault45());
        byteBuf.writeByte(getFault46());
        byteBuf.writeByte(getFault47());
        byteBuf.writeByte(getFault48());
        byteBuf.writeByte(getFault49());
        byteBuf.writeByte(getFault50());
        byteBuf.writeByte(getFault51());
        byteBuf.writeByte(getFault52());
        byteBuf.writeByte(getFault53());
        byteBuf.writeByte(getFault54());
        byteBuf.writeByte(getFault55());
        byteBuf.writeByte(getFault56());
        byteBuf.writeByte(getFault57());
        byteBuf.writeByte(getFault58());
        byteBuf.writeByte(getFault59());
        byteBuf.writeByte(getFault60());
        byteBuf.writeByte(getFault61());
        byteBuf.writeByte(getFault62());
        byteBuf.writeByte(getFault63());
        byteBuf.writeByte(getFault64());
        byteBuf.writeByte(getFault65());
        byteBuf.writeByte(getFault66());
        byteBuf.writeByte(getFault67());
        byteBuf.writeByte(getFault68());
        byteBuf.writeByte(getFault69());
    }

    /**
     * 子类解码
     *
     * @param byteBuf
     */
    @Override
    protected void decodeInternal(ByteBuf byteBuf)
    {
        setReserved1(byteBuf.readByte());
        setFault1(byteBuf.readByte());
        setFault2(byteBuf.readByte());
        setFault3(byteBuf.readByte());
        setFault4(byteBuf.readByte());
        setFault5(byteBuf.readByte());
        setFault6(byteBuf.readByte());
        setFault7(byteBuf.readByte());
        setFault8(byteBuf.readByte());
        setFault9(byteBuf.readByte());
        setFault10(byteBuf.readByte());
        setFault11(byteBuf.readByte());
        setFault12(byteBuf.readByte());
        setFault13(byteBuf.readByte());
        setFault14(byteBuf.readByte());
        setFault15(byteBuf.readByte());
        setReserved2(byteBuf.readInt());
        setFault16(byteBuf.readByte());
        setFault17(byteBuf.readByte());
        setFault18(byteBuf.readByte());
        setFault19(byteBuf.readByte());
        setFault20(byteBuf.readByte());
        setFault21(byteBuf.readByte());
        setFault22(byteBuf.readByte());
        setFault23(byteBuf.readByte());
        setFault24(byteBuf.readByte());
        setFault25(byteBuf.readByte());
        setFault26(byteBuf.readByte());
        setFault26(byteBuf.readByte());
        setFault27(byteBuf.readByte());
        setFault28(byteBuf.readByte());
        setFault29(byteBuf.readByte());
        setFault30(byteBuf.readByte());
        setFault31(byteBuf.readByte());
        setFault32(byteBuf.readByte());
        setFault33(byteBuf.readByte());
        setFault34(byteBuf.readByte());
        setFault35(byteBuf.readByte());
        setFault36(byteBuf.readByte());
        setFault37(byteBuf.readByte());
        setFault38(byteBuf.readByte());
        setFault39(byteBuf.readByte());
        setFault40(byteBuf.readByte());
        setFault41(byteBuf.readByte());
        setFault42(byteBuf.readByte());
        setFault43(byteBuf.readByte());
        setFault44(byteBuf.readByte());
        setFault45(byteBuf.readByte());
        setFault46(byteBuf.readByte());
        setFault47(byteBuf.readByte());
        setFault48(byteBuf.readByte());
        setFault49(byteBuf.readByte());
        setFault50(byteBuf.readByte());
        setFault51(byteBuf.readByte());
        setFault52(byteBuf.readByte());
        setFault53(byteBuf.readByte());
        setFault54(byteBuf.readByte());
        setFault55(byteBuf.readByte());
        setFault56(byteBuf.readByte());
        setFault57(byteBuf.readByte());
        setFault58(byteBuf.readByte());
        setFault59(byteBuf.readByte());
        setFault60(byteBuf.readByte());
        setFault61(byteBuf.readByte());
        setFault62(byteBuf.readByte());
        setFault63(byteBuf.readByte());
        setFault64(byteBuf.readByte());
        setFault65(byteBuf.readByte());
        setFault66(byteBuf.readByte());
        setFault67(byteBuf.readByte());
        setFault68(byteBuf.readByte());
        setFault69(byteBuf.readByte());
    }
}
