Changeset 7469 for trunk/psModules/src/concepts/pmConcepts.c
- Timestamp:
- Jun 9, 2006, 3:55:20 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/concepts/pmConcepts.c (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
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
Note:
See TracChangeset
for help on using the changeset viewer.
