anchor.diff:  (defun serial-log-clear()
     (setq *serial-log* nil))
   
  -(defun serial-log-search (key)
  +(defun serial-log-search (key &key timeout)
     (block log-search
       (loop for entry in *serial-log*
             do
             (when (search key entry :test #'char-equal)
               (return-from log-search entry))
  +          (when timeout
  +            (setq timeout (- timeout 1))
  +            (sleep 1)
  +            (if (<= timeout 0)
  +                (return-from log-search nil))
  +            )
             )))
   
   (defun serial-force-output (serial str)
  
positive.code:                     (format t "~%")
                      (funcall func serial str result fail-result)))) *list-command*)))
  
  (defun kill-input-thread()
    (let ((process-list (all-processes)))
      (loop for process in process-list
            do
               (when (search "Input Collect" (process-name process))
                 (process-kill process))
         )))
  
  (progn
    (kill-input-thread)
    (setq *serial-log* nil)
    (setq *serial-input-thread*  (process-run-function "Input Collect"
                                                       'serial-log-collect
                                                       *serial*))
    (sleep 1)
    (wait-shell *serial* "" 60)
    (loop (serial-loop *serial*)))
  
  ;;;;;TEST
  (serial-force-output *serial* "")
  (top-activity *serial*)
  
negative.code: (defun wdt-detect (serial str result fail-result)
    (when (search fail-result str :test #'char-equal)
      (setq *wdt-reset* t)
      (format t "wdt reset found~%"))
    (wait-shell serial "" 300))
  
  (defun shutdown-machine (serial)
    (format t "Now do reboot machine~%")
  