IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Oct 12, 2006, 11:38:28 AM (20 years ago)
Author:
Paul Price
Message:

Adding FPA.TIME, FPA.TIMESYS. Genericized the parse and format functions for CELL.TIME and CELL.TIMESYS so that they can be used for the FPA versions as well.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/concepts/pmConceptsStandard.c

    r8848 r9510  
    282282
    283283
    284 psMetadataItem *p_pmConceptParse_CELL_TIMESYS(psMetadataItem *concept,
     284psMetadataItem *p_pmConceptParse_TIMESYS(psMetadataItem *concept,
    285285        psMetadataItem *pattern,
    286286        psMetadata *cameraFormat,
     
    295295    psString sys = concept->data.V;     // The time system string
    296296    if (concept->type != PS_DATA_STRING || strlen(sys) <= 0) {
    297         psError(PS_ERR_UNKNOWN, true, "Can't interpret CELL.TIMESYS --- assuming UTC.\n");
     297        psError(PS_ERR_UNKNOWN, true, "Can't interpret %s --- assuming UTC.\n", pattern->name);
    298298    } else if (strcasecmp(sys, "TAI") == 0) {
    299299        timeSys = PS_TIME_TAI;
     
    305305        timeSys = PS_TIME_TT;
    306306    } else {
    307         psError(PS_ERR_UNKNOWN, true, "Can't interpret CELL.TIMESYS --- assuming UTC.\n");
     307        psError(PS_ERR_UNKNOWN, true, "Can't interpret %s --- assuming UTC.\n", pattern->name);
    308308    }
    309309
     
    311311}
    312312
    313 psMetadataItem *p_pmConceptParse_CELL_TIME(psMetadataItem *concept,
    314         psMetadataItem *pattern,
    315         psMetadata *cameraFormat,
    316         pmFPA *fpa,
    317         pmChip *chip,
    318         pmCell *cell)
     313psMetadataItem *p_pmConceptParse_TIME(psMetadataItem *concept,
     314                                      psMetadataItem *pattern,
     315                                      psMetadata *cameraFormat,
     316                                      pmFPA *fpa,
     317                                      pmChip *chip,
     318                                      pmCell *cell)
    319319{
    320320    assert(concept);
    321321    assert(cameraFormat);
    322     assert(cell);
    323 
    324     // Need CELL.TIMESYS first
    325     bool mdok = true;                  // Result of MD lookup
    326     psTimeType timeSys = psMetadataLookupS32(&mdok, cell->concepts, "CELL.TIMESYS"); // The time system
     322
     323    // Need TIMESYS first
     324    psString timesysName = psStringCopy(pattern->name); // e.g., "CELL.TIME" --> "CELL.TIMESYS"
     325    timesysName = psStringSubstitute(timesysName, "TIMESYS", "TIME");
     326    bool mdok = false;                  // Result of MD lookup
     327    psTimeType timeSys;                 // The time system
     328    if (cell) {
     329        timeSys = psMetadataLookupS32(&mdok, cell->concepts, timesysName);
     330    }
     331    if (!mdok && chip) {
     332        timeSys = psMetadataLookupS32(&mdok, chip->concepts, timesysName);
     333    }
     334    if (!mdok && fpa) {
     335        timeSys = psMetadataLookupS32(&mdok, fpa->concepts, timesysName);
     336    }
    327337    if (!mdok) {
    328         psLogMsg(__func__, PS_LOG_WARN, "Unable to find CELL.TIMESYS in concepts --- assuming UTC.\n");
     338        psLogMsg(__func__, PS_LOG_WARN, "Unable to find %s in concepts when parsing %s --- assuming UTC.\n",
     339                 timesysName, pattern->name);
    329340        timeSys = PS_TIME_UTC;
    330341    }
     342    psFree(timesysName);
    331343
    332344    // Work out how the time is represented
     
    344356    }
    345357
    346     psString timeFormat = psMetadataLookupStr(&mdok, formats, "CELL.TIME");
     358    psString timeFormat = psMetadataLookupStr(&mdok, formats, pattern->name);
    347359    if (!mdok || strlen(timeFormat) == 0) {
    348         psError(PS_ERR_UNKNOWN, true, "Unable to find CELL.TIME in FORMATS.\n");
     360        psError(PS_ERR_UNKNOWN, true, "Unable to find %s in FORMATS.\n", pattern->name);
    349361        return NULL;
    350362    }
     
    377389            usaTime = false;
    378390        } else {
    379             psError(PS_ERR_UNKNOWN, true, "Unrecognised FORMATS option for CELL.TIME: %s --- "
    380                     "ignored.\n", timeFormat);
     391            psError(PS_ERR_UNKNOWN, true, "Unrecognised FORMATS option for %s: %s --- "
     392                    "ignored.\n", pattern->name, timeFormat);
    381393            psFree(timeFormatsIter);
    382394            psFree(timeFormats);
     
    481493                time = psTimeFromMJD(timeValue);
    482494            } else {
    483                 psError(PS_ERR_UNKNOWN, true, "Not sure how to parse CELL.TIME (%f) --- trying JD\n",
    484                         timeValue);
     495                psError(PS_ERR_UNKNOWN, true, "Not sure how to parse %s (%f) --- trying JD\n",
     496                        pattern->name, timeValue);
    485497                time = psTimeFromJD(timeValue);
    486498            }
     
    494506                time = psTimeFromMJD(timeValue);
    495507            } else {
    496                 psError(PS_ERR_UNKNOWN, true, "Not sure how to parse CELL.TIME (%f) --- trying JD\n",
    497                         timeValue);
     508                psError(PS_ERR_UNKNOWN, true, "Not sure how to parse %s (%f) --- trying JD\n",
     509                        pattern->name, timeValue);
    498510                time = psTimeFromJD(timeValue);
    499511            }
     
    501513        }
    502514    default:
    503         psError(PS_ERR_UNKNOWN, true, "Unable to parse CELL.TIME.\n");
     515        psError(PS_ERR_UNKNOWN, true, "Unable to parse %s.\n", pattern->name);
    504516        return NULL;
    505517    }
     
    652664
    653665
    654 psMetadataItem *p_pmConceptFormat_CELL_TIMESYS(psMetadataItem *concept,
     666psMetadataItem *p_pmConceptFormat_TIMESYS(psMetadataItem *concept,
    655667        psMetadata *cameraFormat,
    656668        pmFPA *fpa,
     
    681693}
    682694
    683 psMetadataItem *p_pmConceptFormat_CELL_TIME(psMetadataItem *concept,
    684         psMetadata *cameraFormat,
    685         pmFPA *fpa,
    686         pmChip *chip,
    687         pmCell *cell)
     695psMetadataItem *p_pmConceptFormat_TIME(psMetadataItem *concept,
     696                                       psMetadata *cameraFormat,
     697                                       pmFPA *fpa,
     698                                       pmChip *chip,
     699                                       pmCell *cell)
    688700{
    689701    psTime *time = concept->data.V;     // The time
     
    700712    psMetadata *formats = psMetadataLookupMD(&mdok, cameraFormat, "FORMATS"); // The formats
    701713    if (mdok && formats) {
    702         psString format = psMetadataLookupStr(&mdok, formats, "CELL.TIME"); // The formats for CELL.TIME
     714        psString format = psMetadataLookupStr(&mdok, formats, concept->name); // The formats for eg, CELL.TIME
    703715        if (mdok && format && strlen(format) > 0) {
    704716            psList *formatList = psStringSplit(format, " ,;", false); // List of formats specified
     
    732744                    separateTime = false;
    733745                } else {
    734                     psLogMsg(__func__, PS_LOG_WARN, "Unrecognised FORMATS option for CELL.TIME: %s --- "
    735                              "ignored.\n", format);
     746                    psLogMsg(__func__, PS_LOG_WARN, "Unrecognised FORMATS option for %s: %s --- "
     747                             "ignored.\n", concept->name, format);
    736748                }
    737749            }
Note: See TracChangeset for help on using the changeset viewer.