Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -rd00ad426d849083922332f832e88e7137a1cad60 -r62a4d7b976107f7ac4d5013ce06f38f4a0bf65bd --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision d00ad426d849083922332f832e88e7137a1cad60) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 62a4d7b976107f7ac4d5013ce06f38f4a0bf65bd) @@ -56,19 +56,7 @@ #ifdef DEBUG_ENABLED #define DEBUG_EVENT_MAX_TEXT_LEN 40 #endif - -#pragma pack(push,1) - -/// Heat disinfect data -typedef struct -{ - U32 internalState; ///< Internal state of heat disinfect state machine - F32 elapsedTimeMins; ///< Heat disinfect elapsed time in minutes - U32 currentCycle; ///< Current cycle of the heat disinfect -} DG_HEAT_DISINFECT_DATA_T; -#pragma pack(pop) - // ********** private data ********** static BOOL testerLoggedIn = FALSE; ///< Flag indicates whether tester logged in or not. @@ -667,24 +655,19 @@ * @param currentCycle: Current cycle count of DG heat disinfection * @return TRUE if msg successfully queued for transmit, FALSE if not *************************************************************************/ -BOOL broadcastHeatDisinfectData( U32 internalState, F32 minutesElapsed, U32 currentCycle ) +BOOL broadcastHeatDisinfectData( DG_HEAT_DISINFECT_DATA_T *data ) { BOOL result; MESSAGE_T msg; U08 *payloadPtr = msg.payload; - DG_HEAT_DISINFECT_DATA_T payload; // create a message record blankMessage( &msg ); msg.hdr.msgID = MSG_ID_DG_HEAT_DISINFECT_DATA; msg.hdr.payloadLen = sizeof( DG_HEAT_DISINFECT_DATA_T ); - payload.internalState = internalState; - payload.elapsedTimeMins = minutesElapsed; - payload.currentCycle = currentCycle; + memcpy( payloadPtr, data, sizeof( DG_HEAT_DISINFECT_DATA_T ) ); - memcpy( payloadPtr, &payload, sizeof( DG_HEAT_DISINFECT_DATA_T ) ); - // serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_DG_BROADCAST, ACK_NOT_REQUIRED ); @@ -2183,7 +2166,7 @@ * @param message a pointer to the message to handle * @return none *************************************************************************/ -void handleUVReactorsDataPunlishIntervalOverride( MESSAGE_T *message ) +void handleUVReactorsDataPublishIntervalOverride( MESSAGE_T *message ) { TEST_OVERRIDE_PAYLOAD_T payload; BOOL result = FALSE; @@ -2272,4 +2255,132 @@ return result; } +/*********************************************************************//** +* @brief +* The handleUVReactorsHealthOverride function handles UV reactors health +* status override. +* @details Inputs: none +* @details Outputs: message handled +* @param message a pointer to the message to handle +* @return none +*************************************************************************/ +void handleUVReactorsHealthOverride( MESSAGE_T *message ) +{ + TEST_OVERRIDE_ARRAY_PAYLOAD_T payload; + BOOL result = FALSE; + + // verify payload length + if ( sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) == message->hdr.payloadLen ) + { + memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) ); + if ( FALSE == payload.reset ) + { + result = testSetUVReactorHealthOverride( payload.index, (BOOL)payload.state.u32 ); + } + else + { + result = testResetUVReactorHealthOverride( payload.index ); + } + } + + // respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** +* @brief +* The handleThermistorsDataPublishIntervalOverride function handles a request +* to override the publish interval of the thermistors data +* @details Inputs: none +* @details Outputs: message handled +* @param message a pointer to the message to handle +* @return none +*************************************************************************/ +void handleThermistorsDataPublishIntervalOverride( MESSAGE_T *message ) +{ + TEST_OVERRIDE_PAYLOAD_T payload; + BOOL result = FALSE; + + // verify payload length + if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + { + memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + if ( FALSE == payload.reset ) + { + result = testSetThermistorPublishIntervalOverride( payload.state.u32 ); + } + else + { + result = testResetThermistorPublishIntervalOverride(); + } + } + + // respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** +* @brief +* The handleThermisotrsValueOverride function handles a request to override +* a thermistor's value +* @details Inputs: none +* @details Outputs: message handled +* @param message a pointer to the message to handle +* @return none +*************************************************************************/ +void handleThermisotrsValueOverride( MESSAGE_T *message ) +{ + TEST_OVERRIDE_ARRAY_PAYLOAD_T payload; + BOOL result = FALSE; + + // verify payload length + if ( sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) == message->hdr.payloadLen ) + { + memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_ARRAY_PAYLOAD_T) ); + if ( FALSE == payload.reset ) + { + result = testSetMeasuredThermistorOverride( payload.index, payload.state.f32 ); + } + else + { + result = testResetMeasuredThermistorOverride( payload.index ); + } + } + + // respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** +* @brief +* The handleROPumpDutyCycleOverride function handles a request to override +* the RO pumps duty cycle +* @details Inputs: none +* @details Outputs: message handled +* @param message a pointer to the message to handle +* @return none +*************************************************************************/ +void handleROPumpDutyCycleOverride( MESSAGE_T *message ) +{ + TEST_OVERRIDE_PAYLOAD_T payload; + BOOL result = FALSE; + + // verify payload length + if ( sizeof(TEST_OVERRIDE_PAYLOAD_T) == message->hdr.payloadLen ) + { + memcpy( &payload, message->payload, sizeof(TEST_OVERRIDE_PAYLOAD_T) ); + if ( FALSE == payload.reset ) + { + result = testSetTargetDutyCycleOverride( payload.state.f32 ); + } + else + { + result = testResetTargetDutyCyceOverride(); + } + } + + // respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + /**@}*/