Changeset 6342 for branches/eam_rel9_p0/psModules/src/astrom/pmConcepts.c
- Timestamp:
- Feb 7, 2006, 11:18:31 AM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_rel9_p0/psModules/src/astrom/pmConcepts.c
r6124 r6342 11 11 #include "psAdditionals.h" 12 12 13 static bool conceptsInitialised = false;// Have concepts been read? 13 14 static psMetadata *conceptsFPA = NULL; // Known concepts for FPA 14 15 static psMetadata *conceptsChip = NULL; // Known concepts for chip … … 29 30 psMemSetDeallocator(spec, (psFreeFunc)conceptSpecFree); 30 31 31 spec->blank = blank;32 spec->blank = psMemIncrRefCounter(blank); 32 33 spec->read = read; 33 34 spec->write = write; … … 44 45 { 45 46 assert(blank); 46 pmConceptsInit(); 47 if (!conceptsInitialised) { 48 pmConceptsInit(); 49 } 47 50 48 51 pmConceptSpec *spec = pmConceptSpecAlloc(blank, read, write); // The concept specification … … 66 69 psMetadataAdd(*target, PS_LIST_TAIL, blank->name, PS_DATA_UNKNOWN | PS_META_REPLACE, 67 70 "Concepts specification", spec); 71 psFree(spec); // Drop reference 68 72 69 73 return true; … … 105 109 ) 106 110 { 107 pmConceptsInit(); 111 if (!conceptsInitialised) { 112 pmConceptsInit(); 113 } 108 114 psMetadataIterator *specsIter = psMetadataIteratorAlloc(*specs, PS_LIST_HEAD, NULL); // Iterator on specs 109 115 psMetadataItem *specItem = NULL; // Item from the specs metadata 110 116 while ((specItem = psMetadataGetAndIncrement(specsIter))) { 117 psTrace(__func__, 9, "Blanking %s...\n", specItem->name); 111 118 pmConceptSpec *spec = specItem->data.V; // The specification 112 119 psMetadataItem *blank = spec->blank; // The concept … … 127 134 ) 128 135 { 129 pmConceptsInit(); 136 if (!conceptsInitialised) { 137 pmConceptsInit(); 138 } 130 139 psMetadataIterator *specsIter = psMetadataIteratorAlloc(*specs, PS_LIST_HEAD, NULL); // Iterator on specs 131 140 psMetadataItem *specItem = NULL; // Item from the specs metadata … … 157 166 ) 158 167 { 159 pmConceptsInit(); 168 if (!conceptsInitialised) { 169 pmConceptsInit(); 170 } 160 171 if (! fpa->camera) { 161 172 return false; … … 282 293 283 294 // FPA.NAME 284 pmConceptRegister(psMetadataItemAllocStr("FPA.NAME", "Name of FPA", ""), NULL, NULL, 285 PM_CONCEPT_LEVEL_FPA); 295 { 296 psMetadataItem *fpaName = psMetadataItemAllocStr("FPA.NAME", "Name of FPA", ""); 297 pmConceptRegister(fpaName, NULL, NULL, PM_CONCEPT_LEVEL_FPA); 298 psFree(fpaName); 299 } 286 300 287 301 // FPA.AIRMASS 288 pmConceptRegister(psMetadataItemAllocF32("FPA.AIRMASS", "Airmass at boresight", 0.0), NULL, NULL, 289 PM_CONCEPT_LEVEL_FPA); 302 { 303 psMetadataItem *fpaAirmass = psMetadataItemAllocF32("FPA.AIRMASS", "Airmass at boresight", 0.0); 304 pmConceptRegister(fpaAirmass, NULL, NULL, PM_CONCEPT_LEVEL_FPA); 305 psFree(fpaAirmass); 306 } 290 307 291 308 // FPA.FILTER 292 pmConceptRegister(psMetadataItemAllocStr("FPA.FILTER", "Filter used", ""), NULL, NULL, 293 PM_CONCEPT_LEVEL_FPA); 309 { 310 psMetadataItem *fpaFilter = psMetadataItemAllocStr("FPA.FILTER", "Filter used", ""); 311 pmConceptRegister(fpaFilter, NULL, NULL, PM_CONCEPT_LEVEL_FPA); 312 psFree(fpaFilter); 313 } 294 314 295 315 // FPA.POSANGLE 296 pmConceptRegister(psMetadataItemAllocF32("FPA.POSANGLE", "Position angle of instrument", 0.0), NULL, 297 NULL, PM_CONCEPT_LEVEL_FPA); 316 { 317 psMetadataItem *fpaPosangle = psMetadataItemAllocF32("FPA.POSANGLE", 318 "Position angle of instrument", 0.0); 319 pmConceptRegister(fpaPosangle, NULL, NULL, PM_CONCEPT_LEVEL_FPA); 320 psFree(fpaPosangle); 321 } 298 322 299 323 // FPA.RADECSYS 300 pmConceptRegister(psMetadataItemAllocStr("FPA.RADECSYS", "Celestial coordinate system", ""), NULL, 301 NULL, PM_CONCEPT_LEVEL_FPA); 324 { 325 psMetadataItem *fpaRadecsys = psMetadataItemAllocStr("FPA.RADECSYS", 326 "Celestial coordinate system", ""); 327 pmConceptRegister(fpaRadecsys, NULL, NULL, PM_CONCEPT_LEVEL_FPA); 328 psFree(fpaRadecsys); 329 } 302 330 303 331 // FPA.RA 304 pmConceptRegister(psMetadataItemAllocF64("FPA.RA", "Right Ascension of boresight", NAN), 305 (pmConceptReadFunc)pmConceptRead_FPA_RA, (pmConceptWriteFunc)pmConceptWrite_FPA_RA, 306 PM_CONCEPT_LEVEL_FPA); 332 { 333 psMetadataItem *fpaRa = psMetadataItemAllocF64("FPA.RA", "Right Ascension of boresight", NAN); 334 pmConceptRegister(fpaRa, (pmConceptReadFunc)pmConceptRead_FPA_RA, 335 (pmConceptWriteFunc)pmConceptWrite_FPA_RA, PM_CONCEPT_LEVEL_FPA); 336 psFree(fpaRa); 337 } 307 338 308 339 // FPA.DEC 309 pmConceptRegister(psMetadataItemAllocF64("FPA.DEC", "Declination of boresight", NAN), 310 (pmConceptReadFunc)pmConceptRead_FPA_DEC, 311 (pmConceptWriteFunc)pmConceptWrite_FPA_DEC, PM_CONCEPT_LEVEL_FPA); 312 340 { 341 psMetadataItem *fpaDec = psMetadataItemAllocF64("FPA.DEC", "Declination of boresight", NAN); 342 pmConceptRegister(fpaDec, (pmConceptReadFunc)pmConceptRead_FPA_DEC, 343 (pmConceptWriteFunc)pmConceptWrite_FPA_DEC, PM_CONCEPT_LEVEL_FPA); 344 psFree(fpaDec); 345 } 346 347 // Done with FPA level concepts 313 348 } 314 349 if (! conceptsChip) { … … 324 359 325 360 // CELL.GAIN 326 pmConceptRegister(psMetadataItemAllocF32("CELL.GAIN", "CCD gain (e/count)", NAN), NULL, NULL, 327 PM_CONCEPT_LEVEL_CELL); 361 { 362 psMetadataItem *cellGain = psMetadataItemAllocF32("CELL.GAIN", "CCD gain (e/count)", NAN); 363 pmConceptRegister(cellGain, NULL, NULL, PM_CONCEPT_LEVEL_CELL); 364 psFree(cellGain); 365 } 328 366 329 367 // CELL.READNOISE 330 pmConceptRegister(psMetadataItemAllocF32("CELL.GAIN", "CCD read noise (e)", NAN), NULL, NULL, 331 PM_CONCEPT_LEVEL_CELL); 368 { 369 psMetadataItem *cellReadnoise = psMetadataItemAllocF32("CELL.READNOISE", 370 "CCD read noise (e)", NAN); 371 pmConceptRegister(cellReadnoise, NULL, NULL, PM_CONCEPT_LEVEL_CELL); 372 psFree(cellReadnoise); 373 } 332 374 333 375 // CELL.SATURATION 334 pmConceptRegister(psMetadataItemAllocF32("CELL.SATURATION", "Saturation level (counts)", NAN), NULL, 335 NULL, PM_CONCEPT_LEVEL_CELL); 376 { 377 psMetadataItem *cellSaturation = psMetadataItemAllocF32("CELL.SATURATION", 378 "Saturation level (counts)", NAN); 379 pmConceptRegister(cellSaturation, NULL, NULL, PM_CONCEPT_LEVEL_CELL); 380 psFree(cellSaturation); 381 } 336 382 337 383 // CELL.BAD 338 pmConceptRegister(psMetadataItemAllocF32("CELL.BAD", "Bad level (counts)", NAN), NULL, NULL, 339 PM_CONCEPT_LEVEL_CELL); 384 { 385 psMetadataItem *cellBad = psMetadataItemAllocF32("CELL.BAD", "Bad level (counts)", NAN); 386 pmConceptRegister(cellBad, NULL, NULL, PM_CONCEPT_LEVEL_CELL); 387 psFree(cellBad); 388 } 340 389 341 390 // CELL.XPARITY 342 pmConceptRegister(psMetadataItemAllocS32("CELL.XPARITY", 343 "Orientation in x compared to the rest of the FPA", 0), 344 NULL, NULL, PM_CONCEPT_LEVEL_CELL); 391 { 392 psMetadataItem *cellXparity = psMetadataItemAllocS32("CELL.XPARITY", 393 "Orientation in x compared to the rest of the FPA", 0); 394 pmConceptRegister(cellXparity, NULL, NULL, PM_CONCEPT_LEVEL_CELL); 395 psFree(cellXparity); 396 } 345 397 346 398 // CELL.YPARITY 347 pmConceptRegister(psMetadataItemAllocS32("CELL.YPARITY", 348 "Orientation in x compared to the rest of the FPA", 0), 349 NULL, NULL, PM_CONCEPT_LEVEL_CELL); 399 { 400 psMetadataItem *cellYparity = psMetadataItemAllocS32("CELL.YPARITY", 401 "Orientation in x compared to the rest of the FPA", 0); 402 pmConceptRegister(cellYparity, NULL, NULL, PM_CONCEPT_LEVEL_CELL); 403 psFree(cellYparity); 404 } 350 405 351 406 // CELL.READDIR 352 pmConceptRegister(psMetadataItemAllocS32("CELL.READDIR", "Read direction, rows=1, cols=2", 1), NULL, 353 NULL, PM_CONCEPT_LEVEL_CELL); 407 { 408 psMetadataItem *cellReaddir = psMetadataItemAllocS32("CELL.READDIR", 409 "Read direction, rows=1, cols=2", 1); 410 pmConceptRegister(cellReaddir, NULL, NULL, PM_CONCEPT_LEVEL_CELL); 411 psFree(cellReaddir); 412 } 354 413 355 414 … … 361 420 362 421 // CELL.EXPOSURE 363 pmConceptRegister(psMetadataItemAllocF32("CELL.EXPOSURE", "Exposure time (sec)", NAN), NULL, NULL, 364 PM_CONCEPT_LEVEL_CELL); 422 { 423 psMetadataItem *cellExposure = psMetadataItemAllocF32("CELL.EXPOSURE", 424 "Exposure time (sec)", NAN); 425 pmConceptRegister(cellExposure, NULL, NULL, PM_CONCEPT_LEVEL_CELL); 426 psFree(cellExposure); 427 } 365 428 366 429 // CELL.DARKTIME 367 pmConceptRegister(psMetadataItemAllocF32("CELL.DARKTIME", "Time since flush (sec)", NAN), NULL, NULL, 368 PM_CONCEPT_LEVEL_CELL); 430 { 431 psMetadataItem *cellDarktime = psMetadataItemAllocF32("CELL.DARKTIME", 432 "Time since flush (sec)", NAN); 433 pmConceptRegister(cellDarktime, NULL, NULL, PM_CONCEPT_LEVEL_CELL); 434 psFree(cellDarktime); 435 } 369 436 370 437 // CELL.TRIMSEC … … 372 439 psRegion *trimsec = psAlloc(sizeof(psRegion)); // Blank trimsec 373 440 trimsec->x0 = trimsec->y0 = trimsec->x1 = trimsec->y1 = NAN; 374 pmConceptRegister(psMetadataItemAllocPtr("CELL.TRIMSEC", PS_DATA_UNKNOWN, "Trim section", 375 trimsec), 376 (pmConceptReadFunc)pmConceptRead_CELL_TRIMSEC, 441 psMetadataItem *cellTrimsec = psMetadataItemAllocPtr("CELL.TRIMSEC", PS_DATA_UNKNOWN, 442 "Trim section", trimsec); 443 psFree(trimsec); 444 pmConceptRegister(cellTrimsec, (pmConceptReadFunc)pmConceptRead_CELL_TRIMSEC, 377 445 (pmConceptWriteFunc)pmConceptWrite_CELL_TRIMSEC, PM_CONCEPT_LEVEL_CELL); 378 psFree( trimsec);446 psFree(cellTrimsec); 379 447 } 380 448 … … 382 450 { 383 451 psList *biassecs = psListAlloc(NULL); // Blank biassecs 384 pmConceptRegister(psMetadataItemAllocPtr("CELL.BIASSEC", PS_DATA_LIST, "Bias sections", biassecs), 385 (pmConceptReadFunc)pmConceptRead_CELL_BIASSEC, 386 (pmConceptWriteFunc)pmConceptWrite_CELL_TRIMSEC, PM_CONCEPT_LEVEL_CELL); 452 psMetadataItem *cellBiassec = psMetadataItemAllocPtr("CELL.BIASSEC", PS_DATA_LIST, 453 "Bias sections", biassecs); 387 454 psFree(biassecs); 455 pmConceptRegister(cellBiassec, (pmConceptReadFunc)pmConceptRead_CELL_BIASSEC, 456 (pmConceptWriteFunc)pmConceptWrite_CELL_BIASSEC, PM_CONCEPT_LEVEL_CELL); 457 psFree(cellBiassec); 388 458 } 389 459 390 460 // CELL.XBIN 391 pmConceptRegister(psMetadataItemAllocS32("CELL.XBIN", "Binning in x", 0), 392 (pmConceptReadFunc)pmConceptRead_CELL_XBIN, 393 (pmConceptWriteFunc)pmConceptWrite_CELL_XBIN, PM_CONCEPT_LEVEL_CELL); 461 { 462 psMetadataItem *cellXbin = psMetadataItemAllocS32("CELL.XBIN", "Binning in x", 0); 463 pmConceptRegister(cellXbin, (pmConceptReadFunc)pmConceptRead_CELL_XBIN, 464 (pmConceptWriteFunc)pmConceptWrite_CELL_XBIN, PM_CONCEPT_LEVEL_CELL); 465 psFree(cellXbin); 466 } 394 467 395 468 // CELL.YBIN 396 pmConceptRegister(psMetadataItemAllocS32("CELL.YBIN", "Binning in y", 0), 397 (pmConceptReadFunc)pmConceptRead_CELL_YBIN, 398 (pmConceptWriteFunc)pmConceptWrite_CELL_YBIN, PM_CONCEPT_LEVEL_CELL); 469 { 470 psMetadataItem *cellYbin = psMetadataItemAllocS32("CELL.YBIN", "Binning in y", 0); 471 pmConceptRegister(cellYbin, (pmConceptReadFunc)pmConceptRead_CELL_YBIN, 472 (pmConceptWriteFunc)pmConceptWrite_CELL_YBIN, PM_CONCEPT_LEVEL_CELL); 473 psFree(cellYbin); 474 } 399 475 400 476 // CELL.TIMESYS 401 pmConceptRegister(psMetadataItemAllocS32("CELL.TIMESYS", "Time system", -1), 402 (pmConceptReadFunc)pmConceptRead_CELL_TIMESYS, 403 (pmConceptWriteFunc)pmConceptWrite_CELL_TIMESYS, PM_CONCEPT_LEVEL_CELL); 477 { 478 psMetadataItem *cellTimesys = psMetadataItemAllocS32("CELL.TIMESYS", "Time system", -1); 479 pmConceptRegister(cellTimesys, (pmConceptReadFunc)pmConceptRead_CELL_TIMESYS, 480 (pmConceptWriteFunc)pmConceptWrite_CELL_TIMESYS, PM_CONCEPT_LEVEL_CELL); 481 psFree(cellTimesys); 482 } 404 483 405 484 // CELL.TIME … … 409 488 time->sec = 0; 410 489 time->nsec = 0; 411 pmConceptRegister(psMetadataItemAlloc("CELL.TIME", PS_DATA_TIME, "Time of exposure", time), 412 (pmConceptReadFunc)pmConceptRead_CELL_TIME, 490 psMetadataItem *cellTime = psMetadataItemAlloc("CELL.TIME", PS_DATA_TIME, 491 "Time of exposure", time); 492 psFree(time); 493 pmConceptRegister(cellTime, (pmConceptReadFunc)pmConceptRead_CELL_TIME, 413 494 (pmConceptWriteFunc)pmConceptWrite_CELL_TIME, PM_CONCEPT_LEVEL_CELL); 414 psFree( time);495 psFree(cellTime); 415 496 } 416 497 417 498 // CELL.X0 418 pmConceptRegister(psMetadataItemAllocS32("CELL.X0", "Position of (0,0) on the chip", 0), 419 (pmConceptReadFunc)pmConceptRead_CELL_X0, 420 (pmConceptWriteFunc)pmConceptWrite_CELL_X0, PM_CONCEPT_LEVEL_CELL); 499 { 500 psMetadataItem *cellX0 = psMetadataItemAllocS32("CELL.X0", "Position of (0,0) on the chip", 0); 501 pmConceptRegister(cellX0, (pmConceptReadFunc)pmConceptRead_CELL_X0, 502 (pmConceptWriteFunc)pmConceptWrite_CELL_X0, PM_CONCEPT_LEVEL_CELL); 503 psFree(cellX0); 504 } 421 505 422 506 // CELL.Y0 423 pmConceptRegister(psMetadataItemAllocS32("CELL.Y0", "Position of (0,0) on the chip", 0), 424 (pmConceptReadFunc)pmConceptRead_CELL_Y0, 425 (pmConceptWriteFunc)pmConceptWrite_CELL_Y0, PM_CONCEPT_LEVEL_CELL); 426 427 } 507 { 508 psMetadataItem *cellY0 = psMetadataItemAllocS32("CELL.Y0", "Position of (0,0) on the chip", 0); 509 pmConceptRegister(cellY0, (pmConceptReadFunc)pmConceptRead_CELL_Y0, 510 (pmConceptWriteFunc)pmConceptWrite_CELL_Y0, PM_CONCEPT_LEVEL_CELL); 511 psFree(cellY0); 512 } 513 514 } 515 516 conceptsInitialised = true; 428 517 429 518 return init;
Note:
See TracChangeset
for help on using the changeset viewer.
