Index: /trunk/psModules/src/pmAstrometry.c
===================================================================
--- /trunk/psModules/src/pmAstrometry.c	(revision 4778)
+++ /trunk/psModules/src/pmAstrometry.c	(revision 4779)
@@ -1,16 +1,16 @@
 /** @file  psAstrometry.c
- *
- *  @brief This file defines the basic types for astronomical coordinate
- *  transformation
- *
- *  @ingroup AstroImage
- *
- *  @author GLG, MHPCC
- *
- *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2005-08-16 01:10:34 $
- *
- *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
- */
+*
+*  @brief This file defines the basic types for astronomical coordinate
+*  transformation
+*
+*  @ingroup AstroImage
+*
+*  @author GLG, MHPCC
+*
+*  @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2005-08-16 02:29:29 $
+*
+*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
+*/
 
 /******************************************************************************/
@@ -700,4 +700,167 @@
 }
 
-
-
+/*
+psMetadataItem* psMetadataLookup(
+    const psMetadata * md,             ///< Metadata collection to lookup meta!
+    const char * key                   ///< Name of metadata key.
+);
+*/
+
+psMetadataItem *pmReadoutGetConcept(pmReadout *readout, const char *concept)
+{
+    return(psMetadataLookup(readout->concepts, concept));
+}
+
+psMetadataItem *pmCellGetConcept(pmCell *cell, const char *concept)
+{
+    return(psMetadataLookup(cell->concepts, concept));
+}
+
+psMetadataItem *pmChipGetConcept(pmChip *chip, const char *concept)
+{
+    return(psMetadataLookup(chip->concepts, concept));
+}
+
+psMetadataItem *pmFPAGetConcept(pmFPA *fpa, const char *concept)
+{
+    return(psMetadataLookup(fpa->concepts, concept));
+}
+
+
+float pmFPAGetAirmass(pmFPA *fpa) // FPA.AIRMASS
+{
+    psMetadataItem *tmp = pmFPAGetConcept(fpa, "FPA.AIRMASS");
+    return((float) tmp->data.F32);
+}
+
+psString pmFPAGetFilter(pmFPA *fpa) // FPA.FILTER
+{
+    psMetadataItem *tmp = pmFPAGetConcept(fpa, "FPA.FILTER");
+    return((psString) tmp->data.V);
+}
+
+float pmFPAGetPosAngle(pmFPA *fpa) // FPA.POSANGLE
+{
+    psMetadataItem *tmp = pmFPAGetConcept(fpa, "FPA.POSANGLE");
+    return((float) tmp->data.F32);
+}
+
+double pmFPAGetRA(pmFPA *fpa) // FPA.RA
+{
+    psMetadataItem *tmp = pmFPAGetConcept(fpa, "FPA.RA");
+    return((float) tmp->data.F32);
+}
+
+double pmFPAGetDec(pmFPA *fpa) // FPA.DEC
+{
+    psMetadataItem *tmp = pmFPAGetConcept(fpa, "FPA.DEC");
+    return((float) tmp->data.F32);
+}
+
+psString pmFPAGetRADecSys(pmFPA *fpa) // FPA.RADECSYS
+{
+    psMetadataItem *tmp = pmFPAGetConcept(fpa, "FPA.RADECSYS");
+    return((psString) tmp->data.V);
+}
+
+psString pmFPAGetName(pmFPA *fpa) // FPA.NAME
+{
+    psMetadataItem *tmp = pmFPAGetConcept(fpa, "FPA.NAME");
+    return((psString) tmp->data.V);
+}
+
+psString pmChipGetName(pmChip *chip) // CHIP.NAME
+{
+    psMetadataItem *tmp = pmChipGetConcept(chip, "CHIP.NAME");
+    return((psString) tmp->data.V);
+}
+
+psString pmCellGetName(pmCell *cell) // CELL.NAME
+{
+    psMetadataItem *tmp = pmCellGetConcept(cell, "CELL.NAME");
+    return((psString) tmp->data.V);
+}
+
+psTime *pmCellGetTime(pmCell *cell) // CELL.TIME
+{
+    psMetadataItem *tmp = pmCellGetConcept(cell, "CELL.TIME");
+    return((psTime *) tmp->data.V);
+}
+
+psList *pmCellGetBiasSec(pmCell *cell) // CELL.BIASSEC
+{
+    psMetadataItem *tmp = pmCellGetConcept(cell, "CELL.BIASSEC");
+    return((psList *) tmp->data.list);
+}
+
+psRegion *pmCellGetTrimSec(pmCell *cell) // CELL.TRIMSEC
+{
+    psMetadataItem *tmp = pmCellGetConcept(cell, "CELL.TRIMSEC");
+    return((psRegion *) tmp->data.V);
+}
+
+float pmCellGetGain(pmCell *cell) // CELL.GAIN
+{
+    psMetadataItem *tmp = pmCellGetConcept(cell, "CELL.GAIN");
+    return((float) tmp->data.F32);
+}
+
+float pmCellGetReadNoise(pmCell *cell) // CELL.READNOISE
+{
+    psMetadataItem *tmp = pmCellGetConcept(cell, "CELL.READNOISE");
+    return((float) tmp->data.F32);
+}
+
+float pmCellGetSaturation(pmCell *cell) // CELL.SATURATION
+{
+    psMetadataItem *tmp = pmCellGetConcept(cell, "CELL.SATURATION");
+    return((float) tmp->data.F32);
+}
+
+float pmCellGetBad(pmCell *cell) // CELL.BAD
+{
+    psMetadataItem *tmp = pmCellGetConcept(cell, "CELL.BAD");
+    return((float) tmp->data.F32);
+}
+
+psPixelCoord *pmCellGetBin(pmCell *cell) // CELL.BIN
+{
+    psMetadataItem *tmp = pmCellGetConcept(cell, "CELL.BIN");
+    return((psPixelCoord *) tmp->data.V);
+}
+
+psPixelCoord *pmCellGetParity(pmCell *cell) // CELL.PARITY
+{
+    psMetadataItem *tmp = pmCellGetConcept(cell, "CELL.PARITY");
+    return((psPixelCoord *) tmp->data.V);
+}
+
+float pmReadoutGetExposure(pmReadout *readout) // READOUT.EXPOSURE
+{
+    psMetadataItem *tmp = pmReadoutGetConcept(readout, "READOUT.EXPOSURE");
+    return((float) tmp->data.F32);
+}
+
+float pmReadoutGetDarkTime(pmReadout *readout) // READOUT.DARKTIME
+{
+    psMetadataItem *tmp = pmReadoutGetConcept(readout, "READOUT.DARKTIME");
+    return((float) tmp->data.F32);
+}
+
+
+
+
+/*
+typedef struct
+{
+    float x0;
+}
+psJunk;
+ 
+psJunk *pmCellTmp(pmCell *cell) // CELL.TRIMSEC
+{
+    psMetadataItem *tmp;
+    return((psJunk *) tmp->data.V);
+}
+ 
+*/
Index: /trunk/psModules/src/pmAstrometry.h
===================================================================
--- /trunk/psModules/src/pmAstrometry.h	(revision 4778)
+++ /trunk/psModules/src/pmAstrometry.h	(revision 4779)
@@ -8,6 +8,6 @@
 *  @author GLG, MHPCC
 *
