@@ -394,25 +394,24 @@ errlHndl_t RuleMetaData::loadRuleFile( ScanFacility & i_scanFactory ,
394
394
395
395
//------------------------------------------------------------------------------
396
396
397
- int32_t RuleMetaData ::Analyze ( STEP_CODE_DATA_STRUCT & i_serviceData ,
398
- ATTENTION_TYPE i_attnType )
397
+ int32_t RuleMetaData ::Analyze ( STEP_CODE_DATA_STRUCT & io_sc )
399
398
{
400
399
int32_t l_rc = SUCCESS ;
401
400
ExtensibleChip * l_chipAnalyzed = ServiceDataCollector ::getChipAnalyzed ( );
402
- ServiceDataCollector & i_sdc = * (i_serviceData .service_data );
401
+ ServiceDataCollector & i_sdc = * (io_sc .service_data );
403
402
// Set default dump flags.
404
403
i_sdc .SetDump ( (hwTableContent )cv_dumpType ,
405
404
l_chipAnalyzed -> GetChipHandle () );
406
405
// Add statement below for Drop call.
407
- CaptureData & capture = i_serviceData .service_data -> GetCaptureData ();
406
+ CaptureData & capture = io_sc .service_data -> GetCaptureData ();
408
407
// Get capture data for this chip. Allow override.
409
408
ExtensibleChipFunction * l_ignoreCapture =
410
409
getExtensibleFunction ("PreventDefaultCapture" , true);
411
410
bool l_shouldPreventDefaultCapture = false;
412
411
413
412
(* l_ignoreCapture )
414
413
( l_chipAnalyzed , PluginDef ::bindParm < STEP_CODE_DATA_STRUCT & , bool & >
415
- (i_serviceData , l_shouldPreventDefaultCapture ));
414
+ (io_sc , l_shouldPreventDefaultCapture ));
416
415
417
416
if (!l_shouldPreventDefaultCapture )
418
417
{
@@ -423,48 +422,48 @@ int32_t RuleMetaData::Analyze( STEP_CODE_DATA_STRUCT & i_serviceData,
423
422
this -> CaptureErrorData ( i_sdc .GetCaptureData () );
424
423
}
425
424
426
- // Analyze group.
427
- ErrorRegisterType * l_errReg = NULL ;
428
- switch (i_attnType )
425
+ // Call the PreAnalysis plugin, if it exist. This should be done
426
+ // before getting the error register just in case the secondary attention
427
+ // type changes in the pre-analysis.
428
+ ExtensibleChipFunction * l_preAnalysis =
429
+ getExtensibleFunction ("PreAnalysis" , true);
430
+ bool analyzed = false;
431
+ (* l_preAnalysis )( l_chipAnalyzed ,
432
+ PluginDef ::bindParm < STEP_CODE_DATA_STRUCT & ,bool & > (io_sc ,analyzed ) );
433
+
434
+ if ( !analyzed )
429
435
{
430
- case CHECK_STOP :
431
- l_errReg = cv_groupAttn [0 ];
432
- break ;
436
+ // Analyze the group.
437
+ ErrorRegisterType * l_errReg = nullptr ;
438
+ switch ( io_sc .service_data -> getSecondaryAttnType () )
439
+ {
440
+ case CHECK_STOP :
441
+ l_errReg = cv_groupAttn [0 ];
442
+ break ;
433
443
434
- case RECOVERABLE :
435
- l_errReg = cv_groupAttn [1 ];
436
- break ;
444
+ case RECOVERABLE :
445
+ l_errReg = cv_groupAttn [1 ];
446
+ break ;
437
447
438
- case SPECIAL :
439
- l_errReg = cv_groupAttn [2 ];
440
- break ;
448
+ case SPECIAL :
449
+ l_errReg = cv_groupAttn [2 ];
450
+ break ;
441
451
442
- case UNIT_CS :
443
- l_errReg = cv_groupAttn [3 ];
444
- break ;
452
+ case UNIT_CS :
453
+ l_errReg = cv_groupAttn [3 ];
454
+ break ;
445
455
446
- case HOST_ATTN :
447
- l_errReg = cv_groupAttn [4 ];
448
- break ;
456
+ case HOST_ATTN :
457
+ l_errReg = cv_groupAttn [4 ];
458
+ break ;
459
+ }
460
+
461
+ l_rc = ( nullptr != l_errReg ) ? l_errReg -> Analyze (io_sc )
462
+ : PRD_SCAN_COMM_REGISTER_ZERO ;
449
463
}
450
- if (NULL != l_errReg )
451
- { //mp02 a Start
452
- //Call any pre analysis functions
453
- ExtensibleChipFunction * l_preAnalysis =
454
- getExtensibleFunction ("PreAnalysis" , true);
455
- bool analyzed = false;
456
- (* l_preAnalysis )( l_chipAnalyzed ,
457
- PluginDef ::bindParm < STEP_CODE_DATA_STRUCT & ,bool & >
458
- (i_serviceData ,analyzed ));
459
- if ( !analyzed )
460
- l_rc = l_errReg -> Analyze (i_serviceData );
461
- } //mp02 a Stop
462
- // mp02d l_rc = l_errReg->Analyze(i_serviceData);
463
- else //@jl07
464
- l_rc = PRD_SCAN_COMM_REGISTER_ZERO ; //@jl07
465
464
466
465
// Don't do reset or mask on CS. @pw03
467
- if (CHECK_STOP != i_serviceData .service_data -> getPrimaryAttnType ()) //@pw04
466
+ if (CHECK_STOP != io_sc .service_data -> getPrimaryAttnType ()) //@pw04
468
467
{
469
468
#ifndef __HOSTBOOT_MODULE
470
469
SyncAnalysis (i_sdc ); //mp01 Add call to Sync SDC
@@ -474,26 +473,26 @@ int32_t RuleMetaData::Analyze( STEP_CODE_DATA_STRUCT & i_serviceData,
474
473
#if defined(__HOSTBOOT_MODULE ) || defined(ESW_SIM_COMPILE )
475
474
476
475
// Call mask plugin.
477
- if (i_serviceData .service_data -> IsAtThreshold ())
476
+ if (io_sc .service_data -> IsAtThreshold ())
478
477
{
479
478
ExtensibleChipFunction * l_mask =
480
479
getExtensibleFunction ("MaskError" , true);
481
480
(* l_mask )( l_chipAnalyzed ,
482
- PluginDef ::bindParm < STEP_CODE_DATA_STRUCT & > (i_serviceData )
481
+ PluginDef ::bindParm < STEP_CODE_DATA_STRUCT & > (io_sc )
483
482
); //@pw01
484
483
}
485
484
486
485
// Call reset plugin.
487
486
ExtensibleChipFunction * l_reset =
488
487
getExtensibleFunction ("ResetError" , true);
489
488
(* l_reset )( l_chipAnalyzed ,
490
- PluginDef ::bindParm < STEP_CODE_DATA_STRUCT & > (i_serviceData )
489
+ PluginDef ::bindParm < STEP_CODE_DATA_STRUCT & > (io_sc )
491
490
); //@pw01
492
491
#endif
493
492
}
494
493
495
494
// Additional error isolation for HWPs, if needed.
496
- PlatServices ::hwpErrorIsolation ( l_chipAnalyzed , i_serviceData );
495
+ PlatServices ::hwpErrorIsolation ( l_chipAnalyzed , io_sc );
497
496
498
497
// Call postanalysis plugin.
499
498
// @jl02 JL Adding PostAnalysis plugin call.
@@ -502,7 +501,7 @@ int32_t RuleMetaData::Analyze( STEP_CODE_DATA_STRUCT & i_serviceData,
502
501
// @jl02 the true above means that a plugin may not exist for this call.
503
502
// @jl02 JL Adding call for post analysis.
504
503
(* l_postanalysis )( l_chipAnalyzed ,
505
- PluginDef ::bindParm < STEP_CODE_DATA_STRUCT & > (i_serviceData ));
504
+ PluginDef ::bindParm < STEP_CODE_DATA_STRUCT & > (io_sc ));
506
505
507
506
508
507
return l_rc ;
0 commit comments