mirror of
https://github.com/afska/gba-link-connection.git
synced 2026-04-15 13:45:57 -05:00
Copying outgoingState on serial IRQ
This commit is contained in:
parent
510871854b
commit
b1196edfa6
|
|
@ -27,6 +27,7 @@ void hang();
|
|||
LinkWireless::Error lastError;
|
||||
LinkWireless* linkWireless = NULL;
|
||||
bool forwarding, retransmission;
|
||||
u32 maxPlayers;
|
||||
|
||||
void init() {
|
||||
REG_DISPCNT = DCNT_MODE0 | DCNT_BG0;
|
||||
|
|
@ -47,7 +48,7 @@ start:
|
|||
u16 initialKeys = ~REG_KEYS & KEY_ANY;
|
||||
forwarding = !(initialKeys & KEY_LEFT);
|
||||
retransmission = !(initialKeys & KEY_UP);
|
||||
u32 maxPlayers = (initialKeys & KEY_B) ? 2 : LINK_WIRELESS_MAX_PLAYERS;
|
||||
maxPlayers = (initialKeys & KEY_B) ? 2 : LINK_WIRELESS_MAX_PLAYERS;
|
||||
|
||||
// (1) Create a LinkWireless instance
|
||||
linkWireless = new LinkWireless(forwarding, retransmission, maxPlayers);
|
||||
|
|
@ -78,8 +79,9 @@ start:
|
|||
log(std::string("") +
|
||||
"L = Serve\nR = Connect\n\n (DOWN = ok)\n "
|
||||
"(SELECT = cancel)\n (START = activate)\n\n-> forwarding: " +
|
||||
(forwarding ? "ON" : "OFF") + "\n" +
|
||||
"-> retransmission: " + (retransmission ? "ON" : "OFF"));
|
||||
(forwarding ? "ON" : "OFF") +
|
||||
"\n-> retransmission: " + (retransmission ? "ON" : "OFF") +
|
||||
"\n-> max players: " + std::to_string(maxPlayers));
|
||||
|
||||
// SELECT = back
|
||||
if (keys & KEY_SELECT) {
|
||||
|
|
|
|||
|
|
@ -480,6 +480,7 @@ class LinkWireless {
|
|||
return;
|
||||
|
||||
linkSPI->_onSerial(true);
|
||||
copyOutgoingState();
|
||||
|
||||
bool hasNewData = linkSPI->getAsyncState() == LinkSPI::AsyncState::READY;
|
||||
if (hasNewData)
|
||||
|
|
@ -1107,6 +1108,11 @@ class LinkWireless {
|
|||
}
|
||||
|
||||
void copyState() { // (irq only)
|
||||
copyOutgoingState();
|
||||
copyIncomingState();
|
||||
}
|
||||
|
||||
void copyOutgoingState() { // (irq only)
|
||||
if (!isAddingMessage) {
|
||||
while (!sessionState.tmpMessagesToSend.isEmpty()) {
|
||||
if (isSessionActive() && !canSend())
|
||||
|
|
@ -1125,7 +1131,9 @@ class LinkWireless {
|
|||
isPendingClearActive = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void copyIncomingState() { // (irq only)
|
||||
if (!isReadingMessages) {
|
||||
while (!sessionState.tmpMessagesToReceive.isEmpty()) {
|
||||
auto message = sessionState.tmpMessagesToReceive.pop();
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user