mirror of
https://github.com/afska/gba-link-connection.git
synced 2026-03-21 17:44:21 -05:00
Improving LinkCard loader error handling
This commit is contained in:
parent
8fe9c5f710
commit
5b20e96321
|
|
@ -42,7 +42,6 @@ const char* MSG_SCAN_CARD = "Scan a card!";
|
|||
const char* MSG_TRANSFERRING = "Transferring...";
|
||||
const char* MSG_CARD_SENT = "Card sent!";
|
||||
const char* MSG_ERROR = "Error!";
|
||||
const char* MSG_PRESS_A_TRY_AGAIN = "Press A to try again";
|
||||
const char* MSG_PRESS_B_CANCEL = "Press B to cancel";
|
||||
#endif
|
||||
|
||||
|
|
@ -111,17 +110,13 @@ int main() {
|
|||
print(MSG_SCAN_CARD);
|
||||
|
||||
// scan card
|
||||
while (true) {
|
||||
if (cancel())
|
||||
goto abort;
|
||||
if (!sendAndExpect(EREADER_READY, GAME_READY, cancel))
|
||||
goto abort;
|
||||
u32 resultCode = ERAPI_ScanDotCode((u32)card);
|
||||
if (resultCode == SCAN_SUCCESS) {
|
||||
break;
|
||||
} else
|
||||
goto error;
|
||||
}
|
||||
if (cancel())
|
||||
goto abort;
|
||||
if (!sendAndExpect(EREADER_READY, GAME_READY, cancel))
|
||||
goto abort;
|
||||
u32 resultCode = ERAPI_ScanDotCode((u32)card);
|
||||
if (resultCode != SCAN_SUCCESS)
|
||||
goto error;
|
||||
|
||||
// "Transferring..."
|
||||
print(MSG_TRANSFERRING);
|
||||
|
|
@ -164,12 +159,9 @@ int main() {
|
|||
// "Error!"
|
||||
ERAPI_ClearRegion(region);
|
||||
ERAPI_DrawText(region, 0, 0, MSG_ERROR);
|
||||
ERAPI_DrawText(region, 0, 16, MSG_PRESS_A_TRY_AGAIN);
|
||||
ERAPI_DrawText(region, 0, 16, MSG_WAITING_GAME);
|
||||
ERAPI_RenderFrame(1);
|
||||
|
||||
while (!tryAgain())
|
||||
ERAPI_RenderFrame(1);
|
||||
|
||||
send(EREADER_CANCEL, cancel);
|
||||
send(EREADER_ANIMATING, cancel);
|
||||
send(EREADER_SIO_END, cancel);
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -107,6 +107,7 @@ class LinkCard {
|
|||
WRONG_DEVICE,
|
||||
BAD_CHECKSUM,
|
||||
UNEXPECTED_FAILURE,
|
||||
SCAN_ERROR
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -276,7 +277,7 @@ class LinkCard {
|
|||
EREADER_READY, cancel))
|
||||
return ReceiveResult::CANCELED;
|
||||
if (transferMultiAndExpectOneOf(EREADER_ANIMATING, EREADER_ANIMATING,
|
||||
EREADER_READY, cancel) == -1)
|
||||
EREADER_READY, cancel) < 0)
|
||||
return ReceiveResult::CANCELED;
|
||||
|
||||
// wait for card
|
||||
|
|
@ -285,6 +286,8 @@ class LinkCard {
|
|||
if ((received = transferMultiAndExpectOneOf(
|
||||
GAME_READY, EREADER_READY, EREADER_SEND_READY, cancel)) == -1)
|
||||
return ReceiveResult::CANCELED;
|
||||
if (received == -2)
|
||||
return ReceiveResult::SCAN_ERROR;
|
||||
if (received == EREADER_SEND_READY)
|
||||
break;
|
||||
}
|
||||
|
|
@ -339,8 +342,10 @@ class LinkCard {
|
|||
u16 received;
|
||||
do {
|
||||
received = transferMulti(value, cancel);
|
||||
if (cancel() || received == EREADER_CANCEL)
|
||||
if (cancel())
|
||||
return -1;
|
||||
if (received == EREADER_CANCEL)
|
||||
return -2;
|
||||
} while (received != expected1 && received != expected2);
|
||||
|
||||
return received;
|
||||
|
|
|
|||
|
|
@ -33,7 +33,8 @@ typedef enum {
|
|||
C_LINK_CARD_RECEIVE_RESULT_CANCELED,
|
||||
C_LINK_CARD_RECEIVE_RESULT_WRONG_DEVICE,
|
||||
C_LINK_CARD_RECEIVE_RESULT_BAD_CHECKSUM,
|
||||
C_LINK_CARD_RECEIVE_RESULT_UNEXPECTED_FAILURE
|
||||
C_LINK_CARD_RECEIVE_RESULT_UNEXPECTED_FAILURE,
|
||||
C_LINK_CARD_RECEIVE_RESULT_SCAN_ERROR
|
||||
} C_LinkCard_ReceiveResult;
|
||||
|
||||
C_LinkCardHandle C_LinkCard_createDefault();
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user