Index: firmware/App/Controllers/BloodLeak.c =================================================================== diff -u -r06dc7b658ce158806edc2c907f9b4462275f7bb9 -r3cd6c27b7d5cd7011ff740354676d8b9d05a4f8e --- firmware/App/Controllers/BloodLeak.c (.../BloodLeak.c) (revision 06dc7b658ce158806edc2c907f9b4462275f7bb9) +++ firmware/App/Controllers/BloodLeak.c (.../BloodLeak.c) (revision 3cd6c27b7d5cd7011ff740354676d8b9d05a4f8e) @@ -145,7 +145,7 @@ static OVERRIDE_U32_T bloodLeakDataPublishInterval = { BLOOD_LEAK_PUB_INTERVAL, BLOOD_LEAK_PUB_INTERVAL, 0, 0 }; ///< Interval (in ms) at which to publish blood leak data to CAN bus. -static U32 bloodLeakDataPublicationTimerCounter; ///< Timer counter used to schedule blood leak data publication to CAN bus. +static U32 bloodLeakDataPublicationCounter; ///< Timer counter used to schedule blood leak data publication to CAN bus. static U32 bloodLeakUARTCmdIndex; ///< Blood leak UART command index. static U32 bloodLeakSetPointSeqLength; ///< Blood leak set point sequence actual length. static U08 bloodLeakSetPointSequence[ BLOOD_LEAK_SET_POINT_SEQ_MAX_LENGTH ][ 2 ]; ///< Blood leak set point sequence array. @@ -212,29 +212,29 @@ // Initialize the embedded mode specifications initEmbModeSpecs(); - bloodLeakDataPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; - bloodLeakState = BLOOD_LEAK_WAIT_FOR_POST_STATE; - bloodLeakStatus.data = BLOOD_LEAK_NOT_DETECTED; - bloodLeakStatus.ovInitData = BLOOD_LEAK_NOT_DETECTED; - bloodLeakStatus.ovData = BLOOD_LEAK_NOT_DETECTED; - bloodLeakStatus.override = OVERRIDE_RESET; - bloodLeakSelfTestStatus = SELF_TEST_STATUS_IN_PROGRESS; - bloodLeakUARTCmdIndex = 0; - bloodLeakSetPointSeqLength = 0; - bloodLeakPersistenceCtr = 0; - bloodLeakSignalEmbModeReq = FALSE; - bloodLeakEmbModeRqstedCmd = NU_EMB_MODE_CMD; - bloodLeakEmbModeSubstate = BLOOD_LEAK_EMB_MODE_WAIT_FOR_COMAND_STATE; - bloodLeakEmbModeOpsStartTime = 0; - bloodLeakEmbModeRespIndex = 0; - bloodLeakExitNormalRequested = FALSE; - bloodLeakEmbModeCmdSeqLength = 0; - bloodLeakEmbModeHasRxRqstBeenSent = FALSE; - bloodLeakEmbModeCmdQFrontIndex = 0; - bloodLeakEmbModeCmdQRearIndex = 0; - bloodLeakEmbModeCmdQCount = 0; - bloodLeakEmbModeHasZeroBeenRqustd = FALSE; - bloodLeakEmbModeCmdEnqueueCount = 0; + bloodLeakDataPublicationCounter = DATA_PUBLISH_COUNTER_START_COUNT; + bloodLeakState = BLOOD_LEAK_WAIT_FOR_POST_STATE; + bloodLeakStatus.data = BLOOD_LEAK_NOT_DETECTED; + bloodLeakStatus.ovInitData = BLOOD_LEAK_NOT_DETECTED; + bloodLeakStatus.ovData = BLOOD_LEAK_NOT_DETECTED; + bloodLeakStatus.override = OVERRIDE_RESET; + bloodLeakSelfTestStatus = SELF_TEST_STATUS_IN_PROGRESS; + bloodLeakUARTCmdIndex = 0; + bloodLeakSetPointSeqLength = 0; + bloodLeakPersistenceCtr = 0; + bloodLeakSignalEmbModeReq = FALSE; + bloodLeakEmbModeRqstedCmd = NU_EMB_MODE_CMD; + bloodLeakEmbModeSubstate = BLOOD_LEAK_EMB_MODE_WAIT_FOR_COMAND_STATE; + bloodLeakEmbModeOpsStartTime = 0; + bloodLeakEmbModeRespIndex = 0; + bloodLeakExitNormalRequested = FALSE; + bloodLeakEmbModeCmdSeqLength = 0; + bloodLeakEmbModeHasRxRqstBeenSent = FALSE; + bloodLeakEmbModeCmdQFrontIndex = 0; + bloodLeakEmbModeCmdQRearIndex = 0; + bloodLeakEmbModeCmdQCount = 0; + bloodLeakEmbModeHasZeroBeenRqustd = FALSE; + bloodLeakEmbModeCmdEnqueueCount = 0; // Set the blood leak embedded mode command queue to zero memset( bloodLeakEmbModeCmdQ, 0x0, BLOOD_LEAK_EMB_MODE_CMD_Q_MAX_SIZE ); @@ -303,8 +303,7 @@ checkFPGAPersistentErrorCountAlarm( FPGA_PERS_ERROR_BLOOD_LEAK_SENSOR, getFPGABloodLeakRxErrorCount() ); // Publish blood leak data if due - // TODO uncomment the function - //publishBloodLeakData(); + publishBloodLeakData(); } /*********************************************************************//** @@ -1205,27 +1204,15 @@ static void publishBloodLeakData( void ) { // Publish blood leak data on interval - if ( ++bloodLeakDataPublicationTimerCounter >= getU32OverrideValue( &bloodLeakDataPublishInterval ) ) + if ( ++bloodLeakDataPublicationCounter >= getU32OverrideValue( &bloodLeakDataPublishInterval ) ) { BLOOD_LEAK_DATA_T data; - data.bloodLeakStatus = (U32)getBloodLeakStatus(); - data.bloodLeakState = (U32)bloodLeakState; - data.bloodLeakDetectSetPoint = bloodLeakEmbModeCmd[ D_EMB_MODE_CMD ].commandResp; - data.bloodLeakDetectLevel = bloodLeakEmbModeCmd[ V_EMB_MODE_CMD ].commandResp; - data.bloodLeakLEDIntesity = bloodLeakEmbModeCmd[ I_EMB_MODE_CMD ].commandResp; + data.bloodLeakStatus = (U32)getBloodLeakStatus(); + data.bloodLeakState = (U32)bloodLeakState; + bloodLeakDataPublicationCounter = 0; broadcastData( MSG_ID_HD_BLOOD_LEAK_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&data, sizeof( BLOOD_LEAK_DATA_T ) ); - bloodLeakDataPublicationTimerCounter = 0; - - if ( ( bloodLeakState >= BLOOD_LEAK_INIT_STATE ) && ( FALSE == bloodLeakEmbModeHasZeroBeenRqustd ) ) - { - // Once the previous data was broadcast, and the system is not in init and blood leak zero request has not been set, enqueue the data - // to be queried and read again. The data is queried here to make sure there is a second of time in between the queries for I, V, and D - enqueueEmbModeCmd( I_EMB_MODE_CMD ); - enqueueEmbModeCmd( V_EMB_MODE_CMD ); - enqueueEmbModeCmd( D_EMB_MODE_CMD ); - } } }