diff --git a/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/deviceManager/thread/IosDeviceInitThread.java b/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/deviceManager/thread/IosDeviceInitThread.java index 77fafee..d9b7dc9 100644 --- a/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/deviceManager/thread/IosDeviceInitThread.java +++ b/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/deviceManager/thread/IosDeviceInitThread.java @@ -1,5 +1,6 @@ package net.northking.cctp.upperComputer.deviceManager.thread; +import net.northking.cctp.upperComputer.deviceManager.IOSDeviceManager; import net.northking.cctp.upperComputer.driver.ios.NKAgent; import net.northking.cctp.upperComputer.driver.usbmuxd.AppleDevice; import net.northking.cctp.upperComputer.entity.PhoneEntity; @@ -35,33 +36,39 @@ public abstract class IosDeviceInitThread extends Thread { protected void createNKAgent() { nkAgent = new NKAgent(this.appleDevice); boolean nkAgentReady = false; - int retryTime = 1; - while (!nkAgentReady && retryTime <= 5) { - logger.debug("尝试第{}次连接设备【{}】的nkAgent",retryTime,phone.getUdid()); + int reTryTime = 1; + do { + logger.debug("尝试第{}次连接设备【{}】的nkAgent", reTryTime, phone.getUdid()); try { nkAgent.connect(); - nkAgentReady = true; - nkAgent.setOnDisconnectListener(()->{ - logger.warn("设备【{}】的nkAgent失效了,需要重新创建...........",phone.getUdid()); - createNKAgent(); - }); - logger.debug("设备【{}】的nkAgent连接成功",phone.getUdid()); - logger.debug("设备【{}】的帧数",phone.getUdid()); - nkAgent.setMJPEGServerRate(60); + nkAgentReady = nkAgent.getStatus(); + logger.debug("设备【{}】的nkAgent连接完成,结果:{}", phone.getUdid(),nkAgentReady); + if (nkAgentReady) { + logger.debug("设置设备【{}】的帧数为:{}", phone.getUdid(), 25); + nkAgent.setMJPEGServerRate(25); + } else { + logger.error("第{}次连接设备【{}】的agent不成功,等待下一次......",reTryTime, phone.getUdid()); + } } catch (IOException e) { - logger.error("无法连接设备【{}】的agent",phone.getUdid(),e); + logger.error("第{}次连接设备【{}】的agent出错",reTryTime, phone.getUdid(), e); try { Thread.sleep(3000); } catch (InterruptedException ex) { - ex.printStackTrace(); + break; } } - retryTime++; - } + reTryTime++; + } while (!nkAgentReady && reTryTime <= 5); if (!nkAgentReady) { throw new ExecuteException(String.format("无法创建设备【%s】nkAgent", phone.getUdid())); } - + logger.debug("设置设备【{}】的nkAgent掉线之后的监听器................", phone.getUdid()); + nkAgent.setOnDisconnectListener(() -> { + logger.warn("设备【{}】的nkAgent失效了,需要重新创建...........", phone.getUdid()); + IOSDeviceManager.getInstance().getIosInitThread(phone.getUdid()).createNKAgent(); + logger.warn("设备【{}】的nkAgent重新创建完成...........", phone.getUdid()); + }); + logger.debug("设备【{}】的nkAgent连接完毕................", phone.getUdid()); } public NKAgent getNkAgent() { diff --git a/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/driver/ios/NKAgent.java b/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/driver/ios/NKAgent.java index 49e425b..dd09611 100644 --- a/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/driver/ios/NKAgent.java +++ b/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/driver/ios/NKAgent.java @@ -10,12 +10,16 @@ import net.northking.cctp.upperComputer.driver.ios.command.listener.ScreenInfoDa import net.northking.cctp.upperComputer.driver.ios.packet.*; import net.northking.cctp.upperComputer.driver.usbmuxd.AppleDevice; import net.northking.cctp.upperComputer.driver.usbmuxd.UsbMuxd; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.ArrayList; public final class NKAgent { + private final static Logger logger = LoggerFactory.getLogger(NKAgent.class); + public static final int PORT = 50001; private final DeviceSocketProvider deviceSocketProvider; @@ -44,9 +48,10 @@ public final class NKAgent { } public void connect() throws IOException { - System.out.println("NKAgent connect"); + logger.debug("开始连接设备【{}】的nkAgent........",getUUID()); initTransfer(); initAsyncListener(); + logger.debug("设备【{}】连接结果:{}........",getUUID(),packetTransfer.isConnected()); } @@ -208,6 +213,10 @@ public final class NKAgent { packet.fillICommandData(bool); return bool.isSuccess(); } + + public boolean getStatus() { + return this.packetTransfer.isConnected(); + } // // public boolean clickUiNode(SearchUiNodeData.SearchChain chain) { // return clickUiNode(chain.toSearchString(null)); diff --git a/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/driver/ios/packet/PacketTransfer.java b/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/driver/ios/packet/PacketTransfer.java index 83db856..acdafc3 100644 --- a/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/driver/ios/packet/PacketTransfer.java +++ b/cctp-atu/atu-upper-computer/src/main/java/net/northking/cctp/upperComputer/driver/ios/packet/PacketTransfer.java @@ -138,7 +138,7 @@ public class PacketTransfer { } public ICommandPacket syncSend(ICommandPacket sendPacket) { - logger.debug("connected = " + connected); + logger.debug("设备的nkAgent连接状态:connected = " + connected); if (!connected) return null; SendTarget sendTarget = new SendTarget(sendPacket, false); sendQueue.offer(sendTarget);