mirror of
https://github.com/afska/gba-link-connection.git
synced 2026-04-25 16:23:41 -05:00
Sorting LinkRawWireless methods
This commit is contained in:
parent
f166dcb07d
commit
0516d71472
|
|
@ -293,17 +293,17 @@ https://github.com/afska/gba-link-connection/assets/1631752/9a648bff-b14f-4a85-9
|
|||
|
||||
- There's one method for every supported Wireless Adapter command:
|
||||
- `setup` = `0x17`
|
||||
- `getSystemStatus` = `0x13`
|
||||
- `broadcast` = `0x16`
|
||||
- `startHost` = `0x19`
|
||||
- `systemStatus` = `0x13`
|
||||
- `slotStatus` = `0x14`
|
||||
- `getSlotStatus` = `0x14`
|
||||
- `acceptConnections` = `0x1a`
|
||||
- `endHost` = `0x1b`
|
||||
- `broadcastReadStart` = `0x1c`
|
||||
- `broadcastReadPoll` = `0x1d`
|
||||
- `broadcastReadEnd` = `0x1e`
|
||||
- `connect` = `0x1f`
|
||||
- `isFinishedConnect` = `0x20`
|
||||
- `keepConnecting` = `0x20`
|
||||
- `finishConnection` = `0x21`
|
||||
- `sendData` = `0x24`
|
||||
- `sendDataAndWait` = `0x25`
|
||||
|
|
|
|||
|
|
@ -7,17 +7,17 @@
|
|||
// Usage:
|
||||
// - There's one method for every supported Wireless Adapter command:
|
||||
// - `setup` = `0x17`
|
||||
// - `getSystemStatus` = `0x13`
|
||||
// - `broadcast` = `0x16`
|
||||
// - `startHost` = `0x19`
|
||||
// - `systemStatus` = `0x13`
|
||||
// - `slotStatus` = `0x14`
|
||||
// - `getSlotStatus` = `0x14`
|
||||
// - `acceptConnections` = `0x1a`
|
||||
// - `endHost` = `0x1b`
|
||||
// - `broadcastReadStart` = `0x1c`
|
||||
// - `broadcastReadPoll` = `0x1d`
|
||||
// - `broadcastReadEnd` = `0x1e`
|
||||
// - `connect` = `0x1f`
|
||||
// - `isFinishedConnect` = `0x20`
|
||||
// - `keepConnecting` = `0x20`
|
||||
// - `finishConnection` = `0x21`
|
||||
// - `sendData` = `0x24`
|
||||
// - `sendDataAndWait` = `0x25`
|
||||
|
|
@ -297,6 +297,62 @@ class LinkRawWireless {
|
|||
return sendCommand(COMMAND_SETUP, params, 1).success;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Calls the SystemStatus (`0x13`) command.
|
||||
* @param response A structure that will be filled with the response data.
|
||||
*/
|
||||
bool getSystemStatus(SystemStatusResponse& response) {
|
||||
auto result = sendCommand(COMMAND_SYSTEM_STATUS);
|
||||
|
||||
if (!result.success || result.dataSize != 1) {
|
||||
_resetState();
|
||||
return false;
|
||||
}
|
||||
|
||||
u32 status = result.data[0];
|
||||
|
||||
response.deviceId = Link::lsB32(status);
|
||||
|
||||
u8 slot = Link::lsB16(Link::msB32(status)) & 0b1111;
|
||||
response.currentPlayerId = slot == 0b0001 ? 1
|
||||
: slot == 0b0010 ? 2
|
||||
: slot == 0b0100 ? 3
|
||||
: slot == 0b1000 ? 4
|
||||
: 0;
|
||||
|
||||
u8 adapterState = Link::msB16(Link::msB32(status));
|
||||
response.isServerClosed = false;
|
||||
switch (adapterState) {
|
||||
case 1: {
|
||||
response.adapterState = State::SERVING;
|
||||
response.isServerClosed = true;
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
response.adapterState = State::SERVING;
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
response.adapterState = State::SEARCHING;
|
||||
break;
|
||||
}
|
||||
case 4: {
|
||||
response.adapterState = State::CONNECTING;
|
||||
break;
|
||||
}
|
||||
case 5: {
|
||||
response.adapterState = State::CONNECTED;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
response.adapterState = State::AUTHENTICATED;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Calls the Broadcast (`0x16`) command.
|
||||
* @param gameName Game name. Maximum `14` characters + null terminator.
|
||||
|
|
@ -368,62 +424,6 @@ class LinkRawWireless {
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Calls the SystemStatus (`0x13`) command.
|
||||
* @param response A structure that will be filled with the response data.
|
||||
*/
|
||||
bool getSystemStatus(SystemStatusResponse& response) {
|
||||
auto result = sendCommand(COMMAND_SYSTEM_STATUS);
|
||||
|
||||
if (!result.success || result.dataSize != 1) {
|
||||
_resetState();
|
||||
return false;
|
||||
}
|
||||
|
||||
u32 status = result.data[0];
|
||||
|
||||
response.deviceId = Link::lsB32(status);
|
||||
|
||||
u8 slot = Link::lsB16(Link::msB32(status)) & 0b1111;
|
||||
response.currentPlayerId = slot == 0b0001 ? 1
|
||||
: slot == 0b0010 ? 2
|
||||
: slot == 0b0100 ? 3
|
||||
: slot == 0b1000 ? 4
|
||||
: 0;
|
||||
|
||||
u8 adapterState = Link::msB16(Link::msB32(status));
|
||||
response.isServerClosed = false;
|
||||
switch (adapterState) {
|
||||
case 1: {
|
||||
response.adapterState = State::SERVING;
|
||||
response.isServerClosed = true;
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
response.adapterState = State::SERVING;
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
response.adapterState = State::SEARCHING;
|
||||
break;
|
||||
}
|
||||
case 4: {
|
||||
response.adapterState = State::CONNECTING;
|
||||
break;
|
||||
}
|
||||
case 5: {
|
||||
response.adapterState = State::CONNECTED;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
response.adapterState = State::AUTHENTICATED;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Calls the SlotStatus (`0x14`) command.
|
||||
* @param response A structure that will be filled with the response data.
|
||||
|
|
|
|||
|
|
@ -43,18 +43,6 @@ bool C_LinkRawWireless_setup(C_LinkRawWirelessHandle handle,
|
|||
maxPlayers, maxTransmissions, waitTimeout, magic);
|
||||
}
|
||||
|
||||
bool C_LinkRawWireless_broadcast(C_LinkRawWirelessHandle handle,
|
||||
const char* gameName,
|
||||
const char* userName,
|
||||
u16 gameId) {
|
||||
return static_cast<LinkRawWireless*>(handle)->broadcast(gameName, userName,
|
||||
gameId);
|
||||
}
|
||||
|
||||
bool C_LinkRawWireless_startHost(C_LinkRawWirelessHandle handle) {
|
||||
return static_cast<LinkRawWireless*>(handle)->startHost();
|
||||
}
|
||||
|
||||
bool C_LinkRawWireless_getSystemStatus(
|
||||
C_LinkRawWirelessHandle handle,
|
||||
C_LinkRawWireless_SystemStatusResponse* response) {
|
||||
|
|
@ -70,6 +58,18 @@ bool C_LinkRawWireless_getSystemStatus(
|
|||
return success;
|
||||
}
|
||||
|
||||
bool C_LinkRawWireless_broadcast(C_LinkRawWirelessHandle handle,
|
||||
const char* gameName,
|
||||
const char* userName,
|
||||
u16 gameId) {
|
||||
return static_cast<LinkRawWireless*>(handle)->broadcast(gameName, userName,
|
||||
gameId);
|
||||
}
|
||||
|
||||
bool C_LinkRawWireless_startHost(C_LinkRawWirelessHandle handle) {
|
||||
return static_cast<LinkRawWireless*>(handle)->startHost();
|
||||
}
|
||||
|
||||
bool C_LinkRawWireless_getSlotStatus(
|
||||
C_LinkRawWirelessHandle handle,
|
||||
C_LinkRawWireless_SlotStatusResponse* response) {
|
||||
|
|
|
|||
|
|
@ -111,14 +111,14 @@ bool C_LinkRawWireless_setup(C_LinkRawWirelessHandle handle,
|
|||
u8 maxTransmissions,
|
||||
u8 waitTimeout,
|
||||
u32 magic);
|
||||
bool C_LinkRawWireless_getSystemStatus(
|
||||
C_LinkRawWirelessHandle handle,
|
||||
C_LinkRawWireless_SystemStatusResponse* response);
|
||||
bool C_LinkRawWireless_broadcast(C_LinkRawWirelessHandle handle,
|
||||
const char* gameName,
|
||||
const char* userName,
|
||||
u16 gameId);
|
||||
bool C_LinkRawWireless_startHost(C_LinkRawWirelessHandle handle);
|
||||
bool C_LinkRawWireless_getSystemStatus(
|
||||
C_LinkRawWirelessHandle handle,
|
||||
C_LinkRawWireless_SystemStatusResponse* response);
|
||||
bool C_LinkRawWireless_getSlotStatus(
|
||||
C_LinkRawWirelessHandle handle,
|
||||
C_LinkRawWireless_SlotStatusResponse* response);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user