Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r6a8d904f4316ed9d9f2f14f99afde63bef38eace -rb5339d536b28ea207799c5d0bfbbd6c9ed6e47a3 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 6a8d904f4316ed9d9f2f14f99afde63bef38eace) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision b5339d536b28ea207799c5d0bfbbd6c9ed6e47a3) @@ -7,8 +7,8 @@ * * @file SystemComm.c * -* @author (last) Dara Navaei -* @date (last) 14-Dec-2022 +* @author (last) James Walter Taylor +* @date (last) 31-Mar-2023 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 @@ -45,15 +45,15 @@ #define CAN_XMIT_PACKET_TIMEOUT_MS 200 ///< If transmitted CAN frame does not cause a transmit complete interrupt within this time, re-send or move on #define MAX_XMIT_RETRIES 5 ///< Maximum number of retries on no transmit complete interrupt timeout -#define UI_COMM_TIMEOUT_IN_MS 5000 ///< UI has not checked in for this much time +#define UI_COMM_TIMEOUT_IN_MS 7500 ///< UI has not checked in for this much time #define DG_COMM_TIMEOUT_IN_MS 1000 ///< DG has not checked in for this much time #define MAX_COMM_CRC_FAILURES 5 ///< Maximum number of CRC errors within window period before alarm #define MAX_COMM_CRC_FAILURE_WINDOW_MS (10 * SEC_PER_MIN * MS_PER_SECOND) ///< CRC error window -#define MSG_NOT_ACKED_TIMEOUT_MS 150 ///< Maximum time for a Denali message that requires ACK to be ACK'd +#define MSG_NOT_ACKED_TIMEOUT_MS 250 ///< Maximum time for a Denali message that requires ACK to be ACK'd -#define MSG_NOT_ACKED_MAX_RETRIES 20 ///< Maximum number of times a message that requires ACK that was not ACK'd can be re-sent before alarm +#define MSG_NOT_ACKED_MAX_RETRIES 10 ///< Maximum number of times a message that requires ACK that was not ACK'd can be re-sent before alarm #define PENDING_ACK_LIST_SIZE 25 ///< Maximum number of Denali messages that can be pending ACK at any given time #define MAX_FPGA_CLOCK_SPEED_ERRORS 3 ///< maximum number of FPGA clock speed errors within window period before alarm @@ -761,21 +761,21 @@ } } - // Only alarm on DG comm loss while in the treatment workflow - if ( MODE_PRET == opMode || MODE_TREA == opMode || MODE_POST == opMode ) + if ( TRUE == didTimeout( timeOfLastDGCheckIn, DG_COMM_TIMEOUT_IN_MS ) ) { - if ( TRUE == didTimeout( timeOfLastDGCheckIn, DG_COMM_TIMEOUT_IN_MS ) ) - { #ifndef RUN_WITHOUT_DG + // Only alarm on DG comm loss while in the treatment workflow + if ( MODE_PRET == opMode || MODE_TREA == opMode || MODE_POST == opMode ) + { activateAlarmNoData( ALARM_ID_DG_COMM_TIMEOUT ); - dgIsCommunicating = FALSE; -#endif } + else // Otherwise clear the alarm + { + clearAlarmCondition( ALARM_ID_DG_COMM_TIMEOUT ); + } + dgIsCommunicating = FALSE; +#endif } - else // Otherwise clear the alarm - { - clearAlarm( ALARM_ID_DG_COMM_TIMEOUT ); - } } } @@ -922,7 +922,7 @@ // Handle any messages from other sub-systems switch ( msgID ) { - case MSG_ID_OFF_BUTTON_PRESS: + case MSG_ID_OFF_BUTTON_PRESS_REQUEST: handleOffButtonConfirmMsgFromUI( message ); break; @@ -934,19 +934,15 @@ handleAlarmCleared( message ); break; - case MSG_ID_UI_ALARM_USER_ACTION: + case MSG_ID_UI_ALARM_USER_ACTION_REQUEST: handleAlarmUserAction( message ); - break; - - case MSG_ID_DG_CHECK_IN: - handleDGCheckIn( message ); break; case MSG_ID_UI_CHECK_IN: handleUICheckIn( message ); break; - case MSG_ID_LOAD_CELL_READINGS: + case MSG_ID_LOAD_CELL_READINGS_DATA: handleLoadCellReadingsFromDG( message ); break; @@ -962,7 +958,7 @@ handleSalineBolusRequest( message ); break; - case MSG_ID_USER_CONFIRM_UF_SETTINGS_CHANGE: + case MSG_ID_USER_CONFIRM_UF_SETTINGS_CHANGE_REQUEST: handleChangeUFSettingsConfirmation( message ); break; @@ -974,12 +970,12 @@ handleChangeBloodDialysateRateChangeRequest( message ); break; - case MSG_ID_REQUEST_FW_VERSIONS: + case MSG_ID_FW_VERSIONS_REQUEST: handleFWVersionRequest( message ); handleHDSerialNumberRequest(); break; - case MSG_ID_DG_VERSION: + case MSG_ID_DG_VERSION_REPONSE: handleDGVersionResponse( message ); break; @@ -995,27 +991,27 @@ handleDialysateFlowData( message ); break; - case MSG_ID_DG_OP_MODE: + case MSG_ID_DG_OP_MODE_DATA: handleDGOpMode( message ); break; case MSG_ID_DG_RESERVOIRS_DATA: handleDGReservoirData( message ); break; - case MSG_ID_USER_REQUEST_ALARM_SILENCE: + case MSG_ID_USER_ALARM_SILENCE_REQUEST: handleUIAlarmSilenceRequest( message ); break; - case MSG_ID_UI_NEW_TREATMENT_PARAMS: + case MSG_ID_UI_NEW_TREATMENT_PARAMS_REQUEST: handleTreatmentParametersFromUI( message ); break; case MSG_ID_UI_INITIATE_TREATMENT_REQUEST: handleInitiateTreatmentRequest( message ); break; - case MSG_ID_UI_USER_CONFIRM_TREATMENT_PARAMS: + case MSG_ID_UI_USER_CONFIRM_TREATMENT_PARAMS_REQUEST: handleUIUserConfirmTreatmentParameters( message ); break; @@ -1027,27 +1023,27 @@ handleHeparinCommandRequest( message ); break; - case MSG_ID_UI_SET_ALARM_AUDIO_VOLUME_LEVEL_CMD: + case MSG_ID_UI_SET_ALARM_AUDIO_VOLUME_LEVEL_CMD_REQUEST: handleAlarmAudioVolumeSetCmd( message ); break; - case MSG_ID_UI_SET_UF_VOLUME_PARAMETER: + case MSG_ID_UI_SET_UF_VOLUME_PARAMETER_REQUEST: handleUFVolumeSetRequest( message ); break; - case MSG_ID_UI_SAMPLE_WATER_CMD: + case MSG_ID_UI_SAMPLE_WATER_CMD_REQUEST: handleSampleWaterCmd( message ); break; case MSG_ID_UI_SAMPLE_WATER_RESULT: handleSampleWaterResult( message ); break; - case MSG_ID_UI_CONSUMABLE_INSTALL_CONFIRM: + case MSG_ID_UI_CONSUMABLE_INSTALL_CONFIRM_REQUEST: handleConsumableInstallConfirm( message ); break; - case MSG_ID_UI_INSTALLATION_CONFIRM: + case MSG_ID_UI_INSTALLATION_CONFIRM_REQUEST: handleInstallationConfirm( message ); break; @@ -1059,31 +1055,31 @@ handleContinueToTreatmentCmd( message ); break; - case MSG_ID_UI_PATIENT_CONNECTION_CONFIRM: + case MSG_ID_UI_PATIENT_CONNECTION_CONFIRM_REQUEST: handlePatientConnectionConfirmCmd( message ); break; case MSG_ID_UI_START_TREATMENT_REQUEST: handleStartTreatmentRequest( message ); break; - case MSG_ID_UI_RINSEBACK_CMD: + case MSG_ID_UI_RINSEBACK_CMD_REQUEST: handlRinsebackCmd( message ); break; - case MSG_ID_UI_RECIRC_CMD: + case MSG_ID_UI_RECIRC_CMD_REQUEST: handleTreatmentRecircCmd( message ); break; - case MSG_ID_UI_TX_END_CMD: + case MSG_ID_UI_TX_END_CMD_REQUEST: handleTreatmentEndCmd( message ); break; - case MSG_ID_UI_PATIENT_DISCONNECTION_CONFIRM: + case MSG_ID_UI_PATIENT_DISCONNECTION_CONFIRM_REQUEST: handlePatientDisconnectionConfirmCmd( message ); break; - case MSG_ID_UI_DISPOSABLE_REMOVAL_CONFIRM: + case MSG_ID_UI_DISPOSABLE_REMOVAL_CONFIRM_REQUEST: handleDisposableRemovalConfirmCmd( message ); break; @@ -1123,7 +1119,7 @@ handleUIPOSTFinalResult( message ); break; - case MSG_ID_HD_UI_VERSION_INFO_RESPONSE: + case MSG_ID_UI_VERSION_INFO_RESPONSE: handleUIVersionResponse( message ); break; @@ -1135,19 +1131,19 @@ handleSetHDStandbyDisinfectSubmodeRequest( message ); break; - case MSG_ID_UI_REQUEST_SERVICE_INFO: + case MSG_ID_UI_SERVICE_INFO_REQUEST: handleHDServiceScheduleRequest( message ); break; - case MSG_ID_REQUEST_HD_USAGE_INFO: + case MSG_ID_HD_USAGE_INFO_REQUEST: handleHDUsageInfoRequest( message ); break; case MSG_ID_DG_CONCENTRATE_MIXING_RATIOS_DATA: handleDGMixingRatios( message ); break; - case MSG_ID_UI_REQUEST_SERVICE_MODE: + case MSG_ID_UI_SERVICE_MODE_REQUEST: handleUIServiceModeRequest( message ); break; @@ -1159,11 +1155,11 @@ handleDGUsageInfoData( message ); break; - case MSG_ID_UI_CONFIRMATION_RESULT: + case MSG_ID_UI_CONFIRMATION_RESULT_RESPONSE: handleUIConfirmationResponse( message ); break; - case MSG_ID_HD_SET_SERVICE_TIME: + case MSG_ID_HD_SET_SERVICE_TIME_REQUEST: handleSetHDServiceTime( message ); break; @@ -1704,6 +1700,38 @@ handleAirPumpSetState( message ); break; + case MSD_ID_HD_RTC_CTL_REG1_STATUS_OVERRIDE: + handleHDRTCControlReg1StatusOverrideRequest( message ); + break; + + case MSD_ID_HD_RTC_CTL_REG3_STATUS_OVERRIDE: + handleHDRTCControlReg3StatusOverrideRequest( message ); + break; + + case MSG_ID_HD_BATTERY_STATUS_OVERRIDE: + handleBatteryStatusOverrideRequest( message ); + break; + + case MSG_ID_HD_BATTERY_CHARGER_STATUS_OVERRIDE: + handleBatteryChargerStatusOverrideRequest( message ); + break; + + case MSG_ID_HD_BATTERY_COMM_STATUS_OVERRIDE: + handleBatteryI2CStatusOverrideRequest( message ); + break; + + case MSG_ID_HD_DIAL_IN_PUMP_HARD_STOP: + handleDialInPumpHardStopRequest( message ); + break; + + case MSG_ID_HD_DIAL_OUT_PUMP_HARD_STOP: + handleDialOutPumpHardStopRequest( message ); + break; + + case MSG_ID_HD_BLOOD_PUMP_HARD_STOP: + handleBloodPumpHardStopRequest( message ); + break; + // The default cannot be reached in VectorCAST since the cases are run in a for loop default: // Unrecognized message ID received - ignore