Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -receb190a5d66fdbee779478ac8bb50a846ed9241 -r6530db1926d689b51c2f5fcd6ae928c40ebf5f42 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision eceb190a5d66fdbee779478ac8bb50a846ed9241) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 6530db1926d689b51c2f5fcd6ae928c40ebf5f42) @@ -1,14 +1,14 @@ /************************************************************************** * -* Copyright (c) 2019-2022 Diality Inc. - All Rights Reserved. +* Copyright (c) 2019-2023 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * @file SystemCommMessages.c * -* @author (last) Dara Navaei -* @date (last) 21-Dec-2022 +* @author (last) Michael Garthwaite +* @date (last) 20-Mar-2023 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 @@ -29,6 +29,7 @@ #include "FPGA.h" #include "Heaters.h" #include "ModeChemicalDisinfect.h" +#include "ModeChemicalDisinfectFlush.h" #include "ModeFill.h" #include "ModeFlush.h" #include "ModeGenIdle.h" @@ -483,7 +484,7 @@ // create a message record blankMessage( &msg ); - msg.hdr.msgID = MSG_ID_DG_VERSION; + msg.hdr.msgID = MSG_ID_DG_VERSION_REPONSE; msg.hdr.payloadLen = sizeof( DG_VERSIONS_T ); if ( message->hdr.payloadLen == sizeof( U08 ) + sizeof( U08 ) + sizeof( U08 ) + sizeof( U16 ) + sizeof( U32 ) ) @@ -501,7 +502,7 @@ } // serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer - serializeMessage( msg, COMM_BUFFER_OUT_CAN_DG_BROADCAST, ACK_NOT_REQUIRED ); + serializeMessage( msg, COMM_BUFFER_OUT_CAN_DG_BROADCAST, ACK_REQUIRED ); } /*********************************************************************//** @@ -525,7 +526,7 @@ // Create a message record blankMessage( &msg ); - msg.hdr.msgID = MSG_ID_DG_SERIAL_NUMBER; + msg.hdr.msgID = MSG_ID_DG_SERIAL_NUMBER_RESPONSE; // Add 1 byte for null terminator msg.hdr.payloadLen = MAX_TOP_LEVEL_SN_CHARS + 1; @@ -1675,7 +1676,7 @@ getCPLDStatus( &payload ); // create a message record blankMessage( &msg ); - msg.hdr.msgID = MSG_ID_DG_CPLD_STATUS; + msg.hdr.msgID = MSG_ID_DG_CPLD_STATUS_DATA; msg.hdr.payloadLen = sizeof( CPLD_STATUS_T ); // fill message payload @@ -2310,14 +2311,14 @@ /************************************************************************* * @brief - * The handleSetDrainPumpTargetOutletPressure function handles a - * request to set the drain pump outlet pressure. + * The handleSetDrainPumpTargetOutletFlowLPM function handles a + * request to set the drain pump outlet flow in L/min. * @details Inputs: none * @details Outputs: message handled * @param message a pointer to the message to handle * @return none *************************************************************************/ -void handleSetDrainPumpTargetOutletPressure( MESSAGE_T *message ) +void handleSetDrainPumpTargetOutletFlowLPM( MESSAGE_T *message ) { BOOL result = 0; @@ -2328,7 +2329,7 @@ memcpy( &payLoad, message->payload, sizeof( F32 ) ); - result = testSetTargetDrainPumpOutletPressure( payLoad ); + result = testSetTargetDrainPumpOutletFlowLPM( payLoad ); } /* respond to request */ sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); @@ -4246,6 +4247,7 @@ // respond to request sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); } + /*********************************************************************//** * @brief * The handleTestDGFillIntegratedVolumeOverrideRequest function handles a request @@ -4266,7 +4268,7 @@ memcpy( &payload, message->payload, sizeof( TEST_OVERRIDE_PAYLOAD_T ) ); if ( FALSE == payload.reset ) { - result = testSetIntegratedVolumeOverride( payload.state.u32 ); + result = testSetIntegratedVolumeOverride( payload.state.f32 ); } else { @@ -4278,4 +4280,160 @@ sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); } +/*********************************************************************//** + * @brief + * The handleTestDGHeatersDutyCycleOverrideRequest function handles a request + * to override the heaters duty cycle + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none + *************************************************************************/ +void handleTestDGHeatersDutyCycleOverrideRequest( 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 = testSetHeaterDutyCycleOverride( payload.index, payload.state.f32 ); + } + else + { + result = testResetHeaterDutyCycleOverride( payload.index ); + } + } + + // respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** + * @brief + * The handleDGRTCControlReg1StatusOverrideRequest function handles a + * request to override RTC control register 1. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleDGRTCControlReg1StatusOverrideRequest( 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 = testSetRTCCtlReg1Status( payload.state.u32 ); + } + else + { + result = testResetRTCCtlReg1Status(); + } + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +/*********************************************************************//** + * @brief + * The handleDGRTCControlReg1StatusOverrideRequest function handles a + * request to override RTC control register 3. + * @details Inputs: none + * @details Outputs: message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleDGRTCControlReg3StatusOverrideRequest( 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 = testSetRTCCtlReg3Status( payload.state.u32 ); + } + else + { + result = testResetRTCCtlReg3Status(); + } + } + + // Respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + +#ifndef _RELEASE_ +/*********************************************************************//** + * @brief + * The handleTestDGNelsonDisinfectSupport function handles a request + * to set the Nelson disinfect support mode. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none + *************************************************************************/ +void handleTestDGNelsonDisinfectSupport( MESSAGE_T *message ) +{ + U32 payload; + BOOL result = FALSE; + + // verify payload length + if ( ( sizeof( U32 ) == message->hdr.payloadLen ) && + ( ( DG_MODE_STAN == getCurrentOperationMode() ) || ( DG_MODE_SOLO == getCurrentOperationMode() ) ) ) + { + NELSON_SUPPORT_T nelson; + + memcpy( &payload, message->payload, sizeof( U32 ) ); + + nelson = (NELSON_SUPPORT_T)payload; + result = TRUE; + + switch( nelson ) + { + case NELSON_INOCULATE: + setHeatNelsonSupportMode( nelson ); + requestNewOperationMode( DG_MODE_HEAT ); + break; + + case NELSON_HEAT_DISINFECT: + setHeatNelsonSupportMode( nelson ); + requestNewOperationMode( DG_MODE_HEAT ); + break; + + case NELSON_POS_CONTROL_HEAT_DISINFECT: + setHeatNelsonSupportMode( nelson ); + requestNewOperationMode( DG_MODE_HEAT ); + break; + + case NELSON_CHEM_DISINFECT: + setChemNelsonSupportMode( nelson ); + requestNewOperationMode( DG_MODE_CHEM ); + break; + + case NELSON_DRAIN_SAMPLES: + setHeatNelsonSupportMode( nelson ); + requestNewOperationMode( DG_MODE_HEAT ); + break; + } + } + + // respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} +#endif + /**@}*/