summaryrefslogtreecommitdiffstats
path: root/src/occ_405/dcom/dcomMasterTx.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/occ_405/dcom/dcomMasterTx.c')
-rw-r--r--src/occ_405/dcom/dcomMasterTx.c43
1 files changed, 36 insertions, 7 deletions
diff --git a/src/occ_405/dcom/dcomMasterTx.c b/src/occ_405/dcom/dcomMasterTx.c
index e1a46bc..a65dc31 100644
--- a/src/occ_405/dcom/dcomMasterTx.c
+++ b/src/occ_405/dcom/dcomMasterTx.c
@@ -89,7 +89,7 @@ uint32_t dcom_build_slv_inbox(void)
// interrupt context.
if(G_pbax_rc)
{
- INCREMENT_ERR_HISTORY(ERR_DCOM_MASTER_PBAX_SEND_FAIL);
+ INCREMENT_ERR_HISTORY(ERRH_DCOM_MASTER_PBAX_SEND_FAIL);
if (!L_traced)
{
@@ -232,6 +232,7 @@ void task_dcom_tx_slv_inbox( task_t *i_self)
uint32_t l_orc_ext = OCC_NO_EXTENDED_RC;
uint64_t l_start = ssx_timebase_get();
bool l_pwr_meas = FALSE;
+ bool l_pwr_meas_complete_invalid = FALSE;
bool l_request_reset = FALSE;
bool l_ssx_failure = FALSE;
// Use a static local bool to track whether the BCE request used
@@ -250,8 +251,9 @@ void task_dcom_tx_slv_inbox( task_t *i_self)
}
l_pwr_meas = G_ApssPwrMeasCompleted;
+ l_pwr_meas_complete_invalid = G_ApssPwrMeasDoneInvalid;
- // Did APSS power complete?
+ // Did APSS power complete AND valid?
if( l_pwr_meas == TRUE )
{
#if !defined(DEBUG_APSS_SEQ) && defined(DCOM_DEBUG)
@@ -405,13 +407,42 @@ void task_dcom_tx_slv_inbox( task_t *i_self)
else
{
L_bce_not_ready_count++;
- INCREMENT_ERR_HISTORY(ERR_DCOM_TX_SLV_INBOX);
+ INCREMENT_ERR_HISTORY(ERRH_DCOM_TX_SLV_INBOX);
}
// Moved the break statement here in case we decide not to
// schedule the BCE request.
break;
}
+ // Is APSS power collection done but failed? Stop waiting since no valid data will be coming
+ else if(l_pwr_meas_complete_invalid == TRUE)
+ {
+ //Failure occurred, step up the FAIL_COUNT
+ APSS_FAIL();
+
+ if (G_apss_fail_updown_count >= APSS_DATA_FAIL_MAX)
+ {
+ if (FALSE == isSafeStateRequested())
+ {
+ /* @
+ * @errortype
+ * @moduleid DCOM_MID_TASK_TX_SLV_INBOX
+ * @reasoncode APSS_HARD_FAILURE
+ * @userdata1 N/A
+ * @userdata4 ERC_APSS_NO_VALID_DATA
+ * @devdesc No valid APSS data (hard time-out)
+ */
+ TRAC_ERR("No valid apss data: #complete errors = %i #invalid = %i",
+ G_error_history[ERRH_APSS_COMPLETE_ERROR],
+ G_error_history[ERRH_INVALID_APSS_DATA]);
+ l_orc = APSS_HARD_FAILURE;
+ l_orc_ext = ERC_APSS_NO_VALID_DATA;
+ l_request_reset = TRUE;
+ }
+ }
+
+ break;
+ }
else
{
// check time and break out if we reached limit
@@ -421,7 +452,7 @@ void task_dcom_tx_slv_inbox( task_t *i_self)
}
else
{
- INCREMENT_ERR_HISTORY(ERR_DCOM_APSS_COMPLETE_TIMEOUT);
+ INCREMENT_ERR_HISTORY(ERRH_APSS_COMPLETE_TIMEOUT);
//Failure occurred, step up the FAIL_COUNT
APSS_FAIL();
@@ -430,9 +461,6 @@ void task_dcom_tx_slv_inbox( task_t *i_self)
{
if (FALSE == isSafeStateRequested())
{
- TRAC_ERR("task_dcom_tx_slv_inbox: APSS data collection failure exceeded threshold. fail_count=%i, threshold:%i",
- G_apss_fail_updown_count, APSS_DATA_FAIL_MAX);
-
/* @
* @errortype
* @moduleid DCOM_MID_TASK_TX_SLV_INBOX
@@ -450,6 +478,7 @@ void task_dcom_tx_slv_inbox( task_t *i_self)
l_request_reset = TRUE;
}
}
+
break;
}
}
OpenPOWER on IntegriCloud