Index: firmware/App/Modes/ModeGenPermeate.c =================================================================== diff -u -r9ad496e4c3a54e96402afd66955be575bdaa3f57 -rf8bdb3ff260a42f46e178d08979758789db7c307 --- firmware/App/Modes/ModeGenPermeate.c (.../ModeGenPermeate.c) (revision 9ad496e4c3a54e96402afd66955be575bdaa3f57) +++ firmware/App/Modes/ModeGenPermeate.c (.../ModeGenPermeate.c) (revision f8bdb3ff260a42f46e178d08979758789db7c307) @@ -5,7 +5,7 @@ * 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 ModeStandby.c +* @file ModeGenPermeate.c * * @author (last) Michael Garthwaite * @date (last) 28-Feb-2025 @@ -16,7 +16,6 @@ ***************************************************************************/ #include "DDInterface.h" -#include "FlowSensor.h" #include "FpgaRO.h" #include "Level.h" #include "ModeGenPermeate.h" @@ -34,6 +33,7 @@ */ // ********** private definitions ********** + #define GEN_PERMEATE_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the gen permeate mode data published. // ********** private data ********** @@ -59,7 +59,7 @@ *************************************************************************/ void initGenPermeateMode( void ) { - RO_GENP_MODE_STATE_T genPermeateState = RO_GENP_STATE_START; + RO_GENP_MODE_STATE_T genPermeateState = RO_GENP_STATE_START; genPermeateDataPublishInterval.data = GEN_PERMEATE_DATA_PUBLISH_INTERVAL; genPermeateDataPublishInterval.ovData = GEN_PERMEATE_DATA_PUBLISH_INTERVAL; genPermeateDataPublishInterval.ovInitData = 0; @@ -78,7 +78,7 @@ U32 transitionToGenPermeateMode( void ) { initGenPermeateMode(); - setCurrentSubState( RO_GENP_STATE_START ); + setCurrentSubState( genPermeateState ); return genPermeateState; } @@ -130,7 +130,7 @@ // Execute on running state switch( state ) { - case DD_GEND_STATE_START: + case RO_GENP_STATE_START: // Do nothing break; case RO_GENP_WATER_LOW_STATE: @@ -227,12 +227,8 @@ GEN_PERMEATE_MODE_DATA_T data; data.genPermeateExecState = (U32)getCurrentGenPermeateState(); - data.isWaterDelInProgress = 0; - data.p25Level = (U32)getLevelStatus(); data.setFlowRate = (U32)getDDPermeateFlowRate(); - data.p16FlowRate = (U32)getFilteredFlow( P16_FLOW ); - broadcastData( MSG_ID_DD_GEN_DIALYSATE_MODE_DATA, COMM_BUFFER_OUT_CAN_RO_BROADCAST, (U08*)&data, sizeof( GEN_PERMEATE_MODE_DATA_T ) ); genPermeateDataPublicationTimerCounter = 0; Index: firmware/App/Modes/ModeGenPermeate.h =================================================================== diff -u -r9ad496e4c3a54e96402afd66955be575bdaa3f57 -rf8bdb3ff260a42f46e178d08979758789db7c307 --- firmware/App/Modes/ModeGenPermeate.h (.../ModeGenPermeate.h) (revision 9ad496e4c3a54e96402afd66955be575bdaa3f57) +++ firmware/App/Modes/ModeGenPermeate.h (.../ModeGenPermeate.h) (revision f8bdb3ff260a42f46e178d08979758789db7c307) @@ -35,10 +35,7 @@ typedef struct { U32 genPermeateExecState; ///< Generate Permeate execution state - BOOL isWaterDelInProgress; ///< Whether Water delivery is in progress or not - U32 p25Level; ///< Floater level (low, medium and high) F32 setFlowRate; ///< Permeate flow rate requested by the DD. - F32 p16FlowRate; ///< measured RO flow rate } GEN_PERMEATE_MODE_DATA_T; // ********** public function prototypes ********** Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r9ad496e4c3a54e96402afd66955be575bdaa3f57 -rf8bdb3ff260a42f46e178d08979758789db7c307 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 9ad496e4c3a54e96402afd66955be575bdaa3f57) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision f8bdb3ff260a42f46e178d08979758789db7c307) @@ -110,7 +110,7 @@ if ( TRUE == getU32OverrideValue( &pendingStartRORequest ) ) { pendingStartRORequest.data = FALSE; - requestNewOperationMode( RO_MODE_GEN_PERM ); + requestNewOperationMode( RO_MODE_GENP ); } return state; Index: firmware/App/Modes/ModeStandby.h =================================================================== diff -u -r9ad496e4c3a54e96402afd66955be575bdaa3f57 -rf8bdb3ff260a42f46e178d08979758789db7c307 --- firmware/App/Modes/ModeStandby.h (.../ModeStandby.h) (revision 9ad496e4c3a54e96402afd66955be575bdaa3f57) +++ firmware/App/Modes/ModeStandby.h (.../ModeStandby.h) (revision f8bdb3ff260a42f46e178d08979758789db7c307) @@ -36,7 +36,7 @@ void initStandbyMode( void ); // Initialize this unit U32 transitionToStandbyMode( void ); // Prepares for transition to standby mode U32 execStandbyMode( void ); // Execute the standby mode state machine (call from OperationModes) -BOOL requestROStart( void ); +BOOL signalROStart( void ); // Signal the system to start RO water RO_STANDBY_MODE_STATE_T getCurrentStandbyState( void ); // get the current state of the standby mode. Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -r9ad496e4c3a54e96402afd66955be575bdaa3f57 -rf8bdb3ff260a42f46e178d08979758789db7c307 --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 9ad496e4c3a54e96402afd66955be575bdaa3f57) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision f8bdb3ff260a42f46e178d08979758789db7c307) @@ -48,12 +48,12 @@ /// This matrix determines legal transitions from one mode to another static const RO_OP_MODE_T MODE_TRANSITION_TABLE[ NUM_OF_RO_MODES - 1 ][ NUM_OF_RO_MODES - 1 ] = { -// From to-> FAULT SERVICE INIT STANBY -/* FAUL */{ RO_MODE_FAUL, RO_MODE_SERV, RO_MODE_NLEG, RO_MODE_NLEG }, -/* SERV */{ RO_MODE_FAUL, RO_MODE_SERV, RO_MODE_NLEG, RO_MODE_NLEG }, -/* INIT */{ RO_MODE_FAUL, RO_MODE_NLEG, RO_MODE_INIT, RO_MODE_STAN }, -/* STAN */{ RO_MODE_FAUL, RO_MODE_SERV, RO_MODE_NLEG, RO_MODE_STAN }, -/* GEN_PERM */{ RO_MODE_FAUL, RO_MODE_SERV, RO_MODE_NLEG, RO_MODE_STAN } }; +// From to-> FAULT SERVICE INIT STANBY GENP +/* FAUL */{ RO_MODE_FAUL, RO_MODE_SERV, RO_MODE_NLEG, RO_MODE_NLEG, RO_MODE_NLEG }, +/* SERV */{ RO_MODE_FAUL, RO_MODE_SERV, RO_MODE_NLEG, RO_MODE_NLEG, RO_MODE_NLEG }, +/* INIT */{ RO_MODE_FAUL, RO_MODE_NLEG, RO_MODE_INIT, RO_MODE_STAN, RO_MODE_NLEG }, +/* STAN */{ RO_MODE_FAUL, RO_MODE_SERV, RO_MODE_NLEG, RO_MODE_STAN, RO_MODE_GENP }, +/* GENP */{ RO_MODE_FAUL, RO_MODE_NLEG, RO_MODE_NLEG, RO_MODE_STAN, RO_MODE_GENP } }; // ********** private function prototypes ********** @@ -151,7 +151,7 @@ currentSubMode = execStandbyMode(); break; - case RO_MODE_GEN_PERM: + case RO_MODE_GENP: currentSubMode = execGenPermeateMode(); default: @@ -304,7 +304,7 @@ currentSubMode = transitionToStandbyMode(); break; - case RO_MODE_GEN_PERM: + case RO_MODE_GENP: currentSubMode = transitionToGenPermeateMode(); break; Index: firmware/App/Services/DDInterface.c =================================================================== diff -u -r9ad496e4c3a54e96402afd66955be575bdaa3f57 -rf8bdb3ff260a42f46e178d08979758789db7c307 --- firmware/App/Services/DDInterface.c (.../DDInterface.c) (revision 9ad496e4c3a54e96402afd66955be575bdaa3f57) +++ firmware/App/Services/DDInterface.c (.../DDInterface.c) (revision f8bdb3ff260a42f46e178d08979758789db7c307) @@ -27,19 +27,23 @@ #include "Timers.h" /** - * @addtogroup TDInterface + * @addtogroup DDInterface * @{ */ // ********** private definitions ********** // ********** private data ********** + static DD_OP_MODE_T ddCurrentOpMode; ///< Current DD operation mode. static U32 ddSubMode; ///< Current state (sub-mode) of current DD operation mode. static F32 ddPermeateFlowRate; ///< DD RO Permeate flow rate. // ********** private function prototypes ********** +static void setDDOpMode( U32 opMode, U32 subMode ); +static void setDDPermeateFlowRate( F32 flowRate ); + /*********************************************************************//** * @brief * The initDDInterface function initializes the DD Interface unit. Index: firmware/App/Services/DDInterface.h =================================================================== diff -u -r9ad496e4c3a54e96402afd66955be575bdaa3f57 -rf8bdb3ff260a42f46e178d08979758789db7c307 --- firmware/App/Services/DDInterface.h (.../DDInterface.h) (revision 9ad496e4c3a54e96402afd66955be575bdaa3f57) +++ firmware/App/Services/DDInterface.h (.../DDInterface.h) (revision f8bdb3ff260a42f46e178d08979758789db7c307) @@ -35,12 +35,11 @@ // ********** public function prototypes ********** -void initTDInterface( void ); -void execTDInterfaceMonitor( void ); +void initDDInterface( void ); +void execDDInterfaceMonitor( void ); -void setDDOpMode( U32 opMode, U32 subMode ); -void setDDPermeateFlowRate( F32 flowRate ); + F32 getDDPermeateFlowRate( void ); DD_OP_MODE_T getDDOpMode( void ); Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r9ad496e4c3a54e96402afd66955be575bdaa3f57 -rf8bdb3ff260a42f46e178d08979758789db7c307 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 9ad496e4c3a54e96402afd66955be575bdaa3f57) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision f8bdb3ff260a42f46e178d08979758789db7c307) @@ -137,6 +137,7 @@ static MsgFuncPtr getMsgHandler( U16 msgID ); static BOOL sendTestAckResponseMsg( MSG_ID_T msgID, BOOL ack ); +static BOOL sendAckResponseMsg( MSG_ID_T msgID, COMM_BUFFER_T buffer, BOOL ack ); /*********************************************************************//** * @brief Index: firmware/App/Services/Messaging.h =================================================================== diff -u -r9ad496e4c3a54e96402afd66955be575bdaa3f57 -rf8bdb3ff260a42f46e178d08979758789db7c307 --- firmware/App/Services/Messaging.h (.../Messaging.h) (revision 9ad496e4c3a54e96402afd66955be575bdaa3f57) +++ firmware/App/Services/Messaging.h (.../Messaging.h) (revision f8bdb3ff260a42f46e178d08979758789db7c307) @@ -36,8 +36,8 @@ BOOL sendACKMsg( MESSAGE_T *message ); void handleIncomingMessage( MESSAGE_T *message ); BOOL handleUnhandledMsg( MESSAGE_T *message ); -BOOL sendAckResponseMsg( MSG_ID_T msgID, COMM_BUFFER_T buffer, BOOL ack ); + BOOL broadcastAlarmTriggered( U32 alarm, ALARM_DATA_T almData1, ALARM_DATA_T almData2 ); BOOL broadcastAlarmCleared( U32 alarm ); BOOL broadcastAlarmConditionCleared( U32 alarm );