package com.zd.laboratory.socket.service.impl;


import com.zd.laboratory.socket.constant.JXCTPacket;
import com.zd.laboratory.socket.exception.AnalysisException;
import com.zd.laboratory.socket.service.BaseRouter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

/**
 * @author liubo
 * 继电器互斥指令返回（12条）（功能码：0x06）
 */
@Service
public class MutexResult implements BaseRouter {
    private static Logger log = LoggerFactory.getLogger(MutexResult.class);

    public MutexResult() {
        routerMap.put("06", this);
    }

    @Override
    public String routePacket(JXCTPacket tracketPacket) throws AnalysisException {

        //指令1字节
        String command = tracketPacket.body.substring(0, 2);
        if ("00".equals(command) || "01".equals(command)) {// 互斥配置指令返回
//            互斥条序号，1字节，（0-11，12代表保存的所有互斥关系）
            String position = tracketPacket.body.substring(4, 6);
            //配置互斥反馈的标志，1字节，（0-操作成功，1-操作失败）
            String result = tracketPacket.body.substring(6, 8);
            log.info(tracketPacket.deviceNumber + "互斥配置指令结果：" + result);
        } else if ("02".equals(command)) {//发送的指令字为0x02（问询），非全部问询时，有下述指令返回
            for (int i = 0; i < (tracketPacket.body.length() - 2) / 6; i++) {
                //联动条序号，1字节，（0-5，6代表保存的所有联动关系）
                String positoin = tracketPacket.body.substring(2 + i * 2, 4 + i * 2);
                //继电器位号，2字节
                String result = tracketPacket.body.substring(4 + i * 2, 8 + i * 2);
                log.info(tracketPacket.deviceNumber + " 继电器:" + positoin + " 互斥配置结果:" + result);
            }
        }

        return null;
    }
}
