Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -re23087e0c17f6ea81d60641fdb52121a8dd5a099 -r3f2b9de757500da37e0ed8881e4e906d94f3076c --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision e23087e0c17f6ea81d60641fdb52121a8dd5a099) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 3f2b9de757500da37e0ed8881e4e906d94f3076c) @@ -191,7 +191,12 @@ void checkInFromDG( void ) { dgIsCommunicating = TRUE; - timeOfLastDGCheckIn = getMSTimerCount(); + timeOfLastDGCheckIn = getMSTimerCount(); + + if ( TRUE == isAlarmActive( ALARM_ID_DG_COMM_TIMEOUT ) ) + { + clearAlarm( ALARM_ID_DG_COMM_TIMEOUT ); + } } /*********************************************************************//** @@ -204,6 +209,11 @@ *************************************************************************/ void checkInFromUI( void ) { + if ( FALSE == uiDidCommunicate ) + { // Start DG check-in timer when UI first communicates + timeOfLastDGCheckIn = getMSTimerCount(); + } + uiIsCommunicating = TRUE; timeOfLastUICheckIn = getMSTimerCount(); uiDidCommunicate = TRUE; @@ -399,8 +409,8 @@ } else { - // Should not get here - not an active message box - // TODO - s/w fault? + // Should not get here - not an active message box + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_INVALID_CAN_MESSAGE_BOX, srcCANBox ) } } @@ -930,11 +940,15 @@ { activateAlarmNoData( ALARM_ID_UI_COMM_TIMEOUT ); } + + if ( TRUE == didTimeout( timeOfLastDGCheckIn, DG_COMM_TIMEOUT_IN_MS ) ) + { +#ifndef RUN_WITHOUT_DG + activateAlarmNoData( ALARM_ID_DG_COMM_TIMEOUT ); + dgIsCommunicating = FALSE; +#endif + } } - if ( TRUE == didTimeout( timeOfLastDGCheckIn, DG_COMM_TIMEOUT_IN_MS ) ) - { - dgIsCommunicating = FALSE; - } } /*********************************************************************//** @@ -1005,8 +1019,6 @@ } } - // TODO - if no open slot found, s/w fault - return result; } @@ -1068,8 +1080,8 @@ { U16 msgID; - memcpy( &msgID, (U08*)&pendingAckList[ i ].msg[ sizeof( U08 ) + sizeof( U16) ], sizeof( U16 ) ); - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_CAN_MESSAGE_NOT_ACKED, (U32)msgID ); + memcpy( &msgID, (U08*)&pendingAckList[ i ].msg[ sizeof( U08 ) + sizeof( U16) ], sizeof( U16 ) ); + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_CAN_MESSAGE_NOT_ACKED, (U32)msgID ); pendingAckList[ i ].used = FALSE; // Take pending message off of list } } @@ -1144,7 +1156,8 @@ break; case MSG_ID_REQUEST_FW_VERSIONS: - handleFWVersionRequest( message ); + handleFWVersionRequest( message ); + handleHDSerialNumberRequest(); break; case MSG_ID_DG_TEMPERATURE_DATA: @@ -1179,8 +1192,8 @@ handleTreatmentParametersFromUI( message ); break; - case MSG_ID_UI_START_TREATMENT: - handleUIStartTreatmentMsg( message ); + case MSG_ID_UI_INITIATE_TREATMENT_REQUEST: + handleInitiateTreatmentRequest( message ); break; case MSG_ID_UI_USER_CONFIRM_TREATMENT_PARAMS: @@ -1191,10 +1204,50 @@ handleChangePressureLimitsRequest( message ); break; + case MSG_ID_UI_HEPARIN_PAUSE_RESUME_REQUEST: + handleHeparinCommandRequest( message ); + break; + + case MSG_ID_UI_SET_ALARM_AUDIO_VOLUME_LEVEL_CMD: + handleAlarmAudioVolumeSetCmd( message ); + break; + case MSG_ID_UI_SET_UF_VOLUME_PARAMETER: handleUFVolumeSetRequest( message ); break; + case MSG_ID_UI_SAMPLE_WATER_CMD: + handleSampleWaterCmd( message ); + break; + + case MSG_ID_UI_SAMPLE_WATER_RESULT: + handleSampleWaterResult( message ); + break; + + case MSG_ID_UI_CONSUMABLE_INSTALL_CONFIRM: + handleConsumableInstallConfirm( message ); + break; + + case MSG_ID_UI_INSTALLATION_CONFIRM: + handleInstallationConfirm( message ); + break; + + case MSG_ID_UI_START_PRIME_REQUEST: + handleStartPrimeCmd( message ); + break; + + case MSG_ID_UI_PATIENT_CONNECTION_BEGIN_REQUEST: + handleContinueToTreatmentCmd( message ); + break; + + case MSG_ID_UI_PATIENT_CONNECTION_CONFIRM: + handlePatientConnectionConfirmCmd( message ); + break; + + case MSG_ID_UI_START_TREATMENT_REQUEST: + handleStartTreatmentRequest( message ); + break; + case MSG_ID_UI_RINSEBACK_CMD: handlRinsebackCmd( message ); break; @@ -1207,16 +1260,73 @@ handleTreatmentEndCmd( message ); break; + case MSG_ID_UI_PATIENT_DISCONNECTION_CONFIRM: + handlePatientDisconnectionConfirmCmd( message ); + break; + + case MSG_ID_UI_DISPOSABLE_REMOVAL_CONFIRM: + handleDisposableRemovalConfirmCmd( message ); + break; + + case MSG_ID_UI_TREATMENT_LOG_DATA_REQUEST: + handleUITreatmentLogDataRequest( message ); + break; + + case MSG_ID_UI_DISINFECT_REQUEST: + handleUIDisinfectRequest( message ); + break; + case MSG_ID_DG_COMMAND_RESPONSE: handleDGCmdResp( message ); break; + case MSG_ID_DG_FLUSH_DATA: + handleFlushUIStateReadingFromDG( message ); + break; + + case MSG_ID_DG_HEAT_DISINFECT_DATA: + handleHeatDisinfectUIStateReadingFromDG( message ); + break; + + case MSG_ID_DG_CHEM_DISINFECT_DATA: + handleChemDisinfectUIStateReadingFromDG( message ); + break; + + case MSG_ID_UI_HD_SET_RTC_REQUEST: + handleUIClockSyncRequest( message ); + break; + + case MSG_ID_DG_POST_FINAL_TEST_RESULT: + handleDGPOSTFinalResult( message ); + break; + + case MSG_ID_UI_POST_FINAL_TEST_RESULT: + handleUIPOSTFinalResult( message ); + break; + + case MSG_ID_UI_ACTIVE_ALARMS_LIST_REQUEST: + handleUIActiveAlarmsListRequest( message ); + break; + + case MSG_ID_HD_SET_STANDBY_DISINFECT_SUB_MODE_REQUEST: + handleSetHDStandbyDisinfectSubmodeRequest( message ); + break; + + case MSG_ID_UI_REQUEST_SERVICE_INFO: + handleHDServiceScheduleRequest( message ); + break; + + case MSG_ID_REQUEST_HD_USAGE_INFO: + handleHDUsageInfoRequest( message ); + break; + + // NOTE: this always must be the last case case MSG_ID_TESTER_LOGIN_REQUEST: handleTesterLogInRequest( message ); break; default: - // TODO - unrecognized message ID received - ignore + // Un-recognized or un-handled message ID received - ignore break; } @@ -1447,6 +1557,50 @@ handleTestDialOutPumpHomeRequest( message ); break; + case MSG_ID_HD_FLUID_LEAK_SEND_INTERVAL_OVERRIDE: + handleSetFluidLeakBroadcastIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_FLUID_LEAK_STATE_OVERRIDE: + handleSetFluidLeakStateOverrideRequest( message ); + break; + + case MSG_ID_HD_BLOOD_LEAK_DATA_SEND_INTERVAL_OVERRIDE: + handleSetBloodLeakDataBroadcastIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_BLOOD_LEAK_STATUS_OVERRIDE: + handleSetBloodLeakStatusOverrideRequest( message ); + break; + + case MSG_ID_HD_BLOOD_LEAK_ZERO_REQUEST: + handleBloodLeakZeroRequest( message ); + break; + + case MSG_ID_HD_BUBBLES_DATA_SEND_INTERVAL_OVERRIDE: + handleSetBubblesDataBroadcastIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_BUBBLE_STATUS_OVERRIDE: + handleSetBubbleStatusOverrideRequest( message ); + break; + + case MSG_ID_HD_BUBBLE_SELF_TEST_REQUEST: + handleBubbleSelfTestRequest( message ); + break; + + case MSG_ID_HD_SWITCHES_STATUS_OVERRIDE: + handleSetSwitchesStatusOverrideRequest( message ); + break; + + case MSG_ID_HD_SWITCHES_PUBLISH_INTERVAL_OVERRIDE: + handleTestSwitchesPublishIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_BATTERY_REMAINING_PERCENT_OVERRIDE: + handleBatteryRemainingPercentOverrideRequest( message ); + break; + case MSG_ID_HD_SET_OP_MODE_REQUEST: handleTestSetOpModeRequest( message ); break; @@ -1455,8 +1609,112 @@ handleTestSuperClearAlarmsRequest( message ); break; + case MSG_ID_HD_SYRINGE_PUMP_SEND_INTERVAL_OVERRIDE: + handleTestSyringePumpDataBroadcastIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_OPERATION_REQUEST: + handleTestSyringePumpOperationRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_MEASURED_RATE_OVERRIDE: + handleTestSyringePumpMeasuredRateOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_MEASURED_FORCE_OVERRIDE: + handleTestSyringePumpMeasuredForceOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_SYRINGE_DETECT_OVERRIDE: + handleTestSyringePumpMeasuredSyringeDetectOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_MEASURED_HOME_OVERRIDE: + handleTestSyringePumpMeasuredHomeOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_MEASURED_POSITION_OVERRIDE: + handleTestSyringePumpMeasuredPositionOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_MEASURED_VOLUME_OVERRIDE: + handleTestSyringePumpMeasuredVolumeOverrideRequest( message ); + break; + + case MSG_ID_HD_VALVES_CURRENT_OVERRIDE: + handleTestValvesCurrentOverrideRequest( message ); + break; + + case MSG_ID_HD_MONITORED_VOLTAGES_SEND_INTERVAL_OVERRIDE: + handleTestMonitoredVoltagesSendIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_MONITORED_VOLTAGES_OVERRIDE: + handleTestMonitoredVoltageOverrideRequest( message ); + break; + + case MSG_ID_HD_ALARM_INFO_SEND_INTERVAL_OVERRIDE: + handleTestAlarmInfoSendIntervalOverrideRequest( message ); + break; + + case MSG_ID_HD_ALARM_AUDIO_VOLUME_LEVEL_OVERRIDE: + handleTestAlarmAudioVolumeOverrideRequest( message ); + break; + + case MSG_ID_HD_ALARM_AUDIO_CURRENT_HG_OVERRIDE: + handleTestAlarmAudioCurrentHgOverrideRequest( message ); + break; + + case MSG_ID_HD_ALARM_AUDIO_CURRENT_LG_OVERRIDE: + handleTestAlarmAudioCurrentLgOverrideRequest( message ); + break; + + case MSG_ID_HD_ALARM_BACKUP_AUDIO_CURRENT_OVERRIDE: + handleTestAlarmBackupAudioCurrentOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_STATUS_OVERRIDE: + handleTestSyringePumpStatusOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_ENCODER_STATUS_OVERRIDE: + handleTestSyringePumpEncoderStatusOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_ADC_DAC_STATUS_OVERRIDE: + handleTestSyringePumpADCandDACStatusOverrideRequest( message ); + break; + + case MSG_ID_HD_SYRINGE_PUMP_ADC_READ_COUNTER_OVERRIDE: + handleTestSyringePumpADCReadCtrOverrideRequest( message ); + break; + + case MSG_ID_HD_SET_CALIBRATION_RECORD: + handleSetHDCalibrationRecord( message ); + break; + + case MSG_ID_HD_GET_CALIBRATION_RECORD: + handleGetHDCalibrationRecord( message ); + break; + + case MSG_ID_HD_SET_SYSTEM_RECORD: + handleSetHDSystemRecord( message ); + break; + + case MSG_ID_HD_GET_SYSTEM_RECORD: + handleGetHDSystemRecord( message ); + break; + + case MSG_ID_HD_GET_SERVICE_RECORD: + handleGetHDServiceRecord( message ); + break; + + case MSG_ID_HD_SET_SERVICE_RECORD: + handleSetHDServiceRecord( message ); + break; + default: - // TODO - unrecognized message ID received - ignore + // Unrecognized message ID received - ignore break; } }