Changeset 6568 for branches/rel10_ifa/psModules/src/astrom/pmFPAfile.c
- Timestamp:
- Mar 9, 2006, 10:56:39 AM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/rel10_ifa/psModules/src/astrom/pmFPAfile.c
r6565 r6568 1 1 #include <stdio.h> 2 2 #include "pslib.h" 3 #include "pmHDU.h" 4 #include "pmFPA.h" 3 5 #include "pmFPAview.h" 4 6 #include "pmFPAfile.h" 5 6 static void pmPFAfileFree (pmFPAfile *file) 7 #include "pmFPAviewObjectsIO.h" 8 9 static void pmFPAfileFree (pmFPAfile *file) 7 10 { 8 11 … … 10 13 return; 11 14 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); 13 22 return; 14 23 } … … 18 27 19 28 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; 22 38 return (file); 23 39 } 24 40 25 pmFile *pmFPAfileDefine (pmFPAview *view, psMetadata *camera, char *name) 26 { 41 // XXX is a file allowed to be both READ and WRITE? 42 pmFPAfile *pmFPAfileDefine (pmFPAview *view, psMetadata *camera, char *name) 43 { 44 45 bool status; 46 char *depth; 27 47 28 48 // select the name from the camera config data 29 psMetadata *data = psMetadataLookup (&status, camera, name);49 psMetadata *data = psMetadataLookupPtr (&status, camera, name); 30 50 if (data == NULL) { 31 51 return false; … … 39 59 40 60 file->openDepth = PM_FPA_DEPTH_NONE; 41 char *depth = psMetadataLookupStr (&status, data, "OPEN.DEPTH");61 depth = psMetadataLookupStr (&status, data, "OPEN.DEPTH"); 42 62 if (depth != NULL) { 43 63 if (!strcasecmp (depth, "FPA")) { … … 56 76 57 77 file->readDepth = PM_FPA_DEPTH_NONE; 58 char *depth = psMetadataLookupStr (&status, data, "READ.DEPTH");78 depth = psMetadataLookupStr (&status, data, "READ.DEPTH"); 59 79 if (depth != NULL) { 60 80 if (!strcasecmp (depth, "FPA")) { … … 73 93 74 94 file->writeDepth = PM_FPA_DEPTH_NONE; 75 char *depth = psMetadataLookupStr (&status, data, "WRITE.DEPTH");95 depth = psMetadataLookupStr (&status, data, "WRITE.DEPTH"); 76 96 if (depth != NULL) { 77 97 if (!strcasecmp (depth, "FPA")) { 78 file-> readDepth = PM_FPA_DEPTH_FPA;98 file->writeDepth = PM_FPA_DEPTH_FPA; 79 99 } 80 100 if (!strcasecmp (depth, "CHIP")) { 81 file-> readDepth = PM_FPA_DEPTH_CHIP;101 file->writeDepth = PM_FPA_DEPTH_CHIP; 82 102 } 83 103 if (!strcasecmp (depth, "CELL")) { 84 file-> readDepth = PM_FPA_DEPTH_CELL;104 file->writeDepth = PM_FPA_DEPTH_CELL; 85 105 } 86 106 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 90 116 return (file); 91 117 } … … 94 120 { 95 121 122 bool status; 123 char *extra; 124 96 125 // is current depth == open depth? 97 depth = pmFPAviewDepth (view);126 pmFPAdepth depth = pmFPAviewDepth (view); 98 127 if (file->openDepth != depth) { 99 128 return false; … … 101 130 102 131 // determine the file name 103 file->filename = pm ConfigNameFromRule (file->filerule, view);132 file->filename = pmFPAviewNameFromRule (file->filerule, view); 104 133 105 134 // indirect filenames 106 135 if (!strcasecmp (file->filename, "@FPAIO")) { 107 extra = pm ConfigNameFromRule (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); 109 138 } 110 139 if (!strcasecmp (file->filename, "@DETDB")) { 111 extra = pm ConfigNameFromRule (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) { 116 145 file->fits = psFitsOpen (file->filename, "r"); 117 } else {146 } else if (file->writeDepth != PM_FPA_DEPTH_NONE) { 118 147 file->fits = psFitsOpen (file->filename, "w"); 119 148 } 120 } 121 122 bool pmFPAfileRead (pmFPAfile *file, pmFPAview *view, psMetadata *camera) 149 return true; 150 } 151 152 bool pmFPAfileRead (pmFPAfile *file, pmFPAview *view) 123 153 { 124 154 125 155 // is current depth == open depth? 126 depth = pmFPAviewDepth (view);156 pmFPAdepth depth = pmFPAviewDepth (view); 127 157 if (file->readDepth != depth) { 128 158 return false; 129 159 } 130 160 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 184 bool pmFPAfileWrite (pmFPAfile *file, pmFPAview *view) 147 185 { 148 186 149 187 // is current depth == open depth? 150 depth = pmFPAviewDepth (view);188 pmFPAdepth depth = pmFPAviewDepth (view); 151 189 if (file->writeDepth != depth) { 152 190 return false; 153 191 } 154 192 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; 168 216 } 169 217 … … 179 227 180 228 pmFPAfileOpen (file, view, camera); 181 pmFPAfileRead (file, view , camera);229 pmFPAfileRead (file, view); 182 230 } 183 231 psFree (iter);
Note:
See TracChangeset
for help on using the changeset viewer.
