diff --git a/src/main/java/a8k/app/service/lis/BiLisDoubleTrackChannel.java b/src/main/java/a8k/app/service/lis/BiLisDoubleTrackChannel.java index ecf212a..d099969 100644 --- a/src/main/java/a8k/app/service/lis/BiLisDoubleTrackChannel.java +++ b/src/main/java/a8k/app/service/lis/BiLisDoubleTrackChannel.java @@ -83,7 +83,6 @@ public class BiLisDoubleTrackChannel { } synchronized public boolean ping() { - /* * 设备探测协议 * 1. 发送ENQ(0x05)到服务器 @@ -91,22 +90,20 @@ public class BiLisDoubleTrackChannel { * 3. 如果收到ACK,发送ACK(0x06)作为确认 */ - if (!isChannelReady()) { + if (!isChannelReady()) return false; - } synchronized (rxBuffer) { rxBuffer.clear(); } txBytes(new byte[]{BiLisDoubleTrackFrame.ENQ}); - boolean rxAckOrNak = ThreadUtils.waitingForSomeCondition("BiLisDoubleTrackChannel.rx", + boolean rxAckOrNak = ThreadUtils.waitingForSomeCondition("BiLisDoubleTrackChannel.rx", 100, 2000, () -> { synchronized (rxBuffer) { return rxBuffer.readableBytes() == 1 && (rxBuffer.getByte(0) == BiLisDoubleTrackFrame.ACK || rxBuffer.getByte(0) == BiLisDoubleTrackFrame.NAK); } - }, - 100, 2000); + }); if (rxAckOrNak) { txBytes(new byte[]{BiLisDoubleTrackFrame.ACK}); @@ -123,8 +120,6 @@ public class BiLisDoubleTrackChannel { // * RX: // */ // - // - // // } diff --git a/src/main/java/a8k/app/service/lis/LisCommunicationService.java b/src/main/java/a8k/app/service/lis/LisCommunicationService.java index 8bb21aa..461cc12 100644 --- a/src/main/java/a8k/app/service/lis/LisCommunicationService.java +++ b/src/main/java/a8k/app/service/lis/LisCommunicationService.java @@ -11,6 +11,7 @@ import a8k.app.utils.ZJsonHelper; import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component @@ -21,26 +22,29 @@ public class LisCommunicationService { private final LisUartChannel lisUartChannel; private LISSetting setting; - BiLisSingleTrackChannel boditechLisSingleTrackChannel; + @Value("${lis.enable}") + public Boolean lisEnable = true; + BiLisSingleTrackChannel boditechLisSingleTrackChannel; public void updateLisSetting(LISSetting lisSetting) { + if (!lisEnable) { + log.warn("LIS communication is disabled by configuration, ignore updateLisSetting"); + return; + } + log.info("updateLisSetting: {}", ZJsonHelper.objToPrettyJson(lisSetting)); setting = lisSetting; doUpdateLisSetting(); } public String getProtocolDetail() { - if (isChannelEq(LISProtocolEnum.Boditech, LISDirectionTypeEnum.SINGLE_TRACK, LISIFType.SERIAL)) { return String.format("%s.%s.%s,baudrate:%s", setting.lisProtocol, setting.lisType, setting.lisIf, setting.lisSerialBaudrate.baudrate); - } - else if (isChannelEq(LISProtocolEnum.Boditech, LISDirectionTypeEnum.SINGLE_TRACK, LISIFType.NETWORK)) { + } else if (isChannelEq(LISProtocolEnum.Boditech, LISDirectionTypeEnum.SINGLE_TRACK, LISIFType.NETWORK)) { return String.format("%s.%s.%s,ip:%s,port:%d", setting.lisProtocol, setting.lisType, setting.lisIf, setting.lisNetIp, setting.lisNetPort); } else { return String.format("%s.%s.%s", setting.lisProtocol, setting.lisType, setting.lisIf); } - - } public Boolean getConnectionState() { @@ -64,6 +68,10 @@ public class LisCommunicationService { @PostConstruct public void init() { log.info("LisCommunicationService init"); + if (!lisEnable) { + log.warn("LIS communication is disabled by configuration."); + return; + } setting = appSettingsMgrService.getLISSetting(); doUpdateLisSetting(); } diff --git a/src/main/java/a8k/app/utils/ThreadUtils.java b/src/main/java/a8k/app/utils/ThreadUtils.java index 1f7350b..dbb5bc5 100644 --- a/src/main/java/a8k/app/utils/ThreadUtils.java +++ b/src/main/java/a8k/app/utils/ThreadUtils.java @@ -52,7 +52,7 @@ public class ThreadUtils { } } - static public boolean waitingForSomeCondition(String conditionName, ConditionListener condition, long retryIntervalMillis, long timeoutMillis) { + static public boolean waitingForSomeCondition(String conditionName,long retryIntervalMillis, long timeoutMillis, ConditionListener condition ) { long startTime = System.currentTimeMillis(); while (System.currentTimeMillis() - startTime < timeoutMillis) { if (condition.isConditionMet()) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 2b0673a..d6df058 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -3,6 +3,7 @@ server.port: 80 iflytophald.ip: 127.0.0.1 iflytophald.enable: false device.runmode: "VirtualStateGenerateMode" +lis.enable: false #PC调试 #server.port: 80