IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Apr 20, 2006, 12:19:08 PM (20 years ago)
Author:
Paul Price
Message:

Fixing logical error that resulted in multiple calls to pmConceptsInit.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/astrom/pmConcepts.c

    r6895 r6928  
    113113                         pmChip *chip,  // The chip
    114114                         pmCell *cell,  // The cell
     115                         unsigned int *read,     // What's already been read
    115116                         pmConceptSource source, // The source of the concepts to read
    116117                         psDB *db,      // Database handle
     
    122123    }
    123124
    124     if (source & PM_CONCEPT_SOURCE_CAMERA || source == PM_CONCEPT_SOURCE_ALL) {
     125    if (source & PM_CONCEPT_SOURCE_CAMERA && !(*read & PM_CONCEPT_SOURCE_CAMERA)) {
    125126        pmConceptsReadFromCamera(*specs, cell, target);
    126     }
    127     if (source & PM_CONCEPT_SOURCE_DEFAULTS || source == PM_CONCEPT_SOURCE_ALL) {
     127        *read |= PM_CONCEPT_SOURCE_CAMERA;
     128    }
     129
     130    if (source & PM_CONCEPT_SOURCE_DEFAULTS && !(*read & PM_CONCEPT_SOURCE_DEFAULTS)) {
    128131        pmConceptsReadFromDefaults(*specs, fpa, chip, cell, target);
    129     }
    130     if (source & PM_CONCEPT_SOURCE_HEADER || source == PM_CONCEPT_SOURCE_ALL) {
     132        *read |= PM_CONCEPT_SOURCE_DEFAULTS;
     133    }
     134
     135    if (source & PM_CONCEPT_SOURCE_HEADER && !(*read & PM_CONCEPT_SOURCE_HEADER)) {
    131136        pmConceptsReadFromHeader(*specs, fpa, chip, cell, target);
    132     }
    133     if (source & PM_CONCEPT_SOURCE_DATABASE || source == PM_CONCEPT_SOURCE_ALL) {
     137        *read |= PM_CONCEPT_SOURCE_HEADER;
     138    }
     139
     140    if (source & PM_CONCEPT_SOURCE_DATABASE && !(*read & PM_CONCEPT_SOURCE_DATABASE)) {
    134141        pmConceptsReadFromDatabase(*specs, fpa, chip, cell, db, target);
     142        *read |= PM_CONCEPT_SOURCE_DATABASE;
    135143    }
    136144
     
    152160    }
    153161
    154     if (source & PM_CONCEPT_SOURCE_CAMERA || source == PM_CONCEPT_SOURCE_ALL) {
     162    if (source & PM_CONCEPT_SOURCE_CAMERA) {
    155163        pmConceptsWriteToCamera(*specs, cell, concepts);
    156164    }
    157     if (source & PM_CONCEPT_SOURCE_DEFAULTS || source == PM_CONCEPT_SOURCE_ALL) {
     165    if (source & PM_CONCEPT_SOURCE_DEFAULTS) {
    158166        pmConceptsWriteToDefaults(*specs, fpa, chip, cell, concepts);
    159167    }
    160     if (source & PM_CONCEPT_SOURCE_HEADER || source == PM_CONCEPT_SOURCE_ALL) {
     168    if (source & PM_CONCEPT_SOURCE_HEADER) {
    161169        pmConceptsWriteToHeader(*specs, fpa, chip, cell, concepts);
    162170    }
    163     if (source & PM_CONCEPT_SOURCE_DATABASE || source == PM_CONCEPT_SOURCE_ALL) {
     171    if (source & PM_CONCEPT_SOURCE_DATABASE) {
    164172        pmConceptsWriteToDatabase(*specs, fpa, chip, cell, db, concepts);
    165173    }
     
    184192{
    185193    psTrace("psModule.concepts", 5, "Reading FPA concepts: %x %x\n", conceptsFPA, fpa->concepts);
    186     return conceptsRead(&conceptsFPA, fpa, NULL, NULL, source, db, fpa->concepts);
     194    return conceptsRead(&conceptsFPA, fpa, NULL, NULL, &fpa->conceptsRead, source, db, fpa->concepts);
    187195}
    188196
     
    214222    psTrace("psModule.concepts", 5, "Reading chip concepts: %x %x\n", conceptsChip, chip->concepts);
    215223    pmFPA *fpa = chip->parent;          // FPA to which the chip belongs
    216     return conceptsRead(&conceptsChip, fpa, chip, NULL, source, db, chip->concepts) &&
    217            ((propagate && conceptsRead(&conceptsFPA, fpa, chip, NULL, source, db, fpa->concepts)) ||
     224    return conceptsRead(&conceptsChip, fpa, chip, NULL, &chip->conceptsRead, source, db, chip->concepts) &&
     225           ((propagate && conceptsRead(&conceptsFPA, fpa, chip, NULL, &fpa->conceptsRead, source, db,
     226                                       fpa->concepts)) ||
    218227            !propagate);
    219228}
     
    251260    pmChip *chip = cell->parent;        // Chip to which the cell belongs
    252261    pmFPA *fpa = chip->parent;          // FPA to which the chip belongs
    253     return conceptsRead(&conceptsCell, fpa, chip, cell, source, db, cell->concepts) &&
    254            ((propagate && conceptsRead(&conceptsChip, fpa, chip, cell, source, db, chip->concepts) &&
    255              conceptsRead(&conceptsFPA, fpa, chip, cell, source, db, fpa->concepts)) || !propagate);
     262    return conceptsRead(&conceptsCell, fpa, chip, cell, &cell->conceptsRead, source, db, cell->concepts) &&
     263           ((propagate && conceptsRead(&conceptsChip, fpa, chip, cell, &chip->conceptsRead, source, db,
     264                                       chip->concepts) &&
     265             conceptsRead(&conceptsFPA, fpa, chip, cell, &fpa->conceptsRead, source, db, fpa->concepts)) ||
     266            !propagate);
    256267}
    257268
     
    274285bool pmConceptsInit(void)
    275286{
     287    conceptsInitialised = true;
     288
    276289    bool init = false;                  // Did we initialise anything?
    277290    if (! conceptsFPA) {
     
    505518    }
    506519
    507     conceptsInitialised = true;
    508 
    509520    return init;
    510521}
Note: See TracChangeset for help on using the changeset viewer.