Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -r9826fc85bd1497ec617ae0e825f78b91972de2b3 -r8fc97ad09c8cbdf76dc19929c4751df3feacb40d --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 9826fc85bd1497ec617ae0e825f78b91972de2b3) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 8fc97ad09c8cbdf76dc19929c4751df3feacb40d) @@ -181,6 +181,17 @@ NUMBER_OF_ACID_AND_BICARB_NV_DATA_TO_CHECK, ALARM_ID_DG_BICARB_CONCENTRATE_INVALID_CAL_RECORD ); } + calcMeasuredPumpsSpeed( CONCENTRATEPUMPS_CP1_ACID, getFPGACP1HallSensePulseWidth() ); + calcMeasuredPumpsSpeed( CONCENTRATEPUMPS_CP2_BICARB, getFPGACP2HallSensePulseWidth() ); + +#ifndef _RELEASE_ + if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_CONC_PUMPS_SPEED_ALARM ) != SW_CONFIG_ENABLE_VALUE ) +#endif + { + monitorPumpSpeed( CONCENTRATEPUMPS_CP1_ACID, ALARM_ID_CP1_SPEED_CONTROL_ERROR ); + monitorPumpSpeed( CONCENTRATEPUMPS_CP2_BICARB, ALARM_ID_CP2_SPEED_CONTROL_ERROR ); + } + if ( ++concentratePumpMonitorTimerCounter >= getU32OverrideValue( &concentratePumpDataPublishInterval ) ) { CONCENTRATE_PUMP_DATA_T data; @@ -191,9 +202,6 @@ SET_ALARM_WITH_1_U32_DATA( ALARM_ID_DG_CONCENTRATE_PUMP_FAULT, fpgaConcentratePumpsFault ); } - calcMeasuredPumpsSpeed( CONCENTRATEPUMPS_CP1_ACID, getFPGACP1HallSensePulseWidth() ); - calcMeasuredPumpsSpeed( CONCENTRATEPUMPS_CP2_BICARB, getFPGACP2HallSensePulseWidth() ); - U08 cp1Direction = concentratePumps[ CONCENTRATEPUMPS_CP1_ACID ].direction; F32 cp1SetSpeed = concentratePumps[ CONCENTRATEPUMPS_CP1_ACID ].currentPumpSpeed; F32 cp1Speed = getMeasuredPumpSpeed( CONCENTRATEPUMPS_CP1_ACID ); @@ -211,14 +219,6 @@ data.cp1PulseUS = concentratePumps[ CONCENTRATEPUMPS_CP1_ACID ].pulseWidthUS; data.cp2PulseUS = concentratePumps[ CONCENTRATEPUMPS_CP2_BICARB ].pulseWidthUS; -#ifndef _RELEASE_ - if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_CONC_PUMPS_SPEED_ALARM ) != SW_CONFIG_ENABLE_VALUE ) -#endif - { - monitorPumpSpeed( CONCENTRATEPUMPS_CP1_ACID, ALARM_ID_CP1_SPEED_CONTROL_ERROR ); - monitorPumpSpeed( CONCENTRATEPUMPS_CP2_BICARB, ALARM_ID_CP2_SPEED_CONTROL_ERROR ); - } - concentratePumpMonitorTimerCounter = 0; broadcastData( MSG_ID_DG_CONCENTRATE_PUMP_DATA, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&data, sizeof( CONCENTRATE_PUMP_DATA_T ) ); } Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r9826fc85bd1497ec617ae0e825f78b91972de2b3 -r8fc97ad09c8cbdf76dc19929c4751df3feacb40d --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 9826fc85bd1497ec617ae0e825f78b91972de2b3) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 8fc97ad09c8cbdf76dc19929c4751df3feacb40d) @@ -58,7 +58,7 @@ #define MINIMUM_TARGET_TEMPERATURE 10.0F ///< Minimum allowed target temperature for the heaters. #define MAXIMUM_TARGET_TEMPERATURE 90.0F ///< Maximum allowed target temperature for the heaters. -#define HEATERS_ON_NO_FLOW_TIMEOUT_MS ( 1 * MS_PER_SECOND ) ///< Heaters on with no flow time out in milliseconds. +#define HEATERS_ON_NO_FLOW_TIMEOUT_MS ( 10 * MS_PER_SECOND ) ///< Heaters on with no flow time out in milliseconds. #define HEATERS_MAX_OPERATING_VOLTAGE_V 24.0F ///< Heaters max operating voltage in volts. #define HEATERS_VOLTAGE_OUT_OF_RANGE_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Heaters voltage out of range time out in milliseconds. #define HEATERS_MAX_VOLTAGE_OUT_OF_RANGE_TOL 0.2F ///< Heaters max voltage out of range tolerance. Index: firmware/App/Modes/ModeFault.c =================================================================== diff -u -r4b667a7ec18a6196849bbeefdfb23d25d1d58c5a -r8fc97ad09c8cbdf76dc19929c4751df3feacb40d --- firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision 4b667a7ec18a6196849bbeefdfb23d25d1d58c5a) +++ firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision 8fc97ad09c8cbdf76dc19929c4751df3feacb40d) @@ -181,16 +181,6 @@ switch ( status ) { - // If the records were not queued make sure there are enough jobs in the queue and - // queue them to be read - case NVDATAMGMT_RECORDS_NOT_STARTED: - // If the NV POST is completed prepare the queues - if ( TRUE == enqueueNVRecordsForRead() ) - { - state = DG_FAULT_STATE_RUN_NV_POSTS; - } - break; - // If the records are queued or already read, go directly to NV POST to process // their CRCs. case NVDATAMGMT_RECORDS_QUEUED: Index: firmware/App/Modes/ModeFill.c =================================================================== diff -u -r9826fc85bd1497ec617ae0e825f78b91972de2b3 -r8fc97ad09c8cbdf76dc19929c4751df3feacb40d --- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 9826fc85bd1497ec617ae0e825f78b91972de2b3) +++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 8fc97ad09c8cbdf76dc19929c4751df3feacb40d) @@ -579,7 +579,7 @@ } #ifndef _RELEASE_ - if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_BICARB_CONDUCTIVITY_TEST ) == SW_CONFIG_ENABLE_VALUE ) + if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_BICARB_CONDUCTIVITY_TEST ) ) { isConductivityInRange = TRUE; } @@ -650,7 +650,7 @@ } #ifndef _RELEASE_ - if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_BICARB_CONDUCTIVITY_TEST ) == SW_CONFIG_ENABLE_VALUE ) + if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_ACID_CONDUCTIVITY_TEST ) ) { haveTestsPassed = TRUE; } Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -ra4669c80291e85fa5ce17d77ebcfd0c882831202 -r8fc97ad09c8cbdf76dc19929c4751df3feacb40d --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision a4669c80291e85fa5ce17d77ebcfd0c882831202) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 8fc97ad09c8cbdf76dc19929c4751df3feacb40d) @@ -270,12 +270,7 @@ break; case DG_POST_STATE_FAILED: - // Broadcast final POST failed - sendPOSTFinalResult( FALSE ); - // Will want POST faults to wait for us to get here before sending us to fault mode - requestNewOperationMode( DG_MODE_FAUL ); - break; - + // Should not get here - any failed post test should have already triggered a fault and taken us to fault m default: SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_MODE_INIT_POST_INVALID_POST_STATE, postState ) postState = DG_POST_STATE_FAILED; Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -ra89d6b091874136d75a9bfbdbbc1ff00f42467b3 -r8fc97ad09c8cbdf76dc19929c4751df3feacb40d --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision a89d6b091874136d75a9bfbdbbc1ff00f42467b3) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 8fc97ad09c8cbdf76dc19929c4751df3feacb40d) @@ -85,7 +85,7 @@ SW_FAULT_ID_PERSISTENT_ALARM_INVALID_INDEX, SW_FAULT_ID_CONCENTRATE_PUMP_EXEC_INVALID_STATE, // 55 SW_FAULT_ID_CONCENTRATE_PUMP_INVALID_PUMP_ID, - SW_FAULT_ID_______AVAILABLE_2, + SW_FAULT_ID_SEMAPHORE_IN_USE_TIMEOUT, SW_FAULT_ID_UV_REACTORS_INVALID_EXEC_STATE, SW_FAULT_ID_UV_REACTORS_INVALID_SELF_TEST_STATE, SW_FAULT_ID_THERMISTORS_INVALID_EXEC_STATE, // 60 Index: firmware/source/sys_main.c =================================================================== diff -u -r9826fc85bd1497ec617ae0e825f78b91972de2b3 -r8fc97ad09c8cbdf76dc19929c4751df3feacb40d --- firmware/source/sys_main.c (.../sys_main.c) (revision 9826fc85bd1497ec617ae0e825f78b91972de2b3) +++ firmware/source/sys_main.c (.../sys_main.c) (revision 8fc97ad09c8cbdf76dc19929c4751df3feacb40d) @@ -171,6 +171,7 @@ *************************************************************************/ static void initSoftware( void ) { + initSemaphores(); initTimers(); initSafetyShutdown(); initCPLD(); @@ -204,7 +205,6 @@ initFluidLeak(); initOperationModes(); initIntegrity(); - initSemaphores(); } /*************************************************************************