IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 18, 2007, 8:46:45 AM (19 years ago)
Author:
eugene
Message:

return NULL if field is not founddvo/dbFields.c

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/dvo/mextract.c

    r14191 r14287  
    44 
    55  int i, j, k, m, n, N, N1, Npts, NPTS, last, Nfields, Nreturn, Ncstack, Nstack;
    6   int param, mode, Nsecfilt;
     6  int Nsecfilt, VERBOSE, loadImages, mosaicMode;
    77  char *RegionName, *RegionList, *p;
    88  double *M1;
    99  char **cstack, name[1024];
    1010  float *values;
     11  void *Signal;
    1112
    1213  Catalog catalog;
     
    2223  RegionList = NULL;
    2324  code = NULL;
    24   mode = MAG_REL;
    2525  fields = NULL;
    2626  stack = NULL;
     27
     28  VERBOSE = FALSE;
     29  if ((N = get_argument (argc, argv, "-v"))) {
     30    remove_argument (N, &argc, argv);
     31    VERBOSE = TRUE;
     32  }
    2733
    2834  dvo_catalog_init (&catalog, TRUE);
     
    5056  // construct the db Boolean math stack (frees cstack)
    5157  stack = dbRPN (Ncstack, cstack, &Nstack);
     58  if ((Ncstack > 0) && (Nstack < 1)) {
     59    print_error ();
     60    goto escape;
     61  }
    5262
    5363  Nreturn = Nfields;
     
    5969
    6070  // XXX is this still needed?
    61   // if (!SetImageSelection (param, ((RegionName == NULL) && (RegionList == NULL)))) goto escape;
     71  loadImages = FALSE;
     72  mosaicMode = FALSE;
     73  for (i = 0; !loadImages && (i < Nfields); i++) {
     74    if (fields[i].ID == MEAS_XCCD) loadImages = TRUE;
     75    if (fields[i].ID == MEAS_YCCD) loadImages = TRUE;
     76    if (fields[i].ID == MEAS_XMOSAIC) loadImages = mosaicMode = TRUE;
     77    if (fields[i].ID == MEAS_YMOSAIC) loadImages = mosaicMode = TRUE;
     78  }
     79  if (loadImages && !SetImageSelection (mosaicMode, ((RegionName == NULL) && (RegionList == NULL)))) goto escape;
    6280
    6381  /* create storage vector */
     
    7694  NPTS = 1;
    7795
    78   // XXX need to add interrupt test to this loop
    79   for (i = 0; i < skylist[0].Nregions; i++) {
     96  // grab data from all selected sky regions
     97  Signal = signal (SIGINT, handle_interrupt);
     98  interrupt = FALSE;
     99  for (i = 0; (i < skylist[0].Nregions) && !interrupt; i++) {
    80100    /* lock, load, unlock catalog */
    81101    catalog.filename = skylist[0].filename[i];
     
    83103    catalog.Nsecfilt = Nsecfilt;
    84104
     105    if (VERBOSE) gprint (GP_ERR, "trying %s (%d of %d)\n", catalog.filename, i, skylist[0].Nregions);
     106     
    85107    // an error exit status here is a significant error
    86108    if (!dvo_catalog_open (&catalog, NULL, FALSE, "r")) {
    87       fprintf (stderr, "ERROR: failure to open catalog file %s\n", catalog.filename);
     109      gprint (GP_ERR, "ERROR: failure to open catalog file %s\n", catalog.filename);
    88110      exit (2);
    89111    }
     
    92114    /* XXX need to call dvo_catalog_chipcoords here passing the loaded images */
    93115
    94     for (j = 0; j < catalog.Naverage; j++) {
     116    for (j = 0; (j < catalog.Naverage) && !interrupt; j++) {
    95117      m = catalog.average[j].offset;
    96118      for (k = 0; k < catalog.average[j].Nm; k++, m++) {
     
    117139    dvo_catalog_free (&catalog);
    118140  }
     141  signal (SIGINT, Signal);
     142  interrupt = FALSE;
     143
    119144  for (n = 0; n < Nreturn; n++) {
    120145    vec[n][0].Nelements = Npts;
    121146    REALLOCATE (vec[n][0].elements, float, MAX(1,Npts));
    122147  }
    123 
    124148  dbFreeFields (fields, Nfields);
    125149  dbFreeStack (stack, Nstack);
     150
    126151  FreeImageSelection ();
    127152  SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
     153
    128154  if (RegionName != NULL) free (RegionName);
    129155  if (RegionList != NULL) free (RegionList);
Note: See TracChangeset for help on using the changeset viewer.