Changeset 6573 for branches/rel10_ifa/psModules/src/astrom/pmFPAfile.c
- Timestamp:
- Mar 13, 2006, 4:21:07 PM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/rel10_ifa/psModules/src/astrom/pmFPAfile.c
r6568 r6573 3 3 #include "pmHDU.h" 4 4 #include "pmFPA.h" 5 #include "pmFPAConstruct.h" 5 6 #include "pmFPAview.h" 6 7 #include "pmFPAfile.h" 8 #include "pmFPARead.h" 9 #include "pmFPAWrite.h" 7 10 #include "pmFPAviewObjectsIO.h" 8 11 … … 40 43 41 44 // XXX is a file allowed to be both READ and WRITE? 42 pmFPAfile *pmFPAfileDefine (p mFPAview *view, psMetadata *camera, char *name)45 pmFPAfile *pmFPAfileDefine (psMetadata *files, psMetadata *camera, pmFPA *fpa, char *name) 43 46 { 44 47 … … 49 52 psMetadata *data = psMetadataLookupPtr (&status, camera, name); 50 53 if (data == NULL) { 51 return false;54 return NULL; 52 55 } 53 56 … … 114 117 } 115 118 119 if (fpa == NULL) { 120 fpa = pmFPAConstruct (camera); 121 } 122 file->fpa = fpa; 123 124 psMetadataAddPtr (files, PS_LIST_TAIL, name, PS_META_REPLACE, "", file); 116 125 return (file); 117 126 } 118 127 119 bool pmFPAfileOpen (pmFPAfile *file, pmFPAview *view , psMetadata *camera)128 bool pmFPAfileOpen (pmFPAfile *file, pmFPAview *view) 120 129 { 121 130 … … 130 139 131 140 // determine the file name 132 file->filename = pmFPAviewNameFromRule (file->filerule, view );141 file->filename = pmFPAviewNameFromRule (file->filerule, view, file->fpa); 133 142 134 143 // indirect filenames 135 144 if (!strcasecmp (file->filename, "@FPAIO")) { 136 extra = pmFPAviewNameFromRule (file->filextra, view );137 file->filename = psMetadataLookupStr (&status, view->IO, extra);145 extra = pmFPAviewNameFromRule (file->filextra, view, file->fpa); 146 file->filename = psMetadataLookupStr (&status, file->names, extra); 138 147 } 139 148 if (!strcasecmp (file->filename, "@DETDB")) { 140 extra = pmFPAviewNameFromRule (file->filextra, view );149 extra = pmFPAviewNameFromRule (file->filextra, view, file->fpa); 141 150 // file->filename = pmDetrendSelect (extra); 142 151 } … … 165 174 switch (file->type) { 166 175 case PM_FPA_FILE_IMAGE: 167 pmFPAviewReadFitsImage (view, file ->fits);176 pmFPAviewReadFitsImage (view, file); 168 177 break; 169 178 … … 216 225 } 217 226 227 bool pmFPAfileClose (pmFPAfile *file, pmFPAview *view) 228 { 229 // is current depth == open depth? 230 pmFPAdepth depth = pmFPAviewDepth (view); 231 if (file->openDepth != depth) { 232 return false; 233 } 234 235 // check if we are actually open 236 psFitsClose (file->fits); 237 return true; 238 } 239 218 240 // attempt open and read for all pmFPAfiles in view->IO 219 bool pmFPAfileIOCheck (pmFPAview *view, psMetadata *camera) 220 { 221 241 bool pmFPAfileReadChecks (psMetadata *files, pmFPAview *view) 242 { 222 243 // recipe override values (command-line options): 223 244 psMetadataItem *item = NULL; 224 psMetadataIterator *iter = psMetadataIteratorAlloc ( view->IO, PS_LIST_HEAD, NULL);245 psMetadataIterator *iter = psMetadataIteratorAlloc (files, PS_LIST_HEAD, NULL); 225 246 while ((item = psMetadataGetAndIncrement (iter)) != NULL) { 226 247 pmFPAfile *file = item->data.V; 227 248 228 pmFPAfileOpen (file, view , camera);249 pmFPAfileOpen (file, view); 229 250 pmFPAfileRead (file, view); 230 251 } … … 232 253 return true; 233 254 } 255 256 // attempt open and read for all pmFPAfiles in view->IO 257 bool pmFPAfileWriteChecks (psMetadata *files, pmFPAview *view) 258 { 259 // recipe override values (command-line options): 260 psMetadataItem *item = NULL; 261 psMetadataIterator *iter = psMetadataIteratorAlloc (files, PS_LIST_HEAD, NULL); 262 while ((item = psMetadataGetAndIncrement (iter)) != NULL) { 263 pmFPAfile *file = item->data.V; 264 265 pmFPAfileWrite (file, view); 266 pmFPAfileClose (file, view); 267 } 268 psFree (iter); 269 return true; 270 } 271 272 psImage *pmFPAfileReadoutImage (psMetadata *files, pmFPAview *view, char *name, int Nx, int Ny, int type) 273 { 274 bool status; 275 psImage *image = NULL; 276 277 // I want an image from the 278 pmFPA *fpa = psMetadataLookupPtr (&status, files, name); 279 if (fpa == NULL) { 280 // use Nx or Ny == 0 to avoid creating an image 281 if (Nx*Ny <= 0) { 282 return NULL; 283 } 284 image = psImageAlloc (Nx, Ny, type); 285 return (image); 286 } 287 288 // inconsistent result: return NULL 289 pmReadout *readout = pmFPAviewThisReadout (view, fpa); 290 if (readout == NULL) { 291 return NULL; 292 } 293 294 // resize the existing readout??? this is wrong... 295 // need to allocate it if it does not exist... 296 image = psImageRecycle (readout->image, Nx, Ny, type); 297 psMemIncrRefCounter (image); 298 return (image); 299 } 300 301 # if (0) 302 // return the named pmFPAfile 303 pmFPAfile *pmFPAfileSelect (pmFPAview *view, char *name) 304 { 305 306 // select the name from the camera config data 307 pmFPAfile *file = psMetadataLookupPtr (&status, view->IO, name); 308 if (file == NULL) { 309 return NULL; 310 } 311 return file; 312 } 313 314 bool pmFPAfileWriteChecks (pmFPAview *view, char *name) 315 { 316 317 pmFPAfile *file = pmFPAfileSelect (view, name); 318 pmFPAfileWrite (file, view); 319 return true; 320 } 321 #endif 322 323 // given an already-opened fits file, read the components corresponding 324 // to the specified view 325 bool pmFPAviewReadFitsImage (pmFPAview *view, pmFPAfile *file) 326 { 327 pmFPA *fpa = file->fpa; 328 psFits *fits = file->fits; 329 330 if (view->chip == -1) { 331 pmFPARead (fpa, fits, NULL); 332 return true; 333 } 334 335 if (view->chip >= fpa->chips->n) { 336 return false; 337 } 338 pmChip *chip = fpa->chips->data[view->chip]; 339 340 if (view->cell == -1) { 341 pmChipRead (chip, fits, NULL); 342 return true; 343 } 344 345 if (view->cell >= chip->cells->n) { 346 return false; 347 } 348 pmCell *cell = chip->cells->data[view->cell]; 349 350 if (view->readout == -1) { 351 pmCellRead (cell, fits, NULL); 352 return true; 353 } 354 355 // XXX pmReadoutRead, pmReadoutReadSegement disabled for now 356 return false; 357 358 # if (0) 359 360 if (view->readout >= cell->readouts->n) { 361 return false; 362 } 363 pmReadout *readout = cell->readouts->data[view->readout]; 364 365 if (view->nRows == 0) { 366 pmReadoutRead (readout, fits, NULL); 367 } else { 368 pmReadoutReadSegment (readout, fits, view->nRows, view->iRows, NULL, NULL); 369 } 370 return true; 371 # endif 372 } 373 374 // XXX image writes disabled for now 375 # if (0) 376 // given an already-opened fits file, write the components corresponding 377 // to the specified view 378 bool pmFPAviewWriteFitsImage (pmFPAview *view, pmFPAfile *file) 379 { 380 381 pmFPA *fpa = file->fpa; 382 psFits *fits = file->fits; 383 384 if (view->chip == -1) { 385 pmFPAWrite (fpa, fits, NULL, NULL); 386 return true; 387 } 388 389 if (view->chip >= fpa->chips->n) { 390 return false; 391 } 392 pmChip *chip = fpa->chips->data[view->chip]; 393 394 if (view->cell == -1) { 395 pmChipWrite (chip, fits, NULL, NULL); 396 return true; 397 } 398 399 if (view->cell >= chip->cells->n) { 400 return false; 401 } 402 pmCell *cell = chip->cells->data[view->cell]; 403 404 if (view->readout == -1) { 405 pmCellWrite (cell, fits, NULL, NULL); 406 return true; 407 } 408 409 if (view->readout >= cell->readouts->n) { 410 return false; 411 } 412 pmReadout *readout = cell->readouts->data[view->readout]; 413 414 if (view->nRows == 0) { 415 pmReadoutWrite (readout, fits, NULL, NULL); 416 } else { 417 pmReadoutWriteSegment (readout, fits, view->nRows, view->iRows, NULL, NULL); 418 } 419 return true; 420 } 421 # endif
Note:
See TracChangeset
for help on using the changeset viewer.
