Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r48558494898419baa0697009318fb543fe0b8a46 -rbe1ff666dbd2ff03342c22c8e50b21d0f9b988a9 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 48558494898419baa0697009318fb543fe0b8a46) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision be1ff666dbd2ff03342c22c8e50b21d0f9b988a9) @@ -8,7 +8,7 @@ * @file Messaging.c * * @author (last) Sameer Kalliadan Poyil -* @date (last) 06-Mar-2026 +* @date (last) 24-Jun-2026 * * @author (original) Vinayakam Mani * @date (original) 07-Aug-2024 @@ -38,6 +38,7 @@ #include "Level.h" #include "Messaging.h" #include "MessagePayloads.h" +#include "MixingControl.h" #include "ModeGenDialysate.h" #include "ModeGenPermeate.h" #include "ModeGenPermeateDefeatured.h" @@ -46,6 +47,7 @@ #include "ModePreGenPermeateDefeatured.h" #include "ModePostGenDialysate.h" #include "ModeStandby.h" +#include "NVMessagingDD.h" #include "OperationModes.h" #include "PAL.h" #include "PermeateTank.h" @@ -59,6 +61,7 @@ #include "StateFlushFilterDefeatured.h" #include "StateFlushPermeate.h" #include "StateInletPressureCheck.h" +#include "SubstitutionPump.h" #include "SystemCommDD.h" #include "Temperature.h" #include "TestSupport.h" @@ -121,6 +124,21 @@ { MSG_ID_DD_TESTER_LOGIN_REQUEST, &handleTesterLogInRequest }, { MSG_ID_DD_SOFTWARE_RESET_REQUEST, &handleDDSoftwareResetRequest }, { MSG_ID_TD_OP_MODE_DATA, &handleSetTDOperationMode }, + { MSG_ID_FFU_SIGNAL_DD_UPDATE_AVAILABLE, &handleUpdateAvailable }, + { MSG_ID_UI_DD_NVM_GET_RECORD_REQUEST, &handleDDGetNVRecord }, + { MSG_ID_UI_DD_NVM_SET_SYSTEM_RECORD_REQUEST, &handleDDSetNVSystemRecord }, + { MSG_ID_UI_DD_NVM_SET_SERVICE_RECORD_REQUEST, &handleDDSetNVServiceRecord }, + { MSG_ID_UI_DD_NVM_SET_INSTITUTIONAL_RECORD_REQUEST, &handleDDSetNVInstitutionalRecord }, + { MSG_ID_UI_DD_NVM_SET_USAGE_INFO_RECORD_REQUEST, &handleDDSetNVUsageInfoRecord }, + { MSG_ID_UI_DD_NVM_SET_CAL_PRESSURE_SENSOR_REQUEST, &handleDDSetPressureSensorCalRecord }, + { MSG_ID_UI_DD_NVM_SET_CAL_TEMP_SENSOR_REQUEST, &handleDDSetTempSensorCalRecord }, + { MSG_ID_UI_DD_NVM_SET_CAL_CONC_PUMP_REQUEST, &handleDDSetConcPumpCalRecord }, + { MSG_ID_UI_DD_NVM_SET_CAL_D12_PUMP_REQUEST, &handleDDSetD12PumpCalRecord }, + { MSG_ID_UI_DD_NVM_SET_CAL_D48_PUMP_REQUEST, &handleDDSetD48CalRecord }, + { MSG_ID_UI_DD_NVM_SET_CAL_ACID_CONCENTRATE_REQUEST, &handleDDSetAcidConcCalRecord }, + { MSG_ID_UI_DD_NVM_SET_CAL_BICARB_CONCENTRATE_REQUEST, &handleDDSetBicarbConcCalRecord }, + { MSG_ID_UI_DD_NVM_SET_CAL_ACCEL_SENSOR_REQUEST, &handleDDSetAccelSensorCalRecord }, + { MSG_ID_UI_DD_NVM_SET_CAL_BLOOD_LEAK_SENSOR_REQUEST, &handleDDSetBloodLeakSensorCalRecord }, { MSG_ID_DD_VALVE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testValvesStatesPublishIntervalOverride }, { MSG_ID_DD_VALVE_STATE_OVERRIDE_REQUEST, &testValveStateOverride }, { MSG_ID_DD_VALVE_SENSED_STATE_OVERRIDE_REQUEST, &testValveSensedStateOverride }, @@ -129,28 +147,19 @@ { MSG_ID_DD_PRESSURE_SENSOR_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testDDPressureSensorDataPublishIntervalOverride }, { MSG_ID_DD_PRESSURE_SENSOR_FILTER_READINGS_OVERRIDE_REQUEST, &testDDPressureSensorFilteredReadingsOverride }, { MSG_ID_DD_PRESSURE_SENSOR_FILTER_TEMPERATURE_OVERRIDE_REQUEST, &testDDPressureSensorFilteredTemperatureReadingsOverride }, -#ifdef __TEENSY_CONDUCTIVITY_DRIVER__ { MSG_ID_DD_CONDUCTIVITY_SENSOR_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testDDConductivitySensorDataPublishIntervalOverride }, { MSG_ID_FP_CONDUCTIVITY_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testFPConductivitySensorDataPublishIntervalOverride }, + { MSG_ID_DD_CONDUCTIVITY_SENSOR_READINGS_OVERRIDE_REQUEST, &testConductivitySensorReadingsOverride }, + { MSG_ID_DD_CONDUCTIVITY_SENSOR_TEMPERATURE_OVERRIDE_REQUEST, &testConductivitySensorTemperatureOverride }, + { MSG_ID_FP_CONDUCTIVITY_SENSOR_READINGS_OVERRIDE_REQUEST, &testConductivitySensorReadingsOverride }, + { MSG_ID_FP_CONDUCTIVITY_SENSOR_TEMPERATURE_OVERRIDE_REQUEST, &testConductivitySensorTemperatureOverride }, { MSG_ID_DD_SET_CONDUCTIVITY_MODEL_REQUEST, &testSetTeenyConductivityModel }, - { MSG_ID_DD_CONDUCTIVITY_SENSOR_READINGS_OVERRIDE_REQUEST, &testTeensyConductivitySensorReadingsOverride }, - { MSG_ID_DD_CONDUCTIVITY_SENSOR_TEMPERATURE_OVERRIDE_REQUEST, &testTeensyConductivitySensorTemperatureReadingsOverride }, { MSG_ID_DD_CONDUCTIVITY_SENSOR_RESISTANCE_OVERRIDE_REQUEST, &testTeensyConductivitySensorResistanceReadingsOverride }, - { MSG_ID_FP_CONDUCTIVITY_OVERRIDE_REQUEST, &testTeensyConductivitySensorReadingsOverride }, - { MSG_ID_FP_CONDUCTIVITY_TEMP_OVERRIDE_REQUEST, &testTeensyConductivitySensorTemperatureReadingsOverride }, { MSG_ID_FP_CONDUCTIVITY_SENSOR_RESISTANCE_OVERRIDE_REQUEST, &testTeensyConductivitySensorResistanceReadingsOverride }, -#else - { MSG_ID_DD_CONDUCTIVITY_SENSOR_READINGS_OVERRIDE_REQUEST, &testDDConductivitySensorReadingsOverride }, - { MSG_ID_DD_CONDUCTIVITY_SENSOR_TEMPERATURE_OVERRIDE_REQUEST, &testDDConductivitySensorTemperatureReadingsOverride }, - { MSG_ID_DD_CONDUCTIVITY_SENSOR_READ_COUNTER_OVERRIDE_REQUEST, &testDDConductivitySensorReadCounterOverride }, - { MSG_ID_DD_CONDUCTIVITY_SENSOR_ERROR_COUNTER_OVERRIDE_REQUEST, &testDDConductivitySensorErrorCounterOverride }, - { MSG_ID_DD_CONDUCTIVITY_SENSOR_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testDDConductivitySensorDataPublishIntervalOverride }, - { MSG_ID_FP_CONDUCTIVITY_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testFPConductivitySensorDataPublishIntervalOverride }, - { MSG_ID_FP_CONDUCTIVITY_OVERRIDE_REQUEST, &testFPConductivitySensorReadingsOverride }, - { MSG_ID_FP_CONDUCTIVITY_TEMP_OVERRIDE_REQUEST, &testFPConductivitySensorTemperatureReadingsOverride }, - { MSG_ID_FP_CONDUCTIVITY_READ_COUNT_OVERRIDE_REQUEST, &testFPConductivitySensorReadCounterOverride }, - { MSG_ID_FP_CONDUCTIVITY_ERROR_COUNT_OVERRIDE_REQUEST, &testFPConductivitySensorErrorCounterOverride }, -#endif + { MSG_ID_DD_CONDUCTIVITY_SENSOR_CONDUCTIVITY_READ_COUNTER_OVERRIDE_REQUEST, &testConductivitySensorConductivityReadCounterOverride }, + { MSG_ID_DD_CONDUCTIVITY_SENSOR_CONDUCTIVITY_ERROR_COUNTER_OVERRIDE_REQUEST, &testConductivitySensorConductivityErrorCounterOverride }, + { MSG_ID_FP_CONDUCTIVITY_SENSOR_CONDUCTIVITY_READ_COUNT_OVERRIDE_REQUEST, &testConductivitySensorConductivityReadCounterOverride }, + { MSG_ID_FP_CONDUCTIVITY_SENSOR_CONDUCTIVITY_ERROR_COUNT_OVERRIDE_REQUEST, &testConductivitySensorConductivityErrorCounterOverride }, { MSG_ID_DD_CONCENTRATE_PUMP_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testConcentratePumpDataPublishIntervalOverride }, { MSG_ID_DD_CONCENTRATE_PUMP_TARGET_SPEED_OVERRIDE_REQUEST, &testConcentratePumpTargetSpeedOverride }, { MSG_ID_DD_CONCENTRATE_PUMP_MEASURED_SPEED_OVERRIDE_REQUEST, &testConcentratePumpMeasuredSpeedOverride }, @@ -253,7 +262,8 @@ { MSG_ID_DD_MONITORED_VOLTAGE_OVERRIDE_REQUEST, &testVoltageOverride }, { MSG_ID_DD_TREATMENT_PARAMS_OVERRIDE_REQUEST, &testTDTreatmentParamsOverride }, { MSG_ID_FP_LEVEL_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testFPLevelsDataPublishIntervalOverride }, - { MSG_ID_FP_LEVEL_OVERRIDE_REQUEST, &testFPLevelStateOverride }, + { MSG_ID_FP_FLOATER_LEVEL_OVERRIDE_REQUEST, &testFPFloaterLevelStateOverride }, + { MSG_ID_DD_FLOATER_LEVEL_OVERRIDE_REQUEST, &testDDFloaterLevelStateOverride }, { MSG_ID_FP_PERMEATE_TANK_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testPermeateTankDataPublishIntervalOverride }, { MSG_ID_FP_RO_PUMP_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testROPumpDataPublishIntervalOverride }, { MSG_ID_DD_RINSE_PUMP_DATA_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testRinsePumpDataPublishIntervalOverride }, @@ -266,6 +276,7 @@ { MSG_ID_DD_BICARB_CHAMBER_FILL_REQUEST_OVERRIDE_REQUEST, &testBiCarbChamberFillRequestOverride }, { MSG_ID_DD_BICART_DRAIN_REQUEST_OVERRIDE_REQUEST, &testDryBiCartDrainRequestOverride }, { MSG_ID_DD_BICART_CARTRIDGE_SELECT_OVERRIDE_REQUEST, &testDryBiCartTypeOverride }, + { MSG_ID_DD_NVM_RECORD_CRC_OVERRIDE_REQUEST, &testSetNVRecordCRCOverride }, { MSG_ID_FP_RO_REJECTION_RATIO_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testRORejectionRatioDataPublishIntervalOverride }, { MSG_ID_FP_RO_FILTERED_REJECTION_RATIO_OVERRIDE_REQUEST, &testRORejectionRatioFilteredOverride }, { MSG_ID_FP_SET_TEST_CONFIGURATION, &testSetTestConfiguration }, @@ -284,6 +295,26 @@ { MSG_ID_FP_DEF_PRE_GEN_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testPreGenPermeateDefDataPublishIntervalOverride}, { MSG_ID_FP_DEF_GEN_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testGenPermeateDefDataPublishIntervalOverride}, { MSG_ID_FP_DEF_STATUS_REQUEST, &testGetFPDefeaturedStatus }, + { MSG_ID_DD_BICARB_MIX_VOL_KP_GAIN_COEFF_OVERRIDE_REQUEST, &testMixingControlBicarbVolControlKiGainOverride }, + { MSG_ID_DD_BICARB_MIX_VOL_KI_GAIN_COEFF_OVERRIDE_REQUEST, &testMixingControlBicarbVolControlKpGainOverride }, + { MSG_ID_DD_ACID_MIX_VOL_KP_GAIN_COEFF_OVERRIDE_REQUEST, &testMixingControlAcidVolControlKpGainOverride }, + { MSG_ID_DD_ACID_MIX_VOL_KI_GAIN_COEFF_OVERRIDE_REQUEST, &testMixingControlAcidVolControlKiGainOverride }, + { MSG_ID_DD_BICART_UPPER_PRESSURE_OVERRIDE_REQUEST, &testDryBiCartUpperCartPressureOverride }, + { MSG_ID_DD_BICART_LOWER_PRESSURE_OVERRIDE_REQUEST, &testDryBiCartLowerCartPressureOverride } , + { MSG_ID_FP_SET_OPERATION_SUB_MODE_REQUEST, &testSetFPOperationSubMode }, + { MSG_ID_DD_SET_OPERATION_SUB_MODE_OVERRIDE_REQUEST, &testSetOperationSubMode }, + { MSG_ID_FP_BOOST_PUMP_INSTALL_STATUS_REQUEST, &testGetFPBoostPumpInstallStatus }, + { MSG_ID_DD_CONDUCTIVITY_SENSOR_VERSION_REQUEST, &testHandleConductivitySensorVersionRequest }, + { MSG_ID_FP_CONDUCTIVITY_SENSOR_VERSION_REQUEST, &testHandleConductivitySensorVersionRequest }, + { MSG_ID_DD_TEMPERATURE_SENSOR_FILTERED_TEMP_OVERRIDE_REQUEST, &testDDTemperatureSensorFilteredReadingsOverride }, + { MSG_ID_FP_SET_RECOVERY_VALVES_REQUEST, &testIOFPSetValveRecoveryConfig }, + { MSG_ID_DD_SUBSTITUTION_PUMP_START_STOP_OVERRIDE_REQUEST, &testSubstitutionPumpStartStopOverride }, + { MSG_ID_DD_SUBSTITUTION_PUMP_BROADCAST_INTERVAL_OVERRIDE_REQUEST, &testSubstitutionPumpDataPublishIntervalOverride }, + { MSG_ID_DD_SUBSTITUTION_PUMP_TARGET_RATE_OVERRIDE_REQUEST, &testSubstitutionPumpTargetRateOverride }, + { MSG_ID_DD_CONDUCTIVITY_SENSOR_CAL_REQUEST, &testHandleConductivitySensorCalRequest }, + { MSG_ID_FP_CONDUCTIVITY_SENSOR_CAL_REQUEST, &testHandleConductivitySensorCalRequest }, + { MSG_ID_DD_MIXING_CONTROL_DATA_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testMixingControlDataPublishIntervalOverride }, + { MSG_ID_DD_BICART_DEPRESSURISE_REQUEST_OVERRIDE_REQUEST, &testDryBiCartDepressurizeRequestOverride }, }; /// Calculation for number of entries in the incoming message function handler look-up table. @@ -576,7 +607,7 @@ * @param alarm ID of alarm triggered * @param almData1 1st data associated with alarm * @param almData2 2nd data associated with alarm - * @return TRUE if msg successfully queued for transmit, FALSE if not + * @return TRUE if msg successfully queued for transmit, FALSE if not. *************************************************************************/ BOOL broadcastAlarmTriggered( U32 alarm, ALARM_DATA_T almData1, ALARM_DATA_T almData2, ALARM_SOURCE_T almSource ) { @@ -763,7 +794,45 @@ return result; } +/*********************************************************************//** + * @brief + * The resetMicroControllerUnit function resets the MCU. + * @details \b Inputs: none + * @details \b Outputs: none + * @return none + *************************************************************************/ +void resetMicroControllerUnit( void ) +{ + setSystemREG1_SYSECR( (0x2) << 14 ); // Reset processor +} +/*********************************************************************//** + * @brief + * The handleUpdateAvailable function handles a request from the + * Firmware FPGA Updater (FFU) to reset the TD firmware processor. + * @note If reset is successful, this function will not return. + * @details \b Inputs: none + * @details \b Outputs: TD processor soft reset if request is valid + * @param message Pointer to the reset request message + * @return FALSE if reset command rejected + *************************************************************************/ +BOOL handleUpdateAvailable( MESSAGE_T *message ) +{ + BOOL result = FALSE; + + // Verify payload length + if ( 0 == message->hdr.payloadLen ) + { // S/w reset of processor + result = TRUE; // Reset will prevent this from getting transmitted though + requestNewOperationMode( DD_MODE_UPDT ); + } + + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_DD_2_UI, result ); + + return result; +} + + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/ @@ -899,7 +968,7 @@ if ( 0 == message->hdr.payloadLen ) { // S/w reset of processor result = TRUE; // Reset will prevent this from getting transmitted though - setSystemREG1_SYSECR( (0x2) << 14 ); // Reset processor + resetMicroControllerUnit(); } return result;