Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r5c430c3ac17fc8ad836fd70b8a3b8a12af44319e -r6530db1926d689b51c2f5fcd6ae928c40ebf5f42 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 5c430c3ac17fc8ad836fd70b8a3b8a12af44319e) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 6530db1926d689b51c2f5fcd6ae928c40ebf5f42) @@ -7,8 +7,8 @@ * * @file SystemCommMessages.c * -* @author (last) Dara Navaei -* @date (last) 02-Jan-2023 +* @author (last) Michael Garthwaite +* @date (last) 20-Mar-2023 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 @@ -484,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 ) ) @@ -502,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 ); } /*********************************************************************//** @@ -526,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; @@ -1676,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 @@ -4268,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 { @@ -4312,4 +4312,128 @@ 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 + /**@}*/