Index: firmware/App/Modes/OperationModes.c =================================================================== diff -u -rfba69244d94307e50fefaa1e88bcbb979584461e -rbdbb0ede1af201d43125d663a4ca5740e39509f6 --- firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision fba69244d94307e50fefaa1e88bcbb979584461e) +++ firmware/App/Modes/OperationModes.c (.../OperationModes.c) (revision bdbb0ede1af201d43125d663a4ca5740e39509f6) @@ -451,7 +451,14 @@ U32 pendingIndex = 0; CONFIRMATION_REQUEST_STATUS_T status = CONFIRMATION_REQUEST_STATUS_PENDING; U32 i; + GENERIC_CONFIRMATION_REQUEST_T genConfRqst; + genConfRqst.rejectReason = 0; + genConfRqst.genericPayload1 = 0.0F; + genConfRqst.genericPayload2 = 0.0F; + genConfRqst.genericPayload3 = 0.0F; + genConfRqst.genericPayload4 = 0.0F; + for ( i = 0; i < MAX_PENDING_CONFIRM_REQUESTS; i++ ) { if ( confirmRequests[ i ].requestID == requestID ) @@ -462,18 +469,24 @@ // Send UI clear if ( CONFIRMATION_REQUEST_STATUS_TIMEOUT == status ) { - sendConfirmationRequest( confirmRequests[ i ].requestID, GENERIC_CONFIRM_CMD_TIMEOUT_CLOSE, 0 ); + genConfRqst.requestID = confirmRequests[ i ].requestID; + genConfRqst.requestType = GENERIC_CONFIRM_CMD_TIMEOUT_CLOSE; + + sendConfirmationRequest( &genConfRqst ); } else { - sendConfirmationRequest( confirmRequests[ i ].requestID, GENERIC_CONFIRM_CMD_ACCEPT_CLOSE, 0 ); + genConfRqst.requestID = confirmRequests[ i ].requestID; + genConfRqst.requestType = GENERIC_CONFIRM_CMD_ACCEPT_CLOSE; + + sendConfirmationRequest( &genConfRqst ); } // Clear the confirmation request, it is done and consumed - confirmRequests[ i ].requestID = GENERIC_CONFIRM_ID_NONE; + confirmRequests[ i ].requestID = GENERIC_CONFIRM_ID_NONE; confirmRequests[ i ].requestType = GENERIC_CONFIRM_CMD_REQUEST_OPEN; - confirmRequests[ i ].timeStamp = 0; - confirmRequests[ i ].status = CONFIRMATION_REQUEST_STATUS_UNUSED; + confirmRequests[ i ].timeStamp = 0; + confirmRequests[ i ].status = CONFIRMATION_REQUEST_STATUS_UNUSED; } } else if ( CONFIRMATION_REQUEST_STATUS_PENDING == confirmRequests[ i ].status ) @@ -496,8 +509,11 @@ if ( ( CONFIRMATION_REQUEST_STATUS_PENDING != status ) && ( TRUE == pending ) ) { + genConfRqst.requestID = confirmRequests[ i ].requestID; + genConfRqst.requestType = confirmRequests[ pendingIndex ].requestType; + // Last confirmation cleared, pending request must be resent to UI - sendConfirmationRequest( confirmRequests[ pendingIndex ].requestID, confirmRequests[ pendingIndex ].requestType, 0 ); + sendConfirmationRequest( &genConfRqst ); } return status; @@ -556,17 +572,30 @@ // If not already pending, add confirmation to list of pending confirmations and send to UI to be displayed if ( confirmAlreadyPending != TRUE ) { + GENERIC_CONFIRMATION_REQUEST_T genConfRqst; + + genConfRqst.rejectReason = rejectReason; + genConfRqst.genericPayload1 = 0.0F; + genConfRqst.genericPayload2 = 0.0F; + genConfRqst.genericPayload3 = 0.0F; + genConfRqst.genericPayload4 = 0.0F; + for ( i = 0; i < MAX_PENDING_CONFIRM_REQUESTS; i++ ) { if ( CONFIRMATION_REQUEST_STATUS_UNUSED == confirmRequests[ i ].status ) { // Save the confirmation request info - confirmRequests[ i ].requestID = requestID; + confirmRequests[ i ].requestID = requestID; confirmRequests[ i ].requestType = requestType; - confirmRequests[ i ].timeStamp = getMSTimerCount(); - confirmRequests[ i ].status = CONFIRMATION_REQUEST_STATUS_PENDING; - newID = requestID; - sendConfirmationRequest( requestID, requestType, rejectReason ); + confirmRequests[ i ].timeStamp = getMSTimerCount(); + confirmRequests[ i ].status = CONFIRMATION_REQUEST_STATUS_PENDING; + newID = requestID; + + // Get ready for the generic confirmation request + genConfRqst.requestID = requestID; + genConfRqst.requestType = requestType; + + sendConfirmationRequest( &genConfRqst ); break; } }