Commit in hps-java/src/main/java/org/lcsim/hps/recon/tracking on MAIN
HPSSVTDataBuffer.java+61-861.2 -> 1.3
Header (Hybrid Temperature) is now included

hps-java/src/main/java/org/lcsim/hps/recon/tracking
HPSSVTDataBuffer.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- HPSSVTDataBuffer.java	5 Apr 2012 23:57:51 -0000	1.2
+++ HPSSVTDataBuffer.java	21 Apr 2012 07:37:45 -0000	1.3
@@ -6,148 +6,123 @@
 import java.util.List;
 import java.util.Map;
 
+// Constants
+import static org.lcsim.hps.recon.tracking.HPSSVTConstants.SVT_TOTAL_FPGAS;
+import static org.lcsim.hps.recon.tracking.HPSSVTConstants.TEMP_MASK;
+
 /**
  *
  * @author Omar Moreno <[log in to unmask]>
- * @version $Id: HPSSVTDataBuffer.java,v 1.2 2012/04/05 23:57:51 jeremy Exp $ 
+ * @version $Id: HPSSVTDataBuffer.java,v 1.3 2012/04/21 07:37:45 omoreno Exp $ 
  */
 public class HPSSVTDataBuffer {
     
-    // Map the fpga to the data emerging from it
-    private static Map<Integer, List<Integer>> fpgaToData = new HashMap<Integer, List<Integer>>();
+    // Map the FPGA to the data emerging from it
+    private Map<Integer, List<Integer>> fpgaToData = new HashMap<Integer, List<Integer>>();
 	
+    // Singleton
     private static final HPSSVTDataBuffer instance = new HPSSVTDataBuffer();
 
-    private static List<Integer> data = new ArrayList<Integer>();
     int[] header = new int[8];
     int temp = 23; // C
-    int numFpga = 8;
         
-    // Mask used to encode SVT data header information
-    private static final int FPGA_MASK = 0xFFFF;
-    private static final int TEMP_MASK = 0xFFFF;
-    private static final int ID_MASK = 0xFF;
-    
-    
     /**
      * Default constructor; Set to private to prevent instantiation
      */
     private HPSSVTDataBuffer()
     {
         //
-        for(int fpga = 0; fpga < numFpga; fpga++) {
-            fpgaToData.put(fpga, new ArrayList<Integer>());
-        }
+        for(int fpgaNumber = 0; fpgaNumber <= SVT_TOTAL_FPGAS; fpgaNumber++) 
+        	fpgaToData.put(fpgaNumber, new ArrayList<Integer>());
     }
     
     /**
+     * Add data to SVT buffer
      * 
+     * @param svtData : List of SVT data packets
+     * @param fpga : FPGA from which the data emerges from
      */
     public static void addToBuffer(List<HPSSVTData> svtData, int fpga)
     {
-        if(instance.fpgaToData.isEmpty()){
-            
-            //  Create SVT data banks
-            instance.createDataBanks();
-        }
-        
-        instance.fillBank(svtData, fpga);
+        // If the FPGA data block is empty, add header information and data, otherwise
+    	// just add the data
+    	instance.encapsulateSVTData(svtData, fpga);        
     }
     
     /**
+     * Readout data stored in the SVT buffer
      * 
+     * @param fpga : FPGA from which data is to be read from
+     * @return data : An FPGA data packet 
+     *
      */
     public static int[] readoutBuffer(int fpga)
     {
-    	int[] data = new int[fpgaToData.get(fpga).size()]; 
+    	// Copy the data in the map so that the buffer can be cleared
+    	int[] data = new int[instance.fpgaToData.get(fpga).size()]; 
     	int index = 0;
-    	for(Integer datum : fpgaToData.get(fpga)){
+    	for(Integer datum : instance.fpgaToData.get(fpga)){
     		data[index] = datum;
     		index++;
     	}
     	
     	// Clear the buffer
-        fpgaToData.get(fpga).clear();
+        instance.fpgaToData.get(fpga).clear();
         
         // Return the 
         return data;
     }
     
     /**
+     * Encapsulate SVT data by FPGA
      * 
+     * @param svtData : List of SVT data packets
+     * @param fpga : FPGA from which the data emerges from
      */
-    private void fillBank(List<HPSSVTData> svtData, int fpga)
+    private void encapsulateSVTData(List<HPSSVTData> svtData, int fpga)
     {
-        // Data
-        int[] datum;
-        for(HPSSVTData svtDatum : svtData){
-            datum = svtDatum.getData();
-            for(int index = 0; index < datum.length; index++){
-                fpgaToData.get(fpga).add(datum[index]);
-            }
-        }
-        
-        // Tail
-        //fpgaToData.get(fpga).add(0);
-
-        // Frame Size
-        //fpgaToData.get(fpga).add(0, fpgaToData.get(fpga).size());
-    
-    }
-    
-    /**
-     * 
-     */
-    private void createDataBanks()
-    {        
-        // Create the headers for each of the banks
-        
-        //--- FPGA 7 ---//
-        //fpgaToData.get(7).add(0x00070101); // Tag = 7, UI32, Idx = 1
-            
-        // Insert the temperature information. All temperatures are currently
-        // set to 23 C
-        header[0] = (header[0] &= ~TEMP_MASK) | (temp & TEMP_MASK);
-        header[0] = (header[0] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
+    	// Ignore FPGA 7 for now 
+    	if(fpga == 7) return;
+    	
+    	// If the FPGA data block is empty, add the header information
+    	if(instance.fpgaToData.isEmpty()){
+    	
+    		// Insert the temperature information. All temperatures are currently
+    		// set to 23 C
+    		header[0] = (header[0] &= ~TEMP_MASK) | (temp & TEMP_MASK);
+    		header[0] = (header[0] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
         
-        header[1] = (header[1] &= ~TEMP_MASK) | (temp & TEMP_MASK);
-        header[1] = (header[1] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
+    		header[1] = (header[1] &= ~TEMP_MASK) | (temp & TEMP_MASK);
+    		header[1] = (header[1] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
         
-        header[2] = (header[2] &= ~TEMP_MASK) | (temp & TEMP_MASK);
-        header[2] = (header[2] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
+    		header[2] = (header[2] &= ~TEMP_MASK) | (temp & TEMP_MASK);
+    		header[2] = (header[2] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
        
-        header[3] = (header[3] &= ~TEMP_MASK) | (temp & TEMP_MASK);
-        header[3] = (header[3] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
+    		header[3] = (header[3] &= ~TEMP_MASK) | (temp & TEMP_MASK);
+    		header[3] = (header[3] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
      
-        header[4] = (header[4] &= ~TEMP_MASK) | (temp & TEMP_MASK);
-        header[4] = (header[4] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
+    		header[4] = (header[4] &= ~TEMP_MASK) | (temp & TEMP_MASK);
+    		header[4] = (header[4] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
         
-        header[5] = (header[5] &= ~TEMP_MASK) | (temp & TEMP_MASK);
-        header[5] = (header[5] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
+    		header[5] = (header[5] &= ~TEMP_MASK) | (temp & TEMP_MASK);
+    		header[5] = (header[5] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
         
-        header[6] = (header[6] &= ~TEMP_MASK) | (temp & TEMP_MASK);
-        header[6] = (header[6] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
+    		header[6] = (header[6] &= ~TEMP_MASK) | (temp & TEMP_MASK);
+    		header[6] = (header[6] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
         
-        header[7] = (header[7] &= ~TEMP_MASK) | (temp & TEMP_MASK);
-        header[7] = (header[7] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
-            
-    
-        for(int index = 0; index < header.length; index++){
-            fpgaToData.get(7).add(header[index]);
-        }
-        
-        //int buff = 0;
+    		header[7] = (header[7] &= ~TEMP_MASK) | (temp & TEMP_MASK);
+    		header[7] = (header[7] &= ~(TEMP_MASK << 16)) | ((temp & TEMP_MASK) << 16);
         
-        //--- FPGA 0-6 ---//
-        /*
-        for(int fpga = 0; fpga < numFpga - 1; fpga++){
-            buff = (buff &= ~(0x1 << 8)) | ((1 & ID_MASK) << 8);
-            buff = (buff &= ~(FPGA_MASK << 16)) | ((fpga & FPGA_MASK) << 16);
-            buff = (buff &= ~ID_MASK) | (fpga+1 & ID_MASK);
+    		for(int index = 0; index < header.length; index++) fpgaToData.get(fpga).add(header[index]);
+    	}
         
-            fpgaToData.get(fpga).add(buff);
+        // Add all samples emerging from this FPGA
+        if(!svtData.isEmpty()){
+        	for(HPSSVTData svtDatum : svtData){ 
+        		for(int index = 0; index < svtDatum.getData().length; index++){
+        			fpgaToData.get(fpga).add(svtDatum.getData()[index]);
+        		}
+        	}
         }
-        */
     }
-
 }
CVSspam 0.2.12


Use REPLY-ALL to reply to list

To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1