-*  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2005-08-16 01:10:34 $
+*  @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2005-08-16 02:29:29 $
 *
 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -417,3 +417,39 @@
 
 
+psMetadataItem *pmCellGetConcept(pmCell *cell, const char *concept);
+psMetadataItem *pmChipGetConcept(pmChip *chip, const char *concept);
+psMetadataItem *pmFPAGetConcept(pmFPA *fpa, const char *concept);
+
+/**
+ * 
+ *  We next specify a series of specific functions for concept lookups. These
+ *  will generally be what the user utilises, so the goal is to provide a simple
+ *  interface providing a single type back, so the user doesnt have to go to the
+ *  trouble of checking types, etc. These functions should employ the above three
+ *  general lookup functions and deal with the result appropriately.
+ *
+ */
+float pmFPAGetAirmass(pmFPA *fpa); // FPA.AIRMASS
+psString pmFPAGetFilter(pmFPA *fpa); // FPA.FILTER
+float pmFPAGetPosAngle(pmFPA *fpa); // FPA.POSANGLE
+double pmFPAGetRA(pmFPA *fpa); // FPA.RA
+double pmFPAGetDec(pmFPA *fpa); // FPA.DEC
+psString pmFPAGetRADecSys(pmFPA *fpa); // FPA.RADECSYS
+psString pmFPAGetName(pmFPA *fpa); // FPA.NAME
+psString pmChipGetName(pmChip *chip); // CHIP.NAME
+psString pmCellGetName(pmCell *cell); // CELL.NAME
+psTime *pmCellGetTime(pmCell *cell); // CELL.TIME
+psList *pmCellGetBiasSec(pmCell *cell); // CELL.BIASSEC
+psRegion *pmCellGetTrimSec(pmCell *cell); // CELL.TRIMSEC
+float pmCellGetGain(pmCell *cell); // CELL.GAIN
+float pmCellGetReadNoise(pmCell *cell); // CELL.READNOISE
+float pmCellGetSaturation(pmCell *cell); // CELL.SATURATION
+float pmCellGetBad(pmCell *cell); // CELL.BAD
+psPixelCoord *pmCellGetBin(pmCell *cell); // CELL.BIN
+psPixelCoord *pmCellGetParity(pmCell *cell); // CELL.PARITY
+float pmReadoutGetExposure(pmReadout *readout); // READOUT.EXPOSURE
+float pmReadoutGetDarkTime(pmReadout *readout); // READOUT.DARKTIME
+
+
+
 #endif // #ifndef PS_ASTROMETRY_H
