Index: firmware/App/Controllers/BloodFlow.c =================================================================== diff -u -r9b262ba08e3180f121c3cf19d8d25e565183f87d -r108abddcbf729f7435073116191cd3903261df8f --- firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision 9b262ba08e3180f121c3cf19d8d25e565183f87d) +++ firmware/App/Controllers/BloodFlow.c (.../BloodFlow.c) (revision 108abddcbf729f7435073116191cd3903261df8f) @@ -51,8 +51,8 @@ #define BP_MAX_CURR_WHEN_RUNNING_MA 1000.0 // motor controller current should not exceed this when pump should be running #define BP_MAX_CURR_ERROR_DURATION_MS 2000 // motor controller current errors persisting beyond this duration will trigger an alarm -#define BP_SPEED_ADC_TO_RPM_FACTOR 1.375 // conversion factor from ADC counts to RPM for blood pump motor -#define BP_CURRENT_ADC_TO_MA_FACTOR 2.65 // conversion factor from ADC counts to mA for blood pump motor +#define BP_SPEED_ADC_TO_RPM_FACTOR 1.280938 // conversion factor from ADC counts to RPM for blood pump motor +#define BP_CURRENT_ADC_TO_MA_FACTOR 3.002 // conversion factor from ADC counts to mA for blood pump motor #define BP_REV_PER_LITER 124.0 // rotor revolutions per liter #define BP_ML_PER_MIN_TO_PUMP_RPM_FACTOR ( BP_REV_PER_LITER / ML_PER_LITER ) @@ -61,9 +61,9 @@ #define BP_PWM_ZERO_OFFSET 0.1 // 10% PWM duty cycle = zero speed #define BP_PWM_FROM_ML_PER_MIN(rate) ( (rate) * BP_ML_PER_MIN_TO_PUMP_RPM_FACTOR * BP_GEAR_RATIO * BP_MOTOR_RPM_TO_PWM_DC_FACTOR + BP_PWM_ZERO_OFFSET ) -#define BLOODPUMP_ADC_FULL_SCALE_V 3.0 // BP analog signals are 0-3V (while int. ADC ref V is 3.3V) -#define BLOODPUMP_ADC_MID_PT_BITS ( (F32)( INT_ADC_FULL_SCALE_BITS >> 1 ) * ( BLOODPUMP_ADC_FULL_SCALE_V / INT_ADC_REF_V ) ) -#define SIGN_FROM_12_BIT_VALUE(v) ( (S16)(v) - (S16)BLOODPUMP_ADC_MID_PT_BITS ) +#define BLOODPUMP_ADC_FULL_SCALE_V 3.0 // BP analog signals are 0-3V (while int. ADC ref may be different) +#define BLOODPUMP_ADC_ZERO ( (F32)( INT_ADC_ZERO ) * ( BLOODPUMP_ADC_FULL_SCALE_V / INT_ADC_REF_V ) ) +#define SIGN_FROM_12_BIT_VALUE(v) ( (S16)(v) - (S16)BLOODPUMP_ADC_ZERO ) #define BLOOD_FLOW_SAMPLE_FREQ ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) #define SIZE_OF_ROLLING_AVG ( BLOOD_FLOW_SAMPLE_FREQ * 2 ) // measured blood flow is filtered w/ moving average @@ -91,9 +91,14 @@ #define DIR_CAN3_PORT_MASK 0x00000002 // (Rx - re-purposed as output GPIO for blood pump direction signal) // blood pump stop and direction macros #define SET_BP_DIR() {canREG3->RIOC |= DIR_CAN3_PORT_MASK;} -#define SET_BP_STOP() {canREG3->TIOC |= STOP_CAN3_PORT_MASK;} #define CLR_BP_DIR() {canREG3->RIOC &= ~DIR_CAN3_PORT_MASK;} -#define CLR_BP_STOP() {canREG3->TIOC &= ~STOP_CAN3_PORT_MASK;} +#ifndef BREADBOARD_TARGET + #define SET_BP_STOP() {canREG3->TIOC &= ~STOP_CAN3_PORT_MASK;} + #define CLR_BP_STOP() {canREG3->TIOC |= STOP_CAN3_PORT_MASK;} +#else + #define SET_BP_STOP() {canREG3->TIOC |= STOP_CAN3_PORT_MASK;} + #define CLR_BP_STOP() {canREG3->TIOC &= ~STOP_CAN3_PORT_MASK;} +#endif // ********** private data ********** Index: firmware/App/Controllers/DialInFlow.c =================================================================== diff -u -r9b262ba08e3180f121c3cf19d8d25e565183f87d -r108abddcbf729f7435073116191cd3903261df8f --- firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 9b262ba08e3180f121c3cf19d8d25e565183f87d) +++ firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 108abddcbf729f7435073116191cd3903261df8f) @@ -52,8 +52,8 @@ #define DIP_MAX_CURR_WHEN_RUNNING_MA 1000.0 // motor controller current should not exceed this when pump should be running #define DIP_MAX_CURR_ERROR_DURATION_MS 2000 // motor controller current errors persisting beyond this duration will trigger an alarm -#define DIP_SPEED_ADC_TO_RPM_FACTOR 1.375 // conversion factor from ADC counts to RPM for dialIn pump motor -#define DIP_CURRENT_ADC_TO_MA_FACTOR 2.65 // conversion factor from ADC counts to mA for dialIn pump motor +#define DIP_SPEED_ADC_TO_RPM_FACTOR 1.280938 // conversion factor from ADC counts to RPM for dialIn pump motor +#define DIP_CURRENT_ADC_TO_MA_FACTOR 3.002 // conversion factor from ADC counts to mA for dialIn pump motor #define DIP_REV_PER_LITER 124.0 // rotor revolutions per liter #define DIP_ML_PER_MIN_TO_PUMP_RPM_FACTOR ( DIP_REV_PER_LITER / ML_PER_LITER ) @@ -62,9 +62,9 @@ #define DIP_PWM_ZERO_OFFSET 0.1 // 10% PWM duty cycle = zero speed #define DIP_PWM_FROM_ML_PER_MIN(rate) ( (rate) * DIP_ML_PER_MIN_TO_PUMP_RPM_FACTOR * DIP_GEAR_RATIO * DIP_MOTOR_RPM_TO_PWM_DC_FACTOR + DIP_PWM_ZERO_OFFSET ) -#define DIAL_IN_PUMP_ADC_FULL_SCALE_V 3.0 // BP analog signals are 0-3V (while int. ADC ref V is 3.3V) -#define DIAL_IN_PUMP_ADC_MID_PT_BITS ( (F32)( INT_ADC_FULL_SCALE_BITS >> 1 ) * ( DIAL_IN_PUMP_ADC_FULL_SCALE_V / INT_ADC_REF_V ) ) -#define SIGN_FROM_12_BIT_VALUE(v) ( (S16)(v) - (S16)DIAL_IN_PUMP_ADC_MID_PT_BITS ) +#define DIAL_IN_PUMP_ADC_FULL_SCALE_V 3.0 // BP analog signals are 0-3V (while int. ADC ref V may be different) +#define DIAL_IN_PUMP_ADC_ZERO ( (F32)( INT_ADC_ZERO ) * ( DIAL_IN_PUMP_ADC_FULL_SCALE_V / INT_ADC_REF_V ) ) +#define SIGN_FROM_12_BIT_VALUE(v) ( (S16)(v) - (S16)DIAL_IN_PUMP_ADC_ZERO ) #define DIAL_IN_FLOW_SAMPLE_FREQ ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) #define SIZE_OF_ROLLING_AVG ( DIAL_IN_FLOW_SAMPLE_FREQ * 2 ) // measured dialIn flow is filtered w/ moving average @@ -92,9 +92,14 @@ #define DIR_DI_PUMP_SPI5_PORT_MASK 0x00000100 // (ENA - re-purposed as output GPIO) // dialIn pump stop and direction macros #define SET_DIP_DIR() {mibspiREG5->PC3 |= DIR_DI_PUMP_SPI5_PORT_MASK;} -#define SET_DIP_STOP() gioSetBit( gioPORTA, STOP_DI_PUMP_GIO_PORT_PIN, PIN_SIGNAL_HIGH ) #define CLR_DIP_DIR() {mibspiREG5->PC3 &= ~DIR_DI_PUMP_SPI5_PORT_MASK;} -#define CLR_DIP_STOP() gioSetBit( gioPORTA, STOP_DI_PUMP_GIO_PORT_PIN, PIN_SIGNAL_LOW ) +#ifndef BREADBOARD_TARGET + #define SET_DIP_STOP() gioSetBit( gioPORTA, STOP_DI_PUMP_GIO_PORT_PIN, PIN_SIGNAL_LOW ) + #define CLR_DIP_STOP() gioSetBit( gioPORTA, STOP_DI_PUMP_GIO_PORT_PIN, PIN_SIGNAL_HIGH ) +#else + #define SET_DIP_STOP() gioSetBit( gioPORTA, STOP_DI_PUMP_GIO_PORT_PIN, PIN_SIGNAL_HIGH ) + #define CLR_DIP_STOP() gioSetBit( gioPORTA, STOP_DI_PUMP_GIO_PORT_PIN, PIN_SIGNAL_LOW ) +#endif // ********** private data ********** Index: firmware/App/Controllers/DialOutFlow.c =================================================================== diff -u -r9b262ba08e3180f121c3cf19d8d25e565183f87d -r108abddcbf729f7435073116191cd3903261df8f --- firmware/App/Controllers/DialOutFlow.c (.../DialOutFlow.c) (revision 9b262ba08e3180f121c3cf19d8d25e565183f87d) +++ firmware/App/Controllers/DialOutFlow.c (.../DialOutFlow.c) (revision 108abddcbf729f7435073116191cd3903261df8f) @@ -57,11 +57,11 @@ #define DOP_MAX_CURR_WHEN_RUNNING_MA 1000.0 ///< Motor controller current should not exceed this when pump should be running. #define DOP_MAX_CURR_ERROR_DURATION_MS 2000 ///< Motor controller current errors persisting beyond this duration will trigger an alarm. -#define DOP_SPEED_ADC_TO_RPM_FACTOR 1.375 ///< Conversion factor from ADC counts to RPM for dialysate outlet pump motor. -#define DOP_CURRENT_ADC_TO_MA_FACTOR 2.65 ///< Conversion factor from ADC counts to mA for dialysate outlet pump motor. -#define DOP_ADC_FULL_SCALE_V 3.0 ///< DPo analog signals are 0-3V (while int. ADC ref V is 3.3V). -#define DOP_ADC_MID_PT_BITS ( (F32)( INT_ADC_FULL_SCALE_BITS >> 1 ) * ( DOP_ADC_FULL_SCALE_V / INT_ADC_REF_V ) ) ///< Mid-point (zero) for ADC readings. -#define SIGN_FROM_12_BIT_VALUE(v) ( (S16)(v) - (S16)DOP_ADC_MID_PT_BITS ) ///< Macro converts a 12-bit ADC reading to a signed 16-bit value. +#define DOP_SPEED_ADC_TO_RPM_FACTOR 1.280938 ///< Conversion factor from ADC counts to RPM for dialysate outlet pump motor. +#define DOP_CURRENT_ADC_TO_MA_FACTOR 3.002 ///< Conversion factor from ADC counts to mA for dialysate outlet pump motor. +#define DOP_ADC_FULL_SCALE_V 3.0 ///< DPo analog signals are 0-3V (while int. ADC ref V may be different). +#define DOP_ADC_ZERO ( (F32)( INT_ADC_ZERO ) * ( DOP_ADC_FULL_SCALE_V / INT_ADC_REF_V ) ) ///< Mid-point (zero) for ADC readings. +#define SIGN_FROM_12_BIT_VALUE(v) ( (S16)(v) - (S16)DOP_ADC_ZERO ) ///< Macro converts a 12-bit ADC reading to a signed 16-bit value. /*** setDialOutFlowRxTotalVolumeAndRxTime ***/ @@ -93,8 +93,13 @@ // pin assignments and macros for pump stop and direction outputs #define STOP_DO_PUMP_MIBSPI1_PORT_MASK 0x00000400 ///< MIBSPI1 SIMO[0] - re-purposed as GPIOoutput for pump controller run/stop pin. -#define SET_DOP_STOP() {mibspiREG1->PC3 |= STOP_DO_PUMP_MIBSPI1_PORT_MASK;} ///< Macro sets pump controller run/stop signal to stop. -#define CLR_DOP_STOP() {mibspiREG1->PC3 &= ~STOP_DO_PUMP_MIBSPI1_PORT_MASK;} ///< Macro sets pump controller run/stop signal to run. +#ifndef BREADBOARD_TARGET + #define SET_DOP_STOP() {mibspiREG1->PC3 &= ~STOP_DO_PUMP_MIBSPI1_PORT_MASK;} ///< Macro sets pump controller run/stop signal to stop. + #define CLR_DOP_STOP() {mibspiREG1->PC3 |= STOP_DO_PUMP_MIBSPI1_PORT_MASK;} ///< Macro sets pump controller run/stop signal to run. +#else + #define SET_DOP_STOP() {mibspiREG1->PC3 |= STOP_DO_PUMP_MIBSPI1_PORT_MASK;} ///< Macro sets pump controller run/stop signal to stop. + #define CLR_DOP_STOP() {mibspiREG1->PC3 &= ~STOP_DO_PUMP_MIBSPI1_PORT_MASK;} ///< Macro sets pump controller run/stop signal to run. +#endif #define STOP_DO_PUMP_GIO_PORT_PIN 6U ///< GIO port A pin used for pump controller direction pin. #define SET_DOP_DIR() gioSetBit( gioPORTA, STOP_DO_PUMP_GIO_PORT_PIN, PIN_SIGNAL_HIGH ) ///< Macro sets pump controller direction to forward direction. #define CLR_DOP_DIR() gioSetBit( gioPORTA, STOP_DO_PUMP_GIO_PORT_PIN, PIN_SIGNAL_LOW ) ///< Macro sets pump controller direction to reverse direction. Index: firmware/App/Drivers/InternalADC.h =================================================================== diff -u -r9b262ba08e3180f121c3cf19d8d25e565183f87d -r108abddcbf729f7435073116191cd3903261df8f --- firmware/App/Drivers/InternalADC.h (.../InternalADC.h) (revision 9b262ba08e3180f121c3cf19d8d25e565183f87d) +++ firmware/App/Drivers/InternalADC.h (.../InternalADC.h) (revision 108abddcbf729f7435073116191cd3903261df8f) @@ -23,7 +23,12 @@ #define INT_ADC_BITS_PER_CHANNEL 12 #define INT_ADC_FULL_SCALE_BITS 4096 -#define INT_ADC_REF_V 3.3 +#define INT_ADC_ZERO 1998 +#ifndef BREADBOARD_TARGET + #define INT_ADC_REF_V 3.0 +#else + #define INT_ADC_REF_V 3.3 +#endif typedef enum Int_ADC_Channels { Index: firmware/App/HDCommon.h =================================================================== diff -u -r9b262ba08e3180f121c3cf19d8d25e565183f87d -r108abddcbf729f7435073116191cd3903261df8f --- firmware/App/HDCommon.h (.../HDCommon.h) (revision 9b262ba08e3180f121c3cf19d8d25e565183f87d) +++ firmware/App/HDCommon.h (.../HDCommon.h) (revision 108abddcbf729f7435073116191cd3903261df8f) @@ -23,7 +23,7 @@ #ifndef _VECTORCAST_ // #define RM46_EVAL_BOARD_TARGET 1 - #define BREADBOARD2_TARGET 1 +// #define BREADBOARD_TARGET 1 #define SIMULATE_UI 1 #define DEBUG_ENABLED 1 #define DISABLE_CRC_ERROR 1 Index: firmware/App/Modes/Dialysis.c =================================================================== diff -u -r2e6c750c202b7361d79488ce383e34f380e75413 -r108abddcbf729f7435073116191cd3903261df8f --- firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 2e6c750c202b7361d79488ce383e34f380e75413) +++ firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 108abddcbf729f7435073116191cd3903261df8f) @@ -175,7 +175,7 @@ setDialOutUFVolumes( refUFVolume, measUFVolume ); setBloodPumpTargetFlowRate( setBloodFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); setDialInPumpTargetFlowRate( setDialysateFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); - setDialOutPumpTargetRate( setDialysateFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); + setDialOutPumpTargetRate( setDialysateFlowRate + FLOAT_TO_INT_WITH_ROUND( setUFRate ), MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); // TODO - Heparin pump } @@ -198,6 +198,64 @@ /*********************************************************************//** * @brief + * The pauseUF function pauses ultrafiltration. + * @details + * Inputs : currentDialysisState, currentUFState + * Outputs : currentUFState, outlet pump set point + * @return TRUE if pause successful, FALSE if not + *************************************************************************/ +BOOL pauseUF( void ) +{ + BOOL result = FALSE; + + if ( ( DIALYSIS_UF_STATE == currentDialysisState ) && ( UF_RUNNING_STATE == currentUFState ) ) + { + // set outlet pump to dialysate rate + result = setDialOutPumpTargetRate( setDialysateFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); + + if ( TRUE == result ) + { + // go to UF paused state + currentUFState = UF_PAUSED_STATE; + } + } + + return result; +} + +/*********************************************************************//** + * @brief + * The resumeUF function resumes ultrafiltration. + * @details + * Inputs : currentDialysisState, currentUFState + * Outputs : currentUFState, outlet pump set point + * @return TRUE if resume successful, FALSE if not + *************************************************************************/ +BOOL resumeUF( void ) +{ + BOOL result = FALSE; + + if ( ( DIALYSIS_UF_STATE == currentDialysisState ) && ( UF_PAUSED_STATE == currentUFState ) ) + { + S32 inletPumpRate = getTargetDialInFlowRate(); + + // set outlet pump to dialysate rate + set UF rate + result = setDialOutPumpTargetRate( setDialysateFlowRate + FLOAT_TO_INT_WITH_ROUND( setUFRate ), MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); + + if ( TRUE == result ) + { + // restart UF time accumulation for reference volume calculation + lastUFTimeStamp = getMSTimerCount(); + // go to UF paused state + currentUFState = UF_RUNNING_STATE; + } + } + + return result; +} + +/*********************************************************************//** + * @brief * The execDialysis function executes the Dialysis sub-mode state machine. * @details * Inputs : currentDialysisState @@ -331,7 +389,7 @@ // TODO - test code - remove later if ( TRUE == isStopButtonPressed() ) { - lastUFTimeStamp = getMSTimerCount(); // restart UF time accumulation + resumeUF(); result = UF_RUNNING_STATE; } @@ -370,6 +428,7 @@ // TODO - test code - remove later if ( TRUE == isStopButtonPressed() ) { + pauseUF(); result = UF_PAUSED_STATE; } Index: firmware/App/Modes/Dialysis.h =================================================================== diff -u -r9b262ba08e3180f121c3cf19d8d25e565183f87d -r108abddcbf729f7435073116191cd3903261df8f --- firmware/App/Modes/Dialysis.h (.../Dialysis.h) (revision 9b262ba08e3180f121c3cf19d8d25e565183f87d) +++ firmware/App/Modes/Dialysis.h (.../Dialysis.h) (revision 108abddcbf729f7435073116191cd3903261df8f) @@ -27,13 +27,25 @@ * @{ */ +// ********** public definitions ********** + +/// Enumeration of system message IDs. +typedef enum UF_Commands +{ + UF_CMD_PAUSE = 0, ///< Pause UF command. + UF_CMD_RESUME, ///< Resume UF command. + NUM_OF_UF_CMDS ///< # of UF commands. +} UF_CMD_T; + // ********** private function prototypes ********** void initDialysis( void ); void transitionToDialysis( void ); void execDialysis( void ); void setDialysisParams( U32 bPFlow, U32 dPFlow, F32 maxUFVol, F32 uFRate ); +BOOL pauseUF( void ); +BOOL resumeUF( void ); void startDialysis( void ); void stopDialysis( void ); Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -r9b262ba08e3180f121c3cf19d8d25e565183f87d -r108abddcbf729f7435073116191cd3903261df8f --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 9b262ba08e3180f121c3cf19d8d25e565183f87d) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 108abddcbf729f7435073116191cd3903261df8f) @@ -118,8 +118,8 @@ break; case POST_STATE_RTC: - testStatus = execRTCSelfTest(); - postState = handlePOSTStatus( testStatus ); + //testStatus = execRTCSelfTest(); + postState = POST_STATE_STUCK_BUTTON; //handlePOSTStatus( testStatus ); break; case POST_STATE_STUCK_BUTTON: Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -r9b262ba08e3180f121c3cf19d8d25e565183f87d -r108abddcbf729f7435073116191cd3903261df8f --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 9b262ba08e3180f121c3cf19d8d25e565183f87d) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 108abddcbf729f7435073116191cd3903261df8f) @@ -242,7 +242,7 @@ presBloodFlowRate = 300; presDialysateFlowRate = 400; presMaxUFVolumeML = 300.0; - presUFRate = 20.0; + presUFRate = 10.0; // kick dialysis sub-mode off setDialysisParams( presBloodFlowRate, presDialysateFlowRate, presMaxUFVolumeML, presUFRate ); Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r169b72cc9c959b53b40b48e9ce0a5f4aeca1de97 -r108abddcbf729f7435073116191cd3903261df8f --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 169b72cc9c959b53b40b48e9ce0a5f4aeca1de97) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 108abddcbf729f7435073116191cd3903261df8f) @@ -1169,6 +1169,10 @@ handleLoadCellReadingsFromDG( message ); break; + case MSG_ID_USER_UF_PAUSE_RESUME_REQUEST: + handleUFPauseResumeRequest( message ); + break; + case MSG_ID_TESTER_LOGIN_REQUEST: handleTesterLogInRequest( message ); break; Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r9b262ba08e3180f121c3cf19d8d25e565183f87d -r108abddcbf729f7435073116191cd3903261df8f --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 9b262ba08e3180f121c3cf19d8d25e565183f87d) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 108abddcbf729f7435073116191cd3903261df8f) @@ -22,6 +22,7 @@ #include "BloodFlow.h" #include "Buttons.h" #include "DialInFlow.h" +#include "Dialysis.h" #include "MsgQueues.h" #include "PresOccl.h" #include "WatchdogMgmt.h" @@ -301,13 +302,44 @@ *************************************************************************/ void handleLoadCellReadingsFromDG( MESSAGE_T *message ) { - LOAD_CELL_READINGS_PAYLOAD_T payload; + if ( message->hdr.payloadLen == sizeof(LOAD_CELL_READINGS_PAYLOAD_T) ) + { + LOAD_CELL_READINGS_PAYLOAD_T payload; - memcpy( &payload, message->payload, sizeof(LOAD_CELL_READINGS_PAYLOAD_T) ); - setNewLoadCellReadings( payload.res1PrimaryLoadCell, payload.res1BackupLoadCell, payload.res2PrimaryLoadCell, payload.res2BackupLoadCell ); + memcpy( &payload, message->payload, sizeof(LOAD_CELL_READINGS_PAYLOAD_T) ); + setNewLoadCellReadings( payload.res1PrimaryLoadCell, payload.res1BackupLoadCell, payload.res2PrimaryLoadCell, payload.res2BackupLoadCell ); + } } /************************************************************************* + * @brief + * The handleLoadCellReadingsFromDG function handles a load cell readings \n + * message from the DG. + * @details + * Inputs : none + * Outputs : message handled + * @param message : a pointer to the message to handle + * @return none + *************************************************************************/ +void handleUFPauseResumeRequest( MESSAGE_T *message ) +{ + if ( message->hdr.payloadLen == sizeof(U32) ) + { + U32 cmd; + + memcpy( &cmd, message->payload, sizeof(U32) ); + if ( UF_CMD_PAUSE == cmd ) + { + pauseUF(); + } + else if ( UF_CMD_RESUME == cmd ) + { + resumeUF(); + } + } +} + +/************************************************************************* * @brief broadcastAlarmStatus * The broadcastAlarmStatus function constructs an alarm status msg to \n * be broadcast and queues the msg for transmit on the appropriate CAN channel. Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -r9b262ba08e3180f121c3cf19d8d25e565183f87d -r108abddcbf729f7435073116191cd3903261df8f --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 9b262ba08e3180f121c3cf19d8d25e565183f87d) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 108abddcbf729f7435073116191cd3903261df8f) @@ -23,72 +23,6 @@ // ********** public definitions ********** -typedef enum Msg_IDs -{ // normal CAN messages - MSG_ID_UNUSED = 0, - MSG_ID_OFF_BUTTON_PRESS, // 1 - MSG_ID_ALARM_STATUS, // 2 - MSG_ID_ALARM_TRIGGERED, // 3 - MSG_ID_ALARM_CLEARED, // 4 - MSG_ID_BLOOD_FLOW_DATA, // 5 - MSG_ID_DG_CHECK_IN, // 6 - MSG_ID_UI_CHECK_IN, // 7 - MSG_ID_DIALYSATE_FLOW_DATA, // 8 - MSG_ID_PRESSURE_OCCLUSION_DATA, // 9 - MSG_ID_RTC_EPOCH, // 10 - MSG_ID_DIALYSATE_OUT_FLOW_DATA, // 11 - MSG_ID_LOAD_CELL_READINGS, // 12 - MSG_ID_TREATMENT_TIME, // 13 - MSG_ID_POWER_OFF_WARNING, // 14 -#ifdef CAN_TEST - MSG_ID_HD_CAN_TEST_1_LARGE_FREQ, - MSG_ID_DG_CAN_TEST_1_LARGE_FREQ, -#endif - - // service/test CAN messages - - MSG_ID_FIRST_TESTER_MESSAGE = 0x8000, // 0x8000 - MSG_ID_TESTER_LOGIN_REQUEST = MSG_ID_FIRST_TESTER_MESSAGE, - MSG_ID_HD_MESSAGE, // 0x8001 - MSG_ID_OFF_BUTTON_STATE_OVERRIDE, // 0x8002 - MSG_ID_STOP_BUTTON_STATE_OVERRIDE, // 0x8003 - MSG_ID_ALARM_LAMP_PATTERN_OVERRIDE, // 0x8004 - MSG_ID_WATCHDOG_TASK_CHECKIN_OVERRIDE, // 0x8005 - MSG_ID_ALARM_STATE_OVERRIDE, // 0x8006 - MSG_ID_ALARM_TIME_OVERRIDE, // 0x8007 - MSG_ID_BLOOD_FLOW_SET_PT_OVERRIDE, // 0x8008 - MSG_ID_BLOOD_FLOW_MEAS_OVERRIDE, // 0x8009 - MSG_ID_BLOOD_PUMP_MC_MEAS_SPEED_OVERRIDE, // 0x800A - MSG_ID_BLOOD_PUMP_MC_MEAS_CURR_OVERRIDE, // 0x800B - MSG_ID_BLOOD_FLOW_SEND_INTERVAL_OVERRIDE, // 0x800C - MSG_ID_ALARM_STATUS_SEND_INTERVAL_OVERRIDE, // 0x800D - MSG_ID_BLOOD_PUMP_MEAS_SPEED_OVERRIDE, // 0x800E - MSG_ID_BLOOD_PUMP_MEAS_ROTOR_SPEED_OVERRIDE, // 0x800F - MSG_ID_DIAL_IN_FLOW_SET_PT_OVERRIDE, // 0x8010 - MSG_ID_DIAL_IN_FLOW_MEAS_OVERRIDE, // 0x8011 - MSG_ID_DIAL_IN_PUMP_MC_MEAS_SPEED_OVERRIDE, // 0x8012 - MSG_ID_DIAL_IN_PUMP_MC_MEAS_CURR_OVERRIDE, // 0x8013 - MSG_ID_DIAL_IN_FLOW_SEND_INTERVAL_OVERRIDE, // 0x8014 - MSG_ID_DIAL_IN_PUMP_MEAS_SPEED_OVERRIDE, // 0x8015 - MSG_ID_DIAL_IN_PUMP_MEAS_ROTOR_SPEED_OVERRIDE, // 0x8016 - MSG_ID_PRESSURE_ARTERIAL_OVERRIDE, // 0x8017 - MSG_ID_PRESSURE_VENOUS_OVERRIDE, // 0x8018 - MSG_ID_OCCLUSION_BLOOD_PUMP_OVERRIDE, // 0x8019 - MSG_ID_OCCLUSION_DIAL_IN_PUMP_OVERRIDE, // 0x801A - MSG_ID_OCCLUSION_DIAL_OUT_PUMP_OVERRIDE, // 0x801B - MSG_ID_PRES_OCCL_SEND_INTERVAL_OVERRIDE, // 0x801C - MSG_ID_SET_RTC_DATE_TIME, // 0x801D - MSG_ID_DIAL_OUT_FLOW_SEND_INTERVAL_OVERRIDE, // 0x801E - MSG_ID_DIAL_OUT_UF_REF_VOLUME_OVERRIDE, // 0x801F - MSG_ID_DIAL_OUT_UF_MEAS_VOLUME_OVERRIDE, // 0x8020 - MSG_ID_DIAL_OUT_PUMP_MC_MEAS_SPEED_OVERRIDE, // 0x8021 - MSG_ID_DIAL_OUT_PUMP_MC_MEAS_CURR_OVERRIDE, // 0x8022 - MSG_ID_DIAL_OUT_PUMP_MEAS_SPEED_OVERRIDE, // 0x8023 - MSG_ID_DIAL_OUT_PUMP_MEAS_ROTOR_SPEED_OVERRIDE, // 0x8024 - MSG_ID_DIAL_OUT_LOAD_CELL_WEIGHT_OVERRIDE, // 0x8025 - END_OF_MSG_IDS -} MSG_ID_T; - // ********** public function prototypes ********** // ACK MSG @@ -106,6 +40,9 @@ // MSG_ID_LOAD_CELL_READINGS void handleLoadCellReadingsFromDG( MESSAGE_T *message ); +// MSG_ID_USER_UF_PAUSE_RESUME_REQUEST +void handleUFPauseResumeRequest( MESSAGE_T *message ); + // MSG_ID_ALARM_STATUS BOOL broadcastAlarmStatus( COMP_ALARM_STATUS_T almStatus ); // MSG_ID_ALARM_TRIGGERED Index: firmware/App/Services/WatchdogMgmt.c =================================================================== diff -u -r9b262ba08e3180f121c3cf19d8d25e565183f87d -r108abddcbf729f7435073116191cd3903261df8f --- firmware/App/Services/WatchdogMgmt.c (.../WatchdogMgmt.c) (revision 9b262ba08e3180f121c3cf19d8d25e565183f87d) +++ firmware/App/Services/WatchdogMgmt.c (.../WatchdogMgmt.c) (revision 108abddcbf729f7435073116191cd3903261df8f) @@ -106,7 +106,7 @@ } // check to see if watchdog has expired -#ifdef BREADBOARD2_TARGET +#ifndef BREADBOARD_TARGET if ( getCPLDWatchdogExpired() == PIN_SIGNAL_LOW ) #else if ( getCPLDWatchdogExpired() == PIN_SIGNAL_HIGH )