Index: firmware/App/Drivers/CPLD.c =================================================================== diff -u -r30f049651877229042e3f8700c8596e5b9a1e0f4 -r1095b811053729187a2c7535251c4a33c5d22ab5 --- firmware/App/Drivers/CPLD.c (.../CPLD.c) (revision 30f049651877229042e3f8700c8596e5b9a1e0f4) +++ firmware/App/Drivers/CPLD.c (.../CPLD.c) (revision 1095b811053729187a2c7535251c4a33c5d22ab5) @@ -62,6 +62,30 @@ #define CLR_GREEN() {mibspiREG5->PC3 &= ~GREEN_SPI5_PORT_MASK;} ///< Macro to set green alarm lamp signal state low. #define CLR_BLUE() {mibspiREG5->PC3 &= ~BLUE_SPI5_PORT_MASK;} ///< Macro to set blue alarm lamp signal state low. #define CLR_RED() {mibspiREG5->PC3 &= ~RED_SPI5_PORT_MASK;} ///< Macro to set red alarm lamp signal state low. + +#ifdef RM46_EVAL_BOARD_TARGET + // for RM46 eval board, user button B uses the MIBSPI1_nCS[4] pin, so need to re-purpose that pin as GPIO to see the button + #define USER_BUTTON_MASK 0x00000010 // (nCS[4] + #define GET_USER_BUTTON() (PIN_SIGNAL_STATE_T)(((mibspiREG1->PC2 & USER_BUTTON_MASK) == 0 ? PIN_SIGNAL_LOW : PIN_SIGNAL_HIGH)) + PIN_SIGNAL_STATE_T getUserButtonState( void ) + { + PIN_SIGNAL_STATE_T result = GET_USER_BUTTON(); + + return result; + } + // for RM46 eval board, user LED A uses the same GPIO pin that CPLD uses for watchdog pet. Had to disable watchdog pet to use as LED. + void setUserLED( BOOL on ) + { + if ( on == TRUE ) + { + SET_WD_PET(); + } + else + { + CLR_WD_PET(); + } + } +#endif /*********************************************************************//** * @brief Index: firmware/App/Drivers/CPLD.h =================================================================== diff -u -rac05209d7b6c65b22359754eced5ad2672d3092a -r1095b811053729187a2c7535251c4a33c5d22ab5 --- firmware/App/Drivers/CPLD.h (.../CPLD.h) (revision ac05209d7b6c65b22359754eced5ad2672d3092a) +++ firmware/App/Drivers/CPLD.h (.../CPLD.h) (revision 1095b811053729187a2c7535251c4a33c5d22ab5) @@ -43,6 +43,11 @@ void toggleCPLDOffRequest( void ); PIN_SIGNAL_STATE_T getCPLDOffButton( void ); PIN_SIGNAL_STATE_T getCPLDStopButton( void ); + +#ifdef RM46_EVAL_BOARD_TARGET + PIN_SIGNAL_STATE_T getUserButtonState( void ); + void setUserLED( BOOL on ); +#endif /**@}*/ Index: firmware/App/HDCommon.h =================================================================== diff -u -ra64f4bd62ca1b6065cd8946f5130674e578bc2d7 -r1095b811053729187a2c7535251c4a33c5d22ab5 --- firmware/App/HDCommon.h (.../HDCommon.h) (revision a64f4bd62ca1b6065cd8946f5130674e578bc2d7) +++ firmware/App/HDCommon.h (.../HDCommon.h) (revision 1095b811053729187a2c7535251c4a33c5d22ab5) @@ -74,6 +74,7 @@ // #define NO_PUMP_FLOW_LIMITS 1 // Allow any commanded flow rate for peristaltic pumps #define DISABLE_BUBBLE_ALARMS 1 // Disable bubble alarms // #define DISABLE_UI_POST_TEST 1 // Disable the UI POST + #define RM46_EVAL_BOARD_TARGET 1 // Skip Pre-Treatment and get to treatment as soon as possible // #define SKIP_UI_INTERACTION 1 // Skip UI interaction. Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -r6287441e188e7a245f59d3d0d47cdc77808cdb91 -r1095b811053729187a2c7535251c4a33c5d22ab5 --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 6287441e188e7a245f59d3d0d47cdc77808cdb91) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 1095b811053729187a2c7535251c4a33c5d22ab5) @@ -132,6 +132,9 @@ case POST_STATE_START: sendUIVersionRequest(); postState = POST_STATE_FW_INTEGRITY; +#ifdef RM46_EVAL_BOARD_TARGET + postState = POST_STATE_COMPLETED; +#endif break; case POST_STATE_FW_INTEGRITY: Index: firmware/App/Modes/ModePostTreat.c =================================================================== diff -u -r8466e63f95f65a3ffb18c3af85ac99328e41167b -r1095b811053729187a2c7535251c4a33c5d22ab5 --- firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision 8466e63f95f65a3ffb18c3af85ac99328e41167b) +++ firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision 1095b811053729187a2c7535251c4a33c5d22ab5) @@ -36,6 +36,11 @@ #include "Timers.h" #include "Valves.h" +#ifdef RM46_EVAL_BOARD_TARGET + #include "Timers.h" + static U32 start; +#endif + /** * @addtogroup HDPostTreatmentMode * @{ @@ -141,6 +146,9 @@ signalDialInPumpHardStop(); collectTreatmentLogData(); +#ifdef RM46_EVAL_BOARD_TARGET + start = getMSTimerCount(); +#endif } /*********************************************************************//** @@ -179,6 +187,13 @@ postTreatmentPublishTimerCounter = 0; } +#ifdef RM46_EVAL_BOARD_TARGET + if ( TRUE == didTimeout( start, 5000U ) ) + { + requestNewOperationMode( MODE_STAN ); + } +#endif + return currentPostTreatmentState; } Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r8466e63f95f65a3ffb18c3af85ac99328e41167b -r1095b811053729187a2c7535251c4a33c5d22ab5 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 8466e63f95f65a3ffb18c3af85ac99328e41167b) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 1095b811053729187a2c7535251c4a33c5d22ab5) @@ -30,6 +30,11 @@ #include "SystemCommMessages.h" #include "TaskGeneral.h" +#ifdef RM46_EVAL_BOARD_TARGET + #include "Timers.h" + static U32 start; +#endif + /** * @addtogroup HDPreTreatmentMode * @{ @@ -160,6 +165,10 @@ setAlarmUserActionEnabled( ALARM_USER_ACTION_RESUME, TRUE ); setAlarmUserActionEnabled( ALARM_USER_ACTION_RINSEBACK, FALSE ); setAlarmUserActionEnabled( ALARM_USER_ACTION_END_TREATMENT, TRUE ); + +#ifdef RM46_EVAL_BOARD_TARGET + start = getMSTimerCount(); +#endif } /*********************************************************************//** @@ -178,6 +187,13 @@ activateAlarmNoData( ALARM_ID_TREATMENT_STOPPED_BY_USER ); } +#ifdef RM46_EVAL_BOARD_TARGET + if ( TRUE == didTimeout( start, 5000U ) ) + { + requestNewOperationMode( MODE_TREA ); + } +#else + // execute mode state machine switch ( currentPreTreatmentState ) { @@ -233,6 +249,7 @@ // Broadcast pre-treatment data publishPreTreatmentState(); +#endif return (U32)currentPreTreatmentState; } Index: firmware/App/Modes/ModeStandby.c =================================================================== diff -u -r8466e63f95f65a3ffb18c3af85ac99328e41167b -r1095b811053729187a2c7535251c4a33c5d22ab5 --- firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 8466e63f95f65a3ffb18c3af85ac99328e41167b) +++ firmware/App/Modes/ModeStandby.c (.../ModeStandby.c) (revision 1095b811053729187a2c7535251c4a33c5d22ab5) @@ -38,6 +38,11 @@ #include "FPGA.h" #endif +#ifdef RM46_EVAL_BOARD_TARGET + #include "Timers.h" + static U32 start; +#endif + /** * @addtogroup HDStandbyMode * @{ @@ -113,6 +118,10 @@ setBloodPumpTargetFlowRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); setDialInPumpTargetFlowRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); setDialOutPumpTargetRate( 0, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); + +#ifdef RM46_EVAL_BOARD_TARGET + start = getMSTimerCount(); +#endif } /*********************************************************************//** @@ -254,6 +263,13 @@ } #endif +#ifdef RM46_EVAL_BOARD_TARGET + if ( TRUE == didTimeout( start, 5000U ) ) + { + requestNewOperationMode( MODE_TPAR ); + } +#endif + return currentStandbyState; } Index: firmware/App/Modes/ModeTreatment.c =================================================================== diff -u -r58e7f4184d79fe6dbef4db3d256ad2b56ba7a0aa -r1095b811053729187a2c7535251c4a33c5d22ab5 --- firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 58e7f4184d79fe6dbef4db3d256ad2b56ba7a0aa) +++ firmware/App/Modes/ModeTreatment.c (.../ModeTreatment.c) (revision 1095b811053729187a2c7535251c4a33c5d22ab5) @@ -37,6 +37,11 @@ #include "Utilities.h" #include "Valves.h" +#ifdef RM46_EVAL_BOARD_TARGET + #include "Timers.h" + static U32 start; +#endif + /** * @addtogroup HDTreatmentMode * @{ @@ -246,6 +251,11 @@ initRinseback(); initTreatmentRecirc(); initTreatmentEnd(); + +#ifdef RM46_EVAL_BOARD_TARGET + // TODO - temporary test code for eval board + start = getMSTimerCount(); +#endif } /*********************************************************************//** @@ -610,6 +620,14 @@ activateAlarmNoData( ALARM_ID_TREATMENT_STOPPED_BY_USER ); } +#ifdef RM46_EVAL_BOARD_TARGET + // TODO - temporary test code for eval board - move to next mode after 5 min + if ( TRUE == didTimeout( start, 300000U ) ) + { + requestNewOperationMode( MODE_POST ); + } +#else + // Treatment mode state machine switch ( currentTreatmentState ) { @@ -658,6 +676,7 @@ // Manage air trap control execAirTrapMonitorTreatment(); +#endif return currentTreatmentState; } Index: firmware/App/Modes/ModeTreatmentParams.c =================================================================== diff -u -r8466e63f95f65a3ffb18c3af85ac99328e41167b -r1095b811053729187a2c7535251c4a33c5d22ab5 --- firmware/App/Modes/ModeTreatmentParams.c (.../ModeTreatmentParams.c) (revision 8466e63f95f65a3ffb18c3af85ac99328e41167b) +++ firmware/App/Modes/ModeTreatmentParams.c (.../ModeTreatmentParams.c) (revision 1095b811053729187a2c7535251c4a33c5d22ab5) @@ -29,6 +29,11 @@ #include "SyringePump.h" #include "SystemCommMessages.h" +#ifdef RM46_EVAL_BOARD_TARGET + #include "Timers.h" + static U32 start; +#endif + /** * @addtogroup HDTreatmentParamsMode * @{ @@ -138,6 +143,10 @@ setAlarmUserActionEnabled( ALARM_USER_ACTION_RESUME, FALSE ); setAlarmUserActionEnabled( ALARM_USER_ACTION_RINSEBACK, FALSE ); setAlarmUserActionEnabled( ALARM_USER_ACTION_END_TREATMENT, FALSE ); + +#ifdef RM46_EVAL_BOARD_TARGET + start = getMSTimerCount(); +#endif } /*********************************************************************//** @@ -294,6 +303,13 @@ } +#ifdef RM46_EVAL_BOARD_TARGET + if ( TRUE == didTimeout( start, 5000U ) ) + { + requestNewOperationMode( MODE_PRET ); + } +#endif + return (U32)currentTreatmentParamsState; } Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -re64816def7cd98e7dcb6d133b3a56c9fea835af3 -r1095b811053729187a2c7535251c4a33c5d22ab5 --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision e64816def7cd98e7dcb6d133b3a56c9fea835af3) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 1095b811053729187a2c7535251c4a33c5d22ab5) @@ -264,8 +264,10 @@ alarmStatus.alarmsSilenced = FALSE; // If alarm is a fault, request transition to fault mode if ( TRUE == ALARM_TABLE[ alarm ].alarmIsFault ) - { - requestNewOperationMode( MODE_FAUL ); + { +#ifndef RM46_EVAL_BOARD_TARGET + requestNewOperationMode( MODE_FAUL ); +#endif } // Activate alarm alarmIsActive[ alarm ] = TRUE; Index: firmware/App/Services/FPGA.c =================================================================== diff -u -r844f98879b7425c207b58562e623ab960adbc357 -r1095b811053729187a2c7535251c4a33c5d22ab5 --- firmware/App/Services/FPGA.c (.../FPGA.c) (revision 844f98879b7425c207b58562e623ab960adbc357) +++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision 1095b811053729187a2c7535251c4a33c5d22ab5) @@ -893,7 +893,11 @@ SELF_TEST_STATUS_T result; // Check FPGA reported correct ID +#ifndef RM46_EVAL_BOARD_TARGET if ( FPGA_EXPECTED_ID == fpgaHeader.fpgaId ) +#else + if ( 1 ) +#endif { // Check FPGA compatibility w/ firmware if ( fpgaHeader.fpgaRevMajor > MIN_HD_FPGA_MAJOR ) Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -r844f98879b7425c207b58562e623ab960adbc357 -r1095b811053729187a2c7535251c4a33c5d22ab5 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 844f98879b7425c207b58562e623ab960adbc357) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision 1095b811053729187a2c7535251c4a33c5d22ab5) @@ -27,6 +27,10 @@ #include "Timers.h" #include "Utilities.h" #include "SystemCommMessages.h" + +#ifdef RM46_EVAL_BOARD_TARGET + #include "CPLD.h" +#endif /** * @addtogroup SystemComm @@ -1082,7 +1086,10 @@ switch ( msgID ) { case MSG_ID_OFF_BUTTON_PRESS: - handleOffButtonConfirmMsgFromUI( message ); + handleOffButtonConfirmMsgFromUI( message ); +#ifdef RM46_EVAL_BOARD_TARGET + setUserLED( TRUE ); +#endif break; case MSG_ID_ALARM_TRIGGERED: Index: firmware/App/Services/WatchdogMgmt.c =================================================================== diff -u -rd27dcf1fbbc9651636f211028917a1c0702bb56a -r1095b811053729187a2c7535251c4a33c5d22ab5 --- firmware/App/Services/WatchdogMgmt.c (.../WatchdogMgmt.c) (revision d27dcf1fbbc9651636f211028917a1c0702bb56a) +++ firmware/App/Services/WatchdogMgmt.c (.../WatchdogMgmt.c) (revision 1095b811053729187a2c7535251c4a33c5d22ab5) @@ -114,7 +114,9 @@ { petWatchdog(); resetWDTaskCheckIns(); - } + } + +#ifndef RM46_EVAL_BOARD_TARGET // Check to see if watchdog has expired if ( getCPLDWatchdogExpired() == PIN_SIGNAL_LOW ) { @@ -126,7 +128,8 @@ activateAlarmNoData( ALARM_ID_WATCHDOG_EXPIRED ); #endif } - } + } +#endif } /*********************************************************************//** @@ -328,9 +331,11 @@ * @return none *************************************************************************/ static void petWatchdog( void ) -{ +{ +#ifndef RM46_EVAL_BOARD_TARGET // Pulse the watchdog signal - toggleCPLDWatchdog(); + toggleCPLDWatchdog(); +#endif // Remember when we last pet the watchdog lastWatchdogPetTime = getMSTimerCount(); Index: firmware/App/Tasks/TaskGeneral.c =================================================================== diff -u -r844f98879b7425c207b58562e623ab960adbc357 -r1095b811053729187a2c7535251c4a33c5d22ab5 --- firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision 844f98879b7425c207b58562e623ab960adbc357) +++ firmware/App/Tasks/TaskGeneral.c (.../TaskGeneral.c) (revision 1095b811053729187a2c7535251c4a33c5d22ab5) @@ -34,6 +34,12 @@ #include "Temperatures.h" #include "Voltages.h" #include "WatchdogMgmt.h" + +#ifdef RM46_EVAL_BOARD_TARGET + #include "CPLD.h" + #include "SystemCommMessages.h" + static BOOL lastUserPress = FALSE; +#endif /** * @addtogroup TaskGeneral @@ -112,9 +118,23 @@ // Manage NVDataMgmt process record state machine execNVDataMgmtProcessRecord(); -#ifndef RM46_EVAL_BOARD_TARGET // Manage alarm state execAlarmMgmt(); + +#ifdef RM46_EVAL_BOARD_TARGET + if ( getUserButtonState() == PIN_SIGNAL_LOW ) + { + if ( lastUserPress == FALSE ) + { + lastUserPress = TRUE; + setUserLED( FALSE ); + sendOffButtonMsgToUI(TRUE); + } + } + else + { + lastUserPress = FALSE; + } #endif // Manage data to be transmitted to other sub-systems