IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jun 9, 2006, 3:55:20 PM (20 years ago)
Author:
Paul Price
Message:

Was having trouble reading and writing concepts at different levels. Added 'propagateUp' and 'propagateDown' flags to the pmConceptsRead and pmConceptsWrite functions so we can read up and down the hierarchy. For example, when you read a header at the chip level, it may be a PHU so that you want the FPA to also read concepts from it if it doesn't have its own HDU, and you want the cell to read concepts from it if it doesn't have its own HDU. But if I add a PHU, I only want to propagate upwards, because the downwards propagation will occur when I read the header lower down.

Location:
trunk/psModules/src/camera
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/camera/pmFPAConstruct.c

    r7449 r7469  
    138138    fpa->hdu = psMemIncrRefCounter(hdu);
    139139    bool success = true;                // Success of reading concepts
    140     if (hdu->header && !pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_HEADER, NULL)) {
     140    if (hdu->header && !pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_HEADER, false, NULL)) {
    141141        psError(PS_ERR_UNKNOWN, false, "Unable to read concepts from header.\n");
    142142        success = false;
     
    164164    chip->hdu = psMemIncrRefCounter(hdu);
    165165    bool success = true;                // Success of reading concepts
    166     if (hdu->header && !pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_HEADER, true, NULL)) {
     166    if (hdu->header && !pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_HEADER, true, false, NULL)) {
    167167        psError(PS_ERR_UNKNOWN, false, "Unable to read concepts from header.\n");
    168168        success = false;
     
    299299        }
    300300
    301         if (!pmConceptsReadChip(newChip, PM_CONCEPT_SOURCE_DEFAULTS, false, NULL)) {
     301        if (!pmConceptsReadChip(newChip, PM_CONCEPT_SOURCE_DEFAULTS, false, false, NULL)) {
    302302            psError(PS_ERR_UNKNOWN, false, "Unable to read concepts from camera and defaults for chip %s\n",
    303303                    chipName);
     
    751751    psFree(contentsIter);
    752752
    753     if (!pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_DEFAULTS, NULL)) {
     753    if (!pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_DEFAULTS, true, NULL)) {
    754754        psError(PS_ERR_UNKNOWN, false, "Unable to read concepts from defaults for FPA %s.  Attempting to "
    755755                "proceed anyway.\n", currentFPAname);
  • trunk/psModules/src/camera/pmFPAHeader.c

    r7314 r7469  
    66#include "pmConcepts.h"
    77#include "pmFPAHeader.h"
    8 
    9 //////////////////////////////////////////////////////////////////////////////////////////////////////////////
    10 // File-static (private) functions
    11 //////////////////////////////////////////////////////////////////////////////////////////////////////////////
    12 
    13 // Read concepts for all cells in a chip
    14 static bool chipConcepts(pmChip *chip   // The chip for which to read the concepts
    15                         )
    16 {
    17     assert(chip);
    18 
    19     bool status = true;                 // Status of concept reading
    20     status |= pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_HEADER, false, NULL);
    21     psArray *cells = chip->cells;       // The cells
    22     for (int i = 0; i < cells->n; i++) {
    23         pmCell *cell = cells->data[i];  // The cell of interest
    24         if (!cell) {
    25             continue;
    26         }
    27         status |= pmConceptsReadCell(cell, PM_CONCEPT_SOURCE_HEADER, false, NULL);
    28     }
    29 
    30     return status;
    31 }
    32 
    33 // Read concepts for all chips in an FPA
    34 static bool fpaConcepts(pmFPA *fpa   // The FPA for which to read the concepts
    35                        )
    36 {
    37     assert(fpa);
    38 
    39     bool status = true;                 // Status of concept reading
    40     status |= pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_HEADER, NULL);
    41     psArray *chips = fpa->chips;        // The chips
    42     for (int i = 0; i < chips->n; i++) {
    43         pmChip *chip = chips->data[i];  // The chip of interest
    44         if (!chip) {
    45             continue;
    46         }
    47         status |= chipConcepts(chip);
    48     }
    49 
    50     return status;
    51 }
    52 
    538
    549//////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
    9045    }
    9146
    92     if (!chipConcepts(chip)) {
     47    if (!pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_HEADER, true, true, NULL)) {
    9348        psError(PS_ERR_UNKNOWN, false, "Unable to read concepts for chip.\n");
    9449        return false;
     
    11469    }
    11570
    116     if (!fpaConcepts(fpa)) {
     71    if (!pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_HEADER, true, NULL)) {
    11772        psError(PS_ERR_UNKNOWN, false, "Unable to read concepts for FPA.\n");
    11873        return false;
  • trunk/psModules/src/camera/pmFPARead.c

    r7407 r7469  
    183183
    184184    // Make sure we have the information we need
    185     pmConceptsReadCell(cell, PM_CONCEPT_SOURCE_HEADER | PM_CONCEPT_SOURCE_CAMERA | PM_CONCEPT_SOURCE_DEFAULTS,
    186                        false, NULL);
     185    if (!pmConceptsReadCell(cell, PM_CONCEPT_SOURCE_HEADER | PM_CONCEPT_SOURCE_CAMERA |
     186                            PM_CONCEPT_SOURCE_DEFAULTS, true, NULL)) {
     187        psError(PS_ERR_IO, false, "Failed to read concepts for cell.\n");
     188        return false;
     189    }
    187190
    188191    // Get the trim and bias sections
     
    322325    }
    323326
    324     if (!pmConceptsReadCell(cell, PM_CONCEPT_SOURCE_HEADER, false, NULL)) {
     327    if (!pmConceptsReadCell(cell, PM_CONCEPT_SOURCE_HEADER, true, NULL)) {
    325328        psError(PS_ERR_UNKNOWN, false, "Failed to read concepts for cell");
    326329        return false;
     
    354357    }
    355358
    356     pmCellSetDataStatus (cell, true);
     359    pmCellSetDataStatus(cell, true);
    357360    return true;
    358361}
     
    374377    }
    375378    if (success) {
    376         pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_HEADER, false, NULL);
     379        if (!pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_HEADER, true, true, NULL)) {
     380            psError(PS_ERR_IO, false, "Failed to read concepts for FPA.\n");
     381            return false;
     382        }
    377383        // XXX probably could just use chip->data_exists
    378         pmChipSetDataStatus (chip, true);
     384        pmChipSetDataStatus(chip, true);
    379385    }
    380386
     
    398404    }
    399405    if (success) {
    400         pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_HEADER, NULL);
     406        if (!pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_HEADER, true, NULL)) {
     407            psError(PS_ERR_IO, false, "Failed to read concepts for FPA.\n");
     408            return false;
     409        }
    401410    } else {
    402411        psError(PS_ERR_UNKNOWN, false, "Unable to read any chips in FPA");
  • trunk/psModules/src/camera/pmFPAWrite.c

    r7278 r7469  
    136136            (pixels && (hdu->images || (!hdu->images && pmHDUGenerateForChip(chip) && hdu->images)))) { // Data
    137137        success &= pmConceptsWriteChip(chip, PM_CONCEPT_SOURCE_HEADER | PM_CONCEPT_SOURCE_CAMERA |
    138                                        PM_CONCEPT_SOURCE_DEFAULTS, false, NULL);
     138                                       PM_CONCEPT_SOURCE_DEFAULTS, false, true, NULL);
    139139        success &= pmHDUWrite(hdu, fits);
    140140    }
     
    177177            (pixels && (hdu->images || (!hdu->images && pmHDUGenerateForFPA(fpa) && hdu->images)))) { // Data
    178178        success &= pmConceptsWriteFPA(fpa, PM_CONCEPT_SOURCE_HEADER | PM_CONCEPT_SOURCE_CAMERA |
    179                                       PM_CONCEPT_SOURCE_DEFAULTS, NULL);
     179                                      PM_CONCEPT_SOURCE_DEFAULTS, true, NULL);
    180180        success &= pmHDUWrite(hdu, fits);
    181181    }
Note: See TracChangeset for help on using the changeset viewer.