Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -r056bb7c3e42a6c56e10ff75f69aa1d7b9e5c8af8 -r9fcd1ad071bcce7a592833367c103e235e49654f --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 056bb7c3e42a6c56e10ff75f69aa1d7b9e5c8af8) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision 9fcd1ad071bcce7a592833367c103e235e49654f) @@ -17,6 +17,7 @@ #include "gio.h" +#include "Buttons.h" #include "Messaging.h" #include "ModeFault.h" #include "ModeInitPOST.h" @@ -453,6 +454,34 @@ /*********************************************************************//** * @brief + * The sendConfirmationRequest function sends a confirmation request to UI + * @details /b Inputs: requestID, requestType, rejectReason + * @details /b Outputs: none + * @param requestID ID of confirmation request + * @param requestType Type of confirmation request command + * @param rejectReason Reject reason if applicable + * @return none + *************************************************************************/ +BOOL sendConfirmationRequest( GENERIC_CONFIRM_ID_T requestID, GENERIC_CONFIRM_COMMAND_T requestType, U32 rejectReason ) +{ + GENERIC_CONFIRMATION_REQUEST_T request; + + // Populate request structure + request.requestID = (U32)requestID; + request.requestType = (U32)requestType; + request.rejectReason = rejectReason; + // Optional payload defaults + request.genericPayload1 = 0; + request.genericPayload2 = 0; + request.genericPayload3 = 0; + request.genericPayload4 = 0; + + // Use generic message support helper for transmission. + return sendMessage( MSG_ID_TD_UI_CONFIRMATION_REQUEST, COMM_BUFFER_OUT_CAN_TD_2_UI, (U08 *)&request, (U32)sizeof( GENERIC_CONFIRMATION_REQUEST_T ) ); +} + +/*********************************************************************//** + * @brief * The getConfirmationRequestStatus function returns the status of a confirmation request * @details \b Inputs: confirmRequests[] * @details \b Outputs: confirmRequests[] consumed/cleared if completed. @@ -642,7 +671,67 @@ sendEvent( TD_EVENT_OPERATION_STATUS, dat1, dat2 ); } +/*********************************************************************//** + * @brief + * The handleUIVersionResponse function handles a response to request for + * UI version information. + * @details Inputs: none + * @details Outputs: message handled + * @param message a pointer to the message to handle. + * @return none + *************************************************************************/ +BOOL handleUIVersionResponse( MESSAGE_T *message ) +{ + BOOL result = TRUE; + // Get UI version data and have it recorded + if ( sizeof(UI_VERSIONS_T) == message->hdr.payloadLen ) + { + UI_VERSIONS_T uiVersion; + memcpy( &uiVersion, &message->payload[0], sizeof(UI_VERSIONS_T) ); + signalUIVersion( uiVersion ); + } + return result; +} + +/*********************************************************************//** + * @brief + * The handleUIConfirmationResponse function handles a UI response for + * confirmation request. + * @details \b Inputs: none + * @details \b Outputs: message handled + * @param message a pointer to the message to handle + * @return none + *************************************************************************/ +BOOL handleUIConfirmationResponse( MESSAGE_T *message ) +{ + BOOL result; + U08* payloadPtr = message->payload; + + if ( message->hdr.payloadLen == 2 * sizeof(U32) ) + { + U32 request_id; + U32 status; + + memcpy( &request_id, payloadPtr, sizeof(U32) ); + payloadPtr += sizeof(U32); + memcpy( &status, payloadPtr, sizeof(U32) ); + if ( CONFIRMATION_REQUEST_STATUS_REJECTED == status ) + { + userConfirmOffButton( OFF_BUTTON_RSP_USER_REJECTS_POWER_OFF ); + } + else if ( CONFIRMATION_REQUEST_STATUS_ACCEPTED == status ) + { + userConfirmOffButton( OFF_BUTTON_RSP_USER_CONFIRMS_POWER_OFF ); + } + setConfirmationRequestStatus( (GENERIC_CONFIRM_ID_T)request_id, (CONFIRMATION_REQUEST_STATUS_T)status ); + } + + result = sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_TD_2_UI, FALSE ); + return result; +} + + /************************************************************************* * TEST SUPPORT FUNCTIONS *************************************************************************/