-Client optimizations
-Implemented comprehensize logging system


git-svn-id: https://robotics.mvla.net/svn/frc971/2013/trunk/src@4143 f308d9b7-e957-4cde-b6ac-9a88185e7312
diff --git a/971CV/src/org/frc971/VisionTuner.java b/971CV/src/org/frc971/VisionTuner.java
index c664391..4d062dc 100644
--- a/971CV/src/org/frc971/VisionTuner.java
+++ b/971CV/src/org/frc971/VisionTuner.java
@@ -3,7 +3,12 @@
 import java.awt.BorderLayout;

 import java.awt.GridLayout;

 import java.awt.event.KeyEvent;

+

 import java.util.Arrays;

+import java.util.logging.Level;

+import java.util.logging.Logger;

+

+import java.io.FileNotFoundException;

 

 import javax.swing.JPanel;

 import javax.swing.JSlider;

@@ -41,6 +46,8 @@
 public class VisionTuner {

     private Recognizer recognizer = new Recognizer2013();

 

+    private final static Logger LOG = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);

+    

     private final CanvasFrame cameraFrame = new CanvasFrame("Camera");

     private final JPanel panel = new JPanel();

     private final JSlider hueMinSlider = new JSlider();

@@ -56,6 +63,18 @@
     private TestImageGetter getter;

 

     public VisionTuner() {

+    	//set logger to log everything

+        LOG.setLevel(Level.ALL);

+        try {

+        	LogHandler handler = new LogHandler("../src/org/frc971/ds_vision.log");

+        	TimeFormatter formatter = new TimeFormatter();

+            handler.setFormatter(formatter);

+            LOG.addHandler(handler);

+        }

+        catch (FileNotFoundException e) {

+        	System.err.println("Warning: Logging initialization failed.");

+        }

+        

         cameraFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

 

         recognizer.showIntermediateStages(true);

@@ -66,7 +85,7 @@
         ChangeListener sliderListener = new ChangeListener() {

             @Override

             public void stateChanged(ChangeEvent e) {

-                System.out.println("New HSV range ["

+                LOG.fine("New HSV range ["

                         + hueMinSlider.getValue() + " .. "

                         + hueMaxSlider.getValue() + "] "

                         + satMinSlider.getValue() + "+ "

@@ -99,7 +118,7 @@
         valMinSlider.setValue(recognizer.getValMin());

         panel.add(valMinSlider);

 

-        System.out.println("Initial HSV range ["

+        LOG.fine("Initial HSV range ["

                 + hueMinSlider.getValue() + " .. "

                 + hueMaxSlider.getValue() + "] "

                 + satMinSlider.getValue() + "+ "

@@ -117,7 +136,7 @@
      */

 

     private void processImage(WPIColorImage cameraImage) {

-        cameraFrame.setTitle("Test Images:");

+        cameraFrame.setTitle("Input:");

 

         long startTime = System.nanoTime();

         WPIImage processedImage = recognizer.processImage(cameraImage);

@@ -130,9 +149,8 @@
             totalMsec += milliseconds;

             minMsec = Math.min(minMsec, milliseconds);

             maxMsec = Math.max(maxMsec, milliseconds);

-            System.out.format("The recognizer took %.2f ms, %.2f fps, %.2f avg%n",

-                    milliseconds, 1000 / milliseconds,

-                    1000 * totalFrames / totalMsec);

+            LOG.fine("The recognizer took " + milliseconds + " ms, " + 

+            (1000 * totalFrames / totalMsec) + " fps, %.2f avg");

         }

     }

 

@@ -159,11 +177,8 @@
             nextImage();

             break;

         case KeyEvent.VK_Q: // Q: print time measurements then quit

-            System.out.format("The recognizer took %.2f ms avg, %.2f min,"

-                    + " %.2f max, %.2f fps avg%n",

-                    totalMsec / totalFrames,

-                    minMsec, maxMsec,

-                    1000 * totalFrames / totalMsec);

+            LOG.fine("The recognizer took " + (totalMsec / totalFrames) + "ms avg, " + minMsec +" min,"

+                    + maxMsec + " max, " + (1000 * totalFrames / totalMsec) + " fps avg");

             System.exit(0);

         }

     }

@@ -174,13 +189,14 @@
         	//debug mode has been requested

         	tuner.getter = new TestImageGetter(".");

         	WPIColorImage to_process = tuner.getter.GetNext();

-        	if (to_process != null) 

+        	if (to_process != null) {

         		tuner.processImage(to_process);

+        		for (;;) {

+        			tuner.processEvents();

+        		}

+        	}

         	else

-        		System.err.println("Cannot find test images.");

-        	for (;;) {

-                tuner.processEvents();

-            }

+        		LOG.severe("Cannot find test images.");

         }

         else {

         	HTTPClient client = new HTTPClient();

@@ -188,7 +204,7 @@
         		ImageWithTimestamp to_process = client.GetFrame();

         		if (to_process.image != null) {

         			tuner.processImage(to_process.image);

-        			System.out.println("Captured time: " + Double.toString(to_process.timestamp));

+        			LOG.fine("Captured time: " + Double.toString(to_process.timestamp));

         		}

         	}

         }