| | |
| | | private boolean connected = false; |
| | | private DeviceConfig deviceConfig; |
| | | private ZyRgvConnectApi zyRgvConnectApi; |
| | | private volatile boolean closed = false; |
| | | private Thread selfThread; |
| | | |
| | | public ZyRgvConnectDriver(DeviceConfig deviceConfig) { |
| | | this.deviceConfig = deviceConfig; |
| | |
| | | @Override |
| | | @SuppressWarnings("InfiniteLoopStatement") |
| | | public void run() { |
| | | while (!Thread.currentThread().isInterrupted()) { |
| | | selfThread = Thread.currentThread(); |
| | | while (!closed && !Thread.currentThread().isInterrupted()) { |
| | | try { |
| | | if (!connected) { |
| | | connect(); |
| | | } |
| | | Thread.sleep(1000); |
| | | } catch (InterruptedException ie) { |
| | | Thread.currentThread().interrupt(); |
| | | break; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | |
| | | |
| | | @Override |
| | | public void close() { |
| | | zyRgvConnectApi.disconnect(); |
| | | zyRgvConnectApi = null; |
| | | closed = true; |
| | | Thread t = selfThread; |
| | | if (t != null) { |
| | | try { t.interrupt(); } catch (Exception ignore) {} |
| | | } |
| | | if (zyRgvConnectApi != null) { |
| | | zyRgvConnectApi.disconnect(); |
| | | zyRgvConnectApi = null; |
| | | } |
| | | connected = false; |
| | | } |
| | | |
| | | public void start() { |
| | | Thread t = new Thread(this); |
| | | t.start(); |
| | | } |
| | | |
| | | public ZyRgvStatusEntity getStatus() { |
| | |
| | | public CommandResponse sendCommand(RgvCommand command) { |
| | | return zyRgvConnectApi.sendCommand(command); |
| | | } |
| | | } |
| | | } |