mirror of
https://github.com/afska/gba-link-connection.git
synced 2026-09-09 17:37:09 -05:00
Fixing LinkCard tutorial
This commit is contained in:
@@ -47,11 +47,13 @@ int main() {
|
||||
std::string output = "LinkCard_demo (v8.0.0)\n\n";
|
||||
output += "Device: ";
|
||||
|
||||
// (2) Probe the connected device
|
||||
u32 initialVCount = REG_VCOUNT;
|
||||
auto device = linkCard->getConnectedDevice([&initialVCount]() {
|
||||
u32 elapsed = (REG_VCOUNT - initialVCount + 228) % 228;
|
||||
return elapsed > 30;
|
||||
});
|
||||
|
||||
switch (device) {
|
||||
case LinkCard::ConnectedDevice::E_READER_JAP:
|
||||
case LinkCard::ConnectedDevice::E_READER_USA: {
|
||||
@@ -66,7 +68,7 @@ int main() {
|
||||
u32 loaderSize;
|
||||
const u8* loader = (const u8*)gbfs_get_obj(fs, fileName, &loaderSize);
|
||||
|
||||
// (2) Send the DLC loader program
|
||||
// (3) Send the DLC loader program
|
||||
auto result = linkCard->sendLoader(loader, loaderSize, []() {
|
||||
u16 keys = ~REG_KEYS & KEY_ANY;
|
||||
return keys & KEY_B;
|
||||
@@ -89,7 +91,7 @@ int main() {
|
||||
if (Common::didPress(KEY_A, a)) {
|
||||
Common::log("Receiving...\n\nPress B to cancel");
|
||||
|
||||
// (3) Receive scanned cards
|
||||
// (4) Receive scanned cards
|
||||
u8 card[LINK_CARD_SIZE + 1]; // +1 to interpret contents as a string
|
||||
auto result = linkCard->receiveCard(card, []() {
|
||||
u16 keys = ~REG_KEYS & KEY_ANY;
|
||||
|
||||
@@ -9,15 +9,15 @@
|
||||
// LinkCard* linkCard = new LinkCard();
|
||||
// - 2) Probe the connected device:
|
||||
// auto device = getConnectedDevice();
|
||||
// - 2) Send the DLC loader program:
|
||||
// - 3) Send the DLC loader program:
|
||||
// if (device == LinkCard::ConnectedDevice::E_READER_USA)
|
||||
// LinkCard::SendResult result = linkCard->sendLoader(loader, []() {
|
||||
// u16 keys = ~REG_KEYS & KEY_ANY;
|
||||
// return keys & KEY_START;
|
||||
// }));
|
||||
// - 3) Receive scanned cards:
|
||||
// if (device == LinkCard::ConnectedDevice::CARD_SCANNER) {
|
||||
// u8 card[LINK_CARD_CARD_SIZE];
|
||||
// - 4) Receive scanned cards:
|
||||
// if (device == LinkCard::ConnectedDevice::DLC_LOADER) {
|
||||
// u8 card[LINK_CARD_SIZE];
|
||||
// bool received = linkCard->receiveCard(card, []() {
|
||||
// u16 keys = ~REG_KEYS & KEY_ANY;
|
||||
// return keys & KEY_START;
|
||||
@@ -84,6 +84,14 @@ class LinkCard {
|
||||
static constexpr int PRE_TRANSFER_WAIT = 2 + 1;
|
||||
|
||||
public:
|
||||
enum class ConnectedDevice {
|
||||
E_READER_USA,
|
||||
E_READER_JAP,
|
||||
DLC_LOADER,
|
||||
WRONG_CONNECTION,
|
||||
UNKNOWN_DEVICE
|
||||
};
|
||||
|
||||
enum class SendResult {
|
||||
SUCCESS,
|
||||
UNALIGNED,
|
||||
@@ -92,6 +100,7 @@ class LinkCard {
|
||||
WRONG_DEVICE,
|
||||
FAILURE_DURING_TRANSFER
|
||||
};
|
||||
|
||||
enum class ReceiveResult {
|
||||
SUCCESS,
|
||||
CANCELED,
|
||||
@@ -99,13 +108,6 @@ class LinkCard {
|
||||
BAD_CHECKSUM,
|
||||
UNEXPECTED_FAILURE,
|
||||
};
|
||||
enum class ConnectedDevice {
|
||||
E_READER_USA,
|
||||
E_READER_JAP,
|
||||
DLC_LOADER,
|
||||
WRONG_CONNECTION,
|
||||
UNKNOWN_DEVICE
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the connected device.
|
||||
|
||||
@@ -9,6 +9,16 @@ extern "C" {
|
||||
|
||||
typedef void* C_LinkCardHandle;
|
||||
|
||||
#define C_LINK_CARD_SIZE 1998
|
||||
|
||||
typedef enum {
|
||||
C_LINK_CARD_CONNECTED_DEVICE_E_READER_USA,
|
||||
C_LINK_CARD_CONNECTED_DEVICE_E_READER_JAP,
|
||||
C_LINK_CARD_CONNECTED_DEVICE_DLC_LOADER,
|
||||
C_LINK_CARD_CONNECTED_DEVICE_WRONG_CONNECTION,
|
||||
C_LINK_CARD_CONNECTED_DEVICE_UNKNOWN_DEVICE
|
||||
} C_LinkCard_ConnectedDevice;
|
||||
|
||||
typedef enum {
|
||||
C_LINK_CARD_SEND_RESULT_SUCCESS,
|
||||
C_LINK_CARD_SEND_RESULT_UNALIGNED,
|
||||
@@ -26,14 +36,6 @@ typedef enum {
|
||||
C_LINK_CARD_RECEIVE_RESULT_UNEXPECTED_FAILURE
|
||||
} C_LinkCard_ReceiveResult;
|
||||
|
||||
typedef enum {
|
||||
C_LINK_CARD_CONNECTED_DEVICE_E_READER_USA,
|
||||
C_LINK_CARD_CONNECTED_DEVICE_E_READER_JAP,
|
||||
C_LINK_CARD_CONNECTED_DEVICE_DLC_LOADER,
|
||||
C_LINK_CARD_CONNECTED_DEVICE_WRONG_CONNECTION,
|
||||
C_LINK_CARD_CONNECTED_DEVICE_UNKNOWN_DEVICE
|
||||
} C_LinkCard_ConnectedDevice;
|
||||
|
||||
C_LinkCardHandle C_LinkCard_createDefault();
|
||||
void C_LinkCard_destroy(C_LinkCardHandle handle);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user