Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r4b270434e2fc3734e4b6b303822bbb8f96098616 -rff6b765b44991e46891475022fa819cf3af05156 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 4b270434e2fc3734e4b6b303822bbb8f96098616) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision ff6b765b44991e46891475022fa819cf3af05156) @@ -7,8 +7,8 @@ * * @file Messaging.c * -* @author (last) Sameer Kalliadan Poyil -* @date (last) 24-Apr-2026 +* @author (last) Michael Garthwaite +* @date (last) 11-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" @@ -122,6 +123,7 @@ { 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_DD_VALVE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, &testValvesStatesPublishIntervalOverride }, { MSG_ID_DD_VALVE_STATE_OVERRIDE_REQUEST, &testValveStateOverride }, { MSG_ID_DD_VALVE_SENSED_STATE_OVERRIDE_REQUEST, &testValveSensedStateOverride }, @@ -277,10 +279,10 @@ { 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_CONTROL_KP_GAIN_COEFF_OVERRIDE_REQUEST, &testDryBiCartBicarbMixVolControlKiGainOverride }, - { MSG_ID_DD_BICARB_MIX_VOL_CONTROL_KI_GAIN_COEFF_OVERRIDE_REQUEST, &testDryBiCartAcidMixVolControlKpGainOverride }, - { MSG_ID_DD_ACID_MIX_VOL_CONTROL_KP_GAIN_COEFF_OVERRIDE_REQUEST, &testDryBiCartAcidMixVolControlKpGainOverride }, - { MSG_ID_DD_ACID_MIX_VOL_CONTROL_KI_GAIN_COEFF_OVERRIDE_REQUEST, &testDryBiCartAcidMixVolControlKiGainOverride }, + { MSG_ID_DD_BICARB_MIX_VOL_CONTROL_KP_GAIN_COEFF_OVERRIDE_REQUEST, &testMixingControlBicarbVolControlKiGainOverride }, + { MSG_ID_DD_BICARB_MIX_VOL_CONTROL_KI_GAIN_COEFF_OVERRIDE_REQUEST, &testMixingControlBicarbVolControlKpGainOverride }, + { MSG_ID_DD_ACID_MIX_VOL_CONTROL_KP_GAIN_COEFF_OVERRIDE_REQUEST, &testMixingControlAcidVolControlKpGainOverride }, + { MSG_ID_DD_ACID_MIX_VOL_CONTROL_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 }, @@ -291,6 +293,10 @@ { 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 }, }; /// Calculation for number of entries in the incoming message function handler look-up table. @@ -770,7 +776,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 *************************************************************************/ @@ -906,7 +950,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;