Index: firmware/App/DGCommon.h =================================================================== diff -u -rfa8082956bc1d94cdd7b2375053a4f35e3159f43 -r33bcd0fcd7a3bba5f85a7e35ac63aadbe4e91671 --- firmware/App/DGCommon.h (.../DGCommon.h) (revision fa8082956bc1d94cdd7b2375053a4f35e3159f43) +++ firmware/App/DGCommon.h (.../DGCommon.h) (revision 33bcd0fcd7a3bba5f85a7e35ac63aadbe4e91671) @@ -1,14 +1,14 @@ /************************************************************************** * -* Copyright (c) 2019-2022 Diality Inc. - All Rights Reserved. +* Copyright (c) 2020-2022 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 DGCommon.h * * @author (last) Dara Navaei -* @date (last) 05-Jan-2022 +* @date (last) 02-Mar-2022 * * @author (original) Sean * @date (original) 27-Feb-2020 @@ -25,41 +25,43 @@ #define DG_VERSION_MAJOR 0 #define DG_VERSION_MINOR 6 #define DG_VERSION_MICRO 0 -#define DG_VERSION_BUILD 18 +#define DG_VERSION_BUILD 20 // ********** build switches ********** #ifndef _RELEASE_ #ifndef _VECTORCAST_ // TODO: Removed debug build flags when release build is ready -// #define BOARD_WITH_NO_HARDWARE 1 -// #define TASK_TIMING_OUTPUT_ENABLED 1 // re-purposes drain pump enable pin for task timing -// #define DISABLE_HEATERS_AND_TEMPS 1 -// #define DISABLE_ACCELS 1 -// #define SKIP_POST 1 - #define SKIP_CAL_CHECK 1 -// #define ENABLE_DIP_SWITCHES 1 -// #define EMC_TEST_BUILD 1 - #define ALARMS_DEBUG 1 -// #define HEATERS_DEBUG 1 -// #define PRESSURES_DEBUG 1 - // #define IGNORE_DRAIN_PUMP_MONITOR 1 - #define IGNORE_HEATERS_MONITOR 1 - #define IGNORE_RO_PUMP_MONITOR 1 - #define DISABLE_RO_RATIO_CHECK 1 - #define DISABLE_COND_SENSOR_CHECK 1 // Disabled for Tom - #define DISABLE_WATER_QUALITY_CHECK 1 // Disabled for Tom - #define DISABLE_RTC_CONFIG 1 - #define THD_USING_TRO_CONNECTOR 1 - #define DISABLE_FLOW_CHECK_IN_FILL 1 - #define IGNORE_CONC_PUMP_IN_HEAT_DISINFECT 1 -// #define NEW_FMD_FLOW_SENSOR 1 +// #define BOARD_WITH_NO_HARDWARE 1 // Build switch +// #define TASK_TIMING_OUTPUT_ENABLED 1 // Build switch // re-purposes drain pump enable pin for task timing +// #define DISABLE_HEATERS_AND_TEMPS 1 // Implement +// #define DISABLE_ACCELS 1 // Implement +// #define SKIP_POST 1 // Not needed + #define SKIP_CAL_CHECK 1 // Implement +// #define ENABLE_DIP_SWITCHES 1 // Not needed +// #define EMC_TEST_BUILD 1 // Build switch + #define ALARMS_DEBUG 1 // Not needed +// #define HEATERS_DEBUG 1 // Not needed +// #define PRESSURES_DEBUG 1 // Not needed + // #define IGNORE_DRAIN_PUMP_MONITOR 1 // Build switch + #define IGNORE_HEATERS_MONITOR 1 // Build switch + #define IGNORE_RO_PUMP_MONITOR 1 // Build switch + #define DISABLE_RO_RATIO_CHECK 1 // Implement + #define DISABLE_COND_SENSOR_CHECK 1 // Disabled for Tom // Implement + #define DISABLE_WATER_QUALITY_CHECK 1 // Disabled for Tom // Implement + #define DISABLE_RTC_CONFIG 1 // Not needed + #define THD_USING_TRO_CONNECTOR 1 // Build switch + #define DISABLE_FLOW_CHECK_IN_FILL 1 // Implement + #define IGNORE_CONC_PUMP_IN_HEAT_DISINFECT 1 // Not needed +// #define NEW_FMD_FLOW_SENSOR 1 // Not needed + #define DISABLE_HEATERS_EFFICIENCY 1 + #define DISABLE_HEAT_DISINFECT_CONDUCTIVITY 1 // Implement // Turn these flags on to disable dialysate mixing - #define DISABLE_DIALYSATE_CHECK 1 // Disabled for Tom -// #define DISABLE_MIXING 1 - //#define DISABLE_FLOW_CONTROL_TREATMENT 1 - #define DISABLE_ACK_ALARM 1 + #define DISABLE_DIALYSATE_CHECK 1 // Disabled for Tom // Implement +// #define DISABLE_MIXING 1 // Implement + //#define DISABLE_FLOW_CONTROL_TREATMENT 1 // Not needed + #define DISABLE_ACK_ALARM 1 // Build switch #include #include Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -ra9315539f527b92523b1598ff91e47db4d71dae2 -r33bcd0fcd7a3bba5f85a7e35ac63aadbe4e91671 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision a9315539f527b92523b1598ff91e47db4d71dae2) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 33bcd0fcd7a3bba5f85a7e35ac63aadbe4e91671) @@ -100,7 +100,7 @@ static volatile BOOL dgIsOnlyCANNode = TRUE; ///< flag indicating whether DG is alone on CAN bus. static U32 canXmitRetryCtr = 0; ///< counter for CAN transmit retries. -static volatile BOOL hdIsCommunicating = FALSE; ///< has HD sent a message since last check +static OVERRIDE_U32_T hdCommunicationStatus = {0, 0, 0, 0}; ///< has HD sent a message since last check static volatile U32 timeOfLastHDCheckIn = 0; ///< last time we received an HD broadcast // ********** private function prototypes ********** @@ -153,7 +153,7 @@ *************************************************************************/ BOOL isHDCommunicating( void ) { - return hdIsCommunicating; + return getU32OverrideValue(&hdCommunicationStatus); } /*********************************************************************//** @@ -496,7 +496,7 @@ // if message from HD broadcast channel, update HD comm status if ( COMM_BUFFER_IN_CAN_HD_BROADCAST == MSG_IN_BUFFERS[ i ] ) { - hdIsCommunicating = TRUE; + hdCommunicationStatus.data = (U32)TRUE; timeOfLastHDCheckIn = getMSTimerCount(); } } @@ -654,7 +654,7 @@ { if ( TRUE == didTimeout( timeOfLastHDCheckIn, HD_COMM_TIMEOUT_IN_MS ) ) { - hdIsCommunicating = FALSE; + hdCommunicationStatus.data = FALSE; //activateAlarmNoData( ALARM_ID_HD_COMM_TIMEOUT ); } } @@ -1165,11 +1165,64 @@ handleSetFansDutyCycleOverrideRequest( message ); break; + case MSG_ID_DG_HD_COMMUNICATION_STATUS_OVERRIDE: + handleTestHDCommunicationStatusOverrideRequest( message ); + break; + default: // TODO - unrecognized message ID received - ignore break; } } } + +/************************************************************************* + * TEST SUPPORT FUNCTIONS + *************************************************************************/ + +/*********************************************************************//** + * @brief + * The testSetHDCommunicationStatus function sets the override + * of the HD communication status. + * @details Inputs: none + * @details Outputs: hdCommunicationStatus + * @return TRUE if reset successful, FALSE if not + *************************************************************************/ +BOOL testSetHDCommunicationStatus( U32 value ) +{ + BOOL result = FALSE; + + if (TRUE == isTestingActivated() ) + { + result = TRUE; + hdCommunicationStatus.ovData = value; + hdCommunicationStatus.override = OVERRIDE_KEY; + + } + return result; +} + +/*********************************************************************//** + * @brief + * The testResetHDCommuncationStatus function resets the override + * of the HD communication status. + * @details Inputs: none + * @details Outputs: hdCommunicationStatus + * @return TRUE if reset successful, FALSE if not + *************************************************************************/ +BOOL testResetHDCommuncationStatus( void ) +{ + BOOL result = FALSE; + + if (TRUE == isTestingActivated() ) + { + result = TRUE; + hdCommunicationStatus.override = OVERRIDE_RESET; + hdCommunicationStatus.ovData = hdCommunicationStatus.ovInitData; + + } + return result; +} + /**@}*/ Index: firmware/App/Services/SystemComm.h =================================================================== diff -u -ra9315539f527b92523b1598ff91e47db4d71dae2 -r33bcd0fcd7a3bba5f85a7e35ac63aadbe4e91671 --- firmware/App/Services/SystemComm.h (.../SystemComm.h) (revision a9315539f527b92523b1598ff91e47db4d71dae2) +++ firmware/App/Services/SystemComm.h (.../SystemComm.h) (revision 33bcd0fcd7a3bba5f85a7e35ac63aadbe4e91671) @@ -55,6 +55,8 @@ BOOL isHDCommunicating( void ); BOOL isDGOnlyCANNode( void ); BOOL addMsgToPendingACKList( MESSAGE_T *msg, COMM_BUFFER_T channel, U08 *msgData, U32 len ); +BOOL testSetHDCommunicationStatus( void ); +BOOL testResetHDCommuncationStatus( void ); /**@}*/ Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -ra9315539f527b92523b1598ff91e47db4d71dae2 -r33bcd0fcd7a3bba5f85a7e35ac63aadbe4e91671 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision a9315539f527b92523b1598ff91e47db4d71dae2) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 33bcd0fcd7a3bba5f85a7e35ac63aadbe4e91671) @@ -20,6 +20,7 @@ #include "reg_system.h" #include "Accel.h" +#include "Compatible.h" #include "ConcentratePumps.h" #include "ConductivitySensors.h" #include "Fans.h" @@ -453,6 +454,7 @@ payload.minor = (U08)DG_VERSION_MINOR; payload.micro = (U08)DG_VERSION_MICRO; payload.build = (U16)DG_VERSION_BUILD; + payload.compatibilityRev = (U32)SW_COMPATIBILITY_REV; getFPGAVersions( &payload.fpgaId, &payload.fpgaMajor, &payload.fpgaMinor, &payload.fpgaLab ); // create a message record @@ -3378,4 +3380,36 @@ sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, status ); } +/*********************************************************************//** + * @brief + * The handleTestHDCommunicationStatusOverrideRequest function handles a request + * request to override the HD Communication Status. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none + *************************************************************************/ +void handleTestHDCommunicationStatusOverrideRequest(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 = testSetHDCommunicationStatus(payload.state.u32); + } + else + { + result = testResetHDCommuncationStatus(); + } + } + + // respond to request + sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); +} + /**@}*/ Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -r2c5f0db65f23016a42f3e28160c308336f2b108e -r33bcd0fcd7a3bba5f85a7e35ac63aadbe4e91671 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 2c5f0db65f23016a42f3e28160c308336f2b108e) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 33bcd0fcd7a3bba5f85a7e35ac63aadbe4e91671) @@ -8,7 +8,7 @@ * @file SystemCommMessages.h * * @author (last) Dara Navaei -* @date (last) 21-Dec-2021 +* @date (last) 03-Feb-2022 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 @@ -140,6 +140,12 @@ // MSG_ID_DG_POST_FINAL_TEST_RESULT BOOL sendPOSTFinalResult( BOOL passed ); +// MSG_ID_DG_SEND_SW_CONFIG_RECORD +BOOL sendDGSWConfigRecord( U32 payloadCurrNum, U32 payloadTotalNum, U32 length, U08* swRcrdAddress ); + +// MSG_ID_DG_SCHEDULED_RUNS_INFO +void handleDGScheduledRunsRequest( MESSAGE_T *message ); + // *********** public test support message functions ********** // MSG_TESTER_LOG_IN @@ -353,6 +359,15 @@ // MSG_ID_DG_FAN_RPM_ALARM_START_TIME_OFFSET_OVERRIDE void handleTestFansRPMAlarmStartTimeOffsetOverrideRequest( MESSAGE_T *message ); +// MSG_ID_DG_FANS_DUTY_CYCLE_OVERRIDE +void handleSetFansDutyCycleOverrideRequest( MESSAGE_T *message ); + +// MSG_ID_DG_GET_SW_CONFIG_RECORD +void handleGetDGSoftwareConfigRecord( MESSAGE_T *message ); + +// MSG_ID_DG_SET_SW_CONFIG_RECORD +void handleSetDGSoftwareConfigRecord( MESSAGE_T *message ); + // MSG_ID_DG_HD_COMMUNICATION_STATUS void handleTestHDCommunicationStatusOverrideRequest(MESSAGE_T *message);