IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Mar 13, 2006, 4:21:07 PM (20 years ago)
Author:
magnier
Message:

updates to pmFPAview, pmFPAfile

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/rel10_ifa/psModules/src/astrom/pmFPAview.c

    r6568 r6573  
    33 *  @author EAM, IfA
    44 *
    5  *  @version $Revision: 1.1.2.3 $ $Name: not supported by cvs2svn $
    6  *  @date $Date: 2006-03-09 20:56:39 $
     5 *  @version $Revision: 1.1.2.4 $ $Name: not supported by cvs2svn $
     6 *  @date $Date: 2006-03-14 02:21:07 $
    77 *
    88 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    1717#include "pmFPA.h"
    1818#include "pmFPAview.h"
    19 #include "pmFPARead.h"
    20 #include "pmFPAWrite.h"
    2119
    2220static void pmFPAviewFree (pmFPAview *view)
    2321{
    24 
    2522    if (view == NULL)
    2623        return;
    27 
    28     psFree (view->IO);
    2924    return;
    3025}
    3126
    32 pmFPAview *pmFPAviewAlloc (pmFPA *fpa, psMetadata *camera, int nRows)
    33 {
    34 
     27pmFPAview *pmFPAviewAlloc (int nRows)
     28{
    3529    pmFPAview *view = psAlloc (sizeof(pmFPAview));
    3630    psMemSetDeallocator (view, (psFreeFunc) pmFPAviewFree);
    37 
    38     view->fpa     = fpa;
    39     view->nRows   = nRows;
    40     view->camera  = camera;
    4131
    4232    view->chip    = -1;
    4333    view->cell    = -1;
    4434    view->readout = -1;
    45     view->iRows   = 0;
    46 
    47     view->IO      = psMetadataAlloc ();
     35    view->iRows   =  0;
     36    view->nRows   = nRows;
    4837    return (view);
    4938}
     
    6453}
    6554
    66 pmChip *pmFPAviewThisChip (pmFPAview *view)
     55pmChip *pmFPAviewThisChip (pmFPAview *view, pmFPA *fpa)
    6756{
    6857
     
    7160    }
    7261
    73     if (view->chip >= view->fpa->chips->n) {
    74         return NULL;
    75     }
    76 
    77     pmChip *chip = view->fpa->chips->data[view->chip];
     62    if (view->chip >= fpa->chips->n) {
     63        return NULL;
     64    }
     65
     66    pmChip *chip = fpa->chips->data[view->chip];
    7867    return chip;
    7968}
    8069
    81 pmChip *pmFPAviewNextChip (pmFPAview *view, int nStep)
    82 {
    83 
     70pmChip *pmFPAviewNextChip (pmFPAview *view, pmFPA *fpa, int nStep)
     71{
    8472    view->cell = -1;
    8573    view->readout = -1;
     
    8775
    8876    // if there are no available chips, return NULL
    89     if (view->fpa->chips->n <= 0) {
     77    if (fpa->chips->n <= 0) {
    9078        view->chip = -1;
    9179        return NULL;
     
    10189
    10290    // if we are at the end of the stack, return NULL
    103     if (view->chip >= view->fpa->chips->n) {
     91    if (view->chip >= fpa->chips->n) {
    10492        view->chip = -1;
    10593        return NULL;
     
    10795
    10896    // get the correct chip pointer
    109     pmChip *chip = view->fpa->chips->data[view->chip];
     97    pmChip *chip = fpa->chips->data[view->chip];
    11098    return (chip);
    11199}
    112100
    113 pmCell *pmFPAviewThisCell (pmFPAview *view)
     101pmCell *pmFPAviewThisCell (pmFPAview *view, pmFPA *fpa)
    114102{
    115103
     
    118106    }
    119107
    120     pmChip *chip = pmFPAviewThisChip (view);
     108    pmChip *chip = pmFPAviewThisChip (view, fpa);
    121109    if (chip == NULL) {
    122110        return NULL;
     
    131119}
    132120
    133 pmCell *pmFPAviewNextCell (pmFPAview *view, int nStep)
    134 {
    135 
    136     pmChip *chip = pmFPAviewThisChip (view);
     121pmCell *pmFPAviewNextCell (pmFPAview *view, pmFPA *fpa, int nStep)
     122{
     123
     124    pmChip *chip = pmFPAviewThisChip (view, fpa);
    137125    if (chip == NULL) {
    138126        return NULL;
     
    167155}
    168156
    169 pmReadout *pmFPAviewThisReadout (pmFPAview *view)
     157pmReadout *pmFPAviewThisReadout (pmFPAview *view, pmFPA *fpa)
    170158{
    171159
     
    174162    }
    175163
    176     pmCell *cell = pmFPAviewThisCell (view);
     164    pmCell *cell = pmFPAviewThisCell (view, fpa);
    177165    if (cell == NULL) {
    178166        return NULL;
     
    187175}
    188176
    189 pmReadout *pmFPAviewNextReadout (pmFPAview *view, int nStep)
    190 {
    191 
    192     pmCell *cell = pmFPAviewThisCell (view);
     177pmReadout *pmFPAviewNextReadout (pmFPAview *view, pmFPA *fpa, int nStep)
     178{
     179
     180    pmCell *cell = pmFPAviewThisCell (view, fpa);
    193181    if (cell == NULL) {
    194182        return NULL;
     
    222210}
    223211
    224 pmHDU *pmFPAviewThisHDU (pmFPAview *view)
     212pmHDU *pmFPAviewThisHDU (pmFPAview *view, pmFPA *fpa)
    225213{
    226214
     
    230218
    231219    if (view->chip < 0) {
    232         return pmHDUFromFPA (view->fpa);
     220        return pmHDUFromFPA (fpa);
    233221    }
    234222    if (view->cell < 0) {
    235         return pmHDUFromChip (pmFPAviewThisChip (view));
     223        return pmHDUFromChip (pmFPAviewThisChip (view, fpa));
    236224    }
    237225    if (view->readout < 0) {
    238         return pmHDUFromCell (pmFPAviewThisCell (view));
     226        return pmHDUFromCell (pmFPAviewThisCell (view, fpa));
    239227    }
    240228    return NULL;
     
    242230
    243231// select the rule from the camera configuration, perform substitutions as needed
    244 char *pmFPAviewNameFromRule (char *rule, pmFPAview *view)
     232char *pmFPAviewNameFromRule (char *rule, pmFPAview *view, pmFPA *fpa)
    245233{
    246234
     
    250238
    251239    if (strstr (newName, "{CHIP.NAME}") != NULL) {
    252         pmChip *chip = pmFPAviewThisChip (view);
     240        pmChip *chip = pmFPAviewThisChip (view, fpa);
    253241        if (chip != NULL) {
    254242            char *name = psMetadataLookupStr (NULL, chip->concepts, "CHIP.NAME");
     
    259247    }
    260248    if (strstr (newName, "{CELL.NAME}") != NULL) {
    261         pmCell *cell = pmFPAviewThisCell (view);
     249        pmCell *cell = pmFPAviewThisCell (view, fpa);
    262250        if (cell != NULL) {
    263251            char *name = psMetadataLookupStr (NULL, cell->concepts, "CELL.NAME");
     
    268256    }
    269257    if (strstr (newName, "{EXTNAME}") != NULL) {
    270         pmHDU *hdu = pmFPAviewThisHDU (view);
     258        pmHDU *hdu = pmFPAviewThisHDU (view, fpa);
    271259        if (hdu->extname != NULL) {
    272260            newName = psStringSubstitute (newName, hdu->extname, "{EXTNAME}");
     
    275263    return newName;
    276264}
    277 
    278 // given an already-opened fits file, read the components corresponding
    279 // to the specified view
    280 bool pmFPAviewReadFitsImage (pmFPAview *view, psFits *fits)
    281 {
    282 
    283     pmFPA *fpa = view->fpa;
    284 
    285     if (view->chip == -1) {
    286         pmFPARead (fpa, fits, NULL);
    287         return true;
    288     }
    289 
    290     if (view->chip >= fpa->chips->n) {
    291         return false;
    292     }
    293     pmChip *chip = fpa->chips->data[view->chip];
    294 
    295     if (view->cell == -1) {
    296         pmChipRead (chip, fits, NULL);
    297         return true;
    298     }
    299 
    300     if (view->cell >= chip->cells->n) {
    301         return false;
    302     }
    303     pmCell *cell = chip->cells->data[view->cell];
    304 
    305     if (view->readout == -1) {
    306         pmCellRead (cell, fits, NULL);
    307         return true;
    308     }
    309 
    310     // XXX pmReadoutRead, pmReadoutReadSegement disabled for now
    311     return false;
    312 
    313     # if (0)
    314 
    315         if (view->readout >= cell->readouts->n) {
    316             return false;
    317         }
    318     pmReadout *readout = cell->readouts->data[view->readout];
    319 
    320     if (view->nRows == 0) {
    321         pmReadoutRead (readout, fits, NULL);
    322     } else {
    323         pmReadoutReadSegment (readout, fits, view->nRows, view->iRows, NULL, NULL);
    324     }
    325     return true;
    326     # endif
    327 }
    328 
    329 // XXX image writes disabled for now
    330 # if (0)
    331     // given an already-opened fits file, write the components corresponding
    332     // to the specified view
    333     bool pmFPAviewWriteFitsImage (pmFPAview *view, psFits *fits)
    334 {
    335 
    336     pmFPA *fpa = view->fpa;
    337 
    338     if (view->chip == -1) {
    339         pmFPAWrite (fpa, fits, NULL, NULL);
    340         return true;
    341     }
    342 
    343     if (view->chip >= fpa->chips->n) {
    344         return false;
    345     }
    346     pmChip *chip = fpa->chips->data[view->chip];
    347 
    348     if (view->cell == -1) {
    349         pmChipWrite (chip, fits, NULL, NULL);
    350         return true;
    351     }
    352 
    353     if (view->cell >= chip->cells->n) {
    354         return false;
    355     }
    356     pmCell *cell = chip->cells->data[view->cell];
    357 
    358     if (view->readout == -1) {
    359         pmCellWrite (cell, fits, NULL, NULL);
    360         return true;
    361     }
    362 
    363     if (view->readout >= cell->readouts->n) {
    364         return false;
    365     }
    366     pmReadout *readout = cell->readouts->data[view->readout];
    367 
    368     if (view->nRows == 0) {
    369         pmReadoutWrite (readout, fits, NULL, NULL);
    370     } else {
    371         pmReadoutWriteSegment (readout, fits, view->nRows, view->iRows, NULL, NULL);
    372     }
    373     return true;
    374 }
    375 # endif
Note: See TracChangeset for help on using the changeset viewer.