Index: trunk/ppImage/src/ppTest.c
===================================================================
--- trunk/ppImage/src/ppTest.c	(revision 7361)
+++ trunk/ppImage/src/ppTest.c	(revision 7476)
@@ -87,22 +87,31 @@
     // Construct camera in preparation for reading
     pmFPA *fpa = pmFPAConstruct(config->camera);
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// NEW
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-    // Add in a source file
     pmFPAview *view = pmFPAAddSourceFromHeader(fpa, phu, cameraFormat);
     printf("View chip: %d\n", view->chip);
     printf("View cell: %d\n", view->cell);
 
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// The action happens here
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+#if 1
+    // A mosaic
+    psMetadata *mosaicCamera = psMetadataConfigParse(NULL, NULL, "/home/mithrandir/price/ipp/config/mcshort_mosaic/camera.config", true);
+    pmFPA *mosaicFPA = pmFPAConstruct(mosaicCamera);
+    psMetadata *mosaicFormat = psMetadataConfigParse(NULL, NULL, "/home/mithrandir/price/ipp/config/mcshort_mosaic/format_mosaic.config", true);
+    pmFPAview *mosaicView = pmFPAviewAlloc(0);
+    pmFPAAddSourceFromView(mosaicFPA, mosaicView, mosaicFormat);
+#endif
+
     // Read the FPA
-#if 1
     pmFPARead(fpa, inFile, NULL);
-#else
+
+#if 0
     psArray *chips = fpa->chips;
     //pmFPAWrite(fpa, outFile, NULL, false);
     for (int i = 0; i < chips->n; i++) {
         pmChip *chip = chips->data[i];
+        //pmChipRead(chip, inFile, NULL);
         //pmChipWrite(chip, outFile, NULL, false);
         psArray *cells = chip->cells;
@@ -110,5 +119,4 @@
             pmCell *cell = cells->data[j];
             //pmCellWrite(cell, outFile, NULL, false);
-#if 0
             pmReadout *readout = pmReadoutAlloc(cell);
             for (int z = 0; pmReadoutReadNext(readout, inFile, z, 512); z++) {
@@ -120,36 +128,29 @@
             }
             psFree(readout);
-#else
-            pmCellRead(cell, inFile, NULL);
-            printf("Read chip %d, cell %d\n", i, j);
-#endif
         }
-        //pmChipMosaic(chip);
-        //psFree(chip);
+        pmChipMosaic(mosaicFPA->chips->data[0], chip);
     }
 #endif
 
+    pmFPAMosaic(mosaicFPA, fpa);
 
 #if 1
-    // Copy to new camera format
-    pmFPA *newFPA = pmFPAConstruct(config->camera);
-    psMetadata *newFormat = psMetadataConfigParse(NULL, NULL, "/home/mithrandir/price/ipp/config/mcshort/format_spliced.config", true);
-    pmFPAAddSourceFromView(newFPA, view, newFormat);
-    //pmFPACopyStructure(newFPA, fpa, 5, 5);
-    pmFPACopy(newFPA, fpa);
-    //pmConfigConformHeader(phu, newFormat);
-    //pmHDUGenerateForFPA(newFPA);
-    pmFPAWrite(newFPA, outFile, NULL, true, true);
-    pmFPAPrint(newFPA, true, true);
-    psFree(newFormat);
-    psFree(newFPA);
+    pmFPAWrite(mosaicFPA, outFile, NULL, true, true);
+    pmFPAPrint(mosaicFPA, true, true);
+    psFree(mosaicCamera);
+    psFree(mosaicFormat);
+    psFree(mosaicView);
+    psFree(mosaicFPA);
 #endif
 
+#if 1
     psFitsClose(outFile);
+#endif
+
     psFree(view);
+    psFree(phu);
     psFree(fpa);
     psFree(config);
     psFitsClose(inFile);
-    psFree(phu);
     psFree(cameraFormat);
 
@@ -159,4 +160,6 @@
     pmConceptsDone();
     pmConfigDone();
+
+
     ppMemCheck();
 
