Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -rb6b733b8d1f25bc2dbe2a94c620cd80aa3ae06f7 -rbbf4e1a170f66ce07af12908a1d0fe101a934e9e --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision b6b733b8d1f25bc2dbe2a94c620cd80aa3ae06f7) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision bbf4e1a170f66ce07af12908a1d0fe101a934e9e) @@ -39,6 +39,8 @@ // ********** private data ********** static BOOL treatStartReqReceived = FALSE; ///< Flag indicates user requests treatment begin. +static BOOL confirmInstallRequested = FALSE; ///< Flag indicates user confirms disposable installation. + static BOOL alarmActionStopReceived = FALSE; ///< Flag indicates an alarm w/ stop property was triggered. static BOOL alarmActionResumeReceived = FALSE; ///< Flag indicates alarm action resume received. @@ -156,6 +158,22 @@ /*********************************************************************//** * @brief + * The signalUserConfirmInstallation function handles user confirmation of + * disposable installation. + * @details Inputs: none + * @details Outputs: treatStartReqReceived, send response to treatment start + * @return TRUE if signal accepted, FALSE if not + *************************************************************************/ +void signalUserConfirmInstallation( void ) +{ + if ( ( MODE_PRET == getCurrentOperationMode() ) && ( HD_PRE_TREATMENT_CART_INSTALL_STATE == currentPreTreatmentState ) ) + { + confirmInstallRequested = TRUE; + } +} + +/*********************************************************************//** + * @brief * The signalUserBeginningTreatment function handles user start of a * treatment. * @details Inputs: none @@ -251,6 +269,8 @@ static void resetSignalFlags( void ) { treatStartReqReceived = FALSE; + confirmInstallRequested = FALSE; + alarmActionStopReceived = FALSE; alarmActionResumeReceived = FALSE; } @@ -324,9 +344,12 @@ { HD_PRE_TREATMENT_MODE_STATE_T state = HD_PRE_TREATMENT_CART_INSTALL_STATE; - // TODO: handle install verification and transition - transitionToDrySelfTests(); - state = HD_PRE_TREATMENT_SELF_TEST_DRY_STATE; + if ( TRUE == confirmInstallRequested ) + { + confirmInstallRequested = FALSE; + state = HD_PRE_TREATMENT_SELF_TEST_DRY_STATE; + transitionToDrySelfTests(); + } return state; } Index: firmware/App/Modes/ModePreTreat.h =================================================================== diff -u -rb6b733b8d1f25bc2dbe2a94c620cd80aa3ae06f7 -rbbf4e1a170f66ce07af12908a1d0fe101a934e9e --- firmware/App/Modes/ModePreTreat.h (.../ModePreTreat.h) (revision b6b733b8d1f25bc2dbe2a94c620cd80aa3ae06f7) +++ firmware/App/Modes/ModePreTreat.h (.../ModePreTreat.h) (revision bbf4e1a170f66ce07af12908a1d0fe101a934e9e) @@ -48,6 +48,8 @@ void initPreTreatmentMode( void ); // Initialize this module void transitionToPreTreatmentMode( void ); // Prepares for transition to pre-treatment mode U32 execPreTreatmentMode( void ); // Execute the pre-treatment mode state machine (call from OperationModes) + +void signalUserConfirmInstallation( void ); // Signal that user confirms disposable has been installed BOOL signalUserBeginningTreatment( void ); // Signal that user requests treatment begin void signalAlarmActionToPreTreatmentMode( ALARM_ACTION_T action ); // Execute alarm action as appropriate for pre-treatment mode Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -r3d079c1d9ca782edcdf2bd962929a1adcfef9ade -rbbf4e1a170f66ce07af12908a1d0fe101a934e9e --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 3d079c1d9ca782edcdf2bd962929a1adcfef9ade) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision bbf4e1a170f66ce07af12908a1d0fe101a934e9e) @@ -61,7 +61,8 @@ static U32 serializeMessage( MESSAGE_T msg, COMM_BUFFER_T buffer, BOOL ackReq ); static BOOL sendTestAckResponseMsg( MSG_ID_T msgID, BOOL ack ); -static BOOL sendAckResponseMsg( MSG_ID_T msgID, COMM_BUFFER_T buffer, BOOL ack ); +static BOOL sendAckResponseMsg( MSG_ID_T msgID, COMM_BUFFER_T buffer, BOOL ack ); +static BOOL sendUIResponseMsg( MSG_ID_T msgID, BOOL accepted, U32 reason ); /*********************************************************************//** * @brief @@ -204,10 +205,44 @@ return result; } + +/*********************************************************************//** + * @brief + * The sendUIResponseMsg function constructs an UI response message for a + * handled UI message and queues it for transmit on the appropriate CAN channel. + * @details Inputs: none + * @details Outputs: response message constructed and queued for transmit. + * @param msgID ID of handled message that we are responding to + * @param accepted T/F - request accepted? + * @param reason reason code if rejected + * @return TRUE if response message successfully queued for transmit, FALSE if not + *************************************************************************/ +static BOOL sendUIResponseMsg( MSG_ID_T msgID, BOOL accepted, U32 reason ) +{ + BOOL result; + MESSAGE_T msg; + U08 *payloadPtr = msg.payload; + + // Create a message record + blankMessage( &msg ); + msg.hdr.msgID = msgID; + msg.hdr.payloadLen = sizeof( BOOL ) + sizeof( U32 ); + + memcpy( payloadPtr, &accepted, sizeof( BOOL ) ); + payloadPtr += sizeof( BOOL ); + memcpy( payloadPtr, &reason, sizeof( U32 ) ); + + // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer + result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_2_UI, ACK_REQUIRED ); + + return result; +} + // *********************************************************************** // ***************** Message Sending Helper Functions ******************** // *********************************************************************** + /*********************************************************************//** * @brief @@ -506,28 +541,12 @@ * @details Inputs: none * @details Outputs: Sample water command response msg constructed and queued. * @param accepted T/F - was sample water request accepted? - * @param rejReason reason why request was rejected (or zero if accepted) + * @param reason reason why request was rejected (or zero if accepted) * @return TRUE if msg successfully queued for transmit, FALSE if not *************************************************************************/ -BOOL sendSampleWaterCmdResponse( BOOL accepted, U32 rejReason ) +BOOL sendSampleWaterCmdResponse( BOOL accepted, U32 reason ) { - BOOL result; - MESSAGE_T msg; - U08 *payloadPtr = msg.payload; - - // Create a message record - blankMessage( &msg ); - msg.hdr.msgID = MSG_ID_HD_SAMPLE_WATER_CMD_RESPONSE; - msg.hdr.payloadLen = sizeof( BOOL ) + sizeof( U32 ); - - memcpy( payloadPtr, &accepted, sizeof( BOOL ) ); - payloadPtr += sizeof( BOOL ); - memcpy( payloadPtr, &rejReason, sizeof( U32 ) ); - - // Serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer - result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_HD_2_UI, ACK_REQUIRED ); - - return result; + return sendUIResponseMsg( MSG_ID_HD_SAMPLE_WATER_CMD_RESPONSE, accepted, reason ); } @@ -554,6 +573,20 @@ sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); } } + +/*********************************************************************//** + * @brief + * The handleInstallationConfirm function handles user confirms disposable + * installation msg from the UI. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle + * @return none. + *************************************************************************/ +void handleInstallationConfirm( MESSAGE_T *message ) +{ + signalUserConfirmInstallation(); +} /*********************************************************************//** * @brief Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -r3d079c1d9ca782edcdf2bd962929a1adcfef9ade -rbbf4e1a170f66ce07af12908a1d0fe101a934e9e --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision 3d079c1d9ca782edcdf2bd962929a1adcfef9ade) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision bbf4e1a170f66ce07af12908a1d0fe101a934e9e) @@ -162,11 +162,14 @@ void handleSampleWaterCmd( MESSAGE_T *message ); // MSG_ID_HD_SAMPLE_WATER_CMD_RESPONSE -BOOL sendSampleWaterCmdResponse( BOOL accepted, U32 rejReason ); +BOOL sendSampleWaterCmdResponse( BOOL accepted, U32 reason ); // MSG_ID_UI_SAMPLE_WATER_RESULT void handleSampleWaterResult( MESSAGE_T *message ); +// MSG_ID_UI_INSTALLATION_CONFIRM +void handleInstallationConfirm( MESSAGE_T *message ); + // *********** public DG command functions ********** // MSG_ID_SET_DG_DIALYSATE_TEMP_TARGETS