Changeset 7469
- Timestamp:
- Jun 9, 2006, 3:55:20 PM (20 years ago)
- Location:
- trunk/psModules/src
- Files:
-
- 7 edited
-
camera/pmFPAConstruct.c (modified) (4 diffs)
-
camera/pmFPAHeader.c (modified) (3 diffs)
-
camera/pmFPARead.c (modified) (5 diffs)
-
camera/pmFPAWrite.c (modified) (2 diffs)
-
concepts/pmConcepts.c (modified) (12 diffs)
-
concepts/pmConcepts.h (modified) (3 diffs)
-
concepts/pmConceptsWrite.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/camera/pmFPAConstruct.c
r7449 r7469 138 138 fpa->hdu = psMemIncrRefCounter(hdu); 139 139 bool success = true; // Success of reading concepts 140 if (hdu->header && !pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_HEADER, NULL)) {140 if (hdu->header && !pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_HEADER, false, NULL)) { 141 141 psError(PS_ERR_UNKNOWN, false, "Unable to read concepts from header.\n"); 142 142 success = false; … … 164 164 chip->hdu = psMemIncrRefCounter(hdu); 165 165 bool success = true; // Success of reading concepts 166 if (hdu->header && !pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_HEADER, true, NULL)) {166 if (hdu->header && !pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_HEADER, true, false, NULL)) { 167 167 psError(PS_ERR_UNKNOWN, false, "Unable to read concepts from header.\n"); 168 168 success = false; … … 299 299 } 300 300 301 if (!pmConceptsReadChip(newChip, PM_CONCEPT_SOURCE_DEFAULTS, false, NULL)) {301 if (!pmConceptsReadChip(newChip, PM_CONCEPT_SOURCE_DEFAULTS, false, false, NULL)) { 302 302 psError(PS_ERR_UNKNOWN, false, "Unable to read concepts from camera and defaults for chip %s\n", 303 303 chipName); … … 751 751 psFree(contentsIter); 752 752 753 if (!pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_DEFAULTS, NULL)) {753 if (!pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_DEFAULTS, true, NULL)) { 754 754 psError(PS_ERR_UNKNOWN, false, "Unable to read concepts from defaults for FPA %s. Attempting to " 755 755 "proceed anyway.\n", currentFPAname); -
trunk/psModules/src/camera/pmFPAHeader.c
r7314 r7469 6 6 #include "pmConcepts.h" 7 7 #include "pmFPAHeader.h" 8 9 //////////////////////////////////////////////////////////////////////////////////////////////////////////////10 // File-static (private) functions11 //////////////////////////////////////////////////////////////////////////////////////////////////////////////12 13 // Read concepts for all cells in a chip14 static bool chipConcepts(pmChip *chip // The chip for which to read the concepts15 )16 {17 assert(chip);18 19 bool status = true; // Status of concept reading20 status |= pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_HEADER, false, NULL);21 psArray *cells = chip->cells; // The cells22 for (int i = 0; i < cells->n; i++) {23 pmCell *cell = cells->data[i]; // The cell of interest24 if (!cell) {25 continue;26 }27 status |= pmConceptsReadCell(cell, PM_CONCEPT_SOURCE_HEADER, false, NULL);28 }29 30 return status;31 }32 33 // Read concepts for all chips in an FPA34 static bool fpaConcepts(pmFPA *fpa // The FPA for which to read the concepts35 )36 {37 assert(fpa);38 39 bool status = true; // Status of concept reading40 status |= pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_HEADER, NULL);41 psArray *chips = fpa->chips; // The chips42 for (int i = 0; i < chips->n; i++) {43 pmChip *chip = chips->data[i]; // The chip of interest44 if (!chip) {45 continue;46 }47 status |= chipConcepts(chip);48 }49 50 return status;51 }52 53 8 54 9 ////////////////////////////////////////////////////////////////////////////////////////////////////////////// … … 90 45 } 91 46 92 if (! chipConcepts(chip)) {47 if (!pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_HEADER, true, true, NULL)) { 93 48 psError(PS_ERR_UNKNOWN, false, "Unable to read concepts for chip.\n"); 94 49 return false; … … 114 69 } 115 70 116 if (! fpaConcepts(fpa)) {71 if (!pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_HEADER, true, NULL)) { 117 72 psError(PS_ERR_UNKNOWN, false, "Unable to read concepts for FPA.\n"); 118 73 return false; -
trunk/psModules/src/camera/pmFPARead.c
r7407 r7469 183 183 184 184 // Make sure we have the information we need 185 pmConceptsReadCell(cell, PM_CONCEPT_SOURCE_HEADER | PM_CONCEPT_SOURCE_CAMERA | PM_CONCEPT_SOURCE_DEFAULTS, 186 false, NULL); 185 if (!pmConceptsReadCell(cell, PM_CONCEPT_SOURCE_HEADER | PM_CONCEPT_SOURCE_CAMERA | 186 PM_CONCEPT_SOURCE_DEFAULTS, true, NULL)) { 187 psError(PS_ERR_IO, false, "Failed to read concepts for cell.\n"); 188 return false; 189 } 187 190 188 191 // Get the trim and bias sections … … 322 325 } 323 326 324 if (!pmConceptsReadCell(cell, PM_CONCEPT_SOURCE_HEADER, false, NULL)) {327 if (!pmConceptsReadCell(cell, PM_CONCEPT_SOURCE_HEADER, true, NULL)) { 325 328 psError(PS_ERR_UNKNOWN, false, "Failed to read concepts for cell"); 326 329 return false; … … 354 357 } 355 358 356 pmCellSetDataStatus (cell, true);359 pmCellSetDataStatus(cell, true); 357 360 return true; 358 361 } … … 374 377 } 375 378 if (success) { 376 pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_HEADER, false, NULL); 379 if (!pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_HEADER, true, true, NULL)) { 380 psError(PS_ERR_IO, false, "Failed to read concepts for FPA.\n"); 381 return false; 382 } 377 383 // XXX probably could just use chip->data_exists 378 pmChipSetDataStatus (chip, true);384 pmChipSetDataStatus(chip, true); 379 385 } 380 386 … … 398 404 } 399 405 if (success) { 400 pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_HEADER, NULL); 406 if (!pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_HEADER, true, NULL)) { 407 psError(PS_ERR_IO, false, "Failed to read concepts for FPA.\n"); 408 return false; 409 } 401 410 } else { 402 411 psError(PS_ERR_UNKNOWN, false, "Unable to read any chips in FPA"); -
trunk/psModules/src/camera/pmFPAWrite.c
r7278 r7469 136 136 (pixels && (hdu->images || (!hdu->images && pmHDUGenerateForChip(chip) && hdu->images)))) { // Data 137 137 success &= pmConceptsWriteChip(chip, PM_CONCEPT_SOURCE_HEADER | PM_CONCEPT_SOURCE_CAMERA | 138 PM_CONCEPT_SOURCE_DEFAULTS, false, NULL);138 PM_CONCEPT_SOURCE_DEFAULTS, false, true, NULL); 139 139 success &= pmHDUWrite(hdu, fits); 140 140 } … … 177 177 (pixels && (hdu->images || (!hdu->images && pmHDUGenerateForFPA(fpa) && hdu->images)))) { // Data 178 178 success &= pmConceptsWriteFPA(fpa, PM_CONCEPT_SOURCE_HEADER | PM_CONCEPT_SOURCE_CAMERA | 179 PM_CONCEPT_SOURCE_DEFAULTS, NULL);179 PM_CONCEPT_SOURCE_DEFAULTS, true, NULL); 180 180 success &= pmHDUWrite(hdu, fits); 181 181 } -
trunk/psModules/src/concepts/pmConcepts.c
r7447 r7469 189 189 } 190 190 191 psTrace(__func__, 3, "Writing concepts (%x %x %x): %x\n", fpa, chip, cell, source); 192 191 193 if (source & PM_CONCEPT_SOURCE_CAMERA) { 192 194 pmConceptsWriteToCamera(*specs, cell, concepts); … … 218 220 bool pmConceptsReadFPA(pmFPA *fpa, // FPA for which to read concepts 219 221 pmConceptSource source, // The source of the concepts to read 220 psDB *db // Database handle 222 bool propagateDown, // Propagate to lower levels? 223 psDB *db // Database handle 221 224 ) 222 225 { 223 226 PS_ASSERT_PTR_NON_NULL(fpa, false); 224 227 psTrace("psModule.concepts", 5, "Reading FPA concepts: %x %x\n", conceptsFPA, fpa->concepts); 225 return conceptsRead(&conceptsFPA, fpa, NULL, NULL, &fpa->conceptsRead, source, db, fpa->concepts); 228 bool success = conceptsRead(&conceptsFPA, fpa, NULL, NULL, &fpa->conceptsRead, source, db, fpa->concepts); 229 if (propagateDown) { 230 psArray *chips = fpa->chips; // Array of chips 231 for (long i = 0; i < chips->n; i++) { 232 pmChip *chip = chips->data[i]; // Chip of interest 233 if (chip && !chip->hdu) { 234 success |= pmConceptsReadChip(chip, source, false, true, db); 235 } 236 } 237 } 238 239 return success; 226 240 } 227 241 … … 229 243 bool pmConceptsWriteFPA(pmFPA *fpa, // FPA for which to write concepts 230 244 pmConceptSource source, // The source of the concepts to read 245 bool propagateDown, // Propagate to lower levels? 231 246 psDB *db // Database handle 232 247 ) … … 234 249 PS_ASSERT_PTR_NON_NULL(fpa, false); 235 250 psTrace("psModule.concepts", 5, "Writing FPA concepts: %x %x\n", conceptsFPA, fpa->concepts); 236 return conceptsWrite(&conceptsFPA, fpa, NULL, NULL, source, db, fpa->concepts); 251 bool success = conceptsWrite(&conceptsFPA, fpa, NULL, NULL, source, db, fpa->concepts); 252 if (propagateDown) { 253 psArray *chips = fpa->chips; // Array of chips 254 for (long i = 0; i < chips->n; i++) { 255 pmChip *chip = chips->data[i]; // Chip of interest 256 if (chip && !chip->hdu) { 257 success |= pmConceptsWriteChip(chip, source, false, true, db); 258 } 259 } 260 } 261 return success; 237 262 } 238 263 … … 249 274 bool pmConceptsReadChip(pmChip *chip, // Chip for which to read concepts 250 275 pmConceptSource source, // The source of the concepts to read 251 bool propagate, // Propagate to higher levels as well? 276 bool propagateUp, // Propagate to higher levels? 277 bool propagateDown, // Propagate to lower levels? 252 278 psDB *db // Database handle 253 279 ) … … 256 282 psTrace("psModule.concepts", 5, "Reading chip concepts: %x %x\n", conceptsChip, chip->concepts); 257 283 pmFPA *fpa = chip->parent; // FPA to which the chip belongs 258 return conceptsRead(&conceptsChip, fpa, chip, NULL, &chip->conceptsRead, source, db, chip->concepts) && 259 ((propagate && conceptsRead(&conceptsFPA, fpa, chip, NULL, &fpa->conceptsRead, source, db, 260 fpa->concepts)) || 261 !propagate); 284 bool success = conceptsRead(&conceptsChip, fpa, chip, NULL, &chip->conceptsRead, source, db, 285 chip->concepts); 286 if (propagateUp && !fpa->hdu) { 287 success |= conceptsRead(&conceptsFPA, fpa, chip, NULL, &fpa->conceptsRead, source, db, fpa->concepts); 288 } 289 if (propagateDown) { 290 psArray *cells = chip->cells; // Array of cells 291 for (long i = 0; i < cells->n; i++) { 292 pmCell *cell = cells->data[i]; // Cell of interest 293 if (cell && !cell->hdu) { 294 success |= pmConceptsReadCell(cell, source, false, db); 295 } 296 } 297 } 298 return success; 262 299 } 263 300 … … 265 302 bool pmConceptsWriteChip(pmChip *chip, // Chip for which to write concepts 266 303 pmConceptSource source, // The source of the concepts to read 267 bool propagate,// Propagate to higher levels as well? 304 bool propagateUp, // Propagate to higher levels? 305 bool propagateDown, // Propagate to lower levels? 268 306 psDB *db // Database handle 269 307 ) … … 272 310 psTrace("psModule.concepts", 5, "Writing chip concepts: %x %x\n", conceptsChip, chip->concepts); 273 311 pmFPA *fpa = chip->parent; // FPA to which the chip belongs 274 return conceptsWrite(&conceptsChip, fpa, chip, NULL, source, db, chip->concepts) && 275 ((propagate && conceptsWrite(&conceptsFPA, fpa, chip, NULL, source, db, fpa->concepts)) || 276 !propagate); 312 bool success = conceptsWrite(&conceptsChip, fpa, chip, NULL, source, db, chip->concepts); 313 if (propagateUp && !fpa->hdu) { 314 success |= conceptsWrite(&conceptsFPA, fpa, chip, NULL, source, db, fpa->concepts); 315 } 316 if (propagateDown) { 317 psArray *cells = chip->cells; // Array of cells 318 for (long i = 0; i < cells->n; i++) { 319 pmCell *cell = cells->data[i]; // Cell of interest 320 if (cell && !cell->hdu) { 321 success |= pmConceptsWriteCell(cell, source, false, db); 322 } 323 } 324 } 325 return success; 277 326 } 278 327 … … 289 338 bool pmConceptsReadCell(pmCell *cell, // Cell for which to read concepts 290 339 pmConceptSource source, // The source of the concepts to read 291 bool propagate ,// Propagate to higher levels as well?340 bool propagateUp, // Propagate to higher levels? 292 341 psDB *db // Database handle 293 342 ) … … 298 347 pmFPA *fpa = chip->parent; // FPA to which the chip belongs 299 348 300 bool cellSuccess = conceptsRead(&conceptsCell, fpa, chip, cell, &cell->conceptsRead, source, db, cell->concepts); 301 302 bool chipSuccess = true; 303 if (propagate) { 304 chipSuccess = conceptsRead(&conceptsChip, fpa, chip, cell, &chip->conceptsRead, source, db, chip->concepts); 305 } 306 307 bool fpaSuccess = true; 308 if (propagate) { 309 fpaSuccess = conceptsRead(&conceptsFPA, fpa, chip, cell, &fpa->conceptsRead, source, db, fpa->concepts); 310 } 311 312 return (cellSuccess && chipSuccess && fpaSuccess); 349 bool success = conceptsRead(&conceptsCell, fpa, chip, cell, &cell->conceptsRead, source, db, 350 cell->concepts); 351 if (propagateUp) { 352 if (!chip->hdu) { 353 success |= conceptsRead(&conceptsChip, fpa, chip, cell, &chip->conceptsRead, source, db, 354 chip->concepts); 355 if (!fpa->hdu) { 356 success |= conceptsRead(&conceptsFPA, fpa, chip, cell, &fpa->conceptsRead, source, db, 357 fpa->concepts); 358 } 359 } 360 } 361 362 return success; 313 363 } 314 364 … … 316 366 bool pmConceptsWriteCell(pmCell *cell, // FPA for which to write concepts 317 367 pmConceptSource source, // The source of the concepts to read 318 bool propagate ,// Propagate to higher levels as well?368 bool propagateUp, // Propagate to higher levels? 319 369 psDB *db // Database handle 320 370 ) … … 324 374 pmChip *chip = cell->parent; // Chip to which the cell belongs 325 375 pmFPA *fpa = chip->parent; // FPA to which the chip belongs 326 return conceptsWrite(&conceptsCell, fpa, chip, cell, source, db, cell->concepts) && 327 ((propagate && conceptsWrite(&conceptsChip, fpa, chip, cell, source, db, chip->concepts) && 328 conceptsWrite(&conceptsFPA, fpa, chip, cell, source, db, fpa->concepts)) || !propagate); 376 377 bool success = conceptsWrite(&conceptsCell, fpa, chip, cell, source, db, cell->concepts); 378 if (propagateUp) { 379 if (!chip->hdu) { 380 success |= conceptsWrite(&conceptsChip, fpa, chip, cell, source, db, chip->concepts); 381 if (!fpa->hdu) { 382 success |= conceptsWrite(&conceptsFPA, fpa, chip, cell, source, db, fpa->concepts); 383 } 384 } 385 } 386 387 return success; 329 388 } 330 389 -
trunk/psModules/src/concepts/pmConcepts.h
r7311 r7469 47 47 bool pmConceptsReadFPA(pmFPA *fpa, // FPA for which to read concepts 48 48 pmConceptSource source, // Source for concepts 49 bool propagateDown, // Propagate to lower levels? 49 50 psDB *db // Database handle 50 51 ); 51 52 bool pmConceptsWriteFPA(pmFPA *fpa, // FPA for which to write concepts 52 53 pmConceptSource source, // Source for concepts 54 bool propagateDown, // Propagate to lower levels? 53 55 psDB *db // Database handle 54 56 ); … … 57 59 bool pmConceptsReadChip(pmChip *chip, // Chip for which to read concepts 58 60 pmConceptSource source, // Source for concepts 59 bool propagate, // Propagate to higher levels as well? 61 bool propagateUp, // Propagate to higher levels? 62 bool propagateDown, // Propagate to lower levels? 60 63 psDB *db // Database handle 61 64 ); 62 65 bool pmConceptsWriteChip(pmChip *chip, // Chip for which to write concepts 63 66 pmConceptSource source, // Source for concepts 64 bool propagate,// Propagate to higher levels as well? 67 bool propagateUp,// Propagate to higher levels? 68 bool propagateDown, // Propagate to lower levels? 65 69 psDB *db // Database handle 66 70 ); … … 69 73 bool pmConceptsReadCell(pmCell *cell, // Cell for which to read concepts 70 74 pmConceptSource source, // Source for concepts 71 bool propagate , // Propagate to higher levels as well?75 bool propagateUp, // Propagate to higher levels? 72 76 psDB *db // Database handle 73 77 ); 74 78 bool pmConceptsWriteCell(pmCell *cell, // FPA for which to write concepts 75 79 pmConceptSource source, // Source for concepts 76 bool propagate ,// Propagate to higher levels as well?80 bool propagateUp, // Propagate to higher levels? 77 81 psDB *db // Database handle 78 82 ); -
trunk/psModules/src/concepts/pmConceptsWrite.c
r7382 r7469 141 141 switch (item->type) { 142 142 case PS_DATA_STRING: 143 psTrace(__func__, 9, "Writing header %s: %s\n", keyword, item->data.V); 143 144 return psMetadataAddStr(hdu->header, PS_LIST_TAIL, keyword, PS_META_REPLACE, item->comment, 144 145 item->data.V); 145 146 case PS_DATA_S32: 147 psTrace(__func__, 9, "Writing header %s: %d\n", keyword, item->data.S32); 146 148 return psMetadataAddS32(hdu->header, PS_LIST_TAIL, keyword, PS_META_REPLACE, item->comment, 147 149 item->data.S32); 148 150 case PS_DATA_F32: 151 psTrace(__func__, 9, "Writing header %s: %f\n", keyword, item->data.F32); 149 152 return psMetadataAddF32(hdu->header, PS_LIST_TAIL, keyword, PS_META_REPLACE, item->comment, 150 153 item->data.F32); 151 154 case PS_DATA_F64: 155 psTrace(__func__, 9, "Writing header %s: %f\n", keyword, item->data.F64); 152 156 return psMetadataAddF64(hdu->header, PS_LIST_TAIL, keyword, PS_META_REPLACE, item->comment, 153 157 item->data.F64); 154 158 case PS_DATA_REGION: { 155 159 psString region = psRegionToString(*(psRegion*)item->data.V); 160 psTrace(__func__, 9, "Writing header %s: %s\n", keyword, region); 156 161 bool result = psMetadataAddStr(hdu->header, PS_LIST_TAIL, keyword, PS_META_REPLACE, item->comment, 157 162 region); … … 378 383 continue; 379 384 } 385 psTrace(__func__, 3, "Writing %s to header %s\n", name, headerItem->data.V); 380 386 psMetadataItem *conceptItem = psMetadataLookup(concepts, name); // The item from the concepts 381 387 psMetadataItem *formatted = conceptFormat(spec, conceptItem, cameraFormat, fpa, chip, cell);
Note:
See TracChangeset
for help on using the changeset viewer.
