Exemple #1
0
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);
}
Exemple #2
0
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);
}
Exemple #3
0
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);
}