@Override
        public void run() {
            myThread = Thread.currentThread();
            log.debug("SystemThread: thread starting");
            watchdog.start();

            synchronized (this) {
                state = recalcMode();

                // Bring up the OCP Links
                for (Link link : links) {
                    link.linkManager.connect(watchdog);
                }

                while (true) {
                    watchdog.pat();
                    internalRun();

                    if (shutdownThread) {
                        break;
                    }

                    try {
                        this.wait(1 * MILLISECONDS);
                    } catch (InterruptedException e) { // CSIGNORE: EmptyBlock
                    }
                }

                log.debug("SystemThread: shutting down");
                // Shutdown the OCP links
                for (Link link : links) {
                    link.linkManager.disconnect();
                }
            }
            watchdog.stop();
            log.debug("SystemThread: thread exiting");
        }