Index: firmware/App/Modes/ModeTreatmentParams.c =================================================================== diff -u -rf3b83f75a19b975ad1abead662c8151a2907ac00 -r933a18d740285e70be9d00696ed0f5a5381bc8e4 --- firmware/App/Modes/ModeTreatmentParams.c (.../ModeTreatmentParams.c) (revision f3b83f75a19b975ad1abead662c8151a2907ac00) +++ firmware/App/Modes/ModeTreatmentParams.c (.../ModeTreatmentParams.c) (revision 933a18d740285e70be9d00696ed0f5a5381bc8e4) @@ -8,7 +8,7 @@ * @file ModeTreatmentParams.c * * @author (last) Sean Nash -* @date (last) 10-Sep-2020 +* @date (last) 14-Oct-2020 * * @author (original) Sean Nash * @date (original) 29-May-2020 @@ -84,6 +84,7 @@ static BOOL validTreatParamsReceived = FALSE; ///< Flag indicates user has provided treatment parameters. static BOOL treatParamsConfirmed = FALSE; ///< Flag indicates user has confirmed the treatment parameters. +static BOOL treatParamsRejected = FALSE; ///< Flag indicates user has rejected the treatment parameters. static BOOL treatmentCancelled = FALSE; ///< Flag indicates user has cancelled the treatment. // ********** private function prototypes ********** @@ -94,14 +95,13 @@ static BOOL checkTreatmentParamsInRange( U32 *reasons ); static BOOL checkTreatmentParamsDependencies( U32 *reasons ); static void extractTreatmentParamsFromPayload( TREATMENT_PARAMS_DATA_PAYLOAD_T payload ); -static void sendTreatmentParamsResponse( BOOL valid, U32 *reasons ); +static void sendTreatmentParamsResponse( BOOL rejected, U32 *reasons ); /*********************************************************************//** * @brief * The initOpParamsMode function initializes the Operating Parameters Mode module. - * @details - * Inputs : none - * Outputs : Operating Parameters Mode module initialized. + * @details Inputs: none + * @details Outputs: Operating Parameters Mode module initialized. * @return none *************************************************************************/ void initTreatParamsMode( void ) @@ -113,9 +113,8 @@ * @brief * The transitionToOpParamsMode function prepares for transition to operating * parameters mode. - * @details - * Inputs : none - * Outputs : Treatment Parameters mode reset prior to starting + * @details Inputs: none + * @details Outputs: Treatment Parameters mode reset prior to starting * @return none *************************************************************************/ void transitionToTreatParamsMode( void ) @@ -128,6 +127,7 @@ validTreatParamsReceived = FALSE; treatParamsConfirmed = FALSE; + treatParamsRejected = FALSE; treatmentCancelled = FALSE; // temporary test code. TODO - remove later @@ -140,9 +140,8 @@ * @brief * The resetAllTreatmentParameters function resets treatment parameters * to default values. - * @details - * Inputs : none - * Outputs : All treatment parameters reset to default values. + * @details Inputs: none + * @details Outputs: All treatment parameters reset to default values. * @return none *************************************************************************/ static void resetAllTreatmentParameters( void ) @@ -160,6 +159,9 @@ // set staged parameter values to zero stagedParams[ param ].uInt = 0; } +#ifndef DISABLE_UI_TREATMENT_WORKFLOW + setTreatmentParameterF32( TREATMENT_PARAM_UF_VOLUME, 0.6 ); +#endif // zero original parameter values origTreatmentParams.bloodFlowRate_mL_min = 0; @@ -176,9 +178,8 @@ * @brief * The signalUserConfirmationOfTreatmentParameters function sets the user * confirmation flag signaling user has confirmed treatment parameters. - * @details - * Inputs : none - * Outputs : treatParamsConfirmed + * @details Inputs: none + * @details Outputs: treatParamsConfirmed * @return TRUE if confirmation accepted, FALSE if not *************************************************************************/ BOOL signalUserConfirmationOfTreatmentParameters( void ) @@ -196,11 +197,32 @@ /*********************************************************************//** * @brief - * The signalUserCancelTreatment function sets the cancelled treatment - * flag signaling the user has cancelled the treatment. + * The signalUserRejectionOfTreatmentParameters function sets the user + * rejection flag signaling user has rejected treatment parameters. * @details * Inputs : none - * Outputs : treatmentCancelled + * Outputs : treatParamsRejected + * @return TRUE if rejection accepted, FALSE if not + *************************************************************************/ +BOOL signalUserRejectionOfTreatmentParameters( void ) +{ + BOOL result = FALSE; + + if ( ( MODE_TPAR == getCurrentOperationMode() ) && ( HD_TREATMENT_PARAMS_MODE_STATE_WAIT_4_UI_2_CONFIRM == currentTreatmentParamsState ) ) + { + treatParamsRejected = TRUE; + result = TRUE; + } + + return result; +} + +/*********************************************************************//** + * @brief + * The signalUserCancelTreatment function sets the cancelled treatment + * flag signaling the user has cancelled the treatment. + * @details Inputs: none + * @details Outputs: treatmentCancelled * @return TRUE if cancel accepted, FALSE if not *************************************************************************/ BOOL signalUserCancelTreatment( void ) @@ -220,9 +242,8 @@ /*********************************************************************//** * @brief * The execFaultMode function executes the Operating Parameters Mode state machine. - * @details - * Inputs : treatParamsState - * Outputs : treatParamsState + * @details Inputs: treatParamsState + * @details Outputs: treatParamsState * @return current state (sub-mode) *************************************************************************/ U32 execTreatParamsMode( void ) @@ -247,7 +268,7 @@ break; } -#ifdef UF_TEST_ENABLED +#ifdef DISABLE_UI_TREATMENT_WORKFLOW requestNewOperationMode( MODE_PRET ); #endif #ifdef RM46_EVAL_BOARD_TARGET @@ -264,9 +285,8 @@ * @brief * The handleWaitForUI2SendState function handles the wait for UI to send * treatment parameters state of treatment parameters mode. - * @details - * Inputs : - * Outputs : + * @details Inputs: + * @details Outputs: * @return current state (sub-mode) *************************************************************************/ static HD_TREATMENT_PARAMS_MODE_STATE_T handleWaitForUI2SendState( void ) @@ -295,9 +315,8 @@ * @brief * The handleWaitForUI2ConfirmState function handles the wait for UI to send * user confirmation state of treatment parameters mode. - * @details - * Inputs : - * Outputs : + * @details Inputs: + * @details Outputs: * @return current state (sub-mode) *************************************************************************/ static HD_TREATMENT_PARAMS_MODE_STATE_T handleWaitForUI2ConfirmState( void ) @@ -331,12 +350,18 @@ treatParamsConfirmed = FALSE; } + else if ( TRUE == treatParamsRejected ) + { + treatParamsRejected = FALSE; + // user rejected last parameter set, so reset them and wait for new set + resetAllTreatmentParameters(); + result = HD_TREATMENT_PARAMS_MODE_STATE_WAIT_4_UI_2_SEND; + } else if ( TRUE == treatmentCancelled ) { + treatmentCancelled = FALSE; // go back to standby mode requestNewOperationMode( MODE_STAN ); - - treatmentCancelled = FALSE; } return result; @@ -346,9 +371,8 @@ * @brief * The validateAndSetTreatmentParameters function validates received * treatment parameters. - * @details - * Inputs : none - * Outputs : stagedParams[], response sent + * @details Inputs: none + * @details Outputs: stagedParams[], response sent * @param params payload record from treatment parameters message received from UI * @return TRUE if received treatment parameters are valid, FALSE if not *************************************************************************/ @@ -384,9 +408,8 @@ * @brief * The checkTreatmentParamsInRange function checks whether received * treatment parameters are in range. - * @details - * Inputs : stagedParams[] - * Outputs : reasons[] + * @details Inputs: stagedParams[] + * @details Outputs: reasons[] * @param reasons Pointer to array of reject reason codes for each parameter * @return TRUE if treatment parameters are in range, FALSE if not *************************************************************************/ @@ -414,9 +437,8 @@ * @brief * The checkTreatmentParamsDependencies function checks dependencies between * received treatment parameters. - * @details - * Inputs : stagedParams[] - * Outputs : reasons[] + * @details Inputs: stagedParams[] + * @details Outputs: reasons[] * @param reasons Pointer to array of reject reason codes for each parameter * @return TRUE if treatment parameter dependencies are ok, FALSE if not *************************************************************************/ @@ -468,9 +490,8 @@ * @brief * The isTreatmentParamInRange function determines whether a given treatment * parameter is in range. - * @details - * Inputs : treatParamsRanges[] - * Outputs : none + * @details Inputs: treatParamsRanges[] + * @details Outputs: none * @param param ID of parameter to check range for * @param value value of parameter to check range for * @return TRUE if given treatment parameter is in range, FALSE if not @@ -516,9 +537,8 @@ * The extractTreatmentParamsFromPayload function extracts the individual * treatment parameters received from the UI into a staging array where * they will be validated and stay until user confirms them. - * @details - * Inputs : none - * Outputs : stagedParams[] + * @details Inputs: none + * @details Outputs: stagedParams[] * @param payload message payload record containing received treatment parameters * @return none *************************************************************************/ @@ -536,26 +556,25 @@ * @details * Inputs : none * Outputs : Response to treatment parameters message constructed and sent. - * @param valid 1 if valid, 0 if not + * @param rejected 1 if rejected, 0 if parameters ok * @param reasons array of reject reason codes for each parameter (0=not rejected) * @return none *************************************************************************/ -static void sendTreatmentParamsResponse( BOOL valid, U32 *reasons ) +static void sendTreatmentParamsResponse( BOOL rejected, U32 *reasons ) { U32 respPayload[NUM_OF_TREATMENT_PARAMS]; memcpy( &respPayload[0], &reasons[0], sizeof(TREATMENT_PARAMS_DATA_PAYLOAD_T) ); - sendTreatmentParametersResponseMsg( valid, (U08*)(&respPayload[0]), ( NUM_OF_TREATMENT_PARAMS - 1 ) * sizeof(U32) ); // UF vol. param not included in reject reasons + sendTreatmentParametersResponseMsg( rejected, (U08*)(&respPayload[0]), ( NUM_OF_TREATMENT_PARAMS - 1 ) * sizeof(U32) ); // UF vol. param not included in reject reasons } /*********************************************************************//** * @brief * The setTreatmentParameterU32 function sets a given unsigned integer * treatment parameter to a given value. - * @details - * Inputs : treatmentParameters[] - * Outputs : treatmentParameters[] + * @details Inputs: treatmentParameters[] + * @details Outputs: treatmentParameters[] * @param param ID of treatment parameter to set unsigned integer value for * @param value unsigned integer value to assign to given treatment parameter * @return TRUE if set was successful, FALSE if not @@ -584,9 +603,8 @@ * @brief * The setTreatmentParameterS32 function sets a given signed integer treatment * parameter to a given value. - * @details - * Inputs : treatmentParameters[] - * Outputs : treatmentParameters[] + * @details Inputs: treatmentParameters[] + * @details Outputs: treatmentParameters[] * @param param ID of treatment parameter to set signed integer value for * @param value signed integer value to assign to given treatment parameter * @return TRUE if set was successful, FALSE if not @@ -615,9 +633,8 @@ * @brief * The setTreatmentParameterF32 sets a given floating point treatment parameter * to a given value. - * @details - * Inputs : treatmentParameters[] - * Outputs : treatmentParameters[] + * @details Inputs: treatmentParameters[] + * @details Outputs: treatmentParameters[] * @param param ID of treatment parameter to set floating point value for * @param value floating point value to assign to given treatment parameter * @return TRUE if set was successful, FALSE if not @@ -646,15 +663,14 @@ * @brief * The getTreatmentParameterU32 function gets the value of a given unsigned * integer treatment parameter. - * @details - * Inputs : treatmentParameters[] - * Outputs : none + * @details Inputs: treatmentParameters[] + * @details Outputs: none * @param param ID of treatment parameter to get unsigned integer value for * @return value of given unsigned integer treatment parameter *************************************************************************/ U32 getTreatmentParameterU32( TREATMENT_PARAM_T param ) { - U32 result = 0; + U32 result = 1; // validate parameter if ( param <= TREATMENT_PARAM_LAST_UINT ) @@ -675,15 +691,14 @@ * @brief * The getTreatmentParameterS32 function gets the value of a given signed * integer treatment parameter. - * @details - * Inputs : treatmentParameters[] - * Outputs : none + * @details Inputs: treatmentParameters[] + * @details Outputs: none * @param param ID of treatment parameter to get signed integer value for * @return value of given signed integer treatment parameter *************************************************************************/ S32 getTreatmentParameterS32( TREATMENT_PARAM_T param ) { - S32 result = 0; + S32 result = 1; // validate parameter if ( ( param >= TREATMENT_PARAM_FIRST_INT ) && ( param <= TREATMENT_PARAM_LAST_INT ) ) @@ -704,15 +719,14 @@ * @brief * The getTreatmentParameterF32 function gets the value of a given floating point * treatment parameter. - * @details - * Inputs : treatmentParameters[] - * Outputs : none + * @details Inputs: treatmentParameters[] + * @details Outputs: none * @param param ID of treatment parameter to get floating point value for * @return value of given floating point treatment parameter *************************************************************************/ F32 getTreatmentParameterF32( TREATMENT_PARAM_T param ) { - F32 result = 0.0; + F32 result = 1.0; // validate parameter if ( ( param >= TREATMENT_PARAM_FIRST_F32 ) && ( param < NUM_OF_TREATMENT_PARAMS ) ) @@ -739,9 +753,8 @@ * @brief * The testSetTreatmentParameterOverride function overrides the value of a * given treatment parameter. - * @details - * Inputs : none - * Outputs : treatment parameter set to given value + * @details Inputs: none + * @details Outputs: treatment parameter set to given value * @param param ID of treatment parameter to set value of * @param value value to set for given treatment parameter * @return TRUE if override successful, FALSE if not