IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Mar 9, 2006, 10:56:39 AM (20 years ago)
Author:
magnier
Message:

fixed compile errors in the new pmFPAview and pmFPAfile

File:
1 edited

Legend:

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

    r6565 r6568  
    11#include <stdio.h>
    22#include "pslib.h"
     3#include "pmHDU.h"
     4#include "pmFPA.h"
    35#include "pmFPAview.h"
    46#include "pmFPAfile.h"
    5 
    6 static void pmPFAfileFree (pmFPAfile *file)
     7#include "pmFPAviewObjectsIO.h"
     8
     9static void pmFPAfileFree (pmFPAfile *file)
    710{
    811
     
    1013        return;
    1114
    12     // psFree (file->element);
     15    psFree (file->fits);
     16    psFree (file->filerule);
     17    psFree (file->filextra);
     18    psFree (file->extrule);
     19    psFree (file->extxtra);
     20    psFree (file->filename);
     21    psFree (file->extname);
    1322    return;
    1423}
     
    1827
    1928    pmFPAfile *file = psAlloc (sizeof(pmFPAfile));
    20 
    21     // file->element = foo;
     29    psMemSetDeallocator (file, (psFreeFunc) pmFPAfileFree);
     30
     31    file->fits = NULL;
     32    file->filerule = NULL;
     33    file->filextra = NULL;
     34    file->extrule  = NULL;
     35    file->extxtra  = NULL;
     36    file->filename = NULL;
     37    file->extname  = NULL;
    2238    return (file);
    2339}
    2440
    25 pmFile *pmFPAfileDefine (pmFPAview *view, psMetadata *camera, char *name)
    26 {
     41// XXX is a file allowed to be both READ and WRITE?
     42pmFPAfile *pmFPAfileDefine (pmFPAview *view, psMetadata *camera, char *name)
     43{
     44
     45    bool status;
     46    char *depth;
    2747
    2848    // select the name from the camera config data
    29     psMetadata *data = psMetadataLookup (&status, camera, name);
     49    psMetadata *data = psMetadataLookupPtr (&status, camera, name);
    3050    if (data == NULL) {
    3151        return false;
     
    3959
    4060    file->openDepth = PM_FPA_DEPTH_NONE;
    41     char *depth = psMetadataLookupStr (&status, data, "OPEN.DEPTH");
     61    depth = psMetadataLookupStr (&status, data, "OPEN.DEPTH");
    4262    if (depth != NULL) {
    4363        if (!strcasecmp (depth, "FPA"))     {
     
    5676
    5777    file->readDepth = PM_FPA_DEPTH_NONE;
    58     char *depth = psMetadataLookupStr (&status, data, "READ.DEPTH");
     78    depth = psMetadataLookupStr (&status, data, "READ.DEPTH");
    5979    if (depth != NULL) {
    6080        if (!strcasecmp (depth, "FPA"))     {
     
    7393
    7494    file->writeDepth = PM_FPA_DEPTH_NONE;
    75     char *depth = psMetadataLookupStr (&status, data, "WRITE.DEPTH");
     95    depth = psMetadataLookupStr (&status, data, "WRITE.DEPTH");
    7696    if (depth != NULL) {
    7797        if (!strcasecmp (depth, "FPA"))     {
    78             file->readDepth = PM_FPA_DEPTH_FPA;
     98            file->writeDepth = PM_FPA_DEPTH_FPA;
    7999        }
    80100        if (!strcasecmp (depth, "CHIP"))    {
    81             file->readDepth = PM_FPA_DEPTH_CHIP;
     101            file->writeDepth = PM_FPA_DEPTH_CHIP;
    82102        }
    83103        if (!strcasecmp (depth, "CELL"))    {
    84             file->readDepth = PM_FPA_DEPTH_CELL;
     104            file->writeDepth = PM_FPA_DEPTH_CELL;
    85105        }
    86106        if (!strcasecmp (depth, "READOUT")) {
    87             file->readDepth = PM_FPA_DEPTH_READOUT;
    88         }
    89     }
     107            file->writeDepth = PM_FPA_DEPTH_READOUT;
     108        }
     109    }
     110
     111    if ((file->readDepth != PM_FPA_DEPTH_NONE) && (file->writeDepth != PM_FPA_DEPTH_NONE)) {
     112        psLogMsg (__func__, 3, "warning: file %s is set to both read and write; write is ignored\n", name);
     113        file->writeDepth = PM_FPA_DEPTH_NONE;
     114    }
     115
    90116    return (file);
    91117}
     
    94120{
    95121
     122    bool status;
     123    char *extra;
     124
    96125    // is current depth == open depth?
    97     depth = pmFPAviewDepth (view);
     126    pmFPAdepth depth = pmFPAviewDepth (view);
    98127    if (file->openDepth != depth) {
    99128        return false;
     
    101130
    102131    // determine the file name
    103     file->filename = pmConfigNameFromRule (file->filerule, view);
     132    file->filename = pmFPAviewNameFromRule (file->filerule, view);
    104133
    105134    // indirect filenames
    106135    if (!strcasecmp (file->filename, "@FPAIO")) {
    107         extra = pmConfigNameFromRule (file->filextra, view);
    108         file->filename = psMetadataLookupStr (&status, fpi->IO, extra);
     136        extra = pmFPAviewNameFromRule (file->filextra, view);
     137        file->filename = psMetadataLookupStr (&status, view->IO, extra);
    109138    }
    110139    if (!strcasecmp (file->filename, "@DETDB")) {
    111         extra = pmConfigNameFromRule (file->filextra, camera, view);
    112         file->filename = pmDetrendSelect (extra);
    113     }
    114 
    115     if (file->mode == READ) {
     140        extra = pmFPAviewNameFromRule (file->filextra, view);
     141        // file->filename = pmDetrendSelect (extra);
     142    }
     143
     144    if (file->readDepth != PM_FPA_DEPTH_NONE) {
    116145        file->fits = psFitsOpen (file->filename, "r");
    117     } else {
     146    } else if (file->writeDepth != PM_FPA_DEPTH_NONE) {
    118147        file->fits = psFitsOpen (file->filename, "w");
    119148    }
    120 }
    121 
    122 bool pmFPAfileRead (pmFPAfile *file, pmFPAview *view, psMetadata *camera)
     149    return true;
     150}
     151
     152bool pmFPAfileRead (pmFPAfile *file, pmFPAview *view)
    123153{
    124154
    125155    // is current depth == open depth?
    126     depth = pmFPAviewDepth (view);
     156    pmFPAdepth depth = pmFPAviewDepth (view);
    127157    if (file->readDepth != depth) {
    128158        return false;
    129159    }
    130160
    131     if (file->mode != READ) {
    132         return false;
    133     }
    134 
    135     if (file->type == FITS) {
    136         // read all selected elements for this view?
    137         pmFPAviewReadFitsImage (view, file->fits, phu?, database?);
    138     }
    139 
    140     if (file->type == SMP) {
    141         // read all selected elements for this view?
    142         pmFPAviewReadSMP (view->fpa, file->fits, phu?, database?);
    143     }
    144 }
    145 
    146 bool pmFPAfileWrite (pmFPAfile *file, pmFPAview *view, psMetadata *camera)
     161    if (file->readDepth == PM_FPA_DEPTH_NONE) {
     162        return false;
     163    }
     164
     165    switch (file->type) {
     166    case PM_FPA_FILE_IMAGE:
     167        pmFPAviewReadFitsImage (view, file->fits);
     168        break;
     169
     170    case PM_FPA_FILE_SX:
     171    case PM_FPA_FILE_OBJ:
     172    case PM_FPA_FILE_CMP:
     173    case PM_FPA_FILE_CMF:
     174        pmFPAviewReadObjects (view, file);
     175        break;
     176
     177    default:
     178        fprintf (stderr, "warning: type mismatch\n");
     179        return false;
     180    }
     181    return true;
     182}
     183
     184bool pmFPAfileWrite (pmFPAfile *file, pmFPAview *view)
    147185{
    148186
    149187    // is current depth == open depth?
    150     depth = pmFPAviewDepth (view);
     188    pmFPAdepth depth = pmFPAviewDepth (view);
    151189    if (file->writeDepth != depth) {
    152190        return false;
    153191    }
    154192
    155     if (file->mode != WRITE) {
    156         return false;
    157     }
    158 
    159     if (file->type == FITS) {
    160         // read all selected elements for this view?
    161         pmFPAviewWriteFitsImage (view, file->fits, phu?, database?);
    162     }
    163 
    164     if (file->type == SMP) {
    165         // read all selected elements for this view?
    166         pmFPAviewWriteSMP (view->fpa, file->fits, phu?, database?);
    167     }
     193    if (file->writeDepth == PM_FPA_DEPTH_NONE) {
     194        return false;
     195    }
     196
     197    switch (file->type) {
     198    case PM_FPA_FILE_IMAGE:
     199        psLogMsg (__func__, 3, "write image disabled\n");
     200        // XXX disabled for now
     201        // XXX pmFPAviewWriteFitsImage (view, file->fits);
     202        break;
     203
     204    case PM_FPA_FILE_SX:
     205    case PM_FPA_FILE_OBJ:
     206    case PM_FPA_FILE_CMP:
     207    case PM_FPA_FILE_CMF:
     208        pmFPAviewWriteObjects (view, file);
     209        break;
     210
     211    default:
     212        fprintf (stderr, "warning: type mismatch\n");
     213        return false;
     214    }
     215    return true;
    168216}
    169217
     
    179227
    180228        pmFPAfileOpen (file, view, camera);
    181         pmFPAfileRead (file, view, camera);
     229        pmFPAfileRead (file, view);
    182230    }
    183231    psFree (iter);
Note: See TracChangeset for help on using the changeset viewer.