Changeset 6726 for branches/rel10_ifa/psModules/src/astrom/pmFPAfile.c
- Timestamp:
- Mar 29, 2006, 10:55:42 AM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/rel10_ifa/psModules/src/astrom/pmFPAfile.c
r6713 r6726 1 1 #include <stdio.h> 2 2 #include "pslib.h" 3 #include "psAdditionals.h" 3 4 #include "pmHDU.h" 4 5 #include "pmFPA.h" … … 19 20 psFree (file->names); 20 21 21 psFitsClose (file->fits); 22 if (file->fits != NULL) { 23 psFitsClose (file->fits); 24 } 22 25 23 26 psFree (file->filerule); … … 26 29 psFree (file->extxtra); 27 30 28 // these are just views: 29 // psFree (file->filename); 30 // psFree (file->extname); 31 psFree (file->filename); 32 psFree (file->extname); 33 34 // these are just views ?? 31 35 // psFree (file->phu); 32 36 // psFree (file->header); … … 63 67 } 64 68 65 // XXX is a file allowed to be both READ and WRITE?66 69 pmFPAfile *pmFPAfileDefine (psMetadata *files, psMetadata *format, pmFPA *fpa, char *name) 67 70 { … … 195 198 } 196 199 197 // open file (if not already opened XXX : better tracking of open state?198 bool pmFPAfileOpen (pmFPAfile *file, pmFPAview *view)200 // open file (if not already opened) 201 bool pmFPAfileOpen (pmFPAfile *file, const pmFPAview *view) 199 202 { 200 203 … … 220 223 221 224 // determine the file name 222 // XXX file->filename needs to be a copy, and freed in places like this...223 225 file->filename = pmFPAfileNameFromRule (file->filerule, file, view); 224 226 if (file->filename == NULL) … … 227 229 // indirect filenames 228 230 if (!strcasecmp (file->filename, "@FPAIO")) { 231 psFree (file->filename); 229 232 extra = pmFPAfileNameFromRule (file->filextra, file, view); 230 233 file->filename = psMetadataLookupStr (&status, file->names, extra); 234 psFree (extra); 231 235 if (file->filename == NULL) 232 236 return false; 237 // psMetadataLookupStr just returns a view, file->filename must be protected 238 psMemIncrRefCounter (file->filename); 233 239 } 234 240 if (!strcasecmp (file->filename, "@DETDB")) { 241 psFree (file->filename); 235 242 extra = pmFPAfileNameFromRule (file->filextra, file, view); 236 243 // file->filename = pmDetrendSelect (extra); 244 psFree (extra); 237 245 if (file->filename == NULL) 238 246 return false; 247 psMemIncrRefCounter (file->filename); 239 248 } 240 249 … … 263 272 } 264 273 265 bool pmFPAfileRead (pmFPAfile *file, pmFPAview *view)274 bool pmFPAfileRead (pmFPAfile *file, const pmFPAview *view) 266 275 { 267 276 if (file->mode != PM_FPA_MODE_READ) … … 305 314 } 306 315 307 bool pmFPAfileWrite (pmFPAfile *file, pmFPAview *view)316 bool pmFPAfileWrite (pmFPAfile *file, const pmFPAview *view) 308 317 { 309 318 if (file->mode != PM_FPA_MODE_WRITE) … … 324 333 switch (file->type) { 325 334 case PM_FPA_FILE_IMAGE: 326 psLogMsg (__func__, 3, "write image disabled\n"); 327 // XXX disabled for now 328 // XXX pmFPAviewWriteFitsImage (view, file->fits); 335 pmFPAviewWriteFitsImage (view, file); 336 psTrace ("pmFPAfile", 5, "wrote image %s (fpa: %p)\n", file->filename, file->fpa); 329 337 break; 330 338 … … 335 343 case PM_FPA_FILE_CMF: 336 344 pmFPAviewWriteObjects (view, file); 337 psTrace ("pmFPAfile", 5, "wrote %s (type: %d)\n", file->filename, file->type);345 psTrace ("pmFPAfile", 5, "wrote object %s (fpa: %p)\n", file->filename, file->fpa); 338 346 break; 339 347 … … 345 353 } 346 354 347 bool pmFPAfileClose (pmFPAfile *file, pmFPAview *view)355 bool pmFPAfileClose (pmFPAfile *file, const pmFPAview *view) 348 356 { 349 357 if (file->state == PM_FPA_STATE_CLOSED) { … … 385 393 386 394 // attempt open, read, write, or close pmFPAfiles in files 387 bool pmFPAfileIOChecks (psMetadata *files, pmFPAview *view, pmFPAfilePlace place)395 bool pmFPAfileIOChecks (psMetadata *files, const pmFPAview *view, pmFPAfilePlace place) 388 396 { 389 397 // recipe override values (command-line options): … … 405 413 406 414 // select the rule from the camera configuration, perform substitutions as needed 407 char *pmFPAfileNameFromRule (char *rule, pmFPAfile *file, pmFPAview *view)415 char *pmFPAfileNameFromRule (char *rule, pmFPAfile *file, const pmFPAview *view) 408 416 { 409 417 … … 445 453 } 446 454 447 psImage *pmFPAfileReadoutImage (psMetadata *files, pmFPAview *view, char *name, int Nx, int Ny, int type)455 psImage *pmFPAfileReadoutImage (psMetadata *files, const pmFPAview *view, char *name, int Nx, int Ny, int type) 448 456 { 449 457 bool status; … … 476 484 // given an already-opened fits file, read the components corresponding 477 485 // to the specified view 478 bool pmFPAviewReadFitsImage ( pmFPAview *view, pmFPAfile *file)486 bool pmFPAviewReadFitsImage (const pmFPAview *view, pmFPAfile *file) 479 487 { 480 488 bool status; … … 506 514 return status; 507 515 } 516 return false; 508 517 509 518 // XXX pmReadoutRead, pmReadoutReadSegement disabled for now 510 return false;511 512 519 # if (0) 513 520 … … 526 533 } 527 534 528 // XXX image writes disabled for now 529 # if (0) 530 // given an already-opened fits file, write the components corresponding 531 // to the specified view 532 bool pmFPAviewWriteFitsImage (pmFPAview *view, pmFPAfile *file) 535 // given an already-opened fits file, write the components corresponding 536 // to the specified view 537 bool pmFPAviewWriteFitsImage (const pmFPAview *view, pmFPAfile *file) 533 538 { 534 539 … … 536 541 psFits *fits = file->fits; 537 542 543 // pmFPAWrite takes care of all PHUs as needed 538 544 if (view->chip == -1) { 539 pmFPAWrite (fpa, fits, NULL , NULL);545 pmFPAWrite (fpa, fits, NULL); 540 546 return true; 541 547 } … … 546 552 pmChip *chip = fpa->chips->data[view->chip]; 547 553 554 // do we need to write out a PHU for this entry? 555 if (file->phu == NULL) { 556 pmHDU *hdu = pmFPAviewThisHDU (view, file->fpa); 557 pmHDU *phu = pmFPAviewThisPHU (view, file->fpa); 558 // if this hdu is the phu, the write function below will create the phu 559 if (hdu != phu) { 560 // we assume that the PHU is just a header 561 psMetadata *outhead = psMetadataCopy (NULL, phu->header); 562 psMetadataAdd (outhead, PS_LIST_TAIL, "EXTEND", PS_DATA_BOOL | PS_META_REPLACE, "this file has extensions", true); 563 psFitsWriteHeaderNotImage (file->fits, outhead); 564 file->phu = phu->header; 565 psTrace ("pmFPAfile", 5, "wrote phu %s (type: %d)\n", file->filename, file->type); 566 psFree (outhead); 567 } 568 } 569 548 570 if (view->cell == -1) { 549 pmChipWrite (chip, fits, NULL , NULL);571 pmChipWrite (chip, fits, NULL); 550 572 return true; 551 573 } … … 557 579 558 580 if (view->readout == -1) { 559 pmCellWrite (cell, fits, NULL , NULL);581 pmCellWrite (cell, fits, NULL); 560 582 return true; 561 583 } 562 563 if (view->readout >= cell->readouts->n) { 564 return false; 565 } 584 return false; 585 586 // XXX disable readout write for now 587 # if (0) 588 589 if (view->readout >= cell->readouts->n) { 590 return false; 591 } 566 592 pmReadout *readout = cell->readouts->data[view->readout]; 567 593 … … 572 598 } 573 599 return true; 574 } 575 # endif 600 # endif 601 }
Note:
See TracChangeset
for help on using the changeset viewer.
