Index: firmware/App/Controllers/ConductivitySensors.c =================================================================== diff -u -rcc182c9aab4b832305e682ebabe855ddec1a6a28 -rd7e69554ce0d291ec3f5576367792dd7810a01ea --- firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision cc182c9aab4b832305e682ebabe855ddec1a6a28) +++ firmware/App/Controllers/ConductivitySensors.c (.../ConductivitySensors.c) (revision d7e69554ce0d291ec3f5576367792dd7810a01ea) @@ -99,7 +99,7 @@ static U32 conductivityDataPublicationTimerCounter; ///< Conductivity sensors data publish timer counter. static BOOL packageStarted = FALSE; ///< Flag to indicate the start of a package measurement data. -static U08 packageIndex = 0U; ///< Current package measurement data bytes index. +static U08 packageIndex; ///< Current package measurement data bytes index. static U08 package[ 50 ]; ///< Storage of package bytes until ready to process. static DG_COND_SENSORS_CAL_RECORD_T condSensorsCalRecord; ///< Conductivity sensors' calibration record. @@ -125,6 +125,7 @@ { U32 i; roRejectionRatio = 0.0; + packageIndex = 0U; conductivityDataPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; for ( i = 0; i < NUM_OF_CONDUCTIVITY_SENSORS; i++ ) Index: firmware/App/Controllers/UVReactors.c =================================================================== diff -u -r92708a5ab23026f5c9afce66bfa542c84141011a -rd7e69554ce0d291ec3f5576367792dd7810a01ea --- firmware/App/Controllers/UVReactors.c (.../UVReactors.c) (revision 92708a5ab23026f5c9afce66bfa542c84141011a) +++ firmware/App/Controllers/UVReactors.c (.../UVReactors.c) (revision d7e69554ce0d291ec3f5576367792dd7810a01ea) @@ -82,7 +82,7 @@ UV_REACTORS_DATA_PUB_INTERVAL, 0, 0 }; ///< UV reactors data publish interval. static U32 dataPublishCounter; ///< UV reactors data publish counter. -static U32 selfTestElapsedTime = 0; ///< UV reactors self test elapsed time. +static U32 selfTestElapsedTime; ///< UV reactors self test elapsed time. // Self test functions static UV_REACTORS_SELF_TEST_STATE_T handleUVReactorsSelfTestOff( void ); @@ -103,7 +103,7 @@ * @details Inputs: uvReactorsSelfTestResult, dataPublishCounter, * reactorsStatus, selfTestStates * @details Outputs: uvReactorsSelfTestResult, dataPublishCounter, - * reactorsStatus, selfTestStates + * reactorsStatus, selfTestStates, selfTestElapsedTime * @return none *************************************************************************/ void initUVReactors( void ) @@ -113,6 +113,7 @@ uvReactorsSelfTestResult = SELF_TEST_STATUS_IN_PROGRESS; uvReactorsSelfTestStates = UV_REACTORS_SELF_TEST_OFF; dataPublishCounter = DATA_PUBLISH_COUNTER_START_COUNT; + selfTestElapsedTime = 0; // Initialize the UV reactors. These values are specific to the inlet and outlet reactor // so they cannot be in a for loop @@ -396,22 +397,10 @@ // Get the health of the reactor (override or non-override) and decide the status BOOL isReactorUnhealthy = ( UV_REACTOR_HEALTHY == getUVReactorHealth( reactor ) ? FALSE : TRUE ); - checkPersistentAlarm( ALARM_ID_UV_REACTOR_NOT_HEALTHY, isReactorUnhealthy, (U32)reactor, MAX_ALLOWED_UNHEALTHY_REACTOR_PERIOD ); - // Check if the alarm has been active - if ( TRUE == isAlarmActive( ALARM_ID_UV_REACTOR_NOT_HEALTHY ) ) + if ( TRUE == checkPersistentAlarm( ALARM_ID_UV_REACTOR_NOT_HEALTHY, isReactorUnhealthy, (U32)reactor, MAX_ALLOWED_UNHEALTHY_REACTOR_PERIOD ) ) { reactorsStatus[ reactor ].switchState = TURN_OFF; - - // Check if the health status is overridden or not and then update the reactor's health - if ( OVERRIDE_KEY == reactorsStatus[ reactor ].healthStatus.override ) - { - reactorsStatus[ reactor ].healthStatus.ovData = UV_REACTOR_OFF; - } - else - { - reactorsStatus[ reactor ].healthStatus.data = UV_REACTOR_OFF; - } } // Check if it has been requested to turn off a reactor Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -r986abcfcf047822cad1a10c1ee0924a80dd5f512 -rd7e69554ce0d291ec3f5576367792dd7810a01ea --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 986abcfcf047822cad1a10c1ee0924a80dd5f512) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision d7e69554ce0d291ec3f5576367792dd7810a01ea) @@ -292,8 +292,10 @@ * @param limit alarm condition limit * @return TRUE if given alarm is active, FALSE if not *************************************************************************/ -void checkPersistentAlarm( ALARM_ID_T alarm, BOOL const isErrorOccured, F32 const data, F32 const limit ) +BOOL checkPersistentAlarm( ALARM_ID_T alarm, BOOL const isErrorOccured, F32 const data, F32 const limit ) { + BOOL status = FALSE; + if ( TRUE == isPersistentAlarmTriggered( alarm, isErrorOccured ) ) { SET_ALARM_WITH_2_F32_DATA( alarm, data, limit ); @@ -302,7 +304,10 @@ if ( TRUE == isPersistentAlarmConditionCleared( alarm, isErrorOccured ) ) { clearAlarmCondition( alarm ); + status = TRUE; } + + return status; } Index: firmware/App/Services/AlarmMgmt.h =================================================================== diff -u -r025612ad77fe630889a364586de54bffe5262d56 -rd7e69554ce0d291ec3f5576367792dd7810a01ea --- firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 025612ad77fe630889a364586de54bffe5262d56) +++ firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision d7e69554ce0d291ec3f5576367792dd7810a01ea) @@ -88,7 +88,7 @@ void clearAlarmCondition( ALARM_ID_T alarm ); BOOL isAlarmActive( ALARM_ID_T alarm ); -void checkPersistentAlarm( ALARM_ID_T alarm, BOOL const isErrorOccured, F32 const data, F32 const limit ); +BOOL checkPersistentAlarm( ALARM_ID_T alarm, BOOL const isErrorOccured, F32 const data, F32 const limit ); BOOL testSetAlarmStateOverride( U32 alarmID, BOOL value ); BOOL testResetAlarmStateOverride( U32 alarmID ); Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r02654dc5b372b3af948ebd28aabb95cc4b51c785 -rd7e69554ce0d291ec3f5576367792dd7810a01ea --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 02654dc5b372b3af948ebd28aabb95cc4b51c785) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision d7e69554ce0d291ec3f5576367792dd7810a01ea) @@ -3360,16 +3360,19 @@ BOOL status = FALSE; U08* payloadPtr = message->payload; - memcpy(¤tMessage, payloadPtr, sizeof(U32)); - payloadPtr += sizeof(U32); + if ( message->hdr.payloadLen >= ( sizeof(currentMessage) + sizeof(totalMessages) + sizeof(payloadLength) ) ) + { + memcpy(¤tMessage, payloadPtr, sizeof(U32)); + payloadPtr += sizeof(U32); - memcpy(&totalMessages, payloadPtr, sizeof(U32)); - payloadPtr += sizeof(U32); + memcpy(&totalMessages, payloadPtr, sizeof(U32)); + payloadPtr += sizeof(U32); - memcpy(&payloadLength, payloadPtr, sizeof(U32)); - payloadPtr += sizeof(U32); + memcpy(&payloadLength, payloadPtr, sizeof(U32)); + payloadPtr += sizeof(U32); - status = receiveRecordFromDialin( NVDATAMGMT_SW_CONFIG_RECORD, currentMessage, totalMessages, payloadLength, payloadPtr ); + status = receiveRecordFromDialin( NVDATAMGMT_SW_CONFIG_RECORD, currentMessage, totalMessages, payloadLength, payloadPtr ); + } // Respond to request sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, status );