void fsm_sendFailure(FailureType code, const char *text) { if (protectAbortedByInitialize) { fsm_msgInitialize((Initialize *)0); protectAbortedByInitialize = false; return; } RESP_INIT(Failure); resp->has_code = true; resp->code = code; if (text) { resp->has_message = true; strlcpy(resp->message, text, sizeof(resp->message)); } msg_write(MessageType_MessageType_Failure, resp); }
void fsm_sendSuccess(const char *text) { if(reset_msg_stack) { fsm_msgInitialize((Initialize *)0); reset_msg_stack = false; return; } RESP_INIT(Success); if(text) { resp->has_message = true; strlcpy(resp->message, text, sizeof(resp->message)); } msg_write(MessageType_MessageType_Success, resp); }
void fsm_sendFailure(Failure_FailureType code, const char *text) #endif { if (protectAbortedByCancel) { protectAbortedByCancel = false; } if (protectAbortedByInitialize) { fsm_msgInitialize((Initialize *)0); protectAbortedByInitialize = false; return; } RESP_INIT(Failure); resp->has_code = true; resp->code = code; if (!text) { switch (code) { case Failure_FailureType_Failure_UnexpectedMessage: text = _("Unexpected message"); break; case Failure_FailureType_Failure_ButtonExpected: text = _("Button expected"); break; case Failure_FailureType_Failure_DataError: text = _("Data error"); break; case Failure_FailureType_Failure_ActionCancelled: text = _("Action cancelled by user"); break; case Failure_FailureType_Failure_PinExpected: text = _("PIN expected"); break; case Failure_FailureType_Failure_PinCancelled: text = _("PIN cancelled"); break; case Failure_FailureType_Failure_PinInvalid: text = _("PIN invalid"); break; case Failure_FailureType_Failure_InvalidSignature: text = _("Invalid signature"); break; case Failure_FailureType_Failure_ProcessError: text = _("Process error"); break; case Failure_FailureType_Failure_NotEnoughFunds: text = _("Not enough funds"); break; case Failure_FailureType_Failure_NotInitialized: text = _("Device not initialized"); break; case Failure_FailureType_Failure_PinMismatch: text = _("PIN mismatch"); break; case Failure_FailureType_Failure_FirmwareError: text = _("Firmware error"); break; } } #if DEBUG_LINK resp->has_message = true; strlcpy(resp->message, source, sizeof(resp->message)); if (text) { strlcat(resp->message, text, sizeof(resp->message)); } #else if (text) { resp->has_message = true; strlcpy(resp->message, text, sizeof(resp->message)); } #endif msg_write(MessageType_MessageType_Failure, resp); }